Zilog Z80 출시 50주년

3 days ago 13
  • 1976년 7월 출시된 Zilog Z80은 개인용·취미용 컴퓨터부터 임베디드·산업 장비까지 널리 쓰이며 8비트 마이크로프로세서 시대를 대표하게 됨
  • Intel 8080 바이너리 호환성을 유지하면서 레지스터·주소 지정·명령어·인터럽트 기능을 확장하고, 전기적 연결은 더 단순하게 설계함
  • 8008의 제한적인 스택과 14비트 주소 공간은 8080에서 메모리 스택과 16비트 주소 공간으로 개선됐고, Z80은 여기에 인덱스 레지스터·대체 레지스터 뱅크·블록 명령을 추가함
  • 단일 5V 전원·단일 클록과 MREQ·IORQ·RD·WR 제어 신호, 내장 DRAM 리프레시 덕분에 적은 주변 칩으로 컴퓨터를 구성할 수 있었음
  • Z80 계열은 Game Boy의 Sharp LR35902와 eZ80 등 여러 파생 제품을 낳았으며, 원래 Z80은 긴 산업용 수명을 거쳐 2024년 6월 단종

Datapoint 2200에서 Intel 8008로

  • Computer Terminal Corporation(CTC)은 개별 TTL 칩으로 만든 8비트 프로세서를 탑재한 Datapoint 2200 프로그래머블 터미널을 개발함
  • TTL 회로 일부를 맞춤형 IC로 대체하려던 계획은 전체 CPU를 단일 칩에 넣는 방향으로 확대됐고, Texas Instruments와 Intel이 각각 설계를 맡음
  • 두 회사 모두 기한 내 설계를 완성하지 못했으며, Intel의 칩이 준비됐을 때 CTC는 이미 TTL 기반 터미널을 판매하고 있었음
    • CTC 엔지니어들은 칩 성능에도 만족하지 않았고 차세대 터미널의 아키텍처도 변경한 상태였음
    • TI는 설계를 중단했지만 Intel은 원래 1201이던 제품을 마케팅 명칭인 8008로 바꿔 상용화함

8008의 구조와 한계

  • 8008은 A·B·C·D·E·H·L 7개 레지스터를 제공함
    • A는 누산기이고, H와 L은 메모리 포인터 HL을 구성함
    • 의사 레지스터 M은 HL이 가리키는 메모리 바이트를 나타냄
  • ALU 상태는 Carry·Parity·Zero·Sign 플래그로 유지되며 조건부 점프·호출·복귀에 사용됨
  • 프로그램 카운터는 직접 다루기 어려웠고, 함수 호출에는 프로세서 내부의 8단계 복귀 주소 스택을 사용함
    • Datapoint 2200이 직렬 메모리를 사용할 예정이어서 메모리 기반 호출 스택이 병목이 될 수 있다는 판단에 따른 설계였음
  • 메모리 주소는 14비트이며 별도 주소 공간에 32개 I/O 포트를 제공함
  • 인터럽트가 발생하면 주변 장치가 데이터 버스에 RST 명령을 올리고 CPU가 이를 실행함
    • RST는 주소 공간 앞부분의 8개 슬롯 중 하나를 호출함
    • 범용 메모리 스택이 없고 모든 메모리 접근에 HL이 필요해, 인터럽트 처리 중 레지스터를 저장하려면 I/O 버스의 외부 래치를 임시 레지스터로 써야 했음
  • 3,500개 트랜지스터와 DIP18 패키지를 사용했으며 주소·데이터 버스를 다중화함
    • 외부 회로가 버스를 래치하고 CPU의 내부 상태 신호를 해석해야 했음
    • 500kHz의 위상이 다른 두 클록과 +5V·-9V 전원이 필요했음

8008에서 8080으로

  • 8008 개발이 끝나기 전부터 한계를 개선하려는 논의가 시작됐지만, Intel 경영진은 시장 반응을 먼저 확인하려 함
  • Federico Faggin은 개선형 개발을 추진했으며, 경쟁사의 8비트 제품 발표까지 기다린 결과 Intel은 선행 기간 9개월을 잃음
  • Faggin은 프로젝트 승인 전부터 Busicom의 Masatoshi Shima를 영입해 8080 설계에 투입함
  • 잠재 고객이 8008 시연에서 제공한 비판과 피드백도 반영했으며, 초기부터 8008과의 바이너리 호환성을 포기하기로 결정함

8080 아키텍처

  • 8080은 8008과 유사한 레지스터 구성을 유지하면서 내부 복귀 주소 스택을 없애고, SP가 가리키는 메모리 스택을 도입함
    • BC·DE·HL·AF 레지스터 쌍을 스택에 넣거나 꺼낼 수 있음
    • Intel 어셈블리에서는 AF를 프로그램 상태 워드인 PSW라고 부름
  • 주소 공간은 16비트 64KB, I/O 포트는 256개로 늘어남
    • BC와 DE를 통한 제한적인 간접 접근이 가능해짐
    • 누산기와 HL을 즉시 지정한 주소에서 읽거나 저장할 수 있음
  • 레지스터 쌍 증감 등 16비트 연산이 추가돼 포인터 계산과 16비트 카운터를 처리할 수 있음
    • 이 연산 블록은 ALU 플래그에 영향을 주지 않으므로 BC를 감소시킨 뒤 두 바이트가 모두 0인지 별도로 검사해야 함
  • 인터럽트는 RST 기반 방식을 유지하면서 소프트웨어로 활성화하거나 비활성화할 수 있게 됨
    • 명시적인 메모리 스택 덕분에 레지스터 저장용 I/O 하드웨어가 필요 없어짐
  • Intel 8080 어셈블리는 니모닉과 opcode가 거의 1:1로 대응해 어셈블러 구현은 쉬웠지만 사람이 읽기에는 불편할 수 있었음
    • 레지스터 쌍 명령은 한쪽 레지스터 이름만 사용하며, INX의 X로 단일 바이트 INC와 구분함

8080의 전기적 인터페이스

  • 속도를 높이기 위해 NMOS 논리를 사용하면서 -5V·+5V·+12V의 세 전원과 위상이 다른 두 클록이 필요해짐
  • 40핀 패키지 덕분에 주소선과 데이터선을 분리했지만, 제어 상태 일부를 데이터 버스에 다중화해 외부 래치와 디코더가 여전히 필요했음
  • Intel은 상태 디코딩과 클록 생성을 위한 지원 칩을 판매했으며, 시스템에 따라 인터럽트 컨트롤러·타이머·DMA 컨트롤러도 필요했음
    • 프로그래머블 타이머는 최소한 DRAM 리프레시 구동에 활용할 수 있었음
  • 후속 8085는 단일 5V 전원과 단일 5V 클록을 사용하고 일부 제어 신호를 추가했지만, 여전히 특수 지원 칩이 필요했음

Zilog 설립과 Z80 개발

  • 8080 프로젝트 승인 지연과 Intel 경영진과의 갈등에 불만을 느낀 Faggin은 마이크로프로세서 부문 책임자 Ralph Ungermann과 Intel을 떠나 회사를 설립함
  • 처음에는 마이크로컨트롤러를 고려했지만 팹리스 반도체 스타트업이 감당하기에는 마진이 낮다고 판단함
  • 이후 8080 개선형인 Super 80을 설계하기로 했고, 이 제품이 Zilog Z80으로 이어짐
    • Exxon에서 자금을 확보하고 Shima도 Intel에서 영입함
    • 레이아웃과 소프트웨어 시뮬레이션 등을 맡는 팀은 총 11명으로 확대됨
  • 목표는 8080 바이너리 호환성을 유지하면서 레지스터·주소 지정 방식·명령어를 추가하고, 6800 같은 동시대 프로세서의 특징을 반영하는 것이었음
    • 8080보다 빠른 속도와 단순한 전기적 연결도 목표로 삼음
  • 작동하는 첫 프로토타입까지 약 40만 달러가 들었으며, Exxon에서 확보한 50만 달러 예산보다 적은 비용으로 일정을 맞춤
  • 생산은 처음 계약한 Synertek과의 갈등 이후 Mostek에 의존함
    • 이후 Exxon의 추가 투자로 자체 팹을 건설했지만 Z80의 복수 공급은 계속함

Z80 아키텍처의 확장

  • Z80은 8080 명령어 집합과 완전히 바이너리 호환
  • 6800에서 영감을 받은 16비트 인덱스 레지스터 IX와 IY를 추가함
    • opcode 접두사를 사용해 HL 대신 쓸 수 있으며 즉시 오프셋도 지원함
  • AF·BC·DE·HL 레지스터 쌍은 대체 뱅크를 갖춰 인터럽트 처리 시 빠르게 전환할 수 있음
  • 인터럽트는 세 가지 모드를 제공함
    • 모드 0은 8080 호환 방식임
    • 모드 1은 항상 고정 주소를 호출함
    • 모드 2는 버스의 값을 인덱스로 사용해 호출 테이블로 분기하며, 별도 레지스터가 테이블의 메모리 기준 주소를 지정함
  • 비트 회전·검사·설정, BCD 연산, BC를 카운터로 쓰는 반복 명령, 블록 전송·비교·문자열 연산을 추가함
    • 바이트 복사 루프 전체를 자체 반복 명령인 LDIR 하나로 대체할 수 있음
  • Intel이 어셈블리 니모닉 저작권을 주장했기 때문에 Z80은 자체 문법을 채택함
    • 피연산자를 더 명시적으로 적고 기본 니모닉을 오버로드해 8080 문법보다 읽기 쉽게 구성함

단순해진 버스 설계

  • Z80은 단일 5V 전원과 단일 클록만 필요함
  • 8080에서 외부 회로가 래치하고 해석하던 상태를 전용 신호로 직접 제공함
    • MREQ와 IORQ는 메모리·I/O 접근을 구분함
    • RD와 WR은 읽기·쓰기를 나타냄
    • M1은 현재 메모리 접근이 명령어 인출임을 알림
  • 주소선과 데이터선을 직접 연결하고 74xx138 하나로 EEPROM·RAM·UART를 선택하는 정도의 회로만으로 기본 컴퓨터를 만들 수 있음
  • 내부 리프레시 카운터가 명령어 디코딩 주기 중 주소 버스에 값을 출력하고 제어선을 활성화해 DRAM 리프레시를 처리함
  • 인터럽트 모드 1을 사용하면 외부 인터럽트 컨트롤러 없이 단일 장치를 인터럽트 핀에 연결할 수 있음
    • 여러 장치는 74xx148 우선순위 인코더와 래치 같은 단순 회로로 처리할 수 있음

Z80 이후의 전개

  • Z80이 1976년 7월 출시되기 전부터 16비트 Z8000의 초기 설계가 시작됐고, 제품은 Intel 8086 이후이자 Motorola 68000 이전인 1979년에 출시됨
  • Z8000은 8086처럼 분할 메모리를 사용했지만, 세그먼트 번호를 버스에 출력하고 외부 MMU가 선형 주소 변환과 범위·권한 검사를 담당함
  • 8086 명령어 집합에는 8080의 계보와 함께 Z80의 자체 반복 블록·문자열·루프 명령 특징도 반영됨
  • Z8000 MMU 설계는 286의 디스크립터 테이블 기반 16비트 보호 모드에도 영향을 줌

Exxon, IBM PC와 Zilog의 변화

  • Zilog은 마이크로프로세서가 논리회로 대체품으로 여겨지던 시기부터 컴퓨터 시장을 겨냥했지만, Exxon과의 관계는 IBM이 PC에 Zilog 대신 Intel 8088을 선택한 이유 중 하나가 됨
  • Exxon은 IBM에 맞서는 자체 컴퓨팅 사업군을 만들려 했으며 타자기·워드프로세서·프린터 제조사 등에 전략적으로 투자함
    • 이들 중 일부는 Zilog 부품 기반 제품을 설계해 IBM 제품의 시장 점유율을 잠식함
  • Exxon과의 긴밀한 관계는 Faggin과 Ungermann 사이에도 갈등을 일으켰고, Ungermann은 Zilog이 1980년 Exxon의 완전 자회사가 되기 전에 퇴사함
  • Zilog은 1989년 Exxon에서 다시 분리되고 1991년 상장함
    • 이후 사모펀드와 전자기업 사이에서 여러 차례 소유주가 바뀌었으며 현재는 Littelfuse가 소유함
  • Z80은 장기간 임베디드 프로세서로 사용된 뒤 2024년 6월 단종

개인적 Z80 경험과 장기적 영향

  • Z80과 바이너리 호환인 8080·8085는 8비트 마이크로컴퓨터의 사실상 하드웨어 표준 형성에 기여했고, CP/M과 Microsoft BASIC이 사실상 소프트웨어 표준으로 자리 잡는 기반이 됨
  • Z80은 초기 개인용 컴퓨터, 가정·취미용 컴퓨터와 다양한 임베디드·산업 시스템에 사용됨
    • 원조 Game Boy의 Sharp LR35902를 비롯한 복제품과 파생 아키텍처도 등장함
    • Zilog은 16·32비트 파생 제품군을 포기한 뒤 파이프라인과 높은 클록을 적용한 eZ80 등 Z80 기반 마이크로컨트롤러로 돌아감
  • 십 대 후반 전자부품 카탈로그에서 여전히 판매 중이던 Z80을 발견한 뒤 소형 컴퓨터를 설계하고, 학교 사진실을 밤에 빌려 PCB를 식각함
    • 교사들에게 오래된 가정용 컴퓨터와 콘솔, Tupperware 상자 안에 와이어 래핑으로 제작해 CP/M·WordStar를 실행한 컴퓨터 등의 경험을 들음
    • MCS-85 부품과 Z80·8085·6502·6522 칩도 받아 직접 만든 프로젝트에 사용함
  • 이 과정에서 안정적인 전원 켜짐 리셋이 예상보다 어렵고, 링커가 어셈블러보다 훨씬 구현하기 어려우며, 개인도 컴파일러를 실제로 만들 수 있다는 점을 배움
Read Entire Article