ITPE/DATS 2400: Datamaskinarkitektur og Nettverk

Like dokumenter
ITPE/DATS 2400: Datamaskinarkitektur og Nettverk

ITPE/DATS 2400: Datamaskinarkitektur og Nettverk

Kapittel 6. Høynivå møter lavnivå Fra C til assembly Fra assembly til maskinkode Linking og lasting

ITPE2400/DATS2400: Datamaskinarkitektur

Forelesning 5. Diverse komponenter/større system

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

Datamaskinarkitektur våren 2009

INF2270. Datamaskin Arkitektur

INF1400 Kap4rest Kombinatorisk Logikk

TDT DESEMBER, 2008, 09:00 13:00

Introduksjon til DARK assembly

INF2270. Datamaskin Arkitektur

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

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

Forelesning Instruksjonstyper Kap 5.5

SIE 4005, 2/10 (2. Forelesn.)

Del 1 En oversikt over C-programmering

OPPGAVE 1 OBLIGATORISKE OPPGAVER (OBLIG 1) (1) Uten å selv implementere og kjøre koden under, hva skriver koden ut til konsollen?

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

Dagens temaer. Dagens temaer hentes fra kapittel 3 i læreboken. Oppbygging av flip-flop er og latcher. Kort om 2-komplements form

Løsningsforslag til eksamen i INF2270

IN1020. Logiske porter om forenkling til ALU

Hvordan en prosessor arbeider, del 1

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

Maskinvaredelen av INF 103: oversikt og innhold (1)

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

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

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.

4/5 store parallelle maskiner /4 felles hukommelse in 147, våren 1999 parallelle datamaskiner 1. når tema pensum.

Kapittel 1 En oversikt over C-språket

Kap. 8 del 1 kodegenerering INF5110 Vår2007

befinner seg. Deretter leses instruksjonen fra i registerfilen ved ny stigende klokkepuls.

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

Dagens temaer. tema er hentet fra kapittel 4.3 og 4.4 om pipelining. til neste ukes forelesning (hvis tid) INF ! Mikrokode. !

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

IN1020. Datamaskinarkitektur

TDT4160 AUGUST, 2008, 09:00 13:00

Løsningsforslag eksamen TDT4160 høsten 2005

Plan: Parameter-overføring Alias Typer (Ghezzi&Jazayeri kap.3 frem til 3.3.1) IN 211 Programmeringsspråk

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

TDT4160 Datamaskiner Grunnkurs Gunnar Tufte

Dark Stakkmaskin. Aritmetiske instruksjoner

EKSAMEN I TDT4160 DATAMASKINER GRUNNKURS

