วันพุธที่ 6 สิงหาคม พ.ศ. 2557

เพิ่มเติม1.1





ที่อยู่โหมดและ 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 จะรักษาค่าที่อยู่อื่นและไปและเรียกค่าตามที่อยู่นี้
  • นี่ก็หมายความว่าคุณอาจจะอยู่ในห่วงโซ่: ที่อยู่ใครสามารถชี้ไปที่อีกคนหนึ่งซึ่งจะชี้ไปที่อีกหนึ่ง ฯลฯ
  • หนึ่งเล่นตลกคือการตั้งบิตทางอ้อมในคำในหน่วยความจำและใส่ที่อยู่ของคำที่อยู่ในคำของตัวเอง
    • การเข้าถึงไปยังสถานที่นี้จะทำให้ซีพียูจะเข้าไปในวงไม่มีที่สิ้นสุดของ indirections
    • ในการใช้งานของ PDP-10 ISA บางนี้จะล็อค CPU ขึ้นอย่างหนักและมันจะต้องใช้พลังงานลงไปแก้ไขปัญหา

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 ทำงานภายใน
  • มีสิ่งหนึ่งที่เหลืออยู่ที่จะมองก่อนที่เราจะสามารถครอบคลุมการทำงานของซีพียูคือวงจรลำดับ

