Professional Documents
Culture Documents
ertyuiopasdfghjklzxcvbnmqwert
yuiopasdfghjklzxcvbnmqwertyui
opasdfghjklzxcvbnmqwertyuiopa
sdfghjklzxcvbnmqwertyuiopasdf
Manual de Prácticas de Arquitectura de
Computadoras
ghjklzxcvbnmqwertyuiopasdfghj
Academia de Ingeniería Biomédica
klzxcvbnmqwertyuiopasdfghjklz
30/01/2019
xcvbnmqwertyuiopasdfghjklzxcv
MTI Mario Salvador Castro Zenil
bnmqwertyuiopasdfghjklzxcvbn
mqwertyuiopasdfghjklzxcvbnmq
wertyuiopasdfghjklzxcvbnmqwe
rtyuiopasdfghjklzxcvbnmqwerty
uiopasdfghjklzxcvbnmqwertyuio
pasdfghjklzxcvbnmqwertyuiopas
dfghjklzxcvbnmqwertyuiopasdfg
hjklzxcvbnmqwertyuiopasdfghjk
lzxcvbnmrtyuiopasdfghjklzxcvbn
TECNOLÓGICO NACIONAL DE MEXICO
p Instituto Tecnológico Superior de Pátzcuaro
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 máquina 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.
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 ocho bits en una memoria aparte.
El 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.
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.
En un procesador con segmentación del cauce, 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 inglés: Pipelining o entubamiento.
En este esquema sigue tomando el mismo número de ciclos de reloj (el mismo tiempo),
pero como se trabaja en varias instrucciones al mismo tiempo, el número promedio de
instrucciones por segundo se multiplica. La mejora en el rendimiento no es proporcional al
número 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 saltó. Esto reduce el
desempeño del procesador y aún se investigan maneras de predecir los saltos para evitar
este problema.
Pueden formarse con varios núcleos en un solo circuito integrado o con varios circuitos
integrados en una misma tarjeta madre. La primera opción ha sido popularizada al hacerse
más económicos los procesadores multinucleo de los principales fabricantes y con su uso
en sistemas de gama media y baja, e inclusive en teléfonos celulares y tabletas. La
segunda opción fue la que se uso en un principio y sigue siendo usada en en estaciones
de trabajo y en servidores de alto rendimiento debido a que incrementa el poder
computacional del sistema, pero también incrementa considerablemente el costo del
sistema.
Sin embargo, se debe tener cuidado al implementar la aplicación, ya que si los datos que
hay que pasar de un procesador a otro son demasiados, el tiempo empleado en pasar
información de un nodo a otro puede sobrepasar a la ganancia que se tiene al dividir el
trabajo entre varios procesadores.
1.2.1 CPU
1.2.1.1 Arquitecturas.
Esta escuela pretende aplicar un enfoque totalmente distinto al tradicional hasta entonces,
que pasó a conocerse como computadoras de conjunto complejo de instrucciones (CISC)
para diferenciarla de la nueva tendencia.
CISC vs RISC
La diferencia entre cisc y risc empieza a ser evidente por medio de la ecuación básica de
la eficiencia en cómputo:
1.2.1.2 Tipos.
Los CPUs modernos pueden clasificarse de acuerdo a varias características, tales como:
el tamaño del ALU o del Bus de conexión al exterior (8, 16, 32, 64 bits), si tienen cauce
pipeline, si son tipo CISC o RISC, Von Newmann o Harvard y si solo tienen instrucciones
enteras o implementan también instrucciones de punto flotante.
1.2.1.3 Características.
Las características más importantes a considerar al escoger un CPU para usarlo
(idealmente) en una aplicación, son:
Todos los CPU tienen como función principal la ejecución de un programa acorde a la
aplicación del mismo.
2- Decodificación.
Consiste en tomar el código numérico e identificar a cuál de las operaciones que puede
realizar el CPU corresponde dicho código.
• Esta etapa usualmente se realiza con un decodificador binario.
3- Ejecución.
En esta etapa se lleva a cabo la operación sobre los datos que se vayan a procesar.
En general, la unidad de control (UC) genera las señales de control necesarias para llevar
los datos a las entradas de la Unidad Aritmética Lógica, la cual efectuará las operaciones
aritméticas y lógicas.
1.2.2 Memoria.
Una memoria es un dispositivo que puede mantenerse en por lo menos dos estados
estables por un cierto periodo de tiempo. Cada uno de estos estados estables puede
utilizarse para representar un bit. A un dispositivo con la capacidad de almacenar por lo
menos un bit se le conoce como celda básica de. Memoria Un dispositivo de memoria
completo se forma con varias celdas básicas y los circuitos asociados para poder leer y
escribir dichas celdas básicas, agrupadas como localidades de memoria que permitan
almacenar un grupo de N bits. El número de bits que puede almacenar cada localidad de
memoria es conocido como el ancho de palabra de la memoria. Coincide con el ancho del
bus de datos. Uno de los circuitos auxiliares que integran la memoria es el decodificador
de direcciones. Su función es la de activar a las celdas básicas que van a ser leídas o
escritas a partir de la dirección presente en el bus de direcciones. Tiene como entradas las
n líneas del bus de direcciones y 2N líneas de habilitación de localidad, cada una
correspondiente a una combinación binaria distinta de los bits de direcciones. Por lo tanto,
Se produce bajo el control directo y continuo del programa que solicita la operación de
E/S. tanto en la entrada y salida programada como con interrupciones, el procesador es
responsable de extraer los datos de la memoria en una salida, y almacenar los datos en la
memoria principal. El problema con la E/S es que el procesador tiene
que esperar un tiempo considerable hasta que el modulo en cuestión esté preparado para
recibir o transmitir datos
más rápido. Es usada por el microprocesador para reducir el tiempo de acceso a datos
ubicados en la memoria principal que se utilizan con más frecuencia.
La caché es una memoria que se sitúa entre la unidad central de procesamiento (CPU) y
la memoria de acceso aleatorio (RAM) para acelerar el intercambio de datos.
Cuando se accede por primera vez a un dato, se hace una copia en la caché; los accesos
siguientes se realizan a dicha copia, haciendo que sea menor el tiempo de acceso medio
al dato. Cuando el microprocesador necesita leer o escribir en una ubicación en memoria
principal, primero verifica si una copia de los datos está en la caché; si es así, el
microprocesador de inmediato lee o escribe en la memoria caché, que es mucho más
rápido que de la lectura o la escritura a la memoria principal.
Se produce bajo el control directo y continuo del programa que solicita la operación de
E/S. tanto en la entrada y salida programada como con interrupciones, el procesador es
responsable de extraer los datos de la memoria en una salida, y almacenar los datos en la
memoria principal. El problema con la E/S es que el procesador tiene
que esperar un tiempo considerable hasta que el modulo en cuestión esté preparado para
recibir o transmitir datos
El programa genera una orden de E/S y después continúa ejecutándose hasta que el
hardware lo interrumpe para indicar que la operación ha concluido. La entrada y salida con
interrupciones, aunque es más eficiente que la sencilla, también requiere la intervención
activa del procesador para transferir los datos entre la memoria y el módulo de E/S.
El canal de entrada y salida representa una ampliación del concepto de DMA. Un canal de
entrada y salida puede ejecutarinstrucciones de entrada y salida, lo que le confiere un
control completo sobre las operaciones de entrada y salida. Un canal selector controla
varios dispositivos de velocidad elevada y en un instante dado, se dedica a transferir datos
a uno de esos dispositivos, es decir el canal de entrada y salida selecciona un dispositivo y
efectúa la transferencia de datos. Cada dispositivo o pequeño grupo de dispositivos es
manejado por un controlador o módulo de E/S, así el canal de entrada y salida se utiliza en
lugar de la CPU para controlar estos controladores de E/S. Un canal multiplexor puede
manejar la entrada y salida de varios dispositivos al mismo tiempo. Para dispositivos
de velocidad reducida, un multiplexor de byte acepta o transmite caracteres tan rápido
como es posible a varios dispositivos.
1.2.4 BUSES
El bus incluye los conceptos de enlace y conmutador, ya que permite en cada momento
seleccionar los dispositivos que se conectan a través suyo.
– Enlace: Elemento que permite transmitir información entre dos o más dispositivos.
– Conmutador: Elemento que permite encaminar la información entre varios enlaces,
activando unos e inhibiendo otros.
– Multiplexado temporal: Utilización de las mismas líneas del bus para enviar en
momentos distintos, informaciones distintas. En estos buses de incluyen señales
adicionales para identificar qué información está circulando por el bus en cada momento.
• Sistema Abierto:
– Sistema que permite acoplar placas de distintos fabricantes.
– Hasta hace unos años el estudio de los buses era algo que no se hacía, dado que cada
fabricante desarrollaba su propio bus.
• Ejemplo: bus compartido para direcciones y datos ahorro en Hardware y por lo tanto en
costos. Tipos de Buses
Los buses se componen de líneas eléctricas que transmiten un “0” (cero voltios) o un “1”
(más de cero voltios).
• Bus de CPU o “bus local” del procesador: elementos más rápidos tales como la memoria
caché.
• Bus local ó bus del Sistema (Front Side Bus): conecta elementos tales como la memoria
principal o dispositivos rápidos (por ejemplo AGP).
• Bus de expansión y/o E/S: PCI, USB, ATA, SCSI,...
1.2.5 Interrupciones
Una NMI puede ser generada por tres fuentes: Un flanco en el pin RST/NMI cuando está
configurado en modo NMI; un fallo en el oscilador o condiciones de error con el cristal
oscilador; violación acceso a la memoria flash, cuando se quiere leer o borrar la flash
desde la memoria RAM mientras BUSY=1, escritura del registro de control 1 (FCTL1)
mientras WAIT=0 o escritura registro de control 2 (FTL2) mientras BUSY=1.
Aceptación de una Interrupción el tiempo de aceptación de una interrupción son seis ciclos
de reloj, contando desde la aceptación de la petición de interrupción hasta el inicio de la
primera instrucción de larutina de servicio a la interrupción.
1) Finaliza instrucción en ejecución, si la interrupción está habilitada y el bit GIE=1 se
acepta la interrupción.
2) Se pone en pila PC.
3) Se pone en pila SR.
4) Se selecciona la interrupción más prioritaria de las que pidan servicio.
La interrupción debe terminar con la instrucción: RETI. El retorno tarda 5 ciclos en ejecutar
las siguientes acciones:
1) SR es retornado de pila
2) PC es tomado de pila y empieza la ejecución en la siguiente instrucción donde fue
interrumpido
Anidamiento de Interrupciones
La unidad aritmético lógica, también conocida como ALU(siglas en inglés de arithmetic logic
unit), es un circuito digital que calcula operaciones aritméticas (como suma, resta, etc.) y
operaciones lógicas (OR, AND, XOR, etc), entre dos números binarios. Es parte fundamental de
un microprocesador.
El método más simple y directo de diseñar un CIRCUITO LÖGICO de una ALU se muestra a
continuación, tal como se plantea en el texto "Lógica Digital y diseño de Computadores" de Morris
Mano para una etapa de 2 bits Ai y Bi.
El circuito debe repetirse n veces para un circuito lógico de n bits. Las cuatro compuertas
generan las 4 operaciones lógicas OR, OR EXCLUSIVA, AND y NOT. Las 2 variables de
selección en el Multiplexor seleccionan una de las 4 compuertas en la salida.
Al igual que el circuito lógico se puede diseñar un circuito aritmético, en el cual además
de las entradas Ai y Bi debe tenerse en cuenta el acarreo de entrada Ci, y en su salida
además de Fi, en este caso se agregaría el acarreo de salida Ci+1
El circuito lógico puede ser combinado en el circuito aritmético para producir una unidad
lógica aritmética. Las variables de selección S1 y S0 pueden hacerse comunes a ambas
secciones siempre y cuando se use una tercera variable de selección S2 para diferenciar
entre los dos.
Las salidas de los circuitos lógicos y aritméticos de cada estado pasan por un multiplexor
con la variable de selección s2 . Cuando S2=0 se. selecciona la salida aritmética, pero
cuando S2 = 1 se selecciona la salida lógica.
Luego se acoplan las 4 cajitas para formar la ALU de 4 bits, tal como se muestra:
En una forma similar a lo descrito, se ha diseñado una ALU comercial, el circuito integrado
74LS181, el cual estudiaremos a continuación. La mejor forma de estudiar un chip comercial antes
de implementarlo en el protoboard es analizar su tabla de funcionamiento de acuerdo a su hoja de
datos suministrada por el fabricante (Data Sheet) y efectuar su simulación.
La ALU 74181 se puede trabajar con cualquiera de dos tablas de funcionamiento. Una tabla con los datos
activos en nivel bajo y otra donde los datos son activos en nivel alto, tal como la que se muestra a
continuación: