Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-1 06–07
H01L1
Inhoudstafel
Inleiding
De basis van digitaal ontwerp
Combinatorische schakelingen
Sequentiële schakelingen
Niet-programmeerbare processoren
Programmeerbare processoren
Hardware-beschrijvingstalen
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-2 06–07
H01L1
Programmeerbare processor
= FSMD met een programmeerbare controllervaste controller (FSMD)
andere FSM voorelk algoritme
generische controller:leest acties uitprogrammageheugen ander programma
voor elk algoritme vaste FSM
Datapad
Controller
Controle-signalen
Status-signalen
Data-ingangen
Data-uitgangen
Controle-ingangen
Controle-uitgangen
Programma-geheugen
Instructie Adres (PC)
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-3 06–07
H01L1
Ontwerp programmeerbare processoren
Het programma InstructiesAdresseermodi
ProcessorontwerpCISC-processorenRISC-processoren
Het programma
• Instructies
• Adresseermodi
Processorontwerp
• CISC
• RISC
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-4 06–07
H01L1
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
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-5 06–07
H01L1
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
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-6 06–07
H01L1
Generische instructiecyclus
Lees instructieLees instructieLees instructie uit het geheugenin het Instructieregister (IR);verhoog Programmateller (PC)
Herhaal dit eindeloos
Bereken operand- en resultaatadressen
Bereken operand- en resultaatadressen
Gebruik adresseermodi en adresvelden om operand- en resultaatadressen te berekenen
Lees operand(en)Lees operand(en)Lees operanden uit het geheugen(tijdelijk) in registers
Voer bewerking uitVoer bewerking uitVoer bewerking uit en stockeer resultaat (tijdelijk) in een register
Stockeer resultaatStockeer resultaat Stockeer resultaat in het geheugen
Het programma
Instructies
• Adresseermodi
Processorontwerp
• CISC
• RISC
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-7 06–07
H01L1
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
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-8 06–07
H01L1
c=(a+b)×(a−b): impact # adresvelden
Instructies met 3 adressen Add X,A,B Mem[X] Mem[A] + Mem[B]
Sub C,A,B Mem[C] Mem[A] − Mem[B]Mul C,X,C Mem[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,A Mem[X] Mem[A]Add X,B Mem[X] Mem[X] + Mem[B]Move C,A Mem[C] Mem[A]Sub C,B Mem[C] Mem[C] − Mem[B]Mul C,X Mem[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
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-9 06–07
H01L1
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 A ACC Mem[A]Add B ACC ACC + Mem[B]Store X Mem[X] ACCLoad A ACC Mem[A]Sub B ACC ACC − Mem[B]Mul X ACC ACC × Mem[X]Store C Mem[C] ACC
(2 + 1) geheugentoegangen/instructie programma heeft 21 toegangen nodig
Het programma
Instructies
• Adresseermodi
Processorontwerp
• CISC
• RISC
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-10 06–07
H01L1
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 OffsetA Push Mem[base+OffsetA]Load OffsetB Push Mem[base+OffsetB]Add Push Pop + PopLoad OffsetA Push Mem[base+OffsetA] Load OffsetB Push Mem[base+OffsetB] Sub Push Pop − PopMul Push Pop × PopStore OffsetC Mem[base+OffsetC] Pop
(1 + (0 of 1)) geheugentoegangen/instructie programma heeft 13 toegangen nodig
Het programma
Instructies
• Adresseermodi
Processorontwerp
• CISC
• RISC
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-11 06–07
H01L1
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,A RF[1] Mem[A]Add R2,R1,B RF[2] RF[1] + Mem[B]Sub R1,R1,B RF[1] RF[1] − Mem[B] Mul C,R1,R2 Mem[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
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-12 06–07
H01L1
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,A RF[1] Mem[A]Load R2,B RF[2] Mem[B]Add R3,R1,R2 RF[3] RF[1] + RF[2]Sub R4,R1,R2 RF[4] RF[1] − RF[2]Mul R5,R3,R4 RF[5] RF[3] × RF[4]Store R5,C Mem[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
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-13 06–07
H01L1
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
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-14 06–07
H01L1
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”
OpcodeOpcode
Het programma
• Instructies
Adresseermodi
Processorontwerp
• CISC
• RISC
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-15 06–07
H01L1
Onmiddellijke adressering
= het adresveld bevat niet het adres maar de waarde zelf van de operand
Wordt gebruikt voor constanten
OpcodeOpcode OperandOperand
Het programma
• Instructies
Adresseermodi
Processorontwerp
• CISC
• RISC
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-16 06–07
H01L1
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]
OpcodeOpcode AdresAdres
Operand
Geheugen
OpcodeOpcode AdresAdres
Operand
Registerbank
Het programma
• Instructies
Adresseermodi
Processorontwerp
• CISC
• RISC
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-17 06–07
H01L1
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]]
OpcodeOpcode AdresAdres
Adres
Geheugen
Operand
OpcodeOpcode AdresAdres
Adres
Registerbank Geheugen
Operand
Het programma
• Instructies
Adresseermodi
Processorontwerp
• CISC
• RISC
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-18 06–07
H01L1
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
OpcodeOpcode OffsetOffset
Operand+
BasisBasis
Register
Het programma
• Instructies
Adresseermodi
Processorontwerp
• CISC
• RISC
Geheugen
Operand+
OpcodeOpcode
Basis
Registerbank
AdresAdres OffsetOffset
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-19 06–07
H01L1
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
OpcodeOpcode BasisBasis
Operand+
OffsetOffset
Register
Het programma
• Instructies
Adresseermodi
Processorontwerp
• CISC
• RISC
Geheugen
Operand+
OpcodeOpcode
Offset
Registerbank
AdresAdres BasisBasis
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-20 06–07
H01L1 Geïndexeerde adressering met
autoincrement/autodecrement= geïndexeerde adressering waarbij de offset automatisch verhoogd
(of verlaagd) wordtmeestal ±1 maar soms ook ±2, ±4, …
Geheugen
OpcodeOpcode BasisBasis
Operand+
OffsetOffset
+
−1
1
Het programma
• Instructies
Adresseermodi
Processorontwerp
• CISC
• RISC
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-21 06–07
H01L1
Ontwerp programmeerbare processoren
Het programma
ProcessorontwerpComplex Instruction Set ComputerReduced Instruction Set Computer
Het programma
• Instructies
• Adresseermodi
Processorontwerp
• CISC
• RISC
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-22 06–07
H01L1 Ontwerp van eenprogrammeerbare processor
Ontwerp instructiesetOntwerp instructieset
Datapad hangt af
van instructieseten vice versa
Instructieset-stroomschemaInstructieset-stroomschemaBeschrijf alle operatiesper instructie
Allocatie datapadcomponentenAllocatie datapadcomponentenBeslis welke componentennodig zijn in het datapad
Bepaal ASM-schemaBepaal ASM-schemaVerdeel instructiein cycli en bepaalregistertransfers/cyclus
Ontwerp datapadOntwerp datapad
Ontwerp controllerOntwerp controller
Het programma
• Instructies
• Adresseermodi
Processorontwerp
• CISC
• RISC
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-23 06–07
H01L1 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
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-24 06–07
H01L1
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
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-25 06–07
H01L1
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
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Het programma
• Instructies
• Adresseermodi
Processorontwerp
CISC
IS-ontwerp
IS-schema
Datapad-componenten
ASM-schema
Controller
Datapad
• RISC
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-26 06–07
H01L1
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
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Type Operatie/mode Src2Src1Dest
Het programma
• Instructies
• Adresseermodi
Processorontwerp
CISC
IS-ontwerp
IS-schema
Datapad-componenten
ASM-schema
Controller
Datapad
• RISC
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-27 06–07
H01L1
Registerinstructies (type 00)
OP Dest,Src1,Src2RF[Dest] RF[Src1] OP
RF[Src2] OP Dest,Src1 RF[Dest] RF[Src1] OP
Bewerking OPAritmetische, logische en schuifoperaties
Keuze bewerkingen hangt af van frequentie gebruik in typische toepassingen
Op 1 of 2 operanden
Bewerking00
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Src2Src1Dest
Het programma
• Instructies
• Adresseermodi
Processorontwerp
CISC
IS-ontwerp
IS-schema
Datapad-componenten
ASM-schema
Controller
Datapad
• RISC
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-28 06–07
H01L1
Registerinstructies (type 00)
We kiezen voor ons toepassingsdomein
Bewerking00
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Src2Src1Dest
bit13 bit12 bit11 bit10 bit9 Bewerking
0 Schuiven (aritmetisch)
0 Naar rechts
n2 n1 n0RF[Dest] RF[Src1] >> n
1 Naar links
n2 n1 n0RF[Dest] RF[Src1] << n
Het programma
• Instructies
• Adresseermodi
Processorontwerp
CISC
IS-ontwerp
IS-schema
Datapad-componenten
ASM-schema
Controller
Datapad
• RISC
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-29 06–07
H01L1
Registerinstructies (type 00)
bit13 bit12 bit11 bit10 bit9 Bewerking
1 0 Aritmetische bewerking
0 Optelling/aftrekking
0 Dyadisch
0Add: RF[Dest] RF[Src1] + RF[Src2]
1Sub: RF[Dest] RF[Src1] − RF[Src2]
1 Monadisch
0 Inc: RF[Dest] RF[Src1] + 1
1 Dec: RF[Dest] RF[Src1] − 1
1 Vermenigvuldiging/deling
0 Dyadisch
0Mul: RF[Dest] RF[Src1] × RF[Src2]
1Div: RF[Dest] RF[Src1] / RF[Src2]
1 Monadisch
0Sqr: 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
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-30 06–07
H01L1
Registerinstructies (type 00)
bit1
3
bit1
2
bit1
1
bit1
0
bit9
Bewerking
1 1 Logische bewerking
0 0 0And: RF[Dest] RF[Src1] AND RF[Src2]
0 0 1Nand: RF[Dest] RF[Src1] NAND RF[Src2]
0 1 0Or: RF[Dest] RF[Src1] OR RF[Src2]
0 1 1Nor: RF[Dest] RF[Src1] NOR RF[Src2]
1 0 0Xor: RF[Dest] RF[Src1] XOR RF[Src2]
1 0 1Xnor: RF[Dest] RF[Src1] XNOR RF[Src2]
1 1 0Mask: RF[Dest] RF[Src1] AND 0x0001
1 1 1 Inv: RF[Dest] INV(RF[Src1])
Het programma
• Instructies
• Adresseermodi
Processorontwerp
CISC
IS-ontwerp
IS-schema
Datapad-componenten
ASM-schema
Controller
Datapad
• RISC
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-31 06–07
H01L1
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
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Src2Src1DestOp Mode
Het programma
• Instructies
• Adresseermodi
Processorontwerp
CISC
IS-ontwerp
IS-schema
Datapad-componenten
ASM-schema
Controller
Datapad
• RISC
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-32 06–07
H01L1
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
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-33 06–07
H01L1
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
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-34 06–07
H01L1
Verplaatsinstructies (type 01)
Toewijzing bits: Bit 13:
0 = Load1 = Store
Bit 12:0 = twee woorden (adres/constante
gebruikt)1 = één woord
Bits 11,10,9:000 = onmiddellijk adres (enkel bij Load) 001 = direct adres010 = indirect adres011 = relatief adres100 = geïndexeerd adres101 = kopieer register (dan ook bit 13 =
0)
Het programma
• Instructies
• Adresseermodi
Processorontwerp
CISC
IS-ontwerp
IS-schema
Datapad-componenten
ASM-schema
Controller
Datapad
• RISC
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-35 06–07
H01L1
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 + 1 terugkeeradres op LIFO metRF[Src1] het LIFO-
schrijfadresen (RF[Src1] − 1) het
leesadresRF[Src1] RF[Src1] + 1 verhoog LIFO-schrijfadresPC Adres spring naar subroutine
RTS (Op = 11): keer terug uit subroutine (1 woord)RF[Src1] RF[Src1] − 1 verminder LIFO-schrijfadres;
RF[Src1] bevat nu ook hetLIFO-adres van het
terugkeeradresPC Mem[RF[Src1]] lees terugkeeradres uit LIFO
Het programma
• Instructies
• Adresseermodi
Processorontwerp
CISC
IS-ontwerp
IS-schema
Datapad-componenten
ASM-schema
Controller
Datapad
• RISC
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-36 06–07
H01L1
Andere (1-woord) instructies (type 11)
Status = 1-bit register met resultaat vergelijking
bit13 bit12 bit11 bit10 bit9 Bewerking
0 0 X X X NOP (doe niets)
0 1 Zet op 0
0 X X CLR: RF[Dest] 0
1 X X ClrS: Status 0
1 0Vergelijk RF[Src1] en RF[Src2]IF … THEN Status 1 ELSE Status 0
0 0 0 GT: RF[Src1] > RF[Src2]
0 0 1 GE: RF[Src1] ≥ RF[Src2]
0 1 0 LT: RF[Src1] < RF[Src2]
0 1 1 LE: RF[Src1] ≤ RF[Src2]
1 0 0 EQ: RF[Src1] = RF[Src2]
1 0 1 NE: RF[Src1] ≠ RF[Src2]
1 1 XNiet gebruikt ongeldige instructie
1 1 X X X SetS: Status 1
Het programma
• Instructies
• Adresseermodi
Processorontwerp
CISC
IS-ontwerp
IS-schema
Datapad-componenten
ASM-schema
Controller
Datapad
• RISC
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-37 06–07
H01L1
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
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-38 06–07
H01L1
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
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-39 06–07
H01L1 Assembleertaal voor onze CISC
18 registerinstructiesAssembleertaal
Opcode D S1 S2 A Actie
ASR n 0000n2n1n0 X — RF[D] RF[S1] >> nASL n 0001n2n1n0 X — RF[D] RF[S1] << nADD D,S1,S2 0010000 — RF[D] RF[S1] + RF[S2]SUB D,S1,S2 0010001 — RF[D] RF[S1] − RF[S2]INC D,S1 0010010 X — RF[D] RF[S1] + 1DEC D,S1 0010011 X — RF[D] RF[S1] − 1MUL D,S1,S2 0010100 — RF[D] RF[S1] × RF[S2]DIV D,S1,S2 0010101 — RF[D] RF[S1] / RF[S2]SQR D,S1 0010110 X — RF[D] RF[S1] × RF[S1]ROOT D,S1 0010111 X — RF[D] Root(RF[S1])AND D,S1,S2 0011000 — RF[D] RF[S1] AND RF[S2]NAND D,S1,S2 0011001 — RF[D] RF[S1] NAND RF[S2]OR D,S1,S2 0011010 — RF[D] RF[S1] OR RF[S2]NOR D,S1,S2 0011011 — RF[D] RF[S1] NOR RF[S2]XOR D,S1,S2 0011100 — RF[D] RF[S1] XOR RF[S2]XNOR D,S1,S2 0011101 — RF[D] RF[S1] XNOR RF[S2]MASK D,S1 0011110 X — RF[D] RF[S1] AND 0x0001INV D,S1 0011111 X — RF[D] INV RF[S1]
Het programma
• Instructies
• Adresseermodi
Processorontwerp
CISC
IS-ontwerp
IS-schema
Datapad-componenten
ASM-schema
Controller
Datapad
• RISC
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-40 06–07
H01L1 Assembleertaal voor onze CISC
12 verplaatsinstructiesAssembleertaal Opcode D S1 S2 A Actie
LOAD D,#waarde0100000
X X RF[D] waarde
LOAD D,adres0100001
X X RF[D] Mem[adres]
LOAD D,(adres)0100010
X X 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,S10110001
X X Mem[adres] RF[S1]
STOR (adres),S10110010
X 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),S1
0111100
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
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-41 06–07
H01L1 Assembleertaal voor onze CISC
4 spronginstructies
Assembleertaal Opcode D S1 S2 A Actie
JMP adres 1000XXX X X X PC adres
CJMP adres 1001XXX X X X IF (Status=0) THEN (PC PC+1) ELSE (PC adres)
JSR adres,(S1) 1010XXX X X Mem[RF[S1]] PC+1;RF[S1] RF[S1]+1;PC adres
RTS (S1) 1011XXX X 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
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-42 06–07
H01L1 Assembleertaal voor onze CISC
10 andere instructies
44 instructies in totaal
Assembleertaal
Opcode
D S1 S2 A Action
NOP1100XXX
X X X — —
CLR D11010XX
X X — RF[D] 0
ClrS11011XX
X X X — Status 0
SetS1111XXX
X X X — Status 1
GT S1,S21110000
X —IF (RF[S1] > RF[S2]) THEN (Status 1) ELSE (Status
0)
GE S1,S21110001
X —IF (RF[S1] >= RF[S2]) THEN (Status 1) ELSE (Status
0)
LT S1,S21110010
X —IF (RF[S1] < RF[S2]) THEN (Status 1) ELSE (Status
0)
LE S1,S21110011
X —IF (RF[S1] <= RF[S2]) THEN (Status 1) ELSE (Status
0)
EQ S1,S21110100
X —IF (RF[S1] = RF[S2]) THEN (Status 1) ELSE (Status 0)
NE S1,S21110101
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
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-43 06–07
H01L1
Programmavoorbeeld
Bepaal de som, het minimum enhet maximum van 1024 getallen Programma in een hoog-niveau
taal: Min = MAXINTMax = 0Sum = 0FOR 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
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-44 06–07
H01L1
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 0x0402ORG PROGRAM
Het programma
• Instructies
• Adresseermodi
Processorontwerp
CISC
IS-ontwerp
IS-schema
Datapad-componenten
ASM-schema
Controller
Datapad
• RISC
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-45 06–07
H01L1
Programmavoorbeeld: assembleertaal
ORG PROGRAM
Initialisatie van de lus
Initialisatie van de variabelen
LOAD 0,#0xffff -- RF[0] 0xFFFF Min = MAXINT
CLR 1 -- RF[1] 0 Max = 0 CLR 2 -- RF[2] 0 Sum = 0 CLR 3 -- RF[3] 0 Count = 0 LOAD 4,#0x03ff -- RF[4] 1023D MaxCount
LOAD 5,#0x0003 -- RF[5] 3D 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
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-46 06–07
H01L1
Programmavoorbeeld: assembleertaal
ORG PROGRAM LOAD 0,#0xffff -- RF[0] 0xFFFF Min = MAXINT CLR 1 -- RF[1] 0 Max = 0 CLR 2 -- RF[2] 0 Sum = 0 CLR 3 -- RF[3] 0 Count = 0 LOAD 4,#0x03ff -- RF[4] 1023D MaxCount LOAD 5,#0x0003 -- RF[5] 3D 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 1 if RF[6] RF[1] CJMP NEXT -- PC NEXT if Status = 1 COPY 1,6 -- RF[1] RF[6]NEXT:NEXT: GE 6,0 -- Status 1 if RF[6] RF[0] CJMP CTU -- PC CTU if 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
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-47 06–07
H01L1
Programmavoorbeeld: assembleertaal
ORG PROGRAM LOAD 0,#0xffff -- RF[0] 0xFFFF Min = MAXINT CLR 1 -- RF[1] 0 Max = 0 CLR 2 -- RF[2] 0 Sum = 0 CLR 3 -- RF[3] 0 Count = 0 LOAD 4,#0x03ff -- RF[4] 1023D MaxCount LOAD 5,#0x0003 -- RF[5] 3D 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 1 if RF[6] RF[1] CJMP NEXT -- PC NEXT if Status = 1 COPY 1,6 -- RF[1] RF[6]NEXT: GE 6,0 -- Status 1 if RF[6] RF[0] CJMP CTU -- PC CTU if 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 1 if RF[3] RF[4] CJMP BODY -- PC BODY if Status = 1
Test of lus opnieuw moet uitgevoerd wordenVerhoog 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
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-48 06–07
H01L1
Programmavoorbeeld: assembleertaal
ORG PROGRAM LOAD 0,#0xffff -- RF[0] 0xFFFF Min =
MAXINT CLR 1 -- RF[1] 0 Max = 0 CLR 2 -- RF[2] 0 Sum = 0 CLR 3 -- RF[3] 0 Count = 0 LOAD 4,#0x03ff -- RF[4] 1023D MaxCount LOAD 5,#0x0003 -- RF[5] 3D 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 1 if RF[6] RF[1] CJMP NEXT -- PC NEXT if Status = 1 COPY 1,6 -- RF[1] RF[6]NEXT: GE 6,0 -- Status 1 if RF[6] RF[0] CJMP CTU -- PC CTU if 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 1 if RF[3] RF[4] CJMP BODY -- PC BODY if 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
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-49 06–07
H01L1
Programmavoorbeeld: assembleertaal
ORG PROGRAM LOAD 0,#0xffff -- RF[0] 0xFFFF Min =
MAXINT CLR 1 -- RF[1] 0 Max = 0 CLR 2 -- RF[2] 0 Sum = 0 CLR 3 -- RF[3] 0 Count = 0 LOAD 4,#0x03ff -- RF[4] 1023D MaxCount LOAD 5,#0x0003 -- RF[5] 3D 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 1 if RF[6] RF[1] CJMP NEXT -- PC NEXT if Status = 1 COPY 1,6 -- RF[1] RF[6]NEXT: GE 6,0 -- Status 1 if RF[6] RF[0] CJMP CTU -- PC CTU if 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
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-50 06–07
H01L1
Programmavoorbeeld: machinetaal
4005 11010XX001XXXXXX -- CLR 14006 11010XX010XXXXXX -- CLR 24007 11010XX011XXXXXX -- CLR 34008 0100000100XXXXXX -- LOAD 4,#0x03FF4009 0000001111111111400A 0100000101XXXXXX -- LOAD 5,#0x0003400B 0000000000000011400C 0101010110101XXX -- LOAD 6,(5) BODY400D 0010000010010110 -- ADD 2,2,6400E 1110011XXX110001 -- LE 6,1400F 1001XXXXXXXXXXXX -- CJMP NEXT4010 01000000000100104011 01XX101001110XXX -- COPY 1,64012 1110001110000XXX -- GE 6,0 NEXT4013 1001XXXXXXXXXXXX -- CJMP CTU4014 01000000000101104015 01XX101000110XXX -- COPY 0,64016 0010010011011XXX -- INC 3,3 CTU4017 0010010101101XXX -- INC 5,54018 1110011XXX011100 -- LE 3,44019 1001XXXXXXXXXXXX -- CJMP BODY401A 0100000000001100
4004 11111111111111114003 0100000000XXXXXX -- LOAD 0,#0xFFFF
…
Het programma
• Instructies
• Adresseermodi
Processorontwerp
CISC
IS-ontwerp
IS-schema
Datapad-componenten
ASM-schema
Controller
Datapad
• RISC
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-51 06–07
H01L1
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
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-52 06–07
H01L1
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
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-53 06–07
H01L1 Aritmetisch schuiven naar rechts
IR Mem[PC]PC PC+1
Type3 2 1 0
Op11 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
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-54 06–07
H01L1 Aritmetisch schuiven naar links
IR Mem[PC]PC PC+1
Type3 2 1 0
Op11 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
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-55 06–07
H01L1
Dyadische optelling
IR Mem[PC]PC PC+1
Type3 2 1 0
Registerinstructies
RF[Dest] RF[Src1] + RF[Src2]Op11 10 01 00
Dyadische optelling/aftrekking
B11,1011 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
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-56 06–07
H01L1
Laad constante
IR Mem[PC]PC PC+1
Type3 2 1 0
RF[Dest] Mem[PC]PC PC+1
L*/S1 0
2-woordinstructie
Load
000001010011100101
Onmiddellijk
Load/store
Reg1 0
Het programma
• Instructies
• Adresseermodi
Processorontwerp
CISC
IS-ontwerp
IS-schema
Datapad-componenten
ASM-schema
Controller
Datapad
• RISC
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-57 06–07
H01L1
Laad direct uit geheugen
RF[Dest] Mem[Mem[PC]]PC PC+1
Direct
IR Mem[PC]PC PC+1
Type3 2 1 0
L*/S1 0
2-woordinstructie
Load
000001010011100101
Load/store
Reg1 0
Het programma
• Instructies
• Adresseermodi
Processorontwerp
CISC
IS-ontwerp
IS-schema
Datapad-componenten
ASM-schema
Controller
Datapad
• RISC
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-58 06–07
H01L1
Laad indirect
RF[Dest] Mem[Mem[Mem[PC]]]PC PC+1
Indirect
IR Mem[PC]PC PC+1
Type3 2 1 0
L*/S1 0
2-woordinstructie
Load
000001010011100101
Load/store
Reg1 0
Het programma
• Instructies
• Adresseermodi
Processorontwerp
CISC
IS-ontwerp
IS-schema
Datapad-componenten
ASM-schema
Controller
Datapad
• RISC
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-59 06–07
H01L1
Laad register-indirect
RF[Dest] Mem[RF[Src1]]
1-woordinstructie
Indirect
IR Mem[PC]PC PC+1
Type3 2 1 0
L*/S1 0
Load
000001010011100101
Load/store
Reg1 0
Het programma
• Instructies
• Adresseermodi
Processorontwerp
CISC
IS-ontwerp
IS-schema
Datapad-componenten
ASM-schema
Controller
Datapad
• RISC
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-60 06–07
H01L1
Laad register-relatief
RF[Dest] Mem[RF[Src1]+Src2]
Relatief1-woordinstructie
IR Mem[PC]PC PC+1
Type3 2 1 0
L*/S1 0
Load
000001010011100101
Load/store
Reg1 0
Het programma
• Instructies
• Adresseermodi
Processorontwerp
CISC
IS-ontwerp
IS-schema
Datapad-componenten
ASM-schema
Controller
Datapad
• RISC
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-61 06–07
H01L1
Laad geïndexeerd
RF[Dest] Mem[Mem[PC]+RF[Src1]]PC PC+1
Geïndexeerd
IR Mem[PC]PC PC+1
Type3 2 1 0
L*/S1 0
2-woordinstructie
Load
000001010011100101
Load/store
Reg1 0
Het programma
• Instructies
• Adresseermodi
Processorontwerp
CISC
IS-ontwerp
IS-schema
Datapad-componenten
ASM-schema
Controller
Datapad
• RISC
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-62 06–07
H01L1
Kopieer register
RF[Dest] RF[Src1]
Kopieer
Analoog voor Store
1-woordinstructie
IR Mem[PC]PC PC+1
Type3 2 1 0
L*/S1 0
Load
000001010011100101
Load/store
Reg1 0
Het programma
• Instructies
• Adresseermodi
Processorontwerp
CISC
IS-ontwerp
IS-schema
Datapad-componenten
ASM-schema
Controller
Datapad
• RISC
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-63 06–07
H01L1
Onconditionele sprong
PC Mem[PC]Op
3 2 1 0
Onconditionele sprong
Sprong
IR Mem[PC]PC PC+1
Type3 2 1 0
Het programma
• Instructies
• Adresseermodi
Processorontwerp
CISC
IS-ontwerp
IS-schema
Datapad-componenten
ASM-schema
Controller
Datapad
• RISC
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-64 06–07
H01L1
Conditionele sprong
PC PC+1
Conditionele sprong
Status1 0
Geen sprong
Op3 2 1 0
Sprong
IR Mem[PC]PC PC+1
Type3 2 1 0
Het programma
• Instructies
• Adresseermodi
Processorontwerp
CISC
IS-ontwerp
IS-schema
Datapad-componenten
ASM-schema
Controller
Datapad
• RISC
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-65 06–07
H01L1
Conditionele sprong
PC Mem[PC]
Sprong
Conditionele sprong
Status1 0
Op3 2 1 0
Sprong
IR Mem[PC]PC PC+1
Type3 2 1 0
Het programma
• Instructies
• Adresseermodi
Processorontwerp
CISC
IS-ontwerp
IS-schema
Datapad-componenten
ASM-schema
Controller
Datapad
• RISC
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-66 06–07
H01L1
Sprong naar subroutine
JSR
Mem[RF[Src1]] PC+1RF[Src1] RF[Src1]+1
PC Mem[PC]Op
3 2 1 0
Sprong
IR Mem[PC]PC PC+1
Type3 2 1 0
Het programma
• Instructies
• Adresseermodi
Processorontwerp
CISC
IS-ontwerp
IS-schema
Datapad-componenten
ASM-schema
Controller
Datapad
• RISC
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-67 06–07
H01L1
Terugkeer uit subroutine
RF[Src1] RF[Src1]−1PC Mem[RF[Src1]]
RTS
Op3 2 1 0
Sprong
IR Mem[PC]PC PC+1
Type3 2 1 0
Het programma
• Instructies
• Adresseermodi
Processorontwerp
CISC
IS-ontwerp
IS-schema
Datapad-componenten
ASM-schema
Controller
Datapad
• RISC
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-68 06–07
H01L1
NOP & Clear
Op3 2 1 0
NOP
Andere
IR Mem[PC]PC PC+1
Type3 2 1 0
Clearb111 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
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-69 06–07
H01L1
Zet status, incl. vergelijkingen
Zet Status
Status 1Op
3 2 1 0
Andere
IR Mem[PC]PC PC+1
Type3 2 1 0
000001010011100101
Vergelijk
GT
IF (RF[Src1] > RF[Src2])THEN Status 1ELSE Status 0
Het programma
• Instructies
• Adresseermodi
Processorontwerp
CISC
IS-ontwerp
IS-schema
Datapad-componenten
ASM-schema
Controller
Datapad
• RISC
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-70 06–07
H01L1
Ontwerp programmeerbare processoren
Het programma
Processorontwerp Complex Instruction Set Computer
Ontwerp instructieset Instructieset-stroomschemaAllocatie 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
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-71 06–07
H01L1 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
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-72 06–07
H01L1 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 maar10 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
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-73 06–07
H01L1 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
RF8×16
AR Status
Comp ALU Shift
Geheugen64K×16
Het programma
• Instructies
• Adresseermodi
Processorontwerp
CISC
IS-ontwerp
IS-schema
Datapad-componenten
ASM-schema
Controller
Datapad
• RISC
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-74 06–07
H01L1
Ontwerp programmeerbare processoren
Het programma
Processorontwerp Complex Instruction Set Computer
Ontwerp instructieset Instructieset-stroomschema Allocatie datapadcomponentenASM-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
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-75 06–07
H01L1
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
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-76 06–07
H01L1 Aritmetisch schuiven naar rechts
IR Mem[PC]PC PC+1
Type3 2 1 0
Op11 10 01 00
Registerinstructies
RF[Dest] RF[Src1] >> n
Schuiven naar rechts
2 klokcycliHet programma
• Instructies
• Adresseermodi
Processorontwerp
CISC
IS-ontwerp
IS-schema
Datapad-componenten
ASM-schema
Controller
Datapad
• RISC
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-77 06–07
H01L1
Laad constante
IR Mem[PC]PC PC+1
Type3 2 1 0
RF[Dest] Mem[PC]PC PC+1
L*/S1 0
2-woordinstructie
Load
000001010011100101
Onmiddellijk
Load/store
Reg1 0
2 klokcycliHet programma
• Instructies
• Adresseermodi
Processorontwerp
CISC
IS-ontwerp
IS-schema
Datapad-componenten
ASM-schema
Controller
Datapad
• RISC
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-78 06–07
H01L1
Laad direct uit geheugen
RF[Dest] Mem[Mem[PC]]PC PC+1
Direct
IR Mem[PC]PC PC+1
Type3 2 1 0
L*/S1 0
2-woordinstructie
Load
000001010011100101
Load/store
Reg1 0
AR Mem[PC]PC PC+1
RF[Dest] Mem[AR]
3 klokcycliHet programma
• Instructies
• Adresseermodi
Processorontwerp
CISC
IS-ontwerp
IS-schema
Datapad-componenten
ASM-schema
Controller
Datapad
• RISC
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-79 06–07
H01L1
Laad indirect
RF[Dest] Mem[Mem[Mem[PC]]]PC PC+1
Indirect
IR Mem[PC]PC PC+1
Type3 2 1 0
L*/S1 0
2-woordinstructie
Load
000001010011100101
Load/store
Reg1 0
AR Mem[PC]PC PC+1
AR Mem[AR]
RF[Dest] Mem[AR]
4 klokcycliHet programma
• Instructies
• Adresseermodi
Processorontwerp
CISC
IS-ontwerp
IS-schema
Datapad-componenten
ASM-schema
Controller
Datapad
• RISC
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-80 06–07
H01L1
Sprong naar subroutine
JSR
Mem[RF[Src1]] PC+1RF[Src1] RF[Src1]+1
PC Mem[PC]Op
3 2 1 0
Sprong
IR Mem[PC]PC PC+1
Type3 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]] PCRF[Src1] RF[Src1]+1
PC AR
Het programma
• Instructies
• Adresseermodi
Processorontwerp
CISC
IS-ontwerp
IS-schema
Datapad-componenten
ASM-schema
Controller
Datapad
• RISC
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-81 06–07
H01L1
Ontwerp programmeerbare processoren
Het programma
Processorontwerp Complex Instruction Set Computer
Ontwerp instructieset Instructieset-stroomschema Allocatie datapadcomponenten ASM-schemaOntwerp controller Ontwerp datapad
Reduced Instruction Set Computer
Het programma
• Instructies
• Adresseermodi
Processorontwerp
CISC
IS-ontwerp
IS-schema
Datapad-componenten
ASM-schema
Controller
Datapad
• RISC
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-82 06–07
H01L1
Ontwerp CISC-controller
Vertrek van de algemene FSMD-controller
Nextstatelogic
Out-put
logic
CI
CI
SS
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
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-83 06–07
H01L1
Ontwerp CISC-controller
Nextstatelogic
Out-put
logic
CI
CI
SS
SS
MUX
LIFO
PC
INC CS
CO
Algoritme niet vast relatie (PCnext state & output) niet vast
bijkomende vertaalstap via Programmageheugen en IRHet programma
• Instructies
• Adresseermodi
Processorontwerp
CISC
IS-ontwerp
IS-schema
Datapad-componenten
ASM-schema
Controller
Datapad
• RISC
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-84 06–07
H01L1
Ontwerp CISC-controller
Nextstatelogic
Out-put
logic
CI
CI
SS
SS
MUX
LIFO
INC CS
CO
PC Mem IR
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
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-85 06–07
H01L1
Ontwerp CISC-controller
Nextstate
&out-putFSM
CI SS
MUX
LIFO
INC CS
CO
PC Mem IR
Kan een complete FSM-controller zijn met zijn eigen μPC, μIR en μprogramma-
ROM
Sprongadressen komen niet uit next state FSM
maaruit programmageheugen
Het programma
• Instructies
• Adresseermodi
Processorontwerp
CISC
IS-ontwerp
IS-schema
Datapad-componenten
ASM-schema
Controller
Datapad
• RISC
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-86 06–07
H01L1
Ontwerp CISC-controller
Nextstate
&out-putFSM
CI SS
MUX
LIFO
INC CS
CO
PC Mem IR
gewoonlijk zelfde (extern) geheugen voor programma &
data
Het programma
• Instructies
• Adresseermodi
Processorontwerp
CISC
IS-ontwerp
IS-schema
Datapad-componenten
ASM-schema
Controller
Datapad
• RISC
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-87 06–07
H01L1
Ontwerp CISC-controller
Nextstate
&out-putFSM
CI SS
MUX
LIFO
PC
INC
CS
CO
IR
AD
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
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-88 06–07
H01L1
Ontwerp CISC-controller
Nextstate
&out-putFSM
CI SS
MUX PC
INC
CS
CO
IR
AD
Mem(prog. & data)
inclusief LIFO
Het programma
• Instructies
• Adresseermodi
Processorontwerp
CISC
IS-ontwerp
IS-schema
Datapad-componenten
ASM-schema
Controller
Datapad
• RISC
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-89 06–07
H01L1
Ontwerp programmeerbare processoren
Het programma
Processorontwerp Complex Instruction Set Computer
Ontwerp instructieset Instructieset-stroomschema Allocatie datapadcomponenten ASM-schema Ontwerp controllerOntwerp datapad
Reduced Instruction Set Computer
Het programma
• Instructies
• Adresseermodi
Processorontwerp
CISC
IS-ontwerp
IS-schema
Datapad-componenten
ASM-schema
Controller
Datapad
• RISC
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-90 06–07
H01L1
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 zijnExtra componenten herbegin vanaf de
allocatie van de componentenExtra 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
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-91 06–07
H01L1
RF8×16
AR Status
Shift ALU Comp
Mem (prog. & data)
AD
Ontwerp CISC-datapad
Dit hebben we na de allocatievan de datapadcomponenten
Het programma
• Instructies
• Adresseermodi
Processorontwerp
CISC
IS-ontwerp
IS-schema
Datapad-componenten
ASM-schema
Controller
Datapad
• RISC
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-92 06–07
H01L1 ASM-schema: schuiven naar rechts
IR Mem[PC]PC PC+1
Type3 2 1 0
Op11 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
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-93 06–07
H01L1
RF8×16
AR Status
Shift ALU Comp
Mem (prog. & data)
AD
Ontwerp CISC-datapad
O1
R
Het programma
• Instructies
• Adresseermodi
Processorontwerp
CISC
IS-ontwerp
IS-schema
Datapad-componenten
ASM-schema
Controller
Datapad
• RISC
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-94 06–07
H01L1 ASM-schema: dyadische optelling
IR Mem[PC]PC PC+1
Type3 2 1 0
RF[Dest] RF[Src1] + RF[Src2]Op11 10 01 00
B11,1011 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
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-95 06–07
H01L1
RF8×16
AR Status
Shift ALU Comp
Mem (prog. & data)
AD
Ontwerp CISC-datapad
O1
R
O2
Het programma
• Instructies
• Adresseermodi
Processorontwerp
CISC
IS-ontwerp
IS-schema
Datapad-componenten
ASM-schema
Controller
Datapad
• RISC
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-96 06–07
H01L1
ASM-schema: laad constante
IR Mem[PC]PC PC+1
Type3 2 1 0
RF[Dest] Mem[PC]PC PC+1
L’/S1 0
000001010011100101
OnmiddellijkReg1 0
Het programma
• Instructies
• Adresseermodi
Processorontwerp
CISC
IS-ontwerp
IS-schema
Datapad-componenten
ASM-schema
Controller
Datapad
• RISC
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-97 06–07
H01L1
RF8×16
AR Status
Shift ALU Comp
Mem (prog. & data)
AD
Ontwerp CISC-datapad
O1
R
O2
Het programma
• Instructies
• Adresseermodi
Processorontwerp
CISC
IS-ontwerp
IS-schema
Datapad-componenten
ASM-schema
Controller
Datapad
• RISC
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-98 06–07
H01L1
AR Mem[PC]PC PC+1
RF[Dest] Mem[AR]
ASM-schema: laad direct uit geheugen
Direct
IR Mem[PC]PC PC+1
Type3 2 1 0
L’/S1 0
000001010011100101
Reg1 0
Het programma
• Instructies
• Adresseermodi
Processorontwerp
CISC
IS-ontwerp
IS-schema
Datapad-componenten
ASM-schema
Controller
Datapad
• RISC
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-99 06–07
H01L1
RF8×16
AR Status
Shift ALU Comp
Mem (prog. & data)
AD
Ontwerp CISC-datapad
O1
R
O2
Het programma
• Instructies
• Adresseermodi
Processorontwerp
CISC
IS-ontwerp
IS-schema
Datapad-componenten
ASM-schema
Controller
Datapad
• RISC
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-100 06–07
H01L1 ASM-schema: laad geïndexeerd
Geïndexeerd
IR Mem[PC]PC PC+1
Type3 2 1 0
L’/S1 0
000001010011100101
Reg1 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
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-101 06–07
H01L1
RF8×16
AR Status
Shift ALU Comp
Mem (prog. & data)
AD
Ontwerp CISC-datapad
O1
R
O2
Het programma
• Instructies
• Adresseermodi
Processorontwerp
CISC
IS-ontwerp
IS-schema
Datapad-componenten
ASM-schema
Controller
Datapad
• RISC
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-102 06–07
H01L1
ASM-schema: kopieer register
RF[Dest] RF[Src1]
Kopieer
IR Mem[PC]PC PC+1
Type3 2 1 0
L’/S1 0
000001010011100101
Reg1 0
Het programma
• Instructies
• Adresseermodi
Processorontwerp
CISC
IS-ontwerp
IS-schema
Datapad-componenten
ASM-schema
Controller
Datapad
• RISC
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-103 06–07
H01L1
RF8×16
AR Status
Shift ALU Comp
Mem (prog. & data)
AD
Ontwerp CISC-datapad
O1
R
O2
Het programma
• Instructies
• Adresseermodi
Processorontwerp
CISC
IS-ontwerp
IS-schema
Datapad-componenten
ASM-schema
Controller
Datapad
• RISC
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-104 06–07
H01L1
AR Mem[PC]PC PC+1
Mem[AR] RF[Src1]
ASM-schema: stockeer direct
Direct
IR Mem[PC]PC PC+1
Type3 2 1 0
L’/S1 0
000001010011100101
Reg1 0
Het programma
• Instructies
• Adresseermodi
Processorontwerp
CISC
IS-ontwerp
IS-schema
Datapad-componenten
ASM-schema
Controller
Datapad
• RISC
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-105 06–07
H01L1
RF8×16
AR Status
Shift ALU Comp
Mem (prog. & data)
AD
Ontwerp CISC-datapad
O1
R
O2
Het programma
• Instructies
• Adresseermodi
Processorontwerp
CISC
IS-ontwerp
IS-schema
Datapad-componenten
ASM-schema
Controller
Datapad
• RISC
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-106 06–07
H01L1
ASM-schema: sprong naar subroutine
JSR
Op3 2 1 0
IR Mem[PC]PC PC+1
Type3 2 1 0
AR Mem[PC]PC PC+1
Mem[RF[Src1]] PCRF[Src1] RF[Src1]+1
PC AR
Het programma
• Instructies
• Adresseermodi
Processorontwerp
CISC
IS-ontwerp
IS-schema
Datapad-componenten
ASM-schema
Controller
Datapad
• RISC
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-107 06–07
H01L1
Aanpassing CISC-controller
Nextstate
&out-putFSM
CI SS
MUX PC
INC
CS
CO
IR
AD
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
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-108 06–07
H01L1
RF8×16
AR Status
Shift ALU Comp
Mem (prog. & data)
AD
Ontwerp CISC-datapad
O1
R
O2
Mem[RF[Src1]] PCRF[Src1] RF[Src1]+1
PC AR
Onmogelijk:extra verbinding
ofextra klokcyclus
Het programma
• Instructies
• Adresseermodi
Processorontwerp
CISC
IS-ontwerp
IS-schema
Datapad-componenten
ASM-schema
Controller
Datapad
• RISC
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-109 06–07
H01L1
ASM-schema: vergelijk
Op3 2 1 0
IR Mem[PC]PC PC+1
Type3 2 1 0
000001010011100101
GT
IF (RF[Src1] > RF[Src2])THEN Status 1ELSE Status 0
Het programma
• Instructies
• Adresseermodi
Processorontwerp
CISC
IS-ontwerp
IS-schema
Datapad-componenten
ASM-schema
Controller
Datapad
• RISC
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-110 06–07
H01L1
RF8×16
AR
Shift ALU
Mem (prog. & data)
AD
Ontwerp CISC-datapad
O1
R
O2Comp
Status
Etc., etc., etc. …
Het programma
• Instructies
• Adresseermodi
Processorontwerp
CISC
IS-ontwerp
IS-schema
Datapad-componenten
ASM-schema
Controller
Datapad
• RISC
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-111 06–07
H01L1
Ontwerp programmeerbare processoren
Het programma
ProcessorontwerpComplex Instruction Set Computer Reduced Instruction Set Computer
Het programma
• Instructies
• Adresseermodi
Processorontwerp
• CISC
RISC
Program-meerbare
processoren
KATHOLIEKE UNIVERSITEIT
6-112 06–07
H01L1
Ontwerp RISC
Ongeveer zoals CISC maar hoge klokfrequentie zeer belangrijk zo veel mogelijk pipeliningPipelining 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 instructieLees instructie
Lees operand(en) of
adressen
Lees operand(en) of
adressen
Bewerk of bereken adres
Bewerk of bereken adres
Stockeer resultaatStockeer resultaat
I1 I2 I3 I4 I5 I1 I2 I3 I4 I1 I2 I3 I1 I2
Het programma
• Instructies
• Adresseermodi
Processorontwerp
• CISC
RISC