인텔 8086

Intel 8086
인텔 8086
Intel C8086.jpg
보라색 세라믹 DIP 패키지에 사이드 브라즈 핀으로 구성된 희귀 Intel C8086 프로세서
일반 정보
시작됨1978
중단됨1998[1]
일반 제조업체
퍼포먼스
최대 CPU 클럭 속도5MHz ~ 10MHz
데이터 폭16비트
주소 폭20비트
건축과 분류
기술 노드3µm
명령 집합x86-16
물리적 사양
트랜지스터
  • 29,000
공동프로세서인텔 8087, 인텔 8089
패키지
소켓
제품, 모델, 모델
변종
역사
전임자인텔 8085
후계자8018680286 (둘 다 1982년 초에 도입)

8086[2]([3]iAPX 86)은 인텔이 1976년 초에서 1978년 6월 8일 사이에 설계한 16비트 마이크로프로세서 칩이다.1979년 7월 1일 발매된 인텔 8088은 외장형 8비트 데이터 버스(더 저렴하고 적은 수의 지원 IC를 사용할 수 있도록 허용)[note 1]를 탑재한 약간 변형된 칩으로, IBM PC의 원래 디자인에 사용된 프로세서로 눈에 띈다.[4]

8086은 x86 아키텍처를 낳았고, 결국 인텔의 가장 성공적인 프로세서 라인이 되었다.2018년 6월 5일 인텔은 인텔 코어 i7-8086K라고 불리는 인텔 8086 40주년을 기념해 한정판 CPU를 출시했다.[4]

역사

배경

1972년 인텔은 최초의 8비트 마이크로프로세서인 8008을 출시했다.[note 2]프로그램 가능한 CRT 단말기를 염두에 두고 데이터포인트 코퍼레이션이 설계한 지침 세트를 구현했는데, 이 역시 상당히 범용적이라는 것이 입증되었다.이 장치는 기능성 컴퓨터를 생산하기 위해 여러 개의 추가 IC가 필요했는데, 부분적으로 그것은 별도의 주소 버스 사용을 배제한 18핀의 작은 "메모리 패키지"로 포장되었기 때문이다(Intel은 당시 주로 DRAM 제조업체였다).

2년 후 인텔은 8080을 출시하여 원래 계산기 IC용으로 개발된 새로운 40핀 DIL 패키지를 채택하여 별도의 어드레스 버스를 가능하게 했다.[note 3]8008과[5] 소스 호환(이진 호환이 안 됨)되는 확장 명령어 세트를 가지고 있으며 프로그래밍을 쉽게 하기 위한 16비트 명령어도 포함되어 있다.8080 장치는 결국 고갈 부하 기반 8085(1977년)로 대체되었는데, 이 8080 장치는 이전 칩의 세 가지 다른 작동 전압 대신 단일 +5V 전원 공급으로 충분했다.[note 4]이 기간 동안 등장한 다른 잘 알려진 8비트 마이크로프로세서로는 모토로라 6800(1974년), 일반 계기 PIC16X(1975년), MOS Technology 6502(1975년), 질로그 Z80(1976년), 모토로라 6809(1978년) 등이 있다.

최초의 x86 디자인

Intel 8086 CPU 다이 이미지

8086 프로젝트는 1976년 5월에 시작되었으며, 원래 야심차고 지연된 iAPX 432 프로젝트를 임시로 대체하기 위한 것이었다.이는 모토로라, 질로그, 내셔널 반도체 등 다른 제조사의 16비트 및 32비트 프로세서의 지연이 덜한 관심을 끌기 위한 시도였다.

8086은 16비트 마이크로프로세서였지만 인텔의 8비트 마이크로프로세서(8008, 8080, 8085)와 동일한 마이크로아키텍처를 사용했다.이를 통해 8비트로 작성된 어셈블리 언어 프로그램이 원활하게 마이그레이션될 수 있었다.[6]서명된 정수, 베이스+오프셋 어드레싱, 자가 반복 연산 등과 같은 새로운 지침과 기능이 추가되었다.PascalPL/M을 포함한 ALGOL 계열 언어에서 중첩된 함수의 소스 코드 컴파일을 지원하기 위한 지침이 추가되었다.주요 건축가 Stephen P에 따르면. 모스, 이것은 소프트웨어 중심 접근의 결과였다.기타 개선사항에는 곱하기 및 나누기 조립 언어 지침에 대한 마이크로코드 지침이 포함되었다.설계자들은 또한 80878089와 같은 코프로세서를 예상했기 때문에 버스 구조는 유연하도록 설계되었다.

약 3개월 후 명령 집합과 고급 아키텍처의 첫 번째 개정이 준비되었고,[note 5] CAD 도구가 거의 사용되지 않아 4명의 엔지니어와 12명의 레이아웃 담당자가 동시에 칩을 작업하고 있었다.[note 6]8086은 아이디어에서 작동 제품까지 2년 남짓 걸렸는데, 1976–1978년에 복잡한 설계로는 다소 빠른 것으로 여겨졌다.

8086은 무작위 로직[7] 마이크로코드를 혼합하여 시퀀싱되었으며[note 7] 약 20,000개의 활성 트랜지스터가 있는 고갈 부하 nMOS 회로를 사용하여 구현되었다(모든 ROMPLA 사이트를 계산한 29,000개).그것은 곧 인텔이 원래 빠른 정적 RAM 제품 제조를 위해 개발한 HMOS (High Performance MOS)라는 새로운 정제 nMOS 제조 공정으로 옮겨졌다.[note 8]그 뒤를 HMOS-II, HMOS-III 버전이 따랐고, 결국 인텔의 CHMOS 프로세스를 사용하여 제조된 배터리 구동 장치용 완전 정적 CMOS 버전이 따르게 되었다.[note 9]원래 칩의 크기는 33mm²이고 최소 피쳐 크기는 3.2μm였다.

