Принципы управления памятью вычислительной системы. Виртуальная память и преобразование адресов. Память вычислительных систем

Организация памяти МПС. Сегментация памяти. Вычисление адреса. Внутренняя КЭШ память .

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

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

Рисунок 7.4.1. Схема подключения модуля памяти.

В пространстве памяти микропроцессорной системы обычно выделяются несколько особых областей, которые выполняют специальные фун­кции. К ним относятся:

– память программы начального запуска, выполненная на ПЗУ или флэш-памяти;

– память для стека или стек (Stack) – это часть оперативной памяти, пред­назначенная для временного хранения данных;

– таблица векторов прерываний, содержащая адреса начала программ обработки прерываний;

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

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

Часто простран­ство памяти делится на сегменты с программно изменяемым адресом начала сегмента и с установленным размером сегмента. Например, в процессоре Intel 8086 сегментирование памяти организовано следующим образом.

Вся память системы представляется не в виде непрерывного пространства, а в виде нескольких кусков – сегментов заданного размера (по 64 Кбайта), положение которых в пространстве памяти можно изменять программным путем.

Для хранения кодов адресов памяти используются не отдельные регистры, а пары регистров:

Сегментный регистр определяет адрес начала сегмента (то есть положение сегмента в памяти);

Регистр указателя (регистр смещения) определяет положение рабочего адреса внутри сегмента.

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

Рисунок 7.4.2. Формирование физического адреса памяти из адреса сегмента и смещения.

Положение этого адреса в памяти показано на рисунке7.4.3.

Рисунок 7.4.3. Положение физического адреса в памяти

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

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

Кэш–память располагается между основной памятью (ОП) и центральным процессором для снижения затрат времени на обращение ЦП к ОП.

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

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

хорошую работу на сайт">

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

1. Принципы обмена информацией между иерархическими уровнями подсистемы памяти.

2. Основные функции и основные подсистемы вычислительной системы.

3. Принцип действия ассоциативной кэш-памяти.

4. Реализация прерываний от периферийных устройств, подключенных через последовательный интерфейс.

5. Что такое кольца защиты?

6. Что такое сегментация оперативной памяти?

7. Основные особенности видеоданных. Матричное и графическое представление видеоинформации.

8. Что такое файл? Различия между файлом и каталогом.

9. Основные стадии конвейера современных процессоров.

10. Что такое переименование регистров?

Вопрос № 1. Принципы обмена информацией между иерархическими уровнями подсистемы памяти

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

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

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

Успешное или неуспешное обращение к более высокому уровню называются соответственно попаданием (hit) или промахом (miss). Попадание - есть обращение к объекту в памяти, который найден на более высоком уровне, в то время как промах означает, что он не найден на этом уровне. Доля попаданий (hit rate) или коэффициент попаданий (hit ratio) есть доля обращений, найденных на более высоком уровне. Иногда она представляется процентами. Доля промахов (miss rate) есть доля обращений, которые не найдены на более высоком уровне.

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

Вопрос № 2. Основные функции и основные подсистемы вычислительной системы

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

Основные функции:

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

* Стандартизованный доступ к периферийным устройствам (устройства ввода-вывода).

* Управление оперативной памятью (распределение между процессами, организация виртуальной памяти).

* Управление доступом к данным на энергонезависимых носителях (таких как жёсткий диск, оптические диски и др.), организованным в той или иной файловой системе.

* Обеспечение пользовательского интерфейса.

* Сетевые операции, поддержка стека сетевых протоколов.

Дополнительные функции:

* Параллельное или псевдопараллельное выполнение задач (многозадачность).

* Эффективное распределение ресурсов вычислительной системы между процессами.

* Разграничение доступа различных процессов к ресурсам.

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

Вопрос № 3. Принцип действия ассоциативной кэш-памяти

В ассоциативной памяти элементы выбираются не по адресу, а по содержимому. Поясним последнее понятие более подробно. Для памяти с адресной организацией было введено понятие минимальной адресуемой единицы (МАЕ) как порции данных, имеющей индивидуальный адрес. Введем аналогичное понятие для ассоциативной памяти, и будем эту минимальную единицу хранения в ассоциативной памяти называть строкой ассоциативной памяти (СтрАП). Каждая СтрАП содержит два поля: поле тега (англ. tag - ярлык, этикетка, признак) и поле данных. Запрос на чтение к ассоциативной памяти словами можно выразить следующим образом: выбрать строку (строки), у которой (у которых) тег равен заданному значению.

Особо отметим, что при таком запросе возможен один из трех результатов:

1. имеется в точности одна строка с заданным тегом;

2. имеется несколько строк с заданным тегом;

3. нет ни одной строки с заданным тегом.

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

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

Если следующие выборки возможны из этого участка, они будут сделаны уже из КЭШа (быстро) - "КЭШ-попадание". Если же окажется, что нужного элемента в КЭШе нет, - "КЭШ-промахом". В этом случае обращение происходит к ОЗУ (медленно), и при этом одновременно заполняется очередная КЭШ-строка.

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

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

Если произошел КЭШ-промах, а в КЭШе нет свободных строк, необходимо заменить одну строку КЭШа на другую строку.

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

Вопрос № 4. Реализация прерываний от периферийных устройств, подключенных через последовательный интерфейс

Последовательный интерфейс для передачи данных в одну сторону использует одну сигнальную линию, по которой информационные биты передаются друг за другом последовательно. Такой способ передачи определяет название интерфейса и порта, его реализующего (Serial Interface и Serial Port). Последовательная передача данных может осуществляться в синхронном и асинхронном режимах.

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

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

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

Прерывание (англ. interrupt) -- сигнал, сообщающий процессору о совершении какого-либо асинхронного события. При этом выполнение текущей последовательности команд приостанавливается, и управление переда?тся обработчику прерывания, который выполняет работу по обработке события и возвращает управление в прерванный код. Виды прерываний: Аппаратные (англ. IRQ - Interrupt Request) -- события от периферийных устройств (например, нажатия клавиш клавиатуры, движение мыши, сигнал от таймера, сетевой карты или дискового накопителя) -- внешние прерывания, или события в микропроцессоре -- (например, деление на ноль) -- внутренние прерывания; Программные -- инициируются выполняемой программой, т.е. уже синхронно, а не асинхронно. Программные прерывания могут служить для вызова сервисов операционной системы.

