ПРОЦЕССОРЫ, СПОСОБЫ, СИСТЕМЫ И КОМАНДЫ С ПРЕДИКАЦИЕЙ ЭЛЕМЕНТОВ УПАКОВАННЫХ ДАННЫХ
PROCESSORS, METHODS, SYSTEMS AND COMMANDS WITH PACKED DATA ELEMENTS PREDICATION

Область техники, к которой относится изобретение
Описываемые здесь варианты воплощения изобретения, в общем, относятся к процессорам. В частности, описываемые здесь варианты воплощения изобретения, в общем, относятся к процессорам, которые способны обрабатывать упакованные данные.
Уровень техники
Многие процессоры имеют архитектуры с одним потоком команд и многими потоками данных (SIMD-архитектуры). В SIMD-архитектурах, вместо скалярной команды, оперирующей только одним элементом данных или парой элементов данных, команда обработки упакованных данных (данных в упакованном формате), векторная команда или SIMD-команда могут оперировать множественными элементами данных или множественными парами элементов данных одновременно (например, параллельно). Процессор может иметь аппаратное обеспечение для параллельного исполнения, отвечающее на команду обработки упакованных данных таким образом, что одновременно (например, параллельно) выполняет множественные операции над множественными элементами данных.
В SIMD-архитектурах множественные элементы данных могут быть упакованы в пределах одного регистра или ячейки памяти как упакованные данные или векторные данные. В упакованных данных разряды (здесь и далее имеются в виду двоичные разряды) регистра или другого места хранения информации могут быть логически разделены на последовательность множественных элементов данных. Каждый из элементов данных может представлять индивидуальную порцию данных, которая хранится в регистре или другом месте хранения информации вместе с другими элементами данных, обычно имеющих одинаковый размер. Например, регистр с разрядностью в 128 разрядов может иметь два элемента упакованных данных с разрядностью в 64 разряда, четыре элемента упакованных данных с разрядностью в 32 разрядов, восемь элементов упакованных данных с разрядностью в 16 разрядов или шестнадцать элементов упакованных данных с разрядностью в 8 разрядов. Каждый из элементов упакованных данных обычно представляет отдельную индивидуальную порцию данных (например, цвет пикселя, координату на графическом изображении и так далее), над которой можно выполнять операции отдельно от других.
Характерно, что один тип команды обработки упакованных данных, векторной команды, или SIMD-команды (например, команда сложения упакованных данных) может определять то, чтобы одна операция над упакованными данными (например, суммирование) выполнялась над всеми соответствующими парами элементов данных из двух исходных операндов с упакованными данными вертикальным образом для того, чтобы сгенерировать результирующие упакованные данные или упакованные данные-адресат. Исходные операнды с упакованными данными могут иметь один и тот же размер, могут содержать элементы данных одно и той же разрядности и, таким образом, могут каждый содержать одно и то же количество элементов данных. Исходные элементы данных в позициях одинаковых разрядов в двух исходных операндах с упакованными данными могут представлять пары соответствующих элементов данных. Операция над упакованными данными может быть выполнена отдельно или, по существу, независимо над каждой из этих пар соответствующих исходных элементов данных для того, чтобы сгенерировать соответствующее количество результирующих элементов данных, и, таким образом, каждая пара соответствующих исходных элементов данных может иметь соответствующий результирующий элемент данных. Как правило, результирующие элементы данных для такого рода команды располагаются в том же самом порядке, и они часто имеют тот же самый размер.
В дополнение к этому приводимому в качестве примера типу команды обработки упакованных данных, имеется многообразие других типов команд обработки упакованных данных. Например, имеются команды, которые имеют только один исходный операнд с упакованными данными. Например, команда сдвига упакованных данных может независимо сдвигать каждый элемент данных из единственных исходных упакованных данных для того, чтобы произвести результирующие упакованные данные. Другие команды обработки упакованных данных могут оперировать больше чем двумя исходными операндами упакованных данных. Помимо этого, другие команды обработки упакованных данных могут оперировать горизонтальным образом элементами данных в пределах одного и того же операнда с упакованными данными, а не вертикальным образом (например, соответствующими элементами данных между из двух исходных операндов упакованных данных). Кроме того, другие команды обработки упакованных данных могут генерировать результирующий операнд упакованных данных другого размера, имеющий элементы данных другого размера и/или имеющий другой порядок элементов данных.
Краткое описание чертежей
Изобретение можно лучше всего понять, обратившись к нижеследующему описанию и прилагаемым к нему чертежам, которые используются для того, чтобы проиллюстрировать варианты воплощения изобретения.
На чертежах:
фиг. 1 представляет собой блок-схему одного варианта воплощения процессора;
фиг. 2 представляет собой блок-схему другого варианта воплощения процессора;
фиг. 3 представляет собой блок-схему приводимого в качестве примера варианта воплощения  операции над упакованными данными, выполняемой со слиянием;
фиг. 4 представляет собой блок-схему приводимого в качестве примера варианта воплощения  операции над упакованными данными, выполняемой с обнулением;
фиг. 5 представляет собой блок-схему алгоритма одного варианта воплощения способа обработки одного варианта воплощения  команды обработки упакованных данных;
фиг. 6 представляет собой таблицу, на которой проиллюстрировано то, что количество разрядов маски операции над упакованными данными зависит от разрядности упакованных данных и разрядности элемента упакованных данных;
фиг. 7 представляет собой блок-схему приводимого в качестве примера варианта воплощения подходящего набора регистров маски операции над упакованными данными.
фиг. 8 представляет собой схему, на которой проиллюстрирован вариант воплощения регистра маски операции над упакованными данными и показано, что количество разрядов маски операции над упакованными данными зависит от разрядности упакованных данных и разрядности элемента данных;
фиг. 9 представляет собой блок-схему, на которой проиллюстрирован вариант воплощения изобретения, в котором один и тот же физический регистр может логически рассматриваться и/или служить объектом доступа либо в качестве регистра упакованных данных, либо в качестве регистра маски операции над упакованными данными;
фиг. 10 представляет собой блок-схему, на которой проиллюстрирован вариант воплощения изобретения, в котором один и тот же физический регистр может логически рассматриваться и/или служить объектом доступа либо в качестве регистра упакованных данных, либо в качестве регистра масок операций над упакованными данными, хранящего множественные маски операций над упакованными данными;
фиг. 11 представляет собой блок-схему, на которой проиллюстрирован вариант воплощения изобретения, в котором разряды маски операции над упакованными данными распределены между элементами данных в упакованных данных;
фиг. 12 представляет собой блок-схему, на которой проиллюстрирован вариант воплощения изобретения, в котором набор регистров, имеющих разряды маски операции над упакованными данными, распределенные по элементам данных в упакованных данных, может рассматриваться или может служить объектом доступа, на различных представлениях, в качестве хранящего две или более малых масок или единственную большую маску;
фиг. 13А представляет собой блок-схему, на которой проиллюстрированы как приводимый в качестве примера конвейер без переупорядочения последовательности команд, так и приводимый в качестве примера конвейер с переименованием регистров, переупорядочиванием последовательности выдачи/исполнения команд, соответствующие вариантам воплощения изобретения;
фиг. 13В представляет собой блок-схему, на которой проиллюстрированы как приводимый в качестве примера вариант воплощения ядра, имеющего архитектуру без переупорядочения последовательности команд, так и приводимое в качестве примера ядро, имеющее архитектуру с переименованием регистров, переупорядочиванием последовательности выдачи/исполнения команд, подлежащие включению в состав процессора, соответствующего вариантам воплощения изобретения;
фиг. 14А представляет собой блок-схему одиночного ядра процессора наряду с его соединением с расположенной на кристалле сетью межсоединений и с его локальным подмножеством кэша уровня 2 (L 2), соответствующих вариантам воплощения изобретения;
фиг. 14В представляет собой расширенное представление части ядра процессора, показанного на фиг. 14А, соответствующего вариантам воплощения изобретения;
фиг. 15 представляет собой блок-схему процессора, который может иметь больше чем одно ядро, может иметь интегрированный контроллер памяти и может иметь интегрированные графические средства, соответствующего вариантам воплощения изобретения;
на фиг. 16 показана блок-схема системы в соответствии с одним вариантом воплощения настоящего изобретения;
на фиг. 17 показана блок-схема первой более конкретной системы, приводимой в качестве примера, в соответствии с одним вариантом воплощения настоящего изобретения;
на фиг. 18 показана блок-схема второй более конкретной системы, приводимой в качестве примера, в соответствии с одним вариантом воплощения настоящего изобретения;
на фиг. 19 показана блок-схема внутрикристальной системы (SoC) в соответствии с одним вариантом воплощения настоящего изобретения;
фиг. 20 представляет собой блок-схему, на которой сравнивается использование конвертора команд, реализованного программными средствами, для того, чтобы конвертировать двоичные команды в некотором исходном наборе команд в двоичные команды в некотором заданном наборе команд в соответствии с вариантами воплощения изобретения.
Подробное описание вариантов воплощения изобретения
Здесь раскрываются подходы к операциям с предикатами или масками, выполняемым над элементами упакованных данных. В нижеследующем описании, излагаются многочисленные конкретные подробности (например, конкретные способы реализации маски, конкретные длины масок, форматы данных, конфигурации процессора, микроархитектурные подробности, последовательности операций и так далее). Однако, варианты воплощения изобретения могут быть осуществлены на практике без этих конкретных подробностей. В других случаях, хорошо известные схемы, конструкции и технологии не показаны подробно во избежание затруднения понимания этого описания.
Фиг. 1 представляет собой блок-схему одного варианта воплощения процессора (100). Этот процессор представляет аппарат для обработки команд, который может быть приведен в действие для обработки команд. В некоторых вариантах воплощения изобретения, этот процессор может представлять собой универсальный процессор (например, универсальный микропроцессор, относящийся к типу, часто используемому в качестве центрального процессора (CPU) в настольном компьютере, переносном компьютере и подобных им компьютерах). В качестве альтернативы, этот процессор может представлять собой процессор специального назначения. Примеры подходящих процессоров специального назначения включают в себя: сетевые процессоры, процессоры передачи данных, криптографические процессоры, графические процессоры, сопроцессоры, встроенные процессоры, процессоры цифровой обработки сигналов (DSP-процессоры) и контроллеры (например, микроконтроллеры), в качестве лишь нескольких примеров, но не ограничены ими. Процессор может представлять собой любой процессор из числа: разнообразных процессоров для вычислений со сложным набором команд (CISC-процессоров), разнообразных процессоров для вычислений с сокращенным набором команд (RISC-процессоров), разнообразных процессоров с командными словами сверхбольшой длины (VLIW-процессоров), разнообразных гибридов этих процессоров или других типов процессоров без каких бы то ни было исключений. В некоторых вариантах воплощения изобретения, процессор может представить RISC-процессор, который способен использовать предикацию или  для операций над упакованными данными.
Процессор имеет набор (102) команд. Команды этого набора команд представляют макрокоманды, команды на языке ассемблера или команду машинного уровня, которые предоставляются процессору для исполнения, в противоположность микрокомандам, микрооперациям или другим командам и управляющим сигналам, декодируемым или конвертируемым из команд набора команд. В некоторых вариантах воплощения изобретения (например, как в случае некоторых RISC-процессоров), команды могут иметь, по существу, постоянную длину команды (например, все или, по меньшей мере, большинство команд могут иметь 32 разряда или некоторую другую длину), в противоположность случаю, когда они имеют переменную длину команды.
Как показано на фиг. 1, в некоторых вариантах воплощения изобретения, набор команд может, в качестве возможного варианта, включать в себя одну или более  команд (106) обработки упакованных данных для одной или более заданных  операций над упакованными данными. Как показано на фигуре, набор команд также включает в себя одну или более  команд (104) обработки упакованных данных для одной или более заданных  операций над упакованными данными. Несколько иллюстративных примеров соответствующих  и  команд/операций обработки упакованных данных включают в себя:  и  команды/операции сложения упакованных данных,  и  команды/операции вычитания упакованных данных,  и  команды/операции умножения упакованных данных,  и  команды/операции сдвига упакованных данных,  и  команды/операции циклического сдвига упакованных данных,  и  команды/операции сравнения упакованных данных,  и  команды/операции логического "ИЛИ" в отношении упакованных данных,  и  команды/операции логического "И" в отношении упакованных данных,  и  команды/операции нахождения обратной величины упакованных данных,  и  команды/операции усреднения упакованных данных и другие  и  арифметические и/или логические команды/операции обработки упакованных данных, известные в данной области техники, но не ограничиваются ими.
Процессор также включает в себя набор регистров (108) упакованных данных. Регистры упакованных данных, в общем, представляют находящиеся на процессоре и/или на кристалле места хранения информации, каждое из которых способно функционировать таким образом, чтобы хранит упакованные данные, векторные данные или данных для архитектуры с одним потоком команд и многими потоками данных (SIMD-данных). Регистры упакованных данных могут представлять регистры, которые являются видимыми для программного обеспечения и/или программиста, и/или регистры, которые специфицируются командами из набора команд для идентификации операндов (например, исходных операндов и операндов-адресатов (для занесения результата)). Регистры могут быть реализованы различными методами в различных микроархитектурах с использованием хорошо известных технологий и не ограничены никаким конкретным типом схемы. Примеры подходящих типов регистров включают в себя: специально выделенные физические регистры, динамически распределяемые физические регистры с использованием переименования регистров и их сочетания, но не ограничены этим.
В некоторых вариантах воплощения изобретения, процессор может, если требуется, иметь набор из одного или большего количества регистров (110) масок операций над упакованными данными, которые (регистры) реализованы на регистрах (108) упакованных данных, хотя это и не является обязательным требованием. В некоторых вариантах воплощения изобретения, процессор может, если требуется, иметь набор из одного или большего количества отдельных специально выделенных регистров (112) масок операций над упакованными данными, которые (регистры) являются отдельными от регистров (108) упакованных данных. Регистры (110) масок операций над упакованными данными и/или регистры (112) масок операций над упакованными данными могут быть использованы для хранения масок операций над упакованными данными. В качестве примера,  команды обработки упакованных данных могут иметь один или более разрядов для того, чтобы специфицировать маску операции над упакованными данными, например, регистр (112) масок операций над упакованными данными или регистр (108) упакованных данных. Маски операций над упакованных данных могут также упоминаться в этом описании как предикатные маски или просто маски.
Процессор также включает в себя один или более исполняющих блоков (114). Эти один или более исполняющих блоков (114) способны функционировать таким образом, чтобы исполнять или обрабатывать команды из набора (102) команд (например,  команды (104) обработки упакованных данных). В некоторых вариантах воплощения изобретения, исполняющие блоки могут включать в себя специальную логику (например, специальные интегральные схемы или другое аппаратное обеспечение, возможно, объединенное с микропрограммным обеспечением) для исполнения или обработки команд.
В некоторых вариантах воплощения изобретения, процессор может иметь различные режимы, в которых  используется или не используется для команд/операций обработки упакованных данных, хотя это и не является обязательным требованием. Например, процессор может иметь некоторый первый режим, в котором процессор не должен использовать  операции над упакованными данными, и некоторый второй режим, в котором процессор должен использовать  операции над упакованными данными. В качестве примера, при пребывании в первом режиме, могут быть выбраны, декодированы и исполнены  команды обработки упакованных данных для того, чтобы выполнять  операции над упакованных данными, не используя при этом  или маски операций над упакованными данными. В противоположность этому, при пребывании во втором режиме, могут быть выбраны, декодированы и исполнены  команды обработки упакованных данных для того, чтобы выполнять  операции над упакованных данными, используя маски и  операций над упакованными данными. Первый и второй режимы могут быть указаны посредством одного или более разрядов в регистре процессора (например, управляющем регистре, регистре конфигурации и так далее). Такое использование различных режимов может привести к тому, что проявятся преимущества в RISC-процессорах (процессорах для вычислений с сокращенным набором команд), процессорах, которые используют, по существу, постоянную длину команды (например, от большинства до почти всех команд имеют одну и ту же длину команды, такую как 32 разряда), процессорах, которые имеют ограниченное пространство кода операции, и им подобных. Часто, количество имеющихся кодов операций в таких процессорах является недостаточным для того, чтобы поддерживать как , так и  варианты некоторой данной операции над упакованными данными. Предоставив другой режим для  операций над упакованными данными, можно ввести дополнительные команды для выполнения  операций над упакованными данными без необходимости в обязательном порядке увеличивать длину кода операции. Другие варианты воплощения изобретения не ограничены использованием таких режимов.
Фиг. 2 представляет собой блок-схему другого варианта воплощения процессора (200). Как и прежде, этот процессор может представлять универсальный процессор или процессор специального назначения, и может относиться к любым разнообразным типам: RISC, CISC, VLIW, гибридному или другим типам процессоров. Любая из подробностей и необязательных подробностей, упомянутых выше в отношении процессора, показанного на фиг. 1, может, если требуется, также относиться к процессору, показанному на фиг. 2.
Процессор (200) может принимать  команду (204) обработки упакованных данных. Например, эта команда может быть принята из блока выборки команд, очереди команд или тому подобного.  команда обработки упакованных данных может представлять команду машинного кода, команду на языке ассемблера, макрокоманду или управляющий сигнал набора команд процессора. Подходящим является любой из вышеупомянутых типов  команд обработки упакованных данных, так же как и других типы  команд обработки упакованных данных.
Проиллюстрированный процессор включает в себя блок (216) декодирования команд. Блок декодирования команд может также упоминаться как декодирующий блок, декодер. Декодирующий блок может принимать и декодировать команды относительно более высокого уровня (например, макрокоманды, команды в машинном коде, команды на языке ассемблера и так далее), и выводить одну или более команд относительно более низкого уровня или управляющие сигналы (например, микрокоманды, микрооперации, точки входа в микрокод), которые отражают, представляют команды более высокого уровня и/или выведены из них. Эти одна или более команд более низкого уровня или управляющие сигналы могут реализовывать команду более высокого уровня посредством одной или более операций более низкого уровня (например, уровня схемы или уровня аппаратного обеспечения). Декодирующий блок может быть реализован с использованием всевозможных различных механизмов, включающих в себя: постоянные запоминающие устройства (ROM-устройства) для микрокода, таблицы поиска, аппаратные варианты реализации, программируемые логические матрицы (PLA-матрицы) и другие механизмы, используемые для реализации декодирующих блоков, известные в данной области техники, но не ограниченных этими механизмами.
В других вариантах воплощения изобретения, могут быть использованы эмулятор, транслятор, блок трансформации, интерпретатор команд или другая логика конвертирования команд. В данной области техники известны всевозможные различные типы логики конвертирования команд, и они могут быть реализованы в виде программного обеспечения, аппаратного обеспечения, микропрограммного обеспечения или их сочетания. Логика конвертирования команд может эмулировать, транслировать, трансформировать, интерпретировать, или иным образом конвертировать команду в одну или более соответствующих производных от нее команд или управляющие сигналы. В некоторых вариантах воплощения изобретения, могут быть использованы как логика конвертирования команд, так и декодирующий блок. Например, логика конвертирования команд может конвертировать команду в одну или больше промежуточных команд, а декодирующий блок может декодировать эти одну или больше промежуточных команд в одну или больше команд более низкого уровня или управляющие сигналы, исполняемые интегральными схемами процессора. Логика конвертирования команд может быть расположена вне процессора (например, на отдельном кристалле или в памяти), на процессоре, или в сочетании этих вариантов.
Процессор также включает в себя набор регистров (208) упакованных данных. Эти регистры упакованных данных могут быть аналогичны регистрам (108) упакованных данных, описанным выше.  команда (204) обработки упакованных данных может явным образом специфицировать (например, посредством одного или более полей или набора разрядов), или иным образом указывать (например, указывать неявным образом), некоторые первые исходные упакованные данные (например, некоторый первый регистр (218) исходных упакованных данных). В зависимости от типа команды,  команда (204) обработки упакованных данных может, если требуется, явным образом, специфицировать или иным образом указывать некоторые вторые исходные упакованные данных (например, некоторый второй регистр (220) исходных упакованных данных). В некоторых случаях  упакованные данные могут, если требуется, специфицировать или иным образом указывать упакованные данные-адресат (например, регистр-адресат (222) упакованных данных). В других вариантах воплощения изобретения, один или более из этих операндов с упакованными данными может быть сохранен в ячейке памяти или другом месте хранения информации. Помимо этого, в других вариантах воплощения изобретения, одно из мест хранения исходных упакованных данных может быть повторно использована в качестве места хранения упакованных данных-адресата.
В некоторых вариантах воплощения изобретения,  команда (204) обработки упакованных данных может также специфицировать или иным образом указывать маску (212) операции над исходными упакованными данными (например, регистр маски операции над исходными упакованными данными). В проиллюстрированном варианте воплощения изобретения, маска (212) операции над исходными упакованными данными может представлять регистр, который является отдельным от регистров (208) упакованных данных. В другом варианте воплощения изобретения, маска операции над исходными упакованными данными может быть реализована на регистрах (208) упакованных данных.
Вновь обратимся к фиг. 2, на которой исполняющий блок (214) сопряжен с декодирующим блоком (216), сопряжен с набором (208) регистров упакованных данных и сопряжен с маской (212) операции над исходными упакованными данными. В некоторых вариантах воплощения изобретения, это исполняющий блок может включать в себя: арифметическое устройство, арифметико-логическое устройство, логическое устройство, функциональный блок, блок для приема декодированных команд и выполнения операций или тому подобное. Исполняющий блок может быть способен функционировать в ответ на  (204) команду обработки упакованных данных (например, в ответ на одну или более декодированных или иным образом конвертированных команд или управляющие сигналы, которые представляют  команду (204) обработки упакованных данных и/или выведены из нее) и/или в результате этой команды таким образом, чтобы выполнять  операцию над упакованными данными и сохранять результирующие упакованные данные в операнде или регистре-адресате (222) упакованных данных. Исполняющий блок и/или процессор могут включать в себя специальную или особую логику (например, интегральные схемы или другое аппаратное обеспечение, возможно, объединенное с микропрограммным обеспечением и/или программным обеспечением), которая реагирует на  команду обработки упакованных данных таким образом, что выполняет эту  операцию над упакованными данными.
В некоторых вариантах воплощения изобретения, процессор может, если требуется, также принимать  команду (206) обработки упакованных данных.  команда обработки упакованных данных может быть сходна с ранее описанной  командой (204) обработки упакованных данных за исключением того, что она не должна специфицировать или иным образом указывать маску операции над упакованных данных, и за исключением того, что она не заставляет процессор использовать . Наоборот, в ответ на эту  команду обработки упакованных данных выполняется  операция над упакованными данными. Как было описано ранее, в некоторых вариантах воплощения изобретения, процессор может иметь различные режимы, в которых  используется или не используется для команд/операций обработки упакованных данных, хотя это и не является обязательным требованием. Например, при пребывании в первом режиме может быть декодирована и исполнена  команда (206) обработки упакованных данных для того, чтобы выполнять  операцию над упакованными данными, не используя при этом  или маску операции над упакованными данными. В противоположность этому, при пребывании во втором режиме может быть декодирована и исполнена  команда (204) обработки упакованных данных для того, чтобы выполнять  операцию над упакованными данными, маску (212) операции над упакованными данными. Характерно, что первый и второй режимы могут быть указаны посредством одного или более разрядов в регистре процессора (например, управляющем регистре, регистре конфигурации и так далее). Такое использование различных режимов может привести к тому, что проявятся преимущества в RISC-процессорах (процессорах для вычислений с сокращенным набором команд), процессорах, которые используют, по существу, постоянную длину команды (например, от большинства до почти всех команд имеют одну и ту же длину команды, такую как 32 разряда), процессорах, которые имеют ограниченное пространство кода операции, и им подобных. Часто, количество имеющихся кодов операций в таких процессорах является недостаточным для того, чтобы поддерживать как , так и  варианты некоторой данной операции над упакованными данными. Предоставив другой режим для  операций над упакованными данными, можно ввести дополнительные команды для выполнения  операций над упакованными данными без необходимости в обязательном порядке увеличивать длину кода операции. Другие варианты воплощения изобретения не ограничены использованием таких режимов.
Маска операции над упакованными данными может представлять предикатный операнд или операнд условного управления или операнд управления условной векторной операцией. Маска операции над упакованными данными может также упоминаться здесь просто как маска. Эта маска может осуществлять предикацию, условное управление или  в отношении того, должны ли быть выполнены операции, ассоциативно связанные с  командой обработки упакованных данных, над исходными элементами данных, и/или должны ли результаты этих операций быть сохранены в результирующих упакованных данных. Маска может каждая включать в себя множественные элементы маски, предикатные элементы или элементы условного управления.
В некоторых вариантах воплощения изобретения, маска может быть способна функционировать таким образом, чтобы  операции со степенью детализации, соответствующей результирующему элементу данных. В одном аспекте изобретения, элементы маски могут находиться во взаимно-однозначным соответствием с результирующими элементами данных (например, может иметься восемь результирующих элементов данных и восемь соответствующих  элементов). Каждый отличный от других элемент маски может быть способен функционировать таким образом, чтобы  отличную от других соответствующую операцию над упакованными данными, и/или  хранение отличного от других соответствующего результатирующего элемента данных, отдельно и/или, по существу, независимо от других. Например, элемент маски может быть способен функционировать таким образом, чтобы устанавливать маску в отношении того, должна ли операция над упакованными данными быть выполнена над соответствующим элементом данных из исходных упакованных данных (или над парой соответствующих элементов данных, относящихся к двум исходным упакованным данным) и/или должен ли результат операции над упакованными данными быть сохранен в соответствующем результирующем элементе данных.
Обычно каждый элемент маски может представлять собой единственный разряд. Этот единственный разряд может позволить специфицировать любую из двух различных возможностей. В качестве одного примера, каждый разряд может специфицировать либо то, что операция подлежит выполнению, либо то, что она не подлежит выполнению. В качестве другого примера, каждый разряд может специфицировать сохранение результата операции в отличие от того, чтобы не сохранять результат операции. В соответствии с одним возможным соглашением, каждый разряд маски может иметь некоторое первое значение (например, установленное в двоичную "1") для того, чтобы позволять результату операции над упакованными данными быть сохраненным в соответствующем результирующем элементе данных, или может иметь некоторое второе значение (например, очищенное до двоичного "0") для того, чтобы не давать результату операции над упакованными данными быть сохраненным в соответствующем результирующем элементе данных. Возможно также и противоположное соглашение. В других случаях, каждый элемент маски может иметь два или больше разрядов (например, для того, чтобы специфицировать больше чем две различных возможности).
В некоторых вариантах воплощения изобретения, операция может, если требуется, выполняться независимо от соответствующего разряда или элемента маски, но соответствующие результаты операции могут быть или могут не быть сохранены в результирующих упакованных данных в зависимости от значения соответствующего разряда или элемента маски. В качестве альтернативы, в других вариантах воплощения изобретения, операция может, если требуется, быть пропущена (то есть, не выполнена), если соответствующий разряд или элемент маски . В некоторых вариантах воплощения изобретения, исключения и/или нарушения могут, если требуется, быть подавлены для операции на  элементе, или не возникать при этой операции. В некоторых вариантах воплощения изобретения, могут, если требуется, быть подавлены или не возникнуть ошибки памяти, соответствующие  элементам данных.
Во избежание затруднения понимания описания, на чертеже показан и описан относительно простой процессор (200). В других вариантах воплощения изобретения, этот аппарат, если требуется, может включать в себя другие хорошо известные компоненты, находящиеся в процессорах. Примеры таких компонентов включают в себя: блок предсказания ветвей, блок выборки команд, кэши команд и данных, буферы быстрого преобразования адресов команд и данных, буферы предварительной выборки, очереди микрокоманд, задатчики последовательностей микрокоманд, блок переименования регистров, блок планирования команд, блоки интерфейсов шин, кэши второго или более высокого уровней, блок изъятия, другие компоненты, входящие в состав процессоров, и разнообразные их сочетания, но не ограничены этими компонентами. Имеются без преувеличения многочисленные различные сочетания и конфигурации компонентов в процессорах, и варианты воплощения изобретения не ограничены никакими конкретными сочетанием или конфигурацией. Варианты воплощения изобретения могут быть включены в состав процессоров, иметь множественные ядра, логические процессоры или механизмы исполнения, по меньшей мере, один из которых имеет логику исполнения, способную функционировать таким образом, чтобы исполнять вариант воплощения раскрытой здесь  команды обработки упакованных данных.
Фиг. 3 представляет собой блок-схему приводимого в качестве примера варианта воплощения  операции (326) над упакованными данными, выполняемой со слиянием. Эта  операция над упакованными данными может быть выполнена в ответ на  команду обработки упакованных данных (например, команду (104) и/или (204)), или в результате этой команды.  команда обработки упакованных данных может указывать некоторые первые исходные упакованные данные (318) и некоторые вторые исходные упакованные данные (320). Другие  команды обработки упакованных данных могут указывать только единственные исходные упакованные данные, или больше чем двух исходных упакованных данных. На этой иллюстрации, первые и вторые исходные упакованные данные имеют один и тот же размер, содержат элементы данных одной и той же разрядности, и, таким образом, каждое содержат одно и то же количество элементов данных, хотя это и не является обязательным требованием. На этой иллюстрации, каждое из первых и вторых исходных упакованных данных имеет восемь элементов данных. В качестве одного примера, первые и вторые исходные упакованные данные могут каждое иметь разрядность в 128 разрядов и могут каждое включать в себя восемь 16-разрядных элементов данных, хотя это и не является обязательным требованием. Исходные элементы данных в одинаковых относительных позициях в этих двух исходных упакованных данных (например, в тех же самых позициях по вертикали) представляют пары соответствующих элементов данных. Каждый из элементов данных имеет численному значение, показанное в пределах прямоугольника, представляющего этот элемент данных. Например, первые исходные упакованные данные (318) имеют, в направлении от позиции самого младшего разряда, расположенной справа, к позиции самого старшего разряда, расположенной слева, значения: "3, 7, 66, 55, 12, 11, 90, 89".
Команда также указывает маску (212) операции над исходными упакованными данными. В этом примере, маска включает в себя восемь элементов маски, предикатных элементов или элементов условного управления, которые в этом примере находятся каждый в единственном разряде. Эти разряды имеют упорядоченное взаимно-однозначное соответствие с соответствующей парой исходных элементов данных в первых и вторых исходных упакованных данных. Например, самый младший разряд маски (находящийся с правой стороны) соответствует паре соответствующих элементов данных самого младшего разряда, самый старший разряд маски (находящийся с левой стороны) соответствует паре соответствующих элементов данных самого старшего разряда, и так далее. Каждый разряд маски позволяет осуществлять предикацию или условное управление выполнением операции над упакованными данными в отношении соответствующей пары исходных элементов данных, отдельно и независимо от других. Приводимая в качестве примера  операция над упакованными данными представляет собой  операцию сложения упакованных данных с целью условного сохранения сумм соответствующих пар элементов данных из первых и вторых исходных упакованных данных в результирующих упакованных данных или операнде-адресате (322) в соответствии с маской операции над упакованными данными. Каждый из восьми разрядов маски, входящих в состав маски операции над упакованными данными, либо установлен (то есть, имеет двоичное значение "1"), или очищен (то есть, имеет двоичное значение "0"). В соответствии с проиллюстрированным соглашением, каждый разряд маски установлен (то есть, "1") или очищен (то есть, "0"), соответственно, позволяя или не позволяя результату операции над упакованными данными (в этом случае суммирования), выполненной над соответствующей парой элементов исходных упакованных данных, быть сохраненным в соответствующем элементе данных в результирующих упакованных данных. Установленные разряды (то есть, "1") представляют  разряды или элементы, тогда как очищенные разряды (то есть, "0") представляют  разряды или элементы. В проиллюстрированном примере, значения этих восьми разрядов маски, в направлении от позиции самого младшего разряда, расположенной справа, к позиции самого старшего разряда, расположенной слева, составляют "1, 1, 0, 1, 0, 1, 1, 0". Для тех разрядов маски, которые установлены (то есть, "1") соответствующая сумма сохраняется в соответствующем результирующем элементе данных. На этой иллюстрации, эти суммы подчеркнуты. В противоположность этому, для тех разрядов маски, которые очищены (то есть, "0"), результат операции над упакованными данными в отношении соответствующей пары исходных элементов данных не сохраняется в соответствующем результирующем элементе данных. А вместо этого, в проиллюстрированном примере, осуществляется слияние со значением соответствующего элемента данных из вторых исходных упакованных данных (320), сохраняемым в соответствующем результирующим элементе данных. Этот вариант  упоминается как  со слиянием. Следует понимать, что возможно также и противоположное соглашение, при котором разряды очищаются (то есть, "0") для того, чтобы позволить результатам быть сохраненными, или установлены (то есть, "1") для того, чтобы не позволить результатам быть сохраненными.
Фиг. 4 представляет собой блок-схему приводимого в качестве примера варианта воплощения  операции (426) над упакованными данными, выполняемой с обнулением. Эта  операция над упакованными данными может быть выполнена в ответ на  команду обработки упакованных данных (например, команду (104) и/или (204)), или в результате этой команды. Эта команда может указывать некоторые первые исходные упакованные данные (418), некоторые вторые исходные упакованные данные (420), маску (412) операции над исходными упакованными данными и место-адресат (422) хранения.  операция над упакованными данными, выполняемая с обнулением, сходна с вышеупомянутой  операцией над упакованными данными, выполняемой со слиянием. Во избежание затруднения понимания описания, сходства повторно описываться не будут, но наоборот, прежде всего, будут упомянуты различия.
Одно заметное различие заключается в том, что в случае, когда соответствующие разряды маски  или обнулены (например, очищены до двоичного "0"), вместо слияния или сохранения значений элементов данных из исходных упакованных данных (например, вторых исходных упакованные данных (320) на фиг. 3) в соответствующих результирующих элементах данных, соответствующие результирующие элементы данных обнуляются. Например, всем разрядам результирующего элемента упакованных данных может быть присвоено значение "ноль". Это упоминается как  с обнулением. В качестве альтернативы, если требуется, то помимо нуля могут быть использованы другие предварительно заданные значения.
Следует понимать, что это - только несколько иллюстративных примеров подходящих  операций над упакованными данными. В других вариантах воплощения изобретения, вместо суммирования, операция может представлять собой операцию умножения, операцию сравнения, операцию вычитания, операцию усреднения, операцию сдвига, операцию циклического сдвига и так далее. Помимо этого, в других вариантах воплощения изобретения, в эту операцию могут быть вовлечены единственный исходный операнд с упакованными данными, больше чем два исходных операнда с упакованными данными, исходные операнды с упакованными данными, имеющие различные размеры, исходные упакованные данные, имеющие различные размеры и/или количества элементов данных, горизонтальные а не вертикальные операции и так далее.
В некоторых вариантах воплощения изобретения, операции, показанные на фиг. 3 и/или фиг. 4, могут быть выполнены посредством или внутри процессора, показанного на фиг. 1, и/или процессора, показанного на фиг. 2. В качестве альтернативы, операции, показанные на фиг. 3 и/или фиг. 4, могут быть выполнены посредством и/или внутри сходного или другого процессора. Помимо этого, процессор, показанный на фиг. 1, и/или процессор, показанный на фиг. 2, могут выполнять операции, одинаковые с теми, что показаны на фиг. 3 и/или фиг. 4, сходные с ними или отличные от них.
Фиг. 5 представляет собой блок-схему алгоритма одного варианта воплощения способа (530) обработки одного варианта воплощения  команды обработки упакованных данных. В разнообразных вариантах воплощения изобретения, этот способ может быть выполнен посредством и/или в пределах процессора или другого аппарата обработки команд. В некоторых вариантах воплощения изобретения, этот способ может быть выполнен процессорами, показанными на фиг. 1 и/или фиг. 2. В качестве альтернативы, этот способ может быть выполнен сходным или другим процессором. Помимо этого, процессоры, показанные на фиг. 1 и/или фиг. 2, могут выполнять операции и способы, одинаковые с теми, что показаны на фиг. 5, сходные с ними или отличные от них.
Способ включает в себя прием, на этапе 531,  команды обработки упакованных данных. В различных аспектах изобретения, эта команда может быть принята в процессоре или его части (например, блоке выборки, декодирующем блоке, очереди команд и так далее). В различных аспектах изобретения, эта команда может быть принята от источника, находящегося вне кристалла, (например, из основной памяти, с диска, из межсоединения и так далее), или из источника находящегося на кристалле, (например, из кэша команд).  команда обработки упакованных данных может специфицировать или иным образом указывать некоторые первые исходные упакованные данные, имеющие некоторое первое множество элементов упакованных данных, может специфицировать или иным образом указывать некоторые вторые исходные упакованные данные, имеющих некоторое второе множество элементов упакованных данных, может специфицировать или иным образом указывать маску операции над упакованными данными, имеющую некоторое множество элементов маски, и может специфицировать или иным образом указывать место-адресат сохранения информации.
Результирующие упакованные данные могут, на этапе 532, быть сохранены в указанном месте-адресате сохранения информации в ответ на  команду обработки упакованных данных и/или в результате этой команды. Эти результирующие упакованные данные включают в себя некоторое множество результирующих элементов данных, каждый из которых соответствует отличному от других одному из элементов маски в соответствующей относительной позиции. Результирующие элементы данных, которые не  соответствующим элементом маски, включают в себя результат операции над упакованными данными, выполненной над соответствующей парой элементов исходных упакованных данных, взятой из первых и вторых исходных упакованных данных. Результирующие элементы данных, которые  соответствующим элементом маски, включают в себя  значение, такое как, например, обнуленное значение или полученное при слиянии значение из одних данных из числа: первых и вторых исходных упакованных данных.
Фиг. 6 представляет собой таблицу, на которой проиллюстрировано то, что количество разрядов маски операции над упакованными данными зависит от разрядности упакованных данных и разрядности элемента упакованных данных. Показаны разрядности упакованных данных, составляющие 64 разряда, 128 разрядов, 256 разрядов и 512 разрядов. В других вариантах воплощения изобретения, могут быть использованы подмножество или надмножество этих разрядностей, или могут быть использованы полностью другие разрядности (например, 32 бита, 1024 бита, и т.д.). Учтены разрядности элементов упакованных данных для 8-разрядных байтов, 16-разрядных слов, 32-разрядных двойных слов (dword) или формата (SP) обычной точности с плавающей запятой, и 64-разрядных учетверенных слов (Qword) или формата (DP) двойной точности с плавающей запятой, хотя другие разрядности также возможны.
Как показано на фиг., когда разрядность упакованных данных составляет 64 разряда: в случае, когда разрядность элемента упакованных данных составляет 8 разрядов, для  могут быть использованы 8 разрядов; в случае, когда разрядность элемента упакованных данных составляет 16 разрядов, для  могут быть использованы 4 разряда; а в случае, когда разрядность элемента упакованных данных составляет 32 разряда, для  могут быть использованы 2 разряда. Как показано на чертеже, когда разрядность упакованных данных составляет 128 разрядов: в случае, когда разрядность элемента упакованных данных составляет 8 разрядов, для  могут быть использованы 16 разрядов; в случае, когда разрядность элемента упакованных данных составляет 16 разрядов, для  могут быть использованы 8 разрядов; в случае, когда разрядность элемента упакованных данных составляет 32 разряда, для  могут быть использованы 4 разряда; а в случае, когда разрядность элемента упакованных данных составляет 64 разряда, для  могут быть использованы 2 разряда. Когда разрядность упакованных данных составляет 256 разрядов: в случае, когда разрядность элемента упакованных данных составляет 8 разрядов, для  могут быть использованы 32 разряда; в случае, когда разрядность элемента упакованных данных составляет 16 разрядов, для  могут быть использованы 16 разрядов; в случае, когда разрядность элемента упакованных данных составляет 32 разряда, для  могут быть использованы 8 разрядов; а в случае, когда разрядность элемента упакованных данных составляет 64 разряда, для  могут быть использованы 4 разряда. Когда разрядность упакованных данных составляет 512 разрядов: в случае, когда разрядность элемента упакованных данных составляет 8 разрядов, для  могут быть использованы 64 разряда; в случае, когда разрядность элемента упакованных данных составляет 16 разрядов, для  могут быть использованы 32 разряда; в случае, когда разрядность элемента упакованных данных составляет 32 разряда, для  могут быть использованы 16 разрядов; а в случае, когда разрядность элемента упакованных данных составляет 64 разряда, для  могут быть использованы 8 разрядов. В некоторых вариантах воплощения изобретения могут быть использованы маски, имеющие любую из этих разрядностей, или любое сочетание этих разрядностей.
Фиг. 7 представляет собой блок-схему приводимого в качестве примера варианта воплощения подходящего набора регистров (712) масок операций над упакованными данными. Каждый из регистров масок операций над упакованными данными может быть использован для того, чтобы хранить маску операции над упакованными данными. В некоторых вариантах воплощения изобретения, регистры масок операций над упакованными данными могут представлять собой отдельный, специально выделенный набор архитектурных регистров. В проиллюстрированном варианте воплощения изобретения, каждый из регистров масок операций над упакованными данными имеет разрядность в 64 разряда. В альтернативных вариантах воплощения изобретения, разрядности регистров масок операций над упакованными данными могут быть либо меньше чем 64 разряда (например, 8 разрядов, 16 разрядов, 20 разрядов, 32 разряда и так далее), либо больше чем 64 разряда (например, 128 разрядов). В проиллюстрированном варианте воплощения изобретения, этот набор включает в себя восемь регистров масок операций над упакованными данными, каковые регистры имеют метки: с М0 по М7. Альтернативные варианты воплощения изобретения могут включать в себя либо меньше чем восемь (например, один, два, три, четыре, пять, шесть и так далее), либо больше чем восемь (например, двенадцать, шестнадцать, двадцать, тридцать два и так далее) регистров масок операций над упакованными данными. В качестве примера,  команды обработки упакованных данных могут, для того, чтобы закодировать или специфицировать любой из этих восьми регистров (с М0 по М7) масок операций над упакованными данными, использовать три разряда (например, трехразрядное поле). В альтернативных вариантах воплощения изобретения, может быть использовано либо меньше, либо больше разрядов в случае, когда, соответственно, имеется меньше или больше регистров масок операций над упакованными данными. Регистры масок операций над упакованными данными могут быть реализованы различным образом с использованием хорошо известных технологий и не ограничены никаким известным конкретным типом схемы. Примеры подходящих регистров включают в себя: специально выделенные физические регистры, динамически распределяемые физические регистры с использованием переименования регистров и их сочетания, но не ограничены этим.
Фиг. 8 представляет собой схему, на которой проиллюстрирован вариант воплощения регистра (812) маски операции над упакованными данными и показано, что количество разрядов, которые используются в качестве маски операции над упакованными данными и/или для , зависит от разрядности упакованных данных и разрядности элемента данных. Проиллюстрированный приводимый в качестве примера вариант воплощения регистра маски операции над упакованными данными имеет разрядность в 64 разряда, хотя вместо этого могут быть использованы регистры, имеющие либо более высокую разрядность (например, 16-разрядные, 8-разрядные и так далее), либо более низкую разрядность. В зависимости от сочетания разрядности упакованных данных и разрядности элемента данных можно для , в качестве маски операции над упакованными данными, использовать либо все 64 разряда, либо только некоторое подмножество 64 разрядов. Обычно, в случае, когда используется единственный управляющий бит , приходящийся на один элемент, количество разрядов в регистре маски операции над упакованными данными, используемых для , равно разрядности, выраженной в разрядах, операнда с упакованными данными разделенной на выраженную в разрядах разрядность элемента упакованных данных.
На фиг. 8 показано несколько иллюстративных примеров. А именно, в случае, когда разрядность упакованных данных составляет 128 разрядов, и разрядность элемента упакованных данных составляет 16 разрядов, тогда в качестве маски операции над упакованными данными используются только самые младшие 8 разрядов регистра. В случае, когда разрядность упакованных данных составляет 128 разрядов, и разрядность элемента упакованных данных составляет 8 разрядов, тогда в качестве маски операции над упакованными данными используются только самые младшие 16 разрядов регистра. В случае, когда разрядность упакованных данных составляет 256 разрядов, и разрядность элемента упакованных данных составляет 8 разрядов, тогда в качестве маски операции над упакованными данными используются только самые младшие 32 разряда регистра. В случае, когда разрядность упакованных данных составляет 512 разрядов, и разрядность элемента упакованных данных составляет 8 разрядов, тогда в качестве маски операции над упакованными данными используются все 64 разряда регистра. В соответствии с проиллюстрированным вариантом воплощения изобретения,  команда обработки упакованных данных, основываясь на разрядности упакованных данных и разрядности элемента данных ассоциативно связанных с этой командой, может использовать только это количество самых младших или самых низших значащих разрядов регистра, используемого для маски операции над упакованными данными. В проиллюстрированном варианте воплощения изобретения, для  подмножество или часть самых младших разрядов регистра, хотя это и не является обязательным требованием. В альтернативных вариантах воплощения изобретения, может быть использовано, если требуется, подмножество самых старших регистров или некоторое другое подмножество.
Фиг. 9 представляет собой блок-схему, на которой проиллюстрирован вариант воплощения изобретения, в котором один и тот же физический регистр может логически рассматриваться и/или служить объектом доступа либо в качестве регистра (908) упакованных данных, либо в качестве регистра (912) маски операции над упакованными данными. На первом представлении (940), регистр может рассматриваться и/или служить объектом доступа в качестве регистра (908) упакованных данных. Проиллюстрированный регистр имеет разрядность в 64 разряда. На этой иллюстрации, в качестве примера, в этом 64-разрядном регистре упакованных данных хранятся четыре 16-разрядных элемента (А0-A3) данных. В других вариантах воплощения изобретения, могут быть использованы регистры имеющие, либо более низкую разрядность (например, 32-разрядные), либо более высокую разрядность (например, 128-разрядные, 256-разрядные и так далее). Помимо этого, в других вариантах воплощения изобретения, в этом регистре в качестве упакованных данных могут храниться элементы данных, имеющие либо более низкую разрядность (например, 8-разрядный байт), либо более высокую разрядность (например, 32-разрядные или 64-разрядные элементы).
На втором представлении (941), тот же самый регистр может рассматриваться и/или к служить объектом доступа в качестве регистра (912) маски операции над упакованными данными, который способен функционировать таким образом, чтобы хранить маску операции над упакованными данными. На этой иллюстрации, в самых младших 32 разрядах регистра (то есть, разрядах [31 : 0]) хранится 32-разрядная маска (М0) операции над упакованными данными. Каждый из этих 32 разрядов может представлять элемент маски или элемент, используемый для предикации. Все разряды маски непрерывно следуют друг за другом или являются смежными. Остальные самые старшие 32 разряда регистра (то есть, разряды [63 : 32]) не используются для . Эти разряды могут представлять, например, "безразличные значения" (*), все нули, все единицы, значения, которые просто игнорируются, любые возможные значения и так далее. В других вариантах воплощения изобретения, могут, если требуется, быть использованы маски, имеющие либо более низкую разрядность (например, 8-разрядные, 16-разрядные и так далее), либо более высокую разрядность (например, 64-разрядные и так далее). Для  могут быть использованы либо все разряды в регистре, либо для  может быть использовано только некоторое подмножество разрядов. В проиллюстрированном примере, для  используется подмножество самых младших разрядов. В качестве альтернативы, для  могут быть использованы подмножество самых старших разрядов или другое подмножество разрядов.
Фиг. 10 представляет собой блок-схему, на которой проиллюстрирован вариант воплощения изобретения, в котором один и тот же физический регистр может логически рассматриваться и/или служить объектом доступа либо в качестве регистра (1008) упакованных данных, либо в качестве регистра (1012) масок операций над упакованными данными, хранящего множественные (например, две или более) маски операций над упакованными данными. На первом представлении (1042), этот регистр может рассматриваться и/или служить объектом доступа в качестве регистра (1008) упакованных данных. Проиллюстрированный регистр имеет разрядность в 64 разряда. На этой иллюстрации, в качестве примера, в этом 64-разрядном регистре упакованных данных хранится четыре 16-разрядных элемента (А0-А3) данных. В других вариантах воплощения изобретения, могут быть использованы регистры имеющие, либо более низкую разрядность (например, 32-разрядные), либо более высокую разрядность (например, 128-разрядные, 256-разрядные и так далее). Помимо этого, в других вариантах воплощения изобретения, в этом регистре в качестве упакованных данных могут храниться элементы данных, имеющие либо более низкую разрядность (например, 8-разрядный байт), либо более высокую разрядность (например, 32-разрядные или 64-разрядные элементы).
В некоторых вариантах воплощения изобретения, могут также иметься одно или более других представлений, на которых тот же самый регистр может рассматриваться и/или к служить объектом доступа в качестве регистра (1012) масок операций над упакованными данными, хранящего множественные (то есть, две или больше) маски операций над упакованными данными. В проиллюстрированном варианте воплощения изобретения, имеется второе представление (1043), третье представление (1044) и четвертое представление (1045). Каждое представление: со второго по четвертое, имеет различные количество масок и размер масок. В других вариантах воплощения изобретения, в дополнение к первому представлению может иметься только единственное представление, на котором тот же самый регистр может логически рассматриваться и/или служить объектом доступа в качестве регистра (1012) масок операций над упакованными данными, хранящего множественные маски операций над упакованными данными.
На втором представлении (1043), в том же самом регистре (1012-1) масок операций над упакованными данными хранится восемь различных 8-разрядных масок: М0-М7. Например, первая маска (М0) хранится в самых младших 8 разрядах регистра (то есть, в разрядах [7 : 0]), вторая маска (M1) хранится в следующих за самыми младшими 8 разрядах регистра (то есть, в разрядах [15 : 8]), и так далее. На третьем представлении (1044), в том же самом регистре (1012-2) масок операций над упакованными данными хранятся четыре различных 16-разрядных маски: M0-M3. Например, первая маска (М0) хранится в самых младших 16 разрядах регистра (то есть, в разрядах [15 : 0]), вторая маска (M1) хранится в следующих за самыми младшими 16 разрядах регистра (то есть, в разрядах [31 : 16]), и так далее. На четвертом представлении (1045), в том же самом регистре (1012-3) масок операций над упакованными данными хранятся две различных 32-разрядных маски: М0-М1. Например, первая маска (М0) хранится в самых младших 32 разрядах регистра (то есть, в разрядах [31 : 0]), вторая маска (M1) хранится в следующих за самыми младшими 32 разрядах регистра (то есть, в разрядах [64 : 32]). Это - только несколько примеров масок. В других вариантах воплощения изобретения, могут быть использованы маски, имеющие либо более низкую разрядность (например, два разряда, четыре разряда, и так далее), либо более высокую разрядность (например, 64 разряда).
В некоторых вариантах воплощения изобретения, для каждого представления из числа представлений: со второго по четвертое, каждая из масок может быть использована для отдельной или отличной от других  операции над упакованными данными. Например, маска (М0) может быть указана некоторой первой  командой обработки упакованных данных и может быть использована для того, чтобы  соответствующую операцию над упакованными данными, другая маска (Ml) может быть указана другой  командой обработки упакованных данных и может быть использована для того, чтобы  другую соответствующую операцию над упакованными данными, и так далее. Каждая маска может включать в себя непрерывно следующие друг за другом/смежные разряды маски. В  операциях над упакованными данными, как было описано выше, каждый разряд может соответствовать одному или более различным элементам упакованных данных (например, паре соответствующих элементов упакованных данных).
На этой иллюстрации, для хранения множественных масок используется вся разрядность регистра (то есть, в этом примере 64 разряда), хотя это и не является обязательным требованием. В других вариантах воплощения изобретения, для хранения множественных масок может быть использовано только некоторое подмножество разрядности регистра (например, подмножество самых старших разрядов, подмножество самых младших разрядов и так далее). Например, в самых младших 32 разрядах 64-разрядного регистра могут быть сохранены только четыре 8-разрядные маски, в самых младших 32 разрядах 128-разрядного регистра могут быть сохранены четыре 8-разрядные маски и так далее. Разряды, не используемые для , могут иметь "безразличные" значения.
Фиг. 11 представляет собой блок-схему, на которой проиллюстрирован вариант воплощения изобретения, в котором разряды маски (1112) операции над упакованными данными распределены между элементами данных в упакованных данных (1108). Эта концепция проиллюстрирована посредством нескольких приводимых в качестве примера форматов с 32-разрядными двойными словами (dword). 64-разрядный формат (1146) с упакованными двойными словами имеет разрядность в 64 разряда и включает в себя два элемента данных, представляющих собой 32-разрядные двойные слова (dword), в упакованных данных (1108-1). Эти два элемента данных, представляющих собой 32-разрядные двойные слова, помечены на иллюстрации в направлении от позиции самого младшего разряда к позиции самого старшего разряда как двойные слова: с DWORD0 по DWORD1. DWORD0 хранится в разрядах [31 : 0], a DWORD1 хранится в разрядах [63 : 32]. Самый старший разряд каждого из этих элементов данных, представляющих собой двойные слова, представляет разряд маски в маске (1112-1) операции над упакованными данными, который используется для  операции над упакованными данными. В частности, в этом формате, разряд [31] и разряд [63] представляют собой разряды маски, и эти разряды маски все вместе представляют маску (М0) (1112-1) операции над упакованными данными.
128-разрядный формат (1147) с упакованными двойными словами имеет разрядность в 128 разрядов и включает в себя четыре элемента данных, представляющих собой 32-разрядные двойные слова (dword), в упакованных данных (1108-2). Эти два элемента данных, представляющих собой 32-разрядные двойные слова, помечены на иллюстрации в направлении от позиции самого младшего разряда к позиции самого старшего разряда как двойные слова: с DWORD0 по DWORD3. Самый старший разряд каждого из этих элементов данных, представляющих собой двойные слова, представляет разряд маски в маске (1112-2) операции над упакованными данными, который используется для  операции над упакованными данными. В частности, в этом формате, разряд [31], разряд [63], разряд [95] и разряд [127] представляют собой разряды маски, и эти разряды маски все вместе представляют маску (М0) (1112-2) операции над упакованными данными.
256-разрядный формат (1148) с упакованными двойными словами имеет разрядность в 256 разрядов и включает в себя восемь элементов данных, представляющих собой 32-разрядные двойные слова (dword), в упакованных данных (1108-3). Эти восемь элементов данных, представляющих собой 32-разрядные двойные слова, помечены на иллюстрации в направлении от позиции самого младшего разряда к позиции самого старшего разряда как двойные слова: с DWORD0 по DWORD7. Самый старший разряд каждого из этих элементов данных, представляющих собой двойные слова, представляет разряд маски в маске (1112-3) операции над упакованными данными, который используется для  операции над упакованными данными. В частности, в этом формате, разряд [31], разряд [63], разряд [95], разряд [127], разряд [159], разряд [191], разряд 223] и разряд [255] представляют собой разряды маски, и эти разряды маски все вместе представляют маску (М0) (1112-3) операции над упакованными данными.
В некоторых случаях, маски могут быть реализованы в операндах, которые имеют тот же самым размер, что и операнды с упакованными данными, вовлеченные в  операнд с упакованными данными, хотя во многих случаях общее количество разрядов маски может быть равно общему количеству элементов данных. В этих примерах, разряд маски представлен самым старшим разрядом каждого элемента данных. В других вариантах воплощения изобретения, разряд маски может быть представлен другим разрядом в пределах каждого элемента данных (например, самым младшим разрядом и так далее).
Следует понимать, что это - только несколько примеров подходящих форматов упакованных данных. Подходящими также форматы упакованных данных имеющие более низкую разрядность (например, 32-разрядные) или более высокую разрядность (например, 512-разрядные). Помимо этого, для любого из этих форматов упакованных данных подходящими также являются элементы данных, либо имеющие более низкую разрядность, чем 32 разряда (например, 8-разрядные байты, 16-разрядные слова и так далее), либо имеющие более высокую разрядность, чем 32 разряда (например, 64-битовые учетверенные слова, 64-битовые данные с двойной точностью с плавающей запятой и так далее). Форматы с упакованными 8-разрядными байтами могут иметь в четыре раза больше элементов данных и соответствующих разрядов маски, чем в показанных приводимых в качестве примера форматах с 32-разрядными двойными словами. Форматы с упакованными 16-разрядными словами могут иметь в два раза больше элементов данных и соответствующих разрядов маски, чем в показанных приводимых в качестве примера форматах с 32-разрядными двойными словами. Форматы с упакованными 64-разрядными учетверенными словами могут иметь в половину меньше элементов данных и соответствующих разрядов маски, чем в показанных приводимых в качестве примера форматах с 32-разрядными двойными словами. В качестве одного примера, 128-разрядный формат с упакованными элементами данных, представляющими собой 8-разрядные байты, может иметь шестнадцать упакованных элементов данных, представляющих собой 8-разрядные байты, при этом самый старший разряд каждого байта представляет отличный от других разряд маски, и все шестнадцать разрядов все вместе представляют маску операции над упакованными данными. Обычно, количество элементов упакованных данных и соответствующих разрядов маски может быть равно выраженному в разрядах размеру упакованных данных, разделенному на выраженный в разрядах размер элементов упакованных данных.
Фиг. 12 представляет собой блок-схему, на которой проиллюстрирован вариант воплощения изобретения, в котором набор регистров, имеющих разряды маски операции над упакованными данными, распределенные по элементам данных в упакованных данных, может рассматриваться или может служить объектом доступа, на различных представлениях, в качестве хранящего две или более малых масок или единственную большую маску. На первом представлении (1249), набор из двух регистров (например, двух 64-разрядных физических регистров) логически рассматривается или служат объектом доступа в качестве двух 64-разрядных регистра упакованных данных, помеченных как Х0-Х1. Регистры (Х0)-(Х1) могут представлять собой регистры, специфицированные командами из набора команд для того, чтобы идентифицировать операнды. Каждый из двух регистров (Х0-Х1) упакованных данных может быть способным функционировать таким образом, чтобы хранить различный 64-разрядные операнды с упакованными данными. Например, в проиллюстрированном варианте воплощения изобретения, 64-разрядный регистр (Х0) используется для того, чтобы хранить первый операнд с упакованными данными, имеющий два 32-разрядных элемента (А0-А1) данных, а 64-разрядный регистр (X1) используется для того, чтобы хранить второй операнд с упакованными данными, имеющий два 32-разрядных элемента (В0-В1) данных. В этих операндах с упакованными данными каждый из элементов упакованных данных может иметь соответствующий разряд маски. Например, в проиллюстрированном варианте воплощения изобретения, самый старший разряд каждого 32-разрядного элемента данных представляет разряд маски. В других вариантах воплощения изобретения, вместо этого могут быть использованы размеры элементов данных, имеющие либо более низкую разрядность, либо более высокую разрядность, и/или в качестве разрядов маски могут быть использованы другие разряды, отличные от самого старшего разряда, (например, самые младшие разряды в пределах каждого элемента данных или любые другие желательные разряды). В проиллюстрированном приводимом в качестве примера варианте воплощения изобретения, для регистра (ХО) упакованных данных элемент данных с самыми младшими 32 разрядами имеет разряд (М0а) маски, а элемент данных с самыми старшими 32 разрядами имеет разряд (M0b) маски. Разряды (М0а и M0b) маски представляют маску (М0) операции над упакованными данными. Аналогичным образом, для регистра (X1) упакованных данных элемент данных с самыми младшими 32 разрядами имеет разряд (M1a) маски, а элемент данных с самыми старшими 32 разрядами имеет разряд (M1b) маски. Разряды (M1a и M1b) маски представляют маску (Ml) операции над упакованными данными. На этом первом представлении, разряды маски в этих двух 64-разрядных регистрах (Х0)-(Х1) (то есть, М0а, M0b, М1а и M1b) логически рассматриваются в качестве двух различных масок операций над упакованными данными (например, могут быть использованы различными  командами обработки упакованных данных для различных  операций над упакованными данными).
На втором представлении (1250), тот же самый набор из двух регистров (например, двух 64-разрядных физических регистров) логически рассматривается или служит объектом доступа в качестве единого 128-разрядного регистра (Y0) упакованных данных. Регистр (Y0) может представлять собой регистр, специфицированный командами из набора команд для того, чтобы идентифицировать операнды. На втором представлении (1250), самые младшие 64 разряда (то есть, разряды 63 : 0) 128-разрядного регистра (Y0) отображаются на 64-разрядный регистр (Х0) или соответствуют ему, тогда как самые старшие 64 разряда (то есть, разряды 127 : 64) 128-разрядного регистра (Y0) отображаются на 64-разрядный регистр (XI) или соответствуют ему. Множественные (в этом случае два) малые (в этом случае 64-разрядные) регистры логически объединяются или группируются для того, чтобы образовать единый большой (в этом случае 128-разрядный) регистр. Регистр (Y0) упакованных данных способен функционировать таким образом, чтобы хранить 128-разрядный операнд с упакованными данными, имеющий четыре 32-разрядных элемента (А0-А3) данных. Каждый из этих элементов упакованных данных может иметь соответствующий разряд маски. Например, в проиллюстрированном варианте воплощения изобретения, самый старший разряд каждого 32-разрядного элемента данных представляет разряд маски. В других вариантах воплощения изобретения, вместо этого могут быть использованы размеры элементов данных, имеющие либо более низкую разрядность, либо более высокую разрядность, и/или в качестве разрядов маски могут быть использованы другие разряды, отличные от самого старшего разряда. В проиллюстрированном приводимом в качестве примера варианте воплощения изобретения, элемент (А0) данных с самыми младшими 32 разрядами имеет разряд (М0а) маски, 32-разрядный элемент (А1) данных имеет разряд (M0b) маски, 32-разрядный элемент (А2) данных имеет разряд (М0с) маски, а элемент (A3) данных с самыми старшими 32 разрядами имеет разряд (M0d) маски. Разряды (M0a, M0b, M0c и M0d) маски представляют маску (M0) операции над упакованными данными. На этом втором представлении, разряды маски в этом 128-разрядном регистре (Y0) (то есть, M0a, M0b, M0c и M0d) логически рассматриваются в качестве единой маски операции над упакованными данными (например, могут быть использованы одной и той же  командой обработки упакованных данных для одной и той же  операции над упакованными данными).
В проиллюстрированном варианте воплощения изобретения имеется два различных представления. В других вариантах воплощения изобретения, может иметься три или больше различных представления. Например, третье представление может рассматривать четыре из 64-разрядных регистров (Х0)-(X3) в качестве единого 256-разрядного регистра (Z0). В различных вариантах воплощения изобретения, реальные физические регистры, используемые для реализации этих представлений, могут представлять собой 32-разрядные регистры, 64-разрядные регистры или 128-разрядные регистры, хотя объем изобретения этим не ограничен. Могут быть использованы логические регистры как с более высокой, так и с более низкой разрядностью, чем 64 разряда и 128 разрядов. В проиллюстрированном варианте воплощения изобретения используются смежные или расположенные друг за другом регистры, хотя это и не является обязательным требованием. В других вариантах воплощения изобретения, могут быть объединены несмежные регистры (например, несмежные регистры в различных блоках регистров, перемежающиеся регистры и так далее).
Как показано на фиг. 9-12, в некоторых вариантах воплощения изобретения, набор регистров упакованных данных может быть использован в качестве регистров маски. В некоторых вариантах воплощения изобретения, в качестве регистров маски может быть использовано только некоторое подмножество от общего количества регистров упакованных данных. Например, в одном конкретном варианте воплощения изобретения, для  с использованием одного из подходов, которые показаны на фиг. 9-12, могут быть использованы только восемь регистров упакованных данных из более многочисленного набора регистров упакованных данных. Полезно, что это может позволить специфицировать некоторый заданный регистр из числа этих регистров в качестве источника одной или более маски операции над упакованными данными, используя меньшее количество разрядов, необходимых для этого специфицирования (например, три разряда в случае восьми регистров). В некоторых вариантах воплощения изобретения, некоторое заданное или предварительно определенное значение в наборе разрядов, специфицирующем регистр маски (например, значение, составляющее ноль) может быть использовано для того, чтобы отключить , так что может быть достигнуто повышение эффективности благодаря тому, что избегается ненужная предикация тогда, когда в ней нет необходимости.
Приводимые в качестве примера архитектуры ядра, процессоры и архитектуры компьютера
Ядра процессора могут быть реализованы различным образом, для различных целей и в различных процессорах. Например, варианты реализации таких ядер могут включать в себя: 1) универсальное ядро без переупорядочения последовательности команд, предназначенное для универсальных вычислений; 2) высокопроизводительное универсальное ядро с переупорядочением последовательности команд, предназначенное для универсальных вычислений; 3) специализированное ядро, предназначенное, главным образом, для вычислений (обрабатываемых объемов) графических и/или научных данных. Варианты реализации различных процессоров могут включать в себя: 1) центральный процессор, включающий в себя одно или более универсальных ядер без переупорядочения последовательности команд, которые (ядра) предназначены для универсальных вычислений, и/или одно или более универсальных ядер с переупорядочением последовательности команд, которые (ядра) предназначены для универсальных вычислений; и 2) сопроцессор, включающий в себя одно или более специализированных ядер, предназначенных, главным образом, для (обрабатываемых объемов) графических и/или научных данных. Такие различные процессоры приводят к различным архитектурам вычислительных систем, которые могут включать в себя: 1) сопроцессор на отдельной, от центрального процессора, микросхеме; 2) сопроцессор на отдельном кристалле в том же самом корпусе, что и центральный процессор; 3) сопроцессор на том же самом кристалле, что и центральный процессор (в этом случае, такого рода сопроцессор иногда именуется как специализированная логика, такая как интегрированная логика для (обрабатываемых объемов) графических и/или научных данных, или как специализированные ядра); и 4) внутрикристальную систему, которая может включать в себя на одном и том же кристалле описанный центральный процессор (иногда именуемый как прикладное ядро (прикладные ядра) или прикладной процессор (прикладные процессоры)), вышеописанный сопроцессор и дополнительные функциональные элементы. Далее описываются приводимые в качестве примера архитектуры ядра, за которыми следуют описания приводимых в качестве примера архитектур процессоров и компьютера.
Приводимые в качестве примера архитектуры ядра
Блок-схема ядра без переупорядочения последовательности команд и с переупорядочением последовательности команд
Фиг. 13А представляет собой блок-схему, на которой проиллюстрированы как приводимый в качестве примера конвейер без переупорядочения последовательности команд, так и приводимый в качестве примера конвейер с переименованием регистров, переупорядочиванием последовательности выдачи/исполнения команд, соответствующие вариантам воплощения изобретения. Фиг. 13В представляет собой блок-схему, на которой проиллюстрировано как приводимый в качестве примера вариант воплощения ядра, имеющего архитектуру без переупорядочения последовательности команд, так и приводимое в качестве примера ядро, имеющее архитектуру с переименованием регистров, переупорядочиванием последовательности выдачи/исполнения команд, подлежащие включению в состав процессора, соответствующего вариантам воплощения изобретения. Прямоугольники, вычерченные на фиг. 13А-В сплошной линией, иллюстрируют конвейер без переупорядочения последовательности команд и ядро без переупорядочения последовательности команд, в то время как необязательное добавление прямоугольников, вычерченных пунктирной линией, иллюстрирует конвейер и ядро с переименованием регистров, переупорядочением последовательности выдачи/исполнения команд. Учитывая, что аспект без переупорядочения последовательности команд представляет собой подмножество аспекта с переупорядочением последовательности команд, опишем аспект с переупорядочением последовательности команд.
На фиг. 13А процессорный конвейер (1300) включает в себя: стадию (1302) выборки, стадию (1304) декодирования длины, стадию (1306) декодирования, стадию (1308) распределения, стадию (1310) переименования, стадию (1312) планирования (также известного как диспетчеризация или выдача), стадию (1314) считывания из регистра/считывания из памяти, стадию (1316) исполнения, стадию (1318) записи в обратном направлении/записи в память, стадию (1322) обработки исключительных ситуаций и стадию (1324) фиксации.
На фиг. 13В показано ядро (1390) процессора, включающее в себя блок (1330) передней части, сопряженный с блоком (1350) исполняющей машины, и оба этих блока сопряжены с запоминающим блоком (1370). Ядро (1390) может представлять собой ядро для вычислений с сокращенным набором команд (RISC-ядро), ядро для вычисления со сложным набором команд (CISC-ядро), ядро с командными словами сверхбольшой длины (VLIW-ядро) или габридный или альтернативный тип ядра. В качестве еще одного другого необязательного варианта, ядро (1390) может представлять собой специализированное ядро, такое как, например, сетевое ядро или ядро для связи, машину сжатия данных, сопроцессорное ядро, ядро универсального вычислительного блока обработки графических данных (GPGPU-ядро), графическое ядро или тому подобное.
Блок (1330) передней части включает в себя блок (1332) предсказания ветвей, сопряженное с блоком (1334) кэша команд, который сопряжен с буфером (1336) быстрого преобразования адреса (TLB-буфером) команд, который сопряжен с блоком (1338) выборки команд, который сопряжен с декодирующим блоком (1340). Декодирующий блок (1340) (или декодер) может декодировать команды и генерировать, в качестве своей выходной информации, одну или более микроопераций, точек входа в микрокод, микрокоманд, других команд или другие управляющие сигналы, которые декодируются из первоначальных команд, или которые иным образом отражают эти команды или выведены из них. Декодирующий блок (1340) может быть реализован с использованием всевозможных различных механизмов. Примеры подходящих механизмов включают в себя: таблицы поиска, варианты реализации посредством аппаратных средств, программируемые логические матрицы (PLA-матрицы), постоянные запоминающие устройства (ПЗУ-устройства) для микрокода и так далее, но не ограничены ими. В одном варианте воплощения изобретения, ядро (1390) включает в себя постоянное запоминающее устройство для микрокода или другой носитель информации, который хранит микрокод для некоторых макрокоманд (например, в декодирующем блоке (1340) или иным образом в пределах блока (1330) передней части). Декодирующий блок (1340) сопряжен с переименовывающим/распределяющим блоком (1352) в блоке (1350) исполняющей машины.
Блок (1350) исполняющей машины включает в себя переименовывающий/распределяющий блок (1352), сопряженный с блоком (1354) изъятия и набором из одного или более блока (блоков) (1356) планировщика. Блок (блоки) (1356) планировщика представляет (представляют) любое количество различных планировщиков, включающих в себя станции резерваций, центральное окно команды и так далее. Блок (блоки) (1356) планировщика сопряжен (сопряжены) с блоком (блоками) (1358) физического регистрового файла (физических регистровых файлов). Каждый из блоков (1358) физического регистрового файла (физических регистровых файлов) представляет один или более физических регистровых файлов, различные из которых хранят один или более различных типов данных, таких как скалярные целочисленные данные, скалярные данные с плавающей запятой, упакованные целочисленные данные, упакованные данные с плавающей запятой, векторные целочисленные данные, векторные данные с плавающей запятой, данные о состоянии (например, указатель команды, который представляет собой адрес следующей команды, подлежащей исполнению) и так далее. В одном варианте воплощения изобретения, блок (1358) физического регистрового файла (физических регистровых файлов) содержит блок векторных регистров, блок регистров маски записи и блок скалярных регистров. Эти блоки регистров могут обеспечивать архитектурные векторные регистры, векторные регистры маски и регистры общего назначения. Блок (блоки) (1358) физического регистрового файла (физических регистровых файлов) перекрывается (перекрываются) блоком (1354) изъятия, что иллюстрирует разнообразные методы, посредством которых может быть осуществлено переименование регистров и исполнение с переупорядочением последовательности команд (например, посредством использования переупорядочивающего буфера (переупорядочивающих буферов) и регистрового файла (регистровых файлов) изъятия; посредством использования будущего файла (будущих файлов), буфера (буферов) предыстории и регистрового файла (регистровых файлов) изъятия; посредством использования карт регистров и пула регистров; и так далее). Блок (1354) изъятия и блок (блоки) (1358) физического регистрового файла (физических регистровых файлов) сопряжены с исполняющим кластером (исполняющими кластерами) (1360). Исполняющий кластер (исполняющие кластеры) (1360) включает (включают) в себя набор из одного или боле исполняющих блоков (1362) и набор из одного или более блоков (1364) доступа к памяти. Исполняющие блоки (1362) могут выполнять разнообразные операции (например, сдвиги, сложение, вычитание, умножение) и над разнообразными типами данных (например, скалярными данными с плавающей запятой, упакованными целочисленными данными, упакованными данными с плавающей запятой, векторными целочисленными данными, векторными данными с плавающей запятой). Притом что некоторые варианты воплощения изобретения могут включать в себя некоторое количестве исполняющих блоков, выделенных для конкретных функций или наборов функций, другие варианты воплощения изобретения могут включать в себя только один исполняющий блок или множественные исполняющие блоки, все из которых выполняют все функции. Блок (блоки) (1356) планировщика, блок (блоки) (1358) физического регистрового файла (физических регистровых файлов) и исполняющий кластер (исполняющие кластеры) (1360) показаны как, возможно, имеющиеся во множественном числе, потому что в некоторых вариантах воплощения изобретения создаются раздельные конвейеры для некоторых типов данных/операций (например, конвейер для скалярных целочисленных данных, конвейер для скалярных данных с плавающей запятой/упакованных целочисленных данных/упакованных данных с плавающей запятой/векторных целочисленных данных/векторных данных с плавающей запятой и/или конвейер доступа к памяти, каждые из которых (конвейеров) имеют свои собственные блок планировщика, блок физического регистрового файла (физических регистровых файлов) и/или исполняющий кластер, а в случае отдельного конвейера доступа к памяти, реализованы некоторые варианты воплощения изобретения, в которых блок (блоки) (1364) доступа к памяти имеется (имеются) только у исполняющего кластера этого конвейера. Следует также понимать, что там, где используются раздельные конвейеры, один или больше из этих конвейеров может представлять собой конвейер с переупорядочиванием последовательности выдачи/исполнения команд, а остальные без упорядочения этой последовательности.
Набор блоков (1364) доступа к памяти сопряжен с запоминающим блоком (1370), который включает в себя блок (1372) TLB (буфера быстрого преобразования адреса) для данных, сопряженный с блоком (1374) кэша данных, сопряженным с блоком (1376) кэша уровня 2 (L 2). В одном приводимом в качестве примера варианте воплощения изобретения, блоки (1364) доступа к памяти могут включать в себя блок загрузки, блок сохранения адреса и блок сохранения данных, каждый из которых сопряжен с блоком (1372) TLB для данных, находящимся в запоминающем блоке (1370). Кроме того, с блоком (1376) кэша уровня 2 (L 2), находящимся в запоминающем блоке (1370), сопряжен блок (1334) кэша команд. Блок (1376) кэша уровня 2 сопряжен с одним или более другими уровнями кэша и, в конечном счете, с основной памятью.
В порядке примера отметим, что эта приводимая в качестве примера архитектура ядра с переименованием регистров, с переупорядочиванием последовательности выдачи/исполнения команд может реализовывать конвейер (1300) следующим образом: 1) блок (1338) выборки команд выполняет стадии (1302 и 1304) выборки и декодирования длины; 2) декодирующий блок (1340) выполняет стадию (1306) декодирования; 3) переименовывающий/распределяющий блок (1352) выполняет стадию (1308) распределения и стадию (1310) переименования; 4) блок (блоки) (1356) планировщика выполняет (выполняют) стадию (1312) планирования; 5) блок (блоки) (1358) физического регистрового файла (физических регистровых файлов) и запоминающее блок (1370) выполняют стадию (1314) считывания из регистра/считывания из памяти; исполняющий кластер (1360) выполняет стадию (1316) исполнения; 6) запоминающее блок (1370) и блок (блоки) (1358) физического регистрового файла (физических регистровых файлов) выполняют стадию (1318) записи в обратном направлении/записи в память; 7) в стадию (1322) обработки исключительных ситуаций могут быть вовлечены разнообразные блоки; и 8) блок (1354) изъятия и блок (блоки) (1358) физического регистрового файла (физических регистровых файлов) выполняют стадию (1324) фиксации.
Ядро (1390) может поддерживать один или более наборов команд (например, набор команд х86 (с некоторыми расширениями, которые были добавлены в более новых версиях)); набор (MIPS) команд от MIPS Technologies, Саннивейл, штат Калифорния, США; набор (ARM) команд (с необязательными дополнительными расширениями, такими как NEON) от ARM Holdings, Саннивейл, штат Калифорния, США, включающие в себя команду (команды), описанную (описанные) здесь. В одном варианте воплощения изобретения, ядро (1390) включает в себя логику для поддержки расширения набора команд для упакованных данных (например, расширения AVX1, AVX2), делая, таким образом, возможными операции, используемые многими мультимедийными приложениями, выполняемыми с использованием упакованных данных.
Следует понимать, что ядро может поддерживать многопоточную обработку (исполнение двух или больше параллельных наборов операций или потоков обработки), и может делать это разнообразными методами, включающими в себя многопоточную обработку с квантованием времени, одновременную многопоточную обработку (при которой одно физическое ядро предоставляет логическое ядро для каждого из потоков обработки, одновременная многопоточная обработка которых осуществляется этим физическим ядром) или сочетание этих методов (например, выборка и декодирование с квантованием времени, а после этого одновременная многопоточная обработка, так, как это делается в технологии Intel Hyperthreading technology (Технологии гиперпоточной обработки Intel).
Следует понимать, что, хотя переименование регистров описано в контексте исполнения с переупорядочиванием последовательности команд, переименование регистров может быть использовано в архитектуре без переупорядочивания последовательности команд. Хотя проиллюстрированный вариант воплощения процессора также включает в себя раздельные блоки (1334/1374) кэша команд и данных и совместно используемый блок (1376) кэша уровня 2, альтернативные варианты воплощения изобретения могут иметь единый внутренний кэш, как для команд, так и для данных, такой как, например, внутренний кэш уровня 1 (L 1) или множественные уровни внутреннего кэша. В некоторых вариантах воплощения изобретения, система может включать в себя сочетание внутреннего кэша и внешнего кэша, который является внешним по отношению к ядру и/или процессору. В качестве альтернативы, весь кэш может быть внешним по отношению к ядру и/или процессору.
Конкретная приводимая в качестве примера архитектура ядра без переупорядочения последовательности команд
На фиг. 14А-В проиллюстрирована блок-схема более конкретной приводимой в качестве примера архитектуры ядра без переупорядочения последовательности команд, каковое ядро было бы одним из нескольких логических блоков (включающих в себя другие ядра того же самого типа и/или других типов) в микросхеме. Логические блоки поддерживают связь через широкополосную сеть межсоединений (например, кольцевую сеть) с некоторой неизменяемой функциональной логикой, интерфейсами ввода-вывода для памяти и другой необходимой логикой ввода-вывода, в зависимости от варианта применения.
Фиг. 14А представляет собой блок-схему одиночного ядра процессора наряду с его соединением с расположенной на кристалле сетью (1402) межсоединений и с его локальным подмножеством (1404) кэша уровня 2 (L 2), соответствующими вариантам воплощения изобретения. В одном варианте воплощения изобретения, декодер (1400) команд поддерживает набор команд (х86) с расширением набора команд для обработки упакованных данных. Кэш (1406) уровня 1 делает возможным имеющие малое время ожидания доступы к кэш-памяти в скалярные и векторные блоки. Хотя в одном варианте воплощения изобретения (для того, чтобы упростить конструкцию), скалярный блок (1408) и векторный блок (1410) используют раздельные наборы регистров (соответственно, скалярные регистры (1412) и векторные регистры 1414), и данные, передаваемые между ними, записываются в память и затем считываются в них в обратном направлении из кэша (1406) уровня 1 (L I), в альтернативных вариантах воплощения изобретения может использоваться другой подход (например, использование единого набора регистров или введение тракта связи, который позволяет передавать данные между этими двумя регистровыми файлами, не записывая их и не считывая их в обратном направлении).
Локальное подмножество (1404) кэша уровня 2 представляет собой часть глобального кэша уровня 2, который разделен на отдельные локальные подмножества, по одному на ядро процессора. Каждое ядро процессора имеет тракт прямого доступа к своему собственному локальному подмножеству (1404) кэша уровня 2. Данные, считываемые ядром процессора, сохраняются в его локальном подмножестве (1404) кэша уровня 2, и доступ к ним может быть осуществлен быстро, параллельно с другими ядрами процессора, осуществляющими доступ к своим собственным локальным подмножествам кэша уровня 2. Данные, записанные ядром процессора, сохраняются в его собственном локальном подмножестве (1404) кэша уровня 2 и, в случае необходимости, сбрасываются из других подмножеств. Кольцевая сеть обеспечивает когерентность для совместно используемых данных. Кольцевая сеть является двунаправленной для того, чтобы позволять агентам, таким как ядра процессора, кэши уровня 2 и другие логические блоки, поддерживать связь друг с другом в пределах микросхемы. Каждый кольцевой тракт передачи данных имеет разрядность, составляющую 1012 разрядов, приходящихся на одно направление.
Фиг. 14В представляет собой расширенное представление части ядра процессора, показанного на фиг. 14А, соответствующего вариантам воплощения изобретения. Фиг. 14В включает в себя кэш (1406А) уровня 1 для данных, являющийся частью кэша (1404) уровня 1, так же как и больше подробностей, относящихся к векторному блоку (1410) и векторным регистрам (1414). В частности, векторный блок (1410) представляет собой 16-разрядное устройство обработки векторных данных (VPU-устройство) (смотри 16-разрядное арифметико-логическое устройство (1428)), которое исполняет одну или больше команд целочисленных вычислений, вычислений с обычной точностью с плавающей запятой и вычислений с двойной точностью с плавающей запятой. Устройство обработки векторных данных поддерживает настройку по адресам входов регистра посредством блока (1420) настройки по адресам, числовое преобразование посредством блоков (1422 А-В) числового преобразования и копирование посредством блока (1424) копирования на входе памяти. Регистры (1426) маски записи позволяют осуществлять предикацию записей результирующего вектора.
Процессор с интегрированным контроллером памяти и графическими средствами
Фиг. 15 представляет собой блок-схему процессора (1500), который может иметь более чем одно ядро, может иметь интегрированный контроллер памяти и может иметь интегрированные графические средства в соответствии с вариантами воплощения изобретения. Прямоугольники, очерченные на фиг. 15 сплошной линией, иллюстрируют процессор (1500) с единственным ядром (1502 А), системного агента (1510), набор из одного или более блоков (1516) шинного контроллера, в то время как необязательное добавление прямоугольников, очерченных пунктирной линией, иллюстрирует альтернативный процессор (1500) с множественными ядрами (1502 A-N), набор из одного или более блока (блоков) (1514) интегрированного контроллера памяти в блоке (1510) системного агента и специализированную логику (1508).
Таким образом, различные варианты реализации процессора (1500) могут включать в себя: 1) центральный процессор со специализированной логикой (1508), представляющей собой интегрированную логику для (обрабатываемых объемов) графических и/или научных данных (которая может включать в себя одно или более ядер), и ядра (1502 А-N), представляющие собой одно или более универсальных ядер (например, универсальных ядер без переупорядочения последовательности команд, универсальных ядер с переупорядочением последовательности команд, сочетание этих двух типов ядер); 2) сопроцессор с ядрами (1502 A-N), представляющими собой большое количество специализированных ядер, предназначенных, главным образом, для (обрабатываемых объемов) графических и/или научных данных; и 3) сопроцессор с ядрами (1502 A-N), представляющими собой большое количество универсальных ядер без переупорядочения последовательности команд. Таким образом, процессор (1500) может представлять собой универсальный процессор, сопроцессор или специализированный процессор, такой как, например, сетевой процессор или процессор передачи данных, машина сжатия данных, графический процессор, GPGPU (универсальное устройство обработки графических данных), высокопроизводительный сопроцессор с многими интегрированными ядрами (MIC-сопроцессор) (включающий в себя 30 или больше ядер), встроенный процессор или тому подобное. Процессор может быть реализован на одной или более микросхемах. Процессор (1500) может являться частью одной или более подложек и/или может быть реализован на одной или более подложках с использованием любого из ряда технологических процессов, таких как, например, BiCMOS (биполярная комплементарная структура "металл-оксид-полупроводник"), CMOS (комплементарная структура "металл-оксид-полупроводник") или NMOS (п-канальная структура "металл-оксид-полупроводник").
Иерархия памяти включает в себя один или более уровней кэша в пределах ядер, набор из одного или более совместно используемых блоков (1506) кэша и внешнюю память (не показанную на чертеже), сопряженную с набором блоков (1514) интегрированного контроллера памяти. Набор совместно используемых блоков (1506) кэша может включать в себя один или более кэшей среднего уровня, таких как уровня 2 (L 2), уровня 3 (L 3), уровня 4 (L 4) или других уровней кэша, кэш последнего уровень (LLC-кэш) и/или их сочетания. Хотя в одном варианте воплощения изобретения межсоединение между интегрированной логикой (1508) графики, набором совместно используемых блоков (1506) кэша и блоком (1510) системного агента/блоком (блоками) (1514) интегрированного контроллера памяти осуществляет блок (1512) межсоединения, основанный на кольце, в альтернативных вариантах воплощения изобретения может использоваться любое количество хорошо известных технологий для межсоединения таких блоков. В одном варианте воплощения изобретения, поддерживается когерентность между одним или более блоками (1506) кэша и ядрами (1502-N).
В некоторых вариантах воплощения изобретения, одно или более ядер (1502 A-N) способны к многопоточной обработке данных. Системный агент (1510) включает в себя те компоненты, которые координируют и управляют ядрами (1502 A-N). Блок (1510) системного агента может включать в себя, например, блок управления электропитанием (PCU-блок) и блок отображения. Блок управления электропитанием может представлять собой или включать в себя логику и компоненты, необходимые для регулирования состояние электропитания ядер (1502 A-N) и интегрированной логики (1508) графики. Блок отображения предназначен для приведения в действие одного или более подсоединенных внешним образом устройств отображения.
Ядра (1502 A-N) могут быть однородными или неоднородными в том, что касается набора команд архитектуры; то есть, два или более из ядер (1502 A-N) могут быть способны исполнять один и тот же набор команд, в то время как другие могут быть способны исполнять только некоторое подмножество этого набора команд или другой набор команд.
Приводимая в качестве примера архитектура вычислительной системы
Фиг. 16-19 представляют собой блок-схемы приводимых в качестве примера архитектур вычислительных систем. Также подходящими являются и другие конструкции и конфигурации систем, известные в данных областях техники для переносных компьютеров, настольных компьютеров, карманных персональных компьютеров, персональных цифровых секретарей, инженерных рабочих станций, серверов, сетевых устройств, сетевых концентраторов, коммутаторов, встроенных процессоров, процессоров цифровой обработки сигналов (DSP-процессоров), графических устройств, игровых видеоустройств, телевизионных абонентских приставок, микроконтроллеров, сотовых телефонов, портативных универсальных проигрывателей, ручных устройств и разнообразных других электронных устройств. В общем, обычно подходящим является огромное разнообразие систем или электронных устройств, в состав которых может быть введен процессор и/или другая исполняющая логики, которые раскрываются в данном описании.
Обратимся теперь к фиг. 16, на которой показана блок-схема системы (1600) в соответствии с одним вариантом воплощения настоящего изобретения. Система (1600) может включать в себя один или более процессоров (1610), (1615), которые сопряжены с концентратором-контроллером (1620). В одном варианте воплощения изобретения концентратор-контроллер (1620) включает в себя концентратор-контроллер (GMCH-концентратор) (1690) памяти графических данных и концентратор ввода-вывода (IOH-концентратор) (1650) (которые могут находиться на раздельных микросхемах); концентратор-контроллер (1690) памяти графических данных включает в себя контроллер памяти и графический контроллер, с которыми сопряжены память (1640) и сопроцессор (1645); концентратор (1650) ввода-вывода сопрягает с концентратором-контроллером (1690) памяти графических данных устройства (1660) ввода-вывода (I/O-устройства). В качестве альтернативы, один или оба контроллера из числа: контроллера памяти и графического контроллера, интегрированы в пределах процессора (как здесь описано), память (1640) и сопроцессор (1645) сопряжены непосредственно с процессором (1610), и концентратором-контроллером (1620) в единой микросхеме с концентратором (1650) ввода-вывода.
Необязательная природа дополнительных процессоров (1615) обозначена на фиг. 16 пунктирными линиями. Каждый процессор (1610), (1615) может включать в себя одно или больше описанных здесь обрабатывающих ядер и может представлять собой некоторую версию процессора (1500).
Память (1640) может представлять собой, например, динамическое оперативное запоминающее устройство (DRAM), память с изменением фазы (РСМ-память) или сочетание этих двух типов памяти. По меньшей мере, для одного варианта воплощения изобретения, концентратор-контроллер (1620) поддерживает связь с процессором (процессорами) (1610), (1615) через многоотводную шину, такую как управляющая шина (FSB-шина), двухточечный интерфейс, такой как межсоединение QuickPath (QPI-межсоединение) или аналогичное соединение (1695).
В одном варианте воплощения изобретения, сопроцессор (1645) представляет собой специализированный процессор, такой как, например, высокопроизводительный MIC-процессор (процессор с многими интегрированными ядрами), сетевой процессор или процессор передачи данных, машина сжатия данных, графический процессор, GPGPU (универсальное устройство обработки графических данных), встроенный процессор или тому подобное. В одном варианте воплощения изобретения, концентратор-контроллер (1620) может включать в себя интегрированный графический акселератор.
Может иметь место многообразие различий между физическими ресурсами (1610), (1615) в том, что касается спектра показателей их качества, включающих в себя архитектурные, микроархитектурные, тепловые характеристики, характеристики энергопотребления и тому подобное.
В одном варианте воплощения изобретения, процессор (1610) исполняет команды, которые управляют операциями по обработке данных, относящимися к общему типу. В пределах этих команд могут быть встроены команды для сопроцессора. Процессор (1610) распознает эти команды для сопроцессора как относящиеся к типу, который подлежит выполнению приданным сопроцессором (1645). Соответственно, процессор (1610) выдает эти команды для сопроцессора (или управляющие сигналы, представляющие команды для сопроцессора) по шине сопроцессора или по другому межсоединению в сопроцессор (1645). Сопроцессор(ы) (1645) принимает (принимают) и исполняет (исполняют) принятые команды для сопроцессора.
Обратимся теперь к фиг. 17, на которой показана блок-схема первой более конкретной системы (1700), приводимой в качестве примера, в соответствии с одним вариантом воплощения настоящего изобретения. Как показано на фиг. 17, многопроцессорная система (1700) представляет собой систему с двухточечными межсоединениями, и включает в себя первый процессор (1770) и второй процессор (1780), сопряженные через двухточечное межсоединение (1750). Каждый из процессоров: (1770) и (1780) может представлять собой некоторую версию процессора (1500). В одном варианте воплощения изобретения, процессоры (1770) и (1780) представляют собой, соответственно, процессоры (1610) и (1615), в то время как сопроцессор (1738) представляет собой сопроцессор (1645). В другом варианте воплощения изобретения, процессоры (1770) и (1780) представляют собой, соответственно, процессор (1610), сопроцессор (1645).
Процессоры (1770) и (1780) показаны включающими в себя, соответственно, блоки (1772) и (1782) интегрированных контроллеров памяти (IMC-контроллеров). Процессор (1770) также включает в себя, как часть своих блоков - шинных контроллеров, двухточечные (Р-Р) интерфейсы (1776) и (1778); аналогичным образом, второй процессор (1780) включает в себя (двухточечные) интерфейсы (1786) и (1788). Процессоры (1770), (1780) могут осуществлять обмен информацией через двухточечный (Р-Р) интерфейс (1750) с использованием схем (1778), (1788) (двухточечного) интерфейса. Как показано на фиг. 17, интегрированные контроллеры (1772) и (1782) памяти (ГМС-контроллеры) сопрягают процессоры с соответствующими запоминающими устройствами, а именно, с памятью (1732) и памятью (1734), которые могут являться частями основной памяти, локально закрепленными за соответствующими процессорами.
Процессоры (1770), (1780) могут каждый осуществлять обмен информацией с набором (1790) микросхем через индивидуальные двухточечные интерфейсы (1752), (1754), использующие схемы (1776), (1794), (1786), (1798) двухточечных интерфейсов. Набор (1790) микросхем может, если требуется, осуществлять обмен информацией с сопроцессором (1738) через высокопроизводительный интерфейс (1739). В одном варианте воплощения изобретения, сопроцессор (1738) представляет собой специализированный процессор, такой как, например, высокопроизводительный MIC-процессор (процессор с многими интегрированными ядрами), сетевой процессор или процессор передачи данных, машина сжатия данных, графический процессор, GPGPU (универсальное устройство обработки графических данных), встроенный процессор или тому подобное.
В состав любого из процессоров или вне обоих процессоров может быть введен совместно используемый кэш (не показанный на чертеже); к тому же соединенный с процессорами через двухточечное межсоединение, таким образом, что информация локального кэша любого или обоих процессоров может быть сохранена в этом совместно используемом кэше, если процессор переведен в режим низкого энергопотребления.
Набор (1790) микросхем может быть сопряжен с некоторой первой шиной (1716) через интерфейс (1796). В одном варианте воплощения изобретения, первая шина (1716) может представлять собой шину Межсоединения периферийных компонентов (шину PCI), или шину, такую как шина PCI Express (Скоростного Межсоединения периферийных компонентов) или другая шина межсоединения ввода/вывода, относящаяся к третьему поколению, хотя объем настоящего изобретения этим не ограничен.
Как показано на фиг. 17, с первой шиной (1716) могут быть сопряжены разнообразные устройства (1714) ввода/вывода, наряду с мостом (1718) между шинами, который сопрягает первую шину (1716) с некоторой второй шиной (1720). В одном варианте воплощения изобретения, с первой шиной (1716) сопряжены один или более дополнительный процессор (дополнительных процессоров) (1715), таких как сопроцессоры, высокопроизводительные MIC-процессоры (процессоры с многими интегрированными ядрами), GPGPU-устройства (универсальные устройства обработки графических данных), акселераторы (такие как, например, графические акселераторы или блоки процессоров цифровой обработки сигналов (DSP-процессоров), вентильные матрицы с эксплуатационным программированием, или любой другой процессор. В одном варианте воплощения изобретения, вторая шина (1720) может представлять собой шину с малым количеством выводов (LPC-шину). Со второй шиной (1720) могут быть сопряжены разнообразные устройства, включающие в себя, например, клавиатуру и/или "мышь" (1722), устройства (1727) связи и запоминающий блок (1728), такое как дисковод или другое запоминающее устройство большой емкости, которое, в одном варианте воплощения изобретения, может включать в себя команды/код и данные (1730). Кроме того, со второй шиной (1720) может быть сопряжено устройство (1724) ввода/вывода звука. Отметим, что возможны и другие архитектуры. Например, вместо двухточечной архитектуры, показанной на фиг. 17, в системе может быть реализована многоотводная шина или другая такая архитектура.
Обратимся теперь к фиг. 18, на которой показана блок-схема второй более конкретной системы (1800), приводимой в качестве примера, в соответствии с одним вариантом воплощения настоящего изобретения. Сходные элементы на фиг. 17-18 имеют сходные ссылочные позиции, и некоторые аспекты фиг. 17 были опущены на фиг. 18 для того, чтобы избежать затруднения понимания других аспектов фиг. 18.
На фиг. 18 проиллюстрировано то, что процессоры (1770), (1780) могут включать в себя интегрированную логику ("CL") (соответственно, (1772) и (1782)) управления памятью и вводом-выводом. Таким образом, логика (1772) и логика (1782) управления включают в себя блоки интегрированного контроллера памяти и включают в себя логику управления вводом/выводом. На фиг. 18 проиллюстрировано то, что с логикой (1772) и (1782) управления сопряжены не только память (1732), (1734), но также и то, что с логикой (1772), (1782) управления также сопряжены устройства (1814) ввода/вывода. Унаследованные устройства (1815) ввода/вывода сопряжены с набором (1790) микросхем.
Обратимся теперь к фиг. 19, на которой показана блок-схема внутрикристальной системы (SoC) (1900) в соответствии с одним вариантом воплощения настоящего изобретения. Элементы, аналогичные элементам на фиг. 15, имеют сходные с ними ссылочные позиции. Кроме того, прямоугольники, вычерченные пунктирной линией, представляют собой необязательные признаки в более усовершенствованных внутрикристальных системах. На фиг. 19, блок (блоки) (1902) межсоединений сопряжен (сопряжены) с: прикладным процессором (1910), который включает в себя набор из одного или более ядер (202 A-N) и блок (блоки) (1006) совместно используемого кэша; блоком (1510) системного агента; блоком (блоками) (1516) шинного контроллера; блоком (блоками) (1514) интегрированного контроллера памяти; набором из одного или более сопроцессоров (1920), которые могут включать в себя интегрированную логику графики, процессор изображений, процессор аудиоинформации и видеопроцессор; блоком (1930) статического оперативного запоминающего устройства (блоком SRAM); блоком (1932) прямого доступа к памяти (блоком DMA); и блоком (1940) отображения для сопряжения с одним или более внешними устройствами отображения. В одном варианте воплощения изобретения, сопроцессор(ы) (1920) включает (включают) в себя специализированный процессор, такой как, например, сетевой процессор или процессор передачи данных, машина сжатия данных, GPGPU (универсальное устройство обработки графических данных), высокопроизводительный MIC-процессор (процессор с многими интегрированными ядрами), встроенный процессор или тому подобное.
Варианты воплощения раскрытых здесь механизмов могут быть реализованы в виде аппаратного обеспечения, программного обеспечения, микропрограммного обеспечения или сочетания таких подходов к реализации изобретения. Варианты воплощения изобретения могут быть реализованы как компьютерные программы или программный код, исполняющийся на программируемых системах, содержащих, по меньшей мере, один процессор, запоминающую систему (включающую в себя энергозависимую и энергонезависимую память и/или запоминающие элементы), по меньшей мере, одно устройство ввода, и, по меньшей мере, одно устройство вывода.
Программный код, такой как код (1730), проиллюстрированный на фиг. 17, может быть применен к вводу команд для выполнения описанных здесь функций и для генерирования выходной информации. Выходная информация может быть применена, известным образом, к одному или более устройствам вывода. Для целей этой заявки, система обработки данных включает в себя любую систему, которая имеет процессор, такой как, например: процессор цифровой обработки сигналов (DSP-процессор), микроконтроллер, прикладная специализированная интегральная схема (ASIC) или микропроцессор.
Программный код может быть реализован на процедурном или объектно-ориентированном алгоритмическом языке высокого уровня для общения с системой обработки данных. Программный код может, если требуется, также быть реализован на языке ассемблера или машинном языке. Фактически, описанные здесь механизмы не ограничены в своем объеме никаким конкретным языком программирования. В любом случае, этот язык может быть транслируемым или интерпретируемым языком.
Один или более аспектов, по меньшей мере, одного варианта воплощения изобретения могут быть реализованы посредством представляющих команд, хранящихся на машиночитаемом носителе информации, который представляет различную логику внутри процессора, который при считывании его машиной заставляет машину создавать логику для выполнения описанных здесь технологий. Такие представления, известные как "IP-ядра", могут храниться на материальном, машиночитаемом носителе информации и поставляться различным клиентам или на производственные установки для загрузки в производственные машины, которые фактически создают эту логику или процессор.
Такие машиночитаемые носители информации могут включать в себя, но не в качестве ограничения, некратковременные материальные конфигурации изделий, изготовленных или образованных машиной или устройством, включающие в себя такие носители информации, как жесткие диски, любой другой тип диска, включающий в себя гибкие диски, оптические диски, постоянные запоминающие устройства на компакт-дисках (устройства CD-ROM), перезаписываемые компакт-диски (диски CD-RW) и магнитооптические диски, полупроводниковые устройства, такие как постоянные запоминающие устройства (ROM-устройства), оперативные запоминающие устройства (RAM-устройства), такие как динамические оперативные запоминающие устройства (DRAM-устройства), статические оперативные запоминающие устройства (SRAM-устройства), стираемые программируемые постоянные запоминающие устройства (EPROM-устройства), устройства флэш-памяти, электрически стираемые программируемые постоянные запоминающие устройства (EEPROM-устройства), память с изменением фазы (РСМ-память), магнитные или оптические карты, или любой другой тип носителей информации, подходящий для хранения электронных команд.
Соответственно, варианты воплощения изобретения также включают в себя некратковременные материальные машиночитаемые носители информации, содержащие команды или содержащие данные проектирования, такие как данные на Языке описания аппаратного обеспечения (языке HDL), которые определяют описанные здесь структуры, схемы, аппараты, процессоры и/или признаки системы. Такие варианты воплощения изобретения могут также упоминаться как программные продукты.
Эмуляция (включающая в себя двоичную трансляцию, трансформирование кода и так далее)
В некоторых случаях, для конвертирования команды из некоторого исходного набора команд в некоторый заданный набор команд может быть использован конвертор команд. Например, этот конвертор команд может транслировать (например, используя статическую двоичную трансляцию, динамическую двоичную трансляцию, включающую в себя динамическую компиляцию), трансформировать, эмулировать или иным образом конвертировать команду в одну или более других команд, подлежащих обработке ядром. Конвертор команд может быть реализован в виде программного обеспечения, аппаратного обеспечения, микропрограммного обеспечения или их сочетания. Конвертор команд может быть на процессоре, вне процессора или частично на процессоре, а частично вне процессора.
Фиг. 20 представляет собой блок-схему, на которой сравнивается использование конвертора команд, реализованного программными средствами, для того, чтобы конвертировать двоичные команды в некотором исходном наборе команд в двоичные команды в некотором заданном наборе команд в соответствии с вариантами воплощения изобретения. В проиллюстрированном варианте воплощения изобретения, конвертор команд представляет собой реализованный программными средствами конвертор команд, хотя, в качестве альтернативы, конвертор команд может быть реализован в виде программного обеспечения, микропрограммного обеспечения, аппаратного обеспечения или разнообразных их сочетаний. На фиг. 20 показано, что программа на языке (2002) высокого уровня может быть скомпилирована с использованием компилятора (2004) набора команд х86 для того, чтобы сгенерировать двоичный код (2006) набора команд х86, который может быть исполнен, в качестве собственного, процессором (2016) с, по меньшей мере, одним ядром с набором команд х86. Этот процессор (2016) с, по меньшей мере, одним ядром с набором команд х86 представляет любой процессор, который может выполнять, по существу, те же самые функции, что и процессор Intel с, по меньшей мере, одним ядром с набором команд х86, совместимым образом исполняя или иным образом обрабатывая (1) существенную часть набора команд ядра набора команд Intel х86 или (2) версии объектного кода приложений или другого программного обеспечения, предназначенных для исполнения на процессоре Intel с, по меньшей мере, одним ядром с набором команд х86, для того, чтобы достигнуть, по существу, того же самого результата, что и процессор Intel с, по меньшей мере, одним ядром с набором команд х86. Компилятор (2004) набора команд х86 представляет компилятор, который способен функционировать таким образом, чтобы генерировать двоичный код (2006) набора команд х86 (например, объектный код), который с дополнительной обработкой по редактированию связей или без этой обработки, может быть исполнен на этом процессоре (2016) с, по меньшей мере, одним ядром с набором команд х86. Аналогичным образом, на фиг. 20 показано, что программа на языке (2002) высокого уровня, может быть скомпилирована с использованием компилятора (2008) альтернативного набора команд для того, чтобы сгенерировать двоичный код (2010) альтернативного набора команд, который (код) может быть исполнен, в качестве собственного, процессором (2014) без хотя бы одного ядра с набором команд х86 (например, процессором с ядрами, которые исполняют набор команд MIPS от MIPS Technologies, г. Саннивейл, штат Калифорния, США и/или которые исполняют набор команд ARM от ARM Holdings, г. Саннивейл, штат Калифорния, США). Конвертор (2012) команд используется для того, чтобы конвертировать двоичный код (2006) набора команд х86 в код, который может быть исполнен, в качестве собственного, процессором (2014) без ядра с набором команд х86. Этот конвертированный код вряд ли будет таким же, как двоичный код (2010) альтернативного набора команд, потому что способный на это конвертор команд создать трудно; однако, конвертированный код будет выполнять эту общую операцию и будет составлен из команд из этого альтернативного набора команд. Таким образом, конвертор (2012) команд представляет программное обеспечение, микропрограммное обеспечение, аппаратное обеспечение или их сочетание, которые посредством эмуляции, моделирования или любого другого процесса позволяет процессору или другому электронному устройству, которое не имеет процессора или ядра с набором команд х86, исполнять двоичный код (2006) набора команд х86.
Компоненты, признаки и подробности, описанные для любой из фиг. 3-4 и/или фиг. 6-12 могут, если требуется, также быть использованы на любой из фиг. 1-2 и/или фиг. 5. Кроме того, компоненты, признаки и подробности, описанные здесь для любого аппарата могут, если требуется, также быть использованы в любом из описанных здесь способов, которые в вариантах воплощения изобретения могут быть выполнены таким аппаратом и/или посредством такого аппарата.
В этом описании и формуле изобретения были использованы термины "сопряженный" и/или "соединенный", наряду с производными от них словами. Следует понимать, что эти термины не подразумеваются в качестве синонимов друг другу. Скорее, в конкретных вариантах воплощения изобретения, термин "соединенный" может быть использован для того, чтобы указывать на то, что два или больше элементов находятся в непосредственном физическом или электрическом контакте друг с другом. Термин "сопряженный" может означать то, что два или больше элементов находятся в непосредственном физическом или электрическом контакте. Однако, термин "сопряженный" может также означать то, что два или больше элементов не находятся в непосредственном контакте друг с другом, но все-таки, тем не менее, содействуют друг другу или взаимодействуют друг с другом. Например, исполняющий блок может быть сопряжен с регистром посредством одного или более промежуточных компонентов. На фигурах, для показа соединений и сопряжений используются стрелки.
В этом описании и формуле изобретения мог быть использован термин "логика". В том значении, в котором он здесь используется, термин "логика" может включать в себя аппаратное обеспечение, микропрограммное обеспечение, программное обеспечение или разнообразные их сочетания. Примеры "логики" включают в себя интегральные схемы, прикладные специализированные интегральные схемы, аналоговые схемы, цифровые схемы, программируемые логические устройства, запоминающие устройства, включающие в себя команды, и так далее. В некоторых вариантах воплощения изобретения, реализованная аппаратными средствами логика может включать в себя транзисторы и/или вентили, возможно, наряду с другими компонентами схем. В некоторых вариантах воплощения изобретения, логика может быть воплощена как компонент, блок или другой модуль.
В приведенном выше описании, для того, чтобы обеспечить полное понимание вариантов воплощения изобретения, были изложены конкретные подробности. Однако, другие варианты воплощения изобретения могут быть осуществлены на практике без некоторых из этих конкретных подробностей. Объем изобретения не должен определяться по этим приведенным выше конкретным примерам, но только в соответствии с формулой изобретения, приводимой ниже. В других случаях, хорошо известные схемы, конструкции, устройства и операции были показаны в форме блок-схем или без подробностей для того, чтобы избежать затруднения понимания описания. Там, где были показаны и описаны множественные компоненты, в некоторых случаях эти множественные компоненты могут быть включены в состав одного компонента. Там, где был показан и описан один компонент, в некоторых случаях этот один компонент может быть разделен на два или более компонентов.
Были описаны разнообразные операции и способы. Некоторые из этих способов были описаны в относительно базовой форме в блок-схемах алгоритмов, но операции, если требуется, могут быть добавлены в эти способы или удалены из них. В дополнение к этому, хотя на блок-схемах алгоритмов показан некоторый конкретный порядок операций, соответствующий приводимым в качестве примера вариантам воплощения изобретения, этот конкретный порядок приводится в качестве примера. В альтернативных вариантах воплощения изобретения, если требуется, операции могут выполняться в другом порядке, некоторые операции могут объединяться, некоторые операции могут совмещаться и так далее.
Некоторые операции могут быть выполнены посредством компонентов, реализованных аппаратными средствами, или могут быть воплощены в исполняемых машиной или исполняемых схемой командах, которые могут быть использованы для того, чтобы заставить машину, схему или реализованный аппаратными средствами компонент (например, процессор, часть процессора, схемы и так далее), запрограммированный посредством этих команд, выполнять эти операции и/или для того, чтобы привести в результате к выполнению этими машиной, схемой или реализованным аппаратными средствами компонентом этих операций. Эти операции могут, если требуется, также быть выполнены посредством некоторого сочетания аппаратного обеспечения и программного обеспечения. Процессор, машина, схема или аппаратное обеспечение могут включать в себя специальные или особые схемы или другую логику (например, аппаратное обеспечение, возможно, объединенное с микропрограммным обеспечением и/или программным обеспечением), способную функционировать таким образом, чтобы в ответ на команду исполнять и/или обрабатывать команду и сохранять результат.
Некоторые варианты воплощения изобретения включают в себя изготовленное изделие (например, компьютерный программный продукт), которое включает в себя машиночитаемый носитель информации. Этот носитель информации может включать в себя механизм, который предоставляет, например, хранит, информацию в форме, которая может быть считана машиной. Машиночитаемый носитель информации может предоставлять, или хранить на себе, команду или последовательность команд, которые, если и/или когда они исполняются машиной, способны функционировать таким образом, чтобы заставлять машину выполнять одну из раскрытых здесь операций, способов или технологий, и/или чтобы приводить в результате к тому, чтобы машина их выполняла.
В некоторых вариантах воплощения изобретения, этот машиночитаемый носитель информации может включать в себя материальный и/или некратковременный машиночитаемый носитель информации. Например, этот материальный и/или некратковременный машиночитаемый носитель информации может включать в себя: гибкую дискету, оптический носитель информации, оптический диск, CD-ROM (постоянное запоминающее устройство на компакт-диске), магнитный диск, магнитооптический диск, постоянное запоминающее устройство (ROM), программируемое постоянное запоминающее устройство (PROM), стираемое и программируемое постоянное запоминающее устройство (EPROM), электрически стираемое и программируемое постоянное запоминающее устройство (EEPROM), оперативное запоминающее устройство (RAM), статическое оперативное запоминающее устройство (SRAM), динамическое оперативное запоминающее устройство (DRAM), флэш-память, память с изменением фазы, материал для запоминания данных посредством изменения фазы, энергонезависимую память, энергонезависимое запоминающее устройство для данных, некратковременную память, некратковременное запоминающее устройство для данных или тому подобное. Этот некратковременный машиночитаемый носитель информации не состоит из кратковременного распространяемого сигнала.
Примеры походящих машин включают в себя: универсальные процессоры, специализированные процессоры, аппарат для обработки команд, цифровые логические схемы, интегральные схемы и тому подобное, но не ограничиваются ими. Другие еще примеры подходящих машин включают в себя вычислительные устройства и другие электронные устройства, которые включают в себя такие процессоры, аппарат для обработки команд, цифровые логические схемы или интегральные схемы. Примеры таких вычислительных устройств и электронных устройств включают в себя: настольные компьютеры, переносные компьютеры, компьютеры типа "ноутбук", планшетные компьютеры, компьютеры "нетбук" (переносные компьютеры для работы в сети), "смартфоны" (мобильные телефоны, обладающие рядом функций компьютера), сотовые телефоны, серверы, сетевые устройства (например, маршрутизаторы и коммутаторы), мобильные Интернет-устройства (MID-устройства), универсальные проигрыватели, интеллектуальные телевизоры, сетевые приставки, телевизионные абонентские приставки и контроллеры для видеоигр, но не ограничиваются ими.
Ссылка повсюду в этом описании на "один вариант воплощения изобретения", "некоторый вариант воплощения изобретения", "один или более вариантов воплощения изобретения" "некоторые варианты воплощения изобретения", например, означает то, что некоторый конкретный признак может быть включен в практическое осуществление изобретения, но не требует своего включения туда в обязательном порядке. Аналогичным образом, в описании, в целях упрощения раскрытия и помощи в понимании разнообразных аспектов изобретения, разнообразные признаки иногда группируются вместе в одном варианте воплощения изобретения, на одной фигуре или ее описании. Этот способ раскрытия, однако, не должен интерпретироваться как отражение того намерения, что изобретение требует больше признаков, чем явным образом заявлено в каждом пункте формулы изобретения. Напротив, как отражено в нижеследующей формуле изобретения, аспекты изобретения заключаются в менее чем всех признаках одного раскрытого варианта воплощения изобретения. Таким образом, формула изобретения, следующая за детализированным его описанием, настоящим положительным образом включается в состав этого детализированного описания, при этом каждый пункт формулы изобретения выступает самостоятельно в качестве отдельного варианта воплощения изобретения.
Приводимые в качестве примера варианты воплощения изобретения
Нижеследующие примеры относятся к дополнительным вариантам воплощения изобретения. Особенности, содержащиеся в этих примерах, могут быть использованы где угодно в одном или более вариантах воплощения изобретения.
Пример 1 представляет собой процессор, включающий в себя некоторый первый режим, если требуется, в котором процессор не должен использовать  операции над упакованными данными, и некоторый второй режим, если требуется, в котором процессор должен использовать  операции над упакованными данными. Процессор включает в себя декодирующий блок для того, чтобы в первом режиме декодировать  команду обработки упакованных данных, предназначенную для некоторой данной операции над упакованными данными, а во втором режиме декодировать  команду обработки упакованных данных, предназначенную для  варианта данной операции над упакованными данными.  и  команды обработки упакованных данных имеют одну и ту же длину команды.  команда обработки упакованных данных имеет один или более (двоичных) разрядов для того, чтобы специфицировать маску операции над упакованными данными. С декодирующим блоком сопряжен один или более исполняющих блоков. Эти один или более исполняющих блоков должны, в ответ на декодирование декодирующим блоком, в первом режиме,  команды обработки упакованных данных, выполнять данную операцию над упакованными данными. Эти одно или более исполняющих блоков должны, в ответ на декодирование декодирующим блоком, во втором режиме,  команды обработки упакованных данных, выполнять  вариант данной операции над упакованными данными, используя эту специфицированную маску операции над упакованными данными.
Пример 2 включает в себя процессор по Примеру 1, если требуется, в котором длина команды составляет 32 разряда.
Пример 3 включает в себя процессор по Примеру 1, если требуется, в котором этот процессор включает в себя процессор для вычислений с сокращенным набором команд (RISC-процессор).
Пример 4 включает в себя процессор по Примеру 1, дополнительно включающий в себя некоторое множество регистров упакованных данных. Также, если требуется, в котором эти один или более разрядов  команды обработки упакованных данных должны специфицировать в качестве источника маски операции над упакованными данными регистр упакованных данных из этого множества.
Пример 5 включает в себя процессор по Примеру 4, если требуется, в котором маска операции над упакованными данными должна содержать некоторый разряд из каждого элемента данных из множества элементов данных в этом регистре упакованных данных.
Пример 6 включает в себя процессор по Примеру 4, если требуется, в котором этот регистр упакованных данных должен хранить эту маску операции над упакованными данными и, по меньшей мере, одну другую маску операции над упакованными данными.
Пример 7 включает в себя процессор по Примеру 6, если требуется, в котором в некотором первом представлении регистр упакованных данных должен хранить большее количество относительно малых масок операций над упакованными данными, а в некотором втором представлении должен хранить меньшее количество относительно больших масок операций над упакованными данными.
Пример 8 включает в себя процессор по Примеру 1, дополнительно включающий в себя некоторое множество регистров масок операций над упакованными данными. Кроме того, если требуется, в котором эти один или более разрядов  команды обработки упакованных данных должны специфицировать в качестве источника маски операции над упакованными данными некоторый регистр маски операции над упакованными данными из этого множества.
Пример 9 включает в себя процессор по любому из Примеров: 1-8, если требуется, в котором первый и второй режимы должны быть указаны одним или более разрядами в регистре процессора.
Пример 10 включает в себя процессор по любому из Примеров: 1-8, если требуется, в котором данная операция над упакованными данными и  вариант данной операции над упакованными данными включают в себя одну операцию из числа: (1) операции умножения упакованных данных и  операции умножения упакованных данных; (2) операции сложения упакованных данных и  операции сложения упакованных данных; (3) операции логического "И" в отношении упакованных данных и  операции логического "И" в отношении упакованных данных; (4) операции логического "ИЛИ" в отношении упакованных данных и  операции логического "ИЛИ" в отношении упакованных данных; и (5) операции сравнения упакованных данных и  операции сравнения упакованных данных.
Пример 11 представляет собой способ, выполняемый процессором. Способ включает в себя этап, на котором декодируют, в некотором первом режиме, в котором процессор не должен использовать  операции над упакованными данными,  команду обработки упакованных данных, предназначенную для некоторой данной операции над упакованными данными. Способ включает в себя этап, на котором выполняют, в ответ на декодирование  команды обработки упакованных данных в первом режиме, данную операцию над упакованными данными. Способ включает в себя этап, на котором декодируют, в некотором втором режиме, в котором процессор должен использовать  операции над упакованными данными,  команду обработки упакованных данных, предназначенную для  варианта данной операции над упакованными данными.  и  команды обработки упакованных данных имеют одну и ту же длину команды.  команда обработки упакованных данных имеет один или более (двоичных) разрядов для того, чтобы специфицировать маску операции над упакованными данными. Способ включает в себя этап, на котором выполняют, в ответ на декодирование  команды обработки упакованных данных, во втором режиме,  вариант данной операции над упакованными данными, используя эту специфицированную маску операции над упакованными данными.
Пример 12 включает в себя способ по Примеру 11, если требуется, в котором этап, на котором декодируют, включает в себя этап, на котором декодируют  и  команды обработки упакованных данных, каждая из которых имеет длину команды, составляющую 32 разряда.
Пример 13 включает в себя способ по Примеру 11, дополнительно включающий в себя этап, на котором осуществляют доступ к маске операции над упакованными данными, находящейся в регистре упакованных данных, специфицированном этим одним или более разрядами  команды обработки упакованных данных.
Пример 14 включает в себя способ по Примеру 13, если требуется, в котором этап, на котором осуществляют доступ, включает в себя этап, на котором осуществляют доступ, как к маске операции над упакованными данными, к некоторому разряду из каждого элементов данных из множества элементов данных в этом регистре упакованных данных.
Пример 15 включает в себя способ по Примеру 13, если требуется, в котором этап, на котором осуществляют доступ, включает в себя этап, на котором осуществляют доступ к этой маске операции над упакованными данными, находящейся в этом регистре упакованных данных, который должен также хранить, по меньшей мере, одну другую маску операции над упакованными данными.
Пример 16 включает в себя способ по Примеру 15, если требуется, в котором этап, на котором осуществляют доступ, включает в себя этап, на котором осуществляют доступ к маске операции над упакованными данными, находящейся в регистре упакованных данных, который в некотором первом представлении должен хранить большее количество относительно малых масок операций над упакованными данными, а в некотором втором представлении должен хранить меньшее количество относительно больших масок операций над упакованными данными.
Пример 17 включает в себя способ по Примеру 11, дополнительно включающий в себя этап, на котором осуществляют доступ к маске операции над упакованными данными, находящейся в одном регистре из некоторого множества регистров масок операций над упакованными данными, который специфицирован этим одним или более разрядами  команды обработки упакованных данных.
Пример 18 включает в себя способ по Примеру 11, если требуется, в котором этот способ выполняется в процессоре для вычислений с сокращенным набором команд (RISC-процессоре).
Пример 19 включает в себя способ по Примеру 11, дополнительно включающий в себя этап, на котором изменяют, для того, чтобы заставить процессор быть во втором режиме, один или боле разрядов в регистре процессора.
Пример 20 включает в себя способ по Примеру 11, если требуется, в котором этап, на котором выполняют данную операцию над упакованными данными и  вариант данной операции над упакованными данными, включает в себя один этап из числа: (1) этапа, на котором выполняют операцию умножения упакованных данных и  операцию умножения упакованных данных; (2) этапа, на котором выполняют операцию сложения упакованных данных и  операцию сложения упакованных данных; (3) этапа, на котором выполняют операцию логического "И" в отношении упакованных данных и  операцию логического "И" в отношении упакованных данных; (4) этапа, на котором выполняют операцию логического "ИЛИ" в отношении упакованных данных и  операцию логического "ИЛИ" в отношении упакованных данных; и (5) этапа, на котором выполняют операцию сравнения упакованных данных и  операцию сравнения упакованных данных.
Пример 21 представляет собой систему для обработки команд. Эта система включает в себя межсоединение, динамическое оперативное запоминающее устройство (DRAM), сопряженное с межсоединением, и процессор, сопряженный с межсоединением. Процессор включает в себя некоторый первый режим, в котором процессор не должен использовать  операции над упакованными данными, и некоторый второй режим, в котором процессор должен использовать  операции над упакованными данными. Процессор включает в себя декодирующий блок для того, чтобы в первом режиме декодировать  команду обработки упакованных данных, предназначенную для некоторой данной операции над упакованными данными, а во втором режиме декодировать  команду обработки упакованных данных, предназначенную для  варианта данной операции над упакованными данными.  и  команды обработки упакованных данных имеют одну и ту же длину команды.  команда обработки упакованных данных имеет один или более (двоичных) разрядов для того, чтобы специфицировать маску операции над упакованными данными. Процессор включает в себя одно или более исполняющих блоков, сопряженных с декодирующим блоком. Эти один или более исполняющих блоков должны, в ответ на декодирование декодирующим блоком, в первом режиме,  команды обработки упакованных данных, выполнять данную операцию над упакованными данными. Эти один или более исполняющих блоков должны, в ответ на декодирование декодирующим блоком, во втором режиме,  команды обработки упакованных данных, выполнять  вариант данной операции над упакованными данными, используя эту специфицированную маску операции над упакованными данными.
Пример 22 включает в себя систему по пункту 21, если требуется, в которой длина команды составляет 32 разряда, и, если требуется, в которой процессор включает в себя процессор для вычислений с сокращенным набором команд (RISC-процессор).
Пример 23 представляет собой машиночитаемый носитель информации, хранящий команды, которые, если они исполняются машиной, должны заставлять машину выполнять способ по любому из Примеров: 11-20.
Пример 24 представляет собой процессор для выполнения способа по любому из Примеров: 11-20.
Пример 25 представляет собой процессор, включающий в себя средства для выполнения способа по любому из Примеров: 11-20.
Пример 26 представляет собой процессор, включающий в себя интегральные схемы, и/или логику, и/или блоки, и/или компоненты, и/или модули или любое их сочетание для того, чтобы выполнять способы по любому из Примеров: 11-20.
Пример 27 представляет собой вычислительную систему, включающую в себя, по меньшей мере, один процессор и, если требуется, динамическое оперативное запоминающее устройство (DRAM), причем вычислительную систему для того, чтобы выполнять способ по любому из Примеров: 11-20.
Пример 28 представляет собой процессор для того, чтобы выполнять одну или более операций или способ, по существу, так, как здесь описано.
Пример 29 представляет собой процессор, включающий в себя средства для выполнения одной или более операций или способа, по существу, так, как здесь описано.