DISPOSITIVOS DE ENTRADA Y SALIDA (UNIVERSIDAD MEXIQUENSE DEL BICENTENARIO )

|

MODELOS DE ARQUITECTURA DE LAS COMPUTADORAS

|
                                            Arquitecturas Clásicas.
Estas arquitecturas se desarrollaron en las primeras computadoras electromecánicas y de tubos de
vacío. Aun son usadas en procesadores empotrados de gama baja y son la base de la mayoría de las
arquitecturas modernas
                                Arquitectura Mauchly-Eckert (Von Newman)
Esta arquitectura fue utilizada en la computadora ENIAC. Consiste en una unidad central de proceso
que se comunica a través de un solo bus con un banco de memoria en donde se almacenan tanto los
códigos de instrucción del programa, como los datos que serán procesados por este. 
Esta arquitectura es la más empleada en la actualidad ya, que es muy versátil. Ejemplo de esta
versatilidad es el funcionamiento de los compiladores, los cuales son programas que toman como
entrada un archivo de texto conteniendo código fuente y generan como datos de salida, el código
maquina que corresponde a dicho código fuente (Son programas que crean o modifican otros
programas). Estos datos de salida pueden ejecutarse como un programa posteriormente ya que se usa la
misma memoria para datos y para el código del programa.

La principal desventaja de esta arquitectura, es que el bus de datos y direcciones  único se convierte en
un cuello de botella por el cual debe pasar toda la información que se lee de o se escribe a la memoria,
obligando a que todos los accesos a esta sean secuenciales. Esto limita el grado de paralelismo
(acciones que se pueden realizar al mismo tiempo) y por lo tanto, el desempeño de la computadora.
Este efecto se conoce como el cuello de botella de Von Newman
En esta arquitectura apareció por primera vez el concepto de programa almacenado. Anteriormente la La principal desventaja de esta arquitectura, es que el bus de datos y direcciones  único se convierte en
un cuello de botella por el cual debe pasar toda la información que se lee de o se escribe a la memoria,
obligando a que todos los accesos a esta sean secuenciales. Esto limita el grado de paralelismo
(acciones que se pueden realizar al mismo tiempo) y por lo tanto, el desempeño de la computadora.
Este efecto se conoce como el cuello de botella de Von Newman
En esta arquitectura apareció por primera vez el concepto de programa almacenado. Anteriormente la secuencia de las operaciones  era dictada por el alambrado de la unidad de control, e cambiarla
implicaba un proceso de recableado laborioso, lento(hasta tres semanas) y propenso a errores. En esta
arquitectura se asigna un código numérico a cada instrucción. Dichos códigos se almacenan en la
misma unidad de memoria que los datos que van a procesarse, para ser ejecutados en el orden en que se
encuentran almacenados en memoria. Esto permite cambiar rápidamente la aplicación de la
computadora y dio origen a las computadoras de propósito general
Mas a detalle, el procesador se subdivide en una unidad de control (C.U.), una unidad lógica aritmética
(A.L.U.) y una serie de registros. Los registros sirven para almacenar internamente datos y estado del
procesador. La unidad aritmética lógica proporciona la capacidad de realizar operaciones aritméticas y
lógicas. La unidad de control genera las señales de control para leer el código de las instrucciones,
decodificarlas y hacer que la ALU las ejecute. 
                                                Arquitectura Harvard
Esta arquitectura surgió en la universidad del mismo nombre, poco después de que la arquitectura Von
Newman apareciera en la universidad de Princeton. Al igual que en la  arquitectura Von Newman, el
programa se almacena como un código numérico en la memoria, pero no en el mismo espacio de
memoria ni en el mismo formato que los datos. Por ejemplo, se pueden almacenar las instrucciones en
doce bits en la memoria de programa, mientras los datos de almacenan en 8 bits en una memoria aparteEl hecho de tener un bus separado para el programa y otro para los datos permite que se lea el código
de operación de una instrucción, al mismo tiempo se lee de la memoria de datos los operados de la
instrucción previa. Así se evita el problema del cuello de botella de Von Newman y se obtiene un mejor
desempeño. 
En la actualidad la mayoría de los procesadores modernos se conectan al exterior de manera similar a a
la arquitectura Von Newman, con un banco de memoria masivo único, pero internamente incluyen
varios niveles de memoria cache con bancos separados en cache de programa y cache de datos,
buscando un mejor desempeño sin perder la versatilidad.
                                   Arquitecturas Segmentadas.
Las arquitecturas segmentadas o con segmentación del cauce buscan mejorar el desempeño realizando
paralelamente varias etapas del ciclo de instrucción al mismo tiempo. El procesador se divide en varias unidades funcionales independientes y se dividen entre ellas el procesamiento de las instrucciones. Para
comprender mejor esto, supongamos  que un procesador simple tiene un ciclo de instrucción sencillo
consistente solamente en una etapa de búsqueda del código de instrucción y en otra etapa de ejecución
de la instrucción. En un procesador sin segmentación del cauce, las dos etapas se realizarían de manera
secuencial para cada una de la instrucciones En un procesador con segmentación del cause, cada una de estas etapas se asigna a una unidad
funcional diferente, la búsqueda a la unidad de búsqueda y la ejecución a la unidad de ejecución. Estas
unidades pueden trabajar en forma paralela en instrucciones diferentes. Estas unidades se comunican
por medio de una cola de instrucciones en la que la unidad de búsqueda coloca los códigos de
instrucción que leyó para que la unidad de ejecución los tome de la cola y los ejecute. Esta cola se
parece a un tubo donde las instrucciones entran por un extremo y salen por el otro. De esta analogía
proviene el nombre en ingles: Pipelining o entubamiento. En general se divide al procesador
segmentado en una unidad independiente por cada etapa del ciclo de instrucción.

En teoría, el rendimiento de un procesador segmentado mejora con respecto a uno no
segmentado en un factor igual al numero de etapas independientes. Sin embargo, la mejora en el
rendimiento no es proporcional al numero de segmentos en el cauce debido a que cada etapa no toma el
mismo tiempo en realizarse, además de que se puede presentar competencia por el uso de algunos
recursos como la memoria principal. Otra razón por la que las ventajas de este esquema se pierden es
cuando se encuentra un salto en el programa y todas las instrucciones que ya se buscaron  y se
encuentran en la cola, deben descartarse y comenzar a buscar las instrucciones desde cero a partir de la
dirección a la que se salto. Esto reduce el desempeño del procesador y aún se investigan maneras de
predecir los saltos para evitar este problema.

                                      Arquitecturas  de multiprocesamiento.
Cuando se desea incrementar el desempeño más aya de lo que permite la técnica de segmentación del
cauce (limite teórico de una instrucción por ciclo de reloj), se requiere utilizar más de un procesador
para la ejecución del programa de aplicación. 
Las CPU de multiprocesamiento se clasifican de la siguiente manera: 
● SISO – (Single Instruction, Single Operand )  computadoras independientes
● SIMO – (Single Instruction, Multiple Operand )  procesadores vectoriales
● MISO – (Multiple Instruction, Single Operand )  No implementado
● MIMO – (Multiple Instruction, Multiple Operand ) sistemas SMP, Clusters

Procesadores vectoriales – Son computadoras pensadas para aplicar un mismo algoritmo numérico a
una serie de datos matriciales, en especial en la simulación de sistemas físicos complejos, tales como
simuladores para predecir el clima, explosiones atómicas, reacciones químicas complejas, etc., donde
los datos son representados como grandes números de datos en forma matricial sobr los que se deben se
aplicar el mismo algoritmo numérico.  
En los sistemas SMP (Simetric Multiprocesesors), varios procesadores comparten la misma memoria
principal y periféricos de I/O, Normalmente conectados por un bus común. Se conocen como
simétricos, ya que ningún procesador toma el papel de maestro y los demás de esclavos, sino que todos
tienen derechos similares en cuanto al acceso a la memoria y periféricos y ambos son administrados por
el sistema operativo.
Búsqueda Ejecución
Espera EsperaLos Clusters son conjuntos de computadoras independientes conectadas en una red de área local o por
un bis de interconexión y que trabajan cooperativamente  para resolver un problema. Es clave en su
funcionamiento contar con un sistema operativo y programas de aplicación capaces de distribuir el
trabajo entre las computadoras de la red.

OPERACIONES ARIMETICAS LÓGICAS

|
                                                OPERACIONES LÓGICAS





