[Re:] [akosf:] Socket7 teszt / 3x66MHz - BLOGOUT fórum

üzenetek

hozzászólások


#95904256
(veterán)
Blog

Kíváncsiságból utánanéztem a dolognak. A helyzet az, hogy az FPU Mandel legidőrablóbb ciklusának kódja meglehetősen egyszerű, így könnyű megérteni a dolgot:

Ezen a rövid ciklusmagon belül egyszerre két folyamat zajlik. Az egyik maga a számoló rutin, a másik pedig egy szélsőérték felügyelet. Ez utóbbi vastagon szedve emeltem ki. Mint látható van benne egy óriási teljesítménycsökkentő baki. A szélsőérték figyelésnél a memóriába QWORD-ösen kerül az adat aminek csak a felső DWORD-jét olvassuk vissza. Ez a pirossal szedett rész. ( Egyébként a legtöbb optimalizációs manual ( Intel/AMD ) felhívja a figyelmet arra, hogy ILYET NE! mert a processzorok nem tudják hatékonyan kezelni a kiírás alatt lévő ( L1 cache-be tartó ) adat részleges visszaolvasását. )

Tulajdonképpen az FPU Mandel eredményét legalább annyira ez a részleges adatkezelési probléma határozza meg mint maga az FPU. Vagy talán még jobban! Az ember ugye rögtön gondolná, hogy a Rise-nál rágyúrtak erre a problémára a load-store unitban, de... kíváncsiságból újból lefuttattam az Everest 5.02/FPUMandel-t egy K6-III+ és a Rise processzoron. És mit láttam?! Hogy szinte megtévesztésig ugyanaz a kód futott a két processzoron, de mégsem ugyanaz!

Csattanó: Mit gondoltok mi volt a különbség a két kód között?
Igen... az, hogy itt DWORD-ösen volt tárolva az FPU-ból az adat...

üzenetek