Multicore chips: Need for software re-engineering?

I was briefly at the Multicore Expo last week and there was some talk about programming effectively for multicore chipsets. However most of the vendors exhibiting seemed to shrug it off as a non-issue. Their explanation being that their OS or platform would handle the scheduling processes and utilization of cores from existing software as-is with no modifications. Decided to Google it a bit and found some recent discussions on this topic.

For starters you can refer to this good write up on Wikipedia: http://en.wikipedia.org/wiki/Multi-core.

Gartner had a report out earlier in the year titled “The Impact of Multicore Architectures on Server Scaling” that talks about server side enterprise applications. Here is quote from the Gartner release:

“Looking at the specifications for these software products, it is clear that many will be challenged to support the hardware configurations possible today and those that will be accelerating in the future,” said Carl Claunch, vice president and distinguished analyst at Gartner. “The impact is akin to putting a Ferrari engine in a go-cart; the power may be there, but design mismatches severely limit the ability to exploit it.”

Another recent article on PC World by Agam Shah of IDG News talks about the challenges multicore poses to the software industry. One key issue seems to be avoiding “race conditions” resulting from multiple processes competing for the same resources an/or scheduling of tasks. Couple of other good articles on same lines I came across: Adapting Legacy Applications to Multicore Servers and The long slog to multicore land.

From what I could gather the challenges seem to be different in application software vs embedded software development. Here is a video of Max Domeika, multicore coding evangelist at Intel talking about embedded programming methods for mutlicore:

Anyway, the purpose of this post is to find out what you have experienced in the real world. Have you designed any software product for multicore chips? What were the challenges you faced?

Software product engineering firms have long been involved in product re-engineering right from the days of DOS-to-Windows conversions to most recently SaaS migrations. Do you see a need for product engineering services firms to offer multi-core re-engineering services? Appreciate your comments and discussion on this.

Top 10 Outsourced Product Development Companies: 2009

Global Services and neoIT, through their Global Services 100 Study, recently announced the top outsourced product development service providers for 2009. Symphony Services was named the Best Performer.

opd-top-10-2009

The full report is available at http://www.globalservicesmedia.com/Content/general200903036094.asp.

Have you worked with any of these firms? What is your experience and recommendations when it comes to outsourcing product development and engineering services?

Software Engineering in Today’s Cars

One of my domain focus areas from an engineering services perspective is auto infotainment and telematics technologies. Recently, I came across an interesting article on IEEE Spectrum Online titled This Car Runs on Code. It gives a very good perspective on the amount of software and complexities associated with engineering today’s leading cars.

It takes dozens of microprocessors running 100 million lines of code to get a premium car out of the driveway, and this software is only going to get more complex.

Where Software is Used in Cars

Source: IEEE Spectrum

Source: IEEE Spectrum

These software implementations are driven by strong consumer demand and the drive to bring new differentiating products to market as indicated by industry reports such as the following one.

A recent report by The Strategy Analytics Automotive Multimedia & Communications, “Infotainment Semiconductor Demand Forecast: Innovation Will Drive Growth,” predicts that the rapid on-going innovation in digital consumer electronics and growing adoption levels will, in turn, create new in-vehicle and vehicle-portable device product opportunities for OEMs and suppliers that will increase infotainment semiconductor demand by 50% between 2008 and 2015.

What is interesting to note in the IEEE article is not only the cost for the embedded software but also the cost impact of unreliable software in cars.

Cost of Software in Cars

For today’s premium cars, “the cost of software and electronics can reach 35 to 40 percent of the cost of a car,” states Broy, with software development contributing about 13 to 15 percent of that cost. He says that if it costs US $10 a line for developed software—a cost he says is low—for a premium car, its software alone represents about a billion dollars’ worth of investment.

Cost of Software Repair in Cars

Such complexity brings with it reliability issues. IBM claims that approximately 50 percent of car warranty costs are now related to electronics and their embedded software, costing automakers in the United States around $350 and European automakers €250 per vehicle in 2005.

As you can see these are significant costs associated with software in cars. From my perspective of product engineering services, this calls for specialized providers of industrial grade software engineering services who can deliver highly reliable software for the car makers.

Major auto suppliers such as Delphi and Conti have been very successful in being outsourced providers of highly reliable mechanical and electrical components to car manufacturers in the past. Do you think a similar scenario is likely to play out with key auto-software engineering providers delivering highly reliable custom software products for each car?

There is a potential for each car model to be differentiated to a high degree by the software applications and user experience catering to niche buyers. Think of the long tail in car sales. Would love hear your comments on this.

Link to IEEE article: http://spectrum.ieee.org/feb09/7649