Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Организация многоуровневой памяти компьютера
Типовая современная иерархия памяти имеет следующую структуру: 1) Регистры 64-256 слов с временем доступа – 1 такт процессора; 2) КЭШ 1 уровня – 8к слов с временем доступа 1-2 такта; 3) КЭШ 2 уровня – 256к слов с временем доступа 3-5 тактов; 4) Основная память – до 4гигослов с временем доступа 15- 155 тактов. Эффект от данной системы тем больше, чем больше время обработки данных по сравнению с временем пересылки между буферной и основной памятью. Это достигается при локальности обрабатываемых данных, когда процессор многократно использует одни и те же данные для выработки некоторого результата (решение систем уравнений в научных и инженерных задачах, когда короткие участки программного кода с большим количеством вложенных циклов обрабатываются поочередно, переходя от точки к точке, используя одни и те же данные и внутренние результаты). Контроллер КЭША должен обеспечивать когерентность ( coherency ) – согласованность данных КЭШ – памяти обоих уровней с данными в основной памяти. При этом обращение к этим данным может производиться и со стороны процессора, и со стороны активных адаптеров. Контроллер КЭША оперирует строками фиксированной длины. Строка может хранить копию блока основной памяти, размер которого, естественно, совпадает с длиной строки. С каждой строкой КЭША связана информация об адресе скопированного в нее блока основной памяти и признаки ее состояния. Строка может быть действительная (valid) или не действительной (пустой). КЭШ имеет совокупность строк, каждая из которых состоит из фиксированного количества адресуемых единиц памяти (байтов, слов) с последовательными адресами. Типичный размер строки: 16, 32, 64, 128, 256 байтов. Наиболее часто используется 3 способа организации КЭШ – памяти. Они отличаются объемом требуемой аппаратуры: 1) КЭШ–память с прямым отображением (direct – mapped cache); 2) Частично-ассоциативная (set – associative cache); 3) Ассоциативная (full associative cache). Как известно, кэш хранит копии данных из различных адресных областей основной памяти. Поскольку в кэше невозможно одновременно хранить копии данных из всех адресных областей, необходим такой метод определения адресов, данные которых скопированы в кэш, чтобы необходимые данные считывались непосредственно из кэша, а не из основной оперативной памяти. Для этого применяется ОЗУ тегов — дополнительная область памяти кэша, в которой содержится индекс адресов, скопированных в кэш. Каждая строка памяти кэша имеет соответствующий адресный тег, который хранит адрес данных основной памяти, скопированных в текущий момент времени в отдельную строку кэша. Для получения данных с конкретного адреса основной памяти кэш-контроллер просматривает содержимое ОЗУ тегов, чтобы определить наличие адреса, содержащегося в кэше (совпадение), или его отсутствие (промах). Обнаруженные данные могут быть эффективно считаны из кэша; в противном случае процессор считывает данные из гораздо более медленной оперативной памяти.
148. Принципы организации КЭШ – памяти с прямым отображением. При использовании способа организации памяти с прямым отображением адрес представляется как набор трех компонент, составляющих группы старших, средних и младших разрядов адреса. Соответственно – тега, номера строки и смещения. Например, при 26 – разрядном адресе старшие 8 разрядов могут представлять тег, следующие 13 – номер строки и последние 5 разрядов - смещение в строке. В этом случае строка состоит из 32 адресуемых единиц памяти. Всего строк в КЭШЕ – 8к. КЭШ – память с прямым отображением представляет собой набор строк, каждая из которых содержит компоненту тег, номер строки и смещение. Наличие в КЭШЕ элемента данных по запрашиваемому адресу определяется значением тэга. Если тег строки КЭШ–памяти равен компоненте тега адреса, то запрашиваемый элемент данных содержится в КЭШ–памяти. Иначе, - необходима подкачка в КЭШ–память строки с указанным в адресе тегом. Так как для определения наличия нужной строки данных в КЭШ–памяти требуется толь одно сравнение тегов заданной строки и адреса, а замещение строк выполняется по фиксированному местоположению, - то объем оборудования сравнительно невелик. В КЭШ–памяти прямого отображения адрес памяти, по которому происходит обращение, однозначно определяет строку, в которой может находиться отображение требуемого блока (№ тега – это № страницы). Рассмотрим пример несекторированного КЭША объемом 256 Кбайт с размером строки 32 байта и объемом основной кэшируемой памяти 64 Мбайт – типичный КЭШ системной платы для Pentium. Структура памяти выглядит следующим образом: Кэшируемая основная память разбивается условно на страницы (в др. случае 256), размер которых совпадает с размером КЭШ – памяти. КЭШ–память (и опять-таки условно страницы основной памяти) делится на строки (256К/32 = 8к строк). Архитектура прямого отображения подразумевает, что каждая строка КЭША может отображать из любой страницы кэшируемой памяти только соответствующую ей строку (на рис. на одном горизонтальном уровне) Поскольку объем основной памяти много больше объема КЭША, на каждую строку КЭША может претендовать множество блоков памяти с одинаковой младшей частью адреса (смещением внутри страницы). Одна строка в определенный момент времени может содержать копию только одного из этих блоков. Номер строки в КЭШ – памяти называется индексом. Информацию о том, какой именно блок занимает данную строку, (старшая часть адреса или № страницы) называется Тегом и хранится в связанной с данной строкой ячейке специальной памяти тегов. Память тегов должна иметь количество ячеек, равное количеству строк КЭША, а ее разрядность должна умещать старшие биты адреса кэшируемой памяти, не попавшие на шину адреса КЭШ – памяти. Кроме адресной части тега с каждой строкой КЭША связаны биты признаков действительности и модифицированности данных. В начале каждого обращения к кэшируемой памяти контроллер первым делом считывает ячейку каталога с заданным индексом, сравнивает биты адреса тега со старшими битами адреса памяти и анализирует признак действительности. Если выясняется, что требуемый блок отсутствует в КЭШЕ, то идет обращение к основной памяти (случай КЭШ – промаха). При попадании запрос обслуживается КЭШ – памятью. В случае промаха после считывания основной памяти новые данные помещаются и в строку КЭША (если она чистая), а в ее тэг помещаются старшие биты адреса и устанавливается признак действительности данных. Независимо от объема запрашиваемых данных в КЭШ из основной памяти, строка переписывается вся целиком (поскольку признак действительности относится ко всем ее байтам). Если контроллер КЭША реализует упреждающее считывание, то в последующие свободные циклы шины обновится и следующая за ней строка, (если она была чистой). Это чтение «про запас». Этот КЭШ имеет самую простую аппаратную реализацию и применяется во вторичном КЭШЕ большинства системных плат. Однако если при выполнении программы процессору поочередно будут требоваться блоки памяти, смещенные относительно друг друга на величину, кратную размеру страницы (блоки, расположенные на одной горизонтали в разных страницах) то КЭШ будет работать интенсивно, но вхолостую. Будет сплошная череда КЭШ – промахов.
|
Последнее изменение этой страницы: 2019-04-10; Просмотров: 354; Нарушение авторского права страницы