Системы и способы отслеживания флага в операциях устранения перемещения
Иллюстрации
Показать всеИзобретение относится к отслеживания флага статуса процессора при манипуляции с данными, в которых предусматривается устранение перемещения в виде копирования регистра без исполнительного модуля. Технический результат – улучшение общих рабочих характеристик процессора. Для этого имеется первая структура данных, включающая в себя множество значений физического регистра; вторая структура данных, включающая в себя множество элементов ссылки на указатели первой структуры данных; третья структура данных, включающая в себя множество наборов устранения перемещения, где каждый из наборов устранения перемещения содержит два или более битов, представляющих два или более логических регистра данных; третья структура данных дополнительно содержит по меньшей мере один бит, ассоциированный с каждым набором устранения перемещения, и по меньшей мере один бит, представляющий собой один или более логических регистров флага; четвертая структура данных, включающая в себя идентификатор регистра данных, совместно использующего элемент первой структуры данных с регистром флага; и логическая схема устранения перемещения, выполненная с возможностью выполнения операции устранения перемещения. 3 н. и 14 з.п. ф-лы, 24 ил.
Реферат
Область техники, к которой относится изобретение
Настоящее раскрытие, в общем, относится к вычислительным системам, и, в частности, относится к улучшению эффективности выполнения операций с манипуляцией данными компьютерными системами.
Уровень техники
Операции манипуляции с данными представляют существенную часть операций, выполняемых процессором. Следовательно, оптимизация их выполнения может улучшать общие рабочие характеристики процессора.
Настоящее раскрытие представлено в качестве примера, а не для ограничения, и его будет легче понять при ссылке на следующее подробное описание изобретения, которое следует рассматривать совместно с чертежами, на которых:
на фиг. 1 представлена схема компонентов высокого уровня примера компьютерной системы в соответствии с одним или более аспектами настоящего раскрытия;
на фиг. 2 представлена блок-схема процессора в соответствии с одним или более аспектами настоящего раскрытия;
на фиг. 3a-3b схематично иллюстрируются элементы микроархитектуры процессора в соответствии с одним или более аспектами настоящего раскрытия;
на фиг. 4 схематично иллюстрируются ряд аспектов примерного процессора и других компонентов компьютерной системы 100 по фиг. 1 в соответствии с одним или более аспектами настоящего раскрытия;
на фиг. 5 схематично иллюстрируется пример выполнения операции перемещения с использованием замещения регистра, в соответствии с одним или более аспектами настоящего раскрытия;
на фиг. 6a-6b схематично иллюстрируются примеры структуры данных модуля отслеживания флага, в соответствии с одним или более аспектами настоящего раскрытия;
на фиг. 7a-7c схематично иллюстрируются несколько примеров, используя таблицу множественной инстанциации (MIT) для отслеживания входа файла физического регистра (PRF), в соответствии с одним или более аспектами настоящего раскрытия;
на фиг. 8a-8c схематично иллюстрируется один пример использования структуры данных модуля отслеживания флага для отслеживания входа в MIT, в соответствии с одним или более аспектами настоящего раскрытия;
на фиг. 9a-9d и 10a-10d схематично иллюстрируются примеры логики отслеживания флага в операциях устранения перемещения в соответствии с одним или более аспектами настоящего раскрытия;
на фиг. 11 представлена блок-схема последовательности операций примерного способа для отслеживания флага в операциях устранения перемещения в соответствии с одним или более аспектами настоящего раскрытия; и
на фиг. 12 представлена блок-схема примерной компьютерной системы в соответствии с одним или более аспектами настоящего раскрытия.
Осуществление изобретения
Здесь описаны компьютерная система и соответствующие технологии для отслеживания флага в операциях манипуляций с данными, включающих в себя устранение перемещения. “Устранение перемещения” здесь должно означать выполнение операции копирования регистра без использования исполнительного модуля, для улучшения эффективности выполнения.
В некоторых вариантах осуществления устранение перемещения может быть воплощено путем замещения регистра: первая структура данных, называемая файлом физического регистра (PRF), может использоваться для сохранения значений физического регистра и вторая структура данных, называемая таблицей замещения регистра (RAT), может использоваться для сохранения указателей, отображающих идентификаторы логического регистра на входы PRF. Замещение регистра позволяет выполнять определенные инструкции путем модификации одного или более указателей в RAT, без передачи этих инструкций в исполнительные модули. Примеры таких инструкций включают в себя инструкции обнуления регистра (такие как, например, XOR, AX, AX) и инструкции копирования регистра (такие как инструкции MOV). Поскольку инструкция копирования регистра не создает новое значение, исходный указатель регистра может быть скопирован в указатель назначения регистра в RAT, таким образом, что для инструкции может не потребоваться использовать исполнительный модуль и другой вход PRF. Эта обработка называется “устранением перемещения”, поскольку инструкция перемещения устраняется из потока, передаваемого в исполнительные модули.
Целочисленная инструкция может модифицировать не только значение места назначения регистра, но также один или более флагов статуса процессора. Для сохранения значения флага каждый вход PRF может включать в себя, вместе с полем для значения регистра данных, одно или более полей для значений флага.
Может потребоваться отслеживание использование входов таблицы PRF физическими регистрами и флагами для определения, когда вход PRF может быть высвобожден для использования новой инструкцией. Ниже здесь описаны системы и способы для эффективного отслеживания флага в операциях устранения перемещения.
Различные аспекты упомянутых выше способов и систем описаны подробно здесь ниже в виде примеров, а не для ограничений.
В следующем описании представлены различные конкретные детали, такие как примеры определенных типов процессоров и конфигураций систем, конкретные структуры аппаратных средств, конкретные детали архитектуры и микро-архитектуры, конкретные конфигурации регистра, конкретные типы инструкций, конкретные компоненты системы, конкретные измерения/высоты, конкретные каскады процессорного конвейера и операции, и т.д., для обеспечения полного понимания настоящего изобретения. Однако, для специалиста в данной области техники будет понятно, что эти конкретные детали не обязательно должны использоваться для выполнения на практике настоящего изобретения. В других случаях хорошо известные компоненты или способы, такие как конкретная и альтернативная архитектура процессора, конкретные логические схемы/коды для описанных алгоритмов, конкретный код встроенного программного обеспечения, конкретная операция взаимного соединения, конкретные логические конфигурации, конкретные технологии изготовления и материалы, конкретные варианты воплощения компилятора, конкретное выражение алгоритмов в коде, конкретная технологии/логика отключения питания и выполнения логических операций, и другие конкретные детали операций компьютерной системы не были подробно описаны для исключения ненужного усложнения настоящего изобретения.
Хотя следующие варианты осуществления описаны со ссылкой на процессор, другие варианты осуществления применимы для других типов интегральных микросхем и логических устройств. Аналогичные технологии и описания вариантов осуществления настоящего изобретения могут применяться для других типов схем или полупроводниковых устройств, работа которых может быть улучшена в результате более высокой пропускной способности конвейера и улучшенных рабочих характеристик. Описания вариантов осуществления настоящего изобретения применимы для любого процессора или устройства, в которых выполняются манипуляции с данными. Однако настоящее изобретение не ограничено процессорами или устройствами, которые выполняют операции с данными длиной 512 битов, 256 битов, 128 битов, 64 бита, 32 бита или 16 битов, и могут быть применено в любом процессоре и устройстве, в котором выполняется манипуляция или администрирование данными. Кроме того, в следующем описании представлены примеры, и на приложенных чертежах показаны различные примеры с целью иллюстрации. Однако эти примеры не следует рассматривать в ограничительном смысле, поскольку они просто предназначены для предоставления примеров вариантов осуществления настоящего изобретения, а не для предоставления исчерпывающего списка всех возможных выполнений вариантов осуществления настоящего изобретения.
Хотя в представленных ниже примерах описана обработка и распределение инструкций в контексте исполнительных модулей и логических схем, в другие варианты осуществления настоящего изобретения могут быть выполнены с использованием данных или инструкций, сохраненных на считываемом устройством вещественном носителе информации, которые при их выполнении устройством обеспечивают выполнение устройством функций, соответствующих, по меньшей мере, одному варианту осуществления изобретения. В одном варианте осуществления функции, ассоциированные с вариантами осуществления настоящего изобретения, воплощены в виде используемых устройством инструкций. Инструкции могут использоваться для обеспечения выполнения процессором общего назначения или специального назначения, который запрограммирован такими инструкциями, этапов настоящего изобретения. Варианты осуществления настоящего изобретения могут быть предусмотрены, как компьютерный программный продукт или программное обеспечение, которое может включать в себя считываемый устройством или считываемый компьютером носитель информации, на котором содержатся инструкции, которые могут использоваться для программирования компьютера (или других электронных устройств), для выполнения одной или более операций, в соответствии с вариантами осуществления настоящего изобретения. В качестве альтернативы, операции вариантов осуществления настоящего изобретения могут быть выполнены конкретными аппаратными компонентами, которые содержат логическую схему с фиксированной функцией для выполнения операций, или используют любую комбинацию программируемых компьютерных компонентов и аппаратных компонентов с фиксированной функцией.
Инструкции, используемые для программирования логики для выполнения вариантов осуществления изобретения могут быть сохранены в запоминающем устройстве, в системе, такой как DRAM, кэш, памяти типа флэш или в другом накопителе. Кроме того, инструкции могут быть распределены через сеть или используя другой считываемый компьютером носитель информации. Таким образом, считываемый устройством носитель информации может включать в себя любой механизм для сохранения или передачи информации в форме, считываемой устройством (например, компьютером), но не ограничен гибкими дисками, оптическими дисками, компакт-диском, постоянным запоминающим устройством (CD-ROM), и магнитооптическими дисками, постоянным запоминающим устройством (ROM), оперативным запоминающим устройством (RAM), стираемым программируемым постоянным запоминающим устройством (EPROM), электрически стираемым программируемым постоянным запоминающим устройством (EEPROM), магнитными или оптическими картами, памятью флэш или вещественным, считываемым устройством накопителем, используемым при передаче информации через Интернет, используя электрические, оптические, акустические или другие формы распространяемых сигналов (например, несущие волны, инфракрасные сигналы, цифровые сигналы и т.д.). В соответствии с этим, считываемый компьютером носитель информации включает в себя любой тип вещественного считываемого устройством носителя информации, пригодного для сохранения или передачи электронных инструкций или информации в форме, считываемой устройством (например, компьютером).
“Процессор” здесь относится к устройству, выполненному с возможностью выполнения инструкций, кодирования арифметических, логических операций или операций I/O. В одном иллюстративном примере процессор может следовать архитектурной модели фон Неймана и может включать в себя арифметический-логический модуль (ALU), модуль управления и множество регистров. В дополнительном аспекте процессор может включать в себя одно или более ядер процессора и, следовательно, может представлять собой одноядерный процессор, который обычно выполнен с возможностью обработки одного конвейера инструкций, или многоядерный процессор, который может одновременно обрабатывать множество конвейеров инструкций. В другом аспекте процессор может быть воплощен, как одиночная интегральная схема, две или более интегральных схемы, или может представлять собой компонент многокристального модуля (например, в котором отдельные кристаллы микропроцессора включены в один пакет интегральной схемы и, следовательно, совместно используют одно гнездо).
На фиг. 1 представлена схема компонента высокого уровня одного примера компьютерной системы в соответствии с одним или более аспектами настоящего раскрытия. Компьютерная система 100 может включать в себя процессор 102, в котором используются исполнительные модули, включающие в себя логику для выполнения алгоритмов для обработки данных в соответствии с вариантом осуществления, описанным здесь. Система 100 может быть представлена процессорными системами на основе микропроцессоров PENTIUM™, PENTIUM 4™, Xeon™, Itanium, XScale™ и/или StrongARM™, представляемых компанией Intel Corporation Санта-Клара, Калифорния, хотя другие системы (включая в себя PC, имеющие другие микропроцессоры, инженерные рабочие станции, телевизионные приставки и т.п.) также могут использоваться. В одном варианте осуществления, примерная система 100 выполняет версию операционной системы WINDOWS™, поставляемую компанией Microsoft Corporation Редмонд, Вашингтон, хотя также могут использоваться другие операционные системы (например, UNIX и Linux), встроенное программное обеспечение и/или графические интерфейсы пользователя.
Таким образом, варианты осуществления настоящего изобретения не ограничены какой-либо конкретной комбинацией аппаратных схем и программного обеспечения.
Варианты осуществления не ограничены компьютерными системами. Альтернативные варианты осуществления настоящего изобретения могут использоваться в других устройствах, таких как переносные устройства и встраиваемые приложения. Некоторые примеры переносных устройств включают в себя сотовые телефоны, устройства протокола Интернет, цифровые камеры, карманные персональные компьютеры (PDA) и портативные ПК. Встраиваемые приложения могут включать в себя микроконтроллер, цифровой сигнальный процессор (DSP), систему на кристалле, сетевые компьютеры (NetPC), телевизионные приставки, сетевые концентраторы, коммутаторы глобальной вычислительной сети (WAN) или любую другую систему, которая может выполнять одну или более инструкций в соответствии с, по меньшей мере, одним вариантом осуществления.
В этом представленном варианте осуществления процессор 102 включает в себя один или более исполнительных модулей 108 для воплощения алгоритма, который предназначен для выполнения, по меньшей мере, одной инструкции. Один вариант осуществления может быть описан в контексте настольного компьютера или серверной системы с одним процессором, но альтернативные варианты осуществления могут быть включены в многопроцессорную систему. Система 100 представляет собой пример архитектуры системы “концентратора”. Компьютерная система 100 включает в себя процессор 102 для обработки сигналов данных. Процессор 102, в качестве одного иллюстративного примера, включает в себя микропроцессор компьютера со сложным набором команд (CISC), микропроцессор архитектуры с сокращенным набором команд (RISC), микропроцессор со словом инструкции очень большой длины (VLIW), процессор, воплощающий комбинацию набора инструкций, или любое другое устройство процессора, такое как, например, цифровой сигнальный процессор. Процессор 102 соединен с шиной 110 процессора, по которой передают сигналы данных между процессором 102 и другими компонентами в системе 100. Элементы системы 100 (например, графический ускоритель 112, концентратор 116 контроллера памяти, память 120, концентратор 124 контроллера I/O, приемопередатчик 126 беспроводной передачи данных, флэш-BIOS 128, сетевой контроллер 134, аудиоконтроллер 136, последовательный порт 138 расширения, I/O контроллер 140 и т.д.) выполняют свои обычные функции, которые хорошо известны специалисту в данной области техники.
В одном варианте осуществления процессор 102 включает в себя внутренний кэш 104 уровня 1 (L1). В зависимости от архитектуры процессор 102 может иметь один внутренний кэш или множество уровней внутреннего кэш. Другие варианты осуществления включают в себя комбинацию, как внутреннего, так и внешнего кэш, в зависимости от конкретного воплощения и потребностей. Файл 106 регистра предназначен для сохранения различных типов данных в различных регистрах, включая в себя регистры для целых чисел, регистры для чисел с плавающей точкой, векторные регистры, сгруппированные регистры, теневые регистры, регистры контрольных точек, регистры статуса и регистр указателя инструкций.
Исполнительный модуль 108, включающий в себя логику для выполнения операций с целыми числами и с плавающей точкой, также находится в процессоре 102. Процессор 102, в одном варианте осуществления, включает в себя ROM микрокода (ucode), для сохранения микрокода, который при его исполнении должен выполнять алгоритмы для определенных макроинструкций или обрабатывать сложные сценарии. Здесь микрокод потенциально может быть обновлен для обработки логических ошибок/исправлений для процессора 102. В одном варианте осуществления исполнительный модуль 108 включает в себя логику для обработки пакетного набора 109 инструкций. Благодаря включению пакетного набора 109 инструкций в набор инструкций процессора 102 общего назначения, вместе с соответствующей схемой для выполнения этих инструкций, операции, используемые множеством мультимедийных приложений, могут быть выполнены, используя пакетные данные в процессоре 102 общего назначения. Таким образом, множество мультимедийных приложений ускоряются и выполняются более эффективно, используя полную ширину шины данных процессора для выполнения операций с пакетными данными. Это потенциально устраняет необходимость передачи меньших модулей данных через шину данных процессора для выполнения одной или более операций по одному элементу данных одновременно.
Альтернативные варианты осуществления исполнительного модуля 108 также могут использоваться в микроконтроллерах, встроенных процессорах, графических устройствах, DSP и в других типах логических схем. Система 100 включает в себя запоминающее устройство 120. Запоминающее устройство 120 включает в себя динамическое оперативное запоминающее устройство (DRAM), статическое оперативное запоминающее устройство (SRAM), устройство памяти флэш или другое запоминающее устройство. Запоминающее устройство 120 содержит инструкции и/или данные, представленные сигналами данных, которые должны быть выполнены процессором 102.
Системная логическая микросхема 116 соединена с шиной 110 процессора и запоминающим устройством 120. Системная логическая микросхема 116 в представленном варианте осуществления представляет собой концентратор контроллера памяти (МСН). Процессор 102 может связываться с МСН 116 через шину 110 процессора. МСН 116 обеспечивает канал 118 передачи памяти большой ширины для запоминающего устройства 120, для сохранения инструкций и данных и для сохранения графических команд, данных и текстур. МСН 116 предназначен для направления сигналов данных между процессором 102, запоминающим устройством 120 и другими компонентами в системе 100 и для соединения через мостики сигналов данных между шиной ПО процессора, запоминающим устройством 120 и системным I/O 122. В некоторых вариантах осуществления системная логическая микросхема 116 может обеспечивать графический порт для соединения с графическим контроллером 112. МСН 116 соединен с запоминающим устройством 120 через интерфейс 118 памяти. Графическая карта 112 соединена с МСН 116 через взаимное соединение 114 ускоренного графического порта (AGP).
В системе 100 используется собственная шина 122 интерфейса концентратора для соединения МСН 116 с концентратором контроллера I/O (ICH) 130. ICH 130 обеспечивает непосредственное соединение с некоторыми устройствами I/O через локальную шину I/O. Локальная шина I/O представляет собой высокоскоростную шину I/O для соединения периферийных устройств с запоминающим устройством 120, набором микросхем и процессором 102. Некоторые примеры представляют собой аудиоконтроллер, концентратор (флэш-BIOS) 128 встроенного программного обеспечения, беспроводный приемопередатчик 126, накопитель 124 данных, контроллер унаследованного I/O, содержащий интерфейсы для ввода данных пользователем и клавиатуры, последовательный порт расширения, такой как универсальная последовательная шина (USB), и сетевой контроллер 134. Устройство 124 сохранения данных может содержать привод жесткого диска, привод гибкого диска, устройство CD-ROM, устройство памяти флэш или другое устройство хранения большой емкости.
В другом варианте осуществления системы инструкция в соответствии с одним вариантом осуществления может использоваться с системой на микросхеме. В одном варианте осуществления система на микросхеме содержит процессор и запоминающее устройство. Запоминающее устройство для одной такой системы представляет собой запоминающее устройство флэш. Запоминающее устройство флэш может быть размещено на том же кристалле, что и процессор и другие компоненты системы. Кроме того, другие логические блоки, такие как контроллер памяти или графический контроллер, также могут быть размещены в системе на кристалле.
На фиг. 2 показана блок-схема микроархитектуры для процессора 200, которая включает в себя логические схемы для выполнения инструкций в соответствии с одним вариантом осуществления настоящего изобретения. В некоторых вариантах осуществления инструкция, в соответствии с одним вариантом осуществления, может быть воплощена для выполнения операций с элементами данных, имеющими размер байт, слово, двойное слово, учетверенное слово и т.д., а также типы данных, такие как целое число с одиночной и двойной точностью, и типы данных с плавающей точкой. В одном варианте осуществления входной интерфейс 201, работающий по порядку, представляет собой часть процессора 200, который производит выборки инструкций для исполнения и подготавливает их для более позднего использования в конвейере процессора. Входной интерфейс 201 может включать в себя несколько модулей. В одном варианте осуществления модуль 226 предварительного отбора инструкций выбирает инструкции из запоминающего устройства и подает их в декодер 228 инструкции, который по очереди декодирует или интерпретирует их. Например, в одном варианте осуществления, декодер декодирует принятую инструкцию в одну или более операций, называемых “микроинструкциями” или “микрооперациями” (также называются uops), которые может выполнять устройство. В других вариантах осуществления декодер анализирует инструкцию, разбирая ее на коды операций и соответствующие данные, и поля управления, которые используются микроархитектурой для выполнения операций в соответствии с одним вариантом осуществления. В одном варианте осуществления кэш 230 трассы принимает декодированные микрооперации и собирает их в упорядоченную последовательность программ или трассы в очереди 234 микроопераций для выполнения. Когда кэш 230 трассы сталкивается со сложной инструкцией, ROM 232 микрокода предоставляет микрооперации, необходимые для выполнения операции.
Некоторые инструкции преобразуют в одиночные микрооперации, в то время как для других требуется несколько микроопераций для завершения всей операции. В одном варианте осуществления, если более чем четыре микрооперации необходимы для выполнения инструкции, декодер 228 обращается к ROM 232 микрокода для выполнения инструкции. В одном варианте осуществления инструкция может быть декодирована в малое количество микроопераций для обработки в декодере 228 инструкции. В другом варианте осуществления инструкция может быть сохранена в ROM 232 микрокода, в случае, когда множество микроопераций требуется для выполнения операции. Кэш 230 трассы обращается к программируемому логическому массиву (PLA) точки входа для определения правильного указателя на микроинструкции, для считывания последовательности микрокода, для выполнения одной или более инструкций в соответствии с одним вариантом осуществления из ROM 232 микрокода. После окончания ROM 232 микрокода упорядочивания микроопераций для инструкции, внешний интерфейс 201 устройства возобновляет выборку микрооперации из кэш 230 трассы.
Исполнительный механизм 203, работающий не по порядку, используется там, где инструкции подготавливают для выполнения. Исполнительная логическая схема, работающая не по порядку, имеет множество буферов для сглаживания и изменения порядка потока инструкций для оптимизации рабочих характеристик по мере того, как они поступают в конвейер, и планируется их выполнение. Логика распределения выделяет машинные буферы и ресурсы для каждой микрооперации, для которой требуется выполнение. Логика замещения регистра отображает логические регистры на входы в файле регистра. Распределитель также выделяет вход для каждой uop в одной из двух очередей uop, одной или более операций с памятью и одной или более операций, не связанных с памятью, перед планировщиками инструкции: планировщик памяти, быстрый планировщик 202, планировщик 204 медленной/общей обработки с плавающей точкой, и простой планировщик 206 с плавающей точкой. Планировщики 202, 204, 206 uop определяют, когда uop готовы для выполнения, на основе готовности зависящих от них источников операнда входного регистра и доступности ресурсов выполнения, которые требуются для завершения операции uop. Быстрый планировщик 202 в одном варианте осуществления может планировать в каждой половине основного цикла тактовой частоты, в то время как другие планировщики могут планировать один раз за основной цикл тактовой частоты процессора. Планировщики определяют порты отправки для выполнения запланированных uop.
Файлы 208, 210 физического регистра находятся между планировщиками 202, 204, 206 и исполнительными модулями 212, 214, 216, 218, 220, 222, 224 в исполнительном блоке 211. Существует отдельный файл 208, 210 регистра для операций с целыми числами и с плавающей точкой, соответственно. Каждый файл 208, 210 регистра в одном варианте осуществления также включает в себя обходную сеть, которая позволяет обойти или перенаправлять только что законченные результаты, которые еще не были записаны в файл регистра в новые зависимые uop. Файл 208 регистра для целых чисел и файл 210 регистра для чисел с плавающей точкой также выполнены с возможностью передавать данные друг другу. В одном варианте осуществления файл 208 регистра для целых чисел разделен на два отдельных файла регистра, один файл регистра для 32 битов данных младшего порядка и второй файл регистра для 32 битов данных старшего порядка. Файл 210 регистра для чисел с плавающей точкой в одном варианте осуществления имеет входы шириной 128 битов, поскольку инструкции с плавающей точкой обычно имеют операнды шириной от 64 до 128 битов.
Исполнительный блок 211 содержит исполнительные модули 212, 214, 216, 218, 220, 222, 224, где фактически исполняются инструкции. Данный раздел включает в себя файлы 208, 210 регистра, которые содержат значения операнда, представляющие собой данные целых чисел и чисел с плавающей точкой, для исполнения которых требуются микроинструкции. Процессор 200 в одном варианте осуществления состоит из множества исполнительных модулей: модуля 212 генерирования адресов (AGU), AGU 214, быстрого ALU 216, быстрого ALU 218, медленного ALU 220, ALU 222 с плавающей точкой, модуля 224 перемещения с плавающей точкой. В одном варианте осуществления исполнительные блоки 222, 224 с плавающей точкой исполняют операции с плавающей точкой, MMX, SIMD и SSE, или другие операции. ALU 222 с плавающей точкой в одном варианте осуществления включают в себя делитель с плавающей точкой 64 бита на 64 бита для исполнения деления, операции квадратного корня или остальных микроопераций. В вариантах осуществления настоящего изобретения инструкции, в которых используется значение с плавающей точкой, могут обрабатываться с использованием аппаратных средств с плавающей точкой. В одном варианте осуществления операции ALU передают в высокоскоростные исполнительные модули 216, 218 ALU. Быстрые ALU 216, 218, в одном варианте осуществления, позволяют выполнять быстрые операции с эффективной задержкой половина цикла тактовой частоты. В одном варианте осуществления наиболее сложные операции с целым числом передают в медленный ALU 220, поскольку медленный ALU 220 включает в себя исполнительные аппаратные средства для целых чисел, для операций с длинным типом задержки, таких как операции умножения, сдвига, логики флага и ответвления. Операции загрузки/сохранения в запоминающем устройстве выполняются AGU 212, 214. В одном варианте осуществления ALU 216, 218, 220 с целыми числами описаны в контексте выполнения операций с целыми числами для операндов данных размером 64 бита. В альтернативных вариантах осуществления ALU 216, 218, 220 могут быть воплощены для поддержки данных с разных количеством битов, включающих в себя 16, 32, 128, 256 и т.д. Аналогично, модули 222, 224 для работы с плавающей точкой могут быть воплощены для поддержки определенного диапазона операндов, имеющих биты разной ширины. В одном варианте осуществления модули 222, 224 для работы с плавающей точкой могут работать для операндов пакетных данных шириной 128 битов совместно с SIMD и мультимедийными инструкциями.
В одном варианте осуществления планировщики 202, 204, 206 uops отправляют зависимые операции перед окончанием выполнения порождающей нагрузки. Поскольку uop теоретически планируются и исполняются в процессоре 200, процессор 200 также включает в себя логическую схему для обработки потерь в памяти. Если происходят потери загрузки данных в кэш данных, в конвейере в это время должны выполняться зависимые операции, которые оставили в планировщике временно неправильные данные. Механизм повторного воспроизведения отслеживает и повторно исполняет инструкции, которые используют неправильные данные. Зависимые операции должны быть повторно выполнены, и при этом может быть разрешено завершение независимых операций. Планировщики и механизм повторного воспроизведения в одном варианте осуществления процессора также разработаны для захвата последовательности инструкций для операций сравнения текстовой строки.
Термин “регистры” может относиться к местам сохранения в процессоре, которые используются, как часть инструкций, для идентификации операндов. Другими словами, регистры могут представлять собой регистры, которые используются снаружи процессора (с перспективы программиста). Однако регистры в варианте осуществления не должны быть ограничены по значению определенным типом цепи. Вместо этого регистры, в соответствии с вариантом осуществления, могут сохранять и предоставлять данные и выполнять функции, описанные здесь. Регистры, описанные здесь, могут быть воплощены с использованием схемы в процессоре, используя любое количество разных технологий, таких как выделенные физические регистры, динамически выделенные физические регистры, используя замещение регистра, комбинации выделенных и динамически распределенных физических регистров и т.д. В одном варианте осуществления регистры для целых чисел содержат тридцатидвухбитные данные целых чисел. Файл регистра в одном варианте осуществления также содержат восемь мультимедийных регистров SIMD для пакетных данных. Для представленного ниже описания, под регистрами понимают регистры для данных, разработанных для содержания пакетных данных, такие как регистры ММХ шириной 64 бита (также называются регистрами “mm” в некоторых случаях) в микропроцессорах, в которых используются технологии ММХ™ компании Intel Corporation Санта-Клара, Калифорния. Эти регистры ММХ, доступные, как в форме целых чисел, так и числе с плавающей точкой, могут работать с элементами пакетных данных, которые сопровождают инструкции SIMD и SSE. Аналогично, регистры ХММ шириной 128 битов, относящиеся к SSE2, SSE3, SSE4 или к дальнейшей технологии (в общем, называются “SSEx”), также могут использоваться для содержания таких операндов для пакетных данных. В одном варианте осуществления, при сохранении пакетных данных и целых чисел, регистрам не требуется различать между двумя типами данных. В одном варианте осуществления целые числа и числа с плавающей точкой содержатся либо в одном файле регистра или в разных файлах регистра. Кроме того, в одном варианте осуществления, данные с плавающей точкой и целочисленные данные могут быть сохранены в разных регистрах или в одних и тех же регистрах.
На фиг. 3a-3b схематично представлены элементы микроархитектуры процессора, в соответствии с одним или более аспектами настоящего раскрытия. На фиг. 3a, конвейер 400 процессора включает в себя этап 402 выборки, этап 404 декодирования длины, этап 406 декодирования, этап 408 выделения, этап 410 переименования, этап 412 планирования (также известный как этап отправки или выпуска), этап 414 считывания регистра/считывания памяти, исполнительный этап 416, этап 418 обратной записи/записи в память, этап 422 обработки исключения, и этап 424 завершения.
На фиг. 3b стрелками обозначена связь между двумя или более модулями, и направление стрелки обозначает направление потока данных между этими модулями. На фиг. 3b показано ядро 490 процессора, включающее в себя модуль 430 внешнего интерфейса, соединенный с модулем 450 исполнительного механизма, и оба из которых соединены с модулем 470 памяти.
Ядро 490 может представлять собой ядро архитектуры процессора с сокращенным набором команд (RISC), или ядро процессора со сложным набором команд, ядро архитектуры процессора со сложным набором команд (CISC), ядро со словом инструкции очень большой длины (VLIW) или ядро гибридного или альтернативного типа. В качестве еще одного, другого варианта выбора, ядро 490 может представлять собой ядро специального назначения, такое как, например, сетевое ядро или ядро передачи данных, механизм сжатия, графическое ядро и т.п.
Модуль 430 внешнего интерфейса включает в себя модуль 432 прогнозирования ответвления, соединенный с модулем 434 кэш-инструкции, который соединен с буфером 436 хранения трансляции инструкции (TLB), который соединен с модулем 438 выбора инструкции, который соединен с модулем 440 декодирования. Модуль декодирования или декодер может декодировать инструкции, и генерировать, как выход, одну или более микроопераций, точек входа микрокода, микроинструкций, других инструкций или других сигналов управления, которые декодируют, или которые по-другому отражают, или которые выводят из оригинальных инструкций. Декодер может быть воплощен, используя всевозможные механизмы. Примеры соответствующих механизмов включают в себя, но не ограничены этим, справочные таблицы, воплощения аппаратных средств, программируемые логические массивы (PLA), постоянные запоминающие устройства (ROM) для микрокода и т.д. Модуль 434 кэш-инструкции дополнительно соединен с модулем 476 кэш уровня 2 (L2) в модуле 470 памяти. Модуль 440 декодирования соединен с модулем 452 изменения наименования/распределителя в модуле 450 исполнительного механизма.
Модуль 450 исполнительного механизма включает в себя модуль 452 изменения наименования/распределителя, соединенный с модулем 454 окончания инструкции и набором из одного или более модуля (модулей) 456 планировщика. Модуль (модули) 456 планировщика представляет любое количество разных планировщиков, включая в себя станции резервирования, центральное окно инструкции и т.д. Модуль (модули) 456 планировщика соединен с модулем (модулями) 458 файла (файлов) физического регистра.
Каждый из модулей 458 файла (файлов) физического регистра представляет собой один или более файлов физического регистра, разные файлы из которых содержат один или более разных типов данных, таких как скалярное целое число, скалярное число с плавающей точкой, пакетное целое число, пакетное число с плавающей точкой, векторное целое число, векторное число с плавающей точкой и т.д., статус (например, указатель инструкций, который представляет собой адрес следующей инструкции, предназначенный для исполнения), и т.д. Модуль (модули) 458 файла (файлов) физического регистра перекрывается модулем 454 окончания инструкции для иллюстрации различных способов, в которых может быть воплощено замещение регистра и исполнение не по порядку (например, используя буфер (буферы) изменения порядка и файл (файлы) регистров окончания инструкции, используя будущий файл (файлы), буфер (буферы) истории и файл (файлы) регистра окончания инструкции; используя отображения регистров и объединение регистров; и т.д.). Обычно регистры, составляющие архитектуру, видимы снаружи процессора или из перспективы программиста. Регистры не ограничены каким-либо извест