Folge uns

Folge uns auf Facebook Folge uns auf Twitter Folge uns auf Google Abonniere unseren RSS-Feed Abonniere unseren Newsletter

Das Buch zu dieser Webseite

Computertechnik-Fibel

Die Computertechnik-Fibel, das Computer-Buch

Käufer der Computertechnik-Fibel Kundenmeinung:
Die Computertechnik-Fibel ist wirklich verständlich geschrieben, frei von Ballast und ein tolles Nachschlagewerk. Insgesamt ein sehr empfehlenswertes Buch.

Computertechnik-Fibel
jetzt bestellen!

 

Die Computertechnik-Fibel ist im iBookstore erhältlich

Die Computertechnik-Fibel für Amazon Kindle erhältlich

Die Computertechnik-Fibel bei Google Play erhältlich

Computertechnik-Fibel als PDF-Datei ohne DRM

Das Buch zu dieser Webseite

Netzwerktechnik-Fibel

Die Netzwerktechnik-Fibel

Käufer der Netzwerktechnik-Fibel Kundenmeinung:
Die Netzwerktechnik-Fibel ist sehr informativ und verständlich. Genau das habe ich schon seit langem gesucht.

Netzwerktechnik-Fibel
jetzt bestellen!

 

Die Netzwerktechnik-Fibel ist im iBookstore erhältlich

Die Netzwerktechnik-Fibel für Amazon Kindle erhältlich

Die Netzwerktechnik-Fibel bei Google Play erhältlich

Netzwerktechnik-Fibel als PDF-Datei ohne DRM

Multi-Core / Mehrkern-Prozessoren

Parallelrechentechnik und Multi-Core-Prozessortechnik sind Prinzipien, die seit Anfang der 90er Jahren in Supercomputern Einzug gehalten haben. Diese Systeme sind bis heute Multi-Prozessor-Systeme. Die dort verwendeten Verfahren finden ihren Weg auch in Personal Computer. Statt mehrere Prozessoren wird die Parallelisierung direkt im Prozessor vorgenommen. Das bedeutet, dass in einem Prozessor mehrere Prozessor-Kerne eingebaut sind. Man bezeichnet diese Prozessoren als Multi-Core- oder Mehrkern-Prozessoren. Rein äußerlich unterscheiden sich Multi-Core-CPUs nicht von Single-Core-CPUs. Innerhalb des Betriebssystems wird der Multi-Core-Prozessor wie mehrere Einheiten behandelt. Je nach Anzahl der Kerne gibt es abgewandelte Bezeichnungen, die darauf hindeuten, wie viele Kerne im Prozessor integriert sind.

Seit der Einführung von Doppelkern-Prozessoren hat sich die Computer-Infrastruktur entscheidend weiterentwickelt, wodurch Multi-Core-Prozessoren immer sinnvoller werden. So sind SATA-II-Festplatten in der Lage per Native Command Queuing (NCQ) Zugriffe in ihrer Reihenfolge zu verändern und dadurch Datenanforderungen von mehreren Prozessorkernen zu bearbeiten. Ebenso PCI Express (PCIe), auf dem mehrere Datentransfers parallel ablaufen können.

Vom Takt-orientierten Prozessor zum Mehr-Kern-Prozessor

Das immer schnellere Taktraten bei Prozessoren auch Nachteile haben, das haben die Prozessor-Hersteller schnell erkannt. Probleme macht vor allem die Wärmeentwicklung, die durch die Leckströme in den kleinen Transistor-Strukturen und durch hohe Taktraten verursacht werden. Herkömmliche Kühlmaßnahmen mit dicken Kühlkörpern und schnell drehenden Lüftern bleiben wirkungslos. Die Computer werden dadurch nur noch lauter.
Multi-Core / Mehrkern-Prozessoren
Anstatt die Taktrate weiter zu steigern, ist man auf die Mehrkern-Technik ausgewichen, die in einem Prozessor mehrere Kerne zusammenschaltet. Das bedeutet, moderne Prozessoren haben nicht nur eine Recheneinheit, sondern mehrere. Es könnte sein, dass irgendwann für jede laufende Anwendung oder Prozess ein eigener Prozessorkern, also eine Recheneinheit zur Verfügung steht. Allerdings bringt dieses Potential nur etwas, wenn mehrere laufende Anwendungen mehrere Prozessorkerne gleichzeitig beschäftigen können. Es braucht also Software, die das ganze koordiniert und eine Hardware, die das unterstützt. Dazu gehört das Verteilen der Berechnungen auf mehrere Prozessorkerne. Man nennt das auch die "Automatische Parallelisierung". In 3D-Software wird die Parallelrechentechnik schon länger verwendet.

Doch typische Anwendungen, durch die parallele Rechenleistung gefordert wird, gibt es für den Desktop-Computer nicht. Die meisten Desktop-Anwendungen brauchen in der Regel keine parallelisierte Rechenleistung über einen längeren Zeitraum. Nur manchmal hat man das Gefühl, dass ein Mehrkern-Prozessor eine Geschwindigkeitssteigerung hervorruft. Die ist darauf zurück zu führen, dass mehrere Programme tatsächlich parallel laufen können. Im Optimalfall nutzen mehrere leistungshungrige Anwendungen unterschiedliche Prozessorkerne. Zum Beispiel im Hintergrund (Dienste) oder Vordergrund laufende Programme. Durch mehrere Prozessorkerne entsteht eine Art Leistungsreserve, durch die Anwendungen Eingaben immer bereitwillig entgegennehmen, auch wenn im Hintergrund irgendwelche Prozesse Rechenleistung verbrauchen.
Prozessoren mit mehr als zwei Kernen haben es jedoch schwer sich bei der normalen Nutzung zu beweisen. Denn mehr als zwei Kerne bedarf Anwendungen, die ihre Berechnungen selber auf mehrere Prozessorkerne verteilen können. Während ein Dual-Core-Prozessor noch durch das Betriebssystem bedient wird, bedarf es bei mehr als zwei Kernen der Unterstützung durch die Anwendungen.
Die Vorteile der ersten Dual-Core-Prozessoren waren ein geringerer Takt und weniger Energieverbrauch pro Kern und somit weniger Aufwand beim Kühlen. Das heißt, weniger Stromverbrauch bei gleichzeitiger Leistungssteigerung.

In Multi-Core-Systemen werden viele Aufgaben in Threads aufgeteilt. Diese Threads werden parallel von mehreren Prozessorkernen abgearbeitet. Dazu müssen das Betriebssystem und die Programme "threaded"- oder "multi-threaded"-fähig sein. Mit Hyper-Threading hat Intel die Software-Branche schon früh zur Realisierung von Multi-Threading-Anwendungen motiviert.
Auch wenn durch die wachsende Verbreitung von Computern mit Multi-Core-Prozessoren Multi-Threading-Anwendungen attraktiver werden, ändert sich die Software nur sehr langsam. Das Problem: Multi-Threading-Anwendungen sind sehr viel komplizierter in der Programmierung. Dazu kommen neue und ungewohnte Fehlerquellen hinzu.
Die Parallelisierung von Software stellt die Programmierer vor eine große Herausforderung. Erschwerend kommt hinzu, dass die meisten Anwendungen keiner Parallelisierung bedürfen. Vor allem deshalb, weil sie die meiste Zeit sowieso auf Nutzereingaben warten. Typische Anwendungen, die durch Parallelisierung deutliche Vorteile haben sind Bildbearbeitung und Videoverarbeitung. Aber auch nur dann, wenn Funktionen ausgeführt werden, die erheblich Rechenleistung anfordern.
Wenn Multi-Core-Prozessoren für viele Anwendungen keinen wirklichen Vorteil bringen, werden die Programmierer eher auf die Nutzung von Multi-Threading verzichten. Billige Software nutzt in der Regel kein Multi-Threading. Und auch wenn ein Programm Multi-Threading verwendet, bedeutet das nicht, dass es das mit allen Funktionen tut.

Zwei oder mehr Prozessorkerne in einem Prozessor unterzubringen ist in etwa so, wie in ein Auto mehrere Motoren einzubauen. Ob das Sinn macht, hängt eben stark von der Nutzung und Anwendung ab. Wer nur in der Stadt herumfährt, der wird nie die Leistung von zwei Motoren brauchen.
Doch Intel und AMD propagieren unaufhörlich den Wechsel zur parallelisierbaren Programmierung. Denn beide sind nicht in der Lage die Taktrate ihrer Prozessoren auf über 4 GHz zu erhöhen. Und die Software-Entwickler werden diese Entwicklung mitgehen, wenn sie mit Ihren Programmen keine Geschwindigkeitsprobleme bekommen wollen.
Trotz Multi-Core-Prozessoren kommt es immer noch auf die Rechenleistung eines einzelnen Kerns an. Das haben auch Intel und AMD erkannt und deshalb in ihre Mehrkern-Prozessoren eine Übertaktungsautomatik eingebaut. Wenn mehrere Kerne nichts zu tun haben, dann werden sie abgeschaltet und ein Kern übertaktet. Und zwar so lange und so hoch, bis der eine Kern zu heiß wird. Dann wird dieser Kern wieder heruntergetaktet.

