Что означает банковское дело применительно к регистрам?

13

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

Что означает банковское дело в отношении реестров?

Пол А. Клейтон
источник

Ответы:

16

Слово «банкинг» используется в двух разных смыслах применительно к регистрам.

Банковские регистры для обработки прерываний

Смысл вопроса StackOverflow аналогичен использованию в банке (памяти) переключения (используется некоторыми 8-битными и 16-битными процессорами) в функции . Имена коллекции регистров сопоставляются с другой коллекцией физических регистров. ARMv7 предоставляет один дополнительный банк для 7 из 16 своих GPR и еще пять банков для регистра указателя стека и регистра ссылки (ARM использует регистр связи для сохранения ПК, который будет использоваться для возврата из прерывания). Itanium предоставляет один дополнительный банк для 16 из своих 31 статического георадара. (MIPS предоставляет целые наборы из 31 GPR, называя их «наборы теневых регистров».)

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

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

(Использование таких банков регистров в качестве фиксированных окон было предложено для увеличения числа доступных регистров, например, «Увеличение количества эффективных регистров в процессоре с низким энергопотреблением с использованием файла регистров с окнами», Раджив А. Равиндран и др., 2003. Можно также отметить сходство со стеком регистров, используемым, чтобы избежать затрат на сохранение и восстановление регистров для вызовов функций, как в Itanium и SPARC [в которых используется термин «окна регистров»], хотя эти механизмы обычно смещают имена регистров, а не меняют их местами. вне.)

С точки зрения аппаратного обеспечения, банковские регистры могут быть реализованы путем переименования регистров в декодировании команд. Для относительно сложной банковской системы ARM это, вероятно, будет предпочтительным механизмом. Для более простой банковской системы, подобной той, которая используется в Itanium с одним дополнительным банком, имеющим мощность в два числа регистров, может оказаться целесообразным включить переименование в индекс самого файла регистров. (Конечно, это не будет совместимо с некоторыми формами переименования, используемыми для поддержки выполнения не по порядку.)

Признавая, что к разным банкам не обращаются одновременно, умная оптимизация с использованием этого механизма может уменьшить (ограниченную проводную связь) область служебных данных сильно портированного файла регистров с помощью «трехмерных регистров». (Этот метод был предложен в контексте окон регистров SPARC - «Трехмерный регистровый файл для суперскалярных процессоров», Tremblay et al., 1995 - и Intel использовала вариант для SoEMT - «Многопоточный, защищенный от четности»). Файлы регистрации из 128 слов на двухъядерном процессоре семейства Itanium ", Фетцер и др., 2005.)

Банковское дело для увеличения количества возможных обращений

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

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

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

(Одной из альтернатив такого банкинга является репликация файла реестра. Использование двух копий файла реестра позволяет каждой копии требовать вдвое меньше портов чтения, хотя требуется одинаковое количество портов записи. Этот метод использовался в POWER2 и Alpha 21264 и обычно используется в высокопроизводительных процессорах.)

Резюме

Может быть полезно различать эти два типа банковских операций как временные банковские операции, в которых выбор банка распределен по времени (например, банковские регистры ARM для быстрых прерываний), и пространственные банковские операции, в которых доступ к банку может быть одновременным во времени, но распределен по пространству.

Временные банковские операции обычно подвергаются программному обеспечению и используются для уменьшения накладных расходов (и сложности) прерываний. (Концептуально переключение потоков в процессоре Switch-on-Event-MultiThreaded очень похоже на обработку прерываний и может использовать аналогичные механизмы для уменьшения накладных расходов.)

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

Пол А. Клейтон
источник