Отложенная очистка буферов быстрого преобразования адресов

Иллюстрации

Показать все

Изобретение относится к области управления памятью, а более конкретно к очистке кэш-буфера преобразования адресов. Техническим результатом является расширение функциональных возможностей. Управление преобразованием адресов (АТС) ограничивает отображения между виртуальными и физическими адресами для того, чтобы реализовать политику доступа к памяти. Каждый процессор в многопроцессорной системе поддерживает буфер быстрого преобразования адресов (TLB), который кэширует отображения для ускорения преобразования виртуальных адресов. Каждый процессор также поддерживает счетчик. Каждый раз, когда TLB процессора очищается, счетчик процессора увеличивается. Когда ссылка на страницу удаляется из карты преобразования адресов, значение счетчиков для всех процессоров записывается. Когда процессор осуществляет доступ к странице, записанные значения счетчиков сравниваются с текущим значением счетчика процессора для определения того, очищался ли TLB процессора с того момента, когда ссылка на страницу была удалена из карты. Затратная операция очистки TLB откладывается до тех пор, пока это не потребуется, но, тем не менее, осуществляется достаточно заблаговременно для предотвращения того, чтобы недействительная запись в TLB была использована для нарушения политики доступа. 4 н. и 7 з.п. ф-лы, 6 ил.

Реферат

ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ

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

ПРЕДШЕСТВУЮЩИЙ УРОВЕНЬ ТЕХНИКИ

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

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

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

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

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

СУЩНОСТЬ ИЗОБРЕТЕНИЯ

Данное изобретение обеспечивает механизм для поддержки отложенной очистки буферов TLB. Для каждого TLB поддерживается счетчик и каждый раз, когда TLB очищается, значение счетчика увеличивается. В многопроцессорной системе, где каждый процессор поддерживает свой собственный TLB, может быть отдельный счетчик для каждого процессора, при этом счетчик для конкретного процессора увеличивается, когда процессор очищает свой TLB. Когда возникает инициирующее событие, значения любых из соответствующих счетчиков записывается после того, как инициирующее событие завершается. «Инициирующее событие» - это событие, которое затрагивает карту преобразования адресов или политику доступа к памяти, которой эта карта подчиняется, таким образом, что устаревшие записи в TLB могут стать причиной нарушений политики; соответствующий счетчик является счетчиком TLB, который, возможно, содержит такие устаревшие записи. Для примера, заданная страница памяти может быть объявлена запрещенной в соответствии с политикой безопасности, и все отображения на эту страницу могут быть удалены из карт преобразования адресов; это удаление ссылок на страницу из карты является примером инициирующего события, и счетчики для любых буферов TLB, которые могут содержать отображение на эту страницу, являются релевантными. Может случиться, что пройдет довольно много времени между возникновением инициирующего события и моментом, когда эффект или результат этого инициирующего события фактически будет использован в процессе преобразования адресов. (Для примера, отображения на заданную страницу памяти могут измениться в заданный момент времени, но миллионы операций могут иметь место перед любой попыткой произвести повторное использование отсоединенной страницы.) Когда результат инициирующего события используется, сохраненные значения счетчиков сравниваются с текущими значениями счетчиков для того, чтобы определить, какие (если такие вообще есть) буферы TLB могли быть не очищены с тех пор, когда произошло инициирующее событие. Если какие-либо соответствующие TLB имеют значения счетчиков, совпадающие с их сохраненными значениями, то все такие TLB были очищены в обычном порядке.

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

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

Другие признаки настоящего изобретения описаны ниже.

ПЕРЕЧЕНЬ ФИГУР ЧЕРТЕЖЕЙ

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

Фиг.1 - блок-схема примерной вычислительной среды, в которой аспекты изобретения могут быть реализованы;

Фиг.2 - блок-схема примерной системы виртуальной адресации;

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

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

Фиг.5 - блок-схема системы, которая включает в себя множество процессоров, где каждый процессор ассоциирован с TLB и счетчиком;

Фиг.6 - блок-схема последовательности операций процесса для отложенной очистки TLB в соответствии с аспектами данного изобретения.

ПОДРОБНОЕ ОПИСАНИЕ ПРИМЕРНЫХ ВАРИАНТОВ ОСУЩЕСТВЛЕНИЯ

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

ИЛЛЮСТРАТИВНАЯ КОМПЬЮТЕРНАЯ СИСТЕМА

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

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

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

В соответствии с Фиг.1 иллюстративная система для реализации изобретения включает в себя вычислительное устройство общего назначения в форме компьютера 110. Компоненты компьютера 110 могут включать в себя, но не в ограничительном смысле, устройство 120 обработки данных (процессор), системную память 130 и системную шину 121, которая соединяет различные системные компоненты, включая системную память, с устройством 120 обработки данных. Устройство 120 обработки данных может представлять собой несколько логических модулей обработки данных, таких как поддерживаемые в многопоточном процессоре. Системная шина 121 может относиться к любому из нескольких типов шинных структур, включающих в себя шину памяти или контроллер памяти, периферийную шину и локальную шину, с использованием любой из многообразия шинных архитектур. Для примера, но не ограничения, такие архитектуры включают в себя шину Архитектуры Промышленного Стандарта (ISA), шину Микроканальной Архитектуры (MCA), расширенную шину ISA (EISA), локальную шину Видео Электронной Ассоциации Стандартов (VESA) и шину Межсоединения Периферийных Устройств (PCI) (известную также, как мезонинная шина). Системная шина 121 может также быть реализована, как двухточечное соединение, устройство коммуникации или нечто подобное, из между числа осуществляющими связь устройствами.

Компьютер 110 обычно включает в себя различные машиночитаемые носители информации. Машиночитаемые носители информации могут быть любыми возможными носителями, к которым компьютер 110 может осуществить доступ, и включают в себя энергозависимые и энергонезависимые, съемные и несъемные носители. Для примера, но не ограничения, машиночитаемые носители информации могут включать в себя компьютерные носители информации и среды передачи. Компьютерные носители информации включают в себя как энергонезависимые, так и энергозависимые, как съемные, так и несъемные, реализованные любым способом или с помощью любой технологии для хранения информации, такой как машиночитаемые команды, структуры данных, программные модули или другие данные. Компьютерные носители включают в себя, но не в ограничительном смысле, оперативное запоминающее устройство (ОЗУ,RAM), постоянное запоминающее устройство (ПЗУ, ROM), электрически стираемое перепрограммируемое ПЗУ (EEPROM), флеш-память или память другой технологии, ПЗУ на компакт-диске (CD-ROM), универсальные цифровые диски (DVD) или другие оптические дисковые носители информации, магнитные кассеты, магнитные ленты, магнитные дисковые носители или другие магнитные устройства для хранения информации, или любые другие носители, которые могут использоваться для хранения желаемой информации и к которым компьютер 110 может осуществить доступ. Среды передачи обычно воплощают машиночитаемые команды, структуры данных, программные модули или другие данные в модулированном информационном сигнале, таком как несущая волна или другой механизм передачи, и включают в себя любые среды доставки информации. Термин «модулированный информационный сигнал» обозначает сигнал, одна или более характеристик которого установлены или изменены так, чтобы обеспечить кодирование информации в этом сигнале. Для примера, но не ограничения, среды передачи включают в себя проводные среды, такие как проводная сеть или прямое проводное соединение, и беспроводные среды, такие как акустические, радиочастотные и другие беспроводные среды. Комбинации любых из вышеперечисленных носителей и сред также охватываются понятием «машиночитаемый носитель информации».

Системная память 130 включает в себя компьютерные носители информации в форме энергозависимых и/или энергонезависимых запоминающих устройств, таких как постоянное запоминающее устройство (ПЗУ) 131 и оперативное запоминающее устройство (ОЗУ) 132. Базовая система ввода/вывода 133 (BIOS), включающая в себя базовые процедуры, помогающие передаче информации между элементами внутри компьютера 110, например во время запуска, обычно хранится в ROM 131. RAM 132 обычно содержит данные и/или программные модули, которые оперативно доступны для устройства 120 обработки данных и/или обрабатываются устройством 120 обработки данных в текущий момент. Для примера, но не ограничения, Фиг.1 показывает операционную систему 134, прикладные программы 135, другие программные модули 136 и данные 137 программ.

