Pontifical Catholic University of Rio Grande do Sul Porto Alegre, Brazil
Pontifical Catholic University of Rio Grande do SulPorto Alegre, Brazil
Tutorial HeMPS
2
Carregar o módulo HeMPS 5.2◦# module load hemps/5.2
Esse comando irá carregar os seguintess módulos:◦SystemC 2.2◦Xilinx 13.2◦Modelsim 10.3a◦MIPS Cross Compiler v1◦HeMPS 5.2
Tutorial HeMPS
3
function hempslocaldist){ source /soft64/Modules/3.2.8/init/bash source /soft64/source_gaph
export JAVA_HOME=/usr/java7/bin export HEMPS_PATH=/home/gcastilhos/hemps5.0/tag/5.0 export PATH=$PATH:$HEMPS_PATH/bin module load ise mips systemc module load modelsim }
Tutorial HeMPS
4
Deve-se criar um arquivo .hmp que irá conter as configurações de projeto.
Tutorial HeMPS
5
1. [project name] #nome do projeto que será criado2. mpeg_6x6_3x3_13. [tasks per pe] # número de tarefas simultâneas executadas pelo processadores4. 25. [processor description] # o nível de descrição do projeto (sc – SystemC; scmod – SystemC com Modelsim)
6. sc7. [noc buffer size] # tamanho do buffer do roteador8. 89. [noc routing algorthm] # tipo de algoritmo usado no roteamento10. west11. [dimensions] # dimensão da NoC (X e Y)12. 613. 614. [cluster size] # dimensão dos Clusters (X e Y)15. 316. 317. [masters location] # localização dos mestres dentro dos Clusters (atualmente somente LB)18. LB19. [global master] # define qual Cluster terá o Mestre Global20. 021. [application] # define as aplicações que serão inseridas no MPSoC22. mpeg23. [start time] # define em que tempo a aplicação será inserida24. 1 ms
Tutorial HeMPS
6
As aplicações são descritas em C. A comunicação entre tarefas de uma aplicação é feita
através das primitivas Send() e Receive(). Cada tarefa da aplicação deverá ser um arquivo .C
separado Todas as tarefas devem estar em uma pasta com o nome
da aplicação.
Tutorial HeMPS
7
1. #include <task.h> # Biblioteca que contém as primitivas da HeMPS.
2. #include <stdlib.h>3. 4. Message msg; # Cria uma estrutura para as mensagens.5. 6. int main(){7. int i, j,t;8. Echo("task A started."); # A função Echo() é usado como debug, pois...9. Echo(itoa(GetTick())); # grava em um arquivo o seu conteudo.10. 11. for(i=0;i<10;i++){12. msg.length = 30; # Seta o tamanho da mensagem.13. for(j=0;j<30;j++) msg.msg[j]=i; # Gera conteúdo da mensagem.14. Send(&msg,taskB); # Envia a mensagem criada para a Tarefa B.15. }16. Echo(itoa(GetTick())); # A função GetTick() retorna o tempo em
ciclos...17. Echo("task A finished."); # de clock do sistema.18. exit(); # Função exit() termina a tarefa.19. }
Ex.: Tarefa A mandando dados para a Tarefa B
Tutorial HeMPS
8
1. #include <task.h>2. #include <stdlib.h>3. 4. Message msg;5. 6. int main(){7. int i, j,t;8. Echo("task B started.");9. Echo(itoa(GetTick()));10. 11. for(i=0;i<10;i++){12. Receive(&msg,taskA); # Recebe as mensagens enviadas pela Tarefa A13. }14. Echo(itoa(GetTick()));15. Echo("task B finished.");16. exit();17. }
Ex.: Tarefa B recebendo dados da Tarefa A
Tutorial HeMPS
9
Criação do MPSoC◦ # perl $HEMPS_PATH/scripts/hemps.pl exemplo.hmp $path_aplicação
-- Cria o MPSoC e compila o Software
Execução do MPSoC◦ # cd exemplo -- Entrar na pasta do projeto criado◦ # make all -- Compila o Hardware◦ # ./HeMPS -c 50 -- Executa o MPSoC por um tempo de 50 ms
Caso a execução termine com sucesso (todas as aplicações terminem), aparecerá a mensagem “END OF ALL APPLICATIONS!!”
Tutorial HeMPS
10
É possível visualizar o mapeamento das tarefas, bem como o tempo que elas foram alocadas e quando terminaram através de duas maneiras:◦ um script chamado hemps-read.pl (ele já se encontra no
path).Ex.: # hemps-read.pl exemplo.hmp
Tutorial HeMPS
11
O outro método para Debug, é uma ferramenta gráfica no qual se é capaz de visualizar o mapeamento das tarefas e as mensagens trocadas entre processadores. Um programa em java, localizado na pasta “bin”
Tutorial HeMPS
12
◦ Criar uma aplicação que ordene vetores e que possua 3 tarefas: Vetor 1: {33;1;21;12;11;18;2} Vetor 2: {55;43;42;67;90;77;40}
A
CB
1. Tarefa A envia um vetor para cada uma das outras tarefas
A
CB
2. As Tarefas B e C ordenam os vetores
A
CB
3. As Tarefas B e C enviam os vetores ordenados para a Tarefa A
A
CB
4. A Tarefa A imprime (Echo) o vetor ordenado
Tutorial HeMPS
13
FIM