1. Reducering af straf for fejlforudsigelse af brancher
- Grenprædiktorer bruges til at forudsige den næste instruktion, der skal udføres. Hvis der foretages korrekt forudsigelse, er instruktioner allerede hentet på forhånd, og der er således ingen rørledningsstop. På den anden side, i tilfælde af ukorrekt forudsigelse, går eksekveringen ind i genopretningsfaser. Standsning af pipeline fører til ydeevnetab.
- Teknikker, der kan anvendes til at reducere fejlforudsigelse af grene, er:Forøgelse af bufferstørrelser, sløjfeudrulning, løkkefusion.
2. Reducering af datacache-miss-straf
- Data Cache bruges til at reducere belastning og lagringstid, mens data hentes fra hovedhukommelsen. Men når den anmodede hukommelsesadresse ikke findes i cachen, kaldes den en cachemiss, og data skal hentes fra hovedhukommelsen, hvilket tager længere tid.
- Der er to typer cache-misser:
a) Forkølelsesmisser - Opstår, når den refererede hukommelsesblok ikke er i cachen, og den var der heller ikke før.
b) Kapacitet mangler - Opstår, når den anmodede blok ikke er til stede i cachen, men kunne have været til stede, hvis der var plads nok.
- Teknikker til at reducere cache-misser:Forøgelse af cachestørrelse, rumlig lokalitet (gruppering af data med høj sandsynlighed for adgang sammen).
3. Reduktion af kontrol-flow-overhead
- Kontrol-Flow-instruktioner i et program ændrer rækkefølgen for udførelse af instruktioner.
- Teknikker, der kan bruges til at reducere kontrol-flow:Reduktion af antallet af grene (f.eks. fjernelse af indlejrede if-else), brug af spring-tabel, sløjferudrulning.
4. Spekulativ udførelse
- Spekulativ eksekvering involverer at udføre instruktion ud over en filialinstruktion med den antagelse, at filialen vil blive taget.
- Spekulationer enten verificeres eller knuses afhængigt af den faktiske retning af grenen senere.