Компьютер 110 может также включать в себя другие съемные/несъемные компьютерные носители информации. Только для примера Фиг.1 показывает накопитель 140 на жестких магнитных дисках, который считывает с несъемного энергонезависимого магнитного носителя или записывает на него, дисковод 151 для магнитного диска, который считывает или со съемного энергонезависимого магнитного диска 152 записывает на него и дисковод 155 для оптического диска, который считывает со съемного энергонезависимого извлекаемого, непостоянного оптического диска 156, такого как CD-ROM или другой оптический носитель, или записывает на него. Другие съемные/несъемные, энергозависимые/энергонезависимые компьютерные носители информации, которые можно использовать в иллюстративной операционной среде, включают в себя, но не в ограничительном смысле, кассеты с магнитной лентой, карты флеш-памяти, универсальные цифровые диски, цифровую видеоленту, твердотельные ОЗУ, твердотельные ПЗУ и тому подобное. Накопитель 141 на жестких магнитных дисках обычно подсоединяется к системной шине 121 с помощью интерфейса энергонезависимой несъемной памяти, такого как интерфейс 140, а дисковод 151 для магнитного диска и дисковод 155 для оптического диска обычно подсоединяются к системной шине 121 с помощью интерфейса энергонезависимой съемной памяти, такого как интерфейс 150.

Накопители, дисководы и используемые ими компьютерные носители информации, рассмотренные выше и показанные на Фиг.1, позволяют хранить машиночитаемые команды, структуры данных, программные модули или другие данные для компьютера 110. На Фиг.1, для примера, накопитель 141 на жестких магнитных дисках показан как хранящий операционную систему 144, прикладные программы 145, другие программные модули 146 и данные 147 программ. Следует отметить, что эти компоненты могут либо быть одинаковыми, либо различаться от операционной системы 134, прикладных программ 135, других программных модулей 136 и 137 программ. Операционной системе 144, прикладным программам 145, другим программным модулям 146 и данным 147 программ присвоены другие ссылочные номера, чтобы проиллюстрировать, что они, как минимум, являются другими копиями. Пользователь может вводить команды и информацию в компьютер 20 с помощью устройств ввода, таких как клавиатура 162 и координатно-указательное устройство, обычно являющееся «мышью», шаровым манипулятором или сенсорной панелью.

Другие устройства ввода (не показанные здесь) могут включать в себя микрофон, джойстик, игровую панель, спутниковую тарелку, сканнер или подобные им устройства. Эти и другие устройства ввода часто подсоединяются к устройству обработки данных 120 с помощью интерфейса 160 пользовательского ввода, связанного с системной шиной, но могут также подсоединяться посредством других структур интерфейсов и шин, таких как параллельный порт, игровой порт или универсальная последовательная шина (USB). Монитор 191 или другой тип устройства отображения также подсоединяется к системной шине 121 через интерфейс, такой как видеоинтерфейс 190. В добавлении к монитору компьютеры могут также включать другие периферийные устройства вывода, такие как громкоговорители 197 и принтер 196, которые могут подсоединяться через периферийный интерфейс вывода 195.

Компьютер 110 может работать в сетевой среде, используя логические соединения с одним или более удаленных компьютеров, таких как удаленный компьютер 180. Удаленный компьютер 180 может быть персональным компьютером, сервером, маршрутизатором, сетевым ПК, одноранговым устройством или другим общим сетевым узлом и, обычно, включает в себя многие или все элементы, описанные выше по отношению к компьютеру 110, хотя только запоминающее устройство 181 показано на Фиг.1. Логические соединения, изображенные на Фиг.1, включают в себя локальную сеть (LAN) 171 и глобальную сеть (WAN) 173, но также могут включать в себя и другие сети. Такие сетевые среды широко распространены в офисах, сетях масштаба предприятия, интрасетях и сети Интернет.

