כיום, הזיכרון במחשב מורכב מזיכרונות בעלי מגוון תכונות במבנה היררכי – החל מהזיכרון במעבד עצמו ועד לזיכרון הגלובלי. קרוב למעבד אנו משתמשים בזיכרונות שעלות הייצור שלהם גבוהה והם מכילים מעט מידע, אך הם מהירים כדי שהמעבד יוכל לעבוד בקצב גבוה. ככל שאנחנו מתרחקים מהמעבד הזיכרונות נהיים זולים יותר, ויכולת אחסון המידע שלהם גדולה יותר, אך במחיר פגיעה במהירות הזיכרון. בפוסט זה נסביר כיצד עובד מפרט הזיכרונות במחשב.
מחשבים כיום בנויים על פי ארכיטקטורת פון-נוימן [1] ובה המחשב בנוי משתי יחידות מרכזיות: המעבד והזיכרון. ככלל פעולת מחשב מורכבת משלושה חלקים: הבאת מידע מהזיכרון למעבד, עיבוד של המידע ולבסוף כתיבה של המידע החדש והחזרתו מהמעבד לזיכרון. בפוסט קודם [2] סיפרנו על בעיית צוואר הבקבוק הנובעת ממגבלת המהירות שבה ניתן להעביר מידע בין הזיכרון והמעבד, וכך היא מגבילה את ביצועי המחשב. כעת נציג את אחד הפתרונות הנפוצים בארכיטקטורות מחשבים שנקרא "היררכיית זיכרון" [3].
מטרתה של "היררכיית הזיכרון" היא "לקרב" את הזיכרון למעבד, על ידי שימוש במספר סוגי זיכרון בעלי תכונות שונות, וכך לקצר את זמן הגישה הממוצע של המעבד לזיכרון, ומכאן - להגדיל את ביצועי המחשב. זיכרונות אלו מחוברים ביניהם בצורה היררכית, ממש כמו תחנות רכבת הנמצאות על אותו קו רכבת: כדי להגיע מזיכרון אחד אל אחר ייתכן שהמידע יעבור בזיכרונות ("תחנות") נוספים בדרך.
באופן כללי זיכרונות בנויים מרצפים של ביטים (bits) המייצגים '0' או '1', ולכל רצף כזה יש כתובת בזיכרון. כדי להבין את השיקולים העומדים בבסיס הבחירה בסוג זיכרון אחד על פני אחר וכדי להבין את המבנה ההיררכי, נציג ארבעה פרמטרים המשמשים להשוואה בין סוגי זיכרונות - קיבולת, זמן גישה, מחיר ונדיפות:
- קיבולת (capacity) – כמות הזיכרון שניתן לממש. הקיבולת נמדדת בכמות הביטים שניתן לאחסן בזיכרון (וליתר דיוק היא נמדדת ב"בתים" (Bytes) - כל בית הוא מקבץ של 8 ביטים).
- זמן גישה – הזמן הממוצע שלוקח לזיכרון לבצע פעולת קריאה או כתיבה, החל מהרגע שבו הבקשה לפעולה מגיעה לזיכרון ועד שהפעולה מסתיימת (המידע נקרא מהזיכרון או נכתב לזיכרון). משך זמן קצר משמעותו זיכרון מהיר יותר.
- מחיר – המחיר של ביט זיכרון בודד. המחיר נקבע על ידי פרמטרים רבים, למשל הטכנולוגיה והחומרים שמשתמשים בהם לייצור הביט. עם זאת הפרמטר העיקרי הקובע את המחיר הוא השטח הדרוש למימוש ביט. השטח נקבע בעיקר על פי כמות הרכיבים הדרושים לביט בודד: יותר רכיבים - יותר יקר.
- נדיפות – היכולת של הזיכרון לשמור מידע גם ללא חיבור למקור חשמל קבוע. התוכן של זיכרונות נדיפים נמחק ברגע שמנתקים אותם ממקור חשמל, ואילו התוכן של זיכרונות בלתי נדיפים נשמר (כן, גם בכיס שלכם על גבי ה-Disk-On-Key).
כעת, נדמיין שאנו מתכווצים לגודל של טרנזיסטור [4], כלומר גודל של כמה עשרות אטומים בלבד, ובואו נטייל בין התחנות שעובר המידע מהמעבד דרך היררכיית הזיכרון. כאשר המעבד רוצה לקרוא מידע מהזיכרון הוא שולח בקשה ובה כתובת הזיכרון שהוא רוצה לקרוא. הבקשה הזאת מתחילה לטפס בהיררכיית הזיכרון בחיפוש אחר התא המבוקש:
תחנה ראשונה – רגיסטרים [5] (register): יחידות זיכרון היושבות בתוך המעבד עצמו. מדובר בזיכרון נדיף בעלות גבוהה (כי צריך רכיבים אלקטרוניים רבים לבניית כל תא זיכרון) ולכן המעבד מכיל רק מספר קטן מאוד שלהם (אלפי בתים). עם זאת מדובר בזיכרון מהיר מאוד (מאות פיקו-שניות) בעל זמן גישה קצר.
תחנה שנייה – זיכרון המטמון (cache) [6]: גם זיכרון זה נדיף, והוא נמצא באותו השבב של המעבד, אך בצמוד אליו. המחיר של ביט זיכרון כזה גם הוא גבוה מפני שכל תא מכיל כעשרה רכיבים. זיכרון זה בעל קיבולת נמוכה (מליוני בתים - מעט יותר מהרגיסטרים) ומהירות גישה גבוהה (מיליארדית שנייה - מעט איטי יותר מהרגיסטרים). גם זיכרון המטמון עצמו ממומש בצורה היררכית: זיכרון המטמון הקרוב ביותר למעבד נקרא L1 (Level1) והוא הקטן והמהיר ביותר, ובהמשך נמצאים L2, L3 וכו' שהם מעט יותר גדולים ואיטיים. כאשר אתם קונים מחשב – חפשו את גודל קיבולת זיכרון המטמון בתיאור המעבד.
תחנה שלישית – זיכרון ראשי [7]: זיכרון RAM (Random-Access Memory). זיכרון זה כבר נמצא בשבב נפרד מהמעבד ולכן זמן הגישה אליו ארוך יחסית לזיכרונות הקודמים בהיררכיה, אך הוא עדיין נחשב מהיר (עשרות מיליארדיות השנייה). הזיכרון נדיף, ומחיר תא זיכרון נמוך יותר מקודמיו מפני שכל תא מורכב משני רכיבים בלבד והוא יכול לממש זיכרונות גדולים יותר (מיליארדי בתים). בכל הזיכרונות עד כה מאוחסן המידע שבו אנו משתמשים באופן התדיר ביותר ורוצים גישה מהירה אליו. בקניית מחשב – חפשו את גודל "זיכרון RAM".
תחנה רביעית – זיכרון גלובלי: זהו הזיכרון הלא נדיף במחשב, ובו מאוחסנים רוב הקבצים שאנו רוצים לשמור לטווח ארוך. מדובר בזיכרון המסוגל להכיל הרבה מידע (טרה-בתים) ובמחיר נמוך, מפני שכל תא מורכב מרכיב אחד בלבד. בעבר השתמשו בעיקר בדיסק קשיח [8] שהיה מבוסס על דיסקי מתכת (קשיחים) מסתובבים, וזמן הגישה היה מוגבל מכנית למילי-שניות. כיום נפוצה טכנולוגיית ה-SSD (Solid-State Drive) המאפשרת מהירות גישה משופרת וקיבולת מוגדלת מכיוון שניתן לייצר רכיבי זיכרון אלו אחד על גבי השני [9]. חפשו במחשב שלכם את גודל הדיסק הקשיח או זיכרון ה-SSD שלכם.
אם כן, כפי שראינו בקשת הקריאה של המעבד עולה בהיררכיית הזיכרון עם הכתובת הרצויה עד למציאת התא המבוקש, לכן למשל מידע שניגשים אליו בתדירות גבוהה מאוחסן קרוב יותר למעבד כדי לאפשר זמן גישה קצר. בעת כיבוי המחשב כל המידע הקיים בזיכרונות הנדיפים (תחנות ראשונה, שנייה ושלישית) מועבר אל הזיכרון הגלובלי (תחנה רביעית), ובהדלקת המחשב הזיכרון נטען בחזרה, ולכן לוקח למחשב זמן להיכבות ולהידלק. כמו כן זאת הסיבה לכך שכיבוי פתאומי של המחשב עלול לגרום לאיבוד מידע, ודווקא המידע האחרון שהשתמשתם בו. לא מעט אנשים איבדו מידע של מסמך תוך כדי הכתיבה שלו בעקבות כיבוי פתאומי - אז היכן לדעתכם הוא היה שמור? מדוע דווקא שם? ומה לדעתכם עושה הפעולה Ctrl+S?
עריכה: רעות קמחי-גבריאלי
למקורות ולקריאה נוספת:
[2] פוסט על בעיית צוואר בקבוק פון-נוימן