Известно, что в SoC шина данных - 32 разряда (к примеру, Wishbone).
Интерфейс к памяти DDR позволяет записать сразу от 2 до 8 таких слов начиная с заданного адресса. Аналогично он может их и считать подобны образом. Соответственно, для записи требуется порядка 24 тактов и для чтения около 33.
Очевидно, что реализовать одинчную модификацию одного слова по заданному адресу возможно используя метод "Read-Modify-Write": Прочитать бёрстом несколько адрессов, модифицировать нужный, записать. Но тогда это потребует порядка 55-60 тактов, а это значительно синизит производительность.
Естественно, есть альтернатива, которая запрещает работать c контроллером в "однословном" режиме, но это сильно зависит от других переферийных устройств, которые могут и не работать постоянно в режиме Burst.
Описано ли где либо, как работать в таких случаях? Есть ли какие другие альтернативы ? Как реализованно это в современных DDR контроллерах архитектур x86 или ARM?
|