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

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

Если сравнить с имеющимися 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).

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

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

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

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

 

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

 

Николай.

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


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

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

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

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

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

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

...

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

Николай.

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

 

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

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


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

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...