שאלות נפוצות
ציר זמן
צ'אט
פרספקטיבה

זילוג Z80

מיקרו-מעבד 8 ביט מוויקיפדיה, האנציקלופדיה החופשית

זילוג Z80
Remove ads

זילוג Z80 הוא מיקרו-מעבד 8 סיביות שפִּתחה חברת זילוג (Zilog), והיה בעל תפקיד משמעותי בעלייתם של מחשבים אישיים מוקדמים. הוא הושק בשנת 1976, ותוכנן להיות תואם ברמת התוכנה למעבד אינטל 8080, תוך שהוא מציע כילול (integration) טוב יותר וביצועים משופרים. בנוסף לשבעת האוגרים ואוגר הדגלים של ה־8080, ה־Z80 הציג מערך חלופי של אוגרים, שני אוגרי אינדקס בני 16 סיביות, ומערך פקודות עשיר יותר – כולל פעולות למניפולציה על ביטים, והעתקה וחיפוש של בלוקים בזיכרון, וכן הצטיין בעובדה שלהפעלתו נדרש מתח של 5 וולט בלבד, לעומת 8080 שדרש גם מתח 12V וגם -5V.

עובדות מהירות מידע כללי, יצרן ...
Thumb
חבילת שבב DIP40 המקורית של ה-Z80

אף על פי שיועד במקור למערכות משובצות בדומה לאינטל 8080, השילוב של תאימות לאחור, מחיר נמוך, ביצועים טובים יותר ודרישת הספק פשוטה יותר עשו אותו למעבד פופולרי במחשבים ביתיים ובקונסולות משחקים מסוף שנות ה־70 ותחילת שנות ה־80. הוא שולב במוצרים משמעותיים רבים, ביניהם TRS-80 של Radio Shack, אוסבורן 1 , ZX Spectrum, קונסולת המשחקים Master System של סגה, ומשחק הארקייד פק-מן (Pac-Man). בשנות ה־90 הוא שימש גם במכשירים ניידים כגון ה־Game Gear וסדרת המחשבונים הגרפיים TI-83.

Z80 היה רעיונו של פדריקו פג'ין, אחד מהאנשים המרכזיים שעמדו מאחורי פיתוח האינטל 8080. לאחר שעזב את אינטל בשנת 1974, פג'ין ייסד את חברת זילוג (Zilog) יחד עם ראלף אונגרמן. Z80 הושק ביולי 1976, והצלחתו אפשרה לזילוג להקים מתקני ייצור שבבים משלה. בתחילה העניקה זילוג רישיון ייצור של ה־Z80 לחברות האמריקאיות Synertek ומוסטק (Mostek), וכן ליצרנית האירופית SGS. עם הזמן, העיצוב הועתק גם על ידי יצרנים ביפן, מזרח אירופה וברית המועצות. חברות גדולות כגון NEC, טושיבה, שארפ והיטאצ'י יצרו גרסאות תואמות ל־Z80 או עיצובים משלהן בהשראתו.

למרות הופעתם של מעבדים חזקים יותר בשנים מאוחרות יותר, Z80 נשאר פופולרי במערכות משובצות למשך עשרות שנים. ייצורו נמשך עד יוני 2024 – 48 שנים לאחר השקתו. זילוג המשיכה לפתח גם גרסאות משופרות שלו, כולל Z180, Z280 ו־Z380. הגרסה העדכנית ביותר, eZ80, הוצגה בשנת 2001 וזמינה לרכישה גם בשנת 2025.

Remove ads

היסטוריה

