קצב העבודה של מחשב תלוי במהירות העיבוד, מהירות הגישה לזיכרון ומהירות העברת המידע בין הזיכרון למעבד. ככול שהמעבדים נעשים מהירים יותר, וכך גם אחסון המידע בזיכרון ושליפתו משם, העברת המידע בין הזיכרון למעבד נהיית צוואר בקבוק המגביל את מהירות המחשב. באילו דרכים אפשר לשחרר את הפקק?
המחשבים שבהם אנו משתמשים כיום בנויים על פי קונספט שהציע המתמטיקאי ג'ון פון נוימן [1] עוד בשנות הארבעים של המאה הקודמת. העיקרון הוא פשוט: המחשב מורכב משתי יחידות מרכזיות, המעבד והזיכרון, ואלה מקושרות ביניהן. יחידת העיבוד המרכזית (CPU - Central Processing Unit) היא האחראית על ביצוע חישובים במהירות וביעילות, והמידע שעליו יש לבצע את החישובים שמור ביחידה נפרדת, הזיכרון (Memory). לפי ארכיטקטורת פון נוימן [2, 3], יחידת הזיכרון ויחידת העיבוד מחוברות ביניהן במספר חוטים (BUS), שדרכם עובר מידע: המעבד שולח לזיכרון בקשת קריאה – ציון הכתובות בזיכרון שמהן יש לקרוא נתונים; הזיכרון מעביר את המידע למעבד; המעבד מבצע את החישובים הנדרשים; ולבסוף שולח המעבד לזיכרון בקשת כתיבה המכילה את המידע החדש שהתקבל מן החישובים.
עם ההתפתחות הטכנולוגית, הן של המעבד והן של הזיכרון, קצב העבודה של שתי היחידות עלה במידה משמעותית. כיום צוואר הבקבוק אשר מונע עלייה לקצבי עבודה גבוהים עוד יותר אינו מעבד וגם לא הזיכרון, אלא קווי המתכת המחברים ביניהם.
חשבו על האנלוגיה הבאה: עובדים בחברה מסוימת יוצאים לעבודתם רק כאשר קוראים להם. עם הקריאה יוצאת מונית ממקום העבודה (המעבד), אוספת את העובד מביתו (הזיכרון) וחוזרת למקום העבודה (המידע מהזיכרון מגיע למעבד). החברה מחזיקה רק מונית אחת (המייצגת את יכולת ההעברה של ה-BUS שלנו). בעבר, כאשר עובד מסוים נקרא לעבודה, המונית הייתה נוסעת ממקום העבודה לביתו של העובד במשך שעה, אוספת את העובד, ובמשך שעה נוספת מסיעה אותו אל העבודה. כאשר הגיע לעבודה, שעתיים לאחר הרגע שקראו לו, היה העובד מתחיל לעבוד, ולאחר שמונה שעות היה מסיים את העבודה ועולה על המונית שתחזיר אותו לביתו. מכך יוצא כי מתוך עשר השעות שבין הקריאה לעובד לבין סיום העבודה שמונה הושקעו בעבודה עצמה, ושעתיים הוקדשו לנסיעה אל מקום העבודה, כלומר 80% מן הזמן נוצל לעבודה. עם השנים נהיה העובד למומחה, וזמן העבודה שלו התקצר: כעת הוא מסיים את עבודתו בתוך חצי שעה בלבד. עתה הזמן בין הקריאה לבין סיום העבודה הוא שעתיים וחצי, ומתוכן רק חצי שעה מושקעת בעבודה – 20% בלבד! ואם העובד ידע לסיים את העבודה בתוך דקה אחת, יהיה המצב חמור עוד יותר: רק 0.8% מהזמן יושקע בעבודה, והשאר יתבזבז בנסיעה אל העבודה.
בארכיטקטורות מחשבים מוכרת בעיה זאת בשם "צוואר בקבוק פון-נוימן" (Von Neumann Bottleneck): הזמן שדרוש כדי להעביר את המידע בין הזיכרון למעבד נעשה ארוך יותר מהזמן הדרוש לחישוב עצמו, כך שהוא זה שמגביל את קצב העבודה ואת ביצועי המחשב. (שימו לב שלא התייחסנו כלל לזמן שלוקח להחזיר את העובד לביתו, כלומר להחזיר את המידע ולכתוב אותו בזיכרון, מכיוון ששלב זה יכול להתבצע במקביל ליציאה של בקשת הקריאה החדשה.)
אילו הייתם בעלי החברה, אילו פתרונות הייתם מציעים כדי להגדיל את חלק הזמן שבו מתבצעת עבודה? אחד הפתרונות הראשונים שעולים על הדעת הוא הגדלת צי המוניות של החברה, כך שאפשר יהיה לקרוא לכמה עובדים בעת ובעונה אחת. זוהי האנלוגיה למה שקרוי בארכיטקטורת מחשבים רוחב הפס (Bandwidth) של ה-BUS. בפתרון זה יש כמה בעיות: ראשית, מערכת הכבישים במדינה מוגבלת ואינה מתרחבת בקצב מהיר מספיק כדי שתוכל להכיל את כל המוניות שיתווספו (הגדלת רוחב הפס איטית ומוגבלת). בנוסף, כל עוד לא הסתיימה פעולת החישוב שאנו מבצעים, איננו יודעים כלל לאילו תאי זיכרון נרצה לגשת בחישוב הבא, ולכן פס רחב יותר לא בהכרח יועיל.
אפשר להתגבר על כך באמצעות מערכת שתחזה מיהו העובד הבא שיידרש (Prediction), כך שנוכל להביא בעוד מועד עובד אחד או יותר, בתקווה שאכן אותם נצטרך. לשם כך נזדקק כמובן לעובדים נוספים שיעסקו רק בחיזוי, וכרוכה בכך השקעה של משאבים.
עוד פתרון אפשרי הוא ריכוז העובדים בכמה מוקדים בין בתיהם לבין מקום העבודה. כך הם יהיו קרובים יותר למקום העבודה, וזמן הנסיעה שלהם יתקצר. פתרון זה דורש הפעלה של מערכת מוניות שתעביר עובדים בין המוקדים השונים. זהו אחד הפתרונות שבהם משתמשים כיום, והוא נקרא "היררכיית זיכרון" (Memory Hierarchy) [4]. גישה נוספת שמיושמת בשנים האחרונות היא העברת חלק ממקום העבודה או כולו אל מרכזי המגורים של העובדים. גישה זו (In/Near Memory Computing [5]) מזכירה במידה רבה את פעולת המוח, שבו החישוב ואחסון הזיכרון נעשים באותו מקום, ללא הפרדה פיזית בין הרכיבים שמבצעים את הפעולות השונות.
כיום נדרשים המחשבים שלנו להתמודד עם כמויות מידע גדולות מאוד [6], המצריכות גישות רבות לזיכרון, ובעיית צוואר הבקבוק מגבילה את ביצועיהם במידה משמעותית. בפוסט זה הזכרנו כמה מן הגישות לפתרון הבעיה, ובעתיד נרחיב על גישות אלה ונציג פתרונות אפשריים נוספים.
עריכה: סמדר רבן
לקריאה נוספת:
[3] על ארכיטקטורת פון נוימן (באנגלית)