Un procesador está trabajando a 100 MHz. La memoria de programa interconectada puede funcionar solo a un máximo de 25 MHz. ¿Hay alguna forma en que podamos obtener una instrucción en un ciclo de reloj del procesador? Leí que el caché de instrucciones se puede usar para este propósito. ¿Cómo es que la memoria caché de instrucciones realmente hace que las instrucciones se obtengan más rápido, mientras que no podemos aumentar la velocidad de la memoria lenta?
Los procesadores tienen una canalización de obtención/ejecución que obtiene, decodifica y ejecuta instrucciones. Los diferentes procesadores tienen un número diferente de niveles de canalización. Se muestra una tubería de tres etapas. Cada instrucción requiere tres ciclos de reloj para ejecutarse, pero debido a que las etapas pueden estar en paralelo, la ejecución neta es de 1 reloj/instrucción para el procesador.
Idealmente, nos gustaría que los programas se ejecuten lo más rápido posible. Pero esto no es rentable. Se muestra una jerarquía de memoria típica.
La memoria más rápida son los registros. Si tiene muchos registros de propósito general, el programa puede ejecutarse desde los registros.
La localidad significa que la mayoría de las búsquedas de instrucciones serán secuenciales. La única vez que no es cuando se encuentra una rama. El contenido actual de la canalización de 3 etapas se debe desechar para que se puedan cargar las nuevas instrucciones. Si la sucursal es pequeña, el contenido puede estar en los registros. Perdemos 3 ciclos de reloj, mientras que la nueva instrucción se obtiene de los registros. El procesador se detiene hasta que hay una nueva instrucción para ejecutar. Se insertan ciclos de reloj adicionales.
Si no está en los registros, la dirección se envía al caché. El caché en chip es una pequeña cantidad de memoria de alta velocidad. Si es un golpe. El caché en chip es de 1 o 2 ciclos de reloj para acceder a la siguiente instrucción. Todavía 1'ish ciclos de reloj/instrucciones.
Saltamos múltiples niveles de caché. Solo otro nivel de almacenamiento en búfer. Ningún punto real a 100MHz. Las cachés L2 son solo pequeñas cantidades de SRAM rápida.
Si falla, la memoria caché debe solicitar instrucciones de la memoria principal. La memoria principal es una gran cantidad de memoria barata. A 25 MHz, cada instrucción requeriría 4 ciclos de reloj para obtenerla. La instrucción se lee en la caché y el procesador. 4 relojes para buscar y 3 para ejecutar.
La localidad significa que el procesador también necesitará la siguiente instrucción. El controlador de memoria está configurado para leer un bloque completo de ubicaciones adyacentes de DRAM a la memoria caché. El contador del programa del procesador solicitará la siguiente ubicación, la pérdida de memoria caché, pero el controlador de memoria ya está obteniendo esta segunda ubicación de la memoria principal, por lo que la demora general es menor.
Finalmente, si el programa no está en la memoria principal, debe cargarse en la DRAM desde el almacenamiento. Gran impacto en el rendimiento, ya que el almacenamiento es muy lento...
En última instancia, 1 ciclo de reloj/instrucción depende del programa y del compilador/programador.
Editar...
El caché tiene que ser cargado. Por lo general, los controladores DRAM tienen capacidad de ráfaga, donde la primera lectura toma 4 ciclos, pero la dirección DRAM inicial ya está proporcionada y las lecturas posteriores toman menos de 4, digamos 2 ciclos. Un procesador de canalización de tres etapas tiene que esperar 7 ciclos de reloj para obtener la primera instrucción (en el peor de los casos: bifurcación, canalización basura: pérdida de caché, recuperación de DRAM), pero 2 o 3 para la siguiente instrucción que ya está en camino a el caché
Muchos programas no son secuenciales sino bucles o subrutinas reutilizadas, donde el caché (y los niveles de caché) pueden mejorar el rendimiento. Si un programa fuera secuencial, el caché no tendría ningún propósito. El procesador funcionaría a la velocidad de acceso de lectura de DRAM.
Sin canalización, código secuencial, sin capacidad de ráfaga, entonces su procesador funciona a 25 MHz, con 3 estados de espera insertados en cada instrucción. Canalización, código loopey (que cabe en registros de 100 MHz o caché de 100 MHz) y capacidad de lectura de DRAM en ráfagas significa que el procesador funciona a 100 MHz y 1 ciclo de reloj/instrucción.
En palabras del padre Ted , el caché de instrucciones es pequeño pero la memoria está muy lejos.
La memoria de 25 MHz tomará al menos cuatro de los ciclos del procesador de 100 MHz. La memoria caché de instrucciones en realidad no hace que el acceso a la memoria principal sea más rápido, pero devolverá valores inmediatamente en lugar de después de un retraso. La ventaja de esto está en la segunda y subsiguientes veces que el procesador intenta acceder a una dirección en particular. Como cuando se ejecuta un bucle.
viejo contador de tiempo