Procesador en sistemas paralelos
En los años 80, un procesador de propósito especial era popular para hacer multicomputadoras llamado Transputer. Una transputadora constaba de un procesador central, una pequeña memoria SRAM, una interfaz de memoria principal DRAM y cuatro canales de comunicación, todo en un solo chip. Para realizar una comunicación informática paralela, se conectaron canales para formar una red de Transputers. Pero tiene una falta de potencia computacional y, por lo tanto, no pudo satisfacer la creciente demanda de aplicaciones paralelas. Este problema se resolvió mediante el desarrollo de procesadores RISC y también era económico.
La computadora paralela moderna usa microprocesadores que usan el paralelismo en varios niveles, como el paralelismo a nivel de instrucción y el paralelismo a nivel de datos.
Procesadores de alto rendimiento
Los procesadores RISC y RISCy dominan el mercado actual de computadoras paralelas.
Las características del RISC tradicional son:
- Tiene pocos modos de direccionamiento.
- Tiene un formato fijo para las instrucciones, generalmente de 32 o 64 bits.
- Tiene instrucciones dedicadas de carga / almacenamiento para cargar datos desde la memoria para registrar y almacenar datos del registro en la memoria.
- Las operaciones aritméticas siempre se realizan en registros.
- Utiliza canalización.
La mayoría de los microprocesadores en estos días son superescalares, es decir, en una computadora paralela se utilizan múltiples canales de instrucción. Por lo tanto, los procesadores superescalares pueden ejecutar más de una instrucción al mismo tiempo. La eficacia de los procesadores superescalares depende de la cantidad de paralelismo a nivel de instrucción (ILP) disponible en las aplicaciones. Para mantener llenas las tuberías, las instrucciones a nivel de hardware se ejecutan en un orden diferente al del programa.
Muchos microprocesadores modernos utilizan un enfoque de superpipelining . En superpipelining , para aumentar la frecuencia del reloj, se reduce el trabajo realizado dentro de una etapa de pipeline y aumenta el número de etapas de pipeline.
Procesadores de palabras de instrucciones muy grandes (VLIW)
Estos se derivan de la microprogramación horizontal y el procesamiento superescalar. Las instrucciones en los procesadores VLIW son muy extensas. Las operaciones dentro de una sola instrucción se ejecutan en paralelo y se envían a las unidades funcionales apropiadas para su ejecución. Entonces, después de obtener una instrucción VLIW, sus operaciones se decodifican. Luego, las operaciones se envían a las unidades funcionales en las que se ejecutan en paralelo.
Procesadores vectoriales
Los procesadores vectoriales son coprocesadores de microprocesadores de uso general. Los procesadores vectoriales son generalmente registro-registro o memoria-memoria. Se busca y decodifica una instrucción vectorial y luego se realiza una determinada operación para cada elemento de los vectores operandos, mientras que en un procesador normal una operación vectorial necesita una estructura de bucle en el código. Para hacerlo más eficiente, los procesadores vectoriales encadenan varias operaciones vectoriales juntas, es decir, el resultado de una operación vectorial se envía a otra como operando.
Almacenamiento en caché
Los cachés son un elemento importante de los microprocesadores de alto rendimiento. Después de cada 18 meses, la velocidad de los microprocesadores se duplica, pero los chips DRAM para la memoria principal no pueden competir con esta velocidad. Por lo tanto, se introducen cachés para cerrar la brecha de velocidad entre el procesador y la memoria. Un caché es una memoria SRAM rápida y pequeña. Muchos más cachés se aplican en procesadores modernos como cachés de búfer de búsqueda de traducción (TLB), cachés de instrucciones y datos, etc.
Caché mapeado directo
En cachés mapeados directamente, se utiliza una función de 'módulo' para mapear uno a uno de direcciones en la memoria principal a ubicaciones de caché. Como la misma entrada de caché puede tener asignados varios bloques de memoria principal, el procesador debe poder determinar si un bloque de datos de la caché es el bloque de datos que realmente se necesita. Esta identificación se realiza almacenando una etiqueta junto con un bloque de caché.
Caché completamente asociativo
Un mapeo completamente asociativo permite colocar un bloque de caché en cualquier lugar del caché. Al usar alguna política de reemplazo, la caché determina una entrada de caché en la que almacena un bloque de caché. Los cachés totalmente asociativos tienen un mapeo flexible, lo que minimiza el número de conflictos de entrada de caché. Dado que una implementación completamente asociativa es costosa, estos nunca se utilizan a gran escala.
Caché asociativo de conjuntos
Un mapeo asociativo de conjuntos es una combinación de un mapeo directo y un mapeo completamente asociativo. En este caso, las entradas de la caché se subdividen en conjuntos de caché. Como en el mapeo directo, existe un mapeo fijo de bloques de memoria a un conjunto en la caché. Pero dentro de un conjunto de caché, un bloque de memoria se asigna de manera totalmente asociativa.
Estrategias de caché
Además del mecanismo de mapeo, los cachés también necesitan una variedad de estrategias que especifiquen lo que debería suceder en el caso de ciertos eventos. En el caso de cachés asociativos (establecidos), el caché debe determinar qué bloque de caché debe ser reemplazado por un nuevo bloque que ingresa al caché.
Algunas estrategias de reemplazo conocidas son:
- Primero en entrar, primero en salir (FIFO)
- Menos usados recientemente (LRU)