कंट्रोल यूनिट क्या है: कंपोनेंट्स एंड इट्स डिजाइन

समस्याओं को खत्म करने के लिए हमारे साधन का प्रयास करें





नियंत्रण इकाई कंप्यूटर में एक केंद्रीय प्रसंस्करण इकाई (सीपीयू) का मुख्य घटक है जो किसी प्रोग्राम के निष्पादन के दौरान संचालन को निर्देशित कर सकता है प्रोसेसर /संगणक। नियंत्रण इकाई का मुख्य कार्य कंप्यूटर की मेमोरी से निर्देशों को प्राप्त करना और निष्पादित करना है। यह उपयोगकर्ता से इनपुट निर्देश / सूचना प्राप्त करता है और इसे इसमें रूपांतरित करता है नियंत्रण संकेतों , जो आगे के निष्पादन के लिए सीपीयू को दिया जाता है। यह जॉन न्यूमैन द्वारा विकसित वॉन न्यूमैन वास्तुकला के एक भाग के रूप में शामिल है। यह समय संकेत प्रदान करने के लिए जिम्मेदार है, और संकेतों को नियंत्रित करता है और सीपीयू द्वारा एक कार्यक्रम के निष्पादन को निर्देशित करता है। यह आधुनिक कंप्यूटरों में सीपीयू के आंतरिक भाग के रूप में शामिल है। यह आलेख नियंत्रण इकाई के बारे में पूरी जानकारी का वर्णन करता है।

कंट्रोल यूनिट क्या है?

घटक जो उपयोगकर्ता से इनपुट सिग्नल / सूचना / निर्देश प्राप्त करता है और सीपीयू में निष्पादन के लिए नियंत्रण संकेतों में परिवर्तित होता है। यह मुख्य मेमोरी, अंकगणित और तर्क इकाई (ALU), इनपुट और आउटपुट डिवाइसों को नियंत्रित और निर्देशित करता है, और कंप्यूटर के सीपीयू को भेजे गए निर्देशों के लिए भी जिम्मेदार है। यह से निर्देश प्राप्त करता है मुख्य स्मृति एक प्रोसेसर और प्रोसेसर निर्देश रजिस्टर को भेजा जाता है, जिसमें रजिस्टर सामग्री होती है।




नियंत्रण इकाई ब्लॉक आरेख

नियंत्रण इकाई ब्लॉक आरेख

नियंत्रण इकाई इनपुट को नियंत्रण संकेतों में परिवर्तित करती है और फिर प्रोसेसर को भेजती है और एक कार्यक्रम के निष्पादन का निर्देश देती है। जो ऑपरेशन करने हैं, वे कंप्यूटर पर प्रोसेसर द्वारा निर्देशित किए जाते हैं। मुख्य रूप से सेंट्रल प्रोसेसिंग यूनिट (सीपीयू) और ग्राफिकल प्रोसेसिंग यूनिट (GPU) को आंतरिक भाग के रूप में एक नियंत्रण इकाई की आवश्यकता होती है। नियंत्रण इकाई का ब्लॉक आरेख ऊपर दिखाया गया है।



एक नियंत्रण इकाई के घटक

इस इकाई के घटक निर्देश हैं रजिस्टरों , सीपीयू के भीतर नियंत्रण संकेतों, नियंत्रण संकेतों / से बस, नियंत्रण बस, इनपुट झंडे, और घड़ी संकेतों के लिए।

हार्डवाइड कंट्रोल यूनिट के घटक निर्देश रजिस्टर (ओपकोड और एड्रेस फील्ड), टाइमिंग यूनिट, कंट्रोल स्टेट हैं जनक , नियंत्रण संकेत पीढ़ी मैट्रिक्स, और अनुदेश डिकोडर।
माइक्रो प्रोग्राम कंट्रोल यूनिट के घटक अगले पता जनरेटर, एक नियंत्रण पता रजिस्टर, नियंत्रण मेमोरी और नियंत्रण डेटा रजिस्टर हैं।

कार्यों

नियंत्रण इकाई के कार्य निम्नलिखित को शामिल कीजिए।


  • यह प्रोसेसर और अन्य उपकरणों के बीच डेटा अनुक्रम के प्रवाह को निर्देशित करता है।
  • यह निर्देशों की व्याख्या कर सकता है और प्रोसेसर में डेटा के प्रवाह को नियंत्रित करता है।
  • यह प्राप्त निर्देशों या आदेश रजिस्टर से आदेशों से नियंत्रण संकेतों का अनुक्रम उत्पन्न करता है।
  • कंप्यूटर की सीपीयू में एएलयू, डेटा बफ़र्स और रजिस्टर जैसी निष्पादन इकाइयों को नियंत्रित करने की ज़िम्मेदारी है।
  • इसमें परिणाम प्राप्त करने, डिकोड करने, निष्पादन को संभालने और स्टोर करने की क्षमता है।
  • यह डेटा को प्रोसेस और स्टोर नहीं कर सकता है
  • डेटा को स्थानांतरित करने के लिए, यह इनपुट और आउटपुट डिवाइस के साथ संचार करता है और कंप्यूटर की सभी इकाइयों को नियंत्रित करता है।

कंट्रोल यूनिट का डिजाइन

इस का डिज़ाइन दो का उपयोग करके किया जा सकता है एक नियंत्रण इकाई के प्रकार जिसमें निम्नलिखित शामिल हैं।

  • हार्डवायर आधारित
  • माइक्रोप्रोग्राम्ड आधारित (एकल-स्तरीय और दो-स्तरीय)

कठोर नियंत्रण इकाई

हार्डवेयर्ड कंट्रोल यूनिट का मूल डिज़ाइन ऊपर दिखाया गया है। इस प्रकार में, नियंत्रण संकेत एक विशेष हार्डवेयर द्वारा उत्पन्न होते हैं तर्क सर्किट सर्किट की संरचना में कोई बदलाव किए बिना। इसमें, उत्पन्न संकेत को प्रोसेसर में निष्पादन के लिए संशोधित नहीं किया जा सकता है।

एक ओपकोड का मूल डेटा (एक निर्देश का संचालन कोड डिकोडिंग के लिए निर्देश डिकोडर को भेजा जाता है। निर्देश विकोडक ओपोड में विभिन्न प्रकार के डेटा को डिकोड करने के लिए डिकोडर्स का सेट है। इसका परिणाम आउटपुट संकेतों में होता है, जिसमें कंप्यूटर के प्रोसेसर द्वारा प्रोग्राम के निष्पादन के लिए नियंत्रण संकेत उत्पन्न करने के लिए मैट्रिक्स जनरेटर के इनपुट के रूप में दिए गए सक्रिय संकेतों के मान शामिल होते हैं।

हार्डवायर आधारित कंट्रोल यूनिट

हार्डवायर आधारित कंट्रोल यूनिट

मैट्रिक्स जनरेटर नियंत्रण इकाई और प्रोसेसर से बाहर संकेतों (रुकावट संकेतों) को प्रदान करता है। मैट्रिक्स के रूप में बनाया गया है निर्देशयोग्य तर्क सरणी । मैट्रिक्स जनरेटर द्वारा उत्पन्न नियंत्रण संकेतों को अगले जनरेटर मैट्रिक्स के इनपुट के रूप में दिया जाता है और उस समय इकाई के समय संकेतों के साथ संयोजन होता है जिसमें आयताकार पैटर्न होते हैं।

नए निर्देश प्राप्त करने के लिए, नियंत्रण इकाई नए निर्देश के निष्पादन के लिए एक प्रारंभिक चरण में बदल जाती है। नियंत्रण इकाई प्रारंभिक चरण या पहले चरण में बनी रहती है जब तक कि समय संकेत, इनपुट संकेत और एक कंप्यूटर के निर्देश के राज्य अपरिवर्तित होते हैं। यदि किसी भी उत्पन्न सिग्नल में कोई परिवर्तन होता है, तो नियंत्रण इकाई की स्थिति में परिवर्तन किया जा सकता है।

जब कोई बाहरी सिग्नल या इंटरप्ट होता है, तो कंट्रोल यूनिट अगले राज्य में जाती है और इंटरप्ट सिग्नल की प्रोसेसिंग करती है। निर्देशों के निष्पादन चक्र को निष्पादित करने के लिए वांछित राज्यों का चयन करने के लिए झंडे और राज्यों का उपयोग किया जाता है।

अंतिम स्थिति में, नियंत्रण इकाई अगला निर्देश प्राप्त करती है और आउटपुट को प्रोग्राम काउंटर पर भेजती है, फिर मेमोरी एड्रेस रजिस्टर को, बफर रजिस्टर को, और फिर इंस्ट्रक्शन को निर्देश को पढ़ने के लिए रजिस्टर करती है। अंत में, यदि अंतिम निर्देश (जिसे नियंत्रण इकाई द्वारा प्राप्त किया जाता है) अंतिम निर्देश है, तो यह प्रोसेसर के ऑपरेटिंग स्थिति में जाता है और तब तक इंतजार करता है जब तक उपयोगकर्ता अगले कार्यक्रम को निर्देशित नहीं करता है।

माइक्रो प्रोग्रामेड कंट्रोल यूनिट

इस प्रकार में, नियंत्रण स्टोर का उपयोग नियंत्रण संकेतों को संग्रहीत करने के लिए किया जाता है जो किसी प्रोग्राम के निष्पादन के दौरान एन्कोडेड होते हैं। नियंत्रण संकेत तुरंत उत्पन्न नहीं होता है और डिकोड हो जाता है क्योंकि नियंत्रण स्टोर में माइक्रोप्रोग्राम स्टोरेज फ़ील्ड को संबोधित करता है। पूरी प्रक्रिया एकल स्तर है।

कार्यक्रम में माइक्रो-निर्देशों के निष्पादन के लिए सूक्ष्म संचालन किया जाता है। माइक्रो प्रोग्राम कंट्रोल यूनिट का ब्लॉक आरेख ऊपर दिखाया गया है। आरेख से, माइक्रो-निर्देश का पता नियंत्रण मेमोरी एड्रेस रजिस्टर से प्राप्त होता है। नियंत्रण इकाई की सभी जानकारी स्थायी रूप से ROM नामक नियंत्रण मेमोरी में संग्रहीत होती है।

माइक्रोप्रोग्राम्ड आधारित नियंत्रण इकाई

माइक्रोप्रोग्राम्ड आधारित नियंत्रण इकाई

नियंत्रण मेमोरी से सूक्ष्म निर्देश नियंत्रण रजिस्टर द्वारा आयोजित किया जाता है। चूंकि माइक्रो-निर्देश नियंत्रण शब्द (बाइनरी कंट्रोल वैल्यू वाले) के रूप में होता है, जिसे डेटा प्रोसेसिंग के लिए 1 या अधिक माइक्रो-ऑपरेशन की आवश्यकता होती है।

माइक्रो-निर्देशों के निष्पादन के दौरान, अगला पता जनरेटर माइक्रो-निर्देश के अगले पते की गणना करता है और फिर अगले माइक्रो-निर्देश को पढ़ने के लिए कंट्रोल एड्रेस रजिस्टर पर भेजता है।
एक माइक्रो-प्रोग्राम के माइक्रो-ऑपरेशन का क्रम अगले एड्रेस जनरेटर द्वारा किया जाता है और सीक्वेंस एड्रेस यानी कंट्रोल मेमोरी से पढ़ने के लिए माइक्रोप्रोग्राम सिक्वेंसर के रूप में कार्य करता है।

नियंत्रण इकाई के लिए वेरिलोग कोड

नियंत्रण इकाई के लिए वेरिलॉग कोड नीचे दिखाया गया है।

`में शामिल हैं' prj_definition.v '

मॉड्यूल CONTROL_UNIT (MEM_DATA, RF_DATA_W, RF_ADDR_W, RF_ADDR_R1, RF_ADDR_R2, RF_READ, RF_WRITE, ALU_OP1, ALU_OPR, मेमू, मेमोरियल, मेमोरियल, मेमोरियल, मेमोरियल, मेमोरियल, MEM_DAD_R2)

// आउटपुट संकेत
// रजिस्टर फाइल के लिए आउटपुट

आउटपुट [`DATA_INDEX_LIMIT: 0] RF_DATA_W
आउटपुट [`ADDRESS_INDEX_LIMIT: 0] RF_ADDR_W, RF_ADDR_R1, RF_ADDR_R2
आउटपुट RF_READ, RF_WRITE

// ALU के लिए आउटपुट
आउटपुट [`DATA_INDEX_LIMIT: 0] ALU_OP1, ALU_OP2
आउटपुट [`ALU_OPRN_INDEX_LIMIT: 0] ALU_OPRN

// आउटपुट मेमोरी के लिए
आउटपुट [`ADDRESS_INDEX_LIMIT: 0] MEM_ADDR
आउटपुट MEM_READ, MEM_WRITE

// इनपुट संकेत
इनपुट [`DATA_INDEX_LIMIT: 0] RF_DATA_R1, RF_DATA_R2, ALU_RESULT
इनपुट ZERO, CLK, RST

// Inout सिग्नल
inout [`DATA_INDEX_LIMIT: 0] MEM_DATA

// स्टेट नेट
तार [2: 0] proc_state

// प्रोग्राम काउंटर वैल्यू रखता है, वर्तमान निर्देश, स्टैक पॉइंटर रजिस्टर को स्टोर करता है

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] राज्य, next_state

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

हमेशा @ (posedge CLK)
शुरू
अगर (RST)
राज्य<= RST
अन्य
राज्य<= next_state

समाप्त

हमेशा @ (राज्य)
शुरू

MEM_READ = 1'b0 MEM_WRITE = 1'b0 MEM_ADDR = 1'b0
ALU_OP1 = 1'b0 ALU_OP2 = 1b0 ALU_OPRN = 1 -b0
RF_ADDR_R1 = 1'b0 RF_ADDR_R2 = 1'b0 RF_ADDR_W = 1'b0 RF_DATA_W = 1'b0

मामला (राज्य)

`PROC_FETCH: शुरू
next_state = `PROC_DECODE
MEM_READ = 1'b1
RF_ADDR_R1 = 1'b0 RF_ADDR_R2 = 1'b0
RF_ADDR_W = 1'b1
समाप्त

`PROC_DECODE: शुरू करें
next_state = `PROC_EXE
MEM_ADDR = 1'b1
ALU_OP1 = 1'b1 ALU_OP2 = 1b1 ALU_OPRN = 1 -b1
MEM_WRITE = 1'b1
RF_ADDR_R1 = 1'b1 RF_ADDR_R2 = 1'b1
समाप्त

`PROC_EXE: शुरू
next_state = `PROC_MEM
ALU_OP1 = 1'b1 ALU_OP2 = 1b1 ALU_OPRN = 1 -b1
RF_ADDR_R1 = 1'b0
समाप्त

`PROC_MEM: प्रारंभ करें
next_state = `PROC_WB
MEM_READ = 1'b1 MEM_WRITE = 1'b0
समाप्त

`PROC_WB: शुरू
next_state = `PROC_FETCH
MEM_READ = 1'b1 MEM_WRITE = 1'b0
समाप्त
एंडकेस

समाप्त
अंतर्मुखी

मॉड्यूल PROC_SM (STATE, CLK, RST)
// इनपुट की सूची
इनपुट सीएलके, आरएसटी
// आउटपुट की सूची
आउटपुट [2: 0] स्टेट

// इनपुट सूची
इनपुट सीएलके, आरएसटी
// आउटपुट सूची
आउटपुट स्टेट

reg [2: 0] स्टेट
reg [1: 0] राज्य
reg [1: 0] अगला_स्टेट करें

reg PC_REG, INST_REG, SP_REF

`PROC_FETCH 3'h0 को परिभाषित करें
`PROC_DECODE को 3'h1 परिभाषित करें
`PROC_EXE 3'h2 परिभाषित करें
`PROC_MEM 3'h3 को परिभाषित करें
`PROC_WB 3'h4 को परिभाषित करें

// राज्य की दीक्षा
प्रारंभिक
शुरू
राज्य = 2'bxx
next_state = `PROC_FETCH
समाप्त

// रीसेट सिग्नल हैंडलिंग
हमेशा @ (आरएसटी लगाया गया)
शुरू
राज्य = `PROC_FETCH
next_state = `PROC_FETCH
समाप्त
हमेशा @ (posedge CLK)
शुरू
राज्य = अगला_स्टेट
समाप्त
हमेशा @ (राज्य)
शुरू
अगर (राज्य === `PROC_FETCH)
शुरू
next_state = `PROC_DECODE

Print_instruction (INST_REG)
समाप्त

यदि (राज्य === `PROC_DECODE)
शुरू
next_state = `PROC_EXE

समाप्त

यदि (राज्य === `PROC_EXE)
शुरू
next_state = `PROC_MEM

Print_instruction (SP_REF)
समाप्त

अगर (राज्य === `PROC_MEM)
शुरू
next_state = `PROC_WB

समाप्त

अगर (राज्य === `PROC_WB)
शुरू
next_state = `PROC_FETCH

Print_instruction (PC_REG)
समाप्त
समाप्त

कार्य Print_instruction

इनपुट [`DATA_INDEX_LIMIT: 0] इंस्टेंस

reg [5: 0] ओपकोड
reg [4: 0] rs
रेग [४: ०] आरटी
reg [4: 0] rd
reg [4: 0] shamt reg [5: 0] कार्यशील reg [15: 0] तत्काल reg [25: 0] पता

शुरू

// निर्देश को पार्स करें
// आर-प्रकार

{opcode, rs, rt, rd, shamt, फंक्शनल} = inst

// मैं अंकित करता हुँ
{opcode, rs, rt, तत्काल} = inst
// जे-प्रकार
{opcode, पता} = आवृत्ति
$ लिखो ('@% 6dns -> [0X% 08h]', $ समय, उदाहरण)
मामला (opcode) // आर-प्रकार
6'h00: प्रारंभ करें
मामला (कार्य)

6'h20: $ लिखो ('Add r [% 02d], r [% 02d], r [% 02d]', rs, rt, rd)
6'h22: $ लिखो ('उप r [% 02d], r [% 02d], r [% 02d]', rs, rt, rd)
6'h2c: $ लिखो ('mul r [% 02d], r [% 02d], r [% 02d]', rs, rt, rd)
6'h24: $ लिखना ('और r [% 02d], r [% 02d], r [% 02d]', rs, rt, rd)
6'h25: $ लिखना ('या r [% 02d], r [% 02d], r [% 02d]', rs, rt, rd)
6'h27: $ लिखो ('न ही r [% 02d], r [% 02d], r [% 02d]', rs, rt, rd)
6'h2a: $ लिखना ('slt r [% 02d], r [% 02d], r [% 02d]', rs, rt, rd)
6'h00: $ लिखो ('sll r [% 02d],% 2d, r [% 02d]', rs, shamt, rd)
6'h02: $ लिखो ('srl r [% 02d], 0X% 02h, r [% 02d]', rs, shamt, rd)
6'008: $ लिखना ('jr r [% 02d]', rs)
डिफ़ॉल्ट: $ लिखना ('')
एंडकेस
समाप्त

// मैं अंकित करता हुँ

6'08: $ लिखो ('addi r [% 02d], r [% 02d], 0X% 04h', rs, rt, तत्काल)
6'h1d: $ लिखो ('मुली आर [% 02 डी], आर [% 02 डी], 0 एक्स% 04 एच', आरएस, आरटी, तत्काल)
6'0c: $ लिखो ('andi r [% 02d], r [% 02d], 0X% 04h', rs, rt, तत्काल)
6'0d: $ लिखो ('ori r [% 02d], r [% 02d], 0X% 04h', rs, rt, तत्काल)
6'00f: $ लिखो ('लुइ आर [% 02d], 0X% 04h', आरटी, तत्काल)
6h0a: $ लिखो ('slti r [% 02d], r [% 02d], 0X% 04h', rs, rt, तत्काल)
6'04: $ लिखो ('beq r [% 02d], r [% 02d], 0X% 04h', rs, rt, तत्काल)
6'05: $ लिखो ('bne r [% 02d], r [% 02d], 0X% 04h', rs, rt, तत्काल)
6'h23: $ लिखो ('lw r [% 02d], r [% 02d], 0X% 04h', rs, rt, तत्काल)
6'h2b: $ लिखो ('sw r [% 02d], r [% 02d], 0X% 04h', rs, rt, तत्काल)

// जे-टाइप

6'02: $ लिखना ('jmp 0X% 07h', पता)
6'03: $ लिखो ('jal 0X% 07h', पता)
6'h1b: $ लिखना ('पुश')
6'h1c: $ लिखना ('पॉप')
डिफ़ॉल्ट: $ लिखना ('')
एंडकेस
$ लिखो (' n')
समाप्त
अंतिम कार्य
अंत मॉड्यूल

पूछे जाने वाले प्रश्न

1)। नियंत्रण इकाई का कार्य क्या है?

नियंत्रण इकाई का कार्य कंप्यूटर के प्रोसेसर द्वारा डेटा के प्रवाह या निष्पादन के लिए निर्देश देना है। यह मुख्य मेमोरी, ALU, रजिस्टरों, इनपुट और आउटपुट इकाइयों को नियंत्रित और प्रबंधित करता है। यह निर्देश प्राप्त करता है और निष्पादन के लिए नियंत्रण संकेत उत्पन्न करता है।

२)। नियंत्रण मेमोरी क्या है?

नियंत्रण मेमोरी आमतौर पर नियंत्रण रजिस्टर के पते और डेटा को संग्रहीत करने के लिए RAM या ROM है।

३)। विल्क्स कंट्रोल यूनिट क्या है?

अनुक्रमिक और दहनशील सर्किट कठोर नियंत्रण इकाई को विल्क्स नियंत्रण इकाई द्वारा प्रतिस्थापित किया जाता है। यह एक माइक्रो-प्रोग्राम के निर्देशों के अनुक्रम को स्टोर करने के लिए एक स्टोरेज यूनिट का उपयोग करता है।

4)। एक कठोर नियंत्रण इकाई क्या है?

हार्डवार्ड कंट्रोल यूनिट सर्किट में किसी भी भौतिक परिवर्तन के बिना हर घड़ी पल्स में एक राज्य से दूसरे राज्य में बदलकर नियंत्रण संकेत उत्पन्न करता है। नियंत्रण संकेतों की पीढ़ी निर्देश रजिस्टर, डिकोडर, और इंटरप्ट सिग्नल पर निर्भर करती है।

5)। नियंत्रण मेमोरी क्या है?

नियंत्रण इकाई या डेटा की जानकारी अस्थायी या स्थायी रूप से नियंत्रण मेमोरी में संग्रहीत होती है।
नियंत्रण मेमोरी दो प्रकार की होती है। वे रैंडम एक्सेस मेमोरी (RAM) और रीड-ओनली मेमोरी (ROM) हैं।

इस प्रकार, यह परिभाषा, घटकों, डिजाइन, आरेख, कार्य और, के बारे में है नियंत्रण इकाई के प्रकार । यहाँ आपके लिए एक प्रश्न है, 'कंट्रोल एड्रेस रजिस्टर का उद्देश्य क्या है?'