реклама на сайте
подробности

 
 
> Свои процессоры, Разработка своих процессоров со своей системой команд
PVL
сообщение Mar 12 2009, 19:51
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 38
Регистрация: 1-02-07
Пользователь №: 24 959



Занимаюсь разработкой своего проца под SoC. Если есть предложения по системе команд и практической реализации пишем сюда.

Сообщение отредактировал PVL - Mar 12 2009, 19:54
Go to the top of the page
 
+Quote Post
22 страниц V  « < 3 4 5 6 7 > »   
Start new topic
Ответов (60 - 74)
Ynicky
сообщение Dec 6 2009, 13:06
Сообщение #61


Участник
*

Группа: Участник
Сообщений: 72
Регистрация: 26-05-05
Пользователь №: 5 422



Цитата(flipflop @ Dec 6 2009, 15:54) *
Ясно, значит я все правильно понимаю и проблемы вполне реальные .

Если не секрет, какой частоты и на каком кристалле вам удалось добиться?


В ASIC-е на 0,18 - 250 МГц.
Но там много мультимедийных инструкций, тормозящих процессор.

Николай.
Go to the top of the page
 
+Quote Post
flipflop
сообщение Dec 6 2009, 13:21
Сообщение #62


Участник
*

Группа: Участник
Сообщений: 33
Регистрация: 27-12-08
Из: Петербург
Пользователь №: 42 787



Цитата(Ynicky @ Dec 6 2009, 16:06) *
В ASIC-е на 0,18 - 250 МГц.
Но там много мультимедийных инструкций, тормозящих процессор.

Николай.

Ого, а где вы их производите?
Go to the top of the page
 
+Quote Post
Ynicky
сообщение Dec 6 2009, 13:34
Сообщение #63


Участник
*

Группа: Участник
Сообщений: 72
Регистрация: 26-05-05
Пользователь №: 5 422



Цитата(flipflop @ Dec 6 2009, 16:21) *
Ого, а где вы их производите?

Ну не в России же.

Николай.
Go to the top of the page
 
+Quote Post
Ynicky
сообщение May 23 2010, 16:56
Сообщение #64


Участник
*

Группа: Участник
Сообщений: 72
Регистрация: 26-05-05
Пользователь №: 5 422



Перешел в тему "Свои процессоры" из "Цифровой видеокамеры".
Предлагается всем поучаствовать в обсуждении открытого RISC процессора
с большим регистровым файлом. Выкладываю краткое описание процессора.
Пока не охвачена тема доступа к специализированным регистрам, т.е
формат команд для доступа к ним. Какие еще нужны (frame pointer, variable pointer)?
По мере устаканивания архитектуры и системы команд, буду
выкладывать проект на VHDL.

Николай.
Прикрепленные файлы
Прикрепленный файл  torf32.pdf ( 103.18 килобайт ) Кол-во скачиваний: 248
 
Go to the top of the page
 
+Quote Post
Leka
сообщение May 24 2010, 21:01
Сообщение #65


Профессионал
*****

Группа: Участник
Сообщений: 1 075
Регистрация: 30-09-05
Пользователь №: 9 118



Я бы упростил систему команд, все-таки большинству ASIC недоступен, и упор лучше делать на достижение приемлемых характеристик в FPGA.

В "своих процессорах" до сих пор самой сложной задачей являлся софт, так что конкретно обсудить архитектуру лучше после первых версий компилятора с "ассемблерного Си" (начал делать).

Мой ник лучше убрать из титульного листа, тк не автор данной архитектуры, и VHDL не знаю. У меня архитектура другая - нет типов, нет флагов АЛУ, и тд.
Go to the top of the page
 
+Quote Post
Ynicky
сообщение May 25 2010, 05:43
Сообщение #66


Участник
*

Группа: Участник
Сообщений: 72
Регистрация: 26-05-05
Пользователь №: 5 422



Я как раз и собираюсь "пощупать" процессор в FPGA.
Хотя это будет Virtex5 (на работе отдаю новую схему пп для разводки). Туда много чего влезет.
Планирую одну такую платку взять домой на время.
Но можно и попроще.
А как можно сделать if...else без флагов?
Можно, конечно, сделать команды "branch" (BR) без CMP так:
BR if RD = 0, RD /= 0, RD < 0, RD >= 0 и т.д.
Хотя это теже флаги без сохранения в регистре.
Но при этом смещение будет в 12 разрядов или в 32 разряда с предварительной командой IMM.

Николай.
Go to the top of the page
 
+Quote Post
=AK=
сообщение May 25 2010, 07:26
Сообщение #67


pontificator
******

Группа: Свой
Сообщений: 3 055
Регистрация: 8-02-05
Из: страны Оз
Пользователь №: 2 483



Цитата(Ynicky @ May 24 2010, 02:26) *
Предлагается всем поучаствовать в обсуждении RISC процессора с большим регистровым файлом.

1. RISC неэффективно расходует память программ
2. Большой регистровый файл - значит, контекст сохранять долго. Значит, на прерывания медленно будет реагировать.

А кто компилятор будет делать под такую архитектуру? Или предполагается его на ассемблере мутузить?
Go to the top of the page
 
+Quote Post
Leka
сообщение May 25 2010, 08:01
Сообщение #68


Профессионал
*****

Группа: Участник
Сообщений: 1 075
Регистрация: 30-09-05
Пользователь №: 9 118



Цитата(Ynicky @ May 25 2010, 09:43) *
А как можно сделать if...else без флагов?

Пример бесфлагового процессора - NIOS II, даже переноса нет.


Цитата(=AK= @ May 25 2010, 11:26) *
Большой регистровый файл - значит, контекст сохранять долго. Значит, на прерывания медленно будет реагировать.

А зачем сохранять контекст? Все переменные подпрограммы прерывания - статические. Если нужна реентрабельность - свой собственный статический стек.

Цитата
А кто компилятор будет делать под такую архитектуру? Или предполагается его на ассемблере мутузить?

Для начала - "ассемблерное" подмножество Си (см пример "N-ферзей" в предыдущей ветке), потом расширяем компилируемое подмножество.
Go to the top of the page
 
+Quote Post
Ynicky
сообщение May 25 2010, 11:12
Сообщение #69


Участник
*

Группа: Участник
Сообщений: 72
Регистрация: 26-05-05
Пользователь №: 5 422



Цитата(Leka @ May 25 2010, 12:01) *
Пример бесфлагового процессора - NIOS II, даже переноса нет.

Мой опыт в проектировании процессоров говорит, что надо начинать проверку с условных команд
ветвления (BR) и конвейера обработки данных. Так что желательно сейчас сосредоточиться
на этих командах. Если бы места в коде команд хватило бы на 2 регистра и смещение, то я бы
сделал команды условных ветвлений как в NIOSII и MIPS32.

Николай.
Go to the top of the page
 
+Quote Post
Ynicky
сообщение May 25 2010, 15:21
Сообщение #70


Участник
*

Группа: Участник
Сообщений: 72
Регистрация: 26-05-05
Пользователь №: 5 422



Начал делать АЛУ и сразу возникла мысль: в операциях формата RI
поменять местами RD и RS. Тогда получим:
RR: RD = RD opalu RS (пример на ассемблере: add rd,rs)
RI: RD = RS opalu IMM (пример на ассемблере: addi rd,rs,imm)
При этом в формате RI регистр-источник и регистр-приемник могут быть разными.

To Leka: это не усложнит компилятор?

Николай.
Go to the top of the page
 
+Quote Post
Leka
сообщение May 25 2010, 17:45
Сообщение #71


Профессионал
*****

Группа: Участник
Сообщений: 1 075
Регистрация: 30-09-05
Пользователь №: 9 118



Цитата(Ynicky @ May 25 2010, 19:21) *
это не усложнит компилятор?

Не усложнит.
Go to the top of the page
 
+Quote Post
Ynicky
сообщение May 25 2010, 18:23
Сообщение #72


Участник
*

Группа: Участник
Сообщений: 72
Регистрация: 26-05-05
Пользователь №: 5 422



Подкорректировал описание.

Сообщение отредактировал Ynicky - May 25 2010, 18:24
Прикрепленные файлы
Прикрепленный файл  torf32.pdf ( 103.68 килобайт ) Кол-во скачиваний: 134
 
Go to the top of the page
 
+Quote Post
Leka
сообщение May 25 2010, 21:47
Сообщение #73


Профессионал
*****

Группа: Участник
Сообщений: 1 075
Регистрация: 30-09-05
Пользователь №: 9 118



Проблема вот в чем.

На уровне "ассемблерного" Си нет оптимизации, поэтому для 2х- и 3х- операндных архитектур запись одного и того-же алгоритма д/б различной для достижения оптимума по объему кода и быстродействию.

На примере кода N-ферзей.
Если для 3х-операндной архитектуры оптимально использование индексных массивов "arow[pos]", "arow[pos1]", и тд, то для 2х-операндной архитектуры оптимальнее будет использование модифицируемых указателей "*arow", "*arow1", и тд. Тк одной 3х-операндной инструкции:
arow[pos1] = temp;
непосредственно соответствуют три 2х-операндные инструкции:
tmp = arow;
tmp += pos1;
*tmp = temp;
Ветвления:
"if( pos != N )..." - одна бесфлаговая 3х-операндная инструкция, или
"if( pos - N != 0 )..." - две флаговые 2х-операндные инструкции (сравнение + ветвление), или
"if( tmp=pos, tmp -= N, tmp != 0 )..." - три бесфлаговые 2х-операндные инструкции.

Пришел к выводу, что используемое "ассемблерное" подмножество Си д/б жестко привязано к целевой архитектуре, те все преобразования выражений вынести из уровня компиляции:
"ассемблерное" подмножество Си --> машинные коды,
на уровень компиляции:
к-л подмножество Си --> "ассемблерное" подмножество Си.
На код самого компилятора ("ассемблерное" подмножество Си --> машинные коды) это слабо повлияет, тк все особенности архитектуры предполагаю вынести во внешние таблицы(файлы) - делаю универсальным, чтобы и для своих процессоров использовать.

Сообщение отредактировал Leka - May 25 2010, 21:49
Go to the top of the page
 
+Quote Post
=AK=
сообщение May 26 2010, 07:43
Сообщение #74


pontificator
******

Группа: Свой
Сообщений: 3 055
Регистрация: 8-02-05
Из: страны Оз
Пользователь №: 2 483



Цитата(Leka @ May 25 2010, 17:31) *
А зачем сохранять контекст? Все переменные подпрограммы прерывания - статические. Если нужна реентрабельность - свой собственный статический стек.

Для того, чтобы обработку прерывания делать на С. И для того, чтобы более высокоприоритетное прерывание могло прервать низкоприоритетное (это не совсем реентерабельность).

А если свой собственный стек - что в нем сохранять-то? Все регистры - слишком долго, веть их же много. А если запретить использовать все, то на фиг их надо было делать много?

Две страницы регистров - отдельно для "нормальной" работы, отдельно для прерываний - выглядит более прогрессивным решением, чем просто много регистров. Еще больше страниц регистров, которые бы образовали стековую структуру, выглядит еще более заманчивым. А на каждой странице много регистров не нужно.
Цитата(Leka @ May 25 2010, 17:31) *
см пример "N-ферзей" в предыдущей ветке

Ссылочку приведите
Go to the top of the page
 
+Quote Post
Leka
сообщение May 26 2010, 08:28
Сообщение #75


Профессионал
*****

Группа: Участник
Сообщений: 1 075
Регистрация: 30-09-05
Пользователь №: 9 118



Если регистры не используются одновременно разными подпрограммами, то сохранять их не нужно. Если регистров много - их можно без конфликтов распределить по подпрограммам, и сохранять ничего не придется.
Прерывания в процессоре с 1К регистров у меня реализованы, пишутся на "автокоде"( http://electronix.ru/forum/index.php?showt...mp;#entry605442 ), никаких потерь на входе/выходе.

"Ассемблерный" Си для 3х-операндной архитектуры: http://electronix.ru/forum/index.php?showt...st&p=760789
Go to the top of the page
 
+Quote Post

22 страниц V  « < 3 4 5 6 7 > » 
Reply to this topicStart new topic
5 чел. читают эту тему (гостей: 5, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 28th July 2025 - 14:13
Рейтинг@Mail.ru


Страница сгенерированна за 0.01505 секунд с 7
ELECTRONIX ©2004-2016