This paper describes an alternative technique for constructing a superoptimizer, which is called the Superoptimizer or GSO. Some sample results of the superoptimizer are presented. The basic design and structure of th...
详细信息
ISBN:
(纸本)0897914759
This paper describes an alternative technique for constructing a superoptimizer, which is called the Superoptimizer or GSO. Some sample results of the superoptimizer are presented. The basic design and structure of the GNU C compiler are discussed. Subsequently it is shown as to how the results of the superoptimizer were used to enable the GNU C compiler to produce very compact code sequences on the RS/6000.
Synchronizing Resources (SR) is a language for writing distributed programs which supports many forms of interprocess communication to obtain high expressiveness. The design of SR is evaluated from the perspective of ...
详细信息
ISBN:
(纸本)0818625856
Synchronizing Resources (SR) is a language for writing distributed programs which supports many forms of interprocess communication to obtain high expressiveness. The design of SR is evaluated from the perspective of parallel programming. Several programs for parallel applications implemented in SR are studied, and some observations are made about the expressiveness and ease of use of SR. The results indicate that nearly all facilities provided by SR are useful for parallel programming. The language lacks message passing through mailboxes, message forwarding, and globally shared variables. SR is also fairly simple to understand. A strong point in the design is the orthogonality of the message sending and receiving constructs. Some points of criticism concern the multicast mechanism and the type-insecurity of the language.
In this paper, we first characterize distributed real-time systems by the following two properties that have to be supported: best effort and least suffering. Then, we propose a distributed real-time object model DRO ...
详细信息
ISBN:
(纸本)0897915399
In this paper, we first characterize distributed real-time systems by the following two properties that have to be supported: best effort and least suffering. Then, we propose a distributed real-time object model DRO which complies these properties. Based on the DRO model, we design an object oriented programminglanguage DROL: an extension of C++ with the capability of describing distributed real-time systems. The most eminent feature of DROL is that users can describe on meta level the semantics of message communications as a communication protocol with sending and receiving primitives. With this feature, we can construct a flexible distributed real-time system satisfying specifications which include timing constraints. We implement a run-time system of DROL on the ARTS kernel, and evaluate the efficiency of the prototype implementation as well as confirm the high expressive power of the language.
We describe an approach to implementing a wide-range of concurrency paradigms in high-level (symbolic) programminglanguages. The focus of our discussion is STING, a dialect of Scheme, that supports lightweight thread...
详细信息
ISBN:
(纸本)0897914759
We describe an approach to implementing a wide-range of concurrency paradigms in high-level (symbolic) programminglanguages. The focus of our discussion is STING, a dialect of Scheme, that supports lightweight threads of control and virtual processors as first-class objects. Given the significant degree to which the behavior of these objects may be customized, we can easily express a variety of concurrency paradigms and linguistic structures within a common framework without loss of efficiency. Unlike parallel systems that rely on operating system services for managing concurrency, STING implements concurrency management entirely in terms of Scheme objects and procedures. It, therefore, permits users to optimize the runtime behavior of their applications without requiring knowledge of the underlying runtime system. This paper concentrates on (a) the implications of the design for building asynchronous concurrency structures, (b) organizing large-scale concurrent computations, and (c) implementing robust programming environments for symbolic computing.
The object-oriented design process is investigated within the classic software development classification of Analysis, design, and implementation. When all development is performed using object oriented methods, OOD i...
详细信息
ISBN:
(纸本)0201533723
The object-oriented design process is investigated within the classic software development classification of Analysis, design, and implementation. When all development is performed using object oriented methods, OOD is best characterized as a transformational process, mapping declarative descriptions of objects and classes to implementation plans. Subphases of class design, system design, and program design accommodate and rationalize OO practices including abstraction, prototyping, refinement, bottom-up composition, delegation, interoperability, clustering objects into processes, resource management design, tuning and optimization.
This study evaluates a global optimization technique that avoids unconditional jumps by replicating code. When implemented in the back-end of an optimizing compiler, this technique can be generalized to work on almost...
详细信息
ISBN:
(纸本)0897914759
This study evaluates a global optimization technique that avoids unconditional jumps by replicating code. When implemented in the back-end of an optimizing compiler, this technique can be generalized to work on almost all instances of unconditional jumps, including those generated from conditional statements and unstructured loops. The replication method is based on the idea of finding a replacement for each unconditional jump which minimizes the growth in code size. This is achieved by choosing the shortest sequence of instructions as a replacement. Measurements taken from a variety of programs showed that not only the number of executed instructions decreased, but also that the total cache work was reduced (except for small caches) despite increases in code size. Pipelined and superscalar machines may also benefit from an increase in the average basic block size.
This paper introduces Composable Attribute Grammars (CAGs), a formalism that extends classical attribute grammars to allow for the modular composition of translation specifications and of translators. CAGs bring to co...
详细信息
ISBN:
(纸本)0897914538
This paper introduces Composable Attribute Grammars (CAGs), a formalism that extends classical attribute grammars to allow for the modular composition of translation specifications and of translators. CAGs bring to complex translator writing systems the same benefits of modularity found in modern programminglanguages, including comprehensibility, reusability, and incremental metal-compilation. A CAG is built from several smaller component AGs, each of which solves a particular subproblem, such as name analysis or register allocation. A component AG is based upon a simplified phrase-structure that reflects the properties of its subproblem rather than the phrase-structure of the source language. Different component phrase-structures for various subproblems are combined by mapping them into a phrase-structure for the source language. Both input and output attributes can be associated with the terminal symbols of a component AG. Output attributes enable the results of solving a subproblem to be distributed back to anywhere that originally contributed part of the subproblem, e.g. transparently distributing the results of global name analysis back to every symbolic reference in the source program. After introducing CAGs by way of an example, we provide a formal definition of CAGs and their semantics. We describe a subclass of CAGs, called separable CAGs, that have favorable implementation properties. We discuss the novel aspects of CAGs, compare them to other proposals for inserting modularity into attribute grammars, and relate our experience using CAGs in the Linguist translator-writing system.
Denotational specifications of programminglanguages are translated into Prolog, which provides a mechanism for parsing languages. Denotational semantic functions are expressed as Prolog relations, providing an execut...
详细信息
ISBN:
(纸本)0897914724
Denotational specifications of programminglanguages are translated into Prolog, which provides a mechanism for parsing languages. Denotational semantic functions are expressed as Prolog relations, providing an executable specification that can be used as a prototyping tool in the study of programminglanguagedesign. Both direct and continuation semantics are treated.
Ada9x protected records provide an indirect communication method whereby tasks read and write the state of protected objects. The language ensures synchronisation by mutual exclusion for both readers and writers witho...
详细信息
Control abstraction is the process by which programmers define new control constructs, specifying a statement ordering separately from an implementation of that ordering. It is argued that control abstraction can and ...
详细信息
ISBN:
(纸本)0818625856
Control abstraction is the process by which programmers define new control constructs, specifying a statement ordering separately from an implementation of that ordering. It is argued that control abstraction can and should play a central role in parallel programming. Control abstraction can be used to build new control constructs for the expression of parallelism. A control construct can have several implementations, representing the varying degrees of parallelism to be exploited on different architectures. Control abstraction also reduces the need for explicit synchronization, since it admits a precise specification of control flow. Several examples are used to illustrate the benefits of control abstraction. It is also shown that one can efficiently implement a parallel programminglanguage based on control abstraction. It is argued that, because of the enormous benefits and reasonable costs of control abstraction, it should be included in explicitly parallel programminglanguages.
暂无评论