Цитата(DW0)
есть еще интересная задача для частичной реконфигурации, если у Вас есть проект, который характеризуется как безопасный (управление ответственными процессами, например, атомная станция или порче), ни один компилятор не гарантирует, что после очередной компиляции, те части которые вы не изменяли остались работоспособными, то есть меняли скажем какую-то маленькую, незначительную часть, которая в связи с какой либо ошибкой, учитывается даже ошибка компилятора, не говоря о ошибках человека, поломала работоспособность важных для безопасности частей системы. Для недопущения таких ошибок, после реконфигурации выполняют полную проверку на функционирования. В таких системах частичная реконфигурация может уменьшить трудозатраты на выполняемые проверки. Вы гарантируете, что все кроме реконфигурируемой части, не изменило своего функционирования.
В принципе, так и есть. В программе будут самотестирующие ветви и несколько дублирующих аппаратных вычислительных потоков. Если отказ и произойдёт - он будет явно классифицирован как отказ. Сбои (например из-за случайного электромагнитного импульса) также должны отлавливаться и восстанавливаться, если это возможно. Основной акцент делается (во всяком случае пока) на надёжность вычислительного процесса.
Цитата(DW0)
Еще вопрос, а если система не однозадачна, как тогда будет выбираться нужная конфигурация? или принцип "кто первый того и тапки"
Вы имеете ввиду ситуацию, когда на одно место претендуют сразу несколько блоков? Этой проблемой будет заниматься планировщик. Как именно - пока ещё не знаю.
Цитата(nckkm)
На мой взгляд это очень перспективная тема. Я сам думаю в эту сторону, НО, мне кажется существующие микросхемы слабо подходят для этих целей, а если и удастся их использовать, то выигрыш будет не высок из-за (наверное) не быстрого переконфигурирования участков fpga. Другое дело разработать свою "fpga" специально ориентированную в эту сторону. Такой процессор наверняка мог бы конкурировать с традиционными CPU. Я думаю на меньших частотах можно было бы выполнять больше задач.
Я думаю, что тут без эксперимента не обойтись, потому как я не могу даже и прикинуть в чём может случиться выигрыш и будет ли он. В принципе, если верить документации на ПЛИСины - скорость реконфигурирования достигает 66 Мбит/c, если поделить эту величину на 2 (как советовал
Shtirlits) получается не такая и удручающая ситуация.
Цитата(nckkm)
Однако возникает вопрос с чего начинать разработку. Мое мнение (после долгих размышлений) - не с процессора, а с компилятора.
Что бы проект ожил и не умер нужно на процессоре запускать ОС и приложения. Отсюда следует, что видимо нужен компилятор С для последующей компиляции Linux. Возможно имеет смысл взять за основу какой-нибудь открытый проект процессора (чтобы Linux уже на нем работал) и пытаться модифицировать/расширять его систему команд (и компилятор С) так, чтобы появилась возможность конфигурировать части процессора.
Возможно С не самый лучший язык, но это пока единственный способ получить какую-то ОС, так что без него не обойтись
Возможно, стоит взять старый добрый MIPS32. Под него всякого добра навалом (и компиляторы и ОСи). Только не совсем представляю область где может понадобиться динамическая реконфигурация того же MIPSа. Разве что какие-то специализированные задачи. Честно говоря, пока не наткнулся на какие-либо серьёзные исследования перспектив развития динамической реконфигурации, где бы были конкретные примеры - сделали такой-то проект, получили такие-то цифры. Большинство ограничиваются поверхностными оценками или разрабатывают инфраструктуру для обеспечения динамической реконфигурации (например, проект ReCoBus). Поэтому, на мой взгляд, любые проекты (к сожалению, пока только академические) в этой области - уже полезны.
Цитата(анатолий)
В ПЛИС есть возможность изменять содержимое памяти, прямо редактируя битстрим.
Редактировать можно своим скриптом.
Если эту память организовать как мультиплексор, то вот и перестройка структуры.
Если не затруднит - разверните свою мысль подробнее.