This is the second in a short series of articles that Techworld is publishing this week about multi-core processing and its ramifications. Read the first article here.

For vendors and end users alike, the ascent of multi-core processors is as beneficial as it is inevitable. Vendors (of chips, hardware, software, networking gear -- the works) will get to roll out products with a high buzz factor, while users will revel in the seemingly ceaseless Moore's Law march: ever-cheaper, ever-faster, ever-better computing.

Stuck in the middle are IT professionals, who must make it all work.

The writing is on the wall: multi-core chips will soon dominate the technology landscape. The good news is that for now, developing software for multi-core processors differs little from developing for the multi-processing systems with multiple chips in common use. Boosting performance by adding chips to achieve symmetric multi-processing is an old IT standby, particularly in database servers, heavy number-crunching and other data-intensive applications.

In addition, as multi-core evolves, look for vendors to offer tool sets that help you optimise your code for multi-core, as well as prewritten code modules that remove the burden entirely. Vendors, like enterprise developers, will also hone their ability to write applications that take advantage of multi-core's inherent advantages.

While IT professionals experienced with servers won't see a major difference between multi-processor and multi-core work, those whose experience is limited to the desktop - where multi-processing is an alien concept -- will have to adapt. "As dual-core gets out, it'll be the first time multi-processing ever hits the mass market," says Alan Zeichick, a multi-core development expert and principal analyst at Camden Associates. "People who have always developed for desktops ... will need to learn to write threaded apps."

Enterprise developers may also find new challenges in partitioning applications. "C and C++ are sequential languages with no concept of running in parallel," says Sven Brehmer, CEO of PolyCore Software, a vendor of multi-core development tools. To partition an application written in these languages, you must break the application apart, then run some portions of it on one processor and other portions on another. "When you take these parts and move them, you need to make sure you don't destroy variables or the way data flows from the source to the destination," Brehmer says.

Turf battles?
Because multi-core chips place two or more independent CPUs on a single silicon die, some wonder if their Achilles' heel will be data movement to and from those CPUs.

"There have been some performance bottlenecks when [multi-core-equipped systems are] running different applications that are both fighting for the same I/O path," says Zeichick. But he stresses that to date, these bottlenecks have been minor.

Concern over data bottlenecks is natural because the issue often arises in today's multi-processing servers. "Anytime you have multiple processors, you've got to move data around the system, and that requires close attention," says Brehmer. "Most systems today have shared memory and a bus. That's simple but limited -- you have bus contention." Brehmer predicts that as multi-core evolves, alternatives to simple buses will arise: direct links, multi-level buses, "even connection fabrics inside the chip."

While advanced bus alternatives may be a boon in the future, experts say that in the near term, the key to multi-core development is the same as in any multi-processor system: careful development of multi-threaded applications (that is, programs whose various portions can run simultaneously) so that threads don't interfere with one another. Multi-threading is also the secret to multi-core's potential speed benefits.

"Most IT-grade software today is multi-threaded, so IT people are accustomed to it," says Babak Falsafi, an associate professor at Carnegie Mellon University's Computer Architecture Laboratory in Pittsburgh.

Virtually all modern applications have at least some multi-threading; the ones that don't tend to be ancient batch-processing applications such as home-grown payroll processing systems.

While sceptics say multi-core may be a bigger boon for the PlayStation generation than for IT, most enterprise software will see improved performance as the technology matures. "Early on, we've seen some minor performance bottlenecks when running different apps trying to share the same I/O path," Zeichick says. "But those will be overcome. The simple truth is, this is the future."

Ulfelder is a Computerworld contributing writer. Contact him at [email protected].