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

โครง

รูปภาพแสดงรีจิสเตอร์ภายในทั้งหมดของ CPU Z-80
รีจิสเตอร์หลักที่ใช้งานทั่วไป
รีจิสเตอร์ในกลุ่มแรก คือ A,F,B,C,D,E,H,L
เป็นรีจิสเตอร์ขนาด 8บิท
ที่ใช้งานทั่วไปโดย รีจิสเตอร์ เหล่านี้สามารถประกอบรวมกันเป็นคู่รีจิสเตอร์ได้
คือ AF,BC,DE และ HLโดยคู่
รีจิสเตอร์เหล่านี้ได้รับการใช้งานในลักษณะของรีจิสเตอร์ ขนาด 16 บิท
การกระทำภายใน CPU อาจจะอาศัยเพียงรีจิสเตอร์เดียวหรือกระทำเป็นคู่รีจิสเตอร์ได้
โดยที่ A คือ Accumulator
, F คือ
flag , flagของ
Z-80 จะมีด้วยกันทั้งหมด
6 ตัว
จึงใช้เพียง 6 บิท แต่ Z-80 อาศัยการเพิ่มบิทขึ้นอีก 2 บิท และกลาย เป็นรีจิสเตอร์
F รีจิสเตอร์
F นี้
ได้รับการ set , reset การกระทำตามคำสั่งทาง คณิตศาสตร์ หรือ
ลอจิกได้และเราสามารถใช้ F เหมือนรีจิสเตอร์หนึ่ง ซึ่งเมื่อรวมกับ A แล้ว
จะกลายเป็นรีจิสเตอร์ขนาด 16บิทได้

รูปภาพแสดงกลุ่มรีจิสเตอร์หลักใช้งานทั่วไป
ลุ่มรีจิสเตอร์สำรอง
เป็นกลุ่มรีจิสเตอร์ที่สามารถเก็บข้อมูลได้
โดยเป็นตัวเก็บข้อมูลที่มาจากรีจิสเตอร์หลัก รีจิสเตอร์ ชุดนี้จึงมีด้วยกัน 8 ตัว
คือ A', F', B', C', D', E', H' ,L' รีจิสเตอร์เหล่านี้เป็นรีจิสเตอร์ที่ใช้ในการ
เก็บข้อมูลชั่วคราว ในการที่ต้องการใช้รีจิสเตอร์หลักทำงานอย่างอื่นก่อน
ดังนั้นรีจิสเตอร์กลุ่ม นี้จึงไม่สามารถกระทำทางคณิตศาสตร์และลอจิกได้

รูปภาพแสดกลุ่มรีจิสเตอร์สำรอง
กลุ่มรีจิสเตอร์ที่ใช้งานเฉพาะอย่าง
โปรแกรมเคาน์เตอร์ (PC
- Program counter) โปรแกรมเคาน์เตอร์เป็นรีจิสเตอร์ขนาด
16บิท
ที่เป็นตัวกำหนดตำแหน่งของโปรแกรมในขณะสภาวะการกระทำการเฟทช์โดยขณะทำ
การเฟทช์ค่าที่อยู่ใน
โปรแกรมเคาน์เตอร์จะไปปรากฎอยู่ที่แอดเดรสบัสเพื่อชี้ไปยังตำแหน่งในหน่วยความจำ ให้
CPU อ่านคำสั่งมาตีความหมายค่าที่อยู่ในโปรแกรมเคาน์เตอร์จะเพิ่มค่าขึ้นได้อย่างอัตโนมัติ
หลังการกระทำการเฟทช์ แต่ถ้าหาก CPU กระทำคำสั่งให้ข้ามไป
ยังตำแหน่งอื่น (Jump) ค่าแอดเดรส
ที่จะกระโดดข้ามนั้นจะโหลดเข้ามายังโปรแกรมเคาน์เตอร์ได้อย่างอัตโนมัติ
สแตคพอยท์เตอร์ (SP - Stack pointer) เป็นรีจิสเตอร์ที่มีขนาด 16 บิทที่ใช้สำหรับชี้ไปยังแอดเดรสชั้นบนสุดของสแตคที่อยู่ใน RAM โดยส่วนของสแตคมีลักษณะโครงสร้าง เป็นหน่วยความจำ
เป็นแบบเก็บทีหลังเรียกออกก่อน (last in first out) ข้อมูลในสแตค อาจได้รับการ push หรือ pop มาจาก
รีจิสเตอร์ภายในCPU ลักษณะของสแตคในที่นี้ยังเป็น
ส่วนช่วยในการกระทำ interrupt และการเรียก โปรแกรมย่อย กล่าวคือ ในการ interrupt ค่าของโปรแกรมเคาน์เตอร์จะได้รับการรักษาไว้ในชั้นสแตคครั้นเมื่อโปรแกรมกลับจาก interrupt ไปกระทำยังโปรแกรมหลักก็จะนำค่าจากสแตคกลับเข้ามายังโปรแกรมเคาน์เตอร์ ใหม่ ในทำนองเดียวกัน
การกระโดดไปกระทำยังโปรแกรมย่อยก็เช่นเดียวกัน ดังนั้น การกระทำในรูปของ interrupt ของ
โปรแกรมย่อยสามารถ ซ้อนกันได้ไม่มีสิ้นสุด
อินเดครีจิสเตอร์ (IX,IY - index register) CPU
Z-80 มีอินเดครีจิสเตอร์ขนาน 16 บิท 2 ตัว
แต่ละตัวใช้ประโยชน์หลักใน การ ทำหน้าที่เป็นตัวเก็บแอดเดรสฐาน (base address) เพื่อ
ทำหน้าที่อ้างแอดเดรสแบบอินเดคแอดเดรสซิ่ง (index addressing)ในโหมดของอินเดคแอดเดรส ซึ่งมีข้อมูลที่ อยู่ในอินเดครีจิสเตอร์นี้จะรวมกับข้อมูลที่ติดมากับคำสั่งอีก 8 บิท
เพื่อเป็นตัวกำหนดแอดเดรสให้กับ คำสั่งข้อมูลที่ติดมากับคำสั่งนี้เราเรียกว่า displacement ซึ่งจะเก็บในรูปของตัวเลข
2's complement
อินเตอรร์รัพท์เพจแอดเดรสรีจิสเตอร์ (I-Interrupt
page address register) การอินเตอร์รัพท์
ของ Z-80 มี
หลายโหมดและโหมดหนึ่งที่ทำให้การอินเตอร์รัพท์ของ Z-80มีประสิทธิภาพ สูง
กล่าวคือ เมื่อเกิดการอินเตอร์รัพท์ในโหมดนี้ขึ้น มันสามารถอ้างแอดเดรสโดยทางอ้อม
ไปกระทำโปรแกรมใน ที่ใดก็ได้ในหน่วยความจำ โดยอาศัยค่าในรีจิสเตอร์
รวมกับค่าที่ส่งมาจากอุปกรณ์เพอริเฟอรัลอีก 8 บิท
ชี้ไปยังค่าในหน่วยความจำเพื่อนำค่านั้นมาโหลดเข้าใน โปรแกรมเคาวน์เตอร์เพื่อกระทำต่อไป
ด้วยวิธีการนี้เราจึงสามารถกระโดดเข้าไปทำที่ส่วนใดก็ได้ในหน่วยความจำ
รีจิสเตอร์รีเฟรชหน่วยความจำ
(R-memory reflesh register) การต่อ
ซีพียูกับหน่วยความจำนั้น โดย ปกติจะต่อกับหน่วยความจำชนิด static ได้โดยง่าย
แต่ชนิด dynamic ที่ต้องการรีเฟรช
มีราคาถูกกว่ามีความหนาแน่นสูงกว่า Z-80 ให้ข้อดีกว่าประการหนึ่งคือมันสามารถให้การ
รีเฟรชหน่วยความจำได้ อย่างอัตโนมัติ โดยค่าใน R รีจิสเตอร์จะเพิ่มค่าขึ้นอีก
1 ทุกครั้งที่มีการกระทำการ
fetch คำสั่ง
และ ข้อมูลในรีจิสเตอร์ R นี้ จะถูกส่งออกไปยังแอดเดรสบัส ในส่วนบิทที่มีนัยสำคัญต่ำกว่าจังหวะของการส่งนี้จะเป็นจังหวะเดียวกันกับที่ซีพียู
ส่งสัญญาณ รีเฟรชออกมา ผู้โปรแกรมสามารถกำหนดค่าให้กับ
รีจิสเตอร์ R นี้ได้แต่ค่าในรีจิสเตอร์
นี้จะเรียกใช้โดยผู้โปรแกรมทางคำสั่งโดยตรงไม่ได้
แอคคิวมูเลเตอร์ (accumulator) และแฟลก (flag) ซีพียูจะมีรีจิสเตอร์ที่ใช้เป็นหลักในการ
เป็นตัว operand สำหรับกระทำทางคณิตศาสตร์และลอจิก
โดยรีจิสเตอร์หลักนี้จะมีเพียง 8 บิท เรียกว่า "แอคคิวมูเลเตอร์ (accumulator)" การกระทำในส่วนของหน่วยคณิตศาสตร์
และลอจิกย่อมเกิดเงื่อนไขได้หลายอย่างที่จะต้องแสดงสถานะภาพของเงื่อนไข เหล่านั้น เช่น
เงื่อนไขผลลัพธ์เป็นศูนย์ผลลัพธ์เป็นบวกหรือลบมีตัวทดหรือตัวขอยืมในการกระทำ
ทางคณิตศาสตร์ แสดงเงื่อนไขพาริตี้คู่หรือคี่สิ่งเหล่านี้จะให้ผลลัพธ์แสดงสถานะ
ได้ด้วย แฟลก (flag) แฟลกเป็นรีจิสเตอ์ขนาด 8 บิท ซึ่ง สามารถรวมกับแอคคิวมูเลเตอร์เป็น รีจิสเตอร์ขนาด 16 บิท
ได้ผู้โปรแกรมยังสามารถใช้คำสั่งในการเคลื่อนย้ายข้อมูลจาก แอคคิวมูเลเตอร์
A และแฟลก Fไปเก็บไว้ใน A' และ F' ได้ เพื่อทำให้การใช้งาน
ของ A และ F มีประสิทธิภาพดียิ่งขึ้น

รูปภาพแสดงกลุ่มรีจิสเตอร์ใช้งานเฉพาะอย่าง
หน่วยคำนวณทางคณิตศาสตร์และลอจิก
(ALU - arithmetic and logic unit)
การประมวลผลที่สำคัญของ CPUของคอมพิวเตอร์ยังขึ้นอยู่กับหน่วยคำนวณทางคณิตศาสตร์และ
ลอจิก (ALU) ส่วน ALU นี้จะนำข้อมูลซึ่งอาจจะมาจากภายนอก CPU หรือภายใน
CPU ก็ได้มา
ประมวลผล การ ประมวลผลในส่วน ALU ที่
สำคัญจะประกอบด้วย
การบวก (add) , การลบ
(subtract) , ลอจิก
AND , ลอจิก
OR , ลอจิก
EX-OR , เปรียบเทียบ
(compare) , การเลื่อนบิททางซ้ายหรือขวา ,การเพิ่มค่า (increment) , การลดค่า
(decrement) , การเซ็ทบิท (set bit) , การรีเซ็ทบิท (reset bit) , การทดสอบบิท (test bit)

รูป
ไดอะแกรมเวลาของซีพียู
Z-80 CPU จะทำงานในลักษณะพื้นฐาน
ที่สำคัญประกอบด้วย
·
การเขียน - อ่านหน่วยความจำ
·
การเขียน - อ่านอุปกรณ์อินพุท - เอาท์พุท
·
การตอบสนองต่อการอินเตอร์รัพท์
การทำงานในแต่ละไซเคิลของคำสั่งประกอบด้วยส่วนการทำงานสองจังหวะที่สำคัญ
คือ สภาวะเฟทช์ (fetch) และสภาวะ execute ส่วนของสภาวะ fetchจะประกอบด้วย
state ย่อย
ๆ หลาย state แต่ละ state จะ synchronize กับสัญญาณนาฬิกา

เนื่องจากในแต่ละคำสั่งประกอบด้วย machine cycle หลายแบบด้วยกัน แต่machine cycle ที่ใช้ ทั้งหมด
สามารถสรุปออกมาเป็นแบบอย่างได้เป็น
2. ไซเคิลการเขียนหรืออ่านหน่วยความจำ
3. ไซเคิลการรับส่งข้อมูลอินพุทหรือเอาท์พุท
4. ไซเคิลการต้องการใช้บัส หรือการตอบสนองการใช้บัส
5. ไซเคิลการอินเตอร์รัพท์ และการตอบสนองต่อการอินเตอร์รัพท์
6. ไซเคิลการรับอินเตอร์รัพท์แบบนอนมาสค์เคเบิ้ล (Nonmaskable
interrupt)
ไซเคิลการเฟทช์ออพโค้ด (OCF -
opcode fetch)
ในสภาวะ M1 นี้ เป็นภาวะเริ่มแรกของทุกคำสั่ง ในสภาวะ M1 นี้ขอให้สังเกตจากระบบ ไดอะแกรมเวลา จะเห็นสภาวะการทำงานของ CPU ได้ดี กล่าวคือเมื่อเริ่มเข้าสู่สภาวะ