Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Высокопроизводительные системы и подсистемы памяти. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
11.08.2026
Размер:
503 Кб
Скачать

фективна благодаря правилу 90/10 (см. пп. 4.2), если объема кэшпамяти достаточно для того, чтобы данные длительное время оставались в кэш-памяти.

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

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

Для обеспечения когерентности в сложных системах с несколькими кэш-памятями разработан и стандартизован протокол обеспечения когерентности, называемый MESI по названиям состояний, в которых может находиться кэш-строка: Modified, Exclusive, Shared,

Invalid.

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

Shared. Строка в кэш-памяти содержит достоверные данные и совпадает с содержимым основной памяти. Обращение к кэшпамяти не приведет к активизации внешней шины.

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

41

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

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

4.9. TLB и виртуальная память

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

Другая причина введения виртуальной памяти – стремление избавить прикладного программиста от учета и распределения ОЗУ. При виртуальной организации памяти процессор комбинацией программных и аппаратных средств преобразует виртуальный адрес в физический. Этот процесс называется адресной трансляцией.

42

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

Существует два уровня иерархии физической памяти: диск и ОЗУ. Операционная система управляет виртуальной памятью и определяет порядок ее использования. Преобразование адресов идет под контролем операционной системы. Виртуальная память разделяется на два класса: блоки фиксированного размера – страницы, и блоки с изменяемыми размерами – сегменты. Как виртуальное, так и физическое пространство используют страницы памяти для адресации. Размер страниц в современных микропроцессорах от 4 до 64 Кбайт, хотя нет причин ограничить этот размер. Наиболее часто используется размеры 4 и 8 Кбайт. Адресное пространство размером 4 Гбайта можно разделить на 1048576 страниц по 4 Кбайта, для каждой из которых возможно независимое соответствие физическим страницам. Размер сегментов может быть от 1 байта до всего объема памяти.

Устройство, преобразующее виртуальные адреса в физические, называется устройством управления памятью (Memory Management Unit – MMU).

На рис. 4.8 показана структурная схема преобразования виртуального адреса в физический для 32-разрядного микропроцессора i486.

Младшие адреса физического и виртуального адресов совпадают и являются размером страницы. Из старших 20 разрядов виртуального адреса вычисляется физический в два этапа. Из регистра CR3 микропроцессора берется адрес начала каталога разделов емкостью 1024 слова, к нему добавляются старшие 10 разрядов виртуального адреса, и это является начальным адресом таблицы страниц. К этому адресу добавляются 10 разрядов виртуального адреса А12-А21, результатом является адрес старших разрядов физического адреса А12-А31. Полученные старшие адреса и младшие 12 разрядов виртуального адреса составляют физический адрес.

43

На рис. 4.9 показана структурная схема преобразования виртуального адреса в физический для 64-разрядого микропроцессора

Alpha.

Виртуальный адрес

А31

А22

А21

А12

А11

А0

Каталог разделов

Таблица страниц

 

А11-А0

Физический адрес

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

А31-А12

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

CR3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Блок ОЗУ

 

 

 

 

Блок ОЗУ

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

всего 1024

 

 

 

 

всего 1024

 

 

 

 

 

Базовый адрес

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 4.8. Трансляция адресов для микропроцессора i486

 

 

 

 

 

 

 

 

 

 

 

 

Виртуальный адрес

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Сегмент 0/1

Уровень 1

 

Уровень 2

Уровень 3

 

Page offset

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Таблица L1

 

 

Таблица L2

 

 

Таблица L3

 

 

А11-А0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

+

 

 

 

 

+

 

 

 

 

 

 

+

 

 

 

 

 

Физи-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ческий

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Базо

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

адрес

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

зо-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

вый

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ад-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

рес

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

таб-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ли-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

цы

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

стра

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 4.9. Трансляция адресов в микропроцессоре Alpha

44

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

Как видно из приведенных примеров, время преобразования адресов очень значительно, если не принимать никаких мер по его ускорению. Для ускорения трансляций в MMU добавляется кэшпамять отображений (соответствий виртуальных и физических адресов), называемая Translation Lookaside Buffer (TLB).

По аналогии с обычной кэш-памятью первого уровня TLB может быть разделено на I-TLB и D-TLB, так что I-TLB хранит записи, относящиеся к страницам с командами, а D-TLB — к страницам с данными. Уровней TLB может быть больше одного, причем второй (S-TLB) обычно унифицирован. Разные TLB могут характеризоваться разными ассоциативностями, количеством портов чтения/записи, политиками замещения записей и т. д.

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

Physically indexed, physically tagged (PIPT) — физически индексируемые и физически тегируемые. Такие кэш-памяти просты, и отсутствуют проблемы с наложением (aliasing), но они медленны, так как перед обращением в кэш-память требуется запрос физического адреса в TLB. Этот запрос может вызвать промах в TLB и дополнительное обращение в основную память перед тем, как наличие данных будет проверено в кэш-памяти.

Virtually indexed, virtually tagged (VIVT) — виртуально индексируемые и виртуально тегируемые. И для тегирования, и для индекса используется виртуальный адрес. Благодаря этому проверки наличия данных в кэш-памяти происходят быстрее, не требуется обращение к MMU. Однако возникает проблема наложения, когда несколько виртуальных адресов соответствуют одному и тому же физическому. В этом случае данные будут кэшироваться дважды, что сильно усложняет поддержку когерентности. Другой проблемой являются омонимы, ситуации, когда один и тот же виртуальный адрес (например, в разных процессах) отображается в различ-

45

ные физические адреса. Становится невозможным различить такие отображения исключительно по виртуальному индексу. Возможные решения этих проблем: сброс кэш-памяти при переключении между задачами (context switch), требование отсутствия пересечения адресных пространств процессов, тегирование виртуальных адресов идентификатором адресного пространства (address space ID, ASID) или использование физических тэгов. Также возникает проблема при изменении отображения виртуальных адресов в физические, что требует сброса кэш-линий, для которых изменилось отображение.

Virtually indexed, physically tagged (VIPT) — виртуально индексируемые и физически тегируемые. Для индекса используется виртуальный адрес, а для тэга — физический. Преимуществом над первым типом является меньшая задержка, поскольку можно искать кэш-линию одновременно с трансляцией адресов в TLB, однако сравнение тэга задерживается до получения физического адреса. Преимуществом над вторым типом является обнаружение омонимов (homonyms), так как тэг содержит физический адрес. Для данного типа требуется больше бит для тэга, поскольку индексные биты используют иной тип адресации.

Physically indexed, virtually tagged — физически индексируемые и виртуально тегированные кэш-памяти считаются бесполезными и представляют исключительно академический интерес.

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

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

46

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

ЗАКЛЮЧЕНИЕ

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

Вторым фактором повышения производительности вычислительных систем является развитие подсистемы памяти. Поскольку

вработе [1] этому вопросу было уделено незначительное внимание,

вданном пособии он рассмотрен достаточно подробно.

Третьим направлением повышения производительности вычислительных систем является создание многопроцессорных систем.

47

Развитие таких систем идет по пути совершенствования архитектур SMP, MPP, NUMA. Для создания высокопроизводительных многопроцессорных систем требуется создание мощных коммутаторов и высокоскоростных каналов передачи данных с малыми задержками, также рассмотренных в работе [1].

Список используемой литературы

[1]Бобков С.Г. Высокопроизводительные вычислительные системы. – М.: НИИСИ РАН, 2014.

[2]Кириченко П.Г., Тарасов И.В. Разработка маршрута проектирования многопортовых регистровых файлов, включающего библиотеку элементов и компилятора на ее основе для технологии 0,25 мкм // Микроэлектроника. – 2017. – T.46. – №1. – C. 72 – 80.

Список рекомендуемой литературы

1.Бобков С.Г. Высокопроизводительные вычислительные системы. – М.: НИИСИ РАН, 2014.

2.Дэвид М. Харрис и Сара Л. Цифровая схемотехника и архитектура компьютера. – 2-е изд. – Изд-во Morgan Kaufman © English Edition, 2013.

3.Patterson David A., Hennessy John L. Computer Architecture: A Quantitative Approach. Fourth edition. – The Morgan Kaufmann Series in Computer Architecture and Design. Kindle Locations 1789 – 1801. Elsevier Science (reference). Kindle Edition, 2011.

4.Плеханов Л.П. Основы самосинхронных электронных схем. – М.: БИНОМ. Лаборатория знаний, 2013.

5.Олифер В.Г., Олифер Н.С. Компьютерные сети. Принципы, технологии, протоколы. – СПб: Изд. дом «Питер», 2000.

6. http://www.usb.org/home Universal Serial Bus 3.1 Specification

7.RapidIO Specification Revision 4.0, 25 Gbps / lane, 100 Gbps / port, Complete Spec. Stack, 25xN specification, backward compatible with previous RapidIO generations, 2016 (www.rapidio.org/specs/current).

8.Sam Fuller RapidIO. The Embedded System Interconnect // John Wiley & Sons, Ltd, 2005.

9.Grant McFarland Microprocessor Design A Practical Guide from Design Planning to Manufacturing // 2006 by The McGraw-Hill Publishing Companies.

48

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]