Τι είναι η μονάδα ελέγχου: Εξαρτήματα & ο σχεδιασμός της

Δοκιμάστε Το Όργανο Μας Για Την Εξάλειψη Των Προβλημάτων





Η μονάδα ελέγχου είναι το κύριο συστατικό μιας κεντρικής μονάδας επεξεργασίας (CPU) σε υπολογιστές που μπορούν να κατευθύνουν τις λειτουργίες κατά την εκτέλεση ενός προγράμματος από ο επεξεργαστής /υπολογιστή. Η κύρια λειτουργία της μονάδας ελέγχου είναι η λήψη και η εκτέλεση οδηγιών από τη μνήμη ενός υπολογιστή. Λαμβάνει οδηγίες εισαγωγής / πληροφορίες από τον χρήστη και τις μετατρέπει σε σήματα ελέγχου , τα οποία στη συνέχεια δίνονται στη CPU για περαιτέρω εκτέλεση. Περιλαμβάνεται ως μέρος της αρχιτεκτονικής Von Neumann που αναπτύχθηκε από τον John Neumann. Είναι υπεύθυνη για την παροχή των σημάτων χρονισμού και των σημάτων ελέγχου και καθοδηγεί την εκτέλεση ενός προγράμματος από την CPU. Περιλαμβάνεται ως εσωτερικό μέρος της CPU σε σύγχρονους υπολογιστές. Αυτό το άρθρο περιγράφει πλήρεις πληροφορίες σχετικά με τη μονάδα ελέγχου.

Τι είναι η μονάδα ελέγχου;

Το στοιχείο που λαμβάνει το σήμα εισόδου / πληροφορίες / οδηγίες από το χρήστη και μετατρέπεται σε σήματα ελέγχου για την εκτέλεση στην CPU. Ελέγχει και κατευθύνει την κύρια μνήμη, την αριθμητική και λογική μονάδα (ALU), τις συσκευές εισόδου και εξόδου, καθώς και υπεύθυνη για τις οδηγίες που αποστέλλονται στην CPU ενός υπολογιστή. Παίρνει τις οδηγίες από το κύρια μνήμη ενός επεξεργαστή και αποστέλλεται στο μητρώο εντολών επεξεργαστή, το οποίο περιέχει τα περιεχόμενα του καταχωρητή.




Διάγραμμα μπλοκ μονάδας ελέγχου

Διάγραμμα μπλοκ μονάδας ελέγχου

Η μονάδα ελέγχου μετατρέπει την είσοδο σε σήματα ελέγχου και στη συνέχεια αποστέλλεται στον επεξεργαστή και κατευθύνει την εκτέλεση ενός προγράμματος. Οι λειτουργίες που πρέπει να εκτελούνται κατευθύνονται από τον επεξεργαστή στον υπολογιστή. Κυρίως κεντρική μονάδα επεξεργασίας (CPU) και Μονάδα επεξεργασίας γραφικών (GPU) απαιτούν μια μονάδα ελέγχου ως εσωτερικό μέρος. Το μπλοκ διάγραμμα της μονάδας ελέγχου φαίνεται παραπάνω.



Στοιχεία μιας μονάδας ελέγχου

Τα στοιχεία αυτής της μονάδας είναι οδηγίες μητρώα , σήματα ελέγχου εντός της CPU, σήματα ελέγχου προς / από το δίαυλο, λεωφορείο ελέγχου, σημαίες εισόδου και σήματα ρολογιού.

Τα συστατικά στοιχεία της μονάδας ελέγχου ενσύρματων είναι το μητρώο εντολών (περιέχει πεδίο κωδικού και διεύθυνσης), μονάδα χρονισμού, κατάσταση ελέγχου γεννήτρια , πίνακας παραγωγής σήματος ελέγχου και αποκωδικοποιητής εντολών.
Τα εξαρτήματα της μονάδας προγραμματισμού Micro είναι η επόμενη γεννήτρια διευθύνσεων, ένας καταχωρητής διευθύνσεων ελέγχου, μια μνήμη ελέγχου και ένας καταχωρητής δεδομένων ελέγχου.

Λειτουργίες

ο λειτουργίες της μονάδας ελέγχου συμπεριλάβετε τα ακόλουθα.


  • Κατευθύνει τη ροή της ακολουθίας δεδομένων μεταξύ του επεξεργαστή και άλλων συσκευών.
  • Μπορεί να ερμηνεύσει τις οδηγίες και να ελέγχει τη ροή δεδομένων στον επεξεργαστή.
  • Δημιουργεί την ακολουθία σημάτων ελέγχου από τις ληφθείσες οδηγίες ή εντολές από τον καταχωρητή οδηγιών.
  • Έχει την ευθύνη να ελέγχει τις μονάδες εκτέλεσης όπως ALU, buffer δεδομένων και καταχωρητές στην CPU ενός υπολογιστή.
  • Έχει τη δυνατότητα ανάκτησης, αποκωδικοποίησης, χειρισμού της εκτέλεσης και αποθήκευσης αποτελεσμάτων.
  • Δεν μπορεί να επεξεργαστεί και να αποθηκεύσει τα δεδομένα
  • Για τη μεταφορά των δεδομένων, επικοινωνεί με τις συσκευές εισόδου και εξόδου και ελέγχει όλες τις μονάδες του υπολογιστή.

Σχεδιασμός μονάδας ελέγχου

Ο σχεδιασμός αυτού μπορεί να γίνει χρησιμοποιώντας δύο τύποι μονάδας ελέγχου που περιλαμβάνουν τα ακόλουθα.

  • Με βάση το Hardwire
  • Μικροπρογραμματισμένο με βάση (μονοεπίπεδο και δύο επιπέδων)

Ενσύρματη μονάδα ελέγχου

Ο βασικός σχεδιασμός μιας ενσύρματης μονάδας ελέγχου φαίνεται παραπάνω. Σε αυτόν τον τύπο, τα σήματα ελέγχου δημιουργούνται από ένα ειδικό υλικό λογικό κύκλωμα χωρίς καμία αλλαγή στη δομή του κυκλώματος. Σε αυτό, το παραγόμενο σήμα δεν μπορεί να τροποποιηθεί για εκτέλεση στον επεξεργαστή.

Τα βασικά δεδομένα ενός opcode (ο κωδικός λειτουργίας μιας εντολής αποστέλλεται στον αποκωδικοποιητή εντολών για αποκωδικοποίηση. Η εντολή αποκρυπτογράφος είναι το σύνολο των αποκωδικοποιητών για την αποκωδικοποίηση διαφορετικών τύπων δεδομένων στο opcode. Αυτό έχει ως αποτέλεσμα σήματα εξόδου που περιέχουν τιμές ενεργών σημάτων που δίδονται ως είσοδος στη γεννήτρια μήτρας για τη δημιουργία σημάτων ελέγχου για την εκτέλεση ενός προγράμματος από τον επεξεργαστή του υπολογιστή.

Μονάδα ελέγχου με βάση το Hardwire

Μονάδα ελέγχου με βάση το Hardwire

Η γεννήτρια μήτρας παρέχει καταστάσεις της μονάδας ελέγχου και τα σήματα που εξέρχονται από τον επεξεργαστή (σήματα διακοπής). Το Matrix έχει δημιουργηθεί ως προγραμματιζόμενος λογικός πίνακας . Τα σήματα ελέγχου που δημιουργούνται από τη γεννήτρια μήτρας δίδονται ως είσοδος στην επόμενη μήτρα γεννήτριας και συνδυάζονται με τα σήματα χρονισμού της μονάδας χρονισμού που περιέχουν ορθογώνια σχέδια.

Για τη λήψη νέων εντολών, η μονάδα ελέγχου μετατρέπεται σε αρχικό στάδιο για την εκτέλεση νέων εντολών. Η μονάδα ελέγχου παραμένει στο αρχικό στάδιο ή στο πρώτο στάδιο εφόσον τα σήματα χρονισμού, τα σήματα εισόδου και οι καταστάσεις εντολής ενός υπολογιστή είναι αμετάβλητα. Η αλλαγή στην κατάσταση της μονάδας ελέγχου μπορεί να αυξηθεί εάν υπάρχει οποιαδήποτε αλλαγή σε οποιοδήποτε από τα παραγόμενα σήματα.

Όταν εμφανίζεται εξωτερικό σήμα ή διακοπή, η μονάδα ελέγχου μεταβαίνει στην επόμενη κατάσταση και εκτελεί την επεξεργασία του σήματος διακοπής. Οι σημαίες και οι καταστάσεις χρησιμοποιούνται για την επιλογή των επιθυμητών καταστάσεων για την εκτέλεση του κύκλου εκτέλεσης της εντολής.

Στην τελευταία κατάσταση, η μονάδα ελέγχου παίρνει την επόμενη εντολή και στέλνει την έξοδο στον μετρητή προγράμματος, στη συνέχεια στον καταχωρητή διευθύνσεων μνήμης, στον καταχωρητή buffer και στη συνέχεια στον καταχωρητή εντολών για να διαβάσει την οδηγία. Τέλος, εάν η τελευταία εντολή (η οποία λαμβάνεται από τη μονάδα ελέγχου) είναι τελική εντολή, τότε μεταβαίνει στην κατάσταση λειτουργίας του επεξεργαστή και περιμένει έως ότου ο χρήστης κατευθύνει το επόμενο πρόγραμμα.

Μικρή προγραμματισμένη μονάδα ελέγχου

Σε αυτόν τον τύπο, η αποθήκη ελέγχου χρησιμοποιείται για την αποθήκευση των σημάτων ελέγχου που κωδικοποιούνται κατά την εκτέλεση ενός προγράμματος. Το σήμα ελέγχου δεν δημιουργείται αμέσως και αποκωδικοποιείται επειδή το μικροπρογραμματίο αποθηκεύει το πεδίο διευθύνσεων στην αποθήκη ελέγχου. Η όλη διαδικασία είναι ενιαίου επιπέδου.

Οι μικρο-λειτουργίες γίνονται για την εκτέλεση μικρο-εντολών στο πρόγραμμα. Το μπλοκ διάγραμμα της μικρο προγραμματισμένης μονάδας ελέγχου φαίνεται παραπάνω. Από το διάγραμμα, η διεύθυνση της μικρο-εντολής λαμβάνεται από τον καταχωρητή διευθύνσεων μνήμης ελέγχου. Όλες οι πληροφορίες της μονάδας ελέγχου αποθηκεύονται μόνιμα στη μνήμη ελέγχου που ονομάζεται ROM.

Μικροπρογραμματισμένη βασισμένη μονάδα ελέγχου

Μικροπρογραμματισμένη βασισμένη μονάδα ελέγχου

Η μικρο-εντολή από τη μνήμη ελέγχου διατηρείται από τον καταχωρητή ελέγχου. Επειδή η μικρο-εντολή έχει τη μορφή λέξης ελέγχου (περιέχει δυαδικές τιμές ελέγχου) που χρειάζεται 1 ή περισσότερες μικρο-λειτουργίες για την επεξεργασία δεδομένων.

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

Κωδικός Verilog για τη μονάδα ελέγχου

Ο κωδικός Verilog για τη μονάδα ελέγχου εμφανίζεται παρακάτω.

'include' prj_definition.v '

ενότητα CONTROL_UNIT (MEM_DATA, RF_DATA_W, RF_ADDR_W, RF_ADDR_R1, RF_ADDR_R2, RF_READ, RF_WRITE, ALU_OP1, ALU_OP2, ALU_OPRN, MEM_ADDR, MEM_READ, MEM_WRITE, RF_DATA, RF_DATA, RF_DATA, RF_DATA, RF_DATA

// Σήματα εξόδου
// Έξοδοι για αρχείο μητρώου

έξοδος ['DATA_INDEX_LIMIT: 0] RF_DATA_W
έξοδος ['ADDRESS_INDEX_LIMIT: 0] RF_ADDR_W, RF_ADDR_R1, RF_ADDR_R2
έξοδος RF_READ, RF_WRITE

// Έξοδοι για ALU
έξοδος ['DATA_INDEX_LIMIT: 0] ALU_OP1, ALU_OP2
έξοδος ['ALU_OPRN_INDEX_LIMIT: 0] ALU_OPRN

// Έξοδοι για μνήμη
έξοδος ['ADDRESS_INDEX_LIMIT: 0] MEM_ADDR
έξοδος MEM_READ, MEM_WRITE

// Σήματα εισόδου
είσοδος ['DATA_INDEX_LIMIT: 0] RF_DATA_R1, RF_DATA_R2, ALU_RESULT
είσοδος ZERO, CLK, RST

// Σήμα εισόδου
inout ['DATA_INDEX_LIMIT: 0] MEM_DATA

// Κράτη δίχτυα
καλώδιο [2: 0] proc_state

// κρατά την τιμή μετρητή προγράμματος, αποθηκεύει την τρέχουσα εντολή, στοίβα δείκτη

reg MEM_READ, MEM_WRITE
reg MEM_ADDR
reg ALU_OP1, ALU_OP2
reg ALU_OPRN
reg RF_ADDR_W, RF_ADDR_R1, RF_ADDR_R2
reg RF_DATA_W
reg [1: 0] κατάσταση, next_state

PROC_SM state_machine (.STATE (proc_state),. CLK (CLK),. RST (RST))

πάντα @ (posedge CLK)
να αρχίσει
εάν (RST)
κατάσταση<= RST
αλλού
κατάσταση<= next_state

τέλος

πάντα @ (πολιτεία)
να αρχίσει

MEM_READ = 1'b0 MEM_WRITE = 1'b0 MEM_ADDR = 1'b0
ALU_OP1 = 1'b0 ALU_OP2 = 1'b0 ALU_OPRN = 1'b0
RF_ADDR_R1 = 1'b0 RF_ADDR_R2 = 1'b0 RF_ADDR_W = 1'b0 RF_DATA_W = 1'b0

υπόθεση (πολιτεία)

'PROC_FETCH: έναρξη
next_state = 'PROC_DECODE
MEM_READ = 1'b1
RF_ADDR_R1 = 1'b0 RF_ADDR_R2 = 1'b0
RF_ADDR_W = 1'b1
τέλος

'PROC_DECODE: έναρξη
next_state = 'PROC_EXE
MEM_ADDR = 1'b1
ALU_OP1 = 1'b1 ALU_OP2 = 1'b1 ALU_OPRN = 1'b1
MEM_WRITE = 1'b1
RF_ADDR_R1 = 1'b1 RF_ADDR_R2 = 1'b1
τέλος

'PROC_EXE: έναρξη
next_state = 'PROC_MEM
ALU_OP1 = 1'b1 ALU_OP2 = 1'b1 ALU_OPRN = 1'b1
RF_ADDR_R1 = 1'b0
τέλος

'PROC_MEM: έναρξη
next_state = 'PROC_WB
MEM_READ = 1'b1 MEM_WRITE = 1'b0
τέλος

'PROC_WB: έναρξη
next_state = 'PROC_FETCH
MEM_READ = 1'b1 MEM_WRITE = 1'b0
τέλος
τελικό

τέλος
endmodule

ενότητα PROC_SM (STATE, CLK, RST)
// λίστα εισόδων
είσοδος CLK, RST
// λίστα αποτελεσμάτων
έξοδος [2: 0] STATE

// λίστα εισαγωγής
είσοδος CLK, RST
// λίστα εξόδου
έξοδος STATE

reg [2: 0] STATE
reg [1: 0] κατάσταση
reg [1: 0] next_state

reg PC_REG, INST_REG, SP_REF

'ορίστε PROC_FETCH 3'h0
'ορίστε PROC_DECODE 3'h1
'ορίστε PROC_EXE 3'h2
'ορίστε PROC_MEM 3'h3
'ορίστε PROC_WB 3'h4

// έναρξη του κράτους
αρχικός
να αρχίσει
κατάσταση = 2'bxx
next_state = 'PROC_FETCH
τέλος

// επαναφορά χειρισμού σήματος
πάντα @ (posedge RST)
να αρχίσει
κατάσταση = 'PROC_FETCH
next_state = 'PROC_FETCH
τέλος
πάντα @ (posedge CLK)
να αρχίσει
κατάσταση = επόμενο κράτος
τέλος
πάντα @ (πολιτεία)
να αρχίσει
εάν (κατάσταση === 'PROC_FETCH)
να αρχίσει
next_state = 'PROC_DECODE

print_instruction (INST_REG)
τέλος

εάν (κατάσταση === 'PROC_DECODE)
να αρχίσει
next_state = 'PROC_EXE

τέλος

εάν (κατάσταση === 'PROC_EXE)
να αρχίσει
next_state = 'PROC_MEM

print_instruction (SP_REF)
τέλος

εάν (κατάσταση === 'PROC_MEM)
να αρχίσει
next_state = 'PROC_WB

τέλος

εάν (κατάσταση === 'PROC_WB)
να αρχίσει
next_state = 'PROC_FETCH

print_instruction (PC_REG)
τέλος
τέλος

task print_instruction

εισαγωγή ['DATA_INDEX_LIMIT: 0] inst

reg [5: 0] opcode
reg [4: 0] rs
reg [4: 0] rt
reg [4: 0] rd
reg [4: 0] shamt reg [5: 0] funct reg [15: 0] άμεση reg [25: 0] διεύθυνση

να αρχίσει

// αναλύστε την οδηγία
// Τύπος R

{opcode, rs, rt, rd, shamt, funct} = inst

// Πληκτρολογώ
{opcode, rs, rt, instant} = inst
// Τύπος J
{opcode, address} = inst
$ write ('@% 6dns -> [0X% 08h]', $ time, inst)
υπόθεση (opcode) // R-Type
6'00: έναρξη
θήκη (λειτουργία)

6'h20: $ write ('add r [% 02d], r [% 02d], r [% 02d]', rs, rt, rd)
6'h22: $ write ('sub r [% 02d], r [% 02d], r [% 02d]', rs, rt, rd)
6'h2c: $ write ('mul r [% 02d], r [% 02d], r [% 02d]', rs, rt, rd)
6'h24: $ write ('και r [% 02d], r [% 02d], r [% 02d]', rs, rt, rd)
6'h25: $ write ('ή r [% 02d], r [% 02d], r [% 02d]', rs, rt, rd)
6'h27: $ write ('ούτε r [% 02d], r [% 02d], r [% 02d]', rs, rt, rd)
6'h2a: $ write ('slt r [% 02d], r [% 02d], r [% 02d]', rs, rt, rd)
6’00: $ write (“sll r [% 02d],% 2d, r [% 02d]”, rs, shamt, rd)
6'h02: $ write ('srl r [% 02d], 0X% 02h, r [% 02d]', rs, shamt, rd)
6'h08: $ write ('jr r [% 02d]', rs)
προεπιλογή: $ write ('')
τελικό
τέλος

// Πληκτρολογώ

6'h08: $ write ('addi r [% 02d], r [% 02d], 0X% 04h', rs, rt, άμεσο)
6'h1d: $ write ('muli r [% 02d], r [% 02d], 0X% 04h', rs, rt, άμεσο)
6'h0c: $ write ('andi r [% 02d], r [% 02d], 0X% 04h', rs, rt, άμεσο)
6'h0d: $ write ('ori r [% 02d], r [% 02d], 0X% 04h', rs, rt, άμεσο)
6'h0f: $ write ('lui r [% 02d], 0X% 04h', rt, άμεση)
6'h0a: $ write ('slti r [% 02d], r [% 02d], 0X% 04h', rs, rt, άμεσο)
6'h04: $ write ('beq r [% 02d], r [% 02d], 0X% 04h', rs, rt, άμεσο)
6'h05: $ write ('bne r [% 02d], r [% 02d], 0X% 04h', rs, rt, άμεσο)
6'h23: $ write ('lw r [% 02d], r [% 02d], 0X% 04h', rs, rt, άμεσο)
6'h2b: $ write ('sw r [% 02d], r [% 02d], 0X% 04h', rs, rt, άμεσο)

// Τύπος J

6'h02: $ write ('jmp 0X% 07h', διεύθυνση)
6'h03: $ write ('jal 0X% 07h', διεύθυνση)
6'h1b: $ write ('ώθηση')
6'h1c: $ write ('ποπ')
προεπιλογή: $ write ('')
τελικό
$ write (' n')
τέλος
τέλος εργασίας
τελική ενότητα

Συχνές ερωτήσεις

1). Ποιο είναι το έργο μιας μονάδας ελέγχου;

Το έργο της μονάδας ελέγχου είναι να κατευθύνει τη ροή δεδομένων ή οδηγίες για την εκτέλεση από τον επεξεργαστή ενός υπολογιστή. Ελέγχει, διαχειρίζεται και συντονίζει την κύρια μνήμη, ALU, καταχωρητές, μονάδες εισόδου και εξόδου. Παίρνει τις οδηγίες και παράγει σήματα ελέγχου για την εκτέλεση.

2). Τι είναι η μνήμη ελέγχου;

Η μνήμη ελέγχου είναι συνήθως RAM ή ROM για την αποθήκευση της διεύθυνσης και των δεδομένων του μητρώου ελέγχου.

3). Τι είναι η μονάδα ελέγχου Wilkes;

Το διαδοχικό και συνδυαστικά κυκλώματα της ενσύρματης μονάδας ελέγχου αντικαθίστανται από τη μονάδα ελέγχου Wilkes. Χρησιμοποιεί μια μονάδα αποθήκευσης για να αποθηκεύει τις ακολουθίες οδηγιών ενός μικρο-προγράμματος.

4). Τι είναι η μονάδα ενσύρματου ελέγχου;

Η μονάδα ενσύρματου ελέγχου παράγει τα σήματα ελέγχου αλλάζοντας από μια κατάσταση σε άλλη κατάσταση σε κάθε παλμό ρολογιού χωρίς φυσική αλλαγή στο κύκλωμα. Η δημιουργία σημάτων ελέγχου εξαρτάται από σήματα καταγραφής οδηγιών, αποκωδικοποιητή και διακοπής.

5). Τι είναι η μνήμη ελέγχου;

Οι πληροφορίες της μονάδας ελέγχου ή των δεδομένων αποθηκεύονται προσωρινά ή μόνιμα στη μνήμη ελέγχου.
Η μνήμη ελέγχου είναι δύο τύπων. Πρόκειται για μνήμη τυχαίας προσπέλασης (RAM) και μνήμη μόνο για ανάγνωση (ROM).

Έτσι, αυτό αφορά τον ορισμό, τα στοιχεία, το σχεδιασμό, το διάγραμμα, τις λειτουργίες και τύποι μονάδας ελέγχου . Εδώ είναι μια ερώτηση για εσάς, 'Ποιος είναι ο σκοπός του μητρώου διευθύνσεων ελέγχου;'