Linguagens de Descrição de Arquitetura Aula 04agsf/disciplinas/tecnicas_otimizacao/...Linguagens...
Transcript of Linguagens de Descrição de Arquitetura Aula 04agsf/disciplinas/tecnicas_otimizacao/...Linguagens...
ADLs
Linguagens de Descrição de Arquitetura
Aula 04
ADL (Architecture Description Language)
� Linguagem de Descrição de Arquitetura� Usadas para especificar arquiteturas programáveis
� Podem ser usadas para:� Especificar novas arquiteturas� Exploração de Arquitetura
� Ajustar a arquitetura visando obter algum aspecto de melhoria para um conjunto de aplicações
� Gerar protótipos de hardware
Características
� Algumas ADLs:� ArchC, Expression, LISA, nML, MIMOLA, ISDL.
� Vantagens� Poder especificar uma arquitetura e então simulá-
la, melhorá-la, validá-la ANTES de construir o hardware.� Economia de tempo� Economia de custos de criação da arquitetura
� Usar módulos já desenvolvidos por outras pessoas e/ou empresas� Tempo gasto na especificação diminui
Classificação das ADLs
� ADLs Contemporâneas
Aplicações
MIPS
Economia de 20% de energia
Análise Energia
Sparcv8
MIPS
Sparc
djpeg
32mJ
40mJ
Simuladores
ADLsModelos
CAD
Aplicações
MIPS
Economia de 40% de energia
Análise Energia
djpeg
32mJ
19mJMIPS 1 nível
2 níveis
Simuladores
ADLsModelos
CAD
Nível de Abstração
Mips.ccache.c
MEM.c
Simulador.c
• Desenvolver sistemas complexos neste nível pode levar muito tempo
board
Abstração
(-)
(+)
• Rapidez nas análises
• Análise prévia da arquitetura
• Maiores reduções de energia
Altos níveis de abstração proporcionam:
– Construção de sistema mais complexos
µPInstr
MEMDado
Comparação entre ADLs
Simuladores de Arquitetura
ArchC
� Linguagem de descrição de arquitetura� Open-Source� Baseada em SystemC� Desenvolvido pela UNICAMP
� Vários trabalhos de cooperação� Processador� Memória Cache� Modelo de Desempenho, energia, etc...
� www.archc.org
ArchC
� Objetivo preliminar� Permitir que os usuários explorem uma
arquitetura nova� Gerem novas ferramentas de software tais
como: assemblers, simuladores, etc.
� Dividido� Descrição dos elementos da arquitetura
(AC_ARCH)� Descrição da arquitetura do conjunto de
instruções (AC_ISA)
Estrutura ArchC
� AC_ARCH� Descreve todos os recursos da arquitetura,
elementos ou módulos tais como:� Elementos de memória � Estrutura pipeline� Processador
� AC_ISA� Descreve todos os detalhes referentes às
instruções, como:� Nomes� Formatos Tamanhos� Comportamento de cada instrução� Informações necessárias para decodificar as
instruções
Fluxo Projeto
� Com base nas descrições anteriores, ArchC pode gerar um simulador de comportamento escrito em SystemC para a arquitetura em questão.
Descrição do ARCH
AC_ARCH(sparcv8 ){ac_mem MEM:5M;ac_icache IC ( "2w" , 256 , 4 , "LRU" , "wt" , "w al" );ac_dcache DM ( "2w" , 256 , 4 , "LRU" , "wt" , "w al" );ac_regbank RG:8;ac_regbank RB:256;ac_reg PSR;ac_reg Y;ac_wordsize 32;ARCH_CTOR(sparcv8){
ac_isa("sparcv8_isa.ac");set_endian("big");IC.bindsTo( MEM );DM.bindsTo( MEM );
};};
2w = two way associative (dm, 2w, 4w, ... , fully )256 = quantidade de linhas da cache 4 = quantidade de palavras por linhaLRU = Estratégia de substituição (LRU,random)wt = Política de escrita (wt, wb)wal = esquema de escrita (war, wal)
Sparcv8
IC
DM
MEM
Descrição do ISA
AC_ISA(sparcv8){
ac_format Type_F1 = "%op:2 %disp30:30";ac_format Type_F2A = "%op:2 %rd:5 %op2:3 %imm22:22";ac_format Type_F2B = "%op:2 %an:1 %cond:4 %op2:3 %disp22:22:s";ac_format Type_F3A = "%op:2 %rd:5 %op3:6 %rs1:5 %is:1 %asi:8 %rs2:5";ac_format Type_F3B = "%op:2 %rd:5 %op3:6 %rs1:5 %is:1 %simm13:13:s";
ac_instr<Type_F1> call;ac_instr<Type_F2A> sethi;ac_instr<Type_F2B> ba, bn, bne, be, bg, ble, bge, bl, bgu, bleu, bcc, bcs; ac_instr<Type_F3A> ldsb_reg, ldsh_reg, ldub_reg, lduh_reg, ld_reg, ldd_reg;ac_instr<Type_F3B> stb_imm, sth_imm, st_imm, std_imm, ldstub_imm, swap_imm;
ISA_CTOR(sparcv8){ldsb_reg.set_asm("ldsb %rd, %rs1, %rs2");ldsb_reg.set_decoder(op=0x03, op3=0x09, is=0x00);ldsh_reg.set_asm("ldsh %rd, %rs1, %rs2");ldsh_reg.set_decoder(op=0x03, op3=0x0A, is=0x00);ldub_reg.set_asm("ldub %rd, %rs1, %rs2");ldub_reg.set_decoder(op=0x03, op3=0x01, is=0x00);
};
(sparcv8_isa.ac)
void ac_behavior( call ){
dprintf("call 0x%x\n", ac_pc+(disp30<<2));writeReg(15, ac_pc); //saves ac_pc in %o7(or %r15)update_pc(1,1,1,0, ac_pc+(disp30<<2));
};
(sparcv8-isa.cpp)
ArchC
� Uso do ArchC� Site do ArchC (www.archc.org)
� Linguagem� Benchmarks� Documentação
� Componentes modelados� MIPS, SPARC, 8051� Memória cache, Memória principal
Simulação ArchCAC_ARCH(sparcv8 ){
ac_mem MEM:5M;ac_icache IC ( "2w" , 256 , 4 , "LRU" , "wt" , "wal" );ac_dcache DM ( "2w" , 256 , 4 , "LRU" , "wt" , "wal" );ac_regbank RG:8;ac_regbank RB:256;ac_reg PSR;ac_reg Y;ac_wordsize 32;ARCH_CTOR(sparcv8){
ac_isa("sparcv8_isa.ac");set_endian("big");IC.bindsTo( MEM );DM.bindsTo( MEM );
};};
Platune
� Ferramenta que habilita o projetista analisar uma arquitetura específica (SoC) para uma dada aplicação.
� Através do ajuste dos parâmetros tenta encontrar valores adequados de desempenho e energia.
� É restrita a uma arquitetura específica
Platune
Platune
Resumo
� ArchC� Ajuste de arquitetura à aplicação� Arquitetura configurável� SoC Design
� Platune� Ajuste de arquitetura à aplicação� Arquitetura fixa� SoC Design
EXPLORAÇÃO DE ARQUITETURA
Exploração de Arquitetura
� Uso de ADLs/Simuladores para explorar arquiteturas
Tamanho cache, Tamanho da Linha, Associatividade,....
MIPS, SPARCv8, 8051, ARM,...
Qual a melhor arquitetura ???
Exemplo (Hierarquia memória)
Pareto- Optimal
Exemplo (Hierarquia memória)
� Exploração com hierarquias diferentes� Para 1 nível : # dezenas de configurações� Para 2 níveis: # centenas a milhares de configurações
� Necessidade de Heurísticas eficientes
Benchmark: bitcount_small (Mibench)
Melhor energia para o 1o nível
Pontos não explorados no 1o nível
Pode-se encontrar boas configurações a partir de hierarquia de dois níveis fazendo
uso de boas heurísticas
Exemplo (Hierarquia memória)� Métodos de Exploração
� Platune (exaustiva) � Zhang (heurística 1 nível)� Viana (Single-Pass Simulation)� Silva-Filho (heurística TECH-CYCLES – 2 níveis)
µPDM1
MEM
IC1
µPDM1 DM2
MEM
IC1 IC2
• Simulação exaustiva
• Apenas para um nível de cache
• Simulação baseado em heurística
• Apenas para um nível de cache
• Simulação exaustiva
• Apenas uma execução (sim-Cheetah)
• Apenas para um nível de cache
• Simulação baseada em heurística
• Para dois níveis de cache