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

 
 
22 страниц V  « < 2 3 4 5 6 > »   
Reply to this topicStart new topic
> Свои процессоры, Разработка своих процессоров со своей системой команд
kuchynski
сообщение Oct 21 2009, 09:10
Сообщение #46


Участник
*

Группа: Свой
Сообщений: 58
Регистрация: 28-12-04
Из: Минск
Пользователь №: 1 713



Цитата(Aner @ Oct 16 2009, 12:58) *
Тактовая, производительность в ~мипсах для математики, если подсчитывали.
Если сравнить с имеющимися ARM_ами то вот к какому ближе (по архитектуре) и есть ли преимущество и в чем?
По потреблению наверное проигрыш. Насколько хорош компилятор из форта получился?
Дебагер тоже наверное медленный, не реалтайм.

Несколько лет назад таких ARM не было, сейчас не знаю. Основное преимущество - переменная разрядность, требуеться 23 разряда - будет 23-х разрядный проц, знаковый бит не надо - убираем, лишнего в микросхеме никто не возмёт.
Все операции(кроме деления, фильтра) выполняются за один такт, работает на 48 Мгц на XC3S400-4PQ208C при 20 разрядах ядра, больше просто не подавал.
Форт хорош тем, что: 1. небольшой код программы(отсутствует поле адреса регистра); 2. при прерываниях не нужно сохранять ни одного регистра; 3. более высокий уровень письма, чем у ассемблера, поскольку компилятор самоделанный, писать можно в буквальном смысле на русском языке.
Дебагер - отстой, не пользуюсь.
Цитата(Aner @ Oct 16 2009, 12:58) *
С описанием понимаю вас, такое часто бывает. Поскольку требует много времени.

и не для кого его писать! Похвастался здесь и хорошо, платят совсем за другое.
Go to the top of the page
 
+Quote Post
OverDrewk
сообщение Oct 23 2009, 04:57
Сообщение #47





Группа: Новичок
Сообщений: 1
Регистрация: 22-10-09
Пользователь №: 53 134



Цитата(Ynicky @ Mar 13 2009, 17:23) *
А у меня уже есть свой процессор. LCC осилил, а вот с ассемблером напряг.
По образованию я не программист, но приходится писать программы для отладки
железа. Нашел вот такой проект:
http://sun.hasenbraten.de/vasm/index.php?view=source
Но из исходников собрать .exe не могу. Может кто поможет.
Поставил "Visual Studio 2008". Но с ней тоже надо разбираться.
У меня "Windows XP SP3".

Николай.


Смотри инструкцию, под Windows может и не соберешь. Исходя из содержимого vasm.tar.gz по данному линку надо ставить Linux, ну или minGW(под Windows) и собирать проект. Инструкция http://sun.hasenbraten.de/vasm/index.php?view=compile
Go to the top of the page
 
+Quote Post
Ynicky
сообщение Oct 23 2009, 16:07
Сообщение #48


Участник
*

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



Цитата(OverDrewk @ Oct 23 2009, 08:57) *
Смотри инструкцию, под Windows может и не соберешь. Исходя из содержимого vasm.tar.gz по данному линку надо ставить Linux, ну или minGW(под Windows) и собирать проект. Инструкция http://sun.hasenbraten.de/vasm/index.php?view=compile


Пошел по пути наименьшего сопротивления. Переделал свой процессор на MIPS32,
т.к. изначально делал его под эту архитектуру.
Поставил SDE v6. И теперь не знаю проблем ни с С ни с ASM-ом.
Единственное разочарование - не своя система команд.

Николай.
Go to the top of the page
 
+Quote Post
Leka
сообщение Oct 23 2009, 17:32
Сообщение #49


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

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



Цитата(Ynicky @ Oct 23 2009, 20:07) *
Переделал свой процессор на MIPS32, т.к. изначально делал его под эту архитектуру.

Ну и каковы результаты синтеза?
Go to the top of the page
 
+Quote Post
Ynicky
сообщение Oct 23 2009, 19:27
Сообщение #50


Участник
*

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



Цитата(Leka @ Oct 23 2009, 21:32) *
Ну и каковы результаты синтеза?


Пока не доделал блок MDU (multiply divide unit), поэтому результат синтеза без него.

Николай.
Прикрепленные файлы
Прикрепленный файл  r32core_virtex5.rar ( 9.8 килобайт ) Кол-во скачиваний: 91
 
Go to the top of the page
 
+Quote Post
Leka
сообщение Oct 23 2009, 20:26
Сообщение #51


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

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



~2K LUT - немного по сравнению с LEON/OpenRISC/Cortex-M и тп.

Без внешней памяти получится запустить что-либо дельное, написанное на Си?

Сообщение отредактировал Leka - Oct 23 2009, 20:22
Go to the top of the page
 
+Quote Post
Ynicky
сообщение Oct 23 2009, 20:39
Сообщение #52


Участник
*

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



Цитата(Leka @ Oct 24 2009, 00:21) *
~2K LUT - немного по сравнению с LEON/OpenRISC/Cortex-M и тп.


Так это только ядро. Без кэш программ и данных. Без FPU.
Я в свое время синтезил leon2, точные цифры не помню, но сравнивал со своим процессором.
Результаты были не в мою пользу. Но у меня было много мультимедийных инструкций.

Николай.


Цитата(Leka @ Oct 24 2009, 00:26) *
Без внешней памяти получится запустить что-либо дельное, написанное на Си?


Эту версию (MIPS32) еще не применял в серьезных разработках.
Но предыдущий процессор используется в MP3 камкордере со встроенной памятью
128 кБ ПЗУ программ и 64кБ ОЗУ программ/данных (правда в ASIC-е на 0,18мкм).

Николай.
Go to the top of the page
 
+Quote Post
Leka
сообщение Oct 23 2009, 20:45
Сообщение #53


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

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



Цитата(Ynicky @ Oct 24 2009, 00:30) *
Так это только ядро. Без кэш программ и данных.

Вот и спрашиваю, можно каким Си-компилятором создавать более-менее практичные приложения для системы с несколькими Кбайтами памяти(те без внешней памяти).

Для FPGA, не для ASIC.
Go to the top of the page
 
+Quote Post
Ynicky
сообщение Oct 23 2009, 20:47
Сообщение #54


Участник
*

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



Цитата(Leka @ Oct 24 2009, 00:44) *
Вот и спрашиваю, можно каким Си-компилятором создавать более-менее практичные приложения для системы с несколькими Кбайтами памяти(те без внешней памяти).


Можно, например WEB камера (без звука, в системах безопасности) на основе камкордера занимает у меня 32 кБ кода, написанного на С.

А FPGA - это промежуточная стадия перед ASIC-ом.

Николай.

Сообщение отредактировал Ynicky - Oct 23 2009, 21:02
Go to the top of the page
 
+Quote Post
Leka
сообщение Oct 23 2009, 21:20
Сообщение #55


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

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



Цитата(Ynicky @ Oct 24 2009, 00:47) *
А FPGA - это промежуточная стадия перед ASIC-ом.

Значит все-таки для ASIC. Для FPGA и 8КБ памяти м/б максимумом (для кода+данные).
Go to the top of the page
 
+Quote Post
flipflop
сообщение Dec 5 2009, 14:19
Сообщение #56


Участник
*

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



Кто-нибудь реализовал MMU? Поделитесь опытом.
Не совсем понятно, как его реализовать таким образом, чтобы чтение и запись из памяти проходило за один такт (не хочется отходить от классической схемы 5-6 ступенчатого конвейера).

Сообщение отредактировал flipflop - Dec 5 2009, 14:20
Go to the top of the page
 
+Quote Post
Ynicky
сообщение Dec 6 2009, 09:41
Сообщение #57


