Este algoritmo também foi projetado para controlar o modelo apresentado na Figura 17, com uma estratégia de controle por realimentação de estados similarmente ao apresentado em 4.2, porém apresentando a implementação de 3 métodos de realimentação de estados:
1. Realimentação dos estados reais
2. Realimentação dos estados estimados por um filtro de Kalmann
3. Realimentação dos estados estimados por um Zonotopic State Estimator (WANG
et al., 2018)
Os dados apresentados nessa seção de resultados utilizaram do método de realimentação dos estados reais.
Capítulo 4. Algoritmos Testados e Resultados 55
4.3.1
Discussão dos Resultados da Simulação
Assim como os outros algoritmos testados, todos apresentaram um tempo de execução do primeiro loop de controle maior do que os loops posteriores, o que também foi encontrado nos testes feitos rodando os algoritmos na Raspberry 3. Neste caso a simulação da primeira execução do loop de controle demorou 1,145 milissegundos.
• sim_seconds 0.001145
Porém como o que é de maior interesse é a performance do algoritmo durante sua exe- cução normal ou seja, com a thread de controle criada e rodando já há um determinado tempo. Os tempos de execução posteriores então tem média do tempo de execução do loop de controle de 550 microssegundos. Além disso os resultados mostram novamente um tempo de espera da CPU expressivamente menor do encontrado em 4.1 porém maior do encontrado em 4.2.
• system.cpu1.idleCycles 123649 (16,42% dos ciclos simulados) • system.cpu1.numCycles 752883
Com esses dados é possível calcular que os ciclos de espera da CPU representaram 16,42% dos ciclos totais simulados. Ainda sobre a CPU, é possível verificar os tipos de instruções executadas durante a simulação do algoritmo de controle.
• system.cpu1.op_class_0::IntAlu 290791 63.58% • system.cpu1.op_class_0::IntMult 2813 0.62% • system.cpu1.op_class_0::MemRead 85952 18.79% • system.cpu1.op_class_0::MemWrite 77752 17.00%
A utilização da memória RAM teve comportamento similar ao do algoritmo apresentado em 4.2, tendo os loops iniciais de controle utilizando pouca memória RAM e durante o resto do programa o controle não utilizou mais a memória RAM para execução do controle.
• system.mem_ctrls.busUtil 0.00
E novamente é encontrado alta utilização dos níveis de cache do ambiente de simulação.
Capítulo 4. Algoritmos Testados e Resultados 56
• system.cpu1.icache.tags.occ_percent::total 1 • system.cpu1.dcache.tags.occ_percent::total 1
De maneira similar ao algoritmo apresentado em 4.2, é possível estudar a otimi- zação do programa, porem com um tempo de execução média em 50 loops de controle de 560 microssegundos, o método de controle pode ser utilizado com certa folga dentro da janela de controle projetada de 12 milissegundos. Os ciclos de CPU em espera também demonstraram boa utilização do processador, com um tempo de espera de 16,42 % dos ciclos simulados.
57
5 Considerações e Trabalhos Futuros
Para alcançar o objetivo geral desta monografia foi primeiro preciso se familiari- zar com os métodos de simulação de Sistemas Computacionais modernos, que visam gerar dados mais condizentes com os testes em sistemas físicos e tentando não perder as van- tagens de modelos menos complexos com métodos de testes mais ágeis. Diversos fatores foram decisivos para a escolha da ferramenta gem5, porém alguns podem ser citados:
• O fato de ser uma ferramenta open-source, com desenvolvimento constante e comu- nidade ativa que busca o aprimoramento da ferramenta.
• A presença de artigos demonstrando uma precisão boa dos resultados gerados pela ferramenta
• O suporte a diversas arquiteturas pela ferramenta, algo que pode gerar estudos interessantes sobre o impacto da arquitetura de instruções na performance dos al- goritmos de controle.
• O fato da ferramenta ter um ambiente de simulação altamente configurável, com diversos dispositivos já disponibilizados pelos desenvolvedores e a oportunidade do usuário desenvolver os seus próprios caso seja de interesse.
Tendo isso em mente esta monografia conseguiu explicar o funcionamento da ferramenta de simulação, mostrando as modificações possíveis que reduzem o tempo de simulação consideravelmente, além de realizar os testes e análise de performance dos algoritmos de controle desenvolvidos para o sistema embarcado do VANT. Esta análise foi feita através da ferramenta de simulação gem5 com uma boa precisão, como foi mostrado na figura 18 que compara os resultados temporais da execução de loops de controle do mesmo código através da simulação com os resultados do teste rodando na placa Raspberry Pi 3 B+, sendo que o ambiente de simulação foi configurado com intuito de se aproximar o máximo possível do hardware da placa de desenvolvimento.
Apesar dos arquivos de resultados serem consideravelmente grandes, já que tem o intuito de fornecer os dados de todos dispositivos inicializados durante simulação, foi mostrado que é possível realizar uma boa análise de performance com somente alguns dados.
Capítulo 5. Considerações e Trabalhos Futuros 58
Trabalhos Futuros
Como essa área de Sistemas Computacionais é relativamente nova, as possibili- dades de estudos futuros são diversas porém alguns podem ser citados que continuariam o trabalho realizado desta monografia:
• Estudo do impacto que a mudança da arquitetura de instrução tem sobre os resul- tados
• Explorar a utilização da gem5-gpu (LOWE-POWER et al., 2017), uma ferramenta que nasceu de um estudo entre duas outras ferramentas, a gem5 e GPGPU-sim. Como muitos sistemas já vem com placa de vídeo integrada, estudar o que poderia ser utilizado para melhorar a performance dos algoritmos de controle.
• Aprimorar o estudo de encontrar bottlenecks através da ferramenta gem5, além de oferecer soluções para esse problema, como o que foi feito em 4.1.
• Explorar outros resultados que podem ser gerados através da ferramenta gem5, como por exemplo a ferramenta Konata, que gera a visualização do pipeline da CPU do ínicio ao fim da simulação. Também pode ser verificado os resultados com o trace
based debbugging presentes nos executáveis de simulação com suporte a debug em
tempo de execução mostrados na tabela 2, a simulação então iria gerar um arquivo de texto contendo todas as operações realizadas pela CPU.
• Utilizar outros métodos de controle para estudo comparativo das performances de cada algoritmo, uma outra técnica de controle que poderia ser testada por exemplo é o Model Predictive Control (MIRANDA, 2018).
Além desses possíveis trabalhos futuros, alguns pontos deste trabalho realizado poderiam ser aprimorados, como por exemplo a geração de resultados. Um dos problemas enfrentados na geração dos resultados é a dificuldade da leitura já que os resultados de todos m5_dumpstats são agregados em somente um arquivo de texto chamado stats.txt. Uma das melhorias possíveis seria o armazenamento dos resultados da simulação em arquivos separados, para que seja possível gerar arquivos para cada seção do código.
Outro ponto que não foi explorado neste trabalho foi a utilização dos modelos de memória mais precisos disponibilizados pela ferramenta, os resultados obtidos utilizaram o modelo clássico de memória mais simplificado porém através de algumas modificações os modelos de coerência de cache mais complexos do sistema de memória denominado Ruby, importado da ferramenta GEMS, poderia ser utilizado com seu modelo básico ou Garnet (AGARWAL et al., 2009).
59
Referências
AGARWAL, N. et al. Garnet: A detailed on-chip network model inside a full-system simulator. Acessado em janeiro 2020 em https://dspace.mit.edu/handle/1721.1/73506, 2009. Citado na página 58.
AMINIFAR, A. Analysis, Design, and Optimization of Embedded Control Systems. [S.l.]: Linköping University, 2016. ISBN 9789176858264. Citado na página 16.
BINKERT, N. et al. The gem5 simulator. Acessado em janeiro 2020 em https://research.cs.wisc.edu/multifacet/papers/can11_gem5.pdf, 2011. Citado na página 41.
BUTKO, A. et al. Accuracy evaluation of gem5 simulator system. Aces- sado em janeiro 2020 em https://www.lirmm.fr/~sassate/ADAC/wp-
content/uploads/2014/11/Accuracy_evaluation-ReCoSoC-2012.pdf, 2014. Citado 2 vezes nas páginas 29 e 32.
DONADEL, R. Modeling and control of a tiltrotor unmanned aerial vehicle for path tracking. Dissertação(Mestrado) UFSC-Florianopolis 2015. Citado na página 17. GOOGLE. Gperftools wiki. Acessado em junho 2019 em
https://github.com/gperftools/gperftools/wiki. Citado na página 36.
GRAND-VIEW-RESEARCH. Commercial uav market analysis. Acessado em janeiro 2020 em https://www.grandviewresearch.com/industry-analysis/commercial-uav-market. Citado na página 17.
LATHI, B. P. Sinais e Sistemas Lineares(2 edição). [S.l.]: Bookman, 2006. ISBN 9788560031139. Citado na página 26.
LEE, B. Dynamic branch prediction. Acessado em janeiro 2020 em
http://web.engr.oregonstate.edu/ benl/Projects/branch_pred/. Citado 2 vezes nas páginas 24 e 25.
LOWE-POWER, J. Learning gem5 ebook. Acessado em junho 2019 em http://learning.gem5.org/book/index.html. Citado na página 33.
LOWE-POWER, J. et al. gem5-gpu: A heterogeneous cpu-gpu simulator. Acessado em janeiro 2020 em https://research.cs.wisc.edu/multifacet/papers/cal14_gem5gpu.pdf, 2017. Citado na página 58.
MACRO-UFMG. Mechathronics, control, and robots - universidade federal de minas gerais. Acessado em janeiro 2020 em http://macro.ppgee.ufmg.br/robots. Citado na página 48.
MELLO, L. S. Modelagem e controle de corpo completo de um manipulador aereo. Acessado em janeiro 2020 em https://adorno.eng.ufmg.br/students/modelagem-e- controle-de.pdf, 2016. Citado 2 vezes nas páginas 17 e 27.
Referências 60
MIRANDA, G. M. T. Multi-core model predictive control strategy for a tilt- rotor uav in system-in-the-loop simulation. Acessado em janeiro 2020 em https://www.ppgee.ufmg.br/defesas/1431M.PDF, 2018. Citado na página 58.
ROS. Ros documentation. Acessado em janeiro 2020 em http://wiki.ros.org/. Citado na página 34.
SAIDI, A. et al. Gem5 documentation. Acessado em janeiro de 2020 em http://www.gem5.org/documentation/. Citado na página 35.
SCHOEBERL, M. Time-predictable computer architecture. Acessado em janeiro 2020 em https://backend.orbit.dtu.dk/ws/portalfiles/portal/4863337/ca4rts.pdf, 2008. Citado na página 26.
SHINSEL, A. Understanding the instruction pipeline. Acessado em janeiro 2020 em https://techdecoded.intel.io/resources/understanding-the-instruction-pipeline. Citado na página 23.
SILVANO, F. Projeto da arquitetura de software embarcado de um veículo aereo não tripulado. Dissertação(Mestrado) UFSC-Florianopolis 2014. Citado 2 vezes nas páginas 17 e 19.
TOUSI, A.; ZHU, C. Arm research starter kit: System modeling using gem5. Acessado em janeiro 2020 em https://developer.arm.com/solutions/research/research-enablement-kits, 2017. Citado na página 40.
VILLANUEVA, J. M. M. Estabilidade de sistemas discretos. Acessado em janeiro 2020 em http://www.cear.ufpb.br/juan/wp-content/uploads/2019/06/Aula-4.-Estabilidade-e- Transformações-1.pdf, 2019. Citado na página 26.
WANG, Z. et al. Zonotopic state estimation and fault detection for sys- tems with time-invariant uncertainties. Acessado em janeiro 2020 em
https://www.sciencedirect.com/science/article/pii/S2405896318323346, 2018. Citado na página 54.
WINKLER, C. Sensor solutions play critical roles in enabling innovation in drones. Acessado em janeiro 2020 em http://www.memsic.com/about-memsic/publications.cfm, 2016. Citado na página 16.
ZARGHAM, M. R. Computer Architecture. [S.l.]: Prentice Hall, 1996. ISBN 9780130106612. Citado na página 22.