인텔 8080

인텔 8080(Intel 8080)은 인텔의 두 번째 8비트 마이크로프로세서이다. 1974년 4월에 출시된 8080은 이전 인텔 8008 마이크로프로세서의 향상된 후속 제품이지만, 이진 호환성은 없다. Electronic News was a weekly trade newspaper. The same advertisement appeared in the May 2, 1974, issue of Electronics magazine. 원래 계산기, 금전등록기, 컴퓨터 터미널, 산업용 로봇과 같은 임베디드 시스템에 사용될 예정이었지만,The 8008 (1972) was used for interpolation and control in ASEA's (now ABB) first line of general industrial robots, introduced October 1973. 강력한 성능으로 인해 곧 더 넓은 범위의 시스템에 채택되어 궁극적으로 마이크로컴퓨터 산업을 시작하는 데 기여했다.

8080의 성공에는 몇 가지 핵심 설계 선택이 기여했다. 40핀 패키지는 8008의 18핀 설계에 비해 인터페이스를 단순화하여 보다 효율적인 데이터 버스를 가능하게 했다. NMOS 기술로의 전환은 8008의 PMOS보다 더 빠른 트랜지스터 속도를 제공했으며, TTL 호환성을 통해 인터페이스를 단순화했다. 확장된 명령어 집합과 전체 16비트 주소 버스는 8080이 최대 64 KB의 메모리에 접근할 수 있도록 하여 이전 모델의 용량을 4배로 늘렸다. 더 넓은 범위의 지원 칩 선택은 기능성을 더욱 향상시켰다. 이러한 개선 사항 중 상당수는 디자이너 페데리코 파진과 인텔의 다른 직원들이 8008 아키텍처의 단점에 대해 고객 피드백을 들으면서 비롯되었다.

8080은 앨테어 8800 및 후속 S-100 버스 시스템과 같은 초기 개인용 컴퓨터에 사용되었으며, CP/M 운영 체제의 원래 대상 CPU 역할을 했다. 또한 나중에 어셈블리어가 8080의 어셈블리어와 매우 유사하게 설계되어 많은 명령어를 서로 직접 매핑할 수 있도록 설계된 X86 아키텍처에도 직접적인 영향을 미쳤다.

원래 클럭 속도 2 MHz로 작동했으며, 일반적인 명령어는 4~11 클럭 사이클이 걸려 8080은 수십만 초당 명령 수를 실행할 수 있었다. 나중에 8080A-1 및 8080A-2라는 두 가지 더 빠른 변형이 각각 3.125 MHz 및 2.63 MHz의 향상된 클럭 속도를 제공했다. 대부분의 응용 프로그램에서 프로세서는 타이밍 및 데이터 흐름을 관리하기 위해 8224 클럭 생성기/드라이버 및 8228 버스 컨트롤러의 두 지원 칩과 쌍을 이루었다.

역사
마이크로프로세서 고객들은 단일 주소 지정 모드, 낮은 클럭 속도, 낮은 핀 수, 작은 온칩 스택과 같은 8008의 한계로 인해 소프트웨어의 규모와 복잡성이 제한되어 8008을 채택하는 것을 꺼렸다. 8080에 대한 몇 가지 제안된 설계는 8008에 스택 명령어를 추가하는 것부터 이전 모든 인텔 아키텍처와 완전히 분리되는 것까지 다양했다. 최종 설계는 이러한 제안들 사이의 절충안이었다.

8080의 구상은 1971년 여름, 인텔이 4004 개발을 완료하고 8008 작업을 계속하던 중에 시작되었다. "칩 위의 CPU"에 대한 소문이 돌자 인텔은 모든 종류의 고객으로부터 마이크로프로세서에 대한 관심을 받기 시작했다. 동시에 4004의 설계를 이끌었고 8080의 주요 설계자가 된 페데리코 파진은 앞서 언급한 두 마이크로프로세서에 대한 기술 세미나를 개최하고 고객을 방문했다. 그는 고객들이 이들 마이크로프로세서의 아키텍처와 성능, 특히 8008의 속도(0.5 MHz)가 "충분하지 않다"고 불평하는 것을 발견했다.

파진은 나중에 1972년 봄 8008 개발이 마무리될 무렵 인텔 경영진에게 칩을 제안하고 구현을 추진했다. 그러나 놀랍고도 실망스럽게도 인텔은 이 프로젝트를 승인하지 않았다. 파진은 인텔이 4004와 8008에 대한 시장 반응을 먼저 보고 싶어했다고 말했고, 다른 사람들은 인텔이 최신 세대 메모리 칩을 출시하는 데 어려움을 겪고 있었고 여기에 집중하고 싶어했다고 지적했다. 그 결과 인텔은 그 해 가을까지 프로젝트를 승인하지 않았다. 파진은 1972년 11월 일본에서 4004의 논리 설계를 함께 도왔던 시마 마사토시를 고용했다. 시마는 파진이 4000 제품군과 8008을 위해 만든 실리콘 게이트 무작위 논리 설계 방법론을 사용하여 파진의 지시 아래 상세 설계를 수행했다.

8080은 더 많은 고객을 위한 범용 마이크로프로세서로 명시적으로 설계되었다. 개발 노력의 대부분은 8008의 보조 칩 기능을 하나의 패키지로 통합하는 데 집중되었다. 8080은 8008과 이진 호환성이 없으며, 대신 새로운 소프트웨어가 8008과 동일한 제한을 받지 않도록 트랜스파일러를 통해 소스 호환성을 선택하기로 개발 초기에 결정되었다. 동일한 이유와 스택 기반 루틴 및 인터럽트 기능을 확장하기 위해 스택은 외부 메모리로 이동되었다.

메인프레임 시스템 프로그래머들이 범용 레지스터를 전문적으로 사용하는 것을 확인한 파진은 시마와 스탠리 마조르와 함께 8080의 레지스터를 전문화하고 레지스터 쌍이 다른 용도를 가지도록 결정했다. 이것은 또한 엔지니어들이 다른 목적으로 트랜지스터를 보다 효과적으로 사용할 수 있도록 했다.

시마는 1973년 8월에 레이아웃을 완성했다. 칩 생산은 그 해 12월에 시작되었다. NMOS 논리 제조법 개발 이후, 8080의 프로토타입은 1974년 1월에 완성되었다. 이 프로토타입은 표준 TTL 장치로 구동할 때 높은 전류가 좁은 라인으로 흘러 접지 전압이 증가하는 결함이 있었다. 인텔은 시마가 프로토타입을 특성화하기 전에 이미 영업 부서의 지시로 40,000개의 8080 유닛을 생산했다. 몇 가지 일반적인 막판 문제를 해결한 후 인텔은 1974년 3월에 제품을 출시했다. 한 달 후, 저전력 쇼트키 TTL (LS TTL) 장치가 필요하다고 발표되었다. 8080A는 이 결함을 수정했다.

인텔은 컴파일된 PL/M 프로그램을 실행하기 위해 INTERP/80이라는 8080용 명령어 집합 시뮬레이터를 제공했다. 이 시뮬레이터는 게리 킬달이 인텔의 컨설턴트로 일하면서 포트란 IV로 작성되었다. (2 pages)

8080에 대한 특허는 페데리코 파진, 시마 마사토시, 스탠리 마조르 세 사람의 이름으로 된 단 하나뿐이다.

설명

프로그래밍 모델
+ 인텔 8080 레지스터 15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00 (비트 위치) 주요 레지스터  A 플래그 Program Status Word B C B D E D H L H (간접 주소) 인덱스 레지스터  SP Stack Pointer 프로그램 카운터  PC Program Counter 상태 레지스터   S Z 0 AC 0 P 1 C 플래그

인텔 8080은 8008의 후속작이다. 8008과 동일한 기본 명령어 집합과 프로세서 레지스터 모델을 사용하지만, 이전 모델과 소스 코드 호환 또는 이진 코드 호환이 되지 않는다. 8008의 모든 명령어는 8080에 상응하는 명령어가 있다. 8080은 명령어 집합에 16비트 연산을 추가했다. 8008은 14비트 메모리 공간에 간접적으로 접근하기 위해 HL 레지스터 쌍을 사용해야 했지만, 8080은 전체 16비트 메모리 공간에 직접 접근할 수 있도록 주소 지정 모드를 추가했다. 8008의 내부 7레벨 푸시다운 콜 스택은 전용 16비트 스택 포인터(SP) 레지스터로 대체되었다. 8080의 40핀 DIP 패키지는 16비트 주소 버스와 8비트 데이터 버스를 제공하여 64 KiB (216 바이트) 메모리에 접근할 수 있다.

레지스터
프로세서에는 7개의 8비트 프로세서 레지스터 (A, B, C, D, E, H, L)가 있으며, A는 기본 8비트 누산기이다. 나머지 6개의 레지스터는 특정 명령어에 따라 개별 8비트 레지스터 또는 3개의 16비트 레지스터 쌍(BC, DE, HL, 인텔 문서에서는 B, D, H로 지칭)으로 사용될 수 있다. 일부 명령어는 HL 레지스터 쌍을 (제한적인) 16비트 누산기로 사용할 수 있도록 한다. HL이 가리키는 역참조된 메모리 위치를 참조하는 의사 레지스터 M은 다른 레지스터가 사용될 수 있는 거의 모든 곳에서 사용될 수 있다. 8080에는 8008의 내부 스택을 대체하는 16비트 스택 포인터와 16비트 프로그램 카운터가 있다.

