วงจรคำสั่งใน CPU: การดึงข้อมูลถอดรหัสและดำเนินการอย่างไร

วงจรคำสั่งใน CPU
อะไร ซีพียู does คือดำเนินการตามคำสั่งของโปรแกรมที่อยู่ในหน่วยความจำ แต่คุณรู้ไหมว่าพวกเขาทั้งหมดปฏิบัติตามกฎทั่วไปเดียวกัน? ทั้งหมดเป็นไปตามวงจรคำสั่งเดียวกันซึ่งแบ่งออกเป็นสามขั้นตอนที่แตกต่างกันเรียกว่า Fetch, Decode และ Execute ซึ่งแปลว่าการดึงข้อมูลถอดรหัสและดำเนินการ เราอธิบายว่าขั้นตอนเหล่านี้ทำงานอย่างไรและมีการจัดระเบียบอย่างไร

เพื่อลดความซับซ้อนและทำให้แนวคิดที่อธิบายในบทความนี้เข้าใจได้ง่ายขึ้นเราได้ตัดสินใจที่จะอธิบายโปรเซสเซอร์ที่เรียบง่ายอย่างยิ่งสำหรับช่วงเวลาปัจจุบันดังนั้นในบทความนี้คุณจะเห็นคำอธิบายว่ามีวงจรการเรียนการสอนใดบ้างในลักษณะทั่วไปที่สามารถนำไปใช้ได้ ตั้งแต่โปรเซสเซอร์ 8 บิตแรกไปจนถึงโปรเซสเซอร์ที่ซับซ้อนที่สุดในปัจจุบัน

แสดงภาพวงจรการเรียนการสอน

Ciclo Instrucción Unidad Control

โปรเซสเซอร์ไม่ได้แตกต่างไปจากมุมมองหนึ่งของเครื่องยนต์สันดาปซึ่งมักจะมีกระบวนการระเบิดของเชื้อเพลิงอย่างต่อเนื่องในแต่ละขั้นตอนไม่ว่าจะเป็น 2 จังหวะหรือ 4 จังหวะ เหตุผลก็คือโปรเซสเซอร์ทำงานในสามขั้นตอนที่แตกต่างกันในเวอร์ชันที่ง่ายที่สุดซึ่งมีดังต่อไปนี้:

  • ดึงหรือจับภาพ: ซึ่งคำสั่งถูกจับจาก RAM และคัดลอกไปยังภายในโปรเซสเซอร์
  • ถอดรหัสหรือถอดรหัส: ซึ่งคำสั่งที่บันทึกไว้ก่อนหน้านี้จะถูกถอดรหัสและส่งไปยังหน่วยประมวลผล
  • ดำเนินการ: เมื่อคำสั่งได้รับการแก้ไขและผลลัพธ์ที่เขียนในรีจิสเตอร์ภายในของโปรเซสเซอร์หรือในที่อยู่หน่วยความจำของ RAM

ทั้งสามขั้นตอนนี้ได้รับการตอบสนองในทุกโปรเซสเซอร์ มีขั้นตอนที่สี่ซึ่งก็คือการเขียนกลับซึ่งเมื่อหน่วยประมวลผลเขียนผลลัพธ์ แต่โดยปกติจะนับภายในขั้นตอนการดำเนินการของวงจรคำสั่ง

ขั้นตอนแรกของวงจรการเรียนการสอน: ดึงข้อมูล

กระบวนการดึงข้อมูล

ขั้นตอนแรกของวงจรการเรียนการสอนมีหน้าที่ในการบันทึกคำแนะนำในไฟล์ แรม หน่วยความจำที่กำหนดให้กับโปรเซสเซอร์ผ่านชุดของหน่วยและการลงทะเบียนดังต่อไปนี้:

  1. ตัวนับโปรแกรมหรือตัวนับโปรแกรม: ซึ่งชี้ไปยังบรรทัดหน่วยความจำถัดไปซึ่งเป็นที่ตั้งของคำสั่งโปรเซสเซอร์ถัดไป ค่าของมันจะเพิ่มขึ้นทีละ 1 ทุกครั้งที่รอบคำสั่งสมบูรณ์เสร็จสิ้นหรือเมื่อคำสั่งกระโดดเปลี่ยนค่าของตัวนับโปรแกรม
  2. ลงทะเบียนที่อยู่หน่วยความจำ: MAR คัดลอกเนื้อหาของพีซีและส่งไปยัง RAM ผ่านพินแอดเดรสของซีพียูซึ่งต่อด้วยพินแอดเดรสของแรมเอง
  3. Memory Data Register หรือทะเบียนข้อมูลหน่วยความจำ : ในกรณีที่ CPU ต้องทำการอ่านหน่วยความจำสิ่งที่ MDR ทำคือคัดลอกเนื้อหาของที่อยู่หน่วยความจำนั้นไปยังรีจิสเตอร์ภายในของ CPU ซึ่งเป็นการลงทะเบียนรหัสผ่านชั่วคราวก่อนที่เนื้อหาจะถูกคัดลอกไปยัง Instruction Register MDR ซึ่งแตกต่างจาก MAR เชื่อมต่อกับพินข้อมูลของ RAM และไม่เชื่อมต่อกับพินแอดเดรสและในกรณีของคำสั่งการเขียนเนื้อหาของสิ่งที่คุณต้องการเขียนใน RAM จะถูกเขียนใน MDR ด้วย
  4. ลงทะเบียนคำสั่ง: ส่วนสุดท้ายของขั้นตอนการดึงข้อมูลคือการเขียนคำสั่งในรีจิสเตอร์คำสั่งซึ่งหน่วยควบคุมโปรเซสเซอร์จะคัดลอกเนื้อหาสำหรับขั้นตอนที่สองของวงจรคำสั่ง

ขั้นตอนย่อยทั้ง 4 นี้เกิดขึ้นในโปรเซสเซอร์ทั้งหมดไม่ว่ายูทิลิตี้สถาปัตยกรรมและความเข้ากันได้แบบไบนารีหรือที่เราเรียกว่า ISA

หน่วยควบคุม

หน่วยควบคุม

ชุดควบคุมเป็นส่วนที่ซับซ้อนที่สุดที่มีอยู่ในโปรเซสเซอร์และงานของมันมีดังนี้:

  • พวกเขาทำหน้าที่ในการประสานงานการเคลื่อนไหวและลำดับของข้อมูลที่เคลื่อนไหวภายในและภายนอกโปรเซสเซอร์รวมถึงหน่วยย่อยต่างๆที่รับผิดชอบ
  • โดยทั่วไปถือว่าหน่วยของขั้นตอนการจับภาพหรือ Fetch เป็นส่วนหนึ่งของฮาร์ดแวร์ที่เราเรียกว่าชุดควบคุมและฮาร์ดแวร์นี้เรียกอีกอย่างว่า Front-End ของโปรเซสเซอร์
  • จะตีความคำสั่งและส่งไปยังหน่วยประมวลผลต่าง ๆ ที่เชื่อมต่ออยู่
  • มีการสื่อสารไปยัง ALU และหน่วยประมวลผลที่แตกต่างกันของโปรเซสเซอร์ที่ทำหน้าที่
  • มีหน้าที่ในการจับและถอดรหัสคำสั่ง แต่ยังเขียนผลลัพธ์ในรีจิสเตอร์แคชหรือที่อยู่ที่เกี่ยวข้องของแรม

Opcode โหมดที่อยู่

สิ่งที่หน่วยควบคุมทำคือถอดรหัสคำสั่งและทำเช่นนี้เนื่องจากคำสั่งแต่ละคำสั่งเป็นประโยคที่คำกริยาไปก่อนแล้วจึงเป็นวัตถุโดยตรงหรือวัตถุที่กระทำการกระทำ หัวเรื่องจะถูกกำจัดในภาษาภายในของคอมพิวเตอร์เนื่องจากเข้าใจว่าเป็นคอมพิวเตอร์ที่ดำเนินการดังนั้นแต่ละบิตจึงเป็นประโยคที่ 1 และ 0 แรกตรงกับการกระทำและตัว ที่ตามมาคือข้อมูลหรือตำแหน่งของข้อมูลที่จะจัดการ

ขั้นตอนที่สอง: ถอดรหัส

คำแนะนำDecodificación

มีคำสั่งหลายประเภทและไม่ใช่ทั้งหมดที่ทำเหมือนกันดังนั้นขึ้นอยู่กับประเภทของคำสั่งที่เราจำเป็นต้องรู้ว่าหน่วยประมวลผลใดที่จะถูกส่งไปและวิธีที่คลาสสิกที่สุดในการทำคือผ่านสิ่งที่เราเรียกว่าตัวถอดรหัส ซึ่งนำคำสั่งแต่ละคำสั่งมาหารภายในตาม opcode หรือคำสั่งและข้อมูลหรือที่อยู่หน่วยความจำที่อยู่

