명령어 집합 | |
CISC | AMD64●x86● · M68K · 68xx · Z80 · 8080 · MOS 65xx · VAX |
RISC | AArch64 ARM · RISC-V● · MIPS● · DEC Alpha · POWER PowerPC · CELL-BE LoongArch · OpenRISC · PA-RISC · SPARC · Blackfin · SuperH · AVR32 AVR |
VLIW EPIC | E2K · IA-64 · Crusoe |
펜티엄 이전의 인텔 CPU | ||||||||||||
아키텍처 분류 | 제품 | |||||||||||
x86 이전 (4비트) | 4004 (1971) | 4040 (1974) | ||||||||||
x86 이전 (8비트) | 8008 (1972) | 8080 (1974) | 8085 (1977) | |||||||||
x86 (16비트) | 8086/8088 (1978/1979) | 80186/80188 (1982) | 80286 (1982) | |||||||||
x86(IA32) (32비트) | 80386 (1985) | 80486 (1989) | ||||||||||
기타 | iAPX432(8800) | i860 | i960 | |||||||||
관련 문서 | 인텔 펜티엄 시리즈 | 인텔 코어 시리즈 | 인텔 코어2 시리즈 | |||||||||
인텔 코어i 시리즈 | 인텔 코어 Ultra 시리즈 |
1. 개요
1974년 4월 인텔에서 출시한 8비트 마이크로프로세서다. 1969년부터 인텔 4004 설계를 도운 시마 마사토시(嶋正利)는 다니던 비지콤을 그만두고 1972년 인텔로 이직하면서 그가 인텔 8080 설계를 주도했다. 페데리코 파진(Federico Faggin)은 그를 지도하면서 설계를 도왔다.#2년전 출시된 8008의 개선판이며 바이너리 호환성은 없지만 어셈블리어 수준에서 호환되므로 다시 어셈블하면 정상적으로 작동했다.
8008을 기반으로 하고 있지만 내부 구조에서 개선이 이루어졌다. 가장 큰 변화는 함수 호출시 복귀 주소를 스택 포인터를 이용해서 메모리에 저장한다. 이로 인해 8레벨 이상의 함수 호출이 가능해졌다. 이외에도 여러가지 명령어와 레지스터의 용도를 확장했다.
인텔 8008보다 개선된 6μm NMOS 공정으로 생산되었으며, 4500개의 트랜지스터로 구성되어 있다.
인텔 8080은 컴퓨터 역사에서 가장 중요한 마이크로프로세서중의 하나이다. Z80만 하더라도 인텔 8080을 기반으로 하고 있으며[1] 당시 가장 널리 사용했던 8비트 운영 체제, CP/M도 원래는 인텔 8080 프로세서를 위한 것이었다.
2. 제원
클럭 | 2~3.125MHz |
데이터 폭 | 8비트 |
어드레스 폭 | 16비트 |
지원 명령어 | 72개 |
트랜지스터 | 4,500개 |
공정 | 6μm |
3. 아키텍처
3.1. 레지스터
- 8비트 레지스터: B, C, D, E, H, L, F, A
- 0(
000
): B - 1(
001
): C - 2(
010
): D - 3(
011
): E - 4(
100
): H - 5(
101
): L - 6(
110
): 메모리. 주소 지정에는 H 및 L 레지스터가 사용된다. - 7(
111
): A - 16비트 레지스터[2]: BC, DE, HL, SP, PC
- 0(
00
): B-C - 1(
01
): D-E - 2(
10
): H-L - 3(
11
): SP - PC
===# 명령어 #===
8진수 코드 | Mnemonic | 설명 | ||||||||
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | |||
데이터 이동 명령어 | ||||||||||
1DS | MOV r1, r2 | 0 | 1 | D | D | D | S | S | S | |
1D6 | MOV r, M | 0 | 1 | D | D | D | 1 | 1 | 0 | |
16S | MOV M, r | 0 | 1 | 1 | 1 | 0 | S | S | S | |
0D6 --- | MVI r, data | 0 | 0 | D | D | D | 1 | 1 | 0 | |
data | ||||||||||
066 --- | MVI M, data | 0 | 0 | 1 | 1 | 0 | 1 | 1 | 0 | |
data | ||||||||||
0-1 --- --- | LXI rp, data16 | 0 | 0 | R | P | 0 | 0 | 0 | 1 | |
low-order data | ||||||||||
high-order data | ||||||||||
072 --- --- | LDA addr | 0 | 0 | 1 | 1 | 1 | 0 | 1 | 0 | |
low-order addr | ||||||||||
high-order addr | ||||||||||
062 --- --- | STA addr | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 0 | |
low-order addr | ||||||||||
high-order addr | ||||||||||
052 --- --- | LHLD addr | 0 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | |
low-order addr | ||||||||||
high-order addr | ||||||||||
042 --- --- | SHLD addr | 0 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | |
low-order addr | ||||||||||
high-order addr | ||||||||||
0-2 --- --- | LDAX addr | 0 | 0 | R | P | 1 | 0 | 1 | 0 | rp=B(00), rp=D(01) 만 지정 가능 |
low-order addr | ||||||||||
high-order addr | ||||||||||
0-2 --- --- | STAX addr | 0 | 0 | R | P | 0 | 0 | 1 | 0 | rp=B(00), rp=D(01) 만 지정 가능 |
low-order addr | ||||||||||
high-order addr | ||||||||||
사칙연산 명령어 | ||||||||||
논리연산 명령어 | ||||||||||
분기 명령어 | ||||||||||
스택, 입출력, 제어 명령어 |
===# 8008 명령어와의 대응관계 #===
8008 명령어 | 클럭 수 | 8080 명령어 | 클럭 수 | ||
Mnemonic | 바이트 수 | Mnemonic | 바이트 수 | ||
Lr1r2 | 1 | 10 | MOV r1, r2 | 1 | 5 |
LrM | 1 | 16 | MOV r, M | 1 | 7 |
LMr | 1 | 14 | MOV M, r | 1 | 7 |
LrI | 2 | 16 | MVI r, data | 2 | 7 |
LMI | 2 | 18 | MVI M, data | 2 | 10 |
INr/DCr | 1 | 10 | INR/DCR r | 1 | 5 |
(ALU)r | 1 | 10 | (ALU) r | 1 | 4 |
(ALU)M | 1 | 16 | (ALU) M | 1 | 7 |
(ALU)I | 2 | 16 | (ALU)I | 2 | 7 |
RLC/RRC/RAL/RAR | 1 | 10 | RLC/RRC/RAL/RAR | 1 | 4 |
JMP | 3 | 22 | JMP addr | 3 | 10 |
JFc/JTc | 3 | 18-22 | Jcc addr | 3 | 10 |
CAL | 3 | 22 | CALL addr | 3 | 17 |
CFc/CTc | 3 | 18-22 | Ccc addr | 3 | 11-17 |
RET | 1 | 10 | RET | 1 | 10 |
RFc/RTc | 1 | 6-10 | Rcc addr | 1 | 5-11 |
RES | 1 | 10 | RST n | 1 | 11 |
INP | 1 | 16 | IN port | 2 | 10 |
OUT | 1 | 12 | OUT port | 2 | 10 |
HLT | 1 | 8 | HLT | 1 | 7 |
4. 기타
- CP/M 운영체제는 인텔 8080용으로 프로그래밍 되었지만 실제로는 Z80을 탑재한 컴퓨터에서 더 많이 사용되었다.
- 인텔 8080의 후속작이 Z80이라고 하는 이야기도 있는데 틀린 말이다. 일단 Z80과 인텔 8080은 주요 개발자들이 같아 구조면에서 상당히 유사하지만 다른 회사에서 만들었을 뿐 아니라, Z80은 인텔 8080을 기반으로 하는 개선된 프로세서이고 레지스터나 명령어 세트에서 확장이 많이 되었기 때문에 인텔 8080의 프로그램을 Z80에서 돌릴수는 있지만 그 역으로는 어렵다.
- 유명한 알테어에 쓰였다.
- 세계 최초로 마이크로프로세서를 사용한 아케이드 게임 기판에 인텔 8080이 사용되기도 했는데, 1975년에 출시된 타이토 건 파이트를 미드웨이에서 북미용으로 이식한 것이 그것이다. 원래 타이토에서 TTL(Transistor-Transistor Logic) 방식으로 게임을 만들었으나, 미드웨이가 타이토와 계약을 맺고 북미 지방에 발매하면서 마이크로프로세서 기반 기판으로 이식했다. 타이토가 이 기판을 복제해 스페이스 인베이더를 제작하기도 했다.
- 시마 마사토시는 인텔 8080 회로 좌측 하단에 시마 가문 문양을 새겨놓았다.
- AMD가 이 CPU를 리버스 엔지니어링해 Am9080을 만들었다.
- 게임보이의 CPU는 이 CPU를 기반으로 Z80의 명령을 추가한 커스텀 CPU이다.