В.А. Фисун - Прикладное программирование в задачах математической физики. Архитектурные принципы построения ЭВМ (pdf) (1127762), страница 9
Текст из файла (страница 9)
Иерархическая структура оперативной памятиСтруктуру памяти ЭВМ принято представлять в виде пирамиды, на гранях которой записана вся номенклатура памяти сообразно ее быстродействию и емкости. Ближе к вершине расположены наиболее быстрые компоненты, в основании пирамиды самые медленные, но зато самые емкие. Вотэтот перечень:1. Регистровая память.2. Процессорный кэш (кэш первого уровня).3. Кэши 2, 3 уровней.4. ОЗУ.5. Массовая память.Память 1-4 уровней служит для кратковременного хранения информации, она есть память с произвольным доступом (Random Access Memory RAM), которая допускает обращение к любому ее элементу в произвольномпорядке.
Ее реализация основана на электронике, то есть на управлениипроцессами записи и хранения информации электронными схемами. Длямассовой памяти используются внешние запоминающие устройства.Для ускорения доступа к оперативной памяти используется буферизация данных и объектного кода в специальной сверхоперативной памяти,скорость которой значительно выше основной оперативной памяти. Исходной посылкой для буферизации служит гипотеза о наличии в вычислительном процессе объективных свойств: пространственной и временнойлокальности (точек сгущения). Процессы стремятся исполнять команды небольшими порциями, которые именуются программными циклами илиподпрограммами, используемые ими указатели группируются в информационном пространстве процесса. В этом состоит суть так называемогопринципа "локальности" Деннинга [Denning]. Модель локальности состоитв том, что, когда процесс выполняется, он двигается от одной локальности кдругой.
Локальность в терминах виртуального пространства - набор страниц, которые активно используются вместе. Программа обычно состоит изнескольких различных локальностей, которые могут перекрываться.Например, когда вызвана процедура, она определяет новую локальность, состоящую из инструкций процедуры, ее локальных переменных имножества глобальных переменных. После ее завершения процесс оставляет эту локальность, но может вернуться к ней вновь. Таким образом, локальность определяется кодом и данными программы. Итак, модель локальности - принцип, положенный в основу работы буферов. Если бы доступ к любым типам данных был случайным, то буферизация была бы бесполезной.
Эффект от буферизации можно определить по среднему временивыборки: t = t2*p+ t1*(1-p), где t1 - среднее время доступа к данным основной памяти, t2 - среднее время доступа к данным из буфера (t2<t1), p - вероятность наличия данного в буфере. Очевидно, что среднее время зависитот вероятности р и изменяется от среднего времени доступа к основнойПособие 17.09.0933памяти (при p=0) до среднего времени доступа непосредственно в буфер(при p=1).
В качестве буфера используются регистровая память и кэшпамять. Размер регистровой памяти может достигать нескольких Кбайт,кэш – более медленная память, но ее размер может измеряться Мегабайтами. Если регистровой памятью управляет программист в явном виде, токэш-память "прозрачна" (невидима) для программиста, кэширование производится автоматически.Прозрачностью кэш-памяти и обязана интерпретация слова кэш(cache), как тайник, тайный склад.
По определению, эффект кэшированияоснован на предположении о многократном использовании данных (Datareuse) из кэш-памяти. Принято различать две формы многократного использования данных кэша: временное использование (temporal reuse) и пространственное использование (spatial reuse). Временное использование означает, что некоторое данное, загруженное в кэш, может использоваться, покрайней мере, более двух раз. Пространственное использование кэша предполагает возможность использовать некоторый пространственный наборданных, загруженных в кэш.3.5. Кэш-память.Механизм кэширования обеспечивает ускорение работы оперативногозапоминающего устройства путем иерархического сочетания различных побыстродействию видов памяти и использования алгоритма кэширования дляразмещения данных.
Кэш-память (cache, cache memory) – это память, какправило, на порядок более быстрая, чем основная, размещается в качествебуферной, между процессором и основной памятью - ОЗУ, и служит длявременного хранения (в рамках своего объема) всех данных, потребляемыхили генерируемых процессором. В многоуровневых кэшах элементами связки "процессор - основная память" могут выступать сами кэши. Считается,что технология кэш-памяти предложена Морисом Уилксом на основе идеиГордона Скеротта в 1965 г.Алгоритм кэширования состоит в следующем:1.
По каждому запросу процессора на чтение из ОЗУ команды или данного(числа, текстовой информации) происходит поиск требуемого данного в кэшпамяти (или места в кэше для записи генерируемого данного).2. Если данное (место для записи) есть в кэше – кэш-попадание (cache hit) то оно передается в процессор из кэша (записывается в кэш).3. Если нужного данного нет в кэше – кэш-промах (cache miss) – то данноевыбирается из основной памяти и пересылается в кэш память, а затем передается процессору.
При переполнении кэша (нет места для записи) из негоудаляется (модифицированные данные сохраняются в основной памяти)часть данных, обычно наименее востребованных.Любой микропроцессор имеет "процессорный" кэш или кэш первогоуровня (L1 Cache). Это буферная память объемом от 4 Кбайт до 16 Мбайт,в которой размещаются все данные и команды программы, адресуемыеПособие 17.09.0934процессором, и из которой данные (команды) поставляются процессору.Эта память значительно быстрее основной памяти - ОЗУ, но меньшего объема, поэтому механизм кэширования обеспечивает обновление кэша, обычно сохраняя в нем только наиболее часто употребляемые данные. Обменмежду основной и кэш памятями производится квантами, объемами 4 - 120Кбайт.
Копируются целиком "строки кэша" (cache line), содержащие данные(команды), адресуемое процессором.Все адресуемые данные процессора, включая агрегатированные (двойные слова, вещественные числа одинарной и двойной точности), размещаются в строке кэша целиком (для режима с выравниванием данных в строках); в свою очередь, строка кэша может содержать несколько данных.Сегменты программного кода, на которые возможна передача управления,размещаются в начале строки кэша.
Такое размещение информации построкам кэша производится системами программирования автоматически,этот процесс называется “выравниванием данных”, он может быть заблокирован. Обычно программный код помещается в особый кэш, I-кэш – кэшпамять, которая отделена от кэша данных - D-кэша. Выборка данных изкэша (hit time) производится обычно за один такт синхронизации (оценки: 1- 4 такта), потери при кэш-промахе оцениваются в 8 - 32 такта, доля промахов (miss rate) в 1% -20%.Кэш-память можно рассматривать как таблицу, содержащую копии последовательности байтов из оперативной памяти, причем с каждой строкойкэша при её заполнении ассоциируется адрес строки оперативной памяти.Оперативная память при этом также будет рассматриваться как двумернаятаблица, состоящая из строк, каждая строка имеет свой номер – тег. Тег дляпроцессоров архитектуры IА32 состоит из 25 битов, а размер строки кэшаравен 32 байтам.
Соответственно, адрес ОЗУ состоит из поля тега, содержимое которого задает номер строки кэша в памяти и поля сдвига, котороесодержит указатель на заданный байт в этой строке. В заполненном кэше скаждой его строкой должен быть связан тег - номер соответствующейстроки кэша в ОЗУ.Типы связи определяют архитектуру кэша, которая разделяется на схемы: полностью ассоциативная, частично ассоциативная и кэш-память спрямым отображением.Полностью ассоциативная кэш память (fully associative) реализуетсямеханизмами ассоциативной памяти - АОУ.
Кэш можно рассматривать кактаблицу, состоящую из элементов вида: <тег><строка кэша>, где тег естьполе ключа, а строка кэши – данные, которые механизм ассоциативной памяти выдает при совпадении значения поля тега с запрашиваемым ключом– адресом строки кэша оперативной памяти. Каждая новая строка оперативной памяти будет размещаться в кэше до тех пор, пока не произойдетполного заполнения кэш-памяти.
В этом случае, для размещения очереднойстроки будет вытеснена одна из занятых строк, алгоритмы вытеснения аналогичны алгоритмам подкачки страниц. Данный механизм по сравнению сПособие 17.09.0935другими наиболее полно использует кэш-память, но имеет громадный недостаток – объем ассоциативной памяти не может быть большим. Остальные схемы кэша моделируют ассоциативную память на адресной памяти,то есть реализуют хэш-функцию в той или иной форме.Архитектура кэш-памяти с прямым отображением (direct-mapped) характеризуется наличием явной зависимости между адресами буферной иоперативной памяти, причем каждому адресу кэша соответствуют адресаоперативной памяти, кратные размеру кэш-памяти.
Модель данного механизма такова. Пусть размер кэш-памяти равен размеру оперативной памяти. Тогда хэш-функция тривиальная: ключ - адрес строки кэша - совпадает садресом строки ОЗУ. Затем добавим такой же блок оперативной памяти исохраним правила размещения строк памяти в кэше (прямое отображение):первая строка кэша заполняется из первых строк блоков ОЗУ, вторая -извторых и т.д. Соответственно к адресу строки ОЗУ добавляется старшийразряд, уточняющий номер блока, который теперь не помещается в ключ.Для размещения старшего бита ОЗУ в каждой строке кэш-памяти отводитсядополнительный, служебный разряд - тег, который заполняется при переписи строки кэша из ОЗУ. Тривиальная схема теперь усложняется, послесчитывания по ключу – по младшим разрядам адреса (без одного, старшего)ОЗУ строки кэша необходимо проверить значение разряда тега в выбраннойстроке.