К. Хамахер, З. Вранешич, С. Заки - Организация ЭВМ - 5-е издание (2003) (1114649), страница 87
Текст из файла (страница 87)
Однако в этом случае процессору приходится ждать поступления новых данных (накладные расходы промаха), что, конечно же, замедляет его работу. 372 Глава 5. Система памяти Чтобы процессор не простаивал, необходимые данные следует помещать в кэш еще до того, как онн потребуются.
Проще всего это сделать программным путем, для чего в системе команд процессора должна быть предусмотрена команда упреждающей выборки. Ее выполнение приводит к загрузке в кзш указанных в ней данных, как в случае промаха. Однако процессор не ждет адресованных данных. Команда упреждающей выборки вставляется в программу для того, чтобы данные были загружены в кэш до того, как они потребуются программе. Предполагается, что выборка производится, пока процессор занят выполнением других команд, не вызывающих промахов чтения, так что доступ к основной памяти осуществляется параллельно с процессом вычислений. Команды упреждающей выборки могут быть вставлены в программу как программистом, так и компилятором. Конечно, лучше возложить зту задачу на компилятор, тем более что справляется он с такой задачей вполне успешно.
С использованием команд упреждающей выборки связаны и некоторые издержки, поскольку эти команды увеличивают длину программы. Более того, некоторые яз них могут загружать в кэш данные, не используемые последующими комацдамя, Так может произойти в том случае, если заранее помещенные в кэш данные будут вытеснены другими данными еще до того, как программа успеет к ним обратиться.
Однако в целом программная упреждающая выборка положительно сказывается на производительности, и многие процессоры поддерживают эту функцию. Упреждающая выборка может выполняться и аппаратным путем, но для этого необходимы дополнительные схемы, определяющие последовательность обращений к памяти и прогнозирующие следующие обращения. Существует множество стратегий и соответствующих им схем прогнозирования, но их анализ выходит за рамки нашего издания. Процессор 1пге1 Репг1пш 4 поддерживает и программную и аппаратную упре.
ждающую выборку. У него имеются специальные команды, копирующие блок данных в кэш заданного уровня. Средства аппаратной упреждающей выборки копируют данные в кэш второго уровня, используя специальный алгоритм, который позволяет определить, насколько интенсивно они использовались прежде. Кэш без блокировок Если команды упреждающей выборки постоянно прерывают нормальное выполнение программы, целесообразность их применения оказывается под большим сомнением.
Так бывает, если упреждающая выборка мешает обращениям к кашу. Получается, что на то время, пока выполняется выборка данных, кзш заблокирован для процессора. Для решения этой проблемы архитектуру кэша можно модифицировать таким образом, чтобы процессор мог обращаться к кашу параллельно с выборкой из памяти новых данных.
Более того, желательно, чтобы кэш поддерживал несколько параллельных операций выборки. Кэш, в котором обработка промахов и команд упреждающей выборки может откладываться, с тем чтобы процессор мог обратиться к имеющимся в нем данным, называется кэшел без блокирован (1ос1гпр-6ее). Поскольку кэш способен обработать за раз лишь один промах, в него должна быть включена схема для отслеживания остальных промахов, ожидающих очереди на обработку. Для этого нужны 5.7.
Виртуальная память 373 специальные регистры, в которых хранилась бы информация об отложенных промахах. Кэши без блокировок впервые появились в 1980-х годах, в компьютерах серии СуЬег, производившихся компанией Сопйго! Вайа. Программная упреждающая выборка производится с целью предотвратить блокировку каша в случае промахов при выполнении операции чтения. Но существует еще одно, более важное обстоятельство. Как вы понимаете, в процессорах с конвейерной организацией, при которой параллельно выполняются несколько комацд, промах чтения одной команды может задержать выполнение остальных. Кэш без блокировок сокращает вероятность таких задержек.
Мы еще вернемся к этому вопросу в главе 8, когда будем обсуждать конвейерное выполнение команд. 5.7. Виртуальная память В большинстве современных компьютерных систем физическая основная память не так велика, как используемое процессором адресное пространство. Например, адресное пространство процессора, генерирующего 32-разрядные адреса, имеет размер 4 Гбайт. Размер основной памяти типичного компьютера варьируется от нескольких сотен мегабайтов до гигабайта. Если программа не помещается в основную память, то те ее части, которые в данный момент не выполняются, хранятся во вторичном запоминающем устройстве, чаще всего на магнитном диске.
Безусловно, перед выполнением необходимая часть программы должна быть перемещена в основную память. Если основная память заполнена, новый сегмент программы должен заменить какой-нибудь из старых сегментов. В современных компьютерах перемещение программы и данных между основной памятью и вторичными запоминающими устройстваьйи выполняется операционной системой автоматически.
При этом прикладному программисту не нужно беспокоиться об ограничениях, налагаемых доступным объемом основной памяти. Технологии автоматического перемещения в основную память сегментов пройрамм и данных, потребовавшихся для выполнения программы, называются технологиями управления виртуальной памятью. Программы, а в ходе их выполнения и процессор, ссылаются на пространство команд и данных, не зависимое от реального физического пространства основной памяти. Генерируемые процессором двоичные адреса команд и данных называются виртуальными или логическими адресами. Объединенными усилиями соответствующих аппаратных и программных компонентов они транслируются в реальные физические адреса.
Если виртуальный адрес указывает на часть пространства программы или данных, расположенную в физической памяти, доступ к нему выполняется немедленно, но если этот адрес указывает не на основную память, соответствующий сегмент программы или данных сначала должен быть перемещен в основную память. На рис.
5.26 проиллюстрирована типичная организация виртуальной памяти. Трансляцию виртуальных адресов в физические выполняет специальный аппаратный блок, называемый модулем управления памятью или же диспетчером памяти (Мешогу Мапайешепй Пшй, ММП). Когда нужные данные (или команды) отсутствуют в основной памяти, диспетчер перемещает их туда с диска. Для перемещения данных используется механизм ПДП, о котором рассказывалось в главе 4. 374 Глава 5. Система памяти альнмй адрес ческий адрес имеиеиием ПДП Рио. 5.2В. Организация виртуальной памяти б.?.1.
Преобразование адресов Простейший метод преобразования виртуальных адресов в физические основывается на предполоЖении, что все программы и данные состоят из сегментов фиксированной длины, называемых странииами, которые, в свою очередь, состоят ю блоков слов, последовательно расположенных в памяти. Размер страницы обычно варьируется от 2 до 16 Кбайт. Страница является базовой единицей информации, перемещаемой между основной памятью и диском по требованию механизма преобразования адресов. Страницы не должны быть слишком маленькими, поскольку время доступа к магнитному диску (составляет несколько миллисекунд) намного больше времени доступа к основной памяти.
Значительная часть этого времени уходит на поиск данных на диске. Найденные данные пересылаются со скоростью несколько мегабайт в секунду. С другой стороны, если страница слишком велика, большая ее часть, скорее всего, не будет использована, но место в основной памяти она, конечно же, будет занимать Все это напоминает концепции кэш-памяти, рассмотренные в разделе 5.5.
Кэш сглаживает разницу в быстродействии процессора и основной памяти, а механизм управления виртуальной памятью делает то же самое в отношении основной памяти и вторичного запоминающего устройства. Концептуально технологии управления виртуальной памятью и кэшем очень близки, а их различия связаны главным образом со спецификой реализации. 5.7. Виртуальная память 375 Итак, метод преобразования адресов основывается на концепции страниц фиксированной длины, схематически представленной на рис.
5.27. Каждый сгенерированный процессором виртуальный адрес, будь то адрес для операции выборки команды или для чтения и записи операнда, интерпретируется как номер виртуальной страницы (старшие разряды) и смещение (младшие разряды) байта или слова от начала страницы. Информация о местонахождении каждой страницы в основной памяти содержится в таблице страниц. Она включает адрес основной памяти, по которому хранится страница, и данные о ее текущем состоянии. Обласп основной памяти, где может находиться одна страница, называется страничным блоком. Начальный адрес таблицы страниц хранится в базовом регистре табыгцы страниц. Добавив номер виртуальной страницы к содержимому этого регистра, вы получите адрес нужного элемента таблицы страниц.
А в самом этом элементе хранится начальный адрес страницы, если, конечно, она имеется в основной памяти. Сгенерированный процессором ниртуальный адрес Физический адрес в основной памяти Рис. 6.27. Преобразование адресов виртуальной памяти 3'76 Глава 5. Система памяти Кроме адреса страницы каждый элемент таблицы страниц содержит несколько управляющих битов, которые определяют состояние страницы, находящейся в основной памяти, и еще один бит, указывающий, хранится ли страница в памяти. Последний бит позволяет операционной системе пометить страницу как отсутствующую в памяти, не удаляя ее на самом деле. Еще один бит указывает, была ля страница модифицирована за то время, пока она находилась в основной памяти. Как и в случае кзш-памяти, на основании этой информации принимается рещение о том, записывать ли страницу снова на диск перед ее удалением из основной памяти (когда нужно освободить место для другой страницы).