Author: John Carrol for ZDNet
There is some debate as to whether Moore’s law is truly at an end. Something new might be discovered which could turbocharge Moore’s law using exotic new materials, or new ways could be found that make better use of silicon. For now, however, it’s pretty clear that the activity predicted by Moore’s law has slowed, and in response, chip manufacturers are adding more and more cores.
Unfortunately, that doesn’t improve software speeds unless a program has been designed to take advantage of those multiple cores. Programs must be designed to enable separate activities to be run in parallel, and this creates a great deal of complexity. When you have multiple threads of control, you have to worry about things like synchronized access to data. You don’t want one “thread” of a program modifying data while another is using that data to make calculations. Imagine an accounting spreadsheet that had one thread updating line items while another used those same values to create a total. The total might end up matching neither the sum of values which existed at the start of the run, nor the sum of values as exists when the data modification thread is complete.


