Форум Эму-Россия
http://forum.emu-russia.net/

64 квадратных миллиметров счастья
http://forum.emu-russia.net/viewtopic.php?f=13&t=4106
Страница 10 из 16

Автор:  org [ 06 дек 2013, 17:27 ]
Заголовок сообщения:  Re: 64 квадратных миллиметров счастья

У меня тоже М1 между соседними ячейками не видно, догадки куда он ведет больше напоминают шаманство.

Поэтому нужно ждать пока кто-нибудь не сделает хоть какие-нибудь фотографии М1.

Автор:  org [ 09 дек 2013, 16:22 ]
Заголовок сообщения:  Re: 64 квадратных миллиметров счастья

Сегодня у нас есть схема, но что она делает мы не понимаем :D

У схемы 5 входов и 3 выхода.

Таблица истинности:
Код:
1 2 3 4 5    1 2 3
0 0 0 0 0 = 0 1 1
0 0 0 0 1 = 0 1 1
0 0 0 1 0 = 0 1 1
0 0 0 1 1 = 0 0 0
0 0 1 0 0 = 0 1 1
0 0 1 0 1 = 0 0 1
0 0 1 1 0 = 0 0 1
0 0 1 1 1 = 0 0 0
0 1 0 0 0 = 1 1 1
0 1 0 0 1 = 1 1 0
0 1 0 1 0 = 1 1 0
0 1 0 1 1 = 1 0 0
0 1 1 0 0 = 1 1 1
0 1 1 0 1 = 1 0 0
0 1 1 1 0 = 1 0 0
0 1 1 1 1 = 1 0 0
1 0 0 0 0 = 0 1 1
1 0 0 0 1 = 1 1 1
1 0 0 1 0 = 1 1 1
1 0 0 1 1 = 0 0 0
1 0 1 0 0 = 1 1 1
1 0 1 0 1 = 0 0 1
1 0 1 1 0 = 0 0 1
1 0 1 1 1 = 1 0 0
1 1 0 0 0 = 0 1 1
1 1 0 0 1 = 1 1 0
1 1 0 1 0 = 1 1 0
1 1 0 1 1 = 0 0 0
1 1 1 0 0 = 1 1 1
1 1 1 0 1 = 0 0 0
1 1 1 1 0 = 0 0 0
1 1 1 1 1 = 1 0 0


Логика работы следующая:
Код:
x = MUX (in[4], NOT(in[3]), in[3]);

if (x == 0) {
    out[0] = IMUX (in[0], in[1], in[2]);
    out[1] = NOT(in[2]);
    out[2] = NOT(in[1]);
}

if (x == 1) {
    out[0] = MUX (in[0], in[1], in[2]);
    out[1] = out[2] = NOT(in[4]);
}


У схемы 2 мультиплексора - верхний и нижний.

Нижний мультиплексор на базе in4 и in5 создает внутренний сигнал x, который определяет поведение схемы по середине.

Верхний инверсный мультиплексор по входу in1 выбирает между внутренними сигналами c и d.

Вложения:
Без имени-1.jpg
Без имени-1.jpg [ 94.63 КБ | Просмотров: 14672 ]

Автор:  Akari [ 13 дек 2013, 16:14 ]
Заголовок сообщения:  Re: 64 квадратных миллиметров счастья

Прогресс на моем участке достиг 143 элементов.

По прежнему непонятно что это. Уже есть 4 грозди триггеров нанизанные на разные тактовые сигналы связанные в общую сетку.

Вложения:
psxcpu_part01-03-04_part.jpg
psxcpu_part01-03-04_part.jpg [ 1.24 МБ | Просмотров: 14240 ]
1.png
1.png [ 137.78 КБ | Просмотров: 14240 ]

Автор:  org [ 14 дек 2013, 01:25 ]
Заголовок сообщения:  Re: 64 квадратных миллиметров счастья

Пока второй американский декапер проводит полировку тестовых образцов, я решил немного заняться программированием)

Во-первых : нам необходима шустрая (реально шустрая) среда, для исполнения netlist-ов. Поэтому я стал искать способы приспособить Verilog для этих целей. Но ничего хорошего не вышло (кривоватый все таки стандарт) и я просто решил написать свой HDL, заточенный под наши цели: http://wiki.psxdev.ru/index.php/Verilike
Основной упор будет делаться на распараллеливание симуляции регистровых передач на GPU (CUDA/OpenCL), по идее должно быть очень быстро.

