Table of Contents
Instruksjonsnivå parallelisme (ILP) er en nøkkelfaktor for å forbedre ytelsen til moderne CPUer. Det innebærer å utføre flere instruksjoner samtidig for å maksimere gjennomstrømming. Analysere og forbedre ILP krever å forstå prosessorens arkitektur og identifisere flaskehalser som begrenser parallelle utførelse.
Analysere instruksjon-nivå Parallalitet
For å analysere ILP brukes verktøy som ytelsesdisker og profileringsprogramvare. Disse verktøyene måler metrikk som instruksjonsgjennomstrømning, rørledningsbod og cache-mangler. Identifiseringsmønstre i disse metrikkene bidrar til å finne stadier der parallellisme er begrenset.
Det er avgjørende å undersøke instruksjonsavhengigheter. Datafarer, som les-etter-skrive (RAW), kan hindre instruksjoner fra å utføre parallell. Kontrollfarer, som stammer fra greninstruksjoner, påvirker også ILP ved å introdusere boder.
Strategier for å forbedre ILP
Flere teknikker kan forbedre ILP i moderne CPUer. Uten-for-ordre-utførelse tillater instruksjoner å bli behandlet som ressurser blir tilgjengelige, redusere boder forårsaket av avhengigheter. Spekulativ gjennomføring forutsier grenresultater for å holde rørledningen fylt.
Kompileroptimeringer spiller også en rolle. Ombestillingsinstruksjoner, minimering av avhengigheter og avrulling av loops kan øke parallellismen. Maskinvarefunksjoner som register omdøbning bidrar til å eliminere falske avhengigheter, ytterligere forbedre ILP.
Nøkkelteknikker for optimalisering
- Instruksjon Reordre: Rearround instruksjoner for å redusere farer.
- Loop Unrolling: Utvide loops for å avsløre mer parallelle instruksjoner.
- Registrer Renaming: Ved hjelp av flere register for å unngå falske avhengigheter.
- Branch Prediksjon: Anslår grenresultater for å minimere boder.
- Utførelse av ordre: Utførelse av instruksjoner som ressurser er tilgjengelige.