Intel 80386

Intel 80386은 Intel이 1985년 10월 17일 발표한 32비트 x86 마이크로프로세서이다. 일반적으로 386, i386 또는 Intel386이라고 부르며, 80386SX가 등장한 뒤에는 원래의 32비트 외부 버스 모델을 80386DX라고 구분하기 시작했다. 최초 모델은 2...

분류마이크로프로세서, 중앙 처리 장치
개발사Intel
다른 이름Intel386, i386, 386
명령어 집합32비트 x86, 후대의 IA-32
발표1985년 10월 17일
초기 클럭16 MHz
최고 클럭33 MHz
트랜지스터 수275,000개
외부 데이터 버스32비트(80386DX), 16비트(80386SX)
선형 주소 공간최대 4 GiB
논리 주소 공간최대 64 TiB
물리 주소 공간최대 4 GiB(80386DX), 16 MiB(80386SX)
동작 모드리얼 주소 모드, 보호 모드, 가상 8086 모드
수치 보조 프로세서Intel 80387
이전 세대Intel 80286
후속 세대Intel 80486

Intel 80386Intel이 1985년 10월 17일 발표한 32비트 x86 마이크로프로세서이다. 일반적으로 386, i386 또는 Intel386이라고 부르며, 80386SX가 등장한 뒤에는 원래의 32비트 외부 버스 모델을 80386DX라고 구분하기 시작했다. 최초 모델은 275,000개의 트랜지스터로 구성되었고 16 MHz로 동작했으며, Intel은 이전 세대인 80286보다 두 배가 넘는 성능을 제공한다고 설명했다.[1]

80386은 x86의 범용 레지스터, 산술 연산, 주소 계산과 주요 데이터 형식을 32비트로 확장했다. 16비트 AX, BX, CX, DX 레지스터는 각각 32비트 EAX, EBX, ECX, EDX로 확장되었으며, 인덱스와 스택 관련 레지스터에도 32비트 형식이 추가되었다. 이 프로그래밍 모델은 이후 Intel 80486, Pentium과 여러 x86 호환 프로세서에 계승되었고, 뒤에 IA-32라고 불리게 된 32비트 x86 아키텍처의 기본 형태가 되었다.

80386의 물리 주소 공간과 선형 주소 공간은 각각 최대 4 GiB이며, 세그멘테이션을 이용한 전체 논리 주소 공간은 최대 64 TiB로 구성할 수 있다. 각 세그먼트는 최대 4 GiB 크기를 가질 수 있고, 세그먼테이션을 거쳐 생성된 32비트 선형 주소는 선택적으로 페이징 장치를 통해 물리 주소로 변환된다. 이를 통해 운영체제는 프로세스마다 독립된 주소 공간을 제공하고, 사용되지 않는 메모리 페이지를 보조 기억 장치로 이동하며, 페이지 단위의 접근 권한을 적용할 수 있다.[2]

프로세서는 리셋 직후 기존 8086과 유사한 환경을 제공하는 리얼 주소 모드, 32비트 주소 공간과 보호 기능을 사용하는 보호 모드, 보호 모드 안에서 8086용 프로그램을 실행하는 가상 8086 모드를 지원한다. 보호 모드는 권한 수준, 세그먼트 디스크립터, 태스크 상태 세그먼트, 인터럽트 및 예외 처리, 입출력 권한 검사와 같은 운영체제용 기능을 제공한다. 가상 8086 모드에서는 운영체제가 여러 DOS 프로그램의 실행 환경을 서로 격리하면서 동시에 관리할 수 있다.

80386은 32비트 코드만을 위한 프로세서가 아니라 기존 16비트 x86 소프트웨어와 새 32비트 소프트웨어를 함께 실행하도록 설계되었다. 보호 모드에서도 세그먼트마다 기본 피연산자 크기와 주소 크기를 16비트 또는 32비트로 지정할 수 있으며, 명령어 접두사를 이용해 개별 명령의 크기를 전환할 수 있다. 이 구조는 운영체제와 응용 프로그램이 기존 16비트 구성 요소를 유지하면서 단계적으로 32비트 환경으로 전환할 수 있게 했다.[3]

80386을 사용한 최초의 상용 개인용 컴퓨터는 Compaq이 1986년에 발표한 Compaq Deskpro 386이었다. Compaq은 당시 IBM PC 호환기 시장의 기준을 주도하던 IBM보다 먼저 80386 기반 시스템을 출시했고, 이는 새로운 x86 세대의 도입이 반드시 IBM의 제품 발표를 중심으로 이루어지지 않게 되는 전환점이 되었다.[4]

80386은 개인용 컴퓨터에서 32비트 운영체제, 가상 메모리, 메모리 보호와 선점형 멀티태스킹을 실용적으로 구현할 수 있는 기반을 제공했다. Microsoft Windows, OS/2, 여러 UNIXBSD 계열 운영체제가 386의 시스템 기능을 활용했으며, 초기 Linux 역시 80386의 보호 모드와 페이징 구조를 주요 실행 기반으로 삼았다. 80386에서 확립된 소프트웨어 모델은 후속 x86 프로세서에서도 장기간 유지되었고, 32비트 PC 소프트웨어 생태계의 공통 기반이 되었다.

