A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Mini-Curso WSCAD 2005 Construção de Modelos de Processadores Usando Uma Linguagem de Descrição de Arquiteturas Sandro Rigo, Rodolfo Azevedo, Guido Araujo,

Apresentações semelhantes


Apresentação em tema: "Mini-Curso WSCAD 2005 Construção de Modelos de Processadores Usando Uma Linguagem de Descrição de Arquiteturas Sandro Rigo, Rodolfo Azevedo, Guido Araujo,"— Transcrição da apresentação:

1 Mini-Curso WSCAD 2005 Construção de Modelos de Processadores Usando Uma Linguagem de Descrição de Arquiteturas Sandro Rigo, Rodolfo Azevedo, Guido Araujo, Paulo Centoducatte Computer Systems Laboratory http://www.lsc.ic.unicamp.br IC-UNICAMP

2 Mini-Curso WSCAD 2005 Roteiro Introdução O que é uma ADL Características de ArchC O Modelo SUB-MIPS em ArchC –Descrição do ISA –Descrição da Estrutura Ferramentas de ArchC Demonstração

3 Mini-Curso WSCAD 2005 Introdução Projeto de Sistemas Dedicados –90% dos processadores programáveis são dedicados –Requisitos/Restrições Projeto em Nível de Sistema –Sistemas terão mais de 1 Bi. de transistores –Modelos Flexíveis de Simulação –Especialização de ISA –Geração de Ferramentas de Software –Hardware/Software Codesign

4 Mini-Curso WSCAD 2005 Hardware / Software Codesign

5 Mini-Curso WSCAD 2005 Desenvolvimento do Software

6 Mini-Curso WSCAD 2005 Linguagens de descrição de arquitetura Modelagem da arquitetura em diversos níveis de abstração –Comportamental –Precisão de ciclos Geração automática de ferramentas de produção de software Verificação do modelo a cada nível de abstração Exploração do espaço de projeto

7 Mini-Curso WSCAD 2005 SystemC É uma Hardware Description Language (HDL) Extensão de C++ Modelagem em vários níveis de abstração Open-source (www.systemc.org) Não é ideal para redirecionamento automático de ferramentas

8 Mini-Curso WSCAD 2005 ArchC Informação de ISA e estrutura Gera simuladores em SystemC e C++ Gera montadores baseado no GNU Binutils Modela hierarquia de memória Interface de depuração Emulação de chamadas de SO Integração com IPs SystemC

9 Mini-Curso WSCAD 2005 Elementos da linguagem ArchC Descrição ArchC Descrição dos Recursos (AC_ARCH) Descrição do ISA (AC_ISA) Descrição do formato, tipo e codificação/decodifição das instruções Descrição do comportamento das instruções (C++/SystemC). Registradores. Memória. Estrutura de Pipeline

10 Mini-Curso WSCAD 2005 Construção do Modelo SUB-MIPS

11 Mini-Curso WSCAD 2005 Instruções do SUB-MIPS NomeSintaxeOperação addiaddi regd, reg, numregd ← reg+num addadd regd, reg, regregd ← reg+reg mulmul regd, reg, regregd ← reg*reg bnebne reg, reg, label se reg1 ≠ reg2 salte para label lwlw regd, num (reg) regd ← mem[reg + num]

12 Mini-Curso WSCAD 2005 Modelando usando ArchC CaracterísticaFuncional Precisão de Ciclos Conjunto de Instruções Sim TemporizaçãoPoucaSim EstruturaPoucaSim Desempenho da Simulação AltoBaixo

13 Mini-Curso WSCAD 2005 Modelagem Funcional PC Instruction memory Read address Instruction 16 32 Add ALU result M u x Registers Write register Write data Read data 1 Read data 2 Read register 1 Read register 2 Shift left 2 4 M u x ALU operation 3 RegWrite MemRead MemWrite PCSrc ALUSrc MemtoReg ALU result Zero ALU Data memory Address Write data Read data M u x Sign extend Add Detalhes estruturais abstraídos → monociclo

14 Mini-Curso WSCAD 2005 AC_ARCH(submips) { ac_mem MEM:64K; ac_regbank RB:32; ac_wordsize 32; ARCH_CTOR(submips) { ac_isa(“submips_isa.ac"); set_endian(“big”); }; Modelagem Funcional Recursos da Arquitetura (AC_ARCH)

15 Mini-Curso WSCAD 2005 Definição do ISA Descrição dos formatos das instruções –ac_format Declaração das instruções –ac_instr Descrição da sintaxe assembly, codificação e decodificação –ac_asm_map –set_asm –set_decoder

16 Mini-Curso WSCAD 2005 Formatos de Instrução op 056101115162021252631 6 bits5 bits 6 bits rsrtrdshamtfunct R-Type (Register) op 015162021252631 16 bits5 bits 6 bits rsrtimmediate I-Type (Immediate) ac_formatType_R ="%op:6 %rs:5 %rt:5 %rd:5 %shamt:5 %funct:6"; ac_formatType_I = "%op:6 %rs:5 %rt:5 %imm:16:s";

17 Mini-Curso WSCAD 2005 AC_ISA(submips) { ac_format Type_R = "%op:6 %rs:5 %rt:5 %rd:5 0x00:5 %func:6"; ac_format Type_I = "%op:6 %rs:5 %rt:5 %imm:16"; ac_instr add, mul; ac_instr lw, bne, addi; ISA_CTOR(submips) { add.set_asm("add %reg, %reg, %reg“, rd,rs,rt); add.set_decoder(op=0x00, func=0x20); lw.set_asm("lw %reg, %imm(%reg)“, rt,imm,rs); lw.set_decoder(op=0x23);... }; Declaração de Instruções Declaração de instruções Seqüência de decodificação

18 Mini-Curso WSCAD 2005 Descrição do Comportamento void ac_behavior( add ){ RB[rd] = RB[rs] + RB[rt]; } Acesso a dispositivo de armazenamento Acesso a campo de instrução

19 Mini-Curso WSCAD 2005 Hierarquia de Comportamentos Existem operações que são executadas por todas as instruções de um mesmo tipo, ou ainda por todas as instruções do ISA. –Exemplo típico: incremento do PC. Objetivo: –Fatorar essas operações de maneira que sejam codificadas apenas uma vez, e executadas por todas as instruções das quais fariam parte.

20 Mini-Curso WSCAD 2005 Hierarquia de Comportamentos Instrução (Genérico) Type_RType_J j Type_I lw, sw, addi add, sub, mul Execução Executado para todas as instruções Executado todas as instruções do tipo J

21 Mini-Curso WSCAD 2005 Descrevendo Comportamentos void ac_behavior( instruction ){ ac_pc = ac_pc + 4; } void ac_behavior( add ){ RB[rd] = RB[rs] + RB[rt]; }

22 Mini-Curso WSCAD 2005 Exemplo 1 SUB-MIPS executando o programa Fatorial

23 Mini-Curso WSCAD 2005 Programa Fatorial main: add $4,$0,4 # n = 4 add $2,$0,1 # f = 1 $L1: mul $2,$2,$4 # f = f * n add $4,$4,-1 # n = n - 1 bne $4,$0,$L1 # if (n != 0) goto $L1 add $0,$0,0

24 Mini-Curso WSCAD 2005 Especialização do ISA SUB-MIPS executando o programa produto interno

25 Mini-Curso WSCAD 2005 Especialização de ISA Identificar pontos críticos na execução de uma aplicação Verificar se a implementação em hardware de alguma tarefa pode acelerar a execução Exemplo: Cálculo de produto e soma. –Conhecido como MAC –Muito presente em programas de processamento de sinais (DSP)

26 Mini-Curso WSCAD 2005 Programa Produto Interno main: # Inicializa apontadores para valores la $4, a # x = a la $5, b # y = b # Inicializa variaveis auxiliares add $6, $0, 0 # acc = 0; add $7, $0, 0 # mul = 0; add $8, $0, 0 # val1 = 0; add $9, $0, 0 # val2 = 0; # Carrega contador de repeticao lw $3, n # N = n; # Repete n vezes $L1: # Carrega os valores de cada vetor lw $8, ($4) # val1 = *x; lw $9, ($5) # val2 = *y; # Multiplica e acumula mul $7, $8, $9 # mul = val1 * val2; add $6, $6, $7 # acc = acc + mul; # Atualiza apontadores para valores # (32 bits, 4bytes) add $4, $4, 4 # x++; add $5, $5, 4 # y++; # Subtrai contador de repeticao add $3, $3, -1 # N = N-1; # Se contador nao for 0, repete bne $3, $0, $L1 # Marcador de fim: quando chegar aqui acabou a repeticao add $0, $0, 0 # Dados usados no programa.data a:.word 2, 3, 4 b:.word 5, 6, 7 n:.word 3

27 Mini-Curso WSCAD 2005 Programa Produto Interno Modificado main: # Inicializa apontadores para valores la $4, a # x = a la $5, b # y = b # Inicializa variaveis auxiliares add $6, $0, 0 # acc = 0; add $7, $0, 0 # mul = 0; add $8, $0, 0 # val1 = 0; add $9, $0, 0 # val2 = 0; # Carrega contador de repeticao lw $3, n # N = n; # Repete n vezes $L1: # Carrega os valores de cada vetor lw $8, ($4) # val1 = *x; lw $9, ($5) # val2 = *y; # Multiplica e acumula mac $6, $8, $9 #acc = acc + val1*val2; # Atualiza apontadores para # valores (32 bits, 4bytes) add $4, $4, 4 # x++; add $5, $5, 4 # y++; # Subtrai contador de repeticao add $3, $3, -1 # N = N-1; # Se contador nao for 0, repete bne $3, $0, $L1 # Marcador de fim: quando chegar aqui acabou a repeticao add $0, $0, 0 # Dados usados no programa.data a:.word 2, 3, 4 b:.word 5, 6, 7 n:.word 3

28 Mini-Curso WSCAD 2005 AC_ISA(submips) { ac_format Type_R = "%op:6 %rs:5 %rt:5 %rd:5 0x00:5 %func:6"; ac_format Type_I = "%op:6 %rs:5 %rt:5 %imm:16"; ac_instr add, mul, mac; ac_instr lw, bne, addi; ISA_CTOR(submips) { add.set_asm("add %reg, %reg, %reg“, rd,rs,rt); add.set_decoder(op=0x00, func=0x20); mac.set_asm("mac %reg, %reg, %reg", rd, rs, rt); mac.set_decoder(op=0x00, func=0x30);... }; Declaração de Instruções Inclusão da instrução MAC

29 Mini-Curso WSCAD 2005 Descrevendo Comportamentos... //!Instruction mul behavior method. void ac_behavior( mul ) { RB[rd] = RB[rs] * RB[rt]; }; //!Instruction mac behavior method. void ac_behavior( mac ) { RB[rd] += RB[rs] * RB[rt]; };... Inclusão da instrução MAC

30 Mini-Curso WSCAD 2005 Simulação de Hierarquia de Memória Aplicação Arquitetura do Sistema Configuração da Hierarquia de Memória Desempenho da Cache Ajuste Processador (SUB-MIPS) Memória

31 Mini-Curso WSCAD 2005 AC_ARCH(submips) { ac_mem MEM:64K; ac_icache IC("dm", 32, 4, "wb", "wal"); ac_dcache DM("2w", 64, 2,"lru", "wt", "war"); ac_regbank RB:32; ac_wordsize 32; ARCH_CTOR(submips) { ac_isa(“submips_isa.ac"); set_endian(“big”); IC.bindsTo( MEM ); DM.bindsTo( MEM ); }; Declaração de Hierarquia de Memória

32 Mini-Curso WSCAD 2005 Modelagem com Precisão de Ciclos PC Instruction memory Registers M u x M u x M u x Control ALU EX M WB M WB WB ID/EX EX/MEM MEM/WB Data memory M u x Hazard detection unit Forwarding unit 0 M u x IF/ID I n s t r u c t i o n ID/EX.MemRead I F / I D W r i t e P C W r i t e ID/EX.RegisterRt IF/ID.RegisterRd IF/ID.RegisterRt IF/ID.RegisterRt IF/ID.RegisterRs Rt Rs Rd Rt EX/MEM.RegisterRd MEM/WB.RegisterRd

33 Mini-Curso WSCAD 2005 Recursos da Arquitetura (AC_ARCH) AC_ARCH(submips) { ac_mem MEM:64K; ac_regbank RB:32; ac_pipe PIPE = {IF,ID,EX,MEM,WB}; ac_format Fmt_EX_MEM = "%alures:32 %wdata:32 %rdest:5 %regwrite:1 %memread:1 %memwrite:1"; ac_reg EX_MEM;... ac_wordsize 32; ARCH_CTOR(submips) { ac_isa(“submips_isa.ac"); set_endian("big"); };

34 Mini-Curso WSCAD 2005 Descrição do Comportamento void ac_behavior( insnX ) { switch( stage ) { case IF: break; case ID: break; case EX: break; case MEM: break; case WB: break; } void ac_behavior( insnX ) { switch( stage ) { case IF: break; case ID: break; case EX: break; case MEM: break; case WB: break; } As ações devem ser descritas para cada estágio do pipeline Esboço de todo comportamento para a estrutura de pipeline definida

35 Mini-Curso WSCAD 2005 Exemplo de Comportamento void ac_behavior( Type_R, int stage ){ switch(stage){ case IF: case ID: /* Checking forwarding for the rs register */ if ( (EX_MEM.regwrite == 1) && (EX_MEM.rdest != 0) && (EX_MEM.rdest == ID_EX.rs) ) operand1 = EX_MEM.alures.read(); else if( (MEM_WB.regwrite == 1) && (MEM_WB.rdest != 0) && (MEM_WB.rdest == ID_EX.rs) ) operand1 = MEM_WB.wbdata.read(); else operand1 = RB.read(rs);... default: break; }

36 Mini-Curso WSCAD 2005 Ferramentas de ArchC

37 Mini-Curso WSCAD 2005 Infra-estrutura de geração de ferramentas Ferramentas Geradoras Descrição do Modelo (ArchC) Pré-processador (acpp) Gerador Simulador (acsim, accsim) Representação Intermediária (Memória) Gerador Montador (acasm) Gerador Backend de Compilador Gerador de Linkeditor

38 Mini-Curso WSCAD 2005 Simulação Interpretada Busca, Decodificação e execução dinâmicas Flexível Simuladores gerados são escritos em SystemC

39 Mini-Curso WSCAD 2005 Simulador Interpretado (acsim)

40 Mini-Curso WSCAD 2005 Simulação Compilada Melhorias –Decodificação estática –Cálculos estáticos especializados a uma aplicação Desempenho melhora em duas ordens de magnitude Redirecionamento –Architecture Description Languages (ADL) Otimizações usando mais informações sobre a arquitetura

41 Mini-Curso WSCAD 2005 Simulador Compilado (accsim)

42 Mini-Curso WSCAD 2005 Experimentos (Compiled-simulator) MIPS

43 Mini-Curso WSCAD 2005 Geração de Montadores (acasm) Utiliza a estrutura de redirecionamento do pacote GNU/Binutils Os arquivos gerados são mesclados na árvore de diretórios original Binutils Características –Arquivo objeto ELF relocável –Possui todas as características do núcleo do montador gas: diretivas de montagem, rótulos, geração de listagens,... –Código gerado pode ser utilizado pelos simuladores ArchC

44 Mini-Curso WSCAD 2005 Geração de Montadores (acasm) Representação Intermediária ArchC Gerador de Montador (acasm) Arquivos GNU Binutils (dependentes de máquina) Processo de compilação Arquivos GNU Binutils (independentes de máquina) Montador Executável

45 Mini-Curso WSCAD 2005 Interface Gnu GDB O GDB permite um controle da execução (breakpoints) e do valor de variáveis (leitura e escrita) A comunicação entre o simulador e o GDB é feita por meio de um socket É preciso implementar serviços de leitura e escrita de registradores e de memória no simulador

46 Mini-Curso WSCAD 2005 Interface Gnu GDB ac_word submips::reg_read( int reg ) { /* general purpose registers */ if ( ( reg >= 0 ) && ( reg < 32 ) ) return RB.read( reg ); /* pc */ else if ( reg == 37 ) return ac_pc; return 0; }...

47 Mini-Curso WSCAD 2005 Ferramentas em ArchC Emulação de Sistema Operacional –Chamada de sitema: open, close, fstat, etc; –Linux + Newlib Simulador Aplicação S.O. da máquina host System Call Library

48 Mini-Curso WSCAD 2005 Verificação de Modelos

49 Mini-Curso WSCAD 2005 Rodmap para Modelos ArchC VersionDevelopment StageBenchmark 0.0.XWriting AC_ISA/AC_ARCH 0.1.0 AC_ARCH/AC_ISA decl finished 0.2.0 Instruction behavior descrp. finished 0.3.0AC_ARCH/AC_ISA finished(AC_STONE) ArchC test suite 0.4.0ABI implemented 0.5.0Model description completedMediabench 0.6.0Testing...Mibench (small) 0.7.0Testing...Mibench (large) 1.0.0Final TestSPEC 2000

50 Mini-Curso WSCAD 2005 Modelos ArchC ArchitectureVersionAbstraction Level MIPS-I0.7.4Functional SPARC-V80.7.4Functional ARM0.6.9Functional R30000.7.0Cycle-accurate PowerPC0.7.0Functional Intel 80510.3.2Functional Intel 80510.3.2Cycle-accurate Hitachi SH-40.3.2Functional

51 Mini-Curso WSCAD 2005 Modelos ArchC ArchitectureVersionAbstraction Level Altera Nios0.3.8Functional Motorola ColdFire0.3.9Functional PIC 16F84 0.3.0Cycle-accurate PIC 16F84 0.3.0Functional Opencore OR1K0.3.5Functional LEON0.2.5Cycle-accurate TMS320C62x0.1.5Functional

52 Mini-Curso WSCAD 2005 Pessoas Envolvidas UNICAMP –Professores: 4 –Alunos: 2 PhD, 3 MSc, 3+ IC: –ArchC 2.0; –Simulação Compilada; –Modelos; –Tool chain: assembler, linker, gdb, etc;

53 Mini-Curso WSCAD 2005 Pessoas Envolvidas UFPE –Professores: 2 –ALunos: 3 PhD, 1 IC: –Hierarquia de memória, plataformas, consumo de energia em caches; UFSC –Professores: 2 –Alunos: 4 IC e 4 Mestrado –tool chain (assembler, linker, gdb, etc); –Modelos: PIC e Nios II; –Instruction scheduler;

54 Mini-Curso WSCAD 2005 Internet www.archc.org Documentação, download, bug report, forum de discussão

55 Mini-Curso WSCAD 2005 Version 2.0 Enabling Platform Design

56 Mini-Curso WSCAD 2005 Objetivos Adequar os simuladores de ArchC à demanda dos usuários: plataforma!; Permitir que modelos em ArchC possam facilmente ser conectados a outros módulos SystemC; Facilitar a inclusão de futuras funcionalidades;

57 Mini-Curso WSCAD 2005 Reestruturação dos Simuladores Simulação Compilada: –Possibilitar a integração com SystemC; Todos os simuladores serão capazes de se comunicar com módulos externos através de uma interface TLM!

58 Mini-Curso WSCAD 2005 Integração com SystemC TLM O simulador possui uma interface externa capaz dotada de métodos read/write; Não estabelece nenhum tipo padrão de barramento, etc; Somente possibilita uma comunicação em nível TLM; Fácil implementação de um sistema de tratamento de interrupções; Explorar espaço de desenvolvimento multi-processado e de plataformas

59 Mini-Curso WSCAD 2005 Objetivo Processador 1 (ArchC) Memória Módulo SystemC Processador 2 (ArchC) Memória Barramento

60 Mini-Curso WSCAD 2005 Exemplo 1 ARM MPEG4 USB MP3 Bus-based (P1) –ARM processor and Ethernet –AMBA bus –Enable BCA and CA AMBA Ethernet USB

61 Mini-Curso WSCAD 2005 Exemplo 2 ARM MPEG4 USB MP3 NoC-based (P2) –ARM Processor –OCP conexions –Enable BCA and CA BUFFER Ethernet USB

62 Mini-Curso WSCAD 2005 Modelando um Sistema ArchC Model (Proc) Simulator generator libproc.a, proc.H SoC SystemC Model (socmod.H)


Carregar ppt "Mini-Curso WSCAD 2005 Construção de Modelos de Processadores Usando Uma Linguagem de Descrição de Arquiteturas Sandro Rigo, Rodolfo Azevedo, Guido Araujo,"

Apresentações semelhantes


Anúncios Google