Kapittel 6 Høynivå møter lavnivå Fra C til assembly Fra assembly til maskinkode Linking og lasting CISC eller RISC Komplekst eller enkelt. Hva er raskest? Pipelining Smart bruk av registre Kode for lavt energiforbruk 21.03.2013
CISC eller RISK Complex instruction set computer Redusere det semantiske gapet Klart seg veldig bra på desktopen (Intel, AMD) Binærkompatibilitet. Reduced instruction set computer Bedre å gjøre enkle ting raskt og heller gjøre det flere ganger Load store arkitektur Ofte bra på strømforbruk og dermed attraktivt i mobiler (ARM) P.t. ca 10-15 ganger så mange RISC som CISC prosessorer Risk er trendy Men det som betyr noe er uansett best mulig ytelse (fart, strøm, varme) til lavest mulig pris CISC or RISC er nærmere i praksis enn i prinsipp.
RISK motivasjon. Hva gjør prosessoren? Tilpasset fra D. Knuth artikkel I 1971. Referanse I boka.
RISK motivasjon. Hva gjør prosessoren? Tilpasset Tannenbaum artikkel i 1999. Referanse I boka.
RISK Vi skriver opplagt normalt enkle programmer. Tilordninger og enkle operasjoner står for en veldig stor del av kjøretiden Dette gav inspirasjonen til RISC
Hastighetsforbedring (speed-up) Speedup S = Kjøretid uten forbedring over kjøretid med forbedring (Prosent forbedring) Kjøretid T =Antall instruksjoner (IC) * antall sykler pr instruksjon (CPI) * sykel-tid (t) Kombinert:
Eksempel Sjekk av trade-off: Færre sykler pr instruksjon: 5 til 3,5. Men lengere klokketid: 100ns til 120ns.
Pipeline Som et samlebånd hvor instruksjonen utføres i flere steg, stasjon for stasjon. Begynne på neste instruksjon så fort det er blitt ledig i første stasjon. Positivt: Gir økt fart. Kortere klokketid og en instruksjon blir fortsatt ferdig hver klokkesykel. Utfordring: Hvordan ha full pipeline hele tiden? Hazards, braching..
Pipeline (SP)ARC Siste steg kan deles i ALU og writeback Writeback ikke alltid nødvendig. I det følgende deler vi i 5 steg for enkelhets skyld
Pipeline srl %r3, %r5 addcc %r1, 10, %r1 ld %r1, %r2 subcc %r2, %r4, %r4 be label srl addcc nop nop ld subcc nop nop be nop nop nop nop nop srl addcc nop nop ld subcc nop nop be nop nop nop nop nop srl addcc nop nop ld subcc nop nop be nop nop nop nop nop srl addcc nop nop ld subcc nop nop be nop nop nop nop nop nop nop ld nop
Pipeline srl %r3, %r5 addcc %r1, 10, %r1 ld %r1, %r2 subcc %r2, %r4, %r4 be label srl addcc nop nop ld subcc nop nop be nop nop nop nop nop srl addcc nop nop ld subcc nop nop be nop nop nop nop nop srl addcc nop nop ld subcc nop nop be nop nop nop nop nop srl addcc nop nop ld subcc nop nop be nop nop nop nop nop nop nop ld nop
Pipeline srl addcc nop nop ld subcc nop nop be nop nop nop nop nop srl addcc nop nop ld subcc nop nop be nop nop nop nop nop srl addcc nop nop ld subcc nop nop nop be nop nop nop nop srl addcc nop nop ld subcc nop nop be nop nop nop nop nop nop nop ld nop
Pipeline En hazard - Kan kanskje fikses av kompilatoren, men er det en god ide? - Direkte tilbakekobling kan muligens vinne ett steg. - Kan definitivt fikses ved å holde tilbake instruksjoner i pipen til resultatet er klart - Har omrokering fra forrige slide noen ulemper? srl addcc nop nop ld subcc nop nop be nop nop nop nop nop srl addcc nop nop ld subcc nop nop be nop nop nop nop nop srl addcc nop nop subcc nop nop be nop nop nop nop nop srl addc nop c nop ld subcc nop nop be nop nop nop nop nop nop nop ld nop ld
Overlappende register-vinduer
SPARC registre
SPARC registre
Bærbart Kunsten å spare strøm Generelt: Et raskt program er et strømsparende program Det koster mer strøm å toggle fra 0 1 eller motsatt, enn å vedlikeholde eksisterende ladning. Dermed vil kode som optimaliseres for å unngå slike skifter gi lavere strømforbruk
Bærbart Kunsten å spare strøm Assembly ld [2096], %r16 ld [2100], %r17 ld [2104], %r18 ld [2108], %r19 I maskinkode
Bærbart Kunsten å spare strøm Bytte de siste to instruksjonene gir: Andre optimaliseringer kan være å bytte mellom likelydende instruksjoner etc.
Gray - koding En tallrepresentasjon hvor et bit bytter av gangen. Fint for sekvenser av instruksjoner og for å adressere sekvenser av minne