|
|
  |
Свои процессоры, Разработка своих процессоров со своей системой команд |
|
|
|
Nov 5 2015, 11:37
|
Профессионал
    
Группа: Участник
Сообщений: 1 075
Регистрация: 30-09-05
Пользователь №: 9 118

|
В 3х-уровневом конвейере получится, тк запись результата идет не в память, а в регистр аккумулятора. А латентность результата будет 2..3 такта (зависит от того, откуда брать результат - с выхода АЛУ, или с регистра аккумулятора). В первом такте команды по одному порту считывается один байт новой команды, а по другому порту в это время идет доступ к регистру или константе предыдущей команды. В следующем такте по другому порту считывается регистр или константа, а по первому - следующая команда. В третьем такте результат записывается в аккумулятор, и идет чтение операндов следующей команды. Все сходится, тк запись в память идет отдельной командой, и есть запас в тактах.
Сообщение отредактировал Leka - Nov 5 2015, 11:39
|
|
|
|
|
Nov 5 2015, 18:11
|
Знающий
   
Группа: Свой
Сообщений: 721
Регистрация: 23-10-08
Из: next to Odessa
Пользователь №: 41 112

|
Цитата(Leka @ Nov 5 2015, 17:57)  Если интересно, и устраивает система команд - могу детально проработать и проверить практически. Система команд, и это чувствуется, продумана и хорошо смотрится для 8-разрядника, везде видно влияние 86-архитектуры, а может, и AVR... Узкое место - это общая память, можно было бы её и разделить на RAM и ROM (что-то из гарвардского стиля) , но тогда не будет возможности модификации программы самой программой, но насколько это необходимо... Еще, память может быть очень большой, и как туда с программами на ассемблере, только на С, но это уже другой уровень усилий по разработке всей системы вместе с программной оболочкой. С конвейерами программ еще не работал, где можно почитать о правильных методах их построения? Ясно, что конвейер надо приостанавливать на входе когда в нем длинные команды, например STM Ra, а также очищать на условиях... Хотел бы сделать такой процессор сам, потом сравнить, если получится меньше 200ЛЕ, то это будет экстра класс, т.к. мой miniByte-2 занял многовато места, хотя для мелких приложений у него есть и свои преимущества...
|
|
|
|
|
Nov 12 2015, 07:16
|
Знающий
   
Группа: Свой
Сообщений: 721
Регистрация: 23-10-08
Из: next to Odessa
Пользователь №: 41 112

|
Цитата(Leka @ Nov 9 2015, 16:56)  Нет, х86, это не аккумуляторная архитектура, а регистровая. Аккумуляторная, когда операции АЛУ меняют только один аккумулятор, и R1=R1+R2 выльется в: A=R1, A=A+R2, R1=A. По поводу аккумуляторной архитектуры своих софт процессоров, пока для теоретического обсуждения и без привязки к какому-то процессору. Предлагаю отказаться от аккумулятора и назначать в РОН-ах текущий аккумулятор. Для этого в PSW (слово состояния программы) иметь поле [] для задания номера текущего аккумулятора, а результат всех аккумуляторных операций направлять в соответствующий РОН по этому номеру. И тогда, например, R1=R1+R2 выльется в: PSW[]=номер R1, A=A+R2.
|
|
|
|
|
Nov 12 2015, 08:25
|
Знающий
   
Группа: Участник
Сообщений: 835
Регистрация: 9-08-08
Из: Санкт-Петербург
Пользователь №: 39 515

|
Цитата(Shivers @ Nov 12 2015, 11:04)  Простите что вклиниваюсь, в процессорной архитектуре я чайник. Но можете хотя бы в общих словах сказать, чем плох, к примеру, популярный в прошлом R3000 (архитектура MIPS-1) в качестве софт процессора? Нам нужен софт процессор в проект, но самодельное мы не можем себе позволить, будем брать что то из классики. Плох только тем, что места займёт больше, чем восьмибитный. А так все фирменные софтпроцессоры большой тройки - NIOS2,Microblaze,Mico32 представляют собой испорченный разными способами MIPS.
Сообщение отредактировал Timmy - Nov 12 2015, 08:25
|
|
|
|
|
  |
8 чел. читают эту тему (гостей: 8, скрытых пользователей: 0)
Пользователей: 0
|
|
|