Академический Документы
Профессиональный Документы
Культура Документы
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.
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:
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:
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.
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.
Multiplicación:
0x0=0
0x1=0
1x0=0
1x1=1
Ejemplo:
Numero=2301(4
Numero en decimal=2*43+3*42+0*41+1
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.
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
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
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ó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 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.
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:
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 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.
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
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.
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
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.
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:
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:
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.
(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.
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.
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
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.
- 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
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).
Punto de Memoria:
Punto de Memoria:
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):
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_____
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.
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.
Si β = 1010 (10)
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:
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
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.
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.
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.
Resumen:
(P) -> S SRP, ENS
((S)) -> M ICM, PACM, 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.
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 – Cronograma:
Resumen completo de la Suma en ABACUS:
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.
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.
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:
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:
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.
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.
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.
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.
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.
el código de operación
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.
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.
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.
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.
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
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.
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.
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 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 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:
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.
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.
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.
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.)
Vamos a hacer lo anterior tomando como ejemplo a Abacus, que está provisto de:
0 . sap . AP ENP
(AC ≥ 0)
Duración máxima
de la operación
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.
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
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
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.