Источник: MIT

Исследователи из МТИ предложили новый механизм когерентности кэшей для многоядерных процессоров, в котором размер справочника растет в зависимости от количества ядер не линейно, а логарифмически: в 128-ядерном процессоре памяти понадобится втрое меньше, чем при использовании стандартного протокола на основе справочника, а в тысячеядерном — уже на 96% меньше. Кроме того, механизму из МТИ не нужна широковещательная рассылка сообщений, благодаря чему возможно преимущество по производительности. Механизм основан на концепции «путешествия во времени»: соблюдается логический порядок выполнения операций, который может отличаться от реального. Каждому ядру и элементу данных в памяти ставятся в соответствие счетчики, при запуске программы все они равны нулю. Когда ядро считывает элемент данных, оно «арендует» его, устанавливая счетчик, например, в 10 (важно не само число, а значение относительно других). А когда ядру надо перезаписать этот элемент, оно становится его «владельцем». Другие ядра могут продолжать работать с локальными копиями того же элемента, а перезаписывающее ядро увеличивает свой счетчик до значения большего, чем значение счетчика самого элемента.