Desktop multiprocessing: Not so fast

Not every application can be reprogrammed for multicore architectures, and some bottlenecks will always remain. Here's why.

1 2 3 4 5 Page 2
Page 2 of 5

People in the know often refer to Photoshop as a model desktop application in terms of multi-core support and parallelization. Williams says that Photoshop has been supporting multi-processor operations since about 1995, but adds that, even so, much of Photoshop's code is devoted to opening and closing dialog boxes, and therefore is not subject to parallelization.

Lots of algorithms have "significant chunks" of serial code, Williams notes. "People with PhDs have been working on this problem for 20 years -- it is not a matter of solving it by sitting at your desk and thinking hard for a few minutes. Typically, the way around Amdahl's Law is to simply find embarrassingly parallel problems, but you can't escape the fact you're limited by the serial portion of your calculations."

Even with parallelization, Williams explains, performance does not scale linearly -- two cores can give nearly 2X acceleration, but four cores gives less than 4X acceleration. This is due to memory bandwidth issues (i.e., the RAM being slower than the processor) and delays imposed by inter-processor communications.

"We can't take advantage of eight cores without improved memory bandwidth, and I know of no application that could take advantage of 16 cores," he says. "Memory bandwidth is a huge issue because after a while you are just waiting for the memory." New processors with on-board memory controllers are offering some help, he adds. On-board memory controllers speed up RAM access; however, they also lock the CPU into using a specific type of memory.

Parallelization progress, or lack thereof

References to Amdahl's Law may be somewhat premature, however. Aside from high-end games and video software, it may be years before parallelization for desktop applications is the norm.

When Microsoft first shipped Windows, most programs were still written for DOS, and it was a good 10 years until the industry saw more Windows than DOS software. Similarly, "most of the software on the shelf now is not parallel and some, like word processors, never will be," says Halfhill.

On the other hand, "We are talking about a similar thing here, but the presence of parallelization APIs in Windows 7 and in the Macintosh Snow Leopard operating systems will speed up the process, and the low-hanging fruit may be done in three to five years," Halfhill says. Further, not every program needs to be rewritten.

Microsoft's Smith agrees. "Not all software will be converted in five years, but we will have made significant progress. This is a more profound change than has ever been seen before in computing."

Microsoft's current desktop operating systems, Windows XP and Vista, "like most other systems," use the kernel to schedule threads on the multiple cores of the system, Smith explains. A thread is a code segment that the computer will execute entirely before executing another thread, which may be from another application entirely.

"When a thread needs to wait for something, like I/O or another thread's output, the kernel runs some other ready-to-go thread on the freed-up core," Smith explains. "When the first thread's wait is over and it becomes eligible to run again, it will eventually get a core assigned to it."

1 2 3 4 5 Page 2
Page 2 of 5
7 inconvenient truths about the hybrid work trend
Shop Tech Products at Amazon