Sunteți pe pagina 1din 28

FUNDAMENTOS DE ARQUITECTURA DE MICROPROCESADORES Unidad Secuencial de Cálculo

CAPÍTULO 3. UNIDAD SECUENCIAL DE CÁLCULO

La unidad secuencial de cálculo está constituida por la ALU y etapas de


almacenamiento de información, es decir los datos del proceso.

En el anterior capítulo (subcapítulo 2.4) se ha desarrollado una sencilla


forma tabular de describir las operaciones de una ALU que componen
una aplicación. En esa secuencia operacional descriptiva se nota
claramente la interacción con el operador. Éste debe introducir
información a las entradas de la ALU y realimentar resultados parciales,
obtenidos a la salida, nuevamente a las entradas.

Para es preciso incorporar La estrategia básica de este capítulo es


incorporar el uso de dispositivos de almacenamiento con el fin de
reducir el proceso manual y, por supuesto, incrementar el la
automatización.

En este contexto se desarrolla los conceptos de registro acumulador,


registro de banderas y memoria de datos.

Ing. Marcelo Ramírez M. Página 55


FUNDAMENTOS DE ARQUITECTURA DE MICROPROCESADORES Unidad Secuencial de Cálculo

3.1. ACUMULADOR.
3.1.1. Registro de datos.

Para poner en evidencia la necesidad de almacenamiento de


información, considérese la secuencia del ejemplo 2.1 del capítulo 2,
que se repite aquí por comodidad:

Ej. 3.1: Diseñar una secuencia operativa para calcular la función:

f ( x , y , z)  2 x  y  z  3

; calcular f(x,y,z)
; colocar x en A y en B
add ; R=2x
; colocar resultado en A y en B
sub ; R=2x-y
; colocar z en A y resultado en B
not ; R= z
; colocar resultado en A
add ; R=2x-y+ z
; colocar resultado en A
dec ; R=2x-y+ z -1
; colocar resultado en A
dec ; R=2x-y+ z -2
; colocar resultado en A
dec ; R=2x-y+ z -3
; listo
.fin

Se nota que, antes de ejecutar una operación en el sistema, el operador


debe colocar manualmente los datos en las entradas, así como los
resultados intermedios obtenidos. En el laboratorio, al emplear el
sistema montado en una plantilla prototipo, esta tarea es tediosa luego
de muy pocas repeticiones de la secuencia operativa. La tarea es
excesivamente tediosa en casos de secuencias más largas.

Al observar la secuencia del ejemplo se nota


la necesidad de establecer una conexión
entre la salida de la ALU y una de sus
entradas (ver figura 3.1), de modo que el
resultado de una operación esté presente en
la entrada para ser usada como operando de
la siguiente operación a ser ejecutada.

Fig. 3. 1 - Conexión de realimentación de datos

Ing. Marcelo Ramírez M. Página 56


FUNDAMENTOS DE ARQUITECTURA DE MICROPROCESADORES Unidad Secuencial de Cálculo

Debido a la naturaleza combinacional del sistema, la realimentación


directa no permitirá un sistema estable. Para evitar ello entonces debe
colocarse una etapa de registro a la salida de la ALU, de modo que su
contenido permanezca estable durante el tiempo que dure cada
operación.

La solución se muestra en la figura a continuación.

Fig. 3. 2 - Registro realimentado

3.1.2. Temporización de operaciones.

El sistema cuenta ahora con una etapa secuencial, el registro; el


resultado de cualquier operación de la ALU se almacena en el registro.

El funcionamiento es como sigue:

1. se aplica un código de operación al descodificador de operaciones


(que no se muestra en la figura por simplicidad);

2. luego de que el resultado esté estable a la salida de la ALU, se


aplica un pulso que dispara el registro como se muestra en el
diagrama de temporización.

Fig. 3. 3 - Temporización de la transferencia1 ALU - registro

1
La transferencia es, en el contexto de los registros, una copia. La información de un registro se
copia a otro sin que necesariamente sea borrado el contenido de origen.

Ing. Marcelo Ramírez M. Página 57


FUNDAMENTOS DE ARQUITECTURA DE MICROPROCESADORES Unidad Secuencial de Cálculo

El tiempo de establecimiento de la información antes del pulso es la


suma de los retardos de los componentes:

t ALU  t DOP  t MUX  tUBC Ec. 3. 1

Donde:

tALU = retardo de propagación de la ALU


tDOP = retardo del descodificador de operaciones
tMUX = retardo del multicanalizador
tUBC = retardo de la UBC

Es necesario aclarar individualmente los retardos que componen el


tiempo total de proceso de la ALU.

1. El retardo del descodificador de operaciones (tDOP) es el tiempo de


