Está en la página 1de 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 Memoria principal

CPU Dispositivos
Mundo exterior
Unidad aritmético- entrada / salida
lógica

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 1971): Se introducen componentes mínimos para crear


circuitos integrados.
(SSI SMALL {12 puertas lógicas}; MSI MÉDIUM{100 puertas lógicas})
IBM 360 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) SGI
Intel: 8086 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 ... 0 n bits

n 1
Rango: 0 M 2n 1 M Bi 2i
i 0

Tema 1 - Página 1
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
Rango: - 1) M 2 (2n-11 n-1

Un pequeño problema que tiene es la doble representación del cero.


-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
n 1
2 128
z 2 n 1
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.
E
M B

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 Nº
0 0 Cero
= 255 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

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 2-125 (UNDERFLOW)
0.00001xxx 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 Letras Minúsculas


... Números ... @ Letras Mayúsculas ...
TAB Tabulador

CR Retorno de Carro

ISO: La organización ISO ha intentado realizar un código universal llamado LATIN-


1, 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 tri-
estados 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 2n 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
n
dada por: Longitud media 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
(DS, SS, ES, CS) son todos de 16 bits. Una REG. SEGMENTO (16 BITS) 0000

dirección de 20 bits se forma tomando un


registro de segmento y se le añaden 4 OFFSET (16 BITS) DESPLAZAMIENTO
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 Los registros AL, BL, CL, DL representan la parte baja de los
registros AX, BX, CX, DX, respectivamente, y AH, BH, CH, DH
001 BX BL
representan la parte alta de los mismos.
010 CX CL
Esta dependencia sobre el bit w es debida a que si w es 1 no
011 DX DL tendremos ningún problema, ya que trabajamos con palabras completas,
100 SP AH 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
101 BP BH que hay que direccionar la parte baja y alta, respectivamente con los bits
110 SI CH 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 (*) Si tenemos R/M = 110 y MOD = 00 el desplazamiento
efectivo es simplemente (desp_alto-desp_bajo)
001 BX + DI + DESP
MOD(2 bits)Indica las modificaciones en el desplazamiento
010 BP + SI + DESP
11 R/M se interpreta como un registro. No hay
011 BP + DI + DESP
desplazamiento.
100 SI + DESP
10 Desplazamiento completo (1 word)
101 DI + DESP
01 Desplazamiento corto (1 byte)
110 BP + DESP (*)
00 Desp = 0, No existe desplazamiento adicional.
111 BX + DESP

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
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 = 1 Estamos accediendo a una dirección absoluta
directamente.
Si Rs(Base) y R2(Desplazamiento) 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 (n 1)
n º buses
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 arbitro del bus)
Ventajas: Costo reducido.
Desventajas: El acceso será mucho más lento.
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 j

Tema 2 - Página 12
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 bus se encuentra
concentrado en un sitio, un solo dispositivo.
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 2N líneas.
2. Polling (Sondeo) log2 N
3. Daisy-Chaining 2

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 DESTINO
Data

Tema 2 - Página 16
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 n bits s=y+y
CV Xn-1Yn-1 Xn-1 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
C=0111=7
produciendo un vector S, resultado de hacer la
suma bit a bit produciendo acarreo y un vector C S=1000

que nos devolverá todos los acarreos que hayan C=0111

hecho falta. 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:
1 0 1 0 Multiplicador Y de n bits
Para asegurarnos que el resultado cabe en el x 1 1 0 1 Multiplicador X de m bits
espacio p tendremos que reservar un espacio 1 0 1 0
de p = m + n 0 0 0 0

1 0 1 0
P=X Y + 1 0 1 0

1 0 0 0 0 0 1 0 Resultado P

Tema 3 - Página 2
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 1 1 ... 1 1 0

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


Los valores que se suman son los que en la casilla del contenido hay un 1
a r (r n - 1) 2i (2k - 1)
Sprog
geom 2i (2k - 1) 2i k
- 2i
r -1 2 -1
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
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

Ej: B = ( 0 1 1 1 0 1 1 0) 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
restar (A A M) 0 11 Desplazamiento
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 Q Cociente
X Divisor Z Resto
Y=X Q+Z 0 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 M;) 2A M
A<0 Sumar, Desplazar y restar (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 2e1 B = 1.m2 2e2 1.m1 2e1 + 1.m2 2e2
e1 < e2 = 0.0....0(1m1 2e1 + 1m2 2e2)
e1 + d = e2
Si tenemos carry de 1 lo solucionamos con un desplazamiento a la derecha: 11.1 1.11
Tema 3 - Página 6
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.m1
2e1 e2
1.m 2 2 e2 1.m 2

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) Dispositivos que solo podemos leer (acceso aleatorio).
PROM: (Programmable ROM) El usuario tiene opción de alterar la memoria,
pero sólo una vez.
EPROM: (Erasable PROM) Son capaces de ser borradas, pero con un proceso
muy complicado.
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 de


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

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.

Nº fallos Nº aciertos
NOTA: Relación fallos Relación aciertos RAciertos + RFallos = 1
Nº accesos 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 Caché lleno.
Asociativo por Conjuntos 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 obtenga conexión con un bus o con
otro.
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] 8086: SPCA, EMARA

t2 : MDR Mem. ; Inc PC READ

t3 : IR [MDR] 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 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.
CE: 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 -ordenes secuencialmente. Éste
tendrá el generador de
señales 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
SPCA, EMARA T0
CB
READ T1
SMDRA, EIRA T2
INC T3
XAC T4
SPCB, BTOA, EACA T5
CE INC T6
SACB, EPCB T7
XAC T8

Escribir la microorden del incremento : inc = 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 MAR
destino del salto (DIR) CB READ
MDR IR

Tendríamos que acceder al operando incrementando el PC, para leer nuestro


destino del salto.
PC AC llevamos PC para leer el destino
INC
CE AC MAR
READ
MDR PC 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
en la que cada bit representa una línea de control cada microoperación se representa
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 jc DIR_RELAT (no
es dir absoluta, sino relativa al contenido de PC)
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 buscamos la siguiente instrucción de forma secuencial.
Si no 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
1
0
ZERO
OVERFLOW
00 Carga 0 INC 1. Cambia de dirección de forma
MUX 0 1 CARRY
0 0 0 secuencial dentro de la -instrucción.
S1 S0 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