кристалл 80286 под микроскопом (часть 3)

Набрел в сети на работы человека, занимающимся схожим делом, правда на более глубоком уровне, в целях создания точного эмулятора процессора 6502 (на картинке как раз фотография этого кристалла), который заметно проще чем 80286 и задача детального разбора этого чипа выглядит более реальной, тем более что автор уже почти закончил этот процесс:

тема 1 (ru)

тема 2 (en)

Больше всего поразило то, что он почти везде разрисовал все вплоть до транзисторной схемы. Но правда и техпроцесс на выбранном им чипе грубее на порядок, и все структуры гораздо лучше различимы. Некоторый его опыт будет полезен и мне, так как я уже увидел похожие структуры и в своем чипе. Например на следующем рисунке приведены функционально схожие элементы в чипах 6502 и 80286, а именно матрица элементов, выполняющая преобразование одного вида сигналов в другой, например это может быть декодирование кода команды в конкретные сигналы на выходных линиях:

Сравнение внешнего вида PLA-матриц в процессорах 6502 и 80286

Здесь в обоих случаях исходная группа сигналов подается по вертикальной шине, а результирующий сигнал появляется на одной или нескольких горизонтальных линиях. В случае 80286 даже можно разглядеть характерные точки в пересечениях, которые и кодируют логику преобразования, в случае же чипа 6502 это кодирование скрыто в более глубоком слое, которое не видно на этой фотографии.

В 80286 процессоре, такие матрицы разбросаны по всему кристаллу, выполняя функции управления на местах. Некоторые из них даже на входе имеют нечто, что может быть счетчиком и таким образом сам декодер в комплекте с двоичным счетчиком может выдавать многошаговые управляющие последовательности, кодирующие исполнение некоторых многотактовых инструкций.

Следующий функциональный блок, назначение которого удалось понять, представляет собой 6-байтовую очередь предвыборки команд процессора. Причем в разных источниках эта очередь представлялась то 6-байтовой то 8-байтовой. На следующем фото видно, что очередь организована в виде трех регистров (три красных прямоугольника), данные куда загружаются из 16-битной шины, а считывание идет побайтово, через верхние линии. Причем какая половина регистра будет читаться управляется оранжевыми линиями (H/L) а какой именно регистр будет принимать или отдавать данные определяется зелеными управляющими линиями:

Физическая организация префетч-буфера предвыборки команд в процессоре 80286

Исходя из этой схемы можно сказать что никакого предварительного декодирования хранящиеся в этой очереди команды не проходят, и это действительно просто префетч-буфер, позволяющий читать команды из RAM 16-битными словами на несколько шагов вперед. Причем что интересно — регистры на самом деле не 16-битные а 18-битные! То есть к каждому байту добавлен некоторый служебный бит информации (сиреневые линии на схеме). Возможно он указывает старший или младший это байт 16-битного слова.

P.S. В развитие этой темы пару видео с ютуба по реверс-инжинирингу реальных чипов:

Reverse Engineering the MOS 6502 CPU (en)

Reverse engineering a simple CMOS chip

Интересная статья в тему:

Регистры процессора Intel 8086: от чипа к транзисторам

Оставьте комментарий

Ваш адрес email не будет опубликован.