mini-curso wscad 2005 construção de modelos de processadores usando uma linguagem de descrição...

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

Upload: bruna-da-ponte

Post on 07-Apr-2016

215 views

Category:

Documents


2 download

TRANSCRIPT

Page 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,

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Mini-CursoWSCAD 2005

Construção do Modelo SUB-MIPS

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

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]

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

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

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

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

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

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)

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

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

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

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";

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

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

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

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

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

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.

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

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

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

Mini-CursoWSCAD 2005

Descrevendo Comportamentos

void ac_behavior( instruction ){

ac_pc = ac_pc + 4;

}

void ac_behavior( add ){

RB[rd] = RB[rs] + RB[rt];

}

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

Mini-CursoWSCAD 2005

Exemplo 1

SUB-MIPS executando o programa Fatorial

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

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

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

Mini-CursoWSCAD 2005

Especialização do ISA

SUB-MIPS executando o programa produto interno

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

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)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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"); };};

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

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

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

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; }}

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

Mini-CursoWSCAD 2005

Ferramentas de ArchC

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

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

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

Mini-CursoWSCAD 2005

Simulação Interpretada

• Busca, Decodificação e execução dinâmicas

• Flexível

• Simuladores gerados são escritos em SystemC

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

Mini-CursoWSCAD 2005

Simulador Interpretado (acsim)

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

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

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

Mini-CursoWSCAD 2005

Simulador Compilado (accsim)

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

Mini-CursoWSCAD 2005

Experimentos (Compiled-simulator)

MIPS MIPS

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

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

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

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

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

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

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

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;}...

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

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

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

Mini-CursoWSCAD 2005

Verificação de Modelos

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

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

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

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

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

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

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

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;

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

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;

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

Mini-CursoWSCAD 2005

Internet

www.archc.org

Documentação, download, bug report, Documentação, download, bug report, forum de discussãoforum de discussão

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

Mini-CursoWSCAD 2005

Version 2.0Enabling Platform Design

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

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;

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

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!

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

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

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

Mini-CursoWSCAD 2005

Objetivo

Processador 1

(ArchC)

Memória Módulo SystemC

Processador 2

(ArchC)

Memória

Barramento

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

Mini-CursoWSCAD 2005

Exemplo 1

ARM MPEG4USBMP3

• Bus-based (P1)– ARM processor and Ethernet– AMBA bus– Enable BCA and CA

AMBA

Ethernet USB

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

Mini-CursoWSCAD 2005

Exemplo 2

ARM MPEG4

USB

MP3

• NoC-based (P2) – ARM Processor – OCP conexions– Enable BCA and CA

BUFFER BUFFER

Ethernet

USB

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

Mini-CursoWSCAD 2005

Modelando um SistemaArchC Model (Proc)

Simulator generator

libproc.a, proc.H SoC SystemC Model (socmod.H)