jin unidad5

49
[ARQUITECTURA DE COMPUTADORES ] Nivel de ISA Febrero 2008 Ing. Jorge Irey Universidad Nacional del Callao Escuela de Post Grado Maestría en Ingeniería de Sistemas

Upload: jingroup

Post on 24-Jul-2015

224 views

Category:

Documents


2 download

TRANSCRIPT

[ARQUITECTURA DE COMPUTADORES ]Nivel de ISA

Febrero 2008

Ing. Jorge Irey

Universidad Nacional del CallaoEscuela de Post GradoMaestría en Ingeniería de Sistemas

Introducción

GENERALIDADES

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

Tipos de datos numéricos

Entero : sin signo y con signo Punto flotante

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.

FORMATOS DE INSTRUCCIONES

Instrucciones

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

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

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.

Direccionamiento: de pila

Es muy útil emplear la notación polaca inversa

Direccionamiento: otros más

TIPOS DE INSTRUCCIONES

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.

Control de ciclos

Entrada / Salida

E/S programada con espera activa E/S controlada por interrupciones E/S de acceso directo a memoria (DMA)

FLUJO DE CONTROL

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”

Corrutinas

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

• Capitulo 5 – Tanenbaum

Lecturas sugeridas

Examen Final próximo Domingo