kuchynski 0 October 21, 2009 Posted October 21, 2009 · Report post Тактовая, производительность в ~мипсах для математики, если подсчитывали. Если сравнить с имеющимися ARM_ами то вот к какому ближе (по архитектуре) и есть ли преимущество и в чем? По потреблению наверное проигрыш. Насколько хорош компилятор из форта получился? Дебагер тоже наверное медленный, не реалтайм. Несколько лет назад таких ARM не было, сейчас не знаю. Основное преимущество - переменная разрядность, требуеться 23 разряда - будет 23-х разрядный проц, знаковый бит не надо - убираем, лишнего в микросхеме никто не возмёт. Все операции(кроме деления, фильтра) выполняются за один такт, работает на 48 Мгц на XC3S400-4PQ208C при 20 разрядах ядра, больше просто не подавал. Форт хорош тем, что: 1. небольшой код программы(отсутствует поле адреса регистра); 2. при прерываниях не нужно сохранять ни одного регистра; 3. более высокий уровень письма, чем у ассемблера, поскольку компилятор самоделанный, писать можно в буквальном смысле на русском языке. Дебагер - отстой, не пользуюсь. С описанием понимаю вас, такое часто бывает. Поскольку требует много времени. и не для кого его писать! Похвастался здесь и хорошо, платят совсем за другое. Quote Share this post Link to post Share on other sites More sharing options...
OverDrewk 0 October 23, 2009 Posted October 23, 2009 · Report post А у меня уже есть свой процессор. 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 Quote Share this post Link to post Share on other sites More sharing options...
Ynicky 0 October 23, 2009 Posted October 23, 2009 · Report post Смотри инструкцию, под Windows может и не соберешь. Исходя из содержимого vasm.tar.gz по данному линку надо ставить Linux, ну или minGW(под Windows) и собирать проект. Инструкция http://sun.hasenbraten.de/vasm/index.php?view=compile Пошел по пути наименьшего сопротивления. Переделал свой процессор на MIPS32, т.к. изначально делал его под эту архитектуру. Поставил SDE v6. И теперь не знаю проблем ни с С ни с ASM-ом. Единственное разочарование - не своя система команд. Николай. Quote Share this post Link to post Share on other sites More sharing options...
Leka 1 October 23, 2009 Posted October 23, 2009 · Report post Переделал свой процессор на MIPS32, т.к. изначально делал его под эту архитектуру. Ну и каковы результаты синтеза? Quote Share this post Link to post Share on other sites More sharing options...
Ynicky 0 October 23, 2009 Posted October 23, 2009 · Report post Ну и каковы результаты синтеза? Пока не доделал блок MDU (multiply divide unit), поэтому результат синтеза без него. Николай. r32core_virtex5.rar Quote Share this post Link to post Share on other sites More sharing options...
Leka 1 October 23, 2009 Posted October 23, 2009 (edited) · Report post ~2K LUT - немного по сравнению с LEON/OpenRISC/Cortex-M и тп. Без внешней памяти получится запустить что-либо дельное, написанное на Си? Edited October 23, 2009 by Leka Quote Share this post Link to post Share on other sites More sharing options...
Ynicky 0 October 23, 2009 Posted October 23, 2009 · Report post ~2K LUT - немного по сравнению с LEON/OpenRISC/Cortex-M и тп. Так это только ядро. Без кэш программ и данных. Без FPU. Я в свое время синтезил leon2, точные цифры не помню, но сравнивал со своим процессором. Результаты были не в мою пользу. Но у меня было много мультимедийных инструкций. Николай. Без внешней памяти получится запустить что-либо дельное, написанное на Си? Эту версию (MIPS32) еще не применял в серьезных разработках. Но предыдущий процессор используется в MP3 камкордере со встроенной памятью 128 кБ ПЗУ программ и 64кБ ОЗУ программ/данных (правда в ASIC-е на 0,18мкм). Николай. Quote Share this post Link to post Share on other sites More sharing options...
Leka 1 October 23, 2009 Posted October 23, 2009 · Report post Так это только ядро. Без кэш программ и данных. Вот и спрашиваю, можно каким Си-компилятором создавать более-менее практичные приложения для системы с несколькими Кбайтами памяти(те без внешней памяти). Для FPGA, не для ASIC. Quote Share this post Link to post Share on other sites More sharing options...
Ynicky 0 October 23, 2009 Posted October 23, 2009 (edited) · Report post Вот и спрашиваю, можно каким Си-компилятором создавать более-менее практичные приложения для системы с несколькими Кбайтами памяти(те без внешней памяти). Можно, например WEB камера (без звука, в системах безопасности) на основе камкордера занимает у меня 32 кБ кода, написанного на С. А FPGA - это промежуточная стадия перед ASIC-ом. Николай. Edited October 23, 2009 by Ynicky Quote Share this post Link to post Share on other sites More sharing options...
Leka 1 October 23, 2009 Posted October 23, 2009 · Report post А FPGA - это промежуточная стадия перед ASIC-ом. Значит все-таки для ASIC. Для FPGA и 8КБ памяти м/б максимумом (для кода+данные). Quote Share this post Link to post Share on other sites More sharing options...
flipflop 0 December 5, 2009 Posted December 5, 2009 (edited) · Report post Кто-нибудь реализовал MMU? Поделитесь опытом. Не совсем понятно, как его реализовать таким образом, чтобы чтение и запись из памяти проходило за один такт (не хочется отходить от классической схемы 5-6 ступенчатого конвейера). Edited December 5, 2009 by flipflop Quote Share this post Link to post Share on other sites More sharing options...
Ynicky 0 December 6, 2009 Posted December 6, 2009 · Report post Кто-нибудь реализовал MMU? Поделитесь опытом. Не совсем понятно, как его реализовать таким образом, чтобы чтение и запись из памяти проходило за один такт (не хочется отходить от классической схемы 5-6 ступенчатого конвейера). А что значит за один такт? Если обращение происходит к внутренней памяти малого объема (например к встроенной в FPGA) или к кеш первого уровня (также малого объема) то это можно сделать и за один такт. Если Вам надо обратиться к дальней памяти или кеш второго уровня (например для заполнения кеш первого уровня), то в этом случае нужна остановка процессора (stall). А количество тактов в конвейере тут не причем. Николай. Quote Share this post Link to post Share on other sites More sharing options...
flipflop 0 December 6, 2009 Posted December 6, 2009 (edited) · Report post А что значит за один такт? Если обращение происходит к внутренней памяти малого объема (например к встроенной в FPGA) или к кеш первого уровня (также малого объема) то это можно сделать и за один такт. Если Вам надо обратиться к дальней памяти или кеш второго уровня (например для заполнения кеш первого уровня), то в этом случае нужна остановка процессора (stall). А количество тактов в конвейере тут не причем. Николай. Это понятно. Рассматриваем только кэш первого уровня: все равно, получается так, что выборка команды и доступ к памяти данных тянет за собой всю производительность. У меня 32-разрядный RISC (load/store) процессор, целевая микросхема Spartan-3AN (XC3S700AN-FG484): 1) Какую память использовать для кэша: блочную или распределенную? 2) Какой уровень ассоциативности/размер тэга оптимален? 3) Есть ли смысл (с точки зрения производительности) разбить выборку команды и доступ к памяти на 2 ступени? Выигрыш в частоте вполне реален, но конвейер становиться на 2 ступени длиннее, причем одна из них всегда работает в холостую. Edited December 6, 2009 by flipflop Quote Share this post Link to post Share on other sites More sharing options...
Ynicky 0 December 6, 2009 Posted December 6, 2009 · Report post 3) Есть ли смысл (с точки зрения производительности) разбить выборку команды и доступ к памяти на 2 ступени? Выигрыш в частоте вполне реален, но конвейер становиться на 2 ступени длиннее, причем одна из них всегда работает в холостую. В моем последнем процессоре как раз это и используется. Команды ветвления при этом имеют два слота задержки, но я на это пошел, так как только используя слоты можно не потерять в производительности. Только приходится критичный код править в ассемблере, т.е. переставлять команды, т.к. компилятор не может это сделать сам. Еще я сделал флаг в командах ветвления для аннулирования слотов задержки. Это позволяет немного сократить код (не надо в пустые слоты добавлять nop). Но этим я пользуюсь редко. Так же и с данными. Если результат загрузки регистра не используется в следующих командах, то процессор не останавливается. Но при этом также, в большинстве случаев, требуется правка кода вручную. Что касается первых двух пунктов, то оптимальный результат может дать только перебор различных комбинаций. Николай. Quote Share this post Link to post Share on other sites More sharing options...
flipflop 0 December 6, 2009 Posted December 6, 2009 · Report post В моем последнем процессоре как раз это и используется. Команды ветвления при этом имеют два слота задержки, но я на это пошел, так как только используя слоты можно не потерять в производительности. Только приходится критичный код править в ассемблере, т.е. переставлять команды, т.к. компилятор не может это сделать сам. ... Что касается первых двух пунктов, то оптимальный результат может дать только перебор различных комбинаций. Николай. Ясно, значит я все правильно понимаю и проблемы вполне реальные . Если не секрет, какой частоты и на каком кристалле вам удалось добиться? Quote Share this post Link to post Share on other sites More sharing options...