These days we are seeing a trend in computing, where specialized hardware is used to improve performance for a given function (a well-understood example is the graphics card - used to accelerate all the fancy 3D effects you see in today’s computer games).
With advances in FPGA (Field Programmable Gate Array) devices, such as those produced by Xilinx, it is possible to create specialized hardware by simply ‘programming’ a chip (using a language such as VHDL or Verilog) which is only slightly more difficult than programming on a general purpose microprocessor (it requires some paradigm shifts because code is now executed concurrently, and you have to be worried about things like timing closure). And FPGA-based devices perform surprisingly well - not quite as good as ASIC (application specific integrated circuit) chips, but certainly much better than general purpose processors running software. On top of this, the cost of high-performance FPGAs is quickly coming down.
The convergence of these factors is leading us logically towards a world of reconfigurable computing. Imagine if every computer motherboard included an FPGA alongside the CPU. Soft cores could be loaded into this FPGA whenever some heavy processing is required (perhaps some image processing code, or an encryption/decryption algorithm). The CPU could offload processing to the hardware, and have it done in typically less than 10% of the time it would have ordinarily taken. And the best part is when some new type of processing is required, the FPGA can simply be loaded with a new soft core.
This could spawn an entire industry of both open source and commercial cores that could be downloaded on-the-fly, completely altering the general purpose computing paradigm.
What if we extend this thought to mobile computing devices. We could create a ‘generic’ device with no specific functionality - it would have an LCD screen, speakers, some kind of input device, maybe some network connections, etc. And at the center would simplysit an FPGA. You could load up this device with whatever ‘core’ you need for the day ahead (maybe you want to use it as an mp3 player, or a portable DVD player, or a Palm-type organizer, or an ebook reader, or a navigation device, or…)
We could split the mobile device industry in two. ‘Device providers’ would build the ’shells’ incorporating the latest in input and output devices and cool aesthetic design. ‘Core providers’ would build new application specific functionality to be loaded onto these generic devices. These providers could literally focus on their core competency and design the functionality in software. No need to worry about hardware design, manufacturing, testing, inventory, logistics… Distribution could be online. What a model eh? We just need a common interface standard that all generic devices would support.
I dont think such a world is too far off. In a few years FPGA price/performance ratios will be right - and if a few innovative companies support such a paradigm and create a critical mass, the world of reconfigurable computing would be upon us.


Founders at Work: Stories of Startups’ Early Days
0 Responses to “Reconfigurable computing”