Resumo: Máquinas virtuais eficientes estão se tornando cada vez mais importante no dia-a-dia da academia e da indústria em geral. Portanto, é importante o desenvolvimento de técnicas para a execução eficiente de programas nestes ambientes. Um problema específico em máquinas virtuais de sistema é a necessidade de executar o conjunto de instruções da arquitetura original na arquitetura hospedeira de maneira eficiente. Uma das técnicas desenvolvidas é a tradução dinâmica de binários (TDB), que permite a execução de programas em formato binário por meio de tradução em tempo de execução. Trabalhos anteriores constataram que traduzir o programa todo não é a melhor escolha, devido ao custo elevado da tradução. Desta forma, é necessário detectar quais regiões devem ser traduzidas, de maneira que não haja traduções excessivas ao mesmo tempo mantendo a execução das instruções a maior parte do tempo por meio de traduções. Trabalhos anteriores apresentam abordagens de monitoramento, ou profiling, da execução dos programas para determinar seu fluxo de execução, obtendo assim regiões candidatas a tradução. A principal contribuição deste trabalho é a proposta de um sistema TDB que utilize profiling contínuo de maneira que seu custo seja baixo frente ao benefício da execução eficiente oriunda da detecção de unidades de tradução quentes. Em específico, o mecanismo apresentado para o monitoramento da execução, os algoritmos de análise de fluxo de controle eficientes, juntamente com o mecanismo de controle de retraduções formam o conjunto de contribuições deste trabalho. Os resultados obtidos utilizando um emulador do NES (Nintendo Entertainment System) mostram que a abordagem sugerida permite a emulação eficiente de programas, com 85,21% das instruções executadas por meio de traduções, sendo até 6,29 vezes mais rápido que interpretação tradicional e 2,34 vezes mais rápido que a abordagem interpretativa.
Abstract: Efficient virtual machines are becoming increasingly important in the academy and industry in general. Thus, it is important to develop new techniques for efficient program execution in such runtime environments. A specific problem in system virtual machines is the need to execute the guest architecture instruction set by the host architecture in an efficient manner. Dynamic Binary Translation (DBT) allows such execution by allowing the execution of programs in binary format by translating the guest machine language program into host machine language program during runtime. Previous work shows that translating the entire program is not the best option, since it incurs in excessive translation overhead. Therefore, it is necessary to detect which regions of code should be translated in such a way that it does not cause excessive translations at the sime time executing most instructions by means of translation. Previous work presents profiling approaches that are used to collect information about a program's control flow, which is then inspected for hot regions deemed for translation. This dissertation proposes a DBT system that uses low-overhead continuous profiling techniques that allows the detection of hot translation units. More specifically, the execution profiling techniques, efficient control flow analysis algorithms along with a retranslation control mechanism are the main contributions of this work. Results obtained by implementing such techniques in a NES (Nintendo Entertainment System) emulator shows that the proposed system allows efficient program execution, with an average of 85,21% of instructions executed by means of translation, leading to a 6,29 speedup over traditional interpretation, and 2,34 speedup over an interpretative profiling approach. |