플래그
프로세서는 산술 및 논리 명령어의 결과를 나타내는 내부 플래그 비트 (상태 레지스터)를 유지한다. 특정 명령어만 플래그에 영향을 미친다. 플래그는 다음과 같다.
 부호 (S): 결과가 음수이면 설정된다.
 제로 (Z): 결과가 0이면 설정된다.
 패리티 (P): 결과에 1 비트의 수가 짝수이면 설정된다.
 캐리 (C): 마지막 덧셈 연산에서 올림이 발생했거나 마지막 뺄셈 연산에서 빌림이 필요하면 설정된다.
 보조 캐리 (AC 또는 H): 이진화 십진법 (BCD) 산술에 사용된다.

캐리 비트는 특정 명령어로 설정하거나 보수화할 수 있다. 조건 분기 명령어는 다양한 플래그 상태 비트를 테스트한다. 누산기와 플래그를 합쳐 PSW 또는 프로그램 상태 워드라고 부른다. PSW는 스택으로 푸시하거나 스택에서 팝할 수 있다.

명령어
다른 많은 8비트 프로세서와 마찬가지로, 모든 명령어는 단순화를 위해 1바이트로 인코딩된다(레지스터 번호 포함, 즉시 데이터 제외). 일부 명령어 뒤에는 즉시 피연산자, 메모리 주소 또는 포트 번호가 될 수 있는 1바이트 또는 2바이트의 데이터가 올 수 있다. 더 고급 프로세서와 마찬가지로 다단계 프로시저 호출 및 반환을 위한 자동 CALL 및 RET 명령어(점프와 같이 조건부로 실행될 수도 있음)와 머신 스택에 16비트 레지스터 쌍을 저장하고 복원하는 명령어가 있다. 서브루틴을 위한 8개의 1바이트 호출 명령어()는 고정 주소 00h, 08h, 10h, ..., 38h에 존재한다. 이 명령어들은 해당 인터럽트 서비스 루틴을 호출하기 위해 외부 하드웨어에 의해 제공될 의도로 만들어졌지만, 종종 빠른 시스템 호출로도 사용된다. 가장 느리게 실행되는 명령어는 스택 포인터가 가리키는 주소에 저장된 값과 HL 레지스터 쌍을 교환하는 데 사용되는 이다.

8비트 명령어
두 피연산자를 사용하는 모든 8비트 연산은 8비트 누산기 (A 레지스터)에서만 수행할 수 있다. 다른 피연산자는 즉시 값, 다른 8비트 레지스터 또는 16비트 레지스터 쌍 HL이 주소 지정하는 메모리 바이트일 수 있다. 증가 및 감소는 모든 8비트 레지스터 또는 HL이 주소 지정하는 메모리 바이트에서 수행할 수 있다. 직접 복사는 두 8비트 레지스터 사이와 모든 8비트 레지스터와 HL이 주소 지정하는 메모리 바이트 사이에서 지원된다.  명령어의 규칙적인 인코딩(사용 가능한 opcode 공간의 1/4 사용)으로 인해 레지스터를 자체 복사하는 중복 코드( 등)가 거의 사용되지 않지만, 지연에는 유용하다. 그러나 에 대한 체계적인 opcode는 대신 정지() 명령어를 인코딩하는 데 사용되며, 외부 리셋이나 인터럽트가 발생할 때까지 실행을 중지한다.

16비트 연산
8080은 일반적으로 8비트 프로세서이지만, 16비트 연산을 수행하는 제한된 기능을 가지고 있다. 세 가지 16비트 레지스터 쌍(BC, DE 또는 HL, 인텔 문서에서는 B, D, H로 지칭) 또는 SP 중 어느 것이든 즉시 16비트 값으로 로드될 수 있고( 사용), 증가 또는 감소될 수 있으며( 및  사용), HL에 추가될 수 있다( 사용). HL을 자체에 더함으로써 하나의 명령어로 16비트 산술 좌측 시프트와 동일한 결과를 얻을 수 있다. 플래그에 영향을 미치는 유일한 16비트 명령어는 24비트 또는 32비트 산술 (또는 그 이상)을 프로그래밍하여 부동소수점을 구현하는 데 필요한 CY(캐리) 플래그를 설정하는 이다. BC, DE, HL 또는 PSW는  및 를 사용하여 스택으로 복사하거나 스택에서 복사할 수 있다. 스택 프레임은  및 을 사용하여 할당할 수 있다. 계산된 포인터로 분기하는 것은 로 실행할 수 있다. 는 직접 주소 지정 메모리에서 HL을 로드하고 는 마찬가지로 HL을 저장한다. 8080 instruction encoding . ClassicCMP.org. Retrieved on October 23, 2011. 명령어는 HL과 DE 레지스터 쌍의 값을 교환한다. 은 스택에 푸시된 마지막 항목을 HL과 교환한다. 이 16비트 연산 중 어느 것도 이전 인텔 8008에서 지원되지 않았다.

