Software für Multi-Core-CPUs optimieren

Programmieren für Multi-Core-Prozessoren

Multi-Core-Prozessoren ermöglichen Parallelverarbeitung von Software und erzielen damit höhere Leistung. Aber Vorteile bringen die Multi-Core-Prozessoren nur, wenn auch die Software für die CPUs optimiert wird. In dieser mehrteiligen Reihe zur Programmierung für Multi-Core-Prozessoren führt TecChannel Sie nach und nach durch die Besonderheiten der Multi-Core-Programmierung.

Die Leistung von Computersystemen steigt seit Jahren kontinuierlich an. Dies betrifft nahezu alle Komponenten der Rechner. Am deutlichsten ist der Leistungsgewinn bei den Prozessoren, dem Arbeitsspeicher und den Festplatten zu verfolgen.

Aber auch die Grafikkarten, Netzwerkanbindungen und weitere Kommunikationssysteme, wie etwa USB- oder Wireless-Anbindung verzeichnen rapide steigende Performance-Zuwächse. Die zunehmende Leistungsfähigkeit der Rechner führt zu immer neuen Anwendungsfeldern und Applikationen mit komfortableren Benutzeroberflächen.

Erzielt wurden diese Leistungsgewinne meist auf verschiedenen Wegen:

  • einer Erhöhung der Verarbeitungsgeschwindigkeit durch schnellere Taktung,

  • einer größeren Funktionsvielfalt,

  • einer Verlagerung von Funktionen in die Hardware,

  • sowie der Erhöhung der Kapazitäten wie bei Caches, Arbeitsspeicher oder Festplatten.

Meist führten diese genannten Verbesserungen aber auch zu einem höheren Stromverbrauch der IT-Baugruppen. Stromfluss allerdings erzeugt Wärme, die durch Kühlung wieder abgeführt werden muss. Das wiederum erhöht den Strombedarf und damit die Betriebskosten. Um den Stromverbrauch bei den CPUs zu senken, verfolgen die CPU-Hersteller seit einigen Jahren eine andere Strategie und orientieren sich dabei auch an den Techniken der Parallelverarbeitung.

In dieser mehrteiligen Reihe zur Programmierung für Multi-Core-Prozessoren führen wir Sie nach und nach durch die Besonderheiten der Multi-Core-Programmierung. Angefangen bei den wichtigsten Grundlagen der verschiedenen Parallelisierungs-Verfahren in Prozessoren in diesem ersten Teil. Im nächsten Teil befassen wir uns mit der notwendigen Modularisierung in Applikationen und gehen auf das .Net-Framework ein. Nach diesen beiden einführenden Artikeln geht es ans Eingemachte: Deadlocks, Race Conditions und Zugriffe auf die .Net-Thread-Implementation mit Locking, Delegates, Timern und asynchronen Events.