Parallelizing Applications into Silicon
Publication Files
Publication Medium:
pages
Year of Publication:
Abstract
The next decade of computing will be dominated by embedded systems, information appliances and application specific computers. In order to build these systems, designers will need high-level compilation and CAD tools that generate architectures that eectively meet the needs of each application. In this paper we present a novel compilation system that allows sequential programs, written in C or FORTRAN, to be compiled directly into custom silicon or reconfigurable architectures. This capability is also interesting because trends in computer architecture are moving towards more reconfigurable hardware-like substrates, such as FPGA based systems. Our system works by successfully combining two resource efficient computing disciplines: Small Memories and Virtual Wires.For a given application, the compiler rst analyzes the memory access patterns of pointers and arrays in the program and constructs a partitioned memory system made up of many small memories. The computation is implemented by active computing elements that are spatially distributed within the memory array. A space-time scheduler assigns instructions to the computing elements in a way that maximizes locality and minimizes physical communication distance. It also generates an ecient static schedule for the interconnect. Finally, specialized hardware for the resulting schedule of memory accesses, wires, and computation is generated as a multiprocess state machine in synthesizable Verilog.With this system, implemented as a set of SUIF compiler passes, we have successfully compiled programs into hardware and achieve specialization performance enhancements by up to an order of magnitude versus a single general purpose processor. We also achieve additional parallelization speedups similar to those obtainable using a tightly interconnected multiprocessor.