Вы находитесь на странице: 1из 108

APUNTE DE ARQUITECTURA

DE COMPUTADORAS

UTN FRRE
2017
Compilación, Formato y Algunos Textos
Originales: Albiach Matias, Angelo Galliardi.
Agradecimiento Especial: Gisel Marinoff, Juan
Carcaño, Dante Sack, Rodrigo Cerdan.

“En Arquitectura te pueden pedir que expliques el ciclo de


combustión de un motor de 2 tiempos, y les tenés que decir”
-Tuto Il Duche

Apunte realizado siguiendo el programa analítico con las filminas, la bibliografía y la guía de
autoestudio. Se toma el libro de Meinadier como base. No estudies solo de acá, o si, hace lo que
quieras, soy un apunte no tu madre.
Unidad 1: Introducción a la Arquitectura de Computadoras
Sistema de Información: Es un subsistema de la organización. Elabora datos útiles (información)
para la toma de decisiones.
Procesamiento de Datos: Pasos necesarios para obtener información (disminuye la incertidumbre)
a partir de datos (representación en un conjunto de símbolos de hechos, atributos, valores).
Sistema Digital: Es un dispositivo o una combinación de dispositivos diseñado para generar,
transmitir, procesar o almacenar información representada por señales digitales; es decir; que solo
puedan tomar valores discretos. Un computador es un sistema digital.
Computador (Según Stallings):
Máquina digital electrónica programable para el tratamiento automático de la información, capaz
de recibirla, operar sobre ella mediante procesos determinados y suministrar los resultados de
tales operaciones.
Generaciones de Computadoras:

Generación Años Características Resuelven

0 hasta 1945 Sistemas mecánicos y electro- No siguen instrucciones (ábacos,


mecánicos calculadoras mecánicas, etc.)

1 1945 – 1955 Tubos al vacío, tableros Una sola tarea

2 1955 – 1965 Transistores y sistemas por lotes Varias tareas

3 1965 – 1980 Circuitos integrados y Varias tareas


multiprogramación

4 desde 1980 Microprocesadores y Computadores Varias tareas


personales

Primera Generación
Las computadoras estaban constituidas por válvulas de vacío, que disipaban gran cantidad de calor
y ocupaban una amplia superficie. Ejecutaban algunas miles de instrucciones por segundo.
Almacenaban de 10mil a 20mil bytes en su memoria. Los medios de entrada/salida eran tarjetas o
cintas perforadas. La memoria principal tenía un tiempo de acceso muy grande en comparación
con los tiempos de procesamiento de la UCP.
Las tareas se ejecutaban de manera puramente secuencial, lo que implicaba que:

1. El programa, almacenado en tarjetas o cintas perforadas, era cargado en la memoria


principal por un programa llamado cargador
2. Se ejecutaba el programa instrucción por instrucción
3. Se imprimían los resultados.
Las operaciones de entrada, procesamiento y salida de los datos estaban encadenadas en el
tiempo, por lo que la duración de todo el proceso era la suma de todas y cada una de las
operaciones.

Segunda Generación
Las computadoras de la 2da generación estaban constituidas por transistores, más confiables, de
menor tamaño, menor disipación de calor y más rápidos que las válvulas de vacío para cambiar de
estado. Se pasan a alcanza velocidades de procesamiento de centenares de miles de instrucciones
por segundo.
Posibilitaron la simultaneidad entre un cálculo y una operación de E/S, aunque el encadenamiento
de los trabajos seguía siendo secuencial. Este concepto dio poco resultado en la práctica, debido,
en gran medida, a la desproporción entre las velocidades de cálculo interno y las velocidades de
E/S, que hacían que la CPU no se usara más que un pequeño porcentaje de tiempo. La solución a
esto fue que las operaciones de E/S se realizaran usando como soporte de almacenamiento
unidades de cinta magnética, más rápidas que las lectoras de tarjetas y las impresoras. Para lograr
esto, se copiaba la información contenida en soporte tarjeta a soporte cinta magnética y de ésta a
la impresora, usando para esto una computadora auxiliar. La computadora principal no conocía ni
operaba más que con las cintas magnéticas.
Esto se llamó procesamiento por lotes, ya que era necesario esperar a que un lote de trabajos
cargados en la cinta magnética se procese por completo para obtener los resultados de cada
trabajo.

Tercera Generación
Con tecnología de circuitos integrados, ósea miles de componentes electrónicos incluidos en una
sola pastilla de silicio. Estos circuitos eran de pequeña y mediana escala de integración (SSI y MSI),
y permitieron el incremento de la velocidad interna de la computadora y la reducción de la energía
que usaban.
Permiten explotar eficazmente las simultaneidades latentes ya en la 2da generación mediante la
multiprogramación, que consiste en que varios programas residen en forma simultánea en
memoria en estado de ejecución. En un instante dado solo uno de ellos usa la CPU, pero los otros
pueden efectuar operaciones de E/S en forma simultánea. Cuando el programa que ejecuta la CPU
se detiene en espera de una operación de E/S, otro programa puede ocupar su lugar dejando al
primero suspendido y evitando así tiempos inactivos en la CPU.
La carga por lotes fue sustituida por la “carga continua” de los trabajos a medida que se presentan.
A medida que llegan son puestos en una cola de espera en un disco magnético y el sistema
operativo es el que se encarga de cargarlos en memoria para ejecutarlos según su nivel de
prioridad. Los resultados son transferidos luego al disco, hasta que son extraídos por la impresora.
No tenemos que esperar a que se procese todo un lote de programas para obtener los resultados.

Surge la posibilidad de trabajar a distancia, o el teleprocesamiento. Los trabajos de los terminales


remotos quedan incluidos en una cola de espera con prioridades, exactamente igual que aquellos
que se cargan localmente.
Surge también la posibilidad que el usuario intervenga en el procesamiento. El diálogo se gestiona
usando un terminal con menús o cuestionarios que el sistema formula y el usuario responde. Trajo
mayor flexibilidad en cuanto a la puesta a punto o en la modificación de programas.

A fin de atender un gran número de procesos o usuarios, las computadoras pasaron a asignar en
forma alternada una parte del tiempo de CPU a cada uno, lo que producía un efecto de aparente
simultaneidad de ejecución.
Por último, se desarrolla el concepto de máquina virtual, que simplifica la labor del programador,
ya que éste no conoce más que una máquina ficticia creada y controlada por el sistema operativo,
que no presenta limitaciones de configuración.

Cuarta Generación
La tecnología de la fabricación de los circuitos integrados paso a ser LSI (Large Scale Integration)
con una mayor miniaturización y más circuitos dentro del chip, lo que permitió incluir una CPU
completa en una sola pastilla, que se denominó microprocesador. Debido a esto, empiezan a
tomar gran importancia las computadoras personales o PC hogareñas, surgiendo gran variedad de
periféricos y comunicándose entre sí a través de módems y redes globales.
El procesamiento se realiza en mayor medida en tiempo real.
Considerando los sistemas interactivos, se hace posible la consulta y actualización de datos, así
como el acceso a grandes bancos de datos conectados en redes, como los sistemas de cajeros
automáticos bancarios.
Se desarrollan nuevas utilidades a partir de la sencilla comunicación usuario-máquina: enseñanza
asistida por computadora, consultas telefónicas que entregan una respuesta oral al usuario,
regulación automática de semáforos, control automático de procesos de una línea de producción
manufacturera, diseño de proyecto asistido por computadora, hojas de cálculo y poderosos
procesadores de texto que automatizan prácticamente el total de las tareas de oficina.
Hasta esta etapa, los avances tecnológicos estuvieron concentrados en lograr mejorar el hardware
de la computadora y así obtener equipos más pequeños, menos costosos y más rápidos. A partir
de entonces, también se puso atención en la necesidad de mejorar el software para que
permitiera una mayor velocidad de procesamiento, ya que los avances en el hardware parecían
agotados.

Sistemas de Numeración: es un conjunto de símbolos y reglas de generación que permiten


construir todos los números válidos.
 Binario
 Decimal
 Base M

Representación de los números en la maquina:


Todas las computadoras digitales actuales usan un lenguaje binario para representar la
información internamente.

Operaciones con Números Binarios:


Suma:
0+0=0
0+1=1
1+0=1
1+1=10

Multiplicación:
0x0=0
0x1=0
1x0=0
1x1=1

Conversión de una base a decimal:


Numero en base b=A3A2A1A0
𝑁𝑢𝑚𝑒𝑟𝑜 𝑒𝑛 𝐷𝑒𝑐𝑖𝑚𝑎𝑙 = ∑ 𝐴𝑖 ∗ 𝑏 𝑖

Ejemplo:
Numero=2301(4
Numero en decimal=2*43+3*42+0*41+1

Conversión de Decimal a una base:


Parte entera: Se divide el número por la base tantas veces como sea posible, luego los restos de
las divisiones en orden inverso son los valores del número expresado en la base.
Ejemplo:
177/4=44 Resto=1
44/4=11 resto=0
11/4=2 resto=3
2/4=0 resto 2
Numero en base 4= 2301(4
Parte decimal: se multiplica la parte fraccionaria por la base tantas veces como sea necesario para
obtener una parte fraccionaria igual a cero; la parte entera de los resultado se toma como digito
de la parte fraccionaria del número expresado en la nueva base, en el mismo orden de la
multiplicación.
Ejemplo:
0,625*2=1,250
0,250*2=0,500
0,500*2=1,000
Parte fraccionaria en base 2=0,101

Complementos
Complemento Restringido (Complemento a 1, Comp. a la Base -1, Comp. n-1): En binario se
obtiene el complemento restringido cambiando unos por ceros y viceversa.
CompRest(a)=10n-1-a
Complemento Autentico (Complemento a 2, Comp. a la Base, Comp. a n): El complemento a la
base se obtiene sumando 1 al complemento restringido
Comp(a)=10n-a

Aritmética Digital
Se utiliza el primer digito binario para el signo, siendo 0 para números positivos y 1 para números
negativos. Así pueden usarse 3 sistemas: El signo seguido del valor absoluto, el complemento a la
base y el complemento a la base -1.
En una máquina que trabaje con complemento a 2 se tiene una sola representación de 0, en los
demás sistemas de representación se tienen 2: +0 y -0.

Resta por Complemento a 2: La sustracción se obtendrá por simple suma del complemento, sin
tener en cuenta el arrastre.
A=a1a2a3a4
B=b1b2b3b4
Complemento(B)=b’1 b’2 b’3 b’4
A + Complemento(B)=c1c2c3c4c5
Resta(A-B)= c2c3c4c5
En caso de no producirse arrastre el resultado será negativo. Se deberá complementar el resultado
y sumarle 1.
Resta por Complemento a 1: La sustracción se obtendrá por suma del complemento, y luego suma
del arrastre producido.
A=a1a2a3a4
B=b1b2b3b4
ComplementoRest(B)=b’1 b’2 b’3 b’4
A + Complemento(B)=c1c2c3c4c5
Resta(A-B)= c2c3c4c5+ c1
En caso de no producirse arrastre el resultado será negativo. Se debe complementar el resultado.

Concepto de Aritmética de Punto Flotante y Fijo


Formato de Coma Fija: Es la manera más natural de escribir un número binario en una palabra de
memoria. Los números se dejan como enteros y depende del programador situar la coma.
El primer bit de cada palabra representa el signo. Por tanto una palabra de n bits puede
representar los entero de -2n-1+1 hasta 2n-1-1(en el complemento a 2 hasta 2 n-1).
La suma de 2 números fijos puede ocasionar desbordamiento. La multiplicación de 2 números de n
cifras da como resultado un número de 2n cifras como máximo.
Formato de Coma Flotante: Su objetivo es calcular con el máximo de precisión. Los números
entonces deben encuadrarse de manera de guardar siempre el mayor número de dígitos
significativos.
El número se representa de la forma SM * aE
Dónde:
S: es el signo
M: la mantisa. Es la parte de una representación en punto flotante que contiene los dígitos
significativos del número a representar. En 2,15 * 103, la mantisa es 2,15.
E: la exponente del número.
a: se escoge generalmente igual a la base del sistema de numeración. En binario a=2.

Un ejemplo en el sistema decimal para ver que es una notación de uso muy común:
125000000 = 125*106 = 12,5*107 = 1,25*108= 1250*105

Generalmente se representa de la siguiente manera en la máquina, de información más


significativa a menos significativa:
Signo Exponente Mantisa
Signo: un bit, 1 para + y 0 para –
Exponente: Expresa generalmente una potencia de 2. Si ocupa e bits: los exponentes negativos
varían entre -2e-1 y 0. Expresados por valores binarios entre 0 y 2e-1. Y los positivos variaran entre 0
y 2e-1-1. Expresados por valores binarios entre 2e-1 y 2e-1.
Mantisa: Existen 2 convenios, la coma inmediatamente a la derecha (figura 9a) o la coma
inmediatamente a la izquierda (figura 9b):

Nótese que el exponente cambia, 03 en el primero y 09 en el segundo.

La normalización de la mantisa en base 2 se consigue desplazando hacia la izquierda la mantisa


hasta que el bit a la derecha (figura 9a) o izquierda (figura 9b) del punto de la raíz sea uno.
En el caso de representar los números negativos en complemento a la base o complemento a la
base menos 1 el signo queda integrado en la mantisa.

Nota: Si el exponente expresa una potencia de 2 y si los números negativos van representados por
complementación, el número esta normalizado cuando el bit de signo y el bit de mayor peso de la
mantisa tienen valores distintos.
Agrupamientos Binarios
Bit: La codificación binaria posee una calidad BIVALUADA. En el sistema binario de numeración
esas condiciones se representan por 0 y 1. Se denomina BIT (contracción de BINARY DIGIT) al
digito binario independientemente de su valor. Es la mínima unidad de información.

Byte: El termino BYTE (octeto), se utiliza para describir un conjunto de 8 bits consecutivos que se
toman como unidad.

Carácter: Es la cantidad de BITS necesarios para representar los diferentes símbolos del alfabeto
(letras, símbolos, signos de puntuación, etc.). La cantidad de Bits utilizados depende del sistema.

Palabra: La palabra es un conjunto de caracteres (de longitud fija o variable dependiendo del caso)
que la computadora trata como unidad. Es la unidad de Información procesada por la máquina.

Nota: El byte muchas veces no es práctico para manipular datos en problemas de programación,
por lo que se recurre al uso de palabra de acuerdo a la siguiente relación:
1Byte=8Bits
1Palabra=2Bytes
1DoblePalabra=4Bytes
1CuadruplePalabra=8Bytes
1DecaByte=10Bytes

Codificación de la Información Numérica y Alfabética


Codificación de la Información Numérica
¿Cuantos bits se necesitan para representar los 10 símbolos del sistema decimal?
I=Log210=3,16…<4
Es decir que con 4 bits somos capaces de representar cualquier digito del sistema decimal. Un
código que utilice más de 4 se conoce como CODIGO REDUNDANTE.

Código Ponderado: Se dice que un código es ponderado cuando cada bit tiene un valor diferente
dependiendo la posición que ocupe. Ejemplos: BCD (8421), AIKEN (2421), etc.

Decimal Codificado en Binario (BCD por sus siglas en inglés): Cada digito decimal se codifica con 4
bits y se respeta el “peso” asignado en el sistema binario puro, es decir 8421.
Un ejemplo: 70922(10= 0111 0000 1001 0010 0010

AIKEN (pesos 2421): como los pesos permiten 2 combinaciones posibles para los números 2, 3, 4,
5,6 y 7 una de esas combinaciones no se considera. Para realizar la tabla en AIKEN debemos llevar
los numero en BCD normalmente hasta el 4=0100, a partir de allí complementamos la tabla. 5 es
complemento de 4, 6 es complemento de 3, 7 es complemento de 2 y así.
Exceso de Tres: Cada digito decimal se representa como BCD excedido en tres. 0010(2) en BCD se
vuelve 0101(5) en Exceso de Tres.
Ejemplo: 70922(10= 1010 0011 1100 0101 0101

Códigos No Ponderados: la representación de cada digito decimal es en principio arbitraria o


responde a características distintas al peso de los bits de acuerdo a su posición. Ejemplo: Código
de GRAY.

Código de GRAY: El código de GRAY o “binario reflejado” tiene la peculiaridad que de un decimal
al siguiente cambia siempre solo un digito binario por vez.
Codificación de Información No Numérica
Condiciones para la codificación de caracteres:
 Debe incluir a los números representados en alguna forma (BCD, AIKEN, etc.) y debe poder
distinguirse rápidamente números de otros caracteres.
 Debe permitir añadir nuevos caracteres específicos para una aplicación determinada.
 Al transmitir, la representación debe incluir un sistema redundante para detectar errores.

Código EBCDIC (Expanded Binary Code Decimal Interchace Code): Diseñado y utilizado por IBM,
sirvió como la base para los códigos normalizados posteriores. Los códigos para los caracteres
están representados en una tabla.
No tiene características destacables en cuanto a los caracteres alfabéticos y signos de puntuación,
salvo algunas alteraciones en países con distintos alfabetos.
Las operaciones aritméticas se realizan con formato con coma fija.
Usa 8 bits (1byte) para cada carácter. Cada digito decimal se representa de la siguiente forma:
Zona Digito
4 bits 4 bits
La zona ocupa los 4 bits de orden superior del byte, tiene un valor fijo para cualquier numero:
1111(2=F(16. El digito representa el valor del número decimal, expresado en BCD.
Los números con zona (desempacados o zoneados) no son aptos para operaciones aritméticas.
Para realizarlas se debe quitar la zona (empaque), los números quedan entonces sin zona
(empaquetados) para poder trabajarlos.
Al empaquetarlos se les agrega al final medio byte (4 bits) que representan el signo.
Con zona: F3 F6 F0 F4 F5
Sin zona positivo: 0000 36045 F
-36045 equivaldria a 0000 36045 D
Se utiliza F o C para valores positivos; y B o D para valores negativos.
Código ASCII (American Standard Code for Information Interchage): Utiliza 7 bits para
representar cada carácter. Una parte de las configuraciones binarias se toma para codificar
funciones de control.
Es el más utilizado en la actualidad, pero habitualmente se agrega un octavo bit con la intención
de agregar representaciones no previstas y/o utilizarlo como bit de paridad en transmisiones.
Los dígitos también se encuentran separados en zona y digito.
La zona de los numeros es siempre 011 y el digito el correspondiente al número en BCD. Estos
números también deben ser empacados para las operaciones aritméticas.

Códigos redundantes
Utilizan más bits de los necesarios para representar la información. Los bits extra se utilizan para
detectar errores en la transmisión de mensajes.

Códigos Autodetectores: Código que mediante un determinado número de bits redundantes


puede detectar si la información es correcta o no.
Control de paridad: No permite detectar errores dobles, pero debido a su simplicidad y a lo baja
que es la probabilidad de la ocurrencia de errores en los computadores, es el más utilizado.
Consiste en agregar un bit más a los bit de información transmitidos, con el fin de hacer que la
cantidad de unos transmitidos sea par (paridad par) o impar (paridad impar).
Ejemplo:
Valor=100101
En paridad par (agregando el bit a la derecha)=1001011
En paridad impar (agregando el bit a la derecha)=1001010

Códigos Autocorrectores
Estos códigos permiten determinar si la información recibida es correcta o no y en caso de que no
corregirla.

Control 2 en 3: Para transmitir una información cualquiera de n bits, se envían 3 veces esos n bits,
de forma sucesiva. Puede ocurrir:
 Que las 3 sean iguales => El mensaje es correcto.
 Las 3 son distintas => La máquina detecta error pero no puede corregirlo.
 2 son iguales y 1 es distinta => Se considera al distinto incorrecto y se toma el otro como
correcto.

Código de Hamming: Permite corregir y detectar uno o más errores producidos durante la
transmisión para cualquier número de bits.

Codificación en Hamming para corregir un solo error:


1. Determinar cuántos bits de paridad “p” serán necesarios para el código de “i” bits.
Tendremos i+p+1 condiciones que deben identificarse con p bits de control de paridad. Como con
p bits podemos formar 2p combinaciones, entonces la cantidad de p debe ser tal que satisfaga:
2p≥i+p+1
Según esta regla, podemos construir la siguiente tabla:

2. Distribuir los bits de información y los de control. Usaremos la siguiente forma, considerando un
mensaje de 4 bits de información:

Se desea que los dígitos de control que indican el resultado del test de paridad, den (en binario) la
posición del digito erróneo.
3. Determinar el valor de cada bit de control. Se construye una tabla de combinaciones binarias de
tantas columnas como la cantidad de bits de paridad determinada por la codificación. Para el
ejemplo 3 columnas:
El bit de paridad debe hacer que la cantidad de bits con valor 1 que controla sean par.

Control y Corrección:
El receptor del mensaje calcula el valor de los bits de control de la siguiente forma:

Si el bit de control es igual a 0 es correcto, si es igual a 1 es incorrecto. La posición del error se


determina según los valores obtenidos en los bits de control ordenados de forma decreciente es
decir: Si c2=0, c1=0 y c0=1 entonces error estará en el bit 100(4=4 y bastara con cambiar el bit a 1 si
es 0 o viceversa.
Unidad 2: Circuitos Digitales
Los ordenadores digitales usan lógica binaria: la corriente pasa o no por los componentes
electrónicos del ordenador. La lógica binaria trabaja con variables binarias (si o no, verdadero o
falso, 1 o 0, etc.) y operaciones lógicas. Estas características permiten el análisis y simplificación
mediante reglas del Algebra de Boole

Algebra de Boole: Boole definió hacia 1850 un algebra aplicable a razonamientos sobre
proposiciones lógicas: una proposición solo puede ser falsa(0) o verdadera(1). Shannon, en 1938,
aplico este algebra al análisis de circuitos digitales. La corriente pasa o no.

Variable lógica (variable binaria, variable booleana): se denota como A, B, C, etc. Y puede tomar el
valor 1(verdadero) o 0(falso). Una variable binaria representa a un bit.

Funciones y Formas Canónicas

Funciones lógicas: Es una función de n variables lógicas que toman valores en el conjunto {0,1}
F(A1,A2,A3,…An) ϵ {0,1}
Queda perfectamente definida al dar sus valores para cada una de las 2n posibles combinaciones
de las n variables. El cuadro que representa las 2n combinaciones se llama “tabla de verdad de la
función”.
Funciones Básicas:
Función constante: F1(A)=0 ∀ A ϵ {0,1} ó F2(A)=1∀ A ϵ {0,1} Su resultado es siempre el mismo valor.
Función identidad: F3(A)=A ∀ A ϵ {0,1} No altera el valor de A.
Función inversa (complementación, negación): F4(A)=Ᾱ ∀ A ϵ {0,1} Esta función cambia el valor de
A por su inverso. A esta función le corresponde el operador de complementación:

Tabla de verdad:
A F1 F2 F3 F4
0 0 1 0 1
1 0 1 1 0
Función Intersección (producto lógico): F(A,B)= A.B Satisface la siguiente tabla de verdad:
A B F(A,B)
0 0 0
0 1 0
1 0 0
1 1 1
Solo es verdadera cuando ambas variables lo son. Le corresponde el operador lógico AND:

Función Reunión (unión o suma lógica): F(A,B)=A+B Satisface la siguiente tabla de verdad:
A B F(A,B)
0 0 0
0 1 1
1 0 1
1 1 1
Es verdadera cuando cualquiera de las variables lo es. Le corresponde el operador OR:

Función OR Exclusivo: No forma parte de las llamadas “funciones básicas”, al ser una combinación
de las mismas, pero definirla es útil luego para la simplificación. F(A,B)=A⊕B Su tabla de verdad
es:
A B F(A,B)
0 0 0
0 1 1
1 0 1
1 1 0
Es verdadera cuando solo una(o un número impar) de entradas es verdadera. Su operador lógico:
Teoremas Fundamentales del Algebra de Boole:
Elementos nulos 𝐴+1 =1
𝐴. 0 = 0
Identidad 𝐴. 1 = 𝐴
𝐴+0 =𝐴
Complemento 𝐴+Ᾱ =1
𝐴. Ᾱ = 0
Idempotencia 𝐴+𝐴 =𝐴
𝐴. 𝐴 = 𝐴
Involutiva
𝐴̿ = 𝐴
Conmutativa 𝐴+𝐵 =𝐵+𝐴
𝐴. 𝐵 = 𝐵. 𝐴
Asociativa 𝐴 + (𝐵 + 𝐶) = (𝐴 + 𝐵) + 𝐶
𝐴. (𝐵. 𝐶) = (𝐴. 𝐵). 𝐶
Distributiva 𝐴 + 𝐵. 𝐶 = (𝐴 + 𝐵). (𝐴 + 𝐶)
𝐴. (𝐵 + 𝐶) = 𝐴. 𝐵 + 𝐴. 𝐶
Absorción 𝐴 + 𝐴. 𝐵 = 𝐴
𝐴. (𝐴 + 𝐵) = 𝐴
Leyes de Morgan ̅̅̅̅̅̅̅̅
𝐴 + 𝐵 = 𝐴̅. 𝐵̅
̅̅̅̅̅
𝐴. 𝐵 = 𝐴̅ + 𝐵̅
Otros Teoremas Útiles:
OR Exclusivo 𝐴̅. 𝐵 + 𝐴. 𝐵̅ = 𝐴 ⊕ 𝐵
OR Exclusivo Negado 𝐴. 𝐵 + 𝐴̅. 𝐵̅ = ̅̅̅̅̅̅̅̅
𝐴⊕B
Dualidad: Todas las expresiones booleanas permanecen validas si se intercambian los operadores
“+”y ”.” y los elementos “0” y “1”.

Expresión Equivalente: Una expresión será equivalente a otra si sus tablas de verdad son iguales.

Minitermino: es un producto booleano en el que cada una de las n variables aparece una sola vez
(negada o sin negar).
Maxitermino: es una suma booleana en el que cada una de las n variables aparece una sola vez
(negada o sin negar).

Formas Canónicas (Normales): Una Función lógica que está compuesta por operadores lógicos
puede ser expresada en forma canónica usando los conceptos de miniterminos y maxiterminos.
Todas las funciones lógicas son expresables en forma canónica, tanto como una "suma de
miniterminos" como "producto de maxiterminos".
Generalización de las Formas Canónicas:
Forma Normal Disyuntiva (FND): para hallarla, de las filas donde la función es verdadera, se toma
el minitermino correspondiente.
Forma Normal Conjuntiva (FNC): para hallarla, de las filas donde la función es falsa, se toma el
maxitermino correspondiente.
Ejemplo:
A B C Maxiterminos Miniterminos Salida
0 0 0 𝐴+𝐵+𝐶 𝐴̅. 𝐵̅ . 𝐶̅ 1
0 0 1 𝐴 + 𝐵 + 𝐶̅ 𝐴̅. 𝐵̅ . 𝐶 0
0 1 0 𝐴+𝐵+𝐶 ̅ ̅
𝐴. 𝐵. 𝐶 ̅ 0
0 1 1 𝐴 + 𝐵̅ + 𝐶̅ 𝐴̅. 𝐵. 𝐶 1
1 0 0 ̅
𝐴+𝐵+𝐶 ̅
𝐴. 𝐵 . 𝐶 ̅ 0
1 0 1 𝐴̅ + 𝐵 + 𝐶̅ 𝐴. 𝐵̅ . 𝐶 1
1 1 0 ̅
𝐴+𝐵+𝐶 ̅ 𝐴. 𝐵. 𝐶 ̅ 1
1 1 1 𝐴̅ + 𝐵̅ + 𝐶̅ 𝐴. 𝐵. 𝐶 0
𝐹𝑁𝐷 = 𝐴. 𝐵. 𝐶 + 𝐴̅. 𝐵. 𝐶 + 𝐴. 𝐵̅ . 𝐶 + 𝐴. 𝐵. 𝐶̅
̅ ̅ ̅
𝐹𝑁𝐶 = (𝐴 + 𝐵 + 𝐶̅ ). (𝐴 + 𝐵̅ + 𝐶). (𝐴̅ + 𝐵 + 𝐶). (𝐴̅ + 𝐵̅ + 𝐶̅ )

Simplificación: que el diseño de un circuito sea lo más simple posible, que cumpla la misma
función con la menor cantidad de compuertas posibles, la menor cantidad de entradas a ellas y en
dos niveles. Para eso se debe minimizar la función.

Valor Económico de la Simplificación: la simplificación de los circuitos se traduce en un menor


número de componentes electrónicos, que “mejoran” la eficacia de su comportamiento al
minimizar su complejidad y reducen el número de componentes.

Métodos de Simplificación:
Método Algebraico: consiste en utilizar los teoremas del algebra de Boole hasta llegar a una
expresión más simple.
Método Grafico (Tablas o Diagramas de Karnaugh): el diagrama de Karnaugh permite determinar
entre expresiones de tipo FND (también expresiones FNC) la más simple, correspondiéndoles
circuitos con el menor número de compuertas y/o entradas.
Pasos para la minimización:
1. Representación en una “tabla de Karnaugh” de la función como suma de miniterminos (o
producto de maxiterminos).
2. Agrupar todas las celdas positivas, en grupos que tengan una cantidad potencia de 2 de
celdas, buscando el menor número de grupos (grupos lo más grandes posibles).
3. Eliminación de variables innecesarias.
Ejemplo de Minimización:
A B C E Salida Tabla de Karnaugh
0 0 0 0 1 AB
0 0 0 1 1 CE 00 01 11 10 Notar que el orden es 11-10 y no 10-11
0 0 1 0 1 00 1 0 0 0 Se puede agrupar entre extremos (10-00)
0 0 1 1 1 como si la tabla se repitiera continuamente.
01 1 0 0 1
Función minimizada:
0 1 0 0 0 11 1 1 0 1
𝐴̅ + 𝐶𝐴̅ + 𝐸𝐵̅ + 𝐶𝐵̅
0 1 0 1 0 10 1 1 0 1
0 1 1 0 1
Luego de obtener la función minimizada puede operarse con el álgebra
0 1 1 1 1
de Boole para lograr un circuito más simple. En este caso:
1 0 0 0 0
𝐴̅ + 𝐵̅ (𝐸 + 𝐶)
1 0 0 1 1
1 0 1 0 1
1 0 1 1 1
1 1 0 0 0
1 1 0 1 0
1 1 1 0 0
1 1 1 1 0

Circuitos Digitales Básicos: Sumadores, Sustractores, Convertidores de Código:

Sumador:
Circuito Combinacional que tiene como entrada 2 números binarios de n bits y da como salida la
suma binaria de estos.
Semisumador (medio sumador): Dos entradas, genera resultado y acarreo.
𝐶𝑖+1 = 𝑋𝑖 𝑌𝑖
Xi Yi Ci+1 Σi 𝛴𝑖 = 𝑋𝑖 ⊕ 𝑌𝑖
0 0 0 0
0 1 0 1
1 0 0 1
1 1 1 0

Xi Yi Ci Ci+1 Σi Sumador Completo: Tres entradas (con el acarreo previo), genera resultado
0 0 0 0 0 y acarreo.
0 0 1 0 1 𝐶𝑖+1 = (𝑌𝑖 𝐶𝑖 ⊕ 𝑋𝑖 𝐶𝑖 ) + 𝑋𝑖 𝑌𝑖
0 1 0 0 1 𝛴𝑖 = 𝑋𝑖 ⊕ 𝑌𝑖 ⊕ 𝐶𝑖
0 1 1 1 0
1 0 0 0 1
1 0 1 1 0
1 1 0 1 0
1 1 1 1 1

HA:”Half-Adder” ósea
Medio-Sumador.
Sumador en Serie: Si conectamos un medio sumador seguido de un grupo de sumadores
completos uno detrás de otro conseguimos un Sumador en Serie. Cada etapa de sumador debe
esperar que la anterior finalice para ejecutarse.

Estos circuitos tienen el problema de que el número de niveles totales del circuito aumenta
cuando el número de bits aumenta, lo que hace que el retardo sea mayor a medida que n crece.

Sustractor:
Circuito Combinacional que tiene como entrada 2 números binarios de n bits y da como salida la
sustracción binaria de uno por el otro.

Semisustractor (medio sustractor): Dos entradas, genera diferencia y acarreo.


𝐶𝑖+1 = 𝑋̅𝑖 𝑌𝑖
𝐷𝑖 = 𝑋𝑖 ⊕ 𝑌𝑖

Xi Yi Ci+1 Di
0 0 0 0
0 1 1 1
1 0 0 1
1 1 0 0
Sustractor Completo: Tres entradas (con el acarreo previo), genera diferencia y acarreo.
𝐶𝑖+1 = 𝑋̅𝑖 𝑌𝑖 + 𝑋̅𝑖 𝐶𝑖 + 𝑌𝑖 𝐶𝑖
𝛴𝑖 = 𝑋𝑖 ⊕ 𝑌𝑖 ⊕ 𝐶𝑖
Existen 2 formas de realizar un sustractor completo:
Xi Yi Ci Ci+1 Σi 1. Se restan sucesivamente Xi con Yi y después Ci a la diferencia
0 0 0 0 0 obtenida:
0 0 1 1 1
0 1 0 1 1
0 1 1 1 0
1 0 0 0 1
1 0 1 0 0
1 1 0 0 0
1 1 1 1 1 2. Se suman Yi y Ci y el resultado se le resta a Xi:

HS:”Half-Subtractor” ósea
Medio-Sustractor.
Sustractor en Serie (usando complemento a 1):

Convertidores de Código
Las operaciones de codificación, decodificación y transcodificación pueden realizarse físicamente
mediante un conjunto de puertas organizadas de forma matricial.

Matriz Rectangular de Decodificación: Se pide decodificar una información binaria de 4 bits, E1, E2,
E3 y E4 representativos respectivamente de los pesos 1, 2, 4 y 8 sobre un conjunto de salidas
numeradas de 0 a 15.
Realizamos las Ecuaciones:
𝑆0 = 𝐸̅1 𝐸̅2 𝐸̅3 𝐸̅4
𝑆1 = 𝐸̅1 𝐸̅2 𝐸̅3 𝐸4

𝑆15 = 𝐸1 𝐸2 𝐸3 𝐸4
Es posible agrupar estos circuitos de forma matricial, cuyas filas son las 8 entradas ciertas o falsas
y las columnas las 16 salidas. De la siguiente forma(Los puntos son representaciones de
compuertas AND):
Matriz Rectangular de Codificación: se pide codificar 10 cifras decimales E en 4 bits denominados
S1 S2, S3 y S4 de código BCD con pesos 1, 2, 4 y 8 respectivamente.
De la tabla de verdad deducimos las formulas:
E S4 S3 S2 S1 𝑆1 = 𝐸1 + 𝐸3 + 𝐸5 + 𝐸7 + 𝐸9
0 0 0 0 0 𝑆2 = 𝐸2 + 𝐸3 + 𝐸6 + 𝐸7
1 0 0 0 1 𝑆3 = 𝐸4 + 𝐸5 + 𝐸6 + 𝐸7
2 0 0 1 0 𝑆4 = 𝐸8 + 𝐸9
3 0 0 1 1 Los Circuitos OR necesarios pueden agruparse en una matriz rectangular:
4 0 1 0 0
5 0 1 0 1
6 0 1 1 0
7 0 1 1 1
8 1 0 0 0
9 1 0 0 1

Empleo de Circuitos Combinacionales: Un circuito es Combinacional si trata señales lógicas. Cuyas


señales de salida solo dependen de sus entradas.

Circuitos Secuenciales: circuito cuyas señales de salida dependen de las entradas y del tiempo. Un
circuito secuencial tiene elementos de retardo o elementos de memoria. Para estudiarlos se
trabaja con la Teoría de Autómatas.

Concepto de Autómata Finito: Los autómatas son entes matemáticos, cuyo estudio permite dar
un soporte teórico a numerosos desarrollos relacionados con la informática: Teoría de los Circuitos,
estudio de lenguajes formales, teoría de algoritmos, etc. Aquí se restringe el estudio del autómata
a un ángulo externo tratándolo como una caja negra con entradas y salidas.
Siendo E el conjunto de entradas, S el conjunto de salidas y observando el autómata solo en
instantes sucesivos discretos t,t+1,t+2,…
Entonces: Suponemos que una entrada E(t) en el instante t produce una respuesta S(t+1) en el
instante t+1. Dicha respuesta depende de E(t) y a su vez también de la función tiempo H(t).
𝑆(𝑡 + 1) = 𝐹[𝐻(𝑡), 𝐸(𝑡)]
Se puede observar que esta definición es equivalente a la de circuitos secuenciales.
También admitimos 2 hipótesis:
1. La función H(t) está completamente determinada por la historia previa del autómata.
2. El autómata está constituido por un número finito de elementos, y por consiguiente un
número finito de elementos de memoria. Y por lo tanto H(t) no puede tomar más que un
número finito de valores distintos llamados ESTADOS INTERNOS DEL AUTOMATA.
Funciones de Transición: Si al estado del autómata en el instante t lo denominamos Q(t) entonces
la ecuación se convierte en:
𝑆(𝑡 + 1) = 𝐹[𝑄(𝑡), 𝐸(𝑡)]
Que expresa que la respuesta a una entrada (estimulo) E(t) no depende más que del estado en el
instante t y no de la historia anterior.
Por la misma razón Q(t+1) del autómata en el instante t+1 no puede depender más que de su
estado anterior Q(t) y de la entrada E(t). Se deduce que:
𝑄(𝑡 + 1) = 𝐺[𝑄(𝑡), 𝐸(𝑡)]
Con estas 2 ecuaciones podemos calcular paso a paso el comportamiento del autómata cualquiera
sea la sucesión de estímulos.
Las funciones F y G se denominan funciones de transición y se representan en forma de tablas o
diagramas.

Elementos de memoria: Biestables, Distintos Tipos:


Circuito Biestable (Flip-Flop): es un sistema con dos estados estables. Esta constituido
fundamentalmente por 2 circuitos NOT montados en oposición. No puede haber más de dos
estados lógicos diferentes que, en ausencia de estímulos exteriores, no tienen por qué cambiar.
Por esta razón este circuito funciona como elemento de memoria.

Tipos de Biestable:
Biestable RS:

Las flechas partidas de las salidas indican que la informacion esta accesible a menos que el
biestable se encuentre en medio de una transicion.
Tabla de Verdad, Funcionamiento o Estado Tabla de Excitación
R S Q Qt+1 Q Qt+1 R S
0 0 0 0 0 0 X 0
0 0 1 1 𝑄 =𝑄+𝑅̅̅̅̅̅̅̅̅
̅ 0 1 0 1
0 1 0 1 𝑄̅ = ̅̅̅̅̅̅̅
𝑄+𝑆 1 0 1 0
0 1 1 1 1 1 0 X
1 0 0 0
1 0 1 0 En el caso de este Biestable, el estado cambia a 1 al ingresar una señal por la
1 1 0 ? entrada S (set) y cambia a 0 al ingresar una señal por la entrada R (reset). En
1 1 1 ? caso de ingresar señales por ambas entradas el comportamiento del Biestable
no puede determinarse.
Biestable JK:

Tabla de Verdad, Funcionamiento o Estado Tabla de Excitación


J K Q Qt+1 Q Qt+1 J K
0 0 0 0 0 0 0 X
0 0 1 1 𝑄𝑡+1 = 𝐽 𝑄̅ + 𝐾 ̅𝑄 0 1 1 X
0 1 0 0 1 0 X 1
0 1 1 0 1 1 X 0
1 0 0 1
1 0 1 1 En el caso de este Biestable, el estado cambia a 1 al ingresar una señal por la
1 1 0 1 entrada J (set) y cambia a 0 al ingresar una señal por la entrada K (reset). En caso
1 1 1 0 de ingresar señales por ambas entradas el estado se complementa.

El Biestable Sincrónico: Con el objeto de lograr una sincronización controlada de los circuitos
secuenciales se suele agregar una señal de sincronismo. Con el fin de que los Biestables solo
modifiquen sus estados en determinados momentos. En el caso del Biestable RS sincrónico deben
agregarse compuertas AND a sus entradas con el fin de solo activarse al recibir dicha señal (CLK):

Biestable D:
Tabla de Verdad, Funcionamiento o Estado Tabla de Excitación
D Q Qt+1 Q Qt+1 D
0 0 0 0 0 0
0 1 0 0 1 1
1 0 1 1 0 0
1 1 1 1 1 1

En el caso de este Biestable (que debe ser sincrónico, es decir, esperar una señal de sincronismo)
el estado cambia a 1 al ingresar una señal por la entrada D (set) y cambia a 0 al no ingresar por
dicha entrada (ingresar 0).
Biestable T:

Tabla de Verdad, Funcionamiento o Estado Tabla de Excitación


T Q Qt+1 Q Qt+1 D
0 0 0 0 0 0
0 1 1 0 1 1
1 0 1 1 0 1
1 1 0 1 1 0

En el caso de este Biestable (que debe ser sincrónico, es decir, esperar una señal de sincronismo)
el estado se complementa al recibir una señal por su entrada T. En caso de no recibir señal el
estado se mantiene.

Registros: el Biestable permite almacenar una información binaria elemental. El registro


compuesto por varios Biestables, permite almacenar una información de varios dígitos.

Operaciones elementales sobre registros: un registro puede ponerse a cero o complementarse al


enviar una señal por la entrada adecuada:

Carga y Transferencia: Puede transferirse información de un registro a otro. En la imagen se activa


la señal SRF que transfiere la información del registro F al Bus (explicado más adelante) y luego la
señal ENA y ENB que cargan el registro A y B respectivamente con dicha información.
Contadores:
Los contadores de impulsos son registros cuyo contenido se incrementa en 1 cada vez que se
presenta un impulso a la entrada de cuenta. Son capaces de contar el número de impulsos
recibidos. Como ejemplo, el contador binario:

(Los registros en la
imagen tienen
entradas de
complementación,
a fines prácticos
puede decirse que
son Biestables T).
El impulso (t) complementa el valor del primer registro (menor peso) y en el caso de ser 1 el valor
anterior (t-1) propaga el arrastre al siguiente registro y así sucesivamente.

Registros de Desplazamiento: con el cableado correspondiente se consigue desplazar el contenido


de un registro una determinada cantidad de lugares ya sea a derecha o a izquierda al recibir un
impulso.

Registro Acumulador:
Es un registro multipropósito que opera con datos previamente almacenados en memoria. Se
utiliza para ejecutar la mayoría de las instrucciones. El registro acumulador trabaja en conjunto
con la ALU (Unidad Aritmético-Lógica) que explicaremos después.
Se utiliza para realizar suma, resta, intercambio de posiciones de memoria y varias otras
instrucciones. Las operaciones incluidas son las que deben incluirse en el procesador particular.
Una etapa de acumulador suele incluir todas las microoperaciones que fuimos describiendo
individualmente.
El acumulador cuenta con una entrada de datos y además entradas para determinar la operación a
realizar.
Una etapa de acumulador podría verse así:
Un acumulador de 4 bits contruido en cuatro etapas:

Elementos Auxiliares (Buses): Es un conjunto de hilos donde las informaciones binarias son
mantenidas en forma de tensión. Un bus cuenta con un hilo por cada bit del registro, o dos hilos
por bit, en uno de los cuales está la magnitud verdadera y en el otro la complementada. Un bus
puede alimentar independientemente o simultáneamente a varios registros.

El Multiplaje: consiste en desviar la información transportada por un bus hacia otro escogido
entre varios o en concentrar en un solo bus las informaciones procedentes de varios buses
diferentes.

Circuitos Integrados: Circuito electrónico cuyos componentes, como transmisores y resistencias,


están dispuestos en una lámina de material semiconductor.

Tipos de Circuitos Integrados: Atendiendo al nivel de integración -número de componentes- los


circuitos integrados se pueden clasificar en:
 SSI (Small Scale Integration) pequeño nivel: de 10 a 100 transistores
 MSI (Medium Scale Integration) medio: 101 a 1.000 transistores
 LSI (Large Scale Integration) grande: 1.001 a 10.000 transistores
 VLSI (Very Large Scale Integration) muy grande: 10.001 a 100.000 transistores
En cuanto a las funciones integradas, los circuitos se clasifican en dos grandes grupos:
 Circuitos integrados analógicos: Pueden constar desde simples transistores encapsulados
juntos, sin unión entre ellos, hasta circuitos completos y funcionales, como amplificadores,
osciladores o incluso receptores de radio completos.
 Circuitos integrados digitales: Pueden ser desde básicas puertas lógicas (AND, OR, NOT)
hasta los más complicados microprocesadores o microcontroladores.
A nivel comercial se clasifican en familias:
 TTL: Lógica de transistores (amplia cantidad de funciones digitales).
 ECL: Lógica de acoplamiento de emisor (operaciones de alta velocidad).
 MOS: Semiconductor de óxido de metal (alta densidad de componentes).
 CMOS: Semiconductor de óxido de metal complementario (bajo consumo energético).
 I2L: Lógica de inyección integrada (alta densidad de componentes).

Unidad 3: Arquitectura de los Procesadores


Descripción e Interrelación de los Componentes de un Computador:
La mayoría de los computadores funcionan de acuerdo a la Arquitectura Von Neumann. Es Von
Neumann quien hacia el 1945 promueve el paso decisivo hacia la mecanización del tratamiento
digital de información, con la invención de 2 conceptos:
 El programa registrado: Von Neumann tuvo la idea de usar las memorias del computador
para almacenar el programa para poder así ejecutarlo cuando fuera necesario.
 La ruptura de secuencia: Von Neumann fue el primero en dotar a la maquina con lo que
conocemos como “salto condicional”.
Arquitectura Von Neumann:

Un ejemplo de Arquitectura Von Neumann son los Ordenadores tipo ABACUS:


S= Registro de Selección de Memoria.
P= Contador Ordinal de Programa.
M= Registro de Intercambio o Palabra de N bits.
CO + D= Registro de instrucción. CO= Código de Operación P bits. D= Dirección M bits.
AC= Acumulador de N bits.

Unidad Central de Proceso: Es el conjunto de la unidad de Control y la Unidad Aritmético Lógica.

Unidad de Control: es la sección encargada de extraer las instrucciones de MC, analizarla y


establecer las conexiones necesarias dentro de la ALU para su ejecución.

Memoria Central: El programa es registrado en Memoria antes de comenzar su ejecución. Esta


memoria, gracias a la cual puede ejecutarse el programa, se llama memoria central o bien
memoria principal y en torno suyo se organiza el resto de diferentes unidades de la máquina. La
memoria central almacena 2 clases de información: instrucciones de programa que la maquina
debe ejecutar, y datos (operandos) con los cuales efectuara la maquina el tratamiento de dichas
instrucciones.
Puede considerarse un conjunto de células, cada una con la posibilidad de almacenar una
información (una palabra diremos a menudo): dato o instrucción. Las células están numeradas y la
unidad de control conoce cada célula por su número, llamado dirección. La unidad de control
puede pedir leer el contenido de una célula o escribir una nueva información en ella.

Canal:
Es el encargado en general de gestionar la transferencia en ambos sentidos de un conjunto de
informaciones entre la MC y los periféricos.
Para inicializar la transferencia las instrucciones especiales de entrada/salida deben suministrar al
canal, por una parte la dirección de la unidad periférica implicada y por otra la dirección para el
almacenamiento de la primera información y el número de informaciones a transferir, En lo
sucesivo el canal se ocupara completamente de la transferencia, por cada información transferida
añadirá 1 a la dirección de almacenamiento y restara 1 al número de informaciones a transferir.
Luego avisara a la UC cuando todas las informaciones hayan sido transferidas.

Unidades de Entrada y de Salida: Existen 2 grandes clases de unidades periféricas, las unidades
de comunicación (impresoras, lectora de tarjetas, etc.) y las memorias auxiliares (discos, cintas
magnéticas, etc.). Las unidades periféricas se conectan a través de los canales mediante los
registros de intercambio y Selección de periférico. La unidad de control es la encargada de
administrar estos intercambios.

Memorias: Dispositivo electrónico capaz de almacenar información, de modo que el órgano que
se sirva ella pueda obtenerla en cualquier instante.
Punto de memoria: soporte físico de un bit.
Diversos tipos de fenómenos físicos pueden usarse para la generación de un punto de memoria.
 FF con semiconductores (Usada en la Memoria Central)
 SRAM
 DRAM
 Superficies magnéticas
 Discos magnéticos
 Cintas magnéticas
 Superficie reflectante:
 CD-ROM
 Disco óptico borrable
 Discos magneto-ópticos

Jerarquía de Memoria:

Mayor
Velocidad, Aumento de
Mayor costo capacidad
por bit

 Registros del procesador: forman parte de la CPU. Integrada en el microprocesador. Es un


conjunto de Biestables. Son la forma más rápida del sistema de almacenar datos.
 Memoria cache: es un conjunto de datos duplicados de otros originales, cuando los originales
son costosos de acceder. Cuando se accede por primera vez a un dato se lo copia a la cache,
los siguientes accesos se realizan a dicha copia, acelerando el proceso. Su función es mejorar
el rendimiento del procesador central sin aumentar el costo del sistema. Se sitúa entre CPU y
MC. Se trabaja con 2 niveles de cache: nivel 1, cache interno del microprocesador tan rápido
como los registros; y nivel 2, cache externo del procesador, conformado por chips SRAM. Cada
vez que se ordena leer la MC, el cache interno provee la información si la posee, si no se
recurre al cache externo que la copia al interno, si no se encuentra en el externo se pide a MC.
 Memoria central o principal: En este nivel residen los programas y los datos para su ejecución.
Está dividida en celdas identificadas por una dirección. La información contenida es accedida
mediante el bus de dirección.
 Memoria Secundaria (discos duros): dispositivos no volátiles que emplean un sistema de
grabación magnética digital. La información se pasa del disco a la memoria central para ser
utilizada.
 Almacenamiento fuera de línea: Memorias extraíbles de bajo costo. Por ejemplo cintas
magnéticas, cd’s, etc. Se manejan como periféricos.

Entonces, en todo el espectro de posibles tecnologías, se cumplen las siguientes relaciones:


• A menor tiempo de acceso, mayor coste por bit.
• A mayor capacidad, menor coste por bit.
• A mayor capacidad, mayor tiempo de acceso.
La respuesta a este problema es no contar con un solo componente de memoria, sino emplear una
jerarquía de memoria. Cuando se desciende en la jerarquía:
a) Disminuye el costo por bit.
b) Aumenta la capacidad.
c) Aumenta el tiempo de acceso.
d) Disminuye la frecuencia de accesos a la memoria por parte del procesador.

Memoria Cache:Las memorias caché son de tecnología de semiconductor de tipo estático (SRAM =
static RAM), cuya velocidad de respuesta se ajusta de manera muy favorable a los tiempos del
procesador.
En la memoria de etiquetas o tags se almacenan las referencias de memoria principal asociadas a
cada bloque.
El "cerebro" de un sistema de memoria caché se llama controlador de memoria caché. Cuando
éste trae una instrucción de la memoria principal, también trae las próximas instrucciones y las
almacena en caché.
En cualquiera de los dos tipos de conexiones enunciadas, el controlador de caché debe capturar"
la dirección para verificar si puede ofrecer al procesador su contenido.

Características de las Memorias:


- Físicas:
 Volatilidad: se dice que una memoria es volátil si corre el riesgo de ver alterada su
información por un fallo de alimentación eléctrica
 Lectura y Escritura (borrable/no borrable): son las operaciones básicas de las memorias. Se
realiza escritura cuando se registran informaciones en memoria y lectura cuando se
extraen informaciones previamente registradas. La memoria puede ser de solo lectura
(muertas) o de Lectura/Escritura (vivas) La lectura puede ser destructiva (la información se
borra al ser leída) o no destructiva. La escritura puede exigir o no un borrado previo.
 Ubicación: Si la memoria es interna o externa a la computadora.

- Acceso a la información:
 Direccionamiento: para localizar una información dentro de la memoria, la computadora
debe poder ubicar donde fue colocada anteriormente. Esta es la función de
direccionamiento.
 Modo de Acceso: es el método utilizado para acceder a la información. Puede ser:
 Aleatorio, Directo, Selectivo: Se tiene acceso a cualquier información cuya dirección
sea conocida, en cualquier momento en el mismo intervalo de tiempo.
 Secuencial: significa que acceder a una unidad de información tomará un intervalo de
tiempo variable, dependiendo de la ubicación de la información. Un ejemplo son las
cintas magnéticas donde la cinta debe desenrollarse para acceder a la información
siguiente.
 Mixto: caso de los discos magnéticos. Es directo en cuanto a la selección de una pista.
Y luego secuencial dentro de dicha pista.
- Prestaciones
 Tiempo de Acceso: Se divide en lectura, escritura y reescritura:
 Lectura: es el tiempo que transcurre entre el instante en que se lanza la operación de
lectura y el instante en el que se dispone de la primera información buscada.
 Escritura: es el tiempo que transcurre entre el instante en que se la información a
guardar y su dirección, y el instante en el que se almacena realmente la información.
 Reescritura: Tiempo que toma realizar la operación de escritura cuando ya existe
información en la dirección donde se planea guardar la nueva información.
 Tiempo de ciclo de memoria: se aplica principalmente a las memorias de acceso aleatorio
y consiste en el tiempo de acceso y algún tiempo extra antes de que pueda iniciarse un
segundo acceso a memoria. Este tiempo adicional puede ser por ejemplo para regenerar
los datos en el caso de lecturas destructivas.
 Velocidad de transferencia: es la velocidad a la que se pueden transferir datos a, o desde,
una unidad de memoria. Para memorias de acceso aleatorio coincide con el inverso del
tiempo de ciclo.
 Caudal: número máximo de informaciones leídas o escritas en la unidad de tiempo.
 Unidad de transferencia: Grupo de bytes que se pueden leer o escribir en memoria a la vez.
- Tamaño:
 Capacidad: Cantidad de palabras que la memoria puede almacenar. Se expresan
habitualmente en potencias de 2, por ejemplo: 1024, 4096, 8192 palabras, etc.

Clasificación:

Funcionamiento:
Tipo de memoria Tiempo de acceso Costo x Mb Tamaño Típico
Registros 1ns Alto 1kb
Cache 5-20ns $100 1Mb
Mem. Principal 60-80ns $1,10 64Mb
Disco Duro >100ns 0,05 4Gb

Memorias ROM (memorias de solo lectura):


N ROM M

Entradas 2nxm Salidas

Las memorias ROM no son volátiles.


Consiste en n líneas de entrada y m líneas de salida. Cada combinación de bits de entrada es una
dirección => n entradas -> 2n direcciones. Cada combinación de bits de salida es una palabra => el
número de bits por palabra es igual al número de líneas de salida m.
ROM 32x8 -> ROM de 32 palabras de 8bits. 25=32 -> 5 entradas y 8 salidas
 ROM (ReadOnlyMemory): se graban una vez por el fabricante.
 PROM (ROM programable): se graban una vez por el usuario.
 EPROM (Erasable-Programmable ROM): se graban varias veces por el usuario, el borrado
se realiza con luz ultravioleta.
 EEPROM (ElectricallyErasableProgrammable ROM): se graban varias veces por el usuario,
el borrado se realiza eléctricamente posición a posición.
 Memorias FLASH (EEPROM rápidas):se graban varias veces por el usuario, el borrado se
realiza eléctricamente de una sola vez
En una pc la porción de memoria que guarda los programas que se ejecutan para permitir el
correcto encendido del sistema y la carga del sistema es ROM y se denomina BIOS.

Memoria RAM (Memoria de Lectura y Escritura, no confundir con RAM, memoria de acceso
aleatorio):
Las memorias RAM son volátiles, es decir que si se interrumpe la energía se pierden los datos y
solo pueden utilizarse como almacenamiento temporal.
Existen dos tipos de RAM:
 SRAM (Static RAM): Se fabrica con Biestables. Son capaces de mantener su información
mientras tengan alimentación eléctrica, sin necesidad de refresco. Lectura no destructiva,
mayor costo, mayor velocidad, menor consumo, menor capacidad, utilizada para accesos
más rápidos.
 DRAM (Dinamic RAM): Se fabrican con condensadores. Necesita ciclos de refresco para
mantener sus datos. Lectura destructiva. Generalmente usada como memoria principal.
SRAM: Diagrama de bloque:
Las memorias SRAM usan Organización 2D de memoria (Memoria de Selección Lineal).

Organización de Memorias 2D:


Organización General de Memoria (memoria de 4 palabras de 3bits)
Consiste en una matriz de Biestables, cada uno atravesado por 2 hilos perpendiculares, un hilo de
palabra (selección) y un hilo de bit (entrada). Los Biestables de la misma fila memorizan una
palabra.
Para la Escritura: Se envía una señal por el hilo de palabra y otra por el hilo de bit para todos los
bits a los que les corresponda un 1 en su configuración binaria. Además se habilita la señal de
escritura. Únicamente los Biestables atravesados por ambas señales se verán afectados. La palabra
que va escribirse se carga en el RPM (Registro de Palabra de Memoria), que pasara la información
a las líneas I1, I2,… In y en el RS (Registro de Selección) se carga la dirección, que pasa al
decodificador.
Para la Lectura: Se envía una señal por el hilo de palabra y al estar cargado con un 1 el Biestable
habilita la salida por la compuerta AND. Además se activa la señal de “Leer”. Lo que habilita la
salido por O1, O2,…On

Punto de Memoria:

Dispositivo de Selección (Decodificador):

Formulas (no se consideran las compuertas dentro de los Biestables):


Numero de palabras= x
Longitud de palabra= m
N>= Log2 x
Decodificador:
AND=x
Entradas=x*n
NOT= Entradas/2
Puntos de Memoria (Memoria Central):
Punto de Memoria=x*m=PM
AND=PM*3
Entradas= PM*8
NOT=PM
Lectura:
AND=m
Entradas=m*2
OR=m
Entradas a los OR=PM
Escritura:
AND=0
Entradas=0
Organización de Memorias 3D:
Organización General de Memoria

Parte de la decodificación la realiza la propia organización de memoria. Esta se divide en m


matrices con 2n Biestables, donde m es el número de bits de la palabra de memoria y n es el
número de bits del RS. Cada Biestable de la i-esima matriz corresponde al bit de peso i de una las
2n palabras de memoria. Cada Biestable es alcanzado por 4 hilos (2 para la selección de filas y
columnas, 1 para la entrada de información y otro para la habilitación de escritura). Se utilizan 2
decodificadores.
Para la Escritura: Se envía una señal por el hilo de fila, otra por el hilo de columna, yotra por el hilo
de entrada para todos los bits a los que les corresponda un 1 en su configuración binaria. Además
se habilita la señal de escritura. Únicamente los Biestables atravesados por las 3 señales se verán
afectados. La palabra que va escribirse se carga en el RPM (Registro de Palabra de Memoria), que
pasara la información a las líneas I1, I2,… In y en el RS (Registro de Selección) se carga la dirección,
que para al decodificador.
Para la Lectura: Se envía una señal por el hilo de fila y también por el de columna y al estar
cargado con un 1 el Biestable habilita la salida por la compuerta AND. Además se activa la señal de
“Leer”. Lo que habilita la salido por O1, O2,… On

Punto de Memoria:

Formulas (no se consideran las compuertas dentro de los Biestables):


Numero de palabras= x
Longitud de palabra= m
N>= Log2 x
P+Q=N
Decodificador:
AND=2p+2q
Entradas=2p*p+2q*q
NOT= Entradas/2
Puntos de Memoria (Memoria Central):
Punto de Memoria=x*m=PM
AND=PM*3
Entradas= PM*11
NOT=PM
Lectura:
AND=m
Entradas=m*2
OR=m
Entradas a los OR=PM
Escritura:
AND=0
Entradas=0
Memorias 2 y medio D:
Organización General de Memoria

Estas memorias se caracterizan por tener celdas 2D y Organización 3D (usa 2 decodificadores).


El esquema de selección usa un control de las señales de Leer y Escribir para así lograr una
organización 3D
El primer decodificador selecciona la fila y el otro combina (mediante un AND) con la señal de
lectura/escritura para seleccionar la columna.
Punto de Memoria:

Formulas (no se consideran las compuertas dentro de los Biestables):


Numero de palabras= x
Longitud de palabra= m
N>= Log2 x
P+Q=N
Decodificador:
AND=2p+2q
Entradas=2p*p+2q*q
NOT= Entradas/2
Puntos de Memoria (Memoria Central):
Punto de Memoria=x*m=PM
AND=PM*3
Entradas= PM*8
Lectura:
AND= (2q+1)*m
Entradas=AND*2
Escritura:
AND=2q
Entradas=2q*2

Unidad Aritmética y Lógica: Se compone de una unidad capaz de ejecutar todo el surtido de
instrucciones del calculador o de varias unidades funcionales u operadores, cada uno especializado
en la ejecución de una o varias clases de operaciones.
La ALU está formada por los siguientes elementos:
1. Operadores
2. Registros de entrada (REN)
3. Registro acumulador
4. Registro de estado (flags, indicadores de estado)
BUS
Los operadores pueden trabajar en serie o en paralelo. Y pueden ser de carácter Combinacional,
ejecutan las operaciones en una sola fase, o de carácter Secuencial, ejecutan las operaciones en
varias fases gobernadas por impulsos distribuidos por un dispositivo de control y que poseen
dispositivo de memorización para los resultados parciales.
Los indicadores suministran información acerca de la última operación realizada. Hay indicadores
de Error y del estado del acumulador.
Los operandos son cargados en los REN (registros de entrada), y los resultados parciales en el
acumulador.

ALU Elemental: Existen 2 montajes posibles de los operadores cuando hablamos de operaciones
entre bits del mismo peso:
 Operadores Combinacionales: se montan entre dos registros fuentes para los operandos y
un registro para el resultado

 Operadores con Acumulador: no existen más que un registro fuente para almacenar un
operando, ya que el otro se carga al acumulador durante la ejecución de la operación.
Cuando la salida de los operadores elementales queda establecida, un impulso EAC
habilita el resultado en el acumulador.
Operaciones Lógicas (con Acumulador):

Elemento con operaciones Integradas


Sumador Binario en Paralelo para números sin Signo: Es básicamente una cadena de etapas de
sumador (la primera puede ser un medio-sumador). Cada etapa transmite su desbordamiento a la
siguiente.

desborde
Sumador/Sustractor en Paralelo:

Suma/Sustracción de números binarios con signo: Restar un número de otro equivale a sumarle
su opuesto (el cual calculamos por complementación), entonces todo se reduce a la suma
algebraica. En este caso solo trabajaremos con complemento a 2 (ya que el complemento
restringido se opera de forma similar).

Suponemos una ALU que procesa número representados por n bits, con el bit de signo situado en
la primera posición a la izquierda (n). Asociaremos al acumulador un bit que activara el indicador
de desbordamiento. El indicador solo se activara en los siguientes casos:
 Cuando no hay arrastre de orden n-1 pero hay arrastre de orden n.
 Cuando hay arrastre de orden n-1 pero no hay arrastre de orden n.
CONDICIÓN DE Los 2 Op. Son 1 Op. Es positivo y 1 Op. Es Los 2 Op. Son
SIGNO positivos. El negativo. No puede haber negativos. El resultado
resultado es positivo. desbordamiento. es negativo.
Repres. inicial 0_____ 1_____ 1_____
0_____ 0_____ 1_____

Res. Si no hay 0_____ 1_____ 10 _ _ _ _ _


arrastre de la Válido res. positivo Válido res. negativo No válido por
etapa n-1 desbordamiento
Res. Si hay 1_____ 10 _ _ _ _ _ 11 _ _ _ _ _
arrastre de la No Válido res. Válido res. positivo dejando Válido res. negativo
etapa n-1 negativo de lado el desbordamiento dejando de lado el
Desbordamiento desbordamiento

Elemento de ALU (Abacus): la ALU de Abacus está montada entre un Bus fuente M, donde se
mantienen los niveles lógicos representativos del segundo operando, un ac umulador AC que
mantiene los niveles lógicos del primer operando hasta que la señal de muestreo de EAC introduce
el resultado en el acumulador.
Consta de un sumador en paralelo y un conjunto de puertas para ejecutar las operaciones lógicas y
distribuir las informaciones de acuerdo con las operaciones aritméticas por efectuar. Las
diferentes operaciones están gobernadas por señales lógicas procedentes del secuenciador.
El acumulador está montado como registro de desplazamiento.

Operaciones que permite Indicadores


CAR- Carga al acumulador AND – Intersecciónlógica DESB – Desbordamiento
CARC – Carga con complementación OR – Reuniónlógica S – Signo
SUM – Suma (AC+Bus M) ORX – OR exclusivo CE – Indicador de cero
SUS – Resta (AC-Bus M) DESI – Desplaza a la izquierda
PAC – Puesta a Cero DESD – Desplaza a la derecha

Multiplicador por Suma-Desplazamiento:


Los productos parciales son iguales al multiplicando si el bit correspondiente del multiplicador es
igual a 1, son nulos en caso contrario. Por lo tanto la primera operación consiste en verificar
sucesivamente cada bit del multiplicador.
La ALU capaz de realizar una multiplicación debe tener un anexo al acumulador llamado
“Multiplicador-Cociente” (MC) que contiene el multiplicador en el caso de la multiplicación y el
cociente en el caso de la división.
El resultado de la multiplicación ocupa el doble de la longitud (AC + MC).
La operación se realiza así:
1. Carga del multiplicador en el acumulador
2. Desplazamiento a derecha del contenido del conjunto AC-MC (Hasta que AC quede en 0)
3. Carga del multiplicando en B.

4. Luego se continua la operación siguiendo el siguiente algoritmo:

Al final de la operación, el resultado ocupa en doble longitud el conjunto AC+MC.


Multiplicación Celular en Paralelo: Consiste en un circuito Combinacional con dos entradas
(multiplicando Y y multiplicador X) que da como resultado la salida A en una sola operación.
Exceptuando a la fila 0 y columna 0, cada célula está compuesta por una compuerta AND y un
Sumador Completo.
Fijando nuestra atención en la Célula:
 La compuerta AND está cerrada si xi=0, en ese caso el sumador se limita a transmitir a la
fila inferior el resultado parcial obtenido desplazándolo una posición.
 Si la compuerta AND se abre entonces el sumador adiciona el resultado del producto
parcial xiyj (xi=1->yj) al resultado parcial obtenido en la fila superior, transmitiendo el
resultado a la fila inferior, desplazando una posición.
División por Sustracción-Desplazamiento:

En la división se resta del dividendo el divisor o cero, dependiendo de si el correspondiente bit del
cociente vale 1 o 0.
Es necesario incorporar la operación de comparación entre los bits de mayor peso del dividendo y
del divisor a fin de determinar el bit correspondiente del cociente.
La operación:
1. Carga del dividendo en el acumulador.
2. Desplazamiento a derecha del AC + MC (Puesta a cero del AC).
3. Carga del divisor en B.

4. Luego se sigue el siguiente Algoritmo(con comparador):


División con Restauración:
Una alternativa, en caso de no tener dispositivo comparador (debido a su alto precio), es realizar la
división con Restauración: la comparación se realiza intentando restar el divisor del dividendo y
comparando el signo del resultado. Como la ALU pierde el valor antiguo del dividendo, es necesario
restaurarlo, añadiendo el divisor al dividendo:

División sin restauración:


Es un algoritmo que me permite ahorrar la fase de restauración de la división con restauración,
cuando la resta me da resultado negativo, lo que permite ganar tiempo.
Sean α y β el contenido del acumulador y el divisor respectivamente antes de la fase de
restauración (osea ya se hizo la resta y dio negativa). Lo que se hace es α + β (restauración)
seguida de una sustracción del divisor desplazado (que vale β/2), osea:
β β
(α + β) − = α +
2 2
 ¿Por qué β/2? Porque desplazar a la derecha β o dividirlo por 2 da lo mismo. Por ejemplo

Si β = 1010 (10)

β/2 = 0101 (5)

 ¿Por qué se le resta el divisor desplazado? Porque después de la suma de restauración, se


desplaza AC+MC un lugar a la izquierda. Es lo mismo desplazar a izquierda AC+MC y restarle el
divisor sin desplazar o restarle al AC+MC sin desplazar el divisor desplazado a derecha (β/2).
Antes:
0 0 1 1 0 (AC+MC)
0 0 1 0 1 (divisor)
Desplazando a izquierda AC+MC:
0 0 1 1 0 (AC+MC)
0 0 1 0 1 (divisor) El resultado del desplazamiento en
Desplazando a derecha divisor (β/2): ambos casos resulta en lo mismo
0 0 1 1 0 (AC+MC)
0 0 1 0 1  (divisor)

Por lo tanto, esto quiere decir que si en la resta de comparación, el resultado < 0, hago la
restauración y la sustracción que le sigue TODO DE UNA, haciendo α + β/2. Esto equivale a las
siguientes 2 operaciones del diagrama de flujo:

El truco está en simplificar la cosa haciendo lo de la parte derecha de la igualdad de más arriba en
lugar de lo de la parte izquierda.
En el caso que resultado > 0, como no se restaura, entonces no se suma β:
β β
(α + β) − = α −
2 2
es decir que se desplaza AC+MC a izquierda y se resta el divisor, es decir
Algoritmo completo:

Suma y Sustracción con coma flotante: Las operaciones se llevan a cabo sobre números
normalizados, esto es, sobre números cuyo valor de exponente está ajustado para que la mantisa
tenga el mayor número posible de dígitos significativos. Por consiguiente, los operadores en
aritmética flotante deben, no solamente ejecutar la operación correspondiente, sino también
normalizar el resultado obtenido.
El proceso se divide en 3 fases:
1. Alinear las mantisas con objeto de enfrentar los bits de igual peso. Supongamos a sumar
los números A = 1.200 y B = 80.000 X 10-2 , que se escriben, respectivamente:

No puede operarse directamente la suma de las mantisas; se comparan los exponentes y


se detecta que el primero de los números es más pequeño; sobre este número se ejecuta
una doble operación: incremento del exponente en una unidad y desplazamiento de la
mantisa una posición a la derecha. De nuevo se comparan y se recomienza hasta obtener
identidad de exponentes. En ese momento puede efectuarse la suma de las mantisas:
2. Ajustar los signos. Consideremos la sustracción A - B. En la representación en valor
absoluto y signo, se deberán primeramente comparar las mantisas de A y B, comprobar
que la de B es superior a la de A y deducir de ello que la operación pertinente es sustraer
la mantisa de A de la mantisa de B y al resultado darle el signo menos:

Debe tomarse así en cuenta en esta fase la clase de operación (suma o sustracción), el
signo de los operandos y el resultado de la comparación de mantisas. Nótese que el
problema se simplifica si el conjunto signo-mantisa fuera representado en
complementación cuando el número sea negativo.
3. Normalización del resultado. Puede que el resultado bruto de la operación no esté
normalizado, por dos razones:
 hay desbordamiento de capacidad en la suma, en cuyo caso es necesario
desplazar a mantisa una posición a la derecha, aumentando al tiempo en una
unidad el exponente.
 la diferencia de las mantisas implica la formación de un número n de ceros a la
izquierda del resultado, en cuyo caso es necesario desplazar la mantisa n
posiciones a la izquierda del resultado simultáneamente.
Veamos un ejemplo de suma en ambos casos:
Funcionamiento de un Operador con coma flotante:

FASES:
1. Comparación de los exponentes
2. Alineamiento de las mantisas
3. Suma-sustracción de las mantisas
4. Normalización

1. COMPARACIÓN DE LOS EXPONENTES: La comparación se hace por sustracción. Se resta EA - EB


sumando EA + (-EB) y el resultado va a CD.
 Si la resta da nula, las mantisas están correctamente alineadas (ambos exponentes son
iguales), por lo que salteamos la 2da fase de “Alineamiento de las mantisas” y pasamos a
la 3ra, osea “Suma-sustracción de las mantisas”.
 Si no, el contenido de CD (diferencia entre los exponentes) permitirá contar los
desplazamientos necesarios para alinear las mantisas en la 2da fase.
2. ALINEAMIENTO DE LAS MANTISAS: se pasa a esta fase porque uno de los exponentes es
menor al otro, y se trabaja sobre el operando con menor exponente.
 Si EA < EB , el resultado de la sustracción de los exponentes es negativo. El complemento
del contenido de CD me indica el número de desplazamientos por efectuar para alinear la
mantisa. El desplazamiento de la mantisa se hace en RD, por lo que se envía (SA MA) a RD,
el cual se desplaza a derecha incrementando CD por cada desplazamiento. Esto ocurre
hasta que CD = 0, momento en el cual se devuelve el contenido de RD al registro A y se
pasa el mayor exponente (EB) a CD.
 Si EA > EB , el desplazamiento a derecha afecta a SB y MB pero con la diferencia que CD se
usa como descontador. Cuando CD = 0, se pasa el contenido de RD al registro B y se pasa
el EA a CD.
3. SUMA-SUSTRACCIÓN DE LAS MANTISAS: se opera entre los conjuntos signo-mantisa
yuxtapuestos (uno seguido del otro), osea (S AMA) ± (SBMB). La sustracción se obtiene haciendo
(SAMA) + [-(SBMB)]. El resultado (signo, mantisa y posible desborde) se lleva a RD.
4. NORMALIZACIÓN EN EL CASO DE DESBORDAMIENTO: se desplaza una posición a la derecha la
mantisa del resultado en RD, siendo reemplazado el bit de mayor peso por el desbordamiento.
El signo queda inalterado y el registro CD se incrementa en 1.
5. NORMALIZACION EN EL CASO QUE LA MANTISA DEL RESULTADO TENGA DÍGITOS NO
SIGNIFICATIVOS A SU IZQUIERDA: esto se detecta haciendo un test sobre el signo y el dígito de
mayor peso de la mantisa.
 Si son distintos, el número ya estaba normalizado.
Si no, se tienen que hacer desplazamientos a izquierda de la mantisa hasta que sean distintos y
por cada desplazamiento se decrementa 1 de CD.

Ruta de Datos: se denomina Ruta de Datos al conjunto de órganos para transferir, memorizar o
procesar las informaciones (instrucciones, direcciones, operandos) procedentes de memoria
central. Los buses manejan la transferencia de información, los registros y memorias la almacenan
y las unidades funcionales las procesan.

Transferencias de información:
Entrada de información a un registro: la información a grabarse en el registro espera la señal de
gobierno que abre la compuerta para sobrescribir el registro.

(Ambos gráficos representan lo mismo)


Salida de información de un registro: desembocara generalmente en un Bus. Dado que varios
registros pudieran desembocar sobre el mismo bus, habrá puertas de salida dominadas por
señales de nivel. Registros entre dos buses:

Si se envía información por el bus E a cargarse en el registro 1 bastara con enviar una señal E1 para
abrir la entrada a dicho registro, mientras no se envié una señal E2 el registro 2 no cambiara,
permitiendo así que con un solo bus se manejen varios registros. Lo mismo en el caso de las salida,
si queremos pasar la información del registro 2 al bus S solo debemos enviar una señal S2.

Transferencia entre dos registros:

Abrimos la puerta de nivel con la señal SR1, subiendo en el bus intermedio los niveles de tension
dados por los Biestables del registro R1. Una vez estabilizados los niveles podrá enviarse el
impulso ER2, que autoriza la carga de R2 con el contenido del bus. Es preciso entonces, mantener
la señal SR1 durante el intervalo suficiente para que los niveles se estabilicen en el bus intermedio
antes de enviar el impulso ER2:

En una maquina estas señales estarán sincronizadas normalmente con un reloj de impulsos
periódicos de la siguiente forma:
Descripción de la unidad central de Abacus:
Instrucciones de una dirección.
Transferencias en paralelo.
Maquina Síncrona (todos los elementos están sincronizados por un mismo reloj).
Longitud de la dirección de m bits.
Longitud del código de operación de p bits.
Longitud de palabra de n bits = p bits + m bits.

El reloj producirá un batido cada θ segundos, el ciclo básico de memoria es de 2 θ, ósea 2 batidos
de reloj.

S Registro de selección de memoria M bits


P Contador de programa u ordinal M bits
M Registro de Palabra o de intercambio N Bits
I Registro de instrucción
CO: código de operación P bits
D: dirección M bits
AC Acumulador N bits

La Instrucción de la Suma en Abacus:


Nota: Las señales son enviadas en el orden necesario por el secuenciador central que discutiremos
más tarde.
Fase 1 Búsqueda de la instrucción:
1. Se transfiere el contenido del contador ordinal al registro de selección: (P) -> S.
2. Se lanza un ciclo de memoria, en el que se transfiere el contenido de la celda de memoria
direccionada por el registro S al registro de palabra: ((S)) -> M.

Fase 1- Análisis Paso a paso:


(P) -> S : Durante el último θ precedente, la señal SRP (salida registro P) mantiene abierta la puerta
de salida de P, por lo que la información(dirección) de P se encuentra latente en el Bus S. En este
batido se envía la señal de muestreo ENS (entrada S) para introducir dicha información en S.
((S)) -> M: Se lanza un ciclo de memoria mediante la señal impulsional ICM (inicio de ciclo de
memoria), se indica que es una lectura manteniendo la señal LEC (lectura) durante todo el ciclo de
lectura, y si fuera preciso se pone a 0 el registro M mediante PACM (puesta a cero registro M).

Resumen:
(P) -> S SRP, ENS
((S)) -> M ICM, PACM, LEC

Fase 1 - Cronograma (suponiendo que la información buscada está en memoria):

Fase 2 Búsqueda de Operando:


1. Se envía el contenido del registro M al registro I para su decodificación: (M) -> I.
2. La parte D de la instrucción (dirección del operando) se envía al registro S: (D) -> S.
3. Tras un hemiciclo de lectura el operando se encuentra en el registro M: ((S)) -> M.

Fase 2- Análisis Paso a paso:


(M) -> I: La instrucción se encuentra en el registro M antes del fin del primer θ del ciclo, durante
este primer ciclo se abre la puerta de salida del registro M al Bus M con la señal SRM (salida
registro M), luego se introduce la información en I mediante la señal de muestreo ENI (entrada I),
sincronizada con el segundo batido de reloj del ciclo de memoria.
(D) -> S: el registro I está divido en CO (código de operación e informaciones complementarias) y D
(dirección del operando), al decodificar el contenido de CO este indica que el operando debe
buscarse en memoria, por lo tanto debe enviarse la parte D al registro S, usando la señal de nivel
SRD (salida registro D) y manteniendo la señal en el Bus S. Al siguiente batido se envía la señal
impersonal ENS (entrada S).
((S)) -> M: Se borra el registro M (señal PACM) simultáneamente con la introducción de la
dirección en S y se lanza un ciclo de memoria por medio de un impulso ICM, indicando que se trata
de una lectura mediante LEC.

Resumen:
(N) -> I SRM, ENI
(D) -> S SRD, ENS
((S)) -> M ICM, PACM, LEC

Fase 2 – Cronograma:
Fase 3 Ejecución de la Suma:
1. Se suma el contenido del registro M con el contenido del acumulador: (M) + (AC) -> AC.

Fase 3- Análisis Paso a paso:


(M) + (AC) -> AC: Se debe mantener la información de los dos operandos implicados en la suma
(uno en M y otro en AC) durante toda la operación de suma mediante las señales de nivel SRM
(salida registro M), ENA (entrada ALU) y SUM (señal de SUMA). Terminada la suma una señal EAC
(entrada AC) introduce el resultado a AC.

Resumen:
(M) + (AC) -> AC SRM, ENA, SUM, EAC

Fase 3 - Cronograma:
Fase 4 Preparación de la próxima instrucción:
1. Se incrementa el contador de programa en 1: (P) + 1 -> P.
2. Se inicia nuevamente el proceso: (P) -> S.

Fase 4- Análisis Paso a paso:


(P) + 1 -> P: Se envía una señal impulsional INCP (incremento de P) para que al final de la
instrucción P contenga la dirección de la próxima instrucción.
(P) -> S: el proceso continúa.
Resumen:
(P) + 1 -> P INCP
(P) -> S SRP, ENS

Fase 4 – Cronograma:
Resumen completo de la Suma en ABACUS:

Instrucción de Almacenamiento en Abacus


El primer ciclo de la instrucción es idéntico al de la suma.
En el segundo ciclo:
1. se almacena el contenido de AC en memoria, en la dirección especificada en D.
2. se reproduce en M el contenido de AC.
3. se escribe M en memoria en la posición indicada por el registro S.
(D) -> S SRD, ENS
(AC) -> M SAC, ENM
(M) -> (S) ICM, ESC

Nótese que solo se hace el cronograma de la tercera fase, esto es porque las dos fases anteriores
serian iguales que en la suma.

Instrucción de Salto Incondicional en Abacus


La información de D debe enviarse a la vez a S para buscar la próxima instrucción y a P para
actualizar el contador de programa.
(D) ->S; (D) ->P
Esta instrucción no dura más de un ciclo de memoria, y no debe incrementarse el contador al final.

(P) -> S SRP, ENS


((S)) -> M ICM, PACM, LEC
(M) -> I SRM, ENI
(D) -> P SRD, ENP, ENS
(D) -> S

Recopilación de las señales de gobierno en Abacus:


Registros en la ruta de Datos:
Direccionado por el AC, Multiplicador-Cociente,
No Direccionables: Un programador Registro Único de Base
tienen una función registro Transparente al programador S, I, todos los Registros
bien definida y por Tampón
exclusiva. función
Direccionables: el Varios Registros Aritméticos
programador puede registros Registros de Cálculo de Eventualmente agrupados
emplearlos para por Dirección (pre y post como Registros Banalizados
conservar Función indexación)
determinadas Organizados como Memoria: Circuitos simples.
informaciones en el la dirección del registro será Simultaneidad imposible
transcurso del cálculo. dada a la memoria sin con la memoria, solo una
decodificación previa. operación de lectura-
Escritura a la vez.
Organizados como Registros Circuitos más complejos.
independientes: la señal de Simultaneidad de Acceso
los registros debe ser posible.
decodificada para obtener las
señales de apertura o clausura
de las puertas de los registros.

Una sola unidad funcional y Registros Aritméticos montados como memoria local:
Las operaciones se llevan a cabo entre el Registro M y uno de los registros aritméticos o el AC. El
resultado obtenido en AC puede ser guardado en memoria local para utilizarlo después.

Una sola unidad funcional y Registros Aritméticos Independientes:


Como cada registro tiene puertas de entrada y salida independiente, la preparación para una
operación con dos operandos solo consiste en abrir las puertas correspondientes para que los dos
operandos estén presentes en la ALU, y posicionar la ALU para realizar la operación. Después de
esperar el tiempo de ejecución bastara con abrir la puerta de entrada al registro de destino, por lo
que no es necesario un registro Tampon (el AC).
Combinación de Registros Independientes y de memoria local:
Este esquema permite procesar operandos de longitud mayor que la ruta de datos: se ejecutan las
operaciones con un operando sobre n palabras en memoria central y otro en n registros de
memoria local, los resultados intermedios se almacenan en los registros independientes.

Especialización de las unidades funcionales:


En vez de una sola, podemos tener varias unidades funcionales adaptadas cada una a una función
con operandos diferentes. Esta solución es más costosa pero más eficaz.

Procesador y Microprocesador:
La Unidad Central de Proceso (CPU): La Unidad Central de Proceso o CPU controla y coordina
todas las operaciones del ordenador. Está constituida por dos elementos básicos: la Unidad de
Control (UC) y la Unidad Aritmético-Lógica (ALU)

Microprocesador: En los ordenadores actuales, la CPU básica está implementada en un chip que
llamamos microprocesador o procesador, aunque en ordenadores avanzados la CPU está
compuesta por varios procesadores. El microprocesador es por tanto el elemento físico que realiza
las operaciones asignadas a la CPU.
Características que definen un Microprocesador:
 La longitud de la palabra
 La velocidad del proceso
 La capacidad de memoria direccionable directamente
 El repertorio de instrucciones
 El número de registros internos de la CPU
 La capacidad de mando de periféricos
 La capacidad de tratamiento de las interrupciones
Direccionamiento:

A = contenido de un campo de dirección en la instrucción


R = contenido de un campo de dirección en la instrucción que referencia a un registro
EA = dirección real (efectiva) de la posición que contiene el operando que se referencia

Direccionamiento inmediato:
La forma más sencilla de direccionamiento es el direccionamiento inmediato, en el que el
operando está en realidad presente en la propia instrucción:
Operando = A
La ventaja del direccionamiento inmediato es que, una vez captada la instrucción, no se requiere
una referencia a memoria para obtener el operando, ahorrándose pues un ciclo de memoria. La
desventaja es que el tamaño del número está restringido a la longitud del campo de direcciones
que, en la mayoría de los repertorios de instrucciones, es pequeño comparado con la longitud de
palabra.

Direccionamiento directo:
Una forma muy sencilla de direccionamiento es el direccionamiento directo, en el que el campo de
direcciones contiene la dirección efectiva del operando:
EA = A
Solo requiere una referencia a memoria y no necesita ningún cálculo especial. La limitación obvia
es que proporciona un espacio de direcciones restringido.

Direccionamiento indirecto:
El problema del direccionamiento directo es que la longitud del campo de direcciones es
normalmente menor que la longitud de palabra, limitando pues el rango de direcciones. Una
solución es hacer que el campo de direcciones referencie la dirección de una palabra de memoria,
la cual contenga la dirección completa del operando. Esto es lo que se denomina direccionamiento
indirecto:
EA = (A)
El paréntesis se interpreta como «contenido de». La ventaja obvia de esta aproximación es que
para una longitud de palabra de N bits, se dispone ahora de un espacio de direcciones de 2N. La
desventaja es que la ejecución de la instrucción requiere dos referencias a memoria para captar el
operando: una para captar su dirección y otra para obtener su valor.
Una variante de direccionamiento indirecto raramente utilizada es el direccionamiento multinivel
o en cascada:
EA = (...(A)...)
En este caso, uno de los bits de una palabra de dirección es un indicador de «indirección» (I). Si el
bit I es 0, la palabra contiene el valor de EA. Si el bit I es 1, entonces se invoca otro nivel de
«indirección». No parece que esta aproximación ofrezca ninguna ventaja particular, y su
desventaja es que podrían requerirse dos o más referencias para captar un operando.

Direccionamiento de registros:

El direccionamiento de registros es similar al directo. La única diferencia es que el campo de


direcciones referencia un registro en lugar de una dirección de memoria principal:
EA = R
Por ejemplo, si el campo de dirección de registro de la instrucción es 5, la dirección deseada es el
registro R5, y el valor del operando es el contenido de R5. Normalmente, un campo de direcciones
que referencia a registros consta de tres a cinco bits, de manera que pueden referenciarse un total
de 8 a 32 registros de uso general.
Las ventajas del direccionamiento de registros son que (1) solo es necesario un campo pequeño
de direcciones en la instrucción, y (2) no se requieren referencias a memoria. El tiempo de acceso
a un registro interno del procesador es mucho menor que para la memoria principal. La desventaja
del direccionamiento a registros es que el espacio de direcciones está muy limitado.

Si se hace un uso masivo del direccionamiento a registros en un repertorio de instrucciones, los


registros del procesador se emplearán intensamente. Debido al número tan limitado de registros
(en comparación con el número de posiciones de memoria principal), usarlos de esta manera tiene
sentido solo si se emplean eficientemente. Si el operando del registro se mantiene en uso durante
varias operaciones, se estaría consiguiendo un ahorro real.

Direccionamiento indirecto con registro:


Igual que el direccionamiento de registros es análogo al directo, el direccionamiento indirecto con
registro es análogo al direccionamiento indirecto. En ambos casos, la diferencia estriba en si el
campo de direcciones hace referencia a una posición de memoria o a un registro. Así, para el
direccionamiento indirecto con registro:
EA = (R)
Las ventajas y limitaciones del direccionamiento indirecto con registro son básicamente las
mismas que se tienen para el direccionamiento indirecto. En ambos casos, la limitación de espacio
o rango de direcciones del campo de direcciones, se supera haciendo que dicho campo referencie
una posición de una palabra completa (un registro completo, en este caso) que contenga la
dirección. Además, el direccionamiento indirecto con registro emplea una referencia menos a
memoria que el direccionamiento indirecto.

Direccionamiento con desplazamiento:


Un modo muy potente de direccionamiento combina las posibilidades de los direccionamientos
directo e indirecto con registro. Nosotros usaremos la denominación de direccionamiento con
desplazamiento:
EA = A + (R)
El direccionamiento con desplazamiento requiere que las instrucciones tengan dos campos de
direcciones. El valor contenido en uno de los campos de direcciones (valor = A) se utiliza
directamente. El otro campo de direcciones, se refiere a un registro cuyo contenido se suma a A
para generar la dirección efectiva.

Describiremos tres de los usos más comunes del direccionamiento con desplazamiento:
 Desplazamiento relativo.
 Direccionamiento con registro base.
 Indexado.

 Direccionamiento relativo:
Para el direccionamiento relativo, también llamado direccionamiento relativo al PC, el registro
referenciado implícitamente es el contador de programa (PC). Es decir, la dirección de instrucción
actual se suma al campo de direcciones para producir el valor EA. Normalmente, el campo de
direcciones se trata como número en complemento a dos para esta operación. En consecuencia, la
dirección efectiva es un desplazamiento relativo a la dirección de la instrucción.
 Direccionamiento con registro base:
La interpretación del direccionamiento con registro base es la siguiente: el registro referenciado
contiene una dirección de memoria, y el campo de dirección contiene un desplazamiento
(normalmente en representación entera sin signo) desde dicha dirección.

Si la longitud del campo de direcciones es K y el número de registros posibles es N, una instrucción


puede referenciar una de entre N áreas de 2K palabras.

 Indexado:
La interpretación usual del indexado es la siguiente: el campo de dirección referencia una
dirección de memoria principal, y el registro referenciado contiene un desplazamiento positivo
desde esa dirección. Obsérvese que este uso es justo el opuesto de la interpretación del
direccionamiento con registro base. Ya que en el indexado se considera que el campo de
direcciones es una dirección de memoria, generalmente contiene más bits que un campo de
direcciones de una instrucción comparable que emplee direccionamiento con registro base. No
obstante, el método para calcular EA es el mismo para ambos tipos de direccionamiento.

Un uso importante del indexado es como mecanismo eficiente para ejecutar operaciones
iterativas. Considere por ejemplo una lista de números almacenados a partir de la posición A.
Suponga que se quiere sumar 1 a cada elemento de la lista. Necesitamos captar cada valor,
sumarle 1 y memorizar el resultado. La secuencia de direcciones efectivas necesarias es A, A + 1, A
+ 2..., hasta la última posición de la lista. Con el indexado, esto es fácil de hacer. El valor A se
almacena en el campo de dirección de la instrucción, y el registro elegido, llamado registro índice,
se inicializa a 0. Tras cada operación, el registro índice se incrementa en 1.

Dado que los registros índice se usan normalmente para tales tareas iterativas, es normal
incrementarlos o decrementarlos tras cada referencia.

Algunas máquinas disponen de direccionamiento tanto indirecto como indexado, y es posible


emplear ambos en la misma instrucción. Hay dos posibilidades: el indexado se realiza bien antes,
o bien después de la «indirección».

Si la indexación se realiza después de la indirección se denomina post-indexado:


EA = (A) + (R)
Primero, el contenido del campo de direcciones se emplea para acceder a la posición de memoria
que contiene una dirección directa. Esta dirección se indexa entonces mediante el valor del
registro.

Con pre-indexado, la indexación se realiza antes de la «indirección»:


EA = (A + (R))
La dirección se calcula como en el caso de indexado simple. No obstante, en este caso, la dirección
calculada no contiene al operando, sino la dirección del operando.

Unidad de Control: La Unidad de control extrae de la Memoria Central la instrucción a realizar, la


analiza y establece las conexiones eléctricas correspondientes dentro de la ALU, extrae los
datos(operandos) de la MC, desencadena el tratamiento de dicho datos en la ALU y finalmente
almacena el resultado en MC.
Está compuesta por:
 Contador de Instrucciones/Programa
 Registro de instrucción
 Secuenciador

El Secuenciador Central: es el órgano que genera las microordenes, que luego se distribuyen a lo
largo de la ruta de datos para activarla y gobernar los elementos que la componen.

Entradas y salidas del secuenciador:


- Las salidas del secuenciador son las microordenes.
-Las entradas del secuenciador son suministradas por la instrucción (el código de operación, las
condiciones de direccionamiento y las direcciones de los registros) y por el estado de la maquina
(Biestables que describiremos en detalle más tarde).

Calculadores síncronos y asíncronos: el secuenciamiento de instrucciones se puede llevar a cabo


de dos formas:
 Ordenador Síncrono: el secuenciador conoce los tiempos de respuesta de los diferentes
órganos gobernados. Entonces provoca los retardos apropiados entre las diferentes
órdenes sucesivas de manera que tengan tiempo de ejecutarse las operaciones.
 Ordenador Asíncrono: el secuenciador recibe de los diferentes órganos del calculador
señales indicando que han terminado las operaciones ordenadas y que se liberan. El
secuenciador solamente lanzará una nueva operación después de haber sido avisado de
que las operaciones precedentes fueron ejecutadas completamente y de haberse
asegurado que el órgano que debe realizarla está libre.

Secuenciadores cableados y microprogramados:

 Secuenciadores Cableados: realizados en forma de circuito secuencial electrónico.


 Secuenciadores Microprogramados: corresponden a la introducción en la UC de una
memoria con un pequeño programa, llamado microprograma, para cada instrucción. El
desarrollo de este microprograma genera las microórdenes que gobiernan la ejecución de
la instrucción.

Secuenciadores Cableados: a partir de aquí hablaremos del funcionamiento del


secuenciador cableado en Abacus.

Principio del Secuenciamiento: El objetivo es generar microórdenes distanciadas en el tiempo por


retardos apropiados. Por ejemplo, el inicio de la instrucción de almacenamiento en Abacus,
suponiendo que la dirección de la instrucción se encuentre sobre el bus S será efectuado por la
cadena de retardos:
En un calculador asíncrono, tendremos el siguiente esquema, con las compuertas AND indicando
que no se pueden generar las siguientes microórdenes hasta que las operaciones anteriormente
ordenadas no hayan terminado.

El Distribuidor de Fases: En la mayoría de los casos, las microórdenes se sincronizan con señales
temporales regularmente espaciadas, provenientes de un mismo reloj. A cada impulso de reloj
debe ser generado un cierto número de microórdenes.

Si las señales de reloj son todas idénticas, entonces ¿cómo el secuenciador se sitúa en el tiempo?
ósea por ejemplo ¿cómo sabe en qué fase del ciclo de la instrucción se encuentra? Esta es la
función del distribuidor de fases, que partiendo de los impulsos periódicos del reloj, produce
señales impulsionales o de nivel acordes a las diferentes fases del ciclo de memoria o de la
instrucción.
 En un instante determinado, solamente uno de los biestables B0, B1, B2, B3 está
posicionado a 1.

 El próximo impulso de reloj devolverá este biestable a cero y posicionará el siguiente


biestable a 1.

 Los niveles lógicos Θ0, Θ1, Θ2, Θ3, serán ciertos uno a continuación del otro, pero solo uno
en un momento dado.

 Los impulsos θ0, θ1, θ2, θ3, sincronizados con las señales de reloj, se producirán cada cuatro
batidos (distribuidor de 4 fases, si es de 2 fases como Abacus, cada 2).

Reloj

0

0

1

1

2

2

3

3

En el caso de Abacus, como el ciclo de memoria equivale a dos batidos de reloj, empleamos un
distribuidor de dos fases.

Decodificación de la Instrucción: La instrucción consta de diferentes campos de información de


interés para el secuenciador, como son:

 el código de operación

 las condiciones de direccionamiento

 la dirección de registros o de unidades periféricas, etc.

El decodificador de instrucción se encarga de realizar esta decodificación. Puede utilizarse una


matriz de diodos o de transistores. Por ejemplo, para Abacus, dotado de las operaciones indicadas
en la siguiente tabla y capaz de direccionamiento indirecto, se necesitaría el decodificador de la
siguiente figura:
Las señales salidas de la matriz permanecen posicionadas todo el tiempo que la instrucción se
encuentra en el registro de instrucción.

Biestables de Estado: Los hay de dos clases:

 Los primeros memorizan el estado de la máquina. Son posicionados por las instrucciones
y los resultados de operaciones, o también por acontecimientos exteriores, petición de
ciclo de memoria, interrupción, etc. Sus salidas figuran entre las informaciones de entrada
al secuenciador.
 Los segundos constituyen parte integrante del secuenciador. Es éste quien los posiciona y
quien utiliza su salida. Esencialmente sirven de marcas temporales. En cierto modo, los
biestables del distribuidor de fases podrían incluirse dentro de esta categoría.

Abacus consta de los cuatro biestables representados en la siguiente figura:


AP = acumulador positivo (bit de signo = 0)

AN = acumulador negativo (bit de signo = 1)

Trazado de cronogramas y ecuaciones lógicas: Es uno de los temas más largos y complicados de
entender, por eso se agrega como un anexo al final del apunte.

Reflexiones sobre los secuenciadores cableados: Básicamente, el secuenciador de una


computadora síncrona es un circuito secuencial que produce las secuencias de microórdenes
necesarias para la ejecución de las instrucciones, sincronizándolas con los impulsos procedentes
del reloj. Se lo puede fraccionar en 2 subconjuntos: por un lado, unos elementos de memoria para
poder marcar las diferentes fases del desarrollo de las instrucciones (distribuidor de fases y
biestables de estado posicionados por el secuenciador), por el otro el circuito combinacional
correspondiente a las ecuaciones lógicas.

En la realidad, la concepción del secuenciador no es tan sencilla, sobre todo cuando el conjunto de
instrucciones es grande y cuando gobierna operaciones secuenciales complejas. Ello nos lleva a
pensar en 2 niveles de control: un nivel central que distribuye microórdenes globales a los
distintos operadores y un nivel local, asociado a cada operador, para el gobierno de sus
operaciones internas.

El siguiente grafico es una representación más detallada de ABACUS incluyendo las conexiones del
secuenciador:
Secuenciamiento de los operadores aritméticos - Métodos generales
Los operadores aritméticos y lógicos de tipo combinacional son posicionados directamente por las
microórdenes generadas por el secuenciador general de la máquina.
En máquinas más complejas, el control de los operadores aritméticos de funcionamiento
secuencial está frecuentemente descentralizado y cada operador posee su órgano de control. En
estos casos, el secuenciador general envía, por un lado, una orden especificando el tipo de
operación a ejecutar y por otro, los batidos del reloj central, si el operador no tuviese uno propio.
El secuenciamiento de la operación aritmética queda a partir de entonces a la entera
responsabilidad del operador. Terminada la operación, el operador envía al secuenciador central
una señal de fin de operación.
Al igual que la UC de un computador, el secuenciador de un operador secuencial puede tener su
propio decodificador de órdenes, su distribuidor de fase, sus biestables de estado e incluso su
propio reloj.

Secuenciamiento de un operador de multiplicación por suma-desplazamiento

En la figura anterior se ve el entorno del secuenciador del operador:


 Del secuenciador general recibe la orden de multiplicación (MUL), así como los batidos
de reloj y transmite un impulso de fin de operación.
 Envía al operador una orden SUM de posicionamiento del sumador, la validación de la
suma EAC y la orden de desplazamiento a derecha DESD.
 Del último biestable del registro MC recibe una señal de su estado.

En la figura de anterior se ve en más detalle el secuenciador de la multiplicación bajo las hipótesis:


 El sumador permanece activo mientras dure la multiplicación, para sumar B + AC.
 La duración máxima de la suma es de 2 batidos de reloj.
 En ausencia de suma (MC0 = 0), se produce un desplazamiento a cada batido.

El funcionamiento es el siguiente:
1. La orden de inicio de multiplicación (MUL):
a. carga el descontador de desplazamientos con una cantidad igual al número de
dígitos de los operandos
b. posiciona el biestable Θ, que estará en 1 durante toda la multiplicación,
habilitando las puertas de entrada al sumador paralelo (SUM).
2. Al primer batido de reloj siguiente al posicionamiento de Θ comienza la operación:
a. Si MC0 = 0, esto pone a 0 el biestable Φ, hay desplazamiento y decremento en
el descontador.
b. Si MC0 = 1, se ejecuta la suma que dura 2 batidos de reloj, antes de desplazar.
Para eso:
 Se memoriza el primer batido en el biestable Φ (se pone a 1)
 Al segundo batido, se valida el resultado de la suma (EAC) y se pone a
cero MC0 (se pone a 0 para producir lo de abajo)
 El tercer batido producirá desplazamiento a derecha, decremento del
descontador y la puesta a cero de Φ.
3. Se repite el paso 2 hasta que el descontador valga cero.
4. Cuando el descontador llega a cero, se genera un impulso que pone a cero al biestable
Θ, y avisa al secuenciador central del final de la operación.

Este circuito tiene tres biestables de estado: MC0, Θ y Φ, y un descontador de desplazamiento, que
ejerce una función análoga al distribuidor de fases visto anteriormente.
Secuenciador Microprogramado
Control Microprogramado - Microinstrucciones y Memoria de Control
En los complejos procesadores modernos, el número de ecuaciones lógicas necesarias para definir
la unidad de control es muy grande, por lo que implementar un circuito combinacional que
satisfaga todas estas ecuaciones es muy difícil. Además, el diseño es relativamente inflexible, ya
que por ejemplo, es difícil alterar el cableado si se desea añadir una nueva instrucción.
Una alternativa a la unidad de control cableada es la unidad de control microprogramada, en la
cual a cada instrucción del computador le corresponde generalmente en una memoria
especializada (memoria de control) un microprograma, las instrucciones del microprograma son
las “micro-instrucciones”. Al desarrollarse las micro-instrucciones del microprograma se generan
“micro-ordenes” que son las que gobiernan la ejecución. Una micro-instrucción puede generar
muchas micro-órdenes a la vez.

Unidad de control microprogramada


Los elementos más importantes de la UC microprogramada son:
 La Memoria de control almacena el conjunto de microinstrucciones.
 El Registro de dirección de control contiene la dirección de la siguiente microinstrucción a
leer.
 Cuando se lee una microinstrucción de la memoria de control se transfiere al Registro
intermedio de control. La parte izquierda de dicho registro se conecta a las líneas de
control que salen de la UC, por lo que leer una microinstrucción, ya la ejecuta.
 La Unidad de secuenciamiento carga el registro de dirección de control con la dirección de
la siguiente microinstrucción a ejecutar, junto con una orden de lectura.

La unidad de control funciona como sigue:


1. Para ejecutar una instrucción, la unidad lógica de secuenciamiento emite una orden de
lectura a la memoria de control.
2. La palabra cuya dirección se especifica en el registro de dirección de control se lee en el
registro intermedio de control.
3. El registro intermedio de control genera las señales de control y contiene además la
información de dirección siguiente para la unidad lógica de secuenciamiento.
4. La unidad lógica de secuenciamiento carga en el registro de dirección de control una
nueva dirección, basada en la información de dirección siguiente del registro intermedio
de control y en los indicadores de la ALU.
En el 4to paso, dependiendo del valor de los indicadores de la ALU y del registro intermedio de
control, se toma una de estas 3 decisiones:
 Captar la microinstrucción secuencial siguiente: se suma 1 al registro de dirección de
control.
 Saltar a una nueva rutina: el campo de dirección del registro intermedio de control se
carga en el registro de dirección de control.
 Saltar a la rutina de una instrucción máquina (AND, SUM, etc): se carga el registro de
dirección de control en función del código de operación almacenado en IR.
La figura muestra dos módulos designados como decodificador. El decodificador de arriba traduce
el código de operación de IR en una dirección de memoria de control. El de abajo no se usa con
microinstrucciones horizontales pero sí con microinstrucciones verticales.
El modelo de Wilkes
Wilkes fue el primero que propuso la utilización de una unidad de control microprogramada en
1951. La configuración propuesta por Wilkes presenta una matriz parcialmente llena de diodos.
A la entrada del dispositivo de control tenemos el código de operación de la instrucción por
ejecutar, el cual es considerado como la dirección de la 1ra microinstrucción del microprograma
asociado a la instrucción. Tal dirección se envía al registro SMC (Selección de Memoria de Control)
que, decodificado, permite activar un hilo de palabra horizontal sobre el cual está grabada la
microinstrucción bajo la forma siguiente: los 1 están representados por un acoplamiento (marcado
con un punto) con el correspondiente hilo de bit vertical, los 0 por la ausencia de acoplamiento.

Durante un ciclo máquina, se activa una fila de la matriz mediante un pulso. Esto produce señales
en aquellos puntos en los que un diodo está presente (indicados mediante un punto en el
diagrama). La primera parte de la fila genera las señales de control que gobiernan el
funcionamiento del procesador. La segunda parte genera la dirección de la próxima
microinstrucción (DC o Dirección de Control) que será transferida, al siguiente batido de reloj, a
SMC. Por tanto, cada fila de la matriz es una microinstrucción y la matriz completa es la memoria
de control.
Se representa también el método para hacer saltos condicionales, donde el biestable E es
posicionado bajo determinadas condiciones por las microinstrucciones.
Para permitir bifurcaciones, una fila debe contener dos partes de direcciones, controladas por una
señal condicional (E), que dependiendo de su valor, activará una u otra bifurcación.
El microprograma concluirá con una última microinstrucción, la cual cargará en SMC el nuevo
código de operación.

Secuenciamiento de microinstrucciones:
El secuenciamiento de las microinstrucciones consiste en obtener la dirección de la siguiente
microinstrucción a ejecutar. Se pueden presentar 3 casos para esta:
 Viene determinada por el registro de instrucción.
 Es la siguiente dirección secuencial.
 Es el destino de un salto.
Técnicas para hacer el secuenciamiento:
 Direccionamiento secuencial: Una microinstrucción normal direcciona implícitamente la
microinstrucción que se encuentra en la dirección próxima a la suya. El registro de
selección de la memoria de control funciona entonces como un contador ordinal. Los
saltos pueden realizarse especializando un bit de la microinstrucción como indicador
afirmativo o negativo de salto y dejando el resto de la misma para albergar la dirección de
la próxima microinstrucción por ejecutar y, cuando sea el caso, la condición de salto.
Ventajas: simple de programar, no alarga la microinstrucción.
Desventajas: un salto ocupa por sí solo una microinstrucción (no me da microórdenes) y
desperdicia tiempo de ejecución. Por lo tanto solo es conveniente este método cuando haya un
porcentaje de microinstrucciones de salto pequeño.
 Direccionamiento explícito: Se fracciona la parte de microinstrucción que define a la
microinstrucción siguiente en 2 campos. El 1ro contiene de manera explícita los bits de
mayor peso de la dirección. El 2do contiene, bien directamente los bits de menor peso de
la dirección, si esta fuera conocida, o bien la dirección de un registro que los tenga
almacenados, si fuera condicional.
Ventajas: minimiza el número total de microinstrucciones, porque algunas son comunes a varios
microprogramas. No supone pérdida de tiempo en los saltos incondicionales.
Desventajas: es difícil de usar y aumenta la longitud de la microinstrucción.

Codificación de las microinstrucciones


Algunas consideraciones:
Meinadier dice que pueden concebirse 2 métodos extremos para pasar de la configuración binaria
de la microinstrucción a las microórdenes. Un método consistiría en asociar 1 bit de la
microinstrucción a cada microórden, como en el esquema de Wilkes. El otro consistiría en ahorrar
el número de bits de la palabra de control codificando la información de control y decodificándola
más tarde para producir las señales de control.
Stallings dice algo parecido. Según el podemos ver que el campo de señales de control de la
microinstrucción se encuadra dentro de un espectro. En un extremo hay un bit para cada señal de
control; en el otro extremo, se usa un formato muy codificado.

Codificación de la Mircroinstruccion: Se destacan dos métodos:


 Microinstrucción horizontal. Su formato es el siguiente:
 Consta de un bit para cada línea de control interna al procesador. Se activan todas las líneas de
control cuyos bits estén a 1; y se dejan inactivas todas las líneas de control indicadas con un 0.
 Consta de un bit para cada línea de control del bus del sistema.
 Hay un campo de condición que indica la condición bajo la cual debe producirse un salto. Si se
cumple la condición se salta a la dirección especificada, sinó, se pasa a la siguiente
microinstrucción secuencial.
 Un campo con la dirección de la microinstrucción a ejecutar cuando haya salto.

 microinstrucción vertical. A diferencia de la horizontal donde cada bit del campo de


control corresponde a una línea de control- se usa un código para cada acción a realizar, y
la decodificación traduce este código a señales de control individuales. Son más
compactas que las horizontales, a costa de añadir una pequeña lógica de decodificación y
cierto retardo temporal por debido a esto.

 La columna de la izquierda corresponde al primer caso tanto en lo dicho por Meinadier


como lo de Stallings, es decir una microinstrucción no codificada.
 Tiene el inconveniente de la exagerada longitud de la microinstrucción.
 Ofrece una visión más detallada del hardware, porque el microprogramador maneja
individualmente cada señal de control, lo que dificulta la programación.
 Se necesita poca o ninguna lógica de decodificación, porque cada bit genera un señal de
control individual. Esto lleva a una ejecución más rápida.
 Se explota completamente la concurrencia. Cada microinstrucción codifica todas las
microórdenes simultáneamente.
 La columna de la derecha corresponde a microinstrucciones muy codificadas.
 Proporciona microinstrucciones de poca longitud, por lo que se gana en cuanto al
coste de la memoria de control, siempre que el número de palabras no fuera
excesivo.
 La codificación se hace de manera de agrupar funciones o recursos, y debido a
esto, el microprogramador ve el procesador a un nivel más alto, menos detallado,
lo que facilita la programación.
 Conforme se usan esquemas de codificación más compactos, se necesita una
lógica de decodificación más compleja, es decir que a pesar de que se gana en
cuanto a memoria, se pierde en cuanto a decodificador. Por lo tanto, la ejecución
de microinstrucciones codificadas es más lenta que las no codificadas.
 La concurrencia no se explota completamente, porque debido a la codificación no
se usan ciertas combinaciones que serían permisibles si no existiera esta.
En resumen, un diseño que cae hacia el extremo izquierdo del espectro se propone optimizar las
prestaciones de la unidad de control. Los diseños del extremo derecho están más interesados en
optimizar el proceso de microprogramación.

Codificación
En la práctica, no se usa un formato de microinstrucción horizontal o no codificado puro. Siempre
existe algún grado de codificación para reducir el ancho de la memoria de control y simplificar la
microprogramación.
La técnica básica consiste en que la microinstrucción se organiza como un conjunto de campos, y
la decodificación de cada uno activa una o más señales de control. Así, con N campos, se
especifican N acciones simultáneas, y cada acción se traduce en la activación de una o más señales
de control.

Un campo con L bits puede contener uno de los 2L patrones diferente de señales de control.
Se pueden clasificar los métodos de codificación como funcional y por recursos.
 El método de codificación funcional identifica funciones dentro de la máquina y designa
los campos según el tipo de función. Por ejemplo, si se pueden utilizar varias fuentes para
la transferencia de datos al acumulador, se puede utilizar un campo para este propósito,
especificando cada código una fuente diferente.
 La codificación por recursos ve a la máquina como un conjunto de recursos independientes
y le dedica un campo a cada uno de ellos (por ejemplo, E/S, memoria, ALU).
Otro aspecto de la codificación es si esta es directa o indirecta. La directa la vimos arriba.
 En la indirecta se utiliza un campo para determinar la interpretación de otro campo. Por
ejemplo, consideremos una ALU capaz de realizar 8 operaciones aritméticas y 8
operaciones de desplazamiento diferentes. Se podría usar un campo de un bit para indicar
si se trata de una operación aritmética o de desplazamiento, y un campo de tres bits
podría indicar la operación. Generalmente esta técnica implica dos niveles de
decodificación, y más retardo.

Las siguientes figuras son un ejemplo. La 1ra muestra un formato muy vertical. Los 3 primeros bits
indican el tipo de operación, los 3 siguientes codifican la operación, y los 2 últimos seleccionan un
registro interno. La 2da es una solución más horizontal, aunque todavía usa cierta codificación. En
este caso, las funciones diferentes aparecen en campos diferentes.
Ventajas e Inconvenientes de la microprogramación
La ventaja principal que aporta el uso de la microprogramación para implementar una unidad de
control es que simplifica su diseño. Por consiguiente, su implementación resulta más barata y
menos propensa a errores. Una unidad de control cableada contendrá lógica compleja para hacer
el secuenciamiento a través de las muchas microoperaciones del ciclo de instrucción. Por otra
parte, los decodificadores y la unidad lógica de secuenciamiento de una unidad de control
microprogramada son elementos lógicos muy sencillos.
El principal inconveniente de una unidad microprogramada es que será algo más lenta que una
unidad cableada de tecnología comparable. A pesar de ello, la microprogramación es la técnica
dominante para implementar unidades de control en las arquitecturas CISC puras, debido a su
facilidad de implementación. Los procesadores RISC, dado que tienen un formato de instrucción
más sencillo, emplean normalmente unidades de control cableadas.

Los intercambios de información con el Exterior:


Terminología:
Canal: capacitan para transferencias de información entre el calculador y cualquier unidad externa.
Unidad de control o de enlace: gobiernan a uno o varios periféricos de una determinada clase,
siguiendo las órdenes del calculador.

Simultaneidad entre procesamientos y entradas salidas:


El problema radica en la diferencia de velocidad entre la ejecución de las instrucciones del
programa en el computador y los ritmos de transferencia mucho más lentos impuestos por los
periféricos. Introduciremos cronológicamente las diferentes ideas articuladas para resolver el
problema de la simultaneidad:

Modo Bloqueado: el calculador ejecuta el programa de E/S esperando, a cada nueva instrucción
de transferencia, que el elemento periférico esté disponible.
Supongamos que queremos grabar n palabras a un periférico determinado: debemos programar
una instrucción de E/S, cuya ejecución seleccione el periférico deseado y lo ponga en
funcionamiento, luego debemos programar n veces la salida de una palabra, que al ejecutarse
transfiere la palabra al registro tampón de la unidad de control del periférico. La computadora
pasara automáticamente a la siguiente instrucción, que es la siguiente salida, pero encontrara que
el periférico se encuentra ocupado finalizando la previa transferencia. Esto obliga al computador a
esperar hasta que el periférico se libere, encontrándose así el computador “bloqueado” y con
mucho tiempo ocioso.
Modo por Prueba de Estado: la técnica consiste en incluir en el código varios puntos en los que se
testea si el periférico está disponible, con el objetivo de realizar la trasferencia en ese momento,
minimizando así el bloqueo, pero es tan impráctica que solo sirve para casos muy puntuales.
Modo por Interrupción de Programa: se le quita al computador la tarea de verificar el estado de
los periféricos y son estos los que interrumpen la ejecución para avisar que están disponibles y
realizar sus transferencias (el programa de trasferencia se ejecuta con prioridad). Este modo
permite una cierta simultaneidad.
Modo Canal o Automático por suspensión de programa: se crean las unidades automáticas de
intercambio o canales, que toman completamente a su cargo la transferencia de todo un bloque
de información.
Cuando el canal necesita intercambiar una información con la memoria no produce una
interrupción de programa, sino simplemente una solicitud de servicio para que se le conceda un
ciclo de memoria, con objeto de realizar dicho intercambio. Puede suceder que el programa en
ejecución no pida acceso al mismo bloque en el mismo instante, en ese caso la ejecución no se ve
afectada. En caso contrario, se suspenderá el desarrollo del programa durante el ciclo de memoria
solicitado por el canal. La simultaneidad es casi total.
La operación de E/S se realiza de la siguiente forma:
1. El programa inicializa la operación. Las instrucciones proveen al canal toda la información
necesaria para la operación: número y emplazamiento de los datos a transferir, dirección
de la unidad de E/S, condiciones de finalización de transferencia, etc.; una instrucción
especial lanza la trasferencia y el programa continua independientemente.
2. La ejecución se ejecuta al ritmo del periférico bajo el control del canal, que roba ciclos de
memoria.
3. El canal avisa que la transferencia ha acabado generalmente mediante una interrupción.
Se distinguen dos tipos de canales:
- Simples: solo pueden gestionar una operación de transferencia a la vez.
- Multiplados en el tiempo: gestionan varias transferencias simultáneamente.

Encadenamiento automático de las transferencias: se concibe al canal como una unidad


poseedora de su propio programa.
La unidad central generara en memoria central un Programa Canal (o de control de E/S),
definiendo las diferentes transferencias a realizar por el canal. Para lanzar la transferencia la
unidad central brinda la dirección de dicho programa al canal que se encargara a continuación de
la ejecución completa.
Esta técnica permite encadenar varias transferencias sin intervención de la unidad central. Esto se
llama Encadenamiento. Hay dos clases:
- Encadenamiento de Datos: después de transferir los datos desde o hacia una tabla de
memoria permite pasar automáticamente a otra tabla.
- Encadenamiento de funciones: permite hacer ejecutar sucesivamente varias transferencias
sobre varios registros diferentes en un mismo periférico.
Interfase: es la caja negra que permite adaptar las señales del periférico a las especificaciones de
la interfase ordenador.
Está formada físicamente por un numero de conectores, salidos del canal, en los cuales puede
enchufarse. Básicamente la interface tiene dos tipos de hilos:
- Hilos de Información: llevan en paralelo la información a transferir, como niveles.
- Hilos de Gobierno y Sincronización, que permiten el dialogo entre las dos unidades
interconectadas.

Salida de Información:
1. La unidad de intercambio posiciona la señal de nivel E/S para indicar que se trata de una
salida de información.
2. Posicionara la información por salir en forma de niveles en las líneas de información de IN 0
a INn
3. Enviara el impulso DEM (demanda de servicio) y permanecerá a la espera.
4. El periférico reconocerá la demanda DEM.
5. Probara el hilo de gobierno E/S para saber la operación.
6. Como E/S = 1, el periférico muestreara los hilos de información IN 0 a INn (con un impulso
que abre la entrada al registro tampón del periférico).
7. Ese impulso también puede usarse para enviar al canal una señal de que la información
fue muestreada.
Entrada de Información:
1. El canal pondrá E/S a 0
2. Enviara un impulso DEM.
3. La solicitud de entrada será reconocida por el periférico.
4. El periférico actuara los niveles de información IN0 a INn
5. Luego enviara la señal de acuerdo ADEM.
6. La lectura será realizada luego de la recepción de ADEM.
θ1: retardo de la señal DEM en relación con la apertura de las puertas de nivel de salida de
información al exterior (el canal permanece bloqueado esperando al periférico).
θ2: tiempo durante el que la información de salida permanece disponible, tras recepción de ADEM.
θ3: tiempo durante el que la información suministrada por el periférico debe ser válida, tras el
envió de ADEM.

El multiplaje: permite concentrar varias vías de entrada en una sola o distribuir una vía de salida
en varias vías. Permite conectar varias unidades externas a un solo canal.
A veces se utilizara este método en los canales simples. El direccionamiento de las unidades
externas se efectuara en estrella, un hilo por unidad, después de decodificar la dirección en el
canal.

Líneas Ómnibus: también puede emplearse una sola línea para conectar varias unidades externas,
de la siguiente forma:
Si la unidad externa no resulta seleccionada, se comporta de forma transparente en lo que se
refiere a información, es decir que la transmite sin alterarla. En este caso el direccionamiento
puede realizarse siguiendo la técnica de estrella descripta más arriba o con a través de la línea de
ómnibus:
- Un hilo especial indica que la información emitida por el canal es una dirección.
- La unidad externa atravesada comprueba este hilo a cada transferencia.
- Si detecta que se trata de una dirección, entonces la compara con la suya propia.
- Si hubiera identidad entre ambas, la unidad externa se pone en estado de dialogo con el
canal, caso contrario transmite la información a la siguiente unidad.
Esta técnica de direccionamiento y de transferencia es empleado más que nada por los canales
multiplados en el tiempo.

Transferencia elemental: es la transferencia de una información (carácter o palabra) desde una


posición de memoria central a una unidad externa. Supone que se conozcan las siguientes
informaciones:
 Información pidiendo el lanzamiento: DEM.
 Indicación del sentido de la transferencia (entrada o salida): SEN.
 Dirección de almacenamiento en memoria de la información transferida: DIR.
Las diferentes técnicas de transferencia elemental dependen de la manera como se suministren al
computador estas tres informaciones.

Transferencia Programada: se ejecuta cuando el programa llega a una instrucción de transferencia.


El ordenador inicia la demanda de transferencia (DEM). Las informaciones complementarias son
suministradas por la instrucción, que puede adoptar 2 formas:
- ENT DIR: Entrar información y almacenarla en la dirección DIR.
- SAL DIR: Leer información almacenada de la dirección DIR y hacerla salir.

Transferencia por Instrucción Forzada: se inicializa en la unidad externa, que genera la instrucción
de E/S y fuerza la ejecución prioritaria en cuanto la unidad central concluya la instrucción en curso.
El programa queda suspendido durante el tiempo de ejecución de la instrucción.
Transferencia Por Robo De Ciclo: inicializa por petición de la unidad exterior. La unidad central
termina el ciclo de memoria en curso y concede el próximo ciclo a la unidad exterior. Esta indica si
se trata de una lectura o una escritura y proporciona la dirección de almacenamiento. El programa
se suspende durante un ciclo de memoria.

Transferencia Por Acceso Directo A Memoria: la memoria poseerá dos vías (muelles) de acceso y
una unidad de control de acceso a memoria. Una de las vías está reservada al ordenador (unidad
central), la otra a la unidad exterior.
Las peticiones de ciclo de memoria son dirigidas a la unidad de control de acceso a memoria
provengan de la unidad central o de la unidad exterior. Esta unidad gestiona las prioridades de
acceso a memoria central.
Viéndolo desde la unidad externa el proceso es el mismo que el caso de Robo de Ciclo, con la
diferencia de que la solicitud es dirigida al controlador de acceso a memoria y no a la memoria
central directamente. El programa en curso no resulta suspendido durante el ciclo de memoria
solicitado, excepto que solicite un ciclo de memoria al mismo tiempo. Se acerca a la simultaneidad
total.
Tipos de Canal: existen diferentes tipos de canal. Es imposible dar una visión exhaustiva de todos,
por eso aquí se hablara de ejemplos ficticios, ilustrando con ello las etapas de la evolución de los
mismos.

“Canal” Enlace programado: no es un canal propiamente dicho, sino un método de acceso


controlado por programa (cada transferencia elemental está gobernada por una instrucción de
programa). Los enlaces se hacen en modo bloqueado o de interrupción de programa.
Son necesarias 4 instrucciones de E/S para realizar las transferencias:
- SAL M y ENT M: respectivamente salida de información de la dirección M hacia la interfase
y entrada de información desde la interfase a almacenar en la dirección M.
- GCP: gobierno de periférico, saca la configuración binaria presente en la parte de dirección
de la instrucción a las líneas de salida de control y dirección.
- PRE: prueba de estado: que almacena en el AC el contenido de las líneas de entrada de
estados.
La instrucción GCP permite direccionar a una unidad de control de periférico y especificar la
operación, PRE entonces permite adquirir una información descriptiva de dicho periférico.
Como ejemplo cuando se ejecuta SAL:
- La información queda memorizada en el registro M hasta ser tomada.
- Las puertas SRM (salida de registro M) y SRI (salida de información) permanecen abiertas.
- La señal SI (orden que indica información posicionada en líneas de salida) permanece
activa.
- El computador envía al controlador del periférico (escogido previamente) una señal DEM.
- Si el periférico está disponible, comprueba los hilos de órdenes, nota que es una salida,
muestrea la información y devuelve una señal ADEM (informando que termino).

Canal Automático (Modo Canal): es capaz de gestionar el conjunto de las operaciones E/S sin
intervención de la unidad central, excepto para iniciar y concluir dicha operación. Las
transferencias elementales pueden ser realizadas por instrucción forzada, por robo de ciclo o por
acceso directo a memoria. Son los llamados canales simples (gestionan una sola operación a la
vez).
Explicaremos este canal usando transferencia por robo de ciclo. La operación de entrada salida
entonces quedaría definida por:
- El sentido de la transferencia (entrada o salida).
- La zona de memoria de las informaciones por transferir. Que puede delimitarse con la
dirección de la primera palabra (DIR) y el número de palabras (CDP: contador de palabras).
Pasos de una E/S:
- La unidad central inicializa la operación, por programa.
- Selecciona el periférico (indicando además el sentido de la transferencia).
- Carga las informaciones que definen la zona de memoria en 2 registros del canal, DEC
(dirección en curso) y CDP (conteo de palabras).
- Una vez inicializado, la operación de E/S se desarrolla al ritmo del periférico.
- La unidad periférica es el que solicita las transferencias elementales al canal, usando el
contenido de DEC como dirección.
- Luego incrementa en 1 el contenido de DEC y decrementa en 1 el contenido de CDP.
- Cuando CDP llega a cero la transferencia termina.
- En ese momento el canal genera una interrupción para indicar a la unidad central que la
operación de E/S concluyo.

Canal Con Encadenamiento De Datos: consiste en efectuar la carga de los registros DEC y CDP
bajo el control del canal, de tal forma que pase de una zona a otra dentro de la operación de E/S
sin implicar a la unidad central. Para ello se deben añadir dos informaciones binarias:
- IT: interrupción.
- ED: encadenamiento.
Suponiendo que las informaciones de control caben en dos palabras de máquina y que, si hubiera
encadenamiento, las nuevas palabras de control se encontraran al final de la zona.
La operación de E/S sigue el siguiente patrón:
- La Unidad Central carga la doble palabra de control 1 en los registros de canal.
- La Unidad Central Inicia la transferencia.
- El canal transferir la primera zona.
- El canal carga las palabras de control 2, porque ED es positivo.
- Se transfiere la segunda zona.
- Como IT está en 1 se genera una interrupción.
Programa De Canal: este canal es una unidad programable, capaz de leer, decodificar y ejecutar
un programa de gobierno de E/S, registrado en la memoria central, con los mismos derechos que
la unidad central.
Vamos a describir la forma de un programa de canal en una unidad de intercambio usando esta
terminología:
- La unidad central lee, decodifica y ejecuta instrucciones.
- El canal lee, decodifica y ejecuta instrucciones de canal.
- El controlador de periférico recibe, decodifica y ejecuta códigos de operación periférica.
El programa de canal permite el encadenamiento de datos y el de instrucciones de canal.
El encadenamiento de instrucciones de canal logra el encadenamiento automático de operaciones
de E/S de diferentes registros.
Ejemplo de E/S:
- En la ejecución del programa de la unidad central, se genera en memoria una lista de
instrucciones de canal. Este es el llamado “programa de canal”.
- La unidad central ejecuta la instrucción de inicio de E/S que brinda al canal la dirección del
periférico y la de la primera instrucción del programa de canal.
- Si el periférico está libre, se pone en actividad, sino la unidad central avisa al canal que no
debe comenzar el programa de canal aun.
- Si está libre, entonces se envía la dirección de la primera instrucción al canal y se almacena
en el registro contador de programa del canal.
- La instrucción se realiza sin intervención de la unidad central.El canal buscara en memoria
la primera instrucción de canal, con este formato:

- El canal transmite al controlador del periférico el código de operación que le corresponde


y con esto queda inicializada la operación de E/S.
- Las demandas de transferencia elemental se envían desde controlador del periférico (que
trabaja a su propio ritmo).
- Al tratar estas demandas el canal efectúa la transferencia y luego actualiza DIR y CDP.
- La transferencia termina cuando sea cero el contenido de CDP.
- El canal entonces comprobara los indicadores:
 Encadenamiento de Datos: si esta en 1, el canal pasara a la siguiente instrucción
de canal, ignorando el nuevo Código de operación periférica.
 Encadenamiento de Gobierno: si esta en 1, el canal pasara a la siguiente
instrucción de canal, utilizando el nuevo Código de operación periférica.
 Interrupción: si está en 1, se genera una interrupción al final de la transferencia.
Canal Multiplado en el tiempo: es capaz de gestionar simultáneamente varias transferencias
entre memoria y periféricos. Cada transferencia es controlada por un programa canal.
Existirá, asociado a cada controlador de periférico un subcanal que conservara las informaciones
debe utilizar el canal en el curso de la ejecución de una instrucción de canal. Entre estas
informaciones se encuentran:
- Dirección en curso
- Contador de palabras
- Indicadores de encadenamiento
- Interrupciones
Al transferir información entre la memoria central y un periférico:
- son transmitidas las informaciones de control al canal por el subcanal asociado
- y devueltas después de utilizadas (dirección en curso incrementada y contador de palabras
decrementado).
Todo sucede como si los circuitos del canal fueran comunes al conjunto de los subcanales, y estos
fueran solo una memoria para almacenar las informaciones específicas de una operación.
Las transferencias se superponen en el tiempo, entonces el canal solo permanece enlazado a un
periférico el tiempo que dura la transferencia elemental.

Canal Multiplado por Bloques: es un canal simple, usado principalmente con discos rápidos.
Supongamos discos rápidos con una cabeza por pista. Cada pista está dividida físicamente en
sectores y un registro comprende uno o varios sectores.
Los sectores de igual radio portan el mismo número de sector, cualquiera sea su pista.
Cuando se inicia una orden de transferencia debe esperarse a que el sector direccionado pase por
debajo de la cabeza de lectura-escritura y el tiempo de lectura es en promedio igual a la mitad de
duración del giro del disco. Este canal trata de usar el tiempo de espera para efectuar otra
transferencia. Funciona de la siguiente forma:
a. El canal tiene un conjunto de registros que almacenan las direcciones de los primeros
sectores a los que afecten las diferentes instrucciones de canal de los programas de
entrada salida.
b. El controlador tiene la posibilidad de identificar el número del sector que va a pasar
enseguida bajo la cabeza de lectura-escritura y de transmitirlo al canal.
c. Un dispositivo de comparación compara el número del sector que va a activarse con los
números de los sectores direccionados, y capacita al canal a atender con prioridad las
operaciones que tomaran menor tiempo de espera.

Canal Flotante (unidad de intercambio flotante): los periféricos más rápidos bloquearían por si
solos a un canal multiplado: por eso se les conecta un canal selector. Se puede tener varios canales
selectores y agrupar los periféricos a los mismos. Aun así los periféricos conectados al mismo canal
no pueden funcionar a la vez.
Este canal es en realidad un conjunto de canales selectores y de controladores de periféricos,
interconectados entre sí, de forma que cualquier canal puede direccionar a cualquier controlador
y mantenerlo conectado durante la operación de E/S.
Esta organización tiene dos niveles de selección:
1. Uno situado ente la unidad central y los canales, permite a la unidad central seleccionar el
primer canal libre de la lista de los canales, cada vez que inicia una operación de E/S.
2. Otro llamado intercambiador de entrada salida, permite al canal ya seleccionado,
conectarse a la unidad periférica direccionada por la instrucción de inicio de E/S.

Arquitecturas de Computadoras:
Instrucciones Simples: por ejemplo suma o resta de numero almacenados en registros de la CPU.
Luego de ser decodificadas se ejecutan en un solo pulso de reloj.

Instrucciones Complejas: como movimientos de cadenas de caracteres de longitud extensa y


variable en procesamiento de textos. Como primer resultado, estas instrucciones, tienen un
puntero al microprograma de dicha instrucción compleja, requieren para su ejecución un numero
de pulsos que dependerá de la secuencia de pasos de dicho microprograma.
Cada paso ejecuta un microcodigo (de la memoria central del procesador) el cual activa los
circuitos que intervienen en dicho paso.

CISC (Complex Instructions Set Computer):


Son procesadores que pueden ejecutar tanto instrucciones simples como instrucciones complejas.
Se busca lograr el llamado “salto semántico”, es decir, lograr que las sentencias en lenguajes de
alto nivel y lenguaje de maquina sean fácilmente equiparables, haciendo así los lenguajes de alto
nivel más fáciles de producir y los tiempos de compilación más reducidos.
Necesariamente debe tener una Memoria de Control con los microcodigos para ejecutar las
instrucciones complejas.
Un set de instrucciones CISC tiene alrededor de 210 instrucciones. Estas ocupan distinto número
de bytes en memoria, por lo tanto las instrucciones tienen un “formato variable”.
Como sus instrucciones ocupan distinto número de pulsos de reloj no puede usarse la técnica del
“pipeline” (explicada después).
Puede tener más de una docena de modos de direccionamiento. En CISC, pasa que el set de
instrucciones admite múltiples modos de obtención del dato (direccionamiento) y, por lo tanto, un
mismo verbo (por ejemplo ADD) tendrá en el set tantas instrucciones distintas como modos de
direccionamiento acepte.
La mayor desventaja es que las operaciones complejas pierden tiempo en la búsqueda de los
punteros para comenzar su ejecución, mientras que las simples no tienen este tiempo agregado.
En CISC se tiene pocos registros internos, lo que implica tener instrucciones para guardar en
memoria el contenido de registros a fin de usarlos en otra cosa, y otras para restaurar esos
contenidos. Esto a su vez lleva a un mayor tiempo de ejecución.

RISC (Reduced Instructions Set Computer): La filosofía RISC establece una serie de principios de
diseño que toda máquina debe tener:
 Una instrucción por ciclo, pocas instrucciones, simples = UC cableada
La falta de complejidad en la operación que realizan las instrucciones de los procesadores RISC
permite que se ejecute una instrucción máquina cada ciclo máquina.
Con un repertorio de pocas instrucciones, sencillas y de un ciclo, hay poca o ninguna necesidad de
microcódigo, a diferencia de las máquinas CISC que maneja la complejidad de sus instrucciones
máquina con una memoria de control de microprograma.
Esto a su vez posibilita que la unidad de control sea cableada y que las instrucciones máquina se
ejecuten más rápido que las de los CISC ya que no hay que acceder a la ROM de control.
La ausencia de ROM de control permite aprovechar ese espacio en el procesador para otras
funciones.
 Operaciones registro a registro.
Las operaciones aritméticas son registro a registro, es decir sobre datos contenidos en registros
internos, lo que permite que estas instrucciones tarden menos en ejecutarse al no tener que
acceder a memoria para buscar los operandos. La únicas excepciones son las instrucciones LOAD y
STORE, para cargar un registro desde memoria y guardar en memoria el contenido de un registro,
respectivamente. Esta forma de diseño simplifica el repertorio de instrucciones, y por tanto
también la unidad de control.
En RISC la mayoría de las instrucciones opera sólo sobre datos en registros internos, sin tener que
direccionar memoria, por lo que necesita solo 1 o 2 instrucciones para el mismo verbo.
 Muchos registros
Para soportar las operaciones registro a registro, se necesita un amplio banco de registros, de
manera que los operandos accedidos frecuentemente puedan permanecer en registros por largos
periodos de tiempo, sin necesidad de acceder a memoria. Las arquitecturas RISC tienen más
registros que las CISC, en general un mínimo de 32 registros.
 Modos de direccionamiento sencillos
Los modos de direccionamiento complejos y que requieren varios accesos a memoria (como en
CISC) tardan mucho en ejecutarse, atrasan la cadena de instrucciones y agrandan el set de
instrucciones. Una máquina RISC tiene como máximo 4 o 5 modos de direccionamiento. Esto
simplifica el repertorio de instrucciones (necesitamos 1 o 2 ADD en lugar de 25) y por lo tanto la
unidad de control.
 Formato uniforme y sencillo de instrucción
Generalmente se usa un formato o unos pocos, la longitud de las instrucciones es fija y la misma
para todas, las posiciones de los campos son fijas.
Todo lo anterior tiene varias ventajas: con campos fijos, la decodificación del código de operación
y el acceso a los operandos en registros puede hacerse simultáneamente. Los formatos sencillos
simplifican el decodificador y la unidad de control. Se optimiza la captación de instrucciones ya
que se captan unidades de una palabra de longitud (no se tiene instrucciones de más de una
palabra).
 Uso de arquitectura Harvard
En la arquitectura von Neumann, la CPU se conecta con una memoria única, donde coexisten
datos e instrucciones, a través de un mismo sistema de buses. Esto tiene 2 desventajas:
 El tamaño de los datos e instrucciones está fijado por el ancho del bus que
comunica la memoria con la CPU. Así con un bus de 8 bits, se tendrán que manejar
datos e instrucciones de una o más unidades de 8 bits (byte) de longitud. Si
quisiéramos acceder a una instrucción o dato de más de un byte de longitud,
tendríamos que realizar más de un acceso a la memoria.
 El procesador es más lento en su respuesta, ya que no puede buscar en memoria
una nueva instrucción mientras no finalicen las transferencias de datos de la
instrucción anterior, lo cual impide superponer ambos tiempos de acceso. Ósea, la
CPU puede estar bien leyendo una instrucción o leyendo/escribiendo datos
desde/hacia la memoria pero ambos procesos no pueden ocurrir al mismo tiempo,
ya que las instrucciones y datos usan el mismo sistema de buses.

En la arquitectura Harvard, la memoria de instrucciones y la memoria de datos son


independientes y cada una dispone de su propio sistema de buses para el acceso. Este aislamiento
y diferenciación tiene las siguientes ventajas:
 Al tener buses separados y de diferente tamaño, la longitud de los datos y las
instrucciones puede ser distinta, al igual que el tamaño de cada memoria,
debido a la diferencia de tamaño de los buses de direcciones. Entonces, al no
estar relacionados el tamaño de uno y otro, las instrucciones pueden
optimizarse para ocupar una sola posición de memoria de programa, evitando
acceder más veces a la memoria y logrando así mayor velocidad y menor
longitud de programa.
 Se puede acceder en forma simultánea e independiente a la memoria de datos
y a la memoria de instrucciones, por lo que podemos completar la ejecución
de una instrucción (memoria de datos), y al mismo tiempo leer la siguiente
instrucción a ejecutar (memoria de programa), logrando mayor velocidad.
Estas características favorecen a los procesadores RISC ya que:
 El set de instrucciones y el bus de memoria de programa pueden diseñarse de tal
manera que todas las instrucciones ocupen una sola posición de memoria de
programa de longitud, evitando accesos de más a la memoria.
 El hecho de tener memorias separadas para datos e instrucciones permite que
todas las instrucciones tengan la misma longitud, ya que no dependen de la
longitud de los operandos.
 Debido a que las instrucciones que realizan operaciones aritméticas referencian
operandos en registros en lugar de operandos en memoria, y los accesos a
memoria son solo para operaciones Load y Store, tiene sentido separar los buses
y las de instrucciones y datos (en este caso un banco de registros internos del
procesador) para que se puedan captar instrucciones y datos en paralelo,
facilitando la concurrencia de ambas actividades y favoreciendo el procesamiento
segmentado.

 Segmentación:
La segmentación o “pipeline” aprovecha la separación de las memorias de la arquitectura Harvard,
pudiendo buscar una instrucción (lo que implica a la memoria de programa) y al mismo tiempo
ejecutar la anterior (lo que implica una operación de la ALU entre registros, nuestra “memoria de
datos” en este caso). Es decir, la estructura segmentada del procesador permite solapar la fase de
ejecución de una instrucción y la de búsqueda de la siguiente, permitiendo que cada instrucción se
ejecute de manera efectiva en un ciclo, y aumentando así el número de instrucciones ejecutadas
simultáneamente en un determinado periodo de tiempo. Si bien la duración de cada una no se
reduce, si se reduce la duración del conjunto de ellas.

Esquema de Arquitectura Harvard (PIC16c84):


Caracteristicas CISC RISC
Memoria de Control Si No
Set de Instrucciones Amplio Reducido
Ciclos de Reloj por instrucción Indefinido 1o2
Acceso a Memoria Principal Si No, utiliza registros auxiliares
Mediante micro-instrucciones (salvo en Load y Store)
Pipe-Line No o Ineficiente Eficiente
Compiladores Simples Complejos
Formato de Instrucción Variable Fijo
Implementacion de Compleja Simple
Paralelismo en la Ejecucion de
Instrucciones
Velocidad de Procesamiento Reducida por los accesos a la Optimizada por el paralelismo
memoria de control de ejecución
Permite Moduclaridad y Si No
crecimiento del set de
instrucciones
Prediccion de Bifurcaciones No Si

Un Procesador Pentium Moderno:


 Microprocesador CISC, con características de procesamiento RISC. Es hibrido.
 Incluye Memoria de Control.
 Prediccion de Bifurcacion.
 Procesamiento Paralelo.
 Division de Cache (en cache de Datos y cache de Instrucciones)

Bibliografía:
Filminas del Ing. Vicente Martin
Filminas del Ing. Gustavo Maurokefalidis
Filminas de la Ing. Liliana Cuenca Pletsch
Apuntes realizados por los previamente mencionados y el Ing. Marcelo Karanik
Carpeta/Resumen de Gisel Marinoff (esto me facilito muchísimo la vida, gracias)
Stallings, W, Organización y Arquitectura de Computadores. Ed. Prentice Hall. 4º
Edición. 1.997
Meinadier, J. P., Estructura y Funcionamiento de los Computadores Digitales. Ed. AC.
1.975
Quiroga, Arquitectura de Computadoras, 1ra Edición
Martinez Dura, Boluda Grau, Perez Solano, Estructura de Computadores y Periféricos
Ginzburg, M.C. La PC por dentro, modelo de funcionamiento. Ed. Biblioteca Técnica
Superior - Bs. As. 1.996
Un libro muy bueno que no puedo identificar, que esta escaneado sin las primeras páginas y
cuyo nombre de archivo es “capitulo1-12.pdf”
Apunte de Arquitectura de Computadoras de la UNCa
Anexo 1:
2.5 Trazado de cronogramas
Hasta acá, solamente definimos las informaciones de ENTRADA al secuenciador (biestables de
estado, señales del distribuidor de fases, código de operación + bit de indirección).

Ahora debemos tratar las SALIDAS, que no son sino las microórdenes (SRM, ENI, ENS, etc.)

 Una primera etapa consiste en trazar el cronograma de cada instrucción, teniendo en


cuenta los tiempos de respuesta de los diferentes operadores, y de este cronograma se
deducen las microórdenes (señales de la ruta de datos) que deben activarse a cada batido
de reloj. Entonces por ejemplo agarramos SUM y hacemos el cronograma de su ejecución.
Esto nos ayuda a ver las microórdenes que deben activarse y en qué momento.
 Una segunda etapa consiste en relacionar la generación de las microórdenes del
cronograma anterior, no sólo con los batidos de reloj, sino también con las distintas
informaciones de entrada y estado del secuenciador, dando lugar a las ecuaciones lógicas
de la máquina, cuyos circuitos asociados definen completamente el secuenciador.

Vamos a hacer lo anterior tomando como ejemplo a Abacus, que está provisto de:

1- Un distribuidor de fases de 2 fases (abajo).


2- Decodificador de instrucciones descrito anteriormente.
3- De los biestables de estado definidos anteriormente. Se supondrá que el funcionamiento
del reloj está condicionado por la señal de detención-marcha, y que la puesta en marcha
inicializa el distribuidor de fases.
y en resumen, el objetivo es obtener las ecuaciones lógicas del secuenciador, que por cada
microórden de la ruta de datos, definen la combinación de entradas: bits de estado (I, O, AN y AP),
CO decodificados (sum, sus, and, or, alm, sap, sai, pac) mas bit de indirección, y señales del
distribuidor de fases (θ0, Θ0, θ1, Θ1) que debe cumplirse para activar esa microórden.
EJEMPLO: para instrucción SAP (salto si AC ≥ 0) su cronograma es:
Instante  0 :

 posicionar el biestable I (ciclo de instrucción) para indicar que


comienza un ciclo de instrucción
 lanzar un ciclo de memoria: ENS, ICM, PACM
 0  SI, ENS, ICM, PACM

Durante 0, sabiendo que se desarrolla un ciclo de


instrucción:

 mantener LEC para indicar que se trata de


una lectura
 abrir la puerta de salida de M
I .0  LEC, SRM

Instante 1 , todavía estamos en ciclo de


instrucción

 muestrear la entrada del registro de


instrucción (ENI)
 incrementar el contador de programa
(INCP) (AC ≥ 0) (AC < 0)
I. 1  ENI, INCP

Durante 1, sabiendo que se continua en ciclo


de instrucción

 mantener LEC para permitir la


regeneración de la información en
memoria
 después, tras la decodificación se sabe
que se trata de un salto si AC positivo,
por lo que se verifica AP

 enviar dirección de salto al bus S (SRD) y al


registro P (ENP)
1 . sap . AP  SRD después

0 . sap . AP  ENP
(AC ≥ 0)

 enviar contenido del contador de programa al bus S


(SRP)
1 . sap . AP  SRP
(AC < 0)
Operando
disponible en M

Duración máxima
de la operación

Tiene esa forma por el pequeño retardo en la decodificación


2.6 Ecuaciones Lógicas

En las ecuaciones lógicas, pasa al revés que con los cronogramas, donde definíamos, instrucción
por instrucción, las microórdenes a ejecutar en cada momento. Ahora lo que hacemos es tomar
una a una cada microórden, buscar todas las eventualidades en que debe ser activada y deducir la
expresión lógica que relaciona estas eventualidades, que no son otra cosa que entradas al
secuenciador.

Por ejemplo, analicemos cuando debe activarse la señal SRM:

1. En ciclo de instrucción durante el intervalo 0:


I . 0

2. En ciclo de operando de las instrucciones SUM, SUS, OR, AND durante todo el tiempo que dura
la operación en la ALU:
O . (0 + 1) . ( sum  sus  or  and )
Pero como (0 + 1) cubre el intervalo en que O está activado, valdrá siempre 1, por lo que no se
lo expresa. Además las instrucciones implicadas son todas aquellas que necesitan un ciclo de
operando excepto ALM , (en realidad tiene ciclo de operando pero no se usa SRM) por lo que
tendremos
O . alm

3. En el ciclo de búsqueda de la dirección efectiva del operando (palabra que contiene la


dirección efectiva del operando) en direccionamiento indirecto y mientras dura la señal 1
IND . 1
Como durante ese lapso, tanto I como O son cero tendremos:
IND . Ī . Ō . 1
Como son los únicos casos en que se activará la señal SRM, es decir en las microoperaciones (M)
→ I (caso 1), (M) → ALU (caso 2), (M) → S (caso 3), la ecuación lógica completa será:
SRM = I . 0 + O . alm + IND . Ī . Ō . 1

Como el mismo secuenciador posiciona los biestables I y O, tendremos:

 I debe ser posicionado a 1 al final del ciclo de operando:


SI   0  O
 I debe ser puesto a cero al final del ciclo de instrucción de aquellas instrucciones que
necesitan ciclo de operando:
RI   0  I  (sum  sus  or  and  alm)
 O debe ser puesto a 1 al final de un ciclo de instrucción cuando la instrucción requiere
ciclo de operando sin direccionamiento indirecto, o luego de la búsqueda de la
dirección del operando en caso de direccionamiento indirecto:
SO  IND  0  I  ( sum  sus  or  and  alm)  IND  0  I  O
 O debe ser puesto a cero al final del ciclo de operando:
RO   0  O
De esta manera, microórden por microórden, podemos deducir las expresiones lógicas del
ordenador (25 microórdenes):

ENS
=
0
ICM
=
0
PACM
=
0

= I  O  alm  ( I  O)
LEC
ESC = O  alm
SRM
= I . 0 + O . alm + IND . 1 . (Ī . Ō)
= IND  I  O  1
TMS
Instrucción de salto si AC ≥ 0 y AC positivo

= 1  I
ENI

= 1  I  (sum  sus  and  or  alm  sap  AP  sai)


SRD

= 1  I  ( pac  sap  AN)  1  O


SRP

= 1  I
INCP
Instrucción de salto si AC ≥ 0 y AC negativo
ENP
=
 0  (sap  AP  sai)
SUM = sum O
SUS = sus O
AND = and  O
OR = or  O
ENA
= O alm
EAC O  alm  0
=
PAC
=
pac  0
SAC
=
O   0  alm

= O 1  alm
ENM
SI
=
0  O
RI
=
 0  I  (sum  sus  or  and  alm)
SO = IND   0  I  ( sum  sus  or  and  alm)  IND   0  I  O
RO
=
0  O
Básicamente, el secuenciador de una computadora síncrona es un circuito secuencial que produce
las secuencias de microórdenes necesarias para la ejecución de las instrucciones, sincronizándolas
con los impulsos procedentes del reloj. Se lo puede fraccionar en 2 subconjuntos: por un lado,
unos elementos de memoria para poder marcar las diferentes fases del desarrollo de las
instrucciones (distribuidor de fases y biestables de estado posicionados por el secuenciador), por
el otro el circuito combinacional correspondiente a las ecuaciones lógicas.
En la realidad, la concepción del secuenciador no es tan sencilla, sobre todo cuando el conjunto de
instrucciones es grande y cuando gobierna operaciones secuenciales complejas. Ello nos lleva a
pensar en 2 niveles de control: un nivel central que distribuye microórdenes globales a los
distintos operadores y un nivel local, asociado a cada operador, para el gobierno de sus
operaciones internas.

Вам также может понравиться