Re[16]: А если бы все с начала ?
От: gardener  
Дата: 01.02.18 22:49
Оценка:
DDR latency и производительность — мне сейчас очень интересна эта тема.

Есть несколько достаточно простых in-order RISC процессоров. Система занимается обработкой сетевых пакетов. Эти процессоры организую своего рода pipeline.
В результате многих оптимизаций пришли к резултату когда bolleneck СPU тратит ~1.6K тактов на пакет, 1.5 тактов на инструкцию, ~570 инструкций на пакет, ~750 тактов это pipeline stall на внешней шине.

ICache miss почти ноль (1-2 в среднем на пакет), DDR latency в зависимости от нагрузки 50-70 тактов.
Внутреннее состояние в tighly coupled memory, т.е. гарантированно очень быстро, как из обычного кеша.

Нужна еще большая производительность.

Оптимизировать код? Осталось всего 570 инструкций — буду пытаться, но шансов уже немного.

Уменьшать задержки с внешней памятью? 47% времени тратится на это. Скорее всего сюда надо смотреть.
DDR bandwidth похоже хватает с головой (жду результаты от ASIC team с тестами на FPGA), но практически уверен по косвенным данным.
Т.е. надо смотреть на DDR latency и уменьшать CPU stalls из-за этого. Процессор in-order, поэтому делать надо explicitly. Prefetch инструкций нет. Есть tightly coupled DMA, доступ к его регистрам близок, есть двухпортовая tightly coupled data memory. Пока вижу вариант делать prefetch с помощью этого DMA с целью спрятать DDR latency. Других возможностей пока не вижу.

Я что-то упускаю?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.