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

Отдельный кэш для шлюзов, для мостов, и для переменных. Снова цикл с параметром.

Запись от Hrethgir размещена 18.12.2023 в 22:16
Показов 2301 Комментарии 10

Для реализации своих программ, вероятно в процессоре реализую отдельный кэш шлюзов. Для шлюзов будет использоваться всего две команды проверка на вход и проверка на выход и числовой идентификатор шлюза. Для работы с кэшом шлюзов вероятно будет своя аппаратная часть процессора.
Эту необходимость учитываю из этой схемы моих циклов
[url]https://habr.com/ru/articles/769972/[/url]
[IMG]https://habrastorage.org/r/w1560/getpro/habr/upload_files/c9d/9d8/ffd/c9d9d8ffde0d750948f151b0dde4b03f.png[/IMG]
в псевдокоде примерно так
[CODE]count:=myVariable;
if Not (count = 0) Then begin
label1:
...;
...;
...;
dec(count);//or inc (count)
if Not (count = 0) then goto label1;
end;[/CODE].
Идентификатор один и тот-же. Второй кэш - это кэш выполняемого кода с другими командами. Код разелён на блоки, а два кэша связаны между собой мостами (bridge). Третий однозначно для переменных, но значение счётчика для шлюзов будет храниться в кэше для шлюзов. Данный процессор будет делаться под конкретный ЯП, и методу программирования. Общего с другими ЯП у него не будет, и называться он будет целевым, чтобы не смущать общественность. Но ... под различные задачи, самые различные. Правда знакомых алгоритмов там вряд-ли вами будет обнаружено, но вероятно будут, так как некоторые решения альтернатив не могут иметь, как ноумены в сравнении с феноменами.
Проверка переменных на равнозначность планируется только аппаратная, без вычеслений (нет ничего сложного в реализации логической схемы, я не понимаю почему проверка на равенство происходит в процессорах через вычитание, а не аппаратно). Планируется три кэша в общем: кэш кода, переменных и шлюзов. Надобность в метках для циклов после этого отпадет, а над модификациями прийдётся подумать, стоит попробовать заменить ими обычные метки и указатели.
По сути метка и указатель на неё - вариант модификации. И вот тут стоит подумать тщательно. В принципе ничто не мешает реализовать выбор блока кода на переходе по мосту из кэша шлюза в кэш кода, на конкретный блок. То-есть получается вообще сложно, но гибче - данные все разделены по типу уже аппаратно, циклы не являются исполняемым кодом, а являются аппартным (цикл с параметром реализуется на аппаратном уровне, уровне среды, а не на уровне кода) свойством среды (процессора). В терминологии полный разрез с традиционной, но постараюсь найти варианты переводов, синонимов, антонимов.
Пока так, это не много, и в общем я на этом прекращаю активность до наличия отлаженного процессора, кроме активности в разделе по ПЛИС и FPGA.
Для чего я это делаю? Для чего не знаю, знаю почему - потому что алгоритм Брезензема проиграл в текущем ТЗ генерации карт.

[SIZE="6"]Правка 20.12.2023: 20:55.[/SIZE]
достаточно было определить их формат хранения и функционирования, чтобы понять (где их данные будут храниться и как выводиться), что мосты будут так-же как и код - блоками, если надо, а если нет - не блоками. Мосты - основное средство модификации программы.
Изначально задумывалось, что мост будет указывать на начало блока кода в кэше кода и на его окончание. Следовательно аппаратно под мосты нужно выделить две шины, чтобы мосты работали за один такт, с одной шины пойдёт на адрес в кэш на считку первой ячейки. Сам блок кода в кэше мостов активироваться будет по обычной адресации, но выходить данные будут первые, по отдельной шине, на начало в кэш кода, вторые сразу на регистр слежения за точкой останова.
То-есть мосты имеют вдвое увеличенный кэш, две шины. Та что соединяет кэш мостов с регистром слежения, будет служить для ожидания сигнала от процессора - команды.
Между кэшами будут какие-то микросредства, но не процессора.
Последовательность установки контроля над выполнением программы такая будет вероятно
[IMG]https://www.cyberforum.ru/blog_attachment.php?attachmentid=8404&stc=1&d=1703095662[/IMG]
Непересекаемость и последовательность кэшей позволят, без ожидания выполнения команд в любом последующем кэше, взводить в готовность предыдущий и его аппаратные средства. И как только в регистр слежения за кэшом команд поступить сигнал о начале выполнения последней, в кэше мостов прочитается следующий мост в блоке мостов, а если и блок мостов был последний, то взведение кэша циклов произойдёт ещё раньше, по возможности за два шага до выполнения последней команды в кэше команд.

Данная схема ещё пока не раскрывает как будет действовать модификация программы, над этим ещё стоит подумать.
название это получит вероятно...луч (Ray), лучевой, лучевая система (beam system), потому что блоки глобального процессора максимально возможно пересекаться не будут и будут иметь возможность бесконечного действия, где каждый предыдущий блок опережает на шаг последующий. Всё это пока что не проработано, но в любое свободное время я буду над схемой работать, по возможности.
Уточнение схемы
[IMG]https://www.cyberforum.ru/blog_attachment.php?attachmentid=8433&stc=1&d=1703422025[/IMG]
Цвета поменял, красный корректирующий, как на блок схеме циклов, зелёный - первоначальнй.
Миниатюры
Нажмите на изображение для увеличения
Название: Screenshot from 2023-12-20 21-06-35.png
Просмотров: 451
Размер:	14.4 Кб
ID:	8404   Нажмите на изображение для увеличения
Название: Screenshot from 2023-12-24 15-46-46.png
Просмотров: 929
Размер:	56.5 Кб
ID:	8433  
Размещено в Без категории
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Всего комментариев 10
Комментарии
  1. Старый комментарий
    То есть вы решили подстроить процессор под программу, а не наоборот?
    Допустим у вас получится создать такой процессор. Дальше что? Ваши программы будут работать только на вашем процессоре, который есть только у вас. То есть для других людей они бесполезны.
    Да, придется еще написать компилятор с ЯВУ в машинный код вашего проца. Сможете написать оптимизирующий не хуже чем GCC? Если нет, то все оптимизации в проце сведет на нет не оптимальная программа.
    Запись от locm размещена 19.12.2023 в 13:18 locm на форуме
  2. Старый комментарий
    [QUOTE]То есть вы решили подстроить процессор под программу,[/QUOTE]
    Не под программу, а под то, как я программирую.
    [QUOTE]Да, придется еще написать компилятор с ЯВУ[/QUOTE]
    компилятор да, только ЯВА тут причём? Вообще не при чём.
    [QUOTE]Сможете написать оптимизирующий не хуже чем GCC?[/QUOTE]
    оптимизирующий что? Оптимищирующий машинный код? Машинный код у меня вполне упрощается за счёт отделения по кэшу даже циклов, а ЯП собственно, по уровню будет привязан к этому разделению, следовательно и оптимизация сложная требоваться не будет. Это будет совсем другая вычислительная машина, практически, разве что электронная и пока на двоичной логике, а там видно будет.
    [QUOTE]Если нет, то все оптимизации в проце сведет на нет не оптимальная программа.[/QUOTE]
    в программировании вопросы веры меня волнуют меньше всего.

    Для кого-то может не понятно, насколько код упрощается за счёт отделения циклов от кода, как это влияет на программирование вообще. Это вообще другое программирование. Нет необходимости в привычных метках, неудобных, запутывающих и вносящих кучу неудобств и ограничений. Тут всё будет выглядеть иначе, и вообще не важно какая логика реализуется, цикличность наблюдается везде и во всём, циклы переплетаются с событиями по определённым законам. Это во всей наблюдаемой вселенной. Это даже больше будет похоже не на процессор, а на аппаратную среду. А насколько удачно я её разовью - другой вопрос.
    Как минимум - противопоставляющийся алгоритм Брезенхема проиграл в эффективности к текущему ТЗ по генерации карт трассировок.
    Запись от Hrethgir размещена 19.12.2023 в 20:28 Hrethgir вне форума
  3. Старый комментарий
    [QUOTE]Для кого-то может не понятно, насколько код упрощается за счёт отделения циклов от кода, как это влияет на программирование вообще. Это вообще другое программирование. Нет необходимости в привычных метках, неудобных, запутывающих и вносящих кучу неудобств и ограничений. [/QUOTE]
    Чтобы было понятнее - нужен перевод кода. Хорошо, я как раз над этим работаю в свободное время.
    Запись от Hrethgir размещена 19.12.2023 в 22:03 Hrethgir вне форума
  4. Старый комментарий
    Но сначала о мостах. Циклы - гейты, шлюзы, мосты связывают гейты с блоками исполняемого кода. И вот тут главное - мост определяет ячейку выхода. Это следует из этого участка кода
    [PASCAL]{%REGION 'Engine'}
    asm
    JMP p
    end;
    p1:
    StringGrid1.Cells[px^, py^] := IntToStr(pTracerX^) + ',' + IntToStr(pTracerY^) + ',' + '1';
    //запись правого столбца
    p := @p3;
    goto p4;
    p2:
    y1:=y+1;
    //автоматическое забивание координат в местах скоса трассы
    p := @p3;
    goto p5;
    p3:
    y1:=y;
    p5:
    x1:=x-xInc;
    StringGrid1.Cells[px^, py^] := IntToStr(px1^) + ',' + IntToStr(py1^) + ',' + '0';
    //автоматическое забивание координат трассы на прямых участках
    p4:
    x:=x+xInc;
    {%ENDREGION} [/PASCAL]
    Тут не получится избежать меток, если мост не будет содержать информации о выходе с блока кода.
    Зато если мост содержит её - то всё легко и без меток, легко и естевенно.
    детали о коде тут [url]https://habr.com/ru/articles/769972/[/url]
    Информация о мостах должна содержаться ... точно не в кэше блоков кода... .
    В ввиду модификаций она должна была-бы содержаться в кэше переменных... с учётом того что мосты могут изменяться в ходе модификаций, но ...
    мосты - не переменные величины... архитектура не простая... модификации в кэше циклов лучше не проводить. Задачка. Четвёртый кэш совсем не хочется делать. Информацию о мостах можно хранить в кэше переменных, но после них. Это как вариант.
    Зато становится очевидным, что увеличение количества кэшей может сократить емкость хранимой инофрмации необходимой для работы аппарата, при этом увеличивается число команд такого процессора... Тут нужно подумать.
    Запись от Hrethgir размещена 19.12.2023 в 22:15 Hrethgir вне форума
  5. Старый комментарий
    Аватар для Usaga
    Не под программу, а под то, как я программирую.
    А нельзя программировать как все? Чтобы не нужно было тратить время и ресурсы на изобретение собственных процессоров? Или цель не результат (программа), а что-то другое?
    Запись от Usaga размещена 20.12.2023 в 10:14 Usaga вне форума
  6. Старый комментарий
    Не забывайте одобрять сообщения, иначе они не видны.

    компилятор да, только ЯВА тут причём? Вообще не при чём.
    ЯВА не причем, но вы как программист обязаны знать что ЯВУ это Язык Высокого Уровня.
    Запомните это на будущее.

    оптимизирующий что? Оптимищирующий машинный код?
    Узнайте у Вики https://ru.wikipedia.org/wiki/... компилятор
    https://habr.com/ru/companies/vk/articles/477062/
    Оптимизация позволяет в том числе создавать машинный код наиболее оптимально использующий ресурсы архитектуры проца под который компилируется исходник.

    Это следует из этого участка кода
    Вот этот участок
    Pascal
    1
    
    StringGrid1.Cells[px^, py^] := IntToStr(pTracerX^) + ',' + IntToStr(pTracerY^) + ',' + '1';
    сведет на нет всю скорость выполнения на вашем проце.
    Или вы собираетесь аппаратно в проце реализовать заполнение таблицы с учетом что она реализована программно и проц о ней ничего не знает?!
    Кстати, а как вы скомпилируете винду под ваш проц? Она же с закрытым кодом!
    Запись от locm размещена 20.12.2023 в 15:35 locm на форуме
  7. Старый комментарий
    Ну во первых ничего в моём коде не сведёт оптимизацию. Оптимизация аппаратная по максимуму будет.
    Думать о собственно было не о чем, на предмет мостов, достаточно было определить их формат хранения и функционирования, чтобы понять (где их данные будут храниться и как выводиться), что мосты будут так-же как и код - блоками, если надо, а если нет - не блоками. Мосты - основное средство модификации программы.
    Изначально задумывалось, что мост будет указывать на начало блока кода в кэше кода и на его окончание. Следовательно аппаратно под мосты нужно выделить две шины, чтобы мосты работали за один такт, с одной шины пойдёт на адрес в кэш на считку первой ячейки. Сам блок кода в кэше мостов активироваться будет по обычной адресации, но выходить данные будут первые, по отдельной шине, на начало в кэш кода, вторые сразу на регистр слежения за точкой останова.
    То-есть мосты имеют вдвое увеличенный кэш, две шины. Та что соединяет кэш мостов с регистром слежения, будет служить для ожидания сигнала от процессора - команды.
    В публикации правка, скрин схемы. Описание в публикации после изображения.
    [QUOTE=Usaga;bt33836]А нельзя программировать как все? Чтобы не нужно было тратить время и ресурсы на изобретение собственных процессоров? Или цель не результат (программа), а что-то другое?[/QUOTE]
    [QUOTE]Для чего я это делаю? Для чего не знаю, знаю почему - потому что алгоритм Брезензема проиграл в текущем ТЗ генерации карт.[/QUOTE]
    Вы-же не задумываетесь, когда вам холодно - зачем вы одеваете тёплую одежду. Не зачем вы одеваете тёплую одежду, а почему : потому что есть причина - холод. Так и тут.


    И если я алгоритм сравнивал с трактором, то процессор такой с взводимой системой назвать можно будет ... молотилкой (трактор - комбайн), но название это получит вероятно...луч (Ray), лучевой, лучевая система (beam system), потому что блоки глобального процессора максимально возможно пересекаться не будут и будут иметь возможность бесконечного действия, где каждый предыдущий блок опережает на шаг последующий.
    Запись от Hrethgir размещена 20.12.2023 в 20:51 Hrethgir вне форума
  8. Старый комментарий
    Аватар для Usaga
    Вы-же не задумываетесь, когда вам холодно - зачем вы одеваете тёплую одежду. Не зачем вы одеваете тёплую одежду, а почему : потому что есть причина - холод. Так и тут.
    Если продолжать аналогии, то твой подход - при холоде начать проектировать фабрику пошива одежды, вместо того, чтобы заштопать фуфайку или выбрать одёжу потеплее. Трудозатраты, на которые ты нацелился, чудовищно несоответствуют проблеме решаемой.

    Если алгоритм плохо работает, то его оптимизировать надо, а не процессор изобретать...
    Запись от Usaga размещена 21.12.2023 в 07:13 Usaga вне форума
  9. Старый комментарий
    [QUOTE=Usaga;bt33845]Если продолжать аналогии, то твой подход - при холоде начать проектировать фабрику пошива одежды,[/QUOTE]
    -
    не точно, точно:
    сшить одежду с своего материала, пусть даже это будет шкура мамонта - мне не важно.
    [QUOTE]Если алгоритм плохо работает[/QUOTE]
    [B][I]Мой алгоритм отлично [U][COLOR="Red"]не работает[/COLOR][/U][/I][/B]: достигает тот-же результат по ТЗ что и алгоритм Брезенхема мне навязываемый, при выполненном объёме работ по расчётам в разницу [B][I]x*y - (x+y)[/I][/B], а результат количественно - одинаковый, равен [B][I]x*y[/I][/B].
    Удачи.
    Обычные процессоры очевидно под другие алгоритмы, которые выполняют столько работы, сколько вряд-ли когда требовалось вообще для достигнутых результатов. Суетяги - одним словом. Мне зябковато в вашем мире бесполезной суеты (в мире вашего программирования, жить можно, но одежку нужно с своего материала иметь).
    Запись от Hrethgir размещена 21.12.2023 в 21:11 Hrethgir вне форума
  10. Старый комментарий
    Вроде как можно в другую фазу переходить. Если последняя схема более менее пригодна, то можно пытаться перевести код генератора.
    В ходе перевода обнаружатся недоработки и ошибки общей схемы.
    Запись от Hrethgir размещена 22.12.2023 в 21:09 Hrethgir вне форума
 
Новые блоги и статьи
Жизня: рисунок укладки багажа, сделанный клодом
anaschu 21.08.2026
Сделал 15 снимков, он по снимкам сделал схему.
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства. Жизнь действительно предъявляет каждому. . .
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
Лето уходит
kumehtar 17.08.2026
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины". За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html Задача: . . .
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru