ชุดคำสั่ง (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
รูปแบบคำสั่ง
- ความยาวคำสั่ง
- การจัดวางบิต
- จำนวนในการกําหนดโหมดของแอ็ดเดรส
- จำนวนโอเปอแรนด
- รีจิสเตอร์กับหน่วยความจำ
- จำนวนชุดของรีจิสเตอร์
- ขอบเขตของแอดเดรส
- ความละเอียดในการกําหนดแอ็ดเดรส
การกำหนด 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 นั่นเอง