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

Иллюстрации

Показать все

Изобретение относится к области обработки данных, его использование позволяет ускорить обработку собственных команд и байт-кодов Джавы (машинно-независимых кодов, генерируемых Джава-компилятором) с использованием аппаратного устройства выполнения для байт-кодов Джавы, где они не поддерживаются аппаратными средствами. Для достижения этого технического результата введены программный интерпретатор команд, выполняющий обработку для интерпретируемых байт-кодов Джавы, последовательности собственных команд завершаются командой завершения последовательности, и декодер команд, действия которого зависят от того, обнаружено ли наличие активизированного аппаратного устройства выполнения. Если обнаружено, то это активизированное аппаратное исполнительное устройство осуществляет попытку выполнения следующего байт-кода Джавы. Если не обнаружено, то следующий байт-код Джавы передается непосредственно программному интерпретатору команд. 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, интерпретирующий байт-код, как адрес для массива 1