העתיד: מחשב-על על השולחן שלנו
המעבדים מרובי הליבות (Multi-core) של אינטל ו-AMD, ישפיעו על המחשוב האישי לא רק בדרך של הוספת מכפיל חדש למשוואת הביצועים. הם עתידים לשנות את האופן שבו המפתחים, המשתמשים והיישומים יחשבו על המחשב וינצלו את יכולותיו. בתור התחלה, נקבל את מה שמערכות ההפעלה מבטיחות לנו כבר שנים: ביצוע מקבילי
רוב המעבדים במחשבים האישיים שיימכרו בשנה הבאה יהיו מרובי ליבות. טכנית, זו הדרך המעשית ביותר להמשיך להאיץ אותם ולהכפיל את מספר הטרנזיסטורים שהם מכילים, בהתאם לחוק מור הידוע. אבל ההשלכות של השינוי הארכיטקטוני הזה יהיו דומות יותר להופעת ריבוי המשימות בחיינו.
תור הזהב של ריבוי המשימות (Multi Tasking) החל בחצי הראשון של שנות ה-90', במסגרת מאמצי השיווק הנמרצים של מיקרוסופט. באותם ימים, היא מכרה לנו את גירסאות 3.x של Windows, סביבת ה-GUI הראשונה שלה שרצה בצורה נסבלת.
המסר העיקרי של המשווקים, היה שהשימוש בממשק הגרפי ובעכבר הוא נוח, מהנה, ותורם לפרודוקטיביות. לא תמיד זה הספיק כדי לשכנע אנשים להשקיע במחשב יקר יותר, או כדי לספוג את ירידת הביצועים כתוצאה מהמעבר למערכת ההפעלה החדשה. לכן, נאלצה מיקרוסופט להדריך את המשווקים להדגיש תכונה נוספת של Windows: ריבוי המשימות.
מה זה ריבוי משימות?
"ריבוי משימות" להזכיר, איננו זהה לעיבוד מקבילי. היישומים שהמחשב מריץ לכאורה בו-זמנית, בעצם מתחלקים ביניהם בזיכרון ובזמן המעבד, וכך נחסך הצורך להמתין לסיום הריצה של כל אחד מהם כדי להריץ את היישום הבא.
את ריבוי המשימות המציאו במחשבי המיינפריים, כדי שמשתמשים שונים יוכלו להתחבר לאותו מחשב ממסופים נפרדים, ולקבל תחשה כאילו המחשב עומד לרשותם. ריבוי המשימות במחשוב האישי נועד להעניק למשתמש תחושה כאילו הוא מריץ יישומים רבים במקביל, אבל זה מעולם לא קרה. עד למעבדים כפולי הליבה.
המכניזם שיושם בגירסאות הראשונות של Windows כדי לאפשר ריבוי משימות, כונה Cooperative Multitasking. הוא איפשר להריץ מספר יישומים בזה אחר זה בשיטת ה"Time Slot". כל אחד מהיישומים קיבל בתורו את תשומת הלב המלאה של המעבד, וכשסיים להשתמש בשירותיו "שיחרר" אותו כדי שיוכל להמשיך ליישום הבא.
הבעיה עם השיטה הזו הייתה שגם אנחנו וגם מיקרוסופט, היינו תלויים לגמרי בכישוריו ובגחמותיו של כל מפתח יישום באשר הוא. כאשר אפליקציה מסויימת לא שיחררה את המעבד בזמן, נאלצו היישומים האחרים לחכות, ולעיתים נראה כאילו המחשב נתקע. בגירסאות הראשונות של Mac OS, אגב, נעשה שימוש בשיטה דומה, אבל היישומים עמדו בסטנדרטים גבוהים יותר ולא עוררו את הסוג הזה של הבעיות.
את ריבוי המשימות ה"אמיתי" (Preemptive Multitasking), הביאו איתן מערכות ההפעלה הבאות: Windows NT, Windows 95 ו-Mac OS X. בשיטה הזו, מערכת ההפעלה ולא היישום, מחליטים מתי המעבד ממשיך הלאה. זה מאפשר למערכת להיות יציבה יותר ומשפר את הביצועים, אבל ריבוי המשימות נותר מורכב, איטי למדי ולא יעיל.
ב-10 השנים האחרונות הטכנולוגיה הבסיסית של ריבוי המשימות לא השתנתה הרבה. מרגע שריבוי המשימות החל לעבוד כמו שצריך, נותר האתגר הגדול: למצוא לו שימוש.
מה שברור הוא שתכונת ריבוי המשימות לא נוצרה רק בשביל שנוכל לפתוח מעבד תמלילים בלי לסגור קודם את הדפדפן. ברור שזה נוח יותר כשאפשר לפתוח עוד ועוד יישומים, אבל רוב השימוש שלנו במחשב הוא ממילא בעל אופי "התערבותי", אינטראקטיבי (Interactive) ולא מקבצי (Batched).
כלומר, רוב הריצה של היישומים בהם אנחנו משתמשים מתבצעת בתגובה לפעולות שאנחנו עושים. זה בניגוד למערכות מחשב ארגוניות גדולות, שלעיתים מקבלות משימות מורכבות שמעסיקות אותן במשך שעות וימים ברציפות.
כאשר מחשב נדרש לבצע משימות רבות, חלקן קצרות וחלקן ממושכות, אפשרות העיבוד מקבילי נעשית קריטית יותר. כאשר רוצים שניתן יהיה להריץ עליו מקבצי תהליכים וגם להעמיד אותו לשימוש אינטראקטיבי, ריבוי המשימות הוא קריטי. אבל במחשוב האישי, רוב השימוש במשך רוב השנים היה בעל אופי אינטראקטיבי בלבד. האפשרות לעיבוד מקבילי ממילא לא הייתה קיימת.
הכל תלוי במפתחים
לכן, המעבדים מרובי הליבה יעניקו אופקים חדשים למחשב האישי: העיבוד יהיה מקבילי באמת. מלבד הביצועים הגבוהים יותר בהרצה של יישומים תובעניים (בתנאי שהם יודעים לפצל את העבודה לנימים, threads, שירוצו על ליבות שונות), יוכלו יישומים נפרדים לרוץ על ליבות שונות.
למשל, יישומי האבטחה, שירוצו ברקע על ליבה שונה מזו עליה ירוצו היישומים בהם נשתמש. או קידוד וידאו/אודיו שיתנהל במקביל להרצה של משחק, בלי להפריע לו. מחשב אחד יוכל לשרת שני משתמשים או יותר, או לשרת בשני שימושים ויותר (מרכז מדיה ביתי, תחנת עבודה, שרת) בלי ששימוש אחד יפריע לאחר. המחשבים של השנים הבאות גם ישתמשו בטכנולוגיות וירטואליזציה כדי להריץ במקביל מערכות הפעלה שונות, בהתאם לשימושים הרצויים.
בשימושים האלה ואחרים המחשב האישי יהיה לא רק יותר מהיר, אלא יוכל גם להיות שונה. הכל תלוי במפתחי התוכנה - האם הם ישכילו להבין שמה שיש להם הוא הרבה יותר מסתם אפשרות לפתח תוכנות כבדות ומעיקות יותר.