Ensayo ciclo De Instrucción

382 views 13 slides Jan 17, 2022
Slide 1
Slide 1 of 13
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13

About This Presentation

Arquitectura de computadoras
1. Ciclo Fetch-Decode-Execute.
2. Segmentación de instrucciones.
3. Conjunto de instrucciones: Características y funciones.
4. Modos de direccionamiento y formatos.


Slide Content

INSTITUTO TECNOLÓGICO DE
HUAUCHINANGO


Carrera: Sistemas Computacionales


Materia: Arquitectura de Computadoras


Tema: Ensayo “El ciclo de instrucción”


Maestro: Julio Andrés Ávila Fonseca


Alumna: Alejandra Rubí Viveros León


Semestre: Quinto


Turno: Matutino

INDICE
INTRODUCCIÓN: .................................................................................................................................2
“El ciclo de instrucción”.......................................................................................................................3
1. Ciclo Fetch-Decode-Execute.............................................................................................................4
2. Segmentación de instrucciones. .......................................................................................................7
Conclusión: ...................................................................................................................................... 12
Bibliografía: ...................................................................................................................................... 13


INTRODUCCIÓN:
En este ensayo veremos a cerca del ciclo de la instrucción, los procesos que se
pasan para llevar a cabo dicho ciclo, también a cerca de la Segmentación de
instrucciones, que instrucciones son las que se llevan a cabo y como es el
Conjunto de instrucciones, cada una de sus Características y sus funciones. Y
finalmente sobre los Modos de direccionamiento y formatos.

“El ciclo de instrucción”
Una CPU lo que hace es ejecutar las instrucciones de un programa situado en una memoria. Pero,
¿sabíais que todos siguen las mismas normas generales? Todos siguen el mismo ciclo de instrucción, el
cual se divide en tres etapas diferenciadas llamadas Fetch, Decode y Execute, las cuales se traducen
como captación, descodificación y ejecución. Os explicamos cómo funcionan estas etapas y como se
organizan.
Con tal de simplificar y hacer más entendible los conceptos explicados en este artículo hemos decidido
describir un procesador sumamente simple para los tiempos que corren, por lo que en este artículo
veréis una explicación de lo que son los ciclos de instrucción de manera generalizada que se puede
aplicar desde los primeros procesadores de 8 bits a los más complejos que hay hoy en día
Visualizando el ciclo de instrucción


Los procesadores no son diferentes desde cierto punto de
vista a un motor de combustión, los cuales siempre realizan
un proceso continuo de explosión del combustible en
diferentes etapas, ya sean de 2 tiempos o de 4 tiempos. El
motivo de ello es que los procesadores funcionan en tres
etapas distintas en su versión más simple que son las
siguientes:

Fetch o Captación: En la que la instrucción es captada desde la memoria RAM y copiada a dentro del
procesador.
Decode o Descodificacion: En la que la instrucción previamente captada es descodificada y enviada a las
unidades de ejecución
Execute o Ejecución: Donde la instrucción es resuelta y el resultado escrito en los registros internos del
procesador o en una dirección de memoria de la RAM
Estas tres etapa se cumplen en todo procesador, existe una cuarta etapa que es la de Write-Back que es
cuando las unidades de ejecución escriben el resultado, peor normalmente esto se cuenta dentro de la
etapa de ejecución del ciclo de instrucción.

1. Ciclo Fetch-Decode-Execute.

La primera etapa del ciclo de instrucción se encarga de captar las instrucciones que hay en la memoria
RAM asignada al procesador a través de una serie de unidades y registros que son las siguientes:

 Program Counter o Contador de Programa: El cual apunta a la siguiente línea de memoria donde
se encuentra la siguiente instrucción del procesador. Se incrementa en 1 su valor cada vez que
se termina un ciclo completo de instrucción o cuando una instrucción de salto cambia el valor
del contador de programa.
 Memory Address Register o registro de direccionamiento de memoria: El MAR copia el
