To parallelize an application
The next trick, then, becomes parallelizing an application so it can march in two or more rows rather than a single file. Some processes can never be parallelized, but rather have to be done sequentially, such as applications where one step is determined by the results of the previous step.
In other cases, though, you just can't make the whole application parallel, said Lewis. "You may go to one part of the code that can be highly parallelized, then you go to another part of the code and it's highly serialized and can't be made parallel."
Intel's Bautista agreed. "The major challenges are on the software side. Do we have an appropriate programming environment, benchmarks, and optimizers? That's an issue. A lot of the research is around those areas today."
The problem facing hardware and software vendors alike is that parallel programming is a rare skill and extremely hard to master. Parallel processing has been around for decades, but programming effectively for multiple processors is hardly a commodity skill like Java or C++ programming.
Massimini said there has to be a breakthrough in that area just as there has been in every other section of computing.
"Someone's going to have to crack [parallel programming]. Otherwise you will never have a better game or computer or app because we will hit a wall. Saying we can't do it is not the answer people want to hear."
The solution has been to put parallel code, libraries and intelligence into compilers to detect segments of code that parallelize well.
"We've got high-level languages today, where I don't think anyone who programs in C thinks about [assembly language]," said Massimini. "You're going to have to develop that underlying layer in the software where someone can program in a higher level of code that translates it back into the op code to provide that parallelism."
Intel has announced a new set of tools to do just that, as has Sun. Intel's new C compiler looks for code that could operate in parallel and is "parallelized," as Bautista put it. "Would it be as good as a programmer skilled at parallel processing? No, but it can come close."
Lewis agreed this is the best short-term solution. "Long-term, we all need to look at what are some different methods for parallelization," she said. "But for now, the things we need to do are shielding the developer from having to understand some of the intricacies of parallelization."
The trick then, is for programmers to catch up to the hardware. Intel is quad-core now. AMD will be when Phenom and Barcelona ship later this year. Then Intel goes to eight cores, and the race continues.
Massimini is the most optimistic that the industry will make full use of every core.
"I like to say software is like a gas. It will expand or contract to fill its available volume. If the hardware community gives them more power, it will suck it up like a leech and take more power."