RU2288502C2 - Расширение набора команд с использованием 3-байтового кода операции перехода - Google Patents

Расширение набора команд с использованием 3-байтового кода операции перехода Download PDF

Info

Publication number
RU2288502C2
RU2288502C2 RU2004119906/09A RU2004119906A RU2288502C2 RU 2288502 C2 RU2288502 C2 RU 2288502C2 RU 2004119906/09 A RU2004119906/09 A RU 2004119906/09A RU 2004119906 A RU2004119906 A RU 2004119906A RU 2288502 C2 RU2288502 C2 RU 2288502C2
Authority
RU
Russia
Prior art keywords
code
instruction
command
field
transition
Prior art date
Application number
RU2004119906/09A
Other languages
English (en)
Other versions
RU2004119906A (ru
Inventor
Джеймс С. КОУК (US)
Джеймс С. КОУК
Питер Дж. РУШИТО (US)
Питер Дж. РУШИТО
Масуд ТАХИР (US)
Масуд ТАХИР
Дэвид Б. ДЖЭКСОН (US)
Дэвид Б. ДЖЭКСОН
Вес А. НАЙДЕНОВ (US)
Вес А. НАЙДЕНОВ
Скотт Д. РОДЖЕРС (US)
Скотт Д. РОДЖЕРС
Брет Л. ТОЛЛ (US)
Брет Л. ТОЛЛ
Фрэнк БИННЗ (US)
Фрэнк БИННЗ
Original Assignee
Интел Корпорейшн
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Интел Корпорейшн filed Critical Интел Корпорейшн
Publication of RU2004119906A publication Critical patent/RU2004119906A/ru
Application granted granted Critical
Publication of RU2288502C2 publication Critical patent/RU2288502C2/ru

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30149Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30025Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30185Instruction operation extension or modification according to one or more bits in the instruction, e.g. prefix, sub-opcode

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)

Abstract

Изобретение относится к микропроцессорным системам, в частности к расширению набора команд с использованием 3-байтовых значений кода операции перехода в поле кода операции. Техническим результатом является расширение набора команд без увеличения сложности аппаратных средств. Устройство для декодирования длины команды расширенного набора команд, использующего 3-байтовые коды операции перехода, содержит детектор операции перехода и декодер длины команды. Система расширения набора команд с использованием 3-байтовых кодов операции перехода содержит память для хранения кода команды, логику выборки кода команды из памяти и блок декодирования для генерации одного или более сигналов управления. Один из вариантов устройства для выполнения набора команд, использующего 3-байтовые коды операции перехода, содержит декодер для генерации сигнала управления и исполнительный блок, а другой вариант содержит средство для выборки из памяти кода команды в формате команды переменной длины и средство для инициирования операции, соответствующей значению специфического для команды кода операции. Способы описывают работу указанных устройств и системы. 7 н. и 69 з.п. ф-лы, 7 ил., 1 табл.

Description

Область техники
Настоящее изобретение относится к микропроцессорным системам. В частности, изобретение относится к расширению набора команд с использованием 3-байтовых значений кода операции перехода в поле кода операции.
Предшествующий уровень техники
Микропроцессорная технология развивается уже многие годы с высокой скоростью. Достижения в компьютерной архитектуре и полупроводниковой технике создали множество возможностей для проектирования новых процессоров. Имеются два типовых варианта проектирования новых процессоров: (1)определение полностью новой архитектуры и (2) расширение существующей архитектуры для включения новых функций. Каждый вариант имеет как преимущества, так и недостатки. Однако когда процессор захватывает значительный сегмент рынка, то вариант (2) предоставляет множество существенных выгод. Основное преимущество наращивания существующей архитектуры состоит в совместимости с современными и более ранними моделями. Недостатки включают в себя проблемы выхода за пределы ограничений, налагавшихся более ранними моделями.
Новые процессоры связаны с реализацией новых функций как в аппаратных средствах, так и в программном обеспечении. Новый процессор, основанный на существующей модели, в типовом случае имеет дополнительный набор команд, который может получить выгоды от новой структуры аппаратных средств. Однако наращивание набора команд путем добавления нового набора команд является серьезной проблемой ввиду ограничений в кодировании этих команд. Поэтому имеется потребность в технологии для обеспечения эффективного способа для расширения набора команд без увеличения сложности аппаратных средств.
Краткое описание чертежей
Признаки и преимущества изобретения поясняются в последующем детальном описании со ссылками на чертежи, на которых представлено следующее:
Фиг.1 - блок-схема, иллюстрирующая, по меньшей мере, один вариант осуществления системы обработки, который может использовать раскрытые методы.
Фиг.2 - блок-схема, иллюстрирующая, по меньшей мере, один вариант осуществления формата для команды.
Фиг.3 - блок-схема, иллюстрирующая, по меньшей мере, один вариант осуществления логики для декодирования команды.
Фиг.4 - блок-схема, иллюстрирующая, по меньшей мере, один вариант осуществления схемы для декодирования команды нового типа 1.
Фиг.5 - блок-схема детектора префикса и перехода, схемы деблокирования декодера и декодера кода операции в соответствии с, по меньшей мере, одним вариантом осуществления изобретения.
Фиг.6 - блок-схема алгоритма, иллюстрирующая процесс выполнения декодирования команды с использованием префиксов, в соответствии с, по меньшей мере, одним вариантом осуществления изобретения.
Фиг.7 - блок-схема алгоритма, иллюстрирующая, по меньшей мере, один вариант осуществления способа декодирования длины команды.
Описание настоящего изобретения
Ниже раскрыты варианты осуществления способа, устройства и системы для расширения набора команд, использующего 3-байтовые коды операции перехода. Раскрытые варианты осуществления обеспечивают расширение набора команд, который использует 3-байтовые коды операций перехода, путем использования префикса для определения команды, которая включает в себя трехбайтовый код операции перехода. Раскрытые способы используют набор существующих полей команд для определения нового набора команд и обеспечения эффективного механизма для декодирования нового набора команд.
Термин «трехбайтовый код операции», как он используется в настоящем описании, относится к двухбайтовому значению, которое указывает логике декодера, что код операции для команды, представляющей интерес, включает в себя три байта: два байта трехбайтового кода операции перехода плюс однобайтовый код операции, специфический для команды. По меньшей мере, для одного варианта осуществления двухбайтовое значение в трехбайтовом коде операции перехода имеет одно из следующих значений: 0х0F38, 0x0F39, 0x0F3A или 0x0F3B.
В последующем описании, в целях пояснения, изложены различные конкретные детали, касающиеся типов процессоров, форматов команд, типов логических схем и значений кода операции перехода, чтобы обеспечить глубокое понимание настоящего изобретения. Однако специалистам в данной области техники должно быть понятно, что эти конкретные детали не требуются для реализации настоящего изобретения. В других случаях хорошо известные электрические структуры и схемы показаны в форме блок-схемы, чтобы не загромождать описание изобретения несущественными деталями. В последующем описании предполагается, что запись 0х указывает, что следующее число записано в шестнадцатеричном формате.
На фиг.1 представлен, по меньшей мере, один вариант осуществления системы 100 обработки, которая может использовать раскрытые методы. Система 100 может быть использована, например, для декодирования и исполнения команд нового типа 0 и команд нового типа 1. В целях настоящего раскрытия система обработки включает в себя любую систему, которая имеет процессор 110, например цифровой процессор сигналов (DSP), микроконтроллер, специализированную интегральную схему (ASIC) или микропроцессор. Процессор 110 может иметь любой тип архитектуры, например, такой как архитектура компьютера с полным набором команд (CISC), архитектура компьютера с сокращенным набором команд (RISC), архитектура компьютера с командными словами сверхбольшой длины (VLIW), многопоточная или гибридная архитектура. Система 100 является представителем систем обработки на базе микропроцессоров Itanium® и Itanium®II, а также Pentium®, Pentium®Pro, Pentium®II, Pentium®III, Pentium®4, разработанных компанией Intel Corporation. Также могут использоваться и другие системы (включая персональные компьютеры (РС), имеющие другие микропроцессоры, рабочие станции, персональные цифровые помощники и другие портативные устройства, приставки и т.п.). В одном варианте осуществления система 100 может исполнять версию операционной системы WindowsTM компании Microsoft Corporation, хотя также могут использоваться и другие операционные системы и графические пользовательские интерфейсы.
На фиг.1 показано, что процессор 110 включает в себя блок 116 декодирования, набор 114 регистров, по меньшей мере, один исполнительный блок 112 и, по меньшей мере, одну внутреннюю шину 111 для команд исполнения. Разумеется, процессор 110 содержит дополнительные схемы, которые не являются необходимыми для понимания изобретения. Блок 116 декодирования, регистры 114 и исполнительный блок 112 связаны между собой одной или несколькими внутренними шинами 111. Блок 116 декодирования используется для декодирования команд, принятых процессором 110, для получения сигналов управления и/или точек входа микрокода. Команды могут выдаваться в блок 116 декодирования посредством буфера команд (например, 310 на фиг.3). В ответ на эти сигналы управления и/или точки входа микрокода исполнительный блок 112 выполняет соответствующие операции. Блок 116 декодирования может быть реализован с использованием любого количества различных механизмов (например, таблицы перекодировки, аппаратной реализации, программируемой логической матрицы (ПЛМ) и т.д.).
Блок 116 декодирования имеет возможность декодирования команд 106, которые следуют формату, определенному расширенным набором 118 команд. Набор 118 команд включает в себя существующий набор 118а команд и новый набор 118b команд. Набор 118 команд включает в себя команды для выполнения операций над скалярными и упакованными данными. Числовой формат для этих операций может быть любым удобным форматом, включая числа с обычной точностью, с удвоенной точностью, расширенные числа с плавающей запятой, числа со знаком и без знака и нечисловые данные. По меньшей мере, в одном варианте осуществления команды, определенные в наборе 118 команд, могут изменяться по длине одна относительно другой.
Команды 106 в формате, установленном набором 118 команд, могут сохраняться в системе 102 памяти. Под системой 102 памяти понимается обобщенное представление памяти или иерархий памяти, и она может включать в себя множество форм памяти, таких как накопитель на жестких дисках, ПЗУ на компакт-дисках (CD-ROM), ОЗУ (RAM), динамическая память с произвольным доступом (DRAM), статическая память с произвольным доступом (SRAM), флэш-память и связанные с ними схемы. Система 102 памяти может хранить, помимо команд 106, данные 104, представленные сигналами данных, которые могут исполняться процессором 110.
Формат команд
На фиг.2 представлена диаграмма, иллюстрирующая формат команды 200 соответственно варианту осуществления изобретения. Формат 200 команды включает в себя поле 210 префикса, поле 220 кода операции и поля спецификатора операнда (например, modR/M, система счисления-индекс-основание (SIB), смещение, непосредственный и т.д.). Поля спецификатора операнда являются факультативными и включают поле 230 «modR/M», поле 240 «SIB», поле 250 «смещение», поле 260 «непосредственный».
Содержимое поля 230 «modR/M» указывает форму адресации. Поле 230 «modR/M» может определять регистры и режимы адресации.
Определенное кодирование информации в поле 230 «modR/M» может указывать, что второй байт информации адресации присутствует в поле 240 «SIB» для полного определения формы адресации кода команды. Например, форма адресации «основание-плюс-индекс» и форма адресации «система счисления-плюс-индекс» могут каждая включать в себя в поле 240 «SIB» информацию, такую как масштабный коэффициент, номер регистра для индекса и/или номер регистра для индексного регистра.
Специалистам в данной области техники должно быть понятно, что формат 200, показанный на фиг.2, является иллюстративным и что в раскрытых вариантах осуществления могут использоваться другие структуры данных в коде команды. Например, нет необходимости упорядочивать поля 210, 220, 230, 240, 250, 260 в том порядке, как показано, они могут быть переупорядочены в другие местоположения по отношению друг к другу и не обязательно должны следовать непрерывно. Также длины описываемых полей не следует трактовать ограничивающим образом. Поле, описываемое как конкретное число байтов, в альтернативных вариантах осуществления может быть реализовано как поле большей или меньшей длины. Также термин «байт», используемый здесь как ссылающийся на группу из 8 битов, в других вариантах осуществления может быть реализован как группа любого другого размера, например, 4 бита, 16 битов и 32 бита.
Команда, используемая в настоящем описании, такая как команды 106, показанные на фиг.1, включает в себя определенные значения в полях формата 200 команды, показанного на фиг.2. Такая команда иногда называется «действующая (рабочая) команда». Битовые значения для действительной команды иногда здесь упоминаются как «код команды».
Допустимые байтовые значения для действительной команды определены в наборе 118 команд (фиг.1). Допустимые байтовые значения для каждого из полей формата 200 команды представляют собой те значения, которые логика декодирования, такая как декодер 306 длины команды (фиг.3) и блок 116 декодирования (фиг.1) распознают и обрабатывают для генерации декодированного кода операции. Для каждого кода команды соответствующий декодированный код команды уникальным образом представляет операцию, выполняемую исполнительным блоком 112 (фиг.1) в ответ на код команды. Декодированный код команды может включать в себя одну или более микроопераций.
Поле 210 префикса, показанное на фиг.2, может включать в себя ряд префиксов. В одном варианте осуществления поле 210 префикса включает в себя до четырех префиксов, причем каждый префикс содержит один байт. Поле 210 префикса является факультативным. Для описываемого расширенного нового набора команд поле префикса используется для расширения трехбайтового пространства команды кода операции перехода.
Содержимое поля 220 кода операции определяет операцию. Для, по меньшей мере, одного варианта осуществления, как отмечено выше, поле кода операции для нового набора 118b команд, описываемого здесь, имеет длину три байта. По меньшей мере, в одном варианте осуществления поле 20 кода операции для расширенного нового набора 118b команд может включать в себя один, два или три байта информации. Для некоторых из новых команд в описываемом расширенном новом наборе команд (команды типа 0) трехбайтовое значение кода операции перехода в двухбайтовом поле 118с поля 220 кода операции комбинируется с содержимым третьего байта 225 поля 220 кода операции для определения операции. Третий байт 225 упоминается здесь как специфический для команды код операции. Для других из новых команд в описываемом расширенном новом наборе команд (команды типа 1) трехбайтовое значение кода операции перехода в двухбайтовом поле 118с поля 220 кода операции комбинируется с содержимым поля 210 префикса и содержимым поля 225 специфического для команды кода операции для определения операции.
В принципе, комбинация поля 210 префикса и поля 220 кода операции создает ряд различных типов команд. Для иллюстрации на фиг.2 показано только семь типов команд: регулярная (обыкновенная) однобайтовая команда 212, регулярная команда с префиксом в качестве спецификатора 214, регулярная команда 216 перехода, расширенная команда 222 первого типа, расширенная команда 224 второго типа, новая команда 226 первого типа, новая команда 228 второго типа. Как известно специалистам в данной области техники, можно определить аналогичным образом другие типы команд.
Регулярная однобайтовая команда 212 включает в себя регулярные команды с однобайтовым специфическим для команды кодом операции в поле 220 кода операции. Регулярная команда с префиксом в качестве спецификатора 214 включает в себя регулярные команды, которые используют префикс в качестве спецификатора для кода операции. Например, строковая команда может использовать значение префикса REPEAT (повторить) для повторения строковой команды число раз, определенное в счетном регистре или до тех пор, порка не будет удовлетворено определенное условие. Значение префикса, используемое в команде 214, не добавляет полностью нового смысла значению кода операции, которое следует в поле 220 кода операции. Напротив, значение префикса используется просто как спецификатор для определения кода операции с дополнительными условиями. Как пояснено ниже, использование префикса в команде 214 существенно отличается от использования его в расширенной команде второго типа 224 и в новой команде второго типа 228.
Регулярная команда 216 перехода является регулярной командой, которая использует код операции перехода в первом поле 215 поля 220 кода операции для указания аппаратным средствам декодера, что специфический для команды код операции во втором поле 217 поля 220 кода операции используется для определения команды. Например, в одном варианте осуществления значение кода операции перехода от 0ХD8 до 0xDF сопроцессора с плавающей запятой в первом байте 215 поля 220 кода операции указывает, что значение кода операции, которое следует во втором байте 217 поля 220 кода операции, должно интерпретироваться как команда сопроцессора и должно направляться в аппаратные средства сопроцессора для исполнения.
Расширенная команда первого типа 222 является командой перехода конкретного типа, которая определена как содержащая предварительно определенное значение кода операции перехода 0х0F в первом поле 221 поля 220 кода операции. Код операции перехода 0x0F указывает аппаратным средствам декодера, что специфическое для команды значение кода операции во втором поле 223 поля 220 кода операции используется для определения команды. Расширенные команды первого типа 222 могут, в зависимости от значения второго байта кода операции (и в некоторых случаях значения трех битов в поле 230 modR/M), иметь переменную длину. Например, две команды (логический сдвиг влево упакованных данных) расширенной команды типа 222 могут включать в себя следующие значения поля команды соответственно:
PSLLW(значение сдвига в регистре): 0F:F1:1b"11xxxyyy", где ххх определяет первый регистр, а ууу определяет второй регистр.
PSLLW (сдвиг на непосредственно получаемое значение): 0F:71:1b"11110xxx": непосредственно получаемые данные (8 битов), где ххх определяет регистр.
В каждой из указанных команд PSSLW первое слово поля 220 кода операции включает в себя значение перехода 0x0F. Первая команда имеет длину три байта, но вторая команда имеет длину четыре байта, так как она включает в себя байт непосредственно полученных данных.
Соответственно для расширенной команды типа 222 аппаратные средства декодера (такие, например, как декодер 306 длины команды, показанный на фиг.3) используют значение 0x0F кода операции перехода в первом поле 221 поля 220 кода операции, а также значение во втором байте 223 двухбайтового поля 220 кода операции и значение поля 230 modR/M для декодирования длины команды.
Новая команда первого типа 226 (также называемая «новой командой типа 0») является новым типом команды, которая является частью нового набора 118b команд (фиг.1), добавляемой к существующему регулярному набору 118а команд (фиг.1). Формат команды нового набора 118b команд включает в себя 3-байтовое поле 118с кода операции перехода и специфическое для команды поле 225 кода операции. 3-байтовое поле 118с кода операции перехода, по меньшей мере, в одном варианте осуществления имеет длину два байта. Новая команда типа 0 использует один из четырех специальных кодов операции перехода, называемых трехбайтовым кодами операции перехода. Трехбайтовые коды операции перехода имеют длину два байта и указывают аппаратным средствам декодера, что команда использует третий байт в поле 220 кода операции для определения команды. Поле 118с трехбайтового кода операции перехода может располагаться в любом месте в пределах кода операции команды и, необязательно, должно быть полем высшего порядка или низшего порядка в составе команды.
По меньшей мере в одном варианте осуществления четыре новых значения трехбайтового кода операции перехода определены как 0x0F3y, где у есть 0х8, 0х9, 0хА или 0хВ. Для команды 226 значение в специфическом для команды поле 225 кода операции поля 220 кода операции должно быть декодировано как новая команда.
Примеры префиксов команд и кодов операций
Как второй тип 224 расширенной команды и второй тип 228 новой команды (иногда называемой «типом 1 новой команды») используют значение в поле 210 префикса в качестве части кода операции. В отличие от регулярной инструкции со спецификатором, 214, где префикс просто определяет последующий код операции, второй тип 224 расширенной команды и тип 1 228 новой команды используют префикс для определения полностью новой команды.
Префиксы команд были первоначально разработаны для усовершенствования набора команд. Например, префикс «повторить» предназначен для повторения стоковой команды. Кодами префикса «повторить» являются 0xF3 (REP, REPE) и 0xF2 (REPNE). Префикс, используемый как таковой, не определяет новый смысл для кода операции, которая следует далее. Он просто определяет дополнительные операционные условия для кода операции.
Коды операции перехода обеспечивают расширение для набора команд. Например, коды операции от 0xD8 до 0xDF используются для индикации того, что второй байт 217 кода операции содержит значение, определяющее команду для блока с плавающей запятой. Декодер пропускает код операции к декодеру с плавающей запятой.
По меньшей мере, в одном варианте осуществления расширенного набора команд, как описано здесь, 3-байтовый код операции перехода представляет собой двухбайтовый объект, имеющий значение 0x0F3y, где у есть 0Х8, 0х9, 0хА или 0хВ. Значение 3-байтового кода операции перехода в поле 118с 3-байтового кода операции перехода показывает декодеру, что специфическое для команды значение кода операции в третьем байте 225 поля 200 кода операции указывает на команду в наборе новых команд.
В противоположность 2-байтовому коду операции перехода, описанному выше в связи с первым типом 222 расширенной команды, значение поля 118с 3-байтового кода операции перехода указывает декодеру метод, который должен быть использован для определения длины определяемой команды типа 0. То есть каждое значение для 3-байтового кода операции перехода связано с конкретным методом, который должен быть использован для определения длины команды для каждой команды в карте, соответствующей конкретному 3-байтовому коду операции перехода. Например, значение 0x0F38 в поле 118с 3-байтового кода операции перехода ассоциировано с соответствующей картой кода операции. Длина для каждой команды в карте кода операции 0x0F38 может быть вычислена с использованием одного и того же метода определения длины, используемого для определения длины других команд в карте кода операции 0x0F38.
Аналогично, длина каждой команды соответствующих карт кода операции, ассоциированных с остальными значениями 3-байтового кода операции перехода (0x0F39, 0x0F3А, 0x0F3В), может быть вычислена с использованием той же самой логики определения длины, используемой для определения длины других команд в соответствующей карте кода операции.
Логика определения длины, используемая для определения длины команд, для каждой команды в одной из новых карт кода операции упрощена тем, что одинаковый набор входных членов оценивается для определения длины каждой команды в карте кода операции. Такая логика определения длины называется здесь как логика или метод «с фиксированным входом». То есть каждый входной член, оцениваемый для определения длины одной команды в карте, также релевантен для определения длины каждой другой команды в карте. Фиксированный набор членов, подлежащих оцениванию, может отличаться для различных карт кода операции. Хотя набор входных членов, подлежащих оцениванию, может отличаться для различных карт кода операции, входные члены, оцениваемые для определения длины команды, являются одними и теми же по всем командам в заданной карте 3-байтового кода операции.
Комбинация префикса и кода операции перехода обеспечивает значительное расширение таблицы кодов операций процессора, допуская создание новых наборов команд. Такая комбинация использует существующие коды префиксов для определения нового набора команд, в дополнение к набору команд, созданному кодами операций перехода. Используя существующие коды префиксов, схемы декодирования для существующего набора команд могут оставаться относительно неизменными для поддержки декодирования новых команд 118с (фиг.1).
Специфические для команд значения кодов операции (в третьем байте 225 поля 220 кода операции) для некоторых или всех новых команд могут быть теми же самыми, что и коды операции для существующих команд. За счет использования тех же самых кодов операции с префиксом и кодами операции перехода для определения нового набора команд, схемы декодирования могут быть менее сложными, чем при использовании полностью нового набора кодов операции для нового набора команд.
В одном варианте осуществления значение префикса 0Х66 используется для определения новых команд. Могут использоваться и другие префиксы. Кроме того, префиксы могут продолжать использоваться в традиционной роли усовершенствования кода операции или определения кода операции при некотором операционном условии.
В Таблице 1 ниже приведены примеры нового набора команд с использованием префиксов и трехбайтовых кодов операции перехода.
Таблица 1
Команда (Префикс)/Код операции перехода/
специфический для команды код операции
(в шестнадцатеричн.)
Определение
PHADDW 0F 38 01/r Суммировать горизонтально упакованные числа из 64-бит. регистра или памяти в 64-бит. регистр
PHADDW (66)0F 38 01/r Суммировать горизонтально упакованные числа из 128-бит. регистра или памяти в 128-бит. регистр
PHADDD 0F 38 02/r Суммировать горизонтально упакованные числа из 64-бит. регистра или памяти в 64-бит. регистр
PHADDD (66)0F 38 02/r Суммировать горизонтально упакованные числа из 128-бит. регистра или памяти в 128-бит. регистр
PHADDSW 0F 38 03/r Суммировать горизонтально упакованные числа с насыщением из 64-бит. регистра или памяти в 64-бит. регистр
PHADDSW (66)0F 38 03/r Суммировать горизонтально упакованные числа с насыщением из 128-бит. регистра или памяти в 128-бит. регистр
PHSUBW 0F 38 05/r Вычитать горизонтально упакованные слова со знаком в 64-бит. регистре или памяти в 64-бит. регистр
PHSUBW (66)0F 38 05/r Вычитать горизонтально упакованные слова со знаком в 128-бит. регистре или памяти в 128-бит. регистр
PHSUBD 0F 38 06/r Вычитать горизонтально упакованные двойные слова со знаком в 64-бит. регистре или памяти в 64-бит. регистр
PHSUBD (66)0F 38 06/r Вычитать горизонтально упакованные двойные слова со знаком в 128-бит. регистре или памяти в 128-бит. регистр
PHSUBSW 0F 38 07/r Вычитать горизонтально упакованные слова со знаком в 64-бит. регистре или памяти в 64-бит. регистр как результат с насыщением
PHSUBSW (66)0F 38 07/r Вычитать горизонтально упакованные слова со знаком в 128-бит. регистре или памяти в 128-бит. регистр как результат с насыщением
PMADDUBSW 0F 38 04/r Умножить и суммировать упакованные числа со знаком и без знака в 64-битовом регистре или памяти в 64-битовый регистр
PMADDUBSW (66)0F 38 04/r Умножить и суммировать упакованные числа со знаком и без знака в 128-битовом регистре или памяти в 128-битовый регистр
PMULHRSW 0F 38 0B/r Упакованное умножение верхнего порядка с округлением и масштабированием из 64-бит. регистра или памяти в 64-бит. регистр
PMULHRSW (66)0F 38 0B/r Упакованное умножение верхнего порядка с округлением и масштабированием из 128-бит. регистра или памяти в 128-бит. регистр
PSHUFB 0F 38 050/r Упакованные перемешанные байты в 64-бит. регистре или памяти в 64-бит. регистр
PSHUFB (66)0F 38 00/r Упакованные перемешанные байты в 128-бит. регистре или памяти в 128-бит. регистр
PSIGNB 0F 38 08/r 64-бит.регистр или память упакованного знакового байта в 64-бит. регистр
PSIGNB (66)0F 38 08/r 128-бит.регистр или память упакованного знакового байта в 128-бит. регистр
PSIGNW 0F 38 09/r 64-бит.регистр или память упакованного знакового слова в 64-бит. регистр
PSIGNW (66)0F 38 09/r 128-бит.регистр или память упакованного знакового слова в 128-бит. регистр
PSIGND 0F 38 0A/r 64-бит.регистр или память упакованного знакового двойного слова в 64-бит. регистр
PSIGND (66)0F 38 0A/r 128-бит.регистр или память упакованного знакового двойного слова в 128-бит. регистр
PSRMRG 0F 3A 0F/r Упаковать со сдвигом вправо и объединить содержимое 64-бит. регистра или памяти в 64-бит.регистр
PSRMRG (66)0F 3A 0F/r Упаковать со сдвигом вправо и объединить содержимое 128-бит. регистра или памяти в 128-бит.регистр
PABSB 0F 38 1C/r Абсолютное значение упакованного байта для значения в 64-бит. регистре или памяти в 64-бит. регистр как результат без знака
PABSB (66)0F 38 1C/r Абсолютное значение упакованного байта для значения в 128-бит. регистре или памяти в 128-бит. регистр как результат без знака
PABSW 0F 38 1D/r Абсолютное значение упакованного слова для значения в 64-бит. регистре или памяти в 64-бит. регистр как результат без знака
PABSW (66)0F 38 1D/r Абсолютное значение упакованного слова для значения в 128-бит. регистре или памяти в 128-бит. регистр как результат без знака
PASBSD 0F 38 1E/r Абсолютное значение упакованного двойного слова для значения в 64-бит. регистре или памяти в 64-бит. регистр как результат без знака
PABSD (66)0F 38 1E/r Абсолютное значение упакованного двойного слова для значения в 128-бит. регистре или памяти в 128-бит. регистр как результат без знака
В приведенных выше примерах команды с префиксом 0х66 относятся к командам, которые используют один или более регистров расширенного размера (такого как размер 128-битового регистра), в то время как команды без префикса 0х66 относятся к командам, которые используют один или более регистров меньшего размера (такого как размер 64-битового регистра). Регистры меньшего размера упоминаются здесь как регистры «регулярной длины». Как известно специалистам в данной области техники, точные коды для префиксов являются зависящими от реализации и описанное выше значение префикса 0х66 приведено только для иллюстрации.
Декодирование команд с использованием 3-байтовых кодов операции перехода
На фиг.3 приведена диаграмма, иллюстрирующая логику 300 для декодирования команд переменной длины. Логика 300 декодирования может включать в себя декодер 306 длины команды, блок 308 циклического сдвига команд, буфер 310 команд, детектор 320 префикса и перехода, схему 330 запуска декодера и декодер 340 кода операции. Детектор 320 префикса и перехода, схема 330 запуска декодера и декодер 340 кода операции образуют весь или часть блока 116 декодирования, показанного на фиг.1. Хотя детектор 320 префикса и кода перехода показан как единый блок, он может быть реализован как состоящий из отдельных блоков детектора перехода и детектора префикса.
Декодер 306 длины команды определяет длину текущего кода команды, выборка которой была произведена из внешней памяти (например, из памяти 102 на фиг.2). Для целей иллюстрации код команды предполагается включающим в себя до пяти байтов: первый байт соответствует от IN до IN+7, второй байт соответствует от IК до IК+7, третий байт соответствует от IL до IL+7, четвертый байт соответствует от IМ до IМ+7 и пятый байт соответствует от IР до IР+7, где IN до IN+7, IК до IК+7, IL до IL+7, IМ до IМ+7 и IР до IР+7 относятся к позициям битов кода команды. На практике, однако, текущая команда может включать в себя более чем пять байтов в своем коде команды. Аналогичным образом, текущая команда может включать в себя менее пяти байтов в своем коде команды.
По меньшей мере, в одном варианте осуществления пять проиллюстрированных байтов кода команды являются непрерывными, такими как K=N+8, L=K+8 и L=N+16 и M=L+8, M=K+16 и M=K+24 и т.д. Однако, как описано выше в связи с фиг.2, поля формата 200 не обязательно должны занимать показанные позиции. Соответственно, проиллюстрированные пять байтов кода команды, которые описаны здесь, могут иметь любой порядок и необязательно должны быть непрерывными.
Специалисту в данной области должно быть понятно, что логика декодера 306 длины команды может реализовывать довольно сложные методы декодирования длины в системе, которая поддерживает команды переменной длины. Это особенно справедливо для систем, которые требуют различных методов, которые оценивают различные входные входы, для определения длины команды для команд в той же самой карте кода операции. Как описано ниже, варианты осуществления настоящего изобретения обеспечивают упрощенную обработку декодирования длины за счет обеспечения того, что длина каждой команды в карте кода операции определяется посредством логики определения длины одиночного фиксированного входного члена.
Блок 308 циклического сдвига команд циклически сдвигает байты команды так, чтобы первый байт, подлежащий декодированию, был в начальном положении. Блок 308 циклического сдвига команд, таким образом, идентифицирует начало байтов команды, подлежащих декодированию. Следует отметить, что хотя блок 308 циклического сдвига команд может идентифицировать первый байт команды, такой как байт префикса, первый байт не обязательно должен быть идентифицирован. По меньшей мере, в одном варианте осуществления, например, блок 308 циклического сдвига команд идентифицирует наименее значимый байт кода операции и циклически сдвигает его в начальное положение команды. По меньшей мере, еще в одном варианте осуществления блок 308 циклического сдвига команд идентифицирует наиболее значимый байт кода операции и циклически сдвигает его в начальное положение команды.
Буфер 310 команды получает и сохраняет команды, которые были извлечены из внешней памяти. По меньшей мере, в одном варианте осуществления команды декодируются по длине и циклически сдвигаются, прежде чем поступят в буфер 310 команд. По меньшей мере, в одном варианте осуществления буфер 310 команд реализован как кэш команд.
Детектор 320 префикса и перехода получает биты команд от IN до IN+7, от IК до IК+7, от IL до IL+7 и обнаруживает присутствие одного или более из набора предварительно определенных префиксов и/или кодов операции перехода, используемых в качестве части нового набора команд. Значение префикса может быть выбрано так, что оно является тем же, что и префикс, используемый для регулярного набора команд. Схема 330 запуска декодера использует результаты детектора 320 префикса и перехода для генерации сигналов запуска или выбора для отдельного декодера кода операции. Декодер 440 кода операции получает биты команд от IN до IN+7, IК до IК+7, IМ до IМ+7, IL до IL+7 и IР до IР+7 и преобразует отдельные коды команд в декодированные коды команд, которые определяют желательную команду.
На фиг.4 показана блок-схема, иллюстрирующая, по меньшей мере, один вариант осуществления схемы 440 декодера для декодирования новой команды типа 0. Схема 440 декодера может быть реализована как часть детектора префикса и перехода, такого как детектор 320 префикса и перехода, показанный на фиг.3. В целях иллюстрации при описании фиг.4 предполагается, что блок циклического сдвига команд (308 на фиг.3) указывает первый байт кода операции команды.
На фиг.4 показано, что декодер 440 включает в себя схему «И» 450, которая определяет, согласуется ли первый байт команды, то есть биты от IN до IN+7, со значением 0х0F двухбайтового кода операции перехода. Сигнал ESC2 выдается, если биты от IN до IN+7 представляют значение 0х0F двухбайтового кода операции перехода.
Декодер 440 также включает в себя схемы «И» 402, 404, 406, 408. Схема «И» 402 согласует биты от IК до IК+7 команды со значением 0х38 трехбайтового кода операции перехода и генерирует сигнал ES38. Сигнал ES38 выдается, если биты от IK до IK+7 команды представляют значение 0х38 трехбайтового кода операции перехода.
Если биты от IN до IN+7 представляют значение 0х0F двухбайтового кода операции перехода и если биты от IK до IK+7 команды представляют значение 0х38 трехбайтового кода операции перехода, то команда представляет собой новую команду 226 типа 0. Если выданы оба сигнала ESC2 и ES38, то схема «И» 403 выдает оценку «истинно», запуская логику 412. Логика 412 выбирает, для декодирования значения в специфическом для команды поле 225 кода операции (фиг.2), карту трехбайтового кода операции для команд, имеющих значение 0х38 трехбайтового кода перехода.
Схема «И» 404 согласует биты от IК до IК+7 команды со значением 0х39 трехбайтового кода операции перехода и генерирует сигнал ES39. Сигнал ES39 выдается, если биты от IK до IK+7 команды представляют значение 0х39 трехбайтового кода операции перехода. Если биты от IN до IN+7 команды представляют значение 0х0F двухбайтового кода операции перехода и если биты от IK до IK+7 команды представляют значение 0х39 трехбайтового кода операции перехода, то команда представляет собой новую команду 226 типа 0. Если выданы оба сигнала ESC2 и ES39, то схема «И» 405 выдает оценку «истинно», запуская логику 414. Логика 414 выбирает для декодирования значения в специфическом для команды поле 225 кода операции (фиг.2) карту трехбайтового кода операции для команд, имеющих значение 0х39 трехбайтового кода перехода.
Схема «И» 406 согласует биты от IК до IК+7 команды со значением 0х3А трехбайтового кода операции перехода и генерирует сигнал ES3А. Сигнал ES3А выдается, если биты от IK до IK+7 команды представляют значение 0хА трехбайтового кода операции перехода. Если биты от IN до IN+7 команды представляют значение 0х0F двухбайтового кода операции перехода, и если биты от IK до IK+7 команды представляют значение 0х3А трехбайтового кода операции перехода, то команда представляет собой новую команду 226 типа 0. Если выданы оба сигнала ESC2 и ES3А, то схема «И» 405 выдает оценку «истинно», запуская логику 416. Логика 416 выбирает для декодирования значения в специфическом для команды поле 225 кода операции (фиг.2) карту трехбайтового кода операции для команд, имеющих значение 0х3А трехбайтового кода перехода.
Схема «И» 408 согласует биты от IК до IК+7 команды со значением 0х3В трехбайтового кода операции перехода и генерирует сигнал ES3В. Сигнал ES3В выдается, если биты от IK до IK+7 команды представляют значение 0х3В трехбайтового кода операции перехода. Если биты от IN до IN+7 команды представляют значение 0х0F двухбайтового кода операции перехода и, если биты от IK до IK+7 команды представляют значение 0х3В трехбайтового кода операции перехода, то команда представляет собой новую команду 226 типа 0. Если выданы оба сигнала ESC2 и ES3В, то схема «И» 409 выдает оценку «истинно», запуская логику 418. Логика 418 выбирает для декодирования значения в специфическом для команды поле 225 кода операции (фиг.2) карту трехбайтового кода операции для команд, имеющих значение 0х3В трехбайтового кода перехода.
На фиг.5 показана диаграмма, иллюстрирующая дополнительные детали декодера, такого как декодер 340 кода операции, показанного на фиг.3, а также дополнительные детали детектора 320 префикса и перехода и схему 330 запуска декодера.
Для целей иллюстрации предполагается, что для примерного набора команд имеется один префикс 0х66 и три кода операции перехода: регулярные коды операции перехода 0ХD8 - 0xDF, двухбайтовый код операции перехода 0x0F и трехбайтовые коды операции перехода 0x0F38 - 0x0F3B.
Для целей иллюстрации также предполагается, что блок циклического сдвига команды (308 на фиг.3) имеет показанный первый байт кода команды, который может быть префиксом. Однако понятно, что на практике команда может получать циклический сдвиг до других байтов, например, до наименее значимого байта кода операции, и что функциональные средства, показанные на фиг.5, могут быть соответственно модифицированы.
На фиг.5 показано, что дополнительные байты команды, в дополнение к показанным на фиг.3, могут быть направлены в конкретный индивидуальный декодер 530, 532, 534, 536, 538, 540, 542. Например, на фиг.5 показано, что слова команды от IМ до IМ+7 и от IР до IР+7 могут маршрутизироваться в декодер 542 для типа 1 новой команды. Некоторые особенности схемы, показанной на фиг.5, намеренно исключены для упрощения чертежа, чтобы не загромождать признаки выбранных вариантов осуществления несущественными деталями. Однако специалистам в данной области техники должно быть понятно, что другие байты слов команды, в дополнение к показанным на фиг.5, могут направляться в другие декодеры 530, 5323, 534, 536, 538, 440.
Детектор 320 префикса и перехода включает в себя 5 схем «И» 510, 512, 514, 516, 518 и 520. В принципе, схемы «И» 510, 512, 514 согласуют биты от IN до IN+7 команды с соответствующим кодом префикса и кодом операции перехода.
Схема «И» 510 согласует биты от IN до IN+7 команды с кодом префикса 0х66 и генерирует сигнал PRFX. Сигнал PRFX выдается, если биты от IN до IN+7 команды представляют префикс 0х66.
Схема «И» 512 согласует биты от IN до IN+7 команды с кодами операции перехода 0хD8 - 0xDF и генерирует сигнал ESC1. Сигнал ESC1 выдается, если биты от IN до IN+7 команды представляют любой из кодов операции перехода 0хD8 - 0xDF.
Схема «И» 514 согласует биты от IN до IN+7 команды с двухбайтовым кодом операции перехода 0х0F и генерирует сигнал ESC2А. Сигнал ESC2А выдается, если биты от IN до IN+7 команды представляют двухбайтовый код операции перехода 0х0F. Если биты от IN до IN+7 команды представляют двухбайтовый код операции перехода 0х0F, то команда может быть либо расширенной командой 222 типа 0, либо новой командой 228 типа 0. Поэтому как описано ниже, дополнительная схема «И» 518 оценивает третий набор от IL до IL+7 для определения, присутствует ли вторая половина трехбайтового кода операции.
Аналогично описанному выше, детектор 320 префикса и перехода определяет, включает ли первый набор битов от IN до IN+7 кода операции команды значение префикса 0х66 или одно из значений кода операции перехода. Если первый набор битов включает значение префикса, то команда может быть расширенной командой 224 типа 1 или новой командой 228 типа 1. Таким образом, второй набор битов от IK до IK+7 оценивается для определения того, содержит ли он значение 0х0F. (Если он не содержит, то префикс предполагается традиционным префиксом, а не частью кода операции команды).
Соответственно, схема «И» 516 согласует биты от IК до IК+7 команды с двухбайтовым кодом операции перехода 0х0F и генерирует сигнал ESC2В. Сигнал ESC2В выдается, если биты от IК до IК+7 команды представляют двухбайтовый код операции перехода 0х0F.
В дополнение, схема «И» 518 оценивает биты от IК до IК+7 команды для определения, присутствует ли в битах вторая половина трехбайтового кода операции. Такая оценка полезна в случае, когда первый набор битов от IК до IК+7 содержит значение 0х0F. Схема «И» 518 согласует биты от IК до IК+7 команды с второй половиной 3-байтового кода операции перехода и генерирует сигнал ESC3A. Сигнал ESC3A выдается, если биты от IК до IК+7 команды содержат значение 0х38, 0х39, 0х3А или 0х3В.
Вышеописанным способом схема 320 детектора префикса и перехода определяет, включает ли в себя второй набор битов от IК до IК+7 кода операции команды одно из значений кода операции перехода. Если второй набор битов от IК до IК+7 включает в себя вторую половину трехбайтового кода операции, то команда может быть новой командой 225 типа 0. Однако если второй набор битов от IК до IК+7 содержит значение 0х0F, то команда может быть либо расширенной командой 224 типа 1, либо новой командой 228 типа 1. Соответственно третий набор битов от IL до IL+7 оценивается, чтобы определить, включает ли он в себя вторую половину одного из трехбайтовых кодов операции. То есть третий набор битов от IL до IL+7 оценивается, чтобы определить, включает ли он в себя значения 0х38, 0х39, 0х3А или 0х3В.
Соответственно, фиг.5 показывает, что схема «И» 518 согласует биты от IК до IК+7 команды с вторым байтом 3-байтового кода операции перехода 0х38-0х3В и генерирует сигнал ESC3В. Сигнал ESC3В выдается, если биты от IL до IL+7 команды представляют второй байт любого из трехбайтовых кодов операции перехода 0х038 - 0х0F3В.
Как известно специалистам в данной области техники, для выполнения согласования или декодирования битов от IN до IN+7, IК до IК+7 и от IL до IL+7 команд могут использоваться и другие логические схемы.
Схема 330 запуска декодера принимает сигналы PREF, ESC1, ESC2A, ESC2B, ESC3A, ECS3B для генерации сигналов запуска для отдельных декодеров. Схема 330 запуска декодера включает в себя схему «исключающее ИЛИ» 520, схемы «И» 522, 526, 527, 528 и 529. Специалисту в данной области техники должно быть ясно, что все или часть декодеров могут быть реализованы вместе в одном устройстве, таком как программируемая логическая матрица.
Схема «Исключающее ИЛИ» 520 выдает сигнал EN1, если для всех сигналов PREF, ESC1, ESC2A выполняется логическая операция «НЕ». Это условие соответствует условию, когда биты от IN до IN+7 команды не согласуются ни с префиксом, ни с кодом операции перехода с плавающей запятой, ни с 2-байтовым кодом операции перехода. Поэтому биты от IN до IN+7 команды соответствуют коду операции однобайтовой регулярной команды.
Схема «И» 522 выдает сигнал EN2, если выдан сигнал PREF, а для сигнала ESC2В выполняется логическая операция «НЕ». Выдача сигнала EN2 соответствует условию, когда биты от IN до IN+7 команды согласуются с кодом префикса, но биты от IК до IК+7 команды не согласуются с 2-байтовым кодом операции перехода. Поэтому это условие соответствует коду операции, использующей префикс как спецификатор регулярной команды.
Сигнал ESC1 используется как сигнал EN3. Этот сигнал выдается, когда биты от IN до IN+7 команды согласуются с кодом операции перехода с плавающей запятой. Поэтому это условие соответствует коду операции с плавающей запятой регулярной команды.
Схема «И» 528 выдает сигнал EN4, если выдан сигнал ESC2A, а для сигнала ESC3В выполняется логическая операция «НЕ». Выдача сигнала EN4 соответствует условию, когда биты от IN до IN+7 команды согласуются с 2-байтовым кодом операции перехода, но биты от IК до IК+7 команды не согласуются с второй половиной любого из 3-байтовых кодов операции перехода. Поэтому это условие соответствует коду операции расширенной команды типа 0.
Схема «И» 526 выдает сигнал EN5, если выданы сигналы PREF и ESC2В, а для сигнала ESC3В выполняется логическая операция «НЕ». Это условие соответствует условию, когда биты от IN до IN+7 команды согласуются с кодом префикса, биты от IК до IК+7 команды согласуются с 2-байтовым кодом операции перехода, но биты от IL до IL+7 команды не согласуются с второй половиной любого из 3-байтовых кодов операции перехода. Поэтому это условие соответствует коду операции расширенной команды типа 1.
Схема «И» 527 выдает сигнал EN6, если выданы сигналы ESC2A и ESC3В. Выдача сигнала EN6 соответствует условию, когда биты от IN до IN+7 команды согласуются с 2-байтовым кодом операции перехода, а биты от IL до IL+7 команды согласуются с второй половиной одного из 3-байтовых кодов операции перехода. Поэтому это условие соответствует коду операции новой команды типа 1.
Схема «И» 529 выдает сигнал EN7, если выданы сигналы PREF, ESC2В и ESC3В. Выдача сигнала EN7 соответствует условию, когда биты от IN до IN+7 команды согласуются с кодом префикса, биты от IК до IК+7 команды согласуются с 2-байтовым кодом операции перехода, и биты от IL до IL+7 команды согласуются с второй половиной одного из 3-байтовых кодов операции перехода. Поэтому это условие соответствует коду операции новой команды типа 1.
Декодер 340 кода операции включает в себя регулярный однобайтовый декодер 530, регулярный декодер 532 префикса, регулярный декодер 534 перехода, декодер 536 расширенной команды типа 0, декодер 538 расширенной команды типа 1, декодер 440 новой команды типа 0 и декодер 542 новой команды типа 1. Хотя эти декодеры 530, 532, 534, 536, 538, 440, 542 показаны как отдельные блоки, на практике декодирование этих команд может быть объединено.
На фиг.6 показана блок-схема алгоритма, иллюстрирующая способ 600 выполнения декодирования команд для команд формата, определенного в наборе команд, где набор команд включает в себя команды, кодированные с использованием трехбайтовых кодов операции перехода. Специалисту в данной области техники должно быть понятно, что блоки 602-636 обработки, показанные на фиг.6, не обязательно должны выполняться в показанном порядке. Эти блоки 602-636 могут быть выполнены в различном порядке. Например, определение 602 действительного префикса может быть выполнено после определений 604, 605 двухбайтового кода операции перехода. Альтернативно, обработка некоторых или всех из блоков обработки, показанных на фиг.6, могут выполняться одновременно с обработкой других блоков.
На фиг.6 показано, что способ 600 начинается на этапе запуска, после чего обработка переходит к блоку 602. В блоке 602 по процедуре способа 600 происходит определение того, согласуется ли первый байт, биты от IN до IN+7 команды с кодом 0х66 префикса. Если нет, то обработка переходит к блоку 604. В противном случае обработка переходит к блоку 610.
В блоке 610 по процедуре способа 600 происходит определение того, согласуются ли биты от IN до IN+7 команды с значением двухбайтового кода операции перехода. По меньшей мере, в одном варианте осуществления значение двухбайтового кода операции равно 0х0F. Если проверка 610 кода операции перехода дает результат «ложно», то обработка переходит к блоку 624. В блоке 624 определяется, что первый байт, биты от IN до IN+7 команды, согласуется с кодом 0х66 префикса (см. блок 602) и что второй байт, биты от IК до IК+7 команды, не согласуется с значением двухбайтового кода операции перехода (см. блок 610). Соответственно, в блоке 624 второй байт, биты от IК до IК+7 команды, декодируется как код операции регулярной команды со спецификатором префикса.
Если проверка 610 кода операции перехода дает результат «истинно», то обработка переходит к блоку 628 для определения того, является ли команда новой командой типа 1. В блоке 628 по процедуре способа определяется, согласуется ли третий байт, биты от IL до IL+7 команды, со второй половиной значения трехбайтового кода операции перехода. По меньшей мере, в одном варианте осуществления значениями трехбайтового кода операции перехода являются следующие: 0х0F38, 0х0F39, 0х0F3А и 0х0F3В. Соответственно, в блоке 628 определяется, согласуется ли третий байт команды, биты от IL до IL+7 команды, со значениями 0х038, 0х039, 0х03А и 0х03В. Если нет, то обработка переходит к блоку 632. Однако если проверка в блоке 628 трехбайтового кода операции перехода дает результат «истинно», то обработка переходит к блоку 634. В блоке 634 четвертый байт команды, биты от IМ до IМ+7 команды, декодируется как код операции новой команды типа 1. Затем обработка завершается.
В блоке 632 третий байт команды, биты от IL до IL+7 команды, декодируется как код операции расширенной команды типа 1, имеющей значение 0х66 в первом байте команды и значение 0х0F двухбайтового кода операции перехода во втором байте команды. Затем обработка завершается.
В блоке 604 обработка продолжается, если в блоке 602 определено, что первый байт команды, биты от IК до IК+7 команды, не согласуется со значением 0х66 префикса. В блоке 604 определяется, согласуется ли первый байт команды, биты от IК до IК+7 команды, со значением двухбайтового кода операции перехода. Если нет, то обработка переходит к блоку 606. Однако если оценка в блоке 604 двухбайтового кода операции перехода дает результат «истинно», то обработка продолжается в блоке 620 для определения того, является ли команда новой командой типа 0.
В блоке 620 по процедуре способа определяется, согласуется ли второй байт команды, биты от IК до IК+7 команды, со второй половиной значения трехбайтового кода операции перехода. По меньшей мере, в одном варианте осуществления, значениями трехбайтового кода операции перехода являются следующие: 0х0F38, 0х0F39, 0х0F3А и 0х0F3В. Соответственно, в блоке 620 определяется, согласуется ли второй байт команды, биты от IК до IК+7 команды, со значениями 0х38, 0х39, 0х3А и 0х3В. Если нет, то обработка переходит к блоку 622. Однако если проверка в блоке 620 трехбайтового кода операции перехода дает результат «истинно», то обработка переходит к блоку 630. В блоке 630 третий байт команды, биты от IL до IL+7 команды, декодируется как код операции новой команды типа 0. Затем обработка завершается.
Если проверка трехбайтового кода операции перехода в блоке 620 дает результат «ложно», то обработка переходит к блоку 622. В блоке 622 третий байт команды, биты от IL до IL+7 команды, декодируется как код операции расширенной команды типа 0, имеющей значение 0х66 префикса в ее первом байте и значение 0х0F двухбайтового кода операции перехода в ее втором байте.
В блоке 606 обработка продолжается, если в блоке 604 определено, что первый байт команды, биты от IК до IК+7 команды, не согласуется со значением двухбайтового кода операции перехода. В блоке 606 по процедуре способа 600 определяется, согласуется ли первый байт команды с другим кодом операции перехода (например, кодами операции перехода с плавающей запятой - от 0хD8 до 0хDF). Если нет, то обработка переходит к блоку 636 для декодирования первого байта как однобайтовой регулярной команды. Затем обработка завершается.
Если, однако, оценка в блоке 606 другого кода операции перехода дает результат «истинно», то обработка переходит к блоку 606, где второй байт декодируется как код операции других регулярных команд (например, команд с плавающей запятой). Затем обработка завершается.
Фиг.7 иллюстрирует способ 700 для определения длины команды, которая была извлечена из памяти. По меньшей мере, в одном варианте осуществления способ 700 выполняется декодером длины команды (таким, как, например, 306 на фиг.3).
Согласно фиг.7, обработка начинается на этапе запуска и переходит к блоку 702. В блоке 702 определяется, является ли текущий байт команды байтом префикса. При первом прогоне процедуры способа 700, текущий байт является первым байтом команды. Если текущий байт определен в блоке 702 как содержащий значение префикса, как определено в наборе команд, то префикс обрабатывается в блоке 712, и следующий байт извлекается для обработки.
Затем обработка возвращается к блоку 702, чтобы определить, содержит ли новый текущий байт, извлеченный в блоке 712, значение префикса. Таким образом, способ 700 обеспечивает декодирование длины команды, которая включает в себя множество байтов префикса. По меньшей мере, в одном варианте осуществления, как указано выше, команда может включать в себя до четырех байтов префикса.
Если в блоке 702 определено, что текущий байт команды не включает в себя значение префикса, то обработка переходит к блоку 704. В блоке 704 определяется, включает ли в себя текущий байт команды значение двухбайтового кода команды перехода, такое как 0х0F. Если нет, то обработка переходит к блоку 714, как описано более детально ниже.
Если в блоке 704 определено, что текущий байт команды включает в себя значение двухбайтового кода команды перехода, то команда может быть новой командой типа 0 или новой командой типа 1. Соответственно в блоке 705 получают следующий байт команды, а в блоке 706 определяют, содержит ли вновь полученный байт одно из значений трехбайтового кода операции перехода. Если это так, то определяется, что команда является новой командой типа 0 или типа 1.
Для определения длины новой команды типа 0 или типа 1 оценивается содержимое поля 230 modR/M. Соответственно содержимое байта modR/M для кода текущей команды извлекается в блоке 707. В блоке 708 определяется, указывает ли значение modR/M, что из кода текущей команды должно быть извлечено значение SIB. Если это так, то содержимое поля 240 SIB (фиг.2) извлекается, и обработка переходит к блоку 710. Если нет, то обработка переходит к блоку 710. Важно отметить, что ввиду описываемого упрощенного способа декодирования длины (см. блок 710), не требуется оценивать содержимое поля 225 (фиг.2) специфического для команды кода операции при декодировании длины новой команды типа 0 или типа 1. Соответственно, такой байт не извлекается и, следовательно, «пропускается» в блоке 707.
В блоке 710 определяется длина новых команд типа 0 и типа 1, чтобы установить, где команда начинается и заканчивается. Для того чтобы определить длину команды, блок 710 оценивает содержимое, по меньшей мере, трех байтов команды. Разумеется, специалистам в данной области техники должно быть понятно, может оцениваться большее или меньшее число байтов для определения длины команды иных, чем новые команды типа 0 и типа 1.
В блоке 710 оцениваются первый, второй и третий байты команды для определения длины новой команды типа 0. Кроме того, по меньшей мере, некоторые биты пятого байта команды оцениваются, если имеется значение SIB. То есть для новой команды типа 0 блок 710 оценивает содержимое поля 118с (фиг.2) трехбайтового кода операции перехода, поле modR/M (230, фиг.2) и три бита поля SIB (240, фиг.2), если имеется значение для поля SIB. Длина определяется следующим образом:
Если ((байт1==0х0F)И(байт2==0х38или0х39или0х3Аили0х3В)И
(байт4=modR/M без смещения и не требуется SIB)), то Длина_команды =4
И если ((байт1==0х0F)И(байт2==0х38или0х39или0х3Аили0х3В)И
(байт4=modR/M со смещением или требуется SIB)), то Длина_команды вычисляется на основе поля modR/M (230, фиг.2) и значения трех битов в поле SIB (240, фиг.2).
Соответственно, блоку 710 декодирования длины для новой команды типа 0 не требуется оценивать третий байт кода операции для определения длины команды. Также для каждой карты кода операции соответствующая логика определения длины получает один и тот же набор фиксированных входов для оценки длины каждой команды в соответствующей карте. Например, для карты кода операции 0х0F38 логика определения длины оценивает байт modR/M в блоке 708. Если значение байта modR/M указывает, что байт SIB отсутствует в коде текущей команды, то длина команды декодируется в блоке 710 без оценки байта SIB.
Если, с другой стороны, значение SIB существует, то один или более битов в поле SIB 240 (фиг.2) оцениваются для определения в блоке 710 длины кода команды. Значение в специфическом для команды поле 225 кода операции (фиг.2) не оценивается для определения длины команды в карте кода операции 0x0F38. Также не оценивается никакой входной член иной, чем значения modR/M и SIB (если указаны), оцениваемые для любой команды в карте кода операции. Соответственно, оценивается фиксированный набор входных членов для определения длины команды в данной карте кода операции, при этом каждый входной член релевантен для определения длины каждой команды в карте кода операции.
Конкретный входной член «релевантен» для определения длины кода команды, если, при заданном значении одного или более других входных членов, конкретный входной член используется для определения длины кода команды. Например, значение SIB релевантно для каждой команды в карте 0х0F38 кода операции, поскольку, для каждой команды в карте, значение SIB должно оцениваться для определения длины в зависимости от значения modR/M. В противоположность этому, значение специфического для команды кода операции 225 (фиг.2) не релевантно для определения длины любой команды в карте кода операции 0хF38, так как оно не оценивается для определения длины, независимо от значения других входных членов. Аналогичным образом, другие входные члены, такие как значение поля смещения 250 (фиг.2), не релевантны для определения длины команды, если они не должны использоваться для оценки длины команды при любой комбинации значений других релевантных входных членов.
Таким образом, логика декодирования для нового типа 0 поддерживается относительно простой. По меньшей мере, в одном варианте осуществления никакие дополнительные биты не оцениваются для определения того, какая логика декодирования длины должна использоваться для новой команды типа 0, по сравнению с числом байтов, оцениваемых для определения того, какая логика декодирования длины должна использоваться для расширенной команды типа 0. Эта простота сохраняется для всех команд в картах новых кодов операций, поскольку тот же самый способ применим для определения длины каждой команды в заданной карте кода операции.
Как использовано в настоящем описании, термин «карта кода операции» относится к группе команд, определенных некоторой комбинацией значений в байтах команды. Например, все команды, определенные посредством 0F:38:1b"xxxxxxxx" и 66:0F:38:1b"xxxxxxxx", рассматриваются как часть карты кода операции для 3-байтового значения кода операции перехода 0F:38. Аналогичным образом, карта кода операции 0F:39 относится к группе команд, определенных посредством 0F:39:1b"xxxxxxxx" и 66:0F:39:1b"xxxxxxxx"; карта кода операции 0F:3А относится к группе команд, определенных посредством 0F:3А:1b"xxxxxxxx" и 66:0F:3A:1b"xxxxxxxx"; карта кода операции 0F:3В относится к группе команд, определенных посредством 0F:3В:1b"xxxxxxxx" и 66:0F:3В:1b"xxxxxxxx", где 1b"xxxxxxxx" является определенным кодом операции специфицируемой карты кода операции.
В блоке 710 второй, третий и пятый байты команды оцениваются для определения длины новой команды типа 1. Кроме того, по меньшей мере, некоторые биты из шестого байта команды оцениваются, если присутствует значение SIB. Аналогично обработке для новой команды типа 0, блок 622 оценивает два байта, которые с содержат значение поля трехбайтового кода операции перехода (118с, фиг.2), поле modR/M (230, фиг.2) и 3 бита поля SIB (240, фиг.2), если значение для поля SIB присутствует. Длина определяется следующим образом:
Если ((байт2==0х0F)И(байт3==0х38или0х39или0х3Аили0х3В)И
(байт5=modR/M без смещения и не требуется SIB)), то Длина_команды =4
И если ((байт1==0х0F)И(байт2==0х38или0х39или0х3Аили0х3В)И
(байт4=modR/M со смещением или требуется SIB)), то Длина_команды вычисляется на основе поля modR/M (230, фиг.2) и значения трех битов в поле SIB (240, фиг.2).
Соответственно блок 710 декодирования длины для новой команды типа 1 не должен оценивать третий байт кода операции для определения длины команды. Таким образом, логика декодирования для новой команды типа 1 поддерживается относительно простой. По меньшей мере, в одном варианте осуществления никакие дополнительные байты не оцениваются для определения того, какую логику декодирования длины использовать для новой команды типа 1, по сравнению с числом байтов, оцениваемых для определения того, какую логику декодирования использовать для расширенной команды типа 1.
Как упомянуто выше, простота обработки 710 декодирования длины для новых команд типа 0 и типа 1 сохраняется путем определения карт кодов операций и соответствующей им логики определения длины так, чтобы использовалось определение длины с одним фиксированным входом для определения длины каждой команды в соответствующей карте кода операции. Длина каждой команды в конкретной карте 3-байтового кода операции, таким образом, определяется тем же методом, что и для всех других команд, имеющих 3-байтовое значение кода операции. То есть каждое из 3-байтовых значений кода операции - 0х0F38, 0х0F39, 0х0F3А и 0х0F3В - связано с картой кода операции, в которой длина каждой команды карты кода операции определяется тем же самым способом с фиксированным входом.
Например, по меньшей мере, в одном варианте осуществления все команды, связанные с значением 0x0F38 трехбайтового кода операции перехода (см. Таблицу, приведенную выше), определяются путем оценки тех же самых четырех байтов команды. Эти четыре байта включают в себя два байта, которые содержат значение (0x0F38) трехбайтового кода операции перехода, однобайтовое поле кода операции, которое содержит значение кода операции (как показано выше в Таблице) и однобайтовое поле modR/M. В зависимости от значения в поле modR/M дополнительные три бита поля SIB могут также оцениваться для определения длины команды в карте кода операции 0x0F38. Никакие непосредственно получаемые данные не включаются в любую команду в карте кода операции 0x0F38.
Аналогичным образом, по меньшей мере, в одном варианте осуществления все команды, связанные с значением 0x0F3А трехбайтового кода операции перехода (см. Таблицу, приведенную выше), определяются тем же самым методом. Метод оценивает два байта, которые содержат значение (0x0F38) трехбайтового кода операции перехода, однобайтовое поле кода операции, которое содержит значение кода операции (как показано выше в Таблице), однобайтовое поле modR/M и однобайтовое поле, которое содержит непосредственно получаемые данные. В зависимости от значения в поле modR/M дополнительные три бита поля SIB могут также оцениваться для определения длины команды в карте кода операции 0x0F38.
Фиг.7 показывает, что если в блоке 706 определено, что байт команды, следующий за байтом, содержащим значение 0х0F двухбайтового кода операции перехода, не содержит одно из значений трехбайтового кода операции перехода, то обработка переходит к блоку 722.
Блоки 714, 716, 718, 719, 720 и блоки 722, 724, 726, 727 и 728 соответственно выполняют сходную обработку. Обработка первого набора блоков выполняется, если блок 704 определяет, что команда не включает в себя значение 0х0F двухбайтового кода операции перехода. Обработка в блоках 722, 724, 726, 727 и 728, с другой стороны, выполняется, если в блоке 706 определено, что хотя предшествующий байт содержит значение 0х0F двухбайтового кода операции перехода, однако текущий байт не включает в себя значение трехбайтового кода операции перехода.
Для каждого случая в блоках 714 и 722 соответственно определяется, включает ли в себя текущая команда значение modR/M. Если это так, то обработка переходит к блокам 718 и 726 соответственно, где получают значение modR/M. Если значение modR/M указывает, что должно быть извлечено значение SIB, то значение SIB извлекается соответственно в блоках 719 и 727. Длина команды определяется в блоках 720 и 728 соответственно с использованием значения modR/M и, если указано, одного или более битов из поля SIB. Затем обработка завершается.
Если текущая команда включает в себя значение modR/M, то обработка переходит к блокам 716 и 724 соответственно, где декодируется длина команды без учета значения modR/M. Затем обработка завершается.
Как показывает приведенное выше описание, варианты осуществления устройства и способа, раскрытых в настоящем описании, обеспечивают эффективный механизм для декодирования нового набора команд с использованием трехбайтовых кодов операции перехода с существующим значением префикса. Новый набор команд расширяет существующий набор команд, не приводя к чрезмерному усложнению декодера команд.
Выше описано определение карты кода операции для процессора, имеющего набор команд переменной длины, для которого каждая команда в карте кода операции может быть декодирована по длине с использованием логики определения длины с фиксированным входом. В вышеприведенном описании использованы термины единого метода определения длины команд в карте 3-байтового кода операции перехода. Однако в альтернативном варианте осуществления может быть определена карта однобайтового кода операции перехода, так что единая логика определения длины с фиксированным входом может быть применена для декодирования длины для каждой команды в карте кода операции. Для таких команд специфический для команды код операции отслеживает байт перехода, содержащий конкретное значение, такое, например, как 0xD6 или 0xF1. Длина каждой команды в такой карте однобайтового кода операции перехода может быть декодирована с использованием той же самой логики декодирования длины с фиксированным входом.
Аналогичным образом, в альтернативном варианте осуществления вся или часть карты 2-байтотового кода операции перехода может также определяться как описано здесь. В таком варианте осуществления та же самая логика определения длины с фиксированным входом может применяться для декодирования длины каждой команды в карте нового двухбайтового кода операции перехода. Например, блок команд в карте двухбайтового кода операции перехода может быть определен так, что логика определения длины с фиксированным входом может быть использована для определения длины каждой команды в такой карте кода операции. По меньшей мере, в одном варианте осуществления карты новых кодов операции перехода определены так, что специфический для команды код операции следует коду перехода. Код перехода может, например, быть одним из следующих: 0x0F3C - 0x0F3Y.
Хотя выше представлены конкретные варианты осуществления настоящего изобретения, для специалистов в данной области техники должно быть ясно, что изменения и модификации могут быть осуществлены без отклонения от настоящего изобретения в его широких аспектах. Прилагаемая формула изобретения должна охватывать своим объемом все такие изменения и модификации, которые находятся в пределах истинного объема настоящего изобретения.

Claims (76)

1. Способ определения длины кода команды расширенного набора команд переменной длины, использующего 3-байтовые коды операции перехода, содержащий определение того, включает ли в себя код команды из упомянутого набора команд значение кода операции перехода, если код команды включает в себя значение кода операции перехода, то определение длины кода команды без оценки специфического для команды кода операции, который определяет команду расширенного набора команд, в коде команды.
2. Способ по п.1, дополнительно содержащий исполнение конкретной операции, ассоциированной со значением специфического для команды кода операции.
3. Способ по п.1, дополнительно содержащий определение, включает ли в себя код команды код префикса, и, если код команды включает в себя код префикса, и код команды включает в себя код операции перехода, то генерирование, в ответ на код команды, первого декодированного кода команды.
4. Способ по п.3, дополнительно содержащий генерирование, в ответ на код команды, второго декодированного кода команды, если код команды не включает в себя код префикса, и код команды включает в себя код операции перехода.
5. Способ по п.3, в котором код префикса представляет собой шестнадцатеричное значение 66.
6. Способ по п.1, в котором значение кода операции перехода является одним из множества значений кода операции перехода, определенных для набора команд.
7. Способ по п.6, в котором множество значений кода операции перехода включает в себя шестнадцатеричные значения 0F38, 0F39, 0F3A и 0F3B.
8. Способ по п.3, в котором первый декодированный код команды указывает, по меньшей мере, один регистр расширенной длины.
9. Способ по п.4, в котором второй декодированный код команды указывает, по меньшей мере, один регистр регулярной длины.
10. Устройство для декодирования длины команды расширенного набора команд, использующего 3-байтовые коды операции перехода, содержащее детектор операции перехода для определения того, включает ли в себя код команды значение кода операции перехода, и декодер длины команды для определения длины кода команды, при этом если код команды включает в себя значение кода операции перехода, то декодер длины команды обеспечивает определение длины кода команды без оценки специфического для команды кода операции, который определяет команду расширенного набора команд, в коде команды.
11. Устройство по п.10, дополнительно содержащее декодер кода операции для генерации, в ответ на содержимое поля специфического для команды кода операции, управляющего сигнала, который представляет команду.
12. Устройство по п.10, дополнительно содержащее детектор префикса для определения того, включает ли код команды код префикса.
13. Устройство по п.12, дополнительно содержащее декодер кода операции для генерации, если код команды включает в себя код префикса, и код команды включает в себя код операции перехода, первого декодированного кода команды в ответ на содержимое поля специфического для команды кода операции.
14. Устройство по п.13, в котором декодер кода операции дополнительно обеспечивает генерацию, если код команды не включает в себя код префикса, и код команды включает код операции перехода, второго декодированного кода команды в ответ на содержимое поля специфического для команды кода операции.
15. Устройство по п.12, в котором код префикса представляет собой шестнадцатеричное значение 66.
16. Устройство по п.10, в котором значение кода операции перехода является одним из множества значений кода операции перехода, определенных для набора команд.
17. Устройство по п.16, в котором множество значений кода операции перехода включает в себя шестнадцатеричные значения 0F38, 0F39, 0F3A и 0F3B.
18. Устройство по п.13, в котором первый декодированный код команды указывает, по меньшей мере, один регистр расширенной длины.
19. Устройство по п.14, в котором второй декодированный код команды указывает, по меньшей мере, один регистр регулярной длины.
20. Система расширения набора команд с использованием 3-байтовых кодов операции перехода, содержащая память для хранения кода команды, который определяет команду для расширения набора команд, причем код команды имеет специфический для команды код операции и код перехода, причем код перехода включает в себя значение первого байта и значение второго байта, при этом специфический для команды код операции неразрывно связан с кодом перехода, так, что значение первого байта, значение второго байта и специфический для команды код операции находятся рядом друг с другом в коде команды, без промежуточных полей между ними, логику выборки для выборки кода команды из памяти и блок декодирования для генерации одного или более сигналов управления, предназначенных для указания операции, которая соответствует коду команды, в ответ на осуществление выборки кода команды.
21. Система по п.20, в которой блок декодера дополнительно содержит логику определения длины для приема фиксированного набора входных данных, причем каждые входные данные в фиксированном наборе входных данных релевантны для определения длины каждого из множества кодов команд, при этом каждый из множества кодов команд включает в себя значение кода перехода.
22. Система по п.20, дополнительно содержащая детектор перехода для определения того, является ли код перехода одним из множества предварительно определенных значений кодов перехода.
23. Система по п.22, в котором множество предварительно определенных значений кодов перехода включает в себя шестнадцатеричные значения 0F38, 0F39, 0F3A и 0F3B.
24. Система по п.20, дополнительно содержащая детектор префикса для определения того, включает ли в себя первый код команды значение префикса.
25. Система по п.21, в которой фиксированный набор входных данных включает в себя содержимое поля modR/M.
26. Система по п.21, в которой фиксированный набор входных данных включает в себя, по меньшей мере, часть содержимого поля SIB.
27. Система по п.20, в которой блок декодера дополнительно содержит декодер длины для определения длины команды на основе поднабора кода команды, причем поднабор исключает специфический для команды код операции.
28. Система по п.27, отличающаяся тем, что упомянутый поднабор включает в себя значения первого и второго байта кода перехода и значение формы адресации.
29. Система по п.28, в которой поднабор дополнительно содержит часть содержимого факультативного поля базы.
30. Система по п.20, в которой блок декодера дополнительно содержит декодер кода операции для генерации одного или более сигналов управления в ответ на специфический для команды код операции, причем содержимое специфического для команды кода операции определяет операцию.
31. Система по п.20, дополнительно содержащая исполнительную логику для выполнения операции в ответ на сигналы управления.
32. Система по п.20, в которой код команды дополнительно включает в себя значение префикса.
33. Способ исполнения набора команд, использующего 3-байтовые коды операции перехода, содержащий выборку из памяти кода команды в формате команды переменной длины, причем формат команды включает в себя поле перехода, имеющее множество байтовых элементов, включая первый байтовый элемент и второй байтовый элемент, причем формат команды дополнительно включает в себя поле формы адресации и поле специфического для команды кода операции между полем перехода и полем формы адресации, причем поле специфического для команды кода операции предназначено для хранения значения, которое определяет команду расширенного набора команд, и инициирование операции в соответствии со значением в специфическом для команды коде операции.
34. Способ по п.33, в котором инициирование операции дополнительно включает в себя генерирование сигнала управления на основе, по меньшей мере, частично значения специфического для команды кода операции.
35. Способ по п.33, в котором инициирование операции дополнительно включает в себя инициирование операции над упакованными данными.
36. Способ по п.33, дополнительно содержащий определение длины кода команды, причем определение длины полностью основано на содержимом поля перехода, поля формы адресации и поля префикса в коде команды.
37. Способ по п.33, дополнительно содержащий определение длины кода команды, причем определение длины полностью основано на содержимом поля перехода и поля формы адресации.
38. Способ по п.33, дополнительно содержащий определение длины кода команды, причем определение длины полностью основано на содержимом поля перехода, поля формы адресации и части содержимого факультативного поля базы, при этом формат команды дополнительно включает в себя факультативное поле базы.
39. Устройство для выполнения набора команд, использующего 3-байтовые коды операции перехода, содержащее декодер для генерации сигнала управления в ответ на код команды в формате команды переменной длины, код команды содержит поле перехода, имеющее множество байтовых элементов, включая, по меньшей мере, первый и второй байтовый элемент, поле формы адресации и поле специфического для команды кода операции между полем перехода и полем режима адресации, причем поле специфического для команды кода операции предназначено для хранения значения, которое определяет команду расширенного набора команд, и исполнительный блок для выполнения операции в ответ на упомянутый сигнал управления, причем сигнал управления предназначен для указания операции, которая соответствует коду команды.
40. Устройство по п.39, в котором содержимое поля перехода указывает ограничение по длине кода команды.
41. Устройство по п.39, в котором исполнительный блок предназначен для перетасовки упакованных байтов, если содержимое поля перехода представляет собой шестнадцатеричное значение "0F38", и содержимое поля специфического для команды кода операции представляет собой шестнадцатеричное значение "00".
42. Устройство по п.39, в котором исполнительный блок предназначен для выполнения суммирования горизонтально упакованных чисел длины слова, если содержимое поля перехода представляет собой шестнадцатеричное значение "0F38", и содержимое поля специфического для команды кода операции представляет собой шестнадцатеричное значение "01".
43. Устройство по п.39, в котором исполнительный блок предназначен для выполнения суммирования горизонтально упакованных чисел длины двойного слова, если содержимое поля перехода представляет собой шестнадцатеричное значение "0F38", и содержимое поля специфического для команды кода операции представляет собой шестнадцатеричное значение "02".
44. Устройство по п.39, в котором исполнительный блок предназначен для выполнения суммирования горизонтально упакованных чисел с насыщением, если содержимое поля перехода представляет собой шестнадцатеричное значение "0F38", и содержимое поля специфического для команды кода операции представляет собой шестнадцатеричное значение "03".
45. Устройство по п.39, в котором исполнительный блок предназначен для выполнения умножения и суммирования упакованных чисел со знаком и без знака, если содержимое поля перехода представляет собой шестнадцатеричное значение "0F38", и содержимое поля специфического для команды кода операции представляет собой шестнадцатеричное значение "04".
46. Устройство по п.39, в котором исполнительный блок предназначен для выполнения вычитания горизонтально упакованных слов со знаком, если содержимое поля перехода представляет собой шестнадцатеричное значение "0F38", и содержимое поля специфического для команды кода операции представляет собой шестнадцатеричное значение "05".
47. Устройство по п.39, в котором исполнительный блок предназначен для выполнения вычитания горизонтально упакованных двойных слов со знаком, если содержимое поля перехода представляет собой шестнадцатеричное значение "0F38", и содержимое поля специфического для команды кода операции представляет собой шестнадцатеричное значение "06".
48. Устройство по п.39, в котором исполнительный блок предназначен для выполнения вычитания горизонтально упакованных слов со знаком, если содержимое поля перехода представляет собой шестнадцатеричное значение "0F38", и содержимое поля специфического для команды кода операции представляет собой шестнадцатеричное значение "07".
49. Устройство по п.39, в котором исполнительный блок предназначен для определения знака упакованных байтов со знаком, если содержимое поля перехода представляет собой шестнадцатеричное значение "0F38", и содержимое поля специфического для команды кода операции представляет собой шестнадцатеричное значение "08".
50. Устройство по п.39, в котором исполнительный блок предназначен для определения знака упакованных слов со знаком, если содержимое поля перехода представляет собой шестнадцатеричное значение "0F38", и содержимое поля специфического для команды кода операции представляет собой шестнадцатеричное значение "09".
51. Устройство по п.39, в котором исполнительный блок предназначен для определения знака упакованных двойных слов со знаком, если содержимое поля перехода представляет собой шестнадцатеричное значение "0F38", и содержимое поля специфического для команды кода операции представляет собой шестнадцатеричное значение "0А".
52. Устройство по п.39, в котором исполнительный блок предназначен для выполнения упакованного умножения верхнего порядка с округлением и масштабированием, если содержимое поля перехода представляет собой шестнадцатеричное значение "0F38", и содержимое поля специфического для команды кода операции представляет собой шестнадцатеричное значение "0В".
53. Устройство по п.39, в котором исполнительный блок предназначен для определения абсолютного значения для упакованного байтового операнда, если содержимое поля перехода представляет собой шестнадцатеричное значение "0F38", и содержимое поля специфического для команды кода операции представляет собой шестнадцатеричное значение "1С".
54. Устройство по п.39, в котором исполнительный блок предназначен для определения абсолютного значения для операнда упакованного слова, если содержимое поля перехода представляет собой шестнадцатеричное значение "0F38" и содержимое поля специфического для команды кода операции представляет собой шестнадцатеричное значение "1D".
55. Устройство по п.39, в котором исполнительный блок предназначен для определения абсолютного значения для операнда упакованного двойного слова, если содержимое поля перехода представляет собой шестнадцатеричное значение "0F38", и содержимое поля специфического для команды кода операции представляет собой шестнадцатеричное значение "1Е".
56. Устройство по п.39, в котором исполнительный блок предназначен для сдвига вправо и слияния упакованного операнда, если содержимое поля перехода представляет собой шестнадцатеричное значение "0F3A", и содержимое поля специфического для команды кода операции представляет собой шестнадцатеричное значение "0F".
57. Устройство для выполнения набора команд, использующего 3-байтовые коды операции перехода, содержащее средство для выборки из памяти кода команды в формате команды переменной длины, причем формат кода команды включает в себя поле перехода, имеющее множество байтовых элементов, включая первый байтовый элемент и второй байтовый элемент, причем формат команды дополнительно включает в себя поле формы адресации и поле специфического для команды кода операции между полем перехода и полем формы адресации, причем поле специфического для команды кода операции предназначено для хранения значения, которое определяет команду расширенного набора команд, и средство для инициирования операции, соответствующей значению специфического для команды кода операции.
58. Устройство по п.57, в котором средство для инициирования операции дополнительно включает в себя средство для генерирования сигнала управления на основе, по меньшей мере, частично значения специфического для команды кода операции, причем сигнал управления предназначен для указания операции, которая соответствует коду команды.
59. Устройство по п.57, в котором средство для инициирования операции дополнительно включает в себя средство для инициирования операции над упакованными данными.
60. Устройство по п.57, в котором средство для инициирования операции дополнительно включает в себя средство для инициирования операции суммирования над упакованными данными.
61. Устройство по п.57, в котором средство для инициирования операции дополнительно включает в себя средство для инициирования операции вычитания над упакованными данными.
62. Устройство по п.57, в котором средство для инициирования операции дополнительно включает в себя средство для инициирования операции перетасовки над упакованными данными.
63. Устройство по п.57, в котором средство для инициирования операции дополнительно включает в себя средство для инициирования операции умножения над упакованными данными.
64. Устройство по п.57, в котором средство для инициирования операции дополнительно включает в себя средство для инициирования операции сдвига над упакованными данными.
65. Устройство по п.57, в котором средство для инициирования операции дополнительно включает в себя средство для инициирования операции определения абсолютного значения над упакованными данными.
66. Устройство по п.57, в котором средство для инициирования операции дополнительно включает в себя средство для инициирования операции определения знака над упакованными данными.
67. Устройство по п.57, дополнительно содержащее средство для определения длины кода команды, причем определение длины основано полностью на содержимом поля перехода, поля формы адресации и факультативного поля префикса, причем код команды дополнительно факультативно включает в себя поле префикса.
68. Устройство по п.57, дополнительно содержащее средство для определения длины кода команды, причем определение длины основано полностью на содержимом поля перехода и поля формы адресации.
69. Устройство по п.57, дополнительно содержащее средство для определения длины кода команды, причем определение длины основано полностью на содержимом поля перехода, поля формы адресации и части содержимого факультативного поля базы, причем формат команды дополнительно включает в себя факультативное поле базы.
70. Способ генерации кода команды для расширения набора команд с использованием 3-байтовых кодов операции перехода, содержащий генерацию кода команды, включающего в себя значение кода перехода и значение специфического для команды кода операции, причем значение кода перехода имеет длину, по меньшей мере, два байта и идентифицирует расширенную карту кода операции, значение специфического для команды кода операции определяет команду расширенного набора команд, и код команды представляет операцию, подлежащую выполнению исполнительным блоком в ответ на код команды.
71. Способ по п.70, в котором генерация кода команды дополнительно включает в себя генерацию либо первого кода команды, представляющего операцию, подлежащую исполнению исполнительным блоком в ответ на первый код команды, либо генерацию второго кода команды, который дополнительно включает в себя значение префикса.
72. Способ по п.71, в котором второй код команды представляет вторую операцию.
73. Способ по п.70, в котором генерация кода команды дополнительно включает в себя выбор значения кода перехода из предварительно определенного набора значений кодов перехода из набора команд переменной длины.
74. Способ по п.73, в котором предварительно определенный набор значений кодов перехода включает в себя шестнадцатеричные значения 0F38, 0F39, 0F3A и 0F3B.
75. Способ по п.73, в котором каждое значение из предварительно определенного набора значений кодов перехода указывает на конкретный набор команд.
76. Способ по п.71, в котором значение префикса представляет собой шестнадцатеричное значение 66.
RU2004119906/09A 2003-06-30 2004-06-29 Расширение набора команд с использованием 3-байтового кода операции перехода RU2288502C2 (ru)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/611,164 2003-06-30
US10/611,164 US7917734B2 (en) 2003-06-30 2003-06-30 Determining length of instruction with multiple byte escape code based on information from other than opcode byte

Publications (2)

Publication Number Publication Date
RU2004119906A RU2004119906A (ru) 2006-01-10
RU2288502C2 true RU2288502C2 (ru) 2006-11-27

Family

ID=33541260

Family Applications (1)

Application Number Title Priority Date Filing Date
RU2004119906/09A RU2288502C2 (ru) 2003-06-30 2004-06-29 Расширение набора команд с использованием 3-байтового кода операции перехода

Country Status (8)

Country Link
US (5) US7917734B2 (ru)
JP (1) JP3898712B2 (ru)
KR (1) KR100578439B1 (ru)
CN (2) CN100449479C (ru)
DE (1) DE102004030034A1 (ru)
NL (1) NL1026490C2 (ru)
RU (1) RU2288502C2 (ru)
TW (1) TWI326841B (ru)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2608663C1 (ru) * 2013-01-23 2017-01-23 Интернэшнл Бизнес Машинз Корпорейшн Команда векторного типа контрольной суммы
RU2639235C2 (ru) * 2012-07-27 2017-12-20 МАЙКРОСОФТ ТЕКНОЛОДЖИ ЛАЙСЕНСИНГ, ЭлЭлСи Свободная от блокирования потоковая передача данных исполняемого кода

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7181596B2 (en) * 2002-02-12 2007-02-20 Ip-First, Llc Apparatus and method for extending a microprocessor instruction set
US7529912B2 (en) * 2002-02-12 2009-05-05 Via Technologies, Inc. Apparatus and method for instruction-level specification of floating point format
US7328328B2 (en) 2002-02-19 2008-02-05 Ip-First, Llc Non-temporal memory reference control mechanism
US7546446B2 (en) * 2002-03-08 2009-06-09 Ip-First, Llc Selective interrupt suppression
US7302551B2 (en) * 2002-04-02 2007-11-27 Ip-First, Llc Suppression of store checking
US7917734B2 (en) * 2003-06-30 2011-03-29 Intel Corporation Determining length of instruction with multiple byte escape code based on information from other than opcode byte
EP1622009A1 (en) * 2004-07-27 2006-02-01 Texas Instruments Incorporated JSM architecture and systems
US7836278B2 (en) * 2007-07-25 2010-11-16 Advanced Micro Devices, Inc. Three operand instruction extension for X86 architecture
US8281109B2 (en) 2007-12-27 2012-10-02 Intel Corporation Compressed instruction format
WO2010112970A1 (en) 2009-03-31 2010-10-07 Freescale Semiconductor, Inc. Data processing with variable operand size
CN101650645B (zh) * 2009-09-04 2013-01-09 浙江大学 一种协处理器指令集的扩展方法
JP5496602B2 (ja) * 2009-10-30 2014-05-21 ルネサスエレクトロニクス株式会社 データプロセッサ
US9710277B2 (en) * 2010-09-24 2017-07-18 Intel Corporation Processor power management based on class and content of instructions
US20120079249A1 (en) * 2010-09-28 2012-03-29 Wei-Han Lien Training Decode Unit for Previously-Detected Instruction Type
US8843731B2 (en) * 2010-12-30 2014-09-23 Micron Technology, Inc. Memory device using extended interface commands
EP3805921B1 (en) 2011-04-01 2023-09-06 INTEL Corporation Vector friendly instruction format and execution thereof
US10223112B2 (en) 2011-12-22 2019-03-05 Intel Corporation Processors, methods, systems, and instructions to generate sequences of integers in which integers in consecutive positions differ by a constant integer stride and where a smallest integer is offset from zero by an integer offset
US10157061B2 (en) 2011-12-22 2018-12-18 Intel Corporation Instructions for storing in general purpose registers one of two scalar constants based on the contents of vector write masks
US10866807B2 (en) 2011-12-22 2020-12-15 Intel Corporation Processors, methods, systems, and instructions to generate sequences of integers in numerical order that differ by a constant stride
CN104011646B (zh) * 2011-12-22 2018-03-27 英特尔公司 用于产生按照数值顺序的连续整数的序列的处理器、方法、系统和指令
US9804840B2 (en) 2013-01-23 2017-10-31 International Business Machines Corporation Vector Galois Field Multiply Sum and Accumulate instruction
US9471308B2 (en) 2013-01-23 2016-10-18 International Business Machines Corporation Vector floating point test data class immediate instruction
US9785441B2 (en) 2014-05-29 2017-10-10 Mill Computing, Inc. Computer processor employing instructions with elided nop operations
US9959119B2 (en) 2014-05-29 2018-05-01 Mill Computing, Inc. Computer processor employing double-ended instruction decoding
US9582413B2 (en) 2014-12-04 2017-02-28 International Business Machines Corporation Alignment based block concurrency for accessing memory
CN104615443B (zh) * 2015-02-27 2018-04-24 珠海市杰理科技股份有限公司 单片机指令扩展方法与系统
JP2019095952A (ja) 2017-11-21 2019-06-20 ソニーセミコンダクタソリューションズ株式会社 プロセッサ、情報処理装置および処理方法
KR102600283B1 (ko) * 2017-12-05 2023-11-08 삼성전자주식회사 전자 장치 및 이를 이용한 명령어 처리 방법
CN114428639A (zh) * 2021-12-24 2022-05-03 北京握奇数据股份有限公司 一种字节码指令集的指令精简方法和系统

Family Cites Families (48)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3657705A (en) * 1969-11-12 1972-04-18 Honeywell Inc Instruction translation control with extended address prefix decoding
US4200927A (en) * 1978-01-03 1980-04-29 International Business Machines Corporation Multi-instruction stream branch processing mechanism
US4591972A (en) * 1982-11-15 1986-05-27 Data General Corp. Data processing system with unique microcode control
US4873629A (en) * 1984-06-20 1989-10-10 Convex Computer Corporation Instruction processing unit for computer
JPH0353325A (ja) 1989-07-21 1991-03-07 Nec Corp 情報処理装置
CA2038264C (en) 1990-06-26 1995-06-27 Richard James Eickemeyer In-memory preprocessor for a scalable compound instruction set machine processor
SG45251A1 (en) * 1992-02-06 1998-01-16 Intel Corp Rotators in machine instruction length calculation
WO1993019416A1 (en) * 1992-03-25 1993-09-30 Zilog, Inc. Fast instruction decoding in a pipeline processor
US5438668A (en) 1992-03-31 1995-08-01 Seiko Epson Corporation System and method for extraction, alignment and decoding of CISC instructions into a nano-instruction bucket for execution by a RISC computer
US5353420A (en) * 1992-08-10 1994-10-04 Intel Corporation Method and apparatus for decoding conditional jump instructions in a single clock in a computer processor
US5859994A (en) * 1992-08-10 1999-01-12 Intel Corporation Apparatus and method for modifying instruction length decoding in a computer processor
JP3053325B2 (ja) 1993-12-20 2000-06-19 株式会社日立製作所 腐食電位のシミュレーション方法および原子炉プラントの運転監視装置
US5600806A (en) * 1994-03-01 1997-02-04 Intel Corporation Method and apparatus for aligning an instruction boundary in variable length macroinstructions with an instruction buffer
US5537629A (en) * 1994-03-01 1996-07-16 Intel Corporation Decoder for single cycle decoding of single prefixes in variable length instructions
US5586277A (en) * 1994-03-01 1996-12-17 Intel Corporation Method for parallel steering of fixed length fields containing a variable length instruction from an instruction buffer to parallel decoders
US5630083A (en) * 1994-03-01 1997-05-13 Intel Corporation Decoder for decoding multiple instructions in parallel
GB2287111B (en) * 1994-03-01 1998-08-05 Intel Corp Method for pipeline processing of instructions by controlling access to a reorder buffer using a register file outside the reorder buffer
US5572206A (en) * 1994-07-06 1996-11-05 Microsoft Corporation Data compression method and system
US5758116A (en) * 1994-09-30 1998-05-26 Intel Corporation Instruction length decoder for generating output length indicia to identity boundaries between variable length instructions
CN1187255A (zh) * 1995-06-07 1998-07-08 高级微型器件公司 使用指令字段规定扩展功能的微处理器
US5694589A (en) * 1995-06-13 1997-12-02 Intel Corporation Instruction breakpoint detection apparatus for use in an out-of-order microprocessor
US5768553A (en) 1995-10-30 1998-06-16 Advanced Micro Devices, Inc. Microprocessor using an instruction field to define DSP instructions
US5809272A (en) * 1995-11-29 1998-09-15 Exponential Technology Inc. Early instruction-length pre-decode of variable-length instructions in a superscalar processor
WO1997022922A1 (en) 1995-12-15 1997-06-26 Intel Corporation Instruction encoding techniques for microcontroller architecture
US5778246A (en) * 1995-12-27 1998-07-07 Intel Corporation Method and apparatus for efficient propagation of attribute bits in an instruction decode pipeline
US5740392A (en) * 1995-12-27 1998-04-14 Intel Corporation Method and apparatus for fast decoding of 00H and OFH mapped instructions
US5822559A (en) * 1996-01-02 1998-10-13 Advanced Micro Devices, Inc. Apparatus and method for aligning variable byte-length instructions to a plurality of issue positions
US5845099A (en) * 1996-06-28 1998-12-01 Intel Corporation Length detecting unit for parallel processing of variable sequential instructions
JPH1091430A (ja) 1996-09-13 1998-04-10 Matsushita Electric Ind Co Ltd 命令解読装置
US5845102A (en) * 1997-03-03 1998-12-01 Advanced Micro Devices, Inc. Determining microcode entry points and prefix bytes using a parallel logic technique
US6032250A (en) * 1997-12-05 2000-02-29 Intel Corporation Method and apparatus for identifying instruction boundaries
US5931944A (en) * 1997-12-23 1999-08-03 Intel Corporation Branch instruction handling in a self-timed marking system
US5948096A (en) * 1997-12-23 1999-09-07 Intel Corporation Apparatus and method for self-timed marking of variable length instructions having length-affecting prefix bytes
US5941982A (en) * 1997-12-23 1999-08-24 Intel Corporation Efficient self-timed marking of lengthy variable length instructions
US5978899A (en) * 1997-12-23 1999-11-02 Intel Corporation Apparatus and method for parallel processing and self-timed serial marking of variable length instructions
US6014735A (en) * 1998-03-31 2000-01-11 Intel Corporation Instruction set extension using prefixes
US6301650B1 (en) * 1998-10-29 2001-10-09 Pacific Design, Inc. Control unit and data processing system
US6260134B1 (en) * 1998-11-02 2001-07-10 Advanced Micro Devices, Inc. Fixed shift amount variable length instruction stream pre-decoding for start byte determination based on prefix indicating length vector presuming potential start byte
US6684322B1 (en) * 1999-08-30 2004-01-27 Intel Corporation Method and system for instruction length decode
US7213129B1 (en) * 1999-08-30 2007-05-01 Intel Corporation Method and system for a two stage pipelined instruction decode and alignment using previous instruction length
US7376814B1 (en) * 1999-09-07 2008-05-20 Nxp B.V. Method for forming variable length instructions in a processing system
US6496923B1 (en) * 1999-12-17 2002-12-17 Intel Corporation Length decode to detect one-byte prefixes and branch
US7082516B1 (en) * 2000-09-28 2006-07-25 Intel Corporation Aligning instructions using a variable width alignment engine having an intelligent buffer refill mechanism
JP3760093B2 (ja) 2000-11-29 2006-03-29 株式会社ルネサステクノロジ マイクロコンピュータ
US7181596B2 (en) * 2002-02-12 2007-02-20 Ip-First, Llc Apparatus and method for extending a microprocessor instruction set
US7305542B2 (en) * 2002-06-25 2007-12-04 Intel Corporation Instruction length decoder
JP2004038521A (ja) 2002-07-03 2004-02-05 Renesas Technology Corp マイクロコンピュータ
US7917734B2 (en) 2003-06-30 2011-03-29 Intel Corporation Determining length of instruction with multiple byte escape code based on information from other than opcode byte

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2639235C2 (ru) * 2012-07-27 2017-12-20 МАЙКРОСОФТ ТЕКНОЛОДЖИ ЛАЙСЕНСИНГ, ЭлЭлСи Свободная от блокирования потоковая передача данных исполняемого кода
RU2608663C1 (ru) * 2013-01-23 2017-01-23 Интернэшнл Бизнес Машинз Корпорейшн Команда векторного типа контрольной суммы

Also Published As

Publication number Publication date
RU2004119906A (ru) 2006-01-10
DE102004030034A1 (de) 2005-01-27
US20120173852A1 (en) 2012-07-05
US20040268090A1 (en) 2004-12-30
US8793470B2 (en) 2014-07-29
CN1940859A (zh) 2007-04-04
JP2005025741A (ja) 2005-01-27
US7966476B2 (en) 2011-06-21
CN1624653A (zh) 2005-06-08
CN100449479C (zh) 2009-01-07
KR100578439B1 (ko) 2006-05-11
KR20050002666A (ko) 2005-01-10
TW200513971A (en) 2005-04-16
US8402252B2 (en) 2013-03-19
CN1940859B (zh) 2010-05-12
US20080148019A1 (en) 2008-06-19
US20130219152A1 (en) 2013-08-22
US7917734B2 (en) 2011-03-29
JP3898712B2 (ja) 2007-03-28
TWI326841B (en) 2010-07-01
NL1026490C2 (nl) 2007-10-16
US8161269B2 (en) 2012-04-17
US20110173418A1 (en) 2011-07-14
NL1026490A1 (nl) 2005-01-03

Similar Documents

Publication Publication Date Title
RU2288502C2 (ru) Расширение набора команд с использованием 3-байтового кода операции перехода
US11048507B2 (en) Compressed instruction format
CN102473093A (zh) 对多个通道中的紧缩数据解压缩
JPH1097421A (ja) 圧縮命令を実行するように構成されたマイクロプロセッサにおけるメモリをアドレスする方法および装置
RU2602335C2 (ru) Способ и устройство для предсказания ветвлений
US6631459B1 (en) Extended instruction word folding apparatus
TW201423579A (zh) 指令碼轉譯的自訂鏈結存根
CN116521236A (zh) 一种基于risc-v指令集的流水线译码方法
US20200272476A1 (en) Extended asynchronous data mover functions compatibility indication
JP3732233B2 (ja) スーパースカラマイクロプロセッサ内で可変バイト長命令をプリデコードするための方法および装置
US20050015574A1 (en) Processor and method capable of executing instruction sets with different lengths
Sebastio et al. Optimized asip architecture for compressed BWT-indexed search in bioinformatics applications
Wu et al. Enhanced code density of embedded CISC processors with echo technology
JP3981117B2 (ja) キャッシュに記憶するvliw命令の符号化/復号化方法
US6684322B1 (en) Method and system for instruction length decode
KR100448676B1 (ko) 슈퍼스칼라 마이크로프로세서 내에서 가변 바이트 길이 명령어들을 프리디코딩하는 방법 및 장치
KR20220091361A (ko) 내용 어드레싱 가능 데이터 구조들을 사용한 효율적인 디플레이트 압축 해제 방법 및 장치
WO2022150532A1 (en) Instruction packing scheme for vliw cpu architecture
González et al. Decode
JP2000250754A (ja) 並列実行システムおよびマイクロプロセッサ

Legal Events

Date Code Title Description
MM4A The patent is invalid due to non-payment of fees

Effective date: 20190630