ПРОЦЕССОРЫ, СПОСОБЫ И СИСТЕМЫ ДЛЯ ОСУЩЕСТВЛЕНИЯ ДОСТУПА К НАБОРУ РЕГИСТРОВ ЛИБО КАК К МНОЖЕСТВУ МАЛЫХ РЕГИСТРОВ, ЛИБО КАК К ОБЪЕДИНЕННОМУ БОЛЬШОМУ РЕГИСТРУ Российский патент 2017 года по МПК G06F9/06 G06F9/30 

Описание патента на изобретение RU2639695C2

ПРЕДШЕСТВУЮЩИЙ УРОВЕНЬ ТЕХНИКИ

Область техники, к которой относится изобретение

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

Информация о предшествующем уровне техники

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

Множественные элементы данных могут быть упакованы в пределах регистров или ячеек памяти как упакованные данные. В упакованных данных разряды регистров или других мест хранения информации могут быть логически разделены на последовательность элементов данных. Например, регистр для упакованных данных с разрядностью в 64 разряда может иметь два упакованных 32-разрядных элемента данных, четыре упакованных 16-разрядных элемента данных или восемь упакованных 8 - разрядных элементов данных.

В некоторых процессорах за эти годы имело место прогрессирующее увеличение разрядности операндов, состоящих из упакованных данных. Это увеличение разрядности операндов, состоящих из упакованных данных, вообще говоря, позволяет одновременно (например, параллельно) обрабатывать большее количество элементов данных, что, вообще говоря, ведет к повышению производительности. Например, в случае, когда используются 128-разрядные упакованные данные, одновременно может обрабатываться восемь 16-разрядных элементов данных вместо только четырех 16-разрядных элементов данных в случае 64-разрядных упакованных данных.

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

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

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

Фиг. 1 представляет собой блок-схему блок-схему одного варианта воплощения процессора.

Фиг. 2 представляет собой блок-схему алгоритма одного варианта воплощения способа, выполняемого в процессоре и/или посредством процессора.

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

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

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

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

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

Фиг. 7D представляют собой блок-схемы примеров подходящих форматов упакованных данных.

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

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

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

Фиг. 9В представляет собой расширенное представление части ядра процессора, показанного на Фиг. 9А, соответствующего вариантам воплощения изобретения.

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

На Фиг. 11 показана блок-схема системы в соответствии с одним вариантом воплощения настоящего изобретения.

На Фиг. 12 показана блок-схема первой более конкретной системы, приводимой в качестве примера, в соответствии с одним вариантом воплощения настоящего изобретения.

На Фиг. 13 показана блок-схема второй более конкретной системы, приводимой в качестве примера, в соответствии с одним вариантом воплощения настоящего изобретения.

На Фиг. 14 показана блок-схема внутрикристальной системы (SoC) в соответствии с одним вариантом воплощения настоящего изобретения.

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

Подробное описание вариантов осуществления изобретения

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

Фиг. 1 представляет собой блок-схему блок-схему одного варианта воплощения процессора (100). Этот процессор представляет аппарат для обработки команд, который может быть приведен в действие для обработки команд. В некоторых вариантах воплощения изобретения, этот процессор может представлять собой универсальный процессор (например, универсальный микропроцессор, относящийся к типу, часто используемому в качестве центрального процессора (CPU) в настольном компьютере, переносном компьютере и подобных им компьютерах). В качестве альтернативы, этот процессор может представлять собой процессор специального назначения. Примеры подходящих процессоров специального назначения включают в себя: сетевые процессоры, процессоры передачи данных, криптографические процессоры, графические процессоры, сопроцессоры, встроенные процессоры, процессоры цифровой обработки сигналов (DSP - процессоры) и контроллеры (например, микроконтроллеры), в качестве лишь нескольких примеров, но не ограничены ими. Процессор может представлять собой любой процессор из числа: разнообразных процессоров для вычислений со сложным набором команд (CISC - процессоров), разнообразных процессоров для вычислений с сокращенным набором команд (RISC - процессоров), разнообразных процессоров с командными словами сверхбольшой длины (VLIW - процессоров), разнообразных гибридов этих процессоров или других типов процессоров без каких бы то ни было исключений.

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

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

Процессор включает в себя звено (104) декодирования команд. Звено (104) декодирования команд может также упоминаться как декодирующее звено, декодер или декодирующая логика. Декодирующее звено может принимать и декодировать команды относительно более высокого уровня (например, команды в машинном коде, команды на языке ассемблера, макрокоманды), и выводить одну или более команд относительно более низкого уровня или управляющие сигналы (например, микрокоманды, микрооперации, точки входа в микрокод), которые отражают, представляют команды более высокого уровня и/или выведены из них. Эти одна или более команд более низкого уровня или управляющие сигналы могут реализовывать команду более высокого уровня посредством одной или более операций более низкого уровня (например, уровня схемы или уровня аппаратного обеспечения). Декодирующее звено может быть реализовано с использованием всевозможных различных механизмов, включающих в себя: постоянные запоминающие устройства для микрокода (ROM-устройства), таблицы поиска, аппаратные варианты реализации, программируемые логические матрицы (PLA-матрицы) и другие механизмы, используемые для реализации декодирующих звеньев, известные в данной области техники, но не ограниченных этими механизмами. В других вариантах воплощения изобретения, вместо декодирующего звена или в дополнение к нему могут быть использованы эмулятор, транслятор, блок трансформации, интерпретатор команд или другая логика конвертирования команд.

Вновь обратимся к Фиг. 1, на которой с декодирующим модулем (104) и с набором (108) регистров сопряжено исполняющее звено (106). В качестве примера, это исполняющее звено может включать в себя: арифметическое устройство, логическое устройство, арифметико-логическое устройство (ALU), цифровую схему или логику для того, чтобы выполнять арифметические и логические операции, исполняющее звено для памяти, или тому подобное. Исполняющее звено может принимать одну или более декодированных или иначе конвертированных команд или один или более управляющих сигналов, которые представляют команду (102) и/или выведены из нее. Исполняющее звено и/или процессор могут специальную или особую логику (например, транзисторы, схемы или другое аппаратное обеспечение, возможно, объединенное с микропрограммным обеспечением (например, командами, хранящимися в энергонезависимой памяти) и/или программным обеспечением), которая способна функционировать таким образом, чтобы выполнять операции в ответ на команду (102) (например, в ответ на одну или более команд или один или более управляющих сигналов, декодированных или иным образом выведенных из команды (102)).

В некоторых вариантах воплощения изобретения, исполняющее звено способно функционировать в ответ на команду (102) и/или в ее результате таким образом, чтобы осуществлять доступ к набору (108) регистров либо в одном, либо в обоих по меньшей мере из двух различных методов (доступа) или представлений регистров. В некоторых вариантах воплощения, эти, по меньшей мере два различных метода или представления могут включать в себя некоторый первый метод или представление (110), в котором набор (108) регистров должны рассматриваться в качестве множества N-разрядных регистров или иным образом представлять это множество. В некоторых вариантах воплощения изобретения, эти по меньшей мере два различных пути или представления могут включать в себя некоторый второй метод или представление (112), в котором этот набор регистров должны рассматриваться в качестве единого регистра, состоящего из по меньшей мере 2N разрядов или иным образом представлять этот регистр. В некоторых вариантах воплощения изобретения, эти по меньшей мере 2N разрядов могут представлять собой по меньшей мере 256 разрядов. В других вариантах воплощения изобретения, этот набор регистров может представлять собой N-разрядные регистры (например, 128-разрядные регистры, 256-разрядные регистры и так далее). В некоторых вариантах воплощения изобретения, этот набор регистров может представлять собой N/2 - разрядные регистры (например, 64-разрядные регистры, 128-разрядные регистры и так далее).

В качестве одного конкретного примера, набор (108) регистров может состоять из двух N-разрядных регистров (например, 128-разрядных регистров). В первом методе или представлении (110), эти два N-разрядных регистра (например, 128-разрядных регистра) могут рассматриваться в качестве двух N-разрядных (например, 128-разрядных) регистров или иным образом представлять эти регистры. Во втором методе или представлении (112), эти два N-разрядных регистра (например, 128-разрядные регистры) могут рассматриваться в качестве единого регистра, состоящего по меньшей мере из 2N разрядов (например, 256 разрядов, 512 разрядов и так далее) или иным образом представлять этот регистр. В некоторых вариантах воплощения изобретения, может иметься больше, чем только два различных представления или метода осуществления доступа к набору (108) регистров. Например, в некоторых вариантах воплощения изобретения, может иметься три, четыре или больше чем четыре различных метода осуществления доступа или представления набора (108) регистров. Например, в некоторых вариантах воплощения изобретения, в этом примере может дополнительно поддерживаться осуществление доступа к набору регистров как к четырем N/2-разрядным регистрам (например, 64-разрядным регистрам).

В качестве другого конкретного примера, набор (108) регистров может состоять из четырех N/2-разрядных регистры (например, 64-разрядных регистров). В первом методе или представлении (110), эти четыре N/2-разрядных регистра (например, 64-разрядных регистра) могут рассматриваться в качестве двух N-разрядных (например, 128-разрядных) регистров или иным образом представлять эти регистры. Во втором методе или представлении (112), эти четыре N/2-разрядных регистра (например, 64-разрядных регистра) могут рассматриваться в качестве единого регистра, состоящего по меньшей мере из 2N-разрядов (например, 256 разрядов, 512 разрядов, 1024 разрядов и так далее) или иным образом представлять этот регистр. В некоторых вариантах воплощения изобретения, может иметься по меньшей мере третий метод осуществлять доступ к набору (108) регистров. Например, в некоторых вариантах воплощения изобретения, во втором представлении (112) исполняющее звено может рассматривать четыре N/2 - разрядных регистра (например, 64-разрядных регистра) или осуществлять к ним доступ как к единому регистру, состоящему по меньшей мере из 4N-разрядов (например, 512 разрядов, 1024 разрядов и так далее), и процессор может дополнительно поддерживать осуществления доступа или представление набора (108) регистров в качестве множества 2N-разрядных регистров (например, из 256 разрядов).

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

