Сообщения без ответов | Активные темы Текущее время: 29 мар 2024, 16:16



Ответить на тему  [ Сообщений: 305 ]  На страницу Пред.  1 ... 7, 8, 9, 10, 11, 12, 13 ... 16  След.
 64 квадратных миллиметров счастья 
Автор Сообщение
Сообщение 06 дек 2013, 17:27
Профиль ICQ WWW
Аватара пользователя

Зарегистрирован:
24 июл 2007, 10:41
Сообщения: 570
У меня тоже М1 между соседними ячейками не видно, догадки куда он ведет больше напоминают шаманство.

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


Сообщение 09 дек 2013, 16:22
Профиль ICQ WWW
Аватара пользователя

Зарегистрирован:
24 июл 2007, 10:41
Сообщения: 570
Сегодня у нас есть схема, но что она делает мы не понимаем :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 КБ | Просмотров: 13668 ]
Сообщение 13 дек 2013, 16:14
Профиль

Зарегистрирован:
28 ноя 2012, 17:56
Сообщения: 63
Прогресс на моем участке достиг 143 элементов.

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


Вложения:
psxcpu_part01-03-04_part.jpg
psxcpu_part01-03-04_part.jpg [ 1.24 МБ | Просмотров: 13236 ]
1.png
1.png [ 137.78 КБ | Просмотров: 13236 ]
Сообщение 14 дек 2013, 01:25
Профиль ICQ WWW
Аватара пользователя

Зарегистрирован:
24 июл 2007, 10:41
Сообщения: 570
Пока второй американский декапер проводит полировку тестовых образцов, я решил немного заняться программированием)

Во-первых : нам необходима шустрая (реально шустрая) среда, для исполнения 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 стандартных ячеек программа тянет нормально, это без оптимизации, но там основная проблема-утечки памяти, надо глядеть где)

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


Сообщение 18 дек 2013, 00:25
Профиль ICQ WWW
Аватара пользователя

Зарегистрирован:
24 июл 2007, 10:41
Сообщения: 570
Появились первые фотографии М1:

Изображение


Сообщение 18 дек 2013, 23:46
Профиль

Зарегистрирован:
19 июн 2013, 10:59
Сообщения: 30
Посмотрел М1
Завораживащее зрелище. Хотя мне схем там не видно (знаний не хватает)

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

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


Сообщение 19 дек 2013, 01:14
Профиль ICQ WWW
Аватара пользователя

Зарегистрирован:
24 июл 2007, 10:41
Сообщения: 570
Угу, М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 МБ | Просмотров: 12998 ]
Сообщение 19 дек 2013, 08:43
Профиль

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


Сообщение 19 дек 2013, 09:15
Профиль ICQ WWW
Аватара пользователя

Зарегистрирован:
24 июл 2007, 10:41
Сообщения: 570
А диффузия у нас уже давно есть, её Михаил сделал на 40x ещё в сентябре:

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


Сообщение 19 дек 2013, 11:13
Профиль

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

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

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


Сообщение 19 дек 2013, 13:24
Профиль ICQ WWW
Аватара пользователя

Зарегистрирован:
24 июл 2007, 10:41
Сообщения: 570
Ну на малые средние и большие ячейки разделены и так. А внутри групп они сгруппированы по контурам. Я их воспринимаю как например буква "F", буква "L" итп.


Сообщение 19 дек 2013, 16:15
Профиль

Зарегистрирован:
19 июн 2013, 10:59
Сообщения: 30
Какой-то критерий все равно нужен для группировки второго уровня. Чтобы по взгляду на неизвестную ячейку можно было его выбрать. Кстати с размером может быть проблема в том, что по взгляду на диффузии нельзя сказать сколько их принадлежит одной ячейке, пока не подберешь, Надо опираться на характерные формы больших кусков, один кусок - одна ячейка .


Сообщение 19 дек 2013, 18:20
Профиль ICQ WWW
Аватара пользователя

Зарегистрирован:
24 июл 2007, 10:41
Сообщения: 570
Вы так говорите, как будто мы только что начали ячейки изучать )) Уже давно привыкли к их контурам, разработчики библиотеки постарались для нас и сделали каждую ячейку индивидуальной.

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

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


Сообщение 19 дек 2013, 19:19
Профиль

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


Сообщение 20 дек 2013, 01:06
Профиль ICQ WWW
Аватара пользователя

Зарегистрирован:
24 июл 2007, 10:41
Сообщения: 570
Прогресс по моей схеме.

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

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

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

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


Вложения:
circuit_004_topo.jpg
circuit_004_topo.jpg [ 2.06 МБ | Просмотров: 12936 ]
Сообщение 21 дек 2013, 01:12
Профиль ICQ WWW
Аватара пользователя

Зарегистрирован:
24 июл 2007, 10:41
Сообщения: 570
Трассировка моего куска завершена, входов стало больше (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 МБ | Просмотров: 12877 ]
Сообщение 23 дек 2013, 11:19
Профиль

Зарегистрирован:
19 июн 2013, 10:59
Сообщения: 30
Словом - это реализация данной VHDL конструкции?
case () is
when =>
when =>
......
when =>
end case;
Причем только выбор ветки.


Сообщение 23 дек 2013, 15:57
Профиль ICQ WWW
Аватара пользователя

Зарегистрирован:
24 июл 2007, 10:41
Сообщения: 570
Да, это switch/case.


Сообщение 24 дек 2013, 11:10
Профиль

Зарегистрирован:
19 июн 2013, 10:59
Сообщения: 30
case практически всегда используется в конечных автоматах (state_machine). В процессоре этого добра должно быть навалом.


Сообщение 25 дек 2013, 15:03
Профиль ICQ WWW
Аватара пользователя

Зарегистрирован:
24 июл 2007, 10:41
Сообщения: 570
Стало понятно назначение 4-х одинаковых блоков, о которых говорилось в начале этой темы.

Изображение

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

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

Изображение

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


Показать сообщения за:  Поле сортировки  
Ответить на тему   [ Сообщений: 305 ]  На страницу Пред.  1 ... 7, 8, 9, 10, 11, 12, 13 ... 16  След.

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 14


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by STSoftware for PTF (mod by Zeru-j).
Русская поддержка phpBB