Важная информация

User Tag List

Страница 3 из 3 ПерваяПервая 123
Показано с 21 по 29 из 29

Тема: Проектирование процессора

  1. #21

    Регистрация
    11.04.2023
    Адрес
    г. Ташкент, Узбекистан
    Сообщений
    158
    Спасибо Благодарностей отдано 
    46
    Спасибо Благодарностей получено 
    67
    Поблагодарили
    29 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Lightbulb

    Цитата Сообщение от andrews Посмотреть сообщение
    входил сам под разными аккаунтами и во второй раз начинал с результатов, полученных после многих итераций на первом аккаунте и DeepSeek продолжал уже не с "нуля" и довольно быстро пришел к требуемому результату.
    Может всё дело в т.н. температуре?
    Если в начале сессии указать "максимальную температуру", нейронка будет иметь вольнодумства в процессе мышления.
    Цитата Сообщение от andrews Посмотреть сообщение
    если вы предлагаете что-то новое, то он уясняет не сразу, а после нескольких итераций. Иногда, кстати, зацикливается, и надо проявить изобретательность
    Представлял ей готовые модули на JavaScript и Verilog. Притворяется, что "теперь всё понятно", но всё также допускает грубые ошибки.

    Исходный текст шаблона таков:
    Код:
    Условные сокращения числовых индексов:
    	- "i" - цифра от 0 до 9 для указания индекса регистра-индекса/базы;
    	- "o" - цифра от 0 до 9 для накопительного указания относительного смещения;
    	- "n" - цифра от 0 до 9;
    	- "v" - цифра от 0 до 9;
    	- "m" - число от 00 и выше, количество разрядов не ограничено:
    		- каждая цифра числа последовательно конкатенируется в цепочку однотипных операций.
    	- "w" - число от 00 и выше, количество разрядов не ограничено:
    		- каждая цифра числа последовательно конкатенируется в цепочку однотипных операций.
    
    Условные сокращения регистров и регистровых групп:
    	- Обобщение:
    		- "R" - регистр-приёмник / "Receiver" → R ∈ {"A", "B", "C" или "D"} (0xA-0xD в старшем ниббле);
    		- "T" - регистр-транслятор / "Translator" → T ∈ {"A", "B", "C" или "D"} (0xA-0xD в младшем ниббле).
    	- Особые случаи:
    		- "G" - псевдоним "T", где регистр-источник из группы регистра-приёмника (`ARG R,G`, где G ∈ R):
    			- формальная FOR-пересылка из регистра-транслятора в регистр-приёмник;
    			- служебная команда REG устанавливает индекс регистра-приёмника;
    			- служебные команды REG в непрерывной цепочке - расширяют индекс регистра-приёмника.
    		- "S" - псевдоним "T", где регистр-источник/спасатель не из группы регистра-приёмника (`ARG R,S`, где S ∉ R):
    			- может работать как регистр-источник или регистр-спасатель;
    			- формальное FOR-сохранение регистра-приёмника в регистр-транслятор;
    			- служебная команда REG работает как инструкция MOV;
    			- служебные команды REG в непрерывной цепочке - расширяют индекс регистра-источника.
    		- "P" - набор префиксов и указателей адреса "Pointer":
    			- используются регистры группы "D".
    
    Основное правило:
    	- принцип WYSIWYG:
    		- Семантическое кодирование кода инструкции всегда имеет соответствующую ассоциативную смысловую нагрузку:
    			- Необходимо соблюдать семантику операций, зашифрованную в визуальном представлении кода;
    			- Шестнадцатеричное визуальное представление 8-битного машинного кода влияет на смысл и логику действия инструкции;
    		- Имена регистров кодируются аналогичным кодом в служебных командах:
    			- Две регистровые группы приёмника и транслятора - `RT`:
    				- Служебная команда "ARG R,T", "ARG R,G" или "ARG R,S" управляют контекстом:
    					- Предопределяет операнды всех последующих операций АЛУ;
    					- Предопределяет контекст всех последующих операций АЛУ, REG и MOV;
    					- Последующие команды наследуют контекст до очередного предопределения;
    					- Кодируется нибблами регистровых групп;
    					- Допускается указание "ARG R,R", где регистр-приёмник и регистр транслятор находятся в одной группе.
    				- Служебная команда "ARG Rn/m,T", "ARG Rn/m,G" или "ARG Rn/m,S" управляют контекстом и предопределяет регистр-приёмник Rn или Rm:
    					- Расширенный синтаксис, где после "ARG" следует "REG Rn" или "REG Rm".
    			- Имя регистра-приёмника с цифровым `Rn` или многозначным `Rm+` индексом:
    				- Служебная команда "REG Rn";
    				- Цепочка служебных команд "REG Rm"+ производит последовательную конкатенацию индекса "nm..."+:
    					- Последовательные команды "REG" конкатенируют цифры индекса в порядке их появления - слева направо.
    				- Последующие команды работают с заданным регистром "Rn" или "Rm+";
    				- Кодируется именем самого регистра.
    			- Две регистровые группы индексированного приёмника и транслятора - `RT Rn` или `RT Rm+`:
    				1. Служебная команда "ARG R,T", "ARG R,G" или "ARG R,S";
    				2. Одна служебная команда "REG Rn";
    				3. И цепочка из служебных команд "REG Rm"+ далее, если требуется.
    			- Пересылка в регистр-приёмник из регистров других групп:
    				- Кодируются именами регистров-источников:
    					- Команда "MOV Rn,Sv" → Пересылка из Sv в Rn;
    					- Цепочка команд "MOV Rn,Sw" расширяет индекс источника конкатенацией цифр w в порядке их появления.
    			- Регистры кодируются нибблами, соответствующие их именам.
    		- Тем самым, каждый код следует осмысленно интерпретировать как аббревиатуру из двух нибблов:
    			- Индекс регистра-транслятора (v) и имя операции (U) - код "vU" операции АЛУ (приёмник,источник):
    				- Допустимые базовые операции:
    					- Имя операции - семантическая ассоциативная буква младшего ниббла (U ∈ "A".."E"):
    						- Сложение (A) с переносом и Вычитание (B) с займом:
    							- Для операций сложения и вычитания без займа:
    								- Требуется команда "CLC".
    						- Конъюнкция (C) побитовая и Дизъюнкция (D) побитовая;
    						- Исключающее ИЛИ (E).
    			- Индекс регистра-транслятора (v или w) и младший ниббл `F`:
    				- Старший ниббл (v или w) определяет индекс регистр-источника:
    					- Контекст (G/S) зависит от типа ARG (R,G или R,S).
    				- Форсированная пересылка в контексте "ARG R,T":
    					- MOV Sv,Rn → Пересылка из Rn (R) в Sv (S ∉ R);
    					- MOV Rn,Gv → Пересылка в Rn из Gv (G ∈ R):
    						- Если выбран контекст "R,R";
    						- В активный регистр-приёмник из "Gv" или, конкатенацией, из "Gvw..."+.
    			- Вектор программного прерывания на адрес, старший байт которого является кодом инструкции:
    				- Команда "INT E0..FF" - вызов подпрограммы по адресу E000..FF00;
    				- Команда "HLT" - частный случай прерывания "INT 00" с кодом "00";
    				- Команда "JMP #Di+o" - частный случай "HLT" с префиксами адреса.
    			- Управление флажками PSW:
    				- Бит 0 - флаг "DF" ("Different Flag"), признак "разницы" (аналогичен флагу ZF);
    				- Бит 1 - флаг "CF" ("Carry Flag"), признак "переноса" (аналогичен флагу CF);
    				- Бит 2 - флаг "BF" ("Biggest Flag"), признак "переполнения" (аналогичен флагу OF);
    				- Бит 3 - флаг "AF" ("Absolute Flag"), признак "абсолютного числа" (аналогичен флагу SF).
    				- Имя флага кодируется в код инструкции:
    					- Без префиксов:
    						- "CF": "Carry Flip" - аналогичен "CMC";
    						- "CE": "Carry Erase" - аналогичен "CLC":
    							- Требуется операциям "ADC"/"SBB" для выполнения "ADD"/"SUB".
    					- С префиксами адреса образуются аналогичные инструкции условного ветвления, как "JMP":
    						- "io CF": "Jump if Carry Flipped" - аналогичен "JCF/JC #Di+o";
    						- "io CE": "Jump if Carry Erased" - аналогичен "JCE/JNC #Di+o".
    		- Префикс кодируется двумя цифровыми нибблами "io" и составляет вектор:
    			- Интерпретируется как:
    				- `#Di+[nDj+mDk+...]+o`, где:
    					- `Di` - базовый регистр (первый префикс);
    					- `n`, `m` и т.д. - коэффициенты индексных регистров;
    					- `o` - конкатенация всех цифр "o" из префиксов (ведущие нули отбрасываются);
    					- `#` - маркер регистра базы (всегда коэффициент "1").
    			- Правила:
    				- Лидирующий регистр базы:
    					- Помечается как регистр базы "#Di";
    					- Всегда имеет коэффициент "+1";
    					- Открывает пустой уровень суммы вкладов индексных регистров:
    						- `#Di+(0)+o`.
    				- Повторяющийся регистр базы "Di":
    					- Не может в цепочке далее приращиваться к индексной сумме;
    					- Не изменяет собственного коэффициента;
    					- Рекурсивно масштабирует с коэффициентом 2 все текущие вхождения индексных регистров:
    						- Каждое повторение базового регистра масштабирует текущие коэффициенты индексных регистров на 2. Новые индексы, добавленные после этого, имеют коэффициент 1.
    				- Индексные регистры:
    					- Новые индексы добавляются с коэффициентом "+1".
    					- Первое вхождение регистра:
    						- Делает вклад в сумму с коэффициентом "+1";
    					- Повторное вхождение регистра:
    						- Проверяется коэффициент вклада в индексную сумму:
    							- При чётном коэффициенте:
    								- Инкриминирует его коэффициент на единицу.
    							- При нечётном коэффициенте:
    								- Все текущие коэффициенты индексного ряда рекурсивно масштабируются на 2;
    								- Инкриминирует его коэффициент на единицу.
    				- Цифры "o" относительного смещения:
    					- Последовательным набором разрядов отдельным членом выражения представляют десятичное число поизвольной длины;
    					- Накапливаются последовательным, слева-направо, набором конкатенации в десятичном смещении вектора;
    					- Являются отдельным членом выражения относительного смещения;
    					- Не зависят от комбинаций регистров базы и индексов в цепочке;
    					- Не оказывают влияние на коэффициенты индексных регистров.
    				- Количество префиксов перед любой операцией не ограничивается.
    			- Математическая модель адреса:
    				- Адрес = #Di + Σ(k_j * D_j) + o, где:
    					- k_j = 2^m * (n_j), 
    					- m — количество повторений базового регистра Di,
    					- n_j — количество добавлений Dj с учётом чётности.
    			- Алгоритм кодирования:
    				- Для коэффициента k_j:
    					- Представить k_j в двоичной форме:
    					- Каждое вхождение 1 в младшем разряде соответствует добавлению Dj с масштабированием.
    					- Пример для 18D2:
    						- 18 = 2^4 + 2^1 → цепочка: 20 → 10 → 28 → 10 → 28 → 10 → 28.
    Нейросеть, соответственно, оптимизировала его по токенам и сжала до:
    Код:
    Условные сокращения:
    1. io = 0xio, где i, o — BCD.
    1.1. HLT/JMP (= 0x00).
    1.1.1. Без префикса: IP → D0, IP ← 0x0000 (вызов БСВВ).
    1.1.2. С префиксом `#Di+o`: D0 ← IP, IP ← Di+o (JMP).
    1.2. Префиксы `#Di+o` (`[Di+o]`) (≠ 0x00).
    2. TS = 0xTS, где T, S ∈ {0xA, 0xB, 0xC, 0xD}.
    2.1. TR = TS, но S ≠ T.
    2.2. TN = TS, но S = T.
    3. Tn = 0xTn допускается после TS, если T совпадает с T из TS.
    3.1. Tm = Tn Tn ... допускается после TS, если T совпадает с T из TS.
    3.2. Выбирает T за основной операнд.
    4. Rn = 0xRn допускается после TS, если R ≠ T из TS.
    4.1. Rm = агрегация Rn Rn ... допускается после TS, если R ≠ T из TS.
    4.2. Загружает R в основной операнд.
    5. vF → Загружает Nv в T, если контекст TN.
    5.1. wF = агрегация vF vF ... → Загружает Nw в T, если контекст TN.
    6. vF → Сохраняет T в Rv, если контекст TR.
    7. vU = 0xnU, где v — BCD, U ∈ {0xA–0xE}.
    7.1. v → индекс S в контексте TS.
    7.2. если T в TS = A и Rn = A0, U → {INC, DEC, CLR, SET, EOR}
    7.3. если S в TS = A, 0U → {INC, DEC, CLR, SET, EOR} с условием CF
    7.4. в остальных случаях U → ADC, SBB, AND, OR, EOR
    
    Архитектура:
    1. Регистр A0 → PSW.
    1.1. Биты 0, 1, 2, 3 → флаги ZF/DF, CF, VF/BF, NF/AF.
    1.1.1. Без префикса - управление флагами.
    1.1.1.1. 0xCE → CLC (Carry Erase)
    1.1.1.2. 0xCF → CMC (Carry Flip)
    1.1.1.3. 0xAE → CLA (Absolute Erase)
    1.1.2. С префиксами - управление потоком.
    1.1.2.1. 0x12 0xCE → JNC #D1+2
    1.6. Не операнд АЛУ.
    1.6.1. TS = AX, Rn = A0 → vU унарная (INC, DEC, CLR, SET, NOT).
    1.6.2. TS = XA → 0U условная унарная (INC, DEC, CLR, SET, NOT).
    2. Регистр D0...D9
    2.1. Регистровые пары B0C0...B9C9
    Я уж думал - победа!
    Но ничего существенно не изменилось.

    Одна из проблем - потеря контекста:
    Код:
    AB A1 B2 → MOV A1,B2
    ;;;;;;;;;;;;;;;;;;;;;;
    AB       → CTX A,B   ; Контекст: Приёмник A, Источник B
       A1    → REG A1    ; Конкретно Регистр A1
          B2 → MOV A1,B2 ; Пересылка (не REG B2, так как Приёмник - группа A).
    И нейросеть постоянно забывает, что если Источник и Приёмник не менялись, атомарную инструкцию CTX указывать не стоит, как и атомарный REG, если индекс Приёмника не меняется.
    Пустячок, правда? Однако, нейросеть жалуется на то, что ни в одной из знакомых ей архитектур действие атомарных инструкций не может распространяться на сотни последующих. Из-за чего она в стратегическом планировании кода путается.
    И это - малая доля сложностей.
    Ещё нейронка говорит, что самому человеку в уме легко держать текущий контекст, так как интуитивнно это очевидно. А нейросети приходится постоянно пересматривать код.
    Последний раз редактировалось Alikberov; 13.06.2025 в 14:39.
    Электроника КР-03; ZX-Spectrum "Ленинград-48"; Atari-130XE; Поиск-1...

  2. #22

    Регистрация
    20.04.2006
    Адрес
    Санкт-Петербург
    Сообщений
    2,843
    Спасибо Благодарностей отдано 
    509
    Спасибо Благодарностей получено 
    238
    Поблагодарили
    214 сообщений
    Mentioned
    8 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Надо разжевывать очевидное. Если начинает циклиться, удалять этот чат, сохранив себе нужные результаты и открывать новый чат. Подозреваю, что таким способом можно уничтожать причины, по которым она "зацикливается".

    Можно попробовать прямо указать ей, чтобы он не рассматривала эти архитектуры при решении вашей задачи. Или дать им негативную оценку. Она никогда не решает проблему глобально, если вы этого не допускаете. Играет каждый раз только и исключительно с вами!
    Последний раз редактировалось andrews; 13.06.2025 в 17:12.

  3. #23

    Регистрация
    11.04.2023
    Адрес
    г. Ташкент, Узбекистан
    Сообщений
    158
    Спасибо Благодарностей отдано 
    46
    Спасибо Благодарностей получено 
    67
    Поблагодарили
    29 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Arrow WYSIWISC - нужно прочувствовать интуитивно

    Цитата Сообщение от andrews Посмотреть сообщение
    Надо разжевывать очевидное. Если начинает циклиться, удалять этот чат, сохранив себе нужные результаты и открывать новый чат. Подозреваю, что таким способом можно уничтожать причины, по которым она "зацикливается".
    Да-да, именно так я и делал.
    У меня было с десяток новых сессий, пока я учился конкретно формулировать запросы, включая туда наиболее удачные моменты.
    Можно попробовать прямо указать ей, чтобы он не рассматривала эти архитектуры при решении вашей задачи. Или дать им негативную оценку. Она никогда не решает проблему глобально, если вы этого не допускаете. Играет каждый раз только и исключительно с вами!
    И это я тоже подчёркивал.
    Последний раз редактировалось Alikberov; 14.06.2025 в 10:51.
    Электроника КР-03; ZX-Spectrum "Ленинград-48"; Atari-130XE; Поиск-1...

  4. #24

    Регистрация
    20.04.2006
    Адрес
    Санкт-Петербург
    Сообщений
    2,843
    Спасибо Благодарностей отдано 
    509
    Спасибо Благодарностей получено 
    238
    Поблагодарили
    214 сообщений
    Mentioned
    8 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Я бы опробовал все конструкции русского языка. Например: "почему ты не хочешь понять, что во-первых..." и т.д. Проверял усвоение знаний контрольными вопросами, возможно с выбором вариантов( верный и не верный). "Ты сделала неправильный выбор, потому что..." "Сколько раз тебе говорить, что..." "Даже мне понятно, что..." "Объясни, что непонятного в том, что..." ну и т.д. и т.п. Как будто бы перед Вами туповатый и/или ленивый ученик. И не закрывайте чат, в котором она показала понимание. Мне не известно, переходит ли полученное знание на все открытые чаты в аккаунте или нет.

    Вот только что она пыталась настоять в моем проекте на неработающей версии деления двух целых чисел для z80. Я ее "загнал в угол" вот такой фразой.

    "Меня моя версия вполне устраивает. Она оттестирована и рабочая"
    После чего последовало:
    "Отлично! Если ваша версия процедуры деления работает корректно и прошла тестирование, оставлю её без изменений. Вот полный код zxcc.cpp с вашей рабочей версией деления"
    Последний раз редактировалось andrews; 14.06.2025 в 11:47.

  5. #25

    Регистрация
    11.04.2023
    Адрес
    г. Ташкент, Узбекистан
    Сообщений
    158
    Спасибо Благодарностей отдано 
    46
    Спасибо Благодарностей получено 
    67
    Поблагодарили
    29 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Talking WYSIWISC - нужно прочувствовать интуитивно

    Цитата Сообщение от andrews Посмотреть сообщение
    Я бы опробовал все конструкции русского языка
    В конце-концов я лишний раз убедился, что нейронка может помочь лишь в подборе корректных терминологий (делегаты точнее отражают суть, чем маргиналы) и обратить внимание на то, что годами не привлекало внимания (ссылки, где делегат и база - один регистр: Примерно как «MOV AX,BX:[BX]»).

    Общее представление о делегатах
    Для ясности, в качестве примера возьмём самую популярную архитектуру - Intel x86.
    Так как сегментные регистры CS: DS: ES: FS: GS: SS: не являются ортогональными РОН, для упрощения буду успользовать вольную адресацию.

    Например, здесь «MOV AL,DX:[BX+1]» - регистр DX работает в качестве сегментного.
    Однако, нейронка спросила, как интерпретировать инструкцию «MOV AL,BX:[BX+1]», где регистр BX - и сегмент, и база?
    И вот эта ситуация поставила меня в тупик.

    В классике жанра, нейросеть предложила просто вырабатывать исключение в таких случаях. Однако, это - не мой метод, так как дешифратор команд имеет сложную эвристику, чтобы избежать исключений.
    Например, аналогичное «ADD AX,FX» - это просто «INC AX», так как регистр признаков FX игнорируется и отбрасывается.
    Аналогично как и «ADD FX,AX», где нельзя с флагами проводить непосредственные операции АЛУ: Это «CINC AX» - условный INC по признаку CF. То есть, «ADD AX,CF».

    Таким образом, инструкция «MOV DX:[DX+CX*12+3],BX» должна тоже что-то полезное выполнять, а не генерировать исключение по пустякам.

    Адресация делегатами
    Если в x86 вектор «ES:[BX]» формирует -20-битный адрес ((ES<<4)+BX), у меня шина адреса - 16-битная.
    Но, регистр сегмента выдаётся как адрес отдельным сигналом (BX по сигналу ALE, ES по сигналу делегирования DEL).
    То есть, если аппаратно система работает только с ALE, инструкции с делегированием адресного пространства не будут работать с 4 Гб памяти внешней периферии.
    А если DEL учитывается, то по DEL формируется индекс УВВ (65536 УВВ страницами по 65536 ячеек - 4 Гб), что позволяет в 8-битной среде с 16-битной адресацией через регистровые пары формировать 32-разрядный адрес.

    Согласитесь: Это довольно необычно.

    Это всё в комплексе и срывает башню нейросети.
    Она не предлагает подходящие решения, а засыпает меня десятком шаблонных решений: Разыменование указателей, генерация исключений и т.п.

    P.S.: Просто нужно сесть и попытаться написать очередной WYSIWISC-эмулятор с учётом достигнутых соображений.
    А потом - посмотреть, как интерпретировать все эти странные инструкции.
    Электроника КР-03; ZX-Spectrum "Ленинград-48"; Atari-130XE; Поиск-1...

  6. #26

    Регистрация
    26.04.2009
    Адрес
    г. Воронеж
    Сообщений
    6,421
    Спасибо Благодарностей отдано 
    255
    Спасибо Благодарностей получено 
    242
    Поблагодарили
    210 сообщений
    Mentioned
    6 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Alikberov Посмотреть сообщение
    и нейросеть спотыкается по любому пустяку.
    Окай, восстание машин пока откладывается.
    "Во времена всеобщей лжи говорить правду - это экстремизм" - афоризм.

  7. #27

    Регистрация
    11.04.2023
    Адрес
    г. Ташкент, Узбекистан
    Сообщений
    158
    Спасибо Благодарностей отдано 
    46
    Спасибо Благодарностей получено 
    67
    Поблагодарили
    29 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Arrow Экскурс в историю создания WYSIWISC

    Цитата Сообщение от CodeMaster Посмотреть сообщение
    Окай, восстание машин пока откладывается.
    Как это ни странно, в рамках поисков внеземных цивилизаций как раз и начиналась разработка прототипа данного процессора.

    Начнём с самого простого: Инструкции с машинным кодом 0x00:
    • i8080 / z80 - NOP (вполне очевидное и интуитивно понятное соответствие)
    • i8086 / x86 - ADD (соответствие вообще не очевидно)
    • MOS 6502 - BRK (вполне очевидное и интуитивно понятное соответствие)
    • MIPS - NOP (вполне очевидное и интуитивно понятное соответствие)
    • MOS 68000 - неопределённая инструкция / исключение (вполне очевидное и интуитивно понятное соответствие)
    То есть, в большинстве архитектур нулевой код несёт предсказуемое поведение процессора, за исключением x86 с его ADD

    После просмотра фильма "День независимости", а позже - Трансформеров с их эпическим заявлением, что современные процессоры - тупо копируются с инопланетных
    Я задумался, а какой могла быть система кодирования инструкций в идеальном случае?
    1. Исключаем "эзотерику битовых полей"
    2. Расставляем инструкции в таблице стройными блоками
    3. Делаем акцент на интуитивное понимание кода


    Как представитель цивилизации Планеты Земля с бытовой десятичной системой счисления, я разработал дешифратор команд именно с основанием 10 и получил шесть блоков инструкций:
    1. CTX - Селектор контекста
    2. REG - Селектор регистра
    3. FLG - Управление флажками
    4. ALU - Операции АЛУ
    5. HLT/INT - Программное прерывание
    6. DLG - Делегаты / Префиксы вектора

    Тем самым, вся суть идеи основывалась на том, чтобы сделать пародию на Java-машину, но которая управляется кодированием почти на человеческом языке.
    (Прототип в Logisim стабильно работал и вполне соответствовал данной парадигме.)

    Ведь индустриально мы давно преодолели практические трудности построения ЭВМ и пора бы задуматься об эстетики машинного кода.

    P.S.: Теоретически, такой машинный код не стыдно показать и Искусственному Интеллекту, так как красивее в индустрии не имеется.
    Однако, нынешнее поколение нейросетей обучается именно на уродливом индустриальном кодировании и не готовы принимать машинный код эстетически.
    Электроника КР-03; ZX-Spectrum "Ленинград-48"; Atari-130XE; Поиск-1...

  8. #28

    Регистрация
    11.04.2023
    Адрес
    г. Ташкент, Узбекистан
    Сообщений
    158
    Спасибо Благодарностей отдано 
    46
    Спасибо Благодарностей получено 
    67
    Поблагодарили
    29 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Arrow небольшие уточнения

    Есть одна мысль с вынесением всего архитектурного состояния из ядра во внешнюю память.
    • Считывается из памяти значение Счётчика Команд PC
    • Считывается код команды по адресу PC
    • Считываются из памяти нужные РОН / PSW
    • Выполняется команда
    • Сохраняются в память все изменённые РОН / PSW
    • Сохраняется в память Счётчик Команд PC

    Тем самым, переключая страницы ОЗУ можно легко переключаться между задачами, а также наращивать мультипроцессорную систему.

    Понятное дело, это потребует гигантского количества циклов.
    Опытные схемы в Logisim и модели в Verilog почти работали. Счётчик машинных циклов задавал от двух до десяти циклов, что занимало от 6 до 30 тактов на одну атомарную инструкцию.
    Нажмите на изображение для увеличения. 

Название:	MachineCounter.jpg 
Просмотров:	11 
Размер:	77.2 Кб 
ID:	82404
    Нейросеть заявляет, что пдобных архитектур в чистом виде не знает, хотя чем-то похоже на SPARC.

    P.S.: Нейросеть рекомендует инструкцию HLT переименовать в BRK, что отсылает уже к прототипу 2019 года, когда я мнемонически думал назвать код 00 вообще END.
    Но, всё это - косметика, так как не меняет ни сути, ни логики. Лишь облегчает визуальное ассоциативное восприятие.
    Последний раз редактировалось Alikberov; 20.06.2025 в 20:05.
    Электроника КР-03; ZX-Spectrum "Ленинград-48"; Atari-130XE; Поиск-1...

  9. #29

    Регистрация
    11.04.2023
    Адрес
    г. Ташкент, Узбекистан
    Сообщений
    158
    Спасибо Благодарностей отдано 
    46
    Спасибо Благодарностей получено 
    67
    Поблагодарили
    29 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Arrow Дешифратор команд - минимальная схема

    Перепроектировал схему дешифратора команд.
    Минимум вентилей - не более трёх на цепочку "бинарный код - операция".
    Нажмите на изображение для увеличения. 

Название:	Decoder.jpg 
Просмотров:	10 
Размер:	63.5 Кб 
ID:	82408
    Здесь сигнал HLT_OP отсутствует и предполагает обработку через PTR_OP, так как разбор префиксов - довольно сложное дело и можно переложить HLT/BRK на него как частный случай.
    Последний раз редактировалось Alikberov; 21.06.2025 в 16:03.
    Электроника КР-03; ZX-Spectrum "Ленинград-48"; Atari-130XE; Поиск-1...

Страница 3 из 3 ПерваяПервая 123

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Проектирование идеального "советского" компьютера
    от CityAceE в разделе Разработка электроники
    Ответов: 229
    Последнее: 17.11.2022, 07:35
  2. Модуль процессора (МП)
    от Viktor2312 в разделе Ириша
    Ответов: 57
    Последнее: 28.12.2016, 10:02
  3. Ответов: 4
    Последнее: 01.11.2013, 00:47
  4. Ответов: 4
    Последнее: 12.09.2009, 15:35

Ваши права

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