DE112013007700T5 - Eingabe-Ausgabe-Datenausrichtung - Google Patents

Eingabe-Ausgabe-Datenausrichtung Download PDF

Info

Publication number
DE112013007700T5
DE112013007700T5 DE112013007700.0T DE112013007700T DE112013007700T5 DE 112013007700 T5 DE112013007700 T5 DE 112013007700T5 DE 112013007700 T DE112013007700 T DE 112013007700T DE 112013007700 T5 DE112013007700 T5 DE 112013007700T5
Authority
DE
Germany
Prior art keywords
data
interface
header
granularity
consumer
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE112013007700.0T
Other languages
English (en)
Inventor
Anil Vasudevan
Eric Geisler
Marshall Marc Millier
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE112013007700T5 publication Critical patent/DE112013007700T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/385Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

Es werden hier Techniken zum Handhaben von nicht ausgerichteten Daten in einem Rechensystem beschrieben. Die Techniken können ein Empfangen von Daten von einer Eingabe-/Ausgabevorrichtung (I/O-Vorrichtung) über eine I/O-Schnittstelle umfassen. Die Daten können durch Hinzufügen von Werten zu den Daten an der I/O-Schnittstelle aufgefüllt werden, wenn die Daten in Bezug auf das Rechensystem nicht ausgerichtet sind, so dass ein Verbraucher der Daten, der mit der I/O-Vorrichtung assoziiert ist, die hinzugefügten Werte ignoriert.

