Facultad de Ciencias Exactas y Naturales y Agrimensura Departamento de Ingeniería Cátedra : Proyecto Final Apuntes : Microprocesadores Tema 6-1 : Esquema de un µP. La CPU Lo que definimos como CPU (Central Process Unit) o Unidad Central de Proceso, está estructurado por tres unidades operativamente diferentes: 1. La ALU o unidad aritmético lógica. 2. La UC o unidad de control. 3. Los registros internos Veamos el esquema simplificado de una CPU. Unidad de Control Unidad aritméticológica registros Figura Nº 6.1.1 Esquema de una unidad central de proceso La Unidad Aritmético - Lógica Con respecto a cualquier microprocesador, las instrucciones involucran operaciones sobre un operando, o entre dos de ellos, estando uno de los mismos almacenado en el registro acumulador que es el registro de trabajo de cualquier ALU, por lo que en algunos casos suele denominarse registro W. El tipo de operaciones que puede realizar una ALU, pueden resumirse así: 1. 2. 3. 4. 5. Suma aritmética Resta aritmética (complemento a 2) operaciones lógicas o producto y suma lógica o Comparación o Complementación o enmascaramiento Desplazamiento o rotación No operar (transferencia) Algunas instrucciones están referidas al contenido del registro acumulador en su totalidad, y otras respecto a algunos bits del mismo, correspondiente a una palabra de datos que se desea modificar. Una forma de esquematizar la ALU en bloques funcionales, es de la siguiente manera: operando Registro de desplazamiento salida acumulador Cod de operación Figura Nº 6.1.2 esquema de la ALU El bloque de la izquierda es un operador aritmético lógico, o sea un circuito combinacional, capaz de realizar las operaciones que vienen determinadas en los códigos de operación. El bloque de la derecha es un registro de desplazamiento que actúa con el resultado que entrega el operador aritmético. Mediante este registro se pueden realizar los desplazamientos o rotaciones de los bits dentro de una palabra de datos. Por ejemplo en el caso que se desee utilizar este registro para serializar una secuencia de datos para ser enviados a un codificador de tonos, el que a su vez lo envía a un sistema de almacenamiento como ser un cassette de audio. Tenemos a continuación un sistema digital conformado de tal manera que pueda realizar distintas operaciones como ser: sumar, complementar, comparar y dejar pasar las informaciones sin alterarlas (no operar). El mismo podría ser implementado en un simulador y verificar los resultados. Figura Nº 6.1.3 esquema de un sistema de operación Operación NO OP NO OP SUMAR SUMAR SUMAR SUMAR COMPARAR COMPARAR COMPARAR COMPARAR COMPLEMENTAR COMPLEMENTAR Código C1 0 0 0 0 0 0 1 1 1 1 1 1 C2 0 0 1 1 1 1 0 0 0 0 1 1 Operador “A” 0 1 0 0 1 1 0 0 1 1 0 1 Operador “B” X X 0 1 0 1 0 1 0 1 X X R CARRM 0 1 0 1 1 0 1 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 Tabla Nº 1 Listado de las operaciones UNIDAD DE CONTROL Podemos considerarla como la parte “inteligente” del sistema microprocesador. Debido a que el µP desarrolla sus tareas en función de las instrucciones secuenciadas que ha organizado e implementado el programador, es necesario que el sistema interprete cada tipo instrucción para actuar en consecuencia. Es lo que se conoce también como decodificación de la instrucción. Hemos visto en el esquema general de la CPU, la existencia de registros y de la ALU. Precisamente, cada instrucción puede significar comunicaciones a través de los buses internos (y externos) entre estos bloques funcionales, para la transferencia de los datos binarios (datos propiamente dichos o direcciones). Hay instrucciones simples y complejas, en el sentido que una simple o breve puede significar la transferencia entre dos registros internos del sistema, a la modificación de los bits contenidos en un registro dado, pero puede haber instrucciones que impliquen varios movimientos o transferencias de bits o datos utilizando reiteradamente los buses internos (o externos) del sistema para la cual es necesario establecer una secuencia organizada para compartir los buses que son comunes a todos los bloques funcionales. Estas transferencias secuenciales de los datos la realiza la unidad de control, precisamente señales de control a los distintos bloques. A cada una de estas transferencias de datos que forma parte de una instrucción se la conoce como microinstrucción. El conjunto de microinstrucciones (microcódigos) que conforman cada instrucción, vienen grabadas de fabrica en el chip del µP, en una memoria de tipo ROM y por lo general no es accesible al programador. Este tipo de sistema se denomina microprogramado. Existen pocos modelos (2.901 A de Advanced Micro Devices), que permiten el acceso a la ROM, para definir un propio juego de instrucciones, pero ello implica tener un conocimiento muy profundo de los detalles circuitales para obtener un funcionamiento óptimo (son los sistemas microprogramables). Puede darse el caso que cuando se está realizando una microinstrucción, antes de terminarla se salte a otra microinstrucción. Esto puede darse según las señales de condición que esté recibiendo en ese momento la unidad de control. Funciones de la unidad de control Las funciones de comando que parten de la unidad de control, nacen a consecuencia de lo que denominamos la función principal de la misma, que es: 1) Decodificación de las instrucciones. De la unidad van a seguir las distintas microinstrucciones, las que globalmente decimos van a realizar la segunda función en importancia que es: 2) Sincronización de las tareas. Esta última podemos desglosarla en tres funciones secundarias, no menos importantes: administración de los buses internos de comunicación del microprocesador. manejo de las líneas de intercambio con el exterior (buses externos) que permiten la interacción de la CPU en la memoria principal y los periféricos. Indicación a la ALU sobre las operaciones a realizar. Todas las funciones de comando que salen de la unidad de control se corresponden con las señales de entrada a la unidad que pueden ser: Un código de instrucción que almacenado en el registro RI contiene la operación a ser ejecutada así como el modo de direccionamiento con que se obtiene el operando. Un secuenciador que a partir del reloj que posee el sistema realiza un conteo que permite localizar las microinstrucciones sucesivas que componen la instrucción. Un conjunto de condicionamientos que identifican a aquellos eventos que provocan alteraciones en la secuencia normal de un programa (interrupciones, saltos por condiciones del registro de estado). Veamos un esquema de la unidad de control: reloj secuenciador Líneas internas ROM (microcódigo) control Líneas externas Cod op para ALU Bus datos RI Líneas de condición Figura Nº 6.1.4 Diagrama de la unidad de control La entrada de reloj recibe las señales de un cristal o en forma indirecta a través de un CI que genera las fases de reloj que necesita el µP para trabajar correctamente. En el caso del 8080, se necesitan dos fases de reloj, con pulsos de distinta duración y no solapadas. Cada instrucción de todo el conjunto que tiene un µP, viene a su vez implementada como un subconjunto de microinstrucciones almacenadas en una memoria ROM interna y no accesible por el usuario. El número de líneas de condición son las provenientes del registro de estado y que son consultadas según lo requiera el código de operación que esta siendo decodificado. LOS REGISTROS INTERNOS DEL µP Son parte del sistema, utilizados como almacenamiento temporario de datos, cuyo tamaño va a depender del tipo de información que va a contener. Los registros son en definitiva, celdas elementales de memoria que reciben y entregan información en paralelo. Podemos distinguir dos tipos de registros, según el tipo de uso: • general • dedicado Los de uso general pueden ser empleados por el programador según su conveniencia. Su contenido depende de la instrucción y le da flexibilidad a la operación. Los segundos son empleados por el sistema interno del microprocesador, aunque pueden ser accedidos para consulta desde el programa que se ejecuta. Tienen significación única. Cuando se ejecuta una instrucción, así como para recorrer la secuencia que supone un programa, la CPU debe tener la posibilidad de memorizar información necesaria para no perder esa secuencia, y debe estar disponible permanentemente. Por ejemplo: el código de la instrucción a ejecutar, la posición de la memoria en que continúa el programa, los operandos a utilizar, etc.). Veamos cuales pueden ser los registros de uso dedicado: 1) 2) 3) 4) función Para direcciones de memoria Para contenido de las direcciones Para instrucciones Para control de secuencia 5) 6) Para manejo de subrutinas Para funcionamiento de ALU 7) Para control del estado de funcionamiento nombre Contador de programa Stack pointer Acumulador Registro de estado siglas RDM RCM RI CP número de bits 16 8 8 16 SP ACC 16 8 RS 8 Los Registros de uso general de un µP Se denominan: B-C, D-E y H-L pudiendo considerarlos en forma independiente (8 bits c/u), o de a pares (16 bits). Los registros son sensibles a dos comandos principales: - leer del bus - escribir en el bus Esta dado el carácter de multiplexado en el tiempo que se presenta en el sistema µP. Los registros de uso general dan mayor flexibilidad de operación, a la vez que ahorran transferencias de y hacia memoria, pues permiten mantener simultáneamente en modo operativo varias informaciones del mismo tipo (punteros, índices). Cuanto mayor sea el número de registros de uso general, mayor será la economía de transferencias, pero a costa de un aumento en la cantidad de bits que en cada instrucción identifican los registros afectados a la misma. El uso dedicado a que se hace referencia implica que la información contenida para cada registro tiene una significación única para cualquier instrucción que se quiera ejecutar. Estos registros hacen que las instrucciones sean más cortas, o bien para igual longitud dejan más bits disponibles para código de operación y modo de direccionamiento. En otros microprocesadores, existe una zona de la memoria que puede emplearse como registros de uso general, los cuales pueden ser identificados con un nombre nemotécnico para emplearlo a posteriori. Cabe aclarar que esto es posible no para el caso del 8080 sino de aquellos sistemas de desarrollo que tienen incorporado un lenguaje Assembler del mismo µP que transforma el programa fuente en lenguaje mnemónico en lenguaje de máquina interpretable por el µP. Registro de control de estado (STATUS REGISTER) También llamado registro de códigos de condición, contiene un conjunto de flip-flop cuyo número puede variar de 5 a 7 bits. Cada uno de estos bits representa o indica determinadas características de la última operación ejecutada por el procesador, o sea específicamente, por la ALU. Por ejemplo, las condiciones que se pueden presentar son: el resultado es cero (en el acumulador) el resultado en negativo (complemento a dos) el resultado desbordó el contenido (overflow) el resultado incluye un arrastre (carry) la paridad del acumulador se generó un arrastre en una operación de suma, del bit 3 al bit 4 (bit carry) indica la paridad del resultado de la última operación Esta información puede manejarse en forma de banderas o flag que pueden utilizarse por un programa.