Устройство и способ связывания операций в памяти

Изобретение относится к вычислительной технике. Технический результат заключается в оптимизации операций в памяти. Процессор, выполненный с возможностью выборки команд из кэша команд, причем каждая команда задает частный доступ к памяти; декодирования каждой из команд для формирования декодированных команд; оценки декодированных команд с использованием критериев связывания операций в памяти, чтобы выборочно идентифицировать возможности связывания операций в памяти в рамках плана доступа к памяти, ассоциированного с декодированными командами; и создания комбинированных операций в памяти в соответствии с возможностями связывания операций в памяти, чтобы формировать исправленный план доступа к памяти с ускоренным доступом к памяти, при этом исправленный план доступа к памяти включает в себя одну команду, которая объединяет множество частных декодированных команд и задает выровненный адрес. 2 н. и 18 з.п. ф-лы, 1 ил.

 

ПЕРЕКРЕСТНАЯ ССЫЛКА НА РОДСТВЕННЫЕ ЗАЯВКИ

Настоящая заявка испрашивает приоритет согласно патентной заявке США № 13/789394, поданной 7 марта 2013 года, содержимое которой включено в настоящий документ посредством ссылки.

ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ

Настоящее изобретение относится, в общем, к архитектурам вычислительных машин. Более конкретно, изобретение относится к архитектурам процессоров со связыванием операций в памяти.

УРОВЕНЬ ТЕХНИКИ

Высокопроизводительным процессорам обычно требуется подавать более одной команды на загрузку или сохранение за цикл. Для этого требуется много аппаратных ресурсов, таких как диспетчеры команд, буферы данных, буферы быстрого преобразования адреса (TLB) и копии тегированной памяти и памяти данных в кэше данных, что увеличивает требования к пространству и энергопотреблению и является проблематичным. Это проблематично для любого микропроцессора, но особенно проблематично в применениях с ограниченной мощностью, например встроенных процессорах или серверах.

Большинство суперскалярных процессоров имеют три или четыре канала обработки, т.е. они могут посылать три или четыре команды каждый цикл. Около 40% команд могут быть операциями в памяти. Таким образом, оптимизация операций в памяти между многочисленными каналами обработки может приводить к значительной эффективности.

СУЩНОСТЬ ИЗОБРЕТЕНИЯ

Процессор выполнен с возможностью оценки критериев связывания операций в памяти, чтобы выборочно идентифицировать возможности связывания операций в памяти в рамках плана доступа к памяти. В соответствии с возможностями связывания операций в памяти создаются комбинированные операции в памяти, чтобы формировать исправленный план доступа к памяти с ускоренным доступом к памяти.

Энергонезависимый машиночитаемый носитель данных включает в себя исполняемые команды для определения процессора, выполненного с возможностью оценки критериев связывания операций в памяти, чтобы выборочно идентифицировать возможности связывания операций в памяти в рамках плана доступа к памяти. В соответствии с возможностями связывания операций в памяти создаются комбинированные операции в памяти, чтобы формировать исправленный план доступа к памяти с ускоренным доступом к памяти.

КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ

Изобретение будет более понятно в связи с нижеследующим подробным описанием, взятым вместе с прилагаемыми чертежами.

Фиг. 1 иллюстрирует процессор, выполненный в соответствии с вариантом осуществления этого изобретения.

Одинаковые ссылочные позиции относятся к соответствующим деталям на нескольких видах чертежей.

ОСУЩЕСТВЛЕНИЕ ИЗОБРЕТЕНИЯ

Фиг. 1 иллюстрирует процессор 100, выполненный в соответствии с вариантом осуществления этого изобретения. Процессор 100 осуществляет операции связывания памяти, описанные в этой заявке. В частности, процессор осуществляет связывание времени выполнения соседних операций в памяти для эффективного формирования одной команды для множества данных (SIMD-команды) из набора команд, не являющегося набором SIMD-команд. Это обеспечивает более широкий и менее частый доступ к памяти.

Процессор 100 включает в себя блок 102 интерфейса шины, соединенный с блоком 104 выборки команды. Блок 104 выборки команды извлекает команды из кэша 110 команд. Блок 108 управления памятью обеспечивает для блока 104 выборки команд преобразование виртуального адреса в физический адрес. Блок 108 управления памятью обеспечивает также преобразование ссылок на данные для загрузки и сохранение для программного канала 120 памяти (блока загрузки-сохранения).

Выбранные команды направляются в буферы 106 команд. Декодер 112 осуществляет доступ к буферам 106 команд. Декодер 112 выполнен с возможностью осуществления динамического связывания операций в памяти. Декодер 112 направляет декодированную команду в функциональный блок, такой как сопроцессор 114, блок 116 вычислений с плавающей точкой, арифметико-логическое устройство (АЛУ) 118 или программный канал памяти 120, который обрабатывает адреса загрузки и сохранения для доступа к кэшу 122 данных.

Декодер 112 выполнен таким образом, что многочисленные операции в памяти (в соседних местоположениях) "связываются" или соединяются вместе после декодирования команды. Связанные операции в памяти исполняются как одно целое в течение их времени жизни в ядре машины. К примеру, две 32-разрядные загрузки могут быть связаны в одну 64-разрядную загрузку. Связанная операция требует более широких трактов данных (например, 64-разрядных, а не 32-разрядных), которые уже могут присутствовать в машине. Даже если более широкий канал не доступен, то два 32-разрядных конвейера памяти занимают намного меньше пространства и потребляют намного меньше энергии, чем одна 64-разрядная операция. Таким образом, в результате изобретения формируется исправленный план доступа к памяти с ускоренным доступом к памяти. Ускоренный доступ может получаться в результате более широкого канала передачи данных, чем канал передачи данных, применяемый в первоначальном плане доступа к памяти. В качестве альтернативы, ускоренный доступ может получаться в результате конвейерного доступа к памяти. Например, в программном канале 120 памяти может применяться 64-разрядный канал для доступа к кэшу 122 данных. В качестве альтернативы, в программном канале 120 памяти может применяться конвейерный доступ к памяти к кэшу 122 данных.

Таким образом, изобретение обеспечивает создание высокопроизводительных машин, которые более эффективны по сравнению с известным уровнем техники. В некотором смысле о связывании многочисленных операций в памяти в одну более широкую операцию можно думать как о динамическом создании SIMD-команд из потока не SIMD-команд. Другими словами, SIMD-функциональность не подразумевается набором команд или архитектурой вычислительной машины. Напротив, возможности для SIMD идентифицируются в базе исходных текстов, которая не имеет SIMD-команд и не подразумевает иным образом SIMD-функциональность.

Как указано выше, около 40% команд могут быть операциями в памяти. Это предполагает, что около 1,2-1,6 команды на загрузку/сохранение могут входить в цикл для четырехканального процессора. Таким образом, операции по связыванию памяти согласно изобретению могут широко применяться. Кроме того, многие подпрограммы программ общего назначения, такие как копирование памяти, сравнения строк или нулевых байтов, требуют при загрузке/сохранении высокоскоростного доступа к кэшу данных первого уровня, обеспечивая дополнительные возможности использования методов по изобретению.

Обеспечение более одного порта загрузки/сохранения к кэшу является весьма дорогостоящим предложением, требующим большего количества ресурсов диспетчера, портов на чтение и запись в регистровый файл, генераторов адресов, массивов тегов, блоков сравнения тегов, буферов быстрого преобразования адресов, массивов данных, буферов сохранения, логики устранения неоднозначности и переадресации памяти. Однако во многих ситуациях, когда нужно выполнить более одной загрузки (или сохранения) за цикл, обнаруживается, что данные, к которым осуществляется доступ, расположены в памяти рядом, и, более того, доступ к ним осуществляется при помощи соседних команд в памяти программ (части кода). Процессор 100 выполнен с возможностью распознавания и использования этого путем преобразования большинства таких критических последовательных доступов к памяти в менее частный, но более широкий доступ, который может исполняться с минимальными издержками в отношении пространства и мощности благодаря минимальному дополнительному аппаратному обеспечению. В результате этого процессор 100 обеспечивает существенное улучшение производительности (50% - 100%) на ключевых процедурах.

