ADC - El ciclo de instrucción

23
Instituto Tecnológico de Minatitlán Equipo 2 Integrantes Samuel Hipólito Rocha García Johan Culebro Reyes Efraín de Jesús Nandez Aguilar Luis Enrique Martínez Ruiz Sergio Cruz de la Cruz Mendoza Omar Nathanael Torres Torres Carrera Ingeniería en Sistemas Computacionales Nivel 5° Semestre Materia Arquitectura de Computadoras Profesor Claudia del Carmen Pavón Núñez

Transcript of ADC - El ciclo de instrucción

Page 1: ADC - El ciclo de instrucción

Instituto Tecnológico de Minatitlán

Equipo 2

IntegrantesSamuel Hipólito Rocha GarcíaJohan Culebro ReyesEfraín de Jesús Nandez AguilarLuis Enrique Martínez RuizSergio Cruz de la Cruz MendozaOmar Nathanael Torres Torres

CarreraIngeniería en Sistemas Computacionales

Nivel5° Semestre

MateriaArquitectura de Computadoras

ProfesorClaudia del Carmen Pavón Núñez

TemaEl ciclo de instrucción

Miércoles 07 de Noviembre del 2012

Page 2: ADC - El ciclo de instrucción

El Ciclo de Instrucción

IntroducciónUn ciclo de instrucción es el período que tarda la unidad central de proceso (CPU) en ejecutar una instrucción de lenguaje máquina.También se le conoce como ciclo de fetch-decode-execute en inglés.

Comprende una secuencia de acciones que debe llevar a cabo la CPU para ejecutar cada instrucción en un programa. Cada instrucción del juego de instrucciones de una CPU puede requerir diferente número de ciclos de instrucción para su ejecución, por lo tanto, un ciclo de instrucción está formado por uno o más ciclos máquina.

Para que cualquier sistema de proceso de datos basado en microprocesador (como un ordenador) o micro-controlador (como un reproductor de MP3) realice una tarea, primero debe buscar cada instrucción en la memoria principal y luego ejecutarla.

Secuencia de acciones del ciclo de instrucciónPodemos descomponer el procesamiento de instrucciones en dos etapas: Búsqueda y Ejecución. Habitualmente son cuatro los eventos o pasos que se llevan a cabo en cada ciclo de instrucción.

Ciclo de Búsqueda

Ciclo de Ejecución

1.- Buscar la instrucción en la memoria principalSe vuelca el valor del contador de programa (un registro del procesador que indica la posición en que se encuentra el procesador en su secuencia de instrucciones) sobre el bus de direcciones, el cual es un canal del microprocesador totalmente independiente donde se establece la dirección de memoria de los datos en tránsito. Entonces la CPU pasa la instrucción de la memoria principal a través del bus de datos (encargado de mover la información por los componentes de hardware del sistema de computación) al Registro de Datos de Memoria (MDR). A continuación, el valor del MDR es colocado en el Registro de Instrucción Actual (CIR), un circuito que guarda la instrucción temporalmente de manera que pueda ser decodificada y ejecutada.

1. Buscar instrucción en la memoria2. Decodificar la instrucción

3. Ejecutar la instrucción4. Almacenar o guardar resultados

Page 3: ADC - El ciclo de instrucción

2.- Decodificar la instrucciónEl decodificador de instrucciones interpreta e implementa la instrucción. El Registro de Instrucción (IR, Instruction Register) mantiene la instrucción en curso mientras el Contador de Programa (PC, Program Counter) guarda la dirección de memoria de la siguiente instrucción a ser ejecutada.También se lee la dirección efectiva de la memoria principal si la instrucción tiene una dirección indirecta, y se recogen los datos requeridos de la memoria principal para ser procesados y colocados en los registros de datos.

3.- Ejecutar la instrucciónA partir del Registro de Instrucción, los datos que forman la instrucción son decodificados por la Unidad de Control. Ésta interpreta la información como una secuencia de señales de control que son enviadas a las unidades funcionales relevantes de la CPU para realizar la operación requerida por la instrucción.

4.- Almacenar o guardar resultadosEl resultado generado por la operación es almacenado en la memoria principal o enviado a un dispositivo de salida dependiendo de la instrucción. Basándose en los resultados de la operación, el contador de programa se incrementa para apuntar a la siguiente instrucción o se actualiza con una dirección diferente donde la próxima instrucción será recogida.

Page 4: ADC - El ciclo de instrucción

Fetch Indirecto o Ciclo IndirectoYa se ha visto que la ejecución de una instrucción puede requerir invocar uno o más datos u operandos que se encuentran en la memoria. Cada uno de estos datos deberá ser extraído de la memoria mediante un fetch. Sin embargo, es frecuente que la instrucción a ejecutar especifique direccionamiento indirecto para extraer un operando, lo cual implicará el uso de un acceso a memoria adicional.Se puede ver al fetch de direccionamiento indirecto como un subciclo más en el ciclo de instrucción:

Una vez que se hace un fetch de una instrucción, los especificadores de los operandos deben ser identificados. Cada operando que se encuentra en memoria es extraído de la misma mediante un fetch, pero es posible que se requiera realizar un acceso indirecto a memoria. Es importante aclarar que no se requiere acceder la memoria (realizar un fetch) cuando los operandos de la instrucción se encuentran ya en los registros del CPU. Una vez que la instrucción es ejecutada, es posible que se requiera almacenar el resultado en la memoria principal.

Page 5: ADC - El ciclo de instrucción

Flujo de datos en el Ciclo FetchLa figura muestra el flujo de datos durante este ciclo. El registro PC contiene la dirección de la localidad de la memoria en la que se encuentra la siguiente instrucción a extraer. Esta dirección es almacenada en el registro MAR y puesta en el bus de direcciones. La unidad de control solicita una lectura de memoria (leer o extraer la instrucción que se encuentra en esa dirección), el resultado de la lectura es puesto en el bus de datos y copiado en el registro MBR y, de ahí, la instrucción es depositada en el registro IR. Mientras tanto, el registro PC es incrementado en una unidad como paso de preparación para el siguiente fetch de instrucción.

Flujo de Datos en el Ciclo de Direccionamiento IndirectoUna vez finalizado el ciclo fetch, la unidad de control examina el contenido del registro IR para determinar si contiene un especificador de operando que use direccionamiento indirecto. Sí éste es el caso, se ejecuta un ciclo de direccionamiento indirecto. Como se puede ver en la figura, éste es un ciclo sencillo. Los N bits menos significativos (bits a la derecha), los cuales contienen la referencia a memoria, son transferidos al registro MAR y de ahí al bus de direcciones. Entonces, la unidad de control solicita una lectura a memoria para obtener la dirección deseada del operando y depositarla en el registro MBR.

Page 6: ADC - El ciclo de instrucción

Flujo de datos en el Ciclo de EjecuciónLos ciclos de fetch y de direccionamiento indirecto son simples y predecibles. El ciclo de ejecución toma una de muchas formas posibles, dependiendo de qué instrucción se encuentre en el registro IR. Este ciclo puede involucrar la transferencia entre registros, leer o escribir en la memoria o en el bus de Entrada/Salida, y/o el uso de la ALU.

Flujo de datos en el Ciclo de InterrupciónTal los ciclos fetch y direccionamiento indirecto, el ciclo de interrupción es simple y predecible (ver la Figura 5.5). El contenido del registro PC debe ser grabado o respaldado para que el CPU pueda reanudar su actividad normal después de haber procesado la interrupción. Entonces, el contenido del PC es transferido al registro MBR para subsecuentemente ser almacenado (escrito) en la memoria. La localidad de memoria especial reservada para este propósito es cargada por la unidad de control en el registro MAR. Podría ser, por ejemplo, el registro apuntador a stack. El registro PC es cargado con la dirección de la rutina de la interrupción. Como resultado, el siguiente ciclo de instrucción iniciará extrayendo la instrucción apropiada, la cual no es sino la primera instrucción de la rutina correspondiente a la interrupción recibida.

Page 7: ADC - El ciclo de instrucción

Conjunto De Instrucciones

Un conjunto de instrucciones, juego de instrucciones o ISA (Instruction Set Architecture, Arquitectura del Conjunto de Instrucciones) es una especificación que detalla las instrucciones que una CPU de un ordenador puede entender y ejecutar, o el conjunto de todos los comandos implementados por un diseño particular de una CPU.El término describe los aspectos del procesador generalmente visibles a un programador, incluyendo los tipos de datos nativos, las instrucciones, los registros, la arquitectura de memoria y las interrupciones, entre otros aspectos.

Existen principalmente de 3 tipos: 1. CISC (Complex Instruction Set Computer)2. RISC (Reduced Instruction Set Computer) 3. SISC (Simple Instruction Set Computing)

Arquitectura CISCDel inglés “Complex Instruction Set Computer”, se refiere a la conexión permanente del procesador con las instrucciones complejas, difíciles de crear a partir de las instrucciones de base. Intel fue el creador de CISC en 1971 del primer microchip que permitiría el nacimiento de la informática personal.

