Нашёлся способ в разы сократить критические задержки оперативной памяти, обойдя проблему архитектуры, существующую последние 60 лет. Блогер LaurieWired провела эксперимент и выяснила, что штатный цикл обновления ячеек увеличивает время ожидания данных с нормальных 80 до примерно 400 наносекунд. Пока человек моргает, память успевает затормозить и запуститься больше сотни тысяч раз. Эти микропаузы суммируются и создают накопительный эффект простаивания процессора.
Окончательно эту проблему не решили из-за самой экономики DRAM: дешёвая и плотная память имеет необходимость постоянно обновлять заряд в ячейках. А программно обойти эти паузы сложно уже по другой причине: производители не раскрывают, как физические адреса раскладываются по каналам и банкам памяти. В итоге код либо срабатывает мгновенно, либо упирается в стену сервисного обслуживания контроллера. У Такие простои заставляют процессор тратить время на ожидание и имеют накопительный эффект.
Блогер предложила метод Tail Slayer. Она продублировала критические данные и разнесла их по независимым каналам памяти, заставив копии соревноваться друг с другом. Система отправляет два параллельных запроса: если один попадает на обновление памяти и зависает, второй с высокой вероятностью проходит быстрее. В тестах на серверных Intel, AMD и Arm это до 15 раз снижало задержки, но и цена немалая: больше памяти, ядер, давления на пропускную способность и необходимость индивидуального подхода под разные процессоры. Поэтому это скорее может стать решением для бирж, ЦОДов и других мест, где важны даже лишние наносекунды.