CARACTERIZAÇÃO DE DECODIFICADORES DE CÓDIGO...

download CARACTERIZAÇÃO DE DECODIFICADORES DE CÓDIGO lscad.facom.ufms.br/wiki/images/temp/6/61/20130917033120!

of 20

  • date post

    25-Jan-2019
  • Category

    Documents

  • view

    212
  • download

    0

Embed Size (px)

Transcript of CARACTERIZAÇÃO DE DECODIFICADORES DE CÓDIGO...

CARACTERIZAO DE DECODIFICADORES DE CDIGO SOBRE OS SOFT-

CORES -VEX E LEON3 EM PLATAFORMAS FPGA

Mrcio Afonso Soleira Grassi1 & Ricardo Ribeiro dos Santos

2

1Aluno do Curso de Engenharia Eltrica da UFMS, bolsista de Iniciao Cientfica CNPq PIBIC 2012/13 2Professor da UFMS, Faculdade de Computao; e-mail: ricardo@facom.ufms.br

Resumo: Este trabalho apresenta o projeto de um circuito decodificador baseado na tcnica de

codificao PBIW (Pattern Based Instruction Word) e implementado sobre o processador

soft-core Leon3 que utiliza a arquitetura SPARCV8. Alm disso, tem por objetivo, comprovar

que a tcnica PBIW uma alternativa aos problemas conhecidos por Memory Wall e Power

Wall. Inicialmente, esse processador foi sintetizado e prototipado em uma plataforma FPGA

(Field Programmable Gate Array) por meio do software Altera Quartus II Web Edition e

depois simulado com o ModelSim-Altera 10.0c Starter Edition. Os experimentos mostraram

que o circuito decodificador impactou um acrscimo de 4,9% na rea do processador, sem

levar em considerao a memria de padres. Entretanto, com a prototipao de uma ROM

para executar um programa grande que armazena muitos padres esse nmero pode aumentar

significativamente.

Palavras-chave: PBIW, decodificador, circuitos digitais, circuitos reconfigurveis

1 INTRODUO

Nos ltimos anos, vrias propostas foram desenvolvidas na tentativa de minimizar o

problema de Memory Wall [7-9], que definida como a diferena entre a velocidade da CPU

e a taxa de acesso DRAM (Dynamic Random Access Memory). Muitas dessas tcnicas

focam em novos esquemas de codificao enquanto outras utilizam tcnicas para reduo do

tamanho dos programas, conhecidas como tcnicas de compresso. Contudo, todas possuem

um nico objetivo em comum, que reduzir a quantidade de dados armazenados na memria

principal e, consequentemente, diminuir os cache misses e o volume de dados transferidos

entre memria e processador. Especificamente, estas tcnicas tm sido aplicadas em

arquiteturas que buscam instrues largas na memria e em arquiteturas voltadas para

domnios especficos de aplicaes, como os sistemas embarcados [10-15].

Destarte, o limite Memory Wall recentemente vem trazendo preocupao e sendo

reconhecido por fabricantes de chips como Intel, AMD, NVIDIA e ARM. Alguns trabalhos

no muito recentes j mostravam que a taxa de melhora na velocidade dos

microprocessadores supera a taxa de melhora na velocidade das memrias DRAM [9].

A tcnica de codificao de instrues PBIW (Pattern Based Instruction Word) [4]

voltada para arquiteturas que buscam instrues longas na memria e surge como alternativa a

soluo desse problema. A tcnica composta por um algoritmo baseado em fatorao de

operandos [9, 12] e por uma memria cache chamada de Pattern Cache (P-Cache).

Este trabalho buscou caracterizar o mecanismo decodificador PBIW sobre a via de

dados do processador Leon3 [2]. Em particular, o trabalho investiga o impacto na insero do

circuito decodificador na via de dados do processador implementado em uma plataforma de

hardware com tecnologia FPGA (Field Programmable Gate Array) com relao rea. No

foi possvel realizar a anlise do consumo de potncia de potncia dinmica e freqncia

mxima de operao devido a restries em programa do conjunto de ferramentas do

processador Leon3. A escolha da tecnologia FPGA como plataforma para implementao e

sntese em hardware se d pela flexibilidade dessa tecnologia (pode-se program-la e

reprogram-la) e sua disponibilidade para utilizao imediata no Laboratrio de Sistemas

Computacionais de Alto Desempenho (LSCAD) da UFMS. Este projeto est relacionado com

o desenvolvimento de um projeto maior voltado para o desenvolvimento de tcnicas,

algoritmos e implementao em hardware em arquiteturas avanadas de computadores.

2 MATERIAL E MTODOS

O trabalho foi desenvolvido no Laboratrio de Sistemas Computacionais de Alto

Desempenho (LSCAD) da UFMS em Campo Grande. A P-cache e o mdulo de decodificao

foram implementados utilizando linguagem VHDL e inicialmente sintetizados no ambiente da

ferramenta Altera Quartus R II Web Edition [16]. O Altera Quartus II um software da

empresa Altera focado no projeto de circuitos digitais que possibilita a prototipao sobre

