זיכרון גישה אקראית

זיכרון גישה אקראית (RAM, ראשי תיבות של Random Access Memory) הוא שם כללי למספר רב של סוגי זיכרון מחשב, המתאפיינים כולם ביכולת המעבד לגשת ישירות לכל תא בזיכרון לפי כתובתו, לכתוב בו ולקרוא ממנו. ההתייחסות הנפוצה לזיכרון מחשב היא למעשה התייחסות לזיכרון הגישה האקראית הראשי שלו.

סוג הזיכרון הנמצא בשימוש נפוץ ביותר בימינו הוא DRAM. זיכרון מסוג זה הוא זיכרון נדיף (volatile), שדורש רענון (refresh) מספר פעמים בשנייה כדי לשמור את תוכנו. מסיבה זו, זיכרון DRAM מאבד את תוכנו עם ניתוק הזיכרון ממקור האנרגיה שלו.

==היסטוריה==
זיכרון קו משהה כספיתי של ה־[[ENIAC]]
[[זיכרון ליבה מגנטית של מחשב CDC 6600, 64x64 סיביות (512 בייטים). ממדי הרכיב הם 10.8 x 10.8 ס"מ. זיכרון מסוג זה הוא ה־RAM הראשון שזכה לתפוצה נרחבת]]

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

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

סוג נוסף נקרא "שפופרת ויליאמס" . זיכרון זה בנוי משפופרת קרן קתודית, ומבוסס על ה"זיכרון" של חומרים פוספורסצנטיים, שמאירים כאשר פוגעת בהם קרן האלקטרונים. שפופרת אופיינית זוכרת 1,024 או 2,560 סיביות. הזיכרון מהיר יותר מזיכרונות המבוססים על קווים משהים, אך סובל מבעיות אמינות, ותפוצתו הייתה מצומצמת.

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

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

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

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

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

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

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

לאחר המצאת הטרנזיסטור ב־1948, ובייחוד עם התפשטות השימוש במעגלים משולבים, התקני זיכרון הבנויים על מוליכים למחצה דחקו את רגלי כל התקני הזיכרון האחרים, ולמעשה החל מאמצע שנות ה-70 של המאה ה-20 כל התקני הזיכרון המיוצרים מבוססים על טכנולוגיה זו, כאשר רובם ככולם נחשבים ל"זיכרון גישה אקראית".

==זיכרון קריאה בלבד – ROM==

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

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

==מהירות הזיכרון==
בנוסף לפרמטר של נפח הזיכרון שנמדד בבתים, ביחידות שגדלו במשך השנים, מקילובייט למגהבייט ועד לגיגהבייט בתחילת המאה ה־21, ישנו פרמטר של מהירות הזיכרון שנמדד במספר פעולות בשנייה (הרץ). ככל שפיתוח הזיכרונות התקדם כך הואצה מהירותם. רכיב זיכרון מסוג DDR (בשנת 2006), למשל, פעל לרוב במהירות של 400MHz, ואילו רכיב DDR3 הואץ ב־2011 עד 2,000 MHz. רכיבי DDR4 הואצו למהירות של יותר מ-5,600MHz בשנת 2019.<ref>https://betanews.com/2019/01/22/hyperx-ddr4-5608mhz-ram/</ref>

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

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

== מבנה הנתונים בזיכרון ==

יחידת הנתונים הקטנה ביותר של הזיכרון היא סיבית (ביט), שלה שני ערכים בלבד: 0 או 1. ההבחנה בין שני ערכים אלה מיושמת בשני סוגים של מתח חשמלי, כשאחד מייצג את ה־0 והשני את ה־1. גישת המעבד לזיכרון נעשית ביחידה גדולה יותר – בייט (Byte), המורכבת, במחשבים מודרניים, מ־8 סיביות. לכל בית יש כתובת, המשקפת את מספרו הסידורי מתחילת הזיכרון. הנתונים נשמרים בזיכרון המחשב בשיטת סדר בתים.

שתי יחידות נתונים אלה מתקיימות גם בנתונים המאוחסנים באמצעי לאחסון נתונים.

יחידת נתונים נוספת, המאפיינת רק את הזיכרון והמעבד, היא המילה. במחשבי סדרת IBM System/360, שיצאה לעולם בשנת 1964, נקבע גודל מילה של 32 סיביות (ארבעה בתים). גודל זה של מילה הפך מאז למקובל ביותר, וגם במחשבים אחרים מקובל גודל מילה השווה לגודל זה, למחציתו או לכפליים ממנו. במעבד אינטל 8086, למשל, גודל מילה הוא 16 סיביות. לגודל המילה יש השפעה גם על גודל הזיכרון המרבי במחשב, משום שמילה (או חלק ממנה) משמשים לרישום הכתובת. לדוגמה, מעבד עם מילה בגודל 32 סיביות מאפשר שימוש בזיכרון שגודלו עד 4GB (4,294,967,296 בתים) משום שבעזרת 32 סיביות ניתן לייצג <math>\ 4,294,967,296=2^{32}</math> ערכים שונים. בשנותיה הראשונות של מערכת 360 שימשו רק 24 סיביות מתוך המילה לרישום כתובת, ולאחר מכן נוצלו למטרה זו 31 סיביות, כדי לאפשר זיכרון מרבי גדול יותר.

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

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

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

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

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

== זיכרון וירטואלי ==

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

הגישה לזיכרון הווירטואלי נעשית בשיטת דפדוף. כל כתובת זיכרון שאליה ניגש המעבד היא כתובת וירטואלית המורכבת ממקטע (segment) והֵסֶט (offset). תפקיד היחידה לניהול זיכרון, רכיב חומרה הקיים בדרך כלל במעבד, להפוך את הכתובת הווירטואלית המתבקשת לכתובת פיזית בעת הפנייה לזיכרון.

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

== הצגת תוכן הזיכרון ==
תוכנו של הזיכרון ברגע נתון מעניין לעיתים את המתכנת, בעת שהוא עוסק בניפוי שגיאות. למטרה זו באפשרותו לקבל תדפיס זיכרון (core dump), המציג לו את מלוא תוכנו של הזיכרון ששימש את התוכנית הנבדקת ברגע שבו נפסקה פעולתה. כיוון שגודל בית בזיכרון הוא 8 ביטים, מוצג הזיכרון בבסיס הקסדצימלי, שבו שתי ספרות מייצגות בית אחד. בתדפיס זה התוכנה מוצגת בשפת מכונה, המובנת רק למתכנתי שפת סף.

== מימוש פיזי של זיכרון גישה אקראית ==

===זיכרון ליבה מגנטית===
זיכרון ליבה מגנטית (Magnetic-core memory) היה הדרך הנפוצה למימוש זיכרון גישה אקראית בשנים 1955–1975. יחידת הזיכרון הבסיסית, ביט, מומשה על ידי טבעת ניתנת למגנוט בשתי דרכים, שדרכה עברו שני חוטים, בצורת שתי וערב. גישה לטבעת מסוימת, לקריאה ולכתיבה, נעשתה באמצעות העברת זרם חשמלי בשני החוטים העוברים דרכה.

בסוף שנות ה־70 הוחלף זיכרון זה בזיכרון עשוי מוליכים למחצה.

===סוגי זיכרון מבוססי מוליכים למחצה===
קיימים סוגים רבים של זיכרון מבוסס מוליכים למחצה. שני הנפוצים בהם מוכרים בדרך כלל כ־SRAM ו־DRAM

====זיכרון סטטי – SRAM====

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

====זיכרון דינמי – DRAM====

כרטיסי DDR בנפח 512 מגהבייט ובתדר 400 מגהרץ
DRAM או Dynamic RAM הוא התקן זיכרון בו נשמר תוכן הזיכרון בהתקן דמוי קבל. כיוון שסיבית בודדת של זיכרון נשמרת בקבל יחיד (לעומת מספר טרנזיסטורים בהתקני זיכרון אחרים), זיכרון DRAM מספק צפיפות גבוהה ביותר ומחיר (משוקלל לגודל הזיכרון) נמוך יותר מרוב סוגי הזיכרון האחרים. חסרונו של זיכרון זה הוא בעובדה שיש לרענן אותו כל הזמן. משמעות הרענון היא חידוש המטען בקבל, שבגלל הפסדים של זרם זליגה הולך ופוחת כל הזמן.

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

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

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

זיכרון מסוג DRAM הוא הזיכרון הנפוץ ביותר בשימוש בימינו, וקיימים דורות רבים של טכנולוגיה זו (ראו להלן).

====סוגים נוספים של זיכרון מוליכים למחצה====
קיימים סוגים נוספים רבים של זיכרון מוליכים למחצה, כולל סוגים של זיכרון לא נדיף ("Non-volatile"), ובהם זיכרון בועות, וסוגים נוספים מפותחים כל הזמן. עם זאת, בגלל הצלחתה של התעשייה האלקטרונית להמשיך ולייצר DRAM בצפיפות הולכת וגדלה ומחיר הולך ויורד, אין סיבה לחשוב שאחד מהסוגים הנוספים הללו יהפוך לסוג הזיכרון העיקרי בשימוש.

==כרטיסי זיכרון גישה אקראית==
זיכרונות RAM מלמעלה למטה:DIP, SIPP, SIMM 30 pin, SIMM 72 pin, DIMM (168-pin), DDR DIMM (184-pin). למעט הפריט העליון, כל הפריטים הם כרטיסי זיכרון
כרטיסי זיכרון גישה אקראית הם לוחות של מעגלים מודפסים שבקצה האחד שלהם יש משטח עם קצוות מתכתיים חשופים הננעץ בחריצים המיועדים לכרטיסי הזיכרון, בלוח האם. הרכיבים הבולטים ביותר בכרטיסים הם סדרה של שבבים גדולים וזהים, שבבי הזיכרון.

סוגי כרטיסי זיכרון RAM, על פי האות החשמלי שהם מתאימים לו:
*DDR3
*DDR2
*DDR SDRAM
*SDRAM
*RDRAM
*EDO

==ראו גם==
* RAM Drive
* Memtest86
* זיכרון עבודה

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

* [http://www.howstuffworks.com/ram.htm/printable How RAM Works by Jeff Tyson and Dave Coustan]
* [http://www.kingston.com/tools/umg/umg03.asp Ultimate Memory Guide, HOW MEMORY WORKS, Kingston Tools]
* 

==הערות שוליים==

קטגוריה:חומרה
קטגוריה:זיכרון מחשב
קטגוריה:התקני זיכרון אלקטרוניים
קטגוריה:ארצות הברית: המצאות