12.07.2015 Views

Kompendium i Datorteknik

Kompendium i Datorteknik

Kompendium i Datorteknik

SHOW MORE
SHOW LESS
  • No tags were found...

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

32 KAPITEL 5. PIPELINING5.7 Konfliktfri kodOm processorn antar att koden är fri från konflikter så betyder det att all kontroll avkodens riktighet är upp till programmeraren. Detta gör att det generellt är svårt attprogrammera sådana processorer i assembler. Om programmeringen i stället utförs i etthögnivåspråk så faller det på kompilatorn att se till att den genererade assemblerkodenär korrekt vilket är betydligt mera praktiskt.Exempel: En pipelinad processor antar att koden är konfliktfri. ALU-instruktionertar dock tre klockcykler på sig innan resultatet är skrivet till målregistret medan processornstartar exekveringen av en ny instruktion varje cykel. Anta att vi har följandeenkla kodsnutt:1: add D1, D22: add D0, D1Det logiska beteendet är att efter dessa två instruktioner ska D0 innehålla resultatetav beräkningen D0+D1+D2. Men resultatet av den första instruktionen skrivs inteförrän den andra har läst operanderna vilket gör att resultatet i D0 kommer att varaD0+D1. För att få det “korrekta” beteendet måste man lägga in en eller flera andra instruktioner(t.ex. nop) mellan de två additionerna. Hur många instruktioner som krävsmellan additionerna bestäms av pipelinens längd, när operanderna läses från registrensamt när resultatet skrivs.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!