Final Project - 6 Segment Pipeline - Aharon Ofir & Aizik Amos
- 2. 6 Segment Pipeline
1
עניינים תוכן
מבוא...........................................................................................................2
פקודותלמימושב-CPU............................................................................2
קריטריוניםלתכנוןה-CPU........................................................................2
תרשיםמלבניםכללי....................................................................................3
תרשיםמלבניםמפורט.................................................................................4
פירוטהסגמנטיםב-Pipeline......................................................................5
1.IF Segment........................................................................................5
2.ID Segment.......................................................................................6
.3MEM Segment..................................................................................6
4.EXE Segment....................................................................................7
5.EXE_JMP Segment..........................................................................8
6.WB Segment.....................................................................................8
סכמתסימולציתהמעגלב-Logisim............................................................9
מיקרו-פקודות............................................................................................10
טבלתאפשורים...........................................................................................12
תוכניתלביצוע..........................................................................................12
טבלתOpCodes.......................................................................................12
ניתוחזמןמסלולקריטי.............................................................................12
NOP Instructions...................................................................................13
טבלתצריבה.............................................................................................14
אופןפעולתהמעגל.......................................................................................15
הגדרותוהנחותראשוניות..........................................................................15
יחידותהחישובבמערכת............................................................................17
הוראותלהפעלתהמעגל.............................................................................18
- 3. 6 Segment Pipeline
2
מבוא
בתיק-בארכיטקטורת מעבד תכנון מוצג זה תכנוןPipelinesמיקרו של פקודות יישום עבור-
אינטל חברת של בקר8051מ מורכב המעבד .6-בלוקים ידי על מזה זה המופרדים סגמנטים
"נועלי הנקראים"סגמנט(segment latch).
Pipelineכל לאחר כאשר אידיאלי נחשבCycle.פקודה מסתיימת בודד
פקודותלמימושב-CPU
DescriptionMnemonic
Add indirect RAM to Accumulator with carryiADDC A, @R
Decrement direct byteDEC direct
Exclusive-OR immediate data to AccumulatorXRL A, #data
Move direct byte to directMOV direct, direct
Jump indirect relative to the DPTRJMP @A+DPTR
i@R-רגיסטרים0Rו-1Rהמכיליםנתוןכ המשמשלז לפנייה כתובתיחיצוני כרון.
direct-8בזיכרון כתובת המייצגות סיביותRAM( הפנימי0-127,)פקודות לאוגר או
מיוחדות(SFR – Special Function Register)בכתובות128-255.
DPTR-DATA POINTERבעל אוגר זהו16סיביות(2)בתיםמוגדר שלנו בתכנון ,
בגודל8-bit..חיצוני לזיכרון לגשת מנת על זה באוגר משתמשים
קריטריוניםלה תכנון-CPU
1.DATAבגודל8-bit.
2.זיכרוןRAMבעלBUS8-bit Addressסה"כ ,256-byte.
3.ה תכנון-CPUבארכיטקטורתPIPELINEבעלת6-.דרגות
4.הדגלים באוגר רלוונטיים דגלים עדכון-PSW.
5.ה הפקודות לחמשת רק יתייחס החומרה תכנוןב מוגדרותה דרישותפרויקט.
6.יחידת ידי על מנוהלים הבקרה קוויה-Control Unit.
התכנון במהלךהנתובאוגרים נים:1R–0R,Aו-DPTRמוגדריםמראשלפני
ביצועהפקודהידנית בצורה הללו הנתונים את להזין יש הסימולציה (עבורכפי ,
בהמשך שיוסבר).
קיימתהתייחסותחלקיתלה בעיות-Hazardsלהתמודד הצלחנו שאיתם.
- 6. 6 Segment Pipeline
5
ב הסגמנטים פירוט-ipelineP
1.IF Segment
(PC)PROGRAM COUNTER:
בעל מונה8לה שתפקידם סיביותעל צביעכתבזיכרון שנמצאת הבאה הפקודה ובתשמכילאת
ה-Opcodesוה-Operands( שעון כל מתקדם המונה .הרלוונטייםCLK)ב–1אם אלא ,
פקודת הגיעהJMP @A+DPTRכאשר ,לקפוץ צורך יש,המתקבלת בתוצאה נטען הוא
מה-ALU_OUT_2הרלוונטית לכתובת בהתאמה וקופץ.
קבלת בעת .מאופשר ותמיד מעלה סופר תמיד זה מונהRESETל מתעדכן ערכו-0000H.
/ ROM_OP_1 / ROM_OP_2ROM_Prog:
זו יחידהמחולקתל-3של כתובות מרחב בעלי נפרדים זיכרונות256 BYTESו-BUSנתונים
של24-bitsל מחולק אשר-8-bitsעבור(IR) OPCODE,
8-bitsעבורOperand_1ו-8-bitsעבורOperand_2.
והיציאות זו יחידה .לו המיועד למקום מנותב אחד כל.תמיד מאופשרות שלה
UNIT (C.U)CONTROL:
פקודה לכל הנדרשים האפשורים את מוציאה זו יחידה ,המערכת של הבקרה יחידת זוהי
.השונים הסגמנטים בין במעבר התקדמותה במשך
מזיכרון בנויה זו יחידהROMה לפי צרובות הבקרה וסיביות-OPCODE.המתאים
מקמנולפניזו יחידהנועל(IF/ID.ריצה בזמן בכניסה רצויים לא שינויים למנוע כדי )
ID SEGMENT LATCH/IF:
חוצץ ,הבא השעון לפולס עד שלאחריו הסגמנט עבור שלו האוגרים תוכן את הנועל חוצץ זהו
:האוגרים תוכן ,הבקרה סיביות את בתוכו מכיל זה, OP_2 , OP_1 , IR1R-0R.
נועלזהמאופשרקבוע.
- 7. 6 Segment Pipeline
6
2.SegmentDI
_1MUX:
את הלאה להעביר אם אליו המגיע הבקרה קו ע"פ בוחר זה מרבב:של הכתובת
/ OP_11/ R0R,' ע"י תמיד מאופשר זה מרבב .שהגיעה לפקודה בהתאם1ברגל '
MUX_EN.
MEM SEGMENT LATCH/ID:
מכיל זה חוצץ ,הבא השעון לפולס עד שלפניו מהסגמנט האוגרים תוכן את הנועל חוצץ זהו
את בתוכוכתובות:האוגרים1R–0R,OP_1,OP_2לתוכ לכתוב שישה למוצא בהתאם ,ם-
MUX,ש בעוד-TEMP_1ש המידע את מכילמ ישירות מועבר-OP_1(נדרש כאשרלצורך
ב שרצה הפקודהCYCLE).
3.MEM Segment
DATARAM:
.שלו הבקרה רגלי ע"י המאופשר זיכרון רכיב
קוויהבקרהRD/WRמשמשיםבין לבחורלזיכרון כתיבה או קריאה אופציית.
SEGMENT LATCHEXE/MEM:
מכיל זה חוצץ ,הבא השעון לפולס עד שלפניו מהסגמנט האוגרים תוכן את הנועל חוצץ זהו
את בתוכותוכן:האוגריםTEMP_2,VALUE–שהתקבל האופרנד את המכילבהתאם
ה לזיכרון שניתנה לכתובת-RAM,ואוגרA–כלשהו באופרנד מאותחל כי מניחים אשר
ל בנוסף ומשמש מראששמירתה סגמנט במוצא המתקבלת התוצאה-WB.
- 8. 6 Segment Pipeline
7
4.SegmentEXE
_1ALU:
ה תפקיד-ALU_1חיבור לבצעביןהאופרנדים:TEMP_2/VALUE/Aהפקודה לפי
ב הרצה-Cycle.הנוכחיהתוצאה אתטוענים אנול חזרהאוגרALU_OUT_1בנועל
.הסגמנט
המעגל פעולת אופןALU_1.בהמשך מפורט
PSW:
דגל את המכיל אוגר זהו-הנשא(Carry Flag)אחרי שעון בעליית מתעדכן הוא ,ביצוע
:הפקודהi@RADDC A,ב .עתאתחול ביצוע,.מתאפס זה אוגר
-ה שלנו לפקודות הרלוונטי הדגלואה דגל-CY.נשא מסמן זה דגל :
LATCHEXE_JMP/EXE:
ב שהתבצע החישוב של התוצאה את-ALU_1לאוגר טוענים אנוALU_OUT_1.בנועל
זה נועלאת בנוסף מכילהאוגרDPTR,אשרהידוע כלשהו בערך מאותחלביצוע לפני ,מראש
.הפקודה
- 9. 6 Segment Pipeline
8
5._JMP SegmentEXE
_2ALU:
ה תפקיד-ALU_2:האופרנדים בין חיבור לבצעALU_OUT_1ו-DPTRכאשרהפקודה
ב הרצה-Cycleהנוכחי:היאJMP @A+DPTRתבוצע שאליה הכתובת חישוב לשם
הקפיצה.
לאוגר טוענים אנו התוצאה אתALU_OUT_2.הסגמנט בנועל
המעגל פעולת אופןALU_2.בהמשך מפורט
LATCHEXE_JMP/WB:
ב שהתבצע החישוב של התוצאה את-ALU_2לאוגר טוענים אנוALU_OUT_2.בנועל
6.WB Segment
DEMUX:
רכיבזהמעבירה אתתוצאהשל נטענה-ALU_OUT_2היעד אוגר אל,בהתאםלקווי
הבקרה.
- 11. 6 Segment Pipeline
10
מיקרו-פקודות
i@RADDC A,
IF/ID.IR (PC) {ROM PROG}
IF
PC PC+1
ID/MEM.MAR_1 IF/ID.RiID
MEM/EXE.VALUE (MAR 1)MEM
EXE/EXE_JMP.ALU_OUT_1 A+VALUE+CARRYEXE
EXE_JMP/WB.ALU_OUT_2 EXE/EXE_JMP.ALU_OUT_1EXE_JMP
A EXE/EXE_JMP.ALU_OUT_2WB
DEC DIRECT
IF/ID.IR (PC) {ROM PROG}
IF
IF/ID.OP_1 (PC) {ROM OP 1}
IF/ID.OP_2 (PC) {ROM OP 2}
PC PC+1
ID/MEM.MAR_1 IF/ID.OP_1ID
ID/MEM.MAR_2 IF/ID.OP_2
(MAR 2) (MAR 1) - 1MEM
NOPEXE
NOPEXE_JMP
NOPWB
NOP-לשינו גורמת אינה זו פקודהשל בתכולה כלשהם יים
אלא האוגריםרקה את מקדמת-PCאלה.הבאה פקודה
- 12. 6 Segment Pipeline
11
XRL A, #DATA
IF/ID.IR (PC) {ROM PROG}
IF IF/ID.OP_1 (PC) {ROM OP1}
PC PC+1
ID/MEM.TEMP_1 IF/ID.OP_1ID
MEM/EXE.TEMP_2 ID/MEM.TEMP_1MEM
EXE/EXE_JMP.ALU_OUT_1 A XOR TEMP_2EXE
EXE_JMP/WB.ALU_OUT_2 EXE/EXE_JMP.ALU_OUT_1EXE_JMP
A EXE_JMP/WB.ALU_OUT_2WB
MOV DIRECT, DIRECT
IF/ID.IR (PC) {ROM PROG}
IF
IF/ID.OP_1 (PC) {ROM OP1}
IF/ID.OP_2 (PC) {ROM OP2}
PC PC+1
ID/MEM.MAR_1 IF/ID.OP_1ID
ID/MEM.MAR_2 IF/ID.OP_2
(MAR 2) (MAR 1)MEM
NOPEXE
NOPEXE_JMP
NOPWB
JMP @A+DPTR
IF/ID.IR (PC) {ROM PROG}IF
NOPID
NOPMEM
EXE/EXE_JMP.ALU_OUT_1 AEXE
EXE_JMP/WB.ALU_OUT_2 ALU_OUT_1+DPTREXE_JMP
PC EXE_JMP/WB.ALU_OUT_2WB
- 13. 6 Segment Pipeline
12
אפשורים טבלת
תלביצוע וכנית
0ADDC A, @R
DEC 08H
XRL A, #03H
MOV 09H, 08H
JMP @A+DPTR
טבלתOpCodes
CYCLES OPCODE HEX CONTROL BITS HEX
ADDC A, @R0 6 01 6CDB4
ADDC A, @R1 6 02 74DB4
DEC DIRECT 3 03 67C00
XRL A, #DATA 6 04 803D4
MOV DIRECT, DIRECT 3 05 66C00
JMP @A+DPTR 6 06 15B
בתוכנית שמופיע ראשונה פקודה כל עבור כי לציין חשוב,לחכות צריךCYCLEאחד
עדתתחיל שהתוכניתב לרוץ-Pipe.
זמן ניתוחקריטי מסלול
1. TCLK ≥ tpdXOR + tpdMUX + tpcqValue + tsuALU_OUT_1
2. ThALU_OUT_1 ≤ tpdXOR + tpdMUX + tccqValue
- 14. 6 Segment Pipeline
13
snstructionINOP
ADDC A,@Ri DEC DIRECT XRL A,#DATA MOV DIRECT DIRECT JMP @A+DPTR
ADDC A, @Ri 2 1 2 1 2
DEC DIRECT 1 0 0 1 0
XRL A, #DATA 2 0 0 0 2
MOV DIRECT, DIRECT 1 1 0 1 0
JMP @A+DPTR 6 6 6 6 6
ה כמות-NOP(Null Operation)בעיות מניעת לשם פקודות בין לשים שישHAZARDS.
-לדוגמא,,המודגשת בשורה נתבונן אםפקודת עבורDEC DIRECTאת ישר אחריה לשים נוכל
הפקודהXRL A, #DATA.
הפקודה את לשים נרצה אםiADDC A, @R,פקוד לשים נצטרךתNOPביני.הם
- 15. 6 Segment Pipeline
14
צריבה טבלת
OP1 OP2
LD
TEMP
1
LD
MAR1
LD
MAR2 S1 S0
RD
RAM
WR
RAM
CONTROL
RAM
OE
MAR1
OE
MAR2
LD
TEMP
2
LD
ALU
OUT1
OP2
ALU
1
OP1
ALU
1
LD
PSW
LD
ALU
OUT
2
OP
ALU
2
LD
A DEMUX
MUX
PC
ADDC A, @R0 0 0 1 1 1 1 1 1 1 1 1 1 1 6CDB4
ADDC A, @R1 0 0 1 1 1 1 1 1 1 1 1 1 1 74DB4
DEC DIRECT Addr Addr 1 1 1 1 1 1 1 67C00
XRL A, #DATA Data 0 1 1 1 1 1 1 1 803D4
MOV DIRECT,
DIRECT Addr Addr 1 1 1 1 1 1 66C00
JMP @A+DPTR
0 0 1 1 1 1 1 1 15B
NOP 0 0 0
- 16. 6 Segment Pipeline
15
אופןהמעגל פעולת
לביצוע תוכנית
0ADDC A, @R
DEC 08H
XRL A, #03H
MOV 09H, 08H
JMP @A+DPTR
הגדרותוהנחותראשוניות
1.פקודת עבורDEC DIRECT:
להזין ישב גם ממנה לחסר שנרצה כתובת אותה את-ROM OPERAND_1ב וגם-
ROM OPERAND_2.
2.פקודת עבורDIRECT,MOV DIRECT:
ל נצרוב-ROM OPERAND_1ועבור המקור כתובת אתROM OPERAND_2את
היעד כתובתההעברה את לבצע נרצה שאליה.
3.הדגלים אוגרPSWמפקודת ורק אך מושפעiADDC A, @R.
4.על עובדת המערכתפי2–שעונים:
עבור אחדסגמנטה-MEMוהשניכל עבוריתריחידותה-SEGMENTSהאחרות.
5.זישל התוכנית כרוןנ:הבאה בצורה צרוב ו
שבמ לראות ניתןיקושצוינה בטבלה התחשבות יש הפקודות םהקודמים בעמודים
בנוגעלה כמות-NOPsלהתקיים שצריכיםלפקודה פקודה בין:
-ביןהפקודה(05) MOV DIRECT, DIRECTלביןJMP @A+DPTR(06)
הפרד לשים צורך איןהשלNOP.
-אךמאחרפקודת וביןXRL A, #DATA(04)לפקודת בין
JMP @A+DPTR(06ב צורך יש )של הפרדהפקודות שתיNOP,לשים נאלצנו
פקודתNOPביןפקודתMOV DIRECT, DIRECTלביןפקודת
JMP @A+DPTR.
- 17. 6 Segment Pipeline
16
6.במהלךתכנון,המערכתבמטרההמערכת את לייעל,לשםמניעתבעייתData Hazard
בשיטת השתמשנוData Forwarding.
בעייתData Hazardשצריכה נוכחית מפעולה כתוצאה בצינור "ל"עיקוב לגרום יכולה
פעולה של לתוצאה להמתין-.הסתיימה לא שעדיין מוקדמת
-ה שיטת נכנסת כאן-Data Forwardingוביטוי לידי באהבסגמנטMEM,כאשר
מז הקריאה תוצאתיה כרון-RAMמנותבתהז לכניסתיכרוןמתאפשרת ובכך
וכתיבה קריאהבאותו לזכרוןCYCLEבהמתנה צורך ללא ,נוכחי.
ה טכניקת-Data Forwardingממומשתכפול בשעון שימוש ע"יובכךמתאפשרת
וכתיבה קריאהבודד שעון מחזור תוך.הסגמנטים שאר של
ביטוי לידי באה זו שיטהה ביצוע בעתפקודותDEC DIRECT
ו-MOV DIRECT, DIRECT.
-אופןמימושהתדר חלוקתמתבצעתבאמצעותD-FF:
- 18. 6 Segment Pipeline
17
ה יחידותב חישובמערכת
1.1_ALU:
מערכתזוכוללת3-כניסותויצאחת יאהאשרמבוקרתע"ירגליהבקרה
OP1_ALU1ו-.OP2_ALU1
עבור' 00 ':היציאהתהיה.מאופסת
עבור: ' 01 'היציאהתהיהשווהשל לערך בערכהA.
עבור10 '':היציאהתהיהשווהשל לערך בערכה+CARRYiA+@R.
עבור: ' 11 'היציאהתהיהשווהשל לערך בערכהA XOR TEMP_2.
2.ALU_2:
מערכתזוכוללת2-כניסותויציאהאחתאשרמבוקרתע"ירגלהבקרהOP_ALU_2.
עבור' 0 'היציאהתהיהשווהשל לערך בערכהALU_OUT_1.
עבור' 1 'היציאהתהיהשווהשל לערך בערכהDPTR+ALU_OUT_1.
בפקודת לטפל זו מערכת תפקידJMP @A+DPTR.
- 19. 6 Segment Pipeline
18
המעגל להפעלת הוראות
1.המצורפים הקבצים את טען:
ROM PROG, ROM OPERAND_1, ROM OPERAND_2,
RAM DATA, CONTROL ROM
בהתאמהלזיהמערכת כרונות.
2.לחצן "ע המערכת את אפסה-RESET.המעגל במרכז הממוקם
3.באוגר כי וודא0Rהערך מוזןH02.
4.הזןה אתערך10לה אוגר-DPTRלצורךביצועפקודתJMP @A+DPTR.
5.בעזרת התוכנית את הרץעל לחיצההשעון(CLK).
זה שעון כי זכורמוגדרעבורה סגמנט-MEMוהואכפולהשלהתדרהלשאר מוזן
ב הסגמנטים-PIPE.
ת לכתוב וברצונך במידהשצרוב ממה השונה כנית,מועד מבעודלה עליךיבטבל עזרת
הפקודותלמניעתHAZARDSוכןלהתיל יחס-הגדרותה והנחותראשוניות.שהוצגו
תוצאותהתוכנית:
:הבאות התוצאות תתקבלנה התוכנית בסיום
האוגרAבערך מוזן יהיה0CHמפעולת כתוצאהXORשלFH0(מוזן שהיה הערך
באוגר שהופיעה בכתובת0R).
מ גם כי לראות ניתןהבכתובת ערךH08לכתובת הועתקה והתוצאה אחד הוחסרH09
שצוי כפיב ןה קוד.תוכנית
לראות ניתןשערךה-PC"קפץ"לערךC1מ כתוצאהביצועפעולתה-JMP.
שינוייערכיםבמהלךהתוכנית הרצת:
0FHA=0@RADDC A,
DEC 08H (08H)= #04H
XRL A, #03H A= 0CH
MOV 09H, 08H (09H)= (08H)= #04H
JMP @A+DPTR PC= 1CH