dispositivos de lgica programvel. O software possui as seguintes caractersticas: suporte

para implementao em VHDL e Verilog para descrio de hardware, edio de circuitos

lgicos utilizando esquemticos e simulao temporal utilizando vetores de onda. A

simulao e a validao da funcionalidade da implementao foi realizada utilizando o

software ModelSim-Altera 10.0c Starter Edition.

2.1 A ARQUITETURA SPARCV8

A arquitetura SPARC (Scalable Processor Architecture) est publicada como padro

na IEEE 1754-1994, foi formulada pela Sun MicroSystems baseado nos projetos da

Universidade da Califrnia Berkeley. Ela define registradores de propsito geral, de ponto

flutuante, de controle/status e 72 instrues, todas codificadas em formatos de 32 bits. Um

processador SPARC, logicamente compreende uma Unidade de Inteiro (UI), uma Unidade de

Ponto Flutuante (UPF) e opcionalmente, um coprocessador, cada com seus respectivos

registradores. A seguir so listadas algumas caractersticas da arquitetura SPARCv8 [1]:

Alinhamento: Espao de endereos linear de 32 bits.

Poucos e simples formatos de instrues: Todas as instrues tm 32 bits de

tamanho e possuem alinhamento de 32 bits na memria. H apenas trs formatos de

instrues bsicos, nos quais os campos de opcode e endereo de registradores esto alocados

em posies uniformes. Apenas instrues load e store acessam memria e I/O.

Poucos modos de endereamento: Endereos de memria so formados pelo par

registrador+ registrador ou registrador+imediato.

Trade de endereos de registradores: A maioria das instrues opera em dois ou

trs operandos (ou um registrador e um imediato) e atribui o resultado em um terceiro

registrador.

Banco de registradores em janelas "windowed": A qualquer instante esto visveis

ao programa oito registradores inteiros globais, mais uma janela de 24 registradores, em um

banco de registradores maior. Os registradores da janela podem ser descritos como uma cache

de argumentos de procedimentos, valores locais e endereos de retorno.

Banco de registradores de ponto flutuante separado: Configurvel por software em

32 de preciso simples (32 bits), 16 de preciso dupla (64 bits), oito de preciso qudrupla

(128 bits), ou uma combinao destes.

2.1.1 CONJUNTO DE INSTRUES

As instrues da ISA SPARCv8 so codificadas em trs formatos de 32 bits. Os trs

formatos so mostrados na Figura 1. O campo op o nico campo comum, sendo ele o

identificador do formato da instruo. A Figura 3 mostra a codificao do campo op. O

campo op com valor 1, indica o formato 1, utilizado apenas pela instruo CALL, que alm

do campo op possui campo disp30, um imediato de 30 bits. Esse campo deslocado dois bits

esquerda e somado ao Program Counter (PC) quando a instruo CALL executada. Dessa

forma, todos os endereos de memria podem ser alcanados pela instruo CALL. Quando

op zero, o formato 2 utilizado por uma instruo de extenso de sinal (SETHI), NOP ou

branch (Bicc, FBicc, CBccc). O formato 3 utilizado, quando op 3, por instrues de

memria ou quando op igual a 2, por instrues aritmticas, lgicas, de deslocamentos e

demais instrues.

Figura 1. Formato das instrues da arquitetura SPARC.

Tabela 1: Significado dos campos das instrues SPARCv8 [11].

Campo Significado

op Formato da instruo

op2/op3 Opcode da instruo.

rd Registrador (operando) de destino.

a Bit que anula a execuo de um branch.

cond Seleciona uma condio para testar uma instruo branch.

imm22 Um valor imediato que localiza SETHI na parte mais significativa de um

registrador de destino.

disp22 e disp30 So campos para palavras alinhadas, sinais estendidos, deslocamentos

relativos ao PC (para instrues call ou branch, respectivamente.

i Bit que seleciona um segundo operando da ALU, para instrues load

store e aritmticas (de inteiros). Se i=0, o operando _e r[rs2]. Se i=1 o

operando _e simm13 com sinal estendido de 13 para 32 bits.

asi Utilizado por instrues load store alternativas, para indicar que um

programa do super-usurio e se a operao deve ser realizada na memria

de instrues ou na memria de dados.

rs1 Registrador (operando) de origem 1.

rs2 Registrador (operando) de origem 2, utilizado quando o campo i=0.

simm13 Valor imediato utilizado como segundo operando da ALU quando i=1.

opf Codifica instrues de ponto flutuante ou instrues do coprocessador.

Figura 2: Codificao do campo op2 [11].

Figura 3: Codificao do campo op [11].

Em instrues do formato 2 o valor do campo op2 determina o tipo de instruo,

conforme mostra a Figura 2. O valor 0 utilizado para codificar a instruo UNIMP, que

causa uma interrupo do tipo ilegal_instrucion. Os valores 2, 6 e 7 determinam instrues de

branchs de trs tipos: branchs de inteiros, tipo Bicc; branchs de ponto flutuante, tipo FBfcc;

branchs de coprocessa