Typische Anwendungen für Single-Core-Prozessoren

Bei typischen Desktop-Anwendungen, wie Office, Internet, E-Mail oder Spielen bringt ein schneller getakteter Single-Core-Prozessor mehr Leistung, als ein Multi-Core-Prozessor.

Typische Multi-Threading-Anwendungen für Multi-Core-Prozessoren

Auswirkungen auf die Prozessor- und Computer-Architektur

Bei den üblichen Multi-Core-Architekturen teilen sich die Prozessor-Kerne den Arbeitsspeicher. Je mehr Kerne ein Prozessor hat, desto mehr Speicher bzw. mehr Bandbreite zum Speicher ist erforderlich.
Der Zugriff auf Speicher und Schnittstellen bleibt auf der Strecke, wenn sich mehrere Kerne den Bus zum Chipsatz teilen müssen. Aus diesem Grund hat es sich in Multi-Core-Prozessoren schnell durchgesetzt den Speicher-Controller aus dem Chipsatz in den Prozessor zu verlegen.
Es bleibt dann nur noch das Problem, dass sich die Kerne darüber abstimmen müssen, wer gerade welche Daten im Cache hält. Eine mögliche Lösung ist eine hierarchische Cache-Struktur. Dabei bekommt jeder Kern einen eigenen L1-Cache und L2-Cache. Den L3-Cache müssen sich die Kerne teilen. Ein Cache-Kohärenz-Protokoll sorgt dafür, dass sich die Prozessorkerne bei der Nutzung des L3-Caches nicht in die Quere kommen.

Multi-Core-Standards

Es ist denkbar, dass in einem Mehrkern-Prozessor-System verschiedene Aufgaben auf einzelnen Prozessorkerne verteilt werden. Eine Anwendung könnte darin bestehen, dass Ergebnisse anderer Programme aus dem gemeinsamen Speicher abgerufen werden. Der Vorteil besteht darin, dass die Abhängigkeit zwischen den Programmen reduziert wird. Erfordert eine Aufgabe sehr viel Rechenleistung und wird deshalb ein Prozessorkern sehr stark beansprucht, dann sind andere Aufgaben davon nicht betroffen. Sie haben ihren eigenen Prozessorkern.
Damit ein solches Szenario möglich ist, muss das auf der Software-Seite unterstützt werden. Sowohl beim Betriebssystem, als auch bei den Anwendungsprogrammen. Dabei besteht die Frage, wie bekommt man die volle Leistung aus einem solchen System heraus?
Dazu muss man sagen, dass wir noch am Anfang der Multi-Core-Software-Entwicklung stehen und es einfach noch an einer Multi-Core-Standardisierung mangelt. Das heißt, es fehlen Software-Standards, die Mehrkern-Prozessoren vollständig unterstützen.

Multi-Threading, also die prozessinterne Kommunikation, ist durch POSIX gut definiert. POSIX ist eine Sammlung offener APIs, die von der IEEE für Betriebssystemdienste spezifiziert wurde. Der Standard definiert Schnittstellen zur Thread- und Prozesssteuerung. POSIX befindet sich in Linux, Unix und in einer Reihe Embedded-Betriebssysteme.
Multi-Threading ist in Programmiersprachen wie Java oder Ada integriert. Mit OpenMP existiert eine Software-Bibliothek mit der Entwickler parallele Anweisungen in C- und C++-Code integriere können. Doch leider reicht keine dieser Implementierungen an POSIX heran.

Grundlagen der Multi-Core-Technik

Weitere verwandte Themen:

Die Computertechnik-Fibel, das Computer-Buch

Die Computertechnik-Fibel ist im iBookstore erhältlich Die Computertechnik-Fibel für Amazon Kindle erhältlich