Operaciones Lógicas de Comparación. • La puerta lógica Y, más conocida por su nombre en inglés AND, realiza la función booleana de producto lógico. Su símbolo es un punto (•), aunque se suele omitir. Así, el producto lógico de las variables A y B se indica como AB, y se lee A y B o simplemente A por B. La ecuación característica que describe el comportamiento de la puerta AND es:
Su tabla de verdad es la siguiente:
Tabla de verdad puerta AND
Entrada A Entrada B Salida AB 0 0 0 0 1 0 1 0 0 1 1 1
Su definición se puede dar, como una compuerta que entrega un 1 lógico sólo si todas las entradas están a nivel alto 1. • La puerta lógica O, más conocida por su nombre en inglés OR, realiza la operación de suma lógica. La ecuación característica que describe el comportamiento de la puerta OR es:
Su tabla de verdad es la siguiente:
Tabla de verdad puerta OR
Entrada A Entrada B Salida A + B 0 0 0 0 1 1 1 0 1 1 1 1
Podemos definir la puerta O como aquella que proporciona a su salida un 1 lógico si al menos una de sus entradas está a 1.
• La puerta lógica O-exclusiva, más conocida por su nombre en inglés XOR, realiza la función booleana A’B+AB’. Su símbolo es el más (+) inscrito en un círculo. En la figura de la derecha pueden observarse sus símbolos en electrónica. La ecuación característica que describe el comportamiento de la puerta XOR es:
Su tabla de verdad es la siguiente: Tabla de verdad puerta XOR Entrada A Entrada B Salida A B
0 0 0 0 1 1 1 0 1 1 1 0 Se puede definir esta puerta como aquella que da por resultado uno, cuando los valores en las entradas son distintos. ej: 1 y 0, 0 y 1 (en una compuerta de dos entradas). Si la puerta tuviese tres o más entradas, la XOR tomaría la función de suma de paridad, cuenta el número de unos a la entrada y si son un número impar, pone un 1 a la salida, para que el número de unos pase a ser par. Esto es así porque la operación XOR es asociativa, para tres entradas escribiríamos: a (b c) o bien (a b) c. Su tabla de verdad sería: XOR de tres entradas Entrada A Entrada B Entrada C Salida A B C 0 0 0 0 0 0 1 1 0 1 0 1 0 1 1 0 1 0 0 1 1 0 1 0 1 1 0 0 1 1 1 1
• La puerta lógica NO (NOT en inglés) realiza la función booleana de inversión o negación de una variable lógica. La ecuación característica que describe el comportamiento de la puerta NOT es:
Su tabla de verdad es la siguiente: Tabla de verdad puerta NOT Entrada A Salida

OPERACIONES ARIMETICAS LÓGICAS

|
                               MULTIPLICACIÓN Y DIVISIÓN


                      
La multiplicación.

La multiplicación se puede calcular fácilmente mediante un algoritmo de sumas y desplazamientos. Si el multiplicando es de n bits y el multiplicador de m, entonces el producto es de n + m bits. La multiplicación en binario es muy sencilla ya que se trata de multiplicar por “1” ó por “0”. Veamos un ejemplo en sistema decimal y otro en sistema binario:

Ejemplo en sistema decimal:

Multiplicando 5 3 2

Multiplicador 4 3 1

________
2 5 3 2

1 5 9 6

2 1 2 8

Producto 2 2 9 2 9 2

Ejemplo en sistema binario:

Multiplicando 1 0 1 1

Multiplicador 1 1 0 1

___________
1 1 0 1 1

1 0 0 0 0

1 1 0 1 1

1 0 1 1

Producto 1 0 0 0 1 1 1 1

La división.

Podemos expresar la división como: Dividendo = Cociente x Divisor + Resto. El resto es más pequeño que el divisor y hay que reservar el doble de espacio de éste para el dividendo. Supondremos números positivos. Veamos un ejemplo:

Ejemplo 1:

Dividendo ! 1 0 0 1 0 0 1 1 1 0 1 1 ! Divisor

1 0 0 1 0 0 1 1 0 1 ! Cociente

1 0 1 1

0 0 1 1 1 0

1 0 1 1

0 0 1 1 1

1 0 1 1

0 1 0 0 ! Resto

OPERACIONES ARIMETICAS LÓGICAS

|
                                                 SUMA Y REGISTRO


                       
La operacion de SUMA usando los registros llamado SUMADOR (ADDER) en la ALU.
Este SUMADOR es un circuito digital que realiza la adicion de numeros, este circuito sumador lo encontramos en la ALU, donde tambien se realizan otro tipos de operaciones, los umadores mas comunes se especializan en numeros binarios.
La suma y la resta son operaciones de dos palabras de 1 bit de las que se obtiene una suma y un carry. Existen distintas formas de implementar la suma y la resta.
Operaciones de aritmética y lógica
Half-Adder. Half-Adder es capaz de sumar dos bits a la vez. Tiene dos entradas (es decir, A y B), y dos salidas (es decir, la suma S y acarreo C), S es dos bits “XOR” de A y B, mientras que C es la ‘Y’ de A y B. Es obligatorio que la salida de un Half-Adder es la suma de dos números de un bit, con C siendo el bit significativo de estas dos salidas.
Imagen: Un half-adder o sumador
A continuación tabla lógica de un Half-Adder
Sumador completo (FULL-ADDER). Un sumador completo que es capaz de añadir tres bits (es decir, dos bits y el acarreo de un poco de cálculo anterior).
Dispone de tres entradas llamadas generalmente como A, B y C para transportar, De esta manera, full-adders se pueden encadenar en cascada y pueden ser usados para sumar número muy grandes.
Entradas: (A, B, Carry In) → Salida: (Suma, Carry Out)
imagen: circuito sumador completo y su ecuación
La etapa final la puerta “O” de salida puede ser sustituido por una puerta “XOR” sin alterar la lógica resultante. Esto se debe a que la única diferencia entre las puertas “O” y “XOR” es cuando ambas entradas sean 1, sin embargo, no es el caso de la sumador que se muestra arriba. Se recomienda el uso de sólo dos tipos de puertas, a fin de aplicar el complemento directamente a través de chips de CI comúnes.
Imagen: representación simbólica de 1-bits FULL-ADDER
Un Full-Adder puede ser desarrollado a partir de dos half-adders mediante la conexión de A y B a la entrada de un half-adder.
La salida de un full-adder son bits suma aritmética de tres números de un bit.

OPERACIONES ARIMETICAS LÓGICAS

|
                                                           REPRESENTACIÓN INTERNA 
Esta ALU es una ALU de 2-bit con dos entradas (operandos) llamadas A y B: A[0] & B[0] corresponden al bit menos significativo y A[1] & B[1] corresponden al bit mas significativo.
Cada bit de esta ALU es identico con la excepcion del direccionamiento del carry bit. El manejo de este bit es explicado mas adelante.
Las entradas A & B van ubicadas hacia las cuatro compuertas de la izquierda (de tope a fondo): XOR, AND, OR, y XOR. Las tres primeras compuertas realizan las operaciones XOR, AND, y OR sobre los datos A & B. La ultima compuerta es la compuerta inicial de un sumador completo.
El paso final de las operaciones sobre cada bit es la multiplexacion de los datos. La entrada OP de 3-bit (de la unidad de control) determina cual de las funciones se van a realizar:
OP = 000 ¡ú XOR OP = 001 ¡ú AND OP = 010 ¡ú OR OP = 011 ¡ú Adicion Claramente se ve que las otras cuatro entradas del multiplexor estan libres para otras operaciones (subtraccion, multiplicacion, division, NOT A, NOT B, etc.). Aunque OP[2] no es usada en este montaje (a pesar de estar incluida y conectada), esta seria usada en el momento de realizar otras operaciones adem¨¢s de las 4 operaciones listadas arriba.
Los datos de carry de entrada y carry de salida normalmente van conectados a algun tipo de registro de estado.
Almacenamiento primario (memoria principal)
La seccion de almacenamiento primario (tambien llamado almacenamiento interno, almacenamiento principal, memoria principal) sirve para cuatro propositos
. Mantiene la transferencia de datos de un dispositivo I/O hacia el area de almacenamiento, donde permanecen hasta que la computadora esta lista para procesarlos. Esto esta indicado por las flechas solidas de la figura.
. Mantiene el procesamiento de los datos y el intermediar los resultados de las operaciones aritmeticas logicas.estee es un trabajo del area de almacenamiento dentro de la seccion de almacenamiento.
. Mantiene el procesamiento de los resultados en el area de salida de almacenamienro para transferirlo en un dispositivo I/O.

                                     

OPERACIONES ARIMETICAS LÓGICAS

|
                                                  REGISTROS

                                                         
                                                  
Función: „
                 Disminuir accesos a memoria en cálculos intermedios „
                  Control de la ejecución de programas „
Tipos: „
                 Visibles por el usuario „
                 Registros de direcciones y datos „
                  Puntero de pila (Stack Pointer, SP) „
Control interno del funcionamiento del µP „:
                  Contador de programa (Program Counter, PC)  „
                  Registro de instrucción (Instruction Register, IR) „
                  Registro de estado (Status Register, SR)