자일로그 Z80
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
자일로그 Z80은 1976년 자일로그에서 출시된 8비트 마이크로프로세서로, 인텔 8080의 개선형이다. 16비트 주소 공간(64KB)을 가지며, 8080과 소프트웨어 호환성을 제공한다. Z80은 DRAM 리프레시 기능, 향상된 인터럽트 제어, 8080보다 많은 명령어 등을 특징으로 하며, 초기에는 4MHz 클럭 속도를 지원했다. Z80은 8비트 CPU 시장에서 널리 사용되었으며, 데스크톱 컴퓨터, 휴대용 컴퓨터, 임베디드 시스템 등 다양한 분야에서 활용되었다. 2024년 4월 15일, 자일로그는 Z80 프로세서의 단종을 발표했다.
더 읽어볼만한 페이지
- 샤프의 제품 - X68000
샤프가 1987년에 출시한 개인용 컴퓨터 X68000은 Motorola 68000 계열 CPU, 뛰어난 그래픽 및 사운드 성능, 독특한 타워형 디자인, Human68k 운영체제, 다양한 확장성 및 주변기기 지원으로 게임 분야에서 인기를 얻었다. - 자일로그의 마이크로프로세서 - 자일로그 Z8000
자일로그 Z8000은 자일로그에서 개발한 16비트 마이크로프로세서로, 8MB 메모리 주소 지정을 지원하는 Z8001과 64KB를 지원하는 Z8002의 두 가지 버전으로 출시되었으며, 사용자 모드와 슈퍼바이저 모드를 제공하고 16개의 범용 레지스터를 통해 다양한 데이터 크기를 처리할 수 있었으나, 시장에서 큰 성공을 거두지는 못하고 32비트 버전인 Z80000으로 발전했다. - 자일로그의 마이크로프로세서 - 자일로그 Z80000
자일로그 Z80000은 32비트 마이크로프로세서로, 다양한 어드레싱 모드, 32비트 논리 주소, 세그먼트 모드, 16개의 32비트 레지스터를 지원하며, 최대 4GB 메모리 직접 액세스, 컴팩트 모드를 통한 코드 밀도 향상, 코프로세서 지원을 통한 부동 소수점 연산 성능 향상 등의 특징을 가진다. - Z80 - 팩맨 (비디오 게임)
팩맨은 미로에서 팩맨을 조작하여 점과 유령을 피하며 파워 펠릿을 먹는 액션 미로 추격 비디오 게임이며, 1980년에 출시되어 큰 성공을 거두었고 비디오 게임 역사상 가장 영향력 있는 게임 중 하나로 평가받는다. - Z80 - 프로거
프로거는 코나미에서 개발하고 세가를 통해 출시된 아케이드 게임으로, 플레이어가 개구리를 조작하여 도로와 강을 건너 개구리 집으로 이동시키는 방식으로 진행된다.
| 자일로그 Z80 | |
|---|---|
| Zilog Z80 정보 | |
![]() | |
| 생산 시작 | 1976년 7월 |
| 생산 종료 | 2024년 6월 |
| 제조사 | 자일로그 |
| 설계 회사 | 페데리코 파긴, 시마 마사토시 |
| 제조업체 | 자일로그, 모스텍, 시너텍, SGS, NEC, 샤프, 도시바, 로옴, 금성사, 히타치, 내셔널 세미컨덕터 등 |
| 최저 클럭 속도 | 2.5 MHz |
| 최고 클럭 속도 | 8 MHz |
| 데이터 폭 | 8비트 |
| 주소 폭 | 16비트 |
| 적용 분야 | 임베디드, 데스크톱, 모바일 |
| 최소 공정 크기 | 4 μm 공정 |
| 마이크로아키텍처 | 해당 없음 |
| 아키텍처 | Z80 |
| 명령어 집합 | 해당 없음 |
| 명령어 확장 | 해당 없음 |
| 명령어 수 | 해당 없음 |
| 트랜지스터 수 | 8,500 |
| 코어 수 | 해당 없음 |
| 메모리 용량 | 해당 없음 |
| GPU | 해당 없음 |
| 코프로세서 | 해당 없음 |
| 패키지 형태 | 40핀 DIP, 44핀 PLCC, 44핀 QFP |
| 소켓 | 해당 없음 |
| 이전 제품 | 인텔 8080 |
| 후속 제품 | Z180, Z280, eZ80 |
| 지원 상태 | 해당 없음 |
| 특징 | |
| 아키텍처 호환성 | 인텔 8080과 하위 호환 |
2. 역사
Z80은 인텔 8080 마이크로프로세서의 개량형으로, 자일로그에서 개발되었다. 8080 개발진들이 회사를 나와 자일로그를 설립하고 Z80을 설계했기 때문에, Z80은 8080과 소프트웨어 호환성을 가지도록 설계되었다.


Z80은 8080에 비해 향상된 명령어 집합, 인터럽트 모드, DRAM 리프레시 회로 내장 등 여러 기술적 개선을 이루었다. 특히, 범용 레지스터군을 2묶음으로 구성하여 빠른 컨텍스트 전환을 가능하게 한 점이 특징이다.
Z80은 초기 개인용 컴퓨터 시장에서 큰 성공을 거두었다. S-100 버스 호환 기기, 비즈니스용 오피스 컴퓨터, 호비 컴퓨터 등 다양한 분야에 탑재되었다. 또한, 임베디드 시스템, 게임 전용기, 파칭코 등에도 널리 사용되었다.
Z80은 원래 클럭 주파수 2.5MHz인 Z80부터 시작하여, 20MHz의 고속 버전까지 다양한 모델이 출시되었다. 또한, 여러 회사에서 세컨드 소스 및 호환 제품을 제조하였다.
2. 1. 초기 역사
페어차일드 반도체와 인텔에서 트랜지스터 및 반도체 제조 기술을 연구해 온 물리학자이자 엔지니어인 페데리코 파진은 인텔 4004, 인텔 8080 등 여러 IC 설계를 이끌었다. 랄프 웅거만은 맞춤형 집적 회로 설계를, 시마 마사토시는 파진의 감독 하에 4004 및 8080의 주요 논리 및 트랜지스터 레벨 설계자였다.[3]1974년 초, 인텔은 마이크로프로세서를 정적 램 및 롬 판매를 늘리는 수단으로 여겼다. 조직 개편과 1973-1975년 불황으로 인한 인텔의 많은 직원 해고는 파진을 불안하게 했다. 그는 웅거만과 함께 회사를 설립하기로 하고, 웅거만은 1974년 8월 또는 9월에, 파진은 1974년 할로윈에 인텔을 퇴사했다.[3] 시마는 이 소식을 듣고 합류를 요청했지만, 제품 설계나 자금이 없어 기다려야 했다.[3]
새 회사는 처음에 2001이라는 단일 칩 마이크로컨트롤러를 설계했으나, 시너텍과의 논의를 통해 자체 생산 라인 없이는 경쟁이 어렵다는 것을 깨달았다. 그들은 더 복잡한 마이크로프로세서, 즉 '슈퍼 80'을 고려했다. 이는 8080과 호환되면서도 모토로라 6800의 장점을 추가하고, +5V 버스를 사용하는 것이 특징이었다.[3]
''Electronic News''의 기사로 인해 엑슨 엔터프라이즈의 관심을 끌었고, 1975년 6월, 엑손은 초기 자금 50만달러를 지원했다.[3]
자금 지원과 함께 시마가 1975년 2월에 합류하여[3] 고수준 설계를 시작했다. 그는 NEC 미니컴퓨터 경험을 바탕으로 프로세서 레지스터를 두 세트 갖는 개념을 추가하여 인터럽트에 빠르게 대응할 수 있게 했다.[3] 웅거만은 관련 컨트롤러와 주변 칩 개발을 시작했다.[3]
시마는 논리적 개념을 물리적 설계로 빠르게 변환하는 능력으로 유명했다. 설계의 첫 단계는 1975년 4월에 완료되었고, 5월 초까지 논리 레이아웃이 완성되었다. 두 번째 버전은 8월 7일에, 버스 세부 사항은 9월 16일에 발표되었다. 테이프 아웃은 11월에 완료되었고, 생산 마스크로 변환하는 데 두 달이 더 걸렸다.[3]
파긴은 생산 파트너로 시너텍과 Mostek을 고려했다. 시너텍은 세컨드 소스 라이선스를 요구하여 무산되었고, Mostek은 Zilog가 자체 라인을 구축하는 동안 독점 조건을 받아들였다.[3]
새 회사 이름은 "집적 논리"를 기반으로 "Zilog"로 결정되었으며, 파진은 이를 "집적 논리의 마지막 단어"라고 표현했다.[3]
1976년 3월 9일에 첫 번째 샘플이 모스텍으로부터 반환되었고,[3] 그 달 말에 어셈블러 기반의 개발 시스템이 완성되었다. Z80 지원 및 주변 IC(Z80 CTC, Z80 DMA[3], Z80 DART, Z80 SIO, Z80 PIO)도 개발되어 다음 해에 출시되었다.
Z80은 1976년 7월에 공식 출시되었다.[78] 초기 고객 중 하나는 NEC였는데, 당시 일본 전자 회사는 미국 칩 설계를 무단 복제하는 것으로 유명했다. 파진과 시마는 복제를 막기 위해 육안 검사로는 알 수 없는 트랩 6개를 설계에 추가했고, 이는 NEC의 복제 노력을 6개월 지연시켰다.[3]
성공적인 출시 후, 자일로그는 엑손의 지원을 받아 자체 생산 라인을 구축하여 Z80 시장의 60~70%를 점유했다.[3] 모스텍은 자체 버전인 MK3880 판매를 시작하여 두 번째 소스를 제공했다.[3]
2. 2. 엑손(Exxon) 투자 및 상세 개발
페데리코 파진과 랄프 웅거만은 1974년 말 인텔을 퇴사하고 새로운 회사를 설립했다. 이들은 시너텍(Synertek)과 생산 협의를 했으나, 자체 생산 라인이 없는 상황에서 저가 제품으로는 경쟁이 어렵다고 판단하여, 8080 호환 프로세서 설계를 시작했다. 새로운 설계는 8080과 호환되면서도, 인덱스 레지스터 및 개선된 인터럽트 등 모토로라 6800의 기능을 추가했다.''Electronic News''의 기사로 인해 엑손 엔터프라이즈(Exxon)의 관심을 끌었고, 1975년 6월에 50만달러의 초기 자금을 지원받았다.
시마 마사토시는 1975년 2월에 합류하여, 프로세서 레지스터를 두 세트 갖는 개념 등 고수준 설계를 추가했다. 시마는 논리적 개념을 물리적 설계로 빠르게 변환하는 능력으로 유명했으며, 칩 공간 최적화에 기여했다. 설계는 1975년 4월에 1차 완료되었고, 11월에 테이프 아웃되었다.
생산 파트너로 Mostek이 선정되었고, 1976년 3월에 첫 샘플이 반환되었다.
2. 3. 생산
자일로그는 생산 파트너로 시너텍(Synertek)과 모스텍(Mostek)을 고려했다. 처음에 시너텍에 접근했으나, 시너텍이 Z80 설계를 직접 판매할 수 있는 세컨드 소스 라이선스를 요구하여 협상이 결렬되었다.[7] 이후 모스텍과 계약을 체결했는데, 모스텍은 자일로그가 자체 생산 라인을 구축할 때까지 Z80을 독점 생산하고, 이후에는 세컨드 소스 계약을 맺는 조건이었다.[7]1976년 3월 9일, 모스텍에서 첫 번째 Z80 샘플이 생산되었다.[7] 같은 달 말, 자일로그는 어셈블러 기반의 개발 시스템을 완성했다.[7]
Z80은 1976년 7월에 공식 출시되었다.[4] 초기 고객 중 하나는 NEC였는데, 당시 일본 전자 회사들은 미국의 칩 설계를 무단 복제하는 것으로 알려져 있었다.[7] 이를 우려한 자일로그는 육안 검사로는 알 수 없는 방식으로 작동하도록 수정된 트랜지스터를 설계에 추가했다. 이러한 "트랩"은 NEC의 복제 노력을 6개월 지연시켰다고 한다.[7]
자일로그는 자체 생산 라인을 구축하여 Z80 시장의 약 60~70%를 점유했다.[7] 모스텍은 자체 버전인 MK3880을 판매하여, Z80의 안정적인 공급을 확보했다.[7]
2. 4. 8080과의 비교
Z80은 인텔 8080 마이크로프로세서의 개량형으로, 8080에 비해 여러 기술적 개선 사항을 제공했다. 8080 개발진들이 자일로그를 설립하고 Z80을 설계했기 때문에, Z80은 8080과 소프트웨어 호환성을 가지도록 설계되었다.Z80이 8080에 비해 가지는 주요 개선 사항은 다음과 같다:[4]
- 향상된 명령어 집합:
- 더욱 논리적이고 이해하기 쉬운 어셈블러 명령어 니모닉 체계를 갖추었다.
- SP를 포함한 16비트 데이터 이동(LD) 명령이 더 유연해졌다.
- 외부 주변 장치 포트에 대한 입/출력 어드레싱 모드가 더 유연해졌다.
- 모든 레지스터 및 메모리에 대한 단일 비트 어드레싱 및 비트 테스트가 가능해졌다.
- 누산기 이외의 메모리 및 레지스터에 대한 시프트/회전 연산이 추가되었다.
- 2진화 십진수 연산이 개선되고 더 정확해졌다.
- 메모리의 BCD 숫자열에 대한 회전 명령이 추가되었다.
- 16비트 뺄셈 및 8비트 부정 연산이 추가되었다.
- 프로그램 루프 기능이 추가되었다.
- 프로그램 카운터(PC) 상대 점프 기능이 추가되었다.
- 블록 이동, 블록 입력/출력(I/O) 및 바이트 검색 명령이 추가되었다.
- 오버플로 플래그 추가: 부호 있는 8비트 및 16비트 산술 연산에 대한 지원이 개선되었다.
- 새로운 IX 및 IY 인덱스 레지스터 추가: 직접 ''베이스+오프셋'' 어드레싱을 위한 명령이 포함되었다.
- 개선된 인터럽트 시스템:
- Zilog의 카운터/타이머, DMA 및 통신 컨트롤러 라인용으로 설계된 자동적이고 일반적인 인터럽트 벡터 시스템인 ''모드 2''가 추가되었다.
- 최소 하드웨어를 갖춘 시스템을 위한 고정 벡터 인터럽트 시스템인 ''모드 1''이 추가되었다. (8080과 호환되는 모드는 ''모드 0'')[7]
- 전원 차단 등의 우선 순위가 높은 이벤트에 응답하는 비마스크 인터럽트(NMI)가 추가되었다.
- 복제 레지스터 파일 추가:[8] 빠른 비동기 이벤트 핸들러 또는 멀티태스킹 스케줄러와 같은 인터럽트 응답 속도를 높이기 위해 빠르게 전환할 수 있다.
- 하드웨어 요구 사항 감소:
- 단일 5볼트 전원 공급 장치 사용 (8080은 −5 V, +5 V, +12 V 필요)
- 단상 5볼트 클록 사용 (8080은 높은 진폭(9 ~ 12 볼트)의 비중첩 2상 클록 필요)
- 내장 DRAM 메모리 새로 고침 기능 추가.
- 비다중화 버스 사용 (8080은 데이터 버스에 상태 신호 다중화)
- 특수 리셋 기능 추가: 단일 Z80 CPU를 인-서킷 에뮬레이터와 같은 개발 시스템에서 사용할 수 있도록 프로그램 카운터만 0으로 만드는 기능이다.[9]
Z80은 이러한 개선 사항들을 통해 프로세서 시장에서 8080과 8085를 대체하며[10], 가장 인기 있고 널리 사용되는 8비트 CPU 중 하나가 되었다.[70]
2. 5. 시장에서의 성공
Z80은 프로세서 시장에서 8080과 그 후속 제품인 8085를 대체하며[10] 가장 인기 있고 널리 사용되는 8비트 CPU 중 하나가 되었다.[70] Z80이 이렇게 시장에서 성공할 수 있었던 요인은 다음과 같다.- 내장 DRAM 리프레시 기능: Z80은 DRAM 정보를 유지(리프레쉬)하는 기능을 내장하고 있어, 별도의 외부 회로 없이 DRAM을 사용할 수 있었다. 이는 시스템 구성을 간소화하고 비용을 절감하는 데 기여했다.
- 간단한 인터럽트 시스템: Z80은 최소한의 2단계 인터럽트 시스템이나 여러 Z80 IO 칩을 서비스하는 데 유용한 다단계 데이지 체인 인터럽트 시스템을 제공하여, 더 적은 지원 하드웨어와 더 간단한 회로 기판 레이아웃으로 시스템을 구축할 수 있도록 했다.
- 중복 레지스터 세트: Z80은 8080에는 1묶음만 존재하던 범용 레지스터군을 앞, 뒤 2묶음으로 구성하여 빠른 컨텍스트 전환을 가능하게 했다. 이는 레지스터가 적은 8비트 CPU에서 부동 소수점 수학과 같은 연산을 효율적으로 처리하는 데 도움이 되었다.[11]
- 개선된 명령어 세트: 8080에 비해 더 많은 명령어와 인터럽트 모드가 추가되었다.
- 호환성: 8080과 소프트웨어와 호환되도록 설계되어, 8080용으로 개발된 소프트웨어를 Z80에서도 실행할 수 있었다.
이러한 기술적 장점 덕분에 Z80은 CP/M 및 기타 사무용, 가정용 컴퓨터 시장에서 큰 인기를 얻었다.
자일로그는 1980년대 초 성장하는 노트북 컴퓨터 시장에 적합한 저전력 Z80을 생산했다. 인텔은 1983년부터 교세라가 설계하고 TRS-80 모델 100 등과 같이 배터리로 구동되는 휴대용 컴퓨터에 사용되는 CMOS 8085(80C85)를 생산했지만, 이후 몇 년 동안 Z80의 CMOS 버전이 Amstrad NC100, 케임브리지 Z88 등과 같은 제품에 사용되며 이 시장을 지배하게 되었다.
원래의 NMOS 설계의 경우, 지정된 상위 클럭 주파수 제한은 소개된 2.5 MHz에서 4 MHz(Z80A), 6 MHz(Z80B), 8 MHz(Z80H)까지 증가했다.[12][13] NMOS 버전은 1980년대 후반부터 10 MHz 부품으로 생산되었다. CMOS 버전은 현재 판매되는 버전의 경우 4 MHz에서 최대 20 MHz까지 지정된 상위 주파수 제한으로 개발되었다. CMOS 버전은 낮은 주파수 제한이 없는 내부 상태를 유지하면서 저전력 대기를 허용했다.
3. 설계
Z80은 인텔 8080의 확장으로 설계되었으며, 8080은 다시 8008의 확장이다. 8008은 기본적으로 데이터포인트 2200의 TTL 기반 CPU를 PMOS로 구현한 것이었다.[16]
Z80은 IX와 IY를 포함한 모든 16비트 레지스터 쌍을 더욱 범용으로 만들고, 메모리와의 16비트 데이터 복사를 지원하여 직교성을 높였다. Z80의 16비트 IX 및 IY 레지스터는 주로 기본 주소 레지스터로 사용되지만, 16비트 누산기로도 활용 가능하다. 단, IX 또는 IY 사용 시 추가적인 명령 접두사 바이트가 필요하여 HL을 사용하는 것보다 최소 4 클럭 사이클이 더 소요된다. Z80은 부호 있는 오버플로 플래그를 도입하고, 8080의 16비트 산술 연산을 보완하는 전용 명령을 추가했다.
8080 호환 레지스터 AF, BC, DE, HL은 Z80에서 별도의 레지스터 파일로 복제되어,[17] 프로세서는 한 뱅크에서 다른 뱅크로 빠르게(4 t-state) 전환할 수 있다.[18] 이는 단일 레벨, 고우선순위 인터럽트 응답 속도를 높이는 데 유용하며, 인터럽트 처리 성능 향상 및 부동 소수점 산술 연산 등에 활용되었다.
복제된 레지스터 파일은 "대체 레지스터 세트"라고도 불린다. 8비트 누산기 A와 플래그 레지스터 F는 범용 레지스터 쌍 HL, DE, BC와 분리되어, `EX AF,AF'`는 AF와 AF'를, `EXX`는 HL, DE, BC와 HL', DE', BC'를 교환한다.
3. 1. 프로그래밍 모델 및 레지스터 집합
Z80의 프로그래밍 모델은 데이터포인트 2200의 레지스터 구조를 기반으로 하며, 8008과 8080을 거쳐 확장된 형태이다.[16] 8080 호환 레지스터들은 다음과 같이 구성된다.- `AF`: 8비트 누산기 (A) 및 플래그 비트(F) - 캐리, 제로, 마이너스, 패리티/오버플로, 반올림(BCD에 사용), 더하기/빼기 플래그(N)
- `BC`: 16비트 데이터/주소 레지스터 또는 2개의 8비트 레지스터
- `DE`: 16비트 데이터/주소 레지스터 또는 2개의 8비트 레지스터
- `HL`: 16비트 누산기/주소 레지스터 또는 2개의 8비트 레지스터
- `SP`: 스택 포인터, 16비트
- `PC`: 프로그램 카운터, 16비트
Z80에서 추가된 레지스터는 다음과 같다.
- `IX`: 16비트 인덱스 또는 기본 레지스터 (8비트 즉시 오프셋)
- `IY`: 16비트 인덱스 또는 기본 레지스터 (8비트 즉시 오프셋)
- `I`: 인터럽트 벡터 기본 레지스터, 8비트
- `R`: DRAM 리프레시 카운터, 8비트 (최상위 비트는 계산되지 않음)
- `AF'`: 대체(섀도우) 누산기 및 플래그 (''EX AF,AF' ''로 전환)
- `BC'`, `DE'`, `HL'`: 대체(섀도우) 레지스터 (''EXX''로 전환)
- 인터럽트 상태 및 인터럽트 모드 상태 (4비트)
Z80은 8080에 비해 레지스터를 확장하여 이중 레지스터 세트를 제공한다.[17] 주 레지스터 세트(AF, BC, DE, HL)와 대체 레지스터 세트(AF', BC', DE', HL')를 빠르게 전환하여 사용할 수 있다.[18] 이는 인터럽트 처리 성능을 향상시키거나, 부동 소수점 산술 연산과 같은 복잡한 코드에서 추가적인 레지스터로 활용되었다.
`EX AF,AF'` 명령은 AF 레지스터와 AF' 레지스터를 교환하고, `EXX` 명령은 BC, DE, HL 레지스터와 BC', DE', HL' 레지스터를 교환한다.
리프레시 레지스터(R)는 CPU가 연산 코드를 가져올 때마다 증가하며, 의사 난수 생성이나 소프트웨어 보호, 하드웨어 카운터 등으로 사용되었다.[16] 인터럽트 벡터 레지스터(I)는 인터럽트 서비스 루틴 주소 테이블의 기본 주소를 제공한다.[7]
`LD A,R` 및 `LD A,I` 명령은 다른 `LD` 명령과 달리 Z80 플래그 레지스터에 영향을 준다. 부호 및 제로 플래그는 로드된 데이터에 따라 설정되며, 패리티/오버플로 플래그는 IFF2 플립플롭 상태에 따라 설정된다.[20]
다음은 Z80 레지스터의 구성을 나타내는 표이다.
| 주요 레지스터 | 대체 레지스터 | 인덱스 레지스터 | 기타 레지스터 | 프로그램 카운터 | 상태 레지스터 |
|---|---|---|---|---|---|
| A/F | A'/F' | IX | I (인터럽트 벡터) | PC | S (부호) |
| B/C | B'/C' | IY | R (리프레시 카운터) | Z (제로) | |
| D/E | D'/E' | SP | H (반올림) | ||
| H/L | H'/L' | P/V (패리티/오버플로) | |||
| N (감산) | |||||
| C (캐리) |
3. 2. 마이크로아키텍처
Z80은 일반적으로 8비트 CPU로 간주되지만, 4비트 ALU를 가지고 있어 계산이 두 단계로 이루어진다.[21] Z80에서 수행되는 16비트 연산의 예시는 다음과 같다.- `ADD IX,rx`: 16비트 레지스터의 내용을 인덱스 레지스터에 더한다.
- `ADC HL,rr`: 16비트 레지스터의 내용과 C 플래그를 HL 레지스터에 더한다. (8080에도 존재하던 명령어이다.)
- `SBC HL,rr`: 16비트 레지스터의 내용과 C 플래그를 HL 레지스터에서 뺀다. (16비트 SUB 명령어는 없으므로, 8비트 SUB 명령어에서만 A를 표기하지 않는다.)
- `INC IX`: 인덱스 레지스터의 내용을 증가시킨다.
- `DEC IX`: 인덱스 레지스터의 내용을 감소시킨다.
- `NEG`: A 레지스터의 2의 보수를 구한다.
3. 3. Z80 어셈블리 언어
Z80 어셈블리 언어는 8080 어셈블리 언어와는 명령어 표시를 위한 '니모닉'이 완전히 다르지만, 더 체계적으로 기술되어 초보자도 쉽게 이해할 수 있다는 장점이 있다. 반면, 다른 CPU의 니모닉과 비교하면 주소 지정 방식이 불확실하다는 단점도 있다.[23] 오퍼랜드 순서는 목적지(destination)가 앞이고 소스(source)가 뒤이다.Z80 어셈블리 언어는 데이터포인트 2200, 8008, 8080, 8086 어셈블리 언어와 비교하여 다음과 같은 특징을 가진다.
| 인텔 8008 Datapoint 2200 | 인텔 8080 인텔 8085 | 자일로그 Z80 | 인텔 8086/ 인텔 8088 |
|---|---|---|---|
| 약 1973년 이전 | 약 1974년 | 1976년 | 1978년 |
Z80 어셈블리 언어의 주요 특징은 다음과 같다.
- 체계적인 구문: 모든 레지스터와 레지스터 쌍을 명시적으로 표기하고, 괄호를 사용하여 메모리 주소를 나타낸다.[24]
- LD 명령어: 모든 로드 및 저장 명령어에 `LD`라는 동일한 니모닉 이름을 사용한다.
- 다양한 명령어: 8080에 비해 확장된 명령어 세트를 제공한다. (예: 블록 전송, 인덱스 레지스터 명령어)
Z80 어셈블리 언어 예시:
```assembly
1000 org 1000h ;Origin at 1000h;
1000 memcpy public
1000 78 loop ld a,b ;Test BC,
1001 B1 or c ;If BC = 0,
1002 C8 retz ;Return
1003 1A ld a,(de) ;Load A from (DE)
1004 77 ld (hl),a ;Store A into (HL)
1005 13 inc de ;Increment DE
1006 23 inc hl ;Increment HL
1007 0B dec bc ;Decrement BC
1008 C3 00 10 jp loop ;Repeat the loop
100B end
```
위 코드는 메모리 블록을 복사하는 `memcpy` 함수의 예시이다.
3. 4. 명령어 집합 및 인코딩
Z80은 8080에 비해 다음과 같은 개선 사항을 제공했다.[4]:- 향상된 명령어 집합
- 보다 논리적이고 이해하기 쉽고 읽기 쉬운 어셈블러 명령 니모닉 시스템
- 스택 포인터 SP를 포함한 더 유연한 16비트 데이터 이동(로드, LD) 명령
- 외부 주변 장치 포트에 대한 입/출력에 대한 보다 유연한 어드레싱 모드
- 모든 레지스터 및 메모리의 단일 비트 어드레싱, 비트 테스트 포함
- 누산기 이외의 메모리 및 레지스터에 대한 시프트/회전
- 개선되고 더 정확한(이전 8080보다 나은) 2진화 십진수 산술 연산
- 메모리의 BCD 숫자열에 대한 회전 명령
- 16비트 뺄셈 및 8비트 부정
- 프로그램 루프
- 프로그램 카운터(PC) 상대 점프
- 블록 이동, 블록 입력/출력(I/O) 및 바이트 검색 명령
- 부호 있는 8비트 및 16비트 산술 연산에 대한 더 나은 지원을 제공하는 오버플로 플래그
- 직접 ''베이스+오프셋'' 어드레싱을 위한 명령이 포함된 새로운 IX 및 IY 인덱스 레지스터
최초의 인텔 8008 어셈블리 언어는 Datapoint 2200 설계에서 상속된 매우 단순하지만 체계적인 구문을 기반으로 했다. 이 원래 구문은 나중에 동일한 8008 칩에 대해 다소 더 전통적인 어셈블리 언어 형태로 변환되었다. 거의 동시에 새로운 어셈블리 언어는 더 발전된 인텔 8080 칩의 추가적인 어드레싱 모드를 수용하도록 확장되었다.
이 과정에서 ''LOAD''를 의미하는 니모닉 `L`은 다른 기호 문자와 혼합된 단어 ''LOAD'', ''STORE'' 및 ''MOVE''의 다양한 약어로 대체되었다. ''메모리''(HL로 참조)를 의미하는 니모닉 문자 `M`은 구문적으로 독립적인 "피연산자"가 되도록 명령어 니모닉 내에서 제거되었으며, 레지스터와 레지스터 조합은 매우 일관성이 없게 표시되었다.
| 인텔 8008 Datapoint 2200 | 인텔 8080 인텔 8085 | 자일로그 Z80 | 인텔 8086/ 인텔 8088 |
|---|---|---|---|
| 약 1973년 이전 | 약 1974년 | 1976년 | 1978년 |
''4개의 구문을 보여주는 그림으로, 유사하거나(8086의 경우) 매우 유사한 로드 및 저장 명령의 예제를 사용한다.[22] Z80 구문은 값을 메모리 주소로 사용해야 함을 나타내기 위해 식 주위에 괄호를 사용하고, 8086 구문은 이 목적으로 일반 괄호 대신 대괄호를 사용한다. Z80과 8086은 모두 + 기호를 사용하여 상수가 베이스 레지스터에 추가되어 주소를 형성함을 나타낸다.''
인텔이 어셈블리 니모닉에 대한 저작권을 주장했기 때문에, Z80을 위한 새로운 어셈블리 구문이 개발되어야 했다.[23] 이번에는 더 체계적인 접근 방식이 사용되었다.
- 모든 레지스터와 레지스터 쌍은 전체 이름으로 명시적으로 표기된다.
- 괄호는 "다음 주소의 메모리 내용" (상수 주소 또는 변수 포인터 역참조)를 나타내는 데 일관되게 사용되며, JP (HL) 점프 명령어를 제외한다.
- 모든 로드 및 저장 명령어는 LOAD를 나타내는 동일한 니모닉 이름인 LD를 사용한다 (단순한 Datapoint 2200 어휘로의 복귀). ADD 및 INC와 같은 다른 일반적인 명령어는 어드레싱 모드 또는 피연산자 크기에 관계없이 동일한 니모닉을 사용한다. 이는 피연산자 자체가 충분한 정보를 전달하기 때문에 가능하다.
Z80은 사용 가능한 256개 코드 중 252개를 단일 바이트 opcode로 사용하며(대부분 8080에서 상속됨), 나머지 4개 코드는 연산 코드 접두사로 광범위하게 사용된다.[25] CB 및 ED는 추가 명령을 활성화하고, DD 또는 FD는 각각 IX+d 또는 IY+d를 HL 대신 선택한다(일부 경우 변위 d 없이). 이 체계를 통해 Z80은 많은 수의 명령어와 레지스터 순열을 갖게 된다. Zilog는 이를 158개의 서로 다른 "명령 유형"으로 분류하며, 그 중 78개는 Intel 8080과 동일하다[25](Z80에서 모든 8080 프로그램을 실행할 수 있음). Zilog 문서는[26] 명령을 다음과 같은 범주로 더 그룹화한다.
- 로드 및 교환
- 블록 전송 및 검색
- 산술 및 논리
- 회전 및 시프트
- 비트 조작(설정, 재설정, 테스트)
- 점프, 호출 및 반환
- 입력/출력
- 기본 CPU 제어
원래 Z80에는 명시적인 곱셈 명령이 없다.[27] 하지만 레지스터 A와 HL은 ADD A,A 및 ADD HL,HL 명령으로 2의 거듭제곱만큼 곱할 수 있다(마찬가지로 IX 및 IY도). 시프트 명령도 2의 거듭제곱으로 곱하거나 나눌 수 있다.
더하기, 시프트 및 회전의 다양한 크기와 변형은 8080의 대부분의 플래그 변경 속성이 복사되었기 때문에 플래그에 약간 다른 영향을 미친다. 그러나 8080의 패리티 플래그 비트 P(비트 2)는 Z80에서 P/V(패리티/오버플로)라고 불리며, 8080에는 없는 2의 보수 오버플로 지표의 추가적인 역할을 한다. Z80의 산술 명령은 패리티 대신 오버플로를 나타내도록 설정하는 반면, 비트 단위 명령은 여전히 패리티 플래그로 사용한다. 또한 플래그 레지스터의 비트 1(8080의 예비 비트)은 마지막 산술 명령이 뺄셈인지 덧셈인지를 나타내는 플래그 N으로 사용된다. Z80 버전의 DAA 명령(BCD 산술에 대한 10진수 조정 누산기)은 N 플래그를 확인하고 그에 따라 동작한다.
Z80에는 DE, BC 및 SP 레지스터 쌍을 메모리에서 로드하고 이러한 세 레지스터 쌍에서 메모리를 로드할 수 있는 6개의 새로운 LD 명령이 있다.[22] 8080과 마찬가지로 로드 명령은 플래그에 영향을 미치지 않는다(특수 목적 I 및 R 레지스터 로드 제외).
새로운 블록 전송 명령은 최대 64킬로바이트를 메모리에서 메모리로 또는 메모리와 I/O 주변 포트 간에 이동할 수 있다. 블록 명령 LDIR 및 LDDR (load, increment/decrement, repeat)는 HL을 사용하여 소스 주소를 가리키고, DE는 대상 주소를 가리키고, BC는 바이트 카운터로 사용한다. 바이트는 소스에서 대상으로 복사되고, 포인터는 증가 또는 감소하며, 바이트 카운터는 BC가 0에 도달할 때까지 감소한다. 반복되지 않는 버전 LDI 및 LDD는 단일 바이트를 이동하고 포인터와 바이트 카운터를 증가시키며, 0이 되면 P/V 플래그를 재설정한다. 해당 메모리-I/O 명령 INIR, INDR, OTIR, OTDR, INI, IND, OUTI 및 OUTD는 유사하게 작동하지만, BC가 아닌 B가 바이트 카운터로 사용된다는 점이 다르다.[28] Z80은 레지스터 C를 사용하여 포트를 지정하여 모든 레지스터를 I/O 포트로 입력 및 출력할 수 있다.
마지막 블록 명령 그룹은 (HL)의 바이트와 누산기 A 사이에서 CP 비교 연산을 수행한다. 레지스터 쌍 DE는 사용되지 않는다. 반복 버전 CPIR 및 CPDR은 BC가 0이 되거나 일치하는 항목이 발견된 경우에만 종료됩니다. HL은 일치하는 바이트 이후(CPIR) 또는 이전(CPDR) 바이트를 가리키도록 유지된다. 일치하는 항목이 없으면 Z 플래그가 재설정된다. 반복되지 않는 버전 CPI 및 CPD가 있다.
8080과 달리 Z80은 부호 있는 8비트 변위를 사용하여 상대 주소로 점프할 수 있다(JP 대신 JR). 이러한 새로운 2바이트 JR 명령에 대해 0과 캐리 플래그만 테스트할 수 있다. 프로그램 루핑에 특화된 2바이트 명령도 Z80에 새롭게 추가되었다. DJNZ (decrement jump if non-zero)는 부호 있는 8비트 변위를 즉시 피연산자로 사용한다. B 레지스터가 감소되고, 결과가 0이 아니면 프로그램 실행이 PC를 기준으로 상대적으로 점프한다. 플래그는 변경되지 않은 상태로 유지된다.
인덱스 레지스터(IX/IY, 종종 XY로 약칭) 명령은 고정된 이종 구조(예: 레코드) 또는 가변 기본 주소를 기준으로 고정된 오프셋(예: recursive stack frames)으로 구성된 데이터에 액세스하는 데 유용할 수 있다.
인덱스 레지스터에는 JP (HL)과 병렬인 JP (XY) 명령이 있다. 이는 모든 Forth 단어(언어를 구성하는 원자 서브루틴)의 끝에서 스레드 인터프리터 루틴으로 무조건 점프해야 하는 Forth와 같은 스택 지향 언어에서 자주 볼 수 있다.
인덱스 레지스터 IX와 IY는 메모리, 스택 프레임 및 데이터 구조를 조작하는 능력을 향상시키는 유연한 16비트 포인터로 사용되었다. 공식적으로는 16비트만 사용 가능했다. 실제로는 HL 레지스터와 마찬가지로 한 쌍의 8비트 레지스터로 구현되었으며, 16비트로 액세스하거나 'H'igh 및 'L'ow 레지스터로 개별적으로 액세스할 수 있었다. 이진 opcode(기계어)는 동일했지만 새로운 opcode 접두사가 앞에 붙었다. 자일로그(Zilog)는 의도된 기능에 대한 opcode와 관련 니모닉을 공개했지만, H 및 L 레지스터 조작을 허용하는 모든 opcode가 IX 및 IY 레지스터의 8비트 부분에도 동일하게 유효하다는 사실은 문서화하지 않았다. 예를 들어, opcode 26h 다음에 즉시 바이트 값을 사용하면 해당 값이 H 레지스터에 로드된다. 이 2바이트 명령어 앞에 IX 레지스터의 opcode 접두사 DD를 붙이면 대신 IX 레지스터의 최상위 8비트가 동일한 값으로 로드된다.
다른 몇 가지 문서화되지 않은 명령어들도 있다. 문서화되지 않은 또는 불법 opcode는 Z80에서 감지되지 않으며 다양한 효과를 가지며, 그 중 일부는 유용하다. 그러나 이는 명령어 집합의 공식적인 정의에 속하지 않으므로, Z80의 다른 구현 방식에서는 모든 문서화되지 않은 opcode에 대해 동일하게 작동할 것이라고 보장할 수 없다.
OTDR 명령어는 Z80 설명서에 부합하지 않는다. OTIR과 OTDR 명령어 모두 캐리 플래그(C)를 수정하지 않도록 되어 있다. OTIR 명령어는 올바르게 작동하지만, OTDR 명령어 실행 중 캐리 플래그는 누산기(A)와 OTDR 명령의 마지막 출력 간의 가짜 비교 결과를 반영한다.[37]
3. 5. 명령어 실행
Z80 명령어는 일반적으로 1~4개의 기계 사이클(M-사이클)로 실행되며, 각 사이클은 3~6 클럭 주기(T-상태)를 가진다.[32] 각 M-사이클은 메모리 접근 또는 내부 연산에 해당한다. 많은 명령어들은 다음 명령어의 M1 사이클(명령어 인출) 중에 종료되는데, 이를 ''fetch/execute overlap''(인출/실행 중첩)이라고 한다.[16]
Z80은 명령어 인출(opcode fetch)을 위해 2 클럭 사이클을 메모리 접근 기간(M1 신호)으로 사용한다. 이는 6800, 6502 등 다른 프로세서들이 클럭 사이클의 30-40%를 메모리 접근에 사용하는 것보다 긴 시간이다. 이 때문에 Z80은 다른 프로세서보다 메모리 접근 시간이 더 길게 허용되어, 더 느린 메모리 칩을 사용할 수 있었다.[16]
CPU가 명령어를 인출하여 실행하는 동안, 새로 고침 레지스터 R의 내용은 새로 고침 제어 신호와 함께 주소 버스의 하위 절반에 전송된다. 이 때 인터럽트 레지스터 I의 내용은 주소 버스 상위 절반에 전송된다.[34]
Z80은 인텔 8080 프로세서와 마찬가지로 리틀 엔디안 방식을 사용한다. 8080에 비해 개선된 점은 전원 5V 단일화, 클럭 주파수 향상 등이다. 메모리 공간은 16비트 어드레스 버스로 64KiB를 지원하며, 더 큰 메모리 공간을 사용하려면 외부 뱅크 전환 회로나 MMU가 필요하다.
초기 Z80에는 없었지만, 현재 Z80은 CMOS 버전과 NMOS 버전으로 나뉜다. NMOS 버전은 저가, 고성능이며, CMOS 버전은 고성능, 저전력 설계에 적합하다. NMOS 버전의 최대 동작 클럭 주파수는 Z80(2.5MHz), Z80A(4MHz), Z80B(6MHz), Z80H(8MHz) 등이다. CMOS 버전은 Z84C0006(6.17MHz), Z84C0008(8MHz), Z84C0010(10MHz), Z84C0020(20MHz) 등으로 동작한다.
8080에 비해 추가/변경된 점은 다음과 같다.
- 8비트 범용 레지스터 2세트 전환 기능
- 인덱스 레지스터 IX, IY를 사용한 메모리 조작
- DRAM 리프레시 기능 및 R 레지스터 추가
- 인터럽트 모드 추가
- 상대 주소 점프 명령어 추가
- 와이어드 로직을 이용한 명령어 실행
인터럽트 모드는 8080 호환 모드 0 외에, RST38을 수행하는 모드 1, Z80 주변 LSI와 조합하여 최대 128레벨 인터럽트를 수행하는 모드 2가 있다. 또한 NMI (Non Maskable Interrupt)가 추가되어 전원 차단 등의 비상 처리에 사용된다.
정식 명령어 표에는 없지만, 정의되지 않은 명령어도 존재한다. 이들 중 일부는 후속 Z280 매뉴얼에서 정식으로 문서화되었다.
하드웨어 상의 비공개 기능으로, Z80 NMOS 및 CMOS 버전에는 특별한 리셋(스페셜 리셋)이 존재한다. 이는 미국 특허 4486827[79]로 등록되었으며, 에뮬레이터 및 멀티태스킹 등에 응용될 수 있다.
Z80은 명령어의 첫 번째 사이클(M1 사이클)이 다른 사이클보다 짧다는 점을 이용해 8080보다 빠르게 실행될 수 있음을 강조했다. 그러나 이 M1 사이클 때문에 빠른 메모리가 필요하다는 단점도 있었다.
Z80에는 특정 명령어 조합을 사용하면 실행 클럭 수나 명령어 바이트 수를 줄일 수 있는 "최적화" 기술이 존재했다. 예를 들어 블록 전송 명령어와 인덱스 레지스터 명령어는 코드 크기를 줄일 수 있지만, 실행 속도는 느려질 수 있다.
Z80은 상대 점프 범위가 좁고, PC 상대 어드레싱이 없어 재배치 가능한 코드 작성이 어려웠다. 또한 주소 참조 시 오프셋 지정 범위가 제한되어 C 언어 포인터와 호환성이 좋지 않았다.
어드레싱 모드가 적어 명령어 형식을 암기하여 기계어 코드를 직접 작성하는 것이 어렵지 않았다.
3. 6. 호환 주변 장치
Z80 CPU는 주변 장치와의 효율적인 상호작용을 위해 설계된 다양한 호환 주변 장치를 가지고 있었다. 자일로그에서 직접 설계 및 제조한 이 칩들은 Z80의 인터럽트 처리 시스템 및 I/O 주소 공간과 완벽하게 호환되었다.다음은 Z80 호환 주변 장치들이다:
이 칩들은 제품 라인이 발전함에 따라 저전력, 고속, 그리고 CMOS 버전으로도 출시되었다.
Z80은 인텔 8080과 마찬가지로 I/O 명령을 위한 별도의 제어선과 주소 공간을 가지고 있었다. 오스본 1과 같은 일부 Z80 기반 컴퓨터는 "모토로라 스타일" 메모리 맵 I/O 장치를 사용했지만, 대부분의 경우 I/O 공간은 Z80과 호환되는 자일로그 주변 칩 중 하나를 주소 지정하는 데 사용되었다.
Z80은 I/O 읽기 또는 쓰기 작업 시 자동으로 단일 대기 사이클을 삽입하여 주변 장치와의 동기화를 도왔다.[36] 또한, Z80의 새로운 모드 2 인터럽트를 지원하여 많은 수의 주변 장치 인터럽트 처리를 단순화했다.
Z80은 16비트(64KB) 메모리 주소 지정과 8비트(256 포트) I/O 주소 지정을 지원했다. 모든 I/O 명령은 실제로 전체 16비트 주소 버스를 사용하였다. `OUT (C),reg` 및 `IN reg,(C)` 명령어는 전체 16비트 BC 레지스터의 내용을 주소 버스에 배치했다.[37] `OUT (n),A` 및 `IN A,(n)` 명령어는 A 레지스터의 내용을 주소 버스의 상위 8비트(b8–b15)에, n을 주소 버스의 하위 8비트(b0–b7)에 배치하였다.
이러한 특징 덕분에 설계자는 전체 16비트 주소 버스를 디코딩하거나, 주소 버스의 상위 절반을 사용하여 I/O 장치의 하위 기능을 선택할 수 있었다. 암스트라드 CPC/PCW 및 ZX81과 같은 시스템에서는 이 기능을 활용하여 디코딩 하드웨어 요구 사항을 최소화했다.
4. 복제품 및 파생 제품
Z80은 여러 회사에서 복제품(Second sources)과 파생 제품(Derivatives)을 생산했다. 주요 복제품 및 파생 제품은 다음과 같다.
복제품 (Second sources)
- 모스텍은 자일로그를 위해 최초의 Z80을 생산했으며, MK3880 모델명으로 세컨드 소스를 제공했다.[37]
- SGS-Thomson(현재 STMicroelectronics) 역시 Z8400을 세컨드 소스로 생산했다.[37]
- 샤프와 NEC는 NMOS Z80의 세컨드 소스인 LH0080과 μPD780C를 각각 개발했다.[37]
- 도시바는 CMOS 버전인 TMPZ84C00을 만들었는데, 이는 자일로그가 자체 CMOS Z84C00에 사용한 것과 동일한 설계로 여겨진다.
- 골드스타(현 LG)와 로옴(ROHM Electronics)에서 제작한 NMOS 및 CMOS Z8400, Z80 칩, 그리고 BU18400 시리즈 Z80 클론(DMA, PIO, CTC, DART 및 SIO 포함)도 있었다.
- 동독에서는 U880으로 알려진 Z80의 무면허 복제품이 제조되었다.
- 루마니아에서는 MMN80CPU라는 또 다른 무면허 복제품이 발견되었으며, Microelectronica에서 생산되었다.
- 소련에서는 Z80의 여러 클론이 제작되었으며, 주목할 만한 클론으로는 T34BM1, 즉 КР1858ВМ1이 있었다.
파생 제품 (Derivatives)
- 히타치 HD64180/자일로그 Z180: 히타치 제작소(현 르네사스테크놀러지)가 개발한 HD64180은 온칩 주변 장치와 간단한 MMU를 갖춘, CMOS로 구현된 마이크로 코딩 방식의 부분적 동적 Z80이다.
- 도시바 TLCS-Z80 시리즈: Z80 패밀리 세컨드 소스 및 이를 집적한 1칩 마이크로 컨트롤러를 1983년부터 판매하기 시작했다.
- 자일로그 eZ80: 2001년에 출시된 완전 파이프라인 방식 Z80 호환 칩이다.[47]
- 가와사키 중공업(Kawasaki) KL5C8400: 오리지널 Z80보다 약 1.2~1.3배 클록 사이클 효율이 높고 최대 33 MHz로 클록할 수 있는 바이너리 호환 칩이다.
- 아스키 R800: ASCII가 개발하였으며, 내부 16비트의 고속판 Z80 호환 CPU이다.
- 내셔널 세미컨덕터 NSC800: 1980년에 발표되었으며,[51] Z80 명령어 세트와 완벽하게 호환되지만, 8085와 유사한 멀티플렉스 버스를 사용하고 Z80과는 다른 핀아웃을 가진다.[54]
- 자일로그 Z800/Z280: 16비트 Z80 구현체였으며, 16MB 페이징 MMU 주소 공간을 가지고 있었다.
아케이드 게임 일부(예: 팡)는 VLSI Technology에서 제조한 암호화된 "가부키" Z80 CPU를 사용했다.[58]
4. 1. 복제품 (Second sources)
모스텍은 자일로그를 위해 최초의 Z80을 생산했으며, MK3880 모델명으로 세컨드 소스를 제공했다.[37] SGS-Thomson(현재 STMicroelectronics) 역시 Z8400을 세컨드 소스로 생산했다.[37] 샤프와 NEC는 NMOS Z80의 세컨드 소스인 LH0080과 μPD780C를 각각 개발했다.[37] LH0080은 소니 MSX 컴퓨터를 비롯해 샤프와 다른 일본 제조업체에서 만든 다양한 가정용 컴퓨터 및 개인용 컴퓨터와 샤프 MZ 시리즈의 여러 컴퓨터에 사용되었다.[38] 샤프는 4 MHz 및 6 MHz 주파수에서 작동하는 LH0080A와 LH0080B를 개발했다.[39]도시바는 CMOS 버전인 TMPZ84C00을 만들었는데, 이는 자일로그가 자체 CMOS Z84C00에 사용한 것과 동일한 설계로 여겨진다. 골드스타(현 LG)와 로옴(ROHM Electronics)에서 제작한 NMOS 및 CMOS Z8400, Z80 칩, 그리고 BU18400 시리즈 Z80 클론(DMA, PIO, CTC, DART 및 SIO 포함)도 있었다. 샤프는 Z80, PIO, CTC의 CMOS 버전인 LH5080,[41] LH5081,[42] 및 LH5082를 제조했다.[43]
동독에서는 U880으로 알려진 Z80의 무면허 복제품이 제조되었다. 이 칩은 로보트론(Robotron)과 VEB 미크로일렉트로닉 뮐하우젠(Mikroelektronik Mühlhausen)의 컴퓨터 시스템(예: KC85 시리즈)과 많은 자작 컴퓨터 시스템에 광범위하게 사용되었다. 루마니아에서는 MMN80CPU라는 또 다른 무면허 복제품이 발견되었으며, Microelectronica에서 생산되어 TIM-S, HC, COBRA와 같은 가정용 컴퓨터에 사용되었다.
소련에서는 Z80의 여러 클론이 제작되었으며, 주목할 만한 클론으로는 T34BM1, 즉 КР1858ВМ1이 있었다.
4. 2. 파생 제품 (Derivatives)
다음은 자일로그(Zilog) 및 다른 회사에서 개발한 Z80 호환 파생 제품들에 대한 설명이다.- 히타치 HD64180/자일로그 Z180: 히타치 제작소(현 르네사스테크놀러지)가 개발한 HD64180은 온칩 주변 장치와 간단한 MMU를 갖춘, CMOS로 구현된 마이크로 코딩 방식의 부분적 동적 Z80이다. 1MB의 주소 공간을 제공한다.[44] 나중에 자일로그(Zilog)에 의해 Z64180으로, 그리고 약간 수정된 자일로그 Z180 형태로 두 번째 소스로 공급되었다. Z180은 Z80 주변 장치 칩에 더 잘 맞춰진 버스 프로토콜과 타이밍을 가지고 있으며, 최신 버전은 전력 소비 및 EMI(노이즈)가 매우 낮은 완전 정적 S180/L180 코어를 기반으로 한다.
- 도시바 TMPZ84C00: CMOS 버전으로, 자일로그(Zilog)가 자체 CMOS Z84C00에 사용한 것과 동일한 설계로 여겨진다.
- 도시바 TLCS-Z80 시리즈: Z80 패밀리 세컨드 소스 및 이를 집적한 1칩 마이크로 컨트롤러를 1983년부터 판매하기 시작했다.
- TMPZ84C013: Z80CPU, Z80CTC, Z80SIO 등을 집적했다.
- TMPZ84C015: Z80CPU, Z80CTC, Z80PIO, Z80SIO, CGC, 워치독 타이머 등을 집적했다. 자일로그에서도 동일한 Z84C15가 판매되고 있으나, 핀 기능의 일부가 다르다.
- 자일로그 eZ80: 2001년에 출시된 완전 파이프라인 방식 Z80 호환 칩이다.[47] 8/16/24비트 워드 길이와 선형 16MB 주소 공간을 가지며, 온칩 SRAM 또는 플래시 메모리를 탑재한 버전과 통합 주변 장치를 갖춘 버전으로 존재한다. 명령어는 오리지널 Z80보다 클록 사이클 효율이 2~11배 더 빠르게 실행되며, 평균 값은 약 3~5배이다. 현재 최대 50MHz의 클록 주파수에 대해 지정되어 있다.
- 가와사키 중공업(Kawasaki) KL5C8400: 오리지널 Z80보다 약 1.2~1.3배 클록 사이클 효율이 높고 최대 33 MHz로 클록할 수 있는 바이너리 호환 칩이다.
아래는 완전 호환은 아니거나, 부분적으로 호환되는 제품들이다.
- 아스키 R800: ASCII가 개발하였으며, 내부 16비트의 고속판 Z80 호환 CPU이다. 곱셈 명령을 확장했지만 계산 결과가 부정확한 결점이 있다. MSX turboR에 탑재되었다.[56]
- 내셔널 세미컨덕터 NSC800: 1980년에 발표되었으며,[51] Z80 명령어 세트와 완벽하게 호환되지만, 8085와 유사한 멀티플렉스 버스를 사용하고 Z80과는 다른 핀아웃을 가진다.[54]
- 자일로그 Z800/Z280: 16비트 Z80 구현체였으며, 16MB 페이징 MMU 주소 공간을 가지고 있었다.
아케이드 게임 일부(예: 팡)는 VLSI Technology에서 제조한 암호화된 "가부키" Z80 CPU를 사용하는데, 여기서 복호화 키는 내부 배터리 백업 메모리에 저장되어 해적 행위 및 불법 부트렉 게임을 방지한다.[58]
5. 응용 분야
Z80 CPU는 초기 개인용 컴퓨터 시장을 지배했으며, 1970년대 말부터 1980년대 초반까지 비즈니스용 오피스 컴퓨터와 여러 회사의 호비 컴퓨터에 탑재되었다.[78] 21세기에도 임베디드용으로 널리 사용되고 있으며, 초기 게임 전용기 등에도 탑재되었다.
특히 파칭코·파치슬로의 추첨을 담당하는 주 기판 부분의 코어 CPU에는 암호 기능을 부여한 Z80 기반의 커스텀 LSI가 사용되는데, 이는 CPU와 메모리 간에 교환하는 데이터를 암호화하여 프로그램이나 데이터를 읽을 수 없도록 한다.
Z80은 인텔 8080의 개발 스태프들이 설계했으며, 8080과 바이너리 레벨에서 "거의" 상위 호환성을 가져 많은 소프트웨어가 그대로 동작한다. Z80 오리지널 제품은 클럭 주파수가 2.5MHz인 Z80부터 20MHz의 고속 버전까지 존재하며, 여러 회사에서 세컨드 소스 및 호환 제품을 제조했다.
내셔널 세미컨덕터에서는 CMOS화와 함께, 인텔 8085처럼 어드레스 버스의 하위와 데이터 버스를 멀티플렉스시켜 Z80과 소프트웨어 호환성을 가진 "NSC800"을 제조했다.
Z80의 아키텍처를 참고하여 확장된 아키텍처로는 도시바의 TLCS-90 시리즈, TLCS-900 시리즈, 래빗2000 시리즈가 있지만, 이들은 Z80과의 바이너리 호환성은 없다. 샤프의 LR35902는 Z80보다 일부 기능이나 명령을 삭제한 것이다.
Z80 기술을 활용한 CPU는 다음과 같다.
| CPU명 | 설명 | 활용 제품 |
|---|---|---|
| LR35902 | Z80의 세컨드 소스 메이커인 샤프가 개발한 Z80 커스텀 CPU. 인텔 8080에 Z80의 기능/명령 일부를 추가. | 게임보이(1989년 4월 21일 발매, 클럭 4.19MHz), 게임보이 컬러(클럭 8.39MHz) |
| TLCS-90 시리즈 | TMPZ84Cxxx 계열 이후 개발된 Z80CPU의 흐름을 잇는 프로세서. IX, IY 레지스터 폭 20bit 확장 등. (바이너리 코드 비호환) | |
| TLCS-870 시리즈 | 기본 아키텍처는 Z80과 동일. 레지스터 세트와 명령어가 거의 동일. | |
| TLCS-900 시리즈 | TLCS-90의 장점을 살려 16/32비트화한 CPU. 임베디드에 주로 사용. | |
| 래빗2000 | 일부 명령 추가/삭제 및 고속화. 래빗 세미컨덕터 개발/판매. Rabbit2000/3000/4000/5000 버전 존재. HD64180/Z180 기반 (완전 바이너리 호환 X). | |
| RL78 | 르네사스의 8bit/16bit CPU. 저전력 소비.[86] 머신어는 거의 Z80.[87] |
5. 1. 데스크톱 컴퓨터
CP/M 운영 체제를 기반으로 한 Heathkit H89, 오스본 1, Kaypro 시리즈 등 비즈니스용 컴퓨터에 Z80이 사용되었다.[70] TRS-80 시리즈, DEC Rainbow 100, Seequa Chameleon 등 여러 가정용 컴퓨터에도 Z80이 주 프로세서 또는 보조 프로세서로 사용되었다.[10]Microprofessor I, Toshiba MSX HX-10, Sharp Hotbit, Gradiente Expert와 같은 교육용 및 개인용 컴퓨터에도 Z80이 탑재되었다.
5. 2. 휴대용 및 핸드헬드 컴퓨터
샤프 PC-1500/PC-1600/PC-E220, 샤프 위자드(Sharp Wizard) 시리즈 등 포켓 컴퓨터 및 개인 정보 관리기, 엡손 PX-8 Geneva/PX-4, Bondwell-2, Cambridge Z88, Amstrad NC100 등 랩탑 컴퓨터, Cidco MailStation Mivo 100, Texas Instruments PocketMate 시리즈 등 휴대용 이메일 장치 및 포켓 오거나이저에 Z80 CPU가 사용되었다.5. 3. 임베디드 시스템 및 소비자 가전
Z80 CPU는 다양한 임베디드 시스템과 소비자 가전에 사용되었다.- 음악 신시사이저: Prophet-5, Prophet 600 등
- 게임 콘솔 및 계산기:
| 종류 | 제품명 |
|---|---|
| 게임 콘솔 | Casio PV-1000, 세가 마스터 시스템/게임 기어 |
| 계산기 | 텍사스 인스트루먼트 TI-8x 시리즈 그래프 계산기 |
- 아케이드 비디오 게임: 팩맨 등
- 소비자 가전: AON 전화기 등
6. 단종
2024년 4월 15일, 자일로그(Zilog)는 Z80 프로세서의 단종을 발표했으며, 2024년 6월 14일까지 주문을 받는다고 밝혔다.[75] 단종 발표에는 Z80 프로세서의 13가지 변종이 포함되었으며, 이들 중 다수는 칩의 DIP40 변형이었다. 그러나 자일로그는 업그레이드된 eZ80 버전의 프로세서 생산은 계속할 것이라고 밝혔다.[75]
참조
[1]
웹사이트
Chip Hall of Fame: Zilog Z80 Microprocessor - IEEE Spectrum
https://spectrum.iee[...]
2024-11-22
[2]
웹사이트
After 48 years, Zilog is killing the classic standalone Z80 microprocessor chip
https://arstechnica.[...]
2024-04-22
[3]
웹사이트
Z80® DMA Direct Memory Access Controller
http://www.bitsavers[...]
2024-01-08
[4]
서적
The second information revolution
https://archive.org/[...]
Harvard University Press
2003
[5]
간행물
History of the 8-bit: travelling far in a short time
https://books.google[...]
Popular Computing Inc.
1982-11-29
[6]
간행물
Z-80 chip set heralds third microprocessor generation
https://www.worldrad[...]
McGraw Hill Education
1976-08-19
[7]
서적
The circuits and filters handbook
CRC Press
2002
[8]
서적
Introduction to Microprocessors
Tata McGraw-Hill Publishing Company
1989
[9]
웹사이트
Z80 Special Reset
https://github.com/r[...]
2024-04-27
[10]
웹사이트
Z80, the 8-bit Number Cruncher
http://www.andreadri[...]
2011-06-04
[11]
웹사이트
Z80, the 8-bit Number Cruncher: Z80 32-bit (long) add
http://www.andreadri[...]
2011-06-04
[12]
서적
Popular Computing
McGraw Hill Education
1983
[13]
간행물
Zilog's speedy Z80 soups up 8-bit to 16-bit performance
https://books.google[...]
Popular Computing, Inc.
1982-10-18
[14]
서적
Electronic design
Hayden
1988
[15]
웹사이트
The Z80 Lives!
http://www.z80.info/[...]
1992
[16]
웹사이트
Down to the silicon: how the Z80's registers are implemented
https://www.righto.c[...]
[17]
서적
Kilobaud
'1001001'
1977
[18]
서적
Programming the Z80
https://archive.org/[...]
SYBEX
1982
[19]
서적
Embedded systems design
https://archive.org/[...]
Newnes
2003
[20]
웹사이트
Z80 Flag Affection
http://www.z80.info/[...]
Thomas Scherrer
2016-06-14
[21]
웹사이트
The Z-80 has a 4-bit ALU. Here's how it works.
http://www.righto.co[...]
2021-11-16
[22]
웹사이트
8080/Z80 Instruction Set
http://nemesis.lones[...]
2009-07-22
[23]
서적
Intel Component Data Catalog 1978
Intel Corporation
1978
[24]
웹사이트
Z80 Relocating Macro Assembler User's Guide
http://z80cpu.eu/mir[...]
2009-06-04
[25]
웹사이트
Z80 CPU Introduction
http://www.z80.info/[...]
Zilog
[26]
PDF
Z80-CPU Instruction Set
https://usermanual.w[...]
Zilog
2021-07-20
[27]
서적
Software Solutions for Engineers And Scientists
Taylor & Francis
2008
[28]
서적
Computer Architecture and Organization
[29]
서적
The free software catalog and directory
https://archive.org/[...]
Crown Publishers
1984
[30]
웹사이트
Z80 Undocumented Instructions
http://www.z80.info/[...]
[31]
서적
The Amstrad Notepad Advanced User Guide
1993
[32]
서적
Z80 Family CPU User Manual
https://www.zilog.co[...]
Zilog
2024-01-05
[33]
서적
Programming the Z80
https://archive.org/[...]
Sybex
1989
[34]
서적
Z80 Family CPU User Manual
https://www.zilog.co[...]
Zilog
2024-01-05
[35]
웹사이트
Z80 Family CPU Peripherals User Manual
http://datasheet.eew[...]
ZiLOG
2001
[36]
웹사이트
Sharp 1986 Semiconductor Data Book
http://www.bitsavers[...]
2024-01-01
[37]
웹사이트
Z80 Undocumented Features (in software behaviour)
http://z80.info/z80u[...]
1998-10
[38]
웹사이트
Overview of the SHARP MZ-series
https://web.archive.[...]
2011-07-28
[39]
서적
1986 Semiconductor Data Book
http://www.bitsavers[...]
Sharp Corporation
2024-01-01
[40]
웹사이트
Sharp 1986 Semiconductor Data Book
http://www.bitsavers[...]
2024-01-13
[41]
웹사이트
Sharp 1986 Semiconductor Data Book
http://www.bitsavers[...]
2024-01-20
[42]
웹사이트
Sharp 1986 Semiconductor Data Book
http://www.bitsavers[...]
2024-01-28
[43]
웹사이트
Sharp 1986 Semiconductor Data Book
http://www.bitsavers[...]
2024-01-28
[44]
웹사이트
The Z80 Lives!
http://www.z80.info/[...]
2009-07-17
[45]
웹사이트
The Z80 Lives!
http://www.z80.info/[...]
2009-07-17
[46]
웹사이트
EDN Access — 08.01.96 Z80 turns 20
https://www.edn.com/[...]
2023-08-07
[47]
웹사이트
EZ80 ACCLAIM Product Family
https://web.archive.[...]
Zilog
[48]
서적
Electronic Business Asia
Cahners Asia Limited
1997
[49]
웹사이트
Hardware specs
https://web.archive.[...]
2005-10-19
[50]
웹사이트
Overview :: T80 cpu :: OpenCores
https://opencores.or[...]
2024-07-01
[51]
간행물
NSC800 — a low-power high-performance microprocessor family
https://ieeexplore.i[...]
Institution of Engineering and Technology
2021-06-01
[52]
웹사이트
TST-4043: Data encryptor with HF-modem and FEC
https://www.cryptomu[...]
2018-02-27
[53]
웹사이트
NSC800 High-Performance Low-Power CMOS Microprocessor
https://www.cryptomu[...]
National Semiconductor
1992-06
[54]
웹사이트
MCS-85, Zilog Z80 and National NSC800 Expansion Boards
https://www.cpushack[...]
2015-02-15
[55]
웹사이트
Section 6 MOS MPU, MCU, and Peripherals Market Trends
https://web.archive.[...]
Integrated Circuit Engineering Corporation
[56]
서적
Embedded Ethernet and Internet Complete
https://archive.org/[...]
Lakeview research
[57]
서적
Embedded systems design using the Rabbit 3000 microprocessor
https://archive.org/[...]
Newnes
[58]
웹사이트
Capcom Kabuki CPU – Intro
https://arcadehacker[...]
2014-11-23
[59]
서적
Computer work stations
https://archive.org/[...]
Chapman and Hall
1985
[60]
간행물
After CP/M, object oriented operating systems may lead the field
https://books.google[...]
InfoWorld Media Group
1982-05-10
[61]
웹사이트
Otrona Attache
http://oldcomputers.[...]
2019-03-05
[62]
웹사이트
Sharp PC-1500 Technical Reference Manual
https://www.pc-1500.[...]
[63]
웹사이트
Poor Man's Laptop
https://books.google[...]
Popular Mechanics, April 1991, page 120
2018-04-11
[64]
웹사이트
Laser PC4
https://www.oldcompu[...]
2018-04-11
[65]
웹사이트
Laser PC5 from VTech
https://www.larwe.co[...]
2018-04-11
[66]
웹사이트
Laser PC6
https://web.archive.[...]
Perfect Solutions
2018-04-11
[67]
웹사이트
Mailstation Development
http://www.fybertech[...]
2021-04-18
[68]
웹사이트
Texas Instruments PS-6200
http://www.datamath.[...]
2019-06-18
[69]
웹사이트
Texas Instruments PocketMate 100
http://www.datamath.[...]
2019-06-18
[70]
서적
Complete Digital Design: A Comprehensive Guide to Digital Electronics and Computer System Architecture
McGraw-Hill Professional
2003-06-18
[71]
서적
Practical electronics handbook
https://archive.org/[...]
Newnes
[72]
웹사이트
Gordon Reid's Vintage Synths – the Sequential Circuits Prophet 5 and Prophet 10
https://www.gordonre[...]
2023-11-05
[73]
웹사이트
Prophet 600: A Classic Synthesizer Gets Processor Upgrade
https://hackaday.com[...]
2014-03-19
[74]
웹사이트
Making a demo for an old phone — AONDEMO
https://habr.com/en/[...]
2020-01-29
[75]
웹사이트
After 48 years, Zilog is killing the classic standalone Z80 microprocessor chip
https://arstechnica.[...]
2024-05-23
[76]
뉴스
パチンコ/パチンコ/パチスロ台ではいまだZ80が主流、そのため技術者が高齢化?
http://hardware.slas[...]
[77]
웹사이트
Zilog Calls Time on the Venerable Z80, Discontinues the Standalone Z84C00 CPU Family (huckster.io)
https://www.hackster[...]
[78]
웹사이트
Insider's Computer Dictionary:Z80 とは? - @IT
https://atmarkit.itm[...]
2021-08-31
[79]
특허
https://patents.goog[...]
[80]
웹사이트
http://www.primroseb[...]
[81]
서적
マイクロコンピュータの誕生
[82]
웹사이트
Z80 CPU User Manual
http://www.zilog.com[...]
2016-12-08
[83]
웹사이트
Z80・割り込みフラグの不具合に関するレポート Z80のIFF2に関するトラブル体験談
http://www.vector.co[...]
下間 憲行
2018-01-16
[84]
문서
MZ-1500 オーナーズマニュアル
[85]
웹사이트
eZ80 CPU User Manual
http://www.zilog.com[...]
[86]
웹사이트
RL78低消費電力8/16ビットMCU
https://www.renesas.[...]
2024-08-22
[87]
웹사이트
福野泰介の一日一創
https://fukuno.jig.j[...]
2023-06-23
[88]
서적
Z80 Family CPU User Manual
http://www.zilog.com[...]
Zilog
2009-07-18
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com