סכם
פרספקטיבה
Thumb
פרסומת ממאי 1976 ל-Z80 המתארת את יתרונותיו העיקריים על פני ה-8080.
Thumb
תמונה של תכן המיקרו-מעבד זילוג Z80 המקורי בלוגיקת depletion-load NMOS (אנ'). גודל פיסת הסיליקון (die) הכולל הוא 3545 × 3350 מיקרומטר. הריבועים הכחולים מסביב לחלק החיצוני הם הרפידות המתחברות לפינים החיצוניים. שבב זה יוצר בשנת 1990.
Thumb
Z80 בגרסת CMOS באריזה בעלת 44 פינים מרובעת שטוחה.

ראשית הדרך

הפיזיקאי והמהנדס פדריקו פג'ין (Federico Faggin) עבד על טכנולוגיה בסיסית לייצור טרנזיסטורים ומוליכים למחצה בחברת פיירצ'יילד סמיקונדקטור (Fairchild Semiconductor), ומאוחר יותר באינטל. הוא גם פיתח את מתודולוגיית העיצוב הבסיסית המשמשת עבור זיכרונות ומיקרו־מעבדים באינטל והוביל את הפיתוח של אינטל 4004, אינטל 8080 ועוד מספר מעגלים משולבים. מסטושי שימה היה המתכנן הראשי של הלוגיקה ושל רמת הטרנזיסטור של 4004 ו־8080 תחת פיקוחו של פג'ין, בעוד ראלף אונגרמן היה אחראי על תיכון מעגלים משולבים מותאמים אישית.[2]

בתחילת 1974, אינטל ראתה את המיקרו-מעבדים שלה לא רק כמוצרים שיימכרו בעצמם אלא כאמצעי לקדם את עסקי הליבה שלה – זיכרונות RAM סטטיים ו־ROM. ארגון מחדש בחברה החליש את השפעת קבוצת המיקרו־מעבדים[דרוש מקור], ובמהלך מיתון 1973–1975 אינטל פִּטרה מספר עובדים. פג'ין, שחש תסכול מהמצב,[3] פנה לאונגרמן והציע לו להקים יחד חברת סטארט־אפ. אונגרמן הסכים מיד ועזב את אינטל בסוף הקיץ, ולאחריו עזב גם פג'ין, כאשר יומו האחרון היה בליל כל הקדושים של 1974. כששימה שמע על כך, ביקש גם הוא להצטרף לחברה החדשה, אך נאמר לו להמתין, מכיוון שעדיין לא היה מוצר או מימון.

החברה החדשה שהוקמה ללא שם החלה לתכנן מיקרו-בקר בעל שבב אחד בשם 2001. הם פנו לחברת Synertek (אנ') כדי לבדוק אפשרות לייצור, אך פג'ין הבין שעם מוצר זול כזה, לא ניתן להתחרות בחברות כמו אינטל שיש להן קווי ייצור משלהן. בעקבות כך, הם עברו לתכנן מיקרו־מעבד מתקדם ומורכב יותר, שכונה בתחילה "Super 80" והתאפיין בשימוש באפיק מתח של +5 וולט בלבד – בניגוד ל־-5 וולט, +5 וולט ו־+12 וולט שנדרשו עבור אינטל 8080. המעבד החדש תוכנן להיות תואם לאחור ל־8080, אך גם לשלב מאפיינים של המעבד מוטורולה 6800 (אנ'), כמו אוגרי אינדקס וטיפול מתקדם יותר בפסיקות.

השקעה של אקסון, פיתוח מפורט מתחיל

כבר כשעשתה זילוג את צעדיה הראשונים, פרסם ניוזלטר התעשייה Electronic News ידיעה על החברה החדשה שהוקמה. הידיעה משכה את תשומת לבה של Exxon Enterprises, זרוע ההשקעות בהייטק של חברת אקסון. באותה תקופה, בעיצומו של המיתון, היו מעט מאוד השקעות הון סיכון – בכל שנת 1975 הושקעו 10 מיליון דולר בלבד עבור כל התעשייה (שווה ערך לכ־57 מיליון דולר בשנת 2023). נציג של Exxon יצר קשר עם החברה שעדיין לא נקראה בשם,[4] וארגן פגישה שהובילה בסופו של דבר לקבלת מימון ראשוני של $500,000 ביוני 1975 (שווה ערך לכ־2.9 מיליון בשנת 2023).[5]

לאחר שהמימון החל להתגבש והיה צורך לעצב את המעבד, הצטרף שימה רשמית לצוות בפברואר 1975.[6]

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

אונגרמן החל לפתח סדרה של בקרים ושבבים היקפיים שישלימו את המעבד.[8] בתקופה זו, שימה רכש מוניטין אגדי כמי שיכול להמיר רעיונות לוגיים לתכנון שבב בזמן אמת – לעיתים קרובות היה פוסל תכונה מוצעת אם היא דרשה יותר מדי שטח על גבי השבב.[9] התכנון הראשוני הושלם באפריל 1975, והעיצוב הלוגי הסתיים בתחילת מאי. גרסה מתוקנת של הלוגיקה הוצגה ב־7 באוגוסט, והמפרט הסופי של האפיק הושלם ב־16 בספטמבר. תהליך ה־Tape-out (שליחת התכנון ליצירת מסכת ייצור) התרחש בנובמבר, וההמרה למסכת ייצור לקחה עוד חודשיים.[10]

פג'ין כבר חיפש שותף לייצור. בשלב זה, ל־Synertek ולמוסטק (Mostek) כבר היו קווי ייצור מוכנים לשבבי NMOS בטכנולוגיית "דילול יונים" (Depletion-load NMOS logic). פג'ין פנה תחילה ל־Synertek, אך נשיא החברה התעקש לקבל רישיון second-source – רישיון שיאפשר להם למכור את השבב בעצמם. פג'ין חשש שזה יפגע בזילוג, וסירב. לאחר מכן פנה למוסטק, שהסכימה להסכם בלעדיות זמני בזמן שזילוג תקים את קו הייצור שלה, ולאחר מכן קיבלה רישיון second-source.[11]

לאחר ששקלו שמות רבים לחברה החדשה, פג'ין ואונגרמן הציעו שמות רבים אך הם לא היו קליטים עד כדי כך שלא הצליחו להיזכר בהם אפילו יום לאחר מכן. לבסוף, בעת שעסקו במשחקי מילים עם הביטוי "integrated logic", אונגרמן הציע את השם "זילוג". פג'ין אהב את הרעיון, וציין שזה יכול לסמל "המילה האחרונה בלוגיקה משולבת". כששניהם זכרו את השם ביום שלמחרת – השם נבחר סופית.[12]

תחילת הייצור

היחידות הראשונות של ה־Z80 התקבלו ממוסטק ב־9 במרץ 1976. עד סוף אותו חודש, השלימה זילוג גם מערכת פיתוח מבוססת אסמבלר. באותו הזמן פותחו גם שבבים היקפיים ותומכים ל־Z80, שחלקם הושקו בשנה שלאחר מכן. בין השבבים הללו נמנים Z80 CTC (מונה/טיימר), Z80 DMA (גישה ישירה לזיכרון), Z80 DART (מקלט־משדר כפול ואסינכרוני), Z80 SIO (בקר תקשורת סינכרוני), ו־Z80 PIO (קלט/פלט מקבילי).

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

לאחר הצלחת השקת ה־Z80, פנו פג'ין ואונגרמן שוב ל־Exxon כדי לממן הקמת מפעל ייצור שבבים עצמאי של זילוג. Exxon הסכימה, וזילוג הקימה קו ייצור משלה, שאפשר לה לתפוס נתח מוערך של 60–70 אחוזים משוק ה־Z80. במקביל, מוסטק ייצרה גרסה ברישיון של המעבד בשם MK3880, כדי לשמש כמקור שני (אנ'). זו הייתה פרקטיקה נפוצה באותם ימים – לקוחות נמנעו מהסתמכות על ספק יחיד, במיוחד כשמדובר בחברות סטארט־אפ כמו זילוג.

השוואה לאינטל 8080

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

בעוד ה־8080 דרש שלושה מקורות מתח נפרדים (-5V, +5V, +12V), ה־Z80 פשט את הדרישות החשמליות ופעל באמצעות אפיק של +5V בלבד. בנוסף, הוא כלל בתוכו לוגיקה לרענון DRAM, מה שחסך את הצורך במעגלים חיצוניים נוספים בעת שימוש בזיכרון דינמי. גם מעגל השעון של ה־Z80 היה פשוט יותר, ונדרש לו רק שעון חד־מופעי.

למרות התאימות, הארכיטקטורה הפנימית של ה־Z80 הייתה שונה למדי. לדוגמה, בעוד ה־8080 השתמש בלוגיקת בקרה קשיחה (hardwired), ה־Z80 השתמש במיקרוקוד, שאִפשר פענוח פקודות עשיר יותר והרחבות עתידיות. השיפורים הללו סייעו ל־Z80 להתפשט במהירות בתעשיית המחשבים.

הצלחה בשוק

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

חברות מסוימות, כמו British Telecom ו־Zenith (אנ'), העדיפו את המוצר של אינטל. 8085 מעולם לא התקרב לפופולריות של Z80, ותוך זמן קצר לא נבנו יותר מחשבים חדשים עם 8080. רוב המחשבים האישיים שהתבססו על Z80 השתמשו במערכת ההפעלה CP/M שנכתבה עבור 8080, עם יוצא מהכלל חשוב אחד: ב-1977 הציגה חברת רדיו שק את המחשב TRS-80, שבזכות מחירו הזול יחסית והעובדה שכלל את כל הרכיבים הנחוצים למחשב מועיל – מסך, מקלדת, ואמצעי אחסון בדמות כונן קלטות, היה המחשב האישי הנפוץ בעולם החל מזמן קצר אחרי הצגתו ועד תחילת שנות השמונים של המאה.

מחשבים רבים שִלבו את ה־Z80 לעיתים לצד מעבדים נוספים, כמו TRS-80 מודל 16 עם מוטורולה 68000 וקומודור 128 עם MOS 8502. זילוג אף ייצרה גרסה חסכונית בחשמל של ה־Z80 שהתאימה למחשבים ניידים, ובסופו של דבר גרסאות ה־CMOS של ה־Z80 נעשו לדומיננטיות בשוק זה.

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

המהירות המרבית של גרסאות ה־NMOS של ה־Z80 עלתה בהדרגה מ־2.5 מגה־הרץ ועד 10 מגה־הרץ. גרסאות CMOS, שהופיעו בהמשך, תמכו בתדרים של עד 20 מגה־הרץ ואף כללו מצבי חסכון בחשמל ללא הגבלה על תדר מינימלי. נגזרות תואמות כמו Z180 ו־eZ80 הגיעו למהירויות של 33 ו־50 מגה־הרץ בהתאמה.

Remove ads

תכן

סכם
פרספקטיבה

מודל תכנות ומערך אוגרים

Thumb
דיאגרמת בלוקים משוערת של ה־Z80: אין מחבר ייעודי להסטות או מגדיל נפרד עבור R, ואין צורך ביותר מאוגר זמני בודד של 16 סיביות WZ (אם כי תפסי ההגדלה משמשים גם כאוגר זמני של 16 סיביות, בהקשרים אחרים). האוגרים PC ו-IR הם שממוקמים בקבוצה נפרדת, עם קטע אפיק נתונים נתיק, כדי לאפשר את עדכונים של אוגרים אלו במקביל לקובץ האוגרים הראשי.[13]

מודל התכנות ומערך האוגרים של ה־Z80 הם מסורתיים למדי, ומבוססים על מבנה האוגרים של המחשב Datapoint 2200 (אנ'). ה־Z80 פותח כהרחבה של אינטל 8080, שנוצר בידי אותם מהנדסים. ה־8080 עצמו היה שדרוג ל־8008, אשר היה יישום PMOS של המעבד מבוסס־TTL ששימש את ה־Datapoint 2200.

ה־Datapoint 2200 אפשר לזוג האוגרים בגודל 8 ביט H ו־L (High ו־Low) לתפקד כצמד וכך ליצור אוגר כתובת בגודל 16 ביט בשם HL. ב־8080, הורחב שימוש זה כך שגם זוגות האוגרים BC ו־DE יכלו לשמש כצמדים, וה־HL שודרג בכך שהוא שימש לא רק כאוגר כתובת, אלא גם כצובר (accumulator) בגודל 16 סיביות. בנוסף, נוספה בו האפשרות לטעון ערכי 16 סיביות ישירות לאוגרים BC, DE, HL ו־SP (מצביע המחסנית). כמו כן, ניתן היה לבצע העתקות ישירות בין HL לבין הזיכרון, באמצעות כתובת מוחלטת.

ה־Z80 לקח את הרעיון הזה צעד נוסף קדימה, והפך את כל זוגות האוגרים בגודל 16 ביט – כולל IX ו־IY – לאוגרים לשימוש כללי, תוך שהוא מאפשר העתקה ישירה של ערכי 16 ביט בין הזיכרון ובין כל אחד מהזוגות האלה. אוגרים IX ו־IY יועדו בראש ובראשונה לשמש כאוגרי כתובת בסיס, כאשר פקודה מספקת היסט קבוע שמתווסף לערך הבסיס, אך הם יכולים לשמש גם כצוברים בגודל 16 סיביות. עם זאת, כל פקודה שמעורבים בה אוגרים IX או IY דורשת בייט נוסף של קידומת לפקודה, מה שמוסיף לפחות ארבעה מחזורי שעון יותר מפקודה זהה אך שמשתמשת באוגר HL. לכן לפעמים השימוש באוגרים IX ו־IY פחות יעיל בהשוואה לאוגרים המסורתיים של ה־8080. בנוסף, ה־Z80 הכיל דגל חדש לזיהוי גלישה מסומנת (signed overflow), והוסיף פקודות ייעודיות לאריתמטיקת 16 סיביות עבור מספרים מסומנים, דבר ששדרג את יכולות האריתמטיקה הפשוטות יותר שהיו ב־8080.

ב־Z80 קיימים שני סטים של האוגרים AF, BC, DE ו־HL, התואמים ל־8080.[14] המעבד יכול לעבור במהירות בין שני הסטים – תוך ארבעה מחזורי שעון (זמן הביצוע המינימלי לפקודה ב־Z80).[15] תכונה זו אפשרה תגובה מהירה לפסיקות בעדיפות גבוהה. קובץ האוגרים הכפול נמצא שימושי במיוחד במערכות משובצות, בשל השיפור בביצועי הטיפול בפסיקות, אך זכה לשימוש נרחב גם במחשבים אישיים – כסט נוסף של אוגרים כלליים עבור משימות מורכבות, כמו חישובי נקודה צפה או משחקים.

קובץ האוגרים המשני נקרא לעיתים "מערך האוגרים החלופיים", ולעיתים "המערך המסומן בגרש" (primed), משום שבקוד אסמבלי ובתיעוד של זילוג משתמשים בסימן גרש לציון האוגרים הללו. רק מערך אחד נגיש בכל זמן נתון. עם זאת, הצובר בגודל 8 ביט A והאוגר הנלווה לו F (אוגר הדגלים) מופרדים מזוגות האוגרים הכלליים HL, DE ו־BC. כדי להחליף ביניהם קיימות שתי פקודות: הפקודה EX AF,AF' שמחליפה רק את הזוג AF עם AF', והפקודה EXX שמחליפה את שלושת הזוגות HL, DE ו־BC עם HL', DE' ו־BC'. באופן זה, הצובר A יכול לתקשר באופן עצמאי עם כל אחד מהאוגרים הכלליים במערך החלופי, או – אם HL' מצביע על כתובת בזיכרון – עם תוכן בזיכרון באותה כתובת (גם DE' ו־BC' יכולים לשמש להעברת נתוני 8 ביט בין הזיכרון לבין הצובר A).

עם זאת, החלפה כזו עלולה לבלבל מתכנתים, שכן לאחר ביצוע EX AF,AF' או EXX, התוכן של האוגרים החלופיים הופך להיות התוכן הפעיל, ולהפך. הדרך היחידה לדעת איזה מערך אוגרים נמצא כעת בשימוש היא לעקוב באופן מדויק אחר זרימת הקוד ולשים לב לפקודות ההחלפה. כאשר הקוד כולל קפיצות או קריאות לתת שגרות, מעקב אחר מצב האוגרים עלול להפוך למסובך אם הקוד אינו מתועד כראוי. לכן מומלץ להשתמש בפקודות ההחלפה במקטעים קצרים וברורים. מערך הפקודות המורחב של זילוג Z280 כולל אף את הפקודות JAF ו־JAR שקופצות לפי מצב מערך האוגרים – כלומר מכיר באופן רשמי במורכבות התכנותית הזו.

אוגרים

אוגרי זילוג Z80
00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 (מיקום סיביות)
אוגרים ראשיים
דגלים (F) צובר (A) AF
C B BC
E D DE
L H HL
אוגרים חלופיים
דגלים חלופיים (F') צובר חלופי (A') AF'
C' B' BC'
E' D' DE'
L' H' HL'
אוגרי אינדקס
אינדקס X IX
אינדקס Y IY
מצביע המחסנית SP
אוגרים נוספים
מונה רענון וקטור פסיקות I/R
מונה התוכנית
מונה התוכנית PC
מצב
S Z - H - P/V N C דגלים (F)
IM IFF1 IFF2 פסיקה (I)

בדומה למעבר אינטל 8080, גם ב־Z80 ניתן בדרך כלל להשתמש בזוגות אוגרים של 8 סיביות כדי ליצור אוגרים של 16 סיביות. האוגרים התואמים ל־8080[16] הם:

  • AF – צובר 8 סיביות (A) ואוגר הדגלים (F) הכולל: נשא, אפס, סימן, זוגיוּת/גלישה, חצי נשא (משמש עבור BCD) ודגל הוספה/חיסור (N, גם עבור BCD)
  • BC – אוגר נתונים או כתובות בגודל 16 סיביות, או שני אוגרים בגודל 8 סיביות
  • DE – אוגר נתונים או כתובות בגודל 16 סיביות, או שני אוגרים בגודל 8 סיביות
  • HL – צובר או אוגר כתובות בגודל 16 סיביות, או שני אוגרים בגודל 8 סיביות
  • SP – מצביע מחסנית, בגודל 16 סיביות
  • PC – מונה התוכנית, בגודל 16 סיביות

האוגרים החדשים שנוספו ב־Z80 הם:

  • IX – אוגר אינדקס או אוגר בסיס בגודל 16 סיביות להסטות מיידיות של 8 סיביות
  • IY – אוגר אינדקס או אוגר בסיס בגודל 16 סיביות להסטות מיידיות של 8 סיביות
  • I – אוגר בסיס לווקטור פסיקה בגודל 8 סיביות
  • R – מונה רענון DRAM בגודל 8 סיביות
  • AF' – צובר ודגלים חלופיים (מוחלפים באמצעות פקודת EX AF,AF')
  • BC', DE' ו־HL' – אוגרים חלופיים (החלפה באמצעות פקודת EXX)
  • ארבע סיביות עבור מצב הפסיקות ומצב סוג פסיקה

אוגר הרענון (או מונה הרענון) R הוא אוגר שערכו מוגדל ב־1 בכל אחזור מהזיכרון של קוד פעולה או של קידומת קוד פעולה. אין קשר ישיר בין ערכו של אוגר R לבין זרימת התכנית בפועל. היו מחשבים שנִצלו באופן יצירתי את R להפקת מספרים פסאודו־אקראיים במשחקים, ולהגנות תוכנה. באחד המחשבים – ה־ZX81 – נעשה שימוש באוגר R כמונה "חומרתי" למיקומי תווים על גבי מסך הטלוויזיה, על ידי חיבור INT לקו A6 כדי לעורר פסיקה עם בכל פעם שהתרחשה גלישה של אוגר R.

אוגר וקטור הפסיקות I מיועד למצב הפסיקות הייחודי של Z80 – מצב 2 (נבחר בעזרת הפקודה IM 2). אוגר זה מספק את הבייט הגבוה של כתובת בסיס למערך המכיל 128 כתובות עבור שגרות שירות. הכתובת הרצויה נבחרת מהמערך באמצעות אינדקס שנשלח מהתקן חיצוני למעבד במהלך מחזור אישור פסיקה (interrupt acknowledge cycle)[17] לרוב, התקנים חיצוניים כאלה מחוברים ב"שרשת חינניות" (daisy chain) שתפקידה לאפשר להתקן בעל העדיפות הגבוהה יותר לבקש פסיקה ראשון. כמו אוגר הרענון R, גם האוגר I שימש לעיתים כאוגר נתונים רגיל בגודל 8 סיביות, בעיקר במצבי הפסיקות 0 ו־1 או במערכות שלא השתמשו בפסיקות כלל.

בניגוד לשאר הפקודות מסוג LD (טעינה), הפקודות LD A,R ו־LD A,I משפיעות על אוגר הדגלים של Z80. דגל הסימן (סיבית 7) ודגל האפס (סיבית 6) מקבלים ערך לפי תוכן אוגר הרענון או הפסיקה. בשתי הפקודות, דגל הזוגיוּת/גלישה (סיבית 2) מוגדר בהתאם למצב הנוכחי של הדלגלג IFF2.[18]

מיקרו ארכיטקטורה

אף על פי שה-Z80 נחשב בדרך כלל למעבד 8 סיביות, הוא מכיל יחידה אריתמטית-לוגית (ALU) של 4 סיביות בלבד, ולכן פעולות חישוב נעשות בשני שלבים עבור מספרים של 8 סיביות, וארבעה שלבים עבור מספרים של 16 סיביות (כגון ADD HL,DE ו־ADC HL,DE).[19]

שפת הסף של ה־Z80

Datapoint 2200 ואינטל 8008

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

במהלך השינויים הללו, הסימון הרומז (mnemonic) L (קיצור ל־"LOAD") הוחלף בקיצורים שונים של הפקודות LOAD, STORE ו־MOVE, יחד עם סימונים נוספים. האות M, אשר סִמנה גישה לזיכרון על פי הכתובת בזוג האוגרים HL, הוצאה מתוך שם הפקודה ונעשתה לאופרנד עצמאי. התוצאה הייתה תחביר לא עקבי – לעיתים נעשה שימוש באופרנדים מקוצרים (כגון MVI D ו־LXI H), לעיתים המידע שובץ בתוך שם הפקודה (כגון LDA ו־LHLD), ולעיתים נוצר ערבוב של שניהם (LDAX B ו־STAX D).

מידע נוסף אינטל 8008 Datapoint 2200, אינטל 8080 אינטל 8085 ...

הטבלה משווה בין ארבעה תחבירי שפה שונים באמצעות דוגמאות של פקודות טעינה ואחסון שקולות, או, במקרה של 8086, דומות מאוד.[20] בתחביר ה־Z80, סוגריים עגולים סביב ביטוי מציינים שהביטוי מייצג כתובת זיכרון, בעוד שבתחביר של 8086 נעשה שימוש בסוגריים מרובעים לשם כך. בשתי הארכיטקטורות, Z80 ו-8086, סימן הפלוס (+) מציין כי יש להוסיף קבוע לאוגר בסיס כדי לחשב כתובת. 8086 אינו קבוצת־על מלאה של Z80 – ב-8086 רק זוג הרגיסטרים BX יכול לשמש כמצביע.

תחביר חדש

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

  • כל שמות האוגרים וזוגות האוגרים נכתבים במלואם (לדוגמה: BC, DE או HL).
  • סוגריים מציינים באופן עקבי גישה לזיכרון – כלומר התוכן שבכתובת קבועה או שבכתובת שנותן מצביע – למעט פקודות הקפיצה JP (HL), JP (IX) ו־JP (IY), אשר קופצות לערך שבאוגר ישירות, ולא לתוכן שבזיכרון.
  • כל פקודות הטעינה והאחסון משתמשות בסימון הרומז LD (עבור "LOAD") – חזרה לפשטות של Datapoint 2200. באותה רוח, גם פקודות נפוצות כגון ADD ו־INC שומרות על שם הפקודה ללא קשר לסוג האופרנד או אופן המעינה, מאחר שהאופרנדים עצמם מספקים את המידע הנדרש.

שיטה זו הקלה על קביעת שמות לפקודות החדשות של ה־Z80, וגם אפשרה אורתוגונליזציה (אנ') לפקודות קיימות, לדוגמה LD BC,1234.

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

סט פקודות וקידוד

ה־Z80 משתמש ב־252 מתוך 256 הקודים האפשריים כפקודות של בית בודד ("פקודות שורש", שרובן עברו בירושה מה־8080). ארבעת הקודים הנותרים משמשים כקידומות לפקודות:[22] הקידומות CB ו־ED מוסיפות פקודות חדשות, בעוד DD ו־FD מאפשרות לבחור את אוגרים IX+d או IY+d (כתובת בסיס עם היסט, אך במקרים מסוימים גם ללא היסט) בהתאמה במקום את אוגר HL. תכנון זה מעניק ל־Z80 מספר רב של שילובי פקודות ואוגרים; זילוג סיווגה אותן ל־158 "סוגי פקודות" שונים, מהם 78 זהים לאלה של אינטל 8080 – דבר המאפשר הרצה של כל תוכנית של אינטל 8080 על גבי ה־Z80. התיעוד של זילוג[23] מחלק את הפקודות לקטגוריות הבאות (רובן מה־8080, אחרות חדשות לחלוטין כגון פקודות בלוקים וביטים, ואחרות הן גרסאות משופרות עם אופני מעינה נוספים):

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

אין פקודות כפל מפורשות ב־Z80 המקורי,[24] אך ניתן להכפיל את הצובר A או את האוגר HL בחזקות של שתיים בעזרת הפקודות ADD A,A ו־ADD HL,HL (וכן גם את IX ואת IY). פקודות ההזזה מאפשרות גם חילוק או כפל בחזקות של 2.

לפקודות בגודל שונה ומסוגים שונים יש השפעות שונות על דגלי המצב, בגלל ירושת תכונות מה־8080. הדגל P של 8080 (סיבית 2) נקרא ב־Z80 בשם P/V (זוגיות/גלישה), מכיוון שהוא משמש גם לציון גלישה בחיבור בשיטת המשלים ל־2 – תכונה שאינה קיימת ב־8080. בפקודות אריתמטיות, הדגל P/V ב־Z80 מסמן גלישה ולא זוגיות, אך בפקודות סיבוב ולוגיקה הוא משמש כדגל זוגיות (דבר זה יוצר חוסר תאימות עדין עם תוכניות 8080, היות שה־Z80 עשוי להראות גלישה במקום זוגיות, מה שעלול לגרום לקריסה של הלוגיקה בתוכנית). דגל הגלישה החדש משמש בפקודות החדשות של 16 סיביות (ADC, SBC) וגם בפקודות אריתמטיות של 8 סיביות, אך הפקודות הוותיקות מה־8080 (כגון ADD, INC ו־DEC) אינן משפיעות עליו.

בנוסף, סיבית 1 באוגר הדגלים (שהייתה ללא שימוש ב־8080) משמשת כדגל N, המציין האם הפקודה האחרונה הייתה פקודת חיסור או חיבור (הדגל נדלק לאחר פעולת חיסור). הגרסה של פקודת DAA (עשרוני בקידוד בינארי – BCD) מתחשבת בדגל N ולכן חיסור ואחריו DAA יתן תוצאה שונה מאשר במעבד 8080, שם DAA הוגדרה לביצוע רק לאחר חיבור.

ה־Z80 כולל שש פקודות LD חדשות שיכולות לטעון את צמדי האוגרים DE, BC ו־SP בנתונים מהזיכרון, וכן לטעון ערכים לזיכרון מצמדי אוגרים אלו – יכולת שלא הייתה קיימת ב־8080.[20] כמו ב־8080, פקודות טעינה אינן משפיעות על הדגלים (למעט טעינה של האוגרים I ו־R). כתוצאה מקידוד אחיד (כמו ב־8080), ניתן לטעון כל אוגר 8 סיביות מעצמו (למשל LD A,A) – פעולה שלא משנה דבר, אך חוקית (כמו פקודת NOP).

באמצעות פקודות העתקת בלוקים חדשות ניתן להעתיק עד 64 קילו־בייט מזיכרון לזיכרון או בין זיכרון לפורט קלט/פלט עבור התקנים היקפיים. הפקודות LDIR ו־LDDR (load, increment/decrement, repeat – טעינה, הגדלה/הפחתה, חזרה) משתמשות ב־HL ככתובת המקור, DE ככתובת היעד, ו־BC כמונה בייטים. הפקודות מעבירות בייטים, מעדכנות את המצביעים ומפחיתות את המונה עד שהוא מתאפס. הגרסאות ללא הלולאה, LDI ו־LDD, מעבירות בייט אחד בלבד ומעדכנות את המצביעים ואת BC, שאם מתאפס – מאפס את הדגל P/V.

פקודות קלט/פלט עבור העתקה מהזיכרון או אליו (INIR, INDR, OTIR, OTDR, INI, IND, OUTI ו־OUTD) פועלות באופן דומה, אך משתמשות באוגר B כמונה בתים ולא ב־BC.[25] ה־Z80 מאפשר גישה לכל אוגר מול נקודת קלט/פלט (באמצעות הפקודות OUT (C), reg ו־IN reg, (C)), כאשר תוכן אוגר C הוא מספר הפורט (ב־8080, לעומת זאת, יש פקודות קלט/פלט הפועלות רק עם הצובר A ועם כתובת יציאה ישירה בקוד – כדי להשתמש בכתובת משתנה יש לכתוב קוד שמשנה את עצמו).

קבוצת פקודות בלוקים נוספת מבצעת השוואה (CP) בין הבית ש־HL מצביע עליו לבין הצובר A. הצמד DE אינו בשימוש. הפקודות CPIR ו־CPDR בעלות הלולאה, עוצרות כאשר BC מתאפס או כשנמצא הבייט הרצוי. בסוף הפקודה, HL מצביע על הבייט שאחרי מקום העצירה (ב־CPIR) או שלפניו (ב־CPDR). אם הבייט הרצוי לא נמצא, דגל Z מאופס. קיימות גם גרסאות ללא לולאה – CPI ו־CPD.

בשונה מה־8080, ל־Z80 יש פקודת קפיצה יחסית (JR במקום JP) עם היסט בן 8 סיביות מסומנות (signed; כלומר בטווח של 127 כתובות קדימה ו־128 כתובות אחורה). קיימות גרסאות מותנות (המותנות רק בדגלי האפס והנשא) ובלתי מותנות. כאשר הקפיצה המותנית מתרחשת, JR איטית יותר מאשר JP ב־8080; אך אם הקפיצה אינה מתבצעת, JR מהירה יותר.

ב-Z80 קיימת פקודה ייעודית ללולאות – DJNZ (decrement, jump if non-zero – הקטן וקפוץ אם לא אפס). פקודה זאת היא בת שני בתים בלבד, כמו הפקודה JR. במהלך ביצוע פקודה זו, האוגר B מופחת, ואם אינו מתאפס מתבצעת קפיצה יחסית. הדגלים לא מושפעים. ב־8080 יש צורך ב־DEC ובקפיצה מותנית לכתובת קבועה (4 בתים בסך הכל), ו־DEC משנה את הדגלים.

פקודות המשתמשות באוגרי האינדקס IX ו־IY (לעיתים נכתבים בקיצור XY) מועילות במיוחד כאשר יש מבני נתונים אחידים עם היסטים קבועים (כגון רשומות), או כאשר נדרש מעינה יחסית למשתנה – למשל במחסנית במסגרת רקורסיבית. הן עשויות גם לחסוך בקוד על ידי הסרת פקודות עזר רבות. עם זאת, הן איטיות יותר (למשל, 19 מחזורי שעון לקריאה עם אינדקס לעומת 11 בלבד עם HL ו־INC). לכן, לגישה פשוטה או סדרתית – IX/IY לרוב פחות יעילים. עם זאת, הם שימושיים כשאין אוגרים פנויים אחרים, או כשיש צורך למנוע שמירה ושחזור של אוגרים. חצאי ה־8 סיביות הלא־מתועדים (ראו להלן) של IX/IY מועילים במיוחד בכך, שכן הם אטיים פחות.

באופן דומה, פעולות חיבור של מספרים בני 16 סיביות אינן מהירות במיוחד (11 מחזורים, איטיות יותר מאשר ב־8080/8085), אך הן עדיין מהירות פי שניים מביצוע של אותם חישובים באמצעות פקודות של 8 סיביות, והן מפחיתות שימוש באוגרים. היה מקובל לשנות היסט פקודות עם אינדקס באופן דינמי – דוגמה לקוד שמשנה את עצמו, שהיה דבר שבשגרה במעבדים מוקדמים שהיו בעלי יחידות ביצוע לא מוצנרות (non-pipelined).

לאוגרי האינדקס קיימת פקודת קפיצה מקבילה ל־JP (HL), הנקראת JP (IX) או JP (IY). פקודה זאת נפוצה בשפות מונחות מחסנית כמו Forth (אנ'), שבהן כל "מילה" (תת־שגרה) מסתיימת בקפיצה לשגרה הראשית. שימוש ב־JP (IX) במקום JP THREAD חוסך בית ו־2 מחזורי שעון בכל פעם שיש צורך בקפיצה כזאת. עם זאת, האוגר צריך להיות פנוי לשם כך – או שיהיה צורך לטעון אותו מחדש כל הזמן, ובכך אובד יתרונו.

המעבד Z180, שפותח עשור מאוחר יותר, היה בעל שטח שבב גדול יותר שאִפשר יישום יעיל יותר (למשל, ALU מורחב יותר). הדבר נכון גם ל־Z800, Z280 ו־Z380. רק ב־eZ80, שהושק ב־2001, הושגו לבסוף ביצועים יעילים הקרובים למקסימום האפשרי מבחינת ארכיטקטורת Z80.

פקודות לא מתועדות

האוגרים IX ו־IY נועדו לשמש כאוגרי אינדקס גמישים בגודל 16 סיביות, שנועדו להקל על גישה לזיכרון, ניהול מסגרות מחסנית (stack frames) וטיפול במבני נתונים. לפי התיעוד הרשמי, הם פועלים כאוגרי 16 סיביות בלבד. בפועל, הם ממומשים כשני אוגרים בני 8 סיביות כל אחד[26] – בדיוק כמו האוגר HL, שניתן לגשת אליו כאוגר 16 סיביות או כשני אוגרים נפרדים: H (גבוה) ו־L (נמוך).

הקודים הבינאריים של הפקודות עבור IX ו־IY היו זהים לאלה של הפקודות שהתשמשו ב־HL, אך קדמה להם קידומת חדשה.[27] חברת זילוג פרסמה את קודי הפעולה ואת שמות הפקודות לפונקציונליות הרשמית של האוגרים הללו, אך לא תיעדה את העובדה שכל פקודה המופעלת על H או L תעבוד גם באותה מידה על החצאים בני 8 הסיביות של האוגרים IX ו־IY.

לדוגמה, קוד הפעולה 26h ואחריו ערך (שמייצגים את הפקודה LD H,n) טוען את הערך n לאוגר H. אך אם מוסיפים לפני הפקודה את הקידומת DD (הקידומת של אוגר IX), אזי הערך ייטען לאוגר IXH, כלומר לחצי העליון של IX. יוצאת דופן היא פקודה מהצורה LD H,(IX+d), שבה משתתפים גם HL וגם IX (או IY)[27] – כאן הקידומת DD מתייחסת רק לחלק (IX+d) שבפקודה.

שני חצאי האוגרים IX ו־IY יכולים לשמש גם כאוגרים רגילים לחישובים לוגיים ואריתמטיים בני 8 סיביות, מה שמאפשר לְפַנות את האוגרים הרגילים לשימושים אחרים. בנוסף, בעזרת פקודות לא מתועדות ניתן לבצע פעולות כמו הגדלה (INC) או הקטנה (DEC) של החצי העליון של האוגרים, ובכך להרחיב את אפשרויות השימוש באינדקס, מבלי להזדקק לפקודות מסורבלות כמו ADD IX,DE.

מעבר לכך, קיימות פקודות לא מתועדות נוספות.[28] המעבד אינו מזהה את הפקודות הללו כבלתי תקינות, ולעיתים פקודות אלה אף מפיקות תוצאות שימושיות. עם זאת, מכיוון שהן אינן חלק מההגדרה הרשמית של ערכת הפקודות, לא בטוח לכך שהתנהגותן תהיה זהה בכל השבבים המבוססים על Z80.

באגים

הפקודה OTDR אינה תואמת במדויק לתיעוד של ה־Z80. לפי התיעוד, שתי הפקודות OTIR ו־OTDR אינן אמורות להשפיע על דגל הנשא (Carry). בעוד OTIR אכן שומרת על כך, OTDR משנה את דגל הנשא לפי תוצאה של השוואה פנימית לא מתועדת בין הצובר A לבין ערך הפלט האחרון של הפקודה – דבר שעשוי להוביל להתנהגות בלתי צפויה.[29]

קוד לדוגמה

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

בלוק הנתונים מועתק בייט אחר בייט, ותנועת הנתונים יחד עם לוגיקת הלולאה משתמשות בפעולות על 16 סיביות. הקוד מדגים שימוש במגוון פקודות, אך בפועל לא היו כותבים אותו כך, משום שב־Z80 קיימת פקודה בודדת שיכולה להחליף את כל תת־השגרה הזו: LDIR.

הקוד לדוגמה מעתיק בייט אחד בכל 46 מחזורי שעון. שימוש ב־LDIR יאפשר להעתיק כל בייט ב־21 מחזורי שעון בלבד. הקוד המתורגם בינארית תואם למעבדים אינטל 8080 ו־8085.

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 1000
 1000
 1000 F5
 1001 7E
 1002 12
 1003 23
 1004 13
 1005 0B
 1006 78
 1007 B1
 1008 C2 01 10
 100B F1
 100C C9
 100D
 ; memcpy --
 ; Copy a block of memory from one location to another.
 ; This routine is the equivalent of LDIR
 ;
 ; Entry registers
 ; HL - Address of source data block
 ; DE - Address of destination data block
 ; BC - Number of bytes to copy
 ;
 ; Return registers
 ; HL - First byte after source data block
 ; DE - First byte after destination data block
 ; BC - Zero
 ; (LDIR does not fully save AF. H, P/V, and N are reset.)

             org     1000h       ; Origin at 1000h
 memcpy      public
             push    af          ; Save AF like LDIR
 loop        ld      a,(hl)      ; Copy 1 source byte
             ld      (de),a      ; to its destination
             inc     hl          ; Bump source pointer
             inc     de          ; Bump dest pointer
             dec     bc          ; Count the copied byte
             ld      a,b         ; Test BC for zero
             or      c           ; If BC != 0,
             jp      nz,loop     ; repeat the loop
             pop     af          ; Restore AF
             ret                 ; Return
             end

ביצוע פקודה

כל פקודה מבוצעת בשלבים המכונים בדרך כלל מחזורי מכונה (M-cycles), שכל אחד מהם יכול לקחת בין 3 ל־6 מחזורי שעון (T-states).[30] כל מחזור מכונה מקביל בערך לפעולת גישה יחידה לזיכרון, או לפעולה פנימית כלשהי. פקודות רבות מסתיימות במהלך מחזור ה־M1 של הפקודה שלאחר מכן, תופעה המכונה חפיפת אִחזור וביצוע (fetch/execute overlap).

מידע נוסף מחזורי מכונה (M-cycles), מחזורי שעון (T-states) ...

מחזורי המכונה של ה־Z80 מתוזמנים על ידי מכונת מצבים פנימית, הבונָה כל מחזור מכונה מ־3, 4, 5 או 6 מחזורי שעון, בהתאם לסוג הפקודה. תכנון זה מונע לוגיקה אסינכרונית מסורבלת וגורם לאותות הבקרה לפעול בעקביות בקצבי שעון שונים. דבר זה גם מחייב שימוש בגביש הרוטט בתדר גבוה יותר (פי 2–3) מזה שנדרש ללא תת־חלוקה זו של מחזורי המכונה. עם זאת, אין בכך דרישה לזיכרון מהיר יותר – להפך, רזולוציית הזמן הגבוהה מאפשרת חפיפה בין פעולת הזיכרון לפעולת המעבד, מה שמנצל את רוחב הפס של הזיכרון בצורה יעילה יותר.

אחת הדוגמאות המרכזיות לכך היא שבמהלך מחזור אִחזור קוד פעולה (M1), ה־Z80 מאריך את הגישה לזיכרון במחזור שעון נוסף (4 מחזורי שעון במקום 3), בניגוד למעבדים אחרים כמו 6502 (אנ') של MOS Technology או מוטורולה 6800 (אנ'). מכיוון שזמני הגישה לזיכרון בשנות ה־80 היו בין 250 ל־450 ננו־שניות, מעבדים מתחרים הוגבלו למהירויות שעון נמוכות יותר מאשר Z80.

באופן כללי, זכרונות היו איטיים בהשוואה לקצבי השעון במכונות המצבים במעבדים בני התקופה. לכן, אורך מחזור המכונה (machine cycle) הקצר ביותר האפשרי הוכתב לרוב על ידי מהירות הזיכרון ולא על ידי תדירות המעבד המקסימלית – במיוחד בתקופת המחשבים הביתיים. עם זאת, קשר זה השתנה במהלך העשורים האחרונים, במיוחד עבור זיכרונות SRAM, ומעבדים ללא מטמון (cacheless) עם ביצוע מחזור בודד, כמו eZ80, נעשו שוב מעשיים.

כאשר המעבד מפענח ומבצע פקודה, תוכן אוגר הרענון R נכתב לחצי התחתון של אפיק הכתובת, ואות בקרה לרענון (RFSH) מופעל. במקביל, תוכן אוגר הפסיקות I נכתב לחצי העליון של אפיק הכתובת.[32]

התקנים היקפיים תואמים

זילוג הציגה מספר התקנים היקפיים ל-Z80, שכולם תומכים במערכת טיפול הפסיקות ובמרחב כתובות הקלט/פלט של ה-Z80. התקנים אלה כוללים את ערוץ המונה/טיימר (CTC),[33] ה-SIO (קלט/פלט טורי), ה-DMA (גישה ישירה לזיכרון), ה-PIO (קלט/פלט מקבילי) וה־DART (מקלט-משדר כפול אסינכרוני). עם התפתחות המוצרים, שווקו גם גרסאות בעלות הספק נמוך, מהירות גבוהה וגרסאות CMOS שבבים אלה.

בדומה למעבדים 8080, 8085 ו-8086, אך בניגוד למעבדים כגון מוטורולה 6800 ו-MOS Technology 6502, ל-Z80 ול-8080 יש קו בקרה נפרד ומרחב כתובת לפקודות קלט/פלט. בעוד שמספר מחשבים מבוססי Z80 כגון אוסבורן 1 השתמשו בהתקני קלט/פלט ממופי זיכרון "בסגנון מוטורולה", בדרך כלל נעשה שימוש במרחב הקלט/פלט כדי לטפל באחד מהשבבים ההיקפיים הרבים של זילוג התואמים ל-Z80. במהלך התזמון לקריאת מהתקן קלט/פלט או כתיבת להתקן קלט/פלט, ה-Z80 מכניס אוטומטית מחזור המתנה בודד.[34] שבבי הקלט/פלט של זילוג תמכו בפסיקות מצב 2 החדשות של ה-Z80, אשר פִּשטו את הטיפול בפסיקות עבור מספר רב של התקנים היקפיים.

ה-Z80 תואר רשמית כתומך בזיכרון בעל מרחב כתובות של 16 סיביות (64 קילו־בייט), ובקלט/פלט בעל מרחב כתובת של 8 סיביות (256 יציאות). כל פקודות הקלט/פלט קובעות למעשה את כל אפיק הכתובות של 16 סיביות.OUT(C),reg ו־IN reg,(C) מציבות את התוכן של כל האוגר BC, בעל 16 הסיביות, על אפיק הכתובות;[29] OUT (n),A ו־IN A,(n) מציבות את תוכן אוגר A על קווים 8–15 של אפיק הכתובות ואת n על קווים 0-7של אפיק הכתובות. מתכנן יכול לבחור לפענח את כל אפיק הכתובת של 16 סיביות בפעולות קלט/פלט כדי לנצל את התכונה הזו, או להשתמש בחצי העליון של אפיק הכתובות כדי לבחור תכונות משנה של התקן הקלט/פלט. תכונה זו שימשה גם כדי למזער דרישות חומרה עבור פענוח, כגון במחשבים Amstrad CPC / PCW ו־ZX81.

Remove ads

ראו גם

לקריאה נוספת

  • Faggin, Federico; Peuto, Bernard; Shima, Masatoshi; Ungermann, Ralph (27 באפריל 2007). "Oral History Panel on the Development and Promotion of the Zilog Z8000 Microprocessor" (PDF) (ראיון). {{cite interview}}: (עזרה)

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

ויקישיתוף מדיה וקבצים בנושא זילוג Z80 בוויקישיתוף

ביאורים

  1. Load memory immediate. לא קיים ב־Datapoint 2200.

הערות שוליים

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads