Nem keverem, csak leírtam, hogy nem kimondottan a HT miatt van 2 ALU.
"Megpróbálom röviden:
- A modernebb CPUkban a magas órajel és a komplex utasítások miatt (több órajel egy utasítás) pipelineokat vezettek be, ezeken ülnek a végrehajtási egységek.
- Intelnél hosszú pipelineok vannak, AMDnél rövidek (P3 is rövid volt)
- Minél hosszabb a pipe, annál költségesebb egy ugrás (ki kell dobni az összes elõkészített adatot a pipeline-ból).
- Viszont a hosszú pipeline elõnye, hogy ha jó predikciós egységed van, össze tudod válogatni úgy a következõ n darab utasítást, hogy viszonylag jól ki legyen használva mindegyik funkcionális egység. Minnél hosszabb a line, annál nagyobb az n."
Ehhez képest a K7/K8-nak jobb az IPC-je... Mivel az Intel célja a pipe növeléssel inkább az órajel növelése volt. (Amúgy tudtommal IPC manapság 1.0 fölötti szám, így nem több órajel egy utasítás, hanem fordítva - bár lehet, hogy most tévedek, de nem számolok utána, ahhoz késõ van :)).
"Ámde! Sokszor van olyan, hogy van egymás után sok olyan utasítás, melyek ugyanazokat a belsõ részeket használják. Ilyenkor rengeteg rész üzemen kívül van (ezt használja ki az M, ezeket lekapcsolja), de van egy másik mód: duplikáljuk meg a címregisztert, illetve lássuk el az összes belsõ egységet egy bittel, ami jelzi hogy az adott részegység mely szálat futtat. Így, ha olyan a kód, lehetõség van két független szál futtatására: az egyes szálak ugyanazt a pipeline-t használják, ám (szerencsés esetben) más más belsõ részeket vesznek igénybe."
Na, hát erre mondható, hogy egy "trükkös" és igencsak butított SMT, és hogy fõleg a hosszú pipe-ok kompenzálására való (Miközben a K7/K8 a rövid pipe-ok miatt elég gyorsan tud váltogatni a szálak között, ami némileg ellensúlyozza ezt.)
"Remélem sikerült értelmesen leírnom."
Sikerült. Csak kár, hogy a valóságban szinte sosem jön ki a 100% teljesítménynövekedés, csak sokkal kevesebb. Sõt, pár ismerõsöm egyenesen lassulásról számolt be bizonyos esetekben.