Построить график функции Точки разрыва функции Построение графика методом дифференциального исчисления Создание схемы логических элементов
Примеры решений Перевод дробных чисел Формат с плавающей точкой
Перевести в 2 систему Перевод в 8 систему Перевод в 10 систему
Дополнительный код Сложение двоичных чисел Умножение двоичных чисел

Кэширование памяти

Архитектура современных 32-разрядных процессоров включает ряд средств кэширования памяти: два уровня кэша инструкций и данных (L1 Cache и L2 Cache), буферы ассоциативной трансляции (TLB) блока страничной переадресации и буферы записи. Эти средства в разных вариациях (на кристалле, картридже процессора или на системной плате) представлены в системах с процессорами 486, Pentium и Р6. В процессоре 80386 (Intel) имелся только TLB, а кэш-память, устанавливаемая на системной плате, не имела поддержки со стороны процессора.
Все механизмы кэширования в основном прозрачны для прикладных программ и после разрешения кэширования пропускают через себя потоки инструкций и данных без требования явного программного управления. Однако знание особенностей механизмов кэширования помогает в оптимизации кода. Так например, можно определить оптимальные размеры одновременно обрабатываемых структур данных, при которых кэш не «буксует» (cache thrashing). Процессоры разных моделей имеют различные характеристики отдельных элементов кэша. Определить характеристики элементов кэша процессоров Р6 позволяет вызов инструкции CPUID(2). Заметим, что не все модели процессоров способны кэшировать весь объем физически адресуемой памяти.
Кэш-память процессоров строится с учетом возможности обращений к памяти со стороны внешних абонентов – других процессоров или иных контроллеров шины. Процессоры имеют механизмы внешнего слежения за состоянием собственного кэша с соответствующими аппаратными интерфейсами. Для поддержания согласованности данных кэша и основной памяти процессор отрабатывает циклы слежения (Snoop Cycle или Inquire Cycle), инициированные внешней (для него) системой. В этих циклах, происходящих при обращении к памяти со стороны внешнего абонента, процессор определяет присутствие затребованной области в своем собственном кэше. Если область отображается в кэше, то действия процессора зависят от состояния соответствующей строки кэша и типа внешнего обращения. Обращение по записи вызовет аннулирование данной строки. Обращение по чтению к области, соответствующей модифицированной («грязной») строке, вызовет выгрузку ее содержимого в основную память, прежде чем внешний абонент выполнит реальное считывание. В процессорах Р6 обращение к «грязной» строке со стороны другого процессора может вызывать выгрузку ее содержимого непосредственно в обращающийся процессор, что экономит время. Выгрузка этой строки в основную память будет произведена позже, согласно алгоритму обратной записи.
Кэш процессоров, начиная с Pentium, поддерживает протокол MESI, названный по определяемым им состояниям М (Modified), E (Exclusive), 5 (Shared), I (Invalid). Первичный кэш инструкций реализует протокол лишь в части «SI», поскольку он не допускает записи. Состояния строк для каждого процессора определяются следующим образом:
Процессор контролирует операции записи в память на попадание в область, представленную в кэше инструкций. Контроль выполняется на уровне физических адресов, в случае попадания строка аннулируется.
В пространстве памяти компьютера имеются области, для которых кэширование принципиально недопустимо (например, разделяемая память адаптеров) или для которых непригодна политика обратной записи. Кроме того, кэширование иногда полезно отключать при выполнении однократно исполняемых участков программы (например, инициализации) с тем, чтобы из кэша не вытеснялись более полезные фрагменты.
В процессорах шестого поколения в связи с их «беспорядочностью» и «спекулятивностью» обращения к памяти могут производиться с различными методами повышения эффективности. По возможностям кэширования память можно классифицировать следующим образом.
Доступные методы кэширования зависят от возможностей процессора. Базовые методы (сквозная и обратная запись или отмена кэширования) управляются атрибутами системы управления страничной переадресации, более совершенные методы программируются только через регистры MTRR или PAT, таковые имеются в процессоре.
Memory Type Range Registers - регистры, описывающие свойства областей памяти.
Page Attribute Table - таблица атрибутов страниц памяти.