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

Modelo RTL de unidade l ogica, aritm etica e de comparac ao

que opera sobre formato de ponto utuante


Lucas F. S. Cambuim
1
, Edna N. S. Barros
1
1
Centro de Inform atica Universidade Federal de Pernambuco (UFPE)
Caixa Postal 50740-560 Recife PE Brasil
{lfsc,ensb}@cin.ufpe.br
Abstract. Several systems use operations that involve oating-point numbers.
This numbers try to represent a real value even if they have missed some infor-
mation named precision error. Thus, in the processor mips r3000 is built-in a
oating-point unit named R3010 FPU that provides that a instruction set that
works with oating-point numbers. So, this paper describes a module that pro-
vides a part of the FPU instructions. This module performs arithmetic, com-
parison and conversion operations under IEEE-754 oating-point format. The
module is developed by System Verilog language and synthesized on FPGA plat-
form. Some steps are carried out to valid the developed code, among them, the
functional verication and logical synthesis. In the function verication, we use
OVM-tpi methodology, along with the tools offered by ModelSim software and
Cadence tools. We also use the Synopse tools and the Quartus to build-in the
Altera DE-2 70 FPGA platform. Thus, in this paper we show the behaviour of
all the instructions this module based on the requirements proposed by r3000
Mips processor that is the motivator this paper.
Resumo. Diversos sistemas utilizam operac oes que envolvem n umeros no for-
mato de ponto utuante. Esse formato tenta representar um valor real com
alguma perda de informac ao ou tamb em chamado de erro de precis ao. Assim
como parte do projeto do processador Mips r3000, tem-se a unidade de ponto
utuante chamado de FPU R3010 que fornece a esse processador um conjunto
de instruc oes que operam com n umeros em ponto utuante. Assim esse artigo
tem como objetivo principal o desenvolvimento em linguagem System-Verilog
sintetiz avel em FPGA de um m odulo que fornece um subconjunto de instruc oes
da FPU que s ao as operac oes aritm eticas, de comparac ao e convers ao em for-
mato de ponto utuante, seguindo o padr ao IEEE-754. Diversas etapas s ao se-
guidas para validar o c odigo desenvolvido, dentre elas, a etapa de vericac ao
funcional e sntese l ogica. Para a vericac ao funcional, usamos a metodologia
Ovm-tpi, juntamente com a ferramenta ModelSim e a ferramenta da Cadence.
Para sntese usamos as ferramentas da synopse e o Quartus para programar
na plataforma FPGA DE-2 70 da Altera. Assim nesse artigo descrevemos o
comportamento de todas as instruc oes desse m odulo, baseado nos requisitos
propostos pelo processador Mips r3000 que e motivador desse projeto.
1. Introduc ao
Os numeros em ponto utuante (F) s ao uma tentativa de representar os n umeros reais
(R) nos computadores e devido a nitude inerente aos dispositivos computacionais, h a
perda de informac ao - e, portanto, F e um subconjunto pr oprio de R. Assim, mesmo
que denamos uma precis ao o quanto possvel, os n umeros em ponto utuante n ao ser ao
uma representac ao exata de um numero real, de fato, e sim uma aproximac ao. Contudo,
em termos pr aticos e possvel trabalhar com n umeros nesse formato, dependendo dos
requisitos da aplicac ao quanto ao nvel de toler ancia de erro para os dados que est ao
sendo manipulados.
Sobre essa perspectiva, no projeto do processador Mips
r3000 [Cambuim and Barros 2012], tem-se um conjunto de instruc oes que operam
com n umeros em ponto utuante. Esse conjunto e fornecido por uma unidade de ponto
utuante chamada de FPU. A tabela 1 mostra as instruc oes que a FPU fornece para esse
processador. Nessa tabela tem-se o termo fmt que indica o formato de precis ao que ser a
usado para representac ao de um dado n umero em ponto utante e o cond que indica
qual tipo de comparac ao ser a realizada. Nesse artigo propomos a implementac ao de um
m odulo que fornece um subconjunto de instruc oes da FPU. As instruc oes, de acordo
com a tabela 1, s ao as instruc oes de tipo convers ao, comparac ao e aritm etica. No caso
das instruc oes aritm eticas, n ao foi implementada a instruc ao MOV, pois essa instruc ao
depende de requisitos que s ao externos a esse m odulo. Nesse artigo, mostraremos as
especicac oes para cada instruc ao, bem como os algoritmos propostos, a tecnologia
empregada, a arquitetura utilizada e os resultados obtidos.
Nesse projeto o padr ao adotado para representar e tratar n umeros de ponto utu-
ante bin ario e o IEEE-754 [Society 2008]. O padr ao IEEE 754 (denido pelo Instituto
de Engenheiros Eletricistas e Eletr onicos) foi adotado em 1985 e desde ent ao passou por
algumas modicac oes, e dene algumas regras de normalizac ao a serem seguidas nas
operac oes e representac oes de n umeros bin arios com ponto utuante. Antes disso, cada
fabricante de computadores e outros dispositivos, possua um formato de representac ao
diferente. Assim com esse padr ao podemos utilizar essa m odulo em qualquer projeto
que envolva ponto utuante, tanto na area acad emica, como na ind ustria, embora o
prop osito desse projeto seja complementar o processador em Mips r3000. Resumida-
mente, um n umero no formato de ponto utuante e representado conforme a f ormula 1
onde temos uma representac ao em notac ao cientca normalizada conforme denido em
[Society 2008]. Nessa express ao S, M e E indicam respectivamente os valores de sinal,
mantissa e expoente que ser ao armazenados em um sistema digital, seguindo a ordem
descrita na gura 1.
(1)
S
(1 + M) 2
EBias
(1)
Figura 1. Par ametros de um n umero em ponto utuante que s ao armazenados
em um sistema digital
Ent ao dependendo do tamanho em bits do vetor M e E, podemos classicar
n umeros em precis ao simples ou precis ao dupla. Um n umero em precis ao simples ne-
Tabela 1. Resumo das instruc oes de FPU para o processador R3000
OP Descric ao
Load/Store/Move Instructions
LWC1 Load word to FPU
SWC1 Store word from FPU
MTC1 Move word to FPU
MFC1 Move word from FPU
CTC1 Move control word to FPU
CFC1 Move control word from FPU
Conversion Instructions
CVT.S.fmt Floating-point Convert to Single FP
CVT.D.fmt Floating-point Convert to Double FP
CVT.W.fmt Floating-point Convert to Single Fixed Point
Arithmetic Instructions
ADD.fmt Floating-point Add
SUB.fmt Floating-point Subtract
MUL.fmt Floating-point Multiply
DIV.fmt Floating-point Divide
ABS.fmt Floating-point Absolute value
MOV.fmt Floating-point Move
NEG.fmt Floating-point Negate
Compare Instruction
C.cond.fmt Floating-point Compare
Branch on FP Condition
BC1T FP Branch if True
BC1F FP Branch if False
cessita de 32 bits de largura, separado em 1 bit para o sinal, 8 bits para armazenar o
expoente e 23 bits para a mantissa. J a um n umero em precis ao dupla necessita de 64 bits
de largura, separados em 1 bit para o sinal, 11 bits para expoente e 52 bits para a mantissa.
As guras 2 e 3 ilustram respectivamente um n umero em precis ao simples e precis ao du-
pla.

E importante notar que o valor real do expoente e o resultado da subtrac ao do E com
um bias. Se for precis ao simples o bias possue o valor 127 se for precis ao dupla, 1023.
Essa convenc ao, chamada de notac ao deslocada e para garantir que o valor do expoente
real mais negativo seja o valor 00..00
bin
que ser a aramazenado em E e o mais positivo
como sendo 11...11
bin
.
Para entender melhor o processo de convers ao apartir de um n umero racional
decimal para representac ao em ponto utuante bin ario, bem como os algoritmos para
realizac ao das operac oes aritm eticas como adic ao, subtrac ao e multiplicac ao podemos
encontrar em [Ferreira 2009].
Figura 2. Formato de ponto utuante para precis ao simples
Figura 3. Formato de ponto utuante para precis ao dupla
A unidade implementada nesse artigo opera com n umeros em precis ao simples e
precis ao dupla. Essa unidade tamb em opera com n umeros em formato de ponto xo como
mostra a gura 4. N umero em ponto xo e mantido em formato de complementar a dois,
e esse tipo e s ao raramente usado pela maioria das instruc oes. Somente as instruc oes de
convers ao usa esse formato de dado.
Figura 4. Formato de ponto xo bin ario
Este artigo e organizado da seguinte forma. Na sec ao 2 descrevemos os requisitos
funcionais e n ao funcionais das instruc oes. Na sec ao 3, tendo elucidado os requisitos,
descrevemos os algoritmos utilizados para a instruc ao de multiplicac ao e divis ao que torna
capazes de atender aos crit erios denido pela especicac ao quanto a quest ao de ciclos de
clock. Em seguida, na sec ao 4 descrevemos a arquitetura da unidade de ponto utuante.
Depois, na sec ao 5, metodologia e tecnologia, demonstramos como se deu o uxo de
desenvolvimento bem como as tecnologias que foram empregadas no desenvolvimento
dessa unidade. O resultado e apresentado na sec ao 6, mostrando os m odulos que j a foram
produzidos, os waveforms de cada operac ao e as devidas an alises sobre esses resultados.
Na sec ao 7, obtemos as conclus oes.
2. Requisitos Funcionais e n ao funcionais das instruc oes
Nesse t opico iremos abordar apenas os requisitos que s ao indispens aveis para o
desenvolvimento do m odulo desse projeto. Essas informac oes foram extradas de
[Gerry and Joe 1992]. Conforme especicado no padr ao da IEEE 754, o m odulo opera
com 4 representac oes de n umeros v alidos em ponto utuante:
n umeros normalizados
n umeros denormalizados
innito
zero
Na tabela 2 temos a quantidade de ciclos de clock de cada operac ao, de acordo com
o tipo de precis ao utilizado. Assim depois de passado a quantidade ciclos determinada
na tabela, o resultado da operac ao precisa obrigatoriamente estar pronto. O smbolo (c)
indica que a operac ao para o tipo de formato e ilegal.
Tabela 2. Ciclos de Operac ao das instruc oes
Operation S D W
ADD.fmt 2 2 (c)
SUB.fmt 2 2 (c)
MUL.fmt 4 5 (c)
DIV.fmt 12 19 (c)
ABS.fmt 1 1 (c)
NEG.fmt 1 1 (c)
CVT.S.fmt (c) 2 3
CVT.D.fmt 1 (c) 3
CVT.W.fmt 2 2 (c)
C.cond.fmt 2 2 (c)
As instruc oes aritm eticas, tamb em chamadas de computacionais, realizam
operac oes com valores em ponto utuante armazenados em registradores. Vale salien-
tar que o valor carregado anteriormente pelo registrador especicado e o que de fato ser a
utilizado nesse m odulo. Essa etapa de carregamento ca a cargo do processador. Existem
quatro categorias de instruc oes computacionais.
Instruc oes de tipo registrador com tr es operandos, que realiza operac oes como
adic ao, subtrac ao, multiplicac ao e divis ao em formato de ponto utuante.
Instruc oes de tipo registrador com dois operandos, que realiza operac oes como
valor absoluto e negac ao de ponto utuante.
Instruc oes de convers ao, que realiza convers oes entre varios formatos de dados.
Instruc oes de comparac ao, que realiza comparac oes dos conte udos de dois regis-
tradores e seta ou zera o sinal de condic ao baseado no resultado da comparac ao.
2.1. Arredondamento
Algumas instruc oes, como adic ao, subtrac ao, multiplicac ao, divis ao e convers ao neces-
sitam do mecanismo de arredondamento para tornar a representac ao de ponto utuante
mais pr oxima de um n umero real. Assim o IEEE 754 oferece v arios modos de arredon-
damento para permitir que o programador selecione a aproximac ao desejada conforme
mostra a tabela 3.
Tabela 3. Tipos de Arredondamento
Modo de Arredondamento Minemonico Descric ao
00 RN Arrendondar o resultado para o numero
represent avel mais pr oximo. Arredonde
para o valor com o bit menos signica-
tivo zero quando os dois n umeros repre-
sent aveis mais pr oximos est ao igualmente
pr oximos.
01 RZ Arredonde para zero: arredonde para o
valor mais pr oximo e que n ao seja maior
em magnitude que o resultado para pre-
cis ao innita. (Truncamento)
10 RP Arredonde para mais innito
11 RM Arredonde para menos innito
O arredondamento parece simples, mas arredondar com precis ao exige que o hard-
ware inclua bits extras no c alculo. Assim os bits necess arios para o processo de arredon-
damento s ao:
Guard bit - Utilizado como um bit de guarda permitindo que processos de
normalizac ao do resultado nal n ao interram no resultado da operac ao.
Round bit - Utilizado no processo de arredondamento do resultado nal.
Sticky bit - Este bit tem a func ao de indicar se o resduo da operac ao e igual a zero
ou n ao, permitindo uma maior precis ao no processo de arredondamento.
Para saber mais sobre como esses bits diminuem o erro da precis ao no processo
de arredondamento, consulte [Patterson and Hennessy 2005]
2.2. Descric ao das Instruc oes
N os mostramos uma breve descric ao das instruc oes, sobretudo como o sistema deve se
comportar de acordo com a representac ao dos operandos de entrada e o tipo de instruc ao.
Todos os requisitos s ao elucidados em [Gerry and Joe 1992].
2.2.1. Operac oes Relacionais de ponto utuante
As instruc oes de comparac ao interpretam os conte udos de dois registradores em um for-
mato especicado fmt e aritm eticamente comparam eles. Um resultado e determinado
baseado na comparac ao e condic oes cond especicado na instruc ao. A tabela 4 lista as
comparac oes que podem ser realizadas. Essa tabela e um subconjunto do padr ao IEEE de
ponto utuante, descrevendo 16 predicados nomeados no padr ao. Quatro relac oes mutual-
mente exclusivas s ao possveis: menor que, igual, maior que e n ao ordenado. Excec ao de
operac ao inv alida ocorre quando comparac oes inclui o menor que (<) ou maior que (>)
mas n ao o nao ordenado (?) na sua forma ad hoc do predicado. N ao ordenado e um valor
que e n ao n umero, NaN.
Tabela 4. Operadores Relacionais de Ponto Flutuante
Predicados Relac oes Gera excec ao se
Mnem onico ad hoc Maior
que
Menor
que
Igual N ao ordenado e n ao orde-
nado?
F false F F F F N ao
UN ? F F F T N ao
EQ = F F T F N ao
UEQ ? = F F T T N ao
OLT NOT(? >=) F T F F N ao
ULT ? < F T F T N ao
OLE NOT(? >) F T T F N ao
ULE ? >= F T T T N ao
SF F F F F Sim
NGLE NOT(<=>) F F F T Sim
SEQ F F T F Sim
NGL NOT(<>) F F T T Sim
LT < F T F F Sim
NGE NOT(>=) F T F T Sim
LE <= F T T F Sim
NGT NOT(>) F T T T Sim
2.3. Adic ao e Subtrac ao
As instruc oes de soma e subtrac ao operam com n umeros em formato tanto de precis ao
simples como precis ao dupla. O resultado da operac ao e ent ao arredondado de acordo
com o modo de arredondamento. A tabela 5 mostra o procedimento inicial que o sis-
tema deve adotar para produzir o resultado de uma operac ao A + B ou A - B, onde A e
B s ao n umeros n umeros de ponto utuante pertecentes ` as classes dos normalizados, de-
normalizados, , zero ou NaN. Deve-se tomar o cuidado que as operac oes (+)
e ( + ) s ao matem aticamente impossvel e resultam em operac ao inv alida. Nessa
caso, o resultado ser a um NaN.
Tabela 5. Procedimento inicial da instruc ao de soma e subtrac ao
A+B 0 + NaN Denormal. Normal.
0 +0 RetornaB RetornaB RetornaB RetornaB RetornaB
RetornaA RetornaA NaN RetornB RetornaA RetornaA
+ RetornaA NaN RetornaA RetornB RetornaA RetornaA
NaN RetornaA RetornaA RetornaA RetornA RetornaA RetornaA
Denormal. RetornaA RetornaB RetornaB Retorn B Calcular Calcular
Normal. RetornaA RetornaB RetornaB Retorn B Calcular Calcular
2.4. Multiplicac ao
As instruc oes de multiplicac ao operam com n umeros em formato tanto de precis ao sim-
ples como precis ao dupla. O resultado da operac ao e ent ao arredondado de acordo com o
modo de arredondamento. A tabela 6 mostra o procedimento inicial que o sistema deve
adotar para produzir o resultado de uma operac ao A * B, onde A e B s ao n umeros n umeros
de ponto utuante pertecentes ` as classes dos normalizados, denormalizados, , zero ou
NaN.
Tabela 6. Procedimento inicial da instruc ao de Multiplicac ao
A+B 0 NaN Denormal. Normal.
0 +0 NaN RetornaB RetornaA RetornaA
NaN RetornaB RetornA RetornaA
NaN RetornaA RetornaA RetornaA RetornA RetornaA
Denormal. RetornaB RetornaB RetornaB Calcular Calcular
Normal. RetornaB RetornaB RetornaB Calcular Calcular
2.5. Divis ao
A instruc ao de divis ao opera com n umeros em formato tanto de precis ao simples como
precis ao dupla. O resultado da operac ao e ent ao arredondado de acordo com o modo
de arredondamento. A tabela 7 mostra o procedimento inicial que o sistema deve adotar
para produzir o resultado de uma operac ao A/B, onde A e B s ao n umeros n umeros de
ponto utuante pertecentes ` as classes dos normalizados, denormalizados, , zero ou
NaN. Caso aparece uma situac ao de divis ao por zero, uma ag precisa ser levantada para
indicar essa excess ao.
Tabela 7. Procedimento inicial da instruc ao de Multiplicac ao
A/B 0 NaN Denormal. Normal.
0 NaN RetornaA RetornaB RetornaA RetornaA
RetornA NaN RetornaB RetornA RetornaA
NaN RetornaA RetornaA RetornaA RetornA RetornaA
Denormal. 0 RetornaB Calcular Calcular
Normal. 0 RetornaB Calcular Calcular
2.6. Convers ao
Ao todo s ao 6 instruc oes de convers oes, de acordo o tipo de precis ao denido no campo
fmt:
cvt.s.d - converte de precis ao dupla para precis ao simples
cvt.s.w - converte de ponto xo para precis ao simples
cvt.d.s - converte de precis ao simples para precis ao dupla
cvt.d.w - converte de ponto xo para precis ao dupla
cvt.w.s - converte precis ao simples para ponto xo
cvt.w.d - converte de precis ao dupla para ponto xo
A convers ao de cvt.s.d pode gerar underow e overow, pois o valor pode n ao ser possvel
ser representado em precis ao simples tamb em seu resultado e arredondado de acordo
com modo de arredondamento solicitado. As instruc oes cvt.w.s e cvt.w.d podem gerar
overow pelo mesmo motivo e tambem pode gerar excess ao de operac ao inv alida se a
entrada for um n umero representando innito ou NaN. A instruc ao cvt.d.s n ao gera nem
overow nem underow uma vez que qualquer n umero que possa ser representado com
precis ao simples tambem poder a ser representado com precis ao dupla. De maneira geral
todas as seis instruc oes podem gerar excess ao de operac ao inv alida se o valor de entrada
for um NaN.
3. Algoritmos
Nesse t opico explicaremos a abordagem escolhida para as operac oes de multiplicac ao
e divis ao que tornou possvel atender aos crit erios de tempo denido nos requisitos da
instruc ao.
3.1. Multiplicac ao
De maneira geral, [Ferreira 2009] aborda como e feito o calculo do sinal, expoente e
mantissa. Pode-se notar que o gargalo dessa operac ao est a no c alculo da mantissa que
demanda v arios ciclos, em torno de 4 ` a 8 ciclos de clock dependendo do algoritmo es-
colhido. No c alculo da mantissa e que de fato utilizamos a operac ao de multiplicac ao,
pois no c alculo do expoente envolve apenas operac ao de soma e subtrac ao e no sinal, uma
simples porta xor e suciente. Assim, para calcular a multiplicac ao entre mantissas, utili-
zamos a vers ao ligeiramente melhorada do tradicional algoritmo de multiplicac ao baseado
no deslocamento e soma. A id eia e realizar n operac oes de somas, ands e deslocamen-
tos em um unico passo ou clock de forma paralela. A desvantagem dessa abordagem e
a diminuic ao da frequ encia de operac ao, pois necessitamos de um perodo maior para
que as n operac oes sejam realizadas em cada ciclo de clock. Para a multiplicac ao de
n umeros em precis ao simples, n os necessitamos de 12 operac oes paralelas para multipli-
car um tamanho de 24 bits de mantissa, contando com o bit oculto. Para a multiplicac ao
de n umeros envolvendo precis ao dupla, n os necessitamos de 19 operac oes paralelas para
multiplicar um tamanho de 53 bits de mantissa, tamb em contando com o bit oculto.
3.2. Divis ao
...
4. Arquitetura
O mapeamento de cada operac ao foi realizado utilizando o campo function fornecido pela
instruc ao de tipo registrador, baseado no padr ao do processador Mips r3000 como mostra
a gura 5. Esse campo function e um vetor de tamanho de 6 bits, ou seja, os ndices do
vetor v ao do 5 ao 0.
Figura 5. Instruc ao do tipo registrador ou tipo-R da FPU R3010
A tabela 8 tem-se o mapeamento das instruc oes de acordo com o campo function.
A coluna 5..3 s ao os tr es bits do campo function que vai do ndice 5 at e o ndice 3. Da
mesma forma, a coluna 2..0 s ao os tr es bits do campo function que vai do ndice 2 at e
o ndice 0. Ent ao a tabela mostra a correlac ao entre esse dois vetores para mapear uma
determinada instruc ao.
Tabela 8. Mapeamento das instruc oes
5..3 2..0
- 0 1 2 3 4 5 6 7
0 ADD SUB MULT DIV - ABS - NEG
1 - - - - - - - -
2 - - - - - - - -
3 - - - - - - - -
4 CVT.S CVT.D - - CVT.W - - -
5 - - - - - - - -
6 C.F C.UN C.EQ C.UEQ C.OLT C.ULT C.OLE C.ULE
7 C.SF C.NGLE C.SEQ C.NGL C.LT C.NGE C.LE C.NGT
Dessa forma, precisamos de 6 bits para realizar essa mapeamento, 64 bits para
cada operando de entrada, precisamos de 2 bits de informac ao do tipo de arredondamento
que ser a realizado por algumas operac oes artim eticas e 1 bit de start para comecar a
operac ao. A sada do m odulo tem-se 1 bit para uma para o end indicando que a operac ao
foi nalizada, 64 bits para o resultado da operac ao e 1 bit para cada ag de O, U, V, I,
Z que indicam respectivamente as excec oes de overow, underow, operac ao inv alida,
resultado inexato e divis ao por zero. Assim sob um ponto de vista externo, a gura 6
mostra as interfaces de sada e entrada do m odulo.
Figura 6. Interface do modulo principal
Para os m odulos que implementam as operac oes de add, sub, abs/neg , mult, div e
cvt.s, cvt.d as suas interfaces de entrada e sada e mostrado na gura 7. A id eia e que esses
m odulos compartilhem da mesma unidade de arredondamento que tem a interface mos-
trada na gura 8 interface. Assim, utiliza-se de uma unidade de chaveamento, chamado de
mux, para escolher qual m odulo enviar a seu resultado para a unidade de arredondamento.
Apesar de o m odulo Abs/neg e cvt.d.s possuir essa mesma interface, essas instruc ao n ao
utilizam a unidade de arredondamento. As interfaces dos m odulos que implementam
cvt.w s ao diferentes dos m odulos anteriores uma vez que n ao e possvel separar bit de
sinal, expoente e mantissa na sada para um n umero em formato de ponto xo.
Figura 7. Interface dos m odulos add/sub, abs/neg, mult, div e cvt.s, cvt.d
Figura 8. Interface do m odulo de arredondamento
5. Metodologia e Tecnologia
A metodologia de projeto utilizada foi baseada no ipPROCESS [Lira 2009]. Seguindo
esta metodologia inicialmente foi realizada a especicac ao de requisitos funcionais e n ao
funcionais da unidade de operac oes da FPU. Uma vez que os requisitos foram denidos,
foi iniciado o desenvolvimento da arquitetura do m odulo. A gura 9 mostra a rotina de
construc ao da arquitetura.
Figura 9. Fluxo geral do projeto
Na fase de denic ao da arquitetura, foram denidos os sub-m odulos e a interface
entre eles, a divis ao dos sub-m odulos foi feita com base nos requisitos funcionais de cada
instruc ao de ponto utuante. A partir da arquitetura foram iniciadas as especicac oes e
implementac oes de cada sub-m odulo. A implementac ao de cada sub-m odulo ou sistema
completo seguiu o uxo ilustrado na gura 10.
Figura 10. Fluxo de desenvolvimento de cada m odulo ou o sistema completo
Desenvolve-se inicialmente o m odulo com o uso da linguagem SystemVerilog.
Em seguida submete-se o m odulo a uma etapa de vericac ao funcional, utilizando a
metodologia OVM-tpi [Camara 2010] am de remover todos os erros funcionais desse
m odulo. O testbench para a etapa de vericac ao funcional tamb em foi desenvolvido em
SystemVerilog. Se a vericac ao funcional encontrar erros no m odulo, volta-se para etapa
de desenvolvimento para corrigir o erro, caso contr ario, segue para a etapa de sntese
l ogica. A etapa de sntese consiste na prototipac ao dos componentes e do processador em
FPGA atrav es da ferramenta EDA da Altera QUARTUS 2 3.0 como mostrado na gura 11
para validac ao do circuito eletr onico. Nessa etapa tamb em pode-se descobrir erros que
n ao podiam ser encontrados na etapa de vericac ao. Caso haja erro nessa etapa retorna-se
ao incio do uxo para corrigir o c odigo do m odulo. Sen ao encontrar erros, o m odulo ou
sistema estar a validado. Na pr oxima subsec ao iremos descrever com um pouco mais de
detalhes a metodologia de vericac ao escolhida.
Figura 11. Placa DE-2 da Altera
5.1. Vericac ao Funcional - OVM-tpi
A vericac ao funcional serve para que o projeto possa ser testado e assim conseguir de-
tectar os erros de funcionalidades. A metodologia empregada foi a OVM-tpi como j a
mencionado e que ser a abordado resumidamente a seguir.

E criado um ambiente de teste
onde encontramos o directed stimulus, stimulus generator, o modelo de refer encia. driver,
DUV, interface, monitors, coverage, responder, comparator. Todo o ambiente e codi-
cado usando a linguagem System Verilog. No stimulus generator s ao colocados todos
os estmulos para testar o m odulo, que pode ser de forma rand omica ou est atica com a
utilizac ao do directed stimulus. No modelo de refer encia e descrito todas as funcionalida-
des do m odulo. Odriver serve para traduzir os estmulos do stimulus generator (transac ao)
em estmulos do m odulo (sinais). O responder serve para traduzir os estmulos do m odulo
(sinais) em estmulos do comparator (transac ao). O DUV descreve o modulo RTL imple-
mentado que ser a validado. E por m, a interface e utilizada para fazer o mapeamento em
nvel de c odigo dos sinais fornecidos do driver e sinal que chega no DUV bem como o
sinal fornecido do DUV e o sinal que chega no responder. A gura 12 mostra a disposic ao
dos elementos para a construc ao do testbench.
Figura 12. Modelo de Vericac ao OVM-tpi
6. Resultado
A gura 13 mostra o m odulo construdo. O decodicador mapeia as instruc oes de entrada
setando sinais que ser ao enviados para os outros m odulos. Atrav es do mux 1 escolhemos
entre os m odulos que compartilham a unidade de arredondamento enviar a seu resultado
para o arredondamento, o mux 2 escolhe entre os resultados do m odulo de arredonda-
mento, abs/neg e cvt.d.s que ir a passar para a sada. O mux 2 tamb em realiza o empa-
cotamento dos dados quando necess ario. O mux 3 realiza o mecanismo de evitar atraso
de clock. Quando o resultado do c alculo dos m odulos operacionais nalizar, no mesmo
ciclo, o mux 3 seleciona esse m odulo para ser a sada e tamb em o registrador armazena
esse resultado. Assim no pr oximo ciclo de clock, o mux 3 chavear a para o registrador,
am de manter na sada o resultado da ultima operac ao. O m odulo de desempacotamento
e utilizado para separar os dois valores de entrada em sinal, expoente e mantissa de acordo
com o tipo de precis ao que ser a usado. O atrasador foi um mecanismo para garantir que
o n ao haver a perda de informac ao devido ao atraso de sinal. Assim esse m odulo atrasa
em um ciclo o end para garantir que quando o mux 3 receba o sinal de end, o resultado j a
esteja na sua entrada.
7. Conclus ao
Nesse trabalho tem sido possvel implementar uma unidade que oferece um conjunto de
operac oes aritm eticas, l ogicas e de comparac ao em ponto utuante como parte do projeto
do processador Mips R3000. O padr ao adotado e o IEEE-754, que e utilizado em quase
todos os projetos tanto acad emico com industrial envolvendo esse tipo de formato. Assim
esse m odulo pode ser reutilizado em qualquer outro projeto, n ao somente no processador,
que necessite operar com n umeros racionais, utilizando o formato de ponto utuante.
Figura 13. M odulo implementado
Refer encias
Camara, R. (2010). Desenvolvimento de mecanismo de vericac ao baseado em system-
verilog. Masters thesis, Centro de Informatica, Universidade Federal de Pernambuco,
Recife, PE.
Cambuim, L. F. S. and Barros, E. N. S. (2012). Introduc ao ` a arquitetura de computado-
res: Uma abordagem para ponto utuante e cache. http://www.cin.ufpe.br/

lfsc/archives/artigos/MIPSR3000Processor.pdf.
Ferreira, R. S. (2009). Introduc ao ` a arquitetura de computadores: Uma abordagem para
ponto utuante e cache. http://www.ppgee.pucminas.br/weac/2009/
PDF/WEAC-2009-Artigo-01.pdf. Workshop sobre Educac ao em Arquitetura
de Computadores - WEAC.
Gerry, K. and Joe, H. (1992). Mips Risc Architeture. Upper Saddle River (NJ), 2 edition.
Lira, P. (2009). Ip-process 3.0: Inclus ao do uxo de desenvolvimento de hard ip-cores.
Masters thesis, Centro de Informatica, Universidade Federal de Pernambuco, Recife,
PE.
Patterson, D. A. and Hennessy, J. L. (2005). Organizac ao e projeto de computadores: A
interface Hardware/Software. Morgan Kaufmann Publishers, 3 edition.
Society, I. C. (2008). IEEE Standard for Floating-Point Arithmetic. Sponsored by the
Microprocessor Standards Committee.

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