Во-вторых : есть прогресс в утилите для RPC-разработки. Кто не в курсе, RPC - это механизм для удаленного управления программой. В нашем деле совместный реверсинг уже просто необходим. Отправлять 200 Мб-тную картинку с просьбой "посмотри у меня там" стало насущной проблемой, требуемой решения. У меня уже были наскоки в этом направлении (Chiptunes), но стало понятно что подобная программа на базе Javascript будет еле ползать (хотя выглядело это забавно:)) Поэтому было решено сделать нормальное приложение, с возможностью рендеринга на OpenGL.
http://wiki.psxdev.ru/index.php/Regate
(по стресс-тестам 2000-3000 стандартных ячеек программа тянет нормально, это без оптимизации, но там основная проблема-утечки памяти, надо глядеть где)

Утилиты эти пока в глубокой разработке, очень большой пласт нужно поднять. Поэтому мы пока продолжаем работать в "педальном режиме" :)

Автор:  org [ 18 дек 2013, 00:25 ]
Заголовок сообщения:  Re: 64 квадратных миллиметров счастья

Появились первые фотографии М1:

Изображение

Автор:  Gloval [ 18 дек 2013, 23:46 ]
Заголовок сообщения:  Re: 64 квадратных миллиметров счастья

Посмотрел М1
Завораживащее зрелище. Хотя мне схем там не видно (знаний не хватает)

Самое интересное, как выглядит это все на различных глубинах шлифовки.
Начинат светиться виасы, потом М2, потом М2 снимается, виасы М1 светятся, сам М1 светится, снят М1 потом и диффузии видны.
Некоторые снимки хоть в учебник, а на некоторых нифига не видно ибо не в фокусе.
К сожалению уже оказались уничтожены шлифовкой М1 соединения с краю. Зато там видно дифффузии во всей красе.
Еще заметил то. что помимо соединений в ячейке определяющих ее тип, есть еще межячеечные близкие соединения. которые проходят там же (над диффузией ) как конфигурационные. Это затруднит распознание.

Думаю нужна еще одна жертва. Чтобы слоев снимков 4 - 5 было. Чуть пошлифовали, сняли изменившиеся участки. Потом сформировали стопки с проявившимися характерными признаками. Так проще распознавать будет, по мне много снимков не мало, уж лучше лишние чем один не ясный.

Автор:  org [ 19 дек 2013, 01:14 ]
Заголовок сообщения:  Re: 64 квадратных миллиметров счастья

Угу, М1 кроме функции каркаса ячейки ещё выполняет и транспортную функцию между соседними ячейками. Это не очень прикольно)))

Крайние правые ряды сточились до диффузии, но у нас уже столько наборов снимков, что распознать М1 в тех местах не составит труда.

Стандартные ячейки почти все распознали (там ещё не все отмечены, где-то 70 всего распознано):
Изображение
С разбором теперь проблем нет, каждый день я добавляю по 2-3 штуки, по мере поступления их в наши схемы.
Документация на ячейки в вики: http://wiki.psxdev.ru/index.php/CPU_CELLS

Я начал разбор большой схемы, в которой примерно 400 ячеек.

Сейчас качаю lap2, думаю где-то через час он уже появится на Google Drive :) В повторной шлифовке теперь видно М1 левой части процессора. А правые ряды сточились до подложки :)

Вложения:
circuit_004_topo.jpg
circuit_004_topo.jpg [ 1.2 МБ | Просмотров: 14002 ]

Автор:  Gloval [ 19 дек 2013, 08:43 ]
Заголовок сообщения:  Re: 64 квадратных миллиметров счастья

Ну одно дело составить библиотеку, другое - ей пользоваться.
Мне кажется, что по диффузии ячейку распознать проще, и однозначней, чем по М1. Плюс, по распознаным ячейкам становятся видны межячеечные соединения.
Так что нужны всеже минимум 3 слоя снимков: М2,М1, диффузия.

Автор:  org [ 19 дек 2013, 09:15 ]
Заголовок сообщения:  Re: 64 квадратных миллиметров счастья

А диффузия у нас уже давно есть, её Михаил сделал на 40x ещё в сентябре:

http://psxdev.ru/news
10 сентября 2013 - Фотографии PSX CPU без металла
https://drive.google.com/file/d/0B0xV_N ... sp=sharing

Автор:  Gloval [ 19 дек 2013, 11:13 ]
Заголовок сообщения:  Re: 64 квадратных миллиметров счастья

Сошлифованная диффузия выглядит много четче. (За сключением кадров не в фокусе)
Для библиотеки из более 100 ячеек нужна система иерархии уровня на 3. Например
1 сверхбольшие, большие, средние, малые
2 число фиолетовых линий на самом большом желтом пятне (не знаю как правильно это назвать)
3 ячейки

Ну и опция поворота 180

Тогда выбор сведется не к 1 из 100 а к одному из 5 - 6

Автор:  org [ 19 дек 2013, 13:24 ]
Заголовок сообщения:  Re: 64 квадратных миллиметров счастья

Ну на малые средние и большие ячейки разделены и так. А внутри групп они сгруппированы по контурам. Я их воспринимаю как например буква "F", буква "L" итп.

Автор:  Gloval [ 19 дек 2013, 16:15 ]
Заголовок сообщения:  Re: 64 квадратных миллиметров счастья

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

Автор:  org [ 19 дек 2013, 18:20 ]
Заголовок сообщения:  Re: 64 квадратных миллиметров счастья

Вы так говорите, как будто мы только что начали ячейки изучать )) Уже давно привыкли к их контурам, разработчики библиотеки постарались для нас и сделали каждую ячейку индивидуальной.

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

Из личного опыта могу сказать что достаточно разобрать один ряд ячеек, чтобы набить руку. Главное иметь достаточно мотивации)

Автор:  Gloval [ 19 дек 2013, 19:19 ]
Заголовок сообщения:  Re: 64 квадратных миллиметров счастья

Понятно, что тот кто этим занимается уже набил руку. Я пишу мнение с точки зрения эргономики. А это оптимизация времени и уменьшение усталости.
Если прибегать к помощи обычных людей (вроде тех что терли тот куб http://www.computerra.ru/44418/ ) , то, если не воевать с софтом, одну позицию кадра (М2,М1, дифф) можно оттрассировать за час наверно.

Автор:  org [ 20 дек 2013, 01:06 ]
Заголовок сообщения:  Re: 64 квадратных миллиметров счастья

Прогресс по моей схеме.

Определились входы (9 штук) и выходы (7 штук). Вся схема нетактируемая, обычная комбинаторная логика. То есть она условно-моментально из 9 входов делает 7 :)

Справа вверху плотно прилегает другая схема, я там добавил тактовые сигналы для DFF, но лезть не стал, чтобы не засорять основную схему.

Осталось доделать немного металла и добавить 5-6 неизвестных ячеек и можно приступать к анализу.

Роутинг как обычно - достаточно убогий :D Иногда, чтобы соединить 2 ячейки одного ряда, провода идут в обход всей схемы.

Вложения:
circuit_004_topo.jpg
circuit_004_topo.jpg [ 2.06 МБ | Просмотров: 13940 ]

Автор:  org [ 21 дек 2013, 01:12 ]
Заголовок сообщения:  Re: 64 квадратных миллиметров счастья

Трассировка моего куска завершена, входов стало больше (13 входов и 7 выходов).

Функционально - это крайне неэффективно сделанный декодер 13-в-7. То что в процессорах эпохи NMOS делается небольшой "решеткой" монтажного-И/ИЛИ в процессоре PSX превращается в монструозную схему.

Логика работы простая:
- у схемы 7 выходов, каждый выход идёт с большого 6-NOR или 6-NAND (в зависимости от того, как генератор сделал де-Моргана)
- на каждый большой 6-"ствольный" вентиль стекается куча рассыпухи, нанизанной на входные 26 проводов. Почему 26? Потому что входные 13 идут как в прямой, так и в инверсной логике.
- синтезатор "деморганит" схему как считает нужным. получается просто адский треш из кучи вентилей разного сорта (NAND,NOR,OR,AND, которые могут быть 2-х и 3-х входовыми)

Большие подозрения что это схема т.н. Register Select (выбор регистра), а точнее она выбирает группу регистров (DMA, Root counters итп.), в зависимости от младших 13 разрядов. Других декодеров в процессоре мало (декодер кода операции например, но он принимает на вход только 6 разрядов).

PS. Логика декодирования в процессе выяснения :D

Вложения:
circuit_004_topo.jpg
circuit_004_topo.jpg [ 2.47 МБ | Просмотров: 13881 ]

Автор:  Gloval [ 23 дек 2013, 11:19 ]
Заголовок сообщения:  Re: 64 квадратных миллиметров счастья

Словом - это реализация данной VHDL конструкции?
case () is
when =>
when =>
......
when =>
end case;
Причем только выбор ветки.

Автор:  org [ 23 дек 2013, 15:57 ]
Заголовок сообщения:  Re: 64 квадратных миллиметров счастья

Да, это switch/case.

Автор:  Gloval [ 24 дек 2013, 11:10 ]
Заголовок сообщения:  Re: 64 квадратных миллиметров счастья

case практически всегда используется в конечных автоматах (state_machine). В процессоре этого добра должно быть навалом.

Автор:  org [ 25 дек 2013, 15:03 ]
Заголовок сообщения:  Re: 64 квадратных миллиметров счастья

Стало понятно назначение 4-х одинаковых блоков, о которых говорилось в начале этой темы.

Изображение

Оказалось это 16-разрядные dual port регистры. Они позволяют одновременно записать в два разных регистра, а также выдать значение двух любых регистров на 2 разных выхода, за один такт.

Ну и логическая схема:

Изображение

Подробнее в вики: http://wiki.psxdev.ru/index.php/CPU_UNITS

Страница 10 из 16 Часовой пояс: UTC + 3 часа [ Летнее время ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/