Цитата
У вас получается действительно всего один поток и требуется готовность результата FPU через такт?
Почему один? У меня потоков столько сколько пикселей на экране. Я думаю их группами по 16 выполнять.
В том то вся и идея, что какова бы ни была задержка, если потоков много, я могу латентность скрыть.
Длинна конвейера 16? => 16 потоков. 30? => 32 потока. 48? => значит будет 48 потоков. нужно просто поочередно команды из разных потоков брать.
То ест такой гипер-трединг очень высокой степени как бы.
Цитата
По моему скромному мнению,
сосредотачиваться только на арифметических операциях бессмысленно - выйдет равноудаленный от пупа вселенной конь в вакууме, ну ровно как "математики" пытаются оптимизацию софта делать, когда не хотят даже слышать как компьютер устроен.
Асболютно согласен. Это не вся работа, но надо с чего-то начать. Пока что я думаю сделать прототип а не промышленную железку. Это моя инициатива а не чья-то еще, так что отчет мне писать не для кого.
Цитата
Согласен со Shtirlits, если аппаратно только вычисление какого-нибудь рейтрейсинга или еще делать - прирост в производительности скоее всего получите незаметный, постоянно процессор дергать на загрузку конвеера... По моему смысл есть аппаратно задачу решать глобальнее, с использованием DMA, например на входе - картинка, на выходе - результаты рейтрейсинга для всей картинки, без участия процессора, тогда и конвеер не простаивает, и процессор не занят
Такие работы есть, просто повторять их не имеет большого смысла.
Цитата
Опасаюсь, что процессор тут из-за желания использовать готовый код трассировщика, а производительность получить не выкидыванием лишних операций (например, не 80 бит, а 24; не универсальная плавающая точка, а фиксированная и т.п.), а использованием FPGA как эдакий ковёр, под который весь мусор заметается. "а тут у нас программируемая логика, на которой делается конвейер и процессор..."
Ну почти, но не совсем. Дело в том, что ускорители рейтрейсинга уже давно есть. И есть статьи по тому как их делали.
Я хочу сделать не просто железку которая считает пресечения, а сделать программируемый процессор. Такое решение на котором в теории можно было бы ускорить обычный C++ код, добавив к нему всего-лишь небольшой юнит описанный на VHDL.
Ну насчет LEON-а я думал. Я еще раз хочу подчеркнуть, что не мультиядерность мне нужна а многопоточность. Это немного разные вещи.
Потоки стоять не будут. Поскольку хочу сделать только прототип, то все данные я положу в память на чипе. Ничего грузить извне я не собираюсь, это должен быть только прототип.
Но вобщем я попробую наверное на обычном проце сделать, типа LEON или Nois 2. А там посмотрим.
Спасибо еще раз всем за ценные замечания!