SDRAM

מתוך ויקיפדיה, האנציקלופדיה החופשית
קפיצה אל: ניווט, חיפוש
זיכרון SDRAM

SDRAM, ראשי תיבות של Synchronous Dynamic Random Access Memory, הוא התקן חומרה לזיכרון מחשב. התקן זה משתמש בתושבת דימים (DIMMs). בדרך כלל SDRAM תומך במהירויות מ-66 מגה הרץ ועד 133 מגה הרץ.

לעומת 72 הפינים שהיו בזיכרונות EDO DRAM שקדמו לו, או 30 פינים בזיכרונות מוקדמים יותר, התקן SDRAM משתמש בתושבת בעלת 168 פינים.

רקע: זכרונות גישה אקראיים (RAM)[עריכת קוד מקור | עריכה]

Postscript-viewer-shaded.png ערך מורחב – זיכרון גישה אקראית

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

קיימים שני סוגי זיכרון גישה אקראית:

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

זיכרון בגישה אקראית דינמי סינכרוני (SDRAM)[עריכת קוד מקור | עריכה]

זיכרון SDRAM הוא זיכרון DRAM שהוא גם סינכרוני, כלומר מסונכרן עם אותו שעון של ה-bus של המחשב.

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

Pipelining פירושו שניתן לקבל הוראות חדשות לפני שמסתיים הטיפול בקודמות. בכתיבה ב-Pipeline ניתן לשלוח פקודת כתיבה נוספת ישירות לאחר פקודת כתיבה בלא להמתין שהמידע ייכתב למערך הזיכרון. בקריאה ב-Pipeline המידע הנדרש מגיע מספר מחזורים קבוע לאחר פקודת הקריאה ובמהלך מחזורי שעון אלה ניתן לשלוח פקודות נוספות. (מספר מחזורי ההשהייה ידוע כ-Latency והינו שיקול חשוב כאשר בוחרים SDRAM למחשב).

גרסאות זיכרון SDRAM[עריכת קוד מקור | עריכה]

זכרונות DDR שונים
  • SDR(Single Data Rate)SDRAM - יכול לקבל פקודה אחת ולהעביר מילה אחת של מידע בכול מחזור שעון. תדירויות שעון אופייניות הן 100 ו-133 מגה הרץ. מיוצרים עם מגוון של גדלי bus (הנפוצים ביותר הם 4,8 ו-16 ביטים) אבל בדרך כלל מורכבים ל-DIMM הקורא או כותב 64 (non-ECC) או 72 (ECC) ביטים בכול פעם.
  • DDR(Double Data Rate) DRAM - בעוד ש-latency הגישה של ה-DRAM מוגבל על ידי מערך ה-DRAM, ל-DRAM יש רוחב פס פוטנציאלי גדול מאוד בגלל שכל קריאה פנימית היא שורה של אלפי ביטים. כדי לנצל יותר מרוחב פס זה, ממשק קריאה בקצב כפול פותח ל-DRAM. הוא משתמש באותן הפקודות כ-SDR אך כל קריאה וכתיבה היא של שתי מילות מידע במקום אחת למחזור שעון. הממשק משיג שיפור זה על ידי כך שקריאה וכתיבה מבוצעות גם בירידת שעון בנוסף לעליית שעון. ה-SDRAM המשתמש בממשק זה הוא DDR SDRAM כאשר הגרסה הראשונה שלו היא DDR1. בנוסף לשיפור ממשק זה מתח האספקה של ה-DDR1 ירד מ-3.3 וולט ל-2.5 וולט ועל כן DDR SDRAM אינו תואם SDR SDRAM. קצבי השעון הנפוצים של ה-DDR1 הם 133, 166 ו-200 מגה הרץ (7.5 ,6 ו-5 נאנו שניות למחזור), הידועים כ-DDR333 ,DDR-266 ו-DDR-400 וה-DImms הם PC-2700 ,PC-2100 ו-PC-3200. הקצב הגבוה ביותר הוא DDR-550 וה-DIMM שלו הוא PC-4400. יצא בשנת 2000 צורך מתח חשמל של 2.5V מהירות 200-400MHz גודל נפח

