
Натрапив у мережі на роботи людини, яка займається схожою справою, щоправда, на глибшому рівні, з метою створення точного емулятора процесора 6502 (на зображенні саме фотографія цього кристала). Він помітно простіший за 80286, і завдання детального розбору цього чипа виглядає реальнішим, тим паче що автор уже майже завершив цей процес:
тема 1 (ru)
тема 2 (en)
Найбільше вразило те, що він майже всюди розмалював усе аж до транзисторної схеми. Щоправда, і техпроцес на вибраному ним чипі на порядок грубіший, і всі структури значно краще розрізняються. Дещо з його досвіду стане в пригоді й мені, оскільки я вже побачив схожі структури у своєму чипі. Наприклад, на наступному рисунку наведено функціонально схожі елементи в чипах 6502 і 80286, а саме матрицю елементів, яка перетворює один вид сигналів на інший. Це може бути, наприклад, декодування коду команди в конкретні сигнали на вихідних лініях:

Тут в обох випадках початкова група сигналів подається вертикальною шиною, а результівний сигнал з’являється на одній або кількох горизонтальних лініях. У випадку 80286 навіть можна розгледіти характерні точки на перетинах, які й кодують логіку перетворення. У чипі 6502 це кодування приховане в глибшому шарі, якого не видно на цій фотографії.
У процесорі 80286 такі матриці розкидані по всьому кристалу й виконують функції керування на місцях. Деякі з них навіть мають на вході щось, що може бути лічильником. Таким чином, сам декодер у комплекті з двійковим лічильником може видавати багатокрокові керувальні послідовності, які кодують виконання деяких багатотактових інструкцій.
Наступний функціональний блок, призначення якого вдалося зрозуміти, — це 6-байтова черга попередньої вибірки команд процесора. Причому в різних джерелах цю чергу описували то як 6-байтову, то як 8-байтову. На наступному фото видно, що черга організована у вигляді трьох регістрів (три червоні прямокутники), у які дані завантажуються з 16-бітної шини, а зчитуються побайтово через верхні лінії. Яка половина регістра зчитуватиметься, визначають помаранчеві лінії (H/L), а який саме регістр прийматиме або віддаватиме дані — зелені керувальні лінії:

З цієї схеми можна сказати, що команди, які зберігаються в цій черзі, не проходять жодного попереднього декодування. Це справді просто буфер попередньої вибірки, який дозволяє читати команди з RAM 16-бітними словами на кілька кроків уперед. Цікаво, що регістри насправді не 16-бітні, а 18-бітні! Тобто до кожного байта додано певний службовий біт інформації (бузкові лінії на схемі). Можливо, він указує, чи це старший, чи молодший байт 16-бітного слова.
P.S. На продовження цієї теми — кілька відео з YouTube про зворотне проєктування реальних чипів:
Reverse Engineering the MOS 6502 CPU (en)
Reverse engineering a simple CMOS chip
Цікава стаття на цю тему:
Регістри процесора Intel 8086: від чипа до транзисторів (російською)
Розбір будови АЛП на цьому кристалі (російською).
Вийшла нова стаття про процесор 386:
Дослідження кремнієвих кристалів процесора Intel 386 (російською)
Стаття на Хабрі зі зворотним проєктуванням АЛП Z-80 (хто не знав: у цього 8-бітного процесора вона 4-бітна!)
У Z-80 4-бітна АЛП. Ось як вона працює (російською)

Автор виконав цікаву роботу з розбору.
UPD 2026.03.06 Ще одна цікава стаття:


