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.