Forhistorien Menneskene har alltid prøvd å lage maskiner for å løse sine problemer. Dagens tema

Like dokumenter
Datamaskinenes historie Når, hvor og hvorfor ble de første datamaskiner laget? Hvordan har utviklingen gått? Hva inneholder en datamaskin?

Forhistorien Menneskene har alltid prøvd å lage maskiner for å løse sine problemer. Dagens tema INF1070 INF1070 INF1070

Datamaskinenes historie Når, hvor og hvorfor ble de første datamaskiner laget? Hvordan har utviklingen gått? Hva inneholder en datamaskin?

Det viktigste i en moderne datamaskin er hovedkortet («motherboard»):

Det viktigste i en moderne datamaskin er hovedkortet («motherboard»):

Oppbygningen av en datamaskin Det viktigste i en moderne datamaskin er hovedkortet («motherboard»):

Det viktigste i en moderne datamaskin er hovedkortet («motherboard»):

Dagens tema. Datamaskinenes historie. De første moderne datamaskiner. Løsning. Menneskene har alltid prøvd å lage maskiner for å løse sine problemer.

INF2100. Dagens tema: Flink-maskinen Litt datamaskinhistorie. Registre og lagre. Instruksjoner. Flass-koden

Dagens tema. Rask-maskinen. Rasko-kode Raskas-kode. Litt datamaskinhistorie Registre og lagre Instruksjoner

En overikt. Dagens tema. Datamaskinenes historie. Rask-maskinen Litt datamaskinhistorie Registre og lagre Instruksjoner. Rasko-kode.

Datamaskinenes historie Menneskene har alltid prøvd å lage maskiner for å løse sine problemer.

INF-103. Velkommen til. Første time. Fra brukergrensesnitt til maskinvare. eller Datamaskinen på tvers. Andre time

INF-103 Fra brukergrensesnitt til maskinvare

Dagens tema: Maskinkode. Litt datamaskinhistorie Hva er maskin- og assemblerkode? x86-prosessoren Programkode og variabler

Pensum Hovedtanker Selvmodifiserende Overflyt Veien videre Eksamen. Oppsummering

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

2 Parser. 1 Skanner. 4 Kodegenerator. 3 Sjekker. Oversikt Datamaskinhistorie x86 Kodegenerering Setninger Uttrykk.

En oppsummering (og litt som står igjen)

ISO Dagens tema. Tegn. Uttrykk. I Minila lagres kun heltall, men de kan tolkes som tegn. Det siste om Minila.

Hvordan en prosessor arbeider, del 1

Prosessoren. Bakgrunnen Innhold LMC. Assemblerkode Oppsummering instruksjonene [Englander kap 6] Hva inneholder den? Hvordan utføres instruksjonene?

Oversikt Deklarasjoner Typesjekk Programmering Datamaskinhistorie x86 Kodegenerering

Hvordan fant man på å lage datamaskiner?

Dagens tema INF1070. Makroer. Sanntidsprogrammering. Avbrudd. Bruker- og supermodus. Blanding av C og assemblerkode. Selvmodifiserende kode

Spørsmål: Hvilken datamaskin var den første? Svaret Det avhenger av hva man mener med en datamaskin. Ifi. Spørsmålet Analoge Digitale Videre

Dagens tema. Makroer Ofte gjentar man kodelinjer når man skriver assemblerkode. Da kan det lønne seg å definere en makro:

Spørsmål: Hvilken datamaskin var den første? Svaret. Det avhenger av hva man mener med en datamaskin. Spørsmålet Analoge Digitale Videre

Dagens tema Programmering av x86 Flytting av data Endring av størrelse

Spørsmål: Hvilken datamaskin var den første?

Spørsmål: Hvilken datamaskin var den første? Svaret. Det avhenger av hva man mener med en datamaskin. Spørsmålet Analoge Digitale Videre

Spørsmål: Hvilken datamaskin var den første? Svaret. Det avhenger av hva man mener med en datamaskin. Spørsmålet Analoge Digitale Videre

Notater: INF2270 Assembler

Dagens tema: Enda mer MIPS maskinkode

Innhold. 2 Kompilatorer. 3 Datamaskiner og tallsystemer. 4 Oppsummering. 1 Skjerm (monitor) 2 Hovedkort (motherboard) 3 Prosessor (CPU)

Dagens tema: Semantisk sjekking. Maskinkode. Hvordan finne deklarasjoner? Hvordan programmere sjekking av riktig navnebruk?

Oppsummering Assemblerkode Hopp Multiplikasjon Kode og data Array Oppsummering

Oversikt Kodegenerering Variable Setninger Uttrykk While-setningen Oppsummering

En oppsummering. Pensumoversikt Hovedtanker i kurset Selvmodifiserende kode Overflyt Eksamen. Programmeringsoppgaver Flervalgsoppgaver

Dagens tema INF1070. Bit fikling. Makroer. Blanding av C og assemblerkode. Mer om Core War. Dag Langmyhr,Ifi,UiO: Forelesning 22. mai 2006 Ark 1 av 25

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

UNIVERSITETET I OSLO

Datamaskinens oppbygning

IN 147 Program og maskinvare

Minneområder Det er vanlig å dele opp minnet til en prosess i disse ulike områdene: Fast minne Store og små indianere «align» ing struct er

Forelesning 5. Diverse komponenter/større system

Å løse eksamensoppgaver

Dagens tema. Er maskinen big endian? Denne funksjonen tester det: INF1070 INF1070 INF1070 INF1070

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

Dagens tema. Minnestrukturen Grovt sett ser minnet for hver process slik ut: Flytting av data. Programmering av x86

Oversikt Kodegenerering Variable Setninger Uttrykk While-setningen

UNIVERSITETET I OSLO

Datamaskinen LC-2. Dagens tema. Tall i datamaskiner Hvorfor kan LC-2 lagre tall i intervallet ? Hvorfor er det akkurat celler i lageret?

Dagens tema. Datamaskinen LC-2 En kort repetisjon. Binære tall Litt om tallsystemer generelt. Binære tall. Heksadesimale og oktale tall

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

INF1400 Kap4rest Kombinatorisk Logikk

Løsningsforslag til eksamen i INF2270

Tema for siste forelesning:

Programmeringsspråket C

Intro Rask kode x86-op Optimalisering Inline-kode Konklusjon

Oversikt Kodegenerering Variable Setninger Uttrykk While-setningen

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

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 )

Dagens tema INF2270. Flyt-tall (B&O H-boken 2.4, 3.14) Hvordan lagres de? Hvordan regner man med dem? Bit-fikling (B&O H-boken 2.1.

Dagens tema. Programmering av x86 INF2270. Minnestrukturen i en prosess. Flytting av data Endring av størrelse. Aritmeriske operasjoner Flagg

Oversikt Kodegenerering Variabler Setninger Uttrykk While-setningen

Oversikt Deklarasjoner Typesjekk Datamaskinhistorie x86 Kodegenerering

Dagens tema. LC-2 LC-2 er en «ekstrem-risc»; den har 16 instruksjoner og 3 adresseringsmåter.

Debuggere En «debugger» er et meget nyttig feilsøkingsverktøy. Det kan analysere en program dump, Dagens tema INF1070 INF1070 INF1070 INF1070

Dagens tema INF2270. Cs preprosessor. Separat kompilering av C funksjoner. C og minnet. Dag Langmyhr,Ifi,UiO: Forelesning 5. februar 2007 Ark 1 av 15

Intro Evaluering Rask kode x86-op Optimalisering Inline-kode

Dagens tema. Raskere kode [REB&DRO H kap 5]

Datasystemer og informasjonssystemer

Spørsmål: Hvilken datamaskin var den første?

Programmering av x86. Minnestrukturen i en prosess Flytting av data. Skifting og rotasjoner Hopp. Stakken Rutinekall. Aritmeriske regneoperasjoner

TDT4160 OG IT2201 DATAMASKINER GRUNNKURS EKSAMEN

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Datamaskinarkitektur våren 2009

Kompilering Statiske Syntaksanalyse Feilsjekking Eksempel Oppsummering

TDT4160 Datamaskiner Grunnkurs Gunnar Tufte

Dagens tema. Raskere kode [REB&DRO H kap 5]

Dagens temaer. Fra kapittel 4 i Computer Organisation and Architecture. Kort om hurtigminne (RAM) Organisering av CPU: von Neuman-modellen

Oversikt Kodegenerering Variable Setninger Uttrykk While-setningen

Datasystemer og informasjonssystemer

Velkommen. Velkommen til INF2270. Datamaskinarkitektur. Motto: Datamaskinen på tvers

Del 4 Noen spesielle C-elementer

Debugging. Tore Berg Hansen, TISIP

INF1070. Velkommen til. Datamaskinarkitektur. Motto: Hvordan bygger man en datamaskin? INF1070

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

Tema for siste forelesning:

TDT4160 AUGUST, 2008, 09:00 13:00

Intro Digital eksamen Rask kode x86-op Optimalisering Inline-kode Konklusjon

DRI Datasystemer og informasjonssystemer

Minnehåndtering i operativsystemer

Litt om Javas class-filer og byte-kode

Programmering av x86 [REB&DRO H ]

Transkript:

Forhistorien Menneskene har alltid prøvd å lage maskiner for å løse sine problemer. Dagens tema Datamaskinenes historie Når, hvor og hvorfor ble de første datamaskiner laget? Charles Babbage Midt på 1800-tallet var problemet tabeller med feil. Charles Babbage konstruerte sin Difference Engine som kunne lage tabeller automatisk ved å regne ut polynomer: Hvordan har utviklingen gått? Hva inneholder en datamaskin? Intel-prosessoren Enkel assemblerprogrammering Dag Langmyhr,Ifi,UiO: Forelesning 7. februar 2005 Ark 1 av 24 Dag Langmyhr,Ifi,UiO: Forelesning 7. februar 2005 Ark 2 av 24 Maskinen ble først ferdig i 1991 og finnes hos Science Museum i London. De første moderne datamaskiner Problemet rundt 1930 40 var kanoner. Dette var ingen ekte datamaskin: Binær Elektronisk Generell Komplett Program i minnet Han arbeidet også med en Analytical Engine som skulle bli en generell beregningsmaskin. Det er mulig å beregne en prosjektilbane, men det er mye arbeid for en matematiker. U.S. Army Ordnance Department Ballistic Research Laboratory trengte data for dusinvis av nye kanoner i 1930-årene. Løsning Lag en arbeidsbeskrivelse, og la egne «beregnere» gjøre jobben (etter en kort opplæring). Fra en eldre utgave av Webster s Dictionary: computer n, one that computes; specif : an automatic electronic machine for performing calculations Dag Langmyhr,Ifi,UiO: Forelesning 7. februar 2005 Ark 3 av 24 Dag Langmyhr,Ifi,UiO: Forelesning 7. februar 2005 Ark 4 av 24

.. Dag Langmyhr,Ifi,UiO: Forelesning 7. februar 2005 Ark 5 av 24. ➇ Gå til punkt 4. 34 ➆ Legg til 1. 33 ➅ Tast tallet i rubrikk 29 inn i regnemaskinen. 32 1,25 ➄ Hvis tallet i rubrikk 71 er < 0, gå til punkt 88. 31 ➃ Multiplisér tallet med 3,1415926535. Skriv svaret i rubrikk 28. 30 11 29 3 ➂ Tast 2,78 inn i regnemaskinen. 28 8.7336276. En typisk arbeidsbeskrivelse Problem Hver bane tok opptil 20 timer å beregne (selv med elektrisk bordregnemaskin), og man trengte 2 4000 ulike baner for hver kanon. Løsning Lag en maskin som gjør dette automatisk. Moore School of Electrical Engineering ved universitetet i Pennsylvania gjorde det med penger fra Ballistic Research Laboratory. Resultatet ble Eniac som ble ferdig i 1945. Den målte 2½ 1 30 m, veide 30 tonn og inneholdt 18 000 radiorør. Den kunne beregne en kulebane på drøyt 10 s. Dag Langmyhr,Ifi,UiO: Forelesning 7. februar 2005 Ark 6 av 24 Oppbyggingen av Eniac Tanken bak Eniac var å kopiere en menneskelig beregner. Derfor fikk man Aritmetisk enhet («ALU») tilsvarte regnemaskinen. Den kunne de fire regneartene: + Regnemaskinen har et tall for videre beregning; datamaskinen har et register for dette. Minnet tilsvarte arket med mellomresultater. Datamaskinen kunne skrive innholdet av registeret til en celle i minnet, og hente innholdet av en celle tilbake til registeret. Programmet tilsvarte beregnerens arbeidsbeskrivelse. Det skulle følges helt slavisk. Programmet Et program for datamaskinen inneholdt de samme elementene som beregnerens arbeidsbeskrivelse: Aritmetiske operasjoner var mulig i de fire regneartene; svaret kom i registeret. Mellomlagring av data skjedde ved at registeret ble kopiert til en angitt celle i minnet. Derfra kunne det hentes tilbake ved behov. Hopp til en angitt instruksjon var nødvendig for å kunne gå i løkker. Tester i forbindelse med hopp var typisk på om registeret var < 0, = 0 eller > 0. Programmene ble etter hvert kodet som tall (men Eniac ble kodet med kabler). Dag Langmyhr,Ifi,UiO: Forelesning 7. februar 2005 Ark 7 av 24 Dag Langmyhr,Ifi,UiO: Forelesning 7. februar 2005 Ark 8 av 24

Hva er beholdt i dag? Alle disse instruksjonene finnes i dagens datamaskiner. I tillegg har vi fått flere registre (ofte 8 32), binær representasjon av tallene (i stedet for desimal), Den aller første «bug» Også de første datamaskinene hadde feil. Den 9. september 1945 kl 15.45 fant man feilen i relé nr 70 i panel F i en Mark II Aiken elektromekanisk datamaskin og foretok den første «debugging»: operasjoner på bit (skifting, masking) og flyt-tall som kan lagre svært store og svært små tall (som 6,02 10 23 ). Programmerer noen i maskinkode i dag? Maskinkode brukes når man har behov for ekstremt raske beregninger, for eksempel grafiske applikasjoner. (Og når man lager virus!) Kjennskap til det som skjer i maskinen vil imidlertid gjøre oss til mye bedre programmere og brukere! Dag Langmyhr,Ifi,UiO: Forelesning 7. februar 2005 Ark 9 av 24 Dag Langmyhr,Ifi,UiO: Forelesning 7. februar 2005 Ark 10 av 24 Dag Langmyhr,Ifi,UiO: Forelesning 7. februar 2005 Ark 11 av 24 4 1978?? Lsi og vlsi 0,1 20dm³ 10 9 10 000 3 1968 78 Integrerte kretser 80dm³ 300 000 150 000 2 1960 68 Transistorer 650dm³ 500 000 40 mill 1 1945 60 Radiorør 10m³ 2000 50 mill Gen År Teknologi Størrelse Instr/sek Pris (2005-kr) Generasjoner Det er vanlig å dele datamaskinene inn i generasjoner: Moores lov Tegner vi et diagram over utviklingen av ytelsen i forhold til prisen, ser vi at grovt sett blir ytelsen fordoblet hvert 1½ år. 1000 instruksjoner/$ 2.5 10 6 2 10 6 1.5 10 6 10 6 5 10 5 0 1950 1960 1970 1980 1990 2000 Ingen vet hvorfor det er slik, men dette kalles Moores lov etter mannen som formulerte den. Dag Langmyhr,Ifi,UiO: Forelesning 7. februar 2005 Ark 12 av 24

Oppbygningen av en datamaskin (Irvine-boken 2.4) Det viktigste i en moderne datamaskin er hovedkortet («motherboard»): Prosessoren Prosessoren er «selve datamaskinen». Grovt sett inneholder det Det finnes mange ulike prosessorer fra ulike produsenter. I dette kurset skal vi se på IA-32 fra Intel. En prosessor Minne (for både program og data) Klokke Kontrollere for periferutstyr. Det finnes en hel familie med IA-32-prosessorer fra Intel, fra 8086 (introdusert i 1987) til dagens Pentium 4. Vi kommer til å bruke oppsettet for Pentium-ene. Dette er den såkalte Von Neuman-arkitekturen som omtrent alle datamaskiner siden Eniac har fulgt. Dag Langmyhr,Ifi,UiO: Forelesning 7. februar 2005 Ark 13 av 24 Dag Langmyhr,Ifi,UiO: Forelesning 7. februar 2005 Ark 14 av 24 Registre En Intel-prosessor har følgende registre: Mer eller mindre generelle 32-bits %AX %EAX %AH %AL Prosessoren En prosessor inneholder: En ALU («Arithmetic and Logic Unit») eller flere Registre Kontrollogikk (I dag ligger det også cache og mye annet på prosessorbrikken, men dette er logisk sett ikke del av prosessoren.) %EBX %BH %BL %ECX %CH %CL %EDX %DH %DL Spesielle 16-bits %CS %SS %DS Spesielle 32-bits %EBP %ESP %ESI %EDI %EFLAGS %EIP %ES %FS %GS Dag Langmyhr,Ifi,UiO: Forelesning 7. februar 2005 Ark 15 av 24 Dag Langmyhr,Ifi,UiO: Forelesning 7. februar 2005 Ark 16 av 24

Assembler-programmering Et meget enkelt eksempel (Irvine-boken 4.1.4) Denne lille C-funksjonen returnerer verdien 19: int nineteen (void) return 19; Test-program Dette programmet kan teste funksjonen: #include <stdio.h> extern int nineteen (void); int main (void) printf("nineteen() = %d\n", nineteen()); return 0; Denne assembler-funksjonen gjør det samme:.globl nineteen nineteen: movl ret $19, %eax Kompilering, assemblering og kjøring Programmet gcc kan håndtere både C-kompilering og assemblering: gcc test-nineteen.c nineteen.s -o test-nineteen Den legger verdien 19 i register %EAX der alle funksjoner legger resultatverdien, og returnerer. Det ferdige programmet kan kjøres: >./test-nineteen nineteen() = 19 Dag Langmyhr,Ifi,UiO: Forelesning 7. februar 2005 Ark 17 av 24 Dag Langmyhr,Ifi,UiO: Forelesning 7. februar 2005 Ark 18 av 24 Dag Langmyhr,Ifi,UiO: Forelesning 7. februar 2005 Ark 19 av 24 Siden slike numeriske koder er vanskelige huske, brukes i stedet assmblerkode som bare er huskekoder for maskininstruksjonene. 1.globl nineteen 2 nineteen: 3 0000 B8130000 movl $19, %eax 3 00 4 0005 C3 ret GAS LISTING nineteen.s page 1 Funksjonen nineteen ligger egentlig lagret som Maskinkode kontra assemblerkode (Irvine-boken 1.1.1) Programmet ligger lagret som maskinkode, dvs bit-mønstre i minnet. Assemblerkode kontra høynivåprogrammering (Irvine-boken 1.1.2) Det er stor forskjell på kompilering og programmering i et høynivåspråk: Kompilering Vi vet ikke hvilke maskininstruksjoner som genereres (men er ikke interessert). Programmet kan (stort sett) flyttes uendret til en annen datamaskin uansett fabrikat eller operativsystem. Assemblering Vi vet nøyaktig hvilke maskininstruksjoner som genereres. Programkoden kan ikke flyttes til datamaskiner med annet instruksjonssett eller operativsystem. Med andre ord: vi har full kontroll over den genererte koden. Dag Langmyhr,Ifi,UiO: Forelesning 7. februar 2005 Ark 20 av 24

Dag Langmyhr,Ifi,UiO: Forelesning 7. februar 2005 Ark 21 av 24 Indeksering [eax+1] 1(%eax) mov ax, WORD PTR v Størrelse mov movl Rekkefølge res,op,op,... op,op,...,res Registre eax %eax Konstanter (hex) 123h $0x123 Konstanter (desimale) 4 $4 MASM GAS GAS (GNU assembler) brukes i Linux-miljøet og i dette kurset. MASM (Microsoft assembler) brukes i læreboken. Ulike notasjoner Dessverre benytter ulike assemblere forskjellig notasjon. Et eksempel med en paramter (Irvine-boken 4.2) Parametre ligger på den stakken så man får takidemmed«4(%esp)», «8(%esp)»,....globl incr incr: movl incl ret Et testprogram: #include <stdio.h> extern int incr (int n); int main (void) int i; 4(%esp),%eax %eax for (i = 10; i <= 14; ++i) printf("incr(%d) = %d\n", i, incr(i)); return 0; Resultatet av kjøringen: incr(10) = 11 incr(11) = 12 incr(12) = 13 incr(13) = 14 incr(14) = 15 Dag Langmyhr,Ifi,UiO: Forelesning 7. februar 2005 Ark 22 av 24 Et eksempel til Denne funksjonen har to parametre:.globl add add: movl addl ret #include <stdio.h> extern int add (int a, int b); int tab[] = 1, 17, -3; 4(%esp),%eax 8(%esp),%eax int main (void) int tab_length = sizeof(tab)/sizeof(int); int i1, i2; for (i1 = 0; i1 < tab_length; ++i1) for (i2 = 0; i2 < tab_length; ++i2) int a1 = tab[i1], a2 = tab[i2]; printf("add(%d,%d) = %d\n", a1, a2, add(a1,a2)); return 0; add(1,1) = 2 add(1,17) = 18 add(1,-3) = -2 add(17,1) = 18 add(17,17) = 34 add(17,-3) = 14 add(-3,1) = -2 add(-3,17) = 14 add(-3,-3) = -6 Oppsummering (Irvine-boken Appendix B) Vi kjenner nå til følgende instruksjoner: movl Flytt en verdi addl Addér en verdi til en annen subl Subtraher en verdi fra en annen incl Øk en verdi med 1 decl Senk en verdi med 1 Operander kan være: $17 Konstanter %eax Registeret %EAX 4(%esp) Parametre (på stakken) Dag Langmyhr,Ifi,UiO: Forelesning 7. februar 2005 Ark 23 av 24 Dag Langmyhr,Ifi,UiO: Forelesning 7. februar 2005 Ark 24 av 24