עבור לתוכן

תפקיד ה Cache

Featured Replies

פורסם

מהו תפקיד ה Cache במעבד??

  • תגובות 58
  • צפיות 5.4k
  • נוצר
  • תגובה אחרונה
פורסם

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

פורסם

הקונספט די פשוט:

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

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

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

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

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

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

זה הקאש.

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

על המעבד עצמו (מה שקרוי ON-DIE), ולא ברכיב חיצוני.

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

כיום הקאש על השבב וכולם שמחים יותר - אריזות הCARTRIDGE היו מעמסה כלכלית כבדה על יצרני המעבדים.

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

היתרון, כמובן, הוא שSRAM מסוגל לעבוד במהירויות עליהן SDRAM רק חולם בין STROBE-ים.

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

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

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

אז איך המידע מגיע לשם בכל זאת? על השאלה הזו לבדה, מגיעה לך סוכריית חמאה. הנה, קח.  :D

מה שקורה הוא שכל גישה לזכרון עוברת דרך הקאש.

בוא ניקח את התרחיש הבא:

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

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

אם אין ישות כזו, המעבד יקרא מתוך הזכרון אל הקאש, כך שבגישה הבאה לכתובת X, המידע יהיה זמין שם.

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

ורק בשביל שתבין כמה הקאש חשוב - כל ההבדל בין סלרונים לאחיהם עתירי הביצועים (פנטיום 2, 3, וכו'), היה תמיד בקאש! (אני לא יודע איך זה בדורות האחרונים ממש, אבל כנראה שזה ממשיך באותה צורה). לסלרונים הראשונים לא היה קאש כלל, מה שגרר ביצועים יותר מפאתטיים. אחר כך אינטל כבר הוסיפו קאש, קטן אך מהיר; 128K, אבל ON-DIE שפועל במהירות המעבד. באותם ימים, לפנטיום 2 היה 512K, אבל OFF-DIE - כלומר, על שבבים נפרדים, מחוץ למעבד - שעבד בחצי ממהירות המעבד.

אינטל למדו מהטעות הזו, שיצרה מעבד שהיה זול בחצי מהמעבד "החזק", ועם ביצועים קרובים ולפעמים אף - אבוי - טובים יותר.

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

בקיצור, דיאבלו-וי-טי חבר, הקאש הוא דבר חשוב.

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

הלאה, לשדות.

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

בשביל זה אנחנו כאן...תוציא כל מה שמעיק עליך :)

"שדות"...

אתה מתכוון לאלקטרומגנטים...לא נורא גם זה עובר :P

פורסם

קבל ח"ח ותודה על ההסבר, נהנתי לקרוא ;)

פורסם

הקונספט די פשוט:

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

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

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

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

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

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

זה הקאש.

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

על המעבד עצמו (מה שקרוי ON-DIE), ולא ברכיב חיצוני.

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

כיום הקאש על השבב וכולם שמחים יותר - אריזות הCARTRIDGE היו מעמסה כלכלית כבדה על יצרני המעבדים.

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

היתרון, כמובן, הוא שSRAM מסוגל לעבוד במהירויות עליהן SDRAM רק חולם בין STROBE-ים.

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

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

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

אז איך המידע מגיע לשם בכל זאת? על השאלה הזו לבדה, מגיעה לך סוכריית חמאה. הנה, קח.  :D

מה שקורה הוא שכל גישה לזכרון עוברת דרך הקאש.

בוא ניקח את התרחיש הבא:

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

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

אם אין ישות כזו, המעבד יקרא מתוך הזכרון אל הקאש, כך שבגישה הבאה לכתובת X, המידע יהיה זמין שם.

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

