Constru - PowerPoint PPT Presentation

About This Presentation
Title:

Constru

Description:

Title: Code Generation Algorithms for Digital Signal Processors Author: Guido Araujo Last modified by: Acer Created Date: 4/30/1997 1:59:27 AM Document presentation ... – PowerPoint PPT presentation

Number of Views:78
Avg rating:3.0/5.0
Slides: 63
Provided by: Guid64
Category:
Tags: altera | constru | nios

less

Transcript and Presenter's Notes

Title: Constru


1
Construçã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
2
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
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
Hardware / Software Codesign
5
Desenvolvimento do Software
6
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
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
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
Elementos da linguagem ArchC
10
Construção do Modelo SUB-MIPS
11
Instruçõ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
12
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
13
Modelagem Funcional
Detalhes estruturais abstraídos ? monociclo
14
Modelagem 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)
15
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
Formatos 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"
17
Declaraçã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
18
Descrição do Comportamento
Acesso a dispositivo de armazenamento
Acesso a campo de instrução
void ac_behavior( add ) RBrd RBrs
RBrt
19
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
Hierarquia 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
21
Descrevendo Comportamentos
void ac_behavior( instruction ) ac_pc ac_pc
4
22
Exemplo 1
  • SUB-MIPS executando o programa Fatorial

23
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
Especialização do ISA
  • SUB-MIPS executando o programa produto interno

25
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
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

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

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
Declaraçã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
29
Descrevendo 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
30
Simulaçã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
31
Declaraçã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 )
32
Modelagem com Precisão de Ciclos
33
Recursos 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")

34
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
As ações devem ser descritas para cada estágio
do pipeline
Esboço de todo comportamento para a estrutura de
pipeline definida
35
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
Ferramentas de ArchC
37
Infra-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
38
Simulação Interpretada
  • Busca, Decodificação e execução dinâmicas
  • Flexível
  • Simuladores gerados são escritos em SystemC

39
Simulador Interpretado (acsim)
40
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
Simulador Compilado (accsim)
42
Experimentos (Compiled-simulator)
MIPS
MIPS
43
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
Geraçã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
45
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
Interface 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 ...
47
Ferramentas em ArchC
  • Emulação de Sistema Operacional
  • Chamada de sitema open, close, fstat, etc
  • Linux Newlib

48
Verificação de Modelos
49
Rodmap 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
50
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
51
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
52
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
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
Internet
  • www.archc.org
  • Documentação, download, bug report, forum de
    discussão

55
Version 2.0 Enabling Platform Design
56
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
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
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
Objetivo
Processador 1 (ArchC)
Memória
Módulo SystemC
Barramento
Processador 2 (ArchC)
Memória
60
Exemplo 1
  • Bus-based (P1)
  • ARM processor and Ethernet
  • AMBA bus
  • Enable BCA and CA

Ethernet
USB
MP3
ARM
MPEG4
USB
AMBA
61
Exemplo 2
  • NoC-based (P2)
  • ARM Processor
  • OCP conexions
  • Enable BCA and CA

USB
BUFFER
USB
BUFFER
MP3
ARM
MPEG4
Ethernet
62
Modelando um Sistema
Write a Comment
User Comments (0)
About PowerShow.com