Core Wars

So it seems that 80 core processors will be here by 2011. The question then arrises: what will they all be used for? This is obviously far in excess of anything which you might need to run OpenOffice, a web browser or other common desktop programs.One of the main things which will drive demand for faster processors ever upwards is entertainment. Computer games have always been able to make as much use of processing power as hardware manufacturers have been able to throw at them. With processing power like this photorealistic virtual reality will become possible. Imagine playing one of the online 3D chat programs, such as There or Second Life, but where the graphics are so realistic that you can't tell the difference between the computer generated scenery and a video recording from a real location. It's likely that real locations will attain copyright status, so if a games company wants to set their latest production in your street they'll probably have to get some kind of location licence from the local council.Another less conventional application which can make use of a lot of processing power is robotics and associated AI technologies. It's very likely that we'll see some quite spectacular breakthroughs in the computer vision field, empowered by substantial amounts of parallel processing power.And for the lowly programmer such as myself there will also be changes. Writing software for parallel processing systems is quite different in nature to writing serial programs for a single CPU. About the closest I've been to this kind of programming was on multi-axis industrial machines for glass production, where the program was not stored in any one location (such as a central "master" PLC) but was instead distributed in a peer-to-peer fashion between multiple embedded motion controllers. When you have many processors running concurrently issues of timing and sequencing become critical. Whether the entire system falls into one state or another can sometimes depend upon incredibly tiny timing differences between different processors, and it can become quite devilish to debug.So I think new programming languages, or some significant changes to existing ones, will be needed in order to handle CPUs with large numbers of cores. The easy way would simply to be to stick to traditional methods and run separate programs on separate cores, or separate threads on separate cores. It's likely that kind of situation will prevail for a while, but in time some good ways for a single program to utilise multicore systems will need to emerge.
Posted by Bob Mottram at 2:57 PM 0 comments