30 research outputs found

    Design of a WCET-Aware C Compiler

    Get PDF
    This paper presents techniques to tightly integrate worst-case execution time information into a compiler framework. Currently, a tight integration of WCET information into the compilation process is strongly desired, but only some ad-hoc approaches have been reported currently. Previous publications mainly used self-written WCET estimators with very limited functionality and preciseness during compilation. A very tight integration of a high quality industry-relevant WCET analyzer into a compiler was not yet achieved up to now. This work is the first to present techniques capable of achieving such a tight coupling between a compiler and the WCET analyzer aiT. This is done by automatically translating the assembly-like contents of the compiler\u27s low-level intermediate representation (LLIR) to aiT\u27s exchange format CRL2. Additionally, the results produced by the WCET analyzer are automatically collected and re-imported into the compiler infrastructure. The work described in this paper is smoothly integrated into a C compiler environment for the Infineon TriCore processor. It opens up new possibilities for the design of WCET-aware optimizations in the future. The concepts for extending the compiler infrastructure are kept very general so that they are not limited to WCET information. Rather, it is possible to use our structures also for multi-objective optimization of e.g. best-case execution time (BCET) or energy dissipation

    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

    Towards an embedded real-time Java virtual machine

    Get PDF
    Most computers today are embedded, i.e. they are built into some products or system that is not perceived as a computer. It is highly desirable to use modern safe object-oriented software techniques for a rapid development of reliable systems. However, languages and run-time platforms for embedded systems have not kept up with the front line of language development. Reasons include complex and, in some cases, contradictory requirements on timing, concurrency, predictability, safety, and flexibility. A carefully tailored Java virtual machine (called IVM) is proposed as an approach to overcome these difficulties. In particular, real-time garbage collection has been considered an essential part. The set of bytecodes has been revised to require less memory and to facilitate predictable execution. To further reduce the memory footprint, the class loader can be located outside the embedded processor. Since the accomplished concurrency is crucial for the function of many embedded applications, the scheduling can be defined on the application level in Java. Finally considering future needs for flexibility and on-line configuration of embedded system, the IVM has a unique structure with which, for instance, methods being objects that can be replaced and GCed. The approach has been experimentally verified by a full prototype implementation of such a virtual machine. By making the prototype available for development of real products, this in turn has confronted the solutions with real industrial demands. It was found that the IVM can be easily integrated in typical systems today and the mentioned requirements are fulfilled. Based on experiences from more than 10 projects utilising the novel Java-oriented techniques, there are reasons to believe that the proposed approach is very promising for future flexible embedded systems

    Predictable migration and communication in the Quest-V multikernal

    Full text link
    Quest-V is a system we have been developing from the ground up, with objectives focusing on safety, predictability and efficiency. It is designed to work on emerging multicore processors with hardware virtualization support. Quest-V is implemented as a ``distributed system on a chip'' and comprises multiple sandbox kernels. Sandbox kernels are isolated from one another in separate regions of physical memory, having access to a subset of processing cores and I/O devices. This partitioning prevents system failures in one sandbox affecting the operation of other sandboxes. Shared memory channels managed by system monitors enable inter-sandbox communication. The distributed nature of Quest-V means each sandbox has a separate physical clock, with all event timings being managed by per-core local timers. Each sandbox is responsible for its own scheduling and I/O management, without requiring intervention of a hypervisor. In this paper, we formulate bounds on inter-sandbox communication in the absence of a global scheduler or global system clock. We also describe how address space migration between sandboxes can be guaranteed without violating service constraints. Experimental results on a working system show the conditions under which Quest-V performs real-time communication and migration.National Science Foundation (1117025

    Deployment and Debugging of Real-Time Applications on Multicore Architectures

    Get PDF
    It is essential to enable information extraction from software. Program tracing techniques are an example of information extraction. Program tracing extracts information from the program during execution. Tracing helps with the testing and validation of software to ensure that the software under test is correct. Information extraction is done by instrumenting the program. Logged information can be stored in dedicated logging memories or can be buffered and streamed off-chip to an external monitor. The designer inspects the trace after execution to identify potentially erroneous state information. In addition, the trace can provide the state information that serves as input to generate the erroneous output for reproducibility. Information extraction can be difficult and expensive due to the increase in size and complexity of modern software systems. For the sub-class of software systems known as real-time systems, these issues are further aggravated. This is because real-time systems demand timing guarantees in addition to functional correctness. Consequently, any instrumentation to the original program code for the purpose of information extraction may affect the temporal behaviors of the program. This perturbation of temporal behaviors can lead to the violation of timing constraints, which may bias the program execution and/or cause the program to miss its deadline. As a result, there is considerable interest in devising techniques to allow for information extraction without missing a program’s deadline that is known as time-aware instrumentation. This thesis investigates time-aware instrumentation mechanisms to instrument programs while respecting their timing constraints and functional behavior. Knowledge of the underlying hardware on which the software runs, enables the extraction of more information via the instrumentation process. Chip-multiprocessors offer a solution to the performance bottleneck on uni-processors. Providing timing guarantees for hard real-time systems, however, on chip-multiprocessors is difficult. This is because conventional communication interconnects are designed to optimize the average-case performance. Therefore, researchers propose interconnects such as the priority-aware networks to satisfy the requirements of hard real-time systems. The priority-aware interconnects, however, lack the proper analysis techniques to facilitate the deployment of real-time systems. This thesis also investigates latency and buffer space analysis techniques for pipelined communication resource models, as well as algorithms for the proper deployment of real-time applications to these platforms. The analysis techniques proposed in this thesis provide guarantees on the schedulability of real-time systems on chip-multiprocessors. These guarantees are based on reducing contention in the interconnect while simultaneously accurately computing the worst-case communication latencies. While these worst-case latencies provide bounds for computing the overall worst-case execution time of applications on chip-multiprocessors, they also provide means to assigning instrumentation budgets required by time-aware instrumentation. Leveraging these platform-specific analysis techniques for the assignment of instrumentation budgets, allows for extracting more information from the instrumentation process

    Cache Related Pre-emption Delays in Embedded Real-Time Systems

    Get PDF
    Real-time systems are subject to stringent deadlines which make their temporal behaviour just as important as their functional behaviour. In multi-tasking real-time systems, the execution time of each task must be determined, and then combined together with information about the scheduling policy to ensure that there are enough resources to schedule all of the tasks. This is usually achieved by performing timing analysis on the individual tasks, and then schedulability analysis on the system as a whole. In systems with cache, multiple tasks can share this common resource which can lead to cache-related pre-emption delays (CRPD) being introduced. CRPD is the additional cost incurred from resuming a pre-empted task that no longer has the instructions or data it was using in cache, because the pre-empting task(s) evicted them from cache. It is therefore important to be able to account for CRPD when performing schedulability analysis. This thesis focuses on the effects of CRPD on a single processor system, further expanding our understanding of CRPD and ability to analyse and optimise for it. We present new CRPD analysis for Earliest Deadline First (EDF) scheduling that significantly outperforms existing analysis, and then perform the first comparison between Fixed Priority (FP) and EDF accounting for CRPD. In this comparison, we explore the effects of CRPD across a wide range of system and taskset parameters. We introduce a new task layout optimisation technique that maximises system schedulability via reduced CRPD. Finally, we extend CRPD analysis to hierarchical systems, allowing the effects of cache when scheduling multiple independent applications on a single processor to be analysed

    Time-Aware Dynamic Binary Instrumentation

    Get PDF
    The complexity of modern software systems has been rapidly increasing. Program debugging and testing are essential to ensure the correctness of such systems. Program analysis is critical for understanding system’s behavior and analyzing performance. Many program analysis tools use instrumentation to extract required information at run time. Instrumentation naturally alters a program’s timing properties and causes perturbation to the program under analysis. Soft real-time systems must fulfill timing constraints. Missing deadlines in a soft real-time system causes performance degradation. Thus, time-sensitive systems require specialized program analysis tools. Time-aware instrumentation preserves the logical correctness of a program and respects its timing constraints. Current approaches for time-aware instrumentation rely on static source-code instrumentation techniques. While these approaches are sound and effective, the need for running worst-case execution time (WCET) analysis pre- and post-instrumentation reduces the applicability to only hard real-time systems where WCET analysis is common. They become impractical beyond microcontroller code for instrumenting large programs along with all their library dependencies. In this thesis, we introduce theory, method, and tools for time-aware dynamic instrumentation realized in DIME tool. DIME is a time-aware dynamic binary instrumentation framework that adds an adjustable bound on the timing overhead to the program under analysis. DIME also attempts to increase instrumentation coverage by ignoring redundant tracing information. We study parameter tuning of DIME to minimize runtime overhead and maximize instrumentation coverage. Finally, we propose a method and a tool to instrument software systems with quality of service (QoS) requirements. In this case, DIME collects QoS feedback from the system under analysis to respect user-defined performance constraints. As a tool for instrumenting soft real-time applications, DIME is practical, scalable, and supports multi-threaded applications. We present several case studies of DIME instrumenting large and complex applications such as web servers, media players, control applications, and database management systems. DIME limits the instrumentation overhead of dynamic instrumentation while achieving a high instrumentation coverage

    Leveraging virtualization technologies for resource partitioning in mixed criticality systems

    Get PDF
    Multi- and many-core processors are becoming increasingly popular in embedded systems. Many of these processors now feature hardware virtualization capabilities, such as the ARM Cortex A15, and x86 processors with Intel VT-x or AMD-V support. Hardware virtualization offers opportunities to partition physical resources, including processor cores, memory and I/O devices amongst guest virtual machines. Mixed criticality systems and services can then co-exist on the same platform in separate virtual machines. However, traditional virtual machine systems are too expensive because of the costs of trapping into hypervisors to multiplex and manage machine physical resources on behalf of separate guests. For example, hypervisors are needed to schedule separate VMs on physical processor cores. Additionally, traditional hypervisors have memory footprints that are often too large for many embedded computing systems. This dissertation presents the design of the Quest-V separation kernel, which partitions services of different criticality levels across separate virtual machines, or sandboxes. Each sandbox encapsulates a subset of machine physical resources that it manages without requiring intervention of a hypervisor. In Quest-V, a hypervisor is not needed for normal operation, except to bootstrap the system and establish communication channels between sandboxes. This approach not only reduces the memory footprint of the most privileged protection domain, it removes it from the control path during normal system operation, thereby heightening security

    Heap Data Allocation to Scratch-Pad Memory in Embedded Systems

    Get PDF
    This thesis presents the first-ever compile-time method for allocating a portion of a program's dynamic data to scratch-pad memory. A scratch-pad is a fast directly addressed compiler-managed SRAM memory that replaces the hardware-managed cache. It is motivated by its better real-time guarantees vs cache and by its significantly lower overheads in access time, energy consumption, area and overall runtime. Dynamic data refers to all objects allocated at run-time in a program, as opposed to static data objects which are allocated at compile-time. Existing compiler methods for allocating data to scratch-pad are able to place only code, global and stack data (static data) in scratch-pad memory; heap and recursive-function objects(dynamic data) are allocated entirely in DRAM, resulting in poor performance for these dynamic data types. Runtime methods based on software caching can place data in scratch-pad, but because of their high overheads from software address translation, they have not been successful, especially for dynamic data. In this thesis we present a dynamic yet compiler-directed allocation method for dynamic data that for the first time, (i) is able to place a portion of the dynamic data in scratch-pad; (ii) has no software-caching tags; (iii) requires no run-time per-access extra address translation; and (iv) is able to move dynamic data back and forth between scratch-pad and DRAM to better track the program's locality characteristics. With our method, code, global, stack and heap variables can share the same scratch-pad. When compared to placing all dynamic data variables in DRAM and only static data in scratch-pad, our results show that our method reduces the average runtime of our benchmarks by 22.3%, and the average power consumption by 26.7%, for the same size of scratch-pad fixed at 5% of total data size. Significant savings in runtime and energy across a large number of benchmarks were also observed when compared against cache memory organizations, showing our method's success under constrained SRAM sizes when dealing with dynamic data. Lastly, our method is able to minimize the profile dependence issues which plague all similar allocation methods through careful analysis of static and dynamic profile information
    corecore