최근 수정 시각 : 2023-08-04 21:19:00

인텔 8008


펜티엄 이전의 인텔 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. 개요2. 특징3. 제원4. 아키텍처
4.1. 레지스터

1. 개요

1972년 인텔이 출시한 세계 최초의 8비트 마이크로프로세서이다.

4004와 같은 10μm PMOS 공정으로 생산됐으며, 3500개의 트랜지스터로 구성되어 있다.

원래는 컴퓨터 터미널 코퍼레이션(Computer Terminal Corporation, CTC) 데이터포인트 2200에 들어갔어야 했으나 인텔이 계약을 지키지 못했기 때문에 실제로 사용되지 않았다. 참고로 컴퓨터 터미널 코퍼레이션은 데이터포인트 2200을 TTL로 설계해 출시했다. 그럼에도 불구하고 인텔 8008은 휴렛 팩커드 2640 시리즈에 채용되었으며, 이후 제품들은 인텔 8080 인텔 8085를 사용하기도 했다.

2. 특징

명령어 세트는 데이터포인트 2200에서 사용된 것과 100% 호환성을 가진다. 이는 데이터포인트 2200를 목표로 설계했기 때문이었다.

명령어 하나를 실행하는데 4004의 8-16클럭보다 다소 많은 10-22클럭이 소요되었고 동작 속도 또한 200~800kHz로, 최대 740kHz로 동작할 수 있었던 4004보다 크게 빠르지 않아 초당 명령어 실행 능력은 인텔 4004에 비해 느렸지만 4비트의 두 배인 8비트의 연산 단위를 가지고 있었기 때문에 실제 속도는 두 배 이상으로 빨랐다.

레지스터는 8080하고 호환되지만 레지스터 비트 순서는 완전 다르다.

특이하게도 일반적으로 8비트급의 프로세서가 가지는 16비트의 주소 공간이 아니라 14비트의 주소 공간을 사용했다. 그래서 함수 호출시 복귀 주소는 프로세서 안에 있는 7단계 호출 스택에 저장된다. (Program Counter 포함 8단계) 프로그램 카운터 및 콜 스택은 전부 14비트의 레지스터로 구성되어 있다.

3. 제원

클럭 200~800KHz
데이터 폭 8비트
어드레스 폭 14비트
지원 명령어 48개
트랜지스터 3,500개
공정 10μm

4. 아키텍처

4.1. 레지스터

  • 8비트 레지스터: A(누산기), B, C, D, E, H, L
    • 0(000): A
    • 1(001): B
    • 2(010): C
    • 3(011): D
    • 4(100): E
    • 5(101): H
    • 6(110): L
    • 7(111): 메모리. 주소 지정에는 H 및 L 레지스터가 사용된다.
  • 14비트 레지스터: PC 및 7단계 호출 스택
  • 플래그 레지스터
    • 0(00): C - Carry(올림수)
    • 1(01): Z - Zero
    • 2(10): S - Signed
    • 3(11): P - Even parity

===# 명령어 #===
8진수 000 001 002 003 004 005 006 007 100 101 102 103 104 105 106 107
000 HLT RLC RFc ADI RST LrI RET JFc INP CFc INP JMP INP CAL INP
010 INr DCr RRC ACI
020 RAL SUI OUT OUT OUT OUT
030 RAR SBI
040 RTc NDI JTc CTc
050 XRI
060 ORI
070 CPI LMI
200 ADr ADM Lr1r2 LrM
210 ACr ACM
220 SUr SUM
230 SBr SBM
240 NDr NDM
250 XRr XRM
260 ORr ORM
270 CPr CPM LMr HLT
명령어 이름의 소문자는 해당 명령어에서 사용하는 레지스터 이름(r) 또는 조건(c) 중 하나를 의미한다. (예: LrM의 경우 LAM, LBM, ..., JTc의 경우 JTC, JTZ, JTS, JTP)
8진수 코드 Mnemonic 설명
D7 D6 D5 D4 D3 D2 D1 D0
인덱스 레지스터 명령어
3DS Lr1r2 1 1 D D D S S S
3D7 LrM 1 1 D D D 1 1 1
37S LMr 1 1 1 1 1 S S S
0D6 --- LrI 0 0 D D D 1 1 0
B B B B B B B B
076 --- LMI 0 0 1 1 1 1 1 0
B B B B B B B B
0D0 INr 0 0 D D D 0 0 0
0D1 DCr 0 0 D D D 0 0 1
누산기 명령어
20S ADr 1 0 0 0 0 S S S
207 ADM 1 0 0 0 0 1 1 1
004 --- ADI 0 0 0 0 0 1 0 0
B B B B B B B B
21S ACr 1 0 0 0 1 S S S
217 ACM 1 0 0 0 1 1 1 1
014 --- ACI 0 0 0 0 1 1 0 0
B B B B B B B B
22S SUr 1 0 0 1 0 S S S
227 SUM 1 0 0 1 0 1 1 1
024 --- SUI 0 0 0 1 0 1 0 0
B B B B B B B B
23S SBr 1 0 0 1 1 S S S
237 SBM 1 0 0 1 1 1 1 1
034 --- SBI 0 0 0 1 1 1 0 0
B B B B B B B B
24S NDr 1 0 1 0 0 S S S
247 NDM 1 0 1 0 0 1 1 1
044 --- NDI 0 0 1 0 0 1 0 0
B B B B B B B B
25S XRr 1 0 1 0 1 S S S
257 XRM 1 0 1 0 1 1 1 1
054 --- XRI 0 0 1 0 1 1 0 0
B B B B B B B B
26S ORr 1 0 1 1 0 S S S
267 ORM 1 0 1 1 0 1 1 1
064 --- ORI 0 0 1 1 0 1 0 0
B B B B B B B B
27S CPr 1 0 1 1 1 S S S
277 CPM 1 0 1 1 1 1 1 1
074 --- CPI 0 0 1 1 1 1 0 0
B B B B B B B B
002 RLC 0 0 0 0 0 0 1 0
012 RRC 0 0 0 0 1 0 1 0
022 RAL 0 0 0 1 0 0 1 0
032 RAR 0 0 0 1 1 0 1 0
제어 흐름 및 스택 명령어
1X4 --- --- JMP 0 1 X X X 1 0 0
B2 B2 B2 B2 B2 B2 B2 B2
X X B3 B3 B3 B3 B3 B3
1-0 --- --- JFc 0 1 0 C4 C3 0 0 0
B2 B2 B2 B2 B2 B2 B2 B2
X X B3 B3 B3 B3 B3 B3
1-0 --- --- JTc 0 1 1 C4 C3 0 0 0
B2 B2 B2 B2 B2 B2 B2 B2
X X B3 B3 B3 B3 B3 B3
1X6 --- --- CAL 0 1 X X X 1 1 0
B2 B2 B2 B2 B2 B2 B2 B2
X X B3 B3 B3 B3 B3 B3
1-2 --- --- CFc 0 1 0 C4 C3 0 1 0
B2 B2 B2 B2 B2 B2 B2 B2
X X B3 B3 B3 B3 B3 B3
1-2 --- --- CTc 0 1 1 C4 C3 0 1 0
B2 B2 B2 B2 B2 B2 B2 B2
X X B3 B3 B3 B3 B3 B3
0X7 RET 0 0 X X X 1 1 1
0-3 RFc 0 0 0 C4 C3 1 1 1
0-3 RTc 0 0 1 C4 C3 1 1 1
0A5 RES 0 0 A A A 1 0 1
입출력 명령어
1-- INP 0 1 0 0 M M M 1
1-- OUT 0 1 R R M M M 1
머신 명령어
00- HLT 0 0 0 0 0 0 0 X
377 HLT 1 1 1 1 1 1 1 1