INTRODUCCIÓN
Existen sistemas secuenciales demasiado complejos
pa-ra poder implementarlos con las técnicas vistas hasta
ahora, por ejemplo, el procesador MIPS posee 32
regis-tros de 32 bits, lo que lleva a un total de 2
1024estados.
En este tema veremos nuevas metodologías para
imple-mentar algoritmos o computaciones sobre conjuntos de
datos (vectores de n bits). En general constan de
ope-raciones combinacionales más sencillas que se realizan
secuencialmente.
Ejemplos de dichos algoritmos son un sumador
secuen-cial con un único FA o un multiplicador a partir de un
sumador paralelo.
implemen-CONCEPTOS BÁSICOS
La especificación algorítmica de sistemas secuenciales implementa eficientemente algoritmos o computaciones que se realizan sobre vectores de datos de n bits. Son los llamados algoritmos RT (’Regis-ter Transfer’).
Una computación es un conjunto de operaciones más simples que consiste en la transferencia de vectores entre registros. Durante las transferencias se realizan las operaciones de suma, desplazamien-to, comparación, etc.
Esta nueva metodología divide la implementación en dos bloques básicos:
•
Camino de datos, el conjunto de elementos que implementael almacenamiento de datos y las funciones de transformación de los mismos.
•
Sección de control, el sistema secuencial o autómata quecontrola la transferencia y transformaciones de los datos así como el secuenciamiento y la operación de todo el sistema. El esquema general se puede ver en la siguiente figura:
CONCEPTOS BÁSICOS
El camino de datos recibe los datos del exterior
(entra-das o “Data Input”) y devuelve los resultados obtenidos
(salidas o “Data Output”).
La sección de control recibe órdenes e información del
exterior (“Control Input”, por ejemplo, reset, begin, stop,
modo de operación...) y envía información u órdenes al
exterior (“Control Output”, por ejemplo, end, done,
over-flow...).
Las
condiciones son generadas por el camino de datos
y sirven para que la sección de control pueda tomar
de-cisiones y realizar un control dependiente de los datos.
Ejemplos de condiciones son el signo de un operando, el
acarreo en una operación, un desbordamiento, el valor
de un bit o una comparación, etc.
CONCEPTOS BÁSICOS
El resultado de aplicar o activar cada uno de los puntos
de control se denomina
microoperación.
El conjunto de microoperaciones que se pueden
reali-zar de forma concurrente (en paralelo) se denomina
mi-croinstrucción. Cada microinstrucción determina o
equi-vale a un estado del autómata de la sección de control.
Cada estado debe indicar que puntos de control hay que
activar en ese momento y cual es su estado
(microins-trucción) siguiente, que en general dependerá de las
con-diciones actuales del camino de datos.
El conjunto o secuencia de todas las microinstrucciones
constituye un
microprograma y su objetivo es
imple-mentar el algoritmo o computación requerido.
CAMINO DE DATOS
Se encarga de almacenar y transformar los datos.
Consta de:
•
Elementos de almacenamiento.
•
Operadores.
•
Buses.
Elementos de almacenamiento: almacenan la
informa-ción. El componente básico es el registro de N bits.
CAMINO DE DATOS
RAM = conjunto de 2
kregistros de N bits que sólo
pue-den accederse de uno en uno.
Operación: if READ then y←M[ϑ(A)] else y←0
if WRITE then M[ϑ(A)]←x siendo ϑ(A) =
P
k−1i=0 Ai · 2iFichero de registros.
Operación: if READ then y←R[ϑ(A)] else y←0
CAMINO DE DATOS
Otros elementos de almacenamiento: FIFO y LIFO
CAMINO DE DATOS
Buses: son las conexiones, junto con los switches necesarios, que
comunican los distintos elementos del camino de datos (registros y operadores). Se clasifican en:
•
Paralelos/Serie•
Unidireccionales/Bidireccionales•
Dedicados/Compartidos•
Directos/IndirectosCAMINO DE DATOS
Switches: establecen o cortan el acceso al bus.
•
UnidireccionalesCAMINO DE DATOS
Selector: selecciona una de entre varias fuentes de
da-tos (MUX).
Distribuidor: selecciona uno de entre varios destinos de
datos (DEMUX).
CAMINO DE DATOS
Ejemplos de buses:
•
Crossbar•
Bus compartidoSECCIÓN DE CONTROL
Es el sistema secuencial o autómata que al activar los puntos de control en el orden adecuado controla las transferencias y transfor-maciones de los datos que tienen lugar en el camino de datos y que implementan un algoritmo específico.
Cada estado o microinstrucción de la sección de control indica qué puntos de control se activan en cada momento (salidas del autóma-ta) y, en función de las condiciones (entradas del autómaautóma-ta), cual es el estado o microinstrucción siguiente.
La sección de control también se puede representar mediante un
diagrama de flujo.
Existen diversos métodos para implementar una sección de control:
1.
Tablas de estado.2.
Elementos de retardo.3.
Microprogramación.Tablas de Estado
•
Es la metodología que ya se ha explicado.•
Es compleja, dificil de depurar, no es modular ni flexible y esdificil realizar modificaciones (no hai una relación evidente entre la implementación y el algoritmo).
•
Su uso es poco frecuente.SECCIÓN DE CONTROL
Elementos de retardo
•
Implementación sencilla y directa.•
Alta velocidad pero con un alto coste hardware.•
Se utiliza en sistemas relativamente pequeños.•
Cada estado se implementa con un biestable tipo D.•
Exiten equivalencias entre un autómata, un diagrama de flujo yla implementación mediante elementos de retardo.
SECCIÓN DE CONTROL
Los puntos de control que se activan en cada estado se sacan de la salida del biestable correspondiente.
SECCIÓN DE CONTROL
Ejemplo: implementación con elementos de retardo
SECCIÓN DE CONTROL
SECCIÓN DE CONTROL
SECCIÓN DE CONTROL
Microprogramación
•
La implementación es sencilla y estándar.
•
El hardware es casi independiente de la
implemen-tación.
•
Es muy flexible y versátil.
•
Fácil de depurar, modificar y ampliar.
•
Su funcionamiento es relativamente lento debido a
los accesos a la memoria de control.
SECCIÓN DE CONTROL
Microprogramación
SECCIÓN DE CONTROL
Memoria de control
•
Almacena la información de control necesaria para
ejecutar el algoritmo.
•
Su tamaño viene dado por el número de
microins-trucciones (2
k) del microprograma por el número de
bits por microinstrucción (m).
•
Se puede implementar con una ROM, PROM o RAM.
Contador de microprograma (µP C)
•
Direcciona la memoria de control para seleccionar la
SECCIÓN DE CONTROL
Registro de microinstrucciones (MIR)
•
Almacena la µI que se está ejecutando actualmente.•
Ejemplo de formato doble para codificar las µI:1.
Para instrucciones de salto:◦
El bit más significativo a cero.◦
El campo condición indica la condición a verificar.◦
El campo dirección de salto codifica la dirección de la siguiente µI a ejecutar si la condición es cierta.SECCIÓN DE CONTROL
El funcionamiento o secuenciamiento puede realizarse de diferentes formas. Una de las más sencillas:
•
a: generación de la dirección siguiente = el µP C se incrementa(ejecución de la siguiente µI) o se carga una nueva dirección (salto).
•
b: se direcciona la memoria de control = lectura de la µIco-rrespondiente.
•
c: carga de la µI direccionada en el MIR.•
d: ejecución de la µI, dos posibilidades:1.
Activación de los puntos de control y desactivación del MUX de condiciones ⇒ El µP C se incrementa.2.
Selección en el MUX de la condición a verificar. Si se cumple la salida del MUX = 1 ⇒ el µP C se carga con la dirección especificada en la µI.SECCIÓN DE CONTROL
SECCIÓN DE CONTROL
SUMADOR SECUENCIAL
Algoritmo 0 (alto nivel): realiza la operación pero no
tie-ne en cuenta la sincronización con el exterior.
Cargar A
Cargar B
Borrar C
for I=1 to n
{
D
← A
⊕ B
⊕ C
SUMADOR SECUENCIAL
Algoritmo 1: introduce la sincronización con el exterior mediante
dos señales:
1.
Control Input: start, indica cuando comenzar la operación.2.
Control Output: done, indica cuando ha finalizado. Mientras es-ta señal esté a cero no puede comenzarse una nueva opera-ción.También se identifican las entradas y salidas utilizadas:
1.
Data Inputs: A, B2.
Data Outputs: D WAIT: do done ← 1 while (start) done ← 0 ---Cargar A Cargar B Borrar C for I=1 to n { Di ← Ai ⊕ Bi ⊕ C C ← Ai · Bi + (Ai ⊕ Bi) · C } ---goto WAITSUMADOR SECUENCIAL
Una vez identificadas las líneas de conexión con el
exte-rior empezaremos por diseñar un camino de datos capaz
de realizar el algoritmo:
1.
Se identifican las unidades de almacenamiento y
ope-radores necesarios:
•
A, B y D: registros de n bits.
•
C, done: biestables (registros de 1 bit).
•
1 FA.
SUMADOR SECUENCIAL
SUMADOR SECUENCIAL
Algoritmo 2: introduce los puntos de control (microoperaciones)
WAIT: do Preset while (start) Clear LOADA LOADB CLEARC for I=1 to n { SHIF TD LOADC SHIF TA SHIF TB } goto WAIT
SUMADOR SECUENCIAL
Algoritmo 3: se identifican las operaciones simultaneas
(se reduce el número de microinstrucciones necesarias).
WAIT: do
Preset
while (start)
Clear || LOADA|| CLEARC
LOADB
for I=1 to n
SHIF TD || LOADC|| SHIF TA|| SHIF TB
SUMADOR SECUENCIAL
El último paso consiste en eliminar las estructuras de control com-plejas (bucles WHILE, FOR, etc.) remplazándolas por saltos condi-cionales (if ) o incondicondi-cionales (goto).
do
operación
while (x)
pasaría a ser:
LOOP: operación
if (x) then goto LOOP
for I=1 to n
SUMADOR SECUENCIAL
Algoritmo 4: se substituyen las estructuras complejas por sus
mi-croinstrucciones equivalentes activando en paralelo los puntos de control que lo permitan.
WAIT: S0: Preset
if (start) then goto WAIT
S1: Clear || LOADA|| CLEARC|| CLEARI
S2 : LOADB
LOOP: S3: SHIF TD || LOADC|| SHIF TA|| SHIF TB||INCI
if (I<n) then goto LOOP goto WAIT
SUMADOR SECUENCIAL
El algoritmo puede expresarse también mediante un
au-tómata o diagrama de flujo.
SUMADOR SECUENCIAL
El camino de datos que implementa una computación no
es único. Otra posibilidad:
SUMADOR SECUENCIAL
Algoritmo 4 bis: sólo cambian los puntos de control que se activan
en S3
WAIT: S0: Preset
if (start) then goto WAIT
S1: Clear || LOADA|| CLEARC|| CLEARI
S2 : LOADB
LOOP: S3: SHIF TD || LOADC|| INCI
if (I<n) then goto LOOP goto WAIT
SUMADOR SECUENCIAL
Implementación de la sección de control: elementos de
retardo.
SUMADOR SECUENCIAL
Implementación de la sección de control: elementos de
retardo.
SUMADOR SECUENCIAL
Implementación de la sección de control:
microprogra-mación.
SUMADOR SECUENCIAL
Implementación de la sección de control:
microprogra-mación.
EJERCICIOS
9.1. Es ribeel mi ro odigo de la memoriaROM de la se ion de ontrolde un sistema
que realiza el algoritmo que se expone a ontinua ion, indi ando los valores de las
entradas del multiplexor de sele ionde salto.
INICIO: a tivarPRESET
if empieza goto INICIO
a tivarLOAD R y CLEAR TEST : if z 1 z 0 =10 goto BUCLE else if z 1 z 0
=01goto COR R ECCION
else a tivarDESPLAZA
R
BUCLE : a tivarINCREMENTA
a tivarRESTA y LOAD
D
if I <n goto BUCLE
goto INICIO
COR R ECCION : a tivarSUMA y LOAD
R
goto TEST
9.2. Dado el automata de la gura dise~na su orrespondiente unidad de ontrol
mi ro-progamada ompleta. S0 S1 S2 start c z S4 S3 I>n start z I<n c {C , C , C }0 1 2 {C , C }1 3 {C , C }4 6 {C , C }2 7 {C }8
30 TEMA 9. ESPECIFICACION ALGORITMICA DE SISTEMAS SECUENCIALES
9.3. La siguiente gura representa una unidad de ontrol implementada on elementos
de retardo. Extrae su automata de ontrole implementalomediante la te ni a de
ontrolmi roprogramado. D Q D Q D Q D Q33 D Q4 4 DEMUX 1 a 4 D Q55 DEMUX start 1 0 DEMUX 1 a 2 1 a 2 0 0 1 1 2 2 C0 C1 CLK Preset I>n Clear C4,C6 C2,C7 C3 00 01 10 11 0 1 X Y C5
9.4. Dise~na una unidad de ontrol mi roprogramada ompleta orrespondiente al
algo-ritmo siguiente que realiza lamultipli a ionentre dos numeros naturales X eY de
uatro bits, teniendo en uenta el amino de datos de la gura. Cal ula tambien
ual es la mejor se~nal de reloj para sin ronizar el sistema, teniendo en uenta los
siguientes datos: tiempode estabiliza ionde losregistrosy ontadores10ns,tiempo
9.5. Obter o autómata de control e deseñar a unidade de control microprogramada completa que implemente o algoritmo seguinte: INICIO: activar READY IF goto INICIO BUCLE: activar OK, STARTING IF end goto ESPERAR ELSE activar OK, SELECT IF input = 00 activar PROCESSING ELSE IF input = 01 activar INITIATING activar PROCESSING activar DONE ELSE goto RECUPERAR END IF goto BUCLE ESPERAR: activar WAIT, CHECK IF goto ESPERAR goto INICIO RECUPERAR: activar FAULT IF activar WAIT, RESTORING goto ESPERAR END IF goto BUCLE start ready ready
S0 S1 S2 S4 S5 start start {READY} {OK, STARTING} {OK, SELECT} {PROCESSING} {INITIATING} S6 S7 end i1i0=00 S3 i1i0=01 end ready ready i1i0=10 OR i1i0=11 (i1=1) {PROCESSING} {DONE} {WAIT, CHECK} INICIO: BUCLE: ESPERAR: 9.5. Autómata de Control: ready
9.5. Diagrama de Fluxo: S0 start si S1 no end no S2 i1i0=00 S3 i1i0=01 si no S4 S5 S6 S7 S8 S9 no no si si si no si {READY} {OK, STARTING} {OK, SELECT} {PROCESSING} {INITIATING} {PROCESSING} {DONE} {WAIT, CHECK} {FAULT} {WAIT, RESTORING} ready ready
9.5. Implementación con Elementos de Retardo: S0 Pr S1 Cl S2 Cl S3 Cl S4 Cl S8 Cl DEMUX 1 a 2 0 1 DEMUX 1 a 2 0 1 DEMUX 1 a 2 0 1 DEMUX 1 a 2 0 1 DEMUX 1 a 2 0 1 READY STARTING OK SELECT PROCESSING FAULT PRESET CLOCK START CLEAR END i1i0 = 00 i1i0 = 01 READY
9.5. Unidade de Control Microprogramada: ROM (32 x 12) CONTADOR MICROPROGRAMA CLK 1 LOAD INCR STROBE MUX 8 a 1 12 3 start end ready i1i0 = 00 i1i0 = 01 5 5 REG. MICROINSTRUCCIONES R E A D Y O K STA R T IN G SE L E C T PR O C E SS IN G IN IT IA T IN G D O N E W A IT C H E C K FA U L T R E ST O R IN G 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 x x x 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 x x x 0 1 1 1 0 1 0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 x x x 0 1 0 0 0 0 1 0 1 x x x 0 1 0 1 0 0 0 0 0 x x x 1 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 x x x 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 x x x 0 0 0 1 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 1 1 x x x 0 1 1 1 0 0 0 0 0 x x x 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 x x x 1 0 1 0 0 0 0 0 0 x x x 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 0 1 00000 00001 00010 00011 00100 00101 00110 00111 01000 01001 01010 01011 01100 01101 01110 01111 10000 10001 10010 10011 INICIO: BUCLE: ESPERAR: RECUPERAR: activar READY IF start goto INICIO activar OK, STARTING IF end goto ESPERAR activar OK, SELECT IF i1i0 = 00 goto 8 IF i1i0 = 01 goto 10 goto RECUPERAR activar PROCESSING goto BUCLE activar INITIATING activar PROCESSING activar DONE goto BUCLE activar WAIT, CHECK IF ready goto ESPERAR goto INICIO activar FAULT IF ready goto 20 goto BUCLE
[Examen TC Septiembre'2005] Deseñar a unidade de control microprogramada completa do seguiente algoritmo: INICIO: activar PREPARADO IF GOTO INICIO activar INICIALIZANDO BUCLE_TIEMPO: activar CALCULAR_INSTANTE
activar INICIALIZAR1, INICIALIZAR2, INICIALIZAR3 IF x1x0 = 11 activar PROCESAR1 ELSE IF x1x0 = 01 activar PROCESAR2 activar DONE ELSE IF parar activar FINALIZAR GOTO INICIO END IF END IF GOTO TEST GOTO BUCLE_TIEMPO TEST: activar PONER_A_CERO BUCLE_TEST: activar ACUMULAR IF parar activar FINALIZAR GOTO INICIO END IF activar COMPARAR IF GOTO BUCLE_TEST empezar converge
S0 S3 S5 S6 empezar empezar {PREPARADO} {INICIALIZAR1, INICIALIZAR2, INICIALIZAR3 } {FINALIZAR} {DONE} S7 X1X0=11 S4 S10 S11 parar converge (X1X0=00 AND parar) OR (X1X0=10 AND parar) (X0=0 AND parar) {PROCESAR2} {PONER_A_CERO} {ACUMULAR} INICIO: BUCLE_TIEMPO: TEST: BUCLE_TEST: Temos: 13 puntos de control [Examen TC Septiembre'2005] Autómata de Control: parar S1 {INICIALIZANDO} S2 {CALCULAR_INSTANTE} {PROCESAR1} X1X0=01 S8 S9 {FINALIZAR} {COMPARAR} converge
ROM (32 x 14) CONTADOR MICROPROGRAMA CLK 1 LOAD INCR STROBE MUX 8 a 1 14 3 empezar parar converge x1x0 = 11 x1x0 = 01 5 5 REG. MICROINSTRUCCIONES PR E PA R A DO INI C IAL IZ ANDO C ALCU L AR _I NST ANT E INI C IAL IZ AR 1 INI C IAL IZ AR 2 INI C IAL IA R 3 PR OC E SAR 1 PR O C E SA R 2 DONE FI NA L IZ AR PONE R _A_C E R O activar PREPARADO IF empezar goto INICIO activar INICIALIZANDO activar CALCULAR_INSTANTE activar INIC1, INIC2, INIC3 IF x1x0 = 11 goto 9 IF x1x0 = 01 goto 11 IF parar goto 14 goto TEST AC U M UL AR C OM PAR AR [Examen TC Septiembre'2005] Unidade de control micropogramada: 00000 00001 00010 00011 00100 00101 00110 00111 01000 INICIO: BUCLE_TIEMPO: 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 x x x x x 1 0 0 0 0 0 0 0 1 x x x x x 0 0 0 0 0 0 1 0 0 x x x x x 0 1 0 0 1 0 1 0 1 x x x x x 0 1 0 1 1 0 0 1 0 x x x x x 0 1 1 1 0