Two strategies for supporting asynchronous interrupts are: the use of the processor's hardware interrupt system and the use of polling. The advantages of polling include: portability, simplicity, and low cost for ...
详细信息
ISBN:
(纸本)089791595X
Two strategies for supporting asynchronous interrupts are: the use of the processor's hardware interrupt system and the use of polling. The advantages of polling include: portability, simplicity, and low cost for handling interrupts. Unfortunately, polling has an overhead for the explicit interrupt checks inserted in the code. This paper describes balanced polling, a method for placing the interrupt checks which has a low overhead and also guarantees an upper bound on interrupt latency. This method has been used by Gambit (an optimizing native code compiler for Scheme) to support a number of features including multiprocessing and stack overflow detection. The overhead of balanced polling is less than for call-return polling which places interrupt checks at every procedure entry and exit. The overhead of call-return polling is typically 70% larger (but sometimes over 400% larger) than the overhead of balanced polling.
This paper describes a flexible type system which combines overloading and higher-order polymorphism in an implicitly typed language using a system of constructor classes - a natural generalization of type classes in ...
详细信息
ISBN:
(纸本)089791595X
This paper describes a flexible type system which combines overloading and higher-order polymorphism in an implicitly typed language using a system of constructor classes - a natural generalization of type classes in Haskell. We present a wide range of examples which demonstrate the usefulness of such a system. In particular, we show how constructor classes can be used to support the use of monads in a functional language. The underlying type system permits higher-order polymorphism but retains many of many of the attractive features that have made the use of Hindley/Milner type systems so popular. In particular, there is an effective algorithm which can be used to calculate principal types without the need for explicit type or kind annotations. A prototype implementation has been developed providing, amongst other things, the first concrete implementation of monad comprehensions known to us at the time of writing.
Proceedings includes 53 papers (4 appear in abstract form only) presented in 25 sessions dealing with various aspects of productivity and its associated measures, human factors quality assurance, experience with tools...
详细信息
Proceedings includes 53 papers (4 appear in abstract form only) presented in 25 sessions dealing with various aspects of productivity and its associated measures, human factors quality assurance, experience with tools, computer software and hardware, education, mathematical models, data base systems, standards, tool evaluation, management, office automation, the role played by the US Dept of Defense, software product quality as well as computerarchitecture. Topics covered include: programminglanguages, integrated circuits, image processing, industrial engineering and hierarchical control. Technical and professional papers from this conference are indexed with the conference code no. 00118 in the Ei Engineering Meetings (TM) database produced by Engineering Information, Inc.
One of the most important pragmatic advantages of functionallanguages is that concurrency in a program is implicit-there is no need for special constructs to express parallelism as is required in most conventional la...
详细信息
ISBN:
(纸本)089791175X
One of the most important pragmatic advantages of functionallanguages is that concurrency in a program is implicit-there is no need for special constructs to express parallelism as is required in most conventional languages. Furthermore, it is fairly easy for compilers to automatically determine the concurrency as a step toward decomposing a program for execution on a suitable parallel architecture. Yet it is often the case that one knows precisely the optimal decomposition for execution on a particular machine, and one can never expect a compiler to determine such optimal mappings in all cases. This paper is concerned with ways to allow the programmer to explicitly express this mapping of program to machine, by using annotations that, given a few minor constraints, cannot alter the functional semantics of the program. We show through several deeded examples the expressiveness and conciseness of the resulting " para-functionalprogramming methodology, using an experimental language called ParAlfl based on our ideas. We also give a formal denotational description of the mapping semantics using a notion of execution trees.
When the technique of abstract interpretation is used to analyze properties of programs that only depend upon their input/output behavior, the fact that the analysis holds for all implementations is generally obvious....
详细信息
ISBN:
(纸本)089791595X
When the technique of abstract interpretation is used to analyze properties of programs that only depend upon their input/output behavior, the fact that the analysis holds for all implementations is generally obvious. On the other hand, when an analysis is designed to capture a property of the storage or other runtime characteristic of the program, its validity is not obvious. In this paper we present a valid analysis of a property called reduction to variables, which holds for an expression when its result is stored in a location denoted by some variable. This is done by defining reduction to variables as a property of the proof trees which arise from a natural semantics for lazy evaluation, and then devising an instrumented semantics which captures this property. We first show that this instrumented semantics is correct with respect to the original statement of the property. We then present a static type system to compute reduction to variables and show its correctness with respect to the instrumented semantics.
The current thrust in undergraduate computer science education is to emphasize the laboratory nature of the discipline, but little has been done to introduce laboratories at the graduate level. Teaching techniques for...
详细信息
A new view of the high level computerarchitecture is introduced. Language theoretical concepts are applied to digital systems engineering in a manner which allows for more complete understanding of the direct executi...
详细信息
A new view of the high level computerarchitecture is introduced. Language theoretical concepts are applied to digital systems engineering in a manner which allows for more complete understanding of the direct execution machine. This new understanding places more emphasis on the system controller in the selection of the directly executed language. Direct execution system controller specification for any regular high level language is considered.
The possibility of expressing data sharing in FPs is discussed. The Paterson-Wegman unification algorithm is considered, in which data sharing is indispensable to achieve efficient (linear time) execution. An FP imple...
Register transfer languages are inadequate as a convenient mathematical formalism which will facilitate the description, analysis, and synthesis of digital systems at various levels of complexity. functional programmi...
详细信息
Register transfer languages are inadequate as a convenient mathematical formalism which will facilitate the description, analysis, and synthesis of digital systems at various levels of complexity. functionalprogramming is considered as an alternative, where the functions correspond to basic modules of combinational logic and the functionals represent the interconnections of these modules. That information which constitutes memory is represented as elements of sequences. Several examples are given, along with a methodology for synthesis.
Each Higher Level Language (HLL) defines a virtual machine. A compiler for a HLL translates a program written for this virtual machine into a program for a lower level target virtual machine, which could be at the ope...
详细信息
ISBN:
(纸本)9781450379212
Each Higher Level Language (HLL) defines a virtual machine. A compiler for a HLL translates a program written for this virtual machine into a program for a lower level target virtual machine, which could be at the operating system, machine language, microcode, or other level. The space and time needed to run the compiled program are influenced by the difference between the functionality and semantics of the source and target virtual machines (semantic gap). As part of the translation process, a compiler binds source language constructs to target language constructs. For example, a variable in a program will be bound to a memory location, and an operator in a program (such as Plus) will be bound to a target machine functional unit (such as an Adder).
暂无评论