Computadores RISC Arquitectura de Computadoras
Nuestra Agenda para Hoy Computadores de conjunto de instrucciones reducido (RISC) Características de RISC Conjunto de instrucciones Optimización Arquitectura Segmentación Procesadores Superescalares
COMPUTADORES DE CONJUNTO DE INSTRUCCIONES REDUCIDO Expositor: Ramos Ramírez Yaser Código: 0200414027 E-mail: ramos_620@hotmai.com
La tendencia hacia conjuntos de instrucciones más ricos, con un número mayor y más complejo se debe al deseo de simplificar los compiladores y mejorar las prestaciones (programas más pequeños y rápidos), con lo que se da mejor soporte a los HLL.  ¡¡Los programas más pequeños ocupan menos memoria, y se mejoran las prestaciones porque se captan menos bytes de instrucción y en un entorno paginado se ocupan menos páginas, reduciendo la falta de página.!!! INTRODUCCIÓN
La idea es que un conjunto de instrucciones poco complejas son simples, y por tanto de más rápida ejecución, lo que permite crear un código más "dinámico“, para ello nace RISC. Sin embargo RISC también tenía sus desventajas. Debido a que una serie de instrucciones son necesarias para completar incluso las tareas más sencillas, el número total de instrucciones para la lectura de la memoria es más grande, y por lo tanto lleva más tiempo.  INTRODUCCIÓN
¿QUÉ ES RISC?
PRINCIPIOS DE DISEÑO DE LAS COMPUTADORES RISC
CARACTERÍSTICAS Expositor: Ramos Ramírez Yaser Código: 0200414027 E-mail: ramos_620@hotmai.com
CARACTERÍSTICAS
RISC MODERNO
RISC vs CISC RISC CISC Énfasis en el software  Incluye el multi-reloj, instrucciones reducida  Inter – registro: “CARGA” y “ALMACÉN” incorporado en instrucciones  Altos ciclos por segundo, tamaños de código pequeños Transistores usados para almacenar instrucciones complejas  Énfasis en el hardware Solo-reloj, instrucciones complejas Memoria a memoria: “CARGA” y “ALMACÉN” son las instrucciones independientes Ciclos bajos por segundo, tamaños de código grandes  Pasa más transistores en los registros de la memoria .
CONJUNTO DE INSTRUCCIONES Expositor: Ramos Ramírez Yaser Código: 0200414027 E-mail: ramos_620@hotmai.com
CONJUNTO DE INSTRUCCIONES Instrucciones de carga/almacenamiento Instrucciones Aritméticas OPERANDO DESCRIPCIÓN LDSB Cargar byte con signo LDSH Cargar media palabra con signo LDUB Cargar byte sin signo LDUH Cargar media palabra sin signo LD Cargar palabra LDD Cargar doble palabra STB Almacenar byte STH Almacenar media palabra STD Almacenar palabra STDD Almacenar doble palabra OPERANDO DESCRIPCIÓN ADD Sumar ADDCC Sumar, ajustar icc ADDX Sumar con acarreo ADDXCC Sumar con acarreo, ajustar icc SUB Restar SUBCC Restar, ajustar icc SUBX Restar con adeudo SUBXCC Restar con adeudo, ajustar icc MULSCC Paso de multiplicación, ajustar icc
CONJUNTO DE INSTRUCCIONES Instrucciones Booleanas Instrucciones de salto/bifurcación OPERANDO DESCRIPCIÓN AND Y ANDCC Y,  ajustar icc ANDN No Y ANDNCC No Y, ajustar icc OR O ORCC O,  ajustar icc ORN No O ORNCC No O, ajustar icc XOR O Exclusiva XORCC O Exclusiva, ajustar icc XNOR No O Exclusiva XNORCC No O Exclusiva, ajustar icc OPERANDO DESCRIPCIÓN BCC Bifurcar si condición FBCC Bifurcar si condición de coma flotante CBCC Bifurcar si condición del procesador CALL Llamar a procedimiento JMPL Saltar y enlazar TCC Interceptar si condición SAVE Avanzar ventana de registros RESTORE Mover ventanas hacia atrás RETT Retornar de interceptación
CONJUNTO DE INSTRUCCIONES Instrucciones de desplazamiento Instrucciones diversas OPERANDO DESCRIPCIÓN SLL Desplazamiento lógico a la izquierda SRL Desplazamiento lógico a la derecha SRA Desplazamiento aritmético a la derecha OPERANDO DESCRIPCIÓN SETHI Fijar los 22 bits altos UNIMP Instrucción no implementada (Interceptación) RD Leer un registro especial WR Escribir en un registro especial IFLUSH Vaciar la caché de instrucciones
CUADRO COMPARATIVO CISC Y RISC CISC RISC Una instrucción por circunstancia. Pequeñas instrucciones. Instrucciones complejas. Instrucciones simples. Lenta ejecución de la instrucción. Ejecución rápida de las instrucciones. Pocas instrucciones por trabajo Varias instrucciones por trabajo específico.
El único modo de direccionamiento disponible, aparte del modo registro, es el modo de desplazamiento. La dirección efectiva de un operando consiste en una dirección contenida en un registro más un desplazamiento. EA = (R1) + S (constante) EA = (R1) + (R2) MODOS DE DIRECCIONAMIENTO
El SPARC emplea un formato de instrucciones de 32 bits. Todas las instrucciones comienzan con un código de operación de 2 bits. En ciertas instrucciones, este código se amplia con bits de código de operación adicionales en otras partes del formato. FORMATO DE INSTRUCCIONES
FORMATO DE INSTRUCCIONES
OPTIMIZACIÓN Expositor: Ramos Ramírez Yaser Código: 0200414027 E-mail: ramos_620@hotmai.com
El objetivo del compilador es mantener en registros los operandos necesarios para tantos cálculos como sea posible y minimizarlas operaciones de carga – almacenamiento. Se usa la siguiente aproximación, cada cantidad candidata a residir en un registro se asigna a un registro simbólico. Después el número ilimitado de registros simbólicos es asignado a un número fijo de registros reales. Los registros simbólicos cuyo uso no se solapa pueden compartir el mismo registro real. Si hay más cantidades que registros, algunas de las cantidades se asignan a posiciones de memoria y otras a registros. La técnica usada en los compiladores para RISC es el coloreado de grafos.  OPTIMIZACIÓN
El problema es, dado un grafo asignar colores a los nodos de manera que nodos adyacentes tengan colores diferentes y se minimice el número de colores distintos. Se adapta una vez que el programa se ha analizado para construir un grafo de interferencias entre registros. Los nodos son los registros simbólicos. Si dos registros están “vivos” se unen por un arco para representar su interferencia. Se intenta colorear el grafo con “n” colores, donde “n” es el número de registro. Los nodos que no se pueden colorear se colocan en memoria. OPTIMIZACIÓN
OPTIMIZACIÓN
ARQUITECTURA Expositor: Muñoz Aleman Jonathan Código: 0200414042 Página Web: http://geekmelomano.iespana.es/ Windows Live ID: geek_melomano@hotmail.es
Arquitectura CISC
Arquitectura CISC Reduce la complejidad de crear compiladores. Permite reducir el costo total del sistema. Reduce los costos de desarrollo de software. Mejora la compactación de código. Facilita la depuración de errores
Arquitectura RISC
Arquitectura RISC Objetivos de RISC Alto rendimiento vía segmentación Facilitar la implementación HW Compatibilidad con compiladores optimizado Estos objetivos dieron lugar a Instrucciones sencillas Modos de direccionamiento sencillos Formato de instrucciones de longitud fija Gran número de registros
Arquitectura RISC La estructura simple de RISC conduce a una notable reducción de la superficie del IC. Se aprovecha para: Unidad para el procesamiento aritmético de punto flotante Unidad de administración de memoria Funciones de control de memoria cache Implantación de un conjunto de registros múltiples
Arquitectura RISC La CPU trabaja más rápido al utilizar menos ciclos de reloj para ejecutar instrucciones. Utiliza un sistema de direcciones no destructivas en RAM. Cada instrucción puede ser ejecutada en un solo ciclo del CPU.
Arquitectura RISC Una instrucción ingresa en forma fija en el circuito integrado del procesador (es decir, se alambra físicamente en el procesador) si se ha demostrado que la capacidad total del sistema se incrementa en por lo menos un 1%. Diseñadores RISC de MIPS y HP
SEGMENTACIÓN Expositor: Muñoz Aleman Jonathan Código: 0200414042 Blog: http://javadabaduuu.blogspot.com/ Yahoo! ID: geek_melomano@yahoo.com.pe
Detalle de la segmentación de instrucciones La segmentación consiste en descomponer la ejecución de cada instrucción en varias etapas para poder empezar a procesar una instrucción diferente en cada una de ellas y trabajar con varias a la vez.
Ejemplo IF: Búsqueda ID: Descodificación EX: Ejecución de Unidad Aritmética Lógica MEM: Memoria WB: Escritura Ciclo 1 2 3 4 5 6 7 8 9 10 Ins. 1 IF ID EX MEM WB Ins. 2 IF ID EX MEM WB Ins. 3 IF ID EX MEM WB Ins. 4 IF ID EX MEM WB Ins. 5 IF ID EX MEM WB Ins. 6 IF ID EX MEM WB
Riesgos de Datos y de Control RAW (read after write): una instrucción posterior trata de leer un operando antes de que lo escriba una anterior. WAR (write after read): una instrucción posterior trata de escribir su resultado antes de que lo haya leído una anterior. WAW (write after write): una escritura posterior se produce antes que otra escritura anterior en el mismo destino
Diagramas de Segmentación Modelo de un CPU subescalar Pipeline genérica
Diagramas de Segmentación Programación de instrucciones usando un pipeline de 5 etapas Programación de instrucciones en un procesador superescalar
Diagramas de Segmentación Programación de instrucciones en un procesador VLIW Programación de instrucciones en un procesador vectorial
PROCESADORES SUPERESCALARES Expositor: Muñoz Aleman Jonathan Código: 0200414042 Twitter: http://twitter.com/geekmelomano Google Talk: geek.melomano@gmail.com
Organizaciones La disposición de las instrucciones en el código es muy importante desde el punto de vista de aprovechamiento de los recursos
Microarquitectura Forma más usual de organizar la microarquitectura:
Superescalares y Segmentados La etapa IF es capaz de leer varias instrucciones por ciclo desde el caché L1. Un procesador superescalar es capaz de identificar el paralelismo entre instrucciones
Emisión de Instrucciones
Problemas La decodificación paralela y el uso de predecodificación. La emisión paralela de instrucciones a las unidades funcionales. La ejecución paralela de las operaciones codificadas en las instrucciones en las distintas unidades funcionales. La finalización del procesamiento de instrucciones.
Instrucciones de Salto Detección anticipada de la instrucción de salto (early branch detection): Detección paralela Detección anticipada Detección integrada en la captación Alternativas para la gestión de saltos Bloqueo del procesamiento del salto Procesamiento especulativo de los saltos Múltiples caminos
APLICACIONES Y NOVEDADES Expositor: Muñoz Aleman Jonathan Skype: geekmelomano Google Wave: geek.melomano@googlewave.com
Procesadores SPARK
Procesadores ARM
Procesadores MIPS
OpenRISC OpenRISC es un diseño de CPU RISC de especificación libre, realizado por OpenCores y publicado bajo la licencia LGPL.
iPhone 4, Maquinon
Ubuntu 9.04 soporta ARM
Gracias… Totales!!! PASADO FUTURO

