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

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


Recommended Posts

1. המעבר ל 64 ביט משמעותו שהאוגרים בזכרון יוכלו להחזיק כתובות המורכבות מ 64 ביטים, במקום 32 ביטים -> האם זה נכון ?

2. האם יש משמעות נוספת פרט למשמעות שציינתי, במעבר מ 32 ביט ל 64 ביט ?

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

שזה כ 4.3 מיליארד כתובות (4,294,967,296) => איך מזה אני יכול לחשב מה כמות הזכרון המקסימלית במחשב שעובד 32 ביט ? (4 'ג'יגה ?)

4. 2 בחזקת 64 נותן 18,446,744,073,709,551,616 => איזו כמות מקסימלית זה נותן ?

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

כל כתובת בזכרון מייצגת 8bit כלומר byte אחד. Kbyte זה לא 1000 byte, זה 1024byte, ומכאן אותו דבר גם לmb, ולgb, אם תחלק את המספר 4,294,967,296 שלך ב1048576(1024*1024) תקבל 4096mb תחלק שוב ב1024 תקבל 4gb.

ב64bit כלומר עם 18,446,744,073,709,551,616 כתובות המגבלה היא 17179869184 גיגה בייט.

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

1. המעבר ל 64 ביט משמעותו שהאוגרים בזכרון יוכלו להחזיק כתובות המורכבות מ 64 ביטים, במקום 32 ביטים -> האם זה נכון ?

יוכלו להחזיק מידע בגודל 64 ביט, לא רק כתובות...

2. האם יש משמעות נוספת פרט למשמעות שציינתי, במעבר מ 32 ביט ל 64 ביט ?

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

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

שזה כ 4.3 מיליארד כתובות (4,294,967,296) => איך מזה אני יכול לחשב מה כמות הזכרון המקסימלית במחשב שעובד 32 ביט ? (4 'ג'יגה ?)

4. 2 בחזקת 64 נותן 18,446,744,073,709,551,616 => איזו כמות מקסימלית זה נותן ?

כו.

תחלק ב 1,000,000,000 זה יוצא בערך 18446744073 GB ....

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

כן, אז זה 17179869184 GiB אבל זה לא כל כך טעות... גם דיסקים וכל מני דברים מציינים בעזרת 1000 ולא 1024 (יותר מקום :) ),

אם רוצים לדייק הכי הרבה, יש ללכת לפי מידות ה SI שהם נקבעו על התקן הבינלאומי...

כל מה שהוא כפולות של 10 הוא KILOBIT, MEGABYTE, (כמו שלרוב אומרים), וכל מה שהוא כפולות של 1024 הוא KIBIBIT, MEBIBIT, GIBIBYTE וכו'... (ובקיצור במקום KB, KiB, במקום GB, GiB וכו')...

http://physics.nist.gov/cuu/Units/binary.html

תוכלו לראות שתוכנות כמו BITTORRENT (המקורי לפחות) מציינים במפורש את הגדלים ב KiB ולא KB , עניין של הקפדה :)

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

תודה לכם !

2 שאלות הבהרה :

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

2. במעבר ל 64 ביט, מה הכוונה "יוכלו להחזיק מידע בגודל 64 ביט, לא רק כתובות..." ? האם הכוונה שאוכל להגדיר בתוכנית שלי משתנה בגודל 64 ביט ?

(לדעתי גם היום אני יכול...)

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

כן, אז זה 17179869184 GiB אבל זה לא כל כך טעות... גם דיסקים וכל מני דברים מציינים בעזרת 1000 ולא 1024 (יותר מקום :) ),

אם רוצים לדייק הכי הרבה, יש ללכת לפי מידות ה SI שהם נקבעו על התקן הבינלאומי...

כל מה שהוא כפולות של 10 הוא KILOBIT, MEGABYTE, (כמו שלרוב אומרים), וכל מה שהוא כפולות של 1024 הוא KIBIBIT, MEBIBIT, GIBIBYTE וכו'... (ובקיצור במקום KB, KiB, במקום GB, GiB וכו')...

http://physics.nist.gov/cuu/Units/binary.html

תוכלו לראות שתוכנות כמו BITTORRENT (המקורי לפחות) מציינים במפורש את הגדלים ב KiB  ולא KB , עניין של הקפדה :)

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

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

תודה לכם !

2 שאלות הבהרה :

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

2. במעבר ל 64 ביט, מה הכוונה "יוכלו להחזיק מידע בגודל 64 ביט, לא רק כתובות..." ? האם הכוונה שאוכל להגדיר בתוכנית שלי משתנה בגודל 64 ביט ?

(לדעתי גם היום אני יכול...)

1. לגבי הכתובת בזכרון בכל ARCHITECTURE זה שונה... בכל מקרה, הכתובת מיוצגת ע"י 4 BYTE ל 32BIT שהרי כל בייט זה 8 ביט...

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

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

1. הכוונה לא שכתובת מאוחסנת ע"י בייט אחד, אלא שהנתון המוצבע על ידי כתובת הוא בגודל בייט אחד.

המשמעות היא שאם יש לך מערך של מספרים בגודל 32 ביט, ההפרש בין הכתובות של 2 נתונים סמוכים במערך הוא 4 ולא 1.

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

(unaligned משמעותו שהכתובת לא מכפלה של גודל הנתון שאתה רוצה לקרוא, כלומר עבור קריאה של 16 ביט, הכתובת לא זוגית, ועבור קריאה של 32 ביט הכתובת לא מתחלקת ב-4).

2. גם היום אתה יכול להגדיר משתנה של 64 ביט ( long long אם אתה עובד עם GCC , ל- ++Visual C יש דרך אחרת). ההבדל הוא שבמעבד 32 ביט, כל פעולת 64 ביט תחולק ל-2 פעולות 32 בייט (פעולת חיבור למשל תורכב מהוראת ADD, ואחריה הוראת ADC).

הבדלים עיקריים בין מוד 64 ביט למוד 32 ביט:

1. רגיסטרים ברוחב 64 ביט במקום 32 ביט - מאפשר חישובים של 64 ביט במחזור שעון אחד.

2. כתובות ברוחב 64 ביט- מאופשר הודות לרוחב הרגיסטרים המוגדל.

3. ישנם עכשיו 16 רגיסטרים במקום 8 - מאפשר לקומפיילר לבצע אופטימיזציות טובות יותר על הקוד ולגרום לו לרוץ מהר יותר).

תוספות שקיימות רק ב- AMD64 ולא באינטל 64 ביט (EMT64):

IOMMU - יחידה שאפשרת מיפוי כתובות ב-DMA . זה מאפשר למערכת ההפעלה לתת לכרטיס 32 ביט שעובד עם DMA אזור (BUFFER) שממוקם מחוץ למרחב הזכרון ה- 32 ביט המקורי.

באינטל חייבים כל ה- buffers של הכרטיסים להיות ממוקמים ב- 4GB התחתונים של הזכרון.

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

תודה רבה על ההסבר המפורט :yelclap::xyxthumbs:

רק שביחס לנושא הצחת לבלבל אותי :s05: :D

וא נדבר לרגע על 32 ביט.

ההפרש בין כתובות של 2 מספרים סמוכים שכל אחד הוא 32 ביט הוא 4 בייט, ברור מדוע (32/8)

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

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

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

אם נצטט במדויק, נאמר לך:

"כל כתובת מייצגת ביייט אחד"

אתה הפכת את זה ל:

"כל כתובת מיוצגת על ידי בייט אחד"

את התשובה כבר אמרת בעצמך קודם. כל כתובת בנויה מ-4 בתים.

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

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

זה בדיוק מה שחידדתי: הקישור היחיד שהוזכר בת'רד הזה בין המילים  "בייט בודד" ו-"כתובת" זה שכתובות מצביעות ברמת הביייט.

בשום מקום לא נכתב כאן שכתובת מאוחסנת בבייט בודד.

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

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

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

http://www.heise.de/ct/english/99/12/028/pic01.jpg

אם אתה בא לטעון משהו, לפחות תביא ציטוט רלוונטי.

השקף הנ"ל הוא של ה- IA64 או בשמו המסחרי - איטניום.

אין שום קשר בין ארכיטקטורת האיטניום (IA64) לארכיטקטורת -64 או בשמה ה"אינטלי", EMT64.

דבר נוסף - מכיוון ש-8 הרגיסטרים הנוספים נתמכים רק במצב של 64 ביט, הן חלק מהמוד - take it or leave it, הכל הולך כחבילה אחת שנקראת -64.

זה בניגוד לביט ה- NX נגד תולעים שנוסף גם למוד ה- 32 ביט ולכן אני לא מחשיב אותו כחלק מהתמיכה ב-64 ביט.

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

ארכיון

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

×
  • צור חדש...