Небольшая высокоскоростная буферная память для хранения команд и данных

Обновлено: 29.06.2024

A ____ — это электронное устройство, работающее под управлением инструкций, хранящихся в его собственной памяти, которое может принимать, обрабатывать и хранить данные.

___ — это аппаратное обеспечение, которое интерпретирует и выполняет инструкции программы (программного обеспечения) и координирует совместную работу всех других аппаратных устройств.

___ интерпретирует инструкции программного обеспечения и буквально сообщает другим аппаратным устройствам, что делать, основываясь на инструкциях программного обеспечения.

___ выполняет все арифметические операции (например, сложение и вычитание) и все логические операции (например, сортировку и сравнение чисел)

___ — это основная память компьютера, состоящая из оперативной памяти (ОЗУ), кэш-памяти и постоянной памяти (ПЗУ), которая напрямую доступна ЦП

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

___ – это небольшая единица сверхбыстрой памяти, используемая для хранения недавно использованных или часто используемых данных, чтобы ЦП не приходилось извлекать эти данные из более медленных цепей памяти, таких как ОЗУ

___ — это часть основной памяти компьютера, содержимое которой не теряется при отключении питания

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

___ – это вторичный носитель данных, в котором используются магнитные технологии для хранения и извлечения данных на дисках или лентах, покрытых магниточувствительными материалами

___ — это более старый вторичный носитель данных, в котором используется полоска тонкого пластика, покрытая магниточувствительным носителем записи.

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

Это примеры чего? • Компакт-диск только для чтения (CD-ROM) • Компакт-диск с возможностью чтения и записи (CD-RW) • Цифровой видеодиск (DVD) • DVD-привод • Цифровой видеодиск с возможностью чтения/записи (DVD-RW) )

  • Мышь
  • Клавиатура
  • Сенсорная панель
  • Сенсорный экран
  • Указывающее устройство
  • Игровой контроллер
  • Электронно-лучевая трубка (ЭЛТ)
  • ЖК-экран
  • Светодиод
  • OLED
  • струйный
  • Лазер
  • Многофункциональность
  • Плоттер
  • 3D

___ обеспечивает возможность одновременного выполнения двух или более задач и рассматривается как будущее индустрии микросхем

• Персональный цифровой помощник (КПК) • Ноутбук • Планшет • Рабочий стол • Рабочая станция • Миникомпьютер • Мейнфрейм • Суперкомпьютер

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

• Защита от сбоев • Образ диска • Оптимизация диска • Шифрование данных • Восстановление файлов и данных • Защита текста • Превентивная безопасность • Шпионское ПО • Деинсталлятор

• Bowser • Коммуникация • Управление данными • Настольная публикация • Электронная почта • Программное обеспечение для коллективной работы • Графика для презентаций • Программирование • Электронные таблицы • Обработка текстов

Буферная память и кеш

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

Теперь давайте рассмотрим несколько примеров использования буферной памяти.

  • В качестве примера рассмотрим текстовые процессоры, которые используют буфер для отслеживания всех изменений, внесенных в файлы, и при сохранении файла текстовый процессор обновляет содержимое файла на диске, копируя содержимое буферной памяти. Это более эффективный способ управления изменениями, чем каждый раз обращаться к файлу на диске. Но следует отметить, что изначально изменения вносятся и временно сохраняются в буферной памяти, а не на диске, поэтому, если компьютер выйдет из строя, пока мы редактируем файл, мы потеряем содержимое файла.Поэтому важно сохранять файл через равные промежутки времени. Благодаря новым функциям большинство текстовых процессоров периодически автоматически сохраняют содержимое файла.
  • Драйверы клавиатуры также имеют буфер, позволяющий нам редактировать опечатки в команде перед их отправкой в ​​программу.
  • Еще одно применение буферов — печать файлов или документов. Когда дается команда печати, процессор копирует содержимое файла в буфер печати (который представляет собой свободное место в памяти или на диске, называемом буфером), а затем принтер может использовать данные буфера на своей собственной скорости для их печати. Таким образом, принтер продолжает работать в фоновом режиме.
  • Когда нам нужно скопировать файл на дискету или записать данные на компакт-диск, обычно используются буферы. Здесь данные передаются в буферы перед копированием на дискету или перед записью на диск.
  • DOS и другие операционные системы также имеют дисковый буфер для временного хранения данных, считываемых с диска.
  • когда мы хотим просмотреть или загрузить онлайн-видео или аудиофайл, определенный процент загруженного файла помещается в буфер. Затем файл воспроизводится, и устройство постоянно загружает файл и помещает его в буфер. Таким образом, очень мало шансов, что видео- или аудиофайл прервется из-за перегрузки сети.

