Mi a vezérlőegység: alkatrészek és kialakítása

Próbálja Ki A Műszerünket A Problémák Kiküszöbölésére





A vezérlőegység a számítógépek központi processzorának (CPU) fő alkotóeleme, amely irányíthatja a műveleteket egy program végrehajtása során a a processzor /számítógép. A vezérlőegység fő funkciója az utasítások lekérése és végrehajtása a számítógép memóriájából. Megkapja a beviteli utasítást / információt a felhasználótól és átalakítja vezérlőjelek , amelyeket ezután a CPU-nak adnak további végrehajtás céljából. A John Neumann által kifejlesztett Von Neumann építészet része. Feladata az időzítési és vezérlőjelek biztosítása, valamint irányítja a program végrehajtását a CPU által. A modern számítógépek CPU belső részeként szerepel. Ez a cikk a vezérlőegységről tartalmaz teljes információkat.

Mi az a vezérlőegység?

Az a komponens, amely fogadja a bemeneti jelet / információt / utasítást a felhasználótól, és átalakul vezérlőjelekké a CPU végrehajtásához. Irányítja és irányítja a fő memóriát, az aritmetikai és logikai egységet (ALU), a bemeneti és kimeneti eszközöket, valamint felelős a számítógép CPU-jába küldött utasításokért. Letölti az utasításokat a fő memória egy processzorról, és elküldik a processzor utasításregiszterének, amely tartalmazza a regiszter tartalmát.




Vezérlőegység blokkdiagramja

Vezérlőegység blokkdiagramja

A vezérlőegység átalakítja a bemenetet vezérlőjelekké, majd elküldi a processzornak, és irányítja a program végrehajtását. Az elvégzendő műveleteket a processzor irányítja a számítógépen. Főleg központi processzor (CPU) és Grafikus feldolgozó egység (GPU) vezérlőegységet igényel belső részként. A vezérlőegység blokkvázlata fent látható.



Vezérlőegység alkatrészei

Ennek az egységnek az alkatrészei utasítások nyilvántartások , vezérlőjelek a CPU-n belül, vezérlőjelek a buszról / buszról, vezérlő busz, bemeneti jelzők és órajelek.

A vezetékes vezérlő egységei az utasításregiszter (tartalmazza az opkódot és a címmezőt), az időzítő egység, a vezérlés állapota generátor , vezérlőjelgeneráló mátrix és utasításdekóder.
A Micro programozott vezérlőegység komponensei a következő címgenerátor, egy vezérlési címregiszter, vezérlő memória és vezérlő adat regiszter.

Funkciók

A a vezérlőegység funkciói a következőket tartalmazzák.


  • Irányítja az adatfolyamot a processzor és más eszközök között.
  • Értelmezni tudja az utasításokat és vezérli az adatfolyamot a processzorban.
  • A vezérlőjelek sorrendjét generálja az utasításregiszterből vett fogadott utasításokból vagy parancsokból.
  • Feladata, hogy ellenőrizze a végrehajtó egységeket, például az ALU-t, az adatpuffereket és a regisztrációkat a számítógép CPU-jában.
  • Képes lekérni, dekódolni, kezelni a végrehajtást és tárolni az eredményeket.
  • Nem tudja feldolgozni és tárolni az adatokat
  • Az adatok továbbításához kommunikál a bemeneti és kimeneti eszközökkel, és vezérli a számítógép összes egységét.

A vezérlőegység kialakítása

Ennek megtervezése kettő felhasználásával végezhető el típusú vezérlőegységek amelyek a következőket tartalmazzák.

  • Hardver alapú
  • Mikroprogramozott alapú (egyszintű és kétszintes)

Vezetékes vezérlőegység

A vezetékes vezérlőegység alapkialakítása a fent látható. Ebben a típusban a vezérlőjeleket egy speciális hardver generálja logikai áramkör az áramkör szerkezetének változása nélkül. Ebben a generált jel nem módosítható a processzorban történő végrehajtáshoz.

Az opcode alapadatai (egy utasítás műveleti kódját dekódolás céljából elküldik az utasításdekóderhez dekóder az a dekóderkészlet, amely különböző típusú adatokat dekódol az opkódban. Ennek eredményeként olyan kimeneti jelek keletkeznek, amelyek az aktív jelek értékeit tartalmazzák, amelyeket bemenetként adnak meg a mátrixgenerátornak, hogy vezérlőjeleket generáljanak egy program végrehajtására a számítógép processzora által.

Hardwire alapú vezérlőegység

Hardwire alapú vezérlőegység

A mátrixgenerátor biztosítja a vezérlőegység állapotát és a processzorból érkező jeleket (megszakítási jeleket). A Mátrix a programozható logikai tömb . A mátrixgenerátor által generált vezérlőjeleket a következő generátormátrix bemeneteként adjuk meg, és ezek kombinálódnak a téglalap alakú mintákat tartalmazó időzítő egység időzítési jeleivel.

Új utasítás beolvasása érdekében a vezérlőegység az új utasítás végrehajtásának kezdeti szakaszává válik. A vezérlőegység mindaddig a kezdeti vagy első szakaszban marad, amíg a számítógép időzítési jelei, bemeneti jelei és utasításai nem változnak. A vezérlőegység állapotának változása megemelhető, ha a generált jelek bármelyikében változás következik be.

Külső jel vagy megszakítás bekövetkezésekor a vezérlőegység a következő állapotba lép, és elvégzi a megszakítási jel feldolgozását. A zászlók és állapotok arra szolgálnak, hogy kiválasszák a kívánt állapotokat az utasítás végrehajtási ciklusának végrehajtásához.

Az utolsó állapotban a vezérlő lekéri a következő utasítást, és a kimenetet elküldi a programszámlálónak, majd a memória címregiszterbe, a pufferregiszterbe, majd az utasításregiszterbe az utasítás elolvasása érdekében. Végül, ha az utolsó utasítás (amelyet a vezérlőegység beolvas) a végutasítás, akkor az a processzor működési állapotába megy, és megvárja, amíg a felhasználó irányítja a következő programot.

Mikroprogramozott vezérlőegység

Ebben a típusban a vezérlőtárolót a program végrehajtása során kódolt vezérlőjelek tárolására használják. A vezérlőjel nem jön létre azonnal és dekódolódik, mert a mikroprogram tárolja a címmezőt a vezérlőtárban. Az egész folyamat egyetlen szint.

A mikroműveleteket a program mikro-utasításainak végrehajtására végzik. A Micro programozott vezérlő blokkvázlata fent látható. A diagramból a mikrotanulmány címét megkapjuk a vezérlő memória címregiszteréből. A vezérlőegység összes információja állandóan a ROM nevű vezérlő memóriában van tárolva.

Mikroprogramozott alapú vezérlőegység

Mikroprogramozott alapú vezérlőegység

A vezérlő memóriából származó mikro-utasítást a vezérlő regiszter tartja. Mivel a mikroutasítás vezérlőszó formájában van (bináris vezérlőértékeket tartalmaz), amelynek az adatfeldolgozáshoz 1 vagy több mikroműveletet kell végrehajtania.

A mikro-utasítások végrehajtása során a következő cím-generátor kiszámította a mikro-utasítás következő címét, majd elküldte a vezérlő cím-regiszterbe, hogy elolvassa a következő mikro-utasítást.
A mikroprogramok mikroműveleteinek sorrendjét a következő címgenerátor hajtja végre, és mikroprogram-szekvenszerként működik, hogy megkapja a szekvencia címet, azaz olvassa a vezérlő memóriából.

Verilog kód a vezérlőegységhez

Az alábbiakban a Vezérlőegység Verilog kódja látható.

`tartalmazza a„ prj_definition.v ”szót

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_1, RF_DATA_1

// Kimeneti jelek
// Kimenetek a regisztrációs fájlhoz

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

// ALU kimenetei
kimenet [`DATA_INDEX_LIMIT: 0] ALU_OP1, ALU_OP2
kimenet [`ALU_OPRN_INDEX_LIMIT: 0] ALU_OPRN

// Kimenetek a memóriához
kimenet [`ADDRESS_INDEX_LIMIT: 0] MEM_ADDR
kimenet MEM_READ, MEM_WRITE

// Bemeneti jelek
bemenet [`DATA_INDEX_LIMIT: 0] RF_DATA_R1, RF_DATA_R2, ALU_RESULT
bemenet ZERO, CLK, RST

// Inout jel
inout [`DATA_INDEX_LIMIT: 0] MEM_DATA

// Állami hálók
vezeték [2: 0] proc_state

// a program számláló értékét tárolja, tárolja az aktuális utasítást, verem mutató regisztert

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] állapot, következő állomás

PROC_SM állapot_gép (.STATE (proc_state), CLK (CLK), RST (RST))

mindig @ (posedge CLK)
kezdődik
ha (RST)
állapot<= RST
más
állapot<= next_state

vége

mindig @ (állam)
kezdődik

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

eset (állam)

`PROC_FETCH: kezdődik
következő állomás = 'PROC_DECODE
MEM_READ = 1’b1
RF_ADDR_R1 = 1’b0 RF_ADDR_R2 = 1’b0
RF_ADDR_W = 1’b1
vége

`PROC_DECODE: kezdődik
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
vége

`PROC_EXE: kezdődik
következő állomás = 'PROC_MEM
ALU_OP1 = 1’b1 ALU_OP2 = 1’b1 ALU_OPRN = 1’b1
RF_ADDR_R1 = 1’b0
vége

`PROC_MEM: kezdődik
következő állomás = 'PROC_WB
MEM_READ = 1’b1 MEM_WRITE = 1’b0
vége

`PROC_WB: kezdődik
következő állomás = 'PROC_FETCH
MEM_READ = 1’b1 MEM_WRITE = 1’b0
vége
végtag

vége
végmodul

modul PROC_SM (ÁLLAPOT, CLK, RST)
// bemenetek listája
bemenet CLK, RST
// kimenetek listája
kimenet [2: 0] ÁLLAPOT

// beviteli lista
bemenet CLK, RST
// kimeneti lista
kimenet STATE

reg [2: 0] ÁLLAM
reg [1: 0] állapot
reg [1: 0] következő állomás

reg PC_REG, INST_REG, SP_REF

`definiálja a PROC_FETCH 3'h0 értéket
`definiálja a PROC_DECODE 3'h1 értéket
`definiálja a PROC_EXE 3'h2 értéket
`definiálja a PROC_MEM 3'h3 értéket
`definiálja a PROC_WB 3'h4

// állapotindítás
a kezdeti
kezdődik
állapot = 2’bxx
következő állomás = 'PROC_FETCH
vége

// jelkezelés visszaállítása
mindig @ (posedge RST)
kezdődik
állapot = 'PROC_FETCH
következő állomás = 'PROC_FETCH
vége
mindig @ (posedge CLK)
kezdődik
állapot = következő állomás
vége
mindig @ (állam)
kezdődik
ha (állapot === `PROC_FETCH)
kezdődik
következő állomás = 'PROC_DECODE

print_instruction (INST_REG)
vége

if (állapot === `PROC_DECODE)
kezdődik
next_state = 'PROC_EXE

vége

if (állapot === `PROC_EXE)
kezdődik
következő állomás = 'PROC_MEM

print_instruction (SP_REF)
vége

if (állapot === `PROC_MEM)
kezdődik
következő állomás = 'PROC_WB

vége

ha (állapot === `PROC_WB)
kezdődik
következő állomás = 'PROC_FETCH

print_instruction (PC_REG)
vége
vége

feladat nyomtatási_utasítás

input [`DATA_INDEX_LIMIT: 0] inst

reg [5: 0] opcode
reg [4: 0] rs
reg [4: 0] rt
reg [4: 0]
reg [4: 0] shamt reg [5: 0] funct reg [15: 0] azonnali reg [25: 0] cím

kezdődik

// az utasítás elemzése
// R-típusú

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

// Gépelek
{opcode, rs, rt, azonnali} = inst
// J-típusú
{opcode, address} = inst
$ write (“@% 6dns -> [0X% 08h]“, $ time, inst)
ügy (opcode) // R-Type
6'h00: kezdés
eset (függvény)

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 („és r [% 02d], r [% 02d], r [% 02d]”, rs, rt, rd)
6’h25: $ write („vagy r [% 02d], r [% 02d], r [% 02d]”, rs, rt, rd)
6’h27: $ write („sem 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)
alapértelmezett: $ write (“”)
végtag
vége

// Gépelek

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

// J-Type

6’h02: $ write („jmp 0X% 07h”, cím)
6’h03: $ write („jal 0X% 07h”, cím)
6’h1b: $ write („push”)
6’h1c: $ write („pop”)
alapértelmezett: $ write (“”)
végtag
$ write (“ n”)
vége
utolsó feladat
végmodul

GYIK

1). Mi a vezérlőegység munkája?

A vezérlőegység feladata az adatáramlás vagy az utasítások irányítása a számítógép processzorának végrehajtására. Irányítja, kezeli és koordinálja a fő memóriát, az ALU-t, a regisztereket, a bemeneti és kimeneti egységeket. Behozza az utasításokat és vezérlőjeleket generál a végrehajtáshoz.

2). Mi az a vezérlő memória?

A vezérlő memória általában RAM vagy ROM a vezérlő regiszter címének és adatainak tárolására.

3). Mi a Wilkes vezérlőegység?

A szekvenciális és kombinációs áramkörök vezetékes vezérlőegységének helyébe a Wilkes vezérlőegység lép. Tárolóegységgel tárolja a mikroprogram utasításainak sorozatát.

4). Mi az a vezetékes vezérlőegység?

A vezetékes vezérlőegység úgy generálja a vezérlőjeleket, hogy minden óra impulzusban egyik állapotból a másikba vált, az áramkör fizikai változása nélkül. A vezérlőjelek generálása az utasításregisztertől, a dekódertől és a megszakítási jelektől függ.

5.) Mi az a vezérlő memória?

A vezérlőegység információit vagy adatait ideiglenesen vagy véglegesen tároljuk a vezérlőmemóriában.
A vezérlő memória kétféle. Ezek a véletlen hozzáférésű memória (RAM) és az írásvédett memória (ROM).

Így itt minden a definícióról, az alkotóelemekről, a tervezésről, az ábráról, a funkciókról és a típusú vezérlőegységek . Itt van egy kérdés az Ön számára: „Mi a célja az ellenőrzési címregiszternek?”