☆◦˚ PiM ˚◦☆'s profile☆。+゚°•|| ดิ น แ ด น แ ห่...PhotosBlogListsMore Tools Help

Blog

    December 17

    Architecture Unit11,12

    บทที่ 11

    11.1 การกำหนดที่อยู่

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

                    การใช้ตัวถูกกระทำโดยตรง

                    เป็นรูปแบบการกำหนดที่อยู่แบบที่ง่ายที่สุด  คือตัวถูกกระทำนั้นปรากฏอนู่ในคำสั่งนั้นเอง

    OPERAND = A

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

                    ข้อดี : ไม่มีการอ้างอิงถึงหน่วยความจำนอกเหนือไปจากการอ่านคำสั่งเข้ามาในซีพียู (instruction fetch) จึงประหยัดวงรอบหรือความจำ cache ได้ 1 วงรอบ

                    ข้อด้อย : ขนาดของตัวเลขจะถูกจำกัดด้วยขนาดของเขตข้อมูลตำแหน่งที่อยู่ ซึ่งในคำสั่งส่วนใหญ่จะมีขนาดเล็ก เช่น 20 บิต

                    การอ้างอิงโดยตรง

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

    EA (Effective Address) = A

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

                    ข้อด้อย : ขอบเขตที่จำกัดในการอ้างอิงตำแหน่งข้อมูลในหน่วยความจำ

                    การอ้างอิงทางอ้อม

                    เป็นการใช้เขตข้อมูลตำแหน่งที่อยู่ในการอ้างอิงถึงตำแหน่ง word ในหน่วยความจำที่เก็บข้อมูลเอาไว้

    EA = (A)

                    เครื่องหมายวงเล็บในที่นี้ใช้ในความหมายว่า ค่าที่เก็บอยู่ในตำแหน่งที่อ้างอิงถึงโดย A

                    ข้อดี ถ้า word ในหน่วยความจำมีขนาด nบิต จะทำให้ผู้ใช้สามารถอ้างอิงข้อมูลได้ถึง 2n

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

                   

    การอ้างอิงผ่านรีจิเตอร์โดยตรง

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

    EA = R

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

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

                    การอ้างอิงผ่านรีจิสเตอร์ทางอ้อม

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

    EA = (R)

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

                    การใช้ Displacement

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

    EA = A+(R)

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

    Displacement แบ่งออกเป็น 3 ประเภท

    1. Relative addressing วิธีการนี้กำหนดให้รีจิสเตอร์ถูกนำมาอ้างโดยนัยนั้นเป็น program counter (PC) เมื่อนำตำแหน่งที่อยู่ของคำสั่งปัจจุบันมาบวกกับค่าในเขตข้อมูลตำแหน่งที่อยู่ ก็จะได้เป็นตำแหน่งที่อยู่ที่อ้างอิง โดยทั่วไปเขตข้อมูลตำแหน่งที่อยู่จะถูกกำหนดให้เป็นเลขทูคอมพลีเมนต์ค่าตำแหน่งที่อ้างอิงถึง จึงมีความสัมพันธ์กับตำแหน่งของคำสั่งในปัจจุบัน วิธีการนี้จะช่วยประหยัดพื้นที่ในการอ้างอิงตำแหน่งที่อยู่ได้เป็นอย่างดี

    2. Base-register addressing รีจิสเตอร์ตัวที่ถูกอ้างอิงจะเก็บตำแหน่งที่อยู่ในหน่วยความจำ ส่วนเขตข้อมูลตำแหน่งที่อยู่จะเก็บค่า displacement เอาไว้ (ปกติจะอยู่ในรูปเลขจำนวนเต็มแบบไม่มีเครื่องหมาย) รีจิสเตอร์อาจถูกอ้างอิงโดยตรงหรือโดยนัยก็ได้ วิธีนี้เหมาะสำหรับการจัดการหน่วยความจำแบบเซ็กเมนเตชั่น

    3. Indexing  มีวิธีการทำงานดังนี้ เขตข้อมูลตำแหน่งที่อยู่จะอ้างอิงตำแหน่งในหน่วยความจำหลัก และรีจิสเตอร์ที่อ้างอิงถึงจะเก็บค่า displacement addressing ข้อแตกต่างของทั้งสองวิธีนี้ คือ 1. เนื่องจากเขตข้อมูลตำแหน่งที่อยู่ใช้อ้างอิงในหน่วยความจำหลัก จึงทำให้เขตข้อมูลนี้จำเป็นต้องมีจำนวนบิตมากกว่าเขตข้อมูลตำแหน่งที่อยู่ที่ใช้งานในวิธี base-register และ 2. วิธีการ indexing ยังมีวิธีอื่นที่ได้รับการปรับปรุงให้ดีขึ้นกว่าแบบที่ใช้งานใน base-register อย่างไรก็ตามวิธีการคำนวณหาตำแหน่งที่อยู่ที่แท้จริงของทั้งสองวิธีนี้เหมือนกัน (EA = (r)+A) และรีจิสเตอร์ที่นำมาอาจใช้เป็นการระบุโดยตรง หรือระบุโดยนัยก็ได้

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

    การใช้สแต็ก

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

    11.2 ภาวะการกำหนดที่อยู่ใน Pentium และ PowerPC

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

    ภาวะการกำหนดที่อยู่ของซีพียู PowerPC

    เป็นสถาปัตยกรรมแบบ RISC (Reduced Instruction Set Computer) ที่มีความแตกต่างจากสถาปัตยกรรมแบบ CISC (Complex Instruction Set Computer) อย่าง Pentium ตรงที่ซีพียู PowerPC ใช้ภาวะการกำหนดที่อยู่แบบตรงไปตรงมา

    สถาปัตยกรรมแบบ Load/Store

    ซีพียู PowerPC สนับสนุนภาวะ การกำหนดที่อยู่สองแบบ คือ คำสั่งสำหรับอ่านข้อมูล และการบันทึกข้อมูล (Load/Store)  เป็นประโยชน์มากต่อโปรแกรมแบบวนซ้ำที่ทำงานกับอาร์เรย์

    Branch addressing

    Branch addressing หมายถึง การกำหนดตำแหน่งที่อยู่ของคำสั่งต่อไปที่จะนำมาประมวลผล ซึ่งจำเป็นว่าจะต้องเป็นคำสั่งในลำดับต่อจากคำสั่งที่กำลังประมวลผลอยู่ในปัจจุบัน Branch addressing สำหรับซีพียู PowerPC มีอยู่สามวิธี วิธีแรกเรียกว่า absolute addressing มักจะนำมาใช้งานร่วมกับคำสั่ง unconditional branch คือ จะกำหนดตำแหน่งที่อยู่ของคำสั่งต่อไปให้ในทุกกรณี ตำแหน่งของคำสั่งจะนำมาจากค่าที่เก็บไว้โดยตรงในคำสั่งเครื่องขนาด 24 บิต ซึ่งจะถูกขยายให้เป็น 32 บิต ด้วยการเพิ่ม 00 เข้าไปต่อท้ายที่ตำแหน่งสุดท้าย จากนั้นจะทำ sign extending คือ การนำบิตเครื่องหมายของข้อมูล 24 บิตนั้นมาเติมเป็นบิตส่วนหัวให้ครบ 32 บิต วิธีที่ 2 คือ relative addressing ค่าที่เก็บไว้โดยตรงในคำสั่งเครื่องขนาด 24 บิต หรือ 16 บิต จะถูกนำมาขยายเป็น 32 บิต ด้วยวิธีเดิม ค่าที่คำนวณได้จะถูกนำมาบวกเข้ากับรีจิสเตอร์ program counter เพื่อกำหนดตำแหน่งคำสั่งที่มีความสัมพันธ์กับตำแหน่งคำสั่งในปัจจุบัน วิธีที่ 3 คือ indirect addressing จะนำตำแหน่งของคำสั่งต่อไปมาจาก link register หรือ count register รีจิสเตอร์เหล่านี้สามารถนำมาใช้เป็นตัวควบคุมการโปรแกรมวนซ้ำได้

    คำสั่งทางคณิตศาสตร์

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

    บทที่12

    12.1  การจัดองค์ประกอบของโปรเซสเซอร์

    เริ่มด้วยการกำหนดความต้องการใช้งาน  หรือสิ่งที่โปรเซสเซอร์จะต้องทำ

    ·       ดึงคำสั่งเข้ามา (fetch instruction) นั่นคือการที่ซีพียูอ่านคำสั่งมาจากหน่วยความจำหลักเข้ามาเก็บไว้ภายในตัวซีพียู

    ·       แปลความหมายของคำสั่ง (Interpret instruction)  คำสั่งเครื่องจะถูกแปลความหมายเพื่อจะได้ทราบว่าคำสั่งนั้นต้องการให้ทำงานอย่างใด

    ·       ดึงข้อมูล(fetch data) การประมวลผลคำสั่งเครื่องคำสั่งหนึ่ง อาจจำเป็นต้องอ่านข้อมูลจากหน่อยความจำหลัก หรืออุปกรณ์ไอโอเข้ามาด้วย

    ·       ประมวลผลข้อมูล(process data) การประมวลผลคำสั่งอาจเกี่ยวข้องกับการทำงานทางคณิตศาสตร์  หรือตรรกะกับข้อมูล

    ·       การบันทึกข้อมูล (write data) ผลการประมวลข้อมูล อาจต้องการให้บันทึกผลลัพธ์ที่ได้ไว้ในหน่วยความจำหลักหรืออุปกรณ์ไอโอ

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

                ส่วนประกอบหลักของซีพียูนั้นประกอบไปด้วย หน่วยเอแอลยู (Arithmetic and logic unit)

    เป็นหน่อยที่ทำการประมวลผลให้เกิดขึ้น  หน่วยควบคุม (Control unit) ทำหน้าที่ควบคุมการเคลื่อนย้ายข้อมูลและคำสั่งเครื่องเข้า และออกจากซีพียูและควบคุมการทำงานของหน่วยเอแอลยู

    12.2 การจัดองค์ประกอบของรีจิสเตอร์

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

    ·       รีจิสเตอร์ที่ผู้ใช้มองเห็นได้ (user-visible registers) รีจิสเตอร์ในกลุ่มนี้อนุญาตให้คำสั่งในโปรแกรมสามารถลการอ้างอิงข้อมูลในหน่วยความจำหลัก  โดยนำรีจิสเตอร์มาใช้งานแทน

    ·       รีจิสเตอร์สำหรับการควบคุมและรายงานสถานการณ์ทำงาน (control and status registers) รีจิสเตอร์ในกลุ่มนี้ถูกนำไปใช้โดยหน่วยควบคุมเพื่อควบคุมการทำงานของซีพียู และถูกใช้โดยคำสั่งพิเศษของระบบปฏิบัติการในการควบคุมการประมวลผลของโปรแกรม

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

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

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

    ·       รีจิสเตอร์สำหรับเก็บตำแหน่งที่อยู่ อาจเป็นรีจิสเตอร์สำหรับใช้งานทั่วไป หรือเป็นรีจิสเตอร์ที่กำหนดให้ใช้ในการอ้างอิงเกี่ยวกับตำแหน่งที่อยู่เท่านั้น

    ตัวชี้ตำแหน่งเซ็กเมนต์ ในเครื่องที่ใช้วิธีกำหนดตำแหน่งที่อยู่แบบ segmented addressing อาจมีการใช้รีจิสเตอร์มากกว่าหนึ่งตัว

    ตัวชี้ตำแหน่งดรรชนี  รีจิสเตอร์ในกลุ่มนี้ใช้สำหรับการกำหนดตำแหน่งที่อยู่แบบ indexed addressing  และอาจเป็นชนิด autoindexing ก็ได้

    ตัวชี้ตำแหน่งในสแต็ก ถ้าคอมพิวเตอร์นั้นใช้ระบบ user-visible stack addressing สแต็กที่นำมาใช้งานจะเก็บอยู่ในหน่วยความจำ และจะมีรีจิสเตอร์ตัวหนึ่งที่ใช้ในการชี้ตำแหน่งข้อมูลตัวบนสุดในสแต็กนั้น วิธีการนี้ช่วยให้สามารถอ้างอิงตำแหน่งข้อมูลโดยนัยได้ นั่นคือการใช้คำสั่ง PUSH , POP และคำสั่งอื่นๆ

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

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

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

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

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

    ·       Program counter (PC) เป็นรีจิสเตอร์ที่เก็บที่อยู่ของคำสั่งที่จะถูกประมวลผลในลำดับต่อไป

    ·       Instruction register (IR) เป็นรีจิสเตอร์ที่ใช้เก็บคำสั่งเครื่องที่พึ่งจะถูกอ่านเข้ามาในซีพียู

    ·       Memory addressing register (MAR) ใช้เก็บตำแหน่งที่อยู่อ้างอิงในหน่วยความจำหลัก

    ·       Memory buffer register (MBR) ใช้เก็บข้อมูล (ขนาด1word) ล่าสุดที่ถูกอ่านเข้ามาในซีพียู หรือใช้เก็บข้อมูลเพื่อเตรียมบันทึกลงในหน่วยความจำหลัก

    การออกแบบจะต้องกล่าวถึงรีจิสเตอร์ตัวหนึ่ง หรือกลุ่มหนึ่งที่เรียกว่า program status word (PSW) ซึ่งใช้เก็บข้อมูลสถานการณ์ทำงานขิงซีพียู

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

    ·       Zero บิตนี้จะมีค่าเป็น “1” ถ้าผลลัพธ์ที่เกิดขึ้นจากการประมวลผลคำสั่งทางคณิตศาสตร์ครั้งล่าสุดมีค่าเป็น “0”

    ·       Carry บิตนี้จะมีค่าเป็น “1”ผลลัพธ์ที่เกิดขึ้นจากการประมวลผลคำสั่งทางคณิตศาสตร์ครั้งล่าสุดเกิดการยืมเลขจากหลักที่สูงกว่า หรือมีการทดเลขบิตที่มีค่าเกินบิตสูงสุด

    ·       Equal บิตนี้จะมีค่าเป็น “1” ถ้าเปรียบเทียบทางตรรกะมีค่าเท่ากัน

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

    ·       Interrupt enable/disable ใช้ในการสั่งให้กระบวนการอินเทอร์รัพท์ทำงานหรือหยุดทำงาน

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

        12.3 วงรอบคำสั่ง

    ·       การดึงคำสั่ง (Fetch) เป็นการอ่านคำสั่งที่จะถูกประมวลผลในลำดับต่อไปจากหน่วยความจำหลักเข้ามาไว้ในซีพียู

    ·       การประมวลผล (Execute) เป็นการแปลความหมายรหัสดำเนินงาน และทำงานตามที่ต้องการ

    ·       อินเทอร์รัพท์ (Intrrupt) ถ้าอนุญาตให้อินเทอร์รัพท์และมีอินเทอร์เกิดขึ้นซีพียูจะบักทึกสถานการณ์ทำงานของโปรแกรมปัจจุบัน และให้บริการแก่อินเทอร์รัพท์ที่ถูกเรียกใช้นั้น

    วงรอบอินไดเร็ก

    ถ้าเป็นการอ้างอิงแบบ indirect addressing ด้วยแล้วจะทำให้มีการอ่านข้อมูลในหน่วยความจำเพิ่มขึ้นอีกหนึ่งครั้งเสมอ

    12.4 การทำคำสั่งแบบไปป์ไลน์

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

    ระยะเวลาการประมวลผล มักจะนานกว่าระยะเวลาที่ใช้ในการดึงคำสั่งมาจากหน่วยความจำหลัก

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

    การแบ่งลำดับขั้นตอนการประมวลผลคำสั่งเครื่อง

    ·       Fetch instruction(IF) การอ่านคำสั่งเครื่องในลำดับต่อไปเข้ามาเก็บไว้ในบัฟเฟอร์

    ·       Decode instruction(DI) การแปลความหมายรหัสดำเนินงาน และกำหนดค่าตัวถูกกระทำ

    ·       Calculate operands(CO) การคำนวณตำแหน่งที่แท้จริง สำหรับตัวถูกกระทำแต่ละตัว ซึ่งอาจจะเกี่ยวข้องกับ displacement ,register indirect ,indirect หรือกำหนดค่าตำแหน่งที่อยู่แบบอื่นๆ

    ·       Fetch operands(FO) ทำการดึงค่าตัวถูกกระทำแต่ละตัวจากหน่วยความจำหลักเข้ามาในซีพียู ตัวถูกกระทำที่เก็บอยู่รีจิสเตอร์อยู่แล้วไม่จำเป็นต้องถูกอ่านเข้ามาใหม่

    ·       Execute instruction(EI) ทำการประมวลผลคำสั่ง และอาจมีการบันทึกผลลัพธ์ไว้ในตำแหน่งตัวถูกกระทำที่กำหนดไว้ในคำสั่งเครื่องนั้นๆ

    Write operand (WO) จัดการบันทึกผลลัพธ์ไว้ในหน่วยความจำ

    Architecture Unit1,9

    บทที่ 1

    1.1  ออร์กาไนเซชันและสถาปัตยกรรม นิยามแบบเป็นสองส่วน คือ

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

            -   ออร์กาไนเซชันคอมพิวเตอร์(computer organization)  หมายถึง  ส่วนประกอบแต่ละส่วนของเครื่องคอมพิวเตอร์ และการเชื่อมต่อเข้ากับส่วนประกอบส่วนอื่นๆ  ซึ่งจะเชื่อมต่อเข้าด้วยกัน  โดยจะต้องคำนึงถึงข้อกำหนดทางสถาปัตยกรรมของคอมพิวเตอร์

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

    1.2  โครงสร้างและหน้าที่การทำงาน

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

            ผู้ออกแบบจะต้องรับผิดชอบในสองเรื่องคือ

    -          โครงสร้าง : วิชีการที่อุปกรณ์ต่างๆเชื่อมต่อเข้าด้วยกัน

    -          หน้าที่  :  การทำงานของส่วนประกอบแต่ละส่วนในฐานะเป็นส่วนหนึ่งของโครงสร้าง                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     

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

    -          การเริ่มต้นจากระดับล่างสุด ไล่ขึ้นมาจนกระทั้งได้คำจำกัดความที่สมบูรณ์ที่ระดับบนสุด

    -          การเริ่มมองจากระดับบนสุดแล้วแยกออกมาที่ส่วนประกอบแต่ละส่วนจนครบถ้วน

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

    หน้าที่การทำงานมีส่วนประกอบ 4 ส่วนคือ

    ·        การประมวลผลข้องมูล(Data processing facility)

    ·        ส่วนเก็บบันทึกข้อมูล(Data storage facility)

    ·        ส่วนการเคลื่อนย้ายข้อมูล(Data movement apparatus)

    ·        ส่วนการควบคุม(Control mechanism)

           คอมคอมพิวเตอร์ต้องมีความสามารถใน

    -          การประมวลผลข้อมูล  ข้อมูลอาจอยู่ในหลายรูปแบบทำให้ขอบเขตการประมวลผลข้อมูลนั้นกว้างขวางไปด้วย

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

    -          เคลื่อนย้ายข้อมูล จากภายในเครื่องคอม ไปยังหรือมาจากอุปกรณ์อื่นได้ สิ่งแวดล้อมในการทำงานของเครื่องคอมประกอบด้วยอุปกรณ์ที่ทำหน้าที่เป็นทั้งแหล่งที่มาของข้อมูลหรือแหล่งจัดเก็บข้อมูล เมื่อข้อมูลถูกนำมาจากหรือส่งไปที่อุปกรณ์ที่เชื่อมโยงอยู่กับเครื่องคอมโดยตรง กระบวนการนี้จะถูกเรียกว่า ไอโอ(Input/Output or I/O)  ส่วนอุปกรณ์จะเรียกว่า อุปกรณ์ต่อพ่วง(peripherals)เมื่อข้อมูลถูกเคลื่อนย้ายในระยะทางไกลจากอุปกรณ์ที่อยู่ไกลออกไปจะเรียกว่า การสื่อสาร(data communication)

    -          การควบคุม หน้าที่การทำงานทั้งสามอย่างนี้ การควบคุมมักจะถูกกระทำผ่านผู้ใช้งานเครื่องคอมโดยใช้คำสั่ง(instruction) ที่ถูกออกแบบมาเฉพาะภายในเครื่องคอม หน่วยควบคุมการทำงาน(control unit) จะจัดการบริหารการใช้งานทรัพยากรต่างๆ

    โครงสร้างองค์ประกอบที่สำคัญ 4 อย่างคือ

    ·                    หน่วยประมวลผลกลาง(CPU:Central Processing Unit)

    ·                    หน่วยความจำหลัก(main memory)

    ·                    ไอโอ(I/O)

    ·                    การเชื่อมต่อภายในเครื่องคอม(system interconnection)

    อุปกรณ์ที่น่าสงใจมากที่สุดและมีความสลับซับซ้อนมากที่สุดคือ หน่วยประมวลผลกลางประกอบด้วยส่วนประกอบดังนี้

    ·                    ส่วนควบคุม(Control unit) : ทำหน้าที่ควบคุมการทำงานของซีพียู

    ·                    ส่วนเอแอลยู(ALU:Arithmetic and Logic unit) : ทำหน้าที่ประมวลผลคำสั่งคณิตศาสตร์และคำสั่งทางตรรกะ

    ·                    รีจิสเตอร์(registers): เป็นหน่วยบันทึกข้อมูลภายในตัวซีพียู

    ·                    ส่วนเชื่อมต่อภายในซีพียู(CPU interconnection): กลไกที่ช่วยให้ส่วนประกอบทั้งสามส่วนสามารถสื่อสารระหว่างกันได้

    เทคนิคที่นิยมใช้มากที่สุดคือ การใช้ไมโครโปรแกรม  โดยสารสำคัญแล้วหน่วยควบคุมที่ใช้ไมโครโปรแกรมนั้นก็คือ การประมวลผลคำสั่งย่อย(microinstruction)

    1.3  ทำไมจึงต้องศึกษาเรื่องออร์กาไนเซชันและสถาปัตยกรรม

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

    1.4  แนวทางการนำเสนอของหนังสือเล่มนี้

                1.  นำเสนอภาพรวมของออร์กาไนเซชันคอม และสถาปัตยกรรมคอมและอธิบายหัวข้อที่ใช้ในการพิจารณาในการออกแบบเครื่องคอม

                  2.  กล่าวถึงส่วนประกอบหลักของคอม และการเชื่อมโยงระหว่างกันทั้งระหว่างอุปกรณ์ด้วยกันเองละกับอุปกรณ์ภายนอน

                  3.  อธิบายสถาปัตยกรรมภายใน และออร์กาไนเซชันของหน่วยประมวลผล
     

    บทที่ 9  วิธีการคำนวณทางคณิตศาสตร์ของเครื่องคอมพิวเตอร์

    ประเด็นสำคัญ

    คือ วิธีการหรือรูปแบบตัวแทนของข้อมูลตัวเลขและอัลกอริทึมสำหรับการคำนวณทางคณิตศาสตร์เบื้องต้น  โปรเซสเซอร์มาตรฐานส่วนมากใช้ IEEE 754

     

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

     

    9.2  รูปแบบตัวแทนของเลขจำนวนเต็ม

    การประมวลผลนั้น  เครื่องหมายติดลบและจุดทศนิยมไม่ได้ประโยชน์แต่อย่างใดดังนั้นจึงใช้เลขฐาน 2  คือ  0  และ  1 

    รูปแบบที่มีเครื่องหมายกำกับ  บิตที่อยู่ซ้ายสุด  ถ้าเป็น 0  แสดงว่าเป็น +   1  แสดงว่าเป็น

    แต่มีปัญหาเกิดขึ้น  จึงไม่ได้รับความนิยม

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

                    การแปลงระหว่างข้อมูลที่มีจำนวนบิตไม่เท่ากัน

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

                    รูแบบตัวแทนเลข Fixed-point เลขจำนวนจริงที่บอกไปนั้น

     

    เน็กเกชัน  คือการสลับบิต

    ในทูคอมพรีเมนต์มี 2 ขั้นตอนดังนี้ 

    1. เปลี่ยนบิตให้เป็นบิตตรงกันข้าม

    2.  ให้บวก 1 ที่บิตขวาสุด

     

    การบวกและการลบ  บวกต