Kjøresystemer. Hva er et kjøresystem? Den abstrakte maskinen SIMPLESEM (2.6) Klassifisering av språk: Parametre (2.7.7) Statiske språk (

TDT DESEMBER, 2009, 09:00 13:00

Intel Core i7. Omid Mirmotahari 4

NOTAT (pensum!) Javas klasse-filer, byte-kode og utførelse

INF3430/4430. Funksjoner og prosedyrer Standardbiblioteker Komplekse sekvensielle systemer

Tema for denne forelesningen: tilpassing til pipeline. forwarding. eliminere NOP. faktisk MIPS. in 147, våren 1999 pipelining 1 9

public static <returtype> navn_til_prosedyre(<parameter liste>) { // implementasjon av prosedyren

Dark load-store-maskin

Debugging. Tore Berg Hansen, TISIP

Litt om Javas class-filer og byte-kode

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

Datamaskinens oppbygning

Kodegenerering, del 2: Resten av Kap. 8 pluss tilleggsnotat (fra kap. 9 i ASU ) INF5110 V2007

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

INF3430. Funksjoner og prosedyrer Standardbiblioteker Komplekse sekvensielle systemer

Seksjon 1. INF2270-V16 Forside. Eksamen INF2270. Dato 1. juni 2016 Tid Alle trykte og skrevne hjelpemidler, og en kalkulator, er tillatt.

IN 147 Program og maskinvare

Intel Core i7. Omid Mirmotahari 4

Oppsummering Assemblerkode Hopp Multiplikasjon Kode og data Array Oppsummering

TDT4160 Datamaskiner Grunnkurs Gunnar Tufte

Pensum Hovedtanker Selvmodifiserende Overflyt Veien videre Eksamen. Oppsummering

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

Del 4 Noen spesielle C-elementer

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

156C. Algoritmer og maskinspråk. IT1101 Informatikk basisfag. Maskinspråk: det maskinen forstår. Assembler / assemblerspråk

INF3430/4430. Funksjoner og prosedyrer Standardbiblioteker Komplekse sekvensielle systemer

public static <returtype> navn_til_prosedyre(<parameter liste>) { // implementasjon av prosedyren

TDT AUGUST, 2011, 09:00 13:00

Javas klasse-filer, byte-kode og utførelse (og litt om C# sin CIL-kode)

NOTAT (pensum!) Javas klasse-filer, byte-kode og utførelse. INF 5110, 10/5-2011, Stein Krogdahl

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

Dagens tema: INF2100. Utvidelser av Minila array-er. tegn og tekster. Flass- og Flokkode. prosedyrer. Prosjektet struktur. feilhåndtering.

Dagens tema. Dagens tema er hentet fra kapittel 4.3 og 4.4. Mer om pipelining Ytelse Hasarder. Pipelining i Pentium-arkitekturen

Hovedansvarlig. Symbolgenerator. Tregenerator. Litt mer kompliserte setninger med betingelser

TDT4160 OG IT2201 DATAMASKINER GRUNNKURS EKSAMEN

Eksamensoppgaver 2014

Oversikt. Introduksjon Kildekode Kompilering Hello world Hello world med argumenter. 1 C programmering. 2 Funksjoner. 3 Datatyper. 4 Pekere og arrays

En oppsummering (og litt som står igjen)

Fig1. Den konvekse innhyllinga av 100 tilfeldige punkter i planet (de samme som nyttes i oppgaven.)

MAT1030 Plenumsregning 1

TDT4110 IT Grunnkurs Høst 2015

Forelesning Datatyper Kap 5.2 Instruksjonsformat Kap 5.3 Flyttall App B

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

INF-5110 Oppgaver kodegenerering etc. INF-5110, vår 2011

Dagens tema. C-programmering. Nøkkelen til å forstå C-programmering ligger i å forstå hvordan minnet brukes.

Oppgaver til kodegenerering etc. INF-5110, 16. mai, 2014

TDT4110 IT Grunnkurs Høst 2016

TDT4160 Datamaskiner Grunnkurs Gunnar Tufte

TDT4160 DATAMASKINER GRUNNKURS EKSAMEN

Dagens tema. Mer om C Enkle datatyper Sammensatte datatyper: Vektorer og matriser Tekster Mengder Strukturer Unioner Ringbuffere

TDT4110 Informasjonsteknologi, grunnkurs Uke 35 Introduksjon til programmering i Python

Programmeringsspråket C

TDT4258 Eksamen vår 2013

TDT4110 Informasjonsteknologi grunnkurs: Tema: Betingelser og logiske uttrykk Utgave 3: Kap. 3

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

TDT4110 IT Grunnkurs Høst 2016

Transkript:

ITPE/DATS 2400: Datamaskinarkitektur og Nettverk Forelesning 9: Instruksjonsettarkitektur 3 Knut H. Nygaard / T. M. Jonassen Institute of Computer Science Faculty of Technology, Art and Design Oslo and Akershus University College of Applied Sciences 02. Februar 2015

Oversikt 1 ARC 1 2 Flagg 3 Litt om flytkontroll 4 Funksjoner (subrutiner) 5 Formater - koder 6 Om adresser 7 Speedup - Ytelsesanalyse 8 Datapath/kontroll - intro 9 Datapath - to varianter 10 Kontrollenhet

Instruksjonstyper I Fire typer instruksjoner: Minne (load/store) Logiske operasjoner (AND, OR etc) Aritmetiske (ADD etc) Kontroll (CALL, JUMP etc) Hver instruksjon har sin egen forkortelse.

Instruksjonstyper II

Instruksjonstyper II Alle instruksjoner er på 32 bits. Registere er på 32 bits. Hvordan laste en konstant i et register/minne? Må gjøres i to operasjoner. sethi 22 bits først (mest signifikante). Deretter OR på minst signifikante bits.

Eksempel sethi 0x2AAEF3, %r2 or %r2, 0xDD, %r2 Merk: sethi simm22, rdst 22 bits for konstant, 10 bits for å spesifisere operasjon, og destinasjonsregister.

Et ARC eksempel! Legg sammen to tall! File: addnum.asm.begin.org 2048 andcc %r4, %r0, %r4 sethi 0x8, %r4 or %r4, 0x00, %r4 prog1: ld [%r4+0], %r1! Legg x i r1 ld [%r4+4], %r2! Legg y i r2 addcc %r1, %r2, %r3! r3 = r1 + r2 st %r3, [%r4+8]! Lagre r3 i z jmpl %r15 + 4, %r0! Avslutt! Data.org 0x2000! Dette er 8192 x: 15 y: 12 z: 0.end

sethi addnum.asm Hvordan finne argumentet til sethi, vi har: 2 13 = 8192 Binært: 0000000000000000001000 0000000000 22 mest signifikante bits: 0000000000000000001000 Heksadesimalt: {}}{ 000000000000000000 1000 Altså, argumentet til sethi i addnum.asm blir: 0x8 8

Flagg 1 Et flagg er ett bit (0 eller 1), kalles også betingelseskoder. Aritmetiske eller logiske instruksjoner kan sette disse. Vi legger da til cc til slutt i instruksjonen. Eksempler: add -> addcc sub -> subcc and -> andcc

Flagg 2 Fire flagg: Z : Null-flagg, settes hvis resultatet av en logisk eller aritmetisk instuksjon er null. N : Negativt-flagg, settes hvis mest signifikante bit (MSB) er 1. C : Mente-flagg, settes hvis det er mente ut på MSB, eller må lånes inn på MSB. V : Overflow-flagg, settes hvis resultatet ikke kan representeres som et 32-bits tall.

Flagg 3 Vi bruker flagg til å kontrollere program-flyt. Eksempler: ba : Alltid hopp, 1 bn : Aldri hopp, 0 bne : Hopp på ulik, NOT Z be : Hopp på lik, Z Se tabell 4.10, side 121.

Eksempel goto goto (Mye brukt i Fortran, kalles også spagetti-programmering, hvis mange goto). ARC kode: ba Merke Hopp alltid til Merke.

Eksempel if-else Konstruksjonen kan skrives som if (expr) kode1 else kode2; Vi antar expr : x==y, x i r1, y i r2. subcc %r1, %r2, %r0 bne Merke1! kode1 ba Slutt Merke1:!kode2 Slutt:!programmet fortsetter her

Eksempel while Konstruksjonen kan skrives som while (expr) kode; Eksempel: while (r1 == r2) r3++; ba Merke Sann: add %r3, 1, %r3 Merke: subcc %r1, %r2, %r0 be Sann

Eksempel for Konstruksjonen har form: for (kode1; kode2; kode3) kode4; Kan skrives som en while: kode1; while (kode2) { kode4; kode3; }

Call Instruksjoner: call - jmpl Ting å tenke på: Hvordan overføre parametere til funksjonen? Stack eller registere? Hva er mest effektivt? Hvordan returnere data fra funksjonen?

Eksempel Høynivå språk: int foo(int a, int b); Tar to heltalls arumenter, returnerer et heltall. int foo(int a, int b) { int c; } c = a + 2*b + a*b; return(c);

Format

Mer om koder To (tre) mest signifikante bit angir type. 00 sethi 00(0) forgrening 10 aritmetisk 11 minne (laod / store)

Adresserommet bruker 32 bits. Vi trenger 2 5 = 32, altså 5 bit per adresse. Derfor 3 registere bruker 15 bits. I tillegg trenger vi bits for å angi hva maskinen skal gjøre. (3-5 bits)

Ytelsesanalyse Kalles ofte benchmarking. En rekke faktorer spiller inn: Hardware. Problem type. Hva vi ønsker å sammenlikne. Skal se på en metrikk her.

Speedup 1 Eksempel på en metrikk for ytelse. Brukes til for eksempel å sammenlikne to maskiner. Kan brukes til å sammenlikne implementeringer av programmer. Metrikk hvor kjøretid er mål. Speedup sammenlikner to kjøretider, en med, og en uten forbedringer. Forbedring kan være i hardware, eller software.

Speedup 2 T wo kjøretid uten forbedring. T w kjøretid med forbedring. S speedup. Da er S definert som S = T wo T w Merk: Hvis T w < T wo så er S > 1. I prosent blir formelen for S S p = T wo T w T w 100%

Speedup 3 Eksempel 1: Hvis S = 2 blir S p = 100%. Eksempel 2: Anta vi bytter noe hardware på en maskin, og T wo = 21s mens T w = 14s, så er S = T wo T w = 21s 14s = 3 2 = 1.5 eller S p = 21s 14s 14s 100% = 7 100% = 50% 14

Speedup 4 Vi definerer følgende symboler: τ klokkeperode på maskin. CPI (gjennomsnittlig) antall klokkesykler per instruksjon. IC antall instruksjoner utført av programmet vi måler. Total kjøretid for programmet er da gitt ved T = IC CPI τ

Speedup 5 Dette gir oss følgende to formler, tilsvarende de vi hadde tidligere: og S = IC wo CPI wo τ wo IC w CPI w τ w S p = IC wo CPI wo τ wo IC w CPI w τ w IC w CPI w τ w 100%

Speedup 6 Eksempel: Vi bytter en CPU med CPI på 5, til en CPU med CPI på 3.5, men klokkeperioden øker fra 100ns til 120ns. (Ny CPU har mindre klokkefrekvens, nano=10 9 ). IC er lik i begge tilfeller. Da er S p = CPI wo τ wo CPI w τ w 100% CPI w τ w 5 100 3.5 120 = 100% 3.5 120 = 80 19.048% 19% 420

Introduksjon Vi skal se på datapath for ARC modellen To måter å lage kontrollenhet. En enklere modell for en datapath Senere microprogrammer for den siste modellen I dag bare en rask introduksjon

ARC-modellen

Enklere modell RW (1) D DA (3) 8 x 32 register fil AA (3) Konstant inn A B BA (3) 1 0 MUX B MB (1) 01 01 01 01 A B Data inn Adresse MW (1) Cnt (4) ALU Data minne FS (4) F Data ut MD (1) 0 1 MUX D

To måter Microprogrammert (seksjon 5.3 i boka). Hardwired - altså i hardware (seksjon 5.4 i boka).

Microprogrammert

Hardwired

The End Spørsmål? Ingen forelesning fredag 6. februar grunnet næringslivsdag Neste forelesning mandag 9. februar kl 10.30 PS35-PI254