Download Instrucción - Bienvenidos al Departamento de Computación e
Document related concepts
no text concepts found
Transcript
Pontificia Universidad Católica de Chile Escuela de Ingeniería Departamento de Ciencia de la Computación [ Arquitectura de Computadores ] ORGANIZACIÓN DEL COMPUTADOR IIC 2342 Semestre 2005-2 Domingo Mery Präsentat ion D.Mery 1 Arquitectura de Computadores [ Índice ] 3.1. Máquina de von Neumann 3.2 Unidad de control 3.3 Fetch, decodificación, ejecución 3.4 Conjunto de instrucciones 3.5 Programación en assembler 3.6 Formatos de instrucción 3.7 Modos de direccionamiento 3.8 Mecanismos de subrutinas 3.9 E/S e interrupciones D.Mery 2 Arquitectura de Computadores Präsentat ion [ Índice ] 3.1. Máquina de von Neumann 3.2 Unidad de control 3.3 Fetch, decodificación, ejecución 3.4 Conjunto de instrucciones 3.5 Programación en assembler 3.6 Formatos de instrucción 3.7 Modos de direccionamiento 3.8 Mecanismos de subrutinas 3.9 E/S e interrupciones D.Mery 3 Arquitectura de Computadores Präsentat ion [ Organización ] Máquina von Neumann 1023 Ejemplo: : 867 ¿Cómo sumar el contenido de la posición 867 con el contenido de la posición 562 y almacenar el resultado en la posición 778? : 778 : 562 : 2 1 0 Memoria de 1024 8 D.Mery 4 Arquitectura de Computadores Präsentat ion [ Organización ] Máquina von Neumann 1023 Ejemplo: : 867 ¿Cómo sumar el contenido de la posición 867 con el contenido de la posición 562 y almacenar el resultado en la posición 778? : 778 + : 562 : 2 1 0 Memoria de 1024 8 D.Mery 5 Arquitectura de Computadores Präsentat ion [ Organización ] Máquina von Neumann 1023 Solución: : 867 1. Leer en la memoria la posición 867 : 778 : output 562 : 2 1 0 Decoder & Read/Write Memoria de 1024 8 Dirección 867 D.Mery 6 Read Arquitectura de Computadores Präsentat ion [ Organización ] Máquina von Neumann 1023 Solución: : 867 1. Leer en la memoria la posición 867 2. Almacenar lo leído en un registro externo : 778 : output 562 : 2 AC 1 0 Decoder & Read/Write Memoria de 1024 8 D.Mery 7 Arquitectura de Computadores Präsentat ion Máquina von Neumann [ Organización ] 1023 Solución: : 867 1. Leer en la memoria la posición 867 2. Almacenar lo leído en un registro externo 3. Leer en la memoria la posición 562 : 778 : output 562 : 2 AC 1 0 Decoder & Read/Write Memoria de 1024 8 Dirección 562 D.Mery 8 Read Arquitectura de Computadores Präsentat ion [ Organización ] Máquina von Neumann 1023 Solución: : 867 1. Leer en la memoria la posición 867 2. Almacenar lo leído en un registro externo 3. Leer en la memoria la posición 562 4. Sumar lo leído con el registro externo : 778 : output 562 sumador : 2 AC 1 0 Decoder & Read/Write Memoria de 1024 8 D.Mery 9 Arquitectura de Computadores Präsentat ion Máquina von Neumann [ Organización ] 1023 Solución: : 867 1. Leer en la memoria la posición 867 2. Almacenar lo leído en un registro externo 3. Leer en la memoria la posición 562 4. Sumar lo leído con el registro externo 5. Almacenar la suma en la posición 778 : input 778 : 562 sumador : 2 1 0 Decoder & Read/Write Memoria de 1024 8 Dirección 778 D.Mery 10 Write Arquitectura de Computadores Präsentat ion Máquina von Neumann [ Organización ] Solución general: 1023 Unidad de aritmética y lógica : 867 : 778 : 562 Unidad de control : 2 1 Programa 0 Decoder & Read/Write Memoria de 1024 8 D.Mery 11 Arquitectura de Computadores Präsentat ion Máquina von Neumann [ Organización ] Solución general: 1023 Unidad de aritmética y lógica : El programa le da instrucciones a la Unidad Central. Ejemplo: 867 : 778 : 562 00100001 110110011 significa leer en la memoria 110110011 y almacenar la lectura en el registro AC de la ALU. Unidad de control : 2 1 Programa 0 Decoder & Read/Write Memoria de 1024 8 D.Mery 12 Arquitectura de Computadores Präsentat ion Máquina von Neumann [ Organización ] Solución general: 1023 Unidad de aritmética y lógica : El programa le da instrucciones a la Unidad Central. Ejemplo: 867 : 778 : 562 00100001 110110011 significa leer en la memoria 110110011 y almacenar la lectura en el registro AC de la ALU. Unidad de control : 2 1 Programa 0 Decoder & Read/Write Memoria de 1024 8 D.Mery 13 Significa leer y almacenar en AC Arquitectura de Computadores Präsentat ion Máquina von Neumann [ Organización ] Solución general: 1023 Unidad de aritmética y lógica : El programa le da instrucciones a la Unidad Central. Ejemplo: 867 : 778 : 562 00100001 110110011 significa leer en la memoria 110110011 y almacenar la lectura en el registro AC de la ALU. Unidad de control : 2 1 Programa 0 Decoder & Read/Write Memoria de 1024 8 D.Mery 14 Significa lo que se debe leer: 110110011 = 867 Arquitectura de Computadores Präsentat ion Máquina von Neumann [ Organización ] Solución general: 1023 Unidad de aritmética y lógica : El programa le da instrucciones a la Unidad Central. Ejemplo: 867 : 778 : 562 00100001 110110011 significa leer en la memoria 110110011 y almacenar la lectura en el registro AC de la ALU. Unidad de control : 2 : 1 110110011 0 000100001 Decoder & Read/Write Memoria de 1024 8 D.Mery 15 Arquitectura de Computadores Präsentat ion [ Organización ] Máquina von Neumann Principios: 1. Los datos y las instrucciones se almacenan en una sola memoria de lectura-escritura. 2. Los contenidos de esta memoria se direccionan indicando su posición, sin considera el tipo del de dato contenido en la misma. 3. La ejecución se produce siguiendo una secuencia de instrucción tras instrucción (a no se que dicha secuencia se modifique explícitamente). D.Mery 16 Arquitectura de Computadores Präsentat ion [ Organización ] Máquina von Neumann Estructura D.Mery 17 Arquitectura de Computadores Präsentat ion [ Organización ] Detalles Máquina von Neumann • 1000 x 40 bit words – Binary number – 2 x 20 bit instructions Palabra número 01 39 Signo Palabra instrucción 0 Codop D.Mery 8 19 20 Dirección Codop 18 28 39 Dirección Arquitectura de Computadores Präsentat ion [ Organización ] Máquina von Neumann Detalles Palabra instrucción 0 Codop 8 19 Dirección • La parte codop (los primeros 8 bits) especifican cuál instrucción será ejecutada. • La parte de la dirección (los 12 bits restantes) especifican cuál de las 1000 posiciones de memoria está implicada en la instrucción. Esta parte es denominada X. D.Mery 19 Arquitectura de Computadores Präsentat ion [ Organización ] Máquina von Neumann Detalles • Set of registers (storage in CPU) – Memory Buffer Register (MBR) – Memory Address Register (MAR) – Instruction Register (IR) – Instruction Buffer Register (IBR) – Program Counter (PC) – Accumulator (AC) – Multiplier Quotient (MQ) D.Mery 20 Arquitectura de Computadores Präsentat ion [ Organización ] Máquina von Neumann Detalles de la estructura máquina von Neumann D.Mery 21 (CC) Arquitectura de Computadores Präsentat ion [ Organización ] Máquina von Neumann Detalles de la estructura MBR: Memory Buffer Register Contiene una palabra que debe ser almacenada en la memoria, o es usado para recibir una palabra procedente de la memoria. D.Mery 22 (CC) Arquitectura de Computadores Präsentat ion [ Organización ] Máquina von Neumann Detalles de la estructura MAR: Memory Adress Register Especifica la dirección en memoria de la palabra que va a ser escrita o leída en MBR. D.Mery 23 (CC) Arquitectura de Computadores Präsentat ion [ Organización ] Máquina von Neumann Detalles de la estructura IR: Instruction Register Contiene los 8 bits del código de operación de la instrucción que se va a ejecutar. D.Mery 24 (CC) Arquitectura de Computadores Präsentat ion [ Organización ] Máquina von Neumann Detalles de la estructura IBR: Instruction Buffer Register Empleado para almacenar temporalmente la instrucción contenida en la parte derecha de una palabra en memoria. D.Mery 25 (CC) Arquitectura de Computadores Präsentat ion [ Organización ] Máquina von Neumann Detalles de la estructura PC: Program Counter Contiene la dirección de la próxima pareja de instrucciones que van a ser captadas de la memoria. D.Mery 26 (CC) Arquitectura de Computadores Präsentat ion [ Organización ] Máquina von Neumann Detalles de la estructura AC y MQ: Accumulator y Multiplier Quotient Se emplean para almacenar operandos y resultados de operaciones de la ALU temporalmente. Por ejemplo, el resultado de multiplicar dos números de 40 bits es un número de 80 bits; los 40 bits más significativos se almacenan en AC y los menos significativos se almacenan en MQ. D.Mery 27 (CC) Arquitectura de Computadores Präsentat ion [ Organización ] Máquina von Neumann INSTRUCCIONES DE TRANSFERENCIA DE DATOS: • Se transfieren datos entre la memoria y los registros de la ALU o entre dos registros de la ALU. D.Mery Codop Instrucción Descripción 00001010 LOAD MQ Transferir el contenido del registro MQ a AC 00001001 LOAD MQ,M(X) Transferir el contenido de la posición de memoria X a MQ 00100001 STOR M(X) Transferir el contenido de AC a la posición de memoria X 00000001 LOAD M(X) Transferir M(X) a AC 00000010 LOAD –M(X) Transferir –M(X) a AC 00000100 LOAD |M(X)| Transferir |M(X)| a AC 28 Arquitectura de Computadores Präsentat ion [ Organización ] Máquina von Neumann INSTRUCCIONES DE SALTO INCONDICIONAL: • Normalmente, la unidad de control ejecuta instrucciones secuencialmente en la memoria. Las instrucciones de salto pueden cambiar este orden (ej. Operaciones repetitivas). D.Mery Codop Instrucción Descripción 00001101 JUMP M(X,8:19) Saltar a la instrucción indicada por la mitad izquierda de M(X) 00001110 JUMP M(X,28:39) Saltar a la instrucción indicada por la mitad derecha de M(X) 29 Arquitectura de Computadores Präsentat ion [ Organización ] Máquina von Neumann INSTRUCCIONES DE SALTO CONDICIONAL: • El salto depende de una condición, esto permite puntos de decisión. Codop Instrucción Descripción 00001111 JUMP +M(X,8:19) Si AC ≥ 0 saltar a la instrucción indicada por la mitad izquierda de M(X) 00001000 JUMP +M(X,28:39) Si AC ≥ 0 saltar a la instrucción indicada por la mitad derecha de M(X) D.Mery 30 Arquitectura de Computadores Präsentat ion [ Organización ] Máquina von Neumann INSTRUCCIONES DE ARITMÉTICA: • Son las operaciones realizadas por la ALU. D.Mery Codop Instrucción Descripción 00000101 ADD M(X) AC AC + M(X) 00000111 ADD |M(X)| AC AC + |M(X)| 00000110 SUB M(X) AC AC - M(X) 00001000 SUB |M(X)| AC AC - |M(X)| 00001011 MUL M(X) [AC][MQ] AC M(X) 00001100 DIV M(X) [AC][MQ] AC ÷ M(X) 00010100 LSH AC AC 2 00010101 RSH AC AC ÷ 2 31 Arquitectura de Computadores Präsentat ion [ Organización ] Máquina von Neumann INSTRUCCIONES DE ARITMÉTICA: • Son las operaciones realizadas por la ALU. Codop Instrucción Descripción 00000101 ADD M(X) AC AC + M(X) 00000111 ADD |M(X)| AC AC + |M(X)| SUB 00000110 AC por AC -hardware? M(X) ¿Cómo se M(X) implementan D.Mery 00001000 SUB |M(X)| AC AC - |M(X)| 00001011 MUL M(X) [AC][MQ] AC M(X) 00001100 DIV M(X) [AC][MQ] AC ÷ M(X) 00010100 LSH AC AC 2 00010101 RSH AC AC ÷ 2 32 Arquitectura de Computadores Präsentat ion Circuitos sincrónicos [ Sistemas Digitales ] shift register a la derecha = divisioón entre dos D CK D.Mery Q D Q D CK CK 33 Q D Q CK Arquitectura de Computadores Präsentat ion Circuitos sincrónicos [ Sistemas Digitales ] shift register a la izquierda = multiplicación por dos D CK D.Mery Q D Q D CK CK 34 Q D Q CK Arquitectura de Computadores Präsentat ion [ Organización ] Máquina von Neumann INSTRUCCIONES DE MODIFICACIÓN DE DIRECCIONES: • Permite que la ALU haga operaciones con las direcciones y las inserte en instrucciones almacenadas en memoria. Esto permite una considerable flexibilidad de direccionamiento en un programa. Codop Instrucción 00010010 STOR M(X,8:19) 00010011 D.Mery STOR M(X,28:39) Descripción Reemplazar el campo de dirección de la izquierda de M(X) por los 12 bits de la derecha de AC. Reemplazar el campo de dirección de la derecha de M(X) por los 12 bits de la derecha de AC. 35 Arquitectura de Computadores Präsentat ion [ Organización ] Máquina von Neumann Ejercicio: Escribir un programa que sume el número almacenado en la posición 867 más el número almacenado en la posición 562. El resultado de la suma (sin considerar acarreo) se debe almacenar en la posición 778. D.Mery 36 Arquitectura de Computadores Präsentat ion [ Organización ] Máquina von Neumann Ejercicio: Escribir un programa que sume el número almacenado en la posición 867 más el número almacenado en la posición 562. El resultado de la suma (sin considerar acarreo) se debe almacenar en la posición 778. LOAD M(867) ADD M(562) STOR M(778) D.Mery % transfiere el contenido de 867 a AC % AC AC + M(562) % transfiere AC a la memoria 778 37 Arquitectura de Computadores Präsentat ion [ Organización ] Máquina von Neumann Ejercicio: Escribir un programa que sume el número almacenado en la posición 867 más el número almacenado en la posición 562. El resultado de la suma (sin considerar acarreo) se debe almacenar en la posición 778. LOAD M(867) ADD M(562) STOR M(778) D.Mery % transfiere el contenido de 867 a AC % AC AC + M(562) % transfiere AC a la memoria 778 38 Arquitectura de Computadores Präsentat ion [ Organización ] Máquina von Neumann ¿Cómo se almacena el programa? LOAD M(867) ADD M(562) STOR M(778) D.Mery 00000001 001101100011 00000100 001000110010 00100001 001100001010 39 Arquitectura de Computadores Präsentat ion [ Organización ] Máquina von Neumann Ejercicio: Escribir un programa que divida el número almacenado en la posición 867 por 8. El resultado de la división (sin considerar el resto ni la parte fraccionaria) se debe almacenar en la posición 778. D.Mery 40 Arquitectura de Computadores Präsentat ion Máquina von Neumann [ Organización ] Ejercicio: Escribir un programa que divida el número almacenado en la posición 867 por 8. El resultado de la división (sin considerar el resto ni la parte fraccionaria) se debe almacenar en la posición 778. LOAD M(867) RSH RSH RSH STOR M(778) D.Mery % % % % % transfiere el contenido de divide el acumulador entre divide el acumulador entre divide el acumulador entre transfiere AC a la memoria 41 867 a AC dos dos dos 778 Arquitectura de Computadores Präsentat ion [ Organización ] Máquina von Neumann Ejercicio: Escribir un programa que compare el número almacenado en la posición 867 con el número almacenado en la posición 562. Si el primero es menor que el segundo copiar el contenido de la memoria 500 en la memoria 501, de lo contrario se almacena en 501 el contenido de 867 menos el contenido de 562. D.Mery 42 Arquitectura de Computadores Präsentat ion Máquina von Neumann [ Organización ] Ejercicio: Escribir un programa que compare el número almacenado en la posición 867 con el número almacenado en la posición 562. Si el primero es menor que el segundo copiar el contenido de la memoria 500 en la memoria 501, de lo contrario se almacena en 501 el contenido de 867 menos el contenido de 562. 1. 2. 3. 4. 5. LOAD M(867) SUB M(562) JUMP +M(3,28:39) LOAD M(500) STOR M(501) % % % % % transfiere el contenido de 867 a AC AC AC - M(562) salta si AC ≥ 0 (i.e. M(867)≥ M(562)) transfiere el contenido de 500 a AC transfiere AC a la memoria 501 En la posición derecha de 3 debe estar almacenado 5, de esta manera la tercera instrucción salta a la dirección 5 si AC ≥ 0. D.Mery 43 Arquitectura de Computadores Präsentat ion [ Índice ] 3.1 Máquina de von Neumann 3.2 Unidad de control 3.3 Fetch, decodificación, ejecución 3.4 Conjunto de instrucciones 3.5 Programación en assembler 3.6 Formatos de instrucción 3.7 Modos de direccionamiento 3.8 Mecanismos de subrutinas 3.9 E/S e interrupciones D.Mery 44 Arquitectura de Computadores Präsentat ion Unidad de control [ Organización ] Computador periféricos Unidad Central de Proceso CPU Memoria Principal Sistema de interconexión Computador Entrada Salida Líneas de comunicación D.Mery 45 Arquitectura de Computadores Präsentat ion Unidad de control [ Organización ] Ejemplo: Bus de Direcciones Memoria Principal Memoria Secundaria D.Mery Periféricos CPU Bus de Control Bus de Datos 46 Arquitectura de Computadores Präsentat ion Unidad de control [ Organización ] Ejemplo: D.Mery 47 Arquitectura de Computadores Präsentat ion Unidad de control [ Organización ] CPU Computer Registros I/O System Bus Unidad Aritmética y Lógica CPU Interconexión Interna de la CPU Memory Unidad de Control D.Mery 48 Arquitectura de Computadores Präsentat ion Unidad de control [ Organización ] Unidad de Control CPU Lógica Secuencial ALU Internal Control Unit Bus Unidad de control de registros y decodificadores Registers Memoria de control D.Mery 49 Arquitectura de Computadores Präsentat ion Unidad de control [ Organización ] Unidad de Control CPU ALU Internal Bus Registers Lógica Secuencial controla el La unidad de control Control Unitfuncionamiento de la CPU: Unidad de control • controla las transferencias de de registros y datos desde hacia la CPU y decodificadores • controla la ALU. Memoria de control D.Mery 50 Arquitectura de Computadores Präsentat ion Unidad de control [ Organización ] Función de la unidad de control: 1. Para cada instrucción hay un único código que ejecutará esa instrucción. 2. Acepta la instrucción y genera las señales de control necesarias para que la instrucción se ejecute. D.Mery 51 Arquitectura de Computadores Präsentat ion Unidad de control [ Organización ] Función de la unidad de control: 1. Para cada instrucción hay un único código que ejecutará esa instrucción. codop D.Mery decoder 2. Acepta la instrucción y genera las señales de control necesarias para que la instrucción se ejecute. 52 Se activa sólo una salida Arquitectura de Computadores Präsentat ion Unidad de control [ Organización ] Componentes del computador: D.Mery 53 Arquitectura de Computadores Präsentat ion Unidad de control [ Organización ] Tareas de la CPU: 1. Captar instrucción: la CPU lee una instrucción de la memoria. 2. Interpretar instrucción: la instrucción se decodifica para determinar qué acción es necesaria. 3. Captar datos: la ejecución de una instrucción puede exigir leer datos de la memoria o de un módulo I/O. 4. Procesar datos: en la ejecución se puede exigir llevar a cabo alguna operación aritmética o lógica con los datos. 5. Escribir datos: los resultados de la ejecución pueden exigir escribir datos en la memoria o en un módulo I/O. D.Mery 54 Arquitectura de Computadores Präsentat ion Unidad de control [ Organización ] Registros ALU Unidad de Control Bus de control Bus de datos Bus de direcciones Bus del sistema D.Mery 55 Arquitectura de Computadores Präsentat ion Unidad de control [ Organización ] Un procesador incluye registros visibles para el usuario y registros de control/estado. Registros visibles: • pueden referenciarse en las instrucciones de máquina. • pueden ser: 1. 2. 3. 4. Uso general Datos Direcciones Códigos de condición D.Mery 56 Arquitectura de Computadores Präsentat ion Unidad de control [ Organización ] ¿cuántos registros de propósito general? • • • D.Mery Óptimo entre 8 y 32 Si hay muy pocos registros entonces se necesitan demasiados accesos a memoria. Más registros no reducen considerablemente las referencias a memoria y hace la CPU más compleja. 57 Arquitectura de Computadores Präsentat ion Unidad de control [ Organización ] ¿De cuántos bits deben ser los registros? • Deben ser de un número suficiente tal que se puedan manejar las direcciones a memoria. • Además deben ser capaces de manejar una palabra completa. • A veces se combinan dos registros para conformar uno solo. D.Mery 58 Arquitectura de Computadores Präsentat ion Unidad de control [ Organización ] Ejemplos de organización de registros: D.Mery 59 Arquitectura de Computadores Präsentat ion Unidad de control [ Organización ] Un procesador incluye registros visibles para el usuario y registros de control/estado. Registros de control y estado: • se usan para controlar el funcionamiento de la CPU: 1. PC = program counter: contiene la dirección de la instrucción a captar 2. IR = instruction register: contiene la última instrucción captada 3. MAR = memory address register: contiene la dirección de una posición de memoria 4. MBR = memory buffer register: contiene la palabra de datos a escribir en memoria, o la palabra leída más recientemente D.Mery 60 Arquitectura de Computadores Präsentat ion Unidad de control [ Organización ] Un procesador incluye registros visibles para el usuario y registros de control/estado. Registros de control y estado: Adicionalmente se cuenta con PSW = program status word: • • • • • D.Mery Signo: contiene le bit de signo del resultado de última operación Cero: puesto a uno cuando el resultado es 0 Acarreo: puesto a uno si en la suma hay acarreo o en la resta hay un adeudo del bit más significativo Igual: puesto a uno si el el resultado de una comparación lógica es la igualdad Desbordamiento: Usado para indicar desbordamiento aritmético 61 Arquitectura de Computadores Präsentat ion Unidad de control [ Organización ] Un procesador incluye registros visibles para el usuario y registros de control/estado. Registros de control y estado: Adicionalmente se cuenta con PSW = program status word: (cont…) • • D.Mery Interrupciones: usado para permitir o inhabilitar interrupciones Supervisor: indica si la CPU funciona en modo supervisor o usuario. Únicamente en modo supervisor se pueden ejecutar ciertas instrucciones privilegiadas y se puede acceder a ciertas áreas de memoria 62 Arquitectura de Computadores Präsentat ion [ Índice ] 3.1 Máquina de von Neumann 3.2 Unidad de control 3.3 Fetch, decodificación, ejecución 3.4 Conjunto de instrucciones 3.5 Programación en assembler 3.6 Formatos de instrucción 3.7 Modos de direccionamiento 3.8 Mecanismos de subrutinas 3.9 E/S e interrupciones D.Mery 63 Arquitectura de Computadores Präsentat ion [ Organización ] Ciclos fetch, decode, exe 1. Recuperar la siguiente instrucción desde memoria (apuntada por el program counter) y luego incrementar el program counter. 2. Decodificar el patrón de bits en el registro de instrucción IR 3. Ejecutar la instrucción indicada en el registro de instrucción IR Ciclo de instrucción D.Mery 64 Arquitectura de Computadores Präsentat ion [ Organización ] Ciclos fetch, decode, exe Ciclo fetch (captación): FUNCION: Lleva la siguiente instrucción de la memoria a la CPU 1. El program counter tiene la dirección de la siguiente instrucción. 2. El procesador capta la instrucción de la memoria direccionada por el PC. 3. Se incremente PC en 1. 4. El código de la instrucción se carga en IR. D.Mery 65 Arquitectura de Computadores Präsentat ion [ Organización ] Ciclos fetch, decode, exe Ciclo decode (decodificación): FUNCION: Decodifica los bits presentes en IR 1. Interpreta el código de operación. D.Mery 66 Arquitectura de Computadores Präsentat ion [ Organización ] Ciclos fetch, decode, exe Ciclo execution (ejecución): FUNCION: Ejecuta la instrucción. • Procesador-memoria: transferencia CPU ↔ memoria • Procesador-I/O: transferencia CPU ↔ módulo I/O • Procesamiento de datos: operaciones aritméticas o lógicas • Control: cambio de secuencias (eje: JUMP), etc. • Combinación de las anteriores D.Mery 67 Arquitectura de Computadores Präsentat ion [ Organización ] Ciclos fetch, decode, exe 1. El PC contiene el valor 300. Se carga esta instrucción en IR (esto implica el uso de MAR y MBR) Ejemplo: D.Mery 68 Arquitectura de Computadores Präsentat ion [ Organización ] Ciclos fetch, decode, exe 2. Los primeros 4 bits de IR (“1”) indican que el acumulador AC se va a cargar con un dato de la memoria. Los restantes 12 bits especifican la dirección (es decir “940”). Ejemplo: D.Mery 69 Arquitectura de Computadores Präsentat ion [ Organización ] Ciclos fetch, decode, exe 3. El registro de PC se incrementa y se capta la siguiente instrucción. Ejemplo: D.Mery 70 Arquitectura de Computadores Präsentat ion [ Organización ] Ciclos fetch, decode, exe 4. Los primeros 4 bits (“5”) indican que la instrucción es de suma entre el acumulador y una memoria. Los siguientes 12 bits indican la dirección de memoria (“941”). El contenido de AC y el de la posición 941 se suman y el resultado se almacena en AC. Ejemplo: D.Mery 71 Arquitectura de Computadores Präsentat ion [ Organización ] Ciclos fetch, decode, exe 5. El registro PC se incrementa en 1 y se capta la siguiente instrucción. Ejemplo: D.Mery 72 Arquitectura de Computadores Präsentat ion [ Organización ] Ciclos fetch, decode, exe 6. Los primeros 4 bits indican (“2”) que el acumulador se debe almacenar en una memoria. Los siguientes 12 bits indican la dirección de la memoria (“941”). El contenido de AC se almacena en la posición 941. Ejemplo: D.Mery 73 Arquitectura de Computadores Präsentat ion [ Organización ] Ciclos fetch, decode, exe ¿Cuántos ciclos de instrucción se necesitan? D.Mery 74 Arquitectura de Computadores Präsentat ion [ Organización ] Ciclos fetch, decode, exe ¿Cuántos ciclos de instrucción se necesitan? R/. Tres D.Mery 75 Arquitectura de Computadores Präsentat ion [ Índice ] 3.1 Máquina de von Neumann 3.2 Unidad de control 3.3 Fetch, decodificación, ejecución 3.4 Conjunto de instrucciones 3.5 Programación en assembler 3.6 Formatos de instrucción 3.7 Modos de direccionamiento 3.8 Mecanismos de subrutinas 3.9 E/S e interrupciones D.Mery 76 Arquitectura de Computadores Präsentat ion [ Organización ] Conjunto de instrucciones Las instrucciones de una CPU a otra difieren bastante, sin embargo en todas las CPU se puede encontrar el siguiente conjunto de instrucciones: 1.- Instrucciones de transferencias de datos 2.- Instrucciones aritméticas 3.- Instrucciones lógicas 4.- Control de flujo 5.- Entrada / Salida D.Mery 77 Arquitectura de Computadores [ Organización ] Conjunto de instrucciones 1.- Instrucciones de transferencias de datos D.Mery MOVE transferir registros en la CPU STORE registro → memoria LOAD memoria → registro CLEAR pone un registro en ceros SET pone un registro en unos PUSH introduce en la pila POP extrae en la pila 78 Arquitectura de Computadores [ Organización ] Conjunto de instrucciones 1.- Instrucciones de transferencias de datos Acciones: Transfiere datos de una posición a otra. Si se implica a la memoria: • determina la dirección de la memoria • inicia lectura/escritura en memoria D.Mery 79 Arquitectura de Computadores [ Organización ] Conjunto de instrucciones 2.- Instrucciones aritméticas D.Mery ADD suma dos operandos SUBSTRACT resta dos operandos MULTIPLY multiplica dos operandos DIVIDE divide dos operandos ABSOLUTE calcula valor absoluto del operando NEGATE cambia el signo del operando INCREMENTE sube en 1 el operando DECREMENTE baja en 1 el operando 80 Arquitectura de Computadores [ Organización ] Conjunto de instrucciones 2.- Instrucciones aritméticas Acciones: Puede implicar transferencias de datos, antes y/o después. Realiza la operación en la ALU Actualiza códigos e indicadores de condición. D.Mery 81 Arquitectura de Computadores [ Organización ] Conjunto de instrucciones 3.- Instrucciones lógicas D.Mery AND Y lógico bit a bit OR O lógico bit a bit NOT no lógico bit a bit XOR o exclusivo lógico bit a bit TEST evalúa condiciones COMPARE comparación de dos operandos SHIFT desplazamiento izquierda o derecha ROTATE desplazamiento cíclico 82 Arquitectura de Computadores [ Organización ] Conjunto de instrucciones 3.- Instrucciones lógicas Acciones: Puede implicar transferencias de datos, antes y/o después. Realiza la operación en la ALU Actualiza códigos e indicadores de condición. D.Mery 83 Arquitectura de Computadores [ Organización ] Conjunto de instrucciones 4.- Control de flujo JUMP salto incondicional JUMP CON salto condicional JUMP SUB salto a subrutina RETURN retorno de subrutina SKIP incrementa PC en 1 SKIP CON incremento condicional de PC en 1 HALT detiene la ejecución del programa WAIT detiene la ejecución hasta una condición NOP no ejecuta operación alguna D.Mery 84 Arquitectura de Computadores [ Organización ] Conjunto de instrucciones 4.- Control de flujo Acciones: Actualiza el contador de programa. En el caso de llamadas y retornos de subrutinas, gestiona la transferencia y enlace de parámetros. D.Mery 85 Arquitectura de Computadores [ Organización ] Conjunto de instrucciones 5.- Entrada / salida D.Mery INPUT transferir I/O → memoria o registro OUTPUT transferir memoria o registro → I/O START I/O inicializa dispositivo I/O TEST I/O transfiere información de estado de I/O 86 Arquitectura de Computadores [ Organización ] Conjunto de instrucciones 5.- Entrada / salida Acciones: Cursa una orden a un módulo de E/S En el caso de E/S asignada en memoria, determina la dirección de memoria correspondiente. D.Mery 87 Arquitectura de Computadores Instrucciones [ Organización ] Algunas instrucciones del Z-80 LD A, (dirección) LD A, valor LD (dirección), A LD B, A LD HL, valor carga el contenido de la memoria 'dirección' en el registro A carga 'valor' en el registro A carga el contenido del registro A en la memoria apuntada por 'dirección' carga el contenido del registro A en el registro B carga 'valor' en el registro HL NOTA: En el Z-80, los registros A y B son de un byte, el registro HL es de dos bytes y las direcciones son de 16 bits. D.Mery 88 Arquitectura de Computadores Präsentat ion Instrucciones [ Organización ] Algunas instrucciones del Z-80 NOTA: En el Z-80, los registros A y B son de un byte, el registro HL es de dos bytes y las direcciones son de 16 bits. ADD A, B SUB B ADD (HL) carga en A los 8 bits menos significativos de la suma A + B carga en A los 8 bits menos significativos de la resta A - B carga en A los 8 bits menos significativos de la suma de A con el contenido de la memoria que apunta el registro HL INC HL incrementa en 1 el registro HL INC A incrementa en 1 el registro A INC B incrementa en 1 el registro B DEC A decrementa en 1 el registro A DEC B decrementa en 1 el registro B DEC HL decrementa en 1 el registro HL JP NZ, label el programa salta a la dirección 'label' si la última operación aritmética no es cero D.Mery 89 Arquitectura de Computadores Präsentat ion Instrucciones [ Organización ] Examen de licenciatura 2004-2: Escriba un programa en ensamblador Z-80 que calcule el checksum de un vector de 256 bytes ubicado en las direcciones de memoria 0800h a 08FFh. El checksum calculado debe ser una palabra de 8 bits correspondiente al byte menos significativo de la suma de los 256 bytes del vector. El programa además debe comparar el checksum calculado con el checksum verdadero que se encuentra almacenado en la dirección 0900h. Si ambos valores son iguales, se debe escribir el byte 00h en la dirección de memoria 0A00h. Si ambos valores son distintos, se debe escribir en la dirección de memoria 0A00h los 8 bits menos significativos de la diferencia 'checksum verdadero menos checksum calculado'. D.Mery 90 Arquitectura de Computadores Präsentat ion Instrucciones [ Organización ] Solución LOOP D.Mery LD HL,0800H LD A,00H LD B,A ADD (HL) INC HL DEC B JP NZ,LOOP LD B,A LD A,(0900H) SUB B LD (0A00H),A 91 Arquitectura de Computadores Präsentat ion [ Índice ] 3.1 Máquina de von Neumann 3.2 Unidad de control 3.3 Fetch, decodificación, ejecución 3.4 Conjunto de instrucciones 3.5 Programación en assembler 3.6 Formatos de instrucción 3.7 Modos de direccionamiento 3.8 Mecanismos de subrutinas 3.9 E/S e interrupciones D.Mery 92 Arquitectura de Computadores Präsentat ion [ Organización ] Modos de direccionamiento Una instrucción tiene “operandos”: Ej: ADD A,(940) %( A = A + (940)) Los operandos son A y el contenido de 940. D.Mery 93 Arquitectura de Computadores Präsentat ion [ Organización ] Modos de direccionamiento Una instrucción tiene “operandos”: Ej: ADD A,(940) %( A = A + (940)) Los operandos son A y el contenido de 940. ¿Cómo se pueden referenciar los operandos? R/. Con los modos de direccionamiento. D.Mery 94 Arquitectura de Computadores Präsentat ion [ Organización ] Modos de direccionamiento • Instrucción Instrucción Opcode D.Mery Número (N) 95 Arquitectura de Computadores Präsentat ion [ Organización ] 1. 2. 3. 4. 5. 6. D.Mery Modos de direccionamiento Inmediato Directo (o absoluto) Indirecto Registro Indirecto con registro Desplazamiento (Indexado) 96 Arquitectura de Computadores Präsentat ion [ Organización ] Modos de direccionamiento • 1. Inmediato Instruction Opcode D.Mery Operand 97 Arquitectura de Computadores Präsentat ion [ Organización ] Modos de direccionamiento • 1. Inmediato • Operando es parte de la instrucción • Operando = N • Ej: ADD 5 – Suma 5 al acumulador – 5 es un operando • No hay referencia adicional a memoria • Rápido • Rango limitado D.Mery 98 Arquitectura de Computadores Präsentat ion [ Organización ] Modos de direccionamiento • 2. Directo (o absoluto) Instruction Opcode Address A Memory Operand D.Mery 99 Arquitectura de Computadores Präsentat ion [ Organización ] Modos de direccionamiento • 2. Directo (o absoluto) • El operando está en la dirección referenciada por N • Operando = (N) • Ej: ADD (941) %A = A + (941) • Hay sólo un acceso a la memoria D.Mery 100 Arquitectura de Computadores Präsentat ion [ Organización ] Modos de direccionamiento • 3. Indirecto Instruction Opcode Address A Memory Pointer to operand Operand D.Mery 101 Arquitectura de Computadores Präsentat ion [ Organización ] Modos de direccionamiento • 3. Indirecto • Operando está en la memoria que direcciona la memoria direccionada por N • Operando = ((N)) • Existe acceso múltiple a la memoria para encontrar el operando • Este direccionamiento es muy lento D.Mery 102 Arquitectura de Computadores Präsentat ion [ Organización ] Modos de direccionamiento • 4. Registro Instruction Opcode Register Address R Registers Operand D.Mery 103 Arquitectura de Computadores Präsentat ion [ Organización ] Modos de direccionamiento • 4. Registro • • • • • • • D.Mery El operando es un registro de la CPU Operando = Registro indicado por N, RN Número limitado de registros Instrucción rápida Instrucción corta No acceso a memoria Espacio de direcciones limitado 104 Arquitectura de Computadores Präsentat ion [ Organización ] Modos de direccionamiento • 5. Indirecto con registro Instruction Opcode Register Address R Memory Registers Operand Pointer to Operand D.Mery 105 Arquitectura de Computadores Präsentat ion [ Organización ] Modos de direccionamiento • 5. Indirecto con registro • El operando está en la memoria direccionada por un registro. • Operando = (RN) • Hay un acceso menos a memoria que en direccionamiento indirecto D.Mery 106 Arquitectura de Computadores Präsentat ion Modos de direccionamiento [ Organización ] • 6. Desplazamiento Instruction Opcode Register R Address A Memory Registers Pointer to Operand D.Mery + 107 Operand Arquitectura de Computadores Präsentat ion [ Organización ] Modos de direccionamiento • 6. Desplazamiento • El número N de la instrucción se parte en 2: una parte N1 indica un registro y otra indica una dirección N2 • Operando = (RN1 + N2) D.Mery 108 Arquitectura de Computadores Präsentat ion [ Organización ] D.Mery Instrucciones 68000 109 Arquitectura de Computadores Präsentat ion Instrucciones 68000 [ Organización ] Formato de las instrucciones del 68000: Label Dirección nemotécnico[.S] operando1,[operando2] Instrucción Operandos Longitud de los operandos B = byte W = word L = large word D.Mery 110 Arquitectura de Computadores Präsentat ion Instrucciones 68000 [ Organización ] Formato de las instrucciones del 68000: Label nemotécnico[.S] INICIO MOVE.B operando1,[operando2] D3,D4 Copia el byte menos significativo de D3 en D4 D.Mery 111 Arquitectura de Computadores Präsentat ion Instrucciones 68000 [ Organización ] Formato de las instrucciones del 68000: Label nemotécnico[.S] INICIO MOVE.B operando1,[operando2] D3,D4 Copia el byte menos significativo de D3 en D4 WARNING: En el 68000 la sintaxis es al revés que otros Procesadores. Esta instrucción significa que Datos de D3 se copian en D4 y NO VICEVERSA!! D.Mery 112 Arquitectura de Computadores Präsentat ion Instrucciones 68000 [ Organización ] Formato de las instrucciones del 68000: Label nemotécnico[.S] operando1,[operando2] Para usar números: % $ binario hexagesimal Ejemplo: D.Mery ADD.W %000000001000111110001,D2 MOVE.L #$18,D6 113 Arquitectura de Computadores Präsentat ion Instrucciones 68000 [ Organización ] LA MEMORIA La memoria principal de este computador está formada por celdas de un byte (8 bits), que constituyen la unidad básica de lectura o escritura, identificándose mediante una dirección. Los procesos de lectura y escritura pueden realizarse con varias celdas consecutivas simultáneamente, debiendo indicar el procesador a la memoria principal dos parámetros, la dirección de la primera celda de memoria y la longitud de la información a la que se desea acceder. Siendo esta longitud de: [B] [W] [L] D.Mery un byte dos bytes (una palabra) o cuatro bytes (palabra larga). 114 Arquitectura de Computadores Präsentat ion Instrucciones 68000 [ Organización ] LA MEMORIA 8 bits 500 B W 501 L 502 503 504 D.Mery 115 Arquitectura de Computadores Präsentat ion Instrucciones 68000 [ Organización ] LA MEMORIA (cont.) El tamaño máximo de la memoria viene determinado por el número de bits de los registros de direcciones que tiene el procesador, siendo en el caso del Motorola 68000 de 32 bits pero, debido a limitaciones en el montaje sólo pueden utilizarse 24 como máximo, desde 0 hasta FFFFFF . El procesador puede leer y escribir información de diferentes tamaños, existiendo una norma para almacenar las palabras (W) y las palabras largas (L), y siendo esta la de comenzar por el byte más significativo. Existen 7 registros de direcciones y son: A0, A1, A2, A3, A4, A5 y A6, siendo éstos de 32 bits aunque sólo pudiendose utilizar 24 bits para direccionar como antes se ha mencionado. D.Mery 116 Arquitectura de Computadores Präsentat ion Instrucciones 68000 [ Organización ] LA MEMORIA 500 8 bits 8 bits 8 bits 0F 09 08 A4 34 501 502 AF 503 C0 504 Almacenamiento de $0F en 500 (Byte) D.Mery Almacenamiento de $09A4 en 500 (Word) 117 Almacenamiento de $0834AFC0 en 500 (Large) Arquitectura de Computadores Präsentat ion Instrucciones 68000 [ Organización ] REGISTROS DE DATOS El Motorola 68000 consta de 8 registros de datos, que son D0, D1, D2, D3, D4, D5, D6 y D7. Cada uno consta de 32 bits. En muchas instrucciones existe la posibilidad de especificar el tamaño del dato, indicándose este mediante el sufijo S (B, W y L), que va añadido al nemotécnico de la instrucción. La forma en que se almacenan los datos en los registros, viene dada por su longitud, ya que como ésta es variable, irán ocupándolos de izquierda a derecha empezando por el bit menos significativo del registro. D.Mery 118 Arquitectura de Computadores Präsentat ion Instrucciones 68000 [ Organización ] MODOS DE DIRECCIONAMIENTO Existen cuatro modos de direccionamiento: 1.- Direccionamiento inmediato: almacena el operando precedido del símbolo # en el registro indicado. Ejemplo: MOVE.L #$18,D6 Significa: D6.L $18 Para recordar: % $ D.Mery 119 binario hexagesimal Arquitectura de Computadores Präsentat ion Instrucciones 68000 [ Organización ] MODOS DE DIRECCIONAMIENTO (cont...) 2.- Direccionamiento directo o absoluto: almacena el operando que está en la dirección de memoria especificada en el registro de datos indicado. Ejemplo: ADD.W %000000001000111110001,D2 suma la palabra que está en la dirección de memoria indicada, a D2. Significa: D2.W D2.W + (%000000001000111110001) Para recordar: % $ D.Mery 120 binario hexagesimal Arquitectura de Computadores Präsentat ion Instrucciones 68000 [ Organización ] MODOS DE DIRECCIONAMIENTO (cont...) 3.- Direccionamiento mediante registro: apunta a la dirección del registro donde está el dato. Ejemplo: MOVE.B D3,D4 copia el contenido del registro D3 (byte) a D4. Significa: D4.B D3.B D.Mery 121 Arquitectura de Computadores Präsentat ion Instrucciones 68000 [ Organización ] MODOS DE DIRECCIONAMIENTO (cont...) 4.- Direccionamiento relativo a registro: a) Direccionamiento mediante registro normal: se da la dirección del registro donde está la dirección del dato. El nombre del registro se escribe entre paréntesis. Ejemplo: ADD.B (A0),D6 suma el contenido de la posición de memoria (byte) cuya dirección está en A0 al registro D6, guardando el resultado en este último. Significa: D6.B D6.B + (A0) D.Mery 122 Arquitectura de Computadores Präsentat ion Instrucciones 68000 [ Organización ] MODOS DE DIRECCIONAMIENTO (cont...) 4.- Direccionamiento relativo a registro: b) Direccionamiento relativo a registro con posincremento: incrementa en una cantidad de memoria, según sea el tamaño del operando (1 para B, 2 para W y 4 para L), después de traer el contenido de la posición de memoria indicada por el registro de direcciones. Ejemplo: MOVE.W (A0)+,D0 copia en D0 el contenido de la posición de memoria direccionada por A0 y luego incrementa en 2 el contenido de A0. Significa: D.Mery D0.W (A0) A0 A0 + 2 123 Arquitectura de Computadores Präsentat ion Instrucciones 68000 [ Organización ] MODOS DE DIRECCIONAMIENTO (cont...) 4.- Direccionamiento relativo a registro: c) Direccionamiento relativo a registro con predecremento: Decrementa en una cantidad de memoria, según sea el tamaño del operando, el registro de direcciones y trae despues el contenido de la posición de memoria cuya dirección es el nuevo valor de dicho registro. Ejemplo: MOVE.B -(A0),D0 decrementa en uno el contenido del registro A0 y luego copia en D0 el contenido de la nueva posición de memoria direccionada por A0. Significa: D.Mery A0 A0 – 1 D0.B (A0) 124 Arquitectura de Computadores Präsentat ion Instrucciones 68000 [ Organización ] MODOS DE DIRECCIONAMIENTO (cont...) 4.- Direccionamiento relativo a registro: d) Direccionamiento relativo a registro con desplazamiento: El contenido de la posición de memoria cuya dirección viene dada por la suma del valor del registro de direcciones y una cantidad fija denominada desplazamiento, pudiendo ser este positivo o negativo y su valor viene condiciondo por el tamaño del operando. Ejemplo: MOVE.L 6(A0),D1 copia en el registro D1 el contenido de la posición de memoria cuya dirección viene dada por la suma de 6 multiplicado por 4(L) al contenido de A0. Significa: D.Mery D1.L (A0 + 6×4) 125 Arquitectura de Computadores Präsentat ion Instrucciones 68000 [ Organización ] MODOS DE DIRECCIONAMIENTO (cont...) 4.- Direccionamiento relativo a registro: e) Direccionamiento relativo a registro con índice: Este modo de direccionamiento es la extensión natural del anterior, ya que permite usar desplazamientos variables, utilizando como desplazamiento el resultado de sumar un número fijo al contenido de un registro de datos denominado registro índice. Ejemplo: MOVE.B 4(A0,D1), D0 copia en el registro D0 el contenido de la posición de memoria cuya dirección es el resultado de sumar el número 4, el contenido del registro A0 y el contenido del registro D1. Este modo de direccionamiento no altera el registro de direcciones ni el registro índice. Significa: D.Mery D0.B (4+A0+D1) 126 Arquitectura de Computadores Präsentat ion Instrucciones 68000 [ Organización ] MODOS DE DIRECCIONAMIENTO (cont...) 4.- Direccionamiento relativo a registro: f) Direccionamiento relativo al contador de programa con desplazamiento: Cuando es necesario hacer referencia a un operando relativo a la posición de la proxima instrucción que va a ser ejecutada. Ejemplo: MOVE.B 24(PC),D0 copia en el registro D0 el contenido de la posición de memoria cuya dirección es la suma de 24 y el valor del contador del programa. Significa: D.Mery D0.B (24+PC) 127 Arquitectura de Computadores Präsentat ion Instrucciones 68000 [ Organización ] MODOS DE DIRECCIONAMIENTO (cont...) 4.- Direccionamiento relativo a registro: g) Direccionamiento relativo al contador de programa con índice: Utiliza como desplazamiento el resultado de sumar un número fijo al contenido de un registro de datos. Ejemplo: MOVE.B 24(PC,D0),D1 copia en el registro D1 el contenido de la posición de memoria cuya dirección es el resultado de sumar el número 24, el contador de programa y el contenido del registro D0. Significa: D.Mery D1.B (24 + PC + D0) 128 Arquitectura de Computadores Präsentat ion [ Organización ] Instrucciones 68000 FORMATOS DE INSTRUCCIONES Los formatos empleados para las instrucciones utilizan una o más palabras de 16 bits. La primera palabra especifica el código de la operación y en muchos casos la dirección de un operando. Las especificaciones para completar los operandos, cuando no es suficiente con una palabra van a continuación de la primera palabra. Cada operando utilizará como máximo dos palabras de ampliación, equivalente a una palabra larga, después de la del código de operación, por lo que la instrucción más larga del Motorola 68000 ocupa 5 palabras (10 bytes), siendo 1 para el código de instrucción, 2 palabras de ampliación para el operando origen, y 2 palabras de ampliación más para el operando destino. D.Mery 129 Arquitectura de Computadores Präsentat ion [ Organización ] Instrucciones 68000 FORMATOS DE INSTRUCCIONES La información que identifica la situación exacta del operando, denominada dirección efectiva, se codifica en los formatos de instrucción mediante dos campos, siendo uno el modo de direccionamiento (MD) y el otro el de registro. Cada campo tiene un tamaño de 3 bits y se incluyen en la primera palabra de instrucción. El campo MD identifica el modo de direccionamiento empleado y el campo CR indica el registro empleado para obtener la dirección del operando. A veces se utilizan las palabras de ampliación ya que la dirección efectiva requiere incluir más información sobre la situación del operando en la palabra de instrucción. D.Mery 130 Arquitectura de Computadores Präsentat ion [ Organización ] Instrucciones 68000 INSTRUCCIONES CONDICIONALES Al realizar operaciones matemáticas existe la posibilidad de desbordamiento, por lo que se realiza un test automáticamente, quedando el resultado almacenado en un registro de control, dedicado especialmente a tal efecto, denominado registro de código de condición (CCR), pudiendose leer mediante la instrucción MOVE. Este registro consta de 5 flags que se almacenan en los 5 bits menos significativos del registro de estado (SR). D.Mery 131 Arquitectura de Computadores Präsentat ion [ Organización ] Instrucciones 68000 INSTRUCCIONES CONDICIONALES Estos 5 bits tienen las siguientes denominaciones, ordenadas desde el bit menos significativo: C indicador de acarreo (carry flag): indica el valor del bit de acarreo de la posición más significativa del resultado de una operación, poniéndose a 1 si existe desbordamiento. V indicador de desbordamiento (overflow flag): indica si en el resultado de una operación en complemento a 2 existe desbordamiento, poniendose a 1. Z es el indicador de cero (zero flag): se pone a 1 cuando sea 0 el resultado de una operación aritmetica o lógica. N es el indicador de número negativo (negative flag): se pone a 0 si es positivo y a 1 si es negativo el signo del resultado de una operación en complemento a 2. X es el indicador extendido (extended flag): funciona de la misma manera que C, pero únicamente con operaciones aritméticas o de desplazamiento. D.Mery 132 Arquitectura de Computadores Präsentat ion [ Organización ] Instrucciones 68000 INSTRUCCIONES DEL 68000 1.- Instrucciones de transferencias de datos 2.- Instrucciones aritméticas 3.- Instrucciones lógicas 4.- Instrucciones de desplazamiento y rotación 5.- Instrucciones de manipulación de bits 6.- Instrucciones de operación en código BCD 7.- Instrucciones de ramificación y salto 8.- Instrucciones de manejo de subrutinas D.Mery 133 Arquitectura de Computadores Präsentat ion Instrucciones 68000 [ Organización ] 1.- Instrucciones de transferencias de datos El conjunto de estas instrucciones permite el movimiento de datos entre registros de la CPU, entre registros y memoria y entre posiciones de memoria. Estas son las siguientes: D.Mery Instrucción MOVE Descripción MOVEA Copia direcciones MOVEQ Copia rápido registros de datos (8 bits) MOVEM Copia de memoriaS a registroS EXG y SWAP Intercambio de contenidos LEA y PEA Determina dirección efectiva de operando LINK y UNLINK Facilita el uso de la pila en saltos a subrutinas Copia de datos de fuente a destino 134 Arquitectura de Computadores Präsentat ion Instrucciones 68000 [ Organización ] 2.- Instrucciones aritméticas El Motorola 68000 dispone de instrucciones para las 4 operaciones aritméticas, sobre operandos binarios, y suma y resta sobre datos codificados en BCD. Además de cambio de signo para ambos tipo de datos, instrucciones de comparación, extensión de signo y actualización de los códigos de condición (CCR) según el valor de un dato: D.Mery Instrucción ADD / SUB Descripción ADDA / SUBA Suma / resta direcciones ADDI / SUBI Suma / resta con direccionamiento inmediato ADDQ / SUBQ Suma / resta rápida (8 bits) ADDX / SUBX Suma / resta incluyendo el flag X CLR Carga un cero binario en el operando Suma resta general 135 Arquitectura de Computadores Präsentat ion Instrucciones 68000 [ Organización ] 2.- Instrucciones aritméticas (cont…) El Motorola 68000 dispone de instrucciones para las 4 operaciones aritméticas, sobre operandos binarios, y suma y resta sobre datos codificados en BCD. Además de cambio de signo para ambos tipo de datos, instrucciones de comparación, extensión de signo y actualización de los códigos de condición (CCR) según el valor de un dato: D.Mery Instrucción MULS y MULU Descripción DIVS y DIVU Division signed & Division unsigned CMP Compara dos operandos CMPA Compara dos direcciones CMPI Compara utilizando direccionamiento inmediato NEG Complemento a 2 NEGX Negación extendida considerando flag X Multiply signed & Multiply unsigned 136 Arquitectura de Computadores Präsentat ion Instrucciones 68000 [ Organización ] 3.- Instrucciones lógicas El Motorola 68000 dispone de cuatro instrucciones que realizan funciones lógicas, que actúan bit a bit sobre datos de 8, 16, ó 32 bits y cuatro para manejar bits individuales sobre datos de 8 ó 32 bits. D.Mery Instrucción AND Descripción ANDI And con direccionamiento inmediato EOR / EORI Or exclusivo / con direccionamiento inmediato NOT Negación lógica OR / ORI Or lógico / con direccionamiento inmediato TST Comprueba un operando Scc Comprueba los códigos de condición CCR And lógico 137 Arquitectura de Computadores Präsentat ion Instrucciones 68000 [ Organización ] 4.- Instrucciones de desplazamiento Se caracterizan por desplazar o rotar el operando bit a bit a la derecha o a la izquierda. El operando destino, que es el afectado por el desplazamiento o por la rotación siempre será un registro de datos. D.Mery Instrucción ASL / ASR Descripción LSL / LSR Logical shift left / right ROL / ROR Rotate left / right ROXL / ROXR Rotate left / right incluyendo flag X Aritmetic shift left / right 138 Arquitectura de Computadores Präsentat ion Instrucciones 68000 [ Organización ] 5.- Instrucciones de manipulación de bits El Motorola 68000 permite comprobar, poner a cero , poner a uno e invertir los bits individuales de un valor entero. El resultado lo pone en el flag Z. D.Mery Instrucción BTST Descripción BCLR Bit clear BSET Bit set BCHG Bit change Bit test 139 Arquitectura de Computadores Präsentat ion Instrucciones 68000 [ Organización ] 6.- Instrucciones de operación en código BCD El Motorola 68000 permite comprobar, poner a cero , poner a uno e invertir los bits individuales de un valor entero. El resultado lo pone en el flag Z. D.Mery Instrucción ABCD Descripción NBCD Niego el destino SBCD Resta fuente al destino Suma fuente al destino 140 Arquitectura de Computadores Präsentat ion Instrucciones 68000 [ Organización ] 7.- Instrucciones de ramificación y salto Bcc (Branch on condition code) Label: salta a label cuando cc es verdadero: Bcc D.Mery Condición (cc) BEQ LABEL Z BNE LABEL Z' BCS LABEL C BCC LABEL C' BHI LABEL C' · Z' BLS LABEL C+Z BMI LABEL N BPL LABEL N' BVS LABEL V BVC LABEL V' BGT LABEL Z' · [[N · V] + [N' · V']] BGE LABEL [N · V] +[N' · V'] BLT LABEL [N · V'] + [N' · V] BLE LABEL Z + [N · V'] + [N' · V] 141 Arquitectura de Computadores Präsentat ion Instrucciones 68000 [ Organización ] 7.- Instrucciones de ramificación y salto (cont…) D.Mery Instrucción DBcc Descripción BRA Branch incondicional (direccionamiento relativo) JMP Jump incondicional (direccionamiento absoluto) STOP Se detiene la CPU NOP No ejecuta operación (sirve como delay) Decrement and branch on condition 142 Arquitectura de Computadores Präsentat ion [ Organización ] Instrucciones 68000 8.- Instrucciones de manejo de subrutinas BSR y JSR: (Branch to Subrutine y Jump to Subrutine) el operando asociado con estas instrucciones debe ser la dirección de memoria en la que se comienza la subrutina, con direccionamiento absoluto para JSR, y relativo a PC para BSR. Al ejecutarse cualquiera de las dos instrucciones, se almacena automáticamente en la pila el valor del contador de programa en el momento anterior al salto, cuando su contenido apunta a la dirección de comienzo de la instrucción siguiente a JSR o BSR. La subrutina debe tener como última instrucción a ejecutar RTS (Return from Subrutine) o RTR (Return and Restore). Ambas recuperan de la pila el valor del contador del programa, lo que permite reanudar la ejecución del programa precisamente en el punto que había sido abandonado. La instrucción RTR también repone el CCR extrayendo una palabra de la pila inmediatamente antes de recuperar el PC. La subrutina debe llevar a la pila, justamente encima de las posiciones que contienen la posición de retorno, una palbra cuyos 5 bits menos significativos serán llevados al CCR al ejecutarse RTR, que puede ser una copia del CCR al entrar en la subrutina, o cualquier otro valor. D.Mery 143 Arquitectura de Computadores Präsentat ion [ Organización ] Instrucciones 68000 Reference Manual 68000.pdf D.Mery 144 Arquitectura de Computadores Präsentat ion [ Índice ] 3.1 Máquina de von Neumann 3.2 Unidad de control 3.3 Fetch, decodificación, ejecución 3.4 Conjunto de instrucciones 3.5 Programación en assembler 3.6 Formatos de instrucción 3.7 Modos de direccionamiento 3.8 Mecanismos de subrutinas 3.9 E/S e interrupciones D.Mery 145 Arquitectura de Computadores Präsentat ion Assembler [ Organización ] Ejemplo sencillo: implementar T = X + Y + Z Esta operación se podría hacer en un microprocesador teniendo las variables X, Y, Z almacenadas en la memoria, por ejemplo: X en la posición 500, J en la 501 y K en la 502, y ejecutando las siguientes instrucciones: 1. 2. 3. 4. D.Mery Cargar el contenido de 500 en el acumulador. Sumar al acumulador el contenido de 501. Sumar al acumulador el contenido de 502. Almacenar el acumulador en la posición 503. 146 Arquitectura de Computadores Präsentat ion Assembler [ Organización ] Ejemplo sencillo: implementar T = X + Y + Z Suponiendo un código binario para las instrucciones: 1. Cargar el contenido de 500 en el acumulador: 0010 0101 0000 0000 D.Mery 147 Arquitectura de Computadores Präsentat ion Assembler [ Organización ] Ejemplo sencillo: implementar T = X + Y + Z Suponiendo un código binario para las instrucciones: 1. Cargar el contenido de 500 en el acumulador: 0010 0101 0000 0000 Este código significa cargar en el acumulador el contenido de esto (0101 0000 0000 significa 500) D.Mery 148 Arquitectura de Computadores Präsentat ion Assembler [ Organización ] Ejemplo sencillo: implementar T = X + Y + Z Suponiendo un código binario para las instrucciones: 1. Cargar el contenido de 500 en el acumulador: 0010 0101 0000 0000 2. Sumar al acumulador el contenido de 501. 0011 0101 0000 0001 3. Sumar al acumulador el contenido de 502. 0011 0101 0000 0010 4. Almacenar el acumulador en la posición 503. 0001 0101 0000 0011 D.Mery 149 Arquitectura de Computadores Präsentat ion Assembler [ Organización ] Ejemplo sencillo: implementar T = X + Y + Z Además hay que poner en las direcciones 500, 501 y 502 los valores de las variables X, Y y Z: 500 501 502 D.Mery 0000 0000 0010 0001 0000 0000 0011 0010 0000 0001 0001 1010 150 X es 0021 Y es 0032 Z es 011A Arquitectura de Computadores Präsentat ion Assembler [ Organización ] Ejemplo sencillo: implementar T = X + Y + Z D.Mery Programa en binario: Explicación 000 001 002 003 : 500 501 502 503 0010 0101 0000 0000 0011 0101 0000 0001 0011 0101 0000 0010 0001 0101 0000 0011 A (500) A A + (501) A A + (502) (503) A 0000 0000 0010 0001 0000 0000 0011 0010 0000 0001 0001 1010 0000 0000 0000 0000 Dato X Dato Y Dato Z Libre para escribir T 151 Arquitectura de Computadores Präsentat ion Assembler [ Organización ] Ejemplo sencillo: implementar T = X + Y + Z 000 001 002 003 : 500 501 502 503 D.Mery 0010 0101 0000 0000 0011 0101 0000 0001 0011 0101 0000 0010 0001 0101 0000 0011 Lenguaje máquina 0000 0000 0010 0001 0000 0000 0011 0010 0000 0001 0001 1010 0000 0000 0000 0000 152 Arquitectura de Computadores Präsentat ion Assembler [ Organización ] Ejemplo sencillo: implementar T = X + Y + Z Programa en hexa 000 001 002 003 : 500 501 502 503 D.Mery 0010 0101 0000 0000 0011 0101 0000 0001 0011 0101 0000 0010 0001 0101 0000 0011 000 001 002 003 2500 3501 3502 1503 0000 0000 0010 0001 0000 0000 0011 0010 0000 0001 0001 1010 0000 0000 0000 0000 500 501 503 504 0021 0032 011A 0000 153 Arquitectura de Computadores Präsentat ion Assembler [ Organización ] Ejemplo sencillo: implementar T = X + Y + Z Programa simbólico 000 001 002 003 : 500 501 502 503 D.Mery 0010 0101 0000 0000 0011 0101 0000 0001 0011 0101 0000 0010 0001 0101 0000 0011 000 001 002 003 LDA (500) ADD (501) ADD (502) STA (503) 0000 0000 0010 0001 0000 0000 0011 0010 0000 0001 0001 1010 0000 0000 0000 0000 500 501 502 503 DAT 0021 DAT 0032 DAT 011A DAT 0000 154 Arquitectura de Computadores Präsentat ion Assembler [ Organización ] Ejemplo sencillo: implementar T = X + Y + Z Programa en assembler 000 001 002 003 : 500 501 502 503 D.Mery 0010 0101 0000 0000 0011 0101 0000 0001 0011 0101 0000 0010 0001 0101 0000 0011 INICIO LDA (VX) ADD (VY) ADD (VZ) STA (VT) 0000 0000 0010 0001 0000 0000 0011 0010 0000 0001 0001 1010 0000 0000 0000 0000 VX VY VZ VT DAT 0021 DAT 0032 DAT 011A DAT 0000 155 Arquitectura de Computadores Präsentat ion [ Índice ] 3.1 Máquina de von Neumann 3.2 Unidad de control 3.3 Fetch, decodificación, ejecución 3.4 Conjunto de instrucciones 3.5 Programación en assembler 3.6 Formatos de instrucción 3.7 Modos de direccionamiento 3.8 Mecanismos de subrutinas 3.9 E/S e interrupciones D.Mery 156 Arquitectura de Computadores Präsentat ion Subrutinas [ Organización ] Uso de subrutinas: Frecuentemente la misma pieza de código debe escribirse varias veces en muchas partes diferentes de un programa. En vez de repetir el código cada vez que sea necesario, hay una ventaja obvia si las instrucciones comunes se escriben solamente una vez. Un conjunto de instrucciones comunes que pueden utilizarse en un programa muchas veces se denomina subrutina. D.Mery 157 Arquitectura de Computadores Präsentat ion Subrutinas [ Organización ] Uso de subrutinas: Cada vez que la subrutina se utiliza en la parte del programa principal, una ramificación se ejecuta al comienzo de la subrutina. Después que la subrutina ha sido ejecutada, una ramificación se hace de nuevo al programa principal. D.Mery 158 Arquitectura de Computadores Präsentat ion Subrutinas [ Organización ] Uso de subrutinas: Programa principal Subrutina Llamado a Subrutina D.Mery 159 Arquitectura de Computadores Präsentat ion Subrutinas [ Organización ] Uso de subrutinas: Programa principal Subrutina Llamado a Subrutina Llamado a Subrutina D.Mery j j+1 160 Arquitectura de Computadores Präsentat ion Subrutinas [ Organización ] Uso de subrutinas: Los registros y las memorias son comunes para el programa principal y para la subrutina, i.e., se consideran variables globales. Ventaja: la comunicación de los parámetros entre el programa principal y la subrutina es simple y rápido. Desventaja: el programador puede olvidar que ciertos registros usados por en el programa principal no deben ser alterados en la subrutina, esto puede causar serios problemas y la detección de este error es difícil. D.Mery 161 Arquitectura de Computadores Präsentat ion Subrutinas [ Organización ] Ejemplo: Se desea hacer un programa que realice las siguientes operaciones: (0100) (0100) + 5 (0200) (0200) + 5 (0204) (0204) + 5 D.Mery 162 Arquitectura de Computadores Präsentat ion Subrutinas [ Organización ] Ejemplo: Se desea hacer un programa que realice las siguientes operaciones: (0100) (0100) + 5 (0200) (0200) + 5 (0204) (0204) + 5 La mejor solución sería utilizando una subrutina que tenga como parámetro una dirección X y que realice la operación: (X) (X) + 5 El programa principal debe cargar correctamente el registro X y llamar a la subrutina tres veces. D.Mery 163 Arquitectura de Computadores Präsentat ion Subrutinas [ Organización ] Ejemplo: Se desea hacer un programa que realice las siguientes operaciones: (0100) (0100) + 5 (0200) (0200) + 5 (0204) (0204) + 5 Programa principal LOAD X,0100 CALL SUM5 LOAD X,0200 CALL SUM5 LOAD X,0204 CALL SUM5 D.Mery Subrutina SUM5 LOAD A,(X) ADD 5 STORE (X),A RET 164 Arquitectura de Computadores Präsentat ion Subrutinas [ Organización ] Ejemplo: Se desea hacer un programa que realice las siguientes operaciones: (0100) (0100) + 5 (0200) (0200) + 5 (0204) (0204) + 5 ¿Qué pasa si el programa principal estaba usando A? Programa principal LOAD X,0100 CALL SUM5 LOAD X,0200 CALL SUM5 LOAD X,0204 CALL SUM5 D.Mery Subrutina SUM5 LOAD A,(X) ADD 5 STORE (X),A RET 165 Arquitectura de Computadores Präsentat ion Subrutinas [ Organización ] Ejemplo: Se desea hacer un programa que realice las siguientes operaciones: (0100) (0100) + 5 (0200) (0200) + 5 (0204) (0204) + 5 ¿Qué pasa si el programa principal estaba usando A? kaput!! Programa principal LOAD X,0100 CALL SUM5 LOAD X,0200 CALL SUM5 LOAD X,0204 CALL SUM5 D.Mery Subrutina SUM5 LOAD A,(X) ADD 5 STORE (X),A RET 166 Arquitectura de Computadores Präsentat ion Subrutinas [ Organización ] Ejemplo: Se desea hacer un programa que realice las siguientes operaciones: (0100) (0100) + 5 (0200) (0200) + 5 (0204) (0204) + 5 Solución: se usa la pila Programa principal LOAD X,0100 CALL SUM5 LOAD X,0200 CALL SUM5 LOAD X,0204 CALL SUM5 D.Mery Subrutina SUM5 PUSH A LOAD A,(X) ADD 5 STORE (X),A POP A RET 167 Arquitectura de Computadores Präsentat ion Subrutinas [ Organización ] La Pila (stack): Existe una memoria direccionada por el registro SP (stack pointer). ¿Cómo se usa? Cada vez que se hace PUSH X: (SP) X SP SP + 1 Cada vez que se hace POP X: SP SP - 1 X (SP) (es posible hacer PUSH X y luego POP Y) D.Mery 168 Arquitectura de Computadores Präsentat ion [ Índice ] 3.1 Máquina de von Neumann 3.2 Unidad de control 3.3 Fetch, decodificación, ejecución 3.4 Conjunto de instrucciones 3.5 Programación en assembler 3.6 Formatos de instrucción 3.7 Modos de direccionamiento 3.8 Mecanismos de subrutinas 3.9 E/S e interrupciones D.Mery 169 Arquitectura de Computadores Präsentat ion Interrupciones [ Organización ] El ciclo de una instrucción (sin interrupción) D.Mery 170 Arquitectura de Computadores Präsentat ion Interrupciones [ Organización ] Diagrama de estado (sin interrupción) D.Mery 171 Arquitectura de Computadores Präsentat ion Interrupciones [ Organización ] Ejemplo sin interrupciones: un programa quiere leer datos del disco duro. 1. El programa solicita datos a la unidad de disco. 2. La unidad de disco recibe solicitud y posiciona el cabezal del disco en la posición deseada. 3. La unidad lee los datos. 4. La unidad verifica consistencia de los datos (checksum) 5. if OK (Envía los datos a la CPU) else GOTO 3 6. La CPU recibe datos y continúa su programa 1 D.Mery 2 3 4 172 5 6 t Arquitectura de Computadores Präsentat ion Interrupciones [ Organización ] Ejemplo sin interrupciones: un programa quiere leer datos del disco duro. Unidad de disco lee y envía datos CPU recibe datos CPU solicita datos 1 D.Mery 2 3 4 173 5 6 t Arquitectura de Computadores Präsentat ion Interrupciones [ Organización ] Ejemplo sin interrupciones: un programa quiere leer datos del disco duro. ¿Qué hace la CPU en este tiempo? CPU recibe datos CPU solicita datos 1 D.Mery 2 3 4 174 5 6 t Arquitectura de Computadores Präsentat ion Interrupciones [ Organización ] Ejemplo sin interrupciones: un programa quiere leer datos del disco duro. ¿Qué hace la CPU en este tiempo? CPU solicita datos 1 D.Mery CPU recibe datos NADA!! la CPU espera… 2 3 4 175 5 6 t Arquitectura de Computadores Präsentat ion Interrupciones [ Organización ] Ejemplo con interrupciones: un programa quiere leer datos del disco duro. 1. El programa solicita datos a la unidad de disco. 2. La CPU no espera datos, hace otra cosa: por ejemplo ejecuta otro programa o continua ejecutando el mismo programa siempre que pueda prescindir de los datos solicitados. 3. La unidad de disco se encarga de leer los datos correctamente. Cuando los datos están listos la unidad de disco “interrumpe” a la CPU. 4. La CPU deja de hacer lo que está haciendo y atiende la interrupción, i.e., recibe los datos de la unidad de disco. t (CPU) t (unidad de disco) D.Mery 176 Arquitectura de Computadores Präsentat ion Interrupciones [ Organización ] Ejemplo con interrupciones: un programa quiere leer datos del disco duro. CPU solicita datos CPU hace otra cosa CPU recibe datos 1 2 4 3 t interrupción Unidad de disco lee y envía datos D.Mery 177 Arquitectura de Computadores Präsentat ion Interrupciones [ Organización ] Ejemplo con interrupciones: un programa quiere leer datos del disco duro. CPU solicita datos CPU hace otra cosa CPU recibe datos 1 2 4 3 Ahorro de tiempo t interrupción Unidad de disco lee y envía datos D.Mery 178 Arquitectura de Computadores Präsentat ion Interrupciones [ Organización ] La interrupción es el mecanismo mediante el cual otros módulos pueden interrumpir una secuencia normal de procesamiento. • Programa: por ejemplo división por cero • Temporizador: cuando se cumple un tiempo específico • E/S: cuando hay algo que comunicar • Hardware: cuando ocurre una falla D.Mery 179 Arquitectura de Computadores Präsentat ion Interrupciones [ Organización ] El ciclo de una instrucción (con interrupción) D.Mery 180 Arquitectura de Computadores Präsentat ion Interrupciones [ Organización ] Diagrama de estado (con interrupción) D.Mery 181 Arquitectura de Computadores Präsentat ion Interrupciones [ Organización ] Bus de direcciones A0 A12 A12 CPU MREQ A12 A11 : A0 RD WR D0 D7 Bus de datos D7 D0 ROM A11 D.Mery D0 D7 WR RAM RD RD CE CE A0 A11 A0 182 Arquitectura de Computadores Präsentat ion Interrupciones [ Organización ] Bus de direcciones A0 A12 CPU INT MREQ RD WR IORQ D0 D7 decoder Bus de datos D0 D7 I/O ROM RAM CE CE CE A11 D.Mery A0 183 Arquitectura de Computadores Präsentat ion Interrupciones [ Organización ] Funcionamiento de las interrupciones (posibilidad 1): 1. El dispositivo I/O cuando necesita interrumpir solicita atención y envía una señal INT a la CPU. 2. La CPU termina su instrucción y envía un reconocimiento a quien interrumpe mediante la señal IORQ (I/O request). 3. El dispositivo envía por el bus de datos un byte y la CPU forma una dirección a partir de este byte. 4. La CPU salta a esta dirección y ejecuta el programa de atención a la interrupción. 5. La CPU finaliza esta rutina de interrupción y regresa a la dirección que estaba en el momento de la interrupción. D.Mery 184 Arquitectura de Computadores Präsentat ion Interrupciones [ Organización ] Funcionamiento de las interrupciones (posibilidad 2): 1. Igual 2. Igual 3. La CPU al saber que es el dispositivo X el que interrumpe lee el elemento X del “vector de interrupciones” ubicado en algún lugar de la memoria, a partir de este elemento calcula la dirección de memoria de la rutina de atención de la interrupción. 4. Igual 5. Igual D.Mery 185 Arquitectura de Computadores Präsentat ion Interrupciones [ Organización ] D.Mery 186 Arquitectura de Computadores Präsentat ion Interrupciones [ Organización ] Interrupciones múltiples: 1. Inhibición de interrupciones: • La CPU ignora las interrupciones cuando ya está procesando una interrupción. • Las interrupciones ocurridas quedan pendientes y se ejecutan en una determinada secuencia una vez que la CPU termine la primera interrupción. D.Mery 187 Arquitectura de Computadores Präsentat ion Interrupciones [ Organización ] Interrupción múltiple (secuencial) D.Mery 188 Arquitectura de Computadores Präsentat ion Interrupciones [ Organización ] Interrupciones múltiples (cont): 2. Definición de prioridades • Interrupciones de baja prioridad pueden ser interrumpidas por interrupciones de mayor prioridad. • Cuando una interrupción de prioridad alta ha sido atendida, la CPU regresa a la interrupción previa. D.Mery 189 Arquitectura de Computadores Präsentat ion Interrupciones [ Organización ] Interrupción múltiple (anidadas) D.Mery 190 Arquitectura de Computadores Präsentat ion Interrupciones [ Organización ] Secuencia temporal de varias interrupciones D.Mery 191 Arquitectura de Computadores Präsentat ion