Рассмотрим следующий код:

LW r5, 0ffset_1(r20) //32-разрядная загрузка из регистра 5 в

// первую позицию в регистре 20

LW r6, 0ffset_2(r20) //соседняя 32-разрядная загрузка из

// регистра 6 во вторую позицию в регистре //20

Этот код составляет план доступа к памяти. Как используется здесь, план доступа к памяти - это детализация операций доступа к памяти. План доступа к памяти подразумевает один канал доступа к памяти. Этот код оценивается динамически для создания связанной операции в памяти. То есть критерии связывания операций в памяти используются для оценки кода, чтобы выборочно идентифицировать возможности связывания операций в памяти в рамках плана доступа к памяти. Если возможность связывания операций в памяти существует, то формируются объединенные операции в памяти, чтобы устанавливать исправленный план доступа к памяти с ускоренным доступом к памяти. В этом случае код исправленного плана доступа к памяти выглядит следующим образом:

LW2 (r5, r6), 0ffset_1(r20) //связанная 64-разрядная загрузка из

//регистра 5 и регистра 6 в первую

//позицию в регистре

//20

В этом примере каждая соседняя пара 32-разрядных команд в памяти связывается в одну 64-разрядную операцию. Большинство 32-разрядных процессоров уже имеют 64-разрядные тракты данных к кэшу данных, поскольку одни должны поддерживать 64-разрядные операции загрузки, и запоминая с плавающей точкой. Тем не менее сравнительно просто расширить конвейер памяти с 64-разрядного на 32-разрядный для тех 32-разрядных процессоров, которые еще не имеют 64-разрядных трактов данных к/из кэша.

В общем, методика не ограничена связыванием двух 32-разрядных операций в 64-разрядные операции. Она может в равной степени хорошо применяться для связывания двух 64-разрядных операций в одну 128-разрядную операцию или четырех 32-разрядных операций в памяти в одну 128-разрядную операцию с сопутствующими выигрышами в производительности, пространстве и мощности.

Можно задавать различные критерии связывания операций в памяти. Например, критерии связывания операций в памяти могут включать в себя: соседние команды загрузки или сохранения, один и тот же тип памяти для двух операций в памяти, один и тот же регистр базового адреса для двух операций в памяти, следующие друг за другом местоположения в памяти, смещение, отличающееся на размер доступа, а в случае загрузок, место назначения первой операции не является источником для второй операции. В другом условии после связывания может требоваться выровненный адрес.

Аппаратные решения проблемы масштабирования ширины конвейера памяти без больших издержек в части пространства/мощности являются иллюзорными. Программные подходы к проблеме требуют новых команд, делая преимущества недостижимыми для существующего кода. Это также требует изменений в программной экосистеме; такие изменения затруднительно вводить в действие. К тому же потенциально возможное программное решение могло бы требовать, чтобы аппаратным обеспечением выполнялся не выровненный доступ к памяти, поскольку программному обеспечению не известно выравнивание всех операций во время компиляции. Метод связывания может использоваться вместе со связывающим предиктором, чтобы гарантировать, что все связанные операции доступа выровнены, что является важной и желательной особенностью чистых RISC-архитектур. Таким образом, такая схема может хорошо работать во время выполнения, когда аппаратному обеспечению известны фактические адреса, сгенерированные операциями в памяти. Процессорах, которые обрабатывают невыровненные адреса в аппаратном обеспечении, могут все еще использовать этот метод и получать большие выигрыши в производительности.

