최초의 마이크로 프로세서는 어떻게 프로그래밍 되었습니까?


44

운영 체제를 작성하는 경우 무엇을 작성하고 있습니까? 나는 1980 년부터 마이크로 프로세서 기초 책을 읽을 때 이것을 묻습니다.이 질문은 내 머리에 터졌습니다.

최초의 마이크로 프로세서 칩은 어떻게 프로그래밍 되었습니까?

대답은 분명하지만 그게 나를 괴롭 힙니다.


6
내 작업을 연결하도록 허용 된 경우 "Linux 커널 자체 컴파일 방법"에 대한 답변을 참조하십시오. 스택 오버플로 . 대답은 일반적인 원칙을 이해하기 전까지는 명확하지 않습니다. 그 시점에서 "물론 ..."
dmckee

@ dmckee 그러나 여전히 스위치가있는 컴퓨터에 누가 무엇을 해야하는지 어떻게 알았습니까? 좀 더 자세한 내용을 원합니다.
Dean

4
문제는 첫 번째 칩 의 부팅 순서설계하는 것입니다 . 글쎄, 그건에 속하는 질문 확실히 사이트는하지만, 다음이 알려진 상태에서 시작에 도착하면 해당 유용한 일을 할 것입니다 입력 공급 .... 구성 요소에서 구축 된 디지털 로직을 설계처럼 진행된다. 나는 그에 흔들리는이기 때문에, 상세한 답을 제공하기 위해 다른에 떠날거야,하지만 당신은 첫 번째 컴퓨터가 바로, 진공 튜브에 구현 된 것을 알고? 그런 다음 첫 번째 마이크로 칩 이전에 개별 트랜지스터가 생성되었습니다. 엔지니어들은 이미 무엇을하고 있는지 알고있었습니다.
dmckee

1
물론 마이크로 프로세서가 아닌 경우.
user253751

답변:


56

나는 당신의 질문을 문자 그대로 받아들이고 일반적으로 컴퓨터가 아닌 주로 마이크로 프로세서에 대해 논의 할 것입니다.

모든 컴퓨터에는 일종의 기계 코드가 있습니다. 명령어는 opcode와 하나 이상의 피연산자로 구성됩니다. 예를 들어, Intel 4004 (최초의 마이크로 프로세서)에 대한 ADD 명령어 는 1000RRRR로 인코딩되었습니다. 여기서 1000은 ADD의 opcode이고 RRRR은 레지스터 번호를 나타냅니다.

최초의 컴퓨터 프로그램은 기계 언어로 프로그램을 만들기 위해 1과 0을 직접 인코딩하여 직접 작성했습니다. 그런 다음 칩에 프로그래밍됩니다. 첫 번째 마이크로 프로세서는 ROM (읽기 전용 메모리)을 사용했습니다. 이것은 나중에 EPROM (Erasable Programmable ROM, UV 빛으로 지워짐)으로 대체되었습니다 . 이제 프로그램은 일반적으로 EEPROM ( 온칩에서 지울 수있는 "Electrically ...- EPROM" ) 또는 플래시 메모리로 프로그래밍됩니다.

대부분의 마이크로 프로세서는 이제 RAM에서 프로그램을 실행할 수 있지만 (마이크로 컨트롤러 이외의 모든 표준) 프로그램을 먼저 RAM에로드하는 방법이 있어야합니다. Joby Taffey가 그의 답변에서 지적했듯이 Altair 8080의 토글 스위치로 수행되었으며 Intel 8080 (4004 및 8008에 따름)에 의해 구동됩니다. PC 에는 컴퓨터를 시작하고 OS를 RAM에로드하는 데 사용되는 BIOS 라는 ROM 이 있습니다.

기계 언어는 지루해지기 때문에 니모닉 어셈블러 언어를 사용하여 명령 당 한 줄의 어셈블리 코드를 기계어 코드로 변환하는 어셈블러 프로그램이 개발되었습니다. 따라서 10000001 대신 ADD R1을 작성합니다.

그러나 첫 번째 어셈블러는 기계 코드로 작성해야했습니다. 그런 다음 자체 어셈블러 코드로 다시 작성할 수 있으며 기계 언어 버전을 사용하여 처음으로 어셈블했습니다. 그 후 프로그램은 스스로 조립할 수 있습니다. 이를 부트 스트랩 이라고 하며 컴파일러에서도 수행됩니다. 일반적으로 먼저 어셈블러 (또는 다른 고급 언어)로 작성된 다음 고유 언어로 다시 작성되고 컴파일러가 자체 컴파일 할 수있을 때까지 원래 컴파일러로 컴파일됩니다.

첫 번째 마이크로 프로세서는 메인 프레임과 미니 컴퓨터가 오래전부터 개발되었고 4004가 어쨌든 어셈블러를 실행하는 데 적합하지 않았기 때문에 인텔은 아마도 대형 컴퓨터 중 하나에서 실행되는 크로스 어셈블러를 작성하여 어셈블리 코드를 번역했습니다. ROM에 프로그래밍 할 수있는 이진 이미지로 4004. 다시 한 번, 이것은 컴파일러를 새로운 플랫폼 ( 교차 컴파일 링 ) 으로 이식하는 데 사용되는 일반적인 기술 입니다.



1
그리고 다른 컴퓨터 (뇌 외에)없이 마이크로 컨트롤러를 실제로 프로그래밍하려면 프로그램을 직접 공급하는 회로를 구축하면됩니다. jtag를 통해 프로그래밍 된 경우 스위치를 전환하여 장치를 프로그래밍하는 데 필요한 jtag 명령을 모방 할 수 있습니다. 외부 램을 사용했다면 명령의 비트를 나타 내기 위해 많은 디멀티플렉서와 ​​높거나 낮게 연결된 거대한 저항 배열을 사용할 수 있습니다 (하드웨어가 느릴 수 있으므로 클럭 속도가 느릴 수 있습니다).
nategoose

3
@tyblu : 저는 특정 퓨즈 -ROM이 EPROM보다 우선합니다. ROM의 가장 간단한 형태는 본질적으로 선택적으로 채워진 다이오드 어레이입니다 (초창기에는 문자 적으로 하나의 비트의 극성을 나타 내기 위해 그리드에 납땜 될 것입니다; 누락 된 다이오드는 다른 극성을 나타냄). 퓨즈 -PROM은 칩에 다이오드 어레이를 배치하지만 교차점에서 다이오드보다 훨씬 더 강인 행 트랜지스터를 가지고 있습니다. 어드레스 와이어를 설정하고 제거하고자하는 다이오드에 연결된 데이터 와이어를 강하게 쳐서 다이오드를 선택적으로 제거 할 수 있습니다.
supercat

@tyblu : 퓨즈 -PROM은 전기가 아닌 패키지의 EPROM 칩인 최신 OTPROM과 전기적으로는 다릅니다. EPROM / OTP 장치는 특정 트랜지스터의 게이트를 전기적으로 충전함으로써 (충전을 무기한으로 유지하기에 충분한 커패시턴스 및 누설이 거의 없음) 프로그래밍됩니다. 반대로 퓨즈 -PROM 칩은 원하지 않는 다이오드에 대한 연결을 물리적으로 파괴하여 프로그래밍됩니다.
supercat

1
개별 트랜지스터 시절
부터이

23

원래 프로그램은 종이에 기록 된 다음 컴퓨터가 사용할 수있는 모든 입력 방법으로 바꿨습니다. 이것은 첫 번째 컴퓨터의 노브, 스위치 및 점퍼 와이어에서 펀치 카드, 키패드 / ​​보드로 이어졌습니다.

아래 그림은 오늘날의 실제 프로그래머가 사용 하는 것을 보여줍니다 .


10
Dammit, emacs ..
tyblu

6
프로그래머를 프로그래밍합니다. (그리고 프로그래머는 프로그래머를 프로그래밍하는 프로그래머를 프로그램합니다.)
Mateen Ulhaq

4
나는 내 자신의 프로그래머를 만든다.
W5VO

16

마이크로가 처음 나왔을 때 주변에 있었고 메인 프레임과 미니에 크로스 어셈블러와 컴파일러를 썼고 8 비트 하드웨어로 부트 스트랩했습니다. 유용하게


