УСТРОЙСТВО И СПОСОБ СВЯЗЫВАНИЯ ОПЕРАЦИЙ В ПАМЯТИ
DEVICE AND METHOD FOR BINDING OPERATIONS IN MEMORY

ПЕРЕКРЕСТНАЯ ССЫЛКА НА РОДСТВЕННЫЕ ЗАЯВКИ
Настоящая заявка испрашивает приоритет согласно патентной заявке США № 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), и преобразованы в аппаратное обеспечение при производстве интегральных схем. Кроме того, описанные устройство и способы могут быть осуществлены посредством сочетания аппаратных средств и программного обеспечения. Таким образом, настоящее изобретение не должно ограничиваться каким-либо из описанных выше примерных вариантов осуществления, а должно определяться только в соответствии со следующими пунктами формулы изобретения и их эквивалентами.