Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
En este punto se ver con mayor profundidad cuales son los bloques que componen
un sistema microprogramable basado en el uso de una CPU. Esto incluye tanto a los
sistemas basados en microprocesador como los que utilizan microcontroladores.
Reloj
CPU
o Unidad Aritmtica-Lgica (ALU).
o Acumuladores y Registros.
o Unidad de Control (UC).
Memoria
Unidad de entrada/salida
Buses del sistema
a) Reloj
Para que el microprocesador genere todas las seales necesarias para controlar los
restantes bloques del sistema y para que todo el sistema est sincronizado (que cada
elemento funcione cuando le corresponde), se parte de ondas cuadradas de
frecuencia constante generadas normalmente por un cristal de cuarzo.
A partir de esta seal de reloj, se genera el denominado ciclo mquina, que est
formado por dos fases:
Este ciclo mquina tarda en realizarse mayor o menor tiempo, dependiendo del
fabricante. A veces para completar la ejecucin de una instruccin se requiere ms de
un ciclo mquina. El nmero de ciclos mquina necesaria para procesar por completo
una instruccin se denomina ciclo de instruccin.
b) CPU
Unidad Aritmtica-Lgica
Acumuladores y Registros
Unidad de Control
Est compuesta por un circuito combinacional complejo que se encarga de realizar las
operaciones aritmticas (suma, multiplicacin...), lgicas (AND, OR...)
desplazamientos, etc.
Estas operaciones son ordenadas por las instrucciones que se estn ejecutando, con
las informaciones presentes en los registros de entrada y/o en posiciones
determinadas de la Memoria Central y devuelve los resultados a los registros o a la
Memoria Central.
Acumuladores y registros
Registro acumulador.
Registro de estado.
Registros auxiliares.
Registro SP (Stack Pointer).
o La pila.
Registro CP (Contador de Programa)
Registros internos.
Registro acumulador
En una CPU, existen unos biestables denominados banderas o "flags" que cambian
de estado como consecuencia del resultado de la ltima operacin efectuada sobre el
registro acumulador. La estructura del registro de estado vara mucho de unos
sistemas a otros, tanto en la posicin que cada uno de los flag ocupa dentro del
registro, como en los tipos de informaciones que almacenan.
Registros auxiliares
Estos registros auxiliares o de uso general los puede utilizar el programador para
almacenar datos o resultados intermedios. El nmero de estos registros depende del
tipo de microprocesador.
La pila
La pila en los ordenadores personales es una zona de memoria, que es una parte de
la memoria central (RAM), de manera que se reserva un pequeo espacio de esta
para que funcione como una pila, denominndolo segmento de pila. Sin embargo, por
ejemplo en los microcontroladores PIC, se encuentra separada tanto de la memoria de
programa como de la de datos y est formada por registros. En todo caso, para
moverse por la pila, almacenar y recuperar los datos se utiliza el registro puntero de
pila o stack pointer.
La pila se utiliza para almacenar los datos de los registros internos cuando se salta a
una subrutina dentro de un programa para que no se pierda su contenido, ya que
probablemente necesite utilizar alguno de los registros internos.
Registros internos
Una vez decodificada la instruccin, la Unidad de Control generar todas las seales
de control necesarias para hacer funcionar al resto de elementos del sistema y que
todo vaya de una forma ordenada.
Memoria de programa
Este modelo de memoria slo se puede grabar una vez por parte del usuario,
utilizando el mismo procedimiento que con la memoria EPROM. Posteriormente no se
puede borrar. Su bajo precio y la sencillez de la grabacin aconsejan este tipo de
memoria para prototipos finales y series de produccin cortas.
iv) EEPROM
v) FLASH
Se trata de una memoria no voltil, de bajo consumo, que se puede escribir y borrar en
circuito al igual que las EEPROM, pero suelen disponer de mayor capacidad que estas
ltimas. El borrado slo es posible con bloques completos y no se puede realizar sobre
posiciones concretas. En las FLASH se garantizan al menos 1.000 ciclos de escritura-
borrado.
Memoria de datos
Los datos que manejan los programas varan continuamente, y esto exige que la
memoria que les contiene debe ser de lectura y escritura, por lo que la memoria RAM
esttica (SRAM) es la ms adecuada, aunque sea voltil.
Hay microcontroladores que tambin disponen como memoria de datos una de lectura
y escritura no voltil, del tipo EEPROM. De esta forma, un corte en el suministro de la
alimentacin no ocasiona la prdida de la informacin, que est disponible al
reiniciarse el programa. El PIC16C84, el PIC16F83 y el PIC16F84 disponen de 64
bytes de memoria EEPROM para contener datos.
Cuando el sistema necesita leer un dato de la memoria RAM, lo primero que hace es
indicar la posicin de memoria de donde desea obtener el dato. Dependiendo de si la
operacin que va efectuar es una lectura o una escritura, se pone a uno o a cero una
seal de lectura escritura (Read=1/Write=0). Si la operacin es de lectura, la memoria
entrega el dato deseado. Por el contario, si es de escritura, el dato se almacena en la
memoria.
Por este bus van a circular los bits (combinacin binaria) que seleccionaran la posicin
de la memoria o el registro de entrada/salida en el que deseamos leer o escribir. Este
bus tiene tantas lneas (conductores) como bits de direccin tenga el sistema. El
nmero de lneas que tiene un sistema basado en microprocesador depende del
fabricante y determina la cantidad mxima de memoria que puede direccionar el
sistema. El nmero total de direcciones de memoria que pueden direccionarse viene
dado por la frmula:
Como se puede observar en la figura, este bus es unidireccional. Es decir, las lneas
van en un nico sentido, siendo la CPU la nica que puede utilizarlo.
Habitualmente, las lneas del bus de direcciones se denominan con la letra inicial A (de
Address), poer ejemplo A15 (bit de mayor peso) A14 ... A1 A0 (bit de menor peso)
Por este bus circularan los bits que componen la informacin binaria, ya sean
instrucciones o datos contenidos en la posicin de memoria o en los registros de
entrada/salida, seleccionada por el bus de direcciones. Al igual que el bus de
direcciones, este tiene tantos hilos como bits tenga la palabra de datos con que opera
el sistema.
Por ejemplo, un microprocesador de 8 bits posee un bus de datos formado por 8 hilos.
Como podemos observar en la figura, este bus es bidireccional, es decir, que puede ir
en ambos sentidos. Esto es, porque los dispositivos pueden recibir informacin
(escritura) o enviarla (lectura), segn el estado de la lnea read/write del bus de
control. Habitualmente, las lneas del bus de datos se denominan con la letra inicial D
(de data), D7 (bit de mayor peso) D6 ... D1 D0 (bit de menor peso)
Este bus est formado por una serie de lneas denominadas lneas de control, por las
que va a circular el conjunto de seales necesarias para la correcta coordinacin de
todos los elementos del sistema, tales como: rdenes de lectura o escritura,
inhabilitacin (desactivacin) de un dispositivo, etc.
Cuando uno de los registros de entrada y salida recibe su direccin por el bus de
direcciones, el dispositivo se activa y segn la orden de leer o escribir presente en el
bus de control, pasan la informacin que contienen al bus de datos, o se cargan con la
informacin que contiene el bus de datos.
Por ejemplo, si deseamos enviar un dato por el puerto paralelo de un PC, lo primero
que haremos ser poner la direccin de ese puerto en el bus de direcciones. Como lo
que queremos es enviar, es decir, escribir, activaremos en el bus de control la seal de
escritura y, por ltimo, enviaremos por el bus de datos la informacin a sacar por dicho
puerto. Si, por el contrario, queremos leer un dato por el puerto paralelo, primero
enviaremos por el bus de direcciones la direccin donde se encuentra ese dispositivo.
Como deseamos leer su contenido, activaremos la seal de lectura del bus de control
y, por ltimo, el controlador de ese dispositivo nos pondr en el bus de datos su
contenido.
Las principales limitaciones que nos encontramos con la arquitectura Von Neumann
son:
Una de las memorias contiene solamente las instrucciones del programa (Memoria de
Programa), y la otra slo almacena datos (Memoria de Datos).
Ambos buses son totalmente independientes lo que permite que la CPU pueda
acceder de forma independiente y simultnea a la memoria de datos y a la de
instrucciones. Como los buses son independientes stos pueden tener distintos
contenidos en la misma direccin y tambin distinta longitud. Tambin la longitud de
los datos y las instrucciones puede ser distinta, lo que optimiza el uso de la memoria
en general.
Adems, al ser los buses independientes, la CPU puede acceder a los datos para
completar la ejecucin de una instruccin, y al mismo tiempo leer la siguiente
instruccin a ejecutar.
Ventajas de esta arquitectura:
Dentro de muy poco los usuarios dejaran de hacerse la pregunta RISC O CISC ?,
puesto que la tendencia futura, nos lleva a pensar que ya no existirn los CISC puros.
Realmente, las diferencias son cada vez ms borrosas entre las arquitecturas CISC y
RISC. Las CPU's combinan elementos de ambas y no son fciles de encasillar. Por
ejemplo, el Pentium Pro traduce las largas instrucciones CISC de la arquitectura x86 a
micro operaciones sencillas de longitud fija que se ejecutan en un nucleo de estilo
RISC. El UltraSparc-II de Sun, acelera la decodificacin MPEG con unas instrucciones
especiales para grficos; estas instrucciones obtienen unos resultados que en otros
procesadores requeriran 48 instrucciones.
Por lo tanto a corto plazo, en el mercado coexistirn las CPU's RISC y los
microprocesadores hbridos RISC - CISC, pero cada vez con diferencias ms difusas
entre ambas tecnologas. De hecho, los futuros procesadores lucharan en cuatro
frentes:
CPU.
a) MIPS
Los MIPS son los millones de instrucciones por segundo que ejecuta un procesador
para un programa determinado. La ventaja de esta unidad de medida es su fcil
comprensin ya que un mayor nmero de MIPS indicar una mayor velocidad de la
mquina. Sin embargo, no es una medida buena ya que puede producir resultados
errneos, un mismo programa en un mismo computador puede dar resultados
diferentes segn el programador o el repertorio de instrucciones utilizadas, adems los
MIPS pueden variar inversamente al rendimiento.
Los Megaflops nativos tampoco son fiables, ya que dependen mucho de programas y
tipos de computadores. Tuvieron muchas crticas los fabricantes de computadores,
porque, hay computadores que solo tienen operaciones sencillas (ADD, SUB, MUL) y
generan pocas operaciones en coma flotante, en cambio hay otros computadores que
tienen ms operaciones en coma flotante (DIV, SQRT, EXP, SIN, ...). Las operaciones
sencillas tardan menos en ejecutarse que las operaciones complejas, por lo que
apareci el concepto de Megaflops relativos.
benchmark sintticos
benchmarks reducidos
benchmark kernel o de ncleo
programas reales
La parte de salida, por el contrario, consiste en una serie de registros en los que el
sistema deposita el resultado de la informacin ya procesada. Al igual que sucede en
un sistema abierto con la Memoria Central, la Unidad de E/S es un elemento que no
est en el interior del microprocesador, pero si dentro de un microcontrolador.
Por tanto, los dispositivos de entrada/salida son una de las partes fundamentales de la
arquitectura del computador y su objetivo es la eficiencia en la gestin de las
operaciones de entrada/salida, descargando a la CPU de tanto trabajo como sea
posible. Estos dispositivos tienen velocidades muy variadas:
Existen 2 formas bsicas de conectar estos circuitos de interfaz, dependiendo del tipo
de Procesador en que se base la arquitectura. Ambos tipos de acceso requieren que la
CPU realice el movimiento de los datos entre el perifrico y la memoria principal:
Para memoria
Para dispositivos de E/S
Un puerto I/O tiene una apariencia de celda de memoria para el computador, pero
tiene conexiones con el mundo exterior. Los puertos de entrada/salida se clasifican
habitualmente en tres tipos diferentes:
Por regla general, los puertos de entrada/salida utilizan un latch como elemento de
memoria. Por ejemplo, en el caso de un puerto de solo escritura el latch captura los
datos escritos en l por la CPU y los hace disponibles en un conjunto de cables
externos a la CPU y al sistema de memoria. En este tipo de puertos la CPU no puede
leer el dato que ha escrito en el latch ya que para que ste funcione deben estar
activas tanto la lnea de direcciones como la de control, y en el caso de querer realizar
una lectura la lnea control de escritura (write control) no estara activa. La figura
siguiente muestra una posible implementacin de un puerto de solo escritura con un
latch. Si el puerto es de lecturaescritura, la CPU puede comprobar que el dato se ha
escrito correctamente leyendo del puerto. Un puerto de entrada/salida se comportara
como se describe en la figura (la parte inferior de la figura correspondera a un puerto
de solo lectura (input port)). Los datos que se escriban en un puerto de solo lectura
son ignorados por el sistema.
Ya hemos visto que para coordinar el envi de datos entre la CPU y los dispositivos se
usan circuitos de interfaz especiales. Existen bsicamente tres formas de realizar la
gestin de entrada/salida en un dispositivo, es decir, tres formas en que estos circuitos
de interfaz pueden operar:
El polling, utilizado en las primeras computadoras personales (como Apple II), consiste
en que la CPU sondea peridicamente al dispositivo para ver cual es su estado. Ese
sondeo se puede hacer, por ejemplo, leyendo de una direccin de entrada/salida
correspondiente a uno o varios registros de estado del dispositivo. Los bits de esos
registros de estado nos dirn cual es la situacin concreta del dispositivo (por ejemplo,
si se trata de una impresora, podemos saber si esta lista para recibir nuevos
caracteres; si se trata de un teclado, podemos saber si el usuario ha presionado una
tecla y el carcter aun no se ha ledo, etc.). Otras veces no hay tal registro de estado,
y simplemente se lee lo que haya en la direccin I/O desde programa, decidiendo
luego que hacer con el dato ledo. Este es el caso, por ejemplo, de un joystick
analgico conectado al puerto de juegos del PC.
Para cada tipo de interrupcin, por tanto, se puede instalar una rutina de atencin o
servicio de interrupcin. Cuando la CPU recibe notificacin de la interrupcin detiene el
programa en ejecucin, ejecuta la ISR (es decir, sirve al dispositivo haciendo que cese
su peticin de interrupcin (si es necesario, se accede al controlador de interrupciones
para hacer lo mismo)) y finalmente devuelve el control al programa, restaurando su
estado anterior. Por tanto, una condicin importante a cumplir es que una ISR debe
preservar el estado del procesador (el contenido de todos sus registros) para poder
volver al estado anterior a la llamada.
Para permitir nuevas interrupciones hardware en medio de una ISR hardware, hay que
usar una instruccin sti. Las fuentes primarias de interrupcin en el PC son variadas:
Sin entrar en demasiados detalles sobre la programacin del PIC, que puede resultar
compleja, s diremos que tiene un registro de mascara de interrupcin (mask register).
Este registro de 8 bits permite habilitar o inhabilitar las interrupciones de los
dispositivos del sistema (un 0 habilita la interrupcin del dispositivo y un 1 la
inhabilita), como puede verse en la figura 6. Cuando ocurre una cierta interrupcin, el
8259 enmascara las posteriores interrupciones de ese dispositivo hasta que recibe fin
de interrupcin de la ISR.
El PIC proporciona varios esquemas de prioridad, pero el BIOS lo inicializa para usar
prioridad fija. En este caso, el dispositivo con IRQ 0 (el timer) tiene la prioridad ms
alta y el IRQ 7 la ms baja. Si tenemos una tarea que queremos que sea de mxima
prioridad (como por ejemplo el control de un reactor nuclear) seguramente usaramos
la interrupcin no enmascarable (int 2), no conectada con el 8259, que no puede
desactivarse mediante software y es de mayor prioridad que cualquiera que venga del
PIC. Esto es as porque en realidad los chips de la familia 80x86 presentan dos
posibles entradas de interrupcin. La primera es la interrupcin enmascarable, a la que
se conecta el 8259, que como su nombre indica se puede enmascarar o
desenmascarar con las instrucciones cli y sti. La segunda es para la interrupcin no
enmascarable, que siempre esta activada por defecto.
Tanto los subsistemas de entrada/salida mapeada en memoria como los que usan
puertos de entrada/salida necesitan que sea la CPU la que realice la transferencia de
los datos entre el dispositivo y la memoria. Para algunos dispositivos de alta velocidad,
esta forma de procesar los datos puede resultar demasiado lenta. En el caso del DMA,
el dispositivo puede operar directamente sobre la memoria, siempre que la CPU le
haya concedido el permiso para hacerlo. De esta manera, solo se avisa a la CPU al
comienzo o al final de una operacin sobre memoria y se consigue una tasa de
transferencia de datos superior a la de los otros mtodos. Adems esto a menudo
permite que las operaciones de entrada/salida se realicen en paralelo a otras
operaciones de la CPU, aumentando as el rendimiento global del sistema. Sin
embargo, ntese que no es posible que la CPU y el dispositivo utilicen a la vez el bus
de direcciones y de datos, por lo que el procesamiento paralelo se dar solo cuando la
CPU este operando sobre datos contenidos en una memoria cache.