Description

  • Technisches Gebiet
  • Diese Offenbarung betrifft im Allgemeinen Techniken zum Handhaben von nicht ausgerichteten Daten. Insbesondere betrifft diese Offenbarung ein Handhaben von nicht ausgerichteten Daten von einer Eingabe-/Ausgabevorrichtung, die an einer Eingabe-/Ausgabeschnittstelle empfangen werden und für eine Rechenvorrichtung vorgesehenen sind.
  • Stand der Technik
  • Rechenvorrichtungen können derart konfiguriert sein, dass sie Daten von Vorrichtungen, wie z. B. Eingabe-/Ausgabevorrichtungen (I/O-Vorrichtungen), empfangen. I/O-Vorrichtungen sind Vorrichtungen, die mit einer Plattform der Rechenvorrichtung, die Rechenvorrichtungsprozessoren, einen Speicher und dergleichen umfasst, über I/O-Schnittstellen kommunizieren können. I/O-Vorrichtungen können Tastaturen, Mäuse, Displays, Netzwerkkarten (NIC), grafische Verarbeitungseinheiten (GPU) und dergleichen umfassen. Daten, die von einer I/O-Vorrichtung empfangen werden, können für eine Verarbeitung durch ein Rechensystem vorgesehen sein. Eine Rechenvorrichtung kann ihre Speicherhierarchie optimieren, indem eine Struktur implementiert wird, die Daten in gleichmäßig dimensionierte Segmente oder „Zeilen” partitioniert. Jede „Zeile” ist eine Einheit der für eine Verarbeitung durch die Rechenvorrichtung verfügbaren Daten. Das Rechensystem kann die Daten von einer I/O-Vorrichtung durch Ausrichten der Adresse und der Größe des Datenabschnitts auf die Struktur der Zeilen organisieren. In manchen Szenarien können Daten, die von einer I/O-Vorrichtung empfangen werden, für einen Puffer im Speicher der Rechenvorrichtung vorgesehen sein. Jener Speicher kann durch einen Cache optimiert sein, der einen Hochleistungszugriff auf zuletzt verwendete Speichersegmente, die als Cachezeilen bekannt sind, bereitstellt. Daten von der I/O-Vorrichtung befinden sich möglicherweise nicht auf einer Cache-Zeilengrenze oder die Daten sind möglicherweise nicht ein geradzahliges Vielfaches der Cache-Zeilengröße. Diese Daten werden als „nicht ausgerichtete” Daten bezeichnet. Zum Beispiel können Daten, die nicht ausgerichtet sind, empfangene Daten umfassen, die kleiner sind als eine gegebene Cache-Zeilengröße. Nicht ausgerichtete Daten, die von einer I/O-Vorrichtung empfangen werden, können die Latenz der Rechenvorrichtung erhöhen, indem sie eine Durchführung zusätzlicher Operationen erfordern, wie z. B. einer Read-Modify-Write-Operation zum Zusammenfügen der neu ankommenden Daten mit jenen, die sich bereits im Speicher befinden.
  • Kurze Beschreibung der Zeichnungen
  • 1 ist ein Blockdiagramm, das ein Rechensystem darstellt, welches eine Ausrichtungslogik umfasst;
  • 2 ist ein Blockdiagramm, das eine I/O-Vorrichtung darstellt, die mit einer Systemplattform über eine I/O-Schnittstelle, die eine Ausrichtungslogik umfasst, verbunden ist;
  • 3 ist ein Blockdiagramm, das eine I/O-Vorrichtung darstellt, die mit einer Systemplattform über eine I/O-Schnittstelle, die Ausrichtungsanzeigen in einem Paketheader umfasst, verbunden ist;
  • 4 ist ein Blockdiagramm, das ein Verfahren zum Handhaben von nicht ausgerichteten Daten darstellt, und
  • 5 ist ein Blockdiagramm, das ein alternatives Verfahren zum Handhaben von nicht ausgerichteten Daten darstellt.
  • In der gesamten Offenbarung und in den Figuren werden dieselben Bezugszeichen verwendet, um auf gleiche Komponenten und Merkmale zu verweisen. Nummern in der 100-Reihe beziehen sich auf Merkmale, die ursprünglich in 1 vorzufinden sind, Nummern in der 200-Reihe beziehen sich auf Merkmale, die ursprünglich in 2 zu finden sind, und so weiter.
  • Beschreibung der Ausführungsformen
  • Die vorliegende Offenbarung betrifft im Allgemeinen Techniken zum Handhaben von nicht ausgerichteten Daten in einem Rechensystem. Ein Rechensystem kann Daten von verschieden Eingabe-/Ausgabevorrichtungen (I/O-Vorrichtungen) empfangen. Zum Beispiel empfängt eine Netzwerkkarte (NIC) Daten von einem Netzwerk und stellt die Daten an eine Plattform des Rechensystems, das dauerhafte Speichereinheiten, Verarbeitungseinheiten und dergleichen umfasst, über eine I/O-Schnittstelle bereit. In manchen Szenarien sind die Daten von der I/O-Vorrichtung in Bezug auf das Speichersystem des Rechensystems nicht ausgerichtet, wenn sie an der I/O-Schnittstelle empfangen werden. Zum Beispiel kann ein Rechensystem Daten von einer I/O-Vorrichtung empfangen, die Cache-Zeilengrenzen von 64 Bytes aufweist. Wenn Daten von der I/O-Vorrichtung jedoch 65 Bytes lang sind, müssen die Daten in zwei Segmenten geschrieben werden: einer 64-Byte-Vollzeilenanfrage und einer 1-Byte-Teilzeilenanfrage. Nicht ausgerichtete Daten, wie hier verwendet, sind Daten, die keine Vollzeilenanfrage darstellen, sondern stattdessen eine Teilzeilenanfrage auf der Grundlage einer Datenausrichtungsstruktur, die mit einem gegeben Rechensystem assoziiert ist, wie z. B. einer 64-Byte-Datenausrichtungsstruktur einer Cachezeile. Teilanforderungen können eine Durchführung von zusätzlichen Operationen, wie z. B. eines Read-Modify-Write (RMW), erfordern, wobei der Cache eine Teilzeilenanfrage mit einem Speicher innerhalb des Rechensystems zusammenfügen muss.
  • Die hier beschriebenen Techniken empfangen Daten, die nicht ausgerichtet sind. Anstatt ein RMW durchzuführen, umfassen die Techniken ein Auffüllen der Daten durch Hinzufügen von Werten zu den Daten, wenn sie nicht ausgerichtet sind. Software-Treiber, die mit einer gegebenen I/O-Vorrichtung assoziiert sind, sind derart konfiguriert, dass sie die hinzugefügten Werte beim Lesen der nicht ausgerichteten Daten im Cache ignorieren, wodurch RMW-Operationen und jeglicher Anstieg von Latenz, die mit derartigen Operationen zusammenhängt, vermieden werden. Ein Dienstvertrag zwischen dem Rechensystem, einschließlich seiner Vorrichtungssoftware, und der I/O-Vorrichtung ermöglicht es dem Rechensystem, aufgefüllte Daten effizient hinzuzufügen und zu ignorieren. Das Rechensystem ist der Verbraucher der durch die I/O-Vorrichtung übertragenen Daten, wobei die I/O-Vorrichtung als der Erzeuger fungiert.
  • 1 ist ein Blockdiagramm, das ein Rechensystem darstellt, welches eine Ausrichtungslogik umfasst. Das Rechensystem 100 umfasst eine Rechenvorrichtung 101, die einen Prozessor 102, eine Speichervorrichtung 104, die ein nichtflüchtiges computerlesbares Medium umfasst, und eine Speichervorrichtung 106 aufweist. Die Rechenvorrichtung 101 umfasst Vorrichtungstreiber 108, eine I/O-Schnittstelle 110 und I/O-Vorrichtungen 112, 114, 116.
  • Die I/O-Vorrichtungen 112, 114, 116 können eine Vielzahl von Vorrichtungen umfassen, die zum Bereitstellen von Daten an die I/O-Schnittstelle 110 ausgelegt sind, wie z. B. eine grafische Vorrichtung, die eine grafische Verarbeitungseinheit, ein Plattenlaufwerk, eine Netzwerkkarte (NIC) und dergleichen umfasst. In einigen Ausführungsformen ist eine I/O-Vorrichtung, wie z. B. die I/O-Vorrichtung 112, mit entfernten (Remote) Vorrichtungen 118 über ein Netzwerk 120 verbunden, wie in 1 dargestellt.
  • Die I/O-Vorrichtungen 112, 114, 116 sind zum Bereitstellen von Daten an die I/O-Schnittstelle 110 ausgelegt. Wie vorstehend besprochen, sind die von den I/O-Vorrichtungen bereitgestellten Daten auf eine Cachestruktur der Rechenvorrichtung 101 möglicherweise nicht ausgerichtet. Eine Cacheausrichtungsstruktur, auf die hier Bezug genommen wird, ist die Art und Weise, auf die Daten im Cache für den Rechnerspeicher angeordnet und abgerufen werden und kann von System zu System unterschiedlich sein. Verschiedene Arten von Cacheausrichtungsstrukturen können, neben weiteren Cacheausrichtungsstrukturen, eine 64-Byte-Cacheausrichtungsstruktur, eine 128-Byte-Cacheausrichtungsstruktur umfassen. Zum Beispiel kann der Cache für die Speichervorrichtung 106 der Rechenvorrichtung 101 mit einer 64-Byte-Cacheausrichtungsstruktur konfiguriert sein. Wie in 1 dargestellt, umfasst der Speicher 106 einen Cache 122, der Cachezeilen aufweist, die eine Anzahl von Bytes lang sind und die mit den in der Speichervorrichtung 106 enthaltenen Daten stimmig gehalten werden.
  • In einigen Ausführungsformen umfasst die I/O-Schnittstelle 110 eine mit dem gestrichelten Kasten 124 angezeigte Ausrichtungslogik, die zum Handhaben von nicht ausgerichteten Daten, die von den I/O-Vorrichtungen 112, 114, 116 empfangen werden, konfiguriert ist. In einigen Ausführungsformen ist die Ausrichtungslogik 126 innerhalb der I/O-Vorrichtungen angeordnet, wie durch den gestrichelten Kasten 126 der I/O-Vorrichtung 112 angezeigt, wobei die Ausrichtungslogik 126 vorgesehen ist, um Datenpakete mit Befehlen zu konfigurieren, die sich auf ein an der I/O-Schnittstelle 110 durchzuführendes Auffüllen von nicht ausgerichteten Daten beziehen, wie nachstehend ausführlicher besprochen. In beiden Ausführungsformen umfasst die Ausrichtungslogik, entweder 124 oder 126, zumindest teilweise eine Hardwarelogik, um nicht ausgerichtete Daten zu handhaben. In einigen Ausführungsformen ist die Hardwarelogik eine integrierte Schaltung, die zum Handhaben von nicht ausgerichteten Daten, die von einer I/O-Vorrichtung empfangen werden, konfiguriert ist. In einigen Ausführungsformen umfasst die Ausrichtungslogik andere Arten von Hardwarelogik, wie z. B. einen Programmcode, der durch einen Prozessor, Mikrocontroller und dergleichen ausführbar ist, wobei der Programmcode in einem nichtflüchtigen computerlesbaren Medium gespeichert ist. Ein Handhaben von nicht ausgerichteten Daten umfasst ein Auffüllen von nicht ausgerichteten Daten durch Hinzufügen von Werten zu den nicht ausgerichteten Daten, so dass die hinzugefügten Werte durch Rechensystemkomponenten, wie z. B. die Treiber 108, ignoriert werden, während gültige Daten innerhalb der aufgefüllten Daten durch die Rechensystemkomponenten gelesen werden. Die I/O-Schnittstelle 110 kann Routing-Merkmale einer Schnittstelle verwenden, mit 130 in 1 gekennzeichnet, um Datenverkehr von einer I/O-Vorrichtung, der eine Ausrichtung erfordert, zu klassifizieren. Eine Schnittstelle, auf die hier Bezug genommen wird, ist eine kommunikative Kopplung, die für eine breite Vielfalt von zukünftigen Rechenmerkmalen und Kommunikationsplattformen definiert ist, wie z. B. Peripheral Component Interconnect Express (PCIe) oder beliebige andere Schnittstellengefügetechnologien. In den hier beschriebenen Techniken kann die Schnittstelle 130 einen Datenverkehr zum Beispiel durch eindeutige physische Verbindungen, virtuelle Kanäle, Vorrichtungs-IDs oder Datenstrom-IDs klassifizieren, um anzuzeigen, dass eine Ausrichtungslogik an der I/O-Schnittstelle 110 an den empfangenen Daten von der eindeutig identifizierten Quelle ausgeführt werden soll. Die I/O-Schnittstelle 110 kann mit eindeutigen Kennungen konfiguriert werden, um anzuzeigen, wenn der Dienstvertrag zwischen der Rechenvorrichtung 101 und der I/O-Vorrichtung 112 errichtet wurde.
  • Der Prozessor 102 der Rechenvorrichtung 101 kann ein Hauptprozessor sein, der zum Ausführen der gespeicherten Befehle ausgelegt ist. Der Prozessor 102 kann ein Einzelkernprozessor, ein Mehrkernprozessor, ein Rechnerverbund oder eine Vielzahl von anderen Anordnungen sein. Der Prozessor 102 kann als CISC-(Complex Instruction Set Computer, Rechner mit komplexem Befehlssatz) oder RISC-(Reduced Instruction Set Computer, Rechner mit reduziertem Befehlssatz)-Prozessoren, Prozessoren, die mit x86-Befehlssatz kompatibel sind, Mehrkern oder ein beliebiger anderer Mikroprozessor oder eine zentrale Verarbeitungseinheit (CPU) implementiert werden.
  • Die Speichervorrichtung 106 kann einen Direktzugriffspeicher (RAM) (z. B. einen statischen Direktzugriffspeicher (SRAM), einen dynamischen Direktzugriffspeicher (DRAM), ein Z-RAM (Zero Capacitor), ein SONOS (Silizium-Oxid-Nitrid-Oxid-Silizium), ein eingebettetes DRAM, ein EDO-RAM (Extended Data Out), ein DDR-RAM (Double Data Rate), ein RRAM (Resistive Random Access Memory), ein PRAM (Parameter Random Access Memory) usw.), einen Festwertspeicher (ROM) (z. B. ein Masken-ROM, einen programmierbaren Festwertspeicher (PROM), einen löschbaren programmierbaren Festwertspeicher (EPROM), einen elektrisch löschbaren programmierbaren Festwertspeicher (EEPROM) usw.), einen Flash-Speicher oder beliebige andere geeignete Speichersysteme umfassen. Der Hauptprozessor 102 kann über einen Systembus 128 (z. B. Peripheral Component Interconnect (PCI), Industry Standard Architecture (ISA), PCI-Express, HyperTransport®, NuBus usw.) mit Komponenten verbunden werden, die den Speicher 106, die Speichervorrichtung 104, die Treiber 108, die I/O-Schnittstelle 110 und die I/O-Vorrichtungen 112, 114, 116 umfassen.
  • Das Blockdiagramm von 1 soll nicht angeben, dass die Rechenvorrichtung 101 alle von den in 1 dargestellten Bestandteilen umfassen muss. Außerdem kann die Rechenvorrichtung 101 je nach Einzelheiten der konkreten Implementierung eine beliebige Anzahl von zusätzlichen, in 1 nicht dargestellten Komponenten umfassen.
  • 2 ist ein Blockdiagramm, das eine I/O-Vorrichtung darstellt, die mit einer Systemplattform über eine I/O-Schnittstelle, die eine Ausrichtungslogik umfasst, verbunden ist. Eine Systemplattform 202 kann Speichereinheiten, Speichervorrichtungen, Prozessoren, Systemsoftware, die Vorrichtungstreiber umfasst, und dergleichen umfassen, wie vorstehend unter Bezugnahme auf 1 besprochen. Die Systemplattform 202 ist derart konfiguriert, dass sie kohärente Speicheroperationen über einen Speichercache 122 verwendet. Der gestrichelte Kasten 204 von 2 repräsentiert einen kohärenten Speicherplatz, wobei Daten vom Speicher gemäß einer Datenausrichtungsstruktur der Systemplattform 202 ausgerichtet werden. Zu Besprechungszwecken wird angenommen, dass die Systemplattform 202 in 2 eine 64-Byte-Datenausrichtungsstruktur aufweist, obwohl andere Datenausrichtungsstrukturen implementiert werden können. Der gestrichelte Kasten 206 repräsentiert die Verbindung mit einer I/O-Schnittstelle, wie z. B. der I/O-Schnittstelle 110 von 1, die mit der Systemplattform 202 assoziiert ist. Die Datenübertragungen an die I/O-Vorrichtung oder von dieser können von Adressen oder an Adressen geschehen, die in Bezug auf den Plattformspeichercache 122 nicht ausgerichtet sind.
  • Wie vorstehend besprochen, kann die I/O-Schnittstelle 110 nicht ausgerichtete Daten von einer I/O-Vorrichtung, wie z. B. der in 2 dargestellten Netzwerkkarte (NIC) 208, empfangen. Nicht ausgerichtete Daten von der NIC 208 können an der Ausrichtungslogik 124 der I/O-Schnittstelle 110 empfangen werden. Die I/O-Schnittstelle 110 kann derart konfiguriert sein, dass sie eine eindeutige ID, wie z. B. eine Busvorrichtungsfunktion (BDF) der I/O-Vorrichtung, wie z. B. der NIC 208 in 2, erkennt, so dass die Ausrichtungslogik 124 angewiesen wird, vor der Speicherung jeglicher nicht ausgerichteter Daten in dem Cache 122 die nicht ausgerichteten Daten durch Hinzufügen von Werten aufzufüllen, um der Datenausrichtungsstruktur des Speichercache 122 in der Systemplattform 202 zu entsprechen. In diesem Beispiel umfasst der Cache 122 Cachezeilen, die eine 64-Byte-Datenausrichtungsstruktur aufweisen. Die Verwendung einer eindeutigen ID bildet einen Mechanismus zum Anmelden einer I/O-Vorrichtung bei einer I/O-Schnittstelle. Eine Anmeldung der I/O-Vorrichtung, wie z. B. der NIC 208, bei der I/O-Schnittstelle 110 stellt einen Teil der Errichtung des vorstehend unter Bezugnahme auf 1 besprochenen Ausrichtungsdienstvertrags dar.
  • Das Auffüllen der nicht ausgerichteten Daten durch die Ausrichtungslogik 124 ist derart, dass die auf der Rechenplattform laufende Systemsoftware, wie z. B. ein NIC-Vorrichtungstreiber 210 von 2, zum Lesen der nicht ausgerichteten Daten und Ignorieren der hinzugefügten Werte konfiguriert sein kann. In Ausführungsformen liest ein Treiber die nicht ausgerichteten Daten und ignoriert die hinzugefügten Werte auf der Grundlage einer vordefinierten Vereinbarung zwischen der I/O-Schnittstelle 110 und dem Vorrichtungstreiber, wie z. B. dem NIC-Treiber 210. Zum Beispiel kann die NIC 208 65 Bytes von Daten an die I/O-Schnittstelle 110 bereitstellen. Die ersten 64 Bytes von Daten werden in dem Cache 122 gespeichert, da die Cachezeile gemäß der Datenausrichtungsstruktur des Cache 122 in diesem Beispiel 64 Bytes lang ist. Das zusätzliche 1 Byte von Daten wird durch die Ausrichtungslogik mit hinzugefügten Werten, wie z. B. Nullen, aufgefüllt, um weitere 63 Bytes von Daten zu füllen. Die Vereinbarung zwischen dem NIC-Treiber 210 und der I/O-Schnittstelle 110 ermöglicht es dem NIC-Treiber 210, das erste Byte von Daten zu lesen und die 63 Bytes von zusätzlichen Werten zu ignorieren, ohne dass eine Durchführung einer RMW-Operation erforderlich ist, um den Cache mit dem Speicher 106 zu synchronisieren.
  • Es ist zu beachten, dass die Ausrichtung nicht auf eine Cachezeilengröße begrenzt ist. In Ausführungsformen füllt die Ausrichtungslogik 124 Daten gemäß einer größten akzeptablen Ausrichtungsgranularität für eine gegebene Datenausrichtungsstruktur einer Systemplattform, wie z. B. der Granularität einer Cachezeilengröße, Seitengrößengranularität und dergleichen, auf.
  • 3 ist ein Blockdiagramm, das eine I/O-Vorrichtung darstellt, die mit einer Systemplattform über eine I/O-Schnittstelle, die Ausrichtungsanzeigen in einem Paketheader umfasst, verbunden ist. Wie vorstehend unter Bezugnahme auf 2 besprochen, kann die Systemplattform 202 innerhalb des kohärenten Speicherplatzes 204, der eine 64-Byte-Cacheausrichtungsstruktur aufweist, konfiguriert sein, obwohl andere Datenausrichtungsstrukturen implementiert werden können. Der gestrichelte Kasten 206 veranschaulicht die Verbindung mit einer I/O-Schnittstelle, wie z. B. der I/O-Schnittstelle 110 von 1, die mit der Systemplattform 202 assoziiert ist. Die Datenübertragungen an die I/O-Vorrichtung oder von dieser können von Adressen oder an Adressen geschehen, die in Bezug auf den Plattformspeichercache 122 nicht ausgerichtet sind.
  • In einigen Ausführungsformen stellt eine I/O-Vorrichtung, wie z. B. die in 3 dargestellte NIC 302, Ausrichtungsdaten innerhalb eines Headers eines Datenpakets 304 bereit. Das Paket 304 umfasst Blöcke, wie z. B. einen Steuer-Header-Block 306, einen Adressblock 308 und einen Datenblock 310. Typischerweise umfassen Paketheaders Netzwerkheaders, die eine gültige Länge der Daten ohne Rücksicht auf die Ausrichtung identifizieren. In hier besprochenen Ausführungsformen umfasst der Steuer-Header-Block 306 Ausrichtungsdaten 312, wie in 3 dargestellt. In dieser Ausführungsform umfasst eine I/O-Vorrichtung, wie z. B. die NIC 302, eine Ausrichtungslogik 126, die derart konfiguriert ist, dass sie die Ausrichtungsdaten 312 in dem Steuer-Header-Block 306 aufnimmt. Die Ausrichtungsdaten 312 zeigen der I/O-Schnittstelle 110 an, dass das Datenpaket 304 nicht ausgerichtete Daten umfasst, so dass die I/O-Schnittstelle 110 die Daten über die Ausrichtungslogik 124 auffüllt. In diesem Szenario werden die Ausrichtungsdaten 312 in das Datenpaket 304 eingebettet, so dass die Ausrichtungsdaten 312 durch die I/O-Schnittstelle 110 verarbeitet werden und ein Auffüllen und die gewünschte Ausrichtung auftreten kann. In einigen Ausführungsformen wird die Implementierung von Ausrichtungsdaten 312 innerhalb des Pakets 304 an der I/O-Schnittstelle 110 ohne die Ausrichtungslogik 124 durch eine geeignete Konfiguration der I/O-Schnittstelle 110 zum Interpretieren der Ausrichtungsdaten 312 durchgeführt.
  • 4 ist ein Blockdiagramm, das ein Verfahren zum Handhaben von nicht ausgerichteten Daten darstellt. Bei Block 402 werden Daten von einer Eingabe-/Ausgabevorrichtung (I/O-Vorrichtung) an einem Cache einer I/O-Schnittstelle empfangen. Nicht ausgerichtete Daten werden bei Block 404 aufgefüllt, so dass ein mit der I/O-Vorrichtung assoziierter Treiber die hinzugefügten Werte ignoriert.
  • In einigen Ausführungsformen wird das Auffüllen durchgeführt, ohne dass eine RMW-Operation durchgeführt wird. Anstatt nicht ausgerichtete Daten zu empfangen und ein RMW für nicht ausgerichtete Daten durchzuführen, füllt mit anderen Worten die I/O-Schnittstelle die Daten mit Werten auf, die durch einen mit der I/O-Vorrichtung assoziierten Treiber sowie die Software des Rechensystems, das auf die aufgefüllten Daten zugreift, ignoriert werden. In einigen Ausführungsformen werden die hinzugefügten Werte auf der Grundlage eines zwischen der I/O-Vorrichtung und dem Treiber errichteten Vertrags ignoriert. Der Vertrag kann als Logik, die zumindest teilweise eine Hardwarelogik, eine Firmware, eine Software oder eine beliebige Kombination davon umfasst, implementiert werden, so dass gültige Bytes von nicht ausgerichteten Daten gelesen werden können, wenn sie mit den hinzugefügten Werten, die ignoriert werden, aufgefüllt sind. In einigen Ausführungsformen werden die gültigen Bytes von empfangenen Daten durch ein Längenfeld in einem von der I/O-Vorrichtung bereitgestellten Paketheader angezeigt.
  • 5 ist ein Blockdiagramm, das ein alternatives Verfahren zum Handhaben von nicht ausgerichteten Daten darstellt. Wie vorstehend in Bezug auf 3 besprochen, werden in einigen Ausführungsformen die Daten bei Block 502 an der I/O-Schnittstelle über einen Interconnect, der Daten als eine Sequenz von Paketen überträgt, empfangen. Jedes Paket umfasst einen Headerabschnitt und einen Datenabschnitt. Der Header zeigt bei Block 504 an, dass nicht ausgerichtete Daten an der I/O-Schnittstelle aufgefüllt werden, so dass eine Auffüllung als Antwort auf die Anzeige im Header bei Block 506 durchgeführt wird. In dieser Ausführungsform wird der Paketheader an der I/O-Vorrichtung konfiguriert, bevor das Paket an die I/O-Schnittstelle bereitgestellt wird.
  • In den hier beschriebenen Ausführungsformen werden Daten an die I/O-Schnittstelle oder von ihr an die I/O-Vorrichtung oder von dieser über eine Interconnect-Gewebearchitektur (Interconnect Fabric Architecture) bereitgestellt. Eine Interconnect-Gewebearchitektur umfasst die Peripheral Component Interconnect (PCI) Express (PCIe) Architektur. Ein Hauptziel von PCIe besteht darin, es Komponenten und Vorrichtungen von verschiedenen Lieferanten zu ermöglichen, in einer offenen Architektur miteinander zu arbeiten, mehrere Marktsegmente zu übergreifen; Clients (Desktops und Mobile), Server (Standard und Enterprise) und eingebettete und Kommunikationsvorrichtungen. PCI Express ist ein Hochleistungs-, Allzweckinterconnect, der für eine breite Vielfalt von zukünftigen Rechen- und Kommunikationsplattformen definiert ist. Einige PCI-Eigenschaften, wie z. B. sein Nutzungsmodell, seine Load-Store-Architektur und Software-Schnittstellen, wurden bei seinen Überarbeitungen beibehalten, während vorherige Parallelbus-Implementierungen durch eine in hohem Maße skalierbare vollserielle Schnittstelle ersetzt wurden. Die neueren Versionen von PCI Express nutzen Fortschritte bei Punkt-zu-Punkt-Interconnects, Switch-basierter Technologie und paketiertem Protokoll, um neue Leistungsniveaus und Merkmale zu liefern. Energieverwaltung, Qualität des Dienstes (QoS), Hot-Plug/Hot-Swap-Unterstützung, Datenintegrität und Fehlerbehandlung sind einige der fortgeschrittenen Merkmale, die von PCI Express unterstützt werden.
  • Unter Bezugnahme auf 6 ist eine Ausführungsform eines Gewebes (Fabric) dargestellt, das Punkt-zu-Punkt-Verbindungen umfasst, welche einen Satz von Komponenten miteinander verbinden. Ein System 600 umfasst einen Prozessor 605 und einen Systemspeicher 610, die mit einem Controller-Hub 615 gekoppelt sind. Der Prozessor 605 umfasst ein beliebiges Verarbeitungselement, wie z. B. einen Mikroprozessor, einen Host-Prozessor, einen eingebetteten Prozessor, einen Co-Prozessor oder einen anderen Prozessor. Der Prozessor 605 ist mit dem Controller-Hub 615 über einen Front-Side-Bus (FSB) 606 gekoppelt. In einer Ausführungsform ist der FSB 606 ein serieller Punkt-zu-Punkt-Interconnect, wie nachstehend beschrieben. In einer anderen Ausführungsform umfasst die Verbindung 606 eine serielle differentielle Verbindungsarchitektur, die mit verschiedenen Interconnect-Standards konform ist.
  • Der Systemspeicher 610 umfasst eine beliebige Speichervorrichtung, wie z. B. einen Direktzugriffspeicher (RAM), einen nichtflüchtigen Speicher (NV-Speicher) oder einen anderen Speicher, auf den Vorrichtungen im System 600 zugreifen können. Der Systemspeicher 610 ist mit dem Controller-Hub 615 über eine Speicherschnittstelle 616 gekoppelt. Zu Beispielen einer Speicherschnittstelle gehören eine DDR-Speicherschnittstelle (Double Data Rate), eine Dual-Channel-DDR-Speicherschnittstelle und eine DRAM-Speicherschnittstelle (dynamisches RAM).
  • In einer Ausführungsform ist der Controller-Hub 615 ein Root-Hub, ein Root-Komplex oder ein Root-Controller in einer PCIe- oder PCIE-Verbindungshierarchie (Peripheral Component Interconnect Express). Zu Beispielen eines Controller-Hubs 615 gehören ein Chipsatz, ein Memory-Controller-Hub (MCH), eine Northbridge, ein Interconnect-Controller-Hub (ICH), eine Southbridge und ein Root-Controller/-Hub. Häufig bezieht sich der Begriff Chipsatz auf zwei physisch getrennte Controller-Hubs, d. h. einen Memory-Controller-Hub (MCH), der mit einem Interconnect-Controller-Hub (ICH) gekoppelt ist. Es ist zu beachten, dass in gegenwärtigen Systemen der MCH häufig mit dem Prozessor 605 integriert ist, während der Controller 615 mit I/O-Vorrichtungen kommunizieren soll, auf eine ähnliche Weise wie nachstehend beschrieben. In einigen Ausführungsformen wird ein Peer-to-Peer-Routing fakultativ über den Root-Komplex 615 unterstützt.
  • Hierbei wird der Controller-Hub 615 mit einem Schalter/einer Brücke 620 über eine serielle Verbindung 619 gekoppelt. Eingabe-/Ausgabemodule 617 und 621, die auch als Schnittstellen/Anschlüsse 617 und 621 bezeichnet werden können, umfassen/implementieren einen geschichteten Protokollstapel, um eine Kommunikation zwischen dem Controller-Hub 615 und dem Schalter 620 bereitzustellen. In einer Ausführungsform können mehrere Vorrichtungen mit dem Schalter 620 gekoppelt werden.
  • Der Schalter/die Brücke 620 leitet Pakete/Meldungen upstream von einer Vorrichtung 625, d. h. nach oben einer Hierarchie zu einem Root-Komplex, zum Controller-Hub 615, und downstream, d. h. in einer Hierarchie weg von einem Root-Controller, von dem Prozessor 605 oder dem Systemspeicher 610 zu der Vorrichtung 625. Der Schalter 620 wird in einer Ausführungsform als eine logische Anordnung von mehreren virtuellen PCI-zu-PCI-Brückenvorrichtungen bezeichnet. Die Vorrichtung 625 umfasst eine beliebige interne oder externe Vorrichtung oder Komponente, die mit einem elektronischen System zu koppeln ist, wie z. B. eine I/O-Vorrichtung, eine Netzwerkkarte (NIC), eine Erweiterungskarte, einen Audioprozessor, einen Netzwerkprozessor, eine Festplatte, eine Speichervorrichtung, eine CD/DVD-ROM, einen Bildschirm, einen Drucker, eine Maus, eine Tastatur, einen Router, eine tragbare Speichervorrichtung, eine Firewire-Vorrichtung, eine USB-Vorrichtung (Universal Serial Bus), einen Scanner und andere Eingabe-/Ausgabevorrichtungen. In der PCIe-Fachsprache wird eine solche Vorrichtung häufig als ein Endpunkt bezeichnet. Obwohl nicht speziell dargestellt, kann die Vorrichtung 625 eine PCIe-zu-PCI/PCI-X-Brücke umfassen, um Legacy- oder andere Versionen von PCI-Vorrichtungen zu unterstützen. Endpunkt-Vorrichtungen in PCIe werden oft als Legacy-, PCIe- oder Root-Komplex-Integrated-Endpoints klassifiziert.
  • Ein Grafikbeschleuniger 630 ist ebenfalls mit dem Controller-Hub 615 über eine serielle Verbindung 632 gekoppelt. In einer Ausführungsform wird der Grafikbeschleuniger 630 mit einem MCH gekoppelt, der mit einem ICH gekoppelt ist. Der Schalter 620 und dementsprechend die I/O-Vorrichtung 625 wird dann mit dem ICH gekoppelt. I/O-Module 631 und 618 sollen auch einen geschichteten Protokollstapel implementieren, um zwischen dem Grafikbeschleuniger 630 und dem Controller-Hub 615 zu kommunizieren. Ähnlich der vorstehenden MCH-Besprechung kann ein Grafik-Controller oder der Grafikbeschleuniger 630 selbst in den Prozessor 605 integriert werden.
  • Unter Bezugnahme auf 7 ist eine Ausführungsform eines geschichteten Protokollstapels dargestellt. Der geschichtete Protokollstapel 700 umfasst eine beliebige Form eines geschichteten Kommunikationsstapels, wie z. B. eines QPI-Stapels (Quick Path Interconnect), eines PCIe-Stapels, eines Hochleistungs-Rechen-Interconnect-Stapels der nächsten Generation oder eines anderen geschichteten Stapels. Obwohl die direkt nachfolgende Besprechung unter Bezugnahme auf 6 bis 9 mit Bezug auf einen PCIe-Stapel vorgenommen wird, können dieselben Konzepte auf andere Interconnect-Stapel angewendet werden. In einer Ausführungsform ist der Protokollstapel 700 ein PCIe-Protokollstapel, der eine Transaktionsschicht 705, eine Verbindungsschicht 710 und eine physische Schicht 720 umfasst. Eine Schnittstelle, wie z. B. die Schnittstellen 617, 618, 621, 622, 626 und 631 in 6, kann als ein Kommunikationsprotokollstapel 700 repräsentiert werden. Die Repräsentation als ein Kommunikationsprotokollstapel kann auch als ein Modul oder eine Schnittstelle, das/die einen Protokollstapel implementiert/umfasst, bezeichnet werden.
  • PCI Express verwendet Pakete, um Informationen zwischen Komponenten zu kommunizieren. Pakete werden in der Transaktionsschicht 705 und der Datenverbindungsschicht 710 gebildet, um die Information von der Sendekomponente zu der Empfangskomponente zu transportieren. Wenn die gesendeten Pakete durch die anderen Schichten fließen, werden sie um zusätzliche Informationen erweitert, die zum Handhaben von Paketen an jenen Schichten erforderlich sind. Auf der Empfangsseite tritt der umgekehrte Prozess auf und Pakete werden von ihrer Repräsentation in der Physischen Schicht 720 in die Repräsentation der Datenverbindungsschicht 710 und schließlich (bei Transaktionsschichtpaketen) in die Form, die durch die Transaktionsschicht 705 der Empfangsvorrichtung verarbeitet werden kann, umgewandelt.
  • Transaktionsschicht
  • In einer Ausführungsform ist die Transaktionsschicht 705 vorgesehen, um eine Schnittstelle zwischen einem Verarbeitungskern einer Vorrichtung und der Interconnect-Architektur, wie z. B. der Datenverbindungsschicht 710 und der physischen Schicht 720, bereitzustellen. In dieser Hinsicht besteht die Hauptaufgabe der Transaktionsschicht 705 im Zusammensetzen und Auseinandernehmen von Paketen (d. h. Transaktionsschichtpaketen oder TLPs). Die Transaktionsschicht 705 handhabt typischerweise eine kreditbasierte Flusssteuerung für TLPs. PCIe implementiert geteilte Transaktionen, d. h. Transaktionen, bei denen Anfrage und Antwort zeitlich getrennt sind, was ermöglicht, dass eine Verbindung einen anderen Verkehr überträgt, während die Zielvorrichtung Daten für die Antwort sammelt.
  • Außerdem verwendet PCIe eine kreditbasierte Flusssteuerung. Bei diesem Schema verkündet eine Vorrichtung einen Anfangskreditbetrag für jeden der Empfangspuffer in der Transaktionsschicht 705. Eine externe Vorrichtung am gegenüberliegenden Ende der Verbindung, wie z. B. der Controller-Hub 615 in 6, zählt die Anzahl von Kreditpunkten, die durch jedes TLP verbraucht werden. Eine Transaktion kann gesendet werden, wenn die Transaktion einen Kreditrahmen nicht übersteigt. Nach dem Empfangen einer Antwort wird ein Kreditbetrag wiederhergestellt. Ein Vorteil eines Kreditschemas besteht darin, dass die Latenz einer Kreditrückgabe die Leistung nicht beeinflusst, vorausgesetzt, dass der Kreditrahmen nicht erreicht wird.
  • In einer Ausführungsform umfassen vier Transaktionsadressräume einen Konfigurationsadressraum, einen Speicheradressraum, einen Eingabe-/Ausgabeadressraum und einen Meldungsadressraum. Speicherraumtransaktionen umfassen eine oder mehrere Leseanforderungen und Schreibanforderungen, um Daten zu/von einer Memory-Mapped-Stelle zu übertragen. In einer Ausführungsform sind Speicherraumtransaktionen in der Lage, zwei verschiedene Adressformate, z. B. ein kurzes Adressformat, wie z. B. eine 32-Bit Adresse, oder ein langes Adressformat, wie z. B. eine 64-Bit Adresse, zu verwenden. Konfigurationsraumtransaktionen werden verwendet, um auf den Konfigurationsraum der PCIe-Vorrichtungen zuzugreifen. Transaktionen in den Konfigurationsraum umfassen Leseanforderungen und Schreibanforderungen. Meldungsraumtransaktionen (oder einfach Meldungen) sind definiert, um In-Band-Kommunikation zwischen PCIe-Agenten zu unterstützen.
  • Daher setzt die Transaktionsschicht 705 in einer Ausführungsform Paketheader/-Nutzlast 706 zusammen. Das Format für gegenwärtige Paketheader/-Nutzlasten kann in der PCIe-Spezifikation auf der PCIe-Spezifikationswebsite ausfindig gemacht werden. Wie vorstehend besprochen, ist in einer Ausführungsform der Paketheader mit Konfigurationsbefehlen konfiguriert, so dass die Daten innerhalb des Pakets nicht ausgerichtet sind und an der I/O-Schnittstelle aufgefüllt werden.
  • Unter schneller Bezugnahme auf 8 ist eine Ausführungsform eines PCIe-Transaktionsdeskriptors dargestellt. In einer Ausführungsform bildet der Transaktionsdeskriptor 800 einen Mechanismus zum Mitführen von Transaktionsinformationen. In dieser Hinsicht unterstützt der Transaktionsdeskriptor 800 eine Identifikation von Transaktionen in einem System. Andere potenzielle Verwendungen umfassen Rückverfolgungsmodifikationen von Standardtransaktionsordnungen und eine Zuordnung von Transaktionen zu Kanälen.
  • Der Transaktionsdeskriptor 800 umfasst ein globales Kennungsfeld 802, ein Attributfeld 804 und ein Kanalkennungsfeld 806. In dem dargestellten Beispiel ist das globale Kennungsfeld 802 derart gezeigt, dass es ein lokales Transaktionskennungsfeld 808 und ein Quellenkennungsfeld 810 umfasst. In einer Ausführungsform ist die globale Transaktionskennung 802 für alle ausstehenden Anfragen eindeutig.
  • Gemäß einer Implementierung ist das lokale Transaktionskennungsfeld 808 ein durch einen anfordernden Agenten erzeugtes Feld und es ist für alle ausstehenden Anfragen, die für diesen anfordernden Agenten beendet werden müssen, eindeutig. Außerdem identifiziert in diesem Beispiel die Quellenkennung 810 eindeutig den anfordernden Agenten innerhalb einer PCIe-Hierarchie. Dementsprechend stellt das lokale Transaktionskennungsfeld 808 zusammen mit der Quellen-ID 810 eine globale Identifikation einer Transaktion innerhalb einer Hierarchiedomäne bereit.
  • Das Attributfeld 804 spezifiziert Charakteristika und Beziehungen der Transaktion. In dieser Hinsicht wird das Attributfeld 804 potentiell verwendet, um zusätzliche Informationen bereitzustellen, die Modifikation der Standardhandhabung von Transaktionen ermöglichen. In einer Ausführungsform umfasst das Attributfeld 804 ein Prioritätsfeld 812, ein reserviertes Feld 814, ein Ordnungsfeld 816 und ein No-Snoop-Feld 818. Hierbei kann das Prioritätsunterfeld 812 durch einen Initiator modifiziert werden, um der Transaktion eine Priorität zuzuordnen. Das reservierte Attributfeld 814 ist für die Zukunft oder für eine Anbieter-definierte Verwendung reserviert. Mögliche Verwendungsmodelle, die Prioritäts- oder Sicherheitsattribute verwenden, können unter Verwendung des reservierten Attributfeldes implementiert werden.
  • In diesem Beispiel wird das Ordnungsattributfeld 816 verwendet, um fakultative, die Art der Ordnung übermittelnde Informationen zu liefern, die Standardordnungsregeln modifizieren können. Gemäß einem Implementierungsbeispiel bezeichnet ein Ordnungsattribut „0”, dass Standardordnungsregeln anzuwenden sind, wobei ein Ordnungsattribut „1” eine gelockerte Ordnung bezeichnet, wobei Schreibvorgänge andere Schreibvorgänge in der gleichen Richtung passieren können und Lesevorgangsbeendigungen Schreibvorgänge in der gleichen Richtung passieren können. Das Snoop-Attributfeld 818 wird verwendet, um zu bestimmen, ob Transaktionen überwacht (snooped) werden. Wie dargestellt, identifiziert das Kanal-ID-Feld 806 einen Kanal, mit dem eine Transaktion verknüpft ist.
  • Verbindungsschicht
  • Die Verbindungsschicht 710, die auch als Datenverbindungsschicht 710 bezeichnet wird, agiert als eine Zwischenstufe zwischen der Transaktionsschicht 705 und der physischen Schicht 720. In einer Ausführungsform besteht eine Zuständigkeit der Datenverbindungsschicht 710 darin, einen zuverlässigen Mechanismus zum Austauschen von Transaktionsschichtpaketen (TLPs) zwischen zwei Komponenten eine Verbindung bereitzustellen. Eine Seite der Datenverbindungsschicht 710 akzeptiert TLPs, die von der Transaktionsschicht 705 zusammengesetzt wurden, wendet eine Paketsequenzkennung 711, d. h. eine Kennungsnummer oder Paketnummer, an, berechnet und wendet einen Fehlererkennungscode, d. h. CRC 712, an und gibt die modifizierten TLPs an die physische Schicht 720 zur Übertragung über eine physische an eine externe Vorrichtung ab.
  • Physische Schicht
  • In einer Ausführungsform umfasst die physische Schicht 720 einen logischen Unterblock 721 und einen elektrischen Unterblock 722, um ein Paket an eine externe Vorrichtung physisch zu senden. Hierbei ist der logische Unterblock 721 für die „digitalen” Funktionen der physischen Schicht 721 zuständig. In dieser Hinsicht umfasst der logische Unterblock einen Sendebereich zum Vorbereiten einer ausgehenden Information zur Versendung durch den physischen Unterblock 722 und einen Empfangsbereich zum Identifizieren und Vorbereiten einer empfangenen Information, bevor sie an die Verbindungsschicht 710 übermittelt wird.
  • Der physische Block 722 umfasst einen Sender und einen Empfänger. Der Sender wird von dem logischen Unterblock 721 mit Symbolen versorgt, die der Sender serialisiert und an eine externe Vorrichtung sendet. Der Empfänger wird von einer externen Vorrichtung mit serialisierten Symbolen versorgt und wandelt die empfangenen Signale in einen Bitstrom um. Der Bitstrom wird deserialisiert und dem logischen Unterblock 721 zugeführt. In einer Ausführungsform wird ein 8b/10b-Sendecode eingesetzt, bei dem Zehn-Bit-Symbole gesendet/empfangen werden. Hierbei werden spezielle Symbole verwendet, um ein Paket mit Rahmen 723 einzurahmen. Außerdem liefert der Empfänger in einem Beispiel ebenfalls einen Symboltakt, der aus dem eintreffenden seriellen Strom ermittelt wird.
  • Wie vorstehend angegeben, ist ein geschichteter Protokollstapel, obwohl die Transaktionsschicht 705, die Verbindungsschicht 710 und die physische Schicht 720 unter Bezugnahme auf eine konkrete Ausführungsform eines PCIe-Protokollstapels besprochen wurden, nicht derart beschränkt. Vielmehr kann ein beliebiges geschichtetes Protokoll aufgenommen/implementiert werden. Zum Beispiel umfasst ein Anschluss/eine Schnittstelle, der/die als ein geschichtetes Protokoll repräsentiert ist: (1) eine erste Schicht zum Zusammensetzen von Paketen, d. h. eine Transaktionsschicht; eine zweite Schicht zum Sequenzieren von Paketen, d. h. eine Verbindungsschicht; und eine dritte Schicht zum Senden der Pakete, d. h. eine physische Schicht. Als ein konkretes Beispiel wird ein geschichtetes CSI-Protokoll (Common Standard Interface) verwendet.
  • Unter nachstehender Bezugnahme auf 9 ist eine Ausführungsform eines seriellen PCIe-Punkt-zu-Punkt-Gewebes dargestellt. Obwohl eine Ausführungsform einer seriellen PCIe-Punkt-zu-Punkt-Verbindung dargestellt ist, ist eine serielle Punkt-zu-Punkt-Verbindung nicht derart beschränkt, da sie einen beliebigen Übertragungspfad zum Übertragen von seriellen Daten umfasst. In der dargestellten Ausführungsform umfasst eine grundlegende PCIe-Verbindung zwei differenziell betriebene Niederspannungs-Signalpaare: ein Sendepaar 906/911 und ein Empfangspaar 912/907. Dementsprechend umfasst eine Vorrichtung 905 eine Sendelogik 906 zum Senden von Daten an eine Vorrichtung 910, und eine Empfangslogik 907 zum Empfangen von Daten von der Vorrichtung 910. Mit anderen Worten sind zwei Sendepfade, d. h. Pfade 916 und 917, und zwei Empfangspfade, d. h. Pfade 918 und 919, in einer PCIe-Verbindung aufgenommen.
  • Ein Sendepfad bezieht sich auf einen beliebigen Pfad zum Senden von Daten, wie z. B. eine Sendeleitung, eine Kupferleitung, eine optische Leitung, einen drahtlosen Kommunikationskanal, eine Infrarot-Kommunikationsverbindung oder einen anderen Kommunikationspfad. Eine Verbindung zwischen zwei Vorrichtungen, wie z. B. der Vorrichtung 905 und der Vorrichtung 910, wird als eine Verbindung, wie z. B. die Verbindung 415, bezeichnet. Eine Verbindung kann eine Bahn unterstützen – jede Bahn repräsentiert einen Satz von differenziellen Signalpaaren (ein Paar zum Senden, ein Paar zum Empfangen). Um Bandbreite zu skalieren, kann eine Verbindung mehrere durch xN bezeichnete Bahnen sammeln, wobei N eine beliebige unterstützte Verbindungsbreite ist wie z. B. 1, 2, 4, 8, 12, 16, 32, 64 oder breiter.
  • Ein differenzielles Paar bezieht sich auf zwei Übertragungspfade, wie z. B. die Leitungen 416 und 417, um differenzielle Signale zu senden. Wenn zum Beispiel die Leitung 416 von einem niedrigen Spannungspegel zu einem hohen Spannungspegel umschaltet, d. h. eine ansteigende Flanke, geht die Leitung 417 von einem hohen logischen Pegel zu einem niedrigen logischen Pegel über, d. h. eine fallende Flanke. Differenzielle Signale weisen potenziell bessere elektrische Charakteristika auf, wie z. B. bessere Signalintegrität, d. h., Kreuzkopplung, Spannungsüberhöhung/-unterschreitung, Schwingungen usw. Dies erlaubt ein besseres Zeitfenster, das schnellere Sendefrequenzen ermöglicht.
  • Eine Ausführungsform ist eine Implementierung oder ein Beispiel. Die Bezugnahme auf „eine Ausführungsform”, „einige Ausführungsformen”, „verschiedene Ausführungsformen” oder „andere Ausführungsformen” in der Beschreibung bedeutet, dass ein bestimmtes Merkmal, eine bestimmte Struktur oder Charakteristik, das/die im Zusammenhang mit den Ausführungsformen beschrieben wird, in mindestens einigen Ausführungsformen, aber nicht notwendigerweise allen Ausführungsformen der vorliegenden Techniken aufgenommen ist. Die verschiedenen Aufführungen von „eine Ausführungsform” oder „einige Ausführungsformen” beziehen sich nicht notwendigerweise auf dieselben Ausführungsformen.
  • Nicht alle Komponenten, Merkmale, Strukturen, Charakteristiken usw., die hier beschrieben und dargestellt sind, müssen in einer bestimmten Ausführungsform oder Ausführungsformen aufgenommen sein. Wenn die Beschreibung einer Komponente, eines Merkmals, einer Struktur oder einer Charakteristik aussagt, dass sie/es aufgenommen sein „kann” oder „könnte”, dann ist es zum Beispiel nicht erforderlich, dass diese bestimmte Komponente, dieses bestimmte Merkmal, diese bestimmte Struktur oder Charakteristik enthalten ist. Wenn in der Beschreibung oder den Ansprüchen auf „ein” Element Bezug genommen wird, bedeutet dies nicht, dass es nur eines von diesem Element gibt. Wenn die Beschreibung oder die Ansprüche auf „ein zusätzliches” Element Bezug nehmen, schließt das nicht aus, dass es mehr als eines von dem zusätzlichen Element gibt.
  • Es ist zu beachten, dass, obwohl einige Ausführungsformen unter Bezugnahme auf bestimmte Implementierungen beschrieben wurden, andere Implementierungen gemäß einigen Ausführungsformen möglich sind. Außerdem müssen die Anordnung und/oder Reihenfolge von Schaltungselementen oder anderen Merkmalen, die in den Zeichnungen gezeigt und/oder hier beschrieben sind, nicht auf die bestimmte gezeigte und beschriebene Weise angeordnet sein. Viele andere Anordnungen sind gemäß einigen Ausführungsformen möglich.
  • Bei jedem in einer Figur gezeigten System können die Elemente in einigen Fällen jeweils dieselbe Bezugszeichen oder ein unterschiedliches Bezugszeichen aufweisen, um anzudeuten, dass die repräsentierten Elemente unterschiedlich und/oder ähnlich sein könnten. Ein Element kann jedoch flexibel genug sein, um unterschiedliche Implementierungen aufzuweisen und mit einigen oder allen hier dargestellten oder beschriebenen Systemen zu funktionieren. Die verschiedenen in den Figuren dargestellten Elemente können dieselben Elemente sein oder sie können unterschiedlich sein. Welches als ein erstes Element bezeichnet wird und welches als ein zweites Element, ist willkürlich.
  • Es versteht sich, dass genaue Angaben in den vorstehend erwähnten Beispielen an beliebigen Stellen in einer oder mehreren Ausführungsformen verwendet werden können. Zum Beispiel können alle vorstehend beschriebenen fakultativen Merkmale der Rechenvorrichtung auch in Bezug auf jedes der hier beschriebenen Verfahren oder auf das computerlesbare Medium implementiert werden. Obwohl hier Ablaufdiagramme und/oder Zustandsdiagramme verwendet worden sein können, um Ausführungsformen zu beschreiben, sind außerdem die Techniken nicht auf diese Diagramme oder auf entsprechende Beschreibungen begrenzt. Zum Beispiel braucht sich der Ablauf nicht durch jeden gezeigten Kasten oder Zustand oder in genau derselben Reihenfolge wie hier gezeigt und beschrieben zu bewegen.
  • Die vorliegenden Techniken sind nicht auf die bestimmten, hier aufgelisteten Einzelheiten beschränkt. Für Fachleute, die diese Offenlegung lesen, ist es in der Tat offensichtlich, dass viele weitere Abwandlungen der vorstehenden Beschreibung und Zeichnungen im Rahmen des Umfangs der vorliegenden Techniken vorgenommen werden können. Dementsprechend sind es die nachfolgenden Ansprüche und alle Änderungen an ihnen, die den Umfang der vorliegenden Techniken definieren.

Claims (25)

  1. Verfahren zum Verarbeiten von nicht ausgerichteten Daten in einem Rechensystem, umfassend: Empfangen von Daten von einer Eingabe-/Ausgabevorrichtung (I/O-Vorrichtung) über eine I/O-Schnittstelle, und Auffüllen der Daten durch Hinzufügen von Werten zu den Daten an der I/O-Schnittstelle, wenn die Daten nicht ausgerichtet sind, so dass ein Verbraucher der Daten, der mit der I/O-Vorrichtung assoziiert ist, die hinzugefügten Werte ignoriert.
  2. Verfahren nach Anspruch 1, wobei das Auffüllen durchgeführt wird, ohne dass eine Read-Modify-Write-Operation für die nicht ausgerichteten Daten durchgeführt wird.
  3. Verfahren nach Anspruch 1, wobei die Daten an der I/O-Schnittstelle in einem Paket, das einen Header umfasst, empfangen werden, wobei das Verfahren umfasst: Anzeigen in dem Header, dass nicht ausgerichtete Daten an der I/O-Schnittstelle aufgefüllt werden können, wobei das Auffüllen als Antwort auf die Anzeige im Header durchgeführt wird.
  4. Verfahren nach Anspruch 3, wobei der Paketheader an der I/O-Vorrichtung konfiguriert wird, um anzuzeigen, dass nicht ausgerichtete Daten aufgefüllt werden können.
  5. Verfahren nach Anspruch 1, wobei der Verbraucher die hinzugefügten Werte auf der Grundlage eines vordefinierten Vertrags zwischen dem Verbraucher und der I/O-Schnittstelle ignoriert.
  6. Verfahren nach Anspruch 1, das ein Bestimmen von gültigen Bytes der empfangenen Daten auf der Grundlage eines Längenfeldes in den Daten umfasst.
  7. Verfahren nach Anspruch 1, wobei der Cache mit einer Ausrichtungsgranularität assoziiert ist, wobei die Ausrichtungsgranularität umfasst: eine Cache-Zeilengrenzen-Granularität, eine Seitengrenzen-Granularität, eine konfigurierbare Granularität, oder eine beliebige Kombination davon.
  8. System, das eine Logik und einen zusammengestellten Code umfasst, der bei seiner Ausführung die Logik zum Folgenden veranlasst: Empfangen von Daten an einer Eingabe-/Ausgabeschnittstelle (I/O-Schnittstelle) an eine I/O-Vorrichtung, und Auffüllen der Daten durch Werte, die zu den Daten an der I/O-Schnittstelle hinzugefügt werden, wenn die Daten nicht ausgerichtet sind, so dass ein Verbraucher der Daten, der mit der I/O-Vorrichtung assoziiert ist, die hinzugefügten Werte ignoriert.
  9. System nach Anspruch 8, wobei das Auffüllen durchgeführt wird, ohne dass eine Read-Modify-Write-Operation für die nicht ausgerichteten Daten durchgeführt wird.
  10. System nach Anspruch 8, wobei die Daten an der I/O-Schnittstelle in einem Paket, das einen Header umfasst, empfangen werden, wobei das System eine Logik der I/O-Vorrichtung umfasst, die zumindest teilweise eine Hardware-Logik umfasst, wobei die Logik vorgesehen ist, um im Header anzuzeigen, dass nicht ausgerichtete Daten an der I/O-Schnittstelle aufgefüllt werden können, und wobei das Auffüllen als Antwort auf die Anzeige im Header durchgeführt wird.
  11. System nach Anspruch 10, wobei der Paketheader an der I/O-Vorrichtung konfiguriert wird, um anzuzeigen, dass nicht ausgerichtete Daten aufgefüllt werden können.
  12. System nach Anspruch 8, wobei der Verbraucher die hinzugefügten Werte auf der Grundlage eines vordefinierten Vertrags zwischen dem Verbraucher und der I/O-Schnittstelle ignoriert.
  13. System nach Anspruch 8, wobei der Treiber gültige Bytes der empfangenen Daten auf der Grundlage eines Längenfeldes in den Daten bestimmt.
  14. System nach Anspruch 8, wobei der Cache mit einer Ausrichtungsgranularität assoziiert ist, wobei die Ausrichtungsgranularität umfasst: eine Cache-Zeilengrenzen-Granularität, eine Seitengrenzen-Granularität, eine konfigurierbare Granularität, oder eine beliebige Kombination davon.
  15. Vorrichtung, umfassend eine Logik zum: Empfangen von nicht ausgerichteten Daten an einer Eingabe-/Ausgabeschnittstelle (I/O-Schnittstelle) an von einer I/O-Vorrichtung, und Hinzufügen von Werten zu den nicht ausgerichteten Daten an der I/O-Schnittstelle, so dass ein Verbraucher der Daten, der mit der I/O-Vorrichtung assoziiert ist, die hinzugefügten Werte ignoriert.
  16. Vorrichtung nach Anspruch 15, wobei die I/O-Vorrichtung vorgesehen ist, um Daten an die Rechenvorrichtung für eine Verarbeitung zu übertragen.
  17. Vorrichtung nach Anspruch 15, wobei die Werte hinzugefügt werden, ohne dass eine Read-Modify-Write-Operation für die nicht ausgerichteten Daten durchgeführt wird.
  18. Vorrichtung nach Anspruch 15, die eine I/O-Vorrichtungslogik umfasst, welche zumindest teilweise eine Hardwarelogik umfasst, zum: Bereitstellen von Datenpaketen an die I/O-Schnittstelle, und Anzeigen, in einem Header des Datenpakets, von nicht ausgerichteten Daten, die an der I/O-Schnittstelle aufzufüllen sind, wobei die Werte als Antwort auf die Anzeige im Header hinzugefügt werden.
  19. Vorrichtung nach Anspruch 15, wobei der Verbraucher die hinzugefügten Werte auf der Grundlage eines vordefinierten Vertrags zwischen dem Verbraucher und der I/O-Schnittstelle ignoriert.
  20. Vorrichtung nach Anspruch 15, wobei der Treiber gültige Bytes der empfangenen Daten auf der Grundlage eines Längenfeldes in einem Header bestimmt.
  21. Vorrichtung nach Anspruch 15, wobei der Cache mit einer Ausrichtungsgranularität assoziiert ist, wobei die Ausrichtungsgranularität umfasst: eine Cache-Zeilengrenzen-Granularität, eine Seitengrenzen-Granularität, eine konfigurierbare Granularität, oder eine beliebige Kombination davon.
  22. Nichtflüchtiges computerlesbares Medium, das einen Code umfasst, der bei seiner Ausführung eine Verarbeitungsvorrichtung zu einem Verfahren zum Verarbeiten von nicht ausgerichteten Daten in einem Rechensystem veranlasst, umfassend: Empfangen von Daten von einer Eingabe-/Ausgabevorrichtung (I/O-Vorrichtung) über eine I/O-Schnittstelle, und Auffüllen der Daten durch Hinzufügen von Werten zu den Daten an der I/O-Schnittstelle, wenn die Daten nicht ausgerichtet sind, so dass ein Verbraucher der Daten, der mit der I/O-Vorrichtung assoziiert ist, die hinzugefügten Werte ignoriert.
  23. Computerlesbares Medium nach Anspruch 22, wobei das Auffüllen durchgeführt wird, ohne dass eine Read-Modify-Write-Operation für die nicht ausgerichteten Daten durchgeführt wird.
  24. Computerlesbares Medium nach Anspruch 22, wobei die Daten an der I/O-Schnittstelle in einem Paket, das einen Header umfasst, empfangen werden, wobei das Verfahren umfasst: Anzeigen in dem Header, dass nicht ausgerichtete Daten an der I/O-Schnittstelle aufgefüllt werden können, wobei das Auffüllen als Antwort auf die Anzeige im Header durchgeführt wird.
  25. Computerlesbares Medium nach Anspruch 22, wobei der Verbraucher die hinzugefügten Werte auf der Grundlage eines vordefinierten Vertrags zwischen dem Verbraucher und der I/O-Schnittstelle ignoriert.
DE112013007700.0T 2013-12-23 2013-12-23 Eingabe-Ausgabe-Datenausrichtung Pending DE112013007700T5 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2013/077577 WO2015099676A1 (en) 2013-12-23 2013-12-23 Input output data alignment

Publications (1)

Publication Number Publication Date
DE112013007700T5 true DE112013007700T5 (de) 2016-09-08

Family

ID=53479351

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112013007700.0T Pending DE112013007700T5 (de) 2013-12-23 2013-12-23 Eingabe-Ausgabe-Datenausrichtung

Country Status (8)

Country Link
US (1) US20160350250A1 (de)
EP (1) EP3087454A4 (de)
JP (1) JP6273010B2 (de)
KR (1) KR101865261B1 (de)
CN (1) CN105765484B (de)
BR (1) BR112016011256B1 (de)
DE (1) DE112013007700T5 (de)
WO (1) WO2015099676A1 (de)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10437667B2 (en) * 2016-03-29 2019-10-08 International Business Machines Corporation Raid system performance enhancement using compressed data
US9760514B1 (en) * 2016-09-26 2017-09-12 International Business Machines Corporation Multi-packet processing with ordering rule enforcement
US10795836B2 (en) * 2017-04-17 2020-10-06 Microsoft Technology Licensing, Llc Data processing performance enhancement for neural networks using a virtualized data iterator
US10372603B2 (en) * 2017-11-27 2019-08-06 Western Digital Technologies, Inc. Handling of unaligned writes
JP2023027970A (ja) 2021-08-18 2023-03-03 キオクシア株式会社 メモリシステム

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6735685B1 (en) * 1992-09-29 2004-05-11 Seiko Epson Corporation System and method for handling load and/or store operations in a superscalar microprocessor
EP0789870B1 (de) * 1995-09-01 2003-01-15 Philips Electronics North America Corporation Verfahren und vorrichtung für anpassbare operationen durch einen prozessor
EP1182571B1 (de) * 2000-08-21 2011-01-26 Texas Instruments Incorporated Auf gemeinsamem Bit basierte TLB-Operationen
JP2003308206A (ja) * 2002-04-15 2003-10-31 Fujitsu Ltd プロセッサ装置
US7376763B2 (en) 2003-07-17 2008-05-20 International Business Machines Corporation Method for transferring data from a memory subsystem to a network adapter by extending data lengths to improve the memory subsystem and PCI bus efficiency
US7685434B2 (en) * 2004-03-02 2010-03-23 Advanced Micro Devices, Inc. Two parallel engines for high speed transmit IPsec processing
US8190796B2 (en) * 2004-11-02 2012-05-29 Standard Microsystems Corporation Hardware supported peripheral component memory alignment method
US7302525B2 (en) * 2005-02-11 2007-11-27 International Business Machines Corporation Method and apparatus for efficiently accessing both aligned and unaligned data from a memory
US7296108B2 (en) * 2005-05-26 2007-11-13 International Business Machines Corporation Apparatus and method for efficient transmission of unaligned data
US7461214B2 (en) * 2005-11-15 2008-12-02 Agere Systems Inc. Method and system for accessing a single port memory
JP4740766B2 (ja) * 2006-02-27 2011-08-03 富士通株式会社 データ受信装置、データ送受信システム、データ送受信システムの制御方法及びデータ受信装置の制御プログラム
US7681102B2 (en) * 2006-04-03 2010-03-16 Qlogic, Corporation Byte level protection in PCI-Express devices
JP4343923B2 (ja) 2006-06-02 2009-10-14 富士通株式会社 Dma回路およびデータ転送方法
IL187038A0 (en) * 2007-10-30 2008-02-09 Sandisk Il Ltd Secure data processing for unaligned data
US8230125B2 (en) * 2007-10-30 2012-07-24 Mediatek Inc. Methods for reserving index memory space in AVI recording apparatus
US8458677B2 (en) * 2009-08-20 2013-06-04 International Business Machines Corporation Generating code adapted for interlinking legacy scalar code and extended vector code
US20120089765A1 (en) * 2010-10-07 2012-04-12 Huang Shih-Chia Method for performing automatic boundary alignment and related non-volatile memory device
KR101861247B1 (ko) * 2011-04-06 2018-05-28 삼성전자주식회사 메모리 컨트롤러, 이의 데이터 처리 방법, 및 이를 포함하는 메모리 시스템
US9304898B2 (en) * 2011-08-30 2016-04-05 Empire Technology Development Llc Hardware-based array compression
JP5857735B2 (ja) * 2011-12-27 2016-02-10 株式会社リコー 画像処理方法、画像処理装置、及び制御プログラム
JP5939305B2 (ja) * 2012-09-07 2016-06-22 富士通株式会社 情報処理装置,並列計算機システム及び情報処理装置の制御方法

Also Published As

Publication number Publication date
US20160350250A1 (en) 2016-12-01
BR112016011256B1 (pt) 2022-07-05
CN105765484A (zh) 2016-07-13
JP6273010B2 (ja) 2018-01-31
EP3087454A4 (de) 2017-08-02
KR101865261B1 (ko) 2018-06-07
WO2015099676A1 (en) 2015-07-02
EP3087454A1 (de) 2016-11-02
KR20160077110A (ko) 2016-07-01
BR112016011256A2 (de) 2017-08-08
CN105765484B (zh) 2019-04-09
JP2017503237A (ja) 2017-01-26

Similar Documents

Publication Publication Date Title
DE102009021865B4 (de) Bereitstellung eines Präfixes für einen Datenkopf
DE112013005044B4 (de) Verfahren, einrichtung, vorrichtung und system zum ausführen von eingehenden pcie-schreiboperationen in einen speicher und partnereinrichtungen per dualcast
DE60213616T2 (de) Eine allgemeine eingabe-/ausgabearchitektur, protokoll und entsprechende verfahren zur umsetzung der flusssteuerung
DE102019108376A1 (de) Sequenz zur Aushandlung und Aktivierung von Flexbus-Protokollen
DE102018006890A1 (de) Technologien zur Verarbeitung von Netzpaketen durch einen intelligenten Netzwerk-Schnittstellenkontroller
DE112011102896B4 (de) Verwalten der Datenübertragung zwischen Netzwerken mit unterschiedlichen Datenübertragungsprotokollen
DE102018006756A1 (de) Beschleuniger-Fabric
DE112013005090T5 (de) Steuernachrichtenübermittlung in einem mehrfach-Slot-Verbindungsschicht-Flit
DE102018004327A1 (de) Systeme und Verfahren zum Zugreifen auf Massenspeicher als Arbeitsspeicher
DE102019108798A1 (de) Hochbandige verbindungsschicht für kohärente nachrichten
DE202010018100U1 (de) Vorrichtung für ID-basierte Ströme über PCI-Express
DE102020125353A1 (de) Transaktionsschichtpaketformat
DE112008001957B4 (de) Systeme und Verfahren zum Verbessern der Leistungsfähigkeit eines routfähigen Netzwerks
DE102012209011B4 (de) System und Verfahren zur Weiterleitung von Fibre-Channel-Eingangs- und Ausgangsdaten
DE112013007700T5 (de) Eingabe-Ausgabe-Datenausrichtung
DE112017001430T5 (de) In-band-retimer-registerzugriff
DE102018006797A1 (de) Kohärente Speichereinrichtungen über PCIe
DE102015102692A1 (de) Verfahren zum Optimieren von Netzdatenströmen in einem eingeschränkten System
DE112007001135T5 (de) Gemeinschaftliche Nutzung von Daten durch Partitionen in einem partitionierbaren System
DE112016006065T5 (de) Spekulative nummerierung von adressräumen für bus-einrichtungsfunktionen
DE102018006852A1 (de) Verfahren, Vorrichtung und System für eine ThunderBolt-basierte Anzeigetopologie für duale Grafiksysteme
DE112013000808T5 (de) Dekodierdaten zur schnellen Dekodierung von Adressen von PCI-Express-Multifunktionseinheiten
DE102019109119A1 (de) Host-verwalteter kohärenter gerätespeicher
DE112018001088T5 (de) Anwendung von framing-regeln für eine hochgeschwindigkeitsdatenverbindung
DE102015118711A1 (de) Technologien zur Netzwerkpaketcacheverwaltung

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06F0003000000

Ipc: G06F0013380000