Archiv verlassen und diese Seite im Standarddesign anzeigen : Dualcore-CPUs-- Bezeichnung des Caches
Guten Tag wertes Forum und liebe Gurus, die Ihr hoffentlich meine Frage zufriedenstellend beantworten werden könnt,
im IRC entbrannte, angeregt durch unseren User |cleric|, eine Diskussion, inwiefern man Caches bei Dualcore-CPUs, im konkreten Falle der Opteron-Baureihe von Advanced Micro Devices, zusammenrechnen darf respektive nicht, oder, wie |cleric| es so schön formulierte, weil er sich nicht so recht traute, hier einen Thread aufzumachen:
<|cleric|> huha: stell bitte die frage aber so rein:
<|cleric|> Opteron Dualcore: 2mb cache oder 2x1mb (es geht darum ob die bezeichnung 2mb cache (bei 1mb pro core) falsch ist oder nur ungenau
Meines Erachtens nach ist die Bezeichnung "2mb" irreführend, also falsch, da es sich hierbei nicht um 2MB "am Stück" handeln dürfte, die also z.B. von einem Prozeß/Thread nutzbar sind, sondern eben um zwei mal 1MB.
Ich bitte um Aufklärung und Erleuchtung in dieser Angelegenheit.
-huha
mapel110
2005-11-07, 01:47:19
Die Caches stehen nur dem jeweiligen CPU-Core zur Verfügung. Der Kunde kauft aber sicherlich 2 MB Cache. 2 mal 1 MB = 2 MB :) und die werden ja auch genutzt. Wie die genutzt werden, spielt ja nur eine untergeordnete Rolle.
Die Caches stehen nur dem jeweiligen CPU-Core zur Verfügung. Der Kunde kauft aber sicherlich 2 MB Cache. 2 mal 1 MB = 2 MB :)
Ja, der Kunde kauft 2x1MB. Aber er kauft auch z.B. 2x1.8 Ghz = 3.6 Ghz.
und die werden ja auch genutzt. Wie die genutzt werden, spielt ja nur eine untergeordnete Rolle.
Meiner Meinung ist das eben nichts untergeordnetes, sondern wichtig. Jedem dürfte klar sein, daß die "3.6 Ghz" auch nicht so genutzt werden können, wie das diese Bezeichnung impliziert, sondern eben als 2x1.8 Ghz.
Genauso sieht's meines Erachtens nach auch mit den Caches aus.
-huha
mapel110
2005-11-07, 01:57:50
Hm, da müsste man jetzt mal die CPU-Gurus fragen, inwiefern man die Caches zusammenzählen kann.
Es ist sicher so, dass einige Daten zusätzlich gehalten werden können, weil nur einer der beiden Cores eben die Daten braucht.
Aber wie das aussieht, wenn eine Anwendung mal von einem auf den anderen Core "wandert" oder eine App beide Cores nutzt... :uponder:
GloomY
2005-11-07, 02:45:37
Rein funktional haben die Caches ja nicht viel mit einander zu tun. Jeder bedient seinen Core, unabhängig vom anderen. Insofern finde ich es irreführend, wenn man die Cachegrößen zusammenzählt. Insbesondere weil es ja sein kann, dass in beiden Caches gleiche Daten liegen. Bei einem gemeinsamen L2 Cache sind es wirklich immer bis zu 2 MiB unterschiedliche Daten. Im Extremfall könnte es sein, dass bei den heutigen DualCore Prozessoren die beiden Caches exakt den gleichen Inhalt haben und damit nicht 2x1MiB sondern wirklich "nur" 1 MiB speichern.
Außerdem ist man sich der Trennung bei 2x1 MiB bewusst, während man bei der reinen Erwähnung der Summe nichts über die Zuordnung bzw. gemeinsame Nutzung erfährt.
Falsch ist es aber dadurch nicht umbedingt, bloß ist es eben nicht sehr präzise.
edit: Wenn man anfängt, den L2 zusammenzurechnen, dann kann man das auch mit beliebigen anderen Teilen der beiden Cores machen. Hmm, dann haben wir 6 ALUs, 256 kiB L1 Cache, 6 Decoder...
Imho ist das nicht wirklich sinnvoll. :|
dacleric
2005-11-07, 02:52:49
Im Extremfall könnte es sein, dass bei den heutigen DualCore Prozessoren die beiden Caches exakt den gleichen Inhalt haben und damit nicht 2x1MiB sondern wirklich "nur" 1 MiB speichern.
Das ist allerdings unmöglich :)
Im Level2 Cache werden nicht nur "Daten" gespeichert.
GloomY
2005-11-07, 03:00:31
Das ist allerdings unmöglich :)
Im Level2 Cache werden nicht nur "Daten" gespeichert.Was soll denn deiner Meinung nach noch gespeichert sein? Die Tags zähle ich nicht dazu, obwohl die bei gleichem Inhalt auch exakt gleich wären.
Warum soll denn deiner Meinung nach nicht die theoretische Möglichkeit bestehen, dass die Caches exakt den gleichen Inhalt besitzen? Die Wahrscheinlichkeit dafür ist zwar sehr gering, aber sie besteht...
Auch das Program im Cache kann sehr wohl identisch sein bei beiden Cores.
dacleric
2005-11-07, 03:10:09
Was soll denn deiner Meinung nach noch gespeichert sein? Die Tags zähle ich nicht dazu, obwohl die bei gleichem Inhalt auch exakt gleich wären.
Warum soll denn deiner Meinung nach nicht die theoretische Möglichkeit bestehen, dass die Caches exakt den gleichen Inhalt besitzen? Die Wahrscheinlich dafür ist zwar sehr gering, aber sie besteht...
Tags? Wie wäre es mit Opcodes? Du kannst zwar auf die gleichen daten zugreifen... auch die gleichen programme starten... aber die programme(threads) liegen nie im gleichen speicher... außerdem ist die wahrscheinlichkeit, dass die caches die gleichen daten enthalten, doch äußerst gering.
dacleric
2005-11-07, 03:12:18
Auch das Program im Cache kann sehr wohl identisch sein bei beiden Cores.
das mag ja sein. aber die daten im cache werden auf einen anderen speicherbereich zeigen und somit andere daten speichern. es geht halt einfach nicht das zwei cores die selben threads ausführen die im selben speicherbereich liegen.
Natürlich geht das, wie kommst du darauf? Es ist zwar extrem konstruiert, aber es kann vorkommen dass die beiden Threads genau die gleichen Cachelines verwenden.
onkel2003
2005-11-07, 05:07:45
denke auch 2 MB ist irreführend.
könnte man so gleichsetzen, als wenn Aldi mit einer dualcore kommt und mit 5,6 Ghz werbung macht, die aber halt 2*2,8 Ghz hat.
BlackBirdSR
2005-11-07, 12:20:19
denke auch 2 MB ist irreführend.
könnte man so gleichsetzen, als wenn Aldi mit einer dualcore kommt und mit 5,6 Ghz werbung macht, die aber halt 2*2,8 Ghz hat.
Du wirst aber sehen:
Zusammen mit den echten 2MB Cache des Yonah, wird sich die Ausdrucksweise in den Köpfen festsetzen. Wenn es nicht schon längst passiert ist.
Von Intels neuer Generation erwarte ich eigentlich auch einen Shared L2 Cache.
Am Ende ist es aber für den User nicht wichtig, ob nun 2x1MB oder 1x2MB Cache arbeiten.
Die CPU mit mehr Cache ist schneller, und innerhalb der CPU Generationen wird der Cache ja identisch verteilt.
Die Leute die es wirklich wissen wollen/müssen, die wissen das auch, bzw können über Dokumente und Foren leicht an die Info kommen.
StefanV
2005-11-07, 13:06:20
Guten Tag wertes Forum und liebe Gurus, die Ihr hoffentlich meine Frage zufriedenstellend beantworten werden könnt,
im IRC entbrannte, angeregt durch unseren User |cleric|, eine Diskussion, inwiefern man Caches bei Dualcore-CPUs, im konkreten Falle der Opteron-Baureihe von Advanced Micro Devices, zusammenrechnen darf respektive nicht, oder, wie |cleric| es so schön formulierte, weil er sich nicht so recht traute, hier einen Thread aufzumachen:
Meines Erachtens nach ist die Bezeichnung "2mb" irreführend, also falsch, da es sich hierbei nicht um 2MB "am Stück" handeln dürfte, die also z.B. von einem Prozeß/Thread nutzbar sind, sondern eben um zwei mal 1MB.
Ich bitte um Aufklärung und Erleuchtung in dieser Angelegenheit.
-huha
Darüber kann man sich Tage lang schlagen und wird am Ende zu keinem wirklichen Ergebnis kommen.
Die Frage ist doch, wie man nun das definieren soll?!
Eine Definition wäre, das beide Caches unterschiedliche Daten enthalten, somit könnte man von 2MB sprechen, da es unwahrscheinlich ist, das beide Caches das gleiche beinhalten.
Eine andere Definition wäre, das Core 1 nur auf seinen Cache zugreifen kann, nicht aber auf Cache 2, womit wir 2x1MB haben, wobei es durchaus vorkommen kann, das beide Caches (teilweise) die gleichen Daten beinhalten...
Im Endeffekt wären beide Definitionen nicht ganz falsch, vobei die 2. Definition etwas genauer wäre...
Ergo:
Münze werfen!!
stav0815
2005-11-07, 13:08:46
Auch das Program im Cache kann sehr wohl identisch sein bei beiden Cores.
wär es dann nicht im extremfall auch möglich dass beide cores dasselbe rechnen?
wenn ja, wie umgeht ma das, bzw. tut man es überhaupt?
GloomY
2005-11-07, 15:01:26
Tags? Wie wäre es mit Opcodes?Was soll mit den Opcodes sein? Du meinst ob die Befehle (wovon die Opcodes eine echte Teilmenge darstellt) auch gleich sind? Das ist eine Frage, die vom Cacheinhalt unabhängig ist.
Du kannst zwar auf die gleichen daten zugreifen... auch die gleichen programme starten... aber die programme(threads) liegen nie im gleichen speicher...Darum geht es doch gar nicht. Es geht um den L2 Cacheinhalt. Das Laden von Befehlen geht bei einem L2 Miss bei AMD am L2 Cache vorbei direkt vom Speicher in den L1-I.
außerdem ist die wahrscheinlichkeit, dass die caches die gleichen daten enthalten, doch äußerst gering.Das habe ich ja von Anfang an geschrieben.
Übrigends schrieb ich ja explizit vom exakt gleichem Inhalt der L2 Caches. Selbst wenn beiden Cores unterschiedliche Programme ausführen und durch Instruktions-Fetch und Abarbeitung der Programme unterschiedliche Inhalte in den L1-I und L1-D Caches besitzen, kann es trotzdem sein, dass die L2 Caches exakt den gleichen Inhalt haben. Ich erinnere nur mal daran, dass AMD exklusive L2 Caches verwendet, also die Inhalte der L1 Caches nie gleichzeitig auch im L2 liegen.
wär es dann nicht im extremfall auch möglich dass beide cores dasselbe rechnen?
wenn ja, wie umgeht ma das, bzw. tut man es überhaupt?Im Normalfall rechnen die beiden Cores an unterschiedlichen Threads bzw. Prozessen. Es ergibt keinen Sinn, dass diese genau das gleiche machen.
stav0815
2005-11-07, 17:26:55
Im Normalfall rechnen die beiden Cores an unterschiedlichen Threads bzw. Prozessen. Es ergibt keinen Sinn, dass diese genau das gleiche machen.
dass es keinen Sinn macht, ist mir klar. Aber ob es überhaupt möglich ist dass die dasselbe rechnen und ob man das umgeht ist damit nicht beantwortet ;)
Ja es ist möglich, aber es wird aus nachvollziehbaren Gründen nicht gemacht.
Die Caches werden, soweit ich in Erinnerung habe, bei einem Dual-CPU bzw. Dual-Core System synchronisiert. Dabei werden falls notwendig veränderte Daten abgeglichen.
Man könnte sie zusammenzählen, aber effektiver werden sie nicht.
stav0815
2005-11-07, 17:46:49
Ja es ist möglich, aber es wird aus nachvollziehbaren Gründen nicht gemacht.
d.h. wenn sowas eintritt schmeisst man das Programm aus einem Core raus?
d.h. wenn sowas eintritt schmeisst man das Programm aus einem Core raus?Wieso sollte sowas eintreten? Kein Mensch würde auf die Idee kommen mit zwei Threads genau das gleiche zu berechnen.
Multithreading ist komplette Handarbeit, da hilft einem der Compiler nicht dabei, falls du auf sowas rauswillst.
BlackBirdSR
2005-11-07, 17:49:43
d.h. wenn sowas eintritt schmeisst man das Programm aus einem Core raus?
Das Betriebsystem verteilt ja die Threads auf die Kerne.
Es wird kaum einen Thread nochmal auf den 2. Kern legen, wenn das nicht explizit so gewollt ist.
Ausserdem sind die Speicherbereiche, welche von einem kern gerade bearbeitet werden normalerwiese eh für den anderen Tabu.
GloomY
2005-11-08, 10:40:44
dass es keinen Sinn macht, ist mir klar. Aber ob es überhaupt möglich ist dass die dasselbe rechnen und ob man das umgeht ist damit nicht beantwortet ;)Klar ist es möglich. Setze einfach bei beiden Prozessoren den Instruction Pointer auf die gleiche Adresse. Dann arbeiten diese das gleiche Programm ab.
Dass dann natürlich die Möglichkeit besteht, dass das Programm falsch arbeitet, ist klar. Schliesslich wird es gleichzeitig zweimal ausgeführt, ist aber eigentlich nur dafür geschrieben einmal ausgeführt zu werden.
Insofern lässt man das ganze natürlich, insbesondere weil es in der Praxis einfach unsinnig ist und nichts bringt. Aber prinzipiell ist das sicher möglich.
Ausserdem sind die Speicherbereiche, welche von einem kern gerade bearbeitet werden normalerwiese eh für den anderen Tabu.Sicher? Die Page Table ist doch global für alle Prozessoren die gleiche, wenn ich mich richtig erinnere.
BlackBirdSR
2005-11-08, 11:35:07
Sicher? Die Page Table ist doch global für alle Prozessoren die gleiche, wenn ich mich richtig erinnere.
Die Speicherbereiche werden doch wohl für Schreibzugriffe gelocked?
Magnum
2005-11-08, 12:24:27
Übrigends schrieb ich ja explizit vom exakt gleichem Inhalt der L2 Caches. Selbst wenn beiden Cores unterschiedliche Programme ausführen und durch Instruktions-Fetch und Abarbeitung der Programme unterschiedliche Inhalte in den L1-I und L1-D Caches besitzen, kann es trotzdem sein, dass die L2 Caches exakt den gleichen Inhalt haben. Ich erinnere nur mal daran, dass AMD exklusive L2 Caches verwendet, also die Inhalte der L1 Caches nie gleichzeitig auch im L2 liegen.
Und dann mal die Frage, wo liegen Instruktionen, wenn sie aus dem L1 verdrängt werden? Ich glaube kaum, dass AMD so blöd ist und sie direkt zurück in den Hauptspeicher schickt!
stickedy
2005-11-08, 13:25:21
Mal unabängig von der technischen Seite, AMD zählt den L2-Cache auch einzeln: z.B. http://www.amdcompare.com/us-en/desktop/details.aspx?opn=ADA4800DAA6CD 1MB x2
Und so macht es denke ich auch Sinn
Natürlich macht es so Sinn, da braucht man eigentlich gar nicht großartig rumdiskuttieren. Es sind 1MiB Cache pro Core, nicht 2MiB.
GloomY
2005-11-08, 18:40:00
Die Speicherbereiche werden doch wohl für Schreibzugriffe gelocked?Nicht alle. Der Stack-Bereich oder der Heap ist natürlich R/W, während andere Speicherbereiche durchaus mal nur Read-only sein können (z.b. shared libs, code segment?).
btw: Es gibt pro Prozess eine Page Table. Wenn die beiden Prozessoren (bzw. Cores) am gleichen Prozess arbeiten (z.b. je einer einen Thread davon), dann müssen die auch auf die gleichen Daten zugreifen können. Die liegen ja schließlich im gleichen Addressraum.
Um gegenseitigen (Schreib-)Zugriff auszuschließen, benutzt man Synchronisationsobjekte wie Mutex, Semaphoren usw. Das sind aber alles Software-Techniken. Die Hardware verbietet da gar nichts von sich aus.
Ist es das, was du gemeint hast?
Und dann mal die Frage, wo liegen Instruktionen, wenn sie aus dem L1 verdrängt werden? Ich glaube kaum, dass AMD so blöd ist und sie direkt zurück in den Hauptspeicher schickt!Na klar landen die im L2. Aber spricht das dagegen, dass es eine Wahrscheinlichkeit echt größer Null gibt, dass die beiden L2 Caches trotzdem den gleichen Inhalt haben? Natürlich nicht. Das eine ist doch vom anderen unabhängig.
vBulletin®, Copyright ©2000-2024, Jelsoft Enterprises Ltd.