ตัวอย่างเช่นในแผนภาพด้านบนเรามีแผนภาพของโปรเซสเซอร์ที่มีเพียง 8 คำสั่งซึ่งสามารถเข้ารหัสได้เพียง 3 บิตเท่านั้น คำสั่งแต่ละคำสั่งเมื่อถอดรหัสแล้วจะถูกส่งไปยังหน่วยการดำเนินการที่แตกต่างกันซึ่งจะแก้ไขได้

วงจรการเรียนการสอนนี้ซับซ้อนที่สุดในบรรดาวงจรที่กำหนดประเภทของสถาปัตยกรรม ขึ้นอยู่กับว่าเรามีชุดคำสั่งที่ลดลงหรือซับซ้อนสิ่งนี้จะส่งผลต่อลักษณะของชุดควบคุมขึ้นอยู่กับรูปแบบของคำสั่งหรือจำนวนการประมวลผลในเวลาเดียวกันในขั้นตอนการถอดรหัสดังนั้นหน่วยควบคุมจะมี ธรรมชาติที่แตกต่างกัน อื่น ๆ

วิธีที่ง่ายที่สุดในการนึกภาพสิ่งที่เกิดขึ้นคือการนึกถึงคำสั่งเมื่อรถไฟไหลเวียนผ่านเครือข่ายทางรถไฟที่ซับซ้อนและหน่วยควบคุมจะนำพวกเขาไปยังสถานีปลายทางซึ่งเป็นหน่วยปฏิบัติการที่จะทำหน้าที่แก้ไขคำสั่ง

ขั้นตอนที่สาม: ดำเนินการ

ALU 1 บิต

ขั้นตอนสุดท้ายคือการดำเนินการตามคำแนะนำในขั้นตอนนี้คำแนะนำจะได้รับการแก้ไข แต่คำสั่งบางประเภทจะไม่ได้รับการแก้ไขในลักษณะเดียวกันเนื่องจากวิธีการใช้ฮาร์ดแวร์จะขึ้นอยู่กับฟังก์ชันของแต่ละประเภท โดยทั่วไปแล้วเรามีคำแนะนำสี่ประเภท:

  • คำแนะนำการเคลื่อนไหวบิต: ซึ่งลำดับของบิตที่มีข้อมูลจะถูกจัดการ
  • คำแนะนำทางคณิตศาสตร์: ในกรณีที่ดำเนินการทางคณิตศาสตร์และตรรกะสิ่งเหล่านี้จะได้รับการแก้ไขในสิ่งที่เรียกว่า ALU หรือหน่วยเลขคณิต - ตรรกะ
  • คำแนะนำการกระโดด: ซึ่งค่าถัดไปของตัวนับโปรแกรมจะมีการเปลี่ยนแปลงซึ่งทำให้โค้ดสามารถใช้ซ้ำได้
  • คำแนะนำสำหรับหน่วยความจำ: ซึ่งเป็นส่วนที่โปรเซสเซอร์อ่านและเขียนข้อมูลจากหน่วยความจำระบบ

อีกประเด็นหนึ่งคือรูปแบบคำสั่งเนื่องจากคำสั่งสามารถนำไปใช้กับข้อมูลสเกลาร์หรือข้อมูลหลายอย่างพร้อมกันซึ่งเรารู้จักกันในชื่อ SIMD เพื่อให้เสร็จสิ้นและขึ้นอยู่กับรูปแบบข้อมูลมี ALU หลายประเภทสำหรับการดำเนินการของคำสั่งเลขคณิตตัวอย่างเช่นเรามีหน่วยจำนวนเต็มและหน่วยทศนิยมเป็นหน่วยที่แตกต่างกันในปัจจุบัน

เมื่อคำสั่งเสร็จสมบูรณ์ผลลัพธ์จะถูกเขียนไปยังที่อยู่หน่วยความจำเฉพาะและจะดำเนินการต่อไป คำแนะนำบางอย่างไม่ได้ปรับแต่งค่าหน่วยความจำ แต่เป็นการลงทะเบียนบางอย่าง ดังนั้นการลงทะเบียนตัวนับโปรแกรมจึงถูกแก้ไขโดยคำแนะนำในการกระโดดหากเราต้องการอ่านหรือเขียนข้อมูลการลงทะเบียน MAR และ MDR จะถูกจัดการ