La simulación de microarquitectura es una técnica importante en la investigación de la arquitectura de computadoras y la educación en ciencias de la computación . Es una herramienta para modelar el diseño y comportamiento de un microprocesador y sus componentes, como la ALU , la memoria caché , la unidad de control y la ruta de datos, entre otros. La simulación permite a los investigadores explorar el espacio de diseño, así como evaluar el rendimiento y la eficiencia de características novedosas de microarquitectura. Por ejemplo, varios componentes de microarquitectura, como predictores de rama , búfer de reorden y caché de seguimiento, pasó por numerosos ciclos de simulación antes de convertirse en componentes comunes en los microprocesadores contemporáneos de hoy. Además, la simulación también permite a los educadores impartir cursos de arquitectura y organización informática con experiencias prácticas.
Para la simulación a nivel de sistema de hardware informático, consulte la simulación completa del sistema .
Clasificación
La simulación de microarquitectura se puede clasificar en varias categorías según los tipos de entrada y el nivel de detalles. Específicamente, la entrada puede ser una traza recopilada de una ejecución de programa en un microprocesador real (la llamada simulación dirigida por trazas) o un programa en sí mismo (la llamada simulación dirigida por ejecución).
Una simulación basada en trazas [1] lee una secuencia fija de registros de trazas de un archivo como entrada. Estos registros de seguimiento generalmente representan referencias de memoria, resultados de bifurcaciones o instrucciones específicas de la máquina, entre otros. Si bien se sabe que una simulación basada en trazas es comparativamente rápida y sus resultados son altamente reproducibles, también requiere un espacio de almacenamiento muy grande. Por otro lado, una simulación impulsada por la ejecución [2] lee un programa y simula la ejecución de las instrucciones de la máquina sobre la marcha. Un archivo de programa suele ser varias magnitudes más pequeño que un archivo de seguimiento. Sin embargo, la simulación basada en ejecución es mucho más lenta que la simulación basada en seguimiento porque tiene que procesar cada instrucción una por una y actualizar todos los estados de los componentes de microarquitectura involucrados. Por tanto, la selección de los tipos de entrada para la simulación es un compromiso entre el espacio y el tiempo. En particular, una traza muy detallada para una simulación de alta precisión requiere un espacio de almacenamiento muy grande, mientras que una simulación basada en ejecución muy precisa requiere mucho tiempo para ejecutar todas las instrucciones en el programa.
Aparte de los tipos de entrada, el nivel de detalles también se puede utilizar para clasificar la simulación. En particular, una pieza de software que simula un microprocesador que ejecuta un programa ciclo por ciclo se conoce como simulador de precisión de ciclo , mientras que el simulador de conjunto de instrucciones solo modela la ejecución de un programa en un microprocesador a través de los ojos de una instrucción. planificador junto con un tiempo aproximado de ejecución de la instrucción. La mayoría de las clases de informática en arquitectura de computadoras con experiencias prácticas adoptan los simuladores de conjuntos de instrucciones como herramientas para la enseñanza, mientras que los simuladores de ciclo preciso se implementan principalmente para proyectos de investigación debido tanto a la complejidad como al consumo de recursos.
Usos
Los simuladores de microarquitectura se implementan para una variedad de propósitos. Permite a los investigadores evaluar sus ideas sin la necesidad de fabricar un chip microprocesador real, lo que es caro y consume mucho tiempo. Por ejemplo, simular un microprocesador con miles de núcleos junto con múltiples niveles de memoria caché incurre en un costo muy bajo cuando se compara con la fabricación de un chip de prototipos. Los investigadores también pueden jugar con varias configuraciones de la jerarquía de caché utilizando diferentes modelos de caché en el simulador en lugar de tener que fabricar un nuevo chip cada vez que quieran probar algo diferente.
Otro uso del simulador de microarquitectura es en educación. [3] Dado que un curso de arquitectura informática enseña a los estudiantes muchas características y arquitecturas de microprocesadores diferentes, el simulador de microarquitectura es ideal para modelar y experimentar con diferentes características y arquitecturas en el transcurso de un semestre. Por ejemplo, los estudiantes pueden comenzar con un simulador de microarquitectura que modela un diseño de microprocesador simple al comienzo de un semestre. A medida que avanza el semestre , se pueden modelar y agregar al simulador características adicionales, como la canalización de instrucciones , el cambio de nombre de registros , las estaciones de reserva , la ejecución fuera de orden y el marcador , a medida que se introducen en el aula. El simulador de microarquitectura proporciona la flexibilidad de reconfiguración y prueba con costos mínimos.
Ejemplos de
- Sombra [4] (simulador de conjunto de instrucciones controlado por seguimiento)
- SimpleScalar [5] (simulador de precisión de ciclo impulsado por la ejecución)
- SPIM [6] (simulador de conjunto de instrucciones controlado por ejecución)
- SMTSIM [7] (simulador de precisión de ciclo impulsado por la ejecución)
Referencias
- ^ Uhlig, RA y Mudge, TN (2004). Simulación de memoria basada en seguimiento: una encuesta. Encuestas de computación de ACM , 29 (2), 128-170.
- ^ Burger, D. y Austin, TM (1997). El conjunto de herramientas Simplescalar versión 2.0. Noticias de arquitectura informática , 25 (3), 13-25.
- ^ Skadron, K. (1996). Un curso de encuesta sobre microprocesadores para el aprendizaje de la arquitectura informática avanzada. En Actas de la Conferencia ACM SIGCSE de 2002, 152-156.
- ^ Cmelik, RF y Keppel, D. (1994). Shade: un simulador de conjunto de instrucciones rápido para la creación de perfiles de ejecución. Revisión de la evaluación del desempeño de ACM SIGMETRICS , 22 (1), 128-137.
- ^ Austin, T., Larson, E. y Ernst, D. (2002). SimpleScalar: una infraestructura para el modelado de sistemas informáticos. Revista IEEE Computer , 35 (2), 59-67.
- ^ Patterson, DA y Hennessy, JL (2011). Organización y diseño de computadoras: la interfaz hardware / software , Morgan Kaufmann.
- ^ Tullsen, DM (1996). Simulación y modelado de un procesador multiproceso simultáneo. En Actas de la 22ª Conferencia Anual del Grupo de Medición por Computadora.