- •1. Вычислительный цикл процессора.
- •2. Вентили и логические элементы.
- •3. Понятие архитектуры и микроархитектуры. Классификация вычислительных средств по архитектуре (классификация Флинна).
- •4. Микропроцессор (мп). Состав и основные функции. Процессоры risc и cisc.
- •5. Архитектура ia-32. Режимы работы процессора.
- •6. Архитектура ia-32. Особенности представления информации.
- •7. Архитектура ia-32. Регистры общего назначения и сегментные регистры.
- •8. Архитектура ia-32. Регистры смещений и регистр флагов.
- •9. Архитектура ia-32. Организация памяти.
- •10. Архитектура ia-32. Организация прерываний.
- •11. Ассемблер. Области применения. Достоинства и недостатки.
- •12. Ассемблер. Структура программы. Модель памяти small.
- •13. Ассемблер. Основные типы предложений.
- •14. Ассемблер. Описание сегмента данных.
- •15. Ассемблер. Способы адресации памяти.
- •16. Ассемблер. Команды пересылки данных. Арифметические команды
- •17. Ассемблер. Команды переходов. Процедуры.
- •18. Ассемблер. Команды управления циклами. Команды прерывания.
- •19. Запоминающие устройства. Иерархичная организация памяти. Основные показатели быстродействия системы памяти.
- •20. Физические основы работы внутренней памяти. Энергозависимая память.
- •21. Внутренняя энергонезависимая память.
- •22. Аппаратно-программные методы ускорения обработки данных. Распараллеливание операции
- •23. Аппаратно-программные методы ускорения обработки данных. Кэширование памяти.
- •24. Кэш прямого отображения. Наборно-ассоциативный и ассоциативный кэш.
- •25. Микроархитектурные особенности процессоров x86 I-V поколений.
- •26. Микроархитектурные особенности процессоров x86 VI поколений.
- •27. Микроархитектура NetBurst и Intel Core.
- •28. Архитектура ia-64.
23. Аппаратно-программные методы ускорения обработки данных. Кэширование памяти.
Кэширование памяти
Общие принципы
По статистике, каждая третья операция в программе – это операция с памятью. Мы с вами говорили о том, что динамическая память, используемая в качестве основной памяти, работает по сравнению с процессором медленно. Обращение к ней приводит к простою процессора – появляются такты ожидания. Для ускорения работы с памятью используется специальный буфер между регистрами процессора и основной памятью, называемый кэш-памятью или просто КЭШем. Эффективность кэш-памяти обуславливается характерной особенностью программного обеспечения, заключающуюся в том, что в короткие промежутки времени преимущественно, используются одни и те же данные, либо данные, имеющие близкие адреса. Поэтому в кэш-память заносятся данные, к которым происходило обращение, а также данные из соседних ячеек.
При каждом обращении к памяти контроллер кэш-памяти проверяет, есть ли копия затребованных данных в КЭШе. Если есть, то это случай кэш-попадания. Данные берутся из кэш-памяти и обращения к основной памяти не происходит. Если копии нет, то это случай кэш-промаха и данные приходится брать из основной памяти. При этом блок данных, считанный из основной памяти, по определенным правилам заместит один из блоков КЭШа. От качества алгоритма замещения зависит процент попаданий – один из основных параметров быстродействия кэш-памяти. Другим важным параметром является время поиска в кэш-памяти нужных данных. Обращение к основной памяти может осуществляться одновременно с поиском в КЭШе. В случае промаха это сэкономит такты процессора. Однако это увеличивает энергопотребление.
Обычно применяется двухуровневая схема кэширования. Первый уровень КЭШа, так называемый L1, является внутренним, то есть всегда расположен на процессорном кристалле. Объем его не велик (порядка 8-128 Кб). В Гарвардской архитектуре кэш для данных и команд физически разделен. В принстонской архитектуре – для данных и команд общий кэш. Вторичный кэш подключается, как правило, к специальной процессорной шине, работающей на частоте, близкой к тактовой частоте процессора.
Кэш логически представляет собой набор строк фиксированной длины. С каждой строкой связана некоторая служебная информация – адрес содержащегося в ней в текущий момент блока основной памяти, и ее состояние (действительная или нет). Эта служебная информация называется тегом (tag).
Запись блока памяти, который не присутствует в КЭШе, осуществляется прямо в основную память. Если же данный блок присутствует в КЭШе, то возможны два варианта записи:
-
Сквозная запись. Информация одновременно записывается как в основную память, так и в КЭШ. Достоинства: процесс записи не может нарушить действительность данных в КЭШе, простота алгоритма. Недостаток: при каждой операции записи происходит обращение к основной памяти, даже если требуется записать всего один байт.
-
Обратная запись. Сначала происходит запись в кэш. При этом соответствующая строка КЭШа помечается как модифицированная, то есть требующая выгрузки в основную память. И только после выгрузки в эту строку можно помещать другие данные, иначе мы потеряем невыгруженные данные. В основную память данные переписываются только целой строкой. При этом контроллер может откладывать выгрузку, и производить ее в наиболее благоприятный момент, либо когда к основной памяти пришел запрос этих ячеек памяти от других устройств компьютера (графических адаптеров, контроллеров дисков, сетевых карт и т.п.). Этот алгоритм уменьшает количество операций записи в основную память. Однако его реализация требует дополнительных аппаратных ресурсов.
В зависимости от организации соответствия строки КЭШа и области основной памяти различают три архитектуры кэш-памяти: кэш прямого отображения, наборно (или частично) ассоциативный кэш и полностью ассоциативный кэш.