그 건축은 Stephen P에 의해 정의되었다. 최종 수정안을 다듬는데 브루스 라베넬(8087년식 건축가)의 도움을 받아 모스.로직 디자이너 짐 맥케비트와 존 베이리스가 하드웨어 레벨 개발팀의[note 10] 수석 엔지니어였고 빌 폴만 프로젝트 매니저였다.8086의 유산은 오늘날의 개인용 컴퓨터와 서버의 기본 명령어 집합에서도 지속되고 있다. 8086은 또한 인텔 286이나 인텔 386과 같은 후기 확장된 설계 버전에 마지막 두 자리수를 빌려주었고, 이 모든 것이 결국 x86 계열로 알려지게 되었다. (또 다른 참조는 인텔 기기 i에 대한 PCI 벤더 ID이다.)s 8086h.)

세부 사항

최소 및 최대 모드에서 8086핀 할당

버스 및 운행

내부 및 외부 데이터 버스뿐 아니라 모든 내부 레지스터는 폭이 16비트(bit)로 8086년의 "16비트 마이크로프로세서" 아이덴티티를 확고히 확립했다.20비트 외부 주소 버스는 1MB의 물리적 주소 공간(220 = 1,048,576 x 1바이트)을 제공한다.이 주소 공간은 내부 메모리 "분할"을 통해 처리된다.데이터 버스는 모든 제어 라인을 표준 40핀 듀얼 인라인 패키지에 맞추기 위해 주소 버스와 멀티플렉싱된다.16비트 I/O 주소 버스를 제공하여 64KB의 개별 I/O 공간을 지원한다.내부 주소/인덱스 레지스터의 너비가 16비트 밖에 되지 않는다는 이유만으로 최대 선형 주소 공간은 64KB로 제한된다.64KB 이상의 메모리 경계 프로그래밍에는 세그먼트 레지스터(아래 참조)의 조정이 수반된다. 80386 아키텍처가 더 넓은(32비트) 레지스터를 도입하기 전까지 이 난관은 존재했다(80286의 메모리 관리 하드웨어는 레지스터의 폭이 아직 16비트밖에 되지 않기 때문에 이 점에서 도움이 되지 않았다).

하드웨어 모드

모든 외부 작동에 필수적인 신호를 전달하는 일부 제어 핀은 기기가 최소 모드로 작동하는지 최대 모드로 작동하는지 여부에 따라 두 개 이상의 기능을 가진다.전자의 모드는 소형 단일 프로세서 시스템을 위한 것이고 후자는 둘 이상의 프로세서를 사용하는 중형 또는 대형 시스템(다중 프로세서 모드의 일종)을 위한 것이다.8087 또는 8089 코프로세서를 사용할 때는 최대 모드가 필요하다.핀 33(MN/MX)의 전압에 의해 모드가 결정된다.핀 33의 상태를 변경하면 특정 다른 핀의 기능이 변경되며, 대부분의 핀은 CPU가 (로컬) 버스를 처리하는 방법과 관련이 있다.[note 11]모드는 보통 회로에 유선 연결되므로 소프트웨어로 변경할 수 없다.이러한 모드의 작동은 Intel 데이터시트 및 매뉴얼의 타이밍 다이어그램에 설명되어 있다.최소 모드에서 모든 제어 신호는 8086 자체에서 생성된다.

레지스터 및 지침

Intel 8086 레지스터
19 18 17 16 15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00 (비트 위치)
메인 레지스터
아. AL AX(일차 축전지)
0 0 0 0 BH 비엘 BX(베이스, 축전지)
CH CL CX(카운터, 축전지)
DH DL DX(어큐뮬레이터, 확장 어큐뮬레이터)
색인 레지스터
0 0 0 0 SI 소스 인덱스
0 0 0 0 DI 대상 인덱스
0 0 0 0 BP 기본 포인터
0 0 0 0 SP 스택 포인터
프로그램 카운터
0 0 0 0 IP 명령 포인터
세그먼트 레지스터
CS 0 0 0 0 코드 세그먼트
DS 0 0 0 0 데이터 세그먼트
ES 0 0 0 0 추가 세그먼트
SS 0 0 0 0 스택 세그먼트
상태 레지스터
- - - - O D I T S Z - A - P - C 깃발

8086에는 8개 이상의 일반 16비트 레지스터(스택 포인터를 포함하되 명령 포인터, 플래그 레지스터 및 세그먼트 레지스터는 제외)가 있다.이 중 AX, BX, CX, DX 등 4개도 8비트 레지스터(그림 참조)의 2배 이상 접속이 가능하며, 나머지 4개도 SI, DI, BP, SP가 16비트 전용이다.

8비트 프로세서에서 영감을 받은 콤팩트한 인코딩 때문에 대부분의 지시사항은 1주소 또는 2주소 작업으로, 그 결과가 피연산자 중 하나에 저장된다는 것을 의미한다.대부분의 피연산자 중 하나는 메모리에 있을 수 있지만, 이 메모리 피연산자는 또한 목적지가 될 수 있는 반면, 다른 피연산자인 소스는 등록되거나 즉시 될 수 있다.단일 메모리 위치는 또한 종종 소스목적지 둘 다로 사용될 수 있으며, 이는 다른 요소들 중에서도 그 당시 대부분의 8비트 기계에 필적하는 코드 밀도에 더욱 기여한다.

대부분의 레지스터의 일반성의 정도는 8080이나 8085년보다 훨씬 크다.그러나 8086개의 레지스터는 대부분의 현대 미니컴퓨터에 비해 더욱 전문화되어 있었으며, 일부 지침에서도 암묵적으로 사용되고 있다.조립식 프로그래머에게는 완벽하지만, 이는 PDP-11, VAX, 68000, 32016 등과 같은 당시의 직교 16비트 및 32비트 프로세서에 비해 컴파일러에 대한 레지스터 할당이 더 복잡하게 만든다.반면에, 6502, 6800, 6809, 8085, MCS-48, 8051 및 기타 현대 축전지 기반 기계와 같은 다소 미니멀하지만 유비쿼터스한 8비트 마이크로프로세서보다 더 규칙적이기 때문에, 8086 아키텍처의 효율적인 코드 생성기를 구축하는 것이 상당히 쉽다.

이에 대한 또 다른 요인은 8086이 Pascal과 PL/M과 같은 스택 기반 고급 프로그래밍 언어를 더 잘 지원하기 위해 (8080년과 8085년에는 존재하지 않음) 몇 가지 새로운 지침도 도입했다는 것이다.push mem-op 그리고 "Pascal 호출 컨벤션"을 직접 지원하면서 크기를 조정한다.(다른 사람, 예를 들면 다음과 같은 여러 사람)push immed그리고enter는 후속 80186, 80286 및 80386 프로세서에 추가되었다.)

낮은 주소를 향해 확장되는 64KB(1개 세그먼트) 스택은 하드웨어에서 지원되며, 16비트 워드는 스택에 푸시되며, 스택의 상단은 SS:SP로 가리킨다.인터럽트는 256개로 하드웨어와 소프트웨어 모두에 의해 호출될 수 있다.인터럽트는 스택을 사용하여 반송 주소를 저장하면서 계단식으로 이동할 수 있다.

8086에는 64K의 8비트(또는 32K의 16비트 워드) I/O 포트 공간이 있다.

깃발

8086에는 16비트 플래그 레지스터가 있다.이 조건 코드 플래그 중 9개가 활성화되어 있으며, 프로세서의 현재 상태를 나타낸다. 운반 플래그(CF), 패리티 플래그(PF), 보조 운반 플래그(AF), 제로 플래그(ZF), 사인 플래그(SF), 트랩 플래그(TF), 인터럽트 플래그(IF), 방향 플래그(DF), 오버플로 플래그(OF)이다.상태 워드라고도 하는 플래그 레지스터의 레이아웃은 다음과 같다.[8]

비트 15-12 11 10 9 8 7 6 5 4 3 2 1 0
깃발 OF DF IF TF SF ZF AF PF CF

분할

8086 CPU1메가바이트의 메모리에 특이한 방식으로 접근할 수 있도록 하는 16비트 세그먼트 레지스터(그림 참조)도 4개 있다.8086은 주소 레지스터와 세그먼트 레지스터를 연결하기보다는 주소 공간이 레지스터 크기를 초과하는 대부분의 프로세서에서처럼 16비트 세그먼트를 16비트 오프셋(16×세그먼트 + 오프셋)에 추가하기 전에 4비트만 남겨둔 16비트 세그먼트를 이동시켜 32비트로부터 20비트 외부(또는 유효 또는 물리적) 주소를 생성한다.세그먼트:슬라이버 페어.결과적으로, 각 외부 주소는 212 = 4096 다른 세그먼트:오프셋 쌍으로 참조될 수 있다.

0110 1000 1000 0111 0000 세그먼트, 16비트, 4비트 왼쪽으로 이동(또는 0x10 곱하기)
+ 0011 0100 1010 1001 간격띄우기, 16비트
0110 1011 1101 0001 1001 주소, 20비트

비록 많은 프로그래머들이 복잡하고 거추장스럽다고 생각하지만, 이 계획은 또한 장점을 가지고 있다; 작은 프로그램(64KB 미만)은 0000과 같이 그것의 세그먼트의 고정된 오프셋(예: 0000)에서 시작하여 재배치할 필요성을 피할 수 있고, 최대 15바이트의 정렬 폐기물을 가지고 있다.

8086 계열의 컴파일러는 일반적으로 근거리와 원거리의 두 가지 종류의 포인터를 지원한다.근거리 포인터는 프로그램의 코드 또는 데이터 세그먼트와 암묵적으로 연관된 16비트 오프셋이므로 한 세그먼트에 들어갈 수 있을 정도로 작은 프로그램의 일부 내에서만 사용할 수 있다.먼 포인터로는 32비트 세그먼트:오프셋 쌍이 20비트 외부 주소로 결정된다.일부 컴파일러는 또한 거대한 포인터를 지원하는데, 이는 거대한 포인터 위의 포인터가 그것을 선형 20비트 포인터로 취급한다는 점을 제외하면 원거리 포인터와 같은 것이며, 원거리 포인터 상의 포인터 산술은 주소의 세그먼트 부분을 건드리지 않고 그것의 16비트 오프셋 내에서 감싸고 있다.

수많은 포인터, 데이터 구조 및 함수에 근접하고 멀리까지 지정할 필요가 없도록 컴파일러는 기본 포인터 크기를 지정하는 "메모리 모델"도 지원한다.소형(최대 64K), 소형(최대 128K), 소형(데이터 > 64K), 중형(코드 > 64K), 대형(코드, 데이터 > 64K), 대형(개별 배열 > 64K) 모델은 코드와 데이터를 위한 근거리, 원거리 및 거대 포인터들의 실용적인 조합을 다룬다.작은 모델은 대부분의 8비트 기반 프로세서와 마찬가지로 코드와 데이터가 단일 세그먼트에서 공유된다는 것을 의미하며, 예를 들어 .com 파일을 만드는 데 사용될 수 있다.사전 컴파일된 라이브러리는 종종 다른 메모리 모델을 위해 컴파일된 여러 버전으로 제공된다.

Morse 등에 따르면,[9] 디자이너들은 실제로 16MB의 물리적 주소 공간을 만들기 위해 (4비트 대신) 8비트 시프트를 사용하는 것을 고려했다고 한다.그러나, 이로 인해 256바이트 경계에서 세그먼트가 시작되어야 했고, 1976년경 마이크로프로세서에게는 1MB가 매우 큰 것으로 간주되었기 때문에, 그 생각은 기각되었다.또한, 추가 주소 버스 핀 4개를 위한 저비용 40핀 패키지에 사용할 수 있는 핀이 충분하지 않았다.

원칙적으로 x86 시리즈의 어드레스 공간은 애플리케이션이 운영체제로부터 세그먼트를 얻고 서로 다른 세그먼트:오프셋 쌍의 동등성에 대해 가정을 하지 않는 한, 시프트 값을 증가시킴으로써 이후의 프로세서에서 확장될 수 있었다.[note 12]실제로 "거대한" 포인터와 유사한 메커니즘의 사용은 널리 퍼졌고 80386의 32비트 오프셋 레지스터로 가능해진 평평한 32비트 주소 지정은 결과적으로 제한된 주소 지정 범위를 보다 일반적인 방법으로 확장했다.

명령 스트림은 단어로 메모리에서 가져와 프로세서에 의해 필요에 따라 바이트 레벨로 내부적으로 처리된다.명령 스트림 대기열 메커니즘은 디코딩 및 실행을 기다리는 동안 최대 6바이트의 명령 스트림을 대기열에 넣을 수 있다.대기열은 FIFO(First-In-First-Out) 버퍼 역할을 하며, 이 버퍼에서 실행 단위(EU)가 필요에 따라 명령 바이트를 추출한다.대기열에 최소 2바이트의 공간이 있을 때마다 BIU는 단어 가져오기 메모리 사이클을 시도한다.대기열이 비어 있는 경우(예: 분기 지침에 따라), 대기열의 첫 번째 바이트를 즉시 EU가 사용할 수 있게 된다.[10]

이전 소프트웨어 포팅

소규모 프로그램은 분할을 무시하고 일반 16비트 주소만 사용할 수 있다.이를 통해 8비트 소프트웨어를 8086에 쉽게 포팅할 수 있다.대부분의 DOS 구현의 저자들은 CP/M과 매우 유사한 애플리케이션 프로그래밍 인터페이스를 제공하고 CP/M과 동일한 간단한 .com 실행 파일 형식을 포함함으로써 이를 이용했다.이는 8086과 MS-DOS가 신규일 때 중요했는데, 이는 기존의 많은 CP/M(및 기타) 애플리케이션을 신속하게 이용할 수 있게 하여 새로운 플랫폼의 수용을 크게 완화했기 때문이다.

예시 코드

다음 8086/8088 어셈블러 소스 코드는 명명된 서브루틴에 대한 것이다._memcpy특정 크기의 데이터 바이트 블록을 한 위치에서 다른 위치로 복사한다.데이터 블록은 한 번에 1바이트씩 복사되며, 데이터 이동과 루프 로직은 16비트 연산을 활용한다.

0000:1000   0000:1000 0000:1000 55 0000:1001 89 E5 0000:1003 06 0000:1004 8B 4E 06 0000:1007 E3 11 0000:1009 8B 76 04 0000:100C 8B 7E 02 0000:100F 1E 0000:1010 07   0000:1011 8A 04 0000:1013 88 05 0000:1015 46 0000:1016 47 0000:1017 49 0000:1018 75 F7   0000:101A 07 0000:101B 5D 0000:101C 29 C0 0000:101E C3 0000:101F
; _memcpy(dst, src, len) ; 메모리 블록을 한 위치에서 다른 위치로 복사. ; ; 항목 스택 매개변수 ; [BP+6] = len, 복사할 바이트 수 ; [BP+4] = src, 소스 데이터 블록 주소 ; [BP+2] = dst, 대상 데이터 블록 주소 ; ; 리턴 레지스터 ; AX = 0              조직화하다1000h       ; 0000:1000h에서 시작  _memcpy     생식을 하다             밀다    bp          ; 통화 프레임 설정             영화를 찍다     bp,sp             밀다    es          ; ES 저장             영화를 찍다     cx,[bp+6]   ; CX = len 설정             jcxz    끝냈다        ; len = 0이면 반환             영화를 찍다     si,[bp+4]   ; SI = src 설정             영화를 찍다     di,[bp+2]   ; DI 설정 = dst             밀다    ds          ; ES = DS 설정             펑펑 터지다     es  고리를 틀다        영화를 찍다     al,[si]     ; [src]에서 AL 로드             영화를 찍다     [di],al     ; AL을 [dst]에 저장             주식회사     si          ; 증분 src             주식회사     di          ; 증분 dst             을 결정하다     cx          ; 감소 렌             jnz     고리를 틀다        ; 반복 반복  끝냈다        펑펑 터지다     es          ; ES 복원             펑펑 터지다     bp          ; 이전 통화 프레임 복원             후보선수     도끼,도끼       ; AX = 0 설정             되받아치다                 ; 반품             종지부를 찍다 생식을 하다 

위의 코드는 BP(베이스 포인터) 레지스터를 사용하여 호출 프레임, 즉 모든 파라미터와 서브루틴 실행을 위한 로컬 변수를 포함하는 스택 상의 영역을 설정한다.이러한 종류의 호출 규약재입력재귀적 코드를 지원하며, 1950년대 후반부터 대부분의 ALGOL 유사 언어에서 사용되고 있다.

위의 루틴은 데이터 블록을 복사하는 다소 번거로운 방법이다.8086은 바이트 문자열을 복사하기 위한 전용 지침을 제공한다.이러한 지침은 소스 데이터가 DS에 저장된다고 가정한다.SI, 대상 데이터는 ES:DI 및 복사할 요소 수가 CX에 저장됨.위의 루틴에서는 소스와 대상 블록이 동일한 세그먼트에 있어야 하므로 DS는 ES에 복사된다.위의 루프 섹션은 다음과 같이 교체할 수 있다.

0000:1011 FC 0000:1012 F3 0000:1013 A4
            도금하다                  ; 상위 주소로 복사 고리를 틀다        대변을 보다                  ; CX = 0까지 반복             movsb.                ; 데이터 블록 이동 

이것은 데이터 블록을 한 번에 한 바이트씩 복사한다.REP가르침은 다음과 같은 원인이 된다.MOVSBCX가 0이 될 때까지 반복하고, SI와 DI를 자동으로 증가시키며, 반복할 때 CX를 감소시킨다.대안으로MOVSW명령은 한 번에 16비트 단어(더블바이트)를 복사하는 데 사용될 수 있다(이 경우 CX는 바이트 수 대신 복사된 단어 수를 계산한다).대부분의 조립업자들은 이 시스템을REP의 인라인 접두사로 사용되는 경우 명령MOVSB에 있는 것과 같은 지시.REP MOVSB.

프로그램 카운터가 계속 다음을 가리키기 때문에 이 루틴은 중단될 경우 올바르게 작동한다.REP블록 복사가 완료될 때까지 지시한다.따라서 복사는 인터럽트 서비스 루틴이 제어권을 반환할 때 중단되었던 부분부터 계속된다.

퍼포먼스

Intel 8088(8086의 변형), 1=메인&인덱스 레지스터, 2=세그먼트 레지스터 및 IP, 3=주소 주소 및 IP, 4=내부 주소 대기열, 5=제어 장치(매우 단순화!), 6=제어 장치, 7=버스 인터페이스, 8=내부 데이터베이스, 9=ALU, 10/11/12=외부 주소/제어 버스

비록 부분적으로 이 특정 칩의 다른 설계 선택에 의해 영향을 받지만, 멀티플렉스 어드레스와 데이터 버스는 성능을 약간 제한한다; 16비트 또는 8비트 수량의 전송은 현대의 많은 8비트 기반 CPU에 비해 8비트 수량에 대해서는 느리지만 16비트에서는 더 빠른 4클록 메모리 액세스 사이클로 이루어진다.지침은 1바이트에서 6바이트까지 다양하므로, 가져오기 및 실행은 동시에 이루어지며, 별도의 단위로 분리된다(오늘날의 x86 프로세서에 남아 있음).버스 인터페이스 유닛은 6바이트 프리페치 큐(완전하게 연결된 파이프라이닝의 일종)를 통해 명령 스트림을 실행 유닛에 공급하여 레지스터에 대한 작동 속도를 높이고 즉각적으로 메모리 작동이 느려지는 동안(4년 후, 이 성능 문제는 8018680286으로 수정되었다).그러나 전체 폭 ALU를 갖는 전체(부분적인) 16비트 아키텍처는 이제 16비트 산술지시가 단일 ALU 사이클로 수행될 수 있다는 것을 의미했다(8080년과 8085년처럼 내부 캐리어를 통한 2비트 대신) 그러한 지침의 속도를 상당히 높였다.운영 대 피연산자 유형 및 어드레싱 모드직교화 및 기타 개선사항과 결합하여 8080 또는 8085년 동안 구형 칩이 더 빠를 수 있는 경우(아래 참조)에도 불구하고 성능이 상당히 향상되었다.

일반적인 지침에 대한 실행 시간(클럭 주기)[11]
교육 등록하다 즉시 등록하다 등기억기억 기억 기록하다 기억력이 풍부한
영화를 찍다 2 4 8+EA 9+EA 10+EA
ALU 3 4 9+EA, 16+EA, 17+EA
펄쩍 뛰다 등록 11 11; 라벨 15 15; 상태, 16 16
정수 곱하기 70~160(피연산자 데이터 및 크기에 따라 다름) EA 포함
정수분할 EA를 포함한 80~190(피연산자 데이터 및 크기에 따라 다름)
  • EA = 5 - 12 사이클의 유효 주소 계산 시간.
  • 타이밍은 프리페치 상태, 지침 정렬 및 기타 요인에 따라 최상의 경우다.

이러한 표에서 볼 수 있듯이, 레지스터와 직접 연결에 대한 운영은 빠르고(2~4 사이클 사이), 메모리 오퍼레이터와 점프는 상당히 느렸다. 점프는 단순한 80808085보다 더 많은 사이클을 걸렸고, 8088(IBM PC에서 사용)은 좁은 버스로 인해 추가적인 방해가 되었다.대부분의 기억 관련 지침이 느린 이유는 다음과 같은 세 가지였다.

  • 느슨하게 연결된 가져오기 및 실행 단위는 명령 프리페치에 효율적이지만 점프와 무작위 데이터 액세스에는 효율적이지 않다(특별 조치 없이).
  • 전용 주소 계산 애더는 제공되지 않았다. 마이크로코드 루틴은 이를 위해 메인 ALU를 사용해야 했다(전용 세그먼트 + 오프셋 애더가 있었지만).
  • 주소와 데이터 버스가 멀티플렉스 되어 있어 일반적인 현대식 8비트 프로세서보다 약간 더 긴 버스 사이클(33~50%)이 필요했다.

하지만 인텔의 차세대 8086 제품군 CPU로 메모리 액세스 성능이 대폭 향상됐다.8018680286은 둘 다 전용 주소 계산 하드웨어를 가지고 있어 많은 사이클을 절약했고, 80286 또한 별도의 (비복수) 주소와 데이터 버스를 가지고 있었다.

부동소수점

8086/8088은 하드웨어/마이크로코드 기반 부동 소수점 성능을 추가하기 위해 수학적 코프로세서에 연결될 수 있다.인텔 8087은 8086과 8088을 위한 표준 수학 코프로세서로서 80비트 숫자로 작동했다.사이릭스(8087-호환성) 와이트크(8087-호환성이 아님) 같은 제조사는 결국 8087과 경쟁한 고성능 부동 소수점 코프로세서를 내놓았다.

칩 버전

비록 그것의 후임인 80186/80188(이는 온칩 주변 기기 포함한다), 더 취재를 위해 전쟁으로 유명해 온 클록 주파수는 원래 5MHz,[노트 13]지만 10MHz. HMOS-III와 CMOS버전 포함된 시스템에 대한 긴 시간(적어도 잠시로 1990년대)에 제작된 HMOS의 마지막 버전 지정된 제한되어 있었습니다.ded 사용이다.

8086의 CMOS 버전인 80C86은 GRiDPad, Toshiba T1200, HP 110, 그리고 마지막으로 1998–1999년 달 탐사선에 사용되었다.

패키징의 경우, 인텔 8086은 세라믹과 플라스틱 DIP 패키지로 모두 사용할 수 있었다.

세라믹 D8086 모델
플라스틱 P8086 모델

인텔 8086 목록

모델번호 빈도 기술 온도 범위 패키지 개봉일 가격(USD)[list2 1]
8086 5 MHz[12] HMOS 0°C~70°C[13] 1978년[14] 6월 8일 $86.65[15]
8086-1 10 MHz HMOS II 상업적
8086-2 8 MHz[12] HMOS II 상업적 1980년[16] 1월/2월 $200[16][17]
8086-4 4 MHz[12] HMOS 상업적 $72.50[list2 2][18]
I8086 5 MHz HMOS 산업용 -40°C ~ +85°C[13] 1980년[13] 5월/6월 $173.25[13]
M8086 5 MHz HMOS 군사 등급 -55°C ~ +125°C[19]
80C86년[20] CMOS 44핀 PLCC[list2 3][21]
  1. ^ 100개 분량으로.
  2. ^ USD 99.00에서 21% 할인된 가격, 수량 가치에 대한 정보는 나열되지 않음.
  3. ^ 샘플링 Q4 1985

파생 모델 및 클론

Compatible—and, 많은 경우에, enhanced—versions Fujitsu,[22]Harris/Intersil, OKI, 지멘스, 텍사스 인스트루먼트, NEC, 미쓰비시,고 AMD에 의해요. NECμPD8088D과 μPD8086D 각각 원래 인텔 복제했다 예를 들어 선관위 V20, NECV30 한쌍은 8088과 8086과hardware-compatible하다고 말했지만, i.를 제작되었다nstr80186의 uection set와 80186의 일부(전부는 아니지만) 속도 향상 기능을 함께 제공함으로써 제조업체의 설계 수정 없이 명령 집합과 처리 속도를 모두 업그레이드할 수 있는 드롭인 기능을 제공한다.CMOS의 비교적 단순하고 저전력 8086 호환 프로세서는 여전히 임베디드 시스템에서 사용되고 있다.

소비에트 연방의 전자 산업은 산업 스파이 활동과 역공학[citation needed] 통해 8086년을 복제할 수 있었다.결과 칩인 K1810VM86은 8086과 2진수였으며 핀 호환성이 있었다.

i8086과 i8088은 각각 소련제 PC 호환 EC1831EC1832 데스크톱의 코어였다.(EC1831은 IZOT 1036C의 EC 식별이고 EC1832는 불가리아에서 개발 및 제조된 IZOT 1037C의 EC 식별이다.EC는 иааа for for for의 약칭이다.)그러나 EC1831 컴퓨터(IZOT 1036C)는 IBM PC 프로토타입과 상당한 하드웨어 차이를 보였다.EC1831은 동적 버스 사이징(US Pat)을 갖춘 최초의 PC 호환 컴퓨터였다.No 4,831,514).후에 몇몇 EC1831 원칙이 PS/2 (US Pat)에서 채택되었다.No 5,548,786) 및 기타 기계(영국 특허 출원, 간행물 번호 GB-A-2211325, 1989년 6월 28일 발행)

소련 클론 K1810VM86
OKI M80C86A QFP-56
NEC μPD8086D-2(8MHz) 1984년, 19주 JAPAN(Intel D8086-2 클론)

서포트 칩

  • Intel 8237: DMA(Direct Memory Access) 컨트롤러
  • Intel 8251: 19.2kbit/s의 범용 동기/비동기 수신기/송신기
  • Intel 8253: 프로그래밍 가능한 인터벌 타이머, 3x 16비트 최대 10MHz
  • Intel 8255: 프로그램 가능한 주변 인터페이스, 프린터 연결에 사용되는 3x 8비트 I/O 핀 등
  • Intel 8259: 프로그래밍 가능한 인터럽트 컨트롤러
  • Intel 8279: 키보드/디스플레이 컨트롤러, 키보드 매트릭스 스캔 및 7-세그와 같은 디스플레이 매트릭스
  • Intel 8282/8283: 8비트 래치
  • Intel 8284: 클록 생성기
  • Intel 8286/8287: 양방향 8비트 드라이버.1980년에 Intel I8286/I8287(산업용 등급) 버전은 모두 US$16.25에 100으로 제공되었다.[13]
  • Intel 8288: 버스 컨트롤러
  • Intel 8289: 버스 중재자
  • NEC µPD765 또는 Intel 8272A: 플로피 컨트롤러[23]

8086을 사용하는 마이크로컴퓨터

  • 인텔 멀티버스 호환 싱글보드 컴퓨터 ISBC 86/12는 1978년에 발표되었다.[24]
  • 제록스 노트태커는 1978년 최초의 휴대용 컴퓨터 디자인 중 하나로 8086 칩 3개(CPU, 그래픽 프로세서, I/O 프로세서로 사용)를 사용했지만 상업적 생산에 들어간 적은 없었다.
  • 시애틀 컴퓨터 프로덕션S-100 버스 기반 8086 시스템(SCP200B)을 이르면 1979년 11월에 출하했다.
  • 노르웨이 마이크론 2000은 1980년에 도입되었다.
  • 그 중에서도 가장 영향력 있는 마이크로컴퓨터 중 하나인 IBM PC는 인텔 8088을 사용했는데, 이 버전은 8비트 데이터 버스를 탑재한 8086 버전(위에서 언급된 바와 같이)
  • 최초의 Compaq Deskpro는 7.16MHz로 실행되는 8086을 사용했지만, 4.77MHz IBM PC XT용으로 설계된 추가 카드와 호환되었으며, 8088의 느린 액세스를 시뮬레이션하기 위해 메모리 버스 버퍼로 CPU를 낮은 속도로 전환할 수 있었다.
  • 8 MHz 8086-2는 IBM PC와 호환되는 데스크톱 마이크로 컴퓨터인 AT&T 6300 PC(올리베티에서 제작, 여러 브랜드와 모델 번호로 전세계적으로 알려져 있음)에서 사용되었다.M24 / PC 6300에는 IBM PC/XT 호환 8비트 확장 슬롯이 있지만, 그 중 일부는 8086 CPU의 16비트 데이터 버스 전체를 제공하는 독점적 확장(IBM PC AT의 16비트 슬롯과 유사하지만, 설계 세부사항에서는 다르며, 물리적으로 호환되지 않음)과 온보드 비디오 시스테를 포함한 모든 시스템 주변 장치를 갖추고 있다.m은 또한 16비트 데이터 전송을 즐긴다.이후 Olivetti M24SP는 최대 10MHz에서 8086-2를 실행하는 것이 특징이었다.
  • IBM PS/2 모델 25와 30은 8 MHz 8086으로 제작되었다.
  • 암스트라드 PC1512, PC1640, PC2086, PC3086, PC5086은 모두 8MHz에서 8086 CPU를 사용했다.
  • NEC PC-9801.
  • Tandy 1000 SL 시리즈와 RL 기계는 9.47 MHz 8086 CPU를 사용했다.
  • IBM Displaywriter word processing machine과[25] Wang Laboratories가 제조한 Wang Professional Computer도 8086을 사용했다.
  • NASA2011년 우주왕복선 프로그램이 종료될 때까지 우주왕복선 디스커버리호의 지상 유지관리를 위한 장비에 8086개의 CPU를 사용했다.이 결정은 업그레이드로 인해 발생할 수 있는 소프트웨어 퇴행이나 불완전한 클론으로 전환하는 것을 방지하기 위해 만들어졌다.[26]
  • KAMAN 프로세스 및 영역 방사선 감시기[27]

참고 항목

메모들

  1. ^ TTL 버퍼, 래치, 멀티플렉서 감소(TTTL 로직의 양이 급격하게 감소하지는 않았지만)또한 IBM PC 디자인에 8254 CTC, 8255 PIO, 8259 PIC가 사용된 값싼 8080 패밀리 IC의 사용을 허용한다.또한 PCB 레이아웃을 간소화하고 보드를 저렴하게 만들 뿐 아니라 더 적은(1비트 또는 4비트 와이드) DRAM 칩을 요구한다.
  2. ^ 증강 로드 PMOS 로직 사용(14V 필요, -9V에서 V를CCDD +5V로, V를 +9V로 하여 TTL 호환성을 달성함).
  3. ^ 비포화 증강 사용 - NMOS 로직 로드(부하 트랜지스터 게이트에 대해 더 높은 게이트 전압이 필요함)
  4. ^ 고갈 부하 nMOS 로직으로 가능(8085는 나중에 8086과 마찬가지로 HMOS 프로세싱을 사용하여 만들어졌다.)
  5. ^ Morse에 따르면, 약 3개월 만에 명령 집합과 건축이 준비되었다고 한다.
  6. ^ 루빌리스, 전광판, 지배자, 전기 지우개, 디지타이저(8086 디자인팀 멤버 제니 에르난데스에 따르면, 인텔의 25번째 생일을 맞아 만든 성명에서)를 사용한다.
  7. ^ 8086은 MC68000 등 많은 경쟁사 디자인보다 마이크로코드를 적게 사용했다.
  8. ^ MOS 기술에서 빠른 정적 램(양극성 RAM만큼 빠른 속도)은 이 기간 인텔에게 중요한 제품이었다.
  9. ^ CHMOS는 HMOS와 매우 유사한 처리 단계를 사용하여 제조된 CMOS 회로를 위한 인텔의 이름이다.
  10. ^ 디자인팀의 다른 멤버들은 피터 A였다.스톨과 제니 에르난데즈
  11. ^ IBM PC와 PC/XT는 최대 모드로 실행되는 Intel 8088을 사용하며, 이를 통해 CPU는 PC 또는 PC/XT 메인보드의 연산 코프로세서 소켓에 설치된 선택적 8087 코프로세서로 작동할 수 있다.(PC와 PC/XT는 DMA 컨트롤러를 지원하는 등의 다른 이유로 최대 모드를 요구할 수 있다.)
  12. ^ 일부 80186개의 클론은 시프트 값을 변경했지만 데스크톱 컴퓨터에서는 일반적으로 사용되지 않았다.
  13. ^ (IBM PC는 4.77MHz, 표준 NTSC 컬러 버스트 주파수 4/3 사용)

