Физический препроцессор. Кэш мостов -модификаций, режимы выполнения кода.
Запись от Hrethgir размещена 14.02.2024 в 21:28
Показов 1251
Комментарии 4
|
Это лучшее что могло прийти мне в голову в рамках проекта ... препроцессора. Постпроцессор я пока не брался проективровать. Ну и в общем буду готовить материал к публикации, человек сказал что ему не безынтересно, так как он программирует FPGA, и я расчитываю на некоторую помощь, так как в этом деле совсем нуб. Чем-же так хорош может быть кэш мостов и бриджей...Предыдущая схема отсюда [url]https://www.cyberforum.ru/blogs/223907/blog8363.html[/url] [IMG]https://www.cyberforum.ru/blog_attachment.php?attachmentid=8433&stc=1&d=1703422025[/IMG] Но я детализирую её. Часть кэша мостов, я не буду говорить бридж, просто мост. Все кэшы у меня доступны программисту будут (пока только мне, так как ещё ничего нет даже, кроме FPGA на полочке)). Часть кэша мостов будет пристраиваться прямо к кэшу кода. И как-же будет выглядеть часть кэша мостов - она будет представлять собой дополнительный байт к ячейке памяти кэша кода, предположительно всего байт. Это будет для того, чтобы включать буквально и выключать ячейки кэша кода. То-есть модификация кода, как я препологала раньше, с помощью мостов, будет работать именно так. В кэше кода код будет иметь два режима выполнения, и тот о котором идёт речь - без счётчика команд: код выполняться будет последовательно, но только в цепи тех ячеек, в которой бит моста выставлен в едниницу. Пусть этот режим выполнения кода в кэше называется режимом безусловного выполнения. Это всё будет поддерживаться на аппаратном уровне и без каких-либо вычислений и слежений счётчиков (хотя адрес последнего выполнения можно сохранять где-то...на всякий случай). Те ячейки кэша кода, где в битах мостов записаны нули - просто будут пропускаться, без каких-либо пауз, задержек, счётчиков и прочего. Это потребует усложненния схемы ячеек памяти кэша кода, но незначительных. Код будет выполняться из ячейки в ячейку аппартными средствами памяти кэша кода. Выйти их режима такого турбовыплнения можно просто командой процессору, выполненной даже из того же кэша кода. Те ячйки памяти кэша кода, где прописаны нули, во время работы в таком режиме - просто будут прозрачны для процессора и самой памяти кэша кода. Управление кэшем мостов будет полностью доступно программисту. Таким образом нет нужды проводить модификации кода на уровне программирования, код может модифицироваться в рантайме, например пока процессор ожидает результата работы АЛУ, который нужен в качестве данных для работы кода. Да это может требовать некоторых затрат времени , в зависимости от выполняемой задачи, но когда ячейка просто передаёт выполнение в следующю следом идущую не содержащую нуля в бите мостов - как минимум на мой нубский взгляд в сземотехнике: это можно реализовать быстрее чем любая ячейка обрабатывает поступивший на шину адрес выполнения кода. И да - режимов выполнения будет два, смена режима - командой машинного кода. Это пока всё препроцессор. Дальше по плану постпроцессор. Процессор трогать не стану, так как в рамки интепретации архитектуры вычислительной машины, которую рассматриваю - этот термин просто не вписывается. Ну и в общем-то буду готовить материал к публикации на Хабре, заинтересованному человеку обещался в воскресенье выложить. От понедельника - это лучшая идея, пришедшая мне в голову. Ах да, я ещё формулу анализировал (ушло по часу в вечер - два, может чуть больше - кнопку таймера не нажимал)- ничего паранормального там нет, этот код я изменил так, работает как надо [PASCAL] //TracerX := x - ( znak*sign(trunc((1+sign(y-trunc(y/(stepsBig+1))*(stepsBig+1)-steps)/2))) + formula1)+1; TracerX := x - formula1+1; if (y mod SummSteps)-steps = 0 then TracerX:= TracerX-znak; if (y mod SummSteps)-steps > 0 then TracerX:= TracerX-znak; [/PASCAL]. На этом пока всё. И да, почему это часть кэша: потому что работает на уровне схемы, привязана к организации кэша выполняемого кода, а в целом организация работы мостов и модификации кода в рантайме - требует схематически больше, даже если это не будет требовать затрат на время выполненния работы. Записывать биты в ячейки мостов в кэше выполняемого кода, аппаратными средствами можно и отрезками, но это потребует усложнения схемы кэша мостов, зато можно выигрывать по времени - гипотетически. Схемы пока относительно грубы, но ориентир пока что именно на них, разумеется к публикации я их улучше. Да это может быть фантазия, но я отталкиваюсь от конкретного своего кода, который вполне себе работает не плохо и даже лучше традиционного алгоритма, и интепретации архитектуры ЭВМ. Личне мне идея такой организации выполнения редимов работы препроцессора и экшей - очень нравится, и возлагаю надежды на успешное окончание работ по архитектуре, и надеюсь что найду единомышленников в программировании и дальнейшей работе над проектом, ну а если нет - не остановлюсь, так как считаю генератор карт трассировок неплохим кодом и идеей в отличии от алгоритма Брезензема в текущем ТЗ, и думаю, что поступаю верно, что кую железо пока оно горячо. Так-же планирую, что дерименты и инкрименты в кэше циклов будут производиться его аппаратными средствами контроля (иначе не станет возможной беспрерывная автоматическая работа конвейера), и вероятно инкрименты и декрименты смогут выполнять многие узлы внутреннего контроля в препроцессоре (пока в единицу, и думаю, что больше и не потребуется, хотя это пока гипотетически). И конечно всем известно, что кэш недоступен для программиста в традиционном IT, благодаря чему многие программисты хвастаются что им он якобы доступен, потому что они пишут якобы правильный код (который попадает в процессоре в кэш кода куда надо и как надо), и то-есть тогда никто не скажет что было уже :) . Кэш команд, а не кэш кода. Понял, когда нарисовал первую схему отсечения адресов кэша команд. Грубо, мб с ошибками. Пояснения завтра и наверное с вопросами в раздел ПЛИС [IMG]https://www.cyberforum.ru/blog_attachment.php?attachmentid=8498&stc=1&d=1708114333[/IMG] Файлом я обозначил ячейку памяти кэша кода, но там ещё от активного адреса сигнал идёт на логический элемент и, который включает месфет на затвор. Сингнал источника 1 может быть просто источником тока, а вот второй источник выдает сигнал на чтение адреса кэша команд. |
Размещено в Без категории
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Всего комментариев 4
Комментарии
-
Ну и разумеется одного бита для части кэша мостов - недостаточно, нужен второй бит, который у всех будет в нулях, а единица - для отслеживания. Два бита - для модификации кода в рантайме.
То-есть в принципе режимов можно сделать даже три и мб больше. Но на чём-то так или иначе надо остановиться, поэтому кэш мостов будет предусматривать пока два бита - один бит для модификаций, а второй для выполнения кода. Одним битом тут никак не обойтись.Запись от Hrethgir размещена 15.02.2024 в 20:52
-
Хотя на схеме всё как-то сложно реализуется. Идея выглядит красиво, а вот реализация пока не представляется простой. Сигнал должен проходить через неактивные ячейки, и первая активная должна дать сигнал о том что активирована и с этим отсечь активацию остальных. То-есть тут только один вариант представляется возможным их простых - отсечением активации лишних ячеек. Это касательно выполнения кода без счётчика команд. Завтра попробую продумать детально, если не устану на работе чрезмерно. Обычно как-бы я не устал - на два хода хватает подумать. Главное - поменьше общаться. Общение внимание отнимает.Запись от Hrethgir размещена 15.02.2024 в 22:50
-
Тем не менее, не смотря на кажущуюся сложность, задача представляется мне выполнимой без больших затрат логических элементов. Решается двумя битами на каждое звено и отсечением очереди выполнения от первого первого, с последующей сменой первого звена. То есть первый бит - флаг звена в цепи, второй бит - флаг головного звена, а цикл состоит из чтения команды и смены головного звена. Сигнал пропускает элемент с любым флагом звена в цепи, а отсекает и выполняется только головное звено. Вечером проверю и посмотрю как с этими условиями связывается возможность перешагивания через несостоящие в цепи ячейки.Запись от Hrethgir размещена 16.02.2024 в 05:46
-
Установил такое Qucs‑S - схемы рисует цифровые. Правда не сразу получилось цифровые или нашёл. Уже проще. И в первой схеме, прикреплённой тут - разумеется есть недоработка. Но пока так вот. Схема бутафорская пока что.Запись от Hrethgir размещена 16.02.2024 в 22:02