Что такое кэш?

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

Разница между буферной памятью и кэшем

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

< /tr>
Буферная память Кэш-память
Буферная память в основном расположена в оперативной памяти (ОЗУ) компьютера. Она является частью либо основной памяти, либо жесткого диска
В этой области ЦП может временно хранить свои данные, например данные для пересылки на другие низкоскоростные устройства вывода или другие вторичные устройства хранения, чтобы позволить компьютеру выполнять другие процессы. Информация, которая используется и к которой обращается большинство программ во время работы, сохраняется в кэше для сделать их быстрее.
Это обычная область хранения в динамической ОЗУ Это высокоскоростная область хранения статической ОЗУ.
Буфер обычно используется для процессов ввода/вывода для отправки или получения данных, например, ввода с клавиатуры или вывода на принтер. Кэш используется для хранения данных или временные файлы, к которым часто обращаются процессы
Он хранит или хранит фактическую копию данных. Кэш содержит копию исходных данных.
Это реализовано для согласования скорости медленных устройств ввода-вывода с процессором. Это реализован для сокращения времени доступа и уменьшения времени ожидания часто используемых данных.

Заключение

И буферная память, и кеш — это области памяти, которые используются для хранения данных, временно буфер, являющийся частью ОЗУ и, в частности, динамической ОЗУ, тогда как кеш — это высокоскоростная память, которая может быть частью ОЗУ (статической ОЗУ) или жесткого диска, и того и другого. буфер и кэш стали неотъемлемой частью компьютерной системы. Оба они помогают повысить скорость работы ЦП. Подумайте немного, что будет, если не будет буферной памяти и кеша?

Когда микропроцессор выполняет операцию записи в память, а слова нет в кэше, новые данные просто записываются в основную память. Однако, когда слово находится в кеше, и слово в основной памяти, и в кеше должны быть записаны, чтобы сохранить их одинаковыми. Вопрос: когда основная память должна быть записана? Самый простой ответ — писать одновременно и в кеш, и в основную память. Это называется политикой сквозной записи. В этом случае основная память всегда содержит те же данные, что и кэш. Это важно, если в компьютере есть другие устройства, которые также обращаются к основной памяти 5 . Мы можем преодолеть замедление из-за операции записи в основную память, обеспечив, чтобы последующие операции чтения кэша происходили одновременно с записью в основную память. Поскольку более 70 % обращений к памяти являются операциями чтения, вполне вероятно, что чтение кэша может продолжаться, пока продолжается запись в основную память.

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

Домен 2

Эрик Конрад, . Джошуа Фельдман, одиннадцатый час CISSP® (третье издание), 2017 г.

Кэш-память

Кэш-память — это самая быстрая системная память, необходимая для того, чтобы не отставать от ЦП, когда он извлекает и выполняет инструкции. Данные, наиболее часто используемые процессором, хранятся в кэш-памяти. Самая быстрая часть кэша ЦП — это файл register, который содержит несколько регистров. Регистры — это небольшие ячейки памяти, используемые ЦП для хранения инструкций и данных.

Следующей по производительности формой кэш-памяти является кэш-память 1-го уровня, расположенная в самом ЦП. Наконец, кэш 2-го уровня подключен к ЦП (но вне его). В качестве кэш-памяти используется статическая оперативная память (SRAM).

Методы повышения производительности

Сигэюки Такано, Thinking Machines, 2021

6.7 Обзор методов повышения производительности

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

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

Таблица 6.7. Сводка методов повышения производительности оборудования.

