Форум программистов, компьютерный форум, киберфорум
Hrethgir
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  

Физический препроцессор. Кэш мостов -модификаций, режимы выполнения кода.

Запись от 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 может быть просто источником тока, а вот второй источник выдает сигнал на чтение адреса кэша команд.
Миниатюры
Нажмите на изображение для увеличения
Название: Screenshot from 2024-02-16 23-11-22.png
Просмотров: 318
Размер:	16.5 Кб
ID:	8498  
Размещено в Без категории
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Всего комментариев 4
Комментарии
  1. Старый комментарий
    Ну и разумеется одного бита для части кэша мостов - недостаточно, нужен второй бит, который у всех будет в нулях, а единица - для отслеживания. Два бита - для модификации кода в рантайме.
    То-есть в принципе режимов можно сделать даже три и мб больше. Но на чём-то так или иначе надо остановиться, поэтому кэш мостов будет предусматривать пока два бита - один бит для модификаций, а второй для выполнения кода. Одним битом тут никак не обойтись.
    Запись от Hrethgir размещена 15.02.2024 в 20:52 Hrethgir вне форума
  2. Старый комментарий
    Хотя на схеме всё как-то сложно реализуется. Идея выглядит красиво, а вот реализация пока не представляется простой. Сигнал должен проходить через неактивные ячейки, и первая активная должна дать сигнал о том что активирована и с этим отсечь активацию остальных. То-есть тут только один вариант представляется возможным их простых - отсечением активации лишних ячеек. Это касательно выполнения кода без счётчика команд. Завтра попробую продумать детально, если не устану на работе чрезмерно. Обычно как-бы я не устал - на два хода хватает подумать. Главное - поменьше общаться. Общение внимание отнимает.
    Запись от Hrethgir размещена 15.02.2024 в 22:50 Hrethgir вне форума
  3. Старый комментарий
    Тем не менее, не смотря на кажущуюся сложность, задача представляется мне выполнимой без больших затрат логических элементов. Решается двумя битами на каждое звено и отсечением очереди выполнения от первого первого, с последующей сменой первого звена. То есть первый бит - флаг звена в цепи, второй бит - флаг головного звена, а цикл состоит из чтения команды и смены головного звена. Сигнал пропускает элемент с любым флагом звена в цепи, а отсекает и выполняется только головное звено. Вечером проверю и посмотрю как с этими условиями связывается возможность перешагивания через несостоящие в цепи ячейки.
    Запись от Hrethgir размещена 16.02.2024 в 05:46 Hrethgir вне форума
  4. Старый комментарий
    Установил такое Qucs‑S - схемы рисует цифровые. Правда не сразу получилось цифровые или нашёл. Уже проще. И в первой схеме, прикреплённой тут - разумеется есть недоработка. Но пока так вот. Схема бутафорская пока что.
    Запись от Hrethgir размещена 16.02.2024 в 22:02 Hrethgir вне форума
 
Новые блоги и статьи
Рефакторинг программы уравнивания.
Massaraksh7 26.05.2026
Пример по предыдущей записи в блоге. Но, надо заметить, что, во-первых, там оптимизация не только математики, но и работы с базой данных, и с графами, а во-вторых, это ещё не всё.
Использование TThread в Lazarus для математических вычислений.
Massaraksh7 25.05.2026
Производя рефакторинг своих программ на предмет ускорения их работы, обратил внимание на такой аспект, как сокращение времени матвычислений. Дело в том, что приходится работать с большими матрицами. . .
Модель здравосохранения 18. Чем здоровее работник, тем быстрее выгорает
anaschu 24.05.2026
Имитационная модель корпоративного здравоохранения: что показывает математика Сегодня в модели рабочего коллектива на AnyLogic появились три новые механики — выгорание через накопленную усталость,. . .
Модель здравосохранения 17. Планы на выгорание
anaschu 23.05.2026
Вот конкретная схема реализации: В классе Работник добавить: накопленнаяУсталость — растёт каждый час работы, снижается в перерывы и болезни коэффициентПрезентеизма — снижает продуктивность. . .
Изменение цветов в палитре gif файла aka фавикона
russiannick 23.05.2026
Изменение цветов в палитре gif файла, юзаемого как фавиконка в составе html-файла, помещенная в base64, средствами нативного Java Script, навеянное сном в майский день. Для работы необходим браузер,. . .
Модель здравосохранения 16. Слишком хорошие и здоровые сотрудники уходят, недовольные зарплатой
anaschu 23.05.2026
Отладка увольнений и настройка производительности Сегодня во второй половине дня разобрались с механикой увольнений и настроили коэффициент сложности заданий. Вот что было сделано. . . .
Как я стал коммунистом))) Модель сохранения здоровья сотрудников, запись блога номер 15
anaschu 23.05.2026
Внезапно хорошее здоровье сотрудников не нужно капиталистам?))
Модель здравоСохранения 15. Как мы чинили AnyLogic модель рабочего коллектива: сочленение диаграммы состояний болезней и поломок в ресурспул
anaschu 23.05.2026
Как мы чинили AnyLogic модель рабочего коллектива Сегодня разобрались с пятью багами, из-за которых модель либо падала с ошибкой, либо давала совершенно бессмысленные результаты. Каждый баг был. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru