posted by Nicholas Blachford on Tue 13th Jul 2004 21:56 UTC
"Next Gen, Page 3/3"

Programming different CPUs
Having 3 different kinds of CPUs does leave us with a problem, how do we program them?

Computer companies have attempted to produce systems which accelerated functions by adding a DSP but none of these projects have lasted. The original BeBox design was based on two CPUs and three DSPs but it was very difficult to program the system. Commodore had machines with DSPs in the works but never released them [CBM]. Only Apple produced machines with a DSP but they were dropped when the PowerPC CPUs were released.

Since then the DSP technology has been incorporated into general purpose CPUs in the form of vector extensions such as SSE and Altivec. These still require specialist programming though.

However just because something is difficult doesn't mean it can't be solved or at least made easier. There is indeed a system which will solve this problem but to find it we'll have to go to Russia...

The Russian computer manufacturer, Elbrus [Elbrus] have designed a technique which allows them to produce an optimal binary for different versions of a CPU, even if the CPU changes. The way they do this is to use multi-stage compilation where a part compiled file is produced and shipped, when the program is first executed it is then compiled and optimised for the system it is running on. The final-stage compiler is specific for the processor so the programmer does not need to worry about producing different binaries for different versions of the CPU. This technique is not a million miles away from the "code morphing" method used by Transmeta and indeed Elbrus has long rumoured to have been the inspiration for this technique.

This technique will not be a magic bullet but it will certainly help. When you install a program the compiler could produce a binary for the general purpose CPU, additionally it could then search for areas which are appropriate for stream processing or which could run on the Cell processor. I think this will need the developer to assist this process by marking sections of code but I expect eventually it could be an automated process, auto-vectorising compilers have been doing exactly this sort of thing for decades.

Programming the FPGA is a more complex affair although tools do exist to assist programming. I expect our system will be somewhat immature development wise for FPGAs and they will require specialist programming skills for some time to come.

Propriety Vs Off the shelf hardware
In the 80's designing your own hardware meant you could gain a real advantage over other manufacturers. The original Amiga with it's custom chip set was ahead of PCs for many years because of this. However in this day and age designing custom chips is prohibitively expensive and best left up to companies who specialise in that area or can at least afford it.

Building a custom board is considerably lower cost but then you have an army of PC motherboards to fight against. However, if you want to produce something different hardware wise you really don't have much choice. The downside is other manufacturers can catch up and go straight past - your advantage one day can be your disadvantage the next.

The OS must be designed to abstract from the beginning, it must not completely rely on specific parts or combinations of parts. The Elbrus technique can get around internal changes in processors but not chip level OS dependancies.

Conclusion
So, we have some pretty radical hardware which has even the fastest PCs as a small snack between meals. What sort of software are we going to run on this beast? What sort of Operating System will it run?

Before we can think of applications we'll need an OS, It'll be based on an open source OS but modified heavily, in part 2 I shall explain which OS I would base it on, the changes to be made and why.

References

[Cray] Many of the techniques used in today's microprocessors were pioneered by Seymour Cray 30-40 years ago, there are a couple of fascinating interviews with him here.
http://americanhistory.si.edu/csr/comphist/cray.htm
http://americanhistory.si.edu/csr/comphist/montic/cray.htm

[Mouse] GUIs and many other "modern" concepts were developed in the 1960's
http://inventors.about.com/library/weekly/aa081898.htm
Some of the technologies developed
http://www.bootstrap.org/chronicle/pix/pix.html
Interview with Douglas Engelbart
http://americanhistory.si.edu/csr/comphist/englebar.htm
Check out his workstation - 1964-1966!
http://www.bootstrap.org/chronicle/pix/img0023.jpg

[TISC] The Incredible Shrinking CPU, If CPUs are to keep getting faster they are going to have to get a lot simpler.
here

[Stream] Stream Processors
here

[Cell] Patent application for Sony's Cell processor can be found here.
Note: Diagrams appear to be in an IE only HTML variant.

[CBM] Amiga A3000+ would of had a DSP
http://amiga.emugaming.com/prototypes/a3000plus.html

[Elbrus] The Elbrus Technique
http://www.elbrus.ru/mcst/eng/e2k_arch.shtml
Intel has recently done a deal with Elbrus and got many of their engineers.
Press Release (in Russian)

Copyright © Nicholas Blachford July 2004

About the Author:
Nicholas Blachford is a 33 year old British ex-pat, who lives in Paris but doesn't speak French (yet). He is interested in various geeky subjects (Hardware, Software, Photography) and all sorts of other things especially involving advanced technologies. He is not currently working.


If you would like to see your thoughts or experiences with technology published, please consider writing an article for OSNews.
Table of contents
  1. "Next Gen, Page 1/3"
  2. "Next Gen, Page 2/3"
  3. "Next Gen, Page 3/3"
e p (0)    34 Comment(s)

Related Articles

posted by Thom Holwerda on Mon 17th Nov 2008 19:18
posted by Thom Holwerda on Thu 6th Nov 2008 15:33 submitted by Gregory