introduccion a los microprocesadores

Anuncio
UNIVERSIDAD DE MATANZAS
“CAMILO CIENFUEGOS”.
FACULTAD DE INGENIERÍAS QUÍMICA Y MECANICA.
INTRODUCCION A LOS MICROPROCESADORES
Dr. C.T. Ing. Evaristo González Milanés.
DICIEMBRE, 2003
INTRODUCCION A LOS MICROPROCESADORES
Autor: Dr. Evaristo González Milanés
Dpto. Física
Universidad de Matanzas.
INTRODUCCIÓN.
Los microprocesadores han venido a ser el resultado del desarrollo en el camino
emprendido por la Electrónica Digital hacia la miniaturización, primeramente
implementando una unidad de procesos completa en una sola pastilla o chip de circuito
integrado, y posteriormente, mediante el aumento de la rapidez, capacidad de trabajo y
potencia de dicha unidad.
La aparición de los microprocesadores (MP) representa el siguiente punto de
salto en la electrónica después del ocurrido con la invención del transistor, y la
tecnología de su construcción avanza tan rápidamente que prácticamente ha
revolucionado en corto tiempo el desarrollo de múltiples campos de la ciencia y la
técnica, a la vez que se introduce de manera convincente en nuestra vida doméstica,
siendo difícil mencionar una rama o campo de la ciencia en la cual no exista una
aplicación de los microprocesadores. De hecho, cada día aumenta el número de
instrumentos, sistemas de control de procesos, medios y equipos para las
telecomunicaciones, medicina, servicios públicos e incluso juguetes, que emplean
dentro de su estructura algún tipo de MP, sin entrar a considerar el hecho real de la
introducción, divulgación y aceptación que han tenido las nuevas generaciones de
computadoras digitales basadas en este componente y que son conocidas por nosotros
como microcomputadoras.
Es difícil predecir qué pasará en la electrónica en los próximos años, pero de
acuerdo con la opinión de personalidades de esta rama, la influencia de los MP en el
futuro será cada vez mayor y de ahí la importancia de preparar a los profesionales
encargados de su aplicación y desarrollo, y de que a su vez, los graduados de nivel
superior posean conocimientos elementales que les permitan ganar en la cultura
general necesaria que sirva de base a un conocimiento mayor de la aplicación
específica en el campo en que desarrollarán su vida profesional .
Este material no es más que un primer intento para cubrir la limitación de
información que sobre este tema presenta el texto que se emplea en la asignatura
Electrónica, que se imparte a las carreras de Ciencias Técnicas, permitiendo a los
estudiantes disponer de forma condensada de los contenidos relacionados con esta
temática previstos en dicha asignatura.
1
1-)Computadora Digital.
Una computadora digital puede entenderse como un sistema que explora
secuencialmente una información almacenada llamada programa, interpreta este
programa y lo ejecuta.
Para ello el sistema dispone de un HARDWARE, o sea, de una constitución
física conformada por circuitos integrados interconectados sobre tarjetas de circuito
impreso agrupadas en elementos funcionales de características definidas que conforman
la MEMORIA, la UNIDAD de CONTROL, la UNIDAD LOGICO-ARITMETICA y
las UNIDADES de ENTRADA-SALIDA.
Simultáneamente dispone de un soporte no físico sino operativo, de un método
de diálogo y por tanto de aceptación de órdenes, y de generación de mensajes. Ello lo
constituye el conjunto de instrucciones al cual responde directamente, y es un elemento
que caracteriza a cada computadora, y que recibe el nombre de SOFTWARE básico. El
SOFTWARE no se limita al conjunto de instrucciones, sino que incluye también
programas inteligibles por el computador, por tanto escritos de acuerdo con el
SOFTWARE básico y que permiten interpretar programas escritos con lenguajes más
evolucionados.
El programa lo constituye un listado detallado de operaciones a desarrollar por la
computadora en un orden consecutivo y lógico y es escrito en un lenguaje que sea
comprensible para la máquina y que por tanto permita alcanzar ciertos resultados. El
programador, atendiendo al lenguaje de la máquina que lo ocupa, al problema específico
y a las operaciones simples que la máquina puede realizar, confecciona el listado de
instrucciones (órdenes), a través de las cuales especifica la operación que debe ejecutar
y la ubicación del o de los operandos sobre los que ejecutará la acción indicada.
Este programa se carga (almacena) en la memoria en el orden secuencial
previsto, constituyendo cada instrucción un grupo de 1 y de 0 que caracteriza o define
una operación y no a otra. A esta representación binaria de las instrucciones de una
computadora se le llama lenguaje de máquina o código de máquina.
Los programas que pueden ser directamente ejecutados por una computadora
digital están pues almacenados en lenguaje de máquina, no obstante, confeccionar
programas en lenguaje de máquina resulta una tarea laboriosa y compleja, por lo que
surgió el interés de crear lenguajes más asequibles para el ser humano y que tuviesen
una cierta relación con la manera con que aquél especifica las operaciones de un
proceso de información.
De esta forma nació el lenguaje simbólico (assembler), que sustituye las
combinaciones binarias del lenguaje de máquina por nombres simbólicos que hacen
referencia a la operación que realiza la computadora cuando ejecuta la instrucción
correspondiente. Cada instrucción del lenguaje simbólico es equivalente a una
instrucción del lenguaje de máquina.
Aunque el lenguaje simbólico es más fácil de manejar que el de máquina,
todavía dista bastante del utilizado por el ser humano para expresar los procesos de
información, en especial las operaciones complejas que implican la ejecución de un
número elevado de operaciones elementales en secuencia. Por ello se crearon lenguajes
2
de alto nivel que permiten especificar más fácilmente los procesos de información,
donde cada instrucción se convierte posteriormente en un conjunto de instrucciones en
lenguaje de máquina.
Tanto el lenguaje simbólico como los de alto nivel, hicieron necesario el
desarrollo de programas que al ser ejecutados por un computador tradujeran los
programas escritos en aquellos al lenguaje de máquina.
Estos programas traductores se conocen con el nombre de compiladores y
realizan la traducción al lenguaje de máquina para la totalidad del programa de una sola
vez. Esta versión traducida del programa escrito en un lenguaje de alto nivel (llamado
programa fuente), se denomina programa objeto, y puede transferirse a la memoria y
ejecutarse directamente.
Los programas intérpretes utilizan otros principios de funcionamiento. Cada
instrucción escrita en el programa fuente le indica al intérprete un conjunto de acciones
que debe cumplir sin que medie un programa objeto en código de máquina. La principal
ventaja de un intérprete es que permite fácilmente probar y poner a punto el programa.
Tanto el programa intérprete como el programa fuente permanecen en la
memoria durante la ejecución del programa, lo cual generalmente ocupa una mayor
capacidad de memoria, y no se posee un programa objeto en código de máquina para
su posterior concatenación con cualquier programa.
Posteriormente surgió la combinación de intérprete y compilador en un solo
paquete de programas, pudiendo aprovecharse las ventajas de ambos sistemas, como es
el caso del TURBOBASIC, TURBOPASCAL, etc.
1.1-Generaciones de computadoras digitales .
Desde la creación de las primeras computadoras digitales en el año 1947, se han
sucedido diferentes generaciones o estadios de desarrollo tanto a nivel de HARDWARE
como a nivel de SOFTWARE.
En las llamadas primeras generaciones se utilizaron tubos de vacío como
elementos lógicos y como memorias se utilizaron tambores magnéticos, el SOFTWARE
aún no se llamaba así y era muy primario, a nivel de lenguaje-máquina y de tímidos
ensayos simbólicos.
En la 2da generación, hacia 1956, se utilizaron ya transistores de germanio y,
posteriormente de silicio (el transistor se había inventado en 1947 y se había
industrializado pocos años después.) por la parte lógica, la memoria ya fue de ferritas y
se continuó usando memoria exterior de tambor, discos y cintas magnéticas; el
SOFTWARE era el mismo de la anterior generación, pero incluía ya compiladores
fortran aún bastante primarios, aunque fueron mejorando con el tiempo.
El primer gran cambio de los lenguajes se produjo pues, en esta generación.
Mientras hasta entonces los programas en lenguaje-máquina o en lenguaje simbólico
debían ser escritos para una máquina concreta puesto que eran orientados a las
máquinas, a partir de entonces fueron orientados al problema, por lo que el programa
era aplicable a cualquier máquina siempre que existiera el traductor (compilador)
adecuado a aquella máquina.
La tercera generación apareció hacia 1964 simultáneamente con la aparición de
las MINICOMPUTADORAS. El hardware era realizado con circuitos integrados RTL y
ECL que evolucionaron hasta los TTL en 1966. La MEMORIA continuaba siendo de
ferritas y el software llego a su mayoría de edad con lenguajes de alto nivel FORTRAN,
COBOL y sobre todo con la aparición de SISTEMAS OPERATIVOS. Fue el momento
de la incorporación de las computadoras al control del procesos.
3
La cuarta generación apareció hacia 1971 simultáneamente con la aparición de
las MICROCOMPUTADORAS, de las terminales de TELEPROCESOS y solapándose
con los lenguajes de más alto nivel (PL1, ALGOL68, BASIC, etc.).
4
1.2) Estructura de una Computadora Digital.
La estructura típica de una computadora digital ha sido en las primeras
generaciones la que se muestra en la figura.
Memoria
Salidas
Unidad de
Procesos
Entradas
Unidad de
Control
Esta estructura ha sido la primitiva y ha ido evolucionando variando, no en
esencia, sino en forma, hasta llegar a una estructura más moderna, la cual se muestra a
continuación:
A
Bus de direcciones
Unidad
Unidad de
Unidad de
Unidad de
Unidad de
Unidad de
Entradas
Memoria
Procesos
Control
Salidas
Bus de datos
D
Bus de Control
C
Puede verse que tanto en una como en otra figura las unidades funcionales son
prácticamente las mismas; lo que ha sufrido modificaciones han sido las
interconexiones de estas unidades, que modernamente se realizan por BUSES y antes no
se realizaban así.
Un bus está formado por un grupo de líneas por donde se trasmiten los datos,
códigos de instrucción, señales de sincronización y códigos de dirección entre las
diferentes unidades funcionales de la computadora de forma paralela lo que permite una
alta velocidad de transmisión.
La interconexión por buses ha representado un gran ahorro de interconexiones y
una simplificación desde el punto de vista estructural. Esta evolución ha sido debida al
desarrollo tecnológico que ha permitido obtener sistemas con tres estados lógicos
posibles (TRI-STATE): 1 lógico, 0 lógico y 3er estado también denominado estado de
alta impedancia, permitiendo que el dispositivo que no esté tomando parte del
intercambio de información en un momento dado pueda aislarse.
En realidad las líneas del bus se agrupan en tres, de acuerdo con la información
que transportan: bus de dirección, bus de datos y bus de control.
5
El bus de datos es bidireccional y por él circulan los datos que llegan o salen de
la computadora por las unidades de entrada y salida, así como los datos intermedios
que son leídos o almacenados en la memoria .De acuerdo con la longitud de la palabra
que es capaz de manejar el bus de datos, se designa la longitud de palabra de la
microcomputadora.
El bus de direcciones es unidireccional, y con el código binario que aparece en
ese bus se selecciona la unidad o dispositivo que trabajará en cada instante.
El bus de control está formado por varias líneas donde cada una posee una
función muy específica e indica a cada una de las unidades y dispositivos externos la
función que debe realizar. Así se logra la sincronización de todos los elementos de la
computadora, lo cual queda a cargo de la unidad de control. También sirve para que la
CPU reciba ciertas indicaciones de las unidades periféricas.
En la figura se distinguen además los siguientes elementos funcionales: unidad
de entradas, memorias, unidad de proceso, unidad de control y unidad de salidas.
La unidad de entradas no es más que un multiplexor con el que se escoge por el
bus de direcciones y el de control cuál de las informaciones presentes se desea traspasar
al bus de datos.
La unidad de memoria es el almacén tanto de instrucciones como de datos.
La unidad de proceso realiza las operaciones aritméticas y lógicas con las
informaciones que entran en ella a partir del bus de datos y el de direcciones. Tiene para
ello una unidad aritmética lógica (ALU), uno o varios acumuladores, unos registros de
indicadores o banderas, así como unos registros rápidos de trabajo (RRT) en los que se
almacenan temporalmente los datos que no interesa guardar indefinidamente en
memoria
La unidad de control es el verdadero cerebro del sistema pues es capaz de tomar
decisiones lógicas en el curso de la ejecución de un algoritmo. Es decir, según
informaciones, normalmente suministradas por la unidad de procesos sobre el valor de
algún resultado, se puede ejecutar una parte u otra del programa, sólo con ir a buscar las
nuevas instrucciones a un sitio diferente de la memoria central. En ella se encuentra el
contador de programas con su sistema de aritmética de direcciones y el puntero del
stack. También se encuentra el registro de instrucciones, decodificador de instrucciones,
registros auxiliares, etc.
La unidad de salidas recibe por el bus de datos la información a sacar al exterior
y por el bus de direcciones la dirección por la cual debe sacar los datos anteriormente
mencionados.
Generalmente la Unidad de Control y la Unidad de Procesos se agrupan en un
solo bloque denominado UNIDAD CENTRAL de PROCESAMIENTO (CPU).
1.3- Elementos básicos de una microcomputadora.
Una microcomputadora consta de tres elementos fundamentales: Unidad Central
de Procesamiento, la Memoria y las Unidades o Puertos de Entrada/Salida todo ello
debidamente interconectado mediante un sistema de buses. Su esquema será entonces el
mismo que aparece en la figura anteriormente mostrada, con la unión de las unidades de
control y de proceso en un solo bloque llamado CPU. La CPU unifica el sistema
controlando las funciones realizadas por los otros componentes.
Se conoce bajo el nombre de microprocesador la CPU de la microcomputadora
construida en una sola pastilla de circuito integrado (CI) .Al igual que los procesadores
de todas las computadoras, el microprocesador puede manejar tanto datos aritméticos
como lógicos de forma paralela bajo el control de un programa . Sin embargo lo que los
6
fabricantes ofrecen bajo el nombre de microprocesador varía mucho de uno a otro
modelo.
En el 8080 por ejemplo, están integrados los bloques de procesos y la mayor
parte del control, en el 6800 está completo proceso y control; en el 2650 se incluye
además parte de las entradas/salidas, el 8048 es un ejemplo de los microcomputadores
en una sola pastilla, pues incluye casi todo lo necesario para constituir un pequeño
sistema, y en general, en la medida que se desarrollan los microprocesadores, estos
abarcan cada vez estructuras mas complejas.
A continuación haremos una descripción más detallada de cada uno de estos
elementos de la microcomputadora.
1.3.1 - Unidad de Memoria.
En la memoria se almacenan los datos, los resultados y el programa de trabajo en
el cual se basará la CPU para regir las actividades a realizar en el sistema. La memoria
posee un conjunto de N posiciones numerados desde 0 hasta N-1, direccionables con n
bits tal que 2n = N. Por ejemplo con n=16 bits, se direccionan 216 = 65536 posiciones. Si
cada una de estas posiciones permite guardar un byte (palabra de 8 bits), podemos decir
abreviadamente que con n=16 bits se direccionan 64 Kbytes de memoria siendo
1Kbyte=1024 bytes.
La longitud de la palabra que se almacena en la memoria coincide con la
longitud de la palabra que es capaz de manejar el bus de datos, puesto que la memoria
recibe y entrega información a dicho bus mediante los procesos llamados lectura y
escritura .
Con ayuda de un esquema pasaremos a describir como se llevan a efecto estos
procesos:
MEMR
MEMW
0
1
.
.
.
NN-1
n
2 =N
MAR
MDR
AB
DB
CB
Cuando la CPU desea hacer una lectura en la memoria, coloca en el bus de
direcciones (AB) la dirección de la memoria que se desea leer, y coloca un “1” en
MEMR (memory read) del bus de control (CB) . La dirección se transfiere al registro de
direcciones de memoria (MAR - memory adresss register) y desencadena el proceso de
lectura como resultado del cual al cabo de cierto tiempo de acceso al contenido del
registro direccionado, aparece en MDR (registro de datos de memoria - memory data
register) y de ahí pasa al bus de datos (DB - data bus).
La escritura se realiza de forma similar solo que se coloca un “1” en MEMW
(memory write) y en MDR entra el contenido de DB que pasa a escribirse en la
memoria
7
En la figura siguiente se muestra un segmento
cuyas direcciones están numeradas desde la 83F2H (el
está escrito en notación hexadecimal) hasta la 83F9H:
Dcion.
CONTENIDO
(Hex.)
83F2
0
0
1
1
1
83F3
0
1
0
0
0
83F4
1
1
1
1
1
83F5
1
1
0
1
0
83F6
0
1
1
1
1
83F7
0
0
1
0
0
83F8
0
1
0
0
0
83F9
1
1
1
0
1
de 8 localizaciones de memoria
sufijo H significa que el número
1
0
1
1
0
0
0
0
1
0
0
0
1
1
0
1
0
1
0
1
0
0
0
1
(3E)
(41)
(FC)
(D5)
(7A)
(22)
(40)
(E8)
Cada localización de memoria tiene su propio contenido. Por ejemplo, la
localización con dirección 83F6H tiene como contenido 01111010, el cual expresado en
hexadecimal corresponde a 7AH. Este contenido es el que se entrega al bus de datos en
el caso de que sea direccionada esta localización y se diese la orden de lectura.
Como se apuntó anteriormente una secuencia de instrucciones que persiguen un
propósito determinado constituye un programa. Este programa se almacena en la
memoria para ser ejecutado. La CPU lee cada instrucción de dicha secuencia y la utiliza
para iniciar acciones de trabajo.
La memoria también se usa para almacenar los datos que son manipulados. La
CPU puede rápidamente tener acceso a cualquier dato almacenado en la memoria.
La capacidad de la memoria que se mide en octetos (bytes), está dada por el
número de localizaciones de memoria existentes. En muchas ocasiones se expresa en
kilooctetos (Kbyte) y en otras indicando el producto del número de las localizaciones
por el número de bits de cada una de ellas. Por ejemplo, una capacidad de 4K x 8 bits
indica que la memoria contiene 4096 localizaciones de 8 bits cada una.
El tiempo de acceso se define como la demora en tiempo desde el instante que se
fija una dirección de memoria hasta que se tiene acceso a la información almacenada
(tiempo de lectura), o se completa la modificación de la información almacenada
(tiempo de escritura). El acceso aleatorio significa que el tiempo de acceso a una
localización de memoria particular es independiente de su dirección.
Por último debemos recordar que las memorias en las computadoras se clasifican
en general en dos grupos: memorias de acceso aleatorio (RAM) con las cuales se
conforma la memoria operativa y memoria de solo lectura (ROM) que integran la
memoria permanente (con sus variantes PROM, EPROM, EEPROM, etc.).
1.3.2- Interfaces, puertos o unidades de entrada-salida.
Las interfaces de entrada y salida son toda una colección de hardware y de
software que permite la comunicación entre la CPU y los dispositivos de entrada y de
salida y de hecho con el mundo exterior. La parte correspondiente al software en la
interface es llamada protocolo, y formalmente especifica las convenciones que gobierna
el formato y la forma de control de las entradas y salidas entre dos sistemas de
comunicaciones.
Se necesita de la existencia de una interface de entrada debido a que los
dispositivos de entrada generalmente no son compatibles con la CPU y por tanto es
8
necesario convertir las señales eléctricas de entrada en un tipo que sea aceptable a esta.
Esto también se aplica aunque de forma invertida para el caso de los dispositivos de
salida. Físicamente las interfaces de entrada y salida son C.I. extremadamente versátiles
en sus funciones los cuales pueden ajustarse mediante la variación de sus software
correspondientes.
Las tareas más simples son realizadas por los puertos de entrada y salida (PIO).
Los PIO pueden ser incluidos como parte integrante del C.I. junto a la CPU o pueden
aparecer de forma independiente. En este último caso es un MSI chip (circuito integrado
de escala de integración media), que contiene un buffer de registro de direcciones
multimodo con salida de tres estados.
A través de los puertos de entrada la microcomputadora puede recibir
información de cualquier dispositivo externo, como por ejemplo, un teclado de
caracteres alfanuméricos, un disco magnético, o las señales provenientes de un proceso
industrial o un instrumento médico. A su vez la microcomputadora también requiere
uno o más puertos que permitan a la CPU comunicar el resultado de su actividad al
mundo exterior. La salida puede ir a un visualizador de televisión, para ser usada por un
operador o un impresor para producir una copia legible en papel, también puede estar
constituida por señales para el control de procesos que dirijan las operaciones de otro
sistema.
Tanto los puertos de entrada como los de salida son direccionables, es decir;
para trasmitir información hacia el puerto, o recibirla donde esté, es necesario que la
CPU envíe previamente un número que lo identifica y que constituye a su vez la
dirección del puerto.
Dos tipos de entrada-salida se hallan en la computadora en una tarjeta: los
puertos de entrada-salida en paralelo y los puertos de entrada-salida en serie.
Los PIO paralelos permiten la entrada-salida de datos en forma paralela, es decir,
todas las líneas del bus de datos entran o salen a la vez de la microcomputadora, lo que
posibilita una transferencia de datos entre la CPU y cualquier equipo periférico a alta
velocidad.
Los PIO en paralelo más usados son los de tipo programable, es decir, que puede
la misma pastilla ser usada como entrada o como salida de acuerdo con el programa de
instrucciones que realice el usuario.
Ejemplo : El circuito integrado 8255 constituye un PIO programable con E/S Paralelo
Tiene 8 terminales de datos que se conectan al bus de datos y 24 terminales de salida
que pueden agruparse en tres grupos de 8 bits, ó 4 grupos (2 de 8 bits y 2 de 4 bits).
Bus de
Datos
8
D0-D7
A0
PA
A1
PB
Rd
Wr
8
8255
8
PB
Cs
9
A1
x
x
0
0
0
0
1
1
1
A0
x
x
0
0
1
1
0
0
1
Rd
x
1
1
0
1
0
1
0
1
Wr
x
1
0
1
0
1
0
1
0
Cs
1
0
0
0
0
0
0
0
0
D0-D7 en 3er estado
D0-D7 en 3er estado
D0-D7 → Puerto A
D0-D7← Puerto A
D0-D7 → Puerto B
D0-D7 ← Puerto B
D0-D7 → Puerto C
D0-D7 ← Puerto C
D0-D7 → Palabra de
Control
De acuerdo con la tabla que se muestra, puede conocerse la combinación que se
necesita aplicar a las entradas para producir el traspaso de la información en cualquier
sentido entre el bus de datos y las salidas Pa, Pb y Pc.
Los PIO serie se emplean cuando se requiere que la transferencia de datos entre
los periféricos y la computadora, se realice en forma serie, es decir, bit a bit de cada
octeto de dato. Por ejemplo, cuando se trasmiten datos entre dos computadoras a través
de una línea telefónica, el formato que se utiliza es el de la transmisión en serie.
Como la microcomputadora trabaja con los datos en paralelo, para trasmitir o
recibir datos en serie es necesario un PIO que conecte datos de paralelo a serie y
viceversa
La gran ventaja de la transmisión en serie es que necesita solamente dos
alambres para trasmitir todas las señales necesarias entre módulos o sistemas. Por otra
parte, la desventaja radica en que el intercambio de datos se realiza a menor velocidad
que si fuera en paralelo.
Ej.: El circuito integrado 8251.
Bus de Datos
D0-D7
Rd
TxD
Salida de Datos Serie
RxD
Entrada de Datos Serie
Wr
8251
Clock
Cs
1.3.3- Unidad Central de Procesamiento (CPU).
Es el corazón de la microcomputadora, siendo la encargada de unificar el
sistema a la vez que controla las funciones realizadas por las otras unidades .
10
Esta unidad es capaz de buscar instrucciones en la memoria, decodificar su
contenido y ejecutarlas. Es la encargada de comunicarse con la memoria y con los PID
tantas veces como sea necesario durante la ejecución de un programa. La CPU deberá
también reconocer y responder a ciertas señales de control externo, tales como
solicitudes de interrupción u otras a fines. Lleva en su interior la base de tiempo que
genera los ritmos o impulsos de reloj de las diferentes partes del sistema .
Todas las instrucciones tienen dos tiempos fundamentales, llamados busca
(fetch) y ejecución (execute). El tiempo de ejecución empieza por un subtiempo de
decodificación de la instrucción y prosigue con la parte de ejecución que puede tener
varios subtiempos , dependiendo del tipo de instrucción. La suma del tiempo de busca y
el de ejecución, da lo que se conoce como ciclo de instrucción y el mismo depende no
solo del tipo de instrucción sino también de las características de velocidad de la CPU.
La CPU realiza también las operaciones aritméticas y lógicas, así como la
transferencia entre acumulador, registros de trabajo, etc.
Cuando la CPU se fabrica en un solo chip, a dicha estructura como señalamos
anteriormente, se le da el nombre de microprocesador. Por la importancia que tienen
estos dispositivos, en los epígrafes siguientes de este material se realizará un estudio
más detallado del mismo.
2-Microprocesadores.
Pocas áreas de la electrónica han experimentado un progreso tan acelerado como
el ocurrido en el caso de los microprocesadores, las microcomputadoras y sus circuitos
asociados correspondientes. La complejidad de los circuitos integrados prácticamente se
ha ido duplicando en cada año a partir de los inicios de la década de los 60.
Como consecuencia de este desarrollo, a finales de la década aparecieron los
circuitos integrados de gran nivel de integración (LSI) los cuales realizaban funciones
de un alto grado de complejidad. Ejemplo de ello fue el desarrollo de unidades lógicoaritméticos (ALU) en un chip, que podían ejecutar muchas de las funciones de las
microcomputadoras actuales como son la suma, la resta, rotación y desplazamiento.
Sin embargo, no fue hasta 1971 en que fue posible combinar esta unidad (ALU)
con circuitos secuenciales tales como flip-flops, registros de desplazamientos y otros
elementos, todo dentro de un chip, para dar lugar a un rudimentario microprocesador.
La técnica de los microprocesadores implica una unión indisoluble entre el
HARDWARE y el SOFTWARE. No será posible la construcción de un sistema
completo si no se trabaja en ambos sentidos.
Una microcomputadora está compuesta por un microprocesador, circuitos de
entrada-salida y las memorias, todo ello unido a los equipos periféricos, estando
íntimamente ligada la cantidad de estos elementos con las características de la
aplicación particular.
El microprocesador es el puesto de mando donde se dirige el proceso de la
computadora y en el que ocurre una buena parte de él. De este componente depende la
velocidad del proceso, el sistema operativo que se correrá e incluso una importante
porción del consumo energético del equipo y del costo del sistema. Está constituido por
un chip de silicio cuya área aproximada en dependencia del modelo es de apenas 1.5
cm2 y en este reducido espacio se encuentran dispuestos varios millones de transistores
que son los verdaderos actores de procesamiento lógico de la información.
Desde el más humilde Intel 4004 que en 1971 trabajaba a 0.2 MHz., hasta el
impresionante Pentium 4 de Intel con 3 GHz., todos los MP en esencia hacen lo mismo:
11
reciben la información binaria y la procesan sobre la base de instrucciones predefinidas
que generan una nueva información también binaria.
El MP reacciona constantemente a las instrucciones, pero no puede hacerlo con
todas a la vez, porque estas se atascarían. Ello se resuelve mediante una espera del
procesador hasta que se aprueba la recepción de la señal. El reloj del sistema determina
el tiempo de espera. A espacios definidos de tiempo, el reloj envía impulsos eléctricos
que marcan al sistema el rango de estas esperas. Si una instrucción se halla en espera y
el procesador no está ocupado con instrucciones previas, le da entrada y trabaja con
ellas. El número de instrucciones que el MP puede procesar por cada una de estas
pulsaciones de reloj (ciclos) dependerá del diseño o arquitectura del mismo. En sus
inicios las CPU podían manejar una sola instrucción por ciclo, pero en la actualidad esa
cifra se ha incrementado notablemente a partir de dos concepciones aplicadas a la
construcción de esos sistemas: la canalización y la ejecución superescalar.
La canalización permite que el procesador lea una nueva instrucción de la
memoria antes de terminar la fase de la instrucción en curso. Algunos de los modernos
MP pueden trabajar simultáneamente con varias instrucciones. La profundidad del canal
será la medida del flujo de datos que puede aceptar el sistema. Digamos por ejemplo
que el 80486 tiene una profundidad de canal de 4, o sea, que hasta 4 instrucciones
pueden encontrarse en distintas etapas de canalización, ya en el pentium esa cifra es de
5 y crece en el diseño de CPU con tecnología MMX y otros equivalentes como el K6 y
en superiores como el pentium II.
La ejecución superescalar significa que el sistema posee más de un canal, lo que
significa que puede procesar más de un grupo de instrucciones a la vez. Si bien
técnicamente esto debería multiplicar el desempeño, en la práctica no es exactamente
así, pues ocurre que un canal espera a que termine el otro. No obstante, en términos
prácticos optimiza el funcionamiento del procesador.
En la historia de los MP han existido dos filosofías de diseño: la CISC y la
RISC.
CISC (Complex Instruction Set Computing), creada por IBM como un software sencillo
almacenado en el chip y que contenía las instrucciones para el procesador, permitió
salvar el escollo que representó la complejidad sucesiva de las aplicaciones de software
que en otras circunstancias habría llevado al cambio constante del hardware en función
de los programas. Al ejecutarse, los programas CISC ocupaban menos espacio en
memoria y esta última valía en los años 60 y 70 más que el oro. CISC se incluye en los
procesadores Mainframe de IBM, los Motorola 680X0 y es emblemático de los
procesadores Intel, principalmente de los X86 y todavía se utiliza en los pentium
actuales.
En el diseño RISC (Reduced Instruction-Set Computing), existen menos
instrucciones, cada una tiene una longitud de 32 bits y se ejecuta en un solo ciclo de
reloj. Con esta arquitectura, los procesadores incorporan una caché de memoria de alta
velocidad en la que se almacenan la secuencia de instrucciones a ejecutar. El uso eficaz
de tales datos depende en gran medida de la canalización, que en esta arquitectura
adquiere un protagonismo indiscutible. Bajo esta concepción se desarrollaron algunas
de las CPU más poderosas en la actualidad tales como los Power PC de Macintosh,
incluido el célebre 750, más conocido como G3, los alpha de las estaciones Silicon
Graphics y los SPARC de Sun Microsystem. Incluso hasta unidades tan sencillas como
las máquinas de juego Nintendo, poseen en su interior uno de estos dispositivos.
Por sus innumerables aplicaciones los microprocesadores han invadido los más
diversos campos de la ciencia y la técnica, abarcando desde complejos sistemas de
control o de computo hasta sencillos equipos electrodomésticos o de juguetería,
12
incluyendo sistemas de comunicación de datos, diagnóstico médico, control numérico
de máquinas herramientas y otros.
Dentro de las ventajas de los sistemas con los microprocesadores podemos
señalar las siguientes:
a-) Pueden realizar muchas operaciones por software, en lugar de usar componentes
electrónicos.
b-) Reducción del tamaño, no sólo del microprocesador, sino del resto de los circuitos
que lo complementan.
c-) Aumento de la fiabilidad, ya que disminuye el número de componentes.
d-) Flexibilidad en el diseño.
e-) Disminución de los costos tanto en diseño, como de la producción y reparaciones.
En cuanto a las desventajas mencionaremos:
a-) El aprendizaje del software, pues cada microprocesador posee un juego de
instrucciones a las cuales responde.
b-) Los métodos difíciles de prueba que deben hacerse a la velocidad de trabajo del
microprocesador.
2.1) Estructura típica de un microprocesador de 8 bits. ( ver esquema anexo).
Aún el microprocesador más simple presenta una estructura compleja, pues en
ella se encuentran un gran número de nudos y unidades tales como sumadores,
decodificadores, registros de todo tipo, flip-flops, esquemas lógicos, etc.
Por otra parte, la rapidez, potencia y complejidad de estos dispositivos se
perfeccionan más cada día, por lo cual no es posible en un material de este tipo efectuar
un estudio profundo de este aspecto, además de irse fuera de los objetivos que no hemos
trazado con su escritura.
Es por ello que para brindar una idea general de la estructura y lograr una
comprensión más simple, analizaremos como se conforman los MP de 8 bits y para ello
consideraremos la existencia de dos bloques funcionales dentro del microprocesador, a
los cuales denominaremos como bloque, subsistema o unidad de procesamiento, y
bloque, subsistema o unidad de control.
2.2) Bloque de Procesamiento.
El núcleo fundamental del bloque de procesamiento lo constituye la unidad
aritmética y lógica (ALU), la cual está conformada por un circuito combinacional capaz
de realizar las operaciones aritméticas (suma y resta) y lógicas (and, or, not, etc)
indicadas en el código de la operación.
Para poder realizar su función la ALU cuenta con la ayuda de varios registros.
La ALU puede operar con los datos provenientes de uno o a lo sumo dos de los registros
a la misma vez. Uno de estos registros es más versátil que los restantes y recibe el
nombre de acumulador, mientras que los otros registros se denominan de propósito
general.
Estos registros se utilizan para:
-almacenamiento temporal de datos y direcciones
-su contenido se puede transferir entre ellos y con la memoria
-sumar su contenido con el que existe en el acumulador
-comparar su contenido con el que existe en el acumulador
-incrementar o decrementar su contenido, etc.
13
El acumulador además de las funciones antes mencionadas podrá:
-rotar su contenido
-complementar su contenido
-aceptar o enviar datos a los PIO
-realizar operaciones aritméticas y lógicas con el contenido de cualquiera de los
registros de propósito general
-en general el acumulador siempre es el origen de uno de los operandos y el destino del
resultado.
Los dispositivos encargados de transferir el contenido del registro seleccionado
hacia la entrada de la ALU son los llamados multiplexores. Igualmente otros
multiplexores serán los que muevan la información desde la salida de la ALU hacia un
registro de destino, donde se mantiene la información hasta que sea requerida por algún
circuito externo. Todas estas operaciones son controladas por un circuito secuencial el
cual se acopla a todos los registros y multiplexores. Por ejemplo, para un
microprocesador de 8 bits, el acumulador y los multiplexores son dispositivos capaces
de manejar una longitud de palabra de 8 bits, aunque en el caso de los registros de
propósitos generales pueden en ocasiones utilizarse por parejas y conformar una
estructura de 16 bits.
2.2.1) Registro de Indicadores.
Existe aquí además un registro sumamente importante denominado registro de
indicadores o banderas, el cual trabaja muy vinculado a la ALU, ya que le va indicando
a ésta el estado de las operaciones aritméticas o de rotación que va realizando.
Por ejemplo en el MP 8080 el registro de indicadores posee 8 bits, pero sólo 5 de
ellos son significativos de acuerdo a la estructura que se muestra a continuación:
SIGNO
S
D7
Z
D6
X
D5
ACARREO
PARIDAD
ACARREO
A
C
D4
X
D3
P
D2
X
D1
C
D0
CERO
DO (ACARREO)-Se activa en 1 cuando al realizar una operación aritmética el resultado
no cabe en el acumulador.
Ejemplo:
Binario
Decimal
11011001
207
+10010001
145
Acarreo 101101010
452
Al realizar una operación de dos bytes se obtuvo como resultado un número de 9
bits, haciéndose necesario entonces un 1 en el indicador de acarreo.
D2 (PARIDAD) - Si al efectuar una operación, el número de bits presente con el estado
lógico 1 es par (2, 4, 6 u 8), se fija un 0 lógico en el bit de paridad. De la misma forma
14
si el número de 1 lógicos en el acumulador es impar (1, 3, 5 ó 7), se fija un 1 lógico en
dicho bit de paridad.
Ejemplo: Si en el acumulador hay 11001100 entonces D2 es cero, pero si el contenido
del acumulador es 10101000 entonces D2 es 1.
D6 (INDICADOR DE CERO). - Se activa con 1 lógico cuando el resultado de la
operación en el acumulador da 00000000, y presenta un 0 lógico en caso contrario.
D7 (INDICADOR DE SIGNO). Si está en 1 lógico indica que el contenido del
acumulador es negativo y el 0 lógico indica que es positivo.
D4 (ACARREO AUXILIAR).- El programador no tiene acceso a él. Se utiliza para
convertir un número de binario a BCD.
En otros microprocesadores pueden emplearse otros tipos de indicadores.
Algunos de ellos los relacionamos a continuación:
E - se activa con la existencia de dos palabras de entrada iguales.
GT-indica una palabra de entrada mayor que la existente en la otra entrada.
GE- indica una palabra de entrada mayor o igual que la existente en la otra entrada.
LT- indica una palabra de entrada menor que la existente en la otra entrada.
LE - indica una palabra de entrada menor o igual que la existente en la otra entrada.
2.3) Bloque de Control.
El bloque o unidad de control constituye el cerebro rector de todas las
actividades dentro del microprocesador. Entre sus funciones fundamentales se encuentra
el decodificar (interpretar) los códigos de operación de las instrucciones del programa, y
el generar las señales que viajan por el bus de control, las cuales deben estar
sincronizadas para su correcta manipulación por el resto de las unidades.
Dentro de las secciones que constituyen esta unidad se encuentra el registro de
instrucciones, el decodificador de instrucciones y el contador de programa.
Un contador de programa típico para un microprocesador de 8 bits, almacena
una palabra de 16 bits. El contenido de este contador se corresponde con la localización
de memoria externa donde se encuentra la instrucción que se ejecuta por el
microprocesador; o lo que es lo mismo, la dirección de la memoria que se encuentra
activada. Este contador se incrementa automáticamente en una unidad durante cada
ciclo de máquina.
Cuando se inicia el proceso de ejecución de un programa, un circuito externo fija
el contenido del contador de programa el cual será la dirección específica de la memoria
en la cual se encuentra almacenada la primera instrucción del programa. Esta
instrucción se lee en la memoria, y mediante el bus de datos se traslada al registro de
instrucciones.
El registro de instrucciones es el encargado de almacenar temporalmente la
instrucción extraída de la memoria para que el decodificador de instrucciones determine
cuál es la operación que se debe hacer. De acuerdo con ello este decodificador producirá
las señales necesarias para encaminar los datos en un sentido o el otro, indicará que
operación deberá hacer la ALU y si hay que producir algún cambio en el contador de
15
programa, a la vez que emitirá las señales para entrelazar todos los diversos registros del
microprocesador que son necesarios para la ejecución del una instrucción en particular.
La unidad de control cuenta además con una sección de tiempo o sincronización
que realiza una función muy importante, pues el MP como ya hemos señalado a partir
de la salida del decodificador de instrucciones tiene que especificar los ciclos
apropiados de máquina que son necesarios para la ejecución correcta de dicha
instrucción. Todo esto es posible lograrlo mediante la generación de la señal de control
y de tiempo internas apropiadas y su envío a los diferentes elementos y componentes
dentro y fuera de MP.
Para sincronizar todo este proceso los MP disponen de un generador interno de
pulsos llamados pulsos de reloj, cuya frecuencia se controla exteriormente mediante una
red RC o modernamente mediante un CRISTAL conectado a sus terminales .
En el microprocesador se encuentran también presentes algunos registros
adicionales que se utilizan para el almacenamiento temporal de datos. Por ejemplo,
usualmente se coloca un registro entre el contador de programa y la memoria, que se
denomina registro de direcciones de memoria (MAR); y entre la memoria y el registro
de instrucciones en ocasiones se emplea un registro denominado registro de datos de
memoria (MDR).
Cada instrucción programada por un usuario requiere de la realización de un
determinado número de operaciones internas denominadas microinstrucciones, y de
aquí surge la necesidad de almacenar un cierto número de resultados intermedios. El
conjunto particular de microinstrucciones de un microprocesador se almacena en una
ROM llamada ROM de control o microROM, la cual generalmente se encuentra dentro
del propio C.I. del microprocesador.
2.4) Temporización y Sincronización.
En cada microprocesador, el tiempo de duración de los eventos, o sea, la
velocidad a la cual se procesa, está determinado por los pulsos de reloj. Estos pulsos
difieren de un MP a otro, utilizándose en algunos de los casos un sólo tren de pulsos,
mientras que en otros se emplean dos. En el ejemplo representado en la figura se
emplean dos trenes o grupos de sucesión de pulsos Q1 y Q2, suministrando por un
generador de reloj, llamado comúnmente sólo como reloj.
1
2
Período de reloj
Cada tren de pulsos está compuesto de pulsos cuadrados idénticos en amplitud,
duración y frecuencia de repetición, pero la fase Q1 está desplazada de la fase Q2 por
medio período, o sea, la salida de Q2 está demorada T/2 en relación con la salida de Q1.
El cambio de un estado a otro del MP se produce en sincronización con estos
pulsos de reloj. La secuencia de estados a través de los cuáles se desplaza el control
16
durante el procesamiento de una instrucción, es a lo que se le denomina ciclo de
instrucción.
La sucesión de estados (generalmente entre 3 y 5) en los cuales se efectúa una
comunicación con la memoria y se procesa el dato por este comunicado, constituye lo
que se conoce con el nombre de ciclo de máquina. En general un ciclo de instrucción
está compuesto de uno o varios ciclos de máquina en dependencia de su complejidad.
2.5) Instrucciones que alteran el contador de programa .
Existen instrucciones que conllevan a una alteración del contenido del contador
de programas. Dentro de ellas se encuentran la realización de las siguientes operaciones:
a) salto incondicional (JMP)
b) salto condicional (JNZ , JP)
c) salto a subrutinas (CALL , CNC , CC)
d) instrucciones de retorno (RET , RPU , RM)
e) instrucciones de carga (PCHL)
d) interrupción.
Siempre que se realice un salto a subrutina debe, después de haberla ejecutado,
aparecer una instrucción de retorno, y el contador de programa debe retornar a su valor
original desde donde saltó para continuar la ejecución del programa.
Para garantizar esto se crea una zona en memoria (RAM) llamada STACK
(pila), llamada así por la estructura que tiene de almacenar los datos en forma de pila,
donde el último dato que entra es el primero que sale (LIFO - last in first out).
Cuando se realiza un salto a subrutina, el contenido del contador de programa
(PC) se guarda en la pila; si dentro de esa subrutina salta a otra, se vuelve a guardar en
la pila el contenido que tenia el contador de programa y así sucesivamente; esto permite
que al ir terminando la ejecución de cada subrutina se vaya retornando hacia el
programa principal con sólo llevar con cada instrucción de retorno el último dato que
entró a la pila al PC.
Pero existe un detalle muy importante. Es necesario saber en que localización de
memoria se encuentra el último dato que queda en la pila. Es por ello que existe el
puntero del stack.
17
2.5.1)Puntero del STACK (SP).
Es un registro de 16 bits que se encuentra dentro del MP, encargado de indicar la
próxima localización posible de memoria a ser ocupada dentro del stack. Este registro se
carga inicialmente con el código que representa la primera capacidad de memoria vacía
que será utilizada como pila y se irá decrementando en una unidad cada vez que se
introduzca un dato de 8 bits. Por cada dato extraído se produce un incremento.
Veamos cómo trabaja el puntero del stack mediante un esquema:
PROGRAMA
PRINCIPAL
PILA
SUBRUTINA A
PILA
SUBRUTINA B
SP
SP
DR2
DR1
DR1
1
2
DR2
DR1
4
3
PILA
PILA
SP
SP
DR1
Si la salida del programa en lugar de ser por un salto a subrutina es por una interrupción,
además de la dirección en que se estaba, en la pila se guardan los datos necesarios para
poder continuar la ejecución del programa.
2.5.2) Interrupciones.
Formalmente el tratamiento de interrupciones es bastante semejante al de salto a
subrutina, pues en realidad es un salto a subrutina. Sin embargo, este es un nuevo
mecanismo con una función diferente y, por cierto, muy utilizado en las aplicaciones
con microprocesadores.
En principio cuando un procesador ejecuta un programa no existe forma de
alterar la frecuencia predeterminada (y que incluye, claro está, saltos y subrutinas).
En estas condiciones la CPU sólo se entera de acontecimientos externos (por
ejemplo llegada de datos o petición de resultados por parte de algún periférico), si se
realiza por iniciativa del programa una verificación de dichos posibles acontecimientos.
Ello obligaría al programador a incluir periódicamente subrutinas de comprobación de
periféricos y llevar en todo momento control de los tiempos de ejecución.
Las interrupciones son solicitudes de servicio que llegan por líneas especiales
(en un mecanismo de hardware), y que pueden recabar la atención de la CPU en
18
cualquier momento. Después será cuestión del procesador el decidir si dicho servicio es
prioritario o no sobre lo que estaba haciendo, y romper la secuencia en curso.
Como ya se ha dicho, formalmente una interrupción es muy parecida a un salto a
subrutina, pero la llamada no se realiza por una instrucción especial sino activando
asíncronamente una línea especial (puede haber varias). La CPU termina la instrucción
en curso y después o sale hacia donde debe saltar o lo pregunta. Los detalles deben ser
estudiados en relación a cada máquina en concreto.
Existe sin embargo una diferencia muy importante entre el salto a subrutina
dentro de un programa y el salto a la subrutina de atención a una interrupción. Cuando
el procesador la recibe, está ejecutando una tarea que en cada momento está
representada por un conjunto de informaciones de las cuales depende la evolución
posterior de su trabajo, y que deben de ser preservadas si la tarea que está realizando
ahora, más adelante ha de reemprenderse en el mismo punto en que se abandonó para
atender la interrupción.
Estas informaciones pueden ser resultados parciales o datos en memoria, datos
presentados por el medio exterior, etc. que en principio no se pierden ni se alteran por el
cambio de tarea pero también se necesita guardar todo el estado de la CPU, es decir, el
contenido de sus registros, pues estos van a sufrir alteraciones. Por tanto en el salto a
interrupción no basta con guardar el contenido de PC (dirección de retorno) sino que es
necesario guardar en principio los contenidos del acumulador, registro de estado,
registros generales de trabajo, etc. Para ello se utiliza también el stack. Según el
microprocesador que se trate, la salvaguarda del estado se realiza automáticamente al
aceptar la interrupción, o bien el mismo programador lo incluye como primeras
instrucciones en la subrutina del servicio. De la misma forma la recuperación de estos
datos puede ser automática con la instrucción RTI (retorno desde interrupción), o bien
por instrucciones especiales antes de RET. Las instrucciones especiales son PUSH,
guardar un dato en el STACK (al mismo tiempo que se decrementa el SP), o POP,
recuperar un dato del STACK (incrementando previamente SP).
Las operaciones de entrada-salida controladas por interrupción se deben utilizar
cuando el tiempo de respuesta a la solicitud de atención por parte de un periférico ha de
ser lo más rápido posible.
La secue ncia de operaciones es la siguiente:
- el periférico solicita señal de servicio a través de una señal que activa una de
sus líneas de interrupción
- la CPU completa la ejecución de la instrucción en curso, guarda el contenido
del contador de programa (para asegurar la dirección de retorno) y salta a ejecutar la
subrutina de interrupción, emitiendo una señal de reconocimiento a esta interrupción
- la subrutina de interrupción deberá, a veces, determinar el circuito que ha
solicitado servicio, y en consecuencia, la dirección del programa que realmente se debe
ejecutar. También deberá guardar el contenido de los registros de trabajo, en el caso que
no se haga en forma automática
- se ejecuta el programa de atención al periférico
- el contenido del contador de programa de los registros es restaurado y la
ejecución del programa que se había interrumpido se reanuda.
19
2.6) Acceso directo a memoria.
El acceso directo a memoria es un procedimiento hardware que permite la
transferencia de datos entre un periférico y memoria, solo limitado por la velocidad de
acceso a memoria y sin intervención de la CPU. Este procedimiento se utiliza en la
transferencia de datos y tiene que ser muy rápido, por lo que no puede ser controlado
por el microprocesador. Tal es el caso de los visualizadores con tubos de rayos
catódicos, los cuales las velocidades de transferencia de datos que requieren son tan
altas, que no las permite ningún tipo de PIO bajo el control directo del microprocesador
y su programa asociado.
La secuencia de operaciones que se utiliza es la siguiente:
- el periférico provoca una interrupción en un circuito especial denominado
controlador de DMA.
- el controlador solicita la suspensión de la ejecución de trabajo al CPU
mediante la señal de HOLD
- la CPU completa la instrucción que está ejecutando en el momento de recibir la
señal HOLD y entonces pone en tri-state (tercer estado) sus buses, y envía una señal de
reconocimiento al controlador (HLDA)
- el controlador utiliza los buses para iniciar la transferencia, llevando el control
de la dirección de arranque y el número de bytes a trasmitir
- terminada la transferencia, el controlador desactiva la señal de HOLD,
permitiendo a la CPU reanudar su tarea.
Existen circuitos integrados controladores de DMA que pueden gestionar varios
canales de acceso a memoria.
Algunos microprocesadores (8080, Z80, etc.) tienen independizado el acceso a
la memoria y a las PIO mediante instrucciones diferentes (MOV A,M ; IN XX ; etc. ),
esto implica la existencia de señales de control especializadas para cada tipo de acceso,
de tal forma que se pueden diferenciar claramente los direccionamientos de memoria y
de PIO. Por el contrario, existen otros (6800, etc.) que no tienen esta diferenciación y
las PIO ocupan posiciones reales en el direccionamiento de memoria y son tratados
como tales con el mismo tipo de instrucciones. El primer procedimiento tiene la ventaja
fundamental de independizar los procesos de memoria y I/O y tiene el inconveniente de
la falta de flexibilidad en el tratamiento de la información, ya que todos los
intercambios se realizan a través del acumulador; el segundo procedimiento tiene las
ventajas de flexibilidad que se derivan de considerar los PIO como verdaderas
posiciones de memoria en funciones de entrada-salida.
Los circuitos de I/O operan normalmente de una forma asíncrona respecto al
modo de operación del microcomputador, y resulta necesario sincronizar la ejecución
del programa con la operación de los circuitos I/O. El método adoptado depende del
tiempo máximo de retraso que se permite en la atención a los acontecimientos que
reflejan las I/O y de la posibilidad de intercalar las actividades de proceso con la de
adquisición y emisión de datos. Las transferencias de datos de I/O se pueden organizar
de las siguientes formas:
1) Operaciones de I/O por acceso directo a memoria (DMA).
2) Operaciones de I/O controladas por interrupción.
20
3) Operaciones de I/O controladas por programas.
Los dos primeros casos ya han sido explicados con anterioridad. En el tercer
caso es el microprocesador a instancias del programa el que inicia y controla todos los
tipos de transferencia de datos, o sea, la CPU solicita información de entrada o envía
información a la salida, posicionando las señales correspondientes de direccionamiento
y de control. Tiene como ventajas la facilidad de implementación de hardware y
software y la facilidad de intercambio, siendo su principal inconveniente su falta de
validez para control de procesos en tiempo real.
2.7) Operación paso a paso de un Microprocesador.
Aunque a primera vista el tratamiento de un MP como un elemento de circuito
pudiera aparecer como una tarea muy compleja, cuando se mira como un dispositivo
que pasa por múltiples estados, se simplifica notablemente y su operación paso a paso
puede describirse en términos más simples, como ilustramos a continuación mediante
un ejemplo .
Veamos cuál es la actividad que se requiere realizar para imprimir un carácter el
cual ha sido previamente cargado en el acumulador.
Asumimos que el periférico a considerar es una impresora: El software que necesitamos
está almacenado en la memoria y consta de tres palabras de 8 bits (3 bytes) que
contienen el código de la operación a imprimir seguido de dos bytes que definen la
dirección de la impresora . Para imprimir el carácter, el MP transita por los nueve
estados que se muestran en la figura:
M1-T1
M1-T2
M2-T1
M3-T1
M4-T1
M2-T2
M3-T2
M4-T2
M1-T3
Si nosotros asumimos por conveniencia que la frecuencia impuesta por el reloj
es de 1 MHz, nuestro circuito cambiará sus estados cada vez que transcurra 1
microsegundo. La acción que se realiza en cada estado se explica a continuación:
Estado M1-T1. El contador de programa se conecta al bus de direcciones y coloca en
éste la dirección de memoria en la cual está almacenado el primer byte.
Simultáneamente un pulso de lectura es generado por la unidad de tiempo y control y
enviado por el bus de control a la memoria, causando que el primer byte, o sea, el
código de operación, pueda ser leído de la memoria.
21
Estado M1-T2. Asumamos que la memoria toma menos que un microsegundo en
responder. Esto significa que cuando nuestro circuito entra en este estado, el primer byte
ya se encuentra en los terminales de salida de la memoria. Es por ello que en este estado
el registro de instrucciones (RI) se conecta al bus de datos, produciéndose el enlace
directo entre la memoria y este RI, el cual recibirá la señal de control que le indica que
debe almacenar la información existente en la memoria y que se le envía a través del
bus de datos. Note que el bus de direcciones no está siendo usado en este estado.
Estado M1-T3. En este estado el código de operación se decodifica. La salida del
decodificador posibilitará la secuencia correcta de estados y las señales que debe
generar la unidad de control para que la instrucción sea correctamente ejecutada. En
nuestro caso ello
implica transitar por los estados M2-T1 , M2-T2 , M3-T1 , M3-T2 , M4-T1 y M4-T2.
En este estado ni el bus de control ni el de datos han sido utilizados.
Estado M2-T1. La acción realizada en este estado es idéntica a la del estado M1-T1, con
la excepción que el PC ha sido incrementado.
Estado M2-T2. En este estado el DB se conecta al registro de direcciones y mediante un
pulso correspondiente de control este graba el segundo byte en el lugar correspondiente
(este es un registro de 16 bits).
Estado M3-T1. La acción es semejante a los estados M1-T1 y M2-T2, con la excepción
que el PC tiene la dirección del tercer byte.
Estado M3-T2. Cuando el MP asume este estado, se obtiene el siguiente byte
componente de la dirección, generándose por la unidad de control las señales apropiadas
para grabar este byte en el lugar correspondiente del registro de direcciones.
En el transcurso de esta secuencia de estados desde M1-T1 hasta M3-T2 hemos
realizado el ciclo de búsqueda de la instrucción. En este punto dentro del MP se posee la
información del código que define la operación, y la dirección de la impresora.
Estado M4-T1. El registro de direcciones se conecta al AB por lo que la información
que éste posee puede ser decodificada, generándose así la señal que permite identificar a
que periférico se quiere acceder (en nuestro caso la impresora).
Estado M4-T2. En este estado el acumulador se conecta al DB, y a través de éste y los
interfaces correspondientes se envía la información a la impresora. Al mismo tiempo, el
interface monitorea las señales de estado del MP en el bus de control, las cuales son
usadas para generar las señales de control necesarias para activar la impresora y permitir
así que el carácter en el acumulador se imprima.
Para concretar ideas vamos a describir la ejecución de un corto programa
referido a un microprocesador de 8 bits (m=8) y direcciones de 16 bits (n=16) que
utiliza las instrucciones LDA (load acumulator, carga del acumulador con el contenido
de un registro de memoria ), ADD ( add acumulator, suma al acumulador el contenido
de un registro de memoria ) , y STA (store acumulator, guardar el contenido del
acumulador en un registro de memoria ).
El programa lee un dato de memoria en la dirección 006AH y lo guarda en el
acumulador. Le suma el dato de al dirección 006BH y guarda el resultado en 0080H .
22
El contenido de la memoria que nos afecta es el siguiente :
DIRECCIÓN
C000
C001
C002
C003
C004
C005
C006
C007
C008
CONTENIDO
B6(LDA)
00
6A
BB(ADD)
00
6B
B7(STA)
00
80
DIRECCIÓN
006A
------006B
------0080
-------
CONTENIDO
02
--05
--?
---
En la zona C000H a C008H está contenido el programa, mientras que en 006AH
y 006BH están los datos que vamos a manejar.
La secuencia de operaciones para la primera instrucción es:
- El contador de programa PC coloca su contenido (C000H) en el bus de direcciones AB
y de ahí se toma por el registro de direcciones de memoria MAR. A partir de ahí se
desencadena una operación de lectura en memoria a consecuencia de la cual, el
contenido de la dirección apuntada por PC (que es B6H) aparece en el registro de datos
de memoria MDR. De éste es transferido al registro de instrucciones IR y
simultáneamente, el PC se incrementa en 1.
- La decodificación de B6H indica que se trata de una instrucción de carga en el
acumulador del contenido de la dirección indicada (contenida) en los bytes siguientes
C001H y C002H. Para ello PC se incrementa dos veces y se producen dos nuevas
lecturas, siendo 00 el resultado de la primera y 6A de la segunda, y esta información se
carga en un registro temporal de direcciones TAR. La fase de búsqueda de la
instrucción ha terminado.
- El contenido de TAR es enviado a MAR y se procede a una nueva lectura. El registro
MDR coloca 02 en el bus de datos DB y de ahí pasa al acumulador. La primera
instrucción ha sido ejecutada.
- Para la segunda instrucción las tres primeras fases de búsqueda son idénticas y al final
de ellas IR contiene BB y TAR 006B. En la fase de ejecución, el contenido de TAR es
enviado a MAR y se procede a una nueva lectura. El MDR coloca 05 en DB y de ahí
este contenido pasa a uno de los registros de utilización general RUG. La ALU procede
a sumar el contenido de este RUG con el contenido del acumulador ( 05+02=07 ) y el
resultado se guarda en el propio acumulador. En PC se encuentra el contenido C006H.
- Para la tercera instrucción también las tres primeras fases (búsqueda) son iguales
quedando IR con B7 y TAR con 0080: En la fase de ejecución el contenido de TAR se
envía a MAR, mientras que el contenido del acumulador se lleva a MDR. Al final, en la
posición 0080 queda escrito el resultado de 07 que es la suma de los datos almacenados
en 006AH y 006BH.
El programa analizado escrito en lenguaje nemotécnico sería:
LDA 006AH
ADD 006BH
STA 0080H
Observamos que en el programa analizado no se produce la ruptura de secuencia
para la toma de decisiones, ni se ha hecho uso de subrutinas ni del mecanismo de
interrupciones. El estudiante interesado en profundizar en el tema de programación de
23
microprocesadores deberá consultar los textos de referencia que aparecen al final del
presente material.
2.8-) Campo de aplicación de los microprocesadores
Como ya se ha dicho un MP es básicamente una CPU de ordenador, integrada
con tecnología LSI. Visto de esta forma no representa más que un avance tecnológico
en el campo de los ordenadores, pero en realidad conlleva unas consecuencias
revolucionarias, ya que representa una democratización de la informática y una
generalización de su uso que se manifiesta por ejemplo, en la aparición de los
ordenadores personales. Los efectos que se producen se aprecian clarísimamente en los
campos de la automática, las comunicaciones y la instrumentación.
Los Microprocesadores en efecto constituyen un pequeño mundo aparte. Su uso
es diferente al de una microcomputadora, que en la gama de las máquinas de propósito
general, sería la más próxima a ellos. En efecto la microcomputadora aparece
generalmente como un sistema cerrado en el cual el usuario no interviene más que con
mucho para conectarle algún periférico extra o dotarle de un software específico para su
aplicación. En cambio el diseñador de aplicaciones con microprocesador desciende
hasta un nivel más profundo para construir un sistema a la medida, sin llegar sin
embargo a convertirse en arquitecto de sistemas. El MP realiza una aplicación
específica y fija de por vida, el hardware y el software son los estrictamente necesarios a
la aplicación y en particular no suele disponer de software ni terminales de interacción,
lo cual plantea problemas específicos de mantenimiento.
Las aplicaciones de los MP son fundamentalmente de control y de gestión
sencilla. Una vez realizado el diseño, el programa queda fijo, es decir, en general no se
espera reprogramar, aunque posiblemente sí realizar de tarde en tarde nuevas versiones
del modelo, para lo cual interesa prever la expansión. Por lo general el programa de la
aplicación va directamente albergado en memoria ROM, y una reducción del programa
se traduce en reducción del número de pastillas de CI y por ende en una reducción del
costo total. La consecuencia de esto es que la programación se cuida, en el sentido de
acortarla, y, por ello, la programación en el ensamblador o incluso en el lenguaje de
máquina se ha mantenido.
Una de las áreas mayores de aplicación de los sistemas con MP es la
concerniente a la sustitución de los circuitos electrónicos cableados en general a base de
elementos de tecnología TTL. A partir de cierto grado de complejidad es interesante
implementar el circuito a base de un sistema con MP. A la hora de la sustitución, hay
que tener en cuenta algunas características, tales como la menor velocidad que suele
acompañar al sistema con MP, al tener que ejecutar de forma secuencial las
instrucciones del programa para obtener las salidas apropiadas, mientras que en los
circuitos cableados, las entradas sólo tienen que atravesar los elementos operativos para
originar las salidas. Si el sistema con MP supera la limitación de tiempo expuesta, por lo
general en el resto de las consideraciones, supera al circuito cableado. Se destacan
algunas de sus ventajas:
1-Menor tiempo requerido para el diseño y las pruebas del prototipo.
2-Posibilidad de emplear tarjetas estándar que conforman la mayor parte del sistema. En
este caso se reduce en gran manera los costos de montaje y verificación.
3-Para cantidades muy importantes y bajo pedido directo al fabricante, existe la
posibilidad de integrar en un solo chip la mayor parte del sistema. Esta alternativa
reduce los costos de montaje, verificación y material, mejorando los aspectos
relacionados con la reducción del volumen, aumento de fiabilidad y mayor
24
competitividad. En estos casos ha de tenerse en cuenta que los fabricantes pueden
producir bajo demanda, chips específicos para una determinada aplicación.
4-Posibilidad de introducir en el futuro cambios en el programa de trabajo del sistema
(basta cambiar el programa de la memoria), así como ampliarle si es necesario.
5-Reducción de costos en mano de obra y verificación.
6-Importante aumento de la fiabilidad debido a la reducción de componentes en los
sistemas con MP.
7-Reducción importante del volumen y del gasto de energía consumida.
8-Fácil introducción de programas de auto chequeo que facilitan la reparación y el
mantenimiento del equipo.
9-Capacitación del personal en general de la empresa, que le permite desarrollar en el
futuro nuevos y más avanzados productos que a veces serán permisibles a corto plazo.
10-Mejoría de la imagen del producto y de la empresa que lo fabrica.
Una clasificación general de carácter básico que delimita algunos de los campos
industriales de más interés y desarrollo de los sistemas basados en MP es la siguiente:
1-Industria en general.
2-Industria eléctrica y de electrodomésticos.
3-Instrumentación y medidas.
4-Terminales inteligentes.
5-Juegos y derivados.
Los MP hoy en día cada vez más extienden su campo de aplicación y encuentran
cada vez más un sin número de tareas que le son asignadas. De aquí que podamos ver a
manera de ejemplo su amplio empleo en la instrumentación.
Podemos preguntarnos ¿qué nos da el uso de los MP en los instrumentos? ¿ cuán
eficiente resultan los sistemas de medición basados en los MP ?
La respuesta a estas preguntas está dada por el hecho real que los MP están
revolucionando la instrumentación electrónica, lo cual es verdad aunque suene un poco
fantástico. El uso de los MP en la instrumentación ha mejorado notablemente la
precisión que se alcanza, ha expandido sus capacidades, ha incrementado su
confiabilidad y ha posibilitado la realización de tareas que anteriormente por su
complejidad o duración prácticamente eran consideradas irrealizables.
Debido a la presencia del MP, han podido construirse instrumentos cada vez más
versátiles y se han desarrollado procedimientos para la medición que resultan cada vez
más simples, en los cuales el ajuste, la calibración y la propia lectura, se realizan de
forma automática. Todo ello posibilita una mejora sustancial del comportamiento del
instrumento y de sus características metrológicas.
El MP posibilita también el empleo de procedimientos de cómputo más
eficiente, con un análisis estadísticos de los resultados y su posible linealización. En
muchos instrumentos ha aparecido la posibilidad de programación, y lo que aún es más
importante han llegado a ser inteligentes.
La multifuncionalidad ha sido una consecuencia de la flexibilidad en la
utilización de programas, pero paralelamente con esto, se ha logrado una reducción en
el consumo de energía lo cual ha permitido el diseño de instrumentos cada vez más
sencillos de operar por lo que el usuario puede lograra un gran ahorro de tiempo.
25
En el esquema que a continuación mostramos está representado el diagrama de
bloques simplificado de un voltímetro digital con el empleo de MP.
Señal de
Entrada
Dispositivo
Acomodador
de señal
Sistema Microprocesador
CAD
de Salida
El bloque acomodador de señal contiene principalmente un atenuador y un
amplificador, aunque algunos instrumentos también presentan un circuito para rectificar
la señal de corriente alterna.
El conversor análogo digital CAD es imprescindible para cualquier voltímetro
digital, incluyendo el que está basado en MP. Comúnmente el CAD que se emplea en
los sistemas de medición viene totalmente en pastillas de circuito integrado de alta
integración (LSI).
El MP organiza el procedimiento de medición, controla la operación de los
restantes bloques y ejecuta las operaciones aritméticas y lógicas con los datos
procedentes del CAD. El programa bajo el cual el MP opera, es preparado por el
fabricante y almacenado en ROM, permaneciendo inalterable aún bajo el caso de una
falta de energía. La ROM almacena también algunas constantes usadas en varias
subrutinas y los números requeridos para la calibración automática. La RAM se utiliza
para guardar los datos obtenidos y temporalmente los resultados intermedios.
El dispositivo de salida sirve para mostrar los datos de la medición en forma
numérica, o sea, como un conjunto de dígito.
El multímetro digital con MP es un instrumento multifuncional programable.
Los programas y subrutinas que utiliza, determinan las funciones que este puede
realizar. Los modelos ofertados por los fabricantes difieren unos de otros, pero en
general tienen en común lo siguiente:
- multiplicar un número por un factor de escala.
- sustraer un valor constante a la lectura.
- determinar la fracción de error en el resultado.
- medir relaciones y presentar el resultado en tanto por uno o en decibeles.
- procesar los datos estadísticamente.
- calcular los valores estadísticos de los resultados (media, varianza, valor eficaz, etc.).
En general podemos plantear que en la época actual los MP se aplican
prácticamente en todas las ramas de la ciencia y la técnica, y con su ayuda es posible el
diseño de fábricas totalmente automatizadas que son capaces de trabajar de forma
ininterrumpida, con elevada productividad del trabajo y eficiencia. La base fundamental
de estas fábricas se encuentra en los robots, que se están construidos en base a los MP;
además de la introducción de los llamados sistemas de dirección automática de los
procesos tecnológicos.
Por otra parte, se trabaja de forma intensiva en la simplificación de la
comunicación del hombre con esta técnica: Actualmente las instrucciones a la máquina
se le dan fundamentalmente a través de un teclado, lo cual requiere de cierta
preparación por parte del operador y dificulta un poco el empleo de esta técnica por
parte del personal y los especialistas no totalmente identificados con su uso.
26
La introducción de softwares cada vez más sencillos de operar y por ende más "
amistosos" empleando el mouse, ha ayudado a simplificar la comunicación, pero se
desea desarrollar circuitos analizadores y sintetizadores de voz que faciliten aún más la
entrada y salida de la información de las computadoras. Cuando se logre que estos
circuitos puedan fabricarse de manera compacta, y puedan ser reducidos a escala de los
circuitos integrados, podremos darles las instrucciones a la máquina mediante la voz y
con ello podemos comunicarnos con la máquina de manera semejante a como lo
hacemos con otro ser humano.
2.9-) Desarrollo de los microprocesadores.
La firma INTEL dio inicio a la fabricación de MP en 1972 con el 8008 y a partir
de ahí ha desarrollado la fabricación de una larga serie de MP más potentes y
complejos.
El 8080 y su versión más desarrollada que apareció posteriormente, el 8085,
formaron parte de múltiples estructuras y equipos y tuvieron en su tiempo una gran
popularidad y demanda dentro de los MP de 8 bits.
El 8086 fue el primer MP de 16 bits elaborado por INTEL y presenta un bus de
datos de 16 bits, un bus de direcciones de 20 bits y emplea operandos de 16 bits. Fue
diseñado de forma tal de que fuese compatible con el nivel de lenguaje ensamblador
empleado por el 8080A, por lo que cualquier instrucción de este último puede ser
simulada por una combinación de instrucciones del 8086 y en general el grupo de
registros del 8080A es un subconjunto de los que posee el 8086. El 8088 es una versión
en 8 bits del 8086 desde el punto de vista de los buses de entrada y salida, pero presenta
registros internos d 16 bits, de igual forma que lo realiza el 8086.
El 80186 constituye una versión mejorada del 8086 que posee en su interior el
generador de los impulsos de sincronismo, la lógica de control de interrupciones, los
esquemas de temporalización y los controladores del acceso directo a memoria. El
esquema de este MP presenta un total de 68 terminales distribuidos en los 4 lados, y
posee dos veces mayor productividad en comparación con el 8086, además de poseer
mayor capacidad de carga en sus líneas fundamentales.
El 80286 constituyó un perfeccionamiento mayor del 8086, con una estructura
de 68 terminales que contiene también en su interior los esquemas para el control y
borrado de la memoria. Existen modelos con frecuencias de trabajo de 8 y 10 MHz. y
presenta un grupo de registros que no presenta el 8086 que le posibilita la ejecución de
una serie de instrucciones adicionales. Posee
una posibilidad mayor de
direccionamiento de memoria pues su bus de direcciones es de 24 bits.
En el desarrollo ulterior apareció en 1985 el 80386, que fue el primer procesador
de 32 bits de Intel con bus de datos y tamaño de registro de 32 bits. En el momento en
que hizo su aparición este MP la mayoría de las microcomputadoras eran compatibles
AT, con bus de 16 bits. Esto hacía que montar una microcomputadora con un 386 fuese
comparativamente caro ya que implicaba un rediseño total de la arquitectura existente y
cambiarla para 32 bits, es decir, cambio de la memoria, buses, etc. El costo que
implicaba era de por sí elevado, más aún teniendo en cuenta la no disponibilidad en el
momento de partes 32 bits compatibles.
27
El 80386 operaba con velocidad de 16 MHz., pero rápidamente subieron hasta
33, lo que le da la posibilidad de ejecutar de 3 a 5 millones de instrucciones por
segundo, además de que su capacidad de direccionamiento de memoria física alcanza
los 4 gigabytes. Los competidores de Intel, AMD y Cyrix llegaron a producirlo con
velocidades de hasta 40 Mhz. Su arquitectura permite realizar simultáneamente
operaciones de búsqueda de instrucciones, decodificación, ejecución y control de
memoria. La aceptación y el éxito de este MP estuvo dado por mantener sus
características de compatibilidad con sus predecesores 8086, 8088, 80186, 80286, pues
prácticamente todos los programas que fueron elaborados para estos últimos, también
son capaces de correr en el 80386.
Las microcomputadoras basadas en el 80386 operan con una mayor velocidad y
están capacitados para operar con sistemas operativos desarrollados especialmente para
máquinas de 32 bits lo que las hace más poderosas por tener la posibilidad de operar con
tareas independientes dentro de un sistema de tareas múltiples.
INTEL produjo como alternativa el 386SX, que no es más que un 386 "normal",
o sea, compatible en su juego de instrucciones, registros internos, etc., sólo que su
comunicación con el exterior se hace por un bus de 16 bits. Por tanto la diferencia
clásica entre 386 DX y 386 SX está en su bus externo.
El 80486 ó I486 cómo se conoce al procesador desarrollado por INTEL es un
MP tipo CISC (Complete Instruccion Set Computer) cuyas instrucciones más utilizadas
transcurren en un sólo ciclo de reloj, que unido al alto grado de integración logrado
hace que las frecuencias de reloj sean más altas y en eso han incidido versiones a 25,
33, 50 y 66 MHZ. En el 486 se utilizaron 1.25 millones de transistores (5 veces más que
el 386).
El I486 es un procesador de 32 bits interno y externo y está diseñado para
trabajar con sistemas de caché (basados en el controlador del propio INTEL 82385)
cosa que no tenía el 386 en ninguna de sus dos versiones. Este caché L1 de 8 K, está
directamente incorporada al procesador, lo que significó disminuir significativamente
los accesos a RAM y por tanto en funcionamiento más rápido y racional.
Ante el empuje de la competencia, INTEL lanza una variante más económica, el
486 SX, que se diferenciaba del original porque no incluía el coprocesador matemático,
o para ser más exactos, lo tenía desactivado. Para actualizar sus capacidades de punto
flotante al 486SX, Intel vendía un chip llamado 80487SX que se instalaba en la placa,
pero que en realidad se trataba de un DX con diferente patillaje que al ser instalado
desconectaba el procesador original y asumía el control de la configuración.
Cuando fue evidente que el 486 se había afianzado en el mercado y ante la
facilidad de producir versiones cada vez a mayores velocidades, surgió un nuevo
problema: la necesidad de cambiar continuamente la tarjeta del sistema para adecuarla a
la nueva velocidad. Sin embargo, al ser los accesos a los dispositivos del sistema
siempre mucho más lentos que la velocidad de operación del procesador, se podía
pensar en aumentar exclusivamente la velocidad de estos, dejando externamente el
sistema sin ningún cambio. Este fue el origen del 486 DX2 el cual opera al doble de la
velocidad de su tarjeta madre, es decir, en su versión DX2 a 50 MHz. el 486 está
operando a 50 MHz. en un sistema a 25 MHz. El aumento cada vez mayor de la
velocidad ha hecho posible el surgimiento en 1994 de los DX4 y ya un DX4 a 100
28
MHz. está montado sobre una tarjeta madre trabajando a la cómoda y más que
suficiente velocidad de 25 MHz. ó 33 Mhz. y sin embargo su procesador opera a 100
MHz. Tales procesadores usaban un voltaje de 3.3 v con el fin de conservar bajos
niveles de emisión del calor, aunque existieron versiones del DX4 a 5v que requirieron
nuevas tarjetas madres y que llevaban ventiladores para refrescar el chip.
La tecnología SL de INTEL fue originalmente desarrollada para lograr un
medio razonable en la conservación de las baterías de las máquinas portátiles, pero se ha
extendido hoy en día a la familia completa de procesadores I486 y pentium.
La tecnología SL abarca una serie de requisitos y modos de operación que
permiten reducir el consumo de energía y cumplen con el programa Energy Star.
Entre ellas:
1- System Management Modem (SMM). Este es un nuevo modo operativo de los
procesadores SL que permite la reducción del consumo energético apagando los
perisféricos o el sistema completo cuando lleva tiempo sin utilizarse.
2.- Static Technology. Tecnología que permite a todos los procesadores SL detener su
reloj, congelando el estado del mismo y el sistema de forma que puede ser reinicializado
en el mismo punto donde se detuvo.
3.- Processor Clock Control. Permite colocar al procesador en un estado de letanía y
bajo consumo, "Standby".
4.- Alimentación de 3.3 volts. El hecho de que estos procesadores sólo requieren 3.3
volts para su operación en vez de los típicos 5 volts, reduce el consumo energético en un
60 %.
Todo este sistema permite una disminución del consumo desde unos 250 watts hasta
unos 30 watts. Esta lógica de reducción de potencia constantemente está monitoreando
al sistema buscando periféricos inactivos (Por ejemplo el disco duro). Una vez
detectado un dispositivo en este estado, genera una interrupción (System Management
Interrupt-SMI) al procesador el cual pasa de modo real a SMM. Aquí se toma una
"instantánea" de todo el sistema y se almacena su estado en una zona de memoria
llamada SM RAM . Esta zona es inviolable y no puede ser accedida por ningún
SOFTWARE. El procesador ejecuta una rutina del BIOS que "apaga" al perisférico en
cuestión. El proceso inverso ocurre al activarse nuevamente el perisférico y este
procedimiento es virtualmente instantáneo.
Ciryx con su 586 al que llamó M1 alcanzaba velocidades de 100 y 120 Mhz e incluía
un bus interno de 64 bits, un canal de 6 etapas (una más que el 486 ) y era compatible
con las tarjetas madres del 486. No obstante sus excelencias, llegó tarde al mercado
ganado en aquel tiempo por la descomunal campaña de Intel para sus pentiums.
INTEL sacó a la luz un nuevo MP conocido con el nombre de "Pentium" que seguía
siendo un procesador de arquitectura CISC pero incluyó varias tecnologías RISC en su
diseño que le permitieron alcanzar los 300 MIPS (millones de instrucciones por
segundo). Todas las versiones de pentium poseen más de 3 millones de transistores
integrados y requieren radiadores con ventilador para disipar el calor de su
funcionamiento. El nuevo procesador ofrecía una arquitectura superescalar, dos canales
en lugar de uno como el 486 y la tecnología de predicción de ramificaciones que le
permitía minimizar las demoras que suceden cuando una instrucción compleja retrasa la
ejecución de otras. También incrementó el ancho de banda del bus hasta 64 bits. Incluyó
29
dos cachés de nivel 1 (L1) independientes, uno para los datos y otro para las
instrucciones de cálculo decimal que constituyen la base para las aplicaciones gráficas y
de multimedia.
La competencia llegó, y AMD lanzó su K5 y Cyrix el 5X86. El K5 es un procesador
RISC y a diferencia de las dos etapas de canales del Pentium ofrece seis. Es en opinión
de muchos especialistas superior al Pentium, pero llegó tarde al mercado y no alcanzó
los niveles de velocidad esperados, por lo que apenas logró difusión en la construcción
de ordenadores. Por su parte el 5X86 es un procesador totalmente CISC con dos canales
y seis etapas por cada uno de estos, lo que difiere del diseño del pentium con dos
canales y cinco etapas y ofrece según los expertos una mejor predicción de
ramificaciones y ejecución fuera de orden. Es en suma un buen procesador, pero
tampoco logró hacerse con el mercado que siguió teniendo un único dueño.
Intel sorpresivamente cambió el standard que hasta ese momento había seguido en la
industria, ¿razones?, pues el auge de las aplicaciones multimedia y el peso que cobraron
grandes programas con complicados efectos gráficos, como los juegos para ordenador,
que exigieron un mejor desempeño del hardware y específicamente de las CPU.
Así surge en 1997 el pentium MMX, (P-MMX) procesador que incorpora 57
instrucciones adicionales, diseñado para mejorar la capacidad multimedia. Además el
canal aumentó de 5 a 6 etapas y los dos cachés L1 aumentaron de 8 a 16K y mejoró
mucho la predicción de ramificaciones, por lo que el MMX no es un retoque del
pentium, sino que es de por sí un nuevo diseño cualitativamente superior.
En 1996, casi un año antes del P-MMX, Intel sacó el Pentium Pro (P-Pro). Parte en su
diseño de una concepción similar al pentium, pero ofrece avances tales como: una nueva
forma de ejecutar las instrucciones y un aumento de las etapas del canal de 5 a 14 con 3
canales en lugar de 2 a una velocidad de ejecución resultante mucho mayor. Incluye un
caché integrado L2 de 256 K además de 2 cachés L1 de 16 K, que eleva en
consideración sus prestaciones, pero también su precio, y ello automáticamente lo
relegó para la construcción de grandes servidores, lejos de los sistemas PC de uso
doméstico o profesional más modestos.
En el centro del P-Pro existe un procesador RISC, mientras que las instrucciones
CISCX86 se forman a partir de microinstrucciones RISC más sencillas y por
consiguiente se ejecutan con mayor rapidez. Tiene 5.5 millones de transistores los
cuales generan una considerable cantidad de calor lo que exige el uso de disipadores y
micro ventiladores.
La solución a los problemas de costo y desempeño del Pentium-Pro llegó con la
aparición en 1996 (y lanzado en 1997) del pentium II, (P II) que duplica las caches L1 a
32 K y una nueva L2 de 512K, más grande, pero fuera del procesador como en el P-Pro.
La nueva caché L2 se comunica con el chip por medio de un bus propio que trabaja a la
mitad de la velocidad de este. P II incorpora también en las últimas versiones un bus de
100 MHz, lo que mejora notablemente sus prestaciones. Como resultado, Intel pudo
ubicar en el mercado un procesador mas económico, aunque no tan rápido como el PPro, pero este inconveniente es mínimo pues se logró dejar atrás la barrera de los 450
Mhz. Posteriormente existió un P II conocido como Xeón, optimizado para trabajar en
30
servidores, que fue aceptado por los especialistas como relevo del ya entonces algo
desfasado P-Pro.
En los predios del mercado apareció luego el esperado pentium III (P III) o Katmai que
tenía como principal novedad la inclusión de 70 nuevas instrucciones conocidas como
las MMX2 o KNI (Katmai New Instructions). Trabaja a voltajes de 1,8 volts, posee
tamaño más reducido y menor consumo energético, gracias a la tecnología de 0.25
micras empleadas en su fabricación (próximamente a 0.18 micras). Los primeros
modelos, con núcleo Katmai, se fabricaron todos en el mismo formato Slot 1 de los
Pentium II, pero la actual revisión Coppermine de este micro utiliza mayoritariamente
el Socket 370 FC-PGA.
Muchos denominaron al Pentium III Coppermine "el auténtico Pentium III", porque al
tener sus 256 KB de caché secundaria integrados en el núcleo del micro su rendimiento
mejora en todo tipo de aplicaciones (incluso las no optimizadas).
El Celeron (Pentium II light), resultó ser un Pentium II sin la caché secundaria, fue
construido para liquidar el mercado de placas base tipo Pentium no II (con socket 7, que
se dice) y liquidar definitivamente a AMD y otras empresas que usan estas placas. Sin
embargo, resultaba realmente muy poco recomendable, por poseer un rendimiento
mucho más bajo que el de Pentium II, pues era casi idéntico al del Pentium MMX.
AMD logró a finales del 97 el K6 que de inmediato fue un formidable contrincante para
el P-Pro, con su favorable handicap de menor costo. Presenta una caché L1 de 64K, una
extensa tabla de predicción de ramificaciones, así como 7 unidades de ejecución
paralela y el juego de instrucciones MMX. En las pruebas realizadas dejó atrás a los
Pentium MMX de igual velocidad de reloj y se acercó notablemente al desempeño de
los Pentium II. Posteriormente se puso a la venta el K 6-2, que incorpora tecnología de
0.25 micras y mejoraba notablemente el desempeño del procesador en cuanto a
velocidad y capacidad multimedia, sentando un nuevo standard en las instrucciones
3Dnow (algo así como un MMX para 3D).
El K6-III resultó ser un micro casi idéntico al K6-2, excepto por el "pequeño detalle" de
que incluye 256 KB de caché secundaria integrada, corriendo a la velocidad del micro
(es decir, a 400 MHz o más), al estilo de los Celeron Mendocino. Esto le hace mucho
más rápido que el K6-2 (en ocasiones, incluso más rápido que el Pentium III) en
aplicaciones que utilicen mucho la caché, como las ofimáticas o casi todas las de índole
"profesional"; sin embargo, en muchos juegos la diferencia no es demasiado grande (y
sigue necesitando el uso de las instrucciones 3DNow! para exprimir todo su potencial).
El AMD Athlon (K7) resultó ser la gran apuesta de AMD: un micro con una
arquitectura totalmente nueva, que le permitió ser en su tiempo el más rápido en todo
tipo de aplicaciones. Con 128 KB de caché de primer nivel (cuatro veces más que el
Pentium III), bus de 200 ó 266 MHz (realmente 100 ó 133 MHz físicos con doble
aprovechamiento de cada señal), 512 ó 256 KB de caché secundaria (los 256 KB
integrados le posibilitaban ser más rápido), instrucciones 3DNow! para multimedia... y
el mejor micro de todos los tiempos en cálculos matemáticos.
Su único y mínimo inconveniente radicaba en que necesita placas base específicamente
diseñadas para él, debido a su novedoso bus de 200 MHz o más y a sus métodos de
conexión, "Slot A" (físicamente igual al Slot 1 de Intel, pero incompatible con él... entre
otras cosas porque Intel no quiso dar licencia a AMD para utilizarlo) o "Socket A" (un
31
zócalo cuadrado similar al Socket 370, pero con muchos más pines). Los modelos
actuales usan el núcleo Thunderbird, con la caché secundaria integrada.
El AMD Duron resultó un micro casi idéntico al Athlon Socket A (no existe para Slot
A) pero con menos memoria secundaria (64 KB), aunque integrada (es decir, más
rápida, la caché va a la misma velocidad que el micro); Con él se obtuvo una fantástica
relación calidad/precio.
Cyrix por su parte presentó el M II que posee un diseño superescalar, dos canales
separados, 64K de caché L1, una novedosa caché auxiliar de 256k que acelera
notablemente el desempeño de la CPU y predicción múltiple de ramificaciones. Este es
un procesador completamente CISC (a diferencia del K6 y del P II), que no llegó a
alcanzar el desempeño del K 6, pero se situó dignamente en el sector de las llamada
“máquinas de bajo costo”.
La última apuesta de Intel, el Pentium 4, representó todo un cambio de arquitectura;
pese a su nombre, internamente poco o nada tiene que ver con otros miembros de la
familia Pentium.
Se trata de un micro peculiar: su diseño permite alcanzar mayores velocidades de reloj
(más MHz... y GHz), pero proporcionando mucha menos potencia por cada MHz
que los micros anteriores; es decir, que un Pentium 4 a 1,3 GHz puede ser MUCHO
más lento que un Pentium III a "sólo" 1 GHz. Para ser competitivo, el Pentium 4 debe
funcionar a 1,7 GHz o más.
Por otro lado, incluye mejoras importantes: bus de 400 MHz (100 MHz físicos
cuádruplemente aprovechados) y nuevas instrucciones para cálculos matemáticos, las
SSE2. Éstas son muy necesarias para el Pentium 4, ya que su unidad de coma flotante es
MUCHÍSIMO más lenta que la del Athlon; si el software está específicamente
preparado (optimizado) para las SSE2, el Pentium 4 puede ser muy rápido.
Desde el punto de vista físico, el Pentium 4 necesita placas bases diseñadas
específicamente para él. El chip en sí viene en formato zócalo y tiene 423 pines; por
tanto, su zócalo se llama "Socket 423". Necesita una carcasa, una fuente de
alimentación (ambas ATX 2.03) y un ventilador y un disipador específicos, todo ello
por consideraciones de consumo y estabilidad, porque el sistema de fijación del sistema
de refrigeración es bastante complicado y va anclado con tornillos a la carcasa.
La caché L2, integrada en el micro y de 256 bits, es una mejora de la tecnología
"Advanced Transfer Cache " estrenada con el Pentium III; puede alcanzar 48 GB/s en
el modelo de 1,5 GHz. Esto representa el doble de lo que puede hacer un Pentium III de
la misma velocidad, y es mucho más de lo que puede alcanzar un AMD Athlon, sobre
todo porque en éste la caché L2 tiene un bus de sólo 64 bits.
Finalmente, un detalle positivo: el núcleo del micro está mejor protegido que antes,
gracias a un disipador de calor integrado sobre el mismo (por eso tiene ese aspecto
metálico).
Todos estos datos son para el Pentium 4 versión 1.0, pero el desarrollo de estos micros
se ha venido perfeccionando En la actualidad existen procesadores mucho mas
poderosos. La compañía Intel acaba de lanzar al mercado su nuevo procesador Intel
Pentium 4 de 3.0GHz y ya hoy se anuncian versiones capaces de trabajar a velocidades
mayores lo cual representa un salto bastante importante.
32
En las plataformas no “Wintel”(elipsis de las palabras Windows e Intel) aparecen como
notables los SPARC concebidos para las estaciones UNIX de Sun y otros
desarrolladores de este entorno, cuyo desempeño es la base, entre otros usos, de la
industria de los efectos especiales, muestra de los cuales son los filmes TITANIC y
Toy’s Story.
Por otra parte anda el G-3, corazón de los Macintosh, uno de cuyos modelos, el iMac
barrió con las cifras de ventas en Europa y Estados Unidos en el 1er trimestre de 1999.
Por ejemplo, el G-3 de 266 Mhz superó en todo, desde las operaciones con pto. Flotante
hasta el trabajo con gráficos y texturas en 3D, al P Pro y P II de 300 Mhz. montados en
configuraciones similares. Tiene arquitectura completamente RISC, basada en
instrucciones más sencillas que se ejecutan a una mayor velocidad real.
Con lo expuesto hasta aquí basta para que el lector se percate de la rapidez con que se
desarrollan estos dispositivos y de la importancia que tiene para un profesional el poseer
un mínimo de conocimiento de su evaluación y de sus posibilidades.
CONSIDERACIONES FINALES
El desarrollo explosivo de la técnica de los MP y su empleo cada vez más extendido en
múltiples campos de la ciencia, han obligado a la introducción de sus estudios en los
programas de las asignaturas de electrónica que aparecen incluidos en los planes de
estudio de las carreras de ingeniería .
Esperamos que con el estudio de este material los estudiantes puedan alcanzar un
conocimiento elemental sobre esta temática y comprendan la importancia de desarrollar
una profundización ulterior en las aplicaciones vinculadas a la rama de la ingeniería que
les corresponda.
33
BIBLIOGRAFIA
- Microprocessor and Instrumentation.Mirsky G. Editorial Mir 1987
- Sistem Design with microprocessor .Zibson D. Academic Press 1984
- Microprocesadores . Angulo J. Ma. Ediciones R 1989 .
- Sistemas de Control con Microprocesadores. Lage J., Pascual M.
- Microelectronic .Millmanm J.
- Microprocessor Handbook .Greenfield Joseph .Ediciones R 1988.
- Los microprocesadores y las microcomputadoras y su aplicación en la automatización
de máquinas y equipos. Kostikoba G. Vuishaia Shkola. 1988
- Microprocessor Handbook 80386
-Fundamentos de los microprocesadores. Tokheim Roger. Ediciones R. 1988.
-Revista GIGA. Colombus. Copextel, S.A. 1997-2001.
34
MEMORIA
PRINCIPAL
DATOS
INSTRUCCIONES
bus de datos
bus de control
Registro de
Direcciones
ACUMULADOR
+1
Unidad
Lógico
Aritmética
Registros
De
UtilizaCión Gral.
Registro de Instrucciones
Señales de
Sincronización
Y Control
DECODIFICADOR
Comandos o Direcciones
Reg.Indicadores
BLOQUE DE PROCESAMIENTO
BLOQUE DE CONTROL
ESTRUCTURA TÍPICA DE UN MICROPROCESADOR de 8 bits.
1
Contador
de
Programa
Descargar