Прерывания требуют приостановки выполнения текущего потока инструкций (с сохранением состояния) и запуска исполнения процедуры-обработчика прерывания ISR (Interrupt Service Routine). Эта процедура первым делом должна идентифицировать источник прерывания (а их может быть и несколько), затем выполнить действия, связанные с реакцией на событие. Если события должны вызывать некоторые действия прикладной программы, то обработчику прерывания следует только подать сигнал (через ОС), запускающий (или пробуждающий) поток инструкций, выполняющий эти действия. Собственно процедура ISR должна быть оптимизирована по затраченному времени. Обслуживание прерываний, особенно в защищенном режиме, в PC-совместимых компьютерах на процессорах x86 связано со значительными накладными расходами. По этой причине их число стараются сократить. Значительные хлопоты доставляет идентификация источника прерывания -- в архитектуре PC-совместимых компьютеров для этого используются традиционные, но неэффективные механизмы. В ряде случаев прерывания от устройств заменяют поллингом -- программно-управляемым опросом состояния устройств. При этом состояния множества устройств опрашивают по прерыванию от таймера.

Вопрос № 5. Что такое кольца защиты?

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

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

Оригинальная система Multics имела 8 колец защиты, но многие современные системы имеют как правило меньше. Процессор всегда знает в каком кольце исполняется код, благодаря специальным машинным регистрам.

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

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

Вопрос № 6. Что такое сегментация оперативной памяти?

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

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

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

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

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

Вопрос № 7. Основные особенности видеоданных. Матричное и графическое представление видеоинформации

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

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

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

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

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

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

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

Простота масштабирования изображения без ухудшения его качества;

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

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

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

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

Вопрос № 8. Что такое файл? Различия между файлом и каталогом

вычислительный память оперативный видеоданные

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

Фиксированное имя (последовательность символов, число или что-то иное, однозначно характеризующее файл);

Определённое логическое представление и соответствующие ему операции чтения/записи.

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

Первому случаю соответствуют операции чтения/записи потока и/или массива (то есть последовательные или с доступом по индексу), второму - команды СУБД. Промежуточные варианты - чтение и разбор всевозможных форматов файлов.

Файл - поименованная совокупность байтов произвольной длины, находящихся на носителе информации, а каталог это - поименнованное место на диске, в котором хранятся файлы. Полное имя файла может включать в себя каталоги, как C:\papka\file.txt, может и не включать C:\file.txt, а каталог это то, в чем могут быть расположены файлы: C:\papka. Каталог нельзя открыть в программе, чтобы записать в него какую-то информацию или прочитать, он для хранения файлов внутри себя, файл же наоборот - его можно открыть и отредактировать.

Вопрос № 9. Основные стадии конвейера современных процессоров

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

Выполнение команды состоит из ряда этапов:

1) чтение команды из памяти,

2) определение длины,

3) определение адреса ячейки памяти, если она используется,

4) выполнение команды,

5) сохранение результата.

В ранних процессорах все эти этапы над каждой командой проводились полностью. Конвейер позволил ускорить процесс: после того, как команда проходила один из этапов и переходила на следующий, начиналась обработка следующей команды. Это решение появилось в последних 486-х (например, в AMD 5х86-133). В Pentium впервые появился двойной конвейер. Команды смогли выполняться параллельно (кроме плавающей арифметики и команд перехода). Это позволило повысить производительность примерно на 30-35%.

Вопрос № 10. Что такое переименование регистров?

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

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

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

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

Источники

Интернет-ресурс - http://www.chinapads.ru/

Рязанцев О.І., Недзельський Д.О., Гусєва С.В. Архітектурна та структурна організація обчислювальних систем. Навчальний посібник. - Луганськ: Вид-во. СНУ ім. В.Даля, 2008.

Интернет-ресурс - http://studopedia.net/

Интернет-ресурс - http://proc.ucoz.ru/load/ustrojstvo_processora/1-1-0-2

Э.Танненбаум. Архитектура компьютера, 4-изд. СПб. Питер 2006.

Интернет-ресурс - http://193.108.240.69/moodle/file.php/5/navch_pos_OS.doc

Интернет-ресурс - http://znanija.com/task/1788585

Размещено на Allbest.ru

Подобные документы

    Классификация компьютерной памяти. Использование оперативной, статической и динамической оперативной памяти. Принцип работы DDR SDRAM. Форматирование магнитных дисков. Основная проблема синхронизации. Теория вычислительных процессов. Адресация памяти.

    курсовая работа , добавлен 28.05.2016

    История появления и развития оперативной памяти. Общая характеристика наиболее популярных современных видов оперативной памяти - SRAM и DRAM. Память с изменением фазового состояния (PRAM). Тиристорная память с произвольным доступом, ее специфика.

    курсовая работа , добавлен 21.11.2014

    Простейшая схема взаимодействия оперативной памяти с ЦП. Устройство и принципы функционирования оперативной памяти. Эволюция динамической памяти. Модуль памяти EDO-DRAM BEDO (Burst EDO) - пакетная EDO RAM. Модуль памяти SDRAM, DDR SDRAM, SDRAM II.

    реферат , добавлен 13.12.2009

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

    презентация , добавлен 18.03.2012

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

    презентация , добавлен 12.01.2009

    Хранение различной информации как основное назначение памяти. Характеристика видов памяти. Память типа SRAM и DRAM. Кэш-память или сверхоперативная память, ее специфика и области применения. Последние новинки разработок в области в оперативной памяти.

    презентация , добавлен 01.12.2014

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

    курсовая работа , добавлен 17.06.2013

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

    курсовая работа , добавлен 02.12.2009

    Общее устройство микропроцессора. Структура 64-битной подсистемы памяти. Селекция портов ввода/вывода. Особенности интерфейса микропроцессорных систем. Проектирование подсистемы памяти на базе Itanium 2. Расчёт информативности и необходимых объёмов.

    курсовая работа , добавлен 05.12.2012

    Понятие и функциональные особенности запоминающих устройств компьютера, их классификация и типы, сравнительная характеристика: ROM, DRAM и SRAM. Оценка преимуществ и недостатков каждого типа оперативной памяти, направления и пути их использования.

Глава 11

Организация памяти вычислительных систем

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

В зависимости от того, каким образом организована память многопроцессорных (многомашинных) систем, различают вычислительные системы с общей памятью (shared memory) и ВС с распределенной памятью (distributed memory). В системах с общей памятью (ее часто называют также совместно используемой или разделяемой памятью) намять ВС рассматривается как общин ресурс, и каждый из процессоров имеет полный доступ ко всему адресному пространству. Системы с обшей памятью называют сильно связанными (closely coupled systems). Подобное построение вычислительных систем имеет место как в классе SIMD, так и в классе MIMD. Иногда, чтобы подчеркнуть это обстоятельство, вводят специальные подклассы, используя для их обозначения аббревиатуры SM-SIMD (Shared Memory SIMD) и SM-MIMD (Shared Memory MIMD).

В варианте с распределенной памятью каждому из процессоров придается собственная память. Процессоры объединяются в сеть и могут при необходимости обмениваться данными, хранящимися в их памяти, передавая друг другу так называемые сообщения. Такой вид ВС называют слабо связанными (loosely coupled systems). Слабо связанные системы также встречаются как в классе SIMD, так и В классе MIMD, и иной раз, чтобы подчеркнуть данную особенность, вводят подклассы DM-SIMD (Distributed Memory SIMD) и DM-MIMD (Distributed Memory MIMD).

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

Различие между общей и распределенной памятью - это разницу в структуре виртуальной памяти, то есть в том, как память выглядит со стороны процессора. Физически почти каждая система памяти разделена на автономные компоненты доступ к которым может производиться независимо. Общую память от распределенной отлипает то, каким образом подсистема памяти интерпретирует поступивший от процессора адрес ячейки. Для примера положим, что процессор выполняет команду load RO, i, означающую «Загрузить регистр R0 содержимым ячейки i». В случае общей памяти i - это глобальный адрес, и для любого процессора указывает на одну и ту же ячейку. В распределенной системе памяти i - это локальный адрес Если два процессора выполняют команду load RO, i, то каждый из них обращается к i-й ячейке в своем локальной памяти, то есть к разным ячейкам, и в регистры R0 могут быть загружены неодинаковые значения.

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

Память с чередованием адресов

Физически память вычислительной системы состоит из нескольких модулей (банков), при этом существенным вопросом является то, как в этом случае распределено адресное пространство (набор всех адресов, которые может сформировать процессор). Один из способов распределения виртуальных адресов по модулям памяти состоит в разбиении адресного пространства на последовательные блоки. Если память состоит из п банков, то ячейка с адресом i при поблочном разбиении будет находиться в банке с номером i/ n. В системе памяти с чередованием адресов (interleaved memory) последовательные адреса располагаются в различных банках: ячейка с адресом i находится в банке с номером i mod п. Пусть, например, память состоит из четырех банков, по 256 байт в каждом. В схеме, ориентированной на блочную адресацию, первому банку будут выделены виртуальные адреса 0-255, второму - 256-511 и т. д. В схеме с чередованием адресов последовательные ячейки в первом банке будут иметь виртуальные адреса 0, 4, 8, .... во втором банке - 1, 5, 9 и т. д. (рис. 11.1, а).

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

https://pandia.ru/text/78/264/images/image002_61.jpg" width="62" height="15"> Интервал между элементами называют шагом по индексу или «страйдом» (stride). Одним из интересных применений этого свойства может служить Доступ к матрицам. Если шаг по индексу на единицу больше числа строк в матрице, одиночный запрос на доступ к памяти возвратит все диагональные элементы матрицы (рис. 11.1,б). Ответственность за то, чтобы все извлекаемые элементы матрицы располагались в разных банках, ложится на программиста.

Модели архитектуры памяти вычислительных систем

В рамках как совместно используемой, так и распределенной памяти реализуется несколько моделей архитектур системы памяти.

DIV_ADBLOCK84">

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

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

К сожалению, архитектура UMA не очень хорошо масштабируется. Наиболее распространенные системы содержат 4-8 процессоров, значительно реже 32-64 процессора. Кроме того, подобные системы нельзя отнести к отказоустойчивым, так как отказ одного процессора или модуля памяти влечет отказ всей ВС.

Другим подходом к построению ВС с общей памятью является неоднородный доступ к памяти, обозначаемый как NUM A (Non-Uniform Memory Access), Здесь по-прежнему фигурирует единое адресное пространство, но каждый процессор имеет локальную память. Доступ процессора к собственной локальной памяти производится напрямую, что намного быстрее, чем доступ к удаленной памяти через коммутатор или сеть. Такая система может быть дополнена глобальной памятью тогда локальные запоминающие устройства играют роль быстрой кэш-памяти для глобальной памяти. Подобная схема может улучшить производительность ВС, по не в состоянии неограниченно отсрочить выравнивание прямой производительности. При наличии у каждого процессора локальной кэш-памяти (рис. 11.3,6) существует высокая вероятность (р > 0,9) того, что нужные команда или данные уже находятся в локальной памяти. Разумная вероятность попадания в локальную память существенно уменьшает число обращений процессора к глобальной памяти и, таким образом, ведет к повышению эффективности. Место излома кривой производительности (верхняя кривая на рис. 11.3, в), соответствующее точке, в которой добавление процессоров еще остается эффективным, теперь перемещается в область 20 процессоров, а тонка, где кривая становится горизонтальной, - в область 30 процессоров.

В рамках концепции NUMA реализуется несколько различных подходов, обозначаемых аббревиатурами СОМА, CC- NUMA и NCC- NUMA.

В архитектуре только с кэш-памятью (СОМА, Cache Only Memory Architecture) локальная память каждого процессора построена как большая кэш-память для быстрого доступа со стороны «своего» процессора . Кэши всех процессоров в совокупности рассматриваются как глобальная память системы. Собственно глобальная память отсутствует. Принципиальная особенность концепции СОМА выражается в динамике. Здесь данные не привязаны статически к определенному модулю памяти и не имеют уникального адреса, остающегося неизменным в течение всего времени существования переменной. В архитектуре СОМА данные переносятся в кэш-память того процессора, который последним их запросил, при этом переменная не фиксирована уникальным адресом и в каждый момент времени может размещаться в любой физической ячейке. Перенос данных из одного локального кэша в другой не требует участия в этом процессе операционной системы, но подразумевает сложную и дорогостоящую аппаратуру управления памятью. Для организации такого режима используют так называемые каталоги кэшей. Отметим также, что последняя копия элемента данных никогда из кэш-памяти не удаляется.

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