Intel은 데스크톱 시스템용 80386DX 외에도 외부 데이터 버스를 16비트로 줄인 80386SX, 휴대용 컴퓨터의 전력 관리를 강화한 80386SL, 임베디드 제어 기능을 통합한 80386EX 등을 개발했다. 다른 반도체 기업도 386 호환 프로세서를 생산하면서 32비트 PC 시장이 확대되었다. 80386 계열은 개인용 컴퓨터의 주력 프로세서 자리에서는 후속 제품에 밀려났지만, 임베디드 시스템에서는 오랫동안 사용되었다.

명칭과 범위

80386

386과 i386

Intel386 명칭

80386DX 명칭

IA-32와의 관계

역사

개발 배경

80286의 한계

설계 목표

개발 과정

발표

초기 생산과 공급

Compaq Deskpro 386

IBM PC 호환기 시장의 채택

32비트 PC의 보급

후속 제품의 등장

임베디드 시장

생산 종료

마이크로아키텍처

전체 구성

버스 인터페이스 장치

코드 프리페치 장치

명령어 디코드 장치

실행 장치

세그멘테이션 장치

페이징 장치

파이프라인

명령어 처리 과정

내부 데이터 경로

마이크로코드

클럭 생성

리셋과 초기화

프로그래밍 모델

범용 레지스터

EAX

EBX

ECX

EDX

ESI와 EDI

EBP와 ESP

명령 포인터

EFLAGS

세그먼트 레지스터

제어 레지스터

디버그 레지스터

테스트 레지스터

시스템 주소 레지스터

데이터 형식

바이트

워드

더블워드

정수

순서수

근거리 포인터

원거리 포인터

문자열

비트 필드

비트 문자열

BCD 형식

주소 지정

논리 주소

선형 주소

물리 주소

16비트 주소 지정

32비트 주소 지정

기반 주소와 인덱스

스케일 인덱스

변위

유효 주소 계산

주소 크기 접두사

명령어 집합

기존 x86 명령어

32비트 피연산자

32비트 주소 연산

비트 조작 명령어

비트 검사 명령어

비트 스캔 명령어

조건부 바이트 설정

데이터 형식 변환

문자열 명령어

시스템 명령어

제어 레지스터 접근

디버그 명령 지원

피연산자 크기 접두사

주소 크기 접두사

동작 모드

리얼 주소 모드

보호 모드

가상 8086 모드

리셋 상태

보호 모드 진입

보호 모드 종료

모드 전환 과정

모드별 명령어 동작

리얼 주소 모드

메모리 주소 계산

8086 호환성

32비트 레지스터 사용

32비트 피연산자 사용

인터럽트 벡터 테이블

주소 래핑

리얼 모드의 한계

보호 모드

보호 모드의 구조

세그먼트 디스크립터

디스크립터 테이블

전역 디스크립터 테이블

지역 디스크립터 테이블

인터럽트 디스크립터 테이블

세그먼트 선택자

세그먼트 캐시

접근 권한

세그먼트 한계

권한 검사

가상 8086 모드

동작 구조

가상 8086 태스크

DOS 프로그램 실행

인터럽트 처리

입출력 명령어 가상화

페이지 단위 격리

여러 가상 8086 환경

보호 모드 운영체제와의 관계

한계

메모리 관리

메모리 모델

평면 메모리 모델

분할 메모리 모델

세그멘테이션

세그먼트 변환

선형 주소 공간

페이징

페이지 디렉터리

페이지 테이블

페이지 프레임

페이지 디렉터리 엔트리

페이지 테이블 엔트리

페이지 변환 캐시

페이지 폴트

요구 페이징

가상 메모리

태스크별 주소 공간

공유 메모리

보호 구조

보호 링

권한 수준

현재 권한 수준

디스크립터 권한 수준

요청 권한 수준

데이터 접근 검사

코드 세그먼트 접근

권한 수준 전환

호출 게이트

인터럽트 게이트

트랩 게이트

태스크 게이트

스택 전환

입출력 권한 수준

입출력 권한 비트맵

태스크 관리

태스크 상태 세그먼트

태스크 레지스터

하드웨어 태스크 전환

태스크 게이트

중첩 태스크

태스크별 레지스터 상태

태스크별 주소 공간

태스크 전환 예외

소프트웨어 태스크 전환

운영체제의 활용

인터럽트와 예외

인터럽트

예외

폴트

트랩

중단

인터럽트 디스크립터 테이블

예외 오류 코드

이중 폴트

페이지 폴트

일반 보호 예외

디버그 예외

비마스크 가능 인터럽트

인터럽트 반환

디버깅 기능

디버그 레지스터

명령어 실행 중단점

데이터 접근 중단점

입출력 중단점

단일 단계 실행

태스크 전환 감지

디버그 예외

하드웨어 디버거

버스 인터페이스

32비트 주소 버스

32비트 데이터 버스

동적 버스 크기 조정

바이트 활성화 신호

버스 사이클

메모리 읽기와 쓰기

입출력 읽기와 쓰기

