ซีพียู

CPU Z-80

โครงสร้างของ CPU Z-80 มีโครงสร้างที่พัฒนามาจาก 8080 ดังนั้นในแง่โครงสร้างพื้นฐานจะ เหมือนกับ CPU 8080 แต่เนื่องจาก Z-80 มีการพัฒนามากขึ้นทางซอฟท์แวร์ และ ฮาร์ดแวร์ จึงทำให้มีรายละเอียดแตกต่างเพิ่มเติมอีกหลายประการด้วยกัน

รูปแสดง block diagram ของ CPU Z-80

โครงสร้างภายในของ Z-80 CPU ประกอบด้วย รีจิสเตอร์ภายในที่สามารถ เขียนและอ่านได้ถึง 208 บิท โดยแยกเป็นกลุ่มของรีจิสเตอร์ขนาด 8 บิท 18 รีจิสเตอร์และรีจิสเตอร์ขนาด 16 บิท อีก 4 รีจิสเตอร์

รูปภาพแสดงรีจิสเตอร์ภายในทั้งหมดของ 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 มีประสิทธิภาพดียิ่งขึ้น

จัดทำโดย  :  นายธิติพงษ์  บุตรชาติ

เลขที่  19    ชั้น ม.4/2



แหล่งอ้างอิง : http://www.school.net.th

โดย : นาย ธิติพงษ์ บุตรชาติ, รร.สตรีนน, วันที่ 17 กุมภาพันธ์ 2546