A new hardware paradigm technology encompassing reprogrammable circuitry commands the versatility of general design processors and the speed of application-specific circuits. One manifestation of this design stratagem is the field programmable gate array, a collection of logic functions whose software controlled interconnections can be altered at will to optimize select processing requirements. This technology can be utilized for rapid design layout prototyping and form the basis of computer architectures.
Introduction
In recent decades there has been an ongoing race to improve the speed of electronics and computers. Novel software applications have increased in complexity, enabling computers to streamline the lives of many. Consumer electronics like personal digital assistants (PDAs), laptops, and next-generation cell phones provide a level of convenience that many have become dependent upon. Increased demand for advanced functionality requires increased hardware performance; computer manufacturers have implemented a variety of new technologies to meet these requirements. Two methods that have been employed previously are the redesign of existent processor architectures and the use of custom designed auxiliary processors called application-specific integrated circuits (ASICs) [1]. These solutions cannot be extended indefinitely; other methods are needed. One promising alternative involves rethinking the conventional process by implementing reconfigurable computer chips, also referred to as field programmable gate arrays (FPGAs).
Computing Fundamentals Crash Course
The complex processes performed by all computers can be broken down into simple expressions involving a mathematics called Boolean algebra. From viewing web pages to locating an automobile with a global positioning system, all computing machinery ultimately relies on the logical manipulation of two states: true and false. More complex functions like addition and multiplication can be achieved by the systematic manipulation of these true and false conditions. Combinations of these basic operations allow for the realization of more sophisticated functions.
The basic computer is an interconnection of many specific purpose systems. For example, one system might compute the sum of two numbers, while another might store this data for later use. Integrated chip designers choose the systems and architecture based on the needed functionality of the circuit. For instance, the processor in a basic calculator does not require a robust video display system or extensive software. Many computing devices can integrate a variety of functionality on a single chip, called a microprocessor (also referred to as the central processing unit, or CPU). Personal computers require a variety of systems that cannot be contained on a single microprocessor.
Processor Design Methodologies
In general, there are two ways to approach the design of a computing device, the choice of which is dependent upon the breadth of requisite functions. If a device has a limited number of functions to perform, it will be specifically designed to perform those operations in the most efficient way. Conversely, a device that needs to perform a larger variety of functions that may change is more general purpose in design. Examples of specific designs are digital clocks, automotive engine management computers, and cell phones. General designs are devices like personal computers.
General Design Example
The complexity of personal computer design can be explained by its functional requirements. When one purchases a computer, one expects to run applications such as a favorite video game or accounting software. Computer sales would hardly be what they are today if all the applications that the computer could run were hardwired and unchangeable. Furthermore, a personal computer is designed to accept a variety of peripheral devices such as DVD players, printers, and displays from different manufacturers. Because personal computers have the capacity to perform a wide range of functions, their processors fall under the category of a general-design processor.
One consequence of a general design processor is a heavy reliance on software instructions. These processors can be extremely versatile, yet at the cost of optimized efficiency (speed). Instead of having hardware doing most of the thinking required for the function, a software application acts like a manager, sending the processor general tasks to perform (e.g. adding or comparing two numbers). Although the software itself is an interconnection of simple instructions to the processor (Fig. 1), it emulates the behavior of a specific design processor. This situation is analogous to operating within a large bureaucracy. Although generalization is necessary in the management of large organizations like nations and corporations, it may unnecessarily complicate specific tasks.
Specific Design Example
After buying a personal computer, you might realize that you need a graphics accelerator card to make a favorite video game run more smoothly. Your computer may be able to run the game sufficiently on its own, but is unable to process the video information as fast and most efficiently as possible. As noted previously, this is a result of the generality that the personal computer was designed for. The graphics accelerator card, on the other hand, has a very specific function and is able to perform its function more efficiently. However, the graphics processor cannot be reprogrammed to accelerate a word processor or compute mathematical functions. The card can only be used for the function it was specifically designed for.
This example illustrates the major advantage and disadvantage to having an application-specific computing device. Instead of having to account for a wide range of possible functions, a designer knows exactly what type of input and output the processor will require and display. This makes such a processor fast and efficient at the cost of being narrowly purposed.
Conventional Improvement Methods
The computing industry has responded in a number of ways to the increasing demand for advanced hardware performance. First, and perhaps most readily noticeable, is an increase in clock speed driving computing devices. The clock of a computing device coordinates the sequence of events in the overall function of the device. To illustrate, a processor that added two numbers might work something like this:
(1) On the first clock cycle, get the two numbers from the input (keyboard, disk, file, etc.).
(2) On the second clock cycle, add them.
(3) On the third clock cycle, send the result to the output (digital display, file, etc.).
Increasing clock speed improves the number of operations performed in a given time, enabling the processor to compute faster. But this solution is not ideal, since physical limitations of the hardware bar this technique from being exploited indefinitely. Also, increased clock speeds require greater power requirements, a characteristic incompatible with portable devices like laptops and PDAs.
Second, manufacturers have increased the number of transistors in the processor. Like increasing the clock speed, this effectively enables the computer to accomplish more tasks in the same amount of time. This technique is effective only if there are a large number of tasks that are effectively “waiting in line” to be completed. In a simple process like the adding example, extra transistors may not improve the speed of the process. In the addition of more transistors, a manufacturer must either decrease each transistor’s individual size or provide more space to accommodate the increased numbers. Miniaturization is cost intensive and can complicate chip design. More transistors also mean greater power consumption and consequently dissipate more heat.
Third, as illustrated with the specific design graphics accelerator card, manufacturers will produce auxiliary processors designed to handle fixed operations. Although the graphics accelerator is a separate card inserted in the computer, auxiliary processors can be individual chips or a sub-system in a large general design microprocessor, taking the form of an application-specific integrated circuit, or ASIC.
None of these solutions address the inherent inefficiency of present general-design computer architecture. The central problem centers upon the processor’s heavy reliance on software, necessary to manage the flow of commands to the processor. At the other end of the processors spectrum, ASICs are fast and efficient, but fall short of meeting the common computing needs of many users being too application specific. This dilemma motivated the development of a compromise between these two extremes.
Field Programmable Gate Arrays (FPGAs)
As the age of the integrated circuit (IC) came into full swing, the electronic hobbyists were forced to stay behind [2]. No longer could they mirror the industry’s creations on garage workbenches. As companies have created new devices, they have done so with silicon chips. Instead hobbyists have relied upon a large number of general-purpose components to implement what industry has accomplished on a smaller and more power-efficient scale.
Furthermore, IC designers are left with the daunting task of perfecting designs before implementation. IC fabrication is an expensive process carried out with batch fabrication, a massively parallel manufacturing technique [3], making design errors a costly proposition. Simulation software is used to detect errors, but since they inherently rely upon mathematical models of real world electronic elements, they can sometimes contain errors only discernable in physical prototypes. As a result, many companies sought an inexpensive way to prototype circuit designs.
This environment provided the niche eventually filled by FPGAs, arrays of basic digital logic functions with programmable interconnections. Their structure can be visualized as a large array of logic devices (like two-input AND gates) with interconnecting wires. At each wire intersection lies a user-programmable switch. A designer can use a software application to produce a precise circuit. The software then programs each switch in the FPGA to implement the designer’s function.
Reconfigurable Computing
Although this novel type of chip was originally intended for prototyping, many realized its potential for processing. Because of their re-programmability, FPGAs are amenable to performing several large classes of computing functions. Additionally, they are optimally programmed for the processing task at hand. These devices effectively emulate the desirable characteristics of general- and specific-design processors.
FPGAs can be integrated into present computer architectures. Since the device has the capacity to implement several functions, computing processes will not rely as heavily on software management and become faster as a consequence. For instance, if a user wants to filter an image, they can load a filter implementation via a software program to alter the FPGA, using it to modify the picture file [2]. Beyond image processing, entire systems can be designed around a reconfigurable computing architecture whose range of functions would rival that of present day general- and specific-designed processor systems.
To this end, several universities and companies have established projects designed to streamline and standardize the use of FPGAs as processors. These methods offer several advantages, including a compromise between the versatility of a general processor and the speed of an ASIC. But in spite of these benefits, there are several drawbacks keeping back a widespread migration towards reconfigurable computing. First, it takes time to program the device to implement a function. Even though programmable devices have speeds that are competitive with ASICs, their programming time must be taken into account. Second, the input/output hardware that FPGA-like devices emulate will need to have the physical connections present (e.g. phone jacks for modems, video connectors, etc.). Third, the reprogramming process requires circuitry to implement changes in the device. Thus, there will always be a need for general and specific design devices to completely address computing needs.
Like most new technologies, reconfigurable hardware will most likely find a place to supplement existing technology, not exclusively replace it. The many strengths of this new hardware paradigm ensure its position as a significant force in modern technology in the years to come.