De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

Program- meerbare processoren KATHOLIEKE UNIVERSITEIT 6-16-106–07H01L1 Inhoudstafel  Inleiding  De basis van digitaal ontwerp  Combinatorische schakelingen.

Verwante presentaties


Presentatie over: "Program- meerbare processoren KATHOLIEKE UNIVERSITEIT 6-16-106–07H01L1 Inhoudstafel  Inleiding  De basis van digitaal ontwerp  Combinatorische schakelingen."— Transcript van de presentatie:

1 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 Inhoudstafel  Inleiding  De basis van digitaal ontwerp  Combinatorische schakelingen  Sequentiële schakelingen  Niet-programmeerbare processoren  Programmeerbare processoren  Hardware-beschrijvingstalen

2 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 Programmeerbare processor =FSMD met een programmeerbare controller  vaste controller (FSMD)  andere FSM voor elk algoritme  generische controller: leest acties uit programmageheugen  ander programma voor elk algoritme  vaste FSM Datapad Controller Controle- signalen Status- signalen Data- ingangen Data- uitgangen Controle- ingangen Controle- uitgangen Programma- geheugen InstructieAdres (PC)

3 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 Ontwerp programmeerbare processoren  Het programma  Instructies  Adresseermodi  Processorontwerp  CISC-processoren  RISC-processoren Het programma Instructies Adresseermodi Processorontwerp CISC RISC

4 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 Instructies  Programma =opeenvolging van instructies  bevat dezelfde informatie als een FSM  Instructie  komt overeen met een FSM-toestand =aanduiding  wat volgende instructie is  aansturing datapad (registers, FU’s, MUX’s, …)  data-uitwisseling (laden/stockeren) met (extern) geheugen  typische notaties:  mnemonisch (zoals in assembleertaal): Add A, B, C (  a=b+c)  acties (zoals bij talen voor hardware-specificatie): Mem[A]  Mem[B] + Mem[C] Het programma  Instructies Adresseermodi Processorontwerp CISC RISC

5 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 Instructieformaat  Instructies onderverdeeld in velden =groep bits waaraan een betekenis/subtaak kan toegekend worden  Veel voorkomende instructievelden:  instructietype: klasse van instructie (registerbewerkingen, sprong, geheugenoperatie, …)  opcode (‘operation code’): welke bewerking (optelling, …)  adres: locatie operanden & resultaten  kan zowel in register(bank) als geheugen zijn bijv. “Load R2, A” (RF[2]  Mem[A])  adresseermode: hoe effectief adres berekenen uitgaand van adresveld(en)  constante: bijv. “Add R2, R3, 1”  Zowel het aantal als de grootte van de velden kunnen variabel zijn  Sommige soorten velden kunnen meerdere keren voorkomen (bijv. adres) Het programma  Instructies Adresseermodi Processorontwerp CISC RISC

6 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 Generische instructiecyclus Lees instructie Lees instructie uit het geheugen in het Instructieregister (IR); verhoog Programmateller (PC) Herhaal dit eindeloos Bereken operand- en resultaatadressen Gebruik adresseermodi en adresvelden om operand- en resultaatadressen te berekenen Lees operand(en) Lees operanden uit het geheugen (tijdelijk) in registers Voer bewerking uit Voer bewerking uit en stockeer resultaat (tijdelijk) in een register Stockeer resultaat Stockeer resultaat in het geheugen Het programma  Instructies Adresseermodi Processorontwerp CISC RISC

7 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 Uitvoeringssnelheid  Uitvoeringssnelheid instructie hangt af van  snelheid datapad  te verhogen door extra hardware  aantal toegangen tot extern geheugen  korte instructies  Lengte instructie hoofdzakelijk bepaald door het aantal adresvelden/instructie  Weinig: korte (snelle) instructies  veel instructies/taak  Veel: lange (trage) instructies  minder instructies/taak  Voorbeeld: bereken c = (a + b) × (a − b)  Stel  we gebruiken 32-bit data en eveneens 32-bit adressen  een instructie bestaat uit –1 woord met alle velden behalve geheugenadressen –1 woord per geheugenadresveld  Het aantal geheugentoegangen is dan  n+1 (halen instructie met n geheugenadresvelden)  +1 per lees/schrijfoperatie data  geheugen Het programma  Instructies Adresseermodi Processorontwerp CISC RISC

8 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 c=(a+b)×(a−b): impact # adresvelden  Instructies met 3 adressen  Add X,A,BMem[X]  Mem[A] + Mem[B] Sub C,A,BMem[C]  Mem[A] − Mem[B] Mul C,X,CMem[C]  Mem[X] × Mem[C]  (4 + 3) geheugentoegangen/instructie  programma heeft 21 toegangen nodig  Instructies met 2 adressen =resultaat overschrijft eerste operand bij dyadische operaties  verplaatsinstructies (‘move’) nodig  Move X,AMem[X]  Mem[A] Add X,BMem[X]  Mem[X] + Mem[B] Move C,AMem[C]  Mem[A] Sub C,BMem[C]  Mem[C] − Mem[B] Mul C,XMem[C]  Mem[C] × Mem[X]  (3 + (2 of 3)) geheugentoegangen/instructie  programma heeft 28 toegangen nodig  1,67 meer instructies maar instructies zijn sneller (5,6 geheugentoegangen/instructie) Het programma  Instructies Adresseermodi Processorontwerp CISC RISC

9 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 c=(a+b)×(a−b): impact # adresvelden  Instructies met 1 adres =gebruik speciaal register (ACC of Accumulator), waarin de eerste operand en het resultaat geplaatst worden  Load AACC  Mem[A] Add BACC  ACC + Mem[B] Store XMem[X]  ACC Load AACC  Mem[A] Sub BACC  ACC − Mem[B] Mul XACC  ACC × Mem[X] Store CMem[C]  ACC  (2 + 1) geheugentoegangen/instructie  programma heeft 21 toegangen nodig Het programma  Instructies Adresseermodi Processorontwerp CISC RISC

10 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 c=(a+b)×(a−b): impact # adresvelden  Instructies zonder adres =gebruik een LIFO-stapel voor data  Beide operanden staan bovenaan stapel  Bewerking vervangt ze door het resultaat  Verplaatsinstructies gebruiken relatieve adressering  Load OffsetAPush  Mem[base+OffsetA] Load OffsetBPush  Mem[base+OffsetB] AddPush  Pop + Pop Load OffsetAPush  Mem[base+OffsetA] Load OffsetBPush  Mem[base+OffsetB] SubPush  Pop − Pop MulPush  Pop × Pop Store OffsetCMem[base+OffsetC]  Pop  (1 + (0 of 1)) geheugentoegangen/instructie  programma heeft 13 toegangen nodig Het programma  Instructies Adresseermodi Processorontwerp CISC RISC

11 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 c=(a+b)×(a−b): impact # adresvelden  Instructies met 3 adressen, waarvan 2 van een registerbank  de paar adresbits van een registerbank passen meestal nog in het opcode-woord zodat geen extra adreswoord nodig is  Load R1,ARF[1]  Mem[A] Add R2,R1,BRF[2]  RF[1] + Mem[B] Sub R1,R1,BRF[1]  RF[1] − Mem[B] Mul C,R1,R2Mem[C]  RF[1] × RF[2]  (2 + 1) geheugentoegangen/instructie  programma heeft 12 toegangen nodig  Er zijn verschillende combinaties van register- en geheugenadresseringen mogelijk, o.a. … Het programma  Instructies Adresseermodi Processorontwerp CISC RISC

12 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 c=(a+b)×(a−b): impact # adresvelden  Instructies met 3 registeradressen of met 2 adressen, waarvan 1 van een registerbank =bewerkingen : 3 registeradressen laden/stockeren: 1 registeradres & 1 geheugenadres  Load R1,ARF[1]  Mem[A] Load R2,BRF[2]  Mem[B] Add R3,R1,R2RF[3]  RF[1] + RF[2] Sub R4,R1,R2RF[4]  RF[1] − RF[2] Mul R5,R3,R4RF[5]  RF[3] × RF[4] Store R5,CMem[C]  RF[5]  (2 + 1) of (1 + 0) geheugentoegangen/instructie  programma heeft 12 toegangen nodig  Tijdswinst als de meeste data of tussenresultaten verschillende malen gebruikt wordt, omdat registertoegangen veel sneller zijn dan geheugentoegangen  Gebruikt in alle moderne processoren Het programma  Instructies Adresseermodi Processorontwerp CISC RISC

13 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 Ontwerp programmeerbare processoren  Het programma  Instructies  Adresseermodi  reduceert dikwijls grootte adresveld  analoog aan hogere programmeertalen (cfr. matrices)  Processorontwerp Het programma Instructies  Adresseermodi Processorontwerp CISC RISC

14 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 Impliciete adressering =het adres zit impliciet in de opcode Bijv.  “ADD” betekent bij een 0-adres machine “Vervang de twee waarden bovenaan de stapel door hun som”  “CLRA” betekent bij een 1-adres machine “Reset de accumulator” Opcode Het programma Instructies  Adresseermodi Processorontwerp CISC RISC

15 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 Onmiddellijke adressering =het adresveld bevat niet het adres maar de waarde zelf van de operand  Wordt gebruikt voor constanten Opcode Operand Het programma Instructies  Adresseermodi Processorontwerp CISC RISC

16 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 Directe adressering =het adresveld bevat het adres van de operand  adres van geheugen (MEM) is dikwijls 32 bit  adres van een registerbank (RF) is typisch 3 tot 8 bit  operand = MEM[adres] of RF[adres] Opcode Adres Operand Geheugen Opcode Adres Operand Registerbank Het programma Instructies  Adresseermodi Processorontwerp CISC RISC

17 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 Indirecte adressering =het adresveld verwijst naar de plaats waar het eigenlijke adres van de operand zich bevindt  indirect: eigenlijke adres in geheugen  operand = MEM[MEM[adres]]  register-indirect: in registerbank  operand = MEM[RF[adres]] Opcode Adres Geheugen Operand Opcode Adres Registerbank Geheugen Operand Het programma Instructies  Adresseermodi Processorontwerp CISC RISC

18 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 Relatieve adressering =effectieve adres = basisadres + (kleine) offset  operand = MEM[basis + offset]  relatief: basisadres in impliciet register  adresveld = offset  bijv. voor sprongadres (basis = PC)  register-relatief: in expliciet register (basis = RF[adres])  adresveld = (registeradres; offset)  bijv. voor opzoektabel (‘Look-Up Table’) Geheugen Opcode Offset Operand + Basis Register Het programma Instructies  Adresseermodi Processorontwerp CISC RISC Geheugen Operand + Opcode Basis Registerbank Adres Offset

19 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 Geïndexeerde adressering =effectieve adres = basisadres + (kleine) offset  basis = beginadres matrix, stapel, wachtrij, …  geïndexeerd: offset in impliciet register  adresveld = basis  register-geïndexeerd: offset in expliciet register (offset = RF[adres])  adresveld = (registeradres; basis) Geheugen Opcode Basis Operand + Offset Register Het programma Instructies  Adresseermodi Processorontwerp CISC RISC Geheugen Operand + Opcode Offset Registerbank Adres Basis

20 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 Geïndexeerde adressering met autoincrement/autodecrement =geïndexeerde adressering waarbij de offset automatisch verhoogd (of verlaagd) wordt  meestal ±1 maar soms ook ±2, ±4, … Geheugen Opcode Basis Operand + Offset + −1 1 Het programma Instructies  Adresseermodi Processorontwerp CISC RISC

21 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 Ontwerp programmeerbare processoren  Het programma  Processorontwerp  Complex Instruction Set Computer  Reduced Instruction Set Computer Het programma Instructies Adresseermodi Processorontwerp CISC RISC

22 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 Ontwerp van een programmeerbare processor Ontwerp instructieset Datapad hangt af van instructieset en vice versa Instructieset-stroomschema Beschrijf alle operaties per instructie Allocatie datapadcomponenten Beslis welke componenten nodig zijn in het datapad Bepaal ASM-schema Verdeel instructie in cycli en bepaal registertransfers/cyclus Ontwerp datapad Ontwerp controller Het programma Instructies Adresseermodi Processorontwerp CISC RISC

23 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 Basiskeuze ontwerp instructieset  CISC: Complex Instruction Set Computer = vele complexe (trage) instructies  meerdere operaties, instructietypes, adresseermodi en adresvelden  complex datapad met veel FU’s, veel registers en complexe verbindingen  lage klokfrequentie  kort programma, maar elke instructie verbruikt veel klokcycli  RISC: Reduced Instruction Set Computer = enkele snelle (eenvoudige) instructies  weinig operaties en instructietypes; 0 of 1 adresvelden; weinig adresmodi  eenvoudig datapad  hoge klokfrequentie  lang programma, maar elke instructie verbruikt maar een paar klokcycli Het programma Instructies Adresseermodi Processorontwerp CISC RISC

24 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 Ontwerp programmeerbare processoren  Het programma  Processorontwerp  Complex Instruction Set Computer  Ontwerp instructieset  Instructieset-stroomschema  Allocatie datapadcomponenten  ASM-schema  Ontwerp controller  Ontwerp datapad  Reduced Instruction Set Computer Het programma Instructies Adresseermodi Processorontwerp  CISC  IS-ontwerp  IS-schema  Datapad- componenten  ASM-schema  Controller  Datapad RISC

25 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 Ontwerp CISC-instructieset  Specificaties  16-bit woordlengte  16-bit adresbereik  Maximale grootte instructie: twee 16-bit woorden  Bijkomende keuzes  Voor de hand liggend uit specificaties  1 adresveld van 16 bit veld  alle andere velden ook 16 bit  We kiezen  laden/stockeren registers: 1 16-bit adresveld  de rest enkel registeroperaties 16-bit adres/constante Alle andere velden Het programma Instructies Adresseermodi Processorontwerp  CISC  IS-ontwerp  IS-schema  Datapad- componenten  ASM-schema  Controller  Datapad RISC

26 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 Ontwerp CISC-instructieset  Bijkomende keuzes  We hebben 4 types (2 bits) instructies:  registerinstructies  verplaatsinstructies  spronginstructies  andere instructies, zoals NOP  Hoewel niet alle instructies evenveel registeradressen nodig hebben, voorzien we er 3 voor allemaal  We kiezen 3 registeradresvelden van 3 bits  Nog 5 bits beschikbaar voor bewerking en adresseermodes (“Operatie/mode”) 16-bit adres/constante Alle andere velden Type Operatie/modeSrc2Src1Dest Het programma Instructies Adresseermodi Processorontwerp  CISC  IS-ontwerp  IS-schema  Datapad- componenten  ASM-schema  Controller  Datapad RISC

27 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 Registerinstructies (type 00) OP Dest,Src1,Src2 RF[Dest]  RF[Src1] OP RF[Src2] OP Dest,Src1RF[Dest]  RF[Src1] OP  Bewerking OP  Aritmetische, logische en schuifoperaties  Keuze bewerkingen hangt af van frequentie gebruik in typische toepassingen  Op 1 of 2 operanden Bewerking Src2Src1Dest Het programma Instructies Adresseermodi Processorontwerp  CISC  IS-ontwerp  IS-schema  Datapad- componenten  ASM-schema  Controller  Datapad RISC

28 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 Registerinstructies (type 00)  We kiezen voor ons toepassingsdomein Bewerking Src2Src1Dest bit 13 bit 12 bit 11 bit 10 bit 9 Bewerking 0Schuiven (aritmetisch) 0Naar rechts n2n2 n1n1 n0n0 RF[Dest]  RF[Src1] >> n 1Naar links n2n2 n1n1 n0n0 RF[Dest]  RF[Src1] << n Het programma Instructies Adresseermodi Processorontwerp  CISC  IS-ontwerp  IS-schema  Datapad- componenten  ASM-schema  Controller  Datapad RISC

29 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 Registerinstructies (type 00) bit 13 bit 12 bit 11 bit 10 bit 9 Bewerking 10Aritmetische bewerking 0Optelling/aftrekking 0Dyadisch 0 Add: RF[Dest]  RF[Src1] + RF[Src2] 1 Sub: RF[Dest]  RF[Src1] − RF[Src2] 1Monadisch 0 Inc: RF[Dest]  RF[Src1] Dec: RF[Dest]  RF[Src1] − 1 1Vermenigvuldiging/deling 0Dyadisch 0 Mul: RF[Dest]  RF[Src1] × RF[Src2] 1 Div: RF[Dest]  RF[Src1] / RF[Src2] 1Monadisch 0 Sqr: RF[Dest]  RF[Src1] × RF[Src1] 1 Root: RF[Dest]  SQRT(RF[Src1]) Het programma Instructies Adresseermodi Processorontwerp  CISC  IS-ontwerp  IS-schema  Datapad- componenten  ASM-schema  Controller  Datapad RISC

30 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 Registerinstructies (type 00) bit 13 bit 12 bit 11 bit 10 bit 9 Bewerking 11Logische bewerking 000 And:RF[Dest]  RF[Src1] AND RF[Src2] 001 Nand:RF[Dest]  RF[Src1] NAND RF[Src2] 010 Or:RF[Dest]  RF[Src1] OR RF[Src2] 011 Nor:RF[Dest]  RF[Src1] NOR RF[Src2] 100 Xor:RF[Dest]  RF[Src1] XOR RF[Src2] 101 Xnor:RF[Dest]  RF[Src1] XNOR RF[Src2] 110 Mask:RF[Dest]  RF[Src1] AND 0x Inv:RF[Dest]  INV(RF[Src1]) Het programma Instructies Adresseermodi Processorontwerp  CISC  IS-ontwerp  IS-schema  Datapad- componenten  ASM-schema  Controller  Datapad RISC

31 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 Verplaatsinstructies (type 01) =uitwisseling tussen geheugen en registerbank  Slechts 2 operaties mogelijk  Op is 1 bit  Load (Op = 0) : geheugen  register  Store (Op = 1) : register  geheugen  Overblijvende 4 bits worden gebruikt voor de adresseermode van het geheugen  Keuze adresseermode hangt af van frequentie gebruik in typische toepassingen  Src2 kan eventueel gebruikt worden als offset  Adresseermode zal ook bepalen of tweede woord (adres/constante) al dan niet gebruikt wordt 16-bit adres/constante Src2Src1DestOpMode Het programma Instructies Adresseermodi Processorontwerp  CISC  IS-ontwerp  IS-schema  Datapad- componenten  ASM-schema  Controller  Datapad RISC

32 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 Load (type 01, op = 0)  Onmiddellijk adres (2 woorden): RF[Dest]  Constante  Direct adres (2 woorden): RF[Dest]  Mem[Adres]  Indirect adres (2 woorden): RF[Dest]  Mem[Mem[Adres]]  Register-indirect adres (1 woord): RF[Dest]  Mem[RF[Src1]]  Register-relatief adres (1 woord): RF[Dest]  Mem[RF[Src1] + Src2] = RF[Dest]  Mem[Basis + Offset]  Register-geïndexeerd adres (2 woorden): RF[Dest]  Mem[Adres + RF[Src1]] = RF[Dest]  Mem[Basis + Offset]  Kopieer register (1 woord): RF[Dest]  RF[Src1] Het programma Instructies Adresseermodi Processorontwerp  CISC  IS-ontwerp  IS-schema  Datapad- componenten  ASM-schema  Controller  Datapad RISC

33 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 Store (type 01, op = 1)  Onmiddellijk adres: zinloos!  Direct adres (2 woorden): Mem[Adres]  RF[Src1]  Indirect adres (2 woorden): Mem[Mem[Adres]]  RF[Src1]  Register-indirect adres (1 woord): Mem[RF[Dest]]  RF[Src1]  Register-relatief adres (1 woord): Mem[RF[Dest] + Src2]  RF[Src1] = Mem[Basis + Offset]  RF[Src1]  Register-geïndexeerd adres (2 woorden): Mem[Adres + RF[Dest]]  RF[Src1] = Mem[Basis + Offset]  RF[Src1] Het programma Instructies Adresseermodi Processorontwerp  CISC  IS-ontwerp  IS-schema  Datapad- componenten  ASM-schema  Controller  Datapad RISC

34 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 Verplaatsinstructies (type 01)  Toewijzing bits:  Bit 13: 0 = Load 1 = Store  Bit 12: 0 = twee woorden (adres/constante gebruikt) 1 = één woord  Bits 11,10,9: 000 = onmiddellijk adres (enkel bij Load) 001 = direct adres 010 = indirect adres 011 = relatief adres 100 = geïndexeerd adres 101 = kopieer register (dan ook bit 13 = 0) Het programma Instructies Adresseermodi Processorontwerp  CISC  IS-ontwerp  IS-schema  Datapad- componenten  ASM-schema  Controller  Datapad RISC

35 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 Spronginstructies (type 10) 4 instructies (Op gebruikt enkel bits 13 en 12):  JMP (Op = 00): onconditionele sprong (2 woorden) PC  Adres  CJMP (Op = 01): conditionele sprong (2 woorden) IF Status=0 THEN (PC  PC + 1) ELSE (PC  Adres)  JSR (Op = 10): spring naar subroutine (2 woorden) Mem[RF[Src1]]  PC + 1terugkeeradres op LIFO met RF[Src1] het LIFO-schrijfadres en (RF[Src1] − 1) het leesadres RF[Src1]  RF[Src1] + 1verhoog LIFO-schrijfadres PC  Adresspring naar subroutine  RTS (Op = 11): keer terug uit subroutine (1 woord) RF[Src1]  RF[Src1] − 1verminder LIFO-schrijfadres; RF[Src1] bevat nu ook het LIFO-adres van het terugkeeradres PC  Mem[RF[Src1]]lees terugkeeradres uit LIFO Het programma Instructies Adresseermodi Processorontwerp  CISC  IS-ontwerp  IS-schema  Datapad- componenten  ASM-schema  Controller  Datapad RISC

36 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 Andere (1-woord) instructies (type 11) Status = 1-bit register met resultaat vergelijking bit 13 bit 12 bit 11 bit 10 bit 9 Bewerking 00XXXNOP (doe niets) 01Zet op 0 0XX CLR: RF[Dest]  0 1XX ClrS: Status  0 10 Vergelijk RF[Src1] en RF[Src2] IF … THEN Status  1 ELSE Status  0 000GT:RF[Src1] > RF[Src2] 001GE:RF[Src1] ≥ RF[Src2] 010LT:RF[Src1] < RF[Src2] 011LE:RF[Src1] ≤ RF[Src2] 100EQ:RF[Src1] = RF[Src2] 101NE:RF[Src1] ≠ RF[Src2] 11X Niet gebruikt  ongeldige instructie 11XXX SetS: Status  1 Het programma Instructies Adresseermodi Processorontwerp  CISC  IS-ontwerp  IS-schema  Datapad- componenten  ASM-schema  Controller  Datapad RISC

37 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 Voorstelling instructie Machinetaal = het binair patroon van een instructie  Meestal hexadecimaal voorgesteld om schrijffouten te vermijden; bijv = 0x21F0  Hardware “interpreteert” de binaire instructie  : registerbewerking : aritmetisch : optelling : resultaat in RF[7] : operand 1 = RF[6] : operand 2 = RF[0]  Interpretatie = broncode wordt rechtstreeks uitgevoerd  De controller is dus een ‘interpreter’ in hardware Het programma Instructies Adresseermodi Processorontwerp  CISC  IS-ontwerp  IS-schema  Datapad- componenten  ASM-schema  Controller  Datapad RISC

38 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 Voorstelling instructie Assembleertaal = mnemonische voorstelling  1-naar-1 relatie met machinetaal bijv. 0x21F0  ADD 7,6,0  Assembleren = compilatie naar machinecode  Vertaling van instructies via een eenvoudige opzoektabel  Bijkomend gebruiksgemak: geef variabelen een betekenisvolle naam  Assembler kent er zelf een geheugenadres aan toe (relatief t.o.v. begin datageheugen)  Bijkomend gebruiksgemak: geef een betekenisvolle symbolische naam (label) aan adressen waar naartoe gesprongen wordt  Assembler berekent zelf het springadres (relatief t.o.v. begin programmageheugen) Het programma Instructies Adresseermodi Processorontwerp  CISC  IS-ontwerp  IS-schema  Datapad- componenten  ASM-schema  Controller  Datapad RISC

39 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 Assembleertaal voor onze CISC  18 registerinstructies AssembleertaalOpcodeDS1S2AActie ASR n0000n 2 n 1 n 0  X— RF[D]  RF[S1] >> n ASL n0001n 2 n 1 n 0  X— RF[D]  RF[S1] << n ADD D,S1,S  — RF[D]  RF[S1] + RF[S2] SUB D,S1,S  — RF[D]  RF[S1] − RF[S2] INC D,S  X— RF[D]  RF[S1] + 1 DEC D,S  X— RF[D]  RF[S1] − 1 MUL D,S1,S  — RF[D]  RF[S1] × RF[S2] DIV D,S1,S  — RF[D]  RF[S1] / RF[S2] SQR D,S  X— RF[D]  RF[S1] × RF[S1] ROOT D,S  X— RF[D]  Root(RF[S1]) AND D,S1,S  — RF[D]  RF[S1] AND RF[S2] NAND D,S1,S  — RF[D]  RF[S1] NAND RF[S2] OR D,S1,S  — RF[D]  RF[S1] OR RF[S2] NOR D,S1,S  — RF[D]  RF[S1] NOR RF[S2] XOR D,S1,S  — RF[D]  RF[S1] XOR RF[S2] XNOR D,S1,S  — RF[D]  RF[S1] XNOR RF[S2] MASK D,S  X— RF[D]  RF[S1] AND 0x0001 INV D,S  X— RF[D]  INV RF[S1] Het programma Instructies Adresseermodi Processorontwerp  CISC  IS-ontwerp  IS-schema  Datapad- componenten  ASM-schema  Controller  Datapad RISC

40 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 Assembleertaal voor onze CISC  12 verplaatsinstructies AssembleertaalOpcodeDS1S2AActie LOAD D,#waarde  XX  RF[D]  waarde LOAD D,adres  XX  RF[D]  Mem[adres] LOAD D,(adres)  XX  RF[D]  Mem[Mem[adres]] LOAD D,(S1)  X— RF[D]  Mem[RF[S1]] LOAD D,(S1)+S  — RF[D]  Mem[RF[S1]+S2] LOAD D,adres+(S1)  X  RF[D]  Mem[adres+RF[S1]] STOR adres,S X  X  Mem[adres]  RF[S1] STOR (adres),S X  X  Mem[Mem[adres]]  RF[S1] STOR (D),S  X— Mem[RF[D]]  RF[S1] STOR (D)+S2,S  — Mem[RF[D]+S2]  RF[S1] STOR adres+(D),S  X  Mem[adres+RF[D]]  RF[S1] COPY D,S101XX101  X— RF[D]  RF[S1] Het programma Instructies Adresseermodi Processorontwerp  CISC  IS-ontwerp  IS-schema  Datapad- componenten  ASM-schema  Controller  Datapad RISC

41 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 Assembleertaal voor onze CISC  4 spronginstructies AssembleertaalOpcodeDS1S2AActie JMP adres1000XXXXXX  PC  adres CJMP adres1001XXXXXX  IF (Status=0) THEN (PC  PC+1) ELSE (PC  adres) JSR adres,(S1)1010XXXX  X  Mem[RF[S1]]  PC+1; RF[S1]  RF[S1]+1; PC  adres RTS (S1)1011XXXX  X— RF[S1]  RF[S1]−1; PC  Mem[RF[S1]] Het programma Instructies Adresseermodi Processorontwerp  CISC  IS-ontwerp  IS-schema  Datapad- componenten  ASM-schema  Controller  Datapad RISC

42 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 Assembleertaal voor onze CISC  10 andere instructies  44 instructies in totaal AssembleertaalOpcodeDS1S2AAction NOP1100XXXXXX—— CLR D11010XX  XX— RF[D]  0 ClrS11011XXXXX— Status  0 SetS1111XXXXXX— Status  1 GT S1,S X  — IF (RF[S1] > RF[S2]) THEN (Status  1) ELSE (Status  0) GE S1,S X  — IF (RF[S1] >= RF[S2]) THEN (Status  1) ELSE (Status  0) LT S1,S X  — IF (RF[S1] < RF[S2]) THEN (Status  1) ELSE (Status  0) LE S1,S X  — IF (RF[S1] <= RF[S2]) THEN (Status  1) ELSE (Status  0) EQ S1,S X  — IF (RF[S1] = RF[S2]) THEN (Status  1) ELSE (Status  0) NE S1,S X  — IF (RF[S1] <> RF[S2]) THEN (Status  1) ELSE (Status  0) Het programma Instructies Adresseermodi Processorontwerp  CISC  IS-ontwerp  IS-schema  Datapad- componenten  ASM-schema  Controller  Datapad RISC

43 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 Programmavoorbeeld Bepaal de som, het minimum en het maximum van 1024 getallen  Programma in een hoog-niveau taal: Min = MAXINT Max = 0 Sum = 0 FOR Count: Sum = Sum + A[i] IF A[i] > Max THEN Max = A[i] IF A[i] < Min THEN Min = A[i] END FOR Het programma Instructies Adresseermodi Processorontwerp  CISC  IS-ontwerp  IS-schema  Datapad- componenten  ASM-schema  Controller  Datapad RISC

44 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 Programmavoorbeeld: assembleertaal ORG DATA Hierna volgen declaraties van variabelen waarvoor geheugenruimte moet voorbehouden worden in het datageheugen (vanaf 0x0000) Dit geeft het begin van het programma aan. Dit startadres (0x0403) verandert elke keer wanneer een bijkomende variabele gedeclareerd wordt, waardoor alle sprongadressen gewijzigd moeten worden! Min Word-- op adres 0x0000 Max Word-- op adres 0x0001 Sum Word-- op adres 0x0002 A Array[1024]-- op adressen 0x0003 tot 0x0402 ORG PROGRAM Het programma Instructies Adresseermodi Processorontwerp  CISC  IS-ontwerp  IS-schema  Datapad- componenten  ASM-schema  Controller  Datapad RISC

45 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 Programmavoorbeeld: assembleertaal ORG PROGRAM Initialisatie van de lus Initialisatie van de variabelen LOAD 0,#0xffff-- RF[0]  0xFFFFMin = MAXINT CLR 1-- RF[1]  0Max = 0 CLR 2-- RF[2]  0Sum = 0 CLR 3-- RF[3]  0Count = 0 LOAD 4,#0x03ff-- RF[4]  1023 D MaxCount LOAD 5,#0x RF[5]  3 D adres A[i] Adres van het huidig vectorelement (initieel eerste) Het programma Instructies Adresseermodi Processorontwerp  CISC  IS-ontwerp  IS-schema  Datapad- componenten  ASM-schema  Controller  Datapad RISC

46 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 Programmavoorbeeld: assembleertaal ORG PROGRAM LOAD 0,#0xffff-- RF[0]  0xFFFFMin = MAXINT CLR 1-- RF[1]  0Max = 0 CLR 2-- RF[2]  0Sum = 0 CLR 3-- RF[3]  0Count = 0 LOAD 4,#0x03ff-- RF[4]  1023 D MaxCount LOAD 5,#0x RF[5]  3 D adres A[i] BODY: LOAD 6,(5)-- RF[6]  Mem[RF[5]]A[i] ADD 2,2,6-- RF[2]  RF[2] + RF[6] LE 6,1-- Status  1if RF[6]  RF[1] CJMP NEXT-- PC  NEXTif Status = 1 COPY 1,6-- RF[1]  RF[6] NEXT: NEXT: GE 6,0-- Status  1if RF[6]  RF[0] CJMP CTU-- PC  CTUif Status = 1 COPY 0,6-- RF[0]  RF[6] CTU: IF A[i] < Min THEN Min=A[i] IF A[i] > Max THEN Max=A[i] Begin van de lus (startadres lus = “BODY”) Sum=Sum+A[i] Het programma Instructies Adresseermodi Processorontwerp  CISC  IS-ontwerp  IS-schema  Datapad- componenten  ASM-schema  Controller  Datapad RISC

47 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 Programmavoorbeeld: assembleertaal ORG PROGRAM LOAD 0,#0xffff-- RF[0]  0xFFFFMin = MAXINT CLR 1-- RF[1]  0Max = 0 CLR 2-- RF[2]  0Sum = 0 CLR 3-- RF[3]  0Count = 0 LOAD 4,#0x03ff-- RF[4]  1023 D MaxCount LOAD 5,#0x RF[5]  3 D adres A[i] BODY: LOAD 6,(5)-- RF[6]  Mem[RF[5]]A[i] ADD 2,2,6-- RF[2]  RF[2] + RF[6] LE 6,1-- Status  1if RF[6]  RF[1] CJMP NEXT-- PC  NEXTif Status = 1 COPY 1,6-- RF[1]  RF[6] NEXT: GE 6,0-- Status  1if RF[6]  RF[0] CJMP CTU-- PC  CTUif Status = 1 COPY 0,6-- RF[0]  RF[6] CTU: CTU: INC 3,3-- RF[3]  RF[3] + 1 INC 5,5-- RF[5]  RF[5] + 1 LE 3,4-- Status  1if RF[3]  RF[4] CJMP BODY-- PC  BODYif Status = 1 Test of lus opnieuw moet uitgevoerd worden Verhoog lusteller en adres A[i]: Count = Count+1; (adres A[i]) = (adres A[i])+1 Het programma Instructies Adresseermodi Processorontwerp  CISC  IS-ontwerp  IS-schema  Datapad- componenten  ASM-schema  Controller  Datapad RISC

48 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 Programmavoorbeeld: assembleertaal ORG PROGRAM LOAD 0,#0xffff-- RF[0]  0xFFFFMin = MAXINT CLR 1-- RF[1]  0Max = 0 CLR 2-- RF[2]  0Sum = 0 CLR 3-- RF[3]  0Count = 0 LOAD 4,#0x03ff-- RF[4]  1023 D MaxCount LOAD 5,#0x RF[5]  3 D adres A[i] BODY: LOAD 6,(5)-- RF[6]  Mem[RF[5]]A[i] ADD 2,2,6-- RF[2]  RF[2] + RF[6] LE 6,1-- Status  1if RF[6]  RF[1] CJMP NEXT-- PC  NEXTif Status = 1 COPY 1,6-- RF[1]  RF[6] NEXT: GE 6,0-- Status  1if RF[6]  RF[0] CJMP CTU-- PC  CTUif Status = 1 COPY 0,6-- RF[0]  RF[6] CTU: INC 3,3-- RF[3]  RF[3] + 1 INC 5,5-- RF[5]  RF[5] + 1 LE 3,4-- Status  1if RF[3]  RF[4] CJMP BODY-- PC  BODYif Status = 1 STOR Min,0-- Mem[Min]  RF[0] STOR Max,1-- Mem[Max]  RF[1] STOR Sum,2-- Mem[Sum]  RF[2] Stockeer de resultaten Het programma Instructies Adresseermodi Processorontwerp  CISC  IS-ontwerp  IS-schema  Datapad- componenten  ASM-schema  Controller  Datapad RISC

49 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 Programmavoorbeeld: assembleertaal ORG PROGRAM LOAD 0,#0xffff-- RF[0]  0xFFFFMin = MAXINT CLR 1-- RF[1]  0Max = 0 CLR 2-- RF[2]  0Sum = 0 CLR 3-- RF[3]  0Count = 0 LOAD 4,#0x03ff-- RF[4]  1023 D MaxCount LOAD 5,#0x RF[5]  3 D adres A[i] BODY: LOAD 6,(5)-- RF[6]  Mem[RF[5]]A[i] ADD 2,2,6-- RF[2]  RF[2] + RF[6] LE 6,1-- Status  1if RF[6]  RF[1] CJMP NEXT-- PC  NEXTif Status = 1 COPY 1,6-- RF[1]  RF[6] NEXT: GE 6,0-- Status  1if RF[6]  RF[0] CJMP CTU-- PC  CTUif Status = 1 COPY 0,6-- RF[0]  RF[6]... A[i] wordt 1 maal geladen in RF[6] en wordt 5 maal gebruikt: dit bespaart vermogen en verhoogt de snelheid Het programma Instructies Adresseermodi Processorontwerp  CISC  IS-ontwerp  IS-schema  Datapad- componenten  ASM-schema  Controller  Datapad RISC

50 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 Programmavoorbeeld: machinetaal XX001XXXXXX-- CLR XX010XXXXXX-- CLR XX011XXXXXX-- CLR XXXXXX-- LOAD 4,#0x03FF A XXXXXX-- LOAD 5,#0x B C XXX-- LOAD 6,(5)BODY 400D ADD 2,2,6 400E XXX LE 6,1 400F1001XXXXXXXXXXXX-- CJMP NEXT XX XXX-- COPY 1, XXX-- GE 6,0NEXT XXXXXXXXXXXX-- CJMP CTU XX XXX-- COPY 0, XXX-- INC 3,3CTU XXX-- INC 5, XXX LE 3, XXXXXXXXXXXX-- CJMP BODY 401A XXXXXX-- LOAD 0,#0xFFFF … Het programma Instructies Adresseermodi Processorontwerp  CISC  IS-ontwerp  IS-schema  Datapad- componenten  ASM-schema  Controller  Datapad RISC

51 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 Ontwerp programmeerbare processoren  Het programma  Processorontwerp  Complex Instruction Set Computer  Ontwerp instructieset  Instructieset-stroomschema (‘Instruction Set Flowchart’)  Allocatie datapadcomponenten  ASM-schema  Ontwerp controller  Ontwerp datapad  Reduced Instruction Set Computer Het programma Instructies Adresseermodi Processorontwerp  CISC  IS-ontwerp  IS-schema  Datapad- componenten  ASM-schema  Controller  Datapad RISC

52 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 Instructieset-stroomschema =visuele voorstelling van alle instructies i.p.v. in tabelvorm  Duidelijker als op een groot stuk papier  Handig om de instructiedecoder te ontwerpen  De enige architecturale beslissing tot hiertoe is de veronderstelling dat we beschikken over een  geheugen (Mem)  registerbank (RF)  programmateller (PC)  instructieregister (IR)  statusvlag (Status) Het programma Instructies Adresseermodi Processorontwerp  CISC  IS-ontwerp  IS-schema  Datapad- componenten  ASM-schema  Controller  Datapad RISC

53 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 Aritmetisch schuiven naar rechts IR  Mem[PC] PC  PC+1 Type Op Registerinstructies RF[Dest]  RF[Src1] >> n Schuiven naar rechts Het programma Instructies Adresseermodi Processorontwerp  CISC  IS-ontwerp  IS-schema  Datapad- componenten  ASM-schema  Controller  Datapad RISC

54 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 Aritmetisch schuiven naar links IR  Mem[PC] PC  PC+1 Type Op Registerinstructies RF[Dest]  RF[Src1] << n Schuiven naar links Het programma Instructies Adresseermodi Processorontwerp  CISC  IS-ontwerp  IS-schema  Datapad- componenten  ASM-schema  Controller  Datapad RISC

55 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 Dyadische optelling IR  Mem[PC] PC  PC+1 Type Registerinstructies RF[Dest]  RF[Src1] + RF[Src2] Op Dyadische optelling/aftrekking B11, Aritmetische bewerkingen 0 1 Dyadische optelling B9 Het programma Instructies Adresseermodi Processorontwerp  CISC  IS-ontwerp  IS-schema  Datapad- componenten  ASM-schema  Controller  Datapad RISC