Computadores RISC

  • 1.
  • 2.
    Nuestra Agenda paraHoy Computadores de conjunto de instrucciones reducido (RISC) Características de RISC Conjunto de instrucciones Optimización Arquitectura Segmentación Procesadores Superescalares
  • 3.
    COMPUTADORES DE CONJUNTODE INSTRUCCIONES REDUCIDO Expositor: Ramos Ramírez Yaser Código: 0200414027 E-mail: ramos_620@hotmai.com
  • 4.
    La tendencia haciaconjuntos de instrucciones más ricos, con un número mayor y más complejo se debe al deseo de simplificar los compiladores y mejorar las prestaciones (programas más pequeños y rápidos), con lo que se da mejor soporte a los HLL. ¡¡Los programas más pequeños ocupan menos memoria, y se mejoran las prestaciones porque se captan menos bytes de instrucción y en un entorno paginado se ocupan menos páginas, reduciendo la falta de página.!!! INTRODUCCIÓN
  • 5.
    La idea esque un conjunto de instrucciones poco complejas son simples, y por tanto de más rápida ejecución, lo que permite crear un código más "dinámico“, para ello nace RISC. Sin embargo RISC también tenía sus desventajas. Debido a que una serie de instrucciones son necesarias para completar incluso las tareas más sencillas, el número total de instrucciones para la lectura de la memoria es más grande, y por lo tanto lleva más tiempo. INTRODUCCIÓN
  • 6.
  • 7.
    PRINCIPIOS DE DISEÑODE LAS COMPUTADORES RISC
  • 8.
    CARACTERÍSTICAS Expositor: RamosRamírez Yaser Código: 0200414027 E-mail: ramos_620@hotmai.com
  • 9.
  • 10.
  • 11.
    RISC vs CISCRISC CISC Énfasis en el software Incluye el multi-reloj, instrucciones reducida Inter – registro: “CARGA” y “ALMACÉN” incorporado en instrucciones Altos ciclos por segundo, tamaños de código pequeños Transistores usados para almacenar instrucciones complejas Énfasis en el hardware Solo-reloj, instrucciones complejas Memoria a memoria: “CARGA” y “ALMACÉN” son las instrucciones independientes Ciclos bajos por segundo, tamaños de código grandes Pasa más transistores en los registros de la memoria .
  • 12.
    CONJUNTO DE INSTRUCCIONESExpositor: Ramos Ramírez Yaser Código: 0200414027 E-mail: ramos_620@hotmai.com
  • 13.
    CONJUNTO DE INSTRUCCIONESInstrucciones de carga/almacenamiento Instrucciones Aritméticas OPERANDO DESCRIPCIÓN LDSB Cargar byte con signo LDSH Cargar media palabra con signo LDUB Cargar byte sin signo LDUH Cargar media palabra sin signo LD Cargar palabra LDD Cargar doble palabra STB Almacenar byte STH Almacenar media palabra STD Almacenar palabra STDD Almacenar doble palabra OPERANDO DESCRIPCIÓN ADD Sumar ADDCC Sumar, ajustar icc ADDX Sumar con acarreo ADDXCC Sumar con acarreo, ajustar icc SUB Restar SUBCC Restar, ajustar icc SUBX Restar con adeudo SUBXCC Restar con adeudo, ajustar icc MULSCC Paso de multiplicación, ajustar icc
  • 14.
    CONJUNTO DE INSTRUCCIONESInstrucciones Booleanas Instrucciones de salto/bifurcación OPERANDO DESCRIPCIÓN AND Y ANDCC Y, ajustar icc ANDN No Y ANDNCC No Y, ajustar icc OR O ORCC O, ajustar icc ORN No O ORNCC No O, ajustar icc XOR O Exclusiva XORCC O Exclusiva, ajustar icc XNOR No O Exclusiva XNORCC No O Exclusiva, ajustar icc OPERANDO DESCRIPCIÓN BCC Bifurcar si condición FBCC Bifurcar si condición de coma flotante CBCC Bifurcar si condición del procesador CALL Llamar a procedimiento JMPL Saltar y enlazar TCC Interceptar si condición SAVE Avanzar ventana de registros RESTORE Mover ventanas hacia atrás RETT Retornar de interceptación
  • 15.
    CONJUNTO DE INSTRUCCIONESInstrucciones de desplazamiento Instrucciones diversas OPERANDO DESCRIPCIÓN SLL Desplazamiento lógico a la izquierda SRL Desplazamiento lógico a la derecha SRA Desplazamiento aritmético a la derecha OPERANDO DESCRIPCIÓN SETHI Fijar los 22 bits altos UNIMP Instrucción no implementada (Interceptación) RD Leer un registro especial WR Escribir en un registro especial IFLUSH Vaciar la caché de instrucciones
  • 16.
    CUADRO COMPARATIVO CISCY RISC CISC RISC Una instrucción por circunstancia. Pequeñas instrucciones. Instrucciones complejas. Instrucciones simples. Lenta ejecución de la instrucción. Ejecución rápida de las instrucciones. Pocas instrucciones por trabajo Varias instrucciones por trabajo específico.
  • 17.
    El único modode direccionamiento disponible, aparte del modo registro, es el modo de desplazamiento. La dirección efectiva de un operando consiste en una dirección contenida en un registro más un desplazamiento. EA = (R1) + S (constante) EA = (R1) + (R2) MODOS DE DIRECCIONAMIENTO
  • 18.
    El SPARC empleaun formato de instrucciones de 32 bits. Todas las instrucciones comienzan con un código de operación de 2 bits. En ciertas instrucciones, este código se amplia con bits de código de operación adicionales en otras partes del formato. FORMATO DE INSTRUCCIONES
  • 19.
  • 20.
    OPTIMIZACIÓN Expositor: RamosRamírez Yaser Código: 0200414027 E-mail: ramos_620@hotmai.com
  • 21.
    El objetivo delcompilador es mantener en registros los operandos necesarios para tantos cálculos como sea posible y minimizarlas operaciones de carga – almacenamiento. Se usa la siguiente aproximación, cada cantidad candidata a residir en un registro se asigna a un registro simbólico. Después el número ilimitado de registros simbólicos es asignado a un número fijo de registros reales. Los registros simbólicos cuyo uso no se solapa pueden compartir el mismo registro real. Si hay más cantidades que registros, algunas de las cantidades se asignan a posiciones de memoria y otras a registros. La técnica usada en los compiladores para RISC es el coloreado de grafos. OPTIMIZACIÓN
  • 22.
    El problema es,dado un grafo asignar colores a los nodos de manera que nodos adyacentes tengan colores diferentes y se minimice el número de colores distintos. Se adapta una vez que el programa se ha analizado para construir un grafo de interferencias entre registros. Los nodos son los registros simbólicos. Si dos registros están “vivos” se unen por un arco para representar su interferencia. Se intenta colorear el grafo con “n” colores, donde “n” es el número de registro. Los nodos que no se pueden colorear se colocan en memoria. OPTIMIZACIÓN
  • 23.
  • 24.
    ARQUITECTURA Expositor: MuñozAleman Jonathan Código: 0200414042 Página Web: http://geekmelomano.iespana.es/ Windows Live ID: geek_melomano@hotmail.es
  • 25.
  • 26.
    Arquitectura CISC Reducela complejidad de crear compiladores. Permite reducir el costo total del sistema. Reduce los costos de desarrollo de software. Mejora la compactación de código. Facilita la depuración de errores
  • 27.
  • 28.
    Arquitectura RISC Objetivosde RISC Alto rendimiento vía segmentación Facilitar la implementación HW Compatibilidad con compiladores optimizado Estos objetivos dieron lugar a Instrucciones sencillas Modos de direccionamiento sencillos Formato de instrucciones de longitud fija Gran número de registros
  • 29.
    Arquitectura RISC Laestructura simple de RISC conduce a una notable reducción de la superficie del IC. Se aprovecha para: Unidad para el procesamiento aritmético de punto flotante Unidad de administración de memoria Funciones de control de memoria cache Implantación de un conjunto de registros múltiples
  • 30.
    Arquitectura RISC LaCPU trabaja más rápido al utilizar menos ciclos de reloj para ejecutar instrucciones. Utiliza un sistema de direcciones no destructivas en RAM. Cada instrucción puede ser ejecutada en un solo ciclo del CPU.
  • 31.
    Arquitectura RISC Unainstrucción ingresa en forma fija en el circuito integrado del procesador (es decir, se alambra físicamente en el procesador) si se ha demostrado que la capacidad total del sistema se incrementa en por lo menos un 1%. Diseñadores RISC de MIPS y HP
  • 32.
    SEGMENTACIÓN Expositor: MuñozAleman Jonathan Código: 0200414042 Blog: http://javadabaduuu.blogspot.com/ Yahoo! ID: geek_melomano@yahoo.com.pe
  • 33.
    Detalle de lasegmentación de instrucciones La segmentación consiste en descomponer la ejecución de cada instrucción en varias etapas para poder empezar a procesar una instrucción diferente en cada una de ellas y trabajar con varias a la vez.
  • 34.
    Ejemplo IF: BúsquedaID: Descodificación EX: Ejecución de Unidad Aritmética Lógica MEM: Memoria WB: Escritura Ciclo 1 2 3 4 5 6 7 8 9 10 Ins. 1 IF ID EX MEM WB Ins. 2 IF ID EX MEM WB Ins. 3 IF ID EX MEM WB Ins. 4 IF ID EX MEM WB Ins. 5 IF ID EX MEM WB Ins. 6 IF ID EX MEM WB
  • 35.
    Riesgos de Datosy de Control RAW (read after write): una instrucción posterior trata de leer un operando antes de que lo escriba una anterior. WAR (write after read): una instrucción posterior trata de escribir su resultado antes de que lo haya leído una anterior. WAW (write after write): una escritura posterior se produce antes que otra escritura anterior en el mismo destino
  • 36.
    Diagramas de SegmentaciónModelo de un CPU subescalar Pipeline genérica
  • 37.
    Diagramas de SegmentaciónProgramación de instrucciones usando un pipeline de 5 etapas Programación de instrucciones en un procesador superescalar
  • 38.
    Diagramas de SegmentaciónProgramación de instrucciones en un procesador VLIW Programación de instrucciones en un procesador vectorial
  • 39.
    PROCESADORES SUPERESCALARES Expositor:Muñoz Aleman Jonathan Código: 0200414042 Twitter: http://twitter.com/geekmelomano Google Talk: geek.melomano@gmail.com
  • 40.
    Organizaciones La disposiciónde las instrucciones en el código es muy importante desde el punto de vista de aprovechamiento de los recursos
  • 41.
    Microarquitectura Forma másusual de organizar la microarquitectura:
  • 42.
    Superescalares y SegmentadosLa etapa IF es capaz de leer varias instrucciones por ciclo desde el caché L1. Un procesador superescalar es capaz de identificar el paralelismo entre instrucciones
  • 43.
  • 44.
    Problemas La decodificaciónparalela y el uso de predecodificación. La emisión paralela de instrucciones a las unidades funcionales. La ejecución paralela de las operaciones codificadas en las instrucciones en las distintas unidades funcionales. La finalización del procesamiento de instrucciones.
  • 45.
    Instrucciones de SaltoDetección anticipada de la instrucción de salto (early branch detection): Detección paralela Detección anticipada Detección integrada en la captación Alternativas para la gestión de saltos Bloqueo del procesamiento del salto Procesamiento especulativo de los saltos Múltiples caminos
  • 46.
    APLICACIONES Y NOVEDADESExpositor: Muñoz Aleman Jonathan Skype: geekmelomano Google Wave: geek.melomano@googlewave.com
  • 47.
  • 48.
  • 49.
  • 50.
    OpenRISC OpenRISC esun diseño de CPU RISC de especificación libre, realizado por OpenCores y publicado bajo la licencia LGPL.
  • 51.
  • 52.
  • 53.

Notas del editor

  • #26 Los microprocesadores CISC tienen un conjunto de instrucciones que se caracteriza por ser muy amplio y permitir operaciones complejas entre operandos situados en la memoria o en los registros internos. Este tipo de arquitectura dificulta el paralelismo entre instrucciones, por lo que en la actualidad la mayoría de los sistemas CISC de alto rendimiento implementan un sistema que convierte dichas instrucciones complejas en varias instrucciones simples, llamadas generalmente microinstrucciones. La microprogramación es una característica importante y esencial de casi todas las arquitecturas CISC, por ejemplo Intel 8086, 8088, 80286, 80386, 80486; Motorola 68000, 68010, 68020, 68030, 6840.
  • #27 En la década de los sesentas la microprogramación, por sus características, era la técnica más apropiada para las tecnologías de memorias existentes en esa época y permitía desarrollar también procesadores con compatibilidad ascendente. En consecuencia, los procesadores se dotaron de poderosos conjuntos de instrucciones. Las instrucciones compuestas son decodificadas internamente y ejecutadas con una serie de microinstrucciones almacenadas en una ROM interna. Para esto se requieren de varios ciclos de reloj (al menos uno por microinstrucción). Cuando el sistema operativo o una aplicación requieren de una de estas acciones, envía al procesador el nombre del comando para realizarla junto con el resto de información complementaria que se necesite. Pero cada uno de estos comandos de la ROM del CISC varían de tamaño y, por lo tanto, el chip debe en primer lugar verificar cuanto espacio requiere el comando para ejecutarse y poder así reservárselo en la memoria interna. Además, el procesador debe determinar la forma correcta de cargar y almacenar el comando, procesos ambos que ralentizan el rendimiento del sistema.
  • #28 Buscando aumentar la velocidad del procesamiento se descubrió en base a experimentos que, con una determinada arquitectura de base, la ejecución de programas compilados directamente con microinstrucciones y residentes en memoria externa al circuito integrado resultaban ser más eficientes, gracias a que el tiempo de acceso de las memorias se fue decrementando conforme se mejoraba su tecnología de encapsulado. Debido a que se tiene un conjunto de instrucciones simplificado, éstas se pueden implantar por hardware directamente en la CPU, lo cual elimina el microcódigo y la necesidad de decodificar instrucciones complejas. En investigaciones hechas a mediados de la década de los setentas, con respecto a la frecuencia de utilización de una instrucción en un CISC y al tiempo para su ejecución, se observó lo siguiente: Alrededor del 20% de las instrucciones ocupa el 80% del tiempo total de ejecución de un programa. Existen secuencias de instrucciones simples que obtienen el mismo resultado que secuencias complejas predeterminadas, pero requieren tiempos de ejecución más cortos.
  • #29 Las características esenciales de una arquitectura RISC pueden resumirse como sigue: * Estos microprocesadores siguen tomando como base el esquema moderno de Von Neumann. * Las instrucciones, aunque con otras características, siguen divididas en tres grupos: Transferencia. Operaciones. Control de flujo. * Reducción del conjunto de instrucciones a instrucciones básicas simples, con la que pueden implantarse todas las operaciones complejas. * Arquitectura del tipo load-store (carga y almacena). Las únicas instrucciones que tienen acceso a la memoria son 'load' y 'store'; registro a registro, con un menor número de acceso a memoria. * Casi todas las instrucciones pueden ejecutarse dentro de un ciclo de reloj. Con un control implantado por hardware (con un diseño del tipo load-store), casi todas las instrucciones se pueden ejecutar cada ciclo de reloj, base importante para la reorganización de la ejecución de instrucciones por medio de un compilador. * Pipeline (ejecución simultánea de varias instrucciones). Posibilidad de reducir el número de ciclos de máquina necesarios para la ejecución de la instrucción, ya que esta técnica permite que una instrucción puede empezar a ejecutarse antes de que haya terminado la anterior.
  • #30 El hecho de que la estructura simple de un procesador RISC conduzca a una notable reducción de la superficie del circuito integrado, se aprovecha con frecuencia para ubicar en el mismo, funciones adicionales: Unidad para el procesamiento aritmético de punto flotante. Unidad de administración de memoria. Funciones de control de memoria cache. Implantación de un conjunto de registros múltiples. La idea estuvo inspirada también 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.
  • #34 La segmentación es un método por el cual se consigue aumentar el rendimiento de algunos sistemas electrónicos digitales. Es aplicado, sobre todo, en microprocesadores. El nombre viene de que para impulsar el gas en un oleoducto a la máxima velocidad es necesario dividir el oleoducto en tramos y colocar una bomba que dé un nuevo impulse al gas. El símil con la programación existe en que los cálculos deben ser registrados o sincronizados con el reloj cada cierto tiempo para que la ruta crítica (tramo con más carga o retardo computacional entre dos registros de reloj) se reduzca. La ruta crítica es en realidad la frecuencia máxima de trabajo alcanzada por el conjunto. A mayor ruta crítica (tiempo o retraso entre registros) menor es la frecuencia máxima de trabajo y a menor ruta crítica mayor frecuencia de trabajo. La una es la inversa de la otra. Repartir o segmentar equitativamente el cálculo hace que esa frecuencia sea la óptima a costa de más área para el almacenamiento o registro de los datos intervinientes y de un retraso o latencia (en ciclos de reloj/tiempo) en la salida del resultado equivalente al número de segmentaciones o registros realizados. La ventaja primordial de este sistema es que, tal y como se muestra en la imagen, una vez el pipe está lleno, es decir, después de una latencia de cuatro en la imagen, los resultados de cada comando vienen uno tras otro cada flanco de reloj y sin latencia extra por estar encadenados dentro del mismo pipe. Todo esto habiendo maximizado la frecuencia máxima de trabajo.
  • #36 El empleo de esta técnica conlleva diversos riesgos de datos, ya que al empezar a ejecutar instrucciones antes de terminar las anteriores puede provocar que se necesite leer/escribir un registro antes de que este haya sido escrito/leído por la instrucción anterior/siguiente. Esos riesgos de datos se pueden clasificar como: RAW (read after write): una instrucción posterior trata de leer un operando antes de que lo escriba una anterior. WAR (write after read): una instrucción posterior trata de escribir su resultado antes de que lo haya leído una anterior. WAW (write after write): una escritura posterior se produce antes que otra escritura anterior en el mismo destino. La técnica más sencilla para evitar estos riesgos sería, cuando se detecte un riesgo, parar la ejecución de la instrucción que vaya a causar el riesgo, (insertando instrucciones NOP, o burbujas), hasta que hayan terminado de ejecutarse todas las instrucciones anteriores. Esta técnica supone demasiadas paradas en la ejecución, lo que supone una caída considerable del rendimiento
  • #40 El procesamiento superescalar es la última de una serie de innovaciones tendientes a producir procesadores cada vez más rápidos. Explotando el paralelismo a nivel de instrucción, los superescalares son capaces de ejecutar más de una instrucción por ciclo de reloj (dos, tres, cuatro, ocho ya es mucho!). Los procesadores superescalares pueden iniciar la ejecución simultánea de varias instrucciones escalares en paralelo de manera que se pueden operar varios elementos de un vector dentro de una misma iteración. Para ésto, es necesario que existan varias unidades aritmético-lógicas, de punto flotante y de control. El proceso que sigue el micro es transparente al programa, aunque el compilador puede ayudar analizando el código y generando un flujo de instrucciones optimizado.