Программируемые устройства для обработки запросов передачи данных памяти
PROGRAMMABLE DEVICES FOR PROCESSING DATA MEMORY TRANSFER REQUESTS

Область техники, к которой относится изобретение
Изобретение связано, но не ограничено реализацией и использованием так называемых блоков защиты памяти, блоков управления памяти, кэшей инструкций, кэшей данных и кэшей в виде буферов ассоциативной трансляции, используемых в блоках управления памятью. Различные варианты выполнения данного изобретения подходят для использования во многих 32- и 64-битовых процессорных средах. Это включает в себя, но не ограниченно киберфизическими вычислительными средами, которые работают в реальном времени с особыми требованиями к защите и безопасности, а также вычислительными средами с сильно ограниченными ресурсами.
Уровень техники
Ссылка в данном описании на опубликованный документ не должна рассматриваться, как признание, что содержание того документа является частью общедоступных сведений опытного адресата данного описания. Примеры архитектуры управления памятью приведены в [1], [2] и [3]. Технические термины, используемые для описания архитектуры различных технологий блоков защиты памяти (БЗП) и блоков управления памятью (БУП), иногда имеют противоречащие определения. В данном описании, включая формулу изобретения:
- «Включает в себя» и «включающий в себя» используются для указания на наличие заявленных функций, систем, этапов или компонентов, но не исключают наличие или добавление одной или нескольких других функций, систем, этапов, компонентов.
- Запоминающее устройство (например, 118 на Фиг. 1), объединенное с контроллером памяти (например, 115 на Фиг. 1), можно описать на более высоком уровне генерализации, как запоминающее устройство.
- Периферийное устройство может иметь (например, сетевой контроллер 105 на Фиг. 1) или не иметь (например, блок криптоускорителя) контакты внешних вводов-выводов. Периферийное устройство включает в себя не менее одного соединительного интерфейса, при этом каждый соединительный интерфейс является либо главным соединительным портом, либо соединительным портом назначения.
- Шина является одним из видов соединителя. Коммутатор является одним из видов соединителя.
- Блок прямого доступа к памяти память-память (ПДП ПП) (например, 140 на Фиг. 1) является программируемой аппаратной цепью, специально оптимизированной для выдачи запросов на передачу данных памяти через один или несколько главных соединительных портов (например, 143 и 144 на Фиг. 1) с целью считывания значения из памяти, хранящегося по одному адресу, и записи этого значения в другой адрес памяти. ПДП ПП является подчиненным устройством под контролем другого, главного устройства (например, 110 или 194 на Фиг. 1). Хорошо известным пример такого контроллера ПДП ПП является Intel 8237А. Блок ПДП ПП может иметь и дополнительные возможности, связанные с перемещением данных памяти, такие как считывание непрерывных областей памяти из запоминающего устройства и запись каждого слова данных на тот же адрес периферийного устройства с распределением памяти. Блок ПДП ПП можно описать, как программируемый блок прямого доступа к памяти (ППДП).
- Блок защиты памяти (БЗП) получает запрос передачи данных памяти, связанный с вводным адресным пространством, и генерирует запросы передачи данных памяти, связанные с выводным адресным пространством. БЗП характеризуется тем, что (а) разрешает управлять доступом к одному или нескольким регионам вводного адресного пространства, и (b) БЗП всегда применяет тождественное преобразование между адресом запроса передачи данных памяти в вводном адресном пространстве и адресом соответствующего запроса передачи данных памяти в выводном адресном пространстве. Архитектура некоторых БЗП специально спроектирована для поддержки отображения двух или более описателей региона в одном и том же непрерывном регионе вводного адресного пространства во время выполнения.
- Блок управления памяти (БУП) получает запрос передачи данных памяти, связанный с вводным адресным пространством, и в ответ генерирует соответствующий запрос передачи данных памяти, связанный с выводным адресным пространством. БУП характеризуется тем, что (а) разрешает управлять доступом к одному или нескольким регионам вводного адресного пространства, и (b) БУП адаптирован для трансляции адреса запроса передачи данных памяти, ассоциированного с вводным адресным пространством, и адреса соответствующего запроса передачи данных памяти в выводном адресном пространстве.
- Правильно сформированный запрос передачи данных памяти - это любой запрос передачи данных памяти, который правильно выполняет требования ассоциированного протокола связи для запроса передачи данных памяти. Прием правильно сформированного запроса передачи данных памяти подразумевает, что запрос не был неправильно сформирован при выдаче, и что запрос не был поврежден в процессе передачи.
Во многих публикациях, описывающих технологии управления памятью, «виртуальное адресное пространство» отображается на «физическое адресное пространство». Данная терминология является однозначной при одном уровне средств трансляции адресов для программного обеспечения, выполняющегося на процессоре общего назначения, используемом в заданной архитектуре ЭВМ. В данном описании мы используем терминологию - «вводное адресное пространство» отображается на «транслированное адресное пространство». Последняя терминология может последовательно использоваться для каждого уровня средств трансляции адресов памяти в архитектуре ЭВМ, имеющей два или более уровней средств трансляции адресов. Последняя терминология также может последовательно использоваться для средств трансляции адресов памяти, адаптированных для приема запросов передачи данных памяти от процессоров общего назначения, графических процессоров и других видов главных соединительных периферийных устройств.
В тексте данного описания, включая формулу изобретения, термины страница, дескриптор страницы, фрейм, сегмент, дескриптор сегмента и дескриптор диапазона имеют следующие значения:
- «Фрейм» размером N байт определяет непрерывный регион памяти транслированного адресного пространства длиной N байт и начинающийся с границы байта N.
- «Страница» размером N байт определяет непрерывный регион памяти вводного адресного пространства длиной N байт и начинающийся с границы байта N. «Дескриптор страницы» описывает страницу памяти, ассоциированную с вводным адресным пространством. Страница памяти вводного адресного пространства может отображаться на фрейм памяти транслированного адресного пространства.
- «Сегмент» размером N байт определяет непрерывный регион памяти вводного адресного пространства длиной N байт, начинающийся с границы байта О. Выделенная часть сегмента может иметь размер менее N байт и начинаться с относительного адреса, расположенного внутри этого сегмента. Терминология «сегмент переменной длины» подразумевает, что длина выделенной части сегмента может быть разной. Выделенная часть сегмента может быть отображена на непрерывный регион памяти на границе байта Р в транслированном адресном пространстве. Значения О и Р также могут быть разными. Отношение между значениями N, О и Р изменяется в зависимости от параметров реализованной схемы сегментирования. На практике, некоторые архитектуры ЭВМ предназначены для использования средств, реализованных в оборудовании, для предотвращения перекрытия выделенных частей двух программируемых сегментов в вводном адресном пространстве. Правильная работа других архитектур ЭВМ может потребовать управляющего ПО, чтобы убедиться, что выделенные части двух программируемых сегментов не перекрываются в вводном адресном пространстве во время выполнения. «Дескриптор сегмента» описывает сегмент памяти, ассоциированный с вводным адресным пространством.
- «Дескриптор диапазона» размером N байт определяет непрерывный регион памяти вводного адресного пространства длиной N байт. Диапазон может быть задан нижней границей адресов и верхней границей адресов, или нижней границей адресов и длиной диапазона. Если в заданном дескрипторе диапазона не активирована программируемая трансляция адресов, диапазон в вводном адресном пространстве отображается при помощи тождественного преобразования на непрерывный регион памяти в выводном адресном пространстве. Дескриптор диапазона может начинаться и заканчиваться на мелкоструктурных границах (например, 64-битовая структурированность) в вводном адресном пространстве. В качестве альтернативы, дескриптор диапазона может начинаться и заканчиваться на крупноструктурных границах в вводном адресном пространстве (например, кибибайтовая структурированность). В коммерческих массовых реализациях БЗП распространено явное разрешение двум или более дескрипторам диапазона, где эти дескрипторы диапазона не имеют способностей программируемой трансляции адресов, ассоциироваться с перекрывающимися регионами памяти в вводном адресном пространстве.
В тексте данного описания, включая заявки, строка кэша, блок кэша, субблок кэша и тэг кэша имеют следующие определения:
- «Строка кэша» - это непрерывный регион памяти. Традиционно, в архитектурах ЭВМ общего назначения, строка кэша имеет длину от 8 до 32 байт. В принципе, строка кэша может иметь ту же длину, что и максимальная длина страницы или сегмента. Каждая строка кэша ассоциируется с тэгом кэша. В контексте строк кэша, «тэг кэша» хранит метаданные о строке кэша. Метаданные могут включать в себя, но не ограничивается, их адрес в вводном адресном пространстве и/или их адрес в транслированном адресном пространстве, а также статус данного кэша.
- «Блок кэша» - это непрерывный регион памяти, разделенный на субблоки кэша. Традиционно, в архитектурах ЭВМ общего назначения, блок кэша включает в себя от 2 до 4 субблоков кэша. Традиционно, в архитектурах ЭВМ общего назначения, субблок кэша имеет длину от 8 до 32 байт. Каждый блок кэша ассоциируется с тэгом кэша. В контексте блоков кэша, тэг кэша хранит метаданные о блоке кэша. Метаданные могут включать в себя, но не ограничивается, их адрес в вводном адресном пространстве и/или их адрес в транслированном адресном пространстве, а также статус данных субблоков кэша.
В тексте данного описания, включая формулу изобретения, «программируемый блок обработки запросов передачи данных памяти» (ПОЗПДП) м «дескриптор региона» имеют следующие определения:
- Блок ПОЗПДП адаптирован для приема и обработки запросов передачи данных памяти в соответствии с различными политика, при это каждый запрос передачи данных памяти ассоциируется с конкретным адресным пространством, а каждое адресное пространство ассоциируется с определенными правилами, применяемыми этим блоком ПОЗПДП. «Дескриптор региона» используется для ассоциации различных правил с конкретным регионом конкретного адресного пространства, ассоциированного с конкретными случаями блока ПОЗПДП. Например:
дескриптор региона может быть или не быть адаптирован с одним или несколькими полями контроля доступа;
дескриптор региона может быть или не быть адаптирован с одним или несколькими полями трансляции адреса; и
дескриптор региона может быть или не быть адаптирован с полями, которые модифицируют поведение по умолчанию подсистемы памяти, которая получает запросы передачи данных памяти, отправленные блоком ПОЗПДП (например, посредством поправки политики записи кэша и/или политики запроса памяти).
- Регион адресного пространства, ассоциированный с дескриптором региона:
может быть или не быть ограничен в отношении конкретного субнабора всех возможных базовых относительных адресов в рамках адресного пространства; и
может быть или не быть ограничен в отношении конкретного субнабора всех возможных длин региона.
В свою очередь поля «дескриптора региона» могут быть адаптированы для реализации различных дескрипторов. Это включает в себя, но не ограничивается: дескрипторы страниц; дескрипторы сегментов; дескрипторы буфера динамической трансляции; дескрипторы диапазона без программируемой трансляции адресов; дескрипторы диапазона с программируемой трансляцией адресов; и тэги кэша.
Очевидно, что конкретные поля заданного дескриптора региона определяются специально для данного случая дескриптора региона.
Блок ПОЗПДП определяется независимо одного или нескольких главных соединителей, которые адаптированы для выдачи запросов передачи данных памяти на один или несколько целевых соединительных портов данного блока ПОЗПДП. Посредством неограничивающего примера, блок ПОЗПДП, реализующий функциональность БУП, может быть адаптирован для использования в качестве частного блока управления памятью для операций ввода-вывода (БУПВВ) для одного главного соединительного периферийного устройства без потери универсальности. Более того, блок ПОЗПДПЮ реализующий функции БУП, может быть адаптирован для использования общего БУПВВ, совместного используемого через множественные главные соединительные периферийные устройства без потери универсальности.
В тексте данного описания, включая формулу изобретения, «программируемый дескриптор региона» определяется как дескриптор региона, где одно или несколько полей этого дескриптора региона может быть настроено программно.
Ранние схемы БУП для управления оперативной памятью компьютерных архитектур типично адаптировались для использования с оперативными запоминающими устройствами малой емкости.
По мере увеличения емкости физической памяти использовались схемы БУП, основанные на разных принципах, для преодоления различных воспринимаемых или фактических ограничений [1], [2] этих более ранних схем БУП, предназначенных для малых объемов хранения.
Насколько известно автору, все опубликованные схемы БУП, поддерживающие большие вводные адресные пространства с возможностью мелкоструктурного выделения памяти, используют (управляемые программно или аппаратно) буферы динамической трансляции (БДТ). Эти БДТ используются для кэширования относительно малого числа из потенциально очень большого количества дескрипторов регионов, которые могут быть ассоциированы с вводным адресным пространством. Рассмотрим архитектуру VAX-11/780 [3]. Схема БУП VAX-11/780 требует 8388608 дескрипторов региона для выделения всего 32-битового вводного адресного пространства [2]. Некоторые реализации VAX-11/780 использовали унифицированные БДТ для кэширования до 128 из максимально возможных 8388608 дескрипторов региона [2]) быстродействующей памяти, и хранили разрешенные дескрипторы регионов в одной или нескольких таблицах в относительно более медленном основном запоминающем устройстве. Впоследствии, насколько известно автору, отрасль фокусировалась преимущественно на применении двух (или более) уровней косвенной адресации (индексированные схемы, хэш-схемы, хэши списков указателей) для поиска дескрипторов региона с целью улучшения схемы управления потенциально очень большим числом разрешенных дескрипторов региона. Отраслевая тенденция применения двух или более уровней косвенной адресации направлена на преодоления различных технических сложностей, выявленных в одноуровневых трансляционных архитектурах, таких как архитектура VAX-11/780 [2]. Насколько известно автору, все опубликованные реализации схем БУП, поддерживающие два или более уровней косвенной адресации для получения доступа к листовому дескриптору региона в 32- или 64-битовом адресном пространстве, используют (программно или аппаратно управляемые) БДТ для ускорения своей работы. Хорошо известно, что использование БДТ для кэширования дескрипторов региона в комбинации с кэшем данных значительно повышает сложность выполнения анализа статической синхронизации программного обеспечения, выполняемого в ядре процессора, имеющего разрешенный кэш данных и разрешенные возможности БДТ.
Существует длительная потребность в архитектуре БУП, имеющей низкое значение задержки, высокую пропускную способность, работу с постоянным временем с поддержкой относительно мелкоструктурного выделения памяти в 32- и 64-битовом вводном адресном пространстве. На рынке микроконтроллеров также существует потребность в блоке ПОЗПДП, который может работать, как блок защиты памяти (БЗП) и как БУП для запуска операционных систем реального времени (ОСРВ) с высоким уровнем безопасности и доступности. Это обусловлено тем, что многие ОСРВ с высоким уровнем безопасности и доступности полагаются на доступность аппаратного БУП с возможностью трансляции адресов.
Также имеется давно ощущаемая потребность в средствах для экономически эффективного ускорения перепрограммирования дескрипторов региона с более низким уровнем безопасности и доступности для поддержки ускоренного обмена процессов и повышенной производительности системы.
Также имеется давно ощущаемая потребность в поддержке двух уровней трансляции адресов, при которой каждый уровень трансляции адресов контролируется разным программным обеспечением (например, гипервизор контролирует первый уровень схемы БУП, а операционная система, управляемая гипервизором, контролирует второй уровень схемы БУП), что подходит для использования в системах реального времени с возможностью статистического анализа времени.
В средах с ограниченными ресурсами (таких как «Интернет вещей»), которые должны выполнять основанные на страницах схемы БУП для поддержки операционных систем общего назначения, таких как Linux, также существует рыночная потребность в инновационной архитектуре БУП, требующей для реализации меньший объем аппаратных цепей, чем традиционная основанная на страницах БУП, а также поддерживающая более быстрое выполнение программного обеспечения после обмена содержимого пользовательского адресного пространства.
Предпочтительный вариант выполнения данного изобретения предусматривает новые и инновационные решения для удовлетворения рыночных потребностей, описанных выше.
Раскрытие изобретения
Имеется давно ощущаемая потребность в средствах для экономически эффективного ускорения перепрограммирования дескрипторов региона с более низким уровнем безопасности и доступности для поддержки ускоренного обмена процессов и повышенной производительности системы.
На Фиг. 1 представлена блок-схема, иллюстрирующая части аппарата (100) для обработки данных для предпочтительного варианта выполнения данного изобретения. Аппарат (100) включает в себя процессорный модуль (110). Этот процессорный модуль (110) оснащен главным соединительным портом (111), подключенным к интерконнекту (190). Пример процессорного модуля включает в себя, но не ограничивается: 16-б 32- или 64-битовое ядро процессора общего назначения; модуль графического процессора; или специализированный процессорный модуль. В принципе, главное соединительное периферийное устройство может использоваться вместо процессорного модуля (110).
Аппарат (100) также включает в себя энергонезависимое запоминающее устройство (112). Энергонезависимое запоминающее устройство (112) подключено через свой целевой соединительный порт (113) к межкомпонентному соединению (190).
Аппарат (100) также включает в себя программируемый блок обработки запросов передачи данных памяти (ПОЗПДП) (120). Примеры функций, которые может реализовать ПОЗПДП, включают в себя, но не ограничивается основанный на страницах блок управления памятью (БУП); основанный на страницах БУП с буфером динамической трансляции для кэширования дескрипторов страниц, к которым недавно осуществлялся доступ; основанный на сегментах БУП; основанный на сегментах БУП с буфером динамической трансляции для кэширования дескрипторов сегментов, к которым недавно осуществлялся доступ; блок защиты памяти (БЗП); и кэш, в котором тэги кэша и данные кэша хранятся в данных программируемой конфигурации запоминающего устройства (123) ПОЗПДП (120).
Тэг кэша может включает в себя, но не ограничивается, разные из следующих полей: однобитовое поле наличия строки кэша; (32-битовое/64-битовое) вводное адресное поле; (32-битовое/64-битовое) транслированное адресное поле; многобитовые поля кодировки правил контроля доступа для задач, выполняемых пользовательским программным обеспечением; многобитовые поля кодировки правил контроля доступа для задач, выполняемых системным программным обеспечением; многобитовые поля кодировки правил контроля доступа для главных соединительных периферийных устройств; однобитовый флаг «наличия строки кэша»; поле текущей маски с 8-, 16- и/или 32-битовым структурированием; флаг «недавно считанной строки кэша»; однобитовый флаг «строки кэша, ожидающей записи»; поле маски изменения с 8-, 16- и/или 32-битовым структурированием; многобитовое поле режима хэширования (например, сквозная запись, обратная запись и т.д.); многобитовое поле запроса памяти для задачи требований к непрерывности памяти много-шинных мастер-сред.
Аппарат (100) также включает в себя:
- Программируемый блок прямого доступа к памяти (ППДП) (140).
- Дополнительный односторонний соединительный мост (160). Главный соединительный порт (161) этого моста (160) подключен к межкомпонентному соединению (191). Целевой соединительный порт (162) этого моста (160) подключен к межкомпонентному соединению (192).
- Контроллер SDRAM (115). Целевой соединительный порт (116) этого контроллера SDRAM (115) подключен к межкомпонентному соединению (192).
- Запоминающее устройство SDRAM (118). Целевой порт (119) этого запоминающего устройства SDRAM (118) подключен к главному порту контроллера SDRAM (115).
- Встроенное в чип запоминающее устройство SDRAM (170) с целевым соединительным портом (171) и средствами хранения (172).
- Периферийное устройство с сетевым интерфейсом (105). Оба, целевой соединительный порт (106) и главный соединительный порт (107) этого периферийного устройства с сетевым интерфейсом (105) подключены к межкомпонентному соединению (192).
- Периферийный мультимедийный интерфейс высокой четкости (HDMI) (180). Оба, целевой соединительный порт (181) и главный соединительный порт (182) этого периферийного устройства HDMI (180) подключены к межкомпонентному соединению (192).
- Периферийный двойной порт (188, 189) стандарта USB (универсальная последовательная шина) (185). Оба, целевой соединительный порт (186) и главный соединительный порт (187) этого периферийного устройства USB (185) подключены к межкомпонентному соединению (192).
- Процессор общего назначения (194) с встроенным ядром (199), подсистемой БУП (197) и подсистемой кэша (199). Этот процессор общего назначения (194) подключен к межкомпонентному соединению (292) через главный соединительный порт (195) и целевой соединительный порт (196).
Совместно программируемый блок обработки запросов передачи данных памяти (ПОЗПДП) (120), программируемый блок прямого доступа к памяти (ППДП), дополнительный мост (160) и межкомпонентное соединение (191) можно описать, как составной программируемый блок обработки запросов передачи данных памяти (165).
В данном педагогическом описании процессорный модуль (110) адаптирован для выдачи запросов передачи данных памяти и/или запросов передачи данных кода с главного соединения (111) на межкомпонентное соединение (190).
Программируемый блок обработки запросов передачи данных памяти (ПОЗПДП) (120) оснащен контроллером (121), который адаптирован для получения доступа к блоку динамического контроля (122) через порт записи (126) и порт считывания (127). Блоку динамического контроля (122) содержит набор одного или нескольких управляющих регистров (не показано на иллюстрации). Блок ПОЗПДП (120) адаптирован для получения доступа к запоминающему устройству (123). Запоминающее устройство (123) адаптировано для хранения программируемых данных конфигурации для блока ПОЗПДП (120). Эти программируемые данные конфигурации адаптированы для хранения не менее двух элементов программируемых дескрипторов региона. Блок управления (121) также адаптирован для получения запросов передачи данных памяти через целевое соединение (128), подключенное к межкомпонентному соединению (190). Блок управления (121) также адаптирован для отправки запросов передачи данных памяти через главное соединение (129), подключенное к межкомпонентному соединению (192). Блок управления (121) также адаптирован для обработки запросов передачи данных памяти, ассоциированных к первым адресным пространством, полученным через целевой соединительный порт (128) в соответствии с, как минимум, одним правилом, ассоциированным с этим первым адресным пространством, которые закодированы в как минимум двух или более элементах программируемого дескриптора региона, хранящихся в программируемых данных конфигурации запоминающего устройства (123) на момент обработки.
Программируемый блок обработки запросов передачи данных памяти (ПОЗПДП) (120) оборудован целевым соединительным портом (134), который адаптирован для получения запросов передачи данных памяти для получения доступа к части элементов дескриптора региона, хранящихся в программируемых данных конфигурации в запоминающем устройстве (123). Это включает в себя средства считывания (132) и средства записи (133) для разрешения и обработки правильно сформированных запросов передачи данных памяти, адресованных на действительный адрес памяти в этом запоминающем устройстве (123) главным соединением (143) блока ППДП (140).
В предпочтительном варианте выполнения данного изобретения целевой соединительный порт (134) программируемого блока обработки запросов передачи данных памяти (ПОЗПДП) (120) также адаптирован для приема запросов передачи данных памяти для получения доступа к части программируемых данных конфигурации, хранящихся в запоминающем устройстве (123), не являющихся дескриптором региона.
Блок ПОЗПДП (120) оснащен целевым соединительным портом (124), адаптированным для приема запросов передачи данных памяти на запись и считывание для блока динамического управления (122). Этот целевой соединительный порт (124) подключен к межкомпонентному соединению (190). В качестве альтернативы, блок ПОЗПДП (120) оснащен целевым соединительным портом (136), адаптированным для приема запросов передачи данных памяти на запись и считывание для блока динамического управления (122). Этот целевой соединительный порт (136) подключен к межкомпонентному соединению (192).
Программируемый блок прямого доступа к памяти (ППДП) (140) оборудован главным соединительным портом (143), который подключен к межкомпонентному соединению (191), вторым главным соединительным портом (144), который подключен к межкомпонентному соединению (192), и целевым соединительным портом (142), который подключен к межкомпонентному соединению (192). Блок ППДП (140) адаптирован для использования двунаправленного модуля FIFO (первый пришел-первый ушел) (147). Первый порт этого модуля FIFO (147) подключен к первой вспомогательной цепи управления (145). Второй порт этого модуля FIFO (147) подключен ко второму вспомогательному блоку управления (146). Первая вспомогательная цепь управления (145) адаптирована для выдачи запросов передачи данных памяти на главное соединение (143) и использует счетчик (151) и текущий индекс адресов памяти (152). Вторая вспомогательная цепь управления (146) адаптирована для выдачи запросов передачи данных памяти на главное соединение (144) и использует счетчик (153) и текущий индекс адресов (154).
Блок ППДП (140) адаптирован для программирования одним или несколькими запросами передачи данных памяти, полученными через целевой соединительный порт (142). На данной педагогической иллюстрации блок ППДП (140) имеет один программируемый дескриптор передачи память-память (148, 149, 150). Дескриптор передачи память-память (148, 149, 150) имеет три поля: Поле адреса исходной памяти (148), поле адреса целевой памяти (149) и поле длины передачи памяти (150). Дескриптор передачи память-память программируется посредством записи в поля (148), затем (149) и затем (150), именно в такой последовательности.
Блок ППДП (140) операции передачи память-память начинается после того, как все три поля (148, 149, 150) дескриптор передачи память-память были записаны. Операция выполняется следующим образом. Значение исходного адреса (148) загружается в текущий указатель адреса (151, 153) одной из двух вспомогательных цепей управления (145, 146). Целевой адрес (149) загружается в текущий указатель адреса (151, 153) второй из двух вспомогательных цепей управления (145, 146). Например, старший бит исходного адреса (148) может быть использован для указания, с каким главным портом (143, 144) блока ППДП (140) ассоциирован исходный адрес. В качестве альтернативы, блок ППДП (140) адаптирован для сравнения исходного адреса с разными диапазонами адресов памяти, ассоциированными с каждым из его главных портов (143, 144), чтобы определить, с каким главным портом ассоциирован этот исходный адрес. Затем значение поля длины передачи памяти (150) копируется в оба поля счетчика (151, 153). Модуль FIFO (147) обнуляется, чтобы убедиться, что в очереди данного модуля FIFO отсутствуют какие-либо элементы данных. Две вспомогательные цепи управления (145, 156) затем получают инструкции от блока управления (141) начать считывание или запись, необходимые для успешного выполнения запрошенной операции передачи память-память. Слова памяти, считанные с исходного адреса, добавляются в модуль FIFO (147). Слова памяти, предназначенные для записи по целевому адресу, выталкиваются из модуля FIFO (147). 3начение счетчиков (251) и (253) уменьшается в соответствии с объемом считанных или записанных данных, соответственно. Процесс вспомогательного блока управления (145) завершается, когда значение его поля счетчика (151) равно нулю. Процесс вспомогательного блока управления (146) завершится, когда значение его поля счетчика (153) будет равно нулю.
На Фиг. 2 представлена блок-схема (200), иллюстрирующая разбивку адресного пространства (201) для получения доступа к программируемым данным конфигурации, хранящимся в запоминающем устройстве (123) блока ПОЗПДП (120), показанного на Фиг. 1 в соответствии с предпочтительным вариантом осуществления данного изобретения. Это адресное пространство памяти (201) разделено на 12 полей (210-221). Длина каждого поля (210-221) составляет 32 бита. Это адресное пространство (201) логически разделено на:
- первый непрерывный набор (202) 6 полей (210-215), ассоциированных с конфигурацией системной части адресного пространства целевого порта (128) блока ПОЗПДП (120); и
- второй непрерывный набор (203) 6 полей (216-221), ассоциированных с конфигурацией пользовательской части адресного пространства целевого порта (128) блока ПОЗПДП (120).
Поле (210) хранит конфигурацию и/или информацию о состоянии, ассоциированную с системным адресным пространством (202). Поля (211)-(214) адаптированы для хранения как минимум одного дескриптора региона, ассоциированного с системным адресным пространством. Блок ПОЗПДП (120) адаптирован так, чтобы при записи любого значения в поля (210)-(214) блок управления ПОЗПДП (121) уведомляется, что данные конфигурации для системной части (202) адресного пространства на данный момент перепрограммируются. Блок ПОЗПДП адаптирован так, чтобы при записи любого значения в поле (215) блок управления ПОЗПДП (121) уведомляется, что перепрограммирование данных конфигурации для системной части адресного пространства завершилось.
Поле (216) хранит конфигурацию и/или информацию о состоянии, ассоциированную с пользовательским адресным пространством (203). Поля (216)-(221) адаптированы для хранения как минимум одного дескриптора региона, ассоциированного с пользовательским адресным пространством. Блок ПОЗПДП (120) адаптирован так, чтобы при записи любого значения в поля (216)-(221) блок управления ПОЗПДП (121) уведомляется, что данные конфигурации для пользовательской части (203) адресного пространства на данный момент перепрограммируются. Блок ПОЗПДП (120) адаптирован так, чтобы при записи любого значения в поле (221) блок управления ПОЗПДП (121) уведомляется, что перепрограммирование данных конфигурации для пользовательской части адресного пространства завершилось.
Эта новая конфигурация адресного пространства (201) программируемых данных конфигурации, хранящихся в запоминающем устройстве (123) блока ПОЗПДП (120), разрешает: обновлять все системные данные при помощи операции непрерывной передачи память-память (через поля 210-215); обновлять все пользовательские данные при помощи операции непрерывной передачи память-память (через поля 216-221); и обновлять системные и пользовательские данные при помощи операции непрерывной передачи память-память (через поля 210-221).
Как преимущество, это позволяет очень быстро перепрограммировать данные конфигурации блока ПОЗПДП (120) блоком ППДП (140) новым способом.
В дальнейшем предпочтительном варианте выполнения данного изобретения, когда аппарат (100) был обнулен, блок ПОЗПДП (120) сбрасывает состояние своего блока динамического контроля (122) и сбрасывает состояние своих программируемых данных конфигурации (123). Более того, режим работы блока ПОЗПДП (120) по умолчанию заключается в ретрансляции запросов передачи данных памяти, полученных на целевой порт (128), без изменения главного порта (129) и ретрансляции ответов на запросы передачи памяти, полученных на главный порт (129), без изменения целевого порта (128). После этого блок ПОЗПДП будет готов к приему запросов передачи данных памяти на порт (124), (136) и (134) для конфигурации своей работы.
На Фиг. 3 приведена блок-схема (300), иллюстрирующая операцию передачи память-память, выполненную блоком ППДП (140 на Фиг. 1) для программирования всех программируемых данных конфигурации, хранящихся в запоминающем устройстве (123 на Фиг. 1) блока ПОЗПДП (120 на Фиг. 1), в рамках одной операции передачи память-память (148, 149, 150 на Фиг. 1). В данном примере процессорный модуль (110 на Фиг. 1) является ядром процессора. Блок ПОЗПДП (120 на Фиг. 1) реализует функции блока управления памятью. На данной блок-схеме блок ПОЗПДП (120) и ядро процессора (110) уже инициализированы.
Ярлык (301) иллюстрирует последовательность шагов (301, 305, 308, 311, 314, 330, 331, 334), выполняемых ядром процессора (110). Ярлык (302) иллюстрирует последовательность шагов (302, 306, 309, 312, 315, 321, 323, 327, 328, 329, 332, 335), выполняемых блоком ПОЗПДП (110). Ярлык (303) иллюстрирует последовательность шагов (303, 307, 310, 313, 316, 317, 320, 322, 326, 336), выполняемых блоком ППДП (140). Ярлык (304) иллюстрирует последовательность шагов (304, 318, 319, 324, 325, 337), выполняемых блоком памяти SDRAM (115, 118).
Блок-схема (300) начинается с шагов (301), (302), (303) и (304).
На шаге (305) ядро процессора (110) выдает 32-битовый запрос передачи данных памяти для записи в поле исходного адреса памяти (148) блока ППДП (140). Этот запрос передачи данных памяти принимается на целевом порту (128) блока ПОЗПДП (120) в шаге (306). Блок ПОЗПДП (120) обрабатывает этот запрос передачи данных памяти в соответствии с правилами адресации трансляции памяти, ассоциированными с целевым портом (128) и хранящимися в программируемых данных конфигурации в запоминающем устройстве (123). Блок ПОЗПДП (120) передает этот обработанный запрос передачи данных памяти в блок ППДП (140) через главный порт (129), а затем через межкомпонентное соединение (192). 3атем блок ППДП (140) получает этот запрос передачи данных памяти через свой целевой порт (142) в шаге (307). Блок ППДП (140) записывает поел данных этого запроса передачи данных памяти в свое поле «адреса исходной памяти» (148).
На шаге (308) ядро процессора (110) выдает 32-битовый запрос передачи данных памяти для записи в поле «адреса целевой памяти» (149) целевого порта (142) блока ППДП (140). Этот запрос передачи данных памяти обрабатывается и перенаправляется этим блоком ПОЗПДП (120) в блок ППДП (140) в шаге (309). В шаге (310) этот блок ППДП (140) получает этот запрос передачи данных памяти и записывает данные этого запроса передачи данных памяти в свое поле «целевого адреса памяти» (149).
На шаге (311) ядро процессора (110) выдает 32-битовый запрос передачи данных памяти для записи в поле «длины передачи памяти» (150) блока ППДП (140). Этот запрос передачи данных памяти обрабатывается и перенаправляется блоком ПОЗПДП (120) в блок ППДП (140) в шаге (312). В шаге (313) этот блок ППДП (140) получает этот запрос передачи данных памяти и записывает данные этого запроса передачи данных памяти в свое поле «длины адреса памяти» (150). Операция передачи память-память инициируется, когда данные записываются в поле длины передачи памяти (250).
В шаге (314) ядро процессора (110) выдает запрос передачи данных памяти для считывания на адрес памяти внутри адресного пространства целевого порта (124) блока ПОЗПДП (120), и в результате, после того, как системная и пользовательская части программируемых данных конфигурации этого ПОЗПДП были полностью обновлены, блок ПОЗПДП (120) выпускает ответ на считывание. Этот запрос передачи данных памяти принимается и обрабатывается на шаге (315). Соответствующий запрос передачи данных памяти будет выпущен в шаге (329) ниже.
В шаге (316) значение «исходного адреса памяти» (148) загружается, как значение текущего указателя адреса (153). 3начение «целевого адреса памяти» (149) загружается, как значение текущего указателя адреса (151). 3начение «длины передачи памяти» (150) загружается, как значение поля счетчика (151) и значение поля счетчика (153). Модуль FIFO (147) обнуляется, чтобы убедиться, что в очереди данного модуля FIFO отсутствуют какие-либо элементы данных. Вспомогательная цепь управления (145) получает инструкцию начать процесс считывания данных из исходной памяти. Вспомогательная цепь управления (146) получает инструкцию начать процесс записи данных в целевую память.
В шаге (317) вспомогательная цепь управления (146) выдает запрос передачи данных памяти, считанных из пакетной памяти, через порт (144) для прочтения первой половины длины запрошенного сообщения (150). 3апрос передачи данных пакетной памяти - это запрос передачи данных памяти, адаптированный для работы с двумя или более словами данных. Этот запрос передачи считанных данных пакетной памяти использует значение «текущего указателя адреса» (151). Этот запрос передачи считанных данных пакетной памяти принимается и обрабатывается памятью SDRAM на шаге (318). Запрошенные данные отправляются памятью SDRAM обратно на главный порт (144) блока ППДП (140) в виде ответа с передачей данных пакетной памяти в шаге (319).
В шаге (320) блок ППДП (140) получает ответ на считывание данных пакетной памяти, содержащий запрошенные данные, на главный порт (144). Эти данные передаются в модуль FIFO (147). Значение «текущего указателя адреса» (154) увеличивается, а значение счетчика (153) уменьшается в соответствии с объемом принятых данных.
В шаге (320) вспомогательный блок управления (145) выталкивает эти данные из модуля FIFO (147) и выдает запрос передачи данных пакетной памяти для записи на целевой порт (134) блока ПОЗПДП (120), используя значение «текущего указателя адреса» (152). 3начение «текущего указателя адреса» (151) увеличивается, а значение счетчика (152) уменьшается в соответствии с объемом записанных данных.
В шаге (321) блок ПОЗПДП (120) получает этот запрос передачи данных пакетной памяти для записи на целевой порт (134) и записывает данные, которые он принял, в программируемые данные конфигурации, хранящиеся в запоминающем устройстве (123). Блок управления ПОЗПДП (121) активно отслеживает, когда системная и пользовательская части программируемых данных конфигурации, хранящихся в запоминающем устройстве (123), обновляются, и активно отслеживает, когда конфигурация системной и пользовательской частей программируемых данных конфигурации завершена, как описано в текстовом описании Фиг. 2.
В шаге (322) блок ППДП (140) получил все данные, запрошенные в его запросе передачи считанных данных пакетной памяти, выпущенном в шаге (317). Вспомогательная цепь управления (146) выдает запрос передачи данных памяти, считанных из пакетной памяти, через порт (144) для прочтения второй половины длины запрошенных данных памяти (150). Этот запрос передачи считанных данных пакетной памяти использует значение «текущего указателя адреса» (151).
В шаге (322) вспомогательный блок управления (145) блока ППДП (140) продолжает передавать любые оставшиеся данные, хранящиеся в модуле FIFO (147), в блок ПОЗПДП (120). Это может потребовать или не потребовать выдачу дополнительных запросов передачи данных памяти для записи, если необходимо.
В шаге (324) запрос передачи считанных данных пакетной памяти, выпущенный в шаге (322), принимается и обрабатывается хранилищем SDRAM. B шаге (325) запрошенные данные отправляются памятью SDRAM обратно на главный порт (144) блока ППДП (140), как ответ с передачей данных пакетной памяти.
В шаге (326) блок ППДП (140) продолжает передавать данные в блок ПОЗПДП (120). Вспомогательная цепь управления (146) блока ППДП (140) останавливается, когда значение ее счетчика (153) становится равным нулю. Вспомогательная цепь управления (145) блока ППДП (140) останавливается, когда значение ее счетчика (151) становится равным нулю. Когда обе вспомогательные цепи управления, (146) и (145), останавливаются, операция передачи память-память блока ППДП (140) завершается (по крайней мере, насколько это относится к блоку ППДП).
В шаге (327) блок ПОЗПДП (120) продолжает принимать и обрабатывать переданные данные записи памяти, отправленные через главный порт (143) блока ППДП (140).
В шаге (328) блок ПОЗПДП (120) был успешно перепрограммирован. Блок ПОЗПДП (120) теперь будет обслуживать запросы передачи данных памяти, полученные через целевой порт (128) блока ПОЗПДП (120) в соответствии с правилами, которые теперь закодированы в программируемых данных конфигурации в запоминающем устройстве (123) этого блока ПОЗПДП.
В шаге (329) блок динамического контроля (122) блока ПОЗПДП (120) отправляет запрос передачи считанных данных памяти со значением 1 в поле считанных данных обратно в ядро процессора (110). Это сообщает ядру процессора, что блок ПОЗПДП (120) был полностью перепрограммирован. В шаге (330) ядро процессора (110) получает этот ответ передачи данных памяти.
На шаге (331) ядро процессора (110) выдает запрос передачи данных памяти для записи в вводное адресное пространство целевого порта (128) блока ПОЗПДП (120). В шаге (332) этот запрос передачи данных памяти для записи принимается через целевой порт (128) блока ПОЗПДП (120) и обрабатывается его блоком управления (121) в соответствии с правилами, которые теперь хранятся в программируемых данных конфигурации в запоминающем устройстве (123) этого блока ПОЗПДП.
Блок-схема заканчивается ярлыками (334), (335), (336) и (337).
В альтернативном предпочтительном варианте выполнения данного изобретения: Блок ПОЗПДП (120) на Фиг. 1 сильно связан с ядром процессора (110) на Фиг. 1; запоминающее устройство (112) на Фиг. 1 отключается от межкомпонентного соединения (190) на Фиг. 1 и подключается к межкомпонентному соединению (192) на Фиг. 1; целевая шина (124) блока ПОЗПДП (120) на Фиг. 1 не используется; а целевая шина (136) блока ПОЗПДП (120) на Фиг. 1 используется.
Существует длительная потребность в архитектуре БУП, имеющей низкое значение задержки, высокую пропускную способность, работу с постоянным временем с поддержкой относительно мелкоструктурного выделения памяти в 32- и 64-битовом вводном адресном пространстве.
Фиг. 4 представляет собой гибридную принципиальную блок-схему и диаграмму потоков данных, частично иллюстрирующую предпочтительный вариант выполнения данного изобретения, где блок ПОЗПДП (120) на Фиг. 1 адаптирован для реализации функционала блока управления памятью (БУП).
Этот БУП (120) использует инновационную одноуровневую схему прямой индексированной посегментной трансляции адресов памяти, адаптированную для использования с большими вводными адресными пространствами (например, в данном случае, 31-битовое вводное адресное пространство (414)), в которых имеется небольшое число дескрипторов сегментов, ассоциированных с вводным адресным пространством (414), и каждый дескриптор сегмента поддерживает мелкоструктурное выделение памяти (533) внутри этого сегмента. Эта инновационная схема трансляции адресов памяти предназначена для использования с широким диапазоном схем организации памяти, включая, но не ограничивается, описанные с ссылкой на Фиг. 6 и Фиг. 8. В частности, данная инновационная схема организации памяти, описанная с ссылкой на Фиг. 8, синергетически использует комбинацию (а) большого вводного адресного пространства и (b) малого числа дескрипторов региона, которая обеспечивает возможность мелкоструктурного выделения памяти и предлагает неожиданное решение для проблемы масштабирования размера адресного пространства с другими одноуровневыми схемами прямой трансляции индексированных адресов памяти [1], [2]. Как преимущество, одна аппаратная реализация блока ПОЗПДП (120) может поддерживать обе схемы организации памяти, описанные на Фиг. 6 и Фиг. 8.
Эта схема может быть легко адаптирована для использования с большими вводными адресными пространствами, которые больше, равны или меньше, чем выводное адресное пространство.
Дескрипторы региона блока ПОЗПДП (120) адаптированы для кодирования дескрипторов сегмента с полями, как показано для дескриптора сегмента (430).
Ярлык 410 иллюстрирует поля запроса передачи данных памяти, полученного через целевой соединительный порт (128) блока ПОЗПДП (120). Этот запрос передачи данных памяти (410) показан с полями (411), (412) и (414). Поле (411) кодирует 3-битовое управляющее поле для данного запроса передачи данных памяти (410). Эти три бита кодируют операции «считывание данных», «запись» и «считывание для выполнения», соответственно. Поле (412) кодирует 1-битовое значение привилегии, указывающее на привилегию уровня системы или привилегию уровня пользователя для данного запроса передачи данных памяти (410). Поле (414) кодирует значение 31-битового вводного адреса в вводном адресном пространстве. 5 старших битов (415) 31-битового вводного адреса (414) используется в качестве селектора индекса сегмента. Оставшиеся 26 битов (416) 31-битового вводного адреса (414) используются в качестве сдвига внутри этого сегмента (415).
Модуль поиска одноуровневого дескриптора сегмента с прямой индексацией (420) хранит таблицу 32 дескрипторов сегмента, которые могут быть запрограммированы во время выполнения. Дескрипторы сегмента этой таблицы индексируются во время выполнения 5 верхними битами (615) вводного адреса (614) запроса передачи данных памяти, полученного через целевой соединительный порт (128) блока ПОЗПДП (120).
Каждый дескриптор сегмента, иллюстрированный дескриптором сегмента (430), включает в себя 5 полей (431), (432), (434), (435) и (436). Общая длина дескриптора сегмента (430) составляет 64 бита. В этом варианте выполнения данного изобретения этот дескриптор сегмента (430) поддерживает 31-битовое вводное адресное пространство, допускающее адресацию 2^31 байт памяти. Этот дескриптор сегмента (430) также поддерживает 31-битовое выводное адресное пространство, допускающее адресацию 2^31 байт памяти. Поля (431-436) дескриптора сегмента (430) имеют следующее назначение. Поле (431) кодирует 6 бит метаданных, ассоциированных с этим дескриптором сегмента. Поле (432) кодирует 29-битовый сдвиг внутри транслированного адресного пространства. Уменьшение числа бит поля (432) уменьшает размер физического адресного пространства, на котором может отображаться вводное адресное пространство. Это, в свою очередь, уменьшает объем аппаратных ресурсов, необходимых для хранения дескрипторов сегмента. Поле (434) кодирует длину 24-битового выделенного сегмента с 8-байтовой структурированностью. Поле (433) логически расширяет длину 24-битового выделенного сегмента до значения 29-битового выделенного сегмента (437). В частности, нулевое бинарное значение хранится в каждом из 5 старших битов (433) этого значения 29-битового выделенного сегмента (437). Поле (435) кодирует 3-битовое разрешающее поле для привилегированного пользовательского доступа. Эти три бита кодируют разрешения на «считывание данных», «запись» и «считывание для выполнения», соответственно. Поле (436) кодирует 3-битовое разрешающее поле для привилегированного системного доступа. Эти три бита кодируют разрешения на «считывание данных», «запись» и «считывание для выполнения», соответственно.
Вывод модуля поиска дескрипторов сегмента (420) подается, как ввод в модуль сборки запроса передачи данных памяти и проверки разрешений (440). Модуль (440) включает в себя арифметическую операцию сложения шириной 29 бит, которая: получает в качестве ввода 29 старших битов (417) 31-битового поля смещения (416) запрос передачи данных памяти (410); получает в качестве ввода 29-битовый сдвиг (432) в рамках транслированного адресного пространства для данного дескриптора сегмента (430) и генерирует 29-битовое значение в качестве вывода, которое используется, как старшие 29 битов (454) 31-битового адреса (454, 454) транслированного запроса передачи данных памяти (413).
Модуль сборки запроса передачи данных памяти и проверки разрешений (440) также включает в себя модуль проверки разрешений (442), который:
- Проверяет, чтобы значение смещения (416) запроса передачи данных памяти (410) меньше или равно длине 29-битового сегмента (437) дескриптора сегмента (430), который ассоциирован с данным запросом передачи данных памяти (410); и
- Проверяет, чтобы 3-битовое управляющее поле (411) и 1-битовое поле привилегий (412) запроса передачи данных памяти (410) разрешается политикой разрешений, закодированной в полях (435) и (436) дескриптора сегмента (430), ассоциированного с данным запросом передачи данных памяти (410). Если эта проверка разрешений дает отрицательный результат, подается сигнал ошибки (443). В предпочтительном варианте выполнения данного изобретения этот сигнал ошибки может привести к отправке сигнала прерывания в ядро процессора (110).
Значение поля метаданных (431) этого дескриптора сегмента (430) используется в качестве поля метаданных (453) транслированного запроса передачи данных памяти (413). В предпочтительном варианте выполнения данного изобретения поле метаданных (431) адаптировано для кодирования:
- 1-битовое каскадное поле для условного включения дополнительного уровня трансляции адресов памяти дополнительными средствами трансляции адресов памяти;
- 4 битов для контроля подсистемы памяти, включая: выбор режима кэширования (например, сквозная запись, обратная запись) и требований к запросу памяти для поддержания когерентности памяти.
Значение (413) 3-битовой операции (411) и 1-битового поля привилегий (412) запроса передачи данных памяти (410) передается, как значение 3-битовой операции (451) и 1-битового поля привилегий (452) транслированного запроса передачи данных памяти (413), соответственно.
Значение 2 младших битов (418) адреса (416) входящего запроса передачи данных памяти (410) предоставляется, как значение 2 младших битов (454) транслированного запроса памяти (450).
Фиг. 5 представляет собой блок-схему (500), иллюстрирующую шаги операции трансляции адреса памяти, выполняемой блоком управления (121) блока ПОЗПДП (120) в соответствии с предпочтительным вариантом выполнения данного изобретения.
Блок схема начинается с шага (501).
В шаге (502) этот запрос передачи данных памяти принимается блоком управления (121) блока ПОЗПДП (120) через порт (128).
В шаге (503) пять старших битов (415) адреса (414) этого запроса передачи данных памяти (410) предоставляются, как индекс для модуля поиска дескриптора сегмента (420). Модуль поиска дескриптора сегмента (420) выпускается, как вывод значения дескриптора сегмента (430), ассоциированного с данным значением индекса. Вывод модуля поиска дескрипторов сегмента (420) принимается модулем сборки и проверки разрешений (440).
В шаге (504) модуль проверки разрешений (442) выполняет проверку согласованности запроса передачи данных памяти (414), принятого в шаге (502), и соответствующего дескриптора сегмента, выпущенного в шаге (503).
В шаге (505), если проверка согласованности (504) дает отрицательный результат, осуществляется переход к шагу (506), в противном случае к шагу (509).
В шаге (506) генерируется сигнал события ошибки проверки разрешения на порт (443).
В шаге (507), если запрос передачи данных памяти (410), полученный в шаге (502), является запросом передачи данных памяти для записи, осуществляется переход к шагу (515), в противном случае к шагу (508).
В шаге (508) выдается ответ на запрос передачи памяти для считывания. В поле данных этого ответа на запрос передачи данных памяти хранится нулевое значение. Если протокол связи предусматривает такую возможность, для данного запроса передачи данных памяти возвращается состояние ошибки. Перейти к шагу (515).
В шаге (509) выполняется операция сложения шириной 29 бит (441) и сборка полей транслированного запроса передачи данных памяти (450), как описано в тексте под Фиг. 4.
В шаге (510), если запрос передачи данных памяти, полученный в шаге (502), является запросом передачи данных памяти для записи, осуществляется переход к шагу (511), в противном случае к шагу (512).
В шаге (511) выпускается запрос передачи данных памяти для записи на главный порт (129) блока ПОЗПДП (120). Перейти к шагу (515).
В шаге (512) выпускается запрос передачи данных памяти для считывания на главный порт (129) блока ПОЗПДП (120).
В шаге (513) принимается соответствующий ответ на запрос передачи данных памяти для считывания на главный порт (129) блока ПОЗПДП (120).
В шаге (514) передается результат этого ответа на запрос передачи данных памяти для считывания, полученный в шаге (513), на целевой порт (128) блока ПОЗПДП (120).
Блок-схема останавливается на шаге (515).
Фиг. 6 представляет собой блок-схему (600), показывающую пример отображения схемы трансляции адресов на основании сегмента между вводным адресным пространством (610) и транслированным адресным пространством (630) в соответствии с предпочтительным вариантом выполнения данного изобретения. На данной схеме (600) вводное адресное пространство (610) начинается с нуля в верхнем левом углу прямоугольника (610) и заканчивается в нижнем правом углу этого прямоугольника (610). На данной схеме (600) целевое адресное пространство (630) начинается с нуля в верхнем левом углу прямоугольника (630) и заканчивается в нижнем правом углу этого прямоугольника (630). Линейное вводное адресное пространство (610) разделено на N=8 разделов равной длины (611-618). На данной иллюстрации смещение сегмента в разделе вводного адресного пространства можно отобразить в любом месте выводного адресного пространства с 8-байтовой структурированностью (например, ярлык 632). Выделенная длина сегмента также имеет 8-байтовую структурированность (например, ярлыки 634, 837, 838).
Дескриптор сегмента для раздела (611) показан, как выделяющий всю длину этого раздела (611) и транслирующий его базовое смещение на более старший адрес (631) целевого адресного пространства (630). Дескриптор сегмента для раздела (612) выделяет верхнюю часть этого раздела (612) и транслирует его базовое смещение на более старший адрес (632) целевого адресного пространства (630). Выделенные части первого сегмента (611) и второго сегмента (612) непрерывны в вводном адресном пространстве. Дескриптор сегмента для раздела (613) не выделяет никаких частей этого раздела. Дескриптор сегмента для (614) выделяет верхнюю часть этого раздела (614) и транслирует его базовое смещение на тот же адрес (634) целевого адресного пространства (630).
Дескриптор сегмента для раздела (615) не выделяет никаких частей памяти этого раздела. Дескриптор сегмента для раздела (616) не выделяет никаких частей памяти этого раздела.
Дескриптор сегмента для (617) выделяет небольшой регион в верхней части этого раздела (617) и транслирует его базовое смещение на более младший адрес (637) целевого адресного пространства (630). Дескриптор сегмента для (618) выделяет больший регион в верхней части этого раздела (618) и транслирует его базовое смещение на более младший адрес (638) целевого адресного пространства. На данной иллюстрации дескриптор сегмента для раздела (617) адаптируется с правилом разрешения доступа, позволяющим пользователю производить запись в этот выделенный регион памяти, а дескриптор сегмента для раздела (618) адаптируется с правилом разрешения доступа, позволяющим некэшированному пользователю считывать ту же часть транслированного адресного пространства.
Так можно увидеть, что все сегменты переменной длины в вводном адресном пространстве начинаются с границы раздела, что разрешает аппаратно-эффективную индексацию этого дескриптора сегмента с низким значением задержки (в сравнении с таблицей дескрипторов диапазона, как показано ярлыком 123 на Фиг. 21). 8-байтовая структурированность выделенной длины сегмента и 8-байтовая структурированность относительного сдвига разрешает более эффективную компоновку вводного адресного пространства на транслированное адресное пространство памяти, чем возможно со страницами длиной 4 кибибайт, наблюдаемыми во многих традиционных БУП. Эта мелкая структурированность отображения на транслированное адресное пространство особенно полезна во встроенных микроприложениях с сильно ограниченной емкостью хранения.
Фиг. 7 представляет собой блок-схему (670), иллюстрирующую организацию вводного адресного пространства (701) одноуровневой напрямую отображаемой схемы, основанной на страницах, для архитектуры DEC VAX-11/760, как описано на Фиг. 6-1 [3]. Каждый дескриптор страницы отображается на 512-байтовый непрерывный регион 32- битового вводного адресного пространства. Вводное адресное пространство (701) равномерно разделено на адресное пространство процесса (702) и адресное пространство системы (702). Пользовательское пространство (702) динамически делится на первый регион (710), называемый «Р0», и второй регион (711), называемый «Р1». Регион Р0 начинается вверху пользовательского пространства и простирается вниз. Регион Р1 начинается внизу пользовательского пространства и простирается вверх. Системное пространство (703) динамически делится на первый регион (712), называемый «системный регион», и «зарезервированный регион». Системный регион (712) начинается вверху адресного пространства системы и простирается вниз. DEC выбрала такую организацию памяти для ограничения размера одноуровневых таблиц с прямой индексацией, в которых хранятся дескрипторы страниц для трех регионов (Р0, Р1, системный регион), поддерживающих трансляции адресов памяти [3].
Фиг. 8 представляет собой блок-схему (670), иллюстрирующую инновационную организацию вводного адресного пространства (701) для одноуровневой схемы прямого отображения, основанной на сегментах, для предпочтительного варианта выполнения данного изобретения. В данном примере рассматривается М-битовое вводное адресное пространство (801), равномерно разделенное на N=8 сегментов (811-818). Верхние 4 сегмента (811, 812, 813, 814) ассоциированы с адресным пространством системы (803), а нижние 4 сегмента (815, 816, 817, 818) ассоциированы с адресным пространство пользователя (802).
Если размер вводного адресного пространства составляет М=32 бита, один дескриптор региона может отображать 512 мебибайт транслированного адресного пространства. Подавляющее большинство встроенных систем реального времени имеют менее 512 мебибайт физической памяти. В данном случае эти встроенные системы могли бы отобразить всю емкость хранения физической памяти на один дескриптор региона. Это предотвращает необходимость отображения 2 или более дескрипторов сегмента для получения доступа к любому непрерывному региону физической памяти. Многие операционные системы реального времени с особыми требованиями к безопасности статически выделяют память, доступную для каждого приложения, выполняемого на этом ОСРВ при включении питания. Это означает, что многие дескрипторы региона для адресного пространства системы и адресного пространства каждого приложения данного ОСРВ можно создать статически до включения питания данного устройства. Например: исполняемый код ОСРВ можно отобразить в разделе (811) с разрешенным системным привилегированным доступом только для чтения. ВЗБ, стеки и неупорядоченный массив этого ОСРВ можно отобразить в разделе (812) с разрешенным системным привилегированным доступом для чтения/записи. Сегмент (813) может отображать всю оперативную память в непрерывном регионе памяти в вводном адресном пространстве для поддержки функций копирования память-память, выполняемых ядром процессора. Сегмент (814) при включении питания можно оставить неотображенным. Исполняемый код первого приложения можно отобразить в разделе (815) с разрешенным пользовательским привилегированным доступом только для чтения. BSS, стек и неупорядоченный массив этого первого приложения можно отобразить в разделе (816) с разрешенным пользовательским привилегированным доступом для чтения/записи. Первый регион памяти, используемый совместно первым приложением и вторым приложением, можно отобразить в сегменте (817) с разрешенным пользовательским привилегированным доступом для чтения/записи. Второй регион памяти, используемый совместно первым приложением и вторым приложением, можно отобразить в сегменте (818) с разрешенным пользовательским привилегированным доступом только для чтения. Это статичное отображение не исключает возможность также и динамического отображения во время выполнения.
Увеличение количества дескрипторов региона с N=8 до N=16 позволяет поддерживать значительно более сложную организацию памяти, сохраняя при этом очень малую таблицу дескрипторов региона как для адресного пространства системы (802), так и для адресного пространства пользователя (803). Полное содержимое таблицы дескрипторов региона легко можно хранить в памяти SRAM на микрочипе для доступа с малой задержкой и высокой пропускной способностью. Увеличение размера вводного адресного пространства с 32 до 64 битов при одновременном сохранении постоянного размера целевого адресного пространства не увеличивает потребность таблицы дескрипторов региона в памяти.
Это инновационная схема организации памяти (800), разработанная совместно с блоком ПОЗПДП, применяющая инновационную схему сегментации для больших вводных адресных пространств, позволяет проводить трансляцию адресов памяти с постоянным временем с очень низкими перегрузками цепей, что делает ее идеально подходящей для киберфизических приложений с особыми требованиями к обеспечению безопасности при ограниченных ресурсах.
В предпочтительном варианте выполнения данного изобретения схема БУП, основанная на 4-кибибайтовых фиксированных страницах, используется в качестве второго уровня условно активированных средств трансляции адресов памяти.
Имеется давно ощущаемая потребность в поддержке двух уровней трансляции адресов, при которой каждый уровень трансляции адресов контролируется разным программным обеспечением (например, гипервизор контролирует первый уровень схемы БУП, а операционная система, управляемая гипервизором, контролирует второй уровень схемы БУП), что подходит для использования в системах реального времени с возможностью статистического анализа времени.
Фиг. 9 представляет собой блок-схему (900), иллюстрирующую два уровня средств управления памятью в соответствии с предпочтительным вариантом выполнения данного изобретения. Схема (900) показывает блок ПОЗПДП (910) и БУП (920).
В предпочтительном варианте выполнения данного изобретения содержание программируемых данных конфигурации блока ПОЗПДП (910) контролируется программным гипервизором, выполняемым в ядре процессора. Это ядро процессора выдает один или несколько запросов передачи данных памяти на целевой порт (911) блока ПОЗПДП (910) для конфигурации программируемых данных конфигурации этого блока ПОЗПДП (910).
Содержимое Программируемых данных конфигурации блока БУП (920) контролируется совместно операционной системой, работающей на гипервизоре в виртуальной машине, и исполнительным ПО этого гипервизора. Операционная система, работающая на этом программном гипервизоре, определяет правила, необходимые операционной системе для ее внутренних операций. Эти правила кодируются и записываются через целевой порт (912) блока ПОЗПДП (910). 3атем эти правила преобразуются правилами, хранящимися в блоке ПОЗПДП (910), контролируемыми исполнительным ПО гипервизора. Затем эти преобразованные правила записываются блоком ПОЗПДП (910) в программируемые данные конфигурации этого блока БУП (920).
В частности, блок ПОЗПДП (910) адаптирован для приема и обработки запросов передачи данных памяти, полученных через его целевой порт (912), в соответствии с правилами, закодированными в программируемых данных конфигурации блока ПОЗПДП (910). Эти правила в программируемых данных конфигурации блока ПОЗПДП (910) кодируют инструкции, как выполнять трансляцию адресов памяти одного или нескольких дескрипторов региона, полученных на целевой порт (912) и предназначенных для записи в программируемые данные конфигурации БУП (910) через его целевой порт (921). 3атем эти преобразованные правила записываются блоком ПОЗПДП (910) в программируемые данные конфигурации этого блока БУП (920), используя целевой порт (921).
Например, правила, закодированные в блоке ПОЗПДП (910), могут задавать непрерывный регион вводного адресного пространства целевого порта (922), доступ к которому могут получать запросы передачи данных памяти, полученные на целевом порту (922), вместе с относительным смещением для трансляции всех этих адресов в транслированное адресное пространство главного порта (923).
БУП (920) адаптирован для приема запросов передачи данных памяти на его целевой порт (922) и трансляции их адресов в соответствии с правилами, закодированными в программируемых данных конфигурации этого БУП (920).
Таким образом, схема трансляции адресов памяти, записанная в программируемые данные конфигурации БУП (920), логически эквивалентна последовательному выполнению двух уровней трансляции адреса памяти (трансляция адреса памяти на уровне операционной системы, затем трансляция адреса памяти на уровне программного гипервизора). В качестве преимущества, на два уровня трансляции адресного пространства при выполнении может повлиять БУП (920), с задержкой выполнения одного уровня трансляции адресного пространства.
Фиг. 10 представляет собой блок-схему (1000), иллюстрирующую различные поля, которые могут присутствовать в запросе передачи данных памяти (1010) и ответе на запрос передачи данных памяти (1040) в соответствии с предпочтительным вариантом выполнения данного изобретения.
Что касается запроса передачи данных памяти (1010), необязательное поле (1011) содержит идентификатор группы устройств, который идентифицирует группу главных соединительных устройств. Необязательное поле (1012) содержит код типа устройства (например, сетевой интерфейс, графический процессор и т.д.). Необязательное поле (1013) содержит идентификатор устройства. Необязательное поле (1014) определяет правила согласования (такие как «без кэша», правила кэширования по умолчанию, кэш только для записи, кэш с обратной записью и т.д.) данного запроса передачи данных памяти. Необязательное поле (1015) содержит правила запроса памяти (запрос полного хранения, свободный доступ к памяти, запрос частичного хранения и т.д.). Необязательное поле (1016) содержит флаг запроса блокировки межкомпонентного соединения. Необязательное поле (1017) содержит операцию «считывание для получения данных». Необязательное поле (1018) содержит операцию «запись». Необязательное поле (1019) содержит операцию «считывание для исполнения». Необязательное поле (1020) содержит длину этого запроса передачи данных памяти. Необязательное поле (1021) содержит идентификатор адресного пространства, ассоциированный с данным запросом передачи данных памяти. Поле (1022) содержит адрес памяти, к которому требуется доступ. Необязательное поле (1023) содержит данные для записи, как часть запроса передачи данных памяти для записи. Необязательное поле (1024) содержит маску разрешения байта для запроса передачи данных памяти для записи. Необязательное поле (1025) содержит уровень привилегий этого запроса передачи данных памяти.
Что касается ответа на запрос передачи данных памяти (1040), необязательное поле (1041) содержит код результата для ассоциированного запроса передачи данных памяти (1010). Необязательное поле (1042) содержит 1-битовое значение, указывающее, действительны ли считанные данные, ассоциированные с этим ответом. Необязательное поле (1043) содержит считанные данные, ассоциированные с запросом передачи данных памяти (1010). Необязательное поле (1044) содержит маску активации считывания байта.
В предпочтительном варианте выполнения данного изобретения блок ПОЗПДП (120) адаптирован средствами идентификации главного соединения-источника, выдавшего запрос передачи данных памяти, полученные на его целевой порт (128), используя одно или несколько полей (1012) запроса передачи данных памяти (1010). В предпочтительном варианте выполнения данного изобретения блок ПОЗПДП (120) адаптирован средствами идентификации группы устройства главного соединения - источника, выдавшего запрос передачи данных памяти, полученные на его целевой порт (128), используя одно или несколько полей (1011) этого запроса передачи данных памяти (1010). В предпочтительном варианте выполнения данного изобретения блок ПОЗПДП (120) адаптирован средствами идентификации типа главного соединения-источника, выдавшего запрос передачи данных памяти, полученные на его целевой порт (128), используя одно или несколько полей (1012) этого запроса передачи данных памяти (1010). В предпочтительном варианте выполнения данного изобретения блок ПОЗПДП (120) адаптирован средствами ассоциации идентификатора адресного пространства с запросом передачи данных памяти, полученные на его целевой порт (128), используя одно или несколько полей (1011, 1012, 1013, 1021) этого запроса передачи данных памяти. В предпочтительном варианте выполнения данного изобретения правила закодированы в, как минимум, одном дескрипторе региона программируемых данных конфигурации блока ПОЗПДП (120) и ассоциированы с одним или несколькими полями (1011, 1012, 1013, 1016, 1021) запроса передачи данных памяти, полученного на целевой порт (128).
Существует длительная потребность в архитектуре БУП, имеющей низкое значение задержки, высокую пропускную способность, работу с постоянным временем с поддержкой относительно мелкоструктурного выделения памяти в 32- и 64-битовом вводном адресном пространстве. Также имеется давно ощущаемая потребность в средствах для экономически эффективного ускорения перепрограммирования дескрипторов региона с более низким уровнем безопасности и доступности для поддержки ускоренного обмена процессов и повышенной производительности системы. Теперь представим описание предпочтительного выполнения Фиг. 1, где блок ПОЗПДП (120) адаптирован схемой БУП, основанной на страницах.
Фиг. 11 представляет собой гибридную принципиальную блок-схему и диаграмму потоков данных, частично иллюстрирующую предпочтительный вариант выполнения (1100) данного изобретения, где блок ПОЗПДП (120) на Фиг. 1 адаптирован для реализации функционала разбитого на разделы одноуровневого блока управления памятью (БУП) с прямой индексацией, основанного на страницах. На данной иллюстрации блок ПОЗПДП (120) использует 8 разделов (1151-1158). Эти 8 разделов (1151-1158) можно описать, как 8 независимых регионов обработки запросов передачи данных памяти. Каждый из этих разделов поддерживается одноуровневой таблицей прямой индексации, содержащей 64 дескриптора региона. Каждый из этих 512 дескрипторов региона является дескриптором страницы переменной длины с мелкоструктурным выделением памяти. Каждый из этих 512 дескрипторов региона можно хранить в одном физическом запоминающем устройстве.
Ярлык 1101 иллюстрирует поля, которые запрос передачи данных памяти получил через целевой соединительный порт (128) блока ПОЗПДП (120).
Этот запрос передачи данных памяти (410) показан с полями (1106), (1107), (1102) и (1105). Поле (1106) содержит 2-битовое поле привилегий со следующими 3 привилегиями пользовательская привилегия для программного обеспечения, привилегии старшего оператора для программного обеспечения и привилегии доступа для главных соединительных периферийных устройств.
Поле (1107) содержит выбор одного из 5 пространств в 3 битах.
Поле (1102) содержит 32-битовый вводной адрес. 2 старших битов (1110) 32-битового вводного адреса (1102) подразделяют это адресное пространство (1120) на 4 пространства: главное соединительное частное пространство (1211), адресное пространство системы (1122), адресное пространство пользователя с высоким приоритетом (1123) и адресное пространство пользователя с низким приоритетом (1124). Следующие 6 старших битов (1111) 32-битового вводного адреса (1102) подразделяют каждое адресное пространство (1121, 1122, 1123, 1124) на 64 пространства. Оставшиеся 24 бита (1112) 32-битового вводного адреса (1102) обеспечивают смещение старших 8 битов (1103) 32-битового вводного адреса (1102).
Поле (1105) кодирует 3-битовое управляющее поле для данного запроса передачи данных памяти (410). Эти 3 бита кодируют операции «считывание данных», «запись» и «считывание для выполнения», соответственно.
Модуль выбора раздела (1130) в качестве ввода получает значение полей (1106), (1107), (1110) и (1111). Модуль выбора раздела (1130) адаптирован для:
- Освобождения вывода (1140), указывающего на ошибку во время выбора раздела.
- Освобождения вывода (1131), указывающего, что трансляция адреса памяти не требуется. Этот вывод (1131) подается, как ввод на модуль сборки и проверки разрешений (1170).
- Освобождения вывода, указывающего, какой из 8 разделов (1151-1158) следует использовать для трансляции 32-битового адреса (1102) запроса передачи данных памяти (1101). Этот вывод подается, как ввод на модуль поиска разбитого на разделы одноуровневого прямого индексированного дескриптора страницы (1150).
Модуль поиска разбитого на разделы одноуровневого прямого индексированного дескриптора страницы (1150) имеет 8 разделов (8 независимых регионов обработки запросов передачи данных памяти). Каждый из этих 8 разделов имеет таблицу из 64 дескрипторов страницы, которые можно программировать во время выполнения. Выбор разделов для использования при выполнении трансляции адресов памяти осуществляется во время выполнения модулем выбора раздела (1130) для каждого запроса передачи данных памяти (1101), поступившего на целевой порт (128).
В предпочтительных вариантах выполнения данного изобретения отображение 5 адресных пространств (1107) запроса передачи данных памяти (1101) на 8 разделов (1151, 1152, 1153, 1154, 1155, 1156, 1157, 1158) модуля поиска разбитого на разделы одноуровневого прямого индексированного дескриптора страницы (1150) статически отображается посредством реализации модуля выбора раздела (1130). Простое статистическое отображение можно легко реализовать при помощи комбинационной логики с очень малыми аппаратными ресурсами и с очень высокой скоростью во время выполнения.
Стрелки, нарисованные внутри модуля выбора раздела (1130) на Фиг. 11, иллюстрируют следующее педагогическое отображение вводных пространств и разделов:
- Частное адресное пространство главного соединения (1121) не отображается на любом из 8 разделов (1151-1158).
- Адресное пространство уровня системы (1122) всегда отображается на разделы (1158). В предпочтительных вариантах выполнения данного изобретения ошибка (1140) выдается, если уровень привилегии (1106) этого запроса передачи данных памяти (1101) не соответствует привилегии уровня системы.
- Если значение поля выбора пространства (1107) запроса передачи данных памяти (1101) равно 0, адресное пространство пользователя с низким приоритетом (1124) отображается в раздел (1151), а адресное пространство пользователя с высоким приоритетом (1123) отображается в раздел (1152). Таким образом можно выделить все адресное пространство пользователя (1123, 1124).
- Если значение поля выбора пространства (1107) запроса передачи данных памяти (1101) равно 1, адресное пространство пользователя с низким приоритетом (1124) отображается в раздел (1153), а адресное пространство пользователя с высоким приоритетом (1123) отображается в раздел (1154). Таким образом можно выделить все адресное пространство пользователя.
- Если значение поля выбора пространства (1107) запроса передачи данных памяти (1101) равно 2, адресное пространство пользователя с низким приоритетом (1124) отображается в раздел (1155), а адресное пространство пользователя с высоким приоритетом (1123) не отображается ни в один раздел.
- Если значение поля выбора пространства (1107) запроса передачи данных памяти (1101) равно 3, адресное пространство пользователя с низким приоритетом (1124) отображается в раздел (1156), а адресное пространство пользователя с высоким приоритетом (1123) не отображается ни в один раздел.
- Если значение поля выбора пространства (1107) запроса передачи данных памяти (1101) равно 4, адресное пространство пользователя с низким приоритетом (1124) отображается в раздел (1157), а адресное пространство пользователя с высоким приоритетом (1123) не отображается ни в один раздел.
Программное обеспечение, выполняемое ядром процессора, отвечает за:
- отображение адресных пространств, контролируемых системой управления, на 5 пространств (1107) запроса передачи данных памяти (1107), контролируемого модулем выбора раздела (1130);
- программирование дескрипторов страниц модуля поиска разбитого на разделы одноуровневого прямого индексированного дескриптора страниц (1150); и
- изменение значения, переданного в поля выбора пространства (1107) запроса передачи данных памяти (1107) во время обмена контекста адресных пространств этой управляющей системы.
5 последних запланированных пользовательских приложений с низкими требованиями к емкости памяти, выполняемых в управляющей системе, могут быть отображены на любое из 5 пространств модуля выбора раздела (1130).
Обмен процессов между этими 5 пространствами с очень низкой задержкой может быть достигнут в управляющей системе посредством простого изменения значения, переданного в поле выбора пространства (1107) запроса передачи данных памяти (1107). Например, ядро процессора (110) может быть адаптировано регистром конфигурации, который определяет значение поля выбора пространства (1107), которое будет использовано этим ядром процессора при выдаче запросов передачи данных памяти.
2 последних запланированных пользовательских приложения с высокими требованиями к емкости памяти, выполняемых в управляющей системе, могут быть отображены на 2 адресных пространства модуля выбора раздела (1130), которые отображены на два раздела модуля поиска дескриптора страницы (1150).
Модуль поиска дескрипторов страниц (1150) адаптирован для передачи значения выбранного дескриптора страницы в качестве ввода для модуля сборки и проверки разрешений (1170).
Модуль сборки и проверки разрешений (1170) также получает в качестве ввода значение 2-битового поля привилегий (1106), 3-битового поля выбора пространства (1107), 8 старших битов (1103) 32-битового вводного адреса, 24 младших битов (1112) 32-битового вводного адреса и 3-битового управляющего поля (1105) запроса передачи вводного адреса (1101). Модуль сборки и проверки разрешений адаптирован для:
- передачи однобитового вывода (1172), который указывает на ошибку во время обработки запроса передачи данных памяти;
- передачи значения транслированного запроса передачи данных памяти в качестве вывода (1173); и
- передачи однобитового каскадного вывода (1171), который указывает на необходимость дополнительного уровня трансляции адреса памяти для транслированного запроса передачи данных памяти.
Транслированное адресное пространство (1190) показывает, что:
- верхняя четверть (1191) транслированного адресного пространства (1190) ассоциирована «один к одному» с частным адресным пространством главного соединения (1211) вводного адресного пространства (1120); и
- нижние три четверти (1192) транслированного адресного пространства (1190) ассоциированы с адресным пространством системы (1122), адресным пространством пользователя с высоким приоритетом (1123) и адресным пространством пользователя с низким приоритетом (1124) вводного адресного пространства (1120).
Фиг. 12 представляет собой гибридную принципиальную блок-схему и диаграмму потоков данных, частично иллюстрирующую предпочтительный вариант выполнения данного изобретения, где блок ПОЗПДП (120) на Фиг. 1 адаптирован для реализации функционала блока управления памятью (БУП). БУП использует одноуровневую схему трансляции адресов памяти с прямой индексацией, основанную на страницах, с большим вводным адресным пространством и относительно малым числом дескрипторов страниц.
Эта схема может быть легко адаптирована для использования с большими вводными адресными пространствами, которые больше, равны или меньше, чем выводное адресное пространство.
В данном случае, дескрипторы региона блока ПОЗПДП (120) адаптированы для кодирования дескрипторов страниц, как показано дескриптором страницы (1210). На Фиг. 12 применяется запрос передачи данных памяти (1101) и его поля (1102), (1103), (1104), (1105), (1106), (1107) и (1129), как описано в текстовом описании Фиг. 11. Фиг. 12 также применяет модуль выбора раздела (1130) и модуль поиска разбитых на разделы одноуровневых страниц с прямой индексацией (1129) с его выводами (1131), (1140), (1171) и (1172), как описано в текстовом описании Фиг. 11.
Каждый дескриптор страницы, иллюстрированный дескриптором страницы (1210), включает в себя 7 полей (1121), (1212), (1213), (1214), (1215), (1216) и (1217). Общая длина дескриптора страницы (1210) составляет 32 бита. Этот дескриптор страницы (1210) поддерживает вводное адресное пространство размером 2^32 байт и выводное адресное пространство размером 2^32 байт. Данный дескриптор страницы (1210) имеет следующие поля:
- Поле (1211) - это 1-битовое каскадное поле, указывающее, требуется ли другой уровень трансляции адресов памяти для запросов передачи данных памяти, ассоциированных с этим дескриптором страницы.
- Поле (1212) содержит 4-битовое значение, которое может содержать значение размера 12 отдельных страниц. На данной иллюстрации используются следующие длины страниц: 4 кибибайта, 16 кибибайт, 32 кибибайта, 64 кибибайт, 128 кибибайт, 256 кибибайт, 512 кибибайт, 1 мебибайт, 2 мебибайта, 4 мебибайт, 8 мебибайт и 16 мебибайт.
- Поле (1213) содержит 8-битовый идентификатор фрейма.
- Поле (1214) содержит 12-битовый сдвиг внутри фрейма. Число бит (т.е. 12 бит) соответствует числу длин отдельных страниц (т.е. 12 длин страниц) поля (1212).
- Поле (1215) содержит 3-битовое разрешающее поле для доступа к привилегированному пользовательскому программному обеспечению. Эти три бита кодируют разрешения на «считывание данных», «запись» и «считывание для выполнения», соответственно.
- Поле (1216) содержит 2-битовое разрешающее поле для доступа к привилегированному системному программному обеспечению. Эти 2 бита содержат разрешения «чтение для любой цели» и «запись», соответственно.
- Поле (1217) содержит 2-битовое разрешающее поле для привилегированного доступа периферийных устройств. Эти 2 бита содержат разрешения «чтение для получения данных» и «запись», соответственно.
32-битовое адресное поле (1102) запроса передачи данных памяти (1101) логически разделено на 2 поля:
- Старшие 8 бит (1103), содержащие идентификатор страницы;
- Другие 24 бита (1104) 32-битового адреса (1102) содержат смещение внутри страницы (ПОЗ). Эти 24 бита (11014) подразделены на: 12 старших битов (1201) смещения внутри страницы и 12 младших битов (1202) смещения внутри страницы.
Вывод модуля поиска дескрипторов страниц (1129 на Фиг. 11 и 1129 на Фиг. 12) передается в качестве ввода в модуль сборки и проверки разрешений запроса передачи данных памяти (1170 на Фиг. 11 и 1170 на Фиг. 12). Этот модуль (1170 на Фиг. 12) включает в себя 12-битовый модуль операции комбинирования (1273), который:
- Получает в качестве ввода 12 старших битов (1201) смещения внутри страницы (1103) запроса передачи данных памяти (1101).
- Получает в качестве ввода 12-битовое смещение относительно фрейма (1214).
- Когда значение транзитного сигнала (1131) равно 1:
12 старших битов (1201) смещения внутри страницы (1103) запроса передачи данных памяти (1101) передается, как вывод (1286); в противном случае:
12 старших битов (1201) смещения внутри страницы (1103) запроса передачи данных памяти (1101) объединяются с 12-битовым смещением внутри фрейма (1214), а результат этого объединения передается в качестве вывода (1286). В предпочтительных вариантах выполнения данного изобретения 12-битовое арифметическое сложение используется в качестве функции объединения. В качестве альтернативы, функции объединения включают в себя, но не ограничивается: 12-битовый оператор XOR или функцию объединения, использующую значение длины поля (1212) для определения, какой из битов поля (1201) и какой из битов (1214) необходимо выпустить в качестве вывода.
Модуль сборки запроса передачи данных памяти и проверки разрешений (1170) также включает в себя модуль проверки разрешений (1274), который:
- Проверяет, чтобы значение 12 старших битов (1201) смещения внутри страницы (1103) запроса передачи данных памяти (1101) было меньше или равно длине страницы (1212) дескриптора страницы (1210), который ассоциирован с этим запросом передачи данных памяти (1101).
- Проверяет, чтобы управляющее поле (1105) и поле привилегий (1106) запроса передачи данных памяти (1101) было разрешено правилами разрешений, закодированными в полях (1215, 1216, 1217) дескриптора страницы (1210), ассоциированного с данным запросом передачи данных памяти (1101). Если эта проверка разрешений дает отрицательный результат, подается сигнал ошибки (1172).
В предпочтительном варианте выполнения данного изобретения активация любого из сигналов ошибки (1140) или (1172) приводит к отправке сигнала прерывания в ядро процессора (110).
Значение транслированного запроса передачи данных памяти (1280) генерируется следующим образом: Значение управляющего поля (1281) транслированного запроса передачи данных памяти (1280) устанавливается равным значению управляющего поля (1105) запроса передачи вводной памяти (1101). 3начение поле привилегий (1282) транслированного запроса передачи данных памяти (1280) устанавливается равным значению поля привилегий (1106) запроса передачи вводной памяти (1101). 3начение необязательного поля выбора пространства (1283) транслированного запроса передачи данных памяти (1280) устанавливается равным значению поля выбора пространства (1107) запроса передачи вводной памяти (1101). Значение 8-битового поля фрейма (1284) адресного поля (1284, 1285) транслированного запроса передачи данных памяти (1205) устанавливается равным значению поля фрейма (1103) запроса передачи вводной памяти (1102), когда значение транзитного сигнала (1131) становится равным 1. В противном случае, значение 8-битового поля фрейма (1284) адресного поля (1284, 1285) транслированного запроса передачи данных памяти (1280) устанавливается равным значению идентификатора фрейма (1213) дескриптора страницы (1210), ассоциированного с запросом передачи данных памяти (1101). Значение 12 старших битов 24-битового поля смещения (1285) адресного поля (1284, 1285) транслированного запроса передачи данных памяти (1280) устанавливается равным значению вывода (1286) 12-битового модуль операции комбинирования (1273). 3начение 12 младших битов 24-битового поля смещения (1285) адресного поля (1284, 1285) транслированного запроса передачи данных памяти (1280) устанавливается равным значению 12 младших битов адресного поля (1104) запроса передачи данных памяти (1101).
Фиг. 13 представляет собой блок-схему (1300), иллюстрирующую операцию трансляции адресов памяти, выполняемую блоком управления (121 на Фиг. 1) блока ПОЗПДП (120 на Фиг. 1) в соответствии с предпочтительными вариантами выполнения данного изобретения, как описано на Фиг. 11 и Фиг. 12.
Блок схема начинается с шага 1301.
В шаге (1302) запрос передачи данных памяти принимается (1101) блоком управления (121) через целевой порт (128).
В шаге (1303) модуль выбора раздела (1130) обрабатывает запрос передачи данных памяти (1101), чтобы определить, как раздел, если такой имеется, ассоциирован с этим запросом передачи данных памяти. Проверки разрешений проводятся в отношении запросов передачи данных памяти, адресованных в адресное пространство системы (1122). Проверки также проводятся в отношении запросов передачи данных памяти, адресованных в адресное пространство пользователя с высоким приоритетом (1124), и доступности раздела, отображаемого в адресном пространстве этого пользователя с высоким приоритетом (1124).
В шаге (1304), если во время шага (1303) получено сообщение об ошибки, осуществляется переход к шагу (1308), в противном случае - к шагу (1305).
В шаге (1305) раздел, выбранный в шаге (1303), передается, как индекс раздела, в одноуровневый модуль поиска дескрипторов страниц с прямой индексацией (1150). 6 битов (1111) 32-битового адресного пространства (1102) запроса передачи данных памяти (11102), которые подразделяют каждое из 4 пространств (1121, 1122, 1123, 1124 на Фиг. 11) на 64 пространства, передаются в качестве индекса страницы в этот модуль поиска дескрипторов разбитых на разделы страниц (1150). Модуль поиска дескрипторов страниц находит значение запрошенного дескриптора страницы и выпускает это значение в качестве вывода. Вывод модуля поиска дескрипторов страниц принимается в качестве ввода модулем сборки и проверки разрешений (1170).
В шаге (1306) модуль проверки разрешений (1274 на Фиг. 12) выполняет проверку согласованности адреса передачи данных памяти, полученного в шаге (1302), и дескриптора страницы, выпущенного в шаге (1305).
В шаге (1307), если проверка согласованности, выполненная в шаге (1306), дает отрицательный результат, осуществляется переход к шагу (1308), в противном случае к шагу (1311).
В шаге (1308) генерируется сигнал ошибки (на 1140 или 1172).
В шаге (1309), если запрос передачи данных памяти, полученный в шаге (1302), является запросом записи, осуществляется переход к шагу (1317), в противном случае к шагу (1310).
В шаге (1310) выпускается ответ на запрос передачи данных памяти с нулевым значением в поле данных. Если протокол связи предусматривает такую возможность, для данного запроса передачи данных памяти возвращается состояние ошибки (1041 на Фиг. 10). Перейти к шагу (1317).
В шаге (1311) выполняется операция объединения шириной 12 бит (1273) и генерация полей транслированного запроса передачи данных памяти (1280).
В шаге (1312), если запрос передачи данных памяти, полученный в шаге (1202), является запросом записи, осуществляется переход к шагу (1313), в противном случае к шагу (1314).
В шаге (1313) выпускается запрос передачи данных памяти для записи на главный порт (129) блока ПОЗПДП (120). Перейти к шагу (1317).
В шаге (1314) выпускается запрос передачи данных памяти для считывания на главный порт (129) блока ПОЗПДП (120).
В шаге (1315) принимается соответствующий ответ на запрос передачи данных памяти для считывания на главный порт (129) блока ПОЗПДП (120).
В шаге (1316) передается результат этого ответа на запрос передачи данных памяти для считывания на целевой порт (128) блока ПОЗПДП (120).
Блок-схема останавливается на шаге (1317).
Во встроенных микросредах с сильно ограниченными ресурсами существует потребность в уменьшении объема аппаратных ресурсов, выделенных исключительно блоку ПОЗПДП (120 на Фиг. 1). В частности, в средах с ограниченными ресурсами (таких, как «Интернет вещей»), которые должны выполнять основанные на страницах схемы БУП для поддержки операционных систем общего назначения, таких как Linux, также существует давно ощущаемая потребность в инновационной архитектуре БУП, требующей для реализации меньший объем аппаратных цепей, чем традиционная основанная на страницах БУП, а также поддерживающая более быстрое выполнение программного обеспечения после обмена содержимого пользовательского адресного пространства. Также существует потребность в улучшении производительности программного обеспечения после выполнения задачи обмена процессами для схем БУП, применяющих буферы динамической трансляции. Также имеется давно ощущаемая потребность в средствах для экономически эффективного ускорения перепрограммирования дескрипторов региона с более низким уровнем безопасности и доступности для поддержки ускоренного обмена процессов и повышенной производительности системы.
Ссылаясь на Фиг. 12, альтернативный предпочтительный вариант выполнения данного изобретения вносит следующие изменения:
- Двухбитовое поле (1216) и двухбитовое поле (1217) не используются. Программное обеспечение с системной привилегией имеет право доступа ко всем данным. Периферийные устройства имеют право доступа ко всем данным.
- Поле 1212 содержит 8-битовое значение, которое может содержать 256 бит длин отдельных страниц. Первый набор из 128 длин страниц (со значениями от 0 до 127) имеет 4-кибибайтовую структурированность и отображает диапазон от 4 до 512 КБ. Второй набор из 128 длин страниц (со значениями от 128 до 255) имеет 128 КБ структурированность и отображает диапазон от 128 КБ до 16 мебибайт.
Эта альтернативная конфигурация обеспечивает улучшенную структурированность выделения памяти для дескриптора страницы (1210), при этом сохраняя длину дескриптора 32 бита. Большинство приложений во встроенных микроприложениях с ограниченными ресурсами сегодня требует менее 512 КБ памяти, поэтому их можно эффективно отображать в физической памяти с 4 КБ структурированностью. При необходимости, умелый специалист может легко увеличить структурированность длины страницы (1212) и структурированность смещения (1214).
Далее идет описание предпочтительного выполнения Фиг. 1, где блок ПОЗПДП (120) адаптирован средствами кэширования доступа к, как минимум, двум наборам (которые могут быть реализованы в виде двух таблиц) из минимум двух программируемых дескрипторов региона посредством генерации и отправки не менее одного запроса передачи памяти через главный порт (129) блока ПОЗПДП (120) и получения соответствующего ответа на главный порт (129). Данная конкретная адаптация позволяет напрямую хранить кэшированные дескрипторы региона в том же запоминающем устройстве (170), которому могут быть адресованы транслированные запросы передачи данных памяти. В частности, эти кэшированные таблицы дескрипторов регионов могут быть использованы для реализации второго уровня двухуровневой схемы буфера динамической трансляции, в которых первый уровень кэшированных элементов БДТ хранится в программируемых данных конфигурации блока ПОЗПДП. Отсоединение второго уровня элементов БДТ от программируемых данных конфигурации блока ПОЗПДП позволяет каждому адресному пространству пользователя иметь свою собственную выделенную таблицу буфера динамической трансляции второго уровня, хранящуюся в относительно большой и дешевой оперативной памяти, что обеспечивает более высокую скорость обращения БДТ второго уровня после обмена контекста. Например, первый уровень поиска БДТ может применять полностью ассоциативный поиск кэшированных дескрипторов БДТ, а второй уровень поиска БДТ может применять одноуровневый поиск кэшированных дескрипторов БДТ с прямой индексацией. В предпочтительных вариантах выполнения данного изобретения каждое программное приложение, имеющее отдельное адресное пространство пользователя, имеет свою собственную выделенную таблицу одноуровневого поиска кэшированных дескрипторов БДТ с прямой индексацией.
На Фиг. 14 представлена блок-схема, иллюстрирующая разбивку адресного пространства (1400) для получения доступа к программируемым данным конфигурации, хранящимся в запоминающем устройстве (123) блока ПОЗПДП (120), в соответствии с предпочтительным вариантом осуществления данного изобретения. На Фиг. 14 это адресное пространство памяти (1400) разделено на 23 поля (1401-1423).Длина каждого из 23 полей (1401-1423) составляет 32 бита. Это адресное пространство (1400) логически разделено на:
- первый непрерывный набор (1431) 6 полей (1401-1406), ассоциированных с конфигурацией системной части адресного пространства целевого порта (128) блока ПОЗПДП (120);
- второй непрерывный набор (1432) 6 полей (1407-1413), ассоциированных с конфигурацией пользовательской части адресного пространства целевого порта (128) блока ПОЗПДП (120); и
- третий непрерывный набор (1433) 10 полей (1414-1423), ассоциированных с конфигурацией кэша, который кэширует информацию, ассоциированную с системной или пользовательской частью адресного пространства целевого порта (128) блока ПОЗПДП (120).
Первый непрерывный набор (1431) полей включает в себя:
- 16-битовое поле (1401.а), которое содержит метаданные конфигурации, ассоциированные с первой таблицей дескриптора системного региона. Базовый относительный адрес первой таблицы дескриптора системного региона хранится в поле длиной 32 бита (1402).
- 16-битовое поле (1401.b), которое содержит метаданные конфигурации, ассоциированные со второй таблицей дескриптора системного региона. Базовый относительный адрес второй таблицы дескриптора системного региона хранится в поле длиной 32 бита (1403).
- Поле (1404 и 1405), которое содержит второй уровень трансляции адресов для системного региона. В частности, поле (1404) содержит максимальную длину адресного пространства системы в рамках первого уровня транслированного адресного пространства, а поле (1405) содержит смещение адресного пространства системы в рамках второго уровня транслированного адресного пространства.
Блок ПОЗПДП (120) адаптирован так, чтобы при записи любого значения в поля (1401, 1402, 1403, 1404, 1405) блок управления ПОЗПДП (121) уведомляется, что данные конфигурации для системной части адресного пространства на данный момент перепрограммируются. Блок ПОЗПДП (120) адаптирован так, чтобы при записи любого значения в поле (1406) блок управления ПОЗПДП (121) уведомляется, что перепрограммирование данных конфигурации для системной части адресного пространства завершилось.
Второй непрерывный набор (1431) полей включает в себя:
- 16-битовое поле (1407.а), которое содержит метаданные конфигурации, ассоциированные с первой таблицей дескриптора пользовательского региона. Базовый относительный адрес первой таблицы дескриптора пользовательского региона хранится в поле длиной 32 бита (1408).
- 16-битовое поле (1407.b), которое содержит метаданные конфигурации, ассоциированные со второй таблицей дескриптора пользовательского региона. Базовый относительный адрес второй таблицы дескриптора пользовательского региона хранится в поле длиной 32 бита (1409).
- Поле (1410) используется для помощи управляющей системе в расчете хэш-трансформации для ассоциации региона вводного адресного пространства с дескриптором региона, содержащемся в хэш-индексированной одноуровневой таблице дескрипторов. Значение хэша записывается в поле (1410). Хэшированное значение затем считывается из поля (1410).
- Поля (1411) и (1412), которые содержат второй уровень трансляции адресов для пользовательского региона. В частности, поле (1411) содержит максимальную длину адресного пространства пользователя в рамках первого уровня транслированного адресного пространства, а поле (1412) содержит смещение адресного пространства пользователя в рамках второго уровня транслированного адресного пространства.
Блок ПОЗПДП (120) адаптирован так, чтобы при записи любого значения в поля (1407, 1408, 1409, 1410, 1411, 1412) блок управления ПОЗПДП (121) уведомляется, что данные конфигурации для пользовательской части адресного пространства на данный момент перепрограммируются. Блок ПОЗПДП (120) адаптирован так, чтобы при записи любого значения в поле (1413) блок управления ПОЗПДП (121) уведомляется, что перепрограммирование данных конфигурации для пользовательской части адресного пространства завершилось.
Третий непрерывный набор (1431) полей включает в себя:
- Первую 128-битовую строку кэша ({1415-1418}).
- Вторую 128-битовую строку кэша ({1419-1422}).
- Поле (1414), которое содержит данные тега для первой строки кэша ({1415-1418}) и второй строки кэша ({1419-1422}).
Блок ПОЗПДП (120) адаптирован так, чтобы при записи любого значения в поля (14146 1415, 1416, 1417, 1418, 1419, 1420, 1421, 1422) блок управления ПОЗПДП (121) уведомляется, что данные конфигурации для кэша на данный момент перепрограммируются. Блок ПОЗПДП адаптирован так, чтобы при записи любого значения в поле (1413) блок управления ПОЗПДП (121) уведомляется, что перепрограммирование данных конфигурации для кэша завершилось.
В предпочтительном варианте выполнения данного изобретения поля кэша (1433) программируемых данных конфигурации блока ПОЗПДП (120) адаптированы для реализации буфера динамической трансляции для дескрипторов региона, где:
- первая 128-битовая строка кэша ({1415-1418}) адаптирована для хранения первый 128-битовый дескриптор региона; и
- вторая 128-битовая строка кэша ({1419-1422}) адаптирована для хранения первый 128-битовый дескриптор региона.
В предпочтительных вариантах выполнения данного изобретения два 128-битовых дескриптора региона используются для кэширования дескрипторов региона, ассоциированных с пользовательским или системным пространством.
Фиг. 15 представляет собой блок-схему, иллюстрирующую 16-битовой поле метаданных конфигурации (1510), применяемое на Фиг. 14, в соответствии с предпочтительным вариантом выполнения данного изобретения. Это поле метаданных конфигурации (1510) применяется в полях (1401.a, 1402.b, 1407.а, 1407.b) программируемых данных конфигурации, хранящихся в запоминающем устройстве (123) блока ПОЗПДП (120).Поля 16-битового поля метаданных конфигурации (1510) включают в себя:
- 1-битовое поле (1511), указывающее, активирована ли таблица дескриптора региона, ассоциированная с этим полем метаданных конфигурации.
- 1-битовое поле (1512), указывающее, используется ли линейная прямо-отображаемая или нелинейная прямо-отображаемая схема индексации для доступа к дескриптору региона в этой таблице дескрипторов региона.
- 3-битовое поле (1513), содержащее количество дескрипторов региона в таблице. В предпочтительных вариантах выполнения данного изобретения число дескрипторов региона можно выбирать из одной из следующих 8 длин таблицы: 8, 16, 32, 64, 128, 256, 512 и 1024 дескрипторов региона.
- 3-битовое поле (1514), указывающее на закодированный формат дескрипторов региона. 5 примеров формата кодирования включают в себя:
Таблица дескрипторов страницы длиной 32 бита.
Таблица дескрипторов сегмента длиной 64 бита.
Таблица кэшированных дескрипторов страницы длиной 64 бита.
Таблица кэшированных дескрипторов сегмента длиной 128 бит.
Таблица дескрипторов таблицы длиной 32 бита, указывающих на таблицы дескрипторов.
- 6-битовое поле (1515), указывающее максимальную длину страницы или максимальную длину сегмента, как наиболее подходящую для заданного типа дескриптора. В предпочтительном варианте выполнения данного изобретения 6-битовое бинарное значение 000000 кодирует десятичное значение 1, а 6-битовое значение 111111 кодирует десятичное значение 64. 3начение максимальной длины поля рассчитывается, как 2 в степени (^) десятичного значения этого 6-битового поля. Таким образом, если десятичное значения 6-битового поля равно 32, максимальная расчетная длина будет (2^32) = 4 гибибайта.
- 1-битовое поле (1516), указывающее, применяется ли дополнительная проверка длины после завершения первой операции трансляции адресов.
- 1-битовое поле (1517), указывающее, применяется ли вторая трансляции адресов после завершения первой операции трансляции адресов.
Фиг. 16 представляет собой блок-схему, дескриптор региона (1600), применяемого на Фиг. 14, в соответствии с предпочтительным вариантом выполнения данного изобретения.
Если дескриптор региона (1600) сконфигурирован, как 32-битовый дескриптор страницы, поля Фиг. 16 используются следующим образом: 1-битовое поле (1611), указывающее, активирован ли этот дескриптор региона. 1-битовое поле (1612), указывающее, разрешен ли периферийным устройствам одновременный доступ на «чтение данных» и «запись» к региону памяти, ассоциированному с этим дескриптором региона. 1-битовое поле (1613), указывающее, разрешен ли управляющему программному обеспечению одновременный доступ на «чтение данных», «запись» и «чтение для выполнения» к региону памяти, ассоциированному с этим дескриптором региона. 3-битовое поле (1614), содержащее разрешения на «чтение данных», «запись» и «чтения для выполнения» для пользовательского программного обеспечения, соответственно. 26-битовое поле (1615), содержащее идентификатор фрейма для этой страницы. Поля (1621, 1622, 1623, 1624, 1625, 1631, 1635, 1640) не используются.
Если дескриптор региона (1600) сконфигурирован, как 64-битовый дескриптор сегмента, поля Фиг. 16 используются следующим образом: 1-битовое поле (1611), указывающее, активирован ли этот дескриптор региона. 1-битовое поле (1612), указывающее, разрешен ли периферийным устройствам одновременный доступ на «чтение данных» и «запись» к региону памяти, ассоциированному с этим дескриптором региона. 1-битовое поле (1613), указывающее, разрешен ли управляющему программному обеспечению одновременный доступ на «чтение данных», «запись» и «чтение для выполнения» к региону памяти, ассоциированному с этим дескриптором региона. 3-битовое поле (1614), содержащее разрешения на «чтение данных», «запись» и «чтения для выполнения» для пользовательского программного обеспечения, соответственно. 26-битовое поле (1615), содержащее смещение внутри транслированного адресного пространства для этого региона с 64-байтовой структурированностью. 26-битовое поле (1625), содержащее длину выделенной части этого сегмента с 64-байтовой структурированностью. Поля (1621, 1622, 1623, 1624) зарезервированы для будущего использования. Поля (1625, 1631, 1635, 1640) не используются.
Если дескриптор региона (1600) сконфигурирован, как 64-битовый кэшированный дескриптор страницы, поля Фиг. 16 используются следующим образом: 1-битовое поле (1611), указывающее, активирован ли этот дескриптор региона. 1-битовое поле (1612), указывающее, разрешен ли периферийным устройствам одновременный доступ на «чтение данных» и «запись» к региону памяти, ассоциированному с этим дескриптором региона. 1-битовое поле (1613), указывающее, разрешен ли управляющему программному обеспечению одновременный доступ на «чтение данных», «запись» и «чтение для выполнения» к региону памяти, ассоциированному с этим дескриптором региона. 3-битовое поле (1614), содержащее разрешения на «чтение данных», «запись» и «чтения для выполнения» для пользовательского программного обеспечения, соответственно. 26-битовое поле (1615), содержащее смещение внутри транслированного адресного пространства для этого региона с 64-байтовой структурированностью. 26-битовое поле (1625), содержащее идентификатор страницы этого дескриптора региона с 64-байтовой структурированностью. 1-битовое поле (1621), содержащее записанный в данные («грязный») флаг для этого кэшированного дескриптора региона. 1-битовое поле (1622), содержащее считанный из данных флаг для этого кэшированного дескриптора региона. 1-битовое поле (1263), содержащее правила кэширования, применяемые для запросов передачи данных памяти, адресованных в область памяти внутри региона, ассоциированного с этим дескриптором региона. Поле (1624) зарезервировано для будущего использования. Поля (1625, 1631, 1635, 1640) не используются.
Если дескриптор региона (1600) сконфигурирован, как 128-битовый кэшированный дескриптор сегмента, поля Фиг. 16 используются следующим образом: 1-битовое поле (1611), указывающее, активирован ли этот дескриптор региона. 1-битовое поле (1612), указывающее, разрешен ли периферийным устройствам одновременный доступ на «чтение данных» и «запись» к региону памяти, ассоциированному с этим дескриптором региона. 1-битовое поле (1613), указывающее, разрешен ли управляющему программному обеспечению одновременный доступ на «чтение данных», «запись» и «чтение для выполнения» к региону памяти, ассоциированному с этим дескриптором региона. 3-битовое поле (1614), содержащее разрешения на «чтение данных», «запись» и «чтения для выполнения» для пользовательского программного обеспечения, соответственно. 26-битовое поле (1615), содержащее смещение внутри транслированного адресного пространства для этого региона с 64-байтовой структурированностью. 1-битовое поле (1621), содержащее записанный в данные («грязный») флаг для этого кэшированного дескриптора региона. 1-битовое поле (1622), содержащее считанный из данных флаг для этого кэшированного дескриптора региона. 1-битовое поле (1263), содержащее правила кэширования, применяемые для запросов передачи данных памяти, адресованных в область памяти внутри региона, ассоциированного с этим дескриптором региона. Поле (1624) зарезервировано для будущего использования. 26-битовое поле (1625), содержащее идентификатор сегмента этого дескриптора региона с 64-байтовой структурированностью. 26-битовое поле (1635), содержащее длину выделенной части этого сегмента с 64-байтовой структурированностью. Поля (1631, 1640) зарезервированы для будущего использования.
Если дескриптор региона (1600) сконфигурирован, как 32-битовый дескриптор таблицы, поля Фиг. 16 используются следующим образом: 1-битовое поле (1611), указывающее, активирован ли этот дескриптор региона. 26-битовое поле (1615), содержащее адрес (в транслированном адресном пространстве) таблицы дескрипторов региона. Поля (1612, 1613, 1614) зарезервированы для будущего использования.
В предпочтительных вариантах выполнения данного изобретения дескрипторы региона длиной N бит упорядочены в памяти на N бит.
Фиг. 17 представляет собой гибридную блок-схему и схему потоков данных, частично иллюстрирующую аппарат (1700) в соответствии с предпочтительным вариантом выполнения данного изобретения, как описано с ссылкой на Фиг. 1, 14, 15 и 16. Ядро процессора (110) и его главный порт (111) на Фиг. 17 описываются в текстовом описании Фиг. 1. Блок ПОЗПДП (120) и его ассоциированный ярлыки (121, 123, 128, 129, 130, 131, 134, 130) на Фиг. 17 описываются в текстовом описании Фиг. 1. Аппарат (1700) также включает в себя: целевой порт IRQ (1711) на ядре (110); и главный порт IRQ (1728) на блоке ПОЗПДП (120), подключенный к целевому порту IRQ (1711).
Программируемые данные конфигурации, хранящиеся в запоминающем устройстве (123) блока ПОЗПДП (120) адаптированы в соответствии к текстовым описанием Фиг. 14.
Ярлык (1710) иллюстрирует вводное адресное пространство, равномерное разделенное на адресное пространство системы (1711) и адресное пространство пользователя (1712). Ярлык (1720) иллюстрирует транслированное адресное пространство. Запросы передачи данных памяти, выпущенные через главный порт (129) блока ПОЗПДП, адресованы на это транслированное адресное пространство (1720).
Ярлык (1402 на Фиг. 17) показывает, что базовое смещение адреса первого поля таблицы дескриптора системного региона (1402 на Фиг. 14) ассоциировано с таблицей дескриптора системного региона (1421), хранящей 8 дескрипторов региона. Адресное пространство системы (1711) вводного адресного пространства (1710) порта (128) ассоциировано с первой таблицей дескриптора системного региона (1421), хранящейся в транслированном адресном пространстве (1720).
Ярлык (1408 на Фиг. 17) показывает, что базовое смещение адреса первого поля таблицы дескриптора пользовательского региона (1408 на Фиг. 14) ассоциировано с таблицей дескриптора пользовательского региона (1422), хранящей 8 дескрипторов региона. Адресное пространство пользователя (1712) вводного адресного пространства (1710) порта (128) ассоциировано с первой таблицей дескриптора пользовательского региона (1422), хранящейся в транслированном адресном пространстве (1720).
Ярлык ({1415-1418} на Фиг. 17) показывает, что один из дескрипторов региона из таблицы дескрипторов пользовательского региона (1423) кэшируется в первой 128-битовой строке кэша ({1415-1418}) на Фиг. 14. В данном выполнении таблица дескрипторов региона (1423) хранит 16 дескрипторов региона. Адресное пространство пользователя (1712) ассоциировано с таблицей дескриптора пользовательского региона (1423), хранящейся в транслированном адресном пространстве (1720).
Регион (1725) ассоциирован с дескриптором региона, кэшированным в первой 128- битовой строке кэша [{1415-1418}]. Адресное пространство пользователя (1712) ассоциировано с регионом (1725), хранящимся в транслированном адресном пространстве (1720).
В предпочтительном варианте выполнения данного изобретения таблица дескриптора системного региона (1421) сконфигурирована по одной из следующих 2 схем:
- Схема одноуровневой таблицы сегментов с прямым отображением индекса;
- Схема одноуровневой таблицы кэшированных страниц с прямым отображением индекса для второго уровня двухуровневой схемы БДТ.
В предпочтительном варианте выполнения данного изобретения: таблица дескрипторов региона (1422) содержит первый уровень двухуровневой схемы таблицы с прямым отображением индекса; и таблица дескрипторов региона (1423) содержит второй уровень двухуровневой схемы таблицы с прямым отображением индекса.
В предпочтительном варианте выполнения данного изобретения дескриптор региона для первого уровня двухуровневой схемы таблицы с прямым отображением индекса и дескриптор региона для второго уровня двухуровневой схемы таблицы с прямым отображением индекса последовательно загружаются в ту же самую строку кэша ({1415-1418}) во время операции поиска по двухуровневой таблице.
В дальнейшем предпочтительном варианте выполнения данного изобретения блок управления (121 на Фиг. 17) блока ПОЗПДП (120 на Фиг. 17) адаптирован при помощи дополнительного интерфейса главного устройства шины (1729). Блок ПОЗПДП (121 на Фиг. 17) далее адаптирован средствами предоставления двух одновременных допусков к транслированному адресному пространству (1720) для считывания двух элементов дескриптора региона, хранящихся в двух запоминающих устройствах одновременно.
Фиг. 18 представляет собой блок-схему (1800), иллюстрирующую операцию трансляции адресов памяти, выполняемую блоком управления (121 на Фиг. 17) блока ПОЗПДП (121 на Фиг. 17) в соответствии с Фиг. 14, 15, 16 и 17. На этой педагогической блок-схеме блок ПОЗПДП адаптирован только для отправки запросов в одноуровневые таблицы дескрипторов региона с прямым отображением.
Блок схема начинается с шага (1801).
В шаге (1802) запрос передачи данных памяти принимается блоком управления (121 на Фиг. 17) блока ПОЗПДП (120) через целевой порт (128).
В шаге (1803) содержимое поля данных тэга кэша (1414 на Фиг. 14) и содержимое двух 128-битовых полей строки кэша ({1415-1418}) и ({1419-1422}) запрашиваются, чтобы определить, которая, если имеется, из двух 128-битовых строк кэша ассоциирована с этим запросом передачи данных памяти.
В шаге (1804), если ни одна из строк кэша не ассоциирована с этим запросом передачи данных памяти, осуществляется переход к шагу (1805), в противном случае к шагу (1809).
В шаге (1805) содержимое метаданных конфигурации, ассоциированных с: первой таблицей дескриптора системного региона (1401.а) на Фиг. 14, второй таблицей дескриптора системного региона (1401.b), первой таблицей дескриптора пользовательского региона (1407.а) и второй таблицей дескриптора пользовательского региона (1407.b) запрашиваются для определения базового смещения адреса (1402, 1403, 1408, 1409) таблицы дескрипторов региона, связанных с запросом передачи данных памяти.
В шаге (1806) выпускается запрос передачи данных пакетной памяти на чтение для считывания дескриптора региона, ассоциированного с этим запросом передачи данных памяти из таблицы дескриптора региона, выбранного в шаге (1805). Длина запроса передачи данных пакетной памяти определяется в соответствии с типом дескриптора региона, указанным полем схемы кодирования дескриптора региона (1515 на Фиг. 15) метаданных конфигурации, ассоциированных с этим запросом передачи данных памяти.
В шаге (1807) значение выбранного элемента дескриптора региона загружается в наиболее давно использованную строку кэша из двух 128-битовых строк кэша ({1415-1418}) b ({1419-1422}).
В шаге (1808) инспектируется значение элемента дескриптора региона, полученного в (1807).
В шаге (1809), если элемент дескриптора региона не активирован, осуществляется переход на шаг (1813). Если дескриптор региона является кэшированным дескриптором региона, не связанным с адресом запроса передачи данных памяти в шаге (1802), то осуществляется переход на шаг (1813). Перейти к шагу (1810).
В шаге (1810) дескриптор региона, хранящийся в строке кэша, ассоциированной с запросом передачи данных памяти, полученным блоком управления через порт (128) в шаге (1802), принимается модулем сборки и проверки разрешений этого блока ПОЗПДП.
В шаге (1811) модуль проверки разрешений выполняет проверку согласованности адреса передачи данных памяти, принятого в шаге, и дескриптора сегмента, полученного в шаге (1810).
В шаге (1812), если проверка согласованности дает отрицательный результат, осуществляется переход к шагу (1813), в противном случае к шагу (1816).
В шаге (1813) генерируется событие уведомления об ошибки посредством отправки сигнала прерывания на порт (1728) блока ПОЗПДП (120) на Фиг. 17.
В шаге (1814), если запрос передачи данных памяти, полученный в шаге (1802), является запросом записи, то осуществляется переход к шагу (1815), в противном случае к шагу (1820).
В шаге (1815) выпускается ответ на запрос передачи данных памяти с нулевым значением в поле данных (1043). Если протокол связи предусматривает возможность сообщения об ошибках, для данного запроса передачи данных памяти возвращается состояние ошибки (1041). Перейти к шагу (1822).
В шаге (1814) выполняется трансляция адреса памяти и генерация полей транслированного запроса передачи данных памяти.
В шаге (1817), если запрос передачи данных памяти, полученный в шаге (1802), является запросом записи, то осуществляется переход к шагу (1818), в противном случае к шагу (1819).
В шаге (1818) выпускается запрос передачи данных памяти для записи на главный порт (1818) блока ПОЗПДП. Перейти к шагу (1822).
В шаге (1819) выпускается запрос передачи данных памяти для чтения на главный порт (129) блока ПОЗПДП.
В шаге (1820) принимается соответствующий ответ на запрос передачи данных памяти для считывания на главный порт (129).
В шаге (1821) передается результат этого ответа на запрос передачи данных памяти для считывания на целевой порт (128).
Блок-схема останавливается на шаге (1822).
В предпочтительном варианте выполнения данного изобретения шаги (1805), (1806), (1808) и (1809) далее адаптируются для приема и оценки двух дескрипторов региона. Например, поиск дескрипторов региона, хранящихся в ассоциативной таблице двойной группировки кэшированных дескрипторов региона. Адаптация может быть легко выполнена специалистом, знакомым с реализацией ассоциативных схем кэширования.
В предпочтительном варианте выполнения данного изобретения шаги (1805), (1806), (1808) и (1809) далее адаптируются для выполнения двухуровневого поиска по дескрипторам региона. Адаптация может быть легко выполнена специалистом, знакомым с реализацией двухуровневых схем БУП.
Существует длительная потребность в архитектуре БУП, имеющей низкое значение задержки, высокую пропускную способность, работу с постоянным временем с поддержкой относительно мелкоструктурного выделения памяти в 32- и 64-битовом вводном адресном пространстве. На рынке микроконтроллеров также существует потребность в блоке ПОЗПДП, который может работать, как блок защиты памяти (БЗП) и как БУП для запуска операционных систем реального времени (ОСРВ) с высоким уровнем безопасности и доступности. Это обусловлено тем, что многие ОСРВ с высоким уровнем безопасности и доступности полагаются на доступность аппаратного БУП с возможностью трансляции адресов. Также имеется давно ощущаемая потребность в средствах для экономически эффективного ускорения перепрограммирования дескрипторов региона с более низким уровнем безопасности и доступности для поддержки ускоренного обмена процессов и повышенной производительности системы.
Фиг. 19 представляет собой блок-схему, иллюстрирующую различные поля, которые могут присутствовать дескрипторе диапазона (1910), который был адаптирован с правилами программируемой трансляции адресов памяти в соответствии с предпочтительным вариантом выполнения данного изобретения. Адрес нижней границы и адрес верхней границы диапазона хранится в полях (1914) и (1918), соответственно. Поле (1911) содержит 1-битовое разрешающее поле «чтение данных» для доступа к привилегированному пользовательскому программному обеспечению. Поле (1912) содержит 1-битовое разрешающее поле «запись» для доступа к привилегированному пользовательскому программному обеспечению. Поле (1913) содержит 1-битовое разрешающее поле «чтение для выполнения» для доступа к привилегированному пользовательскому программному обеспечению. Поле (1914) содержит 29-битовый адрес нижней границы непрерывного региона вводного адресного пространства, ассоциированного с этим дескриптором диапазона. Поле (1915) содержит 1-битовое разрешающее поле «чтение данных» для доступа к привилегированному пользовательскому программному обеспечению. Поле (1916) содержит 1-битовое разрешающее поле «запись» для доступа к привилегированному пользовательскому программному обеспечению. Поле (1917) содержит 1-битовое разрешающее поле «чтение для выполнения» для доступа к привилегированному пользовательскому программному обеспечению. Поле (1918) содержит 29-битовый адрес верхней границы непрерывного региона вводного адресного пространства, ассоциированного с этим дескриптором диапазона. Длина этого региона рассчитывается вычитанием значения адреса нижней границы (1914) из значения адреса верхней границы (1918) и добавлением 1. Поле (1920) содержит 1-битовое значение, указывающее, активирован ли данный дескриптор диапазона. Поле (1921) содержит 1-битовое значение, указывающее, активирована ли трансляция адресов памяти для данного дескриптора диапазона. Поле (1922) содержит 30-битовое знаковое значение, используемое для трансляции адреса вводного адресного пространства в адрес транслированного адресного пространства. Старший бит (1923) содержит знак (+/-) оставшихся 29 битов (1924).
Фиг. 20 представляет собой блок-схему (2000), поля запроса передачи данных памяти (2001) в соответствии с предпочтительным вариантом выполнения данного изобретения. Запрос передачи данных памяти (2001) включает в себя поля (2005-2013). Поле (2005) содержит 3-битовое (2006, 2007, 2008) управляющее поле для данного запроса передачи данных памяти (2001).Поле (2006) содержит 1-битовое разрешающее поле «чтение данных» для доступа к привилегированному пользовательскому программному обеспечению. Поле (2007) содержит 1-битовое разрешающее поле «запись» для доступа к привилегированному пользовательскому программному обеспечению. Поле (2008) содержит 1-битовое разрешающее поле «чтение для выполнения» для доступа к привилегированному пользовательскому программному обеспечению. Поле (2009) содержит 2-битовое (2010, 2011) значение привилегии, указывающее на привилегию уровня пользователя (2010) или привилегию уровня системы (2011) для данного запроса передачи данных памяти (2001). Поле (2012) содержит 32-битовый адрес вводного адресного пространства, ассоциированного с этим запросом передачи данных памяти (2001). Поле (2013) отображается на 29 старших битов этого 32-битового адреса (2012).
Фиг. 21 представляет собой гибридную принципиальную блок-схему и диаграмму потоков данных, частично иллюстрирующую предпочтительный вариант выполнения (2100) данного изобретения, где блок ПОЗПДП (120) на Фиг. 1 адаптирован для использования двух блоков управления памятью (2101, 2140). Программируемые данные конфигурации, хранящиеся в запоминающем устройстве (123), описаны в текстовом описании Фиг. 1. Целевой порт (134) адаптирован для получения запроса передачи данных памяти для получения доступа к элементам дескриптора региона, хранящимся внутри запоминающего устройства (123) на Фиг. 21, как указано в текстовом описании Фиг. 1. Ярлык (2001) на Фиг. 21 представляет собой запрос передачи данных памяти (2001) с Фиг. 20. Первый БУП (2101) использует 8 дескрипторов диапазона (2111-2118), которые были адаптированы с применением правил программируемой трансляции адресов памяти, как проиллюстрировано дескриптором диапазона (1910) на Фиг. 19. В этом выполнении 8 дескрипторов диапазона (2111-2118) оцениваются параллельно для каждого запроса передачи данных памяти.
Модуль сравнения дескриптора диапазона (2121) получает в качестве ввода запрос передачи данных памяти (2001) и значение дескриптора диапазона (2111) и генерирует вывод, который принимается в качестве ввода в агрегатор модуля сравнения (2130). Модуль сравнения дескриптора диапазона (2123) получает в качестве ввода запрос передачи данных памяти (2001) и значение дескриптора диапазона (2113) и генерирует вывод, который принимается в качестве ввода в агрегатор модуля сравнения (2130). Модуль сравнения дескриптора диапазона (2124) получает в качестве ввода запрос передачи данных памяти (2001) и значение дескриптора диапазона (2114) и генерирует вывод, который принимается в качестве ввода в агрегатор модуля сравнения (2130). Модуль сравнения дескриптора диапазона (2125) получает в качестве ввода запрос передачи данных памяти (2001) и значение дескриптора диапазона (2115) и генерирует вывод, который принимается в качестве ввода в агрегатор модуля сравнения (2130). Модуль сравнения дескриптора диапазона (2126) получает в качестве ввода запрос передачи данных памяти (2001) и значение дескриптора диапазона (2116) и генерирует вывод, который принимается в качестве ввода в агрегатор модуля сравнения (2130). Модуль сравнения дескриптора диапазона (2127) получает в качестве ввода запрос передачи данных памяти (2001) и значение дескриптора диапазона (2117) и генерирует вывод, который принимается в качестве ввода в агрегатор модуля сравнения (2130). Модуль сравнения дескриптора диапазона (2128) получает в качестве ввода запрос передачи данных памяти (2001) и значение дескриптора диапазона (2118) и генерирует вывод, который принимается в качестве ввода в агрегатор модуля сравнения (2130). Функционал дескрипторов диапазона (2111-2118) описан на Фиг. 22.
Второй блок управления памятью (2140) представляет собой блок ПОЗПДП, адаптированный для использования схемы БУП, основанной на 32-битовых страницах, с минимум двумя уровнями таблиц трансляции.
Модуль агрегации результата сравнения (2130) адаптирован для:
- Генерирования каскадного флага вывода (2134), который подается в качестве ввода на второй БУП (2140), указывающий, если адрес (2012) запроса передачи данных памяти (2001) следует транслировать этим вторым БУП (2140).
- Генерирования каскадного флага вывода (2132), который подается в качестве ввода выборки на концентратор с 2 входами и 1 выходом (2150).
- Генерирования транслированного запроса передачи данных памяти в качестве вывода (2133), который подается в качестве первого входа данных на концентратор с 2 входами и 1 выходом (2150).
- Генерирования ошибки транзакции в качестве вывода (2131), который подается в качестве ввода в блок агрегации ошибок (2160), который отвечает за агрегацию событий ошибок.
- Второй блок управления памятью (2140) адаптирован для:
- Генерирования транслированного запроса передачи данных памяти в качестве вывода (2141), который подается в качестве второго входа данных на концентратор с 2 входами и 1 выходом (2150).
- Генерирования ошибки транзакции в качестве вывода (2142), который подается в качестве ввода в блок агрегации ошибок (2160), который отвечает за агрегацию событий ошибок.
Блок агрегации ошибок (2160) выдает событие ошибки в качестве вывода (2161), когда первый БУП (2101) выдает ошибку (2131) или когда второй БУП (2140) выдает ошибку (2142).
Концентратор с 2 входами и 1 выходом (2150) генерирует в качестве вывода (2151) транслированный запрос передачи данных памяти. Если блок агрегации ошибок не выдает событие ошибки (2161), этот транслированный запрос передачи данных памяти (2151) выпускается в качестве вывода через главный порт (129) блока ПОЗПДП (120).
Фиг. 22 представляет собой гибридную блок-схему и диаграмму потоков данных, частично иллюстрирующую модуль сравнения дескриптора диапазона (2200) в соответствии с предпочтительным вариантом выполнения данного изобретения. Ярлыки (1911, 1192, 1193, 1914, 1915, 1916, 1917, 1918, 1921, 1923, 1920 и 1924) на Фиг. 22 описываются в тексте описания дескриптора диапазона (1910) на Фиг. 19. Ярлыки (2006, 2007, 2008 и 2013) описываются в тексте описания запроса передачи данных памяти (2001) на Фиг. 20. Модуль сравнения (2220) включает в себя следующие субмодули:
- Модуль сравнения «больше или равно» (2210) получает значение старших 29 битов (2013) 32-битового адреса (2012) запроса передачи данных памяти (2001) и сравнивает его со значением 29-битового адреса нижней границы (1914) непрерывного региона вводного адресного пространства и генерирует 1-битовое значение в качестве вывода, если значение адреса (2012) больше или равно значению адреса нижней границы (2013) непрерывного региона вводного адресного пространства. В противном случае модуль сравнения (2210) генерирует в качестве вывода однобитовое значение 0. Это однобитовое значение передается, как первый ввод в модуль «И» с 3 входами и 1 выходом (2122).
- Модуль сравнения «меньше или равно» (2211) сравнивает значение старших 29 битов (2013) 32-битового адреса (2012) запроса передачи данных памяти (2001) и сравнивает его со значением 29-битового адреса верхней границы (1918) непрерывного региона вводного адресного пространства и генерирует 1-битовое значение в качестве вывода, если значение адреса (2012) меньше или равно значению адреса нижней границы (2013) непрерывного региона вводного адресного пространства. В противном случае модуль сравнения (2211) генерирует в качестве вывода однобитовое значение 0. Это однобитовое значение передается, как второй ввод в модуль «И» с 3 входами и 1 выходом (2122).
- Значение флага активации дескриптора диапазона (1920) передается в качестве третьего ввода в модуль «И» с 3 входами и 1 выходом (2122). Если каждый из трех входов модуля «И» с 3 входами и 1 выходом (2212) представляет собой однобитовое значение 1, то модуль «И» (2212) выдает однобитовое значение 1. В противном случае вывод модуля «И» (2212) равен однобитовому значению 0.
- Вывод этого модуля «И» (2212) передается в качестве значения для активного поля дескриптора диапазона (2236) вывода (2240). Это поле (2236) указывает, ассоциирован ли этот запрос передачи данных памяти (2001) с этим дескриптором диапазона (1910).
- Модуль трансляции адресов (2213) выполняет знаковое арифметическое сложение значения без знака старших 29 битов (2013) 32-битового адреса (2012) запроса передачи данных памяти (2001) и значения знакового 30-битового значения (1922), которое используется для трансляции адреса вводного адресного пространства в адрес транслированного адресного пространства.
- 29-битовый концентратор с 2 входами и 1 выходом (2216) получает в качестве своего второго ввода данных вывод знаковой арифметической операции. Концентратор (2216) получает в качестве своего первого ввода данных постоянное 29-битовое значение, равное 0 (т.е. все 29 битов устанавливаются равными постоянному однобитовому значению 0).
- Модуль 2215 получает в качестве ввода вывод модуля «И» (2122) с 2 входами и 1 выходом, который указывает, ассоциирован ли этот запрос передачи данных памяти с этим дескриптором диапазона. Если значение поля активации трансляции (1921) этого дескриптора диапазона активировано и вывод модуля (2122) представляет собой однобитовое значение 1, то вывод модуля (2215) представляет собой однобитовое значение 1, в противном случае выводом этого модуля (2215) будет однобитовое значение 0.
- Вывод модуля (2215) передается в качестве значения для активного поля трансляции (2237) вывода (2240).
- Вывод модуля (2215) передается в качестве входа выборки на 29-битовый концентратор с 2 входами 1 выходом (2216). Если значение входа выборки равно однобитовому значению 1, значение первого входа данных в концентратор (2216), содержащее транслированный адрес, выпускается в качестве вывода концентратора (2216). В противном случае значение второго ввода данных в концентратор (2216), содержащее постоянное значение 0, выпускается, как вывод концентратора (2216).
- Модуль проверки разрешений (2220) получает в качестве ввода значение поля пользовательского разрешения (1911) на «считывание данных» (2006) запроса передачи данных памяти, значение уровня привилегии (2009) запроса передачи данных памяти (2001) и вывод модуля (2212), который указывает, ассоциирован ли этот запрос передачи данных памяти с этим дескриптором диапазона. Модуль проверки разрешений (2220) оценивает свои вводы и выдает однобитовое значение 1, если проверка разрешений дает отрицательный результат, или однобитовое значение 0 в противном случае.
- Модуль проверки разрешений (2221) получает в качестве ввода значение поля пользовательского разрешения на «запись» (1912), значение поля «записи» (2007) запроса передачи данных памяти, значение уровня привилегии (2009) запроса передачи данных памяти (2001) и вывод модуля (2212), который указывает, ассоциирован ли этот запрос передачи данных памяти с этим дескриптором диапазона. Модуль проверки разрешений (2221) оценивает свои вводы и выдает однобитовое значение 1, если проверка разрешений дает отрицательный результат, или однобитовое значение 0 в противном случае.
- Модуль проверки разрешений (2222) получает в качестве ввода значение поля пользовательского разрешения на «считывание для выполнения» (1913), значение поля «считывание для выполнения» (2008) запроса передачи данных памяти, значение уровня привилегии (2009) запроса передачи данных памяти (2001) и вывод модуля (2212), который указывает, ассоциирован ли этот запрос передачи данных памяти с этим дескриптором диапазона. Модуль проверки разрешений (2222) оценивает свои вводы и выдает однобитовое значение 1, если проверка разрешений дает отрицательный результат, или однобитовое значение 0 в противном случае.
- Модуль проверки разрешений (2223) получает в качестве ввода значение поля «чтение для выполнения» (2006) запроса передачи данных памяти, значение уровня привилегии (2009) запроса передачи данных памяти (2001) и вывод модуля (2212), который указывает, ассоциирован ли этот запрос передачи данных памяти с этим дескриптором диапазона. Модуль проверки разрешений (2223) оценивает свои вводы и выдает однобитовое значение 1, если проверка разрешений дает отрицательный результат, или однобитовое значение 0 в противном случае.
- Модуль проверки разрешений (2224) получает значение поля системного разрешения на «запись» (1916), значение поля «записи» (2007) запроса передачи данных памяти, значение уровня привилегии (2009) запроса передачи данных памяти (2001) и вывод модуля (2212), который указывает, ассоциирован ли этот запрос передачи данных памяти с этим дескриптором диапазона. Модуль проверки разрешений (2224) оценивает свои вводы и выдает однобитовое значение 1, если проверка разрешений дает отрицательный результат, или однобитовое значение 0 в противном случае.
- Модуль проверки разрешений (2225) получает в качестве ввода значение поля системного разрешения на «считывание для выполнения» (1917), значение поля «считывание для выполнения» (2008) запроса передачи данных памяти, значение уровня привилегии (2009) запроса передачи данных памяти (2001) и вывод модуля (2212), который указывает, ассоциирован ли этот запрос передачи данных памяти с этим дескриптором диапазона. Модуль проверки разрешений (2225) оценивает свои вводы и выдает однобитовое значение 1, если проверка разрешений дает отрицательный результат, или однобитовое значение 0 в противном случае.
- Выводы модуля проверки разрешений (2220-2225) передаются в качестве ввода в блок агрегации ошибок (2226). Блок агрегации ошибок (2226) выпускает однобитовое значение 1, если любой из его вводов имеет однобитовое значение 1. В противном случае, блок агрегации ошибок (2226) выдает однобитовое значение 0. Вывод блока агрегации (2226) передается в качестве значения для поля ошибок проверки разрешений (2230) вывода (2240).
Фиг. 23 представляет собой гибридную блок-схему, частично иллюстрирующую (2300) модуль агрегации результата сравнения (2130 на Фиг. 21) в соответствии с предпочтительным вариантом выполнения данного изобретения. 2-битовое (2010, 2010 на Фиг. 19) поле уровня привилегий (2009 на Фиг. 23) описывается в текстовом описании Фиг. 19. 1-битовый каскадный флаг (2134 на Фиг. 23) описывается в текстовом описании Фиг. 21. 1-битовый флаг ошибки транзакции (2131 на Фиг. 23) описывается в текстовом описании Фиг. 21.
Ярлык (2310) иллюстрирует восемь активных полей трансляции (2237), выпущенных одновременно в качестве вывода 8 модулями сравнения (2121-2128).
Ярлык (2320) иллюстрирует восемь полей ошибок проверки разрешений (2230), выпущенных одновременно в качестве вывода 8 модулями сравнения дескрипторов диапазона (2121-2128).
Ярлык (2301) иллюстрирует однобитовое поле конфигурации «трансляция активирована», разрешающее трансляцию адресов для этого БУП (2101).
Каскадный модуль (2312) получает в качестве ввода восемь (2310) активных полей трансляции (2237) и однобитовое поле конфигурации, разрешающее трансляцию (2301). Однобитовое значение вывода каскадного модуля (2312) равно 1, если значение поля конфигурации разрешения трансляции (2301) равно 1 и ни одно из восьми (2310) полей разрешения трансляции (2237) не имеет значение 1. В противном случае вывод каскадного модуля равен 0. Вывод каскадного модуля (2312) используется в качестве значения однобитового каскадного флага (2134).
Модуль ошибок трансакции (2311) получает в качестве ввода восемь (2310) активных полей трансляции (2237) и однобитовое поле конфигурации, разрешающее трансляцию (2301). Однобитовое значение вывода модуля ошибок трансакции (2311) равно 1, если значение поля конфигурации разрешения трансляции (2301) равно 1 И больше одного из восьми (2310) полей разрешения трансляции (2237) имеет значение 1. Однобитовое значение вывода модуля ошибок трансакции (2311) равно 1, если значение поля конфигурации разрешения трансляции (2301) равно 0 И любое из восьми полей разрешения трансляции (2237) имеет значение 1. В противном случае, однобитовое значение вывода модуля ошибок транзакции (2311) равно 0.
Модуль ошибок проверки разрешений (2322) получает в качестве ввода восемь (2320) полей ошибок проверки разрешений (2230), переданных 8 модулями сравнения дескриптора диапазона (2121-2128). Однобитовое значение вывода модуль ошибок проверки разрешений (2322) устанавливается равным 1, если любое из восьми (2320) полей ошибок проверки пользовательских разрешений (2320) имеет значение 1. В противном случае, однобитовое значение вывода модуля ошибок проверки разрешений (2322) устанавливается равным 0.
Модуль агрегации ошибок (2360) получается в качестве ввода вывод модулей (2311)-(2322). Модуль агрегации ошибок (2360) генерирует однобитовый вывод со значением 1, если значение любого из его однобитовых вводов равно 1. В противном случае, модуль агрегации ошибок (2360) генерирует однобитовый вывод со значением 0. Вывод каскадного модуль агрегации ошибок (2360) передается в качестве значения флага ошибки транзакции (2131).
Фиг. 24 представляет собой блок-схему (600), показывающую пример отображения схемы вводного адресного пространства (2401) на транслированное адресное пространство (2402), используя средства двух БУП (2101 и 2140 на Фиг. 21) в соответствии с предпочтительным вариантом выполнения данного изобретения. Ярлык (2400) иллюстрирует 8 дескрипторов диапазона (2111-2118). Флаг активации дескриптора диапазона (1920) дескриптора диапазона (2111) показан, как деактивированный. Флаг активации дескриптора диапазона (1920) каждого дескриптора диапазона (2112-2118) показан, как активированный. Флаг разрешения трансляции (1921) деактивирован для дескрипторов региона (2111, 2112, 2117) и активирован для дескрипторов региона (2113, 2114, 2115, 2116, 2118). Дескриптор диапазона (2112) сконфигурирован так, чтобы активировать разрешения записи без трансляции адресов. Дескриптор диапазона (2117) сконфигурирован так, чтобы активировать разрешения чтения без трансляции адресов. Дескрипторы диапазона (2113, 2114, 2115, 2116, 2118) иллюстрированы, как отображение диапазонов вводного адресного пространства на диапазоны целевого адресного пространства ({2113, 2433}, {2114, 2434}, {2115, 2435}, {2116, 2436}, {2118, 2438}). Запрос передачи данных памяти на запись, адресованный на адрес памяти, ассоциированный с дескриптором региона (2112), выполняется с трансляцией адресов (2435), представляющей собой тождественное преобразование.
Запрос передачи данных памяти, адресованный на один из регионов памяти (2410, 2411, 2412, 2413, 2414, 2415, 2416) и не ассоциированный ни с одним из дескрипторов региона (2111-2118) первого БУП (2101), передается на второй БУП (2140) для дополнительной обработки. Например, регион (2420) в вводном адресном пространстве ассоциирован с одним или несколькими дескрипторами региона во втором БУП (2140). Этот регион (2420) транслируется (2421) в диапазон памяти (2422) в целевом адресном пространстве этим вторым БУП (2140).
В предпочтительном варианте выполнения данного изобретения аппарат включает в себя:
программируемый блок обработки запросов передачи данных памяти (ПОЗПДП), включающий в себя:
первый порт, являющийся целевым портом, адаптированный для:
получения запроса передачи данных памяти, ассоциированного с первым адресным пространством; и
отправки соответствующего ответа на запрос передачи данных памяти;
программируемых данных конфигурации, где программируемые данные конфигурации включают в себя:
как минимум один дескриптор региона, который содержит не менее одного правила, которое ассоциировано с регионом первого адресного пространства, в котором:
для каждого из, как минимум, одного дескриптора региона тип этого дескриптора региона выбирается из одного из следующих 7 типов:
дескриптор страницы с фиксированной длиной страницы;
дескриптор страницы с переменной длиной страницы;
дескриптор сегмента;
дескриптор буфера динамической трансляции; дескриптор диапазона;
дескриптор диапазона, который был адаптирован правилами трансляции адресов памяти;
дескриптор тэга кэша;
второй порт, являющийся главным портом, адаптированный для:
отправки запроса передачи данных памяти, ассоциированного с вторым адресным пространством; и
приема соответствующего ответа на запрос передачи данных памяти;
средства для обработки запроса передачи данных памяти, ассоциированного с первым адресным пространством, полученного через первый порт в соответствии с, как минимум, одним правилом, ассоциированным с первым адресным пространством, закодированным в программируемых данных конфигурации на момент обработки;
средства для генерации и отправки на второй порт запроса передачи данных памяти, ассоциированного со вторым адресным пространством, в ответ на запрос передачи данных памяти, ассоциированный с первым адресным пространством, полученный через первый порт в соответствии с, как минимум, одним правилом, ассоциированным с первым адресным пространством, закодированным в программируемых данных конфигурации на момент обработки;
третий порт, являющийся целевым портом, адаптированный для:
получения запроса передачи данных памяти, ассоциированного с третьим адресным пространством, для получения доступа к части программируемых данных конфигурации; и
отправки соответствующего ответа на запрос передачи данных памяти;
средства для обработки правильно сформированного запроса передачи данных памяти, полученного через третий порт, который адресован в область памяти в третьем адресном пространстве, которое ассоциировано с частью, как минимум, одного дескриптора региона;
программируемый блок прямого доступа к памяти (ППДП), включающий в себя:
первый порт, являющийся целевым портом, адаптированный для:
получения запроса передачи данных памяти для управления блоком ППДП; и
отправки соответствующего ответа на запрос передачи данных памяти;
второй порт, являющийся главным портом, адаптированный для:
отправки запроса передачи данных памяти; и
приема соответствующего ответа на запрос передачи данных памяти;
программируемые данные конфигурации, включая:
как минимум один управляющий дескриптор передачи память-память, который может описать операцию передачи «память-память»; и
средства обработки операции передачи «память-память», используя второй порт и, как минимум, один управляющий дескриптор передачи «память-память»; и где:
блок ППДП адаптирован для отправки запроса передачи данных памяти из своего второго порта на третий порт блока ПОЗПДП; и
блок ПОЗПДП адаптирован для приема и успешной обработки правильно сформированного запроса передачи данных памяти, отправленного через второй порт блока ППДП, который адресован в область памяти в третьем адресном пространстве, которое ассоциировано с частью, как минимум, одного дескриптора региона блока ПОЗПДП.
В дальнейшем предпочтительном варианте выполнения данного изобретения:
часть программируемых данных конфигурации ассоциирована с пользовательской частью первого адресного пространства; и
все программируемые данные конфигурации блока ПОЗПДП, ассоциированные с пользовательской частью первого адресного пространства, доступного через третий порт блока ПОЗПДП, могут быть запрограммированы в одной операции передачи «память-память» блока ППДП.
В предпочтительном варианте выполнения данного изобретения аппарат, адаптированный для отображения запроса передачи данных памяти, ассоциированного с первым адресным пространством с, как минимум, одним из N+1 логически независимых регионов обработки запросов передачи данных памяти, указанное адресное пространство разбивается на, как минимум, N непрерывных разделов; указанный аппарат включает в себя:
первый порт, являющийся целевым портом, адаптированный для:
получения запроса передачи данных памяти, ассоциированного с первым адресным пространством, в котором запрос передачи данных памяти ассоциирован с:
адресом памяти в первом адресном пространстве; и
идентификатором адресного пространства; и
отправки соответствующего ответа на запрос передачи данных памяти;
второй порт, адаптированный для отправки значения, ассоциированного с одним из N+1 логически независимых регионов MTRP;
средства для генерации значения, ассоциированного с одним из N+1 логически независимых регионов MTRP второго порта в ответ на запрос передачи данных памяти, полученный на первый порт;
средства указания, что запрос передачи данных памяти не был успешно отображен на одном из N+1 логически независимых регионов MTRP на третьем порте;
где:
значение N равно не менее 2;
как минимум 2 из N+1 логически независимых регионов MTRP могут быть отображены на том же разделе из не менее N непрерывных разделов первого адресного пространства; и
если адрес памяти, ассоциированный с запросом передачи данных памяти, полученным на первом порту, ассоциирован с одним из не менее N непрерывных разделов первого адресного пространства, который могут содержать не менее 2 из N+1 логически независимых регионов MTRP, отображаемых на нем, то значение идентификатора адресного пространства, ассоциированного с этим запросом передачи данных памяти, используется для определения на какой, если имеется, из этих, как минимум, 2 из N+1 логически независимых регионов ПОЗПДП он отображается.
В дальнейшем предпочтительном варианте выполнения данного изобретения каждый из, как минимум, N+1 логически независимых регионов обработки запросов передачи данных памяти (ОЗПДП) применяет программируемую схему трансляции адресов памяти для трансляции запросов передачи данных памяти в этот регион.
В предпочтительном варианте выполнения данного изобретения аппарат включает в себя программируемый блок обработки запросов передачи данных памяти (ПОЗПДП), где блок ПОЗПДП включает в себя:
первый порт, являющийся целевым портом, адаптированный для:
получения запроса передачи данных памяти, ассоциированного с первым адресным пространством, от первого межкомпонентного соединения; и
отправки соответствующего ответа на запрос передачи данных памяти;
второй порт, являющийся главным портом, адаптированный для:
отправки запроса передачи данных памяти, ассоциированного с вторым адресным пространством, на второе межкомпонентное соединение, где второе межкомпонентное соединение не является первым межкомпонентным соединением; и
приема соответствующего ответа на запрос передачи данных памяти;
первый комплект из не менее двух программируемых дескрипторов региона, где:
для каждого программируемого дескриптора региона этот программируемый дескриптор региона:
программно ассоциирован с регионом памяти первого адресного пространства;
включает в себя программируемые правила разрешения доступа; и
включает в себя правила программируемой трансляции адресов памяти;
третий порт, являющийся целевым портом, адаптированный для:
получения запроса передачи данных памяти, ассоциированного с третьим адресным пространством, для получения доступа к части первого комплекта из не менее двух программируемых дескрипторов региона; и
отправки соответствующего ответа на запрос передачи данных памяти;
средства для обработки правильно сформированного запроса передачи данных памяти, полученного через третий порт, который адресован в область памяти в третьем адресном пространстве, которое ассоциировано с частью, как минимум, одного программируемого дескриптора региона из первого набора из, как минимум, двух программируемых дескрипторов региона;
четвертый порт, являющийся портом вывода;
средства для генерации и отправки на второй порт запроса передачи данных памяти в ответ на запрос передачи данных памяти, полученный на первый порт в соответствии с, как минимум, одним правилом, ассоциированным с этим полученным запросом передачи данных памяти, как хранящимся в первом наборе из как минимум двух программируемых дескрипторов региона памяти;
средства для трансляции запроса передачи данных памяти, полученного на первый порт, когда ровно один из как минимум двух программируемых дескрипторов региона, программно ассоциированных с этим адресом, имеет активированное правило трансляции; и
средства для генерации сигнала на четвертый порт, когда более одного программируемого дескриптора региона из как минимум двух программируемых дескрипторов региона, программно связанных с этим адресом, имеет активированное правило трансляции.
В дальнейшем предпочтительном варианте выполнения данного изобретения, как минимум один программируемый дескриптор региона первого набора из как минимум двух программируемых дескрипторов региона блока ПОЗПДП содержит:
как минимум одно поле разрешения, связанное с запросом передачи данных памяти с исполняемым кодом, выдается от лица программного обеспечения, выполняемого на одном или нескольких ядрах процессора; и
как минимум одно поле разрешения, связанное с запросом передачи данных памяти с данными, выдается от лица программного обеспечения, выполняемого на одном или нескольких ядрах процессора.
В дальнейшем предпочтительном варианте выполнения данного изобретения:
блок ПОЗПДП включает в себя средства для ассоциации идентификатора адресного пространства с запросом передачи данных памяти, полученным на первый порт этого блока ПОЗПДП; и
как минимум один из программируемых дескрипторов региона этого блока ПОЗПДП может быть ассоциирован с идентификатором адресного пространства.
В предпочтительном варианте выполнения данного изобретения аппарат включает в себя:
программируемый блок обработки запросов передачи данных памяти (ПОЗПДП), включающий в себя:
первый порт, являющийся целевым портом, адаптированный для:
получения запроса передачи данных памяти, ассоциированного с первым адресным пространством, от первого межкомпонентного соединения; и
отправки соответствующего ответа на запрос передачи данных памяти;
второй порт, являющийся главным портом, адаптированный для:
отправки запроса передачи данных памяти, ассоциированного с вторым адресным пространством, на второе межкомпонентное соединение, где второе межкомпонентное соединение не является первым межкомпонентным соединением; и
приема передаваемых данных памяти;
программируемые данные конфигурации, где программируемые данные конфигурации включают в себя:
как минимум один кэшированный дескриптор региона, который содержит не менее одного правила, которое ассоциировано с регионом первого адресного пространства;
средства для:
доступа к, как минимум, N наборам из не менее двух дескрипторов региона посредством генерации и отправки не менее одного запроса передачи данных памяти через второй порт, где как минимум 1 набор из не менее двух дескрипторов региона представляет собой набор кэшированных дескрипторов региона;
получения соответствующего ответа; и
кэширования этого полученного дескриптора региона;
средства для обработки запроса передачи данных памяти, полученного на первый порт в соответствии с правилами, закодированными с первом наборе из N наборов не менее двух дескрипторов региона, доступных через второй порт на момент обработки; и
средства для генерации и отправки на второй порт запроса передачи данных памяти в ответ на запрос передачи данных памяти, полученный на первый порт в соответствии с, как минимум, одним правилом, ассоциированным с этим полученным запросом передачи данных памяти, как хранящимся в первом наборе из N наборов не менее двух программируемых дескрипторов региона; и
где значение N равно не менее 1.
В дальнейшем предпочтительном варианте выполнения данного изобретения значение N равно как минимум 2, а блок ПОЗПДП дополнительно адаптирован для:
разбивки первого адресного пространства первого порта на как минимум 2 непрерывных регионов; и
каждого региона из не менее двух непрерывных регионов первого адресного пространства:
программно ассоциировать этот регион с другим набором из N наборов не менее двух дескрипторов региона, доступных через второй порт.
В дальнейшем предпочтительном варианте выполнения данного изобретения блок ПОЗПДП дополнительно адаптирован:
средствами для доступа к как минимум одному кэшу дескрипторов региона, в котором каждый кэш дескрипторов региона содержит не менее двух дескрипторов региона, посредством генерации как минимум одного запроса передачи данных памяти через второй порт и получения соответствующего(-их) ответа(-ов);
средствами для обработки запроса передачи данных памяти, полученного на первый порт в соответствии с правилами, закодированными в одном из как минимум одного кэша дескрипторов региона, доступных через второй порт на момент обработки; и
средствами для генерации и отправки на второй порт запроса передачи данных памяти в ответ на запрос передачи данных памяти, полученный на первый порт в соответствии с правилами, закодированными в одном из как минимум одного кэша дескрипторов региона, доступных через второй порт на момент обработки.
В дальнейшем предпочтительном варианте выполнения данного изобретения блок ПОЗПДП дополнительно адаптирован:
третьим портом, являющимся главным портом, адаптированным для:
отправки запроса передачи данных памяти, ассоциированного с третьим адресным пространством, на третье межкомпонентное соединение, где третье межкомпонентное соединение не является первым и вторым межкомпонентным соединением; и
приема передаваемых данных памяти;
средствами для обработки запроса передачи данных памяти, полученного на первый порт в соответствии с правилами, закодированными в одном наборе из как минимум N наборов программируемых дескрипторов региона, доступных через третий порт на момент обработки; и
средствами для генерации и отправки на второй порт запроса передачи данных памяти в ответ на запрос передачи данных памяти, полученный на первый порт в соответствии с правилами, закодированными в одном наборе из как минимум N наборов программируемых дескрипторов региона, доступных через третий порт на момент обработки.
В предпочтительном варианте выполнения данного изобретения аппарат включает в себя программируемый блок обработки запросов передачи данных памяти (ПОЗПДП), где блок ПОЗПДП включает в себя:
первый порт, являющийся целевым портом, адаптированный для:
получения запроса передачи данных памяти, ассоциированного с первым адресным пространством, где первое адресное пространство:
подразделено на N разделов; и
диапазон адресного пространства составляет М кибибайтов; и
отправки соответствующего ответа на запрос передачи данных памяти;
второй порт, являющийся главным портом, адаптированный для:
отправки запроса передачи данных памяти, ассоциированного со вторым адресным пространством, где диапазон второго адресного пространства составляет 0 кибибайт; и
приема соответствующего ответа на запрос передачи данных памяти;
программируемые данные конфигурации, где программируемые данные конфигурации включают в себя:
как минимум N дескрипторов региона, где:
каждый из N дескрипторов региона содержит не менее одного правила, которое ассоциировано с регионом первого адресного пространства;
все из как минимум N дескрипторов региона являются дескрипторами региона одного и того же типа, где этот тип дескриптора региона выбирается из одного из следующих 2:
дескриптор страницы с поддержкой не менее 8 разных длин страниц;
дескриптор сегмента с поддержкой не менее 16 разных выделенных длин сегментов;
как минимум N из не менее N дескрипторов региона ассоциированы с разными из N разделов первого адресного пространства;
средства для обработки запроса передачи данных памяти, ассоциированного с первым адресным пространством, полученного через первый порт в соответствии с, как минимум, одним правилом, ассоциированным с первым адресным пространством, закодированным в программируемых данных конфигурации на момент обработки;
средства для генерации и отправки на второй порт запроса передачи данных памяти, ассоциированного со вторым адресным пространством, в ответ на запрос передачи данных памяти, ассоциированный с первым адресным пространством, полученный через первый порт в соответствии с, как минимум, одним правилом, ассоциированным с первым адресным пространством, закодированным в программируемых данных конфигурации на момент обработки; и
где:
значение М равно не менее 1024;
значение N равно не менее 2 и меньше 16384; и
значение О равно не менее 1.
В дальнейшем предпочтительном варианте выполнения данного изобретения блок ПОЗПДП дополнительно включает в себя:
третий порт, являющийся целевым портом, адаптированный для:
получения запроса передачи данных памяти, ассоциированного с третьим адресным пространством, для получения доступа к части программируемых данных конфигурации; и
отправки соответствующего ответа на запрос передачи данных памяти;
средства для обработки правильно сформированного запроса передачи данных памяти, полученного через третий порт, который адресован в действительную область памяти, который получает доступ к как минимум одному из как минимум N дескрипторов региона; и
средства для ответа на правильно сформированный запрос передачи данных памяти, полученный через третий порт, который адресован в действительную область памяти, который получает доступ к как минимум одному из как минимум N дескрипторов региона посредством отправки запроса передачи данных памяти на третий порт.
В дальнейшем предпочтительном варианте выполнения данного изобретения блок ПОЗПДП адаптирован для использования одной из следующих схем поиска:
- тип схемы поиска с прямой индексацией для идентификации, которые из как минимум N дескрипторов региона ассоциированы с запросом передачи данных памяти;
- схема ассоциативного поиска по содержанию памяти для идентификации, которые из как минимум N дескрипторов региона ассоциированы с запросом передачи данных памяти;
- схема полностью ассоциативного поиска по памяти для идентификации, которые из как минимум N дескрипторов региона ассоциированы с запросом передачи данных памяти.
В предпочтительном варианте выполнения данного изобретения аппарат включает в себя:
первый программируемый блок обработки запросов передачи данных памяти (ПОЗПДП), включающий в себя:
первый порт, являющийся целевым портом, адаптированный для:
получения запроса передачи данных памяти, ассоциированного с первым адресным пространством; и
отправки соответствующего ответа на запрос передачи данных памяти;
программируемые данные конфигурации, где программируемые данные конфигурации включают в себя:
как минимум один дескриптор региона, который содержит не менее одного правила, которое ассоциировано с регионом первого адресного пространства, в котором:
для каждого из, как минимум, одного дескриптора региона тип этого дескриптора региона выбирается из одного из следующих 5 типов:
дескриптор страницы с фиксированной длиной страницы;
дескриптор страницы с переменной длиной страницы;
дескриптор сегмента;
дескриптор буфера динамической трансляции;
дескриптор региона, который был адаптирован правилами программируемой трансляции адресов памяти;
второй порт, являющийся главным портом, адаптированный для:
отправки запроса передачи данных памяти, ассоциированного с вторым адресным пространством; и
приема соответствующего ответа на запрос передачи данных памяти;
средства для обработки запроса передачи данных памяти, ассоциированного с первым адресным пространством, полученного через первый порт в соответствии с, как минимум, одним правилом, ассоциированным с первым адресным пространством, закодированным в программируемых данных конфигурации на момент обработки;
средства для генерации и отправки на второй порт запроса передачи данных памяти, ассоциированного со вторым адресным пространством, в ответ на запрос передачи данных памяти, ассоциированный с первым адресным пространством, полученный через первый порт в соответствии с, как минимум, одним правилом, ассоциированным с первым адресным пространством, закодированным в программируемых данных конфигурации на момент обработки;
третий порт, являющийся целевым портом, адаптированный для:
получения запроса передачи данных памяти, ассоциированного с третьим адресным пространством, для получения доступа к части программируемых данных конфигурации; и
отправки соответствующего ответа на запрос передачи данных памяти;
средства для обработки правильно сформированного запроса передачи данных памяти, полученного через третий порт, который адресован в область памяти в третьем адресном пространстве, которое ассоциировано с частью, как минимум, одного дескриптора региона;
второй программируемый блок обработки запросов передачи данных памяти (ПОЗПДП), включающий в себя:
первый порт, являющийся целевым портом, адаптированный для:
получения запроса передачи данных памяти, ассоциированного с первым адресным пространством; и
отправки соответствующего ответа на запрос передачи данных памяти;
программируемые данные конфигурации, где программируемые данные конфигурации включают в себя:
как минимум один дескриптор, который содержит как минимум одно правило, ассоциированное с регионом первого адресного пространства, в котором этот дескриптор содержит как минимум одно правило, описывающее трансформацию не менее одного из как минимум одного правила, содержащегося в дескрипторе региона, полученного через один или несколько запросов передачи данных памяти на первый порт;
второй порт, являющийся главным портом, адаптированный для:
отправки запроса передачи данных памяти, ассоциированного с вторым адресным пространством; и
приема соответствующего ответа на запрос передачи данных памяти;
средства для обработки запроса передачи данных памяти, ассоциированного с первым адресным пространством, полученного через первый порт в соответствии с, как минимум, одним правилом, ассоциированным с первым адресным пространством, закодированным в программируемых данных конфигурации на момент обработки;
средства для генерации и отправки на второй порт запроса передачи данных памяти, ассоциированного со вторым адресным пространством, в ответ на запрос передачи данных памяти, ассоциированный с первым адресным пространством, полученный через первый порт в соответствии с, как минимум, одним правилом, ассоциированным с первым адресным пространством, закодированным в программируемых данных конфигурации на момент обработки;
третий порт, являющийся целевым портом, адаптированный для:
получения запроса передачи данных памяти, ассоциированного с третьим адресным пространством, для получения доступа к части программируемых данных конфигурации; и
отправки соответствующего ответа на запрос передачи данных памяти;
средства для обработки правильно сформированного запроса передачи данных памяти, полученного через третий порт, который адресован в область памяти в третьем адресном пространстве, которое ассоциировано с частью, как минимум, одного дескриптора;
где:
второй порт второго блока ПОЗПДП подключен к третьему порту первого блока ПОЗПДП.
Разные варианты выполнения изобретения могут быть выполнены в разных формах, включая компьютерную программную логику для использования с процессором (например, микропроцессор, микроконтроллер, цифровой обработчик сигналов или ЭМВ общего назначения), программную логику для использования с программируемым логическим устройством (например, программируемая логическая интегральная схема (ПЛИС) или иное программируемое логическое устройство (ПЛУ)), дискретные компоненты, интегральные схемы (например, специализированная интегральная микросхема (СИМС)), или любые другие средства, включая любую их комбинацию. В примере выполнения данного изобретения практически весь обмен данными между пользователями и сервером реализован, как набор инструкций для компьютерных программ, преобразованных в исполнимую форму, хранящихся в таком виде на доступной для компьютера среде под управлением операционной системы.
Компьютерная программная логика, реализующая все или часть функций, описанных в данном документе, может быть выполнена разными способами, включая в виде исходного кода, исполнимую форму и различные промежуточные формы (например, формы, генерируемые ассемблером, компилятором, компоновщиком или локатором). Исходный код может включать в себя серию программных инструкций на любом из множества языков программирования (например, объектная программа, язык ассемблера или язык высокого уровня, такой как SPARK, ADA, Fortran, С, С++, JAVA, Ruby или HTML) для использования с разными операционными системами или операционными средами. Исходный код может определять и использовать различные структуры данных и сообщения связи. Исходный код может быть в выполнимой компьютерной форме (например, через интерпретатор), или он может быть преобразован (например, через транслятор, ассемблер или компилятор) в выполнимую компьютерную форму.
Компьютерная программа может быть представлена в любой форме (например, исходный код, выполнимая компьютерная форма или промежуточная форма) постоянно или временно на физическом носителе, таком как полупроводниковое запоминающее устройство (например, RAM, ROM, PROM, EEPROM или программируемая флэш-память), магнитное запоминающее устройство (например, дискета или жесткий диск), оптическом запоминающем устройстве (например, диски CD-ROM или DVD-ROM), PC- карте (например, карта PCMCIA) или ином запоминающем устройстве. Компьютерная программа может быть зафиксирована в любой форме в сигнале, который может быть передан компьютеру при помощи различных технологий передачи данных, включая, но не ограничивается, аналоговые технологии, цифровые технологии, оптические технологии, беспроводные технологии (например, Bluetooth), сетевые технологии и межсетевые технологии. Компьютерная программа может распространяться в любой форме, как переносное запоминающее устройство, сопровождаемое документацией в бумажном или электронном виде (например, коробочное программное обеспечение), в виде предустановленного ПО на компьютерной системе (например, в системной ROM памяти или на жестком диске). либо распространяться с сервера или электронной доски объявлений через систему связи (например, Интернет или «всемирная паутина»).
Аппаратная логическая схема (включая программируемую логику для использования с программируемыми логическими устройствами), реализующая все или часть функций, описанных в настоящем документе, может быть разработана при помощи традиционных ручных методов, или может быть разработана, смоделирована или задокументирована в электронном виде, используя разные инструменты, такие как программы для автоматизированного проектирования (САПР), язык описания аппаратных средств (например, VHDL или AHDL) или язык программирования ПЛУ (например, PALASM, ABEL или CUPL).
Программируемая логика может быть представлена постоянно или временно на физическом носителе, таком как полупроводниковое запоминающее устройство (например, RAM, ROM, PROM, EEPROM или программируемая флэш-память), магнитное запоминающее устройство (например, дискета или жесткий диск), оптическом запоминающем устройстве (например, диски CD-ROM или DVD-ROM) или ином запоминающем устройстве. Программируемая логика может быть зафиксирована в сигнале, который может быть передан компьютеру при помощи различных технологий передачи данных, включая, но не ограничивается, аналоговые технологии, цифровые технологии, оптические технологии, беспроводные технологии (например, Bluetooth), сетевые и межсетевые технологии Программируемая логика может распространяться, как переносное запоминающее устройство, сопровождаемое документацией в бумажном или электронном виде (например, коробочное программное обеспечение), в виде предустановленного ПО на компьютерной системе (например, в системной ROM памяти или на жестком диске). либо распространяться с сервера или электронной доски объявлений через систему связи (например, Интернет или «всемирная паутина»).
Краткое описание чертежей
Для лучшего понимания изобретения и чтобы показать, как его можно реализовать, в прилагаемых чертежах показаны варианты его выполнения в виде только неограничивающих примеров. На чертежах:
На Фиг. 1 представлена блок-схема, иллюстрирующая части аппарата (100) для обработки данных для предпочтительного варианта выполнения данного изобретения;
На Фиг. 2 представлена блок-схема (200), иллюстрирующая разбивку адресного пространства (201) для получения доступа к программируемым данным конфигурации, хранящимся в запоминающем устройстве (123) блока ПОЗПДП (120), показанного на Фиг. 1 в соответствии с предпочтительным вариантом осуществления данного изобретения;
На Фиг. 3 приведена блок-схема (300), иллюстрирующая операцию передачи память-память, выполненную блоком ППДП (140 на Фиг. 1) для программирования всех программируемых данных конфигурации, хранящихся в запоминающем устройстве (123 на Фиг. 1) блока ПОЗПДП (120 на Фиг. 1), в рамках одной операции передачи память-память (148, 149, 150 на Фиг. 1);
Фиг. 4 представляет собой гибридную принципиальную блок-схему и диаграмму потоков данных, частично иллюстрирующую предпочтительный вариант выполнения данного изобретения, где блок ПОЗПДП (120) на Фиг. 1 адаптирован для реализации функционала блока управления памятью (БУП);
Фиг. 5 представляет собой блок-схему (500), иллюстрирующую шаги операции трансляции адреса памяти, выполняемой блоком управления (121) блока ПОЗПДП (120) в соответствии с предпочтительным вариантом выполнения данного изобретения;
Фиг. 6 представляет собой блок-схему (600), показывающую пример отображения схемы трансляции адресов на основании сегмента между вводным адресным пространством (610) и транслированным адресным пространством (630) в соответствии с предпочтительным вариантом выполнения данного изобретения;
Фиг. 7 представляет собой блок-схему (670), иллюстрирующую организацию вводного адресного пространства (701) одноуровневой напрямую отображаемой схемы, основанной на страницах, для архитектуры DEC VAX-11/760, как описано на Фиг. 6-1 [3];
Фиг. 8 представляет собой блок-схему (670), иллюстрирующую инновационную организацию вводного адресного пространства (701) для одноуровневой схемы прямого отображения, основанной на сегментах, для предпочтительного варианта выполнения данного изобретения;
Фиг. 9 представляет собой блок-схему (900), иллюстрирующую два уровня средств управления памятью в соответствии с предпочтительным вариантом выполнения данного изобретения;
Фиг. 10 представляет собой блок-схему (1000), иллюстрирующую различные поля, которые могут присутствовать в запросе передачи данных памяти (1010) и ответа на запрос передачи данных памяти (1040) в соответствии с предпочтительным вариантом выполнения данного изобретения;
Фиг. 11 представляет собой гибридную принципиальную блок-схему и диаграмму потоков данных, частично иллюстрирующую предпочтительный вариант выполнения (1100) данного изобретения, где блок ПОЗПДП (120) на Фиг. 1 адаптирован для реализации функционала разбитого на разделы одноуровневого блока управления памятью (БУП) с прямой индексацией, основанного на страницах;
Фиг. 12 представляет собой гибридную принципиальную блок-схему и диаграмму потоков данных, частично иллюстрирующую предпочтительный вариант выполнения данного изобретения, где блок ПОЗПДП (120) на Фиг. 1 адаптирован для реализации функционала блока управления памятью (БУП);
Фиг. 13 представляет собой блок-схему (1300), иллюстрирующую операцию трансляции адресов памяти, выполняемую блоком управления (121 на Фиг. 1) блока ПОЗПДП (120 на Фиг. 1) в соответствии с предпочтительными вариантами выполнения данного изобретения, как описано на Фиг. 11 и Фиг. 12;
На Фиг. 14 представлена блок-схема, иллюстрирующая разбивку адресного пространства (1400) для получения доступа к программируемым данным конфигурации, хранящимся в запоминающем устройстве (123) блока ПОЗПДП (120), в соответствии с предпочтительным вариантом осуществления данного изобретения;
Фиг. 15 представляет собой блок-схему, иллюстрирующую 16-битовой поле метаданных конфигурации (1510), применяемое на Фиг. 14, в соответствии с предпочтительным вариантом выполнения данного изобретения;
Фиг. 16 представляет собой блок-схему, дескриптор региона (1600), применяемого на Фиг. 14, в соответствии с предпочтительным вариантом выполнения данного изобретения;
Фиг. 17 представляет собой гибридную блок-схему и схему потоков данных, частично иллюстрирующую аппарат (1700) в соответствии с предпочтительным вариантом выполнения данного изобретения, как описано с ссылкой на Фиг. 1, 14, 15 и 16;
Фиг. 18 представляет собой блок-схему (1800), иллюстрирующую операцию трансляции адресов памяти, выполняемую блоком управления (121 на Фиг. 17) блока ПОЗПДП (121 на Фиг. 17) в соответствии с Фиг. 14, 15, 16 и 17;
Фиг. 19 представляет собой блок-схему, иллюстрирующую различные поля, которые могут присутствовать дескрипторе диапазона (1910), который был адаптирован с правилами программируемой трансляции адресов памяти в соответствии с предпочтительным вариантом выполнения данного изобретения;
Фиг. 20 представляет собой блок-схему (2000), поля запроса передачи данных памяти (2001) в соответствии с предпочтительным вариантом выполнения данного изобретения;
Фиг. 21 представляет собой гибридную принципиальную блок-схему и диаграмму потоков данных, частично иллюстрирующую предпочтительный вариант выполнения (2100) данного изобретения, где блок ПОЗПДП (120) на Фиг. 1 адаптирован для использования двух блоков управления памятью (2101, 2140);
Фиг. 22 представляет собой гибридную блок-схему и диаграмму потоков данных, частично иллюстрирующую модуль сравнения дескриптора диапазона (2200) в соответствии с предпочтительным вариантом выполнения данного изобретения;
Фиг. 23 представляет собой гибридную блок-схему, частично иллюстрирующую (2300) модуль агрегации результата сравнения (2130 на Фиг. 21) в соответствии с предпочтительным вариантом выполнения данного изобретения; и
Фиг. 24 представляет собой блок-схему (600), показывающую пример отображения схемы вводного адресного пространства (2401) на транслированное адресное пространство (2402), используя средства двух БУП (2101 и 2140 на Фиг. 21) в соответствии с предпочтительным вариантом выполнения данного изобретения.
СПРАВОЧНАЯЛИТЕРАТУРА
[1] Henry M. Levy, Capability-Based Computer Systems, Digital Press, 1984.
[2] Harvey G. Cragon, Memory Systems and Pipelined Processors, 1996.
[3] Digital. Vax 11/780 Hardware Handbook, 1979-80, 1979.