title: Software-based Memory-Consistency Mechanisms for Non-Coherent Many-Core Systems
title: Softwarebasierte Speicherkonsistenzmechanismen für Nichtkohärente Many-Core Systeme
Creators: name: Langer, Tobias
Publisher: name: Friedrich-Alexander-Universität Erlangen-Nürnberg (FAU)
Year: 2024
Subjects: subject: operating system
subject: memory consistency
subject: cache coherence
subject: non-coherent
subject: manycore
subject: multicore
subject: invasive computing

description: Multi- and manycore processors have become virtually indispensable. Some of today's manycore processors already have cores counts in the higher two digits numbers. As the performance hunger of modern applications further increases, this trend towards more parallel processors will likely continue. However, this development requires significant changes in computer architectures. As a consequence, modern processor designs already deviate considerably from that of classical SMP systems, as components such as bus systems do not scale with the core count, and memory connects increasingly become a bottleneck. One effect of these changes is that cache coherence mechanisms become increasingly complex. These systems already cause high engineering efforts, as they require long design times and are complicated and time intensive to verify. Furthermore, they become increasingly resource intensive as their chip area and energy consumption grow with parallelism. In the meantime, a different trend can be observed for system software. Cache coherence mechanisms have here been identified as a source of performance overheads. Therefore, many modern operating and runtime systems thus employ strategies to limit memory accesses to NUMA domains so that only the coherence mechanisms there are used. Cross-NUMA coherence, in return, is avoided, if possible. These software systems thus effectively avoid the coherent shared memory that the hardware level provides at great expense. However, shared memory programming still provides a more convenient programming model than explicit communication schemes, such as message passing. Considering this situation, this dissertation proposes that coherence mechanisms should be realized as part of the software layer instead of providing them in hardware. The coherence mechanism can thus adapt to the applications' requirements, making it far more flexible than hardware implementations can be. Therefore, this dissertation explores the design space for software-based coherence solutions. The proposed designs thereby build on techniques known from Virtual Shared Memory (VSM) systems to realize a memory consistency mechanism as an on-demand feature. This notion of memory consistency also meets the requirement for cache coherence. The results and contribution of this thesis are two variants of software-based consistency mechanisms. The first of which is the Software Consistency System (SCS), which follows the principles of classical VSM systems by leveraging the features of virtual memory management to create a consistent shared memory abstraction. The second variant is the Adaptive Software Consistency System (ASCS), a novel adaptive consistency mechanism. The ASCS builds upon the SCS and extends it with the ability to exploit memory-sharing information to switch adaptively between page and hardware caches at runtime. Finally, this thesis demonstrates the functionality and effectiveness of the consistency systems with a performance evaluation on a tile-based prototype system implemented in FPGA logic at the example of different shared memory workloads. The results show that the SCS and the ASCS provide good scalability for the parallel workloads and, thus, that they are feasible alternatives to existing hardware-based coherence mechanisms. Furthermore, the experiments show that for all but one evaluation scenario, the ASCS mechanism outperforms the SCS.
description: Multi- und Manycore-Prozessoren sind heutzutage praktisch unverzichtbar geworden. Einige Prozessoren der aktuellen Generation umfassen dabei bereits Kernzahlen im höheren zweistelligen Bereich. Mit dem zunehmenden Leistungshunger moderner Anwendungen ist davon auszugehen, dass sich dieser Trend hin zur steigenden Parallelität in Prozessoren auch weiterhin fortsetzt. Um diese Parallelität jedoch zu bewerkstelligen, sind erhebliche Änderungen der Computerarchitekturen notwendig. So weichen Designs moderner Prozessorarchitekturen bereits beachtlich von denen klassischer SMP-Systeme ab. Dies ist darin begründet, dass Komponenten wie Bussysteme nicht mit den steigenden Kernzahlen skalieren und auch Speicheranbindungen zunehmend zum Engpass werden. Weiterhin haben diese architekturellen Veränderungen einen starken Anstieg der Komplexität von Cache-Kohärenzmechanismen zur Folge. Dieser Komplexitätsanstieg wirkt sich negativ auf die Chip-Entwicklungskosten aus. So verursacht die gestiegene Komplexität die Dauer des Entwurfsprozesses sowie die der Hardwareverifikation. Weiterhin verbrauchen Cache-Kohärenzmechanismen mit wachsendem Parallelismus zunehmend Ressourcen wie Chip-Fläche und Energie. Im Bereich der Systemsoftware hingegen ist ein anderer Trend zu verzeichnen. Hier werden Kohärenzmechanismen zunehmend als Ursache von Performanceeinbußen identifiziert. Viele moderne Betriebs- und Laufzeitsysteme verwenden daher Strategien, um Speicherzugriffe auf NUMA-Domänen zu beschränken, um damit nur die dortigen Kohärenzmechanismen zu nutzen. Diese Softwaresysteme vermeiden somit den kohärenten geteilten Speicher, welcher auf Hardwareebene mit erheblichem Aufwand bereitgestellt wird. Dennoch ist das Shared-Memory Paradigma ein komfortableres Programmiermodell für parallele Anwendungen als explizite Kommunikationsschemata, wie zum Beispiel Message Passing. Im Rahmen dieser Dissertation wird daher vorgeschlagen, Kohärenzmechanismen als Teil der Softwareschicht zu realisieren, anstatt diese wie bisher in Hardware umzusetzen. Damit können diese an Anwendungsanforderungen angepasst werden, was sie wesentlich flexibler macht als vergleichbare Hardware-Implementierungen. In dieser Dissertation werden daher verschiedene Entwürfe für softwarebasierte Kohärenzmechanismen entworfen. Die in diesem Zuge vorgeschlagenen Lösungsentwürfe bauen dabei auf Techniken auf, welche aus Virtual Shared Memory (VSM)-Systemen bekannt sind und realisieren damit einen Speicherkonsistenzmechanismus als On-Demand Funktion. Diese speicherkonsistente Shared-Memory Abstraktion erfüllt dabei auch die Anforderungen nach Cache-Kohärenz. Das Ergebnis dieser Arbeit sind zwei Arten softwarebasierter Konsistenzmechanismen. Die erste Variante der Mechanismen ist das Software Consistency System (SCS), welches den Prinzipien klassischer VSM-Systeme folgt. Das SCS nutzt Funktionen der virtuellen Speicherverwaltung, um eine konsistente geteilte Speicherabstraktion zu errichten. Die zweite Variante ist das Adaptive Software Consistency System (ASCS). Dabei handelt es sich um einen neuartigen adaptiven Konsistenzmechanismus. Dieser baut auf dem SCS auf und erweitert es um die Fähigkeit, Informationen über geteilte Daten zu nutzen, um zur Laufzeit adaptiv zwischen Seiten- und Hardware-Caches umzuschalten. Schließlich demonstriert diese Arbeit die Funktionalität und Effektivität der Konsistenzsysteme mit einer Leistungsbewertung auf einem in FPGA-Logik implementierten kachelbasierten Prototypsystem am Beispiel verschiedener Shared-Memory Benchmarks. Die Ergebnisse demonstrieren, dass sowohl das SCS, als auch das ASCS gute Skalierbarkeit für die parallelen Anwendungen bieten und somit praktikable Alternativen zu bestehenden hardwarebasierten Kohärenzmechanismen sind. Darüber hinaus zeigen die Experimente, dass der ASCS-Mechanismus den SCS-Mechanismus bei der Mehrzahl der Evaluationsszenarien übertrifft.