Патент на изобретение №2233004
|
||||||||||||||||||||||||||
(54) УСТРОЙСТВО И СПОСОБ ДЛЯ ЭМУЛЯЦИИ СТАРЫХ КОМАНД
(57) Реферат: Изобретение относится к способу и системе эмуляции команд одного микропроцессора с командами другого микропроцессора с помощью несовместимой системы команд. Технический результат заключается в повышении производительности системы эмуляции. В способе старые команды транслируют в прямые векторы для подпрограмм программного обеспечения для каждой старой команды, производят выборку прямых векторов в подпрограммах программного обеспечения, которые эмулируют старые команды. Старые команды транслируют посредством программного обеспечения в случае, когда старая память загружена или изменяется, или посредством аппаратных средств в случае, когда обращаются к старой памяти. Производя выборку прямых векторов, устраняют необходимость в поисковых таблицах, основанных на программном обеспечении для интерпретации старых команд, уменьшают вероятность безрезультатного обращения к кэш-памяти. 2 н. и 4 з.п. ф-лы, 4 ил. 1.Область техники, к которой относится изобретение. Настоящее изобретение относится к способу и устройству для эмуляции команд микропроцессора, а более конкретно к способу и устройству, который позволяет усовершенствовать микропроцессор с помощью усовершенствованного микропроцессора с системой несовместимых команд. 2. Уровень техники. Известно, что микропроцессоры конфигурируют с помощью различных структур системы команд (ССК). ССК определяет систему команд для конкретного микропроцессора. Прикладные программы выполняются с помощью микропроцессоров, команды которых, как правило, написаны на языке относительно высокого уровня, который компилируется в машинные команды, совместимые с системой команд для конкретного микропроцессора. Микропроцессоры в большей степени разрабатываются для выполнения команд с непрерывно нарастающей скоростью. Поэтому в системах, в которые входят такие микропроцессоры, часто наращивают вычислительные возможности для увеличения быстродействия системы. К сожалению, в зависимости от конкретного усовершенствования, часто происходит то, что система команд усовершенствованного микропроцессора несовместима с системой команд микропроцессора, который будут заменять (“старый микропроцессор”). Поэтому в таких приложениях существующие прикладные программы необходимо часто переписывать с учетом новых и современных компьютерных языков с современными трансляторами. С увеличением срока эксплуатации и старения многих известных встроенных компьютеров, надежность таких компьютеров быстро снижается, тогда как их обслуживание становится все более затруднительным и дорогостоящим. Поэтому, иногда требуется заменить морально устаревшие, “старые” микропроцессоры на микропроцессоры, выполненные по более новым технологиям. Для выполнения работ с учетом несовместимости системы команд были разработаны системы эмуляции (эмуляторы). Известны эмуляторы, которые эмулируют систему команд старого микропроцессора для того, чтобы дать возможность командам старого микропроцессора “выполняться” с помощью различных микропроцессоров. Известны эмуляторы, основанные как на программном обеспечении, так и на аппаратных средствах. Например, различные эмуляторы программного обеспечения для общей модульной среды (ОМС (“СОНЕТ”)) средств объединенной поддержки авиационного электронного оборудования F-16 (СОПАЭО (“AISF”) описаны в документе №F-16AISF-COMET-100 (ЭМУЛЯТОРЫ-SWD-A), опубликованном 21 мая 1996 г. (“EMULATORS-SWD-A, dated May 21, 1996”)). Эмуляторы, основанные на аппаратных средствах, для военного стандарта MIL-STD-1750A, обсуждены в документе “Описание процесса изготовления продукта аппаратных средств для линейного заменяемого эмулятора, документ №SFF20702, опубликованный 16 апреля 1996 г. (Line Replaceable Unit Emulator Hardware Prod-16, 1996). К сожалению, известные эмуляторы программного обеспечения являются сравнительно неэффективными. В частности, в таких известных эмуляторах программного обеспечения, старые команды выполняют выборку для усовершенствованного микропроцессора, который использует поисковые таблицы для того, чтобы интерпретировать старые команды. Поскольку каждую старую команду необходимо интерпретировать, компьютерные системы, в которые входит кэш-память, как известно, страдают из-за относительно высокой вероятности безрезультатного обращения к кэш-памяти, что уменьшает полную производительность системы. Сущность изобретения. Задача настоящего изобретения заключается в выполнении системы эмуляции для эмуляции старых команд микропроцессора с несовместимой системой команд, которая увеличивает производительность системы по отношению к известным эмуляторам. Вкратце, настоящее изобретение относится к способу и устройству для эмуляции команд микропроцессора (“старой команды”) с несовместимой системой команд, которая обеспечивает повышенную производительность по отношению к известным системам эмуляции. В частности, старые команды транслируются в векторы адресации, (указывающие) на подпрограммы программного обеспечения для каждой старой команды. Вместо того, чтобы выбирать старые команды и интерпретировать команды в программном обеспечении, система эмуляции и способ, согласно настоящему изобретению, выбирает векторы адресации, (указывающие) на подпрограммы программного обеспечения, которые эмулируют старые команды. Старые команды можно также транслировать посредством программного обеспечения, когда содержимое старой памяти загружено в основную память, или модифицировать посредством аппаратных средств в случае, когда происходит обращение к старой памяти. С помощью выборки векторов адресации устраняется необходимость в поисковых таблицах для интерпретации старых команд. При отсутствии необходимости заполнения кэш-памяти выборками поисковой таблицы, вероятность безрезультатного обращения к кэш-памяти значительно уменьшается, что приводит к увеличению производительности системы. Краткое описание чертежей Сущность изобретения иллюстрируется ссылкой на сопроводительные чертежи, на которых: фиг. 1 изображает блок-схему, показывающую трансляцию старой команды, согласно настоящему изобретению; фиг. 2 изображает блок-схему, иллюстрирующую один вариант осуществления, (в котором трансляция вектора выполняется с помощью аппаратных средств) для трансляции старых команд, согласно настоящему изобретению; фиг. 3 изображает блок-схему, иллюстрирующую преобразование старых команд в основной памяти; фиг. 4 показывает блок-схему усовершенствованного микропроцессора с кэш-памятью для изображения работы системы с кэш-памятью, согласно настоящему изобретению. Подробное описание предпочтительного варианта осуществления изобретения. Настоящее изобретение относится к системе эмуляции и способу эмуляции старых команд морально устаревшего (“старого”) микропроцессора с новым усовершенствованным микропроцессором и с несовместимой системой команд. В таких приложениях записываются программы программного обеспечения, которые эмулируют каждую из старых команд с использованием команд усовершенствованного микропроцессора. В известных системах эмуляции, программное обеспечение эмуляции позволяет старую команду, которую необходимо выбрать, интерпретировать с помощью нового микропроцессора посредством поисковой таблицы. Как обсуждено более подробно ниже, такой метод имеет более значительное влияние на производительность системы. Для того, чтобы увеличить производительность системы, старые команды транслируются в векторы адресации, указывающие на подпрограммы программного обеспечения или коды эмуляции для эмуляции старых команд. Поэтому, как будет обсуждено ниже более подробно, вероятность безрезультатного обращения к кэш-памяти значительно уменьшается, что приводит к увеличению производительности системы. Как показано на фиг. 1, встроенное программное обеспечение или код для старого микропроцессора в общем идентифицируется позицией 20. Такой код обычно сохраняется в энергонезависимом постоянном запоминающем устройстве (ПЗУ). Как показано, ПЗУ 20 включает в себя старые команды, идентифицированные как INSTR 1, INSTR 2 и INSTR 3 и т.д. ПЗУ 20 также включает в себя непосредственные данные. Команды INSTR 1, INSTR 2, INSTR 3 и т.д. плюс непосредственные данные в ПЗУ 20, размещаются, например, по базовому адресу А внутри области памяти. В соответствии с важным аспектом изобретения, каждая команда (то есть, команды INSTR 1, INSTR 2, INSTR 3 и т.д.) транслируется в вектор адресации, (указывающий) на подпрограмму программного обеспечения или код эмуляции для эмуляции старой команды. Например, каждая старая команда преобразуется или транслируется в другое устройство 22 памяти, такое как ПЗУ 22. Структура устройства 22 памяти по отношению к командам, поддерживается также, как и ПЗУ 20, но с другим базовым адресом В. Другими словами, команды в ПЗУ 20 размещаются с базовым адресом А плюс сдвиг счетчика команд (СК), который соответствует следующей старой команде, которая должна выполняться. Команды INSTR 1, INSTR 2, INSTR 3 и т.д. преобразуются в ПЗУ 22 с другим базовым адресом В, но с тем же самым сдвигом СК. Векторы адресации в ПЗУ 22 могут также быть командами JUMP в подпрограммах программного обеспечения для эмуляции старых команд или указателями адреса. Например, векторы адресации могут представлять собой указатель сдвига на подпрограмму микрокода эмуляции или указатель на таблицу, которая содержит указатель на подпрограмму микрокода. Независимо от этого, они являются векторами, которые выбираются с помощью программного обеспечения эмуляции, а не старых команд. Непосредственные данные можно транслировать в “поддельные” (bogus) векторы в ПЗУ 22, которые не используются программным обеспечением эмуляции. Программное обеспечение эмуляции, согласно настоящему изобретению, может обращаться к непосредственным данным непосредственно из старого кода 20 с помощью считывания данных непосредственно с базовым адресом плюс сдвиг счетчика команд (СК) из ПЗУ 20. Для трансляции старого микрокода подходят различные способы. Также для трансляции этих команд подходят способы с использованием аппаратных средств и программного обеспечения. На фиг. 2 изображена аппаратная реализация, в которой аппаратное устройство 24, такое как ПЗУ, содержащее поисковую таблицу, связано с шиной данных, расположенной между усовершенствованным микропроцессором 26 и старым микрокодом, то есть ПЗУ 20. Аппаратное устройство 24 сконфигурировано так, что в любое время запрашивается доступ к старому коду, то есть к базовому адресу В плюс сдвиг СК, при этом выдается вектор, соответствующий запрашиваемой команде. С другой стороны, декодер можно обойти так, что доступ к старому коду (то есть базовый адрес А плюс сдвиг СК) будет возвращать нетранслированные данные. Таким образом, обращение усовершенствованного процессора можно адресовать к связанной подпрограмме с кодом эмуляции с помощью выбранного вектора, или он может обращаться к непосредственным данным непосредственно из памяти. В альтернативном варианте осуществления изобретения, старый код эмуляции можно транслировать с помощью программного обеспечения, когда старая память загружается в основную память или модифицируется. В частности, программа программного обеспечения, например, часть программного обеспечения инициализации, используется для загрузки старого кода в основную память 28 компьютерной системы (фиг. 3) (например, с базовым адресом А). В этой реализации, после загрузки старого микрокода, векторы адресации (то есть, ПЗУ 22) загружаются в основную память 28 в другом месте (например, по базовому адресу В), позволяя коду эмуляции в усовершенствованном процессоре обращаться либо к транслированным 22 или нетранслированным 20 участкам старой памяти. Векторы, извлеченные из транслированной памяти 22, используются для указания на индивидуальные подпрограммы программного обеспечения в коде 30 эмуляции. С помощью настоящего варианта осуществления изобретения транслированные 22 и нетранслированные 20 участки старой памяти не должны быть непересекающимися, они могли бы чередоваться так, что каждый вектор непосредственно следует или предшествует нетранслированной команде. Как упомянуто выше, конфигурация способа и системы для эмуляции старых команд адаптирована под улучшение производительности системы. Более конкретно, многочисленные известные микропроцессоры включают в себя кэш-память для того, чтобы повысить производительность системы. Программное обеспечение, выбранное из основной памяти, копируется в кэш-память, у которой быстродействие намного выше, чем у основной памяти. Таким образом, команды, сохраненные в кэш-памяти, можно выполнять намного быстрее, чем сохраненные только в основной памяти. Такие кэш-памяти обычно формируются из статической памяти произвольного доступа (СППД (SRAM)) с высоким быстродействием и используются для хранения копий данных в основной памяти или вновь сохраненных данных. Такие кэш-памяти функционируют на принципах, в основе которых большинство программ выполняет команды последовательно, и благодаря циклам программы вероятно должны повторно использовать недавно выбранные команды. Этот принцип представляет собой локальность вызова ссылки. Таким образом, вместо того, чтобы выбирать одиночную команду во времени, система кэш-памяти заранее просчитывает и последовательно выбирает блоки команд и сохраняет команды для быстрого доступа. Во время работы все данные, сохраненные в кэш-памяти, сохраняются известным образом в виде признака адреса. Признак адреса указывает на физические адреса данных в основной памяти, которые хранятся в кэш-памяти. Всякий раз, когда микропроцессор инициализирует доступ к памяти, признаки адреса в кэш-памяти проверяются первыми для того, чтобы определить, сохранены ли уже конкретные запрашиваемые данные в кэш-памяти. Когда данные находят в кэш-памяти, это известно, как например, результативное обращение к кэш, и данные становятся непосредственно доступными микропроцессору. Если определяется, что запрашиваемые данные находятся не в кэш-памяти, то это условие известно, как например, безрезультатное обращение в кэш. В результате безрезультатного обращения к кэш запрошенные данные должны затем извлекаться из основной памяти со значительно низкой скоростью. На фиг.4 изображена типичная конфигурация микропроцессора с внутрикристальной кэш-памятью. В предыдущих известных системах, известное программное обеспечение эмуляции само по себе выбирало старые команды. Старые команды затем интерпретировались посредством поисковой таблицы. Поскольку кэш-память основывается на предпосылке того, что последовательность данных будет запрашиваться из последовательных участков памяти, использование поисковой таблицы не очень эффективно в системах кэш-памяти и приводит в результате к относительно высокой вероятности безрезультатного обращения кэш-памяти. Используя векторы адресации, и из-за эффектов принципа локальности в старом коде и соответствующих векторов адресации, вероятность безрезультатного обращения к кэш-памяти значительно уменьшается, таким образом увеличивая в целом производительность системы. Более конкретно, на фиг. 4 изображена система памяти, согласно настоящему изобретению. Как показано, система включает в себя усовершенствованный микропроцессор 26, который включает в себя две внутрикристальные кэш-памяти 32 и 34. Одна кэш-память 32 используется для данных, формируя кэш-память данных, тогда как другая кэш-память 34 используется для команд, образуя командную кэш-память. Кэш-память 34 команд можно использовать почти исключительно для кода эмуляции. Кэш-память 32 данных можно использовать для старого кода, прямых векторов и данных. Во время работы группу из восьми векторов можно выбрать из основной памяти после безрезультатного обращения к кэш-памяти и сохранить в кэш-памяти 32 данные в виде части операции повторного заполнения линии кэш-памяти. Так как старые команды обычно продолжают выполняться в последовательном порядке, последующие 7 запросов векторов команд будут обычно являться резидентной частью в кэш-памяти 30 данных. Если следующие старые команды, которые будут выполняться, являются не последовательными, но находятся внутри, по меньшей мере, одной тысячи команд, которые будут выполняться (то есть, локальные циклы), то существует высокая вероятность того, что вектор все еще будет находиться в кэш-памяти 30 данных. Настоящее изобретение уменьшает вероятность безрезультатного обращения к кэш-памяти и таким образом увеличивает производительность системы. Очевидно, возможны многочисленные модификации и изменения настоящего изобретения в свете вышеприведенного описания. Таким образом, следует понимать, что в объеме патентной защиты прилагаемой формулы изобретения, изобретение может быть практически осуществлено иначе, чем специфически описано выше. Формула изобретения 1. Устройство для эмуляции старых компьютерных команд, сохраненных в запоминающем устройстве для старых команд, на усовершенствованном микропроцессоре, содержащее запоминающее устройство, в котором упомянутые старые команды, хранящиеся в запоминающем устройстве для старых команд, преобразованы в адресные указатели на программное обеспечение эмуляции для эмуляции упомянутых старых команд, при этом упомянутое запоминающее устройство выполнено с возможностью взаимодействия с одной или более подпрограммами программного обеспечения эмуляции для эмуляции упомянутых старых команд, причем подпрограммы программного обеспечения для обеспечения эмуляции расположены по адресам, заданным упомянутыми адресными указателями. 2. Устройство по п.1, дополнительно включающее в себя подпрограмму программного обеспечения для трансляции упомянутых старых команд в адресные указатели. 3. Устройство по п.1, включающее в себя аппаратное устройство, подключенное между усовершенствованным микропроцессором и упомянутым устройством памяти для старых команд для трансляции упомянутых старых команд в адресные указатели. 4. Способ для эмуляции старых команд на другом микропроцессоре, имеющем несовместимую систему команд, причем способ содержит следующие этапы: а) сохраняют подпрограммы программного обеспечения эмуляции для эмуляции старых команд, b) транслируют упомянутые старые команды в адресные указатели на упомянутые подпрограммы программного обеспечения эмуляции и c) производят выборку упомянутых адресных указателей в ответ на вызов упомянутых старых команд. 5. Способ по п.4, в котором упомянутые старые команды транслируются в адресные указатели на упомянутые подпрограммы программного обеспечения с помощью аппаратного обеспечения. 6. Способ по п.5, в котором упомянутые старые команды транслируются в адресные указатели на упомянутые подпрограммы программного обеспечения с помощью программного обеспечения. РИСУНКИ
|
||||||||||||||||||||||||||