|
|
  |
Порекомендуйте какое-нибудь softcore, Для Altera |
|
|
|
Oct 15 2008, 07:48
|
iBuilder©
   
Группа: Свой
Сообщений: 519
Регистрация: 14-07-04
Из: Минск
Пользователь №: 322

|
Цитата(Aprox @ Oct 15 2008, 09:46)  Да, тенденция наращивания ресурсов FPGA безусловно заметна. Hо, одновременно, заметна и тенденция возрастания стоимости таких монстров. Так например, я считаю, что стратиксы от Altera недоступны по цене для мелкого разработчика. И сколько еще потребуется времени ждать, пока они подешевеют до разумных цен- неизвестно. Таким образом, тендеция наращивния ресурсов на самом деле торпедируется тенденцией увеличения стоимости. А пока, гораздо выгоднее использовать какой-нибудь простенький циклончик в комбинации с внешним микроконтроллером, тоже за копейки. Причем, одновременно получаешь такие выгоды, которые недостижимы в системах на одном кристалле. Не совсем понял зачем кивать на стратиксы, у них своя ниша, для бюджетных проектов - циклоны. И посмотрите, сколько ячеек есть в самом маленьком 3-м циклоне, найдётся куча ситуаций, когда они будут на половину использованы. Не вижу смысла в такой ситуации использовать внешний проц, если хватает Ниоса. И эта тенденция будет прогрессировать. Ваша позиция имела смысл лет 5 назад, когда микрухи были маленькими по ячейкам. Поэтому на сегодняшний день вопрос о ненужности таких ядер IMHO не стоит, нужны они. Вопрос в том, чтоб применить их там, где они проект облегчают по себестоимости или другим параметрам. А тут универсальных советов нет, нади по ситуации смотреть, на то мы и инженеры
|
|
|
|
|
Oct 15 2008, 08:58
|

Местный
  
Группа: Участник
Сообщений: 374
Регистрация: 7-11-07
Из: Moscow
Пользователь №: 32 131

|
Цитата(Builder @ Oct 15 2008, 11:48)  Не совсем понял зачем кивать на стратиксы, у них своя ниша, для бюджетных проектов - циклоны. Киваю для иллюстрации, каким образом большая стоимость превращает в бессмыслицу "тенеденцию наращивания ресурсов". А значит и Ваш тезис, мол в больших FPGA всегда найдется место для софпроцессора, потому что ресурсов там- море разливанное. Цитата(Builder @ Oct 15 2008, 11:48)  И посмотрите, сколько ячеек есть в самом маленьком 3-м циклоне, найдётся куча ситуаций, когда они будут на половину использованы. Не вижу смысла в такой ситуации использовать внешний проц, если хватает Ниоса. И эта тенденция будет прогрессировать. Ваша позиция имела смысл лет 5 назад, когда микрухи были маленькими по ячейкам. Во-первых, даже если осталось больше половины неиспользованных ресурсов, то я не стану их занимать чем ни попадя, а оставлю в качестве резерва для последующих наращиваний и модернизаций устройства. Живая практика показывает, что такой резерв абсолютно необходим. Во-вторых, смысл использовать внешний проц в том, что это позволяет выбрать FPGA самую простую, самой низкой стоимости и самой простой в монтаже. И при этом, разработчик совершенно ничего не теряет в функциональной сути устройства. А только выигрывает в скорости выполнения работ. Цитата(Builder @ Oct 15 2008, 11:48)  Поэтому на сегодняшний день вопрос о ненужности таких ядер IMHO не стоит, нужны они. Вопрос в том, чтоб применить их там, где они проект облегчают по себестоимости или другим параметрам. А тут универсальных советов нет, нади по ситуации смотреть, на то мы и инженеры  Здесь консенсус. Ситуацию действительно надо оценивать трезво.
|
|
|
|
|
Oct 16 2008, 07:07
|
Местный
  
Группа: Свой
Сообщений: 322
Регистрация: 2-07-04
Из: Minsk
Пользователь №: 240

|
Цитата(Aprox @ Oct 15 2008, 11:58)  Во-первых, даже если осталось больше половины неиспользованных ресурсов, то я не стану их занимать чем ни попадя, а оставлю в качестве резерва для последующих наращиваний и модернизаций устройства. Живая практика показывает, что такой резерв абсолютно необходим. Во-вторых, смысл использовать внешний проц в том, что это позволяет выбрать FPGA самую простую, самой низкой стоимости и самой простой в монтаже. И при этом, разработчик совершенно ничего не теряет в функциональной сути устройства. А только выигрывает в скорости выполнения работ. ваша крупнейшая ошибка в том, что вы не смотрите дальше собственного носа, абсолютно. поясняю: а) вам кажется, что в вашем проекте невозможно использовать симуляцию, и вы заявляете что симуляция вообще ненужна никогда и никому. б) вы ведёте проект с единичным тиражом, и лечите тут всех, что необходимо оставлять кучу резерва. но подумать шире, и понять, что если изделие выпускается партией хотя бы 1000 штук, и устанавливается по всей стране, то никаких наращиваний и модернизаций устройства особо и не предвидится, вы не в состоянии. и что в этом случае резерв выливается в переплату денег, и что заказчик может уйти к более рачительному разработчику вам тоже не видно. свободные ресурсы FPGA могут быть по одной причине - какой-то другой тип ресурсов занят полностью. например в одном из моих проектов выбор XC3S100 вместо XC3S50 был обусловлен только количеством блочной памяти. а это значит, что LUT`ов свободно было море, и что замена внешнего проца на софт-ядро - это дополнительная экономия денег.
|
|
|
|
|
Oct 20 2008, 06:45
|

Гуру
     
Группа: Модераторы
Сообщений: 2 095
Регистрация: 27-08-04
Из: Россия, СПб
Пользователь №: 553

|
Цитата Те по минимаксной стратегии "безрегистровое" ядро предпочтительнее. Шар - вид слева, шар - вид справа...  Последние ваши расчеты мне не понятны. Предлагаю подитожить немного: 1. С точки зрения кода - предложенный вами вариант является регистровым процессором с вынесенным относительно ядра виртуальным регистровым файлом(со всеми вытекающими плюсами по эффективности использования). 2. С точки зрения быстродействия с внешней памятью ввиду п.1 быстродействие будет более зависимо от типа используемой памяти(Для примера - произвольный доступ к дешевой dram памяти составляет примерно 5-6 тактов)
|
|
|
|
|
Oct 20 2008, 08:33
|
Местный
  
Группа: Свой
Сообщений: 322
Регистрация: 2-07-04
Из: Minsk
Пользователь №: 240

|
Цитата(Leka @ Oct 17 2008, 18:20)  Сравниваю "безрегистровую" и регистровую архитектуры мелких софт-процессоров... Пример - работа с памятью: Код //копирование массива //while(src <= pmax) *dst++ = *src++;
//"безрегистровая" архитектура //цикл: 3команды, 8тактов //ofs = dst - src loop: *src[ofs] = *src //4такта src++ //2 loop(src <= pmax) //2 MSP430: Код loop1: mov.w @R12+, offset(R12) // 5 тактов, один из которых именно для // mov можно исключить (зазря читается регистр // назначения, так как mov выполняется так же как и // add, sub, or, and, etc.) // разве что размер ядра увеличится и частота упадёт cmp.w R12, R13 // 1 такт jnz loop1 // 2 такта, но в моей реализации - 1. паритет. либо у MSP кода есть выигрыш в 1 такт (это если jnz за такт, как у меня) что касается размера кода - четыре 16-ти разрядных слова. что опять же меньше чем три 32-х разрядных. Цитата //регистровое, "пустой магазин": 7команд, 7 тактов r1 = b r1 = *r1 r2 = c r2 = *r2 r2 += r1 r1 = a *r1 = r2 что-то мне подсказывает, что такая архитектура, если её грамотно реализовать, без проблем заведётся на 100+ MHz. даже в чахлом спартане/циклоне. кажется мне, что нужно серьёзно посравнивать архитектуры на разных подзадачках. и по размеру кода, и по растактовке и по сложности реализации. и что-то мне подсказывает, что древняя PDP11 будет ох как хороша.
|
|
|
|
|
Oct 20 2008, 09:54
|
Местный
  
Группа: Свой
Сообщений: 322
Регистрация: 2-07-04
Из: Minsk
Пользователь №: 240

|
Цитата(vetal @ Oct 20 2008, 11:47)  Так и есть  только при этом: а) мало полезных действий за такт. то есть особо выигрыша от высокой частоты не получаем б) дюже разреженный код. из этого вытекает жирный недостаток - если доступ к памяти медленный - проигрываем всем остальным вчистую.
|
|
|
|
|
Oct 20 2008, 11:10
|
Профессионал
    
Группа: Участник
Сообщений: 1 075
Регистрация: 30-09-05
Пользователь №: 9 118

|
Что делаю: - фон-неймановская архитектура, 32 разряда команда/данные - внутренняя 2х-портовая память команд/данных - трехоперандная система команд - минимальный набор инструкций (алу: + - & | ^ div2, переходы: < <= == != > >=) - 2..4 такта в зависимости от типа адресации (a,*a,*a[b], proc, *proc). Примеры: a = b + c ... *a = *b ^ *c a += *b[c] ... *a[b] ^= *c label(a < B ) ... label(*a >= *B ) proc(a) ... *proc(*a) - переход на подпрограмму с передачей аргумента. Написано и проверено на синтезаторе 3/4 кода, вроде укладывается в ожидаемые <500лут, >75МГц для Спартана. Сначала хотел 16-разрядное АЛУ, но для фон-неймановской архитектуры появляются лишние мультиплексоры(и задержки), поэтому отказался пока от такого варианта.
Сообщение отредактировал Leka - Oct 20 2008, 11:11
|
|
|
|
|
  |
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|