Обработка данных с использованием нескольких наборов команд

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

 

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

Известны системы обработки данных, выполненные с возможностью выполнения команд более чем из одного набора команд. Примером таких систем являются процессоры, производимые компанией АРМ Лимитед (производитель микропроцессоров Advanced RISC Machines (ARM) Limited) Кембридж, Англия, которые выполнены с возможностью выполнения набора 32-битовых команд АРМ и набора 16-битовых команд Тамб (Thumb).

В последнее время разработан вид систем обработки данных, выполняющих более одного набора команд, предназначенный для выполнения собственного набора команд и команд байт-кодов Джавы (машинно-независимых кодов, генерируемых Джава-компилятором). Более конкретно, были предложены и разработаны способы ускорения Джавы, предусматривающие специализированные аппаратные средства для выполнения байт-кодов Джавы. Примером такого подхода является структурное расширение Джазелл (Jazelle), разработанное АРМ Лимитед, Кембридж, Англия, служащее для выполнения байт-кодов Джавы с использованием ядра процессора, также выполняющего собственные команды АРМ.

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

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

Согласно одному аспекту настоящее изобретение раскрывает устройство для обработки данных под управлением программных команд из первого набора программных команд, или программных команд из второго набора программных команд, упомянутое аппаратное устройство содержит:

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

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

(i) если аппаратное устройство выполнения команд для упомянутого второго набора команд не доступно, то инициировать интерпретацию следующей программной команды упомянутого второго набора команд, с использованием упомянутого программного интерпретатора команд, и

(ii) если упомянутое аппаратное устройство выполнения команд для упомянутого второго набора команд доступно, то инициировать выполнение упомянутой следующей программной команды упомянутого второго набора команд, с использованием упомянутого аппаратного устройства выполнения команд.

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

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

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

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

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

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

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

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

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

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

в зависимости от упомянутой команды завершения последовательности:

(i) если аппаратное устройство выполнения команд для упомянутого второго набора программных команд не является доступным, то инициации интерпретации следующей программной команды упомянутого второго набора команд, с использованием упомянутого программного интерпретатора команд, и

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

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

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

(i) если аппаратное устройство выполнения команд для упомянутого второго набора программных команд не является доступным, то инициации интерпретации следующей программной команды упомянутого второго набора команд, с использованием упомянутой логики программного интерпретатора команд, и

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

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

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

На фиг.1 изображена система обработки данных, содержащая аппаратные средства преобразования байт-кода.

На фиг.2 схематично изображена программная интерпретация команд байт-кодов.

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

На фиг.4 изображен возможный вариант фрагмента кода, выполняемого вместо байт-кода.

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

На фиг.6 изображена блок-схема, иллюстрирующая работу программного интерпретатора команд при функционировании с системой, изображенной на фиг.5.

Фиг.7 иллюстрирует соответствие между байт-кодами Джавы и операциями обработки.

На фиг.8 изображена программируемая таблица перевода в виде ассоциативного запоминающего устройства.

На фиг.9 изображена программируемая таблица перевода в виде оперативной памяти (ОЗУ).

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

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

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

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

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

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

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

Фиг.17 иллюстрирует взаимосвязь между операционной системой и разными процессами, управляемыми этой операционной системой.

На фиг.18 изображена система обработки, содержащая ядро процессора и акселератор Джавы.

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

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

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

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

На фиг.23 представлены команды АРМ вычислений с плавающей точкой, сгенерированные для команд Джавы вычислений с плавающей точкой.

На фиг.24 представлены последовательности команд АРМ, которые могут быть сгенерированы аппаратными средствами ускорения Джавы для команд Джавы 'dmul' и 'dcmpg'.

На фиг.25 представлена последовательность операций при выполнении команды 'dmul', за которой следует команда 'dcmpg', где необработанная операция вычислений с плавающей точкой вызвана выполнением команды FCMPD, сгенерированной аппаратными средствами ускорения Джавы для команды Джавы 'dmul', представленная последовательность операций имеет место для системы, использующей неточное обнаружение необработанной операции, согласно фиг.22.

На фиг.26 изображено состояние Регистра Операций вычислений с Плавающей Точкой и Флага Состояния Необработанной Операции после выполнения команды FMULD согласно фиг.25.

На фиг.27 представлена последовательность операций при выполнении команды 'dmul', за которой следует команда 'dcmpg', где необработанная операция вычислений с плавающей точкой вызвана выполнением команды FCMPD, сгенерированной аппаратными средствами ускорения Джавы для команды Джавы 'dcmpg', представленная последовательность операций имеет место для системы, использующей неточное обнаружение необработанной операции, согласно фиг.22.

На фиг.28 изображено состояние Регистра Операции вычислений с плавающей точкой и Флага Состояния Необработанной Операции после выполнения команды FCMPD согласно фиг.27.

На фиг.29 представлена последовательность операций при выполнении команды 'dmul', за которой следует команда 'dcmpg', где необработанная операция вычислений с плавающей точкой вызвана выполнением команды FMULD, сгенерированной аппаратными средствами ускорения Джавы для команды Джавы 'dmul', представленная последовательность операций имеет место для системы, использующей точное обнаружение необработанной операции, согласно фиг.21.

На фиг.30 представлена последовательность операций при выполнении команды 'dmul', за которой следует команда 'dcmpg', где необработанная операция вычислений с плавающей точкой вызвана выполнением команды FCMPD, сгенерированной аппаратными средствами ускорения Джавы для команды Джавы 'dcmpg', представленная последовательность операций имеет место для системы, использующей точное обнаружение необработанной операции, согласно фиг.21.

На Фиг.1 изображена система 2 обработки данных, содержащая ядро 4 процессора, например АРМ процессора, и аппаратные средства 6 преобразования байт-кодов (также называемые Джазелл). Ядро 4 процессора содержит блок 8 регистров, декодер 10 команд и информационный канал 12 для выполнения различных операций обработки данных на значениях данных, которые сохранены внутри регистров блока 8 регистров. Предусмотрен регистр 18, который содержит флаг 20, контролирующий, являются аппаратные средства 6 преобразования байт-кода активизированными или не активизированными в текущий момент. Дополнительно, предусмотрен регистр 19, содержащий флаг 21, определяющий, являются ли аппаратные средства преобразования байт-кода активными или не активными в текущий момент. Другими словами флаг 21 определяет, выполняет ли система обработки данных байт-коды Джавы или команды АРМ в текущий момент. Очевидно, что в других вариантах осуществления регистры 18 и 19 могут быть одним регистром, содержащим флаги 20 и 21.

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

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

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

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

Согласно фиг.2 встречается байт-код BC4 Джавы, который не поддерживается аппаратными средствами 6 преобразования байт-кодов. Это вызывает исключение (исключительную ситуацию) внутри аппаратных средств 6 преобразования байт-кодов, которое приводит к выполнению просмотра внутри таблицы 24 указателей, с использованием в качестве индекса значения байт-кода BC4, для считывания указателя P#4 для фрагмента 26 кода, который выполнит обработку, определенную поддерживаемым не аппаратно байт-кодом BC4. В регистре также может храниться значение базового адреса таблицы указателей. Затем вводится выбранный кодовый фрагмент с R14, указывающим на неподдерживаемый байт-код BC4.

Поскольку существует 256 возможных значений байт-кодов, согласно чертежу таблица 24 указателей содержит 256 указателей. Аналогично, для выполнения обработки, определенной всеми возможными байт-кодами Джавы, обеспечивается до 256 фрагментов кода собственных команд АРМ (их может быть меньше 256 в случаях, где два байт-кода могут использовать один и тот же фрагмент кода). Аппаратные средства 6 преобразования байт-кодов, обычно, для увеличения скорости обработки, будут обеспечивать аппаратную поддержку многих простых байт-кодов Джавы, и в этом случае, соответствующие фрагменты кода внутри программного интерпретатора команд не будут использоваться иначе, как принудительно, например, во время отладки или в других случаях, таких как прерывания упреждающей выборки, как будет описано ниже. Однако, так как, обычно, это будут более простые и более короткие фрагменты кода, то обеспечение их требует относительно небольших дополнительных непроизводительных затрат памяти. Дополнительно, эти небольшие дополнительные непроизводительные затраты памяти компенсируются в этом случае обобщенным характером программного интерпретатора команд и его возможностями охватить все возможные байт-коды Джавы в случаях, где отсутствуют или блокированы аппаратные средства преобразования байт-кодов.

Согласно фиг.2 каждый из фрагментов 26 кода завершается командой завершения последовательности BXJ. Действие этой команды завершения последовательности BXJ варьируется в зависимости от состояния системы 2 обработки данных, как изображено на фиг.3. На фиг.3 изображена блок-схема, иллюстрирующая в очень схематичном виде обработку, выполняемую фрагментом 26 кода внутри программного интерпретатора команд. На этапе 28 выполняется операция, определенная интерпретируемым байт-кодом Джавы. На этапе 30 из потока 22 байт-кодов считывается следующий байт-код Джавы, который будет выполнен, и указатель байт-кода внутри потока 22 байт-кодов Джавы, соответствующий этому следующему байт-коду Джавы, запоминается внутри регистра блока 8 регистров, а именно в R14. Соответственно, для байт-кода BC4 Джавы, изображенного на фиг.2, следующим байт-кодом BC5 Джавы будет и в регистр R14 будет загружен указатель на ячейку памяти байт-кода BC5 Джавы.

На этапе 32 указатель внутри таблицы указателей 24, соответствующий следующему байт-коду BC5 Джавы, считывается из таблицы 24 указателей и запоминается внутри регистра блока 8 регистров, а именно в регистре R12.

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

На этапе 34 выполняется команда завершения последовательности BXJ с регистром R14, определенным в качестве операнда.

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

Этапы 28, 30, 32 и 34, преимущественно, являются программными этапами. Этапы, следующие за этапом 34, согласно фиг.3, преимущественно, являются аппаратными этапами и осуществляются без отдельных идентифицируемых программных команд. На этапе 36 аппаратные средства обнаруживают, доступны ли аппаратные средства 6 преобразования байт-кодов. Они осуществляют это, считывая значение флагов регистров наличия и доступности аппаратных средств 6 преобразования байт-кодов. Также возможны другие механизмы определения наличия активных аппаратных средств 6 преобразования байт-кодов.

Если аппаратные средства 6 преобразования байт-кодов имеются в наличии и активизированы, то обработка продолжается на этапе 38, на котором управление передается к аппаратным средствам 6 преобразования байт-кодов вместе с содержанием регистра R14, определяющим указатель байт-кода на байт-код внутри потока 22 байт-кодов, который аппаратные средства 6 преобразования байт-кодов должны осуществить попытку выполнить как следующий байт-код. Затем функционирование иллюстрируемого фрагмента 26 кода завершается.

В качестве альтернативы, если на этапе 36 определено, что аппаратные средства 6 преобразования байт-кодов отсутствуют, или они блокированы, то обработка продолжается на этапе 40, на котором осуществляется переход внутри кода собственных команд АРМ для начала выполнения фрагмента кода внутри программного интерпретатора команд, определенного адресом, который хранится внутри регистра R12. Следовательно, инициализируется быстрое выполнение следующего фрагмента кода, дающее преимущество в скорости обработки.

На фиг.4 более подробно изображен конкретный фрагмент кода. Этим конкретным примером является байт-код Джавы целочисленного сложения, мнемоника которого iadd.

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

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

Четвертая команда использует выгодным образом то, что иначе бы осуществился ненужный цикл обработки из-за взаимной блокировки регистров по регистру R0, для извлечения значения адреса фрагмента кода для следующего байт-кода, которое хранится в регистре R4, и запоминания этого адреса внутри регистра R12. Для хранения базового указателя для начала таблицы 24 указателей используется регистр Rexc.

Пятая команда выполняет целочисленное сложение, определенное байт-кодом Джавы.

Шестая команда заносит обратно в стек результат байт-кода Джавы.

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

На фиг.5 схематично изображена система 42 обработки данных, подобная системе, изображенной на фиг.1, за исключением того, что в этом случае не предусмотрены аппаратные средства 6 преобразования байт-кодов. В этой системе флаг 21 всегда определяет, что выполняются команды АРМ, и попытки ввести выполнение байт-кода Джавы с командой BXJ всегда обрабатываются так, как будто аппаратные средства 6 преобразования байт-кодов блокированы, флаг 20 игнорируется.

На фиг.6 изображена блок-схема обработки, выполняемой системой 42 при выполнении байт-кода Джавы. Она аналогична обработке, иллюстрируемой фиг.3, в том, что используется тот же код программного интерпретатора, за исключением выполнения команды завершения последовательности BXJ, возможность аппаратной поддержки байт-кодов отсутствует, и, соответственно, обработка всегда продолжается переходом на выполнение фрагмента кода, указанного R12, который является фрагментом кода для следующего байт-кода Джавы.

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

Фиг.7 иллюстрирует соответствие между байт-кодами Джавы и операциями обработки, которые они определяют. Согласно фиг.7 8-битовые байт-коды Джавы обеспечивают 256 разных возможных значений байт-кода. Как определено стандартом Джавы, первые 203 из этих байт-кодов Джавы имеют фиксированную привязку к соответствующим операциям обработки, например, iadd, описанная выше. Последние два байт-кода Джавы, а именно 254 и 255, описаны в Спецификации Виртуальной машины Джава, как определяемые реализацией. Следовательно, реализация Джавы уполномочена назначать фиксированные привязки этим байт-кодам. В качестве альтернативы, реализация Джавы может, предпочтительно, рассматривать их, как имеющие программируемые привязки. Джазелл определяет фиксированные привязки для этих байт-кодов. Для значений байт-кодов от 203 до 253 могут быть определены программируемые привязки, согласно требованиям пользователя. Они обычно используются для обеспечения привязок между байт-кодами и операциями обработки, например, для байт-кодов быстрого типа, по которым принимается решение во время работы (прогона) (см. Спецификацию Виртуальной машины Джава, авторы Тим Линдхолм и Франк Еллин, опубликованной Аддисон Уэсли, ISBN 0-201-63452-X).

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

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

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

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

В этом возможном варианте значения, определяющие операцию, являются 4-битовыми значениями, а вход АЗУ, вызвавший совпадение, соответствует байт-коду bc6. Согласно фиг.7 все байт-коды, которые могут подвергнуться такому программируемому преобразованию, имеют два единичных «1» самых старших бита и, соответственно, в массив 102 требуется ввести только 6 самых младших битов байт-кода.

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

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

На фиг.9 изображен второй возможный вариант программируемой таблицы 104 перевода. В этом возможном варианте таблица перевода обеспечивается в виде оперативного запоминающего устройства (ОЗУ) с байт-кодом, который должен быть преобразован, вводимым в декодер 106, интерпретирующий байт-код, как адрес для массива 108 ОЗУ из 4-битовых слов, каждое из которых представляет код, определяющий операцию. В этом случае для байт-кода всегда обнаруживается код, определяющий операцию. В результате этот тип таблицы использует один дополнительный код, определяющий операцию, который определяет "вызвать фрагмент кода для данного байт-кода".

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

На этапе 110 выполняется команда инициализации таблицы, которая служит для очистки (сбрасывания) всех существующих входов таблицы и установки указателя на верхний вход в таблице. После этого, с использованием программных команд, таких как команда загрузки регистра сопроцессора, можно выполнить код инициализации для загрузки соответствия в таблицу перевода. Разные виды этих команд загрузки таблицы могут варьироваться в зависимости от конкретных условий и среды. Программируемая согласующая система аппаратного интерпретатора реагирует на эти команды, принимая на этапе 112 значение программной команды, например, байт-кода Джавы, и соответствующее ему значение операции. На этапе 114 аппаратные средства перехвата неподдерживаемых операций осуществляют проверку, поддерживается ли программируемое значение операции этим программируемым согласующим аппаратным интерпретатором. Разные программируемые согласующие аппаратные интерпретаторы могут поддерживать разные наборы значений операций, и, следовательно, могут поставляться со своими специфическими аппаратными средствами перехвата. Аппаратные средства перехвата могут быть относительно простыми, например, если конкретная система имеет информацию о том, что они поддерживают значения операции 0, 1, 2, 3, 4, 5, 6, 7, 8, 10, но не 9. Аппаратный компаратор на этапе 114 может сравнить значение операции с значением 9 и при обнаружении равенства 9 отклонить программирование, направляя обработку к этапу 116.

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

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

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

В случае инициализации таблицы ОЗУ, изображенной на фиг.9, процесс, описанный выше согласно фиг.10, может дополнительно подвергнуться следующим изменениям:

на этапе 110 таблица очищается, предпочтительно, путем установки всех входов таблицы в массиве 108, фиг.9, в "вызвать фрагмент байт-кода для этого байт-код", взамен установки массива 102, фиг.8, так, чтобы каждый вход не соответствовал никакому байт-коду,

на этапе 110 отсутствует указатель таблицы перевода, который должен быть инициализирован,

этап 118 отсутствует, так как отсутствует указатель таблицы перевода,

этап 120 становится "записать значение операции в вход таблицы, обозначенный значением программной команды", и

этап 122 отсутствует, так как отсутствует указатель таблицы перевода.

На фиг.11 изображена часть конвейера обработки, которая может использоваться для интерпретации байт-кодов Джавы. Конвейер 124 обработки включает стадию 126 преобразования и стадию 128 декодирования Джавы. Последующая стадия 130 может иметь несколько разных форм, в зависимости от конкретной реализации.

