-
VERWANDTE ANMELDUNGEN
-
Diese Anmeldung beansprucht den Vorteil der Priorität der vorläufigen
US-Patentanmeldung lfd. Nr. 62/778 807 , eingereicht am 12. Dezember 2018, mit dem Titel „PCI EXPRESS DEVICE DATA RELEASE CONTROL BASED ON PCI EXPRESS LINK PROTECTION AND AUTHENTICATION“.
-
HINTERGRUND
-
Fortschritte in der Halbleiterverarbeitung und im Logikentwurf haben eine Erhöhung der Menge an Logik ermöglicht, die in integrierten Schaltungsvorrichtungen vorhanden sein kann. Als Konsequenz haben sich Computersystemkonfigurationen von einer einzelnen oder mehreren integrierten Schaltungen in einem System zu mehreren Kernen, mehreren Hardware-Threads und mehreren logischen Prozessoren, die in individuellen integrierten Schaltungen vorhanden sind, sowie anderen Schnittstellen, die in solche Prozessoren integriert sind, entwickelt. Ein Prozessor oder eine integrierte Schaltung umfasst typischerweise einen einzelnen physikalischen Prozessorbaustein, wobei der Prozessorbaustein eine beliebige Anzahl von Kernen, Hardware-Threads, logischen Prozessoren, Schnittstellen, Arbeitsspeicher, Steuereinheitsnetzknoten usw. umfassen kann.
-
Ein Prozessor kann eine Logik umfassen oder damit gekoppelt sein, die zwei Vorrichtungen über eine Verbindungsstrecke miteinander koppeln kann. Ein Prozessor kann beispielsweise eine Zwischenverbindungsgebildearchitektur, wie z. B. eine Architektur gemäß „Peripheral Component Interconnect (PCI) Express“ (PCIe) umfassen. Ein Hauptziel von PCIe besteht darin zu ermöglichen, dass verschiedene Komponenten und Vorrichtungen (z. B. von verschiedenen Verkäufern) in einer offenen Architektur zusammenarbeiten, die sich über mehrere Marktsegmente erstreckt.
-
Figurenliste
-
- 1 stellt eine Ausführungsform eines Rechensystems mit einer Zwischenverbindungsarchitektur dar.
- 2 stellt eine Ausführungsform einer Zwischenverbindungsarchitektur mit einem geschichteten Stapel dar.
- 3 stellt eine Ausführungsform einer Anforderung oder eines Pakets, das innerhalb einer Zwischenverbindungsarchitektur erzeugt oder empfangen werden soll, dar.
- 4 stellt eine Ausführungsform eines Sender- und Empfängerpaars für eine Zwischenverbindungsarchitektur dar.
- 5 stellt ein Blockdiagramm einer ersten Vorrichtung und einer zweiten Vorrichtung, die über eine Verbindungsstrecke gekoppelt sind, gemäß bestimmten Ausführungsformen dar.
- 6 stellt ein Blockdiagramm einer ersten Vorrichtung gemäß bestimmten Ausführungsformen dar.
- 7 stellt ein System zur Übermittlung von verschlüsselten Daten über eine geschützte Verbindungsstrecke gemäß bestimmten Ausführungsformen dar.
- 8 stellt einen Ablauf für eine Vorrichtungsauthentifizierung gemäß bestimmten Ausführungsformen dar.
- 9 stellt einen Ablauf für eine Datenfreigabesteuerung auf der Basis von Authentifizierung und Verbindungsstreckenschutz gemäß bestimmten Ausführungsformen dar.
- 10 stellt ein Blockdiagramm für ein Rechensystem mit einem Mehrkernprozessor gemäß bestimmten Ausführungsformen dar.
- 11 stellt ein Blockdiagramm eines Rechensystems mit mehreren Prozessoren gemäß bestimmten Ausführungsformen dar.
-
AUSFÜHRLICHE BESCHREIBUNG
-
In der folgenden Beschreibung werden zahlreiche spezielle Details dargelegt, wie z. B. Beispiele von speziellen Typen von Prozessoren und Systemkonfigurationen, speziellen Hardware-Strukturen, speziellen Architektur- und Mikroarchitekturdetails, speziellen Registerkonfigurationen, speziellen Befehlstypen, speziellen Systemkomponenten, speziellen Messungen/Höhen, speziellen Prozessor-Pipeline-Stufen und eines speziellen Prozessorbetriebs usw., um für ein gründliches Verständnis der vorliegenden Erfindung zu sorgen. Es ist jedoch für einen Fachmann auf dem Gebiet ersichtlich, dass diese speziellen Details nicht verwendet werden müssen, um alle Ausführungsformen der vorliegenden Offenbarung auszuführen. In anderen Fällen wurden gut bekannte Komponenten oder Verfahren, wie z. B. spezielle und alternative Prozessorarchitekturen, spezielle Logikschaltungen/ein spezieller Logikcode für beschriebene Algorithmen, ein spezieller Firmwarecode, eine spezielle Zwischenverbindungsoperation, spezielle Logikkonfigurationen, spezielle Herstellungstechniken und Herstellungsmaterialien, spezielle Kompilierer-Implementierungen, ein spezieller Ausdruck von Algorithmen im Code, spezielle Abschalt- und Torsteuertechniken/Logik und andere spezielle Betriebsdetails eines Computersystems, nicht im Einzelnen beschrieben, um es zu vermeiden, die hier offenbarten Ausführungsformen unnötig unklar zu machen.
-
Obwohl die folgenden Ausführungsformen mit Bezug auf Computersicherheitsverbesserungen in speziellen Rechensystemen, wie z. B. in Rechenplattformen, Speichervorrichtungen oder Mikroprozessoren, beschrieben werden können, sind andere Ausführungsformen auf andere Typen von integrierten Schaltungen und Logikvorrichtungen anwendbar. Ähnliche Techniken und Lehren von hier beschriebenen Ausführungsformen können auf andere Typen von Schaltungen oder Halbleitervorrichtungen angewendet werden, wie z. B. in der Hand gehaltene Vorrichtungen, Tablets, andere dünne Notebooks, Vorrichtungen von Systemen auf einem Chip (SOC) und eingebettete Anwendungen. Einige Beispiele von in der Hand gehaltenen Vorrichtungen umfassen Mobiltelefone, Internetprotokollvorrichtungen, Digitalkameras, persönliche digitale Assistenten (PDAs) und in der Hand gehaltene PCs. Eingebettete Anwendungen umfassen typischerweise einen Mikrocontroller, einen Digitalsignalprozessor (DSP), ein System auf einem Chip, Netzcomputer (NetPC), Digitalempfänger, Netzknoten, Koppler eines weiträumigen Netzes (WAN) oder irgendein anderes System, das die nachstehend gelehrten Funktionen und Operationen durchführen kann. Die Einrichtungen, Verfahren und Systeme, die hier beschrieben werden, sind überdies nicht auf physikalische Rechenvorrichtungen begrenzt, sondern können sich auch auf Software-Optimierungen für Energieeinsparung und Energieeffizienz beziehen.
-
Wenn Rechensysteme fortschreiten, werden die Komponenten darin komplexer. Folglich nimmt die Zwischenverbindungsarchitektur, um die Komponenten zu koppeln und zwischen diesen zu kommunizieren, auch in der Komplexität zu, um sicherzustellen, dass Bandbreitenanforderungen für einen optimalen Komponentenbetrieb erfüllt werden. Ferner verlangen verschiedene Marktsegmente verschiedene Aspekte von Zwischenverbindungsarchitekturen, um sie an die Bedürfnisse des Markts anzupassen. Server erfordern beispielsweise eine höhere Leistung, während das mobile Ökosystem manchmal die Gesamtleistung für Leistungseinsparungen opfern kann. Dennoch ist es ein einzelner Zweck der meisten Gebilde, die höchstmögliche Leistung mit maximaler Leistungseinsparung bereitzustellen. Nachstehend wird eine Anzahl von Zwischenverbindungen erörtert, die von hier beschriebenen verschiedenen Ausführungsformen potentiell profitieren würden.
-
Eine Zwischenverbindungsgebildearchitektur umfasst die Architektur von „Peripheral Component Interconnect (PCI) Express“ (PCIe). Ein Hauptziel von PCIe besteht darin, zu ermöglichen, dass Komponenten und Vorrichtungen von verschiedenen Verkäufern in einer offenen Architektur miteinander arbeiten, die sich über mehrere Marktsegmente erstreckt; Clients (Desktops und mobil), Server (Norm, Rack-Maßstab und Unternehmen) und eingebettete und Kommunikationsvorrichtungen. PCI-Express ist eine Universal-E/A-Zwischenverbindung mit hoher Leistung, die für eine breite Vielfalt von zukünftigen Rechen- und Kommunikationsplattformen definiert ist. Einige PCI-Attribute, wie z. B. ihr Verwendungsmodell, ihre Lade-Speicher-Architektur und Software-Schnittstellen, wurden durch ihre Änderungen aufrechterhalten, wohingegen vorherige parallele Busimplementierungen durch eine stark skalierbare, vollständig serielle Schnittstelle ersetzt wurden. Die jüngeren Versionen von PCI-Express nutzen Fortschritte in Punkt-Punkt-Zwischenverbindungen, der Technologie auf Schalterbasis und eines paketierten Protokolls, um neue Ebenen von Leistung und Merkmalen zu liefern. Leistungsmanagement, Dienstqualität (QoS), Hot-Plug/Hot-Swap-Unterstützung, Datenintegrität und Fehlerbehandlung befinden sich unter einigen der fortschrittlichen Merkmale, die durch PCI-Express unterstützt werden.
-
In 1 ist eine Ausführungsform eines Gebildes, das aus Punkt-Punkt-Verbindungsstrecken besteht, die einen Satz von Komponenten miteinander verbinden, dargestellt. Das System 100 umfasst einen Prozessor 105 und einen Systemarbeitsspeicher 110, der mit einem Steuereinheitsnetzknoten 115 gekoppelt ist. Der Prozessor 105 umfasst irgendein Verarbeitungselement wie z. B. einen Mikroprozessor, einen Host-Prozessor, einen eingebetteten Prozessor, einen Coprozessor oder einen anderen Prozessor. Der Prozessor 105 ist mit dem Steuereinheitsnetzknoten 115 durch eine Verbindungsstrecke 106 (z. B. einen Vorderseitenbus (FSB)) gekoppelt. In einer Ausführungsform ist die Verbindungsstrecke 106 eine serielle Punkt-Punkt-Zwischenverbindung, wie nachstehend beschrieben. In einer anderen Ausführungsform umfasst die Verbindungsstrecke 106 eine serielle, differentielle Zwischenverbindungsarchitektur, die mit einer unterschiedlichen Zwischenverbindungsnorm kompatibel ist. In einigen Implementierungen kann das System eine Logik, um mehrere Protokollstapel zu implementieren, und eine weitere Logik, um alternative Protokolle auszuhandeln, die auf einer gemeinsamen Bitübertragungsschicht laufen sollen, unter anderen Beispielmerkmalen umfassen.
-
Der Systemarbeitsspeicher 110 umfasst irgendeine Arbeitsspeichervorrichtung, wie z. B. einen Direktzugriffsarbeitsspeicher (RAM), einen flüchtigen Arbeitsspeicher, einen nichtflüchtigen (NV) Arbeitsspeicher oder einen anderen Arbeitsspeicher, der für Vorrichtungen im System 100 zugänglich ist. Der Systemarbeitsspeicher 110 ist mit dem Steuereinheitsnetzknoten 115 durch die Arbeitsspeicherschnittstelle 116 gekoppelt. Beispiele einer Arbeitsspeicherschnittstelle umfassen eine Arbeitsspeicherschnittstelle mit doppelter Datenrate (DDR), eine Dualkanal-DDR-Arbeitsspeicherschnittstelle und eine Arbeitsspeicherschnittstelle eines dynamischen RAM (DRAM).
-
In einer Ausführungsform ist der Steuereinheitsnetzknoten 115 ein Stammnetzknoten, ein Stammkomplex oder eine Stammsteuereinheit in einer Zwischenverbindungshierarchie von „Peripheral Component Interconnect Express“ (PCIe oder PCIE). Beispiele des Steuereinheitsnetzknotens 115 umfassen einen Chipsatz, einen Arbeitsspeichersteuereinheitsnetzknoten (MCH), eine Northbridge, einen Zwischenverbindungssteuereinheitsnetzknote (ICH), eine Southbridge und eine Stammsteuereinheit/einen Stammnetzknoten. Häufig bezieht sich der Begriff Chipsatz auf zwei physikalisch separate Steuereinheitsnetzknoten, z. B. einen Arbeitsspeichersteuereinheitsnetzknoten (MCH), der mit einem Zwischenverbindungssteuereinheitsnetzknoten (ICH) gekoppelt ist. Es ist zu beachten, dass aktuelle Systeme häufig den MCH mit dem Prozessor 105 integriert umfassen, während die Steuereinheit 115 mit E/A-Vorrichtungen kommunizieren soll, in einer ähnlichen Weise, wie nachstehend beschrieben. In einigen Ausführungsformen wird eine Peer-to-Peer-Leitweglenkung optional durch den Steuereinheitsnetzknoten (z. B. Stammkomplex) 115 unterstützt.
-
Hier ist der Steuereinheitsnetzknoten 115 mit einem Koppler/einer Brücke 120 durch eine serielle Verbindungsstrecke 119 gekoppelt. Eingabe/Ausgabe-Module 117 und 121, die auch als Schnittstellen/Ports 117 und 121 bezeichnet werden können, umfassen/implementieren einen geschichteten Protokollstapel, um eine Kommunikation zwischen dem Steuereinheitsnetzknoten 115 und dem Koppler 120 zu schaffen. In einer Ausführungsform können mehrere Vorrichtungen mit dem Koppler 120 gekoppelt sein.
-
Der Koppler/die Brücke 120 leitet Pakete/Nachrichten von der Vorrichtung 125 stromaufwärts, z. B. bis zu einer Hierarchie in Richtung eines Stammkomplexes, zum Steuereinheitsnetzknoten 115 und stromabwärts, z. B. eine Hierarchie hinab weg von einer Stammsteuereinheit, vom Prozessor 105 oder Systemarbeitsspeicher 110 zur Vorrichtung 125. Der Koppler 120 wird in einer Ausführungsform als logische Anordnung von mehreren virtuellen PCI-PCI-Brückenvorrichtungen bezeichnet. Die Vorrichtung 125 umfasst irgendeine interne oder externe Vorrichtung oder Komponente, die mit einem elektronischen System gekoppelt werden soll, wie z. B. einer E/A-Vorrichtung, einer Netzschnittstellensteuereinheit (NIC), einer Erweiterungskarte, einem Audioprozessor, einem Netzprozessor, einem Festplattenlaufwerk, einer Speichervorrichtung, einem CD/DVD-ROM, einem Monitor, einem Drucker, einer Maus, einer Tastatur, einem Router, einer tragbaren Speichervorrichtung, einer Firewire-Vorrichtung, einer Vorrichtung eines universellen seriellen Busses (USB), einem Scanner, einem Beschleuniger und anderen Eingabe/AusgabeVorrichtungen. Häufig wird in der PCIe-Fachsprache eine solche Vorrichtung als Endpunkt bezeichnet. Obwohl nicht speziell gezeigt, kann die Vorrichtung 125 eine PCIe-zu-PCI/PCI-X-Brücke umfassen, um veraltete PCI-Vorrichtungen oder solche einer anderen Version zu unterstützen. Endpunktvorrichtungen in PCIe werden häufig als veraltete, PCIe- oder integrierte Stammkomplexendpunkte klassifiziert.
-
Der Graphikbeschleuniger 130 ist auch mit dem Steuereinheitsnetzknoten 115 durch eine serielle Verbindungsstrecke 132 gekoppelt. In einer Ausführungsform ist der Graphikbeschleuniger 130 mit einem MCH gekoppelt, der mit einem ICH gekoppelt ist. Der Koppler 120 und folglich die E/A-Vorrichtung 125 ist dann mit dem ICH gekoppelt. E/A-Module 131 und 118 sollen auch einen geschichteten Protokollstapel implementieren, um zwischen dem Graphikbeschleuniger 130 und dem Steuereinheitsnetzknoten 115 zu kommunizieren. Ähnlich zur obigen MCH-Erörterung kann eine Graphiksteuereinheit oder der Graphikbeschleuniger 130 selbst in den Prozessor 105 integriert sein. Ferner können eine oder mehrere Verbindungsstrecken (z. B. 123) des Systems eine oder mehrere Erweiterungsvorrichtungen (z. B. 150) wie z. B. Neuzeitgeber, Zwischenverstärker usw. umfassen.
-
Wenn man sich 2 zuwendet, ist eine Ausführungsform eines geschichteten Protokollstapels dargestellt. Der geschichtete Protokollstapel 200 umfasst irgendeine Form von geschichtetem Kommunikationsstapel, wie z. B. einen „Quick Path Interconnect“-Stapel (QPI-Stapel), einen PCIe-Stapel, einen Hochleistungsrechenzwischenverbindungsstapel der nächsten Generation oder einen anderen geschichteten Stapel. Obwohl die unmittelbar nachstehende Erörterung in Bezug auf 1-4 in Bezug auf einen PCIe-Stapel stattfindet, können dieselben Konzepte auf andere Zwischenverbindungsstapel angewendet werden. In einer Ausführungsform ist der Protokollstapel 200 ein PCIe-Protokollstapel mit einer Transaktionsschicht 205, einer Verbindungsstreckenschicht 210 und einer Bitübertragungsschicht 220. Eine Schnittstelle wie z. B. Schnittstellen 117, 118, 121, 122, 126 und 131 in 1 können als Kommunikationsprotokollstapel 200 dargestellt werden. Die Darstellung als Kommunikationsprotokollstapel kann auch als Modul oder Schnittstelle, die einen Protokollstapel implementiert/umfasst, bezeichnet werden.
-
PCI-Express verwendet Pakete, um Informationen zwischen Komponenten zu übermitteln. Pakete werden in der Transaktionsschicht 205 und Datenverbindungsstreckenschicht 210 gebildet, um die Informationen von der sendenden Komponente zur empfangenden Komponente zu tragen. Wenn die übertragenen Pakete durch die anderen Schichten fließen, werden sie mit zusätzlichen Informationen erweitert, die erforderlich sind, um Pakete auf diesen Schichten zu bearbeiten. Auf der Empfangsseite findet der umgekehrte Prozess statt und Pakete werden von ihrer Darstellung der Bitübertragungsschicht 220 in die Darstellung der Datenverbindungsstreckenschicht 210 und schließlich (für Transaktionsschichtpakete) in die Form transformiert, die durch die Transaktionsschicht 205 der Empfangsvorrichtung verarbeitet werden kann.
-
Transaktionsschicht
-
In einer Ausführungsform soll die Transaktionsschicht 205 eine Schnittstelle zwischen einem Verarbeitungskern einer Vorrichtung und der Zwischenverbindungsarchitektur bereitstellen, wie z. B. der Datenverbindungsstreckenschicht 210 und der Bitübertragungsschicht 220. In dieser Hinsicht ist eine primäre Verantwortung der Transaktionsschicht 205 die Zusammensetzung und Zerlegung von Paketen (d. h. Transaktionsschichtpaketen oder TLPs). Die Transaktionsschicht 205 managt typischerweise die Flussteuerung auf Kreditbasis für TLPs. PCIe implementiert geteilte Transaktionen, z. B. Transaktionen mit Anforderung und Antwort, die durch Zeit getrennt sind, was ermöglicht, dass eine Verbindungsstrecke anderen Verkehr trägt, während die Zielvorrichtung Daten für die Antwort sammelt.
-
Außerdem verwendet PCIe eine Flusssteuerung auf Kreditbasis. In diesem Schema kündigt eine Vorrichtung eine anfängliche Menge an Kredit für jeden der Empfangspuffer in der Transaktionsschicht 205 an. Eine externe Vorrichtung am entgegengesetzten Ende der Verbindungsstrecke wie z. B. ein Steuereinheitsnetzknoten 115 in 1 zählt die Anzahl von Krediten, die durch jedes TLP verbraucht werden. Eine Transaktion kann übertragen werden, wenn die Transaktion eine Kreditgrenze nicht überschreitet. Beim Empfangen einer Antwort wird eine Menge an Kredit wiederhergestellt. Ein Vorteil eines Kreditschemas besteht darin, dass die Latenz der Kreditrückgabe sich nicht auf die Leistung auswirkt, vorausgesetzt, dass die Kreditgrenze nicht angetroffen wird.
-
In einer Ausführungsform umfassen vier Transaktionsadressenräume einen Konfigurationsadressenraum, einen Arbeitsspeicheradressenraum, einen Eingabe/Ausgabe-Adressenraum und einen Nachrichtenadressenraum. Arbeitsspeicherraumtransaktionen umfassen eine oder mehrere von Leseanforderungen und Schreibanforderungen, um Daten zu/von einer Arbeitsspeicher-abgebildeten Stelle zu übertragen. In einer Ausführungsform können Arbeitsspeicherraumtransaktionen zwei verschiedene Adressenformate verwenden, z. B. ein kurzes Adressenformat, wie z. B. eine 32-Bit-Adresse, oder ein langes Adressenformat, wie z. B. eine 64-Bit-Adresse. Konfigurationsraumtransaktionen werden verwendet, um auf den Konfigurationsraum der PCIe-Vorrichtungen zuzugreifen. Transaktionen in den Konfigurationsraum umfassen Leseanforderungen und Schreibanforderungen. Nachrichtraumtransaktionen (oder einfach Nachrichten) sind definiert, um die Kommunikation zwischen PCIe-Agenten im Band zu unterstützen.
-
In einer Ausführungsform fügt die Transaktionsschicht 205 Paketkopf/Nutzinformationen 206 zusammen. Das Format für die aktuellen Paketköpfe/Nutzinformationen ist in der PCIe-Spezifikation auf der PCIe-Spezifikations-Website zu finden (tatsächlich kann irgendeine Referenz hier auf einen Abschnitt der PCIe-Spezifikation irgendeine vergangene, aktuelle oder zukünftige PCIe-Spezifikation in Betracht ziehen, die auf der PCIe-Spezifikations-Website oder durch andere Mittel derzeit verfügbar oder in der Zukunft verfügbar ist).
-
Mit schnellem Bezug auf 3 ist eine Ausführungsform eines PCIe-Transaktionsdeskriptors dargestellt. In einer Ausführungsform ist der Transaktionsdeskriptor 300 ein Mechanismus zum Tragen von Transaktionsinformationen. In dieser Hinsicht unterstützt der Transaktionsdeskriptor 300 die Identifikation von Transaktionen in einem System. Andere potentielle Verwendungen umfassen die Verfolgung von Modifikationen einer Vorgabetransaktionsordnung und Zuordnung einer Transaktion zu Kanälen.
-
Der Transaktionsdeskriptor 300 umfasst ein Feld 302 eines globalen Identifizierers, ein Attributfeld 304 und ein Kanalidentifiziererfeld 306. In dem dargestellten Beispiel ist das Feld 302 des globalen Identifizierers mit einem Feld 308 eines lokalen Transaktionsidentifizierers und einem Quellenidentifiziererfeld 310 dargestellt. In einer Ausführungsform ist der globale Transaktionsidentifizierer 302 für alle ausstehenden Anforderungen eindeutig.
-
Gemäß einer Implementierung ist das Feld 308 des lokalen Transaktionsidentifizierers ein Feld, das durch einen anfordernden Agenten erzeugt wird, und es ist für alle ausstehenden Anforderungen eindeutig, die eine Vollendung für diesen anfordernden Agenten erfordern. Ferner identifiziert in diesem Beispiel der Quellenidentifizierer 310 eindeutig den anfordernden Agenten innerhalb einer PCIe-Hierarchie. Zusammen mit der Quellen-ID 310 liefert folglich das Feld 308 des lokalen Transaktionsidentifizierers eine globale Identifikation einer Transaktion innerhalb einer Hierarchiedomäne.
-
Das Attributfeld 304 legt Eigenschaften und Beziehungen der Transaktion fest. In dieser Hinsicht wird das Attributfeld 304 potentiell verwendet, um zusätzliche Informationen bereitzustellen, die die Modifikation der Vorgabebearbeitung von Transaktionen ermöglichen. In einer Ausführungsform umfasst das Attributfeld 304 ein Prioritätsfeld 312, ein Reserviert-Feld 314, ein Ordnungsfeld 316 und ein Keine-Spionage-Feld 318. Hier kann das Prioritätsunterfeld 312 durch einen Initiator modifiziert werden, um der Transaktion eine Priorität zuzuweisen. Das Reserviert-Attributfeld 314 wird für die Zukunft oder für die vom Verkäufer definierte Verwendung reserviert gelassen. Mögliche Verwendungsmodelle unter Verwendung von Prioritäts- oder Sicherheitsattributen können unter Verwendung des Reserviert-Attributfeldes implementiert werden.
-
In diesem Beispiel wird das Ordnungsattributfeld 316 verwendet, um optionale Informationen zu liefern, die den Typ von Ordnung übermitteln, die Vorgabeordnungsregeln modifizierten kann. Gemäß einer Beispielimplementierung bezeichnet ein Ordnungsattribut von „0“, dass Vorgabeordnungsregeln gelten sollen, wobei ein Ordnungsattribut von „1“ eine gelockerte Ordnung angibt, wobei Schreibvorgänge Schreibvorgänge in derselben Richtung überholen können und Lesevollendungen Schreibvorgänge in derselben Richtung überholen können. Das Spionageattributfeld 318 wird verwendet, um zu bestimmen, ob Transaktionen ausspioniert werden. Wie gezeigt, identifiziert ein Kanal-ID-Feld 306 einen Kanal, dem eine Transaktion zugeordnet ist.
-
Verbindungsstreckenschicht
-
Die Verbindungsstreckenschicht 210, die auch als Datenverbindungsstreckenschicht 210 bezeichnet wird, wirkt als Zwischenstufe zwischen der Transaktionsschicht 205 und der Bitübertragungsschicht 220. In einer Ausführungsform stellt eine Verantwortung der Datenverbindungsstreckenschicht 210 einen zuverlässigen Mechanismus zum Austauschen von Transaktionsschichtpaketen (TLPs) zwischen zwei Komponenten über eine Verbindungsstrecke bereit. Eine Seite der Datenverbindungsstreckenschicht 210 nimmt TLPs an, die durch die Transaktionsschicht 205 zusammengesetzt werden, wendet einen Paketsequenzidentifizierer 211, z. B. eine Identifikationsnummer oder Paketnummer, an, berechnet und wendet einen Fehlerdetektionscode, z. B. CRC 212, an und schickt die modifizierten TLPs zur Bitübertragungsschicht 220 für die Übertragung über ein physikalisches Medium zu einer externen Vorrichtung.
-
Bitübertragungsschicht
-
In einer Ausführungsform umfasst die Bitübertragungsschicht 220 einen logischen Unterblock 221 und einen elektrischen Unterblock 222, um ein Paket physikalisch zu einer externen Vorrichtung zu übertragen. Hier ist der logische Unterblock 221 für die „digitalen“ Funktionen der Bitübertragungsschicht 221 verantwortlich. In dieser Hinsicht umfasst der logische Unterblock einen Sendeabschnitt, um ausgehende Informationen für die Übertragung durch den physikalischen Unterblock 222 vorzubereiten, und einen Empfängerabschnitt, um empfangene Informationen zu identifizieren und vorzubereiten, bevor sie zur Verbindungsstreckenschicht 210 geleitet werden.
-
Der physikalische Block 222 umfasst einen Sender und einen Empfänger. Der Sender wird durch den logischen Unterblock 221 mit Symbolen beliefert, die der Sender serialisiert und zu einer externen Vorrichtung weiter sendet. Der Empfänger wird mit serialisierten Symbolen von einer externen Vorrichtung beliefert und transformiert die empfangenen Signale in einen Bitstrom. Der Bitstrom wird deserialisiert und zum logischen Unterblock 221 geliefert. In einer Ausführungsform wird ein 8b/10b-Übertragungscode verwendet, wobei Zehn-Bit-Symbole gesendet/empfangen werden. Hier werden spezielle Symbole verwendet, um ein Paket mit Rahmen 223 zu rahmen. Außerdem liefert der Empfänger in einem Beispiel auch einen Symboltakt, der vom ankommenden seriellen Strom zurückgewonnen wird.
-
Wie vorstehend angegeben, obwohl die Transaktionsschicht 205, die Verbindungsstreckenschicht 210 und die Bitübertragungsschicht 220 in Bezug auf eine spezielle Ausführungsform eines PCIe-Protokollstapels erörtert werden, ist ein geschichteter Protokollstapel nicht so begrenzt. Tatsächlich kann irgendein geschichtetes Protokoll enthalten sein/implementiert werden. Als Beispiel umfasst ein Port/eine Schnittstelle, die als geschichtetes Protokoll dargestellt ist: (1) eine erste Schicht, um Pakete zusammenzufügen, d. h. eine Transaktionsschicht; eine zweite Schicht, um Pakete zu sequenzieren, d. h. eine Verbindungsstreckenschicht; und eine dritte Schicht, um die Pakete zu übertragen, d. h. eine Bitübertragungsschicht. Als spezielles Beispiel wird ein übliches geschichtetes Standardschnittstellenprotokoll (CSI-Protokoll) verwendet.
-
Mit Bezug als nächstes auf 4 ist eine Ausführungsform eines seriellen PCIe-Punkt-Punkt-Gebildes dargestellt. Obwohl eine Ausführungsform einer seriellen PCIe-Punkt-Punkt-Verbindungsstrecke dargestellt ist, ist eine serielle Punkt-Punkt-Verbindungsstrecke nicht so begrenzt, da sie irgendeinen Übertragungspfad für die Übertragung von seriellen Daten umfasst. In der gezeigten Ausführungsform umfasst eine Basis-PCIe-Verbindungsstrecke zwei differentiell angesteuerte Signalpaare mit niedriger Spannung: ein Sendepaar 406/411 und ein Empfangspaar 412/407. Folglich umfasst die Vorrichtung 405 eine Sendelogik 406, um Daten zur Vorrichtung 410 zu senden, und eine Empfangslogik 407, um Daten von der Vorrichtung 410 zu empfangen. Mit anderen Worten, zwei Sendepfade, z. B. Pfade 416 und 417, und zwei Empfangspfade, z. B. Pfade 418 und 419, sind in einer PCIe-Verbindungsstrecke enthalten.
-
Ein Sendepfad bezieht sich auf irgendeinen Pfad zum Senden von Daten wie z. B. eine Sendeleitung, eine Kupferleitung, eine optische Leitung, einen drahtlosen Kommunikationskanal, eine Infrarot-Kommunikationsverbindungsstrecke oder einen anderen Kommunikationspfad. Eine Anbindung zwischen zwei Vorrichtungen, wie z. B. der Vorrichtung 405 und Vorrichtung 410, wird als Verbindungsstrecke, wie z. B. die Verbindungsstrecke 415, bezeichnet. Eine Verbindungsstrecke kann eine Bahn unterstützen - wobei jede Bahn einen Satz von differentiellen Signalpaaren darstellt (ein Paar für das Senden, ein Paar für den Empfang). Um die Bandbreite zu skalieren, kann eine Verbindungsstrecke mehrere Bahnen vereinigen, die mit xN bezeichnet werden, wobei N irgendeine unterstützte Verbindungsstreckenbreite ist, wie z. B. 1, 2, 4, 8, 12, 16, 32, 64 oder breiter.
-
Ein differentielles Paar bezieht sich auf zwei Sendepfade wie z. B. Leitungen 416 und 417, um differentielle Signale zu senden. Wenn die Leitung 416 als Beispiel von einem niedrigen Spannungspegel auf einen hohen Spannungspegel umschaltet, d. h. eine steigende Flanke, steuert die Leitung 417 von einem hohen Logikpegel auf einen niedrigen Logikpegel an, d. h. eine fallende Flanke. Differentielle Signale demonstrieren potentiell bessere elektrische Eigenschaften, wie z. B. eine bessere Signalintegrität, z. B. Kreuzkopplung, Spannungs-Überschwingen/Unterschwingen, Rufen usw. Dies ermöglicht ein besseres Zeitsteuerfenster, das schnellere Übertragungsfrequenzen ermöglicht.
-
In einigen Implementierungen können eine Zwischenverbindung mit hoher Leistung und ein entsprechendes Zwischenverbindungsprotokoll (z. B. wie eine Zwischenverbindung auf PCIe-Basis der nächsten Generation) bereitgestellt werden, die in der Lage sind, mit hohen Geschwindigkeiten wie z. B. 25 GT/s und/oder 32 GT/s zu arbeiten. In einem Beispiel können zwei Geschwindigkeiten für die Zwischenverbindung mit hoher Leistung, eine mit 25 GT/s und 32 GT/s, auf der Basis der für den Kanal bestimmten Eigenschaften definiert werden (z. B. während des Verbindungsstreckentrainings). Die Zwischenverbindung kann in einer Implementierung mit existierenden PCIe-Generationen und Geschwindigkeiten, die für diese Generationen vorgesehen sind (z. B. 8 GT/s, 16 GT/s usw.) abwärtskompatibel sein.
-
5 stellt ein Blockdiagramm einer ersten Vorrichtung 502A und einer zweiten Vorrichtung 502B, die über eine Verbindungsstrecke 506 gekoppelt sind, gemäß bestimmten Ausführungsformen dar. In einer speziellen Ausführungsform sind die erste Vorrichtung 502A und die zweite Vorrichtung 502B PCI-Express-Endpunkte (z. B. Vorrichtungen, die gemäß einem PCI-Express-Protokoll kommunizieren können) und die Verbindungsstrecke ist eine PCI-Express-Verbindungsstrecke, die physikalisch geschützt ist (wobei eine physikalisch geschützte Verbindungsstrecke sich auf eine Verbindungsstrecke zwischen Endpunkten beziehen kann, die mindestens einen kryptographischen Schlüssel vereinbart haben, der verwendet werden soll, um Nachrichten über die Verbindungsstrecke zu schützen).
-
Die erste Vorrichtung 502A kann geschützte Daten 508 speichern, die einer Zugriffssteuerung unterliegen. Die geschützten Daten 508 können beispielsweise Benutzerdaten, Konfigurationsdaten oder andere private Informationen umfassen. Eine Zugriffssteuermaschine 510 kann eine Schaltungsanordnung umfassen, um einen Authentifizierungszustand der zweiten Vorrichtung 502B und einen Schutzzustand der Verbindungsstrecke 506 zu überwachen und den Zugriff auf die Daten 508 auf der Basis der überwachten Zustände zu steuern. In einer speziellen Ausführungsform ist die erste Vorrichtung 502A eine Speichervorrichtung und zumindest ein Teil der Daten 508 ist in einem verschlüsselten Zustand gespeichert.
-
In einigen Systemen kann eine Speichervorrichtung Daten an eine andere Hardware-Vorrichtung über eine Verbindungsstrecke auf der Basis einer bloßen Authentifizierung eines Benutzers der Hardware-Vorrichtung ungeachtet dessen, ob die Authentifizierung innerhalb der Speichervorrichtung oder außerhalb einer anderen Vorrichtung (z. B. auf einer Host-Rechenmaschine integriert ist), freigeben. Ein üblicher Authentifizierungsmechanismus umfasst eine Authentifizierung auf Passwortbasis, um eine PCI-Express-Vorrichtung zu entriegeln, damit die PCI-Express-Vorrichtung Daten freigibt. Ein Gegner mit physikalischem Zugriff auf die Datenverbindungsstrecke zwischen der ersten und der zweiten Vorrichtung kann jedoch die Geheimhaltung, die Datenvertraulichkeit und die Integrität der Daten gefährden, nachdem die andere Vorrichtung sich bei der PCI-Express-Hardware-Vorrichtung erfolgreich authentifiziert, und folglich können die über die Verbindungsstrecke durch die PCI-Express-Hardware-Vorrichtung freigegebenen Daten ungeschützte Daten gefährden. Ein Schema auf Passwortbasis kann sich überdies als ungeeigneter Sicherheitsmechanismus erweisen.
-
In verschiedenen Ausführungsformen der vorliegenden Offenbarung erzwingt die Vorrichtung 502A eine PCI-Express-Vorrichtungs-Datenfreigabesteuerung, die eine Richtlinie auf der Basis von sowohl PCI-Express-Datenverbindungsstreckenschutz als auch Authentifizierung implementiert. In einigen Ausführungsform kann der PCI-Express-Datenverbindungsstreckenschutz eines oder mehrere von Vertraulichkeits-, Wiederholungs- und Integritätsschutz umfassen; und die Authentifizierung kann eine oder mehrere von Authentifizierung von unveränderlichen Komponenten, Authentifizierung von veränderlichen Komponenten und Benutzerauthentifizierung umfassen. Eine Datenfreigabesteuerbestimmung kann sowohl auf den Authentifizierungsergebnissen als auch dem Zustand des Datenverbindungsstreckenschutzes basieren. In einer Ausführungsform werden, wenn die Authentifizierung misslingt oder wenn der PCI-Express-Verbindungsstreckenschutz (z. B. Vertraulichkeits-, Integritäts-, Wiederholungschutz oder eine Kombination von diesen) deaktiviert ist, einen Fehler angetroffen hat oder unterbrochen wurde, die Daten 508, die auf der ersten PCI-Express-Vorrichtung 502A gespeichert sind, nicht auf die Datenverbindungsstrecke 506 außerhalb der physikalischen Grenze der ersten Vorrichtung freigegeben. In einigen Ausführungsformen müssen eine erneute Authentifizierung und erneute Aktivierung des Datenverbindungsstreckenschutzes stattfinden, wenn entweder die erste oder die zweite Vorrichtung ihren Leistungszustand in einer Weise überführt, die den Verbindungsstreckenschutz unterbricht, oder wenn das kryptographische Material, das verwendet wird, um die Verbindungsstrecke zu schützen, an einer Vorrichtung verloren gegangen ist.
-
Bei einer Detektion, dass die Daten 508 nicht über die Verbindungsstrecke 506 außerhalb der Vorrichtung 502A aufgrund eines Authentifizierungsausfalls oder einer Verbindungsstreckenschutzanomalie freigegeben werden, kann die Vorrichtung 502A entweder die Kommunikationsverbindungsstrecke 506 mit der zweiten Vorrichtung 502B aufrechterhalten und die Richtlinienentscheidung melden, die an der ersten Vorrichtung getroffen wird (z. B. durch Bewirken, dass in ein oder mehrere Architekturregister der ersten Vorrichtung 502A, oder die dieser zugeordnet sind, geschrieben wird) oder die Kommunikationsverbindungsstrecke mit der zweiten Vorrichtung abbrechen. In Reaktion auf die Bestimmung, dass der Zugriff auf die Daten 508 verweigert wird, kann die zweite Vorrichtung 502B die Authentifizierung erneut einleiten und den PCI-Express-Verbindungsstreckenschutz mit der ersten Vorrichtung 502A erneut aufbauen und wieder die Freigabe der Daten 508 anfordern.
-
In einem Beispielverwendungsszenario kann eine Hardware-Vorrichtung 502B, die in eine Host-Rechenvorrichtung 504 eingebettet ist oder damit gekoppelt ist, Daten 508 (z. B. geheime Informationen) in die Vorrichtung 502A (z. B. eine verschlüsselte PCI-Express-Speichervorrichtung) schreiben, die später abgerufen werden können. Die Vorrichtung 502B authentifiziert sich zuerst bei der Speichervorrichtung 502A, einschließlich der Authentifizierung der Betriebsumgebung der Vorrichtung 502B (z. B. Informationen 512 von unveränderlichen Komponenten und/oder Informationen 514 von veränderlichen Komponenten) und Benutzerberechtigungsnachweisen 516. Die zwei Vorrichtungen 502A und 502B verwenden die Authentifizierungsergebnisse, um den PCI-Express-Verbindungsstreckenschutz einzurichten, so dass die Datenverbindungsstrecke 506 zwischen den Vorrichtungen als privat und geschützt betrachtet wird. Die Vorrichtung 502B kann den Zustand der Verbindungsstrecke 506 sicher lesen, und wenn dieser angibt, dass das Sicherheitsniveau geeignet ist, kann sie dann geheime Informationen auf der Vorrichtung 502A speichern. Falls und wenn der Datenverbindungsstreckenschutz deaktiviert oder unterbrochen wird, soll die Vorrichtung 502B ihre Betriebsumgebung erneut authentifizieren und erneut den Verbindungsstreckenschutz aktivieren, so dass die Vorrichtung 502A sicherstellen kann, dass die in den Daten 508 gespeicherten geheimen Informationen an dieselbe Entität (z. B. Benutzer der Vorrichtung 502B) freigegeben werden, die die Informationen gespeichert hat, und kein Gegner die Vertraulichkeit und Integrität gefährden kann, wenn die geheimen Informationen auf der Verbindungsstrecke 506 laufen.
-
Verschiedene Ausführungsformen können bestimmte technische Vorteile bieten, wie z. B. starke Minderung gegen physikalische Gegner. Außerdem können verschiedene Ausführungsformen Privatsphäreschutzmaßnahmen auf verschiedenen Rechenplattformen durch Binden der Freigabe von geschützten Daten an das Sicherheitsniveau der PCIe-Verbindungsstrecke, über die diese Daten transportiert werden, verbessern.
-
Die erste Vorrichtung 502A kann irgendeine geeignete Rechenvorrichtung sein, um geschützte Daten 508 zu speichern, eine zweite Rechenvorrichtung 502B zu authentifizieren und mit der zweiten Rechenvorrichtung 502B über eine sichere Verbindungsstrecke 506 zu kommunizieren. Als Beispiele kann die erste Vorrichtung 502A eine verschlüsselte Speichervorrichtung, eine SmartNIC, einen Beschleuniger von künstlicher Intelligenz (KI), einen Graphikverarbeitungseinheitsbeschleuniger oder eine andere geeignete Rechenvorrichtung umfassen.
-
Die zweite Vorrichtung 502B kann irgendeine geeignete Rechenvorrichtung sein, um geschützte Daten 508 anzufordern, sich bei einer ersten Rechenvorrichtung 502A zu authentifizieren und mit der ersten Rechenvorrichtung 502A über eine sichere Verbindungsstrecke 506 zu kommunizieren. Die zweite Vorrichtung 502B kann beispielsweise eine Host-Rechenmaschine 504, eine Vorrichtung auf einer Host-Rechenmaschine 504, eine Vorrichtung, die mit der Vorrichtung 502A durch eine Host-Rechenmaschine 504 gekoppelt ist, oder eine andere geeignete Vorrichtung sein.
-
In verschiedenen Ausführungsformen können die Vorrichtung 502A und die Vorrichtung 502B in einer Weise miteinander kommunizieren, die mit einem PCI-Express-Protokoll kompatibel ist, ob einem aktuellen oder einem zukünftigen Protokoll. In anderen Ausführungsformen können die Vorrichtung 502A und die Vorrichtung 502B mit einem anderen geeigneten Protokoll kompatibel sein, das Schutz gegen physikalische Verbindungsstreckenangriffe schafft. In einigen Ausführungsformen können die erste und die zweite Vorrichtung zwei Beschleuniger, die über die (z. B. PCIe) Verbindungsstrecke verbunden sind, oder zwei Host-Rechenvorrichtungen, die durch die (z. B. PCIe) Verbindungsstrecke verbunden sind, sein.
-
Daten 508 können beliebige geeignete Daten umfassen. In verschiedenen Ausführungsformen können die Daten 508 Daten einer Privatsphäreangelegenheit, wie z. B. Steuer- oder Managementdaten, oder beliebige allgemeine Daten, die ein Benutzer der ersten Vorrichtung auf der ersten Hardware-Vorrichtung 502A speichern oder bereitstellen kann, umfassen. In verschiedenen Ausführungsformen können alle Daten, die dauerhaft durch die erste Vorrichtung 502A gespeichert werden (ausschließlich spezieller Typen von Daten, z. B. Daten, die über eine ungeschützte Verbindungsstrecke geteilt werden müssen, wie z. B. Daten, die verwendet werden, um die geschützte Verbindungsstrecke einzurichten), als geschützte Daten erachtet werden und den hier beschriebenen Zugriffssteuerungen unterliegen. In einer Ausführungsform können alle Daten, die durch die Vorrichtung 502A auf einer speziellen Arbeitsspeichervorrichtung oder einem Laufwerk der Vorrichtung 502A gespeichert sind, geschützte Daten sein. In einer anderen Ausführungsform können Daten selektiv als geschützte Daten markiert werden oder an einem Ort gespeichert werden, der geschützte Daten speichert (z. B. auf der Basis einer Angabe durch die zweite Vorrichtung 502B, dass solche Daten geschützt werden sollten), und die nicht geschützten Daten unterliegen nicht den hier beschriebenen Zugriffssteuerungen (oder unterliegen einem geringeren Grad an Zugriffssteuerung als die geschützten Daten).
-
Wie vorstehend beschrieben, können mehrere Aspekte der Vorrichtung 502B durch die erste Vorrichtung 502A vor dem Erlauben eines Zugriffs auf die Daten 508 authentifiziert werden. Eine oder mehrere von Informationen 512 von unveränderlichen Komponenten, Informationen 514 von veränderlichen Komponenten oder Benutzerberechtigungsnachweisen 516 der zweiten Vorrichtung 502B können beispielsweise durch die erste Vorrichtung 502A authentifiziert werden.
-
Informationen 512 von unveränderlichen Komponenten können Informationen über Hardware-Komponenten der Vorrichtung 502B, wie z. B. eine Vorrichtungs-ID, eine Verkäufer-ID (z. B. eine ID des Herstellers der Vorrichtung), eine ID einer Organisation, die die Vorrichtung 502B oder eine Komponente der Vorrichtung 502B besitzt oder zertifiziert hat, eine ID einer Hardware-Komponente (z. B. Mikrocontroller, Logikschaltung, Arbeitsspeicher, programmierbare Sicherung usw.) der Vorrichtung 502B, oder andere geeignete Informationen hinsichtlich einer Hardware-Komponente der Vorrichtung 502B umfassen. In einigen Ausführungsformen können die Informationen von unveränderlichen Komponenten eine oder mehrere Fähigkeiten der Hardware der Vorrichtung 502B angeben, wie z. B. kryptographische Fähigkeiten für über die Verbindungsstrecke übermittelte Daten.
-
Informationen 514 von veränderlichen Komponenten können Informationen über Software und Firmware umfassen, die auf der Vorrichtung 502B installiert sind. Solche Informationen können beispielsweise eine Versionsnummer oder einen Verkäufer von Software oder Firmware (z. B. Firmware eines Mikrocontrollers) der Vorrichtung 502B umfassen. In speziellen Ausführungsformen können Informationen 514 von veränderlichen Komponenten Identifizierer von statischen Konfigurationsdaten, die in einem nichtflüchtigen oder flüchtigen Arbeitsspeicher gespeichert sind, Bitströme für anwenderprogrammierbare Verknüpfungsfelder (FPGAs) oder irgendeine Software, die auf der Hardware-Vorrichtung läuft, umfassen. In einigen Ausführungsformen können die Informationen 514 von veränderlichen Komponenten eine oder mehrere Fähigkeiten der Software der Vorrichtung 502B wie z. B. kryptographische Fähigkeiten für über die Verbindungsstrecke übermittelte Daten angeben.
-
Benutzerberechtigungsnachweise können Informationen umfassen, um einen Benutzer der Vorrichtung 502B oder einer Rechenmaschine zu authentifizieren, die die geschützten Daten durch die Vorrichtung 502B anfordert, wie z. B. ein Kenntnisfaktor (z. B. Benutzername, Passwort, Pin-Nummer usw.), Besitzfaktor (z. B. einmalige Passwortzeichen oder Informationen, die von einem Schlüsselanhänger oder einem anderen physikalischen Objekt empfangen oder anderweitig abgeleitet werden) oder biometrische Informationen (z. B. ein Fingerabdruck, ein Gesichtsbild usw.).
-
6 stellt ein Blockdiagramm einer ersten Vorrichtung 502A gemäß bestimmten Ausführungsformen dar. Die Vorrichtung 502A umfasst Daten 508, eine Zugriffssteuermaschine 510, ein Authentifizierungsmodul 602, ein Verbindungsstreckenschutzmodul 604 und ein Leistungsmanagementmodul 606.
-
Das Authentifizierungsmodul 602 soll Authentifizierungsfunktionen durchführen. Beispielsweise kann das Authentifizierungsmodul 602 auf Authentifizierungsinformationen der zweiten Vorrichtung 502B zugreifen und bestimmen, ob die Authentifizierungsinformationen der zweiten Vorrichtung erwarteten Authentifizierungsinformationen entsprechen. Das Authentifizierungsmodul 602 kann einen mehrphasigen Authentifizierungsprozess durchführen, wobei mehrere Typen von Informationen, die der zweiten Vorrichtung zugeordnet sind, durch das Authentifizierungsmodul 602 authentifiziert werden sollen, bevor die Vorrichtung 502B als die Authentifizierung bestanden betrachtet wird. Das Authentifizierungsmodul 602 kann beispielsweise eine oder mehrere von Informationen 512 von unveränderlichen Komponenten, Informationen 514 von veränderlichen Komponenten oder Benutzerberechtigungsnachweisen 516 authentifizieren, und wenn irgendwelche dieser Authentifizierungen misslingen, kann sie die Authentifizierung als misslungen betrachten.
-
In verschiedenen Ausführungsformen kann das Authentifizierungsmodul 602 die Ergebnisse jeder Authentifizierung und/oder das endgültige Authentifizierungsergebnis (z. B. ob alle Typen von getesteten Authentifizierungsinformationen bestanden haben) in ein oder mehrere Register schreiben, die für das Richtlinienmodul 608 zugänglich sind, oder kann anderweitig das Richtlinienmodul 608 über die Ergebnisse des Authentifizierungsprozesses benachrichtigen.
-
Das Verbindungsstreckenschutzmodul 604 kann Funktionen durchführen, um einen physikalischen Verbindungsstreckenschutz über die Verbindungsstrecke 506 einzurichten (wie z. B. die nachstehend beschriebenen Funktionen). Verschiedene Schutzmaßnahmen können über die Verbindungsstrecke unabhängig oder gegenseitig eingerichtet werden. Eine erste Verbindungsstreckenschutzprozedur kann beispielsweise Vertraulichkeitsschutz für Daten herstellen, die über die Verbindungsstrecke 506 zwischen der ersten Vorrichtung 502A und der zweiten Vorrichtung 502B übertragen werden, eine zweite Verbindungsstreckenschutzprozedur kann einen Wiederholungsangriffsschutz für Daten herstellen, die über die Verbindungsstrecke 506 übertragen werden, und eine dritte Verbindungsstreckenschutzprozedur kann einen Integritätsschutz für Daten herstellen, die über die Verbindungsstrecke 506 übertragen werden. Der Integritätsschutz schafft einen Schutz gegen die unberechtigte Modifikation von Daten innerhalb Übertragungen vor dem Empfang. Der Wiederholungsangriffsschutz schützt gegen Angriffe, bei denen eine gültige Übertragung über die Verbindungsstrecke 506 abgefangen und dann bösartig wiederholt wird. Der Vertraulichkeitsschutz schafft einen Schutz (z. B. durch Verschlüsselung) gegen eine unberechtigte Partei, die Zugriff auf private Informationen erhält, die durch eine Übertragung befördert werden.
-
In einer Ausführungsform wird, um den Verkehr, der durch PCIe-Verbindungsstrecken fließt, gegen Vertraulichkeits- und Integritätsangriffe zu schützen, ein authentifiziertes Verschlüsselungsschema auf der Basis eines fortschrittlichen Verschlüsselungsstandards, der im Galois/Zähler-Modus (AES-GCM) mit 256-Bit-Schlüsseln arbeitet, um Daten auf der Verbindungsstrecke zu verschlüsseln/entschlüsseln, verwendet. In anderen Ausführungsformen können Endpunkte (z. B. PCIe-Endpunkte oder andere Rechenvorrichtungen) zusätzliche Schlüsselgrößen (beispielsweise AES-128) oder andere geeignete Kryptoalgorithmen (z. B. Stromgeheimcodes, die zum Verschlüsseln von Kommunikationskanälen geeignet sind, einschließlich Blockgeheimcodes, die im Zählermodus arbeiten) unterstützen. Obwohl verschiedene Ausführungsformen hier mit Bezug auf AES-GCM erörtert werden, können solche Ausführungsformen unter Verwendung beliebiger geeigneter Kryptoalgorithmen implementiert werden. In solchen Fällen können die Endpunkte flexible und gewandte kryptographische Mechanismen mit der Fähigkeit, die kryptographischen Fähigkeiten der Endpunkte aufzuzählen, bereitstellen und können authentifizierte Mechanismen bereitstellen, um den Status des ausgewählten kryptographischen Algorithmus zu bestimmen.
-
Wenn ein physikalischer Schutz über eine Verbindungsstrecke erwünscht ist, kann ein Schlüsselaustausch über die Verbindungsstrecke durch die Endpunktvorrichtungen durchgeführt werden. In einer Ausführungsform wird der Schlüsselaustausch durch logische PCIe-Schutzmanagemententitäten durchgeführt. In einigen Ausführungsformen kann dies die Verwendung eines Mechanismus eines Registersatzes im Band (z. B. Briefkasten) für Authentifizierungs- & Messprozeduren beinhalten. In einigen Ausführungsformen, bevor der Schlüsselaustausch durchgeführt wird, kann eine Authentifizierung von sowohl unveränderlichen Eigenschaften der Endpunktvorrichtungen als auch veränderlichen Eigenschaften durchgeführt werden. Während dieses Initialisierungsprozesses kann außerdem eine Unterstützung für die Verschlüsselung an sowohl stromaufseitigen als auch stromabseitigen Ports entdeckt werden. In einer Ausführungsform wird der Schlüsselaustausch als Teil des Authentifizierungsablaufs durchgeführt. In einer anderen Ausführungsform wird der Schlüsselaustausch als separater Ablauf durchgeführt. Alternativ kann ein Nachrichtenmechanismus im Band verwendet werden, vorausgesetzt, dass eine Möglichkeit besteht, die Entsprechung zwischen der speziellen Verbindungsstrecke und der Anbindung außerhalb des Bandes sicher aufzubauen. Der Schlüsselaustausch kann auch durch ein durch Hardware gesteuertes Mittel durchgeführt werden, beispielsweise unter Verwendung von PCIe-Nachrichten (z. B. Managementkomponententransportprotokoll-Tunnelnachrichten (MCTP-Tunnelnachrichten) oder Nachrichten mit neuen Formaten, die speziell für diesen Zweck ausgelegt sind). In diesem Fall kann der Schlüsselaustausch durch die nachstehend erörterten Einrichtungs/Management-Mechanismen ausgelöst und gemanagt werden, die in verschiedenen Ausführungsformen teilweise oder vollständig unabhängig von der Software arbeiten können, die an den Endpunkten läuft. In verschiedenen Ausführungsformen kann der Schlüsselaustausch in irgendeiner geeigneten für die Implementierung spezifischen Weise durchgeführt werden. In einer speziellen Ausführungsform kann der Schlüsselaustausch dazu führen, dass ein geteiltes Geheimnis zwischen den Endpunkten festgelegt wird, das verwendet wird, um eine Schlüsselkette mit mehreren abgeleiteten Schlüsseln zu erzeugen. Der Schlüsselaustausch kann eine Vertraulichkeit für die Verbindungsstrecke schaffen, da die über die Verbindungsstrecke gesendeten Daten auf der Basis des Schlüssels (der Schlüssel), der (die) während des Schlüsselaustauschs eingerichtet wird (werden), verschlüsselt werden können.
-
Die Einrichtung einer physikalisch geschützten Verbindungsstrecke würde mit einem Auslöser starten, z. B. über ein neues Steuerbit („z. B. Verbindungsstreckenverschlüsselung Ein“), das zum stromabseitigen Port hinzugefügt wird. Ein Bit, um diesen Auslöser anzugeben, kann beispielsweise im Verbindungsstreckensteuer-3-Register der sekundären erweiterten PCI-Express-Fähigkeitsstruktur enthalten sein. In verschiedenen Ausführungsformen kann irgendeines der reservierten (RsvdP) Bits (wie z. B. das Bit 2, wie in 7-69 angegeben) des Verbindungsstreckensteuer-3-Registers als Steuerbit verwendet werden, um den Verbindungsstreckenschutz auszulösen. In anderen Ausführungsformen kann irgendeine geeignete Nachricht, die zwischen Endpunkten geleitet wird, die Konfiguration einer physikalisch geschützten Verbindungsstrecke auslösen.
-
Vor dem Auslösen der Einrichtung können optionale Parameter wie z. B. die Aktivierung und Konfiguration des Integritätsschutzes zwischen Verbindungsstreckenpartnern übermittelt werden. Beispielsweise können die Größe eines Integritätsprüfwerts (ICV) und, falls die ICVs nicht auf einer Basis pro TLP angewendet werden (d. h. wenn ein einzelner ICV über mehrere TLPs berechnet wird), die Frequenz/das Fenster einer ICV-Anwendung übermittelt werden. Der ICV kann Integritätsschutz für die Verbindungsstrecke schaffen.
-
Sobald er ausgelöst ist, sendet der stromabseitige Port eine Nachricht „sichere Verbindungsstrecke einleiten“ zum stromaufseitigen Port und der ganze TLP-Verbindungsstreckenverkehr wird in beiden Richtungen blockiert (z. B. durch Hardware), bis die geschützte Verbindungsstrecke aufgebaut wurde. Wenn der Schlüsselaustausch zur Zeit des Auslösens noch nicht durchgeführt wurde, dann kann der Schlüsselaustausch zu dieser Zeit durchgeführt werden. In verschiedenen Ausführungsformen können die dem Schlüsselaustausch zugeordneten Informationen durch einen Mechanismus auf Nachrichtenbasis übermittelt werden. Eine Nachrichtenanforderung mit Datennutzinformationen (MsgD), wie in PCI-Express definiert, kann beispielsweise verwendet werden, um die dem Schlüsselaustausch zugeordneten Informationen in ihren Nutzinformationen zu tragen. In verschiedenen Ausführungsformen kann der Schlüsselaustausch ohne Softwareinteraktion durchgeführt werden.
-
Da der Laufzeitschlüsselaustausch in Abhängigkeit von der Implementierung erforderlich sein kann, ist es in verschiedenen Ausführungsformen erwünscht, diesen Mechanismus auf Nachrichtenbasis zu unterstützen und denselben Mechanismus für sowohl den anfänglichen Schlüsselaustausch als auch alle anschließenden Schlüsselaustausche zu verwenden. Sobald der anfängliche Schlüsselaustausch vollendet wurde, überträgt jeder Port eine Nachricht „sichere Verbindungsstrecke aufgebaut“ zum anderen Port. Diese Nachricht kann selbst verschlüsselt werden (zusammen mit dem ganzen anschließenden Verbindungsstreckenverkehr). TLP-Verkehr kann dann entsperrt werden und der normale Betrieb der (nun geschützten) Verbindungsstrecke beginnt (oder fährt fort, wenn dieser Prozess durchgeführt wurde, um den Schutz erneut herzustellen). Die hier beschriebenen Verbindungsstreckenschlüsselmanagementprotokolle können auch für die hinsichtlich der Integrität geschützte Synchronisation beliebiger Protokollparameter verwendet werden, wie z. B. Zähler (z. B. Initialisierungsvektoren, die als Teil des Verschlüsselungsschemas verwendet werden, wie z. B. bei AES-GCM oder einem anderen Stromgeheimcode, der zum Schützen der Verbindungsstrecke geeignet ist), andere hier identifizierte Betriebsparameter oder andere geeignete Protokollparameter. In verschiedenen Ausführungsformen können Zähler, die in einer vorbestimmten Weise fortschreiten, die verwendet werden (in Zusammenhang mit einem speziellen kryptographischen Schlüssel), um Nachrichten zu verschlüsseln und zu entschlüsseln, die über die Verbindungsstrecke gesendet werden, einen Schutz gegen Wiederholungsangriffe schaffen, da nicht erlaubt ist, dass derselbe Zähler zweimal verwendet wird, und die Detektion eines wiederholten Zählerwerts auf eine verdächtige Aktivität hinweisen würde. Andere geeignete Wiederholungsangriffsschutzmaßnahmen werden hier in Betracht gezogen.
-
Wenn ein Versuch, eine verschlüsselte Verbindungsstrecke aufzubauen, misslingt (einschließlich z. B. der Detektion irgendeines unerwarteten Verhaltens, das beim Quittungsaustausch beobachtet wird), wird die Verbindungsstrecke in einen deaktivierten Zustand gezwungen, bis das Auslöserbit gelöscht wurde. In einer Ausführungsform setzt das Löschen des Bits „Verbindungsstreckenverschlüsselung ein“ das „Verbindungsstreckendeaktivierungs“-Bit und die Verbindungsstrecke wird darauf eingeschränkt, im deaktivierten Zustand zu bleiben, bis das „Verbindungsstreckendeaktivierungs“-Bit gelöscht wird, um Angriffe zu vermeiden, bei denen ein Gegner die Verbindungsstreckensicherheit ausschaltet. Zusätzliche Fehlerstatusinformationen (die z. B. einen Fehler beschreiben, der bei der Einrichtung der geschützten Verbindungsstrecke angetroffen wird) können bereitgestellt werden. In einem Beispiel können solche Fehlerstatusinformationen im gleichen Mechanismus wie das Auslöserbit enthalten sein (z. B. im Verbindungsstreckenstatus-3-Register) .
-
Das Verbindungsstreckenschutzmodul 604 kann den Verbindungsstreckenschutzzustand der Verbindungsstrecke 506 überwachen und Änderungen im Schutzzustand der Verbindungsstrecke detektieren. In einer Ausführungsform kann das Verbindungsstreckenschutzmodul 506 detektieren, dass der Verbindungsstreckenschutz deaktiviert ist, auf der Basis einer Detektion eines Verbindungsstreckenfehlers, der der Authentifizierung und Überprüfung eines über die Verbindungsstrecke gesendeten Pakets zugeordnet ist. Das Verbindungsstreckenschutzmodul 604 kann beispielsweise detektieren, dass der Verbindungsstreckenschutz deaktiviert wurde, auf der Basis einer Benachrichtigung, dass eine Prüfsumme (z. B. ein ICV) einer über die Verbindungsstrecke übertragenen Nachricht ungültig ist (z. B. nicht einer Prüfsumme entspricht, die auf der Basis von Inhalten der empfangenen Nachricht berechnet wird). In verschiedenen Ausführungsformen kann das Verbindungsstreckenschutzmodul 604 bestimmen, dass der Verbindungsstreckenschutz deaktiviert ist, auf der Basis einer Detektion eines Verbindungsstreckenzusammenbruchs oder eines anderen Verbindungsstreckenfehlers (z. B. eines Verbindungsstreckensicherheitsausfallfehlers), der dem über die Verbindungsstrecke verwendeten Kommunikationsprotokoll (z. B. PCIe-Protokoll) zugeordnet ist.
-
In verschiedenen Ausführungsformen kann das Verbindungsstreckenschutzmodul 604 die Ergebnisse von Verbindungsstreckenschutzprozeduren in ein oder mehrere Register schreiben, die für das Richtlinienmodul 608 zugänglich sind, oder kann das Richtlinienmodul 608 anderweitig über die Ergebnisse des Verbindungsstreckenschutzprozesses benachrichtigen. In verschiedenen Ausführungsformen können die Ergebnisse angeben, welche Schutzmaßnahmen auf der Verbindungsstrecke eingerichtet wurden. Die Ergebnisse können beispielsweise darauf hinweisen, dass ein Vertraulichkeitsschutz aufgebaut wurde, aber Integritäts- und Wiederholungsangriffsschutzmaßnahmen nicht aufgebaut werden konnten. Als anderes Beispiel können die Ergebnisse darauf hinweisen, dass Vertraulichkeits-, Wiederholungsangriffs- und Integritätsschutzmaßnahmen jeweils aufgebaut wurden. In verschiedenen Ausführungsformen kann, wenn sich der Status des Verbindungsstreckenschutzes ändert, das Verbindungsstreckenschutzmodul 604 den Wert von einem oder mehreren Registern ändern, die für das Richtlinienmodul 608 zugänglich sind, oder kann anderweitig das Richtlinienmodul 608 über die Änderung benachrichtigen. Wenn beispielsweise einer oder mehrere des Vertraulichkeitsschutzes, des Wiederholungsangriffsschutzes oder des Integritätsschutzes verloren gehen oder anderweitig gefährdet werden, kann das Verbindungsstreckenschutzmodul 604 das Richtlinienmodul 608 benachrichtigen.
-
In verschiedenen Ausführungsformen können ein oder mehrere Register Werte speichern, die den Leistungszustand der Verbindungsstrecke angeben, welche Informationen authentifiziert wurden, oder welche Schutzmaßnahmen auf der Verbindungsstrecke hergestellt sind, und solche Register können gegen eine unberechtigte Modifikation geschützt werden. Jedes der Register kann beispielsweise so konfiguriert sein, dass nur die Vorrichtung 502A oder eine oder mehrere Komponenten davon (z. B. Modul 602, 604, 606 oder 608) solche Register bearbeiten können.
-
Das Leistungsmanagementmodul 606 kann einen Leistungszustand der Verbindungsstrecke 506 überwachen und den Zustand (oder Änderungen am Zustand) dem Richtlinienmodul 608 melden. Wenn beispielsweise das Leistungsmanagementmodul 606 bestimmt, dass die Verbindungsstrecke von einem normalen Zustand, in dem geeignete Schutzmaßnahmen über die Verbindungsstrecke 506 aufrechterhalten werden können, in einen leistungsärmeren Zustand (z. B. in dem ein oder mehrere Schutzmaßnahmen für die Verbindungsstrecke gefährdet sind) übergegangen ist, kann das Leistungsmanagementmodul 606 eine Angabe der Änderung des Verbindungsstreckenleistungszustandes in ein oder mehrere Register schreiben, die für das Richtlinienmodul 608 zugänglich sind, oder kann das Richtlinienmodul 608 anderweitig über die Änderung des Verbindungsstreckenleistungszustandes benachrichtigen. In einigen Ausführungsformen können mit Bezug auf das PCI-Express-Protokoll solche leistungsärmeren Zustände die D3cold-, L2- und L3-Zustände umfassen, während normale Zustände/Zustände mit höherer Leistung die DO-, Dl-, D2- und D3hot-Zustände umfassen können. In verschiedenen Ausführungsformen kann, wenn die Verbindungsstrecke wieder in den normalen Zustand übergeht, das Leistungsmanagementmodul 606 das Richtlinienmodul dementsprechend informieren. In einigen Ausführungsformen können ein oder mehrere der Verbindungsstreckeneinrichtungsprozeduren erneut durchgeführt werden, um geeignete Schutzmaßnahmen aufzubauen, bevor der Zugriff auf die Daten 508 erneut erlaubt wird.
-
In der dargestellten Ausführungsform ist das Richtlinienmodul 608 mit dem Authentifizierungsmodul 602, dem Verbindungsstreckenschutzmodul 604 und dem Leistungsmanagementmodul 606 gekoppelt. Das Richtlinienmodul 608 analysiert Informationen, die von einem oder mehreren dieser Module empfangen werden, um einen Authentifizierungszustand der zweiten Vorrichtung 502B und einen Verbindungsstreckenschutzzustand der Verbindungsstrecke 506 zu bestimmen. In einer speziellen Ausführungsform kann das Richtlinienmodul 608 bestimmen, ob der Authentifizierungszustand ausreicht, um den Zugriff auf die Daten 508 zu erlauben, und ob der Verbindungsstreckenschutzzustand ausreicht, um den Zugriff auf die Daten 508 zu erlauben. In einigen Ausführungsformen ist die Angabe, ob der Authentifizierungszustand ausreicht, eine binäre Angabe und ist nur dann positiv, wenn alle Authentifizierungsanforderungen erfüllt sind. In einigen Ausführungsformen ist ebenso die Angabe, ob der Verbindungsstreckenschutzzustand ausreicht, eine binäre Angabe und ist nur dann positiv, wenn jeder Verbindungsstreckenschutztyp eines Satzes von Verbindungsstreckenschutztypen (z. B. Vertraulichkeit, Wiederholungsangriff, Integrität) gegenwärtig vorhanden ist.
-
Das Richtlinienmodul 608 kann seine Entscheidung darüber, ob ein Zugriff über die Verbindungsstrecke 506 auf die Daten 508 erlaubt wird, in irgendeiner geeigneten Weise melden. Das Richtlinienmodul 608 kann beispielsweise ein Register mit einem Wert aktualisieren, der angibt, ob der Zugriff auf die Daten 508 erlaubt werden sollte oder nicht. Architekturregister der ersten Vorrichtung (z. B. Register im PCI-Konfigurationsraum oder MMIO-Raum der Vorrichtung) oder beliebige für die Vorrichtung spezifische Mechanismen können beispielsweise verwendet werden, um die Entscheidung zu melden.
-
In verschiedenen Ausführungsformen kann die Angabe, ob auf die Daten 508 zugegriffen werden kann, an irgendeine geeignete Entität wie z. B. eine Host-Rechenvorrichtung 504, die Vorrichtung 502B oder den Anforderungsprozessor 610 gemeldet werden (oder anderweitig zugänglich gemacht werden). In verschiedenen Ausführungsformen kann, wenn das Richtlinienmodul 608 bestimmt, dass der Zugriff auf die Daten 508 nicht erlaubt werden sollte, das Richtlinienmodul 608 Handlungen einleiten, um die Authentifizierung der Vorrichtung 502B und/oder den Schutz der Verbindungsstrecke 506 wiederherzustellen. Das Richtlinienmodul 608 kann beispielsweise bewirken, dass eine Nachricht zur Vorrichtung 502B gesendet wird, die angibt, dass die Vorrichtung 502B sich erneut bei der Vorrichtung 502A authentifizieren sollte. Als anderes Beispiel kann das Richtlinienmodul 608 bewirken, dass Verbindungsstreckeneinrichtungsprozeduren wiederholt werden, um die Schutzmaßnahmen auf der Verbindungsstrecke 506 wiederherzustellen.
-
Der Anforderungsprozessor 610 empfängt Anforderungen für Daten 508 über die Verbindungsstrecke 506 und steuert den Zugriff auf die Daten 508 auf der Basis einer Angabe vom Richtlinienmodul 608 hinsichtlich dessen, ob der Zugriff gewährt werden sollte. Wenn das Richtlinienmodul 608 den Zugriff erlaubt, kann der Anforderungsprozessor 610 die angeforderten Daten abrufen und die Daten über die geschützte Verbindungsstrecke 506 senden. Wenn das Richtlinienmodul 608 den Zugriff nicht erlaubt, kann der Anforderungsprozessor 610 die Anforderung ignorieren und mit einem Fehler antworten, der angibt, dass der Zugriff nicht erlaubt wird, oder kann eine andere geeignete Handlung unternehmen.
-
7 stellt ein System 700 zum Übermitteln von Daten (z. B. 508) über eine geschützte Verbindungsstrecke 506 gemäß bestimmten Ausführungsformen dar. Das System 700 umfasst eine Endpunktrechenvorrichtung 702 und eine Endpunktrechenvorrichtung 704, die über die Verbindungsstrecke 706 gekoppelt sind. Die Vorrichtung 702 kann beliebige geeignete Eigenschaften der Vorrichtung 502A aufweisen, die Vorrichtung 704 kann beliebige geeignete Eigenschaften der Vorrichtung 502B aufweisen und die Verbindungsstrecke 706 kann beliebige geeignete Eigenschaften der Verbindungsstrecke 506 aufweisen.
-
Jede Endpunktvorrichtung umfasst eine Sicherheitsmaschine 712, eine Protokollsicherheitszustandsmaschine 718, Konfigurationsregister 720, eine Verschlüsselungsmaschine 722, eine Paketmaschine 724, einen Prozessor 726 und einen Arbeitsspeicher 728 (obwohl jede Komponente nicht notwendigerweise an jedem Endpunkt dieselbe ist). Die Endpunktvorrichtung 702 umfasst eine Verbindungsstrecken-Firmware 714 und der Endpunkt 704 umfasst einen Verbindungsstreckentreiber 716. In einigen Ausführungsformen kann der Endpunkt 704 eine Host-Rechenvorrichtung wie z. B. ein SoC oder eine andere Verarbeitungsvorrichtung sein.
-
Um den Schutz auf der Verbindungsstrecke 706 einzurichten, können die Endpunkte 702 und 704 durch ihre jeweiligen Sicherheitsmaschinen 712 verschiedene Informationen 708 wie z. B. Authentifizierungsdaten, Informationen des kryptographischen Schlüssels oder andere Konfigurationsparameter austauschen. Sobald die Verbindungsstrecke geschützt wurde, können Pakete durch die Paketmaschinen 724 (die in einigen Ausführungsformen einige oder alle der hier beschriebenen Protokollschichten implementieren können) erzeugt werden, die durch die Verschlüsselungsmaschinen 722 verschlüsselt werden, um verschlüsselten Verbindungsstreckenverkehr 710 zu erzeugen, der dann zwischen dem Endpunkt 702 und dem Endpunkt 704 übermittelt wird.
-
In einer speziellen Ausführungsform implementiert die Sicherheitsmaschine 712A das Authentifizierungsmodul 602, das Verbindungsstreckenschutzmodul 604 und die Zugriffssteuermaschine 510, um Daten, die im Arbeitsspeicher 728A gespeichert sind, vor der Übertragung über eine ungeschützte Verbindungsstrecke zu schützen.
-
Die Protokollschichtlogik kann vorgesehen sein (z. B. in einem oder mehreren Ports der Endpunktvorrichtungen), um eine Verbindungsstrecke und einen Stapel eines speziellen Protokolls (z. B. PCIe, Gen-Z™, UPI, Cache-kohärente Zwischenverbindung für Beschleuniger (CCIX™) , Infinity™ von Advanced Micro Device™ (AMD™), gemeinsame Kommunikationsschnittstelle (CCI), Centriq™ von Qualcomm™ usw.) über die Verbindungsstrecke 706 zu implementieren.
-
In einigen Beispielen kann die Vorrichtung 704 mit einer Host-Rechenvorrichtung integriert sein und/oder die Vorrichtung kann ihre eigene Rechenfähigkeit mit einer lokalen Firmware/Software, die vom Host unabhängig ist, aufweisen, und/oder ein einzelner Prozessor kann im Namen einer komplexen Vorrichtung, die durch mehrere Funktionen (z. B. einen Koppler) freiliegt, und/oder sogar mehreren logischen Vorrichtungen (z. B. ein Koppler mit einer oder mehreren zusätzlichen Vorrichtungen, die logisch unter dem Koppler erscheinen, unter anderen Beispielimplementierungen) arbeiten.
-
Die Verschlüsselungsmaschinen 722A und 722B können eine Hardwareschaltungsanordnung, Firmware und/oder Software umfassen, um kryptographische Operationen und andere Aufgaben in Bezug auf das Management und die Verwendung von Zertifikaten und entsprechenden kryptographischen Schlüsseln (z. B. die Entschlüsselung und Verschlüsselung von signierten Manifesten, die Überprüfung von Hashes und andere kryptographische Aufgaben) in Verbindungsstrecke mit Authentifizierungs- und Überprüfungsaufgaben durchzuführen, die in einer Beispielvorrichtungsauthentifizierungsarchitektur durchgeführt werden.
-
In einigen Implementierungen, wie z. B. im Beispiel einer PCIe-Vorrichtung, kann ein Satz von Registern (z. B. 720) an jeder der Vorrichtungen vorgesehen sein und die Register können belegt und gelesen werden (z. B. unter Verwendung einer Authentifizierungsmaschine), um die Kommunikation von Nachrichten oder Befehlen mit der anderen Vorrichtung in einer Authentifizierungsarchitektur zu ermöglichen. In einem Beispiel können die Register 720 Register umfassen, die als Register mit erweiterter Fähigkeit unter PCIe definiert und an den Vorrichtungen bereitgestellt sind. Die Register 720 können beispielsweise Register umfassen, um Eigenschaften der jeweiligen Vorrichtung anzugeben, einschließlich ihres Modells, Verkäufers, der Authentifizierungsprotokolle, die sie unterstützt, der kryptographischen Technologien, die sie unterstützt, um ihre Zertifikatautorität anzugeben (z. B. einem Zertifikat und privaten Schlüssel zugeordnet), und anderer Merkmale der Vorrichtung.
-
8 stellt einen Ablauf für eine Vorrichtungsauthentifizierung gemäß bestimmten Ausführungsformen dar. Eine zweite Vorrichtung 805 (die beliebige Eigenschaften der zweiten Vorrichtung 502B oder 704 aufweisen kann), wie z. B. eine PCIe-Vorrichtung, kann mit einer ersten Vorrichtung 810 (die beliebige Eigenschaften der ersten Vorrichtung 502A oder 704 aufweisen kann) verbunden sein (z. B. über einen Port). Vor dem Gewähren eines Zugriffs auf bestimmte Host-Ressourcen (z. B. Daten 508) kann die erste Vorrichtung zuerst eine Authentifizierungsarchitektur verwenden, um sicherzustellen, dass die zweite Vorrichtung von einem speziellen Typ, von einem speziellen Hersteller ist, spezielle Eigenschaften aufweist, zertifiziert ist, bestätigt ist, oder im Besitz einer speziellen Organisation ist, oder andere geeignete Prüfungen vor der Anwendung von bestimmten Richtlinien auf die Wechselwirkung der zweiten Vorrichtung 805 mit der ersten Vorrichtung 810. Die erste Vorrichtung 810 kann beispielsweise die Firmware-Version der zweiten Vorrichtung 805 durch eine Firmware-Messung abfragen. Die erste Vorrichtung 810 kann auch die Hardware und Firmware der zweiten Vorrichtung durch Vorrichtungsauthentifizierung 520 abfragen. Die zweite Vorrichtung 805 kann in einigen Implementierungen ebenso die Identität der ersten Vorrichtung (z. B. durch Authentifizierung 820) abfragen. In einigen Fällen kann eine gegenseitige Authentifizierung 830 durch Vorrichtungsauthentifizierungen 820 und 825 erreicht werden. Nach dem Überprüfen der Identität (und Fähigkeiten, wenn erwünscht) können die Vorrichtungen Geheimnisse für die Verbindungsstreckenverschlüsselung und andere Sicherheitszwecke durch Schlüsselaustausch austauschen (z. B. bei 835). Wie in dem Beispiel von 8 dargestellt, kann die Vorrichtungsauthentifizierung verwendet werden, um zu ermöglichen, dass vertrauenswürdige Entscheidungen zwischen den Vorrichtungen über eine Zwischenverbindung (z. B. eine mit PCIe kompatible Zwischenverbindung) getroffen werden. In einigen Implementierungen kann die Vorrichtungs-Firmware-Messung in Verbindungsstrecke mit der Vorrichtungsauthentifizierung verwendet werden, um die Vertrauenswürdigkeit der Vorrichtungsauthentifizierung zu ermöglichen.
-
In einigen Implementierungen kann sich die Vorrichtungsauthentifizierung (z. B. 820) existierende Authentifizierungsschemen, Authentifizierungsprotokolle und Authentifizierungsparadigmen borgen. In einem Beispiel kann sich ein PCIe-Vorrichtungsauthentifizierungschema die Authentifizierungsarchitektur eines anderen Zwischenverbindungsprotokolls borgen und zumindest teilweise diesem folgen. Zumindest ein Teil des Authentifizierungsschemas, das in der Authentifizierungsspezifikation des universellen seriellen Busses (USB) dargelegt ist, kann beispielsweise während der Authentifizierung der PCIe-Vorrichtung (über PCIe-Register und Verbindungsstrecken) verwendet werden. Prinzipien und Abläufe, die in der Authentifizierungsarchitektur, dem Authentifizierungsprotokoll und den Authentifizierungsnachrichten der USB-Authentifizierungsspezifikation definiert sind, können beispielsweise verwendet werden. Das Ausnutzen von existierenden Authentifizierungsschemen (z. B. von anderen Zwischenverbindungen) kann beispielsweise vorteilhaft sein, da dieselbe Softwareimplementierung für sowohl die Authentifizierung in nicht nur dem beabsichtigten Protokoll, sondern auch anderen Protokollen (z. B. sowohl USB- als auch PCIe-Vorrichtungsauthentifizierung) verwendet werden kann, derselbe Silizium-Hardware-Implementierungsblock für die Authentifizierung von mehreren Protokollen (z. B. für sowohl USB- als auch PCIe-Vorrichtungen) verwendet werden kann, unter anderen Beispielvorteilen.
-
9 stellt einen Ablauf für die Datenfreigabesteuerung auf der Basis der Authentifizierung und des Verbindungsstreckenschutzes gemäß bestimmten Ausführungsformen dar. Der Ablauf von 9 kann durch eine Rechenvorrichtung wie z. B. 502A, 702 oder eine andere geeignete Rechenvorrichtung ausgeführt werden.
-
902 umfasst das Speichern von ersten Daten. 904 umfasst das Empfangen einer Anforderung für die ersten Daten von einer Kommunikationsvorrichtung (z. B. irgendeiner geeigneten Rechenvorrichtung, die betriebsfähig ist, um Daten mit einer anderen Rechenvorrichtung zu kommunizieren) über eine Verbindungsstrecke, die mit einer Kommunikationsvorrichtung aufgebaut ist. 906 umfasst das Steuern des Zugriffs auf die ersten Daten für die Kommunikationsvorrichtung auf der Basis eines Authentifizierungszustandes der Kommunikationsvorrichtung und eines Schutzzustandes der Verbindungsstrecke.
-
Einige der in 9 dargestellten Blöcke können wiederholt, kombiniert, modifiziert oder gelöscht werden, wo es geeignet ist, und zusätzliche Blöcke können auch zum Ablaufplan hinzugefügt werden. Außerdem können Blöcke in irgendeiner geeigneten Reihenfolge durchgeführt werden, ohne vom Schutzbereich von speziellen Ausführungsformen abzuweichen.
-
Obwohl einige der hier erörterten Ausführungsformen mit Bezug auf PCIe-Protokolle oder Protokolle auf PCIe-Basis beschrieben wurden, sollte erkannt werden, dass ähnliche, entsprechende Verbesserten an anderen Zwischenverbindungsprotokollen durchgeführt werden können, wie z. B. OpenCAPi™, Gen-Z™, UPI, Universeller Serieller Bus (USB), Cache-kohärente Zwischenverbindung für Beschleuniger (CCIX™), Infinity™ von Advanced Micro Device™, (AMD™), gemeinsame Kommunikationsschnittstelle (CCI) oder Centriq™-Zwischenverbindung von Qualcomm™ unter anderen.
-
Es ist zu beachten, dass die Einrichtungen, Verfahren und Systeme, die vorstehend beschrieben sind, in irgendeiner elektronischen Vorrichtung oder irgendeinem elektronischen System implementiert werden können, wie vorstehend erwähnt. Als spezielle Darstellungen schaffen die nachstehenden Figuren beispielhafte Systeme für die Verwendung der Erfindung, wie hier beschrieben. Da die nachstehenden Systeme genauer beschrieben werden, wird eine Anzahl von verschiedenen Zwischenverbindungen offenbart, beschrieben und aus der obigen Erörterung erneut darauf zurückgekommen. Und wie leicht ersichtlich ist, können die vorstehend beschriebenen Fortschritte auf beliebige dieser Zwischenverbindungen, Gebilde oder Architekturen angewendet werden. Die erste und die zweite Rechenvorrichtung können beispielsweise implementiert werden, die mit einer Funktionalität ausgestattet sind, um Authentifizierungs-, Verbindungsstreckenschutz- und Datenzugriffssteuerarchitekturen zu implementieren, wie in den obigen Beispielen erörtert, in irgendeiner von einer Vielfalt von Rechenarchitekturen (z. B. unter Verwendung von irgendeiner einer Vielfalt von verschiedenen Zwischenverbindungen oder Gebilden). Die Vorrichtungen können beispielsweise innerhalb eines persönlichen Rechensystems kommunizieren (z. B. in einem Laptop, Desktop, Mobilgerät, Smartphone, Vorrichtung des Internets der Dinge (IoT), intelligenten Gerät, Spielkonsole, Medienkonsole usw.). In einem anderen Beispiel können die Vorrichtungen innerhalb eines Serverrechensystems (z. B. einem Rack-Server, Blade-Server, Tower-Server, Rack-Maßstabs-Serverarchitektur oder anderen zerteilten Serverarchitektur) unter anderen Beispielen kommunizieren.
-
Mit Bezug auf 10 ist eine Ausführungsform eines Blockdiagramms für ein Rechensystem mit einem Mehrkernprozessor dargestellt. Der Prozessor 1000 umfasst irgendeinen Prozessor oder irgendeine Verarbeitungsvorrichtung, wie z. B. einen Mikroprozessor, einen eingebetteten Prozessor, einen Digitalsignalprozessor (DSP), einen Netzprozessor, einen in der Hand gehaltenen Prozessor, einen Anwendungsprozessor, einen Coprozessor, ein System auf einem Chip (SOC) oder eine andere Vorrichtung, um einen Code auszuführen. Der Prozessor 1000 umfasst in einer Ausführungsform mindestens zwei Kerne - Kern 1001 und 1002, die asymmetrische Kerne oder symmetrische Kerne (die dargestellte Ausführungsform) umfassen können. Der Prozessor 1000 kann jedoch irgendeine Anzahl von Verarbeitungselementen umfassen, die symmetrisch oder asymmetrisch sein können.
-
In einer Ausführungsform bezieht sich ein Verarbeitungselement auf eine Hardware oder Logik, um einen Software-Thread zu unterstützen. Beispiele von Hardware-Verarbeitungselementen umfassen: eine Thread-Einheit, einen Thread-Schlitz, einen Thread, eine Prozesseinheit, einen Kontext, eine Kontexteinheit, einen logischen Prozessor, einen Hardware-Thread, einen Kern und/oder irgendein anderes Element, das in der Lage ist, einen Zustand für einen Prozessor zu halten, wie z. B. einen Ausführungszustand oder Architekturzustand. Mit anderen Worten, ein Verarbeitungselement bezieht sich in einer Ausführungsform auf irgendeine Hardware, die in der Lage ist, unabhängig einem Code zugeordnet zu werden, wie z. B. ein Software-Thread, ein Betriebssystem, eine Anwendung oder ein anderer Code. Ein physikalischer Prozessor (oder Prozessorsockel) bezieht sich typischerweise auf eine integrierte Schaltung, die potentiell irgendeine Anzahl von anderen Verarbeitungselementen wie z. B. Kernen oder Hardware-Threads umfasst.
-
Ein Kern bezieht sich häufig auf eine Logik, die an einer integrierten Schaltung angeordnet ist, die einen unabhängigen Architekturzustand aufrechterhalten kann, wobei jeder unabhängig aufrechterhaltene Architekturzustand mindestens einigen zweckgebundenen Ausführungsressourcen zugeordnet ist. Im Gegensatz zu Kernen bezieht sich ein Hardware-Thread typischerweise auf irgendeine Logik, die an einer integrierten Schaltung angeordnet ist, die einen unabhängigen Architekturzustand aufrechterhalten kann, wobei die unabhängig aufrechterhaltenen Architekturzustände sich den Zugriff auf Ausführungsressourcen teilen. Wie zu sehen ist, wenn bestimmte Ressourcen geteilt werden und andere für einen Architekturzustand zweckgebunden sind, überlappt die Linie zwischen der Nomenklatur eines Hardware-Thread und des Kerns. Dennoch werden häufig ein Kern und ein Hardware-Thread durch ein Betriebssystem als individuelle Logikprozessoren betrachtet, wobei das Betriebssystem individuell Operationen an jedem logischen Prozessor planen kann.
-
Der physikalische Prozessor 1000, wie in 10 dargestellt, umfasst zwei Kerne - Kern 1001 und 1002. Hier werden der Kern 1001 und 1002 als symmetrische Kerne betrachtet, z. B. Kerne mit denselben Konfigurationen, Funktionseinheiten und/oder derselben Logik. In einer anderen Ausführungsform umfasst der Kern 1001 einen Prozessorkern außer der Reihe, während der Kern 1002 einen Prozessorkern in der Reihe umfasst. Die Kerne 1001 und 1002 können jedoch individuell aus irgendeinem Typ von Kern ausgewählt werden, wie z. B. einem nativen Kern, einem durch Software gemanagten Kern, einem Kern, der dazu ausgelegt ist, eine native Befehlssatzarchitektur (ISA) durchzuführen, einen Kern, der dazu ausgelegt ist, eine übersetzte Befehlssatzarchitektur (ISA) durchzuführen, einen gemeinsam entworfenen Kern oder einen anderen bekannten Kern. In einer heterogenen Kernumgebung (z. B. asymmetrische Kerne) kann eine gewisse Form von Übersetzung wie z. B. eine binäre Übersetzung verwendet werden, um den Code an einem oder beiden Kernen zu planen oder auszuführen. Um die Erörterung noch zu fördern, werden die im Kern 1001 dargestellten Funktionseinheiten nachstehend genauer beschrieben, da die Einheiten im Kern 1002 in der dargestellten Ausführungsform in einer ähnlichen Weise arbeiten.
-
Wie dargestellt, umfasst der Kern 1001 zwei Hardware-Threads 1001a und 1001b, die auch als Hardware-Thread-Schlitze 1001a und 1001b bezeichnet werden können. Daher betrachten Softwareentitäten wie z. B. ein Betriebssystem in einer Ausführungsform den Prozessor 1000 potentiell als vier separate Prozessoren, z. B. vier logische Prozessoren oder Verarbeitungselemente, die in der Lage sind, vier Software-Threads gleichzeitig auszuführen. Wie vorstehend angespielt, ist ein erster Thread Architekturzustandsregistern 1001a zugeordnet, ein zweiter Thread ist Architekturzustandsregistern 1001b zugeordnet, ein dritter Thread kann Architekturzustandsregistern 1002a zugeordnet sein und ein vierter Thread kann Architekturzustandsregistern 1002b zugeordnet sein. Hier kann jedes der Architekturzustandsregister (1001a, 1001b, 1002a und 1002b) als Verarbeitungselemente, Thread-Schlitze oder Thread-Einheiten bezeichnet werden, wie vorstehend beschrieben. Wie dargestellt, sind die Architekturzustandsregister 1001a in Architekturzustandsregistern 1001b repliziert, so dass individuelle Architekturzustände/Kontexte für den logischen Prozessor 1001a und den logischen Prozessor 1001b gespeichert werden können. Im Kern 1001 können andere kleinere Ressourcen wie z. B. Befehlszeiger und Umbenennungslogik und Zuweiser- und Umbenennerblock 1030 auch für die Threads 1001a und 1001b repliziert sein. Einige Ressourcen, wie z. B. Umordnungspuffer in einer Umordnungs-/Rückzugseinheit 1035, ILTB 1020, Lade/Speicher-Puffer und Warteschlangen, können durch Partitionierung geteilt werden. Andere Ressourcen wie z. B. interne Universalregister, (ein) Seitentabellenbasisregister, Daten-Cache und Daten-TLB 1015 niedriger Ebene, (eine) Ausführungseinheit(en) 1040 und Abschnitte einer Einheit 1035 außer der Reihe, werden potentiell vollständig geteilt.
-
Der Prozessor 1000 umfasst häufig andere Ressourcen, die vollständig geteilt, durch Partitionierung geteilt oder durch/für Verarbeitungselemente zweckgebunden sein können. In 10 ist eine Ausführungsform eines rein beispielhaften Prozessors mit erläuternden logischen Einheiten/Ressourcen eines Prozessors dargestellt. Es ist zu beachten, dass ein Prozessor beliebige dieser Funktionseinheiten umfassen oder weglassen kann sowie beliebige andere bekannte Funktionseinheiten, Logik, Firmware, die nicht dargestellt sind, umfassen kann. Wie dargestellt, umfasst der Kern 1001 einen vereinfachten repräsentativen Prozessorkern außer der Reihe (000). Aber ein Prozessor in der Reihe kann in anderen Ausführungsformen verwendet werden. Der 000-Kern umfasst einen Verzweigungszielpuffer 1020, um auszuführende/zu nehmende Verzweigungen vorherzusagen, und einen Befehlsübersetzungspuffer (I-TLB) 1020, um Adressenübersetzungseinträge für Befehle zu speichern.
-
Der Kern 1001 umfasst ferner ein Decodiermodul 1025, das mit einer Abrufeinheit 1020 gekoppelt ist, um abgerufene Elemente zu decodieren. Die Abruflogik umfasst in einer Ausführungsform individuelle Ablaufsteuerungen, die jeweils den Thread-Schlitzen 1001a, 1001b zugeordnet sind. Gewöhnlich ist der Kern 1001 einer ersten ISA zugeordnet, die Befehle definiert/festlegt, die am Prozessor 1000 ausführbar sind. Häufig umfassen Maschinencodebefehle, die ein Teil der ersten ISA sind, einen Teil des Befehls (als Operationscode bezeichnet), der einen durchzuführenden Befehl oder eine durchzuführende Operation bezeichnet/festlegt. Die Decodierlogik 1025 umfasst eine Schaltungsanordnung, die diese Befehle von ihren Operationscodes erkennt und die decodierten Befehle in der Pipeline für die Verarbeitung weiterleitet, wie durch die erste ISA definiert. Wie nachstehend genauer erörtert, umfassen beispielsweise die Decodierer 1025 in einer Ausführungsform eine Logik, die dazu ausgelegt oder angepasst ist, spezielle Befehle wie z. B. einen Transaktionsbefehl zu erkennen. Als Ergebnis der Erkennung durch die Decodierer 1025 unternimmt die Architektur oder der Kern 1001 spezielle, vordefinierte Handlungen, um Aufgaben durchzuführen, die dem geeigneten Befehl zugeordnet sind. Es ist wichtig zu beachten, dass beliebige der Aufgaben, Blöcke, Operationen und Verfahren, die hier beschrieben sind, in Reaktion auf einen einzelnen oder mehrere Befehle durchgeführt werden können; von denen einige neue oder alte Befehle sein können. Es ist zu beachten, dass die Decodierer 1026 in einer Ausführungsform dieselbe ISA (oder eine Teilmenge davon) erkennen. Alternativ erkennen in einer heterogenen Kernumgebung die Decodierer 1026 eine zweite ISA (entweder eine Teilmenge der ersten ISA oder einer unterschiedlichen ISA) .
-
In einem Beispiel umfasst der Zuweiser- und Umbenennerblock 1030 einen Zuweiser, um Ressourcen zu reservieren, wie z. B. Registerdateien, um Befehlsverarbeitungsergebnisse zu speichern. Die Threads 1001a und 1001b sind jedoch potentiell in der Lage zu einer Ausführung außer der Reihe, wobei der Zuweiser- und Umbenennerblock 1030 auch andere Ressourcen reserviert wie z. B. Umordnungspuffer, um Befehlsergebnisse zu verfolgen. Die Einheit 1030 kann auch einen Registerumbenenner umfassen, um Programm/Befehls-Referenzregister in andere Register innerhalb des Prozessors 1000 umzubenennen. Die Umordner-/Rückzugseinheit 1035 umfasst Komponenten wie z. B. die vorstehend erwähnten Umordnungspuffer, Ladepuffer und Speicherpuffer, um die Ausführung außer der Reihe und später den Rückzug in der Reihe von Befehlen, die außer der Reihe ausgeführt werden, zu unterstützen.
-
Der Planer- und Ausführungseinheitsblock 1040 umfasst in einer Ausführungsform eine Planereinheit, um Befehle/eine Operation an den Ausführungseinheiten zu planen. Ein Gleitkommabefehl wird beispielsweise an einem Port einer Ausführungseinheit geplant, die eine Gleitkommaausführungseinheit verfügbar hat. Registerdateien, die den Ausführungseinheiten zugeordnet sind, sind auch enthalten, um Informationsbefehlsverarbeitungsergebnisse zu speichern. Beispielhafte Ausführungseinheiten umfassen eine Gleitkommaausführungseinheit, eine Ganzzahlenausführungseinheit, eine Sprungausführungseinheit, eine Ladeausführungseinheit, eine Speicherausführungseinheit und andere bekannte Ausführungseinheiten.
-
Der Daten-Cache niedrigerer Ebene und der Datenübersetzungspuffer (D-TLB) 1050 sind mit der (den) Ausführungseinheit(en) 1040 gekoppelt. Der Daten-Cache soll kürzlich verwendete/verarbeitete Elemente wie z. B. Datenoperanden speichern, die potentiell in Arbeitsspeicherkohärenzzuständen gehalten werden. Der D-TLB soll kürzliche Übersetzungen von virtuellen/linearen auf physikalische Adressen speichern. Als spezielles Beispiel kann ein Prozessor eine Seitentabellenstruktur umfassen, um den physikalischen Arbeitsspeicher in mehrere virtuelle Seiten aufzutrennen.
-
Hier teilen sich die Kerne 1001 und 1002 den Zugriff auf einen Cache höherer Ebene oder einen weiter außenliegenden Cache wie z. B. einen Cache zweiter Ebene, der der Schnittstelle 1010 auf dem Chip zugeordnet ist. Es ist zu beachten, dass sich höhere Ebene oder weiter außenliegend auf Cache-Ebenen bezieht, die zunehmen oder von der (den) Ausführungseinheit(en) weiter weg gelangen. In einer Ausführungsform ist der Cache höherer Ebene ein Daten-Cache letzter Ebene - der letzte Cache in der Arbeitsspeicherhierarchie am Prozessor 1000 - wie z. B. ein Daten-Cache zweiter oder dritter Ebene. Der Cache höherer Ebene ist jedoch nicht so begrenzt, da er einem Befehls-Cache zugeordnet sein oder diesen umfassen kann. Ein Spuren-Cache - ein Typ von Befehls-Cache - kann stattdessen nach dem Decodierer 1025 gekoppelt sein, um kürzlich decodierte Spuren zu speichern. Hier bezieht sich ein Befehl potentiell auf einen Makrobefehl (z. B. einen allgemeinen Befehl, der durch die Decodierer erkannt wird), der in eine Anzahl von Mikrobefehlen (Mikrooperationen) decodieren kann.
-
In der dargestellten Konfiguration umfasst der Prozessor 1000 auch ein Schnittstellenmodul 1010 auf dem Chip. Historisch war eine Arbeitsspeichersteuereinheit, die nachstehend genauer beschrieben wird, in einem Rechensystem außerhalb des Prozessors 1000 enthalten. In diesem Szenario soll die Schnittstelle 1010 auf dem Chip mit Vorrichtungen außerhalb des Prozessors 1000 kommunizieren, wie z. B. einem Systemarbeitsspeicher 1075, einem Chipsatz (häufig mit einem Arbeitsspeichersteuereinheitsnetzknoten, um mit dem Arbeitsspeicher 1075 zu verbinden, und einem E/A-Steuereinheitsnetzknoten, um mit Peripherievorrichtungen zu verbinden), einem Arbeitsspeichersteuereinheitsnetzknoten, einer Northbridge oder einer anderen integrierten Schaltung. Und in diesem Szenario kann der Bus 1005 irgendeine bekannte Zwischenverbindung wie z. B. einen Multi-Drop-Bus, eine Punkt-Punkt-Zwischenverbindung, eine serielle Zwischenverbindung, einen parallelen Bus, einen kohärenten (z. B. Cache-kohärenten) Bus, eine geschichtete Protokollarchitektur, einen differentiellen Bus und einen GTL-Bus umfassen.
-
Der Arbeitsspeicher 1075 kann für den Prozessor 1000 zweckgebunden sein oder mit anderen Vorrichtungen in einem System geteilt werden. Übliche Beispiele von Typen von Arbeitsspeicher 1075 umfassen DRAM, SRAM, einen nichtflüchtigen Arbeitsspeicher (NV-Arbeitsspeicher) und andere bekannte Speichervorrichtungen. Es ist zu beachten, dass die Vorrichtung 1080 einen Graphikbeschleuniger, einen Prozessor oder eine Karte, die mit einem Arbeitsspeichersteuereinheitsnetzknoten gekoppelt ist, einen Datenspeicher, der mit einem E/A-Steuereinheitsnetzknoten gekoppelt ist, einen drahtlosen Sender/Empfänger, eine Flash-Vorrichtung, eine Audiosteuereinheit, eine Netzsteuereinheit oder eine andere bekannte Vorrichtung umfassen kann.
-
Da jedoch in letzter Zeit mehr Logik und Vorrichtungen auf einem einzelnen Chip integriert werden, wie z. B. einem SOC, kann jede dieser Vorrichtungen im Prozessor 1000 integriert sein. In einer Ausführungsform befindet sich beispielsweise ein Arbeitsspeichersteuereinheitsnetzknoten im gleichen Baustein und/oder Chip mit dem Prozessor 1000. Hier umfasst ein Abschnitt des Kerns (oder ein Abschnitt auf dem Kern) 1010 eine oder mehrere Steuereinheiten zum Koppeln mit anderen Vorrichtungen wie z. B. dem Arbeitsspeicher 1075 oder einer Graphikvorrichtung 1080 über eine Schnittstelle. Die Konfiguration mit einer Zwischenverbindung und Steuereinheiten zum Koppeln mit solchen Vorrichtungen über eine Schnittstelle wird häufig als auf dem Kern (oder Un-Core-Konfiguration) bezeichnet. Als Beispiel umfasst die Schnittstelle 1010 auf dem Chip eine Ringzwischenverbindung für die Kommunikation auf dem Chip und eine serielle Punkt-Punkt-Hochgeschwindigkeitsverbindungsstrecke 1005 für die Kommunikation außerhalb des Chips. Dennoch können in der SOC-Umgebung noch mehr Vorrichtungen, wie z. B. die Netzschnittstelle, die Coprozessoren, der Arbeitsspeicher 1075, der Graphikprozessor 1080 und beliebige andere bekannte Computervorrichtungen/die Schnittstelle auf einem einzelnen Chip oder einer einzelnen integrierten Schaltung integriert sein, um einen kleinen Formfaktor mit hoher Funktionalität und niedrigem Leistungsverbrauch bereitzustellen.
-
In einer Ausführungsform ist der Prozessor 1000 zum Ausführen eines Kompilierer-, Optimierungs- und/oder Übersetzercodes 1077 in der Lage, um den Anwendungscode 1076 zu kompilieren, übersetzen und/oder optimieren, um das Gerät und die Verfahren zu unterstützen, die hier beschrieben sind, oder um damit über eine Schnittstelle zu koppeln. Ein Kompilierer umfasst häufig ein Programm oder einen Satz von Programmen, um einen Quellen-Text/Code in einen Ziel-Text/Code zu übersetzen. Gewöhnlich wird die Kompilierung des Programm/Anwendungs-Codes mit einem Kompilierer in mehreren Phasen und Durchgängen durchgeführt, um einen Programmiersprachcode hoher Ebene in einen Maschinen- oder Assemblersprachcode niedriger Ebene zu transformieren. Dennoch können Kompilierer mit einzelnem Durchgang immer noch für die einfache Kompilierung verwendet werden. Ein Kompilierer kann beliebige bekannte Kompilierungstechniken verwenden und beliebige bekannte Kompiliereroperationen durchführen, wie z. B. lexikalische Analyse, Vorverarbeitung, Syntaxanalyse, semantische Analyse, Codeerzeugung, Codetransformation und Codeoptimierung.
-
Größere Kompilierer umfassen häufig mehrere Phasen, aber diese Phasen sind am häufigsten in zwei allgemeinen Phasen enthalten: (1) einem Frontend, z. B. wo im Allgemeinen die syntaktische Verarbeitung, semantische Verarbeitung und eine gewisse Transformation/Optimierung stattfinden können, und (2) einem Backend, z. B. wo im Allgemeinen die Analyse, Transformationen, Optimierungen und Codeerzeugung stattfinden. Einige Kompilierer beziehen sich auf eine Mitte, die die Unschärfe der Abgrenzung zwischen einem Frontend und Backend eines Kompilierers darstellt. Folglich kann eine Bezugnahme auf Einfügung, Zuordnung, Erzeugung oder eine andere Operation eines Kompilierers in irgendeiner der vorstehend erwähnten Phasen oder Durchgänge sowie in beliebigen anderen bekannten Phasen oder Durchgängen eines Kompilierers stattfinden. Als erläuterndes Beispiel fügt ein Kompilierer potentiell Operationen, Aufrufe, Funktionen usw. in einer oder mehreren Phasen der Kompilierung ein, wie z. B. Einfügung von Aufrufen/Operationen in einer Frontend-Phase der Kompilierung und dann Transformation der Aufrufe/Operationen in einen Code niedrigerer Ebene während einer Transformationsphase. Es ist zu beachten, dass während der dynamischen Kompilierung der Kompilierercode oder dynamische Optimierungscode solche Operationen/Aufrufe einfügen sowie den Code für die Ausführung während der Laufzeit optimieren kann. Als spezielles erläuterndes Beispiel kann ein binärer Code (bereits kompilierter Code) dynamisch während der Laufzeit optimiert werden. Hier kann der Programmcode den dynamischen Optimierungscode, den binären Code oder eine Kombination davon umfassen.
-
Ähnlich zu einem Kompilierer übersetzt ein Übersetzer wie z. B. ein binärer Übersetzer den Code entweder statisch oder dynamisch, um den Code zu optimieren und/oder zu übersetzen. Daher kann sich die Bezugnahme auf die Ausführung eines Codes, eines Anwendungscodes, eines Programmcodes oder einer anderen Software-Umgebung beziehen auf: (1) entweder dynamische oder statische Ausführung eines Kompiliererprogramms (von Kompiliererprogrammen), eines Optimierungscodeoptimierers oder Übersetzers, um einen Programmcode zu kompilieren, Software-Strukturen aufrechtzuerhalten, andere Operationen durchzuführen, einen Code zu optimieren oder einen Code zu übersetzen; (2) die Ausführung eines Hauptprogrammcodes mit Operationen/Aufrufen, wie z. B. eines Anwendungscodes, der optimiert/kompiliert wurde; (3) die Ausführung eines anderen Programmcodes, wie z. B. Bibliotheken, der dem Hauptprogrammcode zugeordnet ist, um Software-Strukturen aufrechtzuerhalten, andere auf Software bezogene Operationen durchzuführen oder einen Code zu optimieren; oder (4) eine Kombination davon.
-
Mit Bezug auf 11 ist ein Blockdiagramm eines anderen Systems 1100 gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Wie in 11 gezeigt, ist ein Mehrprozessorsystem 1100 ein Punkt-Punkt-Zwischenverbindungssystem und umfasst einen ersten Prozessor 1170 und einen zweiten Prozessor 1180, die über eine Punkt-Punkt-Zwischenverbindung 1150 gekoppelt sind. Jeder der Prozessoren 1170 und 1180 kann eine gewisse Version eines Prozessors sein. In einer Ausführungsform sind 1152 und 1154 ein Teil eines seriellen kohärenten Punkt-Punkt-Zwischenverbindungsgebildes, wie z. B. einer Hochleistungsarchitektur. Folglich kann die Erfindung innerhalb der QPI-Architektur implementiert werden.
-
Obwohl nur mit zwei Prozessoren 1170, 1180 gezeigt, ist der Schutzbereich der vorliegenden Erfindung selbstverständlich nicht so begrenzt. In anderen Ausführungsformen können ein oder mehrere zusätzliche Prozessoren in einem gegebenen Prozessor vorhanden sein.
-
Die Prozessoren 1170 und 1180 sind mit integrierten Arbeitsspeichersteuereinheiten 1172 bzw. 1182 gezeigt. Der Prozessor 1170 umfasst auch als Teil seiner Bussteuereinheiten Punkt-Punkt-Schnittstellen (P-P-Schnittstellen) 1176 und 1178; ebenso umfasst der zweite Prozessor 1180 P-P-Schnittstellen 1186 und 1188. Die Prozessoren 1170, 1180 können Informationen über eine Punkt-Punkt-Schnittstelle (P-P-Schnittstelle) 1150 unter Verwendung von P-P-Schnittstellenschaltungen 1178, 1188 austauschen. Wie in 11 gezeigt, koppeln IMCs 1172 und 1182 die Prozessoren mit jeweiligen Arbeitsspeichern, nämlich einem Arbeitsspeicher 1132 und einem Arbeitsspeicher 1134, die Abschnitte eines Hauptarbeitsspeichers sein können, der lokal an den jeweiligen Prozessoren befestigt ist.
-
Die Prozessoren 1170, 1180 tauschen jeweils Informationen mit einem Chipsatz 1190 über individuelle P-P-Schnittstellen 1152, 1154 unter Verwendung von Punkt-Punkt-Schnittstellenschaltungen 1176, 1194, 1186, 1198 aus. Der Chipsatz 1190 tauscht auch Informationen mit einer Hochleistungsgraphikschaltung 1138 über eine Schnittstellenschaltung 1192 entlang einer Hochleistungsgraphikzwischenverbindung 1139 aus.
-
Ein geteilter Cache (nicht gezeigt) kann entweder im Prozessor oder außerhalb beider Prozessoren enthalten sein; dennoch mit den Prozessoren über eine P-P-Zwischenverbindung verbunden sein, so dass lokale Cache-Informationen eines oder beider Prozessoren im geteilten Cache gespeichert werden können, wenn ein Prozessor in einen leistungsarmen Modus gesetzt ist.
-
Der Chipsatz 1190 kann mit einem ersten Bus 1116 über eine Schnittstelle 1196 gekoppelt sein. In einer Ausführungsform kann der erste Bus 1116 ein „Peripheral Component Interconnect“-Bus (PCI-Bus) oder ein Bus wie z. B. ein PCI-Expressbus oder ein anderer E/A-Zwischenverbindungsbus der dritten Generation sein, obwohl der Schutzbereich der vorliegenden Erfindung nicht so begrenzt ist.
-
Wie in 11 gezeigt, sind verschiedene E/A-Vorrichtungen 1114 mit dem ersten Bus 1116 zusammen mit einer Busbrücke 1118, die den ersten Bus 1116 mit einem zweiten Bus 1120 koppelt, gekoppelt. In einer Ausführungsform umfasst der zweite Bus 1120 einen Bus mit niedriger Stiftzahl (LPC). Verschiedene Vorrichtungen sind mit dem zweiten Bus 1120 gekoppelt, einschließlich beispielsweise in einer Ausführungsform einer Tastatur und/oder einer Maus 1122, Kommunikationsvorrichtungen 1127 und einer Speichereinheit 1128 wie z. B. eines Plattenlaufwerks oder einer anderen Massenspeichervorrichtung, die häufig Befehle/Code und Daten 1130 umfasst. Ferner ist ein Audio-E/A 1124 mit dem zweiten Bus 1120 gekoppelt gezeigt. Es ist zu beachten, dass andere Architekturen möglich sind, wobei die enthaltenen Komponenten und Zwischenverbindungsarchitekturen variieren. Anstelle der Punkt-Punkt-Architektur von 11 kann ein System beispielsweise einen Multi-Drop-Bus oder eine andere solche Architektur implementieren.
-
Obwohl die vorliegende Erfindung in Bezug auf eine begrenzte Anzahl von Ausführungsformen beschrieben wurde, erkennt der Fachmann auf dem Gebiet zahlreiche Modifikationen und Variationen davon. Es ist beabsichtigt, dass die beigefügten Ansprüche alle solchen Modifikationen und Variationen abdecken, die in den wahren Gedanken und Schutzbereich dieser vorliegenden Erfindung fallen.
-
Ein Entwurf kann verschiedene Stufen durchlaufen, von der Erzeugung bis zur Simulation bis zur Herstellung. Daten, die einen Entwurf darstellen, können den Entwurf in einer Anzahl von Weisen darstellen. Wie es bei Simulationen nützlich ist, kann die Hardware zuerst unter Verwendung einer Hardware-Beschreibungssprache oder einer anderen Funktionsbeschreibungssprache dargestellt werden. Außerdem kann ein Schaltungsebenenmodell mit Logik- und/oder Transistor-Gates in einigen Stufen des Entwurfsprozesses erzeugt werden. Ferner erreichen die meisten Entwürfe in einer gewissen Stufe ein Niveau von Daten, die die physikalische Anordnung von verschiedenen Vorrichtungen im Hardware-Modell darstellen. In dem Fall, in dem herkömmliche Halbleiterfertigungstechniken verwendet werden, können die Daten, die das Hardware-Modell darstellen, die Daten sein, die die Anwesenheit oder Abwesenheit von verschiedenen Merkmalen auf verschiedenen Maskenschichten für Masken festlegen, die verwendet werden, um die integrierte Schaltung zu erzeugen. In irgendeiner Darstellung des Entwurfs können die Daten in irgendeiner Form eines maschinenlesbaren Mediums gespeichert werden. Ein Arbeitsspeicher oder ein magnetischer oder optischer Speicher wie z. B. eine Platte kann das maschinenlesbare Medium sein, um Informationen zu speichern, die über eine optische oder elektrische Welle übertragen werden, die moduliert oder anderweitig erzeugt wird, um solche Informationen zu übertragen. Wenn eine elektrische Trägerwelle, die den Code oder Entwurf angibt oder trägt, übertragen wird, wird in dem Umfang, in dem Kopieren, Puffern oder Neuübertragung des elektrischen Signals durchgeführt wird, eine neue Kopie hergestellt. Folglich kann ein Kommunikationsanbieter oder ein Netzanbieter auf einem konkreten, maschinenlesbaren Medium zumindest vorübergehend einen Gegenstand wie z. B. Informationen speichern, die in einer Trägerwelle codiert sind, die Techniken von Ausführungsformen der vorliegenden Erfindung verkörpert.
-
Ein Modul oder eine Maschine, wie hier verwendet, bezieht sich auf irgendeine Kombination von Hardware, Software und/oder Firmware. Als Beispiel umfasst ein Modul oder eine Maschine Hardware wie z. B. einen Mikrocontroller, der einem nichttransitorischen Medium zugeordnet ist, um einen Code zu speichern, der dazu ausgelegt ist, durch den Mikrocontroller ausgeführt zu werden. Daher bezieht sich die Bezugnahme auf ein Modul oder eine Maschine in einer Ausführungsform auf die Hardware, die speziell konfiguriert ist, um den Code zu erkennen und/oder auszuführen, der auf einem nichttransitorischen Medium gehalten werden soll. In einer anderen Ausführungsform bezieht sich ferner die Verwendung eines Moduls oder einer Maschine auf das nichttransitorische Medium mit dem Code, der speziell dazu ausgelegt ist, durch den Mikrocontroller ausgeführt zu werden, um vorbestimmte Operationen durchzuführen. Und wie gefolgert werden kann, kann in noch einer anderen Ausführungsform sich der Begriff Modul oder Maschine (in diesem Beispiel) auf die Kombination des Mikrocontrollers und des nichttransitorischen Mediums beziehen. Modul- oder Maschinengrenzen, die als separat dargestellt sind, variieren häufig üblicherweise und überlappen potentiell. Ein erstes und ein zweites Modul oder eine erste und eine zweite Maschine können sich beispielsweise Hardware, Software, Firmware oder eine Kombination davon teilen, während potentiell eine gewisse unabhängige Hardware, Software oder Firmware beibehalten wird. In einer Ausführungsform umfasst die Verwendung des Begriffs Logik Hardware wie z. B. Transistoren, Register oder andere Hardware, wie z. B. programmierbare Logikvorrichtungen.
-
Die Verwendung des Ausdrucks „dazu konfiguriert“ bezieht sich in einer Ausführungsform auf die Anordnung, Zusammensetzung, Herstellung, das Angebot zum Verkauf, den Import und/oder den Entwurf einer Einrichtung, einer Hardware, einer Logik oder eines Elements, um eine festgelegte oder bestimmte Aufgabe durchzuführen. In diesem Beispiel ist eine Einrichtung oder ein Element davon, das nicht arbeitet, dennoch „dazu konfiguriert“, eine festgelegte Aufgabe durchzuführen, wenn es dazu ausgelegt, gekoppelt und/oder verbunden ist, um die festgelegte Aufgabe durchzuführen. Als rein erläuterndes Beispiel kann ein Logikgatter eine 0 oder eine 1 während der Operation liefern. Aber ein Logikgatter, das „dazu konfiguriert“ ist, ein Freigabesignal zu einem Takt zu liefern, umfasst nicht jedes potentielle Logikgatter, das eine 1 oder 0 liefern kann. Stattdessen ist das Logikgatter eines, das in einer gewissen Weise gekoppelt ist, in der während der Operation die 1- oder 0-Ausgabe den Takt freigeben soll. Wiederum ist zu beachten, dass die Verwendung des Begriffs „dazu konfiguriert“, keine Operation erfordert, sondern sich stattdessen auf den latenten Zustand einer Einrichtung, einer Hardware und/oder eines Elements bezieht, wobei im latenten Zustand die Einrichtung, die Hardware und/oder das Element dazu ausgelegt ist, eine spezielle Aufgabe durchzuführen, wenn die Einrichtung, die Hardware und/oder das Element arbeiten.
-
Ferner bezieht sich die Verwendung der Ausdrücke „zu“, „in der Lage zu“ und/oder „betriebsfähig zu“ in einer Ausführungsform auf irgendeine Einrichtung, eine Logik, eine Hardware und/oder ein Element, das in einer solchen Weise entworfen ist, dass die Verwendung der Einrichtung, der Logik, der Hardware und/oder des Elements in einer festgelegten Weise ermöglicht wird. Wie vorstehend ist zu beachten, dass die Verwendung zu, in der Lage zu oder betriebsfähig zu in einer Ausführungsform sich auf den latenten Zustand einer Einrichtung, einer Logik, einer Hardware und/oder eines Elements bezieht, wobei die Einrichtung, die Logik, die Hardware und/oder das Element nicht arbeiten, aber in einer solchen Weise entworfen sind, dass die Verwendung einer Einrichtung in einer festgelegten Weise ermöglicht wird.
-
Ein Wert, wie hier verwendet, umfasst irgendeine bekannte Darstellung einer Zahl, eines Zustandes, eines logischen Zustandes oder eines binären logischen Zustandes. Häufig wird die Verwendung von Logikpegeln, Logikwerten oder logischen Werten auch als 1-en und 0-en bezeichnet, die einfach binäre Logikzustände darstellen. Eine 1 bezieht sich beispielsweise auf einen hohen Logikpegel und 0 bezieht sich auf einen niedrigen Logikpegel. In einer Ausführungsform kann eine Speicherzelle wie z. B. ein Transistor oder eine Flash-Zelle in der Lage sein, einen einzelnen logischen Wert oder mehrere logische Werte zu halten. Andere Darstellungen von Werten in Computersystemen wurden jedoch verwendet. Die Dezimalzahl zehn kann beispielsweise auch als binärer Wert von 1010 und Hexadezimalbuchstabe A dargestellt werden. Daher umfasst ein Wert irgendeine Darstellung von Informationen, die in einem Computersystem gehalten werden können.
-
Überdies können Zustände durch Werte oder Teile von Werten dargestellt werden. Als Beispiel kann ein erster Wert wie z. B. eine logische Eins einen Vorgabe- oder Anfangszustand darstellen, während ein zweiter Wert wie z. B. eine logische Null einen Nicht-Vorgabe-Zustand darstellen kann. Außerdem beziehen sich die Begriffe Rücksetzen und Setzen in einer Ausführungsform auf einen Vorgabe- bzw. einen aktualisierten Wert oder Zustand. Ein Vorgabewert umfasst beispielsweise potentiell einen hohen logischen Wert, z. B. Rücksetzen, während ein aktualisierter Wert potentiell einen niedrigen logischen Wert, z. B. Setzen, umfasst. Es ist zu beachten, dass irgendeine Kombination von Werten verwendet werden kann, um irgendeine Anzahl von Zuständen darzustellen.
-
Die Ausführungsformen von Verfahren, Hardware, Software, Firmware oder Code, die vorstehend dargelegt sind, können über Befehle oder einen Code implementiert werden, der auf einem für eine Maschine zugänglichen, maschinenlesbaren, für einen Computer zugänglichen oder computerlesbaren Medium gespeichert ist, die durch ein Verarbeitungselement ausführbar sind. Ein nichttransitorisches für eine Maschine zugängliches/maschinenlesbares Medium umfasst irgendeinen Mechanismus, der Informationen in einer Form bereitstellt (z. B. speichert und/oder überträgt), die für eine Maschine wie z. B. einen Computer oder ein elektronisches System lesbar ist. Ein nichttransitorisches für eine Maschine zugängliches Medium umfasst beispielsweise einen Direktzugriffsarbeitsspeicher (RAM), wie z. B. einen statischen RAM (SRAM) oder dynamischen RAM (DRAM); ROM; ein magnetisches oder optisches Speichermedium; Flash-Arbeitsspeichervorrichtungen; elektrische Speichervorrichtungen; optische Speichervorrichtungen; akustische Speichervorrichtungen; eine andere Form von Speichervorrichtungen zum Halten von Informationen, die von transitorischen (ausgebreiteten) Signalen (z. B. Trägerwellen, Infrarotsignalen, digitalen Signalen) empfangen werden; usw., die von nichttransitorischen Medien unterschieden werden sollen, die Informationen davon empfangen können.
-
Befehle, die verwendet werden, um eine Logik zu programmieren, um Ausführungsformen der Erfindung durchzuführen, können innerhalb eines Arbeitsspeichers im System, wie z. B. eines DRAM, Cache, Flash-Arbeitsspeichers oder eines anderen Speichers, gespeichert werden. Ferner können die Befehle über ein Netz oder durch andere computerlesbare Medien verteilt werden. Folglich kann ein maschinenlesbares Medium irgendeinen Mechanismus zum Speichern oder Übertragen von Informationen in einer Form umfassen, die durch eine Maschine (z. B. einen Computer) lesbar ist, ist jedoch nicht auf Disketten, optische Platten, einen Kompaktdiskfestwertarbeitsspeicher (CD-ROMs) und magnetooptische Platten, einen Festwertarbeitsspeicher (ROMs), Direktzugriffsarbeitsspeicher (RAM), löschbaren programmierbaren Festwertarbeitsspeicher (EPROM), elektrisch löschbaren programmierbaren Festwertarbeitsspeicher (EEPROM), magnetische oder optische Karten, einen Flash-Arbeitsspeicher oder einen konkreten, maschinenlesbaren Speicher, der bei der Übertragung von Informationen über das Internet über elektrische, optische, akustische oder andere Formen von ausgebreiteten Signalen (z. B. Trägerwellen, Infrarotsignale, digitale Signale usw.) verwendet wird, begrenzt. Folglich umfasst das computerlesbare Medium irgendeinem Typ von konkretem maschinenlesbarem Medium, das zum Speichern oder Übertragen von elektronischen Befehlen oder Informationen in einer durch eine Maschine (z. B. einen Computer) lesbaren Form geeignet ist.
-
Die folgenden Beispiele betreffen Ausführungsformen gemäß dieser Patentbeschreibung. Beispiel 1 ist eine Einrichtung mit einem Arbeitsspeicher, um erste Daten zu speichern, und einer Zugriffssteuermaschine mit einer Schaltungsanordnung. Die Zugriffssteuermaschine soll eine Anforderung für die ersten Daten von einer Kommunikationsvorrichtung über eine Verbindungsstrecke empfangen, die mit der Kommunikationsvorrichtung aufgebaut ist; und den Zugriff auf die ersten Daten für die Kommunikationsvorrichtung auf der Basis eines Authentifizierungszustandes der Kommunikationsvorrichtung und eines Schutzzustandes der Verbindungsstrecke steuern.
-
Beispiel 2 kann den Gegenstand von Beispiel 1 umfassen, wobei die Zugriffssteuermaschine den Zugriff auf die ersten Daten für die Kommunikationsvorrichtung in Reaktion auf eine Bestimmung sperren soll, dass der Schutzzustand der Verbindungsstrecke angibt, dass eines oder mehrere von Vertraulichkeits-, Wiederholungs- und Integritätsschutzmaßnahmen für die Verbindungsstrecke nicht aktiviert sind.
-
Beispiel 3 kann den Gegenstand von Beispiel 1 umfassen, wobei die Zugriffssteuermaschine den Zugriff auf die ersten Daten für die Kommunikationsvorrichtung in Reaktion auf eine Bestimmung schaffen soll, dass der Schutzzustand der Verbindungsstrecke angibt, dass Vertraulichkeits-, Wiederholungs- und Integritätsschutzmaßnahmen für die Verbindungsstrecke aktiviert sind.
-
Beispiel 4 kann den Gegenstand von irgendeinem der Beispiele 1-3 umfassen, wobei der Authentifizierungszustand angibt, ob unveränderliche Komponenten der Kommunikationsvorrichtung authentifiziert wurden.
-
Beispiel 5 kann den Gegenstand von irgendeinem der Beispiele 1-4 umfassen, wobei der Authentifizierungszustand angibt, ob veränderliche Komponenten der Kommunikationsvorrichtung authentifiziert wurden.
-
Beispiel 6 kann den Gegenstand von irgendeinem der Beispiele 1-5 umfassen, wobei der Authentifizierungszustand angibt, ob Berechtigungsnachweise eines Benutzers, die den ersten Daten zugeordnet sind, authentifiziert wurden.
-
Beispiel 7 kann den Gegenstand von irgendeinem der Beispiele 1-6 umfassen, wobei die Zugriffssteuermaschine den Zugriff auf die ersten Daten für die Kommunikationsvorrichtung auf der Basis des Authentifizierungszustandes und des Schutzzustandes der Verbindungsstrecke in Reaktion auf eine Bestimmung, dass die ersten Daten geschützt werden sollen, steuern soll.
-
Beispiel 8 kann den Gegenstand von irgendeinem der Beispiele 1-7 umfassen, wobei die Zugriffssteuermaschine den Zugriff auf die zweiten Daten über die Verbindungsstrecke für die Kommunikationsvorrichtung ohne Prüfen des Schutzzustandes der Verbindungsstrecke in Reaktion auf eine Bestimmung, dass die Daten nicht geschützt sind, schaffen soll.
-
Beispiel 9 kann den Gegenstand von irgendeinem der Beispiele 1-8 umfassen, wobei bei einer Bestimmung, dass der Schutzzustand der Verbindungsstrecke sich verschlechtert hat, die Zugriffssteuermaschine den Zugriff auf die ersten Daten über die Verbindungsstrecke für die Kommunikationsvorrichtung verweigern soll, bis der Schutzzustand der Verbindungsstrecke wiederhergestellt ist.
-
Beispiel 10 kann den Gegenstand von Beispiel 9 umfassen, wobei die Bestimmung, dass der Schutzzustand der Verbindungsstrecke sich verschlechtert hat, in Reaktion auf eine Benachrichtigung, dass die Verbindungsstrecke in einen leistungsarmen Zustand übergehen soll, durchgeführt wird.
-
Beispiel 11 kann den Gegenstand von Beispiel 9 umfassen, wobei die Bestimmung, dass der Schutzzustand der Verbindungsstrecke sich verschlechtert hat, in Reaktion auf eine Benachrichtigung, dass eine Prüfsumme einer über die Verbindungsstrecke übertragenen Nachricht ungültig ist, durchgeführt wird.
-
Beispiel 12 kann den Gegenstand von Beispiel 9 umfassen, wobei in Reaktion auf die Bestimmung, dass sich der Schutzzustand der Verbindungsstrecke verschlechtert hat, die Zugriffssteuermaschine den Zugriff auf die ersten Daten über die Verbindungsstrecke verweigern soll, bis die Authentifizierung erneut durchgeführt wird.
-
Beispiel 13 kann den Gegenstand von irgendeinem der Beispiele 1-12 umfassen, wobei in Reaktion auf eine Bestimmung, dass der Authentifizierungszustand oder der Schutzzustand der Verbindungsstrecke unzureichend ist, um einen Zugriff auf die ersten Daten zu schaffen, die Zugriffssteuermaschine bewirken soll, dass in ein Register, das für die Kommunikationsvorrichtung zugänglich ist, geschrieben wird, wobei das Register angeben soll, dass die ersten Daten über die Verbindungsstrecke unzugänglich sind.
-
Beispiel 14 kann den Gegenstand von irgendeinem der Beispiele 1-13 umfassen, wobei in Reaktion auf eine Bestimmung, dass der Authentifizierungszustand oder der Schutzzustand der Verbindungsstrecke unzureichend ist, um Zugriff auf die ersten Daten zu schaffen, die Einrichtung die Verbindungsstrecke abbrechen soll.
-
Beispiel 15 kann den Gegenstand von irgendeinem der Beispiele 1-14 umfassen, der ferner eine Host-Rechenvorrichtung und die zweite Kommunikationsvorrichtung umfasst.
-
Beispiel 16 ist ein Verfahren mit dem Speichern von ersten Daten; dem Empfangen einer Anforderung für die ersten Daten von einer Kommunikationsvorrichtung über eine Verbindungsstrecke, die mit einer Kommunikationsvorrichtung aufgebaut ist; und dem Steuern des Zugriffs auf die ersten Daten für die Kommunikationsvorrichtung durch eine Zugriffssteuermaschine mit einer Schaltungsanordnung auf der Basis eines Authentifizierungszustandes der Kommunikationsvorrichtung und eines Schutzzustandes der Verbindungsstrecke.
-
Beispiel 17 kann den Gegenstand von Beispiel 16 umfassen, wobei das Steuern des Zugriffs auf die ersten Daten das Sperren des Zugriffs auf die ersten Daten für die Kommunikationsvorrichtung in Reaktion auf eine Bestimmung, dass der Schutzzustand der Verbindungsstrecke angibt, dass eines oder mehrere von Vertraulichkeits-, Wiederholungs- und Integritätsschutzmaßnahmen für die Verbindungsstrecke nicht aktiviert sind, umfasst.
-
Beispiel 18 kann den Gegenstand von Beispiel 16 umfassen, wobei das Steuern des Zugriffs auf die ersten Daten das Schaffen eines Zugriffs auf die ersten Daten für die Kommunikationsvorrichtung in Reaktion auf eine Bestimmung, dass der Schutzzustand der Verbindungsstrecke angibt, dass Vertraulichkeits-, Wiederholungs- und Integritätsschutzmaßnahmen für die Verbindungsstrecke aktiviert sind, umfasst.
-
Beispiel 19 kann den Gegenstand von irgendeinem der Beispiele 16-18 umfassen, wobei der Authentifizierungszustand angibt, ob unveränderliche Komponenten der Kommunikationsvorrichtung authentifiziert wurden.
-
Beispiel 20 kann den Gegenstand von irgendeinem der Beispiele 16-19 umfassen, wobei der Authentifizierungszustand angibt, ob veränderliche Komponenten der Kommunikationsvorrichtung authentifiziert wurden.
-
Beispiel 21 kann den Gegenstand von irgendeinem der Beispiele 16-20 umfassen, wobei der Authentifizierungszustand angibt, ob Berechtigungsnachweise eines Benutzers, die den ersten Daten zugeordnet sind, authentifiziert wurden.
-
Beispiel 22 kann den Gegenstand von irgendeinem der Beispiele 16-21 umfassen, der ferner das Steuern des Zugriffs auf die ersten Daten für die Kommunikationsvorrichtung auf der Basis des Authentifizierungszustandes und des Schutzzustandes der Verbindungsstrecke in Reaktion auf eine Bestimmung, dass die ersten Daten geschützt werden sollen, umfasst.
-
Beispiel 23 kann den Gegenstand von irgendeinem der Beispiele 16-22 umfassen, der ferner das Schaffen eines Zugriffs auf zweite Daten über die Verbindungsstrecke für die Kommunikationsvorrichtung ohne Prüfen des Schutzzustandes der Verbindungsstrecke in Reaktion auf eine Bestimmung, dass die Daten nicht geschützt sind, umfasst.
-
Beispiel 24 kann den Gegenstand von irgendeinem der Beispiele 16-23 umfassen, der ferner in Reaktion auf eine Bestimmung, dass der Schutzzustand der Verbindungsstrecke sich verschlechtert hat, das Verweigern des Zugriffs auf die ersten Daten über die Verbindungsstrecke für die Kommunikationsvorrichtung umfasst, bis der Schutzzustand der Verbindungsstrecke wiederhergestellt ist.
-
Beispiel 25 kann den Gegenstand von Beispiel 24 umfassen, wobei die Bestimmung, dass der Schutzzustand der Verbindungsstrecke sich verschlechtert hat, in Reaktion auf eine Benachrichtigung, dass die Verbindungsstrecke in einen leistungsarmen Zustand übergehen soll, durchgeführt wird.
-
Beispiel 26 kann den Gegenstand von Beispiel 24 umfassen, wobei die Bestimmung, dass der Schutzzustand der Verbindungsstrecke sich verschlechtert hat, in Reaktion auf eine Benachrichtigung durchgeführt wird, dass eine Prüfsumme einer über die Verbindungsstrecke übertragenen Nachricht ungültig ist.
-
Beispiel 27 kann den Gegenstand von Beispiel 24 umfassen, wobei in Reaktion auf die Bestimmung, dass der Schutzzustand der Verbindungsstrecke sich verschlechtert hat, die Zugriffssteuermaschine den Zugriff auf die ersten Daten über die Verbindungsstrecke verweigern soll, bis die Authentifizierung erneut durchgeführt wird.
-
Beispiel 28 kann den Gegenstand von irgendeinem der Beispiele 16-27 umfassen, der ferner in Reaktion auf eine Bestimmung, dass der Authentifizierungszustand oder der Schutzzustand der Verbindungsstrecke unzureichend ist, um Zugriff auf die ersten Daten zu schaffen, das Bewirken, dass in ein Register, das für die Kommunikationsvorrichtung zugänglich ist, geschrieben wird, umfasst, wobei das Register angeben soll, dass die ersten Daten über die Verbindungsstrecke unzugänglich sind.
-
Beispiel 29 kann den Gegenstand von irgendeinem der Beispiele 16-28 umfassen, der ferner in Reaktion auf eine Bestimmung, dass der Authentifizierungszustand oder der Schutzzustand der Verbindungsstrecke unzureichend ist, um Zugriff auf die ersten Daten zu schaffen, das Abbrechen der Verbindungsstrecke umfasst.
-
Beispiel 30 ist mindestens ein nichttransitorisches maschinenlesbares Speichermedium mit darauf gespeicherten Befehlen, wobei die Befehle, wenn sie auf einer Maschine ausgeführt werden, bewirken, dass die Maschine erste Daten speichert; eine Anforderung für die ersten Daten von einer Kommunikationsvorrichtung über eine Verbindungsstrecke empfängt, die mit einer Kommunikationsvorrichtung aufgebaut ist; und den Zugriff auf die ersten Daten für die Kommunikationsvorrichtung auf der Basis eines Authentifizierungszustandes der Kommunikationsvorrichtung und eines Schutzzustandes der Verbindungsstrecke steuert.
-
Beispiel 31 kann den Gegenstand von Beispiel 30 umfassen, wobei das Steuern des Zugriffs auf die ersten Daten das Sperren des Zugriffs auf die ersten Daten für die Kommunikationsvorrichtung in Reaktion auf eine Bestimmung, dass der Schutzzustand der Verbindungsstrecke angibt, dass eines oder mehrere von Vertraulichkeits-, Wiederholungs- und Integritätsschutzmaßnahmen für die Verbindungsstrecke nicht aktiviert sind, umfasst.
-
Beispiel 32 kann den Gegenstand von Beispiel 30 umfassen, wobei das Steuern des Zugriffs auf die ersten Daten das Schaffen eines Zugriffs auf die ersten Daten für die Kommunikationsvorrichtung in Reaktion auf eine Bestimmung, dass der Schutzzustand der Verbindungsstrecke angibt, dass Vertraulichkeits-, Wiederholungs- und Integritätsschutzmaßnahmen für die Verbindungsstrecke aktiviert sind, umfasst.
-
Beispiel 33 kann den Gegenstand von irgendeinem der Beispiele 30-32 umfassen, wobei der Authentifizierungszustand angibt, ob unveränderliche Komponenten der Kommunikationsvorrichtung authentifiziert wurden.
-
Beispiel 34 kann den Gegenstand von irgendeinem der Beispiele 30-33 umfassen, wobei der Authentifizierungszustand angibt, ob veränderliche Komponenten der Kommunikationsvorrichtung authentifiziert wurden.
-
Beispiel 35 kann den Gegenstand von irgendeinem der Beispiele 30-34 umfassen, wobei der Authentifizierungszustand angibt, ob Berechtigungsnachweise eines Benutzers, die den ersten Daten zugeordnet sind, authentifiziert wurden.
-
Beispiel 36 kann den Gegenstand von irgendeinem der Beispiele 30-35 umfassen, der ferner das Steuern des Zugriffs auf die ersten Daten für die Kommunikationsvorrichtung auf der Basis des Authentifizierungszustandes und des Schutzzustandes der Verbindungsstrecke in Reaktion auf eine Bestimmung, dass die ersten Daten geschützt werden sollen, umfasst.
-
Beispiel 37 kann den Gegenstand von irgendeinem der Beispiele 30-36 umfassen, der ferner das Schaffen des Zugriffs auf zweite Daten über die Verbindungsstrecke für die Kommunikationsvorrichtung ohne Prüfen des Schutzzustandes der Verbindungsstrecke in Reaktion auf eine Bestimmung, dass die Daten nicht geschützt sind, umfasst.
-
Beispiel 38 kann den Gegenstand von irgendeinem der Beispiele 30-37 umfassen, der ferner in Reaktion auf eine Bestimmung, dass der Schutzzustand der Verbindungsstrecke sich verschlechtert hat, das Verweigern des Zugriffs auf die ersten Daten über die Verbindungsstrecke für die Kommunikationsvorrichtung umfasst, bis der Schutzzustand der Verbindungsstrecke wiederhergestellt ist.
-
Beispiel 39 kann den Gegenstand von Beispiel 38 umfassen, wobei die Bestimmung, dass der Schutzzustand der Verbindungsstrecke sich verschlechtert hat, in Reaktion auf eine Benachrichtigung, dass die Verbindungsstrecke in einen leistungsarmen Zustand übergehen soll, durchgeführt wird.
-
Beispiel 40 kann den Gegenstand von Beispiel 38 umfassen, wobei die Bestimmung, dass der Schutzzustand der Verbindungsstrecke sich verschlechtert hat, in Reaktion auf eine Benachrichtigung, dass eine Prüfsumme einer über die Verbindungsstrecke übertragenen Nachricht ungültig ist, durchgeführt wird.
-
Beispiel 41 kann den Gegenstand von Beispiel 38 umfassen, wobei in Reaktion auf die Bestimmung, dass sich der Schutzzustand der Verbindungsstrecke verschlechtert hat, die Zugriffssteuermaschine den Zugriff auf die ersten Daten über die Verbindungsstrecke verweigern soll, bis die Authentifizierung erneut durchgeführt wird.
-
Beispiel 42 kann den Gegenstand von irgendeinem der Beispiele 30-41 umfassen, der ferner in Reaktion auf eine Bestimmung, dass der Authentifizierungszustand oder der Schutzzustand der Verbindungsstrecke unzureichend ist, um Zugriff auf die ersten Daten zu schaffen, das Bewirken, dass in ein Register, das für die Kommunikationsvorrichtung zugänglich ist, geschrieben wird, umfasst, wobei das Register angeben soll, dass die ersten Daten über die Verbindungsstrecke unzugänglich sind.
-
Beispiel 43 kann den Gegenstand von irgendeinem der Beispiele 30-42 umfassen, der ferner in Reaktion auf eine Bestimmung, dass der Authentifizierungszustand oder der Schutzzustand der Verbindungsstrecke unzureichend ist, um Zugriff auf die ersten Daten zu schaffen, das Abbrechen der Verbindungsstrecke umfasst.
-
In dieser ganzen Patentbeschreibung bedeutet eine Bezugnahme auf „eine einzelne Ausführungsform“ oder „eine Ausführungsform“, dass ein spezielles Merkmal, eine spezielle Struktur oder eine spezielle Eigenschaft, die in Verbindungsstrecke mit der Ausführungsform beschrieben ist, in mindestens einer Ausführungsform der vorliegenden Erfindung enthalten ist. Folglich beziehen sich die Erscheinungen der Ausdrücke „in einer einzelnen Ausführungsform“ oder „in einer Ausführungsform“ an verschiedenen Stellen in dieser ganzen Patentbeschreibung nicht notwendigerweise alle auf dieselbe Ausführungsform. Ferner können die speziellen Merkmale, Strukturen oder Eigenschaften in irgendeiner geeigneten Weise in einer oder mehreren Ausführungsformen kombiniert werden.
-
In der vorangehenden Patentbeschreibung wurde eine ausführliche Beschreibung in Bezug auf spezielle beispielhafte Ausführungsformen gegeben. Es ist jedoch offensichtlich, dass verschiedene Modifikationen und Änderungen daran durchgeführt werden können, ohne vom breiteren Gedanken und Schutzbereich der Erfindung, wie in den beigefügten Ansprüchen dargelegt, abzuweichen. Die Patentbeschreibung und die Zeichnungen sollen folglich vielmehr in einer erläuternden als einschränkenden Hinsicht betrachtet werden. Ferner bezieht sich die vorangehende Verwendung der Ausführungsform und einer anderen beispielhaften Sprache nicht notwendigerweise auf dieselbe Ausführungsform oder dasselbe Beispiel, sondern kann sich auf verschiedene und unterschiedliche Ausführungsformen sowie potentiell dieselbe Ausführungsform beziehen.
-
ZITATE ENTHALTEN IN DER BESCHREIBUNG
-
Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
-
Zitierte Patentliteratur
-