Vatrogasci – Poboljšani Branch Predictor, ALU, SSE3, itd.

Prvi vatrogasac za predugi pipeline s kojim ćemo se pozabaviti jest Improved
Branch Predictor. Najveći broj kašnjenja u procesoru uzrokovan je potrebom da
se očisti pa ponovo napuni pipeline nakon krive predikcije granjanja (branch
prediction). Da bi se ova negativna pojava što više smanjila, Intel je napravio
puno teoretskih i praktičkih istraživanja ponašanja algoritma za predikciju
i na kraju ga uspio poboljšati. Nećemo ulaziti u to kako cijela stvar radi jer
tako nešto bi moglo zanimati samo nekog teoretičara. Bitno je pogledati tablicu
ispod i vidjeti koliki je napredak. Za demonstraciju Intel je koristio SPECint_base2000
(radi se o broju krivih predikcija na svakih 100 instrukcija):











width=109 height="25" vAlign=top noWrap class=credits>164.gzip













































































 SPECint_base2000
podtest:

Northwood

Prescott

Napredak
u %

1.03

1.01

1.9

175.vpr
1.32

1.21

8.3

176.gcc
0.85

0.70

17.7

181.mcf
1.35

1.22

9.6

186.crafty
0.72

0.69

4.2

197.parser
1.06

0.87

17.9

252.eon
0.44

0.39

11.4

253.perlbmk
0.62

0.28

54.8

254.gap
0.33

0.24

27.3

255.vortex
0.08

0.09

-12.5

256.bzip2
1.19

1.12

5.9

300.twolf
1.32

1.23

6.8

TOTAL

12.8%

Kao što vidimo, novi Branch Predictor trebao bi u prosjeku raditi bolje za
12.8%. To je fino poboljšanje no samo po sebi nedovoljno – 12.8% bolja predikcija
ne može nadoknaditi produženje pipelinea za 50+%. Zato je Intel tweaknuo
i ALU jedinice. Broj im je ostao isti (3 – od kojih 2 za jednostavne operacije
(koje rade na 2x većoj frekvenciji od samog procesora) + 1 za kompleksne). Jedna
od ALU jedinica namijenjenih za jednostavne kalkulacije obogaćena je jedinicom
za računjanje rotacija i sl. i sada ona radi sve te kalkulacije a ne najsporija
ALU jedinica – ona za kompleksne kalkulacije. Množenje cijelih brojeva (integera)
prebačeno je s FPU-a na ALU i samim tim je isto ubrzan cijeli proces.

Intel je popravio i data pre-fetching, kako onaj hardverski, tako
i onaj softverski. Tu je i veći broj Write Combining buffera što omogućava
veći broj izvršavanja instrukcija za snimanje i učitavanje podataka. Intel je
i osjetno povećao količinu cache memorije. Tako Prescott dolazi s 16kB L1 i
1024kB L2 cachea dok stariji Northwood dolazi s 8kB (L1) + 512kB (L2)
cachea. Za P4 procesore je količina cache memorije iznimno bitna i
to se lijepo vidjelo s P4 Extreme Edition procesorima. Naćalost, latencija cachea
na Prescottu je viša (podaci isčupani iz CPU-Z-a):

Athlon 64 cache latency:
Level 1 size = 64KB latency = 3 cycles
Level 2 size = 1024KB latency = 14 cycles (11 cycles for this only level)

Northwood:
Level 1 size = 8KB latency = 2 cycles
Level 2 size = 512KB latency = 19 cycles (17 cycles for this only level)

Prescott:
Level 1 size = 16KB latency = 4 cycles
Level 2 size = 1024KB latency = 30 cycles (26 cycles for this only level)

Različiti programi dati će različite brojeve, ali svi će se složiti oko jednoga
– latencija L1 i L2 cache memorije na Prescottu je viša nego ona na Northwoodu.

Zadnja novost s kojom ćemo se pozabaviti jest SSE3 set instrukcija. Gledajući
ime, dalo bi se zaključiti da se radi o opsežnom setu instrukcija kao što su
SSE i SSE2, no realno to nije tako. Radi se o samo 13 novih instrukcija koje
su se originalno trebale zvati PNI (Prescott New Instructions) ali je Intel
zaključio da je za potrebe marketinga SSE3 puno bolji izbor. Najveći broj instrukcija
je tu da bi se poboljšala kompleksna aritmetička računanja (addsubps, addsubpd,
movsldup, movshdup i movddup). Tu su još četiri instrukcije za grafiku (haddps,
hsubps, haddpd i hsubpd), jedna za "x87-na-cijeli-broj" konverziju
(fisttp), jedna za video enkodiranje (1ddqu) te dvije za sinhronizaciju threadova
(monitor, mwait). Zadnje dvije instrukcije su tu da naprave Hyper Threading
efikasnijim i po nama baš i nebi trebale spadati pod istu grupu kao i ostale
instrukcije. HT je općenito poboljšan no točno na koji način još ne znamo. Nama
se čini da je najviše truda otišlo na smanjenje "performance hita"
kod nekih stvari kada je HT uključen, a manje da se one stvari koje rade dobro
pod HT-om dodatno ubrzaju.