Warum Schnittstellen und Busse mit jeder Version schneller werden, wenn sie physikalisch gleich sind?

Ein Schnittstellen- oder Computer-Erweiterungsbus wird mit jeder Version schneller, z. PCI Express 1.0 ist 4 GB/s, PCI Express 2.0 ist 8 GB/s, PCI Express 3.0 ist 16 GB/s. Ich verstehe, dass Dinge wie Mikroprozessoren schneller werden, weil neuere besser hergestellt werden, aber diese Busse sind alle physikalisch gleich (zumindest sehen sie so aus und sind kompatibel). Wie kommt es also, dass jede Version doppelt so schnell ist, wenn sie physikalisch der alten gleicht? Warum konnten es nicht gleich 16GB/s sein?

Denn signalisieren.
a) Weil sie nicht gleich sind und nur abwärtskompatibel sind. 3.0 ist abwärtskompatibel mit 1.0, aber 1.0 ist nicht aufwärtskompatibel mit 3.0. b) Weil wir damals nicht wussten wie. Wir lernen und wachsen und verbessern uns mit jeder Generation.

Antworten (3)

Es gibt mehrere Möglichkeiten, die Bandbreite einer Schnittstelle oder eines Busses zu verbessern:

  • Overhead-Codierung: Die meisten alten Busse verwenden 8B/10B- Codierung, während neuere Schnittstellen oder Busversionen 64B/66B und PCIe 3.0 sogar 128B/130B-Codierung verwenden. Mit 8B/10B senden Sie 20% mehr Daten als die nützlichen. Bei 64/66B beträgt das Overhead-Verhältnis nur 3,125 %. Was bedeutet das ? Im Allgemeinen sprechen wir über nutzbare Bandbreite bei Bussen. Wenn Sie also für einen 1-Gbit/s-Bus 8B/10B verwenden, beträgt die tatsächlich benötigte Bandbreite 1,25 Gbit/s. Aber die Overhead-Codierung hängt von der folgenden Entwicklung ab.

  • Moore's Law-Faktor: Im Laufe der Zeit haben Sie mehr Rechenleistung in einem Chip und können leistungsfähigere Algorithmen verwenden, die jedoch mehr Rechenleistung benötigen. Sie können auch dafür sorgen, dass Ihr Chip weniger Strom verbraucht oder leistungsfähigere Transceiver hat. Sie können auch die Frequenz Ihres Busses erhöhen.

  • Transceiver: Auch wenn wir von digitalem Bus sprechen, benötigt das übertragene Signal immer noch einen analogen Teil. Dies geschieht durch Transceiver. Sie sind sehr stromverbrauchende Teile eines ICs, und mit dem Mooreschen Gesetz und dem Schrumpfen werden Sie in der Lage sein, leistungsstärkere Transceiver zu haben als ein paar Jahre später. Sie verfügen auch über weiterentwickelte Entzerrungs- und Vorverzerrungsalgorithmen, die das zu sendende Signal über eine größere Entfernung oder die gleiche Entfernung, aber mit einer höheren Frequenz liefern.

  • Modulation: Ethernet-Standards verwenden unterschiedliche Puls-Amplituden-Modulationen (PAM-5, PAM-16), um mehr Daten über dasselbe 4-adrige Kabel senden zu können.

  • DDR : Verwenden Sie beide Taktflanken, um Daten abzutasten.

Das sind nur ein paar Fakten, die mir einfallen.

Warum können wir am Anfang keine sehr hohe Bandbreite haben? Probieren Sie das Gesetz von Moore aus. Ich denke, Sie können das Beste vom Besten in Entzerrung, Codierung und Modulation haben, aber Sie benötigen einen Chip, der sehr teuer und sehr stromverbrauchend ist.

Auch PCI Express 1.0 startete beispielsweise 2003 mit einer Bandbreite von 2 Gbit/s pro Lane. Zehn Jahre später haben wir mit PCI Express 4.0 fast 16 Gbit/s pro Lane. Aber brauchten wir 2003 einen 16-Gbit/s-Bus?

Unterhaltungselektronik braucht erschwingliche Lösungen für ihre Bedürfnisse. Wenn Sie versuchen, ihnen einen 10-Gbit/s-Bus für 15 US-Dollar zu verkaufen, wenn sie nur 5 Gbit/s für 10 US-Dollar benötigen, werden sie ihn nicht kaufen. Die Bushersteller wissen jedoch, dass im Laufe der Zeit ein höherer Bandbreitenbedarf besteht, und sie bereiten die Entwicklung vor, um kostengünstig zu sein.

Einfach weil der Bus selbst nur die halbe Miete ist.

Wie Sie sagten, verbessern sich Prozessoren aufgrund einer kleineren Verarbeitung und einer höheren Integration. Genau diese Prozessoren treiben die Signale auf diesen Bussen. Wenn sie mit höheren Durchsatzgeschwindigkeiten umgehen können und eine bessere Störfestigkeit erzielen, wird der Bus schneller.

Aber der Bus ist in das Motherboard integriert, nicht in den Prozessor. Sie können den gleichen Prozessor im Motherboard mit PCI 2 oder im Motherboard mit PCI 3 haben. Wie kann das also sein?
Denn die CPU selbst kümmert sich nicht um den PCI-Bus.
Der Coprozessor, die Southbridge und die Northbridge sind ebenfalls Prozessoren.
@Ignacio Vazquez-Abrams Was war also das Hindernis, um überhaupt einen Bus mit einer Geschwindigkeit von 16 GB/s zu erstellen?
@nhgtygbg Die Verbindungskabel mögen gleich sein, vielleicht mit engeren Toleranzen, aber was den Unterschied ausmacht, sind die Bustreiber, deren Design und Optimierung viel Zeit und Mühe kosten.
Neben den technischen Erfordernissen, auf die andere hingewiesen haben, gibt es kommerzielle Erfordernisse. Unternehmen können nicht 20 Jahre damit verbringen, eine Technologie zu perfektionieren, ohne finanzielle Rendite und ohne Garantie, dass die Technologie übernommen wird, wenn sie sie veröffentlichen. Sie werden stufenweise freigesetzt, um beide Risiken zu mindern.

Das meiste davon ist eine Frage des Abwägens von Bedarf und Kosten.

Beispielsweise hatte der ursprüngliche IBM-PC einen 8-Bit-Bus, der mit 4,77 MHz lief. Warum hatte es keinen breiteren, schnelleren Bus? Weil es eine CPU mit einem 8-Bit-Bus hatte, der mit 4,77 MHz lief. Ein breiterer und/oder schnellerer Bus hätte gebaut werden können, aber es war fast sinnlos, weil die CPU sowieso nicht mehr verwenden konnte. Um die Kosten angemessen zu halten, hatte es auch nicht viele hochintelligente Peripheriegeräte. Obwohl sie wussten, wie man schnellere Busse baut, hätte die Verwendung eines solchen zu wesentlich höheren Kosten, aber nur zu einer geringen oder keiner entsprechenden Verbesserung der Geschwindigkeit geführt - dem System haben so wenig Zeit damit verbracht, auf den Bus zu warten, dass selbst ein Bus mit unendlicher Bandbreite und null Latenz das gesamte System nicht viel schneller gemacht hätte.

Der PC/AT folgte ziemlich genau dem gleichen Muster - die Breite und Taktrate des Erweiterungsbusses stimmten genau mit dem externen Bus des Prozessors überein (16 Bit breit, anfänglich 6 MHz, später auf 8 MHz erhöht).

Der PCI-Bus wurde ursprünglich ungefähr auf die gleiche Weise entworfen. Zu dieser Zeit baute Intel (meistens) 486-CPUs mit einem externen Bus, der 32 Bit breit war und mit 33 MHz lief. Der PCI-Bus tat dasselbe.

Dann stagnierten die Dinge für eine Weile – obwohl PCI-Designs (unter dem Spitznamen PCI-X) auf 64 Bit erweitert und die Taktraten auf 66, 133, 266 und 533 MHz erhöht wurden, diese (insbesondere die 266- und 533-MHz-Varianten). ) wurde nie sehr populär. Einige der Varianten wurden in einigen Servern verwendet, aber selbst dort wurden sie nie besonders verbreitet.

Einiges davon wurde von der Politik angetrieben, aber vieles davon war einfach eine Frage der Kosten und des Mangels an Bedarf – die meisten Leute hatten einfach nicht viel Bedarf (oder sogar Verwendung) für einen Bus, der viel schneller als 32-Bit war , damals 33 MHz PCI. Im Grunde war der einzige Ort, an dem sie wirklich viel von größerer Bandbreite profitierten, bei Videokarten, für die AGP eine signifikante Verbesserung der Bandbreite zu viel geringeren Kosten ermöglichte.

PCI Express ist wirklich sehr ähnlich. Die Bandbreite war im Allgemeinen um einiges größer, als irgendjemand zu dieser Zeit wirklich gebrauchen konnte (selbst bei High-End-Grafikkarten), daher machte es keinen Sinn, einen teureren Bus zu bauen, um eine größere Bandbreite zu erhalten. Wenn überhaupt, wäre es wahrscheinlich sinnvoller zu fragen, warum sie sich die Mühe gemacht haben, so viel Bandbreite aufzubauen und/oder warum sie die Bandbreite so aggressiv erweitert haben, obwohl fast niemand die verfügbare Bandbreite wirklich benötigt oder nutzt.

Etwa die einzigen Antworten, die ich darauf habe, klingen wahrscheinlich zumindest ein wenig zynisch. Der erste ist einfacher Wettbewerb: Auch wenn es dem durchschnittlichen Verbraucher wenig wirklichen Nutzen bringt, sieht Intel wahrscheinlich zumindest einen Wettbewerbsvorteil darin, viel größere Bandbreitennummern als AMD bewerben zu können – und AMD dazu zu drängen, Geld für Forschung und Entwicklung auszugeben zumindest nahe dran sein, mitzuhalten.

Die zweite hängt von der fabelhaften Auslastung ab. Ich weiß es nicht genau, aber ich vermute, dass Intel im Grunde CPUs in ihren neuesten Fabriken baut. Wenn eine Fabrik für diesen Zweck veraltet ist, verwenden sie sie (höchstwahrscheinlich) zum Bau weniger kritischer Teile – insbesondere Nord- und Südbrücken. Da sie Fabriken haben, die noch vor wenigen Jahren auf dem neuesten Stand waren, ist ihr Transistorbudget für Brückenteile ziemlich groß, und sie würden dieses Budget wahrscheinlich gerne verwenden, um das bestmögliche Teil zu produzieren und den höchsten Preis zu rechtfertigen kann (was uns zum ersten Punkt zurückführt).

Die andere Seite der Medaille ist, dass die tatsächlichen Kosten für den Verbraucher auch recht gering sind, obwohl dies dem Verbraucher möglicherweise keinen großen Nutzen bringt. Sie können jetzt ein komplettes Motherboard für weniger als (zum Beispiel) kaufen, das ich früher für eine 10-Megabit/Sekunde-Ethernet-Karte bezahlt habe – und das Motherboard umfasst mindestens einen (und oft zwei) Gigabit-Ethernet-Anschlüsse, sechs oder acht SATA-Anschlüsse, ein Dutzend oder so USB-Anschlüsse usw. Kurz gesagt, selbst wenn sie ein ansonsten aktuelles Motherboard mit "nur" PCI-E 2.0 bauen würden, würde dies wahrscheinlich nicht zu einer signifikanten Kostenreduzierung führen.

Natürlich ist ein leistungsfähigeres Motherboard auch eine (geringfügig) bessere langfristige Investition – selbst wenn Sie es nicht sofort verwenden, ist es möglich, dass Sie (zum Beispiel) dieses Motherboard eine Weile weiter verwenden und schließlich die Grafik aufrüsten Karte auf etwas so Schnelles, dass sie, selbst wenn sie nicht die volle verfügbare Bandbreite nutzt, immer noch etwas mehr Bandbreite als der vorherige unterstützte Standard benötigt.

Betrachten wir es für einen Moment aus der anderen Richtung: Wie führt ein größeres Transistorbudget und eine leistungsfähigere Fab zu einem schnelleren Bus? Mindestens zwei Punkte sind sofort offensichtlich. Eines ist ziemlich einfach: Wenn Sie Transistoren verkleinern, schrumpft auch die Eingangskapazität eines Transistors. Obwohl Sie E/A-Puffer benötigen (und verwenden), führt die reduzierte Kapazität mehr oder weniger direkt dazu, dass Sie eine schnellere Signalisierung verwenden können (dh Anstiegs- und Abfallzeit werden reduziert). Zweitens, wenn Sie mehr Logik verwenden können, wird es praktisch, ausgefeiltere Signalisierungsschemata zu verwenden. Beispielsweise könnte ein älteres Schema 10 Bits über die Leitung für jeweils 8 Bits an Daten übertragen haben, die Sie übertragen wollten. Ein neueres (das eine ausgefeiltere Logik erfordert) könnte stattdessen 65 Datenbits codieren, die Sie als 66 Bits senden möchten, die über die Leitung gehen. Das erste führt zu 25 % Overhead, aber das zweite zu nur ~3 % Overhead. Natürlich zahlen Sie für diese erhöhte Übertragungsgeschwindigkeit in Form von mehr Transistoren an jedem Ende, um die Codierung/Decodierung durchzuführen.

Zusammenfassend lässt sich sagen, dass die Busbandbreite in typischen Verbrauchergeräten stark von den Kosten bestimmt wird. Die Technologie, um schneller zu bauen, ist sicherlich vorhanden, aber für die meisten Computer macht es einfach keinen Sinn.