กลับไปหน้าบทความ

อ่าน 8 นาที

หน่วยควบคุม

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

หน่วยควบคุม

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

ทรัพยากรคอมพิวเตอร์ส่วนใหญ่ได้รับการจัดการโดย CU ซึ่งทำหน้าที่ควบคุมการไหลของข้อมูลระหว่าง CPU และอุปกรณ์อื่นๆจอห์น ฟอน นอยมันน์ ได้รวมหน่วยควบคุมไว้ในสถาปัตยกรรมฟอน นอยมันน์ [ 1 ] ในการออกแบบคอมพิวเตอร์สมัยใหม่ หน่วยควบคุมมักจะเป็นส่วนประกอบภายในของ CPU โดยบทบาทและการทำงานโดยรวมยังคงไม่เปลี่ยนแปลงนับตั้งแต่มีการนำเสนอ[ 2 ]

หน่วยควบคุมมัลติไซเคิล

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

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

หน่วยควบคุมอาจมีตัวนับเลขฐานสองเพื่อบอกตรรกะของหน่วยควบคุมว่าควรดำเนินการขั้นตอนใด

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

คอมพิวเตอร์หลายเครื่องมีเหตุการณ์ที่ไม่คาดคิดอยู่สองประเภทที่แตกต่างกันการขัดจังหวะ (Interrupt)เกิดขึ้นเนื่องจากอินพุตหรือเอาต์พุตบางประเภทต้องการการประมวลผลจากซอฟต์แวร์เพื่อให้ทำงานได้อย่างถูกต้องส่วนข้อยกเว้น (Exception ) เกิดจากการทำงานของคอมพิวเตอร์เอง ความแตกต่างที่สำคัญอย่างหนึ่งคือ ไม่สามารถคาดการณ์เวลาของการขัดจังหวะได้ และอีกประการหนึ่งคือ ข้อยกเว้นบางอย่าง (เช่น ข้อยกเว้นหน่วยความจำไม่พร้อมใช้งาน) อาจเกิดจากคำสั่งที่ต้องเริ่มต้นใหม่

Control units can be designed to handle interrupts in one of two typical ways. If a quick response is most important, a control unit is designed to abandon work to handle the interrupt. In this case, the work in process will be restarted after the last completed instruction. If the computer is to be very inexpensive, very simple, very reliable, or to get more work done, the control unit will finish the work in process before handling the interrupt. Finishing the work is inexpensive, because it needs no register to record the last finished instruction. It is simple and reliable because it has the fewest states. It also wastes the least amount of work.

Exceptions can be made to operate like interrupts in very simple computers. If virtual memory is required, then a memory-not-available exception must retry the failing instruction.

It is common for multicycle computers to use more cycles. Sometimes it takes longer to take a conditional jump, because the program counter has to be reloaded. Sometimes they do multiplication or division instructions by a process, something like binary long multiplication and division. Very small computers might do arithmetic, one or a few bits at a time. Some other computers have very complex instructions that take many steps.

Pipelined control units

Many medium-complexity computers pipeline instructions. This design is popular because of its economy and speed.

In a pipelined computer, instructions flow through the computer. This design has several stages. For example, it might have one stage for each step of the Von Neumann cycle. A pipelined computer usually has "pipeline registers" after each stage. These store the bits calculated by a stage so that the logic gates of the next stage can use the bits to do the next step.

It is common for even numbered stages to operate on one edge of the square-wave clock, while odd-numbered stages operate on the other edge. This speeds the computer by a factor of two compared to single-edge designs.

In a pipelined computer, the control unit arranges for the flow to start, continue, and stop as a program commands. The instruction data is usually passed in pipeline registers from one stage to the next, with a somewhat separated piece of control logic for each stage. The control unit also assures that the instruction in each stage does not harm the operation of instructions in other stages. For example, if two stages must use the same piece of data, the control logic assures that the uses are done in the correct sequence.

เมื่อทำงานอย่างมีประสิทธิภาพ คอมพิวเตอร์แบบไปป์ไลน์จะมีคำสั่งอยู่ในแต่ละขั้นตอน จากนั้นจะประมวลผลคำสั่งเหล่านั้นทั้งหมดพร้อมกัน โดยสามารถประมวลผลคำสั่งได้ประมาณหนึ่งคำสั่งต่อรอบการทำงานของนาฬิกา เมื่อโปรแกรมตัดสินใจและเปลี่ยนไปใช้ลำดับคำสั่งอื่น บางครั้งไปป์ไลน์จะต้องทิ้งข้อมูลที่กำลังประมวลผลอยู่และเริ่มต้นใหม่ ซึ่งเรียกว่า "การหยุดชะงัก" (stall) เมื่อคำสั่งสองคำสั่งอาจรบกวนกัน บางครั้งหน่วยควบคุมจะต้องหยุดประมวลผลคำสั่งที่อยู่ถัดไปจนกว่าคำสั่งก่อนหน้าจะเสร็จสมบูรณ์ ซึ่งเรียกว่า "ฟองอากาศในไปป์ไลน์" (pipeline bubble) เนื่องจากส่วนหนึ่งของไปป์ไลน์ไม่ได้ประมวลผลคำสั่ง ฟองอากาศในไปป์ไลน์อาจเกิดขึ้นเมื่อคำสั่งสองคำสั่งทำงานกับรีจิสเตอร์เดียวกัน

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

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

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

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

การป้องกันปัญหาเครื่องยนต์ดับ

หน่วยควบคุมใช้วิธีการมากมายเพื่อรักษาไปป์ไลน์ให้เต็มและหลีกเลี่ยงการหยุดชะงัก ตัวอย่างเช่น แม้แต่หน่วยควบคุมที่เรียบง่ายก็สามารถสันนิษฐานได้ว่าการแตกสาขาย้อนกลับไปยังคำสั่งก่อนหน้าที่มีหมายเลขต่ำกว่านั้นเป็นลูปและจะถูกทำซ้ำ[ 3 ]ดังนั้น หน่วยควบคุมที่มีการออกแบบนี้จะเติมไปป์ไลน์ด้วยเส้นทางการแตกสาขาย้อนกลับเสมอ หากคอมไพเลอร์สามารถตรวจจับทิศทางการแตกสาขาที่ใช้บ่อยที่สุดได้ คอมไพเลอร์ก็สามารถสร้างคำสั่งเพื่อให้การแตกสาขาที่ใช้บ่อยที่สุดเป็นทิศทางการแตกสาขาที่ต้องการได้ ในทำนองเดียวกัน หน่วยควบคุมอาจได้รับคำแนะนำจากคอมไพเลอร์: คอมพิวเตอร์บางเครื่องมีคำสั่งที่สามารถเข้ารหัสคำแนะนำจากคอมไพเลอร์เกี่ยวกับทิศทางการแตกสาขาได้[ 4 ]

หน่วยควบคุมบางหน่วยทำการคาดการณ์การแตกแขนง : หน่วยควบคุมจะเก็บรายการอิเล็กทรอนิกส์ของการแตกแขนงล่าสุดไว้ โดยเข้ารหัสด้วยที่อยู่ของคำสั่งการแตกแขนง[ 3 ]รายการนี้มีบิตไม่กี่บิตสำหรับการแตกแขนงแต่ละครั้งเพื่อจดจำทิศทางที่ดำเนินการล่าสุด

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

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

เพื่อช่วยในเรื่องนี้ จึงได้มีการพัฒนาหน่วยประมวลผลกลางและหน่วยควบคุมที่ทำงานนอกลำดับ เพื่อประมวลผลข้อมูลเมื่อข้อมูลพร้อมใช้งาน (ดูหัวข้อถัดไป)

