35 research outputs found

    Survey on Combinatorial Register Allocation and Instruction Scheduling

    Full text link
    Register allocation (mapping variables to processor registers or memory) and instruction scheduling (reordering instructions to increase instruction-level parallelism) are essential tasks for generating efficient assembly code in a compiler. In the last three decades, combinatorial optimization has emerged as an alternative to traditional, heuristic algorithms for these two tasks. Combinatorial optimization approaches can deliver optimal solutions according to a model, can precisely capture trade-offs between conflicting decisions, and are more flexible at the expense of increased compilation time. This paper provides an exhaustive literature review and a classification of combinatorial optimization approaches to register allocation and instruction scheduling, with a focus on the techniques that are most applied in this context: integer programming, constraint programming, partitioned Boolean quadratic programming, and enumeration. Researchers in compilers and combinatorial optimization can benefit from identifying developments, trends, and challenges in the area; compiler practitioners may discern opportunities and grasp the potential benefit of applying combinatorial optimization

    Optimizing Instruction Scheduling and Register Allocation for Register-File-Connected Clustered VLIW Architectures

    Get PDF
    Clustering has become a common trend in very long instruction words (VLIW) architecture to solve the problem of area, energy consumption, and design complexity. Register-file-connected clustered (RFCC) VLIW architecture uses the mechanism of global register file to accomplish the inter-cluster data communications, thus eliminating the performance and energy consumption penalty caused by explicit inter-cluster data move operations in traditional bus-connected clustered (BCC) VLIW architecture. However, the limit number of access ports to the global register file has become an issue which must be well addressed; otherwise the performance and energy consumption would be harmed. In this paper, we presented compiler optimization techniques for an RFCC VLIW architecture called Lily, which is designed for encryption systems. These techniques aim at optimizing performance and energy consumption for Lily architecture, through appropriate manipulation of the code generation process to maintain a better management of the accesses to the global register file. All the techniques have been implemented and evaluated. The result shows that our techniques can significantly reduce the penalty of performance and energy consumption due to access port limitation of global register file

    Contributions to worst-case execution time reduction using compilation techniques

    Get PDF
    Tese (doutorado) - Universidade Federal de Santa Catarina, Centro Tecnológico, Programa de Pós-Graduação em Engenharia de Automação e Sistemas, Florianópolis, 2017Abstract: A wide range of systems are distinct from the general purpose computingsystems due to the need of satisfying rigorous timing requirements, oftenunder the constraint of available resources, they are generally called realtimesystems. The development of a predictable system is concerned withthe challenges of building systems whose time requirements can be guaranteeda priori. Although, these challenges become even greater when usingprocessors architectural features for performance increase, as cachesand pipelines, which introduce a high degree of uncertainty, making difficultto provide any kind of guarantee. Parallel to this, there are the toolsneeded to develop and execute an application, such as languages, compilers,runtime support, communication systems and scheduling, which mayfurther make difficult the assertion of guarantees. In these systems, theresults of computations must be generated at the right time and faults oftemporal nature can result in catastrophic consequences both in the economicsense as in human lives. These systems are present in countlessapplications, such as in industrial plants, aviation, and the complexity ofthem imposes serious restrictions on the hardware that can be used. Toprovide timing guarantees, we must know the worst-case execution timefor each tasks of the system. In a general purpose architecture aimed atthe average case, the execution time of a program or task can be so greatin the worst case that invalidates the design constraints, or even be impossibleto be calculated or estimated with a reasonable effort. In thisthesis, we integrate compilation with WCET calculation. A compiler canprovide relevant data to facilitate the process of WCET estimation. Toimprove this process, we also use an architecture whose purpose is toconciliate performance with determinism. Considering compilation andWCET integration we present the following contributions: (1) a differentway to perform loop unrolling on data-dependent loops using codepredication targeting WCET reduction, because existing techniques onlyconsider loops with fixed execution counts. (2) considering static branchpredication techniques, we show that a very small gain or even none canbe obtained with new optimization techniques targeted to worst-case executiontime reduction. To achieve this objective, we compare several techniquesagainst the perfect branch predictor. (3) the difference between theWCET of a task and its actual execution time is called gain time. Wepropose a technique that finds specific points of a program (called gainpoints), where there will be an amount of statically estimated gain time inthe case that path is taken by the execution.Uma grande gama de sistemas se distinguem dos sistemas de computaçãode propósito geral pela necessidade de satisfação de requisitos detemporização rigorosos. O desenvolvimento de um sistema previsível preocupasecom os desafios de construção de sistemas cujos requisitos temporais possamser garantidos a priori. Estes desafios tornam-se ainda maiores quandose utiliza recursos arquiteturais para aumento de performance, como cachese pipelines, os quais introduzem um alto grau de incertezas, tornando difícilo provimento de qualquer tipo de garantia. Paralelamente a isto, existem asferramentas necessárias ao desenvolvimento e execução da aplicação, comolinguagens, compiladores, runtime de execução, sistemas de comunicação eescalonamento, os quais podem dificultar ainda mais a asserção de garantias.Nestes sistemas, os resultados das computações devem estar corretosnão somente do ponto de vista lógico, mas também devem ser gerados nomomento correto. As falhas de natureza temporal nestes sistemas são, emalguns casos, consideradas críticas no que diz respeito às suas consequências.Nos sistemas tempo real críticos (hard real-time) o não atendimento de umrequisito temporal pode resultar em consequências catastróficas tanto no sentidoeconômico quanto em vidas humanas. Quando os requisitos temporaisnão são críticos (soft real-time) eles apenas descrevem o comportamento desejado.O não atendimento de tais requisitos reduz a utilidade da aplicaçãomas não a elimina completamente nem resulta em consequências catastróficas.Estes sistemas estão presentes em diversas aplicações, como em plantasindustriais, aviação e eletrônica automotiva, telecomunicações e sistemasespaciais. Em várias destas aplicações, a complexidade dos sistemas de softwareimpõe sérias restrições quanto ao hardware que poderá ser utilizado.Este deverá ter capacidade suficiente para sustentar a aplicação em questão,além de poder estar submetido a restrições não funcionais do projeto, comocusto e eficiência energética.Arquiteturas modernas e de propósito geral possuem como premissabásica aquela que diz que os programas devem executar o mais rápido possívelna maioria das vezes. Este tempo médio é geralmente chamado deACET - Average-case Execution Time. Entretanto, em alguns casos, o tempode uma execução de uma aplicação poderá ser grande em relação ao caso médio,mas ainda estará amortizado entre as diversas execuções do programa.Esta priorização de caso médio impõe certas problemáticas quanto à utilizaçãodeste tipo de arquitetura em sistemas de tempo real. Tais sistemas podemexigir garantias de tempo de execução difíceis de serem obtidas ou muitasvezes inviáveis. Estas garantias exigem o conhecimento do pior tempo deexecução de um programa ou tarefa em um determinado processador, o qualgeralmente é chamado de WCET - Worst-case Execution Time. Em uma arquiteturade propósito geral que vise o caso médio, o tempo de execução nopior caso de um programa ou tarefa pode ser tão grande que inviabilize asrestrições de projeto, ou mesmo ser impossível de ser estimado.Atualmente, existem vertentes acadêmicas que sugerem a utilização deprocessadores e arquiteturas voltadas para aplicações de tempo real. Taisarquiteturas adotam características de hardware que tornam as análises referentesà obtenção de WCET mais simples e rápidas.Uma característica importante é que o desempenho em arquiteturas específicas,como as voltadas para tempo real, pode estar intimamente relacionadoao compilador e as técnicas de compilação empregadas, como exploraçãoestática de paralelismo. Dada a possibilidade de ser obter o WCET deprogramas para uma arquitetura específica, pode-se utilizar estas informaçõesno processo de otimização incremental dos mesmos. Estas otimizações visama redução do WCET, visto que abordagens tradicionais de transformação decódigo feitas por compilador podem até mesmo aumentar o WCET de umprograma.ObjetivosO objetivo deste trabalho é contribuir com aspectos relacionados à compilaçãopara sistemas de tempo real, cujo objetivo primário seja a reduçãode WCET ou melhoria de aspectos relacionados à escalonabilidade. A tesea ser demonstrada é que o íntimo acoplamento de um compilador com umanalisador WCET pode beneficiar tanto a análise quanto a síntese de um programaexecutável ou sistema completo para uma arquitetura determinista. Autilização de uma arquitetura determinista representa uma característica importantedeste trabalho, bem como o desenvolvimento do respectivo analisadorWCET.Dentre os elementos relacionados ao compilador essenciais para a reduçãodo WCET, pode-se citar: Mecanismos para o cálculo de WCET de programas em processo decompilação. Isto implica acoplamento do compilador com o analisadordesenvolvido. Identificação de potenciais pontos a serem beneficiados por otimizações.Este processo envolve interpretação dos resultados do analisador. Descarte de alterações de códigos que aumentem o WCET. Novamente,decisões deverão ser tomadas com base em análises sucessivas.Além dos elementos relacionados, podemos destacar a eficiência doprocesso. O uso de uma arquitetura projetada para aplicações em tempo realpermite o uso de um analisador muito mais rápido e preciso, que visa trazereficiência ao processo. Embora a arquitetura se baseie em um ISA comercial,não existe compilador livre disponível para esta, então, a implementação deum gerador de código inteiramente funcional fez-se necessária como requisitopara realização do trabalho de tese.Entre os elementos considerados como foco desta tese, têm-se: Técnicas de loop unrolling: Laços são frequentemente bons candidatosalvopara otimizações de compilação para extrair o desempenho emprocessadores modernos. Algumas técnicas foram propostas na literaturapara alcançar a redução do WCET usando o loop unrolling, comoem (ZHAO et al., 2006) e (LOKUCIEJEWSKI; MARWEDEL, 2010).Nestes trabalhos, apenas os laços com contagens de execução fixas sãoconsiderados. Previsão estática de desvios: Previsores de desvio são utilizados paraaumentar o desempenho de programas em arquiteturas modernas. Previsoresestáticos podem depender do compilador para definir o comportamentode cada desvio condicional. Esse comportamento é entãoadotado pelo processador para toda a execução do programa. O uso daprevisão estática de desvio como mecanismo para redução do tempo deexecução de pior caso é uma alternativa conhecida e foi primeiramenteproposta por (BODIN; PUAUT, 2005) e (BURGUIERE et al., 2005). Identificação de tempo ganho em programas: Tempo ganho (ou gaintime) (AUDSLEY et al., 1994) (AVILA et al., 2003) (HU et al., 2002)(HU et al., 2003) é a diferença entre o WCET de uma tarefa e o tempode execução real. Uma abordagem comum é identificar o gain timeem tempo de execução comparando o tempo de execução real (medido)com o WCET calculado estaticamente. A identificação do tempo deganho precoce é útil para aumentar a utilização do sistema em tempo deexecução e para economizar energia do sistema, por exemplo.Alcançar a redução do pior tempo de computação em tarefas que compõemum sistema de tempo real é importante pois permite que recursos computacionaisnão sejam desperdiçados, impactando diretamente no custo. Outraimportância para tal redução é a aceitação de tarefas do tipo soft real-time,pois quanto menor o WCET das tarefas do tipo hard, mais tempo de processadorpode ser alocado para este tipo de tarefa.ContribuiçõesAs contribuições desta tese para o estado da arte são:1. A proposição de uma maneira diferente de executar o loop unrollingsobre laços cujas execuções são dependentes de dados usando a predicaçãode código visando redução de WCET, porque as técnicas existentesconsideram apenas laços com contagens de execução fixas. A técnicaproposta também foi combinada com abordagens de loop unrollingexistentes. Os resultados mostraram que esta combinação pode produziragressivas reduções de WCET quando comparadas com o códigooriginal.2. Em relação às técnicas de predição estática de desvios, são mostradosque somente ganhos pequenos ou mesmo nenhum ganho pode ser obtidocom novas técnicas de otimização direcionadas para a redução do tempode execução do pior caso. Para alcançar esse objetivo, foram comparadasvárias técnicas contra o previsor de desvio perfeito. Este previsorpermite estimar a redução máxima de WCET que pode ser obtida comabordagens estáticas. Além da técnica clássica da literatura, foi incluídana comparação uma nova técnica centrada em WCET que atua comouma abordagem de força bruta para aproximar os resultados do preditorperfeito. A comparação também inclui técnicas de compilação nãodiretamente orientadas para redução de WCET. Como resultado, sãomostradas que as técnicas consideradas nesta tese estão próximas do resultadoótimo obtido pelo previsor perfeito. Também é mostrado quea técnica proposta produz resultados ligeiramente melhores do que asdemais técnicas. Como contribuição secundária, é mostrado que as técnicasinconscientes de WCET também podem ser usadas em ambientesem tempo real porque apresentam bons resultados e baixa complexidade.As técnicas de previsão foram avaliadas usando um conjunto deexemplos dos benchmarks para WCET de Mälardalen.3. Um problema do WCET é que ele é relativo a um único caminho de execução,especificamente o caminho de execução do pior caso (WCEP).Quando uma aplicação em tempo real executa sobre um caminho diferentedo WCEP, seu tempo de execução será provavelmente menor doque o WCET. A diferença entre o WCET de uma tarefa e seu tempo deexecução real é chamado de tempo ganho. Neste trabalho, é propostauma técnica que encontra pontos específicos de um programa (chamadospontos de ganho), onde haverá uma quantidade de tempo ganhoestimado estaticamente no caso de esse caminho ser tomado pela execução.Como estudo de caso, é apresentado o tempo ganho obtido pelaaplicação estratégia proposta a um benchmark da série de benchmarkspara WCET de Mälardalen. Para o benchmark selecionado, foram identificadosvários pontos de ganho e alguns deles com uma quantidadesignificativa de tempo ganho detectado estaticamente.ConclusãoSistemas de tempo real estão presentes em diversos segmentos da indústria,desde sistemas aviônicos a eletrônica automotiva, passando por sistemasindustriais. No passado, tais sistemas eram bastante simples, considerandoa demanda por recursos computacionais e interdependência entretarefas. Porém hoje o cenário é outro: têm-se aplicações com altíssimo nívelde complexidade, por vezes geradas sem intervenção humana a partir de modelosformais. Cada tarefa componente destas aplicações possui seu próprioprazo e por vezes depende de resultados provenientes de outras tarefas (possivelmenteatravés de uma rede), levando a necessidade de estimativa tambémde prazos fim-a-fim.Levantado o cenário anterior, percebe-se que processadores simples,como microcontroladores, não são capazes de atender aplicações de temporeal como atendiam no passado. Neste caso, torna-se necessária a utilizaçãode processadores com maior capacidade computacional, com mecanismos deaumento desempenho, como pipelines, caches e execução especulativa. Oproblema com estes mecanismos é a dificuldade de cálculo do pior caso notempo de computação, devido a fatores como anomalias temporais. Entretanto,algumas vertentes da literatura sugerem o uso de arquiteturas voltadaspara tempo-real, ou seja, deterministas.Neste trabalho, foi objetivada a geração e otimização de código parauma arquitetura determinista mas com mecanismos de aumento de performance.O objetivo primário foi a redução de WCET de programas, bemcomo o levantamento de alguns parâmetros úteis no projeto de um sistemade tempo real. A redução de WCET importante para não sobre-dimensionarsistemas, não desperdiçando assim, recursos computacionais. A utilizaçãode uma arquitetura determinista aliada a redução de WCET induz a sistemasbem dimensionados em termos de recursos.Usando técnicas como loop unrolling usando predicação de código eprevisão estática de desvios, foi possível reduzir o pior caso no tempo decomputação de tarefas. A caracterização de tempo ganho, do ponto de vistapuramente estático, também pôde ser alcançada neste trabalho

    A Probabilistic Approach for the System-Level Design of Multi-ASIP Platforms

    Get PDF

    CROSS-LAYER CUSTOMIZATION PLATFORM FOR LOW-POWER AND REAL-TIME EMBEDDED APPLICATIONS

    Get PDF
    Modern embedded applications have become increasingly complex and diverse in their functionalities and requirements. Data processing, communication and multimedia signal processing, real-time control and various other functionalities can often need to be implemented on the same System-on-Chip(SOC) platform. The significant power constraints and real-time guarantee requirements of these applications have become significant obstacles for the traditional embedded system design methodologies. The general-purpose computing microarchitectures of these platforms are designed to achieve good performance on average, which is far from optimal for any particular application. The system must always assume worst-case scenarios, which results in significant power inefficiencies and resource under-utilization. This dissertation introduces a cross-layer application-customizable embedded platform, which dynamically exploits application information and fine-tunes system components at system software and hardware layers. This is achieved with the close cooperation and seamless integration of the compiler, the operating system, and the hardware architecture. The compiler is responsible for extracting application regularities through static and profile-based analysis. The relevant application knowledge is propagated and utilized at run-time across the system layers through the judiciously introduced reconfigurability at both OS and hardware layers. The introduced framework comprehensively covers the fundamental subsystems of memory management and multi-tasking execution control

    A Survey on Compiler Autotuning using Machine Learning

    Full text link
    Since the mid-1990s, researchers have been trying to use machine-learning based approaches to solve a number of different compiler optimization problems. These techniques primarily enhance the quality of the obtained results and, more importantly, make it feasible to tackle two main compiler optimization problems: optimization selection (choosing which optimizations to apply) and phase-ordering (choosing the order of applying optimizations). The compiler optimization space continues to grow due to the advancement of applications, increasing number of compiler optimizations, and new target architectures. Generic optimization passes in compilers cannot fully leverage newly introduced optimizations and, therefore, cannot keep up with the pace of increasing options. This survey summarizes and classifies the recent advances in using machine learning for the compiler optimization field, particularly on the two major problems of (1) selecting the best optimizations and (2) the phase-ordering of optimizations. The survey highlights the approaches taken so far, the obtained results, the fine-grain classification among different approaches and finally, the influential papers of the field.Comment: version 5.0 (updated on September 2018)- Preprint Version For our Accepted Journal @ ACM CSUR 2018 (42 pages) - This survey will be updated quarterly here (Send me your new published papers to be added in the subsequent version) History: Received November 2016; Revised August 2017; Revised February 2018; Accepted March 2018

    Low power architectures for streaming applications

    Get PDF
    corecore