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