מרץ 232011
 

קניתם מחשב עם 4GB זיכרון או יותר, אבל הוא מדווח שיש לו פחות? Windows טוענת שמנהלי ההתקנים (דרייברים) שאתם מנסים להתקין לא תואמים למערכת ההפעלה, למרות שהורדתם את הדרייברים ל-XP/Vista/7 כמו שצריך? יש לכם שתי תיקיות בשם "Program Files"? ברוכים הבאים לעולם המופלא של 64bit.

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

מספרים בינאריים

כמה פעמים ספרת עד 99999999

עד כמה אפשר לספור? תלוי במספר הספרות שיש לנו. הנה מספר דוגמאות:

  • אם מספר טלפון מכיל תמיד 7 ספרות, מספרי הטלפון האפשריים הם מ-0000000 עד 9999999, כלומר יש לנו 10,000,000 (עשר מיליון) אפשרויות.
  • במדינת ישראל, אזורי חיוג מורכבים מהספרה 0 ואחריה ספרה נוספת, כלומר ייתכנו עשרה אזורי חיוג לכל היותר (00, 01, 02… עד 09, אם לא ניכנס לקידומות הסלולריות ואלה של ספקי התקשורת החדשים).
  • במחשבונים הפשוטים, ניתן להקליד עד שמונה ספרות, ולחשב מספרים עד 99999999. כל אחד מאיתנו זוכר ודאי שהקליד (לפחות פעם אחת) את המספר "12345678" למחשבון, וראה איך המסך הקטן מתמלא. אולי גם בצעתם את התרגיל הנועז, בו הקלדתם "99999999", לחצתם על "+", ואז "1", ולבסוף "=". מה קורה כשהמחשבון צריך להציג מספר בן תשע ספרות (100,000,000) אבל יש לו רק שמונה? המחשבונים הפשוטים מציגים פשוט "E", כלומר Error (שגיאה).

עד כמה יודע המחשב שלנו לספור?

סיביות – אבני הבניין

עד לפני שנים ספורות בלבד, היו רוב המחשבים האישיים בעלי מעבדים של 32 ביט, או סיביות. אין לכך שום קשר לתזונה – סיבית היא ראשי תיבות של סיפרה בינארית – בסיס הספירה בו עובד המחשב. זהו תרגום של BIT – Binary Digit. בני האדם סופרים בבסיס 10: יש לנו עשר ספרות – מ-0 עד 9, והמספר הבא מצריך אותנו לאפס את הספרה הימנית, לעבור לספרה משמאל, להגדיל אותה ב-1 ולקבל 10. באופן דומה, למחשב יש רק שתי ספרות: 0 ו-1. אחרי 1, הוא מאפס את ספרת האחדות, מגדיל את ספרת ה"עשרות" ב-1 ומקבל 10. המספרים הבאים הם 11, 100, 101, 110, 111, 1000. מאוד מוגבל, אבל אף אחד לא טען אף פעם שמחשבים הם יצורים אינטליגנטיים במיוחד.

מעבד של 32 סיביות יודע לעבוד עם מספרים בני 32 ספרות בינאריות, כלומר מספרים שבין 0 (או 00000000000000000000000000000000 כפי שהוא רואה זאת) ל-11111111111111111111111111111111. במספרים עשרוניים, מדובר במספרים בין 0 ל-4,294,967,295 (המחשב יודע גם לעבוד עם מספרים שליליים, ואפילו עם מספרים רציונליים – מספרים עם שברים, כמו 0.5 או 3.14. כדי להשאיר את ההסבר פשוט, נתעלם מהם בינתיים ונתרכז במספרים שלמים חיוביים).

בנוסף לצורך בייצוג של מספרים, למחשב יש צורך לגשת לזיכרון. כל תא בזיכרון מכיל 8 סיביות, הנקראות באנגלית byte ובעברית – בית. לכל בית בזיכרון יש כתובת מספרית – כתובתו של הבית הראשון היא 0, של הבית השני 1 וכן הלאה. מעבד 32 סיביות יכול לגשת ל-4,294,967,295 כתובות שונות.

סיפרה

חישבו על זה כך: נניח שעל מעטפות יש מקום לשתי ספרות עבור מספר הבית בכל כתובת. זאת אומרת, שניתן לכתוב על המעטפה כתובות בין 0 ל-99. זה בסדר גמור, כל עוד אתם רוצים לשלוח מכתב לחבצלת השרון מרחוב העוגן 6; אם אתרע מזלכם ואתם רוצים לשלוח מכתב לדודה שגרה ברחוב האגס 101, יש לכם בעיה – לא תוכלו לכתוב את הכתובת הזאת על המעטפה. באופן דומה, מחשב שהמעבד שלו יכול לספור רק עד 4 מיליארד (וקצת), יכול לגשת לכתובות בזיכרון שמספרן עד 4 מיליארד (וקצת), לא מעבר לכך.

בהתחלה, זאת לא היתה בעיה: למחשב עם מעבד 386 טיפוסי היו בדרך כלל 4 מגה-בתים של זיכרון, כלומר 4 כפול 1,048,576 (זהו הגודל של מגה-בית אחד. על שיטת הספירה המוזרה הזו נדבר בפעם אחרת). כדי לגשת לכל הכתובות בזיכרון, מחשב כזה היה צריך לדעת לספור עד 4 מיליון וקצת (4,194,303 ליתר דיוק) – לא בעיה עבור מחשב שיודע לספור עד 4 מיליארד. הבעיה התחילה כאשר זיכרונות נעשו זולים יותר, תוכנות דרשו זיכרון רב יותר, ובתגובה לשני האירועים הללו – מחשבים התחילו להגיע עם יותר ויותר זיכרון. מעבד 32 סיביות היה מסוגל לזהות 4 גיגה, כלומר בערך 4 מיליארד כתובות – אחרי 4,294,967,295 הוא פשוט היה מפסיק לספור. זאת הסיבה, שגם אם תתקינו 8 גיגה-בתים של זיכרון במחשב מסוג כזה, הוא "יראה" רק ארבעה מתוכם.

בחברות המעבדים (אינטל ו-AMD) הבינו את הבעיה, ומצאו פתרון אלגנטי: הם ייצרו מעבדים בעלי מספר כפול של סיביות – 64. עם 64 סיביות, המעבד יכול לספור עד 18,446,744,073,709,551,615. כדי שלא תצטרכו לשבור שיניים עם המספר, נגלה לכם שמדובר בשישה-עשר אקסבייט (exabyte).

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

 

 יש לך מה לומר?

ניתן להשתמש בתגי HTML הבאים: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(חובה)

(חובה)