mini-curso wscad 2005 construção de modelos de processadores usando uma linguagem de descrição...
TRANSCRIPT
Mini-CursoWSCAD 2005
Construção de Modelos de Construção de Modelos de Processadores Usando Uma Processadores Usando Uma Linguagem de Descrição de Linguagem de Descrição de
ArquiteturasArquiteturas
Sandro Rigo, Rodolfo Azevedo, Guido Araujo, Paulo Centoducatte
Computer Systems Laboratoryhttp://www.lsc.ic.unicamp.br
IC-UNICAMP
Mini-CursoWSCAD 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
Mini-CursoWSCAD 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
Mini-CursoWSCAD 2005
Hardware / Software Codesign
Aplicação(System Level)
ParticionamentoHardware / Software
(Hardware)
Data Path customizadoSíntese de Hardware
(Software)
Modelo ArquiteturaGeração de Código
(compilação)
Co-simulaçãoHardware / Software
Avaliação
Mini-CursoWSCAD 2005
Desenvolvimento do Software
Compilador
Linkeditor
Simulador
Montador
código Fonte
C / C++
linguagem de montagem
código pré-compilado(bibliotecas)
códigorelocável
código binário
Aplicação(System Level)
ParticionamentoHardware / Software
(Hardware)
Data Path customizadoSíntese de Hardware
(Software)
Modelo ArquiteturaGeração de Código
(compilação)
Co-simulaçãoHardware / Software
Avaliação
Arquitetura Fixa
Mini-CursoWSCAD 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
Mini-CursoWSCAD 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
Mini-CursoWSCAD 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
Mini-CursoWSCAD 2005
Elementos da linguagem ArchC
Descrição ArchCDescrição dos Recursos (AC_ARCH)
Descrição do ISA (AC_ISA)
Descrição do formato, tipo e codificação/decodifiçãodas instruções
Descrição do comportamento das instruções(C++/SystemC)
. Registradores
. Memória
. Estrutura de Pipeline
Mini-CursoWSCAD 2005
Construção do Modelo SUB-MIPS
Mini-CursoWSCAD 2005
Instruções do SUB-MIPS
Nome Sintaxe Operação
addi addi regd, reg, num regd ← reg+num
add add regd, reg, reg regd ← reg+reg
mul mul regd, reg, reg regd ← reg*reg
bne bne reg, reg, label se reg1 ≠ reg2 salte para label
lw lw regd, num (reg) regd ← mem[reg + num]
Mini-CursoWSCAD 2005
Modelando usando ArchC
Característica Funcional Precisão de Ciclos
Conjunto de Instruções Sim Sim
Temporização Pouca Sim
Estrutura Pouca Sim
Desempenho da Simulação Alto Baixo
Mini-CursoWSCAD 2005
Modelagem Funcional
PC
Instructionmemory
Readaddress
Instruction
16 32
Add ALUresult
Mux
Registers
WriteregisterWritedata
Readdata 1
Readdata 2
Readregister 1Readregister 2
Shiftleft 2
4
Mux
ALU operation3
RegWrite
MemRead
MemWrite
PCSrc
ALUSrcMemtoReg
ALUresult
ZeroALU
Datamemory
Address
Writedata
Readdata M
ux
Signextend
Add
Detalhes estruturais abstraídos → monociclo
Mini-CursoWSCAD 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)
Mini-CursoWSCAD 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
Mini-CursoWSCAD 2005
Formatos de Instrução
Manual - MIPS-I
Linguagem ArchC
op056101115162021252631
6 bits5 bits5 bits5 bits5 bits6 bits
rs rt rd shamt funct R-Type (Register)
op015162021252631
16 bits5 bits5 bits6 bits
rs rt immediate I-Type (Immediate)
ac_format Type_R ="%op:6 %rs:5 %rt:5 %rd:5 %shamt:5 %funct:6";
ac_format Type_I = "%op:6 %rs:5 %rt:5 %imm:16:s";
Mini-CursoWSCAD 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<Type_R> add, mul; ac_instr<Type_I> 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
Mini-CursoWSCAD 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
Mini-CursoWSCAD 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.
Mini-CursoWSCAD 2005
Hierarquia de Comportamentos
Instrução (Genérico)
Type_R Type_J
j
Type_I
lw, sw, addiadd, sub, mul
Exec
ução
Executado para todas as
instruçõesExecutado todas as instruções do tipo J
Mini-CursoWSCAD 2005
Descrevendo Comportamentos
void ac_behavior( instruction ){
ac_pc = ac_pc + 4;
}
void ac_behavior( add ){
RB[rd] = RB[rs] + RB[rt];
}
Mini-CursoWSCAD 2005
Exemplo 1
SUB-MIPS executando o programa Fatorial
Mini-CursoWSCAD 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
Mini-CursoWSCAD 2005
Especialização do ISA
SUB-MIPS executando o programa produto interno
Mini-CursoWSCAD 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)
Mini-CursoWSCAD 2005
Programa Produto Internomain: # 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 .dataa: .word 2, 3, 4b: .word 5, 6, 7n: .word 3
Mini-CursoWSCAD 2005
Programa Produto Interno Modificadomain: # 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 .dataa: .word 2, 3, 4b: .word 5, 6, 7n: .word 3
Mini-CursoWSCAD 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<Type_R> add, mul, mac; ac_instr<Type_I> 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
Inclusão da instrução
MAC
Mini-CursoWSCAD 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
Mini-CursoWSCAD 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
Mini-CursoWSCAD 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
Mini-CursoWSCAD 2005
Modelagem com Precisão de Ciclos
PC Instructionmemory
Registers
Mux
Mux
Mux
Control
ALU
EX
M
WB
M
WB
WB
ID/EX
EX/MEM
MEM/WB
Datamemory
Mux
Hazarddetection
unit
Forwardingunit
0
Mux
IF/ID
Instr
uctio
n
ID/EX.MemRead
IF/ID
Writ
e
PCW
rite
ID/EX.RegisterRt
IF/ID.RegisterRdIF/ID.RegisterRtIF/ID.RegisterRtIF/ID.RegisterRs
RtRs
RdRt EX/MEM.RegisterRd
MEM/WB.RegisterRd
Mini-CursoWSCAD 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<Fmt_EX_MEM> EX_MEM; ... ac_wordsize 32;
ARCH_CTOR(submips) { ac_isa(“submips_isa.ac");
set_endian("big"); };};
Mini-CursoWSCAD 2005
Descrição do Comportamentovoid 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 comportamentopara a estrutura de pipeline definida
Mini-CursoWSCAD 2005
Exemplo de Comportamentovoid 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; }}
Mini-CursoWSCAD 2005
Ferramentas de ArchC
Mini-CursoWSCAD 2005
Infra-estrutura de geração de ferramentas
Ferramentas Geradoras
Descrição do Modelo(ArchC)
Pré-processador(acpp)
GeradorSimulador
(acsim, accsim)
RepresentaçãoIntermediária
(Memória)
GeradorMontador(acasm)
GeradorBackend deCompilador
Geradorde Linkeditor
Mini-CursoWSCAD 2005
Simulação Interpretada
• Busca, Decodificação e execução dinâmicas
• Flexível
• Simuladores gerados são escritos em SystemC
Mini-CursoWSCAD 2005
Simulador Interpretado (acsim)
Mini-CursoWSCAD 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
Mini-CursoWSCAD 2005
Simulador Compilado (accsim)
Mini-CursoWSCAD 2005
Experimentos (Compiled-simulator)
MIPS MIPS
Mini-CursoWSCAD 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
Mini-CursoWSCAD 2005
Geração de Montadores (acasm)
RepresentaçãoIntermediária
ArchC
Gerador de Montador(acasm)
Arquivos GNU Binutils(dependentes de máquina)
Processo decompilação
Arquivos GNU Binutils(independentes de máquina)
Montador Executável
Mini-CursoWSCAD 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
Mini-CursoWSCAD 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;}...
Mini-CursoWSCAD 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
Mini-CursoWSCAD 2005
Verificação de Modelos
Mini-CursoWSCAD 2005
Rodmap para Modelos ArchCVersion Development Stage Benchmark
0.0.X Writing AC_ISA/AC_ARCH
0.1.0 AC_ARCH/AC_ISA decl finished
0.2.0 Instruction behavior descrp. finished
0.3.0 AC_ARCH/AC_ISA finished (AC_STONE) ArchC test suite
0.4.0 ABI implemented
0.5.0 Model description completed Mediabench
0.6.0 Testing ... Mibench (small)
0.7.0 Testing ... Mibench (large)
1.0.0 Final Test SPEC 2000
Mini-CursoWSCAD 2005
Modelos ArchC
Architecture Version Abstraction Level
MIPS-I 0.7.4 FunctionalSPARC-V8 0.7.4 FunctionalARM 0.6.9 FunctionalR3000 0.7.0 Cycle-accuratePowerPC 0.7.0 FunctionalIntel 8051 0.3.2 FunctionalIntel 8051 0.3.2 Cycle-accurateHitachi SH-4 0.3.2 Functional
Mini-CursoWSCAD 2005
Modelos ArchC
Architecture Version Abstraction Level
Altera Nios 0.3.8 Functional
Motorola ColdFire 0.3.9 Functional
PIC 16F84 0.3.0 Cycle-accurate
PIC 16F84 0.3.0 Functional
Opencore OR1K 0.3.5 Functional
LEON 0.2.5 Cycle-accurate
TMS320C62x 0.1.5 Functional
Mini-CursoWSCAD 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;
Mini-CursoWSCAD 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;
Mini-CursoWSCAD 2005
Internet
www.archc.org
Documentação, download, bug report, Documentação, download, bug report, forum de discussãoforum de discussão
Mini-CursoWSCAD 2005
Version 2.0Enabling Platform Design
Mini-CursoWSCAD 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;
Mini-CursoWSCAD 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!
Mini-CursoWSCAD 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
Mini-CursoWSCAD 2005
Objetivo
Processador 1
(ArchC)
Memória Módulo SystemC
Processador 2
(ArchC)
Memória
Barramento
Mini-CursoWSCAD 2005
Exemplo 1
ARM MPEG4USBMP3
• Bus-based (P1)– ARM processor and Ethernet– AMBA bus– Enable BCA and CA
AMBA
Ethernet USB
Mini-CursoWSCAD 2005
Exemplo 2
ARM MPEG4
USB
MP3
• NoC-based (P2) – ARM Processor – OCP conexions– Enable BCA and CA
BUFFER BUFFER
Ethernet
USB
Mini-CursoWSCAD 2005
Modelando um SistemaArchC Model (Proc)
Simulator generator
libproc.a, proc.H SoC SystemC Model (socmod.H)