Según yo, la arquitectura de subprocesos múltiples es en realidad una tendencia y una solución confiable y fácil de aplicar para el próximo diseño de microprocesadores, por lo que estudié cuatro trabajos de investigación sobre este tema solo para familiarizarme con la tecnología involucrada en este tema.
En el mundo actual, existe un rápido progreso de la tecnología de circuitos integrados de muy gran escala (VLSI) que permite a los diseñadores de procesadores asimilar más funciones en un solo chip; en el futuro, los microprocesadores pronto podrán emitir más de 12 instrucciones por ciclo de máquina.
Los microprocesadores superescalares y de palabra de instrucción muy grande (VLIW) existentes utilizan múltiples unidades funcionales para explotar el paralelismo a nivel de instrucción desde un solo hilo de flujo de control. Estos tipos de microprocesadores dependen del compilador o del hardware del sistema para extraer el paralelismo a nivel de instrucción de los programas y luego programar instrucciones independientes en múltiples unidades funcionales en cada ciclo de máquina. Sin embargo, cuando aumente la tasa de emisión de microprocesadores futuros, el compilador o el hardware tendrán que extraer más paralelismo a nivel de instrucciones de los programas mediante el análisis de un búfer de instrucciones más grande (por ejemplo, Entrada de estación de reserva).
Es muy difícil extraer suficiente paralelismo con un solo hilo de control, incluso para un pequeño número de unidades funcionales.
Las limitaciones del mecanismo de secuenciación de un solo subproceso son las siguientes:
- Para explotar el paralelismo a nivel de instrucciones, era necesario examinar y emitir juntas instrucciones independientes de diferentes bloques de construcción básicos diferentes en un solo flujo de instrucciones.
- A medida que aumenta la tasa de emisión, se necesita un búfer de instrucción más grande (por ejemplo, Entrada de la estación de reserva) para contener varios bloques de construcción básicos, que controlarán la dependencia de las diferentes condiciones de la sucursal, pero su examen debe realizarse en conjunto.
- Y también se necesita la ejecución analítica a nivel de instrucción con predicción de bifurcación para mover instrucciones independientes a través de los límites de bloques básicos. Este problema es especialmente grave cuando un compilador intenta canalizar un bucle con muchas ramas condicionales.
- Aquí, la precisión de los sistemas es muy baja.
- Aquí, la velocidad del sistema es bastante baja en comparación con las arquitecturas de subprocesos múltiples.
Las características de la arquitectura multiproceso son las siguientes:
- En su forma habitual, un procesador multiproceso se compone de una gran cantidad de elementos de procesamiento de subprocesos que están conectados entre sí con un anillo unidireccional que ayuda a que el sistema funcione mejor.
- Todos los elementos de procesamiento de subprocesos múltiples tienen su propio caché privado de instrucciones de nivel uno, pero compartirán el caché de datos de nivel uno y el caché de nivel dos.
- En los sistemas multiproceso también se presentan algunos archivos de registro compartido que se utilizan para mantener algunos registros globales y un registro de bloqueo.
- Durante el tiempo de ejecución, los múltiples elementos de procesamiento de subprocesos, cada uno tiene su propio contador de programa y ruta de ejecución de instrucciones, que luego pueden obtener y ejecutar fácilmente instrucciones desde múltiples ubicaciones de programa simultáneamente.
- Cada uno de los elementos de procesamiento de subprocesos presentes siempre tiene un búfer de memoria privado para almacenar en caché los almacenamientos especulativos y que también se utiliza para admitir la verificación de dependencia de datos en tiempo de ejecución.
- Afortunadamente, el compilador divide estáticamente el gráfico de flujo de control de un programa en subprocesos que coinciden con una parte del gráfico de flujo de control. Un subproceso realiza una ronda de cálculo en un conjunto de datos que no tiene, o solo tiene unas pocas, dependencias con otros subprocesos concurrentes. El compilador luego determinará la granularidad (afectará directamente el rendimiento) de los hilos, que son apenas una o varias iteraciones de un ciclo.
- La ejecución real de un programa se inicia desde su hilo de entrada. Este subproceso de entrada puede luego transferir el procesamiento de los sistemas a un subproceso sucesor en algún otro elemento de procesamiento de subprocesos. El subproceso sucesor puede transferir aún más el procesamiento de los sistemas a su propio subproceso sucesor. Este proceso continuará hasta que todos los elementos de procesamiento de subprocesos estén ocupados con algunas tareas adecuadas.
- Cuando los subprocesos múltiples se ejecutan en el procesador de subprocesos múltiples, el subproceso primitivo en el orden secuencial se denomina subproceso principal. Y luego todos los otros hilos que se derivan de él se llaman hilos sucesores. Una vez que el subproceso principal completa su cálculo, luego se retirará y liberará el elemento de procesamiento del subproceso y luego su (solo) subproceso sucesor se convierte en el nuevo subproceso principal. Esta finalización y retiro de los hilos debe seguir el orden de ejecución secuencial original.
- En el sistema (o modelo) de subprocesos múltiples, un subproceso puede transferir el procesamiento del sistema a uno de sus subprocesos sucesores con o sin especulación de control. Cuando la transferencia del procesamiento de los sistemas desde la cabeza a su subproceso sucesor sin especulación de control, el subproceso que realiza la operación de bifurcación debe asegurarse de que se hayan satisfecho todas las dependencias de control del subproceso sucesor recién generado.
- Sin embargo, si la transferencia del procesamiento de los sistemas desde el encabezado a su subproceso sucesor con especulación de control, debe verificarse más tarde todas las dependencias de control especuladas. Si alguna de las dependencias de control especuladas no es verdadera, el subproceso debe emitir un comando para eliminar el subproceso sucesor y todos los subprocesos posteriores.
- En general, la arquitectura de subprocesos múltiples utilizará un modelo de ejecución de canalización de subprocesos para imponer dependencias de datos entre subprocesos concurrentes. A diferencia del mecanismo de canalización de instrucciones en un procesador superescalar, donde el hardware del procesador realiza automáticamente la secuenciación de instrucciones, la verificación de dependencias de datos y el reenvío, la arquitectura de subprocesos múltiples realiza la iniciación de subprocesos y el reenvío de datos a través de instrucciones de comunicación y gestión de subprocesos explícitas.
Publicación traducida automáticamente
Artículo escrito por DivyankSinghSikarwar y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA