construção de modelos de processadores usando uma linguagem de descrição de arquiteturas

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: carter

Post on 11-Jan-2016

31 views

Category:

Documents


0 download

DESCRIPTION

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. Roteiro. Introdução O que é uma ADL Características de ArchC - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Construção de Modelos de Processadores Usando Uma Linguagem de Descrição de Arquiteturas

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: Construção de Modelos de Processadores Usando Uma Linguagem de Descrição de Arquiteturas

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: Construção de Modelos de Processadores Usando Uma Linguagem de Descrição de Arquiteturas

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: Construção de Modelos de Processadores Usando Uma Linguagem de Descrição de Arquiteturas

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: Construção de Modelos de Processadores Usando Uma Linguagem de Descrição de Arquiteturas

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: Construção de Modelos de Processadores Usando Uma Linguagem de Descrição de Arquiteturas

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: Construção de Modelos de Processadores Usando Uma Linguagem de Descrição de Arquiteturas

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: Construção de Modelos de Processadores Usando Uma Linguagem de Descrição de Arquiteturas

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: Construção de Modelos de Processadores Usando Uma Linguagem de Descrição de Arquiteturas

Mini-CursoWSCAD 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çãodas instruções

Descrição do comportamento das instruções(C++/SystemC)

. Registradores

. Memória

. Estrutura de Pipeline

Page 10: Construção de Modelos de Processadores Usando Uma Linguagem de Descrição de Arquiteturas

Mini-CursoWSCAD 2005

Construção do Modelo SUB-MIPS

Page 11: Construção de Modelos de Processadores Usando Uma Linguagem de Descrição de Arquiteturas

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, labelse reg1 ≠ reg2 salte para label

lw lw regd, num (reg)regd ← mem[reg + num]

Page 12: Construção de Modelos de Processadores Usando Uma Linguagem de Descrição de Arquiteturas

Mini-CursoWSCAD 2005

Modelando usando ArchC

Característica FuncionalPrecisão de

CiclosConjunto de Instruções

Sim Sim

Temporização Pouca Sim

Estrutura Pouca Sim

Desempenho da Simulação

Alto Baixo

Page 13: Construção de Modelos de Processadores Usando Uma Linguagem de Descrição de Arquiteturas

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

ALUSrc

MemtoReg

ALUresult

ZeroALU

Datamemory

Address

Writedata

Readdata M

ux

Signextend

Add

Detalhes estruturais abstraídos → monociclo

Page 14: Construção de Modelos de Processadores Usando Uma Linguagem de Descrição de Arquiteturas

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: Construção de Modelos de Processadores Usando Uma Linguagem de Descrição de Arquiteturas

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: Construção de Modelos de Processadores Usando Uma Linguagem de Descrição de Arquiteturas

Mini-CursoWSCAD 2005

Formatos de Instrução

Manual - MIPS-I

Linguagem ArchC

op

056101115162021252631

6 bits5 bits5 bits5 bits5 bits6 bits

rs rt rd shamt funct R-Type (Register)

op

015162021252631

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: Construção de Modelos de Processadores Usando Uma Linguagem de Descrição de Arquiteturas

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: Construção de Modelos de Processadores Usando Uma Linguagem de Descrição de Arquiteturas

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: Construção de Modelos de Processadores Usando Uma Linguagem de Descrição de Arquiteturas

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: Construção de Modelos de Processadores Usando Uma Linguagem de Descrição de Arquiteturas

Mini-CursoWSCAD 2005

Hierarquia de Comportamentos

Instrução (Genérico)

Type_R Type_J

j

Type_I

lw, sw, addiadd, sub, mul

Exe

cuçã

oExecutado para

todas as instruções

Executado todas as instruções do tipo J

Page 21: Construção de Modelos de Processadores Usando Uma Linguagem de Descrição de Arquiteturas

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: Construção de Modelos de Processadores Usando Uma Linguagem de Descrição de Arquiteturas

Mini-CursoWSCAD 2005

Exemplo 1

SUB-MIPS executando o programa Fatorial

Page 23: Construção de Modelos de Processadores Usando Uma Linguagem de Descrição de Arquiteturas

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: Construção de Modelos de Processadores Usando Uma Linguagem de Descrição de Arquiteturas

Mini-CursoWSCAD 2005

Especialização do ISA

SUB-MIPS executando o programa produto interno

Page 25: Construção de Modelos de Processadores Usando Uma Linguagem de Descrição de Arquiteturas

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: Construção de Modelos de Processadores Usando Uma Linguagem de Descrição de Arquiteturas

Mini-CursoWSCAD 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 .dataa: .word 2, 3, 4b: .word 5, 6, 7n: .word 3

Page 27: Construção de Modelos de Processadores Usando Uma Linguagem de Descrição de Arquiteturas

Mini-CursoWSCAD 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 .dataa: .word 2, 3, 4b: .word 5, 6, 7n: .word 3

Page 28: Construção de Modelos de Processadores Usando Uma Linguagem de Descrição de Arquiteturas

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: Construção de Modelos de Processadores Usando Uma Linguagem de Descrição de Arquiteturas

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: Construção de Modelos de Processadores Usando Uma Linguagem de Descrição de Arquiteturas

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: Construção de Modelos de Processadores Usando Uma Linguagem de Descrição de Arquiteturas

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: Construção de Modelos de Processadores Usando Uma Linguagem de Descrição de Arquiteturas

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

Inst

ruct

ion

ID/EX.MemRead

IF/ID

Wr it

e

P CW

r ite

ID/EX.RegisterRt

IF/ID.RegisterRdIF/ID.RegisterRtIF/ID.RegisterRtIF/ID.RegisterRs

RtRs

Rd

Rt EX/MEM.RegisterRd

MEM/WB.RegisterRd

Page 33: Construção de Modelos de Processadores Usando Uma Linguagem de Descrição de Arquiteturas

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: Construção de Modelos de Processadores Usando Uma Linguagem de Descrição de Arquiteturas

Mini-CursoWSCAD 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 comportamentopara a estrutura de pipeline definida

Page 35: Construção de Modelos de Processadores Usando Uma Linguagem de Descrição de Arquiteturas

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

Page 36: Construção de Modelos de Processadores Usando Uma Linguagem de Descrição de Arquiteturas

Mini-CursoWSCAD 2005

Ferramentas de ArchC

Page 37: Construção de Modelos de Processadores Usando Uma Linguagem de Descrição de Arquiteturas

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: Construção de Modelos de Processadores Usando Uma Linguagem de Descrição de Arquiteturas

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: Construção de Modelos de Processadores Usando Uma Linguagem de Descrição de Arquiteturas

Mini-CursoWSCAD 2005

Simulador Interpretado (acsim)

Page 40: Construção de Modelos de Processadores Usando Uma Linguagem de Descrição de Arquiteturas

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: Construção de Modelos de Processadores Usando Uma Linguagem de Descrição de Arquiteturas

Mini-CursoWSCAD 2005

Simulador Compilado (accsim)

Page 42: Construção de Modelos de Processadores Usando Uma Linguagem de Descrição de Arquiteturas

Mini-CursoWSCAD 2005

Experimentos (Compiled-simulator)

MIPS MIPS

Page 43: Construção de Modelos de Processadores Usando Uma Linguagem de Descrição de Arquiteturas

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: Construção de Modelos de Processadores Usando Uma Linguagem de Descrição de Arquiteturas

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: Construção de Modelos de Processadores Usando Uma Linguagem de Descrição de Arquiteturas

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: Construção de Modelos de Processadores Usando Uma Linguagem de Descrição de Arquiteturas

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: Construção de Modelos de Processadores Usando Uma Linguagem de Descrição de Arquiteturas

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: Construção de Modelos de Processadores Usando Uma Linguagem de Descrição de Arquiteturas

Mini-CursoWSCAD 2005

Verificação de Modelos

Page 49: Construção de Modelos de Processadores Usando Uma Linguagem de Descrição de Arquiteturas

Mini-CursoWSCAD 2005

Rodmap para Modelos ArchC

Version Development Stage Benchmark

0.0.X Writing AC_ISA/AC_ARCH

0.1.0AC_ARCH/AC_ISA decl

finished

0.2.0Instruction 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: Construção de Modelos de Processadores Usando Uma Linguagem de Descrição de Arquiteturas

Mini-CursoWSCAD 2005

Modelos ArchC

Architecture Version Abstraction Level

MIPS-I 0.7.4 Functional

SPARC-V8 0.7.4 Functional

ARM 0.6.9 Functional

R3000 0.7.0 Cycle-accurate

PowerPC 0.7.0 Functional

Intel 8051 0.3.2 Functional

Intel 8051 0.3.2 Cycle-accurate

Hitachi SH-4 0.3.2 Functional

Page 51: Construção de Modelos de Processadores Usando Uma Linguagem de Descrição de Arquiteturas

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: Construção de Modelos de Processadores Usando Uma Linguagem de Descrição de Arquiteturas

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: Construção de Modelos de Processadores Usando Uma Linguagem de Descrição de Arquiteturas

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: Construção de Modelos de Processadores Usando Uma Linguagem de Descrição de Arquiteturas

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: Construção de Modelos de Processadores Usando Uma Linguagem de Descrição de Arquiteturas

Mini-CursoWSCAD 2005

Version 2.0Enabling Platform Design

Page 56: Construção de Modelos de Processadores Usando Uma Linguagem de Descrição de Arquiteturas

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: Construção de Modelos de Processadores Usando Uma Linguagem de Descrição de Arquiteturas

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: Construção de Modelos de Processadores Usando Uma Linguagem de Descrição de Arquiteturas

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: Construção de Modelos de Processadores Usando Uma Linguagem de Descrição de Arquiteturas

Mini-CursoWSCAD 2005

Objetivo

Processador 1

(ArchC)

Memória Módulo SystemC

Processador 2

(ArchC)

Memória

Barramento

Page 60: Construção de Modelos de Processadores Usando Uma Linguagem de Descrição de Arquiteturas

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: Construção de Modelos de Processadores Usando Uma Linguagem de Descrição de Arquiteturas

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: Construção de Modelos de Processadores Usando Uma Linguagem de Descrição de Arquiteturas

Mini-CursoWSCAD 2005

Modelando um Sistema

ArchC Model (Proc)

Simulator generator

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