Friday, April 11, 2008

The free lunch is over

Do you know why programers keep efforts to learn parallel processing architecture? There was a turning point. Mr. Herb Sutter who is Software Architect of Microsoft expressed developers' job as "man eating free lunch". The impact of his message was explained simply in an article "PC Watch - The decisive tide to the heterozinnias multi-core":

This is represented by the message "free lunch is over" that became famous in 2005 in U.S.A. The message is that Mr. Herb Sutter who is Software Architect of Microsoft has begun to say in columns.

CPU had aimed to enhance the performance of single core heretofore. It means free lunch for software. The only thing that the software does was eating a performance that CPU increases.

However, the situation has changed because a CPU vendor turned to multi-core. The single thread performance of the general-purpose CPU core does not suddenly improve under the present conditions. On the other hand, multi-thread performance suddenly rises by multi-core. Therefore, software developers have to change the software side drastically to parallel processing architecture, if they try to use the performance of CPU.

"The Free Lunch Is Over" showed a new way to many engineers. Our (programers') job had gotten easy from year to year, because the performance of CPU had been rising. While it was possible to improve the single core, programers didn't need to do something. However, it became impossible to improve the single core, so programers have to strive to acquire multi-core programing. New era unfolded.

Even if you have experience to write full or inline assembly for the performance old time, you don't need to imagine assembly programing again, because assembly is not effective for modern CPU. Those CPU has long long pipeline, so it's impossible that human being optimize program in assembly. Programers have to write programs in C and tweak compile-options for performance tuning. This situation makes us feel less stressed.

C keeps the position as the best effective language for multi-core programing for the duration. And, C++ is a good language to develop games productively. It seems that C# may go away from game development situation.

No comments: