sábado, 1 de octubre de 2016

ARQUITECTURA RISC

DEFINICIÓN:

Reduced Instruction Set Computer - Computadora con Conjunto de Instrucciones Reducidas. Tipo de arquitecturas de computadoras que promueve conjuntos pequeños y simples de instrucciones que pueden tomar poco tiempo para ejecutarse.

Es un tipo de diseño de CPU generalmente utilizado en microprocesadores o microcontroladores. Usa conjunto de instrucciones pequeñas y simples que toman mejor tiempo para ejecutarse.

La arquitectura RISC que reducen la complejidad de los computadores al implementar solo aquellas instrucciones más usadas, y utilizar solo modos de direccionamiento sencillo, tipos de datos básicos y gran numero de registros que sirven para almacenar datos personales.

CARACTERÍSTICAS:

Load/Store (Cargar-Almacenar). 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, además facilita la gestión de los fallos de paginas page faults en entornos de memoria virtual, 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. 

Arquitectura no destructiva de tres direcciones. Los procesadores CISC destruyen la información que existe en alguno de los registros, como consecuencia de la ejecución normal de instrucciones; esto es debido a su arquitectura de dos direcciones, por lo que el resultado de una operación sobrescribe uno de los registros que contenía a los operandos. Por contra, 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. 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.

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. 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.

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. Todas las funciones y el control, en los procesadores RISC, están cableados hardwired, para lograr una máxima velocidad y eficiencia.

Ejecución en conductos pipelined. 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 o result write-back para instrucciones múltiples, se puedan realizar simultáneamente, de un modo más simple y eficaz.

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é esta 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. La ejecución en ciclos únicos también simplifica la gestión de las interrupciones y los conductos pipelines.

PRINCIPIOS: 
  1. Analizar las aplicaciones para encontrar las operaciones clave.
  2. Diseñar un bus de datos que sea óptimo para las operaciones clave.
  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 este proceso para otros recursos.
El primer punto se refiere a que el diseñador deberá encontrar qué es lo que hacen en realidad los programas que se pretenden ejecutar. Ya sea que los programas a ejecutar sean del tipo algorítmicos tradicionales, o estén dirigidos a robótica o al diseño asistido por computadora.

El segundo punto se refiere que la parte medular de cualquier sistema es la que contiene los registros, el ALU y los 'buses' que los conectan. Se debe optimar este circuito para el lenguaje o aplicación en cuestión. El tiempo requerido, (denominado tiempo del ciclo del bus de datos) para extraer los operandos de sus registros, mover los datos a través del ALU y almacenar el resultado de nuevo en un registro, deberá hacerse en el tiempo mas corto posible.

El tercer punto se refiere que las instrucciones deben hacer un buen uso del bus de datos. Por lo general se necesitan solo unas cuantas instrucciones y modos de direccionamiento; sólo se deben colocar instrucciones adicionales si serán usadas con frecuencia y no reducen el desempeño de las más importantes.

El cuarto punto se refiere: Siempre que aparezca una nueva y atractiva característica, deberá analizarse y ver la forma en que se afecta al ciclo de bus. Si se incrementa el tiempo del ciclo, probablemente no vale la pena tenerla.

Por último, el proceso anterior debe repetirse para otros recursos dentro del sistema, tales como memoria cache, administración de memoria, coprocesadores de punto flotante, etcétera.

MULTIPROCESO: 


Llamado tambien Multiprocesamiento 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). Algunas personas, en el idioma español hacen sinónimo este término con el de multitareas (del inglés multitasking) el cual consiste en la ejecución de uno o más procesos concurrentes en un sistema.

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.

El sistema en que la memoria esta conectada a los nodos de proceso establece el primer nivel de distinción entre diferentes sistemas multiprocesador.

Multiprocesadores de memoria distribuida (distributed-memory multiprocessors): También denominados multiprocesadores vagamente acoplados (loosely coupled 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. Ya que cada nodo es un sistema completo, por si 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. De hecho, el esquema de interconexión (anillos, matrices, cubos, ...), tiene un fuerte impacto en las prestaciones de estos sistemas. 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.

Multiprocesadores de memoria compartida (shared-memory multiprocessors): También llamados multiprocesadores estrechamente acoplados (tightly coupled 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. El sistema de interconexión más empleado para estos casos, es el de bus compartido (shared-bus). Tener muchos procesadores en un único bus tiene el inconveniente de limitar las prestaciones del sistema a medida que se añaden nuevos procesadores. 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.

MEMORIA CACHE: 


Los sistemas de memoria multinivel (caché) son un esfuerzo para evitar el número de peticiones realizadas por cada CPU al bus. 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.

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. Para referenciar a los datos de la memoria caché, se emplean marcas (tags) que identifican a cada línea. 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. Cuando existe una coincidencia exacta de la dirección y de otros cualificadores (estado, privilegio, contexto, etc.), 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.

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:
  1. 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é. 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).
  1. 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. 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. 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:
    • Escritura radiada (write-broadcast), 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. Esto asegura que cada línea de caché en el sistema es una copia exacta de las demás.
    • 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.

VENTAJAS:
  • Debido a que cada instrucción realiza una operación muy simple, el código se ejecutará en aproximadamente el mismo tiempo que el comando MULT de la arquitectura CISC. Estas instrucciones reducidas RISC requieren menos hardware y es más sencillo que las instrucciones complejas, dejando más espacio para registros de propósito general. Además, las optimizaciones sobre un hardware más sencillo son mucho más fáciles de realizar.
  • RISC ha alcanzado a todos los fabricantes de semiconductores:AMD, Intel, MIPS, Motorota, ROSS, y todos ellos son productos usados por fabricantes de ordenadores y estaciones de trabajo: Apple, DEC, HP, IBM, SUN, entre otros y sus correspondientes clónicos.
  • La CPU trabaja mas rápido al utilizar menos ciclos de reloj para ejecutar instrucciones.
  • Utiliza un sistema de direcciones no destructivas en RAM. Eso significa que a diferencia de CISC, RISC conserva después de realizar sus operaciones en memoria los dos operandos y su resultado, reduciendo la ejecución de nuevas operaciones. Cada instrucción puede ser ejecutada en un solo ciclo del CPU.

DESVENTAJAS:
  • Menor densidad de código (discutible). Importante si la disponibilidad de memoria es crítica.
  •  Ocasiona un menor rendimiento del caché de instrucciones. ARM Thumb. 
  • No ejecutan código x86. Puede utilizarse simulación por software, pero no puedo fabricar una IBM PC compatible.
  • Excesiva dependencia en la efectividad del compilador 
  • La depuración de los programas se hace difícil por la programación de instrucciones 
  • Se incrementa el tamaño del código de lenguaje máquina 
  • Necesidad de memoria rápida

RESUMEN:

RISC es una filosofía de diseño de CPU para computadora que está a favor de conjuntos de instrucciones pequeñas y simples que toman menor tiempo para ejecutarse. El tipo de procesador más comúnmente utilizado en equipos de escritorio, el x86, está basado en CISC en lugar de RISC, aunque las versiones más nuevas traducen instrucciones basadas en CISC x86 a instrucciones más simples basadas en RISC para uso interno antes de su ejecución.

La idea fue inspirada por el hecho de que muchas de las características que eran incluidas en los diseños tradicionales de CPU para aumentar la velocidad estaban siendo ignoradas por los programas que eran ejecutados en ellas. Además, la velocidad del procesador en relación con la memoria de la computadora que accedía era cada vez más alta. Esto conllevó la aparición de numerosas técnicas para reducir el procesamiento dentro del CPU, así como de reducir el número total de accesos a memoria.

SUMMARY:

RISC is a design philosophy for computer CPU is in favor of small and simple sets of instructions that take less time to run. The processor type most commonly used in desktop computers, the x86, is based on CISC rather than RISC, although newer versions translate instructions based on CISC x86 to simpler instructions based on RISC for internal use before execution.

The idea was inspired by the fact that many of the features that were included on traditional CPU designs to increase the speed were being ignored by the programs were executed in them. In addition, the processor speed in relation to the memory of the computer that was accessed increasingly high. This led to the emergence of many techniques to reduce processing within the CPU as well as reduce the total number of memory accesses.

RECOMENDACIONES:
  • Analizar previamente que es una arquitectura de computador 
  • Tener bien claros los conceptos básicos de la arquitectura RISC

CONCLUSIÓN:

La "era RISC" ha alcanzado a todos los fabricantes de semiconductores: AMD, Intel, MIPS, Motorola, ROSS, etc; y todos ellos son productos usados por fabricantes de ordenadores y estaciones de trabajo: Apple, DEC, HP, IBM, SUN, etc. y sus correspondientes clónicos.

El tiempo de diseño de estos productos se reduce sensiblemente, lo que disminuye su coste final, y por tanto, se incrementan sus expectativas, al poder llegar al mercado en un tiempo más adecuado, y con menos posibilidades de errores.

Además, son globalmente más eficaces, de menores dimensiones y más bajo consumo, ofreciendo siempre claras ventajas técnicas frente a los más avanzados CISC.

Actualmente, las estaciones de trabajo RISC multiprocesadoras de mayor éxito, se basan en diferentes versiones de la tecnología SPARC: superSPARC e HyperSPARC.

Esta claro que el futuro pertenece a los RISC y a los sistemas multiprocesador, a no ser que la física y la electrónica logren superar las barreras tecnológicas para incrementar muy por encima de las cotas actuales, las velocidades y prestaciones de una única CPU.

También cabe esperar, y por que no, la pronta aparición de otras tecnologías que compitan con CISC y RISC.

APRECIACIÓN PERSONAL:


Conocer la arquitectura RISC es muy importante, puesto que nos permite cuales son sus ventajas y desventajas frente a las instrucciones ejecutadas desde un ordenador.

GLOSARIO DE TÉRMINOS:


RISC: Computadora con Conjunto de Instrucciones Reducidas

BIBLIOGRÁFICA:
  • http://www.alegsa.com.ar/Dic/risc.php
  • http://www.azc.uam.mx/publicaciones/enlinea2/num1/1-2.htm
  • http://www.monografias.com/trabajos55/microprocesadores-cisc-risc/microprocesadores-cisc-risc2.shtml
  • https://www.ecured.cu/RISC
  • http://electro.fisica.unlp.edu.ar/arq/transparencias/ARQII_03-RISC.pdf
  • http://www.consulintel.es/html/Tutoriales/Articulos/risc.html

Descargar el documento en PDF

Diapositiva "Arquitectura RISC"

Video relacionado al tema