igorchem (02.04.2010 15:38 - 15:46, просмотров: 255) ответил Mahagam на представьте себе как можно обращаться физически в одно и то же время к 4-м ячейкам памяти одновременно? это ж 4 разных адреса. или по 4-м разным тактовым сигналам.
Примерно это ограничение я с Ваших слов понял, спасибо, но, с Вашим сравнением глобальной операции - полностью не согласен. Действительно, если все треды на ГПУшном мультипроцессоре хотят посчитать сумму, тут только бинарное дерево поможет, и то, часто, из-за банк конфликтов в общей памяти надо не по 2, а по 4 объединять и суммарно эта процедура на тысячу тактов тянет :(((
Другое дело, что мне надо. У меня есть
массив слов (например reg [63:0] RingData [0:MaxNN])
два поинтера (reg [15:0] InPointer, OutPointer;)
два клока (reg InClock, OutClock;)
и еще некоторый свич, по которому я могу определить записать мне сейчас в этот массив данных только одно пришедшее слово, или пришло сразу два слова.
Вот эту конструкцию мне надо реализовать.
Более того, времени у меня между клоками более менеее достаточно, данные сыпятся с частотой 50МГц, то есть с этой частотой мне надо либо одно, либо два 64 битных слова записать.
Вопросы в том, что как это оптимально сделать? Стоит ли мне разбить все эти данные на 8-64 параллельных блока, каждый поместить в свой M9K блок, завести клок в 100МГц который то записывает, то нет: то есть когда пришло одно данное, записать только 1 раз и один раз пропустить, а когда пришло 2 данных - записать оба последовательно.
Честно говоря, в моем уме это не выкристаллизовывалось как не параллельная операция, но, так как я не знаю, как какая схема реализуется, мне не понятно через что ее сконструировать.
Вот в этом-то и мои загвоздки. Шарил пока по мануалам, но все еще ничего путевого не нашел.
С уважением
Игорь