Область техники
Настоящее изобретение относится к области устройств обработки и соответствующего программного обеспечения и программных последовательностей, которые выполняют математические операции.
Предшествующий уровень техники
Компьютерные системы все больше проникают в жизнь современного общества. Возможности обработки компьютеров повысили эффективность и производительность труда работников в широком спектре профессий. Поскольку стоимость покупок и приобретения в собственность компьютеров продолжает падать, все больше и больше потребителей обретают возможность получения выгод от более новых и более быстродействующих машин. Кроме того, многие люди получают удовольствие от использования портативных компьютеров (ноутбуков) ввиду предоставляемой ими свободы. Мобильные компьютеры позволяют пользователям легко переносить свои данные и работать с ними, когда они покидают офис или находятся в путешествии. Данный сценарий хорошо знаком маркетинговым группам, руководителям корпораций и даже студентам.
По мере развития технологии процессоров происходит создание новых кодов программного обеспечения для исполнения на машинах этими процессорами. Пользователи в общем случае ожидают и требуют более высоких рабочих характеристик от своих компьютеров независимо от типа используемого программного обеспечения. Один такой вопрос может возникнуть из типов команд и операций, которые действительно выполняются в процессоре. Некоторые типы операций требуют больше времени для исполнения ввиду сложности операций и/или типа требующихся схем. Это обеспечивает возможность оптимизировать путь, которым в процессоре исполняются некоторые сложные операции.
Медийные прикладные программы (приложения) стимулируют развитие микропроцессоров уже больше десятка лет. В действительности, большинство компьютерных модернизаций в последние годы стимулировалось медийными приложениями. Эти модернизации преобладающим образом происходили в потребительских сегментах, хотя значительный прогресс также наблюдается в производственных сегментах в области развлечений, высшего образования и коммуникации. Тем не менее будущие медийные приложения сделают необходимыми еще более высокие вычислительные требования. В результате практический опыт персональных компьютеров ближайшего будущего будет отличаться разнообразием аудио визуальных эффектов, а также они будут проще в использовании и, что более важно, вычисления сольются с коммуникациями.
Соответственно, отображение изображений, а также воспроизведение аудио и видеоданных, которые совместно определяются понятием «информационное содержание», станут все более популярными приложениями для будущих вычислительных устройств. Операции фильтрации и свертки являются некоторыми из наиболее обычных операций, выполняемых над данными информационного содержания, такими как аудио- и видеоданные изображений. Такие операции требуют высокой вычислительной мощности, но обуславливают высокий уровень параллелизма данных, что может быть использовано за счет эффективной реализации с применением различных устройств хранения данных, таких, например, как регистры одного потока команд и множества потоков данных (SIMD-регистры). Ряд современных архитектур также требуют не являющегося необходимым изменения типа данных, что снижает пропускную способность команд и существенно увеличивает число тактовых циклов, требуемых для упорядочивания данных для арифметических операций.
Различные связанные со знаком команды, известные из предшествующего уровня техники, такие как знаковая команда, определяют знак двоичного числа. Однако возможности этих известных знаковых команд имеют ограниченную полезность, особенно в приложениях, где необходима дальнейшая обработка знаковых результатов, поскольку эти результаты являются промежуточными результатами более масштабных алгоритмов. Потребность в дополнительных командах для достижения желательных результатов обуславливала дополнительные затраты, связанные с ресурсами обработки и интервалами времени конвейерной обработки.
Краткое описание чертежей
Настоящее изобретение иллюстрируется в качестве примера, но не ограничения, на чертежах, на которых одинаковыми ссылочными позициями обозначены сходные элементы.
Фиг.1А - блок-схема компьютерной системы с процессором, который включает в себя исполнительные блоки для исполнения команды для знаковой операции умножения в соответствии с одним вариантом осуществления настоящего изобретения;
Фиг.1В - блок-схема другой примерной компьютерной системы, соответствующей альтернативному варианту осуществления настоящего изобретения;
Фиг.1С - блок-схема еще одной примерной компьютерной системы, соответствующей другому альтернативному варианту осуществления настоящего изобретения;
Фиг.2 - блок-схема микроструктуры для процессора одного варианта осуществления, которая включает в себя логические схемы для выполнения знаковой операции умножения в соответствии с настоящим изобретением;
Фиг.3А - представления различных типов упакованных данных в мультимедийных регистрах в соответствии с одним вариантом осуществления настоящего изобретения;
Фиг.3В - типы упакованных данных в соответствии с альтернативным вариантом осуществления;
Фиг.3С - различные представления упакованных типов данных со знаком и без знака в мультимедийных регистрах в соответствии с вариантом осуществления настоящего изобретения;
Фиг.3D - возможный вариант осуществления формата кода операции;
Фиг.3Е - альтернативный формат кода операции;
Фиг.3F - еще один альтернативный формат кода операции;
Фиг.4 - блок-схема варианта осуществления логики для выполнения знаковой операции над операндами упакованных данных в соответствии с настоящим изобретением;
Фиг.5 - иллюстрация действия знаковой операции умножения элементов данных в соответствии с возможным вариантом осуществления настоящего изобретения;
Фиг.6А - блок-схема возможного варианта осуществления схемы для выполнения знаковой операции в соответствии с настоящим изобретением;
Фиг.6В - блок-схема другого варианта осуществления схемы для выполнения знаковой операции в соответствии с настоящим изобретением;
Фиг.7 - иллюстрация действия упакованной знаковой команды на множество элементов данных в соответствии с возможным вариантом осуществления настоящего изобретения;
Фиг.8А - блок-схема последовательности операций, иллюстрирующая возможный вариант осуществления способа для выполнения знаковой операции;
Фиг.8В - блок-схема последовательности операций, иллюстрирующая другой вариант осуществления способа для выполнения знаковой операции;
Фиг.9 - блок-схема возможного варианта осуществления логики для выполнения операции абсолютного значения над операндом упакованных данных;
Фиг.10 - иллюстрация действия алгоритма деблокирования с использованием команд архитектуры с одним потоком команд и множеством потоков данных (SIMD-команд);
Фиг.11 - блок-схема последовательности операций, иллюстрирующая возможный вариант осуществления способа выполнения алгоритма деблокирования с использованием SIMD-команд.
Детальное описание
Последующее описание раскрывает варианты осуществления способа, устройства и команды для выполнения знаковой операции и умножения. В последующем описании многочисленные конкретные детали, такие как типы процессоров, микроструктурные условия, события, механизмы разрешения (разблокировки) и тому подобное, излагаются для того, чтобы обеспечить более глубокое понимание настоящего изобретения. Однако специалистам в данной области техники должно быть понятно, что изобретение может быть реализовано без таких конкретных деталей. Дополнительно, некоторые хорошо известные структуры, схемы и тому подобное не показаны в деталях, чтобы не затемнять сущность изобретения несущественными деталями.
Хотя последующие варианты осуществления описаны со ссылками на процессор, другие варианты осуществления применимы с другими типами интегральных схем и логических устройств. Те же самые методы и указания настоящего изобретения могут быть легко применены в других типах схем или полупроводниковых устройств, которые могут обеспечить выгоды от применения более высокой пропускной способности конвейерной обработки и улучшенных рабочих характеристик. Указания настоящего изобретения применимы к любому процессору или машине, которые исполняют операции над данными. Однако настоящее изобретение не ограничено процессорами и машинами, которые выполняют операции над 256-битовыми, 128-битовыми, 64-битовыми, 32-битовыми или 16-битовыми данными, и может быть применено к любому процессору и машине, в которых необходимо манипулирование с упакованными данными.
В последующем описании, в целях пояснения, изложены различные конкретные детальные особенности, чтобы обеспечить более глубокое понимание настоящего изобретения. Однако специалисту в данной области техники должно быть понятно, что эти конкретные детали не являются необходимыми для практической реализации настоящего изобретения. В других случаях хорошо известные структуры и схемы не поясняются в конкретных деталях, чтобы не затенять сущность настоящего изобретения. Кроме того, в последующем описании приведены примеры, и на чертежах показаны различные примеры в целях иллюстрации. Однако эти примеры не должны трактоваться в ограничительном смысле, так как они приведены только в качестве примеров настоящего изобретения, а не для обеспечения исчерпывающего перечня возможных реализаций настоящего изобретения.
Хотя приведенные ниже примеры описывают обработку команд и распределение в контексте исполнительных блоков и логических схем, другие варианты осуществления настоящего изобретения могут быть реализованы с помощью программного обеспечения. В одном варианте осуществления способы, соответствующие настоящему изобретению, реализованы посредством исполняемых машиной команд. Команды могут быть использованы для обеспечения того, чтобы универсальный или специализированный процессор, который программируется командами, выполнял этапы настоящего изобретения. Настоящее изобретение может обеспечиваться как компьютерный программный продукт или программное обеспечение, которое может включать в себя машино- или компьютерно-читаемый носитель, на котором сохранены команды, которые могут быть использованы для программирования компьютера (или иных электронных устройств) для выполнения процесса соответственно настоящему изобретению. Альтернативно, этапы настоящего изобретения могут выполняться конкретными компонентами программного обеспечения, которые содержат логические схемы с жесткими (постоянными) соединениями («зашитую» логику) для выполнения этапов, или любой комбинацией программируемых компьютерных компонентов и заказных аппаратных компонентов. Такое программное обеспечение может быть сохранено в памяти в системе. Аналогичным образом, код может распространяться по сети или посредством другого считываемого компьютером носителя.
Данный считываемый машиной носитель может включать в себя любой механизм для хранения или передачи информации в форме, обеспечивающей возможность считывания машиной (например, компьютером), но не ограничен гибкими дискетами, оптическими дисками, постоянной памятью на компакт-дисках (CD-ROM), магнитооптическими дисками, постоянной памятью (ROM, ПЗУ), оперативной памятью (RAM, ОЗУ), стираемой программируемой постоянной памятью (EPROM), электрически стираемой программируемой постоянной памятью (EEPROM), магнитными или оптическими картами, флэш-памятью, передачей по сети Интернет, электрической, оптической, акустической или другими формами передаваемых сигналов (например, несущие колебания, инфракрасные сигналы, цифровые сигналы и т.д.). Соответственно, считываемый компьютером носитель включает в себя любой тип носителя (среды передачи)/считываемого компьютером носителя, пригодного для хранения или передачи электронных команд или информации в форме, считываемой машиной (например, компьютером). Кроме того, настоящее изобретение может также предусматривать загрузку в качестве программного продукта. Как таковая, программа может быть перенесена с удаленного компьютера (например, сервера) в запрашивающий компьютер (например, клиент). Перенос программы может производиться посредством электрической, оптической, акустической или других форм сигналов данных, воплощенных в несущем колебании или в среде распространения, по каналу связи (например, модему, сетевому соединению и т.п.).
Процесс проектирования может проходить различные этапы, от создания, моделирования и до изготовления. Данные, представляющие конструкцию, могут представлять такую конструкцию различными путями. Во-первых, как это полезно при моделировании, аппаратные средства могут быть представлены с использованием языка описания аппаратных средств или другого языка функционального описания. Кроме того, на некоторых этапах процесса проектирования может создаваться модель схемного уровня с логическими и/или транзисторными вентилями. Кроме того, большинство конструкций, на некотором этапе, достигают уровня данных, представляющих физическое размещение различных устройств в модели аппаратных средств. В случае, когда используются обычные методы изготовления полупроводников, данные, представляющие модель аппаратных средств, могут быть данными, определяющими наличие или отсутствие различных признаков на различных уровнях маски, для масок, используемых в производстве интегральных схем. В любом представлении конструкции данные могут сохраняться на машиночитаемом носителе любой формы. Оптическая или электрическая волна, модулируемая или иным образом генерируемая для передачи такой информации, память или магнитное или оптическое запоминающее устройство, такое как диск, может представлять собой машиночитаемый носитель. Любой из этих носителей может «нести» или «индицировать» информацию о конструкции или информацию программного обеспечения. Если передается колебание электрической несущей, в котором проявляется код или которое является носителем кода или разрабатываемого продукта, таким образом, что выполняется копирование, буферизация или повторная передача электрического сигнала, то создается новая копия. Таким образом, провайдер коммуникационного обслуживания или сетевой провайдер может сделать копию изделия (несущего колебания), воплощающего в себе методы настоящего изобретения.
В современных процессорах ряд различных исполнительных блоков используется для обработки и исполнения разнообразных кодов и команд. Не все команды создаются одинаковыми, поскольку некоторые являются более быстродействующими для исполнения, в то время как другие могут требовать огромного количества тактовых импульсов. Чем быстрее пропускная способность команд, тем лучше общие рабочие характеристики процессора. Таким образом, было бы предпочтительным иметь как можно больше команд, исполняемых с максимально возможным быстродействием. Однако имеются некоторые команды, которые имеют более высокую сложность и требуют большего в смысле времени исполнения и ресурсов процессора. Например, имеются команды с плавающей запятой, операции загрузки/сохранения, перемещения данных и т.д.
По мере того как все больше компьютерных систем используется в Интернет-приложениях и мультимедийных приложениях, с течением времени вводится дополнительная поддержка процессоров. Например, одиночная команда, команды c множеством данных с целыми числами/с плавающей запятой типа «один поток команд и множество потоков данных» (SIMD) и потокового SIMD расширения (SSE) являются командами, которые сокращают общее количество команд, требуемых для исполнения конкретной программной задачи, что в свою очередь может снизить потребляемую мощность. Эти команды могут ускорять выполнение программного обеспечения за счет операций с множеством элементов данных, осуществляемых параллельно. В результате выигрыш по рабочим характеристикам может быть достигнут в широком диапазоне приложений, включая обработку видео, речи и изображений/фотоснимков. Реализация SIMD-команд в процессорах и логических схемах подобного типа обычно связана с рядом вопросов. Кроме того, сложность SIMD-операций часто приводит к необходимости дополнительных схем, чтобы корректным образом осуществлять обработку и манипулирование данными. В настоящее время нет знаковой SIMD-команды для осуществления умножения. А также нет SIMD-команды для операций с абсолютными значениями. Без наличия знаковой операции умножения, требуется большое число команд и регистров данных для достижения тех же результатов в приложениях, таких как аудио/видео сжатие, обработка и манипуляция. Таким образом, знаковые команды в соответствии с настоящим изобретением могут снизить непроизводительные издержки на кодирование и требования к ресурсам. Варианты осуществления настоящего изобретения обеспечивают путь реализации знаковой операции в качестве алгоритма, который использует связанные с архитектурой SIMD аппаратные средства. Некоторые варианты осуществления также обеспечивают пути реализации операции с абсолютными значениями. В настоящее время обработка данных в SIMD-регистре является до некоторой степени трудной и утомительной. Некоторые алгоритмы требуют больше команд для упорядочения данных для арифметических операций, чем действительное число команд для выполнения этих операций. За счет реализации вариантов осуществления знаковой операции, выполняющей умножение в соответствии с настоящим изобретением, можно в значительной степени уменьшить количество команд, требуемых для реализации знаковой обработки.
Варианты осуществления настоящего изобретения связаны с командой для реализации версии знаковой операции. Знаковая операция определяет то, является ли данное число положительным, отрицательным или нулем. В процессе знаковой (signum) операции функция оценивает число следующим образом: для x>0 signum(x)=1; для x=0 signum(x)=0 и для x<0 signum(x)=-1. Однако в мультимедийных приложениях умножение значения данных на знак другого значения часто требуется в процессе выполнения различных алгоритмов. Знаковая операция, которая осуществляет умножение, может устранить необходимость в выполнении многих отдельных операций. Варианты осуществления представляемой знаковой операции обеспечивают более значительную функциональность, чем обычная знаковая операция, а также включают осуществление умножения.
Знаковая команда в соответствии с настоящим изобретением вычисляет следующую операцию: DEST(адресат)=SRC(источник)1 x (SIGNUM(знак)(SRC(источник)2). Если SRC2 положительно, знаковая (signum) операция над SRC2 даст значение '+1'. Если SRC2 равно нулю, то результатом знаковой операции (signum) над SRC2 будет нуль. Если SRC2 отрицательно, то знаковая (signum) операция над SRC2 даст значение '-1'. Знаковая операция умножения в виде варианта осуществления настоящего изобретения заключается во взятии знака второго элемента данных и умножении результата знаковой операции на значение первого элемента данных для получения результирующего продукта. Такая знаковая операция, согласно одному варианту осуществления, может быть представлена как
если SOURCE2<0, то DEST=SOURCE1 x '-1';
иначе, если SOURCE2=0, то DEST=0;
иначе, если SOURCE2>0, то DEST=SOURCE1 x '+1'
Для операнда упакованных данных этот процесс может быть применен к каждой позиции элемента данных.
Кроме того, в одном варианте осуществления знаковая операция с умножением также может имитировать знаковую (signum) операцию путем использования значения '1' в качестве первого элемента источника и представляющего интерес значения в качестве второго элемента источника в знаковой операции. Поскольку знаковая операция данного варианта осуществления обуславливает умножение первого элемента источника на одно из следующего: '+1', '0' или '-1', на основе знакового значения второго элемента, операция signum здесь может быть дублирована. Аналогичным образом, варианты осуществления знаковой операции данного изобретения могут также выполнять операции с абсолютными значениями путем установки первого элемента источника на знаковую операцию, соответствующую второму элементу источника. Это достижимо, поскольку значение источника по существу будет умножаться на свой собственный знак, тем самым приводя к результату в виде '0' или положительного значения.
На фиг.1А показана блок-схема приведенной для примера компьютерной системы, выполненной с процессором, который включает в себя исполнительные блоки для выполнения знаковой операции умножения в соответствии с одним вариантом осуществления настоящего изобретения. Система 100 включает в себя компонент, такой как процессор 102, для использования исполнительных блоков, включающих в себя логику для выполнения алгоритмов для обработки данных, в соответствии с настоящим изобретением, как в описываемом здесь варианте осуществления. Система 100 представляет системы обработки, основанные на микропроцессорах PENTIUM® III, PENTIUM® 4, XeonTM, Itanium®, XScaleTM и/или StrongARMTM, доступных от компании Intel Corporation (Santa Clara, California), хотя могут использоваться и другие системы (включая персональные компьютеры с другими микропроцессорами, рабочие станции для проектирования, компьютерные приставки и тому подобные средства). В одном варианте осуществления образцовая система 100 может исполнять версию операционной системы WINDOWSTM, доступной от компании Microsoft Corporation (Redmond, Washington), хотя также могут использоваться и другие операционные системы (например, UNIX и Lunix), встроенное программное обеспечение и/или графические пользовательские интерфейсы. Таким образом, настоящее изобретение не ограничено какой-либо конкретной комбинацией аппаратных схемных средств и программного обеспечения.
Представленное усовершенствование не ограничивается компьютерными системами. Альтернативные варианты осуществления настоящего изобретения могут использоваться в других устройствах, таких как портативные устройства и встроенные прикладные программы. Некоторые примеры портативных устройств включают в себя сотовые телефоны, устройства протокола Интернет, цифровые камеры, персональные цифровые помощники (PDA) и карманные ПК. Встроенные прикладные программы могут включать в себя микроконтроллер, цифровой процессор сигналов, встроенную (накристальную) систему, сетевые компьютеры, компьютерные приставки к телевизорам, сетевые концентраторы, коммутаторы глобальных сетей или любую другую систему, которая выполняет знаковые операции и/или операции абсолютного значения над операндами. Кроме того, некоторые архитектуры реализованы для обеспечения возможности командам воздействовать на различные данные одновременно для улучшения эффективности мультимедийных приложений. По мере того как тип и объем данных увеличивается, компьютеры и их процессоры должны совершенствоваться для манипулирования данными более эффективными способами.
На фиг.1А показана блок-схема компьютерной системы 100 с процессором 102, который включает в себя один или несколько исполнительных блоков 108 для обработки алгоритма выделения знака элемента данных из одного операнда и умножения этого знака на другой элемент данных в соответствии с настоящим изобретением. Настоящий вариант осуществления описан в контексте однопроцессорной настольной или серверной системы, но альтернативные варианты осуществления могут быть включены в мультипроцессорную систему. Система 100 является примером архитектуры концентратора. Компьютерная система 100 включает в себя процессор 102 для обработки сигналов данных. Процессор 102 может представлять собой, например, микропроцессор компьютера с полным набором команд (CISC), микропроцессор с командными словами сверхбольшой длины (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. Память 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 упакованных (в упакованном формате) команд для выполнения операций с использованием упакованных форматов данных. Набор 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 расширения ввода/вывода.
Один вариант осуществления системы 140 обработки данных обеспечивает мобильную, сетевую и/или беспроводную связь и ядро 159 обработки, обеспечивающее выполнение SIMD-операций, включая операцию знака или абсолютного значения. Ядро 159 обработки может программироваться с использованием различных алгоритмов передачи аудио, видео, формирования изображений и информационного обмена, включая дискретные преобразования, такие как преобразование Уолша-Адамара, быстрое преобразование Фурье, дискретное косинусное преобразование и их соответствующие инверсные преобразования; методы сжатия/восстановления (сжатых данных), такие как преобразование цветового пространства, анализ движения для кодирования видеоданных или компенсации движения для декодирования видеоданных; и функции модуляции/демодуляции (модем), такие как импульсно-кодовая модуляция (ИКМ).
На фиг.1С показан еще один альтернативный вариант осуществления системы обработки данных, имеющей возможность выполнения SIMD-операций знака или абсолютного значения. В соответствии с альтернативным вариантом осуществления, система 160 обработки данных может включать в себя главный процессор 166, SIMD-сопроцессор 161, кэш-память (быстродействующую буферная память небольшой емкости) 167 и систему 168 ввода/вывода. Система 168 ввода/вывода дополнительно может быть связана с беспроводным интерфейсом 169. SIMD-сопроцессор 161 имеет возможность выполнения SIMD-операций, включая операцию знака или абсолютного значения. Ядро 170 обработки может быть пригодным для изготовления по одному или нескольким технологическим процессам и, будучи представленным на машино-читаемых носителях с достаточной детальностью, может быть пригодным для облегчения изготовления всей или части системы 160 обработки данных, включая ядро 170 обработки.
В одном варианте осуществления SIMD-сопроцессор включает в себя исполнительный блок 162 и набор регистровых файлов 164. Вариант осуществления главного процессора 165 содержит декодер для распознавания команд из набора 163 команд, включая упакованные SIMD-команды знака и абсолютного значения для исполнения исполнительным блоком 162. В альтернативных вариантах SIMD-сопроцессор 161 также содержит по меньшей мере часть декодера 165В для декодирования команд из набора 163 команд. Ядро 170 обработки также включает в себя дополнительные схемы (не показаны), которые не являются необходимыми для понимания сущности настоящего изобретения.
В процессе работы главный процессор 166 исполняет поток команд обработки данных, которые управляют операциями обработки данных общего типа, включая взаимодействия с кэш-памятью 167 и системой ввода/вывода 168. В поток команд обработки данных встроены команды SIMD-сопроцессора. Декодер 165 главного процессора 166 распознает эти команды SIMD-сопроцессора как команды того типа, которые должны выполняться присоединенным SIMD-сопроцессором 161. Соответственно, главный процессор 166 выдает эти команды SIMD-сопроцессора (или сигналы управления, представляющие команды SIMD-сопроцессора) в шину 166 сопроцессора, из которой они принимаются присоединенными SIMD-сопроцессорами. В этом случае SIMD-сопроцессор будет принимать и исполнять любые принятые команды SIMD-сопроцессора, предназначенные для него.
Данные могут приниматься через беспроводный интерфейс 169 для обработки команд SIMD-сопроцессором. Например, речевая передача может приниматься в форме цифрового сигнала, который может обрабатываться по командам SIMD-сопроцессора для восстановления цифровых аудиовыборок, представляющих речевую передачу. В другом примере сжатые аудио- и/или видеоданные могут приниматься в форме потока цифровых битов, который может обрабатываться по командам SIMD-сопроцессора для восстановления цифровых выборок аудиоданных и/или кадров видеоданных. В одном варианте осуществления ядро 170 обработки, главный процессор 166 и SIMD-сопроцессор 161 интегрированы в единое ядро 170 обработки, содержащее исполнительный блок 162, набор регистровых файлов 164 и декодер 165 для распознавания команд из набора 163 команд, включающего в себя SIMD-команды знака и абсолютного значения.
На фиг.2 представлена блок-схема микроструктуры для процессора 200 в одном варианте осуществления, который включает в себя логические схемы для выполнения знаковой операции с умножением, в соответствии с настоящим изобретением. Знаковая операция может также упоминаться как упакованная знаковая операция и упакованная знаковая команда, как в приведенном выше обсуждении. В одном варианте осуществления знаковой команды команда может умножать первый элемент данных на знаковое значение второго элемента данных. Эта команда также может определяться как PSIGN или упакованная знаковая команда. В данном варианте осуществления знаковая команда может также быть реализована для работы с элементами данных, имеющими размер байта, слова, слова двойной длины, квадраслова и т.д.
Препроцессор (внешний интерфейс) 201 внутреннего порядка является частью процессора 200, который выбирает макрокоманды для исполнения и подготавливает их для использования позднее в конвейерной обработке процессора. Препроцессор 201 в данном варианте осуществления включает в себя различные блоки. Блок 226 упреждающей выборки (из памяти) выбирает с упреждением макрокоманды из памяти и вводит их в декодер 228 команд, который, в свою очередь, декодирует их в примитивы, называемые микрокомандами или микрооперациями (также называемые «микро-оп» или «uops»), понятные машине для исполнения. Трассировочный кэш 230 принимает декодированные микрооперации и собирает их в программно упорядоченные последовательности или трассы в очереди 234 микроопераций для исполнения. Если трассировочный кэш 230 обнаруживает комплексную макрокоманду, то ПЗУ 232 микрокода обеспечивает микрооперации, необходимые для выполнения операции.
Многие макрокоманды преобразуются в отдельную микрооперацию, а другие требуют нескольких микроопераций для завершения полной операции. В одном варианте осуществления, если для завершения макрокоманды необходимо более четырех микрокоманд, то декодер 228 обращается к ПЗУ 232 микрокода для выполнения макрокоманды. В одном варианте осуществления упакованная знаковая команда может декодироваться в небольшое число микроопераций для обработки в декодере 228 команд. В другом варианте осуществления команда для упакованного знакового алгоритма может быть сохранена в ПЗУ 232 микрокода, если ряд микроопераций необходим для выполнения этой операции. Трассировочный кэш 230 обращается к программируемой логической матрице точек входа для определения корректного указателя микрокоманды для считывания последовательностей микрокода для алгоритмов знака или абсолютного значения в ПЗУ 232 микрокода. После того как ПЗУ 232 микрокода завершит упорядочивание в последовательность микроопераций для текущей макрокоманды, препроцессор 201 машины возобновляет выборку с упреждением микроопераций из трассировочного кэша 230.
Некоторые SIMD и другие команды мультимедийного типа рассматриваются как комплексные команды. Большинство команд, связанных с плавающей запятой, также являются комплексными командами. Когда декодер 228 команд обнаруживает комплексную макрокоманду, к ПЗУ 232 микрокода осуществляется обращение в соответствующей ячейке для извлечения последовательности микрокода для данной макрокоманды. Различные микрооперации, необходимые для выполнения данной макрокоманды, передаются в процессор 203 исполнения с изменением последовательности (в другом порядке) для исполнения в соответствующих исполнительных блоках целочисленных операций и операций с плавающей запятой.
Процессор 203 исполнения с изменением последовательности обеспечивает подготовку микрокоманд для исполнения. Логика исполнения с изменением последовательности имеет ряд буферов для сглаживания и переупорядочивания потока микрокоманд для оптимизации рабочих характеристик, когда они проходят конвейерную обработку и планируются для исполнения. Логика блока распределения распределяет машинные буферы и ресурсы, которые требуются каждой микрооперации для исполнения. Логика переименования регистров переименовывает регистры логики в записи в регистровом файле. Блок распределения также распределяет запись для каждой микрооперации в одну из двух очередей микроопераций, одну для операций с памятью и одну для операций без памяти, перед следующими планировщиками команд: планировщик памяти, скоростной планировщик 202, медленный/общий планировщик 204 микроопераций с плавающей запятой и простой планировщик 206 микроопераций с плавающей запятой. Планировщики 202, 204, 206 микроопераций определяют, когда микрооперация готова к выполнению, на основе готовности их зависимых источников операндов входных регистров и доступности ресурсов исполнения, которые необходимы микрооперациям для выполнения их операции. Скоростной планировщик 202 в этом варианте осуществления может планировать на каждую половину основного тактового цикла, в то время как другие планировщики могут планировать только один раз на каждый тактовый цикл основного процессора. Планировщики осуществляют арбитраж для портов отсылки для планирования исполнения микроопераций. Регистровые файлы 208, 210 находятся между планировщиками 202, 204, 206 и исполнительными блоками 212, 214, 216, 218, 220, 222, 224 в исполнительном модуле 211. Имеется отдельный регистровый файл 208, 210 для целочисленных операций и операций с плавающей запятой соответственно. Каждый регистровый файл 208, 210 в этом варианте осуществления также включает в себя шунтирующую цепь, которая может шунтировать или пересылать непосредственно завершенные результаты, которые еще не записаны в регистровый файл, к новым зависимым микрооперациям. Регистровый файл 208 для целочисленных операций и регистровый файл 210 для операций с плавающей запятой также имеют возможность информационного обмена между собой. В одном варианте осуществления регистровый файл 208 для целочисленных операций расщеплен на два отдельных регистровых файла: один регистровый файл для 32 битов данных низкого порядка, а второй регистровый файл для 32 битов данных высокого порядка. Регистровый файл 210 для операций с плавающей запятой в одном варианте осуществления имеет записи размером 128 битов, поскольку команды с плавающей запятой в типовом случае имеют операнды размером от 64 до 128 битов.
Исполнительный модуль 211 содержит исполнительные блоки 212, 214, 216, 218, 220, 222, 224, где команды реально исполняются. Эта секция включает в себя регистровые файлы 208, 210, которые сохраняют значения целочисленных операндов и операндов с плавающей запятой, которые необходимы микрооперациям для исполнения. Процессор 200 в данном варианте осуществления содержит ряд исполнительных блоков: блок генерации адреса (БГА) 212, БГА 214, быстродействующее арифметико-логическое устройство (АЛУ) 216, быстродействующее АЛУ 218, медленно действующее АЛУ 220, АЛУ 222 с плавающей запятой, блок 224 перемещения с плавающей запятой. В этом варианте осуществления исполнительные блоки 222, 224 микроопераций с плавающей запятой исполняют операции MMX, SIMD, SSE с плавающей запятой. АЛУ 222 с плавающей запятой в этом варианте осуществления включает в себя делитель с плавающей запятой размером 64 бита х 64 бита для исполнения микроопераций деления, извлечения квадратного корня, определения остатка от деления. В вариантах осуществления настоящего изобретения любое действие, связанное со значением с плавающей запятой, возникает с использованием аппаратного средства с плавающей запятой. Например, преобразования между целочисленным форматом и форматом с плавающей запятой осуществляются с использованием регистрового файла с плавающей запятой. Аналогичным образом, операция деления с плавающей запятой реализуется в делителе с плавающей запятой. С другой стороны, числа с неплавающей запятой и целые числа обрабатываются ресурсами целочисленных аппаратных средств. Простые часто встречающиеся операции АЛУ реализуются высокоскоростными исполнительными блоками 216, 218 АЛУ. Быстродействующие АЛУ 216, 218 в этом варианте осуществления могут выполнять высокоскоростные операции с эффективной задержкой, равной половине тактового цикла. В одном варианте осуществления наиболее сложные целочисленные операции реализуются медленно действующим АЛУ 220, так как медленно действующее АЛУ 220 включает в себя аппаратные средства исполнения целочисленной арифметики для операций с большим временем ожидания, таких как умножение, сдвиги, флаговая логика, обработка ветвлений. Операции загрузки/хранения в памяти выполняются АЛУ 212, 214. В этом варианте осуществления целочисленные АЛУ 216, 218, 220 описаны в контексте выполнения целочисленных операций над операндами 64-битовых данных. В альтернативных вариантах осуществления АЛУ 216, 218, 220 могут быть реализованы для поддержки разнообразного количества битов данных, включая 16, 32, 128, 256 и т.д. Аналогичным образом, блоки 222, 224 с плавающей запятой могут быть реализованы для поддержки диапазона операндов различной битовой длины. В одном варианте осуществления блоки 222, 224 с плавающей запятой могут работать с операндами упакованных 128-битовых данных во взаимосвязи с SIMD и мультимедийными командами.
В данном варианте осуществления планировщики 202, 204, 206 микроопераций координируют зависимые операции, прежде чем завершится исполнение порождающей нагрузки. Так как микрооперации планируются и исполняются в процессоре 200 «по предположению» (спекулятивным, интеллектуальным образом), процессор 200 также включает в себя логику для обработки промахов (неудачи обращений) памяти. Если нагрузка данных отсутствует в кэше данных, то в конвейерной обработке могут иметься зависимые текущие операции, которые предоставят планировщику временно некорректные данные. Механизм воспроизведения отслеживает и повторно исполняет команды, которые используют некорректные данные. Необходимо воспроизвести только зависимые операции, а независимые имеют возможность завершения. Поэтому планировщики и механизм воспроизведения в одном варианте осуществления процессора спроектированы для отслеживания последовательностей команд для операций со знаком и абсолютным значением.
Термин «регистры» используется здесь для ссылки на ячейки памяти встроенного процессора (на плате), которые используются в качестве части макрокоманд для идентификации операндов. Иными словами, регистры, упоминаемые здесь, это регистры, «видимые» извне процессора (с точки зрения программиста). Однако регистры в варианте осуществления не должны ограничиваться по своему значению конкретным типом схемы. Напротив, регистр в варианте осуществления должен только иметь возможность сохранять и предоставлять данные и выполнять функции, описанные здесь. Эти регистры могут быть реализованы схемами в процессоре с использованием любого количества различных методов, таких как специализированные физические регистры, динамически распределяемые физические регистры, использующие переименование регистров, комбинации специализированных и динамически распределяемых физических регистров и т.д. В одном варианте осуществления целочисленные регистры сохраняют 32-битовые целочисленные данные. Регистровый файл в одном варианте осуществления также содержит восемь мультимедийных SIMD-регистров для упакованных данных. Для изложенного ниже обсуждения регистры понимаются как регистры данных, предназначенные для хранения упакованных данных, такие как 64-битовые регистры ММХТМ (также называемые в некоторых случаях «mm»-регистрами) в микропроцессорах, реализованных по ММХ (мультимедийное расширение)-технологии, выпускаемых Intel Corporation. Эти ММХ-регистры, доступные как в целочисленной форме, так и в форме регистров с плавающей запятой, могут работать с элементами упакованных данных, которые сопровождают SIMD- и SSE-команды. Аналогичным образом, 128-битовые ХММ (управление расширенной памятью)-регистры, связанные с технологией SSE2, могут также использоваться для поддержки таких операндов упакованных данных. В этом варианте осуществления при сохранении упакованных данных и целочисленных данных для регистров нет необходимости различать эти два типа данных.
В примерах, приведенных на последующих чертежах, описан ряд операндов данных. На фиг.3А иллюстрируются представления различных типов упакованных данных в мультимедийных регистрах в соответствии с одним из вариантов осуществления изобретения. Фиг.3А иллюстрирует типы данных для упакованного байта 310, упакованного слова 320 и упакованного слова двойной длины (dword) 330 для операндов размером 128 битов. Упакованный байтовый формат 310 в этом примере имеет длину 128 битов и содержит шестнадцать упакованных байтовых элементов данных. Байт определен здесь как восемь битов данных. Информация для каждого байтового элемента данных сохранена в битах с бита 7 по бит 0 для байта 0, с бита 15 по бит 8 для байта 1, с бита 23 по бит 16 для байта 2 и, наконец, с бита 120 по бит 127 для байта 15. Таким образом, все имеющиеся биты использованы в данном регистре. Эта конфигурация памяти повышает эффективность хранения для процессора. При доступе к 16 элементам данных одна операция может теперь выполняться над 16 элементами данных параллельным способом.
В принципе, элемент данных является отдельным фрагментом данных, который сохранен в отдельном регистре или в ячейке памяти с другими элементами данных той же самой длины. В упакованных последовательностях данных, относящихся к технологии SSE2, число элементов данных, сохраненных в ХММ-регистре, равно 128 битам, деленным на длину в битах отдельного элемента данных. Аналогичным образом, в упакованных последовательностях данных, относящихся к технологии MMX и SSE, число элементов данных, сохраненных в ММХ-регистре, равно 64 битам, деленным на длину в битах отдельного элемента данных. Хотя типы данных, показанные на фиг.3А, имеют длину 128 битов, в вариантах осуществления настоящего изобретения могут также использоваться операнды размером 64 бита или другого размера. Упакованный формат 320 слова в этом примере имеет размер 128 битов и содержит восемь элементов данных типа упакованного слова. Каждое упакованное слово содержит 16 битов информации. Формат 330 упакованного слова двойной длины по фиг.3А имеет размер 128 битов и содержит четыре элемента данных в виде упакованного слова двойной длины. Каждый элемент данных в виде упакованного словам двойной длины содержит 32 бита информации. Упакованное квадраслово имеет размер 128 битов и содержит два элемента данных в виде упакованного квадраслова.
На фиг.3В иллюстрируются альтернативные регистровые форматы хранения данных. Каждые упакованные данные могут включать более одного независимого элемента данных. Показаны три упакованных формата данных: упакованный половинный 341, упакованный единичный 342 и упакованный двойной 343. В одном варианте осуществления упакованный половинный 341, упакованный единичный 342 и упакованный двойной 343 форматы содержат элементы данных с фиксированной запятой. Для альтернативного варианта осуществления упакованный половинный 341, упакованный единичный 342 и упакованный двойной 343 форматы могут содержать элементы данных с плавающей запятой. Один альтернативный вариант осуществления упакованного половинного 341 формата имеет длину 128 битов и содержит восемь 16-битовых элементов данных. Один вариант осуществления упакованного единичного 342 формата имеет размер 128 битов и содержит четыре 32-битовых элемента данных. Один вариант осуществления упакованного двойного 343 формата имеет размер 128 битов и содержит два 64-битовых элемента данных. Следует иметь в виду, что такие упакованные форматы данных могут быть расширены далее на другие длины регистра, например 96 битов, 160 битов, 192 бита, 224 бита, 256 битов и более.
Фиг.3С иллюстрирует различные представления упакованных типов данных со знаком и без знака в мультимедийных регистрах согласно одному варианту осуществления настоящего изобретения. Представление 344 упакованного байта без знака иллюстрирует хранение упакованного байта без знака в SIMD-регистре. Информация для каждого байтового элемента данных сохранена в битах с бита 7 по бит 0 для байта 0, с бита 15 по бит 8 для байта 1, с бита 23 по бит 17 для байта 2 и, наконец, с бита 120 по бит 127 для байта 15. Таким образом, все имеющиеся биты использованы в данном регистре. Эта конфигурация памяти повышает эффективность хранения для процессора. При доступе к 16 элементам данных одна операция может теперь выполняться над 16 элементами данных параллельным способом. Представление 345 упакованного байта со знаком иллюстрирует хранение упакованного байта со знаком. Заметим, что восьмой бит каждого байтового элемента данных является указателем знака. Представление 346 упакованного слова без знака иллюстрирует, каким образом слова со слова 7 по слово 0 сохранены в SIMD-регистре. Представление 347 упакованного слова со знаком аналогично регистровому представлению 346 упакованного слова без знака. Заметим, что 16-й бит каждого элемента данных размером в слово является указателем знака. Представление 348 упакованного слова двойной длины без знака показывает, каким образом сохраняются элементы данных типа слова двойной длины. Представление 349 упакованного слова двойной длины со знаком подобно регистровому представлению 348 упакованного слова двойной длины без знака. Отметим, что необходимый знаковый бит является битом 32 каждого элемента данных слова двойной длины.
На фиг.3D показан вариант осуществления формата 360 кода операции (opcode), имеющий 32 или более битов, и способы адресации операнда регистра/памяти в соответствии с типом формата кода операции, описанным в работе "IA-32 Intel Architecture Software Developer's Manual Volume 2: Instruction Set Reference", доступной от Intel Corporation (Santa Clara, CA) во всемирной паутине (WWW) по адресу intel.com/design/litcentr. Тип знаковой операции умножения может кодироваться одним или несколькими из полей 361 и 362. Может быть идентифицировано до двух ячеек операндов на команду, до двух включительно идентификаторов 364 и 365 операнда источника. В одном варианте осуществления команды знака, идентификатор 366 операнда адресата является тем же самым, что и идентификатор 364 операнда источника. В альтернативном варианте осуществления идентификатор 366 операнда адресата является тем же самым, что и идентификатор 365 операнда источника. Поэтому для вариантов осуществления знаковой операции умножения один из операндов источника, идентифицируемых идентификаторами 364 и 365 операнда источника, перезаписывается результатами знаковых операций. В одном варианте осуществления знаковой команды идентификаторы 364 и 365 операндов могут быть использованы для идентификации 64-битовых операндов источника и адресата.
На фиг.3Е представлен другой альтернативный формат 370 кода операции, имеющий 40 или более битов. Формат 370 кода операции соответствует формату 360 кода операции и содержит факультативный префиксный байт 378. Тип знаковой операции умножения может кодироваться одним или несколькими из полей 378, 371 и 372. До двух ячеек (местоположений) операндов на команду могут идентифицироваться идентификаторами 374 и 375 операнда источника и префиксным байтом 378. В оном варианте осуществления знаковой команды префиксный байт 378 может использоваться для идентификации 128-битовых операндов источника и адресата. В одном варианте осуществления знаковой команды идентификатор 376 операнда адресата является тем же самым, что и идентификатор 374 операнда источника. В альтернативном варианте осуществления идентификатор 376 операнда адресата является тем же самым, что и идентификатор 375 операнда источника. Поэтому для вариантов осуществления знаковых операций умножения один из операндов источника, идентифицируемых идентификаторами 374 и 375 операнда источника, перезаписывается результатами знаковых операций. Форматы 360 и 370 кода операции обеспечивают адресацию из регистра в регистр, из памяти в регистр, регистра памятью, регистра регистром, регистра непосредственным адресом, из регистра в память, в соответствии с тем, как это определено, частично, полями 363 и 373 MOD и факультативными байтами индекса основания системы счисления и смещения.
Согласно фиг.3F, в некоторых альтернативных вариантах осуществления, 64-битовые арифметические SIMD-операции могут выполняться посредством команды сопроцессорной обработки данных (CDP). Формат 380 кода операции показывает одну такую CDP-команду, имеющую поля 382 и 389 кода операции CDP. Тип CDP-команды в альтернативных вариантах осуществления операций знака или абсолютного значения может кодироваться одним или несколькими полями 383, 384, 387 и 388. Может идентифицироваться до трех ячеек операндов на команду, включая до двух идентификаторов 385 и 390 операндов источника и один идентификатор 386 операнда адресата. Один вариант осуществления сопроцессора может предусматривать операции с 8-, 16-, 32- и 64-битовыми значениями. В одном варианте осуществления операция знака или абсолютного значения выполняется над целочисленными элементами данных. В некоторых вариантах осуществления команда знака или абсолютного значения может выполняться условным образом с использованием поля 381 условия. Для некоторых команд знака или абсолютного значения размер данных источника может кодироваться полем 383. В некоторых вариантах осуществления команды знака или абсолютного значения обнаружение нуля (Z), отрицательного значения (N), переноса (С) и переполнения (V) может быть реализовано в SIMD-полях. Для некоторых команд тип насыщения может кодироваться полем 384.
На фиг.4 представлена блок-схема одного варианта осуществления логики для выполнения знаковой операции над операндами упакованных данных в соответствии с настоящим изобретением. Варианты осуществления настоящего изобретения могут быть реализованы для функционирования с различными типами операндов таких, как описано выше. В одной реализации знаковые операции в соответствии с настоящим изобретением реализуются как набор команд для воздействия на конкретные типы данных. Например, упакованная знаковая байтовая (PSIGNB) команда предназначена для осуществления знаковых операций над типами данных размером слова. Упакованная знаковая команда слова двойной длины (PSIGND) предназначена для выполнения знаковых операций умножения над типами данных размером слова двойной длины. Хотя эти команды имеют различные имена, общая знаковая операция умножения выполняется сходным образом. Для простоты дальнейшее обсуждение и приведенные ниже примеры даны в контексте упакованной знаковой команды (PSIGN) для обработки элементов данных.
Команда PSIGN для знаковой операции умножения в данном варианте осуществления начинается с двух элементов информации: первого операнда данных DATA A 410 и второго операнда данных DATA B 420. Для последующего обсуждения DATA A, DATA B и RESULTANT в общем случае относятся к операндам или блокам данных, но как таковые не ограничиваются указанным и также включают в себя регистры, регистровые файлы и ячейки памяти. В одном варианте осуществления каждая знаковая команда (PSIGNB, PSIGNW, PSIGND) декодируется в одну микрооперацию. В альтернативном варианте осуществления каждая команда может быть декодирована в переменное количество микроопераций для выполнения знаковой операции над операндами данных. Для данного примера операнды 410, 420 являются блоками информации размером 128 битов, сохраненными в регистре/памяти источника, имеющих элементы данных размером в слово. В одном варианте осуществления операнды 410, 420 хранятся в SIMD-регистрах размером 128 битов, таких как 128-битовые SSE2 ММХ-регистры. В одном варианте осуществления RESULTANT 440 также является XMM-регистром данных. Кроме того, RESULTANT 440 может быть тем же самым регистром или ячейкой памяти, что и один из операндов источников. В зависимости от конкретной реализации, операнды и регистры могут быть другой длины, например 32, 64 и 256 битов, и иметь элементы данных размером в байт, слово двойной длины или квадраслово. Хотя элементы данных в этом примере имеют длину слова, тот же самый принцип может быть распространен на элементы данных длиной в байт или слово двойной длины. Если операнды данных имеют размер 64 бита, то ММХ-регистры используются вместо ХММ-регистров.
Первый упакованный операнд 410 в этом примере составлен из набора из восьми элементов данных: А7, А6, А5, А4, А3, А2, А1 и А0. Каждый отдельный элемент данных соответствует позиции элемента данных в результирующем продукте 440. Второй упакованный операнд 420 составлен из другого набора из восьми элементов данных: В7, В6, В5, В4, В3, В2, В1 и В0. Сегменты данных здесь имеют одинаковую длину, и каждый содержит одно слово (16 битов) данных. Однако элементы данных и позиции элементов данных могут обладать другой гранулярностью, отличной от слов. Если бы каждый элемент данных был байтом (8 битов), словом двойной длины (32 бита) или квадрасловом (64 бита), то 128-битовые операнды имели бы элементы данных размером 16 байтов, четыре слова двойной длины или два квадраслова соответственно. Варианты осуществления настоящего изобретения не ограничены операндами или сегментами данных конкретной длины и могут иметь длину, соответствующую конкретной реализации.
Операнды 410, 420 могут находиться либо в регистре, либо в ячейке памяти, или в регистровом файле, или в их комбинации. Операнды 410, 420 данных посылаются в логический блок 430 вычисления со знаком исполнительного блока в процессоре вместе со знаковой командой. К моменту достижения знаковой командой исполнительного блока команда должна быть декодирована ранее в конвейерной обработке процессора. Таким образом, знаковая команда может быть в форме микрооперации (uop) или в некотором другом декодированном формате. Для данного варианта осуществления два операнда 410, 420 данных принимаются логическим блоком 430 вычисления со знаком. Логический блок 430 вычисления со знаком выбирает знаковое значение или signum для каждого элемента данных первого операнда 410, умножает это знаковое значение на значение элемента данных в соответствующей позиции элемента второго операнда 420 и помещает произведение данного умножения в соответствующую позицию результирующего продукта 440. Хотя здесь обсуждается основной принцип операции умножения, возможны другие методы и средства для достижения того же самого желательного результата, заключающегося в умножении, реализуемом путем перемножения. Например, в одном варианте осуществления перемножение может быть выполнено блоком перемножения. В другом варианте осуществления тот же самый результат может быть получен логикой для обработки алгоритма, чтобы сохранять значение неизменным, устанавливать в нуль или изменять знак с '+' на '-' или наоборот.
Эта обработка выделения знака и умножения повторяется для всего набора позиций элементов данных в первом операнде 410. Хотя обработка данных в этом варианте осуществления состоит в извлечении знака и умножении, термин «знаковая операция» или «знаковая операция умножения» может также использоваться здесь в общем случае для ссылки на эту обработку данных. Для одного варианта осуществления элементы данных для всех позиций данных обрабатываются параллельно. В другом варианте осуществления определенная часть позиций элементов данных может обрабатываться вместе в каждый данный момент времени. Здесь результирующий продукт 440 состоит из восьми произведений: B7 x SIGNA7, B6 x SIGNA6, B5 x SIGNA5, B4 x SIGNA4, B3 x SIGNA3, B2 x SIGNA2, B1 x SIGNA1 и B0 x SIGNA0. Для данного варианта осуществления signum или знаковое значение (SIGNX) для элемента данных есть '+1' для положительного ненулевого числа и '-1' для отрицательного ненулевого числа и '0' для нуля. В альтернативном варианте осуществления, где архитектура разрешает использовать '+0' и '-0', оба типа нулей обрабатываются как нуль, причем signum или знаковое значение элемента данных есть '0'.
Фиг.5 иллюстрирует действие знаковой операции умножения на элементы данных в соответствии с возможным вариантом осуществления настоящего изобретения. Знаковая операция в данном примере может возникнуть в логическом блоке 430 вычисления со знаком, показанным на фиг.4. В данном примере знаковая операция 530 описана с элементами данных для одной позиции элемента данных. Первый элемент данных DATA ELEMENT A 510 из первого операнда данных и второй элемент данных DATA ELEMENT B 520 из второго операнда данных сводятся вместе. Каждый элемент данных состоит из значения, имеющего знаковую часть и часть основания числового значения. Например, DATA ELEMENT A 510 интерпретируется как число 512, состоящее из SIGNA и BASEA. Аналогичным образом, DATA ELEMENT B 520 интерпретируется как число 522, состоящее из SIGNВ и BASEВ.
В процессе знаковой операции 530 логика вычисления со знаком берет знаковое значение первого операнда, т.е. SIGNA для DATA ELEMENT A 510, и умножает это знаковое значение на число в DATA ELEMENT B 520. В одном случае логика выполняет соответствующую операцию умножения в ответ на значение SIGNA. Знаковая часть для числа может быть отрицательной '-' или положительной '+'. Часть значения (значимая часть) числа может быть нулевым '0' или ненулевым значением. Для знаковой операции согласно одному варианту осуществления изобретения логика относит первый элемент данных к одной из трех категорий: положительный '+', нулевой '0' или отрицательный '-'. Если первый элемент данных 510 положителен, то значение его знака положительно, тогда результат 540 для данной позиции данных по существу соответствует самому второму элементу данных 520, так как положительный знак интерпретируется как умножение второго элемента данных 520 на SIGNA, равный '+1'. Если первый элемент данных 510 равен нулю, то знаковое значение первого элемента данных игнорируется, так как нуль по существу требует умножения второго элемента данных 520 на SIGNA, равный нулю, что приводит к результату 540, равному нулю. Если первый элемент данных 510 отрицателен, то значение его знака отрицательно, тогда результат 540 для этой позиции данных становится равным продукту умножения второго элемента данных 520 на SIGNA, равный '-1'. Результат 540 знаковой операции, которая осуществляет умножение для заданной позиции элементов данных DATA ELEMENT A 510 и DATA ELEMENT B 520, равен 'SIGNA x DATA ELEMENTB'. В другом варианте осуществления логика может осуществлять умножение знаковых значений SIGNA и SIGNB и применять полученное в результате знаковое значение к BASEB для формирования конечного результата для данной позиции элемента данных.
На фиг.6А представлена блок-схема возможного варианта осуществления схемы 600 для выполнения знаковой операции умножения в соответствии с настоящим изобретением. Схема 600 в данном варианте осуществления содержит структуру мультиплексирования и логику для оценки знакового значения элемента из первого операнда источника и для эффективного вычисления произведения этого знакового значения на соответствующий элемент из второго операнда источника. Схема 600 на фиг.6А для упрощения описания показана для одной позиции элемента данных или среза (вырезки) блока данных результирующего продукта. Кроме того, логика 600, как показано для этой позиции элемента данных, может существовать в множестве экземпляров (реализаций) в одном и том же исполнительном блоке. В зависимости от конкретной реализации, количество схемных элементов экстраполируется, как требуется для желательного числа элементов данных. Например, в случае восьми элементов данных физически может присутствовать достаточное количество мультиплексоров и сумматоров для обработки всех битов восьми элементов данных. Аналогичным образом, может иметься 16 экземпляров (реализаций) схем для обработки двух операндов, каждый из которых имеет 16 элементов данных. В другом варианте осуществления некоторые логические элементы, например сумматор 614, могут совместно использоваться для всех позиций элементов данных. Еще в одном варианте осуществления схемы могут обрабатывать упакованные данные, и данные для множества позиций элементов данных могут обрабатываться логикой совместно.
В данном варианте осуществления часть логики для знаковой операции также совместно используется с другими упакованными операциями, чтобы уменьшить число и избыточность устройств. Схема 600 в этом варианте осуществления получает входные элементы данных от операндов источников и выдает элемент данных результирующего продукта для конкретной позиции элемента данных в операнде упакованных данных результирующего продукта. Хотя на элементы данных источников SRC X 602 и SRC Y 604 здесь даются ссылки как на одиночные элементы данных, понятно, что эти элементы являются частью больших операндов упакованных данных, которые сопровождаются упакованной знаковой командой. В данном варианте осуществления первый элемент данных источника SRC X 602 связан с двухвходовым (2:1) мультиплексором (mux) 606. Сигнал SIGN 602 управляет операцией этого 2:1 мультиплексора. Для данного варианта, если обслуживается знаковая операция, сигнал SIGN 622 обуславливает выдачу мультиплексором 606 результата '0', который подается в качестве второго входного сигнала на мультиплексор 606. Если выполняется операция другого типа, то сигнал SIGN 622 обуславливает выдачу мультиплексором 606 данных SRC X 602.
Второй элемент данных источника SRC Y 604 в этом варианте осуществления подается на другой 2:1 мультиплексор 608 как инвертированная 605 и неинвертированная 604 версии. Если выполняется знаковая операция, сигнал SIGN 622 обуславливает выдачу мультиплексором 608 инвертированных входных данных 605. В этом примере инвертированная версия 605 элемента данных SRC Y может быть использована для осуществления вычитания. Два мультиплексора 606, 608 связаны с сумматором 614. Выходы (выходные сигналы) 610, 612 мультиплексора являются первым и вторым входами (входными сигналами) соответственно сумматора 614. Сумматор 614 предназначен для суммирования его входных сигналов для формирования суммы на выходе 616. В процессе знаковой операции сумматор получает '0' в качестве своего первого входного сигнала 610 и инвертированный элемент данных SRC Y 605 в качестве своего второго входного сигнала 612. Сумматор 614 суммирует инвертированный элемент данных SRC Y 605 и '0' 603. Но инверсия SRC Y 604 в данном варианте осуществления в принципе обуславливает изменение знака элемента данных SRC Y 604 с положительного на отрицательный или с отрицательного на положительный. Таким образом, инвертированный элемент данных SRC Y 605 по существу обуславливает выполнение сумматором 614 математического вычитания элемента данных SRC Y 604 из '0' 603. Выходной сигнал 616 сумматора 614 может быть представлен как сумма '0-SRC Y'.
Биты данных SRC X 602 также подаются на схему 624 детекторов нуля, которая предназначена для обнаружения того, когда значение SRC X 602 равно нулю. Выходной сигнал 626 детекторов нуля, который указывает состояние, когда обнаружено общее нулевое значение, подается в качестве сигнала управления на трехвходовой (3:1) мультиплексор 618 и в качестве входного сигнала на логическую схему 628 «исключающее ИЛИ». Обнаружение нуля в одном варианте осуществления выполняется параллельно с суммированием и не создает новых критичных для времени выполнения ветвей обработки. N знаковых битов 620 элемента данных SRC X 602, причем N равно одному или больше, также подаются на логическую схему 628 «исключающее ИЛИ» и в качестве сигнала управления на 3:1 мультиплексор 618. Логическая схема 628 «исключающее ИЛИ» предназначена для выдачи активного сигнала высокого уровня, если на обоих ее входах имеется активный сигнал низкого уровня. В этом примере выходной сигнал 632 логической схемы «исключающее ИЛИ» будет имеет высокий уровень, если и входной сигнал знаковых битов 620 имеет низкий уровень, указывающий на то, то элемент данных SRC X 602 положителен, и входной сигнал результата детекторов нуля имеет низкий уровень, указывающий на то, что элемент данных SRC X 602 имеет ненулевое значение.
Группа сигналов 634 управления подается на 3:1 мультиплексор 618 для выбора соответствующего значения данных для выдачи в качестве результирующего продукта 630. Значения данных элементов данных SRC X 602, SRC Y 604 и сумма '0-SRC Y' 616 подаются в качестве входных сигналов на 3:1 мультиплексор 618. В данном варианте осуществления сигналы 634 предназначены для обеспечения выбора одного из входных сигналов в соответствии с одной из трех ситуаций. Первый случай возникает, когда первый элемент данных источника SRC X 602 является нулевым. Иными словами, второй элемент данных 604 должен умножаться на нуль. Это условие указано выходным сигналом 626 детекторов нуля. В этой ситуации входной сигнал SRC X 602, который равен в этом случае нулю, выбирается и выдается на выход как результирующий продукт 630. В этом варианте осуществления это нулевое состояние преобладает над другими сигналами 620, 632 управления, и нуль выдается на выходе независимо от знакового значения SRC X 602 и содержимого SRC Y 604.
Второй случай возникает, когда первый элемент данных источника, то есть SRC X 602, положителен и имеет ненулевое значение. Это условие указывается выходным сигналом 632 логической схемы «исключающее ИЛИ». По существу, второй элемент данных 604 должен умножаться на '+1', что дает в результате сам элемент данных SRC Y 604. В этом случае входной сигнал от элемента данных SRC Y 604 выбирается и выдается на выходе в качестве результирующего продукта 630. Третий случай возникает, когда первый элемент данных источника, то есть SRC X 602, отрицателен и имеет ненулевое значение. Эта ситуация указывается N знаковыми битами 620 элемента данных SRC X 602, что обеспечивает выдачу активного значения высокого уровня, если элемент данных SRC X 602 отрицателен, и активного значения низкого уровня, если элемент данных SRC X 602 положителен. В этом случае входной сигнал суммы для '0-SRC Y' 616 выбирается и выдается на выходе в качестве результирующего продукта 630. По существу, отрицательный знак элемента данных SRC X 602 интерпретируется как '-1', и вычисление '0-SRC Y' математически эквивалентно умножению второго элемента данных SRC Y 604 на коэффициент '-1'. Для данного варианта осуществления результирующий продукт для этой и других позиций элементов данных упаковывается вместе в результирующий блок данных, имеющий тот же размер, что и операнды данных источников. Например, если операнды упакованных данных источников имеют размер 64 или 128 битов, то и результирующий упакованный блок данных будет также иметь размер 64 или 128 битов соответственно. Кроме того, операнды данных источников для знаковой операции могут поступать из регистра или ячейки памяти. Для данного варианта осуществления результирующий упакованный блок данных перезаписывает данные в SIMD-регистре для одного из операндов данных источников.
На фиг.6В показана блок-схема другого варианта осуществления схемы 650 для выполнения знаковой операции в соответствии с настоящим изобретением. Хотя структура и соединения схемы отличаются, общая схема и функциональность данного варианта осуществления сходны с соответствующими характеристиками для схемы 600 по фиг.6А. Схема 650 в данном варианте осуществления также включает в себя структуру и логику мультиплексирования для оценки знака первого элемента данных и перемножения этого знака со вторым элементом данных. Эта схема 650 показана и описана ниже в контексте одной позиции элемента данных или среза результирующего упакованного операнда, но устройство и методология могут быть расширены по мере необходимости и применены к операндам различной длины на основе конкретной реализации. Таким образом, схемные элементы по фиг.6В могут дублироваться для обслуживания большего количества элементов данных. Например, если операнды могут включать в себя 16 позиций элементов данных, то схемы по фиг.6В могут быть расширены для поддержки 16 позиций элементов данных.
Схема 650 в данном варианте осуществления получает входные данные в качестве первого элемента данных SRC X 602 от первого упакованного операнда и второго элемента данных SRC Y 604 от второго упакованного операнда. SRC X 602 подается на вход 3:1 мультиплексора 618 и на логическую схему 624 обнаружения нуля. Детектор 624 нуля предназначен для определения того, равен ли нулю элемент данных SRC X 602. SRC Y 604 подается на 3:1 мультиплексор 618, а инвертированная версия 613 (-SRC Y) подается на сумматор 614. Сумматор 614 предназначен для суммирования инвертированного значения SRC Y 613 с другим входным сигналом сумматора, в данном случае '0' 603, для получения суммы в качестве выходного сигнала 616. Путем суммирования инвертированной версии SRC Y 604 сумматор суммирует нуль c отрицательным SRC Y или математически вычитает SRC Y из '0'. Выходной сигнал 616 сумматора 614, равный '0-SRC Y', подается в качестве входного сигнала на 3:1 мультиплексор 618. Значение '0-SRC Y', таким образом, эквивалентно умножению SRC Y 604 на '-1'.
Выходной сигнал 626 схемы 624 детектора нуля подается в качестве сигнала управления на 3:1 мультиплексор 618, а также в качестве входного сигнала на двухвходовую логическую схему 628 «исключающее ИЛИ». Аналогичным образом, N знаковых битов 620 элемента данных SRC X 602 подаются на 3:1 мультиплексор 618 в качестве сигнала управления и в качестве другого входного сигнала на логическую схему 628 «исключающее ИЛИ». Выходной сигнал 632 логической схемы 628 «исключающее ИЛИ» в данном варианте осуществления имеет активный высокий логический уровень, если знаковые биты 620 и выходной сигнал 626 детектора нуля оба имеют высокий логический уровень. Выходной сигнал 632 логический схемы «исключающее ИЛИ» также подается на 3:1 мультиплексор 618 в качестве сигнала управления. Этот набор сигналов управления 634 предназначен для выбора одного из трех входных сигналов 602, 604, 616 мультиплексора для выдачи на выходе в качестве результирующего продукта 630, в зависимости от того, какое из условий имеет место. Три ситуации, как описано выше для фиг.6А, являются следующими: (1) SRC X 602 равен нулю; (2) SRC X 602 имеет положительное и ненулевое значение и (3) SRC X 602 имеет отрицательное и ненулевое значение. Для первого случая выбирается элемент данных SRC X 602, который будет нулевым. Во втором случае выбирается элемент данных SRC Y 604, который равен 'SRC Y x +1'. В третьем случае выбирается '0-SRC Y' 616, который равен 'SRC Y x -1'. Результирующий продукт для каждой позиции элемента данных упаковывается вместе с другими в результирующий операнд данных.
Фиг.7 иллюстрирует действие упакованной знаковой команды на множество элементов данных в соответствии с возможным вариантом осуществления настоящего изобретения. Это пример команды "PSIGNW DATA B, DATA A". Команда RSIGNW заключается в знаковой операции умножения для обработки элементов данных размером в слово в первом операнде упакованных данных источника DATA B 711 и во втором операнде упакованных данных источника DATA A 701. Описание, приведенное ниже, также применимо и к другим упакованным знаковым командам типа PSIGNB и PSIGND. В этом примере знаки из одних данных источника 701 применяются для значений других данных источника 711 путем перемножения для получения произведения, которое скомпоновано в устройство 721 памяти данных адресата. Два операнда источников - DATA A 701 и DATA B 711 содержат в этом примере каждый по восемь упакованных элементов данных, как и результирующий продукт 721. В этом варианте осуществления каждый из используемых элементов данных имеет размер восьми битов или байта. Таким образом, каждый из блоков данных DATA A 701, DATA B 711 и RESULTANT 721 имеет размер 128 битов. Кроме того, эти блоки данных могут находиться в памяти и/или в регистрах. Как показано на фиг.7, блок данных DATA A 701 включает в себя элементы данных со следующими числовыми значениями по основанию 10: '-4270' 702, '240' 703, '-3573' 704, '7033' 705, '-2427' 706, '-9703' 707, '0' 708, '2605' 709. Аналогичным образом, блок данных DATA В 711 включает в себя элементы данных источника со следующими числовыми значениями по основанию 10: '-1120' 712, '6401' 713, '36' 714, '0' 715, '691' 716, '-6780' 717, '-855' 718, '5177' 719. Числа по основанию 10 далее отмечаются нижним индексом 10. Соответственно, знак для каждого элемента данных во втором операнде 701 данных извлекается и умножается на число для каждого элемента данных в соответствующей позиции элемента данных в первом операнде 711 данных. Если число есть '0' для элемента данных во втором операнде 701, '0' также вводится в соответствующую позицию элемента данных результирующего продукта. В одном варианте осуществления обработка знаковой операции умножения для одной или более позиций элементов данных в данных 701, 711 может выполняться параллельно.
Как только знаковое значение для каждого элемента данных во втором операнде 701 оценено, число в соответствующей позиции элемента данных в первом операнде 711 умножается на соответствующий коэффициент. В данном варианте осуществления множимое равно либо '-1', либо '0', либо '+1', в зависимости от знакового значения элемента данных второго операнда. Хотя знаковая операция здесь описана с умножением, действительная операция умножения может физически не потребоваться для достижения того же самого математического результата. Например, нет необходимости осуществлять умножение на '0' для получения произведения, равного '0'. Также нет необходимости физически умножать число на '+1', так как произведение будет равно самому этому числу. Аналогичным образом, умножение числа на '-1' может быть реализовано путем вычитания этого числа из '0'.
Например, крайний левый элемент данных 702 второго операнда 701 имеет значение '-427010', которое является отрицательным числом. В то же время, крайний левый элемент данных 712 первого операнда 711 содержит значение '-112010'. Поскольку знаковое значение элемента данных 702 второго операнда отрицательно, значение '-112010' соответствующего элемента данных первого операнда принципиально умножается на '-1', чтобы получить произведение '112010' в процессе упакованной знаковой операции. Произведение сохраняется в соответствующей позиции 722 элемента данных результирующего продукта 721.
Аналогичным образом, правый крайний элемент 709 данных второго операнда 701 имеет значение '260510', которое является положительным числом. В то же время правый крайний элемент 719 данных первого операнда 711 содержит значение '517710'. Поскольку знаковое значение элемента 709 данных второго операнда положительно, значение '517710' соответствующего элемента 719 данных первого операнда принципиально умножается на '+1' для получения произведения '517710' в процессе упакованной знаковой операции. Произведение сохраняется в крайней правой позиции 729 элемента данных результирующего продукта 721. При условии, что знаковое значение элемента данных 709 второго операнда здесь положительно, действительное умножение не потребовалось бы, так как произведение 729 просто является значением элемента 719 данных первого операнда.
Во втором элементе данных справа во втором операнде 701 значение равно '010'. В тоже время второй элемент данных справа в первом операнде 711 содержит значение '-85510'. Поскольку элемент 708 данных второго операнда равен нулю, значение '-85510' соответствующего элемента 718 данных в принципе умножается на '0' для получения произведения '0' в процессе упакованной знаковой операции. Таким образом, '0' сохраняется во второй позиции 728 элемента данных справа в результирующем продукте 721. Поскольку элемент 708 данных второго операнда имеет нулевое значение, умножение не является необходимым для получения произведения, имеющего значение '0'. Аналогичным образом, нулевое значение в элементе данных второго операнда определяется в этом варианте осуществления как обуславливающее '0' в позиции результирующего продукта, независимо от какого-либо знакового значения, которое может существовать для элемента данных второго операнда.
На фиг.8А представлена блок-схема 800 последовательности операций, иллюстрирующая возможный вариант осуществления способа выполнения знаковой операции. Значение L длины используется здесь для представления размера операндов и блоков данных. В зависимости от конкретного варианта осуществления, L может использоваться для обозначения размера в терминах числа битов, байтов, слов и т.д. Аналогичным образом, через М обозначается число элементов или сегментов данных, упакованных в операнде. В блоке 810 принимается первый операнд В данных длиной L, имеющий М элементов. Второй операнд А длиной L, также имеющий М элементов, принимается в блоке 820. В данном варианте осуществления операнды источников и результирующий продукт имеют одинаковую длину и имеют одно и то же число элементов данных. В блоке 830 обрабатывается команда для выполнения знаковой операции умножения.
Особенности знаковой операции в блоке 830 в данном варианте осуществления далее описываются в терминах того, что происходит для каждой позиции элемента данных. В одном варианте осуществления знаковая операция для всех позиций элементов данных упакованного результирующего продукта обрабатывается параллельно. В другом варианте осуществления в каждый данный момент времени может обрабатываться определенная часть элементов данных. В блоке 831 осуществляется проверка для определения того, является ли значение для элемента из операнда А данных отрицательным (меньшим, чем нуль). Если определено, что это значение отрицательно, то результирующее значение для данной конкретной позиции элемента данных вычисляется в блоке 832 как произведение значения для элемента из операнда В данных, умноженное на '-1'. Если в блоке 831 определено, что значение для элемента из операнда А не является отрицательным, то в блоке 833 осуществляется определение того, не является ли значение для этого элемента из операнда А равным нулю. Если значение определено как равное нулю, результирующее значение для данной позиции элемента данных в блоке 834 устанавливается в '0'. Но если в блоке 833 определено, что значение для элемента из операнда А не равно нулю, то в блоке 835 осуществляется еще одно определение того, является ли значение для этого элемента операнда А положительным (большим, чем 0). Если значение для этого элемента операнда А является положительным, то в блоке 836 вычисляется результирующее значение для данной конкретной позиции элемента данных как произведение значения для элемента данных операнда В на '+1'. Если в блоке 835 в данном варианте осуществления определено, что значение элемента операнда А не является положительным, то в блоке 837 значение определяется как неопределенное, так как ни одна из трех ситуаций (положительное, '0', отрицательное) не применимо. Эти результирующие значения для этих различных элементов данных упорядочиваются в соответствующие позиции элементов данных соответственно парам элементов источников в результирующем упакованном операнде.
На фиг.8В показана блок-схема 850, иллюстрирующая другой вариант осуществления способа выполнения знаковой операции. Последовательность операций в способе в блоках 810 и 820 для данного варианта сходна с той, которая описана выше со ссылкой на фиг.8А. В данном примере методология для блока 830 в выполнении знаковой операции умножения несколько отличается. Детали знаковой операции в блоке 830 в данном варианте осуществления также описаны ниже в терминах того, что происходит для каждой позиции элемента данных. В блоке 840 определяется, равен ли нулю элемент операнда А данных. Если определение истинно и значение равно нулю, то в блоке 841 в качестве результирующего значения для этой позиции элемента данных вводится '0'. Но если определено, что элемент данных операнда А для данной позиции является ненулевым значением, то на этапе 842 вычисляется результирующее значение для этой позиции элемента данных как произведение значения для элемента данных операнда В на знак элемента данных операнда А. Как и в случае фиг.8А, результирующее значение для каждой из позиций элемента данных упорядочивается в соответствующем месте в упакованном блоке данных результирующего продукта.
На фиг.9 показана блок-схема возможного варианта осуществления логики для выполнения операции абсолютного значения над операндом упакованных данных. В одном варианте осуществления операции абсолютного значения в соответствии с настоящим изобретением реализуются как упакованная операция абсолютного значения (PABS) для действия на типы данных различных размеров. Для простоты эта команда PABS описана здесь в общих терминах как упакованный операнд, имеющий восемь элементов данных. Эти элементы данных могут быть байтами, словами, словами двойной длины и т.д., в зависимости от конкретной реализации. В этом примере упакованная операция абсолютного значения вызывается кодовой строкой, подобной "PABS SRC1", где SRC1 указывает на SIMD-регистр или ячейку памяти. В этом случае SRC1 является как источником данных, так и адресатом результата. В одном варианте осуществления формат команды требует двух операндов, и упомянутая строка будет иметь вид: "PABS SRC1, SRC2". В этом случае команда PABS обуславливает помещение абсолютного значения в элементах данных SRC2 в SRC1. Кроме того, в одном варианте осуществления предусматривается упакованная команда абсолютного значения байтов (PABSB) для генерации абсолютных значений типов данных размером байта; предусматривается упакованная команда абсолютного значения слов (PABSW) для генерации абсолютных значений типов данных размером слова и предусматривается упакованная команда абсолютного значения слов двойной длины (PABSD) для генерации абсолютных значений типов данных размером слова двойной длины.
Команда PABS для операции абсолютного значения в этом варианте осуществления начинается с первого операнда данных SOURCE DATA 910, имеющего восемь элементов данных: А7, А6, А5, А4, А3, А2, А1 и А0. Каждый отдельный элемент данных соответствует позиции элемента данных в результирующем продукте 930. Операнд 910 данных подается на логический блок 920 вычисления абсолютного значения вместе с командой абсолютного значения. Логический блок 920 вычисления абсолютного значения модифицирует значение в каждом элементе данных источника таким образом, что числовое значение в соответствующем элементе данных в результирующем продукте 930 будет иметь абсолютное значение без знака того числа элемента данных источника. Например, позиция крайнего левого элемента результирующего элемента имеет абсолютное значение без знака числа элемента А7 источника. Эта обработка абсолютного значения повторяется для всего набора позиций элементов данных в операнде 910 источника. В данном варианте осуществления ячейка результирующего продукта может быть той же самой, что и ячейка операнда источника. В альтернативном варианте осуществления, где два операнда определены с командой PABS, один операнд может определять источник, а другой может определять адресат.
В обработке изображений часто реализуется сжатие. Видеокадры обычно сжимаются в блоки пикселов (элементов изображения). Сжатое в высокой степени видео может иметь артефакты блокирования (объединения данных в блоки), обусловленные операцией квантования. Во многих алгоритмах кодирования один из типов ухудшения (качества) изображения, который возникает при более низких скоростях следования битов, определяется как эффект блокирования. Этот эффект вызван ненатуральным способом разделения изображений на прямоугольные блоки с помощью фиксированной сетки в процессе обработки изображения. Поскольку кодирование каждого блока выполняется независимо, то ничто не гарантирует непрерывности значений кодированного изображения на границе между блоками. Квантование коэффициента постоянной составляющей дискретного косинусного преобразования может добавить сдвиг к блоку или вычесть его из блока, приводя к тому, что данный блок становится ярче или темнее, чем соседние блоки, и создавая видимость линий вдоль границ блоков. Это иногда может привести к заметным краевым артефактам и к артефактам блокирования (объединения данных в блоки) в кодированном изображении. В последовательностях изображений фоновая сетка неподвижных краев, наблюдающаяся относительно движущейся картины, может привести к весьма ненатуральному и неприятному ухудшению качества изображения. Чтобы воспрепятствовать появлению этих эффектов блокирования, схема деблокирования может использовать фильтры для сглаживания этих краевых артефактов. Такие артефакты могут быть сделаны менее заметными с помощью алгоритма деблокирования (распаковки блоков), который сглаживает границы между блоками. Однако алгоритм не должен сглаживать скачок между блоками, если вдоль границы блока имеется истинный край в изображении. В общем случае скачок между соседними блоками рассматривается как истинный край, если размер краевого скачка больше, чем размер скачка, который был бы создан вследствие квантования. Аналогичным образом, могут использоваться и другие алгоритмы для сопряжения поверхностей вдоль блока.
Некоторые из алгоритмов деблокирования (распаковки блоков) для методов H.263 и MPEG4 сжатия видеоизображения используют знаковую (signum) операцию и операцию абсолютного значения. В этих алгоритмах деблокирования функция знака вычисляет знак коэффициента коррекции. Операция абсолютного значения используется для определения величины коэффициента коррекции и сравнения отклонений в видеоизображении с предварительно определенным порогом. Варианты осуществления команд SIMD, подобные PSIGN и PABS, как описано выше, могут быть использованы совместно в алгоритмах деблокирования для H.263 и MPEG4. Знаковая операция связана с оценкой знакового значения для данных и обеспечивает указание такого знакового значения. Например, знаковая (signum) операция над элементом данных даст результат '0', если элемент данных является нулем, '-1', если элемент данных отрицателен, и '+1', если элемент данных положителен. В одном варианте осуществления команда PSIGN в соответствии с настоящим изобретением может быть использована для обеспечения функциональных возможностей определения знака.
Один подход к деблокированию (распаковке блоков) путем нелинейной фильтрации использует трехэтапный метод нелинейной фильтрации. Во-первых, описывается граница блока, во-вторых, используются результаты первого этапа для вычисления коэффициентов корректировки значений пикселов вдоль границы блока. И в-третьих, значения пикселов вдоль границы корректируются путем добавления или вычитания коэффициентов, вычисленных на втором этапе. Ниже приведена реализация примера алгоритма деблокирования Н.263. А и В являются пикселами с одной стороны границы блока. А 1012 представляет собой массив пикселов на расстоянии в один пиксел от границы блока. В 1014 представляет собой массив пикселов вдоль границы блока. С и D являются пикселами с одной стороны границы. С 1022 представляет собой массив вдоль границы блока по другую сторону границы относительно массива В. D 1024 является массивом пикселов на расстоянии в один пиксел от границы блока в том же самом блоке 1020, что и массив С 1022. Чтобы уменьшить артефакт непрерывности вследствие квантования между блоком Х 1010 и блоком Y 1020, но сохранить реальный край изображения, выполняется деблокирование (распаковка блока). Результаты деблокирования обозначены как A', B', C' и D'.
Фиг.10 иллюстрирует операцию алгоритма деблокирования с использованием SIMD-команд в соответствии с настоящим изобретением. На фиг.10 показаны два блока данных 1010 и 1020. В данном примере блоки содержат данные для изображения или поток видеоданных. Каждый блок состоит из множества строк и столбцов элементов данных. Например, блок в некоторых алгоритмах обработки изображений представляет собой блок данных размером 8х8. Здесь на иллюстрации рассматривается граница блоков между блоком BLOCK X 1010 и блоком BLOCK Y 1020. Для BLOCK X 1010 показаны нижние две строки 1012 и 1014 данных. Для BLOCK Y 1020 показаны верхние две строки 1022 и 1024 данных. Каждая строка данных состоит из элементов данных, пронумерованных от 7 до 0.
SIMD-регистры загружаются данными пикселов для массивов А 1012, В1014, С 1022 и D 1024. Сначала описывается граница блоков. Определяется размер и направление скачка через границу блоков. Это может быть представлено следующим уравнением:
d=(A - 4B + 4C - D)/8
Затем вычисляется коэффициент коррекции для массивов В 1014 и С 1022 с помощью нарастающей-убывающей пилообразной функции:
d1=SIGN(d)x(MAX(0,ABS(d)-MAX(0,2x(ABS(d)-strength))))
Коэффициент коррекции для массивов А 1012 и D 1024 вычисляется следующим образом:
d2= clipd1((A-D)/4,d1/2)
Здесь операции абсолютного значения (ABS), максимального значения (MAX) и отсечения (clip) по границам области используются для вычисления величины коэффициентов d1 и d2 коррекции пикселов. Знаковая операция также использует коэффициент d из первого этапа для вычисления знака коэффициента d1 коррекции. Коэффициенты d1 и d2 коррекции либо суммируются со значениями пикселов, либо вычитаются из них. Граничные пикселы для массивов В 1014 и С 1022 корректируются следующим образом:
B'=clip(B+d1) и C'=clip(C-d1)
Пикселы для массивов А 1012 и D 1024 затем корректируются следующим образом:
A'=A-d2; D'=D+d2. Вычисление d1 является функцией, определяемой как нарастающая-убывающая пилообразная функция. Пиковое значение соответствует тому, когда d равно 'strength' (интенсивность, степень, сила), и это значение доходит до нуля, когда d равно '2 x strength'. Значение 'strength' определяется размером шага квантования. В общем случае параметр 'strength' равен примерно половине размера шага. Функция 'clipd1()' ограничивает результат '(A-D)/4' до + или - абсолютного значения 'd1/2'. Функция 'clip()' ограничивает оцененный результат до значения '0' или '255'. Варианты осуществления этого алгоритма могут быть реализованы с использованием SIMD-команд. Для данного варианта осуществления знаковая операция может быть реализована с использованием команд PSIGNB или PSIGNW. Аналогичным образом, операция абсолютного значения может быть реализована с использованием команд PABSB или PABSW. В этом варианте осуществления в отдельные SIMD-регистры загружается множество пиксельных значений для массивов А, В, С и D. В одном варианте осуществления операции деблокирования применяются более чем к одному столбцу пикселов в каждый данный момент времени или параллельно. Множество промежуточных значений d1 и d2 вычисляются в отдельных SIMD-регистрах с использованием знаковых команд, команд абсолютного значения и максимума. Результаты A', B', C' и D' вычисляются в отдельных SIMD-регистрах. Вычисления для операций отсечения (ограничения) могут осуществляться с использованием SIMD-команд максимума и минимума.
Функциональность знаковой команды, как описано выше, в данном варианте осуществления используется в алгоритме деблокирования путем нелинейной фильтрации. Варианты осуществления этого алгоритма деблокирования могут быть реализованы с методами кодирования, подобными соответствующим алгоритмам стандартов H.263 или MPEG4, для устранения артефактов блокирования, обусловленных операцией квантования этих двух общепринятых методов сжатия видеоизображений. За счет использования знаковой команды умножения в алгоритме деблокирования варианты осуществления предложенной схемы могут повысить скорость вычислений для этих алгоритмов кодирования и уменьшить размер кода. Например, одна команда PSIGN может заменить множество арифметических команд, которые требовались для выполнения подобной обработки данных, или команд, которые не могли работать с упакованными данными. Таким образом, может быть повышена пропускная способность в целом, и освобождены ресурсы обработки.
В одном варианте осуществления алгоритма деблокирования знаковая команда и команда абсолютного значения не проявляют свойства насыщения. Это означает, что для упакованной команды абсолютного значения N-битовые данные со значением -2n-1 будут оценены как 2n-1. В случае упакованной знаковой команды N-битовые данные с первым элементом источника, равным -2n-1, и отрицательный второй элемент источника будут оценены как 2n-1. В некоторых случаях необходимы знаковые результаты, так что не разрешаются положительные значения больше, чем 2n-1-1. Одно решение состоит в обеспечении того, чтобы максимальное отрицательное и положительное значения имели одинаковую величину перед выполнением команд PABS или PSIGN. Знаковые операции и операции абсолютного значения в одном варианте осуществления могут быть также применены к алгоритму деблокирования стандарта MPEG4, как описано ниже. Десять пикселов, по пять с каждой стороны от границы блоков, представляются следующим образом: V0 V1 V2 V3 V4|V5 V6 V7 V8 V9. Символ '|' обозначает границу блоков. Сначала описывается граница блоков:
Отсчет=ϕ(V0-V1)+ϕ(V1-V2)+ϕ(V2-V3)+ϕ(V3-V4)+ϕ(V4-5)+ϕ(V5-V6)+ϕ(V6-V7)+ϕ(V7-V8)+ϕ(V8-V9),
где ϕ(γ)=1, если ABS(γ)<= ПОРОГ1, в противном случае ϕ(γ) =0.
Если отсчет больше или равен значению ПОРОГ2, то используется режим DC, в противном случае используется режим, установленный по умолчанию.
Граница блоков описывается также в режиме DC:
Макс.значение = MAX(V1,V2,V3,V4,V5,V6,V7,V8);
Мин.значение = MIN(V1,V2,V3,V4,V5,V6,V7,V8).
Если величина ABS(макс.знач.-мин.знач)< 2 x коэффициент квантования, то осуществляются связанные с DC этапы корректировки, в противном случае корректировка не осуществляется. Для режима, установленного по умолчанию, коэффициент корректировки вычисляется следующим образом:
a3,0=(2 x V3 - 5 x V4 + 5 x V5 - 2 x V6)/8
a3,1=(2 x V1 - 5 x V2 + 5 x V3 - 2 x V4)/8
a3,2=(2 x V5 - 5 x V6 + 5 x V7 - 2 x V8)/8
a3,0'=SIGN(a3,0) x MIN(ABS(a3,0),ABS(a3,1),ABS(a3,2));
d=CLIP(5 x (a3,0'- a3,0)/8,0,((V4 -V5)/2) x δ(ABS(a3,0)<
коэффициента квантования))
где δ() оценивается как 1, если истинно, и как 0, если ложно.
Затем корректируются граничные пикселы. Функция CLIP(r,p,q) ограничивает r между p и q. Для режима DC коэффициент корректировки вычисляется следующим образом:
если m<1, то, если ABS(V1-V0)<QP, pm=V0, иначе pm=V1;
если 1<=m<=8, то pm=Vm;
если m>8, то, если ABS(V8-V9)< коэффициента квантования, pm=V9, иначе pm=V8.
На фиг.11 представлена блок-схема 1100, иллюстрирующая вариант осуществления способа выполнения алгоритма деблокирования с использованием SIMD-команд. Например, такой алгоритм деблокирования может быть реализован с кодом для методов сжатия стандартов H.263 и MPEG4. В блоке 1102 принимаются пиксельные данные для первого блока и второго блока. Граница блоков между двумя блоками описывается в блоке 1140. Один или более коэффициентов корректировки вычисляются относительно упакованных пиксельных данных в блоке 1106 путем использования команд для упакованных знаковых операций умножения и упакованных операций абсолютного значения. Использование команд PSIGN и/или PABS при вычислении коэффициентов корректировки для алгоритма деблокирования может снизить число требуемых не-SIMD-команд и увеличить эффективность ресурсов обработки. Например, один вариант осуществления последовательности деблокирования для алгоритмов обработки изображений в соответствии с настоящим изобретением использует операцию PSIGN для определения знака коэффициента корректировки, а операция PABS используется для вычисления величины коэффициента корректировки. В блоке 1108 граничные пикселы для первого блока и второго блока корректируются с помощью одного или более коэффициентов корректировки, которые были вычислены с использованием знаковой операции умножения или операции абсолютного значения.
Таким образом, раскрыты способ, устройство и команда для выполнения знаковой операции умножения. Хотя были описаны и показаны на чертежах определенные приведенные для примера варианты осуществления, следует иметь в виду, что такие варианты осуществления являются только иллюстративными, но не ограничивающими объем изобретения, и что данное изобретение не должно ограничиваться конкретными показанными и описанными структурами и конфигурациями, поскольку различные другие модификации могут быть очевидны для специалистов в данной области техники на основе данного раскрытия. В области техники, подобной рассматриваемой, развитие которой осуществляется с высокой скоростью и последующие усовершенствования не просто спрогнозировать, раскрытые варианты осуществления могут легко модифицироваться по форме и в деталях, как это обеспечивается технологическими достижениями, без отклонения от принципов настоящего раскрытия или в объеме пунктов формулы изобретения.
Заявленное изобретение относится к области устройств обработки и соответствующего программного обеспечения и программных последовательностей, которые выполняют математические операции. Техническим результатом является уменьшение количества команд, требуемых для реализации знаковой обработки, повышение скорости вычисления алгоритмов кодирования, повышение пропускной способности и освобождение ресурсов обработки. Указанный результат достигается за счет того, что устройство содержит ячейку памяти и исполнительные ресурсы, предназначенные для исполнения команды над первым операндом и сохранения результата, имеющего значение первого операнда для всех значений соответствующего второго операнда, больших нуля, нуля, если значение соответствующего второго операнда равно нулю, отрицательной версии первого операнда для всех значений соответствующего второго операнда, меньших нуля. 8 н. и 38 з.п. ф-лы, 11 ил.
СОЛОВЬЕВ Г.Н | |||
Арифметические устройства ЭВМ | |||
М.: Энергия, 1978, с.37-38, 48-49, 108-110 | |||
УСТРОЙСТВО ДЛЯ ВЫПОЛНЕНИЯ ОПЕРАЦИЙ УМНОЖЕНИЯ-СЛОЖЕНИЯ С УПАКОВАННЫМИ ДАННЫМИ | 1996 |
|
RU2139564C1 |
Устройство для умножения | 1985 |
|
SU1309020A1 |
US 4771379 A, 13.09.1998. |
Авторы
Даты
2006-04-27—Публикация
2003-12-25—Подача