Soft Processors in FPGAs?
cybergibbons asks: "We're students in the Department of Electrical and Electronic Engineering, Imperial College, and are carrying out some research for Altera into FPGAs, softcore processors, and hardware software co-design. Most embedded systems are a combination of hardware (for performance) and software (for versatility), and the design of these systems is getting more and more complex. Previously, the hardware and software was partitioned at the early stages of design, leading to sub-optimal solutions.
New languages such as SystemC and Handel C aim to merge the hardware and software design with one common language combining the high level algorithm design and low level RTL design ? the ultimate goal being to allow conventional C++ programs to be synthesized directly into working systems, without any human intervention. However, what we seem to have found is a lot of marketing spiel and conceptual papers with no practical ideas. Is anyone using any of these new tools? Are any of the current co-design tools any good? Do you think a computer can partition designs effectively into hardware and software? What features would you like to see in future tools? Do you envision any amazing new applications for FPGAs using new co-design tools?"
The Commodore-One Reconfigurable Computer
From the About page:
The Commodore One computer started off as a 2002 enhanced adaptation of the Commodore 64 -the most sold of any computer model (Guiness book of World Records) While retaining almost all of the original's capabilities the Commodore One adds modern features, interfacing and capabilities. The C-One fills a gap in the hobbyist computer market.
During development, it evolved into a re-configurable computer, a new class of computers where the chips do not have dedicated tasks any more. The two main chips carry out different tasks, depending on the needs of the program. The technology used is called FPGA - field programmable gate arrays. These chips can be programmed to do the tasks that the chips of the C-64 or other computers have done. It's no emulation, but it's a re-implementation of the chips that are no longer available since many years.
The one thing that is not contained in the FPGAs is the main processor - it would take too much space, resulting in too high cost. To maintain flexibility, the CPU resides on a card that can be exchanged by the user - as simple as plugging in a PCI card.
After a cold start, the FPGA programs are loaded from a mass-storage device like harddrive, disk drive or a compact flash card. What's described in one short sentence is a giant leap in computer technology: The hardware can be altered by the user without even opening the computer. The FPGA programs - so-called 'cores' - turn the C-One into clones of famous 80's computers like the C64, VIC-20, plus/4, TI-99/4a, Atari 2600, Atari 400/800 series, Sinclair Spectrum, ZX81, Schneider CPC and many more. It can of course also be a completely new computer with specs unknown to these milestones in computer history. That's what the C-One 'native mode' will be - read more on the Specifications page
The estimated price will be about 249,- EUR. The user will need to supply an ATX style case, ATX power supply, drive(s), PS/2 keyboard, mouse and SVGA capable monitor.
---
Too cool!
Sure they can! You can implement a general purpose CPU inside an FPGA; it would be slow and expensive compared to a real CPU, but it would be able to run any general purpose algorithm you can think of. There is no fundamental reason why you can't do anything with an FPGA, it all comes down to the PARTICULAR task at hand, and how best to accomplish it.
This is only true if you think of an FPGA as a replacement for a regular CPU, running regular software. But there are 2 easy examples of tasks where and FPGA is cheaper, and more powerful. The first is when you have several programs or ASICS that are only used one at a time, which you can replace by a single FPGA that switches configuration as needed. The second is for specialized software tasks that are rarely used, so they're not worth optimizing a general purpose CPU for, but used a lot in certain situations. An example is high volume cryptography -- you can buy a fixed function card that does the work for you, but what if a new algorithm comes out? You have to buy a new card! with an FPGA approach you can just update the functionality, and re-use the silicon to perform other tasks when you're not doing cryptography!
Another thing to keep in mind is that ASICS are only cheaper than FPGAs if you get into high volumes... In many cases off the shelf FPGAs are cheaper than ASICs until your product starts to sell in high volumes.
BULLSHIT!!! My 89 corvette is exceedingly slow too, I guess. I don't know where you get this idea from. The speed you get out of an FPGA is entirely a function of how you choose to design the circuit inside it. The bigger the design the greater the potential speed. FPGAs can run moderate designs in the hundreds of MHz, and not CPU-like single operation at a time MHz, more like completely pipelined, one datachunk fully processed per clock MHz.
Actually, FPGAs do better on tasks that are pipelinable and not just parallel, which basically includes all kinds of number cruching, and bit twidling.
You need to better define what you mean by complex systems. Nobody is advocating implementing powerpoint in an FPGA, researchers are trying to offload tasks that usually require specialized hardware to programable hardware, not replace cheap CPUs with expensive FPGAs for no reason.
My intrest in this area comes from the fact that when the hardware arrives, the software team and hardware team spend a few months blaming each other while the bugs are worked out. If they worked together they would have a competitive advantage by getting to market sooner.
And it's a metric ton of high paying, fun work, and I don't see anything wrong with that.
every _exit() is the same, but every clone() is different.