davidzo schrieb:Ich habe auch nicht gesagt das ARM gegen side channel immun ist. Ich habe lediglich festgestellt dass die x86 big cores sehr auf µop Caches angewiesen sind, da variable instruction length decoder einfach riesig und kompliziert sind. Die sind daher nur 4-wide, ohne decoder recycling geht nicht nur power draw stark nach oben, sondern wird auch die pipeline superbreiter cores wie willow cove, golden cove, etc. nicht ausreichend gefüllt.
Interessanterweise haben sie sich bei Tremont mit der Begruendung "Power" gegen uop cache entschieden, und Tremont decodiert 2*3 Befehle pro Zyklus.
Das ARM cores meistens keinen µop cache brauchen liegt ja eben daran dass es keine fetteb cores sind wie die x86 "big-core" designs. Außerdem können die decoder für fixed instruction length ohnehin viel einfacher sein, viel weniger energie verbrauchen und große caches ohne vielen aufwand und großem power draw realisiert werden.
Sollte man meinen, aber tatsaechlich haben A77 und A78 einen uop-Cache. Hmm, eventuell, weil ARM soviele Befehlssaetze unterstuetzt, darunter das variabel breite Thumb2 (hat Apple das schon abgeschafft?).
Und Tremont ist ein small Core und noch dazu eine Krücke, das ist eher ein Argument pro µop-cache.
Ja, Tremont ist ein low-power core. Trotzdem demonstriert er, dass 6 AMD64-Befehle pro Zyklus decodiert werden koennen, ohne zuviel Strom zu brauchen. Inwieweit das ein Argument fuer den uop cache sein soll, musst Du erst erklaeren. Und was daran eine Kruecke sein soll, auch.
Zum K7, K8:
ja und IPC, effizienz-technisch weit abgeschlagen in 2021.
Unglaublich: Prozessoren aus 1999 (K7) und 2003 (K8) sind 2021 weit abgeschlagen. Damals waren sie mit ihrem Cache-Design aber auf der Hoehe der Prozessoren mit virtually-indexed physically-tagged L1-caches (das, was Du beschreibst). Und wenn groessere caches mit weniger Assoziativitaet so wichtig waere wie Du behauptest, wuerde diese Art von Cache-Design wieder kommen. Tatsaechlich scheint aber viel Assoziativitaet kein grosses Problem zu sein, wie man am 12-Wege-D-Cache von Ice Lake ff. sieht.
Das heißt dass mit pech jede menge zeug geladen wird welches man nicht braucht und nur in sonderfällen werden die 64kb gut ausgenutzt. Und die line size ist trotzdem 64byte.
Bei der gleichen Line size wird nichts zusaetzlich geladen, was nicht gebraucht wird. Was die Assoziativitaet beeinflusst, ist, was rausgeschmissen wird: Mit kleinerem Cache und geringerer Assoziativitaet werden eher Sachen rausgeschmissen, die in Kuerze noch einmal gebraucht werden. Da stand der K7 mit groesserem Cache gegen den Pentium III mit mehr Assoziativitaet. Na jedenfalls ist Dein Argument, dass hohe Assoziativitaet zuviel Strom braucht, und deswegen weniger Assoziativitaet verwendet werden sollte (und Du meinst, dafuer braeuchte man groessere Seiten; der K7 demonstriert, dass das nicht so ist).
Interessant! Das hat bei Cyrix aber andere Gründe dass die es nicht geschafft haben. Wie setzen die das um wenn die x86 ISA das nicht anbietet?
Ich hab's mir nicht naeher angeschaut, aber bei System-Level-Sachen wie Page Tables bauen die verschiedenen Hersteller durchaus optionale Erweiterungen ein (bekannt waren die PAE. Betriebssysteme, die die Erweiterung nicht kennen, funktionieren wie gehabt; und Betriebssysteme, die was damit anfangen koennen, haben einen Vorteil.
Ja, der cache unterstützt variable page sizes. Apple kann zwischen 64, 32, 16 und 4kb hin und her schalten und legt dann die jeweiligen ungenutzten blöcke schlafen. So nutzen sie immer die gesamte Assoziativität aus, anders wäre der zusammen 384kb große L1 Cache (größer als der Comet Lake L2 cache!) gar nicht möglich in einem Iphone-Power Budget.
Man findet ja nicht soviel ueber Apples CPUs, aber was ich so finden konnte, hat der A13 Firestorm 128K D + 128K I-cache, jeweils 8-Wege-assoziativ, und der A14 Lightning hat 128K D und 192 K I-cache, Assoziativitaet unbekannt. Naja, jedenfalls wenn der A13 mit 4KB-Seiten arbeitet, verwendet er virtually-indexed virtually-tagged wie der K7, oder er verwendet nur 32KB von jedem Cache.
Alle aktuellen ARM CPUs verwenden größere page sizes als 4KB und haben größere Caches mit geringerer assoziativität als aktuelle x86 CPUs.
[...]
ARM cpus bis zum A76, A77, A78 haben traditionell je 64kb I- und Data Cache mit lediglich 4-way Assoziativität. Das kostet weniger Diefläche und Energie, hat aber dank 16kb page size eine ähnlich gute vllt. sogar bessere hitrate.
Gerade einmal auf einem Raspi4 nachgeschaut, da gibt "pagesize" 4096 aus; ansonsten finde ich nicht viel ueber Seitengroessen. Naja, jedenfalls hatte schon der K7 (und davor der 21264) groessere L1-Caches mit geringerer Assoziativitaet als aktuelle AMD64-CPUs. Oben hast Du Dich veraechtlich drueber geaeussert, hier ist es auf einmal gut. Mir scheint, du misst mit zweierlei Mass.
Groessere Seiten machen die Hitrate nicht besser (aber erlauben es VIPT-Caches mit geringerer Assoziativitaet zu bauen).