สปาร์กชิป ไมโครโปรเซสเซอร์แบบ 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
<< BACK >>