Вы находитесь на странице: 1из 10

SUMADOR DE PUNTO FLOTANTE EN VHDL: DISEO Y ANLISIS DE

ALTERNATIVAS DE OPTIMIZACIN
Ignacio E. Sardi, Bruno L. Uberti, Fernando G. Tinetti, Antonio A. Quijano

Centro de Investigacin y Desarrollo en Microelectrnica (CIDEM)


Instituto Tecnolgico de Buenos Aires (ITBA)
Buenos Aires
Argentina

ftinetti@itba.edu.ar
RESUMEN sistema para luego detallar cada uno de los bloques que
componen el diseo final. Desde el inicio mismo, el
En este trabajo se presenta el diseo de un sumador de nfasis est puesto en la reduccin de tiempo de
nmeros representados en punto flotante siguiendo la operacin para el circuito (sumador). El trabajo que aqu
norma IEEE. Adems de definir una solucin de se presenta tiende al diseo de un ASIC, pero no llega
hardware aplicando los principios de paralelizacin de hasta la obtencin del prototipo fsico. Para una primera
operaciones establecidos por los pipelines, se analizan aproximacin de la sntesis y optimizacin mediante las
las alternativas de optimizacin de tiempo de operacin herramientas de CAD, se ha adoptado provisoriamente
utilizando herramientas de sntesis de hardware a partir una tecnologa CMOS (SXLIB [13]) y la librera y kit de
del lenguaje VHDL. Las alternativas se evalan en diseo incluidos en Alliance. Pero ser parte de una
funcin de la optimizacin de tiempo de operacin y de etapa futura elegir una tecnologa definitiva.
las variaciones de rea de silicio estimadas por las Ms que proveer un nuevo sumador de punto
herramientas de sntesis. Finalmente, se presenta una flotante se muestra un diseo que es fcil y rpido
posible evolucin hacia el cambio del diseo a nivel de gracias a VHDL y mediante las herramientas de sntesis
VHDL del circuito y su impacto en la optimizacin de tambin es fcil y rpida la optimizacin. El sumador se
tiempo. toma ms como ejemplo que como aplicacin final y la
idea no es proveer el mejor o ms rpido sino algunas
1. INTRODUCCION alternativas de optimizacin de tiempo. En el presente
artculo no sera tampoco posible agregar ms detalles
La utilizacin del lenguaje VHDL [1] es aceptada desde del uso de Alliance debido a las limitaciones de
hace mucho tiempo para la utilizacin en el diseo, extensin establecidas. En principio, tanto Alliance
simulacin e implementacin de hardware [2]. Sin como otros entornos de CAD tales como Cadence se
embargo, sigue siendo un problema a resolver la componen de mltiples herramientas usualmente
optimizacin de distintos aspectos de los circuitos independientes, cada una de ellas enfocada a realizar una
diseados a la hora de su implementacin real. En este tarea especfica dentro del ciclo/proceso de diseo.
contexto las herramientas de CAD (Computer Aided En la siguiente seccin, se describe la
Design) como Alliance [3] [4] [5] [6] [7] y Cadence [8] arquitectura completa del circuito. En la seccin 3 se
son de gran utilidad no solamente para el ciclo completo detallan algunos aspectos relevantes de los bloques que
de desarrollo y verificacin de hardware sino tambin componen el sumador en punto flotante. La seccin 4
para el anlisis de alternativas de optimizacin. muestra la sntesis preliminar o sin optimizar del diseo
En este artculo se presenta un ejemplo en funcin de tiempo de operacin y rea de silicio
completo de la utilizacin combinada de VHDL y necesaria. Luego, en la seccin 5 se dan los detalles
herramientas de CAD para el diseo, verificacin y relevantes de la optimizacin utilizando las herramientas
optimizacin de un circuito en particular. Ms de CAD. La seccin 6 comenta las alternativas de
especficamente, se propone resolver en hardware la optimizacin de tiempo a nivel de rediseo en VHDL.
suma de nmeros reales cuya representacin sigue los Finalmente, la seccin 7 detalla las conclusiones y las
lineamientos de la norma IEEE para nmeros de alternativas de trabajo futuro.
precisin simple [9] [10] [11] [12]. El proceso de diseo
comenzar por la descripcin de comportamiento del

1
2. DESCRIPCION DE LA ARQUITECTURA normalizarla y luego se le suma el eventual acarreo
producido en el punto 7.
Dado que el nfasis est puesto en la velocidad de 11. Redondear el nmero segn lo indicado en la norma
operacin del circuito, se propuso realizar el mismo en IEEE 754.
una serie de etapas (pipelined architecture) [14] aunque
en principio implica la utilizacin de mayor rea de Cada uno de estos pasos puede realizarse de distintas
silicio para su fabricacin. Esto a su vez incrementa el maneras y la Figura 1 muestra esquemticamente los
costo total del circuito a expensas de su mejor bloques funcionales que resuelven cada una de estas
rendimiento. tareas. Adems, tambin se muestra cmo se agrupan los
Los nmeros de entrada del sumador se bloques funcionales en un pipeline de cuatro etapas.
consideran representados siguiendo los lineamientos de
la norma IEEE 754 de precisin simple. Aunque el A = (-1) X 1.a 2 P ; B = (-1) Y 1.b 2 Q
X Y P Q a' b'
sumador opera con el cero, no se consideran, sin
embargo, las definiciones de NaN (Not a Number), y el
resto de los nmeros con representacin no normalizada.
Resumiendo, se manejan todos los nmeros ETAPA 1
PASOS 1 a 6
normalizados ms el cero de la definicin de la norma X
COM PARADOR DETECTOR
IEEE. DE CERO
Y
Si se consideran las entradas al sumador A y B SELECTOR DE
como A = (-1)X 1.a 2P y B = (-1)Y 1.b 2Q , donde X e Y SIGNO Z FRACCION

son los signos (1 bit), a y b son las fracciones (23 bits), y R all_zero Otra Fraccin Fraccin
mn(A, B)
P y Q los exponentes (8 bits), se puede calcular la suma AddC
C = A + B = c 2R en los pasos: T DESPLAZADOR
A DERECHA
1. Agregar el bit implcito de la fraccin junto con los
bits de guarda a las mantisas a y b, obteniendo las SignOut

fracciones con las que se operar a y b.


2. Calcular R = mx(P, Q), determinar la diferencia
T =P - Q, y determinar el mayor de los nmeros ETAPA 2
PASO 7
de entrada: Z (=0 si A < B; =1 en caso contrario). SUMADOR
3. Determinar el signo del resultado y la operacin
SignOut Carry
binaria a realizar. El signo del resultado est R all_zero
c
determinado por Z (el signo de la suma de los dos
nmeros ser el signo del nmero mayor). Para
ETAPA 3
determinar la operacin binaria (suma o resta) flip-flop
CONTADOR
PASOS 8 y 9

bastar con comparar los signos de los respectivos DE CEROS c


nmeros: X e Y. Clear
4. Detectar los casos especiales en que debe manejarse DESPLAZADOR
SignOut R A IZQUIERDA
el cero: ambos nmeros de entrada son cero o son
iguales y la operacin a realizar es la resta. c"

5. Seleccionar la fraccin (a o b) que corresponde al ETAPA 4


PASOS 10 y 11
nmero menor. REDONDEO
RESTADOR
6. Desplazar a la derecha la fraccin asociada con el DE FRACCION

nmero menor T lugares (bits) para igualar los SignOut Exponente Fraccin

exponentes antes de sumar las fracciones.


7. Sumar las fracciones para producir la fraccin de la
suma no normalizada c. La operacin puede dar un
bit de acarreo que se traduce en un incremento del
exponente del resultado, resultado conocido como
desborde de mantisa. Figura 1: Sumador en Cuatro Etapas
8. Determinar la cantidad u de ceros iniciales en la
fraccin c. 3. DESCRIPCION DE LOS BLOQUES
9. Desplazar c a la izquierda u lugares para producir
la fraccin normalizada c. En esta seccin se describe el pipeline completo, con
10. Modificar el exponente resultado restando los u todos los bloques funcionales que aparecen en la Figura
lugares que se desplaz la fraccin para 1. Esta descripcin se lleva a cabo con las partes de
cdigo ms importante de VDHL y en algunos casos se

2
agregan esquemas grficos para aclarar la descripcin en (SignOut). En la Figura 3 se puede observar la
VHDL. De hecho, se puede notar que hacer la simplicidad de la descripcin de este bloque en VHDL.
descripcin en VHDL provee una manera casi inmediata La salida SignOut se propaga a travs de todo el
de implementacin, dado que se pueden utilizar sobre pipeline hasta llegar a la ltima etapa, estableciendo de
este cdigo las herramientas de sntesis que proveen los esta manera el signo de la operacin. La salida AddC se
entornos de CAD para circuitos integrados. utiliza en la siguiente etapa para saber si se suman o
restan las fracciones.
3.1. Etapa 1
3.1.3. Bloque Detector de Cero
Quizs esta es la etapa que contiene mayor cantidad de Este bloque se encarga de detectar si el resultado puede
bloques funcionales y por lo tanto su descripcin ser la
ms extensa de las cuatro propuestas. architecture ARCH_sign_comp of sign_comp is

begin
3.1.1. Bloque de Comparacin
SignOut <= x when sel = '1' else y;
Este bloque es el encargado de ubicar en el rango AddC <= '1' when x = y else '0';
adecuado los dos operandos, para poder realizar la suma
end ARCH_sign_comp;
dentro del mismo rango, es decir bajo el mismo
exponente. Recibe como entradas a los exponentes y Figura 3: Bloque Signo.
fracciones de los correspondientes nmeros a ser
sumados y tiene como salidas a R=mx(P,Q), T=P-Q dar cero. Para ello verifica que las entradas sean ambas
y Z. La Figura 2 muestra el comportamiento del bloque cero o iguales y de signo contrario. Las entradas de este
en VHDL. bloque son los dos operandos: A y B. En la Figura 4 se
-- ## Celda Comparador ##
muestra el diagrama esquemtico de este bloque.

architecture ARCH_comparador of comparador is A = ( - 1) X 1.a 2 P; B = ( - 1) Y 1.b 2 Q


a' P b' Q X Y a b P Q
signal dif_exp_aux: std_logic_vector(7 downto 0);

begin
= 0? = 0? X Y? a=b? P=Q?
Z <= '0' when p < q else out = 1 out = 1 out = 1 out = 1 ou t = 1
'1' when p > q else
'0' when a < b else
si a & P si b & Q si X Y si a=b si P=Q
'1'; =0 =0

dif_exp_aux <= (p q) when z = '1' else (q - p);


R <= p when z = '1' else q;
T <= dif_exp_aux when (dif_exp_aux<32) else X"FF";
AND AND
end ARCH_comparador;

=1 si A=B=0 =1 si A=( - B)
Figura 2: Bloque Comparador.

La seal R contiene el exponente en el cual se OR


realizar la operacin, la seal T indica al bloque de
desplazamiento cunto tiene que mover al dato para
all_zero = 0 si A=( - B) o A = B = 0
poner en el rango adecuado una de las dos fracciones. La
seal Z se utiliza en el selector para indicar cul de los
exponentes de los operandos se debe seleccionar, y en Figura 4: Esquema del Detector de Cero.
caso de igualdad de exponentes selecciona la fraccin
mayor. Esta ltima seal se utiliza adems en dos En la Figura 5 se muestra la implementacin en
bloques externos, el bloque que se encarga de computar VHDL, donde se puede notar tambin la versatilidad del
el signo y el bloque selector de fracciones. lenguaje en cuanto a la creacin y utilizacin de seales
intermedias o auxiliares. Estas seales intermedias son
3.1.2. Bloque de Signo utilizadas en este caso para la generacin del valor
Las entradas que posee este bloque son los signos de los correcto para la seal de salida de este bloque, que es
operandos X e Y, y la seal Z que indica cul de los dos nica: all_zero.
nmeros (A o B) es el mayor (Z = 1 si A > B). Tiene
como salidas el tipo de operacin a realizar con las 3.1.4. Bloque Selector de Fraccin
fracciones (AddC) y el signo de la operacin de suma Este bloque funciona como si fuesen dos multiplexores

3
que se encargan de dirigir el flujo de datos de cada una pipeline. Dentro de los circuitos combinacionales se
de las fracciones. Se utiliza la informacin que est tienen dos tipos distintos de desplazadores, uno lineal
[15] y otro logartmico [16]. El primero es ms lento que
Architecture ARCH_zero_verif of zero_verification is el logartmico debido a la cantidad de compuertas en
Signal a_info : std_logic_vector(30 downto 0); paralelo que tiene conectadas pero su diseo y ruteo en
signal b_info : std_logic_vector(30 downto 0); layout es ms sencillo. Un posible esquema de
signal zero_a : std_logic;
signal zero_b : std_logic; implementacin del desplazador logartmico se muestra
signal eq_inputs : std_logic; en la Figura 7, donde cada bloque representa un
signal all_inputs_zero : std_logic;
multiplexor que es manejado por un bit de seleccin.
begin
-- creacin de un solo vector para facilitar la
a a a a ...
comp. 0
a_info (22 downto 0) <= a;
a_info (30 downto 23) <= p; Shift
b_info (22 downto 0) <= b;
b_info (30 downto 23) <= q; 1 0 1 0 1 0 1 0
zero_a <= '1' when a_info=("000"&X"0000000") else
'0';
zero_b <= '1' when b_info=("000"&X"0000000") else
'0';
eq_inputs <= '1' when ((x/=y)and(a=b)and(q=p))else
0
'0';
all_inputs_zero <= '1' when (zero_a='1' and Shift
zero_b='1') else '0'; 1 0 1 0 1 0 1 0
all_zero <= '0' when (all_inputs_zero or eq_inputs)
else '1';

end ARCH_zero_verif;

0
Figura 5: Bloque Detector de Cero.
Shift
contenida en la seal sel que, de hecho, es la seal Z 1 0 1 0 1 0 1 0
producida en el bloque Comparador. Por la salida
denominada mux_out1 saldr la fraccin que
corresponda al menor de los dos nmeros. Por la otra
salida, mux_out2 saldr la fraccin que corresponda al
nmero mayor. En la Figura 6 se muestra el cdigo Figura 7: Esquema del Desplazador.
VHDL que describe este bloque, donde adems se puede
notar una vez ms el poder de descripcin de este La Figura 8 muestra de manera reducida (no
lenguaje. estn las lneas de cdigo que son similares a las

-- ## Celda Multiplexor ## architecture ARCH_sft_der of sft_der is

architecture ARCH_multiplexor of multiplexor is signal stg1_a : std_logic_vector (30 downto 0);


signal stg1_b : std_logic_vector (30 downto 0);
begin ...
signal stg5_a : std_logic_vector (30 downto 0);
mux_out1 <= a when sel = '0' else b; signal stg5_b : std_logic_vector (30 downto 0);
mux_out2 <= b when sel = '0' else a;
begin
end ARCH_multiplexor;
-- etapa 1 del desplazador logartmico
stg1_a <= fraction;
Figura 6: Bloque Selector de Fraccin. stg1_b(30) <= '0';
stg1_b(29 downto 0) <= fraction(30 downto 1);
stg2_a <= stg1_a when shft(0) = '0' else stg1_b;
3.1.5. Bloque Desplazador a Derecha
Este bloque debe ser rpido para no retrasar al pipeline, -- etapa2 2 a 4 del desplazador logartmico
-- son similares ...
es por ello que se opt por realizarlo en forma
combinacional y no con registros. Al utilizar registros se -- etapa 5 del desplazador logartmico
stg5_b(30 downto 15) <= X"0000";
necesitaran, en el peor de los casos, 31 pulsos de reloj stg5_b(14 downto 0) <= stg5_a(30 downto 16);
para poder desplazar a la fraccin e igualar los fr_out <= stg5_a when shft(4) = '0' else stg5_b;
exponentes (debido a los bits de guarda junto con los end ARCH_sft_der;
restantes bits de la fraccin). Se tendra, por
consiguiente, una demora sustancial en esta etapa del Figura 8: Bloque Desplazador a Derecha.

4
incluidas) la descripcin en VHDL del bloque de El grfico de la Figura 10 muestra de manera
desplazamiento. esquemtica la operacin de este bloque e indica cmo
Nuevamente se dio prioridad al aumento en la es tenido en cuenta el caso de desborde de mantisa,
velocidad de operacin (reduccin de tiempo), por lo operando con una seal interna de carry para indicar el
que el desplazador implementado fue el logartmico. desborde y poniendo el resultado de la operacin en el
Este circuito combinacional consta de una serie de rango correcto. En el caso de ocurrir desborde, una seal
etapas (5 en total) para poder desplazar a la entrada en es enviada al restador de exponentes, ubicada en la
32 veces (25 ya que es logartmico en base 2). La ltima etapa del pipeline, para indicarle que tiene que
primera etapa desplaza en 1, las segunda en 2, la tercera ajustar el exponente por el desborde producido en la
en 4, la cuarta en 8 y la quinta en 16. Tomando operacin parcial.
combinaciones de stas se puede desplazar al dato de 0 a
31. AddC Bit extra F_1 Bit extra F_2
de carry de carry
0 0

3.2. Etapa 2: Bloque de Suma o Resta de Fracciones


Frac_1 Frac_2
En esta etapa se resuelve efectivamente la operacin
binaria a realizar. De hecho, adems de la operacin
binaria (que puede ser de suma o resta) se debe
calcular/generar la seal de carry o borrow de la
SUMA RESTA
operacin. Este bloque es de vital importancia ya que es
uno de los que ms puede demorar al pipeline dado que
la propagacin del carry es notoria para la suma o resta Frac_1 + Frac_2 Frac_1 - Frac_2
de dos nmeros de 31 bits. Por este motivo se eligi un
sumador (o restador) con carry look-ahead para acelerar
el clculo del carry. Como contrapartida, lo que se SELECTOR
pierde es rea de silicio ya que este tipo de sumador
ocupa ms espacio. En el cdigo de VHDL que se Frac_1+Frac_2 si AddC=1 Frac_1-Frac_2 si AddC=0
observa en la Figura 9 no se puede determinar la manera
en que est implementado.
A1
architecture ARCH_frac_adder of frac_adder is A2
signal adder1 : std_logic_vector (31 downto 0);
signal adder2 : std_logic_vector (31 downto 0); SELECTOR
signal res_add : std_logic_vector (31 downto 0);
carry
begin c' = A2 si carry = 0
c = A1 si carry = 1
adder1(31) <= '0';
adder1(30 downto 0) <= a;
adder2(31) <= '0'; Figura 10: Esquema del Sumador.
adder2(30 downto 0) <= b;
res_add <= (adder1 + adder2) when AddC = '1' else
(adder1 - adder2); 3.3. Etapa 3
carry <= res_add(31);
c <= res_add(30 downto 0) when carry = '0' else
res_add(31 downto 1); Dentro de esta etapa, se tienen dos alternativas en cuanto
al resultado de la operacin: se debe producir un cero a
end ARCH_frac_adder;
la salida o se debe trabajar sobre el resultado binario de
la operacin para producir el formato de punto flotante
Figura 9: Bloque Sumador. tal como lo establece la norma. Producir un cero es
sencillo, pero para dar formato a la salida distinta de
El entorno de diseo Alliance provee la cero se deben realizar varias operaciones que se
facilidad de especificar esto como una opcin de una de describen en los bloques a continuacin.
las herramientas de compilacin/sntesis de cdigo. En el
caso de trabajar con otro entorno de diseo, se podra 3.3.1. Bloque Contador de Ceros
especificar directamente en VHDL el circuito Se basa en un circuito combinacional que determina la
combinacional que corresponde. Este bloque opera con cantidad u de ceros que hay al principio de la fraccin.
una seal externa que se calcula en la unidad que Esta salida (u) es utilizada luego para desplazar la
computa el signo de la operacin, AddC, que le indica si fraccin a izquierda. Su implementacin es similar a la
debe realizar una operacin de suma o resta.

5
de un priority encoder [17], o sea que este bloque recibe velocidad produce un gasto mayor en rea de silicio.
como entrada un conjunto de 31 bits dentro de los cuales
se encuentra la fraccin junto con los bits de guarda y se architecture ARCH_exp_sub of exp_sub is

fija en donde aparece el primer 1 lgico desde el bit ms signal carry_vector : std_logic_vector
significativo hasta el menos significativo codificando (7 downto 0) := X"00";
dicha posicin en forma binaria y dando este valor como begin
resultado del bloque. La Figura 11 muestra de manera
carry_vector(0) <= carry;
reducida (para no repetir lneas de cdigo similares) la exponente <= r - u + carry_vector;
descripcin en VHDL del bloque que cuenta los ceros al
principio de la fraccin de entrada. end ARCH_exp_sub;

3.3.2. Bloque Desplazador a Izquierda Figura 12: Bloque de Reclculo de Exponente.


Este bloque fue implementado igual que el desplazador a
derecha (en cuanto a la cantidad logartmica de pasos de 3.4.2. Bloque de Redondeo de Fraccin
desplazamiento). La nica diferencia reside en que este Este bloque lleva a cabo la operacin de redondeo segn
desplazamiento del dato de entrada a izquierda agrega, indica la norma IEEE 754 [18]. Bsicamente trabaja
adems, ceros a la derecha. sobre los los bits adicionales llamados bits de guarda.
Para realizar el redondeo se debe tomar la decisin de
architecture Arch_ZeroCounter of ZeroCounter is sumar un bit al bit menos significativo de la mantisa del
resultado en caso que corresponda. La Figura 13 muestra
signal zerovector : bit_vector(30 downto 0) :=
"000" & X"0000000"; el cdigo VHDL que describe este bloque.
begin
-- round_block
u <= X"1F" when (Mantisa(30 downto 0) =
zerovector(30 downto 0)) else architecture Arch_round_block of round_block is
X"1E" when (Mantisa(30 downto 1) =
zerovector(30 downto 1)) else begin

