1. Reduser straffer for feilprediksjon av grener
- Grenprediktorer brukes til å forutsi neste instruksjon som skal utføres. Hvis riktig prediksjon er gjort, er instruksjoner allerede forhåndshentet, og det er derfor ingen rørledningsstopp. På den annen side, i tilfelle feil prediksjon, går utførelse inn i gjenopprettingsfaser. Stengning av rørledning fører til ytelsestap.
- Teknikker som kan brukes for å redusere feilprediksjon av grener er:Økende bufferstørrelser, sløyfeutrulling, sløyfefusjon.
2. Redusere databuffer for manglende straff
- Databuffer brukes til å redusere belastning og lagringstider mens data hentes fra hovedminnet. Men når den forespurte minneadressen ikke finnes i hurtigbufferen, kalles den en Cache Miss og data må hentes fra hovedminnet, noe som tar lengre tid.
- Det er to typer cache-misser:
a) Forkjølelse - Oppstår når den refererte minneblokken ikke er i hurtigbufferen og heller ikke var der før.
b) Kapasitet mangler - Oppstår når den forespurte blokkeringen ikke er til stede i hurtigbufferen, men kunne ha vært til stede hvis det var nok plass.
- Teknikker for å redusere cachemisser:øke cachestørrelsen, romlig lokalitet (gruppering av dataene med høy sannsynlighet for tilgang sammen).
3. Reduserer kontroll-flyt-overhead
- Kontroll-flyt-instruksjoner i et program endrer rekkefølgen for utførelse av instruksjoner.
- Teknikker som kan brukes for å redusere kontrollflyten:Redusere antall grener (f.eks. fjerning av nestede if-else), bruk av hoppetabell, utrulling av sløyfer.
4. Spekulativ utførelse
- Spekulativ utførelse innebærer å utføre instruks utover en greninstruksjon med antagelse om at grenen vil bli tatt.
- Spekulasjoner blir enten bekreftet eller knust avhengig av den faktiske retningen til grenen senere.