Использование системы переименования регистра для передачи промежуточных результатов между составными командами и расширенной командой
Иллюстрации
Показать всеИзобретение относится к вычислительной технике. Технический результат заключается в обеспечении надежной передачи промежуточных результатов между составными командами и расширенной командой. В способе выполнения расширенной команды в системе, содержащей таблицу переименования, свободный список и таблицу переименования составной команды, преобразуют расширенную команду во множество отдельно выполняемых составных команд, включающих в себя первую составную команду и вторую составную команду; назначают номер физического регистра, связанный с физическим регистром первой составной команды, с помощью преобразования идентификатора первой составной команды в номер физического регистра в таблице переименования составной команды, причем первая составная команда генерирует промежуточный результат; и связывают назначенный номер физического регистра со второй составной командой, принимающей промежуточный результат. 2 н. и 17 з.п. ф-лы, 3 ил.
Реферат
Уровень техники
Изобретение в целом относится к процессорам, в частности к системе и способу, предназначенным для использования существующих ресурсов переименования регистра, чтобы выполнять расширенные команды, которые передают частичные результаты.
Команды процессора работают по данным, полученным из памяти, и записывают свои результаты в память. Современные процессоры используют иерархическую структуру памяти, содержащую некоторые быстрые, дорогие элементы памяти, такие как регистры, на верхнем уровне. Затем иерархия памяти содержит последовательно более медленные, но эффективные по стоимости технологии памяти на нижних уровнях, такие как кэш-памяти (SRAM), твердотельная основная память (DRAM) и диски (магнитные или оптические носители) соответственно. Для применений, таких как портативные электронные устройства, DRAM часто является самым медленным уровнем иерархии памяти.
Большинство архитектур набора команд (ISA) процессора включают в себя множество регистров общего назначения (GPR), которые являются архитектурными регистрами, используемыми для того, чтобы передавать данные между командами в память и из памяти. Команды, которые выполняют логические и арифметические операции по данным, считывают свои операнды из определенных GPR и записывают свои результаты в определенные GPR. Подобным образом команды доступа к памяти считывают данные, сохраняемые в памяти, из GPR и записывают данные, загруженные из памяти, в GPR. Компилятор назначает идентификаторы исходного и целевого GPR каждой команде и упорядочивает команды таким образом, что вычисляют соответствующие результаты. То есть команды располагают в “последовательности программы”, что гарантирует правильные результаты с помощью управления более ранними командами таким образом, чтобы хранить результаты в определенных GPR, и управления более поздними командами таким образом, чтобы считывать эти GPR, чтобы получать операнды для дальнейшей обработки. Идентификаторы GPR являются логическими метками (например, r0-r15).
Некоторые современные процессоры поддерживают “расширенные” команды, то есть команды, которые выполняют более одной арифметической или логической операции. Например, команда ADD r1, r2, r3 LSL r4 осуществляет уравнение r1=r3+(r3<<[r4]), то есть сдвигает влево значение в регистре r3 на величину, сохраненную в r4, прибавляет этот результат к значению в r2 и хранит сумму в регистре r1. В процессоре, сумматор которого требует полного времени цикла, эта расширенная команда может быть осуществлена как две отдельные составные команды, команда сдвига, которая сдвигает влево значение в r3, генерирующая промежуточный результат, и команда суммирования, которая прибавляет промежуточный результат к значению в r2 и хранит сумму в r1. В некоторых процессорах, т.е. процессорах, которые поддерживают передачу операнда и выполняют только расширенные команды в последовательности программы, передача промежуточных результатов из команды сдвига в команду суммирования является прямой. Однако обычно, в частности в суперскалярных процессорах, которые поддерживают неупорядоченное выполнение команд, дополнительные ресурсы, такие как не архитектурные “временные” регистры и сложная управляющая логика, должны быть добавлены к процессору, чтобы надежно осуществлять передачу промежуточных результатов между составными командами и расширенной командой.
Сущность изобретения
В соответствии с одним или более вариантами осуществления, описанными и представленными в формуле изобретения в настоящей заявке, передачу промежуточных результатов между составными командами расширенной команды выполняют с использованием ресурсов переименования регистра и управляющей логики. Первая составная команда генерирует промежуточные результаты, и ей назначают PRN в таблице переименования составной команды, и записывает промежуточные результаты в физический регистр. Вторая составная команда выполняет поиск в таблице переименования составной команды и считывает промежуточные результаты из физического регистра. Логика переименования составной команды отслеживает составные команды через конвейер, удаляет элемент таблицы переименования составной команды и возвращает PRN в свободный список, когда вторая составная команда считала промежуточные результаты.
Один вариант осуществления относится к способу выполнения расширенной команды. Расширенную команду преобразуют в две или более отдельно выполняемые составные команды. Номер физического регистра назначают первой составной команде, генерирующей промежуточный результат. Назначенный номер физического регистра связывают со второй составной командой, принимающей промежуточный результат.
Другой вариант осуществления относится к процессору. Процессор включает в себя один или более конвейеров выполнения команд, действующих с возможностью выполнения расширенной команды с помощью генерации первой составной команды, генерирующей промежуточные результаты, и второй составной команды, принимающей промежуточные результаты. Процессор также включает в себя пул физических регистров, причем каждый регистр имеет номер физического регистра, и таблицу переименования составной команды, действующую с возможностью преобразования идентификаторов команд в номера физических регистров. Процессор дополнительно включает в себя управляющую логику, действующую с возможностью создания элемента в таблице переименования составной команды для первой составной команды и дополнительно действующую с возможностью выполнения поиска в таблице переименования составной команды для второй составной команды. Промежуточные результаты передают из первых во вторые составляющие команды через физические регистры, идентифицированные с помощью номеров физических регистров.
Краткое описание чертежей
Фиг.1 - функциональная блок-схема процессора, использующего ресурсы переименования регистра, чтобы осуществить передачу промежуточного результата между составными командами расширенной команды.
Фиг.2 - функциональная блок-схема конвейера процессора фиг.1.
Фиг.3 - блок-схема последовательности этапов способа выполнения расширенной команды.
Подробное описание изобретения
Фиг.1 изображает функциональную блок-схему процессора 10, имеющего логику, чтобы использовать ресурсы переименования регистра, чтобы отслеживать передачу промежуточных результатов между составными командами, сгенерированными с помощью расширенной команды. Процессор 10 выполняет команды в конвейере 12 выполнения команд в соответствии с управляющей логикой 14. Конвейер 12 может быть суперскалярной конструкцией с множеством параллельных нижних конвейеров 12а, 12b. Конвейер 12 включает в себя различные регистры или схемы-защелки 16, организованные в каскадах конвейера, а также логические и вычислительные схемы, такие как арифметико-логические устройства (ALU) (не показаны). Файл 18 регистра общего назначения (GPR) обеспечивает регистры, содержащие вершину иерархии памяти. Как обсуждено в настоящей заявке, GPR 18 может включать в себя таблицу переименования (RT) 20, свободный список 22 и таблицу переименования составной команды (CITR) 24, чтобы позволить использование ресурсов переименования регистра, чтобы эффективно и надежно передавать промежуточные результаты между составными командами расширенных команд.
Конвейер 12 выбирает команды из кэша команд (I-кэша, или I$) 26, причем адресацией памяти и полномочиями управляют с помощью буфера ассоциативной трансляции стороны команд (ITLB) 28. Данные выбирают из кэша данных (D-кэша, или D$), причем адресацией и полномочиями памяти управляют с помощью главного буфера ассоциативной трансляции (TLB) 32. В разных вариантах осуществления ITLB 28 может содержать копию части TLB 32. В качестве альтернативы ITLB 28 и TLB 32 могут быть интегрированы. Подобным образом в разных вариантах осуществления процессор 10, I-кэш 26 и D-кэш 30 могут быть интегрированы или объединены.
Потери в I-кэше 26 и/или D-кэше 30 являются причиной доступа к главной (вне кристалла) памяти 34 под управлением интерфейса 36 памяти (другие кэши, не изображенные, могут быть помещены между процессором 10 и главной памятью 34). Процессор 10 может включать в себя интерфейс 38 ввода/вывода (I/O), управляющий доступом к различным периферийным устройствам 40, 42. Специалисты в данной области техники поймут, что возможны многочисленные варианты процессора 10. Например, процессор 10 может включать в себя кэш второго уровня (L2) либо для каждого, либо для обоих кэшей I и D 26, 30. Кроме того, один или более из функциональных блоков, изображенных в процессоре 10, могут быть не включены в конкретный вариант осуществления.
Многие современные процессоры 10 выполняют команды “непоследовательно”, то есть в последовательности, отличной от программной последовательности команд, чтобы полностью использовать множество конвейеров 12а, 12b и улучшить общую производительность. Непоследовательное выполнение команд вызывает многочисленные зависимости между командами, известные как “опасности”. Опасности данных возникают, когда переупорядочивание команд изменяет последовательность доступа к операнду, включенному в зависимость. Опасности данных могут быть классифицированы в три типа: считывание после записи (RaW), запись после записи (WaW) и запись после считывания (WaR). Следует заметить, что считывание после считывания (RaR) не является опасностью данных, считывания могут быть выполнены в любой последовательности. Опасности данных, такие как RaW, также могут случаться, когда команды являются не переупорядоченными, но просто должны храниться в конкретной стадии до тех пор, пока их результаты не будут записаны обратно или не будут готовы для передачи.
Известной системой, предназначенной для оперирования опасностями данных в процессорах 10, которые поддерживают непоследовательное выполнение команд, является переименование регистра. В системе переименования регистра большим набором или пулом физических регистров, причем каждый регистр имеет номер физического регистра (PRN), управляют с помощью динамического назначения логических номеров регистров (LRN) физическим регистрам. LRN могут содержать, например, логические идентификаторы GRP (r0, r1, r2, …). Число физических регистров больше, чем число LRN или архитектурных GPR. Таблица переименования (RT) 20 поддерживает динамическое преобразование между LRN и PRN, и имеющиеся PRN поддерживаются в свободном списке 22.
Фиг.2 изображает более подробно функциональную блок-схему конвейера 12 и различные ресурсы переименования регистра. Стадия 50 выборки конвейера 12 выбирает команды из кэша 26 команд. Команды декодируют на стадии 52 декодирования, и они могут поступать в буфер 54 выдачи. Команды выдают из буфера 54 выдачи в конвейер 12а, 12b. Логика 56 переименования инспектирует характеристики доступа к регистру команд и транслирует LRN (например, идентификаторы GPR), связанные с командой, в PRN, когда необходимо, через таблицу 20 переименования и свободный список 22. Для команд, которые записывают регистр, новый физический регистр выбирают из свободного списка 22 и новое преобразование LRN в PRN вводят в таблицу 20 переименования. Оно преобразует LRN в неиспользованный PRN таким образом, что запись направляют в связанный физический регистр (то есть LRN является “переименованным”). Команды, которые считывают регистр на стадии 58а, 58b конвейера доступа к регистру, транслируют свой LRN в PRN посредством поиска в таблице 20 преобразования. PRN остается связанным с командой считывания регистра на всем протяжении ее времени прохождения через конвейер 12а, 12b.
Команды записи регистра не “портят” предыдущие значения, записанные в тот же самый LRN, запись направляют в новый неиспользованный PRN (когда LRN переименовывают в новый PRN). Команды, которые следуют за командой записи в последовательности программы, будут направлены в тот же самый PRN, чтобы получить записанное значение. Команды, предшествующие команде записи в последовательности программы, были бы преобразованы с помощью таблицы 20 переименования в другой физический регистр (до операции переименования) и будут продолжать осуществлять доступ к этому физическому регистру. Таким образом, команды, которые записывают данный LRN, могут быть выполнены раньше команд, которые считывают предыдущее значение из LRN (WaR) или записывают предыдущий результат в LRN (WaW).
Когда команду записи регистра передают для выполнения на стадии 60а, 60b конвейера, то есть когда команда устанавливает, что ни она, ни любая команда перед ней в последовательности программы не вызовет исключения, PRN, назначенный ей, становится соответственным архитектурным GPR. Команда будет записывать свои результаты в этот PRN на стадии 62а, 62b конвейера обратной записи (возможно, после буфера 64а, 64b записи). В этот момент любое более старое переименование того же LRN (идентификатора GPR) в другие PRN удаляют из таблицы 20 переименования. Когда все команды, считывающие GRP, завершат выполнение, PRN возвращают в свободный список 22 как доступный ресурс для другой операции переименования. Оперативная логика 66 переименования выполняет эти функции с помощью мониторинга конвейера 12, когда команды передают для выполнения, и посылает соответственные управляющие сигналы в таблицу 20 переименования и свободный список 22.
В соответствии с одним или более вариантами осуществления систему переименования регистра используют для того, чтобы предусмотреть передачу промежуточных результатов между составными командами, сгенерированными из расширенных команд. Когда расширенную команду декодируют на стадии 52 конвейера, две или более составных команд могут быть сгенерированы и переданы в буфер 54 выдачи команды. Составные команды могут быть отмечены относительно того, какие команды генерируют один или более промежуточных результатов, а какие принимают промежуточные результаты в качестве операндов. Логика 56 переименования инспектирует составные команды и назначает один или более PRN из свободного списка 22 составным командам, которые генерируют промежуточные результаты. Логика 56 переименования дополнительно создает элемент в таблице 24 переименования составной команды, который преобразует указатель, идентифицирующий составную команду, генерирующую промежуточный результат, в назначенный PRN. Логика 56 переименования дополнительно отмечает составные команды, которые принимают промежуточные результаты с помощью указателя, идентифицирующего составную команду, генерирующую промежуточные результаты.
Когда составные команды, принимающие промежуточные результаты, достигают стадии 58а, 58b конвейера, команды осуществляют доступ к таблице 24 переименования составной команды, чтобы выбрать PRN, идентифицирующий регистр, который содержит их промежуточные результаты. Когда составные команды, принимающие промежуточные результаты, передают для выполнения на стадии 60а, 60b конвейера, логика 68 переименования составной команды удаляет соответственный элемент из таблицы 24 переименования составной команды и возвращает PRN в свободный список 22. Следует заметить, что несмотря на то что таблица 24 переименования составной команды изображена на фиг.2 как независимый функциональный элемент, в некоторых вариантах осуществления функциональные возможности могут быть включены в таблицу 20 переименования. В этом случае составные команды расширенных команд, которые генерируют и принимают промежуточные результаты, рассматривают как специальный случай переименования регистра, причем переименовывают идентификатор команды, а не LRN. В других вариантах осуществления переименование регистра составной команды может быть отделено от переименования регистра с отдельным пулом физических регистров и отдельным свободным списком 22, выделенными расширенным командам.
Фиг.3 изображает способ выполнения расширенной команды. Расширенную команду преобразуют в две или более отдельно выполняемых составных команд (блок 100). Первой составной команде, генерирующей промежуточный результат, назначают PRN (блок 102). В одном варианте осуществления PRN выбирают из пула переименования регистра. Назначенный PRN связывают со второй составной командой, принимающей промежуточный результат (блок 104). Связь может быть через элемент в таблице 24 переименования составной команды или таблице 20 переименования системы переименования регистра.
Затем выполняют первую составную команду (блок 106), и промежуточный результат, который она генерирует, хранится в регистре, идентифицированном с помощью назначенного PRN. Выполняют вторую составную команду (блок 108), выбирающую промежуточный результат из регистра, идентифицированного с помощью назначенного PRN. Специалисты в данной области техники поймут, что блок 106 и 108 может быть осуществлен с помощью передачи операнда с использованием назначенного PRN, чтобы идентифицировать команды, без фактической записи промежуточных результатов в физический регистр.
После того как вторая составная команда приняла промежуточный результат, отменяют связь PRN со второй составной командой (блок 110) таким образом, как с помощью удаления соответственного элемента из таблицы 24 переименования составной команды (или таблицы 20 переименования регистра). Затем PRN возвращают в пул переименования регистра (блок 112) таким образом, как с помощью возвращения PRN в свободный список 22. Связь PRN со второй составной командой может быть отменена, и PRN может быть возвращен в свободный список 22, как только вторая составная команда считает промежуточный результат во время своего выполнения или в любое время позднее.
С помощью использования ресурсов и методологии существующих систем переименования регистра, как описано в настоящей заявке, расширенные команды могут быть выполнены как две или более составных команд без потребности в экстенсивных дополнительных ресурсах процессора и логики, чтобы осуществлять передачу промежуточных результатов между составными командами. Несмотря на то что описано с точки зрения двух составных команд, передающих один промежуточный результат, специалисты в данной области техники поймут, что настоящее изобретение не ограничено этим вариантом осуществления. Обычно большое число составных команд может быть сгенерировано из расширенной команды, и составные команды могут передавать большое число промежуточных результатов между собой с использованием системы переименования регистра, как описано в настоящей заявке.
Конечно, настоящее изобретение может быть выполнено другими способами, отличными от способов, разъясненных в настоящей заявке, не выходя за рамки существенных характеристик изобретения. Настоящие варианты осуществления должны быть рассмотрены во всех аспектах как иллюстративные, а не ограничительные, и подразумевают, что все изменения, относящиеся к диапазону смысла и эквивалентности прилагаемой формулы изобретения, должны быть включены в нее.
1. Способ выполнения расширенной команды в системе, содержащей таблицу переименования, свободный список и таблицу переименования составной команды, способ содержит этапы, на которых:преобразуют расширенную команду во множество отдельно выполняемых составных команд, включающих в себя первую составную команду и вторую составную команду;назначают номер физического регистра, связанный с физическим регистром первой составной команды, с помощью преобразования идентификатора первой составной команды в номер физического регистра в таблице переименования составной команды, причем первая составная команда генерирует промежуточный результат; исвязывают назначенный номер физического регистра со второй составной командой, принимающей промежуточный результат.
2. Способ по п.1, дополнительно содержащий этап, на котором выполняют первую составную команду, чтобы сгенерировать промежуточный результат.
3. Способ по п.2, дополнительно содержащий этап, на котором используют назначенный номер физического регистра для направления промежуточного результата в качестве операнда второй составной команды без сохранения промежуточного результата в физическом регистре.
4. Способ по п.3, в котором этап, на котором назначают номер физического регистра первой составной команде, содержит этап, на котором создают элемент в таблице переименования составной команды, преобразующей идентификатор первой составной команды в номер физического регистра, и дополнительно содержит этап, на котором принимают промежуточный результат с помощью второй составной команды без выполнения поиска в таблице переименования составной команды.
5. Способ по п.2, дополнительно содержащий этап, на котором сохраняют промежуточный результат в физическом регистре.
6. Способ по п.5, дополнительно содержащий этап, на котором выполняют вторую составную команду, причем выполнение второй составной команды включает в себя извлечение промежуточного результата из физического регистра.
7. Способ по п.1, в котором этап, на котором назначают номер физического регистра первой составной команде, содержит этап, на котором создают элемент в таблице переименования составной команды, который преобразует идентификатор первой составной команды в номер физического регистра.
8. Способ по п.7, в котором номер физического регистра выбирают из списка доступных физических регистров.
9. Способ по п.1, дополнительно содержащий этап, на котором выполняют вторую составную команду, причем выполнение второй составной команды дополнительно содержит этап, на котором выполняют поиск в таблице переименования составной команды с использованием идентификатора первой составной команды.
10. Способ по п.1, дополнительно содержащий этап, на котором отпускают номер физического регистра от назначения первой составной команде после того, как вторая составная команда считает промежуточный результат.
11. Способ по п.10, в котором этап, на котором отпускают номер физического регистра, содержит этап, на котором добавляют номер физического регистра к списку доступных физических регистров.
12. Способ по п.1, в котором этап, на котором связывают назначенный номер физического регистра со второй составной командой, содержит этап, на котором отмечают вторую составную команду с идентификатором первой составной команды.
13. Процессор, содержащийтаблицу переименования, свободный список и таблицу переименования составной команды,конвейер выполнения команд, действующих с возможностью выполнения расширенной команды с помощью преобразования расширенной команды в первую составную команду и вторую составную команду, причем первая составная команда генерирует промежуточные результаты, и вторая составная команда принимает промежуточные результаты; ифизический регистр для хранения промежуточных результатов, сгенерированных первой составной командой, причем физический регистр имеет связанный номер физического регистра, илогику переименования для назначения номера физического регистра первой составной команде с помощью преобразования в таблице переименования составной команды идентификатора первой составной команды в номер физического регистра и связывания номера физического регистра со второй составной командой, причем вторая составная команда принимает промежуточные результаты.
14. Процессор по п.13, дополнительно содержащий управляющую логику, действующую с возможностью возвращать номер физического регистра свободному списку после того, как вторая составная команда принимает промежуточные результаты.
15. Процессор по п.13, в котором элемент таблицы переименования составной команды преобразует идентификатор первой составной команды, связанный с первой составной командой в номер физического регистра.
16. Процессор по п.13, в котором первая составная команда записывает промежуточные результаты в физический регистр.
17. Процессор по п.13, в котором вторая составная команда считывает промежуточные результаты из физического регистра.
18. Процессор по п.15, в котором вторая составная команда извлекает номер физического регистра посредством поиска в таблице переименования составной команды с использованием идентификатора первой составной команды.
19. Процессор по п.15, в котором элемент таблицы переименования составной команды удаляется из таблицы переименования составной команды после того, как вторая составная команда примет промежуточные результаты.