ורק בשביל שתבין כמה הקאש חשוב - כל ההבדל בין סלרונים לאחיהם עתירי הביצועים (פנטיום 2, 3, וכו'), היה תמיד בקאש! (אני לא יודע איך זה בדורות האחרונים ממש, אבל כנראה שזה ממשיך באותה צורה). לסלרונים הראשונים לא היה קאש כלל, מה שגרר ביצועים יותר מפאתטיים. אחר כך אינטל כבר הוסיפו קאש, קטן אך מהיר; 128K, אבל ON-DIE שפועל במהירות המעבד. באותם ימים, לפנטיום 2 היה 512K, אבל OFF-DIE - כלומר, על שבבים נפרדים, מחוץ למעבד - שעבד בחצי ממהירות המעבד.

אינטל למדו מהטעות הזו, שיצרה מעבד שהיה זול בחצי מהמעבד "החזק", ועם ביצועים קרובים ולפעמים אף - אבוי - טובים יותר.

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

בקיצור, דיאבלו-וי-טי חבר, הקאש הוא דבר חשוב.

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

הלאה, לשדות.

איזו מקצועיות.. איזו רצינות !

כל הכבוד.

הסבר טוב מאוד.

* מישהו יכול להסביר בקשר לעניין הגודל של הזיכרון ואיפה הוא נמצא בדיוק? (אולי תמונה?) כדי להבהיר את העניין.

אני ראיתי תמונה של מעבד centrino (אני לא זוכר את שם הליבה.. אולי Dothan) ששם הליבה הייתה בצד אחד והזכרון בצד השני של המעבד.

פורסם

שמחתי להרעיף עליכם מעט מהטוב שבעולם.

זיכרו, ילדים: חייכם יקרים, ויש לנהוג בהתאם. רוב התאונות קורות, בכלל, ליד הבית.  :'(

אה, כן, בקשר לשאלה שלך - מה בעצם שאלת? ;)

כמה תוספות להודעה המקורית:

למעשה, לא רק הסלרונים היו שונים ממשפחות הMAINSTREAM בקאש בלבד; גם ההבדל היחידי בין הXEON לP4 הרגיל, מלבד היותו של הראשון בר שימוש במערכות מרובות מעבדים (כאילו שמישהו ירצה..), הוא הקאש. כך היה מיומו הראשון של הXEON - במקום 256K קאש L2, הם נתנו מגה, ומכרו אותו במחיר גבוה פי 7-8.

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

אני בטוח שאם תציץ בFLOORPLAN של הרכיב (המיקום של החלקים השונים), אתה תראה שהקאש יותר גדול מכל יתר חלקי המעבד גם יחד (זו ספקולציה, אמנם, אבל ספקולציה שלי...). כראייה, לP4EE יש משהו כמו 170 מיליון טרנזיסטורים, מספר עצום לעומת הP4 הרגיל. קראתי איפשהו שזה פי 3 יותר, לא קשה לי להאמין.

לא הזכרתי בכלל את ענייני הLEVELS השונים - L1, L2, L3.. אז תחשבו שאחרי כל קאש, באים קאשים גדולים יותר, ואיטיים יותר (לרוב). כלומר, היררכייה של קאשים.

הם עובדים עדיין בצורה שתיארתי לעיל - מבוצעת בקשה על ידי המעבד, היא מגיעה לקאש הראשון; לא נמצא המידע בקאש הראשון? הלאה לשני, וכן הלאה, עד לזכרון המערכת.

בPII, וכל יתר חברי מסדר הCARTRIDGE, הקאש שישב מחוץ למעבד היה הL2. עדיין היה L1 על המעבד עצמו, אם כי היה די מעט ממנו.

ככלל, כל מה שיושב על המעבד עצמו (ON-DIE) עובד במהירות שעון מלאה (זה לא מחייב, אבל לרוב זה כך - התכנון פשוט יותר).

כלומר, הL1 תמיד היה במהירות שעון, ותמיד יהיה.

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

הסיבה היא שיש בו L3, ולא סתם עוד L2, היא שהCORE עצמו של המעבד הוא NORTHWOOD רגיל לכל דבר - פשוט היה קל יותר להוסיף L3 מאשר לשנות את הL2 (שהוא 512K, כרגיל, ותודה ששאלתם). הL3 עובד במהירות זהה לחלוטין לL2, בP4EE. כך שאפשר לראות בו כL2 ענק, מאחר והוא במילא באותה מהירות.

בתקופת ה5x86 (ואולי גם בתקופת הK6) היו לוחות שהציעו קאש L3 - כלומר, הקאש היה ברכיב זכרון על הלוח. לא כלכך אפקטיבי.

אני מתחיל להנות מעניין הקאש הזה. תביאו לי עוד.

פורסם

*Spam Alert* אני חייב...

x0d כבוד על ההסבר הורדת לנו עוד דאגה מהלב על משהו שאנחנו צריכים לדעת לעתיד...

אולי תנסה לקחת את זה עוד יותר קדימה...( ;))

פורסם
  • מחבר

אחלה הסבר אחי, קראתי כל מילה

תודה

פורסם

אישית? רק על ההסבר הזה מגיע לו איזה משהו באתר P: (כתב חדשות/מדריכים/הסברי רכיבי מערכת/מודרטור בפורום)

ענה לי ממש אבל ממש על כל השאלות שהיו לי ועכשו אני בלב שקט הולך על הclawhammer ולא על החדש שחכתי תשם שלו

פורסם

חברים, תודה. אני מעולם לא חשבתי שאזכה לכזה כבוד בעדה שלכם ;D

פורסם

רק משהו אחד.

הP4EE הוא לא בדיוק Nortwood, הוא בעצם Xeon על סוקט 478 ועם באס 800 (הXeonים יש להם 533, לפחות היה להם כשהמעבד הזה יצא).

לא יעזור 24 מגה קאש (וזה יגיע, חכו) אם מה שאתה מחפש לא נמצא שם. x0d אמר את זה באמת, אבל אני חוזר ומדגיש: יש סבירות מסויימת אם משהו שהמעבד צריך נמצא בקאש והמדד הזה אומר ה-כל על הליבה. האחוזים האלה משתפרים עם הזמן, הדותן כבר אלוף העולם בזה בגלל שאם משהו כבר בקאש לא רק שזה משפר את המהירות שלו אלא זה מוריד את צריכת החשמל הכללית שלו. המעבד הקודם לו (יעזור לי האלוהים! ברח לי השם מהראש, נו.. זה הראשון שבא עם סנטרינו) היה כבר לא רע בזה, אבל הדותן מצטיין יותר, חוץ מזה ש2 מגה קאש תמיד עוזר - כשאתה בתהליך של 90 ננומטר אפשר להכניס את זה (לא ממש קשור אבל, גודל הליבה נשאר כשמספר הטרנזיסטורים גדל. גודל ליבה קטן = יותר זול לאינטל).

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

פורסם

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

הסיבה היא שיש בו L3, ולא סתם עוד L2, היא שהCORE עצמו של המעבד הוא NORTHWOOD רגיל לכל דבר - פשוט היה קל יותר להוסיף L3 מאשר לשנות את הL2 (שהוא 512K, כרגיל, ותודה ששאלתם). הL3 עובד במהירות זהה לחלוטין לL2, בP4EE. כך שאפשר לראות בו כL2 ענק, מאחר והוא במילא באותה מהירות.

לא באותה מהירות מכל הבחינות... הגישה לזיכרון הL3 ארוכה מגישה לזכרון ה L2. במקרה הנ"ל 9 מחזורי שעון גישה ל L2 (כאשר 2 מחזורים עבור הגישה הקודמת אל ה L1 ו 7 אל ה L2) מול 27 מחזורי שעון גישה אל ה L3 (שני מחזורים אל ה L1 שבעה מחזורים אל ה L2 ו 14 מחזורים שלמים עבור ה L3). זה גם למה לא מגדילים את ה L2 על מנת לא לפגוע בזמן הגישה איליו.

-------------------------------------------

הנה תמונה שממחישה כמה יקר זיכרון המטמון - מגה זיכרון המטמון L2 של האופטרון לוקח כמחצית מגודל הליבה כולה...

27382B-12_E.jpg

פורסם

בקשר לבחור מעלי ובקשר לנושא - סנדרה מציעה בדיקה שבודקת את המהירות העברת נתונים מ/לקאש. הבדיקה מעבירה קבצים של של 2, 4 קיי וככה עד רבע ג'יגה. יפה לראות איך הL1 הכי מהיר, אחריו, L2, L3, L4.... ובסוף כשמידע כבר לא נכנס לקאש הוא צריך להגיע לזיכרון ואז רואים נפילה ענקית במהירות.

פורסם

לא באותה מהירות מכל הבחינות... הגישה לזיכרון הL3 ארוכה מגישה לזכרון ה L2. במקרה הנ"ל 9 מחזורי שעון גישה ל L2 (כאשר 2 מחזורים עבור הגישה הקודמת אל ה L1 ו 7 אל ה L2) מול 27 מחזורי שעון גישה אל ה L3 (שני מחזורים אל ה L1 שבעה מחזורים אל ה L2 ו 14 מחזורים שלמים עבור ה L3). זה גם למה לא מגדילים את ה L2 על מנת לא לפגוע בזמן הגישה איליו.

-------------------------------------------

הנה תמונה שממחישה כמה יקר זיכרון המטמון - מגה זיכרון המטמון L2 של האופטרון לוקח כמחצית מגודל הליבה כולה...

i stand corrected, בעניין הlatency, וגם בעניין הEE שהוא Northwood (מה שלא מדוייק, והוא למעשה יותר Gallatin).

בכל מקרה, שימו לב שלא רק שהL2 לוקח את רוב המקום על הליבה, אלא שגם הL1 (שני הL1-ים, למעשה) לוקחים טונה של מקום. בסך הכל, משהו כמו 70 אחוז מגודל הרכיב הולך על קאש.

וזה בעצם מה שעולה כסף.

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים