Coherent Accelerator Processor Interface (CAPI) ist ein Standard für einen Hochgeschwindigkeits-Prozessor-Erweiterungsbus zum Einsatz in großen Rechenzentren. Er wurde ursprünglich als Erweiterung auf Basis von PCI Express konzipiert, um Zentralprozessoren (CPUs) direkt mit externen Beschleunigern wie Grafikprozessoren (GPUs), ASICs, FPGAs oder schnellen Speichersystemen zu verbinden. Sie bietet eine Verbindung mit geringer Latenz, hoher Geschwindigkeit und direktem Speicherzugriff zwischen Geräten mit unterschiedlichen Befehlssatzarchitekturen.
Die Leistungssteigerung, die traditionell mit dem Mooreschen Gesetz – das bis in das Jahr 1965 zurückreicht – in Verbindung gebracht wird, begann sich um das Jahr 2004 herum abzuschwächen, als sowohl Intels Prescott-Architektur als auch der Cell-Prozessor von IBM eine Betriebsfrequenz von 4 GHz erreichten. Hier stießen beide Projekte an eine thermische Skalierungsgrenze, wodurch die mit einer weiteren Erhöhung der Taktfrequenz verbundenen Probleme bei der Wärmeabfuhr die Vorteile kürzerer Zykluszeiten bei weitem überwogen.
Im Laufe des folgenden Jahrzehnts überschritten nur wenige kommerzielle CPU-Produkte die 4-GHz-Marke, wobei der Großteil der Leistungssteigerungen nun auf schrittweise verbesserte Mikroarchitekturen, eine bessere Systemintegration und eine höhere Rechendichte zurückzuführen war – dies vor allem durch die Unterbringung einer größeren Anzahl unabhängiger Kerne auf demselben Chip, oft auf Kosten der Spitzenbetriebstaktfrequenz (Intels 24-Kern-Xeon E7-8890 vom Juni 2016 hat eine Basisbetriebsfrequenz von nur 2,2 GHz, um innerhalb der Grenzen eines Einzelsockel-Leistungsaufnahme- und -kühlungsbudgets von 165 W zu bleiben).
Wo große Leistungssteigerungen erzielt wurden, ging dies oft mit zunehmend spezialisierten Recheneinheiten einher, wie beispielsweise GPU-Einheiten, die dem Prozessorchip hinzugefügt wurden, oder externen GPU- oder FPGA-basierten Beschleunigern. In vielen Anwendungen stoßen Beschleuniger an die Grenzen der Leistung der Verbindungsstruktur (Bandbreite und Latenz) oder an Einschränkungen aufgrund ihrer Architektur (wie zum Beispiel fehlende Speicherkohärenz). Insbesondere im Rechenzentrum wurde die Verbesserung der Verbindungsstruktur zu einem entscheidenden Faktor auf dem Weg zu einer heterogenen Architektur, in der die Hardware zunehmend auf spezifische Rechenaufgaben zugeschnitten ist.
CAPI wurde entwickelt, um Computern den einfacheren und effizienteren Anschluss spezieller Beschleuniger zu ermöglichen. Speicher- und rechenintensive Aufgaben wie Matrixmultiplikationen für tiefe neuronale Netze können auf CAPI-unterstützte Plattformen ausgelagert werden. Es wurde von IBM für den Einsatz in seinen POWER8-basierten Systemen entwickelt, die 2014 auf den Markt kamen. Gleichzeitig gründeten IBM und mehrere andere Unternehmen die OpenPOWER Foundation, um ein Ökosystem rund um Power-basierte Technologien, einschließlich CAPI, aufzubauen. Im Oktober 2016 gründeten mehrere OpenPOWER-Partner gemeinsam mit dem GPU- und CPU-Entwickler AMD sowie den Systemherstellern Dell EMC und Hewlett Packard Enterprise das OpenCAPI-Konsortium, um die Technologie über den Rahmen von OpenPOWER und IBM hinaus zu verbreiten.
Am 1. August 2022 wurden die OpenCAPI-Spezifikationen und -Ressourcen an das Compute Express Link (CXL)-Konsortium übertragen.
CAPI ist als Funktionseinheit innerhalb der CPU implementiert, die als „Coherent Accelerator Processor Proxy“ (CAPP) bezeichnet wird, wobei eine entsprechende Einheit auf dem Beschleuniger als „Power Service Layer“ (PSL) bezeichnet wird. Die CAPP- und PSL-Einheiten fungieren als Cache-Verzeichnis, sodass das angeschlossene Gerät und die CPU denselben kohärenten Speicherbereich gemeinsam nutzen können und der Beschleuniger zu einer „Accelerator Function Unit“ (AFU) wird, die den anderen in die CPU integrierten Funktionseinheiten gleichgestellt ist.
Da sich CPU und AFU denselben Speicherbereich teilen, lassen sich geringe Latenzzeiten und hohe Geschwindigkeiten erzielen, da die CPU keine Speicherübersetzungen und kein Umschichten von Daten zwischen dem Hauptspeicher der CPU und den Speicherbereichen des Beschleunigers vornehmen muss. Eine Anwendung kann den Beschleuniger ohne spezielle Gerätetreiber nutzen, da alles durch eine allgemeine CAPI-Kernel-Erweiterung im Host-Betriebssystem ermöglicht wird. Die CPU und der PSL können je nach Bedarf der Anwendung direkt auf die Speicher und Register des jeweils anderen zugreifen und darin schreiben.
CAPI-1 baut auf PCIe Gen 3 auf, nutzt 16 PCIe-Lanes und stellt eine zusätzliche Funktionalität für die PCIe-Steckplätze auf CAPI-fähigen Systemen dar. In der Regel gibt es auf solchen Rechnern speziell dafür vorgesehene CAPI-fähige PCIe-Steckplätze. Da es pro POWER8-Prozessor nur einen CAPP gibt, richtet sich die Anzahl der möglichen CAPI-Einheiten nach der Anzahl der POWER8-Prozessoren, unabhängig davon, wie viele PCIe-Steckplätze vorhanden sind. In bestimmten POWER8-Systemen setzt IBM Dual-Chip-Module ein und verdoppelt damit die CAPI-Kapazität pro Prozessorsockel.
Herkömmliche Transaktionen zwischen einem PCIe-Gerät und einer CPU können etwa 20.000 Operationen umfassen, während ein über CAPI angeschlossenes Gerät nur etwa 500 Operationen benötigt, was die Latenz erheblich verringert und die Bandbreite aufgrund des geringeren Operationen-Overheads effektiv erhöht.
Die Gesamtbandbreite eines CAPI-Ports wird durch die zugrunde liegende PCIe-3.0-x16-Technologie bestimmt und erreicht bidirektional einen Spitzenwert von ca. 16 GB/s.
CAPI-2 ist eine schrittweise Weiterentwicklung der mit dem IBM POWER9-Prozessor eingeführten Technologie. Es basiert auf PCIe Gen 4, wodurch die Leistung effektiv auf 32 GB/s verdoppelt wird. Zudem werden einige neue Funktionen eingeführt, wie beispielsweise die Unterstützung von DMA und Atomics durch den Beschleuniger.
Die Technologie hinter OpenCAPI wird vom OpenCAPI-Konsortium verwaltet, das im Oktober 2016 von AMD, Google, IBM, Mellanox Technologies und Micron Technology gemeinsam mit den Partnern Nvidia, Hewlett Packard Enterprise, Dell EMC und Xilinx gegründet wurde.
OpenCAPI, früher bekannt als New CAPI oder CAPI 3.0, ist keine auf PCIe aufbauende Technologie und nutzt daher keine PCIe-Steckplätze. In der IBM-CPU POWER9 nutzt es die Bluelink-25G-I/O-Schnittstelle, die es sich mit NVLink 2.0 teilt und die eine Spitzenübertragungsrate von 50 GB/s erreicht. OpenCAPI benötigt keine PSL-Einheit (die für CAPI 1 und 2 erforderlich ist) im Beschleuniger, da es nicht auf PCIe aufsetzt, sondern ein eigenes Transaktionsprotokoll verwendet.
Für zukünftige Chips nach der allgemeinen Verfügbarkeit von POWER9 geplant.
OpenCAPI Memory Interface (OMI) ist eine auf OpenCAPI basierende „Serial Attached RAM“-Technologie, die eine Verbindung zum Hauptspeicher mit geringer Latenz und hoher Bandbreite ermöglicht. OMI nutzt einen Controller-Chip auf den Speichermodulen, der einen technologieunabhängigen Ansatz hinsichtlich der auf den Modulen verwendeten Speicherarten ermöglicht – sei es DDR4, DDR5, HBM oder NVRAM der Speicherklasse. Eine OMI-basierte CPU kann daher den RAM-Typ durch den Austausch der Speichermodule ändern.
Eine serielle Verbindung benötigt weniger Platz auf dem CPU-Chip für die Schnittstelle, sodass im Vergleich zur Verwendung herkömmlicher DDR-Speicher potenziell mehr davon untergebracht werden können.
OMI ist in der Power10-CPU von IBM implementiert, die über 8 integrierte OMI-Speichercontroller verfügt, wodurch pro Prozessor 4 TB RAM und eine Speicherbandbreite von 410 GB/s möglich sind. Diese DDIMMs (Differential Dynamic Memory Module) enthalten einen OMI-Controller und einen Speicherpuffer und können einzelne Speicherchips adressieren, um Fehlertoleranz und Redundanz zu gewährleisten.
Microchip Technology stellt den OMI-Controller für die DDIMMs her. Der SMC 1000 OpenCAPI-Speicher des Unternehmens wird als „der nächste Schritt auf dem Markt für Serial Attached Memory“ beschrieben.