Download de presentatie
De presentatie wordt gedownload. Even geduld aub
GepubliceerdLucas Geerts Laatst gewijzigd meer dan 10 jaar geleden
1
Program- meerbare processoren KATHOLIEKE UNIVERSITEIT 6-16-106–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 6-26-206–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 6-36-306–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 6-46-406–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 6-56-506–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 6-66-606–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 6-76-706–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 6-86-806–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 6-96-906–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 6-1006–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 6-1106–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 6-1206–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 6-1306–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 6-1406–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 6-1506–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 6-1606–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 6-1706–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 6-1806–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 6-1906–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 6-2006–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 6-2106–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 6-2206–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 6-2306–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 6-2406–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 6-2506–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 1514131211109876543210 Het programma Instructies Adresseermodi Processorontwerp CISC IS-ontwerp IS-schema Datapad- componenten ASM-schema Controller Datapad RISC
26
Program- meerbare processoren KATHOLIEKE UNIVERSITEIT 6-2606–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 1514131211109876543210 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 6-2706–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 Bewerking00 1514131211109876543210 Src2Src1Dest Het programma Instructies Adresseermodi Processorontwerp CISC IS-ontwerp IS-schema Datapad- componenten ASM-schema Controller Datapad RISC
28
Program- meerbare processoren KATHOLIEKE UNIVERSITEIT 6-2806–07H01L1 Registerinstructies (type 00) We kiezen voor ons toepassingsdomein Bewerking00 1514131211109876543210 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 6-2906–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] + 1 1 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 6-3006–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 0x0001 111 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 6-3106–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 01 1514131211109876543210 Src2Src1DestOpMode Het programma Instructies Adresseermodi Processorontwerp CISC IS-ontwerp IS-schema Datapad- componenten ASM-schema Controller Datapad RISC
32
Program- meerbare processoren KATHOLIEKE UNIVERSITEIT 6-3206–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 6-3306–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 6-3406–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 6-3506–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 6-3606–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 6-3706–07H01L1 Voorstelling instructie Machinetaal = het binair patroon van een instructie Meestal hexadecimaal voorgesteld om schrijffouten te vermijden; bijv. 0010000111110000 = 0x21F0 Hardware “interpreteert” de binaire instructie 0010000111110000 : registerbewerking 0010000111110000 : aritmetisch 0010000111110000 : optelling 0010000111110000 : resultaat in RF[7] 0010000111110000 : operand 1 = RF[6] 0010000111110000 : 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 6-3806–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 6-3906–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,S20010000 — RF[D] RF[S1] + RF[S2] SUB D,S1,S20010001 — RF[D] RF[S1] − RF[S2] INC D,S10010010 X— RF[D] RF[S1] + 1 DEC D,S10010011 X— RF[D] RF[S1] − 1 MUL D,S1,S20010100 — RF[D] RF[S1] × RF[S2] DIV D,S1,S20010101 — RF[D] RF[S1] / RF[S2] SQR D,S10010110 X— RF[D] RF[S1] × RF[S1] ROOT D,S10010111 X— RF[D] Root(RF[S1]) AND D,S1,S20011000 — RF[D] RF[S1] AND RF[S2] NAND D,S1,S20011001 — RF[D] RF[S1] NAND RF[S2] OR D,S1,S20011010 — RF[D] RF[S1] OR RF[S2] NOR D,S1,S20011011 — RF[D] RF[S1] NOR RF[S2] XOR D,S1,S20011100 — RF[D] RF[S1] XOR RF[S2] XNOR D,S1,S20011101 — RF[D] RF[S1] XNOR RF[S2] MASK D,S10011110 X— RF[D] RF[S1] AND 0x0001 INV D,S10011111 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 6-4006–07H01L1 Assembleertaal voor onze CISC 12 verplaatsinstructies AssembleertaalOpcodeDS1S2AActie LOAD D,#waarde0100000 XX RF[D] waarde LOAD D,adres0100001 XX RF[D] Mem[adres] LOAD D,(adres)0100010 XX RF[D] Mem[Mem[adres]] LOAD D,(S1)0101010 X— RF[D] Mem[RF[S1]] LOAD D,(S1)+S20101011 — RF[D] Mem[RF[S1]+S2] LOAD D,adres+(S1)0101100 X RF[D] Mem[adres+RF[S1]] STOR adres,S10110001X X Mem[adres] RF[S1] STOR (adres),S10110010X X Mem[Mem[adres]] RF[S1] STOR (D),S10111010 X— Mem[RF[D]] RF[S1] STOR (D)+S2,S10111011 — Mem[RF[D]+S2] RF[S1] STOR adres+(D),S10111100 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 6-4106–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 6-4206–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,S21110000X — IF (RF[S1] > RF[S2]) THEN (Status 1) ELSE (Status 0) GE S1,S21110001X — IF (RF[S1] >= RF[S2]) THEN (Status 1) ELSE (Status 0) LT S1,S21110010X — IF (RF[S1] < RF[S2]) THEN (Status 1) ELSE (Status 0) LE S1,S21110011X — IF (RF[S1] <= RF[S2]) THEN (Status 1) ELSE (Status 0) EQ S1,S21110100X — IF (RF[S1] = RF[S2]) THEN (Status 1) ELSE (Status 0) NE S1,S21110101X — 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 6-4306–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: 0..1023 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 6-4406–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 6-4506–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,#0x0003-- 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 6-4606–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,#0x0003-- 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 6-4706–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,#0x0003-- 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 6-4806–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,#0x0003-- 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 6-4906–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,#0x0003-- 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 6-5006–07H01L1 Programmavoorbeeld: machinetaal 400511010XX001XXXXXX-- CLR 1 400611010XX010XXXXXX-- CLR 2 400711010XX011XXXXXX-- CLR 3 40080100000100XXXXXX-- LOAD 4,#0x03FF 40090000001111111111 400A0100000101XXXXXX-- LOAD 5,#0x0003 400B0000000000000011 400C0101010110101XXX-- LOAD 6,(5)BODY 400D0010000010010110-- ADD 2,2,6 400E1110011XXX110001-- LE 6,1 400F1001XXXXXXXXXXXX-- CJMP NEXT 40100100000000010010 401101XX101001110XXX-- COPY 1,6 40121110001110000XXX-- GE 6,0NEXT 40131001XXXXXXXXXXXX-- CJMP CTU 40140100000000010110 401501XX101000110XXX-- COPY 0,6 40160010010011011XXX-- INC 3,3CTU 40170010010101101XXX-- INC 5,5 40181110011XXX011100-- LE 3,4 40191001XXXXXXXXXXXX-- CJMP BODY 401A0100000000001100 40041111111111111111 40030100000000XXXXXX-- 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 6-5106–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 6-5206–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 6-5306–07H01L1 Aritmetisch schuiven naar rechts IR Mem[PC] PC PC+1 Type 3 2 1 0 Op 11 10 01 00 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 6-5406–07H01L1 Aritmetisch schuiven naar links IR Mem[PC] PC PC+1 Type 3 2 1 0 Op 11 10 01 00 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 6-5506–07H01L1 Dyadische optelling IR Mem[PC] PC PC+1 Type 3 2 1 0 Registerinstructies RF[Dest] RF[Src1] + RF[Src2] Op 11 10 01 00 Dyadische optelling/aftrekking B11,10 11 10 01 00 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 6-5606–07H01L1 Laad constante IR Mem[PC] PC PC+1 Type 3 2 1 0 RF[Dest] Mem[PC] PC PC+1 L*/S 1 0 2-woord instructie Load 000001010011100101 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 6-5706–07H01L1 Laad direct uit geheugen RF[Dest] Mem[Mem[PC]] PC PC+1 Direct IR Mem[PC] PC PC+1 Type 3 2 1 0 L*/S 1 0 2-woord instructie Load 000001010011100101 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 6-5806–07H01L1 Laad indirect RF[Dest] Mem[Mem[Mem[PC]]] PC PC+1 Indirect IR Mem[PC] PC PC+1 Type 3 2 1 0 L*/S 1 0 2-woord instructie Load 000001010011100101 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 6-5906–07H01L1 Laad register-indirect RF[Dest] Mem[RF[Src1]] 1-woord instructie Indirect IR Mem[PC] PC PC+1 Type 3 2 1 0 L*/S 1 0 Load 000001010011100101 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 6-6006–07H01L1 Laad register-relatief RF[Dest] Mem[RF[Src1]+Src2] Relatief 1-woord instructie IR Mem[PC] PC PC+1 Type 3 2 1 0 L*/S 1 0 Load 000001010011100101 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 6-6106–07H01L1 Laad geïndexeerd RF[Dest] Mem[Mem[PC]+RF[Src1]] PC PC+1 Geïndexeerd IR Mem[PC] PC PC+1 Type 3 2 1 0 L*/S 1 0 2-woord instructie Load 000001010011100101 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 6-6206–07H01L1 Kopieer register RF[Dest] RF[Src1] Kopieer Analoog voor Store 1-woord instructie IR Mem[PC] PC PC+1 Type 3 2 1 0 L*/S 1 0 Load 000001010011100101 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 6-6306–07H01L1 Onconditionele sprong PC Mem[PC] Op 3 2 1 0 Onconditionele sprong Sprong IR Mem[PC] PC PC+1 Type 3 2 1 0 Het programma Instructies Adresseermodi Processorontwerp CISC IS-ontwerp IS-schema Datapad- componenten ASM-schema Controller Datapad RISC
64
Program- meerbare processoren KATHOLIEKE UNIVERSITEIT 6-6406–07H01L1 Conditionele sprong PC PC+1 Conditionele sprong Status 1 0 Geen sprong Op 3 2 1 0 Sprong IR Mem[PC] PC PC+1 Type 3 2 1 0 Het programma Instructies Adresseermodi Processorontwerp CISC IS-ontwerp IS-schema Datapad- componenten ASM-schema Controller Datapad RISC
65
Program- meerbare processoren KATHOLIEKE UNIVERSITEIT 6-6506–07H01L1 Conditionele sprong PC Mem[PC] Sprong Conditionele sprong Status 1 0 Op 3 2 1 0 Sprong IR Mem[PC] PC PC+1 Type 3 2 1 0 Het programma Instructies Adresseermodi Processorontwerp CISC IS-ontwerp IS-schema Datapad- componenten ASM-schema Controller Datapad RISC
66
Program- meerbare processoren KATHOLIEKE UNIVERSITEIT 6-6606–07H01L1 Sprong naar subroutine JSR Mem[RF[Src1]] PC+1 RF[Src1] RF[Src1]+1 PC Mem[PC] Op 3 2 1 0 Sprong IR Mem[PC] PC PC+1 Type 3 2 1 0 Het programma Instructies Adresseermodi Processorontwerp CISC IS-ontwerp IS-schema Datapad- componenten ASM-schema Controller Datapad RISC
67
Program- meerbare processoren KATHOLIEKE UNIVERSITEIT 6-6706–07H01L1 Terugkeer uit subroutine RF[Src1] RF[Src1]−1 PC Mem[RF[Src1]] RTS Op 3 2 1 0 Sprong IR Mem[PC] PC PC+1 Type 3 2 1 0 Het programma Instructies Adresseermodi Processorontwerp CISC IS-ontwerp IS-schema Datapad- componenten ASM-schema Controller Datapad RISC
68
Program- meerbare processoren KATHOLIEKE UNIVERSITEIT 6-6806–07H01L1 NOP & Clear Op 3 2 1 0 NOP Andere IR Mem[PC] PC PC+1 Type 3 2 1 0 Clear b11 1 0 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 6-6906–07H01L1 Zet status, incl. vergelijkingen Zet Status Status 1 Op 3 2 1 0 Andere IR Mem[PC] PC PC+1 Type 3 2 1 0 000001010011100101 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 6-7006–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 6-7106–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 6-7206–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 6-7306–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 6-7406–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 6-7506–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 6-7606–07H01L1 Aritmetisch schuiven naar rechts IR Mem[PC] PC PC+1 Type 3 2 1 0 Op 11 10 01 00 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 6-7706–07H01L1 Laad constante IR Mem[PC] PC PC+1 Type 3 2 1 0 RF[Dest] Mem[PC] PC PC+1 L*/S 1 0 2-woord instructie Load 000001010011100101 Onmiddellijk Load/store Reg 1 0 2 klokcycli Het programma Instructies Adresseermodi Processorontwerp CISC IS-ontwerp IS-schema Datapad- componenten ASM-schema Controller Datapad RISC
78
Program- meerbare processoren KATHOLIEKE UNIVERSITEIT 6-7806–07H01L1 Laad direct uit geheugen RF[Dest] Mem[Mem[PC]] PC PC+1 Direct IR Mem[PC] PC PC+1 Type 3 2 1 0 L*/S 1 0 2-woord instructie Load 000001010011100101 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 6-7906–07H01L1 Laad indirect RF[Dest] Mem[Mem[Mem[PC]]] PC PC+1 Indirect IR Mem[PC] PC PC+1 Type 3 2 1 0 L*/S 1 0 2-woord instructie Load 000001010011100101 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 6-8006–07H01L1 Sprong naar subroutine JSR Mem[RF[Src1]] PC+1 RF[Src1] RF[Src1]+1 PC Mem[PC] Op 3 2 1 0 Sprong IR Mem[PC] PC PC+1 Type 3 2 1 0 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 6-8106–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 6-8206–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 6-8306–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 6-8406–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 6-8506–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 6-8606–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 6-8706–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 6-8806–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 6-8906–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 6-9006–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 6-9106–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 6-9206–07H01L1 ASM-schema: schuiven naar rechts IR Mem[PC] PC PC+1 Type 3 2 1 0 Op 11 10 01 00 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 6-9306–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 6-9406–07H01L1 ASM-schema: dyadische optelling IR Mem[PC] PC PC+1 Type 3 2 1 0 RF[Dest] RF[Src1] + RF[Src2] Op 11 10 01 00 B11,10 11 10 01 00 0 1 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 6-9506–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 6-9606–07H01L1 ASM-schema: laad constante IR Mem[PC] PC PC+1 Type 3 2 1 0 RF[Dest] Mem[PC] PC PC+1 L’/S 1 0 000001010011100101 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 6-9706–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 6-9806–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 3 2 1 0 L’/S 1 0 000001010011100101 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 6-9906–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 6-10006–07H01L1 ASM-schema: laad geïndexeerd Geïndexeerd IR Mem[PC] PC PC+1 Type 3 2 1 0 L’/S 1 0 000001010011100101 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 6-10106–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 6-10206–07H01L1 ASM-schema: kopieer register RF[Dest] RF[Src1] Kopieer IR Mem[PC] PC PC+1 Type 3 2 1 0 L’/S 1 0 000001010011100101 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 6-10306–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 6-10406–07H01L1 AR Mem[PC] PC PC+1 Mem[AR] RF[Src1] ASM-schema: stockeer direct Direct IR Mem[PC] PC PC+1 Type 3 2 1 0 L’/S 1 0 000001010011100101 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 6-10506–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 6-10606–07H01L1 ASM-schema: sprong naar subroutine JSR Op 3 2 1 0 IR Mem[PC] PC PC+1 Type 3 2 1 0 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 6-10706–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 6-10806–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 6-10906–07H01L1 ASM-schema: vergelijk Op 3 2 1 0 IR Mem[PC] PC PC+1 Type 3 2 1 0 000001010011100101 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 6-11006–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 6-11106–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 6-11206–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
Verwante presentaties
© 2024 SlidePlayer.nl Inc.
All rights reserved.