Как было показано в этих детализированных примерах, в некоторых вариантах воплощения изобретения, процессор может быть способным функционировать таким образом, чтобы распознавать, рассматривать и/или осуществлять доступ к набору (108) регистров либо как к множественным относительно малым регистрам (например, N-разрядным регистрам), или как к единому относительно большому регистру (например, регистру, имеющему по меньшей мере 2N разрядов). Например, в некоторых вариантах воплощения изобретения, смежная пара регистров может рассматриваться по отдельности в качестве 128-разрядные регистры или может быть логически "объединена" вместе и рассматриваться вся вместе как единый 256-разрядный регистр. Те же самые физические регистры и то же самое физическое суммарное количество разрядов могут входить в состав как этих двух 128-разрядных регистров, так и в единый 256-разрядный регистр, но они могут рассматриваться различными методами. Полезно, что в некоторых вариантах воплощения изобретения, такого рода подход может быть использован для того, чтобы избежать необходимости повышения разрядности этих регистров, в то же самое время позволяя все-таки повысить разрядность регистра для упакованных данных и/или разрядность операнда, состоящего из упакованных данных. Избегание повышения разрядности этих регистров может помочь избежать, или по меньшей мере уменьшить некоторые из возможных недостатков, упомянутых в разделе "Предшествующий уровень техники", например, увеличения площади или занимаемого места регистров на кристалле и/или увеличения количества данных, которое необходимо помещать в регистры и извлекать из них при переключениях контекста. В некоторых вариантах воплощения изобретения, такого рода подход может быть использован для реализации регистров для упакованных данных или операндов, состоящих по меньшей мере из 256 разрядов (например, 256 разрядов, 512 разрядов, 1024 разрядов и так далее), по причине чего вышеупомянутые возможные недостатки имеют тенденцию становиться даже еще более значительными.

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

Фиг. 2 представляет собой блок-схему алгоритма одного варианта воплощения способа (214), выполняемого внутри или посредством процессора. В некоторых вариантах воплощения изобретения, операции и/или способ, показанные на Фиг. 2, могут быть выполнены посредством или внутри процессора, показанного на Фиг. 1. Подробности и дополнительные признаки, описанные выше для процессора, показанного на Фиг. 1, также, если требуется, применяются к операциям и/или способу, показанным на Фиг. 2, которые могут быть выполнены посредством и/или внутри такого рода процессора. В качестве альтернативы, операции и/или способ, показанные на Фиг. 2, могут быть выполнены посредством и/или внутри схожего или другого процессора. Помимо этого, процессор, показанный на Фиг. 1, может выполнять операции и/или способы, одинаковые с теми, что показаны на Фиг. 2, сходные с ними или отличные от них.

Способ включает в себя, на этапе 216, осуществление доступа к набору регистров по некоторому первому методу. В некоторых вариантах воплощения изобретения, в первом методе этот набор регистров может представлять некоторое множество N-разрядных регистров. Доступ может осуществляться для того, чтобы извлечь из каждого регистра из этого множества N-разрядных регистров соответствующие N-разрядные упакованные данные (или сохранить в каждом регистре из этого множества N-разрядных регистров соответствующие N-разрядные упакованные данные).

Способ включает в себя, на этапе 218, осуществление доступа к этому набору регистров по некоторому второму, другому, методу. В некоторых вариантах воплощения изобретения, во втором методе этот набор регистров может представлять единый регистр, состоящий по меньшей мере из 2N разрядов. Доступ может осуществляться для того, чтобы извлечь из этого единого регистра соответствующие упакованные данные, состоящие по меньшей мере из 2N разрядов, (или сохранить в этом едином регистре соответствующие упакованные данные, состоящие по меньшей мере из 2N разрядов). В некоторых вариантах воплощения изобретения, эти по меньшей мере 2N разрядов могут представлять собой по меньшей мере 256 разрядов.

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

Фиг. 3 представляет собой блок-схему, на которой проиллюстрирован вариант воплощения изобретения, в котором набор регистров рассматриваются или к ним осуществляется доступ как к 128-разрядным регистрам для упакованных данных - на первом представлении (310), и как к 256-разрядным регистрам для упакованных данных - на втором представлении (312). На первом представлении (310) набор регистров (например, физические регистры) логически рассматриваются или к ним осуществляется доступ как к восьми 128-разрядным регистрам для упакованных данных, помеченным как Х0-Х7. На втором представлении (312) тот же самый набор регистров (например, физических регистров) логически рассматриваются или к ним осуществляется доступ как к четырем (то есть имеющимся в два раза меньшем количестве) 256-разрядным регистрам, помеченным как Y0-Y3. На втором представлении (312) самые младшие 128 разрядов (то есть разряды 127 : 0) 256-разрядного регистра (Y0) отображаются на 128-разрядный регистр (Х0) или соответствуют ему, тогда как самые старшие 128 разрядов (то есть разряды 127 : 64) 256-разрядного регистра (Y0) отображаются на 128-разрядный регистр (XI) или соответствуют ему. Аналогичным образом, каждый из других 256-разрядных регистров (Y1)-(Y3) включает в себя отличную от других пару 128-разрядных регистров (Х2)-(Х7). Множественные (в этом случае два) малые (в этом случае 128-разрядные) регистры логически объединяются или группируется для того, чтобы сформировать единый большой (в этом случае 256-разрядный) регистр. В некоторых вариантах воплощения изобретения, реальные физические регистры, используемые для реализации этих представлений, могут представлять собой 64-разрядные регистры или 128-разрядные регистры. В качестве альтернативы, если требуется, могут быть использованы другие разрядности.

Предусматривается много вариаций проиллюстрированного варианта воплощения изобретения. В проиллюстрированном варианте воплощения, логически объединяются или группируются смежные 128-разрядные регистры (например, Х0 объединяется с X1, Х2 объединяется с Х3 и так далее). В других вариантах воплощения изобретения, могут быть объединены несмежные регистры (например, могут быть объединены несмежные регистры в различных блоках, перемежающиеся регистры и так далее). В проиллюстрированном варианте воплощения изобретения, показаны восемь 128-разрядных регистров (Х0-Х7) и четыре 256-разрядных регистра (Y0-Y3), хотя при желании, можно, если требуется, использовать либо меньшее, либо большее количество регистров. В одном приводимом в качестве примера варианте воплощения изобретения, может иметься достаточно регистров для того, чтобы рассматривать по меньшей мере шестнадцать 128-разрядных регистров (или по меньшей мере тридцать два 128-разрядных регистра) на первом представлении (310), и/или достаточно регистров для того, чтобы рассматривать по меньшей мере восемь 256-разрядных регистров (или по меньшей мере шестнадцать 128-разрядных регистров) на втором представлении (312). Помимо этого, в других вариантах воплощения изобретения, могут поддерживаться три или большее количество представлений, на которых набор регистров рассматриваются в качестве 64-разрядных регистров, 512-разрядных регистров, 1024-разрядных регистров, других емкостей или их сочетаний.

Фиг. 4 представляет собой блок-схему, на которой проиллюстрирован вариант воплощения изобретения, в котором набор регистров рассматриваются или к ним осуществляется доступ как к 64-разрядным регистрам для упакованных данных - на первом представлении (410), как к 128-разрядным регистрам для упакованных данных - на втором представлении (412), и как к 256-разрядным регистрам для упакованных данных - на третьем представлении (420). На первом представлении (410) набор регистров (например, физические регистры) логически рассматриваются или к ним осуществляется доступ как к шестнадцати 64-разрядным регистрам для упакованных данных, помеченным как W0-W15.

На втором представлении (412) тот же самый набор регистров (например, физических регистров) логически рассматриваются или к ним осуществляется доступ как к четырем (то есть имеющимся в два раза меньшем количестве) 128-разрядным регистрам, помеченным как Х0-Х7. На втором представлении (412) самые младшие 64 разряда (то есть разряды 63 : 0) 128-разрядного регистра (Х0) соответствуют 64-разрядному регистру (W0), тогда как самые старшие 64 разряда (то есть разряды 127 : 64) 128-разрядного регистра (Х0) соответствуют 64-разрядному регистру (WI). Помимо этого, на втором представлении (412) самые младшие 64 разряда (то есть разряды 63 : 0) 128-разрядного регистра (X1) соответствуют 64-разрядному регистру (W2), тогда как самые старшие 64 разряда (то есть разряды 127 : 64) 128-разрядного регистра (X1) соответствуют 64-разрядному регистру (W3).

На третьем представлении (420) тот же самый набор регистров (например, физических регистров) логически рассматриваются или к ним осуществляется доступ как к четырем 256-разрядным регистрам, помеченным как Y0-Y3. На третьем представлении (420) самые младшие 64 разряда (то есть разряды 63 : 0) 256-разрядного регистра (Y0) соответствуют 64-разрядному регистру (W0), самые младшие промежуточные 64 разряда (то есть разряды 127 : 64) 256-разрядного регистра (Y0) соответствуют, 64-разрядному регистру (W1), самые старшие промежуточные 64 разряда (то есть разряды 191 : 128) 256-разрядного регистра (Y0) соответствуют 64-разрядному регистру (W2), и самые старшие 64 разряда (то есть разряды 255 : 192) 256-разрядного регистра (Y0) соответствуют 64-разрядному регистру (W3). Если взглянуть на это по-другому, то на третьем представлении (420) самые младшие 128 разрядов (то есть разряды 127 : 0) 256-разрядного регистра (Y0) соответствуют 128-разрядному регистру (Х0), а самые старшие 128 разрядов (то есть разряды 255 : 128) 256-разрядного регистра (Y0) соответствуют 128-разрядному регистру (Х0).

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

Фиг. 5 представляет собой блок-схему, на которой проиллюстрирован вариант воплощения изобретения, в котором набор регистров рассматриваются или к ним осуществляется доступ как к 128-разрядным регистрам для упакованных данных - на первом представлении (510), как к 256-разрядным регистрам для упакованных данных - на втором представлении (512), и как к 512-разрядным регистрам для упакованных данных - на третьем представлении (522). На первом представлении (510) набор регистров (например, физические регистры) логически рассматриваются или к ним осуществляется доступ как к восьми 128-разрядным регистрам для упакованных данных, помеченным как Х0-Х7. На втором представлении (512) тот же самый набор регистров (например, физических регистров) логически рассматриваются или к ним осуществляется доступ как к четырем (то есть имеющимся в два раза меньшем количестве) 256-разрядным регистрам, помеченным как Y0-Y3. Эта конфигурация может быть сходной с подходом, показанным и описанным для Фиг. 3.

На третьем представлении (522) тот же самый набор регистров (например, физических регистров) логически рассматриваются или к ним осуществляется доступ как к двум 512-разрядным регистрам, помеченным как Z0-Z1. На третьем представлении (522) самые младшие 128 разрядов (то есть разряды 127 : 0) 512-разрядного регистра (Z0) соответствуют 128-разрядному регистру (Х0), самые младшие промежуточные 128 разрядов (то есть разряды 255 : 128) 512-разрядного регистра (Z0) соответствуют 128-разрядному регистру (X1), самые старшие промежуточные 128 разрядов (то есть разряды 383 : 256) 512-разрядного регистра (Z0) соответствуют 128-разрядному регистру (Х2), и самые старшие 128 разрядов (то есть разряды 511 : 384) 512-разрядного регистра (Z0) соответствуют 128-разрядному регистру (Х3). Если взглянуть на это по-другому, то на третьем представлении (522) самые младшие 256 разрядов (то есть разряды 255 : 0) 512-разрядного регистра (Z0) соответствуют 256-разрядному регистру (Y0), а самые старшие 256 разрядов (то есть разряды 511 : 256) 512-разрядного регистра (Z0) соответствуют 256-разрядному регистру (Y1). Аналогичным образом, каждый из других регистров имеет аналогичное соответствие, как это показано метками разрядов.

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

Фиг. 6 представляет собой блок-схему, на которой проиллюстрирован вариант воплощения изобретения, в котором набор регистров рассматриваются или к ним осуществляется доступ как к 255-разрядным регистрам для упакованных данных - на первом представлении (610), и как к 512-разрядным регистрам для упакованных данных - на втором представлении (612). На первом представлении (610) набор регистров (например, физические регистры) логически рассматриваются или к ним осуществляется доступ как к четырем 255-разрядным регистрам для упакованных данных, помеченным как Y0-Y3. На втором представлении (612) тот же самый набор регистров (например, физических регистров) логически рассматриваются или к ним осуществляется доступ как к двум (то есть имеющимся в два раза меньшем количестве) 512-разрядным регистрам, помеченным как Z0-Z3. На втором представлении (612) самые младшие 255 разрядов (то есть разряды 255 : 0) 512-разрядного регистра (Z0) соответствуют 255-разрядному регистру (Y0), а самые старшие 255 разрядов (то есть разряды 511 : 256) 512-разрядного регистра (Z0) соответствуют 256-разрядному регистру (Y1). Аналогичным образом, каждый из других регистров имеет аналогичное соответствие, как это показано метками разрядов.

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

Фиг. 7А-С представляют собой блок-схемы вариантов воплощения подходящих форматов команды для использования различных представлений набора регистров. Фиг. 7А представляет собой блок-схему первого варианта воплощения подходящего формата (730А) команды. В этом варианте воплощения изобретения, формат команды имеет код операции или opcode (732А), который способен функционировать таким образом, чтобы указывать то, как следует рассматривать набор регистров или осуществлять к нему доступ при обработке этой команды. Традиционно, код операции может представлять множество разрядов или одно или более полей, которые способны функционировать таким образом, чтобы идентифицировать команду и/или операцию, подлежащую выполнению. В некоторых вариантах воплощения изобретения, код операции может также явным образом специфицировать или неявно указывать то, каким образом следует рассматривать набор регистров или осуществлять к нему доступ при обработке этой команды. Например, некоторые коды операции и/или операции могут неявным образом использовать набор регистров некоторым заданным способом. Например, код операции для операции умножения упакованных данных, выполняемой на 128-разрядных исходных регистрах может неявным образом указывать на то, что для того, чтобы сохранять полные произведения, которые имеют размер, в два раза превышающий размер исходных элементов данных, адресат должен рассматриваться как 256-разрядный регистр.

Формат команды также включает в себя любое из разнообразных традиционных полей (734А) в зависимости от конкретного типа команды. Примеры таких традиционных полей включают в себя: одно или более полей для того, чтобы специфицировать один или более исходных операндов, и/или одно или более полей для того, чтобы специфицировать один или более операндов - адресатов, но не ограничиваются ими. Эти операнды могут представлять регистры, как здесь описано, ячейки памяти или другие места хранения данных. Исходные операнды и/или операнды - адресаты могут также быть указаны командой неявным образом, вместо того, чтобы быть специфицированными явным образом. Помимо этого, регистр или другое место хранения данных для исходного операнда могут быть повторно использованы для операнда - адресата. Другие примеры традиционных полей включают в себя: один или более непосредственных операндов, поле для указания маски операции над упакованными данными (например, маски, используемой для предикации), поле для управления предикацией или маскированием, поле для управления пересылкой, поле для управления округлением значений с плавающей запятой и другие традиционные поля, известные в данной области техники, но не ограничиваются ими.

Фиг. 7В представляет собой блок-схему второго варианта воплощения подходящего формата (730В) команды. В этом варианте воплощения изобретения, формат команды имеет код операции или opcode (732В). В некоторых вариантах воплощения изобретения, формат команды также имеет заранее выделенное поле (738) для того, чтобы указывать то, как следует рассматривать набор регистров или осуществлять доступ к нему при обработке этой команды. В этом варианте воплощения изобретения, поле (738) может быть отдельным от или отличным от кода операции. В некоторых вариантах воплощения изобретения, это поле может включать в себя единственный разряд для выбора между любым из двух различных представлений набора регистров. В качестве альтернативы, это поле может иметь два или больше разрядов для выбора между более чем двумя различными представлениями регистров. Разрешение указывать в команде представление (например, либо посредством кода операции, либо посредством отдельного выделенного поля) может позволить указать в команде представление и может помочь избежать необходимости выполнять смену режима. В качестве альтернативы, программное обеспечение (например, операционная система, гипервизор и так далее) может изменять режим работы для логического процессора для того, чтобы указывать представление. Формат команды также включает в себя любое из разнообразных традиционных полей (734В) в зависимости от конкретного типа команды. Ранее описанные традиционные поля являются подходящими.

Фиг. 7С представляет собой блок-схему третьего варианта воплощения подходящего формата (730С) команды. Как показано на фигуре, в некоторых вариантах воплощения изобретения, формат команды может иметь код (732С) операции, который способен функционировать таким образом, чтобы указывать то, как следует рассматривать набор регистров или осуществлять к нему доступ при обработке этой команды. В качестве альтернативы, формат команды может иметь выделенное поле, аналогичное полю во втором формате команды, показанном на Фиг. 7В. Формат команды также включает в себя одно или более полей для указания того, какие регистры из набора подлежат объединению для создания относительно больших регистров. В различных вариантах воплощения изобретения это может быть сделано разнообразными методами. В одном варианте воплощения изобретения, могут быть введены поля для того, чтобы явным образом специфицировать два 128-разрядных регистра или четыре 64-разрядных регистра, подлежащих объединению для создания единого 256-разрядного регистра. В других вариантах воплощения изобретения, могут быть использованы одно или более полей для того, чтобы делать выбор между различными предварительно заданными методами объединения регистров. Например, один метод состоял бы в том, чтобы использовать смежные регистры, другой метод состоял бы в том, чтобы использовать каждый второй регистр, и еще один метод состоял бы в том, чтобы использовать последовательные регистры в различных блоках регистров. Формат команды также включает в себя любое из разнообразных традиционных полей (734С) в зависимости от конкретного типа команды. Ранее описанные традиционные поля являются подходящими.

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

Фиг. 7D представляет собой блок-схему, иллюстрирующую примеры подходящих форматов упакованных данных. На этих иллюстрациях, числа поверх прямоугольников представляют позиции разрядов. 128-разрядный формат (842) с упакованными словами имеет разрядность в 128 разрядов и включает в себя восемь элементов данных, являющихся словами с разрядностью в 16-разрядов, помеченных на иллюстрации в направлении от позиции самого младшего к позиции самого старшего разряда как: WORD0 - WORD7. 128-разрядный формат (844) с упакованными двойными словами имеет 128 разрядов и включает в себя четыре элемента данных, являющихся 32-разрядными двойными словами, помеченных в направлении от позиции самого младшего к позиции самого старшего разряда как: DWORD0 - DWORD3. 128-разрядный формат (846) с упакованными учетверенными словами имеет 128 разрядов и включает в себя два элемента данных, являющихся 64-разрядными учетверенными словами, помеченных в направлении от позиции самого младшего к позиции самого старшего разряда как: QWORD0 - QWORD1.

256-разрядный формат (848) с упакованными словами имеет разрядность в 128 разрядов и включает в себя шестнадцать элементов данных, являющихся словами с разрядностью в 16-разрядов, помеченных на иллюстрации в направлении от позиции самого младшего к позиции самого старшего разряда как: WORD0 - WORD15. 256-разрядный формат (850) с упакованными двойными словами имеет 256 разрядов и включает в себя восемь элементов данных, являющихся 32-разрядными двойными словами, помеченных в направлении от позиции самого младшего к позиции самого старшего разряда как: DWORD0 - DWORD7. 128-разрядный формат (852) с упакованными учетверенными словами имеет 256 разрядов и включает в себя четыре элемента данных, являющихся 64-разрядными учетверенными словами, помеченных в направлении от позиции самого младшего к позиции самого старшего разряда как: QWORD0 - QWORD3.

Также подходящими являются и другие форматы упакованных данных. Например, другие подходящие 128-разрядные и 256-разрядные форматы упакованных данных включают в себя форматы с упакованными 8-разрядными байтами, форматы с упакованными 32-разрядными данными с обычной точностью с плавающей запятой и форматы с упакованными 64-разрядными данными с двойной точностью с плавающей запятой. Форматы с упакованными байтами могут иметь в два раза больше элементов данных, чем формат с упакованными словами, и каждый элемент данных может иметь половинную разрядность. Форматы обычной и двойной точности с плавающей запятой могут, соответственно, казаться похожими на проиллюстрированные форматы с двойными словами и учетверенными словами, хотя значение/интерпретация разрядов в пределах элементов данных могут быть другими. Помимо этого, подходящими также являются более высокие или более низкие разрядности упакованных данных, такие как, например, 64-разрядные упакованные данные, 512-разрядные упакованные данные, 1024-разрядные упакованные данные и так далее. Подходящим является любое из числа: байта, слова, двойного слова, учетверенного слова или других форматов. Обычно, количество элементов упакованных данных равно размеру в битах упакованных данных, разделенных на размер в битах элементов упакованных данных.

Не являющиеся обязательными подробности в отношении представлений или атрибутов регистров, описанные для любой из Фиг. 3-6, могут, если требуется, применяться к процессору, показанному на Фиг. 1, и/или способу, показанному на Фиг. 2. Не являющиеся обязательными подробности в отношении форматов команды, показанных на Фиг. 7А-D, могут, если требуется, применяться к процессору, показанному на Фиг. 1, и/или способу, показанному на Фиг. 2. Помимо этого, компоненты, признаки и подробности, описанные здесь для любого аппарата, могут также, если требуется, использоваться в любом из описанных здесь способов, которые в вариантах воплощения изобретения могут быть выполнены посредством такого аппарата и/или с таким аппаратом.

Приводимые в качестве примера архитектуры ядра, процессоры и архитектуры компьютера

