ไมโครโปรแกรมมิงเป็นวิธีการนำหน่วยควบคุมของคอมพิวเตอร์ไปใช้อย่างเป็นระบบ โดยสรุปก็คือกระบวนการสร้างไมโครโค้ดสำหรับไมโครโปรเซสเซอร์ ไมโครโค้ดเป็นรหัสย่อยที่กำหนดวิธีที่ไมโครโปรเซสเซอร์ควรดำเนินการเมื่อรันคำสั่งภาษาเครื่อง และบางครั้งไมโครโค้ดจะเรียกว่าไมโครโปรแกรมเมื่อถูกใช้ในการดำเนินการเฉพาะ ในทางกลับกัน หน่วยควบคุมแบบไมโครโปรแกรมจะบันทึกค่าการควบคุมแบบไบนารีเป็นคำในหน่วยความจำ
ไมโครโปรแกรมแนวนอนเทียบกับไมโครโปรแกรมแนวตั้ง
ความแตกต่างระหว่างไมโครโปรแกรมแนวนอนและไมโครโปรแกรมแนวตั้งคือการสนับสนุน ระดับของการใช้ไมโครโปรแกรมแบบขนาน และความยืดหยุ่น ทั้งคู่แตกต่างกันเมื่อพูดถึงการเข้ารหัสด้วยบิต พวกเขายังแตกต่างกันในการออกแบบและการประมวลผลซึ่งช่วยให้พวกเขาค้นหาข้อมูล
สัญญาณควบคุมในหน่วยควบคุมไมโครโปรแกรมแนวนอนจะแสดงในรูปแบบไบนารีถอดรหัส แต่ละบิตในไมโครโปรแกรมแนวนอนจะสัมพันธ์กับจุดควบคุมเดียว ซึ่งแสดงให้เห็นว่าการดำเนินการไมโครที่เกี่ยวข้องจะต้องถูกดำเนินการ เนื่องจากแต่ละ microinstruction สามารถสั่งทรัพยากรได้หลายตัวพร้อมกัน มันจึงมีศักยภาพที่จะปรับปรุงการใช้ฮาร์ดแวร์ในขณะที่ยังลดจำนวนของ microinstructions ที่จำเป็นต่อไมโครโปรแกรม
สัญญาณควบคุมในชุดควบคุมไมโครโปรแกรมแนวตั้งถูกเข้ารหัสในรูปแบบไบนารี การดำเนินการระดับไมโครแต่ละครั้งมีรหัส ซึ่งแปลเป็นสัญญาณควบคุมที่ชัดเจนโดยตัวถอดรหัส ฟิลด์ microinstruction ถูกใช้งานอย่างสมบูรณ์ เนื่องจากมีการกำหนดเพียงแค่การดำเนินการไมโครที่จะดำเนินการเท่านั้น นอกจากนี้ ไมโครโปรแกรมแนวตั้งยังเขียนได้ง่ายกว่าไมโครโปรแกรมแนวนอน
ตารางเปรียบเทียบระหว่างไมโครโปรแกรมแนวนอนและแนวตั้ง
พารามิเตอร์ของการเปรียบเทียบ | ไมโครโปรแกรมแนวนอน | ไมโครโปรแกรมแนวตั้ง |
ระดับความขนาน | ระดับความขนานที่สูงขึ้น | ความเท่าเทียมกันในระดับต่ำ |
ยืดหยุ่นได้ | มีความยืดหยุ่นน้อยกว่า | มีความยืดหยุ่นมากขึ้น |
การเข้ารหัส | ใช้การเข้ารหัส ROM น้อยกว่า Vertical Microprogramming | ใช้การเข้ารหัส ROM ได้มากขึ้น |
ฮาร์ดแวร์เพิ่มเติม | ไม่จำเป็นต้องใช้ฮาร์ดแวร์เพิ่มเติม | ฮาร์ดแวร์เพิ่มเติมอยู่ในรูปของตัวถอดรหัส |
ลำดับ | ใช้โครงสร้างไมโครแนวนอน | ใช้โครงสร้างจุลภาคแนวตั้ง |
ไมโครโปรแกรมแนวนอนคืออะไร?
ในหน่วยควบคุมไมโครที่ตั้งโปรแกรมในแนวนอน สัญญาณควบคุมจะแสดงในรูปแบบไบนารีที่ถอดรหัส นั่นคือ 1แต่/CS มีสัญญาณควบคุม 'n' ที่ต้องการ n แต่เข้ารหัส
แต่ละบิตในไมโครโปรแกรมแนวนอนเกี่ยวข้องกับจุดควบคุมแบบเอกพจน์ ซึ่งแสดงให้เห็นว่าการดำเนินการไมโครที่เกี่ยวข้องจะต้องดำเนินการ เนื่องจากแต่ละ microinstruction สามารถจัดการรีสอร์ทได้หลาย ๆ แห่งในเวลาเดียวกัน มันจึงมีศักยภาพที่จะปรับปรุงการใช้ฮาร์ดแวร์ในขณะที่ต้องการ microinstructions น้อยลงต่อไมโครโปรแกรม ในทางกลับกัน ไมโครโปรแกรมแนวนอนมักจะเป็นตัวแทนของชุดของการดำเนินการไมโครที่ดำเนินการพร้อมกัน
ช่วยให้เกิดความเท่าเทียมกันมากขึ้นในขณะที่ใช้การเข้ารหัสน้อยลงและแยกช่องควบคุมออก ในทางกลับกัน การพัฒนาไมโครโปรแกรมที่ใช้ทรัพยากรอย่างเหมาะสมหรือมีประสิทธิภาพถือเป็นความท้าทายที่ยาก เนื่องจากบิตควบคุมแต่ละบิตไม่ขึ้นกับบิตอื่นๆ ไมโครโปรแกรมในแนวนอนจึงให้อิสระอย่างมาก เนื่องจากมีความยาวมากกว่าโครงสร้างจุลภาคแนวตั้ง จึงมักจะให้ข้อมูลเพิ่มเติม
ไมโครโปรแกรมแนวนอน เช่นเดียวกับภาษาเครื่องแบบดั้งเดิม ใช้วิธีตามลำดับเพื่อแสดงข้อกำหนดถัดไปในซอฟต์แวร์ที่มีเหตุผล แต่ละบิตเชื่อมโยงกับโพสต์คำสั่งเดียว ซึ่งบ่งชี้ว่าสอดคล้องกับจุดควบคุมที่เกี่ยวข้อง จะดำเนินการไมโคร สาขาที่มีเงื่อนไขและไม่มีเงื่อนไข ลำดับจะต้องถูกทำลายโดยใช้คุณสมบัติการควบคุม
Vertical Microprogramming คืออะไร?
สัญญาณควบคุมถูกกำหนดในรูปแบบไบนารีที่เข้ารหัสในหน่วยควบคุมไมโครโปรแกรมแนวตั้ง และสัญญาณควบคุม 'n' ต้องใช้การเข้ารหัสบิต log2n ไมโครโปรแกรมแนวตั้ง ตรงข้ามกับไมโครโปรแกรมแนวนอน ใช้รูปแบบที่ยืดหยุ่นและระดับการเข้ารหัสที่สูงขึ้น ไม่เพียงแต่ลดความยาวของคำสั่งไมโคร แต่ยังหลีกเลี่ยงความยาวของคำสั่งไมโครจากการได้รับผลกระทบโดยตรงจากความจุหน่วยความจำที่เพิ่มขึ้น ในกรณีส่วนใหญ่ ไมโครอินสตรัคชั่นแต่ละอันจะแทนการดำเนินการไมโครเดียว
ไมโครโปรแกรมแนวตั้งมีความหนาแน่นของโค้ดสูงกว่า ซึ่งเป็นประโยชน์กับขนาดของที่เก็บการควบคุม microinstruction แนวตั้งคล้ายกับรูปแบบภาษาเครื่องแบบดั้งเดิม ซึ่งประกอบด้วยการดำเนินการเดียวเท่านั้นและตัวถูกดำเนินการสองสามตัว การเขียนไมโครโปรแกรมแนวตั้งง่ายกว่าการเขียนไมโครโปรแกรมแนวนอน microinstruction แนวตั้งคล้ายกับภาษาเครื่องคลาสสิก ซึ่งมีเพียงหนึ่งการกระทำและตัวถูกดำเนินการไม่กี่ ด้วยเหตุนี้ ไมโครโปรแกรมมิ่งจึงง่ายต่อการนำไปใช้ โดยทั่วไปประกอบด้วย 4-6 ฟิลด์ โดยแต่ละฟิลด์ต้องการ 16 ถึง 32 บิตต่อคำสั่ง
ไมโครโปรแกรมแนวตั้งมีความอิ่มตัวของโค้ดสูงกว่า ซึ่งเป็นประโยชน์ต่อความจุของที่เก็บการควบคุม microinstruction แนวตั้งคล้ายกับรูปแบบภาษาเครื่องแบบดั้งเดิม ซึ่งประกอบด้วยฟังก์ชันเดียวและองค์ประกอบการประมวลผลบางส่วน แต่ละ microinstruction ในแนวตั้งจะกำหนด micro-operation ที่เฉพาะเจาะจง โดยตัวถูกดำเนินการระบุแหล่งที่มาของข้อมูลและ sink
ความแตกต่างหลักระหว่างไมโครโปรแกรมแนวนอนและไมโครโปรแกรมแนวตั้ง
- ไมโครโปรแกรมแนวนอนช่วยให้มีความขนานในระดับที่สูงขึ้น ถ้าดีกรีเป็น n สัญญาณควบคุม n จะถูกเปิดใช้งานพร้อมกัน ในทางกลับกัน Microprogramming แนวนอนช่วยให้มีความขนานในระดับต่ำ ถ้าระดับเป็น 0 หรือ 1 สัญญาณควบคุมจะเปิดใช้งานในแต่ละครั้งเท่านั้น
- ไมโครโปรแกรมแนวนอนมีความยืดหยุ่นน้อยกว่าชุดควบคุมไมโครโปรแกรมมิงแนวตั้ง
- ไมโครโปรแกรมแนวนอนใช้การเข้ารหัส RaoM น้อยลง ในขณะที่ไมโครโปรแกรมแนวตั้งทำให้มีการเข้ารหัส ROM มากขึ้นเพื่อลดความยาวของคำควบคุม
- ไม่จำเป็นต้องใช้ฮาร์ดแวร์เพิ่มเติมสำหรับ Microprogramming แนวนอน แต่ในแนวตั้ง Microprogramming ฮาร์ดแวร์เพิ่มเติมจะอยู่ในรูปของตัวถอดรหัสซึ่งจำเป็นสำหรับการสร้างสัญญาณควบคุม
- ไมโครโปรแกรมแนวนอนใช้ microinstruction ในแนวนอน ซึ่งแต่ละบิตในฟิลด์ควบคุมจะสัมพันธ์กับสายควบคุม ในอีกทางหนึ่ง microprogramming แนวตั้งใช้ microinstruction ในแนวตั้ง ซึ่งแต่ละการกระทำจะได้รับรหัส ซึ่งจะถูกแปลเป็นสัญญาณควบคุมแต่ละตัวโดยตัวถอดรหัส
บทสรุป
ไมโครโปรแกรมมิงเป็นวิธีแก้ปัญหาที่มีประสิทธิภาพอย่างมหาศาลต่อความท้าทายของการสร้างคอนโทรลเลอร์อย่างเป็นระบบ และมันถูกใช้ในโปรเซสเซอร์ส่วนใหญ่ (โดยมีการดัดแปลงเล็กน้อย) ตั้งแต่กลางทศวรรษ 1960 ถึงปลายทศวรรษ 1980
microinstructions แนวตั้ง ตรงข้ามกับ microinstructions แนวนอน แสดงถึง micro-operation เดียว ไมโครโปรแกรมแนวตั้งเข้ารหัสบิตควบคุม แต่ไมโครโปรแกรมแนวนอนอนุญาตให้มีความขนานในระดับสูงโดยมีการเข้ารหัสต่ำและแยกฟิลด์ควบคุม ไมโครโปรแกรมแนวนอนเร็วกว่าชุดควบคุมไมโครโปรแกรมแนวตั้ง
Horizontal Microprogramming รองรับคำควบคุมที่ยาวขึ้น ในขณะที่ Microprogramming แนวตั้งรองรับคำควบคุมที่สั้นกว่า การตัดสินใจระหว่างสองวิธีต้องพิจารณาด้วย อย่างไรก็ตาม ในทางปฏิบัติ นักออกแบบผสมผสานประเภทคำสั่งย่อยแนวนอนและแนวตั้งเพื่อสร้างโครงสร้างที่มีขนาดกะทัดรัดและมีประสิทธิภาพ