Programming Crystalline Hardware

Programming Crystalline Hardware

Programming Crystalline Hardware Phillip Stanley­Marbell, Diana Marculescu Department of Electrical and Computer Engineering Carnegie Mellon University Pittsburgh, PA 15213­3890 fpstanley, [email protected] ABSTRACT facture time defect rates, these architectures must be inherently Advances in VLSI technologies, and the emergence of new sub- regular in their design, such that a failed component can be easily strates for constructing computing devices, necessitate a rethink- supplanted by a surrogate fault-free one. The future hardware ing of the manner in which software interacts with hardware. platforms share the common traits of: Traditional computing systems are typified by general purpose • processors, which abstract their hardware capabilities through Cheaper hardware real estate. Hardware substrates manu- instruction sets. Instruction sets and the abstractions they en- factured by chemical self-assembly and other promising courage at the programming language level, were however cre- non-silicon technologies may provide orders of magnitude ated, and well suited for, situations in which available hardware increased device integration. Having significantly more was limited and had to be multiplexed in time. In particular, hardware resources means there is decreasing motivation the organization of programs around tightly coupled modules, to multiplex hardware in time to perform computation. As be they functions, procedures or similar abstractions, make it a result of cheaper hardware, there is now: difficult to perform partitioning of applications both statically • Increased deployment of microprocessor based systems. Decreas- and at runtime. ing cost and physical dimensions makes it enticing to em- This paper presents preliminary work on a programming lan- bed processing hardware in more devices of everyday use, guage for crystalline architectures, based on the idea of structur- or to employ large numbers of them. The devices must ing programs around communication. The communication be- communicate, both internally and between devices to achieve tween components in a program is made explicit by employing maximal utility. Technology constraints however mean that an abstraction of names on which communication occurs, rather there is: than functions or procedures. Employing such an abstraction as the core of the language makes it possible to explicitly address • Increasing cost of wires and communication. The relative cost issues such as information-theoretic analysis of the communica- of wires in designs is increasing in traditional VLSI de- tion between components of a program, the safety of such com- signs, and the trend may likely also be true for non-silicon munications, and fault-tolerance of applications which execute technologies. Even though structures such as carbon nan- over a failure prone communication and computational substrate. otubes hold the promise of very fast wires, the difficulties involved in making Ohmic contacts between devices might still make many forms of inter-device communication ex- pensive. It is thus desirable to expose the occurrence and 1. INTRODUCTION costs of communication in hardware to the layers above, Programming languages in use today evolved in the era where that it may be considered during optimizations. most machines had von Neumann architectures. Hardware was expensive, and to permit the use of restricted amounts of hard- Despite these trends, the models of computation currently preva- ware to solve problems of reasonable size, problems were de- lent in programming languages do not lend themselves well to composed into elementary operations and sequences of these op- hardware architectures that are cellular in nature. An underlying erations executed. The tradeoffs included requiring memory to issue, is the close association of operations to be performed to store the sequences of operations (instructions) to be performed where they should be performed. It is most apparent in imper- by hardware, and decoding these stored operations. Along with ative programming languages, but is not inherently absent in these hardware abstractions, imperative programming languages, other paradigms [2]. Given an application composed of modular which naturally correspond to the programming model of Tur- units (e.g. functions), it is difficult to partition it for execution ing [19], have been dominant over the last 4 decades. An equiva- over a crystalline substrate, statically or dynamically. This dif- lent programming model embodied by the work of Godel¨ [6] and ficulty is largely due to the transfer of control between modules Church [4, 5] forms the basis for applicative programming, in such as functions. The fundamental goal in calling functions is which the underlying primitive is that of functions. This model an interaction—passing arguments to another module of code, has likewise been dominant in various forms, both in high level and possibly receiving results—not the transfer of control flow programming languages and intermediate representations (such or vectoring of a program counter value to a location in memory. as SSA [16, 1]) for both imperative and functional programming The partitioning of applications for execution over crystalline languages. hardware is of interest not only for hardware architectures which The traditional von Neumann hardware architectures and the are crystalline at the micro scale, such as hardware constructed abstractions they provide to software, are however giving way via chemical self-assembly or wire-limited VLSI designs. It is to architectures which are crystalline/regular, looking more like also of great interest in architectures which are crystalline at the cellular automata [21]. This change is being driven both by in- macro scale, such as large arrays of processing elements such creasing device integration in VLSI technologies, coupled with as microprocessors. In both cases, the communication between increasing costs of wires, and by new technologies such as those processing elements is a limiting factor that must be directly opti- fabricated by chemical self-assembly. As a result of high manu- mizable, and it is thus desirable for it to be explicitly represented. In addition to the changes in store with respect to hardware such an implementation for execution on a regular computing organization, are changes in the reliability of hardware. Com- substrate is made difficult by the interaction between the compo- puting systems today rely on an abstraction of perfectly reliable nent routines, which are manifest as transfers of control between hardware. This abstraction becomes increasingly difficult to main- the routines. tain as the underlying hardware becomes inherently prone to This paper describes ongoing efforts to design a programming runtime failures and manufacturing defects. The reliance on the environment based on the aforementioned ideas. Section 2 de- fault-free abstraction is exacerbated by the increasing dependence scribes our proposal, as embodied in a prototype language im- in modern culture on computing systems. Not all computations plementation. Section 3 provides a comparison between our pro- however, require perfectly reliable hardware. The data path por- posal and related efforts, by way of an example. Section 4 out- tions of many signal processing applications may be able to tol- lines additional challenges that need to be addressed, and new erate errors in computations, whereas the control flow in those opportunities presented by our approach. Related research is same applications may not. discussed in section 5, and the paper concludes with a summary Organizing applications around the fundamental concept of of the ideas presented and notes on the current status of our computation as interaction, enables many of the aforementioned efforts in Section 6 issues to be addressed in a coherent manner. Exposing the un- derlying communication in interactions between modules in an 2. COMMUNICATION ORIENTED PROGRAMMING application makes partitioning them for regular / crystalline sub- To explore the aforementioned ideas, we have begun an ef- strates easier. Once the basic unit of computation is commu- fort to design and implement an experimental programming lan- nication, it may become possible to apply ideas developed in guage, tentatively named M, based partly on formalisms of the Information Theory for communication in the presence of errors, π-calculus [12]. M is a simple language, in which the primary to the units of computation, which now rather than being the operators are on names which have . invocation of functions, are communication. communication type structure The language runtime is constructed as a name space—a hierar- 1.1 Example chy of names which are interfaces to system software support. The runtime name spaces of different systems can be connected, The following is an implementation in the C language, of the using a simple alphabet, for navigating and connecting name Sieve of Eratosthenes, an algorithm for computing prime numbers: spaces. The core ideas in M are: void sieve(void) • Structuring of applications around communication on names. { Programs are organized into modules, which are invoked int i, pi, nums[100]; by communication on names which represent them, rather for (i = 0; i < 100; i++) than transfer of control between modules. { nums[i] = i+1; • Representation of the runtime system as a hierarchical name space } with typed names. The runtime system and facilities akin to for (i = 1; i <= 10; i++) standard libraries, are

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    8 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us