acceso de lectura de la ROM que cumple esa función.

2. El retardo del multicanalizador (tMUX) consta de un mínimo de tres


etapas de compuertas lógicas, sin embargo los diseños
industriales presentan mayor retardo por uso de etapas para
amplificación de corriente, por ejemplo, el 74HC/HCT151 es un
multicanalizador de 8 entradas y su estructura lógica interna se
muestra en la figura.

Fig. 3. 4 - Multicanalizador 74HC/HCT151 de Philips


Fuente: Philips Semiconductors

Ing. Marcelo Ramírez M. Página 58


FUNDAMENTOS DE ARQUITECTURA DE MICROPROCESADORES Unidad Secuencial de Cálculo

3. El retardo de la UBC (tUBC) está compuesto por las dos etapas de


control (las compuertas de control de paso y control de inversión
lógica) y las etapas del sumador. En este caso el sumador de n
bits con conexión de acarreo en serie (ripple carry) tiene un
retardo de (n-1)*2 retardos lógicos, debido a que existe una
conexión serial de n-1 acarreos entre los sumadores y cada
sumador tiene una estructura de dos etapas lógicas entre el
acarreo de entrada y el de salida. Para obtener un mejor tiempo
de respuesta se emplea un sumador con anticipo de acarreo
(carry look-ahead).

3.1.3. Operativa ALU + registro acumulador.

La acción del registro de dato realimentado automatiza algunas


operaciones manuales.

Ej. 3.2: Considere, por un momento, que se requiere calcular la función


x+4y mediante una secuencia operativa. La solución para la ALU es
como se muestra en el cuadro.

; calcular x+4y
; colocar x en A y en B
add ; R=x+y
; colocar R en A
add ; R=x+2y
; colocar R en A
add ; R=x+3y
; colocar R en A
add ; R=x+4y
.fin

Ahora bien, si se emplea el sistema ALU + registro de datos, la


secuencia experimenta un cambio muy notorio:

; calcular x+4y
; colocar x en B
leer B ; R=x
; colocar y en B
add ; R=x+y
add ; R=x+2y
add ; R=x+3y
add ; R=x+4y
.fin

Ing. Marcelo Ramírez M. Página 59


FUNDAMENTOS DE ARQUITECTURA DE MICROPROCESADORES Unidad Secuencial de Cálculo

Se aprecia que, una vez leída la segunda variable, ésta se “acumula” en


el registro. En tales condiciones, a un registro de este tipo se lo conoce
como registro acumulador.

Ej. 3.3: Diseñar una secuencia operativa para calcular la función:

f ( x , y , z)  2 x  y  z  3

Esta es la misma función del ejemplo 3.1 (extraída previamente del


capítulo 2). En el nuevo sistema la secuencia se transforma en:

; calcular f(x,y,z)
; colocar x en B
leer B ; R=x
add ; R=2x
; colocar y en B
sub ; R=2x-y
; colocar z en B
leer B
not ; R= z
; colocar resultado anterior en B
add ; R=2x-y+ z
dec ; R=2x-y+ z -1
dec ; R=2x-y+ z -2
dec ; R=2x-y+ z -3
; listo
.fin

3.2. REGISTRO DE BANDERAS.


En el subcapítulo 2.6 se describe la configuración de la palabra de
estado, que está referida al estado del proceso de una función luego de
disparado el acumulador.

3.2.1. Registro de la palabra de estado.

También es necesario conservar la palabra de estado y mantenerla


registrada por los motivos señalados en 2.6, sin embargo no es
deseable tener un registro monolítico y dispararlo simultáneamente
para todos los casos.

Más bien conviene montar un registro mediante un conjunto de flip-


flops tipo D que sean disparados individualmente según la conveniencia
de reflejar o forzar información de estado de proceso para cada
operación.

Ing. Marcelo Ramírez M. Página 60


FUNDAMENTOS DE ARQUITECTURA DE MICROPROCESADORES Unidad Secuencial de Cálculo

En tal caso, y considerando los efectos de las operaciones en las


banderas descritos en 2.6, los esquemas de control de registro de las
banderas debieran ser como se muestra en la figura a continuación.

Fig. 3. 5 - Control del registro de banderas

El lector debe analizar y comprobar el diseño del subsistema de registro


controlado de banderas, así como los valores de los nuevos bits de
control. Otro ejercicio interesante es armar una nueva tabla de
operaciones que las nuevas palabras de control.

3.2.2. Control y temporización.

El diagrama anterior genera un concepto interesante y muy importante


para simplificar la diagramación. En el diagrama simplificado de la
figura 3.6 se aprecia dos etapas de control: control de contenido de las
banderas, a través de las señales S7, S8 y S9 y control de disparo de los
flip-flops, mediante las señales S10, S11 y S12.

Este último control, debido a que determina en qué momento son


disparados los flip-flops individuales, también se denomina control de
temporización.

Ing. Marcelo Ramírez M. Página 61


FUNDAMENTOS DE ARQUITECTURA DE MICROPROCESADORES Unidad Secuencial de Cálculo

Fig. 3. 6 - Lógica de control y temporización

Nótese que la entrada de disparo del registro D es múltiple.

3.3. UNIDAD SECUENCIAL DE CÁLCULO.


3.3.1. Arquitectura.

La arquitectura resultante del sistema compuesto por la ALU, el registro


acumulador y el registro de banderas se denomina unidad secuencial de
cálculo (USC). En la figura se muestra una USC de 8 bits.

Fig. 3. 7 - Arquitectura de la unidad secuencial de cálculo

Ing. Marcelo Ramírez M. Página 62


FUNDAMENTOS DE ARQUITECTURA DE MICROPROCESADORES Unidad Secuencial de Cálculo

Por simplicidad no se detalla las conexiones de disparo de los registros,


ni las conexiones de las demás señales de control hacia la ALU.

Se aprecia dos partes mayores, la primera es la sección compuesta por


la ALU, el registro de datos y el registro de banderas; la segunda
sección es la parte de control, que incluye el descodificador de
operaciones y la lógica de control y temporización.

Esta lógica de control y temporización a su vez, incluye las compuertas


de control de paso de información las de control de paso del pulso
empleado para disparar los registros (control de temporización). La
lógica de control y temporización está alimentada por la palabra de
control y la señal de pulso. Debe tenerse en cuenta que algunos de los
bits estáticos de control pasan directamente de la salida del
descodificador de operaciones a los subsistemas controlados,
concretamente a la ALU.

Otras señales de control son señales de pulso condicionadas a algunos


bits de la palabra de control mediante compuertas de control de paso.

La lógica de generación de las banderas está incluida en la ALU, como


se muestra en la figura 2.29 del capítulo 2.

En la figura se aprecia la un esquema integrado del sistema. La señal de


pulso ha sido denominada .

Fig. 3. 8 - USC integrada

3.3.2. Funcionamiento.

En la figura 3.7 también se incluye una serie de etiquetas descriptivas


de los componentes que sirve para la explicación del funcionamiento.

1. Luego de tener estable un dato en la entrada B de la ALU (o


ninguno, si la operación no lo necesita), se aplica un código de
operación a la entrada del descodificador de operaciones.

2. Luego de un retardo (que es en realidad el tiempo de acceso de


lectura de la ROM, que actúa como descodificador), a la salida del
descodificador se obtiene la palabra de control que, mediante

Ing. Marcelo Ramírez M. Página 63


FUNDAMENTOS DE ARQUITECTURA DE MICROPROCESADORES Unidad Secuencial de Cálculo

los bits S6:0, dirige actividades en la ALU e invoca a la operación


correspondiente.

3. Luego del retardo de la ALU, el resultado de la operación está


estable a la entrada del acumulador. Debido a que la lógica de
control y temporización requiere de estabilidad a la salida de la
ALU, principalmente por el establecimiento de las banderas, se
debe considerar el retardo de dicha lógica antes de disparar el
acumulador. Las señales S9:7 son señales de control de paso
para algunas banderas y las señales S12:10 determinan el paso del
pulso hacia los registros.

4. Finalmente, el pulso es disparado, el resultado de la operación se


almacena en el registro acumulador y el estado del proceso en
el registro de banderas.

3.3.3. Temporización.

La temporización de la USC deriva de la secuencia de funcionamiento y


se muestra en la figura a continuación.

Fig. 3. 9 - Temporización de la USC

El tiempo de establecimiento de la información antes del pulso es la


suma de los retardos de los componentes:

tUSC  tDOP  t ALU  tCTL  t ACU Ec. 3. 2

Donde:

tUSC = retardo de propagación de la usc


tDOP = retardo del descodificador de operaciones
tALU = retardo de la ALU
tCTL = retardo de la lógica de control y temporización
tACU = ancho del pulso de disparo del acumulador

Ing. Marcelo Ramírez M. Página 64


FUNDAMENTOS DE ARQUITECTURA DE MICROPROCESADORES Unidad Secuencial de Cálculo

3.4. ALMACENAMIENTO DE DATOS.


Hasta ahora se ha visto la capacidad de cálculo del sistema y se ha
incorporado una etapa de registro de información (el acumulador) que
almacena la salida del proceso (resultado de la última operación
ejecutada).

Sin embargo esta capacidad de almacenar información es insuficiente


