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

שאלה בקשר כללית בקשר הרכב המחשב..


Rule The Pc

Recommended Posts

אהלן

טוב לאדעתי איך לנסח כותרת

אני יודע כמובן שהמחשב מורכב בעיקרו ןממעבד שמחובר לזיכרון דרך הלוח אם :P

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

היה לנו שיעור במיקרו מחשבים שהוא כבר ענה איכשו על השאלה (חח כזה חשבתי אמרתי אני אשאל בHW ואז בשיעור הוא לימד את זה כבר אבל לא הבנתי)

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

אפשר הסבר יותר מסודר וברור?

תודה!!

קישור לתוכן
שתף באתרים אחרים

טוב, נו.. i'll step up to it..

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

המעבד מטפל במידע, במהירות שעון מסויימת.

הזכרון כותב\קורא מידע במהירות שעון מסויימת.

הבאס מעביר מידע מנקודה לנקודה במהירות שעון מסויימת.

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

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

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

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

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

חיצוני אחר. יש לו את השעון שלו, וזה כל מה שמשנה.

ואחרי כל הבולשיט הסמנטי, הנקודה העיקרית:

אם הבאס איטי מהCPU, הCPU אמנם יעבוד במהירות מלאה, אך לא יהיה לו מידע לעבד, והוא יעשה מחזורים "על ריק" (מה שקרוי stall).

עכשיו, צדקת כשאמרת ש"המעבד עומד מלא זמן בלי לעשות כלום". בדיוק בגלל זה קיים הcache:

http://www.hwzone.co.il/community/index.php?topic=77888.msg668442#msg668442

תקרא את הת'רד הזה, יצא מעניין למדי (ולא כי אני כתבתי..).

הcache, בקצרה, הוא על המעבד שפועל במהירות הנגזרת מזו של המעבד (לרוב זו מהירות זהה, אך לא תמיד. מה שחשוב הוא, שאם המעבד יואץ פי 2, גם הcache יואץ איתו -

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

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

לכן, כל עוד המידע קיים בcache והמעבד יכול לשלוף אותו משם, אנחנו תמיד נעבוד במהירות מלאה.

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

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

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

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

ומסוגלים להתבצע במקביל.

תחשוב על pipeline של שלושה שלבים:

השלב הראשון קריאות מהזכרון.

השלב השני את הפקודה.

השלב השלישי כתיבות בחזרה לזכרון.

כל שלב בpipeline מתבצע בcycle אחד. כלומר, בכל cycle הפקודה עוברת לשלב הבא בpipeline.

תחשוב שברגע שפקודה כלשהי עברה שלב בpipeline, פקודה אחרת יכולה לתפוס את מקומה.

בוא נניח שנתנו למעבד שלוש פקודות, בזו אחר זו - X, Y, וZ.

עכשיו, נעבור על הcycle-ים ונראה מה קורה (המספרים מציינים את הcycle הנוכחי):

1: פקודה X נקראה מהזכרון (היא בשלב הראשון)

2: פקודה X התבצעה (שלב שני); פקודה Y נקראה מהזכרון (שלב ראשון)

3: פקודה X נכתבה לזכרון (שלב שלישי); פקודה Y התבצעה (שלב שני); פקודה Z נקראה מהזכרון (שלב ראשון)

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

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

pipeline במעבד מודרני עלול להגיע לאורך המביך-משהו של 31 שלבים (בPrescott, אם אני לא טועה).

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

(הרי כל העיקרון בpipeline הוא שכל השלבים מתבצעים במקביל, בזמן זהה).

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

טוב, מספיק.

מקווה שהצלחתי לעזור במשהו  :)

קישור לתוכן
שתף באתרים אחרים

וואלה אתה טוב

באמת המורה אמר שבמעבד שאנחנו עובדים 80806 יש משהו "חדשני" שנקרא הPIPEILNE הזה שאמרת רק לא הבנתי לגמרי איך הוא עובד....

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

תודה רבה!!

קישור לתוכן
שתף באתרים אחרים

חחח

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

בינתיים אני מרוצה מי"א

אלקטרוניקה תקבילית עם מורה מעולה.....

מיקרו מחשבים עם מורה מעולה.......

עיצוב תכונה עם מורה ממש ממש מעולה הכי טוב בירושלים אולי........

VB עם מורה אחלה.........

אסמבלר עם מורה אחלה...........

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

קישור לתוכן
שתף באתרים אחרים

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

קראתי כל מילה ונהנתי לאורך כל הזמן, תודה לך x0d. (אני חושב שאני יעלה את זה על Notepad :)

נ.ב

Rule The - אסמבלר זה לא השם של השפה, זה ישום שהופך את הקוד שאתה יוצר בתוכנה לEXE (אני לא בטוח שדייקתי לגמרי)

שם השפה הוא אסמבלי.

נ.ב2

איפה אתה לומד?

קישור לתוכן
שתף באתרים אחרים

ארכיון

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

×
  • צור חדש...