| <bgcolor=#96834a> 명령어 집합 | |
| CISC | x86 (AMD64● · IA-32● · IA-16) · M68K · MC68xx · MOS 65xx · Z80 · 8080 · 8051 System/360 · z/Architecture · PDP-11 · VAX |
| RISC | Arm (A64 · A32 · T32) · RISC-V● · MIPS● · DEC Alpha● · Power ISA IBM Power · PowerPC · CELL-BE LoongArch · OpenRISC · PA-RISC · SPARC SuperH · Xtensa · AVR AVR32 |
| VLIW EPIC | E2K · IA-64 · Crusoe |
| 펜티엄 이전의 인텔 CPU | ||||||||||||
| 아키텍처 분류 | 제품 | |||||||||||
| x86 이전 (4비트) | 4004 (1971) | 4040 (1974) | ||||||||||
| x86 이전 (8비트) | 8008 (1972) | 8080 (1974) | 8085 (1977) | |||||||||
| x86 (16비트, IA-16) | 8086 (1978) 8088 (1979) | 80186/80188 (1982) | 80286 (1982) | |||||||||
| x86 (32비트, IA-32) | 80386 (1985) | 80486 (1989) | ||||||||||
| 기타 | iAPX432(8800) | i860 | i960 | |||||||||
| 관련 문서 | 인텔 펜티엄 시리즈 | 인텔 코어 시리즈 | 인텔 코어2 시리즈 | |||||||||
| 인텔 코어i 시리즈 | 인텔 코어 Ultra 시리즈 | |||||||||||
1. 개요
1974년 4월 인텔에서 출시한 8비트 마이크로프로세서. 2년전 출시된 인텔 8008의 개선판이며 바이너리 호환성은 없지만 어셈블리어 수준에서 호환성을 가진다.8008을 기반으로 하고 있지만 내부 구조에서 개선이 이루어졌다. 가장 큰 변화는 함수 호출시 복귀 주소를 유한한 하드웨어 호출 스택 대신 스택 포인터를 이용해서 메모리에 저장한다는 것이다. 이로 인해 8레벨 이상의 함수 호출이 가능해졌다. 이외에도 여러 가지 명령어와 레지스터의 용도를 확장했다. 또한 주소 공간도 14비트(16KB)에서 16비트(64KB)로 확장되었다.
인텔 8008보다 개선된 6μm NMOS 공정으로 생산되었으며, 4,500개의 트랜지스터로 구성되어 있다. 또한 18핀 패키지에서 40핀 패키지로 변경되었다.
인텔 8080은 컴퓨터 역사에서 가장 중요한 마이크로프로세서중의 하나이다. Z80만 하더라도 인텔 8080을 기반으로 하고 있으며[1] 당시 가장 널리 사용했던 8비트 운영 체제, CP/M도 원래는 인텔 8080 프로세서를 위한 것이었다.
2. 제원
| 클럭 주파수 | 2~3.125 MHz |
| 데이터 폭 | 8비트 |
| 주소 폭 | 16비트 |
| 지원 명령어 | 72개 |
| 트랜지스터 수 | 4,500개 |
| 제조 공정 | 6 μm |
3. 역사
1971년 인텔은 유럽 시장을 돌며 4004/8008의 영업을 하던 과정에서 8008 칩의 문제점에 대한 많은 지적을 받게 되었고, 이를 접한 인텔의 엔지니어 페데리코 파진(Federico Faggin)은 해당 문제점들을 모두 해결 가능한 것으로 판단해 8008을 전면적으로 보완한 새로운 8비트 프로세서를 기획하게 된다.초창기 인텔의 경영진은 예상 판매 실적 대비 큰 부담, 메모리 고객들과의 잠재 경쟁 문제로 꺼렸으나, 4004가 기존에 상정하지 않던 컨트롤러 시장에서 괜찮은 판매 실적을 올리게 되고 8비트 시장에 다른 반도체 업체들이 진출할 조짐을 보이며 마지못해 8080의 개발을 승인하게 되었다.
1972년 인텔의 개발팀에서는 1969년부터 인텔 4004 설계를 도운 시마 마사토시(嶋正利)의 영입을 추진하였고, 결국 시마 마사토시가 당시 재직중이었던 리코를 떠나 같은 해 11월 인텔에 합류하여 8080 설계를 주도했다. 페데리코 파진은 그를 지도하면서 설계를 도왔다.#
1974년 4월 8080이 개당 360달러로 출시되었으며, 성능은 8008의 약 10배였다. 발표 자체는 모토로라 6800이 근소하게 빨랐으나, 실제 물량이 풀린 시점이 늦었기 때문에 8080이 초기 8비트 시장을 사실상 독점하였다.
그러나 8080의 설계자들이 경영진과의 갈등으로 인텔을 떠나 자일로그를 설립하였고, 이후 MOS 6502 및 Z80이 8비트 시장을 빠르게 잠식하며 8080의 시대는 막을 내리게 되었다.
4. 아키텍처
4.1. 레지스터
- 8비트 레지스터: B, C, D, E, H, L, F, A (8008과 동일)
- 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
[1] 자일로그의 설립자들이면서 Z80의 개발 주체가 8080의 설계 주역인 페데리코 파진과 시마 마사토시이기에 두 CPU는 닮을 수밖에 없다.[2] B-C, D-E, H-L은 8비트 레지스터 두개를 하나(앞에 표기)는 상위 8비트 하나(뒤에 표기)는 하위 8비트로 하여 16비트로 만든 것이다.
===# 명령어 #===
| 8진수 | 000 | 001 | 002 | 003 | 004 | 005 | 006 | 007 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 |
| 000 | NOP | LXI | STAX | INX | INR | DCR | MVI r, | RLC | MOV r1, r2 | MOV r, M | MOV r1, r2 | |||||
| 020 | *NOP | RAL | ||||||||||||||
| 040 | SHLD | DAA | ||||||||||||||
| 060 | STA | MVI M, | STC | MOV M, r | HLT | MOV M, r | ||||||||||
| 010 | DAD | LDAX | DCX | MVI r, | RRC | MOV r1, r2 | MOV r, M | MOV r1, r2 | ||||||||
| 030 | RAR | |||||||||||||||
| 050 | LHLD | CMA | ||||||||||||||
| 070 | LDA | CMC | ||||||||||||||
| 200 | ADD | Rcc | POP rp | Jcc | JMP | Ccc | PUSH rp | ADI | RST | |||||||
| 220 | SUB | OUT | SUI | |||||||||||||
| 240 | ANA | XTHL | ANI | |||||||||||||
| 260 | ORA | DI | ORI | |||||||||||||
| 210 | ADC | RET | *JMP | CALL | ACI | |||||||||||
| 230 | SBB | *RET | IN | *CALL | SBI | |||||||||||
| 250 | XRA | PCHL | XCHG | *CALL | XRI | |||||||||||
| 270 | CMP | SPHL | EI | *CALL | CPI | |||||||||||
256개 명령 코드 중 12개는 정의되지 않은 코드로, *로 표시하였다. 8080에서 해당 명령어는 디코더 구조(PLA)의 특성상 다른 명령어로 인식되며, Z80에서는 확장 명령어에 활용되었다.
| 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 | 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.2. 버스
5. 평가
6. 기타
- CP/M 운영체제는 인텔 8080용으로 프로그래밍 되었지만 실제로는 Z80을 탑재한 컴퓨터에서 더 많이 사용되었다.
- 인텔 8080의 후속작이 Z80이라고 하는 이야기도 있는데 틀린 말이다. 일단 Z80과 인텔 8080은 주요 개발자들이 같아 구조면에서 상당히 유사하지만 다른 회사에서 만들었을 뿐 아니라, Z80은 인텔 8080을 기반으로 하는 개선된 프로세서이고 레지스터나 명령어 세트에서 확장이 많이 되었기 때문에 인텔 8080의 프로그램을 Z80에서 돌릴수는 있지만 그 역으로는 어렵다.
- 유명한 알테어에 쓰였다.
- 세계 최초로 마이크로프로세서를 사용한 아케이드 게임 기판에 인텔 8080이 사용되기도 했는데, 1975년에 출시된 타이토 건 파이트를 미드웨이에서 북미용으로 이식한 것이 그것이다. 원래 타이토에서 TTL 회로로 게임을 만들었으나, 미드웨이가 타이토와 계약을 맺고 북미 지방에 발매하면서 마이크로프로세서 기반 기판으로 이식했다. 타이토가 이 기판을 복제해 스페이스 인베이더를 제작하기도 했다.
- 시마 마사토시는 인텔 8080 회로 좌측 하단에 시마 가문 문양을 새겨놓았다.
- AMD가 이 CPU를 리버스 엔지니어링해 Am9080을 만들었다.
- 게임보이의 CPU는 이 CPU를 기반으로 Z80의 명령을 추가한 커스텀 CPU이다.