אינטל 8080

אינטל 8080 () היה המיקרו־מעבד השני של אינטל בארכיטקטורת 8 סיביות. הוא הושק באפריל 1974 כממשיכו המשופר של אינטל 8008, אם כי ללא תאימות בינארית  עמו. בתחילה נועד לשימוש במערכת משובצת מחשב כגון מחשבונים, קופות רושמות, מסופי מחשב ורובוטים תעשייתיים, אך הביצועים המרשימים שלו הובילו לאימוצו גם במחשבים מוקדמים – וסייעו לפתיחת עידן המחשוב האישי.

בשונה מקודמיו – ה־4004 וה־8008 – שפותחו בהתאמה לדרישות ייעודיות של לקוחות ספציפיים (כמו ביזיקום ו־CTC), ה־8080 היה יוזמה פנימית של אינטל עצמה. כתוצאה מכך, החברה הייתה חופשית לשווק אותו לכל דורש, ללא מגבלות חוזיות או מסחריות, מה שתרם במידה רבה להפצתו הנרחבת.

לצד יתרון השיווק החופשי, המעבד החדש הציג שיפורים טכנולוגיים מרשימים לעומת קודמיו. הוא יוצר בטכנולוגיית NMOS, שאפשרה לו לפעול במהירויות גבוהות יותר ולהתממשק בקלות לרכיבי TTL  שהיו נפוצים בתעשייה. המעבר למארז של 40 פינים (לעומת 16 ב־4004 ו־18 ב־8008) הקל על חיבורו להתקנים חיצוניים. כמו כן, סט הפקודות הורחב, נוספו אופני מעינה חדשים, ורוחב אפיק הכתובת הוגדל ל־16 סיביות – מה שאִפשר גישה ל־64KB של זיכרון, פי ארבעה מה־8008, שהוגבל ל־16KB בלבד. שבבים מסייעים, כמו 8224 (יוצר תזמון) ו־8228 (בקר אפיק), שִפרו את ניהול התזמון ואת העברת הנתונים. את שיפורים אלו, רבים מהם תולדה של משוב ממשתמשים, ביצעו מהנדסי אינטל ובראשם פדריקו פַג'ין .

הצלחה משמעותית נוספת של ה־8080 נבעה מהיותו המעבד שנבחר למחשב האישי הראשון שזכה להכרה רחבה – Altair 8800. סביב מעבד זה נכתבה גם מערכת ההפעלה CP/M, שהפכה לתקן בקרב מיקרו־מחשבים בשנים הראשונות של התעשייה. שילוב זה הפך את ה־8080 לחלק בלתי נפרד ממהפכת המחשוב הביתי.

השפעתו של ה־8080 חרגה מעבר לדורו. הצלחתו הביאה לכך שגם הדור הבא של מעבדים נבנה בתאימות אליו: ה־Z80 של חברת זילוג, שפיתחו פג'ין ומסטושי שימה  לאחר שעזבו את אינטל, שמר על תאימות לאחור ל־8080. גם אינטל עצמה, כאשר החלה לפתח את ה־8086 בשנת 1976, שמרה על תאימות חלקית לפקודותיו – מה שאִפשר להריץ קוד ישן על חומרה חדשה. בדרך זו, השפיע ה־8080 ישירות על תכנון ארכיטקטורת x86, שהמשיכה לשלוט בשוק במשך עשרות שנים לאחר מכן.

במהלך השנים הוצגו מספר גרסאות של ה־8080, ביניהן דגמים מהירים יותר כמו 8080A-1 ו־8080A-2 שפעלו בקצבים של עד 3.125 מגה־הרץ. בשנת 1976 השיקה אינטל את ה־8085, גרסה מתקדמת של ה־8080 שהתבססה על טכנולוגיית ייצור חדשה. אחד החידושים הבולטים בגרסה זו היה שהמעבד נזקק למתח הפעלה אחד בלבד של 5 וולט, במקום שלושה מתחים שונים שנדרשו עבור ה־8080: -5 V, 5 V ו־12 V. שינוי זה פישט את תכנון המערכת וחסך בעלויות. בנוסף, ה־8085 תמך בקצבי שעון גבוהים יותר, והכיל שתי פקודות חדשות שהוסיף סטנלי מזור (Stanley Mazor). אף על פי שדגם זה שופר מבחינה טכנית, הוא הגיע לשוק לאחר שה־Z80 של זילוג כבר ביסס את מעמדו, ואינטל איבדה את הבכורה בשוק מעבדי ה־CP/M. אינטל חזרה להוביל רק עם הדור הבא – ה־8086 – שהציע שיפורים משמעותיים, ובהם סט פקודות מורחב, תוספת אוגרים, קצבי שעון גבוהים יותר, ובעיקר אפיק כתובת בן 20 סיביות, שאִפשר גישה למגה־בייט שלם של זיכרון – פי 16 ממה שאִפשרו ה־8080 וה־Z80.

 היסטוריה 
