One of the things I’m doing at Uni is digital systems design. This involves writing code in a hardware description language (Verilog in my case, which is like a cross between C and Pascal) which can then be burnt to an FPGA chip or sent away for fabrication onto a custom IC.
This is pretty cool because it allows someone like myself, who can succeed in screwing up anything they put a soldering iron near, to design and build hardware using source code.
A typical example is the following, which would be a very simple adder:
input in1, in2;
assign out = in1 + in2;
That simply declares two one-bit inputs and a one-bit output. It then specifies that the output should always be equal to in1 added to in2.
As hardware can be created with source code, this source code can of course be made free/open source. OpenCores is a site containing freely-licensed source code for hardware components, everything from ethernet controllers and hardware encryption devices to full microprocessors. Most seem to be licensed under the LGPL. The great thing is that people can go over to OpenCores and pick up ready-made, freely-usable modules which can be plugged into their projects. There’s quite possibly enough code on there for someone to build most of a computer in totally open hardware.
As if that wasn’t good enough, Sun have announced that they’re releasing the Verilog sources to their latest-and-greatest processor, the UltraSPARC T1. This code, when released, won’t actually be of much practical use to hobbyists looking to build open hardware though, since it is naturally HUGE and would require an FPGA costing upwards of £5k. FPGAs also aren’t terribly well-suited to such tasks: their main advantage is that they can be reprogrammed quickly (one minute you have a USB controller, next minute you have an encryption device) – they’re not designed for huge projects such as this. It would be possible for anyone to pick up the code and send it off for fabrication onto a real chip, but the costs (especially for a one-off or small batch) would be much more than buying a ready-made processor from Sun.
Where I think the real potential is is in the possibilities for people to take the code and build custom hardware with it. It would be possible for example to rip out many of the hardware instructions and build in MPEG encoding/decoding if you wanted a media device. The end-result would be a lot smaller, so the price of the required FPGA comes down drastically.
However what I think would be more useful is if Sun released the code for some of their older 32-bit or early 64-bit processors. These processors will naturally be much smaller and easier for hobbyists to handle. The fastest 32-bit processor they did I believe was 150MHz. That may not be useful for the average desktop system, but it would be very useful for people building embedded devices who can make it offer excellent performance for their specific task by extending the instruction set.
I don’t however understand quite why Sun have done this. There are not many people out there with sufficient skills to use the source code (in fact I believe there is a worldwide shortage of such people) so they aren’t going to get many (if any) third-parties contributing to the design of the processor. That said, there aren’t really many disadvantages in doing it: Intel and AMD aren’t going to learn very much, since SPARC is RISC and x86 is CISC. Also, it’s not as if there are many people in the world with sufficient resources to start mass-producing the processors on-the-cheap and undercuting Sun.
There’s an interesting blog entry which talks about some of the reasons behind it, which seem to centre around the idea that they’d like third-parties to be able to do interesting things and contribute to the design, but I’m not convinced these are the real reasons…
In any case it will certainly be very interesting to see what community projects spring up around this and whether it’ll prompt any more companies to think about opening their hardware (probably not, but you never know).