ที่อยู่โหมดและ Internals ซีพียู
1 ความรู้เบื้องต้น
- ในสัปดาห์นี้เราจะได้หัวใจของเรื่องนี้ว่าวิธีการทำงานของซีพียู
- แต่ก่อนที่เราต้องมองไปที่โหมดการอยู่เป็นไปได้ว่านักออกแบบได้สร้างขึ้นสำหรับตัวถูกดำเนินการของคำสั่งเครื่อง
- โปรดจำไว้ว่าซีพียูที่ถูกออกแบบมาเพื่อให้โปรแกรมเมอร์สามารถเขียนโปรแกรมในนั้นและวันนี้โปรแกรมส่วนใหญ่ที่เขียนในภาษาระดับสูงและแปลงลงไปในรหัสเครื่อง
- หลายโหมดที่อยู่ด้านล่างปกคลุมทำให้งานของโปรแกรมเมอร์ง่ายขึ้นหรือทำให้งานของการแปล abstractions ระดับสูงเช่นอาร์เรย์ชี้โครงสร้างและวัตถุได้ง่ายขึ้น
- แต่มีข้อเสีย: โหมดที่อยู่ที่ซับซ้อนมากขึ้นจำเป็นต้องใช้หน่วยความจำมากขึ้นเข้าถึงจึงทำให้ระยะเวลาการเรียนการสอนของอีกต่อไปและยังทำให้การออกแบบภายในของซีพียูที่ซับซ้อนมากขึ้น
- ปรัชญา RISC คือการหลบหนี แต่ที่ง่ายที่สุดของรูปแบบที่อยู่และเขียนคอมไพเลอร์ที่จะใช้กับโหมดเหล่านี้ง่ายได้อย่างมีประสิทธิภาพ
- ปรัชญา CISC คือการให้รูปแบบที่อยู่ให้มากที่สุดเท่าที่เป็นไปได้ที่จะทำให้การเขียนโปรแกรมได้ง่ายขึ้น
2 โหมดการเรียนการสอนที่อยู่
- โหมดนี้จะใช้ในการแก้ไขค่าในโครงการเคาน์เตอร์
2.1 แอ็บโซลูกระโดด
PC <- มูลค่าที่แท้จริงในการเรียนการสอน
- เช่นการเรียนการสอนต่อไปจะเป็นอย่างใดอย่างหนึ่งตามที่อยู่ที่กำหนดโดยมูลค่าที่แท้จริง
- นี้จะถูกใช้ในการกระโดดคอมพิวเตอร์เพื่อการเรียนการสอนครั้งแรกในการทำงานเช่น
- มูลค่าที่แท้จริงได้รับการปฏิบัติในฐานะที่ไม่ได้ลงชื่อที่ไม่มีหน่วยความจำที่อยู่ในเชิงลบ
- ขนาดของค่าตัวอักษรกำหนดช่วงของที่อยู่ที่เป็นไปได้
2.2 กระโดดสัมพัทธ์ (Branch)
PC <- คอมพิวเตอร์เครื่องเก่า + มูลค่าที่แท้จริงในการเรียนการสอน
- เช่นสาขา
- มูลค่าที่แท้จริงได้รับการปฏิบัติเป็นค่าเซ็นสัญญาเพื่อให้เครื่องคอมพิวเตอร์สามารถกระโดดไปข้างหลังเช่นเดียวกับที่ไปข้างหน้า
- บ่อยครั้งที่การเรียนการสอนสาขารวมถึงการเปรียบเทียบหรือเงื่อนไข, และสาขาที่จะได้รับเท่านั้นหากเปรียบเทียบเป็นความจริงเช่น
BEQ $ t1, t2 $, 100 # พีซี PC + = 100 ถ้า $ t1 == $ t2
- นี้จะใช้เพื่อข้ามรอบส่วนของรหัสใน IF .. แล้ว .. อื่นหรือสาขาไปข้างหลังในลูปสั้น
- โดยทั่วไปส่วนใหญ่ระยะทางสาขามีขนาดเล็กพอสมควรพูดเพียงไม่กี่เมกะไบต์ดังนั้นค่าที่สามารถเข้ารหัสในบิตน้อยกว่าที่อยู่เต็ม หากจำเป็นต้องล่ามโซ่กระโดดญาติสามารถใช้ในการไประยะทางที่ไกลออกไป
2.3 สมาชิกทางอ้อมไป
PC <- Rn
- เช่นเครื่องคอมพิวเตอร์จะกลายเป็นค่าในการลงทะเบียนอีก
- MIPS ISA ใช้นี้เช่นจะกลับมาจากการเรียกใช้ฟังก์ชันโดยการโหลดเครื่องคอมพิวเตอร์ที่มีอยู่กลับ $ ราลงทะเบียน
3 ข้อมูลที่อยู่โหมด
- ในรายละเอียดต่อไปนี้ผมจะใช้สมมุติคําสั่ง ADD 3 ตัวถูกดำเนินการ:
ADD Dest, SRC1, Src2
และใช้โหมดที่อยู่ที่แตกต่างกันสำหรับ Src2 - โปรดทราบว่าฉันกำลังสนใจ SRC1 และ Dest ตัวถูกดำเนินการ เหล่านี้เกินไปสามารถใช้ใด ๆ ของรูปแบบต่อไปนี้ที่อยู่
3.1 ทันทีที่อยู่
ADD Dest, SRC1 ค่าตัวอักษร
- ค่าตัวถูกดำเนินการที่มีการเข้ารหัสในการเรียนการสอนเป็นค่าตัวอักษร
- มันอาจจะถือว่าเป็นลงนามหรือไม่ได้ลงนามขึ้นอยู่กับการเรียนการสอน
- MIPS เช่น: $ t1 addi $ t2, 100
- ค่าตัวอักษรเป็นที่รู้จักกันในสถาปัตยกรรมบางส่วนเป็นค่าทันที
3.2 สมาชิกโหมด
ADD Dest, Src, สมัครสมาชิก
- หมายเลขทะเบียนที่ระบุไว้ในการเรียนการสอนนั้น ค่าตัวถูกดำเนินการมาจากการลงทะเบียน
- MIPS เช่นเพิ่ม $ t1, t2 $, $ t3
3.3 แน่นอนหรือตรงโหมด
ADD Dest, Src ที่อยู่หน่วยความจำ
- การเรียนการสอน encodes อยู่หน่วยความจำ; ค่าตัวถูกดำเนินการที่ถูกโหลดจากที่อยู่ที่
- ทราบว่าส่วนใหญ่อกหัก RISC เพียง แต่ให้หน่วยความจำที่อยู่สำหรับคำแนะนำในการโหลดและการจัดเก็บ
- อกหัก CISC มักจะช่วยให้หน่วยความจำที่อยู่สำหรับคำแนะนำหลาย ๆ
- MIPS เช่น: $ t1 LW, 5000
3.4 สมาชิกโหมดทางอ้อม
ADD Dest, Src (ลงทะเบียน)
- การเรียนการสอน encodes หมายเลขทะเบียน
- ค่าในการลงทะเบียนได้รับการปฏิบัติเป็นที่อยู่; ค่าตัวถูกดำเนินการที่ถูกโหลดจากที่อยู่ที่
- ลงทะเบียนได้อย่างมีประสิทธิภาพเป็นตัวชี้ : แทนการถือครองมูลค่าจุดลงทะเบียนที่สถานที่ในความทรงจำที่มีค่าที่มีอยู่
- MIPS เช่น: $ t1 LW ($ t2)
- ความคิดของตัวชี้ถูกนำมาใช้ในหลายภาษาในการสร้างโครงสร้างข้อมูลแบบไดนามิกเช่นการเชื่อมโยงรายชื่อ
- ใน Java, รายการที่เชื่อมโยงของ ints สามารถสร้างขึ้นด้วย:
IntList คลาสที่สาธารณะ { ส่วนตัว int x; IntList ส่วนตัวต่อไป; }
แม้ว่าต่อตัวแปรเป็นอย่างเคร่งครัดอ้างอิงไม่ชี้: Java หยุดคุณจากการได้เห็นอยู่ - ใน C เราสามารถทำได้:
struct IntList { int x; struct IntList * ต่อไป; }
และต่อไปเป็นตัวชี้ตัวแปรซึ่งถืออยู่และที่จะมองเห็นได้โดยตรงกับโปรแกรมเมอร์
3.5 การจัดทำดัชนีโหมดแอ็บโซลู
ADD Dest, Src ฐาน (ลงทะเบียน)
- การเรียนการสอน encodes มูลค่าที่แท้จริงฐานและหมายเลขทะเบียน
- มูลค่าที่แท้จริงที่มีค่าลงทะเบียนที่เพิ่มได้รับการปฏิบัติเป็นที่อยู่; ค่าตัวถูกดำเนินการที่ถูกโหลดจากที่อยู่ที่
- ลงทะเบียนเป็นที่รู้จักกันในฐานะที่เป็นดัชนีลงทะเบียน
- MIPS เช่น: $ t1 LW 300 ($ t2)
- นี้จะช่วยให้การดำเนินงานในระดับต่ำของอาร์เรย์
- สมมติว่าอาร์เรย์ของ 25 ตัวอักษร, ชื่อ []จะถูกเก็บไว้เริ่มต้นที่อยู่หน่วยความจำ 50 เป็นต้นไป
- ตัวละคร[0] ชื่อจะถูกเก็บไว้ในสถานที่ 50, ชื่อ [1] ที่ 51, ชื่อ [2]ที่ 52 เป็นต้น
- โปรแกรมสามารถลงทะเบียนกับวงRnไปจาก 0 ถึง 24
- ถูกดำเนินการ 50 (Rn) จะเข้าถึงแต่ละตัวละครในอาร์เรย์จากตำแหน่ง 0 ถึง 24
- ทราบว่าสำหรับอาร์เรย์ที่มีขนาดที่แตกต่างกันเช่น ints 32 บิตดัชนีลงทะเบียนจะต้องมีการเพิ่มขึ้นตามขนาดไบต์ขององค์ประกอบ (เช่น 4) ในแต่ละครั้งที่ผ่านห่วง
- โหมดนี้มีประโยชน์เมื่ออาเรย์ได้รับการแก้ไขในหน่วยความจำ: ยกตัวอย่างเช่นมันเป็นอาเรย์ระดับโลกกำหนดไว้ที่รวบรวมเวลา
- ส่วนที่เหลือของโหมดที่อยู่ด้านล่างจะเห็นส่วนใหญ่ในสถาปัตยกรรม CISC
3.6 ฐานบวก Offset โหมด
ADD Dest, Src, BaseRegister (offset)
- เวลานี้ชดเชยจะคงที่ตัวอักษรและฐานของโครงสร้างข้อมูลที่จะได้รับจากการลงทะเบียน
- โหมดนี้จะเป็นประโยชน์ในการเข้าถึงเฉพาะสาขาของโครงสร้างหรือวัตถุ
- พิจารณาโครงสร้างที่แตกต่างกันขนาดสนามเช่น C struct:
นักศึกษา struct { int id; # 32 บิตค่า สั้นอายุ # ค่า 16 บิต ถ่านเพศ # ค่า 8 บิต }
- idฟิลด์ที่ออฟเซต 0 ใน struct, อายุ เขตที่ชดเชย 4 และเพศภาคสนามที่ 6 ชดเชย
- ลองนึกภาพคุณมีนักศึกษา struct ตัวแปรs1และคุณต้องการที่จะกำหนดอายุใน struct ที่ 23:
s1.age = 23;
- หากลงทะเบียนR5 (เล่นบทบาทของs1 ) จุดที่ฐานของ struct แล้วต่อไปนี้จะทำงาน:
StoreHalfword R5 (4), 23
ในขณะที่เรารู้ว่าอายุสนามคือ 4 ไบต์จากที่อยู่ที่ R5ชี้ไปที่
3.7 ฐานบวกโหมดดัชนี
ADD Dest, Src, BaseRegister (IndexRegister)
- แทนการเข้ารหัสฐานเป็นค่าตัวอักษรคงที่ค่าฐานมาจากการลงทะเบียน ค่าของทั้งสองลงทะเบียนจะมาร่วมกันในรูปแบบที่อยู่ของมูลค่าในการเข้าถึง
- ฐานลงทะเบียนได้อย่างมีประสิทธิภาพเป็นตัวชี้ไปยังโครงสร้างข้อมูลบางอย่างเช่นอาร์เรย์และตัวชี้ดัชนีเป็นดัชนีลงในอาร์เรย์ที่
- นี้จะเป็นประโยชน์เมื่อสถานที่โครงสร้างข้อมูลจะไม่ได้กำหนดไว้ที่รวบรวมเวลา แต่จะถูกสร้างขึ้นที่ใช้เวลาโดยโปรแกรมนี้
- โครงสร้างอาจจะมีตัวแปรท้องถิ่นที่สร้างขึ้นเมื่อฟังก์ชั่นเริ่มต้น
- โครงสร้างอาจจะมีการจัดสรรแบบไดนามิกเช่นกับซีmalloc () หรือ Java ของใหม่ประกอบ
- โครงสร้างอาจจะมีตัวแปรท้องถิ่นที่สร้างขึ้นเมื่อฟังก์ชั่นเริ่มต้น
- สมมติว่าจุดฐานลงทะเบียนที่ฐานของโครงสร้างที่โหมดนี้สามารถเข้าถึงฟิลด์หรือองค์ประกอบในโครงสร้าง
3.8 โหมดฐานบวกดัชนีบวก Offset
ADD Dest, Src, BaseRegister (IndexRegister) ชดเชย
- การเรียนการสอน encodes สองลงทะเบียนและค่าที่แท้จริงซึ่งเป็นชดเชย
- ค่านิยมของทั้งสามจะมาร่วมกันในรูปแบบของค่าที่อยู่ในการเข้าถึง
- โหมดนี้จะเป็นประโยชน์เมื่อมีอาร์เรย์ของ structs / วัตถุและคุณต้องการที่จะเข้าถึงข้อมูลที่เฉพาะเจาะจงภายในหนึ่งของวัตถุเช่น
studentlist [57] .age = 23;
- ลงทะเบียนฐานจะชี้ที่ฐานของอาร์เรย์ดัชนีจะถือ 57 * sizeof (นักศึกษา) และจะได้รับการชดเชยชดเชยของยุคข้อมูลจากฐานของแต่ละ struct / object
3.9 สมัครสมาชิกก่อนเพิ่ม / โหมดก่อนลดลง
ADD Dest, Src, สมัครสมาชิกหรือ -Register
- ค่าในการลงทะเบียนล่วงหน้าเพิ่มขึ้นหรือก่อน decremented ก่อนที่จะใช้
- โหมดนี้มักจะปรากฏในการรวมกับโหมดอื่น ๆ ที่อยู่ด้านบน
- ใช้ในปี 1960 และปี 1970 อกหักจำนวนมากการใช้งานใน PDP-11 ซีพียูแรงบันดาลใจผู้ประกอบการก่อนที่เพิ่มขึ้นและการลดลงใน C ซึ่งได้รับการรับรองโดย decendants ของตนเช่น Java คือ++ x ;
3.10 สมัครสมาชิกโพสต์เพิ่ม / โพสต์ลดลงโหมด
ADD Dest, Src, สมัครสมาชิกหรือ Register-
- ค่าในการลงทะเบียนจะเพิ่มขึ้นหรือ decremented หลังจากที่มันถูกนำมาใช้
- โหมดนี้มักจะปรากฏในการรวมกับโหมดอื่น ๆ ที่อยู่ด้านบน
3.11 หน่วยความจำโหมดทางอ้อม
ADD Dest, Src, (ที่อยู่หน่วยความจำ)
- ค่าที่อยู่หน่วยความจำที่ให้ไว้เป็นความจริงและสิ่งนี้จะถูกใช้เป็นตัวชี้ไปยังตำแหน่งหน่วยความจำที่เกิดขึ้นจริง
- ถ้าคุณเคยได้รับที่จะเขียนเป็นจำนวนมากของการเขียนโปรแกรม C คุณจะเห็นสิ่งนี้ในการดำเนินการเป็นตัวชี้ไปยังตัวชี้
- ดังที่แสดงไว้ข้างต้นมีความร้ายเดียวเรียกค่าที่จะได้รับที่อยู่, เรียกค่าตามที่อยู่ที่
- ในบางระบบเช่น PDP-10 มินิคอมพิวเตอร์ขนาดคำ (เช่นขนาดบัสข้อมูล) เป็นมากใหญ่กว่าขนาดของรถบัสที่อยู่เพื่อให้มีบิตพิเศษที่เหลือในแต่ละคำที่ไม่จำเป็นต้องเป็นที่อยู่ได้
- หนึ่งบิตที่ระบุในคำได้รับการรักษาเป็นบิตอ้อม:
- ถ้ามันเป็นที่ตั้งแล้ว CPU จะรักษาค่าที่อยู่อื่นและไปและเรียกค่าตามที่อยู่นี้
- ถ้ามันเป็นที่ตั้งแล้ว CPU จะรักษาค่าที่อยู่อื่นและไปและเรียกค่าตามที่อยู่นี้
- นี่ก็หมายความว่าคุณอาจจะอยู่ในห่วงโซ่: ที่อยู่ใครสามารถชี้ไปที่อีกคนหนึ่งซึ่งจะชี้ไปที่อีกหนึ่ง ฯลฯ
- หนึ่งเล่นตลกคือการตั้งบิตทางอ้อมในคำในหน่วยความจำและใส่ที่อยู่ของคำที่อยู่ในคำของตัวเอง
- การเข้าถึงไปยังสถานที่นี้จะทำให้ซีพียูจะเข้าไปในวงไม่มีที่สิ้นสุดของ indirections
- ในการใช้งานของ PDP-10 ISA บางนี้จะล็อค CPU ขึ้นอย่างหนักและมันจะต้องใช้พลังงานลงไปแก้ไขปัญหา
- การเข้าถึงไปยังสถานที่นี้จะทำให้ซีพียูจะเข้าไปในวงไม่มีที่สิ้นสุดของ indirections
4 ประเด็นการดำเนินการตามโหมดที่อยู่
- ณ จุดนี้คุณอาจจะมีการพูดว่า: ดีนี่คือทั้งหมดที่ดีและดี แต่ทำไมเรียนรู้สิ่งเหล่านี้อยู่ในโหมด?
- เหตุผลแรก: ส่วนใหญ่ของโลกคือ Intel IA-32 และมันก็เป็น CISC และให้ที่ดีมากในโหมดที่อยู่ด้านบน
- ในบางจุดในอาชีพการเขียนโปรแกรมของคุณคุณอาจจะต้องได้รับการลงและสกปรกกับการเขียนโปรแกรมประกอบบางอย่างเพื่อให้รู้เกี่ยวกับโหมดต่างๆเหล่านี้จะเป็นประโยชน์
- แต่เหตุผลหลักคือพวกเขาจะส่งผลกระทบต่อการดำเนินการของ CPU, ซึ่งเป็นสิ่งที่เราจะไปดูต่อไป
- พิจารณา MIPS การเรียนการสอน เพิ่ม $ t1, t2 $, $ t3 .
- หน่วยความจำหนึ่งเรียกนำการเรียนการสอนเป็นซีพียู ทั้งสามหมายเลขทะเบียนจะถูกเข้ารหัสในการเรียนการสอน
- ทั้งสามลงทะเบียนอยู่ในซีพียู CPU เลือก $ t2 และ $ t3 และส่งค่าของพวกเขาที่จะ ALU ที่จะเพิ่ม
- ผลจากซีพียูมาจะถูกเก็บไว้ใน $ t1 ลงทะเบียน เสร็จแล้ว
- หน่วยความจำหนึ่งเรียกนำการเรียนการสอนเป็นซีพียู ทั้งสามหมายเลขทะเบียนจะถูกเข้ารหัสในการเรียนการสอน
- ตอนนี้พิจารณา MIPS การเรียนการสอน LW $ t1, 300 ($ t2) .
- หน่วยความจำหนึ่งเรียกนำการเรียนการสอนเป็นซีพียู ทั้งหมายเลขทะเบียนและค่าที่แท้จริงจะถูกเข้ารหัสในการเรียนการสอน
- เพื่อให้ได้ค่าที่เกิดขึ้นจริงในการโหลดเราในตอนแรกมีการคำนวณที่มีประสิทธิภาพ
- 300 ถูกส่งไปยัง ALU เป็นหนึ่งในตัวถูกดำเนินการและความคุ้มค่าใน $ t2 จะถูกส่งไปเป็นครั้งที่สอง
- ALU จะได้รับคำสั่งให้ดำเนินการเพิ่ม
- ผลจาก ALU คือตอนนี้ที่อยู่ที่มีประสิทธิภาพ แต่ที่มันเก็บไว้? จะต้องมีการจัดเก็บไว้ในชั่วคราว "ถือ" ลงทะเบียนในซีพียู นี้เป็นที่รู้จักกันเป็นบางครั้ง(ที่มีประสิทธิภาพ) ที่อยู่ลงทะเบียน .
- ใช้ที่อยู่ที่ลงทะเบียนที่มีประสิทธิภาพหน่วยความจำที่สองเรียกนำค่าที่เกิดขึ้นจริงในซีพียู
- มันสามารถถูกเก็บไว้ใน $ t1 ลงทะเบียน
- หน่วยความจำหนึ่งเรียกนำการเรียนการสอนเป็นซีพียู ทั้งหมายเลขทะเบียนและค่าที่แท้จริงจะถูกเข้ารหัสในการเรียนการสอน
- ซับซ้อนมากขึ้นโหมดคือการทำงานมากขึ้นมีการกระทำโดย CPU ที่จะใช้มัน
- นอกจากนี้การเรียนการสอนรหัสเครื่องเดียว (เช่นอินเตอร์เฟซที่เห็นโดยโปรแกรมเมอร์) จริงจะต้องมีการดำเนินการภายในเป็นลำดับ ของการดำเนินงานที่จะดำเนินการเรียนการสอนทั้ง
5 วิธีการทำงานของซีพียู
- ขณะนี้เราสามารถมองไปที่อวัยวะภายในของ CPU: วิธีองค์ประกอบทั้งหมดที่ทำงานร่วมกันและวิธีการเรียนการสอนที่เข้ามามีการถอดรหัสและการควบคุม ส่วนประกอบของ CPU
- เพื่อให้ได้มาถึงจุดนี้เราจำเป็นต้องรู้เกี่ยวกับ
- สถาปัตยกรรมทั่วไปของ CPU: ALU ทะเบียนเรียนการสอนลงทะเบียนโปรแกรมเคาน์เตอร์
- วิธีการทำงานที่เชื่อมต่อกับหน่วยความจำที่อยู่ของข้อมูลและบัสควบคุม
- ความคิดของสถาปัตยกรรมชุดคำสั่ง (ISA): สิ่งที่จัดเรียงของคำสั่งที่ซีพียูสามารถทำได้
- วิธี ALU การทำงานและวิธีการที่ชุดของสายการควบคุมการดำเนินงานที่กำหนดในการดำเนินการ
- การใช้ multiplexors เพื่อเลือกอย่างใดอย่างหนึ่งออกมาจากชุดของปัจจัยการผลิต
- โหมดที่อยู่: ความหลากหลายของการลงทะเบียนและการเข้าถึงหน่วยความจำโหมดที่ออกแบบ CPU อาจต้องการที่จะใช้
- สถาปัตยกรรมทั่วไปของ CPU: ALU ทะเบียนเรียนการสอนลงทะเบียนโปรแกรมเคาน์เตอร์
- ทั้งหมดที่กล่าวมาจะมีบทบาทในการทำความเข้าใจวิธีการที่ CPU ทำงานภายใน
- มีสิ่งหนึ่งที่เหลืออยู่ที่จะมองก่อนที่เราจะสามารถครอบคลุมการทำงานของซีพียูคือวงจรลำดับ
6 แผงวงจรต่อเนื่อง
- ALU เป็นตัวอย่างของวงจร combinatorial : เอาท์พุทคือการรวมกันของปัจจัยการผลิตแบบบูลและบางพีชคณิตบูลีนดำเนินการโดยประตูตรรกะเพื่อให้ผลผลิตที่อิงกับปัจจัยการผลิตในปัจจุบัน
- ในทางทฤษฎีการส่งออก ALU ของการเปลี่ยนแปลงได้ทันทีเมื่อคนใดคนหนึ่งของการเปลี่ยนแปลงปัจจัยการผลิตของตน ในความเป็นจริงการส่งออกที่มีความล่าช้าเนื่องจากเวลาปฏิกิริยาของประตูและความยาวของการเชื่อมต่อระหว่างพวกเขา
- วงจร Combinatorial เป็นไร้สัญชาติ : ผลผลิตของพวกเขาขึ้นอยู่กับปัจจัยการผลิตของพวกเขาและไม่ได้ของรัฐก่อนหน้านี้ของวงจร
- วงจรเรียงตามลำดับในขณะที่ทำรักษารัฐ ผลผลิตของพวกเขาเป็นหน้าที่ของรัฐในปัจจุบันหรือก่อนหน้าของพวกเขาและปัจจัยการผลิตของพวกเขา
- พิจารณาการลงทะเบียนเพียงครั้งเดียว อย่างต่อเนื่องออกค่าของมันและยังได้รับปัจจัยการผลิตเพื่อที่จะสามารถได้รับการปรับปรุง
- เราไม่ต้องการลงทะเบียนเพื่อเปลี่ยนค่าในแต่ละและทุกครั้งที่มีการเปลี่ยนแปลงการป้อนข้อมูล: ทั้งหมดมันก็จะทำคือการสะท้อนสัญญาณตรงไปยังเอาท์พุท
- แต่เราต้องการที่จะควบคุมการป้อนข้อมูลเมื่อมีการโหลดลงในทะเบียนโดยการเข้าไปยุ่งเกี่ยวกับสัญญาณควบคุมความเร็วในการโหลด
- เมื่อสัญญาณโหลดไม่ได้กล่าวหาการลงทะเบียนยังคงรักษาสถานะปัจจุบันของ
- ที่น่าสนใจลงทะเบียนและวงจรลำดับอื่น ๆ ที่สามารถสร้างขึ้นจากวงจรลำดับที่เรียบง่ายที่เรียกว่าพลิกแตะซึ่งจะสามารถสร้างขึ้นจากประตูตรรกะง่ายๆ
- วงจร Combinatorial มีปัจจัยการผลิตที่เป็นตัวแทนจากค่าของพวกเขา: 0 หรือ 1
- นี้เป็นจริงสำหรับปัจจัยการผลิตข้อมูลไปยังวงจรลำดับ แต่สัญญาณโหลดเป็นตัวแทนตามปกติโดยการเปลี่ยนแปลงมูลค่า 0-1
- เราบอกว่าวงจรลำดับเช่นการลงทะเบียนเป็นขอบเรียกมันปรับปรุงค่าของมันเมื่อมีการเปลี่ยนแปลงสัญญาณโหลด 0-1
- ในบางการออกแบบซีพียูควบคุมตรรกะที่บอกวงจรลำดับในการโหลดค่าใหม่เป็นไม่ตรงกัน . ซึ่งหมายความว่าหน่วยงานลำดับที่แตกต่างกันจะมีการปรับปรุงในช่วงเวลาที่แตกต่างกัน
- เช่นอาจเอาท์พุทค่าใหม่ ALU และยังเพิ่มมูลค่าสายการควบคุมของ 0-1 ในเวลาเดียวกัน เอาท์พุทและสายการควบคุมอาจจะมีการเชื่อมต่อกับการลงทะเบียนซึ่งจะเก็บค่า ALU เมื่อค่าสายควบคุมเพิ่มขึ้น
- แต่ลงทะเบียนอีกอาจจะโหลดจากรถบัสข้อมูลซึ่งอ้าง (ยก) สายการควบคุมที่แตกต่างกันในเวลาที่แตกต่างกัน
- เช่นอาจเอาท์พุทค่าใหม่ ALU และยังเพิ่มมูลค่าสายการควบคุมของ 0-1 ในเวลาเดียวกัน เอาท์พุทและสายการควบคุมอาจจะมีการเชื่อมต่อกับการลงทะเบียนซึ่งจะเก็บค่า ALU เมื่อค่าสายควบคุมเพิ่มขึ้น
- แต่ส่วนใหญ่การออกแบบซีพียูขณะนี้มีจังหวะหน่วยลำดับทั้งหมดมีการปรับปรุงในเวลาเดียวกัน
- การประสานนี้จะถูกควบคุมโดยสัญญาณนาฬิกามักจะกำเนิดคลื่นสี่เหลี่ยมที่รอบระหว่าง 0 และ 1 ค่า
- ความถี่สัญญาณนาฬิกาและระยะเวลาที่เกี่ยวข้องโดยสมความถี่ * ระยะเวลา = 1 หรือระยะเวลา = [1 / ความถี่]
- ถ้า CPU ของคุณกำลังทำงานที่ 3GHz (เช่น 3000000000 นาฬิการอบ ต่อวินาทีหรือ 3 * 10 9รอบนาฬิกาต่อวินาที) จากนั้นช่วงเวลาที่นาฬิกาแต่ละคนหรือแต่ละรอบสัญญาณนาฬิกาเป็น 1 / (3 * 10 9 ) วินาทีหรือประมาณ 0.33 นาโนวินาที (0.33 * 10 - 9 ) วินาทีนาน
- ในแต่ละที่เพิ่มขึ้นหรือนำขอบของสัญญาณนาฬิกาหน่วยลำดับใน CPU สามารถปรับปรุงได้
- แต่เราไม่ต้องการให้พวกเขาได้รับการปรับปรุงสัญญาณนาฬิกาทุกเพียงคนที่เมื่อเรามีค่าใหม่ในการโหลด
- ดังนั้นสัญญาณนาฬิกามักจะ ANDed กับสายการปรับปรุง / การควบคุมความเร็วในการโหลดตัวอย่างเช่น:
- เพื่อให้แน่ใจว่าการปรับปรุงทุกหน่วยงานลำดับในเวลาเดียวกัน แต่เมื่อจำเป็นเท่านั้น
- เราใส่รูปสามเหลี่ยมเล็ก ๆ ที่ด้านล่างของแต่ละหน่วยตามลำดับเพื่อบ่งชี้ว่าจะได้รับสัญญาณควบคุมที่จะบอกว่าเมื่อการปรับปรุงเนื้อหาของบนพื้นฐานของข้อมูล
- นอกจากนี้เรายังจะปล่อยสัญญาณนาฬิกาและและประตูและเพียงแค่แสดงปุ่มควบคุมที่พวกเขาจะเป็นนัย
6.1 ขั้นตอนของแต่ละการเรียนการสอน
- คุณจะคิดว่าเราก็สามารถสายสัญญาณนาฬิกาที่แต่ละคนและทุกหน่วยลำดับในเครื่องคอมพิวเตอร์โดยตรงและรวมกับสายการควบคุมซึ่งแสดงให้เห็นการปรับปรุง แต่นี้เป็นกรณีที่ไม่ ทำไมไม่?
- โปรแกรมเคาน์เตอร์ (PC) ถือหุ้นอยู่ของการเรียนการสอนต่อไป มันได้อย่างมีประสิทธิภาพการลงทะเบียนและดังนั้นจึงเป็นวงจรลำดับ
- แต่แต่ละคำสั่งมีจำนวนของขั้นตอนและเรามีการบันทึกผลของแต่ละขั้นตอน ดังนั้นเครื่องคอมพิวเตอร์ที่ไม่ได้รับการปรับปรุงในแต่ละขั้นตอนของการเรียนการสอนเพียงแค่ขั้นตอนสุดท้าย
- พิจารณาการเรียนการสอนเช่น MIPS LW $ t1, 100 ($ t0) .
- ในรอบสัญญาณนาฬิกาครั้งแรกที่เราจะต้องอ่านและตีความการเรียนการสอนนี้
- ใส่ค่าเครื่องคอมพิวเตอร์ในปัจจุบันที่อยู่บนรถบัสที่บ่งบอกถึงการอ่านในบรรทัดอ่าน / เขียนการควบคุมได้รับการเรียนการสอนและจัดเก็บลงในการเรียนการสอนการลงทะเบียน (IR) ซึ่งเป็นวงจรลำดับ
- ใส่ค่าเครื่องคอมพิวเตอร์ในปัจจุบันที่อยู่บนรถบัสที่บ่งบอกถึงการอ่านในบรรทัดอ่าน / เขียนการควบคุมได้รับการเรียนการสอนและจัดเก็บลงในการเรียนการสอนการลงทะเบียน (IR) ซึ่งเป็นวงจรลำดับ
- ในรอบสัญญาณนาฬิกาที่สองดำเนินการมูลค่า 100 + $ t0 ใน ALU:
- ได้รับค่าทันที 100 ออกจากนักลงทุนและความคุ้มค่า $ t0 และใช้ขณะที่ทั้งสองปัจจัยการผลิตที่จะ ALU
- ได้รับค่าทันที 100 ออกจากนักลงทุนและความคุ้มค่า $ t0 และใช้ขณะที่ทั้งสองปัจจัยการผลิตที่จะ ALU
- ในรอบสัญญาณนาฬิกาที่สามวางผลจาก ALU บนรถบัสที่อยู่ที่ได้รับมูลค่าที่สถานที่ตั้งอยู่บนรถบัสข้อมูลที่เขียนค่าบนรถบัสข้อมูลลงใน $ t1
- $ t1 เป็นของแน่นอนวงจรลำดับ
- รวมทั้งเพิ่มเครื่องคอมพิวเตอร์พร้อมสำหรับการเรียนการสอนต่อไป PC เป็นวงจรต่อเนื่อง
- $ t1 เป็นของแน่นอนวงจรลำดับ
- ดังนั้นเราจึงไม่สามารถลวดสัญญาณนาฬิกาโดยตรงในทุกหน่วยลำดับในซีพียู
- แต่เราจำเป็นต้องมีหน่วยตรรกะซึ่งได้รับรอบนาฬิกาและเอาท์พุทสายการควบคุมที่เป็นจริง (1) เพื่อแสดงให้เห็นขั้นตอนของการดำเนินการเรียนการสอนในแต่ละครั้งและที่จะตั้งค่าตัวเองหลังจากจำนวนหนึ่งของรอบ (เช่น 3)
- แล้วเราสายเส้นขั้นตอนที่เหมาะสมกับหน่วยลำดับที่แตกต่างกันในซีพียู
- แล้วเราสายเส้นขั้นตอนที่เหมาะสมกับหน่วยลำดับที่แตกต่างกันในซีพียู
- หน่วยนี้มีเพื่อให้รัฐดังนั้นจึงยังเป็นวงจรต่อเนื่อง
- จะดำเนินการตามปกติในขณะที่ลงทะเบียนกะ .
- เราจะเห็นว่าเส้นขั้นตอนเหล่านี้จะใช้ในตรรกะการควบคุมด้านล่าง
7 งาน CPU: ปัญหา
- ที่ทำให้เราได้เห็นภาพรวมระดับสูงของ CPU:
- แผนภาพนี้แสดงให้เห็น Datapaths เท่านั้น จะไม่แสดงตรรกะการควบคุม
- นอกจากนี้ยังแสดง CPU / หน่วยความจำเชื่อมต่อโครงข่ายเป็นกระแสข้อมูล แต่ในความเป็นจริงมี 3 บัสที่เชื่อมต่อ CPU และหน่วยความจำ
- โดยเฉพาะอย่างยิ่ง:
- สัญญาณบนรถบัสที่อยู่ไหลจากซีพียูหน่วยความจำหลัก
- สัญญาณการไหลของบัสข้อมูลทั้งสองทิศทางเพื่อให้การอ่านและการเขียนจากความทรงจำ
- สัญญาณบางประการเกี่ยวกับการไหลของรถบัสควบคุมจาก CPU หน่วยความจำ (เช่นการอ่าน / เขียนสัญญาณ) ในขณะที่คนอื่น ๆ ที่ไหลออกมาจากหน่วยความจำกับ CPU (เช่นที่ถูกต้อง / ที่อยู่ไม่ถูกต้อง)
- สัญญาณบนรถบัสที่อยู่ไหลจากซีพียูหน่วยความจำหลัก
- ลองดูที่บางส่วนของแต่ละองค์ประกอบใน CPU และดูว่าพวกเขาจะต้องมีการควบคุม
7.1 รถที่อยู่
- รถบัสที่อยู่ส่งหน่วยความจำที่ต้องการที่อยู่ออกไปยังหน่วยความจำหลักดังนั้นสถานที่ที่สามารถอ่านหรือเขียน
- พร้อมกับรถบัสนี้มีสายการอ่าน / เขียนบนรถบัสควบคุมที่บอกหน่วยความจำสิ่งที่ต้องทำ
- ตอนนี้สิ่งที่จัดเรียงของที่อยู่สามารถสร้าง CPU?
- ที่อยู่ของการเรียนการสอนในการเรียกข้อมูล
- ที่อยู่ของสถานที่ตั้งในการอ่านหรือเขียนที่สร้างขึ้นโดยการดำเนินการ ALU (เช่นฐาน + ดัชนี)
- ที่อยู่ของสถานที่ตั้งที่จะอ่านหรือเขียนมาจากการลงทะเบียน
- ที่อยู่ของการเรียนการสอนในการเรียกข้อมูล
- เราจะต้องล็คในการควบคุมที่อยู่ที่ถูกสร้างขึ้นใน CPU เป็นหนึ่งที่ออกไปบนรถบัสที่อยู่
- ถอดรหัสการเรียนการสอนจะต้องส่งสัญญาณควบคุมการล็คในการเลือกที่อยู่
- ยังทราบล็คขวามือถ้าที่อยู่มาจากการลงทะเบียนที่เราต้องเลือกที่หนึ่ง
7.2 บัสข้อมูล
- บัสข้อมูลเป็นแบบสองทิศทางดังนั้นเราจึงจำเป็นต้องมีล็สองทิศทางที่จะกำหนดทิศทาง; ก็สามารถที่จะควบคุมโดยการอ่าน / เขียนเส้น
- ที่ไม่เขียนข้อมูลมาจากไหน?
- ลงทะเบียนเช่นโหลด / ร้านใน RISC ซีพียู
- ผลของการดำเนินการ ALU เช่นคำแนะนำ CISC
- ลงทะเบียนเช่นโหลด / ร้านใน RISC ซีพียู
- ไม่อ่านข้อมูลไปที่ไหน?
- การลงทะเบียนเรียนการสอน (เช่นเรียกขั้นตอนของการเรียนการสอน)
- ลงทะเบียนเช่นโหลด / ร้านใน RISC ซีพียู
- ป้อนข้อมูลเพื่อ ALU เช่นคำแนะนำ CISC
- การลงทะเบียนเรียนการสอน (เช่นเรียกขั้นตอนของการเรียนการสอน)
- โชคดีที่เราสามารถให้ข้อมูลที่อ่านไปในทุกทิศทางและให้ multiplexors อื่น ๆ เลือกที่จะยอมรับ / ปฏิเสธข้อมูลที่อ่าน
- อีกครั้งถอดรหัสการเรียนการสอนจะต้องส่งสัญญาณควบคุมไปยังข้อมูลที่เขียนล็คสามารถเลือกข้อมูลที่จะเขียน
7.3 โปรแกรมเคาน์เตอร์
- PC เป็นวงจรต่อเนื่องและในตอนท้ายของการเรียนการสอนที่เราจำเป็นต้องปรับปรุงค่าในแต่ละเพื่อที่จะนำการเรียนการสอนต่อไป
- สำหรับการไหลปกติของการควบคุมเครื่องคอมพิวเตอร์จะต้องมีการเพิ่มขึ้นดังนั้นเราจึงจำเป็นหน่วย Incrementer
- ซึ่งอาจจะเป็นง่ายๆเป็น "เพิ่มขนาดคำว่า" การดำเนินการเช่นที่ RISC หรือเราต้องติดตามขนาดของการเรียนการสอนในปัจจุบันเช่นคำแนะนำ CISC ที่แผ่กระจายไปทั่วหลายคำ
- สำหรับการกระโดดและสาขาที่อยู่ของคำสั่งถัดไปจะต้องมีการโหลดลงในเครื่องคอมพิวเตอร์
- นี้สามารถมาจาก:
- ลงทะเบียนเช่นจูเนียร์การเรียนการสอนใน MIPS ที่จะกลับออกมาจากฟังก์ชั่น
- ALU ซึ่งคำนวณที่อยู่สาขาที่เกี่ยวข้องใช้คอมพิวเตอร์เครื่องเก่าและบางส่วนชดเชย
- ALU ซึ่งคำนวณกระโดดแน่นอน
- ค่าทันทีจากการลงทะเบียนเรียนการสอนเช่นกระโดดยากรหัสในการเรียนการสอน
- ลงทะเบียนเช่นจูเนียร์การเรียนการสอนใน MIPS ที่จะกลับออกมาจากฟังก์ชั่น
- ดังนั้นเราจึงจำเป็นต้องมีล็คและสายการควบคุมบางอย่างที่จะกำหนดวิธีการในการปรับปรุงเครื่องคอมพิวเตอร์
7.4 ALU
- ALU เป็นหนึ่งในหน่วยงานที่มีความซับซ้อนมากที่สุดในการควบคุมส่วนใหญ่เป็นเพราะมันจะได้รับปัจจัยการผลิตที่สองมาจากหลายสถานที่:
- ลงทะเบียนที่เฉพาะเจาะจง
- บัสข้อมูล
- PC เมื่อเราคำนวณสาขา
- ค่าทันทีจากการลงทะเบียนเรียนการสอน
- ลงทะเบียนที่เฉพาะเจาะจง
- และในขณะที่มีสองปัจจัยการผลิตที่เราจะต้องล็คในแต่ละอินพุทที่จะ ALU:
- เช่นกัน ALU ความต้องการสายการควบคุมตรวจสอบการดำเนินงานของตน
- เอาท์พุทจาก ALU จะไปยังส่วนอื่น ๆ ของ CPU ซึ่งจะใช้ในการเลือก multiplexors / ปฏิเสธการส่งออกของ ALU
- ยังทราบธงสถานะ: บุคคลบิตที่บันทึกพกล้นหรือ zeroness ผล
- เหล่านี้จะถูกใช้โดยตรรกะสาขาเพื่อตรวจสอบตัวอย่างเช่นการปรับเปลี่ยนเครื่องคอมพิวเตอร์ถ้าผลสุดท้ายเป็นศูนย์ (สาขาเช่นถ้าศูนย์)
7.5 ลงทะเบียนแฟ้ม
- ในซีพียูบางลงทะเบียนบางวัตถุประสงค์พิเศษ: เราจะไม่ได้ไปดูที่
- แต่เราจะพิจารณาการลงทะเบียนทั้งหมดที่จะเป็นจุดประสงค์ทั่วไปและมีหมายเลขจากศูนย์ขึ้นไป
- ชุดของการลงทะเบียนเป็นที่รู้จักกันเป็นไฟล์ลงทะเบียน .
- ผลที่ได้จากการลงทะเบียนสามารถออกไปหลายส่วนของ CPU ที่ multiplexors จะเลือกค่า
- นอกจากนี้เรายังจำเป็นต้องควบคุมปัจจัยการผลิตไปยังไฟล์ลงทะเบียน:
- ถ้าเขียนเกิดขึ้นหรือไม่เกิดขึ้น
- ที่ลงทะเบียนจะเขียนไป เราต้องdemultiplexor การทำเช่นนี้
- ที่ข้อมูลจะมาจาก
- ถ้าเขียนเกิดขึ้นหรือไม่เกิดขึ้น
- สำหรับหลังข้อมูลที่ได้มาจาก
- ALU เช่น MIPS เพิ่ม $ t1, t2 $, $ t3
- บัสข้อมูลเช่น MIPS LW $ t1, 1000
- มูลค่าได้ทันทีจากการเรียนการสอนลงทะเบียนเช่นโหลดค่าทันที
- PC เพื่อประหยัดที่อยู่ผู้ส่งเมื่อทำการเรียกใช้ฟังก์ชัน
- ALU เช่น MIPS เพิ่ม $ t1, t2 $, $ t3
- ดังนั้นสัญญาณควบคุมของไฟล์ลงทะเบียนจะมีลักษณะเช่นนี้
7.6 สาขาลอจิก
- ตอนนี้เรามาหน่วยตรรกะสาขา
- ในซีพียูบางการเรียนการสอนสาขามีการเปรียบเทียบที่ต้องการและสถานที่ตั้งสาขาเช่นถ้า R1> R2 สาขาไปยังเครื่องคอมพิวเตอร์ + 100
- ในซีพียูอื่น ๆ สาขาใช้บิตสถานะที่ถูกกำหนดโดยการเรียนการสอนที่ผ่านมาเช่นสาขาถ้าศูนย์ถึง PC + 100
- ทราบว่าสำหรับชนิดแรก ALU จะทำเปรียบเทียบ (โดยปกติการลบ) และตรรกะสาขาที่มีการตรวจสอบที่อยู่ใหม่
- ในคำอื่น ๆ หน่วยตรรกะสาขาต้องมีบวกของตัวเองเพื่อเพิ่มคอมพิวเตอร์เครื่องเก่าและชดเชยการผลิตค่าเครื่องคอมพิวเตอร์ใหม่
- เป็นปัจจัยการผลิตหน่วยตรรกะสาขาต้องบิตศูนย์สถานะหรือเอาท์พุทเป็นศูนย์จาก ALU, ค่าในทันทีและคอมพิวเตอร์เครื่องเก่า
- หน่วยตรรกะสาขาผลิตเป็นผลผลิตคอมพิวเตอร์เครื่องใหม่และบิตจะบอกว่าถ้าการเปรียบเทียบเป็นจริงหรือเท็จ
- โปรดทราบว่านี้เป็นเพียงหน่วยหนึ่งที่เป็นไปได้ การออกแบบอื่น ๆ อาจใช้เวลาลงทะเบียนค่าเป็นปัจจัยการผลิตได้เป็นอย่างดี / แทนค่าทันทีเป็นต้น
7.7 การเรียนการสอนสมัครสมาชิก
- ตอนนี้เรามาลงทะเบียนการเรียนการสอนและดูตัวอย่างตรรกะถอดรหัสที่จำเป็นในการแปลความหมายของการเรียนการสอน
- ต่อมาเราจะดูที่สองวิธีที่จะทำถอดรหัสการเรียนการสอนเต็มรูปแบบและการดำเนินการ
- ประการแรกมันเป็นสิ่งสำคัญที่ต้องจำไว้ว่าในซีพียูส่วนใหญ่มีรูปแบบการเรียนการสอนแตกต่างกันกับสาขาที่แตกต่างในแต่ละรูปแบบ
- เช่น MIPS R-type I-ชนิดและรูปแบบ J-ประเภท
- เช่น MIPS R-type I-ชนิดและรูปแบบ J-ประเภท
- สำหรับรูปแบบแต่ละครั้งเราจำเป็นต้องมีตรรกะที่สารสกัดจากสาขาต่างๆ
- นี้สามารถจะเป็นง่ายๆเป็นเลือกส่วนย่อยของเส้นออกจากนักลงทุน
- สาขาบางส่วนจากนักลงทุนจะนำไปใช้เป็นข้อมูล (เช่นค่าทันที) บางเป็นเส้นควบคุม
- จากนั้นเราต้องรู้จักรูปแบบการเรียนการสอนที่เฉพาะเจาะจงและสร้างเส้นผลผลิตหลายอย่างที่เป็นความจริงเท่านั้นสำหรับรูปแบบที่เฉพาะเจาะจง
- ในบางการออกแบบซีพียูบิตคงตำแหน่งในทุกการเรียนการสอนสามารถใช้ในการกำหนดประเภทของการเรียนการสอน
- ซึ่งสามารถทำได้กับประตูตรรกะไม่กี่
- ในซีพียูอื่น ๆ รวมกันมากขึ้นของบิตในการเรียนการสอนกำหนดประเภทของการเรียนการสอน บิตการเรียนการสอนมากขึ้นต้องไปเป็นหน่วยรูปแบบการถอดรหัสและประตูเมืองมากขึ้นมีความจำเป็นใน แต่นี้ไม่ยากเกินไป
8 เดินสายควบคุมลอจิก
- ป.ร. ให้ไว้ทั้งหมดข้างต้นคุณสามารถดูว่าทำไมแผนภาพภาพรวมเดิมของ internals CPU ที่แสดงให้เห็นเพียง Datapaths และไม่ตรรกะการควบคุม จะมีเส้นสีแดงมากเกินไปทั่วสถานที่!
- วิธีหนึ่งที่จะสร้างตรรกะควบคุมสำหรับ CPU คือการhardwire ตรรกะเป็น CPU โดยใช้ประตูตรรกะ
- ตรรกะการควบคุมไม่เพียง แต่มีการใช้สายการถอดรหัสจากการเรียนการสอน แต่ก็ยังมีที่จะสนใจว่าทุกการเรียนการสอนเป็นลำดับของกิจกรรมขนาดเล็กที่ไปในภายในซีพียู
- เดินสายไฟต้องรู้เมื่อจะยืนยันสายการควบคุมไปยังหน่วยงานใน CPU, เช่นในช่วงที่การเรียนการสอน
- Revisiting MIPS LW $ t1, 100 ($ t0)
- ขั้นตอนที่ 1: รถบัสที่อยู่ <- คอมพิวเตอร์อ่าน / เขียน <- อ่าน IR <- บัสข้อมูล
- ระยะที่ 2: ใส่ ALU 1 <- 100 รายการจาก IR เข้า ALU 2 <- ลงทะเบียน $ t0 การดำเนินงาน ALU <- เพิ่ม
- ระยะที่ 3: รถบัสที่อยู่ <- ส่งออก ALU อ่าน / เขียน <- อ่านลงทะเบียนเลือก <- $ t2 ลงทะเบียนเข้า <- บัสข้อมูลลงทะเบียนเขียน <- จริง, PC <- Incrementer, PC เขียน <- จริง
- ขั้นตอนที่ 1: รถบัสที่อยู่ <- คอมพิวเตอร์อ่าน / เขียน <- อ่าน IR <- บัสข้อมูล
- จากรายชื่อที่เราจะเห็นได้ว่ารถบัสที่อยู่จะต้องเลือกเครื่องคอมพิวเตอร์เป็น input ในเฟส 1 ALU เป็นข้อมูลเกี่ยวกับขั้นตอนที่ 3
- สมมติว่ามีสองสายการควบคุมจะเข้าไปในล็รถบัสที่อยู่และพวกเขามีความหมายนี้
C1 C0 ความหมาย 0 0 ใส่ ALU 0 1 อินพุต PC 1 x ลงทะเบียนเข้า - เมื่อระยะที่ 3 อยู่ในเครื่องคอมพิวเตอร์จะถูกเลือกเป็นอินพุทคือ C0 = 1 มิฉะนั้น ALU เป็นอินพุท (C0 = 0)
- สายการควบคุมอื่น ๆ C1 จะตั้งค่าการใช้ประตูตรรกะอื่น ๆ เท่านั้นเมื่อลงทะเบียนเป็นผู้จัดหาที่อยู่บนรถบัส
- เข้าควบคุมแต่ละคนสามารถจึงถูกสร้างขึ้นทั้งโดยบิตจาก IR (เช่นหมายเลขลงทะเบียน) หรือโดยบางตรรกะ combinatorial ซึ่งทำให้มั่นใจว่าสายการควบคุมเลือกการป้อนข้อมูลที่ถูกต้องหรือเขียนหน่วยลำดับเฉพาะในขั้นตอนที่เหมาะสมของการเรียนการสอน
- ประโยชน์หลักในการใช้เดินสายไฟในการสร้างสัญญาณควบคุมของซีพียูก็คือว่ามันต้องใช้เพียงไม่กี่ประตูตรรกะพื้นฐานในการเป็นตัวแทนของการรวมกันดังเมื่อ (ซึ่งเฟส) และสิ่งที่ (อินพุทสิ่งที่ช่วยให้การเขียนไปยังหน่วยลำดับ)
- ข้อเสียอย่างหนึ่งคือการที่จะทำให้การอธิบายตรรกะการควบคุมของ CPU ไปไม่ได้เกือบโดยเฉพาะอย่างยิ่งเป็นแผนภาพ
- โดยทั่วไป RISC ซีพียูมีแนวโน้มที่จะได้รับการเดินสายในขณะที่ซีพียู CISC มักจะใช้เฟิร์มแวอธิบายไว้ด้านล่าง
9 Microcode ลอจิก
- ก่อนที่เราจะกดให้ย้อนกลับไปและพิจารณาการเรียนการสอนของ CPU เกี่ยวข้องกับลำดับของขั้นตอนและในช่วงที่เราต้องการที่จะช่วยให้บางตรรกะแต่ละตัวควบคุม (ส่ง 1 บิต) หรือเส้นทางค่าเฉพาะ (เช่นหมายเลขทะเบียน หรือค่าตัวอักษร) ที่จะควบคุมตรรกะ
- แทนการเข้ารหัสทั้งหมดนี้ใช้หลายสิบและนับสิบของประตูตรรกะซึ่ง AND และหรือที่จะได้รับสายควบคุมที่ถูกต้องทำไมไม่เก็บโต๊ะของผลการควบคุมใน CPU ตัวเอง .
- แถวของตารางจะเป็นตัวแทนของแต่ละขั้นตอนเดียวของคำสั่งเดียว
- แต่ละคอลัมน์ของตารางจะเป็นตัวแทนของสายการควบคุมที่เฉพาะเจาะจงและความคุ้มค่าที่ควรจะส่งไปในขั้นตอนของการเรียนการสอนนี้
- โดยปริยายแต่ละคำสั่ง CPU ที่แท้จริงก็จะถูกแทนด้วยจำนวนแถวและแต่ละแถวจะมีการปรึกษาหารือในการเปิดดำเนินการเรียนการสอนโดยรวม
- จะกลับไป MIPS LW $ t1, 100 ($ t0)ลำดับของสายการควบคุมบทขั้นตอนจะเป็นดังนี้
ขั้นตอนที่ AddrBus R / W IR IRwr ALU1 ALU2 ALUop Regsel RegInp Regwr เครื่องคอมพิวเตอร์ PCwr 1 เครื่องคอมพิวเตอร์ R dbus 1 xx xx xx xx xx 0 xx 0 2 xx R xx 0 IMMED $ t0 ADD xx xx 0 xx 0 3 ALU R xx 0 xx xx xx $ t1 dbus 1 incr 1 - แนวคิดของการจัดเก็บตารางค่าสายควบคุมภายใน CPU นี้เป็นที่รู้จักกันmicrocodingหรือไมโคร .
- แต่ละแถวจะเรียกว่าmicroinstruction . ตารางทั้งหมดของ microinstructions เป็นที่รู้จักกันของ CPU ไมโคร .
- ดังที่แสดงไว้ข้างต้นแต่ละ microinstruction จะตามด้วย microinstruction ต่อไป แต่เราสามารถเพิ่มความยืดหยุ่นดังต่อไปนี้
- ให้แต่ละ microinstruction ตัวเลขจาก 0, 1, 2 และอื่น ๆ
- ยังเพิ่มขึ้นสามคอลัมน์: ข้อมูลที่เฉพาะเจาะจงหรือมูลค่าการควบคุมภายใน CPU และตัวเลขสอง "microinstruction ถัดไป"
- ถ้าหลังจากเสร็จสิ้นการ microinstruction ค่าข้อมูลที่ระบุเป็นจริงแล้วไปที่ microinstruction แรก
- อื่นให้ไปที่หมายเลข microinstruction ที่สอง
- ให้แต่ละ microinstruction ตัวเลขจาก 0, 1, 2 และอื่น ๆ
- นี้จะช่วยให้แต่ละ microinstruction ที่จะเลือกคำสั่งถัดไป ที่จะดำเนินการได้ที่จะห่วงไปข้างหลัง!
- บางการใช้งานไมโครช่วยให้กระโดดไปที่การเรียนการสอนต่อไปที่เฉพาะเจาะจงขึ้นอยู่กับการตั้งค่าของค่า input เช่นสิ่งที่จำนวน opcode โดยเฉพาะในการลงทะเบียนการเรียนการสอน
- นี่คือเทียบเท่าฮาร์ดแวร์ของงบสวิตช์ระดับสูงมูลค่ากรณีที่ -> ที่นี่กระโดด
- นี่คือเทียบเท่าฮาร์ดแวร์ของงบสวิตช์ระดับสูงมูลค่ากรณีที่ -> ที่นี่กระโดด
- ซีพียูส่วนใหญ่ใช้ microcoding มีข้อเสียใหญ่คือ
- การจัดเก็บตารางในซีพียูต้องการหลายประตูตรรกะมากกว่าตรรกะควบคุมเทียบเท่าเดินสาย
- การจัดเก็บตารางในซีพียูต้องการหลายประตูตรรกะมากกว่าตรรกะควบคุมเทียบเท่าเดินสาย
- แต่มีข้อได้เปรียบหลาย
- microinstructions จะค่อนข้างอ่านได้โดยมนุษย์เพื่อให้การควบคุมลอจิกที่สามารถเข้าใจได้
- CPU และเฟิร์มแวที่สามารถจำลองเพื่อให้ความผิดพลาดหรือข้อบกพร่องในเฟิร์มแวที่สามารถพบได้
- ชุดคำสั่งในซีพียูจะถูกกำหนดโดยที่มีหน่วยย่อย (ALU ทะเบียน ฯลฯ ) และโดยค่าในตาราง ถ้าผู้ออกแบบต้องการที่จะเปลี่ยนหรือขยายชุดคำสั่งที่พวกเขาเพียงแค่ต้องเปลี่ยนค่าในตาราง
- ข้อผิดพลาดตรรกะบางอย่างในการออกแบบซีพียูสามารถแก้ไขได้โดยการเขียนใหม่ microinstructions เช่นซีพียู Pentium ครอบครัวมีความสามารถในการเขียนตารางไมโครหลังจากที่การผลิต
- โดยการเขียนเฟิร์มแวที่ใช้บ่อยคำแนะนำ CPU สามารถ speeded up อาจจะค่าใช้จ่ายของคำแนะนำอื่น ๆ
- microinstructions จะค่อนข้างอ่านได้โดยมนุษย์เพื่อให้การควบคุมลอจิกที่สามารถเข้าใจได้
9.1 การดำเนินการลอจิก Microcode
- ในความรู้สึกที่เรามีการใช้ซีพียูขนาดเล็กที่อยู่ภายในการควบคุมของ CPU จริง
- นี่คือตัวอย่างของวิธีการที่จะดำเนินการ
- ที่รอบสัญญาณนาฬิกาแต่ละแถวเคาน์เตอร์เฟิร์มแวถือจำนวน microinstruction ต่อไปที่จะดำเนินการ (เช่นเดียวกับเครื่องคอมพิวเตอร์)
- ตรรกะเลือกแถวอ่านตาราง, สารสกัดจากแถวและเปิด / ปิดการใช้งานของแต่ละสายการควบคุมการส่งออก
- ถ้าเฟิร์มให้ IF .. อื่นหรือสวิตช์แบบการดำเนินงานแล้วเหล่านี้จะดำเนินการยัง
- หมายเลขแถวเฟิร์มแวใหม่ยังเป็นส่งออกและการนี้จะถูกเก็บไว้กลับเข้ามาในเคาน์เตอร์แถวในการเตรียมการสำหรับนาฬิการอบต่อไป
- ทั้งหมดที่กล่าวมาอาจดูเหมือนนามธรรมและลึกลับ ในการกวดวิชาที่เราจะดูตัวอย่างของซีพียูแบบเดินสายและยังมีการจำลองกราฟิกของ CPU microcoded
ไม่มีความคิดเห็น:
แสดงความคิดเห็น