Устройство и способ реверсирования и перестановки битов в регистре маски
Иллюстрации
Показать всеГруппа изобретений относится к компьютерным системам и может быть использована для переупорядочения битов маски. Техническим результатом является обеспечение реверсирования и перестановки битов маски. В одном из вариантов процессор выполнения команды осуществляет операции: чтения множества битов маски, хранящихся в исходном регистре маски, при этом указанные биты маски ассоциированы с элементами векторных данных в векторном регистре; и выполнения операции реверсирования битов для копирования каждого бита маски из исходного регистра маски в регистр-адресат маски, так что операция реверсирования битов вызывает инверсию порядка битов, имевшего место в исходном регистре маски, в регистре-адресате маски, что приводит в результате к симметричному зеркальному отображению первоначального расположения битов. 5 н. и 17 з.п. ф-лы, 13 ил.
Реферат
Область техники, к которой относится изобретение
Варианты настоящего изобретения относятся в общем к области компьютерных систем. Более конкретно, варианты настоящего изобретения относятся к устройству и способу реверсирования и перестановки битов в регистре маски.
Уровень техники
Общая характеристика
Набор команд или архитектура набора команд (instruction set architecture (ISA)), является частью компьютерной архитектуры, относящейся к программированию, включая типы внутренних данных, команды, архитектуру регистров, режимы адресации, архитектуру памяти, обработку прерываний и исключений и внешний ввод/вывод (I/O). Следует отметить, что термин «команда» обычно обозначает макрокоманду - т.е. команду, передаваемую процессору для выполнения, в отличие от микрокоманды или микрооперации, являющейся результатом декодирования макрокоманды в декодере процессора.
Архитектура набора команд отличается от микроархитектуры, представляющей собой набор способов проектирования процессора, используемый для реализации этого набора команд. Процессоры с различными микроархитектурами могут использовать общий набор команд. Например, процессоры Intel® Pentium 4, Intel® Core™ и процессоры фирмы Advanced Micro Devices, Inc. из Sunnyvale С А реализуют почти идентичные версии набора команд х86 (с некоторыми расширениями, которые были добавлены в новых версиях), но имеют разные внутренние структуры. Например, одна и та же регистровая архитектура ISA может быть реализована различными способами в разных микроархитектурах с использованием хорошо известных способов, включая специализированные физические регистры, один или более динамически назначаемых физических регистров с использованием механизма переименования регистров (например, с использованием таблицы псевдонимов регистров (Register Alias Table (RAT)), буфера переупорядочения (Reorder Buffer (ROB)) и регистрового файла изъятия, как описано в патенте США No. 5,446,912; с использованием нескольких карт и пула регистров, как описано в патенте США No. 5,207,132) и т.п. Если не указано иначе, фразы «архитектура регистров», «регистровый файл» и «регистр», относятся к тому, что видимо для программного обеспечения/программиста, и к способу, которым команды специфицируют регистры. Когда требуется различать регистры, будут использованы прилагательные «логический», «архитектурный» или «видимый для программного обеспечения» для обозначения регистров/файлов в регистровой архитектуре, но для обозначения регистров в конкретной микроархитектуре будут использованы другие прилагательные (например, физический регистр, буфер переупорядочения, регистр изъятия, пул регистров).
Набор команд содержит один или более форматов. Конкретный формат команд определяет различные поля (число битов, расположение битов) для задания, помимо всего прочего, операции, которую нужно выполнить, и операнда(ов), над которым должна быть выполнена эта операция. Некоторые форматы команд дополнительно подразделены для определения шаблонов команд (подформатов). Например, шаблоны команд для конкретного формата команд могут быть определены с различными подмножествами полей формата команд (входящие в шаблон поля обычно располагаются в том же самом порядке, но по меньшей мере некоторые из этих полей занимают другие позиции битов, поскольку формат содержит меньшее число полей) и/или эти форматы могут быть определены таким образом, что какое-нибудь конкретное поле интерпретируется по-другому. Конкретная команда всегда выражена в каком-то конкретном формате команд (и, если так определено, согласно конкретному шаблону команд в рамках этого формата команд) и задает операцию и операнды. Поток команд представляет собой некую конкретную последовательность команд, где каждая команда в этой последовательности является событием команды в каком-либо формате команд (и, если определено, согласно конкретному шаблону команд в рамках этого формата команд).
Научные, финансовые приложения, автоматически векторизованные приложения общего назначения, приложения типа «распознавание, поиск («раскопки») и синтез» (RMS (recognition, mining, and synthesis)), а также визуальные и мультимедийные приложения (например, 2D/3D-графика, обработка изображения, видео сжатие/расширение, алгоритмы распознавания речи и манипуляции со звуком) часто требуют выполнения одной и той же операции над большим числом единиц данных (именуется «параллелизм данных»). Термин «операции в формате одна команда-множество данных» (Single Instruction Multiple Data (SIMD)) обозначает тип команд, в соответствии с которыми процессор выполняет операции над множеством единиц данных. Технология SIMD специально предназначена для процессоров, которые могут логически разбить биты в регистре на несколько элементов данных фиксированного размера, каждый из которых представляет отдельную величину. Например, биты в 64-разрядном регистре могут быть заданы в качестве исходного операнда, над которым нужно выполнить операцию, в виде четырех раздельных 16-битовых элементов данных, каждый из которых представляет отдельную 16-разрядную величину. Этот тип данных называется данными упакованного типа или данными векторного типа, а операнды этого типа данных называются операндами упакованных данных или векторными операндами. Иными словами, единица упакованных данных или вектор обозначает последовательность элементов упакованных данных; а операнд упакованных данных или векторный операнд является исходным операндом или операндом-адресатом в SIMD-команде (также известной, как команда упакованных данных или векторная команда).
В качестве примера, один тип SIMD-команды задает одну векторную операцию, которая должна быть выполнена над двумя исходными векторными операндами вертикальным образом для генерации векторного операнда-адресата (также называемого результирующим векторным операндом) такого же размера с таким же числом элементов данных и с таким же порядком следования этих элементов данных. Элементы данных из состава исходных векторных операндов называются исходными элементами данных, тогда как элементы данных в составе векторного операнда-адресата называются результирующими элементами данных или элементами-адресатами данных. Эти исходные векторные операнды имеют одинаковый размер и содержат элементы данных одинаковой ширины, так что они содержат одинаковое число элементов данных. Исходные элементы данных, находящиеся в одних и тех же битовых позиций в этих двух исходных векторных операндах образуют пары элементов данных (также именуемые соответствующими элементами данными). Операция, заданная этой SIMD-командой, выполняется отдельно над каждой парой исходных элементов данных для генерации такого же числа результирующих элементов данных, так что каждая пара исходных элементов данных имеет соответствующий результирующий элемент данных. Поскольку операция является вертикальной и поскольку результирующий векторный операнд имеет такой же размер и такое же число элементов данных, а также результирующие элементы данных сохраняются в том же самом порядке элементов данных, как исходные векторные операнды, эти результирующие элементы данных находятся в тех же самых битовых позициях в результирующем векторном операнде, как соответствующая пара исходных элементов данных в составе исходных векторных операндов. В дополнение к этому примеру SIMD-команд имеются разнообразные другие типы SIMD-команд (например, команды, имеющие только один или больше двух исходных операндов; команды, работающие горизонтальным образом; команды, генерирующие результирующий векторный операнд другого размера, имеющие элементы данных другого размера и/или имеющий другой порядок элементов данных). Должно быть понятно, что термин «векторный операнд-адресат» (или операнд-адресат) определен как прямой результат выполнения операции, заданной командой, включая сохранение операнда-адресата в позиции (будь-то регистр или адрес в памяти, заданный этой командой), где к ним может обратиться и получить доступ другая команда, как к исходному операнду (путем задания этой же позиции посредством этой другой команды).
Технология SIMD, такая как технология, используемая процессорами Intel® Core™, имеет набор команд, содержащий х86, ММХ™, потоковые расширения SIMD (Streaming SIMD Extensions (SSE)), SSE2, SSE3, SSE4.1 и SSE4.2, и позволила значительно улучшить работу приложений (Core™ и ММХ™ являются зарегистрированными торговыми марками или торговыми марками корпорации Интел из г. Санта Клара, Калифорния (Intel Corporation of Santa Clara, Calif.)). Был опубликован дополнительный набор будущих SIMD-расширений, называемый «Усовершенствованные векторные расширения» (Advanced Vector Extensions (AVX)) и использующий схему кодирования VEX.
Краткое описание чертежей
Фиг. 1А представляет блок-схему, иллюстрирующую как пример конвейера с выполнением команд по порядку, так и пример конвейера с переименованием регистров и внеочередной (не по порядку) выдачей/выполнением команд согласно вариантам настоящего изобретения;
фиг. 1В представляет блок-схему, иллюстрирующую как пример варианта ядра с архитектурой для выполнения команд по порядку, так и пример ядра с архитектурой с переименованием регистров и внеочередной (не по порядку) выдачей/выполнением команд для включения в процессор согласно вариантам настоящего изобретения;
фиг. 2 представляет собой блок-схему одноядерного процессора и многоядерного процессора с интегральным контроллером памяти и графическим контроллером согласно вариантам настоящего изобретения;
фиг. 3 иллюстрирует блок-схему системы согласно одному из вариантов настоящего изобретения;
фиг. 4 иллюстрирует блок-схему второй системы согласно вариантам настоящего изобретения;
фиг. 5 иллюстрирует блок-схему третьей системы согласно вариантам настоящего изобретения;
фиг. 6 иллюстрирует блок-схему системы на кристалле (system on a chip (SoC)) согласно вариантам настоящего изобретения;
фиг. 7 иллюстрирует блок-схему, показывающую использование преобразователя программных команд для преобразования двоичных команд из состава исходного набора команд в двоичные команды в составе целевого набора команд согласно вариантам настоящего изобретения;
фиг. 8 иллюстрирует устройство выполнения операции инверсии порядка битов маски согласно одному из вариантов настоящего изобретения;
фиг. 9 иллюстрирует устройство выполнения операции перестановки битов маски согласно другому варианту настоящего изобретения;
фиг. 10 иллюстрирует архитектуру процессора, содержащего регистр упакованных данных и регистры масок операций с упакованными данными;
фиг. 11 иллюстрирует способ выполнения операции инверсии порядка битов маски согласно одному из вариантов настоящего изобретения;
фиг. 12 иллюстрирует способ выполнения операции перестановки битов маски согласно другому из вариантов настоящего изобретения.
Осуществление изобретения
Пример архитектур процессоров и типов данных
Фиг. 1А представляет блок-схему, иллюстрирующую как пример конвейера с выполнением команд по порядку, так и пример конвейера с переименованием регистров и внеочередной (не по порядку) выдачей/выполнением команд согласно вариантам настоящего изобретения. Фиг. 1В представляет блок-схему, иллюстрирующую как пример варианта ядра с архитектурой для выполнения команд по порядку, так и пример ядра с архитектурой с переименованием регистров и внеочередной (не по порядку) выдачей/выполнением команд для включения в процессор согласно вариантам настоящего изобретения. Прямоугольники из сплошных линий на фиг. 1А-В иллюстрируют конвейер с выполнением операций по порядку и ядро с выполнением операций по порядку, тогда как добавление в качестве опций прямоугольников из штриховых линий иллюстрирует конвейер и ядро с переименованием регистров и внеочередной (не по порядку) выдачей/выполнением команд. В предположении, что аспект с выполнением команд по порядку является подмножеством аспекта с внеочередным выполнением команд, будет рассмотрен аспект с внеочередным выполнением команд.
Как показано на фиг. 1А, процессорный конвейер 100 содержит ступень 102 выборки, ступень 104 декодирования длины, ступень 106 декодирования, ступень 108 распределения, ступень 110 переименования, ступень 112 планирования (также известную как ступень диспетчирования и выдачи), ступень 114 чтения регистров/чтения памяти, ступень 116 выполнения, ступень 118 обратной записи/записи в память, ступень 122 обработки исключений и ступень 124 завершения.
На фиг. 1 В показано процессорное ядро 190, содержащее входной блок 130, соединенный с модулем 150 механизма выполнения, причем и входной блок, и модуль механизма исполнения связаны с модулем 170 памяти. Ядро 190 может представлять собой ядро процессора с сокращенным набором команд (RISC), ядро процессора с полным набором команд (CISC), ядро процессора с очень длинным командным словом (VLIW), либо ядро гибридного или альтернативного типа. В качестве еще одной опции ядро 190 может представлять ядро специального назначения, такое как сетевое ядро или ядро связи, механизм сжатия данных, сопроцессорное ядро, ядро графического процессора общего назначения (general purpose computing graphics processing unit (GPGPU)), графическое ядро или другое подобное ядро.
Входной блок 130 содержит модуль 132 прогнозирования ветвления, соединенный с модулем 134 кэша команд, который связан с буфером 136 динамической трансляции (translation lookaside buffer (TLB)) команд. Этот буфер соединен с модулем 138 выборки команд, который соединен с модулем 140 декодера. Модуль 140 декодера или декодер может декодировать команды и генерировать на выходе одну или несколько микроопераций, входных точек микрокода, микрокоманд, других команд или других сигналов управления, декодированных из исходных команд, или отражающих исходные команды другим способом, или полученных из исходных команд. Декодер 140 может быть реализован с использованием разнообразных механизмов. К примерам таких разнообразных механизмов относятся, не ограничиваясь этим, преобразовательные таблицы, аппаратные схемы, программируемые логические матрицы (PLA), постоянные запоминающие устройства (ПЗУ (ROM)) микрокода и т.п. В одном из вариантов ядро 190 содержит ПЗУ микрокода или другой носитель, содержащий микрокод для некоторых макрокоманд (например, в модуле 140 декодера или где-либо еще во входном блоке 130). Модуль 140 декодера соединен с модулем 152 распределения/переименования в составе модуля 150 механизма выполнения.
Модуль 150 механизма выполнения содержит модуль 152 переименования/распределения, соединенный с модулем 154 изъятия и группой из одного или нескольких модулей 156 планировщиков. Эти модули 156 планировщиков представляют какое-то число различных планировщиков, включая станции резервирования, центральное окно команд и т.п. Модули 156 планировщиков соединены с модулями 158 физических регистровых файлов. Каждый из модулей 158 физических регистровых файлов представляет собой один или несколько физических регистровых файлов, каждый из которых сохраняет данные одного или нескольких различных типов, таких как скалярные целочисленные данные, скалярные данные с плавающей запятой, упакованные целочисленные данные, упакованные данные с плавающей 'запятой, векторные целочисленные данные, векторные данные с плавающей запятой и т.п., данные состояния (например, указатель команды, иными словами, адрес следующей команды, которую нужно выполнить) и т.д. В одном из вариантов модуль 158 физических регистровых файлов содержит модуль векторных регистров, модуль регистров масок записи и модуль скалярных регистров. Эти модули регистров могут представлять собой архитектурные векторные регистры, векторные регистры масок и регистры общего назначения. На модули 158 физических регистровых файлов наложен модуль 154 изъятия для иллюстрации различных способов, какими может осуществляться наложение регистров и внеочередное (не по порядку) выполнение (например, с использованием буферов переупорядочения и регистровых файлов изъятия; с использованием файлов будущего, файлов истории и регистровых файлов изъятия; с использованием карт регистров и пула регистров; и т.п.). Модуль 154 изъятия и модули 158 физических регистровых файлов соединены с исполнительными кластерами 160. Исполнительный кластер 160 содержит один или несколько исполнительных модулей 162 и группу из одного или нескольких модулей 164 доступа к памяти. Исполнительные модули 162 могут осуществлять разнообразные операции (например, сдвиги, суммирование, вычитание, умножение) и над различными типами данных (например, над скалярными данными с плавающей запятой, упакованными целочисленными данными, упакованными данными с плавающей запятой, векторными целочисленными данным, векторными данными с плавающей запятой). Тогда как некоторые варианты могут содержать ряд исполнительных модулей, выделенных для конкретных функций или групп функций, другие варианты могут содержать только один исполнительный модуль или несколько исполнительных модулей, где все модули выполняют все функции. Модули 156 планировщиков, модули 158 физических регистровых файлов и исполнительные кластеры 160, показаны для варианта с несколькими такими модулями, поскольку некоторые варианты создают раздельные конвейеры для некоторых типов данных/операций (например, конвейер для скалярных целочисленных данных, конвейер для скалярных данных с плавающей запятой/упакованных скалярных целочисленных данных/упакованных данных с плавающей запятой/векторных целочисленных данных/векторных данных с плавающей запятой и/или конвейер доступа к памяти, так что каждый из этих конвейеров имеет собственный модуль планировщика, модуль физических регистровых файлов и/или исполнительный кластер - и в случае отдельного конвейера для доступа к памяти реализуются некоторые варианты, в которых исполнительный кластер этого конвейера имеет модули 164 для доступа к памяти). Следует также понимать, что в случае использования раздельных конвейеров, один или несколько из этих конвейеров могут служить для внеочередного выпуска/выполнения, а остальные - для работы по порядку.
Набор модулей 164 доступа к памяти соединена с модулем памяти 170, содержащим модуль 172 буфера данных TLB, соединенный с модулем 174 кэша данных, связанным с модулем 176 кэша уровня 2 (L2). В примере одного из вариантов модули 164 доступа к памяти могут содержать модуль загрузки, модуль сохранения адреса и модуль сохранения данных, каждый из которых соединен с модулем 172 буфера данных TLB в составе модуля 170 памяти. Модуль 134 кэша команд дополнительно связан с модулем 176 кэша уровня 2 (L2) в составе модуля 170 памяти. Модуль 176 кэша L2 соединен с одним или несколькими другими уровнями кэша и в конечном итоге с главной памятью.
В качестве примера, архитектура с переименованием регистров и ядром для внеочередного выпуска/выполнения может реализовать конвейер 100 следующим образом: 1) модуль 138 выборки команд реализует ступени 102 и 104 выборки и декодирования длины; 2) модуль 140 декодера реализует ступень 106 декодирования; 3) модуль 152 переименования/распределения реализует ступень 108 распределения и ступень 110 переименования; 4) модули 156 планировщиков реализуют ступень 112 планирования; 5) модули 158 регистровых файлов и модуль 170 памяти реализуют ступень 114 чтения регистров/чтения памяти; исполнительный кластер 160 реализует ступень выполнения 116; 6) модуль 170 памяти и модули 158 физических регистровых файлов реализуют ступень 118 обратной записи/записи в память; 7) различные модули могут участвовать в реализации ступени 122 обработки исключений; а модуль 154 изъятия и модули 158 физических регистровых файлов реализуют ступень 124 завершения.
Ядро 190 может поддерживать один или более наборов команд (например, набор команд х86 (с некоторыми расширениями, которые были добавлены в более новых версиях); набор команд MIPS, разработанный компанией MIPS Technologies из Солнечной долины, Калифорния (MIPS Technologies, Sunnyvale, СА); набор команд ARM (с дополнительными расширениями, такими как NEON), разработанный компанией ARM Holdings of Sunnyvale, СА), включая описанные здесь команды. В одном из вариантов ядро 190 содержит логическое устройство для поддержки расширения набора команд для работы с упакованными данными (например, AVX1, AVX2, и/или некоторая форма обобщенного формата команд, дружественного для работы с векторами (U=0 и/или U=1), описанного ниже), что позволяет операции, применяемые многими мультимедийными приложениями, выполнять с использованием упакованных данных.
Следует понимать, что ядро может поддерживать многопоточность (выполнение двух или более параллельных наборов операций или потоков) и может делать это различными способами, включая многопоточность с разделением времени, одновременную многопоточность (где одно физическое ядро создает свое логическое ядро для каждого из потоков, которые должно выполнять это физическое ядро в многопоточном режиме), или их сочетание (например, выборка и декодирование в режиме разделения времени и затем одновременная многопоточность в соответствии с технологией Intel® Hyperthreading).
Хотя переименование регистров описано в контексте внеочередного выполнения, следует понимать, что переименование регистров может быть использовано также в архитектуре с выполнением команд по порядку. Тогда как иллюстрируемый вариант процессора также содержит раздельные модули 134/174 кэшей данных и совместно используемый модуль 176 кэша L2, альтернативные варианты могут иметь один внутренний кэш и для команд, и для данных, такой как, например, внутренний кэш Уровня 1 (L1), или многоуровневый внутренний кэш. В некоторых вариантах система может содержать сочетание внутреннего кэша и внешнего кэша, находящегося вне ядра и/или процессора. В качестве альтернативы весь кэш может быть внешним относительно ядра и/или процессора.
На фиг. 2 представлена блок-схема процессора 200, которая может иметь больше одного ядра, может содержать интегральный контроллер памяти и может иметь встроенную графику согласно вариантам настоящего изобретения. Прямоугольники из сплошных линий на фиг. 2 иллюстрируют процессор с одним ядром 202А, системным агентом 210, группой из одного или нескольких модулей 216 контроллеров шин, тогда как добавленные в качестве опции прямоугольники из штриховых линий иллюстрируют альтернативный процессор 200 с несколькими ядрами 202A-N, группой из одного или нескольких модулей 214 интегральных контроллеров памяти в составе модуля 210 системного агента и логическим устройством 208 специального назначения.
Таким образом, различные варианты процессора 200 могут содержать: 1) центральный процессор CPU с логическим устройством 208 специального назначения, представляющим собой встроенное графическое и/или научное логическое устройство (которое может содержать одно или несколько ядер), а ядра 202A-N представляют собой одно или более ядер общего назначения (например, ядра общего назначения с выполнением операций по порядку, ядра общего назначения с внеочередным выполнением операций или сочетание этих двух видов ядер); 2) сопроцессор с ядрами 202A-N, представляющими собой большое число ядер специального назначения, предназначенных главным образом для решения графических и/или научных задач; и 3) сопроцессор с ядрами 202A-N, представляющими собой большое число ядер общего назначения с выполнением операций по порядку. Таким образом, процессор 200 может представлять собой процессор общего назначения, сопроцессор или процессор специального назначения, такой как, например, сетевой процессор или процессор связи, механизм сжатия данных, графический процессор, процессор GPGPU (модуль графического процессора общего назначения), высокопроизводительный сопроцессор с множеством интегрированных ядер (many integrated core (MIC)) (содержащий 30 ядер или больше), встроенный процессор или другое подобное устройство. Процессор может быть реализован в виде одного или нескольких кристаллов. Процессор 200 может частью и/или целиком быть реализован на одной или нескольких подложек с использованием какого-либо числа процессорных технологий, таких как, например, BiCMOS, CMOS или NMOS.
Иерархия памяти содержит один или более уровней кэша внутри ядер, группу из одного или более модулей 206 совместно используемого кэша и внешнюю память (не показана), соединенную с одним или более модулями 214 интегральных контроллеров памяти. Группа модулей 206 совместно используемого кэша может содержать один или более кэшей средних уровней, таких как уровень 2 (L2), уровень 3 (L3), уровень 4 (L4) или другие уровни кэша, кэш последнего уровня (last level cache (LLC)) и/или их сочетания. Тогда как в одном из вариантов интегральное графическое логическое устройство 208, группа модулей 206 совместно используемого кэша и модуль 210 системного агента/модули 214 интегральных контроллеров памяти соединены один с другими посредством соединительного модуля 212 кольцевого типа, альтернативные варианты могут использовать любое количество хорошо известных способов для соединения таких модулей. В одном из вариантов между одним или более модулями 206 кэша и ядрами 202A-N поддерживается когерентность.
В некоторых вариантах одно или более из ядер 202A-N способны осуществлять многопоточность. Системный агент 210 содержит компоненты для координации и управления ядрами 202A-N. Модуль 210 системного агента может содержать, например, модуль управления питанием (power control unit (PCU)) и модуль отображения. Модуль PCU может представлять собой или содержать логические устройства и компоненты, необходимые для регулирования питания ядер 202A-N и интегрального графического логического устройства 208. Модуль отображения предназначен для управления одним или более присоединенными извне устройствами отображения.
Ядра 202A-N могут быть, с точки зрения набора команд архитектуры, однородными или неоднородными; иными словами два или более ядер 202A-N могут быть способны выполнять один и тот же набор команд, тогда как другие могут быть способны выполнять только подмножество этого набора команд или другой набор команд.
На фиг. 3-6 показаны блок-схемы примеров компьютерных архитектур. Подходят также другие структуры и конфигурации системы, известные в технике для портативных компьютеров, настольных компьютеров, ручных персональных компьютеров, персональных цифровых помощников, инженерных рабочих станций, серверов, сетевых устройств, сетевых концентраторов, коммутаторов, встроенных процессоров, цифровых процессоров сигнала (digital signal processors (DSP)), графических устройств, видео игровых устройств, приставок, микроконтроллеров, сотовых телефонов, портативных медиаплееров, ручных устройств и разнообразных других электронных устройств. В общем случае, может подходить колоссальное множество самых разнообразных систем или электронных устройств, которые могут содержать процессор и/или логическое устройство для выполнения команд, как это описано здесь.
На фиг. 3 представлена блок-схема системы 300 согласно одному из вариантов настоящего изобретения. Эта система 300 может содержать один или более процессоров 310, 315, соединенных с концентратором 320 контроллера. В одном из вариантов этот концентратор 320 контроллера содержит концентратор 390 контроллера графической памяти (graphics memory controller hub (GMCH)) и концентратор 350 ввода/вывода (Input/Output Hub IOH)) (которые могут быть выполнены на раздельных кристаллах); концентратор GMCH 390 содержит контроллеры памяти и графики, с которыми соединены запоминающее устройство 340 и сопроцессор 345; концентратор IOH 350 соединяет устройства 360 ввода/вывода с концентратором GMCH 390. В альтернативных вариантах один или оба контроллера памяти и графики интегрированы в процессор (как описано здесь), запоминающее устройство 340 и сопроцессор 345 соединены непосредственно с процессором 310, а концентратор 320 контроллеров выполнен в одном кристалле с концентратором IOH 350.
Тот факт, что дополнительные процессоры 315 могут присутствовать в качестве опции, показан на фиг. 3 штриховыми линиями. Каждый процессор 310, 315 может содержать одно или более процессорных ядер, как описано здесь, и может представлять собой некоторую версию процессора 200.
Запоминающее устройство 340 может представлять собой, например, динамическое запоминающее устройство с произвольной выборкой (dynamic random access memory (DRAM)), запоминающее устройство на фазовых переходах (phase change memory (PCM)) или сочетание этих двух типов запоминающих устройств. По меньшей мере в одном из вариантов концентратор 320 контроллеров сообщается с процессорами 310, 315 по многоотводной шине, такой как системная шина (frontside bus (FSB)), через двухпунктовый интерфейс, такой как QuickPath Interconnect (QPI), или через аналогичное соединение 395.
В одном из вариантов сопроцессор 345 представляет собой сопроцессор специального назначения, такой как, например, высокопроизводительный многоядерный процессор типа MIC, сетевой процессор или процессор связи, механизм сжатия данных, графический процессор, процессор GPGPU, встроенный процессор или другое подобное устройство. В некоторых вариантах концентратор 320 контроллеров может иметь в составе интегральный графический ускоритель.
Между физическими ресурсами 310, 315 могут быть множество различий с точки зрения спектра метрических показателей, включая архитектурные, микро архитектурные, тепловые характеристики, энергопотребление и другие подобные характеристики.
В одном из вариантов процессор 310 выполняет команды, управляющие операциями общего типа для обработки данных. Среди этих команд могут находиться команды для сопроцессора. Процессор 310 распознает эти команды для сопроцессора как тип команд, которые должен выполнять сопроцессор. Соответственно, процессор 310 выдает эти команды для сопроцессора (или сигналы управления, представляющие команды для сопроцессора) в шину сопроцессора или в другое соединение с сопроцессором 345. Сопроцессор(ы) 345 принимает и выполняет полученные им команды для сопроцессора.
На фиг. 4 показана блок-схема первого более конкретного примера системы 400 согласно одному из вариантов настоящего изобретения. Как показано на фиг. 4, многопроцессорная система 400 представляет собой систему с двухпунктовыми соединениями и содержит первый процессор 470 и второй процессор 480, связанные один с другим посредством двухпунктового соединения 450. Каждый из процессоров 470 и 460 может быть некой версией процессора 200. В одном из вариантов настоящего изобретения процессоры 470 и 480 - это соответственно процессоры 310 и 315, тогда как сопроцессор 438 представляет собой сопроцессор 345. В другом варианте процессоры 470 и 480 являются, соответственно, процессором 310 и сопроцессором 345.
Показано, что процессоры 470 и 480 содержат модули 472 и 482, соответственно, интегральных контроллеров памяти (integrated memory controller (IMC)). Процессор 470 содержит также, в качестве составной части своих модулей контроллеров шин, двухпунктовые (point-to-point (Р-Р)) интерфейсы 476 и 478; аналогично, второй процессор 480 содержит Р-Р интерфейсы 486 и 488. Процессоры 470, 480 могут обмениваться информацией через Р-Р интерфейс 450 с использованием интерфейсных Р-Р схем 478, 488. Как показано на фиг. 4, модули 472 и 482 контроллеров ГМС связывают процессоры с соответствующими запоминающими устройствами, а именно с запоминающим устройством 432 и запоминающим устройством 434, которые могут быть частями главного запоминающего устройства, локально присоединенными к соответствующим процессорам.
Процессоры 470, 480 могут обмениваться информацией с чипсетом 490 через индивидуальные Р-Р интерфейсы 452, 454 с использованием двухпунктовых интерфейсных схем 476, 494, 486, 498. Чипсет 490 может также, в качестве опции, обмениваться информацией с сопроцессором 438 через высокопроизводительный интерфейс 439. В одном из вариантов сопроцессор 438 представляет собой сопроцессор специального назначения, такой как, например, высокопроизводительный многоядерный процессор типа MIC, сетевой процессор или процессор связи, механизм сжатия данных, графический процессор, процессор GPGPU, встроенный процессор или другое подобное устройство.
Совместно используемый кэш (не показан) может входить в состав какого-либо из процессоров, либо располагаться вне обоих процессоров, будучи при этом связан с этими процессорами посредством Р-Р соединения, так что локальная кэшируемая информация какого-либо из процессоров или обоих процессоров может быть сохранена в этом совместно используемом кэше, если соответствующий процессор переведен в режим пониженного энергопотребления.
Чипсет 490 может быть соединен с первой шиной 416 через интерфейс 496. В одном из вариантов первая шина 416 может представлять собой шину соединения периферийных устройств (Peripheral Component Interconnect (PCI)) или быть такой шиной, как шина стандарта PCI Express, или какой-либо другой соединительной шиной ввода-вывода третьего поколения, хотя объем настоящего изобретения этим не ограничивается.
Как показано на фиг. 4, с первой шиной 416 могут быть соединены разнообразные устройства 414 ввода/вывода вместе с мостом 418, который соединяет первую шину 416 со второй шиной 420. В одном из вариантов с первой шиной 416 соединены один или несколько дополнительных процессоров 415, таких как сопроцессор специального назначения, такой как, например, высокопроизводительный многоядерный процессор типа MIC, процессор GPGPU, ускорители (например, графические ускорители или модули цифровых процессоров сигнала (DSP)), программируемые пользователем вентильные матрицы или какой-либо другой процессор. В одном из вариантов эта вторая шина 420 может представлять собой шину с небольшим числом контактов (low pin count (LPC)). В одном из вариантов со второй шиной 420 могут быть соединены разнообразные устройства, например, клавиатура и/или мышь 422, устройства 427 связи и модуль 428 запоминающего устройства, такого как дисковод или другое запоминающее устройство большой емкости, в котором могут храниться команды/код и данные 430. Кроме того, со второй шиной 420 может быть соединено аудио устройство 424 ввода/вывода. Отметим, что возможны и другие архитектуры. Например, вместо двухпунктовой архитектуры, показанной на фиг. 4, система может использовать многоотводную шину или другую подобную архитектуру.
На фиг. 5 показана блок-схема второго более конкретного примера системы 500 согласно одному из вариантов настоящего изобретения. Подобным элементам на фиг. 4 и 5 присвоены подобные цифровые позиционные обозначения, а некоторые аспекты, изображенные на фиг. 4, на фиг. 5 опущены, чтобы не затенять другие аспекты фиг. 5.
На фиг. 5 показано, что процессоры 470, 480 может содержать интегрированное логическое устройство 472 и 482, соответственно, для управления памятью и вводом/выводом ("CL"). Таким образом, устройство CL 472, 482 содержит модули интегральных контроллеров памяти и логическое устройство управления вводом/выводом. На фиг. 5 показаны не только запоминающие устройства 432, 434, связанные с устройством CL 472, 482, но и устройства 514 ввода/вывода, связанные с чипсетом 490.
На фиг. 6 представлена блок-схема системы 600 на кристалле (SoC) согласно одному или более аспектам настоящего изобретения. Элементы, подобные элементам, показанным на фиг. 2, имеют сходные цифровые позиционные обозначения. Кроме того, прямоугольники из штриховых линий обозначают функции, являющиеся опциями для более совершенных систем SoC. Как показано на фиг. 6, соединительные модули 602 могут быть связаны с: процессором 610 приложений, содержащим группу из одного или нескольких ядер 202A-N и совместно используемый кэш 206; модулем 210 системного агента; модулями 216 контроллеров шин; модулями 214 интегральных контроллеров памяти; группой из одного или более медиапроцессоров 620, которые могут содержать интегральное графическое логическое устройство, процессор изображений, аудио процессор и видео процессор; модулем 630 статического запоминающего устройства произвольного доступа (static random access memory (SRAM)); модулем 632 прямого доступа к памяти (DMA); и модулем 640 отображения для соединения с одним или более внешними устройствами отображения. В одном из вариантов сопроцессор 620 представляет собой процессор специального назначения, такой как, например, сетевой процессор или процессор связи, механизм сжатия данных, процессор GPGPU, высокопроизводительный многоядерный процессор типа MIC, встроенный процессор или другое подобное устройство.
Варианты механизмов, рассматриваемых здесь, могут быть реализованы посредством аппаратуры, загружаемого программного обеспечения, встроенного программного обеспечения или сочетания этих