- •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.
24. Кэш прямого отображения. Наборно-ассоциативный и ассоциативный кэш.
Кэш прямого отображения
В каждой строке КЭШа может отображаться только определенный набор блоков основной памяти. Основная память условно разбивается на страницы, каждая из которых равна размеру КЭШа, например, 256 Кбайт. Кэш-память и основная память делятся на строки, если размер строки КЭШа 32 байта, то тогда в нашем примере на 8К строк (по 32 байта каждая). Каждая строка КЭШа может отображать из любой страницы кэшируемой памяти только соответствующую ей строку. То есть на каждую строку КЭШа могут претендовать множество блоков основной памяти с одинаковой младшей частью адреса (смещением внутри страницы). Тогда в теге каждой строки кэш-памяти достаточно хранить лишь номер страницы в основной памяти. Также в теге хранятся признаки действительности и модифицированности данных. Таким образом, каждой строке основной памяти соответствует единственная строка КЭШа.
При появлении запроса на считывание данных из памяти, контроллер памяти сначала проверяет, есть ли соответствующие данные в КЭШе. Для этого достаточно по младшей части адреса требуемой ячейки найти соответствующую ей строку КЭШа и сравнить содержимое ее тэга со старшей частью адреса требуемой ячейки, а также проверить содержимое флага действительности. То есть поиск осуществляется достаточно быстро, за счет того, что по адресу ячейки сразу ясно в какой строке КЭШа она может отображаться. В случае промаха после считывания из основной памяти новые данные помещаются в соответствующую строку КЭШа (если она немодифицированная). Если реализовано упреждающее считывание, то в последующие свободные циклы шины данных обновляется следующая строка (если и она чистая, то есть немодифицированная). Независимо от объема затребованных данных, строка в КЭШе переписывается целиком, так как признак действительности относится к строке в целом. Возможен секторированный вариант КЭШа, когда каждый сектор в строке имеет свой признак действительности, и возможно частичное изменение строки.
Такой кэш имеет сравнительно простую организацию, но один серьезный минус. Если программа обращается к данным из разных страниц основной памяти, особенно к строкам, имеющим одинаковое смещение, но разные страницы, то будет наблюдаться сплошная череда промахов. А такая ситуация весьма характерна для многозадачных ОС, когда каждой выполняемой программе соответствуют определенные страницы в памяти, и происходят частые переключения между этими страницами.
Объем кэшируемой памяти определяется как размером кэш-памяти, так и разрядностью тега.
Наборно-ассоциативный и ассоциативный кэш
В наборно-ассоциативной архитектуре каждая строка основной памяти может отображаться на одну из нескольких строк КЭШа. В полностью ассоциативном КЭШе – на любую строку КЭШа. Ассоциативность КЭШа снижает вероятность конфликтных ситуаций, когда все используемые для данного блока основной памяти строки кэш-памяти заняты другими блоками. Однако при этом усложняются алгоритмы поиска нужной ячейки в кэш-памяти, ведь прямой перебор тэгов всех строк здесь неприменим. Остается только параллельный анализ всех строк, что является сложной аппаратной задачей, эта сложность существенно увеличивается с увеличением объема кэш-памяти. Поэтому полностью ассоциативным удается сделать только первичный кэш.