หน่วยประมวลผล 'รู้' ว่าคำสั่งต่างกันอย่างไร
ฉันกำลังคิดถึงคำสั่งระดับชุดประกอบเช่น MOV, PUSH, CALL และอื่น ๆ ...
หน่วยประมวลผล 'รู้' ว่าคำสั่งต่างกันอย่างไร
ฉันกำลังคิดถึงคำสั่งระดับชุดประกอบเช่น MOV, PUSH, CALL และอื่น ๆ ...
คำตอบ:
เมื่อคอมพิวเตอร์ตีความคำแนะนำในระดับแอสเซมบลีคำแนะนำเหล่านี้จะกลายเป็นสิ่งที่เทียบเท่าเพื่อให้ซีพียูอ่าน เมื่อซีพียูประมวลผลคำสั่งมันจะตีความส่วน opcode ของคำสั่งเป็น "microprograms" แต่ละรายการซึ่งมีไมโครโค้ดเทียบเท่า เพื่อให้คุณรู้ว่าคำสั่งการชุมนุมเต็มประกอบด้วย opcode และข้อมูลที่เกี่ยวข้องใด ๆ ที่จะไปพร้อมกับมันถ้าจำเป็น (เช่นชื่อลงทะเบียนที่อยู่หน่วยความจำ)
คำแนะนำไมโครโค้ดนั้นมีระดับต่ำมาก (มากขึ้นดังนั้นเมื่อประกอบแล้ว) และควบคุมสัญญาณดิจิตอลที่เกิดขึ้นจริงซึ่งควบคุมการไหลของตรรกะในไมโครโปรเซสเซอร์ ตัวอย่างเช่นคำสั่งไมโครโค้ดหนึ่งคำสั่งสามารถอัพเดตการตั้งค่าสถานะการลงทะเบียนรหัสเงื่อนไขด้วยค่าใหม่หรือเชื่อมต่อการลงทะเบียน CPU กับหนึ่งในหน่วยALU งานที่ซับซ้อนมากขึ้นเป็นไปได้ แต่นี่แสดงให้คุณเห็นความคิดทั่วไปของสิ่งที่เฟิร์มแวจะใช้สำหรับการ
โฟลว์ทั่วไปจากการคอมไพล์ไปยังการดำเนินการมีดังนี้ คำแนะนำในการประกอบมีการประกอบ (กลายเป็น 0s และ 1s เทียบเท่าไบนารีของพวกเขาหรือจากนี้ไปสัญญาณตรรกะ) สัญญาณลอจิกเหล่านี้ตีความกลับโดยซีพียูและเปลี่ยนเป็นสัญญาณลอจิกระดับต่ำมากขึ้นซึ่งกำหนดทิศทางการไหลของ CPU เพื่อดำเนินการคำสั่งเฉพาะ การดำเนินการนี้อาจใช้เวลาหนึ่งรอบนาฬิกาขึ้นอยู่กับสถาปัตยกรรมและการออกแบบของโปรเซสเซอร์ (คู่มืออ้างอิงโปรเซสเซอร์ส่วนใหญ่จะบอกคุณว่าวงรอบนาฬิกาใช้เวลานานเท่าใดในการดำเนินการคำสั่งเฉพาะเช่นตัวอย่างนี้ )
ทั้งหมดนี้จะทำกับเฟิร์มแวยากโปรแกรม (ฝังร่างกายภายในหน่วยประมวลผลในลักษณะของบางรอมตั้งในระหว่างการผลิต) ซึ่งจะค่อย ๆ ไหลผ่านในระดับต่ำที่เกิดขึ้นจริงตรรกศาสตร์ประตู นี่เป็นส่วนต่อประสานระหว่างคำแนะนำในการประกอบแบบนามธรรมกับตรรกะทางไฟฟ้าทางกายภาพในโปรเซสเซอร์
ดังนั้นโดยสรุปแล้วคำแนะนำของโปรเซสเซอร์จะประกอบและโหลดโดยตัวประมวลผล โปรเซสเซอร์จะใช้คำแนะนำเหล่านี้เพื่อค้นหาไมโครโปรแกรม (ในรูปแบบไมโครโค้ด) ที่สอดคล้องกับคำสั่งเฉพาะนั้นซึ่งเป็นสิ่งที่ "จริง" ดำเนินการคำสั่ง เมื่อไมโครโค้ดสำหรับคำสั่งเฉพาะได้รับการดำเนินการ (ซึ่งอาจใช้เวลาหนึ่งรอบนาฬิกา) ตัวประมวลผลจะเรียกใช้ไมโครโค้ดเพื่อดึงคำสั่งถัดไปจากนั้นวงจรจะวนซ้ำ
โปรเซสเซอร์ไม่ได้รู้ว่าคำสั่งนั้นคืออะไร คำสั่งเป็นเพียงรูปแบบไบนารีที่ทำให้ตัวประมวลผลทำในสิ่งที่เราตีความคำสั่งให้มีความหมาย
ตัวอย่างเช่นการดำเนินการ ADD-R1-Into-R2 จะทำให้ค่าของการลงทะเบียน 1 และ 2 เข้าถึง ALU (เลขคณิตและหน่วยตรรกะ) ทำให้ ALU ใช้เอาต์พุตของตัวบวกแทนสิ่งอื่น ๆ และทำให้ เอาท์พุทของ ALU เพื่อแทนที่ค่าในรีจิสเตอร์ 2 มีวงจรลอจิกแบบง่าย ๆ เพื่อให้บรรลุสิ่งเหล่านี้ ( มัลติเพล็กเซอร์ , อะแดปเตอร์ , เคาน์เตอร์ , ... ) แม้ว่าตัวประมวลผลจริงจะใช้การเพิ่มประสิทธิภาพที่ซับซ้อนมาก
มันคล้ายกับว่าคุณกำลังถามว่ารถยนต์รู้วิธีชะลอตัวอย่างไรเมื่อคุณกดเบรก รถไม่ทราบว่าแป้นเหยียบเบรกเกิดขึ้นกับการควบคุมทางอ้อมว่ามีการกดแผ่นอิเล็กโทรดกับล้ออย่างไร
ยกตัวอย่างเช่นคำสั่งที่บอกโปรเซสเซอร์ x86 / IA-32 ให้ย้ายค่า 8 บิตทันทีไปยังรีจิสเตอร์ รหัสเลขฐานสองสำหรับคำสั่งนี้คือ 10110 ตามด้วยตัวระบุ 3 บิตสำหรับการลงทะเบียนเพื่อใช้ ตัวระบุสำหรับการลงทะเบียน AL คือ 000 ดังนั้นรหัสเครื่องต่อไปนี้จะโหลดการลงทะเบียน AL ด้วยข้อมูล 01100001
10110000 01100001
รหัสคอมพิวเตอร์ไบนารีนี้สามารถทำให้มนุษย์อ่านได้มากขึ้นโดยแสดงเป็นเลขฐานสิบหกดังนี้
B0 61
ที่นี่ B0 หมายถึง 'ย้ายสำเนาของค่าต่อไปนี้ไปที่ AL' และ 61 คือการแสดงเลขฐานสิบหกของค่า 01100001 ซึ่งเป็น 97 ในรูปทศนิยม ภาษาแอสเซมบลีของ Intel มีตัวช่วยจำ MOV (ตัวย่อของการย้าย) สำหรับคำแนะนำเช่นนี้ดังนั้นรหัสเครื่องด้านบนสามารถเขียนได้ดังต่อไปนี้ในภาษาแอสเซมบลีพร้อมด้วยคำอธิบายอธิบายหากจำเป็น ง่ายต่อการอ่านและจดจำ
http://en.wikipedia.org/wiki/Assembler_language
กล่าวอีกนัยหนึ่งเมื่อคุณ 'รวบรวม' โปรแกรมการประกอบของคุณคำแนะนำของคุณเช่น
MOV AL, 61h
จะถูกแปลงเป็นตัวเลขซึ่ง CPU เชื่อมโยงความหมายพิเศษแล้วดำเนินการตามนั้น
การอ่านที่แนะนำ:
ตรวจสอบบันทึกหลักสูตรจากCS152: สถาปัตยกรรมคอมพิวเตอร์และวิศวกรรมที่ UC Berkeley ซึ่งเป็นหลักสูตรที่นักเรียนใช้งาน CPU
หากคุณ google สำหรับ "ซีพียูที่สร้างขึ้นที่บ้าน" คุณจะได้พบกับสารพัดมากมาย
ในระดับที่ต่ำที่สุดสุดขีด CPU ทั้งหมดสามารถทำได้คือเพิ่ม นอกจากนี้ยังสามารถลบคูณและหาร (ดูได้ว่าสิ่งเหล่านี้เป็นเพียงการเพิ่มในลักษณะที่แตกต่าง) CPU ใช้สิ่งนี้เพื่อย้ายข้อมูลไปรอบ ๆ ในหน่วยความจำโดยใช้ส่วนเพิ่มเติมไปยังที่อยู่หน่วยความจำ
โปรดทราบว่านี่เป็นระดับต่ำสุดที่เป็นไปได้ ในความเป็นจริง CPU จะ "เข้าใจ" คำสั่งบางอย่างในรูปแบบของไมโครโค้ด ดูคำตอบของ Breakthrough มันเขียนได้ดีมาก
ฉันได้รับคำตอบที่เกี่ยวข้องที่ programmers.stackexchange.com ดูคอมพิวเตอร์ทำงานอย่างไร ที่ฉันเดินสั้น ๆ ทุกอย่างจากพื้นดินขึ้นเกี่ยวกับวิธีที่คอมพิวเตอร์ไปเกี่ยวกับการตีความคำแนะนำในการเคลื่อนย้ายอิเล็กตรอน