Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Архитектура компьютеров / 8_Память КОНСПЕКТ.doc
Скачиваний:
49
Добавлен:
20.03.2015
Размер:
1.33 Mб
Скачать

7.2. Быстродействие, объем и стоимость

Мы уже говорили о том, что в идеале память должна быть быстрой, большой и де­шевой. Для реализации очень быстрой памя­ти лучше всего использовать микросхемы SRAM (Static RAM). Однако они довольно дороги, поскольку каждая ячейка такой памяти содержит шесть транзисторов, из-за чего на одной микросхеме невозможно разместить много ячеек. Таким образом, боль­шую память на основе микросхем SRAM нецелесообразно создавать из чисто эко­номических соображений. Для нее применяются гораздо более дешевые микро­схемы динамическая RAM (Dynamic RAM, DRAM), синхронная DRAM (SDRAM) и Rambus DRAM, с очень простыми ячейками, объединенные в модули большого объема SIMM, DIMM и RIMM. Правда, работает такая память медленнее SRAM.

Хотя в компьютер за вполне разумную цену можно установить сотни мегабай­тов динамической памяти, этого все равно недостаточно для современных про­грамм, обрабатывающих огромные объемы данных. Поэтому для увеличения ад­ресного пространства памяти используются внешние запоминающие устройства, прежде всего магнитные диски. Современные диски имеют очень большую ем­кость и, как правило, приемлемую цену, поэтому они достаточно интенсивно при­меняются в компьютерных системах. Однако функционируют магнитные диски значительно медленнее полупроводниковой памяти. Из всего сказанного следует такой вывод: очень большой объем памяти за приемлемую цену можно получить только в виде жесткого диска. Для реализации основной памяти большого объема подходит технология DRAM/SDRAM. А микросхемы SRAM можно использовать для созда­ния очень быстрых запоминающих устройств небольшого объема, таких как кэш-память.

Как правило, в компьютере используются все три типа памяти. Таким обра­зом, систему памяти компьютера можно представить в виде иерархии, показан­ной на рис. 7.2. Быстрее всего осуществляется доступ к данным, хранящимся в регистрах процессора. Поэтому, если рассматривать эти регистры как составляю­щую иерархии памяти, то с точки зрения быстродействия они располагаются на самом верху, хотя по объему составляют ничтожно малую часть всей памяти ком­пьютера.

Рис. 7.2. Иерархия памяти

На следующем уровне иерархии располагается сравнительно небольшой объем памяти, который можно реализовать прямо в микросхеме процессора. Эта па­мять, называемая кэшем процессора, содержит копии команд и данных, храня­щихся во внешней по отношению к процессору и намного большей основной па­мяти. Идея кэш-памяти, проиллюстрированная на рис. 7.2, подробно рассматри­вается в разделе 7.3. Обычно в компьютере имеется два уровня кэш-памяти. Первичный кэш располагается на микросхеме процессора и называется кэшем первого уровня (L1). Вторичный кэш имеет больший объем, располагается между первичным кэшем и остальной памятью и называется кэшем второго уровня (L2). Для его реализации обычно используются микросхемы SRAM.

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

Ниже по иерархии располагается основная память. Она довольно велика и реализуется на основе микросхем динамической памяти, как правило, в виде модулей SIMM, DIMM и RIMM. Основная память значительно больше и намно­го медленнее кэша. В типичном компьютере время доступа к основной памяти в десять раз больше времени доступа к кэшу L1.

Дисковые устройства предоставляют, можно сказать, огромный объем недоро­гой памяти, но по сравнению с полупроводниковыми устройствами они очень медленные.

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

7.3. Кэш-память

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

Эффективность механизма кэширования основывается на свойстве компью­терных программ, называемом локализацией ссылок. Анализ процесса реализации различных программ показывает, что большую часть времени в них выполняется код, в котором определенные группы команд повторяются помногу раз. Это про­стые и вложенные циклы, а также многократно вызываемые подпрограммы. При­чем последовательность выполнения команд не имеет значения — важно то, что многие из них в локализированных областях программы многократно повторя­ются в течение определенного промежутка времени, а доступ к оставшейся части программы осуществляется сравнительно редко. Это и называется локализацией ссылок. Локализация ссылок происходит и во времени, и в пространстве.

Лока­лизация во времени означает, что недавно выполнявшиеся команды, скорее всего, очень скоро будут выполнены снова.

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

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

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

Набор элементов с последовательными адресами определенного размера мы будем называть блоком или строкой кэша.

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

Соответствие между блоками в основной памяти и блоками в кэше опреде­ляется функцией отображения.

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

Рис. 7.3. Использование кэш-памяти

Процессор ничего не знает о существовании кэша. Он просто выдает запросы чтения и записи, используя адреса, которые указывают на память. В ответ схема управления кэшем выясняет, имеется ли в таковом запрошенное слово.

Если да, то в операции чтения или записи задействуется слово из кэша. При этом говорят, что имеет место попадание в кэш.

В случае операции считывания обращение к ос­новной памяти вообще не происходит. Если же выполняется операция записи, система может действовать одним из двух способов.

При использовании первого из них, называемого протоколом сквозной записи, предполагается, что кэш и ос­новная память обновляются одновременно.

Второй способ подразумевает, что данные обновляются только в кэше, после чего помечаются с помощью соответст­вующего битового флага. Упомянутый бит называют флагом изменения или мо­дификации. Соответствующее слово в основной памяти обновляется позже, при удалении из кэша того блока, который содержит помеченное слово. Описанная технология называется протоколом обратной записи или обратного копирования.

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

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

Если в кэше не оказывается слова, адресуемого операцией записи, мы гово­рим, что возникла ситуация, называемая промахом записи. В таком случае, при использовании протокола сквозной записи, информация записывается прямо в основную память. Но если применяется протокол обратной записи, в кэш сначала копируется блок, содержащий заданное слово, а затем это слово перезаписывает­ся в кэше и помечается как измененное.

Соседние файлы в папке Архитектура компьютеров