6   แผงวงจรต่อเนื่อง

  • ALU เป็นตัวอย่างของวงจร combinatorial : เอาท์พุทคือการรวมกันของปัจจัยการผลิตแบบบูลและบางพีชคณิตบูลีนดำเนินการโดยประตูตรรกะเพื่อให้ผลผลิตที่อิงกับปัจจัยการผลิตในปัจจุบัน
  • ในทางทฤษฎีการส่งออก ALU ของการเปลี่ยนแปลงได้ทันทีเมื่อคนใดคนหนึ่งของการเปลี่ยนแปลงปัจจัยการผลิตของตน ในความเป็นจริงการส่งออกที่มีความล่าช้าเนื่องจากเวลาปฏิกิริยาของประตูและความยาวของการเชื่อมต่อระหว่างพวกเขา
  • วงจร Combinatorial เป็นไร้สัญชาติ : ผลผลิตของพวกเขาขึ้นอยู่กับปัจจัยการผลิตของพวกเขาและไม่ได้ของรัฐก่อนหน้านี้ของวงจร
  • วงจรเรียงตามลำดับในขณะที่ทำรักษารัฐ ผลผลิตของพวกเขาเป็นหน้าที่ของรัฐในปัจจุบันหรือก่อนหน้าของพวกเขาและปัจจัยการผลิตของพวกเขา
  • พิจารณาการลงทะเบียนเพียงครั้งเดียว อย่างต่อเนื่องออกค่าของมันและยังได้รับปัจจัยการผลิตเพื่อที่จะสามารถได้รับการปรับปรุง
    มะเดื่อ / seqregister.gif
  • เราไม่ต้องการลงทะเบียนเพื่อเปลี่ยนค่าในแต่ละและทุกครั้งที่มีการเปลี่ยนแปลงการป้อนข้อมูล: ทั้งหมดมันก็จะทำคือการสะท้อนสัญญาณตรงไปยังเอาท์พุท
  • แต่เราต้องการที่จะควบคุมการป้อนข้อมูลเมื่อมีการโหลดลงในทะเบียนโดยการเข้าไปยุ่งเกี่ยวกับสัญญาณควบคุมความเร็วในการโหลด
  • เมื่อสัญญาณโหลดไม่ได้กล่าวหาการลงทะเบียนยังคงรักษาสถานะปัจจุบันของ
  • ที่น่าสนใจลงทะเบียนและวงจรลำดับอื่น ๆ ที่สามารถสร้างขึ้นจากวงจรลำดับที่เรียบง่ายที่เรียกว่าพลิกแตะซึ่งจะสามารถสร้างขึ้นจากประตูตรรกะง่ายๆ
  • วงจร Combinatorial มีปัจจัยการผลิตที่เป็นตัวแทนจากค่าของพวกเขา: 0 หรือ 1
  • นี้เป็นจริงสำหรับปัจจัยการผลิตข้อมูลไปยังวงจรลำดับ แต่สัญญาณโหลดเป็นตัวแทนตามปกติโดยการเปลี่ยนแปลงมูลค่า 0-1
  • เราบอกว่าวงจรลำดับเช่นการลงทะเบียนเป็นขอบเรียกมันปรับปรุงค่าของมันเมื่อมีการเปลี่ยนแปลงสัญญาณโหลด 0-1
  • ในบางการออกแบบซีพียูควบคุมตรรกะที่บอกวงจรลำดับในการโหลดค่าใหม่เป็นไม่ตรงกัน . ซึ่งหมายความว่าหน่วยงานลำดับที่แตกต่างกันจะมีการปรับปรุงในช่วงเวลาที่แตกต่างกัน
    • เช่นอาจเอาท์พุทค่าใหม่ ALU และยังเพิ่มมูลค่าสายการควบคุมของ 0-1 ในเวลาเดียวกัน เอาท์พุทและสายการควบคุมอาจจะมีการเชื่อมต่อกับการลงทะเบียนซึ่งจะเก็บค่า ALU เมื่อค่าสายควบคุมเพิ่มขึ้น
    • แต่ลงทะเบียนอีกอาจจะโหลดจากรถบัสข้อมูลซึ่งอ้าง (ยก) สายการควบคุมที่แตกต่างกันในเวลาที่แตกต่างกัน
  • แต่ส่วนใหญ่การออกแบบซีพียูขณะนี้มีจังหวะหน่วยลำดับทั้งหมดมีการปรับปรุงในเวลาเดียวกัน
  • การประสานนี้จะถูกควบคุมโดยสัญญาณนาฬิกามักจะกำเนิดคลื่นสี่เหลี่ยมที่รอบระหว่าง 0 และ 1 ค่า
    มะเดื่อ / clocksignal.gif
  • ความถี่สัญญาณนาฬิกาและระยะเวลาที่เกี่ยวข้องโดยสมความถี่ * ระยะเวลา = 1 หรือระยะเวลา = [1 / ความถี่]
  • ถ้า CPU ของคุณกำลังทำงานที่ 3GHz (เช่น 3000000000 นาฬิการอบ ต่อวินาทีหรือ 3 * 10 9รอบนาฬิกาต่อวินาที) จากนั้นช่วงเวลาที่นาฬิกาแต่ละคนหรือแต่ละรอบสัญญาณนาฬิกาเป็น 1 / (3 * 10 9 ) วินาทีหรือประมาณ 0.33 นาโนวินาที (0.33 * 10 - 9 ) วินาทีนาน
  • ในแต่ละที่เพิ่มขึ้นหรือนำขอบของสัญญาณนาฬิกาหน่วยลำดับใน CPU สามารถปรับปรุงได้
  • แต่เราไม่ต้องการให้พวกเขาได้รับการปรับปรุงสัญญาณนาฬิกาทุกเพียงคนที่เมื่อเรามีค่าใหม่ในการโหลด
  • ดังนั้นสัญญาณนาฬิกามักจะ ANDed กับสายการปรับปรุง / การควบคุมความเร็วในการโหลดตัวอย่างเช่น:
    มะเดื่อ / seqclockreg.gif
  • เพื่อให้แน่ใจว่าการปรับปรุงทุกหน่วยงานลำดับในเวลาเดียวกัน แต่เมื่อจำเป็นเท่านั้น
  • เราใส่รูปสามเหลี่ยมเล็ก ๆ ที่ด้านล่างของแต่ละหน่วยตามลำดับเพื่อบ่งชี้ว่าจะได้รับสัญญาณควบคุมที่จะบอกว่าเมื่อการปรับปรุงเนื้อหาของบนพื้นฐานของข้อมูล
  • นอกจากนี้เรายังจะปล่อยสัญญาณนาฬิกาและและประตูและเพียงแค่แสดงปุ่มควบคุมที่พวกเขาจะเป็นนัย

6.1   ขั้นตอนของแต่ละการเรียนการสอน

  • คุณจะคิดว่าเราก็สามารถสายสัญญาณนาฬิกาที่แต่ละคนและทุกหน่วยลำดับในเครื่องคอมพิวเตอร์โดยตรงและรวมกับสายการควบคุมซึ่งแสดงให้เห็นการปรับปรุง แต่นี้เป็นกรณีที่ไม่ ทำไมไม่?
  • โปรแกรมเคาน์เตอร์ (PC) ถือหุ้นอยู่ของการเรียนการสอนต่อไป มันได้อย่างมีประสิทธิภาพการลงทะเบียนและดังนั้นจึงเป็นวงจรลำดับ
  • แต่แต่ละคำสั่งมีจำนวนของขั้นตอนและเรามีการบันทึกผลของแต่ละขั้นตอน ดังนั้นเครื่องคอมพิวเตอร์ที่ไม่ได้รับการปรับปรุงในแต่ละขั้นตอนของการเรียนการสอนเพียงแค่ขั้นตอนสุดท้าย
  • พิจารณาการเรียนการสอนเช่น MIPS   LW $ t1, 100 ($ t0) .
  • ในรอบสัญญาณนาฬิกาครั้งแรกที่เราจะต้องอ่านและตีความการเรียนการสอนนี้
    • ใส่ค่าเครื่องคอมพิวเตอร์ในปัจจุบันที่อยู่บนรถบัสที่บ่งบอกถึงการอ่านในบรรทัดอ่าน / เขียนการควบคุมได้รับการเรียนการสอนและจัดเก็บลงในการเรียนการสอนการลงทะเบียน (IR) ซึ่งเป็นวงจรลำดับ
  • ในรอบสัญญาณนาฬิกาที่สองดำเนินการมูลค่า 100 + $ t0 ใน ALU:
    • ได้รับค่าทันที 100 ออกจากนักลงทุนและความคุ้มค่า $ t0 และใช้ขณะที่ทั้งสองปัจจัยการผลิตที่จะ ALU
  • ในรอบสัญญาณนาฬิกาที่สามวางผลจาก ALU บนรถบัสที่อยู่ที่ได้รับมูลค่าที่สถานที่ตั้งอยู่บนรถบัสข้อมูลที่เขียนค่าบนรถบัสข้อมูลลงใน $ t1
    • $ t1 เป็นของแน่นอนวงจรลำดับ
    • รวมทั้งเพิ่มเครื่องคอมพิวเตอร์พร้อมสำหรับการเรียนการสอนต่อไป PC เป็นวงจรต่อเนื่อง
  • ดังนั้นเราจึงไม่สามารถลวดสัญญาณนาฬิกาโดยตรงในทุกหน่วยลำดับในซีพียู
  • แต่เราจำเป็นต้องมีหน่วยตรรกะซึ่งได้รับรอบนาฬิกาและเอาท์พุทสายการควบคุมที่เป็นจริง (1) เพื่อแสดงให้เห็นขั้นตอนของการดำเนินการเรียนการสอนในแต่ละครั้งและที่จะตั้งค่าตัวเองหลังจากจำนวนหนึ่งของรอบ (เช่น 3)
    • แล้วเราสายเส้นขั้นตอนที่เหมาะสมกับหน่วยลำดับที่แตกต่างกันในซีพียู
  • หน่วยนี้มีเพื่อให้รัฐดังนั้นจึงยังเป็นวงจรต่อเนื่อง
    มะเดื่อ / phaselogic.gif
  • จะดำเนินการตามปกติในขณะที่ลงทะเบียนกะ .
  • เราจะเห็นว่าเส้นขั้นตอนเหล่านี้จะใช้ในตรรกะการควบคุมด้านล่าง

7   งาน CPU: ปัญหา

  • ที่ทำให้เราได้เห็นภาพรวมระดับสูงของ CPU:
    มะเดื่อ / basiccpuarch.gif
  • แผนภาพนี้แสดงให้เห็น Datapaths เท่านั้น จะไม่แสดงตรรกะการควบคุม
  • นอกจากนี้ยังแสดง CPU / หน่วยความจำเชื่อมต่อโครงข่ายเป็นกระแสข้อมูล แต่ในความเป็นจริงมี 3 บัสที่เชื่อมต่อ CPU และหน่วยความจำ
    มะเดื่อ / memcpuconnect.gif
  • โดยเฉพาะอย่างยิ่ง:
    • สัญญาณบนรถบัสที่อยู่ไหลจากซีพียูหน่วยความจำหลัก
    • สัญญาณการไหลของบัสข้อมูลทั้งสองทิศทางเพื่อให้การอ่านและการเขียนจากความทรงจำ
    • สัญญาณบางประการเกี่ยวกับการไหลของรถบัสควบคุมจาก CPU หน่วยความจำ (เช่นการอ่าน / เขียนสัญญาณ) ในขณะที่คนอื่น ๆ ที่ไหลออกมาจากหน่วยความจำกับ CPU (เช่นที่ถูกต้อง / ที่อยู่ไม่ถูกต้อง)
  • ลองดูที่บางส่วนของแต่ละองค์ประกอบใน CPU และดูว่าพวกเขาจะต้องมีการควบคุม