X"02" when (Mantisa(30 downto 29) = fraccion <= (c + X"00000080") when
zerovector(30 downto 29)) else (c(6 downto 0) > "1000000")
X"01" when Mantisa(30) = zerovector(30) else else
X"00"; c when (c(6 downto 0) < "1000000")
end Arch_ZeroCounter; else
c when (fraction_N(7) = '0')
else
Figura 11: Bloque Contador de Ceros. c + X"00000080";
end Arch_round_block;
3.4. Etapa 4
Figura 13: Bloque de Redondeo de Fraccin.
En esta etapa se realizan los ltimos ajustes para
producir la salida correcta de la operacin realizada en el Tambin en este bloque se puede apreciar la
formato correcto. Dado que ya se han producido los potencia de expresin del lenguaje VHDL, en particular
datos necesarios en los pasos anteriores, se opera por con la posibilidad de dar distintas alternativas para la
separado sobre el exponente y sobre la mantisa del asignacin de los valores posibles de una seal.
resultado.
4. SNTESIS DEL CIRCUITO
3.4.1. Bloque de Reclculo de Exponente
Este bloque realiza el ajuste del exponente una Una vez finalizada la descripcin del sumador, se
vez que la fraccin ya est normalizada. Recibe las verifica su correcto funcionamiento va simulacin
seales R, U y carry, y entrega como salida el exponente lgica; luego, se sintetiza cada uno de los bloques que lo
normalizado del resultado. La seal R proviene del componen para su posterior optimizacin. Aqu
comparador de la etapa 1, y la seal u del bloque que se normalmente surgen dos posturas bien definidas que
encarga de contar los ceros al principio del resultado de definen la relacin costo beneficio: el consumo de
la suma, las dos seales se restan para dar el exponente rea de silicio y tiempo de propagacin (ejecucin) de
correcto. Adems, si ocurri desborde de mantisa, la cada bloque.
seal carry indica que se debe ajustar nuevamente el Para la etapa de sntesis se utilizan las
exponente. La Figura 12 muestra el cdigo VHDL herramientas de CAD, en este caso las provistas por
correspondiente. Este bloque puede ser implementado Alliance. Para la optimizacin, este entorno utiliza un
con carry look-ahead si se quiere ganar en velocidad, algoritmo que construye una red lgica equivalente,
pero esto va a depender de cmo sean las velocidades de minimizando las expresiones (ecuaciones) en cada nodo
las otras etapas del pipeline, ya que usualmente ms de la red. El resultado arrojado da una menor

6
profundidad de la red lgica. Luego para la funcin bloques que pertenecen al camino crtico de propagacin
lgica de cada nodo de la red, trata de encontrar en la de las seales. Sin embargo, la asociacin de los bloques
biblioteca que contiene la tecnologa utilizada, un de hardware a cada etapa de un pipeline no
conjunto de celdas que produce la misma ecuacin necesariamente puede ser hecha por las herramientas de
lgica de dicho nodo. Este proceso habitualmente es sntesis, dado que en este caso, debera ser posible
llamado standard cell mapping. Por ltimo, realiza el especificar que se trata de un pipeline (algo que no es
clculo del camino crtico, el reconexionado de las posible, por ejemplo, en VHDL de manera explcita). De
compuertas para disminuir el delay y la capacidad, alguna manera, la informacin de ms alto nivel que
agregando buffers entre ellas si fuere necesario. Tambin proporcionan las herramientas de sntesis es la
realiza el clculo del rea. Dentro de los diferentes identificacin de los bloques de hardware que
etapas para minimizar el tiempo de propagacin o el rea pertenecen al camino crtico de propagacin de las
de silicio, el algoritmo permite ajustar en forma seales. Esta informacin de camino crtico se utiliza en
porcentual cul de estos dos parmetros se requiere la Tabla 1 para calcular el tiempo total de operacin de
optimizar en mayor medida. cada etapa. Especficamente, el tiempo de cada etapa
En la Tabla 1 se muestra un resumen de los estar dado por la suma de los tiempos de propagacin
tiempos de propagacin de cada bloque con el rea de de los bloques del camino crtico dentro de la etapa. Esto
silicio ocupada. se diferencia del rea necesaria para implementar cada
etapa, que ser la suma de las reas de todos los bloques
Etapa Bloque Tipo Tiempo Area que pertenecen a la etapa.
(ps) (2) Una vez que se tiene la informacin de sntesis
Etapa 1 Signo - 506 4500 agrupada por etapas y con los tiempos de cada etapa
Comparador* CLA1 5982 576500 dados por los bloques del camino crtico, se puede
2
Comparador RCA 16947 303500 calcular el tiempo de operacin del pipeline. En el caso
Detector de Cero - 1923 136500
Selector de Frac.* - 643 157750
de la informacin de la Tabla 1, el tiempo est
Desplazador a Der.* - 2366 306250 determinado por la Etapa 2, que es la de mayor tiempo
Registros* - 882 565750 de propagacin: 11681 ps.
Total E1 CLA 9873 1747250 En vez de sintetizar y optimizar todo el circuito,
Etapa 2 Sumador* CLA 10799 837000 que es modo default de operacin, tambin es posible
Sumador RCA 18228 471000 realizar sntesis y optimizacin local, manteniendo la
Registros* - 882 325500 estructura de la descripcin inicial (se mantienen la
Total E2 CLA 11681 1162500
mayora de las seales intermedias). Esta forma de
Etapa 3 Contador de Ceros* - 2404 155750
optimizacin local es ideal para circuitos grandes como
Desplazador a Izq.* - 2655 337750
Flip Flop Neg. - 882 7750 pueden ser los sumadores y comparadores en este caso.
Registros* - 882 379750 En la tabla anterior los resultados mostrados no tuvieron
Total E3 5941 881000 en cuenta esta opcin ya que el default del CAD es la
Etapa 4 Restador* CLA 4855 383250 optimizacin global en la que se remueven la mayora de
Restador RCA 5047 543000 las seales intermedias de manera que las salidas se
Redondeo de Frac. RCA 2698 217250 expresan en trminos de las entradas o de registros
Registros* - 882 310000
internos.
Total E4 CLA 5737 910500
ps: picosegundo (10-12 seg). * Camino Crtico
1
CLA: Carry LookAhead. 2
RCA: Ripple Carry Adder. 5. OPTIMIZACION DE SNTESIS

Tabla 1: Tiempo y Area sin Optimizaciones de Sntesis. En una implementacin del estilo pipeline es necesario,
en lo posible, que los tiempos de cada una de las etapas
La optimizacin realizada en este caso fue un sean similares. Analizando los datos de la Tabla 1, sera
50% en rea y un 50% en delay de todo el cirtuito. Esto necesario mejorar las Etapas 1 y 2 para acercarlas a los
significa que las herramientas de optimizacin intentan tiempos de las Etapas 3 y 4. Para esto se puede hacer uso
el mejor balance entre el rea ocupada y el tiempo de de las herramientas de optimizacin y sntesis que se
propagacin de las seales en todo el pipeline. Este es el mencionaron anteriormente, con la utilizacin de los
modo de operacin estndar (o default) a menos que se parmetros del algoritmo en forma local a estas etapas
indique explcitamente lo contrario. (1 y 2), variando el costo de optimizacin entre rea y
Se debe notar que las herramientas de sntesis delay (en forma porcentual).
de los entornos de CAD para circuitos integrados En el caso de la Etapa 1, se tienen varios
proporcionan toda la informacin que aparece en la bloques a optimizar. Para evitar una cantidad muy
Tabla 1 en cuanto a los bloques: el tiempo de grande de posibilidades de optimizacin y de tiempo de
propagacin de cada bloque, rea de silicio estimada y ejecucin de las herramientas, se decidi optimizar el

7
bloque dentro de esta etapa que tiene ms de la mitad del tiempos. En particular, optimizando solamente al bloque
tiempo de operacin total: el comparador. En el caso de sumador, la Etapa 1 pasara a ser la de mayor tiempo de
la Etapa 2 no hay posibilidades de eleccin, se debe todo el pipeline. Dado que se ha obtenido una mejora
mejorar el sumador. ms que significativa para la Etapa 2 se aplicarn las
Se analizar primero el sumador de la Etapa 2 opciones de optimizacin al bloque Comparador de la
por ser el bloque de mayor tiempo absoluto de todo el Etapa 1 para mejorar su tiempo de operacin.
pipeline. La Figura 14 muestra grficamente los La Figura 15 muestra grficamente los
resultados de varias alternativas de optimizacin para el resultados de varias alternativas de optimizacin para el
bloque Sumador. Estas alternativas son paramtricas bloque Comparador. A diferencia de lo que sucede en el
para las herramientas de Alliance utilizadas para la bloque Sumador, las opciones de optimizacin sobre el
sntesis. Sobre el eje x se muestra el tiempo de operacin bloque Comparador no son muy consistentes en cuanto a
de cada alternativa, comenzando por el tiempo inicial de la relacin tiempo-rea. Sin embargo, de notarse que las
la Tabla 1, es decir 10799 ps. Adems, para cada una de variaciones de rea son muy pequeas: en el rango de
las alternativas de optimizacin se da una estimacin de -0.2% a +0.3%. Esto significa que se puede optimizar el
la variacin (aumento) del rea de silicio ocupada en tiempo de propagacin casi con la misma rea de silicio
forma porcentual respecto del total sobre el eje y. En el (se debe recordar una vez ms el carcter heurstico de
caso del tiempo inicial no se tiene ninguna variacin, los algoritmos utilizados para la sntesis).
pero el mejor tiempo de operacin del circuito obtenido
por optimizacin, 5801 ps, implica un aumento Comparador
aproximado de 16% del total del rea del pipeline.
3.0

2.5
Sumador Aumento de Area Total (%)
20 2.0
18
1.5
16
Aumento de Area Total (%)

14 1.0
12
0.5
10
8 0.0
6
-0.5
4 5982 5948 5473 5410 5408 5106 4964
2 T iempo (ps)
0
10799 9625 9270 9040 6329 6064 5801 Figura 15: Optimizacin en Sntesis: Comparador.
T iempo (ps)
Otra de las caractersticas del bloque
Figura 14: Optimizacin en Sntesis: Sumador. Comparador que es esencialmente distinta del bloque
Sumador es que la optimizacin de tiempo es mucho
En general, se puede observar que a mayor menor: poco ms de 1000 ps, que representa una
optimizacin de tiempo se tiene mayor rea ocupada. La ganancia de aproximadamente 17%. Sin embargo, desde
excepcin est dada en los dos ltimos valores de el punto de vista del rea ocupada, esta ganancia del
optimizacin: aunque el tiempo de operacin se reduce 17% se obtiene casi al mismo costo que el pipeline
de 6064 ps a 5801 ps el rea ocupada tambin se reduce. original, dado que solamente se necesita poco ms de
Esto da una idea de las caractersticas heursticas de los 0.1% ms de rea total.
algoritmos de optimizacin y su combinacin con los En resumen, aplicando las optimizaciones a los
algoritmos (tambin heursticos) de ubicacin de celdas dos bloques, Sumador y Comparador, se estara en la
y ruteo de seales. Por otro lado, aunque el rea total del situacin que describe la Tabla 2 en cuanto a tiempos de
circuito aumenta, la ganancia en tiempo total de operacin de cada etapa. La mejora de los tiempos de
operacin del pipeline puede ser de casi 5000 ps propagacin de las etapas ms lentas lleva a mejorar
(10799-5801 = 4988 ps). Evidentemente en este bloque significativamente el tiempo de operacin del pipeline.
en particular la ganancia de tiempo es cercana al 50% Una vez aplicadas las optimizaciones que se han
(utilizando solamente 16% ms de rea), pero no se detallado y con los tiempos de las etapas que se
conoce an la ganancia exacta de todo el pipeline porque muestran en la Tabla 2, el tiempo de operacin de todo
se deben tener en cuenta todas las etapas y su relacin de el pipeline est determinado por la Etapa 1: 8855 ps. En