Слова из потока байт-кодов Джавы загружаются поочередно в две половины буфера 132 транспортировки (свинга). Обычно, мультиплексор 133 выбирает из буфера 132 транспортировки текущий байт-код и его операнды и передает их через мультиплексор 137 на регистр-защелку 134. Если буфер 132 транспортировки является пустым, так как конвейер выключен из работы или по некоторой другой причине, то мультиплексор 135 выбирает соответствующий байт-код непосредственно из входящего слова потока байт-кодов Джавы и передает его регистру-защелке 134.

Первый цикл декодирования для байт-кода выполняется декодером 146 первого цикла, действующим на байт-код в регистре-защелке 134. Чтобы учесть случаи, где байт-код, поддерживаемый аппаратно, имеет операнды, дополнительные мультиплексоры выбирают из буфера 132 транспортировки операнды и передают их декодеру 146 первого цикла. Эти мультиплексоры не показаны на чертеже и подобны мультиплексорам 133. Обычно, декодер 146 первого цикла имеет менее строгие требования на синхронизацию для вводов операнда, чем для ввода байт-кода, чтобы для операндов не потребовался обходной путь, подобный обеспеченному мультиплексорами 135 и 137 и регистром - защелкой 134.

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

Выходом декодера 146 первого цикла является команда АРМ (или набор управляющих сигналов ядра процессора, представляющих команду АРМ), которая через мультиплексор 142 передается следующей стадии 130 конвейера. Вторым выходом является код, определяющий операцию, который через мультиплексор 139 записывается в регистр-защелку 138. Код, определяющий операцию, содержит бит 140, который определяет, является ли этот байт-код одноцикловым.

В следующем цикле, следующий байт-код декодируется декодером 146 первого цикла, как описано выше. Если бит 140 определяет одноцикловый байт-код, то этот байт-код декодируется и управляет следующей стадией 130 конвейера, как описано выше.

Если бит 140 определяет мультицикловый байт-код, то декодер 146 первого цикла выполняет останов и мультицикл, или декодер 144 преобразованных данных, декодирует код, определяющий операцию, в регистр-защелке 138, для формирования команды АРМ (или набора управляющих сигналов ядра процессора, представляющих команду АРМ), которая передается мультиплексором 142 на следующую стадию 130 конвейера вместо соответствующего выхода декодера 146 первого цикла. Мультицикл, или декодер преобразованных данных, также формирует дополнительный код, определяющий операцию, который через мультиплексор 139 записывается в регистр-защелку 138, снова, вместо соответствующего выхода декодера 146 первого цикла. Этот дополнительный код, определяющий операцию, также содержит бит 140, который определяет, является ли эта команда АРМ последней командой, которая должна быть сформирована для байт-кода мультицикла. Мультицикл, или декодер 144 преобразованных данных, продолжает генерировать дополнительные команды АРМ, как описано выше, до тех пор, пока бит 140 не укажет, что была сформирована последняя команда АРМ, и затем, декодер 146 первого цикла прекращает останов и формирует первую команду АРМ для следующего байт-кода.

Если требуется преобразовать байт-код в регистре-защелке 134, то описанный выше процесс изменяется в трех направлениях. Во-первых, байт-код извлекается из буфера 132 транспортировки мультиплексором 133 и преобразуется транслятором 136 байт-кодов, производящим код, определяющий операцию, который записывается в регистр-защелку 138 через мультиплексор 139. Этот код, определяющий операцию, имеет бит 140, установленный для определения, что для текущего байт-кода не была сформирована последняя команда АРМ, чтобы мультиплексор 142 и мультиплексор 139 выбрали выходы мультицикла, или декодера 144 преобразованных данных, вместо выходов декодера 146 первого цикла на первом цикле преобразуемого байт-кода.

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

В-третьих, если байт-код был записан непосредственно в регистр-защелку 134 через мультиплексор 135 и, следовательно, его не было в буфере 132 транспортировки и он не мог быть преобразован транслятором 136 байт-кодов на предыдущем цикле, то декодер 146 первого цикла сигнализирует транслятору 136 байт-кодов, что он должен перезапуститься и осуществить останов для цикла. Это гарантирует, что при приостановке декодера 146 первого цикла при выполнении останова регистр-защелка 138 запоминает достоверный код, определяющий операцию.

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

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

На фиг.12 изображены два 32-битовых командных слова 200, 202, которые перекрывают границу 204 страниц виртуальной памяти. Это может быть граница страниц размером в 1 кБ, хотя возможны другие размеры страницы.

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

На фиг.13 изображена часть конвейера 208 обработки команд внутри системы обработки данных для обработки байт-кодов Джавы, эта часть содержит механизм борьбы с прерываниями упреждающей выборки такого вида, как иллюстрируется фиг.12. Буфер команд содержит два регистра 210 и 212 командного слова, каждый из которых хранит 32-битовое командное слово. Каждый из байт-кодов Джавы имеет 8-битов в длине и сопровождается нулевым или большим количеством значений операндов. Группа мультиплексоров 214 служит для выбора соответствующих байтов из регистров 210 и 212 командного слова, в зависимости от текущей позиции указателя байт-кода Джавы, определяющей адрес первого байта текущей команды байт-кода Джавы, которая должна быть декодирована.

Каждому из регистров 210 и 212 командного слова сопоставлены соответствующие индексные регистры 216, 218 и регистры 220 и 222 флагов прерывания упреждающей выборки. При выборе командного слова из системы памяти в этих сопоставленных регистрах, соответственно, запоминаются адрес командного слова, к которому они относятся, и определение, произошло ли прерывание упреждающей выборки. Эта информация передается по конвейеру, непосредственно, вместе с командным словом, так как, обычно, она является необходимой при дальнейшей обработке в конвейере.

