Блок генерации адреса ( AGU ), иногда также называемый блоком вычисления адреса ( ACU ), [1] является исполнительным блоком внутри центральных процессоров (ЦП), который вычисляет адреса, используемые ЦП для доступа к основной памяти . Благодаря обработке адресных вычислений отдельной схемой, которая работает параллельно с остальной частью ЦП, количество циклов ЦП, необходимых для выполнения различных машинных инструкций, может быть сокращено, что приводит к повышению производительности. [2] [3]
При выполнении различных операций ЦП необходимо вычислять адреса памяти, необходимые для извлечения данных из памяти; например, позиции элементов массива в памяти должны быть рассчитаны до того, как ЦП сможет извлечь данные из фактических ячеек памяти. Эти вычисления генерации адресов включают различные целочисленные арифметические операции , такие как сложение, вычитание, операции по модулю или сдвиги битов . Часто вычисление адреса памяти включает в себя более одной машинной инструкции общего назначения, которые не обязательно быстро декодируются и выполняются . Включая AGU в конструкцию ЦП, вместе с введением специализированных инструкций, которые используют AGU, различные вычисления генерации адресов могут быть выгружены из остальной части ЦП и часто могут быть выполнены быстро за один цикл ЦП. [2] [3]
Возможности AGU зависят от конкретного ЦП и его архитектуры . Таким образом, некоторые AGU реализуют и предоставляют больше операций вычисления адресов, в то время как некоторые также включают более продвинутые специализированные инструкции, которые могут работать с несколькими операндами одновременно. [2] [3] Кроме того, некоторые архитектуры ЦП включают несколько AGU, поэтому одновременно может выполняться более одной операции вычисления адресов, что обеспечивает дальнейшее повышение производительности за счет использования суперскалярной природы современных конструкций ЦП. Например, Intel включает несколько AGU в свои микроархитектуры Sandy Bridge и Haswell , которые увеличивают пропускную способность подсистемы памяти ЦП, позволяя выполнять несколько инструкций доступа к памяти параллельно. [4] [5] [6]