מהי יחידת בקרה: רכיבים ועיצובו

נסה את הכלי שלנו לביטול בעיות





יחידת הבקרה היא המרכיב העיקרי של יחידת עיבוד מרכזית (CPU) במחשבים שיכולים לכוון את הפעולות במהלך ביצוע התוכנית על ידי המעבד /מַחשֵׁב. תפקידה העיקרי של יחידת הבקרה הוא להביא ולבצע הוראות מזיכרון המחשב. הוא מקבל את הוראות ההקלטה / מידע מהמשתמש וממיר אותו ל אותות בקרה , אשר לאחר מכן ניתנים למעבד להמשך ביצוע. הוא נכלל כחלק מארכיטקטורת פון נוימן שפותחה על ידי ג'ון נוימן. היא אחראית על מתן אותות התזמון, ועל אותות הבקרה ומכוונת את ביצוע התוכנית על ידי המעבד. הוא נכלל כחלק פנימי של המעבד במחשבים מודרניים. מאמר זה מתאר מידע מלא אודות יחידת הבקרה.

מהי יחידת הבקרה?

הרכיב המקבל את אות הכניסה / מידע / הוראות מהמשתמש וממיר לאותות בקרה לביצוע במעבד. הוא שולט ומכוון את הזיכרון הראשי, יחידת חשבון ולוגיקה (ALU), התקני קלט ופלט, וגם אחראי על ההוראות הנשלחות למעבד של מחשב. זה מביא את ההוראות מה- זיכרון ראשי של מעבד ונשלח לפנקס ההוראות למעבד, המכיל תוכן רישום.




דיאגרמת חסימת יחידת בקרה

דיאגרמת חסימת יחידת בקרה

יחידת הבקרה ממירה את הקלט לאותות בקרה ואז נשלחת למעבד ומכוונת את ביצוע התוכנית. הפעולות שיש לבצע מופנות על ידי המעבד במחשב. בעיקר יחידת עיבוד מרכזית (CPU) ו- יחידת עיבוד גרפי (GPU) דורשים יחידת בקרה כחלק הפנימי. תרשים הבלוקים של יחידת הבקרה מוצג לעיל.



רכיבי יחידת בקרה

מרכיבי היחידה הזו הם הוראות רושמים , אותות בקרה בתוך המעבד, אותות בקרה מ / אל האוטובוס, אוטובוס בקרה, דגלי קלט ואותות שעון.

המרכיבים של יחידת הבקרה Hardwired הם רישום הוראות (מכיל שדה אופק ושדה כתובת), יחידת תזמון, מצב בקרה גֵנֵרָטוֹר , מטריצת הפקת אותות בקרה ומפענח הוראות.
המרכיבים של יחידת הבקרה המתוכנתת במיקרו הם מחולל הכתובות הבא, רישום כתובות בקרה, זיכרון בקרה ורישום נתוני בקרה.

פונקציות

ה פונקציות של יחידת הבקרה כלול את הבאים.


  • זה מכוון את זרימת רצף הנתונים בין המעבד והתקנים אחרים.
  • זה יכול לפרש את ההוראות ושולט בזרימת הנתונים במעבד.
  • הוא מייצר את רצף אותות הבקרה מההוראות שקיבלו או פקודות ממרשם ההוראות.
  • באחריותה לשלוט ביחידות הביצוע כגון ALU, מאגרי נתונים ורשומות במעבד של מחשב.
  • יש לו את היכולת להביא, לפענח, לטפל בביצוע ולאחסן תוצאות.
  • היא לא יכולה לעבד ולאחסן את הנתונים
  • להעברת הנתונים הוא מתקשר עם התקני הקלט והפלט ושולט בכל יחידות המחשב.

תכנון יחידת בקרה

העיצוב של זה יכול להיעשות באמצעות שניים סוגים של יחידת בקרה הכוללים את הדברים הבאים.

  • מבוסס Hardwire
  • מבוסס מיקרו-תכנות (דו-מפלס ודו-מפלסי)

יחידת בקרה קשורה

העיצוב הבסיסי של יחידת בקרה קשורה מוצג לעיל. בסוג זה, אותות הבקרה נוצרים על ידי חומרה מיוחדת מעגל לוגי ללא כל שינוי במבנה המעגל. בכך, לא ניתן לשנות את האות שנוצר לביצוע במעבד.

הנתונים הבסיסיים של אופקוד (קוד פעולה של הוראה נשלחים לפענוח ההוראות לפענוח. ההוראה מפענח הוא קבוצת המפענחים לפענוח סוגים שונים של נתונים באופקוד. התוצאה היא אותות פלט המכילים ערכים של אותות פעילים הניתנים כקלט למחולל המטריצה ​​ליצירת אותות בקרה לביצוע תוכנית על ידי מעבד המחשב.

יחידת בקרה מבוססת Hardwire

יחידת בקרה מבוססת Hardwire

מחולל המטריצה ​​מספק מצבים של יחידת הפקדים ואת האותות החוצה מהמעבד (אותות הפסקה). מטריקס בנויה כמו מערך לוגי לתכנות . אותות הבקרה הנוצרים על ידי מחולל המטריצה ​​ניתנים כקלט למטריצת הגנרטור הבאה ומשלבים עם אותות התזמון של יחידת התזמון המכילה תבניות מלבניות.

לקבלת הוראות חדשות, יחידת הבקרה הופכת לשלב ראשוני לביצוע הוראות חדשות. יחידת הבקרה נותרת בשלב הראשוני או בשלב הראשון כל עוד אותות העיתוי, אותות הקלט ומצבי ההוראה של המחשב אינם משתנים. ניתן להעלות את השינוי במצב יחידת הבקרה אם חל שינוי כלשהו באותות הנוצרים.

כאשר מתרחש אות או הפרעה חיצונית, יחידת הבקרה עוברת למצב הבא ומבצעת את עיבוד אות ההפרעה. הדגלים והמדינות משמשים לבחירת המצבים הרצויים לביצוע מחזור הביצוע של ההוראה.

במצב האחרון, יחידת הבקרה מביאה את ההוראה הבאה ושולחת את הפלט לדלפק התוכנית, ואז לרשם כתובות הזיכרון, לרשם החיץ, ואז לרשם ההוראות לקריאת ההוראות. לבסוף, אם ההוראה האחרונה (אותה משיגה יחידת הבקרה) היא הוראות סיום, היא עוברת למצב ההפעלה של המעבד ומחכה עד שהמשתמש מכוון את התוכנית הבאה.

יחידת בקרה מתוכנתת במיקרו

בסוג זה, מאגר הבקרה משמש לאחסון אותות הבקרה המקודדים במהלך ביצוע התוכנית. אות הבקרה אינו נוצר באופן מיידי ומפוענח מכיוון ששדה הכתובת של מאגר מיקרוגרם מאגר השליטה. התהליך כולו הוא רמה אחת.

פעולות המיקרו נעשות לצורך ביצוע הוראות מיקרו בתוכנית. דיאגרמת הגוש של יחידת הבקרה המתוכנתת מיקרו מוצגת לעיל. מהדיאגרמה, כתובת ההוראה המיקרו מתקבלת מרשם כתובות זיכרון הבקרה. כל המידע של יחידת הבקרה נשמר לצמיתות בזיכרון הבקרה הנקרא ROM.

יחידת בקרה מבוססת מיקרו-תכנות

יחידת בקרה מבוססת מיקרו-תכנות

ההוראה המיקרו מזיכרון הבקרה מוחזקת על ידי מרשם הבקרה. מכיוון שההוראה המיקרו היא בצורת מילת בקרה (מכילה ערכי בקרה בינאריים) שזקוקה לביצוע פעולות מיקרו אחד או יותר לצורך עיבוד הנתונים.

במהלך ביצוע הוראות המיקרו, מחולל הכתובות הבא חישב את הכתובת הבאה של ההוראה המיקרו ואז שלח לרשם כתובות הבקרה כדי לקרוא את המיקרו-הוראות הבא.
רצף פעולות המיקרו של מיקרו-תוכנית מבוצע על ידי מחולל הכתובות הבא ומשמש כממשיך מיקרוגרם כדי לקבל את כתובת הרצף כלומר לקרוא מזיכרון הבקרה.

קוד Verilog ליחידת הבקרה

קוד Verilog ליחידת הבקרה מוצג להלן.

`כלול“ 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_OP2, ALU_OPRN, MEM_ADDR, MEM_READ, MEM_WRITE, RF_DATA_

// אותות פלט
// יציאות לקובץ רישום

פלט [`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

// אות החוצה
בחוץ [`DATA_INDEX_LIMIT: 0] MEM_DATA

// רשתות מדינה
חוט [2: 0] proc_state

// מחזיק בערך מונה של התוכנית, שומר את ההוראה הנוכחית, מחסנית את רישום המצביעים

רג MEM_READ, MEM_WRITE
רג MEM_ADDR
reg ALU_OP1, ALU_OP2
רג ALU_OPRN
reg RF_ADDR_W, RF_ADDR_R1, RF_ADDR_R2
reg RF_DATA_W
מצב reg [1: 0], המדינה הבאה

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 = 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

מקרה (מדינה)

`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 = 1'b1 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 = 1'b1 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
סוֹף
endcase

סוֹף
מודול הקצה

מודול PROC_SM (STATE, CLK, RST)
// רשימת תשומות
קלט CLK, RST
// רשימת תפוקות
פלט [2: 0] STATE

// רשימת קלט
קלט CLK, RST
// רשימת פלט
פלט STATE

reg [2: 0] STATE
מצב 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
סוֹף

// איפוס הטיפול באותות
תמיד @ (posedge RST)
התחל
state = `PROC_FETCH
next_state = `PROC_FETCH
סוֹף
תמיד @ (posedge CLK)
התחל
state = next_state
סוֹף
תמיד @ (מדינה)
התחל
אם (ציין === `PROC_FETCH)
התחל
next_state = `PROC_DECODE

הוראות הדפסה (INST_REG)
סוֹף

אם (ציין === `PROC_DECODE)
התחל
next_state = `PROC_EXE

סוֹף

אם (ציין === `PROC_EXE)
התחל
next_state = `PROC_MEM

הוראות_הדפסה (SP_REF)
סוֹף

אם (ציין === `PROC_MEM)
התחל
next_state = `PROC_WB

סוֹף

אם (ציין === `PROC_WB)
התחל
next_state = `PROC_FETCH

הוראות_הדפסה (PC_REG)
סוֹף
סוֹף

משימת הדפסת_הדרכה

קלט [`DATA_INDEX_LIMIT: 0] אינסט

reg [5: 0] אופקוד
reg [4: 0] rs
רג [4: 0] רט
רג [4: 0]
reg [4: 0] shamt reg [5: 0] funct reg [15: 0] כתובת מיידית [25: 0]

התחל

// לנתח את ההוראה
// סוג R

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

// אני מקליד
{opcode, rs, rt, מיידי} = אינסט
// סוג J
{opcode, address} = אינסט
$ write (“@% 6dns -> [0X% 08h]“, $ time, inst)
מקרה (opcode) // סוג R
6'h00: התחל
מקרה (פונקציה)

6'h20: $ כתוב ('הוסף r [% 02d], r [% 02d], r [% 02d]', rs, rt, rd)
6'h22: $ כתוב ('sub 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: $ write ('sll r [% 02d],% 2d, r [% 02d]', rs, shamt, rd)
6'h02: $ כתוב ('srl r [% 02d], 0X% 02h, r [% 02d]', rs, shamt, rd)
6'h08: $ כתוב ('jr r [% 02d]', rs)
ברירת מחדל: $ write (“”)
endcase
סוֹף

// אני מקליד

6'h08: $ write ('addi r [% 02d], r [% 02d], 0X% 04h', rs, rt, מיידי)
6'h1d: $ כתוב ('muli r [% 02d], r [% 02d], 0X% 04h', rs, rt, מיידי)
6'h0c: $ כתוב ('andi r [% 02d], r [% 02d], 0X% 04h', rs, rt, מיידי)
6'h0d: $ write ('ori r [% 02d], r [% 02d], 0X% 04h', rs, rt, מיידי)
6'h0f: $ כתוב ('lui r [% 02d], 0X% 04h', rt, מיידי)
6'h0a: $ כתוב ('slti r [% 02d], r [% 02d], 0X% 04h', rs, rt, מיידי)
6'h04: $ כתוב ('beq r [% 02d], r [% 02d], 0X% 04h', rs, rt, מיידי)
6'h05: $ כתוב ('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, מיידי)

// J- סוג

6'h02: $ write ('jmp 0X% 07h', כתובת)
6'h03: $ write ('jal 0X% 07h', כתובת)
6'h1b: $ כתוב ('לדחוף')
6'h1c: $ כתוב ('פופ')
ברירת מחדל: $ write (“”)
endcase
$ כתוב (' n')
סוֹף
משימת קצה
מודול סיום

שאלות נפוצות

1). מה העבודה של יחידת בקרה?

עבודת יחידת הבקרה היא לכוון את זרימת הנתונים או הוראות לביצוע על ידי מעבד המחשב. הוא שולט, מנהל ומתאם זיכרון ראשי, ALU, רושמים, יחידות קלט ופלט. הוא מביא את ההוראות ויוצר אותות בקרה לביצוע.

2). מהו זיכרון הבקרה?

זיכרון בקרה הוא בדרך כלל RAM או ROM לאחסון הכתובת והנתונים של רישום הבקרה.

3). מהי יחידת הבקרה של וילקס?

הרציף ו מעגלים משולבים של יחידת הבקרה הקבועה מוחלפים ביחידת הבקרה Wilkes. הוא משתמש ביחידת אחסון כדי לאחסן את רצפי ההוראות של מיקרו-תוכנית.

4). מהי יחידת בקרה קשיחה?

יחידת הבקרה הקווית מייצרת את אותות הבקרה על ידי שינוי ממצב אחד למצב אחר בכל דופק שעון ללא כל שינוי פיזי במעגל. יצירת אותות הבקרה תלויה ברישום הוראות, בפענוח ובאותות הפרעה.

5). מהו זיכרון הבקרה?

המידע של יחידת הבקרה או הנתונים נשמר באופן זמני או קבוע בזיכרון הבקרה.
זיכרון שליטה הוא משני סוגים. הם זיכרון גישה אקראית (RAM) וזיכרון לקריאה בלבד (ROM).

לפיכך, זה הכל על ההגדרה, הרכיבים, התכנון, התרשים, הפונקציות ו- סוגי יחידת בקרה . הנה שאלה עבורך, 'מה המטרה של רישום כתובות הבקרה?'