- •Содержание:
- •Кэш-память
- •Архитектура кэш-памяти
- •Кэш-память с прямым отображением
- •Полностью ассоциативная архитектура
- •Наборно-ассоциативная архитектура
- •Гарвардская и Принстонская архитектуры
- •Размеры кэш-памяти
- •Методы записи
- •Обновление информации
- •Кэш в процессорах с умножением частоты
- •Разработка приложения.
- •Техническое задание.
- •Интерфейс программы.
- •Алгоритм приложения.
- •Исходный текст программы.
- •Описание программы.
Полностью ассоциативная архитектура
Другим типом архитектуры является полностью ассоциативная кэш-память. В этом случае любой блок памяти может занимать любую строку кэша. Полный адрес памяти делится только на две части: младшие разряды — смещение в строке и старшие разряды — информация о теге (см. рис. 23). В этой архитектуре решена проблема конфликтов адресов, однако сама кэш-память требует для своей реализации больших аппаратных затрат, поскольку значения тегов должны уже сравниваться для всех линий кэша. Тем не менее микропроцессор 6х86 фирмы Cyrix, по некоторым данным, имеет вторичную встроенную 256-байтную кэшпамять для команд, которая имеет полностью ассоциативную архитектуру.
Наборно-ассоциативная архитектура
Разумным компромиссом между двумя рассмотренными архитектурами является наборно-ассоциативная организация кэшпамяти. В этом случае несколько линий (две, четыре, пять, восемь) объединяются в наборы, и средние биты адреса памяти определяют уже не конкретную линию (как в прямом отображении), а набор (см. рис. 24). Сравнение тегов (со значением старших разрядов) производится только для линий, входящих в набор. Подобную архитектуру имеет подавляющее число процессоров, например 486DX, 486DX2, IntelDX4, Pentium и т.д.
По количеству линий кэша, входящих в набор, подобная архитектура может называться 2-входовой (2-way set associative), 4-входовой (4-way set associative) и т.д.
Гарвардская и Принстонская архитектуры
Теперь, что касается разделения кэш-памяти на память для команд и отдельно для данных. Вообще говоря, подобная архитектура носит название Гарвардской (Harvard architecture) в отличие от смешанной — Принстонской (Princeton architecture). Последний тип кэш-памяти называется обычно "смешанной", поскольку она используется как для чтения команд, так и для переноса данных. Кстати, название "Гарвардская архитектура" связано с компьютером "Марк-1" (1950 год), который имел отдельную память для команд. В противоположность этому в Принстоне создавались компьютеры с единой памятью для команд и данных (архитектура Джона фон Неймана).
Раздельный кэш для команд и данных позволяет оптимизировать размер каждого кэша и его линии, а также количество входов независимо от другого. Кроме того, выборка команд и данных может в этом случае производиться одновременно. Тем не менее имеются и недостатки. Они проявляются, например, если вдруг одна из выполняемых программ потребует кэш-памяти для команд чуть большего размера, а для данных чуть меньшего, или наоборот.
Смешанную кэш-память имеют процессоры Alpha фирмы DEC и 6х86 фирмы Cyrix. Более известный микропроцессор фирмы Intel Pentium использует раздельные 2-входовые наборно-ассоциативные кэши для команд и данных размером по 8 Кбайт.
Размеры кэш-памяти
Как известно, большинство микропроцессоров (за исключением суперскалярных) в компьютере работают последовательно, то есть выполняют все команды одну за другой. Однако в программах часто используются конструкции, включающие в себя циклы или переходы по некоторому условию. Разумеется, желательно, чтобы такие программные конструкции целиком помещались в кэш-память, так как в противном случае процессор для выполнения соответствующей инструкции будет вынужден снова обращаться к оперативной памяти, что приведет к выполнению им бесполезных циклов ожидания. При обмене данными возникает похожая проблема. Адреса данных, которые вскоре понадобятся процессору для обработки, лежат в большинстве случаев рядом с адресами данных, обрабатываемых непосредственно в это же время. Поэтому кэш-контроллер должен также заботиться о размещении всего блока данных в статической памяти.
Таким образом, что касается размера кэш-памяти, то для микропроцессоров, используемых в IBM PC-совместимых компьютерах, он колеблется от 0,5 (Chips&Technologies 38605SX/DX) до 16 Кбайт (IntelDX4). А вот в микропроцессорах Pentium OverDrive, Nx586 фирмы NexGen и ряде других общий размер кэш-памяти составляет уже 32 Кбайта. Стоит напомнить, что объем оперативной памяти IBM PC составлял 64 Кбайта.
Разумеется, работа кэш-памяти немыслима без собственного контроллера, впрочем, так же, как и работа большинства других типов памяти. Главное, чтобы при каждом обращении микропроцессора оперативная память и кэш обеспечивали целостность данных. Для этого имеется несколько возможностей.