Upload
amos-aizik
View
59
Download
1
Embed Size (px)
Citation preview
31270 - ארכיטקטורה
מחשבים ומבנה
תיק תכנון
:מגישים
301033437 - אופיר אהרון
301705711 - עמוס איזיק
מרצה הקורס:
מר משה שדה
:תאריך הגשה
4.2.16
6 Segment Pipeline
6 Segment Pipeline
1
תוכן עניינים
2 ........................................................................................................... מבוא
CPU ............................................................................ 2 -ב למימוש פקודות
CPU ........................................................................ 2-ה לתכנון קריטריונים
3 .................................................................................... כללי מלבנים תרשים
4 ................................................................................. מפורט מלבנים תרשים
Pipeline ...................................................................... 5 -ב הסגמנטים פירוט
1. IF Segment ........................................................................................ 5
2. ID Segment ....................................................................................... 6
.3 MEM 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 ............................................................................. המעגל להפעלת הוראות
6 Segment Pipeline
2
מבוא
-עבור יישום פקודות של מיקרו Pipelinesתכנון זה מוצג תכנון מעבד בארכיטקטורת -בתיקסגמנטים המופרדים זה מזה על ידי בלוקים - 6. המעבד מורכב מ 8051בקר של חברת אינטל
. (segment latch)סגמנט" הנקראים "נועלי Pipelineנחשב אידיאלי כאשר לאחר כל Cycle .בודד מסתיימת פקודה
CPU -ב למימושפקודות
Description Mnemonic
Add indirect RAM to Accumulator with carry iADDC A, @R
Decrement direct byte DEC direct
Exclusive-OR immediate data to Accumulator XRL A, #data
Move direct byte to direct MOV direct, direct
Jump indirect relative to the DPTR JMP @A+DPTR
i@R - 0רגיסטריםR 1 -וR כרון חיצונייכתובת לפנייה לזהמשמש כנתון המכילים.
direct - 8 סיביות המייצגות כתובת בזיכרוןRAM ( 0-127הפנימי,) או לאוגר פקודות
.128-255בכתובות (SFR – Special Function Register)מיוחדות
DPTR - DATA POINTER בתכנון שלנו מוגדר בתים( 2) סיביות 16זהו אוגר בעל , משתמשים באוגר זה על מנת לגשת לזיכרון חיצוני. . bit-8בגודל
CPU -תכנון הל קריטריונים
1. DATA 8 בגודל-bit .
.byte-256, סה"כ BUS 8-bit Addressבעל RAMזיכרון .2
דרגות. - 6בעלת PIPELINEבארכיטקטורת CPU-תכנון ה .3
.PSW - עדכון דגלים רלוונטיים באוגר הדגלים .4
.פרויקטדרישות המוגדרות בתכנון החומרה יתייחס רק לחמשת הפקודות ה .5
. Control Unit -ה קווי הבקרה מנוהלים על ידי יחידת .6
1 :נים באוגריםוהנתבמהלך התכנוןR – 0R ,A ו-DPTR לפני מראש מוגדרים
, כפי )עבור הסימולציה יש להזין את הנתונים הללו בצורה ידנית הפקודהביצוע
.(שיוסבר בהמשך
בעיות הלחלקית התייחסות קיימת- Hazards שאיתם הצלחנו להתמודד.
6 Segment Pipeline
3
תרשים מלבנים כללי
6 Segment Pipeline
4
תרשים מלבנים מפורט
6 Segment Pipeline
5
ipelineP -פירוט הסגמנטים ב
1. IF Segment
(PC) PROGRAM COUNTER:
את מכילשובת הפקודה הבאה שנמצאת בזיכרון כתצביע על סיביות שתפקידם לה 8מונה בעל , אלא אם 1 –ב (CLKהרלוונטיים. המונה מתקדם כל שעון ) Operands -וה Opcodes -ה
הוא נטען בתוצאה המתקבלת , יש צורך לקפוץ, כאשר JMP @A+DPTRהגיעה פקודת . וקופץ בהתאמה לכתובת הרלוונטית ALU_OUT_2 -מה
.0000H -ערכו מתעדכן ל RESETמונה זה תמיד סופר מעלה ותמיד מאופשר. בעת קבלת
/ ROM_OP_1 / ROM_OP_2 ROM_Prog :
נתונים BUS -ו BYTES 256זיכרונות נפרדים בעלי מרחב כתובות של 3 -ל מחולקתיחידה זו , OPCODE (IR)עבור bits-8 -אשר מחולק ל bits-24של
8-bits עבור Operand_18 -ו-bits עבורOperand_2 . שלה מאופשרות תמיד.כל אחד מנותב למקום המיועד לו. יחידה זו והיציאות
UNIT (C.U)CONTROL :
זוהי יחידת הבקרה של המערכת, יחידה זו מוציאה את האפשורים הנדרשים לכל פקודה במשך התקדמותה במעבר בין הסגמנטים השונים.
המתאים. OPCODE -וסיביות הבקרה צרובות לפי ה ROMיחידה זו בנויה מזיכרון ( כדי למנוע שינויים לא רצויים בכניסה בזמן ריצה.IF/ID) נועל יחידה זו לפני מקמנו
ID SEGMENT LATCH/IF :
זהו חוצץ הנועל את תוכן האוגרים שלו עבור הסגמנט שלאחריו עד לפולס השעון הבא, חוצץ . OP_2 , OP_1 , IR 1R-0R ,זה מכיל בתוכו את סיביות הבקרה, תוכן האוגרים:
.קבוע מאופשר זהנועל
6 Segment Pipeline
6
2. Segment DI
_1MUX :
הכתובת של: מרבב זה בוחר ע"פ קו הבקרה המגיע אליו אם להעביר הלאה את/ OP_1 1/ R 0R , ' ברגל 1בהתאם לפקודה שהגיעה. מרבב זה מאופשר תמיד ע"י '
MUX_EN.
MEM SEGMENT LATCH/ID:
זהו חוצץ הנועל את תוכן האוגרים מהסגמנט שלפניו עד לפולס השעון הבא, חוצץ זה מכיל -ם, בהתאם למוצא השיש לכתוב לתוכ 1R – 0R, OP_1, OP_2האוגרים: כתובותבתוכו את
MUX, בעוד ש- TEMP_1 מועבר ישירות ממכיל את המידע ש- OP_1 (לצורך כאשר נדרש .( CYCLEהפקודה שרצה ב
3. MEM Segment
DATA RAM:
רכיב זיכרון המאופשר ע"י רגלי הבקרה שלו. .אופציית קריאה או כתיבה לזיכרוןלבחור בין יםמשמש RD/WRהבקרה ויקו
SEGMENT LATCH EXE/MEM:
זהו חוצץ הנועל את תוכן האוגרים מהסגמנט שלפניו עד לפולס השעון הבא, חוצץ זה מכיל בהתאם המכיל את האופרנד שהתקבל – TEMP_2 ,VALUEהאוגרים: תוכןבתוכו את
אשר מניחים כי מאותחל באופרנד כלשהו – Aואוגר , RAM -לכתובת שניתנה לזיכרון ה .WB -התוצאה המתקבלת במוצא סגמנט ה שמירתמראש ומשמש בנוסף ל
6 Segment Pipeline
7
4. Segment EXE
_1ALU :
לפי הפקודה TEMP_2 / VALUE / A :האופרנדיםבין לבצע חיבור ALU_1 -תפקיד הבנועל ALU_OUT_1אוגר חזרה ל אנו טועניםאת התוצאה הנוכחי. Cycle -הרצה ב
הסגמנט. מפורט בהמשך. ALU_1אופן פעולת המעגל
PSW:
ביצוע , הוא מתעדכן בעליית שעון אחרי (Carry Flag) הנשא-זהו אוגר המכיל את דגל
אוגר זה מתאפס. ,ביצוע אתחולעת . ב,i@R ADDC Aהפקודה:
: דגל זה מסמן נשא.CY-דגל ה ואהדגל הרלוונטי לפקודות שלנו ה -
LATCH EXE_JMP/EXE:
בנועל. ALU_OUT_1אנו טוענים לאוגר ALU_1 -את התוצאה של החישוב שהתבצע במראש, לפני ביצוע מאותחל בערך כלשהו הידוע אשר , DPTRאוגר המכיל בנוסף את נועל זה
הפקודה.
6 Segment Pipeline
8
5. _JMP SegmentEXE
_2ALU :
הפקודה כאשר DPTR -ו ALU_OUT_1לבצע חיבור בין האופרנדים: ALU_2 -תפקיד הלשם חישוב הכתובת שאליה תבוצע JMP @A+DPTRהיא: הנוכחי Cycle -הרצה ב . הקפיצה
בנועל הסגמנט. ALU_OUT_2את התוצאה אנו טוענים לאוגר מפורט בהמשך. ALU_2אופן פעולת המעגל
LATCH EXE_JMP/WB:
בנועל. ALU_OUT_2אנו טוענים לאוגר ALU_2 -את התוצאה של החישוב שהתבצע ב
6. WB Segment
DEMUX :
לקווי בהתאם ,אל אוגר היעד ALU_OUT_2 -נטענה לש תוצאהאת המעביר זה רכיב . הבקרה
6 Segment Pipeline
9
Logisim -ב צית המעגללסימוסכמת
6 Segment Pipeline
10
פקודות-מיקרו
i@R ADDC A,
IF/ID.IR (PC) {ROM PROG} IF
PC PC+1
ID/MEM.MAR_1 IF/ID.Ri ID
MEM/EXE.VALUE (MAR 1) MEM
EXE/EXE_JMP.ALU_OUT_1 A+VALUE+CARRY EXE
EXE_JMP/WB.ALU_OUT_2 EXE/EXE_JMP.ALU_OUT_1 EXE_JMP
A EXE/EXE_JMP.ALU_OUT_2 WB
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_1 ID
ID/MEM.MAR_2 IF/ID.OP_2
(MAR 2) (MAR 1) - 1 MEM
NOP EXE
NOP EXE_JMP
NOP WB
NOP - יים כלשהם בתכולה שלפקודה זו אינה גורמת לשינו פקודה הבאה.ה לא PC-מקדמת את ה רק האוגרים אלא
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_1 ID
MEM/EXE.TEMP_2 ID/MEM.TEMP_1 MEM
EXE/EXE_JMP.ALU_OUT_1 A XOR TEMP_2 EXE
EXE_JMP/WB.ALU_OUT_2 EXE/EXE_JMP.ALU_OUT_1 EXE_JMP
A EXE_JMP/WB.ALU_OUT_2 WB
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_1 ID
ID/MEM.MAR_2 IF/ID.OP_2
(MAR 2) (MAR 1) MEM
NOP EXE
NOP EXE_JMP
NOP WB
JMP @A+DPTR
IF/ID.IR (PC) {ROM PROG} IF
NOP ID
NOP MEM
EXE/EXE_JMP.ALU_OUT_1 A EXE
EXE_JMP/WB.ALU_OUT_2 ALU_OUT_1+DPTR EXE_JMP
PC EXE_JMP/WB.ALU_OUT_2 WB
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
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הפקודה
הם.יבינ NOPתנצטרך לשים פקוד, iADDC A, @Rאם נרצה לשים את הפקודה
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
6 Segment Pipeline
15
פעולת המעגל אופן
תוכנית לביצוע
0ADDC A, @R
DEC 08H
XRL A, #03H
MOV 09H, 08H
JMP @A+DPTR
ראשוניותוהנחות הגדרות
: DEC DIRECTעבור פקודת .1 -וגם ב ROM OPERAND_1 -את אותה כתובת שנרצה לחסר ממנה גם ב יש להזין
ROM OPERAND_2 .
: DIRECT ,MOV DIRECT עבור פקודת .2את ROM OPERAND_2את כתובת המקור ועבור ROM OPERAND_1 -נצרוב ל
.שאליה נרצה לבצע את ההעברה כתובת היעד
. iADDC A, @Rמושפע אך ורק מפקודת PSWאוגר הדגלים .3
:שעונים – 2פי המערכת עובדת על .4 .האחרות SEGMENTS -היחידות יתרעבור כל השניו MEM -ה סגמנטאחד עבור
ו צרוב בצורה הבאה:נכרון התוכנית שליז .5
בעמודים הקודמיםם הפקודות יש התחשבות בטבלה שצוינה קויניתן לראות שבמ :בין פקודה לפקודהשצריכים להתקיים NOPs -כמות הל בנוגע
JMP @A+DPTR (06 )לבין MOV DIRECT, DIRECT (05) פקודה הבין -
. NOPשל האין צורך לשים הפרד
בין פקודת ל XRL A, #DATA (04)ובין פקודת מאחראך - JMP @A+DPTR (06יש צורך ב ) שתי פקודות הפרדה שלNOP , נאלצנו לשים
פקודת לבין MOV DIRECT, DIRECTפקודת בין NOPפקודתJMP @A+DPTR .
6 Segment Pipeline
16
Data Hazardבעיית מניעת שם ל ,לייעל את המערכתבמטרה המערכת, תכנון במהלך .6 . Data Forwardingהשתמשנו בשיטת
יכולה לגרום ל"עיקוב" בצינור כתוצאה מפעולה נוכחית שצריכה Data Hazardבעיית
מוקדמת שעדיין לא הסתיימה.-להמתין לתוצאה של פעולה כאשר , MEMבסגמנט באה לידי ביטויו Data Forwarding -כאן נכנסת שיטת ה -
ובכך מתאפשרתכרון ילכניסת הז מנותבת RAM-כרון היתוצאת הקריאה מז .נוכחי, ללא צורך בהמתנה CYCLEלזכרון באותו קריאה וכתיבה
תאפשרמת ובכך ע"י שימוש בשעון כפול מומשתמ Data Forwarding -טכניקת ה של שאר הסגמנטים. תוך מחזור שעון בודד קריאה וכתיבה
DEC DIRECT פקודות בעת ביצוע השיטה זו באה לידי ביטוי . MOV DIRECT, DIRECT -ו
: D-FF באמצעות מתבצעתחלוקת התדר מימוש אופן -
6 Segment Pipeline
17
מערכתחישוב ביחידות ה
1. 1_ALU :
הבקרה ירגל י"ע מבוקרת אשר יאה אחתויצ כניסות - 3 כוללת זו מערכת OP1_ALU1 ו-.OP2_ALU1
מאופסת. תהיה היציאה: ' 00 ' עבור .Aבערכה לערך של שווה תהיה היציאה ' 01 ' :עבור .CARRYiA+@R+בערכה לערך של שווה תהיה היציאה: ' ' 10עבור .A XOR TEMP_2בערכה לערך של שווה תהיה היציאה ' 11 ' :עבור
2. ALU_2 :
הבקרה רגל י"ע מבוקרת אשר אחת אהיויצ כניסות - 2כוללת זו מערכת OP_ALU_2. .ALU_OUT_1 בערכה לערך של שווה תהיה היציאה ' 0 ' עבור .DPTR+ ALU_OUT_1בערכה לערך של שווה תהיה היציאה ' 1 ' עבור
.JMP @A+DPTR תפקיד מערכת זו לטפל בפקודת
6 Segment Pipeline
18
הוראות להפעלת המעגל
:טען את הקבצים המצורפים .1ROM PROG, ROM OPERAND_1, ROM OPERAND_2, RAM DATA, CONTROL ROM
.כרונות המערכתילזבהתאמה הממוקם במרכז המעגל. RESET-ה אפס את המערכת ע" לחצן .2 .H02מוזן הערך 0R וודא כי באוגר .3 . JMP @A+DPTR פקודתביצוע לצורך DPTR -אוגר הל 10 ערךאת ההזן .4 .( CLK) השעוןלחיצה על הרץ את התוכנית בעזרת .5
סגמנט העבור מוגדרזכור כי שעון זה-MEM מוזן לשאר ההתדר של כפולהוהוא .PIPE -הסגמנטים ב
תעזר בטבליעליך לה מבעוד מועד, כנית השונה ממה שצרובבמידה וברצונך לכתוב ת שהוצגו. ראשוניותוהנחות ההגדרות -יחס לילהת וכן HAZARDSלמניעת הפקודות
: התוכניתתוצאות
:בסיום התוכנית תתקבלנה התוצאות הבאות
הערך שהיה מוזן ) FH 0של XORכתוצאה מפעולת 0CH יהיה מוזן בערך Aהאוגר . (0Rבכתובת שהופיעה באוגר
H09הוחסר אחד והתוצאה הועתקה לכתובת H08ערך בכתובת הניתן לראות כי גם מ תוכנית.קוד הן בכפי שצוי
.JMP -ה פעולתביצוע כתוצאה מ C1ערך ל "קפץ" PC -ה שערך ניתן לראות
הרצת התוכנית במהלך ערכים שינויי:
0FH A= 0@R ADDC A,
DEC 08H (08H)= #04H
XRL A, #03H A= 0CH
MOV 09H, 08H (09H)= (08H)= #04H
JMP @A+DPTR PC= 1CH