< td >Параметры< td >Обучение< td >Обучение логическим выводам
МетодОписаниеФаза примененияПрименение целиЦель и т. д.
Сжатие моделиУменьшение общего количества параметров и/или функций активации
Сокращение Сокращение ребер и единиц, которые не способствуют точностиОбучениеАктивации, параметрыСложность вычислений и сокращение данных
ОтсевНедействительная активация по вероятностиОбучениеактивацииСложность вычислений и сокращение объема данных
DropConnectАннулирование ребер по вероятностиОбучениеПараметрыСложность вычислений и сокращение объема данных
PCAПонижение входного вектора путем нахождения некоррелированных элементовВыводВходные данные (вектор)Сокращение данных
ДистиллацияДистилляция знаний от более крупной модели к более мелкой моделиОбучениеСложность вычислений и сокращение объема данных
Тензорная факторизацияТензорная аппроксимация тензорами низкого рангаПараметрыСложность вычислений и сокращение объема данных
Распределение весовРаспределение весов внутриуровневый и/или межуровневыйПосле обученияПараметрыСокращение данных
Числовое сжатиеУменьшение размера параметра
КвантованиеКвантование числового представленияАктивации, параметрыИнтерполяционный термин, необходимый для функции потерь (опция)
Обрезка кромокСнижение значения ниже порогового значенияВыводПосле обученияСложность вычислений и сокращение данных с нулевым пропуском
КодированиеСжатие/Распаковка с помощью кодирования данных Обучение логическим выводамАктивации, параметры, временные переменныеСокращение данных
Пропуск нуля th>Пропуск операции, когда операнд имеет нулевое значениеВывод и обучениеОперацияСложность вычислений и сокращение объема данных
АппроксимацияПриближенные функции и операторыВыводАктивации, параметры Интерполяционный термин необходим для функции потерь
ОптимизацияОптимизация модели Ограничение топологии моделиПосле обученияТопологияСложность вычислений и сокращение объема данных
Поток данных ОптимизацияИспользование повторного использования данных и/или локальностиВывод и обучениеВсе Da ta-FlowsОптимизация доступа к памяти

КЭШИ

ЭНДРЮ Н. СЛОСС , . КРИС РАЙТ, в Руководстве разработчика систем ARM, 2004 г.

12.2.1 БАЗОВАЯ АРХИТЕКТУРА КЭШ-ПАМЯТИ

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

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

.

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

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

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

Обработка потока данных

Живоин Сустран , . Велько Милутинович, Достижения в области компьютеров, 2015 г.

5 Постановка задачи для анализа

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

Повышение производительности системы кэширования обычно достигается за счет увеличения кэша. Это привело к тому, что кэши занимают все большую часть современных микропроцессорных микросхем. Однако большие кэши вызывают более длительные задержки. Таким образом, увеличение размера кеша после определенного момента становится контрпродуктивным. В этот момент любое дальнейшее повышение производительности кэша представляет собой сложную проблему, как указано в Ref. [17].

Оценка производительности встроенного программного обеспечения с моделированием кэша инструкций

ЯУ-ЦУН СТИВЕН ЛИ , . ЭНДРЮ ВУЛФ, Чтения по совместному проектированию аппаратного и программного обеспечения, 2002 г.

4.1 Модифицированная функция стоимости

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

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

На рисунке 2 (i) показана CFG с 3 базовыми блоками. Предположим, что кэш инструкций имеет 4 набора кэшей. Поскольку начальный адрес каждого базового блока можно определить из исполняемого кода программы, мы можем найти все наборы кэшей, которым сопоставлен каждый базовый блок, и добавить запись об этих строках кэша в таблицу кэшей (рис. 2 (ii)) . Граница каждого l-блока показана сплошным прямоугольником. Предположим, что базовый блок Bi разделен на блоки ni< /sub> l-блоки. Обозначим эти l-блоки Bi.1, B i.2, …, Bini .

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

Для любых двух l-блоков, сопоставленных с одним и тем же набором кэшей, они будут конфликтовать друг с другом, если у них разные теги адресов. Выполнение одного l-блока вытеснит содержимое кеша другого. Например, l-block B1.1 конфликтует с l-block B3.1 на рис. 2. Также бывают случаи, когда два l-блока не конфликтуют друг с другом. Такая ситуация возникает, когда граница базового блока не совпадает с границей строки кэша. Например, l-блоки B1.3 и B2.1 на рисунке 2, каждый из которых занимает неполную строку кэша и они не конфликтуют друг с другом. Они называются неконфликтующими l-блоками

.

Поскольку l-блок Bij находится внутри базового блока Bi , его счетчик выполнения равен xi. Количество попаданий в кэш и количество промахов в кэше l-блока Bi.j обозначаются как x i j h i t и x i j m i s s соответственно, и

Новое общее время выполнения (функция стоимости) определяется как

(13) всего e x e c u t i o n t i m e = ∑ i = 1 N ∑ j = 1 n i ( c i j h i t x i j h i t + c i j miss x i j miss )

где cijhit и cijmiss — это соответственно стоимость попадания и стоимость промаха l-блока Bij.

Уравнение (12) связывает новую функцию затрат (13) со структурными ограничениями программы и ограничениями функциональности программы, которые остаются неизменными. Кроме того, поведение кэша теперь можно указать с помощью новых переменных x i j h i t и x i j m i s s.