המיקרו מעבד אינטל 8008 של אינטל נתקל בהתנגדות מצד לקוחות עקב מגבלות כמו אופן מעינה בודד, קצב שעון נמוך, מספר פינים מצומצם ומחסנית פנימית קטנה – תכונות שהגבילו את יכולות התוכנה שהיה ניתן להריץ עליו. מספר תכנונים הוצעו לשבב הבא, החל מתוספות קטנות ל־8008 ועד שינויים שורשיים בארכיטקטורה. התוצאה הסופית הייתה פשרה בין ההצעות.

העבודה על אינטל 8080 החלה בקיץ 1971, כשפיתוח האינטל 4004 הסתיים וה־8008 היה עדיין בפיתוח. באותה תקופה, לאחר שנפוצו השמועות על "מעבד על שבב", החלה להתעורר התעניינות גוברת במיקרו מעבדים. פדריקו פג'ין, מתכנן ה־4004, העביר הרצאות וביקר אצל לקוחות, ששיתפו אותו בתסכוליהם מהביצועים של ה־8008 ומהארכיטקטורה שלו, במיוחד בשל קצב השעון האיטי (0.5 מגה־הרץ) שלו.

באביב 1972 פג'ין הציע את השבב החדש להנהלת אינטל – אך להפתעתו ולמרבה תסכולו, ההצעה נדחתה. אינטל העדיפה לראות קודם את תגובת השוק ל־4004 ול־8008. רק בסתיו אושר הפרויקט. בנובמבר של אותה שנה גייס פג'ין את מסטושי שימה מיפן, שעבד איתו על תכנון ה־4004, והטיל עליו את תכנון הלוגיקה של ה־8080. שימה עבד בשיטה שפג'ין פיתח, אשר השתמשה בלוגיקה מבוססת שערי סיליקון.

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

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

שימה השלים את תכנון השבב באוגוסט 1973, וייצורו החל בדצמבר. אב־טיפוס הושלם בינואר 1974, אך סבל מבעיות אלקטרוניות – הפעלה באמצעות התקני TTL סטנדרטיים העלתה את מתח הקרקע, משום שזרם גבוה זרם דרך מוליך צר. אינטל כבר ייצרה 40,000 יחידות כשהבעיה התגלתה. לאחר תיקון התקלות, הוצג השבב רשמית במרץ 1974. גרסת 8080A הוצגה זמן קצר לאחר מכן, וגם בה התקלה תוקנה.

אינטל סיפקה סימולטור בשם INTERP/80 להרצת תוכניות PL/M  על ה־8080, אותו כתב גארי קילדל בפורטרן IV. קיים פטנט אחד בלבד על ה־8080 שרשום על שם פג'ין, שימה ומזור.

 תיאור 
 מודל תכנות 

+ אוגרים באינטל 8080 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 (מקום סיביות) אוגרים ראשיים  Flags A מילת מצב התוכנית (PSW) C B B E D D L H H (כתובת עקיפה) אוגרי אינדקס  SP מצביע המחסנית מונה התוכנית  PC מונה התוכנית אוגר הדגלים C 1 P 0 AC 0 Z S דגלים

ה־8080 של אינטל מבוסס על הארכיטקטורה של האינטל 8008, אך אינו תואם לה, לא מבחינת קוד מקור ולא מבחינת קוד בינארי. אף על פי שיש דמיון במבנה האוגרים ובגישה לפקודות, ה־8080 מוסיף שיפורים משמעותיים, כמו מיעון אמיתי של 16 סיביות, המאפשר גישה ל־64 קילו־בייט של זיכרון – לעומת 14 סיביות בלבד ב־8008. בנוסף, הוא מחליף את מחסנית הקריאות הפנימית של 7 רמות ב־8008 במצביע מחסנית (SP) בגודל 16 סיביות שמצביע לזיכרון חיצוני.

ה־8080 מגיע במארז של 40 פינים, דבר שמאפשר אפיק כתובת ברוחב של 16 סיביות ואפיק נתונים ברוחב של 8 סיביות.

 אוגרים 
למעבד יש שבעה אוגרים כלליים בגודל 8 סיביות: A (הצובר הראשי), B, C, D, E, H ו־L. ניתן להשתמש בהם כאוגרים בודדים, או בזוגות (BC, DE ו־HL) בגודל 16 סיביות. הזוג HL יכול לשמש גם כצובר בגודל 16 סיביות במקרים מסוימים. בנוסף, ישנו אוגר מדומה בשם M, המייצג את התא בזיכרון שאליו מצביע HL, וניתן להשתמש בו ברוב הפקודות.

בנוסף, המעבד כולל מונה תוכנית (PC) בגודל 16 סיביות, ומצביע מחסנית (SP) בגודל 16 סיביות.

 דגלים 
למעבד יש אוגר־מצב פנימי שמכיל דגלים המצביעים על תוצאות של פעולות אריתמטיות ולוגיות. הדגלים הם:
 דגל הסימן (S) – דלוק אם התוצאה שלילית.
 דגל האפס (Z) – דלוק אם התוצאה היא אפס.
 דגל הזוגיוּת (P) – דלוק אם מספר הסיביות הדלוקות בתוצאה זוגי.
 דגל הנֶשֶׂא (C) – דלוק אם הייתה נשיאה בחיבור או השאלה בחיסור.
 דגל חצי־נֶשֶׂא (AC – Auxiliary Carry) – משמש בחישובי BCD (עשרוני בקידוד בינארי).

הצובר והדגלים יחד נקראים PSW (program status word – מילת מצב התוכנית), וניתן לדחוף אותם למחסנית או לשלוף אותם ממנה.

 פקודות 
כמו ברבים ממעבדי ה־8 סיביות האחרים, כל הפקודות מקודדות בבייט יחיד (כולל מספרי אוגרים, אך לא כולל נתונים מיידיים), לצורך פשטות. לחלק מהפקודות יכולים להתלוות בייט אחד או שניים של נתונים, שיכולים להיות נתונים מיידיים, כתובת זיכרון או מספר פורט (port). בדומה למעבדים מתקדמים יותר, ישנן פקודות קריאה וחזרה אוטומטיות (CALL ו־RET, בהתאמה) לקריאות מרובות רמות לתת־שגרות ולחזרה מהן (ניתן אף לבצע אותן באופן מותנה, כמו קפיצות), וכן פקודות לשמירה ולשחזור של כל זוג אוגרים בגודל 16 סיביות במחסנית (PUSH ו־POP, בהתאמה).

עבור תת־שגרות, קיימות שמונה פקודות קריאה בגודל בייט אחד (RST – קיצור של restart), בכתובות קבועות: 00h, 08h, 10h, ..., 38h. פקודות אלה מיועדות להפעלה על ידי חומרה חיצונית כדי לקרוא לשגרת שירות פסיקה מתאימה, אך משמשות לעיתים קרובות גם כקריאות מערכת מהירות. הפקודה הארוכה ביותר מבחינת זמן ריצה היא XTHL, אשר מחליפה בין זוג האוגרים HL לבין הערכים השמורים בכתובת שעליה מצביע המחסנית (SP) מצביע.

 פקודות 8 סיביות 
כל פעולות ה־8 סיביות עם שני אופרנדים יכולות להתבצע רק על הצובר (אוגר A). האופרנד השני יכול להיות ערך מיידי, אוגר 8 סיביות אחר, או בייט זיכרון שכתובתו נמצאת בזוג האוגרים HL. ניתן לבצע פעולות הוספה והפחתה (על ידי INX ו־DCX, בהתאמה) על כל אוגר 8 סיביות או על בייט זיכרון שכתובתו נמצאת ב־HL. ניתן להעתיק מידע באופן ישיר בין כל שני אוגרים בגודל 8 סיביות, וכן בין כל אוגרי 8 סיביות לבין בייט בזיכרון שכתובתו נמצאת ב־HL. בגלל מבנה הקידוד של הפקודה MOV (שתופסת רבע מהמרחב האפשרי של קודי הפעולות), קיימים קודי פעולה מיותרים שמעתיקים אוגר לתוך עצמו (למשל MOV B,B), אשר כמעט אינם שימושיים, פרט לצורך עיכובים זמניים בפעולת המעבד. עם זאת, הקוד הספציפי שהיה אמור לייצג את הפקודה MOV M,M משמש במקום זאת לקידוד הפקודה HLT, אשר עוצרת את ביצוע כל ההוראות עד לקבלת איפוס חיצוני או פסיקה.

 פקודות 16 סיביות 
אף על פי שה־8080 הוא מעבד של 8 סיביות בעיקרון, יש לו יכולות מוגבלות לביצוע פעולות על נתוני 16 סיביות. כל אחד משלושת זוגות האוגרים בגודל 16 סיביות (BC, DE או HL — המתוארים במסמכי אינטל כ־B, D ו־H, בהתאמה), או SP, יכולים להיטען בערך מיידי בגודל 16 סיביות (באמצעות פקודת LXI), להגדיל או להפחית את ערכם (באמצעות INX ו־DCX, בהתאמה), או להתווסף ל־HL (באמצעות פקודת DAD). על ידי הוספת HL לעצמו (הכפלה ב־2), ניתן לקבל את אותו אפקט כמו הזזה אריתמטית שמאלית על נתוני 16 סיביות, וזאת באמצעות פקודה אחת. הפקודה היחידה בגודל 16 סיביות שמשפיעה על דגלים היא DAD, אשר מגדירה את דגל הנשא (C), כדי לאפשר חישוב מספרים בגודל 24 או 32 סיביות (או יותר) באמצעות סדרת פקודות, הנדרשת לצורך מימוש אריתמטיקת נקודה צפה.

ניתן להעתיק את BC, DE ו־HL או את PSW למחסנית ולהפך, באמצעות הפקודות PUSH ו־POP. כדי להקצות מסגרת מחסנית, ניתן להוסיף היסט ל־SP באמצעות הפקודה DAD, ולאחר מכן לעדכן את SP לערך החדש באמצעות הפקודה SPHL. קפיצה לכתובת מחושבת מתבצעת על ידי הפקודה PCHL. הפקודה LHLD טוענת נתונים ל־HL מזיכרון בכתובת ישירה, ו־SHLD שומרת את HL בזיכרון באותו אופן. הפקודה XCHG מחליפה בין הערכים של זוגות האוגרים HL ו־DE. הפקודה XTHL מחליפה בין HL לבין הערך האחרון שנדחף למחסנית. אף אחת מהפקודות הללו לא נתמכה במעבד הקודם אינטל 8008.

 סט פקודות 
 קוד פעולה  אופרנדים  שם  מחזורי שעון  תיאור 0  1  2  3  4  5  6  7  b2  b3 0  0  0  0  0  0  0  0  —  —  NOP  4  פקודת סרק (המעבד לא עושה כלום) 1  0  0  0 RP  0  0  datlo  dathi  LXI rp,data  10  RP ← data 1  0  0  0 RP  0  0  —  —  STAX rp  7   1  0  0  0 RP  0  0  —  —  INX rp  5  RP ← RP + 1 0  0  1 DDD  0  0  —  —  INR ddd  5/10  DDD ← DDD + 1 1  0  1 DDD  0  0  —  —  DCR ddd  5/10  DDD ← DDD - 1 0  1  1 DDD  0  0  data  —  MVI ddd,data  7/10  DDD ← data 1  0  0  1 RP  0  0  —  —  DAD rp  10  HL ← HL + RP 0  1  0  1 RP  0  0  —  —  LDAX rp  7   1  1  0  1 RP  0  0  —  —  DCX rp  5  RP ← RP - 1 1  1  1  0  0  0  0  0  —  —  RLC  4  A1-7 ← A0-6; A0 ← Cy ← A7 1  1  1  1  0  0  0  0  —  —  RRC  4  A0-6 ← A1-7; A7 ← Cy ← A0 1  1  1  0  1  0  0  0  —  —  RAL  4  A1-7 ← A0-6; Cy ← A7; A0 ← Cy 1  1  1  1  1  0  0  0  —  —  RAR  4  A0-6 ← A1-7; Cy ← A0; A7 ← Cy 0  1  0  0  0  1  0  0  addrlo  addrhi  SHLD addr  16   1  1  1  0  0  1  0  0  —  —  DAA  4  אם A0-3 > 9 או AC = 1 אז A ← A + 6;
אז אם A4-7 > 9 או Cy = 1 אז A ← A + 0x60 0  1  0  1  0  1  0  0  addrlo  addrhi  LHLD addr  16  HL ← (addr) 1  1  1  1  0  1  0  0  —  —  CMA  4  A ← ¬A 0  1  0  0  1  1  0  0  addrlo  addrhi  STA addr  13   1  1  1  0  1  1  0  0  —  —  STC  4  Cy ← 1 0  1  0  1  1  1  0  0  addrlo  addrhi  LDA addr  13  A ← (addr) 1  1  1  1  1  1  0  0  —  —  CMC  4  Cy ← ¬CySSS DDD  1  0  —  —  MOV ddd,sss 5/7  DDD ← SSS 0  1  1  0  1  1  1  0  —  —  HLT  7  השהיית פעולת המעבדSSS ALU  0  1  —  —  ADD ADC SUB SBB ANA XRA ORA CMP sss  4/7  A ← A [ALU] SSS 0  0  0 CC  1  1  —  —  Rcc (פקודת RET מותנית)  5/11  אם התנאי cc מתקיים, PC ← (SP), SP ← SP + 2 1  0  0  0 RP  1  1  —  —  POP rp  10  RP ← (SP), SP ← SP + 2 0  1  0 CC  1  1  addrlo  addrhi  Jcc addr (פקודת JMP מותנית)  10  אם התנאי cc מתקיים, PC ← addr 1  1  0  0  0  0  1  1  addrlo  addrhi  JMP addr  10  PC ← addr 0  0  1 CC  1  1  addrlo  addrhi  Ccc addr (פקודת CALL מותנית)  11/17  אם התנאי cc מתקיים, SP ← SP - 2, (SP) ← PC, PC ← addr 1  0  1  0 RP  1  1  —  —  PUSH rp  11  SP ← SP - 2, (SP) ← RP 0  1  1 ALU  1  1  data  —  ADI ACI SUI SBI ANI XRI ORI CPI data  7  A ← A [ALU] data 1  1  1 N  1  1  —  —  RST n  11  SP ← SP - 2, (SP) ← PC, PC ← N × 8 1  0  0  1  0  0  1  1  —  —  RET  10  PC ← (SP), SP ← SP + 2 1  0  1  1  0  0  1  1  addrlo  addrhi  CALL addr  17  SP ← SP - 2, (SP) ← PC, PC ← addr 1  1  0  0  1  0  1  1  port  —  OUT port  10  Port ← A 1  1  0  1  1  0  1  1  port  —  IN port  10  A ← Port 1  1  0  0  0  1  1  1  —  —  XTHL  18  HL ↔ (SP) 1  0  0  1  0  1  1  1  —  —  PCHL  5  PC ← HL 1  1  0  1  0  1  1  1  —  —  XCHG  4  HL ↔ DE 1  1  0  0  1  1  1  1  —  —  DI  4  השבתת פסיקות 1  0  0  1  1  1  1  1  —  —  SPHL  5  SP ← HL 1  1  0  1  1  1  1  1  —  —  EI  4  אִפשור פסיקות 0  1  2  3  4  5  6  7  b2  b3  שם  מחזורי שעון  תיאור

 קידוד לאוגרים, פקודות ALU, קודי תנאי וזוגות אוגרים בארכיטקטורת אינטל 8080 0  1  1 SSS DDD CC ALURP 0  0  0  B  NZ ADD ADI (A ← A + arg) BC 1  0  0  C  Z ADC ACI (A ← A + arg + Cy) DE 0  1  0  D  NC SUB SUI (A ← A - arg) HL 1  1  0  E  C SBB SBI (A ← A - arg - Cy) SP או PSW 0  0  1  H  PO ANA ANI (A ← A ∧ arg) 1  0  1  L  PE XRA XRI (A ← A ⊻ arg) 0  1  1  M  P ORA ORI (A ← A ∨ arg) 1  1  1  A  N CMP CPI (A - arg) 0  1  2 SSS DDD CC ALU

 מערכת קלט/פלט 
 מרחב פורטי קלט/פלט 
ה־8080 תומך ב־256 פורטי קלט/פלט נפרדים, הנגישים דרך הפקודות הייעודיות IN ו־OUT שבהן כתובת הפורט ניתנת כאופרנד. יתרון שיטה זו הוא שהיא מפרידה בין תקשורת עם התקני חיצוניים לבין גישה לזיכרון, ושומרת את כל מרחב הכתובות המוגבל של המעבד – 64 קילו־בייט – עבור זכרונות ה־RAM וה־ROM.

בשונה ממערכות המשתמשות ב־I/O ממופה זיכרון (Memory-Mapped I/O), שבהן נעשה שימוש באותו מרחב כתובות הן עבור זכרונות ה־RAM וה־ROM והן עבור התקני הקלט/פלט, ה־8080 מונע התנגשות באמצעות מרחב נפרד, מה שמקל על תכנון חומרה. חיסרון שיטה זאת הוא שלעיתים יש צורך בחומרה מיוחדת שתוסיף מצבי המתנה (wait states), מאחר שהתקני קלט/פלט לרוב איטיים יותר מהזיכרון.

על אף שיש ל־8080 פקודות ייעודייות ל־I/O, בחלק ממחשבי ה־8080 הפשוטים, התקני הקלט/פלט כן ממופים כזיכרון, כלומר מטופלים כאילו היו תאי זיכרון רגילים, ופקודות הקלט/פלט הייעודיות אינן בשימוש.

במהלך פקודות I/O, המעבד מציב את כתובת הפורט (8 סיביות) הן על הבייט הגבוה והן על הבייט הנמוך של אפיק הכתובת (למשל, IN 05h תגרום להצבת הכתובת 0505h), ותכונה זו משמשת לעיתים בתכנון חומרה.

גישה זו נפוצה גם במעבדים בעלי תאימות לאחור ל־8080, כגון אינטל 8085 , זילוג Z80 וארכיטקטורת x86.

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

 מילת מצב 
בתחילת כל מחזור מכונה, ה־8080 מוציא דרך אפיק הנתונים בייט מצב בגודל 8 סיביות. בייט זה מציין אם מדובר בגישה לזיכרון או להתקן קלט/פלט, ואם הפעולה הנוכחית שייכת לטיפול בפסיקה.

בנוסף, מצב מערכת הפסיקות (פסיקות מאופשרות או מושבתות) מועבר דרך פין ייעודי (INTA). במערכות פשוטות שלא משתמשות בפסיקות, נעשה לעיתים שימוש בפין זה כפלט כללי – לדוגמה, במחשב הסובייטי Radio-86RK.

 פסיקות 
על מנת לגרום לפסיקה, התקן חומרה חיצוני מפעיל את הפין INT של המעבד; בתגובה, כאשר מתחיל מחזור הפקודה הבא, המעבד נכנס למצב INTA (Interrupt Acknowledge – אישור פסיקה), ובשלב זה ההתקן החיצוני מציב פקודה (בדרך כלל RST או CALL) על אפיק הנתונים.

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

 דוגמה לקוד 
הקוד הבא בשפת אסמבלי עבור המעבדים 8080/8085 מגדיר תת-שגרה בשם memcpy, שתפקידה להעתיק בלוק של בייטים מנקודה אחת בזיכרון לנקודה אחרת. ההעתקה מתבצעת בייט אחר בייט, תוך שימוש בפעולות של 16 סיביות לצורך ניהול ההעברה והלולאה.

1000
1000
1000 78
1001 B1
1002 C8
1003 1A
1004 77
1005 13
1006 23
1007 0B
1008 78
1009 B1
100A C2 03 10
100D C9; memcpy --
; Copy a block of memory from one location to another.
;
; Entry registers
; BC - Number of bytes to copy
; DE - Address of source data block
; HL - Address of target data block
;
; Return registers
; BC - Zero

 org 1000h ;Origin at 1000h
memcpy public
 mov a,b ;Copy register B to register A
 ora c ;Bitwise OR of A and C into register A
 rz ;Return if the zero-flag is set high.
loop: ldax d ;Load A from the address pointed by DE
 mov m,a ;Store A into the address pointed by HL
 inx d ;Increment DE
 inx h ;Increment HL
 dcx b ;Decrement BC (does not affect Flags)
 mov a,b ;Copy B to A (so as to compare BC with zero)
 ora c ;A = A | C (are both B and C zero?)
 jnz loop ;Jump to 'loop:' if the zero-flag is not set.
 ret ;Return

 שימוש בפינים 
ממוזער|300px|סידור הפינים של ה־8080

ה־8080 כולל אפיק כתובת (16 פינים) ואפיק נתונים (8 פינים) נפרדים, ללא צורך בריבוב, כלומר כל הסיביות של הנתונים (8 סיביות) ושל הכתובת (16 סיביות) נמצאות בו זמנית על האפיקים. בעזרת פיני קריאה (DBIN) וכתיבה (), ניתן לבנות מערכות פשוטות ללא לוגיקה מורכבת. חומרה נוספת נדרשת רק לתכונות כמו מרחב I/O נפרד, פסיקות או DMA.

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

המעבד דורש שלושה מקורות מתח: ,  ו־, וכן שני אותות שעון בעלי משרעות גדולות, ושאינם חופפים. הגרסה הסובייטית של ה־8080 (КР580ВМ80А) פעלה באמצעות מתח של  בלבד, כאשר פין  מחובר ל־ ופין  לאדמה.

טבלת הפינים, מהתיעוד הנלווה לשבב, מתארת את הפינים כדלקמן:

  מספר פין
  אות
  סוג
  הערה
   1  A10
  פלט  סיבית 10 של אפיק הכתובת
   2  GND
  —  אדמה
   3  D4
  דו־כיווני
 אפיק נתונים דו-כיווני. המעבד גם משדר את "מצב המעבד" כאשר SYNC וגם φ1 דלוקים, ומספק מידע על פעולת המעבד כרגע:
 D0 (INTA) – המעבד קורא פקודת פסיקה. בתגובה לאות פסיקה, המעבד קורא ומבצע פקודה בודדת שרירותית ומניף דגל זה. בדרך כלל, שבבים נלווים מספקים את פקודת הקריאה לתת-שגרה (RST או CALL), שמעבירה את המעבד לקוד הטיפול בפסיקה.
 D1 () המעבד כותב לזיכרון או לפורט. פעיל נמוך.
 D2 (STACK) – המעבד ניגש למחסנית.
 D3 (HLTA) – המעבד לא עושה כלום משום שהוא נעצר על ידי פקודת HLT.
 D4 (OUT) – המעבד כותב נתונים לפורט.
 D5 (M₁) – המעבד קורא את הבייט הראשון של פקודה.
 D6 (INP) – המעבד קורא נתונים מפורט.
 D7 (MEMR) – המעבד קורא נתונים מהזיכרון.
   4  D5
   5  D6
   6  D7
   7  D3
   8  D2
   9  D1
   10  D0
   11   V
  —  ספק כוח של  וולט. זהו מקור הכוח שצריך להתחבר ראשון ולהתנתק אחרון, אחרת המעבד עלול להינזק.
   12  RESET
  קלט  אתחול – אות פעיל נמוך שמאלץ את המעבד לעבור לביצוע פקודות מהכתובת 0000h. תוכן האוגרים האחרים של המעבד אינו משתנה.
   13  HOLD
  קלט  בקשת גישה ישירה לזיכרון. המעבד מתבקש להעביר את אפיק הנתונים ואת אפיק הכתובת למצב עכבה גבוהה (האפיק "מנותק").
   14  INT
  קלט  בקשת פסיקה
   15  φ2
  קלט  הפאזה השנייה של אות מחולל השעון (clock generator).
   16  INTE
  פלט  מאפשר פסיקות – הפין נועד לשליטה בפסיקות, אך במחשבים פשוטים שימש לעיתים כפלט של סיבית בודדת למטרות שונות. למעבד יש שתי פקודות, DI ו־EI, שמגדירות אם פין זה מוציא 0 או 1, בהתאמה.
   17  DBIN
  פלט  קריאה – המעבד קורא מהזיכרון או מפורט.
   18  
  פלט  קריאה – המעבד קורא מהזיכרון או מפורט. פעיל נמוך.
   19  SYNC
  פלט  פעיל גבוה. מצביע על כך שהמעבד הציב את "מילת המצב" על אפיק הנתונים. הסיביות השונות של מילה זו מספקות מידע נוסף עבור תמיכה בזיכרון ובכתובות נפרדים, פסיקות וגישה ישירה לזיכרון. יש להעביר אות זה דרך לוגיקה נוספת (לדוגמה, 8238 – בקר מערכת ומנהל אפיק) כדי שיהיה ניתן לכתוב את מילת המצב של המעבד לאוגר חיצוני.
   20   V  —  ספק כוח של  וולט
   21  HLDA
  פלט  אישור גישה ישירה לזיכרון. המעבד מעביר את פיני הנתונים והכתובת למצב עכבה גבוהה, ומאפשר להתקן אחר לשלוט באפיק.
   22  φ1
  קלט  הפאזה הראשונה של אות מחולל השעון (clock generator).
   23  READY
  קלט  המתן. באמצעות האות הזה ניתן להשעות את פעולת המעבד. משמש גם למצב ניפוי שגיאות שלב אחר שלב מבוסס חומרה.
   24  WAIT
  פלט  המתנה – מורה על כך שהמעבד במצב המתנה.
   25  A0
  פלט
  אפיק הכתובת
   26  A1
   27  A2
   28  12 V
  —  ספק כוח של  וולט. זהו מקור המתח שצריך להתחבר אחרון ולהתנתק ראשון.
   29  A3
  פלט
  אפיק הכתובת; ניתן להעביר אותו למצב עכבה גבוהה על פי הנדרש.
   30  A4
   31  A5
   32  A6
   33  A7
   34  A8
   35  A9
   36  A15
   37  A12
   38  A13
   39  A14
   40  A11


 שבבים מסייעים 
אחד הגורמים המרכזיים להצלחת ה־8080 היה מגוון רחב של שבבים מסייעים זמינים. שבבים אלו סיפקו פונקציות כמו תקשורת טורית, מונים ותזמון, קלט/פלט, גישה ישירה לזיכרון (DMA), ובקרת פסיקות מיתכנתת, בין היתר:
 8214 – יחידת בקרת פסיקות לפי עדיפות
 8224 – יוצר אות שעון
 8228/8238 – בקר מערכת ומגבר אפיק
 8251 – בקר תקשורת
 8253 – טיימר עם מרווח מיתכנת
 8255 – ממשק התקנים היקפיים מיתכנת
 8257 – בקר DMA
 8259 – בקרת פסיקות מיתכנתת

 מימוש פיזי 
מעבד 8080 נבנה בטכנולוגיית NMOS, תוך שימוש בטרנזיסטורי מצב שיפור (enhancement mode) לא רוויים בתור עומסים. התכנון דרש רמות מתח נוספות (+12 וולט ו־−5 וולט), בנוסף למתח הסטנדרטי של +5 וולט התואם ל־TTL.

המעבד יוצר בתהליך שערי סיליקון  עם גודל מינימלי של 6 מיקרומטרים. שכבת מתכת אחת שימשה לחיבור בין כ־4,500 הטרנזיסטורים בתכנון. עבור חיבורים מסוימים שדרשו מתח גבוה יותר, נעשה שימוש בשכבת פוליסיליקון  בעלת התנגדות גבוהה יותר. גודל השבב כולו היה כ־20 מ"מ רבוע.

 השפעה מסחרית 
 שימושים ויורשים 
אינטל 8080 היה מהמעבדים המרכזיים בגל הראשון של המחשבים האישיים. הוא שימש במחשבים מוקדמים כמו Altair 8800, SOL-20 ו־IMSAI 8080, שרובם הריצו את מערכת ההפעלה CP/M. השפעתו הייתה נרחבת גם בתעשייה — בין אם בשימוש במערכות אוטומטיות לתשלום בתחבורה ציבורית או בעיבוד נתונים למיקרופיש. במקביל, נעשה בו שימוש גם במחשבים חד-לוחיים ובתחום הגרפי, שם שימש בסיס למערכות הדפסה ועיבוד סרטים.

אינטל 8080 היה הבסיס למשחקי ארקייד מוקדמים, בהם המשחקים Gun Fight של Midway ו־Space Invaders (פולשים מהחלל) של טאיטו משנת 1978 — שנחשב לאחד ממשחקי הווידאו החשובים והמצליחים בהיסטוריה. ה־Z80 של זילוג, שהיווה שדרוג ל־8080 ותמך באותן פקודות אסמבלי, הפך לדומיננטי בשוק לצד CP/M בין השנים 1976 ל־1983, בדומה לשילוב של x86 ו־DOS בעשור שלאחר מכן. למרות הופעת דגמים חדשים, המעבד 8080 המשיך להימכר בהיקפים גבוהים גם בסוף שנות השבעים.

בהמשך, אינטל פיתחה את ה־8085 כגרסה פשוטה יותר מבחינה חשמלית של ה־8080, ולאחר מכן את אינטל 8086, שתאם לאסמבלי של קודמו אך ללא תאימות בינארית. אחריו יצא גם ה־8088, בעל ארכיטקטורת 8/16 סיביות, שנבחר על ידי IBM למחשב האישי שהושק בשנת 1981. חברת NEC פיתחה את ה־V20 — גרסה תואמת ל־8088 שתמכה גם בקבוצת הפקודות של אינטל 80186 וכללה מצב אמולציה של 8080, שאִפשר להריץ קוד שנכתב עבורו. גם ה־V30, גרסה משופרת של 8086, תמך בכך. בדרך זו, ארכיטקטורת הפקודות (ISA) של ה־8080 המשיכה להשפיע עמוקות על התפתחות עולם המחשוב.

 שינוי בתעשייה 
ה־8080 שינה באופן משמעותי את הדרך שבה נבנו מחשבים. לפני כן, מערכות מחשב שלמות היו נבנות בדרך כלל על ידי יצרניות גדולות כמו DEC, HP ו־IBM. חברות אלו תכננו וייצרו את כל מרכיבי המערכת, כולל המעבד, המסופים, והתוכנה המערכתית (כגון מערכת הפעלה ומהדרים).

ה־8080 לעומת זאת, לא נועד לשמש כמערכת מחשב שלמה, אלא תוכנן להתאים למגוון רחב של יישומים. דוגמה לכך היא HP, שפיתחה את סדרת המסופים החכמים HP 2640 בהתבסס על 8080. דגם HP 2647 מהסדרה הריץ את שפת התכנות BASIC ישירות על גבי ה־8080. המוצר המסחרי הראשון של מיקרוסופט, Microsoft BASIC, נכתב במקור עבור ה־8080.

ה־8080 וה־8085 שהגיע אחריו הובילו לפיתוחו של המעבד אינטל 8086. אמנם לא הייתה ביניהם תאימות בינארית, אך ה־8086 תוכנן כך שיהיה תואם ברמת קוד המקור ל־8080. תכנון זה היה הבסיס לסדרת המעבדים x86, שנותרה עד היום הארכיטקטורה המרכזית של אינטל.

חלק מהוראות המכונה הבסיסיות ומהרעיונות התכנוניים של ה־8080 ממשיכים להתקיים בארכיטקטורת x86. ביניהם ניתן למצוא את אוגרים A, B, C ו־D, וכן דגלים שמובילים לקפיצות מותנות (conditional jumps). ניתן אף לתרגם קוד אסמבלי של 8080 ישירות לפקודות x86, משום שרוב האלמנטים המרכזיים נותרו בעינם.

 פטנט אמריקאי 
הפטנט האמריקאי מספר 4010449, שהונפק ב־1 במרץ 1977 על שם פדריקו פג'ין, מסטושי שימה וסטנלי מזור, נקרא MOS computer employing a plurality of separate chips (מחשב MOS המשתמש במספר שבבים נפרדים). הפטנט כולל שלוש תביעות עיקריות; שתי התביעות הראשונות עוסקות במילת המצב (status word) המועברת בריבוב על גבי אפיק הנתונים. התביעה השלישית עוסקת בפקודת RST 7, שניתן להפעיל אותה פשוט על ידי העלאת רמת המתח באפיק הנתונים, כלומר הפיכת כל הסיביות באפיק הנתונים ל־1 (FFh). לשם השוואה, במעבד ה־8008 הישן, נדרש לכך מעגל בילול (jamming) מסובך יותר כדי לבצע את אותה הפעולה.

 השפעה תרבותית 
 האסטרואיד 8080 אינטל נקרא כך כמשחק מילים, כהוקרה לתרומתה של אינטל ושל המעבד 8080 למהפכת המחשב האישי, שהשפיעה גם על תחום האסטרונומיה.
 מספר הטלפון שפרסמה מיקרוסופט – 425-882-8080 – נבחר במכוון, כהוקרה למעבד 8080 שהיה חלק חשוב בעבודתה המוקדמת.
 גם מספרי טלפון ראשיים נוספים של אינטל כוללים לעיתים קרובות את הספרות 8080 באותו סגנון.

 לקריאה נוספת 

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

 תמונות ותיאורים של מעבד 8080 של אינטל ושל יצרנים אחרים באתר cpu-collection.de.
 סריקה של ספר הנתונים של אינטל 8080 באתר DataSheetArchive.com.
 תכנון מיקרו-מחשבים, מהדורה שנייה, 1976. הועבר לארכיון ב-11 במרץ 2012, ב-Wayback Machine.
 אמולטור ל־8080 שנכתב ב-JavaScript.
 אמולטור לאינטל 8080/KR580VM80A שנכתב ב-JavaScript.
 מדריך למשתמש של מערכות מיקרו-מחשבים של אינטל 8080 (ספטמבר 1975, 262 עמודים).
 מדריך למשתמש של מערכות מיקרו-מחשבים של אינטל 8080 (ספטמבר 1975, 234 עמודים). הועבר לארכיון בפברואר 26, 2013, ב-Wayback Machine.
 כרטיס הוראות עזר לאינטל 8080/8085. הועבר לארכיון ב-10 באוגוסט 2021, ב-Wayback Machine.

 הערות שוליים 

קטגוריה:ערכים שבהם תבנית בריטניקה אינה מתאימה
קטגוריה:מעבדי אינטל