Core vs NetBurst architektúra

Fórumok

Üdv!

Számítógép architektúrák tárgyból vesézgettük a NetBurst architektúrát (gyk: P4 proci). Több sebből vérzett a processzor:
1.) CISC utasítósok, változó szélességű utasításhossz. Hiába van RISC magja, szét kell tördelnie a CISC utasításokat futási időben, de ez elég sok hardvert igényel, illetve bonyolítja a tervezést.
2.) Kétcímes, memóriaorientált ISA. A legtöbb utasítás memóriára hivatkozik ahelyett, hogy mondjuk töltő/tároló architektúra lenne, 3 operandusú utasításokkal.
3.) Kicsi és szabálytalan regiszterkészlet. Ennek több hátránya van: egyrészt megnehezíti a fordítóprogramok írását, másrészt nem sok hely van az eredmények tárolására, így sok memóriaműveletre van szüksége (amit nem szeretünk, mert lassú... és mivel egyre jobban elhúznak a procik órajelei a memóriákéi mellett, ezért a helyzet csak rosszabb lesz).
4.) A sok memóriahivatkozás indokolatlanul sok WAR (Write After Read) függőséget okoz, ami megint nem túl jó dolog. Ezt regiszterátnevezésekkel és titkos regiszterekké átrendező pufferekkel oldja meg. Ez gyorsítótár problémákhoz vezet -> sorrenden kívül kell végrehajtani az utasításokat, ami nem is lenne nagy baj, de a megszakítások miatt helyre kell állítani a sorrendet. Ez indokolatlanul bonyolult hardvert kell készíteni.
5.) Hogy ezt gyorsan meg lehessen csinálni, nagyon hosszú csővezetékre van szükség. A feltételes ugrásoknál ez könnyedén eldugul, ezért nagyon pontos elágazásjövendölésre van szükség. Ha nem jön be, akkor ki kell üríteni a csővezetéket, ami nagyon költséges, így még kis hibázási ráta mellett is keményen odavág a teljesítménynek.
6.) Ennek enyhítésére spekulatív végrehajtásokat kell végeznie, de a téves útra mutató memóriahivatkozások csapdát okozhatnak.
7.) stb :)

Szóval arra lennék kíváncsi, hogy a Core architektúrák esetén mennyiben változott a dolog? A felmerülő, és egyre súlyosbodó problémákat hogyan hidalták át?

Bónusz kérdés: az AMD-nél hogyan működik ez?

Hozzászólások

nem neztem utana, szoval ez csak velemeny.

1.) nem valtozott (illetve van macroop fusion), ia32 architektura sajatja
2.) nem valtozott, ia32 sajatja
3.) amd64/em64t ezen segit, 32 bitben nem valtozott ez az ia32 sajatja
4.) mivel a sok memoriahivatkozas ugyanugy maradt, nem hiszem hogy ez valtozott volna - ia32 sajatja
5.) a csovezetek robidebb, netburstnel egy rossz ugras 48 orajel elveszteset jelenti, core 2-n kevesebb, de nem tudom mennyi
6.) tovabbra is igaz, bar rovidebb a pipeline

mindenesetre en ugy latom amiket felsoroltal az az ia32-re (tehat minden x86 procira) alapvetoen igaz.

szerk: itt remelem kijavitanak, de en azt hiszem a core 2 architekturat azert jobb, mert
rovidebb a pipeline (egy rosszul becsult ugras tenyleg tragedia volt p4-en), es tobb/esetenkent gyorsabb vegrehajtoegysege van a core 2-nak (egy orajel alatt tobb utasitast tud vegrehajtani), ezeken felul az sse2 ketszer olyan gyors a 128 bites feldolgozas miatt (eddig 64 bit volt) es az sse is gyorsabb lett (kevesebb a latency sok esetben)

- Use the Source Luke ! -