2-4: MicroProcesadores (I)
Chica4xs
chica4xs@0ri0n.org
INTRODUCCION
Hola Lector(es), pues bueno, este texto tiene como finalidad enseñarle un poquito sobre los Microprocesadores pero en especifico sobre la Z80; para los proximos articulos pues le enseñare como programar en estos tipos de arquitecturas pero para ello deben manejar los terminos basicos y su evolucion, espero que les guste y cualquier duda o sugerencia pueden hacerla via email, Ok.
EL MICROPROCESADOR
Bueno, Se trata de una unidad central de proceso contenida totalmente en un circuito integrado. Comenzaba asi la gran carrera en busca de lo mas rapido, mas pequeño; rapidamente el mundo del computador empezo a ser accesible a pequeñas empresas e incluso en el ambito domestico. Dentro de un Microprocesador encontramos:
- La Unidad Logica-Aritmetica: Es donde se efectuan las operaciones aritmeticas (suma, resta, y a veces producto y division) y logicas (and, or, not, etc.).
- El Decodificador de instrucciones: Alli se interpretan las instrucciones que van llegando y que componen el programa.
- El Bloque de registros: Los registros son celdas de memoria en donde queda almacenado un dato temporalmente. Existe un registro especial llamado de indicadores, estado o flags, que refleja el estado operativo del microprocesador.
- El Bloque de control de buses internos y externos: supervisa todo el proceso de transferencias de informacion dentro del microprocesador y fuera de el.
CLASIFICACION DE LOS MICROPROCESADORES
Existen dos criterios principales para la clasificacion de los microprocesadores, uno se basa en la longitud de palabra y el otro en la tecnologia de fabricacion.
La longitud de palabra se refiere al numero de bits que puede procesar simultaneamente un microprocesador y esta determinado por su arquitectura, es decir, por el tamaño de los registros, de la ALU y de los buses internos.
La longitud de palabra de los microprocesadores ha ido creciendo a traves de los años, desde los 4 bits del primer microprocesador hasta los 32 bits de los microprocesadores mas recientes. En la generalidad de los casos se utilizan microprocesadores de 8 bits y de 16 bits, los primeros son mas usuales por haber sido de mas temprana su aparicion y porque tienen disponible un amplio soporte de programacion y circuiteria.
En lo que toca a las tecnologias de fabricacion, los primeros microprocesadores se implantaron con tecnologia PMOS, sin embargo actualmente la tecnologia de fabricacion de microprocesadores mas difundida es la NMOS. Ultimamente se ha desarrollado bastante la tecnologia CMOS para dispositivos con bajo consumo de energia.
EVOLUCION DE LOS MICROPROCESADORES DE 8 BITS
En 1971 la compañia Intel anuncio la aparicion del primer microprocesador denominado el 4004. Este era de 4 bits, estaba implantado con la tecnologia PMOS, tenia 45 instrucciones y ejecutaba 60000 operaciones por segundo.
Al siguiente año, la misma compañia introdujo el 8008 que fue el primer microprocesador de 8 bits; tambien implantado con tecnologia PMOS. El 8008, ademas de tener una longitud de palabra mayor, contaba con 48 instrucciones, podia ejecutar 300000 operaciones por segundo y direccionaba 16 kbytes de memoria. Sin embargo, para poder funcionar requeria casi de 20 circuitos de soporte.
Hasta ese momento, el principal objetivo de los microprocesadores era reemplazar compuertas SSI (small scale integration) y mSI (medium scale integration).
EL MICROPROCESADOR 8080
Avances posteriores en la tecnologia de circuitos integrados, permitieron que a principios de 1974 Intel anunciara el 8080, un microprocesador de 8 bits mucho mas poderoso.
El 8080 tenia 78 instrucciones, en las cuales se incluian todas las de 8008. Ademas de su velocidad de operacion era diez veces mayor que la del 8008 y podia direccionar hasta 64 Kbytes de memoria. La tecnologia de fabricacion usada fue la NMOS y gran parte de la logica de soporte se incluyo en el mismo circuito del microprocesador; gracias a esto era posible construir un sistema con solo seis circuitos integrados. Pero sobre todo la principal diferencia del 8080 con respecto a los microprocesadores anteriores era que no habia sido diseñado simplemente para sustituir compuertas logicas, sino que se le habia dotado con la capacidad de una computadora. Esto origino una revolucion tecnologica en el campo de la electronica digital.
LA FAMILIA MOTOROLA
En respuesta al exito de 8080, la compañia Motorola introdujo tambien en 1974 un microprocesador de 8 bits con 72 instrucciones, el 6800. Al mismo tiempo aparecio una familia de circuitos perifericos diseñados especialmente para conectarse al microprocesador.
En 1975, la compañia Mos Technology anuncio dos microprocesadores, el 6501, toda la circuiteria para generar la señal de reloj. Hasta entonces la señal del reloj se habia generado en circuitos externos al microprocesador.
Ed Roberts construyo en 1975 el Altair 8800 basandose en el 8080; aunque esta maquina no tenia teclado ni pantalla (solo interruptores y luces), era una arquitectura abierta (conocida por todo el mundo) y cuyas tarjetas se conectaban a la placa principal a traves de 100 terminales, que mas tarde terminarian convirtiendose en el bus estandar S-100 de la industria.
LOS MICROPROCESADORES Z-80 Y 8085
En 1976, la compañia Zilog introdujo el Z-80, un microprocesador NMOS de 8 bits basado en el 8080 pero apreciablemente mejorado , tanto en software como en hardware. El z-80 resulto ser un microprocesador mucho mas rapido y facil de usar, ya que solo requeria de una fuente de alimentacion de 5 volts y toda la circuiteria de soporte estaba incluida en el circuito integrado. Su codigo de instrucciones contenia las 78 del 8080, lo que le permitia ejecutar todos los programas escritos para este ultimo, asi como 80 instrucciones mas en total 158.
Junto con el microprocesador Z-80 (Z80 CPU), Zilog introdujo varios circuitos perifericos, tales como el controlador de puertos en paralelo (Z80 PIO), el controlador de puertos en serie (Z80 SIO) y el circuito timer/contador (Z80 CTC). Todos ellos quedaron agrupados dentro de la familia z-80.
El Apple-I aparecio en 1976, basado en el microprocesador de 8 bits 6502, en aquel entonces un recien aparecido aunque casi 10 veces mas barato que el 8080 de Intel. Fue sucedido en 1977 por el Apple-II. el Apple-II tenia un limite maximo de 48 Kbytes de memoria. En el mismo año, Commodore saco su PET con 8 Kbytes. Se utilizaban cintas de casete como almacenamiento, aunque comenzaron a aparecer las unidades de disquete de 51/4. Durante finales de los 70 aparecieron muchos otros ordenadores, fruto de la explosion inicial del microprocesador.
En 1977, Intel anuncio el microprocesador 8085, el cual combinaba el 8080, el circuito de reloj y el controlador del sistema en un solo circuito integrado. Al igual que el Z-80, el 8085 estaba fabricado con tecnologia NMOS y requeria un voltaje unico de 5 voltios. El 8085 se optimizo para que pudiera formar un sistema completo utilizando dos circuitos perifericos especiales, uno de ellos con memoria RAM, puertos de entrada/salida y un timer (8155 u 8156) y el otro con memoria ROM o EPROM y puertos (8355 u 8755). Sin embargo, en programacion su aportacion fue practicamente nula, ya que solo aumento en dos las instrucciones del 8080.
LOS MICROS DE LOS 80's
En 1980, Sir Clive Sinclair lanzo el ZX-80, seguido muy poco despues del ZX-81. Estaban basados en un microprocesador sucesor del 8085 de Intel: el Z80 (desarrollado por la empresa Zilog, creada por un ex-ingeniero de Intel). Commodore irrumpio con sus VIC-20 y, posteriormente, el Commodore 64, basados aun en el 6502 y, este ultimo, con mejores posibilidades graficas y unos 64 Kb de memoria. Su competidor fue el ZX-Spectrum de Sinclair, tambien basado en el Z80, con un chip propio para gestion de graficos y otras tareas, la ULA, que permitio rebajar su coste y multiplico su difusion por europa, y en particular por España. Sin embargo, todos los ordenadores domesticos de la epoca, como se dieron en llamar, estaban basados en procesadores de 8 bits y tenian el limite de 64 Kb de memoria. Los intentos de rebasar este limite manteniendo aun esos chips por parte de la plataforma MSX (supuesto estandar mundial con la misma suerte que ha corrido el Esperanto) o los CPC de Amstrad, de poco sirvieron.
El IBM PC
Y es que IBM tambien fabrico su propio ordenador personal con vocacion profesional: el 12 de agosto de 1981 presento el IBM PC. Estaba basado en el microprocesador 8088, de 16 bits, El equipamiento de serie consistia en 16 Kbytes de memoria ampliables a 64 en la placa base (y a 256 añadiendo tarjetas); el almacenamiento externo se hacia en cintas de casete, aunque pronto aparecieron las unidades de disco de 51/4 pulgadas y simple cara (160/180 Kb por disco) o doble cara (320/360 Kb). En 1983 aparecio el IBM PC-XT, que traia como novedad un disco duro de 10 Mbytes. Un año mas tarde apareceria el IBM PC-AT, introduciendo el microprocesador 286, asi como ranuras de expansion de 16 bits (el bus ISA de 16 bits) en contraposicion con las de 8 bits del PC y el XT (bus ISA de 8 bits), ademas incorporaba un disco duro de 20 Mbytes y disquetes de 51/4 pero con 1.2 Mbytes.
En general, todos los equipos con procesador 286 o superior pueden catalogarse dentro de la categoria AT; el termino XT hace referencia al 8088/8086 y similares.
ARQUITECTURA DEL MICROPROCESADOR Z-80
Las caracteristicas fundamentales del Z80 son:
- El transporte de señales se realiza sobre tres buses, el bus de direcciones, el bus de datos, asi como el bus de control.
- Regimen de interrupcion uniforme, con la posibilidad de encadenar las prioridades de los circuitos perifericos.
- Alto grado de programabilidad.
- Reloj unico.
- Fuente de voltaje unica de +5 Volts.
Un sistema con Z80 se completa con el empleo de memorias estandar de lectura y memorias estaticas o dinamicas de lectura y escritura, ademas pertenecen al sistema, puertos de entrada y salida paralelo, interfaces de comunicacion serie, sistemas contadores temporizadores y circuitos de acceso directo a memoria.
El funcionamiento del sistema consiste en que las instrucciones del microprocesador, que estan en la memoria ROM, se ejecutan en una forma secuencial de operacion, la fuente d e datos es, la propia CPU, los perifericos o las memorias, la transferencia interna de datos es a traves del CPU, exceptuando la transferencia de datos en el proceso de acceso directo a memoria.
REGISTROS INTERNOS
La CPU Z-80 contiene 208 bits de memoria de lectura/escritura dividida en 18 registros de 8 bits y 4 registros de 16 bits.
REGISTROS DE PROPOSITO GENERAL
------------------- -----------------
| BANCO PRINCIPAL | | BANCO ALTERNO |
------------------- -----------------
| A | F | | A' | F' |
| B | C | | B' | C' |
| D | E | | D' | E' |
| H | L | | H' | L' |
------------------- -----------------
REGISTROS DE PROPOSITO ESPECIAL
--------------------------------------------------------
| VECTOR DE INTERRUPCIoN I | REFRESCADO DE MEMORIA R |
--------------------------------------------------------
| REGISTRO INDICE IX |
| REGISTRO INDICE IY |
| STACK POINTER SP |
| PROGRAM COUNTER PC |
--------------------------------------------------------
Los registros incluyen dos conjuntos o "bancos" de seis registros de proposito general que pueden usarse individualmente como registros de 8 bits o en pares como registros de 16 bits. El banco principal consiste en los registros BC, DE y HL, en tanto que el banco alterno comprende los registros B'C', D'E' y H'L' Tambien hay dos acumuladores (A y A') y dos registros banderas (F y F' ). Sin embargo solo es posible trabajar a un tiempo con uno de los bancos de registros. En los registros de uso especifico se encuentran el contador de programa (Program Counter), el apuntador de pila (stack pointer), los registros indices(index registers), el registro de refrescado (refresh register) y el registro del vector de interrupcion (interrupt register).
LA UNIDAD ARITMETICA Y LOGICA (ALU)
La unidad aritmetico-logica es de 8 bits y ejecuta las instrucciones aritmeticas y logicas de la CPU. Internamente la ALU se comunica con los registros y el bus externo de datos a traves del bus interno de datos.
Efectua las siguientes operaciones;
- Suma (rotaciones o desplazamientos hacia la derecha o izquierda, aritmeticos o logicos).
- Operaciones logicas.
- Complementar a dos.
- Registro de resultados importantes como el acarreo, signo, acarreo auxiliar, paridad o si el resultado es zero.
- Comparaciones
- Poner, Limpiar o probar un bit
LA UNIDAD DE CONTROL
Despues de obtener una instruccion de la memoria, se coloca en el registro de instrucciones y se decodifica. La unidad de control lleva a cabo esta funcion y luego genera todas las señales de control para leer o escribir datos en los registros, controlar la ALU y emitir las señales de control externas que se requieran.
REGISTROS DE INDICE IX e IY
Estos son registros de 16 bits cada uno y conservan direcciones base que se usan para modo de direccionamiento indexado, en este modo un registro de indice se usa como base para apuntar a una region de la memoria. La direccion efectiva de la localidad de memoria a donde se va a depositar el dato o de donde se va a leer, se obtiene, al sumar el contenido del registro de indice y el valor de 8 bits contenido en el campo de "desplazamiento" de las instrucciones que emplean direccionamiento con indice, estos desplazamientos se especifican con numeros enteros signados con el complemento a dos.
REGISTRO DE INTERRUPCIONES
El Z80 opera en modo de interrupcion en el que responde como una "llamada" indirecta en respuesta a una solicitud de interrupcion. El registro I se usa para este proposito almacenando los 8 bits mas significativos de la direccion indirecta mientras que el dispositivo que interrumpe proporciona los 8 bits menos significativos de la direccion indice, esta caracteristica permite que las rutinas servicio de las interrupciones se localicen en cualquier parte de la memoria y que se puedan accesar en un tiempo muy corto.
EL CONTADOR DE PROGRAMA (PC)
Es un registro de 16 bits, que continuamente tiene la direccion de la localidad de memoria siguiente que se va a accesar, de esa localidad obtiene el codigo d e la instruccion a ejecutarse, en la CPU el PC se incrementa en uno, cada vez que el microprocesador lee el codigo de la instruccion contenida en la localidad direccionada, de esta forma el contador del programa direcciona secuencialmente las localidades de la memoria ROM, donde se encuentra almacenado el programa.
EL APUNTADOR DEL STACK (SP)
El microprocesador Z80 cuenta con el registro de pila (SP) o stack pointer que contiene una direccion de memoria RAM a partir de la cual y en forma descendente, se almacenan los contenidos de un par de registros, o a partir del cual en forma ascendente se obtienen los ultimos dos datos de 8 bits almacenados en esa area, el SP es un registro de 16 bits, para almacenar en el stack el contenido de un par de registros se utiliza la instruccion PUSH y para cargar a un par de registros con los dos ultimos bytes del stack se utiliza la instruccion POP.
PROGRAMACION ELEMENTAL
La funcion de cualquier sistema basado en un microprocesador se implanta por medio de transferencias de datos entre los registros del mismo, la memoria y los dispositivos de entrada/salida, y de transformaciones de datos que ocurren en los registros internos del microprocesador. Las clases de transferencias y d e transformaciones que son posibles se especifican en el codigo de instrucciones. Cada microprocesador esta diseñado para ejecutar un codigo particular de instrucciones.
FORMATO DE LAS INSTRUCCIONES
Una instruccion especifica la operacion que debe ser realizada por el microprocesador. Cada instruccion esta dividida en secciones o campos, donde cada campo es un conjunto de bits que proporcione parte de la informacion requerida para saber el tipo de operacion a ejecutar y la localizacion de los operandos en los que esta se realizara. Desde un punto de vista simplificado, todas las instrucciones pueden ser representadas como un codigo de operacion, seguido de campos adicionales que contienen los operandos de la instruccion, generalmente constantes numericas o direcciones.
El codigo de operacion determina la actividad que se llevara a cabo. Ademas indica cual es el contenido de las siguientes localidades de memoria en el programa, es decir, si contienen un dato, una direccion, un desplazamiento u otro codigo de operacion. Por razones de eficiencia es conveniente que el codigo de operacion resida totalmente en la primera palabra de la instruccion; este es un factor limitante en el numero de instrucciones disponibles en un microprocesador. Cuando su longitud de palabra es de 8 bits, se pueden tener hasta 256 codigos de operacion diferentes en un byte.
En el caso del Z-80, los codigos de operacion son en general, de un byte, a excepcion de instrucciones especiales que requieren un codigo de operacion de dos bytes. Tomando en cuenta la informacion que necesita cada instruccion ademas del codigo de operacion, en el Z-80 existen instrucciones de uno, dos, tres o cuatros bytes.
Por cada byte de la instruccion, la unidad de control tiene que realizar un ciclo maquina durante el cual se lee este byte de la memoria. Por lo tanto, mientras mas corta sea una instruccion mas rapido Serra ejecutada.
INSTRUCCIONES DE UN BYTE
Son las mas rapidas. Un ejemplo comun es LD r,r' (cargar el contenido del registro r' en el registro r), esta es una operacion de registro a registro, la cual permite la transferencia de informacion entre dos de los registros internos del microprocesador .
Cualquier instruccion debe ser representada internamente en sistema binario. La expresion LD r, r' es simbolica y se denomina el MNEMONICO de la instruccion, sin embargo, esta es la forma mas conveniente de mostrarle desde el punto de vista del programador. El codigo binario que constituye esta instruccion dentro de la memoria es 01DDDSSS. Esta representacion es todavia parcialmente simbolica. Cada una de las letras S y D ocupa el lugar de un bit. Las letras DDD se refieren a los tres bits que identifican al registro que actua como destino de la informacion.
Estos tres bits permiten seleccionar uno de los ocho registros posibles. Por ejemplo la clave para el registro C es 001.
De modo similar SSS representa los tres bits que apuntan al registro donde se origina la transferencia de informacion. La convencion que se sigue es que el registro r' es el origen y el registro r es el destino.
Aun cuando aparentemente el mnemonico de la instruccion esta al reves (primero el destino y despues el origen), se ha escogido esta convencion para mantener la compatibilidad con la notacion binaria, la cual ha sido diseñada para facilitarle la tarea a la unidad de control.
-----------------
BYTE 1 |COD. OPERACION |
-----------------
INSTRUCCIONES DE DOS BYTES
Algunas instrucciones requieren que un dato este inmediatamente despues del codigo de operacion; entonces son necesarios dos bytes. Ejemplo: la instruccion ADD A,n suma el contenido del segundo byte de la instruccion con el acumulador. Este segundo byte es un dato o constante numerica que es tratado como un grupo de ocho bits sin ningun significado particular.
El codigo binario de esta instruccion es 11000110 seguido de un dato de ocho bits.
------------------ ------------------
BYTE 1 | COD. OPERACION | | COD. OPERACION |
------------------ ------------------
BYTE 2 | COD. OPERACION | | DATOS |
------------------ ------------------
INSTRUCCIONES DE TRES BYTES
En ocasiones, la instruccion puede necesitar la especificacion de alguna direccion. Una direccion requiere 16 bits, o sea 2 bytes. De lo anterior se desprende que, incluyendo el codigo de operacion, la instruccion es de tres bytes.
Ejemplo: la instruccion JP pq tiene como funcion producir un salto en el programa a la direccion señalada por "pq". En binario esta instruccion esta representada por el codigo 11000011, seguido de 8 bits para el byte bajo de la direccion y 8 bits mas para el byte alto de la misma.
------------------ ------------------ ------------------
BYTE 1 | COD. OPERACION | | COD. OPERACION | | COD. OPERACION |
------------------ ------------------ ------------------
BYTE 2 | DATO BAJO | | DIRECCION BAJA | | COD. OPERACION |
------------------ ------------------ ------------------
BYTE 3 | DATO ALTO | | DIRECCION ALTA | | DESPLAZAMIENTO |
------------------ ------------------ ------------------
INSTRUCCIONES DE 4 BITS
------------------ -------------------
BYTE 1 | COD. OPERACION | | COD. OPERACION |
------------------ -------------------
BYTE 2 | COD. OPERACION | | COD. OPERACION |
------------------ -------------------
BYTE 3 | DATO ALTO | | DIREACCION BAJA |
------------------ -------------------
BYTE 4 | DATO BAJO | | DIRECCION BAJA |
------------------ -------------------
------------------ -------------------
BYTE 1 | COD. OPERACION | | COD. OPERACION |
------------------ -------------------
BYTE 2 | COD. OPERACION | | COD. OPERACION |
------------------ -------------------
BYTE 3 | DESPLAZAMIENTO | | DESPLAZAMIENTO |
------------------ -------------------
BYTE 4 | DATO | | COD. OPERACION |
------------------ -------------------
CLASES DE INSTRUCCIONES
Con base en la funcion que desempeñan las instrucciones que es capaz de ejecutar el microprocesador z-80 se pueden agrupar en varias clases:
INSTRUCCIONES DE TRANSFERENCIA DE DATOS
Mueven informacion entre los registros internos de la CPU, o entre los registros y la memoria externa. Todas estas instrucciones deben especificar el lugar de donde la informacion Serra obtenida (origen) y el lugar donde Serra trasladada(destino). Las instrucciones de transferencia de datos en el z-80 se pueden agrupar en 5 categorias: transferencias de 8 bits, transferencias de 16 bits, intercambios, operaciones de pila y transferencia de bloques.
INSTRUCCIONES DE PROCESAMIENTO DE DATOS
Operan sobre la informacion almacenada en el acumulador y otros registros de proposito general o en localidades de memoria externa. Los resultados de las operaciones se colocan en el acumulador, y el estado de las banderas se determina de acuerdo con aquellos.
Estas instrucciones incluyen: operaciones aritmeticas (suma y resta), operaciones logicas (AND, OR, XOR, complemento), operaciones de incremento y decremento, operaciones de rotacion y desplazamiento, y operaciones de manipulacion de bits (set, reset, test).
INSTRUCCIONES DE TRANSFERENCIA DE CONTROL
Son aquellas que trasladan el control del programa a una direccion determinada. Estas instrucciones cambian el flujo normal de ejecucion a otro en el que una seccion diferente del programa es procesada. Existen dos tipos importantes de instrucciones de transferencia de control: las que trasladan el control dentro del programa principal, denominadas saltos y las que temporalmente lo transfieren a una seccion o subrutina fuera del programa principal. La transferencia de control puede ser condicional o incondicional.
INSTRUCCIONES DE ENTRADA / SALIDA
Permite una amplia gama de transferencia de datos entre las localidades de memoria externa, los registros internos de proposito general y los dispositivos externos de entrada/salida.
INSTRUCCIONES DE CONTROL
Proporcionan señales de sincronizacion y pueden detener o interrumpir la ejecucion de un programa. Estas instrucciones afectan el modo de operacion de la CPU o manipulan la informacion de su estado (status) interno.
Bueno, para la proxima entrega de esta revista entraremos con la parte de Programacion.
Se despide la Mujer consentida de 0ri0n .... Chica4xs