Procedimiento digital de señales. Microprogramación

Anuncio
TEMA 4º EL PROCESADOR.
MICROPROGRAMACIÃ N.
4.1 Introducción
4.2 Lógica digital
4.3 Microarquitectura
La frontera entre el hardware y el software, no se encuentran bien definida; al principio, las computadoras
tenÃ−an instrucciones para hacer operaciones aritméticas, booleanas, desplazamientos, comparaciones,
etc.; y otras que eran realizadas directamente por el hardware. Para cada instrucción habÃ−a un circuito
especifico que la ejecutaba, de tal forma que si se abrÃ−a un computador se veÃ−an los circuitos que la
realizaban.
En las computadoras modernas existen distintos niveles de circuito en los cuales ya no se pueden diferenciar
fácilmente cada uno de los circuitos especÃ−ficos. La única forma de ver dicho circuito serÃ−a accediendo
a un listado del microprograma y examinar la porción que interpreta dicha instrucción.
En este tema estudiaremos como el microprogramador controla los componentes del hardware e interpreta el
nivel de la máquina ordinaria. Se entiende por microprogramación como el diseño de sistemas más o
menos razonables por medio de la interpretación de la máquina sobre máquinas irracionales.
4.2 Lógica digital.El trabajo del microprogramador es escribir programas que controlen los registros, buses, ALU, memoria. En
este punto veremos los distintos componentes lógicos.
• Registros.Es dispositivo capaz de almacenar información, al nivel de microprogramación, siempre se dispone de un
conjunto de ellos. La diferencia principal entre los registros y la memoria principal, es que los primeros se
encuentran siempre ubicados en el procesador, y esta es una de las razones por lo que el acceso es mucho
más rápido. Normalmente las máquinas mayores y más caras tienen un número superior de registros.
Un registro se caracteriza por el número de bits que puede almacenar, en nuestra máquina será de 16 bits,
y la opción de lectura no provocará que se afecte su contenido, es decir, no se borrará su información.
• Buses.Es un conjunto de hilos eléctricos que transmiten señales en paralelo. Se utilizan para copiar el contenido
de un registro a otro.
Los buses se utilizan porque la transferencia en paralelo es superior a la de serie.
Un bus puede ser unidireccional o bidireccional. Cuando se transfiere información en un único sentido es
unidireccional, y será bidireccional cuando la información puede transferirse en los dos sentidos pero no
simultáneamente.
Muchos dispositivos tienen la posibilidad de conectarse y desconectarse eléctricamente de los buses a los
1
que está conectados fÃ−sicamente.
Un bus cuyo dispositivo tenga la propiedad mencionada anteriormente. Se llama bus triestado, porque cada
lÃ−nea puede estar a 0,1 ó desconectada (3 estados).
Arquitectura de un registro de 8 bits:
Se encuentra formado por 8 biestables tipo D conectado cada uno de ellos al bus de salida por medio de un
buffer.
El registro tiene 2 señales de control, por una parte se encuentra REL y por otra SAL.
REL.- Nos indica cuando debe cargar el registro, indicado por la señal del reloj.
SAL.- Concede el permiso de salida.
Cuando la señal del reloj (REL) está desactivada, el contenido del registro no es afectado por el hilo de
entrada (o señal del bus), en cambio cuando se activa el registro se carga con el contenido del bus de
entrada.
Cuando SAL está desactivada el registro está desconectado del bus de salida, y cuando SAL está
desactivada, el contenido del registro pasa al bus de salida.
Tanto la señal REL como la señal SAL se transmiten en paralelo a cada uno de los biestables. En muchas
ocasiones los registros pueden tener 2 buses de salida, necesitando 2 señales de control SAL para cada una
de salida.
• Multiplexores y Descodificadores.Estos circuitos se caracterizan por porque tienen una ó más lÃ−neas de entradas, y porque calculan 1 o
varios valores de salida determinados, únicamente, por las actuales entradas.
Un multiplexor se caracteriza porque tiene 2n entradas de datos y 1 única salida, asÃ− como 1 entrada de
control de n bits.
Tanto las entradas como la salida no tienen que tener 1 bits, sino que pueden ser de n bits distintos.
El inverso del multiplexor es el demultiplexor, que encamina su única entrada a una de las 2n salidas según
el valor que tengan sus n lÃ−neas de control.
Si tienes 2n salidas, tienes n entradas de control. Si hay 4 salidas hay 4 = 2n 2 entradas de control.
El decodificador es un circuito combinacional que tiene n lÃ−neas de entrada y 2n salidas, numeradas desde
el 0 hasta 2n-1:
Dependiendo de la entrada sólo se encuentra activa 1 salida.
El inverso del decodificador es el codificador, que tiene 2n entradas y n salidas. Se caracteriza porque sólo
puede haber 1 lÃ−nea de entrada a 1 y su número en binario aparece en la salida:
Esto es asÃ− porque la entrada 5 es la que está a uno, por lo tanto a la salida va a estar el nº de la puerta 5
en binario, o de la puerta que está a 1.
2
• Unidades aritmético-lógicas y desplazadores.Todo ordenador necesita algún medio donde realizar las operaciones aritméticas y lógicas. El punto
más simple es un sumador de n bits, que toma dos entradas de n bits, y produce su suma a la salida (igual
que un sumador binario)
Un circuito más general será una ALU que se caracteriza por poseer 2 entradas y una salida, igual que el
sumador, pero además contiene entradas y salidas de control. La ALU que realizaremos tendrá 2 entradas
de control F0 y F1, de tal forma que:
F0
F1
C
0
0
A+B
0
1
A and B
1
0
A
1
1
Ä
Estas son las cuatro operaciones que realizará la máquina.
Van a existir 2 salidas de control N y Z, de modo que N se activa cuando el resultado es negativo y Z se activa
cuando el resultado ha sido 0.
Aunque algunas ALU pueden realizar operaciones de desplazamiento, utilizaremos un desplazador para
realizar dicha función:
Tiene una entrada de n bits y una salida del mismo tamaño, de modo que tenemos 2 señales de control, de
modo que:
D0
D1
0
0
0
1
1
0
1
1
La entrada 11 no se encuentra contemplada.
No desplaza
1 bit a la derecha.
1 bit a la izquierda.
____
• Relojes.Los circuitos de las computadoras funcionan normalmente al ritmo de un reloj, que es un dispositivo que
emite una secuencia periódica de impulsos. Estos impulsos definen los ciclos de máquina. Durante cada
ciclo tiene lugar alguna actividad básica, como la ejecución de una instrucción.
A menudo es útil dividir los ciclos en subciclos, debido a que las distintas partes de la microinstrucción
puedan realizarse en 1 orden bien definido:
Tenemos una secuencia de 31 bits. Si esta instrucción se ejecuta en un único ciclo, esto se va a dividir en
subciclos porque ha de pasar por la ALU.
Por ejemplo las entradas en la ALU deben estar disponibles y estabilizadas antes de poder almacenarse en su
salida.
• Memoria principal.-
3
La memoria principal es el lugar fÃ−sico de almacenamiento de datos. Todas las memorias deben soportar las
operaciones de lectura y escritura.
A tener en cuenta, un acceso a memoria es siempre, considerablemente más largo que el que se necesita para
ejecutar una sola instrucción (microinstrucción). En consecuencia, el microprograma debe mantener los
valores correctos en los buses de datos y dirección durante varias microinstrucciones, para no perderse la
información. Para resolver este problema se utilizan 2 registros intermedios conocidos como RDM y RIM
(registro de direcciones de memoria y registro de intercambio de memoria)
El RDM nos dice lo que hay que leer y todo son entradas, mientras que el RIM lleva esos datos y es un bus v
del que se pueden extraer o introducir datos.
• Encapsulado de los componentes.Existen 3 formas de encapsular todos los componentes:
• Utilizando circuitos MSI.- Consiste en combinar en circuito MSI (integrados a media escala) con
componentes como un registro, ALU, desplazador... cada uno en una pastilla. Posteriormente se
interconexionan para formar la computadora.
Ventajas: La gran ventaja es la rapidez y el bajo costo de las pastillas o chips.
Inconveniente: Gran nº de componentes necesario, igual que consume mucha energÃ−a y disipan mucho
calor.
• Pastillas en rodajas de bits.- Cada chip de rodaja de bit tendrá únicamente un bit de cada componente,
por ejemplo, tendrÃ−amos un bit de la ALU, un bit de registro, etc. Para la construcción de una ALU de
16 bits necesitaremos 16 rodajas de ALU de un bit. El principal inconveniente que tienen es que son muy
lentas.
• Componentes del procesador.- SerÃ−a construir en un único chip llamado procesador toda la
circuiterÃ−a de la máquina.
4.3 Microarquitectura.A la hora de construir una máquina, tendremos 2 partes, la ruta de datos y la ruta de control.
• Ruta de datos.Es la parte de la CPU que contiene la ALU, sus entradas y sus salidas. La ruta de datos de nuestra máquina
será la de la figura del folio siguiente. A continuación se dan las explicaciones:
• El CP contiene el valor del contador del programa (en el registro de la página siguiente aparece
como PC)
• AC almacena el valor de la salida de la ALU (acumulador)
• PP o puerto de pila, apunta a la posición de la pila (en el folio aparece como SP)
• RI (IR en el folio) almacena la instrucción actual que se está ejecutando.
• RIT (TIR en el esquema) almacena la instrucción actual ligeramente modificada.
• 0, +1 y -1: el -1 se implementa como 111111111.
• MASCD y MASCP (AMASK y SMASK) son máscaras de registros del código de operación.
• A, B, C, D, E, F son 6 registros de la máquina para almacenar ciertos valores.
En el folio aparecen los siguientes términos: MAR, MBR y latch que se traducen como RDM, RIM y
4
buffer respectivamente. Si no se usa la ALU tampoco se usa el desplazador y si sÃ− se usa, el desplazador
también. La operación de lectura ocupa dos ciclos de reloj.
AQUÃ ESTÃ LA RUTA DE DATOS
F0
F1
0
0
0
1
1
0
1
1
La ALU tiene dos códigos de control F0 y F1.
C
A+B
A and B
A
Ä
D0
D1
0
0
No desplaza
0
1
1 bit a la derecha.
1
0
1 bit a la izquierda.
1
1
____
Tenemos 2 salidas en la ALU. N cuando la salida era negativa y Z cuando era 0. La salida de la ALU va a un
desplazador que tiene dos señales de control. Esa salida de la ALU va al bus 0. El RIM es bidireccional y la
RDM unidireccional. La memoria tiene una señal de control que nos dice si se produce una señal de
lectura o una de escritura.
La salida del desplazador irá al registro o a la memoria. Si por ejemplo quiero trabajar un bit de escritura,
éste se almacenará en el RIM, va a la ALU a través de un multiplexor que nos dice si ese valor llega del
RIM o del buffer A.
MA = 0 no buffer A
MA = 1 RIM
El RDM se carga a partir del bus B. Necesitamos una señal de control que nos informa si se coge el dato de
la RDM o no; esa señal es M0:
M0 = 1 se carga del RDM
M0 = 0 no se carga del RDM
Para decidir si el RIM se carga tendremos otra señal M1:
M1 = 1 se carga del RIM
M1 = 0 no se carga del RIM
En el RIM tendremos otras dos señales de control que llamaremos M2 y M3:
M2 = 1 es una posición de lectura
M3 = 1 es una posición de escritura y tiene que llevar lo que tiene aquÃ− a la memoria.
5
Tenemos 2 buffer, BA y BB. Estos buffer son necesarios ya que tiene que producirse un asentamiento de los
datos. Además necesitamos 2 señales de control TA y TB que nos dicen cuando el dato es correcto, es
decir, cuando podemos operar con dicho operando.
• Instrucciones.Para controlar la ruta de datos necesitamos 61 señales de control que son:
◊ 2 de la ALU
◊ 2 de desplazamiento
◊ 2 para el buffer A y B
◊ 4 para RDM y RIM
◊ 1 Multiplexor A
◊ 2 para las operaciones de memoria R y W (una para cada una)
◊ 16 para controlar el bus A
◊ 16 para controlar el bus B
◊ 16 para controlar el bus C
Necesitamos 16 por bus para que me diga qué registros almacenan datos en cada caso para los tres buses.
Las señales de control son demasiadas. Para incluirlas necesitamos algún mecanismo tal como un
decodificador con 4 señales de control y asÃ− reducimos de 16 señales de control para cada bus a 4.
Podemos sustituir las señales T1 y T2 por un ciclo de reloj que es un impulso que se puede dividir en
subciclos.
La señal de lectura LEC es igual a M2, entonces se puede quitar M2 y quedo LEC. Lo mismo ocurre con la
señal ESC para RDM, donde nos cargamos M3.
Se añade una señal de control más, para controlar el paso de información al RIM o a los registros. Esta
señal de control es Perc.
La instrucción se va a encontrar de la siguiente forma:
1 2 2 2
M C
U
U O
A Desplazador
X N
L
A D
0 recoge el dato del bus A
1
1
1
1
R R L
E
1
P
4
4
4
A B
C
8
E
I
D E
S
R
Dirección
M M C C
C
Mux A
1 recoge el dato del bus B
COND nos indica donde se encuentra la siguiente instrucción, es decir, si se va a producir un salto o pasa a
la siguiente instrucción.
0 = No salta
6
1 = salta si N = 1
2 = Salta si Z =1
3 = Salta siempre al valor dirección (8 bits)
Desplazador:
D0
0
0
1
1
D1
0
1
0
1
No desplaza
1 bit a la derecha.
1 bit a la izquierda.
____
0 No se activa el bus C
PERC
1 Información circula por el bus C
AQUÃ ESTÃ LA RUTA DE CONTROL
• CronologÃ−a de las microconstrucciones.La tecnologÃ−a de nuestra máquina se encontrará formada mediante la carga de los buffer A y B.
Posteriormente con la operación de la ALU y por último se almacenará el resultado en los registros o en la
memoria. Por tanto, se puede llegar a la conclusión de que nuestra máquina se encontrará formada por un
reloj de 4 fases, es decir, 4 subciclos durante cada uno de ellos hará:
• Carga de la siguiente instrucción a ejecutar en el RIM que es el registro de microinstrucciones.
• Se produce la salida de los contenidos del registro al buffer A y B y se almacena en los buffer A y B.
• Cuando las entradas a la ALU están establecidas se realiza la operación 4 se espera un tiempo a que el
desplazador estabilice la salida. A la vez carga el RDM si fuera necesario.
• Una vez que está establecida la salida del desplazador se almacena el bus C en los registros o en la
memoria.
Nuestra máquina tendrá una memoria de control donde se almacenarán las microinstrucciones. El ancho
de palabra de la memoria es igual a la microinstrucción y a las direcciones son 28 = 256 por los bits capaz de
direccionar la instrucción. Entonces la capacidad de la memoria es de 256*32.
En cada subciclo se realiza lo siguiente:
1er subciclo: la memoria de control almacena en el RIM el contenido de la dirección que apuntaba el CMP
(RDM de la memoria de control). El RIM solamente se carga durante el primer subciclo, y durante los otros
tres no se altera independientemente de lo que suceda en el CMP (RDM).
2º subciclo: Una vez que el RMI se encuentra estabilizado, los campos de la microinstrucción A y B hace
que los datos salgan a los buses A y B, necesarios para activar el registro o los registros de los que queremos
leer. El reloj activa los buffer A y B proporcionando las entradas estables a la ALU durante este ciclo;
mientras los datos salen de los buses A y B la unidad de incremento de la sección de control incrementa el
CMP en 1, preparándose para la siguiente microinstrucción.
7
3er subciclo: se les da a la ALU y al desplazador tiempo suficiente para que produzcan resultados válidos y
estables. El campo de microinstrucción MUSA (AMUX en las fotocopias) mete la entrada izquierda a la
ALU, que puede venir del bus A o del RIM. Mientras que la ALU y el desplazador están procesando el
RDM se carga con el contenido del bus B, siempre y cuando el campo RDM de la microinstrucción esté
activo.
4º subciclo: Una vez realizado el desplazamiento y la operación de la ALU, se debe almacenar el resultado
o en el registro (o los registros) o en el RIM dependiendo de los campos PERC y RIM de la
microinstrucción. Si el resultado se tiene que almacenar en los registros se anotará siempre cuando:
• PERC se encuentre a 1 (PERC activo)
• Nos encontramos en el cuarto subciclo.
• Tenga un valor el campo C de la microinstrucción.
Si, por el contrario, el campo RIM de la microinstrucción está activo se almacenará el resultado en el
RIM. Las dos señales que controlen la memoria, LEC y ESC están activas mientras estén presentes en el
RIM.
Uno de los puntos más difÃ−ciles de la máquina es cuál es la siguiente instrucción. Por esta razón
dotamos a cada microinstrucción de dos campos adicionales:
• Campo COND
• Campo dirección.
La elección de la siguiente microinstrucción la realiza la caja que se llama lógica de
microsecuenciamiento (micro-sec en las fotocopias-logic) durante el subciclo 4 cuando las salidas de la ALU
N y Z son válidas (esto no quiere decir que ambos estén a uno sino que son válidas).
La salida de esta caja controla el mutiplexador Mmux, que nos servirá para decidir si el CMP se carga con la
dirección de la siguiente microinstrucción, o por el contrario con el valor del campo dirección.
El campo condición podÃ−a tomar 4 valores: 0 (no realiza un gran salto); 1 (que salta si N = 1); 2 (salta si Z
= 1); 3 (salta siempre: se toma el valor del campo de la microinstrucción y se almacena en la siguiente).
Suponemos que el campo COND se encuentra almacenando I0 e I, entonces se va a producir salto (señal de
microsecuenciamiento = 1)
Vamos a establecer el valor que toma la señal para que se produzca el salto de la dirección:
I1
I2
0
0
0
1
1
0
1
1
El que se quiera producir un salto se especifica en el campo COND.
Sabemos que el campo COND va a la lógica de microsecuenciamiento y queremos saber la lógica de esa
caja porque me va a decir ésta cuándo es 0 y cuándo es 1.
Entonces, ¿cuándo la señal de secuenciamiento vale 1?
8
Esto se da cuando: CON 01 y N = 1, COND 10 y Z =1, COND 11 y Z y N dará lo mismo porque salta
siempre.
Esto quiere decir:
Esta serÃ−a la lógica de la que estarÃ−a formada la lógica de microsecuenciamiento.
• Un ejemplo de macroestructura.Normalmente no se realiza propagación a niveles tan bajos de propagación, se utilizan normalmente
lenguajes de alto nivel.
Cuando nosotros nos definimos un nuevo lenguaje estamos creando una máquina virtual sobre la propia
máquina, de tal forma que hemos construido una máquina de nivel superior a partir de una máquina
básica.
La máquina virtual tiene un nivel superior y utiliza lenguaje de alto nivel.
Máquina de nivel superior
Para pasar de un lenguaje a otro hay que utilizar técnicas de traducción e intérpretes.
AsÃ− nuestra máquina contendrá microinstrucciones como +, mueve, -...
El juego de nuestra máquina de nivel superior (virtual) va a ser:
Binario
0000xxxxxxxxxxxx
nemónico
CARD
instrucción
Carga directa
Almacenamiento
0001xxxxxxxxxxxx
ALMD
directo
0010xxxxxxxxxxxx
SUMD
Suma directa
AQUÃ ESTÃ N LAS INSTRUCCIONES
Significado
ac = M[x]
M[x] =ac
ac=ac+M[x]
Las instrucciones que de nuestra nueva máquina, se van a encontrar por un campo cargado de operación de
4 bits y por un campo dirección de 12 bits. El campo de dirección es de 12 bits porque nuestra máquina va
a tener un tamaño de 212 = 4096*16 bits.
Nuestra máquina se encontrará formada por 3 registros accesibles para el programador:
AC que va a ser el acumulador, AP que va a ser el puntero de pila y CP que va a ser el contador del
programa.
CARD: Carga en el acumulador el valor de la posición de la memoria. Esta instrucción CARD es de
nuestro lenguaje superior.
ALMD: Carga a la memoria el valor del acumulador.
SUMD: Carga en el acumulador el valor de éste + el valor de la posición de memoria.
RESD: Carga en el acumulador el valor de éste - el valor de la posición de memoria.
A partir de 1111000000000000 se utilizan los 0 porque para desepilar no se utiliza ninguna dirección.
9
Puntero de pila:
Voy a tener reservado para la pila un espacio reservado dentro de nuestra máquina entre los 4096. a esa pila
tenemos un puntero que va a ser el pp.
Con este pp voy a bajarlo y salvo en la posición que nos encontramos y a ese espacio apunta pp. Esto se
utiliza para los bucles y para los saltos, de modo que por esto es bueno salvar todos los registros del programa
cuando hacemos un procedimiento.
En la página siguiente se muestran todas las instrucciones.
Las instrucciones de este programa se encuentran en la memoria de datos y no en la memoria de control.
Procesamiento digital de señales tema 4º El procesador. Microprogramación
50
R1
R2
n
n
registro
R1
R2
R1
R2
8
paralelo
serie
Se transmiten 8 bits a la vez
Se transmite 1 solo bit
8
8
D
Q
10
D
Q
D
Q
D
Q
D
Q
D
Q
...
Contador
salida
D0
D1
D2
D7
Bus de 16 Bits
Bus A
Bus B
REL
SAL 1
SAL 2
Bus C
MUX
2n entradas
11
...
3
n
3
n
2n salidas
...
DEMUX
DECODIF
CODIF
101
ALU
A
B
F0
F1
N
Z
Desplazador
n
n
D0
D1
R
D
M
12
Memoria
RIM
CMP
MEM
RIM
direc
N
z
2
COND
M. virtual
M. básica
lenguaje
Lenguaje binario 0, 1
Transductor para pasar de un lenguaje a otro
Máquina
básica
16
4096*16
.
.
.
4096
pp
Desplazador
M
13
E
M
O
R
I
A
RIM
RDM
mux
Buffer B
Buffer A
16 registros
LEC
ESC
M0
M1
M2 M3
Mux A
F0
F1
N
Z
D0
D1
T0
T1
14
A
B
15
Documentos relacionados
Descargar