Участник
*

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



Цитата(flipflop @ Dec 5 2009, 17:19) *
Кто-нибудь реализовал MMU? Поделитесь опытом.
Не совсем понятно, как его реализовать таким образом, чтобы чтение и запись из памяти проходило за один такт (не хочется отходить от классической схемы 5-6 ступенчатого конвейера).

А что значит за один такт?
Если обращение происходит к внутренней памяти малого объема (например к встроенной в FPGA)
или к кеш первого уровня (также малого объема) то это можно сделать и за один такт.
Если Вам надо обратиться к дальней памяти или кеш второго уровня (например для заполнения кеш первого уровня),
то в этом случае нужна остановка процессора (stall). А количество тактов в конвейере тут не причем.

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


Участник
*

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



Цитата(Ynicky @ Dec 6 2009, 12:41) *
А что значит за один такт?
Если обращение происходит к внутренней памяти малого объема (например к встроенной в FPGA)
или к кеш первого уровня (также малого объема) то это можно сделать и за один такт.
Если Вам надо обратиться к дальней памяти или кеш второго уровня (например для заполнения кеш первого уровня),
то в этом случае нужна остановка процессора (stall). А количество тактов в конвейере тут не причем.
Николай.

Это понятно. Рассматриваем только кэш первого уровня: все равно, получается так, что выборка команды и доступ к памяти данных тянет за собой всю производительность.
У меня 32-разрядный RISC (load/store) процессор, целевая микросхема Spartan-3AN (XC3S700AN-FG484):
1) Какую память использовать для кэша: блочную или распределенную?
2) Какой уровень ассоциативности/размер тэга оптимален?
3) Есть ли смысл (с точки зрения производительности) разбить выборку команды и доступ к памяти на 2 ступени? Выигрыш в частоте вполне реален, но конвейер становиться на 2 ступени длиннее, причем одна из них всегда работает в холостую.

Сообщение отредактировал flipflop - Dec 6 2009, 10:28
Go to the top of the page
 
+Quote Post
Ynicky
сообщение Dec 6 2009, 12:45
Сообщение #59


Участник
*

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



Цитата(flipflop @ Dec 6 2009, 13:27) *
3) Есть ли смысл (с точки зрения производительности) разбить выборку команды и доступ к памяти на 2 ступени? Выигрыш в частоте вполне реален, но конвейер становиться на 2 ступени длиннее, причем одна из них всегда работает в холостую.

В моем последнем процессоре как раз это и используется.
Команды ветвления при этом имеют два слота задержки, но я на это пошел,
так как только используя слоты можно не потерять в производительности.
Только приходится критичный код править в ассемблере, т.е. переставлять команды,
т.к. компилятор не может это сделать сам.
Еще я сделал флаг в командах ветвления для аннулирования слотов задержки.
Это позволяет немного сократить код (не надо в пустые слоты добавлять nop).
Но этим я пользуюсь редко.
Так же и с данными. Если результат загрузки регистра не используется в следующих
командах, то процессор не останавливается.
Но при этом также, в большинстве случаев, требуется правка кода вручную.

Что касается первых двух пунктов, то оптимальный результат может дать только перебор различных комбинаций.

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


Участник
*

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



Цитата(Ynicky @ Dec 6 2009, 15:45) *
В моем последнем процессоре как раз это и используется.
Команды ветвления при этом имеют два слота задержки, но я на это пошел,
так как только используя слоты можно не потерять в производительности.
Только приходится критичный код править в ассемблере, т.е. переставлять команды,
т.к. компилятор не может это сделать сам.
...
Что касается первых двух пунктов, то оптимальный результат может дать только перебор различных комбинаций.
Николай.

Ясно, значит я все правильно понимаю и проблемы вполне реальные .

Если не секрет, какой частоты и на каком кристалле вам удалось добиться?
Go to the top of the page
 
+Quote Post

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

 


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


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