pues sólo alcanza para una palabra de datos. Intuitivamente se siente la
necesidad de una mayor capacidad de almacenamiento.

Supóngase la adición de un segundo acumulador para el efecto. Ello


tiene varias implicaciones: la adición de nuevas operaciones, nuevas
señales de control y rediseño de algunos componentes del sistema. En
la sección de ejercicios se guía al lector para desarrollar esta parte.

3.4.1. Memoria de datos.

Nuevamente se recurre al ejemplo anterior para establecer e ilustrar


una situación.

Ej. 3.4: La secuencia muestra la descripción operativa necesaria para


calcular la función f (x, y, z)  2x  y  z  3 mediante la USC.

; calcular f(x,y,z)

; colocar x en B
leer B ; R=x
add ; R=2x

; colocar y en B
sub ; R=2x-y (tomar nota)

; colocar z en B
leer B
not ; R= z

; colocar resultado anterior en B


add ; R=2x-y+ z
dec ; R=2x-y+ z -1
dec ; R=2x-y+ z -2
dec ; R=2x-y+ z -3

; listo
.fin

La diferencia con la secuencia descrita operativamente para la ALU es


muy notoria. El grado de automatización ha permitido la reducción de

Ing. Marcelo Ramírez M. Página 65


FUNDAMENTOS DE ARQUITECTURA DE MICROPROCESADORES Unidad Secuencial de Cálculo

las tareas del operador. Sin embargo, en la línea de la operación sub se


ha añadido un comentario que incluye la frase entre paréntesis: “(tomar
nota)”, que presupone el uso de una medio de registro externo del
resultado: papel y lápiz, dictáfono, la memoria del operador, etc..

En una expresión con muchos resultados intermedios, como el que se


ha hecho notar luego de la operación sub, talvez el único medio
práctico sea el papel; aún así, la tarea puede ser muy tediosa y sigue
siendo dependiente de operación manual.

La situación tiene una solución objetiva y que cae de madura:


incorporar una memoria de lectura y escritura (RAM) tanto para
registrar, a voluntad, la información contenida en el acumulador como
para obtener datos de ella y cargarlos en el acumulador.

Para facilitar la esquematización se empleará uno de los modelos de


unidad de memoria RAM como se muestra en la figura que sigue.

Fig. 3. 10 - Modelos de memoria RAM

No está por demás una explicación de las conexiones:

DIR – Líneas de entrada para direccionamiento


DAT – Líneas bidireccionales de datos
RD – Entrada de control de transferencia de lectura
WR – Entrada de control de transferencia de escritura
CS – Entrada de selección de dispositivo (tres estados)

El modelo de la derecha es más sencillo debido a que se puede


considerar que la memoria, mientras no se escriba en ella, está en
modo de lectura. Las líneas bidireccionales de datos implican una etapa
de alta impedancia bidireccional (transceptor de tres estados) interna
de la RAM.

Una configuración típica consiste en la habilitación del acceso de


escritura mediante la combinación AND de CS y WR y en la habilitación
de la lectura de datos mediante CS.

Ing. Marcelo Ramírez M. Página 66


FUNDAMENTOS DE ARQUITECTURA DE MICROPROCESADORES Unidad Secuencial de Cálculo

Un esquema simplificado de incorporación de una memoria de datos a


la USC se muestra en la figura a continuación.

Fig. 3. 11 - USC + memoria

Nótese que la RAM de datos puede ser tener cualquier capacidad,


pequeña mediana o arbitrariamente grande. En el diagrama se
esquematiza una memoria con n líneas de direcciones y, por tanto, una
capacidad de almacenamiento de 2n-1 palabras de datos.

3.4.2. Diseño del acoplamiento.

La conexión de la RAM de datos con la USC para permitir la copia del


contenido del acumulador en
una posición de memoria se
muestra en la figura.

Fig. 3. 12 - USC + memoria de


datos

Nuevamente por simplicidad,


se omite algunas partes de la
USC y solamente se muestra
el esquema de escritura en la
memoria. La ruta de conexión
es directa de la salida del
acumulador a las líneas de
datos de la RAM.

Se establece las siguientes


consideraciones de diseño
lógico:

Ing. Marcelo Ramírez M. Página 67


FUNDAMENTOS DE ARQUITECTURA DE MICROPROCESADORES Unidad Secuencial de Cálculo

1. Se debe incluir un mecanismo de distribución de las líneas de


datos de la memoria para enrutar la salida, de modo que sea
posible leer en el acumulador un dato almacenado en la
memoria. La ruta entre la memoria y la entrada del
acumulador debe ir a través de la ALU.

El mecanismo de distribución, debido a la bidireccionalidad de


las líneas de datos de la RAM, debe de emplear separadores de
alta impedancia (buffers de tres estados), como se ve en la
figura.

Fig. 3. 13 - Enrutamiento de datos de la RAM

Existen dos posibilidades de conexión de la memoria como


fuente de información hacia la ALU: la entrada A y la entrada
B. En A está presente el acumulador, que es uno de los
operandos en la operaciones binarias (el otro es un dato
proveniente de la memoria) y ambos operandos deben estar
presentes simultáneamente en las entradas de la ALU. Por
tanto, el único camino posible es B.

Por lo expuesto, se requiere compartir la entrada B entre la


memoria y el canal de entrada de datos externos mediante un
multicanalizador (mux).

2. La segunda consideración de diseño está referida al control de


la transferencia y a la habilitación de la unidad de memoria. Al
respecto, debido a que la memoria proporciona datos a la ALU
para automatizar la realimentación de datos o resultados
intermedios, las operaciones que involucran a dos operandos
(anteriormente A y B) ahora requieren del acumulador y la
memoria, por tanto, la memoria debe estar permanentemente

Ing. Marcelo Ramírez M. Página 68


FUNDAMENTOS DE ARQUITECTURA DE MICROPROCESADORES Unidad Secuencial de Cálculo

en modo de lectura. En caso de necesidad de introducción de


datos externos, un bit de control activará adecuadamente el
mux.

Lo anterior implica que la entrada de control de escritura WR


de la memoria debe estar normalmente en valor lógico 0
(inactiva o en reposo), correspondiente a una condición de
lectura, y en 1 lógico cuando se necesite almacenar el valor del
acumulador. Asimismo, la memoria puede estar habilitada
permanentemente, por lo que la entrada CS debe estar fija a 1
lógico.

3. Se requiere incorporación de dos nuevas operaciones: escritura


y lectura; esta última, al margen de las operaciones binarias,
permitirá transferir un dato de memoria al acumulador.

El esquema final es el siguiente:

Fig. 3. 14 - USC con memoria de datos

Ing. Marcelo Ramírez M. Página 69


FUNDAMENTOS DE ARQUITECTURA DE MICROPROCESADORES Unidad Secuencial de Cálculo

3.5. ARQUITECTURA COMPLETA DEL SISTEMA.


En la figura 3.15 se muestra un diagrama alternativo del sistema y se
destaca tres subsistemas principales:

 la unidad de ejecución, compuesta por la ALU, el registro de datos


(acumulador) y el registro de banderas;

 la unidad de control, compuesta por el descodificador de


operaciones y la lógica de control y temporización;

 la unidad de memoria, compuesta por la memoria de datos y su


interfaz de acoplamiento con la USC.

Fig. 3. 15 - Arquitectura del sistema USC + memoria de datos

La palabra de control tiene ahora 15 bits. Es un buen ejercicio para el


lector determinar las palabras de control para todas las operaciones que
el sistema es capaz de llevar a cabo.

Ing. Marcelo Ramírez M. Página 70


FUNDAMENTOS DE ARQUITECTURA DE MICROPROCESADORES Unidad Secuencial de Cálculo

El diagrama del sistema puede simplificarse aún más, como se ve en la


figura que sigue. A estas alturas no hay secretos ni cajas negras en la
arquitectura interna por lo que el sistema puede representarse como un
bloque integrado.

Fig. 3. 16 - Sistema integrado USC + memoria de datos

3.6. CONJUNTO DE OPERACIONES.


En la sección 3.4.2 se destaca la necesidad de contar con dos nuevas
operaciones: lectura de memoria y escritura en memoria.
Específicamente las operaciones deben ser:

 Lectura: transferencia de un dato almacenado en la memoria al


acumulador.

 Escritura: transferencia del dato contenido en el acumulador a


una posición de memoria.

Las nuevas operaciones pueden ser designadas con abreviatura


mnemónicas relevantes, por ejemplo:

lda dirmem

dirección del dato en la memoria de datos

Leer Dato de memoria en el Acumulador

sta dirmem

dirección de la posición en la memoria de datos

depoSitar daTo del Acumulador en la memoria

Ing. Marcelo Ramírez M. Página 71


FUNDAMENTOS DE ARQUITECTURA DE MICROPROCESADORES Unidad Secuencial de Cálculo

Las abreviaturas mnemónicas han sido elegidas con una dosis de


complicidad de la terminología en inglés para las operaciones descritas;
en ese contexto son abreviaturas comunes: ld (“load” significa cargar,
en castellano) y st (“store” significa guardar, en castellano).

la tabla que resume el conjunto de operaciones del sistema USC +


memoria de datos es la siguiente.

Formato
Código de máquina simbólico de Palabra de estado
operación Descripción de la función
C.Op. Código de
Op. Arg. N Z V H P C
Hex argumento
0 x … x x clr 0 1 0 0 0  Cero aL Resultado
1 x … x x nop       Ninguna OPeración
2 x … x x in    0   Introducir dato externo
3 x … x x neg       NEGativo de a
4 x … x x not       NOT a
5 m … m m and dirmem   0  0 AND
6 m … m m or dirmem    0  0 OR
7 m … m m xor dirmem    0  0 XOR
8 m … m m add dirmem       ADicionar Dato
9 m … m m sub dirmem       SUBstraer
A x … x x inc       INCrementar a
B x … x x dec       DECrementar a
Leer Dato de memoria en el
C m … m m lda dirmem    0  
Acumulador
depoSitar daTo del
D m … m m sta dirmem    0  
Acumulador en la memoria
Tabla 3. 1 - Conjunto de operaciones de la USC + memoria de datos

Existen grandes novedades con relación a la tabla 2.9:

1. La operación leer A fue cambiada por nop (= Ninguna


OPeración). La lectura del acumulador en sí mismo no genera
cambio alguno en su contenido, sin embargo, considerando la
palabra de control, nop tampoco debe alterar las banderas. Es
decir, nop no debe alterar el estado del proceso y sólo sirve para
consumir un ciclo de operación.

2. La operación leer B fue cambiada por in (= Introducir dato


externo). Una revisión de los diseños desarrollados explica esta
situación. La entrada B de la ALU ahora es compartida por dos
tipos de fuente de datos: el mundo exterior y la memoria.

3. Algunas operaciones requieren hacer referencia a memoria, es


decir, especificar un argumento. Las operaciones aritméticas y
lógicas que usan dos operandos y las dos nuevas operaciones de
transferencia entre el acumulador y la memoria. En el código
binario, también llamado código de máquina, aquello se observa
en la parte correspondiente al código del operando (argumento):

Ing. Marcelo Ramírez M. Página 72


FUNDAMENTOS DE ARQUITECTURA DE MICROPROCESADORES Unidad Secuencial de Cálculo

las operaciones que hacen referencia a memoria deben contener


una dirección válida de memoria.

En el caso de las demás operaciones, el valor del código de


argumento no interesa y, por tanto, convencionalmente es
preferible dejarlo en 0.

4. las abreviaturas mnemónicas de las operaciones presentan un


argumento, en el caso de operaciones que hacen referencia a
memoria. Este argumento es igual a la dirección de la posición de
memoria referida y constituye una buena práctica usar en la
descripción operativa nombres simbólicos en vez de direcciones
numéricas.

5. Las dos nuevas operaciones deben afectar a las banderas N, Z y


P porque proporcionan información necesaria. La bandera H baja
a 0 puesto que no hay acarreo del bit 3 al bit 4. Las banderas de
desborde, V y C, no deben cambiar.

6. Existen dos espacios de código libre que serán usados


posteriormente con operaciones adicionales.

7. El código de máquina ahora está compuesto por el código de


operación y código de argumento. Debido a su longitud se usará
notación hexadecimal.

El siguiente paso en el diseño de las nuevas operaciones consiste en


establecer las palabras de control asociadas. Con todo el conocimiento
acumulado hasta ahora se obtiene:

Operación S14 S13 S12 S11 S10 S9 S8 S7 S6 S5 S4 S3 S2 S1 S0


lda dirmem 1 0 0 0 1 1 1 1 1 1 1 0 0 0 0
sta dirmem 0 1 0 0 1 1 1 1 1 1 1 0 0 0 0
Tabla 3. 2 - Palabras de control de las operaciones lda y sta

La tabla le sirve al lector para completar la tabla de palabras de control


de todas las operaciones del sistema.

3.7. LENGUAJE SIMBÓLICO DE PROGRAMACIÓN


(Segunda parte).
El ejemplo 3.4 muestra un notorio avance en la automatización de la
ejecución de operaciones que se ha logrado con la incorporación de un
registro acumulador a la ALU. La incorporación de la memoria de datos
permite un avance adicional sustancial en el proceso.

En el ejemplo es necesario calcular un resultado intermedio; además, la


introducción de datos externos (en este caso las variables de la

Ing. Marcelo Ramírez M. Página 73


FUNDAMENTOS DE ARQUITECTURA DE MICROPROCESADORES Unidad Secuencial de Cálculo

expresión) debe complementarse con el almacenaje en la memoria de


datos. El proceso de traducción ahora debe incluir nuevas tareas:

1. El traductor debe generar el código de operando para tanto las


operaciones que requieren de argumento como para las que no lo
requieren.

2. Debido a que las variables de entrada (casi siempre) deben


guardarse en memoria, así como los resultados intermedios, es
necesario incorporarlos al inicio de la secuencia descriptiva, de
modo que el traductor pueda generar el código de operando. A
este proceso se denomina “declaración de variables”.

3. El traductor ensambla el código completo de cada función


combinando el código de operación y el código de operando. A
este proceso se denomina “ensamblado”. De ahí que el traductor
se denomina “ensamblador”. De aquí en adelante se empleará
este término.

Ej. 3.5: Diseñar una secuencia operativa para calcular la función


f(x,y,z) en el sistema USC + memoria de datos. Nuevamente se
recurre a la función:

f ( x , y , z)  2 x  y  z  3

Ahora es preciso declarar las variables. Para el ejemplo se usan datos


de 8 bits. Es necesario proporcionar nuevas reglas al ensamblador para
que pueda traducir correctamente la declaración.

.datos <dirección inicial>


x .oct ?
y .oct ?
z .oct ?
aux .oct ?
La nueva directiva .datos permite al ensamblador encarar el proceso de
traducción de la declaratoria de las variables.

El argumento de la directiva indica al ensamblador la dirección inicial de


la memoria de datos a partir de la cual serán definidas las variables. En
caso de omisión del argumento, el ensamblador asume el valor 0, es
decir la primera posición de la memoria de datos.

Luego el ensamblador ejecuta varias tareas secuenciales, como se


explicó en el capítulo 2:

1. lee la línea de texto y ensambla una palabra con la cadena de


caracteres que lee uno tras otro,

Ing. Marcelo Ramírez M. Página 74


FUNDAMENTOS DE ARQUITECTURA DE MICROPROCESADORES Unidad Secuencial de Cálculo

2. ignora los espacios,

3. encuentra la directiva .oct, que es una abreviatura de “octeto”,

4. busca la cadena leída en una tabla de directivas,

5. lleva a cabo una rutina específica:

a. asigna al nombre “x” el valor numérico correspondiente a la


dirección de memoria;

b. genera una tabla de símbolos en la que registra la


variable y su valor numérico;

c. asigna un contenido inicial a la posición de memoria (ahora


llamada x) que está expresado como argumento de la
directiva .oct; en el ejemplo el uso del carácter “?” significa
que no es necesario definir un valor inicial para la variable.

En resumen, la directiva asigna al nombre “x” el valor numérico de la


dirección de memoria y el argumento es el valor inicial contenido en x.
A partir de este ejemplo, a menos que se especifique algo diferente, en
todos los ejemplos casos se empleará sistemas de 8 bits.

Una vez concluido el trabajo de ensamblado sobre las variables, la


porción del código fuente ensamblado queda así:

.datos
0 ?? x .oct ?
1 ?? y .oct ?
2 ?? z .oct ?
3 ?? aux .oct ?

argumento
directiva
nombres de las variables
contenido de la memoria
dirección de memoria

Las columnas de código objeto generadas por el ensamblador, están


expresadas en hexadecimal, de ahí que “??” representa dos dígitos
hexadecimales (un octeto) no definidos.

A continuación, el resto de la secuencia se inicia con una nueva


directiva, .prog, que indica al ensamblador que, por el momento, ha
concluido su proceso de definición de variables y que ahora corresponde
la traducción de la secuencia operativa. La arquitectura influye

Ing. Marcelo Ramírez M. Página 75


FUNDAMENTOS DE ARQUITECTURA DE MICROPROCESADORES Unidad Secuencial de Cálculo

decididamente en la formulación de la secuencia, como se ve a


continuación:

.prog

; introducir variables (leer datos)


in ; leer x
sta x ; y guardar
in
sta y
in
sta z

; calcular f
lda x ; cargar x en el acumulador
add x ; duplicar x
sub y ; restar y
sta aux ; guardar resultado intermedio
lda z ; leer z
not ; invertir
add aux ; añadir a resultado parcial
dec ; finalmente, restar 3
dec
dec

.fin

Una alternativa para el proceso de un valor constante (3, en el ejemplo)


es declarar la constante y guardarla en memoria como valor inicial. En
el ejemplo se empleó tres operaciones de decremento, pero este
recurso no es práctico en casos de valores comparativamente grandes.
La alternativa resulta en lo siguiente:

.datos <dirección inicial>


MONTO .def 3 ; constante

x .oct ?
y .oct ?
z .oct ?
aux .oct ?
const .oct MONTO
La última sentencia podría tener como argumento el valor 3, pero es
importante, en este momento, introducir una nueva directiva: “.def”,
que sirve para asignar un valor a un nombre simbólico, típicamente en
el caso de constantes.

Con el uso de las nuevas reglas y la alternativa de la constante, el


listado ensamblado queda así:

Ing. Marcelo Ramírez M. Página 76


FUNDAMENTOS DE ARQUITECTURA DE MICROPROCESADORES Unidad Secuencial de Cálculo

; calcular f(x,y,z) = 2x-y+ z -3

; datos y variables

.datos <dirección inicial>

MONTO .def 3 ; constante

0 ?? x .oct ? ; variable x
1 ?? y .oct ? ; variable y
2 ?? z .oct ? ; variable z
3 ?? aux .oct ? ; para resultados parciales
4 03 const .oct MONTO ; para guardar la constante

; secuencia de cálculo

.prog

; introducir variables (leer datos)

20 in ; leer x
D0 sta x ; y guardar
20 in ; leer y
D1 sta y ; y guardar
20 in ; leer z
D2 sta z ; y guardar

; calcular f(x,y,z)

C0 lda x ; cargar x en el acumulador


80 add x ; duplicar x
91 sub y ; restar y
D3 sta aux ; guardar resultado intermedio
C3 lda z ; leer z
40 not ; invertir
83 add aux ; sumar con resultado parcial
94 sub const ; finalmente, restar 3

.fin

Este listado se puede emplear en laboratorio, en dos etapas:

1. la fase de cargado de datos iniciales, que consiste en guardar en


la memoria de datos los valores iniciales declarados;

2. la fase operativa, que consiste en operar el sistema mediante la


introducción del código ensamblado y la acción del pulso .

Ing. Marcelo Ramírez M. Página 77


FUNDAMENTOS DE ARQUITECTURA DE MICROPROCESADORES Unidad Secuencial de Cálculo

3.8. EJERCICIOS.
1. Diseñe el acoplamiento de un segundo acumulador a la salida
(¡y a la entrada!) de la ALU; incluya lógica para control y
temporización.

2. Analice el resultado del diseño del ejercicio anterior y


establezca el impacto en el conjunto de operaciones. Podría
considerar generar operaciones idénticas a las que ya existen
para el acumulador original. Designe nombres para ambos
acumuladores, por ejemplo: R1 y R2 o A y B.

3. Considere el diseño de las palabras de control en la situación


del ejercicio anterior. Analice las nuevas señales de control
requeridas y esquematice el tamaño del descodificador de
operaciones. Diseñe algunas (si gusta, todas) las palabras de
control para el nuevo conjunto de operaciones. No olvide que
los tamaños de algunos componentes deben ser mayores.

4. En la situación del ejercicio anterior, invente operaciones para


transferir información entre los dos acumuladores, en ambos
sentidos. Por supuesto, no olvide las señales de control.

5. En el mismo sentido de esta parte de los ejercicios, diseñe el


acoplamiento de dos registros a la salida de la ALU, pero sin
ser acumuladores.

6. Para completar el ejercicio anterior, diseñe la lógica de


control para permitir que el acumulador y los dos registros de
datos intercambien información, por supuesto mediante
varios tipos de operaciones de copia entre registros.

7. Elabore una tabla que contenga: código de operación,


nombre de la operación y palabra de control para el conjunto
de operaciones de la USC.

8. Repita el ejercicio anterior para el sistema USC + memoria de


datos.

9. Repita el ejercicio 10 del capítulo 2 para el sistema USC.

10. Repita el ejercicio anterior para el sistema USC + memoria de


datos.

11. Analice el dimensionamiento de la memoria de datos de la


USC. Considere tamaño de palabra y capacidad.

Ing. Marcelo Ramírez M. Página 78


FUNDAMENTOS DE ARQUITECTURA DE MICROPROCESADORES Unidad Secuencial de Cálculo

3.9. PRÁCTICAS DE LABORATORIO.


Un paso interesante en el laboratorio es la incorporación de un registro
al diseño de la ALU y obtener una sencilla USC. Se sugiere despachar
una sesión para experimentar con la adición del acumulador y el
registro de banderas. En una segunda sesión se incorpora la memoria
de datos.

Las guías modelo están disponibles en el libro anexo de prácticas de


laboratorio.

Ing. Marcelo Ramírez M. Página 79


FUNDAMENTOS DE ARQUITECTURA DE MICROPROCESADORES Unidad Secuencial de Cálculo

Ing. Marcelo Ramírez M. Página 80


FUNDAMENTOS DE ARQUITECTURA DE MICROPROCESADORES Unidad Secuencial de Cálculo

Ing. Marcelo Ramírez M. Página 81


FUNDAMENTOS DE ARQUITECTURA DE MICROPROCESADORES Unidad Secuencial de Cálculo

Ing. Marcelo Ramírez M. Página 82

S-ar putea să vă placă și