El Nivel ISA ll

Anuncio
El Nivel ISA
Conjuntos de instrucciones:
Características Generales
Que es un Conjunto de Instrucciones?
• Colección completa de instrucciones
comprendida por un procesador
• Lenguaje de máquina
• Binario
• Usualmete es representado en lenguaje
ensamblador
Elementos de una Instrucción
• Código de operación (Op code)
—Hacer esto…
• Referencia a operandos fuente
—A esto…
• Referencia a operando resultado
—Pon la respuesta aquí…
• Referencia a la siguiente instrucción
—Cuando lo termines, sigues con esto otro...
Diagrama de Estados del ciclo de Instrucción
Representación de Instrucciones
• En código de máquina cada instrucción
tiene una representación binaria única
• Para consumo humano (programadores)
de usa una representación simbólica
—ej. ADD, SUB, LOAD
• Los operandos se representan asi:
-ADD A,B
Formato de Instrucción Sencillo
Tipos de Instrucciones
• Procesamiento de datos
• Almacenamiento de datos(main memory)
• Movimiento de datos (I/O)
• Control de flujo de Programa
Número de direcciones (a)
• 3 direcciones
—Operando 1, Operando 2, Resultado
—a = b + c;
—Puede haber una cuarta – prox. instrución
(usually implicit)
—No es común
—Necesita palabras muy largas para contener
toda la información
Número de direcciones(b)
• 2 direcciones
—Una dirección actúa como operando y
resultado
a=a+b
—Reduce el largo de la instrución
—Requiere algún trabajo adicional
– Temporary storage to hold some results
– Es necesario almacenar temporalmente algunos
resultados
Número de direcciones (c)
• 1 dirección
—Segunda dirección implicita
—Usualmente es un registro (acumulador)
—Comúnmente usado en máquinas tempranas
Número de direcciones (d)
• 0 (cero) direcciones
—Todas las direcciones son implicitas
—Usa una pila
—ej. push a
—
push b
—
add
—
pop c
—c = a + b
Cuantas direcciones?
• Mas direcciones
—Instrucciones mas complejas (poderosas?)
Mas registros
– Operaciones entre registros son mas rapidas
—Menos instrucciones por programa
• Menos direcciones
—Instrucciones menos complejas (poderosas?)
Mas instrucciones por programa
—Búsqueda/ejecución de instrucciones mas
rápida
Decisiones de diseño (1)
• Repertorio
—Cuantas?
—Que pueden hacer?
—Cuan complejas serán?
• Tipos de datos
• Formatos de instrucción
—Largo del opcode
—Numero de direcciones
Decisiones de diseño (2)
• Registros
—Número de registros disponibles en el CPU
—Que operaciones pueden ser efectuadas por
los registros?
• Modos de direccionamiento (después…)
• RISC v CISC
Tipos de Operando
• Direcciones
• Numeros
—Entero/Punto flotante
—Caracteres
—ASCII etc.
• Datos Lógicos
—Bits o Banderas
Specific Data Types
•
•
•
•
•
•
General - arbitrary binary contents
Integer - single binary value
Ordinal - unsigned integer
Unpacked BCD - One digit per byte
Packed BCD - 2 BCD digits per byte
Near Pointer - 32 bit offset within
segment
• Bit field
• Byte String
• Floating Point
Tipos de Operación
•
•
•
•
•
•
•
Transferencia de datos:
Aritmeticas:
Lógicas:
Conversión
Entrada / Salida
Control del Sistema
Transferencia de Control
Mov
Add
And
Num
In, Read
Trap
Jump, Call
Conjuntos de Instrucciones
Modos de Direccionamiento y
formatos de instrucción
Modos de Direccionamiento
•
•
•
•
•
•
•
Inmediato
Directo
Indirecto
Registro
Registro Indirecto
Desplazamiento (Indexado)
Pila
Direccionamiento Inmediato
Opcode Operando
• El operando es parte de la instrucción
• El operando ocupa el campo de dirección
• ej. ADD #5
— Suma 5 al contenido del acumulador
— 5 es operando
• No hay referencia a memoria para buscar el dato
• Rápido
• Rango limitado
Direccionamiento Directo
• El campo de dirección contiene la
dirección del operando
• Dirección efectiva (EA) = Campo de
dirección (A)
• e.g. ADD 32
—Suma el contenido de la celda 32 con el
acumulador
—Busca el operando en la posicion 32
• Referencia única a memoria
• No requiere calculos adicionales para
determinar la dirección
• Espacio de direccionamiento limitado
Direccionamiento Directo
Instrucción
Opcode
Dirección A
Memoria
Operando
Direccionamiento Indirecto (1)
• El operando se encuentra en una celda de
de memoria apuntada por el contenido de
la posición apuntada por el campo de
dirección
• EA = (A)
—Buscar en A, Encontrar la dirección (A) y
buscar el operando
• e.g. ADD (A)
—Add el contenido de la celda de memoria
apuntada por el contenido de A con el
acumulador
Direccionamiento Indirecto (2)
• Mayor espacio de direccionamiento
• 2n donde n = ancho de la palabra
• Puede ser anidada, multinivel, en cascada
—ej. EA = (((A)))
• Multiples accesos a memoria para
encontrar el operando
• >>>Lento
Direccionamiento Indirecto
Instruction
Opcode
Address A
Memory
Pointer to operand
Operand
Direccionamiento por Registro (1)
• Es en terminos generales, directo
• El operando esta en un registro
referenciado en el campo de dirección
• EA = R
• Número de registros limitado
• Se necesitan campos de dirección mas
pequeños
—Instrucciones mas cortas
—Búsquedas de direcciones mas rápidas
Direccionamiento por Registro(2)
•
•
•
•
No necesita acceder a memoria
Ejecución mas rápida
Espacio de direcciones muy limitado
Multiples registros mejoran el rendimiento
Direccionamiento por Registro
Instruction
Opcode
Register Address R
Registers
Operand
Direccionamiento Indirecto por Registro
• Direccionamiento Indirecto
• EA = (R)
• El operando está en la posición de
memoria apuntada por el contenido del
registro R
• Amplio espacio de direcciones (2n)
• Requiere un solo acceso a memoria para
leer el operando
Direccionamiento Indirecto por Registro
Instruction
Opcode
Register Address R
Memory
Registers
Pointer to Operand
Operand
Direccionamiento por desplazamiento
• EA = A + (R)
• El campo de dirección contiene dos
valores:
—A = valor base
—R = registro que contiene el desplazamiento
—o vice versa
Direccionamiento por desplazamiento
Instruction
Opcode Register R Address A
Memory
Registers
Pointer to Operand
+
Operand
Direccionamiento Indexado
•
•
•
•
A = base
R = desplazamiento (autoincrementado)
EA = A + R
Eficiente direccionando arreglos
—EA = A + R
—R++
Direccionamiento de pila
• El operando está (implicitamente) en el
tope de la pila
Ej:
—ADD: Saca dos elementos del tope de la pila
y coloca su suma
Formatos de Instrución
• Distribución de los bits en una instrucción
• Incluye el opcode
• Incluye (implicita o explicitamente) los
operandos
• Generalmente hay mas de un formato de
instrucción en un conjunto de
instrucciones
Longitud de Instrucción
• Afectada por y afecta a:
—Tamaño de la Memoria
—Organización de la memoria
—Estructura del Bus
—Complejidad del CPU
—Velocidad del CPU
• Compromiso entre disponer de un
repertorio de instrucciones poderoso y
ahorrar espacio
Asignación de Bits
Factores:
• # de Modos de direccionamiento
• Numero of operandos
• # de Registos
• # de conjuntos de registros
• Rango de direcciones
• Granularidad de las direcciones (palabras
vs bytes)
Diagrama de Estados del ciclo de Instrucción
Descargar