Digitale Methoden Onderdeel van vak Computer Systemen

Slides:



Advertisements
Verwante presentaties
Hoe werkt een rekenmachine?
Advertisements

Welkom iPad of Laptop uit. Tassen tegen de achterwand s.v.p. Ga rustig zitten en wacht tot de les begint. Tafels staan opgestapeld, blaadje met pen ligt.
1/1/ / faculty of Electrical Engineering eindhoven university of technology 5JJ20:Computerarchitectuur 2M200:Inleiding Computersystemen Sessie 3(2): Instructietypen.
Hardware (1) SGDB Informatica.
Par. 3.1 Computers zijn overal
Hardware (1) NSG Informatica.
Week 1: overzicht computersysteem-organisatie
1/1/ /e/e eindhoven university of technology 5JJ20:Computerarchitectuur 2M200:Inleiding Computersystemen Sessie 2(1): Inleiding InstructieSetArchitectuur.
Arduino project.
bewerkingen in programmeeromgevingen
Auteursomgeving voor Digitale Componenten
1 Hoe werkt een computer nu precies? Ben Bruidegom & Wouter Koolen-Wijkstra AMSTEL Instituut Universiteit van Amsterdam Met steun van stichting Edict.
Week 2: Microarchitectuur niveau ALU en datapad
Computerarchitectuur
VBA en VBS Een introductie.
C programma int main(){ } Compilatie met devc++ in file main.c Gecompileerd programma in file FirstProgram.exe Mov R1, 120 Mov R2, 160 ADD R1, R2.
1 Datastructuren Sorteren: alleen of niet alleen vergelijkingen College 5.
De processor.
5JJ20: Computerarchitectuur 2M200: Inleiding Computersystemen
1/1/ /e/e eindhoven university of technology 5JJ20:Computerarchitectuur 2M200:Inleiding Computersystemen Sessie 3(1): Instructietypen (1)
1/1/ / faculty of Electrical Engineering eindhoven university of technology 5JJ20:Computerarchitectuur 2M200:Inleiding Computersystemen Sessie 1(2): overzicht.
1/1/ / faculty of Computer Science eindhoven university of technology 5B040:Computerarchitectuur 2M200:Inleiding Computersystemen Sessie 7(1): Flow of.
1Ben Bruidegom Hoe werkt een rekenmachine? Ben Bruidegom AMSTEL Instituut Universiteit van Amsterdam.
1Ben Bruidegom 1 Hoe werkt een “loopje” nu precies? Recapitulatie rekenmachines week 1 Van rekenmachine naar rekenmachine met “loopjes”
1Ben Bruidegom A Harvard Machine Calculator Calculator  Computer.
Auteursomgeving voor Digitale Componenten
1Ben Bruidegom A Harvard Machine Recapitulatie Calculator Calculator  Calculator met “loopjes” Calculator met “loopjes”  Processor.
Inleidend probleem Data structuur (hiërarchie van classes)
GESPRG Les 7 Gestructureerd programmeren in C. 92 Verwisselen Schrijf een functie waarmee twee int variabelen verwisseld kunnen worden. void wissel(int.
Een echte re stack-machine nMemory nRegisters R0 R1 R2 R3 R4 PC SP MP nMemory uProgram uStack uMemory nRegisters uProgr.counter uStack pointer uMark pointer.
Hoe werkt een rekenmachine?
1Ben Bruidegom 1 De Harvard Machine Van rekenmachine met “loopjes” naar processor.
1 Van Harvard naar MIPS. 2 3 Van Harvard naar MIPS Microprocessor without Interlocked Pipeline Stages Verschillen met de Harvard machine: - 32 Registers.
1 ICT Infrastructuren 19 november 2007 David N. Jansen.
Operating Systems Informatica.
Presentatie door: Martijn Schmid, Kathinka Veldkamp en Nynke Zwart
Chris Pollentier 18 / 12 / 2002 De LOGO taalwereld.
, 17h30Recursie 1 Inleiding tot recursie Karel Popelier.
1/1/ eindhoven university of technology / faculty of Computer Science 2IC20:Computersystemen Week 3: Instructietypen (1)
1/1/ eindhoven university of technology / faculty of Computer Science 2IC20:Computersystemen Week 4: Inleiding InstructieSetArchitectuur (ISA) datatypen.
1/1/ eindhoven university of technology / faculty of Computer Science 2IC20:Computersystemen Week 3: Instructietypen (2)
1/1/ eindhoven university of technology / faculty of Computer Science 2IC20:Computersystemen Week 2: IDaSS.
Processor Hart van de computer.
Samenwerking tussen processor, registers en RAMgeheugen
PHP & MYSQL LES 02 PHP & FORMULIEREN. PHP & MYSQL 01 PHP BASICS 02 PHP & FORMULIEREN 03 PHP & DATABASES 04 CMS: BEST PRACTICE.
HOGESCHOOL ROTTERDAM / CMI Computersystemen 2 (TIRCCMS02 - Operating systems)
De Transmeta Crusoe processor Een VLIW CPU met x86 compatibiliteit.
Instructie Programmeren Task 7
Code compressie in Embedded Systems Onno Kievit ET4074 Kwantitatieve aspecten van computer architectuur.
2PROJ5 – PIC assembler Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 1 Les 3 - onderwerpen Instruction timing Shadow.
Programmeren.
Hoorcollege 4 Bespreking casus 2 (supermarkt).
Hoorcollege 1: efficiëntie en complexiteitsontwikkeling.
Hoorcollege 1: efficiëntie en complexiteitsontwikkeling.
De definitie van een object. Een object is een verzameling van eigenschappen en bewerkingen. Veel voorkomende objecten zijn: D (display) Gui (user interface)
Programmeren. Wat is programmeren? Het schrijven van opdrachten voor de processor De processor “spreekt” machinetaal:
Programmeren.
Programmeren met Reeksen
Gevorderde EV3 PROGRAMMEER LES
Wij zijn FLEX Finn Megan Anouk Nina
3 Hardware 3.1 De processor en intern geheugen
Wat gaan we doen? Herhaling ARM assembler instructies
Small Basic Console deel 2
SQL Les February 2019.
Quantumcomputers en quantumcommunicatie
Tellen met kaarten.
Tellen met kaarten.
Software Development fundamentals
Python – For loop + strings
Transcript van de presentatie:

Digitale Methoden Onderdeel van vak Computer Systemen Micha de Groot (A,D) Tessa Wagenaar (B) Hendrik Huang (C) Martijn Brehm (E) Kyrian Maat (F) https://staff.fnwi.uva.nl/b.terwijn/computer-systems-2/

Digitale Methoden Syllabus “Van 0 en 1 tot pipelined processor”, Ben Bruidegom week 1: hfdstk 1,2,3 week 2: hfdstk 7,8 week 3: hfdstk 9 week 4: tentamen week 5: hfdstk 10 week 6: hfdstk 11 week 7: nog te bepalen week 8: tentamen

Digitale Methoden Wekelijkse opgaven tellen ieder voor 3% van het totale cijfer. Opgaven maken in Sakai in paren van 2: http://sbt.science.uva.nl:8080/portal De opgaven zijn een goede voorbereiding voor Digitale Methoden tentamen vragen.

Hfdstk 1,2,3: Rekenmachine

Hfdstk 1,2,3: Rekenmachine Een computer is logisch gezien opgebouwd als een zeer grote combinatie van een klein aantal logische poorten: AND, OR, NOT, XOR Poorten worden gebruikt voor representatie van en operaties op data zoals optellen/aftrekken van getallen door een Adder. 7 – 6 = 0111 - 0110 = 0111 + 1010 (inverteer en plus 1) = 0001

Hfdstk 1,2,3: Rekenmachine Een processor kan een reeks van instructies (een programma) uitvoeren en bestaat in de basis uit: Program Counter Instruction Memory Registers ALU

Hfdstk 1,2,3: Rekenmachine

Hfdstk 1,2,3: Rekenmachine Paragraaf 3.7 Opdracht 4, een voorbeeld programma wat de waarde van register 1 en register 2 wisselt zonder gebruik van een derde register. @include "Rekenmachine_II.wasm" .code MyCode : REKENMACHINE_II LOADI $1, 0x00FF # Laad test data in register 1 LOADI $2, 0xFF00 # Laad test data in register 2 XOR $1, $1, $2 # 0xFFFF XOR $2, $1, $2 # 0x00FF XOR $1, $1, $2 # 0xFF00 Wat is een andere manier om te wisselen en waarom is deze manier nuttig?

Hfdstk 7,8: Harvard Processor

Hfdstk 7: Calulator with loops Branch instructies zijn toegevoegd aan de processor om "loops" te kunnen uitvoeren. BZ, branch if rt is zero BNZ, branch if rt is not zero BEQ, branch when rs equals rt BNE, branch when rs not equal rt BRA, branch always

Hfdstk 7: Calulator with loops Hiervoor is de processor uitgebreid met extra elementen. Branch, maakt branch mogelijk Zero, test of uitgang ALU 0 is Invert, inverteerd de zero bit waarde RegWrite, beslist of naar rd geschreven wordt SecReg, beslist of ALU rt of Constant Number binnen krijg

Hfdstk 7: Calulator with loops

Hfdstk 8: Harvard Processor Data Memory is toegevoegd om in meer dan alleen registers data op te kunnen slaan. Nieuwe instructies: SW, schrijf waarde van rt naar adres wat de ALU bepaalt LW, laad rd met de waarde op adres wat de ALU bepaalt

Hfdstk 8: Harvard Processor Hiervoor is de processor uitgebreid met extra elementen. MemWrite, beslist of data naar Data Memory geschreven wordt Mem2Reg, beslist dat of Data Memory of de ALU data aan biedt aan rd

Hfdstk 8: Harvard Processor

Hfdstk 7,8: Harvard Processor Paragraaf 7.5 Opdracht 7, sorteer 2 registers van klein naar groot @include "CalculatorWithLoops.wasm" .code MyRegisters : REGISTERS 0x1: WORD a 15 0x2: WORD b 13 0x3: WORD a_min_b 0x4: WORD temp .code MyCode : LOOPS_MACHINE, MyRegisters SUB a_min_b, a, b # subtract to compare ANDI temp, a_min_b, 0x8000 # bit mask of last bit BNZ temp, end # if last bit is 1 (negative) go to end COPY temp, a # else switch: remember value of a COPY a, b # a gets value of b COPY b, temp # b gets old value of a end: HALT Waarvoor dient de bit mask "0x8000"?

Hfdstk 9: Pipelined Processor

Hfdstk 9: Pipelined Processor Bij een Pipelined Processor wordt er per cycle maar een deel van een instructie uitgevoerd, maar de processor werkt wel aan meerdere instructies tegelijkertijd. Dit levert (vaak) snelheidswinst op, maar kan ook voor problemen zorgen: Data Hazard Branch Hazard

Hfdstk 9: Pipelined Processor Data Hazard, een instructie heeft data nodig, maar de instructie die deze data produceert is nog niet klaar. Mogelijke oplossingen: bubbles (NOP) toevoegen, wachten op de data (snelheidsverlies) forwarding, processor aanpassen zodat data (in sommige gevallen) sneller beschikbaar is scheduling, volgorde van instructies aanpassen zonder gevolgen voor de uitkomst van programma

Hfdstk 9: Pipelined Processor Branch Hazard, de instructie die bepaalt of een branch plaats vindt is nog niet klaar waardoor niet duidelijk is welke volgende instructies in de processor moeten worden geladen. Mogelijke oplossingen: flushing, verkeerd geladen instructies worden automatisch verwijderd, het werk hieraan is voor niks geweest scheduling, volgorde van instructies aanpassen zonder gevolgen voor de uitkomst van programma branch prediction, proberen te raden of de branch plaats vindt op basis van vorige keren

Hfdstk 9: Pipelined Processor Paragraaf 9.6 Opdracht 5, kopieer data van 'start' naar 'dest' zonder forwarding en met branch prediction @include "PipelinedHarvard.wasm" .data MyData : DATAMEM 0x10: WORD start 0x01 WORD 0x02 WORD 0x03 WORD 0x04 WORD 0x05 WORD 0x00 0x20: WORD dest .data MyRegisters: REGISTERS 0x00: WORD index 0 0x01: WORD temp .code MyCode : HARVARD, MyData, MyRegisters loop: LW temp, start, index NOPasasNOP NOP SW temp, dest, index ADDI index, index, 1 BNZ temp, loop HALT Waarvoor zijn de NOPs nodig, en hoe zou scheduling of forwarding dit programma kunnen versnellen?

Hfdstk 10: Procedures

Hfdstk 10: Procedures Een procedure aanroep is een branch instructie waarbij we het adres bewaren waarnaar we willen terugkeren aan het einde van de procedure. Ook willen we dat het uitvoeren van de procedure de waarden van registers die in gebruik zijn niet verandert. Daarom bewaren we deze waarden tijdelijk op de stack.

Hfdstk 10: Procedures Hiervoor is de processor uitgebreid met extra elementen. First Reg, kan PC nu ook de waarde van rs geven Result Origin, kan rd nu ook de waarde van PC+1 geven

Hfdstk 10: Procedures

Hfdstk 10: Procedures @include "16bitJumper.wasm" Paragraaf 10.6 Opdracht 6, functie max3 bepaalt het maximum van 3 waarden @include "16bitJumper.wasm" .code MyCode : REGSTACK, MyData LOADI $arg1, 1 LOADI $arg2, 2 LOADI $arg3, 3 JSR max3 HALT # endless loop max: #--------------- max procedure --------------- SUB $tmp1, $arg1, $arg2 ANDI $tmp1, $tmp1, 0x8000 BZ $tmp1, arg1max COPY $val1, $arg2 RETURN $ra arg1max: COPY $val1, $arg1 RETURN $ra #------------ return max ------------- Max3: #--------------- max3 procedure -------------- SUBI $sp,$sp,2 # reserve memory on stack SW $ra, 0, $sp # write to stack SW $s1, 1, $sp COPY $s1, $arg3 JSR max COPY $arg1, $val1 COPY $arg2, $s1 LW $s1, 1, $sp # read back from stack LW $ra, 0, $sp ADDI $sp,$sp,2 # release memory on stack RETURN $ra # ------------ return max3 ------------ Waarom wordt bij "max" niet naar de stack geschreven maar bij "max3" wel?

Hfdstk 11: Caching

Hfdstk 11: Caching Cache geheugen is snel geheugen wat data van een groter langzamer geheugen sneller beschikbaar probeert te maken. Dit doet het door tijdelijk data van het langzame geheugen te bewaren waarvan de kans groot is dat dit gelezen of overschreven gaat worden.

Hfdstk 11: Caching Hiervoor is de processor uitgebreid met extra elementen. De Cache, het snelle geheugen Mem Read, vertelt de Cache wanneer uit Data Memory gelezen wordt Advance PC, houdt PC tegen bij cache miss

Hfdstk 11: Caching

Hfdstk 11: Caching @include "16bitDirectMappedCache.wasm" .data MyData : DATAMEM 0d0: WORD base .code MyCode : HARVARD, MyData LOADI $1, 10 # set loop counter loop: SUBI $1, $1, 1 # decrease loop counter LW $2, base, $1 # load next word BNZ $1, loop # loop when loop counter not zero HALT We gebruiken direct-mapped cache van 16 blocks van ieder 4 words. Hoeveel cache misses komen dan voor bij uitvoeren van dit programma?