명령어 집합
 Opcode  Operands  니모닉  클럭  설명 7  6  5  4  3  2  1  0  b2  b3 0  0  0  0  0  0  0  0  —  —  NOP  4  아무것도 안함 0  0 RP  0  0  0  1  datlo  dathi  LXI rp,data  10  RP ← data 0  0 RP  0  0  1  0  —  —  STAX rp  7  (RP) ← A [BC 또는 DE만 해당] 0  0 RP  0  0  1  1  —  —  INX rp  5  RP ← RP + 1 0  0 DDD  1  0  0  —  —  INR ddd  5/10  DDD ← DDD + 1 0  0 DDD  1  0  1  —  —  DCR ddd  5/10  DDD ← DDD - 1 0  0 DDD  1  1  0  data  —  MVI ddd,data  7/10  DDD ← data 0  0 RP  1  0  0  1  —  —  DAD rp  10  HL ← HL + RP 0  0 RP  1  0  1  0  —  —  LDAX rp  7  A ← (RP) [BC 또는 DE만 해당] 0  0 RP  1  0  1  1  —  —  DCX rp  5  RP ← RP - 1 0  0  0  0  0  1  1  1  —  —  RLC  4  A1-7 ← A0-6; A0 ← Cy ← A7 0  0  0  0  1  1  1  1  —  —  RRC  4  A0-6 ← A1-7; A7 ← Cy ← A0 0  0  0  1  0  1  1  1  —  —  RAL  4  A1-7 ← A0-6; Cy ← A7; A0 ← Cy 0  0  0  1  1  1  1  1  —  —  RAR  4  A0-6 ← A1-7; Cy ← A0; A7 ← Cy 0  0  1  0  0  0  1  0  addlo  addhi  SHLD add  16  (add) ← HL 0  0  1  0  0  1  1  1  —  —  DAA  4  If A0-3 > 9 OR AC = 1 then A ← A + 6;
then if A4-7 > 9 OR Cy = 1 then A ← A + 0x60 0  0  1  0  1  0  1  0  addlo  addhi  LHLD add  16  HL ← (add) 0  0  1  0  1  1  1  1  —  —  CMA  4  A ← ¬A 0  0  1  1  0  0  1  0  addlo  addhi  STA add  13  (add) ← A 0  0  1  1  0  1  1  1  —  —  STC  4  Cy ← 1 0  0  1  1  1  0  1  0  addlo  addhi  LDA add  13  A ← (add) 0  0  1  1  1  1  1  1  —  —  CMC  4  Cy ← ¬Cy 0  1 DDD SSS  —  —  MOV ddd,sss 5/7  DDD ← SSS 0  1  1  1  0  1 1  0  —  —  HLT  7  정지 1  0 ALU SSS  —  —  ADD ADC SUB SBB ANA XRA ORA CMP sss  4/7  A ← A [ALU 연산] SSS 1  1 CC  0  0  0  —  —  Rcc (RET 조건부)  5/11  cc가 참이면 PC ← (SP), SP ← SP + 2 1  1 RP  0  0  0  1  —  —  POP rp  10  RP ← (SP), SP ← SP + 2 1  1 CC  0  1  0  addlo  addhi  Jcc add (JMP 조건부)  10  cc가 참이면 PC ← add 1  1  0  0  0  0  1  1  addlo  addhi  JMP add  10  PC ← add 1  1 CC  1  0  0  addlo  addhi  Ccc add (CALL 조건부)  11/17  cc가 참이면 SP ← SP - 2, (SP) ← PC, PC ← add 1  1 RP  0  1  0  1  —  —  PUSH rp  11  SP ← SP - 2, (SP) ← RP 1  1 ALU  1  1  0  data  —  ADI ACI SUI SBI ANI XRI ORI CPI data  7  A ← A [ALU 연산] data 1  1 N  1  1  1  —  —  RST n  11  SP ← SP - 2, (SP) ← PC, PC ← N x 8 1  1  0  0  1  0  0  1  —  —  RET  10  PC ← (SP), SP ← SP + 2 1  1  0  0  1  1  0  1  addlo  addhi  CALL add  17  SP ← SP - 2, (SP) ← PC, PC ← add 1  1  0  1  0  0  1  1  port  —  OUT port  10  Port ← A 1  1  0  1  1  0  1  1  port  —  IN port  10  A ← Port 1  1  1  0  0  0  1  1  —  —  XTHL  18  HL ↔ (SP) 1  1  1  0  1  0  0  1  —  —  PCHL  5  PC ← HL 1  1  1  0  1  0  1  1  —  —  XCHG  4  HL ↔ DE 1  1  1  1 0  0  1  1  —  —  DI  4  인터럽트 비활성화 1  1  1  1  1  0  0  1  —  —  SPHL  5  SP ← HL 1  1  1  1  1  0  1  1  —  —  EI  4  인터럽트 활성화 7  6  5  4  3  2  1  0  b2  b3  니모닉  클럭  설명SSS DDD 2  1  0 CC ALURP B  0  0  0 NZ ADD ADI (A ← A + arg) BC C  0  0  1ZADC ACI (A ← A + arg + Cy) DE D  0  1  0NC SUB SUI (A ← A - arg) HL E  0  1  1C SBB SBI (A ← A - arg - Cy) SP or PSW H  1  0  0PO ANA ANI (A ← A ∧ arg) L  1  0  1PE XRA XRI (A ← A ⊻ arg) M  1  1  0P ORA ORI (A ← A ∨ arg) A  1  1  1NCMP CPI (A - arg)SSS DDD 2  1  0 CC ALU

