RU2638641C2 - Загрузка парциальной ширины, зависящая от режима, в процессорах с регистрами с большим числом разрядов, способы и системы - Google Patents
Загрузка парциальной ширины, зависящая от режима, в процессорах с регистрами с большим числом разрядов, способы и системы Download PDFInfo
- Publication number
- RU2638641C2 RU2638641C2 RU2015151131A RU2015151131A RU2638641C2 RU 2638641 C2 RU2638641 C2 RU 2638641C2 RU 2015151131 A RU2015151131 A RU 2015151131A RU 2015151131 A RU2015151131 A RU 2015151131A RU 2638641 C2 RU2638641 C2 RU 2638641C2
- Authority
- RU
- Russia
- Prior art keywords
- register
- processor
- partial width
- width
- partial
- Prior art date
Links
- 238000011068 loading method Methods 0.000 title claims abstract description 300
- 238000000034 method Methods 0.000 title claims abstract description 72
- 230000004044 response Effects 0.000 claims abstract description 31
- 238000012545 processing Methods 0.000 claims description 35
- 230000008859 change Effects 0.000 claims description 34
- 230000007704 transition Effects 0.000 claims description 7
- 238000005516 engineering process Methods 0.000 abstract description 12
- 230000008569 process Effects 0.000 abstract description 4
- 230000000694 effects Effects 0.000 abstract 1
- 239000000126 substance Substances 0.000 abstract 1
- 238000010586 diagram Methods 0.000 description 27
- 230000001419 dependent effect Effects 0.000 description 18
- 230000007246 mechanism Effects 0.000 description 13
- 238000004891 communication Methods 0.000 description 10
- 238000007667 floating Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 8
- 239000003795 chemical substances by application Substances 0.000 description 7
- 239000000872 buffer Substances 0.000 description 5
- 230000006835 compression Effects 0.000 description 5
- 238000007906 compression Methods 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 5
- 238000013519 translation Methods 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 230000003068 static effect Effects 0.000 description 4
- 238000003491 array Methods 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 238000005070 sampling Methods 0.000 description 3
- 230000002457 bidirectional effect Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000010076 replication Effects 0.000 description 2
- 230000002123 temporal effect Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000000354 decomposition reaction Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- MYWUZJCMWCOHBA-VIFPVBQESA-N methamphetamine Chemical compound CN[C@@H](C)CC1=CC=CC=C1 MYWUZJCMWCOHBA-VIFPVBQESA-N 0.000 description 1
- 229910052754 neon Inorganic materials 0.000 description 1
- GKAOGPIIYCISHV-UHFFFAOYSA-N neon atom Chemical compound [Ne] GKAOGPIIYCISHV-UHFFFAOYSA-N 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
- G06F9/30189—Instruction operation extension or modification according to execution mode, e.g. mode flag
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
Abstract
Изобретение относится к области загрузки данных из памяти в процессоры. Техническим результатом является повышение производительности процессорных систем за счет использования нескольких режимов для обработки инструкции загрузки парциальной ширины и/или ее кода операции. Процессор для загрузки данных содержит регистр, имеющий ширину; блок декодирования для приема инструкции загрузки парциальной ширины, причем инструкция загрузки парциальной ширины указывает ячейку памяти в качестве операнда источника и указывает регистр в качестве операнда назначения; подсистему памяти, соединенную с блоком декодирования, причем подсистема памяти предназначена для загрузки данных из указанной ячейки памяти в процессор, в ответ на инструкцию загрузки парциальной ширины; и блок записи в регистр, соединенный с подсистемой памяти и регистром, причем блок записи в регистр предназначен, в ответ на инструкцию загрузки парциальной ширины, для записи по меньшей мере части загруженных данных на парциальной ширине регистра и для завершения записи в регистр с набором разрядов, хранящихся на оставшейся ширине регистра, которые имеют значения разрядов, которые зависят от режима загрузки парциальной ширины процессора, при этом инструкция загрузки парциальной ширины не указывает режим загрузки парциальной ширины. 4 н. и 21 з.п. ф-лы, 17 ил.
Description
Область техники, к которой относится изобретение
Варианты осуществления, описанные здесь, относятся, в общем, к процессорам. В частности, варианты осуществления, описанные здесь, относятся, в общем, к загрузке данных из памяти в процессоры.
Уровень техники
Набор инструкций процессора обычно включает в себя множество различных типов инструкций, которые процессор может исполнить или выполнить. Например, набор инструкций может обычно включать в себя различные арифметические инструкции, различные логические инструкции, различные инструкции загрузки для загрузки данных из памяти в процессор и т.д.
Одна проблема состоит в том, что обычно ограничено число инструкций, которые могут быть включены в набор инструкций. Каждая инструкция может включать в себя код операции. Коды операций могут представлять собой части инструкций, которые используются для точного определения конкретных инструкций и/или операций, которые будут выполняться. Например, заданная инструкция загрузки данных из памяти может иметь заданный уникальный код операции для того, чтобы ее можно было отличить от других типов инструкций и разрешить процессору распознать ее. Код операции может представлять собой группу разрядов заданной длины в одном или более полях или позициях в пределах формата инструкции. Часто возникает ситуация, когда желательно поддерживать относительно маленьким число разрядов кодов операций, обеспечивая при этом желаемое число инструкций/операций. Длинные коды операций приводят к увеличению размера и/или сложности декодера. В дополнение, длинные коды операций приводят к увеличению общей длины инструкции, которая может заставить инструкции использовать больше пространства программы и занимать больше пространства в кэш-памяти. Число различных инструкций, которые можно однозначно идентифицировать с помощью заданной длины кода операции и/или длины инструкции, является часто ограниченным в большей степени, чем это желательно. Дополнительные инструкции обычно не могут постоянно добавляться в набор инструкций без окончательного исчерпания имеющихся кодов операций или увеличения длины инструкций в архитектурах с переменной длиной инструкций.
В некоторых случаях различные инструкции и/или операции могут иметь одинаковый код операции (или одинаковую часть кода операции), но могут включать в себя один или более дополнительных разрядов для того, чтобы можно было различать между собой различные версии инструкций и/или операций. Потенциальные недостатки этого метода состоят в том, что он может иметь тенденцию к увеличению длины инструкции или в некоторых случаях может отсутствовать доступный участок памяти в пределах длины инструкции для размещения дополнительного разряда (дополнительных разрядов), можно было различать между собой различные версии инструкций и/или операций.
Краткое описание чертежей
Настоящее изобретение можно будет лучше понять со ссылкой на последующее описание и сопроводительные чертежи, которые используются для иллюстрации вариантов осуществления. На чертежах:
на фиг. 1 показана блок-схема варианта осуществления компьютерной системы, имеющей процессор для выполнения инструкции загрузки парциальной ширины;
на фиг. 2 показана блок-схема первого примерного варианта осуществления операции загрузки парциальной ширины, которую можно выполнить согласно режиму загрузки парциальной ширины расширения знака или согласно режиму загрузки парциальной ширины с дополнением нулями;
на фиг. 3 показана блок-схема второго примерного варианта осуществления операции загрузки парциальной ширины, которую можно выполнить согласно режиму загрузки с объединением парциальной ширины или согласно режиму загрузки парциальной ширины с дополнением нулями;
на фиг. 4 показана блок-схема последовательности операций варианта осуществления способа, который можно выполнить с помощью процессора при обработке инструкции загрузки парциальной ширины согласно варианту осуществления;
на фиг. 5 показана блок-схема варианта осуществления компьютерной системы, включающей в себя процессор с 64-разрядной архитектурой для выполнения 32-разрядной адресации памяти с дополнением нулями;
на фиг. 6 показана блок-схема варианта осуществления взаимодействия между программным модулем пользовательского уровня и модулем операционной системы для изменения режима загрузки парциальной ширины;
на фиг. 7 показана блок-схема варианта осуществления способа, который можно выполнить с помощью модуля операционной системы, привилегированного модуля или модуля другого уровня системы;
на фиг. 8А показана блок-схема, иллюстрирующая как примерный конвейер исполнения инструкций без изменения их очередности и примерное переименование регистров, так и конвейер выдачи/исполнения инструкций с изменением их очередности согласно вариантам осуществления изобретения;
на фиг. 8В показана блок-схема, иллюстрирующая как примерный вариант осуществления ядра архитектуры исполнения инструкций без изменения их очередности и примерное переименование регистров, так и ядро архитектуры выдачи/исполнения инструкций с изменением их очередности, которое будет включено в процессор, согласно вариантам осуществления изобретения;
на фиг. 9А показана блок-схема одного ядра процессора наряду с его подсоединением к сети межсоединений на кристалле и с его локальным подмножеством кэш-памяти 2-го уровня (L2) согласно вариантам осуществления изобретения;
на фиг. 9В показан расширенный вид части ядра процессора (фиг. 9А) согласно вариантам осуществления изобретения;
на фиг. 10 показана блок-схема процессора, который может иметь более одного ядро, может иметь встроенный контроллер памяти и может иметь встроенную графику согласно вариантам осуществления изобретения;
на фиг. 11 показана блок-схема системы в соответствии с одним вариантом осуществления настоящего изобретения;
на фиг. 12 показана блок-схема первой более конкретной примерной системы в соответствии с вариантом осуществления настоящего изобретения;
на фиг. 13 показана блок-схема второй более конкретной примерной системы в соответствии с вариантом осуществления настоящего изобретения;
на фиг. 14 показана блок-схема SoC в соответствии с вариантом осуществления настоящего изобретения; и
на фиг. 15 показана блок-схема, сопоставляющая использование программного конвертера инструкций для преобразования двоичных инструкций в наборе инструкций источника в двоичные инструкции в целевом наборе инструкций согласно вариантам осуществления изобретения.
Подробное описание изобретения
В некоторых вариантах осуществления процессор может иметь два или более режимов для обработки заданной инструкции и/или заданного кода операции двумя или более различными соответствующими способами, например, два или более режима для обработки загрузки парциальной ширины из инструкции памяти двумя или более различными соответствующими способами. В следующем описании изложены многочисленные конкретные детали (например, конкретные операции инструкций, конфигурации процессора, детали микроархитектуры, последовательности операций и т.д.). Однако варианты осуществления могут применяться на практике без этих конкретных деталей. В других случаях хорошо известные схемы, структуры и технологии не были показаны подробно во избежание усложнения понимания описания.
На фиг. 1 показана блок-схема варианта осуществления компьютерной системы 100. В различных вариантах осуществления компьютерная система может представлять собой настольный компьютер, портативный компьютер, компьютер типа "ноутбук", планшетный компьютер, нетбук, смартфон, персональный цифровой помощник, сотовый телефон, сервер, сетевое устройство (например, маршрутизатор или коммутатор), мобильное интернет-устройство (MID), медиапроигрыватель, интеллектуальный телевизор, телевизионную приставку, контроллер видеоигры или другой тип электронного устройства.
Компьютерная система включает в себя вариант осуществления процессора 101. В некоторых вариантах осуществления процессор может представлять собой процессор общего назначения. Например, процессор может представлять собой процессор общего назначения типа, который обычно используется в качестве центрального процессорного устройства (ЦПУ). В других вариантах осуществления процессор может представлять собой процессор специального назначения. Примеры подходящих процессоров специального назначения включают в себя, но не ограничиваются ими, сопроцессоры, графические процессоры, коммуникационные процессоры, сетевые процессоры, криптографические процессоры, встроенные процессоры и процессоры цифровых сигналов (DSPS), и это всего лишь несколько примеров. Процессор может представлять собой любой из различных процессоров с полным набором команд (CISC), различных процессоров с сокращенным набором команд (RISC), различных процессоров со сверхдлинным командным словом (VLIW), различных их гибридов или совершенно другие типы процессоров.
Компьютерная система также включает в себя вариант осуществления памяти 110. Память соединена с процессором 101 с помощью механизма 109 соединений или межсоединений. Примеры подходящих механизмов соединений или межсоединений включают в себя, но не ограничиваются ими, один или более межсоединений, шины, концентраторы, контроллеры памяти, наборы микросхем, компоненты набора микросхем и т.п. и различные их комбинации. Память может включать в себя один или более устройств памяти одинакового типа или различных типов. Одним широко используемым типом памяти, который подходит для вариантов осуществления, является динамическое запоминающее устройство (DRAM), хотя альтернативно можно использовать и другие типы памяти (например, флеш-память). Память может иметь программное обеспечение, которое хранится в ней, например, одну или более операционных систем (OS) и одну или более прикладных программ (не показаны). Во время работы инструкции программного обеспечения могут подаваться в процессор и исполняться процессором.
Как показано, инструкцию 102 загрузки парциальной ширины можно подавать в процессор 101.
Например, блок выборки (не показан) может осуществлять выборку инструкции загрузки парциальной ширины. Инструкция загрузки парциальной ширины может представлять собой инструкцию в кодах машины, инструкцию на языке ассемблера, макроинструкцию или сигнал управления ISA устройства. Инструкцию загрузки парциальной ширины можно однозначно определить (например, через одно или более полей или набор разрядов) или иным образом указать (например, неявно указать) ячейку 111 памяти в памяти 110 в качестве операнда источника, и позволяет точно определить или иным образом указать регистр 115 назначения в качестве операнда назначения, где должны быть сохранены данные 112 парциальной ширины, загруженные из памяти. Термин "данные парциальной ширины" используется в данном документе для обозначения заполнения данных или только парциальной ширины регистра 115 назначения, где должны храниться данные.
Процессор включает в себя блок 103 декодирования. Блок декодирования может также упоминаться как декодер или логическая схема декодирования. Блок декодирования может принимать инструкцию загрузки парциальной ширины. Блок декодирования может быть выполнен с возможностью декодирования инструкций относительно высокого уровня (например, инструкций машинного кода, инструкций на языке ассемблера, макроинструкций и т.д.) и вывода одной или более соответствующих инструкций относительно низкого уровня или сигналов управления (например, одной или более микроинструкций, микроопераций, точек ввода микрокода и т.д.). Инструкция(и) более низкого уровня или сигнал(ы) управления можно отобразить, представить и/или получить из инструкций относительно высокого уровня и позволяет реализовать инструкцию более высокого уровня через операцию(и) более низкого уровня (например, операции на уровне схемы или на уровне аппаратных средств). Блок декодирования можно реализовать с использованием всевозможных механизмов, включающих в себя, но не ограниченных ими, постоянные запоминающие устройства (ROM) микрокода, таблицы поиска, аппаратные реализации, программируемые логические матрицы (PLA), другие механизмы, которые используются для реализации известных в технике блоков декодирования и их комбинаций.
В других вариантах осуществления эмулятор, транслятор, трансформатор, интерпретатор или конвертер инструкций можно использовать вместо или в дополнение к блоку 103 декодирования. Конвертер инструкций может эмулировать, транслировать, трансформировать или иным образом преобразовывать инструкцию в одну или более полученные соответствующим образом инструкции или сигналы управления. Всевозможные типы таких конвертеров инструкций известны в технике, и их можно реализовать в виде аппаратных средств, программно-аппаратных средств, программного обеспечения или их комбинации. В некоторых вариантах осуществления конвертер инструкций может преобразовать принятую инструкцию более высокого уровня в одну или более инструкций промежуточного уровня, и блок декодирования может декодировать одну или более инструкций промежуточного уровня в одну или более инструкций более низкого уровня или сигналы управления, которые может выполнять собственная логическая схема процессора.
Как показано, блок декодирования является частью системы 113 загрузки парциальной ширины режима процессора. В некоторых вариантах осуществления два или более режимов можно использовать для обработки инструкции загрузки парциальной ширины и/или ее кода операции с помощью двух или более различных соответствующих способов. Преимущественно, это позволяет выполнять различные операции без необходимости использования дополнительного кода операции, что в некоторых случаях может быть затруднительно, как будет обсуждено в разделе "Уровень техники". Блок декодирования может быть связан с или иным образом поддерживать связь с режимом 105 загрузки парциальной ширины. В некоторых вариантах осуществления режим загрузки парциальной ширины может включать в себя один или более разрядов для указания одного из многочисленных различных режимов загрузки парциальной ширины. В другом аспекте можно использовать два или более разрядов для указания одного из двух, по меньшей мере трех, по меньшей мере четырех или дополнительно более чем четырех различных режимов загрузки парциальной ширины. В некоторых вариантах осуществления один или более разрядов можно сохранить в регистре 106 (например, в регистре управления, статуса или конфигурации) или другой ячейке памяти на кристалле. В качестве альтернативы, режим загрузки парциальной ширины можно дополнительно включить в один или более отдельных или изолированных разрядов необязательно в регистре управления, статуса или конфигурации. Как будет дополнительно объяснено ниже, программный модуль (например, модуль приложения пользовательского уровня, модуль операционной системы, модуль монитора виртуальной машины, привилегированный программный модуль и т.п.) может изменять режим 105 загрузки парциальной ширины (например, путем изменения одного или более разрядов) на режим, который является подходящим, желаемым или предназначенным для инструкции 102 загрузки парциальной ширины (например, программное обеспечение, использующее инструкцию загрузки парциальной ширины).
Блок декодирования и/или процессор могут осуществлять доступ к режиму загрузки парциальной ширины для определения того, какой используется текущий режим загрузки парциальной ширины, и блок декодирования может декодировать инструкцию загрузки парциальной ширины согласно определенному режиму загрузки парциальной ширины. В некоторых вариантах осуществления режим загрузки парциальной ширины можно использовать для обеспечения различных значений, интерпретации и/или операций для инструкции загрузки парциальной ширины и/или ее кода операции. В некоторых вариантах осуществления блок декодирования может включать в себя логическую схему 104 декодирования, зависящего от режима загрузки парциальной ширины, для декодирования инструкции загрузки парциальной ширины таким способом, который зависит от, базируется на и/или согласуется с текущим режимом загрузки парциальной ширины, связанным с инструкцией (например, с режимом во время декодирования инструкции). Например, первый набор из одной или более инструкций или сигналов управления можно декодировать из инструкции загрузки парциальной ширины в первом режиме загрузки парциальной ширины, тогда как второй другой набор из одной или более инструкций или сигналов управления можно декодировать из инструкции загрузки парциальной ширины (например, того же самого кода операции) во втором другом режиме загрузки парциальной ширины. Инструкции или сигналы 107 управления, которые зависят от режима, можно выводить из блока декодирования в соответствии с текущим режимом 105.
В некоторых вариантах осуществления инструкцию загрузки парциальной ширины нельзя точно определить или иным образом указать режим 105 загрузки парциальной ширины (например, могут отсутствовать разряды инструкции для выбора или для различения многочисленных различных разновидностей инструкций/операций или точного определения режима иным образом). Это обычно помогает избежать увеличения длины инструкции, позволяет потенциально использовать технологию, где длина инструкции не разрешает такие дополнительные разряды, позволяет потенциально уменьшить или ограничить число разрядов, которые необходимо декодировать, или предлагает другие потенциальные преимущества. В некоторых вариантах осуществления может возникнуть ситуация, когда невозможно определить из опроса любого или всех разрядов инструкции загрузки парциальной ширины то, какой режим загрузки парциальной ширины использовать.
Как показано на фиг.1, подсистема 108 памяти соединена с блоком 103 декодирования и с памятью 110. Подходят различные традиционные подсистемы памяти, известные в технике. Подсистема памяти может приводиться в действие в ответ на и/или в результате подачи инструкции 102 загрузки парциальной ширины (например, в ответ на одну или более декодированных инструкций или сигнала(ов) управления, соответствующих текущему режиму 105 загрузки парциальной ширины), чтобы загрузить данные из указанной ячейки 111 памяти в процессор. Как упоминалось ранее, инструкция загрузки парциальной ширины позволяет точно определить или иным образом указать ячейку 111 памяти, имеющую 112 данные парциальной ширины. Инструкция загрузки парциальной ширины позволяет также точно определить или иным образом указать регистр 115 назначения, где хранятся данные парциальной ширины.
Согласно варианту осуществления блок 114 записи в регистр, зависящий от режима загрузки парциальной ширины, соединен с блоком 103 декодирования, с подсистемой 108 памяти и с регистром 115 назначения. Для простоты блок записи в регистр, зависящей от режима загрузки парциальной ширины может также упоминаться просто как блок записи в регистр, зависящей от режима, или блок записи в регистр. Блок записи в регистр, зависящей от режима, может приводиться в действие в ответ на и/или в результате инструкции 102 загрузки парциальной ширины (в ответ на одну или более декодированных инструкций или сигналов 107 управления, соответствующих текущему режиму 105 загрузки парциальной ширины), для записи или получения доступа иным образом к регистру 115, чтобы иметь результат, сохраненный в нем, который зависит от и/или соответствует режиму загрузки парциальной ширины. В некоторых вариантах осуществления блок записи в регистр, зависящей от режима, можно приводить в действие для записи по меньшей мере части загруженных данных 112 парциальной ширины на парциальной ширине регистра и можно приводить в действие для окончания или завершения записи в регистр набора разрядов 117, 118, которые хранятся на оставшейся ширине регистра, которые имеют значения разрядов, которые зависят от и/или соответствуют соответствующему режиму загрузки парциальной ширины. Блок записи в регистр, зависящей от режима, и/или процессор может включать в себя специфическую или конкретную логику (например, схему или другие аппаратные средства, возможно объединенные с одним или более программно-аппаратными средствами и/или программным обеспечением), реагирующую на инструкцию загрузки парциальной ширины.
Для различных вариантов осуществления подходят разные комбинации различных типов режимов загрузки парциальной ширины. Примеры включают в себя, но не ограничиваются ими, режим загрузки парциальной ширины с расширением знакового разряда, режим загрузки парциальной ширины с дополнением нулями, режим загрузки с объединением парциальной ширины и другие режимы загрузки парциальной ширины, известные в технике. В режиме загрузки парциальной ширины с расширением знакового разряда знаковый разряд данных парциальной ширины (например, самый старший двоичный разряд, имеющий значение двоичного нуля или двоичной единицы) можно копировать, расширять или иным образом сохранять или записывать на оставшейся ширине регистра, не занятого данными парциальной ширины. В режиме загрузки парциальной ширины с дополнением нулями двоичные нули можно вставлять, расширять или иным образом сохранять или записывать на оставшейся ширине регистра, не занятого данными парциальной ширины. В режиме загрузки с объединением парциальной ширины данные парциальной ширины можно объединить с исходными или предсуществующими разрядами или данными, уже сохраненными в регистре во время записи в регистр. Эти исходные или предсуществующие данные нельзя изменять или перезаписывать. Например, режим загрузки с объединением парциальной ширины позволяет хранить парциальную ширину в части самого младшего разряда регистра, перезаписывая исходные или предсуществующие данные в этой части самого младшего разряда, и позволяет хранить исходные или предсуществующие данные в оставшейся части самого старшего разряда регистра. В различных вариантах осуществления можно использовать комбинацию из двух этих или других типов режимов загрузки парциальной ширины. Различные соответствующие значения 116 можно записывать в регистр назначения в различных режимах. В иллюстрированном примере в режиме загрузки парциальной ширины с дополнением нулями данные 112 парциальной ширины могут быть включены в часть регистра назначения (например, половина самого младшего разряда или другая часть), и все нули 117 можно хранить в другой части регистра назначения (например, в части самого старшего разряда). В режиме загрузки парциальной ширины с расширением знакового разряда данные 112 парциальной ширины могут быть включены в часть регистра назначения (например, в половину самого младшего разряда или другую часть), и знаковые разряды 118 (например, основанные на самом старшем двоичном разряде данных 112 парциальной ширины) можно хранить в другой части регистра назначения (например, в половине самого старшего разряда или в другой части). В других вариантах осуществления можно использовать другие типы или комбинации различных загрузок парциальной ширины. Например, в другом варианте осуществления режим загрузки с объединением и расширением парциальной ширины (например, смотри фиг. 3), или другой тип режима загрузки парциальной ширины можно использовать вместо одного из проиллюстрированных режимов или в качестве дополнительного третьего типа режима загрузки парциальной ширины.
Процессор 101 был описан и показан в упрощенном виде во избежание излишнего усложнения описания и концепций. Устройство может включать в себя различные другие известные компоненты, которые обычно используются в процессорах. Примеры таких компонентов включают в себя, но не ограничиваются ими, блок предсказания ветвлений, блок выборки инструкции, кэш-память данных и инструкций, кэш-память второго или более высокого уровня, буферы предварительной выборки для трансляции данных и инструкций, буферы предварительной выборки, очереди для микроинструкций, планировщики последовательностей микроинструкций, блок переименования регистра, блок планирования инструкций, блоки шинного интерфейса, блок отмены инструкции, другие компоненты, включенные в процессоры, и различные их комбинации. В процессорах существуют в прямом смысле многочисленные различные комбинации и конфигурации компонентов, и варианты осуществления не ограничены какой-либо конкретной комбинацией или конфигурацией.
На фиг. 2 показана блок-схема первого примерного варианта осуществления операции 219 загрузки парциальной ширины, который можно выполнить согласно режиму 220 загрузки парциальной ширины расширения знака или согласно режиму 221 загрузки ZAJQ11 X ширины с дополнением нулями. Операцию загрузки парциальной ширины можно выполнить в ответ на инструкцию 202 загрузки парциальной ширины и режим 20 5 ассоциируемой загрузки парциальной ширины (например, режим загрузки парциальной ширины в то время, когда декодируется инструкция загрузки парциальной ширины).
Инструкция загрузки парциальной ширины позволяет точно определить или иным образом указать ячейку памяти 211 в качестве операнда источника и позволяет точно определить или иным образом указать регистр 215 назначения в качестве операнда назначения. Ячейка памяти хранит данные парциальной ширины, которые будут загружаться в регистр назначения в ответ на инструкцию загрузки парциальной ширины. Для простоты иллюстрации показаны только данные 212 парциальной ширины с 8-разрядной шириной. В иллюстрированном примере 8-разрядные данные парциальной ширины имеют, от позиции старшего значащего разряда слева до позиции младшего значащего разряда справа, значения "11110000". Однако следует понимать, что эти значения являются только примерами, и можно альтернативно использовать любые другие возможные значения разрядов. Более того, в других вариантах осуществления, вместо данных парциальной ширины с 8-разрядной шириной, данные парциальной ширины могут иметь другую ширину (например, 16 разрядов, 32 разряда, 64 разряда и т.д.). Аналогичным образом, для простоты иллюстрации иллюстрированный регистр назначения имеет ширину 16 разрядов. В других вариантах осуществления регистр назначения может иметь другую ширину (например, 32 разряда, 64 разряда, 128 разрядов и т.д.). В некоторых вариантах осуществления, как и в этом примере, данные парциальной ширины могут иметь половину ширины регистра назначения, хотя это и не требуется. В других вариантах осуществления, например, данные парциальной ширины могут иметь 16 разрядов, и регистр назначения может иметь 64 разряда, или данные парциальной ширины могут иметь 8 разрядов, и регистр назначения может иметь 32 разряда и т.д. В качестве другого примера, данные парциальной ширины могут иметь 64 разряда, и регистр назначения может иметь 128 разрядов.
Блок 214 записи в регистр, зависящей от режима, соединен с регистром 215 назначения, соединен с ячейкой памяти 211 и связан с 202 инструкцией загрузки парциальной ширины (например, соединен с блоком декодирования). Блок записи в регистр может приводиться в действие в ответ на инструкцию загрузки парциальной ширины, чтобы выполнить запись или сохранение в регистре назначения. Способ, с помощью которого выполняется запись или сохранение, может зависеть от или базироваться на режиме загрузки парциальной ширины, связанном с инструкцией загрузки парциальной ширины. В этом первом примерном варианте осуществления режим загрузки парциальной ширины позволяет указать любой из режима 220 загрузки парциальной ширины с расширением знакового разряда (слева на иллюстрации) или режим 221 загрузки парциальной ширины с дополнением нулями (справа на иллюстрации). В обеих из этих различных типов загрузок парциальной ширины данные 212 парциальной ширины (например, 8-разрядные данные парциальной ширины в этом примере) можно записать или сохранить в регистре назначения. В иллюстрированном варианте осуществления загруженные данные парциальной ширины записываются в части самого младшего разряда регистра назначения, хотя это не требуется. Как показано, в любом режиме 220 загрузки парциальной ширины с расширением знакового разряда или режиме 221 загрузки парциальной ширины с дополнением нулями значения "11110000" 8-разрядных данных парциальной ширины можно сохранить в разрядах [7:0] регистра 215-1, 215-2 назначения. В других вариантах осуществления можно использовать другие размеры данных парциальных ширин, и/или данные парциальной ширины можно записать в другие части/позиции регистра назначения (например, в старшую значащую часть и т.д.).
В иллюстрированном варианте осуществления часть самого старшего разряда (например, 8-разрядная часть самого старшего разряда в этом примере) регистра назначения обрабатывается различным образом для двух различных типов операций/режимов загрузки парциальной ширины. Для режима 220 загрузки парциальной ширины с расширением знакового разряда блок записи в регистр, зависящей от режима, управляет записью или сохранением знаковых разрядов 218 (например, знаковый разряд самого старшего двоичного разряда данных парциальной ширины) во всех оставшихся более значащих разрядах регистра 215-1 назначения, который не используется для хранения данных парциальной ширины. В иллюстрированном примере разряд 7 представляет собой знаковый разряд или старший значащий разряд данных парциальной ширины. В этом примере знаковый разряд представляет собой двоичную единицу, и, соответственно, двоичная единица 218 хранится в каждом из разрядов [15:8] регистра 215-1 назначения. Для режима 221 загрузки парциальной ширины с дополнением нулями блок записи в регистр, зависящей от режима, управляет записью и сохранением всех нулей 217 во всех оставшихся более значащих разрядах регистра 215-2 назначения, который не используется для хранения данных парциальной ширины. Как показано, двоичные нули 217 можно хранить в каждом из разрядов [15:8] регистра 215-2 назначения. Соответственно, блок записи в регистр, зависящей от режима и/или процессор может закончить запись в регистр 215 назначения с разрядами (например, 217 или 218), которые хранятся в его части, которая не используется для хранения данных парциальной ширины (например, все более значащие разряды, чем часть самого младшего разряда, который используется для хранения данных парциальной ширины), которые имеют значения разрядов, которые зависят от режима загрузки парциальной ширины.
На фиг. 3 показана блок-схема второго примерного варианта осуществления операции 319 загрузки парциальной ширины, которую можно выполнить согласно режиму 322 загрузки с объединением парциальной ширины или режиму 321 загрузки парциальной ширины с дополнением нулями. Этот второй примерный вариант осуществления имеет некоторые общие черты с ранее описанным первым примерным вариантом осуществления (фиг. 2). Во избежание излишнего усложнения описания сначала будут описаны различные дополнительные функции и характеристики второго примерного варианта осуществления без повторения всех сходных элементов. Однако следует понимать, что признаки и характеристики, описанные выше для первого примерного варианта осуществления (фиг. 2), можно также дополнительно применить ко второму примерному варианту осуществления.
Операцию 319 загрузки парциальной ширины можно выполнить в ответ на инструкцию 302 загрузки парциальной ширины и связанный режим 305 загрузки парциальной ширины. Инструкция загрузки парциальной ширины позволяет точно определить или иным образом указать ячейку памяти 311 в качестве операнда источника и позволяет точно определить или иным образом указать регистр назначения 315 в качестве операнда назначения. Ячейка памяти хранит данные 312 парциальной ширины, которые будут загружаться в регистр назначения в ответ на инструкцию загрузки парциальной ширины. Для простоты иллюстрации в этом примере показаны 8-разрядные данные парциальной ширины и 16-разрядный регистр назначения, хотя объем изобретения этим не ограничивается.
Блок 314 записи в регистр, зависящей от режима, может приводиться в действие в ответ на инструкцию загрузки парциальной ширины, чтобы выполнить запись или сохранение в регистре назначения. Способ, с помощью которого выполняется запись или сохранение, может зависеть от или базироваться на режиме загрузки парциальной ширины, связанном с инструкцией загрузки парциальной ширины. В этом втором примерном варианте осуществления режим загрузки парциальной ширины позволяет указать один из: режима 322 загрузки с объединением или объединенной парциальной шириной (слева на иллюстрации) или режима 321 загрузки парциальной ширины с дополнением нулями (справа на иллюстрации). В обоих из этих различных типов загрузок парциальной ширины данные 312 парциальной ширины (например, 8-разрядные данные парциальной ширины в этом примере) можно записать или сохранить в регистре назначения. В иллюстрированном варианте осуществления загруженные данные парциальной ширины записываются в части самого младшего разряда регистра назначения, хотя это не требуется. Как показано, в режиме 322 загрузки с объединением или объединенной парциальной шириной или режиме 321 загрузки парциальной ширины с дополнением нулями, значения "11110000" 8-разрядных данных парциальной ширины можно сохранить в разрядах [7:0] регистра 315-1, 315-2 назначения. В других вариантах осуществления можно использовать другие размеры данных парциальной ширины, и/или данные парциальной ширины можно записать в другой части/позиции регистра назначения (например, в старшей значащей части и т.д.).
В иллюстрированном варианте осуществления часть самого старшего разряда (например, 8-разрядная часть самого старшего разряда в этом примере) регистра 215 назначения обрабатывается различным образом для двух различных типов операций/режимов загрузки парциальной ширины. В режиме 322 загрузки с объединением или объединенной парциальной шириной управление блоком записи в регистр, зависящей от режима, осуществляется таким образом, чтобы завершить запись в регистр назначения 315-1 с разрядами 323-1, которые хранятся в его части, которая не используется для хранения данных парциальной ширины (например, все более значащие разряды, чем 8 разрядов самого младшего разряда, который используется для хранения 8-разрядных данных парциальной ширины), которые имеют значения разрядов, которые зависят от режима загрузки парциальной ширины. Например, как показано, блок записи в регистр может завершить запись регистра 315-1 назначения с исходным набором разрядов (то есть те разряды, которые были первоначально в регистре 315-1 назначения перед инструкцией загрузки парциальной ширины), которые хранятся в оставшейся 8-разрядной части самого значащего разряда регистра 315-1 назначения. Для ссылки показан набор 323-2 значений предсуществующих разрядов, которые существовали перед выполнением инструкции парциальной записи в регистр. Разряды [15:8] предсуществующих значений 323-2 разрядов имеют значения "01010101". Следует отметить, что эти одинаковые значения "01010101" в разрядах [15:8] значений 323-2 разрядов, которые существовали перед выполнением инструкции парциальной записи в регистр, также появляются в качестве тех же самых значений разрядов "01010101" в разрядах [15:8] регистра 315-2 назначения после выполнения инструкции парциальной записи в регистр. Данные парциальной ширины можно объединить или вставить в регистр назначения вместо некоторых разрядов, при этом оставляя другие разряды неизменными. В режиме 321 загрузки парциальной ширины с дополнением нулями управление блоком записи в регистр, зависящей от режима, осуществляется таким образом, чтобы записать или сохранить все нули 317 во всех оставшихся более значащих разрядах регистра назначения 315-2, которые не используются для хранения данных парциальной ширины. Как показано, двоичные нули 317 могут храниться в каждом из разрядов [15:8] регистра назначения 315-2.
Следует понимать, что в качестве примера подходящих типов режимов загрузки парциальной ширины представлено всего лишь несколько иллюстративных вариантов осуществления. Рассмотрен другой вариант осуществления, в котором первый режим использует режим загрузки парциальной ширины с расширением знакового разряда, и второй режим использует режим загрузки с объединенной парциальной шириной. Рассмотрен еще один вариант осуществления, в котором к варианту осуществления, показанному на фиг.2, добавлен дополнительный третий режим, который включает в себя режим загрузки с объединенной парциальной шириной. Рассмотрен дополнительный вариант осуществления, в котором к варианту осуществления, показанному на фиг. 3, добавлен дополнительный третий режим, который включает в себя режим загрузки парциальной ширины с расширением знакового разряда. Другие варианты осуществления могут базироваться на других типах режимов загрузки парциальной ширины (например, с расширением и т.д.). Более того, как упоминалось ранее, во всех других вариантах осуществления битовая ширина данных парциальной ширины и/или регистра назначения может быть шире или уже, и данные парциальной ширины не обязательно должны быть равны половине ширины регистра назначения.
В некоторых вариантах осуществления операции, показанные на фиг. 2 и/или фиг. 3, можно выполнить с помощью и/или в пределах процессора, показанного на фиг. 1. Подробности и дополнительные подробности, описанные выше, для процессора, показанного на фиг. 1, можно также дополнительно применить к операциям, показанным на фиг. 2 и/или фиг. 3, которые в вариантах осуществления можно выполнять с помощью и/или в пределах такого процессора. В качестве альтернативы, операции, показанные на фиг. 2 и/или фиг. 3, можно выполнить с помощью и/или в пределах аналогичного или другого процессора. Более того, процессор, показанный на фиг. 1, может выполнять операции одинаковые, аналогичные или различные, чем те, которые показаны на фиг. 2 и/или фиг. 3.
На фиг. 4 показана блок-схема последовательности операций варианта осуществления способа 430, который можно выполнить с помощью процессора при обработке варианта осуществления инструкции загрузки парциальной ширины. В некоторых вариантах осуществления операции и/или способ, показанный на фиг. 4, можно выполнить с помощью и/или в пределах процессора, показанного на фиг. 1. Компоненты, признаки и специфические дополнительные детали, описанные для процессора, показанного на фиг. 1, можно также дополнительно применить к операциям и/или способу, показанному на фиг. 4, который можно выполнить с помощью и/или в пределах такого процессора. В качестве альтернативы, операции и/или способ, показанный на фиг. 4, можно выполнить с помощью и/или в пределах аналогичного или другого процессора. Более того, процессор, показанный на фиг. 1, может выполнять операции и/или способы, одинаковые, аналогичные или различные, чем те, которые показаны на фиг. 4.
Способ включает в себя прием инструкции загрузки парциальной ширины на этапе 431. В различных аспектах инструкцию можно принимать в процессорах, устройстве обработки инструкций или его части (например, блоке выборки инструкции, блоке декодирования и т.д.). В различных аспектах инструкцию можно принимать из источника, расположенного вне кристалла (например, из основной памяти, межсоединения и т.д.), или из источника, расположенного на кристалле (например, из блока выборки, кэш-памяти инструкций и т.д.). В некоторых вариантах осуществления инструкция загрузки парциальной ширины позволяет точно определить или иным образом указать ячейку памяти в качестве операнда источника и позволяет точно определить или иным образом указать регистр в качестве операнда назначения. В некоторых вариантах осуществления инструкция загрузки парциальной ширины не позволяет точно определить или иным образом указать режим загрузки парциальной ширины (например, не может иметь разряд(ы) для точного определения режима или выбора предварительно определенного режима).
Способ дополнительно включает в себя проверку или определение иным образом режима загрузки парциальной ширины на этапе 432. В качестве альтернативы, режим загрузки парциальной ширины может быть автоматически назначен без необходимости проверки или определения его. Способ также включает в себя загрузку данных из указанной ячейки памяти в процессор в ответ на инструкцию загрузки парциальной ширины на этапе 433.
Способ включает в себя запись по меньшей мере части загруженных данных на парциальной ширине регистра назначения в ответ на инструкцию загрузки парциальной ширины на этапе 434. Можно записать все загруженные данные или только часть их в зависимости от реализации инструкции. В одном примерном варианте осуществления 32 разряда из загруженных данных можно записать в 32-разрядную половину самого младшего разряда 64-разрядного регистра назначения. В других вариантах осуществления можно дополнительно использовать другие размеры данных парциальной ширины и/или регистров назначения.
Способ также включает в себя завершение записи регистр назначения с набором разрядов, которые хранятся на оставшейся ширине регистра назначения (то есть, в части, которая не используется для хранения данных парциальной ширины) и которые имеют значения разрядов, которые зависят от режима загрузки парциальной ширины процессора на этапе 435. Эти разряды могут различными (то есть иметь различные значения разрядов) от одного режима к другому. В некоторых вариантах осуществления, в первом режиме 436, они могут дополнительно включать в себя копирование, запись или иное сохранение знаковых разрядов (например, копий знакового разряда данных парциальной ширины) на оставшейся ширине регистра назначения на этапе 437. В некоторых вариантах осуществления, во втором режиме 438, они могут дополнительно включать в себя запись всех нулей на всей оставшейся ширине регистра назначения на этапе 439. В другом варианте осуществления этих первый и второй режимы можно заменить на режим, в котором используется режим загрузки с объединением или объединенной парциальной шириной или некоторый другой тип режима загрузки парциальной ширины.
Вышеупомянутый способ был описан в относительно простой форме, хотя операции можно дополнительно добавить к и/или удалить из способа. Например, как было упомянуто выше, определение режима загрузки парциальной ширины является дополнительным (например, его можно ввести вместо этого способа). В качестве другого примера, можно дополнительно добавить дополнительные операции, такие, например, как декодирование инструкции, выборка инструкции, передача разрядов по шине, прием разрядов из шины и т.д. В качестве другого примера, в данный способ можно дополнительно добавить операции, связанные с использованием результата в регистре назначения. Например, результат загрузки парциальной ширины с дополнением нулями в регистре назначения можно использовать для доступа к памяти в качестве 32-разрядного адреса памяти с дополнением нулями с помощью 64-разрядного процессора, который работает иным образом в 64-разрядном режиме обработки. В качестве другого примера, результат загрузки парциальной ширины с дополнением нулями в регистре назначения можно использовать для доступа к памяти в качестве 64-разрядного (или с другой относительно короткой шириной) адреса памяти с дополнением нулями с помощью 128-разрядного (или с другой относительно более широкой шириной) процессора, который работает иным образом в 128-разрядном (или с другой относительно широкой шириной) режиме обработки. В дополнение, хотя на блок-схеме последовательностей операций показан конкретный порядок операций согласно примерным вариантам осуществления, этот конкретный порядок является примерным. Другие варианты осуществления позволяют дополнительно выполнить операции в другом порядке, объединить некоторые операции, перекрыть некоторые операции и т.д. Например, вместо последовательного выполнения операций на этапах 434 и 435 их можно выполнить одновременно или параллельно.
Инструкции загрузки парциальной ширины, зависящей от режима, и режимы загрузки парциальной ширины, раскрытые в данном документе, являются инструкциями и режимом общего назначения, и их можно использовать для самых различных целей. Например, их можно использовать для обеспечения различных типов операций загрузки парциальной ширины для одного и того же кода операции. Однако для того, чтобы иллюстрировать некоторые концепции, ниже будут дополнительно описаны конкретные примеры использования инструкций загрузки парциальной ширины режима, зависящей от режима, и режима загрузки парциальной ширины для различной или более эффективной адресации памяти. В некоторых вариантах осуществления относительно маленькие адреса памяти или указатели можно использовать в относительно больших адресных пространствах. В качестве одного примера, 32-разрядные указатели с дополнением нулями длиной 64 разряда можно использовать в процессорах с 64-разрядной архитектурой и/или в 64-разрядных адресных пространствах. В качестве другого примера, 64-разрядные указатели с дополнением нулями длиной 128 разряда можно использовать в процессорах с 128-разрядной архитектурой и/или в 128-разрядных адресных пространствах.
Большинство современных процессоров общего назначения имеет 32-разрядные архитектуры или 64-разрядные архитектуры. В будущем, вероятно, станут популярными процессоры со 128-разрядной архитектурой. Различные процессоры специального назначения могут использовать 32-разрядные или 64-разрядные архитектуры или архитектуры с различной другой шириной, таких к 8, 9, 12, 18, 24, 36, 39, 40, 48 или 60 разрядов. Эта ширина разрядов обычно упоминается как битовая ширина с различными атрибутами в пределах архитектуры процессоров. Например, эта битовая ширина может упоминаться как поддерживаемые размеры адреса памяти, целочисленные размеры, целочисленные размеры регистра и т.п. или их комбинации. Например, процессор с 64-разрядной архитектурой может поддерживать 64-разрядный формат целого числа, может иметь 64-разрядные регистры целого числа общего назначения, может поддерживать 64-разрядные адреса памяти, которые будут использоваться для доступа к памяти и т.д. Некоторые процессоры не используют одинаковую битовую ширину для всех таких параметров. 64-разрядная ширина иногда упоминается как размер "слово" процессора. То есть процессор с 64-разрядной архитектурой может использовать 64-разрядные "слова", процессор с 32-разрядной архитектурой может использовать 32-разрядные "слова" и т.д.
Процессоры с 64-разрядной архитектурой могут иметь тенденцию к наличию некоторых расширенных признаков или преимуществ по сравнению с процессорами с 32-разрядной архитектурой. Например, в некоторых вариантах осуществления 64-разрядный процессор может иметь большое число регистров процессора, большие возможности обработки общего назначения, или иметь различные другие механизмы или признаки, которые позволяют повысить рабочие характеристики и т.д. Однако некоторые такие аспекты работы 64-разрядной архитектуры могут включать в себя относительно непроизводительные потери по сравнению с работой 32-разрядной архитектуры. Один такой возможный аспект может включать в себя использование 64-разрядных адресов памяти или указателей. Как упомянуто выше, в некоторых случаях процессор с 64-разрядной архитектурой может традиционно использовать 64-разрядные адреса памяти или указатели для доступа к памяти. Такие 64-разрядные адреса памяти или указатели обычно позволяют обеспечить доступ к данным из любого места в памяти. Следующим одним за другим или последовательным 64-разрядным значениям адреса памяти можно назначить соответствующие следующие один за другим блоки памяти. Эти блоки могут представлять собой блоки определения адресов (например, слово, байт и т.д.).
Однако многочисленные модули приложений пользовательского уровня или другие программные модули необязательно должны использовать 64-разрядные указатели памяти и/или необязательно должны обеспечивать доступ к данным из любого места в памяти достаточно часто для обоснования дополнительных затрат, связанных с использованием 64-разрядных указателей памяти. Например, часто могут возникать случаи, когда весь модуль приложений пользовательского уровня или другой программный модуль можно установить в пределах ограниченного непрерывного диапазона памяти. В качестве конкретного примера, многие широко используемые программные модули пользовательского уровня и другие модули могут содержаться в пределах четырех гигабайтов памяти. 32-разрядных адресов памяти достаточно для адресации повсюду непрерывной памяти четыре гигабайта. Использование адресов в памяти с разрядностью меньше 32 разряда может быть более эффективным и/или рациональным, чем использование адресов памяти с разрядностью больше 64 разрядов, когда программный модуль (например, код и данные, к которым будет наиболее часто осуществляться доступ) помещается в пределах четырех гигабайтов, адресуемых с помощью 32-разрядных адресов памяти или указателей. Преимущественно, использование адресов памяти с разрядностью меньше 32 разрядов в процессорах с 64-разрядной архитектурой позволяет воспользоваться преимуществами расширенных функций, обычно связанных с 64-разрядной архитектурой, при этом позволяя избирательно уменьшить ненужные или необязательные затраты, связанные с использованием 64-разрядными адресами памяти, и/или используя при необходимости больший объем потребляемой памяти (например, когда программный модуль помещается в пределах четырех гигабайтов).
Программы, как правило, работают быстрее и/или используют меньше памяти при использовании указателей с меньшей разрядностью (например, 32-разрядные указатели) по сравнению с указателями с большей разрядностью (например, 64-разрядные указатели). С одной стороны, для хранения указателей с меньшей разрядностью обычно необходимо меньше памяти. С другой стороны, указатели с меньшей разрядностью обычно занимают меньше пространства в кэш-памяти, которая используется в процессорах для ускорения доступа к часто используемым данным. В результате, при использовании указателей с меньшей разрядностью кэш-память позволяет хранить большее число таких указателей с меньшей разрядностью и/или больше данных. В дополнение, вероятность нахождения данных или указателя в кэш-памяти будет иметь тенденцию к увеличению таких указателей или данных, которые хранятся в кэш-памяти (например, при использовании указателей с меньшей разрядностью), что позволяет достичь увеличения производительности программы.
Более того, программы, которые используют меньше данных, как правило, позволяют системе работать быстрее. В некоторых системах совокупность всех используемых кодов и данных программ может не поместиться в памяти. Части программы могут временно храниться на диске и при необходимости приводить в действие память (например, в случае подкачки по обращению). Однако, когда программ меньше, например, может быть случай, когда используются указатели с меньшей разрядностью, они могут, как правило, оставлять больше места для других программ, которые не работают в текущий момент времени, чтобы осталось в памяти таким образом, чтобы такие программы не нужно было выгружать для освобождения места в памяти. В общем, производительность системы имеет тенденцию к повышению, когда происходит меньше подкачки, поскольку такая подкачка имеет тенденцию к задержке исполнения программы и может приводить к задержке ввода/вывода других программ. Другие потенциальные преимущества использования 32-разрядных адресов памяти по сравнению с 64-разрядными адресами памяти включают в себя пониженное электропотребление.
На фиг. 5 показана блок-схема варианта осуществления компьютерной системы 500, включающей в себя процессор 501 с 64-разрядной архитектурой для выполнения 32-разрядной адресации памяти с дополнением нулями. Процессор с 64-разрядной архитектурой соединен с памятью 510 с помощью механизма 509 межсоединений. Память имеет 64-разрядный адресуемый диапазон 550. 64-разрядный адресуемый диапазон включает в себя, в качестве его подмножества, меньший непрерывный 32-разрядный адресуемый диапазон 552. 32-разрядный адресуемый диапазон может иметь приблизительно четыре гигабайта. Программный модуль 554 (например, приложение пользовательского уровня или другое программное обеспечение) хранится внутри 32-разрядного адресуемого диапазона. Программный модуль имеет 32-разрядных адреса 512 памяти.
64-разрядный процессор может дополнительно иметь характеристики или признаки других процессоров, раскрытых в данном документе (например, процессор 101, показанный на фиг. 1). Процессор с 64-разрядной архитектурой включает в себя систему 513 загрузки парциальной ширины, зависящей от режима. Система загрузки парциальной ширины, зависящей от режима, может дополнительно иметь признаки и характеристики, аналогичные или такие же как у системы 113 загрузки парциальной ширины, зависящей от режима, показанной на фиг. 1. Система загрузки парциальной ширины, зависящей от режима, поддерживает режим 505 32-разрядный загрузки с дополнением нулями. Процессор также имеет 64-разрядный регистр 515. В некоторых вариантах осуществления регистр может представлять собой регистр, который можно использовать для адресации памяти, например регистр общего назначения в некоторых процессорах или регистр специального назначения, который используется для адресации памяти в других процессорах.
32-разрядную инструкцию 502 загрузки можно выполнить в системе загрузки парциальной ширины, зависящей от режима. 32-разрядная инструкция загрузки позволяет точно определить или иным образом указать один из 32-разрядных адресов 512 памяти (представляющих собой данные парциальной ширины) в качестве операнда источника и позволяет точно определить или иным образом указать 64-разрядный регистр 515 в качестве операнда назначения. Система загрузки парциальной ширины, зависящей от режима, в ответ на 32-разрядную инструкцию 502 загрузки и режим 505 32-разрядной загрузки с дополнением нулями позволяет выполнить 32-разрядную операцию загрузки с дополнением нулями 519, который включает в себя сохранение указанного 32-разрядного адреса 512 памяти в 32 разряда самого младшего разряда 64-разрядного регистра 515 назначения и сохранение нулей в 32 разрядах самого старшего разряда 64-разрядного регистра 515 назначения.
Далее, инструкцию 556 доступа к памяти можно подать в процессор. Инструкция доступа к памяти может указывать 32-разрядный адрес памяти с дополнением нулями, который является результатом 32-разрядной инструкции 502 загрузки и/или операции 519. Например, инструкция доступа к памяти может указывать регистр 515 назначения, или результат может перемещаться из регистра назначения в другой регистр, указанный инструкцией доступа к памяти. Процессор, в ответ на инструкцию 556 доступа к памяти, может обеспечить доступ 558 к памяти (например, загрузку из памяти, запись в память и т.д.) с использованием или на основании 32-разрядного адреса памяти с 64-разрядным дополнением нулями.
Приведенный выше пример является только иллюстративным. В других вариантах осуществления можно дополнительно использовать процессоры, имеющие другие архитектуры, чем 64-разрядные. Более того, в других вариантах осуществления можно дополнительно использовать адреса памяти, имеющие другие размеры, чем 32-разрядные. Например, в некоторых вариантах осуществления 64-разрядные адреса памяти с 128-разрядным дополнением нулями можно использовать в процессоре с 128-разрядной архитектурой и/или 128-разрядном адресном пространстве или в режиме адресации. В качестве другого примера, 16-разрядный или 48-разрядный указатели с 64-разрядным дополнением нулями можно дополнительно использовать в процессоре с 64-разрядной архитектурой или с 64-разрядным адресным пространством. В общем, указатели или адреса памяти с меньшей разрядностью и с дополнением нулями можно использовать в процессорах с архитектурой с большей разрядностью или в адресном пространстве с большей разрядностью.
Модули приложений пользовательского уровня или другие непривилегированные программные модули должны обычно иметь способ изменения режима загрузки парциальной ширины в случае, когда это необходимо делать (например, когда они предназначены для использования другого режима, чем текущий существующий режим). Это можно выполнить различными способами. В некоторых вариантах осуществления режим загрузки парциальной ширины может иметь возможность непосредственного изменения с помощью программных модулей пользовательского уровня или непривилегированных программных модулей. В других вариантах осуществления программные модули пользовательского уровня или непривилегированные программные модули могут не иметь возможность непосредственного изменения режима загрузки парциальной ширины. Скорее всего, в некоторых вариантах осуществления изменение режима загрузки парциальной ширины можно зарезервировать для привилегированных программных модулей (например, модуля операционной системы, модуля монитора виртуальной машины и т.д.). В таких вариантах осуществления привилегированные программные модули могут предусматривать интерфейс (например, услугу, интерфейс и т.д.), который позволяет программным модулям пользовательского уровня или непривилегированные программным модулям осуществлять запрос, относительно того, чтобы привилегированные программные модули изменили режим загрузки парциальной ширины.
На фиг. 6 показана блок-схема, иллюстрирующая вариант осуществления взаимодействия между программным модулем 670 пользовательского уровня (или другим непривилегированным программным модулем) и модулем 660 операционной системы (или другим привилегированным программным модулем) для изменения режима загрузки парциальной ширины. Программный модуль пользовательского уровня включает в себя метаданные 672, в том числе индикатор 674, для использования заданного режима загрузки парциальной ширины. Заданный режим загрузки парциальной ширины может представлять собой один из режимов, который требуется для использования или предназначен для использования программных модулей. В качестве одного примера, метаданные могут включать в себя формат объектного модуля или другую структуру данных, которая используется программным модулем пользовательского оборудования для передачи информации о себе в модуль 660 операционной системы. Например, модуль метаданных может включать в себя флаг или один или более разрядов для указания желаемого режима загрузки парциальной ширины. Модуль операционной системы включает в себя модуль 662 загрузчика программы. Модуль загрузчика программы и/или модуль операционной системы может быть выполнен с возможностью проверки метаданных, в том числе проверки индикатора 674. Модуль операционной системы может включать в себя модуль 664 изменения режима загрузки парциальной ширины, который может быть выполнен с возможностью изменения режима 605 загрузки парциальной ширины из процессора в указанном режиме 674 загрузки парциальной ширины. Например, режим загрузки парциальной ширины можно изменить в регистре конфигурации или управления процессора.
В некоторых вариантах осуществления процессор может иметь набор инструкций, который включает в себя инструкцию для изменения режима загрузки парциальной ширины. В этом примере инструкция будет представлять собой инструкцию привилегированного уровня, зарезервированную для модулей операционной системы или аналогичных программных модулей привилегированного уровня, хотя в других вариантах осуществления инструкция может представлять собой инструкцию, которая может использоваться программными модулями пользовательского уровня. Инструкция может использоваться модулем 664 изменения режима загрузки парциальной ширины в случае, когда будет изменяться режим загрузки парциальной ширины. Инструкцию можно декодировать или исполнять или иным образом выполнять с помощью процессора для изменения режима из начального режима в другой отличный режим. В некоторых вариантах осуществления после такого изменения режима можно дополнительно выполнить операцию перехода, чтобы осуществить выборку и декодирование инструкций в обновленном другом режиме вместо использования инструкций, находящихся уже конвейере, которые были декодированы в обновленном режиме, который существовал перед выполнением инструкции. В некоторых вариантах осуществления набор инструкций может также иметь инструкцию для считывания режима загрузки парциальной ширины. Эта инструкция может представлять собой инструкцию пользовательского уровня, которую могут использовать программные модули пользовательского уровня или инструкции привилегированного уровня, зарезервированные для модулей операционной системы или аналогичных программных модулей привилегированного уровня. Инструкцию можно декодировать, и после исполнения или иного выполнения она позволяет считывать режим загрузки парциальной ширины (например, считывать один или более разрядов в регистре). Посредством примера модули кода пользовательского уровня или другие программные модули могут использовать такую инструкцию для обучения режима загрузки парциальной ширины.
Выше было обсуждено возможное использование одного режима загрузки парциальной ширины для поддержки 32-разрядной адресации в 64-разрядном процессоре. Модули операционной системы, модули обработки прерываний и возможно другое программное обеспечение могут главным образом использовать 64-разрядную адресацию памяти вместо 32-разрядной адресации памяти с дополнением нулями. В результате модули операционной системы, модули обработки прерываний и т.п. не могут использовать режим загрузки парциальной ширины, который обеспечивает 32-разрядную загрузку с дополнением нулями, а скорее могут использовать режим загрузки парциальной ширины, который обеспечивает альтернативный тип 32-разрядной загрузки для той же самой инструкции или кода операции, такой, например, как 32-разрядная загрузка с расширением знакового разряда или объединяющая 32-разрядная загрузка. Как показано, в некоторых вариантах осуществления процессор может включать в себя логическую схему или блок 676 возврата в исходный режим загрузки парциальной ширины по умолчанию, который может вызвать или привести при определенных условиях к автоматическому возврату в режим загрузки парциальной ширины по умолчанию. Примеры таких условий могут включать в себя переключение или переход от исполнения кода пользовательского уровня к коду операционной системы после обнаружения или передачи сообщения о прерывании 678 в модуль 668 обработки прерываний, после начала обработки прерывания модулем обработки прерываний или т.п. Блок или логическую схему можно реализовать в виде аппаратных средств или аппаратных средств, потенциально объединенных с некоторыми программно-аппаратными средствами и/или возможно некоторым программным обеспечением. В режиме загрузки парциальной ширины по умолчанию инструкцию или код операции можно рассматривать в качестве 32-разрядной загрузки с расширением знакового разряда или объединяющей 32-разрядной загрузки, например, вместо 32-разрядной загрузки с дополнением нулями. В некоторых вариантах осуществления логическая схема или блок возврата в режим загрузки парциальной ширины по умолчанию может также вызвать автоматический возврат режима загрузки парциальной ширины из режима загрузки парциальной ширины по умолчанию обратно в режим загрузки парциальной ширины, который существовал перед переключением на код операционной системы или обработку прерыванием (например, после возврата из прерывания 679). Инструкция возврата позволяет считать режим загрузки парциальной ширины после возврата, чтобы определить, как декодировать инструкции загрузки парциальной ширины.
На фиг. 7 показана блок-схема варианта осуществления способа 780, который может выполнять модуль операционной системы, привилегированный модуль или модуль другого уровня системы. Способ включает в себя проверку метаданных программного модуля на этапе 781. Он включает в себя проверку индикатора режима загрузки парциальной ширины процессора, которую должен использовать процессор для выполнения инструкции загрузки парциальной ширины. Инструкция загрузки парциальной ширины должна указывать ячейку памяти в качестве операнда источника и указывать регистр в качестве операнда назначения.
Способ включает в себя изменение режима загрузки парциальной ширины процессора на указанный режим загрузки парциальной ширины на этапе 782. В некоторых вариантах осуществления изменение режима загрузки парциальной ширины может выполняться с возможностью управления изменением значений разрядов, которые будут сохраняться процессором в части указанного регистра, который не будет использоваться для хранения парциальной ширины данных, загруженных из памяти. В некоторых вариантах осуществления модуль операционной системы или модуль другого уровня системы может поддерживать набор метаданных для регистрации или отслеживания того, какие программы используют какой режим загрузки парциальной ширины. Некоторые программы могут использовать один режим загрузки парциальной ширины, при исполнении инструкции загрузки парциальной ширины (например, заданного кода операции), тогда как другие программы могут использовать другой различный режим загрузки парциальной ширины, при исполнении этой инструкции загрузки парциальной ширины (например, тот же самый заданного кода операции). Модуль операционной системы или другой модуль может осуществлять доступ к метаданным, при переключении между программами и/или при возврате из прерываний для определения того, какой режим загрузки парциальной ширины для размещения процессор в нем подходит для программы. Посредством примера в некоторых вариантах осуществления операционная система может использовать инструкцию для изменения режима при переключении на программу, которую требует использовать различный режим. Посредством примера в некоторых вариантах осуществления операционная система может использовать различную инструкцию для считывания текущего режима, чтобы узнать, должен или нет изменяться режим при переключении программы.
В некоторых вариантах осуществления модуль приложения пользовательского уровня или другой непривилегированный программный модуль может включать в себя модуль информации об отладчике или другой модуль метаданных для передачи в модуль отладчика информации о том, какой режим загрузки парциальной ширины желает или намерен использовать программный модуль. Модуль отладчика может осуществлять доступ к и проверять этот модуль информации об отладке или другой модуль метаданных для определения режим загрузки парциальной ширины, который будет использоваться программным обеспечением. Это позволяет модулю отладчика правильно интерпретировать то, как инструкции будут обрабатываться процессором.
Для простоты описания в данном документе часто описываются два различных режима и/или значения кода операции. Однако следует понимать, что в других вариантах осуществления можно использовать три, четыре или более различных режимов и/или значений для заданного кода операции. Посредством примера процессор может иметь два или более разрядов для указания того, какие из многочисленных таких различных значений следует использовать для заданного кода операции.
В данном документе особое внимание было обращено на различные интерпретации инструкций загрузки парциальной ширины. В других вариантах осуществления другой тип инструкции помимо инструкции загрузки парциальной ширины можно интерпретировать в качестве инструкции загрузки парциальной ширины (например, инструкцию загрузки парциальной ширины с дополнением нулями) в другом режиме.
Примерные архитектуры ядер, процессоры и архитектуры компьютеров
Ядра процессора можно реализовать различным образом для различных целей и в различных процессорах. Например, реализации таких ядер могут включать в себя: 1) ядро исполнения инструкций без изменения их очередности общего назначения, предназначенное для вычислений общего назначения; 2) высокопроизводительное ядро исполнения инструкций с изменением их очередности общего назначения, предназначенное для вычислений общего назначения; 3) ядро специального назначения, предназначенное в основном для графики и/или научных вычислений (требующих высокой производительности). Реализации различных процессоров могут включать в себя: 1) ЦПУ, включающее в себя одно или более ядер исполнения инструкций с изменением их очередности общего назначения, предназначенных для вычислений общего назначения и/или одно или более ядер без изменения очередности исполнения инструкций, предназначенных для вычисления общего назначения; и 2) сопроцессор, включающий в себя одно или более ядер специального назначения, предназначенных в основном для графики и/или научных (производственных) вычислений. Такие различные процессоры приводят к различным архитектурам компьютерных систем, которые могут включать в себя: 1) сопроцессор на отдельном кристалле относительно ЦПУ; 2) сопроцессор на отдельном кристалле в одном и том же корпусе, как и ЦПУ; 3) сопроцессор на одинаковом кристалле, как и ЦПУ (в этом случае, такой сопроцессор иногда упоминается как логическая схема специального назначения, такая как встроенная графика и/или логическая схема для научных вычислений (требующих высокой производительности), или как ядра специального назначения); и 4) система на кристалле, которая может включать в себя на том же самом кристалле описанное ЦПУ (иногда упоминается как ядро(а) приложений или процессор(ы) приложений), вышеописанные сопроцессор и дополнительные функциональные возможности. Примерная архитектура ядер описана ниже после описания примерных процессоров и архитектур компьютеров.
Примерные архитектуры ядер
Блок-схема ядра исполнения инструкций с и без изменения их очередности
На фиг. 8А показана блок-схема, иллюстрирующая как примерный конвейер исполнения инструкций без изменения их очередности и примерное переименование регистров, так и конвейер выдачи/исполнения инструкций с изменением их очередности согласно вариантам осуществления изобретения. На фиг. 8В показана блок-схема, иллюстрирующая как примерный вариант осуществления ядра архитектуры исполнения инструкций без изменения их очередности и примерное переименование регистров, так и ядро архитектуры выдачи/исполнения инструкций с изменением их очередности, которое будет включено в процессор согласно вариантам осуществления изобретения. Прямоугольники, показанные сплошной линией на фиг. 8А-В, иллюстрируют конвейер исполнения инструкций без изменения их очередности и ядро исполнения инструкций с изменением их очередности, при этом дополнительное добавленные прямоугольники, показанные пунктирной линией, иллюстрируют переименование регистров, конвейер выдачи/исполнения инструкций с изменением их очередности и ядро. Учитывая, что аспект, связанный с исполнением инструкций без изменения их очередности, представляет собой подмножество аспектов, связанных с исполнением инструкций с изменением их очередности, ниже будет описан аспект, связанный с исполнением инструкций с изменением их очередности.
На фиг. 8А конвейер 800 процессора включает в себя этап 802 выборки, этап 804 декодирования длины, этап 806 декодирования, этап 808 выделения, этап 810 переименования, этап 812 планирования (также известный как этап отправки или выдачи), этап 814 считывания регистра/памяти, этап 816 исполнения, этап 818 записи/перезаписи памяти, этап 822 обработки исключений и этап 824 фиксации изменений.
На фиг. 8В показано ядро 890 процессора, включающее в себя блок 830 интерфейсной части, соединенный с блоком 850 механизма исполнения, и они оба соединены с блоком 870 памяти. Ядро 890 может представлять собой ядро с сокращенным набором инструкций (RISC), ядро с полным набором инструкций (CISC), ядро с очень длинным словом инструкции (VLIW) или гибридный или альтернативный тип ядра. В качестве еще одной опции, ядро 890 может представлять собой ядро специального назначения, такое, например, как ядро сети или связи, механизм сжатия, ядро сопроцессора, ядро блока обработки компьютерной графики общего назначения (GPGPU), ядро графики и т.п.
Блок 830 интерфейсной части включает в себя блок 832 предсказания ветвлений, соединенный с блоком 834 кэш-памяти инструкций, который соединен с буфером 836 быстрого преобразования адреса инструкции (TLB), который соединен с блоком 838 выборки инструкций, который соединен с блоком 840 декодирования. Блок 840 декодирования (или декодер) может декодировать инструкции и вырабатывать в виде выходного сигнала одну или более микроопераций, точки входа в микрокод, микроинструкции, другие инструкции или другие сигналы управления, из которых декодируют, или которые иным образом отражают, или из которых получаются первоначальные инструкции. Блок 840 декодирования можно реализовать с использованием всевозможных механизмов. Примеры подходящих механизмов включают в себя, но не ограничиваются ими, таблицы поиска, аппаратные реализации, программируемые логические матрицы (PLA), постоянные запоминающие устройства (ROM) микрокода и т.д. В одном варианте осуществления ядро 890 включают в себя ROM микрокода или другой носитель, который хранит микрокод для некоторых макроинструкций (например, в блоке 840 декодирования или иным образом внутри блока 830 интерфейсной части). Блок 840 декодирования соединен с блоком 852 переименования/выделения в блоке 850 механизма исполнения.
Блок 850 механизма исполнения включает в себя блок 852 переименования/выделения, соединенный с блоком 854 завершения и набор из одного или более блоков 856 планировщика. Блок(и) 856 планировщика представляет(ют) собой любое число различных планировщиков, включая станции резервирования, центральное окно инструкции и т.д. Блок(и) 856 планировщика соединены с блоком(ами) 858 файла(ов) физических регистров. Каждый из блоков 858 файла(ов) физических регистров представляет собой один или более файлов физических регистров, некоторые из которых хранят один или более различных типов данных, такие как скалярное целое число, скалярная плавающая точка, упаковало целое число, упакованная плавающая точка, векторное целое число, векторная плавающая точка, статус (например, указатель инструкции, который представляет собой адрес следующей инструкции, которая будет исполнена), и т.д. В одном варианте осуществления блок(и) 858 файла(ов) физических регистров содержит блок векторных регистров, блок регистров маски записи и блок скалярных регистров. Эти блоки регистров могут предусматривать архитектурные векторные регистры, векторные регистры маски и регистры общего назначения. Блок(и) 858 файла(ов) физических регистров перекрывается(ются) блоком 854 завершения для иллюстрации различных способов, которыми можно реализовать переименование регистров и исполнение инструкций с изменением их очередности (например, использование буфера(ов) переупорядочения и файла(ов) регистров завершения; использование будущего(их) файл(ов), буфера(ов) истории и файла(ов) регистров завершения; использование карт регистров и группы регистров и т.д.). Блок 854 завершения и блок(и) 858 файла(ов) физических регистров соединены с кластером(ами) 860 исполнения. Кластер(ы) 860 исполнения включает в себя набор из одного или более блоков 862 исполнения и набор из одного или более блоков 864 доступа к памяти. Блоки 862 исполнения могут выполнять различные операции (например, сдвиг, сложение, вычитание, умножение) и над различными типами данных (например, над скалярной плавающей точкой, упакованным целым числом, упакованной плавающей точкой, векторным целым числом, векторной плавающей точкой). Хотя некоторые варианты осуществления могут включать в себя ряд блоков исполнения, выделенных для специфических функций или набора функций, другие варианты осуществления могут включать в себя только один блок исполнения или многочисленные блоки исполнения, которые все вместе выполняют все функции. Блок(и) 856 планировщика, блок(и) 858 файла(ов) физических регистров и кластер(ы) 860 исполнения по возможности показаны как многочисленные, и так как некоторые варианты осуществления предусматривают создание отдельных конвейеров для некоторых типов данных/операций (например, конвейер для скалярных целых чисел, конвейер для скалярной плавающей точки/упакованного целого числа плавающей точки/упакованной плавающей точки/векторного целого числа/векторной плавающей точки и/или конвейер доступа к памяти, каждый из которых имеет свой собственный блок 856 планировщика, блок файла(ов) физических регистров и/или кластер исполнения - и в случае отдельного конвейера доступа к памяти реализованы некоторые варианты осуществления, в которых только кластер исполнения этого конвейера имеет(ют) блок(и) доступа к памяти 864). Следует также понимать, что в тех случаях, когда используются отдельные конвейеры, один или более из этих конвейеров может изменять очередность выдачи/исполнения инструкций, а остальные не могут изменять их очередность.
Набор блоков 864 доступа к памяти соединен с блоком 870 памяти, который включает в себя блок 872 TLB данных, соединенный с блоком 874 кэш-памяти данных, соединенным с блоком 876 кэш-памяти уровня 2 (L2). В одном примерном варианте осуществления блоки 864 доступа к памяти могут включать в себя блок загрузки, блок адреса хранения и блок данных хранения, каждый из которых соединен с блоком 872 TLB данных в блоке 870 памяти. Блок 834 кэш-памяти инструкций дополнительно соединен с блоком 876 кэш-памяти уровня 2 (L2) в блоке 870 памяти. Блок 876 кэш-памяти L2 соединен с одним или более другими уровнями кэш-памяти и, в конечном счете, с основной памятью.
Посредством примера, при примерном переименовании регистра архитектура ядра выдачи/исполнения инструкций с изменением их очередности позволяет реализовать конвейер 800 следующим образом: 1) блок 838 выборки инструкций выполняет этапы 802 и 804 выборки и декодирования длины; 2) блок 840 декодирования выполняет этап 806 декодирования; 3) блок 852 переименования/выделения выполняет этап 808 выделения и этап 810 переименования; 4) блок(и) 856 планировщика выполняет этап 812 планирования; 5) блок(и) 858 файла(ов) физических регистров и блок 870 памяти выполняет этап 814 считывания регистра/считывания памяти; кластер 860 исполнения выполняет этап 816 исполнения; 6) блок 870 памяти и блок(и) 858 файла(ов) физических регистров выполняет этап 818 перезаписи/записи в память; 7) различные блоки могут быть включены в этап 822 обработки исполнения; и 8) блок 854 завершения и блок(и) 858 файла(ов) физических регистров выполняет(ют) этап 824 фиксации изменений.
Ядро 890 позволяет поддерживать один или более наборов инструкций (например, набор инструкций х86 (с некоторыми расширениями, которые были добавлены с помощью более новых версий); набор инструкций MIPS от MIPS Technologies of Sunnyvale, CA; набор инструкций ARM (с опциональными дополнительными расширениями, такими как NEON) от ARM Holdings of Sunnyvale, CA), включая в себя инструкцию(и), описанную(ые) в данном документе. В одном варианте осуществления ядро 890 включают в себя логику для поддержки расширения набора инструкций для упакованных данных (например, AVX1, AVX2), тем самым позволяя выполнять операции, которые используются многими мультимедийными приложениями, с использованием упакованных данных.
Следует понимать, что ядро может поддерживать многопоточность (исполняя два или более параллельных наборов операций или потоков), и ее можно выполнить множеством способов, включающих в себя многопоточность с квантованием по времени, одновременную многопоточность (где одно физическое ядро предусматривает логическое ядро для каждого из потоков, причем физическое ядро одновременно выполняет многопоточную данных) или их комбинации (например, выборку с квантованием по времени, и декодирование и одновременную многопоточную обработку данных, соответственно, как, например, в технологии Intel®Hyperthreading).
Хотя переименование регистров описано в контексте исполнения инструкций с изменением их очередности, следует понимать, что переименование регистров можно использовать в архитектуре без изменения очередности исполнения инструкций. Хотя иллюстрированный вариант осуществления процессора также включает в себя отдельные блоки 834/874 кэш-памяти данных и инструкций и совместно используемый блок 876 кэш-памяти L2, альтернативные варианты осуществления могут иметь единственную внутреннюю кэш-память для обеих инструкций и данных, таких, например, как внутренняя кэш-память Уровня 1 (LI) или многочисленные уровни внутренней кэш-памяти. В некоторых вариантах осуществления система может включать в себя комбинация из внутренней кэш-памяти и внешней кэш-памяти, которая является внешней по отношению к ядру и/или процессору. В качестве альтернативы, каждая из кэш-памяти может быть внешней по отношению к ядру и/или процессору.
Конкретная примерная архитектура ядра исполнения инструкций без изменения их очередности
Фиг. 9А-В иллюстрируют блок-схему более конкретной примерной архитектуры ядра исполнения инструкций без изменения их очередности, причем ядро будет иметь один из нескольких логических блоков (в том числе другие ядра того же самого типа и/или различных типов) в кристалле. Логические блоки поддерживают связь через широкополосную сеть межсоединений (например, кольцевую сеть) с некоторой логикой с фиксированной функцией, интерфейсы ввода-вывода памяти и другую необходимую логику ввода/вывода в зависимости от приложения.
На фиг. 9А показана блок-схема однопроцессорного ядра наряду с его подсоединением к некристальной сети 902 межсоединений и с его локальным подмножеством 904 кэш-памяти Уровня 2 (L2), согласно вариантам осуществления изобретения. В одном варианте осуществления декодер 900 инструкций поддерживает набор инструкций х86 с расширением набора инструкций для упакованных данных. Кэш-память 906 L1 позволяет обеспечить доступам с малой задержкой к кэш-памяти в скалярном и векторном блоках. Хотя в одном варианте осуществления (для упрощения конструкций), скалярный блок 908 и векторный блок 910 используют отдельные наборы регистров (соответственно, скалярные регистры 912, и векторные регистры 914) и данные, передаваемые между ними, записываются в память и затем повторно считываются в/из кэш-памяти 906 уровня 1 (LI), альтернативные варианты осуществления изобретения могут использовать различные подходы (например, использовать один набор регистров или включать в себя канал связи, который позволяет обмениваться данными между двумя файлами регистров без записи и повторного считывания).
Локальное подмножество 904 кэш-памяти L2 является частью глобальной кэш-памяти L2, который разделен на отдельные локальные подмножества, по одному на ядро процессора. Каждое ядро процессора имеет путь прямого доступа к своему собственному локальному подмножеству 904 кэш-памяти L2. Данные, считанные ядром процессора, сохраняются в своем подмножестве 904 кэш-памяти L2, и к ним можно получить быстрый доступ параллельно с другими ядрами процессора, которые имеют доступ к своим собственным локальным подмножествам кэш-памяти L2. Данные, считанные ядром процессора, сохраняются в своем собственном подмножестве 904 кэш-памяти L2 и, при необходимости, заполняется из других подмножеств. Кольцевая сеть обеспечивает связность для совместно используемых данных. Кольцевая сеть является двунаправленной, позволяя агентам, таким как ядра процессора, кэш-память L2 и другие логические блоки, поддерживать связь друг с другом в пределах чипа. Каждый кольцевой канал передачи данных имеет ширину 1012 разрядов в каждом направлении.
На фиг. 9В показан расширенный вид части ядра процессора (фиг. 9А) согласно вариантам осуществления изобретения. На фиг. 9В показана часть кэш-память 906А данных L1 кэш-памяти 904 L1, а также более подробный вид, относящийся к векторному блоку 910 и векторным регистрам 914. В частности, векторный блок 910 представляет собой блок векторной обработки с шириной 16 разрядов (VPU) (смотри АЛУ 928 с шириной 16 разрядов), который исполняет одну или более инструкций для целых чисел, чисел с плавающей точкой с одинарной точностью и чисел с плавающей точкой двойной точности. VPU поддерживает свизлинг входов регистра с помощью блока 920 преобразования ссылок, преобразование чисел с помощью блоков 922А-В преобразования чисел и репликацию с помощью блока 924 репликации на входе памяти. Регистры 926 маски записи обеспечивают предсказание результирующих записей векторов.
Процессор с встроенным контроллером памяти и графикой
На фиг. 10 показана блок-схема процессора 1000, который может иметь больше одного ядра, может иметь встроенный контроллер памяти и может иметь встроенную графику согласно вариантам осуществления изобретения. Прямоугольники, показанные на фиг.10 сплошной линией, иллюстрируют процессор 1000 с одним ядром 1002А, системный агент 1010, набор из одного или более блоков 1016 контроллера шины, в то время как опциональное добавление с прямоугольниками, показанными штриховыми линиями, иллюстрирует альтернативный процессор 1000 с многочисленными ядрами 1002A-N, набор из одного или более встроенных блоков 1014 контроллера памяти в блоке 1010 системного агента и логическую схему 1008 специального назначения.
Таким образом, различные реализации процессора 1000 могут включать в себя: 1) ЦПУ с логической схемой 1008 специального назначения, которая представляет собой встроенную графику и/или логическую схему для научных вычислений (требующих высокой производительности) (которая может включать в себя одно или более ядер), и ядра 1002A-N, которые представляют собой одно или более ядер общего назначения (например, ядра без изменения очередности исполнения инструкций общего назначения, ядра с изменением очередности исполнения инструкций общего назначения и их комбинации); 2) сопроцессор с ядрами 1002A-N, который представляет собой большое количество ядер специального назначения, предназначенных в основном для графики и/или научных вычислений (требующих высокой производительности); и 3) сопроцессор с ядрами 1002A-N, который представляет собой большое количество ядер без изменения очередности исполнения инструкций. Таким образом, процессор 1000 может представлять собой процессор общего назначения, сопроцессор или процессор специального назначения, такой, например, сетевой или связной процессор, механизм сжатия, графический процессор, GPGPU (блок обработки компьютерной графики общего назначения), высокопроизводительный сопроцессор с многочисленными встроенными ядрами (MIC) (включающий в себя 30 или более ядер), встроенный процессор или т.п. Процессор можно реализовать на одном или более чипах. Процессор 1000 может быть частью и/или можно реализовать на одной или более подложках с использованием любого числа технологий обработки, таких, например, как BiCMOS, CMOS или NMOS.
Иерархия памяти включает в себя один или более уровней кэш-памяти внутри ядер, набор или один или более совместно используемых блоков 1006 кэш-памяти и внешнюю память (не показано), соединенную с набором блоков 1014 контроллера со встроенной памятью. Набор совместно используемых блоков 1006 кэш-памяти может включать в себя один или более кэш-памяти среднего уровня, таких как уровня 2 (L2), уровня 3 (L3), уровня 4 (L4) или других уровней кэш-памяти, кэш-память последнего уровня (LLC) и/или их комбинации. Хотя в одном варианте осуществления блок 1012 межсоединений, основанных на кольце, осуществляет межсоединение логической схемы 1008 со встроенной графикой, набор совместно используемых блоков 1006 кэш-памяти и блок 1010 системного агента/блок(и) 1014 контроллера со встроенной памятью, альтернативные варианты осуществления позволяют использовать любое количество хорошо известных технологий для межсоединения таких блоков. В одном варианте осуществления между одним или более блоками 1006 кэш-памяти и ядрами 1002A-N поддерживается связность.
В некоторых вариантах осуществления один или более ядер 1002A-N выполнены с возможностью многопоточной обработки данных. Системный агент 1010 включает в себя эти компоненты, координирующие и приводящие в действие ядра 1002A-N. Блок 1010 системного агента может включать в себя, например, блок управления мощностью (PCU) и блок отображения. PCU может включать в себя логическую схему и компоненты, необходимые для регулировки состояния мощности ядер 1002A-N и логической схемы 1008 со встроенной графикой. Блок отображения предназначен для возбуждения одного или более дисплеев, соединенных внешним образом.
Ядра 1002A-N могут быть однородными или неоднородными с точки зрения набора инструкций архитектуры; то есть два или более ядер 1002A-N можно выполнить с возможностью исполнения одного и того же набора инструкций, в то время как другие можно выполнить с возможностью исполнения только подмножества из этого набора инструкций или другого набора инструкций.
Примерные архитектуры компьютеров
На фиг. 11-14 представлены блок-схемы примерных архитектур компьютеров. Подходят также и другие конструкции и конфигурации, которые известны в технике, для портативных персональных компьютеров типа "лэптоп", настольных персональных компьютеров, карманных компьютеров, персональных цифровых помощников, инженерных рабочих станций, серверов, сетевых устройств, сетевых концентраторов, переключателей, встроенных процессоров, процессоров цифровых сигналов (DSP), графических устройств, видеоигровых устройств, телевизионных приставок, микроконтроллеров, сотовых телефонов, портативных мультимедийных плееров, переносных устройств и различных других электронных устройств. В общем, подходит огромное множество систем или электронных устройств, способных к объединению процессора и/или другой исполнительной логической схемы, как раскрыто в данном документе.
Обратимся теперь к фиг. 11, на которой показана блок-схема системы 1100 в соответствии с одним вариантом осуществления настоящего изобретения. Система 1100 может включать в себя один или более процессоров 1110, 1115, которые соединены с концентратором 1120 контроллеров. В одном варианте осуществления концентратор 1120 контроллеров включает в себя концентратор контроллеров памяти графических данных (GMCH) 1190 и концентратор ввода/вывода (IOH) 1150 (который может располагаться на отдельном чипе); GMCH 1190 включает в себя память и графические контроллеры, к которым подсоединена память 1140 и сопроцессор 1145; IOH 1150 подсоединяет устройства 1160 ввода/вывода (I/O) к GMCH 1190. В качестве альтернативы, память и графические контроллеры по одному или все вместе интегрированы внутри процессора (как описано в данном документе), память 1140 и сопроцессор 1145 соединены непосредственно с процессором 1110, и концентратор 1120 контроллеров в виде одного чипа соединен с IOH 1150.
Опциональный тип дополнительных процессоров 1115 обозначен на фиг. 11 пунктирными линиями. Каждый процессор 1110, 1115 может включать в себя одно или более процессорных ядер, описанных в данном документе, и может представлять собой некоторую версию процессора 1000.
Память 1140 может представлять собой, например, динамическое запоминающее устройство (DRAM), память на фазовых переходах (РСМ) или их комбинацию. Согласно по меньшей мере одному варианту осуществления концентратор 1120 контроллеров поддерживает связь с процессором(ами) 1110, 1115 через многоточечную шину, такую как системная шина (FSB), интерфейс "точка-точка", такой как межсоединение QuickPath (QPI) или аналогичное соединение 1195.
В одном варианте осуществления сопроцессор 1145 представляет собой процессор специального назначения, такой, например, как высокопроизводительный процессор MIC, сетевой или связной процессор, механизм сжатия, графический процессор, GPGPU, встроенный процессор или т.п. В одном варианте осуществления концентратор 1120 контроллеров может включать в себя встроенный графический ускоритель.
Существует множество различий между физическими ресурсами 1110, 1115 с точки зрения спектра метрик эксплуатационных характеристик, включающих в себя архитектурные, микроархитектурные, тепловые характеристики, характеристики потребляемой мощности и т.п.
В одном варианте осуществления процессор 1110 исполняет инструкции, которые управляют операциями обработки данных общего типа. Встроенные внутри инструкции могут представлять собой инструкции сопроцессора. Процессор 1110 распознает эти инструкции сопроцессора в виде типа, который должен исполнять присоединенный сопроцессор 1145. Соответственно, процессор 1110 подает эти инструкции сопроцессора (или сигналы управления, представляющие собой инструкции сопроцессора) по шине сопроцессора или другому межсоединению в сопроцессор 1145. Сопроцессор(ы) 1145 принимает(ют) и исполняет(ют) принятые инструкции сопроцессора.
Обратимся теперь к фиг. 12, на которой показана блок-схема первой более конкретной примерной системы 1200 в соответствии с вариантом осуществления настоящего изобретения. Как показано на фиг. 12, многопроцессорная система 1200 представляет собой систему двухточечных межсоединений и включает в себя первый процессор 1270 и второй процессор 1280, соединенный через двухточечное межсоединение 1250. Каждый из процессоров 1270 и 1280 может представлять собой некоторую версию процессора 1000. В одном варианте осуществления изобретения процессоры 1270 и 1280 представляют собой, соответственно, процессоры 1110 и 1115, тогда как сопроцессор 1238 представляет собой сопроцессор 1145. В другом варианте осуществления процессоры 1270 и 1280 представляют собой, соответственно, сопроцессор 1145 процессора 1110.
Процессоры 1270 и 1280 показаны как включающие в себя блоки 1272 и 1282 контроллеров со встроенной памяти (IMC), соответственно. Процессор 1270 также включает в себя в качестве части двухточечных (P-P) интерфейсов 1276 и 1278 своих блоков контроллера шины; аналогичным образом второй процессор 1280 включает в себя P-P интерфейсы 1286 и 1288. Процессоры 1270, 1280 могут осуществлять обмен информацией через двухточечный (P-P) интерфейс 1250 с использованием схем 1278, 1288 P-P интерфейса. Как показано на фиг. 12, EVIC 1272 и 1282 подсоединяют процессоры к соответствующей памяти, а именно, к памяти 1232 и памяти 1234, которые могут представлять собой части основной памяти, локально присоединенной к соответствующим процессорам.
Процессоры 1270, 1280 могут по отдельности осуществлять обмен информацией с набором 1290 микросхем через отдельные P-P интерфейсы 1252, 1254 с использованием схем 1276, 1294, 1286, 1298 двухточечных интерфейсов. Набор 1290 микросхем может дополнительно осуществлять обмен информацией с сопроцессором 1238 через высокопроизводительный интерфейс 1239. В одном варианте осуществления сопроцессор 1238 представляет собой процессор специального назначения, такой, например, как высокопроизводительный процессор MIC, сетевой или связной процессор, механизм сжатия, графический процессор, GPGPU, встроенный процессор или т.п.
Совместно используемая кэш-память (не показана) может быть включена в процессор или за пределами обоих процессоров, еще соединенных с процессорами через P-P межсоединение таким образом, чтобы информацию о локальной кэш-памяти каждого или обоих процессоров можно было сохранить в совместно используемой кэш-памяти, если процессор находится в режиме малого электропотребления.
Набор 1290 микросхем может быть соединен с первой шиной 1216 через интерфейс 1296. В одном варианте осуществления первая шина 1216 может представлять собой шину межсоединения периферийных компонентов (PCI) или шину, такую как шина PCI Express, или другую шину межсоединения I/O третьего поколения, хотя объем настоящего изобретения не ограничивается этим.
Как показано на фиг. 12, различные устройства 1214 I/O могут быть связаны с первой шиной 1216 наряду с межшинным мостом 1 218, который соединяет первую шину 1216 со второй шиной 1220. В одном варианте осуществления один или более дополнительных процессоров 1215, таких как сопроцессоры, высокопроизводительные процессоры MIC, ускорители GPGPU (такие, например, как графические ускорители или блоки обработки цифровых сигналов (DSP)), программируемые вентильные матрицы, или любой другой процессор соединены с первой шиной 1216. В одном варианте осуществления вторая шина 1220 может представлять собой шину с малым числом выводов (LPC). Различные устройства могут быть соединены со второй шиной 1220, в том числе, например, с клавиатурой и/или мышью 1222, устройствами 1227 связи или блоком 1228 памяти, таким как накопитель на дисках или другое устройство массовой памяти, которое может включать в себя инструкции/код и данные 1230 согласно одному варианту осуществления.
Кроме того, блок 1224 ввода-вывода аудио может быть соединен со второй шиной 1220. Следует отметить, что возможны и другие архитектуры. Например, вместо двухточечной архитектуры, показанной на фиг. 12, в системе может быть реализована многоточечная шина или другая такая архитектура.
Обратимся теперь к фиг. 13, на которой показана блок-схема второй более конкретной примерной системы 1300 в соответствии с вариантом осуществления настоящего изобретения. Одинаковые элементы, показанные на фиг. 12 и 13, обозначены одинаковыми ссылочными позициями, и некоторые аспекты, показанные на фиг. 12, были опущены на фиг. 13 во избежание излишнего усложнения других аспектов, показанных на фиг. 13.
На фиг. 13 показано, процессоры 1270, 1280 могут включать в себя встроенную память и I/O управляющую логическую схему ("CL") 1272 и 1282, соответственно. Таким образом, CL 1272, 1282 включают в себя блоки контроллера со встроенной памятью и включают в себя I/O управляющую логическую схему. На фиг. 13 показано, что не только память 1232, 1234 соединена с CL 1272, 1282, но также, что устройства 1314 I/O также соединены с управляющей логической схемой 1272,1282. Унаследованные устройства I/O 1315 подсоединяются к набору 1290 микросхем.
Обратимся теперь к фиг. 14, на которой показана блок-схема SoC 1400 в соответствии с вариантом осуществления настоящего изобретения. Аналогичные элементы, показанные на фиг. 10, обозначены одинаковыми ссылочными позициями. Кроме того, прямоугольники, показанные пунктирными линиями, имеют дополнительные признаки на более продвинутых SoC. На фиг. 14 блок(и) 1402 межсоединений подсоединен к: процессору 1410 приложений, который включает в себя набор из одного или более ядер 202A-N, и блок(и) 1006 совместно используемой кэш-памяти; блоку 1010 системного агента; блоку(ам) 1016 контроллера шины; блоку(ам) 1014 контроллера со встроенной памятью; набору или одному или более сопроцессорам 1420, которые могут включать в себя встроенную графическую логическую схему, процессор для обработки изображений, процессор дли обработки аудио и видеопроцессор; блоку 1430 статического оперативного запоминающего устройства (SRAM); блоку 1432 прямого доступа к памяти (DMA); и блоку 1440 отображения для подсоединения к одному или более внешним дисплеям. В одном варианте осуществления сопроцессор(ы) 1420 включает в себя процессор специального назначения, такой, например, как сетевой или связной процессор, механизм сжатия, GPGPU, высокопроизводительный процессор MIC, встроенный процессор и т.п.
Варианты механизмов, раскрытые в данном документе, можно реализовать в виде аппаратных средств, программного обеспечения, программно-аппаратных средств или комбинации таких методов реализации. Варианты осуществления изобретения можно реализовать в виде компьютерных программ или программного кода, исполняемого на программируемых системах, содержащих по меньшей мере один процессор, систему памяти (включающей в себя энергозависимую и энергонезависимую память и/или элементы памяти), по меньшей мере одно устройство ввода и по меньшей мере одно устройство вывода.
Код программы, такой как код 1230, иллюстрированный на фиг. 12, можно применить к входным инструкциям для того, чтобы выполнить функции, описанные в данном документе и выработать выходную информацию. Выходную информацию можно применить известным способом к одному или более устройствам вывода. В целях этого приложения, система обработки включает в себя любую систему, которая имеет процессор, такой, например, как процессор цифровых сигналов (DSP), микроконтроллер, специализированная интегральная схема (ASIC) или микропроцессор.
Код программы можно реализовать в виде процедурного языка высокого уровня или объектно-ориентированного языка программирования для поддержания связи с системой обработки данных. При желании код программы можно также реализовать в виде ассемблера или машинного языка. Фактически, механизмы, описанные в данном документе, не ограничиваются объемом для любого конкретного языка программирования. В любом случае язык может представлять собой компилированный или интерпретируемый язык.
Один или более аспектов по меньшей мере одного варианта осуществления можно реализовать с помощью репрезентативных инструкций, хранящихся на машиночитаемом носителе информации, который представляют собой различную логику внутри процессора, которые при их считывании машиной побуждает машину производить логические операции для выполнения технологий, описанных в данном документе. Такие представления, известные как "IP ядра", можно хранить на материальном, машиночитаемом носителе и подавать различным потребителям или на производственное оборудование для загрузки в производственные машины, которые фактически производят логическую схему или процессор.
Такие машиночитаемые носители информации могут включать в себя без ограничения невременные, материальные размещения изделий, которые изготавливаются или формируются с помощью машины или устройства, включая носители информации, такие как жесткие диски, любого другого типа диск, включая гибкие диски, оптические диски, постоянные запоминающие устройства на основе компакт-диска (CD-ROM), перезаписываемые компакт-диски (CD-RW), и магнитооптические диски, полупроводниковые устройства, такие как постоянные запоминающие устройства (ROM), оперативные запоминающие устройства (RAM), такие как динамические оперативные запоминающие устройства (DRAM), статические оперативные запоминающие устройства (SRAM), стираемые программируемые постоянные запоминающие устройства (EPROM), флеш-память, электрически-стираемые программируемые постоянные запоминающие устройства (EEPROM), память на фазовых переходах (PCM), магнитные или оптические карты или любой другой тип носителей, подходящих для хранения электронных инструкций.
Соответственно, варианты осуществления изобретения также включают в себя невременные, материальные машиночитаемые носители информации, содержащие инструкции или содержащие данные проектирования, такие как язык описания аппаратных средств (HDL), который определяет структуры, схемы, устройства, процессоры и/или характеристики системы, описанные в данном документе. Такие варианты осуществления могут также упоминаться как программные продукты.
Эмуляция (включающая в себя двоичную трансляцию, трансформацию кода и т.д.)
В некоторых случаях конвертер инструкций, можно использовать для преобразования инструкции из набора инструкций источника в набор инструкций цели. Например, конвертер инструкций можно транслировать (например, с использованием статической двоичной трансляции, динамической двоичной трансляции, включающей в себя динамическую компиляцию), трансформировать, эмулировать или иным образом преобразовывать инструкцию в одну или более других инструкций для дальнейшей обработки ядром. Конвертер инструкций, можно реализовать в виде программного обеспечении, аппаратных средств, программно-аппаратных средств или их комбинации. Конвертер инструкций может находиться в процессоре, вне процессора или частично в и частично вне процессора.
На фиг. 15 показана блок-схема, сопоставляющая использование программного конвертера инструкций для преобразования двоичных инструкций в наборе инструкций источника в двоичные инструкции в целевом наборе инструкций согласно вариантам осуществления изобретения. В иллюстрированном варианте осуществления конвертер инструкций представляет собой программный конвертер инструкций, хотя альтернативно конвертер инструкций можно реализовать в виде программного обеспечения, программно-аппаратных средств, аппаратных средств или их различных комбинаций. На фиг. 15 показана программа на языке 1502 высокого уровня, которую можно скомпилировать с использованием компилятора 1504 x86 для выработки двоичного кода 1506 x86, который исполняется для собственной системы инструкций процессором с по меньшей мере одним ядром 1516 с набором инструкций x86. Процессор с по меньшей мере одним ядром 1516 с набором инструкций x86 представляет любой процессор, который может выполнять по существу такие же функции, как и процессор Intel с по меньшей мере одним ядром с набором инструкций x86 путем совместимого исполнения или иным образом обработки (1) существенная части набора инструкций ядра с набором инструкций x86 Intel или (2) версии объектного кода приложений или другого программного обеспечения, предназначенного для выполнения в процессоре Intel с по меньшей мере одним ядром с набором инструкций x86 для того, чтобы достичь по существу такого же результата, как и в процессоре Intel с по меньшей мере одним ядром с набором инструкций x86. Компилятор 1504 x86 представляет собой компилятор, который выполнен с возможностью выработки двоичного кода 1506 x86 (например, объектного кода), который можно, с или без дополнительной обработки связей, исполнить на процессоре с по меньшей мере одним ядром 1516 с набором инструкций x86. Аналогичным образом, на фиг. 15 показана программа на языке 1502 высоко уровня, который можно скомпилировать, используя компилятор 1508 с альтернативным набором инструкций, для выработки двоичного кода 1510 для альтернативного набора инструкций, который можно исполнить в собственной системе инструкций процессором без по меньшей мере одного ядра 1514 с набора инструкций x86 (например, процессор с ядрами, которые исполняют набор инструкций MIPS согласно технологиям MIPS Technologies of Sunnyvale, CA, и/или которые исполняют набор инструкций ARM согласно технологиям ARM Holdings of Sunnyvale, СА). Конвертер 1512 инструкций используется для преобразования двоичного кода 1506 x86 в код, который можно исполнить в собственной системе инструкций с помощью процессора без ядра 1514 с набором инструкций x86. Маловероятно, что этот преобразованный код будет таким же, как и двоичный код 1510 с альтернативным набором инструкций, так как трудно сделать конвертер инструкций, который может выполнять это; однако преобразованный код будет выполнять общую операцию и будет состоять из инструкций из альтернативного набора инструкций. Таким образом, конвертер 1512 инструкций представляет собой программное обеспечение, программно-аппаратные средства, аппаратные средства или их комбинации, которые, посредством эмуляции, моделирования или любого другого процесса, позволяют процессору, или другому электронному устройству, которое не имеет процессора или ядра с набором инструкций х86, исполнять двоичный код 1506 x86.
Компоненты, признаки и детали, описанные для любой из фиг. 2-3 и 5, можно также опционально использовать на любой из фиг. 1 и 4. Более того, компоненты, признаки и детали, описанные в данном документе для любого устройства, можно также опционально использовать в любых способах, описанных в данном документе, которые в вариантах осуществления можно выполнить посредством или с помощью такого устройства.
В данном описании и формуле изобретения можно использовать термины "соединенный" и "связанный", наряду с их производными. Следует понимать, что эти термины не предназначены для использования в качестве синонимов друг для друга. Скорее всего, в конкретных вариантах осуществления термин "связанный" можно использовать для того, чтобы показать, что два или более элементов находятся в непосредственном физическом или электрическом контакте друг с другом. Термин "соединенный" может означать, что два или более элементов находятся в прямом физическом или электрическом контакте. Однако термин "соединенный" может означать, что один или более элементов не находятся в прямом контакте друг с другом, но еще действуют совместно или взаимодействуют друг с другом. Например, подсистема памяти может быть соединена с декодером через один или более промежуточных блоков или логических схем, или блок записи в регистр может быть соединен с регистром через один или более промежуточных блоков или логических схем. На фигурах двунаправленные стрелки используются для того, чтобы показать двунаправленные связи или соединения.
В данном описании и формуле изобретения можно использовать термин "логическая схема". Как описано в данном документе логическая схема может включать в себя аппаратные средства, программно-аппаратные средства, программное обеспечение или их комбинации. Примеры логической схемы включают в себя интегральные схемы, специализированные интегральные схемы, аналоговые схемы, цифровые схемы, устройства программируемой логической схемы, устройства памяти, включающие в себя инструкции, и т.д. В некоторых вариантах осуществления аппаратная логика может включать в себя транзисторы и/или возможно логические элементы наряду с другими компонентами схемы. Логическая схема может представлять собой модуль, компонент, блок, элемент процессора и т.д.
В приведенном выше описании, в целях объяснения, многочисленные специфические детали были изложены для того, чтобы обеспечить полное понимание вариантов осуществления изобретения. Однако специалистам в данной области техники будет очевидно, что один или более других вариантов осуществления можно осуществить на практике без некоторых из этих специфических деталей. Описанные конкретные варианты осуществления не предусматривают ограничение изобретения, а предназначены для иллюстрации их посредством примерных вариантов осуществления. Объем изобретения не должен ограничиваться специфическими примерами, а только формулой изобретения. В других случаях, известные схемы, структуры, устройства и операции были показаны в виде блок-схем, или без подробностей во избежание излишнего усложнения понимания описания.
При должном рассмотрении ссылочные позиции или части окончаний ссылочных позиций повторяются среди фигур для указания соответствующих или аналогичных элементов, которые могут опционально иметь аналогичные или одинаковые характеристики, если точно не определено или ясно не видно иное. При описании многочисленных компонентов их можно, как правило, включить в один компонент. В других случаях, при описании одного компонента, его можно, как правило, разделить на многочисленные компоненты.
Выше были описаны различные операции и способы. Некоторые способы были описаны в относительно простой форме в виде блок-схем последовательностей операций, но операции можно дополнительно добавить в способы и/или удалить из способов. В дополнение, хотя блок-схемы последовательностей операций показывают конкретный порядок операций согласно примерным вариантам осуществления, этот конкретный порядок является примерным. Дополнительные варианты осуществления позволяют дополнительно выполнить операции в различном порядке, объединить некоторые операции, совместить некоторые операции и т.д.
Некоторые варианты осуществления включают в себя изделие промышленного производства (например, компьютерный программный продукт), которое включает в себя машиночитаемый носитель информации. Носитель может включать в себя механизм, который обеспечивает, например, хранит, информацию в форме, удобной для считывания машиной. Машиночитаемый носитель информации может обеспечивать или иметь сохраненные на нем одну или более инструкций, которые если и/или когда исполняются машиной, выполнены с возможностью побуждать машину выполнять и/или приводить к тому, чтобы машина выполняла одну или более операций, способы или технологии, раскрытые в данном документе. Примеры подходящих машин включают в себя, но не ограничиваются ими, процессоры, устройство обработки инструкций, цифровые логические схемы, интегральные схемы и т.п. Еще одни примеры подходящих машин включают в себя вычислительные устройства и другие электронные устройства, которые входят в состав таких процессоров, устройств обработки инструкций, цифровых логических схем или интегральных схем. Примеры таких вычислительных устройств и электронных устройств включают в себя, но не ограничиваются ими, настольные компьютеры, портативные компьютеры, компьютеры типа "ноутбук", планшетные компьютеры, нетбуки, смартфоны, сотовые телефоны, серверы, сетевые устройства (например, маршрутизаторы и коммутаторы), мобильные интернет-устройства (MID), медиапроигрыватели, интеллектуальные телевизоры, неттопы, телевизионные приставки и контроллеры видеоигры.
В некоторых вариантах осуществления машиночитаемый носитель информации может включать в себя материальный и/или невременный машиночитаемый носитель информации. Например, материальный и/или невременный машиночитаемый носитель информации может включать в себя гибкую дискету, оптический носитель информации, оптический диск, оптическое устройство хранения данных, CD-ROM, магнитный диск, магнитооптический диск, постоянное запоминающее устройство (ROM), программируемое ROM (PROM), стираемый и программируемый ROM (EPROM), электрически стираемый и программируемый ROM (EEPROM), оперативное запоминающее устройство (RAM), статическое RAM (SRAM), динамическое RAM (DRAM), флеш-память, память с изменением фазового состояния с изменением фазового состояния, энергонезависимую память, энергонезависимое устройство для хранения данных, невременную память, устройство для невременного хранения данных или т.п. Невременный машиночитаемый носитель информации не состоит только из временного распространяемого сигнала.
Следует также принимать во внимание, что ссылка на всем протяжении этого описания на "один вариант осуществления", "вариант осуществления" или "один или более вариантов осуществления", например, означает, что конкретный признак может быть включен при практическом осуществлении изобретения. Аналогичным образом, следует принимать во внимание, что в описании различные признаки иногда сгруппированы вместе в одном варианте осуществления, фигуре или их описании с целью улучшения раскрытия и облегчения понимания различных изобретательских аспектов. Однако данный способ раскрытия не следует интерпретировать в качестве отражения изобретения, что изобретение требует больше признаков, чем те, которые явным образом изложены в каждом пункте формулы изобретения. Скорее, как отражает последующая формула изобретения, аспекты изобретения могут находиться менее чем во всех признаках единственного раскрытого варианта осуществления. Таким образом, формула изобретения, следующая за подробным описанием изобретения, тем самым включена в это подробное описание изобретения, причем каждый пункт формулы изобретения действует сам по себе как отдельный вариант осуществления изобретения.
Примерные варианты осуществления
Следующие примеры относятся к дополнительным вариантам осуществления. Специфические особенности примеров можно использовать везде в одном или более вариантах осуществления.
Пример 1 представляет собой процессор, включающий в себя регистр, имеющий ширину, и блок декодирования для приема инструкции загрузки парциальной ширины. Инструкция загрузки парциальной ширины указывает ячейку памяти в качестве операнда источника и указывает регистр в качестве операнда назначения. Процессор также включает в себя подсистему памяти, соединенную с блоком декодирования. Подсистема памяти, в ответ на инструкцию загрузки парциальной ширины, должна загружать данные из указанной ячейки памяти в процессор. Процессор также включает в себя блок записи в регистр, соединенный с подсистемой памяти и регистром. Блок записи в регистр, в ответ на инструкцию загрузки парциальной ширины, должен записывать по меньшей мере часть загруженных данных на парциальной ширине регистра и завершать запись в регистр с набором разрядов, которые хранятся на оставшейся ширине регистра, которые имеют значения разрядов, которые зависят от режима загрузки парциальной ширины процессора, причем инструкция загрузки парциальной ширины не указывает режим загрузки парциальной ширины.
Пример 2 включает в себя процессор из примера 1, и в котором опционально блок записи в регистр, в режиме загрузки парциальной ширины, должен записывать все нули в качестве набора разрядов на оставшейся ширине регистра, и во втором режиме загрузки парциальной ширины не должен записывать все нули в качестве набора разрядов на оставшейся ширине регистра.
Пример 3 включает в себя процессор из примера 2, и в котором опционально блок записи в регистр, во втором режиме загрузки парциальной ширины, должен записывать разряды с расширением знакового разряда в качестве набора разрядов на оставшейся ширине регистра.
Пример 4 включает в себя процессор из примера 2, и в котором опционально блок записи в регистр, во втором режиме загрузки парциальной ширины, должен завершать запись в регистр с набором разрядов, который первоначально находился на оставшейся ширине, прежде чем декодер примет инструкцию загрузки парциальной ширины, которая хранится в виде набора разрядов на оставшейся ширине регистра.
Пример 5 включает в себя процессор из любого предыдущего примера и опционально и дополнительно включает в себя по меньшей мере один разряд для указания режима загрузки парциальной ширины, в котором процессор должен осуществлять доступ по меньшей мере к одному разряду для определения режима загрузки парциальной ширины, и должен выбирать соответствующий метод, который определяет значения разрядов для набора разрядов.
Пример 6 включает в себя процессор из любого предыдущего примера, и в котором опционально по меньшей мере один разряд находится в регистре процессора и является доступным для приложения.
Пример 7 включает в себя процессор из любого предыдущего примера, и в котором опционально ширина регистра по меньшей мере имеет такую ширину как и адрес памяти, используемый процессором для доступа к памяти, и в котором парциальная ширина регистра равна только части (например, половине) ширины регистра.
Пример 8 включает в себя процессор из любого предыдущего примера, и в котором опционально один процессор представляет собой процессор с 64-разрядной архитектурой, который использует 64-разрядные адреса памяти, и в котором парциальная ширина регистра равна 32 разрядам, или процессор представляет собой процессор с 128-разрядной архитектурой, который использует 128-разрядные адреса памяти, и в котором парциальная ширина регистра равна 64 разрядам.
Пример 9 включает в себя процессор из любого предыдущего примера, и в котором опционально процессор позволяет приложению пользовательского уровня изменять режим загрузки парциальной ширины.
Пример 10 включает в себя процессор из любого предыдущего примера, и в котором опционально процессор позволяет по меньшей мере одному из: операционной системы и монитора виртуальных машин изменять режим загрузки парциальной ширины, но не позволяет приложениям пользовательского уровня изменять режим загрузки парциальной ширины.
Пример 11 включает в себя процессор из любого предыдущего примера, и в котором опционально процессор имеет набор инструкций, который включает в себя инструкцию для изменения режима загрузки парциальной ширины.
Пример 12 включает в себя процессор из примера 1, и в котором опционально блок записи в регистр, в режиме загрузки парциальной ширины, должен записывать нули в качестве набора разрядов на оставшейся ширине регистра, и процессор опционально включает в себя блок процессора для изменения режима загрузки парциальной ширины на второй режим загрузки парциальной ширины в одном из прерывания и перехода от приложения к операционной системе.
Пример 13 представляет собой способ, выполняемый процессором. Способ включает в себя прием инструкции загрузки парциальной ширины. Инструкция загрузки парциальной ширины указывает ячейку памяти в качестве операнда источника и указывает регистр в качестве операнда назначения. Способ включает в себя загрузку данных из указанной ячейки памяти в процессор в ответ на инструкцию загрузки парциальной ширины. Способ включает в себя запись по меньшей мере части загруженных данных на парциальной ширине регистра в ответ на инструкцию загрузки парциальной ширины. Способ включает в себя завершение записи в регистр набора разрядов, которые хранятся на оставшейся ширине регистра и имеют значения разрядов, которые зависят от режима загрузки парциальной ширины процессора. Инструкция загрузки парциальной ширины не указывает режим загрузки парциальной ширины.
Пример 14 включает в себя способ согласно примеру 13, и в котором опционально завершение записи в регистр включает в себя запись нулей в виде набора разрядов на оставшейся ширине регистра в режиме загрузки парциальной ширины. Опционально во втором другом режиме загрузки парциальной ширины разряды с расширением знака вместо нулей будут записываться на оставшейся ширине регистра.
Пример 15 включает в себя способ согласно примеру 13, и в котором опционально завершение записи в регистр включает в себя запись нулей в виде набора разрядов на оставшейся ширине регистра в режиме загрузки парциальной ширины. Опционально во втором другом режиме загрузки парциальной ширины набор разрядов, который первоначально находился на оставшейся ширине, будет сохранен на оставшейся ширине регистра.
Пример 16 включает в себя способ из любого предыдущего примера и опционально дополнительно включает в себя осуществление доступа по меньшей мере к одному разряду для определения режима загрузки парциальной ширины. Способ может также опционально включать в себя выбор метода, соответствующего режиму загрузки парциальной ширины, который определяет значения разрядов для набора разрядов.
Пример 17 включает в себя способ из любого предыдущего примера, и в котором опционально осуществление доступа по меньшей мере к одному разряду включает в себя доступ по меньшей мере к одному разряду в регистре процессора, доступном для приложения.
Пример 18 включает в себя способ из любого предыдущего примера и в котором опционально запись парциальной ширины регистра включает в себя запись только подмножества (например, половины) ширины регистра. Опционально регистр является по меньшей мере таким широким, как адреса памяти, которые используются процессором для осуществления доступа к памяти.
Пример 19 включает в себя способ из любого предыдущего примера и в котором опционально запись парциальной ширины регистра включает в себя одно из: опциональной записи 32 разрядов регистра нулей в оставшейся части регистра, и в котором адреса памяти, используемые процессором для доступа к памяти, имеют 64 разряда, или опциональной записи 64 разрядов регистра нулями в оставшейся части регистра, и в котором адреса памяти, используемые процессором для доступа к памяти, имеют 128 разрядов.
Пример 20 включает в себя способ из любого предыдущего примера и опционально дополнительно включает в себя прием сигнала управления из приложения пользовательского уровня для изменения режима загрузки парциальной ширины и изменения режима загрузки парциальной ширины после приема сигнала управления.
Пример 21 включает в себя способ из любого предыдущего примера и опционально дополнительно включает в себя прием сигнала управления из одного из: операционной системы и монитора виртуальных машин для изменения режима загрузки парциальной ширины и изменения режима загрузки парциальной ширины после приема сигнала управления из упомянутого одного из: операционной системы и монитора виртуальных машин. Способ может также опционально включать в себя предотвращение приложений пользовательского уровня от изменения режима загрузки парциальной ширины.
Пример 22 включает в себя способ из любого предыдущего примера и опционально дополнительно включает в себя изменение режима загрузки парциальной ширины в ответ на инструкцию пользовательского уровня из набора инструкций процессора.
Пример 23 представляет собой изделие промышленного производства, включающее в себя невременный машиночитаемый носитель информации, хранящий набор инструкций, которые при их исполнении машиной предписывают машине выполнять операции. Операции включают в себя проверку метаданных программного модуля, включающую в себя проверку указания режима загрузки парциальной ширины процессора, который будет использоваться процессором для выполнения инструкции загрузки парциальной ширины. Инструкция загрузки парциальной ширины должна указывать ячейку памяти в качестве операнда источника и указывать регистр в качестве операнда места назначения. Операции также включают в себя изменение режима загрузки парциальной ширины процессора на указанный режим загрузки парциальной ширины. При этом изменение режима загрузки парциальной ширины должно управлять изменением значений разрядов, которые будет сохранять процессор в части указанного регистра, который не будет использоваться для хранения парциальной ширины данных, загруженных из памяти.
Пример 24 включает в себя изделие промышленного производства из примера 23, и в котором опционально набор инструкций дополнительно содержит инструкции, которые при их исполнении машиной предписывают машине выполнять операции, включающие в себя поддержание метаданных, указывающих на то, что различные программные модули должны использовать какие различные режимы загрузки парциальной ширины, в том числе то, что программный модуль должен использовать режим загрузки парциальной ширины, и, после обработки прерывания, изменение режима загрузки парциальной ширины процессора на указанный режим загрузки парциальной ширины совместно с переходом обратно к исполнению кода из программного модуля.
Пример 25 представляет собой систему для обработки инструкций, включающих в себя межсоединение, динамическое оперативное запоминающее устройство (DRAM), соединенное с межсоединением, и процессор, соединенный с межсоединением. Процессор включает в себя регистр, имеющий ширину, и блок декодирования для приема инструкции. Инструкция должна указывать ячейку памяти DRAM в качестве операнда источника и указывать регистр в качестве операнда назначения. Процессор также включает в себя подсистему памяти, соединенную с блоком декодирования. Подсистема памяти, в ответ на инструкцию, загружает данные из указанной ячейки памяти. Процессор также включает в себя блок, соединенный с подсистемой памяти и регистром. Блок, в ответ на инструкцию, должен записывать по меньшей мере часть загруженных данных на парциальной ширине регистра и должен завершать запись в регистр с набором разрядов, которые хранятся на оставшейся ширине регистра, которые имеют значения разрядов, которые зависят от режима процессора. Опционально инструкция не указывает режим.
Пример 26 включает в себя систему из примера 25, и в котором опционально блок в режиме загрузки парциальной ширины должен записывать нули в качестве набора разрядов на оставшейся ширине регистра. Опционально во втором режиме загрузки парциальной ширины блок не должен записывать нули в качестве набора разрядов на оставшейся ширине регистра.
Пример 27 представляет собой процессор, включающий в себя средство для приема инструкции загрузки парциальной ширины. Инструкция загрузки парциальной ширины должна указывать ячейку памяти в качестве операнда источника и указывать регистр в качестве операнда назначения. Процессор также включает в себя средство для загрузки данных из указанной ячейки памяти в процессор в ответ на инструкцию загрузки парциальной ширины. Процессор также включает в себя средство для записи по меньшей мере части загруженных данных на парциальной ширине регистра в ответ на инструкцию загрузки парциальной ширины. Процессор также включает в себя средство для завершения записи в регистр с набором разрядов, которые хранятся на оставшейся ширине регистра, которые имеют значения разрядов, которые зависят от режима загрузки парциальной ширины процессора. Опционально инструкция загрузки парциальной ширины не указывает режим загрузки парциальной ширины.
Пример 28 включает в себя процессор из примера 27, и в котором опционально средство для завершения записи в регистр включает в себя средство для записи нулей в виде набора разрядов на оставшейся ширине регистра в режиме загрузки парциальной ширины.
Пример 29 представляет собой машиночитаемый носитель информации, хранящий инструкции, которые при их исполнении машиной должны предписывать машине выполнять способ из любых примеров 13-22.
Пример 30 представляет собой процессор для выполнения способа из любых примеров 13-22.
Пример 31 представляет собой процессор, включающий в себя средство для выполнения способа из любых примеров 13-22.
Пример 32 представляет собой процессор, включающий в себя интегральную схему, и/или логическую схему, и/или блоки, и/или компоненты, и/или модули, или любую их комбинацию, для выполнения способов из любых примеров 13-22.
Пример 33 представляет собой компьютерную систему, включающую в себя динамическое запоминающее устройство (DRAM) и процессор, причем компьютерная система выполняет способ из любых примеров 13-22.
Пример 34 представляет собой процессор для выполнения по меньшей мере одной операции или способ по существу такой, который описан в данном документе.
Пример 35 представляет собой процессор, включающий в себя средство для выполнения по меньшей мере одной операции или способ по существу такой, который описан в данном документе.
Пример 36 представляет собой процессор для исполнения или выполнения инструкции по существу такой, которая описана в данном документе.
Пример 37 представляет собой процессор, включающий в себя средство для выполнения инструкции, инструкции, по существу, такой, которая описана в данном документе.
Claims (56)
1. Процессор для загрузки данных, содержащий:
регистр, имеющий ширину;
блок декодирования для приема инструкции загрузки парциальной ширины, причем инструкция загрузки парциальной ширины указывает ячейку памяти в качестве операнда источника и указывает регистр в качестве операнда назначения;
подсистему памяти, соединенную с блоком декодирования, причем подсистема памяти предназначена для загрузки данных из указанной ячейки памяти в процессор, в ответ на инструкцию загрузки парциальной ширины, и
блок записи в регистр, соединенный с подсистемой памяти и регистром, причем блок записи в регистр предназначен, в ответ на инструкцию загрузки парциальной ширины, для записи по меньшей мере части загруженных данных на парциальной ширине регистра и для завершения записи в регистр с набором разрядов, хранящихся на оставшейся ширине регистра, которые имеют значения разрядов, которые зависят от режима загрузки парциальной ширины процессора, при этом инструкция загрузки парциальной ширины не указывает режим загрузки парциальной ширины.
2. Процессор по п. 1, в котором блок записи в регистр в режиме загрузки парциальной ширины должен записывать все нули в качестве набора разрядов на оставшейся ширине регистра и во втором режиме загрузки парциальной ширины не должен записывать все нули в качестве набора разрядов на оставшейся ширине регистра.
3. Процессор по п. 2, в котором блок записи в регистр во втором режиме загрузки парциальной ширины должен записывать разряды с расширением знакового разряда в качестве набора разрядов на оставшейся ширине регистра.
4. Процессор по п. 2, в котором блок записи в регистр во втором режиме загрузки парциальной ширины должен завершать запись в регистр с набором разрядов, который первоначально находился на оставшейся ширине, прежде чем декодер примет инструкцию загрузки парциальной ширины, которая хранится в виде набора разрядов на оставшейся ширине регистра.
5. Процессор по п. 1, дополнительно содержащий по меньшей мере один разряд для указания режима загрузки парциальной ширины, в котором процессор должен осуществлять доступ по меньшей мере к одному разряду для определения режима загрузки парциальной ширины и должен выбирать соответствующий метод, который определяет значения разрядов для набора разрядов.
6. Процессор по п. 5, в котором по меньшей мере один разряд находится в регистре процессора и доступен приложению.
7. Процессор по п. 1, в котором ширина регистра является по меньшей мере такой широкой, как адреса памяти, используемые процессором для доступа к памяти, и в котором парциальная ширина регистра представляет собой только часть ширины регистра.
8. Процессор по п. 7, в котором процессор выбран один из:
процессора, который представляет собой процессор с 64-разрядной архитектурой, который использует 64-разрядные адреса памяти и в котором парциальная ширина регистра равна 32 разрядам; и
процессора, который представляет собой процессор с 128-разрядной архитектурой, который использует 128-разрядные адреса памяти,и в котором парциальная ширина регистра равна 64 разрядам.
9. Процессор по п. 1, в котором процессор позволяет приложению пользовательского уровня изменять режим загрузки парциальной ширины.
10. Процессор по п. 1, в котором процессор позволяет по меньшей мере одному из операционной системы и монитора виртуальных машин изменять режим загрузки парциальной ширины, но не позволяет приложениям пользовательского уровня изменять режим загрузки парциальной ширины.
11. Процессор по п. 1, в котором процессор имеет набор инструкций, который включает в себя инструкцию для изменения режима загрузки парциальной ширины.
12. Процессор по п. 1, в котором блок записи в регистр в режиме загрузки парциальной ширины должен записывать нули в качестве набора разрядов на оставшейся ширине регистра и дополнительно содержащий
блок процессора для изменения режима загрузки парциальной ширины во втором режиме загрузки парциальной ширины в одном из прерывания и перехода от приложения к операционной системе.
13. Способ загрузки данных, выполняемый процессором, содержащий:
прием инструкции загрузки парциальной ширины, причем инструкция загрузки парциальной ширины указывает ячейку памяти в качестве операнда источника и указывает регистр в качестве операнда назначения;
загрузку данных из указанной ячейки памяти в процессор в ответ на инструкцию загрузки парциальной ширины;
запись по меньшей мере части загруженных данных на парциальной ширине регистра в ответ на инструкцию загрузки парциальной ширины; и
завершение записи в регистр с набором разрядов, хранящихся на оставшейся ширине регистра, которые имеют значения разрядов, которые зависят от режима загрузки парциальной ширины процессора, причем инструкция загрузки парциальной ширины не указывает режим загрузки парциальной ширины.
14. Способ по п. 13, в котором завершение записи в регистр содержит запись нулей в качестве набора разрядов на оставшейся ширине регистра в режиме загрузки парциальной ширины и в котором во втором другом режиме загрузки парциальной ширины разряды с расширением знакового разряда вместо нулей будут записываться на оставшейся ширине регистра.
15. Способ по п. 13, в котором завершение записи в регистр содержит запись нулей в качестве набора разрядов на оставшейся ширине регистра в режиме загрузки парциальной ширины и в котором во втором другом режиме загрузки парциальной ширины набор разрядов, первоначально находившихся в оставшейся ширине, будет сохраняться на оставшейся ширине регистра.
16. Способ по п. 13, дополнительно содержащий:
доступ по меньшей мере к одному разряду для определения режима загрузки парциальной ширины и
выбор метода, соответствующего режиму загрузки парциальной ширины, который определяет значения разрядов для набора разрядов.
17. Способ по п. 16, в котором доступ по меньшей мере к одному разряду содержит доступ по меньшей мере к одному разряду в регистре процессора, доступном для приложения.
18. Способ по п. 13, в котором запись парциальной ширины регистра содержит запись только подмножества ширины регистра и в котором регистр по меньшей мере является таким широким, как адреса памяти, используемые процессором для доступа к памяти.
19. Способ по п. 18, в котором запись парциальной ширины регистра содержит одно из:
записи 32 разрядов регистра с нулями в оставшейся части регистра, и где адреса памяти, используемые процессором для получения доступа к памяти, имеют 64 разряда; и
записи 64 разрядов регистра с нулями в оставшейся части регистра, и где адреса памяти, используемые процессором для получения доступа к памяти, имеют 128 разрядов.
20. Способ по п. 13, дополнительно содержащий:
прием сигнала управления из приложения пользовательского уровня для изменения режима загрузки парциальной ширины и
изменение режима загрузки парциальной ширины после приема сигнала управления.
21. Способ по п. 13, дополнительно содержащий:
прием сигнала управления из одного из операционной системы и монитора виртуальных машин для изменения режима загрузки парциальной ширины;
изменение режима загрузки парциальной ширины после приема сигнала управления из упомянутого одного из операционной системы и монитора виртуальных машин; и
предотвращение приложений пользовательского уровня от изменения режима загрузки парциальной ширины.
22. Постоянный машиночитаемый носитель информации, хранящий набор инструкций, которые при их исполнении машиной предписывают машине выполнять следующие операции способа загрузки данных:
проверку метаданных программного модуля, включающую проверку указания режима загрузки парциальной ширины процессора, который будет использоваться процессором для выполнения инструкции загрузки парциальной ширины, причем инструкция загрузки парциальной ширины указывает ячейку памяти в качестве операнда источника и указывает регистр в качестве операнда назначения; и
изменение режима загрузки парциальной ширины процессора на указанный режим загрузки парциальной ширины, причем изменение режима загрузки парциальной ширины должно управлять изменением значений разрядов, которые будут сохраняться процессором в части указанного регистра, который не будет использоваться для хранения парциальной ширины данных, загруженных из памяти.
23. Постоянный машиночитаемый носитель информации по п. 22, в котором набор инструкций дополнительно содержит инструкции, которые при их исполнении машиной предписывают машине выполнять операции, содержащие:
поддержание метаданных, показывающих какие различные программные модули должны использовать какие различные режимы загрузки парциальной ширины, включая то, что программный модуль должен использовать режим загрузки парциальной ширины; и
после обработки прерывания изменение режима загрузки парциальной ширины процессора на указанный режим загрузки парциальной ширины совместно с переходом обратно к исполнению кода из программного модуля.
24. Система для загрузки данных, содержащая:
межсоединение;
динамическое оперативное запоминающее устройство (DRAM), соединенное с межсоединением, и
процессор, соединенный с межсоединением, причем процессор содержит:
регистр, имеющий ширину;
блок декодирования для приема инструкции, причем инструкция указывает ячейку памяти DRAM в качестве операнда источника и указывает регистр в качестве операнда назначения;
подсистему памяти, соединенную с блоком декодирования, причем подсистема памяти предназначена для загрузки данных из указанной ячейки памяти в процессор, в ответ на инструкцию, и
блок, соединенный с подсистемой памяти и регистром, причем блок предназначен, в ответ на инструкцию, для записи по меньшей мере части загруженных данных на парциальной ширине регистра и завершения записи в регистр с набором разрядов, хранящихся на оставшейся ширине регистра, которые имеют значения разрядов, которые зависят от режима загрузки парциальной ширины процессора, при этом инструкция не указывает режим загрузки парциальной ширины.
25. Система по п. 24, в которой блок в режиме загрузки парциальной ширины должен записывать все нули в качестве набора разрядов на оставшейся ширине регистра и во втором режиме загрузки парциальной ширины не должен записывать все нули в качестве набора разрядов на оставшейся ширине регистра.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/931,070 US9395990B2 (en) | 2013-06-28 | 2013-06-28 | Mode dependent partial width load to wider register processors, methods, and systems |
US13/931,070 | 2013-06-28 | ||
PCT/US2014/043159 WO2014209747A1 (en) | 2013-06-28 | 2014-06-19 | Mode dependent partial width load to wider register processors, methods, and systems |
Publications (2)
Publication Number | Publication Date |
---|---|
RU2015151131A RU2015151131A (ru) | 2017-05-31 |
RU2638641C2 true RU2638641C2 (ru) | 2017-12-14 |
Family
ID=52116848
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
RU2015151131A RU2638641C2 (ru) | 2013-06-28 | 2014-06-19 | Загрузка парциальной ширины, зависящая от режима, в процессорах с регистрами с большим числом разрядов, способы и системы |
Country Status (8)
Country | Link |
---|---|
US (1) | US9395990B2 (ru) |
EP (1) | EP3014422B1 (ru) |
KR (1) | KR101839479B1 (ru) |
CN (2) | CN105453030B (ru) |
BR (1) | BR112015029955A2 (ru) |
RU (1) | RU2638641C2 (ru) |
TW (1) | TWI524271B (ru) |
WO (1) | WO2014209747A1 (ru) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9395990B2 (en) | 2013-06-28 | 2016-07-19 | Intel Corporation | Mode dependent partial width load to wider register processors, methods, and systems |
GB2539040B (en) | 2015-06-05 | 2021-08-25 | Advanced Risc Mach Ltd | Issue policy control |
US10901940B2 (en) * | 2016-04-02 | 2021-01-26 | Intel Corporation | Processors, methods, systems, and instructions to atomically store to memory data wider than a natively supported data width |
US10248423B2 (en) * | 2016-07-22 | 2019-04-02 | International Business Machines Corporation | Executing short pointer mode applications |
US10795853B2 (en) | 2016-10-10 | 2020-10-06 | Intel Corporation | Multiple dies hardware processors and methods |
WO2018075052A1 (en) | 2016-10-20 | 2018-04-26 | Intel Corporation | Systems, apparatuses, and methods for fused multiply add |
CN113287098A (zh) * | 2019-03-26 | 2021-08-20 | 拉姆伯斯公司 | 多精度存储器系统 |
GB2591788B (en) * | 2020-02-06 | 2022-06-01 | Advanced Risc Mach Ltd | Saving and restoring registers |
CN112346783B (zh) * | 2020-11-05 | 2022-11-22 | 海光信息技术股份有限公司 | 一种处理器及其操作方法、装置、设备和介质 |
US20220350570A1 (en) * | 2021-04-28 | 2022-11-03 | International Business Machines Corporation | Pipelined hardware to accelerate modular arithmetic operations |
CN114020332B (zh) * | 2022-01-05 | 2022-09-23 | 北京微核芯科技有限公司 | 指令处理方法及其装置 |
CN114527953B (zh) * | 2022-04-24 | 2022-07-08 | 深圳云豹智能有限公司 | 存储器数据处理系统、方法、装置、计算机设备和介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6122725A (en) * | 1998-03-31 | 2000-09-19 | Intel Corporation | Executing partial-width packed data instructions |
US6542988B1 (en) * | 1999-10-01 | 2003-04-01 | Sun Microsystems, Inc. | Sending both a load instruction and retrieved data from a load buffer to an annex prior to forwarding the load data to register file |
US6871273B1 (en) * | 2000-06-22 | 2005-03-22 | International Business Machines Corporation | Processor and method of executing a load instruction that dynamically bifurcate a load instruction into separately executable prefetch and register operations |
US7568087B2 (en) * | 2005-08-10 | 2009-07-28 | Apple Inc. | Partial load/store forward prediction |
RU2419836C2 (ru) * | 2006-08-16 | 2011-05-27 | Квэлкомм Инкорпорейтед | Способ и устройство для выполнения инструкций процессора на основе динамически изменяемой задержки |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2288521B (en) * | 1994-03-24 | 1998-10-14 | Discovision Ass | Reconfigurable process stage |
US5446912A (en) * | 1993-09-30 | 1995-08-29 | Intel Corporation | Partial width stalls within register alias table |
EP1217513A3 (en) * | 2000-12-23 | 2003-08-13 | International Business Machines Corporation | Method for handling 32 bit results for an out-of-order processor with a 64 bit architecture |
US7228403B2 (en) * | 2000-12-23 | 2007-06-05 | International Business Machines Corporation | Method for handling 32 bit results for an out-of-order processor with a 64 bit architecture |
US6889312B1 (en) * | 2001-04-02 | 2005-05-03 | Advanced Micro Devices, Inc. | Selective zero extension based on operand size |
US6995756B2 (en) * | 2003-03-31 | 2006-02-07 | Intel Corporation | Methods and apparatus for driving pixels in a microdisplay |
US7237096B1 (en) * | 2004-04-05 | 2007-06-26 | Sun Microsystems, Inc. | Storing results of producer instructions to facilitate consumer instruction dependency tracking |
JPWO2006043345A1 (ja) * | 2004-10-19 | 2008-05-22 | 松下電器産業株式会社 | プロセッサ |
US20070186210A1 (en) | 2006-02-06 | 2007-08-09 | Via Technologies, Inc. | Instruction set encoding in a dual-mode computer processing environment |
US9529592B2 (en) * | 2007-12-27 | 2016-12-27 | Intel Corporation | Vector mask memory access instructions to perform individual and sequential memory access operations if an exception occurs during a full width memory access operation |
US8977790B2 (en) * | 2008-02-15 | 2015-03-10 | Freescale Semiconductor, Inc. | Peripheral module register access methods and apparatus |
US8392693B2 (en) | 2009-08-28 | 2013-03-05 | Via Technologies, Inc. | Fast REP STOS using grabline operations |
US8627044B2 (en) * | 2010-10-06 | 2014-01-07 | Oracle International Corporation | Issuing instructions with unresolved data dependencies |
US20120254588A1 (en) | 2011-04-01 | 2012-10-04 | Jesus Corbal San Adrian | Systems, apparatuses, and methods for blending two source operands into a single destination using a writemask |
US20120254592A1 (en) | 2011-04-01 | 2012-10-04 | Jesus Corbal San Adrian | Systems, apparatuses, and methods for expanding a memory source into a destination register and compressing a source register into a destination memory location |
US8918626B2 (en) * | 2011-11-10 | 2014-12-23 | Oracle International Corporation | Prefetching load data in lookahead mode and invalidating architectural registers instead of writing results for retiring instructions |
CN107220027A (zh) * | 2011-12-23 | 2017-09-29 | 英特尔公司 | 用于执行掩码位压缩的系统、装置以及方法 |
US9395990B2 (en) | 2013-06-28 | 2016-07-19 | Intel Corporation | Mode dependent partial width load to wider register processors, methods, and systems |
-
2013
- 2013-06-28 US US13/931,070 patent/US9395990B2/en not_active Expired - Fee Related
-
2014
- 2014-06-18 TW TW103121018A patent/TWI524271B/zh not_active IP Right Cessation
- 2014-06-19 RU RU2015151131A patent/RU2638641C2/ru not_active IP Right Cessation
- 2014-06-19 WO PCT/US2014/043159 patent/WO2014209747A1/en active Application Filing
- 2014-06-19 KR KR1020157031766A patent/KR101839479B1/ko active IP Right Grant
- 2014-06-19 CN CN201480030091.1A patent/CN105453030B/zh not_active Expired - Fee Related
- 2014-06-19 BR BR112015029955A patent/BR112015029955A2/pt active Search and Examination
- 2014-06-19 EP EP14816582.2A patent/EP3014422B1/en active Active
- 2014-06-19 CN CN201910081033.6A patent/CN109508206B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6122725A (en) * | 1998-03-31 | 2000-09-19 | Intel Corporation | Executing partial-width packed data instructions |
US6542988B1 (en) * | 1999-10-01 | 2003-04-01 | Sun Microsystems, Inc. | Sending both a load instruction and retrieved data from a load buffer to an annex prior to forwarding the load data to register file |
US6871273B1 (en) * | 2000-06-22 | 2005-03-22 | International Business Machines Corporation | Processor and method of executing a load instruction that dynamically bifurcate a load instruction into separately executable prefetch and register operations |
US7568087B2 (en) * | 2005-08-10 | 2009-07-28 | Apple Inc. | Partial load/store forward prediction |
RU2419836C2 (ru) * | 2006-08-16 | 2011-05-27 | Квэлкомм Инкорпорейтед | Способ и устройство для выполнения инструкций процессора на основе динамически изменяемой задержки |
Also Published As
Publication number | Publication date |
---|---|
BR112015029955A2 (pt) | 2017-07-25 |
EP3014422B1 (en) | 2021-08-25 |
TWI524271B (zh) | 2016-03-01 |
EP3014422A4 (en) | 2017-03-01 |
RU2015151131A (ru) | 2017-05-31 |
CN109508206B (zh) | 2023-08-29 |
CN105453030A (zh) | 2016-03-30 |
CN105453030B (zh) | 2019-02-15 |
WO2014209747A1 (en) | 2014-12-31 |
KR20150139931A (ko) | 2015-12-14 |
TW201523439A (zh) | 2015-06-16 |
EP3014422A1 (en) | 2016-05-04 |
US9395990B2 (en) | 2016-07-19 |
KR101839479B1 (ko) | 2018-03-19 |
CN109508206A (zh) | 2019-03-22 |
US20150006856A1 (en) | 2015-01-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
RU2638641C2 (ru) | Загрузка парциальной ширины, зависящая от режима, в процессорах с регистрами с большим числом разрядов, способы и системы | |
US20210026634A1 (en) | Apparatus with reduced hardware register set using register-emulating memory location to emulate architectural register | |
US10776190B2 (en) | Hardware apparatuses and methods for memory corruption detection | |
US10120663B2 (en) | Inter-architecture compatability module to allow code module of one architecture to use library module of another architecture | |
KR101842058B1 (ko) | 푸싱형 버퍼 복사 및 저장 기능성을 제공하기 위한 명령어 및 논리 | |
CN107077321B (zh) | 用于执行融合的单个周期递增-比较-跳转的指令和逻辑 | |
RU2630745C2 (ru) | Пары инструкций установления очерёдности исполнения инструкций, процессоры, способы и системы | |
US9652234B2 (en) | Instruction and logic to control transfer in a partial binary translation system | |
GB2514882A (en) | Instruction emulation processors, methods, and systems | |
US20170286110A1 (en) | Auxiliary Cache for Reducing Instruction Fetch and Decode Bandwidth Requirements | |
US20150095578A1 (en) | Instructions and logic to provide memory fence and store functionality | |
US9329865B2 (en) | Context control and parameter passing within microcode based instruction routines | |
US9367314B2 (en) | Converting conditional short forward branches to computationally equivalent predicated instructions | |
WO2017172259A1 (en) | Memory copy instructions, processors, methods, and systems | |
US20140189192A1 (en) | Apparatus and method for a multiple page size translation lookaside buffer (tlb) | |
US11354128B2 (en) | Optimized mode transitions through predicting target state | |
US10324852B2 (en) | System and method to increase availability in a multi-level memory configuration | |
US10761979B2 (en) | Bit check processors, methods, systems, and instructions to check a bit with an indicated check bit value | |
TW201734766A (zh) | 使用處理器指令前綴的二進制轉譯支援 | |
US10069512B2 (en) | Systems, methods, and apparatuses for decompression using hardware and software | |
US20150095609A1 (en) | Apparatus and method for compressing a memory address | |
EP3109754A1 (en) | Systems, methods, and apparatuses for improving performance of status dependent computations |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | The patent is invalid due to non-payment of fees |
Effective date: 20190620 |