Набрел в сети на работы человека, занимающимся схожим делом, правда на более глубоком уровне, в целях создания точного эмулятора процессора 6502 (на картинке как раз фотография этого кристалла), который заметно проще чем 80286 и задача детального разбора этого чипа выглядит более реальной, тем более что автор уже почти закончил этот процесс:
тема 1 (ru)
тема 2 (en)
Больше всего поразило то, что он почти везде разрисовал все вплоть до транзисторной схемы. Но правда и техпроцесс на выбранном им чипе грубее на порядок, и все структуры гораздо лучше различимы. Некоторый его опыт будет полезен и мне, так как я уже увидел похожие структуры и в своем чипе. Например на следующем рисунке приведены функционально схожие элементы в чипах 6502 и 80286, а именно матрица элементов, выполняющая преобразование одного вида сигналов в другой, например это может быть декодирование кода команды в конкретные сигналы на выходных линиях:
Здесь в обоих случаях исходная группа сигналов подается по вертикальной шине, а результирующий сигнал появляется на одной или нескольких горизонтальных линиях. В случае 80286 даже можно разглядеть характерные точки в пересечениях, которые и кодируют логику преобразования, в случае же чипа 6502 это кодирование скрыто в более глубоком слое, которое не видно на этой фотографии.
В 80286 процессоре, такие матрицы разбросаны по всему кристаллу, выполняя функции управления на местах. Некоторые из них даже на входе имеют нечто, что может быть счетчиком и таким образом сам декодер в комплекте с двоичным счетчиком может выдавать многошаговые управляющие последовательности, кодирующие исполнение некоторых многотактовых инструкций.
Следующий функциональный блок, назначение которого удалось понять, представляет собой 6-байтовую очередь предвыборки команд процессора. Причем в разных источниках эта очередь представлялась то 6-байтовой то 8-байтовой. На следующем фото видно, что очередь организована в виде трех регистров (три красных прямоугольника), данные куда загружаются из 16-битной шины, а считывание идет побайтово, через верхние линии. Причем какая половина регистра будет читаться управляется оранжевыми линиями (H/L) а какой именно регистр будет принимать или отдавать данные определяется зелеными управляющими линиями:
Исходя из этой схемы можно сказать что никакого предварительного декодирования хранящиеся в этой очереди команды не проходят, и это действительно просто префетч-буфер, позволяющий читать команды из RAM 16-битными словами на несколько шагов вперед. Причем что интересно — регистры на самом деле не 16-битные а 18-битные! То есть к каждому байту добавлен некоторый служебный бит информации (сиреневые линии на схеме). Возможно он указывает старший или младший это байт 16-битного слова.
P.S. В развитие этой темы пару видео с ютуба по реверс-инжинирингу реальных чипов:
Reverse Engineering the MOS 6502 CPU (en)
Reverse engineering a simple CMOS chip
Интересная статья в тему: