Kaj je krmilna enota: sestavni deli in njena zasnova

Preizkusite Naš Instrument Za Odpravo Težav





Krmilna enota je glavna komponenta centralne procesne enote (CPE) v računalnikih, ki lahko usmerja operacije med izvajanjem programa s strani procesor / računalnik. Glavna naloga nadzorne enote je pridobivanje in izvrševanje navodil iz pomnilnika računalnika. Od uporabnika prejme vhodna navodila / informacije in jih pretvori v krmilni signali , ki se nato dajo CPU v nadaljnjo izvedbo. Vključen je kot del Von Neumannove arhitekture, ki jo je razvil John Neumann. Odgovoren je za zagotavljanje časovnih signalov in nadzor signalov ter usmerja izvajanje programa s strani CPU. Vključen je kot notranji del CPU v sodobne računalnike. Ta članek opisuje popolne informacije o krmilni enoti.

Kaj je krmilna enota?

Komponenta, ki od uporabnika prejme vhodni signal / informacije / navodila in se pretvori v krmilne signale za izvajanje v CPU. Nadzira in usmerja glavni pomnilnik, aritmetično in logično enoto (ALU), vhodne in izhodne naprave in je odgovoren tudi za navodila, ki se pošljejo na CPU računalnika. Pridobi navodila iz glavni pomnilnik procesorja in se pošlje v register navodil procesorja, ki vsebuje vsebino registra.




Blokovni diagram krmilne enote

Blokovni diagram krmilne enote

Krmilna enota pretvori vhod v krmilne signale, nato pa ga pošlje procesorju in usmerja izvajanje programa. Dejanja, ki jih je treba izvesti, usmerja procesor v računalniku. V glavnem centralna procesorska enota (CPU) in Enota za grafično obdelavo (GPU) kot notranji del zahteva nadzorno enoto. Blokovni diagram krmilne enote je prikazan zgoraj.



Sestavni deli krmilne enote

Sestavni deli te enote so navodila registri , krmilni signali znotraj CPU, krmilni signali do / z vodila, krmilna vodila, vhodne zastavice in signali ure.

Sestavni deli krmilne enote Hardwired so register navodil (vsebuje kodo za opcijo in naslov), časovna enota, stanje nadzora generator , matrika generiranja krmilnega signala in dekodirnik ukazov.
Sestavni deli mikroprogramirane krmilne enote so naslednji generator naslovov, nadzorni naslovni register, nadzorni pomnilnik in nadzorni podatkovni register.

Funkcije

The funkcije krmilne enote vključujejo naslednje.


  • Usmerja pretok zaporedja podatkov med procesorjem in drugimi napravami.
  • Lahko razlaga navodila in nadzoruje pretok podatkov v procesorju.
  • Ustvari zaporedje krmilnih signalov iz prejetih navodil ali ukazov iz registra ukazov.
  • Odgovorna je za nadzor izvršilnih enot, kot so ALU, vmesni pomnilniki podatkov in registri v CPU računalnika.
  • Ima sposobnost pridobivanja, dekodiranja, obdelave izvrševanja in shranjevanja rezultatov.
  • Podatkov ne more obdelati in shraniti
  • Za prenos podatkov komunicira z vhodnimi in izhodnimi napravami in nadzoruje vse enote računalnika.

Zasnova krmilne enote

Zasnovo tega lahko naredimo z dvema vrste krmilne enote ki vključujejo naslednje.

  • Na osnovi trde žice
  • Mikroprogramirano (enostopenjsko in dvostopenjsko)

Ožičena krmilna enota

Osnovna zasnova trdožične krmilne enote je prikazana zgoraj. Pri tej vrsti krmilne signale generira posebna strojna oprema logično vezje brez kakršne koli spremembe v strukturi vezja. Pri tem ustvarjenega signala ni mogoče spremeniti za izvajanje v procesorju.

Osnovni podatki kode opcij (operacijska koda ukaza se pošlje dekoderju ukazov za dekodiranje. Navodilo dekodirnik je nabor dekodirnikov za dekodiranje različnih vrst podatkov v opcode. Rezultat tega so izhodni signali, ki vsebujejo vrednosti aktivnih signalov, ki so podani kot vhod v matrični generator za generiranje nadzornih signalov za izvajanje programa s strani procesorja računalnika.

Krmilna enota na osnovi žice

Krmilna enota na osnovi žice

Matrični generator zagotavlja stanja krmilne enote in signale iz procesorja (prekinitveni signali). Matrica je zgrajena kot programabilno logično polje . Krmilni signali, ki jih generira matrični generator, so podani kot vhod v naslednjo matriko generatorja in se kombinirajo s časovnimi signali časovne enote, ki vsebuje pravokotne vzorce.

Za pridobivanje novega ukaza se krmilna enota spremeni v začetno fazo za izvajanje novega ukaza. Krmilna enota ostane v začetni stopnji ali prvi stopnji, dokler se časovni signali, vhodni signali in navodila v računalniku ne spremenijo. Sprememba stanja krmilne enote se lahko poveča, če pride do sprememb v katerem koli od ustvarjenih signalov.

Ko pride do zunanjega signala ali prekinitve, krmilna enota preide v naslednje stanje in izvede obdelavo signala prekinitve. Zastave in stanja se uporabljajo za izbiro želenih stanj za izvajanje izvedbenega cikla navodil.

V zadnjem stanju nadzorna enota pridobi naslednje navodilo in izhod pošlje programskemu števcu, nato v register naslovov pomnilnika, v vmesni register in nato v register ukazov za branje navodil. Nazadnje, če je zadnje navodilo (ki ga dobi krmilna enota) končno navodilo, gre v delovno stanje procesorja in počaka, dokler uporabnik ne usmeri naslednjega programa.

Mikro programirana krmilna enota

Pri tej vrsti se nadzorna shramba uporablja za shranjevanje nadzornih signalov, ki so kodirani med izvajanjem programa. Nadzorni signal se ne generira takoj in ga dekodira, ker mikroprogram shrani naslovno polje v nadzorni shrambi. Celoten postopek je en sam nivo.

Mikro-operacije se izvajajo za izvajanje mikro-navodil v programu. Blok diagram programirane krmilne enote Micro je prikazan zgoraj. Iz diagrama je naslov mikroinštrukcije pridobljen iz naslova registra nadzornega pomnilnika. Vse informacije o krmilni enoti so trajno shranjene v nadzornem pomnilniku, imenovanem ROM.

Mikroprogramirana krmilna enota

Mikroprogramirana krmilna enota

Mikronavodilo iz krmilnega pomnilnika hrani krmilni register. Ker je mikroinstrukcija v obliki krmilne besede (vsebuje binarne kontrolne vrednosti), ki za obdelavo podatkov zahteva 1 ali več mikro operacij.

Med izvajanjem mikro-navodil je naslednji generator naslovov izračunal naslednji naslov mikro-navodil in nato poslal v register nadzornih naslovov, da je prebral naslednje mikro-navodilo.
Zaporedje mikrooperacij mikroprograma izvede naslednji generator naslovov in deluje kot mikroprogramski sekvencer, da dobi naslov zaporedja, tj. Prebere iz krmilnega pomnilnika.

Verilog koda za krmilno enoto

Verilog koda za krmilno enoto je prikazana spodaj.

`vključi“ prj_definition.v ”

modul 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_DATADR_RETR_RED, CLR

// Izhodni signali
// Izhodi za datoteko registra

izhod [`DATA_INDEX_LIMIT: 0] RF_DATA_W
izhod [`ADDRESS_INDEX_LIMIT: 0] RF_ADDR_W, RF_ADDR_R1, RF_ADDR_R2
izhod RF_READ, RF_WRITE

// Izhodi za ALU
izhod [`DATA_INDEX_LIMIT: 0] ALU_OP1, ALU_OP2
izhod [`ALU_OPRN_INDEX_LIMIT: 0] ALU_OPRN

// Izhodi za pomnilnik
izhod [`ADDRESS_INDEX_LIMIT: 0] MEM_ADDR
izhod MEM_READ, MEM_WRITE

// Vhodni signali
vhod [`DATA_INDEX_LIMIT: 0] RF_DATA_R1, RF_DATA_R2, ALU_RESULT
vhod ZERO, CLK, RST

// Vhodni signal
inout [`DATA_INDEX_LIMIT: 0] MEM_DATA

// Državne mreže
žica [2: 0] proc_state

// vsebuje vrednost števca programov, shrani trenutno navodilo, register kazalcev skladov

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] stanje, naslednje_država

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

vedno @ (posedge CLK)
začeti
če (RST)
država<= RST
drugače
država<= next_state

konec

vedno @ (stanje)
začeti

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

primer (država)

`PROC_FETCH: začni
next_state = `PROC_DECODE
MEM_READ = 1’b1
RF_ADDR_R1 = 1’b0 RF_ADDR_R2 = 1’b0
RF_ADDR_W = 1’b1
konec

`PROC_DECODE: začni
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
konec

`PROC_EXE: začni
next_state = `PROC_MEM
ALU_OP1 = 1’b1 ALU_OP2 = 1’b1 ALU_OPRN = 1’b1
RF_ADDR_R1 = 1’b0
konec

`PROC_MEM: začni
next_state = `PROC_WB
MEM_READ = 1’b1 MEM_WRITE = 1’b0
konec

`PROC_WB: začni
next_state = `PROC_FETCH
MEM_READ = 1’b1 MEM_WRITE = 1’b0
konec
končna črka

konec
končni modul

modul PROC_SM (STANJE, CLK, RST)
// seznam vhodov
vhod CLK, RST
// seznam izhodov
izhod [2: 0] STANJE

// vnosni seznam
vhod CLK, RST
// izhodni seznam
izhod STATE

reg [2: 0] STANJE
reg [1: 0] stanje
reg [1: 0] naslednja_država

reg PC_REG, INST_REG, SP_REF

`definirajte PROC_FETCH 3'h0
`definirajte PROC_DECODE 3'h1
`definirajte PROC_EXE 3'h2
`definirajte PROC_MEM 3'h3
`definirajte PROC_WB 3'h4

// začetek države
začetno
začeti
stanje = 2'bxx
next_state = `PROC_FETCH
konec

// ponastavitev obdelave signala
vedno @ (posedge RST)
začeti
stanje = `PROC_FETCH
next_state = `PROC_FETCH
konec
vedno @ (posedge CLK)
začeti
stanje = naslednja_država
konec
vedno @ (stanje)
začeti
če (stanje === `PROC_FETCH)
začeti
next_state = `PROC_DECODE

navodila za tiskanje (INST_REG)
konec

če (stanje === `PROC_DECODE)
začeti
next_state = `PROC_EXE

konec

če (stanje === `PROC_EXE)
začeti
next_state = `PROC_MEM

navodila za tiskanje (SP_REF)
konec

če (stanje === `PROC_MEM)
začeti
next_state = `PROC_WB

konec

če (stanje === `PROC_WB)
začeti
next_state = `PROC_FETCH

navodila za tiskanje (PC_REG)
konec
konec

naloga print_instruction

vhod [`DATA_INDEX_LIMIT: 0] inst

reg [5: 0] koda op
reg [4: 0] rs
reg [4: 0] rt
reg [4: 0] rd
reg [4: 0] shamt reg [5: 0] funct reg [15: 0] takojšen reg [25: 0] naslov

začeti

// razčlenimo navodila
// R-tip

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

// I-tip
{opcode, rs, rt, takoj} = inst
// J-tip
{opcode, naslov} = inst
$ write (“@% 6dns -> [0X% 08h]“, $ čas, inst)
primer (opcode) // R-Type
6'h00: začetek
primer (funkcija)

6’h20: $ write (“dodaj 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 (“in r [% 02d], r [% 02d], r [% 02d]“, rs, rt, rd)
6’h25: $ write (“ali r [% 02d], r [% 02d], r [% 02d]“, rs, rt, rd)
6’h27: $ write (“niti r [% 02d], r [% 02d], r [% 02d]“, rs, rt, rd)
6’h2a: $ write (“slt r [% 02d], r [% 02d], r [% 02d]“, rs, rt, rd)
6’h00: $ 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)
privzeto: $ write (“”)
končna črka
konec

// I-tip

6’h08: $ write (“addi r [% 02d], r [% 02d], 0X% 04h“, rs, rt, takoj)
6’h1d: $ write (“muli r [% 02d], r [% 02d], 0X% 04h“, rs, rt, takoj)
6’h0c: $ write (“andi r [% 02d], r [% 02d], 0X% 04h“, rs, rt, takoj)
6’h0d: $ write (“ori r [% 02d], r [% 02d], 0X% 04h“, rs, rt, takoj)
6’h0f: $ write (“lui r [% 02d], 0X% 04h“, rt, takoj)
6’h0a: $ write (“slti r [% 02d], r [% 02d], 0X% 04h“, rs, rt, takoj)
6’h04: $ write (“beq r [% 02d], r [% 02d], 0X% 04h“, rs, rt, takoj)
6’h05: $ write (“bne r [% 02d], r [% 02d], 0X% 04h“, rs, rt, takoj)
6’h23: $ write (“lw r [% 02d], r [% 02d], 0X% 04h“, rs, rt, takoj)
6’h2b: $ write (“sw r [% 02d], r [% 02d], 0X% 04h“, rs, rt, takoj)

// J-tip

6’h02: $ write (“jmp 0X% 07h”, naslov)
6’h03: $ write (“jal 0X% 07h”, naslov)
6’h1b: $ write (“push”)
6’h1c: $ write (“pop”)
privzeto: $ write (“”)
končna črka
$ write (“ n”)
konec
endtask
končni modul

Pogosta vprašanja

1). Kakšno je delo krmilne enote?

Delo nadzorne enote je usmerjanje pretoka podatkov ali navodil za izvajanje s strani procesorja računalnika. Nadzira, upravlja in usklajuje glavni pomnilnik, ALU, registre, vhodne in izhodne enote. Pridobi navodila in ustvari nadzorne signale za izvedbo.

2). Kaj je krmilni pomnilnik?

Nadzorni pomnilnik je običajno RAM ali ROM za shranjevanje naslova in podatkov nadzornega registra.

3). Kaj je nadzorna enota Wilkes?

Zaporedni in kombinacijska vezja krmilne enote, zamenjane s krmilno enoto Wilkes. Uporablja pomnilniško enoto za shranjevanje zaporedij navodil mikroprograma.

4). Kaj je ožičena krmilna enota?

Ožičena krmilna enota generira krmilne signale s preklopom iz enega stanja v drugo v vsakem urnem impulzu brez kakršne koli fizične spremembe v vezju. Generiranje krmilnih signalov je odvisno od registra ukazov, dekodirnika in prekinitvenih signalov.

5). Kaj je krmilni pomnilnik?

Informacije nadzorne enote ali podatki se začasno ali trajno shranijo v nadzorni pomnilnik.
Nadzorni pomnilnik je dveh vrst. So pomnilnik z naključnim dostopom (RAM) in pomnilnik samo za branje (ROM).

Gre torej za definicijo, komponente, zasnovo, diagram, funkcije in vrste krmilne enote . Tu je vprašanje za vas: 'Kaj je namen registra nadzornih naslovov?'