DE112017001148T5 - Abflachende portalbrücke . - Google Patents

Abflachende portalbrücke . Download PDF

Info

Publication number
DE112017001148T5
DE112017001148T5 DE112017001148.5T DE112017001148T DE112017001148T5 DE 112017001148 T5 DE112017001148 T5 DE 112017001148T5 DE 112017001148 T DE112017001148 T DE 112017001148T DE 112017001148 T5 DE112017001148 T5 DE 112017001148T5
Authority
DE
Germany
Prior art keywords
fpb
bus
vector
register
bdf
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
DE112017001148.5T
Other languages
English (en)
Inventor
David J. Harriman
Reuven Rozic
Maxim Dan
Prashant Sethi
Robert E. Gough
Shanthanand Kutuva Rabindranath
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 DE112017001148T5 publication Critical patent/DE112017001148T5/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/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4022Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
    • 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/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4027Coupling between buses using bus bridges
    • G06F13/404Coupling between buses using bus bridges with address mapping
    • 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/40Bus structure
    • G06F13/4063Device-to-bus coupling
    • G06F13/4068Electrical coupling
    • 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/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4221Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0024Peripheral component interconnect [PCI]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express

Abstract

Eine abflachende Portalbrücke (FPB) wird bereitgestellt, um das Adressieren gemäß einem ersten Adressiersystem und einem zweiten, alternativen Adressiersystem zu unterstützen. Die FPB umfasst eine Primärseite und eine Sekundärseite, wobei die Primärseite mit einem ersten Satz von Bauteilen verbindet, der gemäß einem ersten Adressiersystem adressiert ist, und die zweite Seite mit einem zweiten Satz von Bauteilen verbindet, der gemäß einem zweiten Adressiersystem adressiert ist. Das erste Adressiersystem verwendet eine einzige Busnummer innerhalb eines Bus-/Bauteil-/Funktion (BDF)-Adressraums für jedes Bauteil in dem ersten Satz von Bauteilen, und das zweite Bus Adressiersystem verwendet eine einzige Bus-Bauteilnummer für jedes Bauteil in dem zweiten Satz von Bauteilen.

Description

  • Diese Anmeldung beansprucht die Priorität der vorläufigen US-Patentanmeldung Nr. 62/303 487 , eingereicht am 4. März 2016, und deren Offenbarung hier in ihrer Gesamtheit aufgenommen wird.
  • TECHNISCHES GEBIET
  • Diese Offenbarung betrifft ein Rechensystem und insbesondere (aber nicht ausschließlich) Adressraumabbildung.
  • STAND DER TECHNIK
  • Peripheriegeräteverbindung (Peripheral Component Interconnect - PCI)-Konfigurationsraum wird von Systemen eingesetzt, die PCI, PCI-X und PCI Express (PCIe) einsetzen, um Konfigurationsaufgaben von Bauteilen, die auf PCI basieren, auszuführen. Auf PCI basierende Bauteile haben einen Adressraum für Bauteilkonfigurationsregister, der Konfigurationsraum genannt wird, und PCI Express führt erweiterten Konfigurationsraum für Bauteile ein. Konfigurationsraumregister werden typischerweise von dem Hostprozessor zu Memory-Mapped Eingangs-/Ausgangsstellen abgebildet. Gerätetreiber, Betriebssysteme und Diagnosesoftware greifen auf den Konfigurationsraum zu und können Informationen zu Konfigurationsraumregistern lesen und schreiben.
  • Eine der Verbesserungen, die der PCI Local Bus gegenüber anderen E/A-Architekturen hatte, war sein Konfigurationsmechanismus. Zusätzlich zu den normalen Memory-Mapped und E/A-Porträumen hat jede Bauteilfunktion auf dem Bus einen Konfigurationsraum, der 256 Byte lang ist, der durch Kennen der Acht-Bit-PCI-Busse-, der Fünf-Bit-Bauteil- und Drei-Bit-Funktionsnummer für das Bauteil (gewöhnlich BDF oder B/D/F als Abkürzung für Bus/Device/Function genannt) adressierbar ist. Das erlaubt bis zu 256 Busse, jeder mit maximal 32 Bauteilen, die jeweils acht Funktionen unterstützen. Eine einzige PCI-Erweiterungskarte kann als ein Bauteil reagieren und mindestens die Funktionsnummer null umsetzen. Die ersten 64 Bytes des Konfigurationsraums sind standardisiert; der Rest sind verfügbare spezifikationsdefinierte Erweiterungen und/oder für verkäuferdefinierte Zwecke bestimmt.
  • Um zu erlauben, dass mehr Teile des Konfigurationsraums standardisiert werden, ohne mit existierenden Nutzungen in Konflikt zu geraten, kann es eine Liste von Fähigkeiten geben, die innerhalb der oberen 192 Bytes des Peripheral Component Interface-Konfigurationsraums definiert sind. Jede Fähigkeit hat ein Byte, das beschreibt, um welche Fähigkeit es sich handelt, und ein Byte um auf die nächste Fähigkeit zu zeigen. Die Anzahl zusätzlicher Bytes hängt von der Capability-ID ab. Falls Fähigkeiten verwendet werden, wird in dem Statusregister ein Bit gesetzt, und ein Pointer zu der ersten in einer verlinkten Liste von Fähigkeiten wird bereitgestellt. Versionen von PCIe wurden mit ähnlichen Merkmalen versehen, darunter ein erweiterter Konfigurationsraum, der die Gesamtgröße des Konfigurationsraums auf 4096 Bytes erweitert, und wie eine erweiterte PCIe-Fähigkeitsstruktur.
  • Figurenliste
    • 1 veranschaulicht eine Ausführungsform eines Computersystems, das eine Verschaltungsarchitektur aufweist.
    • 2 veranschaulicht eine Ausführungsform eines Computersystems, das einen geschichteten Stapel aufweist.
    • 3 veranschaulicht eine Ausführungsform einer Anfrage oder eines Pakets, die/das innerhalb einer Verschaltungsarchitektur erzeugt oder empfangen werden soll.
    • 4 veranschaulicht eine Ausführungsform eines Sender-Empfänger-Paares für eine Verschaltungsarchitektur.
    • 5 veranschaulicht eine Darstellung von Systembussen.
    • 6 veranschaulicht eine Darstellung einer Aufzählung von Busidentifikatoren in einem System.
    • 7A veranschaulicht eine Darstellung eines Systems, das Instanzen einer abflachenden Portalbrücke (FPB) einsetzt.
    • 7B veranschaulicht eine beispielhafte Umsetzung einer FPB.
    • 8 veranschaulicht eine ausführliche Darstellung einer beispielhaften FPB.
    • 9 veranschaulicht beispielhafte Adressen in BDF-Raum und unterstützte Granularität.
    • 10 veranschaulicht das Layout von Adressen in dem Speicheradressraum unter 4 GB, für den der FPB MEM Low Mechanismus gilt, und die Wirkung von Granularität auf diese Adressen.
    • 11 veranschaulicht eine Ausführungsform eines Blockdiagramms für ein Computersystem, das einen Multicore-Prozessor aufweist.
    • 12 veranschaulicht eine andere Ausführungsform eines Blockdiagramms für ein Rechensystem, das einen Prozessor aufweist.
  • AUSFÜHRLICHE BESCHREIBUNG
  • In der folgenden Beschreibung werden zahlreiche spezifische Details dargelegt, wie etwa Beispiele spezifischer Prozessorarten und Systemkonfigurationen, spezifische Hardware-Strukturen, spezifische architekturelle und mikroarchitekturelle Details, spezifische Registerkonfigurationen, spezifische Anweisungsarten, spezifische Systemkomponenten, spezifische Messungen/Höhen, spezifische(r) Prozessor-Pipelinestufen und -betrieb, usw., um ein gründliches Verständnis der vorliegenden Erfindung bereitzustellen. Es wird allerdings für den Fachmann ersichtlich sein, dass diese spezifischen Details nicht eingesetzt werden müssen, um die vorliegende Erfindung auszuüben. In anderen Fällen wurden gut bekannte Komponenten oder Verfahren, wie etwa spezifische und alternative Prozessorarchitekturen, spezifische(r) Logikschaltungen/-code für beschriebene Algorithmen, spezifischer Firmwarecode, spezifischer Verschaltungsbetrieb, spezifische Logikkonfigurationen, spezifische Herstellungstechniken und -materialien, spezifische Compilerimplementierungen, spezifische Ausdrücke von Algorithmen in Code, spezifische Herunterfahr- und Gate-Techniken/-Logik und andere spezifische Betriebsdetails von Computersystemen nicht detailliert beschrieben, um unnötiges Verschleiern der vorliegenden Erfindung zu vermeiden.
  • Obwohl die folgenden Ausführungsformen unter Bezugnahme auf Energieerhaltung und Energieeffizienz in spezifischen integrierten Schaltungen, wie zum Beispiel in Computerplattformen oder Mikroprozessoren, beschrieben sein können, sind andere Ausführungsformen auf andere Arten von integrierten Schaltungen und Logikgeräten anwendbar. Ähnliche Techniken und Lehren von hier beschriebenen Ausführungsformen können auf andere Arten von Schaltungen oder Halbleiterbauelementen angewandt werden, die auch von besserer Energieeffizienz und Energieerhaltung profitieren können. Beispielsweise sind die offenbarten Ausführungsformen nicht auf Desktop-Computersysteme oder Ultrabooks™ beschränkt. Und können auch in anderen Geräten, wie zum Beispiel handgehaltene Vorrichtungen, Tablets, anderen dünnen Notebooks, Ein-Chip-System(SoC) - Geräten und anderen eingebetteten Anwendungen, verwendet werden. Manche Beispiele für handgehaltene Vorrichtungen weisen Mobiltelefone, Internetprotokollvorrichtungen, Digitalkameras, Personal-Digital-Assistants (PDAs) und handgehaltene PCs auf. Eingebettete Anwendungen weisen typischerweise einen Mikrocontroller, einen digitalen Signalprozessor (DSP), ein Ein-Chip-System, Netzwerkcomputer (NetPC), Set-Top-Boxen, Network-Hubs, Wide-Area-Network (WAN)-Schalter oder ein beliebiges anderes System, das die nachfolgend gelehrten Funktionen und Vorgänge ausführen kann, auf. Darüber hinaus sind die hier beschriebenen Einrichtungen, Verfahren und Systeme nicht auf physische Computervorrichtungen beschränkt, sondern können auch Softwareoptimierungen für Energierhaltung und -effizienz betreffen.
  • Mit der Weiterentwicklung von Computersystemen werden die Komponenten darin komplexer. Als Ergebnis davon erfährt die Verschaltungsarchitektur zum Koppeln und Kommunizieren zwischen den Komponenten zunehmende Komplexität, um sicherzustellen, dass Bandbreitenanforderungen für optimalen Komponentenbetrieb erfüllt werden. Ferner verlangen unterschiedliche Marktsegmente unterschiedliche Aspekte von Verschaltungsarchitekturen, um sich für die Marktbedürfnisse zu eignen. Beispielsweise erfordern Server höhere Leistungsfähigkeit, obgleich das mobile Ökosystem manchmal in der Lage ist, eine Gesamtleistungsfähigkeit für Stromeinsparungen zu opfern. Dennoch ist es ein einziger Zweck der meisten Strukturen, höchstmögliche Leistungsfähigkeit mit maximaler Stromeinsparung bereitzustellen. Im Folgenden wird eine Anzahl von Verschaltungen erörtert, die potentiell von Aspekten der hierin beschriebenen Erfindung profitieren würden.
  • Eine Verschaltungsstrukturarchitektur weist die Peripheral-Component-Interconnect(PCI)-Express(PCIe)-Architektur auf. Ein Hauptziel von PCIe ist es, es Komponenten und Geräten verschiedener Hersteller zu ermöglichen, in einer offenen Architektur, die mehrere Marktsegmente umspannt, zu interagieren; Clients (Desktops und Mobile), Server (Standard und Enterprise) sowie Embedded- und Kommunikationsgeräte. PCI Express ist eine universelle Hochleistungs-E/A-Verbindung, die für eine Vielzahl von zukünftigen Computer- und Kommunikationsplattformen definiert ist. Einige PCI-Attribute, wie zum Beispiel das Nutzungsmodell, die Ladespeicherarchitektur und Software-Schnittstellen, wurden durch ihre Überarbeitungen beibehalten, während frühere Parallel-Bus-Implementierungen durch eine hoch skalierbare, vollkommen serielle Schnittstelle ersetzt wurden. Die neueren Versionen von PCI Express nutzen die Vorteile von Fortschritten bei Punkt-zu-Punkt-Verschaltungen, der schalterbasierten Technologie und des paketierten Protokolls, um neue Leistungs- und Merkmalniveaus zu liefern. Energie-Management, Quality-of-Service (QoS), Hot-Plug-/Hot-Swap-Unterstützung, Datenintegrität und Fehlerbehandlung gehören zu den erweiterten Funktionen, die von PCI Express unterstützt werden.
  • Unter Bezugnahme auf 1 ist eine Ausführungsform einer Struktur veranschaulicht, die aus Punkt-zu-Punkt-Verbindungen besteht, die einen Satz von Komponenten verschalten. Ein System 100 weist einen Prozessor 105 und einen Systemspeicher 110 auf, die mit einem Controller-Hub 115 gekoppelt sind. Der Prozessor 105 weist ein beliebiges Verarbeitungselement, wie zum Beispiel einen Mikroprozessor, einen Host-Prozessor, einen eingebetteten Prozessor, einen Co-Prozessor oder anderen Prozessor auf. Der Prozessor 105 ist durch einen Front-Side-Bus (FSB) 106 mit dem Controller-Hub 115 gekoppelt. Bei einer Ausführungsform ist eine FSB 106 eine serielle Punkt-zu-Punkt-Verschaltung, wie unten beschrieben. Bei einer anderen Ausführungsform weist die Verbindung 106 eine serielle, differentielle Verschaltungsarchitektur, die mit unterschiedlichen Verschaltungsstandards übereinstimmt, auf.
  • Der Systemspeicher 110 weist ein beliebiges Speichergerät, wie zum Beispiel Random-Access-Memory (RAM), nichtflüchtigen Speicher (NV-Speicher) oder anderen Speicher, auf den Geräte in dem System 100 zugreifen können, auf. Der Systemspeicher 110 ist durch Speicherschnittstelle 116 mit einem Controller-Hub 115 gekoppelt. Beispiele einer Speicherschnittstelle weisen eine Double-Data-Rate(DDR)-Speicherschnittstelle, eine Dual-Channel-DDR-Speicherschnittstelle und eine Dynamic-RAM (DRAM)-Speicherschnittstelle auf.
  • In einer Ausführungsform ist der Controller-Hub 115 ein Root-Hub, Root Complex oder Root-Controller in einer Peripheral-Component-Interconnect-Express(PCIe oder PCIE) -Verschaltungshierarchie. Beispiele des Controller-Hub 115 weisen einen Chipsatz, einen Memory-Controller-Hub (MCH), eine Northbridge, einen Interconnect-Controller-Hub (ICH), eine Southbridge und einen Root-Controller/-Hub auf. Oft bezieht sich der Begriff Chipsatz auf zwei physisch getrennte Controller-Hubs, das heißt einen Memory-Controller-Hub (MCH), der mit einem Interconnect-Controller-Hub (ICH) gekoppelt ist. Es ist zu beachten, dass aktuelle Systeme oft den in dem Prozessor 105 integrierten MCH aufweisen, während der Controller 115 auf ähnliche Weise wie unten beschrieben mit E/A-Geräten kommunizieren soll. In manchen Ausführungsformen wird Peer-to-Peer-Routing optional durch den Root-Complex 115 unterstützt.
  • Hier ist der Controller-Hub 115 durch serielle Verbindung 119 mit einem Schalter/einer Brücke 120 gekoppelt. Eingabe-/Ausgabemodule 117 und 121, die auch Schnittstellen/Ports 117 und 121 genannt werden können, umfassen/implementieren einen geschichteten Protokollstapel, um Kommunikation zwischen dem Controller-Hub 115 und dem Schalter 120 bereitzustellen. In einer Ausführungsform können mehrere Geräte mit dem Schalter 120 gekoppelt sein.
  • Der Schalter/die Brücke 120 routet Pakete/Nachrichten von dem Gerät 125 stromaufwärts, das heißt eine Hierarchie in Richtung eines Root-Complex aufwärts zum Controller-Hub 115 und stromabwärts, das heißt eine Hierarchie nach unten weg von einem Root-Controller, von dem Prozessor 105 oder Systemspeicher 110 zu einem Gerät 125. Der Schalter 120 wird in einer Ausführungsform eine logische Anordnung mehrerer virtueller PCIzu-PCI-Brückengeräten genannt. Das Gerät 125 weist ein beliebiges internes oder externes Gerät oder eine Komponente auf, die mit einem elektronischen System, wie zum Beispiel einem E/A-Gerät, einem Network-Interface-Controller (NIC), einer Erweiterungskarte, einem Audioprozessor, einem Netzwerkprozessor, einer Festplatte, einem Speichergerät, einer CD/DVD-ROM, einem Monitor, einem Drucker, einer Maus, einer Tastatur, einem Router, einem tragbaren Speichergerät, einem Firewire-Gerät, einem Universal-Serial-Bus(USB) -Gerät, einem Scanner und anderen Eingabe-/Ausgabegeräten, gekoppelt werden sollen. Oft wird in der PCIe-Umgangssprache, wie zum Beispiel Gerät, ein Endpunkt genannt. Obwohl nicht speziell gezeigt, kann das Gerät 125 eine PCIe-zu-PCI/PCI-X Brücke aufweisen, um etablierte PCI-Geräte oder PCI-Geräte anderer Ausführung zu unterstützen. Endpunktgeräte in PCIe werden häufig als etablierte PCIe- oder Root-Complex-Integrated-Endpunkte klassifiziert.
  • Ein Grafikbeschleuniger 130 ist über serielle Verbindung 132 auch mit dem Controller-Hub 115 gekoppelt. In einer Ausführungsform ist der Grafikbeschleuniger 130 mit einem MCH gekoppelt, der mit einem ICH gekoppelt ist. Der Schalter 120 und dementsprechend das E/A-Gerät 125 ist dann mit dem ICH gekoppelt. E/A-Module 131 und 118 sollen auch einen geschichteten Protokollstapel implementieren, um zwischen dem Grafikbeschleuniger 130 und dem Controller-Hub 115 zu kommunizieren. Ähnlich wie bei der MCH-Diskussion oben kann ein Grafik-Controller oder der Grafikbeschleuniger 130 selbst in den Prozessor 105 integriert sein.
  • Unter Bezugnahme auf 2 ist eine Ausführungsform eines geschichteten Protokollstapels veranschaulicht. Ein geschichteter Protokollstapel 200 enthält jegliche Form eines geschichteten Kommunikationsstapels, wie zum Beispiel einen Quick-Path-Interconnect (QPI)-Stapel, einen PCIe-Stapel, einen Hochleistungs-Computerverbindungsstapel der nächsten Generation oder einen anderen Schichtstapel. Obwohl die Diskussion unmittelbar unten unter Bezugnahme auf die 1 bis 4 in Bezug zu einem PCIe-Stapel steht, sind die gleichen Konzepte auf andere Verschaltungsstapel anwendbar. In einer Ausführungsform ist der Protokollstapel 200 ein PCIe-Protokollstapel, der eine Transaktionsschicht 205, eine Verbindungsschicht 210 und eine physische Schicht 220 aufweist. Eine Schnittstelle, wie zum Beispiel Schnittstellen 117, 118, 121, 122, 126 und 131 in 1, kann als Kommunikationsprotokollstapel 200 dargestellt werden. Die Darstellung als ein Kommunikationsprotokollstapel kann auch ein Modul oder eine Schnittstelle genannt werden, die einen Protokollstapel implementiert/aufweist.
  • PCI Express verwendet Pakete, um Informationen zwischen Komponenten zu kommunizieren. Pakete werden in der Transaktionsschicht 205 und der Datenverbindungsschicht 210 gebildet, um die Informationen von der übertragenden Komponente zu der empfangenden Komponente zu tragen. Wenn die übertragenen Pakete durch die anderen Schichten fließen, werden sie mit zusätzlichen Informationen, die notwendig sind, um Pakete in diesen Schichten zu handhaben, erweitert; Auf der empfangenden Seite tritt der umgekehrte Prozess auf, und Pakete werden von ihrer Darstellung der physischen Schicht 220 in die Darstellung der Datenverbindungsschicht 210 und schließlich (für Transaktionsschichtpakete) in die Form umgewandelt, die von der Transaktionsschicht 205 des empfangenden Geräts verarbeitet werden kann.
  • Transaktionsschicht
  • Bei einer Ausführungsform soll die Transaktionsschicht 205 eine Schnittstelle zwischen einem Verarbeitungskern eines Bauteils und der Verschaltungsarchitektur, wie zum Beispiel der Datenverbindungsschicht 210 und der physischen Schicht 220, bereitstellen. In diesem Hinblick sind eine Hauptverantwortung der Transaktionsschicht 205 das Assemblieren und Deassemblieren von Paketen (das heißt Transaktionsschichtpakete oder TLPs). Die Transaktionsschicht 205 verwaltet typischerweise auf Kredit basierende Flusssteuerung für TLPs. Eine PCIe setzt Spalttransaktionen um, das heißt Transaktionen mit Anforderung und Antwort getrennt durch Zeit, was es einem Link erlaubt, anderen Verkehr zu tragen, während das Zielbauteil Daten für die Antwort sammelt.
  • Außerdem setzt PCIe Führungssteuerung auf Kreditbasis ein. Bei diesem System sagt ein Bauteil eine anfängliche Kreditmenge für jeden der Empfangspuffer in der Transaktionsschicht 205 an. Eine externes Bauteil an dem entgegengesetzten Ende des Links, wie der Controller-Hub 115 in 1, zählt die Anzahl von Krediten, die von jedem TLP verbraucht werden. Eine Transaktion kann übertragen werden, falls die Transaktion ein Kreditlimit nicht überschreitet. Beim Empfangen einer Antwort wird eine Kreditmenge wiederhergestellt. Ein Vorteil des Kreditsystems ist, dass sich die Latenz der Kreditrückkehr nicht auf die Leistung auswirkt, vorausgesetzt, dass das Kreditlimit nicht erreicht wird.
  • Bei einer Ausführungsform weisen vier Transaktionsadressräume einen Konfigurationsadressraum, einen Speicheradressraum, einen Eingabe-/Ausgabe-Adressraum und einen Nachrichtadressraum auf. Speicherraumtransaktionen weisen eine oder mehr Lese- und Schreibanfragen zum Übertragen von Daten zu/von einer Memory-Mapped-Lage auf. Bei einer Ausführungsform sind die Speicherraumtransaktionen fähig, zwei unterschiedliche Adressformate zu verwenden, zum Beispiel ein kurzes Adressformat, wie eine 32-Bit-Adresse, oder ein langes Adressformat, wie eine 64-Bit-Adresse. Konfigurationsraumtransaktionen werden verwendet, um auf Konfigurationsraum der PCIe-Bauteile zuzugreifen. Transaktionen zu dem Konfigurationsraum weisen Lese- und Schreibanfragen auf. Nachrichtentransaktionen werden definiert, um In-Band-Kommunikation zwischen PCIe-Agenten zu unterstützen.
  • Bei einer Ausführungsform assembliert daher die Transaktionsschicht 205 Paketheader/Nutzlast 156. Das Format für aktuelle Paketheader/Nutzlasten findet man in der PCIe-Spezifikation auf der PCIe-Spezifikations-Website.
  • Unter rascher Bezugnahme auf 3 ist eine Ausführungsform eines PCIe-Transaktionsdeskriptors veranschaulicht. Bei einer Ausführungsform ist der Transaktionsdeskriptor 300 ein Mechanismus zum Tragen von Transaktionsinformationen. In diesem Hinblick unterstützt der Transaktionsdeskriptor 300 die Identifikation von Transaktionen in einem System. Andere potentielle Nutzungen weisen das Überwachen von Änderungen von Standardtransaktionsordnen und Assoziationen von Transaktionen mit Kanälen auf.
  • Der Transaktionsdeskriptor 300 weist ein globales Identifikatorfeld 302, ein Attributefeld 304 und ein Kanalidentifikatorfeld 306 auf. Bei dem veranschaulichten Beispiel ist ein globales Identifikatorfeld 302 abgebildet, das ein lokales Transaktionsidentifikatorfeld 308 und ein Source-Identifikatorfeld 310 umfasst. Bei einer Ausführungsform ist der globale Transaktionsidentifikator 302 für alle ausstehenden Anfragen derselbe.
  • Gemäß einer Umsetzung ist das lokale Transaktionsidentifikatorfeld 308 ein Feld, das von einem anfragenden Agenten erzeugt wird, und es steht für alle ausstehenden Anfragen, die einen Abschluss für diesen anfragenden Agenten erfordern. Des Weiteren identifiziert bei diesem Beispiel der Source-Identifikator 310 den anfragenden Agenten innerhalb einer PCIe-Hierarchie eindeutig. Gemeinsam mit der Source-ID 310 stellt das lokale Transaktionsidentifikatorfeld 308 folglich globale Identifikation einer Transaktion innerhalb einer Hierarchie-Domäne bereit.
  • Das Attributefeld 304 spezifiziert Merkmale und Beziehungen der Transaktion. In diesem Hinblick wird das Attributefeld 304 potenziell verwendet, um zusätzliche Informationen bereitzustellen, die eine Änderung der Standardverarbeitung von Transaktionen erlaubt. Bei einer Ausführungsform weist das Attributefeld 304 ein Prioritätsfeld 312, ein reserviertes Feld 314, ein Ordnungsfeld 316 und ein No-Snoop-Feld 318 auf. Hier kann das Prioritätssubfeld 312 durch einen Initiator geändert werden, um der Transaktion eine Priorität zuzuweisen. Ein reserviertes Attributfeld 314 wird für die Zukunft oder für verkäuferdefinierte Nutzung reserviert. Mögliche Nutzungsmodelle, die Prioritäts- oder Sicherheitsattribute verwenden, können unter Verwenden des reservierten Attributfelds umgesetzt werden.
  • Bei diesem Beispiel wird das Ordnen des Attributfelds 316 verwendet, um optionale Informationen zu liefern, die den Ordnungstyp vermitteln, der Standardordnungsregeln modifizieren kann. Gemäß einer beispielhaften Umsetzung bedeutet ein Ordnungsattribut „0“, dass Standardordnungsregeln anzuwenden sind, wobei ein Ordnungsattribut „1“ gelockertes Ordnen bezeichnet, wobei Schreiben Schreiben in dieselbe Richtung weitergeben können und Leseabschlüsse Schreiben in dieselbe Richtung weitergeben können. Das Snoopattributfeld 318 wird eingesetzt, um zu bestimmen, ob Transaktionen gesnoopt werden. Wie gezeigt, identifiziert das Kanal-ID-Feld 306 einen Kanal, mit dem eine Transaktion zusammenhängt.
  • Übertragungsschicht
  • Eine Übertragungsschicht 210, auch Datenübertragungsschicht 210 genannt, wirkt als eine Zwischenstufe zwischen der Transaktionsschicht 205 und der physischen Schicht 220. Bei einer Ausführungsform ist eine Verantwortung der Datenübertragungsschicht 210 das Bereitstellen eines zuverlässigen Mechanismus zum Austauschen von Transaktionsschichtpaketen (TLPs) zwischen zwei Komponenten eines Links. Eine Seite der Datenübertragungsschicht 210 akzeptiert TLPs, die von der Transaktionsschicht 205 assembliert werden, wendet den einen Paketsequenzidentifikator 211 an, das heißt eine Identifikationsnummer oder Paketnummer, berechnet einen Fehlererfassungscode und wendet ihn an, das heißt CRC 212, und unterbreitet die modifizierten TLPs der physischen Schicht 220 für Übertragung über ein physisches zu einem externen Bauteil.
  • Bitübertragungsschicht (physische Schicht)
  • Bei einer Ausführungsform weist die Bitübertragungsschicht 220 einen logischen Subblock 221 und einen elektrischen Subblock 222 auf, um ein Paket physisch zu einem externen Bauteil zu übertragen. Hier ist der logische Subblock 221 für die „digitalen“ Funktionen der Bitübertragungsschicht 221 zuständig. In diesem Hinblick weist ein logischer Subblock einen Übertragungsabschnitt auf, um ausgehende Informationen zur Übertragung durch den physischen Subblock 222 vorzubereiten, und einen Empfängerabschnitt, um empfangene Informationen zu identifizieren und vorzubereiten, bevor sie zu der Übertragungsschicht 210 weitergegeben werden.
  • Der physische Block 222 weist einen Sender und einen Empfänger auf. Der Sender wird von dem logischen Subblock 221 mit Symbolen versorgt, die der Sender serialisiert und auf ein externes Bauteil überträgt. Der Empfänger wird mit serialisierten Symbolen aus einem externen Bauteil versorgt und wandelt die empfangenen Signale in einen Bitstrom um. Der Bitstrom wird de-serialisiert und zu dem logischen Subblock 221 geliefert. Bei einer Ausführungsform wird ein 8b/10b-Übertragungscode eingesetzt, bei dem Zehn-Bit-Symbole übertragen/empfangen werden. Hier werden spezielle Symbole für das Framing eines Pakets mit Frames 223 verwendet. Zusätzlich stellt der Empfänger bei einem Beispiel auch einen Symboltaktgeber bereit, der aus dem eingehenden seriellen Strom zurückgewonnen wird.
  • Wie oben erwähnt, obwohl die Transaktionsschicht 205, die Übertragungsschicht 110 und die Bitübertragungsschicht 220 in Bezug auf eine spezifische Ausführungsform eines PCIe-Protokollstapels besprochen sind, ist ein geschichteter Protokollstapel nicht derart eingeschränkt. Ein beliebiges geschichtetes Protokoll kann nämlich enthalten sein/umgesetzt werden. Als ein Beispiel weist ein Port/eine Schnittstelle, der/die als ein geschichtetes Protokoll dargestellt ist, Folgendes auf: (1) eine erste Schicht zum Assemblieren von Paketen, das heißt eine Transaktionsschicht; eine zweite Schicht zum Sequenzieren von Paketen, das heißt eine Übertragungsschicht, und eine dritte Schicht zum Übertragen der Pakete, das heißt eine Bitübertragungsschicht. Als ein spezifisches Beispiel wird ein geschichtetes Common-Standard-Interface(CSI)-Protokoll verwendet.
  • Nun wird unter Bezugnahme auf 4 eine Ausführungsform einer seriellen Punkt-zu-Punkt-PCIe-Struktur veranschaulicht. Obwohl eine Ausführungsform einer seriellen Punkt-zu-Punkt-PCIe-Verbindung veranschaulicht ist, ist eine serielle Punkt-zu-Punkt-Verbindung nicht darauf beschränkt, da sie einen beliebigen Übertragungspfad zum Übertragen serieller Daten aufweist. Bei einer Ausführungsform weist eine grundlegende PCIe-Verbindung zwei differenziell angesteuerte Niederspannungs-Signalpaare auf: ein Übertragungspaar 406/411 und ein Empfangspaar 412/407. Das Bauteil 405 weist folglich Übertragungslogik 406 auf, um Daten zu einem Bauteil 410 zu übertragen, und Empfangslogik 407, um Daten von dem Bauteil 410 zu empfangen. Mit anderen Worten sind in einer PCIe-Verbindung zwei übertragende Pfade, das heißt die Pfade 416 und 417, und zwei empfangende Pfade, das heißt die Pfade 418 und 419, enthalten.
  • Ein Übertragungspfad verweist auf einen beliebigen Pfad zum Übertragen von Daten, wie eine Übertragungsleitung, eine Kupferleitung, eine optische Leitung, einen drahtlosen Kommunikationskanal, eine Infrarot-Kommunikationsverbindung, oder einen anderen Kommunikationspfad. Eine Verbindung zwischen zwei Bauteilen, wie dem Bauteil 405 und dem Bauteil 410, wird ein Link, wie ein Link 415, genannt. Ein Link kann eine Bahn unterstützen, wobei jede Bahn einen Satz von Differenzialsignalpaaren (ein Paar zur Übertragung, ein Paar zum Empfang) darstellt. Zum Skalieren der Bandbreite kann ein Link mehrere Bahnen aggregieren, die mit xN benannt sind, wobei N eine beliebige unterstützte Linkbreite ist, wie 1, 2, 4, 8, 12, 16, 32, 64 oder breiter.
  • Ein Differenzialpaar betrifft zwei Übertragungspfade, wie Leitungen 416 und 417, um differenzielle Signale zu übertragen. Als ein Beispiel, wenn die Leitung 416 von einem Niederspannungspegel zu einem Hochspannungspegel übergeht, das heißt eine steigende Flanke, steuert die Leitung 417 von einem hohen Logikpegel zu einem niedrigen Logikpegel, das heißt einer sinkenden Flanke. Differenzsignale legen potenziell bessere elektrische Merkmale an den Tag, wie bessere Signalintegrität, das heißt Kreuzkoppeln, Spannungsüberhöhung/Spannungsunterschreitung; Ringing usw. Das erlaubt ein besseres Timingfenster, was schnellere Übertragungsfrequenzen ermöglicht.
  • Neue und zunehmende Nutzungsmodelle, wie Speicheranordnungen auf PCIe-Basis und Thunderbolt, ergeben eine signifikante Erhöhung der PCIe-Hierarchietiefe und - breite. Die PCI-Express(PCIe)-Architektur basierte auf PCI, das einen „Konfigurationsraum“ definiert, in dem Systemfirmware und/oder Software Funktionen entdecken und sie aktivieren/deaktivieren/steuern. Das Adressieren innerhalb dieses Raumes basiert auf einer 16-Bit-Adresse (gewöhnlich die „BDF“ oder „Bus Device Function Number genannt), die aus einer 8-Bit-Bus-Nummer, einer 5-Bit-Bauteilnummer und einer 3-Bit-Funktionsnummer besteht. In PCIe kann die Busnummer auf einen logischen statt einen physischen Bus verweisen. Zusätzlich zu dem Verwenden zum Adressieren von PCI-Funktionen in dem Konfigurationsraum und zum Identifizieren spezifischer Funktionen für Zwecke wie Fehlerberichterstattung und IO-Virtualisierung, kann der Raum als solcher als ein Ressourcentyp angesehen werden, der Zuweisungs- und Managementsystemen ähnlich wie andere Ressourcen unterliegt.
  • PCI erlaubt es Systemen, mehrere, unabhängige BDF-Räume, die „Segmente“ genannt werden, bereitzustellen. Jedes Segment kann bestimmte Ressourcenanforderungen haben, wie einen Mechanismus zum Erzeugen von PCI-/PCIe-Konfigurationsanfragen, darunter der Enhanced Configuration Access Mechanism (ECAM), der in der PCIe-Spezifikation definiert ist. Zusätzlich können Eingangs-/Ausgangs (E/A)-Speichermanagementeinheiten (Input/Output (E/A) Memory Management Units (IOMMUs) (wie Intel VT-d) BDF-Raum als einen Index verwenden, sind eventuell aber nicht konfiguriert, um Segmente direkt zu erfassen. In einigen Fällen werden folglich ein separater ECAM und eine separate IOMMU für jedes Segment, das in einem System definiert ist, dupliziert. 5 veranschaulicht ein Beispiel eines Systems, das mehrere Segmente aufweist (zum Beispiel 505a bis c). Ein Segment ist bei diesem Beispiel zum Beispiel für jeden der drei Schalter 510, 515, 520 definiert, die mit einem Root Complex 525 verbunden sind. Bei diesem Beispiel können eine separate IOMMU und ein separater ECAM (zum Beispiel 530a bis c) an dem Root Complex 525 umgesetzt werden, um jedes der Segmente (zum Beispiel 505a bis c) zu erleichtern. Ferner ist bei diesem Beispiel eine Vielzahl von Endpunkten (EP) mit diversen Bussen in jedem Segment verbunden. In einigen Fällen kann die Konfiguration eines Segments mehrere Busadressen für potentielle Hot-Plug-Ereignisse reservieren, was die Gesamtanzahl der Busadressen, die innerhalb jedes Segments verfügbar ist, einschränkt. Des Weiteren kann die Zuordnung von Busnummern in einem oder mehr der Segmente gemäß einem Algorithmus erfolgen, der sich wenig um dichtes Populieren der Adressen und Ausführen einer kompakten Nutzung des verfügbaren Busadressraums kümmert. Das kann bei einigen Fällen in vergeudetem Konfigurationsadressraum (das heißt BDF) resultieren.
  • Herkömmliche PCIe-Systeme sind konfiguriert, um Adressraum auf eine Art zuzuweisen, dass sie, wenn sie an moderne und neu hervorgehende Nutzungsfälle angewandt werden, dazu tendieren, BDF-Raum und insbesondere Busnummern ineffizient zu nutzen. Obwohl relativ wenige Implementierungen tatsächlich ein einziges System, das alle 64K eindeutiger BDF-Werte (zum Beispiel unter PCIe definiert) verbraucht, involvieren, können tiefe Hierarchien wie die, die zum Beispiel bei tiefen Hierarchien von PCIe-Schaltern auftreten, verfügbare Busnummern sehr schnell aufbrauchen. Außerdem können bei Anwendungen, die Hot-Plugging unterstützen, große Abschnitte des BDF-Raums typischerweise für zukünftigen potentiellen Gebrauch reserviert sein (das heißt, wenn ein zukünftiges Bauteil an das System während des Betriebs angeschlossen wird), indem zusätzliche Schwaden von Busnummern aus dem unmittelbar von einem System nutzbaren Pool entnommen werden. Obwohl Segmentmechanismen zum Bewältigen dieses Problems angewandt werden können, haben die Segmente selbst mäßige Skalierung, weil, wie oben erwähnt, zusätzliche Hardwareressourcen (zum Beispiel IOMMUs) in die CPU, den Platform-Controller-Hub (PCH), das Ein-Chip-System (SoC), Root Complex usw. einzubauen sind, um jedes Segment zu unterstützen. Das Verwenden von Segmenten zum Adressieren tiefer Hierarchien resultiert daher in einem Skalieren des Systems, um Worst-Case-Systemanforderungen zu erfüllen, was typischerweise mehr ist als was für die meisten Systeme erforderlich wäre, was in signifikanter Verschwendung von Plattformressourcen resultiert. Ferner können Segmente schwierig (und in einigen Fällen im Wesentlichen unmöglich) außerhalb eines Root Complex des Systems anzulegen sein.
  • Bei einigen Implementierungen kann ein System bereitgestellt werden, um effizienteren Gebrauch von BDF-Raum zu ermöglichen und wenigstens einige der oben genannten beispielhaften Probleme zu bewältigen. Das kann die Erweiterung von PCIe, Thunderbolt-, Ein-Chip-System-Strukturen (zum Beispiel Intel On-Chip System Fabric (IOSF) sowie andere) und andere Verschaltungen mit sehr großen Topologien erlauben, jedoch nicht, ohne dedizierte Ressourcen in dem Root Complex zu erfordern, wie es der Fall bei Lösungen wäre, die ausschließlich auf Segmente oder andere Alternativen zurückgreifen. 6 veranschaulicht eine beispielhafte Zuweisung von Busnummern zu Bussen innerhalb des Systems gemäß einer beispielhaften PCIe-BDF-Zuweisung. Bei diesem Beispiel wird ein System mit zwei Bauteilen 605, 610 direkt mit einem Root Complex 615 verbunden und zwei schalterbasierte Hierarchien (die den Schaltern 620, 625 entsprechen) werden mit in etwa den dichtest möglichen Busnummerzuweisungen unter Verwenden herkömmlicher BDF-Zuweisung (wie durch Kreisbezeichnungen (zum Beispiel 650a bis d usw.) bezeichnet) durchnummeriert. Bei tiefen Hierarchien können die verfügbaren Busnummern in einem einzigen BDF-Raum schnell aufgebraucht sein. Typischerweise ordnen Systeme der realen Welt Busnummern viel weniger effizient zu, was in dünner (oder „vergeudeter“) Zuordnung des BDF-Raums resultiert.
  • Ein anderes Problem bei Gebrauchsfällen, die Hinzufügen/Entfernen während des Betriebs unterstützen, wie Thunderbolt und, in einigen Fällen, auf PCIe basierende Speicherung, ist, dass die Busnummerzuweisungen in BDF-Raum „ausgeglichen“ werden, um Hardware-Topologieänderungen, die in einem laufenden System auftreten, zu bewältigen. Das Ausgleichen kann jedoch für Systemsoftware sehr schwer auszuführen sein, da in typischen Fällen alle PC-Funktionen dann in einen Ruhezustand in Verbindung mit dem Ausgleichen forciert werden, um es zu erlauben, dass BDF-Raum von dem System neu durchnummeriert wird, worauf das Wiederaktivieren der PCI-Funktionen folgt. Dieser Prozess kann jedoch recht langsam sein und resultiert typischerweise in einem Einfrieren des Systems während Zeitspannen, die relativ lang sein können (zum Beispiel lang genug, um laufende Anwendungen zu stören und für den Endbenutzer sichtbar zu sein). Ein verbessertes System kann auch zum Verkürzen der Zeit, die erforderlich ist, um einen überarbeiteten BDF-Raum anzuwenden, bereitgestellt werden, so dass der Ausgleichsprozess in einer Zeitspanne von Hundertsteln von Millisekunden oder schneller ausgeführt werden kann, ohne die PCI-Funktionen explizit in Ruhezustände zu platzieren. Schließlich können sehr große Systeme oder Systeme mit (geschützten) Mechanismen zum Unterstützen mehrerer Root Complexe definiert werden, um den Gebrauch von Segmenten zu erfordern.
  • Wie oben eingeführt, kann die Flattening Portal Bridge (FPB) ein optionaler Mechanismus sein, der verwendet werden kann, um mindestens einige der oben genannten beispielhaften Probleme zu beheben, darunter das Verbessern der Skalierbarkeit und Laufzeit-Neuzuweisung von Bus-/Bauteil-/Funktions(BDF)- und Memory-Mapped-E/A(MMIO)-Räumen. Das Konzept des „BDF-Raums“ ist mit dem Konfigurationsadressraum verwandt, wird aber verallgemeinert, um anzuerkennen, dass der BDF die Basis für die Requester- und Completer-IDs, das Routen von Abschlüssen ist und als ein wesentliches Element bei mehreren Mechanismen zusätzlich zu dem Routen von Konfigurationsanfragen dienen kann. Für Funktionen, die mit einem stromaufwärtigen Port verbunden sind, kann der Funktionsnummerabschnitt der BDF-Raumadresse (zum Beispiel 3-Bit-Funktionsnummer) durch die Bauweise der stromaufwärtigen Port-Hardware bestimmt werden, während der Bus- und der Bauteilnummerabschnitt durch den stromabwärtigen Port über dem stromaufwärtigen Port bestimmt werden können. Eine beispielhafte FPB kann die existierende Architektur beibehalten, wobei der stromaufwärtige Port das Abbilden von Funktionen innerhalb des 3-Bit-Funktionsnummerabschnitts des BDF bestimmt und nur innerhalb des 13-Bit-Bus-/Bauteilnummerabschnitts arbeitet. In solchen Fällen kann „BD-Raum“ auf den 13-Bit-Bus-/Bauteilnummerabschnitt der BDF verweisen. MMIO kann hier spezifisch auf Speicherlese- und Schreibanfragen verweisen, die durch einen Root-Port, Schalter-Port oder eine logische Brücke durchgegeben werden, wenn die FPB-Fähigkeit zusätzliche Mechanismen bereitstellt, um die Adressdecodierung solcher Anfragen zu bestimmen. Eine Brücke, die die FPB-Fähigkeit umsetzt, kann selbst auch eine FPB genannt werden.
  • 7A ist ein vereinfachtes Blockdiagramm, das das Vorsehen von FPB-Logik an jedem Port eines oder mehrerer Schalter innerhalb eines Systems veranschaulicht. Einige Schalter weisen eventuell keine FPB-Logik auf und unterstützen nur Busnummerierung gemäß herkömmlichen BDF- oder MMIO-Raumzuweisungen. Außerdem können Ports eines Root Complex 705 auch FPB-Logik aufweisen, wie Ports, die konzipiert sind, um potenziell dynamische Fälle von Hot-Plugging zu unterstützen oder unter anderen Beispielen verschiedentliche Architektur anpassungsfähig zu unterstützen (zum Beispiel die, die im Zeitpunkt der Konzeption des Root Complex nicht vordefiniert wird). Ferner können einige Ports des Root Complex 705 FPB-Logik weglassen, wie Ports, die ausgelegt sind, um statische Fälle zu unterstützen, wie Ports, die unter anderen Beispielen mit Endpunkten 710, 715 in dem Beispiel der 7A verbunden sind.
  • FPB-Logik kann an jedem Port, der die FPB-Logik besitzt, aktiviert oder deaktiviert werden. FPB-Logik kann in Hardware, Firmware und/oder Software umgesetzt werden, um die Zuweisung von BDF- oder MMIO-Raum unter Verwenden eines „abgeflachten“ Ansatzes zu unterstützen. Jeder Bus, der Schalter, Endpunkte und den Root Complex verschaltet, kann zum Beispiel eine einzige Busnummer zugewiesen bekommen (zum Beispiel wie oben in Zusammenhang mit 6 besprochen), mit einer Anzahl von Bauteilen, die fähig sind, von einer jeweiligen der 32 möglichen Bauteilnummern unter jeder Busnummer adressiert zu werden, und eine Anzahl möglicher Funktionsnummern, die durch eine jeweilige der 8 möglichen Funktionsnummern unter jeder Bauteilnummer adressiert werden können. Das Abflachen durch FPB kann es mindestens einigen der Busse erlauben, eindeutig von einer Busvorrichtungs(BD)-Nummerkombination adressiert zu werden (statt durch eine einzige Busnummer), so dass die maximale Anzahl eindeutiger potentieller Busadressen von 256 (bei herkömmlicher PCIe-Busnummer-Nummerierung) auf 8192 (bei BD-Bus-Nummerierung) erweitert wird. Bei FPB kann die Busnummer folglich für mehrere unterschiedliche Busse wieder verwendet werden, wenn auch jede Busnummer eine einzige BD-Nummer hat (das heißt, dass der Busnummerabschnitt der BD gleich ist, aber die Bauteilnummer unter dieser Busnummer unterschiedlich ist). Einige Zweige des Systems können herkömmliche Busadressierung (zum Beispiel durch BDF-Busnummer) einsetzen, während andere Zweige FPB-basierte Adressierung einsetzen. Es kann nämlich ein Mix aus Busnummerierungssystemen eingesetzt werden, mit dem Resultat, dass verbleibende eindeutige Busadressen innerhalb des Systems eingesetzt werden.
  • Unter Bezugnahme auf 7B veranschaulicht ein vereinfachtes Blockdiagramm eine Architektur hohen Niveaus einer beispielhaften Implementierung eines FPB-Logikblocks (wie an Ports, die in dem Beispiel der 7A gezeigt sind, veranschaulicht). Eine Brückenfunktion vom Typ 1 kann durch jedes FPB-Modul bereitgestellt werden. Die Brückenfunktion kann sowohl etablierte Paketdecodier-/Routingmechanismen (zum Beispiel herkömmliches PCIe-BDF-Decodieren und Routen) als auch FPB-Paketdecodier-/Routingmechanismen unterstützen.
  • FPB ändert die Art, wie BDF-Ressourcen von Schaltern verbraucht werden, um Vergeudung zu verringern, indem die Art, wie Busnummern innerhalb von Schaltern und von stromabwärtigen Ports verwendet werden, „abgeflacht“ wird. FPB definiert Mechanismen für Systemsoftware, um BDF- und MMIO-Ressourcen in nicht angrenzenden Bereichen zuzuordnen, was es der Systemsoftware ermöglicht, Pools von BDF/MMIO zuzuweisen, aus welchen es „Bins“ zu Funktionen unterhalb der FPB zuordnen kann. Das erlaubt es der Systemsoftware, BDF/MMIO zuzuweisen, die von einer Bauteilhinzufügung während des Betriebs (ein Bauteil-Hot-Add) erfordert wird, ohne andere, bereits zugewiesene Ressourcenbereiche neu auszugleichen, und zu den Poolressourcen zurückzukehren, die zum Beispiel durch ein Hot-Remove-Ereignis befreit wurden. FPB ist definiert, um es etablierten und neuen Mechanismen zu erlauben, gleichzeitig zu arbeiten, so dass es zum Beispiel für Systemfirmware/-software möglich ist, eine Strategie umzusetzen, bei der etablierte Mechanismen weiterhin in Teilen des Systems, wo die FPB-Mechanismen eventuell nicht erforderlich sind, weiter verwendet werden. Bei dem Beispiel der 7B kann angenommen werden, dass die Decodierlogik einen ,1'-Ausgang bereitstellt, wenn ein gegebenes TLP als mit der Sekundärseite der Brücke assoziiert decodiert wird. Der etablierte Decodiermechanismus kann wie für zuvor gelten, so dass zum Beispiel unter anderen Beispielen nur der Busnummerabschnitt (Bits 15:8) einer BDF-Adresse von der etablierten BDF-Decodierlogik getestet wird.
  • Wie in dem Beispiel der 8 veranschaulicht, kann eine Instanz von FPB-Logik sowohl etablierte Decodier-/Routingmechanismen als auch FPB-Paketdecodier-/Routingmechanismen aufweisen. Für etablierte Paketdecodier-/Routingmechanismen kann ein TLP an dem FPB-bereitgestellten Port identifiziert werden, und etablierte Paketdecodier-/Routingmechanismen können bestimmen, ob das TLP zu der Sekundärseite des Ports geroutet wird, oder ob das TLP-Routen an der Primärseite basierend auf herkömmlichem BDF-Routen behalten wird. Ebenso kann der PB-Paketdecodier-/Routingmechanismus bestimmen, ob das TLP zu der Sekundärseite des Ports geroutet wird, oder ob das TLP-Routen basierend auf abgeflachtem BDF-Routen an der Primärseite behalten wird. Wenn entweder die etablierten Paketdecodier-/Routingmechanismen oder die FPB-Paketdecodier-/Routingmechanismen einen Hinweis ausgeben, dass das Paket zu der Sekundärseite weitergegeben werden sollte, durchquert das Routen des Pakets die Brücke zu der Sekundärseite für das Routen zu seinem Ziel. Etablierte Paketdecodier-/Routingmechanismen können für das BDF-Decodieren Sekundär-/untergeordnete Busnummerregister aufweisen und, für Speicher(zum Beispiel MMIO)-Decodieren, Speicherbasis-/Limitregister, Prefetch-fähige Basis-/Limitregister, ein VGA-Enable-Bit, Enhanced Allocation, unter anderen Mechanismen, die von der FPB-Logik verwendet werden können. FPB-Paketdecodier-Routingmechanismen können für BD-Raum-Decodieren BD-Sekundärstart, Vektorstart, Granularität und verwandte Register für den Gebrauch in Zusammenhang mit dem BD-Vektor aufweisen. Speicher-Decodieren kann auch Vektoren in FPB einsetzen, wie unter anderen Registerbeispielen, Mechanismen, Funktionalität und Merkmalen einen MEM Low Vector für den Gebrauch in Verbindung mit MEM Low Vector Start, Granularität und verwandten MEM Low Registern, und einen MEM High Vector für den Gebrauch in Verbindung mit MEM High Vector Start, Granularität und verwandten MEM High Registern.
  • In einigen Fällen, und obwohl FPB zusätzliche Wege für eine spezifische Brücke zum Decodieren eines gegebenen TLP hinzufügen kann, kann FPB nichts an den grundlegenden Funktionsarten von Brücken innerhalb der Schalter- und Root Complex-Architekturstrukturen ändern. Bei einem Beispiel verwendet FPB dieselben Architekturkonzepte, um Managementmechanismen für drei unterschiedliche Ressourcentypen bereitzustellen: den Bus/Bauteilraum, Bits 15:3, von BDF („BD“); Speicher unter 4GB („MEM Low“) und Speicher über 4GB („MEM High“). Eine Hardwareimplementierung von FPB ist zulässig, um eine beliebige Kombination dieser drei Mechanismen zu unterstützen. Für jeden Mechanismus verwendet FPB einen Bitvektor, um für einen spezifischen Subsatzbereich des ausgewählten Ressourcentyps anzugeben, ob Ressourcen innerhalb dieses Bereichs mit der Primär- oder Sekundärseite der FPB assoziiert sind. Hardwareimplementierungen können erlaubt sein, um einen kleinen Bereich von Größen für diese Vektoren zu implementieren, und Systemfirmware/-Software ist fähig, die effektivste Nutzung des verfügbaren Vektors zu machen, indem ein anfängliches Offset ausgewählt wird, bei dem der Vektor in steigender BD/Adressreihenfolge angewandt wird, und eine Granularität für die individuellen Bits innerhalb des Vektors, um die Größe des BD-/Adressressourcensatzes, für den die Bits in einem gegebenen Vektor gelten, anzugeben.
  • Für jeden der BD-/Mem-Low-/Mem-High-Mechanismen kann es insbesondere für einen Root Complex wünschenswert sein, einen Mechanismus bereitzustellen, zum Beispiel Konfigurationsregister, durch die hardware- oder systemspezifische Firmware/Software den zulässigen Bereich von BD/MMIO, den die Systemsoftware der Sekundärseite einer Root Port-Brücke zuweisen kann, einzuschränken. Das kann die Konstruktion von Mehrkomponenten-Root Complexen vereinfachen, indem zum Beispiel sichergestellt wird, dass Systemsoftware nicht versucht, FPB-Mechanismen auf überlappende Bereiche des BD/MMIO-Raums zwischen Root Ports anzuwenden, die auf unterschiedlichen Komponenten des Mehrkomponenten-Root-Complex umgesetzt werden, zum Beispiel so, dass unter anderen Beispielen die Root-Ports auf einer Komponente innerhalb eines gegebenen Bereichs von BD/MMIO-Ressourcen arbeiten dürfen, und die Root-Ports auf einer anderen Komponente innerhalb eines unterschiedlichen Bereichs, der nicht mit dem ersten Bereich überlappt, von BD/MMIO-Ressourcen arbeiten dürfen.
  • In den statischen Gebrauchsfällen (oder einfach „statischen Fällen“) gibt es Limits hinsichtlich der Größe von Hierarchien und der Anzahl von Endpunkten aufgrund der Bus- und Bauteilnummer-„Verschwendung“, die von der PCIe/PCIe-Architekturdefinition für Schalter verursacht wird, und durch die herkömmliche Auflage, dass stromabwärtige Ports eine gesamte Busnummer mit ihrem Link assoziieren. Bei einigen Implementierungen kann diese Klasse von Problemen durch „Abflachen“ des Gebrauchs von BDF-Raum derart begegnet werden, dass Schalter und stromabwärtige Ports fähig sind, effizienteren Gebrauch von dem verfügbaren Raum zu machen. Für dynamische Gebrauchsfälle (oder einfach „dynamische Fälle“) wurde das Ausgleichen durch Reservieren großer Bereiche von Busnummern und Memory-Mapped E/A (MMIO) in der Brücke über dem/den relevanten Endpunkt(en) vermieden, um zu versuchen, irgendwelche Erfordernisse innerhalb der vorab zugeordneten Bereiche zu erfüllen. Dieser Ansatz führt jedoch zu zusätzlicher Vergeudung, was die Mängel herkömmlicher BDF-Zuordnung verstärkt. Dieser Ansatz kann außerdem in dem allgemeinen Fall, sogar bei relativ einfachen Fällen, schwierig zu implementieren sein, bei welchen man zum Beispiel ein Solid-State(SSD)-Laufwerk hat, das einen einzigen Endpunkt implementiert, ersetzt durch eine Einheit, die einen Schalter hat, indem eine interne Hierarchie innerhalb der Einheit geschaffen wird, so dass, obwohl eine anfängliche Zuordnung von nur einem Bus ausgereicht hätte, die anfängliche Zuordnung mit der neuen Einheit sofort bricht. Ferner kann für MMIO der Vorabzuordnungsansatz problematisch sein, wenn während des Betriebs verbundene Endpunkte die Zuordnung von MMIO-Raum unter 4GB (naturgemäß eine beschränkte Ressource) erfordern können, der schnell durch Vorabzuordnung von sogar relativ kleinen Mengen aufgebraucht wird, und für die Vorabzuordnung aufgrund der vielfachen Systemelemente, die Forderungen an die System-Adressraumzuordnung unter 4GB stellen, nicht attraktiv ist. In Abhängigkeit von vielfachen Faktoren, die eine physische Speicheradressierfähigkeit eines gegebenen Systems aufweisen, können bei einigen Fällen auch Ressourcenauflagen in MMIO-Raum über 4GB bestehen. Die Auflagen, die für MMIO-Raum unter 4GB gelten, können sich von denjenigen, die über 4GB gelten, unterscheiden (und folglich können separate Mechanismen für jeden optimiert werden).
  • Bei einigen Implementierungen kann mindestens einigen der Probleme sowohl in den statischen als auch in den dynamischen Gebrauchsfällen begegnet werden, indem Mechanismen definiert werden, um unterbrochene Ressourcenbereich-(Neu)-Zuordnung sowohl für BDF als auch MMIO zu ermöglichen. Systemsoftware kann die Fähigkeit besitzen, „Ressourcenpools“ zu führen, die bei Laufzeit zugeordnet (und wieder freigegeben) werden können, ohne andere laufende Vorgänge zu unterbrechen, wie es beim Ausgleichen erforderlich ist. Eine Flattening Portal Bridge (FPB) kann dabei als eine optionale Fähigkeit bereitgestellt werden, die von Funktionen vom Typ 1 (Brücken) in Root- und Schalterports implementiert werden können, um effizientere und dichtere BDF-Zuordnung zu unterstützen, Neuzuordnung von BDF-Ressourcen zu ermöglichen, ohne Ausgleich der anderswo in einem System zugewiesenen Ressourcen zu erfordern, und um nicht zusammenhängende MMIO-Bereiche zu ermöglichen und das Erfordernis zu vermeiden, MMIO-Ressourcen auszugleichen. IO-Raumzuordnung kann bei einigen Implementierungen so belassen werden wie sie ist und nicht durch FPB geändert werden. Unter den potentiellen beispielhaften Vorteilen, die eine beispielhafte FPB bereitstellt, kann BDF-Raumzuordnung effizienter und dichter sein, was größere Hierarchien ermöglicht, Laufzeit-Neuzuordnung von Ressourcen kann für Fälle des Hinzufügens/Entfernen während des Betriebs ohne den Bedarf ermöglicht werden, Ressourcen global auszugleichen, das Erfordernis, dass BDFs und MMIO in aneinander grenzenden Bereichen zugeordnet werden, kann eliminiert werden, gemischte Systeme können unterstützt werden, darunter Komponenten, die FPB unterstützen, gemeinsam mit Komponenten, die dies nicht tun, und all das während keine Änderungen an existierenden diskreten Endpunkten erlaubt werden. Etablierte Root Complexe, Schalter, Brücken und Endpunkte können zum Beispiel in gemischten Systemumgebungen gemeinsam mit RCs und Schaltern, die FPB implementieren, verwendet werden.
  • Bei einigen Implementierungen kann FPB das Bereitstellen neuer Hardware und Software, die die FPB unterstützen, aufweisen. Diese zusätzliche Hardware und/oder Software kann jedoch optional darin aktiviert werden, dass sie keine Auswirkungen hat, außer wenn sie aktiviert wird, und sie wird standardgemäß deaktiviert. Bei einigen Fällen können Hardwareänderungen zum Implementieren von FPB-Hardware, die Funktionen vom Typ 1 involviert, aufweisen, während es erlaubt wird, dass Endpunkte und Hardwarefunktionen, die Funktionen vom Typ 0 unterstützen, unbeeinträchtigt bleiben. FPB-fähige Hardware kann existierende Konformitäts- und Interoperabilitätstests bestehen, und neue Tests können entwickelt werden, um die zusätzliche FPB-Funktionalität explizit zu bewerten. Software, die mit Bauteilen arbeiten soll, die die FPB-Funktionalität implementieren, kann konfiguriert werden, um die neue erweiterte Fähigkeit zu enthalten. Etablierte Software funktioniert weiterhin mit FPB-Hardware, ist aber nicht fähig, die FPB-Merkmale zu nutzen.
  • FPB kann weiterhin den Gebrauch etablierter Ressourcenzuordnungsmechanismen für BDF und MMIO unterstützen. In einigen Fällen kann es wünschenswert sein, dass Systemfirmware weiterhin die anfängliche Systemressourcenzuordnung nur unter Verwenden der etablierten Mechanismen ausführt und FPB nur verwendet, nachdem das Betriebssystem gebootet wurde. FPB kann das unterstützen und das System spezifisch befähigen, das Verwenden der Ressourcen, wie sie von den etablierten Mechanismen zugeordnet werden, fortzusetzen. FPB ist spezifisch dazu bestimmt, Systemsoftware zu befähigen, die Ressourcenzuordnung innerhalb des Systems während der Laufzeit zu ändern, wobei nur gefordert wird, dass die Hardware und Prozesse, die mit den Ressourcen, die geändert werden, assoziiert sind, in den Ruhezustand gestellt werden, und es aller anderen Hardware und allen anderen Prozessen erlaubt wird, normalen Betrieb fortzusetzen.
  • Um den Laufzeit-Gebrauch von FPB durch Systemsoftware zu unterstützen, sollten FPB-Hardwareimplementierungen vermeiden, ein Stoppen oder andere Typen von Unterbrechungen von In-Flight-Transaktionen einzuführen, darunter während der Zeiten, in welchen Systemsoftware den Zustand der FPB-Hardware ändert. Es wird jedoch nicht erwartet, dass Hardware versucht, Fälle zu identifizieren, in welchen Systemsoftware irrtümlich die FPB-Konfiguration auf eine Art ändert, die In-Flight-Transaktionen beeinflusst. Wie bei den etablierten Mechanismen, ist die Systemsoftware dafür zuständig sicherzustellen, dass der Systembetrieb nicht aufgrund eines Neukonfigurationsvorgangs korrumpiert wird. Es wird nicht explizit gefordert, dass Systemfirmware/-software das Aktivieren und/oder Deaktivieren von FPB-Mechanismen in einer bestimmten Sequenz ausführt, es können jedoch Regeln definiert werden, um Ressourcenzuordnungsvorgänge in einer Hierarchie derart zu implementieren, dass die Hardware- und Softwareelemente des Systems nicht korrumpiert werden oder ihr Versagen verursacht wird.
  • Wenn bei einigen Implementierungen Systemsoftware gegen irgendwelche Regeln in Zusammenhang mit FPB verstößt, kann das Hardwareverhalten undefiniert sein. FPB kann in einer beliebigen PCI-Brücken(Typ 1)-Funktion implementiert werden, und jede Funktion, die FPB implementiert, implementiert die erweiterte FPB-Fähigkeit. Falls ein Schalter FPB implementiert, implementieren der stromaufwärtige Port und alle stromabwärtigen Ports des Schalters FPB. Es kann einem Root Complex erlaubt werden, FPB auf einigen Root Ports auszuführen, nicht aber auf anderen. Es kann einem Root Complex erlaubt werden, FPB auf einem internen logischen Bus des Root Complex auszuführen. Es wird einer Typ 1-Funktion erlaubt, den FPB-Mechanismus zu implementieren, der auf einen beliebigen, zwei oder drei dieser elementaren Mechanismen (BD, MEM Low, MEM High) angewandt wird. Es kann Systemsoftware erlaubt werden, jede beliebige Kombination (darunter alle oder keine) der elementaren Mechanismen, die von einer spezifischen FPB unterstützt werden, zu aktivieren. Die Fehlerverarbeitungs- und Berichterstattungsmechanismen mit Ausnahme dort, wo sie in diesem Abschnitt explizit geändert werden, können von FPB unberührt bleiben; In dem Fall eines Resets einer FPB-Funktion, löscht die FPB-Hardware alle Bits in allen implementierten Vektoren. Sobald sie aktiviert ist (zum Beispiel durch FPB-BD-Vector-Enable-, FPB-MEM-Low-Vector-Enable- und/oder FPB-MEM-High-Vector-Enable-Bits), falls die Systemsoftware anschließend einen FPB-Mechanismus deaktiviert, sind die Werte der Eingänge in dem assoziierten Vektor undefiniert, und falls die Systemsoftware anschließend den FPB-Mechanismus wiederaktiviert, löscht die FPB-Hardware alle Bits in dem assoziierten Vektor.
  • Bei einigen Implementierungen wird es der Systemsoftware ausdrücklich erlaubt, einen FPB-Vektor zu ändern, wenn der entsprechende FPB-Mechanismus aktiviert wird. Falls eine FPB mit dem No_Soft_Reset-Bit gelöscht implementiert wird, wenn diese FPB durch D0→D3hot→D0 durchläuft, dann sind wie bei anderem Funktionskonfigurationskontext alle FPB-Mechanismen zu deaktivieren, und die FPB löscht alle Bits in allen implementierten Vektoren. Falls eine FPB mit dem No_Soft_Reset-Bit gesetzt implementiert wird, wenn diese FPB durch D0→D3hot→D0 durchläuft, ändern sich wie bei anderem Funktionskonfigurationskontext keine FPB-Konfigurationszustände, und die Eingänge in die FPB-Vektoren werden von der Hardware beibehalten. Hardware kann derart implementiert werden, dass keine Forderung für das Ausführen eines beliebigen Typs von Grenzwertprüfung auf FPB-Berechnungen existiert, und die Systemsoftware kann sicherstellen, dass die FPB-Parameter ordnungsgemäß programmiert sind. Es kann einer Systemsoftware zum Beispiel erlaubt werden, Vektorstartwerte zu programmieren, die veranlassen, dass die höherrangigen Bits des entsprechenden Vektors den Ressourcenbereich, der mit einer gegebenen FPB assoziiert ist, überschreiten, wobei die Systemsoftware sicherstellt, dass diese höherrangigen Bits des Vektors gelöscht sind. Zu Beispielen von Fehlern, die die Systemsoftware vermeiden muss, gehören unter anderem das Duplizieren von Ressourcenzuordnung, Kombinationen von Startoffsets mit gesetzten Vektorbits, die ein „Wrap-Around“ von Grenzfehlern schaffen könnten.
  • Bei einigen Implementierungen des FPB BD Mechanismus geht FPB-Hardware davon aus, dass ein spezifisches BDF mit der Sekundärseite der FPB assoziiert ist, falls dieses BDF in den Busnummerbereich fällt, der von den Werten angegeben wird, die in den Sekundär- und untergeordneten Busnummerregistern mit logischem OR programmiert sind, mit dem Wert in den entsprechenden Eintrag in dem BD-Vektor programmiert. Wenn nur die FPB BD Mechanismen für das BDF-Decodieren verwendet werden, kann Systemsoftware eingesetzt werden um sicherzustellen, das sowohl die Sekundär- als auch die untergeordneten Busnummerregister 0 sind. Systemsoftware kann ferner sicherstellen, dass die FPB-Routingmechanismen derart konfiguriert sind, dass Konfigurationsanfragen, die die Sekundärseite von Funktionen der FPB betreffen, von der FPB von der Primär- zu der Sekundärseite der FPB geroutet werden. Der FPB BD Mechanismus kann mit unterschiedlichen Granularitäten angewandt werden, die die Systemsoftware durch das FPB BD Vector Granularitätsregister in dem Register FPB BD Vector Control 1 programmieren kann. 9 veranschaulicht beispielhafte Adressen in BDF-Raum und unterstützte Granularitäten. Die Darstellung in 9 veranschaulicht Beziehungen zwischen dem Layout von Adressen in dem BDF-Raum und den unterstützten Granularitäten.
  • Bei einigen Implementierungen programmiert Systemsoftware die Felder FPB BD Vector Granularity und FPB BD Vector Start in dem Register FPB BD Vector Control 1 gemäß den Auflagen, die in den Beschreibungen dieser Felder beschrieben sind. Die FPBs (andere als die, die mit stromaufwärtigen Ports der Schalter assoziiert sind), können derart eingeschränkt werden, dass, wenn PCIe Alternative Routing ID Interpretation (ARI) Forwarding nicht unterstützt wird, oder wenn das ARI Forwarding Enable-Bit in dem Register Device Control 2 gelöscht ist, FPB-Hardware eine Konfigurationsanfrage Typ 1, die auf der Primärseite der FPB empfangen wird, in eine Konfigurationsanfrage Typ 0 auf der Sekundärseite der FPB umwandeln soll, wenn die BD-Adresse (Bits 15:3 des BDF) der Konfigurationsanfrage vom Typ 1 mit dem Wert in dem BD-Sekundärstartfeld in dem Register FPB BD Vector Control 2 übereinstimmt, und die Systemsoftware muss die FPB entsprechend konfigurieren. Wenn das ARI Forwarding Enable-Bit in dem Register Device Control 2 gesetzt ist, wandelt die FPB-Hardware eine Konfigurationsanfrage Typ 1, die auf der Primärseite der FPB empfangen wird, in eine Konfigurationsanfrage Typ 0 auf der Sekundärseite der FPB um, wenn die Busnummeradresse (Bits 15:8 des BDF) der Konfigurationsanfrage Typ 1 mit dem Wert der Busnummeradresse (Bits 15:8) des Sekundärstartfelds in dem Register FPB BD Vector Control 2 übereinstimmt, und die Systemsoftware muss die FPB entsprechend konfigurieren.
  • Bei einigen Implementierungen kann FPB-Hardware für FPBs, die nur mit den stromaufwärtigen Ports von Schaltern assoziiert sind, das Feld FPB Num Sec Dev des FPB Capability Registers verwenden, um die Menge an Bauteilnummern anzugeben, die mit der Sekundärseite der Brücke des stromaufwärtigen Ports assoziiert ist, die von der FPB zusätzlich zu dem Feld BD Secondary Start in dem Register FPB BD Vector Control 2 verwendet werden kann, um zu bestimmen, wenn eine Konfigurationsanfrage, die auf der Primärseite der FPB empfangen wird, auf die stromabwärtigen Ports des Schalters abzielt, wobei in der Tat bestimmt wird, wann eine solche Anfrage von einer Konfigurationsanfrage Typ 1 in eine Konfigurationsanfrage Typ 0 umzuwandeln ist, wobei die Systemsoftware die FPB zweckdienlich konfiguriert. Falls ACS Source Validation an einem stromabwärtigen Port aktiviert ist, prüft die FPB die Requester-ID jeder stromaufwärtigen Anfrage, die von dem Port empfangen wird, um zu bestimmen, ob sie zu der Sekundärseite der FPB abgebildet ist, und falls die Requester-ID es nicht ist, kann das einen gemeldeten Fehler (zum Beispiel ACS-Verstoß), der mit dem empfangenden Port assoziiert ist, darstellen. FPBs können ferner Brückenabbildung für die virtuellen INTx-Drähte implementieren.
  • Um bei einem Beispiel zu bestimmen, welche Eingabe in den FPB BD Vektor für eine gegebene BDF-Adresse gilt, können mit FPB versehene Hardware und Software einen Algorithmus wie den folgenden anwenden:
    • // „BDF“ ist die zu testende BDF-Adresse
    • IF (BDF <= FPB_BD_Vector_Start) THEN
    • EXIT; // in diesem Fall liegt das BDF außerhalb des Bereichs
    • //Anderenfalls Offset Starten anwenden
    • OffsetIndex := BDF - FPB_BD_Vector_Start;
    • // Dann für die Granularität des Vektors anpassen
    • // (dieser Vorgang ist ein Divide, das hier
    • // als eine Rechtsverschiebung mit Nullauffüllung erfolgt)
    • Ol_Gran_Adjusted :=
    • ShiftRightZeroFill(FPB_BD_Vector_Granularity, OffsetIndex);
    • IF (Ol_Gran_Adjusted >= LENGTHOF(FPB_BD_Vector)) THEN
    • EXIT; // in diesem Fall liegt das BDF außerhalb des Bereichs
    • //Anderenfalls das Bit in dem (Bit-adressierten) Vektor lokalisieren
    • SelectorBit := FPB_BD_Vector[Ol_Gran_Adjusted];
    • // Falls das SelectorBit gesetzt ist, wird das BDF als
    • // auf der Sekundärseite befindlich betrachtet, falls es gelöscht ist, wird das BDF
    • //als auf der Primärseite liegend betrachtet.
  • Mit anderen Worten kann die Logik zum Bestimmen, welche Eingabe in den FPB BD Vektor für eine gegebene BDF-Adresse gilt, bestimmen, ob die BD-Adresse unter dem Wert des FPB BD Vector Start ist. Falls die BD-Adresse darunter ist, ist die BD außerhalb des Bereichs und nicht mit der Sekundärseite der Brücke zu assoziieren. Anderenfalls kann die Logik das Offset innerhalb des Vektors berechnen, indem sie zuerst den Wert von FPB BD Vector Start subtrahiert, das dann gemäß dem Wert der FPB BD Vector Granularity dividiert, um den Bitindex innerhalb des Vektors zu bestimmen. Falls der Bitindexwert größer ist als die Länge, die von der FPB BD Vector Size Supported angegeben wird, befindet sich das BD außerhalb des Bereichs (darüber) und ist nicht mit der Sekundärseite der Brücke zu assoziieren. Falls der Bitwert innerhalb des Vektors an der berechneten Bitindexlage jedoch 1b ist, ist die BD-Adresse mit der Sekundärseite der Brücke assoziiert, anderenfalls ist die BD-Adresse mit der Primärseite der Brücke assoziiert.
  • Der FPB MEM Low-Mechanismus kann mit unterschiedlichen Granularitäten angewandt werden, die die Systemsoftware durch das Register FPB MEM Low Vector Granularity in dem Register FPB MEM Low Vector Control 1 programmieren kann. 10 veranschaulicht das Layout von Adressen in dem Speicheradressraum unter 4 GB, für den der FPB MEM Low Mechanismus gilt, und die Wirkung von Granularität auf diesen Adressen. 10 betrifft auch die Definition der erweiterten Flattening-Portal-Bridge(FPB)-Fähigkeit. Systemsoftware kann die Felder FPB MEM Low Vector Granularity und FPB MEM Low Vector Start in dem Register FPB MEM Low Vector Control 1 gemäß den Vorgaben, die in den Beschreibungen dieser Felder beschrieben sind, programmieren.
  • Bei einigen Instanzen des FPB MEM Low-Mechanismus kann die FPB-Hardware davon ausgehen, dass eine spezifische Speicheradresse mit der Sekundärseite der FPB assoziiert ist, falls diese Speicheradresse in einen beliebigen der Bereiche fällt, die von den Werten angegeben werden, die in anderen Brückenspeicher-Decodierregistern (unten aufgezählt) programmiert sind, logisch OR-verknüpft mit dem Wert, der in der entsprechenden Eingabe in dem MEM Low Vektor programmiert ist. Andere Brückenspeicher-Decodierregister können folgende aufweisen: Memory Base/Limit-Register in dem Typ 1(Bridge)-Header; Prefetchable Base/Limit-Register in dem Typ 1(Bridge)-Header; VGA Enable-Bit in dem Bridge Control Register vom Typ 1(Bridge)-Header; Enhanced Allocation(EA)-Fähigkeit; FPB MEM High Mechanismus (falls unterstützt und aktiviert). Um bei einem Beispiel zu bestimmen, welcher Eintrag in den FPB MEM-Vektor für eine gegebene Speicheradresse gilt, können Hardware und Software einen Algorithmus wie den folgenden anwenden:
    • // „Address“ ist die zu testende Speicheradresse
    • // ausgedrückt in MB-Einheiten (das heißt Bits [31:20])
    • IF (Address <= FPB_MEM_Low_Vector_Start) THEN
    • EXIT; // In diesem Fall liegt die Adresse außerhalb des Bereichs
    • //Anderenfalls Offset Starten anwenden
    • OffsetIndex := Address - FPB_MEM_Low_Vector_Start;
    • // Dann für die Granularität des Vektors anpassen
    • // (dieser Vorgang ist ein Divide, das hier
    • // als eine Rechtsverschiebung mit Nullauffüllung erfolgt)
    • Ol_Gran_Adjusted :=
    • ShiftRightZeroFill(FPB_MEM_Low_Vector_Granularity, OffsetIndex);
    • IF (Ol_Gran_Adjusted >=
    • LENGTHOF(FPB_MEM_Low_Vector)) THEN
    • EXIT; // In diesem Fall liegt die Adresse außerhalb des Bereichs
    • //Anderenfalls das Bit in dem (Bit-adressierten) Vektor lokalisieren
    • SelectorBit := FPB_MEM_Low_Vector[Ol_Gran_Adjusted];
    • // Falls das SelectorBit gesetzt ist, wird die Adresse
    • // als auf der Sekundärseite liegend betrachtet,
    • // falls gelöscht, wird die Adresse als auf der
    • // Primärseite liegend betrachtet.
  • Mit anderen Worten kann die Hardware und Software zum Bestimmen, welcher Eintrag in den FPB MEM Low-Vektor für eine gegebene Speicheradresse gilt, bestimmen, ob die Speicheradresse unter dem Wert des FPB MEM Low Vector Start ist. Ist das der Fall, liegt die Speicheradresse außerhalb des Bereichs (darunter) und ist nicht mit der Sekundärseite der Brücke assoziiert. Die Logik kann das Offset innerhalb des Vektors berechnen, indem sie zuerst den Wert von FPB MEM Low Vector Start subtrahiert, das dann gemäß dem Wert der FPB MEM Low Vector Granularity dividiert, um den Bitindex innerhalb des Vektors zu bestimmen. Falls der Bitindexwert größer ist als die Länge, die von der FPB MEM Low Vector Size Supported angegeben wird, befindet sich die Speicheradresse außerhalb des Bereichs (darüber) und ist nicht mit der Sekundärseite der Brücke assoziiert. Andererseits, falls der Bitwert innerhalb des Vektors an der berechneten Bitindexlage 1b ist, kann die Speicheradresse mit der Sekundärseite der Brücke assoziiert werden, anderenfalls wird die Speicheradresse mit der Primärseite der Brücke assoziiert.
  • Systemsoftware kann die Felder FPB MEM High Vector Granularity und FPB MEM High Vector Startfelder in dem Register FPB MEM High Vector Control 1 gemäß den Vorgaben, die in den Beschreibungen dieser Felder beschrieben sind, programmieren. Bei einigen Instanzen des FPB MEM High Mechanismus kann die FPB-Hardware davon ausgehen, dass eine spezifische Speicheradresse mit der Sekundärseite der FPB assoziiert ist, falls diese Speicheradresse in einen der Bereiche fällt, die von den Werten angegeben werden, die in anderen Brückenspeicher-Decodierregistern (unten aufgezählt) programmiert sind, logisch OR-verknüpft mit dem Wert in der entsprechenden Eingabe in dem MEM Low Vector. Andere Brückenspeicher-Decodierregister können Memory Base/Limit-Register in dem Typ 1(Bridge)-Header; Prefetchable Base/Limit-Register in dem Typ 1(Bridge)-Header; VGA Enable-Bit in dem Bridge Control Register vom Typ 1 (Bridge)-Header; Enhanced Allocation (EA) Capability und FPB MEM Low-Mechanismus (falls unterstützt und aktiviert) aufweisen. Um bei einem Beispiel zu bestimmen, welche Eingabe in den FPB MEM High Vector für eine gegebene Speicheradresse gilt, können Hardware und Software einen Algorithmus wie den folgenden anwenden:
    • // „Address“ ist die zu testende Speicheradresse
    • // ausgedrückt in 16 MB-Einheiten (das heißt Bits [63:24])
    • // „FPB_MEM_High_Vector_Start“ ist die Konkatenation
    • von FPB MEM High Vector Start Upper und
    • // FPB MEM High Vector Start Lower
    • IF (Address <= FPB_MEM_High_Vector_Start) THEN
    • EXIT; // In diesem Fall liegt die Adresse außerhalb des Bereichs
    • //Anderenfalls Offset Starten anwenden
    • OffsetIndex := Address - FPB_MEM_High_Vector_Start;
    • // Dann für die Granularität des Vektors anpassen
    • // (dieser Vorgang ist ein Divide, das hier
    • //als eine Rechtsverschiebung mit Nullauffüllung gezeigt ist)
    • // Eine zusätzliche Verschiebung von 4 Bits muss angewendet werden,
    • // um die Granularitätseinheiten zu berücksichtigen
    • Ol_Gran_Adjusted :=
    • ShiftRightZeroFill(
    • ShiftRightZeroFill(FPB_MEM_High_Vector_Granularity, Offsetindex), 4);
    • IF (Ol_Gran_Adjusted >=
    • LENGTHOF(FPB_MEM_High_Vector)) THEN
    • EXIT; // In diesem Fall liegt die Adresse außerhalb des Bereichs
    • //Anderenfalls das Bit in dem (Bit-adressierten) Vektor lokalisieren
    • SelectorBit := FPB_MEM_High_Vector[Ol_Gran_Adjusted];
    • // Falls das SelectorBit gesetzt ist, wird die Adresse
    • // als auf der Sekundärseite liegend betrachtet,
    • // falls gelöscht, wird die Adresse als auf der
    • // Primärseite liegend betrachtet.
  • Mit anderen Worten kann die Hardware und Software zum Bestimmen, welche Eingabe in den FPB MEM High Vector für eine gegebene Speicheradresse gilt, bestimmen, ob die Speicheradresse unter dem Wert des FPB MEM High Vector Starts ist. Ist das der Fall, kann bestimmt werden, dass die Speicheradresse außerhalb des Bereichs (darunter) liegt und nicht mit der Sekundärseite der Brücke assoziiert ist. Anderenfalls kann das Offset innerhalb des Vektors berechnet werden, indem zuerst der Wert von FPB MEM High Vector Start subtrahiert wird, das dann gemäß dem Wert der FPB MEM High Vector Granularity dividiert wird, um den Bitindex innerhalb des Vektors mittels dieses Mechanismus zu bestimmen. Falls der Bitindexwert größer ist als die Länge, die von FPB MEM High Vector Size Supported angegeben wird, befindet sich die Speicheradresse außerhalb des Bereichs (darüber) und ist nicht mit der Sekundärseite der Brücke assoziiert. Anderenfalls, falls der Bitwert innerhalb des Vektors an der berechneten Bitindexlage 1b ist, ist die Speicheradresse mit der Sekundärseite der Brücke assoziiert, oder die Speicheradresse ist mit der Primärseite der Brücke assoziiert.
  • Bei einigen Implementierungen kann FPB einen Bitvektor-Mechanismus verwenden, um Adressräume (BD-Raum, MEM Low & MEM Hi) zu beschreiben. Eine Brücke, die FPB unterstützt, kann Folgendes für jeden Adressraum aufweisen, bei dem sie den Gebrauch von FPB unterstützt: einen Bitvektor; ein Startadressregister und ein Granularitätsregister. Diese Werte können von der Brücke verwendet werden, um zu bestimmen, ob eine gegebene Adresse Teil des Bereichs ist, der durch FPB als mit der Sekundärseite der Brücke assoziiert decodiert wird. Eine Adresse, von der nicht bestimmt wird, dass sie mit der Sekundärseite der Brücke assoziiert ist, indem entweder der etablierte Decodiermechanismus oder der FPB-Decodiermechanismus verwendet wird, ist (standardmäßig) mit der Primärseite der Brücke assoziiert. Hier kann der Begriff „assoziiert“ zum Beispiel bedeuten, dass die Brücke das folgende Handling an TLPs anwendet:
    • • Ein TLP, das mit der Primärseite assoziiert ist und an der Primärseite empfangen wird, kann als eine Unsupported Request (UR) gehandhabt werden;
    • • Ein TLP, das mit der Primärseite assoziiert ist und an der Sekundärseite empfangen wird, kann als ein Forward stromaufwärts gehandhabt werden;
    • • Ein TLP, das mit der Sekundärseite assoziiert ist und an der Primärseite empfangen wird, kann als ein Forward stromabwärts gehandhabt werden;
    • • Ein TLP, das mit der Sekundärseite assoziiert ist und an der Sekundärseite empfangen wird, kann als eine Unsupported Request (UR) gehandhabt werden usw.

    Bei FPB kann jedes Bit in dem Vektor einen Bereich von Adressen darstellen, wobei die Größe des Bereichs durch die ausgewählte Granularität bestimmt wird. Falls ein Bit in dem Vektor gesetzt ist, gibt das an, dass Pakete, die zu einer Adresse innerhalb des entsprechenden Bereichs adressiert werden, mit der Sekundärseite der Brücke zu assoziieren sind. Der spezifische Bereich der Adressen, die jedes Bit darstellt, hängt von dem Index dieses Bits und den Werten in den Registern Start Address & Granularity ab. Das Register Start Address gibt die niedrigste Adresse an, die von dem Bitvektor beschrieben wird. Das Register Granularity gibt die Größe des Bereichs an, der von jedem Bit dargestellt wird. Jedes darauffolgende Bit in dem Vektor gilt für den darauffolgenden Bereich, mit jedem Bit gemäß der Granularität zunehmend.
  • In einigen Fällen sind stromabwärtige Ports, die ARI-Forwarding nicht aktiviert haben, nur mit dem Bauteil 0 assoziieren, wobei das Bauteil an den logischen Bus, der den Link von dem Port darstellt, verbunden ist. Konfigurationsanfragen, die auf die Busnummer abzielen, die mit einem Link assoziiert ist, der die Bauteilnummer 0 spezifiziert, werden zu dem Bauteil, das mit dem Link verbunden ist, geliefert. Konfigurationsanfragen, die alle anderen Bauteilnummern (1 bis 31) spezifizieren, können daher vom stromabwärtigen Port des Schalters oder dem Root Port mit einem Unsupported Request Completion Status (gleichwertig mit Master Abort in PCI) terminiert werden. In einigen Fällen können Nicht-ARI-Bauteile nicht davon ausgehen, dass die Bauteilnummer 0 mit ihrem stromaufwärtigen Port assoziiert ist, sondern fangen stattdessen ihre zugewiesene Bauteilnummer und reagieren auf alle Konfigurations-Leseanfragen vom Typ 0 ungeachtet der Bauteilnummer, die in der Anfrage spezifiziert ist. Bei einigen Beispielen, wenn auf ein ARI-Bauteil abgezielt wird und der unmittelbar darüberliegende stromabwärtige Port für ARI-Forwarding aktiviert ist, wird die Bauteilnummer als 0 angenommen, und das herkömmliche Bauteilnummerfeld wird stattdessen als Teil eines 8-Bit-Funktionsnummerfelds verwendet. Falls die Konfigurationsanfrage vom Typ 1 ist, kann FPB-Logik bestimmen, ob die Felder Bus Number und die Device Number (in dem Fall einer Express-PCI-Brücke) gleich der Busnummer sind, die dem Sekundär-PCI-Bus zugewiesen ist, oder, in dem Fall eines Schalters oder Root Complex, gleich der Busnummer und decodierten Bauteilnummern, die dem Root (Root Complex) oder stromabwärtigen Ports (Schalter) zugewiesen ist. Ist das der Fall, kann die Anfrage zu diesem stromabwärtigen Port (oder PCI-Bus in dem Fall einer PCI Express-PCI-Brücke) weitergeleitet werden. Ist sie nicht gleich der Busnummer eines beliebigen stromabwärtigen Ports oder Sekundär-PCI-Busses, aber in dem Bereich der Busnummern, die entweder einem stromabwärtigen Port oder einem Sekundär-PC-Bus zugewiesen sind, kann die Anfrage zu dieser stromabwärtigen Portschnittstelle ohne Änderung weitergeleitet werden.
  • Die erweiterte Flattening Portal Bridge (FPB)-Fähigkeit kann eine optionale erweiterte Fähigkeit sein, die für eine beliebige Brückenfunktion oder einen Port, die/der FPB implementiert, bereitzustellen ist. Falls ein Schalter FPB implementiert, implementieren der stromaufwärtige Port und alle stromabwärtigen Ports des Schalters erweiterte FPB-Fähigkeitsstruktur. Es kann einem Root Complex erlaubt werden, die erweiterte FPB-Fähigkeitsstruktur auf einigen Root Ports auszuführen, nicht aber auf anderen. Es kann einem Root Complex erlaubt werden, die FPB-Fähigkeit für interne logische Busse bei einigen Implementierungen zu implementieren. In der folgenden Beschreibung wird auf die FPB-Register mittels einer erweiterten PCIe-Fähigkeit zugegriffen, aber bei anderen beispielhaften Implementierungen kann auf die FPB-Register durch andere Mittel zugegriffen werden, darunter, ohne darauf beschränkt zu sein, auf eine PCI-Fähigkeitsstruktur oder eine verkäuferdefinierte erweiterte Fähigkeit. Die Register können bei einigen Implementierungen in Speicherelementen der entsprechenden Schalter, Brücken, Root Complex oder anderer Bauteile innerhalb des Systems gehostet werden.
  • Tabelle 1 veranschaulicht eine beispielhafte Implementierung eines erweiterten FPB-Fähigkeits-Headers. Bei einem Beispiel kann der Header mit erweiterter FPB-Fähigkeit ein Offset von 00h haben. Tabelle 1: Header mit erweiterter FPB-Fähigkeit
    Bitposition Registerbeschreibung
    15:0 PCI Express Extended Capability ID - Dieses Feld identifiziert die folgende Struktur als eine Struktur mit erweiterter Fähigkeit für eine Flattening Portal Bridge (FPB)
    19:16 Capability Version - Dieses Feld ist eine PCI-SIG-definierte Versionsnummer, die die Version der vorliegenden Fähigkeitsstruktur angibt.
    Muss für diese Version der Spezifikation 1h sein.
    31:20 Next Capability Offset - Dieses Feld enthält das Offset zu der nächsten PCI Express Capability-Struktur oder 000h, falls kein anderes Element in der verlinkten Liste von Fähigkeiten existiert.
    Für erweiterte Fähigkeiten, die in Konfigurationsraum implementiert werden, betrifft dieses Offset den Anfang des PCI-kompatiblen Konfigurationsraums und muss daher immer entweder 000h (zum Terminieren der Liste von Fähigkeiten) oder größer als 0FFh sein.
  • Tabelle 2 veranschaulicht eine beispielhafte Implementierung eines erweiterten FPB-Fähigkeits-Headers. Bei einem Beispiel kann der Header mit erweiterter FPB-Fähigkeit ein Offset von 04h haben. Tabelle 2: FPB Capability Register
    Bitposition Registerbeschreibung
    0 FPB BD Vector Supported - Falls gesetzt, gibt das an, dass der BD Vector Mechanismus unterstützt wird.
    1 FPB MEM Low Vector Supported - Falls gesetzt, gibt das an, dass der MEM Low Vector Mechanismus unterstützt wird.
    2 FPB MEM High Vector Supported - Falls gesetzt, gibt das an, dass der MEM High Vector Mechanismus unterstützt wird.
    7:3 FPB Num Sec Dev - Nur für stromaufwärtige Ports von Schaltern; dieses Feld gibt die Menge von Bauteilnummern an, die mit der Sekundärseite der Brücke des stromaufwärtigen Ports assoziiert ist. Die Menge wird durch Hinzufügen von Eins zu dem Zahlenwert dieses Felds bestimmt.
    Obwohl darauf abgezielt wird, dass Schalterimplementierungen Funktionsnummern effizient nutzen, ist es explizit erlaubt, dass stromabwärtigen Ports Funktionsnummern zugewiesen werden, die innerhalb des angegebenen Bereichs von Bauteilnummern nicht nebeneinander liegen, und es wird gefordert, dass Systemsoftware bei jeder Funktionsnummer innerhalb der angegebenen Menge von Bauteilnummern, die mit der Sekundärseite des stromaufwärtigen Ports assoziiert ist, nach stromabwärtigen Port-Brücken sucht.
    Dieses Feld ist stromabwärtigen Ports vorbehalten.
    10:8 FPB BD Vector Size Supported - Gibt die Größe des FPB BD Vektors an, der in Hardware implementiert wird, und beschränkt die zulässigen Werte, die Software zu dem Feld FPB BD Vector Granularity schreiben kann.
    Definierte Codierungen sind:
    Wert Größe Zulässige Granularitäten
    000b 256 Bits 8, 16, 32, 64, 128, 256
    001b 512 Bits 8, 16, 32, 64, 128
    010b 1K Bits 8, 16, 32, 64
    011b 2K Bits 8, 16, 32
    100b 4K Bits 8,16
    101b 8K Bits 8
    Alle anderen Codierungen sind reserviert.
    Falls das FPB BD Vector Supported Bit gelöscht ist, ist der Wert in diesem Feld undefiniert und muss von Software ignoriert werden.
    15:11 Reserviert
    18:16 FPB MEM Low Vector Size Supported - Gibt die Größe des MEM Low-Vektors an, der in Hardware implementiert wird, und beschränkt die zulässigen Werte, die Software zu dem FPB MEM Low Vector Startfeld schreiben kann.
    Definierte Codierungen sind:
    Wert Größe Zulässige Granularitäten
    000b 256 Bits 1, 2, 4, 8, 16
    001b 512 Bits 1, 2, 4, 8
    010b 1K Bits 1, 2, 4
    011b 2K Bits 1, 2
    100b 4K Bits 1
    Alle anderen Codierungen sind reserviert. Falls das FPB MEM Low Vector Supported Bit gelöscht ist, ist der Wert in diesem Feld undefiniert und muss von Software ignoriert werden.
    23:19 Reserviert
    26:24 FPB MEM High Vector Size Supported - Gibt die Größe des MEM Low Vektors, der in Hardware implementiert ist, an.
    Definierte Codierungen sind:
    000b 256 Bits
    001b 512 Bits
    010b 1K Bits
    011b 2K Bits
    100b 4K Bits
    101b 8K Bits
    Alle anderen Codierungen sind reserviert. Falls das FPB MEM High Vector Supported Bit gelöscht ist, ist der Wert in diesem Feld undefiniert und muss von Software ignoriert werden.
    31:27 Reserviert
  • Tabelle 3 veranschaulicht eine beispielhafte Implementierung eines FPB BD Vector Control 1-Registers. Bei einem Beispiel kann das FPB BD Vector Control 1-Register ein Offset von 08h haben. Tabelle 3: FPB BD Vector Control 1-Register
    Bitposition Registerbeschreibung
    0 FPB BD Vector Enable - Wenn gesetzt, wird der FPB BD Vector-Mechanismus aktiviert
    Falls das FPB BD Vector Supported-Bit gelöscht ist, ist es Hardware erlaubt, dieses Bit als Nurlese (read only - RO) zu implementieren, und in diesem Fall ist der Wert in diesem Feld undefiniert.
    Der Standardwert dieses Bits ist 0b.
    3:1 Reserviert
    6:4 FPB BD Vector Granularity - Der Wert, der von der Software zu diesem Feld geschrieben wird, steuert die Granularität des FPB BD Vektors und die erforderliche Ausrichtung des FPB BD Vector Startfelds (darunter).
    Definierte Codierungen sind:
    Wert Granularität Start-Ausrichtung
    000b 8 BDF <keine Auflage>
    001b 16 BDF ...0b
    010b 32 BDF ...00b
    011b 64 BDF ...000b
    100b 128 BDF ...0000b
    101b 256 BDF ...00000b
    Alle anderen Codierungen sind reserviert.
    Basierend auf der implementierten FPB BD Vector-Größe ist es Hardware erlaubt, als RW nur diejenigen Bits dieses Felds zu implementieren, die auf Nicht-Null-Werte programmiert werden können, wobei es in diesem Fall den höherrangigen Bits erlaubt ist, zu 0 fest verdrahtet zu sein (aber nicht zwingend).
    Falls das FPB BD Vector Supported-Bit gelöscht ist, ist es Hardware erlaubt, dieses Bit als RO zu implementieren, und der Wert in diesem Feld ist undefiniert.
    Der Standardwert für dieses Feld kann 0000b sein.
    18:7 Reserviert
    31:19 FPB BD Vector Start - Der Wert, den die Software zu diesem Feld schreibt, steuert das Offset innerhalb des BD-Raums, an dem der FPB BD Vektor angewandt wird.
    Der Wert stellt eine Bus-/Bauteilnummer (Bits [15:3]) einer Adresse im BDF-Raum) derart dar, dass das Bit 0 des FPB BD Vektors den Bereich ausgehend von dem Wert in diesem Register bis zu dem Wert plus der Granularität
    minus 1 darstellt, und Bit 1 den Bereich von diesem Registerwert plus Granularität bis zu dem Wert plus Granularität minus 1 usw. darstellt. Das Funktionsnummeroffset (Bits[2:0]) wird von Hardware als 000b festgelegt und kann nicht geändert werden.
    Software muss dieses Feld auf einen Wert programmieren, der naturgemäß gemäß dem Wert in dem Feld FPB BD Vector Granularity, wie hier angegeben, ausgerichtet ist:
    FPB BD Vector Granularity Start-Ausrichtungsauflage
    0000b <keine Auflage>
    0001b ...0b
    0010b ...00b
    0011b ...000b
    0100b ...0000b
    0101b ...00000b
    Falls gegen diese Forderung verstoßen wird, ist das Hardwareverhalten undefiniert.
    Falls das FPB BD Vector Supported-Bit gelöscht ist, ist es Hardware erlaubt, dieses Bit als RO zu implementieren, und der Wert in diesem Feld ist undefiniert.
    Der Standardwert für dieses Feld ist 000h.
  • Tabelle 4 veranschaulicht eine beispielhafte Implementierung eines FPB BD Vector Control 2-Registers. Bei einem Beispiel kann das FPB BD Vector Control 2-Register ein Offset von 0Ch haben. Tabelle 4: FPB BD Vector Control 2-Register
    Bitposition Registerbeschreibung
    2:0 Reserviert
    15:3 BD Secondary Start - Der Wert, den die Software in dieses Feld schreibt, steuert das Offset innerhalb des BDF-Raums, an dem Konfigurationsanfragen vom Typ 1, die stromabwärts durch die Brücke weitergegeben werden, in Typ 0 umgewandelt werden müssen.
    Der Wert stellt eine Bus-/Bauteilnummer (Bits [15:3] einer Adresse in BDF-Raum) dar. Das Funktionsnummeroffset (Bits[2:0]) wird von Hardware als 000b festgelegt und kann nicht geändert werden.
    Wenn das ARI Forwarding Enable-Bit in dem Device Control 2-Register gesetzt ist, muss die Software die Bits 7:3 dieses Felds zu 00000b schreiben.
    Falls das FPB BD Vector Supported-Bit gelöscht ist, ist es Hardware erlaubt, dieses Bit als RO zu implementieren, und der Wert in diesem Feld ist undefiniert.
    Der Standardwert für dieses Feld ist 000h.
    31:16 Reserviert
  • Tabelle 5 veranschaulicht eine beispielhafte Implementierung eines FPB BD Vector Access Control-Registers. Bei einem Beispiel kann das FPB BD Vector Access Control-Register ein Offset von 10h haben. Tabelle 5: FPB BD Vector Access Control-Register
    Bitposition Registerbeschreibung
    7:0 FPB BD Vector Access Offset - Der Wert in diesem Feld gibt das Offset des 32b-Abschnitts des FPB BD Vektors an, das mittels des FPB BD Vector Access Data-Registers gelesen oder geschrieben werden kann.
    Die Bits dieses Felds bilden gemäß dem Wert in dem Feld FPB BD Vector Size Supported, wie hier gezeigt, auf den Offset ab:
    Offset-Bits Dieses Feld
    000b 2:0 2:0 (7:3 nicht verwendet)
    001b 3:0 3:0 (7:4 nicht verwendet)
    010b 4:0 4:0 (7:5 nicht verwendet)
    011b 5:0 5:0 (7:6 nicht verwendet)
    100b 6:0 6:0 (7 nicht verwendet)
    101b 7:0 7:0
    Alle anderen Codierungen sind reserviert. Bits in diesem Feld, die gemäß der oben stehenden Tabelle nicht verwendet werden, müssen von der Software als 0b geschrieben werden, und es ist erlaubt (aber nicht zwingend), dass sie als RO implementiert werden.
    Falls das FPB BD Vector Supported-Bit gelöscht ist, ist es Hardware erlaubt, dieses Feld als RO zu implementieren, und der Wert in diesem Feld ist undefiniert.
    Der Standardwert für dieses Feld ist 00h.
    31:8 Reserviert
  • Tabelle 6 veranschaulicht eine beispielhafte Implementierung eines FPB BD Vector Access Data-Registers. Bei einem Beispiel kann das FPB BD Vector Access Data-Register ein Offset von 14h haben. Tabelle 6: FPB BD Vector Access Data-Register
    Bitposition Registerbeschreibung
    31:0 FPB BD Vector Data - Auslesungen aus diesem Register geben den DW von Daten von dem FPB BD-Vektor an der Lage an, die von dem Wert in dem FPB BD Vector Access Offset-Register bestimmt wird. Schreiben zu diesem Register ersetzen den DW von Daten von dem FPB BD-Vektor an der Lage, die von dem Wert in dem FPB BD Vector Access Offset-Register bestimmt wird.
    Falls das FPB BD Vector Supported-Bit gelöscht ist, ist es Hardware erlaubt, dieses Bit als RO zu implementieren, und der Wert in diesem Feld ist undefiniert.
    Der Standardwert für dieses Feld ist 0000h.
  • Tabelle 7 veranschaulicht eine beispielhafte Implementierung eines FPB MEM Low Vector Control-Register. Bei einem Beispiel kann das FPB MEM Low Vector Control-Register ein Offset von 18h haben. Tabelle 7: FPB MEM Low Vector Control Register
    Bitposition Registerbeschreibung
    0 FPB MEM Low Vector Enable - Wenn gesetzt, wird der FPB MEM Low Vector-Mechanismus aktiviert.
    Falls das FPB MEM Low Vector Supported-Bit gelöscht ist, ist es Hardware erlaubt, dieses Bit als RO zu implementieren, und in diesem Fall ist der Wert in diesem Feld undefiniert.
    Der Standardwert dieses Bits ist 0b.
    3:1 Reserviert
    7:4 FPB MEM Low Vector Granularity - Der Wert, der von der Software zu diesem Feld geschrieben wird, steuert die Granularität des FPB MEM Low Vektors und die erforderliche Ausrichtung des Felds FPB MEM Low Vector Start (darunter).
    Definierte Codierungen sind:
    Wert Granularität Start-Ausrichtungsauflage
    000b 1MB <keine Auflage>
    001b 2MB ...0b
    010b 4MB ...00b
    011b 8MB ...000b
    100b 16MB ...0000b
    Alle anderen Codierungen sind reserviert.
    Basierend auf der implementierten FPB MEM-Low Vector-Größe ist es Hardware erlaubt, als RW nur diejenigen Bits dieses Felds zu implementieren, die auf Nicht-Null-Werte programmiert werden können, wobei es in diesem Fall den höherrangigen Bits erlaubt ist, zu 0 fest verdrahtet zu sein (aber nicht zwingend).
    Falls das FPB MEM Low Vector Supported-Bit gelöscht ist, ist es Hardware erlaubt, dieses Bit als RO zu implementieren, und der Wert in diesem Feld ist undefiniert.
    Der Standardwert für dieses Feld kann 0000b sein.
    19:8 Reserviert
    31:20 FPB MEM Low Vector Start - Der Wert, den die Software zu diesem Feld schreibt, setzt die Basisadresse, an der der FPB MEM Low Vektor angewandt wird.
    Die Software muss dieses Feld auf einen Wert programmieren, der naturgemäß gemäß dem Wert in dem Feld FPB MEM Low Vector Granularity, wie in der Beschreibung für das Feld (oben) angegeben, ausgerichtet ist. Falls gegen diese Forderung verstoßen wird, ist das Hardwareverhalten undefiniert.
    Falls das FPB MEM Low Vector Supported-Bit gelöscht ist, ist es Hardware erlaubt, dieses Feld als RO zu implementieren, und der Wert in diesem Feld ist undefiniert.
    Der Standardwert für dieses Feld ist 0000h.
  • Tabelle 8 veranschaulicht eine beispielhafte Implementierung eines FPB MEM Low Vector Access Control-Registers. Bei einem Beispiel kann das FPB MEM Low Vector Access Control-Register ein Offset von 1Ch haben. Tabelle 8: FPB MEM Low Vector Access Control Register
    Bitposition Registerbeschreibung
    6:0 FPB MEM Low Vector Access Offset - Der Wert in diesem Feld gibt das Offset des 32b-Abschnitts des FPB MEM Low-Vektors an, das mittels des FPB MEM Low Vector Access Data-Registers gelesen oder geschrieben werden kann.
    Die Bits dieses Felds bilden gemäß dem Wert in dem Feld FPB MEM Low Vector Granularity, wie hier gezeigt, auf den Offset ab:
    Offset-Bits Dieses Feld
    000b 2:0 2:0 (6:3 nicht verwendet)
    001b 3:0 3:0 (6:4 nicht verwendet)
    010b 4:0 4:0 (6:5 nicht verwendet)
    011b 5:0 5:0 (6 nicht verwendet)
    100b 6:0 6:0
    Bits in diesem Feld, die gemäß der oben stehenden Tabelle nicht verwendet werden, müssen von der
    Software als 0b geschrieben werden, und es ist erlaubt (aber nicht zwingend), dass sie als RO implementiert werden.
    Falls das FPB MEM Low Vector Supported-Bit gelöscht ist, ist es Hardware erlaubt, dieses Bit als RO zu implementieren, und der Wert in diesem Feld ist undefiniert.
    Der Standardwert für dieses Feld ist 00h.
    31:7 Reserviert
  • Tabelle 9 veranschaulicht eine beispielhafte Implementierung eines FPB MEM Low Vector Access Data-Registers. Bei einem Beispiel kann das FPB MEM Low Vector Access Data-Register ein Offset von 20h haben. Tabelle 9: FPB MEM Low Vector Access Data Register
    Bitposition Registerbeschreibung
    31:0 FPB MEM Low Vector Data - Auslesungen aus diesem Register geben den DW von Daten von dem FPB MEM Low-Vektor an der Lage, die von dem Wert in dem FPB MEM Low Vector Access Offset-Register bestimmt werden. Schreiben zu diesem Register ersetzen den DW von Daten von dem FPB MEM Low-Vektor an der Lage, die von dem Wert in dem FPB MEM Low Vector Access Offset-Register bestimmt werden. Falls das FPB MEM Low Vector Supported-Bit gelöscht ist, ist es Hardware erlaubt, dieses Bit als RO zu implementieren, und der Wert in diesem Feld ist undefiniert. Der Standardwert für dieses Feld ist 0000h.
  • Tabelle 10 veranschaulicht eine beispielhafte Implementierung eines FPB MEM High Vector Control 1-Registers. Bei einem Beispiel kann das FPB MEM High Vector Control-1-Register ein Offset von 24h haben. Tabelle 10: FPB MEM High Vector Control 1-Register
    Bitposition Registerbeschreibung
    0 FPB MEM High Vector Enable - Wenn gesetzt, wird der FPB MEM High Vector-Mechanismus aktiviert.
    Falls das FPB MEM High Vector Supported-Bit gelöscht ist, ist es Hardware erlaubt, dieses Feld als RO zu implementieren, und in diesem Fall ist der Wert in diesem Feld undefiniert.
    Der Standardwert dieses Bits ist 0b.
    3:1 Reserviert
    7:4 FPB MEM High Vector Granularity - Der Wert, der von der Software zu diesem Feld geschrieben wird, steuert die Granularität des FPB MEM High Vektors und die erforderliche Ausrichtung des Felds FPB MEM High Vector Start Lower (darunter).
    Es ist Software erlaubt, jede beliebige zulässige Granularität aus der folgenden Tabelle ungeachtet des Werts in dem Feld FPB MEM High Vector Size Supported auszuwählen.
    Definierte Codierungen sind:
    Wert Granularität Start-Ausrichtungsauflage
    000b 256MB <keine Auflage>
    001b 512MB ...0b
    010b 1GB ...00b
    011b 2GB ...000b
    100b 4GB ...0000b
    101b 8GB ...00000b
    110b 16GB ...000000b
    111b 32GB ...0000000b
    Basierend auf der implementierten FPB MEM High Vector Größe, ist es Hardware erlaubt, als RW nur diejenigen Bits dieses Felds zu implementieren, die auf Nicht-Null-Werte programmiert werden können, wobei es in diesem Fall den höherrangigen Bits erlaubt ist, zu 0 fest verdrahtet zu sein (aber nicht zwingend).
    Falls das FPB MEM High Vector Supported-Bit gelöscht ist, ist es Hardware erlaubt, dieses Feld als RO zu implementieren, und der Wert in diesem Feld ist undefiniert.
    Der Standardwert für dieses Feld ist 0000b.
    27:8 Reserviert
    31:28 FPB MEM High Vector Start Lower - Der Wert, den die Software zu diesem Feld schreibt, setzt die niedrigwertigeren Bits der Basisadresse, an der der FPB MEM High Vector angewandt wird.
    Software muss dieses Feld auf einen Wert programmieren, der naturgemäß gemäß dem Wert in dem Feld FPB MEM High Vector Granularity wie hier angegeben ausgerichtet ist (das heißt die niedrigwertigeren Bits sind Nullen):
    FPB MEM High Vector Granularity Auflage
    0000b <keine Auflage>
    0001b ...0b
    0010b ...00b
    0011b ...000b
    0100b ...0000b
    0101b ...00000b
    0110b ...000000b
    0111b ...0000000b
    Falls gegen diese Forderung verstoßen wird, ist das Hardwareverhalten undefiniert.
    Falls das FPB MEM High Vector Supported-Bit gelöscht ist, ist es Hardware erlaubt, dieses Feld als RO zu implementieren, und der Wert in diesem Feld ist undefiniert.
    Der Standardwert für dieses Feld ist 00h.
  • Tabelle 11 veranschaulicht eine beispielhafte Implementierung eines FPB MEM High Vector Control 2-Registers. Bei einem Beispiel kann das FPB MEM High Vector Control-2-Register ein Offset von 28h haben. Tabelle 11: FPB MEM High Vector Control 2-Register
    Bitposition Registerbeschreibung
    31:0 FPB MEM High Vector Start Upper - Der Wert, den die Software zu diesem Feld schreibt, gibt Bits 63:32 der Basisadresse, an der der FPB MEM High Vektor angewandt wird, an.
    Falls das FPB MEM High Vector Supported-Bit gelöscht ist, ist es Hardware erlaubt, dieses Bit als RO zu implementieren, und der Wert in diesem Feld ist undefiniert.
    Der Standardwert für dieses Feld ist 00000000h.
  • Tabelle 12 veranschaulicht eine beispielhafte Implementierung eines FPB MEM High Vector Access Control-Registers. Bei einem Beispiel kann das FPB MEM High Vector Access Control-Register ein Offset von 2Ch haben. Tabelle 12: FPB MEM High Vector Access Control-Register
    Bitposition Registerbeschreibung
    7:0 FPB MEM High Vector Access Offset - Der Wert in diesem Feld gibt das Offset des 32b-Abschnitts des FPB BD-, MEM Low- oder MEM High -Vektors an, das mittels des FPB MEM High Vector Access Data-Registers gelesen oder geschrieben werden kann.
    Die Bits dieses Felds bilden den Wert in dem Feld FPB MEM High Vector Granularity, wie hier gezeigt, ab:
    Offset-Bits Dieses Feld
    000b 2:0 2:0 (7:3 nicht verwendet)
    001b 3:0 3:0 (7:4 nicht verwendet)
    010b 4:0 4:0 (7:5 nicht verwendet)
    011b 5:0 5:0 (7:6 nicht verwendet)
    100b 6:0 6:0 (7 nicht verwendet)
    101b 7:0 7:0
    Bits in diesem Feld, die gemäß der oben stehenden Tabelle nicht verwendet werden, müssen von der Software als 0b geschrieben werden, und es ist erlaubt (aber nicht zwingend), dass sie als RO implementiert werden.
    Falls das FPB MEM High Vector Supported-Bit gelöscht ist, ist es Hardware erlaubt, dieses Feld als RO zu implementieren, und der Wert in diesem Feld ist undefiniert.
    Der Standardwert für dieses Feld ist 00h.
    13:8 Reserviert
    15:14 FPB Vector Select - Der Wert, der in dieses Feld geschrieben ist, wählt den Vektor, auf den an dem angegebenen FPB Vector Access-Offset zugegriffen wird, aus, codiert als:
    00: BD
    01: MEM Low
    10: MEM High
    11: Reserviert
    Der Standardwert für dieses Feld kann 00b sein
    31:16 Reserviert
  • Tabelle 13 veranschaulicht eine beispielhafte Implementierung eines FPB MEM High Vector Access Data-Registers. Bei einem Beispiel kann das FPB MEM High Vector Access Data-Register ein Offset von 30h haben. Tabelle 13: FPB MEM High Vector Access Data-Register
    Bitposition Registerbeschreibung
    31:0 FPB MEM High Vector Data - Auslesungen aus diesem Register geben den DW von Daten von dem FPB MEM High Vector an der Lage, die von dem Wert in dem FPB MEM High Vector Access Offset-Register bestimmt wird, zurück. Schreibvorgänge zu diesem Register ersetzen den DW von Daten von dem FPB MEM High Vektor an der Lage, die von dem Wert in dem FPB MEM High Vector Access Offset-Register bestimmt wird.
    Falls das FPB MEM High Vector Supported-Bit gelöscht ist, ist es Hardware erlaubt, dieses Feld als RO zu implementieren, und der Wert in diesem Feld ist undefiniert.
    Der Standardwert für dieses Feld ist 0000h.
  • Bei einer alternativen Implementierung kann an Stelle des Bereitstellens separater Vector Access Offset- und Vector Data-Register für jeden Vektor ein einziges Vector Access Offset-Register mit der Hinzufügung eines Felds verwendet werden, um anzugeben, auf welchen Vektor zuzugreifen ist, und ein einziges Vector Data-Register kann verwendet werden, um die Lese- oder Schreibvorgänge zu dem angegebenen Vektor auszuführen. Bei einer solchen Implementierung kann das Indikatorfeld als ein Zwei-Bit-Feld implementiert werden, das derart codiert ist, dass ein Wert von 00 (binär) einen Zugriff auf den BD-Vektor angibt, ein Wert von 01 (binär) einen Zugriff auf den MEM Low-Vektor angibt, ein Wert von 10 (binär) einen Zugriff auf den MEM High-Vektor angibt, und ein Wert von 11 (binär) einen reservierten Wert angibt.
  • Es sei angemerkt, dass die oben beschriebenen Geräte, Verfahren und Systeme in einem beliebigen elektronischen Bauteil oder System, wie oben erwähnt, implementiert werden können. Als spezifische Darstellungen stellen die nachfolgenden Figuren beispielhafte Systeme für den Einsatz der Erfindung, wie sie hier beschrieben ist, bereit. Da die nachfolgenden Systeme detaillierter beschrieben werden, wird eine Anzahl unterschiedlicher Verschaltungen offenbart, beschrieben und aus der oben stehenden Erörterung wieder aufgegriffen. Und wie ohne Weiteres ersichtlich ist, können die oben beschriebenen Fortschritte auf beliebige jener Verschaltungen, Strukturen oder Architekturen angewandt werden.
  • Unter Bezugnahme auf 11, ist eine Ausführungsform eines Blockdiagramms für ein Rechensystem, das einen Multicore-Prozessor aufweist, abgebildet. Ein Prozessor 1100 weist einen beliebigen Prozessor oder beliebige Verarbeitungsbauteile auf, wie einen Mikroprozessor, einen eingebetteten Prozessor, einen digitalen Signalprozessor (DSP), einen Netzwerkprozessor, einen handgehaltenen Prozessor, einen Anwendungsprozessor, einen Coprozessor, ein Ein-Chip-System (SOC) oder andere Bauteile zum Ausführen von Code. Der Prozessor 1100 weist bei einer Ausführungsform mindestens zwei Kerne, nämlich Kern 1101 und 1102 auf, die asymmetrische Kerne oder symmetrische Kerne (die veranschaulichte Ausführungsform) aufweisen können. Der Prozessor 1100 kann jedoch eine beliebige Anzahl von Bearbeitungselementen, die symmetrisch oder asymmetrisch sein können, aufweisen.
  • Bei einer Ausführungsform verweist ein Verarbeitungselement auf Hardware oder Logik zum Unterstützen eines Software-Threads. Beispiele für Hardwareverarbeitungselemente weisen Folgende auf: eine Thread-Einheit, einen Thread-Slot, eine Verarbeitungseinheit, einen Kontext, eine Kontexteinheit, einen Logikprozessor, einen Hardware-Thread, einen Kern und/oder ein beliebiges anderes Element, das fähig ist, einen Zustand für einen Prozessor, wie einen Ausführungszustand oder architekturellen Zustand zu halten. Mit anderen Worten verweist bei einer Ausführungsform ein Verarbeitungselement auf jede Hardware, die fähig ist, unabhängig mit Code assoziiert zu werden, wie ein Software-Thread, ein Betriebssystem, eine Anwendung oder ein anderer Code. Ein physischer Prozessor (oder Prozessorsockel) verweist typischerweise auf eine integrierte Schaltung, die möglicherweise eine beliebige Anzahl anderer Verarbeitungselemente, wie Kerne oder Hardware-Threads, aufweist.
  • Ein Kern verweist oft auf eine Logik, die sich auf einer integrierten Schaltung befindet, die fähig ist, einen unabhängigen architekturellen Zustand zu halten, wobei jeder unabhängig gehaltene architekturelle Zustand mit mindestens einigen dedizierten Ausführungsressourcen assoziiert ist. Im Gegensatz zu Kernen verweist ein Hardware-Thread typischerweise auf eine beliebige Logik, die sich auf einer integrierten Schaltung befindet, die fähig ist, einen unabhängigen architekturellen Zustand zu halten, wobei die unabhängig gehaltenen architekturellen Zustände gemeinsamen Zugang zu Ausführungsressourcen haben. Wie man sieht, werden bestimmte Ressourcen gemeinsam genutzt, und andere sind einem architekturellen Zustand dediziert, wobei die Linie zwischen der Nomenklatur eines Hardware-Threads und Kerns überlappt. Ein Kern und ein Hardware-Thread werden jedoch oft von einem Betriebssystem als individuelle logische Prozessoren betrachtet, wobei das Betriebssystem fähig ist, Vorgänge auf jedem logischen Prozessor individuell zu planen.
  • Der physische Prozessor 1100, wie in 11 veranschaulicht, weist zwei Kerne, nämlich den Kern 1101 und den Kern 1102 auf. Hier werden der Kern 1101 und der Kern 1102 als symmetrische Kerne betrachtet, das heißt Kerne mit denselben Konfigurationen, Funktionseinheiten und/oder mit derselben Logik. Bei einer anderen Ausführungsform weist ein Kern 1101 einen Out-of-Order-Prozessorkern auf, während der Kern 1102 einen In-Order-Prozessorkern aufweist. Die Kerne 1101 und 1102 können jedoch individuell aus einem beliebigen Kerntyp ausgewählt werden, wie ein nativer Kern, ein Software-verwalteter Kern, ein Kern, der angepasst ist, um eine native Instruction Set Architecture (ISA) auszuführen, ein Kern, der angepasst ist, um eine übersetzte Instruction Set Architecture (ISA) auszuführen, ein mitgestalteter Kern oder ein anderer bekannter Kern. In einer heterogenen Kernumgebung (das heißt asymmetrische Kerne) kann eine Form von Übersetzung, wie binäre Übersetzung, eingesetzt werden, um Code auf einem oder beiden Kernen zu planen oder auszuführen. Um jedoch die Erläuterung vorankommen zu lassen, sind die Funktionseinheiten, die in dem Kern 1101 veranschaulicht sind, unten ausführlicher beschrieben, da die Einheiten in dem Kern 1102 auf eine ähnliche Art in der abgebildeten Ausführungsform arbeiten.
  • Wie abgebildet, weist der Kern 1101 zwei Hardware-Threads 1101a und 1101b auf, die auch Hardware-Thread-Slots 1101a und 1101b genannt werden können. Software-Entitäten, wie ein Betriebssystem, sehen folglich den Prozessor 1100 bei einer Ausführungsform potentiell als vier separate Prozessoren, das heißt vier logische Prozessoren oder Verarbeitungselemente, die fähig sind, vier Software-Threads gleichzeitig auszuführen. Wie oben angedeutet, ist ein erster Thread mit Architekturzustandsregistern 1101a assoziiert, ein zweiter Thread ist mit Architekturzustandsregistern 1101b assoziiert, ein dritter Thread kann mit Architekturzustandsregistern 1102a assoziiert sein, und ein vierter Thread kann mit Architekturzustandsregistern 1102b assoziiert sein. Hier kann jedes der Architekturzustandsregister (1101a, 1101b, 1102a und 1102b) Verarbeitungselemente, Thread-Slots oder Thread-Einheiten, wie oben beschrieben, genannt werden. Wie veranschaulicht, werden die Architekturzustandsregister 1101a in Architekturzustandsregistern 1101b repliziert, so dass individuelle Architekturzustände/Kontexte für den logischen Prozessor 1101a und den logischen Prozessor 1101b gespeichert werden können. In dem Kern 1101 können andere kleinere Ressourcen, wie Anweisungszeiger und Umbenennungslogik in einem Zuweiser- und Umbenennungsblock 1130 auch für die Threads 1101a und 1101b repliziert werden. Einige Ressourcen, wie Neuordnungspuffer in einer Neuordnungs-/Retirement-Einheit 1134, ILTB 1120, Lade-/Speicherpuffer und Warteschlangen, können durch Partitionierung gemeinsam verwendet werden. Andere Ressourcen, wie interne Allzweckregister, Page-Table-Basisregister, Low-Level-Daten-Cache und Data-TLB 1115, Ausführungseinheit(en) 1140 und Abschnitte einer Out-of-Order-Einheit 1135 werden potenziell vollständig gemeinsam verwendet.
  • Der Prozessor 1100 weist oft andere Ressourcen auf, die vollständig gemeinsam verwendet werden können, durch Partitionieren gemeinsam verwendet werden können oder nach/zu Verarbeitungselementen dediziert sind. In 11 ist eine Ausführungsform eines rein beispielhaften Prozessors mit veranschaulichenden logischen Einheiten/Ressourcen eines Prozessors veranschaulicht. Zu bemerken ist, dass ein Prozessor beliebige dieser Funktionseinheiten aufweisen oder weglassen kann, sowie beliebige andere Funktionseinheiten, Logik oder Firmware, die nicht abgebildet sind, aufweisen kann. Wie veranschaulicht, weist der Kern 1101 einen vereinfachten repräsentativen Out-Of-Order (OOO)-Prozessorkern auf. Aber ein In-Order-Prozessor kann bei unterschiedlichen Ausführungsformen verwendet werden. Der OOO-Kern weist einen Branch-Target-Puffer 1120 auf, um Branches, die auszuführen/genommen werden sollen, vorherzusagen, und einen Anweisungsübersetzungspuffer (I-TLB) 1120, um Adressübersetzungseinträge für Anweisungen zu speichern.
  • Der Kern 1101 weist ferner ein Decodemodul 1125 auf, das mit der Holeinheit 1120 gekoppelt ist, um geholte Elemente zu decodieren. Fetch-Logik weist bei einer Ausführungsform individuelle Sequenzierer auf, die jeweils mit den Thread-Slots 1101a, 1101b assoziiert sind. Üblicherweise ist der Kern 1101 mit einer ersten ISA assoziiert, die Anweisungen, die auf dem Prozessor 1100 ausführbar sind, definiert/spezifiziert. Oft weisen Maschinencodeanweisungen, die zu der ersten ISA gehören, einen Abschnitt der Anweisung (ein Opcode genannt) auf, der eine Anweisung oder einen Vorgang, die/der auszuführen ist, referenziert/spezifiziert. Die Decodierlogik 1125 weist Schaltungen auf, die diese Anweisungen aus ihren Opcodes erkennen und die decodierten Anweisungen in die Pipeline zum Verarbeiten wie von der ersten ISA definiert, weitergeben. Wie unten ausführlicher besprochen, weisen Decoder 1125 bei einer Ausführungsform Logik auf, die ausgelegt oder angepasst ist, um spezifische Anweisungen, wie eine Transaktionsanweisung, zu erkennen. Als ein Resultat des Erkennens durch die Decoder 1125, führt die Architektur oder der Kern 1101 spezifische, vordefinierte Aktionen aus, um Aufgaben, die mit der entsprechenden Anweisung assoziiert sind, auszuführen. Es ist wichtig festzuhalten, dass beliebige der Aufgaben, Blöcke, Vorgänge und Verfahren, die hier beschrieben sind, als Reaktion auf eine einzige oder mehrere Anweisungen ausgeführt werden können, von welchen einige neue oder alte Anweisungen sein können. Zu bemerken ist, dass die Decoder 1126 bei einer Ausführungsform dieselbe ISA (oder einen Subsatz dieser) erkennen. Alternativ erkennen bei einer heterogenen Kernumgebung die Decoder 1126 eine zweite ISA (entweder einen Subsatz der ersten ISA oder eine getrennte ISA).
  • Bei einem Beispiel weist der Zuweiser- und Umbenennungsblock 1130 einen Zuweiser auf, um Ressourcen zu reservieren, wie Registerdateien, um Anweisungsverarbeitungsresultate zu speichern. Die Threads 1101a und 1101b sind jedoch potentiell zur Out-Of-Order-Ausführung fähig, wobei der Zuweiser- und Umbenennungsblock 1130 auch andere Ressourcen reserviert, wie Neuordnungspuffer, um Anweisungsresultate zu verfolgen. Die Einheit 1130 kann auch einen Register-Renamer aufweisen, um Programm-/Anweisungsreferenzregister in andere Register intern zu dem Prozessor 1100 umzubenennen. Die Neuordnungs-/Retirement-Einheit 1135 weist Komponenten wie die Neuordnungspuffer, die oben erwähnt sind, Ladepuffer und Speicherpuffer auf, um Out-Of-Order-Ausführung zu und später In-Order-Retirement von Anweisungen, die Out-Of-Order ausgeführt wurden, zu unterstützen.
  • Ein Scheduler- und Ausführungseinheit(en)-Block 1140 weist bei einer Ausführungsform eine Schedulereinheit auf, um Anweisungen/Vorgang auf Ausführungseinheiten zu planen. Eine Gleitkommaanweisung wird zum Beispiel auf einem Port einer Ausführungseinheit, die eine verfügbare Gleitkomma-Ausführungseinheit hat, geplant. Registerdateien, die mit den Ausführungseinheiten assoziiert sind, sind ebenfalls vorhanden, um Informationsanweisungsverarbeitungsresultate zu speichern. Beispielhafte Ausführungseinheiten weisen eine Gleitkomma-Ausführungseinheit, eine Ganzzahlausführungseinheit, eine Jump-Ausführungseinheit, eine Ladeausführungseinheit, eine Speicherausführungseinheit und andere bekannte Ausführungseinheiten auf.
  • Lower Level Daten-Cache und Datenübersetzungspuffer (D-TLB) 1150 sind mit Ausführungseinheit(en) 1140 gekoppelt. Der Daten-Cache soll Elemente, die kürzlich verwendet wurden/an welchen kürzlich Vorgänge vorgenommen wurden, wie Datenoperanden, die potentiell in Speicherkohärenzzuständen gehalten werden, speichern. Das D-TLB soll neueste Virtuell-/Linear-zu-physisch- Adressübersetzungen speichern. Als ein spezifisches Beispiel kann ein Prozessor eine Seitentabellenstruktur aufweisen, um physischen Speicher in eine Vielzahl virtueller Seiten zu gliedern.
  • Hier verwenden die Kerne 1101 und 1102 den Zugriff auf einen Cache höheren Niveaus oder „further out“, wie einen Cache zweiten Niveaus, der mit einer On-Chip-Schnittstelle assoziiert ist, gemeinsam. Zu bemerken ist, dass höheres Niveau oder further-out auf Cache-Niveaus verweist, die zunehmen oder weiter von der/den Ausführungseinheit(en) entfernt sind. Bei einer Ausführungsform ist ein Cache höheren Niveaus ein Daten-Cache des letzten Niveaus, der letzte Cache in der Speicherhierarchie auf dem Prozessor 1100, wie ein Daten-Cache zweiten oder dritten Niveaus. Ein Cache höheren Niveaus ist jedoch nicht darauf eingeschränkt, da er mit einem Anweisungs-Cache assoziiert sein oder diesen aufweisen kann. Ein Trace-Cache, ein Typ von Anweisungs-Cache, kann stattdessen nach dem Decoder 1125 gekoppelt werden, um kürzlich decodierte Traces zu speichern. Hier verweist eine Anweisung potentiell auf eine Makro-Anweisung (das heißt eine allgemeine Anweisung, die von den Decodern erkannt wird), die in eine Anzahl von Mikroanweisungen (Mikrovorgänge) aufgegliedert werden kann.
  • In der abgebildeten Konfiguration weist der Prozessor 1100 auch ein On-Chip-Schnittstellenmodul 1110 auf. Historisch befand sich ein Speichercontroller, der unten ausführlicher beschrieben ist, in einem Rechensystem außerhalb des Prozessors 1100. Bei diesem Szenario soll eine On-Chip-Schnittstelle 1110 mit Bauteilen außerhalb des Prozessors 1100, wie mit einem Systemspeicher 1175, einem Chipsatz (der oft einen Speichercontrollerhub aufweist, um mit dem Speicher 1175 zu verbinden, und einen E/A-Controllerhub, um Peripherievorrichtungen zu verbinden), einem Speichercontrollerhub, einer Northbridge oder anderen integrierten Schaltung kommunizieren. Und bei diesem Szenario kann der Bus 1105 eine bekannte Verschaltung aufweisen, wie einen Multi-Drop-Bus, eine Punkt-zu-Punkt-Verschaltung, eine serielle Verschaltung, einen parallelen Bus, einen kohärenten (zum Beispiel Cache-kohärenten) Bus, eine geschichtete Protokollarchitektur, einen differenziellen Bus und einen GTL-Bus.
  • Der Speicher 1175 kann für den Prozessor 1100 allein bestimmt sein oder gemeinsam mit anderen Bauteilen in einem System genutzt werden. Herkömmliche Beispiele dieser Typen von Speicher 1175 weisen DRAM, SRAM, nichtflüchtigen Speicher (NV-Speicher) und andere bekannte Speichervorrichtungen auf. Zu bemerken ist, dass das Bauteil 1180 einen Grafikbeschleuniger, einen Prozessor oder eine Karte, der/die mit einem Speichercontrollerhub gekoppelt ist, Datenspeicher, der mit einem E/A-Controllerhub gekoppelt ist, einen drahtlosen Sender/Empfänger, ein Flash-Bauteil, einen Audiocontroller, einen Netzwerkcontroller oder ein anderes bekanntes Bauteil aufweisen kann.
  • Da mehr Logik und Bauteile auf einem einzigen Die, wie einem SOC, integriert werden können, kann jedes dieser Bauteile neuerdings auf einem Prozessor 1100 integriert werden. Bei einer Ausführungsform befindet sich zum Beispiel ein Speichercontrollerhub auf demselben Package und/oder Die mit dem Prozessor 1100. Hier weist ein Abschnitt des Kerns (ein „On-Core“-Abschnitt) 1110 einen oder mehr Controller zur Schnittstellenbildung mit anderen Bauteilen, wie dem Speicher 1175 oder einem Grafikbauteil 1180, auf. Die Konfiguration, die eine Verschaltung und Controller zur Schnittstellenbildung mit solchen Bauteilen aufweist, wird oft ein „On-Core“ (oder eine On-Core-Konfiguration) genannt. Als ein Beispiel weist eine On-Chip-Schnittfläche 1110 eine Ringverschaltung für On-Chip-Kommunikation und einen seriellen Hochgeschwindigkeits-Punkt-zu-Punkt-Link 1105 für Off-Chip-Kommunikation auf. In der SOC-Umgebung können sogar noch mehr Bauteile, wie eine Netzwerkschnittstelle, Co-Prozessoren, Speicher 1175, Grafikprozessor 1180 und beliebige andere bekannte Computerbauteile/-schnittstellen auf einem einzigen Die oder einer einzigen integrierten Schaltung integriert werden, um kleinen Formfaktor mit hoher Funktionalität und geringem Stromverbrauch bereitzustellen.
  • Bei einer Ausführungsform ist der Prozessor 1100 fähig, einen Compiler-, Optimierungs- und/oder Übersetzercode 1177 auszuführen, um Anwendungscode 1176 zu kompilieren, übersetzen und/oder optimieren, um das Gerät und die Verfahren, die hier beschrieben sind, zu unterstützen oder eine Schnittstelle mit ihnen zu bilden. Ein Compiler weist oft ein Programm oder einen Satz von Programmen zum Übersetzen von Quelltext/Code in Zieltext/Code auf. Gewöhnlich erfolgt eine Kompilation von Programm-/Anwendungscode mit einem Compiler in mehreren Phasen und Durchgängen, um Hi-Level-Programmiersprachencode in Low-Level-Maschinen- oder Assembliersprachcode umzuwandeln. Compiler mit einem einzigen Durchgang können jedoch noch für einfache Kompilation eingesetzt werden. Ein Compiler kann beliebige bekannte Kompilationstechniken einsetzen und beliebige bekannte Compilervorgänge ausführen, wie lexikalische Analyse, Vorverarbeitung, Parsen, semantische Analyse, Code-Erzeugung, Code-Umwandlung und Code-Optimierung.
  • Größere Compiler weisen oft mehrfache Phasen auf, diese Phasen sind jedoch meistens innerhalb von zwei Hauptphasen enthalten: (1) ein Frontend, das heißt im Allgemeinen wo syntaktische Verarbeitung, semantische Verarbeitung und etwas Umwandlung/Optimierung stattfinden können, und (2) ein Backend, das heißt im Allgemeinen wo Analyse, Umformungen, Optimierungen und Codeerzeugung stattfinden. Einige Compiler verweisen auf eine Mitte, die das Verwischen von klarer Trennung zwischen einem Frontend und einem Backend eines Compilers veranschaulicht. Daraus resultiert, dass Verweis auf Einfügen, Assoziation, Erzeugung oder ein anderer Vorgang eines Compilers in einer beliebigen der oben erwähnten Phasen oder Durchgänge sowie in beliebigen anderen bekannten Phasen oder Durchgängen eines Compilers stattfinden kann. Als ein veranschaulichendes Beispiel fügt ein Compiler potenziell Vorgänge, Abrufe, Funktionen usw. in eine oder mehr Kompilationsphasen ein, wie das Einfügen von Abrufen/Vorgängen in einer Frontendphase der Kompilation, und dann das Umwandeln der Abrufe/Vorgänge in Low-Level-Code während einer Umformungsphase. Zu bemerken ist, dass während dynamischer Kompilation Compiler-Code oder dynamischer Optimierungscode solche Vorgänge/Abrufe einfügen sowie den Code zur Ausführung während der Laufzeit optimieren kann. Als ein spezifisches veranschaulichendes Beispiel kann Binärcode (bereits kompilierter Code) dynamisch während der Laufzeit optimiert werden. Hier kann der Programmcode den dynamischen Optimierungscode, den Binärcode oder eine Kombination dieser aufweisen.
  • Ähnlich wie ein Compiler, übersetzt ein Übersetzer, wie ein binärer Übersetzer, Code entweder statisch oder dynamisch, um Code zu optimieren und/oder übersetzen. Der Verweis auf Ausführung von Code, Anwendungscode, Programmcode oder andere Softwareumgebung kann daher auf Folgendes verweisen: (1) Ausführen eines oder mehrerer Compilerprogramm(e)s, Optimierungscodeoptimierer oder Übersetzer, dynamisch oder statisch, um Programmcode zu kompilieren, Softwarestrukturen zu warten, andere Vorgänge auszuführen, Code zu optimieren oder Code zu übersetzen; (2) Ausführung eines Hauptprogrammcodes, der Vorgänge/Abrufe aufweist, wie Anwendungscode, der optimiert/kompiliert wurde; (3) Ausführung eines anderen Programmcodes, wie Bibliotheken, assoziiert mit dem Hauptprogrammcode, um Softwarestrukturen zu warten, andere Software in Zusammenhang mit Vorgängen auszuführen oder Code zu optimieren, oder (4) eine Kombination dieser.
  • Unter Bezugnahme auf 12 ist ein Blockdiagramm eines Systems 1200 gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Wie in 12 gezeigt, ist das Mehrfachprozessorsystem 1200 ein Punkt-zu-Punkt-Verschaltungssystem und weist einen ersten Prozessor 1270 und einen zweiten Prozessor 1280, der über eine Punkt-zu-Punkt-Zwischenverbindung 1250 gekoppelt ist, auf. Jeder der Prozessoren 1270 und 1280 kann eine beliebige Version eines Prozessors sein. Bei einer Ausführungsform sind 1252 und 1254 Teil einer kohärenten seriellen Punkt-zu-Punkt-Verschaltungsfabric, wie die Quick Path Interconnect (QPI)-Architektur von Intel. Als ein Resultat, kann die Erfindung innerhalb der QPI-Architektur implementiert werden.
  • Obwohl sie nur mit zwei Prozessoren 1270, 1280 gezeigt ist, muss man verstehen, dass der Schutzbereich der vorliegenden Erfindung nicht darauf beschränkt ist. Bei anderen Ausführungsformen können in einem gegebenen Prozessor ein oder mehr zusätzliche Prozessoren vorliegen.
  • Die Prozessoren 1270 und 1280 sind jeweils integrierte Speichercontrollereinheiten 1272 und 1282 aufweisend gezeigt. Der Prozessor 1270 weist als Teil seiner Buscontrollereinheiten Punkt-zu-Punkt(P-P)-Schnittstellen 1276 und 1278 auf; der zweite Prozessor 1280 weist ähnlich P-P-Schnittstellen 1286 und 1288 auf. Die Prozessoren 1270 und 1280 können Daten über eine Punkt-zu-Punkt(P-P)-Schnittstelle 1250 unter Verwendung von P-P-Schnittstellenschaltungen 1278, 1288 austauschen. Wie in 12 gezeigt, koppeln IMCs 1272 und 1282 die Prozessoren mit jeweiligen Speichern, nämlich einem Speicher 1232 und einem Speicher 1234, die Teile eines Hauptspeichers sein können, die lokal an den jeweiligen Prozessoren angebracht sind.
  • Die Prozessoren 1270, 1280 können jeweils Informationen über individuelle P-P-Schnittstellen 1252, 1254 mit einem Chipsatz 1290 unter Verwenden von Punkt-zu-Punkt-Schnittstellenschaltkreisen 1276, 1294, 1286, 1298 austauschen. Der Chipsatz 1290 tauscht auch Informationen mit einer Hochleistungs-Grafikschaltung 1238 über eine Schnittstellenschaltung 1292 entlang einer Hochleistungs-Grafikverschaltung 1239 aus.
  • Ein (nicht gezeigter) gemeinsam verwendeter Cache kann in beiden Prozessoren oder außerhalb beider Prozessoren enthalten sein, jedoch über eine P-P-Verschaltung mit den Prozessoren verbunden sein, so dass lokale Cacheinformationen von einem der Prozessoren oder beiden in dem gemeinsam verwendeten Cache gespeichert werden können, falls ein Prozessor in einen Niederleistungsmodus gesetzt wird.
  • Der Chipsatz 1290 kann über eine Schnittstelle 1296 mit einem ersten Bus 1216 gekoppelt werden. Bei einer Ausführungsform kann der erste Bus 1216 ein PCI-Bus (PCI: Peripheral Component Interconnect) oder ein Bus, wie etwa ein PCI-Express-Bus oder ein anderer E/A-Verschaltungsbus der dritten Generation, sein, obwohl der Schutzumfang der vorliegenden Erfindung nicht darauf beschränkt ist.
  • Wie in 12 gezeigt, können diverse E/A-Vorrichtungen 1214 zusammen mit einer Busbrücke 1218, die den ersten Bus 1216 mit einem zweiten Bus 1220 koppelt, mit dem ersten Bus 1216 gekoppelt sein. Bei einer Ausführungsform weist der zweite Bus 1220 einen LPC-Bus (Low Pin Count) auf. Diverse Vorrichtungen sind bei einer Ausführungsform mit einem zweiten Bus 1220 gekoppelt, der zum Beispiel eine Tastatur und/oder Maus 1222, Kommunikationsvorrichtungen 1227 und eine Speichereinheit 1228, wie ein Plattenlaufwerk oder eine andere Massenspeichervorrichtung, die oft Anweisungen/Code und Daten 1230 aufweist, gekoppelt. Ferner ist ein Audio-E/A 1224 mit dem zweiten Bus 1220 gekoppelt gezeigt. Zu bemerken ist, dass andere Architekturen möglich sind, wobei die enthaltenen Komponenten und Verschaltungsarchitekturen variieren. Zum Beispiel kann ein System an Stelle der Punkt-zu-Punkt-Architektur der 12 einen Multi-Drop-Bus oder eine andere solche Architektur implementieren.
  • Obwohl die vorliegende Erfindung mit Bezug auf eine begrenzte Anzahl von Ausführungsformen beschrieben wurde, wird der Fachmann zahlreiche Modifikationen und Varianten davon zu würdigen wissen. Es wird beabsichtigt, dass die anliegenden Ansprüche alle solche Modifikationen und Varianten, wie sie in den wahren Geist und den Schutzumfang dieser vorliegenden Erfindung fallen, decken.
  • Aspekte der Ausführungsformen können eines oder eine Kombination der folgenden Beispiele aufweisen:
    • Beispiel 1 ist ein System, Verfahren, Gerät oder Speichermedium mit Anweisungen, die darauf gespeichert sind, die ausführbar sind, um eine Maschine zu veranlassen, eine Vielzahl von Bauteilen in einem System zu identifizieren und jedem der Vielzahl von Bauteilen eine jeweilige Adresse zuzuweisen. Jedes Bauteil in der Vielzahl von Bauteilen ist in dem System durch mindestens einen jeweiligen einer Vielzahl von Bussen verbunden, und das Zuweisen der Adresse zu einem Bauteil weist das Bestimmen auf, ob die Adresse gemäß einem ersten Adressiersystem oder einem zweiten Busadressiersystem zuzuweisen ist, wobei das erste Adressiersystem eine einzige Busnummer innerhalb eines Bus-/Bauteil-/Funktion (BDF)-Adressraums zu jedem Bauteil zuweist, das in dem ersten Adressiersystem adressiert ist, und das zweite Busadressiersystem eine einzige Bus-Bauteilnummer innerhalb des BDF-Adressraums zuweist.
    • Beispiel 2 kann den Gegenstand des Beispiels 1 aufweisen, wobei eine besondere Busnummer wiederverwendet wird, um zwei oder mehr Bauteile in dem zweiten Adressiersystem zu adressieren.
    • Beispiel 3 kann den Gegenstand eines beliebigen der Beispiele 1-2 aufweisen, wobei das Zuweisen der Adressen das Festlegen eines Bereichs von Busnummern in dem BDF-Adressraum aufweist, der zu verwenden ist, um Bauteile gemäß dem zweiten Adressiersystem zu adressieren.
    • Beispiel 4 kann den Gegenstand des Beispiels 3 aufweisen, wobei der Bereich von Busnummern mit einem besonderen Schalter assoziiert ist und die Busnummern in dem Bereich von Busnummern in den Bus-Bauteilnummern verwendet werden, um zu jedem Bauteil, das mit dem Schalter verbunden ist, zugewiesen zu werden.
    • Beispiel 5 kann den Gegenstand des Beispiels 4 aufweisen, wobei die Bauteile die mit dem Schalter verbunden sind, ein Segment aufweisen.
    • Beispiel 6 kann den Gegenstand eines beliebigen der Beispiele 1 bis 5 aufweisen, wobei die Adressen Konfigurationsadressen aufweisen.
    • Beispiel 7 kann den Gegenstand eines beliebigen der Beispiele 1 bis 6 aufweisen, wobei der BDF-Adressraum einen auf Peripheral Component Interconnect (PCI) basierenden Adressraum aufweist.
    • Beispiel 8 kann den Gegenstand des Beispiels 7 aufweisen, wobei jede Bus-Bauteilnummer eine Acht-Bit-Busnummer und eine Fünf-Bit-Bauteilnummer aufweist.
    • Beispiel 9 ist ein Gerät, das einen Port aufweist, um ein besonderes Paket zu empfangen, wobei der Port eine abflachende Portalbrücke (FPB) aufweist, wobei die FPB eine Primärseite und eine Sekundärseite aufweist, wobei die Primärseite mit einem ersten Satz von Bauteilen verbindet, die gemäß einem ersten Adressiersystem adressiert sind, und die Sekundärseite mit einem zweiten Satz von Bauteilen verbindet, die gemäß einem zweiten Adressiersystem adressiert sind. Die FPB soll ferner bestimmen, ob das besondere Paket zu der Primärseite oder der Sekundärseite basierend auf Adressinformationen in dem besonderen Paket zu routen ist, wobei das erste Adressiersystem eine einzige Busnummer innerhalb eines Bus-/Bauteil-/Funktion (BDF)-Adressraums für jedes Bauteil in dem ersten Satz von Bauteilen verwendet, und das zweite Busadressiersystem eine einzige Bus-Bauteilnummer für jedes Bauteil in dem zweiten Satz von Bauteilen verwendet.
    • Beispiel 10 kann den Gegenstand des Beispiels 9 aufweisen, wobei die jeweiligen Bus-Bauteilnummern, die einer Vielzahl von Bauteilen in dem zweiten Satz von Bauteilen zugewiesen sind, jeweils eine besondere Busnummer und eine unterschiedliche Bauteilnummer aufweisen.
    • Beispiel 11 kann den Gegenstand eines beliebigen der Beispiele 9-10 aufweisen, wobei das Primär-Adressiersystem ein etabliertes Adressiersystem aufweist.
    • Beispiel 12 kann den Gegenstand eines beliebigen der Beispiele 9-11 aufweisen, wobei der BDF-Adressierraum einen auf Peripheral Component Interconnect Express (PCle) basierenden Konfigurationsraum aufweist.
    • Beispiel 13 kann den Gegenstand eines beliebigen der Beispiele 9 bis 12 aufweisen, wobei er ferner eine Vielzahl von Ports aufweist, wobei der Port einen besonderen der Vielzahl von Ports aufweist und mindestens ein anderer Port in der Vielzahl von Ports eine FPB aufweist.
    • Beispiel 14 kann den Gegenstand des Beispiels 13 aufweisen, wobei die Vielzahl von Ports mindestens einen Port ohne eine FPB aufweist.
    • Beispiel 15 kann den Gegenstand des Beispiels 13 aufweisen, das ferner einen Schalter aufweist, wobei der Schalter die Vielzahl von Ports aufweist.
    • Beispiel 16 kann den Gegenstand des Beispiels 13 aufweisen, das ferner einen Root Complex aufweist, wobei der Root Complex die Vielzahl von Ports aufweist.
    • Beispiel 17 kann den Gegenstand eines beliebigen der Beispiele 9 bis 16 aufweisen, das ferner ein BD Control 1-Register aufweist.
    • Beispiel 18 kann den Gegenstand eines beliebigen der Beispiele 9 bis 17 aufweisen, das ferner ein BD Vector Control 2-Register aufweist.
    • Beispiel 19 kann den Gegenstand eines beliebigen der Beispiele 9 bis 18 aufweisen, das ferner ein BD Vector Access Control-Register aufweist.
    • Beispiel 20 kann den Gegenstand eines beliebigen der Beispiele 9 bis 19 aufweisen, das ferner ein BD Vector Access Data-Register aufweist.
    • Beispiel 21 kann den Gegenstand eines beliebigen der Beispiele 9 bis 20 aufweisen, das ferner ein MEM Low Vector Control-Register aufweist.
    • Beispiel 22 kann den Gegenstand eines beliebigen der Beispiele 9 bis 21 aufweisen, das ferner ein MEM Low Vector Access Control-Register aufweist.
    • Beispiel 23 kann den Gegenstand eines beliebigen der Beispiele 9 bis 22 aufweisen, das ferner ein MEM Low Vector Access Data-Register aufweist.
    • Beispiel 24 kann den Gegenstand eines beliebigen der Beispiele 9 bis 23 aufweisen, das ferner ein MEM High Vector Control-1-Register aufweist.
    • Beispiel 25 kann den Gegenstand eines beliebigen der Beispiele 9 bis 24 aufweisen, das ferner ein MEM High Vector Control-2-Register aufweist.
    • Beispiel 26 kann den Gegenstand eines beliebigen der Beispiele 9 bis 25 aufweisen, das ferner ein MEM High Vector Access Control-Register aufweist.
    • Beispiel 27 kann den Gegenstand eines beliebigen der Beispiele 9 bis 26 aufweisen, das ferner ein MEM High Vector Access Data-Register aufweist.
    • Beispiel 28 ist ein Speichermedium, auf dem Anweisungen gespeichert sind, wobei die Anweisungen, wenn sie auf einer Maschine ausgeführt werden, die Maschine veranlassen, Register eines Bauteils zu konfigurieren, um ein Primärbus-Adresssystem in einem Bus-/Bauteil-/Funktion (BDF)-Raum zu unterstützen, und ein alternatives Bus-Adressiersystem, das dieselbe Busnummer innerhalb eines oder Memory-Mapped Eingangs-/Ausgangs (E/A) (MMIO)-Raums bei der Nummerierung einer Vielzahl unterschiedlicher Busse eines Systems verwendet.
    • Beispiel 29 kann den Gegenstand des Beispiels 28 aufweisen, wobei die Anweisungen ferner ausführbar sind, um einen zulässigen Bereich von BD, der einer Sekundärseite einer Root Port-Brücke zuzuweisen sind, einzuschränken.
    • Beispiel 30 ist ein System, das ein Schaltbauteil, eine Hierarchie von Bauteilen, die mit dem Schaltbauteil verbunden ist, einen Satz aus einem oder mehr anderen Bauteilen, der/die mit dem Schaltbauteil verbunden sind, aufweist, wobei der Satz aus einem oder mehr anderen Bauteilen gemäß einem ersten Adressiersystem adressiert ist, wobei die Hierarchie von Bauteilen gemäß einem zweiten Adressiersystem adressiert ist, wobei das erste Adressiersystem eine einzige Busnummer innerhalb eines Bus-/Bauteil-/Funktion (BDF)-Adressraums für jedes Bauteil in dem ersten Satz von Bauteilen verwendet, und das zweite Adressiersystem eine einzige Bus-Bauteilnummer für jedes Bauteil in dem zweiten Satz von Bauteilen verwendet.
    • Beispiel 31 kann den Gegenstand des Beispiels 30 aufweisen, wobei die Schaltvorrichtung einen ersten Port zum Verbinden mit der Hierarchie von Bauteilen aufweist, und der erste Port Brückenlogik aufweist, um zu bestimmen, ob ein besonderes Paket auf eine Primärseite der Brücke unter Einsetzen des ersten Adressiersystems oder auf eine Sekundärseite der Brücke unter Verwenden des zweiten Adressiersystem zu routen ist.
    • Beispiel 32 kann den Gegenstand eines beliebigen der Beispiele 30-31 aufweisen, und kann ferner ein Fähigkeitsregister aufweisen, das zu codieren ist, um selektiv Unterstützung für das Sekundär-Adressiersystem auf einem besonderen Port des Schalters zu aktivieren.
    • Beispiel 33 kann den Gegenstand eines beliebigen der Beispiele 30-32 aufweisen, wobei das Schaltbauteil einen Root Complex aufweist.
  • Ein Design kann von Gestaltung zur Simulation zur Herstellung diverse Stufen durchlaufen. Daten, die ein Design darstellen, können das Design in einer Anzahl von Weisen darstellen. Zunächst kann die Hardware, was bei Simulationen sinnvoll ist, unter Verwendung einer Hardware-Beschreibungssprache oder einer anderen funktionalen Beschreibungssprache dargestellt werden. Zusätzlich kann in einigen Stufen des Designprozesses ein Schaltungsebenenmodell mit Logik und/oder Transistor-Gates erzeugt werden. Darüber hinaus erreichen die meisten Designs zu irgendeinem Zeitpunkt ein Datenniveau, das die physische Platzierung diverser Bauteile in dem Hardware-Modell darstellt. Im Fall, bei dem herkömmliche Halbleiterherstellungstechniken verwendet werden, können die Daten, die das Hardware-Modell darstellen, die Daten sein, die das Vorhandensein oder das Nichtvorhandensein diverser Merkmale auf unterschiedlichen Maskenschichten für Masken, die zum Herstellen der integrierten Schaltung verwendet werden, spezifizieren. In jeglicher Darstellung des Designs können die Daten in einer beliebigen Form eines maschinenlesbaren Mediums gespeichert werden. Ein Speicher oder eine magnetische oder optische Speicherung, wie eine Disc, kann das maschinenlesbare Medium zum Speichern von Informationen sein, die über optische oder elektrische Wellen übertragen werden, die moduliert oder anderswie erzeugt werden, um solche Informationen zu übertragen. Wenn eine elektrische Trägerwelle, die Code oder Design angibt oder trägt, übertragen wird, insofern als Kopieren, Puffern oder Wiederübertragen des elektrischen Signals ausgeführt wird, wird eine neue Kopie erstellt. Ein Kommunikationsanbieter oder ein Netzanbieter kann daher auf einem greifbaren, maschinenlesbaren Medium, zumindest vorübergehend ein Element, wie etwa Informationen, die in eine Trägerwelle codiert sind, die Techniken von Ausführungsformen der vorliegenden Erfindung verkörpern, speichern.
  • Ein Modul, so wie es hier verwendet wird, bezieht sich auf jegliche Kombination von Hardware, Software und/oder Firmware. Ein Modul weist beispielsweise Hardware, wie einen Mikrocontroller, auf, der mit einem nichtflüchtigen Medium assoziiert ist, um Code zu speichern, der dafür ausgelegt ist, durch den Mikrocontroller ausgeführt zu werden. Eine Bezugnahme auf ein Modul betrifft folglich bei einer Ausführungsform die Hardware, die besonders konfiguriert ist, um den Code, der auf einem nichtflüchtigen Medium zu halten ist, zu erkennen und/oder auszuführen. Des Weiteren betrifft der Gebrauch eines Moduls bei einer Ausführungsform das nichtflüchtige Medium, das den Code aufweist, der spezifisch angepasst ist, um von dem Mikrocontroller ausgeführt zu werden, um vorbestimmte Vorgänge auszuführen. Wie man folgern kann, kann sich der Begriff Modul (bei diesem Beispiel) bei noch einer weiteren Ausführungsform auf die Kombination des Mikrocontrollers und des nichtflüchtigen Mediums beziehen. Häufig variieren Modulgrenzen, die als separat dargestellt sind, allgemein und überlappen sich potentiell. Beispielsweise können sich ein erstes und ein zweites Modul Hardware, Software, Firmware oder eine Kombination davon gemeinsam verwenden, während potentiell etwas unabhängige Hardware, Software oder Firmware behalten wird. Bei einer Ausführungsform weist der Gebrauch des Begriffs Logik Hardware, wie Transistoren, Register oder andere Hardware, wie etwa programmierbare Logikbauteile auf.
  • Verwendung der Phrase „zum“ oder „ausgelegt zum“ in einer Ausführungsform betrifft das Anordnen, Zusammenstellen, Herstellen, Anbieten zum Verkauf, Importieren und/oder Konzipieren eines Geräts, von Hardware, Logik oder einem Element, um eine designierte oder bestimmte Aufgabe durchzuführen. Bei diesem Beispiel ist ein Gerät oder ein Element davon, die/das nicht arbeitet, immer noch „ausgelegt“, um eine designierte Aufgabe auszuführen, wenn es konzipiert, gekoppelt und/oder verschaltet ist, um die designierte Aufgabe auszuführen. Als rein veranschaulichendes Beispiel kann ein Logik-Gate während des Betriebs eine 0 oder eine 1 bereitstellen. Aber ein Logik-Gate, das „ausgelegt ist“, um ein Freischaltsignal zu einem Taktgeber bereitzustellen, weist nicht jedes potentielle Logik-Gate auf, das möglicherweise eine 1 oder 0 bereitstellt. Stattdessen ist das Logik-Gatter eines, das auf irgendeine Weise gekoppelt ist, bei der während des Betriebs die ausgegebene 1 oder 0 den Taktgeber freischalten soll. Es sei noch einmal angemerkt, dass Verwendung des Begriffs „ausgelegt zum“ keinen Betrieb erfordert, sondern sich stattdessen auf den latenten Zustand eines Geräts, von Hardware und/oder eines Elements fokussiert, wobei der latente Zustand des Geräts, der Hardware und/oder des Elements ausgelegt ist, um eine besondere Aufgabe durchzuführen, wenn das Gerät, die Hardware und/oder das Element in Betrieb ist.
  • Ferner betrifft der Gebrauch der Phrasen „fähig zum“ und/oder „betreibbar zum“ bei einer Ausführungsform irgendeine Einrichtung, Logik, Hardware und/oder ein Element, die derart ausgelegt sind, dass sie den Gebrauch des Geräts, der Logik, der Hardware und/oder des Elements auf eine spezifizierte Art ermöglichen. Es sei wie oben angemerkt, dass sich eine Verwendung von „fähig zum“ oder „betreibbar zum“ in einer Ausführungsform auf den latenten Zustand des Geräts, der Logik, Hardware und/oder des Elements bezieht, wobei die Einrichtung, Logik, Hardware und/oder das Element nicht in Betrieb ist, aber auf eine solche Weise ausgelegt ist, dass Gebrauch eines Geräts auf eine spezifizierte Art ermöglicht wird.
  • Wie hier verwendet, weist ein Wert eine beliebige bekannte Darstellung einer Zahl, eines Zustands, eines logischen Zustands oder eines binären logischen Zustands auf. Häufig wird die Verwendung von Logikpegeln, Logikwerten oder von logischen Werten auch als 1-en und 0-en bezeichnet, was einfach binäre Logikzustände darstellt. Beispielsweise bezieht sich 1 auf einen hohen Logikpegel und 0 bezieht sich auf einen tiefen Logikpegel. Bei einer Ausführungsform kann eine Speicherzelle, wie etwa eine Transistor- oder Flash-Zelle, in der Lage sein, einen einzigen logischen Wert oder mehrere logische Werte zu halten. Allerdings wurden andere Darstellungen von Werten in Computersystemen verwendet. Die Dezimalzahl zehn kann zum Beispiel auch als ein Binärwert von 1010 und ein hexadezimaler Buchstabe A dargestellt werden. Ein Wert weist daher eine beliebige Darstellung von Informationen auf, die fähig ist, in einem Computersystem gehalten zu werden.
  • Darüber hinaus können Zustände durch Werte oder Teile von Werten dargestellt werden. Beispielsweise kann ein erster Wert, wie etwa eine logische Eins, einen Standard- oder Anfangszustand darstellen, wohingegen ein zweiter Wert, wie etwa eine logische Null, einen Nichtstandardzustand darstellen kann. Zusätzlich betreffen die Begriffe Reset und Set bei einer Ausführungsform jeweils einen Standard- und einen aktualisierten Wert oder Zustand. Beispielsweise weist ein Standardwert potentiell einen hohen logischen Wert, das heißt Reset, auf, wohingegen ein aktualisierter Wert potentiell einen tiefen logischen Wert, das heißt Set, aufweist. Es sei angemerkt, dass jegliche Kombination von Werten verwendet werden kann, um eine beliebige Anzahl von Zuständen darzustellen.
  • Die oben dargelegten Ausführungsformen von Verfahren, Hardware, Software, Firmware oder Code können über Anweisungen oder Code, die/der auf einem maschinenzugreifbaren, maschinenlesbaren, computerzugreifbaren oder computerlesbaren Medium, das durch ein Verarbeitungselement ausführbar ist, gespeichert sein. Ein nichtflüchtiges maschinenzugreifbares/lesbares Medium weist jeglichen Mechanismus, der Informationen in einer durch eine Maschine, wie etwa einen Computer oder ein elektronisches System, lesbaren Form bereitstellt (das heißt speichert und/oder überträgt) auf. Beispielsweise weist ein nichtflüchtiges, maschinenzugreifbares Medium Direktzugriffsspeicher (RAM - Random Access Memory), wie etwa statisches RAM (SRAM) oder dynamisches RAM (DRAM); ROM; ein magnetisches oder optisches Speicherungsmedium; Flash-Speichervorrichtungen; elektrische Speicherungsvorrichtungen; optische Speicherungsvorrichtungen; akustische Speicherungsvorrichtungen; andere Formen von Speicherungsvorrichtungen zum Halten von Informationen, die von transitorischen (propagierten) Signalen (zum Beispiel Trägerwellen, Infrarotsignale, Digitalsignale) empfangen werden; usw., die von den nichtflüchtigen Medien unterschieden werden müssen, die Informationen davon empfangen können.
  • Anweisungen, die zum Programmieren von Logik verwendet werden, um Ausführungsformen der Erfindung auszuführen, können innerhalb eines Speichers in dem System, wie einem DRAM, Cache, Flash-Speicher oder anderer Speicherung gespeichert werden. Darüber hinaus können die Anweisungen über ein Netzwerk oder mittels anderer computerlesbarer Medien verteilt werden. Somit kann ein maschinenlesbares Medium unter anderem jeglichen Mechanismus zum Speichern oder Übertragen von Informationen in einer Form, die durch eine Maschine (zum Beispiel einen Computer) gelesen werden kann, aufweisen, wie etwa Floppy-Disketten, optische Disks, Compact Disc, Nurlesespeicher (CD-ROMs) und magneto-optische Disks, Nurlesespeicher (ROMs), Direktzugriffsspeicher (RAM), löschbaren programmierbaren Nurlesespeicher (EPROM), elektrisch löschbaren programmierbaren Nurlesespeicher (EEPROM), magnetische oder optische Karten, Flash-Speicher oder eine greifbare, maschinenlesbare Speicherung, die bei der Informationsübermittlung über das Internet über elektrische, optische, akustische oder andere Formen von verbreiteten Signalen (zum Beispiel Trägerwellen, Infrarotsignale, Digitalsignale usw.) verwendet werden. Das computerlesbare Medium weist folglich jegliche Art von greifbarem maschinenlesbarem Medium auf, das geeignet ist, um elektronische Anweisungen und Informationen in einer Form, die durch eine Maschine (zum Beispiel einen Computer) lesbar ist, zu speichern oder zu übertragen.
  • Durchgehend bedeutet in dieser Spezifikation Bezugnahme auf „(genau) eine Ausführungsform“ oder „eine Ausführungsform“, dass ein bestimmtes Merkmal, eine bestimmte Struktur oder eine bestimmte Eigenschaft, das bzw. die in Verbindung mit der Ausführungsform beschrieben wird, in mindestens einer Ausführungsform der vorliegenden Techniken enthalten ist. Das Erscheinen der Phrasen „bei (genau) einer Ausführungsform“ oder „bei einer Ausführungsform“ an diversen Stellen über die gesamte Spezifikation hinweg bezieht sich also nicht immer notwendigerweise auf dieselbe Ausführungsform. Darüber hinaus können die besonderen Merkmale, Strukturen oder Charakteristiken in einer oder mehreren Ausführungsformen auf eine beliebige geeignete Art und Weise kombiniert werden.
  • In der vorhergehenden Spezifikation wurde unter Bezugnahme auf spezifische beispielhafte Ausführungen eine detaillierte Beschreibung gegeben. Es ist jedoch offensichtlich, dass diverse Modifikationen und Änderungen daran vorgenommen werden können, ohne vom breiteren Geist und Schutzumfang der Erfindung, wie sie in den beigefügten Ansprüchen dargelegt ist, abzuweichen. Die Spezifikation und die Zeichnungen sind demnach eher in einem veranschaulichenden Sinne als in einem einschränkenden Sinne zu betrachten. Darüber hinaus betrifft der vorhergegangene Gebrauch von Ausführungsform und anderer beispielhafter Sprache nicht notwendigerweise dieselbe Ausführungsform oder dasselbe Beispiel, sondern kann andere und unterschiedliche Ausführungsformen sowie potentiell dieselbe Ausführungsform betreffen.
  • 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
    • US 62303487 [0001]

Claims (34)

  1. Mindestens ein maschinenzugreifbares Speichermedium, auf dem Anweisungen gespeichert sind, wobei die Anweisungen, wenn sie auf einer Maschine ausgeführt werden, die Maschine zu Folgendem veranlassen: Identifizieren einer Vielzahl von Bauteilen in einem System, wobei jedes Bauteil der Vielzahl von Bauteilen in dem System durch mindestens einen jeweiligen einer Vielzahl logischer Busse verbunden ist; Zuweisen einer jeweiligen Adresse zu jedem der Vielzahl von Bauteilen, wobei das Zuweisen der Adresse zu einem Bauteil Folgendes umfasst: Bestimmen, ob die Adresse gemäß einem ersten Adressiersystem oder einem zweiten Bus-Adressiersystem zuzuweisen ist, wobei das erste Adressiersystem eine einzige Busnummer innerhalb eines Bus-/Bauteil-/Punktion (BDF)-Adressraums jedem Bauteil zuweist, das in dem ersten Adressiersystem adressiert ist, und das zweite Bus-Adressiersystem eine einzige Bus-Bauteilnummer innerhalb des BDF-Adressraums zuweist.
  2. Speichermedium nach Anspruch 1, wobei eine besondere Busnummer wieder verwendet wird, um zwei oder mehr Bauteile in dem zweiten Adressiersystem zu adressieren.
  3. Speichermedium nach Anspruch 1, wobei das Zuweisen der Adressen das Festlegen eines Bereichs von Busnummern in dem BDF-Adressraum aufweist, der zu verwenden ist, um Bauteile gemäß dem zweiten Adressiersystem zu adressieren.
  4. Speichermedium nach Anspruch 3, wobei der Bereich von Busnummern mit einem besonderen Schalter assoziiert ist und die Busnummern in dem Bereich von Busnummern in den Bus-Bauteilnummern verwendet werden, um jedem Bauteil, das mit dem Schalter verbunden ist, zugewiesen zu werden.
  5. Speichermedium nach Anspruch 4, wobei die Bauteile, die mit dem Schalter verbunden sind, ein Segment umfassen.
  6. Speichermedium nach Anspruch 1, wobei die Adressen Konfigurationsadressen umfassen.
  7. Speichermedium nach Anspruch 1, wobei der BDF-Adressraum einen Peripheral Component Interconnect (PCI)-basierten Adressraum umfasst.
  8. Speichermedium nach Anspruch 7, wobei jede Bus-Bauteilnummer eine Acht-Bit-Busnummer und eine Fünf-Bit-Bauteilnummer umfasst.
  9. Gerät, das Folgendes umfasst: einen Port, um ein besonderes Paket zu empfangen, wobei der Port eine abflachende Portalbrücke (FPB) umfasst, wobei die FPB eine Primärseite und eine Sekundärseite umfasst, wobei die Primärseite mit einem ersten Satz von Bauteilen verbindet, die gemäß einem ersten Adressiersystem adressiert sind, und die zweite Seite mit einem zweiten Satz von Bauteilen verbindet, die gemäß einem zweiten Adressiersystem adressiert sind; wobei die FPB ferner bestimmen soll, ob das besondere Paket auf der Primärseite oder der Sekundärseite basierend auf Adressinformationen in dem besonderen Paket zu routen ist, wobei das erste Adressiersystem eine einzige Busnummer innerhalb eines Bus-/Bauteil-/Funktion (BDF)-Adressraums für jedes Bauteil in dem ersten Satz von Bauteilen verwendet, und das zweite Bus-Adressiersystem eine einzige Bus-Bauteilnummer in dem BDF-Raum für jedes Bauteil in dem zweiten Satz von Bauteilen verwendet.
  10. Gerät nach Anspruch 9, wobei die jeweiligen Bus-Bauteilnummern, die einer Vielzahl von Bauteilen in dem zweiten Satz von Bauteilen zugewiesen sind, jeweils eine besondere Busnummer und eine unterschiedliche Bauteilnummer umfassen.
  11. Gerät nach Anspruch 9, wobei das Primäradressiersystem ein etabliertes Adressiersystem umfasst.
  12. Gerät nach Anspruch 9, wobei der BDF-Adressierraum einen Peripheral Component Interconnect Express (PCIe)-Konfigurationsraum umfasst.
  13. Gerät nach Anspruch 9, das ferner eine Vielzahl von Ports umfasst, wobei der Port einen besonderen der Vielzahl von Ports umfasst, und mindestens ein anderer Port in der Vielzahl von Ports eine FDB umfasst.
  14. Gerät nach Anspruch 13, wobei die Vielzahl von Ports mindestens einen Port ohne eine FPB umfasst.
  15. Gerät nach Anspruch 13, das ferner einen Schalter umfasst, wobei der Schalter die Vielzahl von Ports umfasst.
  16. Gerät nach Anspruch 13, das ferner einen Root Complex umfasst, wobei der Root Complex die Vielzahl von Ports umfasst.
  17. Gerät nach Anspruch 16, wobei das FPB-Fähigkeitsregister angibt, ob das zweite Adressiersystem für einen oder mehrere der Vielzahl unterschiedlicher Ressourcentypen aktiviert ist.
  18. Gerät nach einem der Ansprüche 9 bis 17, das ferner ein BD Control 1-Register umfasst.
  19. Gerät nach einem der Ansprüche 9 bis 18, das ferner ein BD Vector Control 2-Register umfasst.
  20. Gerät nach einem der Ansprüche 9 bis 19, das ferner ein BD Vector Access Control-Register umfasst.
  21. Gerät nach einem der Ansprüche 9 bis 20, das ferner ein BD Vector Access Data-Register umfasst.
  22. Gerät nach einem der Ansprüche 9 bis 21, das ferner ein MEM Low Vector Control-Register umfasst.
  23. Gerät nach einem der Ansprüche 9 bis 22, das ferner ein MEM Low Vector Access Control-Register umfasst.
  24. Gerät nach einem der Ansprüche 9 bis 23, das ferner ein MEM Low Vector Access Data-Register umfasst.
  25. Gerät nach einem der Ansprüche 9 bis 24, das ferner ein MEM High Vector Control 1-Register umfasst.
  26. Gerät nach einem der Ansprüche 9 bis 25, das ferner ein MEM High Vector Control 2-Register umfasst.
  27. Gerät nach einem der Ansprüche 9 bis 26, das ferner ein MEM High Vector Access Control-Register umfasst.
  28. Gerät nach einem der Ansprüche 9 bis 27, das ferner ein MEM High Vector Access Data-Register umfasst.
  29. Mindestens ein maschinenzugreifbares Speichermedium, auf dem Anweisungen gespeichert sind, wobei die Anweisungen, wenn sie auf einer Maschine ausgeführt werden, die Maschine zu Folgendem veranlassen: Konfigurieren von Registern eines Bauteils, um ein Primärbus-Adresssystem in einem Bus-/Bauteil-/Funktion (BDF)-Raum und ein alternatives Bus-Adressiersystem, das dieselbe Busnummer innerhalb eines oder Memory-Mapped Eingangs-/Ausgangs (E/A) (MMIO)-Raums bei der Nummerierung einer Vielzahl logischer unterschiedlicher logischer Busse eines Systems verwendet, zu unterstützen.
  30. Speichermedium nach Anspruch 29, wobei die Anweisungen ferner ausführbar sind, um einen zulässigen Bereich von BD, die einer Sekundärseite einer Root Port-Brücke zuzuweisen sind, einzuschränken.
  31. System, das Folgendes umfasst: ein Schaltbauteil; eine Hierarchie von Bauteilen, die mit dem Schaltbauteil verbunden ist; einen Satz aus einem oder mehreren Bauteilen, das/die mit dem Schaltbauteil verbunden ist/sind; wobei der Satz aus einem oder mehreren anderen Bauteilen gemäß einem ersten Adressiersystem adressiert ist, die Hierarchie von Bauteilen gemäß einem zweiten Adressiersystem adressiert ist, das erste Adressiersystem eine einzige Busnummer innerhalb eines Bus-/Bauteil-/Funktion (BDF)-Adressraums für jedes Bauteil in dem ersten Satz von Bauteilen verwendet und das zweite Adressiersystem eine einzige Bus-Bauteilnummer in dem BDF-Raum für jedes Bauteil in dem zweiten Satz von Bauteilen verwendet.
  32. System nach Anspruch 31, wobei die Schaltvorrichtung einen ersten Port zum Verbinden mit der Hierarchie von Bauteilen umfasst und der erste Port Brückenlogik umfasst, um zu bestimmen, ob ein besonderes Paket auf einer Primärseite der Brücke unter Einsetzen des ersten Adressiersystems oder auf einer Sekundärseite der Brücke unter Verwenden des zweiten Adressiersystem zu routen ist.
  33. System nach einem der Ansprüche 31 bis 32, das ferner ein Fähigkeitsregister umfasst, das zu codieren ist, um selektiv Unterstützung für das Sekundär-Adressiersystem auf einem besonderen Port des Schalters zu aktivieren.
  34. System nach einem der Ansprüche 31 bis 33, wobei das Schaltbauteil einen Root Complex umfasst.
DE112017001148.5T 2016-03-04 2017-02-02 Abflachende portalbrücke . Pending DE112017001148T5 (de)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201662303487P 2016-03-04 2016-03-04
US62/303,487 2016-03-04
US15/281,318 2016-09-30
US15/281,318 US10877915B2 (en) 2016-03-04 2016-09-30 Flattening portal bridge
PCT/US2017/016302 WO2017151267A1 (en) 2016-03-04 2017-02-02 Flattening portal bridge

Publications (1)

Publication Number Publication Date
DE112017001148T5 true DE112017001148T5 (de) 2018-11-22

Family

ID=59723633

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112017001148.5T Pending DE112017001148T5 (de) 2016-03-04 2017-02-02 Abflachende portalbrücke .

Country Status (5)

Country Link
US (3) US10877915B2 (de)
CN (2) CN108604209B (de)
DE (1) DE112017001148T5 (de)
TW (1) TWI743078B (de)
WO (1) WO2017151267A1 (de)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10877915B2 (en) 2016-03-04 2020-12-29 Intel Corporation Flattening portal bridge
US10545773B2 (en) * 2018-05-23 2020-01-28 Intel Corporation System, method, and apparatus for DVSEC for efficient peripheral management
JP7115128B2 (ja) * 2018-08-07 2022-08-09 富士通株式会社 情報処理装置、ブート方法及びブートプログラム
US10846250B2 (en) * 2018-11-12 2020-11-24 Arm Limited Apparatus and method for handling address decoding in a system-on-chip
US11132321B2 (en) * 2020-02-26 2021-09-28 Quanta Computer Inc. Method and system for automatic bifurcation of PCIe in BIOS
US11418455B2 (en) 2020-08-31 2022-08-16 Micron Technology, Inc. Transparent packet splitting and recombining
US11539623B2 (en) * 2020-08-31 2022-12-27 Micron Technology, Inc. Single field for encoding multiple elements
US11412075B2 (en) 2020-08-31 2022-08-09 Micron Technology, Inc. Multiple protocol header processing
US11296995B2 (en) 2020-08-31 2022-04-05 Micron Technology, Inc. Reduced sized encoding of packet length field
US11360920B2 (en) 2020-08-31 2022-06-14 Micron Technology, Inc. Mapping high-speed, point-to-point interface channels to packet virtual channels
CN112115092A (zh) * 2020-09-18 2020-12-22 苏州浪潮智能科技有限公司 一种pcie总线号的分配方法、装置、设备及存储介质

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5638527A (en) * 1993-07-19 1997-06-10 Dell Usa, L.P. System and method for memory mapping
US5838935A (en) 1995-06-15 1998-11-17 Intel Corporation Method and apparatus providing programmable decode modes for secondary PCI bus interfaces
DE19733906C2 (de) * 1997-08-05 1999-09-30 Siemens Ag Verfahren zur automatischen Adreßvergabe, Bussystem zur automatischen Adreßvergabe und Kommunikationsteilnehmer, die im Bussystem bzw. im Rahmen des Verfahrens einsetzbar sind
JP3277874B2 (ja) * 1998-01-29 2002-04-22 日本電気株式会社 Ieee1394ブリッジ
EP1286502A1 (de) * 2001-08-22 2003-02-26 Thomson Licensing S.A. Verfahren zur Verwaltung eines Netzwerks mit einer Brücke zwischen Havi-clustern
US20030115513A1 (en) * 2001-08-24 2003-06-19 David Harriman Error forwarding in an enhanced general input/output architecture and related methods
US7428523B2 (en) 2002-07-11 2008-09-23 Oracle International Corporation Portal bridge
DE10261174B3 (de) * 2002-12-20 2004-06-17 Daimlerchrysler Ag Automatische Adressierung auf Bussystemen
US7251703B1 (en) * 2004-02-27 2007-07-31 Entropic Communications, Inc. Method of time stamping to enable device bridging over dissimilar buses
US7620741B2 (en) * 2005-04-22 2009-11-17 Sun Microsystems, Inc. Proxy-based device sharing
TWI273423B (en) * 2005-07-15 2007-02-11 Via Tech Inc Computer system with multi-port bridge and an operating method of the same
US7502908B2 (en) * 2006-05-04 2009-03-10 International Business Machines Corporation Method for providing an address format compatible with different addressing formats used for addressing different sized address spaces
US7756014B1 (en) * 2007-02-22 2010-07-13 Integrated Device Technology, Inc. Device and method for handling catastrophic routing
US20080263248A1 (en) * 2007-04-20 2008-10-23 Harriman David J Multi-drop extension for a communication protocol
US7626418B1 (en) * 2007-05-14 2009-12-01 Xilinx, Inc. Configurable interface
US7752346B2 (en) * 2007-12-21 2010-07-06 Aprius, Inc. Universal routing in PCI-Express fabrics
US9106664B2 (en) * 2008-08-28 2015-08-11 Telefonaktiebolaget L M Ericsson (Publ) Method and apparatuses for maintaining service continuity to a centralization and continuity application server
US9195623B2 (en) 2010-06-23 2015-11-24 International Business Machines Corporation Multiple address spaces per adapter with address translation
WO2012023149A2 (en) * 2010-08-19 2012-02-23 Ineda Systems Pvt. Ltd Multi-root input output virtualization aware switch
US9355031B2 (en) * 2011-04-21 2016-05-31 International Business Machines Corporation Techniques for mapping device addresses to physical memory addresses
US8782321B2 (en) * 2012-02-08 2014-07-15 Intel Corporation PCI express tunneling over a multi-protocol I/O interconnect
CN103117929B (zh) * 2013-01-31 2015-12-23 中国科学院计算技术研究所 一种基于PCIe数据交换的通信方法及系统
CN103731317B (zh) * 2013-12-10 2017-02-08 福建星网锐捷网络有限公司 一种pcie地址映射检测的方法及装置
CN104285218B (zh) * 2013-12-31 2017-02-15 华为技术有限公司 一种扩展PCIe总线域的方法和装置
US9886391B2 (en) 2014-03-20 2018-02-06 International Business Machines Corporation Selective purging of PCI I/O address translation buffer
US10877915B2 (en) 2016-03-04 2020-12-29 Intel Corporation Flattening portal bridge

Also Published As

Publication number Publication date
CN108604209B (zh) 2023-08-04
US20170255582A1 (en) 2017-09-07
TW201732620A (zh) 2017-09-16
US20220334994A1 (en) 2022-10-20
US11321264B2 (en) 2022-05-03
US11768791B2 (en) 2023-09-26
US20210232522A1 (en) 2021-07-29
WO2017151267A1 (en) 2017-09-08
CN108604209A (zh) 2018-09-28
TWI743078B (zh) 2021-10-21
CN113868173A (zh) 2021-12-31
US10877915B2 (en) 2020-12-29

Similar Documents

Publication Publication Date Title
DE112017001148T5 (de) Abflachende portalbrücke .
DE112013002069B4 (de) Hohes Leistungsverbindungskohärenz-Protokoll
DE112016005910T5 (de) Architechtur für Software-Definierten Interconnect-Switch
DE112013007724B4 (de) System, vorrichtung und verfahren zur gemeinsamen benutzung von speicher und i/o-diensten zwischen knoten
DE102018004327A1 (de) Systeme und Verfahren zum Zugreifen auf Massenspeicher als Arbeitsspeicher
DE102019009207B3 (de) Vorrichtungen, verfahren und nichttransitorisches computerlesbares speichermedien für dvsec für eine effiziente peripheriegeräteverwaltung
DE102020120102A1 (de) Globale dauerhafte Speicherleerung
DE112013007732B4 (de) System und Vorrichtung zum Bestimmen und Melden eines Fehlers auf einer Bahn
DE102018006756A1 (de) Beschleuniger-Fabric
DE112017001430T5 (de) In-band-retimer-registerzugriff
DE112016004300T5 (de) Verfahren, gerät und system zum zuweisen von cache unter verwendung einer verkehrsklasse
DE102018213430A1 (de) Beschleuniger mit geringer Latenzzeit
DE112016006065T5 (de) Spekulative nummerierung von adressräumen für bus-einrichtungsfunktionen
DE102020125353A1 (de) Transaktionsschichtpaketformat
DE102018006797A1 (de) Kohärente Speichereinrichtungen über PCIe
DE102019132213A1 (de) Adressenübersetzung für skalierbare verlinkte Vorrichtungen
DE102020101958A1 (de) Dynamisches spurzugriffswechseln zwischen pcie-wurzelräumen
DE112014006490T5 (de) Verfahren, Vorrichtung und System zur Regelung von Leistung ungenutzter Hardware einer Linkschnittstelle
DE112015006516T5 (de) BUS-Einrichtung-Funktion-Adressraumabbildung
DE102018006852A1 (de) Verfahren, Vorrichtung und System für eine ThunderBolt-basierte Anzeigetopologie für duale Grafiksysteme
DE102018005753A1 (de) Serdes link training
DE112018001088T5 (de) Anwendung von framing-regeln für eine hochgeschwindigkeitsdatenverbindung
DE102019109119A1 (de) Host-verwalteter kohärenter gerätespeicher
DE102018006849A1 (de) Verfahren, Vorrichtung, System für frühe granulare Seitenhinweise anhand einer PCIE-Vorrichtung
DE112017004897T5 (de) Schreib-Semantik für persistenten Speicher auf PCIe mit vorhandener TLP-Definition

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R130 Divisional application to

Ref document number: 112017008370

Country of ref document: DE