Mark Shannon · 2008
Register allocation is a critical part of any compiler, yet register allocation for stack machines has received relatively little attention in the past. We present a framework for the analysis of register allocation methods for stack machines which has allowed us to analyse current methods. We have used this framework to design the first truly procedure-wide register allocation methods for stack machines. We have designed two such methods, both of which outperform current techniques. This work was funded by the AMADEUS project, part of the DTI’s Next Wave Technologies and Markets Program, in collaboration with MPE Ltd.
Cited by 0
V. Krishna N, Jens Palsberg · 2009
Abstract. Commonly-used memory units enable a processor to load and store multiple registers in one instruction. We showed in 2003 how to extend gcc with a stack-location-allocation (SLA) phase that reduces memory traffic by rearranging the stack and replacing some load/store instructions with load/store-multiple instructions. While speeding up the target code, our technique leaves room for improvement because of the phase ordering of register allocation before SLA. In this paper we present SARA which combines SLA and register allocation into a single phase. SARA creates a synergy among register assignment, spill-code genera-tion, and SLA that makes the combined phase generate faster code than a sequence of the individual phases. We specify SARA by an integer linear program generated from the program text. We have implemented SARA in gcc, replacing gcc’s own implementation of register allocation. For our benchmarks, our results show that the target code is up to 16% faster than gcc with a separate SLA phase. 1
Cited by 0
V. Krishna Nandivada, Jens Palsberg · Lecture notes in computer science · 2006
Cited by 6Open access
Seah, Jie Yu · DR-NTU (Nanyang Technological University) · 2024
Ensuring a fair distribution of teaching workload among faculty members has long been a critical and complex task for universities around the globe. Therefore, it is not surprising that schools are turning to technology, developing applications aimed at streamlining the allocation process and saving time. This paper presents the Automated Teaching Allocation System (ATAS), a modern web-based application, built specifically to address these challenges and optimise workload management for the School of Computer Science and Engineering (SCSE) at Nanyang Technological University (NTU). The ATAS features a highly configurable and flexible algorithm, allowing the academic staff to fine-tune the allocation process to match any allocation strategies. In addition, it features the Interactive Workload Balancer, a tool aimed to help make manual adjustments to allocation plans efficient and intuitive.
Cited by 0
Geon-Woo Kim, Wook-Jong Han · 2004
Network security technologies, such as IPsec and TLS, protect sessions from various illegal accesses and guarantee end-to-end security through a combination of security modes, security protocols and cipher algorithms. Since each packet should wait for appropriate security policy service and security associations to be negotiated, we need to manually control security service order supported by kernel. In this paper, we propose a new method for network flow control in order to make processes that have the highest priority continue their works with little delay by using special type of stack Instead of queue.
Cited by 0
Eun-sun Cho, Kwangkeun Yi · 2007
. We suggest an escaping analysis for Java programs, to identify stack-allocatable objects. This analysis considers an object escaping if it is used after the deactivation of the method that created it. For each object, this analysis records the interprocedural movement of the method of its creation. An object is considered escaping the method that created it, if the method of its creation has been already deactivated. Our approach is dierent from prior works, in that special cares of non-local variables need not be taken. This enables us to handle some cases that are missed in the previous approach. The whole analysis is done in a single phase. 1
Cited by 0
Grcevski, Nikola · TIB KMO / FLOWWORKS GmbH · 2020
In this talk we'll explore ways that the JVM can reduce the object allocation rate of Java programs automatically by performing stack allocation of objects that are known to be local to a method, or in compiler terms non-escaping. The discussion is focused on employing the escape analysis optimization in the OpenJDK Hotspot C2 compiler to determine which Java objects can be stack allocated, and how this optimization can reduce pressure on the Java JVM garbage collectors. We'll show some results on how various real world applications can benefit from such optimizations and describe the methodology of how we prototyped this in OpenJDK. Our work is only in prototype state at this moment and we are looking for more data to understand how broadly applicable this optimizations is. This work wouldn't be possible without free open source access to Java.
Cited by 0Open access
Deepak Mohan · Zenodo (CERN European Organization for Nuclear Research) · 2026
Vedic Astrology Computation System (Jyotish) 180-280× Throughput Improvement with Zero Drift
Cited by 0Open access
2008
Stack allocation of objects offers more efficient use of cache memories on modern computers, but finding objects that can be safely stack allocated is difficult, as interprocedural escape analysis is imprecise in the presence of virtual method dispatch and dynamic class loading. We present a new technique for doing optimistic stack allocation of objects. Our technique does not require interprocedural analysis and is effective in the presence of dynamic class loading, reflection and exception handling. Moreover, we usually achieve higher proportions of stack allocated data than static strategies. In this paper we present optimistic stack-allocation for Java-like languages. For experiments we use traces of running Java programs to drive simulations of various garbage collection and allocation strategies.
Cited by 0
Deepak Mohan · Zenodo (CERN European Organization for Nuclear Research) · 2026
Vedic Astrology Computation System (Jyotish) 180-280× Throughput Improvement with Zero Drift
Cited by 0Open access
Péter Molnár, Andreas Krall, Florian Brandner · 2009
Stack allocation of objects reduces the cost of object allocation and garbage collection and can thus lead to large reductions in runtime. Escape analysis can statically determine which objects are eligible to stack allocation by examining the escape behavior of allocation sites. If objects created at a particular allocation site do not escape, i.e., are guaranteed not to leave the scope of the allocation site, stack allocation instead of expensive heap allocation can be applied.
Cited by 7
Anand, Aditya, Adithya, Solai, Rustagi, Swapnil et al. · Zenodo (CERN European Organization for Nuclear Research) · 2024
This artifact is for the paper "Optimistic Stack Allocation and Dynamic Heapification for Managed Runtimes" conditionally accepted at PLDI 2024.
Cited by 1Open access
Aditya Anand, S S S N V Adithya, Swapnil Rustagi et al. · Proceedings of the ACM on Programming Languages · 2024
The runtimes of managed object-oriented languages such as Java allocate objects on the heap, and rely on automatic garbage collection (GC) techniques for freeing up unused objects. Most such runtimes also consist of just-in-time (JIT) compilers that optimize memory access and GC times by employing escape analysis: an object that does not escape (outlive) its allocating method can be allocated on (and freed up with) the stack frame of the corresponding method. However, in order to minimize the time spent in JIT compilation, the scope of such useful analyses is quite limited, thereby restricting their precision significantly. On the contrary, even though it is feasible to perform precise program analyses statically, it is not possible to use their results in a managed runtime without a closed-world assumption. In this paper, we propose a static+dynamic scheme that allows one to harness the results of a precise static escape analysis for allocating objects on stack, while taking care of both soundness and efficiency concerns in the runtime. Our scheme comprises of three key ideas. First, using the results of a statically performed escape analysis, it performs optimistic stack allocation during JIT compilation. Second, it handles the challenges associated with features that may invalidate the optimism, using a novel idea of dynamic heapification. Third, it uses another novel notion of stack ordering, again supported by a static analysis, to reduce the overheads associated with the checks that determine the need for heapification. The static and the runtime components of our approach are implemented in the Soot optimization framework and in the tiered infrastructure of the Eclipse OpenJ9 VM, respectively. To evaluate the benefits, we compare our scheme with the existing escape analysis and find that it succeeds in allocating a much larger number of objects on the stack. Furthermore, the enhanced stack allocation leads to a significant reduction in the number of GC cycles and brings decent performance improvements, especially suited for constrained-memory environments.
Cited by 3Open access
Mads Tofte, Jean-Pierre Talpin · 1993
We present a stack-allocation scheme for the call-by-value lambda calculus typed according to Milner's polymorphic type discipline. All the values a program produces, including function closures, are put into regions at runtime. Regions are allocated and deallocated in a stack-like manner. Region inference and effect inference is used to infer where regions can be allocated and deallocated. By allowing a limited form of polymorphic recursion in region types, the region inference is able to distinguish between the life-times of different invocations of a function, even when the function is recursive. The region analysis is eager in its attempt to reclaim memory as quickly as possible. The main result of this report is that region inference is safe, a result which entails that regions really can be deallocated, when region inference says they can. We give detailed proofs of this claim, which (in various forms) has been advanced several times in the literature. An algorithm for implementi...
Cited by 0
Yanmin Zu, Yuting Zhu, Guizhi Xu et al. · 2025
To enhance the output efficiency and mitigate performance degradation of multi-stack fuel cell system(MFCS) for stationary power generation, this paper proposes a power allocation strategy for Proton Exchange Membrane Fuel Cell (PEMFC) system that balances multi-stack consistency and system efficiency. This strategy fully considers the performance differences among stacks, constructs a multi-objective optimization function based on system operating efficiency and fluctuation adaptability, and solves the objective function using the Slime mould algorithm (SMA). Simulation and comparative analysis based on fluctuating load demands show that the proposed power allocation strategy improves the average system efficiency from 44.07% to 46.31%, reduces the equivalent hydrogen consumption from 4554 kg to 4254 kg, and reasonably allocates output power according to the performance differences of individual stacks. This approach helps extend the lifespan of the multi-stack fuel cell system, facilitates long-term stable operation of stationary hydrogen fuel cell multi-stack power generation systems, and supports the development of new power systems.
Cited by 0
Hamid Bakhshi Yamchi, Mohsen Kandidayeni, Sousso Kélouwani et al. · 2024
Multi-stack fuel cell systems (MFCSs), composed of multiple low-power fuel cells operating independently, offer increased power range, reliability, space flexibility, and modularity, making them ideal for heavy-duty applications. The performance of MFCSs is influenced by both the number and combinations of stacks that are used to construct the system. This paper examines the impact of these factors on the operational costs of fuel cell systems (FCS), encompassing hydrogen consumption and stack degradation costs. Three case studies are investigated, and in each case, the best allocation scheme is introduced based on the value of the objective function. Sequential quadratic programming (SQP) is selected to perform energy management among power sources. Also, the results demonstrate that increasing the number of stacks from two to three resulted in a 6.33% reduction in operational costs, while further augmenting the number of stacks from three to four notably decreased expenses by approximately 14.87%.
Cited by 2
Zhen Wang, Zhen Wang, Guoqiang Liu et al. · Journal of Power Sources · 2024
Cited by 9
Jianlin Li, Laijun Chen, Hengrui Ma et al. · 2023
In order to improve the output power of multi-stack fuel cell (MFC) system and delay the decline of single-stack life, this paper proposes an adaptive power distribution method for MFC power generation system based on the operational performance of the power stacks, each power stack is connected to a DC/DC converter separately to realize the system power regulation, and the virtual sag control algorithm is used to realize the adaptive power distribution. It can realize the adaptive power distribution, and the method can make the DC bus voltage maintain stable and help enhance the stability of the system and improve the output power.
Cited by 1
2008
Cited by 0
Dung‐Ying Lin, Yu-Jie Kong, ManWo Ng · Journal of the Operational Research Society · 2023
This paper introduces and solves a real-world problem that arises at container ports, namely the double stack railcar allocation problem. The key challenge in the double stack railcar allocation problem is to balance the number of containers loaded and the railcar usage, while respecting the loading constraints for double stack trains. To capture the key characteristics of the double stack railcar allocation problem, an integer linear optimization model is presented. The model is found to be computationally prohibitive for a state-of-the-art off-the-shelf solver (CPLEX). Hence, a tailored solution method is proposed that manages to drastically reduce the computation times, sometimes by more than 99%. In a detailed case study, insights into the double stack railcar allocation problem are revealed and discussed.
Cited by 3