1P by neo 2달전 | favorite | 댓글 2개

시작

  • 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)이 작동했음

  • "Why MIPS?" 섹션에서:

    • 일부는 느린 주소 지정 모드를 가지고 있음 (RISCV)
    • RISC-V 주소 지정 모드에 무엇이 문제인지 궁금함