Специалистам в данной области техники будет понятно, что изобретение элегантно решает неприятную проблему в проектировании процессоров и имеет широкую применимость в любом процессоре общего назначения независимо от ширины конвейера, глубины конвейера или степени исполнения по предположению. Преимущественно, методы по изобретению не требуют изменения в наборе команд. Поэтому методы применимы ко всем существующим двоичным кодам.

Хотя выше были описаны различные варианты осуществления изобретения, следует понимать, что они были представлены для примера, а не ограничения. Специалистам в соответствующих областях техники, связанных с вычислительными машинами, будет очевидно, что различные изменения могут быть сделаны в форме и деталях, не выходя за пределы объема изобретения. К примеру, помимо использования аппаратного обеспечения (например, находящегося в или связанного с центральным процессором ("CPU"), микропроцессором, микроконтроллером, цифровым процессором сигналов, ядром процессора, системой на кристалле ("SOC") или любым другим устройством), варианты исполнения могут быть также осуществлены в программном обеспечении (например, машиночитаемом коде, программном коде и/или командах в любой форме, как на исходном, объектном или машинном языке), находящемся, например, на пригодном для использования машиной (например, читаемом) носителе, выполненном с возможностью хранения программного обеспечения. Такое программное обеспечение может делать возможным, например, функционирование, производство, моделирование, симуляцию, описание и/или тестирование описанных здесь устройства и способов. К примеру, этого можно достичь при помощи использования общих языков программирования (например, C, C++), языков описания аппаратных средств (HDL), в том числе Verilog HDL, VHDL и так далее или других доступных программ. Такое программное обеспечение может располагаться на любом известном энергонезависимом пригодном для использования машиной носителе, например полупроводнике, магнитном диске или оптическом диске (н-р, CD-ROM, DVD-ROM и т.п.). Понятно, что для обеспечения функциональных возможностей, указанных в программном обеспечении, может применяться CPU, ядро процессора, микроконтроллер или любой другой подходящий элемент электронного аппаратного обеспечения.

Понятно, что устройства и способ, описанные в этой заявке, могут быть включены в состав ядра полупроводниковой интеллектуальной собственности, как, например, ядро микропроцессора (например, осуществленное на языке HDL), и преобразованы в аппаратное обеспечение при производстве интегральных схем. Кроме того, описанные устройство и способы могут быть осуществлены посредством сочетания аппаратных средств и программного обеспечения. Таким образом, настоящее изобретение не должно ограничиваться каким-либо из описанных выше примерных вариантов осуществления, а должно определяться только в соответствии со следующими пунктами формулы изобретения и их эквивалентами.

1. Процессор, выполненный с возможностью:
выборки команд из кэша команд, причем каждая команда задает частный доступ к памяти;
декодирования каждой из команд для формирования декодированных команд;
оценки декодированных команд с использованием критериев связывания операций в памяти, чтобы выборочно идентифицировать возможности связывания операций в памяти в рамках плана доступа к памяти, ассоциированного с декодированными командами; и
создания комбинированных операций в памяти в соответствии с возможностями связывания операций в памяти, чтобы формировать исправленный план доступа к памяти с ускоренным доступом к памяти, при этом исправленный план доступа к памяти включает в себя одну команду, которая объединяет множество частных декодированных команд и задает выровненный адрес.

2. Процессор по п. 1, в котором исправленный план доступа к памяти использует более широкий канал передачи данных, чем канал передачи данных, применяемый в плане доступа к памяти.

3. Процессор по п. 1, в котором исправленный план доступа к памяти использует конвейерный доступ к памяти.

4. Процессор по п. 1, в котором критерии связывания операций в памяти определяют соседние команды загрузки или сохранения.

5. Процессор по п. 1, в котором критерии связывания операций в памяти определяют общий тип памяти для двух операций в памяти.

6. Процессор по п. 1, в котором критерии связывания операций в памяти определяют общий регистр базового адреса для двух операций в памяти.

7. Процессор по п. 1, в котором критерии связывания операций в памяти определяют следующие друг за другом местоположения в памяти.

8. Процессор по п. 1, в котором критерии связывания операций в памяти определяют смещение, отличающееся на размер доступа.

9. Процессор по п. 8, в котором критерии связывания операций в памяти определяют, что в случае загрузок место назначения первой операции в памяти не является источником для второй операции в памяти.

10. Процессор по п. 1, в котором критерии связывания операций в памяти определяют выровненный адрес после связывания.

11. Энергонезависимый машиночитаемый носитель данных, содержащий исполняемые команды для конфигурирования процессора выполненным с возможностью:
выборки команд из кэша команд, причем каждая команда задает частный доступ к памяти;
декодирования каждой из команд для формирования декодированных команд;
оценки декодированных команд с использованием критериев связывания операций в памяти, чтобы выборочно идентифицировать возможности связывания операций в памяти в рамках плана доступа к памяти, ассоциированного с декодированными командами, и
создания комбинированных операций в памяти в соответствии с возможностями связывания операций в памяти, чтобы формировать исправленный план доступа к памяти с ускоренным доступом к памяти, при этом исправленный план доступа к памяти включает в себя одну команду, которая объединяет множество частных декодированных команд и задает выровненный адрес.

12. Энергонезависимый машиночитаемый носитель данных по п. 11, при этом исправленный план доступа к памяти использует более широкий канал передачи данных, чем канал передачи данных, используемый планом доступа к памяти.

13. Энергонезависимый машиночитаемый носитель данных по п. 11, при этом исправленный план доступа к памяти использует конвейерный доступ к памяти.

14. Энергонезависимый машиночитаемый носитель данных по п. 11, при этом критерии связывания операций в памяти определяют соседние команды загрузки или сохранения.

15. Энергонезависимый машиночитаемый носитель данных по п. 11, при этом критерии связывания операций в памяти определяют общий тип памяти для двух операций в памяти.

16. Энергонезависимый машиночитаемый носитель данных по п. 11, при этом критерии связывания операций в памяти определяют общий регистр базового адреса для двух операций в памяти.

17. Энергонезависимый машиночитаемый носитель данных по п. 11, при этом критерии связывания операций в памяти определяют следующие друг за другом местоположения в памяти.

18. Энергонезависимый машиночитаемый носитель данных по п. 11, при этом критерии связывания операций в памяти определяют смещение, отличающееся на размер доступа.

19. Энергонезависимый машиночитаемый носитель данных по п. 18, в котором критерии связывания операций в памяти определяют, что в случае загрузок место назначения первой операции в памяти не является источником для второй операции в памяти.

20. Энергонезависимый машиночитаемый носитель данных по п. 11, при этом критерии связывания операций в памяти определяют выровненный адрес после связывания.



 

Похожие патенты:

Изобретение относится к средствам совместного использования информации между прикладными программами. .

Изобретение относится к процессорам и, в частности, к способу представления переходов цикла в регистре предыстории переходов с помощью множества бит. .

Изобретение относится к электронике, а конкретно к процессорам. .

Изобретение относится к области процессоров, более конкретно к способу улучшения прогнозирования ветвлений посредством проактивного управления содержимым КЭШа адресов ветвлений.

Изобретение относится к способам прогнозирования ветвлений в кэше целевых адресов ветвлений. .

Изобретение относится к вычислительной технике. .

Изобретение относится к блокированию исходных регистров в устройстве обработки данных. .

Изобретение относится к системам обработки данных. .

Изобретение относится к вычислительной технике. Технический результат заключается в повышении производительности кэш-памяти путем увеличения скорости выдачи инструкций без увеличения разрядности запоминающих устройств. Способ заполнения кэш-памяти команд и выдачи команд на выполнение включает заполнение кэш-памяти команд и выдачу команд на выполнение, разделение массива кэш-памяти на секции, перемещение каждой строки из основной памяти в кэш-память и размещение в определенной строке секции, которую определяют посредством блока выбора секций, причем заполнение кэш-памяти производят размещением строки в секцию, следующую за секцией, в которую была размещена предыдущая строка, при этом последующие строки размещают в циклической последовательности с установлением флага, а выдачу команд на выполнение осуществляют из двух секций одновременно при наличии указанного флага. 2 н.п. ф-лы, 3 ил.

Изобретение относится к области предсказаний ветвлений команд микропроцессора и, в частности, к предсказанию следующей команды выбранной ветви команд микропроцессора. Технический результат заключается в улучшении рабочих характеристик процессора с конвейерной обработкой, заключающихся в снижении энергопотребления. Технический результат достигается за счет предсказания ветвлений (BPU) для предсказания следующей команды выбранной ветви в блоке обработки. BPU содержит память истории вариантов, содержащую адреса источника ветвления и указатели ветвления, буфер адресатов ветвлений и логическую схему предсказания ветвлений. При помощи поискового счетчика команд (PC) схема находит в памяти указатель ветвления, указывающий команду предсказанной выбранной ветви. Схема выбирает первый найденный указатель ветвления, и, используя первый найденный указатель ветвления, схема извлекает из памяти адрес источника ветвления первой команды предсказанной выбранной ветви. Если извлеченным адресом источника ветвления является адрес источника ветвления, ближайший к поисковому PC, схема выводит его в качестве следующего PC адресата ветвления. Затем осуществляет останов предсказания. 5 н. и 10 з.п. ф-лы, 6 ил., 3 табл.

Группа изобретений относится к области компьютерной техники и может быть использована для установления и изменения очередности исполнения инструкций в процессорах. Техническим результатом является обеспечение желаемой очередности исполнения инструкций. Процессор содержит блок выборки инструкций для выборки пары инструкций установления очередности исполнения инструкций, которая должна быть частью набора инструкций процессора, причем пара инструкций установления очередности исполнения инструкций включает в себя инструкцию активации и инструкцию установления, причем инструкция активации появляется перед инструкцией установления в очереди программы; и модуль установления очередности исполнения инструкций, в ответ на пару инструкций установления очередности исполнения инструкций, для предотвращения обработки инструкций, появляющихся после инструкции установления в очереди программы, перед инструкцией активации в части с изменением очередности исполнения инструкций процессора. 4 н. и 20 з.п. ф-лы, 20 ил.

Изобретение относится к средствам для потоковой передачи исполняемого кода. Технический результат заключается в предотвращении приостановки потока при каждом сбое потоковой передачи. Принимают инструкции, содержащие множество кодов операции, при этом каждый код операции содержит один или более байтов данных. Дизассемблируют инструкции на отдельные коды операции. Создают таблицу, идентифицирующую границы между каждым кодом операции. Добавляют коды операции отладочной точки останова к коду операции для создания полного стандартного блока памяти. Записывают каждый код операции в память, код операции за кодом операции, посредством атомарной записи стандартных блоков памяти. 3 н. и 15 з.п. ф-лы, 7 ил.

Группа изобретений относится к области обработки информации и может быть использована для идентификации инструкций для удаления в многопоточном процессоре с изменением последовательности. Техническим результатом является повышение пропускной способности конвейерной обработки и улучшение производительности. Процессор содержит первую логику для выполнения потока инструкций с изменением последовательности, причем поток инструкций разделен на множество субпотоков, при этом поток инструкций и каждый субпоток упорядочен порядком программы (PO); вторую логику для определения старейшей неотправленной инструкции в потоке инструкций и хранения связанного PO значения старейшей неотправленной инструкции в качестве указателя выполненной инструкции, причем поток инструкций включает в себя отправленные и неотправленные инструкции; третью логику для определения последней удаленной инструкции в потоке инструкций и хранения связанного PO значения последней удаленной инструкции в качестве указателя удаления; четвертую логику для выбора диапазона инструкций между указателем удаления и указателем выполненной инструкции и пятую логику для идентификации инструкций в диапазоне в качестве подлежащих удалению. 3 н. и 17 з.п. ф-лы, 34 ил.
Наверх