Techn. Frage CPU-Multi

Dome87

Commodore
Registriert
März 2008
Beiträge
4.857
Hallo,

ich wollte mal fragen, wie das technisch mit dem Multiplikator in einer CPU (gibt es da bei Intel und AMD Unterschiede?) funktioniert, sowohl bei normalen als auch bei den unlocked-CPU's.

Ist der Multi über die Firmware festgelegt (die bei den Offenen CPU's halt dementsprechend anders ist) oder ist das Hardwareseitig?

Frage nur aus technischem Interesse. Als Beispiel könnte man ja den i7 870 und den 855K nehmen also haben die eine andere "Software" oder ist das halt hardwareseitig gereglt?

Gruß
 
Der Multiplikator ist von der Hardware vorgegeben, sonst könnte ja jeder aus seiner CPU eine Extreme- oder Black-Edition machen.
 
kann man ja so nicht sagen oder kannst du die firmware einer cpu ändern?
 
sry aber du kannst die firmware einer cpu nicht ändern... also einen cou mit "locked" multi nicht zum freien multi schalten... so einfach geht das nicht lol
 
ich bin kein noob und habe das auch so nicht gesagt, dass ich irgendeine firmware ändern will.. soviel zu deinem "lol"

ich möchte einfach nur wissen wie das funtioniert, aus "technischem interesse" und nicht aus "jeder weis dass eine CPU mit festem Multi nicht freigeschaltet werden kann, aber ich machs trotzdem" ;)
 
das Thema interessiert mich auch :)

Wie funzt das denn mit dem Multi überhaupt. Was passiert genau in der CPU bei höherem Multi. Der Takt setzt sich ja aus Multi x FSB real zusammen.

Wie kann man Multiplikator am besten definieren.
 
Kaltfront schrieb:
kann man ja so nicht sagen oder kannst du die firmware einer cpu ändern?

Firmware im eigentlichen Sinne hat eine CPU ja eigentlich nicht.

Pia Mia schrieb:
sry aber du kannst die firmware einer cpu nicht ändern... also einen cou mit "locked" multi nicht zum freien multi schalten... so einfach geht das nicht lol
Intel fängt damit doch gerade an, man kann einen Code auf einer Karte kaufen und dann ein paar MB Cache oder mehr MHz freischalten. Künftig vielleicht auch Turbo oder HT, das wird kommen. Wer erst mal nicht viel ausgeben will, der bekommt das gleiche Stück Silizium wie des auch im teueresten HighEnd Modell steckt und kann das Upgrade dann nachkaufen. Dann kann man vielleicht von einer Firmware in der CPU sprechen, weil es dann wohl eine Controlleinheit geben wird, die die Freigabe der Funktionen überwacht. Heute ist das aber wohl ehr über die Anschlüsse der Pins am Silizium und Steuersignale vom BIOS her gemacht.
 
>|Sh4d0w|< schrieb:
das Thema interessiert mich auch :)

Wie funzt das denn mit dem Multi überhaupt. Was passiert genau in der CPU bei höherem Multi. Der Takt setzt sich ja aus Multi x FSB real zusammen.

Der Multipikator ist in der Takteinheit der CPU und bestimmt eben die Geschwindigkeit des Rechenwerkes. Damit man aber überhaupt verschiedene CPUs einer Serie zu unterschiedlichen Preisen auch mit verschiedenen Leistungen anbieten kann, erlaubt man es den günstigeren Modellen eben einfach nicht, den Multiplikator so hoch zu setzen, wie dies bei den teueren Ausführungen der Fall ist. Bei den ganz teueren Spitzenmodellen einer Serie ist der dann oft auch gar nicht limitiert, eben bei den EE, K (Intel) bzw BE (AMD).

Zusätzlich verfolgt gerade Intel die Politik, bestimmte Features ebenfalls nicht freizuschalten, etwa Virtualisierungsbefehle, 64Bit Erweiterung, Turbomodus, HyperThreading, etc.

>|Sh4d0w|< schrieb:
Wie kann man Multiplikator am besten definieren.
Oder meinest Du, Wie kann man den besten Multiplikator definieren?
 
Danke für die ausführliche Antwort.

Heute ist das aber wohl ehr über die Anschlüsse der Pins am Silizium und Steuersignale vom BIOS her gemacht.

kannst du mir das irgendwie mal schematisch darstellen?:baby_alt:
 
Wie wir alle wissen, werden Prozessoren auf ihre Güte geprüft - nicht jeder Wafer entspricht der Qualität, um die architektonisch vorgesehene Leistung zu erreichen - um anschließend festzulegen, innerhalb welcher Spannungen und Frequenzen der geprüfte Protagonist innerhalb einer moderaten Fehlerquote arbeiten kann.
Die Spannung wird vom Board generiert, die Prozessorfrequenz wird aus Bustakt und dem Multiplikator erzeugt
Diese elektronische Multiplikation wird in der Regel über PLLs realisiert.

In CPUs älterer Generationen waren die fest verdrahtet, später dann immerhin über externe Elemente ansprechbar; die berühmten L-Brücken bei alten Athlons. Sinn dabei war, den maximal zulassigen Multiplikator nach dem Test einstellen zu können.

AMD Besitzer mit Fingerspitzengefühl konnten diese Brücken öffnen oder schließen:
AthlonLGetrennt.jpg


Grobmotoriker dagegen haben einfach ein Stück wertloses Silizium erzeugt:
prozputt.jpg


"Stolze" Pentiumbesitzer haben zu dieser Zeit generell in die Röhre gekuckt, weil Intel die PLLs fest innerhalb des Prozessor verdratet und somit den Multi unumgehbar festgelegt hatte.

Im Laufe derzeit wurde das System geändert, sodass die Beschaltung der PLLs logisch festgehalten wurde.
Das hat zum einem den Vorteil, dass nach dem Test zur CPU Güte der Prozessor nicht mehr physisch bearbeitet werden musste, zum anderen öffnete es einen neuen Option den Weg:
den Prozessor, je nach Auslastung, unterschiedlich zu takten.
Dafür werden in spezielle Register die jeweiligen Informationen für die gewünschte Beschaltung der PLLs geschrieben.
In analog dazu existierende Register werden Informationen geschrieben, welche Spannung aktuell für den Prozessor benötigt wird, diese dann vom Motherboard interpretiert und umgesetzt.
Die Daten dieser möglichen Registerinhalte werden im Prozessor vorgehalten, um im bestimmten Lastfall (P-State) in die Register geschrieben zu werden.
Diese Daten können zusammen mit anderen Informationen (Prozessorname, Code Name, Package, freigeschaltete Cores) durchaus als Firmware bezeichnet werden.
Da der Prozessor nach der Prüfung nicht mehr "angefasst" wird, kann die Festlegung von max. Frequenz / Multi eben nur durch ein Speichern des Datensets (resp. Firmware) erfolgen.
Dabei kann die Firmware so gestaltet sein, dass zwar ein Multi vorgegeben, empfohlen ist, dieser aber dennoch auf eigene Gefahr frei gewählt werden kann (bei AMD kann man z.B. mit entsprechender Software direkt die Register beschreiben).
Andererseits kann das Verändern nach oben (nach unten soll ja weiterhin möglich sein, wg. z.B: QnC) blockiert sein.
Aber wo eine Firmware einmal hingeschrieben wurde, kann heutzutage oft noch ein weiteres mal hingeschrieben werden.
Man muss nur rausfinden, wie.
Hat man das, ermöglicht es einem z.B. das Freischalten ehemals gesperrter Kerne oder auch den freien Zugriff auf die Register der PLL Beschaltung und somit den Multiplikator.
Meistens scheitert es daran, dass man nicht weiß, wie man die Firmware ein weiteres mal schreibt oder aber der Bereich für die Firmware wurde doch schon zu oft neu beschrieben, z.B. weil nach dem ersten Test falsche Informationen abgelegt wurden.

Die Antwort in Kurzfassung: bei den meisten Mainstreamprozessoren ist der maximal verfügbare Multiplikator in einer "Firmware" gespeichert, die wenigsten sind heutzutage noch fest verdrahtet oder extern beschaltet.
 
vielen vielen dank genau so eine Antwort habe ich gesucht :)

Gruß
 
Ich verstehe nicht so wirklich wie sich das mit dem Gesamttakt zusammenhängt.

Man geht ja immer vom realen FSB Takt aus, also soviel wie er in Wirklichkeit taktet.

Ich rechne mir das so iwie zusammen:

1 Hz == 1 Bit
266 MHz = 266Mbit

=> 266 MBit / Taktzyklus

266 MBit / Schaltung * 9 (Multi) / Schaltung= 2394 MBit (pro Schaltung)
[ / Schaltung rechnerisch wegdenken, soll nur als Beschreibung dienen]

2394/8 = 299,25 MB / s pro Schaltung

eine Schaltung dauert wahrscheinlich nur 0,000.000.020 s (20 ns)
[lt. Everest hat mein L1 Cache 0,9 ns und der L2 5,2 ns Latenzzeit :freak:, RAM hat 76,8 ns]

d. h in 1s macht der CPU 50.000.000 (50 Mio) Schaltungen, wo ich am Ende dann auf:

50.000.000 * 299,25 MB = 14.962.500.000 MB komme
=> 14.611.816,41 GB :lol:
=> 14.269,35 TB :lol:
=> oder 13,93 PB :lol: komme


oder für Leute die Mbit wollen:
119.700.000.000 MB
116.894.531,25 GB
114.154,82 TB
111,48 EB
Ich muss gerade Langeweile haben :freak:


Meine Rechnung ist sicherlich falsch.


Back 2 Question:
Wie muss ich den Multi genau verstehen? Die MHz Zahl gibt ja an wie viel bit/s übertragen werden.
Sind der Multi dann die Anzahl an Leitungen?
Oder ist der Multi wie oft pro Sekunde die x bits / s (aus dem FSB real) übertragen werden?
Sprich 9er Multi, d. h jede Sekunden findet es 9x statt.
 
Zuletzt bearbeitet:
ja, irgendwas stimmt da nicht ganz, mir wird jedenfalls ganz anders, wenn ich das lese :confused_alt:.
und welche cpu taktet man heute noch mit 50mhz?


der fsb-takt gibt an, wie schnell nb und cpu daten austauschen können.
multi * fsb = cpu-takt, welcher, je nach bedarf (auslastung des prozessors), über den multi verändert wird. dabei arbeitet dann lediglich die cpu ihre aufgaben schneller ab, der cache wird (soweit ich weis) nicht übertaktet und die bandbreite zur nb und dem speicher bleibt auch gleich (fsb-limit für datendurchsatz).
- deshalb ist generell beim oc ein höherer fsb bei gleichem cpu-takt zu erstreben, notfalls auch mit nicht maximalem multi

das ist mein verständnis von fsb, multi und cpu-takt :freak:
 
Zuletzt bearbeitet:
Die Datenübertragungsrate über die einzelnen Bus Systeme (z.B. FSB, HyperTransport, QPI) hängt tatsächlich zum größten Teil vom dort vorherrschenden Takt ab. Lassen wir mal Overhead aus den Protokollen und irgendwelche Fehlerverluste ausser Acht, kann man sowas tatsächlich mit einer groben Milchmädchenrechnung aufzeigen:

Busbreite: 32bit, pro Takt wird ein 32bit Datenwort übertragen:
32Bit / Takt macht bei einem Takt von 200 MHz -> 32Bit * 200 * 10^6 = 5,96GBit / s

Innerhalb der CPU kommt es nicht drauf an, wieviele Daten pro Sekunde übertragen werden können - sie sind ja schon da
ugly.gif

Hier kommt es darauf an, wieviele Rechenoperationen pro Zeiteinheit abgearbeitet werden können.
Hier ein sehr abstrahiertes Beispiel einer Addition:
  1. Zahl 1 vom Datenbus in ein Rechenregister einlesen
  2. Zahl 2 vom Datenbus in ein Rechenregister einlesen
  3. Rechenregister 1 und Rechenregister 2 addieren
  4. Ergebnis in ein Ergebnisregister schreiben
  5. Inhalt vom Ergebnisregister an den Datenbus schreiben

Macht 5 einzelne Operationen.
Pro Takt wird eine Operation ausgeführt, sequentiell, die Addition braucht also eine Zeit von 5 Takten.
Um so mehr Takte pro Sekunde (bzw. um so weniger Zeit pro Takt), um so schneller wird pro Sekunde addiert :)

Wie muss ich den Multi genau verstehen? Die MHz Zahl gibt ja an wie viel bit/s übertragen werden.
Sind der Multi dann die Anzahl an Leitungen?

Der Multiplikator ist der rechnerische Faktor, wieviel schneller der CPU interne Takt gegenüber dem Referenztakt ist.
Stell dir in der CPU eine Blackbox vor.
Auf der einen Seite geht ein Signal von 200MHz rein, auf der anderen Seite kommt ein Signal von 2GHz raus.
Innerhalb dieser Blackbox wird das Taktsignal um den Faktor 10 multipliziert.
In der Blackbox sind oben erwähnte PLLs mit entsprechender Beschaltung...
 
Vielleicht sollte man noch mal was ergänzen: Ganz früher, als Takte noch im unteren MHz Bereich waren, da kommte eine CPU wirklich noch einen Speicherzugriff in einem Takt ausführen. Damals gab es also gewissermassen den Mulitplikator 1.
Dann stieg aber die Taktfrequenz der CPUs schneller an als alles andere im Rechner, weshalb man eben Cache erfand, auf den die CPU schneller zugreifen kann als auf den normalen Arbeitsspeicher der eben langsamer als die eigentliche CPU arbeitet, man hatte also schon einen Multiplikator > 1.
Nehmen wir als mal das Beispiel oben, vergessen den Cache und sehen uns an, was die CPU jetzt machen muß:
1. Zahl 1 vom Datenbus in ein Rechenregister einlesen
(ganz vereinfacht dauert dies beim Multiplkator 10 jetzt also 10 Takte, bis die CPU die Zahl 1 hat)
2. Zahl 2 vom Datenbus in ein Rechenregister einlesen
(normal das gleich, wieder 9 Takte warten)
3. Rechenregister 1 und Rechenregister 2 addieren (1 Takt)
4. Ergebnis in ein Ergebnisregister schreiben (1 Takt)
5. Inhalt vom Ergebnisregister an den Datenbus schreiben (nochmal 10 Takte)
Dies führt jetzt aber auch dazu, daß die CPU statt 5 Taken jetzt 32 braucht, ohne dabei die Latenz des Speicher, das Syncronisieren des Busses, den Cache etc. zu berücksichtigen. Man sieht also, der Rechner ist schneller als vorher, denn die 5 Zyklen vorher dauern so lange wie 50 jetzt, aber ich brauche nur 32.
Andererseits läuft mein Rechenwerk jetzt 10 mal so schnell und braucht trotzdem noch rund 2/3 der Zeit und nicht nur 1/10.
Obwohl man eben zahlreiche Anstrengungen unternimmt um diese langen Wartezeiten zu vermeiden (Cache, Out of Order, Lookahead, etc) oder anderweitig zu nutzen (HT), läßt sich das doch nie ganz vermeiden und man bekommt eben bei z.B. einer Erhöhung des Multiplikators um 10% nicht auch 10% mehr Leistung.
 
Zurück
Oben