EE1410: Digitale Systemen BSc. EE, 1e jaar, , 10e hoorcollege

Vergelijkbare documenten
Register Transfer Level systemen en de Delta I processor

EE1410: Digitale Systemen BSc. EE, 1e jaar, , vragencollege 2

Digitale technieken Deeltoets II

EE1410: Digitale Systemen BSc. EE, 1e jaar, , 2e werkcollege

EE1410: Digitale Systemen BSc. EE, 1e jaar, , vragencollege 1

EE1410: Digitale Systemen BSc. EE, 1e jaar, , 8e hoorcollege

Van Poort tot Pipeline. Ben Bruidegom & Wouter Koolen-Wijkstra AMSTEL Instituut Universiteit van Amsterdam

Hoe werkt een computer precies?

Hoofdstuk 7. Computerarchitectuur

Hoe werkt een rekenmachine?

Project Digitale Systemen

EE1410: Digitale Systemen BSc. EE, 1e jaar, , 4e college

Digitale Systemen (ET1 410)

Antwoorden zijn afgedrukt!!!!!!!

Vrije Universiteit Brussel Faculteit van de Wetenschappen Vakgroep Informatica. Deel 2a: Ontwerp van register machines

Inhoudsopgave. Optimalisatie van de mmips. Forwarding optie 1. Design flow. implementation

Digitale Systeem Engineering 1. Week 4 Toepassing: Pulse Width Modulation Jesse op den Brouw DIGSE1/

von-neumann-architectuur Opbouw van een CPU Processoren 1 december 2014

Beter, Sneller, Mooier. Processoren 12 januari 2015

Antwoorden vragen en opgaven Basismodule

Studentnummer:... Opleiding:...

Toets Digitale Systemen 01/06/2006, uur

Toets Digitale Systemen 31/05/2007, uur

Eindtentamen Digitale Systemen (ET1405) 18 juni 2008, uur

VHDL overzicht. Digitale Systemen (ET1 410) VHDL? VHDL? Sequentieel vs. Concurrent 2/15/2011

Tentamen Computersystemen

De CPU in detail Hoe worden instruc4es uitgevoerd? Processoren 28 februari 2012

scc = b) CD AB

computerarchitectuur antwoorden

De Arduino-microcontroller in de motorvoertuigentechniek (8)

Microcontrollers Week 1 Introductie microcontroller Jesse op den Brouw INLMIC/

Computerarchitectuur. Terugblik / discussie / oefenopgaven

Digitale en analoge technieken

Wouter Geraedts Processen & Processoren

Inleiding Digitale Techniek

Oefeningen Interpretatie I Reeks 6 : Registermachines

Java virtuele machine JVM

Computerarchitectuur en netwerken. Memory management Assembler programmering

EE1410: Digitale Systemen BSc. EE, 1e jaar, , 6e hoorcollege

Digitale Systeem Engineering 2

Tentamen Digitale Systemen (EE1410) 6 juli 2012, uur

ES1 Project 1: Microcontrollers

Microcontrollers Week 2 Opbouw ATmega32 controller, instructies Jesse op den Brouw INLMIC/

slides2.pdf April 12,

11011 Processor MMI Intro. Binaire representatie. Computer: Logische opbouw (Von Neumann) 3-input 1-hot detector.

Stapelgeheugen. Processoren 6 maart 2012

Deel 1: Arduino kennismaking. Wat is een microcontroller, structuur van een programma, syntax,

scc =!F3.!F2 b) CD AB

EE1410: Digitale Systemen BSc. EE, 1e jaar, , 1e college

Wat is een busverbinding?

Microcontrollers Week 4 Introductie microcontroller Jesse op den Brouw (met dank aan Ben Kuiper) INLMIC/

Basisconcept VHDL. Digitaal Ontwerpen Tweede studiejaar. Wim Dolman. Engineering, leerroute Elektrotechniek Faculteit Techniek

Inhoud vandaag. Interrupts. Algemeen ARM7 AIC

Samenvatting Computer Architectuur

CTCSS Encoder Super Flexibel Ontwerpen met een Arduino Nano

b) Geef het schema van een minimale realisatie met uitsluitend NANDs en inverters voor uitgang D.

informatica. hardware. overzicht. moederbord CPU RAM GPU architectuur (vwo)

assembleertaal F. Vonk versie

Hardware-software Co-design

Eindtentamen Digitale Systemen 07/07/2006, uur

Inleiding Digitale Techniek. Week 7 Schuifregisters Jesse op den Brouw INLDIG/

DDS chips. DDS = Direct Digital (frequency) Synthesis. Output = sinusvormig signaal. Maximum frequentie = ½ klokfrequentie

Digitale Systeem Engineering 2

Computerarchitectuur. H&P App. C. Pipelining

VRIJ TECHNISCH INSTITUUT Burg.Geyskensstraat BERINGEN. De PLC geïntegreerd in de PC. Vak: Toegepaste informatica Auteur: Ludwig Theunis

Hoofdstuk 3: Processen: Beschrijving en Besturing. Wat is een proces? Waarom processen? Wat moet het OS ervoor doen? Is het OS zelf een proces?

Computerarchitectuur. H&P Appendix A: Instruction Set Principles

Computerarchitectuur. H&P Appendix A: Instruction Set Principles

Proeftentamen in1211 Computersystemen I (Opm: de onderstreepte opgaven zijn geschikt voor de tussentoets)

Project Name: New project

De Arduino-microcontroller in de motorvoertuigentechniek (4)

Faculteit Elektrotechniek - Capaciteitsgroep ICS Tentamen Schakeltechniek. Vakcodes 5A010/5A050, 26 november 2003, 14:00u-17:00u

Examen Geavanceerde Computerarchitectuur

Inleiding microcontrollers. Week 2 Introductie microcontroller Jesse op den Brouw (met dank aan Ben Kuiper) INLMIC/

Digitale Systeem Engineering 2

Opgave Tussentijdse Oefeningen Jaarproject I Reeks 4: Lcd Interface & Files

Hoofdstuk 19. Embedded systemen

Assembly en Assemblers. Processoren 5 januari 2015

Sequentiële Logica. Processoren 24 november 2014

Computerarchitectuur en netwerken Toets 1 4 okt

Eindtentamen Digitale Systemen 18/06/2007, uur

Examen computerarchitectuur

18 Embedded systemen 1

Practicum 1: Construeer je eigen microprocessor

Computerarchitectuur en netwerken. Memory management Assembler programmering

Computertechniek vorige examens

Studentnummer:... Opleiding:... a) Met welke term wordt het interface tussen software en hardware van een processor aangeduid?

DEC SDR DSP project 2017 (2)

Examen computerarchitectuur

Digitale Systeem Engineering 2

ES1 Project 1: Microcontrollers

Virtueel Geheugen en demand paging (1)

Uitwerking oefententamen Computerarchitectuur December 2016

Microcontrollers Labo

Ben Bruidegom. Reconstruction: NLT-module Digitale techniek Context: Disco

Processoren. Marc Seutter & David N. Jansen 12 November 2013

Onderwijseenheid INLMIC Inleiding microcontrollers

Centrale begrippen hoofdstuk 3. Waarom multiprogramming? Vandaag. processen proces state: running, ready, blocked,... Vragen??

Peripheral Interface Controllers. BRAC clubavond PE2WDO

Transcriptie:

EE1410: Digitale Systemen BSc. EE, 1e jaar, 2012-2013, 10e hoorcollege Arjan van Genderen, Stephan Wong, Computer Engineering 13-5-2013 Delft University of Technology Challenge the future

Hoorcollege 10 Register Transfer Level (RTL) systemen Finite State Machine model Datapad besturingsmodel RTL model data processing Delta I microprocessor architectuur operatie-voorbeelden instructie set instructie decoder programmeervoorbeelden vergelijking met dedicated hardware Boek Digital Logic : 7.14.4 7.14.1 tot Using a Shift 7.14.2 Bestudeer ook het document: RTL_Delta1 (op blackboard) 2

Register Transfer Level (RTL) systemen 3

Finite State Machine model Kleine digitale systemen: standaard opsplitsing in comb. en seq. (Moore/Mealy model) is belangrijk hulpmiddel bij ontwerp. Bijvoorbeeld de parity checker (Y = [ aantal 1-en in invoer D = oneven], zie hoorcollege 4): 0 FSD: reset Even [0] 1 1 Odd [1] D=0 toestandscodering + synthese (K-map, Xilinx ISE,..) D Realisatie: clk D-FF rst Y input comb. state comb. output Moore machine 4

Datapad besturingsmodel Complexe digitale systemen bevatten meerdere schakelingen (combinatorisch en sequentieel). Goede opsplitsing is in besturing en datapad Bijvoorbeeld een reactietimer: besturing: datapad: 4 4 Display start stop t_e t_clr EN CLR counter Timer d_rdy FSM d_clr Beide subsystemen zijn op zich comb./ sequentieel INIT [0] 1 EN CLR counter Delay TIME [1] HALT [0] 5

RTL level systemen Veel grote dataverwerkende systemen worden op RTL nivo ontworpen (Register Transfer Level) waarbij datapad register-gebaseerd is en besturing een FSM. Bijvoorbeeld een GCD-module (Greatest Common Divisor = grootste gemene deler) mbv. algoritme van Euclides: gcd(x,y) = IF (y = 0) THEN x ELSE gcd(y,mod(x,y)) bv: gcd(24,15) = gcd(15,9) = gcd(9,6) = gcd(6,3) = gcd(3,0) = 3 Een voorbeeld RTL realisatie (D-reg met synchr. load; x en y zijn al in D-reg geladen): RTL operatie: y = 0? F T [valid] stop stop [valid] stop ld_y D-reg y n-inp NOR resultaat z := mod(x,y) [ld_z] ld_x D-reg x gcd(x,y) x := y [ld_x] valid x y mod(x,y) valid y := z [ld_y] ld_z D-reg z 6

Data processing Tot dusverre waren hardware-ontwerpen zeer applicatie-specifiek: - geldt uiteraard mbt. besturing - maar ook het datapad is applicatie-specifiek voordeel: optimaal in termen van kosten (HW) en prestatie (snelheid) nadeel: hogere ontwerpkosten en initiële fabricagekosten, dus loont alleen bij zeer grote aantallen Alternatief: standaardisatie van het datapad - datapad wordt general-purpose RTL circuit (zgn. data processor), - interactie tussen datapad en FSM ( programma ) mbv. applicatie-onafhanklijke stuursignalen (bitcodes), instructies genoemd voordeel: alleen instructiereeks (programma) is applicatie-specifiek (simpeler, flexibeler, software-oplossing ) nadeel: suboptimaal in hardware-kosten en -prestatie 7

De Delta I Microprocessor 8

Delta I Specificaties Features: - 8-bits datapad (transporteert en rekent met 8 bits getallen) - single cycle operation (1 operatie per actieve klok flank) - Harvard architectuur: instructie-code en data zijn gescheiden - gebruikt registers voor I/O (register-mapped I/O) - simpele instructie set (slechts 16 1-operand instructies) Doel van het ontwerp: extreem simpel uit didaktische overwegingen Hardware (RTL level): - 1 2 8 x 12 bits ROM (tbv. het programma) - 1 8-bits upcounter (program counter (PC), adresseert ROM) - 1 8-bits ALU (de rekenkern van de processor) - 1 8-bits register + 3-state buffer (tbv. de ALU accumulator) - N 8-bits registers + 3-state buffers, afhankelijk van applicatie (N = 0...256) - wat besturingscombinatoriek (instruction decoder) De processor inclusief ROM past in een eenvoudige FPGA 9

Delta I Circuit Overzicht ROM 12 Instruction Decoder PC 8 8 Data Bus..... 8 8-bits data bus Ri 8.... 8 Ri.... c z ALU A Data Registers (D stuks) R 0... R D-1 (bv. D = 8) i = 0, 1,..., D-1 8-bit Cntr (clk, inc, ld, rst) 8-bit D-FF (clk, ld, rst) 8-bit 3-state buffer (oe) output(i-d) input(i-d) 8 I/O Registers R D, R D+1... R N i = D, D+1,..., N (dus doorgenummerd) c z 8-bit ALU (clk, opcode) c = carry, z = zero 10

Delta I besturing vs datapad ROM Instruction Decoder PC ibuf oe Data Bus..... pc_inc, ibuf_oe,... ALU code pc_inc pc_ld dreg ld(i) Ri dreg.... ld(i) Ri.... c ALU z dbuf oe(i) dbuf oe(i) areg ld A.... abuf oe Clk Rst Delta I interface output(i-d) input(i-d) 11

Delta I ld # operatie ROM PC ibuf oe # Instruction Decoder..... pc_inc, ibuf_oe, areg_ld ALU code pc_inc........ c ALU z areg ld A ld # ( load constant ): copieer bitcode # in A vb: ld FF H 12

Delta I ld Ri operatie (1) ROM Instruction Decoder PC.... pc_inc, dbuf_oe(i),. areg_ld ALU code pc_inc Ri........ c ALU z dbuf oe(i) areg ld A ld Ri ( load register ): copieer waarde van Ri in A (geldt voor alle i < D) vb: ld R0 Data Out Data In 13

