Lecture07 MIPS Interrupts

‫פסיקות וחריגות‬
Review
Standard Components
and Memories
VHDL
Pipeline (WH8)
Datapath / controller (WH7)
2.1-2.6
MIPS Instructions (PH3.1-3.5, extra 3.6-3.11)
Datapath ALU (PH4.5, extra 4.6-4.8)
B5
5.1-5.4
5.4
Single Cycle Controller (PH5.3)
Single Cycle Datapath (PH5.1-5.3)
5.5
Multi-Cycle Controller (PH5.4, extra 5.5)
Multi-Cycle Datapath (PH5.4)
Pipeline Controller (PH6.3)
Pipeline Datapath (PH6.2)
3rd ed
5.5
Interrupts
Communication (WH9)
1
‫חריגות )‪ (Exceptions‬ופסיקות )‪(Interrupts‬‬
‫• חריגות )‪ (exceptions‬הן אירועים הגורמים להפסקת ביצוע רצף הפקודות‬
‫ולקפיצה לתוכנית אחרת‬
‫• חריגות יזומות ע"י אחד משלושה גורמים‪:‬‬
‫א‪ .‬התוכנית עצמה‬
‫ב‪ .‬בעיות בביצוע התוכנית‬
‫ג‪ .‬גורם מחוץ למעבד‬
‫• חריגות היזומות ע"י גורם מחוץ למעבד מכונות גם פסיקות )‪(interrupts‬‬
‫• המושגים האלה אינם אוניברסליים‪ ,‬ובכל מחשב נהוגות הגדרות אחרות‬
‫– יש המכנים את כל שלושת הסוגים ‪interrupts‬‬
‫– שמות אחרים לסוגים שונים הם ‪ faults ,traps‬ועוד‬
‫‪2‬‬
‫תכן לוגי ‪ 044262‬הרצאת פסיקות‬
‫תפקידי מערכת ההפעלה )‪ (Operating System‬בטיפול‬
‫בחריגות‬
‫• כמו בקריאה לשגרה‪ ,‬גם בחריגה מבוצעת קפיצה‪ ,‬אלא‬
‫שהיעד נמצא במערכת ההפעלה‬
‫• המעבר לתוכנית אחרת מחייב אחסון יותר פרמטרים‬
‫מאשר בקריאה לשגרה‬
‫• מערכת ההפעלה תפעל בהתאם לאירוע הגורם לתקלה‬
‫בסיום הטיפול היא עשויה‪:‬‬
‫– לחדש מיידית את ביצוע התוכנית בפקודה בה נגרמה החריגה‬
‫– להעביר את התוכנית לסוף תור תוכניות הממתינות לחידוש הביצוע‬
‫– להפסיק את ביצוע התוכנית‪ ,‬ולעבור לתוכנית אחרת‬
‫‪3‬‬
‫תכן לוגי ‪ 044262‬הרצאת פסיקות‬
‫מעברים בין תוכנת משתמש למערכת הפעלה‬
‫‬‫‬‫‪-‬‬
‫‪RFE‬‬
‫'‬
‫‪RFE‬‬
‫'‬
‫‪RFE‬‬
‫‪Queue‬‬
‫'‬
‫‪4‬‬
‫‪RFE‬‬
‫תכן לוגי ‪ 044262‬הרצאת פסיקות‬
‫חריגות יזומות ע"י התוכנית עצמה‬
‫• תוכנית נזקקת לעזרת מערכת ההפעלה‬
‫– לצורך ביצוע פעולות "מיוחסות" (‪ )privileged‬שאסור לתוכנית לבצע בעצמה‬
‫(למשל קלט‪/‬פלט)‬
‫– מדוע אסור? למשל כדי למנוע התנגשות בין מספר תוכניות שונות‬
‫• התוכנית מבצעת פקודת קריאה למערכת ההפעלה‬
‫– (‪ syscall‬ב‪ )MIPS -‬פקודה זו שומרת את סטטוס התוכנית‪ ,‬וקופצת לשגרה‬
‫במערכת ההפעלה‬
‫• מערכת ההפעלה‬
‫– תבצע את הפעולה המבוקשת‬
‫– אח"כ תבצע פקודת חזרה (‪ rfe‬ב‪)MIPS -‬‬
‫– פקודה זו משחזרת את מצב התוכנית הקוראת‪ ,‬וקופצת חזרה לתוכנית זו‪,‬‬
‫לפקודה שאחרי הקריאה למערכת ההפעלה‬
‫• חריגות מסוג זה צפויות‪ ,‬והן מבוצעות כפקודה רגילה המבוצעת עד‬
‫סופה‬
‫‪5‬‬
‫תכן לוגי ‪ 044262‬הרצאת פסיקות‬
‫בעיות בביצוע פקודה הגורמות לחריגות‬
‫• בעיות בפיענוח הפקודה‪:‬‬
‫‪ opcode -‬שאיננו בשימוש‬
‫שלב האירוע במהלך‬
‫ביצוע הפקודה‬
‫‪ID‬‬
‫• בעיות אריתמטיות‪:‬‬
‫ גלישה ב‪ALU -‬‬‫‪ -‬חילוק באפס‬
‫‪EX‬‬
‫• בעיות בגישה לזיכרון‪:‬‬
‫ גישה לכתובת שאיננה בזיכרון הפיזי‬‫ גישה לכתובת אסורה‬‫‪6‬‬
‫‪MEM, IF‬‬
‫תכן לוגי ‪ 044262‬הרצאת פסיקות‬
‫פסיקות – חריגות היזומות ע"י גורמים מחוץ‬
‫למעבד‬
‫• גורמים חיצוניים היוזמים פסיקות‪:‬‬
‫ ציוד היקפי המבקש "תשומת לב" המעבד‬‫ שעון המבקש עדכון מונה‬‫‪ -‬גלאי ירידת מתח המבקש לעצור את המחשב‬
‫• בקשות פסיקה יכולות להופיע בכל פקודה ובכל שלב‬
‫של ביצוע הפקודה‪.‬‬
‫• פסיקות נענות (בדרך כלל) בסיום ביצוע פקודה‬
‫– אלא אם הפקודה אינה יכולה להסתיים (בגלל תקלה)‬
‫– במקרה של ‪ PIPELINE‬לא נכניס פקודות חדשות‪ ,‬אך נסיים את אלה‬
‫שב‪ PIPE-‬ולא גורמות לתקלות‬
‫‪7‬‬
‫תכן לוגי ‪ 044262‬הרצאת פסיקות‬
‫פסיקות נענות בסיום ביצוע פקודה‬
‫‪Interrupt Masking‬‬
‫"‬
‫‪KERNEL MODE‬‬
‫‪8‬‬
‫‪RFE‬‬
‫תכן לוגי ‪ 044262‬הרצאת פסיקות‬
‫התחלת הטיפול בחריגה‬
‫• כתובת הפקודה שבמהלכה ארעה החריגה נשמרת‬
‫ברגיסטר מיוחד‬
‫• ב‪ MIPS-‬הרגיסטר (‪ 32‬סיביות) נקרא‬
‫)‪Exception Program Counter (EPC‬‬
‫• לפני שמירת ‪ PC‬יש להחסיר ‪( 4‬מדוע?)‬
‫• מערכת ההפעלה עוברת לטפל בחריגה‪ ,‬בהתאם‬
‫לגורם שיזם את החריגה‬
‫• קיימות שתי שיטות עיקריות להכוונת מערכת ההפעלה‬
‫לטיפול המתאים‬
‫‪9‬‬
‫תכן לוגי ‪ 044262‬הרצאת פסיקות‬
‫שיטה א'‪ :‬קוד הגורם לחריגה (נהוגה ב‪)MIPS -‬‬
‫• הגורם לחריגה טוען קוד לרגיסטר סטטוס מיוחד‬
‫• ב‪ MIPS-‬הרגיסטר (‪ 32‬סיביות) נקרא ‪Cause register‬‬
‫• מבוצעת קפיצה לכתובת קבועה במערכת ההפעלה‬
‫• ב‪ MIPS-‬כתובת זו היא ‪0x8000 0180‬‬
‫• מערכת ההפעלה קוראת את הקוד ברגיסטר הסטטוס‪,‬‬
‫ולפי זה קופצת לשגרת טיפול מתאימה‬
‫‪10‬‬
‫תכן לוגי ‪ 044262‬הרצאת פסיקות‬
‫שיטה ב'‪Vectored interrupt :‬‬
‫• הכתובת במערכת ההפעלה אליה מבוצעת הקפיצה‬
‫נקבעת (בחלקה) ע"י הגורם לחריגה‪ ,‬ומצביעה על‬
‫"ווקטור הפסיקה"‬
‫• וקטור הפסיקה (בגודל קבוע‪ ,‬למשל ‪ 32‬בתים)‪ ,‬יכול‬
‫לכלול מספר פקודות‪ ,‬שאחת מהן יכולה להיות קפיצה‬
‫לתוכנית שתמשיך בטיפול‬
‫• בלוק במרחב הזיכרון של מערכת ההפעלה מיועד‬
‫לאחסן את ווקטורי הפסיקה‬
‫‪11‬‬
‫תכן לוגי ‪ 044262‬הרצאת פסיקות‬
‫חלופות הטיפול בחריגות‬
‫שיטה ב'‬
‫שיטה א'‬
‫מרחב הזיכרון של‬
‫מערכת ההפעלה‬
‫מרחב הזיכרון של‬
‫מערכת ההפעלה‬
‫שגרת הטיפול‬
‫בפסיקה‬
‫שגרת הטיפול‬
‫בפסיקה‬
‫קפיצה לשגרת‬
‫הטיפול בפסיקה‬
‫וקטורי פסיקה‬
‫‪12‬‬
‫הקפיצה‬
‫למערכת‬
‫ההפעלה היא‬
‫לכאן‬
‫ברור סיבת‬
‫החריגה‬
‫‪0x80000184‬‬
‫‪0x80000180‬‬
‫‪0x80000180‬‬
‫תכן לוגי ‪ 044262‬הרצאת פסיקות‬
)‫ (תזכורת‬MIPS ‫מימוש רב מחזורי של‬
PCWriteCond
PCSource
PCWrite
IorD
Outputs
ALUSrcB
MemRead
MemWrite
Control
ALUSrcA
RegWrite
MemtoReg
IRWrite
ALUOp
Op
[5– 0]
RegDst
0
M
26
Instruction [25– 0]
Shift
left 2
Instruction
[31-26]
PC
0
M
u
x
1
Address
Memory
Instruction
[25– 21]
Read
register 1
Instruction
[20– 16]
Read
Read
register 2 data 1
Registers
Write
Read
register
data 2
MemData
Instruction
[15– 0]
Write
data
Instruction
register
Instruction
[15– 0]
Memory
data
register
0
M
Instruction u
x
[15– 11]
1
B
0
M
u
x
1
16
Sign
extend
32
Shift
left 2
x
2
Zero
ALU ALU
result
ALUOut
0
4
Write
data
1 u
Jump
address [31-0]
PC [31-28]
0
M
u
x
1
A
28
1 M
u
2 x
3
ALU
control
Instruction [5– 0]
P&H Fig. 5-28
‫ הרצאת פסיקות‬044262 ‫תכן לוגי‬
13
‫דיאגרמת מעברי מצבים של הבקר‬
‫במימוש רב מחזורי של ‪( MIPS‬תזכורת)‬
‫‪P&H Fig. 5-38‬‬
‫‪14‬‬
‫תכן לוגי ‪ 044262‬הרצאת פסיקות‬
‫ עם טיפול בחריגות‬MIPS ‫מימוש רב מחזורי של‬
CauseWrite
PCWriteCond
IntCause
EPCWrite
PCWrite
PCSource
IorD
Outputs
ALUSrcB
MemRead
MemWrite
Control
ALUSrcA
RegWrite
MemtoReg
IRWrite
ALUOp
Op
[5– 0]
RegDst
0
M
26
Instruction [25– 0]
Shift
left 2
0
M
u
x
1
Address
Memory
Instruction
[25– 21]
Read
register 1
Instruction
[20– 16]
Read
Read
register 2 data 1
Registers
Write
Read
register
data 2
MemData
Instruction
[15– 0]
Write
data
Instruction
register
Instruction
[15– 0]
Memory
data
register
1 u
x
2
8000 0180
Instruction
[31-26]
PC
28
Jump
address [31-0]
0
M
Instruction u
x
[15– 11]
1
B
0
M
u
x
1
Sign
extend
32
Shift
left 2
Zero
ALU ALU
result
ALUOut
EPC
0
4
Write
data
16
0
M
u
x
1
A
3
PC [31-28]
1 M
u
2 x
3
ALU
control
0
0
1
1
M
U
X
Cause
Instruction [5– 0]
P&H Fig. 5-39
‫ הרצאת פסיקות‬044262 ‫תכן לוגי‬
15
‫דיאגרמת מעברי מצבים של הבקר‬
‫במימוש רב מחזורי של ‪ MIPS‬עם טיפול בחריגות‬
‫‪P&H Fig. 5-40‬‬
‫‪16‬‬
‫תכן לוגי ‪ 044262‬הרצאת פסיקות‬
)‫ (תזכורת‬MIPS ‫מימוש מצונר של‬
IF.Flush
Hazard
detection
unit
ID/EX
M
u
x
WB
Control
0
M
u
x
IF/ID
4
M
WB
EX
M
MEM/WB
WB
Shift
left 2
Registers
PC
EX/MEM
=
M
u
x
Instruction
memory
ALU
Data
memory
M
u
x
M
u
x
Sign
extend
M
u
x
Forwarding
unit
P&H Fig. 6-41
‫ הרצאת פסיקות‬044262 ‫תכן לוגי‬
17
MIPS ‫ במימוש מצונר של‬ALU ‫טיפול בגלישות‬
IF.Flush
EX.Flush
Hazard
detection
unit
8000 0180
ID.Flush
ID/EX
M
u
x
0
WB
0
Control
0
M
u
x
1
M
U
X
EX/MEM
M
WB
0
EX
IF/ID
EPC
0
1
M
U
X
MEM/WB
M
WB
Cause
4
Shift
left 2
Registers
PC
=
M
u
x
Instruction
memory
ALU
M
u
x
Data
memory
M
u
x
Sign
extend
M
u
x
Forwarding
unit
P&H Fig. 6-42
‫ הרצאת פסיקות‬044262 ‫תכן לוגי‬
18
‫סיכום‬
‫•‬
‫חריגה )‪ (exception‬פועלת בדומה לקריאה לשגרה‪ ,‬אלא שהשגרה‬
‫היא חלק ממערכת ההפעלה‪ ,‬ולא מהתוכנית‬
‫•‬
‫חריגה יכולה להיות יזומה ע"י‪:‬‬
‫‪.I‬‬
‫התוכנית עצמה‬
‫‪ .II‬בעיות בביצוע התוכנית‬
‫‪ .III‬גורמים מחוץ למעבד‪ .‬חריגות כאלה נקראות פסיקות )‪(interrupts‬‬
‫•‬
‫חריגות היזומות ע"י התוכנית עצמה צפויות‪ ,‬ומתבצעות כפקודה‬
‫רגילה‬
‫•‬
‫חריגות הנובעות מבעיות בביצוע התוכנית יכולות להופיע בכל שלבי‬
‫ביצוע פקודה‬
‫•‬
‫מערכת ההפעלה תחליט האם בסיום הטיפול לחזור לתוכנית במקום‬
‫שעצרה‪ ,‬או להפסיק את ביצועה‬
‫‪19‬‬
‫תכן לוגי ‪ 044262‬הרצאת פסיקות‬
‫סיכום‬
‫(המשך)‬
‫•‬
‫חריגות היזומות ע"י גורמים מחוץ למעבד (פסיקות)‬
‫יכולות להופיע בכל שלב במהלך כל פקודה‬
‫•‬
‫פסיקות נענות בין סיום ביצוע פקודה אחת לבין‬
‫תחילת ביצוע הפקודה הבאה‬
‫•‬
‫זיהוי הגורם לפסיקה יכול להיעשות ע"י טעינת קוד‬
‫זיהוי לרגיסטר המיועד למטרה זו‪ ,‬או ע"י בחירת‬
‫כתובת בה מאוחסן ווקטור הפסיקה המתאים‬
‫•‬
‫שילוב הטיפול בחריגות בבקרת המעבד כך שמהירות‬
‫הביצוע של הפקודות לא תיפגע הוא אתגר רציני‬
‫‪20‬‬
‫תכן לוגי ‪ 044262‬הרצאת פסיקות‬