입출력 방식

입출력 포트 공간
8080은 포트 주소를 피연산자로 사용하는 전용 I/O 명령어를 통해 256개의 I/O 포트를 지원한다.Note: Some Intel datasheets from the 1970s advertise 512 I/O ports, because they count input and output ports separately. 이 I/O 매핑 방식은 프로세서의 제한된 주소 공간을 확보한다는 점에서 장점으로 여겨진다. 많은 CPU 아키텍처는 대신 메모리 맵 I/O (MMIO)를 사용하는데, 이는 RAM과 주변 장치 칩 모두에 공통 주소 공간을 사용하는 방식이다. 이는 전용 I/O 명령어가 필요 없게 하지만, 이러한 설계의 단점은 주변 장치가 메모리보다 느린 경우가 많으므로 대기 상태를 삽입하기 위해 특별한 하드웨어가 필요할 수 있다는 점이다. 그러나 일부 간단한 8080 컴퓨터에서는 I/O가 메모리 셀처럼 "메모리 맵"으로 주소 지정되어 I/O 명령어를 사용하지 않는다. I/O 주소 지정은 프로세서가 8비트 포트 주소를 하위 및 상위 주소 바이트 모두에 출력한다는 사실을 이용할 수도 있다 (예: 는 16비트 주소 버스에 주소 0505h를 넣는다). 유사한 I/O 포트 방식은 역호환되는 자일로그 Z80 및 인텔 8085, 그리고 밀접하게 관련된 X86 마이크로프로세서 계열에서 사용된다.

별도 스택 공간
프로세서 상태 워드(아래 참조)의 비트 중 하나는 프로세서가 스택에서 데이터에 접근하고 있음을 나타낸다. 이 신호를 사용하여 별도의 스택 메모리 공간을 구현할 수 있다. 이 기능은 거의 사용되지 않는다.

상태 워드
더 고급 시스템의 경우, 각 머신 사이클의 시작 부분에서 프로세서는 8비트 상태 워드를 데이터 버스에 놓는다. 이 바이트에는 메모리 또는 I/O 포트에 접근하는지 여부와 인터럽트를 처리해야 하는지 여부를 결정하는 플래그가 포함되어 있다.

인터럽트 시스템 상태(활성화 또는 비활성화)도 별도의 핀으로 출력된다. 인터럽트가 사용되지 않는 간단한 시스템의 경우, 이 핀이 추가 단일 비트 출력 포트로 사용되는 경우도 있다 (예: 소련에서 제작된 인기 있는 Radio-86RK 컴퓨터).

인터럽트
하드웨어 인터럽트는 인터럽트 요청(INT) 핀을 활성화하여 시작된다. 다음 Opcode Fetch Cycle (M1)에서 인터럽트는 INTA 상태 코드로 승인된다. 이때, 명령어는 외부 하드웨어에 의해 데이터 버스에 "끼워넣어진다"(인텔의 표현). 이것은 1바이트 RST 명령어일 수도 있고, 인텔 8259를 사용하는 경우 CALL 명령어일 수도 있다. 인터럽트는 EI 및 DI 명령어를 사용하여 활성화 및 비활성화할 수 있다. 인터럽트는 INTA 후에 비활성화되며, 인터럽트 서비스 루틴에 의해 명시적으로 다시 활성화되어야 한다. 8080은 논마스크 가능 인터럽트를 지원하지 않는다.

예시 코드
다음 8080/8085 어셈블리어 소스 코드는 주어진 크기의 데이터 블록을 한 위치에서 다른 위치로 복사하는 라는 서브루틴에 대한 것이다. 데이터 블록은 한 번에 한 바이트씩 복사되며, 데이터 이동 및 루핑 논리는 16비트 연산을 활용한다.

1000
1000
1000  78
1001  B1
1002  C8
1003  1A
1004  77
1005  13
1006  23
1007  0B
1008  78
1009  B1
100A  C2 03 10
100D  C9; memcpy --
; 메모리 블록을 한 위치에서 다른 위치로 복사한다.
;
; 진입 레지스터
;       BC - 복사할 바이트 수
;       DE - 원본 데이터 블록의 주소
;       HL - 대상 데이터 블록의 주소
;
; 반환 레지스터
;       BC - 제로

            org     1000h       ;1000h에서 시작
memcpy      public
            mov     a,b         ;레지스터 B를 레지스터 A로 복사한다.
            ora     c           ;A와 C의 비트 논리합을 레지스터 A에 저장한다.
            rz                  ;제로 플래그가 높게 설정되면 반환한다.
loop:       ldax    d           ;DE가 가리키는 주소에서 A를 로드한다.
            mov     m,a         ;HL이 가리키는 주소에 A를 저장한다.
            inx     d           ;DE를 증가시킨다.
            inx     h           ;HL을 증가시킨다.
            dcx     b           ;BC를 감소시킨다 (플래그에 영향을 주지 않음).
            mov     a,b         ;B를 A로 복사한다 (BC를 0과 비교하기 위해).
            ora     c           ;A = A | C (B와 C가 모두 0인가?)
            jnz     loop        ;제로 플래그가 설정되지 않으면 'loop:'로 점프한다.
            ret                 ;반환한다.

핀 사용
섬네일|300px|8080 핀 배열

주소 버스는 자체 16개 핀을 가지고 있으며, 데이터 버스는 멀티플렉싱 없이 사용할 수 있는 8개 핀을 가지고 있다. 두 개의 추가 핀(읽기 및 쓰기 신호)을 사용하여 매우 쉽게 간단한 마이크로프로세서 장치를 조립할 수 있다. 별도의 I/O 공간, 인터럽트 및 DMA만 프로세서 핀 신호를 디코드하기 위해 추가 칩이 필요하다. 그러나 핀 부하 용량이 제한되어; 간단한 컴퓨터도 종종 버스 증폭기가 필요하다.

프로세서에는 세 가지 전원(-5, +5, +12 V)과 두 개의 비겹침 고진폭 동기화 신호가 필요하다. 그러나 적어도 소련 후기 버전 КР580ВМ80А는 단일 +5 V 전원으로 작동할 수 있었으며, +12 V 핀은 +5 V에 연결되고 -5 V 핀은 접지에 연결되었다.

칩의 동봉된 문서에 있는 핀 배열 표는 핀을 다음과 같이 설명한다.

  핀 번호
  신호
  유형
  설명
   1  A10
  출력  주소 버스 10
   2  GND
  —  접지
   3  D4
  양방향
  양방향 데이터 버스. 프로세서는 SYNC^φ1 동안 "프로세서 상태"를 잠시 전송하여 프로세서가 현재 수행 중인 작업에 대한 정보를 제공한다.
 D0 (INTA) 인터럽트 명령 읽기. 인터럽트 신호에 대한 응답으로 프로세서는 이 플래그가 활성화된 상태에서 단일 임의 명령을 읽고 실행한다. 일반적으로 지원 칩은 서브루틴 호출 명령(CALL 또는 RST)을 제공하여 인터럽트 처리 코드로 제어를 전달한다.
 D1 (WO-) 낮은 true. 메모리에 쓰거나 포트로 출력한다.
 D2 (STACK) 스택 접근 (아마도 초기에는 별도의 스택 메모리 공간이 계획되었을 것이다)
 D3 (HLTA) 아무것도 하지 않고, HLT 명령어로 정지되었다.
 D4 (OUT) 출력 포트에 데이터를 쓴다.
 D5 (M1) 명령어의 첫 번째 바이트를 읽는다.
 D6 (IN) 입력 포트에서 데이터를 읽는다.
 D7 (MEMR) 메모리에서 데이터를 읽는다.
   4  D5
   5  D6
   6  D7
   7  D3
   8  D2
   9  D1
   10  D0
   11  −5 V
  —  −5 V 전원 공급 장치. 이 전원 공급 장치는 가장 먼저 연결되고 가장 나중에 분리되어야 한다. 그렇지 않으면 프로세서가 손상된다.
   12  RESET
  입력  리셋. 이 액티브 로우 신호는 주소 0000에 있는 명령어 실행을 강제한다. 다른 프로세서 레지스터의 내용은 수정되지 않는다.
   13  HOLD
  입력  직접 메모리 접근 요청. 프로세서는 데이터 및 주소 버스를 고임피던스("연결 해제") 상태로 전환하도록 요청받는다.
   14  INT
  입력  인터럽트 요청
   15  φ2
  입력  클럭 생성기 신호의 두 번째 위상
   16  INTE
  출력  프로세서에는 이 핀에 0 또는 1 레벨을 설정하는 두 가지 명령어가 있다. 이 핀은 일반적으로 인터럽트 제어에 사용되어야 한다. 그러나 간단한 컴퓨터에서는 다양한 목적으로 단일 비트 출력 포트로 사용되기도 했다.
   17  DBIN
  출력  읽기 (프로세서가 메모리 또는 입력 포트에서 읽는다)
   18  WR-
  출력  쓰기 (프로세서가 메모리 또는 출력 포트에 쓴다). 이 신호는 액티브 로우 출력이다.
   19  SYNC
  출력  액티브 레벨은 프로세서가 "상태 워드"를 데이터 버스에 놓았음을 나타낸다. 이 상태 워드의 다양한 비트는 별도의 주소 및 메모리 공간, 인터럽트 및 직접 메모리 접근을 지원하는 추가 정보를 제공한다. 이 신호는 프로세서 상태 워드를 데이터 버스에서 외부 레지스터(예: 8238  - 시스템 컨트롤러 및 버스 드라이버)에 쓰기 위해 사용되기 전에 추가 논리를 통과해야 한다.
   20  +5 V  —  +5 V 전원 공급 장치
   21  HLDA
  출력  직접 메모리 접근 확인. 프로세서는 데이터 및 주소 핀을 고임피던스 상태로 전환하여 다른 장치가 버스를 조작할 수 있도록 한다.
   22  φ1
  입력  클럭 생성기 신호의 첫 번째 위상
   23  READY
  입력  대기. 이 신호로 프로세서의 작업을 일시 중단할 수 있다. 하드웨어 기반 단계별 디버깅 모드를 지원하는 데도 사용된다.
   24  WAIT
  출력  대기 (프로세서가 대기 상태임을 나타낸다)
   25  A0
  출력
  주소 버스
   26  A1
   27  A2
   28  12 V
  —  +12 V 전원 공급 장치. 이 전원 공급 장치는 가장 나중에 연결되고 가장 먼저 분리되어야 한다.
   29  A3
  출력
  주소 버스; 요청에 따라 고임피던스 상태로 전환될 수 있다.
   30  A4
   31  A5
   32  A6
   33  A7
   34  A8
   35  A9
   36  A15
   37  A12
   38  A13
   39  A14
   40  A11


