Nivel ISA Nivel de Arquitectura del Conjunto de Instrucciones (Macro-arquitectura)
Nivel de Arquitectura Nivel 6
Nivel de lenguaje orientado hacia problemas Traducción (compilador)
Nivel 5
Nivel de lenguaje ensamblador Traducción (ensamblador)
Nivel 4
Nivel de sistema operativo Interpretación parcial (sistema operativo)
Nivel 3
Nivel de arquitectura de conjunto de instrucciones Interpretación (microprograma) o ejecución directa
Nivel 2
Nivel de micro arquitectura Hardware
Nivel 1 Nivel 0
Nivel de lógica digital Nivel de dispositivos (diseño de transistores)
Conjunto de Instrucciones
Conjunto de instrucciones
Ej: Conjunto de instrucciones (PIC16F84) Etiqueta
Comando (opcode)
START:
MOVLW
Operando(s) 0xF2
Comentarios ;Load F2H in W
• El PIC16F84 tiene 35 instrucciones o comandos (RISC) • Existen 3 subconjuntos: – Instrucciones orientadas a los registros o bytes – Instrucciones orientadas a los bits – Operaciones con literales y de control
Nivel ISA Software
Nivel ISA
Hardware B
A
6
ULA
N Z
Almacén de control 512x36 bits (microprograma)
Teoría vs Practica Nivel ISA
Teoría Suma y multiplicación en un ciclo Ramificación compleja
Diseñador del compilador
ULA con 35 funciones Memoria, direcciones primos, superrápidas
Diseñador de Hardware
REG1 REG2 Registros de control de memoria
Señales de control de Memoria (rd, wr, fetch)
MAR
Decodificador
MPC
MDR
9
PC 8
Almacén de control 1024x36 bits (microprograma)
MBR
BUS C
SP LV
8
CPP JMPC
TOC OPC
Bit Alto
BUS B
JAMN JAMZ
H Flip-Flop (1bis)
BUS A B
A
Control Control
ULA
6 2
Desplazador
N Z
Palabra de Control
Ej. Mejorar el Mic1 (en la práctica)
Ej. Nuevo diseño de hardware (Mic2)
Preguntas del cliente al ofrecer el nuevo diseño • ¿La nueva Mic2 es compatible con la Mic1? • ¿Puedo cargar mi programas anteriores? • ¿Tendré que hacer alguna modificación a los programas?
Mantener compatibilidad hacia atrás • Mantener el nivel ISA similar o al menos hacerlo compatible con el modelo anterior
Diseñadores bajo presión
Nivel ISA • Conjunto de instrucciones • Como interfaz entre el hardware y el software, debe complacer a los diseñadores de hardware (fácil de implementar) y software (fácil generación de código) Conjunto de Instrucciones if(var1>0) … else …
Generalidades del Nivel ISA • El nivel ISA es lo que produce un compilador (antes se codificaba a mano y en algunas semanas también) • Modelo de memoria 0x00 0x00 Byte Byte 0x01 0x01 Byte Byte • Registros – Visibilidad – Especiales (PC y SP) – Generales
• Instrucciones – – – –
Memoria X registros Aritméticas Comparación Booleanas
Mnemónico BIPUSH byte DUP GOTO distancia IADD IAND IFEQ distancia IFLT distancia IF_ICMPEQ distancia IINC numvar const ILOAD numvar INVOKEVIRTUAL despl IOR IRETURN ISTORE numvar ISUB LDC_W indice NOP POP SWAP WIDE
Significado Almacenar en la pila Copiar la palabra en el tope de la pila Ramificación incondicional Sacar dos palabras de la pila; meter su suma Sacar dos palabras de la pila; meter su AND booleano Sacar palabra de la pila y saltar sí es cero Sacar palabra de la pila y saltar sí es menor que cero Sacar dos palabras de la pila; saltar sí son iguales Sumar una constante a una variable local Almacenar variable local en pila Invocar un método Sacar dos palabras de la pila; almacenar su OR booleano Regresar de método con valor entero Sacar palabra de la pila y guardar en variable local Sacar dos palabras de la pila; almacenar su diferencia Mater en pila constante de la reserva de constantes No hacer nada Quitar palabra del tope de la pila Intercambiar las dos palabras en el tope de la pila Prefijo de instrucciones; la siguiente instrucción tiene un índice de 16 bits