-> #23
Du skal forestille dig en CPU's instruktionssæt som et langt samlebånd. Jo længere pipeline, jo længere samlebånd.
I starten af båndet, står en medarbejder med en liste over hvad der skal laves (eks. en bil). Hele samlebåndet er nu forberedt på at lave en bil, men ham der står med ismaskinen er ikke særlig nyttig, da en bil sjældent har brug for softice (nok nærmere tun, tøhø). Derfor er der en del af samlebåndet som ikke bliver brugt til noget, her kommer Hyperthreading ind i billedet.
Manden, for enden af samlebåndet, står i stedet med en masse ordresedler, og på en af dem, står der "softice til Cornerrage" - nu er fidusen så, at på det her samlebånd, passer hver arbejder SIN funktion, og kan ikke tage sig af andres arbejde.
Derfor er det bydende nødvendigt, at manden for enden af samlebåndet kan finde rundt i ordrene - ham kalder vi "branch prediction".
Vi lægger ikke mærke til ham, når det går godt. Så er CPU'en fuld beskæftiget. Men når han laver ged i den, falder ydelsen.
Det er hér AMDs problem ligger.
Modsat Intels forsøg på Hyperthreading (hvor en 'tilfældig' opgave passes ind på samlebåndet), har AMD én mand der styrer to samlebånd (en hybrid-hyperthreading-dual-core om man vil).
Dvs. - når han laver ged i dén, er det ikke kun ét samlebånd der arbejder forgæves - men to. Men eftersom der 'kun' er én mand som sender arbejde afsted til to samlebånd, tæller det ikke som en dual-core, men man mister alligevel to samlebånd, når den ene af dem laver fejl.
Det var (næsten og stort set) det samme problem Intel havde med Netburst-arkitekturen (Prescott som eksempel). Deres løsning var så, at hæve clockfrekvensen, hvilket øgede strømforbruget. Og så er vi tilbage ved status quo - fordi ydelsen ikke følger med, når nu sandsynligheden for regnefejl (samlebåndet tømmes, og man forsøger igen) øges når clockfrekvensen og temperaturen stiger.
Men, for at vende tilbage til dit spørgsmål: Hvordan den mister en beregning.
Det svarer sådan set bare til, at du laver et regnestykke på en lommeregner. Du er nu manden for enden af samlebåndet, der skal have en maskine (lommeregneren eller samlebåndet) til at tage en instruktion og give dig et output (en polygon på en skærm eller et tal på din lommeregner). Trykker du forkert på lommeregneren, skal du (i princippet) begynde forfra og tømme lommeregnerens hukommelse.
Sådan fungerer det jo ikke helt præcist i virkeligheden (og det samme gælder i øvrigt CPU'er), men det illustrerer idéen ret godt.
Så, for hver cyklus CPU'en regner forkert, halverer den sin ydelse (for frekvensen). Gør den over flere tråde/kerner, er det endnu værre.
Køber man AMD, er det helt slemt - men, man er på en måde selv ude om det.
Men!
Det der er AMD's force, er små mængder data (selvom det lyder paradoksalt) uden system i. Så hvis man endelig skal drage parallellen, så er:
AMD:
En lille racerbil, der kører 1.000 km/t (overdrivelse fremmer forståelsen), med små pakker.
Intel:
En stor lastbil, der kører 100 km/t, med store pakker.
Hvad er bedst?
Jamen. Hvis du har mange forskellige ting (og dit transportmiddel kun kan køre med én slags ting ad gangen - hvilket gælder de fleste CPU'ers måde at arbejde på), er racerbilen at foretrække. Det oversætter vi til gaming, hvor der ikke kommer en lind strøm af samme slags beregning, da du jo flytter dig osv.
Hvis dit arbejde er meget af "det samme" (tænk videoredigering, 3D-arbejde, o.lign.) er Intel at foretrække. Men finten er, at AMD og Intel begge har gode CPU'er, som især er fede til tungt arbejde - og de koster endda omtrent det samme. Men det glemme folk, fordi 3D-benchmarks fylder så meget i deres hverdag, at de glemmer, at ingen har brug for en 30 ton lastbil til at flytte en kasse bajere (internetsurf, musik, film, etc.) - det andet får man kun en større e-Peen af 😛