[ Arquitectura de Computadores ] ORGANIZACIÓN DEL COMPUTADOR Präsentat ion Pontificia Universidad Católica de Chile Escuela de Ingeniería Departamento de Ciencia de la Computación IIC 2342 Semestre Domingo Mery D.Mery 1 Arquitectura de Computadores
Präsentat ion D.Mery 2 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 Modos de direccionamiento 3.6 Assembler 3.7 Subrutinas 3.8 Interrupciones
Präsentat ion D.Mery 3 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 Modos de direccionamiento 3.6 Assembler 3.7 Subrutinas 3.8 Interrupciones
[ Organización ] Präsentat ion Máquina von Neumann D.Mery 4 Arquitectura de Computadores Ejercicio: En una memoria de 4 palabras de 3 bits se encuentran almacenados 4 números de 3 bits. Hacer un circuito digital que sume estos cuatro números. Utilice: la memoria de 4 x 3 un contador de 2 bits sumadores una señala de clock. contador
[ Organización ] Präsentat ion Máquina von Neumann D.Mery 5 Arquitectura de Computadores 1023 : 86706h : 778 : 56204h : Memoria de 1024 8 Ejemplo: ¿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?
[ Organización ] Präsentat ion Máquina von Neumann D.Mery 6 Arquitectura de Computadores Memoria de 1024 8 Ejemplo: ¿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? : 86706h : 778 : 56204h : 2 1 0
[ Organización ] Präsentat ion Máquina von Neumann D.Mery 7 Arquitectura de Computadores Memoria de 1024 8 Decoder & Read/Write Solución: 1.Leer en la memoria la posición 867 Dirección 867 Read 1023 : 86706h : 778 : 56204h : h
[ Organización ] Präsentat ion Máquina von Neumann D.Mery 8 Arquitectura de Computadores Memoria de 1024 8 Decoder & Read/Write Solución: 1.Leer en la memoria la posición Almacenar lo leído en un registro externo Dirección 867 Read 1023 : 86706h : 778 : 56204h : h acumulador
[ Organización ] Präsentat ion Máquina von Neumann D.Mery 9 Arquitectura de Computadores Memoria de 1024 8 Decoder & Read/Write Dirección 562 Read 1023 : 86706h : 778 : 56204h : Solución: 1.Leer en la memoria la posición Almacenar lo leído en un registro externo 3.Leer en la memoria la posición 562 acumulador 06h
[ Organización ] Präsentat ion Máquina von Neumann D.Mery 10 Arquitectura de Computadores Memoria de 1024 8 Decoder & Read/Write 1023 : 86706h : 778 : 56204h : Solución: 1.Leer en la memoria la posición Almacenar lo leído en un registro externo 3.Leer en la memoria la posición Sumar lo leído con el registro externo acumulador 06h + 04h 06h 0Ah
[ Organización ] Präsentat ion Máquina von Neumann D.Mery 11 Arquitectura de Computadores Memoria de 1024 8 acumulador 0Ah Solución: 1.Leer en la memoria la posición Almacenar lo leído en un registro externo 3.Leer en la memoria la posición Sumar lo leído con el registro externo 5.Almacenar la suma en la posición 778 Decoder & Read/Write Dirección : 86706h : 778 : 56204h : Write 0Ah
[ Organización ] Präsentat ion Máquina von Neumann D.Mery 12 Arquitectura de Computadores 1023 : 867 : 778 : 562 : 2 1 Programa 0 Memoria de 1024 8 Solución general: Decoder & Read/Write Unidad de aritmética y lógica Unidad de control
[ Organización ] Präsentat ion Máquina von Neumann D.Mery 13 Arquitectura de Computadores 1023 : 867 : 778 : 562 : 2 1 Programa 0 Memoria de 1024 8 Solución general: El programa le da instrucciones a la Unidad Central. Ejemplo: significa leer en la memoria y almacenar la lectura en el registro AC de la ALU. Decoder & Read/Write Unidad de aritmética y lógica Unidad de control
[ Organización ] Präsentat ion Máquina von Neumann D.Mery 14 Arquitectura de Computadores 1023 : 867 : 778 : 562 : 2 1 Programa 0 Memoria de 1024 8 Solución general: El programa le da instrucciones a la Unidad Central. Ejemplo: significa leer en la memoria y almacenar la lectura en el registro AC de la ALU. Decoder & Read/Write Unidad de aritmética y lógica Unidad de control Significa leer y almacenar en AC
[ Organización ] Präsentat ion Máquina von Neumann D.Mery 15 Arquitectura de Computadores 1023 : 867 : 778 : 562 : 2 1 Programa 0 Memoria de 1024 8 Solución general: El programa le da instrucciones a la Unidad Central. Ejemplo: significa leer en la memoria y almacenar la lectura en el registro AC de la ALU. Decoder & Read/Write Unidad de aritmética y lógica Unidad de control Significa lo que se debe leer: = 867
[ Organización ] Präsentat ion Máquina von Neumann D.Mery 16 Arquitectura de Computadores 1023 : 867 : 778 : 562 : 2 : Memoria de 1024 8 Solución general: El programa le da instrucciones a la Unidad Central. Ejemplo: significa leer en la memoria y almacenar la lectura en el registro AC de la ALU. Decoder & Read/Write Unidad de aritmética y lógica Unidad de control
[ Organización ] Präsentat ion Máquina von Neumann D.Mery 17 Arquitectura de Computadores 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 considerar 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 ser que dicha secuencia se modifique explícitamente).
[ Organización ] Präsentat ion Máquina von Neumann D.Mery 18 Arquitectura de Computadores Estructura
[ Organización ] Präsentat ion Máquina von Neumann D.Mery 19 Arquitectura de Computadores Detalles 1000 x 40 bit words –Binary number –2 x 20 bit instructions Codop Dirección Signo Palabra número Palabra instrucción
[ Organización ] Präsentat ion Máquina von Neumann D.Mery 20 Arquitectura de Computadores Detalles Codop Dirección Palabra instrucció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.
[ Organización ] Präsentat ion Máquina von Neumann D.Mery 21 Arquitectura de Computadores Detalles Registros de la CPU –Memory Buffer Register (MBR) –Memory Address Register (MAR) –Instruction Register (IR) –Instruction Buffer Register (IBR) –Program Counter (PC) –Accumulator (AC) –Multiplier Quotient (MQ)
[ Organización ] Präsentat ion Máquina von Neumann D.Mery 22 Arquitectura de Computadores Detalles de la estructura máquina von Neumann (CC)
[ Organización ] Präsentat ion Máquina von Neumann D.Mery 23 Arquitectura de Computadores 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. (CC)
[ Organización ] Präsentat ion Máquina von Neumann D.Mery 24 Arquitectura de Computadores 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. (CC)
[ Organización ] Präsentat ion Máquina von Neumann D.Mery 25 Arquitectura de Computadores 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. (CC)
[ Organización ] Präsentat ion Máquina von Neumann D.Mery 26 Arquitectura de Computadores 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. (CC)
[ Organización ] Präsentat ion Máquina von Neumann D.Mery 27 Arquitectura de Computadores 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. (CC)
[ Organización ] Präsentat ion Máquina von Neumann D.Mery 28 Arquitectura de Computadores 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. (CC)
[ Organización ] Präsentat ion Máquina von Neumann D.Mery 29 Arquitectura de Computadores INSTRUCCIONES DE TRANSFERENCIA DE DATOS: Se transfieren datos entre la memoria y los registros de la ALU o entre dos registros de la ALU. CodopInstrucciónDescripción LOAD MQ Transferir el contenido del registro MQ a AC LOAD MQ,M(X) Transferir el contenido de la posición de memoria X a MQ STOR M(X) Transferir el contenido de AC a la posición de memoria X LOAD M(X) Transferir M(X) a AC LOAD –M(X) Transferir –M(X) a AC LOAD |M(X)| Transferir |M(X)| a AC
[ Organización ] Präsentat ion Máquina von Neumann D.Mery 30 Arquitectura de Computadores 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). CodopInstrucciónDescripción JUMP M(X,8:19) Saltar a la instrucción indicada por la mitad izquierda de M(X) JUMP M(X,28:39) Saltar a la instrucción indicada por la mitad derecha de M(X)
[ Organización ] Präsentat ion Máquina von Neumann D.Mery 31 Arquitectura de Computadores INSTRUCCIONES DE SALTO CONDICIONAL: El salto depende de una condición, esto permite puntos de decisión. CodopInstrucciónDescripción JUMP +M(X,8:19) Si AC ≥ 0 saltar a la instrucción indicada por la mitad izquierda de M(X) JUMP +M(X,28:39) Si AC ≥ 0 saltar a la instrucción indicada por la mitad derecha de M(X)
[ Organización ] Präsentat ion Máquina von Neumann D.Mery 32 Arquitectura de Computadores INSTRUCCIONES DE ARITMÉTICA: Son las operaciones realizadas por la ALU. CodopInstrucciónDescripción ADD M(X) AC AC + M(X) ADD |M(X)| AC AC + |M(X)| SUB M(X) AC AC - M(X) SUB |M(X)| AC AC - |M(X)| MUL M(X) [AC][MQ] AC M(X) DIV M(X) [AC][MQ] AC ÷ M(X) LSH AC AC RSH AC AC ÷ 2
[ Organización ] Präsentat ion Máquina von Neumann D.Mery 33 Arquitectura de Computadores INSTRUCCIONES DE ARITMÉTICA: Son las operaciones realizadas por la ALU. CodopInstrucciónDescripción ADD M(X) AC AC + M(X) ADD |M(X)| AC AC + |M(X)| SUB M(X) AC AC - M(X) SUB |M(X)| AC AC - |M(X)| MUL M(X) [AC][MQ] AC M(X) DIV M(X) [AC][MQ] AC ÷ M(X) LSH AC AC RSH AC AC ÷ 2 ¿Cómo se implementan por hardware?
[ Sistemas Digitales ] Präsentat ion Máquina von Neumann D.Mery 34 Arquitectura de Computadores shift register a la derecha = división entre dos CK D Q D Q D Q D Q
[ Sistemas Digitales ] Präsentat ion Máquina von Neumann D.Mery 35 Arquitectura de Computadores shift register a la izquierda = multiplicación por dos CK D Q D Q D Q D Q
[ Organización ] Präsentat ion Máquina von Neumann D.Mery 36 Arquitectura de Computadores 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. CodopInstrucciónDescripción STOR M(X,8:19) Reemplazar el campo de dirección de la izquierda de M(X) por los 12 bits de la derecha de AC STOR M(X,28:39) Reemplazar el campo de dirección de la derecha de M(X) por los 12 bits de la derecha de AC.
[ Organización ] Präsentat ion Máquina von Neumann D.Mery 37 Arquitectura de Computadores 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.
[ Organización ] Präsentat ion Máquina von Neumann D.Mery 38 Arquitectura de Computadores 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)% transfiere el contenido de 867 a AC ADD M(562)% AC AC + M(562) STOR M(778)% transfiere AC a la memoria 778
[ Organización ] Präsentat ion Máquina von Neumann D.Mery 39 Arquitectura de Computadores LOAD M(867) ADD M(562) STOR M(778) ¿Cómo se almacena el programa?
[ Organización ] Präsentat ion Máquina von Neumann D.Mery 40 Arquitectura de Computadores 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.
[ Organización ] Präsentat ion Máquina von Neumann D.Mery 41 Arquitectura de Computadores 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)% transfiere el contenido de 867 a AC RSH% divide el acumulador entre dos STOR M(778)% transfiere AC a la memoria 778
[ Organización ] Präsentat ion Máquina von Neumann D.Mery 42 Arquitectura de Computadores 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.
[ Organización ] Präsentat ion Máquina von Neumann D.Mery 43 Arquitectura de Computadores 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 LOAD M(867) % transfiere el contenido de 867 a AC 2. SUB M(562) % AC AC - M(562) 3. JUMP +M(3,28:39) % salta si AC ≥ 0 (i.e. M(867)≥ M(562)) 4. LOAD M(500) % transfiere el contenido de 500 a AC 5. STOR M(501) % 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.
Präsentat ion D.Mery 44 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 Modos de direccionamiento 3.6 Assembler 3.7 Subrutinas 3.8 Interrupciones
[ Organización ] Präsentat ion Unidad de control D.Mery 45 Arquitectura de Computadores Computador Memoria Principal Entrada Salida Sistema de interconexión periféricos Líneas de comunicación Unidad Central de Proceso CPU Computador
[ Organización ] Präsentat ion Unidad de control D.Mery 46 Arquitectura de Computadores Memoria Secundaria Memoria Principal CPU Periféricos Bus de Datos Bus de Direcciones Bus de Control Ejemplo:
[ Organización ] Präsentat ion Unidad de control D.Mery 47 Arquitectura de Computadores Ejemplo:
[ Organización ] Präsentat ion Unidad de control D.Mery 48 Arquitectura de Computadores Computer Unidad Aritmética y Lógica Unidad de Control Interconexión Interna de la CPU Registros CPU I/O Memory System Bus CPU
[ Organización ] Präsentat ion Unidad de control D.Mery 49 Arquitectura de Computadores CPU Memoria de control Unidad de control de registros y decodificadores Lógica Secuencial Registers Internal Bus Unidad de Control ALU Control Unit
[ Organización ] Präsentat ion Unidad de control D.Mery 50 Arquitectura de Computadores CPU Memoria de control Unidad de control de registros y decodificadores Lógica Secuencial Registers Internal Bus Unidad de Control ALU Control Unit La unidad de control controla el funcionamiento de la CPU: controla las transferencias de datos desde hacia la CPU y controla la ALU.
[ Organización ] Präsentat ion Unidad de control D.Mery 51 Arquitectura de Computadores 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.
[ Organización ] Präsentat ion Unidad de control D.Mery 52 Arquitectura de Computadores 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. decoder codop Se activa sólo una salida
[ Organización ] Präsentat ion Unidad de control D.Mery 53 Arquitectura de Computadores Componentes del computador:
[ Organización ] Präsentat ion Unidad de control D.Mery 54 Arquitectura de Computadores 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.
[ Organización ] Präsentat ion Unidad de control D.Mery 55 Arquitectura de Computadores Registros ALU Unidad de Control Bus de control Bus de datos Bus de direcciones Bus del sistema
[ Organización ] Präsentat ion Unidad de control D.Mery 56 Arquitectura de Computadores 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.Uso general 2.Datos 3.Direcciones 4.Códigos de condición
[ Organización ] Präsentat ion Unidad de control D.Mery 57 Arquitectura de Computadores ¿cuántos registros de propósito general? Ó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.
[ Organización ] Präsentat ion Unidad de control D.Mery 58 Arquitectura de Computadores ¿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.
[ Organización ] Präsentat ion Unidad de control D.Mery 59 Arquitectura de Computadores Ejemplos de organización de registros:
[ Organización ] Präsentat ion Unidad de control D.Mery 60 Arquitectura de Computadores 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
[ Organización ] Präsentat ion Unidad de control D.Mery 61 Arquitectura de Computadores 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: 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
[ Organización ] Präsentat ion Unidad de control D.Mery 62 Arquitectura de Computadores 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…) 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
Präsentat ion D.Mery 63 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 Modos de direccionamiento 3.6 Assembler 3.7 Subrutinas 3.8 Interrupciones
[ Organización ] Präsentat ion Ciclos fetch, decode, exe D.Mery 64 Arquitectura de Computadores 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
[ Organización ] Präsentat ion Ciclos fetch, decode, exe D.Mery 65 Arquitectura de Computadores 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.
[ Organización ] Präsentat ion Ciclos fetch, decode, exe D.Mery 66 Arquitectura de Computadores Ciclo decode (decodificación): FUNCION: Decodifica los bits presentes en IR 1.Interpreta el código de operación.
[ Organización ] Präsentat ion Ciclos fetch, decode, exe D.Mery 67 Arquitectura de Computadores 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
[ Organización ] Präsentat ion Ciclos fetch, decode, exe D.Mery 68 Arquitectura de Computadores 1. El PC contiene el valor 300. Se carga esta instrucción en IR (esto implica el uso de MAR y MBR) Ejemplo:
[ Organización ] Präsentat ion Ciclos fetch, decode, exe D.Mery 69 Arquitectura de Computadores 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:
[ Organización ] Präsentat ion Ciclos fetch, decode, exe D.Mery 70 Arquitectura de Computadores 3. El registro de PC se incrementa y se capta la siguiente instrucción. Ejemplo:
[ Organización ] Präsentat ion Ciclos fetch, decode, exe D.Mery 71 Arquitectura de Computadores 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:
[ Organización ] Präsentat ion Ciclos fetch, decode, exe D.Mery 72 Arquitectura de Computadores 5. El registro PC se incrementa en 1 y se capta la siguiente instrucción. Ejemplo:
[ Organización ] Präsentat ion Ciclos fetch, decode, exe D.Mery 73 Arquitectura de Computadores 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:
[ Organización ] Präsentat ion Ciclos fetch, decode, exe D.Mery 74 Arquitectura de Computadores ¿Cuántos ciclos de instrucción se necesitan?
[ Organización ] Präsentat ion Ciclos fetch, decode, exe D.Mery 75 Arquitectura de Computadores ¿Cuántos ciclos de instrucción se necesitan? R/. Tres
Präsentat ion D.Mery 76 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 Modos de direccionamiento 3.6 Assembler 3.7 Subrutinas 3.8 Interrupciones
[ Organización ] Instrucciones D.Mery 77 Arquitectura de Computadores Instrucciones básicas del Assembler Intel: Registros AL, BL, CL, DL (R) MOV R,dato; copia dato en registro R ; ej: MOV AL,00h MOV R1,R2; copia registro R1 en R2. ; ej: MOV AL,CL DEC R; R = R – 1, ej: DEC DL INC R; R = R + 1, ej: INC CL ADD R,dato; R = R + dato, ej: ADD AL,03h ADD R1,R2; R1 = R1 + R2, ej: ADD CL,AL Lo mismo para SUB, AND, OR, XOR JNBE dirección; salta a dirección si última operación > 0 JBE dirección; salta a dirección si última operación 0
[ Organización ] D.Mery 78 Arquitectura de Computadores Ejercicio: Hacer un programa que multiplique AL x BL y el resultado lo escriba en CL. Instrucciones
[ Organización ] D.Mery 79 Arquitectura de Computadores 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 Instrucciones
[ Organización ] D.Mery 80 Arquitectura de Computadores 1.- Instrucciones de transferencias de datos MOVEtransferir registros en la CPU STOREregistro → memoria LOADmemoria → registro CLEARpone un registro en ceros SETpone un registro en unos PUSHintroduce en la pila POPextrae en la pila Instrucciones
[ Organización ] D.Mery 81 Arquitectura de Computadores 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 Instrucciones
[ Organización ] D.Mery 82 Arquitectura de Computadores 2.- Instrucciones aritméticas ADDsuma dos operandos SUBSTRACTresta dos operandos MULTIPLYmultiplica dos operandos DIVIDEdivide dos operandos ABSOLUTEcalcula valor absoluto del operando NEGATEcambia el signo del operando INCREMENTEsube en 1 el operando DECREMENTEbaja en 1 el operando Instrucciones
[ Organización ] D.Mery 83 Arquitectura de Computadores 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. Instrucciones
[ Organización ] D.Mery 84 Arquitectura de Computadores 3.- Instrucciones lógicas ANDY lógico bit a bit ORO lógico bit a bit NOTno lógico bit a bit XORo exclusivo lógico bit a bit TESTevalúa condiciones COMPAREcomparación de dos operandos SHIFTdesplazamiento izquierda o derecha ROTATEdesplazamiento cíclico Instrucciones
[ Organización ] D.Mery 85 Arquitectura de Computadores 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. Instrucciones
[ Organización ] D.Mery 86 Arquitectura de Computadores 4.- Control de flujo JUMPsalto incondicional JUMP CONsalto condicional JUMP SUBsalto a subrutina RETURNretorno de subrutina SKIPincrementa PC en 1 SKIP CONincremento condicional de PC en 1 HALTdetiene la ejecución del programa WAITdetiene la ejecución hasta una condición NOPno ejecuta operación alguna Instrucciones
[ Organización ] D.Mery 87 Arquitectura de Computadores 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. Instrucciones
[ Organización ] D.Mery 88 Arquitectura de Computadores 5.- Entrada / salida INPUTtransferir I/O → memoria o registro OUTPUTtransferir memoria o registro → I/O START I/Oinicializa dispositivo I/O TEST I/Otransfiere información de estado de I/O Instrucciones
[ Organización ] D.Mery 89 Arquitectura de Computadores 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. Instrucciones
[ Organización ] Präsentat ion Instrucciones D.Mery 90 Arquitectura de Computadores LD A, (dirección)carga el contenido de la memoria 'dirección' en el registro A LD A, valorcarga 'valor' en el registro A LD (dirección), Acarga el contenido del registro A en la memoria apuntada por 'dirección' LD B, Acarga el contenido del registro A en el registro B LD HL, valorcarga '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. Algunas instrucciones del Z-80
[ Organización ] Präsentat ion Instrucciones D.Mery 91 Arquitectura de Computadores ADD A, Bcarga en A los 8 bits menos significativos de la suma A + B SUB B carga en A los 8 bits menos significativos de la resta A - B ADD (HL)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 HLincrementa en 1 el registro HL INC Aincrementa en 1 el registro A INC Bincrementa en 1 el registro B DEC Adecrementa en 1 el registro A DEC Bdecrementa en 1 el registro B DEC HLdecrementa en 1 el registro HL JP NZ, labelel programa salta a la dirección 'label' si la última operación aritmética no es cero 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. Algunas instrucciones del Z-80
[ Organización ] Präsentat ion Instrucciones D.Mery 92 Arquitectura de Computadores Examen de licenciatura : 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'.
[ Organización ] Präsentat ion Instrucciones D.Mery 93 Arquitectura de Computadores LD HL,0800H LD A,00H LD B,A LOOPADD (HL) INC HL DEC B JP NZ,LOOP LD B,A LD A,(0900H) SUB B LD (0A00H),A Solución
Präsentat ion D.Mery 94 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 Modos de direccionamiento 3.6 Assembler 3.7 Subrutinas 3.8 Interrupciones
[ Organización ] Präsentat ion Modos de direccionamiento D.Mery 95 Arquitectura de Computadores Una instrucción tiene “operandos”: Ej: ADD A,(940) %( A = A + (940)) Los operandos son A y el contenido de 940.
[ Organización ] Präsentat ion Modos de direccionamiento D.Mery 96 Arquitectura de Computadores 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.
[ Organización ] Präsentat ion Modos de direccionamiento D.Mery 97 Arquitectura de Computadores Número (N)Opcode Instrucción
[ Organización ] Präsentat ion Modos de direccionamiento D.Mery 98 Arquitectura de Computadores 1.Inmediato 2.Directo (o absoluto) 3.Indirecto 4.Registro 5.Indirecto con registro 6.Desplazamiento (Indexado)
[ Organización ] Präsentat ion Modos de direccionamiento D.Mery 99 Arquitectura de Computadores OperandOpcode Instruction 1. Inmediato
[ Organización ] Präsentat ion Modos de direccionamiento D.Mery 100 Arquitectura de Computadores 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
[ Organización ] Präsentat ion Modos de direccionamiento D.Mery 101 Arquitectura de Computadores 2. Directo (o absoluto) Address AOpcode Instruction Memory Operand
[ Organización ] Präsentat ion Modos de direccionamiento D.Mery 102 Arquitectura de Computadores 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
[ Organización ] Präsentat ion Modos de direccionamiento D.Mery 103 Arquitectura de Computadores 3. Indirecto Address AOpcode Instruction Memory Operand Pointer to operand
[ Organización ] Präsentat ion Modos de direccionamiento D.Mery 104 Arquitectura de Computadores 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
[ Organización ] Präsentat ion Modos de direccionamiento D.Mery 105 Arquitectura de Computadores 4. Registro Register Address ROpcode Instruction Registers Operand
[ Organización ] Präsentat ion Modos de direccionamiento D.Mery 106 Arquitectura de Computadores 4. Registro 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
[ Organización ] Präsentat ion Modos de direccionamiento D.Mery 107 Arquitectura de Computadores 5. Indirecto con registro Register Address ROpcode Instruction Memory Operand Pointer to Operand Registers
[ Organización ] Präsentat ion Modos de direccionamiento D.Mery 108 Arquitectura de Computadores El operando está en la memoria direccionada por un registro. Operando = (RN) Hay un acceso menos a memoria que en direccionamiento indirecto 5. Indirecto con registro
[ Organización ] Präsentat ion Modos de direccionamiento D.Mery 109 Arquitectura de Computadores 6. Desplazamiento Register ROpcode Instruction Memory Operand Pointer to Operand Registers Address A +
[ Organización ] Präsentat ion Modos de direccionamiento D.Mery 110 Arquitectura de Computadores 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) 6. Desplazamiento
[ Organización ] Präsentat ion Instrucciones D.Mery 111 Arquitectura de Computadores
[ Organización ] Präsentat ion Instrucciones D.Mery 112 Arquitectura de Computadores Formato de las instrucciones del 68000: Labelnemotécnico[.S]operando1,[operando2] Dirección Instrucción Operandos Longitud de los operandos B = byte W = word L = large word
[ Organización ] Präsentat ion Instrucciones D.Mery 113 Arquitectura de Computadores Formato de las instrucciones del 68000: Labelnemotécnico[.S]operando1,[operando2] INICIO MOVE.B D3,D4 Copia el byte menos significativo de D3 en D4
[ Organización ] Präsentat ion Instrucciones D.Mery 114 Arquitectura de Computadores Formato de las instrucciones del 68000: Labelnemotécnico[.S]operando1,[operando2] INICIO MOVE.B D3,D4 Copia el byte menos significativo de D3 en D4 WARNING: En el la sintaxis es al revés que otros Procesadores. Esta instrucción significa que Datos de D3 se copian en D4 y NO VICEVERSA!!
[ Organización ] Präsentat ion Instrucciones D.Mery 115 Arquitectura de Computadores Formato de las instrucciones del 68000: Labelnemotécnico[.S]operando1,[operando2] Para usar números: %binario $hexagesimal Ejemplo: ADD.W % ,D2 MOVE.L #$18,D6
[ Organización ] Präsentat ion Instrucciones D.Mery 116 Arquitectura de Computadores 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] un byte [W]dos bytes (una palabra) o [L]cuatro bytes (palabra larga).
[ Organización ] Präsentat ion Instrucciones D.Mery 117 Arquitectura de Computadores LA MEMORIA 8 bits B W L
[ Organización ] Präsentat ion Instrucciones D.Mery 118 Arquitectura de Computadores 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 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.
[ Organización ] Präsentat ion Instrucciones D.Mery 119 Arquitectura de Computadores LA MEMORIA 8 bits Almacenamiento de $0F en 500 (Byte) 0F 8 bits Almacenamiento de $09A4 en 500 (Word) 09 A4 8 bits Almacenamiento de $0834AFC0 en 500 (Large) AF C0
[ Organización ] Präsentat ion Instrucciones D.Mery 120 Arquitectura de Computadores REGISTROS DE DATOS El Motorola 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.
[ Organización ] Präsentat ion Instrucciones D.Mery 121 Arquitectura de Computadores 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: %binario $hexagesimal
[ Organización ] Präsentat ion Instrucciones D.Mery 122 Arquitectura de Computadores 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 % ,D2 suma la palabra que está en la dirección de memoria indicada, a D2. Significa: D2.W D2.W + (% ) Para recordar: %binario $hexagesimal
[ Organización ] Präsentat ion Instrucciones D.Mery 123 Arquitectura de Computadores 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
[ Organización ] Präsentat ion Instrucciones D.Mery 124 Arquitectura de Computadores 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)
[ Organización ] Präsentat ion Instrucciones D.Mery 125 Arquitectura de Computadores 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:D0.W (A0) A0 A0 + 2
[ Organización ] Präsentat ion Instrucciones D.Mery 126 Arquitectura de Computadores 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: A0 A0 – 1 D0.B (A0)
[ Organización ] Präsentat ion Instrucciones D.Mery 127 Arquitectura de Computadores 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: D1.L (A0 + 6×4)
[ Organización ] Präsentat ion Instrucciones D.Mery 128 Arquitectura de Computadores 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:D0.B (4+A0+D1)
[ Organización ] Präsentat ion Instrucciones D.Mery 129 Arquitectura de Computadores 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: D0.B (24+PC)
[ Organización ] Präsentat ion Instrucciones D.Mery 130 Arquitectura de Computadores 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:D1.B (24 + PC + D0)
[ Organización ] Präsentat ion Instrucciones D.Mery 131 Arquitectura de Computadores 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 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.
[ Organización ] Präsentat ion Instrucciones D.Mery 132 Arquitectura de Computadores 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.
[ Organización ] Präsentat ion Instrucciones D.Mery 133 Arquitectura de Computadores 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).
[ Organización ] Präsentat ion Instrucciones D.Mery 134 Arquitectura de Computadores 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.
[ Organización ] Präsentat ion Instrucciones D.Mery 135 Arquitectura de Computadores INSTRUCCIONES DEL 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
[ Organización ] Präsentat ion Instrucciones D.Mery 136 Arquitectura de Computadores 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: InstrucciónDescripción MOVE Copia de datos de fuente a destino 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
[ Organización ] Präsentat ion Instrucciones D.Mery 137 Arquitectura de Computadores 2.- Instrucciones aritméticas El Motorola 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: InstrucciónDescripción ADD / SUB Suma resta general 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
[ Organización ] Präsentat ion Instrucciones D.Mery 138 Arquitectura de Computadores 2.- Instrucciones aritméticas (cont…) El Motorola 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: InstrucciónDescripción MULS y MULU Multiply signed & Multiply unsigned 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
[ Organización ] Präsentat ion Instrucciones D.Mery 139 Arquitectura de Computadores 3.- Instrucciones lógicas El Motorola 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. InstrucciónDescripción AND And lógico 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
[ Organización ] Präsentat ion Instrucciones D.Mery 140 Arquitectura de Computadores 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. InstrucciónDescripción ASL / ASR Aritmetic shift left / right LSL / LSR Logical shift left / right ROL / ROR Rotate left / right ROXL / ROXR Rotate left / right incluyendo flag X
[ Organización ] Präsentat ion Instrucciones D.Mery 141 Arquitectura de Computadores 5.- Instrucciones de manipulación de bits El Motorola 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. InstrucciónDescripción BTST Bit test BCLR Bit clear BSET Bit set BCHG Bit change
[ Organización ] Präsentat ion Instrucciones D.Mery 142 Arquitectura de Computadores 6.- Instrucciones de operación en código BCD El Motorola 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. InstrucciónDescripción ABCD Suma fuente al destino NBCD Niego el destino SBCD Resta fuente al destino
[ Organización ] Präsentat ion Instrucciones D.Mery 143 Arquitectura de Computadores 7.- Instrucciones de ramificación y salto Bcc (Branch on condition code) Label: salta a label cuando cc es verdadero: Bcc Condición (cc) BEQLABEL Z BNELABEL Z' BCSLABEL C BCCLABEL C' BHILABEL C' · Z' BLSLABEL C + Z BMILABEL N BPLLABEL N' BVSLABEL V BVCLABEL V' BGTLABEL Z' · [[N · V] + [N' · V']] BGELABEL [N · V] +[N' · V'] BLTLABEL [N · V'] + [N' · V] BLELABEL Z + [N · V'] + [N' · V]
[ Organización ] Präsentat ion Instrucciones D.Mery 144 Arquitectura de Computadores InstrucciónDescripción DBcc Decrement and branch on condition BRA Branch incondicional (direccionamiento relativo) JMP Jump incondicional (direccionamiento absoluto) STOP Se detiene la CPU NOP No ejecuta operación (sirve como delay) 7.- Instrucciones de ramificación y salto (cont…)
[ Organización ] Präsentat ion Instrucciones D.Mery 145 Arquitectura de Computadores 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.
[ Organización ] Präsentat ion Instrucciones D.Mery 146 Arquitectura de Computadores Reference Manual pdf
Präsentat ion D.Mery 147 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 Modos de direccionamiento 3.6 Assembler 3.7 Subrutinas 3.8 Interrupciones
[ Organización ] Präsentat ion Assembler D.Mery 148 Arquitectura de Computadores 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.Cargar el contenido de 500 en el acumulador. 2.Sumar al acumulador el contenido de Sumar al acumulador el contenido de Almacenar el acumulador en la posición 503.
[ Organización ] Präsentat ion Assembler D.Mery 149 Arquitectura de Computadores Ejemplo sencillo: implementar T = X + Y + Z Suponiendo un código binario para las instrucciones: 1.Cargar el contenido de 500 en el acumulador:
[ Organización ] Präsentat ion Assembler D.Mery 150 Arquitectura de Computadores Ejemplo sencillo: implementar T = X + Y + Z Suponiendo un código binario para las instrucciones: 1.Cargar el contenido de 500 en el acumulador: Este código significa cargar en el acumulador el contenido de esto ( significa 500)
[ Organización ] Präsentat ion Assembler D.Mery 151 Arquitectura de Computadores Ejemplo sencillo: implementar T = X + Y + Z Suponiendo un código binario para las instrucciones: 1.Cargar el contenido de 500 en el acumulador: Sumar al acumulador el contenido de Sumar al acumulador el contenido de Almacenar el acumulador en la posición
[ Organización ] Präsentat ion Assembler D.Mery 152 Arquitectura de Computadores 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: X es Y es Z es 011A
[ Organización ] Präsentat ion Assembler D.Mery 153 Arquitectura de Computadores Ejemplo sencillo: implementar T = X + Y + Z Programa en binario: Explicación A (500) A A + (501) A A + (502) (503) A : Dato X Dato Y Dato Z Libre para escribir T
[ Organización ] Präsentat ion Assembler D.Mery 154 Arquitectura de Computadores Ejemplo sencillo: implementar T = X + Y + Z : Lenguaje máquina
[ Organización ] Präsentat ion Assembler D.Mery 155 Arquitectura de Computadores Ejemplo sencillo: implementar T = X + Y + Z : A Programa en hexa
[ Organización ] Präsentat ion Assembler D.Mery 156 Arquitectura de Computadores Ejemplo sencillo: implementar T = X + Y + Z LDA (500) ADD (501) ADD (502) STA (503) : DAT DAT DAT 011A DAT 0000 Programa simbólico
[ Organización ] Präsentat ion Assembler D.Mery 157 Arquitectura de Computadores Ejemplo sencillo: implementar T = X + Y + Z INICIOLDA (VX) ADD (VY) ADD (VZ) STA (VT) : VXDAT VYDAT VZDAT 011A VTDAT 0000 Programa en assembler
Präsentat ion D.Mery 158 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 Modos de direccionamiento 3.6 Assembler 3.7 Subrutinas 3.8 Interrupciones
Präsentat ion D.Mery 159 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
[ Organización ] Präsentat ion Subrutinas D.Mery 160 Arquitectura de Computadores 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.
[ Organización ] Präsentat ion Subrutinas D.Mery 161 Arquitectura de Computadores 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.
[ Organización ] Präsentat ion Subrutinas D.Mery 162 Arquitectura de Computadores Uso de subrutinas: Programa principal Subrutina Llamado a Subrutina
[ Organización ] Präsentat ion Subrutinas D.Mery 163 Arquitectura de Computadores Uso de subrutinas: Programa principal Subrutina Llamado a Subrutina Llamado a Subrutina j j+1
[ Organización ] Präsentat ion Subrutinas D.Mery 164 Arquitectura de Computadores 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.
[ Organización ] Präsentat ion Subrutinas D.Mery 165 Arquitectura de Computadores Ejemplo: Se desea hacer un programa que realice las siguientes operaciones: (0100) (0100) + 5 (0200) (0200) + 5 (0204) (0204) + 5
[ Organización ] Präsentat ion Subrutinas D.Mery 166 Arquitectura de Computadores 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.
[ Organización ] Präsentat ion Subrutinas D.Mery 167 Arquitectura de Computadores Ejemplo: Se desea hacer un programa que realice las siguientes operaciones: (0100) (0100) + 5 (0200) (0200) + 5 (0204) (0204) + 5 Programa principalSubrutina LOAD X,0100SUM5LOAD A,(X) CALL SUM5ADD 5 LOAD X,0200STORE (X),A CALL SUM5RET LOAD X,0204 CALL SUM5
[ Organización ] Präsentat ion Subrutinas D.Mery 168 Arquitectura de Computadores Ejemplo: Se desea hacer un programa que realice las siguientes operaciones: (0100) (0100) + 5 (0200) (0200) + 5 (0204) (0204) + 5 Programa principalSubrutina LOAD X,0100SUM5LOAD A,(X) CALL SUM5ADD 5 LOAD X,0200STORE (X),A CALL SUM5RET LOAD X,0204 CALL SUM5 ¿Qué pasa si el programa principal estaba usando A?
[ Organización ] Präsentat ion Subrutinas D.Mery 169 Arquitectura de Computadores Ejemplo: Se desea hacer un programa que realice las siguientes operaciones: (0100) (0100) + 5 (0200) (0200) + 5 (0204) (0204) + 5 Programa principalSubrutina LOAD X,0100SUM5LOAD A,(X) CALL SUM5ADD 5 LOAD X,0200STORE (X),A CALL SUM5RET LOAD X,0204 CALL SUM5 ¿Qué pasa si el programa principal estaba usando A? kaput!!
[ Organización ] Präsentat ion Subrutinas D.Mery 170 Arquitectura de Computadores Ejemplo: Se desea hacer un programa que realice las siguientes operaciones: (0100) (0100) + 5 (0200) (0200) + 5 (0204) (0204) + 5 Programa principalSubrutina LOAD X,0100SUM5PUSH A CALL SUM5LOAD A,(X) LOAD X,0200ADD 5 CALL SUM5STORE (X),A LOAD X,0204POP A CALL SUM5RET Solución: se usa la pila
[ Organización ] Präsentat ion Subrutinas D.Mery 171 Arquitectura de Computadores 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)
Präsentat ion D.Mery 172 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 Modos de direccionamiento 3.6 Assembler 3.7 Subrutinas 3.8 Interrupciones
[ Organización ] Präsentat ion Interrupciones D.Mery 173 Arquitectura de Computadores El ciclo de una instrucción (sin interrupción)
[ Organización ] Präsentat ion Interrupciones D.Mery 174 Arquitectura de Computadores Diagrama de estado (sin interrupción)
[ Organización ] Präsentat ion Interrupciones D.Mery 175 Arquitectura de Computadores 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 t
[ Organización ] Präsentat ion Interrupciones D.Mery 176 Arquitectura de Computadores Ejemplo sin interrupciones: un programa quiere leer datos del disco duro t CPU solicita datos CPU recibe datos Unidad de disco lee y envía datos
[ Organización ] Präsentat ion Interrupciones D.Mery 177 Arquitectura de Computadores Ejemplo sin interrupciones: un programa quiere leer datos del disco duro t ¿Qué hace la CPU en este tiempo? CPU solicita datos CPU recibe datos
[ Organización ] Präsentat ion Interrupciones D.Mery 178 Arquitectura de Computadores Ejemplo sin interrupciones: un programa quiere leer datos del disco duro t ¿Qué hace la CPU en este tiempo? NADA!! la CPU espera… CPU solicita datos CPU recibe datos
[ Organización ] Präsentat ion Interrupciones D.Mery 179 Arquitectura de Computadores 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)
[ Organización ] Präsentat ion Interrupciones D.Mery 180 Arquitectura de Computadores Ejemplo con interrupciones: un programa quiere leer datos del disco duro t CPU solicita datos CPU recibe datos CPU hace otra cosa Unidad de disco lee y envía datos 3 interrupción
[ Organización ] Präsentat ion Interrupciones D.Mery 181 Arquitectura de Computadores Ejemplo con interrupciones: un programa quiere leer datos del disco duro t CPU solicita datos CPU recibe datos CPU hace otra cosa Unidad de disco lee y envía datos 3 interrupción Ahorro de tiempo
[ Organización ] Präsentat ion Interrupciones D.Mery 182 Arquitectura de Computadores 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
[ Organización ] Präsentat ion Interrupciones D.Mery 183 Arquitectura de Computadores El ciclo de una instrucción (con interrupción)
[ Organización ] Präsentat ion Interrupciones D.Mery 184 Arquitectura de Computadores Diagrama de estado (con interrupción)
[ Organización ] Präsentat ion Interrupciones D.Mery 185 Arquitectura de Computadores CPU ROMRAM Bus de direcciones Bus de datos A12 A11 : A0 A12 CE RD WR A0 A11 D0 D7 D0 D7 D0 D7 A0 A12 WR RD MREQ
[ Organización ] Präsentat ion Interrupciones D.Mery 186 Arquitectura de Computadores CPU I/ORAM Bus de direcciones Bus de datos CE A0 A11 D0 D7 D0 D7 A0 A12 WR RD MREQ decoder ROM CE INT IORQ
[ Organización ] Präsentat ion Interrupciones D.Mery 187 Arquitectura de Computadores 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.
[ Organización ] Präsentat ion Interrupciones D.Mery 188 Arquitectura de Computadores 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
[ Organización ] Präsentat ion Interrupciones D.Mery 189 Arquitectura de Computadores
[ Organización ] Präsentat ion Interrupciones D.Mery 190 Arquitectura de Computadores 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.
[ Organización ] Präsentat ion Interrupciones D.Mery 191 Arquitectura de Computadores Interrupción múltiple (secuencial)
[ Organización ] Präsentat ion Interrupciones D.Mery 192 Arquitectura de Computadores 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.
[ Organización ] Präsentat ion Interrupciones D.Mery 193 Arquitectura de Computadores Interrupción múltiple (anidadas)
[ Organización ] Präsentat ion Interrupciones D.Mery 194 Arquitectura de Computadores Secuencia temporal de varias interrupciones