Ну что же (фанфары!), в первом приближении оно работает. В ожидании, когда придет заказанная панелька для 30pin SIMM, я распаял старый 1Мx8 модуль прямо так.
Refresh выполняется CBR-пачками каждые 4ms. Судя по тестам (периодически читаемая из памяти картинка) данные в DRAM не успевают протухнуть. Но это в обычном режиме, а вот в tight loop придется очень сильно прогибаться. Я даже пока не представляю толком, как.
Относительно объема памяти. Самые ходовые (по крайней мере у меня под рукой) модули - 1Мx8. Можно попытаться поискать 4Mx8, но это уже более дефицитные, насколько я помню - их модно было ставить в SoundBlaster AWE32 и выше.
По моим прикидкам для формирования в памяти образа диска требуется около 1.8М. Однако можно поступить проще: держать в DRAM оригинальный образ диска (только секторы), это 900К. В оставшейся памяти легко размещается буфер на две дорожки реального размера (1088 x 11 x 2). Соответственно дорожку можно формировать непосредственно перед отдачей (поступила команда на SEEK - вычислили номер дорожки - сформировали). Насколько это будет жруче по ресурсам, надо будет посчитать.
Впрочем, это для случая, когда памяти мало. Когда ее много, можно формировать "пухлый" образ прямо на лету, во время чтения посекторного образа с флешки.
NB 1. На сегодня 512 байт с флешки при тактовой 2MHz читаются за ~5ms. Положим время записи байта в DRAM в 2us @8MHz, тогда среднее время загрузки сектора в DRAM составит 5ms + 512*2us = 6ms. Для файла в 900К время загрузки получается около 11 секунд. Можно попробовать гонять SPI на 4MHz, уполовинив и это время.
NB 2. Часть DRAM можно использовать под кэширование FAT.
Refresh выполняется CBR-пачками каждые 4ms. Судя по тестам (периодически читаемая из памяти картинка) данные в DRAM не успевают протухнуть. Но это в обычном режиме, а вот в tight loop придется очень сильно прогибаться. Я даже пока не представляю толком, как.
Относительно объема памяти. Самые ходовые (по крайней мере у меня под рукой) модули - 1Мx8. Можно попытаться поискать 4Mx8, но это уже более дефицитные, насколько я помню - их модно было ставить в SoundBlaster AWE32 и выше.
По моим прикидкам для формирования в памяти образа диска требуется около 1.8М. Однако можно поступить проще: держать в DRAM оригинальный образ диска (только секторы), это 900К. В оставшейся памяти легко размещается буфер на две дорожки реального размера (1088 x 11 x 2). Соответственно дорожку можно формировать непосредственно перед отдачей (поступила команда на SEEK - вычислили номер дорожки - сформировали). Насколько это будет жруче по ресурсам, надо будет посчитать.
Впрочем, это для случая, когда памяти мало. Когда ее много, можно формировать "пухлый" образ прямо на лету, во время чтения посекторного образа с флешки.
NB 1. На сегодня 512 байт с флешки при тактовой 2MHz читаются за ~5ms. Положим время записи байта в DRAM в 2us @8MHz, тогда среднее время загрузки сектора в DRAM составит 5ms + 512*2us = 6ms. Для файла в 900К время загрузки получается около 11 секунд. Можно попробовать гонять SPI на 4MHz, уполовинив и это время.
NB 2. Часть DRAM можно использовать под кэширование FAT.