[ARQUITECTURA DE COMPUTADORES ]Nivel de ISA
Febrero 2008
Ing. Jorge Irey
Universidad Nacional del CallaoEscuela de Post GradoMaestría en Ingeniería de Sistemas
Propiedades
El código en el nivel ISA es lo que el compilador produce.El nivel ISA se define por : modelo de memoria, registros disponibles, Tipos de dato, instrucciones, etc.Dos modos de operación:
KernelUsuario
Modelos de Memoria
La memoria se divide en celdas que tienen direcciones consecutivas.El tamaño de celda más común es 8 bitsMuchas arquitecturas exigen que las palabras estén alineadas en la memoria eficienciaeficiencia
Ejemplo : Pentium II
Usa direcciones físicas de36 bits, pero los 3 bits deOrden bajo siempre son CERO
Todas las direcciones siempreson múltiplos de 8
Registros
Todas las computadoras tienen algunos registros visibles en el nivel ISA.Función : controlar la ejecución del programa, almacenar resultados temporales , etc.Los registros visibles en el nivel ISA siempre son visibles en el nivel de microarquitectura porque ahí es donde se implementan.
Propósito General
Propósito Especial Ejemplo: PC y SP
Guardan variables locales y resultados intermedios de cálculos.RISC 32 registros
… Registros (2)
Existen registros de propósito especial que sólo se pueden ver en modo Kernel controlan caché, memoria, dispositivos de E/S y demás Hw de la máquina. Registro de banderas o Palabra de estado del Programa (PSWPSW) contiene bits que la CPU necesitaCódigos de condición : se ajustan en cada ciclo de la ALU y reflejan el resultado de la operación más reciente:
Ejemplo de Códigos de Condición
La instrucción CMP resta 2 operandos y establece el código de condición con base en la diferencia.Si los operandos son iguales, la diferencia será CERO y se encenderá el bit de código de condición Z de la PSWUna instrucción BEQ ( ramificar si son iguales) subsiguiente, probará el bit Z y tomará la rama si está encendido.
Generalidades del nivel ISA en Pentium II
IA-32 : 80386, 80486, Pentium , Pentium Pro, Pentium II, Celeron y Xeon3 modos de Operación:
Modo Real se comporta como un 8088 Modo 8086 Virtual Modo Protegido Actúa como un Pentium real. Tiene 4 niveles controlados por la PSW:
Nivel 0 = modo kernel Nivel 3 = programas de usuarios Nivel 1 y 2 = casi no se usan
Maneja little endianDirecciona 232
Generalidades del nivel ISA en UltraSparc II
Sparc original 32 bits UltraSparc 64 bits Direcciona 264
Por defecto es big endian pero cambiando un flag en la PSW se cambia a little endian. Dos grupos de registros:
32 para propósito general (64 bits) 32 para punto flotante
Usa una “ventana de registros” Arquitectura de Carga/almacenamiento
Generalidades del nivel ISA en JVM
Heap Garbage Collector La JVM no tiene registros de propósito general es una máquina de pila pura.Problema principal : número de referencias a la memoria
Tipos de datos no numéricos
ASCII ( 7 bits ) y UNICODE (16 bits )Boolean : se requiere 1 bit, pero por razones de implementación se emplea 1 byte. Apuntador : dirección de máquina.
Criterios para el formato de instrucciones
La eficiencia de un ISA depende en gran medida de la tecnología con que se va a implementar la computadora.Espacio en el formato de instrucciones para expresar todas las operaciones deseadasNúmero de bits en el campo de dirección
Expansión de Códigos de Operación
Operación 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 00 0 0 0 01 0 0 0 12 0 0 1 03 0 0 1 14 0 1 0 05 0 1 0 16 0 1 1 07 0 1 1 18 1 0 0 09 1 0 0 110 1 0 1 011 1 0 1 112 1 1 0 013 1 1 0 114 1 1 1 0
15 instrucciones de 3 direcciones
Cód. OP DIR 1 DIR 2 DIR 3
Expansión de Códigos de Operación (2)
14 instrucciones de 2 direcciones
Cód. OP DIR 2 DIR 3
Operación 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 015 1 1 1 1 0 0 0 016 1 1 1 1 0 0 0 117 1 1 1 1 0 0 1 018 1 1 1 1 0 0 1 119 1 1 1 1 0 1 0 020 1 1 1 1 0 1 0 121 1 1 1 1 0 1 1 022 1 1 1 1 0 1 1 123 1 1 1 1 1 0 0 024 1 1 1 1 1 0 0 125 1 1 1 1 1 0 1 026 1 1 1 1 1 0 1 127 1 1 1 1 1 1 0 028 1 1 1 1 1 1 0 1
Expansión de Códigos de Operación (3)
31 instrucciones de 1 direcciónCód. OP DIR 1
Operación 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 029 1 1 1 1 1 1 1 0 0 0 0 030 1 1 1 1 1 1 1 0 0 0 0 131 1 1 1 1 1 1 1 0 0 0 1 032 1 1 1 1 1 1 1 0 0 0 1 133 1 1 1 1 1 1 1 0 0 1 0 034 1 1 1 1 1 1 1 0 0 1 0 135 1 1 1 1 1 1 1 0 0 1 1 036 1 1 1 1 1 1 1 0 0 1 1 137 1 1 1 1 1 1 1 0 1 0 0 038 1 1 1 1 1 1 1 0 1 0 0 139 1 1 1 1 1 1 1 0 1 0 1 040 1 1 1 1 1 1 1 0 1 0 1 141 1 1 1 1 1 1 1 0 1 1 0 042 1 1 1 1 1 1 1 0 1 1 0 143 1 1 1 1 1 1 1 0 1 1 1 044 1 1 1 1 1 1 1 0 1 1 1 145 1 1 1 1 1 1 1 1 0 0 0 046 1 1 1 1 1 1 1 1 0 0 0 147 1 1 1 1 1 1 1 1 0 0 1 048 1 1 1 1 1 1 1 1 0 0 1 149 1 1 1 1 1 1 1 1 0 1 0 050 1 1 1 1 1 1 1 1 0 1 0 151 1 1 1 1 1 1 1 1 0 1 1 052 1 1 1 1 1 1 1 1 0 1 1 153 1 1 1 1 1 1 1 1 1 0 0 054 1 1 1 1 1 1 1 1 1 0 0 155 1 1 1 1 1 1 1 1 1 0 1 056 1 1 1 1 1 1 1 1 1 0 1 157 1 1 1 1 1 1 1 1 1 1 0 058 1 1 1 1 1 1 1 1 1 1 0 159 1 1 1 1 1 1 1 1 1 1 1 0
Expansión de Códigos de Operación (4)
16 instrucciones
Cód. OP
Operación 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 060 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 061 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 162 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 063 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 164 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 065 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 166 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 067 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 168 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 069 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 170 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 071 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 172 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 073 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 174 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 075 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
Direccionamiento
Parte de los bits de un programa consisten en especificar de donde vienen los datos y que operación se efectuará con ellos. Una instrucción ADD de 3 direcciones :
Una instrucción ADD de 2 direcciones :
¿ Una instrucción ADD de 1 dirección ? ¿ Una instrucción ADD de 0 direcciones ? Tener en cuenta que ...
Direccionamiento FIJO en la compilaciónDireccionamiento Dinámico modo de direccionamiento
Direccionamiento : Inmediato
No requiere acceso a memoria para sumistrar el operando. Desventaja : sólo permite suministrar constantes.
Operando Inmediato
Direccionamiento : Directo
Se especifica un operando en memoria simplemente indicando su dirección. Desventaja : la instrucción siempre accederá a la misma dirección de memoria sólo sirve para variables globales cuya dirección se conoce al momento de compilación.
Direccionamiento : Por Registro
Similar al directo: se especifica un registro en lugar de una posición de memoria. Se conoce tambien como MODO DE REGISTRO
Direccionamiento : Indirecto por Registro
La dirección del operando está contenida en un registro se denomina “apuntador”
Direccionamiento : Ejemplo
Modo RegistroModo Inmediato
Modo Registro
Modo Indirecto por Registro
Modo Registro Modo Inmediato
Modo Registro
Direccionamiento : Indexado
Direcciona la memoria dando un registro (implícito o explícito) más una distancia constante.
Destino RegistroBase
Direccionamiento : Basado indexado
La dirección de memoria se calcula sumando dos registros más una constante (opcional)Un registro se llama BASEEl otro registro se llama INDICE.
Instrucciones de movimiento de datos
En computación ¿ MOVER = COPIAR ?Razones:
Asignar valores a variables. Ejemplo A = BPreparar los datos para un acceso eficiente
Operaciones diádicas
Combinan 2 operandos para producir un resultado.Operaciones AritméticasOperaciones Booleanas
Operaciones monádicas
Tienen 1 operando y producen un resultado.Operaciones para desplazar útil para multiplicar/dividir por potencias de 2Operaciones para rotarNegaciónIncremento
Comparaciones y ramificaciones condicionales
Probar los datos y alterar la secuencia de instrucciones según el resultadoComparar númerosComparar caracteres
Instrucciones de llamadas a procedimientos
Subrutinas y métodosDirección de retornoRecursiónUso de pilas.
Entrada / Salida
E/S programada con espera activa E/S controlada por interrupciones E/S de acceso directo a memoria (DMA)
Flujo de control secuencial y ramificaciones
La mayoría de instrucciones no altera el flujo de control.Después de cada instrucción el PC se incrementa en una cantidad equivalente a la longitud de la instrucción. Dijkstra (1968) escribe un artículo “El enunciado GOTO se considera perjudicial”
Procedimientos
Altera el flujo de control A diferencia de una ramificación, el procedimiento retorna el control al punto de invocación. Procedimientos “recursivosrecursivos”
Trampas
Especia de llamada a procedimiento automática iniciada por alguna condición causada por el programa. Casi siempre la condición es importante pero raras veces ocurre. El hardware o el microprograma detectan la condición.Trampa más común : división entre cero
Interrupciones
Son cambios en el flujo de control del programa causados por condiciones externas a él, generalmente por cuestiones de E/SAl igual que la trampa, el flujo se detiene y el control pasa al manejador de interupciones. Luego el control retorna al punto exacto donde se interrumpió.NOTA:
Las trampas son síncronas con el programaLas interrupciones son asíncronas con el programa