¿Cuándo ocurren los riesgos estructurales en las arquitecturas canalizadas?

8

Estoy buscando algunos ejemplos relativamente simples de cuándo ocurren los riesgos estructurales en una arquitectura canalizada.

El único escenario en el que puedo pensar es cuando se necesita acceder a la memoria durante las diferentes etapas de la tubería (es decir, la etapa inicial de búsqueda de instrucciones y la etapa posterior de lectura / escritura de memoria).

Estoy pensando que hay muchos más riesgos estructurales en arquitecturas más complejas, como el superescalar. ¿Se clasifica como un riesgo estructural cuando una instrucción se envía a una unidad de ejecución pero se pone en cola porque la unidad está en uso?

Si esto es muy específico de la arquitectura, simplemente asuma MIPS o algo similar.

Mate
fuente

Respuestas:

6

En una implementación escalar, puede existir un riesgo estructural si el hardware de ejecución específico no está totalmente canalizado. Para algunas operaciones (por ejemplo, multiplicación y especialmente división), el costo de implementar la canalización completa puede no considerarse útil para la frecuencia esperada de la operación.

En una implementación superescalar, puede existir un riesgo estructural porque no todas las unidades de ejecución pueden realizar todas las operaciones. Por ejemplo, apoyar el inicio de la ejecución de cuatro operaciones de memoria o cuatro multiplicaciones en cada ciclo sería relativamente costoso cuando se limita a un problema de cuatro puntos, dado que es probable que haya un tipo diferente de operación disponible.

Los límites de puertos de lectura y escritura de archivos de registro también pueden presentar riesgos estructurales. Aunque es posible proporcionar suficientes puertos de lectura y escritura para admitir el peor de los casos, los costos de los puertos de archivo de registro para satisfacer el peor de los casos (incluso con el beneficio en la complejidad del diseño de no tener que manejar casos excepcionales) pueden considerarse inútiles los beneficios cuando los casos malos son suficientemente raros o no críticos. Por ejemplo, algunas implementaciones fuera de orden utilizan la captura de operandos (capturando operandos que están disponibles entre el momento en que la operación ingresa al planificador y el momento en que está programado para su ejecución) y proporcionan menos puertos de lectura de registro que los necesarios para la operación de ancho completo (ya sea operandos disponibles anteriormente se leen cuando la operación ingresa al planificador o cuando la operación está programada para su ejecución).

(Incluso para una implementación en orden, el reenvío de resultados y el uso de operaciones con un único operando de origen de registro podría hacer que sea menos necesario admitir cuatro puertos de lectura de registro para problemas de dos vías).

Del mismo modo, la banca se usa a menudo para cachés (y se ha propuesto para archivos de registro). Por ejemplo, en el caso común, es poco probable que dos accesos se asignen al mismo banco de 16 bancos. El almacenamiento bancario es sustancialmente menos costoso que agregar puertos de acceso. La posibilidad de conflictos bancarios representa un riesgo estructural.

Paul A. Clayton
fuente