Android

Multicore-Chips stellen die nächste große Herausforderung für die Industrie dar

Multiple Processor Systems - Computerphile

Multiple Processor Systems - Computerphile
Anonim

Das Hinzufügen von mehr Prozessorkernen hat sich als wichtigster Weg erwiesen, um die Leistung von Server- und PC-Chips zu steigern, aber die Vorteile werden sich erheblich verringern, wenn die Branche bestimmte Hardware- und Programmierherausforderungen nicht bewältigen kann, Teilnehmer der Multicore Expo in Santa Clara, Kalifornien, sagte diese Woche.

Die meiste Software wird heute noch für Single-Core-Chips geschrieben und muss neu geschrieben oder aktualisiert werden, um die steigende Anzahl von Kernen zu nutzen, die Intel, Sun Microsystems und andere Chiphersteller hinzufügen Ihre Produkte, sagte Linley Gwennap, President und Principal Analyst bei The Linley Group.

Standard-Anwendungen laufen oft schneller auf CPUs mit bis zu vier Prozessorkernen, aber darüber hinaus Levels aus und kann sogar verschlechtern, wie mehr Kerne hinzugefügt werden, sagte er. Ein kürzlich erschienener Bericht von Gartner hat das Problem ebenfalls aufgezeigt.

Chiphersteller und Systemhersteller haben begonnen, Entwickler zu schulen und ihnen bessere Tools für die Multicore-Programmierung zur Verfügung zu stellen. Vor einem Jahr sagten Intel und Microsoft, sie würden 20 Millionen US-Dollar investieren, um zwei Forschungszentren an US-amerikanischen Universitäten zu eröffnen, die sich dem Problem widmen. Das Fehlen von Multicore-Programmierwerkzeugen für Mainstream-Entwickler stellt laut Gwennap vielleicht die größte Herausforderung für die Branche dar.

Anwendungen so schreiben, dass verschiedene Teile einer Rechenaufgabe gelöst werden können, z. aufgeteilt und gleichzeitig über mehrere Kerne ausgeführt werden, ist nicht neu. Aber dieses Modell, das oft als Parallel-Computing bezeichnet wird, war bisher hauptsächlich auf spezialisierte, hochleistungsfähige Computerumgebungen beschränkt.

Aber in den letzten Jahren haben Intel und Advanced Micro Devices Kerne als leistungsstärkere Methode hinzugefügt Chip-Leistung, eine deutliche Änderung von ihrer traditionellen Praxis der Erhöhung der Taktfrequenz. Intel baut acht Kerne in seine kommenden Nehalem-EX-Chips und AMD entwickelt 12-Core-Chips für Server. Sie fügen auch Multi-Threading-Funktionen hinzu, die es jedem der Cores ermöglichen, gleichzeitig an mehreren Codezeilen zu arbeiten.

Mainstream-Anwendungen müssen daher anders geschrieben werden, um die zusätzlichen verfügbaren Cores nutzen zu können. Die Arbeit ist schwierig und schafft das Potenzial für neue Arten von Softwarefehlern. Eine der gebräuchlichsten Situationen sind "Wettlaufbedingungen", bei denen die Ausgabe einer Berechnung davon abhängt, dass die verschiedenen Elemente einer Aufgabe in einer bestimmten Reihenfolge ausgeführt werden. Wenn dies nicht der Fall ist, können Fehler auftreten.

Einige parallele Programmiertools sind verfügbar, z. B. Intels Parallel Studio für C und C ++. Andere Anbieter im Bereich sind Codeplay, Polycore Software und Clik Arts. Es gibt auch ein neues C-basiertes paralleles Programmiermodell namens OpenCL, das von The Khronos Group entwickelt wurde und von Apple, Intel, AMD, Nvidia und anderen unterstützt wird.

Aber viele der verfügbaren Tools sind noch in Arbeit, Teilnehmer an Die Multicore Expo sagte. Software-Compiler müssen in der Lage sein, Code zu identifizieren, der parallelisiert werden kann, und dann ohne manuelle Eingriffe von Programmierern parallelisieren, sagte Shay Gal-on, Director Software Engineering bei EEMBC, einer Non-Profit-Organisation, die Benchmarks für Embedded-Chips entwickelt.

Trotz des Mangels an Tools haben einige Softwarehersteller es relativ einfach gefunden, parallelen Code für einfache Rechenaufgaben wie Bild- und Videoverarbeitung zu erstellen, so Gwennapp. Adobe hat Photoshop so umgeschrieben, dass Funktionen wie Vergrößerung und Bildfilterung bestimmten x86-Kernen zugewiesen werden können, was die Leistung um das Drei- bis Vierfache verbessert.

"Wenn Sie Videos oder Grafiken machen, können Sie verschiedene Sätze von Pixel und ordnen Sie sie verschiedenen CPUs zu. Sie können so viel Parallelität erreichen ", sagte er. Für komplexere Aufgaben ist es jedoch schwierig, einen einzigen Ansatz zu finden, um eine Reihe von Berechnungen zu identifizieren, die parallelisiert und dann aufgeteilt werden können.

Während die Programmierseite die größte Herausforderung darstellt, müssen auch Hardware-Änderungen vorgenommen werden, um Probleme wie Speicherlatenz und langsame Busgeschwindigkeiten zu überwinden. "Wenn Sie mehr und mehr CPUs auf dem Chip hinzufügen, benötigen Sie die Speicherbandbreite, um sie zu sichern", sagte Gwennap.

Die gemeinsame Nutzung eines einzelnen Speichercaches oder Datenbusses unter mehreren Kernen kann einen Engpass verursachen, was zusätzliche Kerne bedeutet weitgehend verschwendet werden. "Wenn Sie zu sechs oder acht CPUs kommen, verbringen sie ihre ganze Zeit damit, miteinander zu reden und sich nicht darauf zu konzentrieren, eine Arbeit zu erledigen", sagte er.

Letztendlich liegt es vielleicht an Entwicklern, die Lücke zwischen ihnen zu schließen Hardware und Software, um bessere parallele Programme zu schreiben. Viele Programmierer sind nicht auf dem neuesten Stand der Hardware-Entwicklung, sagte Gal-on. Sie sollten Datenblätter öffnen und Chiparchitekturen untersuchen, um zu verstehen, wie ihr Code besser funktionieren kann, sagte er.