טווח זכרונות ב 32 ביט, ובווח זכרונות ב 64 ביט - עמוד 2 - מעבדים, לוחות-אם וזכרונות - HWzone פורומים
עבור לתוכן
  • צור חשבון

טווח זכרונות ב 32 ביט, ובווח זכרונות ב 64 ביט


Recommended Posts

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

בכל מקרה מה שהתכוונתי זה שאין שום קשר בין עוד 8GPRS לזה שזה 64 ביט , ה8 GPR נוספו בX86-64 רק בגלל שאם כבר עושים סט םקודות חדש אז קופצים על ההזדמנות ומוסיפים עוד משהוא , הבאתי את האיטניום כדי להראות ארכיטקטורת 64 ביט שלו יש הרבה יותר מעוד 8GPR - יש לה עוד כמה מאות ואם כבר מזכירים את זה הסיבה שהוסיפו רק 8 GPR ולא יותר :זה בגלל ההגבלות של בייט הModRM .

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

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

מה הכוונה מצביעות ברמת הבייט ? שהפוינטר לכתובת הוא בייט ?

לא!!!

כמה פעמים אפשר לחזור על זה? גודל הפוינטר הוא 4 בייט!!!

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

זאת בניגוד לכל מיני ארכיטקטורות אחרות (לא x86) שבהן המצביע הוא לדוגמא ברמת המילה (שהיא 16 ביט באותו מקרה) ולכן אתה יכול לקרוא ולכתוב מהזכרון רק מילים של 16 ביט.

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

במעבד כזה, אם יש לו כתובת של 16 ביט, זה אומר שהוא מצביע של 64K מילים, או 128KB.

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

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

אבל עם כל הפוינטרים (IP DP והחברה) הם באורך שמספיק גדול כדי להגיע לכל מקום בזכרון הראשי למה בעצם צריך את הסגמנטים ?, הרי הם תוכננו בשביל ה8088 שבו האורך שלהם היה 16 ביט וגודל הזכרון הנתמך היה 20 ביט והיה צורך בעוד 4 ביט כדי לסמן את המקום של התוכנית.

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

ב-8088 היה צריך את הסגמנטים , כמו שאמרת.

לגבי ה- 80286 :

[קמתי, פתחי ספר... עברו 5 דקות... חזרתי!]

ב- 80286 נולדו לראשונה טבלאות הדסקריפטורים, לפיהם הסגמנט מייצג כתובת לוגית (כתובת בסיס של 24 ביט וגודל של 16 ביט).

זה כמובן הגביל את ה- 286 ל- 16MB זכרון, וזה לא היווה כל כך בעיה.

מה שכן היה בעיה היא העובדה שכל הרגיסטרים נשארו 16 ביט וכמובן גם גודל הסגמנט המקסימלי.

מה כן הרווחנו? ניתן היה לבנות מערכת הפעלה multi-tasking עם עשרות ומאות טאסקים בזכרון, גם אם כל אחד מהם היה בנוי מסגמנטים של עד 64K.

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

כשנולד ה- 386 הוגדלו הדסקריפטורים ואיפשרו להגדיל סגמנטים באורך של עד 4GB וכתובת בסיס של 4GB.

בקיצור, הדסקריפטורים קיימים במוד 32 ביט כדי לתמוך במודי התאימות ל- 8086 ו- 80286 . כיום הם לא ממש מועילים לדעתי.

למיטב ידיעתי בלינוקס פשוט מאתחילם את CS, DS, ES, SS, FS, GS לדסקריפטורים זהים עם כתובת בסיס 0 ואורך 4GB ופשוט מתעלמים מהם מאותו הרגע.

שימוש מענין לדסקריפטורים:

לפני שנוסף מוד NX למעבדי AMD, היה hack למערכות הלינוקס וה-BSD שהתבסס על זה שלסגמנטים יש ביט execute .

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

http://lwn.net/Articles/31032/

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

YOU PPL TALKING ABOUT REAL MODE AND PROTECTED MODE MAYBE ?

הרגתם את הבחור ששאל את השאלות :)

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

לגבי ה EXEC-SHIELD, זה רעיון טוב, אבל יש לו בעיות עם הרבה תוכנות פשוט לא תומכות בו, לדוגמה ה JAVA RUN TIME....

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

ארכיון

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

×
  • צור חדש...