contenido del PC y lo envía a la RAM a través de los pines de direccionamiento de la CPU, los
cuales están cableados con los pines de direccionamiento de la propia memoria RAM.
 Memory Data Register o registro de datos a memoria: En el caso que la CPU tenga que realizar
una lectura a memoria, lo que hace el MDR es copiar el contenido de esa dirección de memoria
a un registro interno de la CPU, el cual es un registro temporal de paso antes de que su
contenido sea copiado al Instruction Register. El MDR al contrario del MAR está conectado a los
pines de datos de la RAM y no a los de direccionamiento y en el caso de que se trate de una
instrucción de escritura el contenido de lo que se quiere escribir en la RAM también se escribe
en el MDR
 Instruction Register o Registro de Instrucción: La parte final de la etapa de captación o fetch es
la escritura de la instrucción en el registro de instrucción, del cual la unidad de control del
procesador copiará su contenido para la segunda etapa del ciclo de instrucción.
Estas 4 sub-etapas ocurren en todos los procesadores sea cual sea su utilidad, arquitectura y
compatibilidad binaria o lo que llamamos ISA.
La unidad de control

La unidad de control es la pieza más compleja que existe en un procesador y sus tareas son las
siguientes:
 Se encargan de coordinar el movimiento y el orden en que de los datos que se mueven dentro y
fuera del procesador, así de las diferentes subunidades que se encargan de ello.
 En general se considera que las unidades de la etapa de captación o Fetch forman parte del
hardware que llamamos unidad de control y dicho hardware es llamado también el Front-En de
un procesador.
 Interpreta las instrucciones y las envía a las diferentes unidades de ejecución a las que está
conectado.
 Esta comunicado a las diferentes ALUs y unidades de ejecución del procesador que actúan
 Se encarga de captar y descodificar las instrucciones, sino también de escribir los resultados en
los registros, caches o en la dirección correspondiente de la RAM.

La unidad de control lo que hace es descodificar las instrucciones y esto lo hace porque cada instrucción
en realidad no deja de ser una especie de oración en donde primero va el verbo y luego el objeto directo
u objeto sobre el que se hace la acción. El sujeto se acaba eliminando en este lenguaje interno de los
ordenadores por el hecho que se sobre-entiende que es el propio ordenador el que lo ejecuta, así pues
cada cantidad de bits es una oración donde los primeros 1 y 0 corresponden a la acción y los que vienen
a continuación es el dato o la localización del dato
que se quiere manipular.
La segunda etapa: Decode

Hay diferentes tipos de instrucciones y no todas
hacen lo mismo, por lo que dependiendo del
tipo de instrucción necesitamos saber hacía que
unidades de ejecución se van a enviar y la
manera más clásica de hacerlo es a través de lo que llamamos un descodificador, el cual toma

cada instrucción, la divide internamente según el opcode o instrucción y el dato o la dirección
de memoria donde se encuentra este.
Por ejemplo en el diagrama de arriba tenemos el diagrama de un procesador de solo 8
instrucciones, las cuales se pueden codificar en solo 3 bits. Cada una de las instrucciones una
vez descodificadas se envía a las diferentes unidades de ejecución que las resolverán.

Este ciclo de instrucción es el más complejo de todo y el que define el tipo de arquitectura.
Dependiendo si tenemos un conjunto de instrucciones reducido o complejo esto afectará a la
naturaleza de la unidad de control, dependiendo del formato de la instrucción o de cuantas se
procesen al mismo tiempo la fase de descodificación y por tanto la unidad de control tendrá
una naturaleza u otra.
La forma más fácil de visualizar lo que ocurre es pensar en las instrucciones como trenes
circulando a través de una compleja red ferroviaria y la unidad de control dirigiéndolos a una
estación término, la cual es la unidad de ejecución que se encargará de resolver la instrucción.

Tercera etapa: Execute




La última etapa es la de la
ejecución de las instrucciones, en esta
etapa las instrucciones son
resueltas, pero no todos los tipos de instrucción se resuelven de la misma forma, ya que la

forma de utilizar el hardware dependerá de la función de cada una de ellas, en general tenemos
cuatro tipos de instrucciones:
Instrucciones de movimiento de bits: En el cual se manipula el orden de los bits que contienen
el dato.
Instrucciones aritméticas: Donde se realizan operaciones matemáticas y también lógicas, estas
se solucionan en las llamadas ALU o unidades aritmético-lógicas
Instrucciones de salto: En la que se cambia la siguiente el valor del contador de programa, lo
que permite utilizar el código de manera recursiva.
Instrucciones a memoria: Son con las que el procesador lee y escribe la información de la
memoria del sistema.
El otro punto son los formatos de la instrucción, ya que una instrucción se puede aplicar a un
dato, escalar o a varios datos al mismo tiempo, lo que conocemos como SIMD. Para terminar y
dependiendo del formato de los datos, hay diferentes tipos de ALU para la ejecución de las
instrucciones aritméticas, por ejemplo tenemos unidades de enteros y en coma flotante como
unidades diferenciadas a día de hoy.
Una vez la instrucción ha sido terminada se escribe el resultado sobre una dirección de
memoria en concreto y se pasa a ejecutar la siguiente, algunas instrucciones no manipulan los
valores de memoria sino ciertos registros. Así pues el registro del contador de programa es
modificado por las instrucciones de salto, si queremos leer o escribir un dato entonces se
manipulan los registros MAR y MDR.
2. Segmentación de instrucciones.
La segmentación de las instrucciones (pipeline) consiste en dividir el ciclo de ejecución de las
instrucciones en un conjunto de etapas. Estas etapas pueden coincidir o no con las fases del ciclo de
ejecución de las instrucciones.
El objetivo de la segmentación es ejecutar simultáneamente diferentes etapas de distintas instrucciones,
lo cual permite aumentar el rendimiento del procesador sin tener que hacer más rápidas todas las
unidades del procesador (ALU, UC, buses, etc.) y sin tener que duplicarlas.
La división de la ejecución de una instrucción en diferentes etapas se debe realizar de tal manera que
cada etapa tenga la misma duración, generalmente un ciclo de reloj. Es necesario añadir registros para
almacenar los resultados intermedios entre las diferentes etapas, de modo que la información generada
en una etapa esté disponible para la etapa siguiente.

Ejemplo de segmentación de instrucciones
La segmentación es como una cadena de montaje. En cada etapa de la cadena se lleva a cabo una parte
del trabajo total y cuando se acaba el trabajo de una etapa, el producto pasa a la siguiente y así
sucesivamente hasta llegar al final.
Si hay N etapas, se puede trabajar sobre N productos al mismo tiempo y, si la cadena está bien
equilibrada, saldrá un producto acabado en el tiempo que se tarda en llevar a cabo una de las etapas. De
esta manera, no se reduce el tiempo que se tarda en hacer un producto, sino que se reduce el tiempo
total necesario para hacer una determinada cantidad de productos porque las operaciones de cada
etapa se efectúan simultáneamente.
Si consideramos que el producto es una instrucción y las etapas son cada una de las fases de ejecución
de la instrucción, que llamamos etapa de segmentación, hemos identificado los elementos y el
funcionamiento de la segmentación.
Veámoslo gráficamente. Presentamos un mismo proceso con instrucciones de tres etapas, en el que
cada etapa tarda el mismo tiempo en ejecutarse, resuelto sin segmentación y con segmentación:

Son necesarias nueve etapas para ejecutar las tres instrucciones.

Son necesarias cinco etapas para ejecutar las tres instrucciones.
Se ha reducido el tiempo total que se tarda en ejecutar las tres instrucciones, pero no el tiempo
que se tarda en ejecutar cada una de las instrucciones.

3. Conjunto de instrucciones: Características y
funciones.
El conjunto de instrucciones que maneja una computadora es una pieza fundamental para el
funcionamiento de ésta debido a que las instrucciones se comunican directamente con el
procesador para hacer un manejo adecuado de los datos que están procesando y dependiendo
del tipo de set de instrucciones que un CPU entienda nos dirá el tipo de programas que una
computadora puede llegar o no a soportar, esto responde muchas veces a las interrogantes de
porque no podemos utilizar las mismas aplicaciones de un dispositivo a otro y muchas veces es
por la diferencia de procesadores y el conjunto de instrucciones que maneja uno respecto al
otro. Sin embargo, aunque haya diferencias,

-Ortogonales (Simétricas)
La ortogonalidad es una característica de las instrucciones que se considera algo amplia en
términos de lo que requiere una instrucción o un conjunto de instrucciones para ser
considerado ortogonal en primera instancia se dice que las instrucciones en un conjunto deben
de poder ser fuente y destino de cualquier elemento de la arquitectura del CPU con esto se
refiere a que las instrucciones no solo deben de ser independientes en el sentido de que cada
una haga una función y única que no repita lo que hace otra, sino que en conjunto el set de
instrucciones debe de ser independiente y consistente en el sentido de que cualquier operando
pueda ser direccionado con cualquier tipo de direccionamiento y cualquier tipo de
direccionamiento pueda direccionar a cualquier tipo de operar en una instrucción, así que por
ejemplo no puede existir un registro que sea para un tipo específico de operar. Entre más de
esta característica posea un conjunto de instrucciones se dice que es más ortogonal que otro.

-Riesgo
Un juego de instrucciones Cisc se caracteriza por un número reducido de instrucciones además
del uso de pipelining que permite al procesador dividir la ejecución de una instrucción en
distintas fases incrementando de esa manera la velocidad de ejecución. Otra característica
importante es el uso de instrucciones ortogonales (explicadas anteriormente) lo cual le permite
que cualquier tipo de operación pueda direccionarse de distintas formas. A la hora de realizar
operaciones de distintos tipos Cisc solo permite que estas sean operaciones realizadas sobre
registros, no permite trabajar sobre memoria a menos que sean instrucciones exclusivamente

para acceder a memoria o para guardar datos en memoria, por eso mismo Cisc brinda una muy
basta cantidad de registros para trabajar sobre estos.
Enfocándonos en la forma de programar con un juego de instrucciones Cisc, esto generalmente
requiere de más código debido a la simplicidad de sus instrucciones ya la poca cantidad con las
que se cuenta para trabajar.
-Cisc
A diferencia del set de instrucciones Cisc, este set tiene una cantidad de instrucciones
considerable pero dichas instrucciones no suelen ejecutarse por medio de segmentación o
pipelining, sus instrucciones no son ortogonales eso quiere decir que se debe tener cuidado con
los registros que se utilizan debido a que no se pueden direccionar de cualquier forma los datos
sobre cualquier registro, se debe especificar en la instrucción.
En este conjunto de instrucciones se permite trabajar en memoria además de los registros
teniendo más espacio disponible para utilizar a conveniencia en memoria y por consiguiente el
número de registros es más pequeño ya que contamos con ese extra en memoria.
A la hora de programar en Risc se requiere menor esfuerzo debido a que se puede utilizar el
lenguaje C lo que permite al programador realizar tareas específicas sin utilizar demasiado
código debido a que cada instrucción puede realizar tareas más complejas. -La segmentación de
instrucciones es similar al uso de una cadena de montaje en una fábrica de fabricación. En las
cadenas de montaje, el producto pasa a través de varias etapas de producción antes de tener el
producto terminado.

Cada etapa o segmento de la cadena está especializada en un área específica de la línea de
producción y lleva a cabo siempre la misma actividad. Esta tecnología es aplicada en el diseño
de procesadores eficientes. A estos procesadores se les conoce como procesadores de tuberías.
Estos están compuestos por una lista de segmentos lineales y secuenciales en donde cada
segmento lleva a cabo una tarea o un grupo de tareas computacionales. Los datos que
provienen del exterior se introducen en el sistema para ser procesados. La computadora realiza
operaciones con los datos que tiene almacenados en memoria, produce nuevos datos o
información para uso externo. Las arquitecturas y los conjuntos de instrucciones se pueden
clasificar considerando los siguientes aspectos: Almacenamiento de operando en la CPU: dónde
se ubican los operando aparte de la memoria. Número de operando explícitos por instrucción:
cuántos operando se expresan en forma limpia en una instrucción típica. Normalmente son 0,
1, 2 y 3. Posición del operando: ¿Puede algún operando estar en memoria?, o deben estar

algunos o todos en los registros internos de la CPU. Cómo se especifica la dirección de memoria
(modos de direccionamiento disponibles).
Operaciones: Qué operaciones están disponibles en el conjunto de instrucciones. Tipo y
tamaño de operación y cómo se especifican
4. Modos de direccionamiento y formatos.
Contar con diferentes formatos de instrucciones, implica contar con diferentes formas de
obtener los operando de las instrucciones. Por lo general a estas múltiples formas se les conoce
como modos de direccionamiento. Los modos de direccionamiento en MIPS son:
Direccionamiento por registro, donde los operando son registros. Los datos a operar están
contenidos en 2 registros de 32 bits y el resultado será colocado en otro registro, del mismo
tamaño.
Ejemplos de instrucciones que usan este modo de direccionamiento: add, sub, slt, etc.

Direccionamiento base o desplazamiento, donde uno de los operando está en una localidad de
memoria cuya dirección es la suma de un registro y una constante que forma parte de la misma
instrucción.
Ejemplos de instrucciones que usan este modo de direccionamiento: lw, sw, etc.

Direccionamiento inmediato, donde uno de los operando es una constante que está en la
misma instrucción.
Ejemplos de instrucciones que usan este modo de direccionamiento: addi, slti, etc.

Direccionamiento relativo al PC, donde se forma una dirección sumando una constante, que
está en la instrucción, con el registro PC (Program Counter). El resultado de la suma
corresponde a la dirección destino si un brinco condicional se va a realizar.
Ejemplos de instrucciones que usan este modo de direccionamiento: beq y bne.

Direccionamiento pseudo directo, donde la dirección destino de un salto corresponde a la
concatenación de 26 bits que están en la misma instrucción con los bits más significativos del
PC.
Ejemplos de instrucciones que usan este modo de direccionamiento: j y jal.

Es importante mencionar que estamos estudiando una arquitectura con direcciones de 32 bits,
sin embargo, MIPS, como muchas otras arquitecturas, tiene una extensión que maneja
direcciones de 64 bits. Esto como una respuesta a la necesidad de manejar programas cada vez
más grandes.
Conclusión:
Estos temas son muy importantes y aún más conocerlos, como el ciclo Fetch-Decode-Execute. Desde lo
que significa hasta saber cada una de sus etapas, así mismo de Segmentación de instrucciones o el
Conjunto de instrucciones saber cada una de sus Características y sus funciones, de igual Modos de
direccionamiento y formatos y el proceso que se lleva a cabo en cada modo.

Bibliografía:

https://pdfcoffee.com/conjunto-de-instrucciones-4-pdf-free.html
https://hardzone.es/tutoriales/rendimiento/ciclo-instruccion-cpu/
http://itcv-arquitectura-de-computadoras.blogspot.com/2014/11/22-estructura-de-
registros.html
http://www.monografias.com/trabajos102/ejecucion-instrucciones/ejecucion-
instrucciones.shtml#ixzz3hA0WqSqS
http://www.bitschips.com/infoind/ciclos_y_tiempos.pdf
https://sites.google.com/site/copolinformaticabi2015/tema-2/arquitectura-de-
computadores/2-1-4