18
Άσκηση 12: Ο Απλός Υπολογιστής στον Προσομοιωτή (μέρος Β’) 012c (Άσκηση 12) – 25 - 29 Ιαν. 2021 – Μανόλης Κατεβαίνης © copyright University of Crete – https://www.csd.uoc.gr/~hy120/20f/copyright.html Πανεπ. Κρήτης – Τμ. Επ. Υπολογιστών – ΗΥ-120 Ψηφιακή Σχεδίαση

Τμήμα Επιστήμης Υπολογιστών - Άσκηση 12: Ο Απλός ...hy120/20f/12c_ex12_cktv.pdfΠαράδειγμα 2: Βρόχος διπλασιασμού στοιχείων

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Τμήμα Επιστήμης Υπολογιστών - Άσκηση 12: Ο Απλός ...hy120/20f/12c_ex12_cktv.pdfΠαράδειγμα 2: Βρόχος διπλασιασμού στοιχείων

Άσκηση12:ΟΑπλόςΥπολογιστήςστονΠροσομοιωτή

(μέροςΒ’)

012c(Άσκηση12) – 25- 29 Ιαν.2021– ΜανόληςΚατεβαίνης

©copyrightUniversityofCrete– https://www.csd.uoc.gr/~hy120/20f/copyright.html

Πανεπ.Κρήτης– Τμ.Επ.Υπολογιστών– ΗΥ-120ΨηφιακήΣχεδίαση

Page 2: Τμήμα Επιστήμης Υπολογιστών - Άσκηση 12: Ο Απλός ...hy120/20f/12c_ex12_cktv.pdfΠαράδειγμα 2: Βρόχος διπλασιασμού στοιχείων

Προοίμιο:Πρωτοβουλίες/παραλλαγέςευπρόσδεκτες• ΣτηνεκφώνησηαυτήπαρουσιάζεταιέναςδυνατόςτρόποςναφτιαχτείέναςαπλόςυπολογιστήςσανεκείνοντουμαθήματοςκαιτουΕργαστηρίουστοCircuitVerse,όμωςπροφανώςυπάρχουνκιάλλοι

• Είστεευπρόσδεκτοινακάνετετηδικήσαςπαραλλαγήηπρόταση• Καλέςιδέεςαπόδικέςσαςπαραλλαγές/προτάσειςθαεξεταστούνγιάπιθανήενσωμάτωσηστηνεκφώνησητηςεπόμενηςχρονιάς

• Καινοτομίεςαπόπλευράςσαςθαεκτιμηθούνβαθμολογικάθετικά(αρκείηπαραλλαγήσαςναμηναφαιρείαπότονυπολογιστήκάποιαουσιαστικήδυνατότητα,όπωςδομέςδεδομένων,επιστροφήαπόδιαδικασίες,κλπ)

• ΗεντολήJumpεδώέχειδιαφορετικόνOpcodeαπ’ό,τιείχεστηνΆσκ.11• Ηεντολήjumpx δεν ανήκειστηνομάδα“Indexed αριθμητικής/ld/st/inp”

2012c-Άσκηση12:οΑπλόςΥπολογιστήςστονΠροσομοιωτή(μέροςΒ')-ΗΥ-120©U.Crete

Page 3: Τμήμα Επιστήμης Υπολογιστών - Άσκηση 12: Ο Απλός ...hy120/20f/12c_ex12_cktv.pdfΠαράδειγμα 2: Βρόχος διπλασιασμού στοιχείων

ΣημείωσηγιάτονέοUserInterfaceτουCircuitVerse• Τοcircuitverse.org/simulator απέκτησενέοUserInterface• Μοιάζειναέχει(τουλάχιστον)έναbugστοSaveOffline– ότανέχειπολλάprojectsαποθηκευμένακαιγεμίζεικατακόρυφατομενούOpenOffline,(α)χαλάειτοUI,και (β)κάθενέοsaveσβήνεικαι πανωγράφειτοτελευταίοproject.Επίσης,δενδουλεύειτοdeletepreviouslysavedproject(γιάναξαλαφρώσειτοσχετικόμενού)

• ΤοπαλαιόUserInterface,πουμοιάζειναδουλεύεικαλά,βρισκεταιστο:https://circuitverse.org/simulator_old– οιSplittersστηνεδώεκφώνησηείναιαπότοπαλαιόUserInterf.καιαριθμούνταbitsλανθασμένα(+1στηνθέσητουτελικούbit)– καιτοfontσταPropertiesείναιμαύροπάνωσεμαύροL

3012c-Άσκηση12:οΑπλόςΥπολογιστήςστονΠροσομοιωτή(μέροςΒ')-ΗΥ-120©U.Crete

Page 4: Τμήμα Επιστήμης Υπολογιστών - Άσκηση 12: Ο Απλός ...hy120/20f/12c_ex12_cktv.pdfΠαράδειγμα 2: Βρόχος διπλασιασμού στοιχείων
Page 5: Τμήμα Επιστήμης Υπολογιστών - Άσκηση 12: Ο Απλός ...hy120/20f/12c_ex12_cktv.pdfΠαράδειγμα 2: Βρόχος διπλασιασμού στοιχείων

ΑλλαγέςαπόΆσκ.11:μόνονεπάνω,δεξιά&αριστερά• Δεξιάπλευρά,πάνωαπότονΣυσσωρευτή(ACC):– accLd:γράφουμεστονACCσεόλεςτιςάλλεςπεριπτώσειςεκτός:st/inp(dmWr),CTI (br/jmp),καιτονπρώτοκύκλοτωνIndexed– condition:συνδυαστικήσυνάρτησητουπεριεχομένουτουACC:• τοaluMd επιλέγει:=accZero,ή=accSign,ήτααντίθετάτους,ή=1

• Αριστερήπλευρά,πάνωαπότηΜνήμηΕντολών(IMEM):– flip-flopκατάστασηςS• Xfirst:ανάβει(μόνον)κατάτον1ο κύκλοτωνIndexed ALU/ld/st/inp• Xsecond:ανάβει(μόνο)τον2ο κύκλοτωνIndexed ALU/ld/st/inp

– busSrc:ότανXfirst,τοαλλάζουμεσε01(δηλ.dmRd), μέσωmux– pcMd,pcLd,addrMd:νέες,ενημερωμένεςσυναρτήσεις

5012c-Άσκηση12:οΑπλόςΥπολογιστήςστονΠροσομοιωτή(μέροςΒ')-ΗΥ-120©U.Crete

Page 6: Τμήμα Επιστήμης Υπολογιστών - Άσκηση 12: Ο Απλός ...hy120/20f/12c_ex12_cktv.pdfΠαράδειγμα 2: Βρόχος διπλασιασμού στοιχείων

ΣήματαελέγχουACC&BUS• busSrc_Effective:είτετοbusSrc όπωςτοδίνειηεντολή,είτεοκωδικός01πουτονχρειαζό-μαστετον1ο κύκλοτωνεντολώνIndexed

• dmWr:γράφουνστημνήμηδεδομένωνμόνονοιεντολέςstore καιinput,δηλαδήαυτέςπουανάβουντοacc2bus ήτοext2bus

• accLd =not (dmWr or CTI or Xfirst)– γράφουμεστονACC σεόλεςτιςάλλεςπεριπτώ-σειςεκτόςstore/inp (dmWr), εκτόςbranch/jmp(CTI),καιεκτόςτονπρώτοκύκλοτωνIndexed

• condition:συνδυαστικήσυνάρτησητουΣυσσωρευτή(ACC) καιτουaluMd– βλ.επόμενηδιαφάνεια

6012c-Άσκηση12:οΑπλόςΥπολογιστήςστονΠροσομοιωτή(μέροςΒ')-ΗΥ-120©U.Crete

Page 7: Τμήμα Επιστήμης Υπολογιστών - Άσκηση 12: Ο Απλός ...hy120/20f/12c_ex12_cktv.pdfΠαράδειγμα 2: Βρόχος διπλασιασμού στοιχείων

Condition: συνθήκηδιακλαδώσεων• ΤόσοηALUόσοκαιτοCondition,ωςσυνδυαστικάκυκλώματα,πάντακάτιυπολογίζουνκαθένα,αλλά:– ΤοConditionχρησιμοποιείταιμόνονότανCTI==1,αλλάτότεaccLd==0καιηέξοδοςτηςALUαγνοείται

– ΗέξοδοςτηςALUχρησιμοποιείταιμόνονότανaccLd==1,αλλάτότεCTI==0καιάρατοConditionαγνοείται

• ΤοMSbitτουaluMd,ότανείναι1,προκαλείcond=1ανεξαρτήτωςτιμήςτουACC,άραχρησιμεύειγιάταάλματαχωρίςσυνθήκη(jump καιjumpx)– Οιjmp &jmpx εκτελούνταιμεακριβώςτονίδιοτρόποκαιοιδύο,εκτόςim2bus γιάjmp,ενώdmRd γιάjmpx

• ΤομεσαίοbitτουaluMd επιλέγει,μέσωπολυπλέ-κτη,ανθακοιτάξουμετοaccZero ήτοaccSign

• ΤοLSbitτουaluMd επιλέγειανθαθεωρηθείεπιτυ-χίαηθετικήήηαρνητικήπολικότητατωνπαραπάνω

7012c-Άσκηση12:οΑπλόςΥπολογιστήςστονΠροσομοιωτή(μέροςΒ')-ΗΥ-120©U.Crete

Page 8: Τμήμα Επιστήμης Υπολογιστών - Άσκηση 12: Ο Απλός ...hy120/20f/12c_ex12_cktv.pdfΠαράδειγμα 2: Βρόχος διπλασιασμού στοιχείων

Opcode1bit 1bit 2bits 1bit 3bits

X CTI busSrc passB aluMode

8012c-Άσκηση12:οΑπλόςΥπολογιστήςστονΠροσομοιωτή(μέροςΒ')-ΗΥ-120©U.Crete

IndexedALU/load/store/inp(indirectDMEMaccess)

ControlTransfer

Instruction(branch/jump(x))

aluMd ALUout cond000 0 A&B =accZero001 1 A|B = ~accZero010 2 A+B =accSign011 3 ??? =~accSign100 4 A&(~B) alwaystrue101 5 A|(~B) alwaystrue110 6 A- B alwaystrue111 7 SLT alwaystrue(ίδιαμεCircuitVrs)

busSrc enable00 0 im2bus01 1 dmRd10 2 acc2bus11 3 ext2bus

Page 9: Τμήμα Επιστήμης Υπολογιστών - Άσκηση 12: Ο Απλός ...hy120/20f/12c_ex12_cktv.pdfΠαράδειγμα 2: Βρόχος διπλασιασμού στοιχείων

9012c-Άσκηση12:οΑπλόςΥπολογιστήςστονΠροσομοιωτή(μέροςΒ')-ΗΥ-120©U.Crete

1b 1b 2b 1b 3bits

X CTI busSrc passB aluMode

ΚυρίωςΈλεγχος

Page 10: Τμήμα Επιστήμης Υπολογιστών - Άσκηση 12: Ο Απλός ...hy120/20f/12c_ex12_cktv.pdfΠαράδειγμα 2: Βρόχος διπλασιασμού στοιχείων

ΕντολέςCTI

10012c-Άσκηση12:οΑπλόςΥπολογιστήςστονΠροσομοιωτή(μέροςΒ')-ΗΥ-120©U.Crete

• CTI=ControlTransferInstru-ction(εντολήμτφ.ελέγχου),δηλ.διακλάδωσηήάλμα

• pcMd =CTI and Condition• ΥπόλοιπεςεντολέςεκτόςCTI:CTI==0,άραpcMd =0,άραοπολυπλέκτηςστηνείσοδοτουPCτροφοδοτείταιαπότοναυξητήPC+1

• ΑποτυχημένεςΔιακλαδώσεις:CTI==1,αλλάCondition==0,οπότεpcMd =0,επομένωςκαιπάλιPC← PC+1,αφούησυνθήκητηςδιακλάδωσηςήτανψευδής

• ΕπιτυχημένεςΔιακλαδώσεις:CTI==1καιCondition==1,επομένωςpcMd =1,άραο πολυπλέκτηςστηνείσοδοτουPC τροφοδοτείταιαπότο BUS– jmp &jmpx είναισανπάντοτεεπιτυχ.branch,επειδήaluMd επιλέγειπάνταCond =1

• CTI==1προκαλείCTI_or_Xfirst =1προςταδεξιά,γιάνασβήσειτοaccLd

Page 11: Τμήμα Επιστήμης Υπολογιστών - Άσκηση 12: Ο Απλός ...hy120/20f/12c_ex12_cktv.pdfΠαράδειγμα 2: Βρόχος διπλασιασμού στοιχείων

Indexed: 1ος κύκλος

11012c-Άσκηση12:οΑπλόςΥπολογιστήςστονΠροσομοιωτή(μέροςΒ')-ΗΥ-120©U.Crete

• ΤοMSbitτουOpcode,X,σηματοδοτείτιςεντολέςALU,load,store,ήinputπουείναιIndexed – ηεντ.jumpx δεν είναισεαυτές

• Γιάτηναρχικοποίησητουstatebit,S,βλ.επόμ.διαφ.

• ΓιάτιςεντολέςαυτέςόπουX==1,τονπρώτοκύκλορολογιούτους,S==0,άραSbar==1,άραανάβειτοσήμαXfirst

• Xfirst==1, μέσωτουπολυπλέκτηδεξιά,δίνει01δηλ.dmRd,ανεξαρτήτωςτουπεδίουbusSrcτουOpcode, γιάανάγνωσητηςδιεύθυνσηςτουτελεστέου

• Xfirst==1,αριστερά,δίνειpcLd=0γιάναμείνειοPCαμτβλ.στηνίδιαεντολή• Xfirst==1,αριστερά,δίνειεπόμενηκατάστασηnxtS=1γιάτον2ο κύκλο

Page 12: Τμήμα Επιστήμης Υπολογιστών - Άσκηση 12: Ο Απλός ...hy120/20f/12c_ex12_cktv.pdfΠαράδειγμα 2: Βρόχος διπλασιασμού στοιχείων

Indexed: 2ος κύκλος

12012c-Άσκηση12:οΑπλόςΥπολογιστήςστονΠροσομοιωτή(μέροςΒ')-ΗΥ-120©U.Crete

• ΓιάτιςεντολέςαυτέςμεX==1,τονδεύτεροκύκλοτους,S==1,άραανάβειτοσήμαXsecond

• ΤοXsecond επηρεάζειμόνοντοσήμαaddrMd,άραστρίβειτονπολυπλέκτητηςδιεύθυν-σηςτηςDMEM προςτονTMP,ενώσεόλεςτιςάλλεςπεριπτώσειςαυτόςήταναπότοπεδίοiaddr τηςεντολής

• Απόόλεςτιςάλλεςαπόψεις,ηεντολήεκτελείταιπανομοιότυπαμετιςκανονικέςεντολέςALU/load/store/input,καιnxtS =0καιpcLd =1 όπωςγιάτιςυπόλοιπεςεντ.

• Γιάόλεςτιςυπόλοιπεςεντολές,X==0,επομένωςXfirst =Xsecond =0,καιτοbitκατάστασης,S,αγνοείται.Έτσι,nxtS =0καιpcLd =1,άραπάντααλλάζουντονPCπηγαίνονταςστηνεπόμενηεντολή,καιπάνταS==0όταναρχίζειηεπόμενηεντολή– Κανονικά,τοResetέπρεπεναπηγαίνεικαιστοS,αλλάεάνηπρώτηεντολήδενείναιIndexedτότεαυτήθααγνοήσειτοS,καιθακάνειnxtS=0,δηλ.σωστάγιάτηνεπόμενη

Page 13: Τμήμα Επιστήμης Υπολογιστών - Άσκηση 12: Ο Απλός ...hy120/20f/12c_ex12_cktv.pdfΠαράδειγμα 2: Βρόχος διπλασιασμού στοιχείων

ΕντολέςALU/load/store/inputImmediate&Κανονικές

13012c-Άσκηση12:οΑπλόςΥπολογιστήςστονΠροσομοιωτή(μέροςΒ')-ΗΥ-120©U.Crete

Opcode Opcode/controlfields(binary)Λειτουργία

Assembly Hex X CTI busSrc passB aluModeandi 00

0 0 00(im2bus)

0

000 ACC← ACC&iaddr (andimmed.)

ori 01 001 ACC← ACC| iaddr (orimmediate)

addi 02 010 ACC← ACC+iaddr (addimmed.)

subi 06 110 ACC← ACC- iaddr (sub immed.)

ldi 08 1 xxx ACC← iaddr (loadimmediate)

and 10

0 0 01(dmRd)

0

000 ACC← ACC&DM[iaddr] (and)

or 11 001 ACC← ACC| DM[iaddr] (or)

add 12 010 ACC← ACC+DM[iaddr] (add)

sub 16 110 ACC← ACC- DM[iaddr] (subtract)

ld 18 1 xxx ACC← DM[iaddr] (load)st 20 0 0 10(acc2bus) x xxx DM[iaddr]← ACC (store)inp 30 11(ext2bus) x xxx DM[iaddr]← Ext_kbd_in (input)

Page 14: Τμήμα Επιστήμης Υπολογιστών - Άσκηση 12: Ο Απλός ...hy120/20f/12c_ex12_cktv.pdfΠαράδειγμα 2: Βρόχος διπλασιασμού στοιχείων

Εντολές CTIκαιIndexedALU/load/store/input

14012c-Άσκηση12:οΑπλόςΥπολογιστήςστονΠροσομοιωτή(μέροςΒ')-ΗΥ-120©U.Crete

Opcode Opcode/controlfields(binary) ΛειτουργίαAssembly Hex X CTI busSrc passB aluModebeq 40

0 100

(im2bus)x

000 if (accZero)then PC← iaddrbne 41 001 if (not accZero)then PC← iaddrblt 42 010 if (accSign)then PC← iaddrbge 43 011 if (not accSign)then PC← iaddrjmp 44 x 1xx PC← iaddr (unconditionaljump)jmpx 54 01(dmRd) x 1xx PC← DM[iaddr] (jumpindexed)andx 90

1 0 01(dmRd)

0

000 ACC← ACC&DM[DM[iaddr]] (and)orx 91 001 ACC← ACC| DM[DM[iaddr]] (or)addx 92 010 ACC← ACC+DM[DM[[iaddr]] (add)subx 96 110 ACC← ACC– DM[DM[iaddr]] (sub)ldx 98 1 xxx ACC← DM[DM[iaddr]] (loadindx)stx A0 1 0 10(acc2bus) x xxx DM[DM[iaddr]]← ACC (storeindx)inpx B0 11(ext2bus) x xxx DM[DM[iaddr]]← Ext_kbd_in

Page 15: Τμήμα Επιστήμης Υπολογιστών - Άσκηση 12: Ο Απλός ...hy120/20f/12c_ex12_cktv.pdfΠαράδειγμα 2: Βρόχος διπλασιασμού στοιχείων

Παράδειγμα 1: ΑρχικοποίησηDMEMAssembly: Instr.Mem.

00: inp p (00) 00: 30 00loop→ 01: inpx *p(00) 01: B0 00

02: ld p (00) 02: 18 0003: addi 1 03: 02 0104: st p (00) 04: 20 0005: subi 10 05: 06 1006: blt 01 (loop) 06: 42 01

15012c-Άσκηση12:οΑπλόςΥπολογιστήςστονΠροσομοιωτή(μέροςΒ')-ΗΥ-120©U.Crete

p=input();do{

*p=input();p++;

} while (p<0x10);

DataMem.

00: p01:

• Ηinp στο00διαβάζειαπότοπληκτρολόγιοτηδιεύθυνσητηςπρώτηςθέσηςτηςDMEMπουθέλουμενααρχικοποιήσουμε

• Στο01αρχικοποιούμεαπόπληκτρολόγιοεκείπουδείχνειοp• Στο06επαναλαμβάνουμεμέχρικαιτηθέση0FτηςDMEM

Page 16: Τμήμα Επιστήμης Υπολογιστών - Άσκηση 12: Ο Απλός ...hy120/20f/12c_ex12_cktv.pdfΠαράδειγμα 2: Βρόχος διπλασιασμού στοιχείων

Παράδειγμα2:ΒρόχοςδιπλασιασμούστοιχείωνπίνακαAssembly: Instr.Mem.

07: inp n(01) 07: 30 0108: ldi 0 08: 08 0009: st i(02) 09: 20 02

loop→ 0a: ld i(02) 0a: 18 020b: sub n(01) 0b: 16 010c: bge exit(17) 0c: 43 170d: ldi a(08) 0d: 08 080e: add i (02) 0e: 12 020f: st p(00) 0f: 20 0010: ldx *p(00) 10: 98 0011: addx *p(00) 11: 92 0012: stx *p(00) 12: A0 0013: ld i(02) 13: 18 0214: addi 1 14: 02 0115: st i(02) 15: 20 0216: jmp loop(0a) 16: 44 0a

16012c-Άσκηση12:οΑπλόςΥπολογιστήςστονΠροσομοιωτή(μέροςΒ')-ΗΥ-120©U.Crete

n=input();i=0;while(i<n){

a[i]=a[i]+a[i];i=i+1;

} DataMem.

00: p01: n02: i

…08: a[0]09: a[1]0a: a[2]0b: a[3]0c: a[4]

Page 17: Τμήμα Επιστήμης Υπολογιστών - Άσκηση 12: Ο Απλός ...hy120/20f/12c_ex12_cktv.pdfΠαράδειγμα 2: Βρόχος διπλασιασμού στοιχείων

ΗΜνήμηΕντολώνμεταδύοαυτάπαραδείγματα

17012c-Άσκηση12:οΑπλόςΥπολογιστήςστονΠροσομοιωτή(μέροςΒ')-ΗΥ-120©U.Crete

Στιςδύοεπό-μενεςθέσεις,17-18,είναιοιεντολές:17: inp0318:jmpx03ώστεναδιαβάζειέναναριθμό–διεύθυνσηεντο-λήςαπότοπληκ-τρολόγιοκαιναπηδάεισεαυτήτηδιεύθυνση(αυτόείναικαιtestτηςjmpx)

Page 18: Τμήμα Επιστήμης Υπολογιστών - Άσκηση 12: Ο Απλός ...hy120/20f/12c_ex12_cktv.pdfΠαράδειγμα 2: Βρόχος διπλασιασμού στοιχείων

Τιέχετενακάνετε1. Μελετήστεκαικαταλάβετετηνεκφώνηση2. ΤροποποιήστετοναπλόυπολογιστήσαςτηςΆσκησης11ώστε

αυτόςναυλοποιείκαιτιςνέεςεντολέςαυτήςεδώτηςάσκησης3. Κατανοήστεκαιελέγξτετησωστήεκτέλεσητωνδύοπαραδειγμά-

τωνπρογραμμάτωναπότιςδιαφάνειες15και164. Γράψτεκαιτρέξτε,καιμερικέςδικέςσαςεντολέςστιςθέσεις17-1F

ή19-1Fήκαι00-06,ήκάντεμιάδικήσαςπαραλλαγήτουβρόχουεπεξεργασίαςστοιχείωνπίνακα(«Παράδειγμα2»)

5. Αναφορά(PDF):– φωτογρ.κυκλώματόςσας&εξηγήσειςόπουδιαφέρειαπόεκφώνηση,– Assembly,binary,&εξηγήσειςγιάτιςεντολές/παραλλαγέςστο4παραπ.

18012c-Άσκηση12:οΑπλόςΥπολογιστήςστονΠροσομοιωτή(μέροςΒ')-ΗΥ-120©U.Crete