RISC

28
INTEGRANTES: JOSE LUIS CARRASCO RODAS DARWIN RODOLFO DAVILA FERNANDEZ KENIDY ALDRIND DE LA CRUZ LOPEZ

Transcript of RISC

Page 1: RISC

INTEGRANTES: JOSE LUIS CARRASCO RODAS DARWIN RODOLFO DAVILA FERNANDEZ KENIDY ALDRIND DE LA CRUZ LOPEZ

Page 2: RISC

ARQUITECTURA RISC

Page 3: RISC

RISC es una filosofía de diseño de CPU para computadoras que está a favor de conjuntos de instrucciones pequeñas y simples que toman menor tiempo para ejecutarse.

Computadoras con un Conjunto de Instrucciones Reducido Reduced Instruction Set Computer

ARQUITECTURA RISC

Page 4: RISC

CARACTERISTICAS

Las características comunes a todos los procesadores RISC, fuente de sus capacidades de altas prestaciones, son:

Page 5: RISC

Sólo las instrucciones Load/Store acceden a memoria; las demás operaciones en un RISC, tienen lugar en su gran conjunto de registros.

Ello simplifica el direccionamiento y acorta los tiempos de los ciclos de la CPU, y además facilita la gestión de los fallos de páginas (page faults) en entornos de memoria virtual.

Además, permite un elevado nivel de concurrencia a consecuencia de la independencia de las operaciones de Load/Store de la ejecución del resto de las instrucciones.

Modelo de conjunto de instrucciones Load/Store (Cargar/Almacenar):

Page 6: RISC

Esta arquitectura "no destructiva" permite a los compiladores organizar las instrucciones de modo que mantengan llenos los conductos (pipelines) del chip, y por tanto reutilizar los operandos optimizando la concurrencia.

Arquitectura no destructiva de tres direcciones:

Las instrucciones RISC, con tres direcciones, contienen los campos de los dos operandos y de su resultado.

Por lo tanto, tanto los operandos origen como el destino, son mantenidos en los registros tras haber sido completada la operación.

Page 7: RISC

Todas las instrucciones tienen una longitud equivalente a una palabra y están alineadas en la memoria en límites de palabra (word boundaries), ya que no pueden ser repartidas en pedazos que puedan estar en diferentes páginas.

Instrucciones simples, de formato fijo, con pocos modos de direccionamiento.

Las instrucciones simples reducen de manera muy significativa el esfuerzo para su descodificación, y favorecen su ejecución en pipelines.

Las instrucciones de longitud fija, con formatos fijos, implican que los campos de códigos de operación (opcodes) y de los operandos están siempre codificados en las mismas posiciones, permitiendo el acceso a los registros al mismo tiempo que se está descodificando el código de operación.

Page 8: RISC

Todas las funciones y el control, en los procesadores RISC, están "cableados" (hardwired), para lograr una máxima velocidad y eficiencia.

Ausencia de microcódigo:El microcódigo no se presta a la ejecución en ciclos únicos, ya que requiere que el hardware sea dedicado a su interpretación dinámica.

La programación en microcódigo no hace que el software sea más rápido que el programado con un conjunto de instrucciones simples.

Page 9: RISC

Las instrucciones simples, de formato fijo y ciclo único permiten que las diferentes etapas de los ciclos de ejecución (búsqueda o fetch, descodificación, ejecución, y escritura del resultado (result write back) para instrucciones múltiples, se puedan realizar simultáneamente, de un modo más simple y eficaz.

Ejecución en conductos (pipelined):

Page 10: RISC

La ejecución en ciclos únicos también simplifica la gestión de las interrupciones y los conductos (pipelines).

Ejecución en ciclos únicos (single cycle):

El resultado directo de los conjuntos de instrucciones que ofrecen los procesadores RISC, es que cada instrucción puede ser ejecutada en un único ciclo de la CPU.

Esto invalida la creencia de que las microinstrucciones en microcódigo, creadas para ser ejecutadas en un solo ciclo de procesador, son más rápidas que las instrucciones del lenguaje ensamblador.

Ya que el caché está construido partiendo de la misma tecnología que el almacenamiento de control del microprograma, una única instrucción puede ser ejecutada a la misma velocidad que una microinstrucción.

Page 11: RISC

1. Analizar las aplicaciones para encontrar las operaciones claves. 2. Diseñar un bus de datos que sea óptimo para esas operaciones claves. 3. Diseñar instrucciones que realicen las operaciones clave utilizando el bus de datos. 4. Agregar nuevas instrucciones sólo si no hacen más lenta a la máquina. 5. Repetir el proceso para otros recursos.

PrincipiosEn el diseño de máquinas RISC se tienen cinco pasos importantes:

Page 12: RISC

MultiprocesoMultiprocesamiento o multiproceso es el uso de dos o más procesadores(CPU) en una computadora para la ejecución de uno o varios procesos (programas corriendo).

Así como la multitarea permite a múltiples procesos compartir una única CPU, múltiples CPU pueden ser utilizados para ejecutar múltiples procesos o múltiples hilos (threads) dentro de un único proceso.

Algunas personas, en el idioma español hacen sinónimo este término con el de multitareas (multitasking) el cual consiste en la ejecución de uno o más procesos concurrentes en un sistema.

Page 13: RISC

El sistema en que la memoria está conectada a los nodos de proceso establece el primer nivel de distinción entre diferentes

sistemas multiprocesador:

Page 14: RISC

También denominados multiprocesadores vagamente acoplados (loosely coupled multiprocessors).

Multiprocesadores de memoria distribuida (distributed memory multiprocessors)

Se caracterizan porque cada procesador sólo puede acceder a su propia memoria.

Se requiere la comunicación entre los nodos de proceso para coordinar las operaciones y mover los datos.

Los datos pueden ser intercambiados, pero no compartidos.

Dado que los procesadores no comparten un espacio de direcciones común, no hay problemas asociados con tener múltiples copias de los datos, y por tanto los procesadores no tienen que competir entre ellos para obtener sus datos.

Page 15: RISC

De hecho, el esquema de interconexión (anillos, matrices, cubos), tiene un fuerte impacto en las prestaciones de estos sistemas.

Ya que cada nodo es un sistema completo, por sí mismo (incluso sus propios dispositivos de entrada/salida si son necesarios), el único límite práctico para incrementar las prestaciones añadiendo nuevos nodos, esta dictado por la topología empleado para su interconexión.

Además de la complejidad de las interconexiones, una de las principales desventajas de estos sistemas, como es evidente, es la duplicación de recursos caros como memoria, dispositivos de entrada/salida, que además están desocupados en gran parte del tiempo.

Page 16: RISC

También llamados multiprocesadores estrechamente acoplados (tightly coupled multiprocessors).

Multiprocesadores de memoria compartida (shared memory multiprocessors)

Son sistemas con múltiples procesadores que comparten un único espacio de direcciones de memoria.

Cualquier procesador puede acceder a los mismos datos, al igual que puede acceder a ellos cualquier dispositivo de entrada/salida.

Page 17: RISC

El sistema de interconexión más empleado para estos casos, es el de bus compartido (shared-bus).

La razón es la saturación del bus, es decir, su sobre utilización; en un sistema de bus compartido, se deriva por la contienda entre los diferentes dispositivos y procesadores para obtener el control del bus, para obtener su utilización.

Tener muchos procesadores en un único bus tiene el inconveniente de limitar las prestaciones del sistema a medida que se añaden nuevos procesadores.

Page 18: RISC

Los sistemas de memoria multinivel (caché) son un esfuerzo para evitar el número de peticiones realizadas por cada CPU al bus.

Memoria Caché

Los caches son pequeñas y rápidas (y por tanto caras) memorias, que hacen de tampón (buffer) entre la CPU y la memoria externa, para mantener los datos y/o instrucciones.

Se basan en el principio de la "localidad", lo que significa que, dada la fundamental naturaleza secuencial de los programas, los siguientes datos o instrucciones requeridas, estarán localizadas inmediatamente a continuación de las actuales.

Page 19: RISC

Para referenciar a los datos de la memoria caché, se emplean marcas (tags) que identifican a cada línea.

Los datos contenidos en la memoria caché se organizan en bloques denominados líneas.

Las líneas son cargadas en el caché como copias exactas de los datos situados en la memoria externa.

Las marcas o tags emplean una porción de la dirección física de los datos, para compararla con la dirección física solicitada por la CPU.

Page 20: RISC

Cuando existe una coincidencia exacta de la dirección y de otros cualificadores (estado, privilegio, contexto), se dice que ha tenido lugar un acierto (hit) de caché; en caso contrario, tiene lugar un fallo (miss) del caché, y en ese caso, los datos han de ser recuperados desde la memoria.

El empleo de memoria caché se ha popularizado, como medida para acelerar el tiempo de acceso a la memoria principal, incluso en los sistemas monoprocesador, evitando así, según se incrementa la velocidad de los propios procesadores, aumentar la velocidad de dicha memoria, y por tanto encarecer el sistema.

Page 21: RISC

La forma en que la memoria es actualizada por los caches locales puede tener un gran impacto en las prestaciones de un sistema

multiprocesador.

Básicamente hay dos métodos:

Page 22: RISC

El inconveniente es que se producen frecuentes accesos a memoria, especialmente superfluos cuando el software está modificando las mismas secciones de datos repetidamente (por ejemplo ejecutando bucles).

Escritura continua (write through): Requiere que todas las escrituras realizadas en el caché actualicen asimismo los datos de la memoria principal.

De esta forma, la memoria principal siempre tiene la última copia de los datos, y por tanto no hay nunca ninguna incoherencia con el caché.

Page 23: RISC

Ello no solo minimiza el tráfico del bus, de vital importancia para el resto de los procesadores, sino que también libera al procesador de la tarea de escribir en la memoria principal.

Copia posterior (copy back): Es un sistema mucho más eficiente, aunque también más complejo de implementar.

En este caso, la CPU puede modificar la línea de caché sin necesidad de actualizar inmediatamente la memoria principal.

Los datos sólo son copiados a la memoria principal cuando la línea de caché va a ser reemplazada con una nueva.

Page 24: RISC

Sin embargo, este sistema, en una arquitectura de bus compartido, implica un nuevo nivel de dificultad, denominado coherencia o consistencia (coherency o consistency); dado que cada caché puede tener una copia de los datos existentes en la memoria

principal, el desafío es asegurar que los datos permanecen iguales entre todos los caches.

Hay dos métodos para mantener cada línea de caché idéntica a las demás:

Page 25: RISC

Escritura radiada (write broadcast):

Esto asegura que cada línea de caché en el sistema es una copia exacta de las demás.

que requiere que la CPU que modifica los datos compartidos actualice los otros caches, para lo cual escribe en el bus la dirección de los datos, y los datos mismos, de modo que todos los dispositivos interesados (otras CPU’s) los capturen.

Page 26: RISC

Escritura invalidada (write invalidate):

Impide a una CPU modificar los datos compartidos en su caché hasta que otros caches han invalidado sus copias.

En cuanto otros caches invalidan sus líneas, el caché modificado tiene la única copia; de este modo, se garantiza que un sólo caché escribe una línea compartida en un momento dado.

Tiene la ventaja de conservar el ancho de banda del bus ya que los datos modificados no tienen que ser enviados a otros caches.

Page 27: RISC

Se incrementa la velocidad debido a un conjunto menor de instrucciones y más simples.

Hardware más simple, tamaño más pequeño (oblea reducida) Reduce los costos de creación de software. Ciclo de diseños más corto, posibilidad de actualización

constante (versiones), más barato.

El espacio sobrante en la capsula es cubierto por una memoria interna.

Menor consumo de potencia.

Ventajas

Page 28: RISC

Excesiva dependencia de en la efectividad del compilador. Depuración difícil de debido a pocas instrucciones. Necesidad de más memoria para satisfacer la velocidad. Mayor número de líneas de código por instrucción. Incompatibilidad con arquitecturas anteriores.

Desventajas