Browse Prior Art Database

Speicher- und Threadzuordnung zur Vermeidung von Speicherzugriffslatenzen bei Multiprozessorsystemen mit NUMA aehnlicher Architektur

IP.com Disclosure Number: IPCOM000172263D
Original Publication Date: 2008-Jul-25
Included in the Prior Art Database: 2008-Jul-25
Document File: 3 page(s) / 49K

Publishing Venue

Siemens

Related People

Juergen Carstens: CONTACT

Abstract

Auf einem Computer mit mehreren Prozessoren, wo jeder Prozessor (Node) einen eigenen Memorycontroller und daran angeschlossenen Speicher hat (Local Memory, wie z.B. bei NUMA NonUnifomMemoryAccess Systemen), hat jeder Prozessor dedizierten Zugriff zu seinem eigenen Local Memory. Ueber einen Bus (Interconnectbus, Hypertransport) hat jeder Prozessor die Moeglichkeit, entfernten Speicher (Remote Memory) von einem anderen Prozessor zu kopieren und hat somit Zugriff zum kompletten Speicherausbau des Computersystems, was aber laenger dauert. Um das Multiprozessor/Multicore System auslasten zu koennen, laufen auf dem Computer, auf dem ein Betriebssystem mit Kernel und Scheduler laeuft, mehrere Threads. Die Threads werden durch den Betriebssystemscheduler durch eine geeignete Strategie (eventuell nach Zeitscheiben) Prozessoren zugeteilt.

This text was extracted from a PDF file.
At least one non-text object (such as an image or picture) has been suppressed.
This is the abbreviated version, containing approximately 45% of the total text.

Page 1 of 3

Speicher- und Threadzuordnung zur Vermeidung von Speicherzugriffslatenzen bei Multiprozessorsystemen mit NUMA aehnlicher Architektur

Idee: Uwe Landrock, DE-Erlangen

Auf einem Computer mit mehreren Prozessoren, wo jeder Prozessor (Node) einen eigenen Memorycontroller und daran angeschlossenen Speicher hat (Local Memory, wie z.B. bei NUMA NonUnifomMemoryAccess Systemen), hat jeder Prozessor dedizierten Zugriff zu seinem eigenen Local Memory. Ueber einen Bus (Interconnectbus, Hypertransport) hat jeder Prozessor die Moeglichkeit, entfernten Speicher (Remote Memory) von einem anderen Prozessor zu kopieren und hat somit Zugriff zum kompletten Speicherausbau des Computersystems, was aber laenger dauert. Um das Multiprozessor/Multicore System auslasten zu koennen, laufen auf dem Computer, auf dem ein Betriebssystem mit Kernel und Scheduler laeuft, mehrere Threads. Die Threads werden durch den Betriebssystemscheduler durch eine geeignete Strategie (eventuell nach Zeitscheiben) Prozessoren zugeteilt.

Ein Berechnungsauftrag besteht normalerweise aus einem Stueck Programm und einem Speicherbereich, in dem die Eingangs- und Ergebnisdaten liegen. Ein Programm jedoch sieht nicht mehrere, verschiedene Speicherbloecke pro Prozessor in einem NUMA aehnlichen System (siehe Abbildung 1), sondern einen linearen Speicherbereich, der aus den einzelnen Prozessorspeichern hintereinandergereiht besteht. Deshalb hat der Programmierer zunaechst keine Moeglichkeit zu steuern, welchen Speicherbereich er in seinen Berechnungen verwendet (allokiert). Im schlechtesten Fall muss sich ein Prozessor vom Nachbarprozessor Speicherbereich kopieren, was eine Latenz und damit Performanceeinbussen zur Folge hat (siehe Abbildung 2).

Bisher werden die Berechnungsthreads durch den Betriebssystemscheduler einzelnen Prozessoren zugewiesen, wobei nicht darauf geachtet wird, ob die Berechnung, welche im jeweiligen Thread waehrend der Zuteilungszeit fest ablaeuft, auch zum Speicherbereich des zugewiesenen Prozessors gehoert, da der Betriebssystemscheduler keine Zuordnung zwischen Berechnungsalgorithmus und dazu gehoerigen Speicherbereich der Daten treffen kann. Ein Kontextwechsel eines Threads zu einem entfernten Prozessor benoetigt Berechnungszeit. Ausserdem muss der Cache eines Prozessors zu dem neuen uebertragen werden, was ebenfalls eine Speicheruebertragungslatenz darstellt.

Die nachfolgend vorgestellte Speicherallokationsstrategie basiert auf der Zuweisung eines Bearbeitungsthreads an einen Prozessor, der den direkten Zugriff auf den Speicher hat, in dem die zur Bearbeitung anstehenden Daten liegen. Dies ist vor allem auf Mehrprozessor-Computersystemen anwendbar, bei denen Prozessoren ein eigenes Speicherinterface haben (wie z.B. NUMA- Architekturen). Es werden Speicherzugriffslatenzen auf entfernte Speicherriegel und Kontextwechsel zwischen Berechnungsthr...