AI 요약
본 기사는 8086에 비해 비약적으로 복잡해진 인텔 80386 마이크로프로세서의 마이크로코드 디스어셈블 및 역공학 분석 과정을 다루고 있습니다. 필자(reenigne)는 켄 쉬리프(Ken Shirriff)로부터 80386 마이크로코드 ROM의 고해상도 이미지를 공유받았으나, 8086(10,752비트)의 약 9배 크기인 94,720비트에 달하는 거대한 용량과 문서 부재로 인해 초기에는 분석을 포기했었습니다. 그러나 디스코드의 GloriousCow와 Smartest Blob이 신경망 및 이미지 프로세싱 기술을 도입하여 단 며칠 만에 고해상도 다이 이미지에서 완전한 바이너리 값을 정확하게 추출해 내며 프로젝트가 급물살을 탔습니다. 이후 연구진은 마이크로 명령어(μ-op)들의 정렬 방향과 비트 필드 레이아웃을 성공적으로 재구성하였고, 다이 상의 하드웨어 물리적 회로 선로를 추적해 주는 켄 쉬리프의 도움을 받아 레지스터, ALU 전송 로직, 명령어 종료 패턴 등을 해독해 냈습니다. 마지막으로 명령어 디코더 역할을 하는 다수의 소형 PLA와 가상 메모리 등 보호 모드를 제어하는 보호 테스트 PLA까지 함께 디코딩함으로써 80386 마이크로코드와 실제 x86 명령어가 어떻게 매핑되고 실행되는지 그 실체를 세상에 드러내게 되었습니다.
핵심 인사이트
- 방대한 데이터 극복: 80386의 마이크로코드는 총 94,720비트로 구성되어 있어, 전작인 8086의 10,752비트에 비해 데이터 처리 및 검증 규모가 비약적으로 증가했습니다.
- 최신 융합 기술 도입: 기계 학습(Neural Networks)과 컴퓨터 비전 기술을 접목하여 수동으로 변환하기 까다로운 반도체 다이의 물리적 이미지를 고정밀 디지털 바이너리 데이터로 정교하게 추출해냈습니다.
- Ken Shirriff의 하드웨어 추적: 실리콘 다이 상의 실제 구리 라인과 논리 회로 게이트의 배선 연결을 추적하여 디스어셈블된 마이크로코드 필드들이 하드웨어적으로 어떤 역할을 하는지 실질적으로 매핑하는 데 결정적 역할을 했습니다.
- ALU 연산 속도 단축 비결: 80386이 단 2사이클 만에 ALU 연산을 끝마치기 위해, 첫 번째 사이클에 두 피연산자 데이터를 로드하고 두 번째 사이클에 결과를 즉각 목적지 레지스터에 기록하는 전용 마이크로코드 필드 할당 구조를 발견했습니다.
주요 디테일
- 블랙박스 분석의 출발: 특허 등을 통해 부분적인 마이크로코드 가이드라인이 존재했던 8086과 달리, 80386은 동작 흐름을 정확히 유추하기 어려운 완벽한 블랙박스 상태에서 분석을 시작했습니다.
- 축(Axis)의 재정렬: 축적된 바이너리 패턴을 탐색하여 가로·세로축을 마이크로 명령어(μ-ops) 그룹과 명령어 비트 정보 필드로 일일이 분류하는 레이아웃 구조를 완성했습니다.
- 명령어 종료 패턴 파악: 마이크로코드 내에 일정한 주기로 반복되는 흐름 제어 패턴이 명령어의 한 주기가 마무리되었음을 알려주는 종결 기호임을 확인했습니다.
- 다중 PLA 디코딩 결합: 미지의 코드를 명확히 매핑하기 위해 명령어 디코더 내에 존재하는 수많은 소형 PLA(프로그래머블 논리 어레이) 및 주소 보호 테스트 PLA 영역을 동시에 분석하여 명령어 대응 일치성을 높였습니다.
- 레지스터 및 연산 필드 매핑: 8086 분석 경험을 토대로 원천(Source) 및 목적지(Destination) 레지스터 필드를 가려내고, 나아가 고속 연산을 돕는 추가적인 피연산자 선택 필드까지 밝혀냈습니다.
향후 전망
- 에뮬레이션의 극대화: 마이크로코드 수준의 동작 제어 흐름이 완전히 밝혀짐에 따라, 향후 정밀한 80386 호환 사이클 단위(Cycle-accurate) 에뮬레이터 개발이 획기적인 수준으로 향상될 것입니다.
- 레트로 IC 리버스 엔지니어링 패러다임 변화: AI와 자동화 기반 이미지 프로세싱 기술을 이용한 구형 칩의 논리 구조 복원 기법이 활성화되어 다른 역사적 반도체 아키텍처의 영구 보존 연구도 가속화될 것으로 기대됩니다.
