La simulación de microarquitectura es una técnica importante en la investigación de la arquitectura informática y la educación en ciencias de la computación . Es una herramienta para modelar el diseño y el 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 las nuevas características de la microarquitectura. Por ejemplo, varios componentes de la microarquitectura, como los predictores de bifurcación , el búfer de reordenación y la caché de seguimiento , pasaron por numerosos ciclos de simulación antes de convertirse en componentes comunes en los microprocesadores contemporáneos de la actualidad. Además, la simulación también permite a los educadores enseñar cursos de organización y arquitectura de computadoras con experiencias prácticas.
Para la simulación a nivel de sistema del hardware de la computadora, consulte la simulación completa del sistema .
La simulación de microarquitectura se puede clasificar en varias categorías según los tipos de entrada y el nivel de detalle. En concreto, la entrada puede ser un rastro recopilado de la ejecución de un programa en un microprocesador real (la denominada simulación basada en rastros) o un programa en sí mismo (la denominada simulación basada en 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 trazas suelen representar 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 basada en ejecución [2] lee un programa y simula la ejecución de instrucciones de la máquina sobre la marcha. Un archivo de programa suele ser varias magnitudes más pequeño que un archivo de trazas. Sin embargo, la simulación basada en ejecución es mucho más lenta que la simulación basada en trazas porque tiene que procesar cada instrucción una por una y actualizar todos los estados de los componentes de la microarquitectura involucrados. Por lo tanto, la selección de tipos de entrada para la simulación es una compensación entre espacio y tiempo. En particular, una traza muy detallada para una simulación altamente precisa requiere un espacio de almacenamiento muy grande, mientras que una simulación basada en ejecución muy precisa tarda mucho tiempo en ejecutar todas las instrucciones del programa.
Aparte de los tipos de entrada, el nivel de detalles también se puede utilizar para clasificar la simulación. En particular, un software que simula un microprocesador ejecutando un programa ciclo por ciclo se conoce como simulador de ciclo preciso , 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 un programador de instrucciones junto con una temporización aproximada de la ejecución de la instrucción. La mayoría de las clases de ciencias de la computación en arquitectura de computadoras con experiencias prácticas adoptan los simuladores de conjunto de instrucciones como herramientas para la enseñanza, mientras que los simuladores de ciclo preciso se implementan principalmente para proyectos de investigación debido a las complejidades y al consumo de recursos.
Los simuladores de microarquitectura se utilizan para diversos fines. Permiten a los investigadores evaluar sus ideas sin necesidad de fabricar un chip de microprocesador real, lo que resulta costoso y requiere mucho tiempo. Por ejemplo, simular un microprocesador con miles de núcleos junto con múltiples niveles de memoria caché supone un coste muy bajo en comparación con la fabricación de un chip de prototipo. 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 la educación. [3] Dado que un curso de arquitectura informática enseña a los estudiantes muchas características diferentes de los microprocesadores y sus arquitecturas, el simulador de microarquitectura es ideal para modelar y experimentar con diferentes características y arquitecturas a lo largo 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.