สปาร์กชิป ไมโครโปรเซสเซอร์แบบ RISC |
โครงสร้างรีจิสเตอร์
โครงสร้างของสปาร์มีการจัดรีจิสเตอร์ภายในออกเป็น 6 กลุ่ม กลุ่มละ 32 รีจิสเตอร์ โดยแบ่งเป็น
รีจิสเตอร์ร่วมโกลบอล 8 ตัว และใช้ทำงาน 24 ตัว โครงสร้างการออกแบบแบ่งเป็น 6 โปรเซส
เพื่อแยกการทำงานแบบขนานโครงสร้างของรีจิสเตอร์ทั้ง 24 ตัวนี้มีการซับซ้อนกัน โดยแบ่งเป็น
กลุ่มๆ ละ 8 รีจิสเตอร์รูปที่ 8.6
สปาร์จึงเป็นสถาปัตยกรรมแบบ 32 บิตเต็ม โดยให้ข้อมูลขนาด 1 เวิร์ด ตามขอบเขตของรีจิสเตอร์
และการอ้างอิงแอดเดรส การอ้างแอดเดรสเรียกข้อมูลเข้ามาทีละ 4 ไปต์ หรือแอดเดรสที่กำหนดจะ
บ่งบอกในลักษณะเป็น 4 เท่าของข้อมูลแบบเดิม ในกรณี ให้เพิ่มประสิทธิภาพของการอ้างแอดเดรส
รีจิสเตอร์ที่ใช้มีขนาด 32 บิต แต่คำสั่ง LOAD และ STORE กระทำกับข้อมูลขนาด 8,16,32,64บิต
กรณี64 บิต ก็จะใช้แบบคู่รีจิสเตอร์การจัดรีสเตอร์ของสปาร์กทำในลักษณะวินโดว์ที่มีการซับซ้อนกัน
ดังในรูป 8.7แต่ที่ขณะใดขณะจะเห็นเพียงวินโดว์เดียว คือ มีจำนวนรีจิสเตอร์คงที่ คือ 32 รีจิสเตอร์
การกำหนดวินโดว์จะมีตัวชี้ที่เรียกว่า CWP (Current Windor Pointer ) เป็นตัวชี้วินโดว์ที่กำลังใช้
งานอยู่
CWP มีขนาด 5 บิต จำนวนรีจิสเตอร์ ทั้งหมดจึงมีได้เท่ากับ 520 รีจิสเตอร์ (32*16+8) ภายในแต่
ละวินโดว์แบ่งออกเป็น 4 กลุ่ม คือ โกลบอล (globals) เอาต์พุต (outs) โลคัล (locals) และอิน (ins)
โดยแต่ละกลุ่มมีจำนวนรีจิสเตอร์เท่ากัน
โกลบอล เป็นกลุ่มรีจิสเตอร์ที่ใช้ร่วมกันในทุกวินโดว์ GO ได้รับการกำหนดให้มีค่าคงที่เป็น "0"
ส่วนG1 ถึง G7 เป็นที่เก็บของค่าต่างๆ เช่น พอยน์เตอร์ เลขจำนวนเต็ม
เอาต์ เป็นกลุ่มรีจิสเตอร์ที่ใช้ผ่านค่าระหง่างกระบวนความหรือฟังก์ชัน เช่น กระบวนความ A
เรียกกระบวนความ B กระบวนความ A จะนำค่าที่จะผ่านให้กับกระบวนความ B มาเก็บในรีจิสเตอร์เอาต์
เมื่อ CWPได้รับการเปลี่ยนค่าให้ไปชี้ที่ตำแหน่งอื่น เช่น ชี้กระบวนการความ B กระบวนความ B ก็จะ
มองเห็นกลุ่มค่ารีจิสเตอร์เอาต์ที่มีค่าส่งมาจากกระบวนความ A ได้
การมองเห็นเอาต์ของ A แต่จะเป็นอินของกระบวนความ B การดำเนินการในลักษณะวินโดว์แบบนี้
จึงเป็นวิธีการซับซ้อน เพื่อให้ใช้อ่านค่าในรีจิสเตอร์ต่างวินโดว์กันได้ การส่งค่าผ่านกันนี้จะใช้
รีจิสเตอร์ 01-05ส่วนรีจิสเตอร์ 06 เป็นที่เก็บ SP (Stack Pointer) เพื่อชี้ไปยังหน่วยความจำ
สแต็ก การส่งผ่านในกรณีที่ข้อมูลมีจำนวนมากจะต้องส่งผ่านทางสแต็กเป็นวิธีที่แบบเดิมนิยมใช้
อยู่แล้ว รีจิสเตอร์ 07 ใช้สำหรับเก็บค่าของตำแหน่งที่จะกลับมาเนื่องจากคำสั่ง CALL
โลคัล เป็นกลุ่มรีจิสเตอร์ที่จะใช้งานอย่างไรก็ได้ ผู้เขียนโปรแกรมหรือตัวแปลภาษาจะ
เป็นผู้ใช้ และใช้เฉพาะกระบวนความนั้นๆ เท่านั้น รูปที่ 8.8 คือ L0-L7 การกำหนดแบบโลคัลนั้ก็
เหมือนกับการใช้ภาษาระดับสูงนั่นเอง
อิน เป็นกลุ่มรีจิสเตอร์ที่ใช้ในการรัลค่าที่ผ่านมาให้กัลกระบวนความ ในสปาร์กอบเองใช้
I6 เป็นที่เก็บค่า FP (Frame Pointer) และถูกใช้ในการชี้ค่าตัวแปลที่อยู่ในเฟรมของสแต็ก FP
จะชี้ที่ตำแหน่งหน่วยความจำที่เดียวกันเสมอตลอดระยะเวลาที่กระบวนความมีเอ็กซีคิวต์ ซึ่งไม่
เหมือนกับค่า SP ที่อาจจะเปลี่ยนขณะที่กระบวนความมีการเอ็กซีคิวต์ 17 ใช้ในการเก็บตำแหน่งที่
จะกลับมา เมื่อกระบวนความเสร็จจากการเอ็กซีคิวต์
รีจิสเตอร์วินโดว์ยังเก็บสถานะของโปรเซสเซอร์ เมื่อมีการอินเตอร์รัปต์หรือแทรปเกิดขึ้น เมื่อมี
การเรียกข้ามกระบวนความขะทำให้ค่าของ CWPลดลง เพื่อชี้ไปยังตำแหน่งของวินโดว์ใหม่ให้
กับกระบวนความติดต่อกัน จนกระทั่งไม่มีวินโดว์ให้ใช้งานจะต้องมีวิธีการย้ายตัววินโดว์มาฝากไว้
ในหน่วยความจำ ซึ่งมีขั้นตอนกล่าวคือ WIM (Window Invalid Mask) ซึ่งเป็นรีจิสเตอร์ใช้
ในการตอบสนองจำนวนของวินโดว์ที่สามารถใช้งานได้ โดยปกติภายใน WIM จะมีค่าเป็น "0"
ทุกบิต ยกเว้นบิตที่แสดงถึงวินโดว์ที่มีอายุการใช้งานนานที่สุด ในปัจจุบันจะมีค่าเป็น "1" ในกรณี
วินโดว์ไม่เหลือให้ใช้และมีผู้เข้าขอหรือแทรปเข้ามาจะต้องให้โปรเซสเซอร์จัดการทำการย้ายค่าใน
วินโดว์ที่มีบิตของ WIM ที่เป็น "1" ชี้อยู่นำมาเก็บไว้ในสแต็กและทำการหมุน "1" ให้ไปอยู่ใน
ตำแหน่งของวินโดว์ที่มีอายุการใช้งานรองลงมา
ชุดคำสั่งของสปาร์ก
คำสั่งของไมโครโปรเซสเซอร์สปาร์กมีรูปแบบทั้งสามรูปแบบ สองในสามรูปแบบยังแบ่งแยก
เป็นรูปแบบย่อย รูปแบบแต่ละรูปแบบมีการใช้เขตออปโค้ดเป็นตัวกำหนดรูปแบบของชุดคำสั่ง
ดังรูปที่ 8.9
|
|