Delta I ld Ri operatie (2) ROM PC Instruction Decoder..... pc_inc, dbuf_oe(i), areg_ld ALU code pc_inc........ c ALU z dbuf oe(i) areg ld A ld Ri ( load register ): copieer waarde op input(i-d) in A (geldt voor alle i >= D) input(i-d) vb: ld R255 14

Delta I st Ri operatie (1) ROM Instruction Decoder PC..... pc_inc, dreg_ld(i), abuf_oe pc_inc dreg ld(i) Ri........ c z A st Ri ( store register ): copieer waarde van A in Ri (geldt voor alle i < D) abuf oe vb: st R0 15

Delta I st Ri operatie (2) ROM PC Instruction Decoder..... pc_inc, dreg_ld(i), abuf_oe pc_inc dreg.... ld(i) Ri.... c z A st Ri ( store register ): copieer waarde van A in Ri, beschikbaar op output(i-d) (geldt voor alle i >= D) vb: st R8 output(i-d) abuf oe 16

Delta I add # operatie ROM PC ibuf oe # Instruction Decoder..... pc_inc, ibuf_oe, areg_ld ALU code pc_inc........ c ALU z areg ld A add # ( add constant ): A := A + # + C C := carry vb: add FF H (NB: vergelijkbare versies voor andere ALU operaties) 17

Delta I add Ri operatie ROM Instruction Decoder PC..... pc_inc, dbuf_oe(i), areg_ld ALU code pc_inc Ri........ c ALU z dbuf oe(i) areg ld A add Ri ( add register ): A := A + Ri + C C := carry (NB: werkt ook voor i >= D) vb: add R0 (of ook: add R8) (NB: vergelijkbare versies voor andere ALU operaties) 18

Delta I jp # operatie ROM PC ibuf oe # Instruction Decoder..... pc_ld, ibuf_oe pc_ld........ c z jp # ( jump ): PC := # vb: jp 0 19

Delta I jp Ri operatie ROM Instruction Decoder PC..... pc_ld, dbuf_oe(i) pc_ld R i........ c z dbuf oe(i) jp Ri ( jump ): PC := Ri (NB: werkt ook voor i >= D) vb: jp R0 (ook: jp R8) 20

Delta I bc # operatie ROM PC ibuf oe # Instruction Decoder..... pc_inc, pc_ld, ibuf_oe pc_inc pc_ld........ c z ALU bc # ( branch carry ): PC := # als C = 1 PC := PC + 1 als C = 0 vb: bc 0 (NB: vergelijkbare versie voor Z (bz branch zero )) 21

Delta I Instructie-set instr. werking toelichting nop no operation voor vertraging of reservering set c C := 1 zet de carry op 1 clr c C := 0 zet de carry op 0 ld # A := # load constant ld R i A := R i load register st R i R i := A store register add # A := (A + # + C) mod 256 C := (A + # + C >= 256) add R i A := (A + R i + C) mod 256 C := (A + R i + C >= 256) xor # A := A XOR # bitwise XOR xor R i A := A XOR R i bitwise XOR and # A := A AND # bitwise AND, Z := (A AND # = 0) and R i A := A AND R i bitwise AND, Z := (A AND R i = 0 jp # PC := # onvoorwaardelijke sprong jp R i PC := R i onvoorwaardelijke sprong bz # Z => PC := # Z => PC := PC + 1 bc # C => PC := # C => PC := PC + 1 Tenzij anders vermeld geldt voor iedere instructie: PC := PC + 1 en Z, C blijven ongewijzigd 22

Delta I Instruction Decoder Instr. Instruction pc pc ibuf areg abuf dreg dbuf ALU name Opcode Operand inc ld oe ld oe ld oe code nop 0000 - - - - - - - - 1 0 0 0 0 0 0 - - - set c 0001 - - - - - - - - 1 0 0 0 0 0 0 001 clr c 0010 - - - - - - - - 1 0 0 0 0 0 0 010 ld # 0011 # 1 0 1 1 0 0 0 000 ld R i 0100 i 1 0 0 1 0 0 1 000 st R i 0101 i 1 0 0 0 1 1 0 - - - add # 0110 # 1 0 1 1 0 0 0 011 add R i 0111 i 1 0 0 1 0 0 1 011 xor # 1000 # 1 0 1 1 0 0 0 100 xor R i 1001 i 1 0 0 1 0 0 1 100 and # 1010 # 1 0 1 1 0 0 0 101 and R i 1011 i 1 0 0 1 0 0 1 101 jp # 1100 # 0 1 1 0 0 0 0 - - - jp R i 1101 i 0 1 0 0 0 0 1 - - - bz # 1110 # Z Z 1 0 0 0 0 - - - bc # 1111 # C C 1 0 0 0 0 - - - vb: de bewerking R8 := R0 + 64 correspondeert met de 3 volgende instructies: ld R0 = 0100 00000000 ; add 40 H = 0110 01000000 ; st R8 = 0101 00001000 23

Delta I Programmeervoorbeeld Berekening van R0 := R1 + 15: address bitcode instructie effect na volgende klokflank 0000 0010 00000000 clr c C := 0, PC := PC + 1 0001 0100 00000001 ld R1 A := R1, PC := PC + 1 0010 0110 00001111 add 15 A := A + 15, PC := PC + 1 0011 0101 00000000 st R0 R0 := A, PC := PC + 1 0100 1100 00000000 jp 0 PC := 0 Manier waarop men in de praktijk een programma opschrijft (assembly code): label mnemonic commentaar begin: clr c ; bereid optelling voor ld R1 ; R0 = R1 + 15 add 15 st R0 jp begin ; herhaal programma 24

Delta I: gcd-applicatie (1) ; Delta I configuratie: ; ; D = 4 data-registers: R0 (x), R1 (y), R2 (z), R3 (return adres) ; 3 I/O-registers: R4 (x), R5 (y), R6 (gcd resultaat) ; ; Algoritme: ; ; als (y = 0) dan ; klaar: x is gcd ; anders ; z := x mod y ; x := y ; y := z ; herhaal algoritme Vergelijkbaar C programma: int x, y, z; fscanf (fp0, %d, &x); fscanf (fp1, %d, &y); while(y){ z = x % y; x = y; y = z; } fprintf (fp2, %d, x); 25

Delta I: gcd-applicatie (2) gcd: ld R4 ; x := input(0) st R0 ld R5 ; y := input(1) st R1 loop: ld R1 ; test y = 0 and 11111111b bz done ; y = 0 dus zijn we klaar ld after ; R3 := terugkeeradres na executie van mod routine st R3 jp mod ; spring naar mod routine => z := mod(x,y) after: ld R1 ; x := y st R0 ld R2 ; y := z st R1 jp loop ; herhaal algoritme done: ld R0 ; output(2) := x st R6 jp gcd ; doe een nieuwe gcd 26

Delta I: gcd-applicatie (3) ; Routine: bereken z := x mod y ; ; Algoritme: ; ; z := x ; herhaal z := z - y totdat z < 0 ; z := z + y mod: ld R0 ; z := x st R2 subtr: ld R1 ; A := y xor 11111111b ; A := y set c ; A := y + 1 = -y add R2 ; A := z - y (wat zijn de eisen aan x en y?) st R2 ; z := z - y and 10000000b ; z < 0? bz subtr ; nee, herhaal subtr ld R2 ; ja, A := z clr c ; geen verrassingen add R1 ; A := z + y st R2 ; z := z + y jp R3 ; return naar adres in R3 27

Hardware versus software Vergelijking mbt. gcd-applicatie (1 gcd iteratie, stel mod functie kost 1 klokcyclus): Vorige hardware-oplossing: 4-state FSM => 4 cycli per iteratie Delta I software-oplossing: 9 cycli/instructies wanneer de mod operatie {ld after, st R3, jp mod}, wordt geteld als 1 instructie De snelste HW-oplossing kan echter itereren in 1 cyclus! stop [valid] stop stop [iter] stop iter iter D-reg y D-reg x n-inp NOR gcd(x,y) Snelheidsverhouding 9:1 en bovendien zijn de hardwarekosten lager. stop [valid] valid iter x y mod(x,y) D-reg z valid Afweging tussen SW-oplossing en HW-oplossing is niet triviaal en zeker applicatie-specifiek 28

Samenvatting Wat is het datapad besturingsmodel? Wat zijn RTL systemen? Wat zijn processoren? Hoe werken processoren? Wat is een software-oplossing? Wat zijn de verschillen tussen SW- en HW-oplossingen? Deze week: bekendmaking VHDL opdracht kwartaal 4 Vanaf volgende week vrijdag: werkcolleges Vrijdag 7 juni: vragencollege 29