kisser schrieb:
Das stimmt so nicht. Alle drei sind zwingend nötig für den optimalen Schutz.
1. Diese Aussage stimmt so nicht.
2. Auch bei Intel werden NICHT gleichtzeitig ALLE 3 Befehle benutzt, sondern je nach Architekturtyp eben verschiedene bzw. Kombinationen davon.
Im AMD Whitepaper wird das kurz dargelegt: "On processors with a shared indirect branch predictor, IBRS being set provides protection from being influenced by a sibling thread’s indirect branch predictions."
Intel hat einen shared branch predictor.
https://alastairreid.github.io/papers/SBACPAD07.pdf
"For an MT processor core, the branch predictor can be either replicated for each thread or shared among all threads as shown in Figure 2."
AMD hat afaik replicated predictors - da sie darüber noch einen Hybrid aus "local" und global predictor einsetzen.
Schon die K6-Archs nutzen immer einen two-level predictor. (
https://web.njit.edu/~rlopes/Mod5.3.pdf )
Obgleich die Presentation schon relativ alt ist (Bezieht sich auf K6 und Intel P6 Archs) sind viele der Aussagen nach wie vor gültig.
Neuer Infos z.B. für Bulldozer reden auch von einem Hybrid- two-level predictor:
https://www.programcreek.com/2012/1...ures-2-bulldozer-and-sandy-bridge-comparison/
"AMD Bulldozer has a new branch prediction design [13]. The scheme is a hybrid method with a local predictor and a global predictor. The branch target buffer(BTB) has two levels: the level-1 is organized as a set-associative cache with 128 4-way sets and the level-2 has 1024 5-way sets [13]."
Dieser (AMD Ansatz) ist weniger anfällig meinem Verständnis nach für Spectrre-Attacken generell.
Wo wir schon bei Architekturen sind. AMD CPUs != Intel CPUs in der Architektur
Kann man auch bei Agner Fog nachlesen wenn mans genauer wissen will:
http://www.agner.org/optimize/microarchitecture.pdf
Kapitel 3 betrifft die Branch Predictoren - sowie die Unterschiede zw. AMD und Intel.
Vor allem wichtig ist 3.3 indirect returns - da dies der Spectre Angriffsvektor ist.
3. Wenn du das Whitepaper genau liest stellst du fest dass AMD es genau(er) erklärt dass es für AMD CPUs genau 3 Wege gibt den jeweils vollständigen Schutz zu erreichen. Diese 3 Wege haben unterschiedliche Performance-Auswirkungen. Jeder Weg für sich schützt hier aber vollständig die CPU.
Die Ursache ist dass AMD hier eben einen anderen Branch Prediction Mechanismus einsetzt als Intel.
Der AMD Branch Predictor ist offenbar von Haus aus so gestrickt dass er Cross-Thread nicht wirksam ist. (replicated BTB - nicht shared-BTB)
Das Haupt-Einfallstor für Spectre dass es hier zu schliessen gilt ist der process-process Wechsel (unabhängig davon welchen User-Bereich) dieser angehört.
Genau dies wird mit IBPB zu 100% geschlossen.
"As this restricts the processor from using all previous indirect branch information, it is intended to only be used by software when switching from one user context to another user context that requires protection, or from one guest to another guest."
4. Wenn ich mich irren sollte (was nicht ausgeschlossen ist) bitte ich um QUELLENAngaben um die Info einordnen und verstehen zu können.