Más concretamente, sería en 1972 cuando aparecería el 8080, primer chip capaz de procesar 8 bits, suficiente para representar números y letras. Con la posibilidad de colocar todos los circuitos en un solo chip y la capacidad de manejar número y letras nacería la cuarta generación de ordenadores, la de los conocidos como PC u ordenadores personales.

El diseño de esta arquitectura estuvo orientado por las condiciones de mercado de aquella época y muy especialmente por la limitación en oferta y precio de la memoria de acceso aleatorio del ordenador, la RAM. Así pues, muchas de las decisiones tomadas con relación al diseño del chip tenían como objetivo minimizar los requerimientos de memoria que se hicieran al ordenador.

Una forma de reducir la necesidad de memoria era simplificando el software e incrementando la complejidad del procesador, lo cual si bien iba en detrimento del rendimiento global del sistema era una solución mucho mejor que tener que añadir más RAM. La arquitectura CISC es especialmente popular en procesadores de tipo 80x86. Este tipo de arquitectura tiene un costo elevado a causa de las funciones avanzadas impresas en la silicona.

Page 8: ADC - El ciclo de instrucción

Las instrucciones son de longitud diversa, y a veces requieren más de un ciclo de reloj. Dado que los procesadores basados en la arquitectura CISC sólo pueden procesar una instrucción a la vez, el tiempo de procesamiento es una función del tamaño de la instrucción. Hasta finales de la década de los 70 se pretendía reducir el coste del “hardware”, mediante el uso de complejos juegos de instrucciones basados en la microprogramación.

En esta época el tiempo de acceso a Memoria Principal era muy superior al de decodificación y procesamiento de las instrucciones, debido al uso de los circuitos integrados. Para paliar ese desequilibrio se disminuyó el empleo de la Memoria Principal y se aumentó el del procesador, creando así los juegos de instrucciones complejos o CISC.

Otros aspectos ventajosos son: el abaratamiento del “hardware”, la facilitación del diseño de los Compiladores, y la disminución del tamaño de los programas.

Historia y evolución de CISCLa microprogramación es una característica importante y esencial de casi todas las arquitecturas CISC, podríamos mencionar por ejemplo: Intel 8086, 8088, 80286, 80386, 80486. Motorola 68000, 68010, 68020, 68030, 6840. La microprogramación significa que cada instrucción de máquina es interpretada por un microprograma localizado en una memoria en el circuito integrado del procesador. 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 reloj (al menos uno por microinstrucción).

Page 9: ADC - El ciclo de instrucción

RISCDel inglés “Reduced Instruction Set Computer”, es un tipo de diseño de CPU generalmente utilizado en micro-procesadores o micro-controladores con las siguientes características fundamentales:

Instrucciones de tamaño fijo y presentado en un reducido número de formatos.

Sólo las instrucciones de carga y almacenamiento acceden a la memoria de datos.

Además estos procesadores suelen disponer de muchos registros de propósito general.

El objetivo de diseñar máquinas con esta arquitectura es posibilitar la segmentación y el paralelismo en la ejecución de instrucciones y reducir los accesos a memoria. Las máquinas RISC protagonizan la tendencia actual de construcción de microprocesadores. PowerPC, DEC Alpha, MIPS, ARM y SPARC son ejemplos de algunos de ellos.

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.

Características Incrementar el tamaño del conjunto de registros. Mayor velocidad en la ejecución de instrucciones. Implementar medidas para aumentar el paralelismo interno. Añadir cachés enormes. Añadir otras funcionalidades, como E/S y relojes para mini controladores. Construir los chips en líneas de producción antiguas que de otra manera no

serían utilizables. No ampliar las funcionalidades, y por lo tanto ofrecer el chip para

aplicaciones de bajo consumo de energía o de tamaño limitado.

Page 10: ADC - El ciclo de instrucción

Arquitectura RISCBuscando 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 micro-código y la necesidad de decodificar instrucciones complejas.

La arquitectura RISC funciona de modo muy diferente a la CISC, su objetivo no es ahorrar esfuerzos externos por parte del software con sus accesos a la RAM, sino facilitar que las instrucciones sean ejecutadas lo más rápidamente posible. La forma de conseguirlo es simplificando el tipo de instrucciones que ejecuta el procesador. Así, las instrucciones más breves y sencillas de un procesador RISC son capaces de ejecutarse mucho más aprisa que las instrucciones más largas y complejas de un chip CISC. Sin embargo, este diseño requiere de mucha más RAM y de una tecnología de compilador más avanzada.

Los comandos que incorpora el chip RISC en su ROM constan de varias instrucciones pequeñas que realizan una sola tarea. Las aplicaciones son aquí las encargadas de indicar al procesador qué combinación de estas instrucciones debe ejecutar para completar una operación mayor.

Además, los comandos de RISC son todos del mismo tamaño y se cargan y almacenan del mismo modo. Al ser estas instrucciones pequeñas y sencillas, no necesitan ser descodificadas en instrucciones menores como en el caso de los chips CISC, pues ya constituyen en sí unidades descodificadas. Por ello, el procesador RISC no gasta tiempo verificando el tamaño del comando, en descodificarlo ni en averiguar cómo cargarlo y guardarlo.

El procesador RISC puede además ejecutar hasta 10 comandos a la vez pues el compilador del software es el que determina qué comandos son independientes y por ello es posible ejecutar varios a la vez. Y al ser los comandos del RISC más sencillos, la circuitería por la que pasan también es más sencilla. Estos comandos pasan por menos transistores, de forma que se ejecutan con más rapidez. Para ejecutar una sola instrucción normalmente les basta con un ciclo de reloj.

Page 11: ADC - El ciclo de instrucción

SISCDel inglés “Simple Instruction Set Computing”, es un tipo de arquitectura de micro-procesadores orientada al procesamiento de tareas en paralelo. Esto se implementa mediante el uso de la tecnología VLSI, que permite a múltiples dispositivos de bajo costo que se utilicen conjuntamente para resolver un problema particular dividido en partes disjuntas. La arquitectura RISC es un subconjunto del SISC, centrada en la velocidad de procesamiento debido a un conjunto de instrucciones reducido.

Los microprocesadores SISC nunca han logrado amenazar el amplio dominio de los procesadores CISC en los ordenadores personales, debido a su popularidad y al aumento constante en la capacidad de procesamiento de los mismos. Por lo tanto, el uso de RISC y SISC sigue limitado a necesidades muy específicas de procesamiento, como en los procesadores DSP.

El SISC extiende el concepto de arquitectura RISC en la mayor medida. Básicamente, el SISC implementa una única pero muy potente instrucción. El resultado es un sistema flexible, de bajo costo, procesador que supera muchos de los diseños que contienen decenas de miles de otras más transistores. Dado que sólo hay una sola instrucción, se consigue una reducción de complejidad del procesador considerable. El SISC opera sin tubería de instrucción y sin caché de instrucciones. Estos elementos, que añaden costes y complejidad a otros procesadores, son completamente innecesarios en el SISC: la "siguiente" instrucción siempre es la misma que la anterior. No hay necesidad de obtener un código de operación y no hay necesidad de descodificar uno. Cada ciclo es un ciclo de ejecución en el SISC. Y sin códigos de operación para ir a buscar, tampoco hay necesidad de un registro de instrucciones o contador de programa, lo que simplifica aún más el diseño.

La elegancia del procesador SISC está compuesta por única instrucción multiuso: INC A. Esta instrucción, la única disponible en el SISC, añade uno a los contenidos del acumulador y almacena el resultado en el acumulador. El valor de este enfoque se hace evidente cuando se considera que los dos operandos son implicados por la instrucción en sí, como es el destino. Por consiguiente, no se requiere ciclo de memoria, nunca. Esto conduce al sorprendente resultado de que el SISC puede funcionar sin memoria en absoluto, una conclusión a la que han verificado experimentalmente. El ahorro en los circuitos de gestión de memoria, RAM de control, y los propios dispositivos de memoria son sustanciales. Puede ser el SISC ventaja segunda mayor tiene sobre otros diseños más tradicionales.

Page 12: ADC - El ciclo de instrucción

El lenguaje máquinaEl lenguaje máquina está construido a partir de los estados discretos o instrucciones.

En la arquitectura de procesamiento, una instrucción dada puede especificar: Registros para operaciones aritméticas, de direccionamiento o de control. Ubicaciones particulares de memoria. Modos de direccionamiento para interpretar operandos.

Las operaciones más complejas se construyen a partir de estas, que (en una máquina Von Neumann) se ejecutan secuencialmente, o según el control de flujo.

Muchas o pocas de las operaciones disponibles incluidas en la mayoría de conjuntos son:

Desplazamientoo Establecer un registro a un valor constanteo Mover datos desde una posición de memoria a un registro y

viceversa. Esto se realiza para obtener datos para operaciones matemáticas y su almacenamiento.

o Leer y escribir datos desde dispositivos de hardware

Operaciones matemáticaso Sumar, restar, multiplicar o dividir dos registros y colocar el resultado

en alguno.o Realizar operaciones bit a bit, teniendo el AND y el OR de cada bit

en un par de registros, o el NOT de cada bit en un registro.o Comparar dos valores que se encuentren en registros(por ejemplo, si

son iguales o si uno es mayor que otro)

Afectan al flujo de programao Saltar a otra posición del programa y ejecutar instrucciones allí.o Saltar a otra posición si se cumple cierta condicióno Saltar a otra posición, pero salvando la posición actual para poder

volver a realizar una llamada.

Page 13: ADC - El ciclo de instrucción

Instrucciones complejasAlgunos ordenadores incluyen instrucciones "complejas". Dichas instrucciones pueden tomar muchas instrucciones en otros equipos. Estas se caracterizan por instrucciones que necesitan varios pasos, como el control de múltiples unidades funcionales.

Algunos ejemplos son: Ahorro de registros en la pila Mover grandes bloques de memoria Complejas operaciones and/or con aritmética de coma flotante, tales como

el seno o la raíz cuadrada. Instrucciones que combinan ALU con un operando de la memoria mas que

de registros.

Un tipo complejo de la instrucción que ha llegado a ser particularmente popular recientemente es SIMD (Single Instruction, Multiple Data), una operación que realice la misma operación aritmética en pedazos múltiples de datos al mismo tiempo. SIMD tienen la capacidad de manipular vectores y matrices grandes en tiempo mínimo. Las instrucciones de SIMD permiten la paralelización fácil de los algoritmos implicados comúnmente en sonido, imagen, y el proceso video. Varias implementaciones de SIMD se han traído al mercado bajo nombres comerciales tales como MMX, 3DNow! y AltiVec.

Historia de los sistemas de instrucciónEl diseño de sistemas de instrucción es una edición compleja. Había dos etapas en la historia para el microprocesador. El primer era el CISC (ComplexInstruction Set Computer) que tenía muchas instrucciones diferentes. En los años 70 IBM hicieron la investigación y encontraron que muchas instrucciones en el sistema podrían ser eliminadas. El resultado era el RISC (ReducedInstruction Set Computer), una arquitectura que utiliza un sistema más pequeño de instrucciones. Un conjunto de instrucción más simple puede ofrecer el potencial para velocidades más altas, tamaño reducido del procesador, y consumo de energía reducido. Sin embargo, un conjunto más complejo puede optimizar operaciones comunes, mejorar memoria/eficiencia de cache, o simplificar la programación.

Page 14: ADC - El ciclo de instrucción

Implementación del conjunto de instruccionesCualquier conjunto de instrucciones se puede implementar de varias maneras. Todas las maneras de implementar un conjunto de instrucciones dan el mismo modelo programado, y todas pueden hacer funcionar los mismos ejecutables binarios. Las varias maneras de implementar un conjunto de instrucciones dan diversas compensaciones entre el coste, el funcionamiento, el consumo de energía y el tamaño.

Al diseñar micro-arquitecturas, los ingenieros usaron bloques de circuitos electrónicos “duramente-conectados” (diseñado a menudo por separado) por ejemplo, los multiplexores, los contadores, los registros, ALUs, etc.Un cierto tipo del lenguaje de transferencia de registros es a menudo usado para describir la codificación y la secuencia de cada instrucción de ISA usando esta micro-arquitectura física.Hay también algunos nuevos diseños de CPU que compilan el conjunto de instrucción a una RAM escribible o FLASH dentro de la CPU (tal como el procesador Recursiv y el ImsysCjip), o FPGA (computación reconfigurable). Western Digital MCP-1600 es un ejemplo antiguo, usando una ROM dedicada, separada del micro-código.

ISA se puede también emular en software por un intérprete. Naturalmente, debido a la interpretación de “overhead”, es más lento que ejecutar programas directamente sobre el hardware emulado. Hoy, es práctica para los vendedores de nuevos ISAs o micro-arquitectura poner emuladores del software a disposición de los desarrolladores de programas informáticos antes de que la implementación del hardware esté lista.

Los detalles de la implementación tienen una influencia fuerte en las instrucciones particulares seleccionadas para el conjunto de instrucción. Por ejemplo, muchas implementaciones de la instrucción “pipline” permiten solamente una carga de memoria (load) o almacén en memoria (store) por instrucción, llevando a la arquitectura carga-almacena (RISC). Por otro ejemplo, algunas maneras de implementar la instrucción “pipline” llevaron a una ranura de retardo.

La demanda de procesamiento de señal digital de alta velocidad ha empujado en el sentido contrario, forzando la implementación de instrucción de manera particular. Por ejemplo, para realizar los filtros digitales es bastante insuficiente, la instrucción del MAC en un procesador típico de señal digital (DSP) se debe implementar usando una arquitectura de Harvard que pueda traer una instrucción y dos palabras de datos simultáneamente, y requiere un solo ciclo.