지원 칩
8080 성공의 핵심 요인은 직렬 통신, 카운터/타이밍, 입출력, 직접 메모리 접근, 프로그래머블 인터럽트 제어 등 다양한 기능을 제공하는 광범위한 지원 칩들이었다.
 8214 - 우선순위 인터럽트 제어 장치Intel Corporation, "8214 Priorty Interrupt Control Unit", Intel 8080 Microcomputer Systems User's Manual, September 1975, page 5-153  from bitsaver.org in PDF
 8224 – 클럭 생성기
 8228/8238 – 시스템 컨트롤러 및 버스 드라이버
 8251 – 통신 컨트롤러
 8253 – 주기적 타이머
 8255 – 프로그래머블 주변 장치 인터페이스
 8257 – DMA 컨트롤러
 8259 – 프로그래머블 인터럽트 컨트롤러

물리적 구현
8080 집적 회로는 NMOS 설계로, 비포화 강화형 트랜지스터를 부하로 사용했으며,풀업 저항과 유사 표준 TTL 호환 +5 V 외에 추가 전압 레벨(+12 V 및 −5 V)이 필요했다.

8080은 6 μm의 최소 특징 크기를 사용하는 실리콘 게이트 공정으로 제조되었다. 약 4,500개의 트랜지스터를 상호 연결하기 위해 단일 금속 층이 사용되었지만, 일부 상호 연결에 더 높은 전압이 필요한 높은 저항 폴리실리콘 층은 트랜지스터 게이트로 구현되었다. 다이 크기는 약 20 mm2이다.

상업적 영향

응용 및 후속작

8080은 MITS 앨테어 8800 컴퓨터, Processor Technology SOL-20 터미널 컴퓨터 및 IMSAI 8080 마이크로컴퓨터와 같은 많은 초기 마이크로컴퓨터에 사용되었으며, CP/M 운영 체제를 실행하는 기계의 기반을 형성했다 (나중에 거의 완벽하게 호환되고 더 유능한 자일로그 Z80 프로세서는 이를 활용하여 Z80과 CP/M이 1976년부터 1983년까지의 지배적인 CPU 및 OS 조합이 되었으며, X86과 도스가 10년 후 PC에서 그랬던 것처럼).

1979년, Z80 및 8085 프로세서가 출시된 후에도 8080 제조업체 5곳은 월 50만 대를 대당 약 3~4달러에 판매했다.

최초의 단일 보드 컴퓨터인 MYCRO-1과 dyna-micro/MMD-1은 인텔 8080을 기반으로 했다. 8080의 초기 사용 중 하나는 1970년대 후반 샌디에이고의 Cubic-Western Data가 전 세계 대중교통 시스템을 위해 맞춤 설계한 자동 요금 징수 시스템에서 이루어졌다. 8080의 초기 산업적 사용은 대량의 사용자 데이터를 릴-투-릴 테이프에서 받아 마이크로피쉬로 이미지화하는 DatagraphiX Auto-COM (Computer Output Microfiche) 제품 라인의 "뇌" 역할을 한 것이다. Auto-COM 장비에는 전체 자동 필름 절단, 처리, 세척 및 건조 서브 시스템도 포함된다.

