Wie lautet die Etymologie des Wortes "gebucht" in "gebuchte PCIE-Transaktion"? Ich habe mit PCIE gearbeitet und verstehe den Unterschied zwischen "veröffentlichten" und "nicht veröffentlichten" PCIE-Transaktionen , aber ich verstehe nicht, was das Wort "veröffentlicht" bedeutet. Woher kommt "gepostet"? Was bedeutet das wirklich?
quelle
Um über PCIe-gebuchte Transaktionen Bescheid zu wissen, müssen Sie verstehen, was ein "veröffentlichtes Schreiben" für Legacy-PCI ist und was ein Legacy-PCI-Lesevorgang ist.
Bei einem älteren PCI-Lesevorgang und tatsächlich bei den meisten Bussen sendet die CPU einen Lesebefehl und die Leseadresse wartet darauf, dass das Gerät mit den Daten und einem "Fertig" -Signal antwortet. Grundsätzlich handelt es sich um eine Sache vom Typ Befehl und Antwort.
Normale Schreibvorgänge auf einem älteren PCI-Bus und vielen anderen Bussen sind ähnlich, außer dass der Befehl das Schreibsignal + Adresse + Daten ist und die Antwort nur "erledigt" ist. Das Problem dabei ist, dass für viele Systeme das "erledigt" nicht benötigt wird und nur Zeit braucht. Wenn das Peripheriegerät, auf das Sie schreiben, Schreibvorgänge mit voller Geschwindigkeit akzeptieren kann, ist das erledigt überhaupt nicht erforderlich.
Ein "geschriebenes Schreiben" ist ein Schreiben, das nicht auf ein "erledigt" wartet. Die CPU geht davon aus, dass der Schreibzyklus mit null Wartezuständen abgeschlossen wird, und wartet daher nicht auf den Vorgang. Dies beschleunigt das Schreiben erheblich. Für den Anfang muss es nicht auf die Antwort warten, sondern ermöglicht auch ein besseres Pipelining des Datenpfads ohne große Leistungseinbußen.
Im PCIe-Land werden alle Schreibvorgänge gebucht. PCIe nennt sie jedoch "gebuchte Transaktionen", da es viele Arten von Schreibvorgängen gibt (Speicherschreibvorgänge, E / A-Schreibvorgänge, Konfigurationsschreibvorgänge usw.). Es gibt auch einige andere Transaktionen, die keine Antwort haben.
Der Grund, warum alle Schreibvorgänge veröffentlicht werden, liegt darin, dass die serielle und paketbasierte Natur von PCIe die "Antwort" sehr langsam macht. Es ist üblich, dass das Lesen eines einzelnen Wortes mehrere Mikrosekunden dauert. Obwohl der Bus mit 2,5 Gigabit / Sekunde fährt, könnten Sie nur etwa 4 Megabyte / Sekunde erhalten, wenn Sie einzelne Wörter lesen. Wenn Sie dies in geschriebene Einzelwortschreibvorgänge ändern, steigt die Bandbreite auf etwa 60 Megabyte / Sekunde. Wechseln Sie zu Schreibvorgängen mit mehreren Wörtern, und Sie haben eine Geschwindigkeit von bis zu 250 Megabyte / Sekunde.
Es gibt in keinem Bus einen geposteten Lesevorgang, da für alle Lesevorgänge eine Antwort erforderlich ist (auch bekannt als die Daten, die Sie lesen).
quelle
Es ist hilfreich zu verstehen, dass ein PCI-Bus-Controller eine Schnittstelle zwischen einem lokalen Prozessorbus, dh der nativen Busstruktur der CPU, und dem PCI-Adapterbus bildet. Angenommen, Ihre CPU möchte Daten auf ein PCI-Gerät schreiben. Es gibt keine Geräteauswahl, die direkt von Ihrem nativen Busadressdecoder auf eine eingesteckte PCI-Karte ausgeführt wird. Die CPU schreibt also in einen Teil ihres lokalen physischen Adressraums, der in den PCI-Buscontroller decodiert wird. Wenn der PCI-Bus-Master den Schreibzyklus sieht, speichert er die Adresse und die Daten zwischen. Zu diesem Zeitpunkt wird der Rest der E / A-Transaktion von der CPU entkoppelt. Die CPU kann ihren Weg frei machen, das nächste tun, b / c an diesem Punkt, der Zyklus wurde auf den PCI-Bus-Controller 'gebucht'; Der PCI-Bus-Controller verwaltet dann die Auswahl des richtigen Geräts und beendet den E / A-Zyklus.
quelle