Сущность и классификация электронно-вычислительных машин. Характеристика программной модели процессора. Основные задачи виртуальной памяти. Особенность назначения и общей схемы подключения кэш-памяти. Организация асинхронного системного интерфейса.
При низкой оригинальности работы "Программные модели процессоров и управление периферийными устройствами", Вы можете повысить уникальность этой работы до 80-100%
Министерство образования и науки Российской Федерации КАЗАНСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТСтруктурно ЭВМ представляет собой взаимодействующую совокупность двух компонентов: системы аппаратных средств (hardware) и системы программного обеспечения (software). Развитие программных средств требует непрерывного увеличения объема памяти ЭВМ и существенного увеличения быстродействия, как памяти, так и процессора, стимулируя непрерывное совершенствование аппаратных средств. Программу, написанную на машинном языке, называют исполняемой программой или машинным кодом. Программы в машинных кодах получают путем трансляции (перекодировки) соответствующих программ, написанных на языках высокого уровня или на ассемблере. В этом случае перекодировка команд языка высокого уровня в машинные команды производится с использованием аппаратуры процессора в процессе выполнения программы.При этом: · адресное пространство программиста и памяти могут не совпадать, · размещение программы и данных в физической памяти может не совпадать с их размещением по адресам в адресном пространстве прогрпммиста, · прикладные программы вместо прямой адресации физической памяти используют обращение к некоторой модели (отображению) памяти, · обращение к физической памяти производится при помощи диспетчера памяти, согласующего модель математической памяти с динамикой распределения программ и данных в физической памяти. В сегментированной памяти адреса операндов и команд задаются вектором: указанием используемого сегмента (например, через базовый адрес сегмента в линейной памяти) и адреса данных в сегменте. Появление дополнительного множества регистров в процессоре и необходимость их адресации существенно повлияли на дальнейшее развитие структуры команд. С появлением РОНОВ появилось два типа команд: · команды структуры регистр/регистр (r/r): Коп R1, R2, · команды структуры регистр/память (r/m): Коп R1, М2, где: R1, R2 - номера (адреса) РОНОВ. В двухадресных командах первый адрес после кода операции является адресом источника, второй адрес является адресом приемника, т.е. адресом, по которому выбирается второй операнд, и в который записывается результат операции.
4. Бит доступности в таблицах математических страниц.
5. Определение номера физической страницы.
6. Определение страничного промаха.
7. Процедура свопинга.
8. Положительные и отрицательные стороны организации виртуальной памяти на основе таблицы математических страниц.
17. Упрощенная схема виртуальной памяти на основе таблицы физических страниц
Таблица физических страниц строится для каждой программы. В ней для каждой математической таблицы указаны номера физических страниц оперативной или внешней памяти на магнитных дисках.
Таблицы физических страниц составляются для каждой задачи. В каждой строке таблицы физических страниц содержится номер страницы физической памяти (оперативной памяти или на магнитных дисках). Страницы, расположенные в оперативной памяти, отмечаются признаком доступности d = 0, а расположенные на магнитных дисках - d = 1.
Для привязки таблиц к задачам используется регистр базового адреса таблицы физических страниц (БА ТФС), индивидуальный для каждой задачи.
Процедура трансляции страниц имеет следующие этапы: 1. Вычисление адреса обращения к строке таблицы сложением номера страницы математического адреса с базовым адресом таблицы физических таблиц (БА ТФС).
2. Чтение по вычисленному адресу из таблицы физических страниц значения адреса физической памяти и бита доступности (d=0).
3. В случае доступности данных (d=0) - обращение по физическому адресу с учетом номера байта внутри страницы данных для записи или чтения в зависимости от кода операции.
4. В случае страничного промаха (d=1) - свопинг данных, коррекция таблицы и повтор обращения к данным.
Вопросы для самопроверки: 1. Назначение признака доступности.
2. Назначение регистра БА ТФС.
3. Этапы процедуры трансляции страниц.
4. Основные недостатки схемы.
18. Организация кэш-памяти
Назначение и общая схема подключения кэш-памяти
Кэш-память - это промежуточная память между оперативной памятью и процессором.
Основной целью использования кэш-памяти в ЭВМ является согласование полосы пропускания оперативной памяти и процессора. Полоса пропускания определяется количеством передаваемых бит за единицу времени (количество передаваемых бит на частоту передачи).
В современных ЭВМ быстродействие процессоров (количество выполняемых команд за единицу времени) в десятки раз превышает потока данных обмена с оперативной памятью.
Оперативная память большой емкости принципиально не может работать на тактовой частоте процессора. Основная проблема - большие задержки при выборке информации. Тому имеются две основные причины: большие задержки в адресных цепях (пропорциональные емкости памяти) и ограничения по использованию больших значений энергий при чтении и записи информации в массовой памяти в связи с проблемами охлаждения. Все это приводит к увеличению времени ожидания данных (уменьшения частоты обращений) с ростом емкости памяти.
В современных ЭВМ в качестве элементной базы в оперативной памяти используются интегральные схемы с большой степенью интеграции, часто на основе МОП-транзистров. При этом в качестве элементарной ячейки хранения используется однотранзисторный вариант элемента динамической памяти с хранением информации в виде заряда на конденсаторе (С) в цепи стока транзистора.
Транзистор в динамической ячейке работает как ключ, управляющий передачей заряда. При записи информации открывают транзисторный ключ (Т) управляющим напряжением на числовой шине и заряжают конденсатор (С) до напряжения нуля или единицы с использованием разрядной шины 1.
При считывании информации специальная схема предзаряда сообщает потенциал (опорное напряжение) разрядным шинам. При подаче напряжения на числовую шину открывается транзистор, и на разрядную шину 1 передается заряд конденсатора. При единичном значении считываемой информации потенциал на разрядной шине 1 становится больше, чем потенциал на разрядной шине 2, при чтении нуля - меньше. По разности потенциалов определяется значение считываемого разряда. При чтении заряд на конденсаторе меняется, т.е. чтение производится с разрушением информации. Поэтому производится процедура восстановления прочитанной информации с использованием схемы регенерации. Схема однобитового среза матрицы динамической памяти представлена на рис.9.2.
В этой памяти время задержек обращения по чтению включает время задержки при чтении и регенерации. Периодическая регенерация в динамических ЗУ необходима и при отсутствии обращений к памяти. Причиной является саморазряд емкостей С ячеек памяти. Для сохранения информации в ячейках памяти требуется циклическая регенерация ячеек памяти. Буфер данных используется для временного хранения прочитанных или записываемых данных. В качестве буфера данных используется регистр на статических триггерах.
Потери на регенерацию также уменьшают быстродействие динамической памяти. Но наибольшие потери времени при обращениях к памяти (динамической и статической) составляют задержки в адресных цепях выборки данных при обращении как по чтению, так и по записи. Увеличение емкости памяти всегда связано с увеличением задержек в адресных цепях, т.е. с уменьшением быстродействия.
Память, представленная на рис.9.2 является однобитовой. Память для полноразрядных данных реализуется параллельной работой системы из множества однобитовых.
Основной причиной увеличения задержек в адресных цепях при увеличении емкости оперативной памяти являются задержки в дешифраторе.
Рассмотрим схему оперативной памяти, например, емкостью в 1Мбайт. Для задания адреса байта в такой, относительно небольшой, памяти требуется 20 разрядов. Для уменьшения оборудования адресных схем запоминающие элементы памяти располагают в виде восьми равносторонних матриц (1024 строки по 1024 бита). В соответствии с этим распределением адрес конкретной ячейки в разрядных матрицах определяется пересечением соответствующих строки и столбца.
Выбор строки и столбца производится двумя дешифраторами: строки и столбца (см. рис. 9.2).
Входами дешифраторов являются, соответственно, адресные шины строки и столбца. Каждый дешифратор имеет 10 входных адресных шин и 1024 выходные шины.
Полезный сигнал формируется только на одной "выбранной шине". На остальных шинах (не выбранных) входные токи выходных шин шунтируются диодами при несовпадении разрядов адресов (поданного и "прошитых" в дешифраторе). Таким образом, ток чтения "выбранных строк" уменьшается по отношению к входному на все строки в 102 раза, и этот ток должен создать "канал" чтения (заряд на затворе МПД транзисторов) для транзисторов всей строки матрицы (1024 транзистора). Затвор МДП-транзистора является емкостной нагрузкой, и время заряда затвора обратно пропорционально току заряда.
Эта задержка в адресных цепях является основной задержкой при использовании любой памяти.
Информационный поток данных определяется количеством подаваемых или обработанных данных за единицу времени.
Для простоты рассмотрим работу процессора с одноадресной системой команд. В этом варианте выполнение одной команды связано с одним обращением к оперативной памяти по чтению или записи операнда.
Пусть процессор за такт (t) выполняет одну команду с формированием одного результата в формате двойного слова (4 байта), а обращение к оперативной памяти по чтению или записи составляет 4 такта процессора.
Очевидно, что в этом случае полосы пропускания процессора и оперативной памяти не совпадают, что приводит к простою процессора по 3 такта из четырех. Для согласования информационных потоков увеличивают ширину обращения к памяти. Например, можно при обращении к памяти производить чтение не одного двойного слова (4 байта), а строку из четырех двойных слов (16 байт). Простейший вариант этого решения представлен на рис. 9.3.
Эффективность этого решения основывается на статистической локальности обращений к памяти по месту и времени. Это означает, что существует большая вероятность того, что обращения к памяти в локальный промежуток времени с большой вероятностью будут производиться в локальный участок адресов памяти.
Здесь важно, что память разбивается на несколько блоков с обязательным расслоением адресов. Расслоение адресов (интерливинг) означает, что последовательность адресов двойных слов располагается в независимых блоках памяти.
Но это еще не кэш-память, а просто выборка данных с упреждением.
Передачу выбранной строки байтов на процессор можно выполнять параллельно или последовательно. Так как процессору при каждом обращении требуются данные в соответствии с шириной обработки, например, по 4 байта (двойное слово), то передачу данных можно производить последовательно по 4 байта без расширения разрядности шины данных, например, с использованием пакетной передачи.
Это параллельная работа нескольких блоков оперативной памяти с поблочным чередованием адресов. За одно обращение к оперативной памяти выбирается в N раз больше байтов (строка байтов со смежными адресами), что уравнивает информационные потоки быстрого процессора и "медленной" оперативной памяти.
Но процессор работает по командам, каждая из которых оперирует с данными ограниченной разрядности и необязательно расположенными по смежным адресам в пределах ширины обращения. Любое обращение к памяти за пределами выбранной строки приводит к чтению новой строки и замене содержимого регистра данных. Этот случай характерен для обработки двух массивов, например, при сложении их элементов. В этих случаях, при каждом обращении к памяти по чтению, содержимое регистра данных будет обновляться, и эффект групповой выборки данных сведется к нулю.
Проблема решается введением множества регистров, по одному для множества чтений из памяти, т.е. использованием дополнительной памяти, но уже на основе статических регистров, расположенных как можно ближе к процессору или в самом процессоре.
Важность расположения кэш-памяти в процессоре определяется тем, что в этом случае она может использовать тактовую частоту процессора, а не материнской платы.
Схема использования многоблочной оперативной памяти с расслоением адресов и использования дополнительной (промежуточной) кэш-памяти представлена на рис. 9.4.
При использовании умеренного адресного пространства кэш-памяти и расположении этой памяти в кристалле процессора можно избежать временных потерь, т.е. согласовать информационные потоки данных оперативной памяти и процессора. Но, даже если кэш-память размещается в кристалле процессора, при обращении к ней может теряться один такт.
Взаимодействие устройств, представленных на рис. 9.4, следующее.
Для выборки команды или данных процессор посылает запрос к оперативной памяти: код операции (прочитать, записать), адрес данных в оперативной памяти и размер операнда (для данных).
Кэш-контроллер перехватывает (копирует) запрос к оперативной памяти и проверяет наличие запрашиваемых данных или команд в кэш-памяти, используя адреса данных (или команд) в оперативной памяти. При наличии в кэш-памяти данных по запрашиваемым адресам (кэш-попадание), обращение к оперативной памяти блокируется, и данные пересылаются в процессор из ячеек кэш-памяти, в противном случае (кэш промах) данные по запрашиваемому адресу пересылаются из оперативной памяти с сохранением копии всей строки в кэш-памяти.
Здесь возможны варианты. Рассмотренный алгоритм предусматривает одновременный запрос к двум устройствам: оперативной памяти и кэш-памяти, но и при кэш-попаданиях оперативная память оказывается занятой, и доступ к ней других процессоров или устройств ПДП блокирован. По этой причине в многопроцессорных системах часто используется другая схема: вначале проверяется наличие данных или команд в кэш-памяти, и только при кэш промахе запрос пересылается в оперативную память. В этой схеме при кэш-промахах время незначительно увеличивается, но при кэш-попаданиях память остается доступной для других процессоров или устройств ПДП.
Альтернативой многоблочной памяти с расслоением (рис.9.4) является одноблочная память с внутренним регистром на статических триггерах на строку (или несколько строк) кэш-памяти.
В этой схеме нет "расслоения" адресов по блокам. Вся память может быть выполнена в виде разрядных матриц. При выборке данных из памяти данные выбираются не по двойным словам, а строками кэш-памяти (например, по 4 двойных слова).
Такая выборка реализуется за счет того, что при адресации строки матриц каждого разряда производится фиксация ее значения на внутреннем регистре матрицы оперативной памяти. На этом регистре, выполненном на быстродействующих статических триггерах, может сохраняться вся строка бит или часть строки (одна или несколько строк кэш-памяти). Нужные биты (по младшим разрядам адреса) выбираются уже из быстродействующего регистра. При этом выбираются значения разрядов по соседним адресам, т.е. вся строчка кэш-памяти.
Дополнительной проблемой для кэш-памяти остается задержка первого чтения строки данных из оперативной памяти. Но и эта проблема в современных ЭВМ решается разделением команд на команды действия и команды обращения к памяти.
Команды действия - это команды типа регистр/регистр, без обращения к оперативной памяти.
Команды обращения к памяти - это команды только обращения к оперативной памяти по чтению или записи (загрузки данных в РОН или сохранения данных в ячейке памяти).
Проблема задержек при первом обращении к памяти может решаться вынесением команд загрузки данных вперед на несколько команд до их исполнения.
Вопросы для самопроверки: 1. Цель использования кэш-памяти.
2. Особенности схемы ячейки динамической памяти.
3. Природа основных задержек при обращении к оперативной памяти.
4. Механизм считывания информации из ячейки динамической памяти.
5. Простейший механизм согласования плотности информационных потоков памяти и процессора.
6. Взаимодействие устройств: процессор - оперативная память - кэш-память.
7. Взаимодействие устройств в системе: процессор, кэш-память, оперативная память.
8. Поисковый адрес данных, используемый при обращении к кэш-памяти.
Системы адресации кэш-памяти
При обращении к оперативной памяти процессор указывает в качестве критерия поиска адрес данных в оперативной памяти. Контроллеру кэш-памяти при перехвате обращения к оперативной памяти этот адрес становится доступным. При первом обращении к конкретному слову данных, контроллер кэш-памяти его не обнаружит. Это кэш-промах. В этом случае запрос процессора обслужит оперативная память, но выбрано будет не одно заданное двойное слово, а вся строчка, например, четыре двойных слова, причем, в целочисленных границах строки. Вся строка будет записана в кэш-памяти, а затребованное двойное слово будет отправлено в процессор.
Здесь встает проблема адресации ячеек строк данных в кэш-памяти. Адресация строк данных в кэш-памяти должна допускать нахождение данных по адресам двойных слов (тегов) в оперативной памяти.
В настоящее время широко известны три схемы адресации, удовлетворяющие этому требованию. Это системы адресации на основе: · аппаратной ассоциативной выборки, · адресации с прямым отображением адресов, · множественно-ассоциативной выборки.
Рассмотрим эти схемы применительно к процессору с параметрами МП intel 486: · ширина обработки данных - 4 байта, · размер адресного пространства - 4 Гбайта, · размер строки кэш-памяти - 128 байт, · размер адресного пространства кэш-памяти - 8 Кбайт.
Для упрощения схемы, добавим требование расположения слов в ячейках памяти только в целочисленных границах и передачи данных из кэш-памяти в процессор только двойными словами. В этом случае для задания адреса двойного слова используются 30 бит.
Последнее требование упрощает схему, но не соответствует большинству реальных схем. В МП Intel 486 это требование не соблюдается и адреса данных по интерфейсу передаются с использованием 34х бит. 30 бит определяют адрес двойного слова, 4 бита (сигналы #BE0, #BE1, #BE2 и #BE3) используются для индивидуального указания позиций передаваемых байтов (см. 7.5.1. Особенности локального интерфейса i486).
Организация кэш-памяти на основе ассоциативной выборки
В ядро кэш-памяти входят: · ассоциативная память тегов со схемами параллельного сравнения входного слова (адреса данных в оперативной памяти) с тегами, · схемы обнаружения кэш-промаха, · регистры хранения строк данных, · регистр команд обращения процессора к оперативной памяти, · дешифратор адреса двойного слова в строке кэш-памяти, · входные/выходные усилители и вентильные схемы.
При включении процессора строки адресных тегов и данных не заполнены. При первом же обращении процессора к памяти, например по чтению, контроллер кэш-памяти проверяет присутствие запрашиваемых данных в кэш-памяти. Для этого адрес строки оперативной памяти (старшие 24 бита адреса данных в оперативной памяти) сравнивается со всеми адресами строк, записанными в памяти в качестве тегов поиска. Если совпадений нет, то: · фиксируется кэш-промах, · производится обращение к оперативной памяти, · читается и записывается в схемы хранения строк данных вся строчка (8 байт), по любому свободному адресу, а адрес строки - в соответствующую ячейку поисковой части ассоциативной памяти, · запрашиваемые данные (слово или двойное слово) пересылаются в процессор, · дополнительная информация (например, биты присутствия, модификации операцией записи и т.д.).
Повторное обращение к данным из этой же строчки производится уже без обращения к оперативной памяти.
Первоначальное заполнение памяти при промахах может производиться в любом порядке. При полном заполнении кэш-памяти, новые строчки данных, как и при использовании виртуальной памяти, записываются с использованием алгоритмов листания. Для реализации алгоритмов листания каждая строка данных имеет поле дополнительной информации, в котором отмечаются обращения и типы обращения (по чтению или по записи).
Основным недостатком ассоциативной памяти является сложность ее реализации на микросхемах изза сложной топологии поисковой части, вернее, наличия многочисленных вертикальных (адресных) и горизонтальных (разрядных) линий. В интегральном исполнении памяти каждой линии должен соответствовать выводной штырек (ножка микросхемы). Для соединения штырька с линиями микросхемы требуется отдельная "пайка", которая занимает много места на кристалле. При использовании микросхем малой степени интеграции, на саму схему ассоциативной памяти не хватает площади кристалла. Ассоциативная память широко использовалась до появления интегральной технологии.
В современных ЭВМ кэш-память размещают на одной микросхеме с процессором, в этом случае количество выводов микросхемы определяется не кэш-памятью, а интерфейсом процессора. Но и в этом случае использование чисто ассоциативной памяти ограничено.
Организация кэш-памяти с прямым отображением адресов
Основная идея кэш-памяти с прямым отображением - это нахождение функциональной зависимости адресов кэш-памяти от адресов оперативной памяти: Адрес кэш-памяти = f (адрес оперативной памяти).
Но такой детерминированной функции для не равновеликих множеств не существует. На практике используют вероятностные функции - хеш-функции. Это функции (вернее класс функции) равномерного разбрасывания. Их часто используют для формирования псевдослучайных чисел с равномерным распределением.
Используя свойство локальности обращений программ к памяти по времени, в качестве хеш-функции используют функцию прямого отображения.
Функция прямого отображения заключается в выделении младших разрядов аргумента. Количество выделяемых разрядов определяется емкостью кэш-памяти, вернее, количеством строк в кэш-памяти. Для рассматриваемого случая: · емкость кэш-памяти - 8 Кбайт (215 байт), · разрядность строки кэш-памяти - 128 Кбайт(27 байт), · количество строк кэш-памяти - 256.
Для сохранения каждой строки оперативной памяти определена единственная строка кэш-памяти. Это строка, адрес которой совпадает с адресом, составленным из старших цифр адреса этой строки в оперативной памяти.
Но по этим же адресам могут быть записаны данные из множества строк оперативной памяти, адреса которых различаются младшими разрядами. При максимально возможной емкости оперативной памяти (равной математической) количество совпадающих строк может быть равным 217.
Для идентификации строк в старшие разряды строк кэш-памяти записываются "идентифицирующие" теги, равные (по численному значению) старшим разрядам адреса оперативной памяти.
При обращении к кэш-памяти старшие разряды адреса строк оперативной памяти сравниваются с тегами на внешних схемах сравнения. При несовпадении этих строк фиксируется кэш-промах, при совпадении - фиксируется попадание. При кэш-попадании данные (двойное слово) выбираются из кэш-памяти по адресу двойных слов в строке с использованием дешифратора.
Таким образом, здесь используется тройная адресация: адресация строки кэш-памяти по младшим разрядам адреса оперативной памяти, ассоциативный поиск по сравнению старших разрядов адреса оперативной памяти с тегами и для выбора двойного слова из строки кэш-памяти.
Рассмотренная схема относительно проста, но имеет свои недостатки.
Основным недостатком схемы является повышенная вероятность кэш-промахов. Этот недостаток проявляется при обработке массивов, например, при сложении двух массивов. Перебор строк производится путем изменения младших разрядов при сохранении старших. При несовпадении старших адресов и совпадении младших, будут выявляться "сплошные" промахи с перезаписью информации в кэш-память. В этих случаях использование кэш-памяти будет только тормозить работу процессора.
При использовании кэш-памяти с прямым отображением нет проблемы выбора устаревшей строки, так как каждому адресу соответствует одна строка. Она и удаляется при кэш-промахе. Но поле для дополнительной информации предусмотрено, например, для отметок присутствия данных и модификации информации операцией записи.
Организация кэш-памяти на основе множественно-ассоциативной памяти
Это модификация поиска с прямым отображением адресов. В этой схеме отображение адресов оперативной памяти в адреса кэш-памяти производится не для одной строки (кэш-памяти), а для множества строк, имеющих совпадения в младших разрядах их адресов в оперативной памяти.
Правомерна и другая интерпретация этой схемы как множеств отдельных блоков памяти с ассоциативным поиском информации, но с адресной выборкой "целевого" блока.
В этой схеме для строк оперативной памяти с совпадающими значениями младших разрядов оперативной памяти определена для сохранения не единственная строка кэш-памяти, а множество строк, кратное степени двух: два, четыре или восемь, наиболее часто - четыре. На рис. 9.7 представлена схема множественно-ассоциативной памяти с двумя множествами строк (М0 и М1 в одной выбранной строке кэш-памяти). Каждая из этих строк идентифицируется адресами, составленными из старших цифр адреса строки в оперативной памяти.
При обращении к кэш-памяти старшие разряды адреса строки оперативной памяти сравниваются с тегами на внешних схемах сравнения. При несовпадении этих строк фиксируется кэш-промах, при совпадении - фиксируется попадание для одного из множеств (М0 или М1 на рис. 9.7). При кэш-попадании данные (двойное слово) выбираются из кэш-памяти с учетом выбранного множества (М0 или М1) по адресу двойного слова в строке с использованием дешифратора двойных слов.
В множественно-ассоциативной кэш-памяти при кэш-промахе для обновления информации имеется альтернатива выбора множества с устаревшими данными. Для случая использования в строках кэш-памяти только двух множеств, определение устаревшего множества определяется элементарно. Устаревшее множество то, в которое не было обращения в последнем кэш-попадании.
Для 4-х и более множеств при решении этого вопроса используются более сложные алгоритмы выбора по "вероятности неиспользования" (LRU). Сложность этих алгоритмов значительно возрастает по мере роста числа множеств. Для 4 множеств (наиболее часто используемый вариант кэш-памяти) алгоритм (LRU) использует три бита дополнительной информации B0, B1 и B2, кроме битов присутствия и модификации информации операцией записи.
Алгоритм выбора устаревшей строки предусматривает при последних доступах: · к массиву М0 или М1 установление бита В0 = 1, · к массиву М0 установление бита В1, · к массиву М1 очищение бита В1.
· к массиву М2, установление бита В2, · к массиву М3 очищение бита В2.
Биты LRU обновляются после каждого доступа к кэш-памяти и очищаются при каждой перезаписи или очистке кэш-памяти.
При кэш-промахе кэш-контроллер определяет множество-кандидата на удаление по его адресу, составленному из значений В0, В1 и В3. Это адрес удаляемого множества в двоичной системе счисления: · старшая двоичная цифра адреса соответствует значению бита В0, · младшая двоичная цифра адреса соответствует значению функции (В0 & В2) V (¬В0 & В1).
Кэш-память на основе прямого отображения и множественно-ассоциативной памяти является наиболее распространенной. Но, по сравнению с реализацией на основе чисто ассоциативной памяти, она требует не два, а три такта работы: 1. определение строки кэш-памяти (по младшим разрядам адреса физической оперативной памяти), 2. определение строки или множества строк (по части старших разрядов адреса физической оперативной памяти), 3. чтение или обновление (запись) строки.
Этот недостаток можно компенсировать совместной оптимизацией алгоритмов работы механизмов кэш-памяти и виртуальной памяти на основе использования таблицы математических страниц (наиболее распространенный вариант реализации виртуальной памяти).
Программист пишет свои программы в диапазоне адресов своей математической памяти, операционная система с использованием механизма виртуальной памяти производит динамическую переадресацию команд и данных в пространство адресов физической памяти, выделенных данной программе.
В установившихся режимах работы процессора переадресация программ производится с использованием TLB (буфера быстрой переадресации на основе ассоциативной памяти) за один такт процессора.
Этот такт работы механизма виртуальной памяти можно совместить с первым тактом работы кэш-памяти. В этом случае, в первом такте работы кэш-памяти, при формировании адресов кэш-памяти с прямым отображением можно использовать не физические адреса команды или данных, которые еще не сформированы, а математические. Но в следующем такте сравнения тегов, для идентификации массивов строк данных необходимо использовать в качестве тегов старшие разряды уже физической памяти. Следующий (третий) такт кэш-памяти используется для обращения к массиву команд или данных при кэш-попаданиях.
Вопросы для самопроверки: 1. Проблема адресации данных в кэш-памяти.
2. Кэш-память на основе ассоциативного поиска.
3. Кэш память с прямым отображением.
4. Кэш-память на основе множественно-ассоциативной схемы поиска.
5. Алгоритм определения множества-кандидата на удаление.
6. Совместная оптимизация работы системы виртуальной и кэш-памяти.
19. Режимы работы кэш-памяти
Все преимущества в использовании кэш-памяти относятся, в основном, к операциям чтении информации. При выполнении операций записи процессор передает в контроллер памяти команду записи и записываемые данные. На этом действия процессора по записи заканчиваются. Процессор может терять время на ожидание окончания записи только при последующих обращениях к памяти. Команда записи может относиться к данным в формате меньшем номинальной ширины обращения к оперативной памяти, например в формате байта или слова, вместо двойного слова. В этих случае временные потери могут быть увеличены. Это операции чтения "с намерением записи", которые реализуются последовательностью операций: чтение, модификация, запись.
При записи в систему памяти возможны варианты записи без буферизации данных и с буферизацией данных.
В вариантах записи с буферизацией данных процессор передает данные в буфер записи и освобождается для выполнения следующих команд. При этом данные помещаются в очередь данных буфера по записи. Это не простая очередь, а очередь с элементами логики. Данные команд записи, помещенные в буфер, становятся видимы и читаемы командами чтения еще до записи их в память. Такой буфер был реализован еще в ЭВМ IBM 7030 (прототип архитектуры моделей семейства IBM 360).
При записи с использованием кэш-памяти возможны различные варианты выполнения операции записи в зависимости от ситуации (кэш-промах или кэш-попадание).
При кэш-попадании возможны следующие процедуры записи: · сквозная запись, · обратная запись.
Процедура сквозной записи. Запись данных производится в оперативную память и, одновременно, в строку кэш-памяти. При этом строки (в кэш-памяти и оперативной памяти) помечаются битом "модифицированные". Эти признаки учитываются при удалении страниц из строки кэш-памяти (в оперативную память) или страницы из оперативной памяти (в накопитель на магнитных дисках). Сквозная запись гарантирует нахождение в оперативной памяти "более свежей" копии данных, но без использования буферизации данных приводит к задержкам процессора.
Процедура обратной записи
При обратной записи запись данных производится только в строки кэш-памяти. Обновление данных в оперативной памяти по адресам записи откладывается до замещения модифицированной строки. Замещение строки производится, если страница признается "устаревшей" алгоритмом "листания".
Обратная запись уменьшает количество обращений к памяти по записи. Запись производится построчно, т.е. одновременно по всем блокам оперативной памяти с расслоением, и записываются только самые последние копии данных. Недостатком обратной записи является нарушение когерентности данных в оперативной памяти и в кэш-памяти. Это затрудняет работу в многопроцессорных системах с общей оперативной памятью, но с разделенными (индивидуальными) блоками кэш-памяти для каждого процессора.
При кэш-промахах возможны следующие процедуры записи: · сквозная, · сквозная с размещением.
Сквозная запись
При кэш-промахе, размещение новой информации связано с освобождением одной из строк (признанной устаревшей) кэш-памяти. Чтение записываемых данных в ближайший промежуток времени после их записи маловероятно. Сквозная запись производится, минуя записи в кэш-память. Записанная информация становится доступной при чтении, через кэш-промах при чтении и обновлении информации в кэш-памяти. Сквозная запись не затрагивает кэш-память и оптимизирует очередь обращений к ней.
Обычно в кэш-памяти со сквозной записью при промахе используется и сквозная запись при кэш-попадании.
Сквозная запись с размещением (в кэш-памяти)
Запись производится в кэш-память и в оперативную память. Этот вид записи может быть полезен в многопроцессорных многозадачных системах с общей оперативной памятью, но разделенными системами кэш-памяти.
Вопросы для самопроверки: 1. Кэш-память с буферизацией.
2. Кэш-память со сквозной записью при кэш- попадании.
3. Кэш-память с обратной записью при кэш- попадании.
4. Кэш-память со сквозной записью при кэш- промахе.
5. Кэш-память с обратной записью при кэш- промахе.
Иерархическая структура кэш-памяти и средства управления кэш-памятью
Иерархическая структура кэш-памяти
Возможности согласования полосы пропускания в рассмотренной одноуровневой схеме кэш-памяти ограничены. Увеличение размера строки кэш-памяти более 8-кратной размерности операнда не дает ожидаемого повышения информационного потока, так как значительно возрастает вероятность передачи управления на новые участки программ, с потерей неиспользованных данных кэш-строки. Проблема согласования плотности потоков информации при больших отношениях быстродействии процессора и оперативной памяти решается многоуровневой системой кэш-памяти с расширениями строк при обращениях к блокам кэш-памяти на более высоких уровнях.
При этом, часть уровней кэш-памяти интегрируется в микросхему процессора, а более дальние уровни размещаются на материнской плате.
При этом кэш-память первого уровня может работать на частоте процессора, второго уровня - с потерей от четырех до девяти тактов процессора, а третьего уровня, расположенная на материнской плате, с потерей значительного большего числа тактов, зависящей от тактовой частоты материнской платы.
Средства управления кэш-памятью
Первые схемы кэш-памяти были прозрачными для программного обеспечения, т.е. были программно неуправляемы. Впоследствии, в системах команд ЭВМ, особенно в многопроцессорных системах, появился ряд команд управления (настройки) кэш-памяти. Это команды управления, например команды предвыборки данных во внешних ступенях кэш-памяти, или команды блокирования и перенастройки алгоритмов работы кэш памяти первого уровня.
Рассмотрим основные возможности управления функционированием кэш-памяти на примере МП i486.
Процессор i486 имеет встроенную в микросхему внутреннюю множественно-ассоциативную кэш-память для хранения 8Кбайт команд и данных. Предусмотрено использование и внешней кэш-памяти.
Работа внутренней и внешней кэш-памяти прозрачна для прикладного программного обеспечения, но знание их поведения может быть полезным с точки зрения оптимизации быстродействия программного обеспечения.
Кэш-память доступна во всех режимах работы: реальном режиме, защищенном режиме и виртуальном режиме 8086.
Размер кэш-строки в процессоре i486 равен четырем двойным словам (8 байт). Допускается кэширование со сквозной записью и с обратной записью. При кэшировании со сквозной записью обновляется кэш-память и внешняя память. Кэширование с обратной записью обновляет только кэш-память, внешняя память обновляется только при выполнении операции обратной записи. Операции обратной записи запускаются при необходимости отменить распределение строк кэш-памяти, например, при кэш-промахах.
Программное обеспечение управляет режимом работы кэш-памяти. Кэширование может быть разрешено или запрещено. В последнем случае кэш-память может работать как внутренняя сверхоперативная память при существовании достоверных строк кэш-памяти, или кэширование может быть запрещено полностью при установке управляющих бит CD и NW в единичное состояние и очищенных (нераспределенных) ячейках хранения данных.
Возможно, использование кэш-памяти для хранения данных о состоянии процессора при распределенных ячейках и установке бит CD и NW в нулевое состояние.
При запрещении работы кэш-памяти следует принимать меры предосторожности. Когда CD установлен в 1, процессор i486 не будет выполнять чтение данных из внешней памяти, если в кэш-памяти еще находятся копии. При бите NW, установленном в 1, процессор i486 не будет выполнять запись во внешнюю память, если данные находятся в кэш-памяти. Это означает, что в кэш-памяти процессора i486 могут храниться данные о состоянии или данные, критичные к времени доступа.
При запрещении работы кэш-памяти следует выполнять ее очистку.
Можно заморозить данные в кэш-памяти, загрузив ее при помощи тестовых регистров и установив CD и NW. Это позволяет гарантировать кэш-попадания для кодов и данных, критичных к времени доступа.
Вопросы для самопроверки: 1. Причины использования многоуровневых структур кэш-памяти.
2. Кэширование с обратной записью.
3. Кэширование с прямой записью.
4. Работа кэш-памяти в качестве внутренней сверхоперативной памяти процессора.
5. Полное запрещение кэширования.
6. Режим использования кэш-памяти для хранения данных о состоянии процессора.
7. Замораживание данных в кэш-памяти для обеспечения гарантийного кэш-попадания для кодов и данных, критичных к времени доступа
Размещено на .ru
Вы можете ЗАГРУЗИТЬ и ПОВЫСИТЬ уникальность своей работы