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

Unit Kontrol Dijelaskan: Komponen dan Desain dalam CPU

Unit kontrol adalah komponen utama dari unit pemrosesan pusat (CPU) dalam komputer yang dapat mengarahkan operasi selama eksekusi program oleh prosesor/komputer. Fungsi utama unit kontrol adalah mengambil dan mengeksekusi instruksi dari memori komputer. Ia menerima instruksi/informasi masukan dari pengguna dan mengubahnya menjadi sinyal kontrol, yang kemudian diberikan kepada CPU untuk eksekusi lebih lanjut. Ia dimasukkan sebagai bagian dari arsitektur Von Neumann yang dikembangkan oleh John Neumann. Ia bertanggung jawab untuk memberikan sinyal waktu dan sinyal kontrol serta mengarahkan eksekusi program oleh CPU. Ia dimasukkan sebagai bagian internal dari CPU dalam komputer modern. Artikel ini menjelaskan informasi lengkap tentang unit kontrol.


Apa Itu Unit Kontrol?

Komponen yang menerima sinyal/informasi/instruksi masukan dari pengguna dan mengubahnya menjadi sinyal kontrol untuk eksekusi dalam CPU. Ia mengontrol dan mengarahkan memori utama, unit aritmatika & logika (ALU), perangkat input dan output, dan juga bertanggung jawab atas instruksi yang dikirim ke CPU komputer. Ia mengambil instruksi dari memori utama prosesor dan mengirimkannya ke register instruksi prosesor, yang berisi isi register.

Unit Kontrol Dijelaskan: Komponen dan Desain dalam CPU
Diagram Blok Unit Kontrol

Unit kontrol mengubah masukan menjadi sinyal kontrol dan kemudian dikirim ke prosesor serta mengarahkan eksekusi program. Operasi yang harus dilakukan diarahkan oleh prosesor pada komputer. Utama Unit Pemrosesan Pusat (CPU) dan Unit Pemrosesan Grafis (GPU) memerlukan unit kontrol sebagai bagian internal. Diagram blok unit kontrol ditunjukkan di atas.

Komponen Unit Kontrol

Komponen unit ini adalah register instruksi, sinyal kontrol dalam CPU, sinyal kontrol ke/dari bus, bus kontrol, flag masukan, dan sinyal jam.

Komponen unit kontrol terpadu adalah register instruksi (berisi opcode dan bidang alamat), unit waktu, generator status kontrol, matriks pembangkitan sinyal kontrol, dan dekoder instruksi.
Komponen unit kontrol terprogram mikro adalah generator alamat berikutnya, register alamat kontrol, memori kontrol, dan register data kontrol.

Fungsi

Fungsi unit kontrol meliputi hal-hal berikut.

Desain Unit Kontrol

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

Unit Kontrol Terpadu

Desain dasar unit kontrol terpadu ditunjukkan di atas. Dalam jenis ini, sinyal kontrol dihasilkan oleh sirkuit logika hardware khusus tanpa perubahan pada struktur sirkuit. Dalam ini, sinyal yang dihasilkan tidak dapat dimodifikasi untuk eksekusi dalam prosesor.

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

Unit Kontrol Dijelaskan: Komponen dan Desain dalam CPU
Unit Kontrol Berbasis Kawat

Generator matriks menyediakan status unit kontrol dan sinyal keluar dari prosesor (sinyal gangguan). Matriks dibangun sebagai array logika terprogram. Sinyal kontrol yang dihasilkan oleh generator matriks diberikan sebagai input ke generator matriks berikutnya dan digabungkan dengan sinyal waktu dari unit waktu yang berisi pola persegi.

Untuk pengambilan instruksi baru, unit kontrol beralih ke tahap awal untuk eksekusi instruksi baru. Unit kontrol tetap di tahap awal atau tahap pertama selama sinyal waktu, sinyal masukan, dan status instruksi komputer tidak berubah. Perubahan dalam status unit kontrol dapat ditimbulkan jika ada perubahan pada salah satu sinyal yang dihasilkan.

Saat terjadi sinyal eksternal atau gangguan, unit kontrol beralih ke status berikutnya dan memproses sinyal gangguan. Flag dan status digunakan untuk memilih status yang diinginkan untuk melakukan siklus eksekusi instruksi.


Di status terakhir, unit kontrol mengambil instruksi berikutnya dan mengirim output ke program counter, 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 ia beralih ke status operasi prosesor dan menunggu sampai pengguna mengarahkan program berikutnya.

Unit Kontrol Terprogram Mikro

Dalam jenis ini, simpan kontrol digunakan untuk menyimpan sinyal kontrol yang dienkode selama eksekusi program. Sinyal kontrol tidak dihasilkan segera dan didekode karena mikroprogram menyimpan bidang alamat dalam simpan kontrol. Seluruh proses adalah satu level.

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

Unit Kontrol Dijelaskan: Komponen dan Desain dalam CPU
Unit Kontrol Berbasis Mikroprogram

Mikroinstruksi dari memori kontrol dipegang oleh register kontrol. Karena mikroinstruksi dalam bentuk kata kontrol (berisi nilai kontrol biner) yang memerlukan 1 atau lebih operasi mikro yang harus dilakukan untuk pemrosesan data.

Selama eksekusi mikroinstruksi, generator alamat berikutnya menghitung alamat berikutnya mikroinstruksi dan kemudian mengirimkannya ke register alamat kontrol untuk membaca mikroinstruksi berikutnya.
Urutan operasi mikro dari mikroprogram dilakukan oleh generator alamat berikutnya dan bertindak sebagai sequencer mikroprogram untuk mendapatkan alamat urutan, yaitu dibaca dari memori kontrol.

Kode Verilog untuk Unit Kontrol

Kode Verilog untuk Unit Kontrol ditunjukkan di bawah.

`include “prj_definition.v”

module 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_R2, ALU_RESULT, ZERO, CLK, RST)

// Sinyal output
// Output untuk register file

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

// Output untuk ALU
output [`DATA_INDEX_LIMIT:0] ALU_OP1, ALU_OP2;
output [`ALU_OPRN_INDEX_LIMIT:0] ALU_OPRN;

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

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

// Sinyal inout
inout [`DATA_INDEX_LIMIT:0] MEM_DATA;

// State nets
wire [2:0] proc_state;

//menyimpan nilai program counter, menyimpan instruksi saat ini, register stack pointer

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));

always @ (posedge CLK)
begin
if (RST)
state <= RST;
else
state <= next_state;

end

always @ (state)
begin

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;

case( state )

`PROC_FETCH : begin
next_state = `PROC_DECODE;
MEM_READ = 1’b1;
RF_ADDR_R1 = 1’b0; RF_ADDR_R2 = 1’b0;
RF_ADDR_W = 1’b1;
end

`PROC_DECODE : begin
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;
end

`PROC_EXE : begin
next_state = `PROC_MEM;
ALU_OP1 = 1’b1; ALU_OP2 = 1’b1; ALU_OPRN = 1’b1;
RF_ADDR_R1 = 1’b0;
end

`PROC_MEM: begin
next_state = `PROC_WB;
MEM_READ = 1’b1; MEM_WRITE = 1’b0;
end

`PROC_WB: begin
next_state = `PROC_FETCH;
MEM_READ = 1’b1; MEM_WRITE = 1’b0;
end
endcase

end
endmodule;

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

// daftar masukan
input CLK, RST;
// daftar keluaran
output 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 status
initial
begin
state = 2’bxx;
next_state = `PROC_FETCH;
end

// penanganan sinyal reset
always @ (posedge RST)
begin
state = `PROC_FETCH;
next_state = `PROC_FETCH;
end
always @ (posedge CLK)
begin
state = next_state;
end
always @(state)
begin
if (state === `PROC_FETCH)
begin
next_state = `PROC_DECODE;

print_instruction(INST_REG);
end

if (state === `PROC_DECODE)
begin
next_state = `PROC_EXE;

end

if (state === `PROC_EXE)
begin
next_state = `PROC_MEM;

print_instruction(SP_REF);
end

if (state === `PROC_MEM)
begin
next_state = `PROC_WB;

end

if (state === `PROC_WB)
begin
next_state = `PROC_FETCH;

print_instruction(PC_REG);
end
end

task print_instruction;

input [`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] immediate; reg [25:0] address;

begin

// uraikan instruksi
// R-type

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

// I-type
{opcode, rs, rt, immediate } = inst;
// J-type
{opcode, address} = inst;
$write(“@ %6dns -> [0X%08h] “, $time, inst);
case(opcode) // R-Type
6’h00 : begin
case(funct)

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(“or 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
end

// I-type

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

// J-Type

6’h02 : $write(“jmp 0X%07h;”, address);
6’h03 : $write(“jal 0X%07h;”, address);
6’h1b : $write(“push;”);
6’h1c : $write(“pop;”);
default: $write(“”);
endcase
$write (“\n”);
end
endtask
end module;

FAQs

1). Apa yang dilakukan unit kontrol?

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

2). Apa itu memori kontrol?

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

3). Apa itu unit kontrol Wilkes?

Sirkuit sekuensial dan kombinatorial dari unit kontrol terpadu digantikan oleh unit kontrol Wilkes. Ia menggunakan unit penyimpanan untuk menyimpan urutan instruksi mikroprogram.

4). Apa itu unit kontrol terpadu?

Unit kontrol terpadu menghasilkan sinyal kontrol dengan berubah dari satu status ke status lain pada setiap pulsa jam tanpa perubahan fisik pada sirkuit. Pembangkitan sinyal kontrol tergantung pada register instruksi, dekoder, dan sinyal gangguan.

5). Apa itu memori kontrol?

Informasi unit kontrol atau data disimpan secara sementara atau permanen dalam memori kontrol.
Memori kontrol ada dua jenis. Yaitu Random Access Memory (RAM) dan Read-Only Memory (ROM).

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


Tertanam

  1. Unit Kontrol Dijelaskan: Komponen dan Desain dalam CPU
  2. Pemrograman Sistem Tertanam: Bahasa, Arsitektur, dan Aplikasi
  3. Numerical Control (NC): Tinjauan Komprehensif Operasi Mesin Otomatis
  4. Menguasai Desain Panel Kontrol Listrik: Prinsip Utama & Praktik Terbaik
  5. Kevlar Dijelaskan: Tinjauan Komprehensif tentang Kekuatan dan Penggunaannya
  6. Memahami Desain Arsitektur: Prinsip, Praktik, dan Dampak
  7. Memahami Mikroelektronika: Ilmu Elektronika Kecil
  8. Memahami Kontrol Kualitas: Memastikan Keunggulan Konsisten
  9. Bagaimana Pencetakan 3D Merevolusi Pengolahan Mesin dan Desain Industri
  10. Peran Penting Prototipe Desain Industri dalam Pengembangan Produk