Модель кэш-когерентного доступа к неоднородной памяти (CC-NUMA, Сасhe Coherent Non-Uniform Memory Architecture) принципиально отличается от модели СОМА. В системе CC-NUMA используется не кэш-память, а обычная физически распределенная память. Не происходит никакого копирования страниц или данных между ячейками памяти. Нет никакой программно реализованной передачи сообщений. Существует просто одна карта памяти, с частями, физически связанными медным кабелем, и «умные» аппаратные средства. Аппаратно реализованная кэш-когерентность означает, что не требуется какого-либо программного обеспечения для сохранения множества копий обновленных данных или их передачи. Со всем этим справляется аппаратный уровень. Доступ к локальным модулям памяти в разных узлах системы может производиться одновременно и происходит быстрее, чем к удаленным модулям памяти.

Отличие модели с кэш-некогерентным доступом к неоднородной памяти (NCC-NUMA, Non-Cache Coherent Non-Uniform Memory Architecture) от CC-NUMA очевидно из названия. Архитектура памяти предполагает единое адресное пространство, но не обеспечивает согласованности глобальных данных на аппаратном уровне. Управление использованием таких данных полностью возлагается на программное обеспечение (приложения или компиляторы). Несмотря на это обстоятельство, представляющееся недостатком архитектуры, она оказывается весьма полезной при повышении производительности вычислительных систем с архитектурой памяти типа DSM, рассматриваемой в разделе «Модели архитектур распределенной памяти».

В целом, ВС с общей памятью, построенные по схеме NUMA, называют архитектурами с виртуальной общей памятью (virtual shared memory architectures). Данный вид архитектуры, в частности CC-NUMA, в последнее время рассматривается как самостоятельный и довольно перспективный вид вычислительных систем класса MIMD, поэтому такие ВС ниже будут обсуждены более подробно.

Модели архитектур распределенной памяти

В системе с распределенной памятью каждый процессор обладает собственной памятью и способен адресоваться только к ней. Некоторые авторы называют этот тип систем многомашинными ВС или мультикомпъютерами, подчеркивая тот факт, что блоки, из которых строится система, сами по себе являются небольшими вычислительными системами с процессором и памятью. Модели архитектур с распределенной памятью принято обозначать как архитектуры без прямого доступа к удаленной памяти (NORMA, No Remote Memory Access). Такое название следует из того факта, что каждый процессор имеет доступ только к своей локальной памяти. Доступ к удаленной памяти (локальной памяти другого процессора) возможен только путем обмена сообщениями с процессором, которому принадлежит адресуемая память.

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

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

· требуется время для того, чтобы сформировать и переслать сообщение от одно! процессора к другому;

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

Структура системы с распределенной памятью приведена на рис. 11.4. В левой! части (рис. 11.4, а) показан один процессорный элемент (ПЭ). Он включает в себя) собственно процессор (Р), локальную память (М) и два контроллера ввода/вывод (Ко и КД В правой части (рис. 11.4, б) показана четырехпроцессорная система, иллюстрирующая, каким образом сообщения пересылаются от одного процессор к другому. По отношению к каждому ПЭ все остальные процессорные элементы можно рассматривать просто как устройства ввода/вывода. Для посылки сообщения в другой ПЭ процессор формирует блок данных в своей локальной памяти и извещает свой локальный контроллер о необходимости передачи информации на внешнее устройство. По сети межсоединений это сообщение пересылается на приемный контроллер ввода/вывода принимающего ПЭ. Последний находит место для сообщения в собственной локальной памяти и уведомляет процессор-источник о получении сообщения.

DIV_ADBLOCK89">

Интересный вариант системы с распределенной памятью представляет собой; модель распределенной совместно используемой памяти (DSM, Distribute Shared Memory), известной также и под другим названием архитектуры с неоднородным доступом к памяти и программным обеспечением когерентности (SC-NUMA, Software-Coherent Non-Uniform Memory Architecture). Идея этой модели состоит в том, что ВС, физически будучи системой с распределенной памятью, благодаря операционной системе представляется пользователю как система с общей памятью. Это означает, что операционная система предлагает пользователю единое адресное пространство, несмотря на то что фактическое обращение к памяти «чужого» компьютера ВС по-прежнему обеспечивается путем обмена сообщениями.

Мультипроцессорная когерентность кэш - памяти

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

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

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

В решении проблемы когерентности выделяются два подхода: программный и аппаратный. В некоторых системах применяют стратегии, совмещающие оба подхода.

Программные способы решения проблемы когерентности

Программные приемы решения проблемы когерентности позволяют обойтись без дополнительного оборудования или свести его к минимуму .

Протокол Berkeley. Протокол Berkeley был применен в мультипроцес-сорной системе Berkeley, построенной на базе RISC-процессоров.

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

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

Прежде всего, каждый раз, когда какой-либо процессор производит запись в свою кэш-память, изменяемая строка переводится в состояние «измененная, частная» (PD, Private Dirty). Далее, если строка является совместно используемой, на шину посылается сигнал аннулирования, и во всех локальных кэшах, где есть копия данного блока данных, эти копии переводятся в состояние «недействительная» (I, Invalid). Если при записи имел место промах, процессор получает копию блока из кэша текущего хозяина запрошенного блока. Лишь после этих действий процессор производит запись в свой кэш.

При кэш-промахе чтения процессор посылает запрос владельцу блока, с тем чтобы получить наиболее свежую версию последнего, и переводит свою новую копию в состояние «только для чтения» (RO, Read Only). Если владельцем строки был другой процессор, он помечает свою копию блока как «разделяемую измененную» (SD, Shared Dirty).

Диаграмма состояний протокола Berkeley показана на рис. 11.10.

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







Попадание при чтении

Рис. 11.10. Протокол Berkeley

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

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

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

Рис. 11.11. Протокол Illinois

Каждый раз когда какой-либо процессор производит запись в свою кэш-память, изменяемая строка переводится в состояние «измененная частная» (PD, Private Dirty), Если блок данных является совместно используемым, на шину посылается сигнал аннулирования и во всех локальных кэшах, где есть копия данного блока, эти копии переводятся в состояние «недействительная» (I, Invalid). Если при записи случился промах, процессор получает копию из кэша текущего владельца запрошенного блока. Лишь после означенных действий процессор производит запись в свой кэш. Как видно, в этой части имеет место полное совпадение с протоколом Berkeley.

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

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

Протокол Firefly. Протокол был предложен Такером и др. и реализован в мультипроцессорной системе Firefly Multiprocessor Workstation, разработанной в исследовательском центре Digital Equipment Corporation.

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

https://pandia.ru/text/78/264/images/image018_2.jpg" width="491 height=316" height="316">

Рис. 11.13. Протокол Dragon

Протокол MESI. Безусловно, среди известных протоколов наблюдения сам популярным является протокол MESI (Modified/Exclusive/Shared/Invalid). Протокол MESI широко распространен в коммерческих микропроцессорных системах, например на базе микропроцессоров Pentium и PowerPC. Так, его можно обнаружить во внутреннем кэше и контроллере внешнего кэша i82490 микропроцессора Pentium, в процессоре i860 и контроллере кэш-памяти МС88200 фирмы Моtorola.

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

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

Недействительная (I, Invalid) - кэш-строка, помеченная как недействительная, не содержит достоверных данных и становится логически недоступной.

Рис. 11.15. Последовательность смены состояний в протоколе MESI: а - процессор 1 читает х;

б - процессор 2 читает х; в - процессор 1 производит первую запись в х;

г - процессор 1 производит очередную запись в х

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

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

Когда процессор делает запрос на запись в строку, отсутствующую в его локальной кэш-памяти (промах при записи), перед загрузкой в кэш-память строка должна быть считана из основной памяти (ОП) и модифицирована. Прежде чем процессор сможет загрузить строку, он должен убедиться, что в основной памяти действительно находится достоверная версия данных, то есть что в других кэшах отсутствует модифицированная копия данной строки. Формируемая в этом случае последовательность операций носит название чтения с намерением модифика ции (RWITM, Read With Intent To Modify). Если в одном из кэшей обнаружилась копия нужной строки, причем в состоянии М, то процессор, обладающий этой копией, прерывает RWITM-последовательность и переписывает строку в ОП, после чего меняет состояние строки в своем кэше на I. Затем RWITM-последовательность возобновляется и делается повторное обращение к основной памяти для считывания обновленной строки. Окончательным состоянием строки будет М, при котором ни в ОП, ни в других кэшах нет еще одной достоверной ее копии. Если копия строки существовала в другом кэше и не имела состояния М, то такая копия аннулируется и доступ к основной памяти производится немедленно.

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

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

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




Рис. 11.16. Переход из состояния Е в состояние S в протоколе MESI: а- процессор 2

читает х; б - процессор 1 производит обратную запись х" в основную память;

я - процессор 2 читает х" из основной памяти

состоянии М, поэтому он блокирует операцию чтения от процессора 2. Затем процессор 1 переписывает строку, содержащую х", в ОП и освобождает процессор 2, чтобы тот мог повторить доступ к основной памяти. Теперь процессор 2 получает строку, содержащую х", и загружает ее в свою кэш-память. Обе копии помечаются как S.

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

Протоколы на основе справочника

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

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

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

Для каждой строки общего пользования, копия которой может быть помещена в кэш-память, в справочнике выделяется одна запись, хранящая указатели на копии данной строки. Кроме того, в каждой записи выделен один бит модификации (D), показывающий, является ли копия «грязной» (D = 1 - dirty) или «чистой» (D = 0 - clean), то есть изменялось ли содержимое строки в кэш-памяти после того, как она была туда загружена. Этот бит указывает, имеет ли право процессор производить запись в данную строку.

В настоящее время известны три способа реализации протоколов обеспечения когерентности кэш-памяти на основе справочника: полный справочник, ограниченные справочники и сцепленные справочники.

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


Рис. 11.17. Протокол обеспечения когерентности кэш-памяти с полным справочником

В системе из N процессоров каждая запись справочника будет содержать N однобитовых указателей. Если в соответствующей локальной кэш-памяти присутствует копия данных, бит-указатель устанавливается в 1, иначе - в 0. Схема с полным справочником показана на рис. 11.17. Здесь предполагается, что копия строки имеется в каждом кэше. Каждой строке придаются два индикатора состояния: бит достоверности (V, Valid) и бит владения (Р, Private). Если информация в строке корректна, ее V-бит устанавливается в 1. Единичное значение Р-бита указывает, что данному процессору предоставлено право на запись в соответствующую строку своей локальной кэш-памяти.

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

Основные проблемы протокола полного справочника связаны с большим количеством записей. Для каждой ячейки в справочнике системы из N процессоров требуется N+ 1 бит, то есть с увеличением числа процессоров коэффициент сложности возрастает линейно. Протокол полного справочника допускает наличие в каждом локальном кэше копий всех совместно используемых ячеек. На практике такая возможность далеко не всегда остается востребованной - в каждый конкретный момент обычно актуальны лишь одна или несколько копий. В протоколе с ограниченными справочниками копии отдельной строки вправе находиться только в ограниченном числе кэшей - одновременно может быть не более чем п копий строки, при этом число указателей в записях справочника уменьшается до п (п < N ). Чтобы однозначно идентифицировать кэш-память, хранящую копию, указатель вместо одного бита должен состоять из log2 N бит, а общая длина указателей в каждой записи справочника вместо N бит будет равна п log2 N бит. При постоянном значении п темпы роста коэффициента сложности ограниченного справочника по мере увеличения размера системы ниже, чем в случае линейной зависимости.

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

Метод сцепленных справочников также имеет целью сжать объем справочника. В нем для хранения записей привлекается связный список, который может быть реализован как одно связный (однонаправленный) и двусвязный (двунаправленный).

Рис. 11.18. Протокол обеспечения когерентности кэш-памяти со сцепленным справочником

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

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

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

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

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

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

Протокол Archibald. Схема справочника Archibald - это пара замысловатых схем для иерархически организованных сетей процессоров. С детальным описанием этого протокола можно ознакомиться в .

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

Контрольные вопросы

1. Проанализируйте влияние особенностей ВС с общей памятью и ВС с распределенной памятью на разработку программного обеспечения. Почему эти ВС называют соответственно сильно связанными и слабо связанными?

2. Поясните идею с чередованием адресов памяти. Из каких соображений выбирается механизм распределения адресов? Как он связан с классом архитектуры ВС?

3. Дайте сравнительную характеристику однородного и неоднородного доступов
к памяти.

4. В чем заключаются преимущества архитектуры СОМА?

5. Проведите сравнительный анализ моделей с кэш-когерентным и кэш-некогерентным доступом к неоднородной памяти.

6. Сформулируйте достоинства и недостатки архитектуры без прямого доступа к удаленной памяти.

7. Объясните смысл распределенной и совместно используемой памяти.

8. Разработайте свой пример, иллюстрирующий проблему когерентности кэш-памяти.

9. Охарактеризуйте особенности программных способов решения проблемы когерентности, выделите их преимущества и слабые стороны.

10. Сравните методики записи в память с аннулированием и записи в память с трансляцией, акцентируя их достоинства и недостатки.

11. Дайте сравнительную характеристику методов для поддержания когерентности в мультипроцессорных системах.

12. Выполните сравнительный анализ известных вам протоколов наблюдения.

13. Какой из протоколов наблюдения наиболее популярен? Обоснуйте причины повышенного к нему интереса.

14. Дайте развернутую характеристику протоколов когерентности на основе справочника и способов их реализации. В чем суть отличий этих протоколов от протоколов наблюдения?

Организация подсистемы памяти в ПК

Запоминающие устройства (ЗУ) подсистемы памяти ПК можно выстроить в следующую иерархию (табл. 9.1):

Таблица 9.1. Иерархия подсистемы памяти ПК
Тип ЗУ 1985 г. 2000 г.
Время выборки Типичный объем Цена / байт Время выборки Типичный объем Цена / байт
Сверхоперативные ЗУ (регистры) 0,2 5 нс 16/32 бит $ 3 - 100 0,01 1 нс 32/64/128 бит $ 0,1 10
Быстродействующее буферное ЗУ (кэш) 20 100 нс 8Кб - 64Кб ~ $ 10 0,5 - 2 нс 32Кб 1Мб $ 0,1 - 0,5
Оперативное (основное) ЗУ ~ 0,5 мс 1Мб - 256Мб $ 0,02 1 2 нс 20 нс 128Мб - 4Гб $ 0,01 0,1
Внешние ЗУ (массовая память) 10 - 100 мс 1Мб - 1Гб $ 0,002 - 0,04 5 - 20 мс 1Гб - 0,5Тб $ 0,001 - 0,01

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

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

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

Каждой ячейке оперативной памяти присвоен уникальный адрес. Организационные методы распределения памяти предоставляют программистам возможность эффективного использования всей компьютерной системы. К таким методам относят сплошную ("плоскую") модель памяти и сегментированную модель памяти. При использовании сплошной модели (flat model) памяти программа оперирует единым непрерывным адресным пространством линейным адресным пространством, в котором ячейки памяти нумеруются последовательно и непрерывно от 0 до 2n-1, где n - разрядность ЦП по адресу. При использовании сегментированной модели (segmented model) для программы память представляется группой независимых адресных блоков, называемых сегментами. Для адресации байта памяти программа должна использовать логический адрес, состоящий из селектора сегмента и смещения. Селектор сегмента выбирает определенный сегмент, а смещение указывает на конкретную ячейку в адресном пространстве выбранного сегмента.



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

Кроме реализации системы виртуальной памяти внешние ЗУ используются для долговременного хранения программ и данных в виде файлов.

Кэш-память

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



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

Для согласования содержимого кэш-памяти и оперативной памяти используют три метода записи:

  • Сквозная запись (write through) - одновременно с кэш-памятью обновляется оперативная память.
  • Буферизованная сквозная запись (buffered write through) - информация задерживается в кэш-буфере перед записью в оперативную память и переписывается в оперативную память в те циклы, когда ЦП к ней не обращается.
  • Обратная запись (write back) - используется бит изменения в поле тега, и строка переписывается в оперативную память только в том случае, если бит изменения равен 1.

Как правило, все методы записи, кроме сквозной, позволяют для увеличения производительности откладывать и группировать операции записи в оперативную память.

В структуре кэш-памяти выделяют два типа блоков данных:

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

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

  • полностью ассоциативный кэш;
  • кэш прямого отображения;
  • множественный ассоциативный кэш.

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

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

Увеличить изображение
Рис. 9.1. Полностью ассоциативный кэш 8х8 для 10-битного адреса

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

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

Увеличить изображение
Рис. 9.2. Кэш прямого отображения 8х8 для 10-битного адреса

Несмотря на очевидные недостатки, данная технология нашла успешное применение, например, в МП Motorola MC68020, для организации кэша инструкций первого уровня (рис. 9.3). В данном микропроцессоре реализован кэш прямого отображения из 64 строк по 4 байт. Тег строки, кроме 24 бит, задающих адрес кэшированного блока, содержит бит значимости, определяющий действительность строки (если бит значимости 0, данная строка считается недействительной и не вызовет кэш-попадания). Обращения к данным не кэшируются.

Увеличить изображение
Рис. 9.3. Схема организации кэш-памяти в МП Motorola MC68020

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

Увеличить изображение
Рис. 9.4. Двухвходовый ассоциативный кэш 8х8 для 10-битного адреса

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

Таблица 9.2. Характеристики подсистемы кэш-памяти у ЦП IA-32
Intel486 Pentium Pentium MMX P6 Pentium 4
L1 кэш команд
Тип 4-вх. ассоц. 2-вх. ассоц. 4-вх. ассоц. 4-вх. ассоц. 8-вх. ассоц.
Размер строки, байт -
Общий объем, Кбайт 8/16 8/16 12Кmops
L1 кэш данных
Тип Общий с кэш инструкций 2-вх. ассоц. 4-вх. ассоц. 2/4-вх. ассоц. 4-вх. ассоц.
Размер строки, байт
Общий объем, Кбайт 8/16
L2 кэш
Тип Внешний внешний 4-вх. ассоц. 4-вх. ассоц. 8-вх. ассоц.
Размер строки, байт
Общий объем, Кбайт 256/512 128-2048 256/512

Примечания: В Intel-486 используется единый кэш команд и данных первого уровня. В Pentium Pro L1 кэш данных - 8 Кбайт 2-входовый ассоциативный, в остальных моделях P6 - 16 Кбайт 4-входовый ассоциативный. В Pentium 4 вместо L1 кэша команд используется L1 кэш микроопераций (кэш трассы).

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

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

Именно поэтому все последние модели IA-32, начиная с Pentium, для организации кэш-памяти первого уровня используют гарвардскую архитектуру.

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

T ср = (T hit x R hit) + (T miss x (1 R hit))

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

Очевидно, что чем ближе значение R hit к 1, тем ближе значение T ср к T hit . Частота попаданий определяется в основном архитектурой кэш-памяти и ее объемом. Влияние наличия и отсутствия кэш-памяти и ее объема на рост производительности ЦП показано в табл. 9.3.

ОРГАНИЗАЦИЯ ПАМЯТИ В ВЫЧИСЛИТЕЛЬНЫХ МАШИНАХ

Назначение, основные параметры и

Классификация видов памяти

Устройства памяти (запоминающие устройства) ВМ предназначены для записи, хранения и считывания информации, представленной в цифровой форме /2,3/. Устройства памяти, как и процессоры, оперируют с двумя видами информации – программами и данными, поэтому характеристики памяти во многом определяют производительность и функциональные возможности ВМ.

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

Основными параметрами, характеризующими устройства памяти, являются информационная емкость (объем), быстродействие, энергопотребление и стоимость /2,5,8/.

Информационная емкость (объем) устройства памяти определяется максимальным количеством хранимой информации и измеряется в байтах, Кбайтах, Мбайтах, Гбайтах и Тбайтах.

1 Кбайт = 2 10 байт; 1Мбайт = 2 20 байт; 1Гбайт = 2 30 байт и 1Тбайт = 2 40 байт.

Быстродействие памяти характеризуется следующими основными параметрами:

временем выборки (доступа) t В, определяемым временным интервалом между моментами подачи сигнала выборки (начала цикла чтения) и получением считанных данных на выходе памяти;

длительностью цикла обращения t Ц , который определяется минимально допустимым временным интервалом между следующими друг за другом обращениями к памяти. Учитывая, что под обращением к памяти понимается запись или чтение, иногда разделяют длительность цикла чтения t Ц.ЧТ . и длительность цикла записи t Ц.ЗП. для видов памяти, у которых эти длительности циклов различны, т.е. t Ц.ЧТ. ≠ t Ц.ЗП .

В общем случае цикл обращения состоит из фазы выборки (доступа) и фазы регенерации (восстановления) памяти, поэтому t Ц > t В.

Быстродействие памяти можно также характеризовать скоростью передачи записываемых или считываемых данных и измерять в Мбайтах/сек.

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

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

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

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

По физическому принципу работы память классифицируется на электронную, магнитную, оптическую, магнитно – оптическую.

Электронная память выполняется на полупроводниковых элементах и реализуется в виде БИС. Электронная память разделяется на статическую и динамическую.

В БИС статической памяти в качестве элементарных ячеек памяти применяются статические триггеры на биполярных или полевых транзисторах. Как известно, число устойчивых состояний триггера равно двум, что позволяет использовать его для хранения единицы информации – бита. Ячейки памяти для хранения байт и слов используют соответственно 8 и 16 триггеров.

В БИС динамической памяти в качестве элементарных ячеек памяти применяются электрические конденсаторы. Наличие заряда соответствует хранению логической «1», отсутствие заряда – хранению логического «0». В качестве запоминающих конденсаторов используются либо межэлектродные емкости МОП транзисторов, либо специально созданные в кристалле БИС МОП конденсаторы. Фрагмент структурной схемы динамической памяти, содержащий две ячейки 1 и 2, изображен на рис.6.1.

Каждая элементарная ячейка памяти содержит запоминающий МОП конденсатор С (десятые доли пФ) и транзисторный ключ Т, подключающий этот конденсатор к шине данных. Затвор транзисторного МОП – ключа соединен с соответствующим выходом дешифратора адреса. При выборе ячейки ключ Т открывается и подключает конденсатор С к шине данных. Далее, в зависимости от вида команды: запись (WR) или чтение (RD) - через соответствующий усилитель производится запись входных данных (DI) или чтение выходных данных (DO).

Динамическая память по сравнению со статической существенно проще, дешевле и обеспечивает очень высокую степень интеграции, т.е. более высокую удельную емкость. Но по сравнению со статической динамическая память обладает меньшим быстродействием и требует периодической регенерации (восстановления) информации в элементарных ячейках. Другими словами, необходимо периодически восстанавливать заряд на запоминающих конденсаторах С, которые с течением времени саморазряжаются, т.е. «теряют» информацию. Для этого через каждые несколько миллисекунд (mсек) производятчтение информации из ячеек памяти и затем повторную запись информации, что позволяет восстанавливать заряд на запоминающих конденсаторах C. Необходимость организации периодических циклов регенерации (Refresh Cycles) несколько усложняет управление динамической памятью.

Для типовых модулей электронной памяти время выборки t В составляет единицы – десятки наносекунд (nсек ), а информационная емкость – десятки – сотни Мбайт.

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

Магнитная память основана на наличии у ряда магнитных материалов (например, окиси железа) двух устойчивых состояний остаточного намагничивания противоположного знака. Такие магнитные материалы характеризуются прямоугольной петлей гистерезиса B = f(H) , и из них выполняется рабочий магнитный слой, наносимый на поверхность различных подвижных носителей – магнитных дисков. Для записи и чтения информации используются магнитные головки, представляющие собой миниатюрные катушки индуктивности, намотанные на магнитном сердечнике с зазором. При записи магнитная головка намагничивает участок магнитного слоя, проходящий под рабочим зазором, в направлении, определяемом направлением протекающего тока. При считывании намагниченные участки поверхности проходят около индуктивной головки считывания и наводят в ней импульсы э.д.с. Устройства памяти, использующие этот принцип, имеют очень низкую удельную стоимость хранения информации, являются энергонезависимыми, но, являясь электромеханическими, по быстродействию, надежности и энергопотреблению существенно уступают электронной памяти. Для НЖМД скорость передачи данных достигает десятков Мбайт/сек, а информационная емкость – сотен Гбайт.



В оптической памяти для хранения информации используется изменение оптических свойств (в основном, степени отражения) поверхности носителя. Оптический носитель выполняется в виде диска (Compact Disk - CD), отражающий слой (металлическое напыление) которого покрыт слоем органического красителя. При записи луч лазера модулируется потоком записываемых бит и в определенных местах дорожки выжигает ямки в слое красителя. За счет разницы коэффициента отражения ямок и невыжженных участков поверхности при считывании возникает модуляция яркости отраженного луча, которая кодирует считываемую с CD информацию. Производятся различные типы оптических CD дисков: CD-ROM (Read Only Memory) – позволяющие только считывать записанную матричным способом информацию, CD-R (Recordable) – допускающие хотя бы однократную запись на диск и многократное считывание, CD-RW (ReWritable) – позволяющие многократную перезапись на диск (и конечно же, считывание). Оптические диски дешевы и имеют значительную (до одного Гбайта) информационную емкость, являются энергонезависимыми и легко сменяемыми, но по быстродействию, надежности и энергопотреблению, как и магнитные диски, существенно уступают электронной памяти.

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

ОЗУ предназначено для хранения программ (системных, прикладных) и данных, непосредственно используемых ЦП в текущее время. Длительности циклов чтения и записи для оперативной памяти, как правило, одинаковы. Обычно в качестве ОЗУ применяется динамическая память объемом до единиц Гбайт в зависимости от назначения и области применения МС.

СОЗУ или кэш-память (Cache Memory) – это небольшого объема быстродействующая память, у которой длительность цикла обращения t Ц. меньше длительности машинного цикла процессора. Поэтому при обращении к кэш-памяти не требуется вводить такты ожидания процессора в машинные циклы обращения к памяти. Кэш-память является буферной памятью между ОЗУ и ЦП и выполняется на базе статической памяти. Кэш хранит копии блоков (страниц) программ и данных тех областей ОЗУ, к которым происходили последние обращения, а также каталог – список их текущего соответствия областям ОЗУ. При каждом обращении к оперативной памяти контроллер кэш-памяти по каталогу проверяет, есть ли действительная копия затребованного блока (страницы) в кэш. Если копия там есть, то это случай кэш-попадания , и обращение за данными или кодом происходит только к кэш-памяти. Если действительной копии там нет, то это случай кэш-промаха , и в кэш записывается требуемый блок (страница) из ОЗУ, причем запись производится на место предварительно удаленного из кэш в ОЗУ наименее актуального блока (страницы), т.е. блока информации, число обращений к которому было наименьшим. За счет присущих программам и данным таких фундаментальных свойств, как пространственная и временная локальности /2,7,13/ число кэш-попаданий во много раз превышает число кэш-промахов даже при небольших (единицы – десятки Кбайт) объемах кэш памяти. Поэтому использование кэш-памяти значительно повышает производительность ВМ. Обычно кэш реализуется по трехуровневой схеме: первичный кэш (L1 Cache), объемом десятки Кбайт, и вторичный кэш (L2 Cache), объемом сотни Кбайт, размещается в кристалле МП, кэш третьего уровня (L3 Cache), единицы Мбайт устанавливают на системной плате или в корпусе МП.

ПЗУ – это электронная энергонезависимая память, которая применяется для хранения неизменяемой или редко изменяемой в течении времени эксплуатации ВМ информации: системного ПО (BIOS), прикладного ПО для встраиваемых и бортовых ВМ, наборов таблиц, параметров конфигурации различных систем и т.п. Основным режимом работы ПЗУ является чтение, что и обуславливает другое общее название такой памяти ROM (Read Only Memory). Запись информации в ПЗУ, называемая программированием, обычно существенно сложнее, требует больших затрат времени и энергии, чем чтение.

ВЗУ предназначены для энергонезависимого хранения больших объемов определенным образом структурированной информации: файлов, баз данных, архивов. Характерной особенностью внешней памяти является то, что ее устройства оперируют блоками информации, а не байтами или словами, как это позволяет оперативная память. Кроме того, процессор может осуществлять доступ к ВЗУ только через оперативную память. В качестве ВЗУ обычно используется дисковые (НЖМД, CD) накопители, позволяющие хранить сотни Гбайт информации.

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

Способ организации памяти определяется методом размещения и поиска информации в ЗУ. По этому признаку различают адресную, ассоциативную и стековую организацию памяти.

В адресной памяти для обращения к ячейкам памяти используются их адреса , под которыми понимаются коды номеров ячеек памяти. Адресная организация памяти позволяет обращаться к ячейкам памяти по их адресам в произвольном порядке, причем длительность цикла обращения является одинаковой для всех ячеек независимо от адреса. Поэтому для названия такой память также используется термин «запоминающие устройства с произвольной выборкой (ЗУПВ)» или RAM (Random Access Memory). Адресную организацию памяти имеют, например, ОЗУ и ПЗУ.

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

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

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

Стековая память (Stack), так же как и ассоциативная является безадресной. Стек можно рассматривать как совокупность ячеек, образующих одномерный массив, в котором соседние ячейки связаны друг с другом разрядными цепями передачи слов. В этой памяти запись и чтение производятся по правилу «последнее записанное считывается первым» или «Last Input First Output (LIFO)». Поэтому стек называют «магазинной» памятью с обратным порядком считывания. Обычно стек организуют в оперативной памяти. Количество слов в стеке определяется регистром-указателем стека SP, а запись в стек и чтение из него производится соответственно командами PUSH и POP. Широкое применение стековая память находит, как уже было рассмотрено выше, при обработке прерываний и вызове подпрограмм.

Наряду со стековой памятью большое распространение получила «магазинная» память с прямым порядком считывания, т.е. «первое записанное считывается первым» или «First Input First Output (FIFO)». Эта память называется буферной и, как и стек, организуется в ОЗУ.

Понравилась статья? Поделиться с друзьями: