Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Industrial Internet of Things >> Tertanam

Apa itu Unit Kontrol :Komponen &Desainnya

Unit kontrol adalah komponen utama dari central processing unit (CPU) di komputer yang dapat mengarahkan operasi selama eksekusi suatu program oleh prosesor/komputer. Fungsi utama dari unit kontrol adalah untuk mengambil dan mengeksekusi 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. Hal ini bertanggung jawab untuk menyediakan sinyal waktu, dan sinyal kontrol dan mengarahkan pelaksanaan program oleh CPU. Ini termasuk sebagai bagian internal CPU di komputer modern. Artikel ini menjelaskan informasi lengkap tentang unit kontrol.


Apa itu Unit Kontrol?

Komponen yang menerima sinyal/informasi/instruksi input 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 prosesor dan dikirim ke register instruksi prosesor, yang berisi isi register.

Unit Kontrol Diagram Blok

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

Komponen Unit Kontrol

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

Komponen dari Hardwired control unit adalah instruction register (berisi opcode dan address field), timing unit, control state generator, control signal generation matrix, dan instruction decoder.
Komponen dari Microprogrammed control unit adalah alamat selanjutnya generator, register alamat kontrol, memori kontrol, dan register data kontrol.

Fungsi

Fungsi unit kontrol sertakan yang berikut ini.

Desain Unit Kontrol

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

Unit Kontrol Terprogram

Desain dasar unit kontrol terprogram ditunjukkan di atas. Pada tipe ini, sinyal kontrol dibangkitkan oleh rangkaian logika perangkat keras khusus tanpa perubahan dalam struktur rangkaian. Dalam hal ini, sinyal yang dihasilkan tidak dapat dimodifikasi untuk dieksekusi di prosesor.

Data dasar opcode (kode operasi dari suatu instruksi dikirim ke dekoder instruksi untuk decoding. Dekoder instruksi adalah kumpulan dekoder untuk memecahkan kode berbagai jenis data dalam opcode. Ini menghasilkan sinyal keluaran yang berisi nilai sinyal aktif yang diberikan sebagai input ke generator matriks untuk menghasilkan sinyal kontrol untuk eksekusi program oleh prosesor komputer.

Berbasis perangkat keras Unit kontrol

Generator matriks menyediakan status unit kontrol dan sinyal keluar dari prosesor (sinyal interupsi). Matriks dibangun sebagai larik logika yang dapat diprogram. Sinyal kontrol yang dihasilkan oleh generator matriks diberikan sebagai input ke matriks generator berikutnya dan digabungkan dengan sinyal 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 eksternal atau interupsi 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.


Dalam keadaan terakhir, unit kontrol mengambil instruksi berikutnya dan mengirimkan output ke program counter, kemudian ke register alamat memori, ke register buffer, dan kemudian ke register instruksi untuk membaca instruksi. Terakhir, jika instruksi terakhir (yang diambil oleh unit kontrol) adalah instruksi akhir, maka instruksi tersebut menuju ke status operasi prosesor dan menunggu hingga pengguna mengarahkan program berikutnya.

Unit Kontrol Terprogram Mikro

Dalam tipe ini, penyimpanan kontrol digunakan untuk menyimpan sinyal kontrol yang dikodekan selama eksekusi suatu program. Sinyal kontrol tidak segera dibangkitkan dan didekodekan karena program mikro menyimpan bidang alamat di penyimpanan kontrol. Seluruh proses adalah satu tingkat.

Operasi mikro dilakukan untuk eksekusi instruksi mikro dalam program. Diagram blok 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 dalam memori kontrol yang disebut ROM.

Berbasis mikroprogram Unit Kontrol

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

Selama eksekusi 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 mikro -program dilakukan oleh generator alamat berikutnya dan bertindak sebagai pengurut 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_DATAR_DATAR,> // Sinyal keluaran
// Keluaran 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;

// Output untuk memori
output [`ADDRESS_INDEX_LIMIT:0] MEM_ADDR;
output MEM_READ, MEM_WRITE;

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

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

// Status jaring
kawat [2:0] proc_state;

//menampung 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] status, next_state;

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

selalu @ (posedge CLK)
mulai
jika (RST)
status <=RST;
else
status <=next_state;

akhir

selalu @ (status)
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( status )

`PROC_FETCH :mulai
status_berikutnya =`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
berikutnya_status =`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
status_berikutnya =`PROC_MEM;
ALU_OP1 =1'b1; ALU_OP2 =1'b1; ALU_OPRN =1'b1;
RF_ADDR_R1 =1'b0;
akhir

`PROC_MEM:mulai
status_berikutnya =`PROC_WB;
MEM_READ =1'b1; MEM_WRITE =1’b0;
akhir

`PROC_WB:mulai
status_berikutnya =`PROC_FETCH;
MEM_READ =1'b1; MEM_WRITE =1’b0;
akhir
huruf akhir

akhir
endmodule;

modul PROC_SM(STATE,CLK,RST);
// daftar input
input CLK, RST;
// daftar output
output [2:0] STATE;

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

reg [2:0] STATE;
reg [1:0] state;
reg [1:0] next_state;

reg PC_REG, INST_REG, SP_REF;

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

// inisiasi keadaan
awal
mulai
keadaan =2'bxx;
keadaan_berikutnya =`PROC_FETCH;
akhir

// reset penanganan sinyal
selalu @ (posedge RST)
mulai
status =`PROC_FETCH;
status berikutnya =`PROC_FETCH;
akhir
selalu @ ( posedge CLK)
mulai
status =status_berikutnya;
akhir
selalu @(status)
mulai
jika (status ===`PROC_FETCH)
mulai
berikutnya_status =`PROC_DECODE;

print_instruction(INST_REG);
akhir

if (status ===`PROC_DECODE)
mulai
status_berikutnya =`PROC_EXE;

akhir

if (status ===`PROC_EXE)
mulai
status_berikutnya =`PROC_MEM;

print_instruction(SP_REF);
akhir

if (status ===`PROC_MEM)
mulai
status_berikutnya =`PROC_WB;

akhir

if (status ===`PROC_WB)
mulai
status_berikutnya =`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] palsu; fungsi reg [5:0]; reg [15:0] segera; reg [25:0] alamat;

mulai

// mengurai instruksi
// R-type

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

// I-type
{opcode, rs, rt, direct } =inst;
// J-type
{opcode, address} =inst;
$write(“ @ %6dns -> [0X%08h] “, $time, inst);
case(opcode) // Tipe-R
6'h00 :begin
case(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, palsu, rd);
6'h02:$write(“srl r[%02d], 0X%02h, r[%02d];”, rs, palsu, rd);
6'h08:$write(“jr r[%02d];”, rs);
default:$write(“”);
endcase
end

// Ketik-I

6'h08 :$write(“tambahkan 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 , segera);
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 :$tulis (“push;”);
6'h1c :$write(“pop;”);
default:$write(“”);
endcase
$write (“ \n”);
akhir
tugas akhir
akhir modul;

FAQ

1). Apa pekerjaan unit kontrol?

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

2). Apa itu memori kontrol?

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

3). Apa itu unit kontrol Wilkes?

Rangkaian sekuensial dan kombinasional dari unit kontrol terprogram digantikan oleh unit kontrol Wilkes. Ini menggunakan unit penyimpanan untuk menyimpan urutan instruksi dari program mikro.

4). Apa itu unit kontrol bawaan?

Unit kontrol bawaan menghasilkan sinyal kontrol dengan mengubah dari satu keadaan ke keadaan lain di setiap pulsa clock tanpa perubahan fisik di sirkuit. Pembangkitan sinyal kontrol bergantung pada register instruksi, dekoder, dan sinyal interupsi.

5). Apa itu memori kontrol?

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

Demikian penjelasan mengenai pengertian, komponen, desain, diagram, fungsi, dan jenis-jenis Control Unit. Berikut adalah pertanyaan untuk Anda, “Apa tujuan dari register alamat kontrol?”


Tertanam

  1. Apa itu Unit Kontrol :Komponen &Desainnya
  2. Apa itu Pemrograman Sistem Tertanam &Bahasanya
  3. Apa itu KONTROL NUMERIK [NC]?
  4. Dasar-dasar Desain Panel Kontrol
  5. Apa itu Kevlar? Panduan Singkat
  6. Apa itu Desain Arsitektur?
  7. Apa itu Mikroelektronika?
  8. Apa itu Kontrol Kualitas?
  9. Pencetakan 3D:Apa Dampaknya pada Pemesinan dan Desain Industri?
  10. Apa yang dimaksud dengan prototipe desain industri?