Kontrol Birimi Nedir: Bileşenler ve Tasarımı

Sorunları Ortadan Kaldırmak Için Enstrümanımızı Deneyin





Kontrol birimi, bir programın yürütülmesi sırasında işlemleri yönetebilen bilgisayarlardaki merkezi işlem biriminin (CPU) ana bileşenidir. işlemci /bilgisayar. Kontrol ünitesinin ana işlevi, bir bilgisayarın belleğinden talimatlar almak ve yürütmektir. Kullanıcıdan giriş talimatını / bilgilerini alır ve bunu kontrol sinyalleri , bunlar daha sonra çalıştırılması için CPU'ya verilir. John Neumann tarafından geliştirilen Von Neumann mimarisinin bir parçası olarak dahil edilmiştir. Zamanlama sinyallerini ve kontrol sinyallerini sağlamaktan sorumludur ve bir programın CPU tarafından yürütülmesini yönetir. Modern bilgisayarlarda CPU'nun dahili bir parçası olarak bulunur. Bu makale, kontrol ünitesi hakkında eksiksiz bilgileri açıklamaktadır.

Kontrol Ünitesi nedir?

Kullanıcıdan giriş sinyalini / bilgileri / talimatı alan ve CPU'da yürütme için kontrol sinyallerine dönüştüren bileşen. Ana belleği, aritmetik ve mantık birimini (ALU), giriş ve çıkış cihazlarını kontrol eder ve yönlendirir ve ayrıca bir bilgisayarın CPU'suna gönderilen talimatlardan sorumludur. Talimatları şuradan alır: ana hafıza bir işlemcinin ve yazmaç içeriklerini içeren işlemci talimat yazmacına gönderilir.




Kontrol Ünitesi Blok Şeması

Kontrol Ünitesi Blok Şeması

Kontrol ünitesi, girişi kontrol sinyallerine dönüştürür ve ardından işlemciye gönderir ve bir programın yürütülmesini yönlendirir. Yapılması gereken işlemler bilgisayardaki işlemci tarafından yönlendirilir. Temelde Merkezi İşlem Birimi (CPU) ve Grafik İşleme Birimi (GPU), dahili parça olarak bir kontrol ünitesi gerektirir. Kontrol ünitesinin blok şeması yukarıda gösterilmiştir.



Bir Kontrol Ünitesinin Bileşenleri

Bu birimin bileşenleri talimattır kayıtlar CPU içindeki kontrol sinyalleri, veri yoluna / veri yolundan kontrol sinyalleri, kontrol veriyolu, giriş bayrakları ve saat sinyalleri.

Donanım bağlantılı kontrol ünitesinin bileşenleri komut kaydı (işlem kodu ve adres alanı içerir), zamanlama ünitesi, kontrol durumudur. jeneratör , kontrol sinyali oluşturma matrisi ve komut kod çözücüsü.
Mikro programlanmış kontrol biriminin bileşenleri, bir sonraki adres üreteci, bir kontrol adresi yazmacı, kontrol hafızası ve kontrol veri kaydıdır.

Fonksiyonlar

kontrol ünitesinin fonksiyonları aşağıdakileri dahil edin.


  • İşlemci ile diğer cihazlar arasındaki veri dizisi akışını yönlendirir.
  • Talimatları yorumlayabilir ve işlemcideki veri akışını kontrol edebilir.
  • Alınan talimatlardan veya talimat yazmacından gelen komutlardan kontrol sinyallerinin sırasını üretir.
  • ALU, veri arabellekleri ve bir bilgisayarın CPU'sundaki kayıtlar gibi yürütme birimlerini kontrol etme sorumluluğuna sahiptir.
  • Getirme, kod çözme, yürütmeyi yönetme ve sonuçları saklama becerisine sahiptir.
  • Verileri işleyemez ve saklayamaz
  • Verileri aktarmak için, giriş ve çıkış cihazları ile iletişim kurar ve bilgisayarın tüm birimlerini kontrol eder.

Kontrol Ünitesi Tasarımı

Bunun tasarımı iki kullanılarak yapılabilir bir kontrol birimi türleri aşağıdakileri içerir.

  • Hardwire tabanlı
  • Mikro programlanmış tabanlı (tek seviyeli ve iki seviyeli)

Kablolu Kontrol Birimi

Kablolu bir kontrol biriminin temel tasarımı yukarıda gösterilmiştir. Bu tipte, kontrol sinyalleri özel bir donanım tarafından üretilir. mantık devresi Devrenin yapısında herhangi bir değişiklik olmadan. Bunda, üretilen sinyal işlemcide çalıştırılmak üzere değiştirilemez.

Bir işlem kodunun temel verileri (bir talimatın işlem kodu, kod çözme için talimat kod çözücüsüne gönderilir. kod çözücü işlem kodundaki farklı veri türlerinin kodunu çözmek için kod çözücü kümesidir. Bu, bilgisayarın işlemcisi tarafından bir programın yürütülmesi için kontrol sinyallerinin üretilmesi için matris üretecine giriş olarak verilen aktif sinyallerin değerlerini içeren çıkış sinyalleri ile sonuçlanır.

Hardwire tabanlı Kontrol ünitesi

Hardwire tabanlı Kontrol ünitesi

Matris üreteci, kontrol biriminin durumlarını ve işlemciden çıkan sinyalleri (kesme sinyalleri) sağlar. Matrix, programlanabilir mantık dizisi . Matris üreteci tarafından üretilen kontrol sinyalleri, bir sonraki jeneratör matrisine girdi olarak verilir ve dikdörtgen desenler içeren zamanlama biriminin zamanlama sinyalleri ile birleşir.

Yeni komutun getirilmesi için, kontrol ünitesi yeni komutun yürütülmesi için bir başlangıç ​​aşamasına dönüşür. Kontrol ünitesi, bir bilgisayarın zamanlama sinyalleri, giriş sinyalleri ve talimat durumları değişmediği sürece ilk aşamada veya birinci aşamada kalır. Üretilen sinyallerin herhangi birinde herhangi bir değişiklik olması durumunda, kontrol ünitesinin durumundaki değişiklik yükseltilebilir.

Harici bir sinyal veya kesinti meydana geldiğinde, kontrol ünitesi bir sonraki duruma geçer ve kesinti sinyalinin işlenmesini gerçekleştirir. Bayraklar ve durumlar, talimatın yürütme döngüsünü gerçekleştirmek için istenen durumları seçmek için kullanılır.

Son durumda, kontrol ünitesi bir sonraki talimatı alır ve çıktıyı program sayacına, ardından hafıza adres yazmacına, tampon yazmacına ve sonra talimatı okumak için talimat yazmacına gönderir. Son olarak, son talimat (kontrol ünitesi tarafından getirilen) son talimat ise, işlemcinin çalışma durumuna geçer ve kullanıcı bir sonraki programı yönlendirene kadar bekler.

Mikro Programlı Kontrol Ünitesi

Bu tipte kontrol deposu, bir programın yürütülmesi sırasında kodlanan kontrol sinyallerini saklamak için kullanılır. Mikroprogram, kontrol deposundaki adres alanını sakladığından kontrol sinyali hemen üretilmez ve kodu çözülmez. Tüm süreç tek bir seviyedir.

Mikro işlemler, programdaki mikro komutların yürütülmesi için yapılır. Mikro programlanmış kontrol ünitesinin blok şeması yukarıda gösterilmiştir. Diyagramdan, mikro talimatın adresi kontrol belleği adres yazmacından elde edilir. Kontrol ünitesinin tüm bilgileri, ROM adı verilen kontrol hafızasında kalıcı olarak saklanır.

Mikro programlanmış tabanlı Kontrol Birimi

Mikro programlanmış tabanlı Kontrol Birimi

Kontrol belleğindeki mikro talimat, kontrol yazmacı tarafından tutulur. Mikro talimat, veri işleme için 1 veya daha fazla mikro işlemin gerçekleştirilmesi gereken kontrol kelimesi (ikili kontrol değerlerini içerir) biçiminde olduğundan.

Mikro talimatların yürütülmesi sırasında, bir sonraki adres üreteci mikro talimatın bir sonraki adresini hesapladı ve ardından bir sonraki mikro talimatı okumak için kontrol adresi yazmacına yolladı.
Bir mikro programın mikro işlem dizisi, bir sonraki adres üreteci tarafından gerçekleştirilir ve sıra adresini almak, yani kontrol belleğinden okumak için mikro program sıralayıcı olarak işlev görür.

Kontrol Ünitesi için Verilog Kodu

Kontrol Ünitesi için Verilog kodu aşağıda gösterilmiştir.

'' prj_definition.v 'içerir

modül 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_REK, MEM_WRITE, RFRITE_RF_DATA_)

// Çıkış sinyalleri
// Kayıt dosyası için çıktılar

çıktı [`DATA_INDEX_LIMIT: 0] RF_DATA_W
çıktı [`ADDRESS_INDEX_LIMIT: 0] RF_ADDR_W, RF_ADDR_R1, RF_ADDR_R2
çıktı RF_READ, RF_WRITE

// ALU için çıktılar
çıktı [`DATA_INDEX_LIMIT: 0] ALU_OP1, ALU_OP2
çıktı [`ALU_OPRN_INDEX_LIMIT: 0] ALU_OPRN

// Bellek için çıktılar
çıktı [`ADDRESS_INDEX_LIMIT: 0] MEM_ADDR
çıktı MEM_READ, MEM_WRITE

// Giriş sinyalleri
girdi [`DATA_INDEX_LIMIT: 0] RF_DATA_R1, RF_DATA_R2, ALU_RESULT
SIFIR, CLK, RST girişi

// Giriş sinyali
inout [`DATA_INDEX_LIMIT: 0] MEM_DATA

// Devlet ağları
tel [2: 0] proc_state

// program sayacı değerini tutar, geçerli talimatı saklar, yığın işaretçisi kaydı

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] durum, sonraki_devlet

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

her zaman @ (poz CLK)
başla
eğer (RST)
durum<= RST
Başka
durum<= next_state

son

her zaman @ (durum)
başla

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

durum (durum)

`PROC_FETCH: başla
next_state = `PROC_DECODE
MEM_READ = 1’b1
RF_ADDR_R1 = 1’b0 RF_ADDR_R2 = 1’b0
RF_ADDR_W = 1’b1
son

`PROC_DECODE: başla
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
son

PROC_EXE: başla
next_state = `PROC_MEM
ALU_OP1 = 1’b1 ALU_OP2 = 1’b1 ALU_OPRN = 1’b1
RF_ADDR_R1 = 1’b0
son

`PROC_MEM: başla
next_state = `PROC_WB
MEM_READ = 1’b1 MEM_WRITE = 1’b0
son

`PROC_WB: başla
next_state = `PROC_FETCH
MEM_READ = 1’b1 MEM_WRITE = 1’b0
son
son kasa

son
son modül

PROC_SM modülü (STATE, CLK, RST)
// girdi listesi
CLK girişi, RST
// çıktıların listesi
çıktı [2: 0] STATE

// giriş listesi
CLK girişi, RST
// çıktı listesi
STATE çıkışı

reg [2: 0] STATE
reg [1: 0] durumu
kayıt [1: 0] next_state

reg PC_REG, INST_REG, SP_REF

`PROC_FETCH 3’h0 tanımlayın
`PROC_DECODE 3’h1 tanımlayın
`PROC_EXE 3’h2'yi tanımlayın
`PROC_MEM 3’h3'ü tanımlayın
`PROC_WB 3’h4'ü tanımlayın

// devletin başlangıcı
ilk
başla
durum = 2’bxx
next_state = `PROC_FETCH
son

// sinyal işlemeyi sıfırla
her zaman @ (poz RST)
başla
state = `PROC_FETCH
next_state = `PROC_FETCH
son
her zaman @ (poz CLK)
başla
state = next_state
son
her zaman @ (durum)
başla
eğer (durum === `PROC_FETCH)
başla
next_state = `PROC_DECODE

print_instruction (INST_REG)
son

eğer (durum === `PROC_DECODE)
başla
next_state = `PROC_EXE

son

eğer (durum === `PROC_EXE)
başla
next_state = `PROC_MEM

print_instruction (SP_REF)
son

eğer (durum === `PROC_MEM)
başla
next_state = `PROC_WB

son

eğer (durum === `PROC_WB)
başla
next_state = `PROC_FETCH

print_instruction (PC_REG)
son
son

görev print_instruction

giriş [`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] acil kayıt [25: 0] adresi

başla

// talimatı ayrıştırın
// R tipi

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

// I tipi
{opcode, rs, rt, hemen} = inst
// J türü
{işlem kodu, adres} = örnek
$ yazma (“@% 6dns -> [0X% 08h]“, $ zaman, inst)
case (opcode) // R-Type
6'h00: başlangıç
durum (işlev)

6’daki 20: $ yazma ('r [% 02d], r [% 02d], r [% 02d]', rs, rt, rd ekle)
6’s22: $ yazma ('alt r [% 02d], r [% 02d], r [% 02d]', rs, rt, rd)
6’h2c: $ yazma ('mul r [% 02d], r [% 02d], r [% 02d]', rs, rt, rd)
6’h24: $ write ('ve r [% 02d], r [% 02d], r [% 02d]', rs, rt, rd)
6’h25: $ write (“veya r [% 02d], r [% 02d], r [% 02d]”, rs, rt, rd)
6’h27: $ yazma ('nor r [% 02d], r [% 02d], r [% 02d]', rs, rt, rd)
6’h2a: $ yazma ('slt r [% 02d], r [% 02d], r [% 02d]', rs, rt, rd)
06:00: $ yazma ('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)
varsayılan: $ yazma ('')
son kasa
son

// I tipi

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

// J-Tipi

6’h02: $ write ('jmp 0X% 07h', adres)
6’h03: $ write ('jal 0X% 07h', adres)
6’h1b: $ yazma ('itme')
6’h1c: $ write ('pop')
varsayılan: $ yazma ('')
son kasa
$ yazma (' n')
son
görevi bitir
son modül

SSS

1). Bir kontrol ünitesinin işi nedir?

Kontrol biriminin işi, bir bilgisayarın işlemcisi tarafından yürütülmesi için veri akışını veya talimatları yönlendirmektir. Ana belleği, ALU'yu, kayıtları, giriş ve çıkış birimlerini kontrol eder, yönetir ve koordine eder. Talimatları alır ve yürütme için kontrol sinyalleri üretir.

2). Kontrol hafızası nedir?

Kontrol hafızası, kontrol kaydının adresini ve verilerini saklamak için genellikle RAM veya ROM'dur.

3). Wilkes kontrol ünitesi nedir?

Sıralı ve kombinasyonel devreler kablolu kontrol ünitesinin yerini Wilkes kontrol ünitesi alır. Bir mikro programın komut dizilerini saklamak için bir depolama birimi kullanır.

4). Kablolu kontrol birimi nedir?

Fiziksel bağlantılı kontrol ünitesi, devrede herhangi bir fiziksel değişiklik olmaksızın her saat darbesinde bir durumdan diğerine geçerek kontrol sinyallerini üretir. Kontrol sinyallerinin üretilmesi, komut kaydına, kod çözücüye ve kesme sinyallerine bağlıdır.

5). Kontrol hafızası nedir?

Kontrol birimine ait bilgiler veya veriler, geçici veya kalıcı olarak kontrol belleğinde saklanır.
Kontrol belleği iki türdendir. Bunlar Rasgele Erişim Belleği (RAM) ve Salt Okunur Bellek (ROM) 'dur.

Dolayısıyla, bu tamamen tanım, bileşenler, tasarım, diyagram, işlevler ve Kontrol Birimi türleri . İşte size bir soru: 'Kontrol adresi kaydının amacı nedir?'