인터럽트 승인

버스 보류

버스 중재

파이프라인 주소 지정

캐시와의 연결

멀티프로세서 지원

캐시와 메모리 시스템

온칩 캐시의 부재

외부 캐시

캐시 컨트롤러

정적 RAM 캐시

쓰기 정책

캐시 일관성

주기억 장치

DRAM 구성

메모리 대기 상태

버스트 전송

시스템 성능에 미치는 영향

수치 연산

Intel 80387

Intel 80387DX

Intel 80387SX

Intel 80287

수치 보조 프로세서 인터페이스

부동소수점 명령어

예외 처리

소프트웨어 부동소수점 연산

제품 계열

Intel 80386DX

Intel 80386SX

Intel 80386SL

Intel 80386EX

Intel 80376

저전력 모델

임베디드 모델

클럭별 모델

패키지별 모델

Intel 80386DX

32비트 외부 데이터 버스

32비트 물리 주소 공간

초기 모델

20 MHz 모델

25 MHz 모델

33 MHz 모델

데스크톱 시스템

워크스테이션

서버

Intel 80386SX

개발 배경

16비트 외부 데이터 버스

24비트 물리 주소 공간

시스템 비용 절감

286 시스템 설계와의 호환성

데스크톱 시스템

저가형 개인용 컴퓨터

성능상의 차이

Intel 80386SL

휴대용 컴퓨터 시장

전력 관리

시스템 관리 모드

주변 장치 통합

메모리 구조

노트북 컴퓨터

후속 저전력 프로세서에 미친 영향

Intel 80386EX

임베디드 시스템

통합 주변 장치

버스 제어

타이머와 인터럽트 제어

직렬 통신

저전력 동작

산업용 시스템

장기 생산

호환성과 이전 세대

Intel 8086

Intel 8088

Intel 80186

Intel 80188

Intel 80286

리얼 모드 호환성

보호 모드 호환성

명령어 호환성

16비트 세그먼트

32비트 세그먼트

16비트와 32비트 코드의 혼합

기존 장치 드라이버

기존 운영체제

호환성의 한계

호환 프로세서

AMD Am386

IBM 386SLC

IBM 386BL

Cyrix 386 호환 제품

Chips and Technologies Super386

라이선스와 법적 분쟁

호환 프로세서 시장

클론 PC 산업

시스템 구성

메인보드

칩셋

BIOS

메모리

외부 캐시

확장 버스

ISA

EISA

MCA

VESA 로컬 버스

그래픽 어댑터

저장 장치

네트워크 어댑터

수치 보조 프로세서 소켓

개인용 컴퓨터

Compaq Deskpro 386

IBM Personal System/2

IBM 호환 PC

데스크톱 컴퓨터

휴대용 컴퓨터

워크스테이션

서버

고성능 개인용 컴퓨터

임베디드 시스템

산업용 제어 장치

통신 장비

항공우주 시스템

군용 장비

네트워크 장비

장기 공급

실시간 운영체제

후속 임베디드 x86 프로세서

운영체제

MS-DOS

DOS 확장자

Microsoft Windows

Windows/386

Windows 3.x

Windows 95

Windows NT

OS/2

UNIX

BSD

386BSD

Linux

MINIX

실시간 운영체제

DOS 환경

기본 DOS 실행

확장 메모리

EMS

XMS

보호 모드 DOS 확장자

DPMI

VCPI

가상 8086 모드

여러 DOS 세션

게임과 응용 프로그램

개발 도구

어셈블러

C 컴파일러

C++ 컴파일러

링커

로더

디버거

보호 모드 디버거

DOS 확장자 개발 도구

운영체제 개발

성능

명령어 실행 시간

클럭당 성능

메모리 대기 시간

외부 캐시의 영향

16 MHz 모델

20 MHz 모델

25 MHz 모델

33 MHz 모델

80386DX와 80386SX의 비교

Intel 80286과의 비교

Intel 80486과의 비교

정수 연산

부동소수점 연산

벤치마크

시장과 산업적 영향

32비트 PC 시장

Compaq과 IBM의 경쟁

IBM 중심 시장 구조의 변화

PC 호환기 제조사

반도체 경쟁

소프트웨어 시장

워크스테이션 시장

서버 시장

임베디드 시장

소프트웨어에 미친 영향

32비트 응용 프로그램

선점형 멀티태스킹

가상 메모리

메모리 보호

여러 DOS 프로그램의 동시 실행

32비트 컴파일러

게임과 멀티미디어

운영체제 구조

이식 가능한 시스템 소프트웨어

IA-32의 형성

32비트 x86 프로그래밍 모델

평면 주소 공간

보호 모드

페이징 구조

가상 8086 모드

후속 x86 프로세서

Intel 80486

Pentium

32비트 x86 운영체제

x86-64와의 관계

장점과 한계

영향과 유산

관련 문서

  1. Intel: Raising the Bar with the 386
  2. Intel 80386 Programmer's Reference Manual
  3. Intel 80386 Programmer's Reference Manual: Mixing 16-Bit and 32-Bit Code
  4. Computer History Museum: Compaq introduces the Deskpro 386 system