วันอาทิตย์ที่ 30 พฤศจิกายน พ.ศ. 2557

ชุดคำสั่ง (Instruction Sets)

ชุดคำสั่ง (Instruction Sets)


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

คุณสมบัติพื้นฐานของคำสั่ง
           ชุดคำสั่ง (Instruction Sets) หมายถึงชุดของคําสั่งที่ Processor Execute เพื่อดำเนินการตามที่โปรแกรมเมอรต้องการ อาจเรียกชุดคำสั่งว่าคําสั่งเครื่อง (machine instructions) หรือคําสั่งคอมพิวเตอร์(computer  instructions) ก็ได  ในแตละชุดคําสั่งอาจจะมีคําสั่งที่หลากหลายประกอบอยู่เช่น คำสั่งสำหรับการบวก ซีพียู จะต้องมีคำสั่งในการโหลดขอมูลจากรีจิสเตอร์ลงหน่วยความจำแล้วเรียกใชคําสั่งสําหรับการบวก หลังจากนั้นจะมีคําสั่งเพื่อเก็บคาผลลัพธ์กลับรีจิสเตอร์อีกครั้ง
  •    ชุดคำสั่งของแต่ละโปรเซสเซอรจะมีความแตกตางกัน
  •   สิ่งที่แตกต่างกันอาจจะเป็นขนาดของคำสั่ง ประเภทของ opration ประเภทของ operand หรือประเภทของผลลพธ์ก็ได
  •    ชุดคำสั่งที่แตกต่างกันนี้อาจจะเกิดจากโครงสรางภาษาชั้นสูงที่โปรแกรมเมอรใชงาน เชน ภาษา C Pascal หรือ Ada เปนตน 
  •   โปรแกรมภาษาชั้นสูงเหล่านี้จะถูกคอมไพล์ (compile) ดวย คอมไพเลอรหรือตัวแปรภาษานั้นใหเปนภาษาเครื่องเพื่อทํางานตอไป
  •     ต้องมีการ compile ใหมใหตรงกับโปรเซสเซอรที่ใช้งาน
  •     การคอมไพล์ใหม   เปนการเปลี่ยนภาษาชั้นสูงใหเปนภาษาเครื่องตามชุดคำสั่งของซีพียูนั้นเอง

วงรอบคำสั่ง
            
  •  การทำงานของคอมพิวเตอร์ คือการที่ Processor Execute คำสั่งใน โปรแกรมตามลําดับเรื่อยไปตั้งแต่ต้นจนจบ
  •  รูปแบบคำสั่งที่ง่ายที่สุดจะมี 2 ขั้นตอนคือการที่โปรเซสเซอร์อ่านหรือเฟ็ตคำสั่ง (fetches) จากหน่วยความจำครั้งละ 1 คําสั่งหลังจากนั้น จะ execute ตามคำสั่งนั้น


ส่วนประกอบคำสั่งเครื่อง
  •     Operation code : กําหนด Operation ที่จะกระทำ(เชน ADD, I/O) operation ถูกกําหนดดวยเลขฐานสองทีเรียกว่า operation code หรือ opcode
  •     Source operand reference : กําหนดส่วนอ้างอิงของ operand ที่่ใสเขามาสําหรับ opration 
  •     Result operand reference : อางอิงถึงผลลัพธ์จากOperation
  •    Next instruction reference : บอกซีพียูว่าจะไปอานคำสั่งต่อไปไดจากไหนหลังจาก executeคำสั่งนั้นเสร็จสมบูรณ์แล้ว

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

  •    Data processing : คําสั่งทางคณิตศาสตร์และตรรกะ
  •    Data storage : คําสั่งจัดการหนวยความจำ
  •    Data movement : คําสั่งจัดการอินพุต/เอาตพุต 
  •    Control : คําสั่งตรวจสอบเงื่อนไขและกระโดดไปทํางาน         

 จำนวน Address Address
  •  โดยทั่วไปการกลาวถึงสถาปตยกรรมคอมพิวเตอรจะกล่าวถึงจำนวน Address ปจจุบันมีความสำคัญน้อยกว่าการออกแบบ CPU
  •  จำนวน Address ของระบบมีผลตอวงรอบการทำงานของคำสั่งเครื่อง
  •   ยิ่งมีจำนวน Address มากก็จะยิ่งทําใหวงรอบการทำงานน้อยลง ทำใหทํางานไดเร็วขึ้น          


         
่ การออกแบบชุดคำสั่ง
          พื้นฐานการออกแบบชุดคำสั่ง

  •   Operation repertoire : จํานวน Operation ที่มีใหเลือกใชรวมทั้งความซับซ้อนของ Operation ที่ควรเปน
  •   Data type : ความหลากหลายของประเภทของข้อมูลที่ทำ Operation
  •   Instruction format : ความยาวของคําสั่ง (เปนบิต) จํานวน address ขนาดของฟิลดและอื่น ๆ
  •   Register : จํานวนรีจิสเตอรที่คำสั่งสามารถอางอิงและใชประโยชนได
  •   Addressing : การกําหนดโหมดของaddress สําหรับoperand

           
ประเภท  Operation
       พื้นฐานของ Operation สามารถแบงเปนกลุม ๆ ไดคือ

  •    Operation ทางดานการถายโอนข  อมูล (Data transfer)
  •   Operation ทางดานคณิตศาสตร (Arithmetic) 
  •   Operation ทางดานตรรกะ (Logical)
  •   Operation ทางดานการแปลงคา (Conversion)
  •   Operation ทางดานอุปกรณอินพุต/เอาตพตุ (I/O)
  •   Operationทางดานการควบคุมระบบ (System control)

           
ประเภท Operand
             ประเภทของ Operand มีดังนี้

  •        address
  •       number
  •       character
  •       logical  


ประเภทขอมูล  Pentium

  •        General
  •       Integer
  •       Ordinal
  •       Unpacked binary coded decimal (BCD)
  •       Packed BCD
  •       Near pointer
  •       Bit field
  •       Byte string
  •       Floating point


ประเภทขอมูลของ  PowerPC

  •        Unsigned byte
  •       Unsigned Halfword
  •       Signed Halfword
  •       Unsigned Word
  •       Signed Word
  •       Unsigned Doubleword
  •       Byte String


 รูปแบบคำสั่ง

  1.      ความยาวคำสั่ง
  2.      การจัดวางบิต


  •  จำนวนในการกําหนดโหมดของแอ็ดเดรส
  • จำนวนโอเปอแรนด
  •  รีจิสเตอร์กับหน่วยความจำ
  •  จำนวนชุดของรีจิสเตอร์
  •   ขอบเขตของแอดเดรส
  •  ความละเอียดในการกําหนดแอ็ดเดรส

           
การกำหนด Address Mode

  •    การกำหนด  address แบบให้ค่าโดยตรง  (Immediate Addressing)
  •   การกำหนด address โดยตรง (Direct Addressing)
  •   การกำหนด address ทางออม (Indirect Addressing)
  •   การกำหนด  address ผ่านรีจิสเตอร์โดยตรง(Register Direct Addressing)
  •   การกำหนด  address ผ่านรีจิสเตอรทางออม (Register Indirect Addressing)
  •   การกำหนด   address แบบแทนที (Displacement หรือ Indexed Addressing)
  •   การกำหนด  address แบบสัมพันธ (Relative Addressing)
  •   การใชสแต็ก(Stack)


 Immediate Addressing
         LOAD X, #1000                      เปนการโหลดขอมูล 1000 ไวที่ตัวแปร X 



 Direct Addressing
         LOAD X, 1000                      เปนการโหลดขอมูลที่ address 1000 ไวที่ตัวแปร X  (ถาที่ address     1000 มีค่า10 ดังนั้น X จะมีคาเท่ากับ 10)

Indirect Addressing
        LOAD X, (1000)                เปนการโหลดขอมูลที่อยู่บน address ที่เก็บอยูใน address 100 (ถาที่ address 1000 มีค่า 1002 ดังนั้นข้อมูลที่แท้จริงอยู่ที่ address 1002 ในที่นี้คือ 20 ดังนั้น X จะมีคาเทากับ 20)

 Register Direct Addressing
       LOAD X, R1                         เปนการโหลดขอมูลจากรีจิสเตอร์ R1 ไวที่ตัวแปร  X  (ถาทีรีจิสเตอร์ R1 มีคา 30 ดังนั้นX จะมีคาเทากับ 30)


Register Indirect Addressing 
     LOAD X, (R1)                              เปนการโหลดขอมูลที่อยูใน Address ที่เก็บอยูในรีจิสเตอร์ R1       ไวที่ตัวแปร X  (ถาที่รีจิสเตอร R1 เก็บค่า1001 และที่Address 1001 ของหนวยความจํามีค่า  40 ดังนั้น X จะมีคาเทากับ 40)

  
 Displacement หรือ  Indexed Addressing
        LOAD X, (R1)+Constant                 เปนการโหลดขอมูลจากAddressบน  หน่วยความจำที่เกิด          จากค่าในรีจิสเตอรบวกกับคาคงที่ ไวที่ตัวแปร X  (ถาในรีจิสเตอรมีคา 1000, คาคงที่เทากับ 2 และคา      ที่ Address 1002 มีค่าเทากับ 20     ดังนั้นค่า X จะเทากับ 20)

Relative Addressing
        LOAD X, PC+Constant                  เปนการโหลดขอมูลจากaddressบนหนวยความจําที่ เกิดจาก   ค่าในโปรแกรมเคาเตอรบวกกับค่าคงที่ ไวที่ตัวแปร X (ถาในโปรแกรมเคาเตอร์มีค่า 1000, คาคงที่เท่ากับ 1 และคาที่address 1001 มีคาเทากับ  40 ดังนั้นค่าX จะเทากับ 40)

Stack
         LOAD X, Stack                                เปนการโหลดขอมูลที่อยู่บนสุดของ Stack ไวที่ตัวแปร X       (ถาขอมูลทีอยู่บนสุดของ Stack  มีค่า 1000 คา X จะมีคาเทากับ 1000 นั่นเอง

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

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