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

 
 
> Свои процессоры, Разработка своих процессоров со своей системой команд
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  « < 13 14 15 16 17 > »   
Start new topic
Ответов (210 - 224)
~Elrond~
сообщение Mar 20 2015, 11:21
Сообщение #211


Частый гость
**

Группа: Свой
Сообщений: 100
Регистрация: 20-04-12
Из: Нижний Новгород
Пользователь №: 71 488



Timmy
Спасибо за исходники. sm.gif Там есть модуль pmi_rom, это корка ксайлинксовой памяти? Какая у неё latency на чтение?
Go to the top of the page
 
+Quote Post
Timmy
сообщение Mar 20 2015, 12:14
Сообщение #212


Знающий
****

Группа: Участник
Сообщений: 835
Регистрация: 9-08-08
Из: Санкт-Петербург
Пользователь №: 39 515



Цитата(~Elrond~ @ Mar 20 2015, 14:21) *
Timmy
Спасибо за исходники. sm.gif Там есть модуль pmi_rom, это корка ксайлинксовой памяти? Какая у неё latency на чтение?

Там всё под Латтис. pmi_rom - это корка блочной памяти в режиме ПЗУ, латентность один такт.
Go to the top of the page
 
+Quote Post
Leka
сообщение Mar 20 2015, 13:18
Сообщение #213


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

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



А отдельного Си компилятора нету, чтобы на Альтеру имело смысл перенести ядро?
Go to the top of the page
 
+Quote Post
NikolayXXX
сообщение Mar 20 2015, 16:57
Сообщение #214


Участник
*

Группа: Участник
Сообщений: 65
Регистрация: 16-01-10
Пользователь №: 54 852



Цитата(des00 @ Mar 19 2015, 20:56) *
меги 128ые (128к флеша) забивали на асме, а тут всего 4к команд. мельчает народ wink.gif

Как мой вопрос связан с количеством ассемблерных инструкций?
Вопрос был связан со средствами разработки (отладчик, симулятор, транслятор/компилятор). Новая система команд - новые инструменты.
А 128к ассемблерных инструкций меня не испугаешь. sm.gif


Цитата(Leka @ Mar 19 2015, 23:35) *
Зависит от компилятора ЯВУ - насколько переносимым является генерируемый ассемблерный код. Например, переходы - на метку, или же смещение задается константой, и тд и тп.
Для msp430, например, GCC выдает хороший ассемблерный код в плане независимости от системы команд и машинных кодов - можно внести заметные изменения.

От компилятора ЯВУ на мой взгляд отличия системы команд не зависят вообще. Не процессор же пишут под конкретный компилятор, а компилятор под систему команд процессора. Править ассемблерный код после компилятора на мой взгляд не очень продуктивное занятие.

Цитата(Timmy @ Mar 20 2015, 12:46) *
Теоретически процессор должен быть полностью совместим по командам со старым LatticeMico8, до того, как его пришили к Вишбону.

А как система команд зависит о шины? Там вроде всего две команды работы с шиной import/inp и export/outp.
Go to the top of the page
 
+Quote Post
Timmy
сообщение Mar 23 2015, 06:13
Сообщение #215


Знающий
****

Группа: Участник
Сообщений: 835
Регистрация: 9-08-08
Из: Санкт-Петербург
Пользователь №: 39 515



Цитата(Leka @ Mar 20 2015, 16:18) *
А отдельного Си компилятора нету, чтобы на Альтеру имело смысл перенести ядро?

Для LatticeMico8 есть backend к gcc, так что компилятор Си как бы есть. Правда, я что-то не видел исходников патча для binutils, только gcc. С-компилятор там какой-то странный, он во всех моделях памяти(включая 8-битную) делает 32-битные указатели(по-крайней мере, так в мануале написано). В случае переноса на классические Циклоны, придётся хранить регистры, стек и scratchpad в одном M9K(туда же можно запихнуть и кодsm.gif), при этом один такт на инструкцию невозможен. Предполагаемый объём для клона Mico8 - 270LE.
Go to the top of the page
 
+Quote Post
Leka
сообщение Mar 23 2015, 10:18
Сообщение #216


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

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



Цитата(Timmy @ Mar 23 2015, 10:13) *
Для LatticeMico8 есть backend к gcc, так что компилятор Си как бы есть. ...

Если С-компилятор - интегрированный в софт от Lattice, тогда смысла в переносе lm8 на Циклоны нет, наверно.

Цитата
...при этом один такт на инструкцию невозможен.

Согласен, у M9K/etc нет гарантированного режима "write before read", чтение и запись _данных_ в одном такте рискованно делать (без проверки адресов).
Go to the top of the page
 
+Quote Post
des00
сообщение Mar 23 2015, 10:20
Сообщение #217


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(Timmy @ Mar 23 2015, 13:13) *
придётся хранить регистры, стек и scratchpad в одном M9K(туда же можно запихнуть и кодsm.gif), при этом один такт на инструкцию невозможен

квазиасинхронку сделать.


--------------------
Go to the top of the page
 
+Quote Post
~Elrond~
сообщение Mar 23 2015, 11:09
Сообщение #218


Частый гость
**

Группа: Свой
Сообщений: 100
Регистрация: 20-04-12
Из: Нижний Новгород
Пользователь №: 71 488



Leka
Для имитации асихронного поведения блочной памяти на cyclone III я прибегал к чтению/записи данных по negedge, частота конечно падает, но работает нормально.
Go to the top of the page
 
+Quote Post
Serhiy_UA
сообщение Mar 23 2015, 11:55
Сообщение #219


Знающий
****

Группа: Свой
Сообщений: 721
Регистрация: 23-10-08
Из: next to Odessa
Пользователь №: 41 112



Цитата(Timmy @ Mar 23 2015, 09:13) *
...при этом один такт на инструкцию невозможен..

В моем miniByte на Cyclone III с памятью М9К, инструкция выполняется за один период тактовой частоты. Это при входном регистре адреса в М9К и без выходного регистра данных... Для обработки двухбайтных команд применил двухпортовый доступ, где текущий и последующий байт считываются одновременно..
Что тут не так, в чем вопрос?
Go to the top of the page
 
+Quote Post
~Elrond~
сообщение Mar 23 2015, 12:10
Сообщение #220


Частый гость
**

Группа: Свой
Сообщений: 100
Регистрация: 20-04-12
Из: Нижний Новгород
Пользователь №: 71 488



Serhiy_UA
А как вам удалось обойтись без выходного регистра данных, если память в cyclone III синхронная? на выражение типа такого
Код
assign dout = ram[addr];
квартус отвечает, что не может синтезировать такое на блочной памяти.

Сообщение отредактировал ~Elrond~ - Mar 23 2015, 12:10
Go to the top of the page
 
+Quote Post
Serhiy_UA
сообщение Mar 23 2015, 12:32
Сообщение #221


Знающий
****

Группа: Свой
Сообщений: 721
Регистрация: 23-10-08
Из: next to Odessa
Пользователь №: 41 112



Цитата(~Elrond~ @ Mar 23 2015, 15:10) *
Serhiy_UA
А как вам удалось обойтись без выходного регистра данных, если память в cyclone III синхронная?

Для памяти программ используется Tools ->MegaWizard Plag-In-Manager ->Memory Compiler ->ROM 2-PORT, где в диалоге задается регистр адреса на входе и выход памяти без регистра данных. А далее двухпортовая память включается в проект примерно таким кодом. То есть, я задал в Memory Compiler тактирование только регистра адреса:
[//------- ROM 2 ------
rom_2p rom_2p_inst (
.address_a ( a),
.address_b ( a+1),
.clock ( clk),
.q_a ( q),
.q_b ( q1)
);
][/code]
Go to the top of the page
 
+Quote Post
~Elrond~
сообщение Mar 23 2015, 12:41
Сообщение #222


Частый гость
**

Группа: Свой
Сообщений: 100
Регистрация: 20-04-12
Из: Нижний Новгород
Пользователь №: 71 488



Serhiy_UA
Отключение этой опции в мегавизарде приводит к уменьшению latency с 2 до 1 такта, но никак не ликвидирует её полностью.
Go to the top of the page
 
+Quote Post
Serhiy_UA
сообщение Mar 23 2015, 12:58
Сообщение #223


Знающий
****

Группа: Свой
Сообщений: 721
Регистрация: 23-10-08
Из: next to Odessa
Пользователь №: 41 112



Цитата(~Elrond~ @ Mar 23 2015, 16:41) *
Serhiy_UA
Отключение этой опции в мегавизарде приводит к уменьшению latency с 2 до 1 такта, но никак не ликвидирует её полностью.
Хорошо, тогда к тому коду, что был выше, еще несколько строк кода, что бы понять основные увязки:
always @ (posedge clk or posedge reset) //write PC
if (reset) PC<=0;
else PC<=a;

То есть, какая-то комбинационная схема КС, что в момент выполнения текущей, формирует адрес "а" для следующей команды.
С выхода КС адрес "а" одновременно записыается и в программный счетчик РС и в регистр адреса, что есть на входе памяти М9К.
Таким образом все выполняется за такт, и с одним фронтом clk,

Да еще, второй регистр на выходе М9К, позволит на конвейере выполнять две команды одновременно. Но здесь надо почитать теорию, что бы не изобретать велосипед. Пока мои поиски соответствующей литературы ничего не дали..
Go to the top of the page
 
+Quote Post
Timmy
сообщение Mar 23 2015, 13:54
Сообщение #224


Знающий
****

Группа: Участник
Сообщений: 835
Регистрация: 9-08-08
Из: Санкт-Петербург
Пользователь №: 39 515



Цитата(Serhiy_UA @ Mar 23 2015, 14:55) *
В моем miniByte на Cyclone III с памятью М9К, инструкция выполняется за один период тактовой частоты. Это при входном регистре адреса в М9К и без выходного регистра данных... Для обработки двухбайтных команд применил двухпортовый доступ, где текущий и последующий байт считываются одновременно..
Что тут не так, в чем вопрос?

Да, можно сделать ,то что надо, на двух M9K, плюс потребуются два bypass регистра и схема обнаружения коллизий чтения/записи по одному адресу, это +30LE примерно. Так в nios2 делают, просто для пикопроцессора это чересчур, IMHO.
Go to the top of the page
 
+Quote Post
~Elrond~
сообщение Mar 23 2015, 14:15
Сообщение #225


Частый гость
**

Группа: Свой
Сообщений: 100
Регистрация: 20-04-12
Из: Нижний Новгород
Пользователь №: 71 488



Timmy
А можете поподробнее рассказать, как альтеровцы сделали однотактовое чтение из блочной памяти в ниосе?
Go to the top of the page
 
+Quote Post

22 страниц V  « < 13 14 15 16 17 > » 
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 17th August 2025 - 23:07
Рейтинг@Mail.ru


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