Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ВМСиC / Лаб ВМСиС / CASH / курсовик кэш.doc
Скачиваний:
29
Добавлен:
29.03.2015
Размер:
198.66 Кб
Скачать
      1. Полностью ассоциативная архитектура

Другим типом архитектуры является полностью ассоциатив­ная кэш-память. В этом случае любой блок памяти может зани­мать любую строку кэша. Полный адрес памяти делится только на две части: младшие разряды — смещение в строке и старшие разряды — информация о теге (см. рис. 23). В этой архитектуре решена проблема конфликтов адресов, однако сама кэш-память требует для своей реализации больших аппаратных затрат, по­скольку значения тегов должны уже сравниваться для всех линий кэша. Тем не менее микропроцессор 6х86 фирмы Cyrix, по неко­торым данным, имеет вторичную встроенную 256-байтную кэш­память для команд, которая имеет полностью ассоциативную ар­хитектуру.

      1. Наборно-ассоциативная архитектура

Разумным компромиссом между двумя рассмотренными архи­тектурами является наборно-ассоциативная организация кэш­памяти. В этом случае несколько линий (две, четыре, пять, во­семь) объединяются в наборы, и средние биты адреса памяти определяют уже не конкретную линию (как в прямом отображе­нии), а набор (см. рис. 24). Сравнение тегов (со значением стар­ших разрядов) производится только для линий, входящих в на­бор. Подобную архитектуру имеет подавляющее число процессо­ров, например 486DX, 486DX2, IntelDX4, Pentium и т.д.

По количеству линий кэша, входящих в набор, подобная архи­тектура может называться 2-входовой (2-way set associative), 4-входовой (4-way set associative) и т.д.

      1. Гарвардская и Принстонская архитектуры

Теперь, что касается разделения кэш-памяти на память для команд и отдельно для данных. Вообще говоря, подобная архи­тектура носит название Гарвардской (Harvard architecture) в от­личие от смешанной — Принстонской (Princeton architecture). Последний тип кэш-памяти называется обычно "смешанной", поскольку она используется как для чтения команд, так и для переноса данных. Кстати, название "Гарвардская архитектура" связано с компьютером "Марк-1" (1950 год), который имел от­дельную память для команд. В противоположность этому в Принстоне создавались компьютеры с единой памятью для команд и данных (архитектура Джона фон Неймана).

Раздельный кэш для команд и данных позволяет оптимизиро­вать размер каждого кэша и его линии, а также количество вхо­дов независимо от другого. Кроме того, выборка команд и дан­ных может в этом случае производиться одновременно. Тем не менее имеются и недостатки. Они проявляются, например, если вдруг одна из выполняемых программ потребует кэш-памяти для команд чуть большего размера, а для данных чуть меньшего, или наоборот.

Смешанную кэш-память имеют процессоры Alpha фирмы DEC и 6х86 фирмы Cyrix. Более известный микропроцессор фирмы Intel Pentium использует раздельные 2-входовые наборно-ассоциативные кэши для команд и данных размером по 8 Кбайт.

    1. Размеры кэш-памяти

Как известно, большинство микропроцессоров (за исключе­нием суперскалярных) в компьютере работают последовательно, то есть выполняют все команды одну за другой. Однако в про­граммах часто используются конструкции, включающие в себя циклы или переходы по некоторому условию. Разумеется, жела­тельно, чтобы такие программные конструкции целиком поме­щались в кэш-память, так как в противном случае процессор для выполнения соответствующей инструкции будет вынужден сно­ва обращаться к оперативной памяти, что приведет к выполне­нию им бесполезных циклов ожидания. При обмене данными возникает похожая проблема. Адреса данных, которые вскоре понадобятся процессору для обработки, лежат в большинстве слу­чаев рядом с адресами данных, обрабатываемых непосредствен­но в это же время. Поэтому кэш-контроллер должен также забо­титься о размещении всего блока данных в статической памяти.

Таким образом, что касается размера кэш-памяти, то для мик­ропроцессоров, используемых в IBM PC-совместимых компью­терах, он колеблется от 0,5 (Chips&Technologies 38605SX/DX) до 16 Кбайт (IntelDX4). А вот в микропроцессорах Pentium OverDrive, Nx586 фирмы NexGen и ряде других общий размер кэш-памяти составляет уже 32 Кбайта. Стоит напомнить, что объем опера­тивной памяти IBM PC составлял 64 Кбайта.

Разумеется, работа кэш-памяти немыслима без собственного контроллера, впрочем, так же, как и работа большинства других типов памяти. Главное, чтобы при каждом обращении микро­процессора оперативная память и кэш обеспечивали целостность данных. Для этого имеется несколько возможностей.