โปรเซสเซอร์ ARM เช่น cortex-a9 ใช้ไมโครโค้ดหรือไม่


12

โปรเซสเซอร์ ARM (ล่าสุดและเก่ากว่า) ใช้ไมโครโค้ดหรือไม่ ถ้าเป็นเช่นนั้นแล้วจะทำอะไร? คำสั่งของพวกเขาไม่ง่ายพอที่จะดำเนินการโดยตรงโดยไม่ต้องถูกแปลเป็น micro-ops?

คำตอบ:


14

TL, DR; ในขณะที่หน่วยประมวลผล ARM ใช้แนวคิดที่คล้ายคลึงกับซีพียูแบบไมโครโค้ด (เช่นมีบล็อกฮาร์ดแวร์ที่ถอดรหัสคำสั่งในการทำงานแบบไมโครเดียว ) พวกเขาจะไม่ได้รับการ เข้ารหัสแบบดั้งเดิมที่ใช้ ROM ในการจัดเก็บแต่ละไมโครคำสั่งหรือ คำแนะนำ / การปฏิบัติงานขนาดเล็กเหล่านี้สามารถแก้ไขได้หลังจากผลิตในฮาร์ดแวร์จริง แท้จริงแล้วโปรเซสเซอร์ ARM ใช้การควบคุมแบบเดินสายในตัวถอดรหัสคำสั่งเพื่อสร้างการทำงานแบบไมโคร

อย่างไรก็ตามในทางปฏิบัติการดัดแปลงตัวถอดรหัสคำสั่งนั้นคล้ายกับการดัดแปลงตัวประมวลผลแบบ microcoded เนื่องจาก ARM ให้สิทธิ์ซอร์สโค้ดภาษา - คำอธิบายฮาร์ดแวร์ ( HDL ) ของสถาปัตยกรรมซีพียูแก่ผู้ผลิตแต่ละรายทำให้การปรับระดับฮาร์ดแวร์ทำได้ง่ายกว่ามาก ดูส่วนInstruction Decoderในการออกแบบไมโครโปรเซสเซอร์ Wikibook สำหรับความแตกต่างเพิ่มเติมระหว่างตัวถอดรหัสคำสั่ง RISC และ CISC ทั่วไป


ในขณะที่สถาปัตยกรรม ARM ตัวเองจะไม่ microcoded ในความหมายดั้งเดิมคำแนะนำของแต่ละบุคคลจะถูก ถอดรหัสเป็นขนาดเล็กขนาดเล็กการดำเนินงาน หน่วยประมวลผล ARM ที่ทันสมัยอยู่ไกลจาก "ง่าย" - แม้ว่าคำสั่งจะเป็นแบบ orthogonal มาก แต่ก็มีเทคโนโลยีที่ทันสมัยมากมาย (เช่นการวางท่อ, คำสั่ง superscalar, การดำเนินการนอกแคช, คำสั่งที่ซับซ้อนเช่นหน่วยจุดลอยตัว หรือคำสั่ง NEON) ที่ A9 คอร์ทันสมัยมี แน่นอนว่าตัวประมวลผลใด ๆ สามารถทำได้ง่ายพอที่จะดำเนินการโดยไม่มีการแปลเป็นการปฏิบัติการแบบไมโคร แต่นี่เป็นการใส่ "ไข่ทั้งหมดของคุณไว้ในตระกร้าเดียว" - คุณไม่สามารถแก้ไขข้อผิดพลาดที่เป็นไปได้ในชุดคำสั่ง

อย่างไรก็ตามหากเรากำลังพูดถึงขั้นตอนการถอดรหัสคำสั่งเท่านั้นแน่นอนว่าโปรเซสเซอร์ ARM หลายตัวไม่ได้ถูกเข้ารหัสในลักษณะที่ทำให้สามารถทำการดัดแปลงได้จริงแม้ว่านี่อาจเป็นเพราะผู้ผลิตส่วนใหญ่ได้รับอนุญาตให้ใช้เทคโนโลยี ARM รหัสที่มาฮาร์ดแวร์ (เขียนใน HDL) สิ่งนี้จะลดการใช้พลังงานเนื่องจากไม่จำเป็นต้องใช้ไมโครโค้ด แต่คำสั่งแต่ละคำสั่งจะถูก "รวบรวม" ลงในบล็อกฮาร์ดแวร์จริง สิ่งนี้ยังช่วยให้การแก้ไข errata โดยผู้ผลิตแต่ละราย

ที่จริงแล้วแม้แต่ใน CPU ที่ใช้ CISC (เช่น x86) ก็ไม่มีข้อกำหนดสำหรับการใช้ไมโครโค้ด อย่างไรก็ตามในทางปฏิบัติความซับซ้อนของชุดคำสั่งรวมกับความแตกต่างหลากหลายในการออกใบอนุญาตการใช้พลังงานและแอพพลิเคชั่นทำให้การเลือกไมโครโค้ดเหมาะสำหรับกรณีของ x86 อย่างไรก็ตามในกรณีของ ARM มันมีประโยชน์น้อยกว่าเนื่องจากการเปลี่ยนแปลงชุดคำสั่ง (ตัวถอดรหัส) นั้นง่ายกว่าที่จะนำไปใช้และควบคุมในแง่ของฮาร์ดแวร์เอง (ตามที่ผู้ผลิตสามารถกำหนดเองได้)


แม้ว่าการมีไมโครโค้ดสามารถทำให้การออกแบบโปรเซสเซอร์ง่ายขึ้นในบางกรณี (เนื่องจากแต่ละคำสั่งมีอยู่ในฐานะ "โปรแกรมไมโคร" ซึ่งตรงข้ามกับฮาร์ดแวร์จริง) นี่เป็นเพียงแค่ตัวถอดรหัสคำสั่ง (เช่นThumb-2 ส่วนขยายที่อนุญาต) คำแนะนำเกี่ยวกับความยาวที่มีอยู่โดยการเพิ่มตัวถอดรหัสคำสั่งแบบอินไลน์ด้วยตัวถอดรหัสคำสั่ง ARM) แม้ว่าหน่วยเหล่านี้สามารถนำไปใช้งานได้จริงโดยใช้ไมโครโค้ด แต่ก็ไม่ควรฉลาดในเรื่องของการใช้พลังงานเนื่องจากคุณจำเป็นต้องกำหนดเอาท์พุทสำหรับสัญญาณควบคุมแต่ละตัวในซีพียูเองแม้ว่าจะไม่จำเป็นก็ตาม สิ่งนี้ไม่ได้ มีอะไรจะทำอย่างไรกับ "ความซับซ้อน" ของซีพียูตัวจริงอย่างไรก็ตามในขณะที่ ARM ARM มีสิ่งก่อสร้างที่ทันสมัยที่ทุกคนคาดหวัง )

ในกรณีของ ARM ที่กำหนดให้ orthogonality ของชุดคำสั่งความซับซ้อนที่เกี่ยวข้องในการใช้วิธีการ microcoded นั้นมีค่ามากกว่าประโยชน์ของการเปลี่ยนฮาร์ดแวร์ที่เกี่ยวข้องโดยตรงในบล็อกตัวถอดรหัสคำแนะนำ ในขณะที่สิ่งนี้เป็นไปได้อย่างแน่นอนมันก็กลายเป็น "พูดซ้ำล้อ" เพื่อพูดเพราะคุณสามารถแก้ไขโดยตรง (และรวบรวม / ทดสอบ / จำลอง /) การเปลี่ยนแปลงในฮาร์ดแวร์


คุณสามารถ "คิด" ของซอร์สโค้ด ARM เองในรูปแบบของไมโครโค้ดในกรณีนี้แม้ว่าแทนที่จะเก็บไมโครแอคชั่น / ไมโคร - โปรแกรมแต่ละโปรแกรมไว้ใน ROM ที่สามารถแก้ไขได้หลังจากนั้นพวกเขาจะถูกนำไปใช้โดยตรง ฮาร์ดแวร์ในตัวถอดรหัสคำสั่ง การให้ตัวถอดรหัสคำสั่งนั้นเขียนด้วย VHDL / Verilog การเปลี่ยนแปลงคำสั่งที่มีอยู่นั้นง่ายเหมือนการดัดแปลงซอร์สโค้ดการคอมไพล์ใหม่และทดสอบฮาร์ดแวร์ใหม่ (เช่นบน FPGA หรือโปรแกรมจำลอง) สิ่งนี้ขัดแย้งกับความซับซ้อนของฮาร์ดแวร์ x86 ที่ทันสมัยซึ่งยากต่อการทดสอบ / จำลองระหว่างการพัฒนาและการปรับเปลี่ยนได้ยากยิ่งขึ้นหลังการผลิต (เนื่องจากขนาดในแง่ของทรานซิสเตอร์เกินกว่าสิ่งที่เราสามารถทำงานได้แม้ในปัจจุบันที่แพงที่สุด FPGAs ซึ่งเป็นการเพิ่มประโยชน์ให้กับการใช้ที่จัดเก็บไมโครโค้ด)ฮาร์ดแวร์ทางกายภาพโดยใช้ FPGA


ดังนั้นไมโครโค้ดของ ARM อยู่บนฮาร์ดแวร์ใช่ไหม
Kraken

1
@ คราเคนในความหมายใช่; แทนที่จะใช้ไมโครต่อท้ายคำสั่งแต่ละคำแปลจะถูกแปลโดยตัวถอดรหัสคำสั่งลงในคำสั่ง micro-operation / micro- actionsโดยตรง (รอบนาฬิกาอย่างน้อยหนึ่งรอบ) สำหรับ opcode นั้น การเรียนการสอนบทความถอดรหัสจากไมโครออกแบบ Wikibook ยังมีประโยชน์ในการอธิบายความแตกต่างระหว่าง RISC และ CISC ถอดรหัสการเรียนการสอนตามปกติ
พัฒนา

ขอบคุณ สิ่งนี้ชัดเจนมากสำหรับฉัน ขอบคุณอีกครั้ง. +1 สำหรับความพยายาม
Kraken
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.