시작
- 2012년에 8비트 마이크로컨트롤러(AVR)에서 리눅스를 실행하여 최저 사양의 머신에서 리눅스를 실행하는 세계 기록을 세움
- 2023년에 AVR보다 더 낮은 사양의 MOS 6510에서 리눅스를 부팅하는 프로젝트가 등장
- 인텔 4004는 세계 최초의 상업용 마이크로프로세서로, 4비트 칩으로 새로운 최저 사양의 기준을 세우기 위해 이 프로젝트를 시작함
4004
- 4004는 4비트 단위로 작동하며, 주로 계산기용으로 개발됨
- 논리 연산이 없고, 주로 ADD와 SUB 명령어만 존재
- 캐리 플래그를 사용한 독특한 연산 방식
- 16개의 4비트 레지스터와 12비트 프로그램 카운터, 4단계 하드웨어 스택을 가짐
- 최소 클럭 속도가 필요하며, 인터럽트 지원이 없음
- 메모리 연산을 직접 수행할 수 있는 몇 가지 명령어가 존재
제어 흐름
- 하드웨어 스택을 사용한 서브루틴 호출 및 반환
- 조건부 점프 명령어가 존재하며, TEST 핀을 통해 외부 이벤트를 감지할 수 있음
- 코드 페이지 개념을 사용하여 4096바이트의 코드 공간을 관리
메모리 및 I/O
- 4004는 메모리 명령어를 직접 처리하지 않으며, 메모리 칩이 이를 처리함
- 최대 8개의 RAM 뱅크를 지원하며, 각 뱅크는 4개의 4002 칩으로 구성됨
- 4001은 256바이트의 ROM과 4비트 I/O 포트를 포함
- 4265는 일반적인 I/O 장치로, 4개의 4비트 I/O 포트를 가짐
4008, 4009, 4289
- 4008과 4009는 일반적인 메모리 칩과 인터페이스할 수 있도록 설계됨
- 4289는 4008과 4009를 결합한 칩으로, 5V 신호 수준에서 통신 가능
메모리 사용 및 상태 니블
- 메모리 뱅크를 선택하기 위해 DCL 명령어를 사용
- 각 RAM 뱅크는 4개의 4002 칩으로 구성되며, 각 칩은 16개의 주소 가능한 니블과 4개의 상태 니블을 가짐
GN⁺의 정리
- 이 프로젝트는 인텔 4004와 같은 초기 마이크로프로세서의 작동 방식을 이해하는 데 큰 도움이 됨
- 4004의 독특한 설계와 제한된 기능을 극복하는 방법을 보여줌
- 현대의 마이크로컨트롤러와 비교하여 초기 마이크로프로세서의 한계를 체험할 수 있는 기회를 제공
- 비슷한 기능을 가진 프로젝트로는 MOS 6510에서 리눅스를 부팅하는 프로젝트가 있음
Hacker News 의견
-
NetBSD가 15 MHz m68030에서 느리다고 생각했는데, 이 프로젝트는 정말 대단함
- 80년대 후반과 90년대 초반에 컴퓨터가 영구 저장 장치, 개방형 주소 공간, MMU를 갖추기 시작하면서 현대 컴퓨팅에 도달했음
- Amiga 3000이나 i80486 컴퓨터도 현대 컴퓨터와 동일한 기능을 수행할 수 있음
- Dmitry가 "기능적"이라는 정의를 얼마나 느슨하게 할 수 있는지 보여줌
-
이 프로젝트를 이해할 수 있을 정도로 지식을 확장하고 싶음
- "Section 14.b & 14.c - Getting the data..." 부분을 완전히 이해했음
- 4년 동안 400K 파일(하루에 약 275장의 사진)을 처리했음
- 많은 처리 능력, 저장 공간, 네트워크가 있음에도 불구하고 미디어 동기화 앱이 충돌하거나 느린 동기화 문제를 겪음
- AirDrop이 실패하고 'Select-All' UI 기능이 부족함
-
AVR 예제를 좋아하는데, 이제 새로운 예제가 생겼음
- 주파수와 전력 소비를 고려할 때 RF가 얼마나 나오는지 궁금함
- "soubroutine"이라는 단어가 오타일 가능성이 있음
-
이 프로젝트는 저렴하지 않았음, Ebay 수집가들에게 감사함
- LCD 대신 VFD를 선택했을 것임, 장기 컴파일 시 VFD가 손상될 수 있음
-
놀라운 프로젝트임
- 높은 PC 비트에서 현재 실행 중인 것을 볼 수 있음
- P.S.: 인터넷을 통한 서버의 IPMI보다 커널을 더 빨리 로드함
-
비디오 촬영에 9일이 걸렸음, 에뮬레이션된 초당 4시간
- 왜 Windows 95를 사용하는지 궁금함
-
이런 종류의 프로젝트에 노벨상이 필요함
-
매우 흥미로운 읽을거리였음
- 4004에 대해 조금 알고 있었지만, 그 수준의 난해함은 놀라웠음
- 동일한 트랜지스터 수로 CPU를 만들 수 있을지 궁금해짐
- 8비트는 프로그래밍을 훨씬 쉽게 만듦
- 작업을 잘 문서화해줘서 감사함
-
초기 마이크로컴퓨터에서 가상 머신(Z-machine이나 JVM)이 작동했음
- 컴파일러 타겟으로 사용할 수 없을 때 유용했음
- SWEET16
- UCSD Pascal
-
"Why MIPS?" 섹션에서:
- 일부는 느린 주소 지정 모드를 가지고 있음 (RISCV)
- RISC-V 주소 지정 모드에 무엇이 문제인지 궁금함