Many software systems have grown in code and complexity over more than a decade. They all run well on single core hardware systems, a few with embedded or real-time focus, others with other constrains. Now, processor manufacturer starting to put more and more execution cores on a single silicon die to avoid physical restrictions, such as heat dissipation and power consumption. So, Moore's law will continue for the next x decades - at first for processor manufacturer ;-).
But, the big questions are, how to use this additional power of next generation multi-/many-core processors? How to get such grown software systems running on multi-core CPUs so, that they are not slower than before? And - what is much more important - how to make fundamental design changes to achieve this?
Why is the last question so hard to answer? Midsize software projects typically have 50 to 150 software developers. Every developer might be responsible for small software component. All software components calling and offering interfaces for other components. But which person can look through the whole software system, who has knowledge about all the clean and dirty code to make such important design changes? To get responses for all of that questions, we have to start refactoring all previous design decisions and get rid of design by-passes and unnecessary complexity...
That's always a good point to start!
Kommentare