Forelesning 15.11. Datatyper Kap 5.2 Instruksjonsformat Kap 5.3 Flyttall App B



Like dokumenter
Forelesning Adresseringsmodi Kap 5.4

Forelesning Instruksjonstyper Kap 5.5

TDT4105/TDT4110 Informasjonsteknologi grunnkurs:

TDT4105/TDT4110 Informasjonsteknologi grunnkurs:

Tall. Binære regnestykker. Binære tall positive, negative heltall, flytende tall

TALL. Titallsystemet et posisjonssystem. Konvertering: Titallsystemet binære tall. Det binære tallsystemet. Alternativ 1.

INF1040 Digital representasjon TALL

Tall. Posisjons-tallsystemer. Representasjon av heltall. Tall positive, negative heltall, flytende tall. Tekst ASCII, UNICODE XML, CSS

Reelle tall på datamaskin

Tall. Ulike klasser tall. Læringsmål tall. To måter å representere tall. De naturlige tallene: N = { 1, 2, 3, }

EKSAMENSOPPGAVE I FAG TDT4160 DATAMASKINER GRUNNKURS. D: Ingen trykte eller håndskrevne hjelpemiddel tillatt. Bestemt, enkel kalkulator tillatt.

Husk å registrer deg på emnets hjemmeside!

En oppsummering (og litt som står igjen)

Litt om Javas håndtering av tall MAT-INF 1100 høsten 2004

Løsningsforslag til øving 5 TFE4105 Digitalteknikk og Datamaskiner Høsten 2006

Flyttalls aritmetikk. I datamaskinen er alle tall representert i flyttalls aritmetikk.

INF1040 Oppgavesett 7: Tall og geometrier

Den siste dagen. Pensumoversikt Hovedtanker i kurset Selvmodifiserende kode Overflyt Veien videre... Eksamen

SIE 4005, 9/10 (4. Forelesn.)

Representasjon av tall på datamaskin Kort innføring for MAT-INF1100L

Pensum Hovedtanker Selvmodifiserende Overflyt Veien videre Eksamen. Oppsummering

I Kapittel 2 lærte vi om tall i alternative tallsystemer, i hovedsak om binære tall, oktale tall og heksadesimale tall.

Forelesning ISA: IJVM Kap 4.2

INF1040 løsningsforslag oppgavesett 7: Tall og geometrier

NORGES TEKNISK-NATURVITENSKAPELIGE UNIVERSITET INSTITUTT FOR DATATEKNIKK OG INFORMASJONSVITENSKAP

Dagens tema. Mer MIPS maskinkode. Maske-operasjoner Skift-operasjoner Lesing og skriving Pseudo-instruksjoner Mer om funksjonskall Registeroversikt

Forelesning Forgreningspredikering Kap 4.5 Superskalaritet Kap 4.5 Spekulativ utføring Kap 4.5

Valg av kontaktpersoner/tillitsvalgte. MAT1030 Diskret matematikk. Oppsummering av kapittel 2. Representasjon av hele tall

Overordnet maskinarkitektur. Maskinarkitektur zoomet inn. I CPU: Kontrollenheten (CU) IT1101 Informatikk basisfag, dobbeltime 11/9

Forelesning ISA-nivået Kap 5.1

Pensumoversikt - kodegenerering. Kap. 8 del 1 kodegenerering INF5110 v2006. Hvordan er instruksjonene i en virkelig CPU? Arne Maus, Ifi UiO

Del 1 En oversikt over C-programmering

Maskinvaredelen av INF 103: oversikt og innhold (1)

TDT4105 Informasjonsteknologi, grunnkurs. Introduksjon til programmering i Matlab. Rune Sætre / Anders Christensen {satre, anders}@idi.ntnu.

Fakultet for informasjonsteknologi, Oppgave 1 Flervalgsspørsmål ( multiple choice ) 15 %

Kap. 8 del 1 kodegenerering INF5110 Vår2007

Fakultet for informasjonsteknologi, Oppgave 1 Flervalgsspørsmål ( multiple choice ) 15 %

Mer om representasjon av tall

Læringsmål tall. Prefikser for potenser av Store tall. Kunne prefikser for store tall i. det binære tallsystemet

MAT1030 Forelesning 3

Oppsummering av Uke 3. MAT1030 Diskret matematikk. Binære tall. Oppsummering av Uke 3

Læringsmål tall. Kunne prefikser for store tall i. det binære tallsystemet. Forstå ulike prinsipper for representasjon av.

Kapittel 3: Litt om representasjon av tall

TDT4105 Informasjonsteknologi, grunnkurs. Introduksjon til programmering i Matlab. Rune Sætre / Anders Christensen {satre,

Teori og oppgaver om 2-komplement

Kompendium til TOD065 - Diskret matematisk programmering

Forelesning Optimalisering av μark Kap 4.4

KAPITTEL 2 Tall og datamaskiner

Forelesning Hurtigbuffer Kap 4.5

MAT-INF 1100: Obligatorisk oppgave 1

NORGES TEKNISK- NATURVITENSKAPELIGE UNIVERSITET INSTITUTT FOR DATATEKNIKK OG INFORMASJONSVITENSKAP

IN 147 Program og maskinvare

Datamaskinens virkemåte

Dagens tema. Representasjon av mantissen En desimalbrøk: 1 1, INF1070 INF1070 INF1070 INF1070

Del 4 Noen spesielle C-elementer

Kompendium i Datamaskiner Grunnkurs. Kopiert fra AoC av Stian Mikelsen

Kapittel 3: Litt om representasjon av tall

INF1020 Algoritmer og datastrukturer GRAFER

MAT1030 Diskret matematikk

Kort om meg. INF1000 Uke 2. Oversikt. Repetisjon - Introduksjon

Kapittel 1 En oversikt over C-språket

Vi bruker desimaltall for Ô oppgi verdiene mellom de hele tallene. Tall med komma kaller vi desimaltall, og sifrene bak komma kaller vi desimaler.

Løsningsforslag eksamen TDT4160 høsten 2005

INF1400 Kap4rest Kombinatorisk Logikk

NORGES TEKNISK- NATURVITENSKAPELIGE UNIVERSITET INSTITUTT FOR DATATEKNIKK OG INFORMASJONSVITENSKAP

Oversikt. INF1000 Uke 2. Repetisjon - Program. Repetisjon - Introduksjon

TDT4160 Datamaskiner Grunnkurs Gunnar Tufte

Dagens plan. INF Algoritmer og datastrukturer. Koding av tegn. Huffman-koding

Tall. Tallsystemer. Posisjonstallsystemer. Veiing med skålvekt titallsystemet 123 = = 7B 16. Lærebokas kapittel 6

Forelesning 5. Diverse komponenter/større system

INF 1000 høsten 2011 Uke september

INF1000 undervisningen INF 1000 høsten 2011 Uke september

Dagens tema INF2270. Flyt tall (B&O H boken 2.2.3) Hvordan lagres de? Hvordan regner man med dem? Overflyt (B&O H boken )

Kap. 8 del 1 kodegenerering INF april, 2008

MAT-INF 1100: Obligatorisk oppgave 1

KONTROLLSTRUKTURER. MAT1030 Diskret matematikk. Kontrollstrukturer. Kontrollstrukturer. Eksempel (Ubegrenset while-løkke)

Forelesning 2. Flere pseudokoder. Representasjoner av tall. Dag Normann januar 2008 KONTROLLSTRUKTURER. Kontrollstrukturer. Kontrollstrukturer

MINIKOMPENDIUM. av Rune Vistnes TDT4160 DATAMASKINER GK. Versjon november 2003 :: 1 ::

TDT DESEMBER, 2008, 09:00 13:00

Dagens temaer. Intern hukommelse (1) Maskinvaredelen av INF 103: oversikt og innhold (2) Maskinvaredelen av INF 103: oversikt og innhold (1)

Leksjon 2. Setninger og uttrykk

Oppgaver til kodegenerering etc. INF-5110, 12. mai, 2015

Oppsummering Assemblerkode Hopp Multiplikasjon Kode og data Array Oppsummering

Leksjon 2. Setninger og uttrykk

Forside. MAT INF 1100 Modellering og beregninger. Mandag 9. oktober 2017 kl Vedlegg (deles ut): formelark. Tillatte hjelpemidler: ingen

Dagens temaer. Architecture INF ! Dagens temaer hentes fra kapittel 3 i Computer Organisation and

TDT4110 IT Grunnkurs Høst 2016

TDT4110 IT Grunnkurs Høst 2015

Dagens tema. Dagens temaer hentes fra kapittel 3 i læreboken. Repetisjon, design av digitale kretser. Kort om 2-komplements form

TDT4160 Datamaskiner Grunnkurs Gunnar Tufte

INF2270. Datamaskin Arkitektur

Øving 1: Busser, adressemodi, multiplekser og styreord

IN 147 Program og maskinvare. Vanlige feil ved bruk av pekere Feilsøking Debuggere

Dagens tema: Enda mer MIPS maskinkode

Generell informasjon

IN 147 Program og maskinvare

TDT4110 IT Grunnkurs Høst 2016

TDT ITGK - Hardware. Kapittel 9: Følge Instruksjoner - Prinsipper for Datamaskinens Virkemåte. Terje Rydland - IDI/NTNU

AVSLUTTENDE EKSAMEN I. TDT4160 Datamaskiner Grunnkurs. Torsdag 29. November 2007 Kl

TDT4160 Datamaskiner Grunnkurs Gunnar Tufte

Transkript:

TDT4160 Datamaskiner Grunnkurs Forelesning 15.11 Datatyper Kap 5.2 Instruksjonsformat Kap 5.3 Flyttall App B

Dagens tema Datatyper (5.2) Heltall Ikke-numeriske datatyper Instruksjonsformat (5.3) Antall eksplisitte operander Fast vs. variabel lengde Korte vs. lange format Flyttall (App. B) Regning med flyttall IEEE 754

Datatyper En datamaskin behandler data Heltall, flyttall, ikke-numeriske data Maskinvarestøtte for datatype ISA-Instruksjoner som opererer på spesifikke format (eks: adderer to 32-bits 2s-kompl. heltall) Spesifisert hvordan data skal lagres binært Alternativ: Programvarestøtte Eks: Programmerer lager rutine for håndtering av 64- bits heltall vha. to 32-bits heltall

Heltall Som regel maskinvarestøtte for flere størrelser (eks: 8, 16, 32, 64 bit) Med eller uten fortegn Uten fortegn gir større maksimaltall Negative tall håndteres som regel vha toerskomplement (antas kjent se app A) BCD: Binary Coded Decimal Spesialformat for desimaltall (titallssystemet) 4 bit lagrer hvert siffer Må da tenke på mentebit fra posisjon 3

Flyttall Så langt: Heltall på binær form Problem 1: Hva med 3,14? 32 bit kan lagre 2 32 ulike tall Eks: Positive heltall 0 4 294 967 295 Problem 2: Hva da med større/mindre tall? Løsning: Flyttall ±F * B ±E (Fraksjon/Mantisse, Base, Eksponent) 3,14 = 314 * 10-2 (= 3140 * 10-3 ) 5 000 000 000 = 5 * 10 9 (Detaljer om flyttall i neste time.)

Ikke-numeriske datatyper Karakterer (tegn) ASCII (7 bit) eller Unicode (16 bit) Boolske verdier Peker Som regel brukes 1 byte per verdi Unntak: Bitmap med boolske verdier Adresser til lagerlokasjoner (typisk hovedlager) Multimedia (Eks: fargeverdier)

Datatyper på eksempel- CPU Pentium 4 UltraSPARC III 8051

Instruksjonsformat Assembler: ADD R1, R2, R3 Maskinkode: 101010111001011010100. Instruksjonsformatet forteller hvilke bits som tilsvarer hva Generelt: Opkode + Adresser til operander Hvor mange operander er eksplisitt? Implisitt: Gitt av opkode eller annen operand Operander kan være registre eller hovedlageradr. Hvor mange kan være hovedlageradresser?

# eksplisitte operander Gitt C = A + B 3 operander A, B og C Hvor mange skal kunne oppgis eksplisitt? Viktig avgjørelse mhp. arkitektur Mange eksplisitt enklere kode Få eksplisitt kortere instruksjoner Gjennomgående eksempel: X = (A + B) * (C + D) Alt er hovedlageradresser Innholdet i A, B, C, D skal ikke endres

3-adresseinstruksjoner X = (A + B) * (C + D) ADD T1, A, B ADD T2, C, D MUL X, T1, T2 T1 og T2 brukes til mellomlagring (kan være i hovedlager eller registre) Hvis ADDR1-3 er hovedlageradr., trenger vi ikke registre

2-adresseinstruksjoner X = (A + B) * (C + D) MOVE T1, A ADD T1, B MOVE X, C ADD X, D MUL X, T1 Implisitt: Første operand er også der svar havner Må bruke T1 for å ikke ødelegge innholdet i A

1-adresseinstruksjoner X = (A + B) * (C + D) LOAD A ADD B STORE X LOAD C ADD D MUL X STORE X Implisitt akkumulator. Kan både være en operand og der svar havner LOAD A ACC M[A] ADD B ACC ACC + M[B] STORE X M[X] ACC

0-adresseinstruksjoner X = (A + B) * (C + D) PUSH PUSH ADD PUSH PUSH ADD MUL POP A B C D X Implisitt alt. Bruker stakk for operander og svar Unntak Push & Pop

Hva er riktig i dag? Register-til-register 3-adresseinstruksjoner Men alt må være registre Trenger få bits for å oppgi et register Load/Store Spesielle 1-adresseinstruksjoner Kan dermed bruke bits tilsvarende 3 registeradresser til å oppgi en hovedlageradresse Optimalisert for tregt hovedlager, mange reg.

Fast instruksjonslengde? Fast instruksjonslengde Enklere dekoding Fordel for samlebånd (spesielt superskalare) Men: mulighet for sløsing med plassen Variabel lengde vanlig før, fast lengde vanlig i nye ISA

Korte eller lange instruksjonsformat? Opkodefelt Langt felt gir mulighet for mange forskjellige instruksjoner og plass til å vokse på # adressefelt diskutert tidligere Adressefelt Langt felt gir mulighet for stort hovedlager, mange registre Overordnet Bør være kortest mulig mhp. henting av instr. For kort gir kompleks dekoding, mange begrensninger

Variabel opkodelengde (1/2) Anta 16 bits instruksjonslengde og formatet under I utgangspunkt maks 16 forskjellige instruksjoner Men hva med instruksjoner som har færre enn 3 operander? Opcode = 1111 kan bety instr. med 2 operander Da kan Address 1 brukes til å spesifisere 16 2-adresse instruksjoner Tilsvarende for 1- og 0-adresse instruksjoner

Variabel opkodelengde (2/2)

Eksempel: Pentium 4 Komplekst og fullt av spesialtilfeller 6 felt av variabel lengde, kun 1 er obligatiorisk Mye 2-adresseinstruksjoner der 0-1 er hovedlageradr. Prefiks lagt til når Opcode ble for lite

Eksempel: UltraSPARC III Fast lengde, 32-bits Som regel 3-adresseinstruksjoner, alt er registre I utgangspunkt kun 4 format, flere lagt til senere 2 første bits forteller hvilket av disse 4 det er

Eksempel: 8051 Variabel lengde (plassbruk viktig, ikke samlebånd) Bruker akkumulator mye (1-adresseinstruksjoner)

Flyttall Så langt: Heltall på binær form Problem 1: Hva med 3,14? 32 bit kan lagre 2 32 ulike tall Eks: Positive heltall 0 4 294 967 295 Problem 2: Hva da med større/mindre tall? Løsning: Flyttall ±F * B ±E (Fraksjon/Mantisse, Base, Eksponent) 3,14 = 314 * 10-2 (= 3140 * 10-3 ) 5 000 000 000 = 5 * 10 9

Hvorfor lære om flyttall? Unngå tabber... float k = 0; for (int i = 0; i < 10; i++) k += 0.1; System.out.println("k=" + k); k=1.0000001 Adriane 5 eksploderte 40 sek etter lift-off pga. gal konvertering flyttall til heltall Patriotrakett traff galt mål pga. avrundingsfeil

Representerbare tall 32 bit

Overflyt og underflyt Overflyt Absoluttverdi til et tall for stort til å kunne bli representert Alvorlig feil, gir typisk exception Tilsvarende problem for heltall Underflyt Tall for lite til å kunne bli representert Som regel ikke alvorlig, kan tilnærmes med 0 Nytt problem med flyttall

Avrunding Flyttall danner ikke et kontinuum som de reelle tallene. Dvs. ikke alle reelle tall kan representeres som flyttall. Når en regneoperasjon med flyttall gir et ikke representerbart tall benytter man avrunding (eng. rounding) til nærmeste representerbare tall.

Regning med flyttall (1/2) Mer komplisert enn for heltall egne instr. Addisjon / Subtraksjon Krever lik eksponent Adder / subtraher fraksjon, behold eksponent Multiplikasjon Multipliser fraksjon, adder eksponenter Divisjon Divider fraksjon, subtraher eksponenter

Regning med flyttall (2/2) Eksempel: 0,5372400 * 10 2 + 0,1580000 * 10-1 0,5372400 * 10 2 + 0,0001580 * 10 2 = 0,5373980 * 10 2 Justerer tallet med den minste eksponenten.

Normalisering og excess Normalisert flyttall: Mest signifikante siffer i fraksjon er ulik 0 0,35 er normalisert, 0,0035 er ikke Sikrer maksimal presisjon Excess (eller Bias): Hvordan lagre negativ eksponent? Excess en konstant legges til før lagring 8 bit: Har eksponent fra -127 til +128 Excess 127 Lagrer dette som 0-255 Fordel: Gir enklere sammenligning av størrelse.

Eksempel: Normalisering Normaliserer: Skifter fraksjon 11 bits til venstre og trekker 11 fra eksponent

IEEE Standard 754 for binære flyttall Normaliserer til 1,xxx Kan la være å lagre 1 eren Spesielle bitmønstre for å representere: Positiv og negativ null: +0 og -0 Positiv og negativ uendelig: + og - Udefinerte tall: Not a Number, NaN (f.eks. 0/0)

IEEE 754: Single vs. double

Dagens oppgaver Hva blir IEEE 754-representasjonen av: 0.5 Hvilket tall representeres av følgende bitstreng? 1 10000000 01100000000000000000000 Frivillig hjemmeoppgave: int main() { } unsigned char *p; float f = 123.123123; /* 32 bit IEEE 754 flyttall som skal tolkes. */ p = (unsigned char *)&f; /* TODO: Tolk bitene som p peker på. */