NOC
Abkürzung für Network on a Chip
NOC: gesamtes Netzwerk auf einem Silizium-Die verdichtet
Ein Network on Chip ist eine Multicore-Prozessor-Architektur, bei der unabhängige Verarbeitungseinheiten, Speicherblöcke und Ein-/Ausgabekontroller durch ein internes Kommunikations-Fabric statt über gemeinsame Busse miteinander verbunden sind. Statt dass alle Kerne um Zugriff auf eine einzelne Datenleitung konkurrieren, verbindet sich jede Einheit mit einem Mesh, Ring oder einer anderen Topologie, die Datenpakete zwischen ihnen weiterleitet. Das skaliert besser als traditionelle Shared-Bus-Designs, weil die Bandbreite mit der Anzahl der Knoten wächst, anstatt konstant zu bleiben.
Das Kommunikations-Fabric selbst ist die Innovation. Auf konventionellen Multicore-Chips bringt das Hinzufügen eines zehnten Kerns nicht die zehnfache Kommunikationskapazität, weil alle Kerne immer noch durch denselben engen Bottleneck laufen. Bei einem NOC fügen Sie Mesh- oder Ring-Segmente neben jedem neuen Kern hinzu, sodass die gesamte Interconnect-Bandbreite skaliert. Nachrichten zwischen Kernen reisen als kleine Pakete mit Quell- und Zieladressen, ähnlich wie Datenverkehr in einem echten Netzwerk.
Wo NOC in der Praxis relevant ist
NOCs erscheinen in High-End-Prozessoren, wo dutzende oder hunderte Kerne miteinander kommunizieren müssen, ohne sich auf einen einzelnen Bus zu serialisieren. Sie sind häufig in Many-Core-Designs für Rechenzentren, Supercomputer-Knoten und spezialisierte Beschleuniger anzutreffen. Tile-basierte oder modulare Chip-Designs, bei denen man denselben Core-plus-Fabric-Block viele Male wiederholen kann, profitieren auch von der NOC-Organisation, weil die lokalen Verbindungen jedes Tiles einfach bleiben, auch wenn der Chip wächst.
Der Preis ist Komplexität. Routing-Logik, Paket-Buffering und Deadlock-Prävention fügen Overhead und Designaufwand hinzu. Bei einer kleinen Anzahl von Kernen (normalerweise weniger als acht) schneidet ein NOC oft schlechter ab als ein einfacherer Shared-Memory-Bus. Der Break-Even-Punkt hängt von Datenverkehrsmustern und Latenz-Empfindlichkeit ab; Mediatenverarbeitung und wissenschaftliches Rechnen mit regulärer Nearest-Neighbor-Kommunikation begünstigen NOCs mehr als Zufallszugriff-Workloads.
Das NOC-Design beeinflusst auch, wie Software geschrieben wird. Programmierer müssen über räumliche Lokalität und Datenbewegung über das Fabric nachdenken, nicht nur über Zeitkomplexität. Compiler-Support zum Abbilden von Aufgaben auf spezifische Kerne und Vorhersagen von Inter-Core-Latenz bleibt ein aktives Forschungsgebiet, weshalb viele NOC-Chips mit spezialisierten Entwicklungswerkzeugen statt mit Standard-Betriebssystem-Planern geliefert werden.