Download Arquitectura de Computadores
Document related concepts
no text concepts found
Transcript
Arquitectura de Computadores 2. La CPU 1. Estructura de la CPU 2. Ciclo de instrucción 3. Interfaz hardware de una CPU 4. Ciclo de reloj, memoria e instrucción Arquitectura de Computadores La CPU - 1 Vamos a comenzar la descripción de la estructura e interfaz de los componentes básicos de un sistema de computación, esto es, la CPU, la memoria y los dispositivos de entrada/salida. En este capítulo vamos a dedicarnos expresamente a la estructura e interfaz hardware de la CPU y en el siguiente capítulo veremos su interfaz software, es decir, el lenguaje máquina. Comenzaremos recordando la estructura básica de una CPU y el ciclo de ejecución de las instrucciones. A continuación veremos la descripción de las patillas que suelen ofrecer los microprocesadores, haciendo especial hincapié en el MC68000. Más adelante presentaremos los procesadores segmentados (o en pipeline) los cuales incorporan una técnica para acelerar el rendimiento de ejecución de instrucciones, pero esto será en otro capítulo dedicado exclusivamente a este concepto. Arquitectura de Computadores La CPU - 1 La Unidad Central de Proceso Registros Generales A+B A B Unidad A B de Control ALU A+B a la memoria y dispositivos de E/S Arquitectura de Computadores La CPU - 2 La Unidad Central de Proceso (CPU) contiene una serie de registros de memoria que contienen los operandos y el resultado de las operaciones. Los datos de los registros generales que contienen los operandos se llevan a los registros de entrada de la Unidad Aritmético-Lógica (ALU), la cual realiza la operación sobre los datos de entrada. El resultado de la operación realizada se obtiene en el registro de salida de la ALU, que posteriormente se almacena en otro de los registros de memoria. Todo esto se realiza bajo la coordinación de la Unidad de Control. También hay conexiones entre la CPU y la memoria principal (y los dispositivos de E/S) pues de ella se extraen las instrucciones y los operandos, y a ella suelen ir a parar los resultados de las operaciones. Arquitectura de Computadores La CPU - 2 La CPU Operación Interna en la CPU Ciclo de Instrucción Alimenta instr. de memoria Acceso a Memoria Extrae instrucción CP → Sig. instrucción Decodifica la instrucción Calcula dirección de operandos de registros internos Extrae los operandos de memoria principal Opera con los datos Calcula dir. del destino en registros internos Almacena resultado Arquitectura de Computadores en memoria principal La CPU - 3 Una CPU con arquitectura von Neumann ejecuta las instrucciones según el ciclo alimentardecodificar-ejecutar. En el grafo de arriba se puede ver la descripción detallada de este ciclo, que se explica por sí solo. Se comienza por extraer una instrucción de la dirección de memoria indicada por el Contador de Programa (CP) para cargarla en el registro de instrucción de la CPU. Acto seguido se incrementa dicho CP con la longitud de la instrucción alimentada. A continuación se decodifica la instrucción, es decir se averigua cuál es la operación a realizar. Seguidamente se debe calcular la dirección de los operandos, tarea cuya dificultad varía en función de los modos de direccionamiento utilizados. Una vez obtenida la dirección de los operandos, se extraen o bien de la propia instrucción, o bien de los registros generales o de la memoria principal. Por último, los operandos se hacen pasar por la ALU y el resultado se almacena en alguno de los registros generales o en alguna dirección de memoria principal. Volviendo al comienzo del ciclo, se alimenta la siguiente instrucción. Arquitectura de Computadores La CPU - 3 Interfaz Hardware La CPU Datos m Dir. n petición concesión Procesador Genérico Interrup. petición aceptación Arbitraje de Bus Coprocesador Lec/Esc Estado Misceláneas Reset Φ +5 V - DATOS - DIRECCIONES Señales de - CONTROL Arquitectura de Computadores La CPU - 4 Las patillas de un microprocesador se pueden organizar en tres grupos: direcciones, datos y control. Las señales de datos indican el número de bits que se pueden transmitir en paralelo entre la CPU y la memoria o dispositivos periféricos. Generalmente se corresponde con el tamaño de la palabra (tamaño de los registros generales de la CPU), aunque puede no ser así (en el Intel 8088, la palabra es de 16 bits y el bus de datos de 8, lo cual obliga a que el acceso a una palabra se realice con dos ciclos de acceso a memoria). Los buses de datos suelen contar con 8, 16, 32 y, actualmente, como es el caso de Pentium y PowerPC, con 64 hilos. Las señales de direcciones determinan el espacio de direccionamiento a la memoria principal del procesador; así, un procesador con 32 pines puede direccionar 232 bytes. Un número típico de hilos de direcciones es 16, 20, 24 y 32, con los que se consigue un espacio de direccionamiento de hasta 4 Gbytes. Además de estas señales de datos y direcciones, también cuentan con algunas señales de control. Entre éstas se encuentran la señal que indica si el acceso a memoria es de lectura o escritura, la tensión de alimentación (alrededor de 5 V.), toma de tierra y reloj. Las señales restantes tienen unas aplicaciones que se pueden agrupar en las siguientes categorías: Arbitraje del bus. Controlan y evitan que dos o más dispositivos intenten utilizar los buses de direcciones y datos simultáneamente. (La CPU es un dispositivo más). Interrupciones. Las interrupciones son señales de entrada que provienen de los dispositivos de entrada/salida. Se utilizan para comunicarle al procesador que una operación encargada previamente ya se ha realizado, que ha habido algún error o simplemente que hay información disponible para la CPU, por ejemplo porque se ha recibido algún carácter por una línea de comunicaciones. Una interrupción muy especial es la de RESET, que rearranca el procesador. Comunicación con el coprocesador. Aunque cada vez es más común incluirlos en el propio procesador principal, cuando los procesadores especializados de operaciones numéricas o gráficas están separados de la CPU, se cuenta con unas líneas de comunicación directa con ellos para sincronizar las operaciones. Estado. Estas señales dan información del estado o tipo de proceso que se está realizando: alimentando una instrucción, leyendo datos, escribiendo datos, tratando una interrupción, etc. Arquitectura de Computadores La CPU - 4 Motorola MC68000 La CPU Vcc dir. GND datos CLK FC0 Estado del Procesador FC1 FC2 AS* MC 68000 R/W* UDS* LDS* A1 - A23 D0 - D15 D15 D8 D7 D0 UDS (dir. par) LDS (dir. impar) Control de Bus Asíncrono DTACK* E Control de Periféricos Control del Sistema VMA* VPA* BR* BG* BGACK* BERR* IPL0* RESET* IPL1* HALT* IPL2* Control de Arbitraje del Bus Control de Interrupciones (*) Lógica Negativa Arquitectura de Computadores La CPU - 5 D0-D15 (Data): Corresponden a los 16 hilos del bus de datos. Estas señales bidireccionales permiten la lectura o escritura de datos de 16 bits entre la CPU y la memoria o dispositivos de E/S. Con ayuda de las señales UDS y LDS se permite seleccionar el byte de mayor peso (UDS), el de menor peso (LDS) o la palabra completa (ambas señales activadas). A1-A23 (Address): aunque la CPU internamente utiliza las señales A0-A23, ya que el bus de datos puede transferir el contenido de dos celdas simultáneamente, a las celdas de memoria se accede realmente de dos en dos, es decir, por pares de direcciones. Así, lo que la CPU debe indicar con las señales de direcciones es el número de par al que quiere acceder, no la dirección de la celda concreta. Como se explicará detalladamente en el capítulo dedicado a la memoria principal, el número del par correspondiente se consigue desechando el bit de menor peso de las direcciones (A0), por lo que solamente se sacan al exterior los 23 hilos de mayor peso (A1-A23). UDS (Upper Data Strobe) y LDS (Lower Data Strobe): Ya hemos visto que por el bus de datos pueden transferirse el contenido de dos celdas de memoria, no obstante, para que la CPU pueda acceder a ellos de manera independiente, se dispone de las señales UDS y LDS que indican si se está accediendo al byte que ocupa los bits de mayor peso del bus de datos (UDS), al que ocupa los de menor peso (LDS) o a ambos, pudiendo seleccionar así los bytes concretos a leer o escribir. Estas señales las activa la CPU según su señal interna A0 del registro de direcciones (dirección par o impar) y teniendo en cuenta el tipo de dato de la operación (byte o word). Obsérvese que en el acceso a una palabra completa de memoria, el contenido de la dirección más baja (la par) viaja por los hilos D8-D15 del bus de datos, y se selecciona con la señal UDS, mientras que el byte de dirección más alta (la impar) va por los hilos D0-D7 , y se selecciona con la señal LDS. AS (Address Strobe): Indica que la dirección presente en el bus de direcciones es válida. Se utiliza durante las transferencias de datos. R/W (Read/Write): Cuando esta señal está activa (a 1) indica que la transferencia de datos es una lectura, mientras que cuando está desactivada (a 0) es una escritura. DTACK (Data Acknowledge): Esta señal la activan los dispositivos externos (memoria o periféricos) en las operaciones de E/S. Durante una lectura, la memoria activa esta señal para indicar que el dato que se quiere leer ya está en el bus de datos. En una escritura, indica que el dato que se quería escribir ya lo ha tomado el dispositivo o la memoria. Si la CPU no recibe esta señal o la de Bus Error durante el ciclo de memoria, inserta ciclos de espera adicionales hasta recibir alguna de las dos señales. LÓGICA NEGADA: Es bastante común que las señales de control de los chips (procesadores, memorias, etc) tengan lógica negada, es decir, una señal se considera activa con un cero lógico “0”, mientras que un uno “1” significa que está desactivada. Cuando esto es así, el nombre de la señal se suele representar con un asterisco, como por ejemplo: AS*. Arquitectura de Computadores La CPU - 5 …Motorola MC68000 La CPU A0 UDS LDS 0 act. 1 R/W Bus de datos (D0-D15) R Lectura de byte en D8-D15 act. R Lectura de byte en D0-D7 0 act. act. R Lectura de word en D0-D15 0 act. act. W Escribe word en D0-D15 act. W Escribe byte en D0-D7 W Escribe byte en D8-D15 1 0 act. Arquitectura de Computadores La CPU - 6 Aquí se muestran algunos ejemplos de las operaciones que se realizan dependiendo de los valores que toman las señales de control UDS, LDS y R/W. Se recuerda que cuando el acceso es a un dato de tipo BYTE de dirección par, se activa exclusivamente la señal UDS, y si es impar, se activa solamente LDS. Si el dato es de tipo WORD (2 bytes consecutivos), se activan simultáneamente ambas señales UDS y LDS. Arquitectura de Computadores La CPU - 6 …Motorola MC68000 La CPU Vcc dir. GND datos CLK D0 - D15 AS* FC0 Estado del Procesador A1 - A23 R/W* MC 68000 FC1 FC2 Control de Bus Asíncrono UDS* LDS* DTACK* E Control de Periféricos BG* VPA* Control del Sistema Registro de Estado BR* VMA* BGACK* BERR* IPL0* RESET* IPL1* HALT* IPL2* 15 T - Arquitectura de Computadores S - - 8 7 I2 I1 I0 - Control de Arbitraje del Bus Control de Interrupciones 0 - - X N Z V C La CPU - 7 BR (Bus Request), BG (Bus Grant), BGACK (Bus Grant Acknowledge): Debido a que en un momento dado, además de la propia CPU puede haber algún dispositivo (típicamente un controlador de DMA) que también quiera transmitir información por los buses, debe establecerse un protocolo de acceso al bus. Cuando un dispositivo necesita el bus, activa la señal de petición BR, y cuando la CPU se lo concede, activa la señal de concesión BG. El dispositivo entonces responde activando la pata BGACK, que mantendrá activa durante la transmisión de la información por el bus. IPL0, IPL1, IPL2 (Interrupt Priority Level): la combinación de estas tres señales establece el nivel de prioridad de una interrupción. El nivel 0 indica que no hay ninguna petición de interrupción; el nivel 7 indica una interrupción “no enmascarable”, es decir, que no puede ser ignorada por la CPU. Las interrupciones de nivel 1 a 6 se atienden solamente si su nivel es mayor que el nivel establecido por los bits de la máscara de interrupción del registro de estado SR. FC0, FC1, FC2 (Function Code): La CPU tiene dos modos de funcionamiento, modo Usuario y modo Supervisor. En un momento dado, en cada uno de estos modos puede estarse leyendo una instrucción o realizando la lectura/escritura de un dato. También es posible que se esté atendiendo una interrupción. Pues bien, estas señales de control indican el tipo de acceso a memoria que se está realizando en un momento dado. FC2 FC1 FC0 TIPO DE ACCESO 0 0 1 Acceso a datos de usuario 0 1 0 Acceso a instrucciones de usuario 1 0 1 Acceso a datos de supervisor 1 1 0 Acceso a instrucciones de supervisor 1 1 1 Reconocimiento de interrupción BERR (Bus Error): Esta señal la generan los dispositivos periféricos o la memoria si la operación de L/E o E/S ha tenido cualquier problema. Esta señal genera automáticamente la excepción Error de Bus en la CPU. RESET: Esta señal de control es bidireccional. Como salida, responde a la ejecución de una instrucción RESET, utilizada para reinicializar los dispositivos externos, y no afecta en absoluto al estado interno de la CPU. Como entrada, se utiliza en combinación con la señal HALT para provocar el proceso de reinicialización de la propia CPU. En el siguiente apartado describiremos este proceso de reinicialización o arranque del MC68000. HALT: Es otra señal bidireccional. Al activarla exteriormente se ponen inactivas todas las señales de control, pone el bus de datos y de direcciones en alta impedancia y pone a la CPU en estado HALT (detenida). Se sale de este estado al desactivar la señal. Si se activa junto con la señal RESET, se provoca el rearranque de la CPU. Como salida, la activa la CPU para indicar que se ha producido internamente un error de bus mientras se estaba tratando otro error de bus anterior. E (Enable), VMA (Valid Memory Address), VPA (Valid Peripheral Address): La función de estas señales es permitir la compatibilidad con los periféricos diseñados para el el procesador 6800, predecesor del 68000. Vcc, GND, Clock: Estas patas corresponden a la tensión de alimentación, toma de tierra y reloj respectivamente. La tensión de alimentación nominal es de 5 V con respecto a tierra (GND). La frecuencia del reloj depende de cada modelo concreto del procesador, pero está en el rango de 4 a 20 MHz. Arquitectura de Computadores La CPU - 7 Proceso de Arranque Motorola MC68000 HALT ↑ RESET ↑ $0 XXXXXXXX SP inicial (ROM) $4 YY YY YY YY PC inicial (ROM) 1. Inicialización de los registros internos $YYYYYY 2. Carga del Puntero de Pila (SSP) 3. Carga del Contador de Programa (PC) 4. Ejecución del programa de arranque (IPL) $XXXXXX IPL ... ... PILA (ROM) (RAM) $FFFFFF Arquitectura de Computadores La CPU - 8 El MC68000 debe ejecutar el proceso de arranque (reset) en cualquiera de estas dos situaciones: - Al encender el equipo - Al pulsar el botón de RESET Esto inicializa sus circuitos internos y los valores de sus registros. Para iniciar el proceso de arranque deben activarse simultáneamente las señales HALT y RESET durante un cierto tiempo (100 ms. en el arranque o 10 ciclos de reloj durante el funcionamiento normal). Una vez que comienza el proceso de arranque las acciones que se suceden, desde el punto de vista del programador, son las siguientes: 1. Inicializa sus registros internos. Se pone en modo Supervisor. 2. Lee un valor de 4 bytes de la dirección 0 de memoria y lo copia al registro de pila del supervisor (SSP). 3. Lee un valor de 4 bytes de la dirección 4 de memoria y lo copia al Contador de Programa (PC). 4. Salta a la instrucción apuntada por el PC. Comienza el IPL (Initial Program Loader). Esto quiere decir que antes de arrancar el ordenador, el contenido de las palabras largas de las direcciones 0 y 4 debe estar convenientemente inicializado, por lo que estas direcciones deberán pertenecer a parte de la memoria ROM o PROM del sistema. El programa IPL también debe residir en ROM, y la pila utilizada, obviamente, deberá estar en una zona de memoria RAM. Este programa se encarga de ejecutar los programas de prueba del hardware del sistema para comprobar su correcto funcionamiento, y a continuación procede a la carga del sistema operativo. La carga del sistema operativo (proceso de “boot”), comienza por la lectura de la primera pista del disco duro, disquete o CD-ROM que contiene el sistema operativo a cargar. Esta primera pista contiene el programa de carga del sistema operativo correspondiente. Así pues, lo último que hace el programa IPL residente en ROM es leer la primera pista del disco, considerar lo leído como un programa, y cederle el control. Este programa contenido en la primera pista del disco se encarga de cargar el sistema operativo de ese mismo disco, y cederle el control cuando acabe su carga e inicialización. El proceso de arranque del Pentium de Intel comienza por inicializar los registros internos y ponerse en modo real. El registro de segmento de código (CS) y el contador de programa (IP) los pone a FFFFH y a 0H respectivamente. Esto quiere decir que tras el arranque, la primera instrucción que ejecuta es la ubicada en la dirección FFFF0H. El resto del proceso es similar al del MC68000. Arquitectura de Computadores La CPU - 8 Ciclo de Reloj, Memoria e Instrucción La CPU Ensamblador 68000 MOVEQ.L #$14,D0 MOVE.W #1,(A5) Código Máquina 7014 3ABC 0001 ciclo reloj ciclo memoria (lectura) ciclo memoria ciclo memoria (lectura) (lectura) ciclo instrucción ciclo de instrucción (MOVEQ.L) (MOVE.W) Arquitectura de Computadores ciclo memoria (escritura) La CPU - 9 Un Ciclo de Memoria (también conocido como ciclo de bus) es el nombre genérico del ciclo de lectura o escritura en memoria. Vamos a definir y relacionar los conceptos de Ciclo de Reloj, Ciclo de Memoria (o de bus) y Ciclo de Instrucción. Los Ciclos de Reloj están generados por un oscilador de cuarzo, y constituyen la unidad de tiempo del sistema, de tal manera que la duración de cualquier operación dentro del sistema se mide en ciclos de reloj. En un ordenador pueden ser distintas las velocidades de la CPU y la del bus (que suele ser más lenta), por eso nosotros vamos a referirnos siempre a los tiempos desde el punto de vista del reloj de la CPU. Supongamos que tenemos una CPU MC68000, que cuenta con un bus de datos de 16 bits, en la que se van a ejecutar las dos instrucciones que se muestran arriba. La primera instrucción ocupa 2 bytes, y simplemente escribe una constante en un registro de la CPU. Así, para extraerla de memoria necesita únicamente un ciclo de lectura. Para su ejecución no requiere ningún ciclo de memoria adicional, únicamente algún ciclo de reloj para decodificar y ejecutar la instrucción. La segunda instrucción ocupa 32 bits, y escribe una constante en una dirección de memoria. Por esto, se requieren dos ciclos de lectura solamente para extraer la instrucción. Su ejecución requiere un tiempo para decodificar la instrucción y extraer la constante de la segunda palabra de la instrucción más un ciclo de escritura para escribir la constante en memoria. Esto suma en total 3 ciclos de memoria, más unos cuantos más de reloj. El conjunto de ciclos de reloj que requiere un procesador para extraer y ejecutar una instrucción se denomina Ciclo de Instrucción. Como hemos visto, un ciclo de instrucción ocupa uno o más ciclos de memoria para extraer la instrucción, después consume algún ciclo más de reloj para decodificación y ejecución de la instrucción. Esto puede incluir algún ciclo de memoria adicional para leer operandos o escribir el resultado. La extracción y ejecución de una instrucción requiere una serie de ciclos de reloj completos. El tiempo correspondiente a estos ciclos de reloj puede estar ocupado por accesos a memoria (ciclos de memoria) o por ejecución interna de la CPU. Obviamente, los ciclos de memoria consumidos son ciclos completos, es decir, que no tiene sentido decir que una instrucción requiere 3,5 ciclos de memoria. Arquitectura de Computadores La CPU - 9 …Ciclo de Reloj, Memoria e Instrucción La CPU 9 Todos los ciclos de reloj son iguales 9 Los ciclos de memoria son distintos (lecturas y escrituras) - Todos los ciclos de lectura son iguales - Todos los ciclos de escritura son iguales En la misma memoria 9 Los ciclos de instrucción son distintos 9 Las instrucciones ocupan ciclos completos de memoria más algún ciclo de reloj Arquitectura de Computadores La CPU - 10 En un ordenador dado, todos los ciclos de reloj son iguales. El tiempo que se tarda en leer o escribir en un determinado tipo de memoria, es siempre el mismo. No obstante, el tiempo de las lecturas puede ser distinto del necesario para realizar las las escrituras. La duración de las instrucciones varía, dependiendo de la complejidad de la instrucción (una división requiere más tiempo de cálculo que una suma o una copia de datos) y de los accesos a memoria que sean necesarios para su extracción y acceso a operandos. Arquitectura de Computadores La CPU - 10