The goal of this project is to build a system that is at once a supercomputer and a high-performance communication system. The machine is based on a modern communication processors -- the Analog Devices TigerSHARC® -- and is designed to be the fastest in the world on media processing, communication, security, and other modern fixed-point applications. The project includes the design and construction of the hardware, firmware, system software, and application software of the system. The ILLIAC 6 web site is here.
Programming communications systems such as cellular handsets, basestations or high-performance network routers is difficult in the extreme. The designs are power-constrained either because they operate on batteries or because a lot of hardware is packed into a relatively small package that must operate with ordinary air-cooling. Consequently they have very little surplus computational bandwidth beyond the minimum required for their function. They are by nature real-time systems; they must be able, in the steady state, to keep up with the flow of data through them. They are architecturally complex because they must achieve very high throughput rates, in terms of arithmetic operations per second, memory accesses per second, input/output operatoins per second, and so on.
These systems are often programmed in full or part in assembly language. This makes reaching the required performance technically feasible and even straightforward in a way, but at the cost of a long development time and the obsolescence of programs as the machine designs evolve over time. Programming them in high-level languages like C or C++ is not straightforward, because the programming models offered by C and C++ are a very poor match for a communication system, in terms of data types, abstractions for communication and control, and so on. It is possible to build an optimizing compiler for such a machine but more problematic to rely on it for the consistent delivery of high performance.
The goal of this project is to explore non-traditional code generation
technology for communication systems. We wish to offer the programmer
a natural notation in which to express communications processing in an
abstract high-level format, and to do the kind of systematic
exploration of possibilities and tradeoffs that experienced
programmers of such systems do in dividing a communications
computation and allocating the computational resources of a
communication system to it. We intend to begin with the problem of
Domain is a declarative programming language in which types are partial orders, statements are constraints, and to execute a program means to solve for the least fixed point of its constraints. The goal of Domain is to allow one to program a computer in something akin to pure semantics. Domain is a mathematical programming language, and it is intended to go beyond the limited expressive power of functional and single-assignment languages in giving programmers a rich mathematical setting that is free from the notions of time and state while nevertheless allowing complex iterative computation to be performed.
Domain is ideal for highly parallel execution. An implementation of Domain operates directly on the dependence structure of a program, and so the true parallelism in a computation is evident and at hand in a Domain implementation.
The goal of this project is to specify Domain completely and to prove properties of the language; to create high-quality implementations of it on sequential and parallel computer systems; and to study the paradigm of partial-order-based computation as applied to some important application areas.