RISC – הבדלי גרסאות

תוכן שנמחק תוכן שנוסף
מ ←‏היסטוריה: הלו, זו אנציקלופדיה?
Matanyabot (שיחה | תרומות)
מ בוט: שינויים קוסמטיים
שורה 1:
'''RISC''' {{כ}} (ב[[אנגלית]]: '''Reduced Instruction Set Computing'''{{כ}}; מילולית: "מחשב עם [[סט פקודות]] מצומצם") היא גישה בתכנון [[מעבד|מעבדים]]ים, שמתמקדת ב[[סט פקודות|סט הפקודות]] של המעבד, אך מדברת גם על מאפיינים נוספים של תכנון המעבד, בנוסף לסט הפקודות.
 
== היסטוריה ==
באמצע [[שנות השבעים של המאה ה-20]], התנהלו מחקרים במעבדות המחקר של [[IBM]]{{הערה|1=חלק ממחקרים אלו בוצעו על ידי ג'והן קוֹקי{{אנ|John Cocke}}}} ובמקומות אחרים במטרה למצוא דרכים לשיפור הביצועים של [[מחשב|מחשבים]]ים. במסגרת המחקרים בדקו החוקרים באיזו מידה פקודות ואופני מיעון ("Addressing Modes") שונים נמצאים בשימוש ב[[תכנית מחשב|תכניות מחשב]].
 
המחקרים העלו שחלק מאופני המיעון והפקודות המסובכים ביותר, (אשר מימושם צרך חלק גדול יחסית מ[[חומרה|חומרת]] המחשב), אינם נמצאים בשימוש כלל, או כמעט בכלל. בנוסף, התברר כי במקרים רבים, אופני המיעון והפקודות המסובכים ביותר וממומשים ב[[מיקרוקוד]] יעילים פחות מקטעי קוד קצרים המבצעים אותן פעולות ומבוססים על פקודות פשוטות יותר. דוגמה בולטת לפקודה ממומשת במיקרוקוד שיעילותה פחותה מקוד שיוצר ב[[מהדר]] היא הפקודה <code>INDEX</code> ב[[מיני-מחשב]] [[VAX]] של חברת דיגיטל ([[DEC]]).
שורה 18:
במקביל, מתכנני מעבדים שלא מיישמים את גישת ה-RISC במלואה החלו להטמיע חלקים ופרטים מסוימים מעקרונות ה-RISC למעבדים החדשים, עד שבימינו קווי הגבול בין מעבדים שנחשבים ל-RISC ואלו שאינם כאלו מיטשטשים והולכים.
 
== עקרונות ה-RISC ==
העיקרון הראשון של RISC הוא כמובן זה שעל שמו נקראת כל הגישה: [[סט פקודות]] מצומצם. אין הכוונה שסט הפקודות הוא בהכרח קטן או פשוט, אלא שסט הפקודות שהמעבד תומך בו הוא כזה ש[[מהדר|מהדרים]]ים אכן משתמשים בהן בפועל. פקודות שבהן לא משתמשים המהדרים, או כאלו שמשתמשים בהן מעט מאד לא ימומשו ב[[חומרה]], ובמקומן ייעשה שימוש ב[[שגרה (תכנות)|שגרות]] [[תוכנה]].
 
יחד עם זאת, זה אינו העיקרון היחיד. על סט העקרונות המדויק שנחשב ל-RISC אין הסכמה מלאה, ומעבדים מסוימים שמממשים את רוב העקרונות אך לא את כולם עדיין נחשבים מעבדי RISC.
שורה 35:
 
 
==== מאפיינים נוספים הקשורים ל-RISC ====
מאפיינים אלו אינם קשורים בהכרח ל-RISC, אך הם מופיעים בהרבה מעבדים הנחשבים ל-RISC, או רק במעבדי RISC.
 
===== חיזוי קפיצות =====
אחת הפקודות שכל מעבד תומך בהן היא "קפיצה מותנית": פקודה זו בודקת תנאי מסוים (למשל אם התוכן של אוגר א' גדול מתוכנו של אוגר ב'), ואם התנאי מתקיים המעבד "קופץ", כלומר הפקודה הבאה שהמעבד מבצע אינה הפקודה שרשומה בזיכרון בכתובת הבאה, אלא פקודה שנמצאת בכתובת אחרת, שהיא אחד הפרמטרים של הקפיצה המותנית.
 
פקודה זו יוצרת "שבירה" בצינור עיבוד הנתונים, וכתוצאה מכך מפסידים זמן ביצוע. חיזוי הקפיצות היא טכניקה שמאפשרת למעבד "להציץ" קדימה בצינור עיבוד הנתונים ולזהות שאחת הפקודות הבאות היא קפיצה מותנית. בשלב זה המעבד עדיין לא יכול לבדוק את התנאי, אבל לפי [[היוריסטיקה]] מסוימת המעבד מחליט האם סביר יותר שהקפיצה תתבצע או לא, ולפי החלטה זו עשוי לשנות את ההתנהגות - למשל הפקודה הבאה שמוזנת לצינור עיבוד הנתונים יכולה להיות מהכתובת החדשה. יש לציין כי החלטה שגויה לא תגרום לטעות בהרצת התכנה, אלא לכל היותר פגיעה מסוימת בביצועים משום שאם המעבד לא מצליח לשמור את צינור עיבוד הנתונים מלא, משמעות הדבר היא שהוא "עובד על ריק" למשך מספר מחזורי שעון.
 
===== ביצוע הפקודה שאחרי פקודת הקפיצה באופן בלתי מותנה =====
טכניקה זו, כמו קודמתה, מיועדת לצמצם את המחיר של קפיצות שנובע מהצורך להשליך את תוכן צינור עיבוד הנתונים בקפיצה. העיקרון עליו מבוססת הטכניקה הוא סידור מחדש של הפקודות על ידי המהדר, כך שהפקודה שקודמת לפקודת הקפיצה מועברת אם אפשר אחרי פקודת הקפיצה. אם אי אפשר, הפקודה מיד אחרי פקודת הקפיצה המותנית נשארת ריקה (NOP). המעבד מבצע את הפקודה שאחרי הקפיצה המותנית בין אם הקפיצה התבצעה (כלומר התנאי התקיים) ובין אם לאו, ובאופן כזה מנוצל מחזור שעון שאחרת היה מבוזבז במקרה שהקפיצה מתבצעת. המחיר של שימוש בטכניקה זו היא שבמקרים שלא ניתן לסדר מחדש את הפקודות "מתבזבזת" פקודה אחת (הפקודה הריקה) במקרה שלא מתבצעת קפיצה.
 
===== חלון אוגרים =====
שימוש באוסף פיזי גדול יותר של אוגרים, אשר רק חלק קטן מהם זמין בפועל. כאשר קוראים ל[[שגרה]], היא מקבלת לא רק זכרון מקומי על ה[[מחסנית (מבנה נתונים)|מחסנית]], אלא גם אוסף חדש של רגיסטרים. לכן היא יכולה להשתמש בהם ביעילות.
 
טכניקה זו היא בשימוש במספר קטן יחסית של מעבדים: [[SPARC]] וכן מעבדי [[i960]] של אינטל ו־[[AMD 29000]]. בדיעבד הסתבר שהיא בעייתית ב[[מערכת הפעלה]] הפועלת בשיטת [[ריבוי משימות]].
 
== המבשר ==
המחשב [[CDC 6600]]{{אנ|CDC 6600}}, הנחשב ל[[מחשב-על]] הראשון (תוכנן ב-[[1966]] על ידי [[סימור קריי]] בחברת [[CDC (חברה)|CDC]]), מימש את רוב אם לא כל עקרונות ה-RISC, וזאת כעשור לפני שעקרונות ה-RISC נוסחו ולפני שהמונח RISC הומצא. כיון שהיה זה מחשב על לא מיד הבינו מתכנני מחשבים אחרים שניתן ליישם עקרונות דומים גם עבור מעבדים קטנים ופשוטים יותר, והשפעתו של ה-6600 על תיכון מעבדים ומחשבים אחרים הייתה מוגבלת, אם כי ברור שהחוקרים שניסחו את עקרונות ה-RISC היו מודעים לעבודתו של קריי. בתעשיית המחשבים נוהגים להתלוצץ ולומר ש-RISC פירושו למעשה "'''R'''eally '''I'''nvented by '''S'''eymour '''C'''ray" (כלומר "בעצם הומצא על ידי סימור קריי").
 
== מעבדי RISC ==
אחד המעבדים הראשונים שמימש עקרונות רבים מתוך רשימת עקרונות ה-RISC הוא המחשב [[Nova]]{{אנ|Data General Nova}} של חברת [[Data General]], וזאת עוד לפני המאמרים והמחקרים, ולפני שהביטוי RISC הומצא. מעבדים נוספים מימשו חלק אך לא את כל העקרונות{{הערה|1=למשל המעבד [[מוטורולה 68000]] מימש [[צינור עיבוד נתונים]], ריבוי אוגרים ושימוש באוגרים בעלי תפקוד זהה}}, אולם רק אחרי שנוסחו העקרונות הופיעו מעבדים שמימשו את רובם או כולם. להלן רשימה חלקית של מעבדי RISC:
* IBM 801: מעבד שהורכב ממספר רכיבים, תיכון שאחר כך הוסב למעבד על שבב יחיד בשם ROMP שהניע מחשב אישי בשם IBM RT-PC
שורה 67:
* [[PA-RISC]] של חברת [[HP]]
 
== גישות מתחרות ==
{{להשלים|פסקה=כן}}
 
==== VLIW ====
'''VLIW''' {{כ}} (Very Long Instruction Word) היא גישה בתיכון מעבדים שמשתמשת במילת פקודה ארוכה מאד, כאשר כל פקודה (או לפחות רוב הפקודות) מבצעת מספר פעולות במקביל.
==== Writable Control Store ====
זו גישה במעבדים מבוססי [[מיקרוקוד]], המאפשרת לתוכנה לטעון חלק מהמיקרוקוד באופן דינמי.
 
== חסרונות ==
* בגלל אילוצי ה-RISC, ובייחוד העיקרון שכל הפקודות צריכות להיות באותו אורך, תכנית למעבד RISC תופסת יותר מקום בזיכרון המחשב (אחרי [[מהדר|הידור]] - אין הבדל באורך התכנית ב[[שפת תכנות|שפה עילית]], כמובן). תכנית מהודרת ל-RISC בדרך כלל שוקלת 30%-50% יותר מאותה התכנית מהודרת ל-CISC.
* מעבדי RISC נחשבים קשים יותר לתכנות ב[[שפת סף]], אם כי חסרון זה מקוזז בחלקו על ידי העובדה שתכונות אחרות של מעבדי RISC מאפשרות למהדרים ליצור קוד יעיל יותר, על ידי שימוש בטכניקות [[מיטוב אלגוריתמים|אופטימיזציה]] שונות, ובאופן זה מייתרים במידה רבה את הצורך לכתוב בשפת סף.
 
== קישורים חיצוניים ==
* הגדרות RISC ו- CISC {{כ}} [http://www.cpushack.com/CPU/cpuAppendA.html RISC and CISC definitions] באתר "CPUShack" {{אנגלית}}
 
== הערות שוליים ==
{{הערות שוליים|יישור=ימין}}
 
 
[[קטגוריה:חומרה]]