Pentium D Blockdiagramm?

pSyCrO

Cadet 2nd Year
Registriert
Jan. 2006
Beiträge
16
Hallo Computerbase-Community =)

Ich bin grad bisschen am verzweifeln, wegen dem Verstädnis des Blockdiagrammes vom Pentium D. :(

Auf dem Bild sind soviele Abkürzungen, dass ich im Google nichts sinnvolles finde.
FP bedeutet soviel wie Floating Point und ganz obend as BTB wird igrendwie mit Branch Trace.....? heißen :freak:

Aber unten beim Integer RF habe ich echt keine Ahnung.

Ich hoffe, dass sich hier wer mit Computerarchitekturen auskennt und mir das ansatzweiße nur erklären kann?
 

Anhänge

  • Pentium D Blockdiagramm.JPG
    Pentium D Blockdiagramm.JPG
    69,3 KB · Aufrufe: 326
Branch Target Buffer - darin sind die Adressen der nächsten Befehle, die wahrscheinlich ausgeführt werden. Der ganze obere Teil ist im Prinzip die spekulative Sprungvorhersage.

RF könnte Register File bedeuten und meint wohl alle Register, die also mit dem Fließkomma- oder Ganzzahlrechenwerk verbunden sind.
 
Kannst du mir vielleicht erklären wie das ganze da abläuft von oben beginnend?
Es kommen Befehle zur BTB und I-TLB (I-TLB=? Instruktion-Table....?), welche nachschaut ob es Sprünge geben könnte oder nicht und was passiert dann beim Decoder er wandelt welche Befehle in was für welche um?
 
TLB schimpft sich allgemein Translation Lookaside Buffer, kleiner Text dazu im Lexikon: http://de.wikipedia.org/wiki/Translation_Lookaside_Buffer

(es dürften sich zumindest einige Ablürzung im Lexikon/Wikipedia finden, also da auch mal rumstöbern)

Im Prinzip lädt die CPU einen ganzen Haufen von Befehlen, die bei x86 nach der von-Neumann-Architektur ja in einem Speicher zusammen mit ihren Operanden linear im Speicher liegen.

Normalerweise wird das immer schön hintereinander Befehl für Befehl gemacht. Die Sprungvorhersage ist bemüht, sich wiederholende Befehlssequenzen("Schleifen") zu erkennen und im Cache oder einem anderen Puffer zwischenzulagern. Speicherzugriffe sind heute aus CPU-Sicht halt ziemlich lahm, was man auch an den Taktraten erkennen kann. Früher waren die noch synchron. Zudem ist man bemüht, zukünftige Operationen, die mit den aktuellen nichts zu tun haben, vorzuziehen, um brachliegende Recheneinheiten in der CPU auszunutzen(Stichwort OOO, out-of-order-Operation).

Decoder: ein Befehl ist nur eine binäre Zahl. Heute meist noch 32 Bit. Anhand der Zahl, die ja einen bestimmten Befehl repräsentiert, stellt der Decoder quasi die CPU ein und sorgt dafür, dass die zu berechnenden Werte auch an der richtigen Recheneinheit landen.

Darüber hinaus sind Decoder heute zwingend nötig, da kein heutiger x86-Prozessor auch 1:1 die x86-Befehle versteht: es sind einfach zu viele und zu komplexe Befehle, um für jeden eine eigene Schaltung zu realisieren(Stichwort: CISC). Im Kern hat jeder Prozessor ab Pentium viele kleine Prozessoren, die dynamisch miteinander verschaltet werden können, um so viele verschiedene Befehle ausführen zu können(Stichwort: RISC).

Die Befehle werden auch nicht mehr in einem Takt berechnet, beim Pentium D sind es 31 Einzelschritte. Jeder Block im Diagramm ist mindestens ein Schritt: es ist also sehr stark vereinfacht, das Diagramm. Unter dem Decoder sind offensichlich noch Wartepuffer(Queues) und halt der Scheduler: der sagt, wann welcher Befehl durch welche Recheneinheit darf. Da wären wir wieder bei OOO: es kann ein späterer FP-Befehl vorgezogen werden, wenn aktuell halt nur Integer-Befehle anliegen. Wenn denn der FP-Befehl wirklich an der Reihe ist, wird dessen Ausführung umgangen und das bereits gespeicherte Ergebnis geliefert. (Das dürfte in der Queue geprüft werden: "wenn Befehl schon ausgeführt wurde, springe gleich zu Ergebnis" o.ä.)

Die Recheneinheiten rechnen halt: FP für Kommazahlen und die SIMD-Instruktionen wie SSE(2/3) und die Integer für alle ganzen Zahlen und Adressierung.
 
Zuletzt bearbeitet von einem Moderator: (Lexikon-Link korrigiert)
Super erklärt!
Das hat mir nur gefehlt. Dankeschön ich wusste echt nicht wie man das besser erklären konnte.
Nize Community hier. Werde mal mehr aktiver hier werden =)

Besten Dank!!
 
SuperPI Berechnung

@LeChris

Kannst du mir vielleicht noch erklären, wie das mit dem Programm SuperPI funktioniert?

Ich meine wie die Berechnung erfolgt, z.b.: sind das FPU oder ALU berechnungen und wie das abläuft bei einer Northwood-DualCore-CPU und wie das ist bei der Core-Dual-CPU da sie stark bei der SuperPI Berechnung auftrumpfen kann ~10sek...

Das würde mich brennend interessieren.

tia Dee
 
Wäre mir neu, dass Mehrprozessorsysteme bei SuperPi gut sind. Das Programm kann eigentlich nur mit einer CPU rechnen, so weit ich weiß. Es dürfte sich um größtenteils FPU-Operationen handeln.

Es wird ein Annäherungsalgorithmus verwendet. Persönlich kenne ich den nicht. Die meisten wiederholen eine bestimmte Berechnung immer wieder mit dem vorhergehenden Ergebnis, bis eine gewünschte Genauigkeit erreicht ist. Also hier zB, bis sich die ersten 1 Mio. Stellen von Pi durch nachfolgende Berechnung nicht mehr ändern. Die Zeit dafür ist dann der 'Benchmark'.

Northwood gibt es nicht als DualCore. Die Varianten mit 800er FSB beherrschen 'nur' Hyperthreading(HT) und gaukeln dem OS 2 CPUs vor. Wenn das OS Programme jeweils auf der anderen 'CPU' ausführen will, weiß der Prozessor automatisch, dass deren Befehle voneinander unabhängig sind und kann die sofort parallel berechnen.
 
LeChris schrieb:
Decoder: ein Befehl ist nur eine binäre Zahl. Heute meist noch 32 Bit. Anhand der Zahl, die ja einen bestimmten Befehl repräsentiert, stellt der Decoder quasi die CPU ein und sorgt dafür, dass die zu berechnenden Werte auch an der richtigen Recheneinheit landen.
Na, so ganz richtig ist das aber auch nicht! Es gibt keine Befehle, die komplett 32 Bit lang sind! Die meistverwendeteten sind nur 1 Byte groß und es gibt noch 2- und 3-Byte Befehle, der Rest sind Nutzdaten wie z.B. Offsets. Das ganze wird zusammen als 32 Bit Datum versendet. Die Dekodierung ist allerdings sehr aufwendig, da zwischen Daten und Befehlen unterschieden werden muss, weshalb "reines" CISC auch sehr langsam im Vergleich zu RISC ist!

LeChris schrieb:
Darüber hinaus sind Decoder heute zwingend nötig, da kein heutiger x86-Prozessor auch 1:1 die x86-Befehle versteht: es sind einfach zu viele und zu komplexe Befehle, um für jeden eine eigene Schaltung zu realisieren(Stichwort: CISC). Im Kern hat jeder Prozessor ab Pentium viele kleine Prozessoren, die dynamisch miteinander verschaltet werden können, um so viele verschiedene Befehle ausführen zu können(Stichwort: RISC).
Da hast du aber etwas falsch verstanden, CISC und RISC beziehen sich auf die Anzahl und Größe der Befehle und die CPU braucht doch nicht für jeden eine eigene Schaltung! Zum eigenlichen Berechnen sogar streng genommen nur die ALU und die FPU! Die Multimedia-Extensions klammere ich mal aus, da sie für best. Berechnungen spezialisiert und somit nicht universell sind.
CISC wird vorher in Microcode übersetzt, welcher ja wiederum RISC-ähnlich ist, da diese standartisierten und an die jeweilige CPU angepassten Befehle meist ähnlich schnell wie RISC abgearbeitet werden können. Das Dekodieren kostet natürlich wieder etwas Leistung.
Moderne CPUs haben dafür aber auch mehrere Abarbeitungs-Pipelines, das nennt sich dann Superskalare Ausführung.
Die OoO-Execution ist auch auf mehrere parallele Pipelines angewiesen, da es sonst gar nicht möglich wäre, weil beim Vorziehen eines Befehls die ganze Pipeline wieder zurückgesetzt werden müsste!
Der Scheduler verteilt die Aufgaben so geschickt an die Pipelines, das OoO einen echten Vorteil bringt. Die Verwaltung ist zwar sehr groß, aber das ganze ist immer noch schneller als In-Order-Execution.

LeChris schrieb:
Die Befehle werden auch nicht mehr in einem Takt berechnet, beim Pentium D sind es 31 Einzelschritte. Jeder Block im Diagramm ist mindestens ein Schritt: es ist also sehr stark vereinfacht, das Diagramm. .
Das ist nur das Diagramm der Pipeline, die hat nämlich besagte 31 Stufen!

LeChris schrieb:
Unter dem Decoder sind offensichlich noch Wartepuffer(Queues) und halt der Scheduler.
Und noch die MMU, die L1- und L2-Cache-Controller, die Branch Prediction usw. Übrigens ist die Cache-Logik so fortgeschritten, dass 95% der benötigten Daten bereits im Cache vorliegt (95% Cache-Hits) und so nur im Durchschnitt nur jedes 20. Datum aus dem Hauptspeicher angefordert werden muss. Neuere "Speculative branch prediction"-Einheiten versuchen das noch zu minimieren, in dem Daten auf Verdacht (spekulativ) geladen werden. Werden sie gebraucht, entfällt die Anforderung aus dem RAM, sind sie unbrauchbar, werden sie verworfen.

LeChris schrieb:
Da wären wir wieder bei OOO: es kann ein späterer FP-Befehl vorgezogen werden, wenn aktuell halt nur Integer-Befehle anliegen. Wenn denn der FP-Befehl wirklich an der Reihe ist, wird dessen Ausführung umgangen und das bereits gespeicherte Ergebnis geliefert. (Das dürfte in der Queue geprüft werden: "wenn Befehl schon ausgeführt wurde, springe gleich zu Ergebnis" o.ä.).
Langsam, das ganze geht nur, wenn die Daten nicht voneinander abhängig sind, sich also parallelisieren lassen!
Ist das Ergebnis einer Berechnung die Grundlage für den nächsten, so muss diese Reihenfolge zwingend eingehalten werden!

LeChris schrieb:
Die Recheneinheiten rechnen halt: FP für Kommazahlen und die SIMD-Instruktionen wie SSE(2/3) und die Integer für alle ganzen Zahlen und Adressierung.
Die SIMD-Einheiten sind nur zusätzlich, die eigentlichen Integer-Rechnungen nimmt die ALU vor! Und mit der Adressierung haben die nichts zu tun, das übernehmen die Cache-Controller, die MMU und der TLB im Zusammenspiel!

PCB
 
LeChris schrieb:
Northwood gibt es nicht als DualCore. Die Varianten mit 800er FSB beherrschen 'nur' Hyperthreading(HT) und gaukeln dem OS 2 CPUs vor. Wenn das OS Programme jeweils auf der anderen 'CPU' ausführen will, weiß der Prozessor automatisch, dass deren Befehle voneinander unabhängig sind und kann die sofort parallel berechnen.

Wieso was ist der normale Intel Core? also nicht der Core 2 sondern der Core1? Der basiert ja auf der Netburst Architektur! Sry ich meinte Netburst und nicht Northwood war da kurz abgelenkt als ich den Eintrag verfasst habe..

Also würde SuperPI nicht profitieren wenn zb. die Pipeline 4-fach (Core) skalar ist im vergleich zu 3-fach (Netburst).

Weil dadurch ist es 33%ig Performancesteigerung zu verzeichnen und bessere SuperPI werte?

Oder funktioniert das anders wieso Core2 so gut SuperPI werte hat?
 
Wenn du wirklich den "Intel Core" meinst, die basieren beide nicht auf Netburst. Sondern auf einer erweiterten Pentium-M-Architektur. Wobei Core 1 noch eher Pentium M ist, Core 2 schon wie auch von dir erwähnte, weitergehende Verbesserungen hat.

Core 2 könnte von seiner erhöhten FPU-Performance(insbesondere zu Pentium M) und kürzeren Pipeline(14 zu 31 bei Netburst) profitieren. Zumindest bei SuperPi. Erweiterte Parallelfähigkeiten sollten eher bei komplexeren Multithreadaufgaben anschlagen als bei einem kleinen Einzelbenchmark. Der vergößerte Cache kann auch eine Rolle spielen: wenn ein Algorithmus plötzlich mehr/komplett gecached werden kann, beschleunigt das ganz schön.

Mit dem Core muß auch chipsatzseitig der verbesserte Speichercontroller betrachtet werden: insbesondere die Latenz ist drastisch reduziert worden, was sich schon beim Athlon64 positiv auswirkte.
 
Also genau kannst du es auch nicht erklären wieso Core2 so gute Werte erreicht beim SuperPI. Liegt sicher an der Architektur Core aber bei welchem Teil von der Core-Architektur...?
 
Naja. war nur zur info gedacht, aber wen ihr mich so toll ignoriert...... pffff

PCB
 
Sorry, PCB, aber ich hatte und habe eigentlich immer noch nicht so die Motivation, deinen Post auseinander zu nehmen. Viele Punkte sind da sicherlich auch strittig und bedürften eines höchstbezahlten Intel- oder AMD-Ingenieurs.

Nur so viel: Adressierung ist meistens nichts weiter als eine Ganzzahlinkrementierung - die Load/Store sind nicht umsonst immer bei den ALUs verzeichnet - auch wenn hier nicht wirklich zu erkennen. SIMD würde ich auch nicht als einzelne, "zusätzliche" Einheit betrachten, es ist schlicht eine SIMD-fähige FPU.

Letztere dürfte auch ein Grund für die gute Core2-Performance sein. Aber dazu würde ich auch noch einen knappen Monat warten, mit der offiziellen Vorstellung und einschlägigen Reviews sollten wir mehr wissen.
 
@PCB

sorry dass ich mich nicht bei dir bedankt habe, aber dein Eintrag hat mich sowas von umgehauen dass ich den zuerst verarbeiten musste. Da ich nun 2 Ansichten hatte und nicht genau wusste welche nun die richtige ist. Beide Erklärungen klingen sehr plausibel...

Aufjedenfall danke euch beide dass ihr euch die Mühe gegeben habt.
 
Zuletzt bearbeitet:
Zurück
Oben