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