(продолжение работы над своим процессором, и в заголовке про физическую память так как везде поисковиком находится про ячейки Excel).
Сначала думал - да ну какая мелочь для процессора, но потом подумал - многие пишут о мелочах и даже получают плюсы, почему не написать о мелочи, если чип создаётся новый.
Сразу говорю, что роль памяти в данной схеме играют SR триггеры предполагаемого FPGA и процедура заполнения любого числа цепи ячеек (или даже одной) выполняется за два рабочих такта проектируемого процессора, независимо от числа выбранных ячеек. Над этой задачкой пришлось немного поломать голову, и нужно было понять что такое управляемый буфер (в данном случае это для Logisim Evolution).
После того, как составил рабочую схему кэша мостов, для работы процессора в режиме без счётчика команд, приступил к схеме управления кэшом мостов. Кэш мостов - это кэш обеспечивающий выполнение команд без счётчика команд, и позволяющий выполнять только команды в обозначенных ячейках памяти. По сути управление кэшем мостов сводится к мгновенному заполнению групп выбранных ячеек. И вот для того, чтобы обеспечить бесперебойную работу управляемых буферов в сложной цепи (множество ячеек и множество источников сигнала) пришлось пойти на Хитрость с ИСКЛЮЧАЮЩИМ ИЛИ.
Триггеры группы Last - нижний ряд триггеров на данном изображении, служит для обозначения последнего триггера данной группы для конкретной ячейки, в который запишется единица и заблокирует прохождение сигнала по верхнему проводнику, через который подряд записывается единица в сами эти ячейки памяти механизма управления кэшем мостов - в триггеры группы Memo (незаконченное слово, так как по сути всё это является устройством для управления памятью, а не ей самой).
Подаётся сигнал единицы на два контакта для обозначения последней ячейки цепи (на изображении предпоследний нижний контакт и контакт нижнего горизонтального на схеме провода)
Затем подаётся сигнал для заполнения триггеров памяти механизма управления кэшем мостов - триггеров группы Memo (сам кэш мостов описан в предыдущей публикации и здесь приведу его позднее), и сигнал единицы проходит направо по схеме беспрепятственно, заполняя все триггеры Memo, вплоть до ячейки с заполненным триггером Last . Два ранее задействованных контакта перезодят в режим бездействия (сигнал нуля или плавающее состояние).
И вот в чём тут фокус: дело в том что, чтобы подать сигнал для начала заполнения цепи, управляемый верхний буфер предыдущей ячейки должен подавать на выход плавающий сигнал, не противоречащий любому (сигналу нуля или единицы) поступающему на соединение сразу после него, а разрешать прохождение сигнала должен сигнал единицы по условию функционирования управляемого буфера, но сигнал единицы на контакте управления не разрешит выходящий плавающий сигнал если на вход управляемого буфера подаётся ноль. Что делать? Для этого было решено включить в эту схему элемент ИСКЛЮЧАЮЩЕГО ИЛИ, и при подаче на нижний контакт от него справа он подавал-бы на верхний буфер сигнал нуля, разрешающий на выходе буфера плавающее состояние, и тогда сигнал с правого нижнего соседнего контакта соседней ячейки пойдёт беспрепятственно, записывая далее по ячейкам единицу во все триггеры группы Memo, пока не дойдет до ячейки с единицею в триггере группы Last .
И кстати упор скорости прохождения сигнала у меня не на логические вентили. Так что скрин кэша мостов я немного передалаю, а пока удалю.
Управляемый буфер, по логике не является логическим устройством- это ключ, я считаю что моя точка зрения верна, так как это работает через управление сопротивлением, никакой задержки тут нет.
Итак это ключ, я считаю что моя точка зрения верна, так как это работает через управление сопротивлением, никакой задержки тут нет.
Базовый принцип работы
В состоянии покоя между коллектором и эмиттером биполярного триода ток не протекает. Электрическому току препятствует сопротивление эмиттерного перехода, которое возникает в результате взаимодействия слоёв. Для включения транзистора требуется подать незначительное напряжение на его базу.
....Таким образом, полупроводниковые триоды могут работать в режиме электронных ключей или в режиме усиления входных сигналов.
Источник: https://www.asutpp.ru/kak-rabotaet-tranzistor.html
И было это ещё со школьного материала. Никаких тут суперматериалов - ничего фантастического нет.
В цифровой схемотехнике это называется электронным ключом, у меня он выведен из Z состояния заблаговременно.
Основная задержка в схеме от этого
Когда два электрических проводника или части находятся в физической близости, несут заряд, и между ними существует определенный потенциал напряжения, они, вероятно, произведут виртуальный конденсатор среди них; это верно даже в том случае, если все проводники адекватно изолированы.
Обратите внимание, что виртуальный конденсатор между этими проводниками часто называют паразитной емкостью.
Судя по всему - мне это не грозит сильно, так как пропускаться у меня будут блоки команд, и стало быть паразитные ёмкости будут невелики, к тому-же блоки у меня в поледовательной цепи, а не параллельной.
Паразитной емкостью - я пренебрегаю. Ищу альтернативу согласующему резистору, работает и без него, но не радует красный цвет участков цепи в симуляторе.
Понятно, что читатель ждёт более визуабельного чего-то, и более подробного - так как сам люблю узнавать новое из чтения интересного, но это пока можно ожидать в будущем. Пока только так - схемы.
В общем-то из задач, для кэша команд, остаётся "хирургия" над микросхемами памяти в качестве "донаров" для кэша команд и "имплантировать" в их изъятые части кэш мостов и механизм управления им, но это уже скорее будет с языками программирования, чисто схемами там не отделаться.
Комментарии (7)
accurate_random Автор
02.04.2024 03:27Не туда написал ответ. Исправил https://habr.com/ru/articles/804633/#comment_26684749.
ValeriyPushkarev
Пока что вы делаете печально известный Maticore (ethz). Использование простой парадигмы Вычисляй Больше сохраняй Меньше (и трюк с циклами - циклы на машине состояний, экономятся tick-и и, возможно, выполняя инкремент параллельно телу цикла) позволили немного повысить эффективность. Да и в общем-то все делают подобные альтернативы максимально похожими на граф исполнения. (https://safari.ethz.ch/architecture_seminar/spring2021/lib/exe/fetch.php?media=manticore.pdf)
К сожалению, шины довольно энергозатратны (да и явный разрыв между публикациями "авторов" суперCPU и собственно самим суперCPU) не дают процессору пойти в жизнь. (а еще тяжесть разработки для него).
Не проще заполнять RS\D триггеры по сигналу, а затем вычитывать последовательность по счетчику? Быстрее, меньше тепла, чуть больше транзисторов. Логическая глубина при записи 2. При чтении - сумматор+декодер.
А в общем - у вас есть 1 дельная мысль в ваших публикациях, а именно - увеличение "специализации" кэша.
(спойлер - большинство PhD исследуют именно кэш. Сложить 2 числа -не более 100 транзисторов. Получить данные из кэша - гораздо больше)
accurate_random Автор
А можно схему этого вашего печально известного? После работы вечером ознакомлюсь. Судя потому что вы считаете что вычитание по счётчику быстрее мгновенной записи в последовательность - можно только задать вопрос - как это у вас большее число получается меньшим? В чем логика? В сравнении работает математика, а не утверждение, и тут всё измеримо, в отличии от рассуждений.
ValeriyPushkarev
Вы энергопотребление посчитайте, с переносом от одного RS триггеру к другому. Правильно, много. А теперь откройте таблицу задержек логических элементов для 7 nm (не топ). Инвертер - 2 ps. Сумматор - см. logical depth carry-lookahed adder. Умножьте на 4 - получите задержку (в ps).
accurate_random Автор
Обед. А чем отличается количество энергии подаваемой разово от количества подаваемой по частям, при условии выполняемого одного и того-же объёма работы? Задержек нет-нет вентили приведены в состояние пропускания сигнала задолго до его прохождения. А вот энергопотребление на работу вентилей - будет. А вот задержки нет. И тогда остаётся посчитать что больше требует энергии - один вентиль на каждую ячейку (раз уж так грубо) , или работа счётчика на каждую ячейку, а вместе с ней работа дешифратора адресов на каждую ячейку ,счётчик это ещё так - "цветочки"? Ссылочку на схему вашего печально известного ещё раз можно попросить?
ValeriyPushkarev
Я привел вам ссылку на публикацию, где описаны все особенности данного CPU (дерево шин, обработка циклов и прочее). Подсказка - даже предложенное дерево шин является неоптимальным для обработки тех же нейросетей (да и всего остального).
Создатели DSP, которыми вдохновляются авторы, уже давно перешли на grid-ы (память, ряд ядер (с SIMD), шина, ряд ядер (c SIMD)/кеш, ..., память). Иногда к этому добавляют возможность коммуникации с предыдущими слоями\ исходным банком памяти, чтобы не тащить данные через 100 ядер и 100 шин (ну и соответственно с последующими слоями\целевой памятью).
Очень сильно отличается. Сколько, по вашему, потребляет селектор? Правильно, примерно n*log(m) переключений (m- количество линий, n - количество переключений транзисторов в 1 селекторе (как правило, меньше 20)).
Для буфера в 1 кБ получаем 3*10 = 30 транзисторов. Для передачи от регистра к регистру - 1000*4 = 4000. И так, разница уже в 2 порядка.
Ого. Вообще-то основные задержки - в вентилях (пока еще). А вы делаете ParallelToSerial converter
accurate_random Автор
вы привели ссылочку на файл. Нет причины доверять.
К этому моменту вы забыли посчитать дешифратор адресов, на что Вам было отвечено
На это
я ответил уже что ключевой логический элемент приводится в нужное состояние заблаговременно (иначе я не стал0бы даже пытаться, не то, чтобы писать или говорить),
а то что остаётся - благодаря паразитическим емкостям, и основная задержка будет на выходе целой микросхемы, а малой топологии, внутри её - ещё можно что-то предпринять.
В людом случае - у вас мало шансов убедить меня, так как паразитические ёмкости - не очень убедительный аргумент, и кроме того само название указывает на то, что с этим эффектом можно бороться не безуспешно или искать какие-то компромисы, пока технологии материалов отстают.
Спасибо за внимание, я продолжу в любом случае, так как на архитетктуру мою меня навела не просто идея, а мой код, к идее замены свёрточных нейросетей. Так что я не оставлю своего движения в этом направлении, а с ним и к собственной этой архитектуре. Что там печально известное спрятали от всех - мне абсолютно не интересно. Я иду не от идеи собственной архитектуры, а от кода и альтернативы свёрточных нейросетей.
К тому-же там по вашей ссылке - нет кэша мостов, так что это не интересно мне, много циклов похожи друг на друга, это не говоряще, а вот идея модификации кода в рантайме, посредством кэша мостов - это нормально.
Спасибо за подсказу и внимание, буду знать что по циклам похожее было.