Easyelectronics.ru

Электроника для всех
Текущее время: 05 дек 2021, 10:52

Часовой пояс: UTC + 5 часов



JLCPCB – Прототипы печатных плат за $2/5шт. два слоя. $5/5шт. четыре слоя
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 27 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения: Re: «Койяанискаци» - процессор с душой акына
СообщениеДобавлено: 13 сен 2021, 23:42 
Только пришел
Аватара пользователя

Зарегистрирован: 12 янв 2021, 04:30
Сообщения: 8
Откуда: Ташкент
Max15598 писал(а):
Скучно как-то. Регистров мало и они маленькие...
Простo нужно вникнуть в идеологию и прочувствовать её в состоянии акына
Max15598 писал(а):
Если уж делать что-то, оно должно быть лучше того, что уже есть. Вот у AVR 32 8-разрядных регистра.
Вот AVR для того и создали, чтобы покупали и не парились!
Max15598 писал(а):
А вот если б Вы сделали например 256 32-разрядных регистров? А лучше 1024? Или даже 4096? Чтоб любая операция была трёхадресной? Чтоб не было, как в AVR, верхних и нижних регистров, а все операции, включая умножение, работали бы с любыми регистрами и результат записывали тоже в любой?
Концептуально - даны 30 регистров вариативной разрядности:
  • 4 бита на каждый из 30 регистров: 8 бит на адрес в десяти парах B:C
  • 8 бит на каждый из 30 регистров: 16 бит на адрес в десяти парах B:C
  • 12 бит на каждый из 30 регистров: 24 бита на адрес в десяти парах B:C
  • 16 бит на каждый из 30 регистров: 24 бита на адрес в десяти парах B:C (Bi * 256 + Ci) - как сегментная адресация i8086
  • 24 бита на каждый из 30 регистров: 32 бит на адрес в десяти парах B:C (Bi * 256 + Ci)
  • 32 бита на каждый из 30 регистров: 40 бит на адрес в десяти парах B:C (Bi * 256 + CI)
  • 64 бита на каждый из 30 регистров: 64 бита на адрес в десяти парах B:C
  • 80 бит на каждый из 30 регистров: 64 бита на адрес в десяти парах B:C
То есть, план был в том, что 32-разрядную программу можно запустить и на 8-битном процессоре. С дикими тормозами по сотне тактов на операцию. Но запустить - реально как нативный код (без эмуляции и гипервизоров) в режиме аппаратной поддержки.
Иными словами, сейчас я занимаюсь именно 8-битным вариантом процессора, но префиксами добавляется возможность объявить такой-то РОН 64-разрядным. В этом режиме 8-битный регистр становится ссылкой на адрес в ОЗУ и все операции с участием такого регистра занимают сотни тактов. Если объявить все 30 регистров 64-разрядными, можно выполнять 64-битный Кой-Код с дичайщими тормозами.
Соответственно, если процессор будет 64-разрядным, все 30 РОН уже 64-разрядные и операции с ними занимают единицу тактов.
Max15598 писал(а):
Да и деление бы неплохо добавить, тоже чтоб, как умножение, за 2 такта?
Умножение/деление и сейчас доступно, но с нюансами.
Max15598 писал(а):
И чтоб не было никаких специальных "адресных пар", чтоб любой регистр мог использоваться для адресации памяти?
Это противоречит идеологии. Даже у i8086 инструкция XLAT - «MOV AL,[BX+AL]» - адресация через 8-разрядный аккумулятор.

То есть, имеем набор A0…9 по 8 бит и D0…9 по 16 бит, а B0…9 и C0…9 соответствуют половинкам - DH0…9 и DL0…9. Всё просто.
Max15598 писал(а):
Ну а раз уж всё равно регистры в 64 бита, так можно бы ещё и плавающую запятую добавить, хуже бы точно не стало...
В режиме УВВ регистры D0…7 могут адресовать FPU-стек, если в D9 записан код 0x87 для выборки i8087…
Max15598 писал(а):
То-то весело будет с таким процессором работать!
Изначально процессор был вызовом и пародией на BrainF*ck, где чудовищно сложно что-то кодировать. Вот и задумал систему команд такой, чтобы даже в дампа ассемблером уже пахло - полный антипод BrainF*ck'у!
Max15598 писал(а):
А если б Вы ещё запихнули всё это в PLD, да компилятор С бы ещё написали...

64 бита регистр. Тут на всё места хватит. 4096 регистров это 12 разрядов, команда 3-адресная, значит на адреса 36 бит. 6 бит на номер бита в слове, может понадобиться для битовых операций. На код операции и вспомогательные признаки остаётся 22 бита. Команды загрузки могут в командное слово включать 32 младших или старших бита, плюс 1 бит на признак старший/младший плюс 12 бит адрес регистра - на код операции остаётся 19 бит. Более чем достаточно на всё. Было б желание сделать...
Уместить всё в CPLD - моя мечта! :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: «Койяанискаци» - процессор с душой акына
СообщениеДобавлено: 14 сен 2021, 01:03 
Старожил

