Apa itu Unit Kontrol: Komponen & Desainnya

Coba Instrumen Kami Untuk Menghilangkan Masalah





Unit kontrol adalah komponen utama dari unit pemrosesan pusat (CPU) di komputer yang dapat mengarahkan operasi selama pelaksanaan suatu program dengan prosesor /komputer. Fungsi utama unit kendali adalah untuk mengambil dan melaksanakan instruksi dari memori komputer. Ini menerima instruksi / informasi input dari pengguna dan mengubahnya menjadi sinyal kontrol , yang kemudian diberikan ke CPU untuk eksekusi lebih lanjut. Ini termasuk sebagai bagian dari arsitektur Von Neumann yang dikembangkan oleh John Neumann. Ini bertanggung jawab untuk menyediakan sinyal waktu, dan sinyal kontrol dan mengarahkan eksekusi program oleh CPU. Ini disertakan sebagai bagian internal CPU di komputer modern. Artikel ini menjelaskan informasi lengkap tentang unit kontrol.

Apa itu Unit Kontrol?

Komponen yang menerima sinyal input / informasi / instruksi dari pengguna dan diubah menjadi sinyal kontrol untuk dieksekusi di CPU. Ini mengontrol dan mengarahkan memori utama, unit aritmatika & logika (ALU), perangkat input dan output, dan juga bertanggung jawab atas instruksi yang dikirim ke CPU komputer. Ini mengambil instruksi dari memori utama dari prosesor dan dikirim ke register instruksi prosesor, yang berisi konten register.




Diagram Blok Unit Kontrol

Diagram Blok Unit Kontrol

Unit kontrol mengubah input menjadi sinyal kontrol dan kemudian dikirim ke prosesor dan mengarahkan eksekusi program. Operasi yang harus dilakukan diarahkan oleh prosesor di komputer. Terutama Central Processing Unit (CPU) dan Unit Pemrosesan Grafis (GPU) membutuhkan unit kontrol sebagai bagian internal. Diagram blok unit kontrol ditunjukkan di atas.



Komponen Unit Kontrol

Komponen unit ini adalah instruksi register , mengontrol sinyal di dalam CPU, mengontrol sinyal ke / dari bus, bus kontrol, sinyal input, dan sinyal clock.

Komponen unit kontrol Hardwired adalah register instruksi (berisi opcode dan kolom alamat), unit waktu, status kontrol generator , matriks pembangkitan sinyal kontrol, dan dekoder instruksi.
Komponen dari unit kendali terprogram Mikro adalah generator alamat berikutnya, register alamat kendali, memori kendali, dan register data kendali.

Fungsi

Itu fungsi unit kontrol termasuk yang berikut ini.


  • Ini mengarahkan aliran urutan data antara prosesor dan perangkat lain.
  • Itu dapat menafsirkan instruksi dan mengontrol aliran data di prosesor.
  • Ini menghasilkan urutan sinyal kontrol dari instruksi yang diterima atau perintah dari register instruksi.
  • Ini memiliki tanggung jawab untuk mengontrol unit eksekusi seperti ALU, buffer data, dan register di CPU komputer.
  • Ia memiliki kemampuan untuk mengambil, mendekode, menangani eksekusi, dan menyimpan hasil.
  • Itu tidak dapat memproses dan menyimpan data
  • Untuk mentransfer data, itu berkomunikasi dengan perangkat input dan output dan mengontrol semua unit komputer.

Desain Unit Kontrol

Desain ini bisa dilakukan dengan menggunakan dua jenis unit kontrol yang meliputi berikut ini.

  • Berbasis kabel
  • Berbasis terprogram (satu tingkat dan dua tingkat)

Unit Kontrol Berkabel

Desain dasar dari unit kontrol yang terpasang pada kabel ditunjukkan di atas. Dalam jenis ini, sinyal kontrol dihasilkan oleh perangkat keras khusus sirkuit logika tanpa ada perubahan pada struktur rangkaian. Dalam hal ini, sinyal yang dihasilkan tidak dapat dimodifikasi untuk dieksekusi di prosesor.

Data dasar dari sebuah opcode (kode operasi sebuah instruksi dikirim ke decoder instruksi untuk decoding. Instruksi tersebut decoder adalah kumpulan decoder untuk mendekode berbagai jenis data dalam opcode. Hal ini menghasilkan sinyal keluaran yang mengandung nilai sinyal aktif yang diberikan sebagai masukan ke generator matriks untuk menghasilkan sinyal kendali untuk pelaksanaan suatu program oleh prosesor komputer.

Unit Kontrol berbasis kabel

Unit Kontrol berbasis kabel

Generator matriks menyediakan status unit kontrol dan sinyal yang keluar dari prosesor (sinyal interupsi). Matriks dibangun sebagai file larik logika yang dapat diprogram . Sinyal kontrol yang dihasilkan oleh generator matriks diberikan sebagai masukan untuk matriks generator berikutnya dan digabungkan dengan sinyal pengaturan waktu dari unit waktu yang berisi pola persegi panjang.

Untuk pengambilan instruksi baru, unit kontrol berubah menjadi tahap awal untuk eksekusi instruksi baru. Unit kontrol tetap dalam tahap awal atau tahap pertama selama sinyal waktu, sinyal input, dan status instruksi komputer tidak berubah. Perubahan status unit kontrol dapat dinaikkan jika ada perubahan pada sinyal yang dihasilkan.

Ketika sinyal atau interupsi eksternal terjadi, unit kontrol beralih ke status berikutnya dan melakukan pemrosesan sinyal interupsi. Bendera dan status digunakan untuk memilih status yang diinginkan untuk melakukan siklus eksekusi instruksi.

Pada keadaan terakhir, unit kontrol mengambil instruksi berikutnya dan mengirimkan output ke penghitung program, kemudian ke register alamat memori, ke register buffer, dan kemudian ke register instruksi untuk membaca instruksi. Akhirnya, jika instruksi terakhir (yang diambil oleh unit kontrol) adalah instruksi akhir, maka ini masuk ke status operasi prosesor dan menunggu sampai pengguna mengarahkan program berikutnya.

Unit Kontrol Terprogram Mikro

Dalam tipe ini, penyimpanan kontrol digunakan untuk menyimpan sinyal kontrol yang dikodekan selama pelaksanaan program. Sinyal kontrol tidak dihasilkan dengan segera dan diterjemahkan karena program mikro menyimpan bidang alamat di penyimpanan kontrol. Seluruh proses adalah satu tingkat.

Operasi mikro dilakukan untuk menjalankan instruksi mikro dalam program. Diagram blok dari unit kontrol terprogram Mikro ditunjukkan di atas. Dari diagram, alamat instruksi mikro diperoleh dari register alamat memori kontrol. Semua info dari unit kontrol disimpan secara permanen di memori kontrol yang disebut ROM.

Unit Kontrol berbasis terprogram

Unit Kontrol berbasis terprogram

Instruksi mikro dari memori kontrol dipegang oleh register kontrol. Karena instruksi mikro dalam bentuk kata kontrol (berisi nilai kontrol biner) sehingga membutuhkan 1 atau lebih operasi mikro untuk dilakukan untuk pemrosesan data.

Selama pelaksanaan instruksi mikro, generator alamat berikutnya menghitung alamat berikutnya dari instruksi mikro dan kemudian mengirim ke register alamat kontrol untuk membaca instruksi mikro berikutnya.
Urutan operasi mikro dari program mikro dilakukan oleh generator alamat berikutnya dan bertindak sebagai sekuenser program mikro untuk mendapatkan alamat urutan yaitu, membaca dari memori kontrol.

Kode Verilog untuk Unit Kontrol

Kode Verilog untuk Unit Kontrol ditunjukkan di bawah ini.

`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_R1, RF_DATA)

// Sinyal keluaran
// Output untuk file register

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

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

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

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

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

// Jaring negara bagian
kawat [2: 0] proc_state

// memegang nilai penghitung program, menyimpan instruksi saat ini, register penunjuk tumpukan

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 state_machine (.STATE (proc_state) ,. CLK (CLK) ,. RST (RST))

selalu @ (posedge CLUB)
mulai
jika (RST)
negara<= RST
lain
negara<= next_state

akhir

selalu @ (negara bagian)
mulai

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

kasus (negara bagian)

`PROC_FETCH: mulai
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: mulai
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: mulai
next_state = `PROC_MEM
ALU_OP1 = 1’b1 ALU_OP2 = 1’b1 ALU_OPRN = 1’b1
RF_ADDR_R1 = 1’b0
akhir

`PROC_MEM: mulai
next_state = `PROC_WB
MEM_READ = 1’b1 MEM_WRITE = 1’b0
akhir

`PROC_WB: mulai
next_state = `PROC_FETCH
MEM_READ = 1’b1 MEM_WRITE = 1’b0
akhir
endcase

akhir
endmodule

modul PROC_SM (STATE, CLK, RST)
// daftar masukan
masukan CLK, RST
// daftar keluaran
keluaran [2: 0] NEGARA

// daftar masukan
masukan CLK, RST
// daftar keluaran
keluaran STATE

reg [2: 0] STATE
reg [1: 0] negara bagian
reg [1: 0] status_berikutnya

reg PC_REG, INST_REG, SP_REF

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

// inisiasi negara
awal
mulai
state = 2’bxx
next_state = `PROC_FETCH
akhir

// setel ulang penanganan sinyal
selalu @ (posedge R)
mulai
state = `PROC_FETCH
next_state = `PROC_FETCH
akhir
selalu @ (posedge CLUB)
mulai
state = next_state
akhir
selalu @ (negara bagian)
mulai
if (state === `PROC_FETCH)
mulai
next_state = `PROC_DECODE

print_instruction (INST_REG)
akhir

if (state === `PROC_DECODE)
mulai
next_state = `PROC_EXE

akhir

if (state === `PROC_EXE)
mulai
next_state = `PROC_MEM

print_instruction (SP_REF)
akhir

jika (sebutkan === `PROC_MEM)
mulai
next_state = `PROC_WB

akhir

if (state === `PROC_WB)
mulai
next_state = `PROC_FETCH

print_instruction (PC_REG)
akhir
akhir

tugas print_instruction

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 reg [25: 0] langsung

mulai

// parsing instruksi
// Tipe-R

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

// Saya mengetik
{opcode, rs, rt, segera} = inst
// Tipe-J
{opcode, address} = inst
$ write (“@% 6dns -> [0X% 08h]“, $ time, inst)
case (opcode) // Tipe-R
6'h00: mulai
kasus (fungsi)

6’h20: $ write (“tambahkan 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 (“dan r [% 02d], r [% 02d], r [% 02d]”, rs, rt, rd)
6’h25: $ write (“atau r [% 02d], r [% 02d], r [% 02d]”, rs, rt, rd)
6’h27: $ write (“nor 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)
default: $ write (“”)
endcase
akhir

// Saya mengetik

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

// Tipe-J

6’h02: $ write (“jmp 0X% 07h”, alamat)
6’h03: $ write (“jal 0X% 07h”, alamat)
6’h1b: $ write (“push”)
6’h1c: $ write (“pop”)
default: $ write (“”)
endcase
$ write (“ n”)
akhir
tugas akhir
modul akhir

FAQ

1). Apa pekerjaan unit kontrol?

Pekerjaan unit kontrol adalah mengarahkan aliran data atau instruksi untuk dieksekusi oleh prosesor komputer. Ia mengontrol, mengelola dan mengkoordinasikan memori utama, ALU, register, input, dan unit output. Ini mengambil instruksi dan menghasilkan sinyal kontrol untuk eksekusi.

2). Apa yang dimaksud dengan memori kontrol?

Memori kontrol biasanya RAM atau ROM untuk menyimpan alamat dan data register kontrol.

3). Apa itu unit kendali Wilkes?

Berurutan dan sirkuit kombinasional dari unit kontrol tertanam diganti dengan unit kontrol Wilkes. Ini menggunakan unit penyimpanan untuk menyimpan urutan instruksi dari program mikro.

4). Apa yang dimaksud dengan unit kontrol yang tertanam?

Unit kontrol yang terpasang pada kabel menghasilkan sinyal kontrol dengan mengubah dari satu kondisi ke kondisi lain di setiap pulsa clock tanpa perubahan fisik di sirkuit. Pembangkitan sinyal kontrol tergantung pada register instruksi, decoder, dan sinyal interupsi.

5). Apa yang dimaksud dengan memori kontrol?

Informasi dari unit kendali atau data disimpan sementara atau permanen dalam memori kendali.
Memori kontrol terdiri dari dua jenis. Mereka adalah Random Access Memory (RAM) dan Read-Only Memory (ROM).

Jadi, ini semua tentang definisi, komponen, desain, diagram, fungsi, dan jenis Unit Kontrol . Berikut pertanyaan untuk Anda, “Apa tujuan register alamat kontrol?”