몇몇 초기 비디오 아케이드 게임은 8080 마이크로프로세서를 중심으로 제작되었다. 마이크로프로세서를 통합한 최초의 상업용 아케이드 비디오 게임은 1975년 11월에 출시된 타이토의 개별 논리 Western Gun을 미드웨이 게임스가 8080 기반으로 재구현한 건 파이트였다.Steve L. Kent (2001), The ultimate history of video games: from Pong to Pokémon and beyond : the story behind the craze that touched our lives and changed the world, p. 64, Prima,  (모토로라 6800 프로세서를 통합한 핀볼 머신인 The Spirit of '76은 이미 한 달 전에 출시되었다.) 8080은 이후 미드웨이 아케이드 비디오 게임과 1978년 타이토의 스페이스 인베이더에 사용되었는데, 이는 모든 아케이드 비디오 게임 중 가장 성공적이고 잘 알려진 게임 중 하나였다.

자일로그는 8080과 기계어 명령어 집합이 호환되고 처음에는 8080과 동일한 어셈블리어(Z80)를 사용했지만, 법적인 이유로 자일로그는 Z80을 위해 구문적으로 다르지만 코드 호환되는 대체 어셈블리어를 개발했다. 인텔에서는 8080 이후 호환되고 전기적으로 더 우아한 8085가 나왔다.

이후 인텔은 어셈블리어 호환(하지만 이진 호환은 아님) 16비트 8086과 8/16비트 8088을 출시했고, 1981년 IBM이 새로운 PC에 8088을 채택했다. 나중에 NEC는 인텔 80186 명령어 집합 호환성을 가진 8088 클론인 NEC V20을 만들었는데, 이 또한 8080 에뮬레이션 모드를 지원한다. 이는 NEC의 V30 (유사하게 향상된 8086 클론)에서도 지원된다. 따라서 8080은 명령어 집합 (ISA)을 통해 컴퓨터 역사에 지속적인 영향을 미쳤다.

인텔 8080A와 호환되는 여러 프로세서가 동구권에서 제조되었다. 소련의 KR580VM80A (초기에는 КР580ИК80으로 표기), 폴란드 Unitra CEMI에서 만든 MCY7880MCY7880—a Polish-made clone of 8080 . CPU World. Retrieved on October 23, 2011., 체코슬로바키아 TESLA에서 만든 MHB8080ASoviet chips and their western analogs . CPU-world. Retrieved on October 23, 2011., 헝가리 텅스램/MEV에서 만든 8080APC, 그리고 부쿠레슈티 마이크로전자에서 만든 MMN8080이 있다.

 기준으로 8080은 Lansdale Semiconductors에서 여전히 생산되고 있다.

산업 변화

8080은 또한 컴퓨터가 만들어지는 방식을 변화시켰다. 8080이 출시되었을 때, 컴퓨터 시스템은 일반적으로 디지털 이큅먼트 코퍼레이션, 휴렛 팩커드, IBM과 같은 컴퓨터 제조업체에 의해 만들어졌다. 제조업체는 프로세서, 터미널, 컴파일러 및 운영 체제와 같은 시스템 소프트웨어를 포함한 전체 컴퓨터를 생산했다. 8080은 완전한 컴퓨터 시스템을 제외한 거의 모든 응용 프로그램을 위해 설계되었다. 휴렛 팩커드는 8080을 기반으로 HP 2640 시리즈의 스마트 터미널을 개발했다. HP 2647은 8080에서 프로그래밍 언어 베이직을 실행하는 터미널이다. 마이크로소프트의 창립 제품인 마이크로소프트 베이직은 원래 8080을 위해 프로그래밍되었다.

8080과 8085는 8080의 소스 코드 호환 확장(이진 호환은 아님)으로 설계된 8086을 탄생시켰다. 이 설계는 다시 X86 칩 제품군을 탄생시켰으며, 이는 여전히 인텔의 주요 프로세서 라인이다. 8080의 많은 핵심 기계 명령어와 개념은 널리 사용되는 X86 플랫폼에 남아 있다. 예를 들어 A, B, C, D로 명명된 레지스터와 조건 분기를 제어하는 데 사용되는 많은 플래그가 있다. 8080 어셈블리 코드는 여전히 X86 명령어로 직접 변환될 수 있다. 핵심 요소가 모두 여전히 존재하기 때문이다.

미국 특허
. 이 특허는 세 가지 청구항을 포함한다. 처음 두 청구항은 데이터 버스에 다중화된 상태 워드와 관련이 있다. 세 번째 청구항은 데이터 버스를 높게 당겨 호출할 수 있는  명령어에 대한 것이다. 선행 기술인 8008의 은 더 복잡한 명령어 끼워넣기 회로가 필요했다.

문화적 영향
 소행성 8080 Intel은 인텔과 8080이 천문학 분야에 상당한 영향을 미친 PC 혁명에서 수행한 역할을 인정하는 말장난으로 명명되었다.
 마이크로소프트의 공개 전화번호인 425-882-8080은 이 칩에서 많은 초기 작업이 이루어졌기 때문에 선택되었다.
 인텔의 많은 주요 전화번호도 xxx-xxx-8080과 비슷한 형태를 띠고 있다.

 같이 보기 

 8008
 8086, x86
 자일로그 Z80
 CP/M (운영 체제)

 각주 

분류:인텔의 마이크로프로세서
분류:8비트 마이크로프로세서