| 분류 | 마이크로프로세서, 중앙 처리 장치 |
| 개발사 | 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 80386은 Intel이 1985년 10월 17일 발표한 32비트 x86 마이크로프로세서이다. 일반적으로 386, i386 또는 Intel386이라고 부르며, 80386SX가 등장한 뒤에는 원래의 32비트 외부 버스 모델을 80386DX라고 구분하기 시작했다. 최초 모델은 275,000개의 트랜지스터로 구성되었고 16 MHz로 동작했으며, Intel은 이전 세대인 80286보다 두 배가 넘는 성능을 제공한다고 설명했다.
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비트 선형 주소는 선택적으로 페이징 장치를 통해 물리 주소로 변환된다. 이를 통해 운영체제는 프로세스마다 독립된 주소 공간을 제공하고, 사용되지 않는 메모리 페이지를 보조 기억 장치로 이동하며, 페이지 단위의 접근 권한을 적용할 수 있다.
프로세서는 리셋 직후 기존 8086과 유사한 환경을 제공하는 리얼 주소 모드, 32비트 주소 공간과 보호 기능을 사용하는 보호 모드, 보호 모드 안에서 8086용 프로그램을 실행하는 가상 8086 모드를 지원한다. 보호 모드는 권한 수준, 세그먼트 디스크립터, 태스크 상태 세그먼트, 인터럽트 및 예외 처리, 입출력 권한 검사와 같은 운영체제용 기능을 제공한다. 가상 8086 모드에서는 운영체제가 여러 DOS 프로그램의 실행 환경을 서로 격리하면서 동시에 관리할 수 있다.
80386은 32비트 코드만을 위한 프로세서가 아니라 기존 16비트 x86 소프트웨어와 새 32비트 소프트웨어를 함께 실행하도록 설계되었다. 보호 모드에서도 세그먼트마다 기본 피연산자 크기와 주소 크기를 16비트 또는 32비트로 지정할 수 있으며, 명령어 접두사를 이용해 개별 명령의 크기를 전환할 수 있다. 이 구조는 운영체제와 응용 프로그램이 기존 16비트 구성 요소를 유지하면서 단계적으로 32비트 환경으로 전환할 수 있게 했다.
80386을 사용한 최초의 상용 개인용 컴퓨터는 Compaq이 1986년에 발표한 Compaq Deskpro 386이었다. Compaq은 당시 IBM PC 호환기 시장의 기준을 주도하던 IBM보다 먼저 80386 기반 시스템을 출시했고, 이는 새로운 x86 세대의 도입이 반드시 IBM의 제품 발표를 중심으로 이루어지지 않게 되는 전환점이 되었다.
80386은 개인용 컴퓨터에서 32비트 운영체제, 가상 메모리, 메모리 보호와 선점형 멀티태스킹을 실용적으로 구현할 수 있는 기반을 제공했다. Microsoft Windows, OS/2, 여러 UNIX 및 BSD 계열 운영체제가 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와의 관계
장점과 한계
영향과 유산
관련 문서