Мультиплексоры 224, 226 и 228 обеспечивают возможность обхода структуры входного буфера, если это потребуется. Этот тип операции описан выше. Следует отметить, что в конвейере 208 обработки команд, для ясности, не показаны все возможности конвейера обработки команд, описанного предварительно. Аналогично, конвейер обработки команд, описанный предварительно, не показывает все возможности конвейера 208 обработки команд. Практически, система может быть обеспечена в комбинации возможностей, показанных в двух иллюстрируемых конвейерах обработки команд.

На стадии декодирования байт-кода конвейера 208 обработки команд, действия декодера 230 байт-кодов по генерированию соответствующей команды (соответствующих команд), или соответствующих им управляющих сигналов, передаваемых к следующим стадиям в конвейере для выполнения обработки, соответствующей декодированному байт-коду Джавы, зависят, по меньшей мере, от байт-кода Джавы из мультиплексора 224, и, возможно, одного или двух байтов операнда из мультиплексоров 226 и 228.

Если возникло прерывание упреждающей выборки такого вида, как иллюстрируется фиг.12, то, хотя непосредственно байт-код Джавы может быть допустимым, значения операнда, следующие за ним, не будут допустимы, и, если не обработано прерывание упреждающей выборки, то правильная операция не произойдет. Действия генератора 232 исключений байт-кода (исключительных ситуаций, вызванных байт-кодом) по обнаружению возникновения ситуации такого вида, как иллюстрируется фиг.12, зависят от адресов командного слова из регистров 216 и 218 и от флагов прерывания упреждающей выборки из регистров 220 и 222. Если генератор 232 исключений байт-кода обнаруживает такую ситуацию, то он принудительно воздействует на мультиплексор 234 для выдачи к последующим стадиям команды, или управляющих сигналов, предпочтительно, сгенерированных, непосредственно, генератором исключений байт-кода, вместо сгенерированных декодером 230 байт-кодов. Генератор 232 исключений байт-кода при обнаружении ситуации прерывания упреждающей выборки, иллюстрируемой фиг.12, функционирует, предпочтительно, запуская выполнение фрагмента 32-битового кода, эмулирующего прерванный байт-код Джавы, вместо обеспечения возможности интерпретации этого байт-кода Джавы аппаратными средствами. Следовательно, команда 206 Джавы переменной длины, которая подверглась прерыванию упреждающей выборки, не будет выполнена непосредственно, но будет заменена последовательностью 32-битовых команд АРМ. Команды АРМ, использованные для эмуляции команд, могут подвергнуться прерываниям данных при загрузке одного или большего количества байтов операнда, прерывания данных возникают по тем же причинам, по которым возникали прерывания упреждающей выборки при первоначальном выборе этих байтов, как части второго командного слова 202, и прерывания упреждающей выборки и данных могут возникнуть, дополнительно, при выполнении 32-битового фрагмента кода АРМ. Все эти прерывания возникают во время выполнения команды АРМ и, следовательно, будут обработаны имеющейся процедурой обработки исключения прерывания (исключительной ситуации, вызванной прерыванием упреждающей выборки) правильно.

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

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

Если прерывание упреждающей выборки претерпевает не байт-код, а один, или большее количество операндов, как изображено на фиг.12, то вызывается фрагмент программного кода для этого байт-кода. Любые команды АРМ, переданные остальным частям конвейера АРМ для обеспечения вызова фрагмента кода, не будут помечены прерыванием упреждающей выборки, и, следовательно, будут выполнены нормально, когда они достигнут стадии Выполнения в конвейере, если это осуществится.

На фиг.14 приведено логическое выражение, которое может быть использовано генератором 232 исключений байт-кода для обнаружения ситуации такого вида, как иллюстрируется фиг.12. Произвольная половина буфера транспортировки, изображенного на фиг.13, которая в текущий момент содержит первое командное слово (200 на фиг.12), обозначается, как «Half1», а другая половина буфера транспортировки, которая содержит второе командное слово (202 на фиг.12), обозначается, как «Half2» (блоки 210, 216, 220 формируют одну половину, в то время как блоки 212, 218, 222 формируют другую половину, как изображено пунктирными линиями вокруг этих элементов на фиг.13). Пусть PA(Half1) означает, что содержимое произвольного из блоков 220 и 222 находится в Half1, и аналогично для Half2.

Кроме того, индикаторы ситуации, описанной согласно фиг.12, определяют: PA(Half1) ложь, а PA(Half2) истину, и байт-код вместе с операндами перекрывают границу между двумя половинами буфера транспортировки. (Согласно требованиям, два значения PA() могут быть различны, поэтому здесь обозначено наличие границы страниц).

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

((число операндов=1) И (bcaddr[l:0]=11)) ИЛИ ((число операндов=2) И (bcaddr[l]=1)),

где bcaddr является адресом байт-кода. Это позволяет вывести логическое выражение, представленное на фиг.14.

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

На фиг.15 схематично изображена структура поддерживающего кода, относящегося к интерпретации байт-кодов Джавы. Этот чертеж подобен предварительно описанному чертежу, но в этом случае иллюстрирует включение указателей на фрагменты кода обработки исключений байт-кода, запускаемые событиями исключения байт-кода. Следовательно, каждому из байт-кодов Джавы соответствует фрагмент кода АРМ, эмулирующий его действие. Дополнительно, каждому из исключений байт-кода, которое может возникнуть, соответствует часть кода АРМ обработки исключений. В иллюстрируемом случае, генератором 232 исключений байт-кода обеспечивается процедура (обработчик) 236 обработки прерывания упреждающей выборки байт-кода, которая вызывается при обнаружении описанного выше типа прерывания упреждающей выборки. Эта процедура 236 обработки прерывания действует, идентифицируя байт-код в начале команды переменной длины, которая вызвала его запуск, и затем вызывая соответствующий фрагмент кода эмуляции для этого байт-кода из совокупности фрагментов кода.

На фиг.16 изображена блок-схема, схематично иллюстрирующая функционирование генератора 232 исключений байт-кода и последующую обработку. Этап 238 служит для определения, является ли выражение, приведенное на фиг.14, истинным. Если выражение ложно, то этот процесс завершается.

Если на этапе 238 была определена ситуация такого вида, как иллюстрируется фиг.12, то выполняется этап 246, на котором генератором 232 исключений байт-кода инициирует запуск исключения прерывания упреждающей выборки байт-кода. Генератор 232 исключений байт-кода может просто запустить для байт-кода выполнение обработчика 236 прерываний упреждающей выборки кода АРМ. Обработчик 236 прерываний на этапе 248 служит для идентифицирования байт-кода, который начинает команду переменной длины, и затем, на этапе 250, запускает выполнение фрагмента кода команд АРМ, эмулирующих идентифицированный байт-код.

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

На фиг.17 изображена операционная система 300 для управления большим количеством процессов 302, 304, 306 и 308 пользовательского (непривилегированного) режима. Операционная система 300 функционирует в привилегированном режиме, а другие процессы 302, 304, 306 и 308 функционируют в пользовательском режиме, имеющем меньше прав доступа к параметрам управления конфигурацией системы, чем обработка операционной системы 300 в привилегированном режиме.

Согласно фиг.17 процессы 302 и 308, соответственно, относятся к разным Виртуальным машинам Джава. Каждая из этих Виртуальных машин 302, 308 Джавы имеет собственные данные конфигурации, сформированные из данных 310, 312 соответствия преобразования байт-кодов, и данных регистра 314, 316 конфигурации. Практически, понятно, что для выполнения двух процессов 302, 308 обеспечен один набор аппаратных средств ускорения Джавы, но когда эти разные процессы используют аппаратные средства ускорения Джавы, каждый из них требует конфигурирования этих аппаратных средств в соответствии с его данными конфигурации 310, 312, 314, 316. Следовательно, когда операционная система 300 переключает выполнение на процесс, использующий аппаратные средства ускорения Джавы, отличающийся от процесса, который последним использовал эти аппаратные средства, то аппаратные средства ускорения Джавы должны быть инициализированы и сконфигурированы повторно. Непосредственно операционная система 300 не осуществляет повторную инициализацию и повторное конфигурирование аппаратных средств ускорения Джавы, но определяет, что они должны быть выполнены, устанавливая индикатор непригодности конфигурации, соответствующий аппаратным средствам ускорения Джавы, в состояние непригодности.

На фиг.18 схематично изображена система 318 обработки данных, которая содержит ядро 320 процессора, имеющее набор собственных команд (например, набор команд АРМ) и соответствующие аппаратные средства 322 ускорения Джавы. Запоминающее устройство 324 хранит код компьютерной программы, который может быть представлен в виде команд АРМ или байт-кодов Джавы. В случае байт-кодов Джавы, они передаются через аппаратные средства 322 ускорения Джавы, служащие для интерпретации байт-кодов Джавы в поток команд АРМ (или управляющих сигналов, соответствующих командам АРМ), которые затем могут быть выполнены ядром 320 процессора. Аппаратные средства 322 ускорения Джавы содержат таблицу 326 перевода байт-кодов, требующую программирования для каждой Виртуальной машины Джавы, для которой требуется выполнить байт-коды Джавы. Дополнительно, для управления аппаратными средствами 322 ускорения Джавы в них обеспечены регистр 328 данных конфигурации и регистр 330 управления операционной системой. Внутри регистра 330 управления операционной системой содержится индикатор пригодности конфигурации в виде флага ВК (CV), который, когда установлен, определяет, что конфигурация аппаратных средств 322 ускорения Джавы является пригодной, а когда не установлен, то не пригодной.

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

На фиг.19 схематично изображена работа операционной системы 300. На этапе 332 операционная система ожидает обнаружения переключения процессов. Когда обнаружено переключение процессов, этап 334 определяет, является ли новый процесс процессом, использующим аппаратные средства 322 ускорения Джавы (так же, как упомянуто выше, называемые Джазелл). Если аппаратные средства 322 ускорения Джавы не используются, то обработка продолжается на этапе 336, на котором аппаратные средства 322 ускорения Джавы блокированы до продолжения на этапе 339, на котором выполнение передается новому процессу. Если используются аппаратные средства 322 ускорения Джавы, то обработка продолжается на этапе 338, на котором делается определение, идентичен ли активизированный новый процесс сохраненному текущему владельцу аппаратных средств 322 ускорения Джавы, записанному операционной системой 300. Если владелец не изменился (то есть новый процесс, фактически, является идентичным последнему процессу, использовавшему аппаратные средства 322 ускорения Джавы, то обработка продолжается на этапе 337, на котором аппаратные средства 322 ускорения Джавы активизируются перед переходом к этапу 339. Если новый процесс не является сохраненным текущим владельцем, то обработка продолжается на этапе 340, на котором индикатор пригодности конфигурации устанавливается для определения, что текущая конфигурация аппаратных средств 322 ускорения Джавы является непригодной. На этом заканчиваются функции операционной системы 300 по управлению изменением конфигурации, фактическое обновление данных конфигурации оставлено, как задача для аппаратных средств 322 ускорения Джавы, непосредственно функционирующих с собственными механизмами обработки исключений.

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

На фиг.20 изображены операции, выполняемые аппаратными средствами 322 ускорения Джавы. На этапе 344 аппаратные средства 322 ускорения Джавы ожидают приема байт-кода, который должен быть выполнен. При приеме байт-кода аппаратные средства, на этапе 346, проверяют, что индикатор пригодности конфигурации определяет, что конфигурация аппаратных средств 322 ускорения Джавы является пригодной. Если конфигурация пригодна, то обработка продолжается на этапе 348, на котором выполняется принятый байт-код.

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

Этап 354 служит для выполнения кода АРМ, исполняющего исключение непригодности конфигурации, и для записи данных конфигурации, требуемых для аппаратных средств 322 ускорения Джавы. Этот код АРМ может иметь вид последовательности записей регистра сопроцессора для заполнения программируемой таблицы 326 перевода, а также других регистров 330 конфигурации. Этап 356, следующий за этапом 354, осуществляет переход обратно в программу байт-кодов Джавы, чтобы снова осуществить попытку выполнения исходного байт-кода.

Если на этапе 354 или на этапе 358 происходит переключение процесса, то возможно, что установленная до тех пор конфигурация будет сделана непригодной другим процессом и индикатором пригодности конфигурации, очищенным операционной системой. В процедуре, согласно фиг.20, это приводит снова к проходу по циклу 344-346-350-352-354, то есть к повторному конфигурированию, предпринимаемому с начала. Когда байт-код в итоге фактически выполняется, конфигурация, гарантированно, будет пригодной.

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

Возможным вариантом такой подсистемы является система программного эмулятора VFP (значений вычислений с плавающей точкой) от АРМ Лимитед, Кембридж Англия. В случае системы программного эмулятора VFP все операции вычислений с плавающей точкой рассматриваются, как необработанные операции вычислений с плавающей точкой, так как отсутствуют доступные аппаратные средства для выполнения операций вычислений с плавающей точкой. Следовательно, все операции вычислений с плавающей точкой обрабатываются с использованием механизма, предусмотренного для эмуляции работы VFP в коде АРМ.

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

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

Возможным вариантом такой подсистемы является аппаратная система VFP от АРМ Лимитед, Кембридж, Англия. В случае аппаратной системы VFP только некоторые виды операции вычислений с плавающей точкой рассматриваются, как необработанные операции вычислений с плавающей точкой, остальные обрабатываются аппаратными средствами VFP.

Следующие классы операций могут быть подвержены необработанным операциям вычислений с плавающей точкой:

- деление на ноль;

- операции, включающие NaN;

- операции, включающие бесконечность;

- операции, включающие денормализованные числа.

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

Необработанная операция VFP возникает при отказе сопроцессора VFP в приеме команды VFP, которая, нормально, должна формировать часть из потока команд АРМ, но при наличии транслятора байт-кодов, изображенного на фиг.1, в результате может появиться байт-код, который преобразовался в комбинацию команд АРМ и команд VFP.

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

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

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

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

При интегрировании Джазелл в систему, содержащую подсистему VFP, применяется следующее:

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

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

- Джазелл прерывает сигнал необработанной операции, предотвращая его передачу ядру и предотвращая выполнение обработчика неопределенных команд, которое должно произойти, если команда VFP в потоке команды АРМ сигнализировала о неправильной операции. Взамен Джазелл генерирует исключение Джазелл VFP (генерируемой Джазелл исключительной ситуации, вызванной VFP), которое обрабатывается поддерживающим кодом Джазелл VM.

Поддерживающий код VM, встречая такое исключение Джазелл VFP, должен выполнить команду VFP 'пустая операция', то есть любую команду VFP, которая оставляет состояние Джазелл не измененным, например, команду FMRX Rd, FPSCR. Она синхронизирует аппаратные средства VFP с поддерживающим кодом и завершает работу любой операции VFP, обозначенной регистром операции вычислений с плавающей точкой совместно с флагом состояния необработанной операции, который в этом случае должен быть установлен, так как только что встретилась необработанная операция. При завершении операции флаг состояния необработанной операции будет сброшен.

При таком подходе используется то обстоятельство, что последовательности команд, выпускаемые Джазелл, допускают повторный запуск, как описано в Британской заявке на патент, находящейся в процессе одновременного рассмотрения, номер 0024402.0, поданной 5 октября 2000 года. Использование описанного в ней способа совместно с данным способом обеспечивает возможность повторного запуска команды, которая привела к генерированию команды VFP, вызвавшей необработанную операцию.

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

На фиг.24 представлена последовательность команд или сигналов, соответствующих командам, которая может быть выпущена Джазелл транслятором байт-кодов для последовательности Байт-кодов Джавы, состоящей из байт-кода 'dmul' за которым следует байт-код 'dcmpg'. Приведенная последовательность может возникнуть, если последовательность байт-кодов (dmul, dcmpg) была выполнена, когда регистры двойной точности D0, D1 и D2 содержат третий сверху элемент, второй сверху элемент и верхний элемент стека выполнения Джавы, соответственно, и целочисленный результат последовательности байт-кодов предполагается поместить в целочисленный регистр R0.

На фиг.25, 27, 29 и 30 приведена последовательность операций в случаях, когда в разных местах преобразуемой последовательности команд возникает необработанная операция вычислений с плавающей точкой. На фиг.25 и 29 приведена последовательность операций в случаях, когда необработанная операция вычислений с плавающей точкой вызвана командой FMULD. На фиг.27 и 30 приведена последовательность операций в случаях, когда необработанная операция вычислений с плавающей точкой вызвана командой FCMPD. На фиг.25 и 27 приведена последовательность операций в случаях, когда сигнализация о необработанных операциях вычислений с плавающей точкой является неточной. На фиг.29 и 30 представлена последовательность операций в случаях, когда сигнализация о необработанных операциях вычислений с плавающей точкой является точной.

Понятно, что имеется четыре возможных последовательности событий:

1) Согласно фиг.25: Неточное обнаружение необработанной операции, байт-код Джавы, сигнализирующий о необработанной операции не является байт-кодом Джавы, вызвавшим необработанную операцию.

2) Согласно фиг.27: Неточное обнаружение необработанной операции, байт-код Джавы, сигнализирующий о необработанной операции, является байт-кодом Джавы, вызвавшим необработанную операцию, несмотря на это система использует неточное обнаружение необработанной операции. Это происходит, потому что второй байт-код Джавы 'dcmpg' выпускает 2 команды VFP для одного байт-кода Джавы, первый из которых вызывает необработанную операцию, а второй сигнализирует об этом.

3) Согласно фиг.29: Точное обнаружение необработанной операции, байт-код Джавы, сигнализирующий о необработанной операции является байт-кодом Джавы, вызвавшим эту необработанную операцию.

4) Согласно фиг.30: Точное обнаружение необработанной операции, байт-код Джавы, сигнализирующий о необработанной операции, является байт-кодом Джавы, вызвавшим эту необработанную операцию, однако не известно, какая из двух команд VFP, выпущенная в результате выполнения байт-кода 'dcmpg', фактически, вызвала необработанную операцию и сигнализировала о ее возникновении.

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

Фиг.26 и 28 иллюстрируют состояние регистра операции вычислений с плавающей точкой и флага состояния необработанной операции непосредственно после возникновения необработанной операции в соответствии с последовательностью операций, приведенной на фиг.25 и 27, соответственно.

Также следует упомянуть находящиеся в процессе одновременного рассмотрения Британские патентные заявки 0024399.8, 0024402.0, 0024404.6 и 0024396.4, поданные 5 октября 2000 г., Британскую патентную заявку 0028249.1, поданную 20 ноября 2000 г., и Американскую патентную заявку 09/731.060, поданную 7 декабря 2000 г., которые также описывают системы интерпретации байт-кодов Джавы и которые представлены здесь в качестве ссылочного материала.

1. Устройство для обработки данных под управлением программных команд из первого набора программных команд или программных команд из второго набора программных команд, содержащее:

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

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

(i) если аппаратное устройство выполнения команд для второго набора команд недоступно, то инициировать интерпретацию следующей программной команды второго набора команд с использованием программного интерпретатора команд, и

(ii) если аппаратное устройство выполнения команд для второго набора команд доступно, то инициировать выполнение следующей программной команды второго набора команд с использованием аппаратного устройства выполнения команд.

2. Устройство по п.1, в котором аппаратное устройство выполнения команд недоступно, когда:

(i) аппаратное устройство выполнения команд не активизировано (блокировано) или

(ii) аппаратное устройство выполнения команд отсутствует.

3. Устройство по п.1 или 2, в котором действия декодера команд по обнаружению, является ли доступным аппаратное устройство выполнения команд, зависят по меньшей мере от одного флага аппаратного устройства выполнения команд.

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

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

6. Устройство по п.4, в котором команда завершения последовательности использует для хранения начального адреса программной интерпретации предварительно определенный регистр.

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

8. Устройство по п.7, в котором команда завершения последовательности использует для хранения начального адреса аппаратного выполнения предварительно определенный регистр.

9. Устройство по п.7, в котором команда завершения последовательности содержит операнд, определяющий регистр, в котором хранится начальный адрес аппаратного выполнения.

10. Устройство по п.1, в котором программный интерпретатор команд содержит множество последовательностей программных команд первого набора команд, при этом множество последовательностей, соответственно, сопоставляется с программными командами второго набора команд.

11. Устройство по п.10, в котором программный интерпретатор команд содержит таблицу указателей на множество последовательностей.

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

13. Устройство по п.11, в котором базовый адрес таблицы указателей хранится внутри регистра базового адреса.

14. Устройство по п.1, содержащее ядро процессора, при этом программные команды первого набора команд являются собственными программными командами, выполняемыми ядром процессора.

15. Устройство по п.14, в котором аппаратное устройство выполнения команд выполняет команды байт-кода Джавы, как представленные, по меньшей мере, одной или большим количеством собственных программных команд, на ядре процессора.

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

17. Способ обработки данных под управлением программных команд из первого набора программных команд или программных команд из второго набора программных команд, который включает этапы:

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

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

(i) если аппаратное устройство выполнения команд для второго набора программных команд не является доступным, то инициации интерпретации следующей программной команды второго набора команд с использованием программного интерпретатора команд, и

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

18. Способ по п.17, по которому аппаратное устройство выполнения команд не является доступным, когда:

(i) аппаратное устройство выполнения команд не активизировано или

(ii) аппаратное устройство выполнения команд отсутствует.

19. Способ по п.17 или 18, по которому для обнаружения, является ли аппаратное устройство выполнения команд доступным, используется по меньшей мере один флаг аппаратного устройства выполнения команд.

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

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

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

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

24. Способ по п.23, по которому команда завершения последовательности использует для хранения начального адреса аппаратного выполнения предварительно определенный регистр.

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

26. Способ по п.17, по которому программный интерпретатор команд содержит множество последовательностей программных команд первого набора команд, множество последовательностей, соответственно, сопоставляется с программными командами второго набора команд.

27. Способ по п.26, по которому программный интерпретатор команд содержит таблицу указателей на множество последовательностей.

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

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

30. Способ по п.17, по которому программные команды первого набора команд являются собственными программными командами, выполняемыми ядром процессора.

31. Способ по п.30, по которому аппаратное устройство выполнения команд выполняет команды байт-кода Джавы, как представленные, по меньшей мере, одной или большим количеством собственных программных команд, на ядре процессора.

32. Способ по п.17, по которому команда завершения последовательности является элементом первого набора команд.

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

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

(i) если аппаратное устройство выполнения команд для второго набора программных команд не является доступным, то инициации интерпретации следующей программной команды второго набора команд с использованием логики программного интерпретатора команд, и

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

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

(i) аппаратное устройство выполнения команд не активизировано или

(ii) аппаратное устройство выполнения команд отсутствует.

35. Компьютерный программный продукт по п.33 или 34, в котором для обнаружения, является ли аппаратное устройство выполнения команд доступным, используется по меньшей мере один флаг аппаратного устройства выполнения команд.

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

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

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

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

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

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

42. Компьютерный программный продукт по п.33, в котором код программного интерпретатора команд содержит множество последовательностей программных команд первого набора команд, при этом множество последовательностей, соответственно, сопоставляется с программными командами второго набора команд.

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

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

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

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

47. Компьютерный программный продукт по п.46, в котором аппаратное устройство выполнения команд выполняет команды байт-кода Джавы, как представленные, по меньшей мере, одной или большим количеством собственных программных команд, на ядре процессора.

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



 

Похожие патенты:

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

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

Изобретение относится к процессорам с конвейерной архитектурой
Наверх