7.1   รถที่อยู่

  • รถบัสที่อยู่ส่งหน่วยความจำที่ต้องการที่อยู่ออกไปยังหน่วยความจำหลักดังนั้นสถานที่ที่สามารถอ่านหรือเขียน
  • พร้อมกับรถบัสนี้มีสายการอ่าน / เขียนบนรถบัสควบคุมที่บอกหน่วยความจำสิ่งที่ต้องทำ
  • ตอนนี้สิ่งที่จัดเรียงของที่อยู่สามารถสร้าง CPU?
    • ที่อยู่ของการเรียนการสอนในการเรียกข้อมูล
    • ที่อยู่ของสถ​​านที่ตั้งในการอ่านหรือเขียนที่สร้างขึ้นโดยการดำเนินการ ALU (เช่นฐาน + ดัชนี)
    • ที่อยู่ของสถ​​านที่ตั้งที่จะอ่านหรือเขียนมาจากการลงทะเบียน
  • เราจะต้องล็คในการควบคุมที่อยู่ที่ถูกสร้างขึ้นใน CPU เป็นหนึ่งที่ออกไปบนรถบัสที่อยู่
    มะเดื่อ / addrmultiplexor.gif
  • ถอดรหัสการเรียนการสอนจะต้องส่งสัญญาณควบคุมการล็คในการเลือกที่อยู่
  • ยังทราบล็คขวามือถ้าที่อยู่มาจากการลงทะเบียนที่เราต้องเลือกที่หนึ่ง

7.2   บัสข้อมูล

  • บัสข้อมูลเป็นแบบสองทิศทางดังนั้นเราจึงจำเป็นต้องมีล็สองทิศทางที่จะกำหนดทิศทาง; ก็สามารถที่จะควบคุมโดยการอ่าน / เขียนเส้น
  • ที่ไม่เขียนข้อมูลมาจากไหน?
    • ลงทะเบียนเช่นโหลด / ร้านใน RISC ซีพียู
    • ผลของการดำเนินการ ALU เช่นคำแนะนำ CISC
  • ไม่อ่านข้อมูลไปที่ไหน?
    • การลงทะเบียนเรียนการสอน (เช่นเรียกขั้นตอนของการเรียนการสอน)
    • ลงทะเบียนเช่นโหลด / ร้านใน RISC ซีพียู
    • ป้อนข้อมูลเพื่อ ALU เช่นคำแนะนำ CISC
  • โชคดีที่เราสามารถให้ข้อมูลที่อ่านไปในทุกทิศทางและให้ multiplexors อื่น ๆ เลือกที่จะยอมรับ / ปฏิเสธข้อมูลที่อ่าน
  • อีกครั้งถอดรหัสการเรียนการสอนจะต้องส่งสัญญาณควบคุมไปยังข้อมูลที่เขียนล็คสามารถเลือกข้อมูลที่จะเขียน
    มะเดื่อ / datamultiplexor.gif

7.3   โปรแกรมเคาน์เตอร์

  • PC เป็นวงจรต่อเนื่องและในตอนท้ายของการเรียนการสอนที่เราจำเป็นต้องปรับปรุงค่าในแต่ละเพื่อที่จะนำการเรียนการสอนต่อไป
  • สำหรับการไหลปกติของการควบคุมเครื่องคอมพิวเตอร์จะต้องมีการเพิ่มขึ้นดังนั้นเราจึงจำเป็นหน่วย Incrementer
  • ซึ่งอาจจะเป็นง่ายๆเป็น "เพิ่มขนาดคำว่า" การดำเนินการเช่นที่ RISC หรือเราต้องติดตามขนาดของการเรียนการสอนในปัจจุบันเช่นคำแนะนำ CISC ที่แผ่กระจายไปทั่วหลายคำ
  • สำหรับการกระโดดและสาขาที่อยู่ของคำสั่งถัดไปจะต้องมีการโหลดลงในเครื่องคอมพิวเตอร์
  • นี้สามารถมาจาก:
    • ลงทะเบียนเช่นจูเนียร์การเรียนการสอนใน MIPS ที่จะกลับออกมาจากฟังก์ชั่น
    • ALU ซึ่งคำนวณที่อยู่สาขาที่เกี่ยวข้องใช้คอมพิวเตอร์เครื่องเก่าและบางส่วนชดเชย
    • ALU ซึ่งคำนวณกระโดดแน่นอน
    • ค่าทันทีจากการลงทะเบียนเรียนการสอนเช่นกระโดดยากรหัสในการเรียนการสอน
  • ดังนั้นเราจึงจำเป็นต้องมีล็คและสายการควบคุมบางอย่างที่จะกำหนดวิธีการในการปรับปรุงเครื่องคอมพิวเตอร์
    มะเดื่อ / pc_control.gif

7.4   ALU

  • ALU เป็นหนึ่งในหน่วยงานที่มีความซับซ้อนมากที่สุดในการควบคุมส่วนใหญ่เป็นเพราะมันจะได้รับปัจจัยการผลิตที่สองมาจากหลายสถานที่:
    • ลงทะเบียนที่เฉพาะเจาะจง
    • บัสข้อมูล
    • PC เมื่อเราคำนวณสาขา
    • ค่าทันทีจากการลงทะเบียนเรียนการสอน
  • และในขณะที่มีสองปัจจัยการผลิตที่เราจะต้องล็คในแต่ละอินพุทที่จะ ALU:
มะเดื่อ / alu_control.gif
  • เช่นกัน ALU ความต้องการสายการควบคุมตรวจสอบการดำเนินงานของตน
    มะเดื่อ / alu_control2.gif
  • เอาท์พุทจาก ALU จะไปยังส่วนอื่น ๆ ของ CPU ซึ่งจะใช้ในการเลือก multiplexors / ปฏิเสธการส่งออกของ ALU
  • ยังทราบธงสถานะ: บุคคลบิตที่บันทึกพกล้นหรือ zeroness ผล
  • เหล่านี้จะถูกใช้โดยตรรกะสาขาเพื่อตรวจสอบตัวอย่างเช่นการปรับเปลี่ยนเครื่องคอมพิวเตอร์ถ้าผลสุดท้ายเป็นศูนย์ (สาขาเช่นถ้าศูนย์)

7.5   ลงทะเบียนแฟ้ม

  • ในซีพียูบางลงทะเบียนบางวัตถุประสงค์พิเศษ: เราจะไม่ได้ไปดูที่
  • แต่เราจะพิจารณาการลงทะเบียนทั้งหมดที่จะเป็นจุดประสงค์ทั่วไปและมีหมายเลขจากศูนย์ขึ้นไป
  • ชุดของการลงทะเบียนเป็นที่รู้จักกันเป็นไฟล์ลงทะเบียน .
  • ผลที่ได้จากการลงทะเบียนสามารถออกไปหลายส่วนของ CPU ที่ multiplexors จะเลือกค่า
  • นอกจากนี้เรายังจำเป็นต้องควบคุมปัจจัยการผลิตไปยังไฟล์ลงทะเบียน:
    • ถ้าเขียนเกิดขึ้นหรือไม่เกิดขึ้น
    • ที่ลงทะเบียนจะเขียนไป เราต้องdemultiplexor การทำเช่นนี้
    • ที่ข้อมูลจะมาจาก
  • สำหรับหลังข้อมูลที่ได้มาจาก
    • ALU เช่น MIPS   เพิ่ม $ t1, t2 $, $ t3
    • บัสข้อมูลเช่น MIPS   LW $ t1, 1000
    • มูลค่าได้ทันทีจากการเรียนการสอนลงทะเบียนเช่นโหลดค่าทันที
    • PC เพื่อประหยัดที่อยู่ผู้ส่งเมื่อทำการเรียกใช้ฟังก์ชัน
  • ดังนั้นสัญญาณควบคุมของไฟล์ลงทะเบียนจะมีลักษณะเช่นนี้
    มะเดื่อ / register_control.gif

7.6   สาขาลอจิก

  • ตอนนี้เรามาหน่วยตรรกะสาขา
  • ในซีพียูบางการเรียนการสอนสาขามีการเปรียบเทียบที่ต้องการและสถานที่ตั้งสาขาเช่นถ้า R1> R2 สาขาไปยังเครื่องคอมพิวเตอร์ + 100
  • ในซีพียูอื่น ๆ สาขาใช้บิตสถานะที่ถูกกำหนดโดยการเรียนการสอนที่ผ่านมาเช่นสาขาถ้าศูนย์ถึง PC + 100
  • ทราบว่าสำหรับชนิดแรก ALU จะทำเปรียบเทียบ (โดยปกติการลบ) และตรรกะสาขาที่มีการตรวจสอบที่อยู่ใหม่
  • ในคำอื่น ๆ หน่วยตรรกะสาขาต้องมีบวกของตัวเองเพื่อเพิ่มคอมพิวเตอร์เครื่องเก่าและชดเชยการผลิตค่าเครื่องคอมพิวเตอร์ใหม่
  • เป็นปัจจัยการผลิตหน่วยตรรกะสาขาต้องบิตศูนย์สถานะหรือเอาท์พุทเป็นศูนย์จาก ALU, ค่าในทันทีและคอมพิวเตอร์เครื่องเก่า
  • หน่วยตรรกะสาขาผลิตเป็นผลผลิตคอมพิวเตอร์เครื่องใหม่และบิตจะบอกว่าถ้าการเปรียบเทียบเป็นจริงหรือเท็จ
    มะเดื่อ / branch_logic.gif
  • โปรดทราบว่านี้เป็นเพียงหน่วยหนึ่งที่เป็นไปได้ การออกแบบอื่น ๆ อาจใช้เวลาลงทะเบียนค่าเป็นปัจจัยการผลิตได้เป็นอย่างดี / แทนค่าทันทีเป็นต้น

7.7   การเรียนการสอนสมัครสมาชิก

  • ตอนนี้เรามาลงทะเบียนการเรียนการสอนและดูตัวอย่างตรรกะถอดรหัสที่จำเป็นในการแปลความหมายของการเรียนการสอน
  • ต่อมาเราจะดูที่สองวิธีที่จะทำถอดรหัสการเรียนการสอนเต็มรูปแบบและการดำเนินการ
  • ประการแรกมันเป็นสิ่งสำคัญที่ต้องจำไว้ว่าในซีพียูส่วนใหญ่มีรูปแบบการเรียนการสอนแตกต่างกันกับสาขาที่แตกต่างในแต่ละรูปแบบ
    • เช่น MIPS R-type I-ชนิดและรูปแบบ J-ประเภท
  • สำหรับรูปแบบแต่ละครั้งเราจำเป็นต้องมีตรรกะที่สารสกัดจากสาขาต่างๆ
  • นี้สามารถจะเป็นง่ายๆเป็นเลือกส่วนย่อยของเส้นออกจากนักลงทุน
    มะเดื่อ / hardwiredinstrs.gif
  • สาขาบางส่วนจากนักลงทุนจะนำไปใช้เป็นข้อมูล (เช่นค่าทันที) บางเป็นเส้นควบคุม
  • จากนั้นเราต้องรู้จักรูปแบบการเรียนการสอนที่เฉพาะเจาะจงและสร้างเส้นผลผลิตหลายอย่างที่เป็นความจริงเท่านั้นสำหรับรูปแบบที่เฉพาะเจาะจง
  • ในบางการออกแบบซีพียูบิตคงตำแหน่งในทุกการเรียนการสอนสามารถใช้ในการกำหนดประเภทของการเรียนการสอน
  • ซึ่งสามารถทำได้กับประตูตรรกะไม่กี่
  • ในซีพียูอื่น ๆ รวมกันมากขึ้นของบิตในการเรียนการสอนกำหนดประเภทของการเรียนการสอน บิตการเรียนการสอนมากขึ้นต้องไปเป็นหน่วยรูปแบบการถอดรหัสและประตูเมืองมากขึ้นมีความจำเป็นใน แต่นี้ไม่ยากเกินไป

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 เขียน <- จริง
  • จากรายชื่อที่เราจะเห็นได้ว่ารถบัสที่อยู่จะต้องเลือกเครื่องคอมพิวเตอร์เป็น input ในเฟส 1 ALU เป็นข้อมูลเกี่ยวกับขั้นตอนที่ 3
  • สมมติว่ามีสองสายการควบคุมจะเข้าไปในล็รถบัสที่อยู่และพวกเขามีความหมายนี้
    C1C0ความหมาย
    00ใส่ ALU
    01อินพุต PC
    1xลงทะเบียนเข้า
    แล้วเราสามารถลวดขึ้นล็รถบัสที่อยู่ดังนี้
    มะเดื่อ / addrmultiplexor2.gif
  • เมื่อระยะที่ 3 อยู่ในเครื่องคอมพิวเตอร์จะถูกเลือกเป็นอินพุทคือ C0 = 1 มิฉะนั้น ALU เป็นอินพุท (C0 = 0)
  • สายการควบคุมอื่น ๆ C1 จะตั้งค่าการใช้ประตูตรรกะอื่น ๆ เท่านั้นเมื่อลงทะเบียนเป็นผู้จัดหาที่อยู่บนรถบัส
  • เข้าควบคุมแต่ละคนสามารถจึงถูกสร้างขึ้นทั้งโดยบิตจาก IR (เช่นหมายเลขลงทะเบียน) หรือโดยบางตรรกะ combinatorial ซึ่งทำให้มั่นใจว่าสายการควบคุมเลือกการป้อนข้อมูลที่ถูกต้องหรือเขียนหน่วยลำดับเฉพาะในขั้นตอนที่เหมาะสมของการเรียนการสอน
  • ประโยชน์หลักในการใช้เดินสายไฟในการสร้างสัญญาณควบคุมของซีพียูก็คือว่ามันต้องใช้เพียงไม่กี่ประตูตรรกะพื้นฐานในการเป็นตัวแทนของการรวมกันดังเมื่อ (ซึ่งเฟส) และสิ่งที่ (อินพุทสิ่งที่ช่วยให้การเขียนไปยังหน่วยลำดับ)
  • ข้อเสียอย่างหนึ่งคือการที่จะทำให้การอธิบายตรรกะการควบคุมของ CPU ไปไม่ได้เกือบโดยเฉพาะอย่างยิ่งเป็นแผนภาพ
  • โดยทั่วไป RISC ซีพียูมีแนวโน้มที่จะได้รับการเดินสายในขณะที่ซีพียู CISC มักจะใช้เฟิร์มแวอธิบายไว้ด้านล่าง

9   Microcode ลอจิก

  • ก่อนที่เราจะกดให้ย้อนกลับไปและพิจารณาการเรียนการสอนของ CPU เกี่ยวข้องกับลำดับของขั้นตอนและในช่วงที่เราต้องการที่จะช่วยให้บางตรรกะแต่ละตัวควบคุม (ส่ง 1 บิต) หรือเส้นทางค่าเฉพาะ (เช่นหมายเลขทะเบียน หรือค่าตัวอักษร) ที่จะควบคุมตรรกะ
  • แทนการเข้ารหัสทั้งหมดนี้ใช้หลายสิบและนับสิบของประตูตรรกะซึ่ง AND และหรือที่จะได้รับสายควบคุมที่ถูกต้องทำไมไม่เก็บโต๊ะของผลการควบคุมใน CPU ตัวเอง .
  • แถวของตารางจะเป็นตัวแทนของแต่ละขั้นตอนเดียวของคำสั่งเดียว
  • แต่ละคอลัมน์ของตารางจะเป็นตัวแทนของสายการควบคุมที่เฉพาะเจาะจงและความคุ้มค่าที่ควรจะส่งไปในขั้นตอนของการเรียนการสอนนี้
  • โดยปริยายแต่ละคำสั่ง CPU ที่แท้จริงก็จะถูกแทนด้วยจำนวนแถวและแต่ละแถวจะมีการปรึกษาหา​​รือในการเปิดดำเนินการเรียนการสอนโดยรวม
  • จะกลับไป MIPS   LW $ t1, 100 ($ t0)ลำดับของสายการควบคุมบทขั้นตอนจะเป็นดังนี้
    ขั้นตอนที่AddrBusR / WIRIRwrALU1ALU2ALUopRegselRegInpRegwrเครื่องคอมพิวเตอร์PCwr
    1เครื่องคอมพิวเตอร์Rdbus1xxxxxxxxxx0xx0
    2xxRxx0IMMED$ t0ADDxxxx0xx0
    3ALURxx0xxxxxx$ t1dbus1incr1
  • แนวคิดของการจัดเก็บตารางค่าสายควบคุมภายใน CPU นี้เป็นที่รู้จักกันmicrocodingหรือไมโคร .
  • แต่ละแถวจะเรียกว่าmicroinstruction . ตารางทั้งหมดของ microinstructions เป็นที่รู้จักกันของ CPU ไมโคร .
  • ดังที่แสดงไว้ข้างต้นแต่ละ microinstruction จะตามด้วย microinstruction ต่อไป แต่เราสามารถเพิ่มความยืดหยุ่นดังต่อไปนี้
    • ให้แต่ละ microinstruction ตัวเลขจาก 0, 1, 2 และอื่น ๆ
    • ยังเพิ่มขึ้นสามคอลัมน์: ข้อมูลที่เฉพาะเจาะจงหรือมูลค่าการควบคุมภายใน CPU และตัวเลขสอง "microinstruction ถัดไป"
    • ถ้าหลังจากเสร็จสิ้นการ microinstruction ค่าข้อมูลที่ระบุเป็นจริงแล้วไปที่ microinstruction แรก
    • อื่นให้ไปที่หมายเลข microinstruction ที่สอง
  • นี้จะช่วยให้แต่ละ microinstruction ที่จะเลือกคำสั่งถัดไป ที่จะดำเนินการได้ที่จะห่วงไปข้างหลัง!
  • บางการใช้งานไมโครช่วยให้กระโดดไปที่การเรียนการสอนต่อไปที่เฉพาะเจาะจงขึ้นอยู่กับการตั้งค่าของค่า input เช่นสิ่งที่จำนวน opcode โดยเฉพาะในการลงทะเบียนการเรียนการสอน
    • นี่คือเทียบเท่าฮาร์ดแวร์ของงบสวิตช์ระดับสูงมูลค่ากรณีที่ -> ที่นี่กระโดด
  • ซีพียูส่วนใหญ่ใช้ microcoding มีข้อเสียใหญ่คือ
    • การจัดเก็บตารางในซีพียูต้องการหลายประตูตรรกะมากกว่าตรรกะควบคุมเทียบเท่าเดินสาย
  • แต่มีข้อได้เปรียบหลาย
    • microinstructions จะค่อนข้างอ่านได้โดยมนุษย์เพื่อให้การควบคุมลอจิกที่สามารถเข้าใจได้
    • CPU และเฟิร์มแวที่สามารถจำลองเพื่อให้ความผิดพลาดหรือข้อบกพร่องในเฟิร์มแวที่สามารถพบได้
    • ชุดคำสั่งในซีพียูจะถูกกำหนดโดยที่มีหน่วยย่อย (ALU ทะเบียน ฯลฯ ) และโดยค่าในตาราง ถ้าผู้ออกแบบต้องการที่จะเปลี่ยนหรือขยายชุดคำสั่งที่พวกเขาเพียงแค่ต้องเปลี่ยนค่าในตาราง
    • ข้อผิดพลาดตรรกะบางอย่างในการออกแบบซีพียูสามารถแก้ไขได้โดยการเขียนใหม่ microinstructions เช่นซีพียู Pentium ครอบครัวมีความสามารถในการเขียนตารางไมโครหลังจากที่การผลิต
    • โดยการเขียนเฟิร์มแวที่ใช้บ่อยคำแนะนำ CPU สามารถ speeded up อาจจะค่าใช้จ่ายของคำแนะนำอื่น ๆ

9.1   การดำเนินการลอจิก Microcode

  • ในความรู้สึกที่เรามีการใช้ซีพียูขนาดเล็กที่อยู่ภายในการควบคุมของ CPU จริง
  • นี่คือตัวอย่างของวิธีการที่จะดำเนินการ
    มะเดื่อ / microcodeimpl.gif
  • ที่รอบสัญญาณนาฬิกาแต่ละแถวเคาน์เตอร์เฟิร์มแวถือจำนวน microinstruction ต่อไปที่จะดำเนินการ (เช่นเดียวกับเครื่องคอมพิวเตอร์)
  • ตรรกะเลือกแถวอ่านตาราง, สารสกัดจากแถวและเปิด / ปิดการใช้งานของแต่ละสายการควบคุมการส่งออก
  • ถ้าเฟิร์มให้ IF .. อื่นหรือสวิตช์แบบการดำเนินงานแล้วเหล่านี้จะดำเนินการยัง
  • หมายเลขแถวเฟิร์มแวใหม่ยังเป็นส่งออกและการนี​​้จะถูกเก็บไว้กลับเข้ามาในเคาน์เตอร์แถวในการเตรียมการสำหรับนาฬิการอบต่อไป
  • ทั้งหมดที่กล่าวมาอาจดูเหมือนนามธรรมและลึกลับ ในการกวดวิชาที่เราจะดูตัวอย่างของซีพียูแบบเดินสายและยังมีการจำลองกราฟิกของ CPU microcoded

ไม่มีความคิดเห็น:

แสดงความคิดเห็น