80386, 27만 트랜지스터로 이뤄낸 보호 모드의 비밀
80386은 보호 모드(Protected Mode)를 통해 메모리 격리(Memory Isolation)를 구현하여 멀티태스킹 환경을 지원함
PLA(Programmable Logic Array)를 활용, 복잡한 권한 검사를 병렬 처리하여 성능을 향상시킴
V86 모드(Virtual 8086 Mode)를 통해 기존 DOS 프로그램을 보호된 환경에서 실행 가능하게 함
하드웨어와 마이크로코드를 결합한 설계로 성능과 복잡성 사이의 균형(Balance)을 달성함
80386의 보호 메커니즘: PLA(Programmable Logic Array)의 역할
80386은 메모리 보호(Memory Protection)를 위해 세분화(Segmentation)와 페이징(Paging)을 사용하며, 특히 PLA(Programmable Logic Array)를 활용하여 권한 검사를 수행한다. PLA는 마이크로코드 내에서 여러 사이클이 소요되는 조건 분기를 대체하여, 단일 평가로 모든 규칙을 병렬 처리한다. 이를 통해 성능 저하 없이(Without Performance Degradation) 복잡한 보호 규칙을 빠르게 처리할 수 있다.
PTSAV/PTOVRR 메커니즘: 코드 재사용과 유연성
LD_DESCRIPTOR 서브루틴(Subroutine)은 다양한 호출자(Caller)에 대해 서로 다른 유효성 검사 규칙을 적용하기 위해 PTSAV(Protection Save) 및 PTOVRR(Protection Override) 메커니즘을 사용한다. PTSAV는 호출자가 원하는 테스트 상수를 하드웨어 래치에 저장하고, PTOVRR은 LD_DESCRIPTOR 내에서 저장된 테스트를 검색하여 실행한다. 이러한 방식은 코드 중복을 줄이고(Reduce Code Duplication), 유연성을 확보하는 데 기여한다.
3-사이클 딜레이 슬롯(3-Cycle Delay Slots)을 활용한 성능 최적화
80386은 마이크로코드 시퀀서의 1-사이클 파이프라인 딜레이(Pipeline Delay)를 활용하여 성능을 최적화한다. 보호 테스트가 실행된 후 PLA가 결과를 생성하는 데 3 사이클이 소요되는데, 이 시간 동안 딜레이 슬롯에 유용한 작업을 배치하여 성능 손실을 최소화(Minimize Performance Loss)한다. 이는 386 설계의 핵심적인 특징 중 하나이며, 복잡한 마이크로코드(Microcode)를 이해하는 데 어려움을 준다.
V86 모드(Virtual 8086 Mode)의 동작 원리
80386은 V86 모드(Virtual 8086 Mode)를 통해 보호 모드 내에서 8086 real-mode 프로그램을 실행할 수 있도록 지원한다. V86 모드에서는 PE(Protected Mode Enable)와 VM(Virtual Machine) 비트의 조합을 통해 real-mode 진입점을 선택하고, CPL(Current Privilege Level)을 3으로 고정하여 보호 기능을 유지한다. 또한, IOPL(I/O Privilege Level)을 기반으로 하는 트랩-앤-에뮬레이트(Trap-and-Emulate) 방식을 사용하여 I/O 관련 명령(I/O Related Instructions)을 제어한다.
가상 메모리(Virtual Memory)의 고속 처리
80386은 가상 메모리(Virtual Memory) 접근 속도를 높이기 위해 세그멘테이션(Segmentation)과 페이징(Paging)을 결합하여 사용한다. 특히, TLB(Translation Lookaside Buffer)를 활용하여 가상 주소를 물리 주소로 변환하는 과정을 가속화한다. TLB 미스(Miss) 발생 시에는 하드웨어 페이지 워커(Hardware Page Walker)가 자동으로 페이지 테이블을 탐색하여, 성능 저하를 최소화(Minimize Performance Degradation)한다.