Какой тип памяти предназначен для использования в кэше – Кэш процессора — Википедия

Содержание

Кэш процессора — Википедия

Материал из Википедии — свободной энциклопедии

Кэш микропроцессора — кэш (сверхоперативная память), используемый микропроцессором компьютера для уменьшения среднего времени доступа к компьютерной памяти. Является одним из верхних уровней иерархии памяти[1]. Кэш использует небольшую, очень быструю память (обычно типа SRAM), которая хранит копии часто используемых данных из основной памяти. Если большая часть запросов в память будет обрабатываться кэшем, средняя задержка обращения к памяти будет приближаться к задержкам работы кэша.

Когда процессору нужно обратиться в память для чтения или записи данных, он сначала проверяет, доступна ли их копия в кэше. В случае успеха проверки процессор производит операцию, используя кэш, что значительно быстрее использования более медленной основной памяти. Подробнее о задержках памяти см. Латентность SDRAM: tCAS, tRCD, tRP, tRAS.

Данные между кэшем и памятью передаются блоками фиксированного размера, также называемые линиями кэша (англ. cache line) или блоками кэша.

Большинство современных микропроцессоров для компьютеров и серверов имеют как минимум три независимых кэша:

кэш инструкций для ускорения загрузки машинного кода, кэш данных для ускорения чтения и записи данных и буфер ассоциативной трансляции (TLB) для ускорения трансляции виртуальных (логических) адресов в физические, как для инструкций, так и для данных. Кэш данных часто реализуется в виде многоуровневого кэша (L1, L2, L3).

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

ru.wikipedia.org

Кэш-память процессора. Уровни и принципы функционирования

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

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

Что такое кэш-память и её структура

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

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

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

Для чего нужна кэш-память процессора?

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

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

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

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

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

Уровни кэш-памяти процессора

Современные процессоры, оснащены кэшем, который состоит, зачастую из 2–ух или 3-ёх уровней. Конечно же, бывают и исключения, но зачастую это именно так.

В общем, могут быть такие уровни: L1 (первый уровень), L2 (второй уровень), L3 (третий уровень). Теперь немного подробнее по каждому из них:

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

Мы будем рассматривать объёмы на процессоре высокого уровня производительности Intel Core i7-3770K. Данный процессор оснащен 4х32 Кб кэш-памяти первого уровня 4 x 32 КБ = 128 Кб. (на каждое ядро по 32 КБ)

Кэш второго уровня (L2) – второй уровень более масштабный, нежели первый, но в результате, обладает меньшими «скоростными характеристиками». Соответственно, служит буфером между уровнем L1 и L3. Если обратиться снова к нашему примеру Core i7-3770 K, то здесь объём кэш-памяти L2 составляет 4х256 Кб = 1 Мб.

Кэш третьего уровня (L3) – третий уровень, опять же, более медленный, нежели два предыдущих. Но всё равно он гораздо быстрее, нежели оперативная память. Объём кэша L3 в i7-3770K составляет 8 Мбайт. Если два предыдущих уровня разделяются на каждое ядро, то данный уровень является общим для всего процессора. Показатель довольно солидный, но не заоблачный. Так как, к примеру, у процессоров Extreme-серии по типу i7-3960X, он равен 15Мб, а у некоторых новых процессоров Xeon, более 20.


we-it.net

20. Кэш-память. Принципы кэширования памяти.

Кэш-память

предназначена для повышения быстродействия процесса обращения к основной памяти.

Основная память, как правило, реализуется на относительно медленной и дешевой динамической памяти (DRAM), обращение к которой приводит к простою процессора – появляются такты ожидания. Статическая память (SRAM), построенная, как и процессор, на триггерных ячейках, имеет быстродействие, соизмеримое с быстродействием процессора, и способна сделать ненужными такты ожидания или сократить их количество, но имеет высокую стоимость. Разумным компромиссом для построения экономичных и производительных МПС является иерархический способ организации основной памяти. Идея заключается в сочетании основной памяти большого объема на DRAM с относительно небольшой буферной памятью на основе быстродействующей SRAM, т.е. в использовании двухуровневой памяти, когда между ОП и процессором размещается небольшая, но быстродействующая буферная память. В процессе работы в буферную память копируются те участки ОП, к которым производится обращение со стороны процессора. Производится отображение участков ОП на буферную память и переадресация на нее всех обращений в пределах скопированного участка. Выигрыш в быстродействии достигается за счет ранее рассмотренного свойства локальности.

Для обозначения рассмотренной буферной памяти получил распространение термин кэш-память (от английского слова cache – убежище, тайный склад, тайник, заначка), поскольку такая память обычно скрыта от программиста в том смысле, что он не может ее адресовать и может даже вообще не знать о ее существовании.

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

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

Кэш-память состоит из (рис. 28): массива данных, справочника или каталога (cache directory) и контроллера (устройства управления).

Рисунок 28 – Структура кэш-памяти

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

ОП состоит из 2n адресуемых слов, где каждое слово имеет уникальный n-разрядный адрес. При взаимодействии с кэшем эта память рассматривается как M блоков фиксированной длины по k слов в каждом (M = 2n/k). Кэш-память состоит из m блоков аналогичного размера (блоки в кэш-памяти принято называть

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

С каждой строкой кэша связана информация об адресе скопированного в нее блока основной памяти и ее состоянии. Информация о том, какой именно блок основной памяти занимает данную строку называется тегом (tag) и хранится в связанной с данной строкой ячейке памяти тегов. В качестве тега обычно используется часть адреса ОП. Здесь же хранится и информация о состоянии строки. Строка может быть действительной (valid), если в ней в текущий момент времени хранится (присутствует) копия соответствующего блока основной памяти, или недействительной. Строка может достоверно отражать соответствующий блок основной памяти или быть модифицированной (говорят строка «грязная» – dirty). Таким образом, кроме адресной части тега с каждой строкой кэша связаны биты признаков действительности

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

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

• емкость кэш-памяти;

• размер строки;

• способ отображения основной памяти на кэш-память;

• алгоритм замещения информации в заполненной кэш-памяти;

• алгоритм согласования содержимого основной и кэш-памяти;

• число уровней кэш-памяти.

Емкость кэш-памяти

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

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

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

Размер строки

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

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

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

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

studfiles.net

Кэш процессора — Национальная библиотека им. Н. Э. Баумана

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 21:29, 15 декабря 2016.

Кэш процессора — кэш, используемый процессором компьютера для уменьшения среднего времени доступа к компьютерной памяти. Является одним из верхних уровней иерархии памяти. Кэш использует небольшую, очень быструю память (обычно типа SRAM), которая хранит копии часто используемых данных из основной памяти. Если большая часть запросов в память будет обрабатываться кэшем, средняя задержка обращения к памяти будет приближаться к задержкам работы кэша. Когда процессору нужно обратиться в память для чтения или записи данных, он сначала проверяет, доступна ли их копия в кэше. В случае успеха проверки процессор производит операцию используя кэш, что значительно быстрее использования более медленной основной памяти.[1]

Назначение кэш памяти

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

Есть и другая причина, по которой необходимо использовать кэш­ как промежуточное звено между процессором и оперативной памятью. Дело в том, что процесс чтения и записи данных в оперативную память происходит не отдельными байтами, а пакетами, состоящими как минимум из четырех 64-разрядных ячеек. Это позволяет повысить эффективность работы памяти. Однако процессор загружает данные в свои регистры в виде байт, слов, двойных слов или даже четверных слов. В любом случае он не работает с пакетами данных. То есть минимальная единица информации, считываемая из оперативной памяти, всегда больше той минимальной единицы информации, с которой работает процессор. Возникает вопрос: если из памяти считывается целый пакет данных, а требуется, к примеру, только одно двухбайтовое слово, то куда девать все остальные байты? Отбрасывать их было бы крайне нерентабельно, поскольку велика вероятность, что если сейчас процессору требуются данные, расположенные по одному адресу в оперативной памяти, то в следующий момент он запросит данные, находящиеся по соседнему адресу. А потому считанный пакет данных из оперативной памяти нужно где-­то временно сохранить, то есть требуется промежуточная память для временного хранения считываемых данных. Аналогично запись в оперативную память происходит пакетами данных, но эти пакеты нужно где­-то предварительно сформировать, то есть опять-таки нужна временная память или кэш.[2]

Структура кэша

Система кэш-памяти процессора состоит из двух блоков - контроллера кэш-памяти и собственно самой кэш-памяти. Она представлена на рисунке 1.

Рис.1. Структура и функционирование кэша

Кэш память

Это место, где хранится содержание кэша. Кэш-память процессора изготавливают в виде микросхем статической памяти (Static Random Access Memory, сокращенно - SRAM). По сравнению с другими типами памяти, статическая память обладает очень высокой скоростью работы. Однако, эта скорость зависит также от объема конкретной микросхемы. Чем значительней объем микросхемы, тем сложнее обеспечить высокую скорость ее работы. Если такая особенность учтена производителем, то кэш-память процессора содержит несколько блоков, называемых уровнями. В большинстве процессоров используется трехуровневая система кэша:

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

Контроллер кэш памяти

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

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

  • Размером и структурой кэш-памяти. Чем больше ресурсов имеет в своем распоряжении контроллер, тем ниже вероятность кэш-промаха
  • Эффективностью алгоритмов, по которым контроллер определяет, какая именно информация понадобится процессору в следующий момент времени
  • Сложностью и количеством задач, одновременно решаемых процессором. Чем сложнее задачи и чем их больше, тем чаще "ошибается" контроллер[3]

Организация кэш памяти

Рис.2 Структура гипотетического кэша

Теперь рассмотрим на примере, как устроен кэш. Пусть есть система с 32-разрядной адресацией памяти, то есть для задания адреса каждого байта памяти требуется 4-байтный адрес. Предположим, что наш кэш работает на уровне отдельных байтов, то есть может сохранять в качестве элемента байт оперативной памяти. Тогда каждый структурный элемент кэш­памяти должен сохранять не только байт данных оперативной памяти, но еще и его 4-байтный адрес в оперативной памяти. Получается уже некое подобие строки, которая называется кэш­строкой (cacheline). Адрес сохраняемого байта принято именовать тегом (tag). При чтении данных из кэша процессор формирует адрес, который сравнивается с тегом кэш­строки. В случае совпадения кэш выдает требуемый байт данных, если же совпадения адреса с тегом нет (кэш­промах) — производится обращение к оперативной памяти. Понятно, что для реализации данного механизма необходимо дополнить каждую строку кэша еще и устройством сравнения адреса с тегом (см. рисунок 2).

Рис.3 Пример кэш-строки

Для реализации политики замещения на основе алгоритма FIFO или LRU, необходимо, чтобы каждая строка кэша была дополнена счетчикам возраста. Причем сколько именно байт отводится под счетчик, зависит от того, каков размер кэша. Если, к примеру, описанный нами кэш имеет размер 64 Кбайт, то в нем должно быть 65 536 строк. Тогда необходимо к каждой строке кэша добавить еще двухбайтовое поле (216 = 65 536), чтобы реализовать счетчик возраста строк. Строка, к которой обращались в последнюю очередь, имеет возраст 0, а строка с самым поздним обращением — возраст 65 535. В описанном выше кэше объем полезной сохраняемой информации в шесть раз меньше полного объема кэша, поскольку на каждый байт хранимых данных приходится еще шесть служебных байт. Понятно, что такая структура кэша абсолютно нецелесообразна. Для того чтобы повысить объем полезной информации и одновременно уменьшить объем служебных данных, достаточно сохранять информацию в кэше не в виде отдельных байтов, а в виде блоков данных. То есть в каждой строке кэша будем сохранять не один байт данных, а блок данных фиксированного размера, идущих подряд в оперативной памяти, — он называется размером кэш­строки. Тегом строки будет адрес в оперативной памяти первого содержащегося в ней байта. Отметим, что блок сохраняемых данных в кэш­строке (то есть по сути сама кэш­строка) имеет строго фиксированный размер и является минимальной единицей информации, которая может быть считана из кэша или загружена в кэш. Размер кэш­строки может быть равен только степени двойки (2, 4, 8, 16 и так далее. см. рисунок 3). Как мы помним, чтение из оперативной памяти (равно как и запись в нее) происходит пакетом данных, а кэш работает только с кэш­строками. Поэтому адрес первого байта кэш­строки всегда кратен размеру пакета данных, то есть начало кэш­строки всегда совпадает с началом пакета данных. В рассмотренном нами кэше мы не учитывали биты модификации, которые также добавляются в каждой строке кэша и необходимы для поддержания когерентности.

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

Рис.4 Пример кэш-памяти

Так вот суть кэширования состоит в разбиении RAM на кэш-линии и отображении их на кэш-линии кэш-памяти. Возможно несколько вариантов такого отображения.

Прямое отображение

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

Рис.5 Прямое отображение. Разделение на блоки

Блоки RAM из разных сегментов, но с одинаковыми номерами в этих сегментах, всегда будут отображаться на одну и ту же кэш-линию кэша.

Рис.6 Прямое отображение. Отображение блока на кэш-память

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

Если b{\displaystyle b} - это размер кэш-линии, а m{\displaystyle m} - это количество кэш-линий в кэше, то:

  • Для адресации b{\displaystyle b} внутри каждой кэш-линии потребуется: log2b{\displaystyle log_2b} бит
  • Для адресации m{\displaystyle m} кэш-линий внутри каждого сегмента потребуется: log2m{\displaystyle log_2m} бит
  • Для адресации N{\displaystyle N} сегментов RAM потребуется: log2N{\displaystyle log_2N} бит
  • Для адресации байта потребуется: log2b+log2m+log2N{\displaystyle log_2b + log_2m + log_2N} бит

Поиск в такой организации кэша будет строится следующим образом:. .

  1. Извлекается средняя часть адреса, определяющая номер кэш-линии в кэше
  2. Тэг кэш-линии с данным номером сравнивается со старшей частью адреса

Если было совпадение по одному из тэгов, то произошло кэш-попадание. Если не было совпадения ни по одному из тэгов, то произошел кэш-промах.

Полностью ассоциативное отображение

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

Рис.7 Полностью ассоциативное отображение

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

Если b{\displaystyle b} - это размер кэш-линии, а m{\displaystyle m} - количество кэш-линий, помещающихся в RAM, то:

  • Для адресации b{\displaystyle b} байт внутри каждой кэш-линии потребуется: log2b{\displaystyle log_2b} бит
  • Для адресации m{\displaystyle m} кэш-линий: log2m{\displaystyle log_2m} бит
  • Для адресации байта потребуется: log2m+log2b{\displaystyle log_2m + log_2b} бит

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

Наборно-ассоциативное отображение

Основная идея наборно-ассоциативного отображения RAM на кэш-память состоит в следующем: RAM делится также как и в прямом отображении, а сам кэш состоит из k{\displaystyle k} кэшей, использующих прямое отображение.

Рис.8 Схема кэша при наборно-ассоциативном отображении

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

Рис.9 Наборно-ассоциативное отображение

Структура адреса байта такая же, как и в прямом отображении: log2N+log2m+log2b{\displaystyle log_2N + log_2m + log_2b} бит, но поскольку набор представляет собой k{\displaystyle k} различных кэш-линий, то поиск в кэше немного отличается. В таком варианте организации поиск происходит следующим образом:

  1. Извлекается средняя часть адреса, определяющая номер набора в кэше. Сложность: log2m{\displaystyle log_2m}
  2. Тэги всех кэш-линий данного сета сравниваются со старшей частью адреса одновременно. Сложность: log2N{\displaystyle log_2N}

N,m,b{\displaystyle N, m, b} - это количество сегментов RAM, количество кэш-линий, размер кэш-линии соответственно. Если было совпадение по одному из тэгов, то произошло кэш-попадание. Если не было совпадение ни по одному из тэгов, то произошел кэш-промах.

Многоуровневая организация

Одной из проблем является отсутствие баланса между задержками кэша и интенсивностью попаданий. Большие кэши имеют более высокий процент попаданий, но и большую задержку. Чтобы ослабить противоречие между этими двумя параметрами, большинство компьютеров использует несколько уровней кэша, когда после маленьких и быстрых кэшей находятся более медленные большие кэши (в настоящий момент — до 3 уровней в иерархии кэшей).

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

  • Рис.10 Данные считываются из кэша 1 уровня

  • Рис.11 Данные считываются из кэша 2 уровня

  • Рис.12 Чтение из ОЗУ

Для многоуровневых кэшей требуется делать новые архитектурные решения. В некотором процессоре могут потребовать, чтобы все данные, хранящиеся в кэше 1 уровня, хранились также и в кэше 2 уровня. Такие пары кэшей называют строго инклюзивными (включительными). Другие процессоры могут не иметь подобного требования, тогда кэши называются эксклюзивными (исключительными) — данные могут быть либо в кэше 1 уровня, либо в кэше 2 уровня, но никогда не могут быть одновременно в обоих.

Преимущество исключительных кэшей в том, что они хранят больше данных. Это преимущество больше, когда исключительный кэш 1 уровня сопоставим по размеру с кэшэм 2 уровня, и меньше, если кэш 2 уровня во много раз больше, чем кэш 1 уровня. Когда 1 уровень пропускает и 2 уровень получает доступ в случае попадания, строка кэша попадания в кэшэ 2 уровня обменивается со строкой с 1 уровнем.[4]

Источники

  1. ↑ Википедия [Электронный ресурс]: Кэш процессора — материал из Википедии — свободной энциклопедии: Версия 81753821, сохранённая в 16:06, 7 ноября 2016. / Авторы Википедии // Википедия, свободная энциклопедия. — Электрон. дан. — Сан-Франциско: Фонд Викимедиа, 2016. — Режим доступа: https://ru.wikipedia.org/wiki/%D0%9A%D1%8D%D1%88_%D0%BF%D1%80%D0%BE%D1%86%D0%B5%D1%81%D1%81%D0%BE%D1%80%D0%B0#.D0.A1.D1.82.D1.80.D1.83.D0.BA.D1.82.D1.83.D1.80.D0.B0_.D0.B7.D0.B0.D0.BF.D0.B8.D1.81.D0.B8_.D0.B2_.D0.BA.D1.8D.D1.88.D0.B5
  2. ↑ Компьютер пресс [Электронный ресурс] : Что такое кэш процессора и как он работает / Дата обращения: 15 декабря 2016 - Режим доступа: http://compress.ru/article.aspx?id=23541#03
  3. ↑ Info [Электронный ресурс] : Кэш-память процессора / Дата обращения: 15 декабря 2016 - Режим доступа: http://www.chaynikam.info/kesh-cpu.html
  4. ↑ Хабрахабр [Электронный ресурс] : Логическая организация кэш-памяти процессора / Дата обращения: 15 декабря 2016 - Режим доступа: https://habrahabr.ru/post/179647/

ru.bmstu.wiki

Ответы Mail.ru: подскажите ответы!!

1
Какие три устройства являются устройствами вывода информации (Выберите три ответа)
сканер отпечатка пальца
наушники
клавиатура
монитор
мышь
принтер

2
Какой тип архитектуры процессора имеет малый набор команд с высокой скоростью их исполнения?
CISC
RAID
RISC
RISK
SCSI

3
Укажите два характерных свойства кабеля SCSI. (Выберите два ответа)
Максимально допустимая длина 100 м.
Разъем 8P8C.
Подключение до 15 устройств.
Подключение двух устройств по схеме ведущий-ведомый.
Использование разъемов с 25, 50 или 68 контактами.

4

Посмотрите на рисунок. Какова наибольшая допустимая длина кабеля, изображенного на рисунке, при подключении принтера к компьютеру?
4,5 м
6 м
8 м
9 м

5
Какой тип памяти предназначен для использования в кэше
DRAM
модуль ОЗУ
ROM
SRAM

6
Какой тип памяти содержит информацию, необходимую для загрузки компьютера и операционной системы?
DRAM
модуль ОЗУ
ROM
SRAM

7
Какую особую отличительную черту имеет стандарт USB?
Одно подключение по USB способно обслужить до 255 различных устройств.
Скорость подключения достигает 580 Мб/с в низкоскоростном режиме.
Скорость обмена данными достигает 920 Мб/с в версии протокола 2.0
Существует возможность электропитания устройств от компьютера.

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

9
Какие две характеристики определяются набором микросхем системной платы (Выберите два ответа)
максимально допустимый объем памяти
совместимость с операционной системой
типы разъемов на системной плате
наибольшее количество допустимых периферийных устройств

10

Посмотрите на рисунок. Какой тип кабеля изображен на рисунке?
FireWire
Параллельный
Последовательный
USB

11
Какой тип системных ресурсов обозначает электрические сигналы, которые прерывают работу процессора?
DMA
адреса ввода-вывода
IRQ
адреса ОЗУ

12
Какие два устройства являются устройствами ввода информации (Выберите два ответа)
устройство биометрической аутентификации
принтер
цифровая камера
проектор
динамики

13
Какой тип ПЗУ может быть перепрограммирован с помощью программного обеспечения без физического извлечения из компьютера?
EEPROM
EPROM
PROM
ROM

14
Какие три типа разъемов существуют для подключения по FireWire (Выберите три ответа)
2 контакта
4 контакта
6 контактов
8 контактов
9 контактов
15 контактов

otvet.mail.ru

Тест "Оперативная память"

Тест "Оперативная память"
  1. Память (запоминающее устройство) предназначена для:
    обработки информации
    организации процесса выполнения команд
    хранения информации
    обработки данных в виде числовых двоичных кодов
  2. В каком году компания Siemens изготовила первый чип ОЗУ, емкость, которой составило 1 Мбит?
    1956 г.
    1989 г.
    1963 г.
    2000 г.
  3. Динамическая память (DRАМ) используется обычно:
    как стандартный тип памяти, быстродействие которой составляет 60 или 70 нс
    для повышения быстродействия
    для материнских плат
    в качестве оперативной памяти общего назначения, а также как память для видеоадаптера
  4. Какая память обычно применяется в качестве кэш-памяти второго уровня для кэширования основного объема ОЗУ?
    Динамическая
    Стандартная
    Статическая
    Синхронная
  5. Кэш-память (Cache memory) представляет собой:
    множество независимых банков объемом по 32 Кбайт каждый, работающих в конвейерном режиме
    статический триггер
    буферное ЗУ, работающее со скоростью, обеспечивающей функционирование без режимов ожидания
    средство доступа
  6. Емкость первого чипа ОЗУ?
    1 Мбит
    3 Мбит
    2 Мбит
    5 Мбит
  7. Распараллеливание операций SRAM с использованием входных и выходных регистров - это...
    конвейер
    шина
    кодирование
    разрядность
  8. Какое устройство, предназначено для приема, хранения и выдачи информации?
    ОЗУ
    CRAM
    WRAM
    шина
  9. Оперативная память обозначается:
    SyncBurst SRАМ
    МRАМ (Magnetic Random Access Memory)
    RAM (Random Access Memory)
    IRАМ (Intellectual Random Access Memory)
  10. Выберите неверное утверждение:
    Основная задача RAM — предоставлять необходимую информацию в виде двоичных кодов по запросам CPU
    Статическая память (SRАМ) обычно применяется в качестве кэш-памяти второго уровня для кэширования основного объема ОЗУ
    Синхронная память обеспечивает доступ к данным не в произвольные моменты времени, а синхронно с тактовыми импульсами
    Async SRАМ – это синхронная пакетная статическая память


    

salpk-apk.narod.ru

Кэш-память (компьютеры и интернет) — Мегаэнциклопедия Кирилла и Мефодия — статья

Кэш-память, кэш (cache memory, cache):

  1. в широком смысле, любая память с быстрым доступом, где хранится часть данных с другого носителя с более медленным доступом;
  2. в узком смысле — «сверхоперативный» вид памяти, используемый для повышения скорости доступа микропроцессора к оперативной памяти.


Кэш-память процессора

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

Различают следующие виды кэш-памяти процессора:

  • Cache L1 — «кэш-память первого уровня»: промежуточная сверхоперативная память, как правило находящаяся на самом кристалле процессора, в которой размещаются наиболее часто используемые данные. Работает на частоте процессора. Время доступа к этой памяти существенно меньше, чем к данным в основной оперативной памяти. Этим достигается ускорение работы процессора. Из-за ограничений в размерах кристалла процессора и высокого быстродействия этой памяти она имеет небольшую емкость — всего несколько десятков килобайт.
  • Cache L2 — «кэш-память второго уровня»: промежуточная сверхоперативная память, имеющая быстродействие ниже памяти первого уровня, но выше основной оперативной памяти. Ее размер обычно составляет от нескольких сотен килобайт до нескольких мегабайт. Она может выполняться как на том же кристалле, что и процессор, так и в виде отдельных микросхем. В RISC-процессорах зачастую используется L3-кэш и кэш более высоких порядков.
  • Cache L3 — «кэш-память третьего уровня»: промежуточная сверхоперативная память, имеющая быстродействие ниже памяти второго уровня, но выше основной оперативной памяти. Ее размер обычно составляет от одного до нескольких мегабайт. Используется, главным образом, в серверных процессорах (см. Intel Xeon MP). Встречается кэш-память и более высоких уровней (при этом быстродействие памяти каждого последующего уровня меньше каждого предыдущего уровня).
  • D-Cache — сверхоперативная память, используемая для хранения инструкций процессора.


Кэширование жесткого диска

Большинство жестких дисков оснащены собственной кэш-памятью размером от нескольких кмлобайт до нескольких мегабайт (в современных жестких дисках — 2, 4, 8, 16 или 32 Мб). Дисковая кэш-память (disk cache), или кэш-память жестского диска — принцип построения кэш-памяти на основе динамического ОЗУ (см. DRAM), хранящем наиболее часто используемые команды и данные, доступ к которым производится из внешней памяти. Принцип кэширования жесткого диска во многом похож на принцип кэширования, используемый для оперативной динамической памяти, хотя способы доступа к диску и памяти сильно различаются. Если время доступа к любой из ячеек оперативной памяти имеет примерно одинаковое для данного компьютера значение, то время доступа к различным блокам информации на винчестере в общем случае будет различным. Во-первых, нужно затратить некоторое время, чтобы магнитная головка записи-чтения подошла к искомой дорожке. Во-вторых, поскольку при движении головка вибрирует, то необходимо время, чтобы она успокоилась. В-третьих, требуется время, чтобы головка нашла искомый сектор.

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


Другие виды кэш-памяти

Значительная часть устройств внешней памяти (внешние жесткие диски, приводы CD и DVD), а также периферийные устройства (принтер, сканер) обладают небольшим объемом кэш-памяти (в основном 2, 4, 8 либо 16 Мб), что позволяет увеличить скорость доступа к данным.

Кроме того, кэширование широко распространено в сетевых технологиях, см. Кэш (в сети).

megabook.ru

Author: alexxlab

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *