O que é?
ArchC é uma linguagem para
descrição de arquiteturas de
processadores baseada na linguagem
SystemC. Com ArchC é possível
descrever processadores tanto na forma comportamental (apenas
indicando o que cada instrução faz) quanto com precisão de ciclos
(indicando o que cada instrução faz em cada ciclo do
pipeline). Com base nessa descrição, as
ferramentas da linguagem são capazes de gerar simuladores para os
processadores.
O que está sendo feito atualmente?
No momento estamos trabalhando nos seguintes itens
relacionados ao ArchC:
- Síntese de processadores modelados em ArchC:
Técnicas para converter os modelos gerados em ArchC em circuitos
aceitos por ferramentras tradicionais de síntese para FPGA e ASIC;
- Otimização do decodificador de instruções: Técnicas para gerar, estaticamente, decodificadores de instruções para os simuladores gerados em ArchC.
- Exploração de paralelismo em simuladores: Técnicas para tirar proveito do fato dos processadores poderem executar diversas instruções em paralelo.
O que já foi feito?
Os
temas abaixo já foram abordados por alunos meus. Alguns deles têm
continuação, se tiver interesse, procure-me para conversarmos:
- Simulação Compilada: Técnica que permite a geração de um
simulador muito mais rápido que o convencional (entre 100x e 1000x
mais rápido). Os simuladores ainda podem ser mais rápidos, se quiser trabalhar com isto, procure-me;
- Modelagem de Múltiplos Processadores:
Suporte em ArchC ao uso de mais de um processador e também ao
mapeamento de software entre eles;
- Suporte a Processadores Super-escalares:
Inclusão de primitivas na linguagem e nos simuladores para dar
suporte a modelos de processadores super-escalares;
- Emulação de Windows CE: Emulação da camada
de sistema operacional para Windows CE (já existe a mesma emulação
para Linux);
- Descrição de Novos Modelos: Tenho alunos
descrevendo os processadores Intel XScale e IBM/Motorola PowerPC
405;
- Desenvolvimento de Módulos para Conexão com Modelos
ArchC: O primeiro módulo será um pequeno display emulado
em software que poderá ser conectado ao ArchC para visualização
dos dados gerados pelos programas que estão sendo simulados;
- Desenvolvimento de Barramentos para Interligação com
Modelos ArchC: O primeiro barramento é o AMBA, a
motivação é permitir que módulos desenvolvidos em SystemC possam
ser integrados facilmente aos processadores;
- ACStone: É um benchmark para verificação de
modelos nos estágios iniciais de desenvolvimento;
- Estimativa de Consumo de Energia: Técnicas e infraestrutura para estimar o consumo de energia de programas executados sobre simuladores gerados em ArchC.