КОМАНДЫ, ПРОЦЕССОРЫ, СПОСОБЫ И СИСТЕМЫ ДОСТУПА МНОЖЕСТВЕННЫХ РЕГИСТРОВ К ПАМЯТИ
COMMANDS, PROCESSORS, METHODS AND SYSTEMS OF MULTIPLE REGISTERS ACCESS TO MEMORY

ПРЕДЩЕСТВУЮЩИЙ УРОВЕНЬ ТЕХНИКИ
Область техники, к которой относится изобретение
Описываемые здесь варианты воплощения изобретения, в общем, относятся к процессорам. В частности, описываемые здесь варианты воплощения изобретения, в общем, относятся к доступу к данным в памяти, осуществляемому процессорами.
Уровень техники
Многие процессоры имеют архитектуры с одним потоком команд и многими потоками данных (SIMD - архитектуры). В SIMD - архитектурах команда обработки упакованных данных (данных в упакованном формате), векторная команда или SIMD - команда могут оперировать множественными элементами данных (например, множественными парами элементов данных) одновременно или параллельно. Множественные элементы данных могут быть упакованы в пределах некоторого регистра или ячейки памяти как упакованные данные. В упакованных данных разряды регистра или другого места хранения информации могут быть логически разделены на последовательность элементов данных. Например, регистр для упакованных данных с разрядностью в 64 разряда может иметь два упакованных 32 - разрядных элемента данных, четыре упакованных 16 - разрядных элемента данных или восемь упакованных 8 - разрядных элементов данных. Процессор может иметь аппаратное обеспечение для параллельного исполнения, отвечающее на команду обработки упакованных данных таким образом, что одновременно (например, параллельно) выполняет множественные операции.
В некоторых процессорах за эти годы имело место прогрессирующее увеличение разрядности операндов, состоящих из упакованных данных. Это увеличение разрядности операндов, состоящих из упакованных данных, вообще говоря, позволяет одновременно (например, параллельно) обрабатывать большее количество элементов данных, что, вообще говоря, помогает повысить производительность. Например, операнд, состоящий из упакованных данных с разрядностью в 128 разрядов, может иметь четыре 32 - разрядных элемента данных (вместо только двух в случае операнда, состоящего из упакованных данных с разрядностью в 64 - разряда), восемь 16 - разрядных элементов упакованных данных (вместо только четырех в случае операнда, состоящего из упакованных данных с разрядностью в 64 - разряда), и так далее.
В некоторых процессорах увеличение разрядности операндов, состоящих из упакованных данных, сопровождается соответствующим увеличением разрядности регистров. Однако один возможный недостаток увеличения разрядности регистров заключается в увеличении площади или занимаемого места, занимаемых регистрами на кристалле. Например, увеличение разрядности каждого регистра из набора 64 -разрядных регистров, такое чтобы они каждый были 128 - разрядными регистрами, вероятно, приблизительно удвоит площадь или занимаемое место, занимаемые регистрами на кристалле. Влияние этого, вероятно, будет даже больше в тех вариантах реализации, в которых физических регистров реализовано больше, чем архитектурных регистров, поскольку приблизительно удвоиться может размер большего количества регистров. Другой возможный недостаток такого рода увеличения разрядности регистров заключается в соответствующем увеличении количества данных о состоянии, контексте или других данных, хранимых в регистрах, которые необходимо помещать в эти регистры и извлекать из них (например, сохранять и восстанавливать) при переключениях контекста, сохранениях состояний в режимах электропитания и подобных переходах. Например, для каждого регистра может потребоваться при изменениях контекста загружать и выгружать 128 разрядов вместо только 64 разрядов.
Процессоры обычно исполняют команды на загрузку данных (например, операнды, состоящие их упакованных данных) из памяти и сохранение данных (например, операндов, состоящих из упакованных данных) в память. Например, процессор может исполнять команду на загрузку из памяти для того, чтобы загружать или считывать операнд, состоящий из упакованных данных, из памяти в регистр адресат. Процессор может исполнять команду на запись в память для того, чтобы записывать или сохранять операнд, состоящий из упакованных данных, из регистра - источника в память.
Краткое описание чертежей
Изобретение можно лучше всего понять, обратившись к нижеследующему описанию и прилагаемым к нему чертежам, которые используются для того, чтобы проиллюстрировать варианты воплощения изобретения. На чертежах:
Фиг. 1 представляет собой блок-схему одного варианта воплощения вычислительной системы.
Фиг. 2 представляет собой блок-схему алгоритма одного варианта воплощения способа обработки одного варианта воплощения команды на доступ множественных регистров к памяти.
Фиг. 3 представляет собой блок-схему алгоритма одного варианта воплощения способа обработки одного варианта воплощения команды на загрузку множественных регистров из памяти.
Фиг. 4 представляет собой блок-схему алгоритма одного варианта воплощения способа обработки одного варианта воплощения команды на запись из множественных регистров в память.
Фиг. 5 представляет собой структурную схему для первого приводимого в качестве примера варианта воплощения подходящей операции доступа множественных регистров к памяти.
Фиг. 6 представляет собой структурную схему для второго приводимого в качестве примера варианта воплощения подходящей операции доступа множественных регистров к памяти.
Фиг. 7 представляет собой структурную схему для третьего приводимого в качестве примера варианта воплощения подходящей операции доступа множественных регистров к памяти.
Фиг. 8 представляет собой блок-схему, на которой проиллюстрирован вариант воплощения изобретения, в котором набор регистров можно рассматривать или осуществлять к нему доступ, в различных представлениях, как к 64 - разрядным регистрам, 128 - разрядным регистрам и 256 - разрядным регистрам.
Фиг. 9А-9С представляют собой блок-схемы вариантов воплощения подходящих форматов команды для команд на доступ множественных регистров к памяти.
Фиг. 10А представляет собой блок-схему, на которой проиллюстрированы как приводимый в качестве примера конвейер без переупорядочения последовательности команд, так и приводимый в качестве примера конвейер с переименованием регистров, переупорядочиванием последовательности выдачи/исполнения команд, соответствующие вариантам воплощения изобретения.
Фиг. 10В представляет собой блок-схему, на которой проиллюстрированы как приводимый в качестве примера вариант воплощения ядра, имеющего архитектуру без переупорядочения последовательности команд, так и приводимое в качестве примера ядро, имеющее архитектуру с переименованием регистров, переупорядочиванием последовательности выдачи/исполнения команд, подлежащие включению в состав процессора, соответствующего вариантам воплощения изобретения.
Фиг. 11А представляет собой блок-схему одиночного ядра процессора наряду с его соединением с расположенной на кристалле сетью межсоединений и с его локальным подмножеством кэша уровня 2 (L 2), соответствующих вариантам воплощения изобретения.
Фиг. 11В представляет собой расширенное представление части ядра процессора, показанного на Фиг. 11А, соответствующего вариантам воплощения изобретения.
Фиг. 12 представляет собой блок-схему процессора, который может иметь больше чем одно ядро, может иметь интегрированный контроллер памяти и может иметь интегрированные графические средства, соответствующего вариантам воплощения изобретения.
На Фиг. 13 показана блок-схема системы в соответствии с одним вариантом воплощения настоящего изобретения.
На Фиг. 14 показана блок-схема первой более конкретной системы, приводимой в качестве примера, в соответствии с одним вариантом воплощения настоящего изобретения.
На Фиг. 15 показана блок-схема второй более конкретной системы, приводимой в качестве примера, в соответствии с одним вариантом воплощения настоящего изобретения.
На Фиг. 16 показана блок-схема внутрикристальной системы (SoC) в соответствии с одним вариантом воплощения настоящего изобретения.
Фиг. 17 представляет собой блок-схему, на которой сравнивается использование конвертора команд, реализованного программными средствами, для того, чтобы конвертировать двоичные команды в некотором исходном наборе команд в двоичные команды в некотором заданном наборе команд в соответствии с вариантами воплощения изобретения.
Подробное описание вариантов осуществления изобретения
В нижеследующем описании, излагаются многочисленные конкретные подробности (например, конкретные операции, выполняемые в ответ на команды, конкретные количества регистров, конкретные емкости регистров, конкретные размеры строк кэша, конкретные конфигурации процессора, конкретные микроархитектурные подробности, конкретные последовательности операций и так далее). Однако варианты воплощения изобретения могут быть осуществлены на практике без этих конкретных подробностей. В других случаях, хорошо известные схемы, конструкции и технологии не показаны подробно во избежание затруднения понимания этого описания.
Традиционные команды на доступ к памяти часто включают в себя только одиночный регистр при доступе к памяти. Количество данных, обмен которыми осуществляется между памятью и этим одиночным регистром, составляет только разрядность этого одиночного регистра (например, 64 разряда в случае 64 - разрядных регистров). Однако обычно данные в памяти организованы как "строки" большей разрядности. Эти строки памяти представляют количество данных, передача или обмен которыми осуществляется между памятью и процессором, например, одним или более кэшеми процессора. Например, даже притом, что в регистровый файл или из него фактически могут передаваться только 64 разряда данных, обычно между памятью и кэшем процессора может передаваться целая строка памяти большей разрядности, имеющая эти 64 разряда данных. Строка памяти может быть сохранена в строке кэша, имеющейся в пределах кэша. Многие процессоры обычно используют строки памяти, имеющие разрядность в 512 разрядов, и соответствующие им строки кэша, имеющие разрядность в 512 разрядов. При загрузке 64 - разрядных данных в одиночный регистр адресат, может загружаться или извлекаться в 512 - разрядную строку кэша, находящуюся в кэше процессора, вся 512 - разрядная строка памяти, имеющая эти 64 -разрядные данные, а в этот одиночный регистр - адресат могут загружаться только эти 64 - разрядные данные. Только 64 разряда данных будут фактически переданы из кэша в регистровый файл.
Один потенциальный недостаток таких традиционных команд на доступ к памяти при "одиночном регистре" заключается в том, что используемая ширина полосы пропускания между кэшем и регистрами может иметь тенденцию быть относительно низкой, особенно в тех процессорах, которые используют для хранения упакованных данных регистры с относительно малой разрядностью. В некоторых случаях, другие данные в пределах той же самой строки памяти и/или строки кэша могут также требоваться для обработки, но обычно не передаются в регистры этой командой. Например, это может иметь место для операндов в памяти, состоящих из упакованных данных большой разрядности, которые имеют более высокую разрядность, чем регистры процессора. В некоторых случаях, может быть желательно загрузить в регистры процессора по меньшей мере половину строки памяти, или, в других случаях, всю строку памяти. Один возможный способ загрузить всю 512 - разрядную строку памяти в восемь 64 - разрядных регистров состоял бы в том, чтобы использовать загрузку восьми отдельных одиночных 64 - разрядных регистров из команд доступа к памяти. Например, первая загрузка одиночного 64 - разрядного регистра из команды на доступ в память, указывающей некоторые первые 64 - разрядные данные 512 -разрядной строки в памяти, может загрузить и сохранить указанную первую 64 - разрядную порцию в первом указанном регистре. Вся 512 - разрядная строка памяти может быть извлечена из памяти в процессор и сохранена в 512 - разрядной строке кэша. Вторая загрузка одиночного 64 - разрядного регистра из команды на доступ в память, указывающей некоторые вторые 64 - разрядные данные 512 - разрядной строки в памяти, может загрузить указанную вторую 64 - разрядную порцию из уже загруженной 512 - разрядной строки кэша и сохранить вторые 64 - разрядные данные во втором указанном регистре. Аналогичным образом, загрузка одиночных 64 - разрядных регистров: с третей по восьмую, из команд на доступ к памяти может также использовать данные из строки кэша, уже загруженной в кэш. Однако возможный недостаток такого рода подхода заключается в необходимости исполнять множественные команды, что ведет к увеличению размера кода и продолжительности обработки данных, и может включать в себя множественные доступы к кэшу.
Здесь раскрываются команды на доступ множественных регистров к памяти, процессоры для исполнения этих команд, способы, выполняемые этими процессорами при обработке или исполнении этих команд, и системы, включающие в себя один или более процессоров для обработки или исполнения этих команд.
Фиг. 1 представляет собой структурную схему одного варианта воплощения вычислительной системы (100). В различных вариантах воплощения изобретения, эта вычислительная система может представлять настольный компьютер, переносной компьютер, компьютер типа "ноутбук", планшетный компьютер, "нетбук" (переносной компьютер для работы в сети), "смартфон" (мобильный телефон, обладающий рядом функций компьютера), персонального цифрового секретаря, сотовый телефон, сервер, сетевое устройство (например, маршрутизатор или коммутатор), мобильное интернет - устройство (MID - устройство), универсальный проигрыватель, интеллектуальный телевизор, телевизионную абонентскую приставку, контроллер для видеоигр или другой тип электронного устройства, имеющего по меньшей мере один процессор.
Эта вычислительная система включает в себя процессор (102) и память (120). Память может включать в себя одно или более запоминающих устройств либо одного и того же, либо различных типов. Один общий тип памяти, который подходит для вариантов воплощения изобретения, представляет собой динамическое оперативное запоминающее устройство (DRAM), хотя могут также использоваться и другие типы памяти (например, флэш - память). Процессор и память сопряжены друг с другом механизмом (124) межсоединения. Для сопряжения процессора с памятью подходит любой традиционный механизм межсоединения, известный в данной области техники. Примеры таких механизмов включают в себя межсоединения, шины, концентраторы, контроллеры памяти, наборы микросхем, компоненты набора микросхем и тому подобное и их сочетания, но не ограничиваются ими.
Процессор (102) представляет аппарат для обработки команд, который может быть приведен в действие для обработки команд. В некоторых вариантах воплощения изобретения, этот процессор может представлять собой универсальный процессор (например, универсальный микропроцессор, относящийся к типу, используемому в настольном компьютере, переносном компьютере и подобных им компьютерах). В качестве альтернативы, этот процессор может представлять собой процессор специального назначения. Примеры подходящих процессоров специального назначения включают в себя: сетевые процессоры, процессоры передачи данных, криптографические процессоры, графические процессоры, сопроцессоры, встроенные процессоры, процессоры цифровой обработки сигналов (DSP - процессоры) и контроллеры (например, микроконтроллеры), в качестве лишь нескольких примеров, но не ограничиваются ими. Процессор может представлять собой любой процессор из числа: разнообразных процессоров для вычислений со сложным набором команд (CISC - процессоров), разнообразных процессоров для вычислений с сокращенным набором команд (RISC - процессоров), разнообразных процессоров с командными словами сверхбольшой длины (VLIW - процессоров), разнообразных гибридов этих процессоров или других типов процессоров без каких бы то ни было исключений.
Процессор (102) может принимать команду (104) на доступ множественных регистров к памяти. В некоторых вариантах воплощения изобретения, команда на доступ множественных регистров к памяти может представлять команду на загрузку множественных регистров из памяти. В других вариантах воплощения изобретения, команда на доступ множественных регистров к памяти может представлять команду на сохранение данных из множественных регистров в памяти. Команда на доступ множественных регистров к памяти может представить команду в машинном коде, команду на языке ассемблера, макрокоманду или управляющий сигнал набора команд процессора. В некоторых вариантах воплощения изобретения, команда на доступ множественных регистров к памяти может явным образом специфицировать (например, посредством некоторого набора разрядов или одного или более полей), или иным образом указывать (например, неявно указывать) ячейку (118) памяти, находящуюся в памяти (120), и может явным образом специфицировать или иным образом указывать регистр (112) (например, регистр, реализованный набором N - разрядных регистров (110)).
Процессор включает в себя звено (106) декодирования команд. Звено (106) декодирования команд может также упоминаться как декодирующее звено, декодер или декодирующая логика. Декодирующее звено может принимать и декодировать команды относительно более высокого уровня (например, команды в машинном коде, команды на языке ассемблера, макрокоманды), и выводить одну или более команд относительно более низкого уровня или управляющие сигналы (например, микрокоманды, микрооперации, точки входа в микрокод), которые отражают, представляют команды более высокого уровня и/или выведены из них. Эти одна или более команд более низкого уровня или управляющие сигналы могут реализовывать команду более высокого уровня посредством одной или более операций более низкого уровня (например, уровня схемы или уровня аппаратного обеспечения). Декодирующее звено может быть реализовано с использованием всевозможных различных механизмов, включающих в себя: постоянные запоминающие устройства для микрокода (ROM - устройства), таблицы поиска, аппаратные варианты реализации, программируемые логические матрицы (PLA - матрицы) и другие механизмы, используемые для реализации декодирующих звеньев, известные в данной области техники, но не ограниченных этими механизмами.
В других вариантах воплощения изобретения могут быть использованы эмулятор, транслятор, блок трансформации, интерпретатор команд или другая логика конвертирования команд. В данной области техники известны всевозможные различные типы логики конвертирования команд, и они могут быть реализованы в виде программного обеспечения, аппаратного обеспечения, микропрограммного обеспечения или их сочетания. Логика конвертирования команд может эмулировать, транслировать, трансформировать, интерпретировать или иным образом конвертировать команду в одну или более соответствующих производных команд или управляющих сигналов. В некоторых вариантах воплощения изобретения могут быть использованы как логика конвертирования команд, так и декодирующее звено. Например, логика конвертирования команд может конвертировать команду в одну или более промежуточных команд, а декодирующее звено может декодировать эти одну или более промежуточных команд в одну или более команд более низкого уровня или управляющих сигналов, исполняемых интегральными схемами процессора. Логика конвертирования команд может быть расположена вне процессора (например, на отдельном кристалле или в памяти), на процессоре или и там и там.
Обратимся вновь к Фиг. 1, на которой с декодирующим звеном (106) сопряжено звено (108) доступа к памяти. Звено доступа к памяти может принимать одну или более декодированных или иным образом конвертированных команд или управляющих сигналов, которые представляют команду (104) на доступ множественных регистров к памяти и/или выведены из нее. Звено доступа к памяти также сопряжен с памятью (120) посредством механизма (124) межсоединения. Звено доступа к памяти может реализовывать один или более компонентов, часто находящихся в подсистеме памяти процессоров, для осуществления доступа или взаимодействия с памятью. Примеры таких компонентов включают в себя, логику доступа к памяти, звено интерфейса шины, один или более уровней кэша, один или более буферов быстрого преобразования адреса (TLS - буферов), логика преобразования виртуального адреса и так далее, но не ограничиваются ими. Как показано на чертеже, звено доступа к памяти может иметь по меньшей мере один кэш (109).
Процессор (102) также включает в себя набор N - разрядных регистров (110). Каждый из регистров может представлять находящееся на кристалле место хранения данных, которое способно функционировать таким образом, чтобы сохранять данные, например, N - разрядные данные. В некоторых вариантах воплощения изобретения, N - разрядные регистры могут представлять регистры для упакованных данных, способные функционировать таким образом, чтобы сохранять N - разрядные упакованные данные, векторные данные или данные для архитектуры с одним потоком команд и многими потоками данных (SIMD - данные), хотя это не обязательное требование. В разнообразных вариантах воплощения изобретения, N - разрядные регистры могут представлять собой 64 - разрядные регистры, 128 - разрядные регистры или 256 - разрядные регистры. В качестве альтернативы, N - разрядные регистры могут иметь другие размеры (например, 32 - разрядные регистры, 80 - разрядные регистры и так далее). В некоторых вариантах воплощения изобретения, набор N - разрядных регистров может включить в себя, реализовывать или иным образом содержать регистр (112), который указан командой на доступ множественных регистров к памяти. Регистры могут быть видимыми для программного обеспечения и/или программиста и/или могут быть специфицированы командами из набора команд для идентификации операндов. Регистры могут быть реализованы различными способами в различных микроархитектурах с использованием хорошо известных технологий и не ограничены никаким конкретным типом схемы. Примеры подходящих типов регистров включают в себя: выделенные физические регистры, динамически распределяемые физические регистры с использованием переименования регистров и их сочетания, но не ограничиваются ими.
Как было упомянуто ранее, в некоторых вариантах воплощения изобретения, команда (104) на доступ множественных регистров к памяти может явным образом специфицировать (например, посредством некоторого набора разрядов или одного или более полей) или иным образом указывать (например, указывать неявным образом), регистр (112). В некоторых вариантах воплощения изобретения, набор N - разрядных регистров может включать в себя, реализовывать или иным образом содержать регистр (112) обозначенный командой на доступ множественных регистров к памяти. Помимо этого, в некоторых вариантах воплощения изобретения, команда на доступ множественных регистров к памяти может явным образом специфицировать или иным образом указывать ячейку (118) памяти, находящуюся в этой памяти. В некоторых вариантах воплощения изобретения, данные в памяти могут быть организованы как строки памяти. На иллюстрации показана M×N - разрядная строка (116) памяти, которая (строка) соответствует указанной ячейке (118) памяти (например, включает в себя данные в указанной ячейке памяти). M×N - разрядная строка памяти имеет целое число (М) порций, имеющих разрядность в N - разрядов, данных. Как показано на чертеже, M×N - разрядная строка памяти может иметь данные: с первых N - разрядных данных (114-1) по М-ые N - разрядные данные (114 - М). В некоторых вариантах воплощения изобретения, M×N - разрядная строка представляет собой по меньшей мере 512 разрядов. В одном варианте воплощения изобретения, целое число N может представлять собой 128 разрядов, а целое число М может представлять собой четыре. В другом варианте воплощения изобретения, целое число N может представлять собой 256 разрядов, а целое число М может представлять собой два. В еще одном другом варианте воплощения изобретения, целое число N может представлять собой 64 разряда, а целое число М может представлять собой восемь. В других вариантах воплощения изобретения, разрядность M×N - разрядной строки может иметь другие разрядности (например, 256 разрядов, по меньшей мере 512 разрядов, 1024 разряда и так далее). Количество (М) N - разрядных элементов данных обычно равно разрядности строки памяти, разделенной на разрядность N - разрядных элементов данных. В некоторых вариантах воплощения изобретения, M×N - разрядная строка может иметь разрядность, равную разрядности строки кэша процессора.
В некоторых вариантах воплощения изобретения, звено (108) доступа к памяти способен функционировать в ответ на команду (104) на доступ множественных регистров к памяти и/или в результате этой команды (например, в ответ на одну или более декодированных или иным образом конвертированных команд или управляющих сигналов, которые представляют эту команду на доступ множественных регистров к памяти и/или выведены из нее) таким образом, чтобы выполнять операцию доступа множественных регистров к памяти. В некоторых вариантах воплощения изобретения, в операцию доступа множественных регистров к памяти могут быть вовлечены N - разрядные данные, в каждом из множества N - разрядных регистров (110), которые должны включать в себя, реализовывать или иным образом содержать регистр (112), указанный командой (104). Помимо этого, в некоторых вариантах воплощения изобретения, в операцию доступа множественных регистров к памяти могут также быть вовлечены различные соответствующие N - разрядные порции (114) в M×N - разрядной строке (116) памяти, которая должна соответствовать указанной ячейке (118) памяти. Как показано на чертеже, M×N - разрядная строка памяти может быть сохранена в M×N - разрядной строке (122) кэша, входящей в состав кэша (109), например, в общем традиционным способом. Звено доступа к памяти и/или процессор могут включать в себя специальную или особую логику (например, схемы или другое аппаратное обеспечение, возможно, объединенное с микропрограммным обеспечением и/или программным обеспечением) способную функционировать таким образом, чтобы выполнять операции, отвечающие на эту команду.
В некоторых вариантах воплощения изобретения, команда на доступ множественных регистров к памяти может представлять собой команду на загрузку множественных регистров (осуществляемую) из памяти. В ответ на эту команду на загрузку множественных регистров из памяти, в некоторых вариантах воплощения изобретения, процессор может загрузить в каждый из множества N - разрядных регистров различные N - разрядные порции из M×N - разрядной строки памяти. В других вариантах воплощения изобретения, команда на доступ множественных регистров к памяти может представлять собой команду на запись из множественных регистров в память. В ответ на команду на запись из множественных регистров в память, в некоторых вариантах воплощения изобретения, процессор может записать N -разрядные данные, из каждого из множества N - разрядных регистров, в различные соответствующие N - разрядные порции в M×N - разрядной строке памяти.
В некоторых вариантах воплощения изобретения, суммарное количество разрядов, вовлеченных в операцию доступа множественных регистров к памяти (например, сумма N - разрядных данных в каждом из множества N - разрядных регистров (110), вовлеченных в эту операцию), может составлять по меньшей мере половину, или, в некоторых случаях, вплоть до всех, M×N разрядов строки (116) памяти. В некоторых вариантах воплощения изобретения по меньшей мере половина, или, в некоторых случаях, вплоть до всех, M×N разрядов строки памяти могут быть передана из кэша (109) в набор регистров (110). В разнообразных вариантах воплощения изобретения, могут быть вовлечены по меньшей мере два, три, четыре или более регистров. В качестве одного примера, в одном варианте воплощения изобретения, если M×N разрядов равно 512 разрядам, и N равно 128 разрядам, то в разнообразных аспектах изобретения в операцию доступа множественных регистров к памяти могут быть вовлечены по меньшей мере два 128 - разрядных регистра (110), в некоторых случаях три 128 -разрядных регистра (110) или в некоторых случаях четыре 128 - разрядных регистра (110). В качестве другого примера, в одном варианте воплощения изобретения, если M×N - разрядов равно 512 разрядам, и N равно 64 разрядам, то в разнообразных аспектах изобретения в операцию доступа множественных регистров к памяти могут быть вовлечены по меньшей мере три 64 - разрядных регистра (110) по меньшей мере четыре 64 - разрядных регистра (110) или в некоторых случаях где-нибудь до восьми 64 - разрядных регистров (110). В качестве еще одного другого примера, в одном варианте воплощения изобретения, если M×N разрядов равно 512 разрядам, и N равно 256 разрядам, то в операцию доступа множественных регистров к памяти могут быть вовлечены два 256 - разрядных регистра (110).
Во избежание затруднения понимания описания, на чертеже показан и описан относительно простой процессор (102). В других вариантах воплощения изобретения, процессор, если требуется, может включать в себя другие хорошо известные компоненты, находящиеся в процессорах. Примеры таких компонентов включают в себя: звено предсказания ветвей, звено выборки команд, буферы быстрого преобразования адресов команд и данных, буферы предварительной выборки, очереди микрокоманд, задатчики последовательностей микрокоманд, звено переименования регистров, звено планирования команд, звено изъятия, другие компоненты, входящие в состав процессоров, и разнообразные их сочетания, но не ограничиваются этими компонентами. Имеются без преувеличения многочисленные различные сочетания и конфигурации компонентов в процессорах, и варианты воплощения изобретения не ограничены никаким конкретным сочетанием или конфигурацией. Варианты воплощения изобретения могут быть включены в состав процессоров, иметь множественные ядра, логические процессоры или механизмы исполнения по меньшей мере один из которых способен выполнять вариант воплощения команды на доступ множественных регистров к памяти.
Фиг. 2 представляет собой блок-схему алгоритма одного варианта воплощения способа (230) обработки одного варианта воплощения команды на доступ множественных регистров к памяти. Этот способ может быть выполнен посредством процессора, аппарата для обработки команд, интегральной схемы или тому подобного и/или внутри них.
Способ включает в себя, на этапе 231, прием команды на доступ множественных регистров к памяти. В некоторых вариантах воплощения изобретения, команда (104) на доступ множественных регистров к памяти может специфицировать или иным образом указывать ячейку памяти, и может специфицировать или иным образом указывать регистр. В разнообразных аспектах изобретения, эта команда может быть принята в процессоре, аппарате для обработки команд или их части (например, в звене выборки команд, декодирующем звене, конверторе команд и так далее). В разнообразных аспектах изобретения, эта команда может быть принята от источника, находящегося вне кристалла (например, из памяти, с диска, из межсоединения и так далее), или от источника, находящегося на кристалле, (например, из кэша команд, звена выборки команд и так далее).
Способ включает в себя, на этапе 232, выполнение операции доступа множественных регистров к памяти в ответ на команду на доступ множественных регистров к памяти. В некоторых вариантах воплощения изобретения, операцию доступа к памяти могут выполнять звено доступа к памяти или другая часть процессора. В некоторых вариантах воплощения изобретения, в операцию доступа множественных регистров к памяти могут быть вовлечены N - разрядные данные, в каждом из множества N - разрядных регистров, которые включают в себя, реализуют или иным образом содержат указанный регистр, и различные соответствующие N - разрядные порции в M×N - разрядной строке памяти, которая (строка) соответствует указанной ячейке памяти (например, M×N - разрядная строка памяти включает в себя данные в указанной ячейке памяти).
В некоторых вариантах воплощения изобретения, суммарное количество разрядов N - разрядных данных во множестве N - разрядных регистров, вовлеченных в операцию доступа множественных регистров к памяти, может составлять по меньшей мере половину, или, в некоторых случаях, вплоть до всех, M×N разрядов строки памяти. В некоторых вариантах воплощения изобретения, суммарное количество разрядов N - разрядных данных во множестве N - разрядных регистров, вовлеченных в операцию доступа множественных регистров к памяти, может составлять по меньшей мере 256 разрядов по меньшей мере 512 разрядов или в некоторых случаях большее количество разрядов (например, 1024 разрядов). В разнообразных вариантах воплощения изобретения, в операцию доступа множественных регистров к памяти могут быть вовлечены по меньшей мере два, три, четыре или большее количество регистров.
Фиг. 3 представляет собой блок-схему алгоритма одного варианта воплощения способа (330) обработки одного варианта воплощения команды на загрузку множественных регистров из памяти. Этот способ может быть выполнен посредством процессора, аппарата для обработки команд, интегральной схемы или тому подобного и/или внутри них.
Способ включает в себя, на этапе 331, прием команды на загрузку множественных регистров из памяти. В некоторых вариантах воплощения изобретения, команда на загрузку множественных регистров из памяти может специфицировать или иным образом указывать ячейку памяти, и может специфицировать или иным образом указывать регистр. Эта команда может быть принята различными способами, описанными выше в связи с Фиг. 2.
Способ также включает в себя, на этапе 332, выполнение операции загрузки множественных регистров из памяти в ответ на команду на загрузку множественных регистров из памяти. В некоторых вариантах воплощения изобретения, эту операцию могут выполнять звено доступа к памяти или другая часть процессора. В некоторых вариантах воплощения изобретения, выполнение этой операции может включать в себя загрузку различных N - разрядных порций из M×N - разрядной строки памяти, которая (строка) соответствует указанной ячейке памяти, в каждый из множества N - разрядных регистров, которые содержат указанный регистр. В некоторых вариантах воплощения изобретения, это может включать в себя передачу этих различных N - разрядных порций из M×N - разрядной строки кэша из кэша в каждый из этих различных N - разрядных регистров.
В некоторых вариантах воплощения изобретения, суммарное количество разрядов различных N - разрядных порций, загружаемых во множество N - разрядных регистров из M×N - разрядной строки памяти, составляет по меньшей мере половину, или, в некоторых случаях, вплоть до всех, M×N разрядов строки памяти. В некоторых вариантах воплощения изобретения, суммарное количество разрядов различных N - разрядных порций, загружаемых во множество N - разрядных регистров из M×N - разрядной строки памяти, может составлять по меньшей мере 256 разрядов, по меньшей мере 512 разрядов или в некоторых случаях большее количество разрядов (например, 1024 разряда). В разнообразных вариантах воплощения изобретения, в операцию загрузки множественных регистров из памяти могут быть вовлечены по меньшей мере два, три, четыре или большее количество регистров. В одном конкретном примере, эта операция может загружать различные 128 - разрядные порции строки памяти, которая составляет по меньшей мере 512 разрядов, в каждый из по меньшей мере четырех 128 - разрядных регистров. В другом конкретном примере, эта операция может загружать различные 256 - разрядные порции строки памяти, которая составляет по меньшей мере 512 разрядов, в каждый из по меньшей мере двух 256 - разрядных регистров.
Фиг. 4 представляет собой блок-схему алгоритма одного варианта воплощения способа (430) обработки одного варианта воплощения команды на сохранение из множественных регистров в память. Этот способ может быть выполнен посредством процессора, аппарата для обработки команд, интегральной схемы или тому подобного и/или внутри них.
Способ включает в себя, на этапе 431, прием команды на сохранение из множественных регистров в память. В некоторых вариантах воплощения изобретения, команда на сохранение из множественных регистров в память может специфицировать или иным образом указывать ячейку памяти, и может специфицировать или иным образом указывать регистр. Эта команда может быть принята различными способами, описанными выше в связи с Фиг. 2.
Способ также включает в себя, на этапе 432, выполнение операции сохранения из множественных регистров в память в ответ на команду на сохранение из множественных регистров в память. В некоторых вариантах воплощения изобретения, эту операцию могут выполнять звено доступа к памяти или другая часть процессора. В некоторых вариантах воплощения изобретения, выполнение этой операции может включать в себя запись N - разрядных данных, из каждого из множества N - разрядных регистров, которые содержат указанный регистр, в различные соответствующие N - разрядные порции в M×N - разрядной строке памяти, которая (строка) соответствует указанной ячейке памяти. В некоторых вариантах воплощения изобретения, это может включать в себя передачу N - разрядных данных от каждого из множества N - разрядных регистров в кэш и сохранение каждых из этих различных N - разрядных данных в отличной от других N - разрядной порции в M×N - разрядной строке (122) кэша.
В некоторых вариантах воплощения изобретения, суммарное количество разрядов N - разрядных данных, записываемых из множества N - разрядных регистров в M×N - разрядную строку памяти, может составлять по меньшей мере половину, или, в некоторых случаях, вплоть до всех, M×N разрядов строки памяти. В некоторых вариантах воплощения изобретения, суммарное количество разрядов N - разрядных данных, записываемых из множества N - разрядных регистров в M×N - разрядную строку памяти, может составлять по меньшей мере 256 разрядов, по меньшей мере 512 разрядов или в некоторых случаях более высокое количество разрядов (например, 1024 разряда). В различных вариантах воплощения изобретения, в операцию сохранения из множественных регистров в память могут быть вовлечены по меньшей мере два, три, четыре или более высокое количество регистров.
Способы, показанные на Фиг. 2-4, были описаны в относительно базовой форме. Однако, в эти способы, если требуется, могут быть добавлены и/или удалены из них операции. Например, в некоторых вариантах воплощения изобретения, в любой из этих способов, если требуется, может быть добавлена операция для того, чтобы сохранять N - разрядные данные, связанные с множеством N - разрядных регистров, (например, подлежащие загрузке в N - разрядные регистры или записываемые из N - разрядных регистров) в различных соответствующих N - разрядных порциях в M×N - разрядной строке кэша в кэше. В качестве другого примера, в некоторых вариантах воплощения изобретения, в любой из этих способов, если требуется, может быть добавлена операция для того, чтобы передавать N - разрядные данные, связанные с множеством N - разрядных регистров, (например, подлежащие загрузке в N - разрядные регистры или записываемые из N - разрядных регистров) между кэшем и N - разрядными регистрами. В качестве дополнительных примеров, если требуется, могут быть добавлены одна или более операций для того, чтобы осуществлять выборку команд, декодировать команды, отменять команды, или им подобные, или разнообразные их сочетания.
В некоторых вариантах воплощения изобретения, операции и/или способы, показанные на любой из Фиг. 2-4, могут быть выполнены посредством и/или внутри процессора, показанного на Фиг. 1. Если требуется, то подробности и необязательные подробности, описанные выше для процессора, показанного на Фиг. 1, также, если требуется, применяются к операциям и/или способам, показанным на Фиг. 2-4, которые в вариантах воплощения изобретения могут быть выполнены посредством и/или внутри такого процессора. В качестве альтернативы, операции и/или способы, показанные на любой из Фиг. 2-4 могут быть выполнены посредством и/или внутри аналогичного или другого процессора. Помимо этого, процессор, показанный на Фиг. 1, может выполнять операции и/или способы, те же самые, что и операции и/или способы, показанные на любой из Фиг. 2-4, аналогичные им, или отличные от них.
Фиг. 5 представляет собой структурную схему для первого приводимого в качестве примера варианта воплощения подходящей операции (530) доступа множественных регистров к памяти, которая может быть выполнена в ответ на первый приводимый в качестве примера вариант воплощения команды на доступ множественных регистров к памяти. Команда на доступ множественных регистров к памяти может указывать ячейку (518) памяти, находящуюся в памяти (520), и регистр (512) в процессоре (502). В этом варианте воплощения изобретения, указанная ячейка памяти должна соответствовать 512 - разрядной строке (516) памяти, которая (строка) имеет четыре 128 - разрядных порции (с 514-1 по 514-4) данных. Например, 512 - разрядная строка памяти может сохранять данные в указанной ячейке памяти. В этом варианте воплощения изобретения, указанный регистр должен включать в себя набор из четырех 128 - разрядных регистров (510), быть реализованным посредством этого набора, или иным образом содержать его. В некоторых вариантах воплощения изобретения, эти четыре 128 - разрядных регистра могут быть смежными или последовательно расположенными регистрами.
В этом варианте воплощения изобретения, в операцию доступа множественных регистров к памяти должны быть вовлечены четыре различных 128 - разрядных порции (514) данных, в каждом из этих четырех 128 - разрядных регистров (510), и различные соответствующие 128 - разрядные порции (514) в 512 - разрядной строке (516) памяти. Например, в этой операции может осуществляться передача или обмен данными между 512 - разрядной строкой памяти и этим набором из четырех 128 - разрядных регистров. В некоторых вариантах воплощения изобретения, эта операция может представлять собой вариант воплощения операции загрузки множественных регистров из памяти, и 128 - разрядные порции (514) данных могут загружаться или считываться из 512 - разрядной строки (516) памяти в эти четыре 128 - разрядных регистра (510). В других вариантах воплощения изобретения, эта операция может представлять собой вариант воплощения операции записи из множественных регистров в память, и 128 - разрядные порции (514) данных могут записываться или сохраняться из этих четырех 128 - разрядных регистров (510) в 512 - разрядную строку (516) памяти.
512 - разрядная строка памяти может также быть сохранена в 512 - разрядной строке (522) кэша в кэше (509). В некоторых вариантах воплощения изобретения, обмен данными между памятью и процессором (например, кэшем) может осуществляться по межсоединению (524). В некоторых вариантах воплощения изобретения, межсоединение (524) может иметь разрядность, составляющую 512 разрядов, 256 разрядов или некоторую другую разрядность в зависимости от тактовых частот и так далее. В некоторых вариантах воплощения изобретения, обмен данными между кэшем и набором из четырех 128 - разрядных регистров может осуществляться по межсоединению (534). В некоторых вариантах воплощения изобретения, межсоединение (534) может иметь ширину полосы пропускания или разрядность, составляющую 512 разрядов или по меньшей мере 256 разрядов, в зависимости от тактовых частот и так далее. Объем изобретения не ограничен разрядностями межсоединения (524) или (534).
Фиг. 6 представляет собой структурную схему для второго приводимого в качестве примера варианта воплощения подходящей операции (630) доступа множественных регистров к памяти, которая может быть выполнена в ответ на второй приводимый в качестве примера вариант воплощения команды на доступ множественных регистров к памяти. Команда на доступ множественных регистров к памяти может указывать ячейку (618) памяти, находящуюся в памяти (620), и регистр (612) в процессоре (602). В этом варианте воплощения изобретения, указанная ячейка памяти должна соответствовать 512 - разрядной строке (616) памяти, которая (строка) имеет две 256 - разрядных порции (с 614-1 по 614-2) данных. Например, 512 - разрядная строка памяти может сохранять данные в указанной ячейке памяти. В этом варианте воплощения изобретения, указанный регистр должен включать в себя набор из двух 256 - разрядных регистров (610-1), (610-2), быть реализованным посредством этого набора, или иным образом содержать его. В некоторых вариантах воплощения изобретения, эти два 256 - разрядных регистра могут быть смежными или последовательно расположенными регистрами.
В этом варианте воплощения изобретения, в операцию доступа множественных регистров к памяти должны быть вовлечены две различных 256 - разрядных порции (614) данных, в каждом из этих двух 256 - разрядных регистров (610), и различные соответствующие 256 - разрядные порции (614) в 512 - разрядной строке (616) памяти. Например, в этой операции может осуществляться передача или обмен данными между 512 - разрядной строкой памяти и этими двумя 256 - разрядными регистрами. В некоторых вариантах воплощения изобретения, эта операция может представлять собой вариант воплощения операции загрузки множественных регистров из памяти, и 256 - разрядные порции (614) данных могут загружаться или считываться из 512 - разрядной строки (616) памяти в эти два 256 - разрядных регистра (610). В других вариантах воплощения изобретения, эта операция может представлять собой вариант воплощения операции записи из множественных регистров в память, и 256 - разрядные порции (614) данных могут записываться или сохраняться из этих двух 256 - разрядных регистров (610) в 512 - разрядную строку (616) памяти.
512 - разрядная строка памяти может также быть сохранена в 512 - разрядной строке (522) кэша в кэше (609). В некоторых вариантах воплощения изобретения, обмен данными между памятью и процессором (например, кэшем) может осуществляться по межсоединению (624). В некоторых вариантах воплощения изобретения, межсоединение (624) может иметь разрядность, составляющую 512 разрядов, 256 разрядов или некоторую другую разрядность в зависимости от тактовых частот и так далее. В некоторых вариантах воплощения изобретения, обмен данными между кэшем и набором из двух 256 - разрядных регистров может осуществляться по межсоединению (634). В некоторых вариантах воплощения изобретения, межсоединение (634) может иметь ширину полосы пропускания или разрядность, составляющую 512 разрядов или по меньшей мере 256 разрядов, в зависимости от тактовых частот и так далее. Объем изобретения не ограничен разрядностями межсоединения (624) или (634).
Фиг. 7 представляет собой структурную схему для третьего приводимого в качестве примера варианта воплощения подходящей операции (730) доступа множественных регистров к памяти, которая может быть выполнена в ответ на третий приводимый в качестве примера вариант воплощения команды на доступ множественных регистров к памяти. Команда на доступ множественных регистров к памяти может указывать ячейку (718) памяти, находящуюся в памяти (720), и регистр (712) в процессоре (702). В этом варианте воплощения изобретения, указанная ячейка памяти должна соответствовать 512 - разрядной строке (716) памяти, которая (строка) имеет восемь 64 - разрядных порции (с 714-1 по 714-8) данных. Например, 512 - разрядная строка памяти может сохранять данные в указанной ячейке памяти. В этом варианте воплощения изобретения, указанный регистр должен включать в себя набор из четырех 64 - разрядных регистров (710), быть реализованным посредством этого набора, или иным образом содержать его. В других вариантах воплощения изобретения, может быть использовано где-то между четырьмя и восьмью 64 - разрядными регистрами (710) (например, шесть, восемь и так далее). В некоторых вариантах воплощения изобретения, эти от четырех или до восьми 64 - разрядных регистров могут быть смежными или последовательно расположенными регистрами.
В этом варианте воплощения изобретения, в операцию доступа множественных регистров к памяти должны быть вовлечены четыре (или до восьми) различных 64 - разрядных порции (714) данных, в каждом из этих четырех (или до восьми) 64 - разрядных регистров (710), и различные соответствующие 64 - разрядные порции (714) в 512 - разрядной строке (716) памяти. Например, в этой операции может осуществляться передача или обмен данными между четырьмя (или до восьми) порциями данных в 512 - разрядной строке памяти и этими четырьмя (или до восьми) 64 - разрядными регистрами. В некоторых вариантах воплощения изобретения, эта операция может представлять собой вариант воплощения операции загрузки множественных регистров из памяти, и эти четыре (или до восьми) 64 - разрядные порции (714) данных могут загружаться или считываться из 512 - разрядной строки (716) памяти в эти четыре (или до восьми) 64 - разрядных регистра (710). В других вариантах воплощения изобретения, эта операция может представлять собой вариант воплощения операции записи из множественных регистров в память, и эти четыре (или до восьми) 64 -разрядные порции (714) данных могут записываться или сохраняться из этих четырех (или до восьми) 64 - разрядных регистров (710) в 512 - разрядную строку (716) памяти. В проиллюстрированном приводимом в качестве примера варианте воплощения изобретения, используется половина с самыми младшими разрядами 512 - разрядной строки памяти (то есть включающая в себя четыре порции (с 714-1 по 714-4) данных самых младших разрядов), хотя это не является обязательным требованием. В другом варианте воплощения изобретения, вместо этого может быть использована половина с самыми старшими разрядами или некоторая другая порция.
512 - разрядная строка памяти может также быть сохранена в 512 - разрядной строке (722) кэша в кэше (709). В некоторых вариантах воплощения изобретения, обмен данными между памятью и процессором (например, кэшем) может осуществляться по межсоединению (724). В некоторых вариантах воплощения изобретения, межсоединение (724) может иметь разрядность, составляющую 512 разрядов, 256 разрядов или некоторую другую разрядность в зависимости от тактовых частот и так далее. В некоторых вариантах воплощения изобретения, обмен данными между кэшем и набором из четырех (или до восьми) 64 - разрядных регистров может осуществляться по межсоединению (734). В некоторых вариантах воплощения изобретения, межсоединение (734) может иметь ширину полосы пропускания или разрядность, составляющую 128 разрядов или 256 разрядов (например, в случае использования только четырех регистров), или 256 разрядов или 512 разрядов (например, в случае использования до восьми регистров), в зависимости от тактовых частот и так далее. Объем изобретения не ограничен разрядностями межсоединения (724) или (734).
Следует понимать, что это - только несколько иллюстративных примеров подходящих операций. Предполагаются и другие примеры, в которых используются строки памяти, имеющие либо меньшую разрядность (например, 256 - разрядные), либо более высокую разрядность (например, 1024 - разрядные). Помимо этого, предполагаются и другие примеры, в которых используются порции данных и/или регистры, имеющие другие размеры (например, 32 - разрядные регистры).
В некоторых вариантах воплощения изобретения, процессор (например, звено доступа к памяти, исполняющее звено и так далее) может рассматривать один и тот же набор регистров или осуществлять к нему доступ либо как к большему количеству малых регистров, либо как к меньшему количеству больших регистров. Одни и те же два или больше регистров, которые можно в одном представлении рассматривать или осуществлять к ним доступ как к отдельным малым регистрам, в другом представлении можно рассматривать или осуществлять к ним доступ как к объединенному большому одиночному регистру. Например, в некоторых вариантах воплощения изобретения, смежная пара регистров могут рассматриваться по отдельности как два N/2 - разрядных регистра или могут быть логически объединены или сгруппированы вместе и могут рассматриваться все вместе как одиночный N - разрядный регистр. В обоих сценариях могут участвовать одни и те же самые физические регистры и одно и то же суммарное количество разрядов физических регистров, но их можно рассматривать и осуществлять к ним доступ различным образом. Одно потенциальное преимущество такого рода конфигурации заключается в возможности сохранять большие операнды (например, операнды, состоящие из упакованных данных) без необходимости увеличивать разрядность лежащих в ее основе физических регистров. Это может иметь такие потенциальные преимущества, как возможность избежать увеличения площади или занимаемого места, которые регистровый файл занимает на кристалле, избежать увеличения количества данных, которые необходимо загружать в регистры и выгружать из них при переключениях контекста или переходах режима электропитания и так далее.
Фиг. 8 представляет собой блок-схему, на которой проиллюстрирован приводимый в качестве примера вариант воплощения изобретения, в котором набор регистров рассматривают или осуществляют к нему доступ как к 64 - разрядным регистрам на первом представлении (840), 128 - разрядным регистрам на втором представлении (842) и 256 - разрядным регистрам в третьем представлении (844). На первом представлении (840) набор регистров (например, физические регистры) логически рассматриваются или к ним осуществляется доступ как к четырем 64 - разрядным регистрам для упакованных данных, помеченным как Х0 - Х3.
На втором представлении (842) тот же самый набор регистров (например, физических регистров) логически рассматриваются или к ним осуществляется доступ как к двум (то есть имеющимся в два раза меньшем количестве) 128 - разрядным регистрам, помеченным как Y0 - Y1. На втором представлении (842) самые младшие 64 разряда (то есть разряды 63:0) 128 - разрядного регистра (Y0) отображаются на 64 - разрядный регистр (Х0) или соответствуют ему, тогда как самые старшие 64 разряда (то есть разряды 127:64) 128 - разрядного регистра (Y0) отображаются на 64 - разрядный регистр (XI) или соответствуют ему. Аналогичным образом, самые младшие 64 разряда (то есть разряды 63:0) 128 - разрядного регистра (Y1) отображаются на 64 - разрядный регистр (Х2) или соответствуют ему, тогда как самые старшие 64 разряда (то есть разряды 127:64) 128 - разрядного регистра (Y1) отображаются на 64 - разрядный регистр (Х3) или соответствуют ему. Множественные (в этом случае два) малые (в этом случае 64 - разрядные) регистры логически объединяются или группируется для того, чтобы сформировать одиночный большой (в этом случае 128 - разрядный) регистр.
На третьем представлении (844) тот же самый набор регистров (например, физических регистров) логически рассматриваются или к ним осуществляется доступ как к одиночному 256 - разрядному регистру, помеченному как Z0. В третьем представлении (844), самые младшие 64 разряда (то есть разряды 63:0) 256 - разрядного регистра (Z0) отображаются на 64 - разрядный регистру (Х0) или соответствуют ему, самые младшие промежуточные 64 разряда (то есть разряды 127:64) 256 - разрядного регистра (Z0) отображаются на 64 - разрядный регистр (XI) или соответствую ему, самые старшие промежуточные 64 разряда (то есть разряды 191:128) 256 - разрядного регистра (Z0) отображаются на 64 - разрядный регистр (Х2) или соответствуют ему, а самые старшие 64 разряда (то есть разряды 255:192) 256 -разрядного регистра (Z0) отображаются на 64 - разрядный регистр (Х3) или соответствуют ему. В третьем представлении (844), самые старшие 128 разрядов (то есть разряды 127:0) 256 - разрядного регистра (Z0) отображаются на 128 - разрядный регистр (Y0) или соответствуют ему, а самые старшие 128 разрядов (то есть разряды 255:128) 256 - разрядного регистра (Z0) отображаются на 128 - разрядный регистру (Y1) или соответствуют ему.
В разнообразных вариантах воплощения изобретения, фактические физические регистры, используемые для реализации этих представлений, могут представлять собой 64 - разрядные регистры, 32 - разрядные регистры или 128 - разрядные регистры, хотя это не является обязательным требованием. В проиллюстрированном варианте воплощения изобретения используются смежные или последовательно расположенные регистры, хотя это не является обязательным требованием. В других вариантах воплощения изобретения, можно объединять несмежные регистры (например, несмежные регистры в различных регистровых файлах, чередующиеся регистры и так далее). В проиллюстрированном варианте воплощения, поддерживаются три различных представления, хотя в других вариантах воплощения изобретения могут поддерживаться меньшее количество (например, два) или большее количество (например, четыре или больше) различных представлений.
Кроме того, в других вариантах воплощения изобретения, в этих представлениях могут использоваться различные количества разрядов. Например, в некоторых вариантах воплощения изобретения, может иметь место представление, при котором набор регистров можно логически рассматривать или осуществлять к нему доступ как к одиночному 512 - разрядному регистру в одном представлении, и как к множественным малым регистрах в другом представлении (например, к двум 256 - разрядным регистрам, четырем 128 - разрядным регистрам, восьми 64 - разрядным регистрам и так далее). Помимо этого, в других вариантах воплощения изобретения, может иметь место представление, при котором набор регистров можно логически рассматривать или осуществлять к нему доступ как к одиночному 1024 - разрядному регистру в одном представлении, и как к множественным малым регистрам в другом представлении (например, к двум 512 - разрядным регистрам, и/или четырем 256 - разрядным регистрам, и/или восьми 128 - разрядным регистрам, и/или шестнадцати 64 - разрядным регистрам и так далее).
Фиг. 9А представляет собой блок-схему первого варианта воплощения подходящего формата команды для команды на доступ множественных регистров к памяти. Этот формат команды имеет код операции или opcode (950А). Код операции может представлять множество разрядов или одно или более полей, которые способны функционировать таким образом, чтобы идентифицировать команду и/или операцию, подлежащую выполнению (например, операцию загрузки множественных регистров из памяти, операцию сохранения из множественных регистров в память или другую операцию доступа множественных регистров к памяти). Первый формат команды также включает в себя спецификатор (952А) ячейки памяти, предназначенный для того, чтобы специфицировать ячейку памяти. Спецификатор ячейки памяти может представлять множество разрядов или одно или более полей. Специфицированная ячейка памяти может представлять источник - в случае команды на загрузку из памяти, или адресат - в случае команды на запись в память. В качестве примера отметим, что этот спецификатор может быть использован для того, чтобы специфицировать начальную ячейку данных, подлежащих загрузке (например, первый байт этих данных). Первый формат команды также включает в себя необязательный спецификатор (954А) регистра. Спецификатор регистра может специфицировать регистр. Спецификатор регистра может представлять множество разрядов или одно или более полей. Специфицированный регистр может представлять регистр - адресат, в случае команды на загрузку из памяти, или регистр - источник, в случае команды на запись в память. В качестве альтернативы, спецификатор регистра может, если требуется, отсутствовать (например, регистр вместо того, чтобы быть специфицированным явным образом, может быть указан командой неявным образом). В некоторых вариантах воплощения изобретения, на основе явным образом специфицированного или неявным образом указанного регистра могут быть указаны один или более других регистров. Например, этим явным образом специфицированным или неявным образом указанным регистром могут быть неявным образом указаны или неявным образом ассоциативно с ним связаны один или более предварительно заданных регистров. Например, с эти регистром могут быть ассоциативно связаны один или более смежных, расположенных последовательно или непрерывно следующих за ним регистров. В качестве другого примера, с этим регистром может быть ассоциативно связан каждый другой регистр. В качестве еще одного другого примера, с этим регистром могут быть ассоциативно связаны предварительно заданные последовательно расположенные регистры в различных регистровых файлах. Один конкретный пример такого рода варианта воплощения изобретения, в котором команда может неявным образом указать регистры, существует там, где в операцию загрузки или сохранения вовлечены все архитектурно видимые регистры в архитектуре. В качестве альтернативы, некоторый заданный регистр может быть выделен для загрузки, сохранения с множественными регистрами, или другой операции, и, следовательно, может быть подразумеваемым.
Фиг. 9В представляет собой блок-схему второго варианта воплощения подходящего формата команды для команды на доступ множественных регистров к памяти. Второй формат команды имеет код операции или opcode (950В), спецификатор (952В) ячейки памяти, и спецификатор (954В) регистра. Каждый из них может быть таким, как было описано выше. Второй формат команды также включает в себя необязательный спецификатор (956) количества регистров, предназначенный для того, чтобы специфицировать количество регистров, вовлеченных в операцию доступа к памяти (например, подлежащих использованию в качестве источника - в случае операции записи в память, или адресата - в случае операции загрузки из памяти). В качестве примера, отметим, что спецификатор количества регистров может специфицировать или указывать два регистра, три регистра, четыре регистра или некоторое другое количество регистров. В других вариантах воплощения изобретения, вместо того, чтобы специфицировать количество регистров, также имеется возможность специфицировать количество разрядов, связанных с операцией доступа к памяти (например, как кратное заданного размера регистра или количества разрядов). Это поле является необязательным и не требуется в обязательном порядке. В другом варианте воплощения изобретения, количество регистров может быть подразумеваемым (например, подразумеваемым для спецификатора (954В) регистра, подразумеваемым для кода (950В) операции и так далее).
Фиг. 9С представляет собой блок-схему третьих вариантов воплощения подходящего формата команды для команды на доступ множественных регистров к памяти. Третий формат команды имеет код операции или opcode (950С) и спецификатор (952С) ячейки памяти. Каждый из них может быть таким, как было описано выше. Третий формат команды также включает в себя множество необязательных спецификаторов (958) регистров. В проиллюстрированном варианте воплощения изобретения, показаны четыре спецификатора (с 958-1 по 958-4) регистров, хотя в качестве альтернативы в его состав могут быть включены меньшее количество (например, два, три) или больше чем четыре. Каждый из этих спецификаторов может представлять множество разрядов или одно или более полей. Эти множественные спецификаторы регистров могут позволять явным образом специфицировать регистры, подлежащие объединению для того, чтобы участвовать в операции доступа к памяти. В некоторых случаях, этот необязательный признак может быть использован для того, чтобы оптимизировать или по меньшей мере повысить эффективность кода, избежать или по меньшей мере уменьшить количество операций передачи данных из регистра в регистр при перемещении данных и так далее. Эти множественные спецификаторы регистров являются необязательными и не требуются в обязательном порядке.
Это - только несколько примеров подходящих форматов команды. Следует понимать, что в любой из этих форматов команды, если требуется, могут быть добавлены дополнительные поля. В других вариантах воплощения изобретения некоторые явным образом специфицированные поля могут вместо этого, если требуется, быть подразумеваемыми для команды. Следует понимать, что этим спецификаторам или полям нет необходимости включать в себя непрерывные последовательности разрядов, но, вместо этого, они, если требуется, могут быть сформированы из несоседних разрядов. Эти спецификаторы или поля, если требуется, могут перекрываться. В дополнение к этому, проиллюстрированный порядок/расположение спецификаторов или полей является только иллюстративным. В других вариантах воплощения изобретения поля могут быть перемещены или перегруппированы.
Приводимые в качестве примера архитектуры ядра, процессоры и архитектуры компьютера
Ядра процессора могут быть реализованы различным образом, для различных целей и в различных процессорах. Например, варианты реализации таких ядер могут включать в себя: 1) универсальное ядро без переупорядочения последовательности команд, предназначенное для универсальных вычислений; 2) высокопроизводительное универсальное ядро с переупорядочением последовательности команд, предназначенное для универсальных вычислений; 3) специализированное ядро, предназначенное, главным образом, для вычислений (обрабатываемых объемов) графических и/или научных данных. Варианты реализации различных процессоров могут включать в себя: 1) центральный процессор, включающий в себя одно или более универсальных ядер без переупорядочения последовательности команд, которые (ядра) предназначены для универсальных вычислений, и/или одно или более универсальных ядер с переупорядочением последовательности команд, которые (ядра) предназначены для универсальных вычислений; и 2) сопроцессор, включающий в себя одно или более специализированных ядер, предназначенных, главным образом, для (обрабатываемых объемов) графических и/или научных данных. Такие различные процессоры приводят к различным архитектурам вычислительных систем, которые могут включать в себя: 1) сопроцессор на отдельной, от центрального процессора, микросхеме; 2) сопроцессор на отдельном кристалле в том же самом корпусе, что и центральный процессор; 3) сопроцессор на том же самом кристалле, что и центральный процессор (в этом случае, такого рода сопроцессор иногда именуется как специализированная логика, такая как интегрированная логика для (обрабатываемых объемов) графических и/или научных данных, или как специализированные ядра); и 4) внутрикристальную систему, которая может включать в себя на одном и том же кристалле описанный центральный процессор (иногда именуемый как прикладное ядро (прикладные ядра) или прикладной процессор (прикладные процессоры)), вышеописанный сопроцессор и дополнительные функциональные элементы. Далее описываются приводимые в качестве примера архитектуры ядра, за которыми следуют описания приводимых в качестве примера архитектур процессоров и компьютера.
Приводимые в качестве примера архитектуры ядра
Блок-схема ядра без переупорядочения последовательности команд и с переупорядочением последовательности команд
Фиг. 10А представляет собой блок-схему, на которой проиллюстрированы как приводимый в качестве примера конвейер без переупорядочения последовательности команд, так и приводимый в качестве примера конвейер с переименованием регистров, переупорядочиванием последовательности выдачи/исполнения команд, соответствующие вариантам воплощения изобретения. Фиг. 10В представляет собой блок-схему, на которой проиллюстрировано как приводимый в качестве примера вариант воплощения ядра, имеющего архитектуру без переупорядочения последовательности команд, так и приводимое в качестве примера ядро, имеющее архитектуру с переименованием регистров, переупорядочиванием последовательности выдачи/исполнения команд, подлежащие включению в состав процессора, соответствующего вариантам воплощения изобретения. Прямоугольники, вычерченные на Фиг. 10 А-В сплошной линией, иллюстрируют конвейер без переупорядочения последовательности команд и ядро без переупорядочения последовательности команд, в то время как необязательное добавление прямоугольников, вычерченных пунктирной линией, иллюстрирует конвейер и ядро с переименованием регистров, переупорядочением последовательности выдачи/исполнения команд. Учитывая, что аспект без переупорядочения последовательности команд представляет собой подмножество аспекта с переупорядочением последовательности команд, опишем аспект с переупорядочением последовательности команд.
На Фиг. 10А процессорный конвейер (1000) включает в себя: стадию (1002) выборки, стадию (1004) декодирования длины, стадию (1006) декодирования, стадию (1008) распределения, стадию (1010) переименования, стадию (1012) планирования (также известного как диспетчеризация или выдача), стадию (1014) считывания из регистра/считывания из памяти, стадию (1016) исполнения, стадию (1018) записи в обратном направлении/записи в память, стадию (1022) обработки исключительных ситуаций и стадию (1024) фиксации.
На Фиг. 10В показано ядро (1090) процессора, включающее в себя звено (1030) передней части, сопряженное со звеном (1050) исполняющей машины, и оба этих звена сопряжены с запоминающим звеном (1070). Ядро (1090) может представлять собой ядро для вычисления с сокращенным набором команд (RISC - ядро), ядро для вычисления со сложным набором команд (CISC - ядро), ядро с командными словами сверхбольшой длины (VLIW - ядро) или гибридный или альтернативный тип ядра. В качестве еще одного другого необязательного варианта, ядро (1090) может представлять собой специализированное ядро, такое как, например, сетевое ядро или ядро для связи, машину сжатия данных, сопроцессорное ядро, ядро универсального вычислительного звена обработки графических данных (GPGPU - ядро), графическое ядро или тому подобное.
Звено (1030) передней части включает в себя звено (1032) предсказания ветвей, сопряженное со звеном (1034) кэша команд, которое сопряжено с буфером (1036) быстрого преобразования адреса (TLB - буфером) команд, которое сопряжено со звеном (1038) выборки команд, которое сопряжено с декодирующим звеном (1040). Декодирующее звено (1040) (или декодер) может декодировать команды и генерировать, в качестве своих выходных данных, одну или более микроопераций, точек входа в микрокод, микрокоманд, других команд или другие управляющие сигналы, которые декодируются из первоначальных команд, или которые иным образом отражают эти команды или выведены из них. Декодирующее звено (1040) может быть реализовано с использованием всевозможных различных механизмов. Примеры подходящих механизмов включают в себя: таблицы поиска, варианты реализации посредством аппаратных средств, программируемые логические матрицы (PLA - матрицы), постоянные запоминающие устройства (ПЗУ - устройства) для микрокода и так далее, но не ограничиваются ими. В одном варианте воплощения изобретения, ядро (1090) включает в себя постоянное запоминающее устройство для микрокода или другой носитель информации, который хранит микрокод для некоторых макрокоманд (например, в декодирующем звене (1040) или, в ином случае, в пределах звена (1030) передней части). Декодирующее звено (1040) сопряжено с переименовывающим/распределяющим звеном (1052) в звене (1050) исполняющей машины.
Звено (1450) исполняющей машины включает в себя переименовывающее/распределяющее звено (1052), сопряженное со звеном (1054) изъятия и набором из одного или более звена (звеньев) (1056) планировщика. Звено (звенья) (1056) планировщика представляет (представляют) любое количество различных планировщиков, включающих в себя станции резерваций, центральное окно команды и так далее. Звено (звенья) (1056) планировщика сопряжено (сопряжены) со звеном (звеньями) (1058) физического регистрового файла (физических регистровых файлов). Каждое из звеньев (1058) физического регистрового файла (физических регистровых файлов) представляет один или более физических регистровых файлов, различные из которых хранят один или более различных типов данных, таких как скалярные целочисленные данные, скалярные данные с плавающей запятой, упакованные целочисленные данные, упакованные данные с плавающей запятой, векторные целочисленные данные, векторные данные с плавающей запятой, данные о состоянии (например, указатель команды, который представляет собой адрес следующей команды, подлежащей исполнению) и так далее. В одном варианте воплощения изобретения, звено (1058) физического регистрового файла (физических регистровых файлов) содержит звено векторных регистров, звено регистров маски записи и звено скалярных регистров. Эти звенья регистров могут обеспечивать архитектурные векторные регистры, векторные регистры маски и регистры общего назначения. Звено (звенья) (1458) физического регистрового файла (физических регистровых файлов) перекрывается (перекрываются) звеном (1054) изъятия, что иллюстрирует разнообразные способы, посредством которых может быть осуществлено переименование регистров и исполнение с переупорядочением последовательности команд (например, посредством использования переупорядочивающего буфера (переупорядочивающих буферов) и регистрового файла (регистровых файлов) изъятия; посредством использования будущего файла (будущих файлов), буфера (буферов) предыстории и регистрового файла (регистровых файлов) изъятия; посредством использования карт регистров и пула регистров; и так далее). Звено (1054) изъятия и звено (звенья) (1458) физического регистрового файла (физических регистровых файлов) сопряжены с исполняющим кластером (исполняющими кластерами) (1060). Исполняющий кластер (исполняющие кластеры) (1060) включает (включают) в себя набор из одного или боле исполняющих звеньев (1062) и набор из одного или более звеньев (1064) доступа к памяти. Исполняющие звенья (1062) могут выполнять разнообразные операции (например, сдвиги, сложение, вычитание, умножение) и над разнообразными типами данных (например, скалярными данными с плавающей запятой, упакованными целочисленными данными, упакованными данными с плавающей запятой, векторными целочисленными данными, векторными данными с плавающей запятой). Притом что некоторые варианты воплощения изобретения могут включать в себя некоторое количестве исполняющих звеньев, выделенных для конкретных функций или наборов функций, другие варианты воплощения изобретения могут включать в себя только одно исполняющее звено или множественные исполняющие звенья, все из которых выполняют все функции. Звено (звенья) (1056) планировщика, звено (звенья) (1058) физического регистрового файла (физических регистровых файлов) и исполняющий кластер (исполняющие кластеры) (1060) показаны как, возможно, имеющиеся во множественном числе, потому что в некоторых вариантах воплощения изобретения создаются раздельные конвейеры для некоторых типов данных/операций (например, конвейер для скалярных целочисленных данных, конвейер для скалярных данных с плавающей запятой/упакованных целочисленных данных/упакованных данных с плавающей запятой/векторных целочисленных данных/векторных данных с плавающей запятой и/или конвейер доступа к памяти, каждые из которых (конвейеров) имеют свои собственные звено планировщика, звено физического регистрового файла (физических регистровых файлов) и/или исполняющий кластер, - а в случае отдельного конвейера доступа к памяти, реализованы некоторые варианты воплощения изобретения, в которых звено (звенья) (1064) доступа к памяти имеется (имеются) только у исполняющего кластера этого конвейера. Следует также понимать, что там, где используются раздельные конвейеры, один или больше из этих конвейеров может представлять собой конвейер с переупорядочиванием последовательности выдачи/исполнения команд, а остальные без упорядочения этой последовательности.
Набор звеньев (1064) доступа к памяти сопряжен с запоминающим звеном (1470), которое включает в себя звено (1072) TLB (буфера быстрого преобразования адреса) для данных, сопряженное со звеном (1074) кэша данных, сопряженным со звеном (1076) кэша уровня 2 (L 2). В одном приводимом в качестве примера варианте воплощения изобретения, звенья (1064) доступа к памяти могут включать в себя звено загрузки, звено сохранения адреса и звено сохранения данных, каждое из которых сопряжено со звеном (1072) TLB для данных, находящимся в запоминающем звене (1070). Кроме того, со звеном (1076) кэша уровня 2 (L 2), находящимся в запоминающем звене (1070), сопряжено звено (1034) кэша команд. Звено (1076) кэша уровня 2 сопряжено с одним или более другими уровнями кэша и, в конечном счете, с основной памятью.
В порядке примера отметим, что эта приводимая в качестве примера архитектура ядра с переименованием регистров, с переупорядочиванием последовательности выдачи/исполнения команд может реализовывать конвейер (1000) следующим образом: 1) звено (1038) выборки команд выполняет стадии (1002 и 1004) выборки и декодирования длины; 2) декодирующее звено (1040) выполняет стадию (1006) декодирования; 3) переименовывающее/распределяющее звено (1052) выполняет стадию (1008) распределения и стадию (1010) переименования; 4) звено (звенья) (1056) планировщика выполняет (выполняют) стадию (1012) планирования; 5) звено (звенья) (1058) физического регистрового файла (физических регистровых файлов) и запоминающее звено (1070) выполняют стадию (1014) считывания из регистра/считывания из памяти; исполняющий кластер (1060) выполняет стадию (1016) исполнения; 6) запоминающее звено (1070) и звено (звенья) (1058) физического регистрового файла (физических регистровых файлов) выполняют стадию (1018) записи в обратном направлении/записи в память; 7) в стадию (1022) обработки исключительных ситуаций могут быть вовлечены разнообразные звенья; и 8) звено (1054) изъятия и звено (звенья) (1058) физического регистрового файла (физических регистровых файлов) выполняют стадию (1024) фиксации.
Ядро (1090) может поддерживать один или более наборов команд (например, набор команд х86 (с некоторыми расширениями, которые были добавлены в более новых версиях)); набор (MIPS) команд от MIPS Technologies, Саннивейл, штат Калифорния, США; набор (ARM) команд (с необязательными дополнительными расширениями, такими как NEON) от ARM Holdings, Саннивейл, штат Калифорния, США, включающие в себя команду (команды), описанную (описанные) здесь. В одном варианте воплощения изобретения, ядро (1090) включает в себя логику для поддержки расширения набора команд для упакованных данных (например, расширения AVX1, AVX2), таким образом, делая возможными операции, используемые многими мультимедийными приложениями, выполняемыми с использованием упакованных данных.
Следует понимать, что ядро может поддерживать многопоточную обработку (исполнение двух или больше параллельных наборов операций или потоков обработки), и может делать это разнообразными способами, включающими в себя многопоточную обработку с квантованием времени, одновременную многопоточную обработку (при которой одно физическое ядро предоставляет логическое ядро для каждого из потоков обработки, одновременная многопоточная обработка которых осуществляется этим физическим ядром) или сочетание этих способов (например, выборка и декодирование с квантованием времени, а после этого одновременная многопоточная обработка, так, как это делается в технологии Intel Hyperthreading technology (Технологии гиперпоточной обработки Intel).
Следует понимать, что, хотя переименование регистров описано в контексте исполнения с переупорядочиванием последовательности команд, переименование регистров может быть использовано в архитектуре без переупорядочивания последовательности команд. Хотя проиллюстрированный вариант воплощения процессора также включает в себя раздельные звенья (1034/1074) кэша команд и данных и совместно используемое звено (1076) кэша уровня 2, альтернативные варианты воплощения изобретения могут иметь единый внутренний кэш, как для команд, так и для данных, такой как, например, внутренний кэш уровня 1 (L 1) или множественные уровни внутреннего кэша. В некоторых вариантах воплощения изобретения, система может включать в себя сочетание внутреннего кэша и внешнего кэша, который является внешним по отношению к ядру и/или процессору. В качестве альтернативы, весь кэш может быть внешним по отношению к ядру и/или процессору.
Конкретная приводимая в качестве примера архитектура ядра без переупорядочения последовательности команд
На Фиг. 11А-В проиллюстрирована блок - схема более конкретной приводимой в качестве примера архитектуры ядра без переупорядочения последовательности команд, каковое ядро было бы одним из нескольких логических блоков (включающих в себя другие ядра того же самого типа и/или других типов) в микросхеме. Логические блоки поддерживают связь через широкополосную сеть межсоединений (например, кольцевую сеть) с некоторой неизменяемой функциональной логикой, интерфейсами ввода-вывода для памяти и другой необходимой логикой ввода - вывода, в зависимости от варианта применения.
Фиг. 11А представляет собой блок-схему одиночного ядра процессора наряду с его соединением с расположенной на кристалле сетью (1102) межсоединений и с его локальным подмножеством (1104) кэша уровня 2 (L 2), соответствующими вариантам воплощения изобретения. В одном варианте воплощения изобретения, декодер (1100) команд поддерживает набор команд (х86) с расширением набора команд для упакованных данных. Кэш (1106) уровня 1 делает возможным имеющие малое время ожидания доступы к кэш - памяти в скалярные и векторные звенья. Хотя в одном варианте воплощения изобретения (для того, чтобы упростить конструкцию), скалярное звено (1108) и векторное звено (1110) используют раздельные наборы регистров (соответственно, скалярные регистры (1112) и векторные регистры 1114), и данные, передаваемые между ними, записываются в память, а затем считываются в них в обратном направлении из кэша (1106) уровня 1 (L I), в альтернативных вариантах воплощения изобретения может использоваться другой подход (например, использование единого набора регистров или введение тракта связи, который позволяет передавать данные между этими двумя регистровыми файлами, не записывая их и не считывая их в обратном направлении).
Локальное подмножество (1104) кэша уровня 2 представляет собой часть глобального кэша уровня 2, который разделен на отдельные локальные подмножества, по одному на ядро процессора. Каждое ядро процессора имеет тракт прямого доступа к своему собственному локальному подмножеству (1104) кэша уровня 2. Данные, считываемые ядром процессора, сохраняются в его локальном подмножестве (1104) кэша уровня 2, и доступ к ним может быть осуществлен быстро, параллельно с другими ядрами процессора, осуществляющими доступ к своим собственным локальным подмножествам кэша уровня 2. Данные, записанные ядром процессора, сохраняются в его собственном локальном подмножестве (1104) кэша уровня 2 и, в случае необходимости, сбрасываются из других подмножеств. Кольцевая сеть обеспечивает когерентность для совместно используемых данных. Кольцевая сеть является двунаправленной для того, чтобы позволять агентам, таким как ядра процессора, кэши уровня 2 и другие логические блоки, поддерживать связь друг с другом в пределах микросхемы. Каждый кольцевой тракт передачи данных имеет разрядность, составляющую 1012 разрядов, приходящихся на одно направление.
Фиг. 11В представляет собой расширенное представление части ядра процессора, показанного на Фиг. 11А, соответствующего вариантам воплощения изобретения. Фиг. 11В включает в себя кэш (1106А) уровня 1 для данных, являющийся частью кэша (1104) уровня 1, так же как и больше подробностей, относящихся к векторному звену (1110) и векторным регистрам (1114). В частности, векторное звено (1110) представляет собой 16 - разрядное устройство обработки векторных данных (VPU - устройство) (смотри 16 - разрядное арифметико-логическое устройство (1128)), которое исполняет одну или больше команд целочисленных вычислений, вычислений с обычной точностью с плавающей запятой и вычислений с двойной точностью с плавающей запятой. Устройство обработки векторных данных поддерживает настройку по адресам входов регистра посредством звена (1120) настройки по адресам, числовое преобразование посредством звеньев (1122А-В) числового преобразования и копирование посредством звена (1124) копирования на входе памяти. Регистры (1126) маски записи позволяют осуществлять предикацию записей результирующего вектора.
Процессор с интегрированным контроллером памяти и графическими средствами
Фиг. 12 представляет собой блок-схему процессора (1200), который может иметь более чем одно ядро, может иметь интегрированный контроллер памяти и может иметь интегрированные графические средства в соответствии с вариантами воплощения изобретения. Прямоугольники, очерченные на Фиг. 12 сплошной линией, иллюстрируют процессор (1200) с единственным ядром (1202А), системного агента (1210), набор из одного или более звеньев (1216) шинного контроллера, в то время как необязательное добавление прямоугольников, очерченных пунктирной линией, иллюстрирует альтернативный процессор (1200) с множественными ядрами (1202А-N), набор из одного или более звена (звеньев) (1214) интегрированного контроллера памяти в звене (1210) системного агента и специализированную логику (1208).
Таким образом, различные варианты реализации процессора (1200) могут включать в себя: 1) центральный процессор со специализированной логикой (1208), представляющей собой интегрированную логику для (обрабатываемых объемов) графических и/или научных данных (которая может включать в себя одно или более ядер), и ядра (1202А-N), представляющие собой одно или более универсальных ядер (например, универсальных ядер без переупорядочения последовательности команд, универсальных ядер с переупорядочением последовательности команд, сочетание этих двух типов ядер); 2) сопроцессор с ядрами (1202А - N), представляющими собой большое количество специализированных ядер, предназначенных, главным образом, для (обрабатываемых объемов) графических и/или научных данных; и 3) сопроцессор с ядрами (1202А-N), представляющими собой большое количество универсальных ядер без переупорядочения последовательности команд. Таким образом, процессор (1200) может представлять собой универсальный процессор, сопроцессор или специализированный процессор, такой как, например, сетевой процессор или процессор передачи данных, машина сжатия данных, графический процессор, GPGPU (универсальное устройство обработки графических данных), высокопроизводительный сопроцессор с многими интегрированными ядрами (MIC - сопроцессор) (включающий в себя 30 или больше ядер), встроенный процессор или тому подобное. Процессор может быть реализован на одной или более микросхемах. Процессор (1200) может являться частью одной или более подложек и/или может быть реализован на одной или более подложках с использованием любого из ряда технологических процессов, таких как, например, BiCMOS (биполярная комплементарная - структура «металл - оксид - полупроводник»), CMOS (комплементарная структура «металл - оксид - полупроводник») или NMOS (n - канальная структура «металл - оксид - полупроводник»).
Иерархия памяти включает в себя один или более уровней кэша в пределах ядер, набор из одного или более совместно используемых звеньев (1206) кэша и внешнюю память (не показанную на чертеже), сопряженную с набором звеньев (1214) интегрированного контроллера памяти. Набор совместно используемых звеньев (1206) кэша может включать в себя один или более кэшей среднего уровня, таких как уровня 2 (L 2), уровня 3 (L 3), уровня 4 (L 4) или других уровней кэша, кэш последнего уровень (LLC - кэш) и/или их сочетания. Хотя в одном варианте воплощения изобретения межсоединение между интегрированной логикой (1208) графики, набором совместно используемых звеньев (1206) кэша и звеном (1210) системного агента/звеном (звеньями) (1214) интегрированного контроллера памяти осуществляет основанное на кольце звено (1212) межсоединения, в альтернативных вариантах воплощения изобретения может использоваться любое количество хорошо известных технологий для межсоединения таких звеньев. В одном варианте воплощения изобретения, поддерживается когерентность между одним или более звеньями (1206) кэша и ядрами (1202-N).
В некоторых вариантах воплощения изобретения, одно или более ядер (1202А-N) способны к многопоточной обработке данных. Системный агент (1210) включает в себя те компоненты, которые координируют и управляют ядрами (1202А-N). Звено (1210) системного агента может включать в себя, например, звено управления электропитанием (PCU - звено) и звено отображения. Звено управления электропитанием может представлять собой или включать в себя логику и компоненты, необходимые для регулирования состояние электропитания ядер (1202А-N) и интегрированной логики (1208) графики. Звено отображения предназначено для приведения в действие одного или более подсоединенных внешним образом устройств отображения.
Ядра (1202А-N) могут быть однородными или неоднородными в том, что касается набора команд архитектуры, то есть два или более из ядер (1202А-N) могут быть способны исполнять один и тот же набор команд, в то время как другие могут быть способны исполнять только некоторое подмножество этого набора команд или другой набор команд.
Приводимая в качестве примера архитектура вычислительной системы
Фиг. 13-16 представляют собой блок-схемы приводимых в качестве примера архитектур вычислительных систем. Также подходящими являются и другие конструкции и конфигурации систем, известные в данных областях техники для переносных компьютеров, настольных компьютеров, карманных персональных компьютеров, персональных цифровых секретарей, инженерных рабочих станций, серверов, сетевых устройств, сетевых концентраторов, коммутаторов, встроенных процессоров, процессоров цифровой обработки сигналов (DSP - процессоров), графических устройств, игровых видеоустройств, телевизионных абонентских приставок, микроконтроллеров, сотовых телефонов, портативных универсальных проигрывателей, ручных устройств и разнообразных других электронных устройств. В общем, обычно подходящим является огромное разнообразие систем или электронных устройств, в состав которых может быть введен процессор и/или другая исполняющая логики, которые раскрываются в данном описании.
Обратимся теперь к Фиг. 13, на которой показана блок-схема системы (1300) в соответствии с одним вариантом воплощения настоящего изобретения. Система (1300) может включать в себя один или более процессоров (1310), (1315), которые сопряжены с концентратором - контроллером (1320). В одном варианте воплощения изобретения концентратор - контроллер (1320) включает в себя концентратор - контроллер (GMCH - концентратор) (1390) памяти графических данных и концентратор ввода-вывода (IOH - концентратор) (1350) (которые могут находиться на раздельных микросхемах); концентратор - контроллер (1390) памяти графических данных включает в себя контроллер памяти и графический контроллер, с которыми сопряжены память (1340) и сопроцессор (1345); концентратор (1350) ввода-вывода сопрягает с концентратором - контроллером (1390) памяти графических данных устройства (1360) ввода-вывода (I/O - устройства). В качестве альтернативы, один или оба контроллера из числа: контроллера памяти и графического контроллера, интегрированы в пределах процессора (как здесь описано), память (1340) и сопроцессор (1345) сопряжены непосредственно с процессором (1310), и концентратором - контроллером (1320) в единой микросхеме с концентратором (1350) ввода-вывода.
Необязательная природа дополнительных процессоров (1315) обозначена на Фиг. 13 пунктирными линиями. Каждый процессор (1310), (1315) может включать в себя одно или больше описанных здесь обрабатывающих ядер, и может представлять собой некоторую версию процессора (1200).
Память (1340) может представлять собой, например, динамическое оперативное запоминающее устройство (DRAM), память с изменением фазы (РСМ - память) или сочетание этих двух типов памяти. По меньшей мере для одного варианта воплощения изобретения, концентратор - контроллер (1320) поддерживает связь с процессором (процессорами) (1310), (1315) через многоотводную шину, такую как управляющая шина (FSB - шина), двухточечный интерфейс, такой как межсоединение QuickPath (QPI - межсоединение) или аналогичное соединение (1395).
В одном варианте воплощения изобретения, сопроцессор (1345) представляет собой специализированный процессор, такой как, например, высокопроизводительный MIC - процессор (процессор с многими интегрированными ядрами), сетевой процессор или процессор передачи данных, машина сжатия данных, графический процессор, GPGPU (универсальное устройство обработки графических данных), встроенный процессор или тому подобное. В одном варианте воплощения изобретения, концентратор - контроллер (1320) может включать в себя интегрированный графический акселератор.
Может иметь место многообразие различий между физическими ресурсами (1310), (1315) в том, что касается спектра показателей их качества, включающих в себя архитектурные, микроархитектурные, тепловые характеристики, характеристики энергопотребления и тому подобное.
В одном варианте воплощения изобретения, процессор (1310) выполняет команды, которые управляют операциями по обработке данных, относящимися к общему типу. В пределах команд могут быть встроены команды для сопроцессора. Процессор (1310) распознает эти команды для сопроцессора как относящиеся к типу, который подлежит выполнению приданным сопроцессором (1345). Соответственно, процессор (1310) выдает эти команды для сопроцессора (или управляющие сигналы, представляющие команды для сопроцессора) по шине сопроцессора или другому межсоединению в сопроцессор (1345). Сопроцессор(ы) (1345) принимает (принимают) и исполняет (исполняют) принятые команды для сопроцессора.
Обратимся теперь к Фиг. 14, на которой показана блок-схема первой более конкретной системы (1400), приводимой в качестве примера, в соответствии с одним вариантом воплощения настоящего изобретения. Как показано на Фиг. 14, многопроцессорная система (1400) представляет собой систему с двухточечными межсоединениями, и включает в себя первый процессор (1470) и второй процессор (1480), сопряженные через двухточечное межсоединение (1450). Каждый из процессоров: (1470) и (1480) может представлять собой некоторую версию процессора (1200). В одном варианте воплощения изобретения, процессоры (1470) и (1480) представляют собой, соответственно, процессоры (1310) и (1315), в то время как сопроцессор (1438) представляет собой сопроцессор (1345). В другом варианте воплощения изобретения, процессоры (1470) и (1480) представляют собой, соответственно, процессор (1310), сопроцессор (1345).
Процессоры (1470) и (1480) показаны включающими в себя, соответственно, звенья (1472) и (1482) интегрированных контроллеров памяти (IMC - контроллеров). Процессор (1470) также включает в себя, как часть своих звеньев - шинных контроллеров, двухточечные (Р-Р) интерфейсы (1476) и (1478); аналогичным образом, второй процессор (1480) включает в себя (двухточечные) интерфейсы (1486) и (1488). Процессоры (1470), (1480) могут осуществлять обмен информацией через двухточечный (Р-Р) интерфейс (1450) с использованием схем (1478), (1488) (двухточечного) интерфейса. Как показано на Фиг. 14, интегрированные контроллеры (1472) и (1482) памяти (IMC - контроллеры) сопрягают процессоры с соответствующими запоминающими устройствами, а именно, с памятью (1432) и памятью (1434), которые могут являться частями основной памяти, локально закрепленными за соответствующими процессорами.
Процессоры (1470), (1480) могут каждый осуществлять обмен информацией с набором (1490) микросхем через индивидуальные двухточечные интерфейсы (1452), (1454), использующие схемы (1476), (1494), (1486), (1498) двухточечных интерфейсов. Набор (1490) микросхем может, если требуется, осуществлять обмен информацией с сопроцессором (1438) через высокопроизводительный интерфейс (1439). В одном варианте воплощения изобретения, сопроцессор (1438) представляет собой специализированный процессор, такой как, например, высокопроизводительный MIC - процессор (процессор со многими интегрированными ядрами), сетевой процессор или процессор передачи данных, машина сжатия данных, графический процессор, GPGPU (универсальное устройство обработки графических данных), встроенный процессор или тому подобное.
В состав любого из процессоров или вне обоих процессоров может быть введен совместно используемый кэш (не показанный на чертеже); к тому же соединенный с процессорами через двухточечное межсоединение, таким образом, что информация локального кэша любого или обоих процессоров может быть сохранена в этом совместно используемом кэше, если процессор переведен в режим низкого энергопотребления.
Набор (1490) микросхем может быть сопряжен с некоторой первой шиной (1416) через интерфейс (1496). В одном варианте воплощения изобретения, первая шина (1416) может представлять собой шину Межсоединения периферийных компонентов (шину PCI), или шину, такую как шина PCI Express (Скоростного Межсоединения периферийных компонентов) или другая шина межсоединения ввода/вывода, относящаяся к третьему поколению, хотя объем настоящего изобретения этим не ограничен.
Как показано на Фиг. 14, с первой шиной (1416) могут быть сопряжены разнообразные устройства (1414) ввода/вывода, наряду с мостом (1418) между шинами, который сопрягает первую шину (1416) со второй шиной (1420). В одном варианте воплощения изобретения, с первой шиной (1416) сопряжены один или более дополнительный процессор (дополнительных процессоров) (1415), таких как сопроцессоры, высокопроизводительные MIC - процессоры (процессоры с многими интегрированными ядрами), GPGPU - устройства (универсальные устройства обработки графических данных), акселераторы (такие как, например, графические акселераторы или звенья процессоров цифровой обработки сигналов (DSP - процессоров)), вентильные матрицы с эксплуатационным программированием, или любой другой процессор. В одном варианте воплощения изобретения, вторая шина (1420) может представлять собой шину с малым количеством выводов (LPC - шину). Со второй шиной (1420) могут быть сопряжены разнообразные устройства, включающие в себя, например, клавиатуру и/или "мышь" (1422), устройства (1427) связи и запоминающее звено (1428), такое как дисковод или другое запоминающее устройство большой емкости, которое, в одном варианте воплощения изобретения, может включать в себя команды/код и данные (1430). Кроме того, со второй шиной (1420) может быть сопряжено устройство (1424) ввода/вывода звука. Отметим, что возможны и другие архитектуры. Например, вместо двухточечной архитектуры, показанной на Фиг. 14, в системе может быть реализована многоотводная шина или другая такая архитектура.
Обратимся теперь к Фиг. 15, на которой показана блок-схема второй более конкретной системы (1500), приводимой в качестве примера, в соответствии с одним вариантом воплощения настоящего изобретения. Сходные элементы на Фиг. 14-15 имеют сходные ссылочные позиции, и некоторые аспекты Фиг. 14 были опущены на Фиг. 15 для того, чтобы избежать затруднения понимания других аспектов Фиг. 15.
На Фиг. 15 проиллюстрировано то, что процессоры (1470), (1480) могут включать в себя интегрированную логику ("CL") (соответственно, (1472) и (1482)) управления памятью и вводом - выводом. Таким образом, логика (1472) и логика (1482) управления включают в себя звенья интегрированного контроллера памяти и включают в себя логику управления вводом/выводом. На Фиг. 15 проиллюстрировано то, что с логикой (1472) и (1482) управления сопряжены не только память (1432), (1434), но также и то, что с логикой (1472), (1482) управления также сопряжены устройства (1514) ввода/вывода. Унаследованные устройства (1515) ввода/вывода сопряжены с набором (1490) микросхем.
Обратимся теперь к Фиг. 16, на которой показана блок-схема внутрикристальной системы (SoC) (1600) в соответствии с одним вариантом воплощения настоящего изобретения. Элементы, аналогичные элементам на Фиг. 12, имеют сходные с ними ссылочные позиции. Кроме того, прямоугольники, вычерченные пунктирной линией, представляют собой необязательные признаки в более усовершенствованных внутрикристальных системах. На Фиг. 16, звено (звенья) (1602) межсоединений сопряжено (сопряжены) с: прикладным процессором (1610), который включает в себя набор из одного или более ядер (202А-N) и звено (звенья) (1206) совместно используемого кэша; звеном (1210) системного агента; звеном (звеньями) (1216) шинного контроллера; звеном (звеньями) (1214) интегрированного контроллера памяти; набором из одного или более сопроцессоров (1620), которые могут включать в себя интегрированную логику графики, процессор изображений, процессор аудиоинформации и видеопроцессор; звеном (1630) статического оперативного запоминающего устройства (звеном SRAM); звеном (1632) прямого доступа к памяти (звеном DMA); и звеном (1640) отображения для сопряжения с одним или более внешними устройствами отображения. В одном варианте воплощения изобретения, сопроцессор(ы) (1620) включает (включают) в себя специализированный процессор, такой как, например, сетевой процессор или процессор передачи данных, машина сжатия данных, GPGPU (универсальное устройство обработки графических данных), высокопроизводительный MIC - процессор (процессор со многими интегрированными ядрами), встроенный процессор или тому подобное.
Варианты воплощения раскрытых здесь механизмов могут быть реализованы в виде аппаратного обеспечения, программного обеспечения, микропрограммного обеспечения или сочетания таких подходов к реализации изобретения. Варианты воплощения изобретения могут быть реализованы как компьютерные программы или программный код, исполняющийся на программируемых системах, содержащих по меньшей мере один процессор, запоминающую систему (включающую в себя энергозависимую и энергонезависимую память и/или запоминающие элементы) по меньшей мере одно устройство ввода, и по меньшей мере одно устройство вывода.
Программный код, такой как код (1430), проиллюстрированный на Фиг. 14, может быть применен к вводу команд для выполнения описанных здесь функций и для генерирования выходной информации. Выходная информация может быть применена, известным образом, к одному или более устройствам вывода. Для целей этой заявки, система обработки данных включает в себя любую систему, которая имеет процессор, такой как, например: процессор цифровой обработки сигналов (DSP - процессор), микроконтроллер, прикладная специализированная интегральная схема (ASIC) или микропроцессор.
Программный код может быть реализован на процедурном или объектно-ориентированном алгоритмическом языке высокого уровня для общения с системой обработки данных. Программный код может, если требуется, также быть реализован на языке ассемблера или машинном языке. Фактически, описанные здесь механизмы не ограничены в своем объеме никаким конкретным языком программирования. В любом случае, этот язык может быть транслируемым или интерпретируемым языком.
Один или более аспектов по меньшей мере одного варианта воплощения изобретения могут быть реализованы посредством представляющих команд, хранящихся на машиночитаемом носителе информации, который представляет различную логику внутри процессора, который при считывании его машиной заставляет машину создавать логику для выполнения описанных здесь технологий. Такие представления, известные как "IP - ядра", могут храниться на материальном, машиночитаемом носителе информации и поставляться различным клиентам или на производственные установки для загрузки в производственные машины, которые фактически создают эту логику или процессор.
Такие машиночитаемые носители информации могут включать в себя, но не в качестве ограничения, некратковременные материальные конфигурации изделий, изготовленных или образованных машиной или устройством, включающие в себя такие носители информации, как жесткие диски, любой другой тип диска, включающий в себя гибкие диски, оптические диски, постоянные запоминающие устройства на компакт-дисках (устройства CD-ROM), перезаписываемые компакт-диски (диски CD-RW) и магнитооптические диски, полупроводниковые устройства, такие как постоянные запоминающие устройства (ROM - устройства), оперативные запоминающие устройства (RAM - устройства), такие как динамические оперативные запоминающие устройства (DRAM - устройства), статические оперативные запоминающие устройства (SRAM - устройства), стираемые программируемые постоянные запоминающие устройства (EPROM - устройства), электрически стираемые программируемые постоянные запоминающие устройства (EEPROM - устройства), память с изменением фазы (РСМ - память), магнитные или оптические карты, или любой другой тип носителей информации, подходящий для хранения электронных команд.
Соответственно, варианты воплощения изобретения также включают в себя некратковременные материальные машиночитаемые носители информации, содержащие команды или содержащие данные проектирования, такие как данные на Языке описания аппаратного обеспечения (языке HDL), которые определяют описанные здесь структуры, схемы, аппараты, процессоры и/или признаки системы. Такие варианты воплощения изобретения могут также упоминаться как программные продукты.
Эмуляция (включающая в себя двоичную трансляцию, трансформирование кода и так далее)
В некоторых случаях, для конвертирования команды из некоторого исходного набора команд в некоторый заданный набор команд может быть использован конвертор команд. Например, этот конвертор команд может транслировать (например, используя статическую двоичную трансляцию, динамическую двоичную трансляцию, включающую в себя динамическую компиляцию), трансформировать, эмулировать или иным образом конвертировать команду в одну или более других команд, подлежащих обработке ядром. Конвертор команд может быть реализован в виде программного обеспечения, аппаратного обеспечения, микропрограммного обеспечения или их сочетания. Конвертор команд может быть на процессоре, вне процессора или частино на процессоре, а частично вне процессора.
Фиг. 17 представляет собой блок-схему, на которой сравнивается использование конвертора команд, реализованного программными средствами, для того, чтобы конвертировать двоичные команды в некотором исходном наборе команд в двоичные команды в некотором заданном наборе команд в соответствии с вариантами воплощения изобретения. В проиллюстрированном варианте воплощения изобретения, конвертор команд представляет собой реализованный программными средствами конвертор команд, хотя, в качестве альтернативы, конвертор команд может быть реализован в виде программного обеспечения, микропрограммного обеспечения, аппаратного обеспечения или разнообразных их сочетаний. На Фиг. 17 показано, что программа на языке (1702) высокого уровня может быть скомпилирована с использованием компилятора (1704) набора команд х86 для того, чтобы сгенерировать двоичный код (1706) набора команд х86, который может быть исполнен, в качестве собственного, процессором (1716) с по меньшей мере одним ядром с набором команд х86. Этот процессор (1716) с по меньшей мере одним ядром с набором команд х86 представляет любой процессор, который может выполнять, по существу, те же самые функции, что и процессор Intel с по меньшей мере одним ядром с набором команд х86, совместимым образом исполняя или иным образом обрабатывая (1) существенную часть набора команд ядра набора команд Intel х86 или (2) версии объектного кода приложений или другого программного обеспечения, предназначенных для исполнения на процессоре Intel с по меньшей мере одним ядром с набором команд х86, для того, чтобы достигнуть, по существу, того же самого результата, что и процессор Intel с по меньшей мере одним ядром с набором команд х86. Компилятор (1704) набора команд х86 представляет компилятор, который способен функционировать таким образом, чтобы генерировать двоичный код (1706) набора команд х86 (например, объектный код), который при дополнительной обработке по редактированию связей или без этой обработки, может быть исполнен на этом процессоре (1716) с по меньшей мере одним ядром с набором команд х86. Аналогичным образом, на Фиг. 17 показано, что программа на языке (1702) высокого уровня, может быть скомпилирована с использованием компилятора (1708) альтернативного набора команд для того, чтобы сгенерировать двоичный код (1710) альтернативного набора команд, который может быть исполнен, в качестве собственного, процессором (1714) без хотя бы одного ядра с набором команд х86 (например, процессором с ядрами, которые исполняют набор команд MIPS от MIPS Technologies, г. Саннивейл, штат Калифорния, США и/или которые исполняют набор команд ARM от ARM Holdings, г. Саннивейл, штат Калифорния, США). Конвертор (1712) команд используется для того, чтобы конвертировать двоичный код (1706) набора команд х86 в код, который может быть исполнен, в качестве собственного, процессором (1714) без ядра с набором команд х86. Этот конвертированный код вряд ли будет таким же, как двоичный код (1710) альтернативного набора команд, потому что способный на это конвертор команд создать трудно; однако, конвертированный код будет выполнять эту общую операцию и будет составлен из команд из этого альтернативного набора команд. Таким образом, конвертор (1712) команд представляет программное обеспечение, микропрограммное обеспечение, аппаратное обеспечение или их сочетание, которые посредством эмуляции, моделирования или любого другого процесса позволяет процессору или другому электронному устройству, которое не имеет процессора или ядра с набором команд х86, исполнять двоичный код (1706) набора команд х86.
Компоненты, признаки и подробности, описанные для любой из Фиг. 3-4, если требуется, могут также быть использованы на любой из Фиг. 1-2. Компоненты, признаки и подробности, описанные для любой из Фиг. 5-9, если требуется, могут также быть использованы на любой из Фиг. 1-4. Помимо этого, компоненты, признаки и подробности, описанные здесь для любого из процессоров или аппаратов для обработки команд, если требуется, могут также быть использованы в любом из описанных здесь способов, которые в вариантах воплощения изобретения могут выполняться посредством таких процессоров или аппарата и/или с ними.
В этом описании и формуле изобретения были использованы термины "сопряженным" и/или "соединенный", наряду с производными от них словами. Следует понимать, что эти термины не подразумеваются в качестве синонимов друг другу. Скорее, в конкретных вариантах воплощения изобретения, термин "соединенный" может использоваться для того, чтобы указывать на то, что два или больше элементов находятся в непосредственном физическом или электрическом контакте друг с другом. Термин "сопряженный" может означать то, что два или больше элементов находятся в непосредственном физическом или электрическом контакте. Однако, термин "сопряженный" может также означать то, что два или больше элементов не находятся в непосредственном контакте друг с другом, но все-таки, тем не менее, содействуют друг другу или взаимодействуют друг с другом. Например, звено доступа к памяти может быть сопряжено с набором регистров и/или декодирующим звеном посредством одного или более промежуточных компонентов. На фигурах, для показа сопряжений используются стрелки.
В этом описании и формуле изобретения был использован термин "логика". В том значении, в котором он здесь используется, термин "логика" может включать в себя аппаратное обеспечение, микропрограммное обеспечение, программное обеспечение или разнообразные их сочетания. Примеры "логики" включают в себя интегральные схемы, прикладные специализированные интегральные схемы, аналоговые схемы, цифровые схемы, программируемые логические устройства, запоминающие устройства, включающие в себя команды, и так далее. В некоторых вариантах воплощения изобретения, реализованная аппаратными средствами логика может включать в себя транзисторы и/или вентили, потенциально, наряду с другими компонентами схем.
В приведенном выше описании, для того, чтобы обеспечить полное понимание вариантов воплощения изобретения, были изложены конкретные подробности. Однако, другие варианты воплощения изобретения могут быть осуществлены на практике без некоторых из этих конкретных подробностей. Объем изобретения не должен определяться по приведенным выше конкретным примерам, но только в соответствии с приводимой ниже формулой изобретения. В других случаях, хорошо известные схемы, конструкции, устройства и операции были показаны в форме блок-схем или без подробностей для того, чтобы избежать затруднения понимания описания. Там, где показаны и описаны множественные компоненты, в некоторых случаях эти множественные компоненты могут быть включены в один компонент. Там, где показан и описан единственный компонент, в некоторых случаях этот единственный компонент может быть разделен на два или большее количество компонентов.
Были описаны разнообразные операции и способы. Некоторые из этих способов были описаны в относительно базовой форме в блок-схемах алгоритмов, но операции, если требуется, могут быть добавлены в эти способы или удалены из них. В дополнение к этому, хотя на блок-схемах алгоритмов показан некоторый конкретный порядок операций, соответствующий приводимым в качестве примера вариантам воплощения изобретения, этот конкретный порядок приводится в качестве примера. В альтернативных вариантах воплощения изобретения, если требуется, операции могут выполняться в другом порядке, некоторые операции могут объединяться, некоторые операции могут совмещаться и так далее.
Некоторые операции могут быть выполнены посредством аппаратно реализованных компонентов, или могут быть воплощены в исполняемых машиной или исполняемых схемами командах, которые могут использоваться для того, чтобы заставлять машину, схему или аппаратно реализованный компонент (например, процессор, часть процессора, схему и так далее), программируемые посредством этих команд, выполнять эти операции, и/или чтобы приводить к тому, чтобы эти машина, схема или аппаратно реализованный компонент выполняли эти операции. Эти операции, если требуется, могут также быть выполнены посредством сочетания аппаратного обеспечения и программного обеспечения. Процессор, машина, схема или аппаратное обеспечение могут включать в себя специальные или особые схемы или другую логику (например, аппаратное обеспечение, потенциально объединяемое с микропрограммным обеспечением и/или программным обеспечением), способны функционировать таким образом, чтобы, в ответ на команду, исполнять и/или обрабатывать команду и сохранять результат.
Некоторые варианты воплощения изобретения включают в себя изготовленное изделие (например, компьютерный программный продукт), которое включает в себя машиночитаемый носитель информации. Этот носитель информации может включать в себя механизм, который предоставляет, например, хранит, информацию в форме, которая может быть считана машиной. Машиночитаемый носитель информации может предоставлять, или хранить на себе, команду или последовательность команд, которые, если и/или когда они исполняются машиной, способны функционировать таким образом, чтобы заставлять машину выполнять и/или приводят в результате к тому, что машина выполняет одну из раскрытых здесь операций, способов или технологий. Машиночитаемый носитель информации может предоставлять, например хранить, один или больше вариантов воплощения раскрытых здесь команд.
В некоторых вариантах воплощения изобретения, этот машиночитаемый носитель информации может включать в себя материальный и/или некратковременный машиночитаемый носитель информации. Например, этот материальный и/или некратковременный машиночитаемый носитель информации может включать в себя: гибкую дискету, оптический носитель информации, оптический диск, оптическое устройство хранения данных, CD-ROM (постоянное запоминающее устройство на компакт-диске), магнитный диск, магнитооптический диск, постоянное запоминающее устройство (ROM), программируемое постоянное запоминающее устройство (PROM), стираемое и программируемое постоянные запоминающее устройство (EPROM), электрически стираемое и программируемое постоянное запоминающее устройство (EEPROM), оперативное запоминающее устройство (RAM), статическое оперативное запоминающее устройство (SRAM), динамическое оперативное запоминающее устройство (DRAM), флэш-память, память с изменением фазы, материал для хранения данных с изменением фазы, энергонезависимую память, энергонезависимое устройство хранения данных, некратковременную память, некратковременное устройство хранения данных, или тому подобное. Некратковременный машиночитаемый носитель данных не состоит из кратковременного распространяемого сигнала. В другом варианте воплощения изобретения, машиночитаемый носитель информации может включать в себя кратковременную машиночитаемую среду связи, например, электрические, оптические, акустические или другие формы распространяемых сигналов, таких как несущих волн, инфракрасных сигналов, цифровых сигналов, или тому подобное.
Примеры подходящих машин включают в себя универсальные процессоры, специализированные процессоры, аппарат для обработки команд, цифровые логические схемы, интегральные схемы и тому подобное, но не в ограничиваются ими. Другие еще примеры подходящих машин включают в себя вычислительные устройства и другие электронные устройства, которые включают в себя такие процессоры, аппарат для обработки команд, цифровые логические схемы или интегральные схемы. Примеры таких вычислительных устройств и электронных устройств включают в себя: настольные компьютеры, переносные компьютеры, компьютеры типа "ноутбук", планшетные компьютеры, компьютеры "нетбук" (переносные компьютеры для работы в сети), "смартфоны" (мобильные телефоны, обладающие рядом функций компьютера), сотовые телефоны, серверы, сетевые устройства (например, маршрутизаторы или коммутаторы), мобильные Интернет-устройства (MID - устройства), универсальные проигрыватели, интеллектуальные телевизоры, сетевые приставки, телевизионные абонентские приставки и контроллеры для видеоигр, но не ограничиваются ими.
Ссылка повсюду в этом описании на "один вариант воплощения изобретения", "некоторый вариант воплощения изобретения", "один или более вариантов воплощения изобретения", "некоторые варианты воплощения изобретения", например, указывает на то, что некоторый конкретный признак может быть включен в осуществление изобретения на практике, но не обязательно должен быть туда включен. Аналогичным образом, в описании, в целях упрощения раскрытия и помощи в понимании различных аспектов изобретения, разнообразные признаки иногда группируются вместе в одном варианте воплощения изобретения, на одной Фигуре или в ее описании. Этот способ раскрытия, однако, не должен интерпретироваться как отражение того намерения, что изобретение требует больше признаков, чем явным образом заявляется в каждом пункте формулы изобретения. Напротив, как отражено в нижеследующей формуле изобретения, аспекты изобретения заключаются в менее чем всех признаках одного раскрытого варианта воплощения изобретения. Таким образом, формула изобретения, следующая детализированным его описанием, настоящим явно включается в состав этого детализированного описания, при этом каждый пункт формулы изобретения выступает самостоятельно в качестве отдельного варианта воплощения изобретения.
Примерные варианты осуществления изобретения
Нижеследующие примеры относятся к дополнительным вариантам воплощения изобретения. Особенности, содержащиеся в этих примерах, могут быть использованы где угодно в одном или более вариантах воплощения изобретения.
Пример 1 представляет собой процессор, который включает в себя некоторое множество N - разрядных регистров. Процессор также включает в себя декодирующее звено для того, чтобы принимать команду на доступ множественных регистров к памяти. Команда на доступ множественных регистров к памяти должна указывать ячейку памяти и должна указывать регистр. Процессор также включает в себя звено доступа к памяти, сопряженное с декодирующим звеном и с этим множеством N - разрядных регистров. Звено доступа к памяти должно, в ответ на команду на доступ множественных регистров к памяти, выполнять операцию доступа множественных регистров к памяти. В операцию доступа множественных регистров к памяти должны быть вовлечены N - разрядные данные, в каждом из этого множества N - разрядных регистров, которые должны содержать указанный регистр. В операцию доступа множественных регистров к памяти должны также быть вовлечены различные соответствующие N - разрядные порции в M×N - разрядной строке памяти, которая (строка) должна соответствовать указанной ячейке памяти. Если требуется, суммарное количество разрядов N - разрядных данных во множестве N - разрядных регистров, подлежащих вовлечению в операцию доступа множественных регистров к памяти, должно составлять по меньшей мере половину от M×N разрядов строки памяти.
Пример 2 включает в себя процессор по Примеру 1 и, если требуется, в котором звено доступа к памяти должно выполнять операцию, в которой суммарное количество разрядов N - разрядных данных во множестве N - разрядных регистров, подлежащих вовлечению в операцию доступа множественных регистров к памяти, должно составлять все M×N - разрядов строки памяти.
Пример 3 включает в себя процессор по Примеру 1 и, если требуется, в котором звено доступа к памяти должно выполнять эту операцию, в которой суммарное количество разрядов N - разрядных данных во множестве N - разрядных регистров, подлежащих вовлечению в операцию доступа множественных регистров к памяти, должно составлять по меньшей мере 256 разрядов.
Пример 4 включает в себя процессор по Примеру 3 и, если требуется, в котором звено доступа к памяти должно выполнять эту операцию, в которой суммарное количество разрядов N - разрядных данных во множестве N - разрядных регистров, подлежащих вовлечению в операцию доступа множественных регистров к памяти, должно составлять по меньшей мере 512 разрядов.
Пример 5 включает в себя процессор по любому предшествующему примеру и, если требуется, в котором звено доступа к памяти должно выполнять эту операцию, в которую должны быть вовлечены N - разрядные данные в каждом из по меньшей мере трех N - разрядных регистров.
Пример 6 включает в себя процессор по любому предшествующему примеру и, если требуется, в котором звено доступа к памяти должно выполнять эту операцию, в которую должны быть вовлечены N - разрядные данные в каждом из по меньшей мере четырех N - разрядных регистров.
Пример 7 включает в себя процессор по Примеру 1 и, если требуется, в котором звено доступа к памяти должно выполнять эту операцию, в которую должны быть вовлечены 128 - разрядные данные, в каждом из по меньшей мере четырех 128 - разрядных регистров, и различные соответствующие 128 - разрядные порции строки памяти, которая (строка) должна иметь по меньшей мере 512 разрядов.
Пример 8 включает в себя процессор по Примеру 1 и, если требуется, в котором звено доступа к памяти должно выполнять эту операцию, в которую должны быть вовлечены 256 - разрядные данные, в каждом из по меньшей мере двух 256 - разрядных регистров, и различные соответствующие 256 - разрядные порции строки памяти, которая (строка) должна иметь по меньшей мере 512 разрядов.
Пример 9 включает в себя процессор по любому из Примеров 1-8 и, если требуется, в котором процессор включает в себя процессор для вычислений с сокращенным набором команд (RISC - процессор), и в котором команда на доступ множественных регистров к памяти включает в себя команду на загрузку множественных регистров из памяти, и в котором звено доступа к памяти должно, в ответ на команду на загрузку множественных регистров из памяти, загружать различные N - разрядные порции из M×N - разрядной строки памяти в каждый из этого множества N - разрядных регистров. Если требуется, суммарное количество разрядов различных N - разрядных порций, подлежащих загрузке в это множество N - разрядных регистров из M×N - разрядной строки памяти, должно составлять по меньшей мере половину от M×N разрядов строки памяти.
Пример 10 включает в себя процессор по Примеру 9 и, если требуется, в котором звено доступа к памяти должно загружать различные 128 - разрядные порции строки памяти, которая (строка) имеет по меньшей мере 512 разрядов, в каждый из по меньшей мере четырех 128 - разрядных регистров.
Пример 11 включает в себя процессор по Примеру 9 и, если требуется, в котором звено доступа к памяти должно загружать различные 256 - разрядные порции строки памяти, которая (строка) имеет по меньшей мере 512 разрядов, в каждый из по меньшей мере двух 256 - разрядных регистров.
Пример 12 включает в себя процессор по любому из Примеров 1-8 и, если требуется, в котором процессор включает в себя процессор для вычислений с сокращенным набором команд (RISC - процессор), и в котором команда на доступ множественных регистров к памяти включает в себя команду на запись из множественных регистров в память, и в котором звено доступа к памяти должно, в ответ на команду на запись из множественных регистров в память, записывать N - разрядные данные, из каждого из этого множества N - разрядных регистров, в различные соответствующие N - разрядные порции в M×N - разрядной строке памяти. Если требуется, суммарное количество разрядов N - разрядных данных, подлежащих записи из этого множества N - разрядных регистров в M×N - разрядную строку памяти, должно составлять по меньшей мере половину от M×N разрядов строки памяти. Если требуется, эта по меньшей мере половина от M×N разрядов строки памяти составляет по меньшей мере 256 разрядов.
Пример 13 включает в себя процессор по любому из Примеров 1-8 и, если требуется, в котором команда на доступ множественных регистров к памяти должна явным образом специфицировать каждый из этого множества регистров.
Пример 14 включает в себя процессор по любого из Примеров 1-8 и, если требуется, в котором команда на доступ множественных регистров к памяти должна специфицировать количество этого множества регистров.
Пример 15 представляет собой способ, выполняемый процессором, включающий в себя этап, на котором принимают команду на доступ множественных регистров к памяти. Команда на доступ множественных регистров к памяти указывает ячейку памяти и указание регистра. Способ включает в себя этап, на котором в ответ на команду на доступ множественных регистров к памяти выполняют операцию доступа множественных регистров к памяти. В эту операцию вовлечены N - разрядные данные, в каждом из некоторого множества N - разрядных регистров, которые содержат указанный регистр. В эту операцию также вовлечены различные соответствующие N - разрядные порции в M×N - разрядной строке памяти, которая (строка) соответствует указанной ячейке памяти. Если требуется, суммарное количество разрядов N - разрядных данных во множестве N - разрядных регистров, вовлеченных в операцию доступа множественных регистров к памяти, составляет по меньшей мере половину от M×N разрядов строки памяти.
Пример 16 включает в себя способ по Примеру 15 и, если требуется, в котором суммарное количество разрядов N - разрядных данных во множестве N - разрядных регистров, вовлеченных в операцию доступа множественных регистров к памяти, составляет все M×N - разрядов строки памяти.
Пример 17 включает в себя способ по Примеру 15 и, если требуется, в котором суммарное количество разрядов N - разрядных данных во множестве N - разрядных регистров, вовлеченных в операцию доступа множественных регистров к памяти, составляет по меньшей мере 256 разрядов.
Пример 18 включает в себя способ по любому предшествующему примеру и, если требуется, в котором этап выполнения включает в себя этап, на котором выполняют эту операцию, в которую вовлечены N - разрядные данные в каждом из по меньшей мере четырех N - разрядных регистров.
Пример 19 включает в себя способ по Примеру 15 и, если требуется, в котором этап выполнения включает в себя этап, на котором выполняют эту операцию, в которую вовлечены 128 - разрядные данные, в каждом из по меньшей мере четырех 128 - разрядных регистров, и различные соответствующие 128 - разрядные порции строки памяти, которая (строка) имеет по меньшей мере 512 разрядов.
Пример 20 включает в себя способ по Примеру 15 и, если требуется, в котором этап выполнения включает в себя этап, на котором выполняют эту операцию, в которую вовлечены 256 - разрядные данные, в каждом из по меньшей мере двух 256 - разрядных регистров, и различные соответствующие 256 - разрядные порции строки памяти, которая (строка) имеет по меньшей мере 512 разрядов.
Пример 21 включает в себя способ по любому из Примеров 15-20 и, если требуется, в котором этап приема включает в себя этап, на котором принимают команду на загрузку множественных регистров из памяти, и в котором этап выполнения включает в себя этап, на котором в ответ на команду на загрузку множественных регистров из памяти, загружают различные N - разрядные порции из M×N - разрядной строки памяти в каждый из этого множества N - разрядных регистров. Если требуется, суммарное количество разрядов различных N - разрядных порций, загружаемых в это множество N - разрядных регистров из M×N - разрядной строки памяти, составляет по меньшей мере половину от M×N разрядов строки памяти.
Пример 22 включает в себя способ по Примеру 21 и, если требуется, в котором этап выполнения включает в себя этап, на котором загружают различные 128 - разрядные порции строки памяти, которая (строка) имеет по меньшей мере 512 разрядов, в каждый из по меньшей мере четырех 128 - разрядных регистров.
Пример 23 включает в себя способ по Примеру 21 и, если требуется, в котором этап выполнения включает в себя этап, на котором загружают различные 256 - разрядные порции строки памяти, которая (строка) имеет по меньшей мере 512 разрядов, в каждый из по меньшей мере двух 256 - разрядных регистров.
Пример 24 включает в себя способ по любому из Примеров 15-20 и, если требуется, в котором этап приема включает в себя этап, на котором принимают команду на запись из множественных регистров в память, и в котором этап выполнения включает в себя этап, на котором, в ответ на команду на запись из множественных регистров в память, записывают N - разрядные данные, из каждого из этого множества N - разрядных регистров, в различные соответствующие N - разрядные порции в M×N - разрядной строке памяти. Если требуется, суммарное количество разрядов N - разрядных данных, записываемых из этого множества N - разрядных регистров в M×N - разрядную строку памяти, составляет по меньшей мере половину от M×N разрядов строки памяти. Если требуется, эта по меньшей мере половина от M×N - разрядов строки памяти составляет по меньшей мере 256 разрядов.
Пример 25 представляет собой систему для обработки команд, которая включает в себя межсоединение, динамическое оперативное запоминающее устройство (DRAM), сопряженное с этим межсоединением, и процессор, сопряженный с этим межсоединением. Процессор, в ответ на команду на доступ множественных регистров к памяти, которая должна указывать ячейку памяти в этом динамическом оперативном запоминающем устройстве и регистр, должен выполнять операцию доступа множественных регистров к памяти. В эту операцию должны быть вовлечены N - разрядные данные, в каждом из некоторого множества N - разрядных регистров этого процессора, которые должны содержать указанный регистр. В эту операцию должны также быть вовлечены различные соответствующие N - разрядные порции в M×N - разрядной строке этого динамического оперативного запоминающего устройства, которая должна соответствовать указанной ячейке памяти. Если требуется, суммарное количество разрядов N - разрядных данных во множестве N - разрядных регистров, подлежащих вовлечению в операцию доступа множественных регистров к памяти, должно составлять по меньшей мере половину от M×N разрядов строки памяти.
Пример 26 включает в себя систему по Примеру 25 и, если требуется, в которой суммарное количество разрядов N - разрядных данных во множестве N - разрядных регистров, подлежащих вовлечению в операцию доступа множественных регистров к памяти, должно составлять все M×N - разрядов строки памяти, которая (строка) имеет по меньшей мере 512 разрядов.
Пример 27 представляет собой изготовленное изделие, которое включает в себя некратковременный машиночитаемый носитель информации, хранящий команду на доступ множественных регистров к памяти. Команда на доступ множественных регистров к памяти должна указывать ячейку памяти и регистр. Команда на доступ множественных регистров к памяти, если она обрабатывается машиной, способна функционировать таким образом, чтобы заставлять машину выполнять операции, включающие в себя выполнение операции доступа множественных регистров к памяти, в которую (операцию) вовлечены N - разрядные данные, в каждом из некоторого множества N - разрядных регистров, которые должны содержать указанный регистр. В эту операцию должна также быть вовлечены различные соответствующие N - разрядные порции в M×N - разрядной строке памяти, которая (строка) должна соответствовать указанной ячейке памяти. Если требуется, суммарное количество разрядов N - разрядных данных во множестве N - разрядных регистров, вовлеченных в операцию доступа множественных регистров к памяти, составляет по меньшей мере половину от M×N разрядов строки памяти.
Пример 28 включает в себя изготовленное изделие по Примеру 27 и, если требуется, в котором суммарное количество разрядов N - разрядных данных во множестве N - разрядных регистров, подлежащих вовлечению в операцию доступа множественных регистров к памяти, должно составлять все M×N - разрядов строки памяти, которая (строка) имеет по меньшей мере 512 разрядов.
Пример 29 представляет собой процессор, который включает в себя средство для приема команды на доступ множественных регистров к памяти. Команда на доступ множественных регистров к памяти должна указывать ячейку памяти и указание регистра. Процессор также включает в себя средство для выполнения операции доступа множественных регистров к памяти, в ответ на команду на доступ множественных регистров к памяти. В эту операцию должны быть вовлечены N - разрядные данные, в каждом из некоторого множества N - разрядных регистров, которые содержат указанный регистр. В эту операцию должны также быть вовлечены различные соответствующие N - разрядные порции в M×N - разрядной строке памяти, которая (строка) соответствует указанной ячейке памяти. Если требуется, суммарное количество разрядов N - разрядных данных во множестве N - разрядных регистров, вовлеченных в операцию доступа множественных регистров к памяти, составляет по меньшей мере половину от M×N разрядов строки памяти.
Пример 30 включает в себя процессор по Примеру 29 и, если требуется, в котором суммарное количество разрядов N - разрядных данных во множестве N - разрядных регистров, вовлеченных в операцию доступа множественных регистров к памяти, составляет все M×N - разрядов строки памяти.
Пример 31 представляет собой машиночитаемый носитель информации, хранящий команду, которая, если она исполняется машиной, должна заставлять машину выполнять способ по любому из Примеров 15-24.
Пример 32 представляет собой процессор для выполнения способа по любому из Примеров 15-24.
Пример 33 представляет собой процессор, включающий в себя средства для выполнения способа по любому из Примеров 15-24.
Пример 34 представляет собой процессор, включающий в себя интегральные схемы, и/или логику, и/или звенья, и/или компоненты, и/или модули или любое их сочетание для того, чтобы выполнять способы по любому из Примеров 15-24.
Пример 35 представляет собой вычислительную систему, включающую в себя процессор и, если требуется, включающую в себя динамическое оперативное запоминающее устройство (DRAM), причем вычислительная система должна выполнять способы по любому из Примеров 15-24.
Пример 36 представляет собой процессор для того, чтобы выполнять способ или операцию, по существу, так, как здесь описано.
Пример 37 представляет собой процессор, включающий в себя средства для выполнения способа или операции, по существу, так, как здесь описано.
Пример 38 представляет собой процессор для того, чтобы выполнять команду, по существу, так, как здесь описано.
Пример 39 представляет собой процессор, включающий в себя средства для выполнения операций команды, по существу, так, как здесь описано.