간단한 구조의 CPU를 직접 만드는 건 이게 처음 있는 일은 아닙니다. 찾아보면 비슷한 사례가 많이 나옵니다.
큰 화면은 여기로 https://www.bilibili.com/video/BV1sy4y1j7Ue
움짤들의 용량이 커서 못 가져왔습니다.
이 사람은 다이오드, 접합형 트랜지스터, 저항의 세 가지 부품을 가지고 CPU를 만들었습니다. 기본적인 논리 회로의 구조는 모두 이런 기초적인 부품으로 구성됩니다.
우선 CPU의 레지스터 부분부터 착수했는데, 6비트의 시프트 레지스터를 만들었습니다. 데이터를 가져오고, 클럭 신호에 따라서 데이터를 한쪽에서 다른 쪽으로 이동시키는 역할을 합니다.
그리고 프로그램 카운터 부분도 있습니다. 기록된 프로그램을 실행하는 위치입니다. 이 부분이 전체 제작 과정에서 가장 시간이 많이 걸렸다네요. 3개월 정도.
기본적으로는 각각의 명령어를 읽은 후 자동으로 1을 더해서 다음 명령어를 읽도록 합니다. CPU가 리셋되면 프로그램 카운터 역시 0이 됩니다. 또 프로그램이 특정 줄을 건너 뛰거나 함수를 쓰거나 함수를 반복하도록 명령하면 거기에 맞춰서 작동해야 합니다. 구조가 복잡해진다는 소리죠. 일주일 걸려서 다이오드 하나를 납땜하는 일도 있었다네요.
그리고 롬과 램이 있습니다. 흔한 hm628512 칩을 롬과 램으로 썼습니다. 여기까지 하면 CPU의 기본적인 모듈은 완성됩니다.
그 다음은 명령어 디코더를 만들어야 합니다. CPU 명령을 가져와서 분석하고 실행하는 역할을 합니다. 또 ALU도 더하고 나중에는 캐시 메모리까지 추가했다고 합니다.
마지막으로, 이 사람은 컨셉질에 워낙 충실했기에 소스 코드를 손으로 써서 만들었다고 하네요. 원본 영상을 보시면 이진법으로 코드를 쓰고 그 옆에 중국어로 주석을 다는 장면을 보실 수 있습니다.
I/O 포트가 없기에 레지스터에 LED를 달아서 결과를 표시하도록 했습니다.
이 사람은 프로그램을 짤 때 실행 파일의 바이너리를 분석하다가 'CPU가 이 0101이라는 명령을 어떻게 실행할까?'라고 의문을 품은 후, 기본적인 전자 지식을 습득한 다음에 아날로그 회로를 만들기로 했습니다.
기존의 CPU 구조를 참고하지 않고 게이트 회로에 대해 자신이 배운대로 자기만의 아키텍처 세트를 만들려고 했습니다. 가장 기본적인 트랜지스터부터 게이트 레벨 회로까지 인터넷에서 여러 회로도를 쉽게 볼 수 있지만 그건 별 도움이 안 됐다네요.
또 각각의 기능을 만들고 이걸 하나의 장치로 연결하는 게 어려웠고, 디버깅을 위한 장치가 없어 LED와 부저를 사용해 조절했는데 클럭 100kHz 이상으로 올리기 힘들었다고 합니다.
이 CPU에는 1000개 이상의 트랜지스터, 2000개 이상의 다이오드, 10000개 이상의 저항, 총 1000위안(한화 17만원)이 들어갔다고 합니다. 6개월 이상의 시간도 그렇고요.
마지막으로, 제조 공정은 2.54mm라는 농담도 덧붙였습니다. nm가 아니라 mm입니다.
64KB짜리는 자기 코어도 무척 작은게 무려 50만개이상 합선되지 않게 입체적으로 제작한다는 일은 결코 쉬운일은 아니겠다는 생각이 듭니다.
더구나 메모리구조물 사이즈도 1L짜리 물통 크기밖에 안되는 매우 컴팩트한 사이즈이죠.