Escolar Documentos
Profissional Documentos
Cultura Documentos
Centro de Informática
Grupo de Engenharia da Computação
Título:
Construção e geração de software dependente de hardware de
modelos de sistema de alto nível
1 Introdução.............................................................................................................................. 5
1.1 Motivação e justificativa................................................................................................. 6
1.2 Resumo do Estado da Arte............................................................................................. 7
1.3 Objetivos do trabalho....................................................................................................10
1.4 Estrutura do documento...............................................................................................10
2 Estado da Arte.......................................................................................................................11
2.1 Systematic Embedded Software Generation from SystemC[6]...................................11
2.2 Multi-Processor SoC Design Methodology using a Concept of Two-Layer Hardware-
dependent Software[8]........................................................................................................13
2.3 A Generic RTOS Model for Real-time Systems Simulation with SystemC[9]............15
2.4 Embedded Software Generation from System Level Design Languages[10].............16
2.5 Combination of Instruction Set Simulator and Abstract RTOS Model Execution for
Fast and Accurate Target Software Evaluation[11]............................................................ 17
2.6 Automatic Generation of Hardware dependent Software for MPSoCs from Abstract
System Specifications[12]................................................................................................... 18
2.7 Software Performance Simulation Strategies for High-level Embedded System
Design[13]............................................................................................................................19
2.8 A Design Flow Based on a Domain Specific Language to Concurrent Development of
Device Drivers and Device Controller Simulation Models[14]..........................................21
3 Proposta do Trabalho.......................................................................................................... 23
3.1 Descrição do problema.................................................................................................23
3.2 Abordagem proposta....................................................................................................23
3.3 Validação da proposta..................................................................................................26
4 Resultados obtidos.............................................................................................................. 26
5 Cronograma......................................................................................................................... 28
Bibliografia...............................................................................................................................33
Assinaturas.............................................................................................................................. 34
Índice de figuras
1 Introdução
E com o contínuo aumento da complexidade das plataformas, como foi previsto pela Lei de
Moore[2], criam-se novas possibilidades para funcionalidades que tem mais poder
computacional e memória disponível. Contudo, para os sistemas embarcados sempre
existem limitações de potência e memória devido a sua natureza de mobilidade, de baixo
custo e de baixa potência.
Construção e geração de software dependente de hardware de modelos de sistema de alto nível Página 5 de 34
Introdução GrecO - CIn/UFPE
A principal motivação deste trabalho é sem dúvida a redução da diferença entre as taxas de
crescimento do software e da capacidade com que ele pode ser produzido (System Design
Gap, ver figura 2), desta forma tornando o desenvolvimento de software mais eficiente.
Construção e geração de software dependente de hardware de modelos de sistema de alto nível Página 6 de 34
Introdução GrecO - CIn/UFPE
Por fim, como já foi dito anteriormente, as restrições são naturais nos sistemas
embarcados e, por isso, é importante que o código gerado seja sempre o menor possível
para seja utilizado menos memória e se dissipe menos potência.
Para consolidação desta proposta de trabalho, foi realizada uma extensa pesquisa sobre
sistemas embarcados e que oportunidades para melhorias ainda estavam disponíveis, além
de considerar as oportunidades de melhoria das soluções existentes.
Construção e geração de software dependente de hardware de modelos de sistema de alto nível Página 7 de 34
Introdução GrecO - CIn/UFPE
Construção e geração de software dependente de hardware de modelos de sistema de alto nível Página 8 de 34
Introdução GrecO - CIn/UFPE
Construção e geração de software dependente de hardware de modelos de sistema de alto nível Página 9 de 34
Introdução GrecO - CIn/UFPE
◦ Autores: Edson Lisboa, Luciano Silva, Igino Chaves, Thiago Lima e Edna Barros;
A estrutura deste documento é definida pelo primeiro capítulo de Introdução, onde uma
visão geral e concisa da proposta é oferecida; o segundo capítulo de Estado da Arte detalha
todas as soluções ou conjunto de técnicas e metodologias associadas ou relacionadas a este
trabalho; o terceiro capítulo de Proposta de Trabalho define que problema será atacado,
que abordagem será utilizada para isto e qual será o fluxo proposto; no quarto capítulo o
cronograma de atividades por ano é exibido, com granularidade mensal; e por fim o índice
bibliográfico e as assinaturas do orientando e orientador da tese.
Construção e geração de software dependente de hardware de modelos de sistema de alto nível Página 10 de 34
Estado da Arte GrecO - CIn/UFPE
2 Estado da Arte
Este trabalho tem como objetivo a redução do custo de construção de sistemas embarcados
através da geração de software embarcado a partir de modelos em SystemC que permite
modelagem de alto nível. Após o particionamento HW/SW, as interfaces de comunicação
são geradas e o mapeamento para o sistema operacional escolhido pelo usuário é realizado.
Um dos pontos mais interessantes deste trabalho está na modelagem dos processos, como
pode ser visto na figura 3, onde os nós representam eventos e as arestas representam os
Construção e geração de software dependente de hardware de modelos de sistema de alto nível Página 11 de 34
Estado da Arte GrecO - CIn/UFPE
trechos de código que executam sem bloqueio. Esta representação é a forma como o
escalonador de SystemC trata a execução de suas tarefas, o que facilita bastante o
mapeamento do modelo para a estrutura da interna de representação.
O fluxo de geração de código deste trabalho é ilustrado na figura 4, onde existem três
níveis fundamentais de trabalho: especificação, algorítmico e geração de software. Na
etapa de especificação, a descrição sem particionamento é implementada e simulada
utilizando os recursos padrões de SystemC. Após a finalização desta etapa, é realizado o
particionamento do hardware e do software, onde o software executará sobre uma
infraestrutura de mapeamento do SystemC para o RTOS (precisa ser implementada) e o
hardware executa sobre o SystemC padrão. Após a finalização destas primeiras etapas, o
software é gerado em C/C++ padrão que irá executar em hardware e RTOS definido pelo
Construção e geração de software dependente de hardware de modelos de sistema de alto nível Página 12 de 34
Estado da Arte GrecO - CIn/UFPE
usuário.
Construção e geração de software dependente de hardware de modelos de sistema de alto nível Página 13 de 34
Estado da Arte GrecO - CIn/UFPE
A validação e coleta de informações foi feita através do estudo de caso OpenDIVX (sistema
de codificação) em uma plataforma multiprocessada, obtendo um código extra (devido a
HAL e SAL) de somente 6.3 Kb e 5.7 Kb, respectivamente, de um total de 715 Kb de código
de aplicação. Além de fornecer abstração, este trabalho também possibilitou a simulação a
nível de API, ou seja, emulando o funcionamento da interface sem que o hardware precise
ser de fato simulado. Com esta emulação, o software obteve um aumento de 3.5 até 17
vezes no seu desempenho de simulação, com até 86% de precisão, quando comparado ao
hardware simulado.
Construção e geração de software dependente de hardware de modelos de sistema de alto nível Página 14 de 34
Estado da Arte GrecO - CIn/UFPE
A validação e análise dos resultados foi feita com um sistema de tarefas simples e um timer
em hardware, sendo que os resultados das trocas de contexto podem ser observadas
graficamente através de uma ferramenta também desenvolvida por este trabalho. Toda a
Construção e geração de software dependente de hardware de modelos de sistema de alto nível Página 15 de 34
Estado da Arte GrecO - CIn/UFPE
O fluxo de desenvolvimento deste trabalho pode ser visto na figura 8, sendo composto
pelas etapas principais de especificação do modelo, modelagem a nível de transações e
Construção e geração de software dependente de hardware de modelos de sistema de alto nível Página 16 de 34
Estado da Arte GrecO - CIn/UFPE
implementação do modelo.
Uma visão geral da abordagem pode ser observada na figura 9, onde existem duas
unidades básicas: o ISS (realiza execução do programa) e o modelo de RTOS que se
utilizando do escalonador de SystemC coordena as trocas de contexto das tarefas que
executam no processador. Sem dúvida a parte crucial deste trabalho se concentra na
Construção e geração de software dependente de hardware de modelos de sistema de alto nível Página 17 de 34
Estado da Arte GrecO - CIn/UFPE
comunicação entre o ISS e o modelo RTOS, permitindo inclusive que operações dinâmicas
sejam realizadas, como criação e remoção de tarefas em tempo de execução, tudo
ocorrendo de forma desacoplada.
Como pode ser visto na figura 10, a especificação do sistema é feita em nível de sistema,
utilizando-se a linguagem SystemC que permite análise comportamental através de
execução. Após feita esta análise, é realizado o particionamento HW/SW, até que as
Construção e geração de software dependente de hardware de modelos de sistema de alto nível Página 18 de 34
Estado da Arte GrecO - CIn/UFPE
Para suportar o escalonamento de tarefas, duas opções podem ser realizadas: utilização de
RTOS (camada de abstração de RTOS ou RAL) que necessitará de mapeamento com o
sistema operacional escolhido ou escalonamento baseado em interrupção que é muito
adequado em sistemas com fortes restrições de memória, processamento digital de sinais
ou poucas tarefas.
Para obtenção de resultados e validação do trabalho, seis estudos de caso foram realizados,
entre eles um codificador JPEG e um decodificador MP3, mostrando decisões de
particionamento e resultados de número de ciclos de CPU e número de interrupções
gerados.
Este trabalho destoa levemente dos objetivos apresentados pelo trabalhos anteriores, por
focar em uma solução engenhosa para medição de desempenho de software embarcado.
Isto é feito sem de fato precisar realizar a simulação em um ISS que muito lentos e muito
difíceis de se desenvolver. Através da execução nativa em um computador pessoal e com a
extração de informações de instruções geradas para a plataforma destino é possível gerar
um modelo de simulação extremamente eficiente em termos de tempo de simulação e com
alta precisão de estimativa de desempenho, além de baixa complexidade de
implementação.
Construção e geração de software dependente de hardware de modelos de sistema de alto nível Página 19 de 34
Estado da Arte GrecO - CIn/UFPE
A ideia geral do trabalho é resumida na figura 11, onde o código fonte é processado para
obtenção de uma representação intermediária. Na etapa de instrumentação, o código
gerado é anotado com informações de mapeamento e análise de tempo. Com este formato
de representação instrumentado, o código é compilado para execução nativa e com as
informações anotadas em seu código é capaz de fornecer estimativas sobre desempenho
para a plataforma para qual será implantado.
Para validação da abordagem foram implementados vários estudos de caso que tiveram
suas análises realizadas do modo tradicional com ISS e com a abordagem proposta. O
resultado foi que as estimativas tiveram taxas de erros muito baixas (inferiores a 3%), com
taxas de MIPS muito maiores.
Construção e geração de software dependente de hardware de modelos de sistema de alto nível Página 20 de 34
Estado da Arte GrecO - CIn/UFPE
Este trabalho tem como objetivo fornecer um ambiente para desenvolvimento de software
dependente de hardware (HdS), através de uma linguagem de domínio específico (DevC)
para simulação e geração de código de driver e controlador de dispositivo. O objetivo
principal é reduzir o esforço para o desenvolvimento de software básico, reduzindo
também as chances de erros durante o desenvolvimento.
Os estágios deste trabalho estão ilustrados na figura 12, perfazendo um total de 6 estágios
que são:
Construção e geração de software dependente de hardware de modelos de sistema de alto nível Página 21 de 34
Estado da Arte GrecO - CIn/UFPE
• Estágio 6: por fim, o software gerado é executado no hardware real e tem seus
resultados comparados aos obtidos pela plataforma virtual.
Para validação da proposta foram utilizados dois dispositivos: serial e LCD gráfico, de
forma a demonstrar a eficácia da abordagem, verificando quanto trabalho manual precisou
sr feito e quando do código foi gerado pela ferramenta. A principal vantagem deste
trabalho está na redução do esforço de desenvolvimento de HdS, através de
desenvolvimento gradual e facilidades de depuração do comportamento.
Construção e geração de software dependente de hardware de modelos de sistema de alto nível Página 22 de 34
Proposta do Trabalho GrecO - CIn/UFPE
3 Proposta do Trabalho
Construção e geração de software dependente de hardware de modelos de sistema de alto nível Página 23 de 34
Proposta do Trabalho GrecO - CIn/UFPE
Construção e geração de software dependente de hardware de modelos de sistema de alto nível Página 24 de 34
Proposta do Trabalho GrecO - CIn/UFPE
Na figura 13, pode-se ter uma visão geral do fluxo da abordagem proposta, onde, de
maneira transparente e correta por construção, o software, com suas camadas de abstração
de sistema operacional e de gerenciamento de interrupção, é gerado em ANSI C, podendo
ser compilado juntamente com o sistema operacional escolhido para o processador de
destino.
Construção e geração de software dependente de hardware de modelos de sistema de alto nível Página 25 de 34
Proposta do Trabalho GrecO - CIn/UFPE
Para a validação da proposta deste trabalho, serão feitos estudos que caso que explorem
efetivamente os problemas apresentados, com o objetivo de demonstrar a eficácia desta
solução. Para tanto, será utilizado 0 modelo ISS[5] de processador SPARC-V8 com dois
periféricos (Timer, RTC, etc). As plataformas montadas explorarão as capacidades de
configuração via registradores e geração de interrupções.
4 Resultados obtidos
Apesar de terem sido obtidos resultados preliminares, este trabalho obteve uma melhoria
da ordem de 1000 vezes o desempenho, quando comparado a abordagem tradicional ISS,
mantendo taxas de erro inferiores a 3%. Desta forma, apresenta uma sólida contribuição
ao estado da arte considerado, apresentando uma nova abordagem para tratar o difícil
desenvolvimento de hardware e software integrados.
Construção e geração de software dependente de hardware de modelos de sistema de alto nível Página 26 de 34
Resultados obtidos GrecO - CIn/UFPE
Um dos primeiros resultados externos deste trabalho foi a sua aceitação para publicação e
apresentação na Symposium on Integrated Circuits and Systems Design (SBCCI) no ano de
2011, sendo escolhido como um dos melhores trabalhos para ter uma oportunidade de
publicação estendida no Journal of Integrated Circuits and Systems (JICS) neste ano de
2012.
Os feedbacks internos e externos obtidos estão sendo utilizados para refinar este trabalho,
além de vislumbrar novas publicações e ainda mais aceitação do meio acadêmico.
Construção e geração de software dependente de hardware de modelos de sistema de alto nível Página 27 de 34
5 Cronograma
O cronograma, ilustrado nas tabelas a seguir, mostra quais serão as macro atividades, suas respectivas durações e suas intersecções com
as outras atividades e seus detalhes.
F e ve r e i r o
S e t e mb r o
Nove mb r o
De z e mb r o
Out ub r o
J a ne i r o
A g os t o
Ab r i l
J ul h o
J unh o
Ma r ç o
Ma i o
Atividades
Como pode ser visto na tabela 1, as atividades do primeiro ano do doutorado são estruturais e fundamentam todas as demais atividades
que serão desenvolvidas nos demais anos. A seguir é feito um detalhamento destas atividades:
• Disciplinas necessárias para completar carga horária: os 6 primeiros meses de doutorado foram dedicados à disciplinas
de suporte, como algoritmos e arquiteturas multiprocessadas, onde já procurou observar oportunidades de uso de ferramentas
para auxiliar o desenvolvimento deste trabalho;
• Análise de trabalhos relacionados e estado da arte: etapa que foi iniciada com o final do período de aulas, contando com
pesquisas extensas sobre trabalhos relacionados a área de interesse (HdS), suas oportunidades e limitações. Além de verificar o
que existe e o que pode ser feito, nesta atividade também foi avaliado a viabilidade das possíveis propostas, para que fosse evitado
trabalhos excessivamente complexos ou até mesmo fora dos objetivos acadêmicos;
• Concepção do trabalho, definição do problema e solução proposta: uma vez tendo uma visão ampla de como é o estado
da arte, foram realizadas reuniões com o intuito de deixar claro quais os problemas carecem de solução adequada ou se existem
oportunidades de melhoria em abordagens já existentes. Uma vez estando bem definidos os cenários, foram propostas soluções
que foram refinadas até que este solução proposta fosse concebida.
F e ve r e i r o
S e t e mb r o
Nove mb r o
De z e mb r o
Out ub r o
J a ne i r o
A g os t o
Ab r i l
J ul h o
J unh o
Ma r ç o
Ma i o
Atividades
Criação de infraestrutura,
ferramentas e ambiente
Implementação e análise dos
estudo de caso
Validação dos experimentos e
estudos de caso realizados
Preparação e elaboração da
defesa da tese
Como pode ser observado na tabela 2, neste segundo ano do doutorado as atividades se concentram em criar a infraestrutura necessária,
implementando também os estudos de caso e realizando suas validações e coletas de resultados. O detalhamento destas atividades é feito
a seguir:
• Criação de infraestrutura, ferramentas e ambiente: esta atividade se destina a construção de um ambiente completo de
desenvolvimento e depuração de todas as ferramentas necessárias para suportar os requisitos desta proposta de trabalho. Este
ambiente é composto, por exemplo, de linguagens de programação, compiladores, sistemas operacionais e bibliotecas de terceiros.
O objetivo desta atividade é gerar todo o conjunto de ferramentas que permitam a realização e análise dos estudos de caso que
serão implementados;
• Implementação e análise dos estudos de caso: uma vez consolidada, mesmo que parcialmente, o ambiente de
desenvolvimento, a implementação e análise dos estudos de caso pode ser realizada. Esta etapa servirá como verificação do
ferramental criado e geração de correções para as falhas detectadas;
• Validação dos experimentos e estudos de caso realizados: em consonância com a sua implementação, os estudos de caso
estão sendo avaliados para que sua eficácia seja garantida, além da geração de implementações que seguem fluxos tradicionais que
serão utilizadas para fins comparativos;
• Preparação e elaboração da proposta de tese: preparação para defesa da tese de doutorado e apresentação para a banca.
Cronograma 2011 - 2012
F e ve r e i r o
S e t e mb r o
Nove mb r o
De z e mb r o
Out ub r o
J a ne i r o
A g os t o
Ab r i l
J ul h o
J unh o
Ma r ç o
Ma i o
Atividades
Publicação de artigos e
participação em congressos
Validação dos experimentos e
estudos de caso realizados
Estruturação, edição e revisão da
tese
Preparação e elaboração da
proposta de tese
F e ve r e i r o
S e t e mb r o
Nove mb r o
De z e mb r o
Out ub r o
J a ne i r o
A g os t o
Ab r i l
J ul h o
J unh o
Ma r ç o
Ma i o
Atividades
Publicação de artigos e
participação em congressos
Validação dos experimentos e
estudos de caso realizados
Estruturação, edição e revisão da
tese
Preparação e elaboração da
proposta de tese
Nas tabelas 3 e 4, todo o trabalho de refinamento da proposta, estudos de casos e obtenção de resultados está sendo terminado, restando
a escrita e artigos e preparação de apresentações, além da finalização e estruturação da tese, recebendo e aplicando as revisões geradas
pelo orientador. O detalhamento das atividades é feito a seguir:
• Publicação de artigos e participação em congressos: tendo em mãos uma proposta validada e uma série de resultados
relevantes, o foco desta atividade será de selecionar os congressos e conferências que possuam temática relacionada, para que seja
feita a submissão de artigos e apresentação do trabalho;
• Estruturação, edição e revisão da teste: esta atividade se dedica a completar e refinar todas as informações já existentes no
documento de tese, adicionando comentários e críticas coletadas ao longo do processo de participação em congressos, além de
sugestões e contribuições oriundas do próprio grupo de pesquisa.
Bibliografia