Ядра процессора могут быть реализованы различным образом, для различных целей и в различных процессорах. Например, варианты реализации таких ядер могут включать в себя: 1) универсальное ядро без переупорядочения последовательности команд, предназначенное для универсальных вычислений; 2) высокопроизводительное универсальное ядро с переупорядочением последовательности команд, предназначенное для универсальных вычислений; 3) специализированное ядро, предназначенное, главным образом, для вычислений (обрабатываемых объемов) графических и/или научных данных. Варианты реализации различных процессоров могут включать в себя: 1) центральный процессор, включающий в себя одно или более универсальных ядер без переупорядочения последовательности команд, которые (ядра) предназначены для универсальных вычислений, и/или одно или более универсальных ядер с переупорядочением последовательности команд, которые (ядра) предназначены для универсальных вычислений; и 2) сопроцессор, включающий в себя одно или более специализированных ядер, предназначенных, главным образом, для (обрабатываемых объемов) графических и/или научных данных. Такие различные процессоры приводят к различным архитектурам вычислительных систем, которые могут включать в себя: 1) сопроцессор на отдельной, от центрального процессора, микросхеме; 2) сопроцессор на отдельном кристалле в том же самом корпусе, что и центральный процессор; 3) сопроцессор на том же самом кристалле, что и центральный процессор (в этом случае, такого рода сопроцессор иногда именуется как специализированная логика, такая как интегрированная логика для (обрабатываемых объемов) графических и/или научных данных, или как специализированные ядра); и 4) внутрикристальную систему, которая может включать в себя на одном и том же кристалле описанный центральный процессор (иногда именуемый как прикладное ядро (прикладные ядра) или прикладной процессор (прикладные процессоры)), вышеописанный сопроцессор и дополнительные функциональные элементы. Далее описываются приводимые в качестве примера архитектуры ядра, за которыми следуют описания приводимых в качестве примера архитектур процессоров и компьютера.

Приводимые в качестве примера архитектуры ядра

Блок-схема ядра без переупорядочения последовательности команд и с переупорядочением последовательности команд

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

На Фиг. 8А процессорный конвейер (800) включает в себя: стадию (802) выборки, стадию (804) декодирования длины, стадию (806) декодирования, стадию (808) распределения, стадию (810) переименования, стадию (812) планирования (также известного как диспетчеризация или выдача), стадию (814) считывания из регистра/считывания из памяти, стадию (816) исполнения, стадию (818) записи в обратном направлении/записи в память, стадию (822) обработки исключительных ситуаций и стадию (1024) фиксации.

На Фиг. 8В показано ядро (890) процессора, включающее в себя звено (830) передней части, сопряженное со звеном (850) исполняющей машины, и оба этих звена сопряжены с запоминающим звеном (870). Ядро (890) может представлять собой ядро для вычисления с сокращенным набором команд (RISC - ядро), ядро для вычисления со сложным набором команд (CISC - ядро), ядро с командными словами сверхбольшой длины (VLIW - ядро) или гибридный или альтернативный тип ядра. В качестве еще одного другого необязательного варианта, ядро (890) может представлять собой специализированное ядро, такое как, например, сетевое ядро или ядро для связи, машину сжатия данных, сопроцессорное ядро, ядро универсального вычислительного звена обработки графических данных (GPGPU - ядро), графическое ядро или тому подобное.

Звено (830) передней части включает в себя звено (832) предсказания ветвей, сопряженное со звеном (834) кэша команд, которое сопряжено с буфером (836) быстрого преобразования адреса (TLB - буфером) команд, которое сопряжено со звеном (838) выборки команд, которое сопряжено с декодирующим звеном (840). Декодирующее звено (840) (или декодер) может декодировать команды и генерировать, в качестве своих выходных данных, одну или более микроопераций, точек входа в микрокод, микрокоманд, других команд или другие управляющие сигналы, которые декодируются из первоначальных команд, или которые иным образом отражают эти команды или выведены из них. Декодирующее звено (840) может быть реализовано с использованием всевозможных различных механизмов. Примеры подходящих механизмов включают в себя: таблицы поиска, варианты реализации посредством аппаратных средств, программируемые логические матрицы (PLA - матрицы), постоянные запоминающие устройства (ПЗУ - устройства) для микрокода и так далее, но не ограничены ими. В одном варианте воплощения изобретения, ядро (890) включает в себя постоянное запоминающее устройство для микрокода или другой носитель информации, который хранит микрокод для некоторых макрокоманд (например, в декодирующем звене (840) или, в ином случае, в пределах звена (830) передней части). Декодирующее звено (840) сопряжено с переименовывающим/распределяющим звеном (852) в звене (850) исполняющей машины.

Звено (850) исполняющей машины включает в себя переименовывающее/распределяющее звено (852), сопряженное со звеном (854) изъятия и набором из одного или более звена (звеньев) (856) планировщика. Звено (звенья) (856) планировщика представляет (представляют) любое количество различных планировщиков, включающих в себя станции резерваций, центральное окно команды и так далее. Звено (звенья) (856) планировщика сопряжено (сопряжены) со звеном (звеньями) (858) физического регистрового файла (физических регистровых файлов). Каждое из звеньев (858) физического регистрового файла (физических регистровых файлов) представляет один или более физических регистровых файлов, различные из которых хранят один или более различных типов данных, таких как скалярные целочисленные данные, скалярные данные с плавающей запятой, упакованные целочисленные данные, упакованные данные с плавающей запятой, векторные целочисленные данные, векторные данные с плавающей запятой, данные о состоянии (например, указатель команды, который представляет собой адрес следующей команды, подлежащей исполнению) и так далее. В одном варианте воплощения изобретения, звено (858) физического регистрового файла (физических регистровых файлов) содержит звено векторных регистров, звено регистров маски записи и звено скалярных регистров. Эти звенья регистров могут обеспечивать архитектурные векторные регистры, векторные регистры маски и регистры общего назначения. Звено (звенья) (858) физического регистрового файла (физических регистровых файлов) перекрывается (перекрываются) звеном (854) изъятия, что иллюстрирует разнообразные методы, посредством которых может быть осуществлено переименование регистров и исполнение с переупорядочением последовательности команд (например, посредством использования переупорядочивающего буфера (переупорядочивающих буферов) и регистрового файла (регистровых файлов) изъятия; посредством использования будущего файла (будущих файлов), буфера (буферов) предыстории и регистрового файла (регистровых файлов) изъятия; посредством использования карт регистров и пула регистров; и так далее). Звено (854) изъятия и звено (звенья) (858) физического регистрового файла (физических регистровых файлов) сопряжены с исполняющим кластером (исполняющими кластерами) (860). Исполняющий кластер (исполняющие кластеры) (860) включает (включают) в себя набор из одного или боле исполняющих звеньев (862) и набор из одного или более звеньев (864) доступа к памяти. Исполняющие звенья (862) могут выполнять разнообразные операции (например, сдвиги, сложение, вычитание, умножение) и над разнообразными типами данных (например, скалярными данными с плавающей запятой, упакованными целочисленными данными, упакованными данными с плавающей запятой, векторными целочисленными данными, векторными данными с плавающей запятой). Притом что некоторые варианты воплощения изобретения могут включать в себя некоторое количестве исполняющих звеньев, выделенных для конкретных функций или наборов функций, другие варианты воплощения изобретения могут включать в себя только одно исполняющее звено или множественные исполняющие звенья, все из которых выполняют все функции. Звено (звенья) (856) планировщика, звено (звенья) (858) физического регистрового файла (физических регистровых файлов) и исполняющий кластер (исполняющие кластеры) (860) показаны как, возможно, имеющиеся во множественном числе, потому что в некоторых вариантах воплощения изобретения создаются раздельные конвейеры для некоторых типов данных/операций (например, конвейер для скалярных целочисленных данных, конвейер для скалярных данных с плавающей запятой/упакованных целочисленных данных/упакованных данных с плавающей запятой/векторных целочисленных данных/векторных данных с плавающей запятой и/или конвейер доступа к памяти, каждые из которых (конвейеров) имеют свои собственные звено планировщика, звено физического регистрового файла (физических регистровых файлов) и/или исполняющий кластер, - а в случае отдельного конвейера доступа к памяти, реализованы некоторые варианты воплощения изобретения, в которых звено (звенья) (864) доступа к памяти имеется (имеются) только у исполняющего кластера этого конвейера. Следует также понимать, что там, где используются раздельные конвейеры, один или больше из этих конвейеров может представлять собой конвейер с переупорядочиванием последовательности выдачи/исполнения команд, а остальные без упорядочения этой последовательности.

Набор звеньев (864) доступа к памяти сопряжен с запоминающим звеном (870), которое включает в себя звено (872) TLB (буфера быстрого преобразования адреса) для данных, сопряженное со звеном (874) кэша данных, сопряженным со звеном (876) кэша уровня 2 (L2). В одном приводимом в качестве примера варианте воплощения изобретения, звенья (864) доступа к памяти могут включать в себя звено загрузки, звено сохранения адреса и звено сохранения данных, каждое из которых сопряжено со звеном (872) TLB для данных, находящимся в запоминающем звене (870). Кроме того, со звеном (876) кэша уровня 2 (L2), находящимся в запоминающем звене (870), сопряжено звено (834) кэша команд. Звено (876) кэша уровня 2 сопряжено с одним или более другими уровнями кэша и, в конечном счете, с основной памятью.

В порядке примера отметим, что эта приводимая в качестве примера архитектура ядра с переименованием регистров, с переупорядочиванием последовательности выдачи/исполнения команд может реализовывать конвейер (800) следующим образом: 1) звено (838) выборки команд выполняет стадии (802 и 804) выборки и декодирования длины; 2) декодирующее звено (840) выполняет стадию (806) декодирования; 3) переименовывающее/распределяющее звено (852) выполняет стадию (808) распределения и стадию (810) переименования; 4) звено (звенья) (856) планировщика выполняет (выполняют) стадию (812) планирования; 5) звено (звенья) (858) физического регистрового файла (физических регистровых файлов) и запоминающее звено (1070) выполняют стадию (814) считывания из регистра/считывания из памяти; исполняющий кластер (860) выполняет стадию (816) исполнения; 6) запоминающее звено (870) и звено (звенья) (858) физического регистрового файла (физических регистровых файлов) выполняют стадию (818) записи в обратном направлении/записи в память; 7) в стадию (822) обработки исключительных ситуаций могут быть вовлечены разнообразные звенья; и 8) звено (854) изъятия и звено (звенья) (858) физического регистрового файла (физических регистровых файлов) выполняют стадию (824) фиксации.