참조

  1. ^ CPU 기록 CPU 박물관 CPU의 수명 주기
  2. ^ "Microprocessor Hall of Fame". Intel. Archived from the original on 2007-07-06. Retrieved 2007-08-11.
  3. ^ iAPX 286 Programmer's Reference (PDF). Intel. 1983. p. 1-1.
  4. ^ a b "Happy Birthday, 8086: Limited-Edition 8th Gen Intel Core i7-8086K Delivers Top Gaming Experience". Intel.
  5. ^ "8080 family". CPU World.
  6. ^ Scanlon, Leo J. (1988). 8086/8088/80286 assembly language. Brady Books. p. 12. ISBN 978-0-13-246919-7. […] The 8086 is software-compatible with the 8080 at the assembly-language level. […]
  7. ^ Geiger, Randall L.; Allen, Phillip E.; Strader, Noel R. (1990). "Random Logic vs. Structured Logic Forms". VLSI design techniques for analog and digital circuits. McGraw-Hill. p. 779. ISBN 0-07-023253-9. — CPU 제어 논리를 설명하는 "랜덤"의 사용 예
  8. ^ Intel Corporation (1983). IAPX 86, 88, 186, and 188 user's manual : programmer's reference. pp. 3–5. ISBN 978-0835930352. OCLC 11091251.
  9. ^ Morse, Stephen P.; Ravenel, Bruce W; Mazor, Stanley; Pohlman, William B. (October 1980). "Intel Microprocessors: 8008 to 8086". IEEE Computer. 13 (10): 42–60. doi:10.1109/MC.1980.1653375. S2CID 206445851.
  10. ^ "8086 16-BIT HMOS Processor datasheet" (PDF). Intel. Retrieved 26 November 2021.
  11. ^ Microsoft Macro Assembler 5.0 Reference Manual. Microsoft Corporation. 1987. Timings and encodings in this manual are used with permission of Intel and come from the following publications: Intel Corporation. iAPX 86, 88, 186 and 188 User's Manual, Programmer's Reference, Santa Clara, Calif. 1986. (iAPX 286, 80386, 80387과 유사)
  12. ^ a b c The 8086 Family User's Manual. Intel Corporation. October 1979. p. B-1. OCLC 65699372.
  13. ^ a b c d e Intel Corporation (May–June 1980). "8086 Available for industrial environment". Intel Preview (Special Issue: 16-Bit Solutions): 29.
  14. ^ "Intel® Microprocessor Quick Reference Guide - Year". www.intel.com.
  15. ^ Intel Corporation (May–June 1980). "The 8086 Family: Concepts and realities". Intel Preview (Special Issue: 16-Bit Solutions): 19.
  16. ^ a b Intel Corporation (January–February 1980). "New Products: Faster 8086 provides 60% more performance". Intel Preview: 22.
  17. ^ Intel Corporation (May–June 1980). "New 8086 family products boost processor performance by 50 percent". Intel Preview (Special Issue: 16-Bit Solutions): 17.
  18. ^ Intel Corporation (May–June 1979). "Microcomputer Components: New price reductions and production improvements make the popular 8086 microprocessor even more attractive". Intel Preview: 11.
  19. ^ Intel Corporation (August 1981). Intel iAPX86, 88 User's manual. p. B-25. ISBN 0835930165. OCLC 8459750.
  20. ^ Intel Corporation, "NewsBit:여러 제품의 CMOS 버전에 대한 Intel 라이센스 Oki", Solutions, 1984년 7월/8월, 1페이지.
  21. ^ Ashborn, Jim; "A 고급 포장: A Little Goes A Long Way", Intel Corporation, Solutions, 1986년 1월/2월, 페이지 2
  22. ^ Intel Corporation, "NewsBits:두 번째 소스 뉴스", 솔루션, 1985년 1월/2월, 1페이지
  23. ^ "The floppy controller evolution OS/2 Museum". 2011-05-26. Retrieved 2016-05-12. In the original IBM PC (1981) and PC/XT (1983), the FDC was physically located on a separate diskette adapter card. The FDC itself was a NEC µPD765A or a compatible part, such as the Intel 8272A.
  24. ^ "Intel Adds 16-Bit Single Board". Computerworld. Vol. XII, no. 50. December 11, 1978. p. 86. ISSN 0010-4841.
  25. ^ Zachmann, Mark (August 23, 1982). "Flaws in IBM Personal Computer frustrate critic". InfoWorld. Vol. 4, no. 33. pp. 57–58. ISSN 0199-6649. the IBM Displaywriter is noticeably more expensive than other industrial micros that use the 8086.
  26. ^ "For Old Parts, NASA Boldly Goes ... on eBay". New York Times. May 12, 2002.
  27. ^ 케이먼 테크수동

외부 링크