Čo je riadiaca jednotka: komponenty a jej dizajn

Čo je riadiaca jednotka: komponenty a jej dizajn

Riadiaca jednotka je hlavnou súčasťou centrálnej procesorovej jednotky (CPU) v počítačoch, ktorá môže riadiť operácie počas vykonávania programu procesor / počítač. Hlavnou funkciou riadiacej jednotky je načítanie a vykonávanie pokynov z pamäte počítača. Prijíma vstupné inštrukcie / informácie od používateľa a prevádza ich na riadiace signály , ktoré sa potom dajú CPU na ďalšie vykonanie. Je zahrnutý ako súčasť architektúry Von Neumann vyvinutej Johnom Neumannom. Je zodpovedný za poskytovanie časovacích signálov a riadiacich signálov a riadi vykonávanie programu CPU. Je zahrnutý ako vnútorná súčasť CPU v moderných počítačoch. Tento článok popisuje úplné informácie o riadiacej jednotke.

Čo je riadiaca jednotka?

Komponent, ktorý prijíma vstupný signál / informácie / inštrukciu od používateľa a prevádza sa na riadiace signály na vykonávanie v CPU. Ovláda a usmerňuje hlavnú pamäť, aritmeticko-logickú jednotku (ALU), vstupné a výstupné zariadenia a zodpovedá tiež za pokyny, ktoré sa odosielajú do CPU počítača. Načítava pokyny z Hlavná pamäť procesora a odoslaný do registra inštrukcií procesora, ktorý obsahuje obsah registra.


Bloková schéma riadiacej jednotky

Bloková schéma riadiacej jednotky



Riadiaca jednotka prevádza vstup na riadiace signály a potom ich posiela do procesora a riadi vykonávanie programu. Operácie, ktoré je potrebné vykonať, sú riadené procesorom v počítači. Hlavne centrálna procesorová jednotka (CPU) a Jednotka grafického spracovania (GPU) vyžadujú ako vnútornú časť riadiacu jednotku. Bloková schéma riadiacej jednotky je uvedená vyššie.

Súčasti riadiacej jednotky

Súčasti tejto jednotky sú pokyny registre , riadiace signály v rámci CPU, riadiace signály do / zo zbernice, riadiaca zbernica, vstupné príznaky a hodinové signály.

Komponenty hardwarovej riadiacej jednotky sú register inštrukcií (obsahuje operačný kód a pole adresy), časovacia jednotka, stav riadenia generátor , matica generovania riadiaceho signálu a dekodér inštrukcií.
Súčasti programovanej riadiacej jednotky Micro sú nasledujúci generátor adries, register riadiacich adries, riadiaca pamäť a register riadiacich údajov.

Funkcie

The funkcie riadiacej jednotky zahrňte nasledujúce.


  • Usmerňuje tok postupnosti údajov medzi procesorom a ostatnými zariadeniami.
  • Môže interpretovať pokyny a riadiť tok údajov v procesore.
  • Generuje postupnosť riadiacich signálov z prijatých inštrukcií alebo príkazov z registra inštrukcií.
  • Je zodpovedný za riadenie výkonných jednotiek, ako je ALU, dátové medzipamäte a registre v CPU počítača.
  • Má schopnosť načítať, dekódovať, spracovávať vykonávanie a ukladať výsledky.
  • Nemôže spracovať a uložiť údaje
  • Na prenos údajov komunikuje so vstupnými a výstupnými zariadeniami a riadi všetky jednotky počítača.

Konštrukcia riadiacej jednotky

Návrh je možné vykonať pomocou dvoch typy riadiacej jednotky ktoré zahŕňajú nasledujúce.

  • Hardwire založené
  • Mikroprogramové (jednoúrovňové a dvojúrovňové)

Drôtová riadiaca jednotka

Základné prevedenie pevne zapojenej riadiacej jednotky je zobrazené vyššie. V tomto type sú riadiace signály generované špeciálnym hardvérom logický obvod bez akejkoľvek zmeny v štruktúre obvodu. V tomto prípade nemožno generovaný signál modifikovať na vykonávanie v procesore.

Základné dáta operačného kódu (operačný kód inštrukcie sa odošle do dekodéra inštrukcie na dekódovanie. Inštrukcia dekodér je sada dekodérov na dekódovanie rôznych typov údajov v operačnom kóde. To vedie k výstupným signálom, ktoré obsahujú hodnoty aktívnych signálov, ktoré sa dávajú ako vstup do generátora matice na generovanie riadiacich signálov na vykonávanie programu procesorom počítača.

Hardwarová riadiaca jednotka

Hardwarová riadiaca jednotka

Maticový generátor poskytuje stavy riadiacej jednotky a signály z procesora (prerušovacie signály). Matrix je postavený ako programovateľné logické pole . Riadiace signály generované generátorom matice sa dávajú ako vstup do nasledujúcej matice generátora a kombinujú sa s časovacími signálmi časovacej jednotky, ktorá obsahuje obdĺžnikové vzory.

Na načítanie novej inštrukcie sa riadiaca jednotka zmení na počiatočnú fázu vykonania novej inštrukcie. Riadiaca jednotka zostáva v počiatočnom alebo prvom stupni, pokiaľ sa nezmenia časovacie signály, vstupné signály a stavy výučby počítača. Zmena stavu riadiacej jednotky sa môže zvýšiť, ak dôjde k zmene ktoréhokoľvek z generovaných signálov.

Keď dôjde k externému signálu alebo prerušeniu, riadiaca jednotka prejde do ďalšieho stavu a vykoná spracovanie signálu prerušenia. Príznaky a stavy sa používajú na výber požadovaných stavov na vykonanie vykonávacieho cyklu inštrukcie.

V poslednom stave riadiaca jednotka načíta nasledujúcu inštrukciu a odošle výstup do počítadla programu, potom do registra adresy pamäte, do vyrovnávacej pamäte a potom do registra inštrukcií, aby inštrukciu prečítala. Nakoniec, ak je posledná inštrukcia (ktorá je načítaná riadiacou jednotkou) koncová inštrukcia, potom prejde do prevádzkového stavu procesora a počká, kým používateľ nenasmeruje ďalší program.

Mikroprogramovaná riadiaca jednotka

V tomto type sa riadiaca pamäť používa na ukladanie riadiacich signálov, ktoré sa kódujú počas vykonávania programu. Riadiaci signál sa negeneruje okamžite a dekóduje sa, pretože mikroprogram ukladá pole adresy do riadiaceho úložiska. Celý proces je na jednej úrovni.

Mikrooperácie sa vykonávajú za účelom vykonania mikroinštrukcií v programe. Bloková schéma mikroprogramovanej riadiacej jednotky je zobrazená vyššie. Z diagramu sa adresa mikro-inštrukcie získa z registra adries riadiacej pamäte. Všetky informácie o riadiacej jednotke sú trvale uložené v riadiacej pamäti nazývanej ROM.

Mikroprogramovaná riadiaca jednotka

Mikroprogramovaná riadiaca jednotka

Mikroinštrukcia z riadiacej pamäte je držaná riadiacim registrom. Pretože mikroinštrukcia má formu riadiaceho slova (obsahuje binárne riadiace hodnoty), je potrebné na spracovanie údajov vykonať jednu alebo viac mikrooperácií.

Počas vykonávania mikro-inštrukcií nasledujúci generátor adries vypočítal ďalšiu adresu mikro-inštrukcie a potom poslal do registra riadiacich adries, aby prečítal ďalšiu mikro-inštrukciu.
Sekvencia mikrooperácií mikroprogramu je vykonávaná ďalším generátorom adries a slúži ako sekvencer mikroprogramov na získanie adresy sekvencie, tj. Načítaná z riadiacej pamäte.

Verilogový kód pre riadiacu jednotku

Verilogový kód riadiacej jednotky je uvedený nižšie.

`zahrnúť„ 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_DATA_R1, RF_DATA_R_

// Výstupné signály
// Výstupy pre súbor registra

výstup [`DATA_INDEX_LIMIT: 0] RF_DATA_W
výstup [`ADDRESS_INDEX_LIMIT: 0] RF_ADDR_W, RF_ADDR_R1, RF_ADDR_R2
výstup RF_READ, RF_WRITE

// Výstupy pre ALU
výstup [`DATA_INDEX_LIMIT: 0] ALU_OP1, ALU_OP2
výstup [`ALU_OPRN_INDEX_LIMIT: 0] ALU_OPRN

// Výstupy pre pamäť
výstup [`ADDRESS_INDEX_LIMIT: 0] MEM_ADDR
výstup MEM_READ, MEM_WRITE

// Vstupné signály
vstup [`DATA_INDEX_LIMIT: 0] RF_DATA_R1, RF_DATA_R2, ALU_RESULT
vstup NULA, CLK, RST

// Signál Inout
inout [`DATA_INDEX_LIMIT: 0] MEM_DATA

// Stavové siete
drôt [2: 0] proc_state

// drží hodnotu počítadla programu, uloží aktuálnu inštrukciu, register ukazovateľa zásobníka

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] state, next_state

PROC_SM stavový stroj (.STATE (proc_state) ,. CLK (CLK) ,. RST (RST))

vždy @ (posedge CLK)
začať
ak (RST)
štát<= RST
inak
štát<= next_state

koniec

vždy @ (štát)
začať

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

prípad (štát)

`PROC_FETCH: začať
next_state = `PROC_DECODE
MEM_READ = 1’b1
RF_ADDR_R1 = 1’b0 RF_ADDR_R2 = 1’b0
RF_ADDR_W = 1’b1
koniec

`PROC_DECODE: začať
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
koniec

`PROC_EXE: začať
next_state = `PROC_MEM
ALU_OP1 = 1’b1 ALU_OP2 = 1’b1 ALU_OPRN = 1’b1
RF_ADDR_R1 = 1’b0
koniec

`PROC_MEM: začať
next_state = `PROC_WB
MEM_READ = 1’b1 MEM_WRITE = 1’b0
koniec

`PROC_WB: začať
next_state = `PROC_FETCH
MEM_READ = 1’b1 MEM_WRITE = 1’b0
koniec
koncovka

koniec
endmodul

modul PROC_SM (STAV, CLK, RST)
// zoznam vstupov
vstup CLK, RST
// zoznam výstupov
výstup [2: 0] ŠTÁT

// vstupný zoznam
vstup CLK, RST
// výstupný zoznam
výstup STAV

reg [2: 0] ŠTÁT
reg [1: 0] stav
reg [1: 0] next_state

reg PC_REG, INST_REG, SP_REF

`definujte PROC_FETCH 3’h0
`definujte PROC_DECODE 3’h1
`definujte PROC_EXE 3’h2
`definujte PROC_MEM 3’h3
`definujte PROC_WB 3’h4

// iniciácia stavu
počiatočné
začať
stav = 2’bxx
next_state = `PROC_FETCH
koniec

// resetovanie spracovania signálu
always @ (posedge RST)
začať
stav = `PROC_FETCH
next_state = `PROC_FETCH
koniec
vždy @ (posedge CLK)
začať
state = next_state
koniec
vždy @ (štát)
začať
if (state === `PROC_FETCH)
začať
next_state = `PROC_DECODE

print_instruction (INST_REG)
koniec

if (state === `PROC_DECODE)
začať
next_state = `PROC_EXE

koniec

if (stav === `PROC_EXE)
začať
next_state = `PROC_MEM

print_instruction (SP_REF)
koniec

if (state === `PROC_MEM)
začať
next_state = `PROC_WB

koniec

if (state === `PROC_WB)
začať
next_state = `PROC_FETCH

print_instruction (PC_REG)
koniec
koniec

úloha print_instruction

vstup [`DATA_INDEX_LIMIT: 0] inšt

reg [5: 0] operačný kód
reg [4: 0] rs
reg [4: 0] rt
reg [4: 0] rd
reg [4: 0] simulovaná reg [5: 0] fungujúca reg [15: 0] okamžitá reg [25: 0] adresa

začať

// rozobrať inštrukciu
// typ R.

{opcode, rs, rt, rd, shamt, funct} = inšt

// typ I.
{opcode, rs, rt, okamžitý} = inšt
// typ J.
{opcode, address} = inšt
$ write („@% 6dns -> [0X% 08h]“, $ time, inst)
case (operačný kód) // R-Type
6'h00: štart
prípad (funkcia)

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 („and r [% 02d], r [% 02d], r [% 02d]“, rs, rt, rd)
6’h25: $ write („alebo r [% 02d], r [% 02d], r [% 02d]“, rs, rt, rd)
6’h27: $ write („ani 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)
predvolené: $ write (“”)
koncovka
koniec

// typ I.

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

// Typ J.

6’h02: $ write („jmp 0X% 07h“, adresa)
6’h03: $ write („jal 0X% 07h“, adresa)
6’h1b: $ write („tlačiť“)
6’h1c: $ write („pop“)
predvolené: $ write (“”)
koncovka
$ write („ n“)
koniec
ukončiť úlohu
koncový modul

Časté otázky

1). Aká je práca riadiacej jednotky?

Úlohou riadiacej jednotky je usmerňovať tok údajov alebo pokynov na vykonávanie procesorom počítača. Riadi, spravuje a koordinuje hlavnú pamäť, ALU, registre, vstupné a výstupné jednotky. Načíta pokyny a generuje riadiace signály pre vykonanie.

2). Čo je to riadiaca pamäť?

Riadiacou pamäťou je zvyčajne RAM alebo ROM na ukladanie adresy a údajov riadiaceho registra.

3). Čo je riadiaca jednotka Wilkes?

Postupné a kombinačné obvody pevne zapojenej riadiacej jednotky sú nahradené riadiacou jednotkou Wilkes. Používa pamäťovú jednotku na ukladanie sekvencií pokynov mikroprogramu.

4). Čo je to pevne zapojená riadiaca jednotka?

Drôtová riadiaca jednotka generuje riadiace signály zmenou z jedného stavu do druhého v každom hodinovom impulze bez akejkoľvek fyzickej zmeny v obvode. Generovanie riadiacich signálov závisí od signálu pokynov, dekodéra a signálov prerušenia.

5). Čo je to riadiaca pamäť?

Informácie o riadiacej jednotke alebo údaje sú dočasne alebo trvalo uložené v riadiacej pamäti.
Ovládacia pamäť je dvoch typov. Sú to pamäť s náhodným prístupom (RAM) a pamäť iba na čítanie (ROM).

Jedná sa teda o definíciu, komponenty, dizajn, diagram, funkcie a typy riadiacej jednotky . Je tu pre vás otázka: „Aký je účel registra kontrolných adries?“