איטניום – הבדלי גרסאות

תוכן שנמחק תוכן שנוסף
שורה 15:
במקרים כאלה, התוכנית שמובנת במעבד בדרך כלל "מנחשת" איזה מצב יתרחש. ברוב המקרים, פקודת התנאי IF תתבצע, בהנחה שהדוגמה שלנו תבצע ב90 אחוז מהמקרים את החלק השני שלה, ולכן אפשר בבטחה להזינה לליבה אחרת. אולם, ניחוש מוטעה יכול להביא לירידה ניכרת בביצועים, כיוון שתוצאת החישוב נזרקת והמעבד ממתין לתוצאה הנכונה של החישוב להגיע. חלק גדול משיפור הביצועים במעבדים מודרניים נובע משיפור בלוגיקת החיזוי, אולם בתקופה האחרונה מגמת השיפורים החלה להאיט.
 
במקום זאת, האיטניום מסתמך על ה[[מהדר]] שיבצע משימה זו. עוד לפני שהתוכנית מוזנת למעבד, המהדר מנתח את הקוד ומבצע את אותם סוגים של החלטות אשר היו מתבצעות ב[[זמן ריצה (תוכנה)|זמן ריצה]] על השבב עצמו. ברגע שהוא החליט איזה נתיבים לבחור, הוא אוסף את כל הפקודות שהוא יודע שניתן להריץ במקביל, אוגד אותם להוראה גדולה יותר בצורה כזו בתוכנית תחת ההגדרה VLIW (מאנגלית: מילת הוראה ארוכה מאוד - Very Long Instruction Word).
 
העברת משימה זו מהמעבד למהדר היא בעלת מספר יתרונות. ראשית, המהדר יכול להשקיע יותר זמן בניתוח הקוד, יתרון שלמעבד אין כיוון שהוא חייב לסיים את המשימה כמה שיותר מהר. לכן גרסת המהדר יכולה להיות מדויקת באופן מהותי יותר מאשר אותו קוד אשר רץ דרך האלגוריתמים של המעבד. שנית, הניבוי של תוכנית המעגל החשמלי של המעבד היא מסובכת למדי, והעברת הניבוי למהדר מורידה את הסיבוכיות מהמעבד בצורה רבה. המעבד לא צריך יותר לנתח שום דבר; הוא פשוט מפרק את ההוראה לחלקים ומזין את חלקיה לליבות השונות. שלישית, ביצוע הניבוי על ידי המהדר היא "הוצאה" חד פעמים, לעומת הניבוי במעבד שמתרחש כל פעם שהתוכנית רצה.