Title: Constru
1Construção de Modelos de Processadores Usando Uma
Linguagem de Descrição de Arquiteturas
Sandro Rigo, Rodolfo Azevedo, Guido Araujo, Paulo
Centoducatte Computer Systems Laboratoryhttp//ww
w.lsc.ic.unicamp.br IC-UNICAMP
2Roteiro
- 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
3Introduçã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
4Hardware / Software Codesign
5Desenvolvimento do Software
6Linguagens 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
7SystemC
- É 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
8ArchC
- 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
9Elementos da linguagem ArchC
10Construção do Modelo SUB-MIPS
11Instruções do SUB-MIPS
Nome Sintaxe Operação
addi addi regd, reg, num regd ? regnum
add add regd, reg, reg regd ? regreg
mul mul regd, reg, reg regd ? regreg
bne bne reg, reg, label se reg1 ? reg2 salte para label
lw lw regd, num (reg) regd ? memreg num
12Modelando 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
13Modelagem Funcional
Detalhes estruturais abstraídos ? monociclo
14Modelagem Funcional
Recursos da Arquitetura (AC_ARCH)
AC_ARCH(submips) ac_mem MEM64K
ac_regbank RB32 ac_wordsize 32
ARCH_CTOR(submips) ac_isa(submips_isa.ac")
set_endian(big)
15Definiçã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
16Formatos de Instrução
0
5
6
10
11
15
16
20
21
25
26
31
op
rs
rt
rd
shamt
funct
R-Type (Register)
6 bits
5 bits
5 bits
5 bits
5 bits
6 bits
ac_format
Type_R
"op6 rs5 rt5 rd5 shamt5 funct6
"
0
15
16
20
21
25
26
31
op
rs
rt
immediate
I-Type (Immediate)
16 bits
5 bits
5 bits
6 bits
ac_format
Type_I "op6 rs5 rt5 imm16s"
17Declaração de Instruções
AC_ISA(submips) ac_format Type_R "op6
rs5 rt5 rd5 0x005 func6" ac_format
Type_I "op6 rs5 rt5 imm16"
ac_instrltType_Rgt add, mul ac_instrltType_Igt lw,
bne, addi ISA_CTOR(submips)
add.set_asm("add reg, reg, reg, rd,rs,rt)
add.set_decoder(op0x00, func0x20)
lw.set_asm("lw reg, imm(reg), rt,imm,rs)
lw.set_decoder(op0x23) ...
Declaração de instruções
Seqüência de decodificação
18Descrição do Comportamento
Acesso a dispositivo de armazenamento
Acesso a campo de instrução
void ac_behavior( add ) RBrd RBrs
RBrt
19Hierarquia 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.
20Hierarquia de Comportamentos
Executado para todas as instruções
Executado todas as instruções do tipo J
Instrução (Genérico)
Type_R
Type_J
Type_I
j
lw, sw, addi
add, sub, mul
21Descrevendo Comportamentos
void ac_behavior( instruction ) ac_pc ac_pc
4
22Exemplo 1
- SUB-MIPS executando o programa Fatorial
23Programa 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
24Especialização do ISA
- SUB-MIPS executando o programa produto interno
25Especializaçã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)
26Programa 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
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
27Programa 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
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
28Declaração de Instruções
AC_ISA(submips) ac_format Type_R "op6
rs5 rt5 rd5 0x005 func6" ac_format
Type_I "op6 rs5 rt5 imm16"
ac_instrltType_Rgt add, mul, mac ac_instrltType_Igt
lw, bne, addi ISA_CTOR(submips)
add.set_asm("add reg, reg, reg, rd,rs,rt)
add.set_decoder(op0x00, func0x20)
mac.set_asm("mac reg, reg, reg", rd, rs, rt)
mac.set_decoder(op0x00, func0x30) ...
Inclusão da instrução MAC
Inclusão da instrução MAC
29Descrevendo Comportamentos
... //!Instruction mul behavior method. void
ac_behavior( mul ) RBrd RBrs RBrt
//!Instruction mac behavior method. void
ac_behavior( mac ) RBrd RBrs RBrt
...
Inclusão da instrução MAC
30Simulação de Hierarquia de Memória
Configuração da Hierarquia de Memória
Aplicação
Processador (SUB-MIPS)
Arquitetura do Sistema
Desempenho da Cache
Memória
31Declaração de Hierarquia de Memória
AC_ARCH(submips) ac_mem MEM64K
ac_icache IC("dm", 32, 4, "wb", "wal")
ac_dcache DM("2w", 64, 2,"lru", "wt", "war")
ac_regbank RB32 ac_wordsize 32
ARCH_CTOR(submips) ac_isa(submips_isa.ac")
set_endian(big) IC.bindsTo( MEM )
DM.bindsTo( MEM )
32Modelagem com Precisão de Ciclos
33Recursos da Arquitetura (AC_ARCH)
AC_ARCH(submips) ac_mem MEM64K
ac_regbank RB32 ac_pipe PIPE
IF,ID,EX,MEM,WB ac_format Fmt_EX_MEM
"alures32 wdata32 rdest5
regwrite1 memread1 memwrite1"
ac_regltFmt_EX_MEMgt EX_MEM ...
ac_wordsize 32 ARCH_CTOR(submips)
ac_isa(submips_isa.ac") set_endian("big")
34Descrição do Comportamento
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
35Exemplo 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
36Ferramentas de ArchC
37Infra-estrutura de geração de ferramentas
Descrição do Modelo
(ArchC)
Pré-processador
(acpp)
Representação
Intermediária
(Memória)
Gerador
Gerador
Gerador
Gerador
Simulador
Montador
Backend
de
de Linkeditor
(acsim, accsim)
(acasm)
Compilador
Ferramentas Geradoras
38Simulação Interpretada
- Busca, Decodificação e execução dinâmicas
- Flexível
- Simuladores gerados são escritos em SystemC
39Simulador Interpretado (acsim)
40Simulaçã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
41Simulador Compilado (accsim)
42Experimentos (Compiled-simulator)
MIPS
MIPS
43Geraçã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
44Geração de Montadores (acasm)
Representação
Intermediária
ArchC
Arquivos GNU Binutils
Gerador de Montador
(independentes de máquina)
(acasm)
Arquivos GNU Binutils
Processo de
(dependentes de máquina)
compilação
Montador Executável
45Interface 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
46Interface Gnu GDB
ac_word submipsreg_read( int reg ) /
general purpose registers / if ( ( reg gt 0 )
( reg lt 32 ) ) return RB.read( reg ) /
pc / else if ( reg 37 ) return ac_pc
return 0 ...
47Ferramentas em ArchC
- Emulação de Sistema Operacional
- Chamada de sitema open, close, fstat, etc
- Linux Newlib
48Verificação de Modelos
49Rodmap para Modelos ArchC
Version 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
50Modelos 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
51Modelos 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
52Pessoas Envolvidas
- UNICAMP
- Professores 4
- Alunos 2 PhD, 3 MSc, 3 IC
- ArchC 2.0
- Simulação Compilada
- Modelos
- Tool chain assembler, linker, gdb, etc
53Pessoas 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
54Internet
- www.archc.org
- Documentação, download, bug report, forum de
discussão
55Version 2.0 Enabling Platform Design
56Objetivos
- 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
57Reestruturaçã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!
58Integraçã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
59Objetivo
Processador 1 (ArchC)
Memória
Módulo SystemC
Barramento
Processador 2 (ArchC)
Memória
60Exemplo 1
- Bus-based (P1)
- ARM processor and Ethernet
- AMBA bus
- Enable BCA and CA
Ethernet
USB
MP3
ARM
MPEG4
USB
AMBA
61Exemplo 2
- NoC-based (P2)
- ARM Processor
- OCP conexions
- Enable BCA and CA
USB
BUFFER
USB
BUFFER
MP3
ARM
MPEG4
Ethernet
62Modelando um Sistema