Перейти к содержанию

    

Свои процессоры

Тактовая, производительность в ~мипсах для математики, если подсчитывали.

Если сравнить с имеющимися ARM_ами то вот к какому ближе (по архитектуре) и есть ли преимущество и в чем?

По потреблению наверное проигрыш. Насколько хорош компилятор из форта получился?

Дебагер тоже наверное медленный, не реалтайм.

Несколько лет назад таких ARM не было, сейчас не знаю. Основное преимущество - переменная разрядность, требуеться 23 разряда - будет 23-х разрядный проц, знаковый бит не надо - убираем, лишнего в микросхеме никто не возмёт.

Все операции(кроме деления, фильтра) выполняются за один такт, работает на 48 Мгц на XC3S400-4PQ208C при 20 разрядах ядра, больше просто не подавал.

Форт хорош тем, что: 1. небольшой код программы(отсутствует поле адреса регистра); 2. при прерываниях не нужно сохранять ни одного регистра; 3. более высокий уровень письма, чем у ассемблера, поскольку компилятор самоделанный, писать можно в буквальном смысле на русском языке.

Дебагер - отстой, не пользуюсь.

С описанием понимаю вас, такое часто бывает. Поскольку требует много времени.

и не для кого его писать! Похвастался здесь и хорошо, платят совсем за другое.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
А у меня уже есть свой процессор. 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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Смотри инструкцию, под Windows может и не соберешь. Исходя из содержимого vasm.tar.gz по данному линку надо ставить Linux, ну или minGW(под Windows) и собирать проект. Инструкция http://sun.hasenbraten.de/vasm/index.php?view=compile

 

Пошел по пути наименьшего сопротивления. Переделал свой процессор на MIPS32,

т.к. изначально делал его под эту архитектуру.

Поставил SDE v6. И теперь не знаю проблем ни с С ни с ASM-ом.

Единственное разочарование - не своя система команд.

 

Николай.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Переделал свой процессор на MIPS32, т.к. изначально делал его под эту архитектуру.

Ну и каковы результаты синтеза?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Ну и каковы результаты синтеза?

 

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

 

Николай.

r32core_virtex5.rar

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

Изменено пользователем Leka

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
~2K LUT - немного по сравнению с LEON/OpenRISC/Cortex-M и тп.

 

Так это только ядро. Без кэш программ и данных. Без FPU.

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

Результаты были не в мою пользу. Но у меня было много мультимедийных инструкций.

 

Николай.

 

 

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

 

Эту версию (MIPS32) еще не применял в серьезных разработках.

Но предыдущий процессор используется в MP3 камкордере со встроенной памятью

128 кБ ПЗУ программ и 64кБ ОЗУ программ/данных (правда в ASIC-е на 0,18мкм).

 

Николай.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Так это только ядро. Без кэш программ и данных.

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

 

Для FPGA, не для ASIC.

Поделиться сообщением


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

 

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

 

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

 

Николай.

Изменено пользователем Ynicky

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
А FPGA - это промежуточная стадия перед ASIC-ом.

Значит все-таки для ASIC. Для FPGA и 8КБ памяти м/б максимумом (для кода+данные).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Кто-нибудь реализовал MMU? Поделитесь опытом.

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

Изменено пользователем flipflop

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Кто-нибудь реализовал MMU? Поделитесь опытом.

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

А что значит за один такт?

Если обращение происходит к внутренней памяти малого объема (например к встроенной в FPGA)

или к кеш первого уровня (также малого объема) то это можно сделать и за один такт.

Если Вам надо обратиться к дальней памяти или кеш второго уровня (например для заполнения кеш первого уровня),

то в этом случае нужна остановка процессора (stall). А количество тактов в конвейере тут не причем.

 

Николай.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
А что значит за один такт?

Если обращение происходит к внутренней памяти малого объема (например к встроенной в FPGA)

или к кеш первого уровня (также малого объема) то это можно сделать и за один такт.

Если Вам надо обратиться к дальней памяти или кеш второго уровня (например для заполнения кеш первого уровня),

то в этом случае нужна остановка процессора (stall). А количество тактов в конвейере тут не причем.

Николай.

Это понятно. Рассматриваем только кэш первого уровня: все равно, получается так, что выборка команды и доступ к памяти данных тянет за собой всю производительность.

У меня 32-разрядный RISC (load/store) процессор, целевая микросхема Spartan-3AN (XC3S700AN-FG484):

1) Какую память использовать для кэша: блочную или распределенную?

2) Какой уровень ассоциативности/размер тэга оптимален?

3) Есть ли смысл (с точки зрения производительности) разбить выборку команды и доступ к памяти на 2 ступени? Выигрыш в частоте вполне реален, но конвейер становиться на 2 ступени длиннее, причем одна из них всегда работает в холостую.

Изменено пользователем flipflop

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
3) Есть ли смысл (с точки зрения производительности) разбить выборку команды и доступ к памяти на 2 ступени? Выигрыш в частоте вполне реален, но конвейер становиться на 2 ступени длиннее, причем одна из них всегда работает в холостую.

В моем последнем процессоре как раз это и используется.

Команды ветвления при этом имеют два слота задержки, но я на это пошел,

так как только используя слоты можно не потерять в производительности.

Только приходится критичный код править в ассемблере, т.е. переставлять команды,

т.к. компилятор не может это сделать сам.

Еще я сделал флаг в командах ветвления для аннулирования слотов задержки.

Это позволяет немного сократить код (не надо в пустые слоты добавлять nop).

Но этим я пользуюсь редко.

Так же и с данными. Если результат загрузки регистра не используется в следующих

командах, то процессор не останавливается.

Но при этом также, в большинстве случаев, требуется правка кода вручную.

 

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

 

Николай.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
В моем последнем процессоре как раз это и используется.

Команды ветвления при этом имеют два слота задержки, но я на это пошел,

так как только используя слоты можно не потерять в производительности.

Только приходится критичный код править в ассемблере, т.е. переставлять команды,

т.к. компилятор не может это сделать сам.

...

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

Николай.

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация