Apa itu Unit Kawalan: Komponen & Rekabentuknya

Cuba Instrumen Kami Untuk Menghapuskan Masalah





Unit kawalan adalah komponen utama dari unit pemprosesan pusat (CPU) dalam komputer yang dapat mengarahkan operasi semasa pelaksanaan program dengan pemproses / komputer. Fungsi utama unit kawalan adalah untuk mengambil dan melaksanakan arahan dari memori komputer. Ia menerima arahan / maklumat input dari pengguna dan mengubahnya menjadi isyarat kawalan , yang kemudian diberikan kepada CPU untuk pelaksanaan lebih lanjut. Ini termasuk sebagai sebahagian daripada seni bina Von Neumann yang dikembangkan oleh John Neumann. Ini bertanggung jawab untuk memberikan isyarat waktu, dan mengendalikan isyarat dan mengarahkan pelaksanaan program oleh CPU. Ini disertakan sebagai bagian dalaman CPU dalam komputer moden. Artikel ini menerangkan maklumat lengkap mengenai unit kawalan.

Apa itu Unit Kawalan?

Komponen yang menerima isyarat input / maklumat / arahan dari pengguna dan berubah menjadi isyarat kawalan untuk pelaksanaan dalam CPU. Ia mengawal dan mengarahkan memori utama, aritmetik & unit logik (ALU), peranti input dan output, dan juga bertanggung jawab atas arahan yang dihantar ke CPU komputer. Ia mengambil arahan dari ingatan utama pemproses dan dihantar ke daftar arahan pemproses, yang mengandungi isi daftar.




Rajah Blok Unit Kawalan

Rajah Blok Unit Kawalan

Unit kawalan menukar input menjadi isyarat kawalan dan kemudian dihantar ke pemproses dan mengarahkan pelaksanaan program. Operasi yang harus dilakukan diarahkan oleh pemproses di komputer. Terutamanya Unit Pemprosesan Pusat (CPU) dan Unit Pemprosesan Grafik (GPU) memerlukan unit kawalan sebagai bahagian dalaman. Gambarajah blok unit kawalan ditunjukkan di atas.



Komponen Unit Kawalan

Komponen unit ini adalah arahan daftar , isyarat kawalan dalam CPU, isyarat kawalan ke / dari bas, bas kawalan, bendera input, dan isyarat jam.

Komponen unit kawalan Hardwired adalah register arahan (mengandungi opcode dan bidang alamat), unit masa, keadaan kawalan penjana , kawalan matriks penjanaan isyarat, dan penyahkod arahan.
Komponen unit kawalan mikro yang diprogramkan adalah penjana alamat seterusnya, daftar alamat kawalan, memori kawalan, dan daftar data kawalan.

Fungsi

The fungsi unit kawalan sertakan perkara berikut.


  • Ini mengarahkan aliran urutan data antara pemproses dan peranti lain.
  • Ia dapat mentafsirkan arahan dan mengawal aliran data dalam pemproses.
  • Ini menghasilkan urutan isyarat kawalan dari arahan atau arahan yang diterima dari daftar arahan.
  • Ia memiliki tanggungjawab untuk mengendalikan unit pelaksanaan seperti ALU, penyangga data, dan daftar dalam CPU komputer.
  • Ia memiliki kemampuan untuk mengambil, menyahkod, menangani pelaksanaan, dan menyimpan hasil.
  • Ia tidak dapat memproses dan menyimpan data
  • Untuk memindahkan data, ia berkomunikasi dengan peranti input dan output dan mengendalikan semua unit komputer.

Reka Bentuk Unit Kawalan

Reka bentuk ini boleh dilakukan dengan menggunakan dua jenis unit kawalan yang merangkumi perkara berikut.

  • Berasaskan Hardwire
  • Berasaskan mikroprogram (satu peringkat dan dua peringkat)

Unit Kawalan Berkabel

Reka bentuk asas unit kawalan berkabel ditunjukkan di atas. Dalam jenis ini, isyarat kawalan dihasilkan oleh perkakasan khas litar logik tanpa perubahan struktur litar. Dalam hal ini, isyarat yang dihasilkan tidak dapat diubah untuk dilaksanakan dalam prosesor.

Data asas kod op (kod operasi arahan dihantar ke penyahkod arahan untuk penyahkodan. Arahan penyahkod adalah set penyahkod untuk menyahkod pelbagai jenis data dalam opcode. Ini menghasilkan isyarat output yang mengandungi nilai isyarat aktif yang diberikan sebagai input ke generator matriks untuk menghasilkan isyarat kawalan untuk pelaksanaan program oleh pemproses komputer.

Unit kawalan berasaskan Hardwire

Unit kawalan berasaskan Hardwire

Penjana matriks menyediakan keadaan unit kawalan dan isyarat keluar dari pemproses (isyarat gangguan). Matriks dibina sebagai pelbagai logik yang boleh diprogramkan . Isyarat kawalan yang dihasilkan oleh penjana matriks diberikan sebagai input ke matriks penjana seterusnya dan digabungkan dengan isyarat pemasaan unit pemasa yang mengandungi corak segi empat tepat.

Untuk pengambilan arahan baru, unit kawalan berubah menjadi tahap awal pelaksanaan instruksi baru. Unit kawalan tetap berada di tahap awal atau tahap pertama selagi isyarat masa, isyarat input, dan keadaan arahan komputer tidak berubah. Perubahan keadaan unit kawalan dapat dinaikkan sekiranya terdapat perubahan pada salah satu isyarat yang dihasilkan.

Apabila isyarat luaran atau gangguan berlaku, unit kawalan menuju ke keadaan seterusnya dan melakukan pemprosesan isyarat gangguan. Bendera dan keadaan digunakan untuk memilih keadaan yang diinginkan untuk menjalankan kitaran pelaksanaan arahan.

Dalam keadaan terakhir, unit kawalan mengambil arahan seterusnya dan mengirimkan output ke kaunter program, kemudian ke daftar alamat memori, ke daftar penyangga, dan kemudian ke daftar instruksi untuk membaca arahan. Akhirnya, jika arahan terakhir (yang diambil oleh unit kawalan) adalah arahan akhir, maka ia menuju ke keadaan operasi pemproses dan menunggu sehingga pengguna mengarahkan program seterusnya.

Unit Kawalan Terprogram Mikro

Dalam jenis ini, stor kawalan digunakan untuk menyimpan isyarat kawalan yang dikodkan semasa pelaksanaan program. Isyarat kawalan tidak dihasilkan dengan segera dan disahkod kerana mikroprogram menyimpan alamat di ruang kawalan. Seluruh proses adalah satu tahap.

Operasi mikro dilakukan untuk pelaksanaan arahan mikro dalam program. Gambarajah blok unit kawalan yang diprogramkan Mikro ditunjukkan di atas. Dari rajah, alamat arahan mikro diperoleh dari daftar alamat memori kawalan. Semua maklumat unit kawalan disimpan secara kekal dalam memori kawalan yang disebut ROM.

Unit Kawalan berasaskan mikroprogram

Unit Kawalan berasaskan mikroprogram

Arahan mikro dari memori kawalan dipegang oleh daftar kawalan. Oleh kerana arahan mikro adalah dalam bentuk kata kawalan (mengandungi nilai kawalan binari) yang memerlukan 1 atau lebih operasi mikro untuk pemprosesan data.

Semasa pelaksanaan arahan mikro, penjana alamat seterusnya menghitung alamat seterusnya arahan mikro dan kemudian hantar ke daftar alamat kawalan untuk membaca arahan mikro seterusnya.
Urutan operasi mikro program mikro dilakukan oleh penjana alamat seterusnya dan bertindak sebagai penjujukan mikroprogram untuk mendapatkan alamat urutan iaitu, dibaca dari memori kawalan.

Kod Verilog untuk Unit Kawalan

Kod Verilog untuk Unit Kawalan ditunjukkan di bawah.

'sertakan' 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, RF_DATA, RF_DATA, RF_DATA, RF_DATA

// Isyarat output
// Keluaran untuk fail pendaftaran

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

// Keluaran untuk ALU
output [`DATA_INDEX_LIMIT: 0] ALU_OP1, ALU_OP2
keluaran [`ALU_OPRN_INDEX_LIMIT: 0] ALU_OPRN

// Keluaran untuk ingatan
keluaran [`ADDRESS_INDEX_LIMIT: 0] MEM_ADDR
keluaran MEM_READ, MEM_WRITE

// Isyarat input
masukan [`DATA_INDEX_LIMIT: 0] RF_DATA_R1, RF_DATA_R2, ALU_RESULT
masukan ZERO, CLK, RST

// Isyarat keluar
masuk [`DATA_INDEX_LIMIT: 0] MEM_DATA

// Jaring negara
wayar [2: 0] proc_state

// menyimpan nilai kaunter program, menyimpan arahan semasa, menumpuk daftar penunjuk

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

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

selalu @ (posedge CLK)
bermula
sekiranya (RST)
negeri<= RST
yang lain
negeri<= next_state

akhir

selalu @ (negeri)
bermula

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

kes (negeri)

`PROC_FETCH: mulakan
next_state = `PROC_DECODE
MEM_READ = 1'b1
RF_ADDR_R1 = 1'b0 RF_ADDR_R2 = 1'b0
RF_ADDR_W = 1'b1
akhir

`PROC_DECODE: mulakan
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
akhir

`PROC_EXE: mulakan
next_state = `PROC_MEM
ALU_OP1 = 1'b1 ALU_OP2 = 1'b1 ALU_OPRN = 1'b1
RF_ADDR_R1 = 1'b0
akhir

`PROC_MEM: mulakan
next_state = `PROC_WB
MEM_READ = 1'b1 MEM_WRITE = 1'b0
akhir

`PROC_WB: mulakan
next_state = `PROC_FETCH
MEM_READ = 1'b1 MEM_WRITE = 1'b0
akhir
huruf akhir

akhir
endmodul

modul PROC_SM (NEGERI, CLK, RST)
// senarai input
masukan CLK, RST
// senarai output
keluaran [2: 0] NEGERI

// senarai input
masukan CLK, RST
// senarai output
keluaran NEGERI

reg [2: 0] NEGERI
reg [1: 0] negeri
reg [1: 0] negara sebelah

reg PC_REG, INST_REG, SP_REF

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

// permulaan negara
awal
bermula
nyatakan = 2'bxx
next_state = `PROC_FETCH
akhir

// menetapkan semula pengendalian isyarat
sentiasa @ (posedge RST)
bermula
nyatakan = `PROC_FETCH
next_state = `PROC_FETCH
akhir
selalu @ (posedge CLK)
bermula
nyatakan = negeri seterusnya
akhir
selalu @ (negeri)
bermula
jika (nyatakan === `PROC_FETCH)
bermula
next_state = `PROC_DECODE

print_instruction (INST_REG)
akhir

jika (nyatakan === `PROC_DECODE)
bermula
next_state = `PROC_EXE

akhir

jika (nyatakan === `PROC_EXE)
bermula
next_state = `PROC_MEM

print_instruction (SP_REF)
akhir

jika (nyatakan === `PROC_MEM)
bermula
next_state = `PROC_WB

akhir

jika (nyatakan === `PROC_WB)
bermula
next_state = `PROC_FETCH

print_instruction (PC_REG)
akhir
akhir

tugas cetak_instruksi

masukan [`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] alamat segera [25: 0] alamat

bermula

// menghuraikan arahan
// Jenis R

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

// Jenis-I
{opcode, rs, rt, instant} = inst
// Jenis-J
{opcode, address} = inst
$ write ('@% 6dns -> [0X% 08h]', $ waktu, inst)
kes (opcode) // Jenis R
6'h00: mulakan
kes (fungsi)

6'h20: $ tulis ('tambah r [% 02d], r [% 02d], r [% 02d]', rs, rt, rd)
6'h22: $ tulis (“sub r [% 02d], r [% 02d], r [% 02d]”, rs, rt, rd)
6'h2c: $ tulis (“mul r [% 02d], r [% 02d], r [% 02d]”, rs, rt, rd)
6'h24: $ tulis ('dan ​​r [% 02d], r [% 02d], r [% 02d]', rs, rt, rd)
6’h25: $ tulis (“atau r [% 02d], r [% 02d], r [% 02d]”, rs, rt, rd)
6’h27: $ tulis (“nor r [% 02d], r [% 02d], r [% 02d]”, rs, rt, rd)
6'h2a: $ tulis (“slt r [% 02d], r [% 02d], r [% 02d]”, rs, rt, rd)
6’00: $ tulis (“sll r [% 02d],% 2d, r [% 02d]”, rs, shamt, rd)
6’h02: $ tulis (“srl r [% 02d], 0X% 02h, r [% 02d]”, rs, shamt, rd)
6'h08: $ tulis ('jr r [% 02d]', rs)
lalai: $ tulis (“”)
huruf akhir
akhir

// Jenis-I

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

// Jenis-J

6'h02: $ tulis ('jmp 0X% 07h', alamat)
6'h03: $ tulis ('jal 0X% 07h', alamat)
6'h1b: $ tulis ('tolak')
6'h1c: $ tulis ('pop')
lalai: $ tulis (“”)
huruf akhir
$ tulis (' n')
akhir
tugas akhir
modul akhir

Soalan Lazim

1). Apakah kerja unit kawalan?

Tugas unit kawalan adalah untuk mengarahkan aliran data atau arahan pelaksanaan oleh pemproses komputer. Ia mengawal, mengurus dan mengkoordinasikan memori utama, ALU, register, unit input, dan output. Ia mengambil arahan dan menghasilkan isyarat kawalan untuk pelaksanaannya.

2). Apakah memori kawalan?

Memori kawalan biasanya RAM atau ROM untuk menyimpan alamat dan data daftar kawalan.

3). Apakah unit kawalan Wilkes?

Berurutan dan litar gabungan unit kawalan kabel digantikan oleh unit kawalan Wilkes. Ia menggunakan unit simpanan untuk menyimpan urutan arahan program mikro.

4). Apakah unit kawalan kabel?

Unit kawalan berkabel menghasilkan isyarat kawalan dengan menukar dari satu keadaan ke keadaan lain dalam setiap denyutan jam tanpa perubahan fizikal dalam litar. Penghasilan isyarat kawalan bergantung pada isyarat arahan, penyahkod dan isyarat gangguan.

5). Apakah memori kawalan?

Maklumat unit kawalan atau data disimpan sementara atau secara kekal dalam memori kawalan.
Memori kawalan terdiri daripada dua jenis. Mereka adalah Memori Akses Rawak (RAM) dan Memori Hanya Baca (ROM).

Oleh itu, ini semua mengenai definisi, komponen, reka bentuk, rajah, fungsi, dan jenis Unit Kawalan . Berikut adalah pertanyaan untuk Anda, 'Apa tujuan daftar alamat kawalan?'