8
trminos de mejora porcentual, la ganancia ha sido 50% del tiempo de propagacin no puede ser
significativa: de 11681 ps a 8855 ps, es decir un poco optimizado ms de manera significativa.
ms del 24% de mejora. Y esto utilizando poco ms de Sin embargo, es de esperar que haya alguna forma de
16% de rea para todo el circuito. mejorar los tiempos de operacin del pipeline dado que
la Etapa 1 tiene un tiempo bastante mayor de operacin
Etapa Tiempo (ps) Area (2) que el resto de las etapas.
Etapa 1 8855 1161250 Una posible solucin, que es bastante inmediata
Etapa 2 6683 3512250 en el contexto de los pipelines: subdividir la etapa mayor
Etapa 3 5941 881000 para obtener dos etapas nuevas, ambas de menor tiempo.
Etapa 4 5737 910500 En este caso, la informacin de la Tabla 1 respecto de
los bloques que pertenecen al camino crtico puede ser
Tabla 2: Tiempo y rea Con Optimizaciones de Sntesis. de gran ayuda: el bloque de comparacin se incluye en la
nueva Etapa 1 y el resto de los bloques se consideran
Otro resultado de inters que est relacionado parte de la nueva Etapa 2. Las dems etapas solamente
con el rea de silicio utilizada es la cantidad de se renumeran.
transistores que posee el core. El CAD de diseo posee El rediseo del pipeline, aunque elegante, tiene
herramientas para extraer el mapa de transistores del costos asociados. Como mnimo en trminos de rea, se
circuito total y de cada bloque por separado. La cantidad deben agregar los registros intermedios entre las nuevas
utilizada fue alrededor de 24000 y en la Figura 16 se Etapas 1 y 2. Sin embargo, la ganancia en tiempo por el
muestra el ASIC del sumador de punto flotante. rediseo es importante: la nueva Etapa 1 tendra tiempo
de operacin de 4964 ps (Comparador con su
correspondiente optimizacin en sntesis) ms 882 ps de
los nuevos flip flops. En total: 5886 ps, valor muy
similar al de las ltimas dos etapas. La nueva Etapa 2 no
tendra un impacto significativo en los tiempos de
propagacin, ya que sumara: 643 ps (Selector de
Fraccin) ms 2366 ps (Desplazador a Derecha) ms
882 ps (Registros) lo cual implica, en total, 3891 ps.
Ahora el tiempo de operacin del pipeline estara
determinado por la nueva Etapa 3 (que contiene el
Sumador) y sera de 6683 ps (Tabla 2). Se debe notar
que la mayora del trabajo realizado en la optimizacin
de sntesis sigue siendo til: los tiempos que se
obtuvieron antes (los detallados en la seccin anterior,
en este caso) se reutilizan y no es necesario recalcular
nuevos. Es de esperar que esto se mantenga siempre y
cuando el rediseo mantenga la mayora de los bloques
funcionales como en este caso.
Otro de los costos asociados al rediseo
(subdividiendo una etapa en dos nuevas) que no es tan
Figura 16: ASIC del Sumador.
inmediato: ahora el tiempo de llenado y de vaciado del
pipeline no es el mismo, dado que se tiene una etapa
6. OPTIMIZACION POR REDISEO
ms. Por lo tanto sera mayor, por ejemplo, el costo de
que el pipeline entre en rgimen y se obtengan los
Aunque la mejora obtenida en cuanto a optimizacin
primeros resultados. Es importante que a nivel de
desde los resultados de sntesis de la Tabla 1 ha sido
rediseo en VHDL, el costo es mnimo por la potencia
significativa, an quedan posibilidades de optimizacin.
misma del lenguaje de descripcin.
Lo inmediato sera seguir aplicando alternativas de
optimizacin disponibles en las herramientas de sntesis
7. CONCLUSIONES Y TRABAJO FUTURO
como se ha mostrado en la seccin anterior. Sin
embargo, es de esperar que estas optimizaciones no
Se ha presentado un sumador de nmeros representados
aporten muchas mejoras significativas porque:
en punto flotante siguiendo la norma definida por IEEE.
La Etapa 1 es la que ahora (Tabla 2) determina el
La potencia de VHDL permite una rpida especificacin
tiempo de operacin del pipeline.
y simulacin del circuito, con lo cual se puede pensar
La Etapa 1 ya ha sido parcialmente optimizada. En ms rpidamente en la optimizacin del mismo. Las
particular, el bloque de la Etapa 1 que tiene ms del optimizaciones hechas a nivel de las herramientas de

9
sntesis pueden ser muy tiles. En el caso de este artculo [4] Kai-shing Lam, Frederic Ak, Alliance Tutorial, Part 2
se obtiene una mejora de ms de 24% de tiempo de Logic Synthesis, Pierre & Marie Curie University, France, pp.
operacin con poco ms de 16% ms de rea de silicio 14-18, 2004. Included in the Alliance distribution available at:
necesaria para la implementacin. http://www-asim.lip6.fr/pub/alliance/distribution/latest/
Aunque son tiles y necesarias, las [5] Kai-shing Lam, Frederic Ak, Alliance Tutorial, Part 3
herramientas de sntesis y optimizacin tienen un lmite. Place and Route, Pierre & Marie Curie University, France, pp.
En el caso presentado, si se necesita optimizar mucho 2-7, 2004. Included in the Alliance distribution available at:
ms del 24% de tiempo de operacin se debe recurrir http://www-asim.lip6.fr/pub/alliance/distribution/latest/
necesariamente al rediseo del circuito o de partes del
mismo. Nuevamente la potencia de VHDL simplifica en [6] Greiner A., F. Pcheux, ALLIANCE . A Complete Set of
gran medida esta tarea. Por otro lado, las herramientas CAD Tools for Teaching VLSI Design, Proceedings of the
incluidas en los CAD para circuitos integrados no Third Eurochip Workshop on VLSI Design Training, pp. 230-
necesariamente proveen los resultados en la forma 37, Grenoble, France, Sept. 1992.
necesaria para una correcta evaluacin. En el caso del [7] quipe Architecture des Systmes et Micro-lectronique,
sumador, el entorno de CAD no identifica ms que Alliance: A Complete CAD System for VLSI Design, LIP 6,
bloques de hardware y por lo tanto debe reorganizarse la Universit Pierre et Marie Courie, France.
salida de las herramientas para identificar claramente las http://www-asim.lip6.fr/pub/alliance/distribution/latest/
etapas del pipeline en cuanto a bloques que contienen y
cules bloques dentro de cada etapa son importantes en [8] Virginia Polytechnic Institute and State University,
cuanto a su pertenencia al camino crtico de propagacin Cadence tutorial for VLSI Design, January 25, 2003.
de las seales. http://www.ee.vt.edu/~ha/cadtools/cadence/cadence.html
En trminos de la continuidad de las tareas de
[9] ANSI/IEEE Std 754-1985, IEEE Standard for Binary
diseo, el paso inmediato sera la definicin de un Floating-Point Arithmetic, The Institute of Electrical and
sumador que cumple la norma IEEE de punto flotante de Electrionics Engineers, pp. 3-13, 1985.
simple y doble precisin. Esto implica, por ejemplo,
incluir el manejo de NaN y nmeros no normalizados. [10] Seidel P-M., Even G., On the Design of Fast IEEE
En cuanto a la implementacin se debera elegir una Floating Point Adders, 15th IEEE Symposium on Computer
tecnologa definitiva, y esto puede significar un posible Arithmetic, p. 184, June 11 - 13, 2001, Vail, Colorado.
cambio a otra herramienta de CAD como Cadence.
Desde el punto de vista de las alternativas de mejorar los [11] Koren I., Computer Arithmetic Algorithms, 2nd. Edition,
tiempos de diseo, es importante considerar la A. K. Peters, Natik, MA, 2002, ISBN 1-56881-160-8.
paralelizacin de la simulacin de cdigo VHDL. Esto [12] Jain S. A., Low Power Single-Precision IEEE Floating
permitira definir un conjunto de casos de pruebas mayor Point Unit, Master of Engineering, MIT, May 2003.
y por lo tanto aumentara tambin la confiabilidad del
diseo en VHDL. Otra de las tareas que ha demostrado [13] SXLIB Standard Cell Library Description.
que consume mucho tiempo es la de optimizacin va las http://www.vlsitechnology.org/html/sx_description.html
herramientas de sntesis. En particular, las heursticas
consumen mucho tiempo de ejecucin, principalmente [14] Kai Hwang, Advanced Computer Architecture:
sobre los bloques de hardware ms complejos. Sin Parallelism, Scalability, Programmability. McGraw-Hill
embargo, en este caso se estaran modificando las Science/Engineering/Math, Dec. 1992, ISBN: 0070316228
herramientas mismas del CAD. [15] Neil Weste, Kamran Eshraghian, Principles of CMOS
VLSI Design, Addison-Wesley Publishing Company, USA,
8. REFERENCIAS 1985.

[1] IEEE Standard VHDL Language Reference Manual, Std. [16] Jan M. Rabaey, Anantha Chandrakasan, and Borivoje
1076-1993, IEEE, NY, 1993. Nikolic, Digital Integrated Circuits - A Design Perspective,
Second Edition, Prentice Hall, 2003, ISBN 0-13-090996-3.
[2] J. Bhasker, A VHDL Primer, Prentice Hall PTR, Upper
Saddle River NJ 07458, 1995. [17] John F. Wakerly, Diseo Digital Principios y Practicas,
Prentice Hall Hispanoamericana, 53500 Naucalpan de Jurez
[3] Kai-shing Lam, Frederic Ak, Alliance Tutorial, Part 1 Mxico, 1992.
VHDL Modeling and Simulation, Pierre & Marie Curie
University, France, pp. 2-16, 2004. Alliance distribution: [18] William Stallings, Organizacin y Arquitectura de
http://www-asim.lip6.fr/pub/alliance/distribution/latest Computadores, Prentice Hall, Madrid, 1997.

10

Вам также может понравиться