При использовании в сетевой среде LAN компьютер 110 соединяется с LAN через сетевой интерфейс или адаптер 170. При использовании в сетевой среде WAN компьютер 110 обычно включает в себя модем 172 или другие средства, предназначенные для установления связи через WAN, такую как Интернет. Модем 172, который может быть внутренним или внешним, может подсоединяться к системной шине 121 через интерфейс 160 пользовательского ввода или другое подходящее средство. В сетевой среде программные модули, показанные в отношении к компьютеру 110, или их части могут храниться в удаленном запоминающем устройстве. Для примера, но не ограничения, Фиг.1 показывает удаленные прикладные программы 185 как постоянно хранящиеся на запоминающем устройстве 181. Важно отметить, что сетевые соединения показаны как пример, и другие средства установления линии связи между компьютерами могут быть также использованы.

ИЛЛЮСТРАТИВНАЯ СХЕМА ВИРТУАЛЬНОЙ АДРЕСАЦИИ

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

В этой страничной схеме каталог 202 страниц включает в себя набор записей. Примерная структура записи более детально описана ниже, при рассмотрении Фиг.3, но, по существу, каждая запись определяет физическое местоположение (т.е. номер страничного блока или «PFN») конкретной таблицы страниц, такой как таблица 204(1), 204(2), 204(3). Каждая таблица страниц в свою очередь включает в себя набор записей, каждая из которых определяет физическое местоположение (опять же номер страничного блока) конкретной страницы данных, такой как страница 206(1), 206(2), 206(3) или 206(4). Страницы данных представляют собой смежные части оперативной памяти 132 заданной длины. Страницы данных могут хранить любые типы данных, и, как необходимо отметить здесь, в добавление к хранению обычных данных, страницы данных также используются для хранения содержимого каталога 202 страниц и страниц 204(1) - 204(3). Таким образом, заданная страница может быть каталогом, таблицей, страницей данных или иметь несколько ролей в качестве любой комбинации этих трех структур.

Схема виртуальной адресации, изображенная на Фиг.2, является двухуровневой схемой виртуальной адресации, поскольку для того, чтобы определить местонахождение конкретной страницы, надо проверить как каталог страниц (уровень 1), так и таблицу страниц (уровень 2). Специалистам в данной области техники должно быть понятно, что можно построить схему виртуальной адресации с произвольным числом уровней, и при этом принципы данного изобретения могут быть применены ко всем таким схемам виртуальной адресации. Как известно, процессор INTEL x86 поддерживает виртуальную адресацию имеющую один, два или три уровня и обычно применяет «гибридную» схему, в которой «малые» страницы (т.е. страницы размером четыре килобайта) используют двухуровневые виртуальные адреса, а «большие» страницы (т.е. страницы размером четыре мегабайта) используют одноуровневые виртуальные адреса.

На страничной схеме по Фиг.2 любой байт на странице может быть идентифицирован посредством виртуального адреса 210, включающего в себя смещение 211 каталога страниц (PD), смещение 212, таблицы страниц (PT) и смещение 213 страницы. Таким образом, для определения физического адреса модуль 220 управления памятью (MMU), предназначенный для преобразования адресов, использует смещение 211 каталога страниц для определения положения конкретной записи в каталоге страниц 202. Для примера, смещение 211 может быть равным нулю, что служит индикатором того, что надо обратиться к нулевой записи в каталоге 202 страниц. Эта запись содержит PFN, в котором хранится таблица страниц, так что MMU 220 использует этот PFN для определения положения одной из таблиц страниц (т.е. таблицы 204(1) страниц). MMU 220 далее использует смещение 212 таблицы страниц как индекс для идентифицированной таблицы страниц и извлекает запись, найденную при этом смещении. Запись содержит PFN страницы данных (т.е. страницы 206(1)), так что MMU 220 добавляет сдвиг 213 страницы к базовому адресу идентифицированной страницы для того, чтобы определить положение конкретного байта физической памяти. MMU 220 может быть также выполнен с возможностью осуществления других различных функций в добавление к простому преобразованию адресов, например, MMU 220 может загружать страницу с диска, если запись этой страницы в таблице помечена как «нет в наличии»; MMU 220 может запрещать доступ на запись, если страница помечена как «только для чтения», и т.д.

В виртуальной схеме адресации по Фиг.2 местоположение (т.е. PFN) самого каталога страниц сохраняется в ячейке 201 запоминающего устройства. MMU 220 использует содержимое этой ячейки для определения положения каталога 202 страниц, когда начинает преобразование виртуального адреса 210. Таким образом, может существовать множество карт страниц, и конкретная карта может быть выбрана для текущего использования посредством задания содержимого ячейки 201 запоминающего устройства таким образом, чтобы она содержала PFN каталога страниц заданной карты. В примере для процессора INTEL x86, ячейка 201 запоминающего устройства соответствует регистру с именем CR3.

СРЕДА С ВЫСОКОЙ СТЕПЕНЬЮ НАДЕЖНОСТИ И ЗАЩИТА ПАМЯТИ ПОСРЕДСТВОМ УПРАВЛЕНИЯ ПРЕОБРАЗОВАНИЕМ АДРЕСОВ

Необходимо отметить, что одним из признаков системы виртуальной адресации, описанной выше, является то, что для заданной карты преобразования памяти возможен физический адрес, не отображенный в какой-либо виртуальный адрес. Таким образом, в системе, такой как процессор INTEL x86, где почти все запросы на доступ к памяти производятся с помощью виртуального адреса, можно сделать часть физической памяти запрещенной к доступу для заданного источника посредством гарантирования того, что карта преобразования адресов данного источника не указывает на запрещенную для доступа память. Реализация управления картой преобразования адресов для обеспечения такой запрещенной для доступа памяти называется Управлением Преобразованием Адресов (ATC). Запрещенная для доступа часть памяти часто называется «защищенной памятью», и ATC является одним из путей обеспечения защищенной памяти.

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

Фиг.3. показывает две среды, сосуществующие на одном устройстве: среда 360 с высокой степенью надежности и среда 350 без высокой степени надежности. Для удобства эти среды названы как правая сторона (RHS) и левая сторона (LHS) соответственно; RHS является средой с высокой степенью надежности, а LHS - средой без высокой степени надежности. «С высокой степенью надежности» означает для среды, что имеется высокий уровень гарантии того, что функции, выполняющиеся в этой среде, будут выполняться корректно. Таким образом, LHS 350 исполняет функции 306(1), 306(2),... 306(n), а RHS 360 исполняет различные функции 308(1), 308(2),... 308(m). LHS 350 ассоциирована со спецификацией 302, которая определяет, то, как функции 306(1) - 306(n) должны себя вести. Кроме того, RHS 360 ассоциирована со спецификацией 304, которая определяет, то, как функции от 308(1) - 308(m) должны себя вести. Спецификации 302 и 304 могут быть или не быть записаны. Для примера, LHS 350 может быть коммерческой операционной системой, которая поставляется с детальным руководством, разъясняющим, как ее различные службы, драйвера, системные вызовы и т.д. должны себя вести. Или может быть просто общее понимание того, как данная среда должна вести себя, и это понимание может составлять спецификацию.

Независимо от того, какую форму спецификация принимает, должно быть понятно, что почти все программное обеспечение включает в себя как известные, так и необнаруженные ошибки, лючки (входы в программу, минующие стандартные процедуры проверки, используемые программистами для отладки, и не удаленные в рабочей версии), логические ошибки и т.д., которые могут стать причиной непредвиденного поведения программного обеспечения. Однако возможно оценить уровень надежности в отношении того, что заданная часть программного обеспечения будет вести себя ожидаемым образом, т.е. уровень гарантии того, что поведение программного обеспечения будет фактически совпадать с описанным в спецификации. В примере по Фиг.3. RHS 360 является средой «с высокой степенью надежности» в отношении того, что существует относительно высокий уровень гарантии того, что функции 308(1)-308(m), для выполнения которых RHS 360 спроектирована, будут фактически исполняться в соответствии со спецификацией 304. Напротив, LHS 350 является средой «без высокой степени надежности» в отношении того, что существует относительно низкий уровень гарантии того, что LHS 350 будет исполнять функции 306(1)-306(n) в соответствии со спецификацией 302. «Относительно высокий» и «относительно низкий» в данном контексте обозначает, что уровень гарантии того, что RHS 360 будет вести себя в соответствии со спецификацией 304, выше, чем уровень гарантии того, что LHS 350 будет вести себя в соответствии со спецификацией 302.

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

