กลับไปหน้าบทความ

อ่าน 32 นาที

ซิล็อก ซี80

Zilog Z80เป็น ไมโครโปรเซสเซอร์ 8 บิตที่ออกแบบโดยZilogเปิดตัวครั้งแรกในปี 1976 และมีบทบาทสำคัญในการพัฒนาคอมพิวเตอร์ส่วนบุคคล ยุคแรก มันถูกออกแบบมาให้ใช้ งานร่วม กับIntel 8080

ซิล็อก ซี80

ซิล็อก ซี80
ภาพระยะใกล้ของชิปคอมพิวเตอร์สีเงินที่มีกรอบสี่เหลี่ยมสีทองบนพื้นหลังสีขาว บนชิปมีข้อความเขียนว่า "ZILOG Z80 CPU DALLAS 7623"
รถยนต์รุ่น Z80 ผลิตในเดือนมิถุนายน ปี 1976
ข้อมูลทั่วไป
เปิดตัวกรกฎาคม พ.ศ. 2519
เลิกผลิตแล้วมิถุนายน 2567
ทำการตลาดโดยซิล็อก
ออกแบบโดยเฟเดริโก แฟกกิน , มาซาโตชิ ชิมะ
ผู้ผลิตทั่วไป
ผลงาน
ความเร็วสัญญาณนาฬิกาCPU สูงสุด2.5, 4, 6, 8, 10 MHz ถึง 20 MHz [ b ]
ความกว้างของข้อมูล8 บิต[ 1 ]
ความกว้างของที่อยู่16 บิต[ 1 ]
ข้อกำหนดทางกายภาพ
ทรานซิสเตอร์
  • 8,500
แพ็คเกจ
สถาปัตยกรรมและการจำแนกประเภท
แอปพลิเคชันแบบฝังตัว, แบบตั้งโต๊ะ, แบบพกพา
โหนดเทคโนโลยีกระบวนการ 4 ไมโครเมตร
ชุดคำสั่งZ80 [ c ]
ประวัติศาสตร์
ผู้มาก่อนอินเทล 8080
ผู้สืบทอด

Zilog Z80เป็น ไมโครโปรเซสเซอร์ 8 บิตที่ออกแบบโดยZilogเปิดตัวครั้งแรกในปี 1976 และมีบทบาทสำคัญในการพัฒนาคอมพิวเตอร์ส่วนบุคคล ยุคแรก มันถูกออกแบบมาให้ใช้ งานร่วม กับIntel 8080 ได้ในด้านซอฟต์แวร์โดยนำเสนอทางเลือกที่น่าสนใจเนื่องจากการบูรณาการ ที่ดีกว่า และประสิทธิภาพที่เพิ่มขึ้น นอกจากรีจิสเตอร์ เจ็ดตัว และรีจิสเตอร์แฟล็กของ 8080 แล้ว Z80 ยังได้เพิ่มชุดรีจิสเตอร์ทางเลือก รีจิสเตอร์ดัชนี 16 บิตสองตัว และคำสั่งเพิ่มเติม รวมถึงการจัดการบิตและการคัดลอก/ค้นหาบล็อก

เดิมที Z80 ถูกออกแบบมาเพื่อใช้ในระบบฝังตัว เช่นเดียวกับ 8080 แต่การผสมผสานระหว่างความเข้ากันได้ ราคาที่เหมาะสม และประสิทธิภาพที่เหนือกว่า ทำให้มีการนำไปใช้อย่างแพร่หลายใน ระบบวิดีโอเกม และ คอมพิวเตอร์ส่วนบุคคลในช่วงปลายทศวรรษ 1970 และต้นทศวรรษ 1980 ซึ่งช่วยกระตุ้น การปฏิวัติ คอมพิวเตอร์ส่วนบุคคล Z80 ถูกใช้ในผลิตภัณฑ์ที่เป็นสัญลักษณ์ เช่นOsborne 1 , Radio Shack TRS-80 , ColecoVision , ZX Spectrum , Sega Master Systemและ ตู้เกม Pac-Manในช่วงต้นทศวรรษ 1990 มันถูกใช้ในอุปกรณ์พกพา รวมถึงGame GearและTI-81และเครื่องคิดเลขกราฟิกที่ตามมา[ 2 ] [ 3 ]

Z80 เป็นผลงานของเฟเดริโก แฟกกินบุคคลสำคัญเบื้องหลังการสร้าง Intel 8080 หลังจากออกจาก Intel ในปี 1974 เขาได้ร่วมก่อตั้ง Zilog กับราล์ฟ อุงเกอร์มันน์ Z80 เปิดตัวในเดือนกรกฎาคม 1976 และความสำเร็จของมันทำให้ Zilog สามารถก่อตั้งโรงงานผลิตชิป ของตนเอง ได้[ 4 ] สำหรับการผลิตในระยะเริ่มต้น Zilog ได้อนุญาตให้ SynertekและMostek ในสหรัฐอเมริกา รวมถึงผู้ผลิตรายที่สอง ในยุโรปอย่าง SGS ผลิต Z80 การออกแบบนี้ยังถูกลอกเลียนแบบโดยผู้ผลิตชาวญี่ปุ่น ยุโรปตะวันออก และสหภาพโซเวียตหลายราย จนได้รับการยอมรับในตลาดโลก เนื่องจากบริษัทใหญ่ๆ เช่นNEC , Toshiba , SharpและHitachiผลิตเวอร์ชันของตนเองหรือโคลนที่เข้ากันได้

Z80 ยังคงถูกใช้ในระบบฝังตัวเป็นเวลาหลายปี แม้ว่าจะมีการเปิดตัวโปรเซสเซอร์ที่มีประสิทธิภาพมากขึ้นก็ตาม โดยยังคงผลิตต่อไปจนถึงเดือนมิถุนายน 2024 ซึ่งนับเป็น 48 ปีหลังจากที่เปิดตัวครั้งแรก Zilog ยังคงปรับปรุงการออกแบบพื้นฐานของ Z80 อย่างต่อเนื่องด้วยรุ่นต่อๆ มาหลายรุ่น ได้แก่Z180 , Z280และZ380โดยรุ่นล่าสุดคือeZ80ซึ่งเปิดตัวในปี 2001 และวางจำหน่ายในปี 2025 [ 5 ]

ประวัติศาสตร์

โฆษณาของ Z80 ในเดือนพฤษภาคม 1976 ระบุถึงข้อดีหลักๆ ที่เหนือกว่า 8080
ภาพถ่ายของ ไมโครโปรเซสเซอร์ Zilog Z80 รุ่นดั้งเดิมแบบdepletion-load nMOS ขนาด ของชิปทั้งหมดคือ 3545×3350 ไมโครเมตร สี่เหลี่ยมสีฟ้าที่อยู่รอบนอกคือแผ่นที่เชื่อมต่อกับขาภายนอก ชิปนี้ผลิตขึ้นในปี 1990
ชิปCMOS Z80 ใน แพ็คเกจแบบสี่เหลี่ยมแบน 44 ขา

ประวัติศาสตร์ยุคแรก

ที่Fairchild Semiconductorและต่อมาที่Intel นักฟิสิกส์และวิศวกร Federico Fagginได้ทำงานเกี่ยวกับเทคโนโลยีการผลิตทรานซิสเตอร์และเซมิคอนดักเตอร์ ขั้นพื้นฐาน เขายังได้พัฒนาวิธีการออกแบบพื้นฐานที่ใช้สำหรับหน่วยความจำและ ไมโครโปรเซสเซอร์ที่ Intel และเป็นผู้นำในการทำงานเกี่ยวกับIntel 4004 , Intel 8080และ IC อื่นๆ อีกหลายตัวMasatoshi Shimaเป็นนักออกแบบตรรกะและทรานซิสเตอร์ระดับหลักของ 4004 และ 8080 ภายใต้การดูแลของ Faggin ในขณะที่Ralph Ungermannรับผิดชอบการออกแบบวงจรรวม แบบกำหนดเอง [ 6 ]

ในช่วงต้นปี 1974 อินเทลมองว่าไมโครโปรเซสเซอร์ไม่ใช่ผลิตภัณฑ์ที่จะขายได้ด้วยตัวเอง แต่เป็นวิธีการขายผลิตภัณฑ์หลักของบริษัทให้มากขึ้น นั่นคือสแตติกแรมและรอมการปรับโครงสร้างองค์กรทำให้บางส่วนที่เคยเป็นอิสระอยู่ภายใต้การดูแลของเลส วาดาสซ์ ซึ่งยิ่งทำให้บทบาทของไมโครโปรเซสเซอร์ในบริษัทลดลงไปอีก ในปีนั้นภาวะเศรษฐกิจถดถอยปี 1973–1975มาถึงจุดสูงสุด และอินเทลได้เลิกจ้างพนักงานหลายคน[ 6 ]ทั้งหมดนี้ทำให้แฟกกินรู้สึกกระสับกระส่าย เขาจึงชวนอุงเกอร์มันน์ไปดื่มและถามว่าเขาสนใจที่จะเริ่มต้นบริษัทของตัวเองหรือไม่ อุงเกอร์มันน์ตกลงทันที และเนื่องจากเขามีงานทำที่อินเทลน้อยลง เขาจึงลาออกในเดือนสิงหาคมหรือกันยายน ตามด้วยแฟกกิน ซึ่งวันสุดท้ายที่อินเทลคือวันฮาโลวีนปี 1974 [ 7 ]เมื่อชิมะได้ยิน เขาจึงขอเข้าร่วมบริษัทใหม่ด้วย แต่เนื่องจากไม่มีการออกแบบผลิตภัณฑ์หรือเงินทุน พวกเขาจึงบอกให้เขารอ[ 8 ]

บริษัทที่เพิ่งก่อตั้งและยังไม่มีชื่อนี้ เริ่มต้นด้วยการออกแบบไมโครคอนโทรลเลอร์ แบบชิปเดี่ยว ที่เรียกว่า 2001 พวกเขาได้พบกับSynertekเพื่อหารือเกี่ยวกับการผลิตในสายการผลิตของพวกเขา และเมื่อ Faggin เริ่มเข้าใจต้นทุนที่เกี่ยวข้อง ก็ชัดเจนว่าผลิตภัณฑ์ต้นทุนต่ำเช่นนี้จะไม่สามารถแข่งขันกับการออกแบบจากบริษัทที่มีสายการผลิตของตนเอง เช่น Intel ได้ จากนั้นพวกเขาก็เริ่มพิจารณาไมโครโปรเซสเซอร์ที่ซับซ้อนกว่าแทน ซึ่งในตอนแรกเรียกว่า Super 80 โดยมีคุณสมบัติหลักคือการใช้บัส +5 V [ 8 ]แทนที่จะเป็น −5, +5 และ 12 V ที่ใช้กันทั่วไปในการออกแบบเช่น 8080 การออกแบบใหม่นี้มีจุดประสงค์เพื่อให้เข้ากันได้กับ 8080 แต่เพิ่มคุณสมบัติหลายอย่างของ Motorola 6800รวมถึงรีจิสเตอร์ดัชนีและการขัดจังหวะที่ ได้รับการปรับปรุง [ 9 ]

การลงทุนของเอ็กซอน เริ่มการพัฒนารายละเอียดแล้ว

ในขณะที่บริษัทยังอยู่ในช่วงเริ่มต้น นิตยสารข่าวอุตสาหกรรมElectronic Newsได้รับทราบเรื่องนี้และตีพิมพ์เรื่องราวเกี่ยวกับบริษัทที่เพิ่งก่อตั้งใหม่ ซึ่งดึงดูดความสนใจของ Exxon Enterprises ซึ่ง เป็นหน่วยงานด้านการลงทุนเทคโนโลยีขั้นสูงของ Exxonในขณะนั้น ท่ามกลางภาวะเศรษฐกิจถดถอย มีเงินทุนร่วมลงทุน น้อยมาก โดยมีการใช้จ่ายเงินทั้งหมดเพียง 10 ล้านดอลลาร์สหรัฐสำหรับอุตสาหกรรมทั้งหมดในปี 1975 (เทียบเท่ากับ 60 ล้านดอลลาร์สหรัฐในปี 2025) มีคนจาก Exxon ติดต่อบริษัทที่ยังไม่มีชื่อ[ 8 ]และจัดการประชุมซึ่งในที่สุดนำไปสู่การที่พวกเขาให้เงินทุนเริ่มต้น 500,000 ดอลลาร์สหรัฐในเดือนมิถุนายน 1975 (เทียบเท่ากับ 3 ล้านดอลลาร์สหรัฐในปี 2025) [ 10 ]

เมื่อมีการหารือเรื่องการจัดหาเงินทุนและออกแบบเพื่อก่อสร้าง มาซาโตชิ ชิมะได้เข้าร่วมในเดือนกุมภาพันธ์ พ.ศ. 2518 [ 9 ]ชิมะได้เริ่มสร้างการออกแบบระดับสูงทันที โดยเพิ่มแนวคิดของตนเองเข้าไปหลายประการ โดยเฉพาะอย่างยิ่ง เขาใช้ประสบการณ์ของเขาเกี่ยวกับมินิคอมพิวเตอร์NEC เพื่อเพิ่มแนวคิดของรีจิสเตอร์โปรเซสเซอร์ สองชุด เพื่อให้สามารถตอบสนองต่อการขัดจังหวะได้ อย่างรวดเร็ว [ 7 ] [ d ]อังเกอร์แมนเริ่มพัฒนาตัวควบคุมและชิปอุปกรณ์ต่อพ่วงที่เกี่ยวข้องหลายชุดเพื่อเสริมการออกแบบ[ 11 ]

ตลอดช่วงเวลานี้ ชิมะได้สร้างชื่อเสียงอันโด่งดังในด้านความสามารถในการแปลงแนวคิดเชิงตรรกะให้เป็นการออกแบบทางกายภาพแบบเรียลไทม์ ในขณะที่กำลังพูดคุยเกี่ยวกับคุณสมบัติที่เสนอ เขามักจะขัดจังหวะและระบุว่าคุณสมบัตินั้นจะใช้พื้นที่บนชิปมากแค่ไหน และจะคัดค้านการเพิ่มคุณสมบัตินั้นหากมีขนาดใหญ่เกินไป[ 12 ]การออกแบบรอบแรกเสร็จสมบูรณ์ในเดือนเมษายน พ.ศ. 2518 ชิมะได้ออกแบบโครงร่างตรรกะเสร็จสมบูรณ์ในช่วงต้นเดือนพฤษภาคม เวอร์ชันที่สองของการออกแบบตรรกะได้รับการเผยแพร่ในวันที่ 7 สิงหาคม และรายละเอียดของบัสในวันที่ 16 กันยายน การผลิตเทปเสร็จสมบูรณ์ในเดือนพฤศจิกายน และการแปลงเทปเป็นหน้ากากการผลิตต้องใช้เวลาอีกสองเดือน[ 13 ]

แฟกกินได้เริ่มมองหาพันธมิตรในการผลิตแล้ว ในเวลานั้น Synertek และMostekต่างก็ตั้งสายการผลิตแบบ depletion-mode ที่สามารถใช้ในการผลิตตามแบบได้ เนื่องจากเคยพูดคุยกับ Synertek มาก่อน แฟกกินจึงติดต่อพวกเขาก่อน อย่างไรก็ตาม ประธานของ Synertek เรียกร้องให้บริษัทได้รับ ใบอนุญาต แหล่งผลิตที่สองซึ่งอนุญาตให้พวกเขาขายแบบได้โดยตรง แฟกกินคิดว่านั่นหมายความว่าพวกเขาจะไม่สามารถแข่งขันได้เลยแม้ว่าพวกเขาจะตั้งสายการผลิตของตนเอง และข้อตกลงก็ล้มเหลว จากนั้นเขาจึงหันไปหา Mostek ซึ่งตกลงตามเงื่อนไขการผูกขาดในขณะที่ Zilog ตั้งสายการผลิต และในที่สุดก็ได้รับข้อตกลงแหล่งผลิตที่สอง[ 14 ]

หลังจากพิจารณาชื่อหลายชื่อสำหรับบริษัทใหม่ และพบว่าชื่อเหล่านั้นไม่น่าจดจำจนจำไม่ได้แม้กระทั่งวันต่อมา แฟกกินและอุงเกอร์มันน์จึงเริ่มคิดหาไอเดียโดยใช้ "ตรรกะแบบบูรณาการ" เมื่ออุงเกอร์มันน์กล่าวว่า "แล้ว Zilog ล่ะ?" แฟกกินเห็นด้วยทันที โดยกล่าวว่าพวกเขาสามารถพูดได้ว่ามันคือ "คำสุดท้ายของตรรกะแบบบูรณาการ" เมื่อพวกเขาพบกันในวันถัดไปและทั้งคู่จำชื่อนั้นได้ทันที บริษัทจึงมีชื่อนี้[ 15 ]

เข้าสู่กระบวนการผลิต

ตัวอย่างแรกถูกส่งคืนจาก Mostek เมื่อวันที่ 9 มีนาคม พ.ศ. 2519 [ 11 ]ภายในสิ้นเดือนนั้น พวกเขายังได้สร้างระบบพัฒนาที่ใช้แอสเซมเบลอร์ เสร็จสมบูรณ์อีก ด้วย ไอซีสนับสนุนและอุปกรณ์ต่อพ่วง Z80 บางส่วนอยู่ระหว่างการพัฒนาในช่วงเวลานี้ และบางส่วนได้เปิดตัวในปีถัดมา ในจำนวนนั้นได้แก่ Z80 CTC (ตัวนับ/ตัวจับเวลา), Z80 DMA [ 16 ] (การเข้าถึงหน่วยความจำโดยตรง), Z80 DART (ตัวรับ-ส่งสัญญาณแบบอะซิงโครนัสคู่), Z80 SIO (ตัวควบคุมการสื่อสารแบบซิงโครนัส) และ Z80 PIO (อินพุต/เอาต์พุตแบบขนาน)

Z80 เปิดตัวอย่างเป็นทางการในเดือนกรกฎาคม พ.ศ. 2519 [ 17 ]ในขณะนั้น อุตสาหกรรมเซมิคอนดักเตอร์มีความกังวลเกี่ยวกับการลอกเลียนแบบการออกแบบชิปโดยไม่ได้รับอนุญาตจากผู้ผลิตต่างประเทศ เพื่อช่วยยับยั้งการวิศวกรรมย้อนกลับ ทีมงาน Zilog ได้รวม "กับดัก" หกตัว ซึ่งเป็นทรานซิสเตอร์ที่ได้รับการดัดแปลงอย่างละเอียดเพื่อให้ทำงานแตกต่างจากที่ปรากฏให้เห็น ตามคำกล่าวของชิมะ วิศวกรของNECบอกเขาในภายหลังว่ากับดักเหล่านี้ทำให้ความพยายามในการวิศวกรรมย้อนกลับของพวกเขาล่าช้าไปหกเดือน[ 18 ]ต่อมา NEC ได้ยุติข้อพิพาทเรื่องการละเมิดสิทธิบัตรกับ Zilog โดยได้รับใบอนุญาตในการผลิต Z80 และชิปอื่นๆ เวอร์ชันที่ได้รับอนุญาต[ 19 ]

หลังจากการเปิดตัว Z80 ที่ประสบความสำเร็จ Faggin และ Ungermann ได้ติดต่อ Exxon เพื่อขอเงินทุนในการจัดตั้งโรงงานผลิตเซมิคอนดักเตอร์ Exxon ตกลง และ Zilog ได้สร้างสายการผลิตของตนเอง ทำให้บริษัทสามารถครองส่วนแบ่งตลาดประมาณ 60 ถึง 70 เปอร์เซ็นต์ของตลาดขาย Z80 ทั้งหมด[ 20 ]ในขณะเดียวกัน Mostek ได้รับอนุญาตให้ผลิตชิปเวอร์ชันที่ได้รับอนุญาต คือ MK3880 ซึ่งเป็นแหล่งผลิตสำรองสำหรับลูกค้า ซึ่งเป็นมาตรการป้องกันที่ Intel ขาดไป ในขณะนั้น ข้อตกลงแหล่งผลิตสำรองถือเป็นสิ่งจำเป็น โดยเฉพาะอย่างยิ่งสำหรับบริษัทสตาร์ทอัพอย่าง Zilog ซึ่งมีความเสี่ยงสูงต่อความล้มเหลวทางธุรกิจและการหยุดชะงักของอุปทาน[ e ] [ 9 ]

เปรียบเทียบกับ 8080

Faggin ออกแบบชุดคำสั่งให้เข้ากันได้กับไบนารีของ 8080 [ 21 ] [ 22 ]เพื่อให้โค้ดส่วนใหญ่ของ 8080 โดยเฉพาะระบบปฏิบัติการCP/M และ คอมไพเลอร์ PL/M ของ Intel สำหรับ 8080 (รวมถึงโค้ดที่สร้างขึ้น) สามารถทำงานได้โดยไม่ต้องแก้ไขบน CPU Z80 ใหม่ Masatoshi Shima ออกแบบสถาปัตยกรรมไมโคร ส่วนใหญ่ รวมถึงระดับเกตและทรานซิสเตอร์ของ CPU Z80 โดยได้รับความช่วยเหลือจากวิศวกรและผู้เชี่ยวชาญด้านการจัดวาง จำนวนเล็กน้อย [ 23 ] [ 24 ] CEO Federico Faggin มีส่วนร่วมอย่างมากในงานออกแบบชิป ร่วมกับผู้เชี่ยวชาญด้านการจัดวางอีกสองคน ตามคำกล่าวของ Faggin เขาทำงาน 80 ชั่วโมงต่อสัปดาห์เพื่อให้ตรงตามกำหนดการที่เข้มงวดที่กำหนดโดยนักลงทุนทางการเงิน[ 4 ]

Z80 นำเสนอการปรับปรุงหลายอย่างเหนือกว่า 8080: [ 22 ]

  • ชุดคำสั่งที่ได้รับการปรับปรุงประกอบด้วย:
    • ระบบ ช่วยจำคำสั่งแอสเซมเบลอร์ที่สมเหตุสมผล เข้าใจง่าย และอ่านง่ายยิ่งขึ้น
    • คำสั่งการเคลื่อนย้ายข้อมูล 16 บิต (โหลด หรือ LD) ที่มีความยืดหยุ่นมากขึ้น รวมถึงคำสั่ง SP ซึ่งเป็นตัวชี้สแต็กที่สำคัญ
    • โหมดการกำหนดแอดเดรสที่ยืดหยุ่นยิ่งขึ้นสำหรับการรับส่งข้อมูลไปยังพอร์ตอุปกรณ์ต่อพ่วงภายนอก
    • การกำหนดแอดเดรสแบบบิตเดียวสำหรับรีจิสเตอร์และหน่วยความจำทั้งหมด รวมถึงการทดสอบบิต
    • เลื่อน/หมุนค่าในหน่วยความจำและรีจิสเตอร์อื่นๆ นอกเหนือจากตัวสะสม (accumulator)
    • รองรับการลบสำหรับเลขคณิตBCD
    • คำสั่งหมุนสำหรับสตริงตัวเลขBCD ที่บรรจุอยู่ ในหน่วยความจำ
    • การลบ 16 บิต และการกลับเครื่องหมาย 8 บิต
    • การวนซ้ำโปรแกรม
    • การกระโดดสัมพัทธ์ของตัวนับโปรแกรม (PC)
    • คำสั่งคัดลอกบล็อกคำสั่งรับ/ส่งข้อมูล (I/O) บล็อกและคำสั่งค้นหาไบต์[ 25 ]
  • แฟล็กโอเวอร์โฟลว์ที่รองรับการคำนวณเลขคณิตแบบมีเครื่องหมาย 8 บิตและ 16 บิตได้ดีขึ้น[ f ]
  • รีจิสเตอร์ดัชนี IX และ IY ใหม่พร้อมโหมดการกำหนดแอดเดรสแบบฐานบวกออฟเซ็ต
  • ระบบ ขัดจังหวะที่ดีกว่า:
    • ระบบขัดจังหวะเวกเตอร์อัตโนมัติและทั่วไปมากขึ้นโหมด2ซึ่งส่วนใหญ่มีไว้สำหรับตัวนับ/ตัวจับเวลา DMA และตัวควบคุมการสื่อสารของ Zilog รวมถึงระบบขัดจังหวะเวกเตอร์คงที่โหมด 1สำหรับระบบง่ายๆ ที่มีฮาร์ดแวร์น้อยที่สุด (โดยโหมด 0เป็นโหมดที่เข้ากันได้กับ 8080) [ 26 ]
    • การขัดจังหวะที่ไม่สามารถปิดกั้นได้ (NMI) ซึ่งสามารถใช้เพื่อตอบสนองต่อสถานการณ์การปิดเครื่องหรือเหตุการณ์ที่มีลำดับความสำคัญสูงอื่นๆ (และช่วยให้ระบบ Z80 ที่เรียบง่ายสามารถใช้งานรูปแบบการขัดจังหวะสองระดับในโหมด 1 ได้อย่างง่ายดาย )
  • ไฟล์รีจิสเตอร์สำเนาสมบูรณ์[ 27 ]ซึ่งสามารถสลับได้อย่างรวดเร็วเพื่อเร่งการตอบสนองต่อการขัดจังหวะเช่น ตัวจัดการเหตุการณ์แบบอะซิงโครนัสที่รวดเร็วหรือตัวจัดการมัลติทาสก์แม้ว่าจะไม่ได้มีจุดประสงค์เพื่อใช้เป็นรีจิสเตอร์เพิ่มเติมสำหรับโค้ดทั่วไป แต่ก็ยังถูกนำไปใช้ในลักษณะนั้นในบางแอปพลิเคชัน[ g ]
  • ลดจำนวนฮาร์ดแวร์ที่จำเป็นสำหรับแหล่งจ่ายไฟการสร้างสัญญาณนาฬิกา และการเชื่อมต่อกับหน่วยความจำและอินพุต/เอาต์พุต
  • แหล่งจ่ายไฟ 5 โวลต์ตัวเดียว (ชิป 8080 ต้องการแรงดันไฟ −5 V, +5 V และ +12 V)
  • สัญญาณนาฬิกาเฟสเดียว 5 โวลต์ (ไมโครคอนโทรลเลอร์ 8080 ต้องการสัญญาณนาฬิกาแบบสองเฟส ที่มีแอมพลิจูดสูง (9 ถึง 12 โวลต์) และไม่ทับซ้อนกัน )
  • การรีเฟรชDRAM ในตัวซึ่งปกติจะต้องใช้วงจรภายนอก ชิป 8080 ได้รับการออกแบบก่อนที่ DRAM จะถูกใช้งานอย่างแพร่หลาย และSRAM ทั่วไป ไม่จำเป็นต้องมีการรีเฟรช ในช่วงกลางทศวรรษ 1970 DRAM ได้เข้ามาแทนที่ SRAM ในงานส่วนใหญ่แล้ว แต่การใช้ DRAM กับชิป 8080 จำเป็นต้องใช้วงจรภายนอกเพิ่มเติม การนำระบบนี้มาใช้ภายในชิป Z80 ช่วยลดความซับซ้อนและต้นทุนของระบบโดยรวม[ h ]
  • บัสที่ไม่ใช้มัลติเพล็กซ์ (ชิป 8080 ใช้สัญญาณสถานะแบบมัลติเพล็กซ์บนบัสข้อมูล)
  • การรีเซ็ตพิเศษที่ตั้งค่าตัวนับโปรแกรมเป็นศูนย์เท่านั้น เพื่อให้สามารถใช้ CPU Z80 ตัวเดียวในระบบพัฒนา เช่นอีมูเลเตอร์แบบอินเซอร์กิตได้[ 28 ]

ความสำเร็จในตลาด

Z80 เข้ามาแทนที่ 8080 และรุ่นต่อมาคือ8085ในตลาดโปรเซสเซอร์[ 29 ]และกลายเป็นหนึ่งในซีพียู 8 บิตที่ได้รับความนิยมและใช้งานอย่างแพร่หลายมากที่สุด[ 30 ] [ 31 ]บางองค์กร เช่นBritish Telecomยังคงภักดีต่อ 8085 สำหรับแอปพลิเคชันฝังตัว เนื่องจากความคุ้นเคยกับมันและอินเทอร์เฟซอนุกรมบนชิปและสถาปัตยกรรมการขัดจังหวะ ในทำนองเดียวกันZenith Data Systems ได้จับคู่ 8085 กับ Intel 8088 16 บิตในคอมพิวเตอร์ MS-DOS เครื่องแรกของพวกเขาZenith Z-100แม้ว่าจะมีประสบการณ์มาก่อนกับผลิตภัณฑ์Heathkit H89 และ Zenith Z-89 ที่ใช้ Z80 เป็นผู้บุกเบิกก็ตาม อย่างไรก็ตาม มีคอมพิวเตอร์รุ่นอื่นๆ ที่ผลิตขึ้นโดยการนำชิป Z80 ไปใช้ร่วมกับซีพียูอื่นๆ เช่น Radio Shack TRS-80 Model 16ที่ใช้Motorola 68000 , DEC Rainbowที่ใช้ 8088 และCommodore 128ที่ใช้MOS Technology 8502

ต่อมา Zilog ได้ผลิตชิป Z80 ที่ใช้พลังงานต่ำซึ่งเหมาะสมกับตลาดคอมพิวเตอร์แล็ปท็อปที่กำลังเติบโตในช่วงต้นทศวรรษ 1980 ขณะที่ Intel ผลิตชิป CMOS 8085 (80C85) ที่ใช้ในคอมพิวเตอร์พกพาที่ใช้แบตเตอรี่ เช่น แล็ป ท็อปที่ออกแบบโดย Kyoceraซึ่งวางจำหน่ายในเดือนเมษายน 1983 และจำหน่ายโดย Tandy (ในชื่อรุ่น TRS-80 Model 100 ), Olivetti และ NEC อย่างไรก็ตาม ในปีต่อๆ มา ชิป Z80 เวอร์ชัน CMOS (จากทั้ง Zilog และผู้ผลิตชาวญี่ปุ่น) ก็ได้ครองตลาดนี้เช่นกัน ในผลิตภัณฑ์ต่างๆ เช่นAmstrad NC100 , Cambridge Z88และ WP-2 ของ Tandy เอง

บางทีปัจจัยสำคัญที่ทำให้ Z80 ประสบความสำเร็จในระยะแรกก็คือระบบรีเฟรช DRAM ในตัว อย่างน้อยก็ในตลาดอย่างCP/Mและคอมพิวเตอร์สำนักงานและคอมพิวเตอร์บ้านอื่นๆ ( ระบบฝังตัว Z80 ส่วนใหญ่ ใช้RAM แบบคงที่ซึ่งไม่จำเป็นต้องรีเฟรช) นอกจากนี้อาจเป็นระบบขัดจังหวะแบบสองระดับที่เรียบง่าย หรือในทางกลับกัน ระบบขัดจังหวะแบบลูกโซ่หลายระดับทั่วไปที่ใช้งานได้สะดวกในการจัดการชิป IO ของ Z80 หลายตัว คุณสมบัติเหล่านี้ทำให้สามารถสร้างระบบได้โดยใช้ฮาร์ดแวร์สนับสนุนน้อยลงและมีโครงสร้างแผงวงจรที่เรียบง่ายกว่า

อย่างไรก็ตาม บางคนอ้างว่าความนิยมของมันเกิดจากรีจิสเตอร์ที่ซ้ำกันซึ่งช่วยให้สามารถสลับบริบทได้อย่างรวดเร็วหรือประมวลผลสิ่งต่างๆ เช่น คณิตศาสตร์จุดลอยตัวได้อย่างมีประสิทธิภาพมากขึ้นเมื่อเทียบกับซีพียู 8 บิตที่มีรีจิสเตอร์น้อยกว่า (Z80 สามารถเก็บตัวเลขดังกล่าวไว้ภายในได้หลายตัว โดยใช้ HL'HL, DE'DE และ BC'BC เป็นรีจิสเตอร์ 32 บิต หลีกเลี่ยงการเข้าถึงจาก RAM ที่ช้ากว่าในระหว่างการคำนวณ) [ 32 ]

สำหรับ การออกแบบ NMOS ดั้งเดิม ขีดจำกัดความถี่สัญญาณนาฬิกาสูงสุดที่ระบุไว้จะเพิ่มขึ้นอย่างต่อเนื่องจาก 2.5  MHz ในช่วงเริ่มต้น ผ่าน 4 MHz (Z80A) ที่เป็นที่รู้จักกันดี ไปจนถึง 6 MHz (Z80B) และ 8 MHz (Z80H) [ 33 ] [ 34 ]เวอร์ชัน NMOS ถูกผลิตขึ้นเป็นชิ้นส่วน 10 MHz ตั้งแต่ช่วงปลายทศวรรษ 1980 เวอร์ชัน CMOSได้รับการพัฒนาโดยมีขีดจำกัดความถี่สูงสุดที่ระบุไว้ตั้งแต่ 4 MHz จนถึง 20 MHz สำหรับเวอร์ชันที่จำหน่ายในปัจจุบัน เวอร์ชัน CMOS อนุญาตให้ใช้งานในโหมดสแตนด์บายพลังงานต่ำโดยคงสถานะภายในไว้ โดยไม่มีขีดจำกัดความถี่ต่ำสุด[ i ]อนุพันธ์ที่เข้ากันได้อย่างสมบูรณ์HD64180 / Z180 [ 35 ] [ 36 ]และeZ80ปัจจุบันระบุไว้ที่ 33 MHz และ 50 MHz ตามลำดับ

ออกแบบ

แบบจำลองการเขียนโปรแกรมและชุดรีจิสเตอร์

แผนภาพบล็อกโดยประมาณของ Z80: ไม่มีตัวบวกเฉพาะสำหรับค่าออฟเซ็ตหรือตัวเพิ่มค่าแยกต่างหากสำหรับ R และไม่จำเป็นต้องมีรีจิสเตอร์ชั่วคราว WZ ขนาด 16 บิตมากกว่าหนึ่งตัว (แม้ว่าสลักตัวเพิ่มค่าจะถูกใช้เป็นรีจิสเตอร์ชั่วคราวขนาด 16 บิตในบริบทอื่น ๆ ก็ตาม) รีจิสเตอร์ PC และ IR จะถูกจัดไว้ในกลุ่มแยกต่างหาก โดยมีส่วนบัสที่ถอดได้ เพื่อให้สามารถอัปเดตรีจิสเตอร์เหล่านี้แบบขนานกับธนาคารรีจิสเตอร์หลักได้[ 37 ]

รูปแบบการเขียนโปรแกรมและชุดรีจิสเตอร์ของ Z80 นั้นค่อนข้างเป็นแบบดั้งเดิม โดยพื้นฐานแล้วอิงตามโครงสร้างรีจิสเตอร์ของDatapoint 2200 Z80 ได้รับการออกแบบให้เป็นส่วนขยายของ Intel 8080 ซึ่งสร้างโดยวิศวกรกลุ่มเดียวกัน และ Intel 8080 เองก็เป็นส่วนขยายของ8008 อีกที 8008 นั้นโดยพื้นฐานแล้วเป็นการ ใช้งาน PMOSของ CPU แบบ TTL ของ Datapoint 2200 [ j ]

การออกแบบ 2200 อนุญาตให้จับคู่รีจิสเตอร์ 8 บิต H และ L (สูงและต่ำ) เป็นรีจิสเตอร์แอดเดรส 16 บิต HL [ k ]ใน 8080 การจับคู่นี้ถูกเพิ่มเข้าไปในคู่ BC และ DE เช่นกัน ในขณะที่ HL ได้รับการขยายให้สามารถใช้งานเป็นตัวสะสม 16 บิต ไม่ใช่แค่รีจิสเตอร์แอดเดรสเท่านั้น 8080 ยังแนะนำข้อมูล 16 บิตแบบทันทีสำหรับการโหลด BC, DE, HL และ SP นอกจากนี้ การคัดลอกข้อมูล 16 บิตโดยตรงระหว่าง HL และหน่วยความจำก็เป็นไปได้แล้ว โดยใช้แอดเดรสโดยตรง

โปรเซสเซอร์ Z80 ได้พัฒนาแนวคิดนี้ให้ดียิ่งขึ้นไปอีก โดยทำให้คู่รีจิสเตอร์ 16 บิตทั้งหมด รวมถึง IX และ IY สามารถใช้งานได้หลากหลายมากขึ้น และยังอนุญาตให้คัดลอกข้อมูล 16 บิตโดยตรงไปยังและจากหน่วยความจำสำหรับคู่รีจิสเตอร์เหล่านี้ทั้งหมดได้อีกด้วย รีจิสเตอร์ IX และ IY ขนาด 16 บิตใน Z80 มีจุดประสงค์หลักเพื่อใช้เป็นรีจิสเตอร์ที่อยู่ฐาน โดยคำสั่งเฉพาะจะให้ค่าออฟเซ็ตคงที่ซึ่งจะถูกเพิ่มเข้าไปในค่าก่อนหน้า แต่ก็สามารถใช้เป็นตัวสะสม 16 บิตได้เช่นกัน ข้อจำกัดอย่างหนึ่งคือ การอ้างอิงตัวถูกดำเนินการทั้งหมดที่เกี่ยวข้องกับ IX หรือ IY ต้องใช้ไบต์คำนำหน้าคำสั่งเพิ่มเติม ซึ่งจะเพิ่มเวลาอย่างน้อยสี่รอบสัญญาณนาฬิกาเมื่อเทียบกับการใช้คำสั่ง HL แทน ซึ่งบางครั้งทำให้การใช้ IX หรือ IY มีประสิทธิภาพน้อยกว่าวิธีการที่ใช้เฉพาะรีจิสเตอร์รุ่น 8080 เท่านั้น นอกจากนี้ Z80 ยังได้เพิ่มแฟล็กโอเวอร์โฟลว์ แบบมีเครื่องหมายใหม่ และเสริมการคำนวณเลขคณิต 16 บิตที่ค่อนข้างง่ายของ 8080 ด้วยคำสั่งเฉพาะสำหรับการคำนวณเลขคณิต 16 บิต แบบมีเครื่องหมาย

แผนผังขาของชิปZ80 รุ่นDIP40 ดั้งเดิม

รีจิสเตอร์ที่เข้ากันได้กับ 8080 ได้แก่ AF, BC, DE, HL จะถูกทำซ้ำเป็นไฟล์รีจิสเตอร์แยกต่างหากใน Z80 [ 38 ]ซึ่งโปรเซสเซอร์สามารถสลับจากแบงค์หนึ่งไปยังอีกแบงค์หนึ่งได้อย่างรวดเร็ว (ในสี่ t-state ซึ่งเป็นเวลาดำเนินการน้อยที่สุดที่เป็นไปได้สำหรับคำสั่ง Z80 ใดๆ) [ 39 ]ซึ่งเป็นคุณสมบัติที่มีประโยชน์สำหรับการเร่งความเร็วในการตอบสนองต่อการขัดจังหวะระดับเดียวที่มีลำดับความสำคัญสูง ชุดรีจิสเตอร์คู่มีประโยชน์ในบทบาทของระบบฝังตัว เนื่องจากช่วยปรับปรุงประสิทธิภาพการจัดการการขัดจังหวะ แต่พบว่ามีการใช้งานอย่างแพร่หลายในบทบาทของคอมพิวเตอร์ส่วนบุคคลในฐานะชุดรีจิสเตอร์ทั่วไปเพิ่มเติมสำหรับโค้ดที่ซับซ้อน เช่นการคำนวณเลขทศลอยหรือเกมคอมพิวเตอร์ที่บ้าน

ไฟล์รีจิสเตอร์ที่ซ้ำกันมักถูกเรียกว่า "ชุดรีจิสเตอร์ทางเลือก" (หรือที่บางคนเรียกว่าไฟล์รีจิสเตอร์ "ไพรม์" เนื่องจากมีการใช้เครื่องหมายอะพอสโทรฟีเพื่อระบุในซอร์สโค้ดแอสเซมเบลอร์และเอกสารประกอบของ Zilog) ซึ่งเน้นย้ำว่ามีเพียงชุดเดียวเท่านั้นที่สามารถเข้าถึงได้ในแต่ละครั้ง อย่างไรก็ตาม ตัวสะสม 8 บิต A พร้อมรีจิสเตอร์แฟล็ก F นั้นแยกออกจากคู่รีจิสเตอร์ "อเนกประสงค์" HL, DE และ BC โดยใช้คำสั่งแยกกันสองคำสั่งเพื่อสลับการเข้าถึง: คำสั่งหนึ่ง EX AF,AF'สลับเฉพาะคู่รีจิสเตอร์ AF กับ AF' ในขณะที่อีกEXXคำสั่งหนึ่งสลับคู่รีจิสเตอร์อเนกประสงค์สามคู่ HL, DE และ BC กับรีจิสเตอร์ทางเลือก HL', DE' และ BC' ดังนั้น ตัวสะสม A จึงสามารถโต้ตอบกับรีจิสเตอร์ 8 บิตอเนกประสงค์ใดๆ ในไฟล์รีจิสเตอร์ทางเลือก (หรือไพรม์) ได้อย่างอิสระ หรือหาก HL' มีตัวชี้ไปยังหน่วยความจำ ก็สามารถโต้ตอบกับไบต์บางไบต์ในนั้นได้ (DE' และ BC' ยังสามารถถ่ายโอนข้อมูล 8 บิตระหว่างหน่วยความจำและตัวสะสม A ได้อีกด้วย)

สิ่งนี้อาจสร้างความสับสนให้กับโปรแกรมเมอร์ได้ เพราะหลังจากดำเนินการคำสั่งEX AF,AF'หรือEXXแล้ว เนื้อหาของรีจิสเตอร์สำรอง (ไพรม์) จะอยู่ในรีจิสเตอร์หลัก และในทางกลับกัน วิธีเดียวที่โปรแกรมเมอร์จะเข้าใจและติดตามสภาวะการสลับนี้ได้คือการติดตามการไหลของโค้ด โดยสังเกตการเกิดขึ้นของคำสั่งสลับรีจิสเตอร์แต่ละครั้ง เห็นได้ชัดว่าหากมีการใช้คำสั่งกระโดดและเรียกฟังก์ชันภายในส่วนของโค้ดเหล่านี้ อาจทำให้ยากที่จะบอกได้ว่าไฟล์รีจิสเตอร์ใดอยู่ในบริบท เว้นแต่จะมีการใส่คำอธิบายประกอบอย่างระมัดระวัง ดังนั้นจึงแนะนำให้ใช้คำสั่งแลกเปลี่ยนโดยตรงและในส่วนของโค้ดที่สั้นและแยกจากกัน ชุดคำสั่ง Zilog Z280 มี คำสั่ง JAFและJARซึ่งจะกระโดดไปยังที่อยู่ปลายทางหากรีจิสเตอร์สำรองอยู่ในบริบท (ดังนั้นจึงยอมรับความซับซ้อนในการเขียนโปรแกรมนี้อย่างเป็นทางการ)

ทะเบียน

รีจิสเตอร์ Zilog Z80
1 51 41 31 21 11 00 90 80 70 60 50 40 30 20 10 0(ตำแหน่งบิต)
รีจิสเตอร์หลัก
ตัวสะสม (A) ธง (F) เอเอฟ
บี ซี บีซี
ดี อี ดีอี
ชม แอล เอชแอล
รีจิสเตอร์สำรอง (เงา)
ตัวสะสม (A') ธง (F') เอเอฟ'
บี ซี บีซี'
ดี' อี ดีอี'
ชม' ลี HL '
ดัชนีลงทะเบียน
ดัชนี X IX
ดัชนี Y ไอวาย
ตัวชี้สแต็ก เอสพี
ทะเบียนอื่นๆ
เวกเตอร์ขัดจังหวะ รีเฟรชตัวนับ ไอ/อาร์
ตัวนับโปรแกรม
ตัวนับโปรแกรม พีซี
สถานะ
  เอส- ชม- พี / วีเอ็น ซีแฟล็กส์
  ฉัน ไอเอฟเอฟ1 ไอเอฟเอฟ2 ขัดจังหวะ

เช่นเดียวกับใน 8080 รีจิสเตอร์ 8 บิตมักจะจับคู่กันเพื่อให้ได้เวอร์ชัน 16 บิต รีจิสเตอร์ที่เข้ากันได้กับ 8080 [ 40 ]ได้แก่:

  • 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 )
  • สถานะการขัดจังหวะมีสี่บิต ได้แก่ แฟล็กการเปิดใช้งานการขัดจังหวะสองตัวและIFF1บวกIFF2กับโหมดการขัดจังหวะสองบิตIM

รีจิสเตอร์รีเฟรช , R, จะเพิ่มขึ้นทุกครั้งที่ CPU ดึงโอเปอเรชันโค้ด (หรือคำนำหน้าโอเปอเรชันโค้ด ซึ่งทำงานภายในเหมือนคำสั่ง 1 ไบต์) และไม่มีความสัมพันธ์โดยตรงกับการทำงานของโปรแกรม บางครั้งมีการใช้เพื่อสร้าง ตัวเลข สุ่มเทียมในเกม และในแผนการป้องกันซอฟต์แวร์ด้วย[ 41 ]นอกจากนี้ยังถูกใช้เป็นตัวนับ "ฮาร์ดแวร์" ในการออกแบบบางอย่าง ตัวอย่างเช่นZX81ซึ่งช่วยให้สามารถติดตามตำแหน่งตัวอักษรบนหน้าจอทีวีได้โดยการเรียกใช้การขัดจังหวะเมื่อวนรอบ (โดยการเชื่อมต่อ INT กับ A6)

รีจิสเตอร์เวกเตอร์การขัดจังหวะ , I, ใช้สำหรับการขัดจังหวะโหมด 2 เฉพาะของ Z80 (เลือกโดยIM 2คำสั่ง) โดยจะจัดหาไบต์สูงของที่อยู่ฐานสำหรับตารางที่อยู่ รู ทีนบริการ 128 รายการ ซึ่งจะถูกเลือกผ่านดัชนีที่ส่งไปยัง CPU ในระหว่าง รอบการรับทราบ การขัดจังหวะดัชนีนี้เป็นเพียงส่วนไบต์ต่ำของตัวชี้ไปยังที่อยู่ทางอ้อมในตารางที่ชี้ไปยังรูทีนบริการ[ 26 ]ตัวชี้จะระบุชิปอุปกรณ์ต่อพ่วงหรือฟังก์ชันอุปกรณ์ต่อพ่วงหรือเหตุการณ์เฉพาะ ซึ่งโดยปกติชิปจะเชื่อมต่อกันในลักษณะที่เรียกว่าลูกโซ่เดซี่เพื่อการแก้ไขลำดับความสำคัญ เช่นเดียวกับรีจิสเตอร์รีเฟรช รีจิสเตอร์นี้บางครั้งก็ถูกนำมาใช้อย่างสร้างสรรค์ ในโหมดการขัดจังหวะ 0 และ 1 (หรือในระบบที่ไม่ใช้การขัดจังหวะ) สามารถใช้เป็นเพียงรีจิสเตอร์ข้อมูล 8 บิตอีกตัวหนึ่งได้

คำสั่งLD A,RและLD A,Iมีผลต่อรีจิสเตอร์แฟล็ก Z80 ซึ่งแตกต่างจากคำสั่ง (โหลด) อื่นๆ ทั้งหมดLDแฟล็ก Sign (บิต 7) และ Zero (บิต 6) จะถูกตั้งค่าตามข้อมูลที่โหลดจากรีจิสเตอร์แหล่ง Refresh หรือ Interrupt สำหรับคำสั่งทั้งสอง แฟล็ก Parity/Overflow (บิต 2) จะถูกตั้งค่าตามสถานะปัจจุบันของฟลิปฟลอป IFF2 [ 42 ]

สถาปัตยกรรมไมโคร

แม้ว่าโดยทั่วไปแล้ว Z80 จะถือว่าเป็น CPU แปดบิต แต่ก็มี ALUสี่บิตดังนั้นการคำนวณจึงทำในสองขั้นตอน[ 43 ]

ภาษาแอสเซมบลี Z80

Datapoint 2200 และ Intel 8008

ภาษาแอสเซมบลี Intel 8008 รุ่นแรกนั้นใช้ไวยากรณ์ที่เรียบง่าย (แต่เป็นระบบ) ซึ่งสืบทอดมาจากดีไซน์ของ Datapoint 2200 ไวยากรณ์ดั้งเดิมนี้ต่อมาได้ถูกแปลงเป็นภาษาแอสเซมบลีรูปแบบใหม่ที่ค่อนข้างเป็นแบบดั้งเดิมมากขึ้นสำหรับชิป 8008 รุ่นเดิมนี้ ในเวลาเดียวกันนั้น ภาษาแอสเซมบลีใหม่นี้ก็ได้รับการขยายเพื่อรองรับโหมดการกำหนดแอดเดรสเพิ่มเติมในชิป Intel 8080 ที่ทันสมัยกว่า (ชิป 8008 และ 8080 ใช้ชุดย่อยของภาษาร่วมกันโดยไม่สามารถใช้งานร่วมกันได้ในระดับไบนารีอย่างไรก็ตาม ชิป 8008 สามารถใช้งานร่วมกันได้ในระดับไบนารีกับ Datapoint 2200)

ในกระบวนการนี้ ตัวย่อLสำหรับ คำ สั่ง LOADถูกแทนที่ด้วยตัวย่อต่างๆ ของคำว่าLOAD , STOREและMOVEผสมผสานกับตัวอักษรเชิงสัญลักษณ์อื่นๆ ตัวย่อMสำหรับหน่วยความจำ (อ้างอิงโดย HL) ถูกแยกออกมาจากตัวย่อคำสั่งเพื่อกลายเป็นตัวถูกดำเนินการ ที่เป็นอิสระทางไวยากรณ์ ในขณะที่รีจิสเตอร์และการรวมกันของรีจิสเตอร์ถูกระบุอย่างไม่สอดคล้องกัน ไม่ว่าจะเป็นตัวถูกดำเนินการแบบย่อ (MVI D, LXI H เป็นต้น) ภายในตัวย่อคำสั่งเอง (LDA, LHLD เป็นต้น) หรือทั้งสองอย่างพร้อมกัน (LDAX B, STAX D เป็นต้น)

อินเทล 8008 ดาต้าพอยท์ 2200 อินเทล 8080 อินเทล 8085 ซิล็อก ซี80 อินเทล 8086/ อินเทล 8088
ก่อนประมาณปี 1973ประมาณปี 1974พ.ศ. 2519พ.ศ. 2521
LBCMOVB,CLDB,CMOVCH,CL
--LDAXBLDA,(BC)--
LAMMOVA,MLDA,(HL)MOVAL,[BX]
LBMMOVB,MLDB,(HL)MOVCH,[BX]
--STAXDLD(DE),A--
LMAMOVM,ALD(HL),AMOV[BX],AL
LMCMOVM,CLD(HL),CMOV[BX],CL
LDI56MVID,56LDD,56MOVDL,56
LMI56[ l ]MVIM,56LD(HL),56MOVbyteptr[BX],56
--LDA1234LDA,(1234)MOVAL,[1234]
--STA1234LD(1234),AMOV[1234],AL
----LDB,(IX+56)MOVCH,[SI+56]
----LD(IX+56),CMOV[SI+56],CL
----LD(IY+56),78MOVbyteptr[DI+56],78
--LXIB,1234LDBC,1234MOVCX,1234
--LXIH,1234LDHL,1234MOVBX,1234
--SHLD1234LD(1234),HLMOV[1234],BX
--LHLD1234LDHL,(1234)MOVBX,[1234]
----LDBC,(1234)MOVCX,[1234]
----LDIX,(1234)MOVSI,[1234]

ภาพประกอบแสดงไวยากรณ์สี่แบบ โดยใช้ตัวอย่างคำสั่งโหลดและจัดเก็บที่เทียบเท่ากัน หรือ (สำหรับ 8086) คล้ายคลึงกันมาก[ 44 ]ไวยากรณ์ Z80 ใช้วงเล็บรอบนิพจน์เพื่อระบุว่าควรใช้ค่าเป็นที่อยู่หน่วยความจำ (ดังที่กล่าวไว้ด้านล่าง) ในขณะที่ไวยากรณ์ 8086 ใช้วงเล็บเหลี่ยมแทนวงเล็บธรรมดาเพื่อจุดประสงค์นี้ ทั้ง Z80 และ 8086 ใช้เครื่องหมาย + เพื่อระบุว่าค่าคงที่ถูกเพิ่มไปยังรีจิสเตอร์ฐานเพื่อสร้างที่อยู่ โปรดทราบว่า 8086 ไม่ใช่ซูเปอร์เซ็ตที่สมบูรณ์ของ Z80 BX เป็นคู่รีจิสเตอร์ 8086 เพียงคู่เดียวที่สามารถใช้เป็นตัวชี้ได้

ไวยากรณ์ใหม่

เนื่องจาก Intel อ้างสิทธิ์ในลิขสิทธิ์ของตัวย่อแอสเซมบลีของพวกเขา[ 45 ]จึงต้องมีการพัฒนาไวยากรณ์แอสเซมบลีใหม่สำหรับ Z80 ในครั้งนี้มีการใช้แนวทางที่เป็นระบบมากขึ้น:

  • รีจิสเตอร์และคู่รีจิสเตอร์ทั้งหมดจะถูกระบุอย่างชัดเจนด้วยชื่อเต็มของมัน
  • วงเล็บถูกใช้เป็นประจำเพื่อระบุ "เนื้อหาหน่วยความจำที่" (ที่อยู่คงที่หรือการอ้างอิงตัวชี้ตัวแปร) ยกเว้นคำสั่งกระโดดJP (HL), JP (IX), และJP (IY)ซึ่งหมายถึงที่อยู่ที่มีประสิทธิภาพ คำสั่งเหล่านี้จะโหลดที่อยู่ PC ใหม่จากรีจิสเตอร์ที่เกี่ยวข้องโดยตรง โดยไม่ต้องผ่านหน่วยความจำ
  • คำสั่งโหลดและจัดเก็บทั้งหมดใช้ชื่อย่อเดียวกันคือ LD สำหรับ LOAD (ซึ่งเป็นการกลับไปใช้คำศัพท์ที่เรียบง่ายของ Datapoint 2200) ส่วนคำสั่งทั่วไปอื่นๆ เช่น ADD และ INC ก็ใช้ชื่อย่อเดียวกันโดยไม่คำนึงถึงโหมดการกำหนดแอดเดรสหรือขนาดของตัวถูกดำเนินการ เป็นไปได้เพราะตัวถูกดำเนินการเองมีข้อมูลเพียงพอที่จะกำหนดรหัสการทำงานเฉพาะได้

หลักการเหล่านี้ทำให้การค้นหาชื่อและรูปแบบของคำสั่ง Z80 ใหม่ทั้งหมด รวมถึงการจัดเรียงแบบตั้งฉากของคำสั่งเก่า เช่น เป็นLD BC,1234เรื่อง ง่าย

มีการนำความไม่สอดคล้องกันอย่างน้อยหนึ่งอย่างเข้ามา แม้ว่าการลบที่มีการทดจะถูกกำหนดรหัสเป็น แต่SBC A,rการลบที่ไม่มีการทดจะถูกกำหนดรหัสเป็นSUB rแทนที่จะSUB A,rเป็น[ 46 ]

นอกเหนือจากความแตกต่างในการตั้งชื่อ และแม้จะมีความแตกต่างกันเล็กน้อยในโครงสร้างรีจิสเตอร์พื้นฐาน ไวยากรณ์ของ Z80 และ8086ก็แทบจะเหมือนกันสำหรับคำสั่งส่วนใหญ่ มีเพียงความคล้ายคลึงกันเพียงผิวเผิน (เช่น คำว่า MOV หรือตัวอักษร X สำหรับรีจิสเตอร์ขยาย) ระหว่างภาษาแอสเซมบลี 8080 และ 8086 แม้ว่าโปรแกรม 8080 จะสามารถแปลเป็นภาษาแอสเซมบลี 8086 ได้โดยใช้โปรแกรมตัวแปล[ 47 ] [ 48 ]

ชุดคำสั่งและการเข้ารหัส

Z80 ใช้รหัส 252 จาก 256 รหัสที่มีอยู่เป็นโอเปอเรเตอร์โค้ดไบต์เดียว ("คำสั่งหลัก" ซึ่งส่วนใหญ่สืบทอดมาจาก 8080) รหัสที่เหลืออีกสี่รหัสถูกใช้เป็นคำนำหน้าโอเปอเรเตอร์โค้ด อย่างกว้างขวาง : [ 49 ] CB และ ED เปิดใช้งานคำสั่งเพิ่มเติม และ DD หรือ FD เลือก IX+d หรือ IY+d ตามลำดับ (ในบางกรณีไม่มีการเลื่อน d) แทนที่ HL แผนการนี้ทำให้ Z80 มีการเรียงลำดับคำสั่งและรีจิสเตอร์จำนวนมาก Zilog จัดประเภทสิ่งเหล่านี้เป็น "ประเภทคำสั่ง" ที่แตกต่างกัน 158 ประเภท ซึ่ง 78 ประเภทเหมือนกับของ Intel 8080 [ 49 ] (ทำให้สามารถใช้งานโปรแกรม 8080 ทั้งหมดบน Z80 ได้) เอกสาร Zilog [ 50 ]ยังจัดกลุ่มคำสั่งเพิ่มเติมเป็นหมวดหมู่ดังต่อไปนี้ (ส่วนใหญ่มาจาก 8080 บางส่วนเป็นคำสั่งใหม่ทั้งหมด เช่น คำสั่งบล็อกและบิต และบางส่วนเป็นคำสั่ง 8080 ที่มีโหมดการกำหนดแอดเดรสที่หลากหลายกว่า เช่น การโหลด 16 บิต, I/O, การหมุน/เลื่อน และการกระโดดแบบสัมพัทธ์):

  • โหลดและแลกเปลี่ยน
  • การโอนและการค้นหาแบบบล็อก
  • เลขคณิตและตรรกะ
  • หมุนและเลื่อน
  • การจัดการบิต (ตั้งค่า รีเซ็ต ทดสอบ)
  • กระโดด โทร แล้วกลับมา
  • อินพุต/เอาต์พุต
  • การควบคุม CPU ขั้นพื้นฐาน

ไม่มีคำสั่งการคูณที่ชัดเจนใน Z80 ดั้งเดิม[ 51 ]แม้ว่ารีจิสเตอร์ A และ HL จะสามารถคูณด้วยกำลังของสองได้ด้วยคำสั่ง ADD A,A และ ADD HL,HL (เช่นเดียวกับ IX และ IY ด้วย) คำสั่ง Shift ยังสามารถคูณหรือหารด้วยกำลังของสองได้อีกด้วย

ขนาดและรูปแบบต่างๆ ของการบวก การเลื่อน และการหมุน มีผลต่อแฟล็กแตกต่างกันเล็กน้อย เนื่องจากคุณสมบัติการเปลี่ยนแปลงแฟล็กส่วนใหญ่ของ 8080 ถูกคัดลอกมา อย่างไรก็ตาม บิตแฟล็กพาริตี P ของ 8080 (บิตที่ 2) เรียกว่า P/V (พาริตี/โอเวอร์โฟลว์) ใน Z80 เนื่องจากทำหน้าที่เพิ่มเติมเป็นตัวบ่งชี้โอเวอร์โฟลว์แบบสองคอมพลีเมนต์ ซึ่งเป็นคุณสมบัติที่ไม่มีใน 8080 คำสั่งทางคณิตศาสตร์ใน Z80 ตั้งค่าให้บ่งชี้โอเวอร์โฟลว์แทนที่จะเป็นพาริตี ในขณะที่คำสั่งบิตไวส์ยังคงใช้เป็นแฟล็กพาริตี (สิ่งนี้ทำให้เกิดความไม่เข้ากันอย่างละเอียดอ่อนระหว่าง Z80 กับโค้ดที่เขียนขึ้นสำหรับ 8080 เนื่องจาก Z80 บางครั้งระบุการโอเวอร์โฟลว์แบบมีเครื่องหมาย ในขณะที่ 8080 จะระบุพาริตี ซึ่งอาจทำให้ตรรกะของซอฟต์แวร์ 8080 บางตัวทำงานล้มเหลวบน Z80 [ m ] ) แฟล็กโอเวอร์โฟลว์ใหม่นี้ใช้สำหรับการดำเนินการ 16 บิตเฉพาะของ Z80 ใหม่ทั้งหมด ( ADC, SBC) เช่นเดียวกับการดำเนินการทางคณิตศาสตร์ 8 บิต ในขณะที่การดำเนินการ 16 บิตที่สืบทอดมาจาก 8080 ( ADD, INC, DEC) จะไม่ส่งผลกระทบต่อแฟล็กนี้ นอกจากนี้ บิตที่ 1 ของรีจิสเตอร์แฟล็ก (บิตสำรองบน ​​8080) จะถูกใช้เป็นแฟล็ก N ที่ระบุว่าคำสั่งทางคณิตศาสตร์สุดท้ายที่ดำเนินการเป็นการลบหรือการบวก คำสั่ง เวอร์ชัน Z80 DAA(การปรับค่าสะสมทศนิยมสำหรับเลขคณิต BCD) จะตรวจสอบแฟล็ก N และทำงานตามนั้น ดังนั้นการลบ (สมมุติ) ที่ตามมาด้วยคำสั่งอื่นDAAจะให้ผลลัพธ์ที่แตกต่างกันบนโปรเซสเซอร์ 8080 รุ่นเก่ากับ Z80 อย่างไรก็ตาม นี่อาจเป็นโค้ดที่ผิดพลาดบนโปรเซสเซอร์ 8080 เนื่องจากDAAโปรเซสเซอร์นั้นถูกกำหนดไว้สำหรับการบวกเท่านั้น

Z80 มีLDคำสั่งใหม่หกคำสั่งที่สามารถโหลดคู่รีจิสเตอร์ DE, BC และ SP จากหน่วยความจำ และโหลดหน่วยความจำจากคู่รีจิสเตอร์ทั้งสามคู่นี้ ซึ่งแตกต่างจาก 8080 [ 44 ]เช่นเดียวกับใน 8080 คำสั่งโหลดจะไม่ส่งผลต่อแฟล็ก (ยกเว้นการโหลดรีจิสเตอร์ I และ R ที่มีวัตถุประสงค์พิเศษ) ผลลัพธ์ของการเข้ารหัสแบบปกติ (ซึ่งพบได้ทั่วไปใน 8080) คือรีจิสเตอร์ 8 บิตแต่ละตัวสามารถโหลดจากตัวมันเองได้ (เช่นLD A,A) ซึ่งก็คือNOP.

คำสั่งถ่ายโอนบล็อกใหม่สามารถย้ายได้สูงสุด 64 กิโลไบต์จากหน่วยความจำหนึ่งไปยังอีกหน่วยความจำหนึ่ง หรือระหว่างหน่วยความจำและพอร์ตอุปกรณ์ต่อพ่วง I/O คำสั่งบล็อกและ(โหลดLDIRเพิ่มLDDR/ ลดทำซ้ำ)ใช้HLเพื่อชี้ไปยังที่อยู่ต้นทาง DE ไปยังที่อยู่ปลายทาง และ BC เป็นตัวนับไบต์ ไบต์จะถูกคัดลอกจากต้นทางไปยังปลายทาง ตัวชี้จะเพิ่มขึ้นหรือลดลง และตัวนับไบต์จะลดลงจนกว่า BC จะเป็นศูนย์ เวอร์ชันที่ไม่ซ้ำกันและจะย้ายไบต์เดียวและเพิ่มค่าตัวชี้และตัวนับไบต์ ซึ่งหากเป็นศูนย์จะรีเซ็ตแฟล็ก P/V คำสั่งหน่วยความจำไปยัง I/O ที่สอดคล้อง กัน , , , , , , และทำงานคล้ายกัน ยกเว้นว่า B ไม่ใช่ BC ถูกใช้เป็นตัวนับไบต์[ 52 ] [ 53 ] Z80 สามารถรับและส่งข้อมูลรีจิสเตอร์ใดๆ ไปยังพอร์ต I/O โดยใช้รีจิสเตอร์ C เพื่อกำหนดพอร์ต (ไมโครคอนโทรลเลอร์ 8080 ทำงานด้าน I/O ผ่านทางตัวสะสม A เท่านั้น โดยใช้ที่อยู่พอร์ตโดยตรงที่ระบุไว้ในคำสั่ง หากต้องการใช้ที่อยู่พอร์ต 8080 ที่เปลี่ยนแปลงได้ จำเป็นต้องใช้เทคนิคการเขียนโค้ดที่ปรับเปลี่ยนตัวเองได้) LDILDDINIRINDROTIROTDRINIINDOUTIOUTD

กลุ่มคำสั่งบล็อกสุดท้ายจะทำการCPเปรียบเทียบระหว่างไบต์ที่ (HL) และตัวสะสม A ไม่ได้ใช้คู่รีจิสเตอร์ DE เวอร์ชันที่ทำซ้ำCPIRจะCPDRสิ้นสุดลงก็ต่อเมื่อ BC เป็นศูนย์หรือพบการจับคู่ HL จะยังคงชี้ไปยังไบต์หลังจาก ( CPIR) หรือก่อน ( CPDR) ไบต์ที่ตรงกัน หากไม่พบการจับคู่ แฟล็ก Z จะถูกรีเซ็ต มีเวอร์ชันที่ไม่ซ้ำกัน CPIและCPD

ต่างจาก 8080 ตรงที่ Z80 สามารถกระโดดไปยังแอดเดรสสัมพัทธ์ ( JRแทนที่จะเป็น แอดเดรสแบบปกติ JP) โดยใช้คำสั่งที่สั้นกว่าพร้อมค่าชดเชย 8 บิตแบบมีเครื่องหมาย คำสั่งนี้มีทั้งแบบไม่มีเงื่อนไขและมีเงื่อนไข สามารถตรวจสอบได้เฉพาะเงื่อนไขศูนย์และตัวทดเท่านั้น (การกระโดดและการเรียกทั้งหมดของ 8080 ไม่ว่าจะมีเงื่อนไขหรือไม่ก็ตาม เป็นคำสั่งสามไบต์) หากมีการกระโดดJRคำสั่งสองไบต์จะทำงานช้ากว่าคำสั่งสามไบต์แบบ 8080 JPหากไม่มีการกระโดดJRคำสั่งจะทำงานเร็วกว่า

คำสั่งสองไบต์ที่ใช้สำหรับการวนลูปโปรแกรมโดยเฉพาะก็เป็นคำสั่งใหม่สำหรับ Z80 เช่นกัน: (decrement DJNZjump if non - zero ) รับค่าชดเชย 8 บิตแบบมีเครื่องหมายเป็นตัวถูกดำเนินการ ค่าในรีจิสเตอร์ B จะถูกลดลง และถ้าผลลัพธ์ไม่ใช่ศูนย์ การทำงานของโปรแกรมจะกระโดดไปยังตำแหน่งอ้างอิง PC โดยที่ค่าแฟล็กจะไม่เปลี่ยนแปลง การวนลูปแบบเดียวกันบน 8080 ต้องใช้DECคำสั่งกระโดดแบบมีเงื่อนไขแยกต่างหาก (ไปยังที่อยู่สัมบูรณ์สองไบต์) (รวมทั้งหมดสี่ไบต์) และคำสั่งนี้DECจะเปลี่ยนแปลงค่าในรีจิสเตอร์แฟล็กด้วย

คำสั่งรีจิสเตอร์ดัชนี (IX/IY ซึ่งมักย่อว่า XY) มีประโยชน์สำหรับการเข้าถึงข้อมูลที่จัดเรียงในโครงสร้างแบบเฮเทอโรจีนัสคงที่ (เช่นเรคอร์ด ) หรือที่ออฟเซ็ตคงที่เมื่อเทียบกับแอดเดรสฐานที่เปลี่ยนแปลงได้ (เช่น ในเฟรมสแต็กแบบเรียกซ้ำ ) และยังสามารถลดขนาดโค้ดได้โดยไม่จำเป็นต้องใช้คำสั่งสั้นๆ หลายคำสั่งโดยใช้รีจิสเตอร์ที่ไม่ใช้ดัชนี อย่างไรก็ตาม แม้ว่าอาจช่วยประหยัดความเร็วในบางบริบทเมื่อเทียบกับลำดับการทำงานที่ "เทียบเท่า" ที่ยาว/ซับซ้อนกว่า แต่ก็ใช้เวลา CPU เพิ่มขึ้นมาก (เช่น 19 T-state เพื่อเข้าถึงตำแหน่งหน่วยความจำที่ใช้ดัชนีหนึ่งตำแหน่ง เทียบกับเพียง 11 T-state เพื่อเข้าถึงหน่วยความจำเดียวกันโดยใช้ HL และชี้ไปยังตำแหน่งถัดไป) ดังนั้น สำหรับการเข้าถึงข้อมูลแบบง่ายหรือเชิงเส้น การใช้ IX และ IY มักจะช้ากว่าและใช้หน่วยความจำมากกว่า อย่างไรก็ตาม อาจมีประโยชน์ในกรณีที่รีจิสเตอร์ "หลัก" ทั้งหมดถูกใช้งานอยู่ โดยไม่จำเป็นต้องบันทึก/กู้คืนรีจิสเตอร์ ส่วนย่อย 8 บิตที่ไม่ได้รับการบันทึกอย่างเป็นทางการ (ดูด้านล่าง) อาจมีประโยชน์อย่างยิ่งในบริบทนี้ เนื่องจากทำให้เกิดความช้ากว่าส่วนย่อย 16 บิต ในทำนองเดียวกัน คำสั่งสำหรับการบวก 16 บิตนั้นไม่ได้เร็วมากนัก (11 คล็อก) ใน Z80 รุ่นดั้งเดิม (ช้ากว่าใน 8080/8085 1 คล็อก) อย่างไรก็ตาม มันเร็วกว่าการคำนวณแบบเดียวกันโดยใช้การดำเนินการ 8 บิตประมาณสองเท่า และที่สำคัญไม่แพ้กันคือ ช่วยลดการใช้รีจิสเตอร์ เป็นเรื่องปกติที่โปรแกรมเมอร์จะ "ใส่" ไบต์การเลื่อนออฟเซ็ตที่แตกต่างกัน (ซึ่งโดยทั่วไปจะคำนวณแบบไดนามิก) ลงในคำสั่งแบบดัชนี นี่เป็นตัวอย่างของโค้ดที่แก้ไขตัวเองซึ่งเป็นแนวปฏิบัติปกติในโปรเซสเซอร์ 8 บิตรุ่นแรก ๆ เกือบทั้งหมดที่มีหน่วยประมวลผล ที่ไม่ใช่แบบ ไปป์ไลน์INC

รีจิสเตอร์ดัชนีมีคำสั่งคู่ขนานกับJP (HL)ซึ่งก็คือJP (IX)และJP (IY)สิ่งนี้มักพบเห็นได้ในภาษาที่เน้นสแต็ก เช่นForthซึ่งเมื่อสิ้นสุดคำ Forth ทุกคำ (ซับรูทีนอะตอมิกที่ประกอบขึ้นเป็นภาษา) จะต้องกระโดดกลับไปยังรูทีนตัวแปลเธรดโดยไม่มีเงื่อนไข โดยทั่วไปคำสั่งกระโดดนี้จะปรากฏหลายร้อยครั้งในแอปพลิเคชัน และการใช้JP (IX)แทนที่จะ ใช้ จะ JP THREADช่วยประหยัดไบต์และสถานะ T สองสถานะสำหรับแต่ละครั้ง โดยธรรมชาติแล้วจะทำให้รีจิสเตอร์ดัชนีไม่สามารถนำไปใช้ประโยชน์อื่นได้ มิฉะนั้นความจำเป็นในการโหลดซ้ำอย่างต่อเนื่องจะทำให้ประสิทธิภาพของมันลดลง

การออกแบบไมโครโค้ด Z180ที่ใหม่กว่า 10 ปีนั้นในช่วงแรกสามารถให้ "พื้นที่ชิป" ที่มากกว่า ทำให้สามารถใช้งานได้อย่างมีประสิทธิภาพมากขึ้นเล็กน้อย (โดยใช้ALU ที่กว้างขึ้น เป็นต้น) เช่นเดียวกับZ800 , Z280และZ380อย่างไรก็ตาม จนกระทั่ง การเปิดตัว eZ80 ที่มีการประมวลผลแบบไปป์ไลน์อย่างสมบูรณ์ ในปี 2001 คำสั่งเหล่านั้นจึงมีประสิทธิภาพต่อรอบการทำงานมากที่สุดเท่าที่จะเป็นไปได้ในทางเทคนิค กล่าวคือ เมื่อพิจารณาจากการเข้ารหัสของ Z80 ร่วมกับความสามารถในการอ่านหรือเขียนข้อมูล 8 บิตในทุกรอบสัญญาณนาฬิกา

คำแนะนำที่ไม่ได้บันทึกไว้

รีจิสเตอร์ดัชนี IX และ IY มีจุดประสงค์เพื่อใช้เป็นตัวชี้แบบยืดหยุ่น 16 บิต เพื่อเพิ่มความสามารถในการจัดการหน่วยความจำ เฟรมสแต็ก และโครงสร้างข้อมูล อย่างเป็นทางการ พวกมันถูกมองว่าเป็น 16 บิตเท่านั้น ในความเป็นจริง พวกมันถูกนำไปใช้เป็นรีจิสเตอร์ 8 บิตคู่หนึ่ง[ 54 ]ในลักษณะเดียวกับรีจิสเตอร์ HL ซึ่งสามารถเข้าถึงได้ทั้งแบบ 16 บิต หรือแยกเป็น รีจิสเตอร์ HและLรหัสคำสั่งไบนารี (ภาษาเครื่อง) เหมือนกัน แต่มีคำนำหน้ารหัสคำสั่งใหม่นำหน้า[ 55 ] Zilog ได้เผยแพร่รหัสคำสั่งและตัวย่อที่เกี่ยวข้องสำหรับฟังก์ชันที่ตั้งใจไว้ แต่ไม่ได้บันทึกข้อเท็จจริงที่ว่ารหัสคำสั่งทุกตัวที่อนุญาตให้จัดการรีจิสเตอร์ H และ L นั้นใช้ได้กับส่วน 8 บิตของรีจิสเตอร์ IX และ IY เช่นกัน ตัวอย่างเช่น รหัสคำสั่ง 26h ตามด้วยค่าไบต์ทันที(LD H,n)จะโหลดค่านั้นลงในรีจิสเตอร์ H การนำคำสั่งสองไบต์นี้ไปไว้ข้างหน้าด้วยคำนำหน้ารหัสปฏิบัติการของรีจิสเตอร์ IX คือ DD จะส่งผลให้บิต 8 บิตที่สำคัญที่สุดของรีจิสเตอร์ IX ถูกโหลดด้วยค่าเดียวกันนั้น ข้อยกเว้นที่สำคัญคือคำสั่งที่คล้ายกับLD H,(IX+d)ซึ่งใช้รีจิสเตอร์ HL และ IX หรือ IY ในคำสั่งเดียวกัน[ 55 ]ในกรณีนี้ คำนำหน้า DD จะถูกนำไปใช้กับส่วน (IX+d) ของคำสั่งเท่านั้น ครึ่งหนึ่งของรีจิสเตอร์ XY ยังสามารถเก็บตัวถูกดำเนินการสำหรับคำสั่งทางคณิตศาสตร์ ตรรกะ และการเปรียบเทียบแบบ 8 บิต โดยสงวนรีจิสเตอร์ 8 บิตปกติไว้สำหรับการใช้งานอื่น ความสามารถที่ไม่ได้บันทึกไว้ในการเพิ่มและลดครึ่งบนของรีจิสเตอร์ดัชนีทำให้ง่ายต่อการขยายช่วงของคำสั่งดัชนีปกติ โดยไม่ต้องใช้ADD/SBC XY,DEหรือ ที่ระบุไว้ใน ADD/SBC XY,BCเอกสาร

นอกจากนี้ยังมีคำสั่งอื่นๆ ที่ไม่ได้บันทึกไว้อีกหลายคำสั่ง[ 56 ]รหัสคำสั่งที่ไม่ได้บันทึกไว้หรือผิดกฎหมายจะไม่ถูกตรวจพบโดย Z80 และมีผลต่างๆ กัน ซึ่งบางอย่างก็มีประโยชน์ อย่างไรก็ตาม เนื่องจากไม่ได้เป็นส่วนหนึ่งของคำจำกัดความอย่างเป็นทางการของชุดคำสั่ง การใช้งาน Z80 ที่แตกต่างกันจึงไม่รับประกัน (หรือโดยเฉพาะอย่างยิ่งไม่น่าจะเป็นไปได้) ว่าจะทำงานในลักษณะเดียวกันสำหรับรหัสคำสั่งที่ไม่ได้บันทึกไว้ทุกรหัส

แมลง

คำสั่ง นี้OTDRไม่สอดคล้องกับเอกสาร Z80 ทั้ง คำสั่ง OTDRและOTIRควรจะไม่เปลี่ยนแปลงแฟล็ก carry (C) OTIRคำสั่งทำงานได้อย่างถูกต้อง อย่างไรก็ตาม ในระหว่างการดำเนินการของOTDRคำสั่ง แฟล็ก carry จะใช้ผลลัพธ์ของการเปรียบเทียบที่ไม่ถูกต้องระหว่างตัวสะสม (A) และเอาต์พุตสุดท้ายของOTDRคำสั่ง[ 57 ]

ตัวอย่างโค้ด

โค้ดแอสเซมบลี Z80 ต่อไปนี้เป็นโค้ดสำหรับซับรูทีนชื่อmemcpyที่คัดลอกบล็อกข้อมูลขนาดที่กำหนดจากตำแหน่งหนึ่งไปยังอีกตำแหน่งหนึ่ง บล็อกข้อมูลจะถูกคัดลอกทีละไบต์ และตรรกะการเคลื่อนย้ายข้อมูลและการวนซ้ำใช้การดำเนินการ 16 บิต โค้ดนี้แสดงคำสั่งต่างๆ แต่ในทางปฏิบัติจะไม่เขียนโค้ดแบบนี้ เนื่องจาก Z80 มีคำสั่งเดียวที่สามารถแทนที่ซับรูทีนทั้งหมดนี้ได้: LDIRโค้ดตัวอย่างจะย้ายหนึ่งไบต์ทุกๆ 46 T-state การแทนที่ด้วยLDIRคำสั่ง จะย้ายแต่ละไบต์ในเพียง 21 T-state เท่านั้น โปรดทราบว่าโค้ดที่ประกอบแล้วนั้นเข้ากันได้กับไบนารีของซีพียู Intel 8080 และ 8085

1000  1000 1000 เอฟ5 1001 7E 1002 12 1003 23 1004 13 1005 0B 1006 78 1007 บี1 1008 C2 01 10 100B F1 100C C9 100D 
; memcpy -- ; คัดลอกบล็อกหน่วยความจำจากตำแหน่งหนึ่งไปยังอีกตำแหน่งหนึ่ง; รูทีนนี้เทียบเท่ากับ LDIR ; ; รีจิสเตอร์ขาเข้า; HL - ที่อยู่ของบล็อกข้อมูลต้นทาง; DE - ที่อยู่ของบล็อกข้อมูลปลายทาง; BC - จำนวนไบต์ที่จะคัดลอก; ; รีจิสเตอร์ขาออก; HL - ไบต์แรกหลังจากบล็อกข้อมูลต้นทาง; DE - ไบต์แรกหลังจากบล็อกข้อมูลปลายทาง; BC - ศูนย์; (LDIR ไม่ได้บันทึก AF อย่างสมบูรณ์ H, P/V และ N จะถูกรีเซ็ต)org 1000h ; จุดเริ่มต้นที่ 1000h memcpy public push af ; บันทึก AF เหมือน LDIR loop ld a ,( hl ) ; คัดลอก 1 ไบต์จากแหล่งที่มาld ( de ), a ; ไปยังปลายทางinc hl ; เพิ่มค่าตัวชี้แหล่งที่มาinc de ; เพิ่มค่าตัวชี้ปลายทางdec bc ; นับจำนวนไบต์ที่คัด ลอก ld a , b ; ทดสอบ BC ว่าเป็นศูนย์หรือc ; ถ้า BC != 0, jp nz , loop ; ทำซ้ำลูปpop af ; คืนค่า AF ret ; คืนค่าend

การดำเนินการตามคำสั่ง

แต่ละคำสั่งจะถูกดำเนินการเป็นขั้นตอนซึ่งโดยทั่วไปเรียกว่ารอบเครื่อง (M-cycles) โดยแต่ละรอบอาจใช้เวลาระหว่างสามถึงหกช่วงเวลาของสัญญาณนาฬิกา (T-states) [ 58 ]แต่ละ M-cycle สอดคล้องกับการเข้าถึงหน่วยความจำหรือการดำเนินการภายในโดยประมาณหนึ่งครั้ง คำสั่งหลายคำสั่งจะสิ้นสุดลงในระหว่าง M1 ของ คำสั่ง ถัดไปซึ่งเรียกว่าการทับซ้อนของการดึง/ดำเนินการ

ตัวอย่างคำสั่งทั่วไป (R=อ่าน, W=เขียน)
ทั้งหมด

วงจร M

สถานะที คำแนะนำ เอ็ม1 เอ็ม2 เอ็ม3 เอ็ม4 เอ็ม5 เอ็ม6
1 [ 59 ]4 [ 1 ]INCBโอเปอเรเตอร์โค้ด
2 [ 60 ]7 ADDA,nโอเปอเรเตอร์โค้ด n
3 [ 61 ]11 ADDHL,DEโอเปอเรเตอร์โค้ด ภายใน ภายใน
4 [ 62 ]15 SETb,(HL)คำนำหน้า โอเปอเรเตอร์โค้ด R(HL), ชุด ว(HL)
5 [ 63 ]19 LD(IX+d),nคำนำหน้า โอเปอเรเตอร์โค้ด n,add W(IX+d)
6 [ 64 ]23 INC(IY+d)คำนำหน้า โอเปอเรเตอร์โค้ด เพิ่ม R(IY+d),inc W(IY+d)

รอบการทำงานของซีพียู Z80 ถูกจัดลำดับโดยเครื่องสถานะ ภายใน ซึ่งสร้างรอบการทำงาน M แต่ละรอบจากสถานะ T จำนวน 3, 4, 5 หรือ 6 สถานะ ขึ้นอยู่กับบริบท วิธีนี้ช่วยหลีกเลี่ยงตรรกะแบบอะซิงโครนัสที่ยุ่งยาก และทำให้สัญญาณควบคุมทำงานได้อย่างสม่ำเสมอในช่วงความถี่สัญญาณนาฬิกาที่หลากหลาย นอกจากนี้ยังหมายความว่าต้องใช้คริสตัลที่มีความถี่สูงกว่าเมื่อไม่มีการแบ่งรอบการทำงาน (สูงกว่าประมาณ 2-3 เท่า) อย่างไรก็ตาม นี่ไม่ได้หมายความว่าข้อกำหนดเกี่ยวกับเวลาในการเข้าถึงหน่วยความจำ จะเข้มงวดมากขึ้น เนื่องจากสัญญาณนาฬิกาที่มีความละเอียดสูงช่วยให้สามารถควบคุมจังหวะเวลาของหน่วยความจำได้อย่างแม่นยำยิ่งขึ้น ดังนั้นหน่วยความจำจึงสามารถทำงานควบคู่ไปกับซีพียูได้มากขึ้น ทำให้สามารถใช้แบนด์วิดธ์ของหน่วยความจำที่มีอยู่ได้อย่างมีประสิทธิภาพมากขึ้น

ตัวอย่างสำคัญประการหนึ่งคือ สำหรับการดึงโอเปอเรชันโค้ดนั้น Z80 จะรวมรอบสัญญาณนาฬิกาเต็มสองรอบเข้าด้วยกันเป็นช่วงเวลาการเข้าถึงหน่วยความจำ (สัญญาณ M1) ใน Z80 สัญญาณนี้จะคงอยู่เป็นเวลานานกว่าเมื่อเทียบกับเวลาการประมวลผลคำสั่งโดยทั่วไป เมื่อเทียบกับการออกแบบอย่างเช่น6800 , 6502หรืออื่นๆ ที่คล้ายกัน ซึ่งช่วงเวลานี้โดยทั่วไปจะคงอยู่เพียง 30-40% ของรอบสัญญาณนาฬิกาเท่านั้น ด้วยราคาของชิปหน่วยความจำ (เช่น เวลาการเข้าถึงประมาณ 450-250 นาโนวินาทีในทศวรรษ 1980) ซึ่งโดยทั่วไปเป็นตัวกำหนดเวลาการเข้าถึงที่เร็วที่สุดที่เป็นไปได้ นั่นหมายความว่าการออกแบบเหล่านั้นถูกจำกัดด้วยรอบสัญญาณนาฬิกาที่ยาวกว่ามาก (เช่น ความเร็วสัญญาณนาฬิกาภายในต่ำกว่า) เมื่อเทียบกับ Z80

โดยทั่วไปแล้ว หน่วยความจำจะทำงานช้ากว่ารอบการทำงานของเครื่องสถานะ (รอบสัญญาณนาฬิกา) ที่ใช้ในไมโครโปรเซสเซอร์รุ่นปัจจุบัน ดังนั้น รอบการทำงานที่สั้นที่สุดที่สามารถใช้งานได้อย่างปลอดภัยในงานออกแบบฝังตัวจึงมักถูกจำกัดด้วยเวลาในการเข้าถึงหน่วยความจำ ไม่ใช่ความถี่สูงสุดของ CPU (โดยเฉพาะอย่างยิ่งในยุคคอมพิวเตอร์ส่วนบุคคล) อย่างไรก็ตาม ความสัมพันธ์นี้ได้เปลี่ยนแปลงไปอย่างช้าๆ ในช่วงหลายทศวรรษที่ผ่านมา โดยเฉพาะอย่างยิ่งในเรื่องของSRAMดังนั้น การออกแบบแบบไร้แคชและรอบการทำงานเดียว เช่น eZ80 จึงมีความสำคัญมากขึ้นในปัจจุบัน

เนื้อหาของรีจิสเตอร์รีเฟรช R จะถูกส่งออกไปทางครึ่งล่างของบัสแอดเดรสพร้อมกับสัญญาณควบคุมรีเฟรชในขณะที่ CPU กำลังถอดรหัสและดำเนินการคำสั่งที่ดึงมา ในระหว่างการรีเฟรช เนื้อหาของรีจิสเตอร์อินเตอร์รัปต์ I จะถูกส่งออกไปทางครึ่งบนของบัสแอดเดรส[ 65 ]

อุปกรณ์ต่อพ่วงที่ใช้งานร่วมกันได้

Zilog ได้แนะนำชิ้นส่วนอุปกรณ์ต่อพ่วงจำนวนหนึ่งสำหรับ Z80 ซึ่งทั้งหมดรองรับระบบการจัดการการขัดจังหวะและพื้นที่แอดเดรส I/O ของ Z80 ซึ่งรวมถึงช่องตัวนับ/ตัวจับเวลา (CTC) [ 66 ] SIO (อินพุต/เอาต์พุตแบบอนุกรม) DMA (การเข้าถึงหน่วยความจำโดยตรง) PIO (อินพุต/เอาต์พุตแบบขนาน) และ DART (ตัวรับ-ส่งสัญญาณแบบอะซิงโครนัสคู่) เมื่อสายผลิตภัณฑ์พัฒนาขึ้น ชิปเวอร์ชัน พลังงานต่ำ ความเร็วสูง และCMOS ก็ได้รับการแนะนำ

เช่นเดียวกับโปรเซสเซอร์ 8080, 8085 และ 8086 แต่ต่างจากโปรเซสเซอร์เช่น Motorola 6800 และ MOS Technology 6502 โปรเซสเซอร์ Z80 และ 8080 มีสายควบคุมและพื้นที่แอดเดรสแยกต่างหากสำหรับคำสั่ง I/O ในขณะที่คอมพิวเตอร์ที่ใช้ Z80 บางเครื่อง เช่นOsborne 1ใช้หน่วยความจำแบบ "Motorola-style" สำหรับอุปกรณ์อินพุต/เอาต์พุตโดยปกติแล้วพื้นที่ I/O จะถูกใช้เพื่อระบุตำแหน่งของชิปอุปกรณ์ต่อพ่วง Zilog ตัวใดตัวหนึ่งที่เข้ากันได้กับ Z80 ในระหว่างการกำหนดเวลาสำหรับการอ่าน I/O หรือการเขียน I/O วงจรการรอหนึ่งรอบจะถูกแทรกโดยอัตโนมัติโดย Z80 [ 67 ]ชิป I/O ของ Zilog รองรับการขัดจังหวะโหมด 2 ใหม่ของ Z80 ซึ่งช่วยลดความซับซ้อนในการจัดการการขัดจังหวะสำหรับอุปกรณ์ต่อพ่วงจำนวนมาก

Z80 ได้รับการอธิบายอย่างเป็นทางการว่ารองรับการกำหนดแอดเดรสหน่วยความจำ 16 บิต (64 KB) และการกำหนดแอดเดรส I/O 8 บิต (256 พอร์ต) คำสั่ง I/O ทั้งหมดจะกำหนดแอดเดรสบัส 16 บิตทั้งหมด OUT (C),reg และ IN reg,(C) จะวางเนื้อหาของรีจิสเตอร์ BC 16 บิตทั้งหมดบนแอดเดรสบัส[ 57 ] OUT (n),A และ IN A,(n) จะวางเนื้อหาของรีจิสเตอร์ A บน b8–b15 ของแอดเดรสบัสและแอดเดรสพอร์ตnบน b0–b7 ของแอดเดรสบัส นักออกแบบสามารถเลือกที่จะถอดรหัสแอดเดรสบัส 16 บิตทั้งหมดในการดำเนินการ I/O เพื่อใช้ประโยชน์จากคุณสมบัตินี้ หรือใช้ครึ่งบนของแอดเดรสบัสเพื่อเลือกคุณสมบัติย่อยของอุปกรณ์ I/O คุณสมบัตินี้ยังถูกใช้เพื่อลดความต้องการฮาร์ดแวร์ในการถอดรหัส เช่น ในAmstrad CPC / PCWและZX81

แหล่งที่มาที่สองและอนุพันธ์

แหล่งข้อมูลที่สอง

Mostek ซึ่งผลิต Z80 ตัวแรกให้กับ Zilog ได้นำเสนอเป็นแหล่งผลิตสำรองในชื่อ MK3880 SGS-Thomson (ปัจจุบันคือSTMicroelectronics ) ก็เป็นแหล่งผลิตสำรองเช่นกัน โดยใช้ Z8400 Sharp และNECได้พัฒนาแหล่งผลิตสำรองสำหรับ NMOS Z80 คือ LH0080 และ μPD780C ตามลำดับ LH0080 ถูกนำไปใช้ในคอมพิวเตอร์บ้านและคอมพิวเตอร์ส่วนบุคคลต่างๆ ที่ผลิตโดย Sharp และผู้ผลิตชาวญี่ปุ่นรายอื่นๆ รวมถึง คอมพิวเตอร์ Sony MSXและคอมพิวเตอร์จำนวนหนึ่งในซีรี่ส์Sharp MZ [ 68 ] Sharp ได้พัฒนา LH0080A และ LH0080B ให้ทำงานที่ความถี่ 4 MHz และ 6 MHz ตามลำดับ[ 69 ] Sharp ยังได้พัฒนา LH0083 [ 70 ]ที่เข้ากันได้กับ Z80 DMA ด้วย

Toshiba ผลิตชิป CMOS รุ่น TMPZ84C00 ซึ่งเชื่อกันว่า (แต่ยังไม่ได้รับการยืนยัน) เป็นดีไซน์เดียวกันกับที่ Zilog ใช้สำหรับชิป CMOS Z84C00 ของตนเอง นอกจากนี้ยังมีชิป Z8400 และ Z80 ที่ผลิตโดยGoldStar (ปัจจุบันคือLG ) และชิปโคลน Z80 ซีรีส์ BU18400 (รวมถึง DMA, PIO, CTC, DART และ SIO) ในรูปแบบ NMOSและCMOSที่ผลิตโดยROHM Electronicsชิป LH5080 [ 71 ] LH5081 [ 72 ]และ LH5082 [ 73 ]ซึ่งเป็นชิป CMOS รุ่น Z80, PIO และ CTC ตามลำดับ ผลิตโดย Sharp

ในเยอรมนีตะวันออกมีการผลิตชิปประมวลผล Z80 รุ่นลอกเลียนแบบโดยไม่ได้รับอนุญาต ซึ่งรู้จักกันในชื่อU880 ชิปนี้ถูกนำไปใช้อย่างแพร่หลายในระบบคอมพิวเตอร์ของ Robotronและ VEB Mikroelektronik Mühlhausen (เช่น ซีรี่ส์ KC85 ) และยังใช้ในระบบคอมพิวเตอร์ที่สร้างเองอีกหลายระบบ ในโรมาเนียก็พบชิปประมวลผลรุ่นลอกเลียนแบบโดยไม่ได้รับอนุญาตอีกรุ่นหนึ่ง ชื่อMMN80CPUผลิตโดยMicroelectronica และ ใช้ในคอมพิวเตอร์ส่วนบุคคล เช่น TIM-S, HC, COBRA

นอกจากนี้ ยังมีการสร้างชิปโคลนของ Z80 หลายรุ่นในสหภาพโซเวียตรุ่นที่โดดเด่นคือT34BM1หรือเรียกอีกชื่อว่าКР1858ВМ1 (ซึ่งคล้ายคลึงกับชิปโคลน 8080 ของโซเวียตอย่างKR580VM80A ) รหัสแรกใช้ในรุ่นทดลองก่อนการผลิต ในขณะที่รหัสที่สองใช้สำหรับการผลิตในปริมาณมาก อย่างไรก็ตาม เนื่องจากการล่มสลายของอุตสาหกรรมไมโครอิเล็กทรอนิกส์ของโซเวียตในช่วงปลายทศวรรษ 1980 ทำให้มีชิป T34BM1 มากกว่าชิป КР1858ВМ1

อนุพันธ์

ใช้งานร่วมกับ Z80 รุ่นดั้งเดิมได้
  • Hitachiได้พัฒนาHD64180ซึ่งเป็นไมโครโค้ดและไดนามิกบางส่วนของ Z80 ใน CMOS พร้อมอุปกรณ์ต่อพ่วงบนชิปและ MMU แบบง่าย ทำให้มีพื้นที่แอดเดรส 1  MBต่อมา Zilog ได้ผลิตชิปนี้เป็นครั้งที่สอง โดยเริ่มแรกใช้ชื่อ Z64180 จากนั้นจึงเปลี่ยนเป็นZilog Z180 ที่ได้รับการดัดแปลงเล็กน้อย [ 74 ]ซึ่งมีโปรโตคอลบัสและจังหวะเวลาที่ปรับให้เข้ากับชิปอุปกรณ์ต่อพ่วง Z80 ได้ดีกว่า Z180 ได้รับการดูแลและพัฒนาต่อยอดภายใต้ชื่อของ Zilog โดยเวอร์ชันล่าสุดใช้แกน S180/L180 แบบคงที่ทั้งหมดที่มีการใช้พลังงานต่ำและ EMI (เสียงรบกวน) ต่ำ
  • Toshibaได้พัฒนา "ตัวควบคุมอุปกรณ์ต่อพ่วงอัจฉริยะ" ซีรีส์ Z84013/Z84C13 แบบ 84 พิน และ Z84015/Z84C15 แบบ 100 พิน ซึ่งโดยพื้นฐานแล้วเป็นแกน Z80 แบบ NMOS และ CMOS ทั่วไปที่มีอุปกรณ์ต่อพ่วง Z80, ตัวจับเวลาเฝ้าระวัง , การรีเซ็ตเมื่อเปิดเครื่องและตัวสร้างสถานะรอในชิปเดียวกัน ผลิตโดยSharpและ Toshiba ผลิตภัณฑ์เหล่านี้ในปัจจุบันจัดหาโดย Zilog [ 75 ]
  • Zilog Z380 ที่เข้ากันได้กับ Z80 แบบ 32 บิต ซึ่งเปิดตัวในปี 1994 ใช้ในอุปกรณ์โทรคมนาคม[ 76 ]
  • eZ80 [ 77 ]ของ Zilog ซึ่งเป็นชิปประมวลผลแบบไปป์ไลน์เต็มรูปแบบที่เข้ากันได้ กับ Z80 มีความยาวคำ 8/16/24 บิต และพื้นที่แอดเดรสเชิงเส้น 16 MB เปิดตัวในปี 2544 มีให้เลือกทั้งแบบที่มี หน่วยความจำ SRAMหรือFlash ในตัวชิป รวมถึงแบบที่มีอุปกรณ์ต่อพ่วงในตัว รุ่นหนึ่งมีตัวควบคุมการเข้าถึงสื่อ (MAC) ในตัวชิป และซอฟต์แวร์ที่มีให้ใช้งานรวมถึงสแต็ก TCP/IPเมื่อเปรียบเทียบกับ Z800 และ Z280 จะมีคำสั่งเพิ่มเติมเพียงไม่กี่คำสั่ง (ส่วนใหญ่เป็นload Effective Address (LEA), Push Effective Address (PEA) และคำสั่งโหลดแอดเดรสแบบแปรผัน 16/24 บิต) แต่คำสั่งเหล่านี้จะถูกประมวลผลอย่างมีประสิทธิภาพมากกว่า Z80 รุ่นดั้งเดิมถึง 2-11 เท่า โดยมีค่าเฉลี่ยประมาณ 3-5 เท่า ปัจจุบันกำหนดความถี่สัญญาณนาฬิกาไว้ที่ 50 MHz
  • Kawasakiได้พัฒนา KL5C8400 ที่เข้ากันได้กับไบนารี ซึ่งมีประสิทธิภาพในการใช้รอบสัญญาณนาฬิกาประมาณ 1.2-1.3 เท่าของ Z80 รุ่นดั้งเดิม และสามารถทำงานที่ความเร็วสัญญาณนาฬิกาได้สูงสุดถึง 33 MHz นอกจากนี้ Kawasaki ยังผลิตตระกูล KL5C80A1x ซึ่งมีอุปกรณ์ต่อพ่วงรวมถึง RAM ขนาดเล็กบนชิปด้วย โดยมีประสิทธิภาพในการใช้รอบสัญญาณนาฬิกาประมาณเท่ากับ eZ80 และสามารถทำงานที่ความเร็วสัญญาณนาฬิกาได้สูงสุดถึง 10 MHz (2006) [ 78 ]
  • NEC μPD9002 เป็นซีพียูแบบไฮบริดที่ใช้งานร่วมกับทั้งตระกูล Z80 และ x86 ได้
  • ชิปตระกูลตัวประมวลผลเสียงของ Actions Semiconductor ของจีน (ATJ2085 และอื่นๆ) ประกอบด้วยMCU ที่เข้ากันได้กับ Z80 พร้อมกับตัวประมวลผล DSP เฉพาะ 24 บิต[ 79 ]ชิปเหล่านี้ใช้ในผลิตภัณฑ์เครื่องเล่น MP3 และเครื่องเล่นมีเดียจำนวนมาก
  • ซอฟต์คอร์ที่สังเคราะห์ได้ T80 (VHDL) และ TV80 (Verilog) มีให้บริการจาก OpenCores.org [ 80 ]
  • ชิปNational Semiconductor NSC800 ที่ประกาศในปี 1980 [ 81 ]ถูกใช้ในเครื่องเข้ารหัสอิเล็กทรอนิกส์ TeleSecurity Timmann (TST) หลายเครื่อง[ 82 ]และCanon X-07 NSC800 เข้ากันได้อย่างสมบูรณ์กับชุดคำสั่ง Z80 [ 83 ] NSC800ใช้บัสแบบมัลติเพล็กซ์เช่นเดียวกับ 8085 แต่มีรูปแบบขาที่แตกต่างจาก Z80 [ 84 ]
ไม่เข้ากัน
  • ไมโครคอนโทรลเลอร์ Toshiba TLCS 900 ซีรีส์ที่มีปริมาณการผลิตสูง ส่วนใหญ่ เป็นแบบ โปรแกรมได้ครั้งเดียวใช้สถาปัตยกรรม Z80 โดยมีโครงสร้างรีจิสเตอร์พื้นฐาน BC, DE, HL, IX, IY เหมือนกัน และมีคำสั่งส่วนใหญ่เหมือนกัน แต่ไม่สามารถใช้งานร่วมกันได้ในระดับไบนารี ในขณะที่ TLCS 90 รุ่นก่อนหน้าสามารถใช้งานร่วมกันได้กับ Z80 [ 85 ]
  • ไมโครคอนโทรลเลอร์ซีรีส์ NEC 78Kใช้สถาปัตยกรรม Z80 เป็นพื้นฐาน มีโครงสร้างรีจิสเตอร์ BC, DE, HL เหมือนกัน และมีคำสั่งที่คล้ายกันแต่ตั้งชื่อต่างกัน ไม่สามารถใช้งานร่วมกันได้ในรูปแบบไบนารี
เข้ากันได้บางส่วน
เลิกผลิตแล้ว
  • โปรเซสเซอร์ ASCII Corporation R800เป็นโปรเซสเซอร์ 16 บิตความเร็วสูงที่ใช้ใน คอมพิวเตอร์ MSX TurboRโดยสามารถใช้งานร่วมกับ Z80 ได้ในด้านซอฟต์แวร์ แต่ไม่สามารถใช้งานร่วมกันได้ในด้านฮาร์ดแวร์ (จังหวะเวลาของสัญญาณ การจัดเรียงขา และหน้าที่ของขาต่างจาก Z80)
  • ชิป NMOS Z800และ CMOS Z280ของ Zilog เป็นชิป Z80 แบบ 16 บิต (ก่อน HD64180/Z180) ที่มีพื้นที่แอดเดรส MMU ขนาด 16 MB โดยเพิ่มการกำหนดแอดเดรสและการทำงานแบบตั้งฉากหลายแบบให้กับชุดคำสั่ง Z80 คุณสมบัติของมินิคอมพิวเตอร์ เช่น โหมดผู้ใช้และระบบ การรองรับมัลติโปรเซสเซอร์ MMU บนชิป แคชคำสั่งและข้อมูลบนชิป และอื่นๆ ถูกมองว่าเป็นความซับซ้อนมากกว่าฟังก์ชันการทำงานและการสนับสนุนสำหรับนักออกแบบระบบฝังตัว (ซึ่งมักเน้นด้านอิเล็กทรอนิกส์) นอกจากนี้ยังทำให้ยากต่อการคาดการณ์เวลาการประมวลผลคำสั่งอีกด้วย
  • เกมอาร์เคดบาง เกม เช่นPang / Buster Bros.ใช้ CPU "Kabuki" Z80 ที่เข้ารหัสซึ่งผลิตโดยVLSI Technologyโดยที่คีย์การถอดรหัสจะถูกเก็บไว้ในหน่วยความจำสำรองแบตเตอรี่ ภายใน เพื่อป้องกันการละเมิดลิขสิทธิ์และเกมเถื่อนที่ผิดกฎหมาย[ 88 ]

การใช้งานที่น่าสนใจ

คอมพิวเตอร์ตั้งโต๊ะ

ชิป Z80A ถูกนำมาใช้เป็น CPU ในเครื่องเล่นเกมหลายรุ่น เช่นColecoVision เครื่องนี้ โดย Z80 อยู่ใกล้กับขั้วต่อแบบขอบ (edge ​​connector)

ในช่วงปลายทศวรรษ 1970 และต้นทศวรรษ 1980 โปรเซสเซอร์ Z80 ถูกนำไปใช้ในเครื่องคอมพิวเตอร์สำหรับธุรกิจจำนวนมากที่ไม่ระบุชื่อรุ่น โดยใช้ ระบบปฏิบัติการ CP/Mซึ่งเป็นระบบปฏิบัติการที่ครองตลาดในขณะนั้น[ 89 ] [ 90 ]ตัวอย่างที่รู้จักกันดี 4 ตัวอย่างของคอมพิวเตอร์ธุรกิจ Z80 ที่ใช้ CP/M ได้แก่Heathkit H89 , Osborne 1 แบบพกพา , ซีรี่ส์ KayproและEpson QX-10 ส่วน Otrona Attache ซึ่งเป็นคอมพิวเตอร์ระดับไฮเอนด์ราคาแพงนั้นไม่ค่อยเป็นที่รู้จัก[ 91 ]บางระบบใช้ซอฟต์แวร์ระบบปฏิบัติการแบบมัลติทาสก์ (เช่นMP/Mหรือ Micronix ของ Morrow ) เพื่อแบ่งปันโปรเซสเซอร์ตัวเดียวระหว่างผู้ใช้หลายคนพร้อมกัน

คอมพิวเตอร์Sinclair ZX Spectrumที่ใช้ชิป Z80 ความเร็ว 3.5 เมกะเฮิร์ตซ์

มีการเปิดตัวคอมพิวเตอร์บ้านหลายรุ่นที่ใช้ Z80 เป็นโปรเซสเซอร์หลักหรือเป็นตัวเลือกเสริมเพื่อเข้าถึงซอฟต์แวร์ที่เขียนขึ้นสำหรับ Z80 ที่โดดเด่นคือ ซีรี่ส์ TRS-80รวมถึงรุ่นแรก (ต่อมาเรียกว่า "Model I"), Model II , Model IIIและModel 4ซึ่งติดตั้ง Z80 เป็นโปรเซสเซอร์หลัก และรุ่น TRS-80 อื่นๆ บางรุ่น (แต่ไม่ใช่ทั้งหมด) ที่ใช้ Z80 เป็นโปรเซสเซอร์หลักหรือโปรเซสเซอร์รอง เครื่องอื่นๆ ที่น่าสนใจได้แก่DEC Rainbow 100และSeequa Chameleonซึ่งทั้งสองรุ่นมีทั้งซีพียูIntel 8088และ Z80 เพื่อรองรับแอปพลิเคชัน 8 บิต CP/M-80 ที่ทำงานบน Z80 หรือ MS-DOS แบบกำหนดเองที่ไม่เข้ากันได้อย่างสมบูรณ์กับ แอปพลิเคชัน PC DOSที่ทำงานบน 8088

ในปี 1981 บริษัท Multitech (ซึ่งต่อมากลายเป็นAcer ) ได้เปิดตัวMicroprofessor Iระบบฝึกอบรมที่เรียบง่ายและราคาไม่แพงสำหรับไมโครโปรเซสเซอร์ Z80 ปัจจุบัน บริษัท Flite Electronics International Limited ในเมืองเซาแธมป์ตัน ประเทศอังกฤษยัง คงผลิตและจำหน่ายระบบนี้อยู่

ในปี 1984 โตชิบาได้เปิดตัว Toshiba MSX HX-10 ในประเทศญี่ปุ่นและออสเตรเลีย

ในปี 1985 Sharpได้เปิดตัวHotbitและGradienteได้เปิดตัวExpertซึ่งกลายเป็นคอมพิวเตอร์บ้านแบบ 8 บิตที่ได้รับความนิยมมากที่สุดในบราซิลจนถึงปลายทศวรรษ 1980

คอมพิวเตอร์แบบพกพาและแบบมือถือ

การใช้ Z80 ในอุปกรณ์ที่เบากว่าและใช้แบตเตอรี่แพร่หลายมากขึ้นเมื่อมีโปรเซสเซอร์เวอร์ชัน CMOS นอกจากนี้ยังเป็นแรงบันดาลใจให้เกิดการพัฒนาโปรเซสเซอร์ CMOS อื่นๆ เช่น LH5801 [ 92 ]จาก Sharp Sharp PC-1500ซึ่งเป็นคอมพิวเตอร์พกพาที่สามารถตั้ง โปรแกรมด้วย BASICได้วางจำหน่ายในปี 1981 ตามมาด้วยSharp PC-1600 ที่ได้รับการปรับปรุง ในปี 1986 และSharp PC-E220ในปี 1991 รุ่นต่อมาของSharp Wizard series ซึ่งเป็นเครื่องจัดการส่วนบุคคลก็ใช้ Z80 เช่นกันแล็ปท็อปที่สามารถใช้งานระบบปฏิบัติการ CP/M ได้เหมือนกับเครื่องเดสก์ท็อปก็วางจำหน่ายตามมาด้วยEpson PX-8 Genevaในปี 1984 และในปี 1985 Epson PX-4และBondwell- 2 ในขณะที่ตลาดแล็ปท็อปในช่วงหลายปีต่อมาได้เปลี่ยนไปใช้โปรเซสเซอร์Intel 8086 ที่ทรงพลังกว่าและระบบปฏิบัติการ MS-DOS แต่ระบบที่ใช้ Z80 ที่มีน้ำหนักเบาและแบตเตอรี่ใช้งานได้นานกว่าก็ยังคงถูกนำเสนอออกมา เช่น Cambridge Z88ในปี 1988 และAmstrad NC100ในปี 1992 Z8S180 ซึ่งพัฒนามาจาก Z80 ยังถูกนำไปใช้ในเครื่องช่วยงานดิจิทัลส่วนบุคคลแบบใช้ปากกา รุ่นแรกๆ อย่างAmstrad PenPad PDA600 ในปี 1993 บริษัท VTechในฮ่องกงได้ผลิตแล็ปท็อปขนาดเล็กหลายรุ่นภายใต้ชื่อ "Lasers" โดยใช้ Z80 [ 93 ] [ 94 ]สองรุ่นสุดท้ายคือ Laser PC5 [ 95 ]และ PC6 [ 96 ] Cidco MailStation Mivo 100 ซึ่งเปิดตัวครั้งแรกในปี 1999 เป็นอุปกรณ์อีเมลแบบพกพาแบบสแตนด์อะโลนที่มีไมโครคอนโทรลเลอร์ที่ใช้ Z80 [ 97 ] Texas Instruments ผลิตเครื่องจัดระเบียบพกพา (สิ้นสุดในปี 2000) โดยใช้โปรเซสเซอร์ Toshiba ที่สร้างขึ้นโดยใช้แกน Z80 รุ่นแรกคือ TI PS-6200 [ 98 ]และหลังจากการผลิตเป็นเวลานานหลายสิบรุ่น ก็ได้พัฒนาเป็นซีรี่ส์ PocketMate [ 99 ]

ระบบฝังตัวและอุปกรณ์อิเล็กทรอนิกส์สำหรับผู้บริโภค

ระบบตู้สาขาโทรศัพท์ (PABX ) ที่ใช้ชิป Z80 ชิป Z80 อยู่ทางด้านขวาของชิปที่มีฉลากสีขาวเขียนด้วยลายมือติดอยู่

Zilog Z80 เป็นไมโครโปรเซสเซอร์ที่ได้รับความนิยมในระบบฝังตัวและแกนไมโครคอนโทรลเลอร์ มานานแล้ว [ 40 ]ซึ่งยังคงมีการใช้งานอย่างแพร่หลายในปัจจุบัน[ 30 ] [ 100 ]การใช้งานของ Z80 ได้แก่ การใช้งานใน อุปกรณ์ อิเล็กทรอนิกส์สำหรับผู้บริโภคผลิตภัณฑ์อุตสาหกรรม และเครื่องดนตรีอิเล็กทรอนิกส์ ตัวอย่างเช่น Z80 ถูกใช้ในเครื่องสังเคราะห์เสียงProphet-5 ที่ล้ำสมัย [ 101 ] เช่นเดียวกับในเครื่องสังเคราะห์เสียงเครื่องแรกที่ติดตั้งMIDIคือProphet 600 [ 102 ] Z80 เป็นพื้นฐานสำหรับ เครื่องดนตรี E-mu Systems ทั้งหมด ตั้งแต่ปี 1976 ถึง 1986 [ 103 ] Casioใช้ Z80A ในเครื่องเล่นเกม PV-1000

เกมตู้หลายเกมในช่วงต้นทศวรรษ 1980 รวมถึงเกมPac-Manใช้ซีพียู Z80

ชิป Z80 ถูกใช้ในเครื่องเล่น เกม Master SystemและGame Gear ของ Sega ส่วน Sega Genesisนั้นมีชิป Z80 พร้อม RAM ขนาด 8 KB ของตัวเอง ซึ่งทำงานควบคู่ไปกับ CPU หลัก MC68000 สามารถเข้าถึงชิปเสียงและพอร์ต I/O (คอนโทรลเลอร์) ของระบบได้โดยตรง และมีเส้นทางข้อมูลแบบสวิตช์ไปยังบัสหน่วยความจำหลักของ 68000 (เพื่อให้เข้าถึง RAM หลักขนาด 64 KB, ตลับซอฟต์แวร์ และชิปวิดีโอทั้งหมด) นอกจากจะรองรับการเล่นเกม Master System แล้ว ชิป Z80 ยังมักใช้ในการควบคุมและเล่นเสียงในซอฟต์แวร์ของ Genesis อีกด้วย[ n ]

ซีพียู Z80 ยังถูกนำไปใช้ในเครื่องคิดเลขกราฟิกซีรีส์ TI-8x ยอดนิยม จากTexas Instrumentsโดยเริ่มตั้งแต่ปี 1990 ด้วยรุ่นTI-81ซึ่งใช้ซีพียู Z80 ที่ความเร็ว 2 MHz เครื่องคิดเลขรุ่นสูงกว่าส่วนใหญ่ในซีรีส์นี้ เริ่มตั้งแต่TI-82และTI-85เป็นต้นไป จะใช้ซีพียู Z80 ที่ความเร็ว 6 MHz หรือสูงกว่า (บางรุ่นที่มีชื่อ TI-8x ใช้ซีพียูอื่น เช่น M68000 แต่ส่วนใหญ่ใช้ Z80 เป็นหลัก ในเครื่องคิดเลขเหล่านั้น สามารถรันโปรแกรมที่เขียนด้วยภาษาแอสเซมบลีหรือคอมไพล์ในรูปแบบโค้ดภาษาเครื่อง Z80 ได้)

เครื่องคิดเลขกราฟิก TI-83และTI-84 Plusใช้ชิป Z80 ในขณะที่TI-84 Plus CE seriesใช้ชิปeZ80โดย Texas Instruments ยังคงจำหน่ายเครื่องคิดเลขทั้งสามซีรีส์นี้อยู่จนถึงปี 2025

ในช่วงปลายทศวรรษ 1980 โทรศัพท์บ้าน ของโซเวียต รุ่น "AON" มีชิป Z80 ซึ่งโทรศัพท์เหล่านี้ได้ขยายชุดคุณสมบัติของโทรศัพท์บ้านด้วยการแสดงหมายเลขผู้โทรเสียงเรียกเข้าที่แตกต่างกันตามผู้โทรการโทรด่วนและอื่นๆ[ 104 ]อย่างไรก็ตาม ในช่วงครึ่งหลังของทศวรรษ 1990 ผู้ผลิตโทรศัพท์เหล่านี้ได้เปลี่ยนไปใช้ไมโครคอนโทรลเลอร์ที่เข้ากันได้กับ 8051 เพื่อลดการใช้พลังงานและป้องกันไม่ให้อะแดปเตอร์แปลงไฟติดผนังขนาดเล็กเกิดความร้อนสูงเกินไป

การยุติ

เมื่อวันที่ 15 เมษายน 2567 Zilog ประกาศยุติการผลิตโปรเซสเซอร์ Z80 โดยรับคำสั่งซื้อจนถึงวันที่ 14 มิถุนายน 2567 การประกาศดังกล่าวรวมถึงโปรเซสเซอร์ Z80 จำนวน 13 รุ่น ซึ่งบางรุ่นเป็นชิปแบบDIP40 Zilog จะยังคงผลิต โปรเซสเซอร์รุ่น ปรับปรุง eZ80 ต่อไป [ 5 ]

ดูเพิ่มเติม

เชิงอรรถ

  1. ^มีเฉพาะในรุ่น CMOS เท่านั้น บริษัท National ไม่ได้ผลิตรุ่น NMOS ตามข้อมูลประวัติจากการสัมภาษณ์ Federico Faggin
  2. ^รุ่น CMOS มีความเร็วสูงสุดถึง 20 MHz และรุ่นที่เข้ากันได้กับระบบไบนารีมีความเร็วสูงสุดถึง 50 MHz
  3. ^สามารถใช้งานร่วมกับ Intel 8080 ได้
  4. ^นี่เป็นคุณสมบัติที่พบได้ทั่วไปในการออกแบบมินิคอมพิวเตอร์ในยุคนั้น และถูกนำไปใช้ในไมโครโปรเซสเซอร์รุ่นแรกๆ หลายรุ่น
  5. ^ Zilog ผลิตโทรศัพท์รุ่น Z80 รวมถึงผลิตภัณฑ์อื่นๆ ส่วนใหญ่ของตนเป็นเวลาหลายปี จนกระทั่งพวกเขาขายโรงงานผลิตและกลายเป็นบริษัท "ไร้โรงงานผลิต " อย่างที่เป็นอยู่ในปัจจุบัน
  6. ^แม้ว่า 8080 จะมีคำสั่งบวก 16 บิต และคำสั่งเพิ่มและลดค่า 16 บิต แต่ก็ไม่มีคำสั่งลบ 16 บิตโดยเฉพาะ และไม่มีแฟล็กโอเวอร์โฟลว์ Z80 จึงได้เพิ่มคำสั่ง ADC HL,rr และ SBC HL,rr เข้ามาเพื่อชดเชยส่วนนี้ โดยคำสั่งนี้จะตั้งค่าแฟล็กโอเวอร์โฟลว์ใหม่ให้เหมาะสม (ส่วนคำสั่ง ADD HL,rr ที่ใช้งานร่วมกับ 8080 ได้นั้นไม่มี)
  7. ^ ที่สำคัญคือ สามารถจัดการกับ แมนทิสซา 32 บิตของตัวถูกดำเนินการ สองตัวพร้อมกันในรูป แบบเลขลอยตัว 40 บิตที่ใช้ใน คอมพิวเตอร์บ้าน ZX81นอกจากนี้ยังมีการใช้งานในลักษณะเดียวกันในคอมพิวเตอร์ที่ใช้ Z80 รุ่นก่อนหน้าแต่ไม่ค่อยเป็นที่รู้จัก เช่น ABC 80และ ABC 800 ของ สวีเดน
  8. ^เนื่องจากการรีเฟรชนี้ไม่จำเป็นต้องถ่ายโอนข้อมูลใดๆ เพียงแค่ส่งออกที่อยู่แถวตามลำดับ จึงใช้ T-state น้อยกว่า 1.5 รอบการอ่าน M1 สั้นกว่าการอ่านหน่วยความจำปกติครึ่งรอบ สัญญาณ M1 เฉพาะ ( machine cycle one ) ใน Z80 สามารถใช้เพื่อให้ชิปหน่วยความจำมีเวลาอ่านเท่ากันสำหรับการดึงคำสั่งและการเข้าถึงข้อมูล กล่าวคือ เกือบ 2 T-state เต็มจาก รอบ การดึง 4T (รวมถึงจาก รอบ การอ่าน ข้อมูล 3T ) ที่อยู่ที่มีความถูกต้องจนถึงขอบท้ายของการอ่าน (หรือ M1) ยังคงสั้นกว่าการอ่านปกติครึ่งรอบ Z80 สามารถใช้หน่วยความจำที่มีช่วงเวลาการเข้าถึงเดียวกันกับ 8080 (หรือ 8086) ที่ความถี่สัญญาณนาฬิกาเดียวกัน การอ่านแบบหลายรอบนี้ยังหมายความว่า Z80 สามารถใช้ความถี่ภายในได้ประมาณสี่เท่าของ 6800, 6502 หรือรุ่นที่คล้ายกันโดยใช้ความเร็วหน่วยความจำเดียวกัน
  9. ^แตกต่างจากเวอร์ชัน nMOS ดั้งเดิม ซึ่งใช้แลตช์แบบไดนามิกและไม่สามารถหยุดได้นานเกินกว่าสองสามพันรอบสัญญาณนาฬิกา
  10. ^ ตระกูล 8086ที่เกี่ยวข้องก็สืบทอดการออกแบบรีจิสเตอร์นี้เช่นกัน
  11. ^ตัวชี้ HL ตัวแปรนี้เป็นวิธีเดียวในการเข้าถึงหน่วยความจำ (สำหรับข้อมูล) ใน Datapoint 2200 และด้วยเหตุนี้จึงรวมถึง Intel 8008 ด้วย ไม่สามารถใช้ที่อยู่โดยตรงในการเข้าถึงข้อมูลได้
  12. ^การโหลดหน่วยความจำแบบทันทีไม่สามารถใช้งานได้บน Datapoint 2200
  13. ตัวอย่างเช่น บนไมโครคอนโทรลเลอร์ 8080 โปรแกรมเมอร์อาจทดสอบพาริตีของตัวสะสมโดยADDบวกศูนย์เข้าไปSUBการลบศูนย์ออกจากตัวสะสม หรือการORเพิ่มหรือXORลบศูนย์เข้าไป ซึ่งทั้งหมดนี้เป็นการดำเนินการด้วยคำสั่งเดียวที่มีความเร็วและขนาดเท่ากัน ทั้งบน 8080 และ Z80 หากโปรแกรมเมอร์เลือกที่จะทดสอบพาริตีโดยORการเพิ่มหรือXORลบศูนย์เข้าไป Z80 จะประมวลผลโปรแกรมได้อย่างถูกต้อง แต่หากโปรแกรมเมอร์เลือกที่จะทดสอบพาริตีโดยADDการเพิ่มหรือSUBลบศูนย์ Z80 จะรีเซ็ตแฟล็ก P/V เสมอ (เนื่องจากการเพิ่มหรือลบศูนย์ไม่เคยทำให้เกิดโอเวอร์โฟลว์หรืออันเดอร์โฟลว์) แทนที่จะกำหนดค่า P เพื่อระบุพาริตีของไบต์อย่างถูกต้อง ดังเช่นที่ 8080 หรือ 8085 ทำ และโปรแกรมอาจล้มเหลว ไม่มีข้อความใดในคู่มือการเขียนโปรแกรม Intel 8080 ที่ห้ามการใช้คำสั่งทางคณิตศาสตร์ หรือกำหนดให้ใช้คำสั่งเชิงตรรกะในการทดสอบความเท่าเทียมกัน ดังนั้นจึงมีเหตุผลน้อยมากที่โปรแกรมเมอร์ 8080 ควรเลือกใช้อย่างใดอย่างหนึ่งมากกว่าอีกอย่าง ในการใช้งานจริง ไม่น่าเป็นไปได้ที่คำสั่งทางคณิตศาสตร์ที่แสดงในตัวอย่างนี้จะถูกเลือกใช้เพื่อทดสอบความเท่าเทียมกัน เนื่องจากคำสั่งเชิงตรรกะAND AและOR Aสั้นกว่าหนึ่งไบต์
  14. ^การใช้งานทั่วไปนี้ ซึ่งเป็นเพียงทางเลือกและไม่ได้จำกัดขอบเขต ทำให้เกิดคำอธิบายที่ไม่ถูกต้องบ่อยครั้งเกี่ยวกับ Z80 ใน Genesis ว่าเป็น "ตัวประมวลผลเสียง"

อ่านเพิ่มเติม

เอกสารข้อมูลจำเพาะและคู่มือ
  • เอกสารข้อมูลจำเพาะของ Z80 (NMOS) ; Zilog; 10 หน้า; 1978
  • คู่มือข้อมูล Z80 (NMOS) ; Zilog; 131 หน้า; 1978
  • เอกสารข้อมูลจำเพาะของ Z80 (NMOS และ CMOS) ; Zilog; 36 หน้า; 2002.แก้ไขข้อผิดพลาด
  • คู่มือผู้ใช้ Z80 (NMOS และ CMOS) ; Zilog; 332 หน้า; 2016
  • คู่มือผู้ใช้ Z80 Peripheral (NMOS และ CMOS) ; Zilog; 330 หน้า; 2001
หนังสือฮาร์ดแวร์
  • สร้างคอมพิวเตอร์ Z80 ของคุณเอง – แนวทางการออกแบบและหมายเหตุการใช้งาน ; ฉบับพิมพ์ครั้งที่ 1;สตีฟ เซียร์เซีย ; สำนักพิมพ์ไบต์บุ๊คส์; 332 หน้า; 1981; ISBN 978-0070109629. (คลังเก็บเอกสารสำคัญ)
  • ไมโครโปรเซสเซอร์ Z80 – สถาปัตยกรรม การเชื่อมต่อ การเขียนโปรแกรม และการออกแบบฉบับพิมพ์ครั้งที่ 1 โดย Ramesh Gaonkar สำนักพิมพ์ Macmillan จำนวน 674 หน้า ปี 1988 ISBN 978-0675205405. (คลังเก็บเอกสารสำคัญ)
  • คู่มือผู้ใช้ Z80 – คำจำกัดความของขาเชื่อมต่อ สัญญาณควบคุม อุปกรณ์ต่อพ่วง และอื่นๆ ; ฉบับพิมพ์ครั้งที่ 1; โจเซฟ คาร์; เรสตัน; 338 หน้า; 1980; ISBN 978-0835995177. (คลังเก็บเอกสารสำคัญ)
  • เทคนิคการเชื่อมต่อไมโครโปรเซสเซอร์ฉบับที่ 3 โดย Rodnay Zaks และ Austin Lesea สำนักพิมพ์ Sybex จำนวน 466 หน้า ปี 1979 ISBN 978-0-89588-029-1. (คลังเก็บเอกสารสำคัญ)
หนังสือซอฟต์แวร์
  • การตั้งโปรแกรม Z80 ; ฉบับที่ 3; ร็อดนีย์ แซคส์; ไซเบกซ์; 630 หน้า; 1980; ไอเอสบีเอ็น 978-0895880949. (คลังเก็บเอกสารสำคัญ)
  • การเขียนโปรแกรมภาษาแอสเซมบลี Z80 ; ฉบับพิมพ์ครั้งที่ 1; โดย Lance Leventhal; สำนักพิมพ์ Osborne/McGraw-Hill; 642 หน้า; ปี 1979; ISBN 978-0931988219. (คลังเก็บเอกสารสำคัญ)
  • ภาษาแอสเซมบลี 8080/Z80 – เทคนิคเพื่อการเขียนโปรแกรมที่ดีขึ้น ; ฉบับพิมพ์ครั้งที่ 1; อลัน มิลเลอร์; สำนักพิมพ์ จอห์น ไวลีย์ แอนด์ ซันส์; 332 หน้า; 1981; ISBN 978-0471081241. (คลังเก็บเอกสารสำคัญ)
  • การเขียนโปรแกรมภาษาแอสเซมบลี Z80 และ 8080 ; ฉบับพิมพ์ครั้งที่ 1; โดย Kathe Spracklen; สำนักพิมพ์ Hayden; 180 หน้า; ปี 1979; ISBN 978-0810451674. (คลังเก็บเอกสารสำคัญ)
  • การเขียนโปรแกรมไมโครคอมพิวเตอร์เชิงปฏิบัติ – Z80 – รวมถึงซอร์สโค้ดสำหรับแอสเซมเบลอร์ในตัวและมอนิเตอร์ดีบัก ; ฉบับพิมพ์ครั้งที่ 1; วอลเตอร์ เวลเลอร์; นอร์เทิร์น เทคโนโลยี; 501 หน้า; 1978; ISBN 978-0930594053. (คลังเก็บเอกสารสำคัญ)
  • ซับรูทีนภาษาแอสเซมบลี Z80 ; ฉบับพิมพ์ครั้งที่ 1; โดย Lance Leventhal และ Winthrop Saville; สำนักพิมพ์ Osborne/McGraw-Hill; 512 หน้า; ปี 1983; ISBN 978-0931988912. (คลังเก็บเอกสารสำคัญ)
  • เอกสารเกี่ยวกับ Z80 ที่ไม่ได้บันทึกไว้ ; ฌอน ยัง; เวอร์ชัน 0.91; 52 หน้า; ปี 2005 (เอกสารเก่า)
บัตรอ้างอิง
  • เอกสารอ้างอิงสำหรับไมโครโปรเซสเซอร์ Z80 ; Shirley & Nanos; Nanos Systems; 16 หน้า; 1981 (เอกสารเก่า)
  • เอกสารอ้างอิงฉบับย่อสำหรับไมโครโปรเซสเซอร์ Z80 ; เจมส์ ลูอิส; ไมโครลอจิก; 2 หน้า; 1981 (เอกสารเก่า)
  • หน้าสนับสนุนอย่างไม่เป็นทางการของ Z80
  • เอกสารทางเทคนิค Z80
  • ชุดทดสอบ Z80
  • คู่มือลัด Z80
  • รายชื่อชิปที่ใช้งานร่วมกับ Z80 ได้
  • Shirriff, Ken (กันยายน 2013). "การวิศวกรรมย้อนกลับของ Z-80: ซิลิคอนสำหรับเกตสองตัวที่น่าสนใจ" . เก็บถาวรจากต้นฉบับเมื่อวันที่ 28 พฤศจิกายน 2023 . เรียกดูเมื่อวันที่ 26 พฤศจิกายน 2023 .
  • — (กันยายน 2013). "Z-80 มี ALU 4 บิต นี่คือวิธีการทำงาน" . เก็บถาวรจากต้นฉบับเมื่อวันที่ 9 กันยายน 2013 . เรียกดูเมื่อวันที่ 16 พฤศจิกายน 2021 .
  • — (ตุลาคม 2014). "ลงลึกถึงระดับซิลิคอน: วิธีการทำงานของรีจิสเตอร์ใน Z80" . เก็บถาวรจากต้นฉบับเมื่อวันที่ 6 ตุลาคม 2014 . เรียกดูเมื่อวันที่ 5 ตุลาคม 2014 .
  • — (พฤศจิกายน 2013). "การวิเคราะห์วงจรเพิ่ม/ลดค่า 16 บิตของ Z-80" . เก็บถาวรจากต้นฉบับเมื่อวันที่ 15 มกราคม 2024 . เรียกดูเมื่อวันที่ 26 พฤศจิกายน 2023 .

โปรแกรมจำลอง / โปรแกรมจำลองการทำงาน:

  • โปรแกรมจำลองซอฟต์แวร์ Z80
  • โปรแกรมจำลอง Z80 อีกตัวหนึ่ง
  • โปรแกรมจำลองบัส Z80 สำหรับการศึกษา
  • วิชวล Z80 รีมิกซ์
  • ไลบรารีจำลอง Z80 ที่เขียนด้วยภาษา ANSI C
บอร์ด
  • คอมพิวเตอร์ Z80 7 ชิปของแกรนท์
  • คอมพิวเตอร์ Z80 9 ชิปของแกรนท์ รองรับ CP/M 2.2 หรือ BASIC
  • คอมพิวเตอร์ link3000 6-chip Z80 รองรับ CP/M 2.2
ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=Zilog_Z80&oldid=1345510732 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ ซิล็อก ซี80

Zilog Z80เป็น ไมโครโปรเซสเซอร์ 8 บิตที่ออกแบบโดยZilogเปิดตัวครั้งแรกในปี 1976 และมีบทบาทสำคัญในการพัฒนาคอมพิวเตอร์ส่วนบุคคล ยุคแรก มันถูกออกแบบมาให้ใช้ งานร่วม กับIntel 8080

ประวัติศาสตร์

โฆษณาของ Z80 ในเดือนพฤษภาคม 1976 ระบุถึงข้อดีหลักๆ ที่เหนือกว่า 8080 ภาพถ่ายของ ไมโครโปรเซสเซอร์ Zilog Z80 รุ่นดั้งเดิมแบบ depletion-load nMOS ขนาด ของชิป ทั้งหมดคือ 3545×3350 ไมโครเมตร สี่เหลี่ยมสีฟ้าที่อยู่รอบนอกคือแผ่นที่เชื่อมต่อกับขาภายนอก...

ประวัติศาสตร์ยุคแรก

ที่ Fairchild Semiconductor และต่อมาที่ Intel นักฟิสิกส์ และ วิศวกร Federico Faggin ได้ทำงานเกี่ยวกับเทคโนโลยีการผลิต ทรานซิสเตอร์ และ เซมิคอนดักเตอร์ ขั้นพื้นฐาน เขายังได้พัฒนาวิธีการออกแบบพื้นฐานที่ใช้สำหรับหน่วยความจำและ ไมโครโปรเซสเซอร์ ที่ Intel...

การลงทุนของเอ็กซอน เริ่มการพัฒนารายละเอียดแล้ว

ในขณะที่บริษัทยังอยู่ในช่วงเริ่มต้น นิตยสารข่าวอุตสาหกรรม Electronic News ได้รับทราบเรื่องนี้และตีพิมพ์เรื่องราวเกี่ยวกับบริษัทที่เพิ่งก่อตั้งใหม่ ซึ่งดึงดูดความสนใจของ Exxon Enterprises ซึ่ง เป็นหน่วยงานด้านการลงทุนเทคโนโลยีขั้นสูงของ Exxon ในขณะนั้น...