Decodificador de suma direccionada


En el diseño de CPU , el uso de un decodificador de suma direccionada (SAD) o un decodificador de suma direccionada de memoria (SAM) es un método para reducir la latencia del acceso a la memoria caché de la CPU y el cálculo de la dirección (base + desplazamiento). Esto se logra fusionando la operación de suma de generación de direcciones con la operación de decodificación en la memoria caché SRAM .

La caché de datos L1 generalmente debe estar en el recurso de CPU más crítico, porque pocas cosas mejoran las instrucciones por ciclo (IPC) tan directamente como una caché de datos más grande, una caché de datos más grande tarda más en acceder y la canalización de la caché de datos empeora la IPC. Una forma de reducir la latencia del acceso a la caché de datos L1 es fusionando la operación de suma de generación de direcciones con la operación de decodificación en la memoria caché SRAM.

La operación de suma de generación de direcciones aún debe realizarse, porque otras unidades en la canalización de memoria usarán la dirección virtual resultante. Esa suma se realizará en paralelo con la adición / decodificación fusionada que se describe aquí.

La recurrencia más rentable para acelerar es una carga, seguida de un uso de esa carga en una cadena de operaciones enteras que conducen a otra carga. Suponiendo que los resultados de carga se omiten con la misma prioridad que los resultados de números enteros, entonces es posible resumir esta recurrencia como una carga seguida de otra carga, como si el programa estuviera siguiendo una lista vinculada.

El resto de esta página asume una arquitectura de conjunto de instrucciones (ISA) con un modo de direccionamiento único (registro + desplazamiento), una caché de datos indexada virtualmente y cargas de extensión de signo que pueden ser de ancho variable. La mayoría de las NIA de RISC se ajustan a esta descripción. En ISA como Intel x86 , se suman tres o cuatro entradas para generar la dirección virtual. Las adiciones de múltiples entradas se pueden reducir a una adición de dos entradas con sumadores de carry save, y el problema restante es como se describe a continuación. La recurrencia crítica, entonces, es un sumador , un decodificador , la línea de palabra SRAM, la línea de bit SRAM (s), el sentido amp (s), los de dirección byte muxes , y los muxes de derivación.

Para este ejemplo, se supone una caché de datos de 16 KB mapeada directamente  que devuelve valores alineados de doble palabra (8 bytes). Cada línea de la SRAM tiene 8 bytes y hay 2048 líneas, direccionadas por Addr [13: 3]. La idea de SRAM de direcciones de suma se aplica igualmente bien para establecer cachés asociativos.