В предпочтительном варианте осуществления изобретения среда с высокой степенью надежности включает в себя защищенную память, т.е. часть памяти, которая недоступна из среды без высокой степени надежности. Так, RHS 360 может хранить секретные данные (например, криптографические ключи) в защищенной памяти, не опасаясь того, что есть риск чтения или записи в эту память процессом, работающим в LHS 350. Для примера, спецификация 304 может обеспечивать, что RHS 360 имеет возможность защитить информацию от подделок извне, и защищенная память позволяет RHS 360 осуществлять эту функцию. Более того, код, используемый RHS 360 для осуществления ее различных функций, может храниться в защищенной памяти для того, чтобы препятствовать процессам, работающим в LHS 350, осуществлять перезапись этого кода другим кодом (который может привести RHS 360 к поведению, не соответствующему ее спецификации). Фиг.3 показывает защищенную память 312, доступную для использования RHS 360. Физическое адресное пространство 310 включает в себя все ячейки физической памяти, доступные на заданном вычислительном устройстве. Защищенная память 312 является подмножеством этой совокупности ячеек. Как показано на Фиг.3, RHS 360 имеет доступ ко всему физическому адресному пространству 310, но у LHS 350 отсутствует доступ к той части физического адресного пространства 310, которая составляет защищенную память 312. (Необходимо отметить, что хотя Фиг.3 показывает защищенную и незащищенную части адресного пространства как смежные, нет жесткого требования в отношении такой смежности. Более того, нет необходимости для RHS 360 иметь доступ ко всему физическому адресному пространству или для LHS 350 иметь доступ ко всем частям физического адресного пространства вне защищенной памяти 312.)

Как указанно выше, есть несколько систем, в которых почти все запросы на доступ к памяти делаются по физическим адресам. Одним из путей реализации защищенной памяти 312 в такой системе является управление содержимым карт преобразования адресов таким образом, чтобы для LHS 350 не было предоставлено ни одного виртуального адреса для защищенной памяти 312. (Когда есть потенциально несколько видов запросов на доступ, определяющих свою цель с помощью физических адресов, доступ к защищенной памяти может быть ограничен неким вспомогательным совместно функционирующим средством, таким как вектор исключения, фильтрующий запросы на доступ к физической памяти от устройств с прямым доступом к памяти или от других источников.) Существует несколько алгоритмов, доступных для обеспечения того, чтобы LHS 350 не могла использовать карту преобразования адресов, которая бы вела к защищенной памяти, но главная идея всех этих алгоритмов состоит в том, что (1) когда процессор работает в LHS 350, обеспечивается то, что любая карта, загруженная в CR3 (ячейка 201 запоминающего устройства, показанная на Фиг.2), не ведет к страницам, содержащимся в защищенной памяти 312; и (2) для любой попытки внести изменения в активную карту в LHS 350 оценивается предполагаемое изменение так, чтобы в результате изменение не привело к ссылке на страницу защищенной памяти 312.

Далее представлен пример алгоритма для реализации защищенной памяти с помощью ATC:

Пусть D1 - набор страниц, которые могут использоваться как каталоги страниц. Пусть D2 - набор страниц, которые могут использоваться как таблицы страниц. Пусть D - объединение D1 и D2 (т.е. D=D1 U D2). Каждая запись в каталоге страниц или таблице страниц, помеченная как «имеется в наличии» (т.е. би