X86

מעבדי 386 ו־486 של אינטל
x86 היא ארכיטקטורת פקודות והוראות (ISA) למעבדים המבוססת על המעבד 8086 של אינטל. נכון להיום, מעבדים המבוססים על ארכיטקטורת x86 והרחבתה (x64, ובשמה הנוסף AMD-64) הם הנפוצים ביותר במחשבים שולחניים־ביתיים, מחשבים ניידים, ושרתים.

==היסטוריה==
ארכיטקטורת x86 הופיעה לראשונה במעבד 8086 בשנת 1978. מעבד ה־8086 החליף את המעבד הקודם, אינטל 8080 (שבעצמו החליף את מעבדי אינטל 4004 ו־8008). בזכות בחירתו של ה־8086 על ידי IBM כמעבד של המחשב האישי הראשון מתוצרתה, הפכה ארכיטקטורת x86 לנמכרת והמצליחה ביותר בשוק המעבדים.

שמה של ארכיטקטורת x86 הורחב פעמיים. בשנת 1985, אינטל הוציאה לשוק המעבדים את המעבד 386 (32 ביט) כדי שיחליף את ה־286 (16 ביט), שהיה נפוץ באותה תקופה. שבבי ה־486 תפסו את מקומם של שבבי ה־386 בשנת 1989. בשנת 1993 החליטה אינטל לנטוש את שיטת השמות הישנה, וקראה לדור 
החדש בשם המסחרי "פנטיום", במקום 586, לאחר שגילתה כי לא ניתן לרשום מספר כסמל מסחרי. מספר דורות של שבבים נקראו בשם המותג פנטיום (פנטיום פרו, פנטיום II ופנטיום D), ומאז הוסיפה אינטל גם את המותגים סלרון (Celeron) ו־Core 2 למשפחת ה־x86. 

הרחבות ותוספות רבות חוברו ל־x86 לאורך השנים, כמעט תמיד עם תמיכה לאחור. הארכיטקטורה יושמה במעבדים של יצרני מעבדים רבים כגון: Intel, Cyrix, AMD, VIA ועוד.

מלבד אינטל, חברות רבות יצרו מעבדים מארכיטקטורת ה־x86 ובהן: Cyrix, NEC Corporation, IBM, IDT, Transmeta.

החברה המצליחה ביותר מבין החברות המתחרות באינטל ליצור מעבד בארכיטקטורה זו הייתה AMD כשהציגה את סדרת את'לון, סדרה זו לא הייתה נפוצה כמו הפנטיום אך על־פי מחקר שנערך בשנת 2006 מכירותיה של AMD בשוק המחשבים הביתיים עלו על אלו של אינטל. בשנת 2003 הציגה AMD את מעבד האת'לון 64 (Athlon 64) בעל ארכיטקטורת x64, אשר מרחיבה ותומכת לאחור ב־x86, ונקראת בשפה המקצועית EM64T, AMD64 או x86-64.

בשנת 2001 הוציאה אינטל לשוק את מעבדי האיטניום, התומכים בארכיטקטורת 64 ביט, בשם המסחרי IA-64.

== האוגרים בארכיטקטורת x86 ==
ארכיטקטורת x86 מיישמת מספר אוגרים. חלק מהאוגרים מורכב בצורה מבנית מיוחדת כך שכאשר אוגר מסוים, למשל EAX, שווה לערך H 78563412 (ספירה הקסדצימלית), AX ישקף את המילה התחתונה של EAX ויהיה שווה ל־3412, ה־AH (מ־High) ישקף את הבית הגבוה של AX ויהיה שווה ל־34, וה־AL (מ־Low) ישקף את הבית הנמוך של AX ויהיה שווה ל־12:

{| border="1" cellspacing="0" cellpadding="2"
|-
| width="40" align="center" | 12
| width="40" align="center" | 34
| width="40" align="center" | 56
| width="40" align="center" | 78
|-
| bgcolor="#f7f7f7" align="center" | AL
| bgcolor="#f7f7f7" align="center" | AH
| bgcolor="#dddddd" colspan="2" align="center" | -
|-
| bgcolor="#f7f7f7" colspan="2" align="center" | AX
| bgcolor="#dddddd" colspan="2" align="center" | -
|-
| bgcolor="#f7f7f7" colspan="4" align="center" | EAX
|}

להלן האוגרים הקיימים בכל מעבדי אינטל תואמי־x86:
{| border="1" cellspacing="0" cellpadding="2"
|-
! bgcolor="#eeeeee" width="40" | אוגר
! bgcolor="#eeeeee" width="150" | תפקיד
! bgcolor="#eeeeee" width="100" | סוג
! bgcolor="#eeeeee" width="60" | חלק תחתון
! bgcolor="#eeeeee" width="60" | חלק עליון
! bgcolor="#eeeeee" width="60" | גרסת 32 סיביות
|-
| align="center" rowspan="2" | AX
| align="center" | צובר – Accumulator
| align="center" | אוגר נתונים
| align="center" | AL
| align="center" | AH
| align="center" | EAX
|-
| bgcolor="#f7f7f7" colspan="5" | האוגר הפעיל ביותר, עליו נערכות הרבה מהפעולות האריתמטיות.
|-
| align="center" rowspan="2" | BX
| align="center" | בסיס – Base
| align="center" | אוגר רב־תכליתי
| align="center" | BL
| align="center" | BH
| align="center" | EBX
|-
| bgcolor="#f7f7f7" colspan="5" | משמש לאחסון כללי, אך במיוחד לפנייה לאזורים בזיכרון, כשמקטע ברירת המחדל שלו הוא DS.
|-
| align="center" rowspan="2" | CX
| align="center" | מונה – Counter
| align="center" | אוגר נתונים
| align="center" | CL
| align="center" | CH
| align="center" | ECX
|-
| bgcolor="#f7f7f7" colspan="5" | משמש לאחסון כללי, אך במיוחד כמונה חזרות לפקודות מסוימות.
|-
| align="center" rowspan="2" | DX
| align="center" | נתונים – Data
| align="center" | אוגר נתונים
| align="center" | DL
| align="center" | DH
| align="center" | EDX
|-
| bgcolor="#f7f7f7" colspan="5" | משמש לאחסון כללי.
|-
| align="center" rowspan="2" | SI
| align="center" | אינדקס מקור – Source Index
| align="center" | אוגר כתובת
| align="center" | -
| align="center" | -
| align="center" | ESI
|-
| bgcolor="#f7f7f7" colspan="5" | משמש כמצביע לאזור בזיכרון אשר יהווה מקור לפעולות זיכרון מסוימות. פועל לרוב מול מקטע DS.
|-
| align="center" rowspan="2" | DI
| align="center" | אינדקס יעד – Destination Index
| align="center" | אוגר כתובת
| align="center" | -
| align="center" | -
| align="center" | EDI
|-
| bgcolor="#f7f7f7" colspan="5" | משמש כמצביע לאזור בזיכרון אשר יהווה יעד לפעולות זיכרון מסוימות. פועל לרוב מול מקטע ES.
|-
| align="center" rowspan="2" | BP
| align="center" | מצביע בסיס המחסנית – Stack Frame Base Pointer
| align="center" | אוגר כתובת
| align="center" | -
| align="center" | -
| align="center" | EBP
|-
| bgcolor="#f7f7f7" colspan="5" | משמש גישה מהירה ומבוקרת למידע הנמצא במחסנית. פועל לרוב מול מקטע SS.
|-
| align="center" rowspan="2" | SP
| align="center" | מצביע המחסנית – Stack Pointer
| align="center" | אוגר אינדקס
| align="center" | -
| align="center" | -
| align="center" | ESP
|-
| bgcolor="#f7f7f7" colspan="5" | עוקב אוטומטית אחר המיקום האחרון במחסנית.
|-
| align="center" rowspan="2" | CS
| align="center" | מקטע הקוד – Code Segment
| align="center" | אוגר אינדקס
| align="center" | -
| align="center" | -
| align="center" | -
|-
| bgcolor="#f7f7f7" colspan="5" | מצביע למקטע בזיכרון בו נמצא הקוד הנוכחי. עובד מול IP.
|-
| align="center" rowspan="2" | DS
| align="center" | מקטע הנתונים – Data Segment
| align="center" | אוגר אינדקס
| align="center" | -
| align="center" | -
| align="center" | -
|-
| bgcolor="#f7f7f7" colspan="5" | מצביע למקטע בזיכרון המכיל את הנתונים של התוכנה.
|-
| align="center" rowspan="2" | ES
| align="center" | מקטע מוסף – Extra Segment
| align="center" | אוגר אינדקס
| align="center" | -
| align="center" | -
| align="center" | -
|-
| bgcolor="#f7f7f7" colspan="5" | מצביע מוסף לפנייה לאזורי זיכרון אחרים.
|-
| align="center" rowspan="2" | SS
| align="center" | מקטע המחסנית – Stack Segment
| align="center" | אוגר אינדקס
| align="center" | -
| align="center" | -
| align="center" | -
|-
| bgcolor="#f7f7f7" colspan="5" | מצביע למקטע בזיכרון המכיל את המחסנית.
|-
| align="center" rowspan="2" | IP
| align="center" | המצביע לפקודה – Instruction Pointer
| align="center" | אוגר מיוחד
| align="center" | -
| align="center" | -
| align="center" | EIP
|-
| bgcolor="#f7f7f7" colspan="5" | מצביע לאזור בזיכרון בו נמצאת הפקודה הבאה לביצוע. לא ניתן לשנות או לקרוא אותו ישירות.
|}

עם כניסת ה־386 הוספו לארכיטקטורה עוד שני אוגרי מקטע:

{| border="1" cellspacing="0" cellpadding="2"
|-
| width="40" align="center" rowspan="2" | FS
| width="150" align="center" | מקטע מוסף
| width="100" align="center" | אוגר אינדקס
| width="60" align="center" | -
| width="60" align="center" | -
| width="60" align="center" | -
|-
| bgcolor="#f7f7f7" colspan="5" | 
|-
| align="center" rowspan="2" | GS
| align="center" | מקטע מוסף
| align="center" | אוגר אינדקס
| align="center" | -
| align="center" | -
| align="center" | -
|-
| bgcolor="#f7f7f7" colspan="5" | 
|}

== ראו גם ==
* x86-64
* מונחים בחומרה

==קישורים חיצוניים==

==הערות שוליים==

קטגוריה:חומרה
קטגוריה:מעבד