User Tag List

Показано с 1 по 10 из 29

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

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #17

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

    Arrow WYSIWISC - What You See Is What It Should Compute

    Благодаря расширению доступности нейросетей DeepSeekChatGPT в этом году удалось концептуально продвинуться.

    Прежде всего, нейросеть подобрала наиболее подходящее наименование архитектуры.

    WYSIWISC - What You See Is What It Should Compute (Что Видите, То Вычисляете)
    Аналогично WYSIWYG, но более низкого фундаментального уровня.

    И помогла упаковать всё описание процессора в шаблон:
    Код:
    Условные сокращения:
    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
    
    Стек:
    1. Реализуется пользователем, указатель — любой удобный регистр.
    2. D0 ← IP при JMP/HLT, подпрограммы должны сохранять D0.
    3. RET = JMP #D0+1.
    Можно заметить, что в отличии от множества известных архитектур (INTEL, MOTOROLA, SUN), которые так кратко не уместишь в описательный шаблон, здесь WYSIWISC описывается практически полностью (за исключением префиксов).

    С кодированием префиксов нейросеть так и не смогла справиться, хотя логика там не такая сложная (онлайн вариант и для эмулятора DELEGATE.RKR.zip).

    Но, нейросеть помогла подобрать условному термину маргиналы более понятный - делегаты.

    Делегат
    Говоря простым языком,делегат - это удалённый префикс, который подставляется в текущую инструкцию по ссылке, адресуемой любой регистровой парой.
    Код:
    90 90 80 80 76 54 32 10    00   DEF 98#D7+D5+D3+D1+6420         LEA D98,[<D7+D5+D3+D1+6420>]
                12 34 56 78 90 A1   MOV #D1+D3+D5+D7+D9+24680,A1    MOV [D1+D3+D5+D7+D9+24680],A1
    90 90 80 80                A2   MOV 98#,A2                      MOV [<D7+D5+D3+D1+6420>],A2
    90 90 80 80 12 34 56 78 90 A3   MOV 98#D1+D3+D5+D7+D9+24680,A3  аналогично MOV ES,D98 и MOV ES:[D1+D3+D5+D7+D9+24680],A3
    90 90 80 80 12 34 56 78 90 CE   JNC 98#D1+D3+D5+D7+D9+24680     MOV PSW,[<D7+D5+D3+D1+6420>] и JNC #D1+D3+D5+D7+D9+24680
    Нейросеть как бы и понимает общие принципы работы делегатов, но не может в своём опыте (БД) найти нечто подобное в известных ей десятках архитектур.

    Рассмотрим на примерах:
    • «HLT #D7+6» → «JMP #D7+6» → Останов текущей цепочки инструкций с ветвлением на вектор
    • «HLT 8#D7+6» → «DEF 8#D7+6» → Операция останова работает как предопределение регистра - «D8 = IP»
    • «HLT 8#» → «DBG 8#» → Операция останова работает как прерывание на отладку удалённой инструкции
    • «MOV A9,#D7+6» → «MOV A9,[D7+6]» → Чтение ячейки локальной памяти
    • «MOV A9,8#» → «MOV A9,[CALL D8]» → Чтение ячейки по вектору, который предопределил «DEF» (аналогично «DBG», но выполняется только префикс)
    • «MOV A9,8#D7+6» → «MOV A9,D8:[D7+6]» → Обращение к сегменту глобальной памяти

    В общем, понять более-менее можно, думаю.

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

    Этот пользователь поблагодарил Alikberov за это полезное сообщение:

    andrews(12.06.2025)

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

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

Эту тему просматривают: 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

Ваши права

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