לדלג לתוכן

RISC

מתוך ויקיפדיה, האנציקלופדיה החופשית
דיאגרמה של מעבד RISC

RISC‏ (באנגלית:Reduced Instruction Set Computing‏; מילולית: מחשוב עםסט פקודותמצומצם) היא גישה בתיכוןמעבדים,שמתמקדת בסט הפקודות של המעבד, אך מדברת גם על מאפיינים נוספים של תכנון המעבד, בנוסף לסט הפקודות.

באמצעשנות השבעים של המאה ה־20,התנהלו מחקרים במעבדות המחקר שלIBM[1]ובמקומות אחרים במטרה למצוא דרכים לשיפור הביצועים שלמחשבים.במסגרת המחקרים בדקו החוקרים באיזו מידה פקודות ואופני מיעון ( "Addressing Modes" ) שונים נמצאים בשימוש בתוכניות מחשב.

המחקרים העלו שחלק מאופני המיעון והפקודות המסובכים ביותר, (אשר מימושם צרך חלק גדול יחסית מחומרתהמחשב), אינם נמצאים בשימוש כלל, או כמעט בכלל. בנוסף, התברר כי במקרים רבים, אופני המיעון והפקודות המסובכים ביותר וממומשים במיקרוקודיעילים פחות מקטעי קוד קצרים המבצעים אותן פעולות ומבוססים על פקודות פשוטות יותר. דוגמה בולטת לפקודה ממומשת במיקרוקוד שיעילותה פחותה מקוד שיוצר במהדרהיא הפקודהINDEXבמיני־מחשבVAXשל חברת דיגיטל (DEC).

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

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

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

כדי להבחין בין מעבדים המיישמים את עקרונות ה־RISC לאלו שאינם כאלו, נהוג לכנות את הקבוצה השנייהCISC‏( "Complex Instruction Set Computing", מילולית: מחשוב עם סט פקודות מורכב).

ההצלחות של עקרונות ה־RISC הביאו חוקרים שונים להציע גישות מתחרות כמו "VLIW",‏ "MISC" ‏, "OISC" ועוד.

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

עקרונות ה־RISC

[עריכת קוד מקור|עריכה]

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

עם זאת, זה אינו העיקרון היחיד. על סט העקרונות המדויק שנחשב ל־RISC אין הסכמה מלאה, ומעבדים מסוימים שמממשים את רוב העקרונות אך לא את כולם עדיין נחשבים מעבדי RISC.

העקרונות הם:

  • סט פקודות מצומצם[2]
  • כל הפקודות הן באורך זהה
  • לכל הפקודותמבנהזהה – מספרסיביותזהה ל־OPCODE,מספר זהה לפרמטר הראשון, השני, וכן הלאה
  • מספראוגריםגדול – לפחות 16, ובדרך כלל לא פחות מ־32
  • כל האוגרים זהים בתפקודם, כלומר כל פקודה יכולה להתבצע על כל אוגר (או אוגרים)[3][4]
  • כל הפקודות מתבצעות על אוגרים – הפעולות היחידות שמבוצעות על הזיכרוןהן קריאה וכתיבה
  • כל הפקודות מתבצעות תוך זמן זהה – בדרך כלל מחזור שעון יחיד[5]
  • שימוש אגרסיבי ומתוחכם בצינור עיבוד נתונים.כדי לסבר את האוזן אפשר לומר שבזמן שהמעבד מבצע פקודה אחת, הפקודה הבאה מנותחת כהכנה לביצוע, וזו שלאחריה נטענת מן הזיכרון, באופן שהמעבד מבצע בכל מחזור שעון עבודה על מספר פקודות
  • זיכרון מטמוןגדול ככל האפשר

מאפיינים נוספים הקשורים ל־RISC

[עריכת קוד מקור|עריכה]

מאפיינים אלו אינם קשורים בהכרח ל־RISC, אך הם מופיעים בהרבה מעבדים הנחשבים ל־RISC או רק במעבדי RISC.

חיזוי הסתעפות
[עריכת קוד מקור|עריכה]

אחת הפקודות שכל מעבד תומך בהן היא "קפיצה מותנית": פקודה זו בודקת תנאי מסוים (למשל אם התוכן של אוגר א' גדול מתוכנו של אוגר ב'), ואם התנאי מתקיים המעבד "קופץ", כלומר הפקודה הבאה שהמעבד מבצע אינה הפקודה שרשומה בזיכרון בכתובת הבאה, אלא פקודה שנמצאת בכתובת אחרת, שהיא אחד הפרמטרים של הקפיצה המותנית.

פקודה זו יוצרת "שבירה" בצינור עיבוד הנתונים (כי הכתובת הבאה לטעינה אינה ידועה עדיין) וכתוצאה מכך מפסידים זמן ביצוע. חיזוי הקפיצות היא טכניקה שמאפשרת למעבד "להציץ" קדימה בצינור עיבוד הנתונים ולזהות שאחת הפקודות הבאות היא קפיצה מותנית. בשלב זה המעבד עדיין לא יכול לבדוק את התנאי, אבל לפיהיוריסטיקהמסוימת המעבד מחליט האם סביר יותר שהקפיצה תתבצע או לא, ולפי החלטה זו עשוי לשנות את ההתנהגות – למשל הפקודה הבאה שמוזנת לצינור עיבוד הנתונים יכולה להיות מהכתובת החדשה. החלטה שגויה לא תגרום לטעות בהרצת התכנה, אלא לכל היותר פגיעה מסוימת בביצועים משום שאם המעבד לא מצליח לשמור את צינור עיבוד הנתונים מלא, משמעות הדבר היא שהוא "עובד על ריק" למשך מספר מחזורי שעון.

ביצוע פקודות שנמצאות אחרי פקודת קפיצה
[עריכת קוד מקור|עריכה]

טכניקה זו ( "branch delay" ), כמו קודמתה, מיועדת לצמצם את המחיר של קפיצות שנובע מהצורך להשליך את תוכן צינור עיבוד הנתונים בקפיצה. העיקרון עליו מבוססת הטכניקה הוא סידור מחדש של הפקודות על ידי המהדר, כך שהפקודה שקודמת לפקודת הקפיצה מועברת, אם הדבר אפשרי, אל אחרי פקודת הקפיצה. אם אי אפשר, הפקודה מיד אחרי פקודת הקפיצה נשארת ריקה (NOP). המעבד מבצע את הפקודה שאחרי הקפיצה המותנית בין אם הקפיצה התבצעה (כלומר התנאי התקיים) ובין אם לאו, ובאופן כזה מנוצל מחזור שעון שאחרת היה מבוזבז במקרה שהקפיצה מתבצעת. המחיר של שימוש בטכניקה זו היא שבמקרים שלא ניתן לסדר מחדש את הפקודות "מתבזבזת" פקודה אחת (הפקודה הריקה) במקרה שלא מתבצעת קפיצה. יש מעבדים בהם מבוצעות שתי הפקודות הבאות אחרי פקודת הקפיצה.

חלון אוגרים
[עריכת קוד מקור|עריכה]

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

טכניקה זו היא בשימוש במספר קטן יחסית של מעבדים:SPARCוכן מעבדיi960של אינטל ו־AMD 29000.בדיעבד הסתבר שהיא בעייתית במערכת הפעלההפועלת בשיטתריבוי משימות.

המחשבCDC 6600,שנחשב למחשב העלהראשון, תוכנן ב־1964 על ידיסימור קרייבחברתCDC,מימש את רוב אם לא כל עקרונות ה־RISC, וזאת כעשור לפני שעקרונות ה־RISC נוסחו ולפני שהמונח RISC הומצא. כיוון שהיה זה מחשב על לא מיד הבינו מתכנני מחשבים אחרים שניתן ליישם עקרונות דומים גם עבור מעבדים קטנים ופשוטים יותר, והשפעתו של ה־6600 על תיכון מעבדים ומחשבים אחרים הייתה מוגבלת, אם כי ברור שהחוקרים שניסחו את עקרונות ה־RISC היו מודעים לעבודתו של קריי. בתעשיית המחשבים נוהגים להתלוצץ ולומר ש־RISC פירושו למעשה "ReallyInvented bySeymourCray "(כלומר" בעצם הומצא על ידי סימור קריי ").

אחד המעבדים הראשונים שמימש עקרונות רבים מתוך רשימת עקרונות ה־RISC הוא המחשבNova(אנ')של חברתData General,וזאת עוד לפני המאמרים והמחקרים, ולפני שהביטוי RISC הומצא. מעבדים נוספים מימשו חלק אך לא את כל העקרונות[6],אולם רק אחרי שנוסחו העקרונות הופיעו מעבדים שמימשו את רובם או כולם. להלן רשימה חלקית של מעבדי RISC:

גישות מתחרות

[עריכת קוד מקור|עריכה]

VLIW‏ (Very Long Instruction Word) היא גישה בתכנון מעבדים שמשתמשת במילת פקודה ארוכה מאוד, כאשר כל פקודה (או לפחות רוב הפקודות) מבצעת מספר פעולות במקביל. ארכיטקטורה זו חושפת ב־ISA את יחידות הביצוע במעבד, כך שבכל פקודה, מקודדים את הפעולה עבור כל אחת מיחידות הביצוע.

Writable Control Store

[עריכת קוד מקור|עריכה]

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

  • בגלל אילוצי ה־RISC, ובייחוד העיקרון שכל הפקודות צריכות להיות באותו אורך, תוכנית למעבד RISC תופסת יותר מקום בזיכרון המחשב (אחריהידור– אין הבדל באורך התוכנית בשפה עילית). תוכנית מהודרת ל־RISC בדרך כלל שוקלת 30%-50% יותר מאותה התוכנית מהודרת ל־CISC.
  • מעבדי RISC נחשבים קשים יותר לתכנות בשפת סף,אם כי חיסרון זה מקוזז בחלקו על ידי העובדה שתכונות אחרות של מעבדי RISC מאפשרות למהדרים ליצור קוד יעיל יותר, על ידי שימוש בטכניקותאופטימיזציהשונות, ובאופן זה מייתרים במידה רבה את הצורך לכתוב בשפת סף.

קישורים חיצוניים

[עריכת קוד מקור|עריכה]
ויקישיתוףמדיה וקבצים בנושאRISCבוויקישיתוף

הערות שוליים

[עריכת קוד מקור|עריכה]
  1. ^חלק ממחקרים אלו בוצעו על ידי ג'והן קוֹקי(אנ')
  2. ^כאמור, "מצומצם" אין משמעו בהכרח קטן, אלא כזה שמכיל רק פקודות שהוכח שהמהדרים אכן משתמשים בהן במידה המצדיקה את הכללתן
  3. ^מעבדי CISC ידועים בכך שפקודות מסוימות חייבות להתבצע על אוגרים מסוימים. ברבים מהם אין אפילו שני אוגרים הזהים בתפקודם בדיוק
  4. ^זה כמעט מדויק: בהרבה מעבדי RISC, אחד האוגרים הוא "אוגר מדומה" – בדרך כלל R0. ערכו של אוגר זה הוא תמיד 0, ואי אפשר לכתוב אליו. בעזרת שימוש באוגר הזה, אפשר לוותר על מספר פקודות, למשל אין צורך בפקודה "אפס אוגר X", ובמקומה משתמשים בפקודה הסטנדרטית "העתק אוגר לאוגר" עם אוגר האפס כמקור.
  5. ^כמעט בכל מעבד RISC יש מספר קטן של פקודות שלא מקיימות עיקרון זה. ניסוח מדויק יותר של מימוש העיקרון בפועל הוא "כמעטכל הפקודות מתבצעות תוך זמן זהה "
  6. ^למשל המעבדמוטורולה 68000מימשצינור עיבוד נתונים,ריבוי אוגרים ושימוש באוגרים בעלי תפקוד זהה