# Linux/4004: 재미와 예술을 위한 Intel 4004에서의 Linux 부팅, 상업적 이익 없음

> Clean Markdown view of GeekNews topic #16862. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=16862](https://news.hada.io/topic?id=16862)
- GeekNews Markdown: [https://news.hada.io/topic/16862.md](https://news.hada.io/topic/16862.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2024-09-21T09:35:46+09:00
- Updated: 2024-09-21T09:35:46+09:00
- Original source: [dmitry.gr](https://dmitry.gr/?r=05.Projects&proj=35.%20Linux4004)
- Points: 1
- Comments: 2

## Topic Body

### 시작

- 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에서 리눅스를 부팅하는 프로젝트가 있음

## Comments



### Comment 29082

- Author: y15un
- Created: 2024-09-21T10:42:06+09:00
- Points: 1

원글 저자가 이번에 데프콘에서 배지 관련으로 무대에서 끌려나간 그 양반이군요. 누구 편을 들지는 않겠습니다만 그래도 실력은 진짜 대단하네요.

### Comment 29076

- Author: neo
- Created: 2024-09-21T09:35:48+09:00
- Points: 1

###### [Hacker News 의견](https://news.ycombinator.com/item?id=41600756) 
- 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](https://en.wikipedia.org/wiki/SWEET16)
  - [UCSD Pascal](https://en.wikipedia.org/wiki/UCSD_Pascal)

- "Why MIPS?" 섹션에서:
  - 일부는 느린 주소 지정 모드를 가지고 있음 (RISCV)
  - RISC-V 주소 지정 모드에 무엇이 문제인지 궁금함
