Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Кэш-память



Кэш-память (рис. 13.6) представляет собой быстродействующую буферную память, в которую из основной памяти с умеренной скоростью переносятся команды и данные. В вычислительной системе, использующей кэш-память, команды и данные программы хранятся в основной памяти, а некоторые выбранные участки программы копируются в кэш-память. На рис. 13.6 изображена структурная схема кэш-памяти МП 80386.

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

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

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

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

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

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

Выборка блока. Кэш-память снабжается контроллером, в функции которого входит достижение максимальной эффективности кэш-памяти и управление ее ресурсами. Контроллер разбивает основную память на блоки с типичным размером 2, 4, 8 или 16 байт. 32-разрядный процессор обычно использует блоки размером 2 или 4 слова. Когда фиксируется кэш-промах, кэш-контроллер перемещает в кэш-память из основной памяти требуемое слово вместе с целым блоком, содержащим это слово. Выборка блока с данными может осуществляться одним из трех способов: 1) с упреждением - когда извлекаются данные, расположенные за требуемым байтом; 2). с отставанием - когда извлекаются данные, расположенные перед требуемым байтом; 3) и с тем и с другим. Обычно блоки выравниваются на границу двойного слова. Обращение к любому байту блока приводит к копированию в кэш-память всего блока.

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

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

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

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

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

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

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

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

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

При выборке нового блока кэш-контроллер должен решить, на место какого блока в кэш-памяти его записать. Здесь есть три возможности, адекватность которых определяется поведением программы: 1) случайный выбор; 2) запись в последовательном порядке; 3) запись на место блока, который не адресовался дольше других. Последний алгоритм требует наличия в контроллере «счетчика возраста», который указывает, на место какого блока можно записывать новый. Этот счетчик должен модифицироваться каждым запросом к кэш-памяти.

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

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

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

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

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

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

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

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

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

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

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

Емкость ЗУ определяется максимально возможным объемом хранимой им информации. Минимальный объем информации (1 бит) хранится запоминающим элементом (ЗЭ). Многоразрядное слово хранится в ячейке памяти, причем этим термином называют часть ЗУ, хранящего множество слов. Емкость ЗУ выражают в битах или количестве слов с указанием их разрядности. Второе отражает одновременность считывания всего слова. Слово длиной 9 разрядов, из которых 8 - информационные, 1 - контрольный, называют байтом.

Организация ЗУ - количество и разрядность хранимых слов. Например, указание емкости ЗУ в виде 32´8 бит означает, что в ЗУ емкостью 256 бит хранятся 32 слова по восемь разрядов.

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

По первому признаку ЗУ образуют сложную иерархию, в которой можно выделить три укрупненных класса - устройства внутренней, внешней и буферной памяти.

Устройства внутренней памяти непосредственно участвуют в процессе преобразования информации, обмениваясь данными с процессором ЭВМ или вычислительной системы.

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

Буферные ЗУ предназначены для промежуточного хранения данных при обмене между внешней и внутренней памятью.

Среди классификационных признаков для ЗУ важнейший - способ записи и считывания данных, согласно которому ЗУ делятся на типы, показанные на рис. 4.1.

Оперативные ЗУ (ОЗУ) относятся к внутренней памяти, хранят данные, участвующие в текущих вычислениях, и должны быть быстродействующими. ЗУ с произвольной выборкой (ЗУПВ) имеют время обращения, не зависящее от местоположения запоминающей ячейки. Английским обозначением таких ЗУ служит аббревиатура RAM (random access memory). Большие интегральные схемы памяти типа ОЗУ выполняются как статические либо динамические. В первом варианте, реализуемом на биполярных приборах и МОП-структурах, данные хранятся в матрицах запоминающих элементов типа триггеров и не требуют какой-либо регенерации. Во втором варианте, реализуемом на МОП-структурах, данные хранятся в виде зарядов емкостей и должны периодически регенерироваться.

В ЗУ с последовательным доступом (serial access memory - SAM) время обращения к ячейке существенно зависит от ее местоположения. Например, в ЗУ с накопителем на магнитной ленте или магнитном диске время обращения поочередно к соседним ячейкам намного меньше, чем время обращения к произвольно расположенной ячейке. Такие ЗУ эффективно используются только при обмене с ними массивами (файлами) слов. Среди БИС памяти к ЗУ с последовательным доступом относятся ЗУ на цилиндрических магнитных доменах (ЦМД) и ЗУ на приборах с зарядовой связью (ПЗС).

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

В разработанных ЭВМ большое место занимают ЗУ с пространственным перемещением носителя информации (на магнитных лентах и дисках) и ЗУ на магнитных сердечниках с прямоугольной петлей гистерезиса.

Постоянные ЗУ известны издавна, но в последние годы быстро прогрессируют и дополняются разновидностями. Первоначально постоянные ЗУ (ПЗУ, или ROM - read only memory) хранили данные, однократно фиксируемые при изготовлении (константы, установки, микропрограммы и т. п.). В последнее время все шире используются программируемые ПЗУ (ППЗУ, или PROM - programmable read only memory). Если программирование ЗУ производится на последнем этапе изготовления БИС с помощью специальной маски, то говорят о ПЗУ масочного типа. Имеются ППЗУ, и которых информация однократно фиксируется после изготовления ЗУ, что может быть выполнено непосредственно пользователем. Существуют и ППЗУ, в которых информация может быть многократно изменена. От ОЗУ они отличаются тем, что запись не является оперативной, а выполняется как специальный процесс большой длительности с помощью специальных средств. Такие ЗУ называют репрограммируемыми (РПЗУ). В них хранятся редко изменяемые данные.

Распространен вид ППЗУ, в которых программирование осуществляется путем прожигания плавких перемычек в определенных частях схемы (прожигаемые ЗУ). Все более популярными становятся ППЗУ с изменением информации после предварительного стирания старой информации с помощью ультрафиолетовых лучей. И наконец, разработаны РПЗУ со сменой информации электрическим способом (EAROM - electrically alterable read only memory). Техника ЗУ продолжает развиваться, в перспективе могут найти применение новые запоминающие среды, в частности на основе функциональной электроники.





Дата публикования: 2014-10-19; Прочитано: 3920 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.011 с)...