Целочисленное умножение высокого порядка с округлением и сдвигом в архитектуре с одним потоком команд и множеством потоков данных

Иллюстрации

Показать все

Изобретение относится к области устройств обработки, соответствующего программного обеспечения и программных последовательностей, которые выполняют математические операции. Техническим результатом является повышение быстродействия, увеличение точности вычислений. Указанный результат достигается за счет того, что способ включает прием первого операнда, имеющего первый набор из L элементов данных, прием второго операнда, имеющего второй набор из L элементов данных, и перемножение L пар элементов данных для формирования набора из L произведений, при этом каждая из L пар включает в себя один элемент данных из первого набора и второй элемент данных из соответствующей позиции элемента данных второго набора. Каждое из L произведений округляется для формирования L округленных значений, которые масштабируются для формирования L масштабированных значений, для каждого из которых осуществляется усечение для сохранения в месте назначения, причем каждое усеченное значение должно сохраняться в позиции элемента данных, соответствующей его паре элементов данных. 5 н. и 63 з.п. ф-лы, 16 ил.

Реферат

Область техники

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

Предшествующий уровень техники

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

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

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

Соответственно, отображение изображений, а также воспроизведение аудио- и видеоданных, которые совместно определяются понятием «информационное содержание», станут все более популярными приложениями для будущих вычислительных устройств. Операции фильтрации и свертки являются некоторыми из наиболее обычных операций, выполняемых над данными информационного содержания, такими как аудио- и видеоданные изображений. Такие операции требуют высокой вычислительной мощности, но обуславливают высокий уровень параллелизма данных, что может быть использовано за счет эффективной реализации с использованием различных устройств хранения данных, таких, например, как регистры одного потока команд и множества потоков данных (SIMD-регистры). Ряд современных архитектур также требуют ненужного изменения типа данных, что снижает пропускную способность команд и существенно увеличивает число тактовых циклов, требуемых для упорядочивания данных для арифметических операций.

Краткое описание чертежей

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

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

Фиг.1В - блок-схема другой примерной компьютерной системы, соответствующей альтернативному варианту осуществления настоящего изобретения;

Фиг.1С - блок-схема еще одной примерной компьютерной системы, соответствующей другому альтернативному варианту осуществления настоящего изобретения;

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

Фиг.3А - представления различных типов упакованных данных в мультимедийных регистрах в соответствии с одним вариантом осуществления настоящего изобретения;

Фиг.3В - типы упакованных данных в соответствии с альтернативным вариантом осуществления настоящего изобретения;

Фиг.3С - вариант осуществления формата кода машинной команды (кода операции) для команды упакованного целочисленного умножения с округлением и сдвигом;

Фиг.3D - альтернативный формат кода операции;

Фиг.3Е - другой альтернативный формат кода операции;

Фиг.4А - блок-схема варианта осуществления логики для выполнения операции SIMD целочисленного умножения высокого порядка с округлением и сдвигом над операндами в памяти в соответствии с настоящим изобретением;

Фиг.4В - блок-схема операции целочисленного умножения высокого порядка с округлением и сдвигом для выбранной позиции элементов данных;

Фиг.5 - блок-схема варианта осуществления схемы для выполнения операции умножения высокого порядка с округлением и сдвигом в соответствии с настоящим изобретением;

Фиг.6А - действие команды упакованного умножения высокого порядка с округлением и сдвигом в соответствии с первым вариантом осуществления настоящего изобретения;

Фиг.6В - дополнительная детализация действия команды упакованного умножения высокого порядка в конкретной позиции элементов данных по фиг.6А;

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

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

Детальное описание

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

Хотя последующие варианты осуществления описаны со ссылками на процессор, другие варианты осуществления применимы с другими типами интегральных схем и логических устройств. Те же самые методы и указания настоящего изобретения могут быть легко применены в других типах схем или полупроводниковых устройств, которые могут обеспечить выгоды от применения более высокой пропускной способности конвейерной обработки и улучшенных рабочих характеристик. Указания настоящего изобретения применимы к любому процессору или машине, которые исполняют операции над данными. Однако настоящее изобретение не ограничено процессорами и машинами, которые выполняют операции над 256-битовыми, 128-битовыми, 64-битовыми, 32-битовыми или 16-битовыми данными, и может быть применено к любому процессору и машине, в которых необходимо манипулирование с упакованными данными.

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

Данный считываемый машиной носитель может включать в себя любой механизм для хранения или передачи информации в форме, обеспечивающей возможность считывания машиной (например, компьютером), но не ограничен гибкими дискетами, оптическими дисками, постоянной памятью на компакт-дисках (CD-ROM), магнитооптическими дисками, постоянной памятью (ROM, ПЗУ), оперативной памятью (RAM, ОЗУ), стираемой программируемой постоянной памятью (EPROM), электрически стираемой программируемой постоянной памятью (EEPROM), магнитными или оптическими картами, флэш-памятью, передачей по сети Интернет, электрической, оптической, акустической или другими формами передаваемых сигналов (например, несущие колебания, инфракрасные сигналы, цифровые сигналы и т.д.). Соответственно, считываемый компьютером носитель включает в себя любой тип носителя (среды передачи)/считываемого компьютером носителя, пригодного для хранения или передачи электронных команд или информации в форме, считываемой машиной (например, компьютером). Кроме того, настоящее изобретение может также предусматривать загрузку в качестве программного продукта. Как таковая, программа может быть перенесена с удаленного компьютера (например, сервера) в запрашивающий компьютер (например, клиент). Перенос программы может производиться посредством электрической, оптической, акустической или других форм сигналов данных, воплощенных в несущем колебании или в среде распространения, по каналу связи (например, модему, сетевому соединению и т.п.).

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

По мере того как все больше компьютерных систем используется в Интернет-приложениях и мультимедийных приложениях, с течением времени вводится дополнительная поддержка процессоров. Например, команды с плавающей запятой типа «один поток команд и множество потоков данных» (SIMD) и потокового SIMD расширения (SSE) являются командами, которые сокращают общее количество команд, требуемых для исполнения конкретной программной задачи. Эти команды могут ускорять выполнение программного обеспечения за счет операций с множеством элементов данных, осуществляемых параллельно. В результате выигрыш по рабочим характеристикам может быть достигнут в широком диапазоне приложений, включая обработку видео, речи и изображений/фотоснимков. Реализация SIMD-команд в процессорах и логических схемах подобного типа обычно связана с рядом вопросов. Кроме того, сложность SIMD-операций часто приводит к необходимости дополнительных схем, чтобы корректным образом осуществлять обработку и манипулирование данными.

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

Требование сдвига влево можно также пояснить как выравнивание десятичных разрядов. Например, при умножении десятичных чисел десятичные запятые игнорируются и сдвигаются назад в конец. Десятичная запятая помещается так, чтобы общее число цифр (разрядов) вправо от десятичной запятой в множимом и множителе было равно числу цифр (разрядов) вправо от десятичной запятой в их произведении. Аналогичным образом, «десятичная запятая» для дробной арифметики находится здесь вправо от крайнего левого (знакового) бита, и имеется 15 битов (цифр) вправо от этой запятой. Но в исходных данных всего имеется 30 битов вправо от десятичной запятой. Без сдвига в 32-битовом результате имелся бы 31 бит вправо от десятичной запятой. Сдвиг числа влево на один бит эффективно сокращает число битов вправо от десятичной запятой до 30.

Варианты осуществления настоящего изобретения могут увеличить точность целочисленных SIMD-команд с фиксированной запятой. Формат целого числа с фиксированной запятой подобен формату дробной арифметики с фиксированной запятой. Формат с фиксированной запятой "1,5" в одном варианте осуществления изобретения представляет число, имеющее значение со знаком, причем двоичная запятая расположена между 14 и 15. Для данного и последующего обсуждения позиции битов отсчитываются от крайнего правого бита, начиная с 0. Таким образом, крайний правый или наименее значимый (младший) бит находится в позиции 0. Позиция непосредственно влево от него соответствует биту 1 и т.д. Этот числовой формат 1.N часто используется в приложениях цифровой обработки сигналов. Варианты осуществления, соответствующие настоящему изобретению, могут также обеспечить дополнительную точность и правильность, исходя из методов округления и сдвига. Эта дополнительная точность, достигаемая в вариантах осуществления настоящего изобретения, может способствовать более легкому программированию множества приложений. Кроме того, дополнительная точность может также обеспечить более быстрое исполнение алгоритмов, таких как дискретное косинусное преобразование (DCT), которое часто используется в приложениях обработки видеоданных и изображений.

Примером приложения для SIMD-команды целочисленного умножения высокого порядка с округлением и сдвигом является применение в видео высокого качества. Операция умножения 16 битов на 16 битов (16×16) с получением 16-битового результата является широко распространенной в видеокодерах и декодерах, в особенности в инверсном DCT, DCT, квантовании (Q) и в блоках инверсного квантования (Q). Точность операций умножения может иметь существенное влияние на качество видеоматериала в целом. Улучшение рабочих характеристик и повышение быстродействия в вариантах осуществления настоящего изобретения может иметь особенно большое влияние именно на вычисления инверсного DCT. Вычисления Q и инверсного Q, которые в принципе являются 16-битовыми умножениями, также обеспечивают выигрыш, в дополнение к вычислениям DCT.

В вычислительной индустрии хорошо известны спецификации стандартов 1180-1990 для реализации 8х8 инверсного дискретного косинусного преобразования. Хотя стандарты были созданы в контексте видеоконференции, части спецификации также применимы для кодеров и декодеров, таких как соответствующие различным форматам MPEG. Однако обеспечение совместимости со стандартом IEEE 1180-1190 при поддержании высокой эффективности является трудной задачей. Компромисс часто заключается в выборе между высоким быстродействием при несовместимости или обеспечением совместимости при недостаточном быстродействии. Кроме того, кодирование по стандарту является итеративным процессом, который может потребовать высоких временных затрат, особенно при выборе неверного алгоритма.

Совместимость со стандартом IEEE 1180-1190 может быть облегчена в вариантах осуществления команды умножения высокого порядка с округлением и сдвигом. Варианты осуществления команды целочисленного умножения с одним потоком команд и множеством потоков данных (SIMD) высокого уровня с округлением и сдвигом в соответствии с настоящим изобретением может обеспечить тот же самый формат данных 1.15 для входных и выходных элементов данных в среде пакетной передачи данных. Таким образом, запись кода и программирование с наборами команд, включающих в себя вариант осуществления такой команды умножения высокого порядка с округлением и сдвигом, может быть намного менее сложным. Аналогичным образом, доступность языков высокого уровня и соответствующих компиляторов также может стать возможной. Разработчики могут получить выгоду от языков и компиляторов, возможность использования которых обеспечивается вариантами SIMD-команды с фиксированной запятой, такой как умножение высокого порядка с округлением и сдвигом, для повышения эффективности и точности кодеров/декодеров (кодеков) видео, аудио и изображений. Наборы команд с SIMD-возможностями могут исключить необходимость в алгоритмах большой длины, которые требовались ранее при обработке повторяющихся операций над сходными данными.

Каждые из входных данных для операции умножения в одном из вариантов осуществления представлены в формате 1.15. Для одного варианта осуществления команды умножения высокого порядка с округлением и сдвигом временное (промежуточное) 18-битовое значение, имеющее формат 2.16, создается из верхних (старших) битов 32-битового произведения, полученного умножением двух 16-битовых значений данных. Это промежуточное 18-битовое значение затем округляется для обеспечения точности путем добавления "1" к наименее значимому биту. В то время как в некоторых методах просто отбрасываются все биты низкого порядка, операция округления в данном варианте осуществления настоящего изобретения обеспечивает то, что ошибка попадает в пределы некоторого допустимого порогового значения для инверсного кодирования DCT. Это округленное значение затем сдвигается влево на один бит для дополнительного обеспечения точности и для получения желательного выходного формата. 16-битовый результат, имеющий формат 1.15, выделяется из округленного и сдвинутого 18-битового значения. Округление и сдвиг, выполняемые над промежуточным значением, могут обеспечить два бита дополнительной точности по сравнению с простым взятием 16 битов высшего порядка из 32-битового произведения. Например, в обобщенном варианте осуществления, описанном здесь, округление обеспечивает один бит дополнительной точности, по сравнению с выделением 16 битов высшего порядка из 32-битового произведения. Аналогичным образом сдвиг обеспечивает еще один дополнительный бит точности для округленного произведения. Хотя при данном обсуждении описываются варианты осуществления в контексте целых значений длиной 16 битов, другие варианты осуществления могут применяться к значениям данных любой битовой длины.

На фиг.1А показана блок-схема приведенной для примера компьютерной системы, выполненной с процессором, который включает в себя исполнительные блоки для выполнения команды умножения высокого порядка с округлением и сдвигом в соответствии с одним вариантом осуществления настоящего изобретения. Система 100 включает в себя компонент, такой как процессор 102, для использования исполнительных блоков, включающих в себя логику для выполнения алгоритмов для обработки данных, в соответствии с настоящим изобретением, как в описываемом здесь варианте осуществления. Система 100 представляет системы обработки, основанные на микропроцессорах PENTIUM® III, PENTIUM® 4, XeonTM, Itanium® и/или XScaleTM, доступных от компании Intel Corporation (Santa Clara, California), хотя могут использоваться и другие системы (включая персональные компьютеры с другими микропроцессорами, рабочие станции для проектирования, компьютерные приставки и тому подобные средства). В одном варианте осуществления образцовая система 100 может исполнять версию операционной системы WINDOWSTM, доступной от компании Microsoft Corporation (Redmond, Washington), хотя также могут использоваться и другие операционные системы (например, UNIX и Lunix), встроенное программное обеспечение и/или графические пользовательские интерфейсы. Таким образом, настоящее изобретение не ограничено какой-либо конкретной комбинацией аппаратных схемных средств и программного обеспечения.

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

На фиг.1А показана блок-схема компьютерной системы 100 с процессором 102, который включает в себя один или несколько исполнительных блоков 108 для обработки алгоритма, включающего в себя SIMD-команду умножения высокого порядка с округлением и сдвигом в соответствии с настоящим изобретением. Например, процессор 102 может получать программные команды, запрашивающие операции SIMD-умножения высокого порядка над операндами пакетированных данных. Настоящий вариант осуществления описан в контексте однопроцессорной настольной или серверной системы, но альтернативные варианты осуществления могут быть включены в мультипроцессорную систему. Система 100 является примером архитектуры концентратора. Компьютерная система 100 включает в себя процессор 102 для обработки сигналов данных. Процессор 102 может представлять собой, например, микропроцессор компьютера с полным набором команд (CISC), микропроцессор с сокращенным набором команд (RISC), микропроцессор с командными словами сверхбольшой длины (VLIW), процессор, реализующий комбинацию наборов команд или любое другое процессорное устройство, такое как цифровой процессор сигналов (DSP). Процессор 102 связан с процессорной шиной 110, которая может передавать сигналы данных между процессором 102 и другими компонентами в системе 100. Элементы системы 100 выполняют свои обычные функции.

В одном варианте осуществления процессор 102 включает в себя память 104 внутреннего кэша уровня 1 (L1). В зависимости от архитектуры процессор 102 может иметь отдельный внутренний кэш или множество уровней внутреннего кэша. Альтернативно, в другом варианте осуществления память кэша может быть внешней по отношению к процессору 102. Другие варианты осуществления могут также включать в себя комбинацию как внутреннего, так и внешнего кэша, в зависимости от реализации. Регистровый файл 106 может сохранять различные типы данных в различных регистрах, включая целочисленные регистры, регистры с плавающей запятой, регистры статуса и регистры указателей команд.

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

Таким образом, многие мультимедийные приложения могут быть ускорены и исполнены более эффективно за счет использования полной разрядности шины данных процессора для выполнения операций с пакетными данными. Это может исключить необходимость переноса меньших блоков данных по шине данных процессора для выполнения одной или нескольких операций над одним элементом данных в каждый момент времени. В микроконтроллерах, встроенных процессорах, устройствах графики, ЦПБ и других типах логических схем также могут быть использованы альтернативные варианты исполнительного блока 108. Система 100 включает в себя память 120, которая может представлять собой динамическое ОЗУ (DRAM), статическое ОЗУ (SRAM), устройство флэш-памяти или ЗУ иного типа. Память 120 может хранить команды и/или данные, представленные сигналами данных, которые могут выполняться процессором 102.

Микросхема 116 системной логики связана с шиной 110 процессора и памятью 120. Микросхема 116 системной логики в показанном варианте осуществления представляет собой концентратор контроллера памяти (ККП). Процессор 102 может осуществлять информационный обмен с ККП 116 через шину 110 процессора. ККП 116 обеспечивает широкополосный канал 118 памяти к блоку 120 памяти для хранения команд и данных и для хранения команд, данных и текстуры графики. ККП 116 предназначен для пересылки сигналов данных между процессором 102, блоком 120 памяти и другими компонентами в системе 100 и для шунтирования сигналов данных между шиной 110 процессора, блоком 120 памяти и системой 122 ввода/вывода. В некоторых вариантах осуществления микросхема 116 системной логики может обеспечить графический порт для связи с контроллером 112 графики. ККП 116 связан с блоком 120 памяти через интерфейс 118 памяти. Графическая плата 112 связана с ККП 116 через межсоединение 114 ускоренного графического порта.

Система 100 использует специализированную шину 122 интерфейса концентратора для соединения ККП 116 с концентратором контроллера ввода/вывода (ККВВ) 130. ККВВ 130 обеспечивает прямые соединения с некоторыми устройствами ввода/вывода через локальную шину ввода/вывода. Локальная шина ввода/вывода является высокоскоростной шиной ввода/вывода для соединения периферийных устройств с блоком 120 памяти, набором микросхем и процессором 102. В качестве примеров могут служить контроллер аудиоданных, концентратор 128 программно-аппаратных средств (система BIOS, записанная во флэш-памяти), беспроводный приемопередатчик 126, блок 124 хранения данных, традиционный контроллер ввода/вывода, содержащий интерфейсы пользовательского ввода и клавиатуры, последовательный расширительный порт, например, соответствующий универсальной последовательной шине (USB), и сетевой контролер 134. Блок 124 хранения данных может содержать дисковод на жестких дисках, ПЗУ на компакт-дисках (CD-ROM), устройство флэш-памяти или другое устройство массовой памяти.

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

На фиг.1В показан альтернативный вариант осуществления системы 140 обработки данных, которая реализует принципы настоящего изобретения. Возможным вариантом системы 140 обработки данных могут быть процессоры прикладных программ Intel®PCA (персональная архитектура Интернет-клиента), основанные на технологии XScaleTM (как описано в WWW, адрес developer.intel.com). Специалистам в данной области техники должно быть понятно, что описанные здесь варианты осуществления могут быть использованы с альтернативными системами обработки без отклонения от сущности настоящего изобретения.

Компьютерная система 140 содержит ядро 159 обработки, обеспечивающее выполнение SIMD-операций, включая умножение высокого порядка с округлением и сдвигом. В одном варианте осуществления ядро 159 обработки представляет собой блок обработки с архитектурой любого типа, включая, но не ограничиваясь, архитектуры CISC, RISC или VLIW. Ядро 159 обработки может также быть пригодным для изготовления по одному или нескольким технологическим процессам и, будучи представленным на машиночитаемых носителях с достаточной детальностью, может быть пригодным для облегчения такого изготовления.

Ядро 159 обработки включает в себя исполнительный блок 142, набор регистровых файлов 145 и декодер 144. Ядро 159 обработки также включает в себя дополнительные схемы (не показаны), что не является существенным для понимания настоящего изобретения. Исполнительный блок 142 используется для исполнения команд, принимаемых ядром 159 обработки. В дополнение к распознаванию типовых команд процессора, исполнительный блок 142 может распознавать команды в наборе 143 упакованных (в упакованном формате) команд для выполнения операций с использованием упакованных форматов данных. Исполнительный блок 142 связан с регистровым файлом 145 внутренней шиной. Регистровый файл 145 представляет область памяти в ядре 159 обработки для хранения информации, включая данные. Как упомянуто выше, понятно, что область памяти, используемая для хранения упакованных данных, не является критичной. Исполнительный блок 142 связан с декодером 144. Декодер 144 используется для декодирования команд, полученных ядром 159 обработки, для получения сигналов управления и/или точек входа в микрокод. В ответ на эти сигналы управления и/или точки входа в микрокод исполнительный блок 142 выполняет соответствующие операции.

Ядро 159 обработки связано с шиной 141 для информационного обмена с различными другими системными устройствами, которые могут включать в себя, не ограничиваясь указанным, например, блок 146 управления синхронным динамическим запоминающим устройством с произвольной выборкой (ЗУПВ) (SDRAM), блок 147 управления статическим ЗУПВ, интерфейс 148 блочной флэш-памяти, блок 149 управления компактной флэш-памятью на плате PCMCIA, блок 150 управления жидкокристаллического дисплея, контроллер 151 прямого доступа к памяти, интерфейс 152 альтернативного устройства управления передачей данных по шине («хозяина» шины). В одном варианте осуществления система 140 обработки данных может также содержать мост 154 ввода/вывода для информационного обмена с различными устройствами ввода/вывода через шину 153 ввода/вывода. Такие устройства ввода/вывода могут включать в себя, без каких-либо ограничений, например, универсальный асинхронный приемопередатчик (UART) 155, универсальную последовательную шину (USB) 156, беспроводный UART 157, выполненный по технологии Bluetooth, и интерфейс 158 расширения ввода/вывода.

Один вариант осуществления сист