- •Оператор Пользователь
- •Организация процессоров
- •Программная модель микропроцессора. Регистры процессора
- •Система команд
- •Различия между ядрами одной микроархитектуры
- •Частота работы ядра
- •Особенности образования названий процессоров
- •1. Общие принципы взаимодействия процессора и озу Контроллер памяти
- •Процессорная шина
- •2.Классификация запоминающих устройств
- •3. Организация памяти первого уровня
- •Эксклюзивная и инклюзивная кэш
- •Блокируемая и неблокируемая кэш-память
- •Политики записи и продержка когерентности
- •Освобождение кэш
- •4. Организация адресных (сверхоперативных) запоминающих устройств
- •5. Запоминающие устройства с ассоциативной организацией
- •6. Организация кэш–памяти на основе ассоциативного запоминающего устройства (кэш с ассоциативной организацией)
- •Ство строк в кэше
- •7. Организация стековых (магазинных) запоминающих устройств
- •8. Организация памяти второго уровня (основной оперативной памяти)
- •9. Организация памяти третьего уровня (внешней памяти)
- •Классификация и основные характеристики внешних запоминающих устройств
- •Организация накопителей на магнитных дисках
- •Дорожки
- •Верхности
- •Организация накопителей на магнитной ленте
- •Организация оптических дисков
- •Комбинированные уровни
- •Вычислительные системы
- •Кластеры
- •Организация функционирования вычислительных систем
- •Проблемы физической передачи данных по линиям связи
- •Проблемы объединения нескольких компьютеров
- •Топология физических связей
- •Организация совместного использования линий связи
- •Адресация компьютеров
- •Ethernet — пример стандартного решения сетевых проблем
- •Структуризация как средство построения больших сетей
- •Физическая структуризация сети
- •Логическая структуризация сети
Эксклюзивная и инклюзивная кэш
В иерархии памяти обычно более быстрые уровни хранят избранные копии содержимого более медленных уровней. Например, в L2 КЭШе хранятся области из оперативной памяти, а в L1 хранятся области из L2. Такая архитектура называется инклюзивной
(Inclusive).
Для экономии места на кристалле используют эксклюзивную КЭШ. В эксклюзивной (Exclusive) архитектуре КЭШ после того как данные переданы из L2 в L1, их копия в L2 уничтожается. То есть в эксклюзивном КЭШе мы можем хранить объем информации L2+L1, а в инклюзивном только L2, так как в L1 находятся копии L2. Хотя в таком случае скорость КЭШа может уменьшаться, но эффективность увеличивается, по мнению компании AMD. Эксклюзивности КЭШ, процессоры AMD с меньшими тактовыми частотами смогли конкурировать с CPU Intel с более высокими частотами.
Блокируемая и неблокируемая кэш-память
Существует две основных разновидности сверхоперативной памяти: блокируемая кэш-память и неблокируемая.
Блокируемая кэш-память - блокирует доступ к кэшу после всякого кэш-промаха. Независимо от того, присутствуют ли запрашиваемые данные в сверхоперативной памяти или нет, до тех пор, пока кэш-строка, вызвавшая промах, не будет целиком загружена (выгружена), кэш не сможет обрабатывать никаких других запросов. В настоящее время блокируемая кэш-память практически не используется, поскольку при частых кэшпромахах она работает крайне непроизводительно.
Неблокируемая кэш-память, напротив, позволяет работать с кэшем параллельно с загрузкой (выгрузкой) кэш-строк. То есть, кэш-промахи не препятствует кэш-попаданиям. И это - хорошо! Несмотря на то, что неблокируемая кэш-память имеет значительно большую аппаратную сложность (а, значит, и стоимость), в силу своей привлекательности, она широко используется в старших процессорах семейства x86, как впрочем и во многих других современных процессорах.
Политики записи и продержка когерентности
Если бы ячейки памяти были доступны только на чтение, то их скэшированная копия всегда совпадала бы с оригиналами. Возможность записи рождает следующие проблемы: во-первых, кэш-контроллер должен отслеживать модификацию ячеек кэш-памяти, выгружая в основную память модифицированные ячейки при их замещении, а, во-вторых, необходимо как-то отслеживать обращения всех периферийных устройств (включая остальные микропроцессоры в многопроцессорных системах) к основной памяти.
Кэш-контроллер обязан обеспечивать когерентность (coherency) - согласованность кэш-памяти с основной памятью. Допустим, к некоторой ячейке памяти, уже модифицированной в кэше, но еще не выгруженной в основную память, обращается периферийное устройство (или другой процессор) - кэш-контроллер должен немедленно обновить основную память, иначе оттуда прочитаются "старые" данные. Аналогично, если периферийное устройство (другой процессор) модифицирует основную память, например посредством DMA, кэш-контроллер должен выяснить - загружены ли модифицированные ячейки в его кэш-память и, если да - обновить их.
Способы поддержки когерентности.
Сквозная (Write True write policy) политика - кэширование ячеек основной памяти при чтении и запись напрямую, минуя кэш, сразу в основную память. Сквозная политика легка в аппаратной реализации, но крайне неэффективна.
Сквозная запись с буферизацией (Write Combining write policy) - частично компенсирует задержки обращения к памяти с помощью буферизации. Записываемые данные на первом этапе попадают не в основную память, а в специальный буфер записи (store/write buffer), размером порядка 32 байт. Там они накапливаются до тех пор, пока буфер целиком не заполнится или не освободится шина, а затем все содержимое буфера записывается в память "одним скопом". Недостатком является то, что значительная часть процессорного времени по-прежнему расходуется именно на выгрузку буфера в основную память.
Более сложный (но и совершенный!) алгоритм реализует обратная политика записи (Write Back write policy), до минимума сокращающая количество обращений к памяти. Для отслеживания операций модификации с каждой ячейкой кэш-памяти связывается специальный флаг, называемый флагом состояния. Если кэшируемая ячейка была модифицирована, то кэш-контроллер устанавливает соответствующий ей флаг в грязное (dirty) состояние. Когда периферийное устройство обращается к памяти, кэш-контроллер проверяет флаг. Грязные ячейки выгружаются в основную память, а их флаг устанавливается в состояние "чисто" (clear). Аналогично при замещении старых кэш-строк новыми, кэш-контроллер в первую очередь стремится избавиться от чистых кэш-строк, т.к. они могут быть мгновенно удалены из кэша без записи в основную память. И только если все строки грязные - выбирается одна, наименее ценная (с точки зрения политики замещения данных) и "сбрасывается" в основную память, освобождая место для новой "чистой" строки.
