שתף קטע נבחר

64 ביט - מה זה בעצם?

מה ההבדל בין מעבד 32 ל-64 ביט? כיצד עובד כל אחד מהם, ולמה זה טוב בכלל?

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

 

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

 

הסבר מורחב

 

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

 

רוב הקוד התכנותי שהמעבד מבצע מטופל על-ידי ה-ALU, מין "מנוע" שיודע להריץ את הפקודות הבסיסיות המרכיבות את "שפת המכונה" (x86 הוא הכינוי המקובל שלהן בעולם ה-PC). האוגרים (Registers), הם תאי זיכרון שצמודים לליבת המעבד, ומשמשים לאחסון זמני של כל המידע בו הוא מטפל: נתונים, כתובות זיכרון, ופקודות בשפת מכונה.

 

נניח שיש לנו מעבד 16 ביט, כמו 8086 החלוצי של אינטל, המידע בו המעבד מטפל הוא בינארי, לכן, 16 ביטים נותנים 2 בחזקת 16 צירופים, שהם 64KB. לכן, 8086 ידע לעבוד מול זיכרון בנפח מקסימלי של 64KB, לטפל במספרים שלמים בטווח שבין 32768- ל-32767 (בסך הכל מדובר ב-64K מספרים), ולעבד פקודות שיוצגו באמצעות 16 ביטים לכל היותר.

 

כמובן שעם נתוני פתיחה כאלה אי אפשר לעשות הרבה. כדי לעקוף את המגבלות, מעבדי x86 השתמשו במספר טכניקות. למשל, הם ידעו למפות זיכרון בנפח גדול באמצעות חלוקה לעמודים (Pages) בגודל 64KB כל אחד. או להתמודד עם מספרים גדולים ועם שברים שכוללים ספרות רבות מאחורי הנקודה, באמצעות הטכניקה הידועה כ"נקודה צפה" (Floating Point. המספר מורכב מ"בסיס" ו"מאריך", שבר עשרוני קטן ומספר שמציין באיזה חזקה של שתיים מכפילים אותו כדי לקבל את המספר המקורי).

 

קל להבין מדוע המעבר ממיחשוב ב-16 ביט למיחשוב 32 ביט, היה פורץ דרך. 32 ביט הם די והותר לניהול מרחב זיכרון של 4GB, והטיפול במספרים גדולים ובשברים הופך פשוט יותר. 32 ביט, לעיתים קרובות גם מספיקים כדי לאחסן את הפקודה ואת הנתון ברצף באותו אוגר.

 

סיכוי להגירה הדרגתית

 

המעבר ל-64 ביט בגישה של אינטל, היה הזדמנות ליישם את רעיון לו HP קראה בזמנו VLIW (או Very Long Instruction Word). תמצית הרעיון: לבנות פקודות מורכבות, שינצלו את האוגרים הרחבים יותר ויאפשרו לדחוס מספר גדול יותר של פעולות במחזור שעון. המודל של AMD64/EM64T הוא פשוט יותר, ויתרונו בעיקר בכך שהוא מאפשר לאותו מעבד לתמוך גם בפקודות 32 ביט וגם ב-64 ביט, ולחסוך את הצורך בהרצת אמולציה מגבילה כדי לקבל תמיכת 32 ביט.

 

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

 

לפנייה לכתב/ת
 תגובה חדשה
הצג:
אזהרה:
פעולה זו תמחק את התגובה שהתחלת להקליד
מומלצים