Multiple Processor Computing

Multi-processing usually requires major alterations to your OS and the hardware is expensive. Here's a way to add flexible multi-processing capabilities to ordinary PCs. Additional processors can be added on slot-in cards on a normal PC, or integrated into the motherboard.

Instead of adding another Pentium, AMD or PowerPC processor, add one or more FPGA chips. These are dynamically reprogrammable under software control. They can go on the motherboard, or be added on slot-in cards. You can add as many as you want, with few changes to the OS.

Give these FPGAs direct access to your hard disks on the IDE (or SCSI) bus, and include a nice big chunk of fast cache RAM for them to use, and a controller chip. They are also connected to the main PC bus so the CPU can program them under software control.

The FPGAs are programmed on the fly to do special tasks, like the Digital Signal Processor (DSP) on your sound card or the Graphics Processing Unit (GPU) on your video card (neither of which are re-programmable). When you use a piece of software that requires a specific operation to be performed over and over again on all the data in a file. Your CPU passes the source code for this operation to your FPGA (or clusters it across a number of FPGAs). Your additional processors are now dedicated to this task, like big microcontrollers or dedicated processors. Then, rather like Direct Memory Addressing (which allows large amount of data to be moved quickly without taking up processor time), your FPGA can process your data rapidly in the background, without bothering your CPU.

A dedicated FPGA working directly upon raw data with fast cache RAM and a direct connection to your memory bus can process data faster than a much faster CPU having to run an OS and manage loads of other tasks at the same time.

You can add as many FPGAs as you want to a system, and cluster applications across them, or use them for individual tasks, all working in the background. The FPGAs can be reprogrammed for whatever task you choose, as and when required. They do not require major alterations to your hardware or OS.

Multi-processing is particularly good for doing complicated things in real-time, such as decrypting video streams on the fly.

Back to Stig's Dump.