Esse exercício vai ser dividido em duas partes e, ao final delas, vocês devem ser capazes de:
Atenção: Todos os arquivos que você precisa para essa atividade estão disponíveis em /home/staff/rodolfo/mc723/download.
mips-elf-gcc programa.c -o programa -specs=archc
Baixe o modelo do processador MIPS para o ArchC 2.0 beta1 disponível na página do ArchC (atenção, baixe a versão específica para o ArchC 2.0 beta1). Baixe também o modelo SPARC e recompile seu programa para executar no SPARC. Faça o mesmo para o PowerPC. Sugestão: crie executáveis diferentes, um para cada processador, com nomes diferentes. Obs.: Qualquer programa pode ser um programa simples.
Utilize as ferramentas de depuração com seu processador (gdb) para executar o código. Por último, verifique a organização dos executáveis (endereços de memória do código) com o utilitário objdump (existe uma versão específica para cada processador, mips-elf-objdump, sparc-elf-objdump e powerpc-elf-objdump). O foco nesse momento é a familiarização com as ferramentas disponíveis.
Existem vários níveis de modelagem em SystemC. Um dos mais altos é o TLM (veja manual do TLM 1.0 no site do SystemC ou no meu homedir do IC3), que iremos utilizar nesse exercício. Uma definição bem simplória de TLM significa que tudo o que é feito no circuito é feito através de chamadas de funções, ao contrário das linguagens de descrição de hardware convencionais que utilizam sinais para passagem de dados entre os componentes.
Acima de SystemC, será
utilizada a linguagem ArchC,
que foi desenvolvida para
descrever processadores. O objetivo do uso de ArchC nessa fase é apenas
gerar processadores para serem usados nos simuladores. Não será dada
ênfase, no momento, às construções da linguagem. Existem modelos dos
processadores MIPS e SPARC em ArchC já prontos para serem usados. Para
trabalhar nesse exercício, uma versão mais nova de ArchC que
a disponível no site será utilizada. Existe um arquivo chamado archc-svn-src.tgz
no meu homedir para quem quiser instalar fora do IC.
Consulte todos os manuais acima para tirar dúvidas. Também existe um tutorial SystemC + TLM + ArchC no meu diretório da disciplina. O tutorial está numa versão preliminar. Por favor, não coloquem online.
Para gerenciar tudo isso acima, existe o utilitário ARP que, junto com uma hierarquia de diretórios, permite que sejam criadas plataformas (= conjunto de componentes de hardware + processador + software). O uso do ARP é o foco desse exercício. Todas as atividades serão feitas sobre ele. Para instala-lo, basta descompactar o arquivo arp-base.tgz e seguir as instruções dos arquivos INSTALL e README. Obs.: Você deve instalar o ARP em algum lugar onde tenha permissões de escrita, já SystemC, ArchC e TLM podem ser usados diretamente do meu homedir.
Uma das facilidades do ARP é
poder empacotar e desempacotar
componentes e plataformas. Para isso, existem os parâmetros --pack
e --unpack,
respectivamente. A versão
padrão do ARP vem apenas com utilitários de trabalho. A primeira
atividade é
descompactar o exemplo helloworld_mips.01.arp.pack.
Antes de executar, edite o arquivo Makefile do diretório raiz do ARP e
defina corretamente as variáveis de ambiente para os locais onde foram
instalados SystemC, TLM e ArchC (você pode usar as versões que estão
instaladas em /home/staff/rodolfo/mc723/...).
Defina também o nome da plataforma que será simulada (helloworld_mips.01)
./arp --unpack /home/staff/rodolfo/mc723/download/helloworld_mips.01.arp.pack
make
make run-bin
Se o arquivo Makefile foi configurado corretamente conforme as instruções do README e INSTALL, o exemplo deve escrever uma mensagem na tela após compilar todos os componentes.
Sua atividade é utilizar o
processador SPARCv8 para fazer exatamente
a mesma tarefa da Parte 2. O pacote sparcv8-archc2x-branch.arp.pack
está no meu homedir com o processador (somente o processador, sem o
hello.c). Crie uma outra plataforma usando o processador SPARC no lugar
do MIPS. Para trocar o processador, você deverá editar o arquivo defs.arp para trocar MIPS por SPARC
e alterar o main.cpp para
trocar também MIPS por SPARC. Isso fará a alteração da plataforma. Para
alterar o software, replique também o diretório do software e altere o
compilador que está sendo usado (de MIPS para SPARC).
Após executar o mesmo hello world, troque o programa por um outro (criando outro diretório no diretório software). Crie e execute o programa que desejar.
Por último, altere o módulo de memória para exibir informações de acesso na tela. Todas as tentativas de acesso devem ser computadas (leituras e escritas) e ela deve escrever uma mensagem a cada 100 ou 1000 acessos. Para fazer isso, copie o diretório do módulo da memória com outro nome e faça suas modificações nesse novo diretório.