logo
Методичка

10.1.4 Intel Smart Memory Access

Одним из узких мест массовых вычислительных систем является работа с памятью. Скорость работы с ней постоянно отстает от потребностей процессора. Поэтому производители вынуждены постоянно думать об оптимизации работы с ней.

Вычислительному ядру быстрее всего обмениваться информацией с кэшами L1 (64 Кбайт) и L2 (2 или 4 Мбайт). Поэтому, чтобы не возникало простоев, данные должны быть заблаговременно в них загружены. За это отвечают алгоритмы предварительной выборки, над которыми инженерные умы из Intel работают уже много лет и добились хороших результатов.

Реализованные в архитектуре Core модули отслеживают потоки информации и на основании собранной статистики пытаются предсказать, какие данные потребуются вычислительным блокам в следующий момент. Всего таких блоков шесть. Два из них являются связующим звеном между оперативной памятью RAM и кэшем L2 и подгружают информацию, которая может понадобиться для работы в перспективе. Оставшиеся четыре разделены поровну (по два) между ядрами и обеспечивают предварительную выборку данных в рабочий кэш L1.

В дополнение к этому при работе с памятью применяется технология Memory Disambiguation - устранение противоречий (рис. 10.4). Противоречия, как правило, возникают в процессе работы алгоритмов внеочередного исполнения инструкций, когда доступ (чтение) запрещен до тех пор, пока не будет выполнена процедура записи. Хотя во многих случаях читаемые и сохраняемые данные никак между собой не связаны. Поиском таких участков кода и занимается система Memory Disambiguation.

Если же возникает ошибка работы системы и заранее исполненный код отработал с неверными данными, что, со слов разработчиков, происходит нечасто, то осуществляется перезагрузка верной информации, и запускается ее повторная обработка.