แต่ถ้าการคำนวณทั้งหมดเสร็จสมบูรณ์แล้ว แต่ซีพียูยังคงค้างอยู่และรอหน่วยความจำหลักล่ะ? ในกรณีนั้น หน่วยควบคุมสามารถสลับไปยังเธรดการทำงานอื่นที่มีข้อมูลที่ดึงมาแล้วในขณะที่เธรดนั้นว่างอยู่ เธรดจะมีตัวนับโปรแกรมของตัวเอง ชุดคำสั่ง และชุดรีจิสเตอร์แยกต่างหาก นักออกแบบจะกำหนดจำนวนเธรดแตกต่างกันไปตามเทคโนโลยีหน่วยความจำในปัจจุบันและประเภทของคอมพิวเตอร์ คอมพิวเตอร์ทั่วไป เช่น พีซีและสมาร์ทโฟน มักจะมีหน่วยควบคุมที่มีเธรดเพียงไม่กี่เธรด เพียงพอที่จะทำงานได้อย่างต่อเนื่องด้วยระบบหน่วยความจำราคาประหยัด คอมพิวเตอร์ฐานข้อมูลมักจะมีจำนวนเธรดมากกว่าประมาณสองเท่า เพื่อให้หน่วยความจำขนาดใหญ่กว่าทำงานได้อย่างต่อเนื่อง หน่วยประมวลผลกราฟิก (GPU) มักจะมีเธรดหลายร้อยหรือหลายพันเธรด เนื่องจากมีหน่วยประมวลผลหลายร้อยหรือหลายพันหน่วยที่ทำการคำนวณกราฟิกซ้ำๆ

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

หน่วยควบคุมที่ชำรุด

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

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

เป็นเรื่องปกติที่จะมีหน่วยประมวลผลเฉพาะทาง ตัวอย่างเช่น คอมพิวเตอร์ราคาประหยัดอาจมีหน่วยประมวลผลเลขทศนิยมเพียงหน่วยเดียว เนื่องจากหน่วยประมวลผลเลขทศนิยมมีราคาแพง ในขณะเดียวกัน คอมพิวเตอร์เครื่องเดียวกันอาจมีหน่วยประมวลผลเลขจำนวนเต็มหลายหน่วย เนื่องจากมีราคาไม่แพงนัก และสามารถประมวลผลคำสั่งส่วนใหญ่ได้

หน่วยควบคุมการออกคำสั่งแบบหนึ่งใช้อาร์เรย์ของตรรกะอิเล็กทรอนิกส์ ซึ่งเป็น "กระดานคะแนน" [ 5 ]ที่ตรวจจับว่าเมื่อใดจึงจะสามารถออกคำสั่งได้ "ความสูง" ของอาร์เรย์คือจำนวนหน่วยประมวลผล และ "ความยาว" และ "ความกว้าง" แต่ละอย่างคือจำนวนแหล่งที่มาของตัวถูกดำเนินการ เมื่อรายการทั้งหมดมารวมกัน สัญญาณจากตัวถูกดำเนินการและหน่วยประมวลผลจะตัดกัน ตรรกะที่จุดตัดนี้จะตรวจจับว่าคำสั่งสามารถทำงานได้ ดังนั้นคำสั่งจึง "ออก" ไปยังหน่วยประมวลผลที่ว่างอยู่ รูปแบบอื่นของหน่วยควบคุมการออกคำสั่งใช้ ขั้น ตอนวิธี Tomasuloซึ่งจัดลำดับคิวคำสั่งฮาร์ดแวร์ใหม่ ในแง่หนึ่ง ทั้งสองรูปแบบใช้คิว กระดานคะแนนเป็นอีกวิธีหนึ่งในการเข้ารหัสและจัดลำดับคิวคำสั่งใหม่ และนักออกแบบบางคนเรียกมันว่าตารางคิว[ 6 ] [ 7 ]

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

หากการดำเนินการช้ากว่าการเขียนผลลัพธ์ คิวการเขียนกลับหน่วยความจำจะมีรายการว่างเสมอ แต่ถ้าการเขียนหน่วยความจำช้าล่ะ? หรือถ้าหากรีจิสเตอร์ปลายทางจะถูกใช้โดยคำสั่ง "ก่อนหน้า" ที่ยังไม่ได้ออกล่ะ? ในกรณีนั้น ขั้นตอนการเขียนกลับของคำสั่งอาจจำเป็นต้องถูกกำหนดเวลา ซึ่งบางครั้งเรียกว่า "การเลิกใช้" คำสั่ง ในกรณีนี้ จะต้องมีตรรกะการกำหนดเวลาอยู่ที่ส่วนท้ายของหน่วยประมวลผล โดยจะกำหนดเวลาการเข้าถึงรีจิสเตอร์หรือหน่วยความจำที่จะได้รับผลลัพธ์[ 6 ] [ 7 ]

ตรรกะการเกษียณอายุยังสามารถออกแบบลงในสกอร์บอร์ดที่ออกหรือคิว Tomasulo ได้ โดยการรวมการเข้าถึงหน่วยความจำหรือรีจิสเตอร์ไว้ในตรรกะการออก[ 6 ] [ 7 ]

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

นอกจากนี้ CPU ที่ทำงานไม่เรียงลำดับยังมีปัญหาการหยุดชะงักจากการแตกแขนงมากขึ้น เนื่องจากสามารถดำเนินการคำสั่งหลายคำสั่งต่อรอบสัญญาณนาฬิกาได้ และโดยปกติจะมีคำสั่งจำนวนมากอยู่ในขั้นตอนต่างๆ ของการดำเนินการ ดังนั้น หน่วยควบคุมเหล่านี้อาจใช้โซลูชันทั้งหมดที่ใช้โดยโปรเซสเซอร์แบบไปป์ไลน์[ 8 ]

หน่วยควบคุมการแปล

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

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

หน่วยควบคุมสำหรับคอมพิวเตอร์กำลังต่ำ

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

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

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

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

วิธีการเหล่านี้ค่อนข้างง่ายต่อการออกแบบ และกลายเป็นเรื่องธรรมดาจนมีการคิดค้นวิธีการอื่นๆ ขึ้นมาเพื่อประโยชน์ทางการค้า CPU CMOS พลังงานต่ำสมัยใหม่จำนวนมากจะหยุดและเริ่มหน่วยประมวลผลเฉพาะและอินเทอร์เฟซบัสตามคำสั่งที่ต้องการ คอมพิวเตอร์บางเครื่อง[ 9 ]ยังจัดเรียงสถาปัตยกรรมไมโครของ CPU เพื่อใช้มัลติเพล็กเซอร์ที่กระตุ้นการถ่ายโอนเพื่อให้แต่ละคำสั่งใช้เฉพาะส่วนของตรรกะที่จำเป็นเท่านั้น

วิธีการทั่วไปอย่างหนึ่งคือการกระจายภาระไปยัง CPU หลายตัว และปิด CPU ที่ไม่ได้ใช้งานเมื่อภาระลดลง ตรรกะการสลับงานของระบบปฏิบัติการจะบันทึกข้อมูลของ CPU ลงในหน่วยความจำ ในบางกรณี[ 10 ] CPU ตัวหนึ่งอาจเรียบง่ายและเล็กกว่า โดยมีเกตตรรกะน้อยกว่า ดังนั้นจึงมีการรั่วไหลต่ำ และเป็นตัวสุดท้ายที่จะถูกปิด และเป็นตัวแรกที่จะถูกเปิด นอกจากนี้ยังเป็น CPU เพียงตัวเดียวที่ต้องการคุณสมบัติการใช้พลังงานต่ำเป็นพิเศษ วิธีการที่คล้ายกันนี้ใช้ในพีซีส่วนใหญ่ ซึ่งมักจะมี CPU ฝังตัวเสริมที่จัดการระบบพลังงาน อย่างไรก็ตาม ในพีซี ซอฟต์แวร์มักจะอยู่ใน BIOS ไม่ใช่ระบบปฏิบัติการ

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

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

การจัดการการรั่วไหลของข้อมูลทำได้ยากกว่า เนื่องจากก่อนที่จะปิดระบบตรรกะได้ ข้อมูลในระบบจะต้องถูกย้ายไปยังที่เก็บข้อมูลที่มีการรั่วไหลต่ำเสียก่อน

ซีพียูบางตัว[ 11 ]ใช้ฟลิปฟลอปชนิดพิเศษ (เพื่อเก็บบิต) ที่เชื่อมต่อเซลล์เก็บข้อมูลความเร็วสูงที่มีการรั่วไหลสูงเข้ากับเซลล์เก็บข้อมูลความเร็วต่ำขนาดใหญ่ (ราคาแพง) ที่ช้ากว่า เซลล์ทั้งสองนี้มีแหล่งจ่ายไฟแยกกัน เมื่อซีพียูเข้าสู่โหมดประหยัดพลังงาน (เช่น เนื่องจากการหยุดทำงานที่รอการขัดจังหวะ) ข้อมูลจะถูกถ่ายโอนไปยังเซลล์ที่มีการรั่วไหลต่ำ และเซลล์อื่นๆ จะถูกปิด เมื่อซีพียูออกจากโหมดการรั่วไหลต่ำ (เช่น เนื่องจากการขัดจังหวะ) กระบวนการจะกลับกัน

ระบบรุ่นเก่าจะคัดลอกสถานะของ CPU ไปยังหน่วยความจำ หรือแม้แต่ดิสก์ บางครั้งอาจใช้ซอฟต์แวร์เฉพาะทาง ส่วนระบบฝังตัวที่เรียบง่ายมาก ๆ บางครั้งก็แค่รีสตาร์ทเครื่อง

การบูรณาการกับคอมพิวเตอร์

ซีพียูสมัยใหม่ทุกตัวมีวงจรควบคุมเพื่อเชื่อมต่อซีพียูกับส่วนอื่นๆ ของคอมพิวเตอร์ ในคอมพิวเตอร์สมัยใหม่ วงจรนี้มักจะเป็นตัวควบคุมบัส เมื่อคำสั่งอ่านหรือเขียนข้อมูลลงในหน่วยความจำ หน่วยควบคุมจะควบคุมบัสโดยตรง หรือควบคุมตัวควบคุมบัส คอมพิวเตอร์สมัยใหม่หลายเครื่องใช้บัสอินเทอร์เฟซเดียวกันสำหรับหน่วยความจำ อินพุต และเอาต์พุต ซึ่งเรียกว่า "I/O แบบแมปหน่วยความจำ" สำหรับโปรแกรมเมอร์ รีจิสเตอร์ของอุปกรณ์ I/O จะปรากฏเป็นตัวเลขที่แอดเดรสหน่วยความจำเฉพาะ คอมพิวเตอร์พีซี x86ใช้ระบบเก่ากว่า คือบัส I/O แยกต่างหากที่เข้าถึงได้ด้วยคำสั่ง I/O

ซีพียูสมัยใหม่มักจะมี ตัวควบคุม การขัดจังหวะ (interrupt controller) รวมอยู่ด้วย ทำหน้าที่จัดการสัญญาณขัดจังหวะจากบัสระบบ หน่วยควบคุม (control unit) คือส่วนของคอมพิวเตอร์ที่ตอบสนองต่อสัญญาณขัดจังหวะเหล่านั้น

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

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

โมเดล PDP-8ส่วนใหญ่มีบัสข้อมูลที่ออกแบบมาเพื่อให้อุปกรณ์ I/O สามารถยืมตรรกะการอ่านและเขียนหน่วยความจำของหน่วยควบคุมได้[ 12 ]ซึ่งช่วยลดความซับซ้อนและค่าใช้จ่ายของตัวควบคุม I/O ความเร็วสูง เช่น สำหรับดิสก์

Xerox Altoมีหน่วยควบคุมไมโครโปรแกรมแบบมัลติทาสก์ที่ทำหน้าที่ I/O เกือบทั้งหมด[ 13 ]การออกแบบนี้ให้คุณสมบัติส่วนใหญ่ของพีซีสมัยใหม่โดยใช้ตรรกะอิเล็กทรอนิกส์เพียงเล็กน้อย คอมพิวเตอร์แบบสองเธรดทำงานโดยไมโครเธรดที่มีลำดับความสำคัญต่ำที่สุดสองเธรด ซึ่งจะทำการคำนวณเมื่อใดก็ตามที่ไม่ต้องการ I/O ไมโครเธรดที่มีลำดับความสำคัญสูงจะให้บริการ (ตามลำดับความสำคัญที่ลดลง) วิดีโอ เครือข่าย ดิสก์ ตัวจับเวลาแบบเป็นคาบ เมาส์ และคีย์บอร์ด ไมโครโปรแกรมจะทำตรรกะที่ซับซ้อนของอุปกรณ์ I/O รวมถึงตรรกะในการรวมอุปกรณ์เข้ากับคอมพิวเตอร์ สำหรับฮาร์ดแวร์ I/O จริง ไมโครโปรแกรมจะอ่านและเขียนรีจิสเตอร์แบบเลื่อนสำหรับ I/O ส่วนใหญ่ บางครั้งใช้เครือข่ายตัวต้านทานและทรานซิสเตอร์เพื่อเลื่อนระดับแรงดันเอาต์พุต (เช่น สำหรับวิดีโอ) เพื่อจัดการกับเหตุการณ์ภายนอก ไมโครคอนโทรลเลอร์มีไมโครอินเตอร์รัปต์เพื่อสลับเธรดเมื่อสิ้นสุดรอบของเธรด เช่น เมื่อสิ้นสุดคำสั่ง หรือหลังจากเข้าถึงรีจิสเตอร์แบบเลื่อน ไมโครโปรแกรมสามารถเขียนใหม่และติดตั้งใหม่ได้ ซึ่งมีประโยชน์มากสำหรับคอมพิวเตอร์ที่ใช้ในการวิจัย

หน้าที่ของหน่วยควบคุม

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

หน่วยควบคุมแบบต่อสาย

ภาพเคลื่อนไหวแสดงเมทริกซ์ควบคุมของหน่วยควบคุมแบบต่อสายอย่างง่ายที่ดำเนินการตามคำสั่ง LDA

หน่วยควบคุมแบบฮาร์ดแวร์ถูกนำไปใช้โดยใช้ หน่วย ตรรกะเชิงผสมซึ่งมีเกตจำนวนจำกัดที่สามารถสร้างผลลัพธ์เฉพาะตามคำสั่งที่ใช้ในการเรียกใช้การตอบสนองเหล่านั้น โดยทั่วไปแล้วหน่วยควบคุมแบบฮาร์ดแวร์จะเร็วกว่าการออกแบบแบบไมโครโปรแกรม[ 14 ]

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

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

วิธีการแบบฮาร์ดแวร์ได้รับความนิยมน้อยลงเนื่องจากคอมพิวเตอร์มีการพัฒนาขึ้น ก่อนหน้านี้ หน่วยควบคุมสำหรับ CPU ใช้ตรรกะเฉพาะกิจ และการออกแบบทำได้ยาก[ 15 ]

หน่วยควบคุมไมโครโปรแกรม

แนวคิดเรื่องไมโครโปรแกรมมิ่งได้รับการแนะนำโดยMaurice Wilkesในปี 1951 ในฐานะระดับกลางในการดำเนินการ คำสั่ง โปรแกรมคอมพิวเตอร์ไมโครโปรแกรมถูกจัดเรียงเป็นลำดับของไมโครคำสั่งและจัดเก็บไว้ในหน่วยความจำควบคุมพิเศษ อัลกอริทึมสำหรับหน่วยควบคุมไมโครโปรแกรม ซึ่งแตกต่างจากหน่วยควบคุมแบบฮาร์ดแวร์ มักจะระบุโดยคำอธิบายผังงาน[ 16 ]ข้อได้เปรียบหลักของหน่วยควบคุมไมโครโปรแกรมมิ่งคือโครงสร้างที่เรียบง่าย เอาต์พุตจากตัวควบคุมเป็นไมโครคำสั่ง ไมโครโปรแกรมสามารถดีบักและแทนที่ได้เช่นเดียวกับซอฟต์แวร์[ 17 ]

วิธีการออกแบบแบบผสมผสาน

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

ดูเพิ่มเติม

  • Alexander Barkalov, Larysa Titarenko, การตีความแบบเดินสายของอัลกอริทึมการควบคุม
  • หน่วยควบคุมไมโครโปรแกรม
  • หน่วยควบคุมหลายรอบ
ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=Control_unit&oldid=1340094200#Hardwired_control_unit "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ หน่วยควบคุม

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

หน่วยควบคุมมัลติไซเคิล

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

Pipelined control units

Many medium-complexity computers pipeline instructions . This design is popular because of its economy and speed.

การป้องกันปัญหาเครื่องยนต์ดับ

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