CICLO FETCH-DECODE-EXECUTE
Ciclo Fetch-Decode-Execute
Ciclo de instrucción es el periodo que tarda el
procesador en ejecutar una instrucción del lenguaje
maquina.
FETCH = Lectura. EXECUTE = Ejecución.
CARACTERÍSTICAS:
-Capacitación.
-Ejecución.
-Interrupción.
EL PROCESO QUE VA A REALIZAR:
ID (Decodificador)= Que proceso va a realizar.
EX (Ejecución)= Sabe la instrucción que va a realizar.
WB (Escritura en el bus de datos)= Proceso a buscar la
siguiente instrucción.
Fase de Obtención donde:
ElREGISTRO Contador del Programa (PC) tiene la dirección de la siguiente
instrucción que va obtener.
El PC se incrementa:
A menos que se le indique otra cosa
El PC queda apuntando a la siguiente instrucción
La instrucción se carga en el Registro Instrucción (IR).
El procesador interpreta la instrucción y realiza las acciones indicadas por ella.
Fase de Ejecución donde:
Procesador-memoria
Transferencia de datos entre CPU y memoria principal
Procesador – E/S
Transferencia de datos entre CPU y un módulo de E/S
Procesamiento de datos
Alguna operación aritmética o lógica sobre los datos
Control
Alteración de la secuencia de operaciones
Una combinación de las anteriores
Una combinación de las anteriores
Segmentación: técnica de solapamiento de
instrucciones
mediante la división de su ejecución en etapas o
segmentos.
- Los segmentos están conectados entre sí cada uno
al siguiente.
- Todos los segmentos proceden y progresan a la
vez.
- La segmentación es transparente al programador.
Ciclo máquina: tiempo que tarda una instrucción en
pasar de un
segmento al siguiente.
· Su duración viene dada por la duración de la etapa
más
lenta.
· Normalmente, un ciclo máquina es un ciclo de reloj.
La segmentación incrementa la productividad de
instrucciones
de la CPU, pero no disminuye el tiempo de ejecución
de cada
instrucción:
· Las etapas no suelen estar perfectamente
equilibradas.
· Gasto en el control de la segmentación.
pasos de la
segmentación.
1) IF: búsqueda de la instrucción.
2) ID: decodificación de la instrucción y búsqueda de
registros.
3) EX: ejecución y cálculo de direcciones efectivas.
4) MEM: acceso a memoria.
5) WB: postescritura.
RIESGOS DE LA SEGMENTACIÓN
- Riesgos estructurales: conflictos entre recursos.
- Riesgos por dependencia de datos entre
instrucciones de la
cadena.
- Riesgos de control: modificaciones en la secuencia
de ejecución
de instrucciones.
- Siempre es posible resolver una situación de riesgo
mediante
una detención en la cadena de ejecución de
instrucciones:
interbloqueo de la segmentación.
como conclusión se puede decir que la segmentación incrementa el número de
instrucciones que se ejecutan a la vez, y también su [Link] resultado obtenido al
utilizar esta técnica no depende de la metodología escogida, sino que también del set de
instrucciones del procesador.
Un conjunto de instrucciones, repertorio de instrucciones, juego de
instrucciones o ISA (del inglés instruction set architecture, «arquitectura del conjunto de
instrucciones») es una especificación que detalla las instrucciones que una unidad central
de procesamiento 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 para un programador, incluyendo los tipos de datos
nativos, las instrucciones, los registros, la arquitectura de memoria y las interrupciones,
entre otros aspectos.
Existen principalmente tres tipos:
CISC (Complex Instruction Set Computer), :
En arquitectura computacional, CISC (del inglés Complex Instruction Set Computer, en
español Computador con Conjunto de Instrucciones Complejas) es un modelo de
arquitectura de computadores. 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, en contraposición a la
arquitectura RISC.1
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 del
tipo RISC, llamadas generalmente microinstrucciones.
Los CISC pertenecen a la primera corriente de construcción de procesadores, antes del
desarrollo de los RISC. Ejemplos de ellos son: Motorola 68000, Zilog Z80 y toda la
familia Intel x86, AMD x86-64 usada en la mayoría de las computadoras
personales actuales.
Hay que hacer notar, sin embargo que la utilización del término CISC comenzó tras la
aparición de los procesadores RISC como nomenclatura despectiva por parte de los
defensores/creadores de éstos últimos. Véase Retrónimo.
RISC (Reduced Instruction Set Computer) :
En arquitectura computacional, RISC (del inglés Reduced Instruction Set Computer, en
español Computador con Conjunto de Instrucciones Reducidas) es un tipo de diseño
de CPU generalmente utilizado en microprocesadores o microcontroladores con las
siguientes características fundamentales:
1. Instrucciones de tamaño fijo y presentadas en un reducido número de formatos.
2. 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, 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.
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.
Terminología más moderna se refiere a esos diseños como arquitecturas de carga-
almacenamiento.
SISC (Simple Instruction Set Computing):
ISC (Simple Instruction Set Computing) es un tipo de arquitectura de
microprocesadores 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.1
Este artículo o sección se encuentra desactualizado.
La información suministrada ha quedado obsoleta o es insuficiente.
Microprocesadores SISC (o RISC) 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.2 Por lo tanto, el uso de RISC
y SISC sigue limitado a necesidades muy específicas de procesamiento, como en los
procesadores DSP.3
La arquitectura del conjunto de instrucciones (ISA) se emplea a veces para distinguir este
conjunto de características de la microarquitectura, que son los elementos y técnicas que
se emplean para implementar el conjunto de instrucciones. Entre estos elementos se
encuentran las microinstrucciones y los sistemas de caché.
Procesadores con diferentes diseños internos pueden compartir un conjunto de
instrucciones; por ejemplo, el Intel Pentium y AMD Athlon implementan versiones casi
idénticas del conjunto de instrucciones x86, aunque tienen diseños diferentes.
4.2.3 MODOS DE DIRECCIONAMIENTO
Posted noviembre 29, 2010 by silva75 in Uncategorized. Tagged: Modos de Direccionamiento. Dejar un
comentario
Se les llama modos de direccionamiento a las distintas formas de combinar los operandos según
el acceso que se hace a memoria.
Dicho de otra manera, un modo de direccionamiento será una forma de parámetro para las
instrucciones.
Una instrucción que lleve un parámetro, por lo tanto, usará un modo de direccionamiento, que
dependerá de cómo direccionará (accesará) al parámetro; una instrucción de dos parámetros,
combinará dos modos de direccionamiento.
Direccionamiento implícito
Depende solamente de la instrucción, es decir, la instrucción no lleva parámetros.
Particularmente en instrucciones que no accesan memoria, o bien que tienen una forma
específica de accesarla.
Ejemplos: PUSHF, POPF, NOP
Modo registro
Usa solamente registros como operandos
Es el más rápido, pues minimiza los recursos necesarios (toda la información fluye dentro del
EU del CPU)
Ejemplo:
MOV AX, BX
Modo inmediato
Tiene dos operandos: un registro y una constante que se usa por su valor.
El valor constante no se tiene que buscar en memoria, pues ya se obtuvo al hacer el “fetch” de la
instrucción.
Ejemplo:
MOV AH, 9
Modo directo
Uno de los operandos involucra una localidad específica de memoria
El valor constante se tiene que buscar en memoria, en la localidad especificada.
Es más lento que los anteriores, pero es el más rápido para ir a memoria, pues ya “sabe” la
localidad, la toma de la instrucción y no la tiene que calcular.
Ejemplo:
MOV AH, [0000]
MOV AH, Variable
Estas dos instrucciones serían equivalentes, si Variable está, por ejemplo, en la localidad 0 de
memoria. En la forma primitiva del lenguaje de máquina, como el primer ejemplo, se tiene que
indicar “mover a AH el contenido (indicado por los corchetes), de la localidad 0 de los datos (lo
de los datos es implícito). El lenguaje Ensamblador, sin embargo, nos permite la abstracción del
uso de variables, pero como una variable tiene una localidad determinada en memoria, para el
procesador funciona igual. La única diferencia consiste en que el programador no tiene que
preocuparse por la dirección, ese manejo lo hace automáticamente el Ensamblador.
Modo indirecto
Se usan los registros SI, DI como apuntadores
El operando indica una localidad de memoria, cuya dirección (sólo la parte desplazamiento) está
en SI o DI.
Es más lento que los anteriores, pues tiene que “calcular” la localidad
Ejemplos:
MOV AL, [SI]
MOV BL, ES:[SI] ; Aquí se dice que se usa un “segment override”, donde se indica que en vez de
usar el segmento de datos por defecto, se use en su lugar como referencia el segmento extra.
Modo indexado de base
Formato:
[
BX o BP
+ SI o DI (opcionales)
+ constante (opcional)
]
BX o BP indica una localidad base de la memoria
A partir de BX o BP, se puede tener un desplazamiento variable y uno constante
La diferencia es el segmento sobre el que trabajan por defecto:
BX por defecto en el segmento de datos
BP por defecto en el segmento de pila.
Ejemplos:
MOV AX, [BX]
MOV DX, [BX+2]
MOV CX, [BX+DI]
MOV DL, [BX+SI+3]