Зарегистрирован: 06 авг 2020, 22:13
Сообщения: 295
Alikberov писал(а):
Простo нужно вникнуть в идеологию и прочувствовать её в состоянии акына

Как это лучше сделать? У меня вот сейчас в доступе орган, клавесин. фортепиано, тромбон и блокфлейты от сопрано до баса. На чём лучше поиграть, чтоб эффект был посильнее?
Кейборд есть ещё, но это конечно фигня.
Alikberov писал(а):
Это противоречит идеологии. Даже у i8086 инструкция XLAT - «MOV AL,[BX+AL]» - адресация через 8-разрядный аккумулятор.
Да забудьте Вы этот древний микропроцессор! Он устарел ещё пару десятков лет назад.
Хорошая система команд должна обходиться БЕЗ аккумулятора. Приёмником результата должен иметь возможность стать любой регистр. И операндами должны иметь возможность быть любые регистры. Это избавляет от необходимости пересылок между регистрами и только за счёт этого быстродействие может увеличиться раза в три! Плюс экономия кода.

Всего-то и требуется: два мультиплексора на входе АЛУ и один демультиплексор на выходе. Ну и конечно регистры, тактируемые по фронту синхросигнала.

Alikberov писал(а):
Уместить всё в CPLD - моя мечта! :)
Тогда за работу! Oro et laboro!
Если сложно сразу сделать регистровый файл 4096 слов по 64 разряда, потренируйтесь, скажем, на 16-регистровом файле по 24 разряда. Принцип тот же, вот и отработаете его. А потом сделаете полноценный регистровый файл.
И не забывайте: без вменяемого компилятора С реальная ценность процессора стремится к нулю.
Alikberov писал(а):
Если есть время и опыт, почему бы не тряхнуть кодом и ТТЛ?
Главное не увлекайтесь ТТЛ. Допускаю, что в VHC не найти сумматоры, тогда можно LS или ALS взять (хотя лучше будет в таком случае взять CMOS-SPLD небольшой ёмкости. Вот к примеру у Моузера есть недорогие ATF16V8CZ-15SU, 8 триггеров, 8 входов, 8 входов/выходов, вход синхросигнала и вход разрешения выходов. На таких можно 4-х или 6-разрядное АЛУ сделать. Или скажем ATF22LV10C, 12 входов, 10 входов/выходов, 10 триггеров. Тут и 8-разрядное АЛУ получится ). Но TTL всё-же не стоит: вентиляторов придётся много слишком ставить.

Можно к примеру взять Datasheet на SN54S181 и SN54S182. Сами эти микросхемы уже вряд ли можно где купить. Но в Datasheet есть их логическая схема, её можно передрать в SPLD. Переделать по аналогии на нужную разрядность, добавить мультиплексоры - и готово!

А есть и другие варианты АЛУ. Например его можно сделать вот так:
Вложение:
ALU_.jpg
ALU_.jpg [ 211.4 Кб | Просмотров: 186 ]

Очень быстро оно работать конечно не будет. Но поиграться с ним можно и в таком виде. Главное, всё на одной микросхеме. Конечно к этому понадобится ещё и устройство управления: дешифратор команд, мультиплексоры и т.д. Но всё это совершенно очевидно.
А и В - входные операнды, F - выходной. М0-М7 - операция. STRT - запуск исполнения, BUSY - готовность. Поскольку у операндов всего по 16 входов, предусмотрена загрузка и выгрузка многоразрядных операндов: W0-W2 номер слова, inW - ввод слова, OutW - вывод слова, F_STB защёлкивает выбранное W0-W2 слово результата.
Тут и умножение с делением реализовать несложно: всё равно схема управления будет ждать BUSY. Так что контроллер может спокойно и не сильно торопясь всё сделать :)

Это разумеется лишь одна из возможностей. Не очень быстро, зато не надо несколько сот корпусов микросхем на одно лишь АЛУ.

Можно ещё упростить АЛУ: вводить и выводить операнды и команды по I2C. Ещё медленнее, зато проще плата, и можно взять микроконтроллер с меньшим количеством выводов. Дешифратор команд станет чисто программным, а входные-выходные мультиплексоры будут как функция шины I2C... Первые ЭВМ делали лишь несколько тысяч операций в секунду - и ничего, жили. Как-то...

А можно вообще всё сделать в виде библиотеки функций, чисто программно. Ещё медленнее, зато ещё проще :) Взять к примеру ATMega1284P, три четверти SRAM использовать как виртуальный регистровый файл, 1536 регистров по 64 бита. Остальное - на стек и прочее для работы. Для процессорной RAM взять несколько FM25W256, самая ёмкая FRAM, 32 кбайт, которая ещё работает от 5 вольт. Их же можно и для памяти программ. Или вообще общее пространство памяти использовать. Ввод-вывод тоже по SPI сделать... Или взять ATMega2560 и для процессорной памяти и ввода-вывода встроенный интерфейс параллельной RAM использовать, физические страницы по 64к устранить программно. Правда у ATMega2560 SRAM вдвое меньше, меньше регистров получится...

Вариантов больше чем в шахматах :)


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 27 ]  На страницу Пред.  1, 2


Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB