14
ההההה הההההה הההה הההההה הההה ההההה –pipeline - לללללל לpipeline לל לללל לללללללל. ללל ללללל לללללללל ללללל לללללל לללללל לללללל ללללללל לללל לללללל ללללל לל ללללל, לל לללל לללללל לל לללללל ללללל לל לללללל ללללללל. לל ללללILP – Instruction Level Parallelism לל לללל ללללללל לללללל ללל:- Dual pipelining ללללל2 לללללל לללללל לללללל ללללל ללל לללל לללללל: לללל:ADD EAX,EBX ADD ESI,EDI לללל לללללללI ללל לל לללללללל ללללל.- - VLIW – Very Large Instruction Word ללללל ללללללל לללללל לל לללללל ללללללל לללללל ללל, ללל ללללpush rbp mov rbp, rsp - Superscaler – לללללל ללללל לללללל לל לללללל לללללל ללללללל לל לללל לל ללללל לל לללללללל.- לללללל לללללללללל לRISC ללללל ללל לללללל לללל לל לללללל לל לללללל ללל, לללל לללל לללל לללללל לל לללללללללל ללללל ללל.

math.haifa.ac.ilmath.haifa.ac.il/ronn/CompArch/lectures/lecture07/CArch13.docx  · Web viewVLIW – Very Large Instruction Word זיהוי צירופים נפוצים של פקודות

  • Upload
    lamtu

  • View
    214

  • Download
    0

Embed Size (px)

Citation preview

Page 1: math.haifa.ac.ilmath.haifa.ac.il/ronn/CompArch/lectures/lecture07/CArch13.docx  · Web viewVLIW – Very Large Instruction Word זיהוי צירופים נפוצים של פקודות

עיבוד מקבילי ברמת החומרה

pipeline מעבד מצונר –

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

יצטברו לינארית.

ILP – Instruction Level Parallelismזה נקרא

יש מבחר טכניקות לרעיון הזה:

-Dual pipelining פקודות עוקבות במקביל בתנאי שהן בלתי תלויות:2 ביצוע למשל:

ADD EAX,EBXADD ESI,EDI

אבל עם פוטנציאל מוגבל.Iמומש בפנטיום

-

-VLIW – Very Large Instruction Wordזיהוי צירופים נפוצים של פקודות ומימושם כפקודה אחת, כמו למשל

push rbpmov rbp, rsp

-Superscalerטכניקת ביצוע מקבילי של פקודות עוקבות בתוכנית עם מספר לא – מבוטל של וריאציות.

במידה רבה הומצאה להקל על המימוש של הרעיון הזה,RISCבעקרון מתודולוגית ה-שקשה הרבה יותר למימוש על ארכיטקטורה שאינה כזו.

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

ןתלות בין הפקודות.

פקודות אריתמטיות, כתיבה וקריאה2לדוגמא, המעבד הבא מכיל יכולת לבצע לזיכרון, ופעולת מספר ממשי במקביל:

Page 2: math.haifa.ac.ilmath.haifa.ac.il/ronn/CompArch/lectures/lecture07/CArch13.docx  · Web viewVLIW – Very Large Instruction Word זיהוי צירופים נפוצים של פקודות
Page 3: math.haifa.ac.ilmath.haifa.ac.il/ronn/CompArch/lectures/lecture07/CArch13.docx  · Web viewVLIW – Very Large Instruction Word זיהוי צירופים נפוצים של פקודות

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

פעולות מספרים שלמים, כתיבה אחת וקריאה2 פקודות מכונה יש 5אם התמזל למעבד וב- אחת לזיכרון, ופקודת מספרים ממשיים וכולם בלתי תלויים, הם יתבצעו במקביל או שהזמן

שייקח הוא המקסימום של זמני הפקודות ולא סכומם.

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

הבא:MIPSלדוגמא, נניח קטע הקוד ה-

ld r10,0(r2)

dadd r4,r5,r3

add.d f6,f7,f8

sd r8,8(r9)

dsub r15,r16,r17

dadd r18,r19,r20

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

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

כאשר: נעצרת של מעבד מצונר, המקביליות הבסיסיתבגרסה

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

למשל בקטעי הקוד הבא:

Page 4: math.haifa.ac.ilmath.haifa.ac.il/ronn/CompArch/lectures/lecture07/CArch13.docx  · Web viewVLIW – Very Large Instruction Word זיהוי צירופים נפוצים של פקודות

1)

ld r10,0(r2)

dadd r4,r5,r3

add.d f6,f7,f8

sd f6,0(r4)

sd r8,8(r9)

dsub r15,r16,r17

dadd r18,r19,r20

(2ו-

ld r10,0(r2)

dadd r4,r5,r3

add.d f6,f7,f8

add.d f3,f2,f1sd r8,8(r9)

dsub r15,r16,r17

dadd r18,r19,r20

(3ו-

ld r10,0(r2)

dadd r4,r5,r3

add.d f6,f7,f8

beqz r9,r0,label1

sd r8,8(r9)

label1:

dsub r15,r16,r17

dadd r18,r19,r20

Page 5: math.haifa.ac.ilmath.haifa.ac.il/ronn/CompArch/lectures/lecture07/CArch13.docx  · Web viewVLIW – Very Large Instruction Word זיהוי צירופים נפוצים של פקודות

(4ו-

ld r10,0(r2)

dadd r4,r5,r3

dadd r6,r7,r4

dadd r4,r22,r23

sd r8,8(r4)label1:dsub r15,r16,r17

dadd r18,r4,r20

( יש1 משום שבקטע nop השני יקבלו ALU וה-store פקודות וה-3המקביליות תקטע אחרי ( אין במעבד צינור שני2 של הפקודה השנייה, בקטע r4תלות של הפקודה הרביעית ב-

( משום שיש השמה חדשה4( בגלל שיש פקודת הסתעפות מותנית ובקטע 3לממשי, בקטע .r4ל-

register renaming תלויות מדומות וביטולם ע"י

נסתכל על הקוד הבא:

dadd r4,r5,r6

sd r9,0(r4)

dadd r4,r8,r12

ld r10,0(r4)

הפקודות האחרונות במקביל עם הראשונות2 הבסיסי לא נתן לבצע את Superscalerבמודל . הנקודה שה"תלות" בין הפקודותr4משום ששתי הקבוצות של זוג פקודות משתמשות ב-

מדומה. שתי הפקודות האחרונות לא משתמשות בתוצאות של שתי הפקודות הראשונות. קבוצות הפקודות. מספיק2, נשבר התלות בין r4ברגע שיש השמה של ערך בלתי תלוי ב-

( בכדי שיהיה אפשר לבצע את הפקודות במקביל:r22 באוגר בלתי תלוי )נניח r4להחליף את

dadd r4,r5,r6

sd r9,0(r4)

dadd r22,r8,r12

ld r10,0(r22)

Page 6: math.haifa.ac.ilmath.haifa.ac.il/ronn/CompArch/lectures/lecture07/CArch13.docx  · Web viewVLIW – Very Large Instruction Word זיהוי צירופים נפוצים של פקודות

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

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

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

, …. אזי סדרת הפקודות המקוריתIR1, IR2לדוגמא, נניח שהאוגרים הפנימיים במעבד נקראים תתרגם ל-

dadd IR1,r5,r6

sd r9,0(IR1)

dadd IR2,r8,r12

ld IR3,0(IR2)

כאשר בסוף התהליך, הערכים המיועדים לאוגרים הרשמיים הם:

r4, IR1 IR2

r10, IR3

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

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

הזה מוצבים ערכי האוגרים הפנימיים ליעדם הרשמי. בדוגמא שלעיל משמעות הדבר שלאוגרr4-יוצב הערך ב IR2 והאוגר r10-יוצב הערך ב IR3 .

Out of Order ו- in-order מימוש

נניח הקוד הבא:

dadd r4,r5,r6

ld r8,0(r4)

dadd r5,r8,r4

sd r10,0(r5)

add.d f15,f16,f17

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

.in-orderהחמישית צריכה להמתין לביצוע הקודמות. התעקשות על ביצוע הפקודות נקראת

לעומת זאת אם הקוד ייכתב:

Page 7: math.haifa.ac.ilmath.haifa.ac.il/ronn/CompArch/lectures/lecture07/CArch13.docx  · Web viewVLIW – Very Large Instruction Word זיהוי צירופים נפוצים של פקודות

dadd r4,r5,r6

add.d f15,f16,f17

sd r9,0(r4)

dadd r4,r8,r9

ld r10,0(r4)

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

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

.out of orderהסדר, טכניקה שנקראת

בטכניקה הזו, הפקודות נצברות במעבד אם הן תלויות או לא במבנה נתונים הנקראReservation Station או( RSהמעבד מבצע את הפקודות כאשר הוא יכול, כלומר כאשר .)

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

Data Bus או CDBתוצאות החישובים מועברים לתור פקודות בסדר שהם מופיעים בתוכנית . לאותם פקודות שהחישוב שלהםcommit(, והמעבד מבצע ROB )או Re Order Bufferהנקרא

ל-commit לא, המעבד יעשה 4 חושבו ו-1,2,3,5,6הסתיים ברצף. לדוגמא, אם הפקודות יתבצע.4 יתעכב עד שפקודה commit ה-5,6 ופקודות 1,2,3

במילים אחרות, כל פקודת מכונה עוברת את השלבים הבאים:

Issue RSהעתקת הפקודה ל-פענוח ושינוי שמות

Execute חישוב הפקודה

בפועל

Write result RSרישום התוצאה ב-

ROB וב-CDBוב-

Commit מימוש הפקודה במסגרת

הגלויה למתכנת, ..(r1,r2)הארכיטקטונית

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

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

Page 8: math.haifa.ac.ilmath.haifa.ac.il/ronn/CompArch/lectures/lecture07/CArch13.docx  · Web viewVLIW – Very Large Instruction Word זיהוי צירופים נפוצים של פקודות

.control hazards ו-data hazardsבעקרון הן מתחלקות לשתי קטגוריות,

מתחלקים לכמה סוגים:data hazardsה-

RAW (Read After Write) hazard:

למשל:

add r1,r2,r3

add r5,r6,r1

לפני שיוצב בו הערך הנכוןr1ש סכנה שהפקודה השנייה תקרא את י

WAR (Write After Read) hazard:

למשל:

add r5,r6,r1

add r1,r2,r3

לפני שיקרא ע"י הפקודה הראשונה.r1יש סכנה שהפקודה השנייה תציב ל-

WAW (Write After Write) hazard:

למשל:

add r1,r6,r7

ld r10,0(r1)

add r1,r2,r3

הערך שאמור לתפוס הוא הפקודה השלישית, אבל יש סכנה שהוא יעשה ראשון.

בנוסף ישנה סכנה של פקודת הסתעפות מותנית שעשויה להתבצע או שלא.

לדוגמא:

add r5,r6,r7

beqz r5,r9,Skip1

Page 9: math.haifa.ac.ilmath.haifa.ac.il/ronn/CompArch/lectures/lecture07/CArch13.docx  · Web viewVLIW – Very Large Instruction Word זיהוי צירופים נפוצים של פקודות

addi r5,r5,8Skip1:

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

ע"י מחיקת ה-Control hazards ואת ה-renaming ע"י Data Hazardsהטכניקה הזו פותרת את ה-RS.במקרה של חיזוי שגוי

לדוגמא, נסתכל על הקוד המקורי:

dadd r4,r5,r6

ld r8,0(r4)

dadd r5,r8,r4

sd r10,0(r5)

add.d f15,f16,f17

הקוד יראה כך:renamingאחרי ביצוע

dadd IR1,r5,r6

ld IR2,0(IR1)

dadd IR3,IR2,IR1

sd r10,0(IR3)

add.d IR4,f16,f17

איןIR1 כי ל-2,3 בפקודות IR1לדוגמא, עכשיו כאילו אי אפשר להשתמש "בערך קודם" של ערך קודם עד שיחושב.

טבלת הערכים המיועדים

r4, IR1

r8, IR2

r5, IR3

f15,IR4

Page 10: math.haifa.ac.ilmath.haifa.ac.il/ronn/CompArch/lectures/lecture07/CArch13.docx  · Web viewVLIW – Very Large Instruction Word זיהוי צירופים נפוצים של פקודות

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

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

)העתקתissue יחידות זמן, וכל פקודה ה-3נניח, לשם הפשטות, שכל פקודה הביצוע שלה היא לוקחות יחידת זמן אחת .commitהפקודה( כתיבת התוצאה -

אזי השלבי הביצוע של הקוד יהיו:

הפקודה Issue Exe Write Result Commit Unitdadd IR1,r5,r6 1 2-4 5 6 ALU1ld IR2,0(IR1) 2 6-8 9 10 LDdadd IR3,IR2,IR1 3 10-12 13 14 ALU2sd r10,0(IR3) 4 14-16 17 SD add.d IR4,f16,f17

5 6-8 10 18 FP

הנחות היסוד של מילוי הטבלה הן כלהלן:issue חייב להיות - inorder

inorder חייב להיות commitה-- אחד בכל רגע נתוןissueניתן לעשות רק - של כל האופרנדיםWR ה-רק אחרי יכול להתחיל להתבצע exeה-- עד אשר יש יחידת ביצוע מהסוג המתאים פנויה,issueלא ניתן לעשות -

.WR שהיא עושה באותו רגעשמתפנה כוללexecute, זמן הביצוע ALUחישוב כתובת אינו מחייב שימוש ב--

את חישוב הכתובת אחד ברגע נתוןWRלא ניתן יותר מ--זמני החישוב נמדדים בסייקלים – יחידות זמן.-.WR אינם עושים branch ו-sdפקודות -WR וכל פעולות האוגרים כן עושות ldפקודות -

אזי:FP 5, ALU 3 יחידות ו-6 זה load, store לא אחיד, נניח exeאם נניח זמן ה-

הפקודה Issue Exe Write Result Commit Unitdadd IR1,r5,r6 1 2-4 5 6 ALU1ld r8,0(IR1) 2 6-11 12 13 LDdadd IR3,IR2,IR1 3 13-15 16 17 ALU2sd r10,0(IR3) 4 17-22 23 SD add.d IR4,f16,f17

5 6-10 11 24 FP

Page 11: math.haifa.ac.ilmath.haifa.ac.il/ronn/CompArch/lectures/lecture07/CArch13.docx  · Web viewVLIW – Very Large Instruction Word זיהוי צירופים נפוצים של פקודות

דוגמא:

נניח הקוד היה קצת פחות תלוי:

dadd r4,r5,r6

ld r8,0(r4)

dadd r5,r11,r4

sd r10,0(r5)

add.d f15,f16,f17

:renamingה-

dadd IR1,r5,r6

ld IR2,0(IR1)

dadd IR3,r11,IR1

sd r10,0(IR3)

add.d IR4,f16,f17

טבלת הערכים המיועדים

r4, IR1

r8, IR2

r5, IR3

f15,IR4

:3זמנים לפי זמן אחיד לפעולה

הפקודה Issue Exe Write Result Commit Unitdadd IR1,r5,r6 1 2-4 5 6 ALU1ld IR2,0(IR1) 2 6-8 9 10 LDdadd IR3,r11,IR1 3 6-8 10 11 ALU2sd r10,0(IR3) 4 11-13 14 SD add.d IR4,f16,f17

5 6-8 11 15 FP

Page 12: math.haifa.ac.ilmath.haifa.ac.il/ronn/CompArch/lectures/lecture07/CArch13.docx  · Web viewVLIW – Very Large Instruction Word זיהוי צירופים נפוצים של פקודות

אזי:FP 5, ALU 3 יחידות ו-6 זה load, store לא אחיד, נניח exeאם נניח זמן ה-

הפקודה Issue Exe Write Result Commit Unitdadd IR1,r5,r6 1 2-4 5 6 ALU1ld IR2,0(IR1) 2 6-11 12 13 LDdadd IR3,r11,IR1 3 6-8 9 14 ALU2sd r10,0(IR3) 4 10-15 16 SD add.d IR4,f16,f17

5 6-10 11 17 FP