2010-11-23 2 views
0

Ich schaue mir einen optimierten, plattformübergreifenden Concurrency-Code an, der auf Multi-Core-Rechnern läuft und einige seiner Annahmen überprüfen möchte.Welche Arten von Low-Level-Einrichtungen werden normalerweise nicht auf Multicore-Maschinen unterstützt?

Unterstützung für Hardware-Optimierungen einiger Arten werden wahrscheinlich nicht auf Multi-Core-Designs unterstützt (z. B. Out-of-Order-Ausführungsunterstützung [wikipedia] scheint ein guter Kandidat zu sein - es erfordert viel Oberfläche zu implementieren, und kann ein Power-Schwein sein). Hat jemand eine Liste von anderen solchen Einrichtungen - solche, die typischerweise auf einer einzigen oder einer kleinen Anzahl von Kernmaschinen verfügbar sind, aber typischerweise von Maschinen mit einer größeren Anzahl von Kernen weggelassen werden?

Antwort

2

Heute sind Multicore-Maschinen aufgewärmt die Schrumpfe von Uniprozessoren. Man könnte sich fast vorstellen, einen 4-Kern-Würfel in 4 1-Kern-Würfel zu sägen. Ich übertreibe nur ein bisschen.

In Zukunft werden Multicore-Maschinen sorgfältiger auf Energieeffizienz und Flächeneffizienz ausgelegt sein. Sie können die gleiche ISA sehen, aber mit unterschiedlichen Ressourcenmixen (mehr oder weniger Anzahl von duplizierten Funktionseinheiten) und sogar mit einer gewissen Aufteilung von Ressourcen zwischen Kernen (z. B. AMD Bulldozer). Und, wie Sie sagen, sich von der Komplexität und dem Energie-Overhead der "No-Holds-Out-of-Order" -Ausführung verabschieden. Dies wird höchstwahrscheinlich als unterschiedliche Instruktion-pro-Uhr- (IPC) -Differenzen (mehr oder weniger Leistung) bei der gleichen Befehlssatzarchitektur wahrgenommen.

Auch als Anbieter müssen ein hypothetisches Portfolio von großen Out-of-Order-Serie Performance-optimierte Kerne und kleine in-order oder weniger out-of-Order (OOO) und schmaler, energieeffizienter "Durchsatz" Kerne jonglieren Sie werden herausgefordert, diese verschiedenen Implementierungen synchron mit den Entwicklungen ihrer ISAs zu halten. Einige Kerne können neue Anweisungen, neuen Status, neue Koprozessoren, Virtualisierung, Sicherheit usw. früher als andere unterstützen. Dies führt zu einer Herausforderung, den gemeinsamen Nenner zu codieren und gleichzeitig die neuen Einrichtungen für eine bessere Leistung oder Energieeffizienz (oder was auch immer) auf jenen Kernen zu beleuchten, die die neuen Fähigkeiten haben.

Um Ihre spezifische Frage zu beantworten, können alle traditionellen Computerarchitekturtechniken für den Handel mit Gates für Ausdruckskraft, Leistung oder Energieeffizienz neu überdacht und selektiv in zukünftigen Kernen mit kleinem Durchsatz entfernt werden.

  • Hardware Multithreading
  • Aggressive OoO -> bescheiden OoO oder auch in Ordnung Ausführung
  • hohe Grad von mikroarchitekturalen Spekulation
  • Fancy Zweig Prädiktoren
  • Big TLBs
  • Fancy Speicher Prefetchers
  • Tiefe Pipelines
  • Große Ausgabe/viele Kopien von Funktionseinheiten
  • Big-Caches, breite Busse an Caches
  • ...

Aber es geht in beide Richtungen. Es kann auch sein, dass die neuen kleindurchsatzoptimierten energieoptimierten Kerne neue Merkmale aufweisen, die in den älteren OoO-Kernen nicht vorhanden sind. Zum Beispiel wurden die Larrabee New Instructions (LRBni) (http://www.drdobbs.com/high-performance-computing/216402188) für eine Maschine mit Dutzenden von einfacheren Kernen vorgeschlagen. Als ein weiteres Beispiel können sich die kleinen Kerne dem Hardware-Multithreading zuwenden, um eine bessere Speicherlatenztoleranz zu erzielen, um kleinere private Caches zu kompensieren.

Auch viele frugale Kerne mit kleinen Energiekosten bedeuten, dass Sie bereit sein könnten, einige der Kerne zu dedizieren, um die Leistung für bestimmte wertvolle Arbeitslasten zu optimieren. Zum Beispiel erwarten die Tensilica-Custom-Prozessoren und -Tools, dass einige Ihrer kleinen Kerne zusätzliche Anweisungen und benutzerdefinierte problemspezifische Datenpfade haben (z. B. Beschleunigung einer inneren Schleife der Videodekodierung). In diesen Fällen kann der kleine Kern (konterintuktiv) eine viel bessere Leistung haben als der viel größere Kern.

Macht Sinn?

Happy hacken!

+0

p.s. Da verschiedene Implementierungen unterschiedliche Mikroarchitekturen beinhalten, seien Sie nicht überrascht, subtile mikroarchinduzierte Unterschiede zwischen Systemen zu sehen. Zum Beispiel könnten Sie niemals ein subtiles Datenrace-Speicherzugriffs-Interleaving auf einem Mikroarch beobachten, aber es könnte oft auf einem anderen Mikroarch auftreten. Implementierung derselben ISA. (Autsch.) –

Verwandte Themen