Ядро (890) может поддерживать один или более наборов команд (например, набор команд х86 (с некоторыми расширениями, которые были добавлены в более новых версиях)); набор (MIPS) команд от MIPS Technologies, Саннивейл, штат Калифорния, США; набор (ARM) команд (с необязательными дополнительными расширениями, такими как NEON) от ARM Holdings, Саннивейл, штат Калифорния, США, включающие в себя команду (команды), описанную (описанные) здесь. В одном варианте воплощения изобретения, ядро (890) включает в себя логику для поддержки расширения набора команд для упакованных данных (например, расширения AVX1, AVX2), таким образом, делая возможными операции, используемые многими мультимедийными приложениями, выполняемыми с использованием упакованных данных.

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

Следует понимать, что, хотя переименование регистров описано в контексте исполнения с переупорядочиванием последовательности команд, переименование регистров может быть использовано в архитектуре без переупорядочивания последовательности команд. Хотя проиллюстрированный вариант воплощения процессора также включает в себя раздельные звенья (834/874) кэша команд и данных и совместно используемое звено (876) кэша уровня 2, альтернативные варианты воплощения изобретения могут иметь единый внутренний кэш, как для команд, так и для данных, такой как, например, внутренний кэш уровня 1 (L1) или множественные уровни внутреннего кэша. В некоторых вариантах воплощения изобретения, система может включать в себя сочетание внутреннего кэша и внешнего кэша, который является внешним по отношению к ядру и/или процессору. В качестве альтернативы, весь кэш может быть внешним по отношению к ядру и/или процессору.

Конкретная приводимая в качестве примера архитектура ядра без переупорядочения последовательности команд

На Фиг. 9А-В проиллюстрирована блок-схема более конкретной приводимой в качестве примера архитектуры ядра без переупорядочения последовательности команд, каковое ядро было бы одним из нескольких логических блоков (включающих в себя другие ядра того же самого типа и/или других типов) в микросхеме. Логические блоки поддерживают связь через широкополосную сеть межсоединений (например, кольцевую сеть) с некоторой неизменяемой функциональной логикой, интерфейсами ввода-вывода для памяти и другой необходимой логикой ввода-вывода, в зависимости от варианта применения.

Фиг. 9А представляет собой блок-схему одиночного ядра процессора наряду с его соединением с расположенной на кристалле сетью (902) межсоединений и с его локальным подмножеством (904) кэша уровня 2 (L2), соответствующими вариантам воплощения изобретения. В одном варианте воплощения изобретения, декодер (900) команд поддерживает набор команд (х86) с расширением набора команд для обработки упакованных данных. Кэш (906) уровня 1 делает возможным имеющие малое время ожидания доступы к кэш - памяти в скалярные и векторные звенья. Хотя в одном варианте воплощения изобретения (для того, чтобы упростить конструкцию), скалярное звено (908) и векторное звено (910) используют раздельные наборы регистров (соответственно, скалярные регистры (912) и векторные регистры 914), и данные, передаваемые между ними, записываются в память и затем считываются в них в обратном направлении из кэша (906) уровня 1 (LI), в альтернативных вариантах воплощения изобретения может использоваться другой подход (например, использование единого набора регистров или введение тракта связи, который позволяет передавать данные между этими двумя регистровыми файлами, не записывая их и не считывая их в обратном направлении).

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

Фиг. 9В представляет собой расширенное представление части ядра процессора, показанного на Фиг. 9А, соответствующего вариантам воплощения изобретения. Фиг. 9В включает в себя кэш (906А) уровня 1 для данных, являющийся частью кэша (904) уровня 1, так же как и больше подробностей, относящихся к векторному звену (910) и векторным регистрам (914). В частности, векторное звено (910) представляет собой 16-разрядное устройство обработки векторных данных (VPU - устройство) (смотри 16-разрядное арифметико-логическое устройство (928)), которое исполняет одну или больше команд целочисленных вычислений, вычислений с обычной точностью с плавающей запятой и вычислений с двойной точностью с плавающей запятой. Устройство обработки векторных данных поддерживает настройку по адресам входов регистра посредством звена (920) настройки по адресам, числовое преобразование посредством звеньев (922А-В) числового преобразования и копирование посредством звена (924) копирования на входе памяти. Регистры (926) маски записи позволяют осуществлять предикацию записей результирующего вектора.

Процессор с интегрированным контроллером памяти и графическими средствами

Фиг. 10 представляет собой блок-схему процессора (1000), который может иметь более чем одно ядро, может иметь интегрированный контроллер памяти и может иметь интегрированные графические средства в соответствии с вариантами воплощения изобретения. Прямоугольники, очерченные на Фиг. 10 сплошной линией, иллюстрируют процессор (1000) с единственным ядром (1002А), системного агента (1010), набор из одного или более звеньев (1016) шинного контроллера, в то время как необязательное добавление прямоугольников, очерченных пунктирной линией, иллюстрирует альтернативный процессор (1000) с множественными ядрами (1002А-N), набор из одного или более звена (звеньев) (1014) интегрированного контроллера памяти в звене (1010) системного агента и специализированную логику (1008).

Таким образом, различные варианты реализации процессора (1000) могут включать в себя: 1) центральный процессор со специализированной логикой (1008), представляющей собой интегрированную логику для (обрабатываемых объемов) графических и/или научных данных (которая может включать в себя одно или более ядер), и ядра (1002А-N), представляющие собой одно или более универсальных ядер (например, универсальных ядер без переупорядочения последовательности команд, универсальных ядер с переупорядочением последовательности команд, сочетание этих двух типов ядер); 2) сопроцессор с ядрами (1002А-N), представляющими собой большое количество специализированных ядер, предназначенных, главным образом, для (обрабатываемых объемов) графических и/или научных данных; и 3) сопроцессор с ядрами (1002А-N), представляющими собой большое количество универсальных ядер без переупорядочения последовательности команд. Таким образом, процессор (1000) может представлять собой универсальный процессор, сопроцессор или специализированный процессор, такой как, например, сетевой процессор или процессор передачи данных, машина сжатия данных, графический процессор, GPGPU (универсальное устройство обработки графических данных), высокопроизводительный сопроцессор со многими интегрированными ядрами (MIC - сопроцессор) (включающий в себя 30 или больше ядер), встроенный процессор или тому подобное. Процессор может быть реализован на одной или более микросхемах. Процессор (1000) может являться частью одной или более подложек и/или может быть реализован на одной или более подложках с использованием любого из ряда технологических процессов, таких как, например, BiCMOS (биполярная комплементарная структура "металл - оксид - полупроводник"), CMOS (комплементарная структура "металл - оксид - полупроводник") или NMOS (n - канальная структура "металл - оксид - полупроводник").

Иерархия памяти включает в себя один или более уровней кэша в пределах ядер, набор из одного или более совместно используемых звеньев (1006) кэша и внешнюю память (не показанную на чертеже), сопряженную с набором звеньев (1014) интегрированного контроллера памяти. Набор совместно используемых звеньев (1006) кэша может включать в себя один или более кэшей среднего уровня, таких как уровня 2 (L2), уровня 3 (L3), уровня 4 (L4) или других уровней кэша, кэш последнего уровень (LLC - кэш) и/или их сочетания. Хотя в одном варианте воплощения изобретения межсоединение между интегрированной логикой (1008) графики, набором совместно используемых звеньев (1006) кэша и звеном (1010) системного агента/звеном (звеньями) (1014) интегрированного контроллера памяти осуществляет основанное на кольце звено (1012) межсоединения, в альтернативных вариантах воплощения изобретения может использоваться любое количество хорошо известных технологий для межсоединения таких звеньев. В одном варианте воплощения изобретения, поддерживается когерентность между одним или более звеньями (1006) кэша и ядрами (1002-N).

В некоторых вариантах воплощения изобретения, одно или более ядер (1002А-N) способны к многопоточной обработке данных. Системный агент (1010) включает в себя те компоненты, которые координируют и управляют ядрами (1002А-N). Звено (1010) системного агента может включать в себя, например, звено управления электропитанием (PCU - звено) и звено отображения. Звено управления электропитанием может представлять собой или включать в себя логику и компоненты, необходимые для регулирования состояние электропитания ядер (1002А-N) и интегрированной логики (1008) графики. Звено отображения предназначено для приведения в действие одного или более подсоединенных внешним образом устройств отображения.

Ядра (1002А-N) могут быть однородными или неоднородными в том, что касается набора команд архитектуры, то есть два или более из ядер (1002А-N) могут быть способны исполнять один и тот же набор команд, в то время как другие могут быть способны исполнять только некоторое подмножество этого набора команд или другой набор команд.

Приводимая в качестве примера архитектура вычислительной системы

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

Обратимся теперь к Фиг. 11, на которой показана блок-схема системы (1100) в соответствии с одним вариантом воплощения настоящего изобретения. Система (1100) может включать в себя один или более процессоров (1110), (1115), которые сопряжены с концентратором - контроллером (1120). В одном варианте воплощения изобретения концентратор - контроллер (1120) включает в себя концентратор - контроллер (GMCH - концентратор) (1190) памяти графических данных и концентратор ввода-вывода (IOH - концентратор) (1150) (которые могут находиться на раздельных микросхемах); концентратор - контроллер (1190) памяти графических данных включает в себя контроллер памяти и графический контроллер, с которыми сопряжены память (1140) и сопроцессор (1145); концентратор (1150) ввода-вывода сопрягает с концентратором - контроллером (1190) памяти графических данных устройства (1160) ввода-вывода (I/O - устройства). В качестве альтернативы, один или оба контроллера из числа: контроллера памяти и графического контроллера, интегрированы в пределах процессора (как здесь описано), память (1140) и сопроцессор (1145) сопряжены непосредственно с процессором (1110), и концентратором - контроллером (1120) в единой микросхеме с концентратором (1150) ввода-вывода.

Необязательная природа дополнительных процессоров (1115) обозначена на Фиг. 11 пунктирными линиями. Каждый процессор (1110), (1115) может включать в себя одно или больше описанных здесь обрабатывающих ядер, и может представлять собой некоторую версию процессора (1000).

Память (1140) может представлять собой, например, динамическое оперативное запоминающее устройство (DRAM), память с изменением фазы (РСМ - память) или сочетание этих двух типов памяти. По меньшей мере для одного варианта воплощения изобретения, концентратор - контроллер (1120) поддерживает связь с процессором (процессорами) (1110), (1115) через многоотводную шину, такую как управляющая шина (FSB - шина), двухточечный интерфейс, такой как межсоединение QuickPath (QPI - межсоединение) или аналогичное соединение (1195).

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

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

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

Обратимся теперь к Фиг. 12, на которой показана блок-схема первой более конкретной системы (1200), приводимой в качестве примера, в соответствии с одним вариантом воплощения настоящего изобретения. Как показано на Фиг. 12, многопроцессорная система (1200) представляет собой систему с двухточечными межсоединениями, и включает в себя первый процессор (1270) и второй процессор (1280), сопряженные через двухточечное межсоединение (1250). Каждый из процессоров: (1270) и (1280) может представлять собой некоторую версию процессора (1000). В одном варианте воплощения изобретения, процессоры (1270) и (1280) представляют собой, соответственно, процессоры (1110) и (1115), в то время как сопроцессор (1238) представляет собой сопроцессор (1145). В другом варианте воплощения изобретения, процессоры (1270) и (1280) представляют собой, соответственно, процессор (1110), сопроцессор (1145).

Процессоры (1270) и (1280) показаны включающими в себя, соответственно, звенья (1272) и (1282) интегрированных контроллеров памяти (IMC - контроллеров). Процессор (1270) также включает в себя, как часть своих звеньев - шинных контроллеров, двухточечные (Р-Р) интерфейсы (1276) и (1278); аналогичным образом, второй процессор (1280) включает в себя (двухточечные) интерфейсы (1286) и (1288). Процессоры (1270), (1280) могут осуществлять обмен информацией через двухточечный (Р-Р) интерфейс (1250) с использованием схем (1278), (1288) (двухточечного) интерфейса. Как показано на Фиг. 12, интегрированные контроллеры (1272) и (1282) памяти (IMC - контроллеры) сопрягают процессоры с соответствующими запоминающими устройствами, а именно, с памятью (1232) и памятью (1234), которые могут являться частями основной памяти, локально закрепленными за соответствующими процессорами.

Процессоры (1270), (1280) могут каждый осуществлять обмен информацией с набором (1290) микросхем через индивидуальные двухточечные интерфейсы (1252), (1254), использующие схемы (1276), (1294), (1286), (1298) двухточечных интерфейсов. Набор (1290) микросхем может, если требуется, осуществлять обмен информацией с сопроцессором (1238) через высокопроизводительный интерфейс (1239). В одном варианте воплощения изобретения, сопроцессор (1238) представляет собой специализированный процессор, такой как, например, высокопроизводительный MIC-процессор (процессор со многими интегрированными ядрами), сетевой процессор или процессор передачи данных, машина сжатия данных, графический процессор, GPGPU (универсальное устройство обработки графических данных), встроенный процессор или тому подобное.

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

Набор (1290) микросхем может быть сопряжен с некоторой первой шиной (1216) через интерфейс (1296). В одном варианте воплощения изобретения, первая шина (1216) может представлять собой шину Межсоединения периферийных компонентов (шину PCI), или шину, такую как шина PCI Express (Скоростного Межсоединения периферийных компонентов) или другая шина межсоединения ввода/вывода, относящаяся к третьему поколению, хотя объем настоящего изобретения этим не ограничен.

Как показано на Фиг. 12, с первой шиной (1216) могут быть сопряжены разнообразные устройства (1214) ввода/вывода, наряду с мостом (1218) между шинами, который сопрягает первую шину (1216) с некоторой второй шиной (1220). В одном варианте воплощения изобретения, с первой шиной (1216) сопряжены один или более дополнительный процессор (дополнительных процессоров) (1215), таких как сопроцессоры, высокопроизводительные MIC-процессоры (процессоры со многими интегрированными ядрами), GPGPU-устройства (универсальные устройства обработки графических данных), акселераторы (такие как, например, графические акселераторы или звенья процессоров цифровой обработки сигналов (DSP - процессоров), вентильные матрицы с эксплуатационным программированием, или любой другой процессор. В одном варианте воплощения изобретения, вторая шина (1220) может представлять собой шину с малым количеством выводов (LPC-шину). Со второй шиной (1220) могут быть сопряжены разнообразные устройства, включающие в себя, например, клавиатуру и/или "мышь" (1222), устройства (1227) связи и запоминающее звено (1228), такое как дисковод или другое запоминающее устройство большой емкости, которое, в одном варианте воплощения изобретения, может включать в себя команды/код и данные (1230). Кроме того, со второй шиной (1220) может быть сопряжено устройство (1224) ввода/вывода звука. Отметим, что возможны и другие архитектуры. Например, вместо двухточечной архитектуры, показанной на Фиг. 12, в системе может быть реализована многоотводная шина или другая такая архитектура.

Обратимся теперь к Фиг. 13, на которой показана блок-схема второй более конкретной системы (1300), приводимой в качестве примера, в соответствии с одним вариантом воплощения настоящего изобретения. Сходные элементы на Фиг. 12 и 13 имеют сходные ссылочные позиции, и некоторые аспекты Фиг. 12 были опущены на Фиг. 13 для того, чтобы избежать затруднения понимания других аспектов Фиг. 15.

На Фиг. 13 проиллюстрировано то, что процессоры (1270), (1280) могут включать в себя интегрированную логику ("CL") (соответственно, (1272) и (1282)) управления памятью и вводом-выводом. Таким образом, логика (1272) и логика (1282) управления включают в себя звенья интегрированного контроллера памяти и включают в себя логику управления вводом/выводом. На Фиг. 13 проиллюстрировано то, что с логикой (1272) и (1282) управления сопряжены не только память (1232), (1234), но также и то, что с логикой (1272), (1282) управления также сопряжены устройства (1314) ввода/вывода. Унаследованные устройства (1315) ввода/вывода сопряжены с набором (1290) микросхем.

Обратимся теперь к Фиг. 14, на которой показана блок-схема внутрикристальной системы (SoC) (1400) в соответствии с одним вариантом воплощения настоящего изобретения. Элементы, аналогичные элементам на Фиг. 10, имеют сходные с ними ссылочные позиции. Кроме того, прямоугольники, вычерченные пунктирной линией, представляют собой необязательные признаки в более усовершенствованных внутрикристальных системах. На Фиг. 14, звено (звенья) (1402) межсоединений сопряжено (сопряжены) с: прикладным процессором (1410), который включает в себя набор из одного или более ядер (202А-N) и звено (звенья) (1006) совместно используемого кэша; звеном (1010) системного агента; звеном (звеньями) (1016) шинного контроллера; звеном (звеньями) (1014) интегрированного контроллера памяти; набором из одного или более сопроцессоров (1420), которые могут включать в себя интегрированную логику графики, процессор изображений, процессор аудиоинформации и видеопроцессор; звеном (1430) статического оперативного запоминающего устройства (звеном SRAM); звеном (1432) прямого доступа к памяти (звеном DMA); и звеном (1440) отображения для сопряжения с одним или более внешними устройствами отображения. В одном варианте воплощения изобретения, сопроцессор(ы) (1420) включает (включают) в себя специализированный процессор, такой как, например, сетевой процессор или процессор передачи данных, машина сжатия данных, GPGPU (универсальное устройство обработки графических данных), высокопроизводительный MIC - процессор (процессор со многими интегрированными ядрами), встроенный процессор или тому подобное.

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

Программный код, такой как код (1230), проиллюстрированный на Фиг. 12, может быть применен к вводу команд для выполнения описанных здесь функций и для генерирования выходной информации. Выходная информация может быть применена, известным образом, к одному или более устройствам вывода. Для целей этой заявки, система обработки данных включает в себя любую систему, которая имеет процессор, такой как, например: процессор цифровой обработки сигналов (DSP - процессор), микроконтроллер, прикладная специализированная интегральная схема (ASIC) или микропроцессор.

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

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

Такие машиночитаемые носители информации могут включать в себя, но не в качестве ограничения, некратковременные материальные конфигурации изделий, изготовленных или образованных машиной или устройством, включающие в себя такие носители информации, как жесткие диски, любой другой тип диска, включающий в себя гибкие диски, оптические диски, постоянные запоминающие устройства на компакт - дисках (устройства CD-ROM), перезаписываемые компакт - диски (диски CD-RW) и магнитооптические диски, полупроводниковые устройства, такие как постоянные запоминающие устройства (ROM-устройства), оперативные запоминающие устройства (RAM-устройства), такие как динамические оперативные запоминающие устройства (DRAM-устройства), статические оперативные запоминающие устройства (SRAM-устройства), стираемые программируемые постоянные запоминающие устройства (EPROM-устройства), электрически стираемые программируемые постоянные запоминающие устройства (EEPROM-устройства), память с изменением фазы (РСМ-память), магнитные или оптические карты, или любой другой тип носителей информации, подходящий для хранения электронных команд.

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

Эмуляция (включающая в себя двоичную трансляцию, трансформирование кода и так далее)

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

Фиг. 15 представляет собой блок-схему, на которой сравнивается использование конвертора команд, реализованного программными средствами, для того, чтобы конвертировать двоичные команды в некотором исходном наборе команд в двоичные команды в некотором заданном наборе команд в соответствии с вариантами воплощения изобретения. В проиллюстрированном варианте воплощения изобретения, конвертор команд представляет собой реализованный программными средствами конвертор команд, хотя, в качестве альтернативы, конвертор команд может быть реализован в виде программного обеспечения, микропрограммного обеспечения, аппаратного обеспечения или разнообразных их сочетаний. На Фиг. 15 показано, что программа на языке (1502) высокого уровня может быть скомпилирована с использованием компилятора (1504) набора команд х86 для того, чтобы сгенерировать двоичный код (1506) набора команд х86, который может быть исполнен, в качестве собственного, процессором (1516) с по меньшей мере одним ядром с набором команд х86. Этот процессор (1516) с по меньшей мере одним ядром с набором команд х86 представляет любой процессор, который может выполнять, по существу, те же самые функции, что и процессор Intel с по меньшей мере одним ядром с набором команд х86, совместимым образом исполняя или иным образом обрабатывая (1) существенную часть набора команд ядра набора команд Intel х86 или (2) версии объектного кода приложений или другого программного обеспечения, предназначенных для исполнения на процессоре Intel с по меньшей мере одним ядром с набором команд х86, для того, чтобы достигнуть, по существу, того же самого результата, что и процессор Intel с по меньшей мере одним ядром с набором команд х86. Компилятор (1504) набора команд х86 представляет компилятор, который способен функционировать таким образом, чтобы генерировать двоичный код (1506) набора команд х86 (например, объектный код), который при дополнительной обработке по редактированию связей или без этой обработки, может быть исполнен на этом процессоре (1516) с по меньшей мере одним ядром с набором команд х86. Аналогичным образом, на Фиг. 15 показано, что программа на языке (1502) высокого уровня, может быть скомпилирована с использованием компилятора (1508) альтернативного набора команд для того, чтобы сгенерировать двоичный код (1510) альтернативного набора команд, который может быть исполнен, в качестве собственного, процессором (1514) без хотя бы одного ядра с набором команд х86 (например, процессором с ядрами, которые исполняют набор команд MIPS от MIPS Technologies, г. Саннивейл, штат Калифорния, США и/или которые исполняют набор команд ARM от ARM Holdings, г. Саннивейл, штат Калифорния, США). Конвертор (1512) команд используется для того, чтобы конвертировать двоичный код (1506) набора команд х86 в код, который может быть исполнен, в качестве собственного, процессором (1514) без ядра с набором команд х86. Этот конвертированный код вряд ли будет таким же, как двоичный код (1510) альтернативного набора команд, потому что способный на это конвертор команд создать трудно; однако, конвертированный код будет выполнять эту общую операцию и будет составлен из команд из этого альтернативного набора команд. Таким образом, конвертор (1512) команд представляет программное обеспечение, микропрограммное обеспечение, аппаратное обеспечение или их сочетание, которые посредством эмуляции, моделирования или любого другого процесса позволяет процессору или другому электронному устройству, которое не имеет процессора или ядра с набором команд х86, исполнять двоичный код (1506) набора команд х86.

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

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

Мог быть использован термин "и/или". В том значении, в котором он здесь используется, термин "и/или" означает один или другой или оба (например, А и/или В означает А или В или как А, так и В).

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

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

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

Некоторые варианты воплощения изобретения включают в себя изготовленное изделие (например, компьютерный программный продукт), которое включает в себя машиночитаемый носитель информации. Этот носитель информации может включать в себя механизм, который предоставляет, например, хранит, информацию в форме, которая может быть считана машиной. Машиночитаемый носитель информации может предоставлять, или хранить на себе, одну или более или последовательность команд, которые, если и/или когда они исполняются машиной, заставляет машину выполнять и/или приводит в результате к тому, что машина выполняет одну из раскрытых здесь операций, способов или технологий. В некоторых вариантах воплощения изобретения, этот машиночитаемый носитель информации может включать в себя материальный и/или некратковременный машиночитаемый носитель информации. Например, этот материальный и/или некратковременный машиночитаемый носитель информации может включать в себя: гибкую дискету, оптический носитель информации, оптический диск, CD-ROM (постоянное запоминающее устройство на компакт - диске), магнитный диск, магнитооптический диск, постоянное запоминающее устройство (ROM), программируемое постоянное запоминающее устройство (PROM), стираемые и программируемые постоянные запоминающие устройства (EPROM), электрически стираемое и программируемое постоянное запоминающее устройство (EEPROM), оперативное запоминающее устройство (RAM), статическое оперативное запоминающее устройство (SRAM), динамическое оперативное запоминающее устройство (DRAM), флэш-память, память с изменением фазы или тому подобное. Этот материальный носитель информации может включать в себя один или более твердых вещественных материалов для физического хранения данных, таких как, например, полупроводниковый материал, материал, меняющий фазу, магнитный материал и так далее. Этот носитель для хранения данных не состоит из кратковременного распространяемого сигнала. В некоторых вариантах воплощения изобретения, этот носитель информации является энергонезависимым. Примеры походящих машин включают в себя, но не в качестве ограничения: серверы, настольные компьютеры, переносные компьютеры, компьютеры типа "ноутбук", компьютеры "нетбук" (переносные компьютеры для работы в сети), планшетные компьютеры, "смартфоны" (мобильные телефоны, обладающие рядом функций компьютера), сотовые телефоны, мобильные Интернет - устройства (MID-устройства), универсальные проигрыватели, интеллектуальные телевизоры, сетевые приставки, сетевые элементы (например, маршрутизаторы, коммутаторы и так далее) сетевые приставки, телевизионные абонентские приставки и контроллеры для видеоигр, и другие вычислительные системы или электронные устройства, имеющие один или более процессоров.

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

Приводимые в качестве примера варианты воплощения изобретения

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

Пример 1 представляет собой процессор, который включает в себя набор регистров, способных к хранению упакованных данных. Процессор также включает в себя исполняющее звено, сопряженное с этим набором регистров. Исполняющее звено должно осуществлять доступ к этому набору регистров по меньшей мере двумя различными методами в ответ на команды. Эти по меньшей мере два различных метода включают в себя некоторый первый метод, в котором набор регистров должен представлять множество N-разрядных регистров, и некоторый второй метод, в котором набор регистров должен представлять единый регистр, состоящий по меньшей мере из 2N разрядов, и в котором эти по меньшей мере 2N разрядов должны представлять собой по меньшей мере 256 разрядов.

Пример 2 включает в себя процессор по примеру 1 и, если требуется, в котором, во втором методе набор регистров должен представлять единый регистр, состоящий из 4N разрядов, и в котором исполняющее звено должно также осуществлять доступ к этому набору регистров по некоторому третьему методу, в котором набор регистров должен представлять множество 2N-разрядных регистров.

Пример 3 включает в себя процессор по Примеру 2 и, если требуется, в котором во втором методе набор регистров должен представлять единый регистр, который должен иметь по меньшей мере 512 разрядов.

Пример 4 включает в себя процессор по Примеру 1 и, если требуется, в котором исполняющее звено должно также осуществлять доступ к этому набору регистров по некоторому третьему методу, в котором набор регистров должен представлять множество N/2 - разрядных регистров.

Пример 5 включает в себя процессор по Примеру 1 и, если требуется, в котором в первом методе набор регистров должен представлять множество 256-разрядных регистров, а во втором методе набор регистров должен представлять единый регистр, состоящий из 512 разрядов.

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

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

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

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

Пример 10 включает в себя процессор по любому из Примеров 1-7 и, если требуется, в котором процессор включает в себя процессор для вычислений с сокращенным набором команд (RISC - процессор), и в котором набор регистров представляет собой N/2 - разрядные регистры.

Пример 11 включает в себя процессор по любому из Примеров 1-7 и, если требуется, в котором процессор включает в себя процессор для вычислений с сокращенным набором команд (RISC - процессор), и в котором набор регистров представляет собой N-разрядные регистры.

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

Пример 13 представляет собой способ, выполняемый процессором, который включает в себя этап, на котором осуществляют доступ к набору регистров по некоторому первому методу, в котором набор регистров представляет множество N-разрядных регистров, для того, чтобы извлечь из каждого регистра из этого множества N-разрядных регистров соответствующие N-разрядные упакованные данные, способ также включает в себя этап, на котором осуществляют доступ к набору регистров по некоторому второму методу, в котором набор регистров представляет единый регистр, состоящий по меньшей мере из 2N разрядов, для того, чтобы извлечь из этого единого регистра соответствующие упакованные данные, состоящие по меньшей мере из 2N разрядов, причем эти по меньшей мере 2N разрядов должны представлять собой по меньшей мере 256 разрядов.

Пример 14 включает в себя способ по Примеру 13 и, если требуется, в котором этап, на котором осуществляют доступ по второму методу, включает в себя этап, на котором осуществляют доступ к набору регистров, которые представляют единый регистр, состоящий из 4N разрядов, и дополнительно включающий в себя этап, на котором осуществляют доступ к этому набору регистров по некоторому третьему методу, в котором набор регистров должен представлять множество 2N-разрядных регистров.

Пример 15 включает в себя способ по Примеру 13 и, если требуется, в котором этап, на котором осуществляют доступ по второму методу, включает в себя этап, на котором осуществляют доступ к набору регистров, которые представляют единый регистр, имеющий по меньшей мере 512 разрядов.

Пример 16 включает в себя способ по Примеру 13 и, если требуется, дополнительно включающий в себя этап, на котором осуществляют доступ к этому набору регистров по некоторому третьему методу, в котором набор регистров должен представлять множество N/2 - разрядных регистров.

Пример 17 включает в себя способ по Примеру 13 и, если требуется, в котором этап, на котором осуществляют доступ по первому методу, включает в себя этап, на котором осуществляют доступ к набору регистров, которые представляют множество 256-разрядных регистров, и в котором этап, на котором осуществляют доступ по второму методу, включает в себя этап, на котором осуществляют доступ к набору регистров, которые представляют единый регистр, состоящий из 512 разрядов.

Пример 18 включает в себя способ по Примеру 13 и, если требуется, в котором этап, на котором осуществляют доступ по первому методу, включает в себя этап, на котором осуществляют доступ к набору регистров, которые представляют множество 128-разрядных регистров, и в котором этап, на котором осуществляют доступ по второму методу, включает в себя этап, на котором осуществляют доступ к набору регистров, которые представляют единый регистр, состоящий из 256 разрядов.

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

Пример 20 включает в себя способ по любому из Примеров 13-18 и, если требуется, в котором доступ по второму методу осуществляется в ответ на команду, имеющую поле, отличное от кода операции, указывающее, что к набору регистров следует осуществлять доступ по второму методу.

Пример 21 включает в себя способ по любому из Примеров 13-18 и, если требуется, в котором этап, на котором осуществляют доступ по второму методу, включает в себя этап, на котором осуществляют доступ к набору регистров, которые представляют собой N/2 - разрядные регистры.

Пример 22 включает в себя способ по любому из Примеров 13-18 и, если требуется, в котором этап, на котором осуществляют доступ по второму методу, включает в себя этап, на котором осуществляют доступ к набору регистров, которые представляют собой N-разрядные регистры.

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

Пример 24 включает в себя систему по Примеру 23 и, если требуется, в которой во втором методе набор регистров должен представлять единый регистр, состоящий по меньшей мере из 256 разрядов.

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

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

Пример 27 представляет собой процессор, включающий в себя средство для осуществления доступа к набору регистров по некоторому первому методу, в котором набор регистров представляет множество N-разрядных регистров, для того, чтобы извлекать из каждого регистра из этого множества N-разрядных регистров соответствующие N-разрядные упакованных данных. Процессор также включает в себя средство для осуществления доступа к этому набору регистров по некоторому второму методу, в котором набор регистров представляет единый регистр, состоящий по меньшей мере из 2N разрядов, для того, чтобы извлекать из этого единого регистра соответствующие упакованные данные, состоящие по меньшей мере из 2N разрядов, причем эти по меньшей мере 2N разрядов должны представлять собой по меньшей мере 256 разрядов.

Пример 28 включает в себя процессор по Примеру 27 и, если требуется, в котором средство для осуществления доступа по второму методу включает в себя средство для осуществления доступа к набору регистров, которые представляют единый регистр, состоящий из 4N разрядов, и дополнительно включающий в себя средство для осуществления доступа к этому набору регистров по некоторому третьему методу, в котором набор регистров должен представлять множество 2N-разрядных регистров.

Пример 29 представляет собой машиночитаемый носитель информации, хранящий команды, которые, если они исполняются машиной, должны заставлять машину выполнять способ по любому из Примеров 13-22.

Пример 30 представляет собой процессор для выполнения способа по любому из Примеров 13-22.

Пример 31 представляет собой процессор, включающий в себя средства для выполнения способа по любому из Примеров 13-22.

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

Пример 33 представляет собой вычислительную систему для того, чтобы выполнять способ по любому из Примеров 13-22.

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

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

Похожие патенты RU2639695C2

название год авторы номер документа
КОМАНДЫ, ПРОЦЕССОРЫ, СПОСОБЫ И СИСТЕМЫ ДОСТУПА МНОЖЕСТВЕННЫХ РЕГИСТРОВ К ПАМЯТИ 2014
  • Хинтон Глен
  • Толл Брет
  • Сингал Ронак
RU2636675C2
ПРОЦЕССОРЫ, СПОСОБЫ, СИСТЕМЫ И КОМАНДЫ С ПРЕДИКАЦИЕЙ ЭЛЕМЕНТОВ УПАКОВАННЫХ ДАННЫХ 2014
  • Гай Бафорд М.
  • Сингал Ронак
  • Неик Мишали
  • Толл Брет Л.
RU2612597C1
КОМАНДА И ЛОГИКА ДЛЯ ОБЕСПЕЧЕНИЯ ФУНКЦИОНАЛЬНЫХ ВОЗМОЖНОСТЕЙ ЦИКЛА ЗАЩИЩЕННОГО ХЕШИРОВАНИЯ С ШИФРОМ 2014
  • Гопал Виндох
  • Фегхали Важди К.
RU2637463C2
ЗАГРУЗКА ПАРЦИАЛЬНОЙ ШИРИНЫ, ЗАВИСЯЩАЯ ОТ РЕЖИМА, В ПРОЦЕССОРАХ С РЕГИСТРАМИ С БОЛЬШИМ ЧИСЛОМ РАЗРЯДОВ, СПОСОБЫ И СИСТЕМЫ 2014
  • Раш Уильям К.
  • Сантиаго Язмин А.
  • Диксон Мартин Гай
RU2638641C2
ПРОЦЕССОР, СПОСОБ, СИСТЕМА И ИЗДЕЛИЕ ДЛЯ ВЕКТОРНОГО ИНДЕКСИРОВАННОГО ДОСТУПА К ПАМЯТИ ПЛЮС АРИФМЕТИЧЕСКОЙ И/ИЛИ ЛОГИЧЕСКОЙ ОПЕРАЦИИ 2014
  • Ермолаев Игорь
  • Толл Брет Л.
  • Вэлентайн Роберт
  • Сан Адриан Хесус К.
  • Доши Гаутам Б.
  • Чакраборти Прасенджит
  • Маллади Рама К
RU2620930C1
УСТРОЙСТВО И СПОСОБ РЕВЕРСИРОВАНИЯ И ПЕРЕСТАНОВКИ БИТОВ В РЕГИСТРЕ МАСКИ 2014
  • Улд-Ахмед-Валл Эльмустафа
  • Вэлентайн Роберт
RU2636669C2
ЦЕЛОЧИСЛЕННОЕ УМНОЖЕНИЕ ВЫСОКОГО ПОРЯДКА С ОКРУГЛЕНИЕМ И СДВИГОМ В АРХИТЕКТУРЕ С ОДНИМ ПОТОКОМ КОМАНД И МНОЖЕСТВОМ ПОТОКОВ ДАННЫХ 2003
  • Эйбел Джеймс К.
  • Уолтерз Дерин К.
  • Тайлер Джонатан Дж.
RU2263947C2
МОДУЛЬ СОПРОЦЕССОРА КЭША 2011
  • Джха Ашиш
RU2586589C2
НЕЧУВСТВИТЕЛЬНЫЙ К ЗАДЕРЖКЕ БУФЕР ТРАНЗАКЦИИ ДЛЯ СВЯЗИ С КВИТИРОВАНИЕМ 2014
  • Доси Хем
  • Раджу Ананд
RU2598594C2
ПРОЦЕССОРЫ, СПОСОБЫ, СИСТЕМЫ И КОМАНДЫ ДЛЯ СЛОЖЕНИЯ ТРЕХ ОПЕРАНДОВ-ИСТОЧНИКОВ С ПЛАВАЮЩЕЙ ЗАПЯТОЙ 2014
  • Эспаса Рохер
  • Соле Гильем
  • Фернандес Манель
RU2656730C2

Иллюстрации к изобретению RU 2 639 695 C2

Реферат патента 2017 года ПРОЦЕССОРЫ, СПОСОБЫ И СИСТЕМЫ ДЛЯ ОСУЩЕСТВЛЕНИЯ ДОСТУПА К НАБОРУ РЕГИСТРОВ ЛИБО КАК К МНОЖЕСТВУ МАЛЫХ РЕГИСТРОВ, ЛИБО КАК К ОБЪЕДИНЕННОМУ БОЛЬШОМУ РЕГИСТРУ

Группа изобретений относится к области вычислительной техники и может быть использована для осуществления доступа к регистрам в процессорах. Техническим результатом является уменьшение занимаемой регистрами площади на кристалле. Процессор содержит набор физических регистров, каждый из которых выполнен с возможностью хранения упакованных данных; исполняющее звено, сопряженное с набором физических регистров, причем исполняющее звено выполнено с возможностью доступа к набору физических регистров по меньшей мере двумя различными методами в ответ на команды, причем указанные по меньшей мере два различных метода включают в себя первый метод, в котором набор физических регистров представляет множество N-разрядных логических регистров; и второй метод, в котором набор физических регистров представляет один логический регистр по меньшей мере из 2N разрядов, причем указанные по меньшей мере 2N разрядов составляют по меньшей мере 256 разрядов, при этом каждая из команд содержит код операции и выделенное поле, отличающееся от кода операции, для указания метода осуществления доступа исполняющим звеном к набору физических регистров для указанной команды. 4 н. и 19 з.п. ф-лы, 20 ил., 35 пр.

Формула изобретения RU 2 639 695 C2

1. Процессор, содержащий:

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

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

первый метод, в котором набор физических регистров представляет множество N-разрядных логических регистров; и

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

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

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

3. Процессор по п. 2, в котором во втором методе набор физических регистров представляет один логический регистр, имеющий по меньшей мере 512 разрядов.

4. Процессор по п. 1, в котором исполняющее звено дополнительно выполнено с возможностью доступа к набору физических регистров по третьему методу, в котором набор физических регистров представляет множество N/2-разрядных логических регистров.

5. Процессор по п. 1, в котором в первом методе набор физических регистров представляет множество 256-разрядных логических регистров, а во втором методе набор физических регистров представляет один логический регистр из 512 разрядов.

6. Процессор по п. 1, в котором во втором методе набор физических регистров представляет один логический регистр по меньшей мере из 512 разрядов.

7. Процессор по п. 1, в котором в первом методе набор физических регистров представляет множество 128-разрядных логических регистров, а во втором методе набор физических регистров представляет один логический регистр из 256 разрядов.

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

9. Процессор по п. 1, содержащий процессор для вычислений с сокращенным набором команд (RISC-процессор), причем набор физических регистров представляет собой N/2-разрядные логические регистры.

10. Процессор по п. 1, содержащий процессор для вычислений с сокращенным набором команд (RISC-процессор), причем набор физических регистров представляет собой N-разрядные логические регистры.

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

12. Способ доступа к регистрам при выполнении команды, выполняемой процессором, содержащий этапы, на которых:

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

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

13. Способ по п. 12, в котором на этапе осуществления доступа по второму методу осуществляют доступ к набору физических регистров, которые представляют один логический регистр из 4N разрядов, при этом способ дополнительно содержит этап, на котором осуществляют доступ к указанному набору физических регистров по третьему методу, в котором набор физических регистров представляет множество 2N-разрядных логических регистров.

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

15. Способ по п. 12, дополнительно содержащий этап, на котором осуществляют доступ к указанному набору физических регистров по третьему методу, в котором набор физических регистров представляет множество N/2-разрядных логических регистров.

16. Способ по п. 12, в котором на этапе осуществления доступа по первому методу осуществляют доступ к набору физических регистров, которые представляют множество 256-разрядных логических регистров, а на этапе осуществления доступа по второму методу осуществляют доступ к набору физических регистров, которые представляют один логический регистр из 512 разрядов.

17. Способ по п. 12, в котором на этапе осуществления доступа по первому методу осуществляют доступ к набору физических регистров, которые представляют множество 128-разрядных логических регистров, а на этапе осуществления доступа по второму методу осуществляют доступ к набору физических регистров, которые представляют один логический регистр из 256 разрядов.

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

19. Способ по п. 12, в котором на этапе осуществления доступа по второму методу осуществляют доступ к набору физических регистров, которые представляют собой N/2-разрядные логические регистры.

20. Система для обработки команд, содержащая:

межсоединение;

процессор, сопряженный с межсоединением, причем процессор содержит:

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

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

первый метод, в котором набор физических регистров представляет множество N-разрядных логических регистров для хранения упакованных данных;

второй метод, в котором набор физических регистров представляет один логический регистр по меньшей мере из 2N разрядов для хранения упакованных данных; и

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

динамическое оперативное запоминающее устройство (DRAM), сопряженное с межсоединением,

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

21. Система по п. 20, в которой во втором методе набор физических регистров представляет один логический регистр по меньшей мере из 256 разрядов.

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

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

осуществление доступа к набору физических регистров по второму методу при выполнении команды, содержащей второй код операции и выделенное поле, отличающееся от второго кода операции, для указания того, что набор физических регистров подлежит доступу в соответствии со вторым методом, в котором набор физических регистров представляет один логический регистр по меньшей мере из 2N разрядов, для извлечения из указанного одного логического регистра соответствующих упакованных данных, состоящих по меньшей мере из 2N разрядов, причем указанные по меньшей мере 2N разрядов представляют по меньшей мере 256 разрядов; и

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

23. Энергонезависимый машиночитаемый носитель информации по п. 22, дополнительно хранящий команды, которые при исполнении машиной вызывают выполнение машиной операций, включающих в себя:

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

Документы, цитированные в отчете о поиске Патент 2017 года RU2639695C2

US 2008235496 A1, 25.09.2008
US 2008016319 A1, 17.01.2008
US 2010106942 A1, 29.04.2010
АДРЕСАЦИЯ РЕГИСТРОВ В УСТРОЙСТВЕ ОБРАБОТКИ ДАННЫХ 1997
  • Йорк Ричард
  • Фрэнсис Хедли Джеймс
  • Саймс Доминик
  • Байлз Стюарт
RU2193228C2

RU 2 639 695 C2

Авторы

Толл Брет Л.

Сингал Ронак

Гай Бафорд М.

Неик Мишали

Даты

2017-12-21Публикация

2014-06-26Подача