Aprendizaje de interfaz de hardware y software de composición y diseño de computadoras 2

Procesadores paralelos: del cliente a la nube

Paralelismo a nivel de tarea o paralelismo a nivel de proceso: usar múltiples procesadores ejecutando múltiples programas independientes simultáneamente

Procesador paralelo: un único programa que se ejecuta en varios procesadores simultáneamente

Al agregar hardware, la recuperación de instrucciones y la decodificación de instrucciones se implementan en paralelo. Se obtienen varias instrucciones a la vez y luego se distribuyen a múltiples decodificadores de instrucciones en paralelo para su decodificación y luego se entregan a diferentes unidades funcionales para su procesamiento. De esta manera, se puede completar más de una instrucción en un ciclo de reloj. Este tipo de diseño de CPU se denomina multiproblema (Multiple Issue) y superescalar (Superescalar).

    Multiproblema se refiere a emitir múltiples instrucciones a diferentes decodificadores o canales de procesamiento posteriores al mismo tiempo.

  Hay muchos canales paralelos en una CPU superescalar, no solo uno   .

vectores y escalares

Propiedades importantes de las instrucciones vectoriales:

  • Una instrucción de un solo vector especifica una gran cantidad de trabajo, equivalente a ejecutar un bucle completo. Debido a esto, el ancho de banda de decodificación y recuperación de instrucciones se reduce considerablemente.
  • Al utilizar instrucciones vectoriales, el compilador o programador confirma que cada resultado en el vector es independiente, por lo que el hardware ya no tiene que verificar si hay peligros en los datos dentro de las instrucciones vectoriales.
  • Cuando existe paralelismo a nivel de datos en un programa, es más fácil escribir aplicaciones eficientes usando una combinación de arquitectura vectorial y compilador que usando multiprocesadores MMD.
  • El hardware solo necesita verificar si hay riesgos de datos entre operandos vectoriales entre dos instrucciones vectoriales sin verificar cada elemento de datos en el vector. Reducir el número de comprobaciones puede ahorrar tiempo y consumo de energía.
  • Las instrucciones vectoriales que acceden a la memoria tienen un patrón de acceso definido. Si las ubicaciones de los elementos de datos en un vector son todas contiguas, el vector se puede recuperar rápidamente entrelazando bloques de datos de un conjunto de memorias. Por lo tanto, la sobrecarga de latencia de la memoria principal aparece sólo una vez para todo el vector, en lugar de una vez para cada palabra del vector.
  • Debido a que todo el bucle es reemplazado por una instrucción vectorial con comportamiento conocido, los peligros de control causados ​​normalmente por los bucles ya no existen.
  • En comparación con las arquitecturas escalares, el ahorro en el ancho de banda de instrucciones y las comprobaciones de peligros, así como el uso eficiente del ancho de banda de la memoria, hacen que las arquitecturas vectoriales sean más ventajosas en términos de potencia y consumo de energía.

Las instrucciones de aritmética vectorial normalmente permiten que los elementos N de un registro vectorial interactúen con elementos N de otros registros vectoriales. Esto simplifica enormemente la construcción de unidades vectoriales altamente paralelas, que pueden construirse como múltiples canales vectoriales paralelos.

Canal vectorial: una o más unidades funcionales vectoriales y una parte del archivo de registro vectorial

Hardware multiproceso

Hilo: incluye contador de programa, estado de registro y pila. Un hilo es un proceso liviano. Los hilos generalmente comparten un espacio de direcciones, mientras que los procesos no.

Proceso: incluye uno o más subprocesos, espacio de direcciones completo y estado del sistema operativo. Por lo tanto, el cambio de proceso generalmente requiere llamar al sistema operativo, pero el cambio de hilo no.

Subprocesos múltiples de hardware: mejora la utilización del procesador al cambiar a otro subproceso cuando un subproceso se detiene

El multiproceso de hardware permite que varios subprocesos compartan unidades funcionales de un solo procesador de manera superpuesta para utilizar de manera eficiente los recursos de hardware.

Subprocesos múltiples de grano fino: una versión de subprocesos múltiples de hardware que cambia los subprocesos después de cada instrucción.

El cambio de subproceso se realiza después de ejecutar cada instrucción, lo que da como resultado la ejecución cruzada de múltiples subprocesos. Esta ejecución entrelazada generalmente se realiza en forma de operación por turnos, omitiendo cualquier hilo detenido en ese ciclo de reloj. Una ventaja del subproceso múltiple de grano fino es que puede ocultar la pérdida de rendimiento causada por pausas a corto y largo plazo. La principal desventaja es que ralentizará la velocidad de ejecución de un solo subproceso, porque los subprocesos que ya están listos se retrasarán. ejecutando instrucciones de otros hilos.

Subprocesos de grano grueso: otra versión de subprocesos múltiples de hardware que cambia de subprocesos solo después de eventos importantes (como errores de caché de último nivel).

Prácticamente no hay desaceleración en la ejecución de un solo subproceso porque las instrucciones de otros subprocesos solo se emiten cuando un subproceso encuentra una detención costosa. Pero existe una seria desventaja: la capacidad de reducir la pérdida de rendimiento es limitada, especialmente durante pausas breves.

Subprocesos múltiples simultáneos: una versión de subprocesos múltiples que reduce el costo de subprocesos múltiples al aprovechar recursos de microarquitectura programados dinámicamente y de múltiples temas.

Debido a que SMT se basa en mecanismos dinámicos existentes, no cambia recursos en cada ciclo de reloj. En cambio, SMT siempre ejecuta instrucciones de múltiples subprocesos, dejando la asignación de recursos al hardware. Estos recursos son ranuras de instrucciones y cambios de nombre.

Subprocesos múltiples simultáneos: una versión de subprocesos múltiples que reduce el costo de subprocesos múltiples al aprovechar recursos de microarquitectura programados dinámicamente y de múltiples temas.

Multiprocesador de memoria compartida (SMP): proporciona un espacio de direcciones físicas unificado para todos los procesadores.

Los procesadores se comunican a través de variables compartidas en la memoria, y todos los procesadores pueden acceder a ubicaciones de memoria arbitrarias mediante instrucciones de carga y almacenamiento.

Acceso a la memoria unificada: un multiprocesador en el que la latencia de acceso a la memoria es aproximadamente la misma independientemente de qué procesador accede a la memoria.

Acceso no uniforme a la memoria: un multiprocesador de espacio de direcciones único con diferentes latencias de acceso a la memoria, dependiendo de qué procesador accede a qué almacenamiento.

Sincronización: El proceso de coordinar el comportamiento de dos o más procesos, que pueden estar ejecutándose en diferentes procesadores.

Introducción a GPU: unidad de procesamiento de gráficos

Características clave que distinguen a la GPU de la CPU:

Las GPU dependen del hardware multiproceso en un único procesador SIMD multiproceso para ocultar la latencia de la memoria.

La GPU contiene una colección de procesadores SIMD (instrucción única, subprocesos múltiples) de subprocesos múltiples, es decir, la GPU es un MIMD (instrucción múltiple, subprocesos múltiples) compuesta por procesadores SIMD de subprocesos múltiples.

Buenos artículos recomendados: Principios de composición informática - Etiqueta - Pang Ren - Blog Park (cnblogs.com)

Supongo que te gusta

Origin blog.csdn.net/zaizai1007/article/details/132922244
Recomendado
Clasificación