14

읽기 전용 메모리의 초기 형태 중 하나는 주소가 행을 선택하고 (낮은 값으로) 열이 데이터를 나타내는 그리드입니다. 각 열에는 풀업이 있고 각 교차점에는 "0"을 나타 내기 위해 다이오드가 납땜되어 있거나 "1"을 나타 내기위한 다이오드가 없을 것입니다. 필요한 다이오드 수]. 임의의 원하는 비트 패턴은 적절한 다이오드에 납땜함으로써 "프로그래밍"될 수있다.

이 설계는 퓨즈 -PROM 형태로 집적 회로 세계에 도입되었습니다. 본질적으로 퓨즈 PROM은 모든 다이오드가 채워지고 모든 다이오드가 직렬로 약한 퓨즈를 가졌다는 점을 제외하고는 칩에 내장 된 위와 같은 회로였습니다. 배송 된 PROM은 모든 위치에서 "0"을 읽습니다. 그러나, 적절한 어드레스를 선택하고 적절한 데이터 라인을 "하드"하이로 구동하여 다이오드를 선택적으로 제거 할 수있다 [참고 : 각 비트는 다이오드보다는 자체 트랜지스터를 가지고 있었지만 원리는 동일하다고 생각한다].

퓨즈 프로그래밍 된 PROM은 내부 커패시터에 전하를 주입하여 비트를 저장하는 반도체 메모리에 의해 성공했습니다. 이러한 메모리는 퓨즈 -PROM보다 더 컴팩트 할뿐만 아니라 UV- 투명 패키지로 제공되는 경우 지워지고 재사용 될 수 있습니다. 소위 "일회성 프로그래밍 가능"메모리조차도 거의 항상이 같은 디자인을 사용하지만 UV 불투명 패키지에 들어 있습니다.

큰 다이오드 매트릭스를 가리키는 두 남자 1950 MIT Whirlwind Computer 의 다이오드 매트릭스 제어 저장소

초소형 SMD 트랜지스터가있는 트랜지스터 매트릭스 2005 MT15 CPU 의 트랜지스터 매트릭스 제어 저장소


내가 당신의 게시물에 약간의 조정을 신경 쓰지 않기를 바랍니다.
davidcary

7

누군가 OP의 실제 질문을 해결했는지 확실 하지 않습니다. "컴퓨터는 어떻게 시작하는 방법을 알고 있습니까?" 그래서 금이 갈 게요.

유추로 시작하십시오. "트랜지스터는 시작하는 방법을 어떻게 알 수 있습니까?" 물론 그것은 물리에 따라 작동하지 않으며 엔지니어는 회로를 알려진 상태에서 시작하도록 회로를 만듭니다.

컴퓨터는 회로 (물론 매우 복잡함)이기 때문에 시작하는 방법을 알고 있으며 특정 상태에서 시작하도록 만들어졌습니다. 최신 컴퓨터에서이 상태는 메인 버스가 주소 공간의 일부를 낮은 메모리 (ROM이 BIOS로 레코딩 된)로 마더 보드의 ROM에 사용자에게 다시 매핑하는 것일 수 있습니다. 1 세대 시스템에서 초기 상태는 CPU가 중지되고 프로그램 카운터가 0이며 메모리 토글 서브 시스템이 활성화되었을 수 있습니다.


6

운영 체제는 프로세서에서 직접 실행되는 컴퓨터 프로그램입니다. 기계 명령어로 컴파일하거나 조립할 수있는 모든 언어로 작성 될 수 있습니다. 어셈블리와 C가 일반적으로 선택됩니다.

코드는 상점에서 한 번에 단일 명령 (ROM 또는 RAM)으로 프로세서에로드됩니다.

Z3는 상기 제 1 프로그램 가능 프로세서는 전자 계전기의 내장 및 천공 필름의 명령어를 판독 하였다.

최초의 개인용 컴퓨터 인 Altair 8800은 토글 스위치로 프로그래밍되었습니다.

프로세서가 디지털 로직으로 구성되는 방법을 알아 보려면 https://electronics.stackexchange.com/questions/5516/a-fun-book-to-learn-computer-architecture-for-not-exactly-beginners를 참조 하십시오.

기록은 http://en.wikipedia.org/wiki/History_of_computing_hardware를 참조하십시오 .


5

오래된 컴퓨터에 대한 정보는 다음과 같습니다.

내가 아는 한, 옛날에는 프로그램을 위해 사용되는 큰 컴퓨터 전면 패널 이있었습니다. 기본적으로 해당 컴퓨터의 각 메모리 셀은 스위치에 연결되었습니다. 메모리에 전원을 공급 한 다음 스위치를 사용하여 각 셀에 데이터를 설정합니다. 이런 식으로 프로그램을 컴퓨터 메모리에 비트 단위로 입력합니다. 그런 다음 프로그램의 시작점을 설정하고 실행을 시작합니다.

기술이 발전함에 따라 소위 부트 로더 프로그램이 개발되었습니다. 그것들은 요점은 컴퓨터 메모리에서 다른 프로그램을 시작하는 짧은 프로그램입니다. 비트 단위로 프로그램을 입력 할 때 (그리고 8 진수 및 16 진수를 사용하여 1 비트 이상으로) 문제는 매우 느리고 프로그램을로드하는 동안 운영자가 실수 할 가능성이 크다는 것입니다. 따라서 짧은 프로그램은 컴퓨터 메모리에 저장된 더 큰 프로그램을로드하는 데 사용됩니다. 시간이 지남에 따라 직접 입력해야하는 코드 부분이 줄어들었고 현대 컴퓨터에서는 종종 부트 로더가 ROM 또는 플래시 메모리로 작성되었습니다.


4
이전 S-100 시스템과 같은 '전면 패널'시스템에서 스위치를 사용하면 시스템 버스를 제어 할 수 있습니다. 하나의 스위치로 프로세서를 일시 중단 할 수 있습니다. 프로세서가 일시 중단 된 동안 수동으로 주소 버스에 주소를 넣고 (스위치를 통해) 데이터 버스에 데이터를 넣고 (추가 스위치) 수동으로 버스에 쓰기주기를 발생시키는 경우 (다른 스위치) 또는 데이터를 8 개의 개별 LED로 다시 가져와 바이너리를 읽는 등의 읽기주기. 이렇게하면 충분한 머신 코드를 RAM에 저장하고 프로세서를 일시 중단하지 않은 상태로 유지할 수 있습니다.
JustJeff

4

몇 년 전 4 자리 7 세그먼트 디스플레이와 16 진수 키패드가있는 마이크로 컨트롤러 프로그래머를 만나게되었습니다. 나는 이것이 보드에 마이크로 컨트롤러가 없었고 한 번에 한 바이트 씩 기계 코드를 직접 입력 할 수 있다고 확신합니다.

따라서이를 통해 Op 코드 목록을 하나씩 수동으로 컴파일하고 칩에 입력 할 수 있습니다.

그래도 얻을 수 있는지는 모르겠지만 마이크로 컨트롤러가 비교적 새로운 경우 비슷한 것이 다시 사용되었다고 생각합니다.


1
KIM-1 또는 Cosmac ELF와 같이 들리는데 둘 다 마이크로 프로세서 (MOS 6502 및 RCA [CD] 1802)를 포함하고 있습니다. 김 : oldcomputers.net/kim1.html ELF : cosmacelf.com
mctylr

그것은 아마도 mctylr이 말한 것과 같을 것입니다. 이 유형의 기계에서는 일반적으로 ROM에 작은 '모니터'프로그램이있었습니다. 키패드로 바이트를 입력했을 때 실제로는 키를 읽고, 메모리를 수정하고, LED를 업데이트하는 등의 6502 (또는 8085 또는 기타)
였습니다

1

첫 번째 마이크로 프로세서는 마이크로 프로세서를 기반으로하지 않은 기존 컴퓨터의 도움으로 프로그래밍되었을 것입니다. 첫 번째 CPU가 하나의 칩에서 생산되기 전에 이미 마이크로 프로세서가 아닌 개별 구성 요소로 구축 된 고급 컴퓨터 아키텍처가 존재했습니다. 예를 들어, IBM 360을 살펴보십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.