19
31270 - ארכיטקטורה ומבנה מחשבים תיק תכנון מגישים: אופיר אהרון- 301033437 עמוס איזיק- 301705711 מרצה הקורס: מר משה שדה תאריך הגשה: 4.2.16 6 Segment Pipeline

Final Project - 6 Segment Pipeline - Aharon Ofir & Aizik Amos

Embed Size (px)

Citation preview

Page 1: Final Project - 6 Segment Pipeline - Aharon Ofir & Aizik Amos

31270 - ארכיטקטורה

מחשבים ומבנה

תיק תכנון

:מגישים

301033437 - אופיר אהרון

301705711 - עמוס איזיק

מרצה הקורס:

מר משה שדה

:תאריך הגשה

4.2.16

6 Segment Pipeline

Page 2: Final Project - 6 Segment Pipeline - Aharon Ofir & Aizik Amos

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 ............................................................................. המעגל להפעלת הוראות

Page 3: Final Project - 6 Segment Pipeline - Aharon Ofir & Aizik Amos

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 שאיתם הצלחנו להתמודד.

Page 4: Final Project - 6 Segment Pipeline - Aharon Ofir & Aizik Amos

6 Segment Pipeline

3

תרשים מלבנים כללי

Page 5: Final Project - 6 Segment Pipeline - Aharon Ofir & Aizik Amos

6 Segment Pipeline

4

תרשים מלבנים מפורט

Page 6: Final Project - 6 Segment Pipeline - Aharon Ofir & Aizik Amos

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 ,זה מכיל בתוכו את סיביות הבקרה, תוכן האוגרים:

.קבוע מאופשר זהנועל

Page 7: Final Project - 6 Segment Pipeline - Aharon Ofir & Aizik Amos

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 -התוצאה המתקבלת במוצא סגמנט ה שמירתמראש ומשמש בנוסף ל

Page 8: Final Project - 6 Segment Pipeline - Aharon Ofir & Aizik Amos

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אוגר המכיל בנוסף את נועל זה

הפקודה.

Page 9: Final Project - 6 Segment Pipeline - Aharon Ofir & Aizik Amos

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 -נטענה לש תוצאהאת המעביר זה רכיב . הבקרה

Page 10: Final Project - 6 Segment Pipeline - Aharon Ofir & Aizik Amos

6 Segment Pipeline

9

Logisim -ב צית המעגללסימוסכמת

Page 11: Final Project - 6 Segment Pipeline - Aharon Ofir & Aizik Amos

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-מקדמת את ה רק האוגרים אלא

Page 12: Final Project - 6 Segment Pipeline - Aharon Ofir & Aizik Amos

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

Page 13: Final Project - 6 Segment Pipeline - Aharon Ofir & Aizik Amos

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

Page 14: Final Project - 6 Segment Pipeline - Aharon Ofir & Aizik Amos

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אם נרצה לשים את הפקודה

Page 15: Final Project - 6 Segment Pipeline - Aharon Ofir & Aizik Amos

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

Page 16: Final Project - 6 Segment Pipeline - Aharon Ofir & Aizik Amos

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 .

Page 17: Final Project - 6 Segment Pipeline - Aharon Ofir & Aizik Amos

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 באמצעות מתבצעתחלוקת התדר מימוש אופן -

Page 18: Final Project - 6 Segment Pipeline - Aharon Ofir & Aizik Amos

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 תפקיד מערכת זו לטפל בפקודת

Page 19: Final Project - 6 Segment Pipeline - Aharon Ofir & Aizik Amos

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