אחסון 128M-2Gbits .

  • DDR2 - דומה ל-DDR1 אך מכפיל בשנית את קצב הקריאה וכתיבה המינימלי ל-4 מילים עוקבות. כמו כן פרוטוקול ה-bus פושט כדי לאפשר פעולות בביצועים גבוהים יותר (בפרט פקודת ה-"burst terminate" נמחקה). הדבר מאפשר להכפיל את קצב ה-bus בלא להגדיל את קצב השעון של פעולות ה-RAM הפנימיות, במקום זאת פעולות פנימיות מבוצעות ביחידות רחבות פי 4 מ-SDRAM. כמו כן נוסף חיבור כתובת בנק נוסף המאפשר תמיכה ב-8 בנקים. קצבי השעון הנפוצים של ה-DDR2 הם 200, 266 ,300 ו-400 מגה הרץ (2.5 ,1.5,1.875 ו1.25 נאנו שניות למחזור) הידועים כ-DDR2-667, DDR2-533, DDR2-400 ו-DDR2-800 וה-DImms הם PC2-3200 עד PC2-6400. ה-DDR2 המהיר ביותר הניתן לרכישה הוא DDR2-1250 וה-DIMM שלו הוא PC2-10000. מכיוון שקצב השעון לפעולות הפנימיות הוא בחצי מקצב השעון, DDR2-400 הינו בעל Latency גדול יותר מזה של DDR-400. יצא בשנת 2004 צורך מתח חשמל של 1.8V מהירות 400-800MHz גודל נפח אחסון 256M-4Gbits .
  • DDR3 - מכפיל גם כן את קצב הקריאה וכתיבה ל-8 מילים עוקבות. הדבר מאפשר הכפלה נוספת של רוחב הפס וקצב ה-bus החיצוני בלא שינוי לקצב השעון בפעולות פנימיות אלא רק לרוחבן, במטרה לשמור על 800 מגה העברות בשנייה (העלייה והירידה של שעון 400 מגההרץ) ה-RAM הפנימי צריך לבצע 100 מגה בשנייה. גם בהכפלה זו החסרון הוא ה-latency המוגבר. קצבי השעון הראשוניים היו 400 ו-533 מגההרץ ב-DDR3-800 ו-DDR3-1066 המתאימים ל-PC3-6400 ו-PC3-8500) אך כעת זמינים גם 667 ו-800 מגההרץ ב-DDR3-1333 ו-DDR3-1600 המתאימים ל-PC3-10600 ו-PC3-12800. יצא בשנת 2007 צורך מתח חשמל של 1.5V/1.35V מהירות 800-2133MHz גודל נפח אחסון 512M-8Gbits .
  • DDR4 - יצא בשנת 2012 צורך מתח חשמל של 1.2V/1.0V מהירות 1600-2667MHz גודל נפח אחסון 1G-16Gbits.
סוג/משפחה מתח נפח מהירות שנה
DDR 2.5V 128M-2Gbits 200-400MHz 2000
DDR2 1.8V 256M-4Gbits 400-800MHz 2004
DDR3 1.5V/1.35V 512M-8Gbits 800-2133MHz 2007
DDR4 1.2V/1.0V 1G-16Gbits 1600-2667MHz 2012

מידע טכני[עריכת קוד מקור | עריכה]

ה-SDRAM הוא וריאצייה של DRAM, על כן גם הוא מאחסן ביטים של מידע תוך שימוש בטרנסיסטור וקבל במקום 6 טרנסיסטורים כפי שישנם ב-RAM סטטי. בהינתן כתובת לקרוא או לכתוב אליה, הטרנסיסטורים הדרושים 'נפתחים' והקבל נטען לערך הביט או לערך הנכתב אליו בהתאם לפעולה. במטרה לצמצם את ההשפעה של דליפת מטען בקבלים כל השורות מרועננות מדי פעם במטרה לרענן את המתח גם כאשר לא מתקבלות בקשות קריאה וכתיבה. מלבד מטבעו הסינכרוני ל-SDRAM יש גם את היכולת לבצע Pipelining של פקודות במטרה לטפל ביותר מבקשת קריאה או כתיבה אחת בכול פעם כתוצאה מהמורכבות הגדולה יותר שלו. ה-SDRAM עצמו לא אחראי לטיפול ברמה גבוהה בבקשות מבחוץ, ניהול ה-SDRAM ווידוא שהוא מטפל בבקשות בצורה נכונה מבוצע על ידי בקר שמתרגם את הבקשות מהמשתמש לאותות בקרה הנשלחים ל-SDRAM תוך כדי מעקב אחר מצבו של ה-SDRAM. הבקר גם מתרגם את הפלט של ה-SDRAM למשתמש. לכן לא ניתן לנתח את ה-SDRAM בלא לנתח גם את הבקר.

אותות הבקרה[עריכת קוד מקור | עריכה]

  • Cke - אות Clock Enable. אות זה משמש כ-Mask לאות השעון של ה-SDRAM. כאשר Cke ב-'0' ה=SDRAM לא יזהה עליית שעון וה-SDRAM יעצור עד ש Cke יקבל '1'.
  • CS - אות Chip Select. כאשר אות זה הוא '1' ה-SDRAM מתעלם מכול האותות המתקבלים מהבקר לבד מ-CKE.
  • DQM - אות Data Mask, ה-Q היא שריד מהימים בהם קווי המידע כונו קווי DQ. כאשר הוא '1' אותות אלה מונעים ביצוע פקודות קריאה וכתיבה, פקודות כתיבה לא מבוצעות בעוד שאם הועלה ל '1' שני מחזורי שעון לפני פקודת כתיבה היא לא מבוצעת.
  • Ras,Cas - אותות Row/Collumn Strobe. שני אותות אלה בנוסף ל-WE קובעים איזו פקודה ה-SDRAM מקבל מהבקר בניגוד לשמם הם אינם אותות Strobe.
  • WE - אות Write Enable. אות הבקרה השלישי הקובע את הפקודה המתקבלת.

בנוסף לאותות בקרה אלו, ל-SDRAM ישנם גם busses המשמשים לקבלת מספר שורה\טור ובנק מהבקר, ו-Bus דו כיווני לקבלת ושליחת מידע. בפקודות אשר לא דורשות את כל 12 ביטי מספר השורה\טור (פעולות טור אשר היות שמספר הטורים הוא בן 11 ביטים בלבד ולכן ניתנות לייצוג בעזרת הביטים A0-A9 ופעולות אשר לא דורשות כתובת) ביט הכתובת A10 משמש כאות בקרה נוסף המאפשר בחירת אפשרות שונה למימוש הפקודה המתקבלת.

  • Activate - הפעלה. בפקודה זו ה-SDRAM מקבל מספר בנק (שני ביטים הקובעים לאיזה מ-4 בנקים אפשריים הוא ייגש) ומספר שורה (היות שהשורה היא בת 12 ביטים גם ביט A10 משמש להעברת הכתובת ולכן אין לו שימוש מיוחד בפקודה זו). התוכן של השורה בבנק נקרא למערך טורי המגברי וניתן כעת לגשת אליו, תוצר לוואי של ההפעלה הוא רענון המטען בקבלים של השורה המופעלת אשר עוזר למנוע אובדן מידע. ההפעלה אינה מיידית, ולכן במהלך זמן row to collumn לא ניתן לבצע פעולות קריאה וכתיבה בבנק, למרות שעדיין ניתן לגשת לבנקים האחרים, אכיפת מגבלת זמן זו על הבקשות הנשלחות מטופלת על ידי הבקר.
  • Prechargin - הכנה. לאחר ששורה הופעלה, יש 'לסגור' אותה לפני שניתן להפעיל שורה חדשה, זאת בגלל שהמגברי חישה של הבנק צריכים לחזור למצב ראשוני כדי שניתן יהיה לקרוא את תוכן השורה הבאה. יש שתי דרכים להורות על הכנה ב SDRAM. הראשונה היא באמצעות פקודת ה Precharge אשר בהתאם לערכו של ביט A10 תכין את הבנק הנוכחי או את כל הבנקים. הדרך השנייה היא לצרף לפקודת קריאה או כתיבה פקודת הכנה על ידי שליחת פקודת הקריאה\כתיבה כאשר A10 גבוה.
  • Auto Refreash - רענון אוטומטי. פקודת הרענון האוטומטי מרעננת שורה בכול בנק, הבנקים חייבים להיות לאחר Precharge כדי שניתן יהיה לרענן, ל-SDRAM יש מונה פנימי הגורם לו לרענן שורה אחרת בכול פעם ועל-כן הבקר יכול למנוע אובדן מידע על ידי שליחת פקודות רענון אוטומטי לאחר כל פרק זמן כך שכל השורות ירועננו לפני שהמידע בהן יאבד. אם פקודת הרענון ניתנת ו-Cke מורד ל-'0' ה-SDRAM יעבור למצב חסכון כוח בו יתעלם מפקודות נוספות עד ש-Cke יעלה ל-'1' וימשיך לרענן שורות במטרה למנוע אובדן מידע.
  • Mode Loading - הגדרת מצב עבודה. ל-SDRAM יש 10 ביטים M0-M9 אשר מגדירים את מצב העבודה שלו. כאשר פקודת הגדרת המצב ניתנת כל אחד מביטי M מקבל את הערך של ביט הכתובת בעל אותו מספר.
תפקיד ביטי ה-M:
    • M9 - קובע האם ה-SDRAM יבצע כתיבה ב-Burst או לא (קריאה היא תמיד ב-Burst).
    • M8,M7 - ביטים שמורים אשר יש להגדירם כ-'0' כאשר מתבצעת הגדרת המצב.
    • M6,M5,M4 - קובעים את ה-CAS Latency, בדרך כלל היא תהיה 2 (0,1,0) או 3 (0,1,1) .
    • M3 - קובע האם ה-SDRAM משתמש ב-Sequential Burst או ב-Interleaved Burst.
    • M2,M1,M0 - קובעים את גודל ה-Burst בקריאה ואם M9 הוא '1' אז גם בכתיבה, הגדלים האפשריים הם 1 ,2 ,4 ו-8.

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

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

בקר ה-SDRAM[עריכת קוד מקור | עריכה]

הבקר הוא החולייה המקשרת בין ה-SDRAM לבין המשתמש (Host) המבקש לקרוא או לכתוב ל-SDRAM. בדרך כלל הוא ממומש בקוד כמכונת מצבים. הבקר מוכרח לעקוב אחר ה-SDRAM במטרה לטפל בבקשות המשתמש, המעקב כולל:

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

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

ראו גם[עריכת קוד מקור | עריכה]

קישורים חיצוניים[עריכת קוד מקור | עריכה]