Пpиветствую, Ilia!
IT> Просто я не вижу принципиального пути повышения производительности для
IT> системы, ориентированной на память.
А где хранить операции, данные, стек и пр. ?
Вряд ли 100 МГц max проц в ПЛИС упрётся в скорость например GDDR2 памяти.
Или ты ориентируешься на будущее такого процессора в виде гигагерцовых ASIC ?
IT> Для FPGA как раз бы минимизировать обмен с внешними устройствами,
IT> разбить проект на некрупные, в пределах сотен ячеек, желательно
IT> параллельные вычислительные модули.
Так мы плавно приходим к компиляции кода на неважнокаком языке прямо
в RTL. Та же Java, допустим, но не в байткод, а в эффективно
выполняющее _данную_ _конкретную_ прогу (или её часть) железо.
Избавляемся от промежуточной среды и отходим от понятия фиксированной
архитектуры компьютера (стековой или обычной, неважно) насовсем.
Естественно, такая штука больше как дополнение к традиционной
или стековой архитектуре, для перемалывания сложных вещей.
Хотя.......взять прогу-синтезатор С->HDL и её саму собой засинтезить -
будет тогда комп hardware-only ! Как компилятор С должен компилить
сам себя :) Hо это типа шутка :D
Hужен ещё общий API для совместной работы аппаратных блоков и
программных. В него должны входить:
1. программная часть для пользовательского софта
2. аппаратная часть для единообразного написания ПЛИС блоков
3. часть ОС, отвечающая за загрузку, выгрузку, размещение блоков
в акселераторе и их прозрачную совместную работу.
Hапример, бинарник программы мог бы состоять из двух частей-
код, выполняемый ОС + код, заливаемый ОС в ПЛИС-акселератор
на время работы программы.
Подвижки в этом направлении есть. Hапример серьёзные дорогие
продукты Catapult и Impulse C - синтезаторы С->HDL/RTL.
Кто-нибудь пробовал их на практике ?
Что-то по поводу таких API я встречал в инете - на уровне
экспериментов.
Для API стоило бы посмотреть на графические ускорители, как там
реализована совместная работа кучи разных процессоров(шейдеров)
в чипе и основной проги, загрузка шейдерного кода и т.д.
Michael Tulupov
...