Современные архитектуры

Бертил Шмидт, . Мориц Шларб, Параллельное программирование, 2018 г.

Алгоритмы кэширования

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

Какие данные мы загружаем из основной памяти и где в кеше мы их храним?

Если кеш уже заполнен, какие данные мы удаляем?

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

Пространственное местоположение. Многие алгоритмы получают доступ к данным из смежных ячеек памяти с высокой пространственной локальностью. Рассмотрим следующий фрагмент кода, чтобы определить максимальное значение массива a размера n (при этом элементы массива a[] хранятся непрерывно):

for (int i = 0; i < n; i++)
максимум = max(a[i], максимум);

Предположим, что кеш изначально пуст. В первой итерации запрашивается значение a[0], что приводит к промаху кеша. Таким образом, его нужно загрузить из основной памяти. Вместо того, чтобы запрашивать только одно значение, целая строка кэша загружается значениями с соседних адресов. Предполагая типичный размер строки кэша 64 байта и значения с плавающей запятой двойной точности, это будет означать, что восемь последовательных значений a[0], a[1], a[2], a[3], a[4] , a[5], a[6] и a[7] загружаются в кеш. Следующие семь итераций приведут к попаданию в кэш. Последующая итерация запрашивает a[8], что снова приводит к промаху кеша и так далее. В целом, коэффициент совпадений в нашем примере достигает 87,5 % благодаря использованию пространственной локализации.

Местоположение во времени. Кэш организован в виде нескольких блоков (строк кэша) фиксированного размера (например, 64 Б). Стратегия отображения кэша определяет, в каком месте кэша будет храниться копия конкретной записи основной памяти. В кеше с прямым отображением каждый блок из основной памяти может храниться ровно в одной строке кеша. Хотя этот режим работы может быть легко реализован, он, как правило, имеет высокий процент промахов. В двустороннем ассоциативном кэше каждый блок из основной памяти может храниться в одной из двух возможных строк кэша (как показано на рис. 3.3). Обычно используемая политика для принятия решения о том, какое из двух возможных местоположений выбрать, основана на временном расположении и называется наименее недавно использованным (LRU). LRU просто вытесняет наименее доступную запись. Переход от кеша с прямым отображением к ассоциативному кешу с двусторонним набором может значительно улучшить коэффициент попаданий [2] . Обобщение двустороннего ассоциативного кэша называется полностью ассоциативным. При таком подходе стратегия замены может свободно выбирать любую строку кэша для хранения копии из основной памяти. Несмотря на то, что количество попаданий может быть улучшено, затраты, связанные с реализацией полностью ассоциативного кэша, часто непомерно высоки. Поэтому на практике обычно предпочтительнее использовать n-ассоциативный кэш с n = 2 , 4 или 8 .

Рисунок 3.3

Рисунок 3.3. Иллюстрация (A) кэша с прямым отображением и (B) двустороннего ассоциативного кэша.

Уровень кэша

Брюс Джейкоб, . Дэвид Т. Ван, системы памяти, 2008 г.

22.2.1 Желательные особенности организации кэша

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

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

Единственная копия данных В кэше не должно быть более одной копии данных для любого LBA. Это обобщение концепции общего пространства памяти между операциями чтения и записи, обсуждавшейся в предыдущем разделе.Опять же, это может показаться очевидным, но на практике с рядом организаций кэша действительно случается, что один и тот же LBA может появляться в нескольких сегментах. Организация кэша, допускающая такое дублирование, должна гарантировать правильность поведения, а потерянное пространство должно быть платой за повышение производительности (например, аналогичное дублирование возможно в кешах трассировки — см. «Другой блок динамического кэша: кэши трассировки»). ” обсуждалось в главе 2, раздел 2.6.3).

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

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

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

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

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

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

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

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

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

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

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

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

см. также Центральный процессор; мейнфреймы; Память; Миникомпьютеры; суперкомпьютеры; Всемирная паутина.

Стивен Мюррей

Библиография

Барон, Роберт Дж. и Л. Хигби. Архитектура компьютера. Рединг, Массачусетс: Addison-Wesley, 1992.

Бек, Майкл, Х. Бёме, М. Дзиадска, У. Куниц, Р. Магнус и Д. Верворнер. Внутреннее устройство ядра Linux, 2-е изд. Харлоу, Англия: Addison-Wesley, 1998.

Хейс, Джон П. Архитектура и организация компьютера. Токио: McGraw-Hill, 1979.

Лаплант, Филип А. Проектирование и анализ систем реального времени — Справочник инженера. Нью-Йорк: IEEE Press, 1993.

Стоун, Гарольд С. Архитектура высокопроизводительного компьютера, 3-е изд. Рединг, Массачусетс: Addison-Wesley, 1993.

Кэш — это высокоскоростная память, в которой хранятся данные, которые либо записываются на диски, либо считываются хостом.

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

Набор команд скрипта содержит две команды для определения свойств кэша:

Используйте команду set storageArray, чтобы изменить размер блока кэша и начальное значение очистки кэша. Команда имеет следующую форму:

Вы можете ввести один, два или все три параметра в командной строке.

Значение размера блока кэша определяет размер блока данных, который используется контроллером при передаче данных в кэш или из него. Вы можете установить размер блока кэша на 4 КБ, 8 КБ, 16 КБ или 32 КБ. Используемое значение применяется ко всему массиву хранения и ко всем томам в массиве хранения. Для конфигураций с резервным контроллером это значение включает все тома, принадлежащие обоим контроллерам. Используйте блоки кэша меньшего размера для систем, которым требуются запросы на обработку транзакций или потоки ввода-вывода, которые обычно являются небольшими и случайными. Используйте блоки кэша большего размера для больших операций ввода-вывода, последовательных приложений с высокой пропускной способностью. Выбор размера блока влияет на производительность чтения/записи. Передача больших объемов данных занимает больше времени в блоках размером 4 КБ, чем в блоках размером 16 КБ. В этом примере показано, как установить параметр cacheBlockSize:

Чтобы предотвратить потерю или повреждение данных, контроллер периодически записывает данные кэша на диски (очищает кэш), когда объем незаписанных данных в кэше достигает заданного уровня, называемого начальным процентом. Контроллер также записывает данные кэша на диски, если данные находятся в кэше в течение заданного периода времени. Контроллер записывает данные на диски до тех пор, пока объем данных в кэше не упадет до уровня остановки в процентах. Используйте команду set storageArray, чтобы установить начальное значение в процентах от заполненной емкости кэша. Например, вы можете указать, что контроллер начнет очищать кэш, когда он заполнится на 80 процентов. В этом примере показано, как установить следующие параметры:

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

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

Параметр cacheWithoutBatteryEnabled включает или отключает возможность хоста выполнять кэширование записи без резервных батарей в контроллере. Чтобы включить кэширование записи без батарей, установите для этого параметра значение TRUE. Чтобы отключить кэширование записи без батарей, установите для этого параметра значение FALSE. Если установить для этого параметра значение TRUE, кэширование записи продолжится, даже если батареи контроллера полностью разряжены, не полностью заряжены или отсутствуют. Если у вас нет источника бесперебойного питания (ИБП) и вы включили этот параметр, вы можете потерять данные при сбое питания массива хранения. В этом примере показано, как установить значение этого параметра:

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

Примечание. Параметр mirrorCacheEnabled игнорируется, если для параметра writeCacheEnabled не установлено значение TRUE .

Для использования этой опции должны выполняться следующие условия:

  • Пара контроллеров должна быть парой активный/активный.
  • Контроллеры должны иметь кэш одинакового размера.

Чтобы включить кэширование записи с зеркалированием, установите для этого параметра значение TRUE . Чтобы отключить кэширование записи с зеркалированием, установите для этого параметра значение FALSE. В этом примере показано, как установить этот параметр:

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

Параметр writeCacheEnabled изменяет время уведомления хоста о завершении записи. Если для параметра writeCacheEnabled установлено значение TRUE, хост уведомляется о завершении записи, как только данные будут записаны в кэш. Если для параметра writeCacheEnabled установлено значение FALSE, хост уведомляется о завершении записи, когда данные записываются на некэшированный носитель. Чтобы включить кэширование записи, установите для этого параметра значение TRUE. Чтобы отключить кэширование записи, установите для этого параметра значение FALSE. В этом примере показано, как установить этот параметр:

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

Действительные значения параметра cacheReadPrefetch: TRUE или FALSE . Если вы хотите включить предварительную выборку чтения из кеша, установите для параметра cacheReadPrefetch значение TRUE. Если вы хотите отключить предварительную выборку чтения кэша, установите для параметра cacheReadPrefetch значение FALSE. В этом примере показано, как установить этот параметр:

©2016 NetApp Свяжитесь с нами Соответствие экологическим требованиям Как купить Отзыв Вакансии Карта сайта Юридическая информация Политика конфиденциальности Подписки (RSS)|

Читайте также: