Estructura De Computadores 3

  • November 2019
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Estructura De Computadores 3 as PDF for free.

More details

  • Words: 20,134
  • Pages: 69
Delegación de Alumnos de Informática Estructura y Tecnología de Computadores http://alu.etsii.ull.es

Temario Capítulo 0.- Evolución histórica de los Ordenadores Capítulo 1.- El Procesador: Estructura clásica de Von Neumann. Unidades generales: Procesador, Memoria y Entrada/Salida y Unidad de Control. Repertorio de instrucciones. Tipos de direccionamiento. Buses. Capítulo 2.- Jerarquía de memoria y memorias caché: Propiedad de localidad. Memoria Virtual. Paginación y Segmentación. Algoritmos de reemplazamiento. Tipos de memoria caché: Mapeado directo, Set asociativo. Bloques/líneas Capítulo 3.- Unidad de Control: Lógica cableada. Lógica microprogramada. Microórdenes. Microinstrucciones. Tipos. Capítulo 4.- Repertorio de instrucciones y lenguaje ensamblador,familia 80x86. Capítulo 5.- Unidad Aritmético-Lógica: Algoritmos de multiplicación/división para enteros. Operaciones en punto flotante. Capítulo 6.- Unidad de Entrada/Salida: Transferencia programada. Sistema de interrupciones. Acceso directo a memoria. Bloques básicos de un controlador de periférico.

Delegación de Alumnos de Informática Estructura y Tecnología de Computadores http://alu.etsii.ull.es

BIBLIOGRAFIA Y REFERENCIAS Apuntes facilitados por Isidro Rodríguez Martín, alumno de Informática en La Universidad de la Laguna. @

@

Actualizado el 15 de Marzo de 2004

Delegación de Alumnos de Informática Estructura y Tecnología de Computadores http://alu.etsii.ull.es

TEMA 0.- EVOLUCIÓN HISTÓRICA DE LOS COMPUTADORES. Antecedentes históricos: Era Mecánica. Era Electromecánica. Era Electrónica: 1ª Generación. 2ª Generación. 3ª Generación. 4ª Generación. 5ª Generación. ERA MECÁNICA: SCHICKARD (1623): Creó la primera calculadora que se conoce. Permitía sumar y restar de forma automática, y dividir y multiplicar de forma semiautomática. PASCAL (1642): Creó la segunda calculadora, pero sólo permitía sumar. LEIBNIZ (1671): Creó la tercera calculadora, permitía multiplicar. Se le ocurrió utilizar el sistema binario para ello. BABBAGE (1792-1871): Sienta las bases del ordenador moderno. Primero intenta construir la máquina de diferencias, la cual permitía calcular polinomios a base de hacer sumas y restas reiteradas, y podía aproximar funciones. Luego inventa la máquina analítica que se quedó en un mero proyecto. Arquitectura de Von Neumann: Control. Unidad aritmética (Hill). Memoria (Store). ERA ELECTROMECÁNICA: L. TORRES QUEVEDO (Relés): Aritmética en punto flotante. HOLLERITH: Tarjetas perforadas. KZUSE: Inventó el Z1, Z2, Z3(primer ordenador universal completo) sin saber nada de los anteriores autores. Eran máquinas de relés. Fueron ordenadores de propósito general. AIKEN: Creó la Mark 1, con limitación de velocidad y poca fiabilidad. Su propósito era resolver ecuaciones.

Tema 0 - Página 1

Delegación de Alumnos de Informática Estructura y Tecnología de Computadores http://alu.etsii.ull.es

ERA ELECTRÓNICA: 1ª Generación: (1938

1957):

Tubo de vacío Atanasoff

ABC. Su propósito era resolver sistema ecuaciones en binario.

Hauchly/ Ecuert: Crearon en 1943 ENIAC. J. Von Neumann: Cambió el ENAC. La memoria está cargada con los programas, en lugar de usar aritmética decimal usó la aritmética binaria, y consiguió que se pudiera romper las secuencias. Trabajaba en BCD. Unidad de control

CPU Unidad aritméticológica

Memoria principal

Dispositivos entrada / salida

Mundo exterior

El esquema anterior corresponde con la máquina IAS, que fue referencia para futuros fabricantes de ordenadores.

La memoria principal almacena tanto datos como programas sin distinción alguna. Por eso hay que controlar lo que se ejecuta. Las unidades trabajan secuencialmente y su almacenamiento es limitado. Al tener todo controlado por la memoria principal, la velocidad de la máquina depende de ella, a esto se le llama cuello de botella. Tipos de instrucciones: Transferencia de datos. Salto incondicional. Salto condicional. Aritmética. Modificación de direcciones. WILKES: En 1949 construye el EDSAC (primer ordenador con arquitectura Von Neumann) HAUCHY / ECUERT: Crean el UNIVAC I en 1951 para empresas privadas. Fue el primer ordenador que se fabricó en serie. La memoria principal estaba limitada por las válvulas de vacío y se cambia en el UNIVAC II por la memoria de ferritas (a través de anillos), la memoria no se borra, pero es destructiva, si se lee la información y hay que reconstruirla. Soporta cintas magnéticas. IBM: En 1953 entra en el mercado de los ordenadores con IBM 701, soporta periféricos como cintas magnéticas. Su propósito era realizar aplicaciones de cálculo. Soportaba tambor magnético. Le sigue el 704, 709 con punto flotante y modos de direccionamiento potente. Salió también el 702 destinado a mercados de gestión. TECNOLOGÍA: ms (tiempo típico) MTBF: 2h (tiempo medio que tarda en volver a fallar) SOFTWARE: FORTRAN (1957): Lenguaje de alto nivel. Tema 0 - Página 2

Delegación de Alumnos de Informática Estructura y Tecnología de Computadores http://alu.etsii.ull.es

2ª Generación (1958-1964): Se introduce el transistor sustituyendo la válvula. IBM (1960): IBM 7070 (con transistores) Orientado a los negocios de gran envergadura. No era compatible con ordenadores anteriores. No tuvo éxito. Sin embargo, el 7080 sí tuvo éxito. UNIVAC: 1107 CDC BURROUGHS: Crea la máquina de pilas, se aparta de la arquitectura de Von Neumann. DEC (DIGITAL): PDP (mini computador), que era más pequeño, mucho más barato, aunque menos potente. COBOL (1960) TECNOLOGÍA: Interrupciones. Canales de E / S con procesador dedicado. 10-6 s. Memoria de ferritas. MTBF: ~ 10h 3ª Generación(1965 circuitos integrados. (SSI

1971): Se introducen componentes mínimos para crear

SMALL {12 puertas lógicas}; MSI

IBM 360

MÉDIUM{100 puertas lógicas})

370 (Arquitectura)

(1967) 360/67 Memoria virtual (1968) 360/85 Primer ordenador comercial con memoria caché. DIGITAL (DEC) PDP

11

CISC

VAX CDC: Precursora de los supercomputadores TECNOLOGÍA: ms MTBF: ~ 100h (Cientos de horas) Se mejoran las interrupciones Memoria virtual y caché. Circuito impreso. Varias CPU multiusuario. SOFTWARE: Basic, Pascal. Aparecen Sistemas Operativos

Tema 0 - Página 3

Delegación de Alumnos de Informática Estructura y Tecnología de Computadores http://alu.etsii.ull.es

4ª Generación (1972

?): Invención del microprocesador. (LSI;VLSI)

1ª Fase: 4 bits Intel 4004 (2300 transistores) para calculadoras. 2ª Fase:8 bits (1974 - 1976): Intel 8080 tipo S. O.

CP/M (control program for microcomputers)

Motorola 6800 3ª Fase:8 bits mejorados Z80 tipo S. O.

CP/M

Intel 8085 4ª Fase:16 bits(1978) 8086 (8088) 5ª Fase:32 bits Intel 386 Motorola 68000 TECNOLOGÍA: ps Tecnología láser Tiempo medio de fallo: Millones de horas. 5ª Generación CISC (Complex Instruction Set Computer) RISC (Reducto Instruction Set Computer) Pipelines: Carga Decodificación Operación Escritura de resultados Superescalares: Capaces de hacer múltiples operaciones vectoriales. VLIW: (Very Large Instruction Word) R10000(1946) Intel: 8086

SGI 386

Introducción de instrucciones MMX Microoperaciones ( Se verán de diferente forma a la que Intel nombre )

Tema 0 - Página 4

Delegación de Alumnos de Informática Estructura y Tecnología de Computadores http://alu.etsii.ull.es

TEMA 1.- REPRESENTACIÓN DE LOS DATOS. DATOS NUMERICOS: Cada código tiene un peso, para el sistema binario, el peso es 2 (base 2) y para el sistema decimal, es 10 (base 10). CARACTERÍSTICA DE REPRESENTACIÓN DE NÚMEROS: Dimensión: Es un número fijo que determina el tamaño en bits de un determinado código. Byte: 8 bits; Palabra: Unidad privilegiada que es capaz de manejar la máquina, es decir, tamaño de datos que podemos manipular con una máquina determinada. Coincide con la anchura del bus de datos. Las palabras suelen ser de 16, 32 ó 64 bits. Podremos trabajar con medias palabras y dobles palabras. En el 8086 utilizaremos palabras de 16 bits. Resolución: Precisión que se puede conseguir en la representación. Cantidad mínima de información que pueda manejar la máquina. Precisión: Incremento más pequeño que se puede conseguir. Potencias negativas. Rango: Intervalo de números distintos que se consiguen con una cantidad de bits. Potencias positivas. CONVENIO DE REPRESENTACIÓN: Notación posicional: El peso de la cifra impone el peso que le corresponde al valor. Enteros: Naturales. Signo. Fraccionarios. Naturales: Binario Puro ...

n-1

Rango: 0

M

2n

1

0

M

n 1 i 0

Tema 1 - Página 1

Bi 2i

n bits

Delegación de Alumnos de Informática Estructura y Tecnología de Computadores http://alu.etsii.ull.es

Signo: Signo y Magnitud: Siempre asignamos un bit fijo que nos indique el signo de ese número, y el resto en binario puro. n bits

1-Negativo

Signo

0-Positivo

...

n - 1 bits

(2n-1

Rango: 1) M 2 1 Un pequeño problema que tiene es la doble representación del cero. n-1

-0

1

0

0

0

+0

0

0

0

0

Complemento a Uno (C1): Los números positivos se representan en binario puro, con el bit de signo a 0, pero para los negativos se cambian los ceros por uno y los uno por cero de toda la magnitud, con el bit de signo a 1. Existe problema de duplicidad del cero: C1(x) = -x = (2n

1)

x

-0

1

1

1

1

+0

0

0

0

0

Rango: - (2n-1

1)

M

2

n-1

1

Complemento a Dos (C2): Los positivos se representan en binario puro, con bit de signo a 0, y los negativos se busca el primer uno de derecha a izquierda, dejamos ese uno y cambiamos los 0 por 1 y viceversa a partir de ahí en adelante. Surgen problemas con configuraciones, ya que aparece la autocomplementariedad. 8 = 1000 = -8. C2(x) = -x = (2n

x) = C1(x) + 1

-8

1

0

0

0

+8

1

0

0

0

Rango: - (2n-1

1)

M

2

n-1

1

Representación en exceso z

z

2 2

n

1

n

1

128 127

nº binario puro + z = nº exceso z

Representación de números fraccionarios: Punto fijo: Parte entera

Parte fraccionaria

Punto flotante: En este caso la coma no ocupará un punto fijo y variará según el caso. Guardaremos un lugar para el exponente que nos dirá donde se guardará o encuentra el punto.

M

B

E

Tema 1 - Página 2

Delegación de Alumnos de Informática Estructura y Tecnología de Computadores http://alu.etsii.ull.es

Normalización: Sistema que exige que todos los números tengan representaciones similares. La mantisa siempre va a tener la siguiente forma si está normalizada: 1.XXXX. Otra forma de normalizar sería 0.1XXXX Para el 0 tenemos todos los bits de la mantisa a 0 con un exponente muy negativo. Para ellos utilizaremos una representación en exceso z . La mantisa se representa en magnitud y signo. Nos quedará 23 bits para guardar la mantisa. En estos 23 bits únicamente se guarda lo que sigue a continuación del punto .XXXX Representación IEE 754 de 32 bits Exponente 8 bits

Mantisa (numero) 23 bits (binario puro)

N = (-1)S

(1 + M)

2E

127

Sólo funcionará si E se encuentra entre los valores: 0 < E < 255. El 255 se evita por valores reservados. EXP(E)

MANTISA



0

0

Cero

0

(-1) (OVERFLOW)

255

No nula

NaN(not a number)

0

No nula

(-1)S*(0.M)*2-126

1-254

X

(-1)S 1.M 2E-127

= 255

A todos los valores de la tabla hay que quitarles el exceso 127 Rango: 1.0 · 2-126

1.111..1 · 2127

Supongamos que un nos da este resultado alguna operación: M0000001XX 0.00001xxx

2-125 (UNDERFLOW) 2-126.

La configuración es tan próxima a 0 que la normalización de este número lleva al underflow. Para convertir la representación en IEE 754 (32 bits). N = 1320.025

105

N = 1.M

2P

log2 N = log2 (1.M) + log2 (2P) log2 (1320.025

105) = 26,9759901, donde 26=p, y 9759901= 1.M

226 < N < 227

N

226 = M

M = 1.9759901 = (1.100101001110110010011101)2 E = 26 + 127 = (153)10 = (10011001)2 S=0 (N)

754

= SEM = (01001001100101001110110010011101)2 = (4994EC9D)HEX

IEE 754 de 64 bits tiene: 1 bit signo, 11 bits de exponente (exceso 1023) y 52 bits de mantisa. Tema 1 - Página 3

Delegación de Alumnos de Informática Estructura y Tecnología de Computadores http://alu.etsii.ull.es

BCD (Binary Code Decimal) 0

1

2

3

4

5

6

7

8

9

0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 CODIGO ALFANUMERICO. ASCII (American Standard Code for Information Interchange) 7 bits (0..127) 0

...

31

32

...

47

48

...

57

58

...

64

...

@

65

...

90

91

...

96

97

...

127

Caracteres de Control : LF

Fin de Linea ...

TAB CR

Tabulador

Números

Letras Mayúsculas

...

Letras Minúsculas

Retorno de Carro

ISO: La organización ISO ha intentado realizar un código universal llamado LATIN1, donde completan las cadenas especiales de las lenguas latinas. UNICODE: La unificación definitiva sin alusión entre americanos y europeos ha sido la también realizada por ISO: UNICODE. Trata los caracteres de forma abstracta y luego hay dos formas de traducción: UTF-8:Podemos utilizar más de un byte para representar caracteres según su tamaño. Los que se representan con un solo byte son compatibles con el ASCII. UTF-16:Usa un formato de 16 bits con la posibilidad de representar más de 65000. Además tiene un mecanismo de extensión. Se puede pasar de un formato a otro sin perder información.

Tema 1 - Página 4

Delegación de Alumnos de Informática Estructura y Tecnología de Computadores http://alu.etsii.ull.es

TEMA 2: EL PROCESADOR

Buses del Sistema (líneas de comunicación) NOTA: Una línea de entrada y una de salida a cada dispositivo, nunca una línea para más de una entrada MEMORIA: (Vectores o matrices) Almacena datos. También pueden existir zonas que sirven para guardar donde trabajar con E / S.

ENTRADA / SALIDA: (E/S)

transfiere datos entre computador y entorno externo.

Componentes CPU: Unidad de control: Controla el funcionamiento de la CPU. ALU: Lleva a cabo funciones de procesamiento de datos. Registros: Proporciona almacenamiento interno a CPU Interconexiones: Mecanismos para comunicar UC, registros y ALU

Tema 2 - Página 1

Delegación de Alumnos de Informática Estructura y Tecnología de Computadores http://alu.etsii.ull.es

PC apunta a memoria donde hay guardadas instrucciones. IR guarda la primera palabra de cada instrucción (código de operación) Las instrucciones pueden ser de varias palabras AC almacena los resultados. El programador puede acceder a él. Antes del MDR también hay otro registro MBR, que es un registro temporal o de intercamibo (MEMORY BUFFER REGISTER) Registro de flags o acumulador de flags(banderas, indicadores): Se coordina con la ALU. Se registra bit a bit. Nos muestra los resultados de las operaciones aritméticas, el signo, el bit de acarreo, overflow, etc. en cada uno de los bits. Se guardan datos que pueden condicionar los estados. Registro SP (Stack Pointer): Puntero de pila. Se guardan los espacios de almacenamiento y este puntero nos dice donde está guardado ese dato en memoria. Registro que contiene la dirección en memoria principal de un dato a utilizar. Solo muestra el dato que se encuentra en el tope de la pila. Como las líneas de datos son las mismas para todos los dispositivo, cuando en un dispositivo hay señal, no se sabe de quién es, por tanto se utilizan dispositivos triestados para evitar conflictos entre dispositivos y así saber qué dispositivo envía la señal. El tercer estado se llama estado de alta impedancia. Para ejecutar una instrucción, hay que recorrer un ciclo, el llamado CICLO DE INSTRUCCIÓN, que consta de varios ciclos: Ciclo de búsqueda: Busca código de la operación a ejecutar en el Program Counter. La búsqueda del código de operación se divide en: leer la instrucción y decodificarla. Ciclo de ejecución: Llevar a cabo la operación y actualizar Program Counter. INTERRUPCIÓN: Son líneas que solicitan CPU: están en el bus de control. CLASIFICACION DE PARALELISMO DE FLYNN: Tiene en cuenta el paralelismo en ejecuciones y el paralelismo en datos. SI: (SINGLE INSTRUCTION) MI: (MULTIPLE INSTRUCTION) SD: (SINGLE DATA) MD: (MULTIPLE DATA) SIMD: Una sola instrucción con muchos datos MIMD: Varias instrucciones con muchos datos Von Neumann: SISD Una sola instrucción y un solo dato. Instrucciones: Código que el procesador puede realizar. No se puede parar. La colección de todos las instrucciones es lo que se llama repertorio o juego de instrucciones de la máquina y está definida por la máquina, ya que cada máquina puede hacer una u otra función, por lo que puede realizar una u otra instrucción. Tema 2 - Página 2

Delegación de Alumnos de Informática Estructura y Tecnología de Computadores http://alu.etsii.ull.es

Puede tener un tamaño variado, depende del número de operandos que tenga, de 1 a más palabras. Opcode: Código de una operación a realizar por la máquina. Oper1, Oper2: Operandos No siempre se puede asociar una palabra a estos operandos. Son la fuente, destino de la información a procesar. Están en memoria principal, registros CPU, registros E / S, Código máquina: Tenemos en memoria un código que representa una instrucción que la máquina realiza, suele ser un número en código binario. Nemónico: Símbolo con el que se representan las instrucciones para evitar trabajar con números binarios. Ensamblador Nemónico

Código Máquina Compilador

Prog. Alto Nivel

Cádigo Máquina

Ensamblado: Proceso que pasa del código nemónico al código máquina. La operación es 1 a 1. Compilación: Proceso que pasa del programa de alto nivel al código máquina. La operación es mucho mayor que en el ensamblado y crea un programa. Nos permite escribir pseudo instrucciones como generar espacio para variables, macros, .... Operandos: Explícito: Operando que ocupa su propio lugar en memoria Implícito: No ocupa siempre un lugar en memoria, forman parte del opcode, cabe registros, que operarían en la operación del opcode. Los registros poseen pocos bits en el opcode OPCODE

OP.IMP

OP. EXPLICITOS

OP. EXPLICITOS

CLASIFICACIÓN DE PROCESADOR: Clasificación según número de referencia a memoria: o 3 direcciones: Cada instrucción especifica dos posiciones de operandos y la dirección del resultado. Ej: OP A, B, C A B OP C o 2 direcciones: Una de las direcciones debe hacer el servicio doble de uno de los operandos y el resultado. Ej: OP A, B A A OP B o 1 dirección: Sólo trabajamos con un operando, y el otro es implícito, el acumulador de la máquina, que se emplea como operando y como lugar para almacenar el resultado.Ej: OP A AC AC OP A o 0 direcciones: Trabajamos en una máquina que tiene una organización especial de memoria, una pila que está en una posición conocida y al menos dos de los elementos de la cabecera se encuentran en los registros de CPU. Ej: OP T T OP (T 1) (T = cabecera de la pila) Tema 2 - Página 3

Delegación de Alumnos de Informática Estructura y Tecnología de Computadores http://alu.etsii.ull.es

CODIFICACIÓN DE LAS INSTRUCCIONES: Una instrucción puede ser más corta, igual o mayor que una palabra de la máquina. Dentro de una palabra podríamos encontrarnos dos instrucciones raramente, ó en 3 palabras una instrucción. En el 8086 tiene un bloque de 16 bits de datos

tiene unas palabras de 16 bits.

Contaremos lo más posible las instrucciones en una sola palabra si se puede . o Codificación en bloque: N bits(palabras de n bits) 2n posibles instrucciones

o Codificación por expansión: Hay que saber si hay operandos (registros) o no. También debemos conocer el número de operandos que tenemos. Indicamos el número de Opcode K operandos distintos y olvidar el nº de bits para los datos y los n 2 2k operandos. Elegimos el número de operandos que van a haber después y reservar su espacio, y así sucesivamente. Hay que conocer el nº de bits en que se divide el registro. Por ejemplo para n = 16 y k = 4. Tenemos: Instrucciones con tres operandos: (15 instrucciones) 0000

xxxx

yyyy

zzzz

0001

xxxx

yyyy

zzzz

.

.

.

.

.

.

.

.

.

.

.

.

1110

xxxx

yyyy

zzzz

La última configuración la dejamos como prefijo para la siguiente. Instrucciones con dos operandos: (14 instrucciones) 1111

0000

yyyy

Zzzz

1111

0001

yyyy

Zzzz

.

.

.

.

.

.

.

.

.

.

.

.

1111

1101

yyyy

zzzz

Las dos últimas configuraciones para la siguiente. Instrucciones con un único operando: (31 instrucciones) 1111

1110

0000

zzzz

1111

1110

0001

zzzz

. . . 1111

. . . 1110

. . . 1111

. . . zzzz

1111

1111

0000

zzzz

1111

1111

0001

zzzz

. . . 1111

. . . 1111

. . . 1110

. . . zzzz

Como antes dejamos la última configuración para la siguiente. Tema 2 - Página 4

Delegación de Alumnos de Informática Estructura y Tecnología de Computadores http://alu.etsii.ull.es

Instrucciones sin operadores, si los hay son implícitos: (16 instrucciones) 1111

1111

1111

0000

1111

1111

1111

0001

.

.

.

.

.

.

.

.

.

.

.

.

1111

1111

1111

1111

o Codificación Huffman: Consiste en codificar los códigos de cada operación con un número variable de bits. No importa el número de operandos. Las instrucciones más frecuentes reciben el opcode más corto. Para ello hay que realizar un estudio previo. Ej.:

Notas sobre la tabla: Los pares de configuraciones que aparecen rodeados por elipses son las configuraciones que se abrevian(original = origen flecha y abreviada = punta flecha) y, según apunta la flecha, los resultados de las abreviaciones en las columnas siguientes. Sin embargo, las configuraciones que aparecen rodeadas por rectángulos son las configuraciones que pasan a la siguiente columna sin alterarse. Los pasos a seguir son: 1º) Ordenar las frecuencias de más frecuentes a menos frecuentes. 2º) Sumamos las dos últimas frecuencias de estas instrucciones y se meten en orden en la tercera columna, y así sucesivamente hasta quedar sólo dos frecuencias: Siendo fi la frecuencia de la instrucción, y li su tamaño, La longitud media viene dada por: Longitud media

n

li fi 2.75 bits

i 1

Al final, la asignación de la configuración para cada instrucción se hace desde el final de la tabla al principio, es decir, de derecha a izquierda. Formato de los operandos: Explícitos (Datos o direcciones) Implícitos (Datos de registros) JUEGOS DE INSTRUCCIONES: Ortogonalidad: Se puede combinar todos los modos de direccionamiento con todas las operaciones de la máquina y con todos los registros de la máquina. Tema 2 - Página 5

Delegación de Alumnos de Informática Estructura y Tecnología de Computadores http://alu.etsii.ull.es

Características de un repertorio de instrucciones: Ser completo. Puede implementar cualquier operación computable. Sea eficiente: Las instrucciones más usadas sean la más rápida. Sea regular: Simetría entre los opcodes, juegos de direccionamientos, registros, etc, más ortogonal. Compatibilidad: (de arquitecturas)Con cualquier otro juego de instrucciones. TIPOS DE INSTRUCCIONES: Transferencia de datos: Para transferir datos entre memoria y registros. o MOVE: Mueve a una dirección de memoria. [MOV, M] o STORE, LOAD: Almacenan en la dirección de memoria.[ST, S], [LD] o EXCHANGE: Intercambia los dos operandos.[XCHG} o PUSH: Mete un valor en la pila. o POP: Saca un valor de la pila. Aritméticas: Proporcionan capacidad para procesar datos numéricos. o ADD: Suma y deja el resultado en el primer operando. o SUBSTRACT: Resta y deja el resultado en el primer operando. [SUB] o MULTIPLY:[MUL] o DIVIDE:[DIV] o NEGATE: Complementa un valor C2 o INC: Incremento o DEC: Decremento. Lógicas: Opera sobre bits de una palabra, para así procesar cualquier tipo de datos. o AND o OR o NOT o XOR o SHIFT: Desplazamiento de bits o ROTATE: Rotación de bits. El bit que sale se inserta por el otro lado. Control de flujo: Para variar la ejecución de instrucciones según alguna decisión dentro del propio programa. o JUMP: Salto. [J, JMP,...] o BRANCH: Equivalente al JUMP. Sólo existe en algunos ensambladores. o JUMP COND: Salto condicional. [JC, JZ] o JUMP SUBRUTINE:= CALL: Salto a subrutina a través de la bios. Pone en la pila la dirección de vuelta. o RETURN: Volver, inverso del CALL. [RET] o HALT: Parada. Tema 2 - Página 6

Delegación de Alumnos de Informática Estructura y Tecnología de Computadores http://alu.etsii.ull.es

o WAIT: Parada. o NOP: No opera, no hace nada. En el 8086 es un nemónico alternativo para intercambiar la X con la Y. MOV AX, AY Entrada / Salida: o INPUT [INP,...] o OUTPUT [OUT, OUTP, ...] Especiales: Controlan el comportamiento de la máquina. Depende de cada máquina. Habilitan interrupciones. Ejecución paso a paso. MODOS DE DIRECCIONAMIENTO: Método para entrar en la memoria. Inmediato: El operando está presente en la propia instrucción. Este direccionamiento es usado para definir y utilizar constantes, fijar valores iniciales. El tipo de representación de los datos es Ca2. Cuando operando se carga en un registro de datos, el bit de signo se replica hacia la izquierda hasta la longitud del bus de datos. No hay referencia a memoria. El mayor inconveniente es que el tamaño del numero está restringido a la longitud del campo de direcciones, que en la mayoría de los casos es más pequeño que la longitud del bus de datos. Directo: En el campo de dirección está la dirección efectiva del operando. Se hace sólo una referencia a memoria. La limitación es que proporciona un espacio de direcciones restringido porque la longitud del campo de dirección es menor que la longitud del campo de datos. Indirecto: En el campo de dirección se referencia a una dirección de una palabra de memoria que contenga la dirección completa del operando. La desventaja es que se hacen 2 referencias a memoria. Para una longitud de N bits disponemos de un espacio de direcciones de 2N bits. El nº de direcciones efectivas diferentes que pueden referenciarse en un instante es 2k con k como longitud de campo de direcciones. Directo por registros: Similar al directo, pero en el campo de direcciones se referencia a un registro, en lugar de una posición de memoria. Normalmente, un campo de direcciones que referencia a un registro consta de 3 o 4 bits. Así se pueden referenciar un total de 8 ó 16 registros de uso general. Las ventajas es que sólo es necesario un campo pequeño de direcciones en una instrucción. No hace referencias a memoria. La desventaja es que el espacio de direcciones está muy limitado. Indirecto por registros: Análogo al indirecto. En el campo de direcciones hay una referencia a un registro donde se referencia a una dirección de memoria. Sólo se hace una referencia a memoria. Con desplazamiento: Las instrucciones han de tener 2 campos de direcciones, al menos uno explícito. El valor contenido en uno de los campos se utiliza directamente. El otro se refiere a un registro cuyo contenido se suma a la dirección del anterior campo para generar la dirección efectiva. Hay tres tipos: Desplazamiento relativo: El registro referido es PC. Si las referencias a memoria están próximas a instrucción en ejecución, se ahorran bits de direcciones. Direccionamiento con registro base: el registro tiene la dirección de memoria y en el campo de direcciones se encuentra el desplazamiento a partir de la dirección que contiene el registro. La referencia al registro puede ser implícita o explícita. Indexado: El campo de direcciones referencia a una dirección de memoria y el registro contiene el desplazamiento. Ya que campo de direcciones es dirección de memoria, Tema 2 - Página 7

Delegación de Alumnos de Informática Estructura y Tecnología de Computadores http://alu.etsii.ull.es

(contiene + bits que campo dirección de instrucciones) hay más bits que direcciones en una instrucción con registro base. Un uso importante del modo de direccionamiento indexado es ejecutar operaciones iterativas. SALTOS: Absoluto: La dirección aparece directamente en el opcode. Cuando se va a realizar un salto de este tipo, el programa consulta una tabla de direcciones que posee y luego coge una dirección de memoria vacía y pone todos los saltos absolutos como relativos a esa dirección. Relativo: El operando contiene una dirección relativa o desplazamiento. El dato que contiene el operando hay que sumarlo a algo Un procesador es una máquina de m direcciones, si su procesador acepta instrucciones de cómo máximo, m referencias explícitas a memoria. (operandos explícitos). 8086: Tiene una gestión de memoria segmentada (para crear una dirección física este aparato debe hacer una serie de instrucciones antes). Dirección de 20 bits y 1 M de direcciones = 220. Orientada a utilizar registros de 16 bits. Los registros de segmento REG. SEGMENTO (16 BITS) 0000 (DS, SS, ES, CS) son todos de 16 bits. Una dirección de 20 bits se forma tomando un registro de segmento y se le añaden 4 DESPLAZAMIENTO OFFSET (16 BITS) ceros al final, se le suma un desplazamiento de 16 bits (offset) y se DIRECC. EFECTIVA (20 BITS) obtiene la dirección efectiva de 20 bits. La dirección efectiva es la dirección que va por los buses. Registros: son todos de 16 bits, pero hay algunos de 8 bits: AX

Acumulador

AH, AL

BX

Base

BH, BL

CX

Contador

CH, CL

DX

DH, DL

BP Puntero de base SI SOURCE INDEX DI DESTINATION INDEX CS Segmento de codificación DS Segmento de dato SS Segmento de pila ES Segmento de lo que haga falta Tamaño instrucciones: Puede ser de 1 a 4 bits, y en algunos casos puede ser de 5 bits (el 8086 utiliza prefijos que indican el segmento de la instrucción). Prefijo de selección de segmento: es un byte con el siguiente formato 001

Registro

110 00 ES

bits

01 CS 10 SS 11 DS

Tema 2 - Página 8

Delegación de Alumnos de Informática Estructura y Tecnología de Computadores http://alu.etsii.ull.es

Codificación de instrucciones del 8086 Vamos a ver como se codifican algunas operaciones para el 8086. Tienen opcodes de 8 o 16 bits, la codificación de los opcodes es la siguiente: 16 bits 1 0 0 0 1 0 d w (8 bits)

MOD(2)

REG(3)

R / M(3)

d (1 bit) bit de dirección, indica si los operandos son hacia o desde donde estamos trabajando w(1 bit) bit que indica el tamaño del operando w=1

word = movimiento de un word (2 byte)

w=0

palabra = movimiento de un byte (1 byte)

Reg (3 bits) depende del valor de w para su interpretación. Representa los registros disponibles en el sistema. W=

1

0

000 AX AL 001 BX BL 010 CX CL 011 DX DL 100 SP AH 101 BP BH 110 SI CH

Los registros AL, BL, CL, DL representan la parte baja de los registros AX, BX, CX, DX, respectivamente, y AH, BH, CH, DH representan la parte alta de los mismos. Esta dependencia sobre el bit w es debida a que si w es 1 no tendremos ningún problema, ya que trabajamos con palabras completas, que tienen el mismo tamaño que los registros. Sin embargo, cuando w es igual a 0, trabajamos con 1 byte, la mitad de un registro completo, por lo que hay que direccionar la parte baja y alta, respectivamente con los bits de REG.

111 DI DH R / M(3 bits) Registro / Memoria. Indica los desplazamientos efectivos a realizar. R/M

Desp. efectivo

000 BX + SI + DESP 001 BX + DI + DESP 010 BP + SI + DESP 011 BP + DI + DESP 100

SI + DESP

101

DI + DESP

110

BP + DESP (*)

111

BX + DESP

(*) Si tenemos R/M = 110 y MOD = 00 el desplazamiento efectivo es simplemente (desp_alto-desp_bajo) MOD(2 bits)Indica las modificaciones en el desplazamiento 11 R/M se interpreta desplazamiento.

como

un

registro.

10 Desplazamiento completo (1 word) 01 Desplazamiento corto (1 byte) 00 Desp = 0, No existe desplazamiento adicional.

Codificación de instrucciones: RISC: Delimitación de modos de direccionamiento. o Número de instrucciones reducido. o Codificación simple. Tema 2 - Página 9

No

hay

Delegación de Alumnos de Informática Estructura y Tecnología de Computadores http://alu.etsii.ull.es

o Ejecución lo más eficiente posible. o Control cableado. RISC1:Arquitectura: o 138 Registros: se asigna a ventana, y una subrutina ve una ventana de 32 registros. Es decir, están en grupos de 32, llamadas ventanas: R0 R31 o El acceso a memoria sólo se puede hacer a través de carga(LOAD) y descarga (STORE) de datos. o En un solo ciclo se hace una instrucción, la más compleja es la suma de dos registros, y el resultado se transfiere a otro. o No hay instrucciones específicas de entrada / salida. Se hacen con direcciones de memoria (emular la entrada / salida) o 32 bits: Todas las vías de datos, registros, direcciones, palabras, son de 32 bits. o R0 = 0. No se puede cambiar o Se ahorra simplificación, eficacia, más pequeños para tener más espacios. Formato codificación: o Una instrucción tiene un tamaño fijo que coincide en las palabras de la máquina (32 bits). (1)

(2)

(3)

(4)

(5)

(6)

1.- Opcode: Ocupa 7 bits. 2.- Bit de condición(Reg. Status PSW): 1 bit. 3.- Dest Rd: 5 bits. 4.- Bits set inmediate (supone que el campo hay que tratarlo como de inmediato):1 bit. 5.- Source 2. S2: 13 bits. Si set inmediate = 0, de los 13 bits de Source 2, sólo serían significativos los 5 últimos. La dirección más complicada sería DIR_MEM[ Rs+S2 ]. Si set inmediate directamente.

=

1

Estamos

Si Rs(Base) y R2(Desplazamiento)

accediendo

a

una

dirección

absoluta

Direccionamiento relativo.

Si s2 = 0 estaríamos yendo a la memoria a la dirección apuntada por Rs. Acceso indirecto por registro. PIPELINE Cola de instrucciones que el procesador va cogiendo para ejecutar y busca las que se pueden hacer en paralelo.

Tema 2 - Página 10

Delegación de Alumnos de Informática Estructura y Tecnología de Computadores http://alu.etsii.ull.es

BUSES. Estructuras de interconexión. Un bus es un camino comunicación entre 2 o más dispositivos. Es un medio de transmisión compartido. Al bus se conectan varios dispositivos, y cualquier señal transmitida por uno de esos dispositivos está disponible para que los otros dispositivos conectados al bus puedan acceder a ella. Si dos dispositivos transmiten a la vez, la señales se solapan y distorsionan, por tanto, un solo dispositivo puede transmitir con éxito en un momento dado. Un bus está constituido por varios caminos de comunicación o líneas. Cada línea es capaz de transmitir señales binarias. Se pueden transmitir dígitos por una única línea o transmitir esa cantidad de dígitos por lo ancho del bus. Las líneas del bus se pueden clasificar en: o Líneas de datos: En nº de líneas en el bus de datos determina el nº de bits a transmitir cada vez al mismo tiempo. o Líneas de direcciones: Utilizadas para designar la fuente o destino en la transmisión de datos. o Líneas de control: Controlan el uso y acceso de las líneas de datos y direcciones porque éstas son compartidas. El bus incluye, por lo general: o La disposición física que puede ser manejada por el usuario o Especificaciones eléctricas. El bus nos aconsejará las operaciones eléctricas que debemos o no hacer. o Lógica: El bus funciona siguiendo un determinado protocolo. Tipos de buses: o ISA: Bus de extensión de la máquina en dispositivos de E/S. o PCI: Es un bus más avanzado, ya más independiente de la CPU. Afecta a las líneas de E/S como el ISA, pero de forma más específica. o SCSI: Dispositivo para conectar discos duros. Utilizados como interface(conjunto de hardware necesario para conectar un disco duro al bus). Criterios de organización de buses: Como podemos hacer que por la misma línea de bus, viaje información de un lado a otro y viceversa. Podríamos desdoblarlos todos, pero sería costoso y muy lioso. Lo que hemos de hacer es que las puertas no escriban siempre en la misma línea, para ello creamos un estado Z(alta impedancia) que desconecta una conexión de una puerta al bus. Clasificación de buses: o Dedicados: Es aquel bus que está permanentemente asignado a una función (funcionalmente dedicado) o destinado a unir dos dispositivos determinados (físicamente dedicado) Dedicado funcional: Uso de líneas separadas para direcciones y para datos. Dedicado físico: Uso de múltiples buses, cada uno de los cuales conecta solo un subconjunto de módulos.

Tema 2 - Página 11

Delegación de Alumnos de Informática Estructura y Tecnología de Computadores http://alu.etsii.ull.es

(a) Bus funcional y físicamente dedicado (direcciones) (b) Bus funcional y físicamente dedicado (datos)

Los dos buses están funcionalmente dedicados, pero no lo están físicamente dedicados porque las direcciones y los datos pueden ir a memorias diferentes. La contención de acceso es el problema que se origina cuando varios dispositivos intentan acceder a un recurso compartido. Para conectar n dispositivos utilizando buses físicamente dedicados necesitaría n º buses

n (n 1) 2

Esta es la desventaja de tener recursos dedicados, la organización se hace menos modular y aumenta el costo considerablemente. La principal ventaja es la gran velocidad de acceso entre los dispositivos. o No dedicados (Compartidos o multiplexados en el tiempo). Consiste en utilizar un mismo bus para transferencias de diferentes tipos, como pueden ser datos y direcciones, etc. Para ello se utiliza una línea de control válida. Por ejemplo, al comienzo de una transferencia de datos, la dirección se sitúa en el bus y se activa la línea de dirección válida. En ese momento cada módulo dispone de un periodo de tiempo para copiar la dirección y determinar si es él el módulo direccionado. Después la dirección se quita del bus, y las misma conexiones se utilizan para la subsecuente transferencia de lectura o escritura de datos.

En el 8086 los datos y las direcciones están multiplexados en el tiempo. Mecanismo de control: Regula la composición de transferencia de los datos (arbitraje Ventajas:

Costo reducido.

Desventajas:

El acceso será mucho más lento.

arbitro del bus)

Contención en el bus. Baja tolerancia a fallo, puesto que la información no tendrá comunicación. Tipos de buses no dedicados (compartidos): Buses múltiples (compartidos): Nº total de circuitos de enganche: i

Tema 2 - Página 12

j

Delegación de Alumnos de Informática Estructura y Tecnología de Computadores http://alu.etsii.ull.es

Para insertar otro dispositivo tendría que hacer j enganches, para tener j interfaces. CROSSBAR(compartido) G1 = {m1, m2, . . ., mm} y G2 = {m 1, m 2, . . .,m n} Tendremos varios grupos de comunicación entre sí, pero no comunicados dentro del mismo grupo. Se da o no la conexión entre ellos.

En cada instante sólo puede estar activo un punto de cada fila y columna. Estaría ocupada esa fila y columna. Número de conexiones: n (si n < m) m (si m < n) La tolerancia a fallo depende del único camino de comunicación. Si falla, una pareja de unidades no podrá comunicarse. Si añadimos una unidad más habrá que hacer n o m conexiones, depende del grupo en el que se añada Combinación (Bus múltiple- CROSSBAR)

Número de caminos (min(n, m)) Técnicas de control del bus: Definición de Controlador del Bus: Controla el acceso a un recurso de todos los dispositivos que lo necesiten. Tiene que resolver las prioridades, si hay más de una conexión de acceso. El control del bus puede hacerse de dos formas: o Centralizado, el hardware destinado al control del concentrado en un sitio, un solo dispositivo.

bus

se encuentra

o Descentralizado, el hardware está repartido entre todos los módulos que intentan conectarse tienen esta tarea. Además de las líneas de datos pueden llevar implícita la prioridad que tienen frente a otros dispositivos. Algunos controladores standard son: Tema 2 - Página 13

Delegación de Alumnos de Informática Estructura y Tecnología de Computadores http://alu.etsii.ull.es

o Daisy-chaining, o Polling (sondeo o muestreo), o Peticiones independientes. Control centralizado: Daisy-Chaining: Cuando un dispositivo quiere usar el bus utiliza unas líneas de petición: Bus Request Bus busy indica que el bus está ocupado (son líneas or cableadas) Bus Grant (avaliable): Entra en el primer dispositivo y este lo propaga al segundo y así sucesivamente. Los dispositivos están encadenados por estas líneas. Si se tiene varias peticiones simultáneamente del bus, el controlador del bus no sabe cuantos dispositivos lo piden, esto se resuelve por hardware, en el orden en el que está encadenado cada dispositivo siendo prioritario el primer dispositivo. Si un dispositivo falla en su propagación, falla toda la cadena. No es muy conveniente la prioridad física. Con una configuración de cableado. Dispositivo en el que se hace un puente. Así podremos obtener la prioridades como queramos. Polling (Sondeo):

En lugar de tener un bus Grant único, como en el caso del Daisy-Chaining, tenemos varias líneas de sondeo: Poll Count. en estas líneas de sondeo indicamos la configuración asociado o número del dispositivo que va a transmitir. Dicho número se compara con el de los dispositivos y se activará para el que coincida. Entonces se activará el bus busy. Cuando se finaliza la transmisión se pueden dar dos circunstancias: 1. Se recomienza la cuenta a 0 == Daisy-Chaining, y la prioridad viene designada por el nº de disp. que le habríamos asignado, siendo el de mayor prioridad el disp. con el nº más bajo. 2. Otra posibilidad es continuar la cuenta donde la habíamos dejado y en este caso el más prioritario sería el siguiente, y la prioridad sería circular. Esta forma de asignas prioridades se llama Round-Robin. La secuencia del controlador puede ser configurada por el propio programador. Peticiones Independientes:

Tema 2 - Página 14

Delegación de Alumnos de Informática Estructura y Tecnología de Computadores http://alu.etsii.ull.es

La prioridad de los dispositivos se fijará dentro de la unidad de control del bus. Cada unidad tiene su propia línea de petición (request) y de concesión o aceptación (grant). La ventaja es que es mucho más rápida, ya que se sabe inmediatamente cuál es la unidad que ha pedido transmitir. Una desventaja es que ha aumentado el coste al aumentar el número de líneas de conexión. NOTA: El número de líneas que necesita cada técnica de control es: 1. Peticiones independientes 2. Polling (Sondeo)

log2 N

3. Daisy-Chaining

2

2N líneas.

Control Descentralizado (distribuido): Daisy Chaining: Debe mantener la línea request activada mientras utiliza el bus. Polling (Sondeo): Todos son capaces de escribirlas y leerlas. Un dispositivo genera un código y el bus available se activa. Entonces si el código coincide con el de algún dispositivo y este quiere el bus activa el bus acept y desactiva el bus available. El papel de control del bus va pasando de un dispositivo a otro. Peticiones Independientes: Las peticiones simultáneas se resuelven con un sistema de prioridades predeterminado. Cada dispositivo puede leer las peticiones del resto de dispositivos. Información de una transferencia: 1. Fuente 2. Destino 3. Clase (dato, comando, status, interrupción) Clases de líneas: 1. Datos Tema 2 - Página 15

Delegación de Alumnos de Informática Estructura y Tecnología de Computadores http://alu.etsii.ull.es

2. Direcciones (si el bus de E/S, no es necesario utilizar líneas de dirección) 3. Control Formas de comunicación en el tiempo. Hay dos tipos de comunicación en el tiempo: 1. Comunicación síncrona. 2. Comunicación asíncrona. Comunicación Síncrona: Cada dato se transfiere por el bus durante un determinado período de tiempo. Este es conocido por el origen y el destino de la transferencia. Dispositivos sincronizados. Se puede hacer de dos formas: o bien por una señal de reloj común, que va a todos los dispositivos que hacen la transferencia (CLK + común); o por señales de relojes distintos, pero de igual frecuencia, aunque no forzosamente sincronizados, cada uno en cada una de las partes que intervienen en la comunicación. De esta forma estamos restringiendo la posibilidad de que los dispositivos más rápidos vayan a su ritmo. Todos tendrán que ir al ritmo del dispositivo más lento. Comunicación Asíncrona: Evita el uso de un reloj global, incluyendo una señal que indique que hay un dato en el bus. Estas señales son generadas por los propios dispositivos y cada uno va a su ritmo. Hay dos tipos de comunicación asíncrona: por control de una vía o por control de doble vía. a. Control de una vía: Las señales son transmitidas únicamente por uno de los dispositivos que intervienen en la conexión. No se sabe cuando se termina la transmisión de datos.

Podría ser al revés, que el dispositivo de destino pueda hacer una petición del bus.

b. Control de doble vía:

El Data Acknowledge se activa cuando los datos han sido admitidos y se han leído correctamente. En consecuencia, el Data Ready se desactiva simultáneamente con la terminación de la emisión de datos. Así se sabe si se terminó la transmisión de datos. Puede existir la variación de que el destino sea el que pide el bus: FUENTE

Data Data

Tema 2 - Página 16

DESTINO

Delegación de Alumnos de Informática Estructura y Tecnología de Computadores http://alu.etsii.ull.es

TEMA 3.- UNIDAD ARITMÉTICO

LÓGICA ALU

Se usa como instrumento de cálculo para las propias instrucciones de acceso o dirección. Si tenemos punto flotante tendremos dos partes separadas. Es controlada y dirigida por la unidad de control. Es la parte que realiza realmente las operaciones artiméticas y lógicas. El resto de elementos, Unidad de control, registros, memoria y E/S suministran datos a la ALU. ALU s discretas: Son componentes separados de la CPU, componentes versátiles que hace varias operaciones según lo que le indiquemos en las líneas de selección. BIT SLICE. El modelo 74181 hace operaciones con palabras de 4bits. Tiene dos entradas de 4 bits cada una, una sola salida de 4 bits, por donde sale el resultado de la operación elegida, una entrada de acarreo y una salida de acarreo. ALU s integradas en CPU: La ALU está relacionada con el registro de flags.

La complejidad viene dada por la representación numérica que utilicemos. Influencia de la representación numérica: Sumador / Restador en Ca2:

Tema 3 - Página 1

Delegación de Alumnos de Informática Estructura y Tecnología de Computadores http://alu.etsii.ull.es

Sumador / Restador en Ca1:

Al utilizar la salida directamente en la entrada corremos el peligro de que se generen oscilaciones. Flags: Carry Zero: Bit con una AND negada para ver si es 0 o no. Sign: Bit Sn-1 Overflow: x, y CV Xn-1Yn-1

n bits Xn-1

s=y+y

Xn-1 Yn-1 Sn-1

Sumadores CSA (carry save address)

A=0110=6 B=1001=9

Es un bloque que hace la suma bit a bit produciendo un vector S, resultado de hacer la suma bit a bit produciendo acarreo y un vector C que nos devolverá todos los acarreos que hayan hecho falta.

C=0111=7 S=1000 C=0111 10110

Ahora tendríamos que hacer la suma S + C con un sumador normal para obtener el resultado (Sumador Convencional CPA = Carry Propagate Adder). La ventaja de este dispositivo es que permite sumar más de dos vectores, 3 en concreto. Si queremos sumar más, por ejemplo cuatro: Pero el vector si el vector que desplazamos no cabe perdemos algún bit en el desplazamiento. MULTIPLICACIÓN: SIN SIGNO: Para asegurarnos que el resultado cabe en el espacio p tendremos que reservar un espacio de p = m + n P=X

Y

Tema 3 - Página 2

x

1

0

1

0

Multiplicador Y de n bits

1

1

0

1

Multiplicador X de m bits

0

1

0

1

0

0

0

0

0

1

0

1

+

1

0

1

0

1

0

0

0

0

0

1

0

Resultado P

Delegación de Alumnos de Informática Estructura y Tecnología de Computadores http://alu.etsii.ull.es

o Multiplicación Combinacional:

F-A

o Multiplicación con bloques CSA: Realiza multiplicaciones bit a bit

o Multiplicación Secuencial:

Algoritmo: repetir n veces if q0 = 1 suma else no_suma; desplazar; Nota: El resultado queda en AQ.

Tema 3 - Página 3

Delegación de Alumnos de Informática Estructura y Tecnología de Computadores http://alu.etsii.ull.es

CON SIGNO: o Representación en Ca2: 1. Multiplicando negativo, multiplicador positivo: Hacemos extensión de signo hasta 8 bits según sea positivo o negativo. Es decir, (-6) = 1 1 1 1 0 1 0(Repetimos el bit de signo varias veces hasta que cubramos los 8 bits de representación, teniendo en cuenta el desp de multiplicación). El carry tenemos que omitirlo porque se nos sale del rango de 8 bits. Extensión de Robertson para números con signo. La característica principal es que el bit de signo del multiplicador es de peso 1. Si el bit de signo está puesto a 1, lo que se hace es complementar el resultado parcial. (*) Debería dar 1 0 1 0, pero como el bit de signo es 1, complementamos el resultado parcial. Implementación hardware:

Algoritmo de BOOTH: Multiplicamos dos números de n bits en Ca2: Para el multiplicando realizamos una tabla en la que colocamos la posición de cada bit y su contenido. i+k+1 i+k i+k 1 I+k 2 ... i+1 i i-1 ...

0

Valor cadena = 2i+k -1+ 2i+k

2

1

1

...

1

1

0

+ . . . + 2i+1 + 2i

Los valores que se suman son los que en la casilla del contenido hay un 1 Sprog geom

a r (r n - 1) r -1

2i (2k - 1) 2 -1

2i (2k - 1) 2i

k

- 2i

Para el multiplicador B (bn-1, ...., b0) hacemos un proceso de recodificación de acuerdo con la tabla siguiente: bi bi-1 Recodificación Operacion

Ej: B = ( 0 1 1 1 0 1 1 0)

0

0

0

No hay que hacer nada

0

1

1

Operación para sumar

1

0

1

Operación para restar

1

1

0

Noy hay que hacer nada

Recodificación

100 1110

Tema 3 - Página 4

Delegación de Alumnos de Informática Estructura y Tecnología de Computadores http://alu.etsii.ull.es

Algoritmo

q0q-1

inic: A = 0, Q = mltpcdr, q-1= 0, M = mpcndo

0

00

Desplazamiento

iterar n veces

1

01

Suma + Desplazamiento

si q0q-1 = 10

1

10

Resta + Desplazamiento

0

11

Desplazamiento

restar (A

A

M)

si q0q-1 = 01 sumar (A

A + M)

desplazar a dcha Implementación Hardware:

Los peores casos se darán cuando hayan combinaciones con 1 y 0 alternados, puesto que habrá que hacer una operación además del desplazamiento. Ej: 0 1 0 1 0 1 0 1

111 111

En este caso haríamos el doble de operaciones por lo que no sería mejor que el algoritmo de Robertson. Para que funcione mejor, siempre BOOTH que en ROBERTSON es necesario hacer una recodificación a tres bits. DIVISIÓN: CON SIGNO: Y

Dividendo X

Divisor

Y=X

Q+Z

Q Z 0

Cociente Resto Z

X

o División con restauración:

Si sale un nº negativo en la resta, sale un cero en el cociente y deshago lo que se ha hecho, esto se llama paso de restauración. Así se va creando un hueco en el registro Q. La U. C. va generando también el bit del cociente en el registro Q por la derecha. Tema 3 - Página 5

Delegación de Alumnos de Informática Estructura y Tecnología de Computadores http://alu.etsii.ull.es

Algoritmo: repetir n veces desplazar AQ; A := A

M;

if signo(A) = 1 q0 = 0; A := A + M; {Restauramos} else q0 = 1; Ej: Para dividir 1 0 0 0 entre 0 0 1 1: Primero hallamos Ca2(M)= 1 1 1 0 1, y vamos repitiendo los pasos del algoritmo. Al final queda en Q el cociente y en A el resto. Q inicialmente es el dividendo, M el divisor y A = 0 0 0 0 o División con restauración: Después de la resta: A>0

Desplazar y restar

(A:=2A; A := A

A<0

Sumar, Desplazar y restar

M;)

2A

M

(A := A+ M; A := 2A; A := A

M)

2A + M

Algoritmo: repetir n veces if signo(A) = 0 desplazar AQ; A := A

M

else desplazar AQ; A := A + M; if signo(A) = 0 q0 = 1 else q0 = 0; if signo(A) = 1 A := A + M; Representación en Punto Flotante: SUMA A = 1.m1 e1 < e2

2e1

B = 1.m2

2e2

1.m1

= 0.0....0(1m1

2e1 + 1.m2

2e1 + 1m2

2e2

2e2)

e1 + d = e2 Si tenemos carry de 1 lo solucionamos con un desplazamiento a la derecha: 11.1 Tema 3 - Página 6

1.11

Delegación de Alumnos de Informática Estructura y Tecnología de Computadores http://alu.etsii.ull.es

Pero luego tenemos que tener en cuenta que el exponente ha sido incrementado. Si los números son de distinto signo: 1- Restamos las mantisas: -1.m1

1.m2. Hemos de fijarnos si hay acarreo.

2- Si hay acarreo, hallamos el Ca2 del resultado. MULTIPLICACIÓN: 1.m1

2e1

1.m2

2e2 = (1.m1)(1.m2)

2e1 + e2

Resultado = 48 bits de los que solo nos interesan los 24 finales. DIVISIÓN: 1.m1 2 e1

1.m 2 2 e2

1.m1 1.m 2

2e1

e2

Metemos los números directamente en el registro A y en el divisor respectivamente.

Tema 3 - Página 7

Delegación de Alumnos de Informática Estructura y Tecnología de Computadores http://alu.etsii.ull.es

TEMA 4.- UNIDAD DE MEMORIA I. La memoria es la que nos restringe la velocidad. La memoria externa será más grande y más barata que la interna. Memoria principal:

Memoria secundaria: Memoria asociada a dispositivos periféricos

E / S.

Memoria interna al procesador: Es la memoria más rápida y más cara. Formada por Registros. DEFINICIONES: Palabra: Unidad natural de organización de memoria. Coincide con el nº de bits usados para representar números y con la longitud de las instrucciones. Unidades direccionables: En muchos casos es la palabra, pero en algunos casos se permite direccionar a nivel de bytes. Unidad de transferencia: Para memoria principal es el nº de bits que se leen o escriben en memoria a la vez. No tiene por que coincidir con palabra o unidad direccionable. CLASIFICACIÓN DE MEMORIAS: Modo de acceso: Acceso Aleatorio: Cada posición direccionable de memoria tiene un único mecanismo de acceso, cableado físicamente. El tiempo para acceder a una posición dada es constante. Cualquier posición puede seleccionarse aleatoriamente y puede ser direccionada y accedida directamente. Ej: Memoria ppal. Acceso Secuencial: La memoria se organiza en registros. El acceso debe realizarse con secuencia lineal específicea. Se hace uso de información almacenada de direccionamiento, que permite separar los registros y ayudar en el proceso de recuperación de datos. Se usa un mecanismo de lectura / escritura compartida, que debe ir trasladándose desde su posición actual a la deseada, pasando y obviando cada registro intermedio. El tiempo necesario es muy variable. Ej: Unidades de cinta. Directo: Tienen también dispositivo de lectura / escritura, pero bloques individuales o registros tienen una dirección única basada en su dirección física. El acceso se lleva a cabo mediante directo a una vecindad dada, seguido de búsqueda secuencial, contando o esperando hasta alcanzar la posición final. El tiempo de acceso es muy variable. Ej: Unidades de disco. Asociativo: Es de acceso aleatorio, que permite hacer comparación de ciertas posiciones de bits dentro de una palabra buscando las que coinciden con valores dados y hacerlo para todas las palabras simultáneamente. Una palabra es Tema 4 - Página 1

Delegación de Alumnos de Informática Estructura y Tecnología de Computadores http://alu.etsii.ull.es

recuperada basándose en una porción de su contenido. Cada posición de memoria tiene su propio mecanismo de direccionamiento. El tiempo de recuperación es constante. Ej: Mem cache. Alterabilidad de la Información: ROM: (Read Only Memory) PROM: (Programmable ROM) pero sólo una vez. EPROM: (Erasable PROM) muy complicado.

Dispositivos que solo podemos leer (acceso aleatorio). El usuario tiene opción de alterar la memoria, Son capaces de ser borradas, pero con un proceso

EEPROM: (Electronic EPROM) Para borrar la memoria, solamente hace falta realizar un proceso eléctrico (FLASH). RAM: (Random Access Memory) tiene como principal característica que se pueden leer datos y escribir rápidamente nuevos datos en ellas. La RAM es volátil. Debe estar contínuamente alimentada. Si se interrumpe la alimentación se pierden los datos. Permanencia de la información (Durante el uso normal de la memoria) (Sobre todo las RAM) Estáticas: Los valores binarios se almacenan utilizando configuraciones de puertas que forman biestables. Retiene los datos mientras esté alimentada. Dinámicas: Están hechas con celdas, que almacenan los datos como cargas en condensadores. La presencia o ausencia de carga se representan como 1 ó 0 en binario. Ya que los condensadores tienen tendencia a descargarse, se necesitan refrescos periódicos para mantener memorizados los datos. Las RAM dinámicas son más densas y más económicas que las RAM estáticas. Aunque las dinámicas necesitan circuitería para el ciclo de refresco, el coste para ello se ve compensado por el menor coste de las celdas de memoria. PRESTACIONES DE MEMORIA: Existen tres parámetros que miden estas prestaciones. Tiempo de acceso: Para memorias de acceso aleatorio es el tiempo que tarda en realizarse una operación de lectura / escritura, es decir, desde que se presenta una dirección a la memoria hasta que el datos ha sido es leído / escrito. Para memorias de otro tipo, es el tiempo que se tarda en colocar el mecanismo de lectura / escritura en posición deseada. Tiempo de ciclo: Principalmente para memorias de acceso aleatorio. Es el tiempo de acceso sumado al tiempo que se requiere antes de que se pueda iniciar un segundo acceso a memoria. Es necesario para que finalicen transiciones en líneas de señal o regenerar los datos en caso de lecturas destructivas. Velocidad de transferencia: Velocidad a la que se pueden transfrerir datos a o desde memoria. Para memorias de acceso aleatorio coincide con el inverso del tiempo de ciclo. Para otras memorias: Tmedio l/e = Tacceso medio + (N bits / Vel transf)

Tema 4 - Página 2

Delegación de Alumnos de Informática Estructura y Tecnología de Computadores http://alu.etsii.ull.es

Estructuras RAM estáticas: Capacidad = 2m

n bits

Funcionamiento asíncrono: Mediante un cronograma podemos saber las posibilidades de activación de cada dispositivo. El cronograma nos mostrará que pasa durante un ciclo de lectura y escritura.

Ciclo de Lectura

Ciclo de Escritura

Los datos serán válidos mientras el chip esté activado. El fabricante nos tiene que indicar el tiempo de retraso entre cada dispositivo. También es necesario que las direcciones estén activados cierto tiempo más que el CS. Implementación de la RAM:

El decodificador nos dice que palabra de la memoria se quiere leer. CELDA: Aunque existen muchos tipos, todas comparten ciertas propiedades: Presentan dos estados que se emplean para representar 0 ó 1 binarios. Puede escribirse en ellas para fijar su contenido. Puede leerse para detectar su estado. Ejemplo: RAM n n (decodificación lineal).

Tema 4 - Página 3

Delegación de Alumnos de Informática Estructura y Tecnología de Computadores http://alu.etsii.ull.es

-Decodificación por coincidencia: En este caso tendremos dos decodificadores con n/2 entradas cada uno.

Si queremos utilizar RAMs mayores haremos conexiones que salen de los decodificadores y utilizaremos las mismas para todos las matrices de almacenamiento. Diseño de la Unidad de Memoria. Ej: Implementación de una memoria de 8K palabras con un bus de datos de 8 bits. Disponemos de módulos de memoria diferentes

1K = 210 bits.

Con este módulo tendremos que construir la memoria.

Significa que tenemos que conectar las 10 direcciones con las entradas de las celdas. Con los bits que quedan tendremos que hacer que según las entradas; active un banco determinado. Esto lo solucionamos con un decoder. La memoria estaría situada distribuida entre los 16K, apareciendo duplicados en varios casos. Esto hay que arreglarlo puesto que cada bit que añadimos aparecerá duplicado. Si está a 1 el bit más significativo lo complementamos y se lo pasamos al decodificador y así solo activará la parte de direcciones cuyo bit más significativo indica..

Tema 4 - Página 4

Delegación de Alumnos de Informática Estructura y Tecnología de Computadores http://alu.etsii.ull.es

PROCESADOR:

MODULOS RAM: 4 módulos 4K

4

Z

Alta impedancia.

La memoria tiene que estar en las siguientes direcciones y ocupar un determinado rango. MEMORIA

A000 H BFFF H

ENTRELAZADO DE MEMORIA: Se utiliza para acelerar accesos de memoria a direcciones consecutivas. No entrelazado: ABR

Address Buffer Register

En este caso para pasar a la dirección consecutiva aumentamos en uno la dirección del módulo, pero seguimos en el mismo módulo a no ser que lleguemos al final del módulo, con lo cual pasaríamos al siguiente (modulo ++, Dir en modulo = 0). Esperar ciclo de escritura y lectura. Entrelazado:

En este caso direcciones consecutivas se encuentran en módulos distintos. Para buscar una dirección consecutiva aumentamos módulo en 1, hasta llegar al final, entonces ponemos módulo a 0 y dir ++.

Tema 4 - Página 5

Delegación de Alumnos de Informática Estructura y Tecnología de Computadores http://alu.etsii.ull.es

Si la lectura es secuencial sólo tenemos que esperar un tiempo de acceso porque en lo que volveremos a visitar un banco determinado ya este estará preparado después de su última activación. La principal ventaja del entrelazado frente al no entrelazado es que en el segundo el tiempo de recuperación es menor, ya que hay cierto paralelismo debido a que accedemos a la siguiente dirección en módulos distintos. El entrelazado se usa sobre todo para acelerar la memoria CACHÉ. ORGANIZACIONES DE MEMORIA: Supongamos una memoria 6K

1, o sea que la dirección tiene 16 bits.

La dirección entra en la memoria de dos veces, por las mismas patillas, o sea primero entra la mitad de la dirección y luego la otra mitad, pero entran por las mismas patillas. Es decir, las direcciones se multiplexan en el tiempo. Tenemos menos líneas que dirección y las ofrecemos en secuencias, particionándolas. Esquema de la memoria:

Las señales RAS (Row Address Strobe) y CAS (Column Address Strobe) nos especifican que parte de la dirección nos viene, la de filas o la de columnas. Es un registro especial donde se guarda la fila seleccionada en la matriz. Como se puede observar hay que restaurar la memoria. En este mecanismo de refresco es externo a la memoria. Cuando accedemos a una posición dentro de una fila, toda la fila pasa al registro de amplificadores y automáticamente se refrescan todas las celdas de la fila. No se refresca celda a celda, sino fila a fila. Algunos chips mantienen la fila en el registro de amplificadores, por eso si se selecciona la misma fila en el siguiente paso, disminuye el tiempo que tarda en recuperarse la fila. El acceso de refresco es más rápido que el de lectura, pero para refrescar toda la memoria, se necesitan 256 accesos. Se utiliza un contador que cuenta las filas refrescadas, para poder saber cuales han sido refrescadas y cuales no. Sabemos que cada línea del decoder de filas activa una fila completa de la memoria de celdas.

Tema 4 - Página 6

Delegación de Alumnos de Informática Estructura y Tecnología de Computadores http://alu.etsii.ull.es

Existe una alteración de RAS (Row Address Strobe) y CAS (Column Address Strobe) en el orden que se activan si colocamos la instrucción PAST PAGE MODE. La memoria SDRAM es una excepción y se basa en que, sincronizada por un reloj es capaz de suministrar todos los bits mediante un paso de reloj.

Tema 4 - Página 7

Delegación de Alumnos de Informática Estructura y Tecnología de Computadores http://alu.etsii.ull.es

TEMA 5.- UNIDAD DE MEMORIA II. MEMORIA CACHE Y VIRTUAL MEMORIA CACHE: Su principal objetivo es hacer que la velocidad de la memoria sea lo más rápida posible y a la vez obtener mayor tamaño a menor coste. Se hacen copias de lo que hay en memoria principal en la cache, así cuando el procesador intenta leer, si está en cache lo que busca, no hay que ir a memoria, si no, se transfiere un bloque de memoria (cierto número de palabras) a cache desde memoria ppal. y luego se le entrega al procesador lo que éste pedía. Debido al fenómeno de localidad de referencia, es muy probable que al transferir un bloque a cache para tomar una palabra, luego se hagan referencias a palabras del mismo bloque. Si la memoria principal tiene 2n palabras direccionables y cada palabra tiene una única dirección de n bits. La memoria principal la consideramos dividida en bloques de k palabras por bloque, con k fijo. Entonces hay 2n / k bloques. Si tenemos una cache de C líneas de k palabrtas cada una. Como el nº de líneas es mucho menor que el nº de bloquess en memoria principal, cada linea no se puede dedicar en exclusiva a un único bloque. Por tanto, cad línea incluye una etiqueta que indica el bloque que tiene almacenado. La etiqueta es una porción de la dirección en memoria principal.

Un proceso genera la dirección la palabra a leer. Si está la palabra cache, se termina, si no, el bloque memoria principal que contiene palabra es cargado en cache y palabra es llevada al procesador manera simultánea.

de en de la la de

Cuando hay acierto de cache, los buffers se inhabilitan y así sólo se comunican la cache y el procesador, sin tráfico en el bus del sistema. Cuando hay fallo de cache, la dirección se carga en el bus del sistema y el dato es llevado a través del buffer de datos, tanto a cache, como al procesador. Si la cache se interpusiera físicamente entre el procesador y la memoria principal para todas las líneas de datos, direcciones y control, frente a fallo de cache, la palabra deseada es leída por la cache y de aquí transferida al procesador. Localidad de Referencia: Tema 5 - Página 1

Delegación de Alumnos de Informática Estructura y Tecnología de Computadores http://alu.etsii.ull.es

Es fundamental en la mayoría de las estrategias de administración de memoria, e indica que los procesos tienden a hacer referencia a la memoria en patrones no uniformes y altamente localizados. Temporal: Es probable que las localidades de memoria a las que se haya hecho referencia recientemente sean objeto de otra referencia en un futuro cercano. Especial: Las referencias a memoria tienden a estar concentradas, y una vez que se hace referencia a una localidad, es muy probable que se haga referencia a las localidades cercanas. ESTRATEGIAS DE MAPEADO:

La memoria tendrá, como mucho 216 palabras = 64K palabras. Los cuatro últimos bits del bus nos dicen de que tipo es la palabra y se llama BUS DE PALABRA. Los 12 bits restantes representan el número de bloque en memoria principal. MAPEADO DIRECTO: Hacemos corresponder cada bloque de memoria principal con una única línea posible de cache. El mapeado se implementa fácilmente utilizando la dirección. Desde el punto de vista del acceso a cache, cada dirección de memoria principal puede verse como dividida en tres campos. Los w bits menos significativos identifican la palabra dentro de un bloque de memoria principal. Los s bits restantes especifican uno de los 2s bloques de memoria principal. La lógica de la cache interpreta los s bits como una etiqueta de (s r) bits más significativos y un campo de línea de r bits. Este último campo identifica una de las 2r líneas de cache. NOTA: El número total de bloques caché es 128.

Tema 5 - Página 2

Delegación de Alumnos de Informática Estructura y Tecnología de Computadores http://alu.etsii.ull.es

La principal desventaja de mapeado directo es que si una línea de cache corresponde a dos bloques distintos que están siendo referenciados repetidas veces, éstos se estarían intercambiando contínuamente y la tasa de aciertos sería muy baja. La CPU va al campo TAG y comprueba si el bloque que está buscando se encuentra en ese bloque de caché. Todo esto lo hace en un tiempo de respuesta HARDWARE. MAPEADO COMPLETAMENTE ASOCIATIVO: Permite que cada bloque de memoria principal pueda ser cargado en cualquier línea de cache. En este caso, la lógica de control de la cache interpreta una dirección de memoria como una etiqueta (TAG) y un campo de palabra. La etiqueta identifica unívocamente un bloque de memoria principal. Para saber si un bloque está en cache se examinan en paralelo todas las líneas para buscar una coincidencia.

En este caso el campo TAG ocupa los 12 bits restantes del bus de datos. Con este mapeado hay flexibilidad para reemplazar un bloque al escribir un bloque nuevo en cache. MAPEADO ASOCIATIVO POR CONJUNTOS: Tiene las ventajas de los otros mapeados, pero no sus desventajas. En este caso, la cache se divide en v conjuntos, cada uno de k líneas y tenemos que: Nº lineas cache = k · v Nº conjunto en cache = nº bloque memoria ppal. % v. Así el bloque Bj puede asignarse en cualquier línea del conjunto i. Se interpreta una dirección de memoria como tres campos: etiqueta, conjunto y palabra. Los d bits (6 en caso 8086) del conjunto especifican uno de los v = 2d conjuntos. Los s bits (12) de los campos etiqueta y de conjunto especifican uno de los 2s bloques de memoria principal.

NOTA: Relación fallos

Nº fallos Relación aciertos Nº accesos

Nº aciertos RAciertos + RFallos = 1 Nº accesos

ESTRATEGIAS DE REEMPLAZAMIENTO: Cuando el caché o alguno de los conjuntos estén llenos, tendremos que reemplazar: Tema 5 - Página 3

Delegación de Alumnos de Informática Estructura y Tecnología de Computadores http://alu.etsii.ull.es

Completamente Asociativo Asociativo por Conjuntos

Caché lleno. Conjunto del caché lleno.

Utilizaremos las siguientes estrategias: FIFO: Quita el bloque que más tiempo lleva en el caché. Se implementa mediante técnica circular. LRU(Last Recently Used):Quita el bloque que lleva más tiempo en cache sin haber sido referenciado. Se implementa de manera sencilla en asociativo por conjuntos: mediante un bit USO que se pone a 1 cuando una línea es referenciada y a 0 las demás. Cuando se va a reemplazar, se toma una línea que tenga el bit USO a 0. LFU: Se sustituye el bloque referenciado menos frecuentemente. Se implementa mediante contador de usos en cada línea. Aleatorio:Se quita un bloque elegido aleatoriamente. POLÍTICA DE ESCRITURA: Antes de reemplazar un bloque que está en línea de cache, es necesario comprobar si ha sido alterado en cache pero no en memoria principal. Si no lo ha sido, se puede escribir sobre la línea de cahe. Si ha sido modificado, se ha realizado al menos una operación de escritura sobre línea correspondiente de la cache y la memoria principal ha de actualizarse. Hemos de tener en cuenta si los dispositivos de E / S pueden o no escribir en memoria. Si no escriben, sólo hemos de ver las modificaciones hechas en los datos que están en cache y con ellos actualizar la memoria principal. Si los dispositivos de E / S escriben directamente en memoria, hemos de comprobar cual ha sido la última modificación, la hecha en cache, o la hecha por el dispositivo de E / S y actualizar o bien la memoria principal o bien la cache, según el caso. La técnica más sencilla para solucionar este tipo de problemas es la ESCRITURA INMEDIATA. Con ella, todas las operaciones de escritura se hacen en cache y en memoria principal, así aseguramos que el contenido de las memorias sea válido. Esta técnica ralentiza las operaciones ya que existe mucho tráfico de memoria. La técnica de POST-ESCRITURA lo que hace es únicamente actualiza la cache. Cuando tiene lugar una actualización se activa un bit ACTUALIZAR asociado a cada línea. Cuando el bloque es sustituido, es (post-)escrito en memoria principal si y solo si ACTUALIZAR está activo. El problema es que a veces porciones de memoria no son válidas y los accesos por parte de los módulos de E / S sólo podrían hacerse a través de la cache, lo que conlleva complicación en la circuitería. Si más de un dispositivo emplea cache, y la memoria principal es compartida, al modificar los datos en una cache, se invalidan las caches que tengan esa palabra. Para evitar todos los problemas, utilizamos un sistema que mantiene la coherencia de cache, mediante: Vigilancia del bus con escritura inmediata: Cada controlador de cache monitoriza las líneas de dirección para detectar una operación de escritura en memoria por parte de otros maestros del bus. Si otro maestro escribe en una posición de memoria compartida, que también reside en memoria cache, el controlador de cache invalida el elemento de la cache. Esta estrategia depende del uso Tema 5 - Página 4

Delegación de Alumnos de Informática Estructura y Tecnología de Computadores http://alu.etsii.ull.es

de una política de ESCRITURA INMEDIATA por parte de todos los controladores de cache. Transparencia hardware: Se emplea hardware adicional para asegurar que todas las actualizaciones de memoria principal vía cache quedan reflejadas en todas las caches. Si un proceso modifica una palabra de su cache, esta actualización se escribe en memoria principal, como en todas las caches que contengan la palabra. Memoria excluida de cache: Sólo una porción de memoria principal se comparte y esta no se puede transferir a cache. Todos los accesos a memoria son fallos de cache, ya que no se copia en ella esta memoria. La memoria excluida de cache se puede identificar utilizando lógica de selección de chip o los bits más significativos de la dirección. Ej. : Tenemos un microprocesador con un caché de 8KB, es asociativo por conjunto. El bloque tiene 16 bytes de tamaño y el conjunto tiene 4 bloques. El bus de direcciones es de 32 bits. Indicar la estructura del caché, como funciona. Como se llena el bus de direcciones. Contenido final de los 2 primeros conjuntos caché para una traza dada. Qué anchura tiene cada uno de los campos.

hacer a mano

MEMORIA VIRTUAL: Las dos razones por las que se utiliza memoria virtual son: - compartir eficientemente y sin peligros la memoria entre múltiples programas. - eliminar el inconveniente de tener un espacio de memoria principal pequeño y limitado, ya que puede suceder que los programas necesiten más memoria que la disponible en memoria principal. En mefmoria virtual, los bloques de memoria, llamados páginas se traducen de un conjunto de direcciones, direcciones virtuales a otro conjunto, direcciones físicas. La CPU genera direcciones virtuales mientras que a memoria se entra con direcciones físicas. Los dos tipos de memoria, virtual y principal. están divididas en páginas, en consecuencia, las páginas virtuales están asignadas a páginas físicas. Cuando se produce un fallo en memoria virtual se llama fallo de página. Evidentemente, es posible que una página virtual no esté en memoria principal y no tenga asignada una dirección física. En este caso, la página está en el disco. Las páginas físicas se pueden compartir si hay dos direcciones virtuales apuntando a la misma dirección física. Esta propiedad se usa para permitir a dos programas compartir código o datos.

Todas las partes del programa ocupan la misma zona en memoria. Con la memoria virtual, la responsabilidad de las posiciones en memoria la comparten dos partes fundamentales, el hardware y el software (Sistema Operativo). Tema 5 - Página 5

Delegación de Alumnos de Informática Estructura y Tecnología de Computadores http://alu.etsii.ull.es

-- El software: el sistema operativo va a ser el responsable. Gestión de memoria: El sistema operativo tiene que administrar y gestionar la memoria, compartiéndola entre los programas para que se puedan ejecutar simultáneamente. Protección: El sistema operativo tiene que hacer que los procesos que corren simultáneamente no se perturben entre sí. No podemos permitir que un proceso invada un área de memoria que no le corresponde. -- El hardware: El programa no debe saber que está ocurriendo en la memoria virtual. El programa tiene que utilizar una memoria más grande que la que tenemos en memoria principal, por lo que se manejarán direcciones virtuales. Pero el programa corre en direcciones físicas (espacio). Habrá que transformar las dir. virtuales en dir. físicas. MEMORIA VIRTUAL PAGINADA: Si dividimos la memoria en trozos iguales y relativamente pequeños y cada proceso se divide en pequeños trozos de tamaño fijo, los trozos del programa (páginas) se asignan a trozos de memoria disponible, marcos, y de esta manera, el espacio de memoria desperdiciado es como mucho, una fracción de la última página.

No siempre todos los marcos de página están ocupados, cuando esto ocurre, la lista de marcos libres es gestionada por el sistema operativo. Como puede que no hayan suficientes marcos libres para cargar un proceso, el S. O. dispone de una tabla de páginas para cada proceso, que lo que hace es decir en qué marco de memoria se aloja cada página del proceso. Así, dentro del programa, cada dirección lógica está formada por un número de página y una dirección relativa dentro de la página. La traducción de dirección lógica a dirección física la hace el procesador, que debe saber como acceder a la tabla de páginas de un proceso, y partiendo de ahí, toma la dirección lógica y la tabla de páginas para generar la dirección física. En memoria virtual se emplea paginación por demanda, que significa que cada página de un proceso se introduce en memoria sólo cuando se necesita. Con este método lo que hacemos principalmente es un mejor uso de la memoria, ya que sólo se cargan en un instante determinado de tiempo unas pocas páginas. Tema 5 - Página 6

Delegación de Alumnos de Informática Estructura y Tecnología de Computadores http://alu.etsii.ull.es

Cuando el programa hace referencia a un dato o instrucción que no está en memoria, se produce un fallo de página, que consiste en traer la página que contiene lo que se pide de disco. Como cargamos pocas páginas de un proceso y no todas, podemos utilizar el resto del espacio para cargar otros procesos. Cuando hay que cargar una página nueva, quitando alguna que esté ya cargada, se ha de tener cuidado con sacar páginas que van a ser utilizadas de inmediato, ya que habrá que cargarla de nuevo, produciendo si ocurre con frecuencia un fenómeno conocido como hiperpaginación, que no conviene, ya que el procesador pasa la mayor parte del tiempo intercambiando páginas en lugar de ejecutar instrucciones. Para evitar la hiperpaginación se pueden elegir diversos algoritmos que intentan predecir qué páginas tendrán menos probabilidad de ser utilizadas en un futuro próximo.

Estructura de una tabla de páginas: Para leer una palabra de memoria necesitamos una traducción de dirección lógica a dirección física. Como la tabla de páginas suele ser muy grande, no se puede almacenar en registros, por tanto sólo almacenamos la dirección de inicio de la tabla de páginas. El nº de página de la dirección lógica se utiliza como índice en la tabla para buscar correspondiente número de marco. Combinando éste con el desplazamiento de la dirección virtual, obtenemos la dirección física. - En la mayoría de los sistemas hay una tabla de páginas por proceso, pero puede suceder que la cantidad de memoria necesaria para almacenar las tablas de página sea excesivamente grande, por lo que se suelen almacenar las tablas de página en memoria virtual, lo que conlleva a que la tabla de páginas esté también sujeta a paginación. Cuando un proceso se está ejecutando, al menos una parte de la tabla de páginas está en memoria, incluyendo el elemento a la página actualmente en ejecución. - Algunos procesadores usan un esquema de dos niveles para organizar las tablas de página. En el primer nivel está la página directorio, y en el segundo nivel están los elementos que cuelgan de la página directorio y apuntan a una tabla de página. Por ejemplo, si tenemos una página directorio de longitud Y, y un tamaño máximo de tabla de página de Z, un proceso puede estar constituido por Y · Z páginas. Normalmente la longitud de una tabla de páginas se restringe a una página. - También se utilizan tablas de páginas invertidas . Con este método, la parte de la dirección virtual correspondiente al número de página se mapea en una tabla hash, que contiene un puntero a una tabla de páginas invertida, que contiene elementos de tabal de página. Con esta estructura, para cada página de memoria real tenemos un elemento en la tabla hash y en la tabla de páginas invertida, en vez de para cada pagina de memoria virtual. Por tanto se necesita una porción fija de memoria real para las tablas, independientemente del número de procesos o páginas virtuales que se admitan. Como Tema 5 - Página 7

Delegación de Alumnos de Informática Estructura y Tecnología de Computadores http://alu.etsii.ull.es

más de una dirección virtual puede apuntar al mismo elemento de página de dispersión, se utiliza encadenamiento para solucionar este problema. Buffer de traducción anticipada (TLB): En principio, toda referencia a memoria virtual puede ocasionar dos accesos a memoria física: uno para captar el elemento de la tabla de páginas y otro para captar el dato. Para reducir el tiempo de los accesos a disco se utiliza TLB, que es una cache que contiene los elementos de la tabla de página a los que se ha accedido recientemente. Por el principio de localidad, la mayoría de referencias a memoria corresponderán a posiciones de las páginas recientemente usadas. El mecanismo de memoria virtual debe interactuar con el sistema de cache de memoria principal. Para traducir con TLB se han de seguir los siguientes pasos: 1. Consultar TLB para comprobar coincidencias con algún elemento de la tabla de páginas incluido en él. 2. Si es así, generar la dirección física, combinando el número de marco con el desplazamiento. Si no, se accede al elemento de la tabla de páginas para luego generar la dirección física. 3. Cuando tenemos la dirección física, consultamos la cache de memoria principal para ver si está presente el bloque que contiene la palabra. 4. Si está, se envía la palabra al procesador, si no, se busca la palabra en memoria principal y se actualiza la tabla de páginas. MEMORIA VIRTUAL SEGMENTADA: Al contrario de la paginación, es visible para el programador. La segmentación sirve para proporcionar un espacio de direcciones mayor, de forma conveniente para organizar los programas y los datos, para los privilegios y los atributos de protección con instrucciones y datos. La memoria se ve constituída por múltiples espacios de direcciones llamados segmentos, que tienen tamaño variable. O bien el programador, o el S.O. asignarán los programas y los datos a segmentos distintos. Las referencias a memoria se hacen mediante número de segmento más desplazamiento.

Las principales ventajas son: - Simplifica la gestión de estructuras crecientes de datos. Si no se conoce a priori el tamaño de una estructura de datos, no es necesario presuponerlo. A la estructura se le asigna su propio segmento, y el S.O. lo expandirá o reducirá según sea necesario. - Permite modificar los programas y recompilarlos independientemente sin que sea necesario volver a enlazar y cargar el conjunto entero de programas. Esto se consigue usando varios segmentos. Tema 5 - Página 8

Delegación de Alumnos de Informática Estructura y Tecnología de Computadores http://alu.etsii.ull.es

- Se facilita la protección ya que un segmento se construye con la posibilidad de asignarle privilegios de acceso de forma adecuada. Puede que necesitemos un bloque de memoria que sea igual a la suma de los espacios de memoria libres, pero estos no los podemos usar ya que no son continuos. MEMORIA VIRTUAL SEGMENTADA

PAGINADA:

La memoria ahora estará formada por segmentos de diferentes tamaños que se compondrán a su vez de páginas, que sí tendrán el mismo tamaño.

UNIDAD DE GESTIÓN DE MEMORIA MMV: Es la unidad que gestiona las tablas de páginas. El registro apuntará ahora con un índice a la tabla de segmentos. No tenemos que desplazar el offset y obtener la dirección. El registro base nos dice donde se encuentra la tabla de segmentos.

Tema 5 - Página 9

Delegación de Alumnos de Informática Estructura y Tecnología de Computadores http://alu.etsii.ull.es

TEMA 6.- UNIDAD DE ENTRADA Y SALIDA Los periféricos de E / S se conectan a un módulo de E / S, que no sólo es un conector mecánico, sino que posee capacidad para permitir la comunicación entre el periférico y el bus del sistema y hace la función de interface.

Los periféricos no se conectan directamente al bus por diversos motivos: Cada periférico tiene su propia forma de funcionar, y hacer que el procesador pueda interpretar el funcionamiento de cada periférico resulta casi imposible. La velocidad de transferencia de un periférico es menor que la de la memoria o el procesador. Los formatos y el tamaño de datos que utilizan los periféricos es distintos a los del procesador. Las funciones básicas del módulo de E / S son: Hacer de interfaz entre el procesador y memoria a través del bus del sistema. Realizar una interfaz entre uno o más dispositivos periféricos mediante enlaces de datos. Las principales funciones y requisitos de un módulo de E / S se agrupan en: 1. Control y temporización: Cuando un procesador se quiere comunicar con uno o más dispositivos depende de las necesidades de E / S, los recursos internos deben compartirse entre distintas actividades. Así, la función de E / S incluye ciertos requisitos de control y temporización, para coordinar el tráfico entre recursos internos y los dispositivos periféricos. Por ejemplo, los pasos a seguir para el control de la transferencia de datos de un dispositivo externo al procesador serían: i. El procesador interroga al módulo de E / S para comprobar el estado del dispositivo. ii.

El módulo devuelve el estado del dispositivo.

iii. Si el dispositivo está operativo y preparado para transmitir, el procesador solicita la transferencia del dato mediante una orden al módulo de E / S. iv. El módulo de E / S obtiene el dato del dispositivo y lo transfiere al procesador. 2. Comunicación con el procesador: La comunicación con el procesador implica:

Tema 6 - Página 1

Delegación de Alumnos de Informática Estructura y Tecnología de Computadores http://alu.etsii.ull.es

i. Decodificación de órdenes: El módulo de E/S acepta órdenes del procesador, que se envían generalmente por las líneas del bus de control. Si las órdenes requieren parámetro, éste se envía por el bus de datos. ii. Datos: El procesador y el módulo de E / S intercambian datos a través del bus de datos. iii. Información de estado: cuando se le envía una orden a un módulo de E / S puede que el periférico esté todavía ejecutando alguna orden anterior, para saber si ocurre esto se usa una señal de estado. iv. Reconocimiento de dirección: Como cada palabra de memoria, cada dispositivo de E / S tiene una dirección. Así un módulo de E / S puede reconocer una única dirección para cada periférico que controla. 3. Comunicarse con los dispositivos: Implica intercambiar órdenes, informaciones de estado y datos. 4. Almacenamiento temporal de datos: De recursos internos a dispositivo: Como la velocidad de los recursos internos es muy alta, hay que almacenar la información que éstos envían a algún dispositivo para que éste cuando termine lo que esté haciendo haga lo que se le pide y así no tener a los recursos internos esperando a que el dispositivo lea lo que tiene que hacer De dispositivo a recursos internos: Almacena los datos para que no quede ocupada la memoria en una operación de transferencia lenta. 5. Detección de errores: Hay que avisar constantemente de los errores que sucedan, desde papel atascado o pista dañada a cambios en la información accidentales. Estructura de un módulo de E / S:

El módulo de E / S se conecta al resto del computador por un conjunto de líneas, por ejemplo, por el bus del sistema. Los datos que se transfieren a / desde el módulo se almacenan temporalmente en uno o más registros de datos. Puede haber uno o más registros de estado que proporcionen información del estado presente. Un registro de estado puede también funcionar como registro de control para recibir información de control del procesador. La lógica que hay en el módulo interactúa con el procesador a través de las líneas de control, que también usa el procesador para proporcionar órdenes al módulo de E / S, y algunas de ellas son usadas por el módulo para, por ejemplo, señales de arbitraje y de estado. El módulo ha de ser capaz de reconocer y generar las direcciones asociadas a los dispositivos que controla. Cada módulo de E / S tiene una única dirección o conjunto de direcciones, dependiendo de si controla a un único o a un conjunto de dispositivos. Tema 6 - Página 2

Delegación de Alumnos de Informática Estructura y Tecnología de Computadores http://alu.etsii.ull.es

El módulo de E / S posee lógica específica para la interfaz con cada dispositivo que controla. El funcionamiento del módulo de E / S se basa en hacer que el procesador, al trabajar con dispositivos periféricos sólo tenga que preocuparse del tipo de orden y donde, no de cómo hacerlos ni de los tiempos que tardará. Esquema de un periférico (Arquitectura):

Periférico (mínimo)

Formas de direccionamiento de periféricos: Mapeado en memoria: Existe un único espacio de direcciones para las posiciones de memoria y para los dispositivos de E / S. La CPU considera los registros de estado y de datos de los módulos de E/S como posiciones de memoria y utiliza las mismas instrucciones máquina para acceder a memoria y a los dispositivos de E / S. Se necesita una sola línea de lectura y una sola línea de escritura en el bus. Se puede utilizar un amplio repertorio de instrucciones, permitiendo una programación más eficiente. La principal desventaja es que usa parte del valioso espacio de memoria. E / S por puertos: Con esta forma de direccionamiento, el bus dispone de líneas de lectura y escritura en memoria junto con líneas para las órdenes de entrada y salida. En este caso, las líneas de órdenes especifican si la dirección se refiere a posición de memoria o a un dispositivo de E / S. Existe un rango completo de direcciones disponibles para ambos. Así, los puertos de E / S sólo son accesibles mediante una orden específica de E / S, que activa las líneas de órdenes de E / S del bus. (IO/M ). Sólo existen pocas instrucciones de E/S.

FILOSOFÍA DE ENTRADA / SALIDA: TRANSFERENCIA PROGRAMADA: Los datos se intercambian entre el procesador y el módulo de E / S. El procesador ejecuta un programa, que controla directamente las operaciones de E / S, incluyendo: Comprobación del estado del dispositivo de forma periódica porque el módulo no envía esa información. Envío de una orden de lectura / escritura. Transferencia del dato. Tema 6 - Página 3

Delegación de Alumnos de Informática Estructura y Tecnología de Computadores http://alu.etsii.ull.es

Cuando se envía una orden al módulo de E / S se tiene que esperar hasta que la operación de E / S concluya. Veamos la transferencia del datos desde dos puntos de vista, primero desde el punto de vista de la CPU al módulo de E / S y luego desde el del módulo de E / S a la CPU. CPU

E / S: Ordenes de E / S:

Al ejecutar alguna instrucción relacionada con E / S, el procesador proporciona la dirección, especificando el módulo de E / S, el dispositivo externo y una orden de E / S. Existen cuatro tipos de órdenes que puede recibir un módulo de E / S cuando es direccionado por el procesador: Control: Lo que hace es activar el periférico e indicarle que ha de hacer. Son específicas para cada periférico. Test: Son para comprobar las condiciones de estado asociadas al módulo y sus periféricos. Lectura: Hace que el módulo de E / S capte un dato de un periférico y lo sitúe en el buffer interno, que suele ser el registro de datos del módulo. Después el procesador puede obtener el dato solicitando que el módulo se lo ponga en el bus de datos. Escritura: Hace que el módulo de E / S capte un dato del bus de datos y posteriormente lo transmita al periférico. E/S

CPU: Instrucciones de E / S:

Entre las instrucciones de E / S y las órdenes de E / S existe una gran correspondencia. La forma de la instrucción depende de la manera de direccionar los dispositivos externos. Cada dispositivo externo tiene asociado un identificador único (dirección). Cada orden de E/S que envía el procesador contiene la dirección del dispositivo asociado. Por eso, cada módulo de E/S debe interpretar las líneas de dirección para determinar si la orden es para él.

E / S MEDIANTE INTERRUPCIONES: Se basa en que el procesador envía una orden de E / S a un módulo y luego continúa realizando algún trabajo útil. Cuando el módulo de E / S concluya con la orden Tema 6 - Página 4

Delegación de Alumnos de Informática Estructura y Tecnología de Computadores http://alu.etsii.ull.es

interrumpirá al procesador para intercambiar datos con él. Entonces el procesador ejecuta la transferencia de los datos y luego continúa lo que estaba haciendo. Funcionamiento de las E/S mediante interrupciones: Desde el punto de vista del módulo de E/S: Para una entrada, el módulo de E/S recibe una señal READ del procesador. Entonces el módulo procede a leer el dato desde el periférico asociado. Una vez que el dato está en el registro de datos del módulo de E/S, éste envía una interrupción al procesador a través de la línea de control y espera hasta que el procesador solicite el dato. Cuando recibe la solicitud, el módulo sitúa el dato en el bus de datos y pasa a estar preparado para otra operación de E/S. Desde el punto de vista del procesador: El procesador envía una orden READ, entonces pasa a realizar otro trabajo. Al final de cada ciclo de instrucción, el procesador comprueba las interrupciones. Cuando se pide interrupción desde el módulo de E / S, el procesador guarda el contexto, (program counter y registros de CPU) del programa en curso y procesa la interrupción. Lee palabra del módulo, la almacena en memoria y recupera el contexto del programa que estaba ejecutando. La principal ventaja es que es más eficiente que la E / S programada. La mayor desventaja es que consume gran cantidad de tiempo de procesador, ya que cada palabra de datos que va desde memoria al módulo de E / S o viceversa debe pasar a través del procesador. Procesamiento de interrupción: Veamos el papel del procesador de una manera más detallada: Cuando se produce una interrupción se disparan varios eventos en el procesador, tanto hardware como software. La secuencia de estos eventos es: El dispositivo envía una señal de interrupción al procesador. El procesador termina la ejecución de la instrucción en curso antes de responder a la interrupción. El procesador comprueba si hay interrupción, y si es así envía señal de reconocimiento, que hace que el dispositivo desactive la señal de interrupción. Ahora el procesador se prepara para transferir el control a la rutina de interrupciones. 1º Guarda la información necesaria para continuar el programa en curso en el punto en que se interrumpió. La información necesaria es el estado del procesador, que se almacena en PSW y la posición de la siguiente instrucción a ejecutar, que está en PC. Luego se carga el PC con la posición de inicio del programa de gestión de interrupción solicitada. Según la arquitectura y el sistema operativo puede haber o un solo programa, un programa por cada tipo de interrupción o un programa por cada tipo de interrupción y cada dispositivo. Entonces, si hay más de una rutina de gestión de interrupciones, el procesador debe determinar a que programa llamar. Esta información pudo haber sido incluida en Tema 6 - Página 5

Delegación de Alumnos de Informática Estructura y Tecnología de Computadores http://alu.etsii.ull.es

la señal de interrupción o el procesador puede tener que enviar la solicitud al dispositivo que originó la interrupción para que éste responda con la información precisa. Una vez que PC se ha cargado, el proceso continúa con el ciclo de instrucción siguiente, que comienza con la captación de la instrucción. Como la instrucción siguiente viene determinada por PC, el control se transfiere al programa de gestión de la interrupción. Hasta ahora se ha almacenado en la pila del sistema el PC y el PSW del programa interrumpido, pero hay más información que guardar, como son los registros de CPU, ya que con la rutina de interrupción pueden ser modificados. Es la rutina de gestión de la interrupción la que almacena estos registros antes de hacer nada. Los pasos a seguir son: Guardamos todos los registros en la pila. Guardamos la dirección de la siguiente instrucción, que está en PC. Actualizamos el puntero de pila para que apunte a la nueva cabecera. Actualizamos PC para que apunte al comienzo de la rutina de interrupción. La rutina de gestión continúa procesando la interrupción, que incluye información de estado relativa a la operación de E / S o cualquier evento que causa la interrupción. También puede implicar el envío al dispositivo de E / S de órdenes o señales de reconocimiento. Cuando el procesamiento de la interrupción termina, se restauran los valores de los registros almacenados en la pila. El paso final es recuperar los valores de PSW y PC desde la pila, así la siguiente instrucción ejecutada pertenecerá al programa previamente interrumpido. En la implementación de E / S mediante interrupciones existen varias cuestiones, como determinar el dispositivo que provoca la interrupción o si existen varias interrupciones, decidir a qué interrupción atender. Para identificar el dispositivo existen varias técnicas: Múltiples líneas de interrupción: Se proporcionan varias líneas de interrupción entre el procesador y los módulos de E / S, pero no resulta práctico dedicar muchas líneas a líneas de interrupción, y aunque se dediquen unas pocas líneas, habría que conectar varios módulos a una línea y habría que usar otra técnica en cada línea. Consulta Software (Soft polling): Cuando se detecta una interrupción se bifurca a una rutina de servicio de interrupción que se encarga de consultar a cada módulo para determinar el módulo que ha provocado la interrupción. Si la consulta se realiza por una línea (TEST), se activa y se sitúa la dirección del módulo en las líneas de dirección y así el módulo responde positivamente si solicitó la interrupción. Si cada módulo dispone de un registro de estado direccionable, el procesador lee el estado del registro de cada módulo para identificar al que solicitó la interrupción. Cuando se identifica el módulo, se bifurca para que el procesador ejecute una rutina de servicio específica para este dispositivo. La mayor desventaja es que consume mucho tiempo. Conexión en cadena (Daisy Chain): Todos los módulos de E / S comparten una línea común para solicitar interrupciones. La línea de reconocimiento de interrupciones se Tema 6 - Página 6

Delegación de Alumnos de Informática Estructura y Tecnología de Computadores http://alu.etsii.ull.es

conecta encadenando los módulos de E / S uno tras otro. Cuando el procesador recibe una interrupción, activa el reconocimiento de la interrupción, que se propaga por los módulos hasta alcanzar el que solicitó la interrupción. Éste responde colocando su dirección en las líneas de datos o algún tipo de identificador específico. Con este método evitamos ejecutar la rutina de servicio general al principio. Arbitraje de bus: Con esta técnica, un módulo de E / S debe, en primer lugar de disponer del control del bus antes de poder activar la línea de petición de interrupción. Así, un sólo módulo puede activar la línea en un mismo instante de tiempo. Cuando el procesador detecta la interrupcón, responde mediante la línea de reconocimiento de interrupción y después, el módulo que solicitó la interrupción sitúa su dirección en las líneas de datos. Con estas técnicas de identificación del módulo de E / S, también se proporcionan formas de asignar prioridades cuando más de un dispositivo solicita que se le sirva su interrupción. Múltiples líneas de interrupción: el procesador selecciona la línea con más prioridad. Consulta software: el orden en que se consultan los módulos determina la prioridad. Daisy Chain: el orden en que se conectan los módulos determina la prioridad. Arbitraje de bus: Se uitiliza la misma prioridad para los dispositivos de E / S que para cualquier otro dispositivo interno del computador.

CASO PARTICULAR DEL 8086:

El PIC se conectará a las líneas de interrupción y se encargará de resolver el problema de las interrupciones. Este chip es un conjunto de registros los cuales se pueden leer, escribir o elegir diferentes procedimientos. El PIC resolverá las peticiones por prioridad de orden del IRQ. Las instrucciones CLI, STI activarán o no el bit de interrupción. El PIC quedará esperando la respuesta de la CPU que le llegará por el IntAck, que es el que colocará en el bus de datos y saltará a la rutina pertinente, saltando al vector de direcciones. IRR: Registro en el que quedan apuntadas las peticiones de interrupción. Tiene un procedimiento de prioridad programables. ISR: Registro donde queda contemplado si el 8086 está ejecutando una interrupción. También existe la posibilidad de que cuando se esté ejecutando una interrupción y otro dispositivo realiza una petición, a su Tema 6 - Página 7

Delegación de Alumnos de Informática Estructura y Tecnología de Computadores http://alu.etsii.ull.es

vez interrumpirá la ejecución de la interrupción menos privilegiada. Los periféricos reconocen la interrupción que se está ejecutando por el software. Todos estos casos son programables. ACCESO DIRECTO A MEMORIA (DMA): Se requiere cuando hay que transferir grandes volúmenes de datos. El DMA requiere un módulo adicional en el bus del sistema, el módulo de DMA, que es capaz de imitar al procesador, y también es capaz de recibir el control del sistema cedido por el procesador. Necesita dicho control para transferir datos a y desde memoria a través del bus del sistema. Para hacerlo, el módulo de DMA debe utilizar el bus sólo cuando el procesador no lo necesite, o forzar a éste a que suspenda temporalmente su funcionamiento, lo que se llama robo de ciclo.

Cuando el procesador quiere leer o escribir bloques de datos, envía una ordena al módulo DMA que incluye la siguiente información: Si solicita lectura / escritura utiliza la línea de control de lectura / escritura entre el procesador y el módulo DMA. La dirección del dispositivo de E / S en cuestión la envía a través de las líneas de datos. La posición inicial de memoria a partir de donde se lee o escribe, a través de líneas de datos, y es almacenada por el módulo DMA en el registro de direcciones. El número de palabras a leer o escribir, indicado también a través de las líneas de datos y es almacenado en el registro de cuenta de datos. Luego el procesador se encarga de hacer otra tarea, y la operación de E / S es delegada al módulo DMA, que se encargará de que se concluya por completo. También se encargará de transferir el bloque de datos, palabra a palabra, directamente desde o hacia memoria, sin que pase por el procesador. Cuando termina la transferencia envía una señal de interrupción al procesador. Así, el procesador sólo interviene al comienzo y al final de la transferencia. Durante un ciclo de instrucción, cuando un módulo DMA está realizando una operación de E/S, el procesador se detiene justo antes de necesitar el bus. A continuación, el módulo DMA transfiere la palabra y devuelve el control al procesador. No se trata de una interrupción, no se guarda contexto ni nada, pero el procesador espera durante un cilo de bus. Por esta espera el procesador es más lento ejecutando programas. El mecanismo de DMA se puede configurar de varias formas.

Tema 6 - Página 8

Delegación de Alumnos de Informática Estructura y Tecnología de Computadores http://alu.etsii.ull.es

Con este esquema, cada transferencia de palabras consume dos ciclos de bus. El módulo DMA actúa como procesador usando transferencia programada entre módulo de E / S y memoria.

Con este esquema, se reducen el número de ciclos de bus necesarios para las transferencias, ya que existe un camino entre el módulo DMA y uno o más módulos de E / S que no incluye al bus del sistema. La lógica de DMA puede ser parte de un módulo de E / S o ser un módulo separado que controla uno o varios módulos de E / S. También se puede hacer que haya un módulo DMA y un bus de E / S, así se reduce el número de interfaces de E / S en el módulo DMA. La ventaja de este esquema es que sólo se usa el bus del sistema por parte del módulo DMA para intercambiar los datos con la memoria. CONTROLADOR DE DMA:

El DRQA es la línea que avisa al periférico para decirle si su petición ha sido aceptada. Con la línea HOLD, el controlador de DMA le dice a la CPU que se va a realizar una transferencia y que no tiene que utilizar el bus. La CPU puede hacer caso o no, y le responderá por la línea de HOLD ACKNOWLEDGE si le dejará o no el control del bus. Cuando el controlador de DMA desactiva la línea HOLD significará que le devuelve a la CPU el control del bus. Para enganchar los periféricos a la memoria tenemos diversas Modalidades de direccionamiento: Tenemos que asignar direcciones a esos periféricos de E / S: - Instrucciones de E / S no explícitas: Direccionamiento periférico (E / S) mapeado en memoria. Tema 6 - Página 9

Delegación de Alumnos de Informática Estructura y Tecnología de Computadores http://alu.etsii.ull.es

- Instrucciones de E / S explícitas: Las direcciones de los periféricos ya no coinciden con las direcciones de memoria convencionales, sino que tienen su propio espacio de direcciones llamado puertos de E / S( Direcciones perif Puertos E / S)

Tema 6 - Página 10

Delegación de Alumnos de Informática Estructura y Tecnología de Computadores http://alu.etsii.ull.es

TEMA 7.- UNIDAD DE CONTROL

La ejecución de una instrucción implica la ejecución de una secuencia de pasos más pequeños, normalmente llamados ciclos. Los ciclos son: ciclo de captación (búsqueda), de acceso indirecto a memoria, de ejecución y de interrupción. El ciclo se compone de una serie de operaciones más elementales, las microoperaciones. Una única microoperación implica, por lo general, transferencia entre registros, transferencia entre registros y el bus o sencillamente una operación de ALU. La Unidad de Control de un procesador realiza dos tareas: Hace que el procesador ejecute las operaciones en la secuencia correcta, determinada por el programa que se está ejecutando, Genera las señales de control que provocan la ejecución de cada operación. Las señales de control generadas por la UC causan la apertura y el cierre de ciertas puertas lógicas, lo que da como resultado una transferencia de datos hacia o desde los registros y una operación de la ALU. Una técnica para construir una UC es la lógica cableada, en la cual, la UC es un circuito combinacional. Sus señales lógicas de entrada, gobernadas por la instrucción máquina en curso, se transforman en un conjunto de señales de control de salida. Estructura interna de la CPU: El bus A y B son buses internos a la CPU ya que sirven para conectar los elementos de la CPU. Con dos buses tenemos más posibilidades de mover cosas simultáneamente: MAR: Direcciones que podrán salir a fuera de la CPU. De él sale el bus de direcciones. MDR: De él partirá el bus de datos. Tendremos el registro acumulador para realizar las operaciones sobre él. Con multiplexores haremos que el MAR otro.

obtenga conexión con un bus o con

A través del MDR podríamos pasar datos del bus A al bus B y viceversa. (*) Son líneas de selección de la operación que queremos realizar. Tema 7 - Página 1

Delegación de Alumnos de Informática Estructura y Tecnología de Computadores http://alu.etsii.ull.es

El AC es un registro temporal que se usa como réplica de AC, pero el programador nunca lo ve y no pertenece al juego de instrucciones. La UC genera una -orden, que es una señal que gobernará una operación elemental dentro de un ordenador (de la CPU en este caso): cargar un registro, realizar una operación en la ALU. Cada una de estas instrucciones tendrán conexiones distintas. El SP es un puntero a memoria donde está cima de la pila del sistema. Se usa para hacer llamadas a subrutinas. Read

Write: Son operaciones externas que controlarán instrucciones elementales.

Ordenes de actuación del MAR con la entrada del bus A y el bus B (EMARA ó EMARB). Tendremos otro conjunto de -ordenes que se seleccionarán en la ALU para realizar una operación. También existirá una señal de habilitación de comunicación entre el acumulador y el acumulador auxiliar. Todas estas líneas de -ordenes parten de la unidad de control. Los flags se encuentran dentro de los biestables de condición. Este se trata de un vector de bits que necesita la unidad de control para realizar su trabajo. Requisitos fundamentales de la UC: Son aquellas funciones que debe llevar a cabo. Para caracterizar al UC son necesarios tres pasos: 1- Definir los elementos básicos (ALU, Registros, Caminos de datos (internos y externos, UC) 2- Describir las operaciones que ejecuta el procesador 3- Determinar las funciones que deber realizar la UC para hacer que se ejecuten las operaciones. La ejecución de un programa consta de operaciones que involucran los elementos básicos del procesador y consisten en una secuencia de operaciones. Clasificación de operaciones: Transferir datos entre registros Transferir datos de registro a interfaz externa (bus del sistema) Transferir datos de interfaz externa a registros. Realizar operaciones aritméticas o lógicas, usando registros para e / s. CÓMO EJECUTAR UNA INSTRUCCIÓN:

Micro operaciones: Son operaciones funcionales o atómicas: CICLO DE BÚSQUEDA: Tiene lugar al principio de cada ciclo de instrucción y hace que una instrucción sea captada de la memoria. Lo único que se capta de memoria en Tema 7 - Página 2

Delegación de Alumnos de Informática Estructura y Tecnología de Computadores http://alu.etsii.ull.es

este ciclo es el código de operación de la instrucción, no interesa nada acerca de los operandos. Hay cuatro tipos de registros implicados: Los registros de direcciones del bus del sistema. Especifica la dirección de la operación de lectura o escritura. Los registros de datos y temporales del bus del sistema. Contiene el valor a almacenar en memoria o el último valor leído de memoria. PC: Contiene la dirección de la siguiente instrucción a captar. IR: Contiene la última instrucción captada. Desde el punto de vista de los efectos sobre los registros del procesador, la secuencia de eventos sería: Al comienzo del ciclo, la dirección de la siguiente instrucción a ejecutar está en PC. 1º paso: Llevar esta dirección a MAR 2º paso: Traer la instrucción: la dirección de MAR se coloca en el bus de direcciones y la UC envía una orden READ por el bus de control, el resultado aparece en el cbus de datos y se copia en MBR y se incrementa PC (en longitud de la instrucción) para que esté preparado para la siguiente instrucción. 3º paso: Transferir el contenido de MBR a IR. Suponiendo que cada paso se realiza en una unidad de tiempo, tenemos: t1 : MAR

[PC]

t2 : MDR

Mem. ; Inc PC

t3 : IR

8086:

[MDR]

SPCA, EMARA READ SMDRB, BTOA, EIRA

CICLO INDIRECTO: Cuando ya se ha captado la instrucción, lo que toca ahora es captar los operandos fuente. Supongamos un formato de instrucción de una dirección, que permite direccionamiento directo e indirecto. Si la instrucción especifica una dirección indirecta, un ciclo indirecto ha de preceder al ciclo de ejecución. Para un ciclo indirecto hay que hacer las siguientes microoperaciones: t1 : MAR

[IR[Dirección]]

t2 : MDR

Mem

t3 : IR[Dirección]

[MDR[Dirección]]

El campo de dirección en la instrucción se transfiere a MAR. Éste se usa después para captar la dirección del operando. Por último, el campo de dirección de IR se actualiza con el contenido de MBR para que contenga una dirección directa, en lugar de indirecta. IR tiene ahora el mismo estado que si no se hubiera usado direccionamiento indirecto y está listo para el ciclo de ejecución. CICLO DE INTERRUPCIÓN: Cuando termina un ciclo de ejecución, se comprueba si ha ocurrido alguna interrupción habilitada. Si es así, tiene lugar un ciclo de interrupción. t1 : MDR

[PC]

t2 : MAR

Direcc de salvaguarda

PC

Dirección de la rutina

t3 : Mem

[MDR]

Tema 7 - Página 3

Delegación de Alumnos de Informática Estructura y Tecnología de Computadores http://alu.etsii.ull.es

Explicación: El contenido de PC se guarda en MDR para el retorno de la interrupción, luego, en MAR se carga la dirección en la que se guarda el contenido de PC, y PC carga la dirección de comienzo de la rutina de procesamiento de la interrupción y, finalmente, se carga el contenido de MDR, que es el antiguo contenido de PC. CICLO DE EJECUCIÓN: Como no ocurre en el resto de los ciclos, en una máquina con N códigos de operación diferentes pueden ocurrir N secuencias diferentes de microoperaciones, que dependen de la naturaleza y el objetivo de cada instrucción. Hemos de tener en cuenta varios puntos concretos en lo referente a los ciclos de una instrucción: El ciclo de interrupción siempre viene seguido por del ciclo de búsqueda. El ciclo indirecto siempre viene seguido por el ciclo de ejecución. En el caso de los ciclos de búsqueda y ejecución, el siguiente ciclo depende del estado del sistema. Sólo nos centraremos en los ciclos de ejecución y de búsqueda. Por ejemplo, los pasos a seguir para una instrucción como: INC AC son: CB:

SPCA, EMARA

Enviamos la dirección del opcode de PC a MAR

READ

Activamos la lectura a memoria

SMDRB, BTOA, EIRA CE:

El contenido de la dirección de opcode en memoria se guarda en MDR, y luego se envía al IR y termina la búsqueda.

INC XAC SPCA, LOADA INC SAC, EPCB XAC

Otro ejemplo, salto incondicional absoluto: JMP DIR CB :

(Igual en todos, por tanto, mirar el de arriba)

CE :

XAC SPCA, LOADA INC SAC, EMARB READ SMDRB, EPCB, XAC

LOGICA CABLEADA: La UC tiene la misión de generar microoperaciones y depende de biestables de condición, donde se encuentran las líneas del bus de control de estado. Separaremos los biestables por un lado y por el otro los circuitos combinacionales.

Las unidades necesarias para que funcione el bus están contenidas en los biestables de condición. Tema 7 - Página 4

Delegación de Alumnos de Informática Estructura y Tecnología de Computadores http://alu.etsii.ull.es

Utilizaremos un contador para ir generando las tendrá el señales

-ordenes secuencialmente. Éste generador de llamadas Ti.

Pondremos n tiempos que corresponderán con la instrucción más compicada que tengamos. Por tanto surge el problema de que el tiempo de ejecución varía según la microorden. Y como solución ponemos una nueva microorden que resetee el generador de tiempos, de este modo no tenemos que esperar todos los tiempos Muchas de las -ordenes estarán condicionadas a ciertas componentes de los biestables de condición, como los flags. Ej.: INC AC CB

CE

SPCA, EMARA READ SMDRA, EIRA INC XAC SPCB, BTOA, EACA INC SACB, EPCB XAC

Escribir la microorden del incremento :

inc

T0 T1 T2 T3 T4 T5 T6 T7 T8

= T3 · IINC A + T6 · IINC A + .......

Escribir la microorden del intercambio entre AC y AC :

XAC

= T4 · IINC A + T8 · IINC A + .......

Ej.: ¿Qué es lo que harían estas instrucciones? a)Salto incondicional Cambia el PC al destino del salto PC destino del salto (DIR)

CB

MAR

READ MDR

IR

Tendríamos que acceder al operando incrementando el PC, para leer nuestro destino del salto. CE

PC AC INC AC MAR READ PC MDR

llevamos PC para leer el destino

llevamos el dato al PC

b)Carga de un registro de memoria. Tema 7 - Página 5

Delegación de Alumnos de Informática Estructura y Tecnología de Computadores http://alu.etsii.ull.es

Tendríamos una indirección más que antes

c)Salto incondicional, pero existe la posibilidad de volver a la posición original, entonces habrá que conservar la dirección de origen.

MICROPROGRAMACIÓN: Su función es hacer más modular el diseño de la unidad de control. Supongamos que para cada microoperación, lo que la UC puede hacer es generar un conjunto de señales de control de modo que, para cualquier microoperación, cada línea de control procedente de la UC está activa o inactiva. Podríamos construir una palabra de control cada microoperación se representa en la que cada bit representa una línea de control mediante patrones diferentes de 1 s y 0 s en la palabra de control.

Generamos las líneas de control a partir de las líneas que salen del decoder y representan tiempos. VENTAJAS: Si quisieramos cambiar el orden de una -orden podríamos desconectar y conectar en otro ciclo de tiempo. En función del IR podríamos elegir a partir de la línea que va a comenzar la ejecución. En las líneas que hemos colocado perpendiculares al decoder podemos seleccionar también la secuencia de la siguiente línea a activar. Debemos intentar que la secuencia no sea siempre la misma. La matriz de conexiones la vamos a sustituir por una memoria en la que cada bit tendrá una -orden. El registro de direcciones de esa memoria será el registro de direcciones de control. Tema 7 - Página 6

Delegación de Alumnos de Informática Estructura y Tecnología de Computadores http://alu.etsii.ull.es

Podríamos tener un dispositivo que fuera accediendo secuencialmente a las ordenes necesarias para realizar una instrucción.

-

La secuencia necesaria de -ordenes para realizar o lograr la ejecución de una instrucción se llama microprogramación. Ésta sería la manera más sencilla de programar una UC, además tiene la posibilidad de hacerse variada, lo que no ocurre con lógica cableada, pues la memoria programada se puede alterar Ej.: programación.

PC: donde va a estar contenida la dirección de la instrucción a ejecutar. 29: Número de bits que hacen falta para almacenar todas las -ordenes. Ej: Programar la CPU para: Salto condicional al carry y relativo es dir absoluta, sino relativa al contenido de PC)

jc DIR_RELAT (no

INIC: Tenemos en IR el opcode dee la instrucción, para ello, una instrucción previa ha activado el bit START y poniendose a 0 los 4 bits inferiores, lo que tendríamos son direcciones múltiplos de 16, pues se ha hecho así. Sale la dir del PC y se selecciona en MEMORIA de CONTROL el opcode de la dirección seleccionada, lo que van ordenes saldran a la máquina y harán su función. Si no se activa ninguno de los 3 últimos bits del MUX se activa el 0 y la dirección del PC se produce un INC y se accede a la siguiente posición de memoria. En caso contrario dependiendo si las FLAG está n a 0 o a 1 el PC se incrementará o se cargará el PC en este último caso se producirá un cero de un salto que se produce dentro de un rango de 16 palabras de control. Para hacer jc DIR_RELAT: Si C = 0 Si no

buscamos la siguiente instrucción de forma secuencial. leemos DIR_RELAT, saltamos en memoria y leemos siguiente opcode. Tema 7 - Página 7

Delegación de Alumnos de Informática Estructura y Tecnología de Computadores http://alu.etsii.ull.es C = 0:

INC PC

C = 1:

INC PC

INC PC SPC, EMAR, READ

SPC, EMAR, READ

SPC, LOADA

SMDR, EIR, START

SMDR, SUM SAC, EPC SPC, EMAR, READ SMDR, EIR, START

NOTA: Las lineas subrayadas y en cursiva corresponden al ciclo de búsqueda Las dos primeras líneas harían un ciclo de búsqueda. El IR se estará cargando con el opcode de la dirección 0 de memoria, al principio, donde apunta el PC. El bit START carga los 8 bits más significativos y reserva los 4 bits inferiores del registro de direcciones. Ahora en memoria de control tendría el OPCODE 0000 y determinará la posición inicial donde comenzará la instrucción: A partir de ella colocaremos las palabras de la instrucción completa. Para un determinado OPCODE tenemos un espacio concreto para colocar las palabras que conforman la instrucción. Tiene el espacio de la variación de los últimos 4 bits.

Cuando se termina de ejecutar la instrucción debemos dejar preparado con el ciclo de búsqueda para la siguiente instrucción dejando preparado el PC. Las necesidades de ejecutar casos condicionalmente los soluciona el MUX. 1 1 0 0

MUX

S1

S0

1 0 1 0

ZERO OVERFLOW CARRY 0

00 Carga 0 INC 1. Cambia de dirección de forma secuencial dentro de la -instrucción. 01 En lugar de incrementarse se cargan los 4 bits, que vienen del registro de instrucción pudiendo controlar la siguiente instrucción o lo que esté puesto en los 4 bits.

El registro de -instrucciones contiene todas las -ordenes que se van a ejecutar.

Tema 7 - Página 8

Delegación de Alumnos de Informática Estructura y Tecnología de Computadores http://alu.etsii.ull.es

Para cada opcode diferente tenemos que obtener la dirección de memoria de control con el generador de direcciones. Este también se encargará de que se ejecuten las ordenes que corresponden a la instrucción. Parte de los bits del registro de instrucciones pueden tener información de la siguiente instrucción a ejecutar. Entonces el generador de direcciones tendrá que buscar información en los biestables de condición y el registro de instrucciones. a) Dirección inicial b) Secuenciar una palabra detrás de otra. c) Ejecución condicional Hemos resuelto entonces tres problemas que teníamos. VENTAJAS: Podemos hacer las pruebas que queramos con la memoria alterando los contenidos e incluso cambiar el juego de instrucciones. CLASIFICACIÓN DE LAS INSTRUCCIONES 1)Podemos clasificar las -instrucciones en verticales y horizontales. El concepto de ser HORIZONTAL es que cada bit contiene una -orden. Exige palabras o instrucciones grandes, pues puede hacer muchas cosas en palalelo. Una operación sencilla puede tener aproximadamente 60 bits. En las VERTICALES tendremos campos codificados y un paralelismo restringido. Las instrucciones serían más cortas.

En la entrada podríamos colocar el número de registro al que voy a entrar. Cada uno de los campos necesitarán una decodificación.

Las máquinas nunca suelen ser completamente horizontales, sino que contienen algunos campos codificados. 2)Instrucciones monofásicas o polifásicas: Una instrucción MONOFÁSICA atiende al esquema que tenemos hecho anteriormente. En las POLIFÁSICAS las -ordenes que están en la misma línea de memoria no siempre actuarán en el mismo instante de tiempo. En una misma -instrucción puede haber -ordenes que se ejecutan en tiempos distintos. En las MONOFÁSICAS todas las palabras que contienen -ordenes se ejecutan en un mismo instante de tiempo. NANOPROGRAMACIÓN Es un segundo nivel de programación. En un primer nivel, podemos simplificar las instrucciones pero quizás no sea suficiente según el juego de instrucciones. Tema 7 - Página 9

Delegación de Alumnos de Informática Estructura y Tecnología de Computadores http://alu.etsii.ull.es

La n-programación es mucho más lenta porque hay que acceder a la memoria en dos niveles.

Tema 7 - Página 10

Related Documents