56 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 Laad constante IR  Mem[PC] PC  PC+1 Type RF[Dest]  Mem[PC] PC  PC+1 L*/S woord instructie Load Onmiddellijk Load/store Reg 1 0 Het programma Instructies Adresseermodi Processorontwerp  CISC  IS-ontwerp  IS-schema  Datapad- componenten  ASM-schema  Controller  Datapad RISC

57 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 Laad direct uit geheugen RF[Dest]  Mem[Mem[PC]] PC  PC+1 Direct IR  Mem[PC] PC  PC+1 Type L*/S woord instructie Load Load/store Reg 1 0 Het programma Instructies Adresseermodi Processorontwerp  CISC  IS-ontwerp  IS-schema  Datapad- componenten  ASM-schema  Controller  Datapad RISC

58 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 Laad indirect RF[Dest]  Mem[Mem[Mem[PC]]] PC  PC+1 Indirect IR  Mem[PC] PC  PC+1 Type L*/S woord instructie Load Load/store Reg 1 0 Het programma Instructies Adresseermodi Processorontwerp  CISC  IS-ontwerp  IS-schema  Datapad- componenten  ASM-schema  Controller  Datapad RISC

59 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 Laad register-indirect RF[Dest]  Mem[RF[Src1]] 1-woord instructie Indirect IR  Mem[PC] PC  PC+1 Type L*/S 1 0 Load Load/store Reg 1 0 Het programma Instructies Adresseermodi Processorontwerp  CISC  IS-ontwerp  IS-schema  Datapad- componenten  ASM-schema  Controller  Datapad RISC

60 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 Laad register-relatief RF[Dest]  Mem[RF[Src1]+Src2] Relatief 1-woord instructie IR  Mem[PC] PC  PC+1 Type L*/S 1 0 Load Load/store Reg 1 0 Het programma Instructies Adresseermodi Processorontwerp  CISC  IS-ontwerp  IS-schema  Datapad- componenten  ASM-schema  Controller  Datapad RISC

61 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 Laad geïndexeerd RF[Dest]  Mem[Mem[PC]+RF[Src1]] PC  PC+1 Geïndexeerd IR  Mem[PC] PC  PC+1 Type L*/S woord instructie Load Load/store Reg 1 0 Het programma Instructies Adresseermodi Processorontwerp  CISC  IS-ontwerp  IS-schema  Datapad- componenten  ASM-schema  Controller  Datapad RISC

62 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 Kopieer register RF[Dest]  RF[Src1] Kopieer Analoog voor Store 1-woord instructie IR  Mem[PC] PC  PC+1 Type L*/S 1 0 Load Load/store Reg 1 0 Het programma Instructies Adresseermodi Processorontwerp  CISC  IS-ontwerp  IS-schema  Datapad- componenten  ASM-schema  Controller  Datapad RISC

63 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 Onconditionele sprong PC  Mem[PC] Op Onconditionele sprong Sprong IR  Mem[PC] PC  PC+1 Type Het programma Instructies Adresseermodi Processorontwerp  CISC  IS-ontwerp  IS-schema  Datapad- componenten  ASM-schema  Controller  Datapad RISC

64 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 Conditionele sprong PC  PC+1 Conditionele sprong Status 1 0 Geen sprong Op Sprong IR  Mem[PC] PC  PC+1 Type Het programma Instructies Adresseermodi Processorontwerp  CISC  IS-ontwerp  IS-schema  Datapad- componenten  ASM-schema  Controller  Datapad RISC

65 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 Conditionele sprong PC  Mem[PC] Sprong Conditionele sprong Status 1 0 Op Sprong IR  Mem[PC] PC  PC+1 Type Het programma Instructies Adresseermodi Processorontwerp  CISC  IS-ontwerp  IS-schema  Datapad- componenten  ASM-schema  Controller  Datapad RISC

66 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 Sprong naar subroutine JSR Mem[RF[Src1]]  PC+1 RF[Src1]  RF[Src1]+1 PC  Mem[PC] Op Sprong IR  Mem[PC] PC  PC+1 Type Het programma Instructies Adresseermodi Processorontwerp  CISC  IS-ontwerp  IS-schema  Datapad- componenten  ASM-schema  Controller  Datapad RISC

67 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 Terugkeer uit subroutine RF[Src1]  RF[Src1]−1 PC  Mem[RF[Src1]] RTS Op Sprong IR  Mem[PC] PC  PC+1 Type Het programma Instructies Adresseermodi Processorontwerp  CISC  IS-ontwerp  IS-schema  Datapad- componenten  ASM-schema  Controller  Datapad RISC

68 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 NOP & Clear Op NOP Andere IR  Mem[PC] PC  PC+1 Type Clear b RF[Dest]  0 Clear register Status  0 Clear Status Het programma Instructies Adresseermodi Processorontwerp  CISC  IS-ontwerp  IS-schema  Datapad- componenten  ASM-schema  Controller  Datapad RISC

69 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 Zet status, incl. vergelijkingen Zet Status Status  1 Op Andere IR  Mem[PC] PC  PC+1 Type Vergelijk GT IF (RF[Src1] > RF[Src2]) THEN Status  1 ELSE Status  0 Het programma Instructies Adresseermodi Processorontwerp  CISC  IS-ontwerp  IS-schema  Datapad- componenten  ASM-schema  Controller  Datapad RISC

70 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 Ontwerp programmeerbare processoren  Het programma  Processorontwerp  Complex Instruction Set Computer  Ontwerp instructieset  Instructieset-stroomschema  Allocatie datapadcomponenten  ASM-schema  Ontwerp controller  Ontwerp datapad  Reduced Instruction Set Computer Het programma Instructies Adresseermodi Processorontwerp  CISC  IS-ontwerp  IS-schema  Datapad- componenten  ASM-schema  Controller  Datapad RISC

71 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 Allocatie datapadcomponenten  Datapad tot nu toe nodig voor instructies:  Registers:  Extern geheugen (1 lees/schrijfpoort; 64K×16)  Registerbank (2 lees- & 1 schrijfpoort; 8×16)  Statusvlag (1 bit)  FU’s:  ALU  Comparator  16-bit links/rechts schuifoperatie  Om voor sommige toepassingen een hogere snelheid te halen kunnen bijkomende registers en/of FU’s toegevoegd worden. Maar de instructieset moet herzien worden bij elke wijziging van het datapad! Het programma Instructies Adresseermodi Processorontwerp  CISC  IS-ontwerp  IS-schema  Datapad- componenten  ASM-schema  Controller  Datapad RISC

72 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 Allocatie datapadcomponenten  We beslissen hier om 1 toevoeging te voorzien omwille van de snelheid:  Traagste instructie: Laad indirect RF[Dest]  Mem[Mem[adres]] & adres  Mem[PC]  Deze instructie leest 3 × uit extern geheugen en duurt bijv. 150 ns (als 50 ns/toegang)  maximum klokfrequentie = 6,7 MHz  registerinstructies zullen dan ook 150 ns duren, zelfs als hun combinatorische vertraging maar 10 ns is  Als we elke externe geheugentoegang in een aparte klokcyclus uitvoeren, kunnen we klokcycli van 50 ns gebruiken (pipelining)  maximum klokfrequentie = 20 MHz  traagste instructie duurt 3 klokcycli van 50 ns  registerinstructie duurt slechts 50 ns Het programma Instructies Adresseermodi Processorontwerp  CISC  IS-ontwerp  IS-schema  Datapad- componenten  ASM-schema  Controller  Datapad RISC

73 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 Allocatie datapadcomponenten  Daarom wordt een bijkomend Adresregister AR toegevoegd om een adres, dat uit geheugen gelezen wordt, te bewaren voor gebruik in de volgende klokcyclus RF 8×16 ARStatus CompALUShift Geheugen 64K×16 Het programma Instructies Adresseermodi Processorontwerp  CISC  IS-ontwerp  IS-schema  Datapad- componenten  ASM-schema  Controller  Datapad RISC

74 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 Ontwerp programmeerbare processoren  Het programma  Processorontwerp  Complex Instruction Set Computer  Ontwerp instructieset  Instructieset-stroomschema  Allocatie datapadcomponenten  ASM-schema  Ontwerp controller  Ontwerp datapad  Reduced Instruction Set Computer Het programma Instructies Adresseermodi Processorontwerp  CISC  IS-ontwerp  IS-schema  Datapad- componenten  ASM-schema  Controller  Datapad RISC

75 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 Afleiden van het ASM-schema  Het IS-stroomschema geeft aan welke registertransfers er in een instructie gebeuren  Het ASM-stroomschema geeft aan welke registertransfers er in een klokcyclus gebeuren  Bepaal uit het IS-stroomschema welke registertransfers tegelijkertijd gebeuren  Splits de instructie op in (zo weinig mogelijk) verschillende klokcycli zodat er geen hardware conflicten tussen operaties/datatransfers optreden in eenzelfde klokcyclus Het programma Instructies Adresseermodi Processorontwerp  CISC  IS-ontwerp  IS-schema  Datapad- componenten  ASM-schema  Controller  Datapad RISC

76 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 Aritmetisch schuiven naar rechts IR  Mem[PC] PC  PC+1 Type Op Registerinstructies RF[Dest]  RF[Src1] >> n Schuiven naar rechts 2 klokcycli Het programma Instructies Adresseermodi Processorontwerp  CISC  IS-ontwerp  IS-schema  Datapad- componenten  ASM-schema  Controller  Datapad RISC

77 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 Laad constante IR  Mem[PC] PC  PC+1 Type RF[Dest]  Mem[PC] PC  PC+1 L*/S woord instructie Load Onmiddellijk Load/store Reg klokcycli Het programma Instructies Adresseermodi Processorontwerp  CISC  IS-ontwerp  IS-schema  Datapad- componenten  ASM-schema  Controller  Datapad RISC

78 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 Laad direct uit geheugen RF[Dest]  Mem[Mem[PC]] PC  PC+1 Direct IR  Mem[PC] PC  PC+1 Type L*/S woord instructie Load Load/store Reg 1 0 AR  Mem[PC] PC  PC+1 RF[Dest]  Mem[AR] 3 klokcycli Het programma Instructies Adresseermodi Processorontwerp  CISC  IS-ontwerp  IS-schema  Datapad- componenten  ASM-schema  Controller  Datapad RISC

79 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 Laad indirect RF[Dest]  Mem[Mem[Mem[PC]]] PC  PC+1 Indirect IR  Mem[PC] PC  PC+1 Type L*/S woord instructie Load Load/store Reg 1 0 AR  Mem[PC] PC  PC+1 AR  Mem[AR] RF[Dest]  Mem[AR] 4 klokcycli Het programma Instructies Adresseermodi Processorontwerp  CISC  IS-ontwerp  IS-schema  Datapad- componenten  ASM-schema  Controller  Datapad RISC

80 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 Sprong naar subroutine JSR Mem[RF[Src1]]  PC+1 RF[Src1]  RF[Src1]+1 PC  Mem[PC] Op Sprong IR  Mem[PC] PC  PC+1 Type Gesplitst in 2 klokcycli:  2 geheugentoegangen (1 × lezen & 1 × schrijven)  2 optellingen 3 klokcycli AR  Mem[PC] PC  PC+1 Mem[RF[Src1]]  PC RF[Src1]  RF[Src1]+1 PC  AR Het programma Instructies Adresseermodi Processorontwerp  CISC  IS-ontwerp  IS-schema  Datapad- componenten  ASM-schema  Controller  Datapad RISC

81 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 Ontwerp programmeerbare processoren  Het programma  Processorontwerp  Complex Instruction Set Computer  Ontwerp instructieset  Instructieset-stroomschema  Allocatie datapadcomponenten  ASM-schema  Ontwerp controller  Ontwerp datapad  Reduced Instruction Set Computer Het programma Instructies Adresseermodi Processorontwerp  CISC  IS-ontwerp  IS-schema  Datapad- componenten  ASM-schema  Controller  Datapad RISC

82 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 Ontwerp CISC-controller Vertrek van de algemene FSMD-controller Next state logic Out- put logic CI SS MUX LIFO SReg INC CS CO Dit is de programmateller Push/ Pop* Het programma Instructies Adresseermodi Processorontwerp  CISC  IS-ontwerp  IS-schema  Datapad- componenten  ASM-schema  Controller  Datapad RISC

83 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 Ontwerp CISC-controller Next state logic Out- put logic CI SS MUX LIFO PC INC CS CO Algoritme niet vast  relatie (PC  next state & output) niet vast  bijkomende vertaalstap via Programmageheugen en IR Het programma Instructies Adresseermodi Processorontwerp  CISC  IS-ontwerp  IS-schema  Datapad- componenten  ASM-schema  Controller  Datapad RISC

84 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 Ontwerp CISC-controller Next state logic Out- put logic CI SS MUX LIFO INC CS CO PCMemIR 1 instructie = sequentie van een paar kleine (micro-)instructies, 1 per klokcyclus: Next state & output zijn FSM i.p.v. combinatorisch Het programma Instructies Adresseermodi Processorontwerp  CISC  IS-ontwerp  IS-schema  Datapad- componenten  ASM-schema  Controller  Datapad RISC

85 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 Ontwerp CISC-controller Next state & out- put FSM CISS MUX LIFO INC CS CO PCMemIR Kan een complete FSM-controller zijn met zijn eigen μPC, μIR en μprogramma-ROM Sprongadressen komen niet uit next state FSM maar uit programmageheugen Het programma Instructies Adresseermodi Processorontwerp  CISC  IS-ontwerp  IS-schema  Datapad- componenten  ASM-schema  Controller  Datapad RISC

86 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 Ontwerp CISC-controller Next state & out- put FSM CISS MUX LIFO INC CS CO PCMemIR gewoonlijk zelfde (extern) geheugen voor programma & data Het programma Instructies Adresseermodi Processorontwerp  CISC  IS-ontwerp  IS-schema  Datapad- componenten  ASM-schema  Controller  Datapad RISC

87 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 Ontwerp CISC-controller Next state & out- put FSM CISS MUX LIFO PC INC CS CO IR A D meestal bevindt de LIFO zich ook in extern geheugen Mem (prog. & data) Het programma Instructies Adresseermodi Processorontwerp  CISC  IS-ontwerp  IS-schema  Datapad- componenten  ASM-schema  Controller  Datapad RISC

88 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 Ontwerp CISC-controller Next state & out- put FSM CISS MUX PC INC CS CO IR A D Mem (prog. & data) inclusief LIFO Het programma Instructies Adresseermodi Processorontwerp  CISC  IS-ontwerp  IS-schema  Datapad- componenten  ASM-schema  Controller  Datapad RISC

89 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 Ontwerp programmeerbare processoren  Het programma  Processorontwerp  Complex Instruction Set Computer  Ontwerp instructieset  Instructieset-stroomschema  Allocatie datapadcomponenten  ASM-schema  Ontwerp controller  Ontwerp datapad  Reduced Instruction Set Computer Het programma Instructies Adresseermodi Processorontwerp  CISC  IS-ontwerp  IS-schema  Datapad- componenten  ASM-schema  Controller  Datapad RISC

90 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 Ontwerp CISC-datapad  De componenten (= registers & FU’s) zijn reeds vroeger vastgelegd bij allocatie datapadcomponenten  Nu enkel nog de verbindingen tussen de componenten (inclusief 3-state buffers)  Af te leiden uit ASM-schema  Als er conflicten tussen het ASM-schema en de componenten/verbindingen zijn  Extra componenten  herbegin vanaf de allocatie van de componenten  Extra klokcycli  herbegin vanaf de bepaling van het ASM-schema Het programma Instructies Adresseermodi Processorontwerp  CISC  IS-ontwerp  IS-schema  Datapad- componenten  ASM-schema  Controller  Datapad RISC

91 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 RF 8×16 ARStatus ShiftALUComp Mem (prog. & data) A D Ontwerp CISC-datapad Dit hebben we na de allocatie van de datapadcomponenten Het programma Instructies Adresseermodi Processorontwerp  CISC  IS-ontwerp  IS-schema  Datapad- componenten  ASM-schema  Controller  Datapad RISC

92 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 ASM-schema: schuiven naar rechts IR  Mem[PC] PC  PC+1 Type Op RF[Dest]  RF[Src1] >> n Actie controller Actie datapad Het programma Instructies Adresseermodi Processorontwerp  CISC  IS-ontwerp  IS-schema  Datapad- componenten  ASM-schema  Controller  Datapad RISC

93 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 RF 8×16 ARStatus ShiftALUComp Mem (prog. & data) A D Ontwerp CISC-datapad O1 R Het programma Instructies Adresseermodi Processorontwerp  CISC  IS-ontwerp  IS-schema  Datapad- componenten  ASM-schema  Controller  Datapad RISC

94 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 ASM-schema: dyadische optelling IR  Mem[PC] PC  PC+1 Type RF[Dest]  RF[Src1] + RF[Src2] Op B11, Dyadische optelling B9 Het programma Instructies Adresseermodi Processorontwerp  CISC  IS-ontwerp  IS-schema  Datapad- componenten  ASM-schema  Controller  Datapad RISC

95 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 RF 8×16 ARStatus ShiftALUComp Mem (prog. & data) A D Ontwerp CISC-datapad O1 R O2 Het programma Instructies Adresseermodi Processorontwerp  CISC  IS-ontwerp  IS-schema  Datapad- componenten  ASM-schema  Controller  Datapad RISC

96 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 ASM-schema: laad constante IR  Mem[PC] PC  PC+1 Type RF[Dest]  Mem[PC] PC  PC+1 L’/S Onmiddellijk Reg 1 0 Het programma Instructies Adresseermodi Processorontwerp  CISC  IS-ontwerp  IS-schema  Datapad- componenten  ASM-schema  Controller  Datapad RISC

97 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 RF 8×16 ARStatus ShiftALUComp Mem (prog. & data) A D Ontwerp CISC-datapad O1 R O2 Het programma Instructies Adresseermodi Processorontwerp  CISC  IS-ontwerp  IS-schema  Datapad- componenten  ASM-schema  Controller  Datapad RISC

98 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 AR  Mem[PC] PC  PC+1 RF[Dest]  Mem[AR] ASM-schema: laad direct uit geheugen Direct IR  Mem[PC] PC  PC+1 Type L’/S Reg 1 0 Het programma Instructies Adresseermodi Processorontwerp  CISC  IS-ontwerp  IS-schema  Datapad- componenten  ASM-schema  Controller  Datapad RISC

99 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 RF 8×16 ARStatus ShiftALUComp Mem (prog. & data) A D Ontwerp CISC-datapad O1 R O2 Het programma Instructies Adresseermodi Processorontwerp  CISC  IS-ontwerp  IS-schema  Datapad- componenten  ASM-schema  Controller  Datapad RISC

100 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 ASM-schema: laad geïndexeerd Geïndexeerd IR  Mem[PC] PC  PC+1 Type L’/S Reg 1 0 AR  Mem[PC] + RF[Src1] PC  PC+1 RF[Dest]  Mem[AR] Het programma Instructies Adresseermodi Processorontwerp  CISC  IS-ontwerp  IS-schema  Datapad- componenten  ASM-schema  Controller  Datapad RISC

101 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 RF 8×16 ARStatus ShiftALUComp Mem (prog. & data) A D Ontwerp CISC-datapad O1 R O2 Het programma Instructies Adresseermodi Processorontwerp  CISC  IS-ontwerp  IS-schema  Datapad- componenten  ASM-schema  Controller  Datapad RISC

102 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 ASM-schema: kopieer register RF[Dest]  RF[Src1] Kopieer IR  Mem[PC] PC  PC+1 Type L’/S Reg 1 0 Het programma Instructies Adresseermodi Processorontwerp  CISC  IS-ontwerp  IS-schema  Datapad- componenten  ASM-schema  Controller  Datapad RISC

103 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 RF 8×16 ARStatus ShiftALUComp Mem (prog. & data) A D Ontwerp CISC-datapad O1 R O2 Het programma Instructies Adresseermodi Processorontwerp  CISC  IS-ontwerp  IS-schema  Datapad- componenten  ASM-schema  Controller  Datapad RISC

104 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 AR  Mem[PC] PC  PC+1 Mem[AR]  RF[Src1] ASM-schema: stockeer direct Direct IR  Mem[PC] PC  PC+1 Type L’/S Reg 1 0 Het programma Instructies Adresseermodi Processorontwerp  CISC  IS-ontwerp  IS-schema  Datapad- componenten  ASM-schema  Controller  Datapad RISC

105 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 RF 8×16 ARStatus ShiftALUComp Mem (prog. & data) A D Ontwerp CISC-datapad O1 R O2 Het programma Instructies Adresseermodi Processorontwerp  CISC  IS-ontwerp  IS-schema  Datapad- componenten  ASM-schema  Controller  Datapad RISC

106 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 ASM-schema: sprong naar subroutine JSR Op IR  Mem[PC] PC  PC+1 Type AR  Mem[PC] PC  PC+1 Mem[RF[Src1]]  PC RF[Src1]  RF[Src1]+1 PC  AR Het programma Instructies Adresseermodi Processorontwerp  CISC  IS-ontwerp  IS-schema  Datapad- componenten  ASM-schema  Controller  Datapad RISC

107 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 Aanpassing CISC-controller Next state & out- put FSM CISS MUX PC INC CS CO IR A D Mem (prog. & data) Mem[RF[Src1]]  PC  PC moet op databus kunnen  controller aanpassen Het programma Instructies Adresseermodi Processorontwerp  CISC  IS-ontwerp  IS-schema  Datapad- componenten  ASM-schema  Controller  Datapad RISC

108 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 RF 8×16 ARStatus ShiftALUComp Mem (prog. & data) A D Ontwerp CISC-datapad O1 R O2 Mem[RF[Src1]]  PC RF[Src1]  RF[Src1]+1 PC  AR Onmogelijk: extra verbinding of extra klokcyclus Het programma Instructies Adresseermodi Processorontwerp  CISC  IS-ontwerp  IS-schema  Datapad- componenten  ASM-schema  Controller  Datapad RISC

109 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 ASM-schema: vergelijk Op IR  Mem[PC] PC  PC+1 Type GT IF (RF[Src1] > RF[Src2]) THEN Status  1 ELSE Status  0 Het programma Instructies Adresseermodi Processorontwerp  CISC  IS-ontwerp  IS-schema  Datapad- componenten  ASM-schema  Controller  Datapad RISC

110 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 RF 8×16 AR ShiftALU Mem (prog. & data) A D Ontwerp CISC-datapad O1 R O2 Comp Status Etc., etc., etc. … Het programma Instructies Adresseermodi Processorontwerp  CISC  IS-ontwerp  IS-schema  Datapad- componenten  ASM-schema  Controller  Datapad RISC

111 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 Ontwerp programmeerbare processoren  Het programma  Processorontwerp  Complex Instruction Set Computer  Reduced Instruction Set Computer Het programma Instructies Adresseermodi Processorontwerp CISC  RISC

112 Program- meerbare processoren KATHOLIEKE UNIVERSITEIT –07H01L1 Ontwerp RISC Ongeveer zoals CISC maar hoge klokfrequentie zeer belangrijk  zo veel mogelijk pipelining  Pipelining van uitvoering instructies  beperkingen op instructieset  eenvoudige instructies  instructies ± even lang  Pipelining van controller en datapad  laat het stoppen van de pipeline toe bijv. sprong: nieuwe PC moet eerst berekend worden Lees instructie Lees operand(en) of adressen Bewerk of bereken adres Stockeer resultaat      I1I1 I2I2 I3I3 I4I4 I5I5  I1I1 I2I2 I3I3 I4I4  I1I1 I2I2 I3I3  I1I1 I2I2 Het programma Instructies Adresseermodi Processorontwerp CISC  RISC


Download ppt "Program- meerbare processoren KATHOLIEKE UNIVERSITEIT 6-16-106–07H01L1 Inhoudstafel  Inleiding  De basis van digitaal ontwerp  Combinatorische schakelingen."

Verwante presentaties


Ads door Google