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

Реферат

 

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

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

В типичной компьютерной системе один или большее количество процессоров работают с значениями данных, представленных большим количеством битов (например, 16, 32, 64 и т. д. ), чтобы получить результат в ответ на программную команду. Например, выполнение команды сложения заключается в сложении значения первых данных и значения вторых данных и сохранении результата в качестве третьего значения данных. Однако мультимедийные прикладные программы (например, прикладные программы, предназначенные для работы в оснащенном компьютером сотрудничестве (CSC - интеграция организации телеконференций с манипулированием данных смешанного типа), 2D/3D графики, обработки изображения, сжатия/декомпрессии видео информации, алгоритмов распознавания и манипулирования звуком) требуют манипулирования большими количествами данных, которые часто представлены меньшем числом битов. Например, мультимедийные данные обычно представляются как 64-разрядные числа, но только малая часть битов может нести значимую информацию.

Чтобы улучшить эффективность мультимедийных прикладных программ (так же как и других прикладных программ, которые имеют такие же характеристики), известные процессоры обеспечивают упакованные форматы данных. Упакованный формат данных является форматом, в котором биты, используемые для представления одного значения, разбиваются на ряд элементов данных фиксированного размера, каждый из которых представляет отдельное значение. Например, данные в 64-разрядном регистре могут быть разбиты на два 32-разрядных элемента, каждый из которых представляет отдельное 32-разрядное значение.

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

Отчасти аналогичный подход, принятый в процессоре 88110TM фирмы Motorola, заключается в объединении пар целочисленных регистров. Идея относительно объединения двух 32-разрядных регистров включает в себя объединение (конкатенацию) случайных комбинаций определенных регистров для одиночной операции или команды. Снова, однако, главный недостаток реализации 64-разрядных мультимедийных типов данных, используя объединенные в пары регистры, заключается в том, что имеется только ограниченное число пар регистров, которые являются доступными. Ввиду недостатка добавления дополнительного регистрового пространства к архитектуре, необходим другой способ реализации мультимедийных типов данных.

Линией процессоров, которая имеет большую базу программного обеспечения и аппаратных средств, является архитектура семейства процессоров Intel, включая процессор Pentium, производимый корпорацией Intel Santa Clara, Калифорния. Фиг. 1 показывает блок-схему, иллюстрирующую образец компьютерной системы 100, в которой используется процессор Pentium. Для более детального описания процессора Pentium, чем приведенное здесь, см. Pentium Processor's Users Manual - Volume 3: Architecture and Programming Manual, 1994, Корпорации Intel Santa Clara, CA. Образец компьютерной системы 100 включает в себя процессор 105, устройство памяти 110 и шину 115. Процессор 105 подсоединен к устройству памяти 110 шиной 115. Кроме того, ряд устройств ввода-вывода пользователя, такие как клавиатура 120 и дисплей 125, также подсоединены к шине 115. Сеть 130 может также быть соединена с шиной 115. Процессор 105 представляет процессор Pentium. Устройство памяти 110 представляет один или большее количество механизмов для сохранения данных. Например, устройство памяти 110 может включать в себя запоминающее устройство только для чтения (ROM), память с произвольным доступом (RAM), магнитные дисковые носители данных, оптические носители данных, устройства памяти с параллельным стиранием и/или другие считываемые компьютером среды. Шина 115 представляет собой одну или большее количество шин (например, PCI, ISA, X-шина, EISA, VESA, и т. д. ) и мосты (также называемые контроллерами шины).

Фиг. 1 также показывает, что устройство памяти 110 хранит операционную систему 132 для выполнения на процессоре 105. Конечно, устройство памяти 110 предпочтительно содержит дополнительное программное обеспечение (не показано). Фиг. 1 дополнительно показывает, что процессор 105 включает в себя устройство (модуль) 135 с плавающей запятой и регистр 155 состояния с плавающей запятой (запись "FP" используется для обозначения термина "с плавающей запятой"). Конечно, процессор 105 содержит дополнительные схемы, которые не являются необходимыми для понимания сущности изобретения.

Модуль 135 с плавающей запятой используется для хранения данных с плавающей запятой и включает в себя набор регистров с плавающей запятой (также называемый файлом регистров с плавающей запятой) 145, набор тэгов 150 и регистр состояния 155 с плавающей запятой. Набор регистров 145 с плавающей запятой включает в себя восемь регистров, обозначенных R0-R7, запись Rn используется для обозначения физического расположения регистров с плавающей запятой. Каждый из этих восьми регистров является 80-битным и содержит поле знака (бит 79), поле порядка (биты [78: 64] ) и поле мантиссы (биты [63: 0] ). Модуль 135 с плавающей запятой использует набор регистров 145 с плавающей запятой в качестве стека. Другими словами, модуль 135 с плавающей запятой включает в себя файл регистров, называемый стеком. Когда набор регистров используется как стек, выполняются операции со ссылкой на верхушку стека, а не на физические расположения регистров в наборе регистров 145 с плавающей запятой (запись STn используется, чтобы сослаться на относительное положение логических регистров n с плавающей запятой в верхушке стека). Регистр 155 состояния с плавающей запятой включает в себя поле 160 верхушки стека, которая идентифицирует, какие регистры в наборе регистров 145 с плавающей запятой находятся в настоящее время в верхушке стека с плавающей запятой. На фиг. 1 указатель верхушки стека идентифицирует регистр 165 с физическим расположением R4 в качестве верхушки стека.

Набор тэгов 150 включает 8 тэгов и хранится в одном регистре. Каждый тэг соответствует различному регистру с плавающей запятой и содержит два бита. Как показано на фиг. 1, тэг 170 соответствует регистру 165. Тэг идентифицирует информацию относительно текущего содержимого регистра с плавающей запятой, которому соответствует тэг - 00 = допустимое; 01 = ноль; 10 = специальное; и 11 = пусто. Эти тэги используются модулем 135 с плавающей запятой, чтобы различать положения пустого и непустого регистра. Таким образом, о тэгах можно сказать, что они идентифицируют два состояния: пустое, которое обозначено 11, и непустое, которое обозначено 00, 01 или 10.

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

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

Регистр состояния 140 включает в себя поле 175 ЕМ и поле 180 TS сохранения ЕМ индикации и TS индикации соответственно. Если ЕМ индикация равна 1 и/или TS индикация равна 1, аппаратные средства процессора вызывают системное прерывание операционной системе после выполнения команды с плавающей запятой посредством формирования исключительной ситуации "устройство недоступно". Согласно соглашению по программному обеспечению ЕМ и TS индикации соответственно используются для эмуляции команд с плавающей запятой и выполнения многозадачного режима. Однако использование этих индикаций является просто соглашением по программному обеспечению. Таким образом, любая или обе индикации могут использоваться для любой цели. Например, ЕМ индикация может использоваться для выполнения многозадачного режима.

Согласно соглашению по программному обеспечению, описанному выше, поле 175 ЕМ используется для хранения индикации эмуляции с плавающей запятой ("ЕМ индикация"), которая идентифицирует, должно ли устройство с плавающей запятой быть эмулировано с использованием программного обеспечения. Последовательность команд или одиночная команда (например, CPUID) обычно выполняется, когда система загружается, чтобы определить, присутствует ли модуль с плавающей запятой, и изменить ЕМ индикацию в случае необходимости. Таким образом, ЕМ индикация обычно изменяется, чтобы указать, что модуль с плавающей запятой должен быть эмулирован, если процессор не содержит модуль с плавающей запятой. В то время как в одной реализации ЕМ индикация равняется 1, когда модуль с плавающей запятой должен быть эмулирован, альтернативные реализации могут использовать другие значения.

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

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

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

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

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

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

Фиг. 2 является блок-схемой, иллюстрирующей выполнение команды процессором Pentium. Работа по блок-схеме начинается на этапе 200, после которого переходит на этап 205.

Как показано на этапе 205, к набору битов обращаются как к команде, и работа переходит на этап 210. Этот набор битов включает в себя код операции, который идентифицирует операцию(и), которая(ые) должна(ы) быть выполнена(ы) командой.

На этапе 210 определяется, является ли код операции допустимым. Если код операции не является допустимым, переходят на этап 215. Иначе переходят на этап 220.

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

На этапе 220 определяется, является ли команда командой с плавающей запятой. Если команда не является командой с плавающей запятой, переходят на этап 225. Иначе осуществляется переход на этап 230.

Как показано на этапе 225, процессор выполняет команду. Так как этот этап не является необходимым для описания изобретения, он далее не описан.

Как показано, на этапе 230 определяется, является ли ЕМ индикация равной 1 (согласно упомянутому соглашению по программному обеспечению, если модуль с плавающей запятой должен быть эмулирован), и является ли TS индикация равной 1 (согласно упомянутому соглашению по программному обеспечению, если был задействован частичный контекстный переключатель). Если ЕМ индикация и/или TS индикация равна 1, переходят на этап 235. Иначе переходят на этап 240.

На этапе 235 формируют исключительную ситуацию "устройство недоступно" и выполняют соответствующий обработчик события. В ответ на это событие соответствующий обработчик события может быть реализован для опроса ЕМ и TS индикации. Если ЕМ индикация равна 1, то может быть выполнен обработчик события, чтобы заставить процессор выполнять команду, эмулируя модуль с плавающей запятой, и возобновить выполнение следующей команды (команды, которая логически следует за командой, полученной на этапе 205). Если TS индикация равна 1, то обработчик события может быть выполнен, чтобы функционировать так, как предварительно описано в отношении частичных контекстных переключателей (чтобы сохранить содержимое модуля с плавающей запятой и восстановить корректное состояние с плавающей запятой, если требуется), и заставить процессор возобновить выполнение посредством перезапуска выполнения команды, принятой на этапе 205. Конечно, альтернативные варианты осуществления могут реализовать этот обработчик события любым количеством способов.

Если формируются некоторые численные ошибки во время выполнения команды с плавающей запятой, такие ошибки задерживаются до выполнения следующей команды с плавающей запятой, чье выполнение может быть прервано для обслуживания ожидающих численных ошибок с плавающей запятой. Как показано, на этапе 240 определяется, имеются ли какие-либо такие отложенные ошибки. Если имеются любые такие отложенные ошибки, осуществляется переход на этап 245. Иначе - на этап 250.

На этапе 245 формируется задержка события ошибки с плавающей запятой. В ответ на это событие процессор определяет, маскирована ли ошибка с плавающей запятой. Если да, то процессор пытается обрабатывать событие внутри, используя микрокод, и команда с плавающей запятой является "микроперезапущенной". Термин "микроповторный запуск" ("микрорестарт") относится к способу обслуживания события без выполнения каких-либо немикрокодовых обработчиков (также называемых обработчиками события операционной системы). Такое событие называется внутренним событием (также называемое как программно невидимое событие), потому что событие обрабатывается внутри процессора и, таким образом, не требует выполнения каких-либо внешних обработчиков операционной системы. Напротив, если ошибка с плавающей запятой не маскирована, событие является внешним событием (также названным как "программно видимое событие"), и выполняется соответствующий обработчик события. Этот обработчик события может быть реализован для обслуживания ошибки и заставить процессор возобновить выполнение посредством перезапуска выполнения команды, полученной на этапе 205. Этот способ перезапуска команды называется "макроповторный запуск" ("макрорестарт" или "рестарт на уровне команды"). Конечно, альтернативные варианты осуществления могут реализовать этот немикрокодовый обработчик события любым способом.

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

Одно из ограничений семейства процессоров архитектуры Intel (включая процессор Pentium), также как некоторых других процессоров общего назначения, заключается в том, что они не включают в себя набор команд для работы с упакованными данными. Таким образом, желательно включить набор команд для работы с упакованными данными в такие процессоры способом, который является совместимым с существующими программным обеспечением и аппаратными средствами. Кроме того, желательно получить новые процессоры, которые поддерживают набор команд работы с упакованными данными, и которые являются совместимыми с существующим программным обеспечением, включая операционные системы.

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

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

Изобретение может лучше всего быть понято из последующего описания и сопроводительных чертежей, которые иллюстрируют изобретение. На чертежах: фиг. 1 показывает блок-схему, иллюстрирующую в качестве примера компьютерную систему, в которой используется процессор Pentium; фиг. 2 изображает последовательность операций, иллюстрирующую выполнение команды процессором Pentium; фиг. 3A является функциональной диаграммой, иллюстрирующей совмещение упакованного состояния данных и состояния с плавающей запятой, согласно одному варианту осуществления изобретения; фиг. 3B и 3C иллюстрируют отображение физических регистров с плавающей запятой и упакованных данных по отношению к логическим регистрам с плавающей запятой; фиг. 3D иллюстрирует последовательность выполнения, включающую команды упакованных данных и с плавающей запятой; фиг. 4A является функциональной диаграммой, иллюстрирующей часть способа выполнения команд с плавающей запятой и упакованных данных способом, который является совместимым с существующим программным обеспечением, невидимым для различных способов операционной системы, и способствует эффективным приемам программирования согласно одному варианту осуществления изобретения; фиг. 4B является функциональной диаграммой, иллюстрирующей оставшуюся часть способа, частично изображенного на фиг. 4A; фиг. 5 показывает блок-схему, иллюстрирующую в качестве примера компьютерную систему, согласно одному варианту осуществления изобретения; фиг. 6A является блок-схемой, иллюстрирующей устройство для совмещения состояния регистра упакованных данных с состоянием с плавающей запятой, используя два физических файла регистров, согласно одному варианту осуществления изобретения; фиг. 6B является блок-схемой, иллюстрирующей в увеличенном масштабе вид части файла с плавающей запятой с обращением, аналогичным обращению к стеку, из фиг. 6A, согласно вариантам осуществления изобретения; фиг. 7A является функциональной диаграммой, иллюстрирующей часть способа, в соответствии с одним вариантом осуществления изобретения для выполнения команд упакованных данных на наборе регистров, которые являются совмещенными с набором с плавающей запятой регистров способом, который является совместимым с существующим программным обеспечением, который является невидимым для различных способов операционной системы, который способствует хорошей практике программирования, и который может быть осуществлен, используя организацию аппаратного обеспечения, изображенную на фиг. 6A; фиг. 7B является функциональной диаграммой, иллюстрирующей другую часть способа, частично изображенного на фиг. 7A; фиг. 7C является функциональной диаграммой, иллюстрирующей оставшуюся часть способа, частично изображенного на фиг. 7A и 7B; фиг. 8 является функциональной диаграммой, иллюстрирующей способ для выполнения этапа 734 на фиг. 7C, согласно одному варианту осуществления изобретения; фиг. 9 является функциональной диаграммой, иллюстрирующей способ выполнения этапа 728 на фиг. 7B, согласно одному варианту осуществления изобретения; фиг. 10 является блок-схемой, иллюстрирующей поток данных через устройство для совмещения состояния упакованных данных с состоянием с плавающей запятой, используя один файл регистров, согласно другому варианту осуществления изобретения; фиг. 11A иллюстрируют часть способа, в соответствии с другим вариантом осуществления изобретения, для выполнения команды с упакованными данными и с плавающей запятой на одном файле регистров совмещенным способом, который является совместимым с существующим программным обеспечением, который является невидимым для различных способов операционной системы, который способствует хорошей практике программирования и может быть осуществлен, используя организацию аппаратного обеспечения, изображенную на фиг. 10; фиг. 11B является функциональной диаграммой, иллюстрирующей другую часть способа, частично изображенного на фиг. 11A; фиг. 11C является функциональной диаграммой, иллюстрирующей оставшуюся часть способа, частично изображенного на фиг. 11A и 11B; фиг. 12A иллюстрирует формат памяти с плавающей запятой согласно одному варианту осуществления изобретения, описанного со ссылкой на фиг. 10; фиг. 12B иллюстрирует формат памяти для упакованных данных согласно варианту осуществления изобретения, описанного со ссылкой на фиг. 10; фиг. 13 иллюстрирует способ согласно одному варианту осуществления изобретения для выполнения этапа 113 на фиг. 11В, когда реализованы форматы памяти, описанные со ссылкой на фиг. 12A, 12B и 12C; фиг. 14 является функциональной диаграммой, иллюстрирующей способ для очистки тэгов, согласно одному варианту осуществления изобретения; фиг. 15A изображает последовательность выполнения операций, включающую команды с упакованными данными и с плавающей запятой, чтобы проиллюстрировать интервал времени, в течение которого отдельные физические файлы регистров, которые являются совмещенными, могут быть модифицированы; и фиг. 15B показывает другую последовательность выполнения операций, включающую команды с упакованными данными и с плавающей запятой, чтобы проиллюстрировать интервал времени, в течение которого отдельные физические файлы регистров, которые являются совмещенными, могут быть модифицированы.

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

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

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

Фиг. 3A является функциональной схемой, иллюстрирующей совмещение состояния упакованных данных и состояния с плавающей запятой, согласно одному варианту осуществления изобретения. Фиг. 3A изображает набор регистров 300 с плавающей запятой для сохранения данных с плавающей запятой (называемое здесь как состояние с плавающей запятой) и набор регистров 310 упакованных данных для сохранения упакованных данных (называемое здесь как состояние упакованных данных). Запись PDn используется, чтобы обратиться к физическим местоположениям регистров упакованных данных. Фиг. 3A также показывает, что состояние упакованных данных является совмещенным с состоянием с плавающей запятой. То есть команды с плавающей запятой и команды с упакованными данными по меньшей мере проявляются для программного обеспечения как выполняемые на одном и том же самом наборе логических регистров. Имеется ряд способов для выполнения этого совмещения, включая использование множества отдельных физических файлов регистра или одиночный физический файл регистров. Примеры таких способов будут позже описаны со ссылкой на фиг. 4-13.

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

Фиг. 3A также показывает набор тэгов 320 с плавающей запятой и набор тэгов 330 упакованных данных. Тэги 320 с плавающей запятой функционируют аналогично тэгам 150, описанным со ссылкой на фиг. 1. Таким образом, каждый тэг включает два бита, которые указывают, является ли содержимое соответствующего регистра с плавающей запятой пустым или непустым (например, допустимым, специальным или нулем). Тэги 330 упакованных данных соответствуют регистрам 310 у