ชุดคำสั่ง

Report
บทที่ 4
ชุดคำสั่ ง
(Instruction Sets)
ชุดคำสั่ ง (Instruction Sets)






โปรเซสเซอร์ ใช้ คำสั่งได้ ตำมคำสั่งที่ถูกบรรจุลงใน ALU
คำสั่งหลำย ๆ คำสั่งที่บรรจุลงใน ALU นีเ้ รี ยกว่ ำชุดคำสั่งของเครื่ อง
(Machine Instructions Sets)
ชุดคำสั่งนีท้ ำให้ ผ้ ูออกแบบระบบคอมพิวเตอร์ และโปรแกรมเมอร์ อยู่ใน
ขอบเขต เดียวกัน
ผู้ออกแบบระบบมองว่ ำชุดคำสั่งประกอบด้ วยฟั งก์ ชันพืน้ ฐำนสำหรั บกำร
ทำงำนของคอมพิวเตอร์
อำจกล่ ำวได้ ว่ำกำรสร้ ำงโปรเซสเซอร์ กค็ ือกำรสร้ ำงชุดคำสั่งนั่ นเอง
โปรแกรมเมอร์ จะต้ องพิจำรณำถึงโครงสร้ ำงของรี จสิ เตอร์ และ
หน่ วยควำมจำ ประเภทข้ อมูลในเครื่ อง และฟั งก์ ชันของ ALU เพื่อเขียน
โปรแกรมสั่งให้ ซีพียูทำงำน
คุณสมบัตพิ นื้ ฐำนของคำสั่ ง
ชุดคำสัง่ (Instruction Sets) หมำยถึงชุดของคำสัง่ ที่
โปรเซสเซอร์ เอ็กซิคิวต์เพื่อดำเนินกำรตำมที่โปรแกรมเมอร์ ต้องกำร
อำจเรี ยกชุดคำสัง่ ว่ำ “คำสัง่ เครื่ อง” (machine instructions) หรื อ
“คำสัง่ คอมพิวเตอร์ ” (computer instructions) ก็ได้ ในแต่ละ
ชุดคำสัง่ อำจจะมีคำสัง่ ที่หลำกหลำยประกอบอยู่ เช่น คำสัง่ สำหรับ
กำรบวก ซีพียจู ะต้ องมีคำสัง่ ในกำรโหลดข้ อมูลจำกรี จิสเตอร์ ลง
หน่วยควำมจำ แล้ วเรี ยกใช้ คำสัง่ สำหรับกำรบวก หลังจำกนันจะมี
้
คำสัง่ เพื่อเก็บค่ำผลลัพธ์กลับรี จิสเตอร์ อีกครัง้
คุณสมบัตพิ นื้ ฐำนของคำสั่ ง






ชุดคำสัง่ ของแต่ละโปรเซสเซอร์ จะมีควำมแตกต่ำงกัน
สิง่ ที่แตกต่ำงกันอำจจะเป็ นขนำดของคำสัง่ ประเภทของโอเปอเรชัน
ประเภทของโอเปอแรนด์ หรื อประเภทของผลลัพธ์ก็ได้
ชุดคำสัง่ ที่แตกต่ำงกันนี ้อำจจะเกิดจำกโครงสร้ ำงภำษำชันสู
้ งที่
โปรแกรมเมอร์ ใช้ งำน เช่น ภำษำ C Pascal หรื อ Ada เป็ นต้ น
โปรแกรมภำษำชันสู
้ งเหล่ำนี ้จะถูกคอมไพล์ (compile) ด้ วย
คอมไพเลอร์ หรื อตัวแปรภำษำนันให้
้ เป็ นภำษำเครื่ องเพื่อทำงำนต่อไป
ต้ องมีกำรคอมไพล์ใหม่ให้ ตรงกับโปรเซสเซอร์ ที่ใช้ งำน
กำรคอมไพล์ใหม่เป็ นกำรเปลี่ยนภำษำชันสู
้ งให้ เป็ นภำษำเครื่ องตำม
ชุดคำสัง่ ของซีพียนู นั่ เอง
วงรอบคำสั่ ง


กำรทำงำนของคอมพิวเตอร์ คือกำรที่โปรเซสเซอร์ เอ็กซิคิวต์
คำสั่งในโปรแกรมตำมลำดับเรื่อยไปตัง้ แต่ ต้นจนจบ
รูปแบบคำสั่งที่ง่ำยที่สุดจะมี 2 ขัน้ ตอนคือกำรที่โปรเซสเซอร์ อ่ำน
หรือเฟ็ ตช์ คำสั่ง (fetches) จำกหน่ วยควำมจำครัง้ ละ 1 คำสั่ง
หลังจำกนัน้ จะเอ็กซิคิวต์ (execute) ตำมคำสั่งนัน้
วงรอบคำสั่ ง
ไดอะแกรมของวงรอบคำสัง่
วงรอบคำสั่ ง







Instruction Address Calculation (IAC) หำตำแหน่งที่เก็บคำสัง่ ต่อไป
ที่โปรเซสเซอร์ จะอ่ำนเข้ ำมำ
Instruction Fetch (IF) อ่ำนคำสัง่ จำกตำแหน่งบนหน่วยควำมจำลงใน
โปรเซสเซอร์
Instruction Operation Decoding (IOD) วิเครำะห์คำสัง่ เพื่อพิจำรณำ
ประเภทของโอเปอเรชัน่ ที่กระทำและที่จะใช้
Operand Address Calculation (OAC) หำตำแหน่งของโอเปอเรชัน
Operation Fetch (OF) อ่ำนโอเปอร์ แรนด์จำกหน่วยควำมจำหรือ
อุปกรณ์อินพุตเอำต์พตุ
Data Operation (DO) นำข้ อมูลกระทำตำมโอเปอเรชัน่
Operand Store (OS) เขียนผลลัพธ์ลงในหน่วยควำมจำ
ส่ วนประกอบคำสั่งเครื่อง




Operation code : กำหนดโอเปอเรชันที่จะกระทำ (เช่น ADD, I/O)
โอเปอเรชันถูกกำหนดด้ วยเลขฐำนสองที่เรี ยกว่ำ operation code
หรื อ opcode
Source operand reference : กำหนดส่วนอ้ ำงอิงของโอเปอแรนด์ที่ใส่
เข้ ำมำสำหรับโอเปอเรชัน
Result operand reference : อ้ ำงอิงถึงผลลัพธ์จำกโอเปอเรชัน
Next instruction reference : บอกซีพียวู ำ่ จะไปอ่ำนคำสัง่ ต่อไปได้ จำก
ไหนหลังจำกเอ็กซิคิวต์คำสัง่ นี ้เสร็จสมบูรณ์แล้ ว
ประเภทคำสั่ง
คอมพิวเตอร์ จะต้ องมีชดุ คำสัง่ ที่ยอมให้ ผ้ ใู ช้ งำนทำงำนกับข้ อมูลได้
ตำมต้ องกำร
Data processing : คำสัง่ ทำงคณิตศำสตร์ และตรรกะ
 Data storage : คำสัง่ จัดกำรหน่วยควำมจำ
 Data movement : คำสัง่ จัดกำรอินพุต/เอำต์พต
ุ
 Control : คำสัง่ ตรวจสอบเงื่อนไขและกระโดดไปทำงำน

จำนวนแอ็ดเดรส
 โดยทัว่ ไปกำรกล่ำวถึงสถำปั ตยกรรมคอมพิวเตอร์ จะกล่ำวถึง
จำนวนแอ็ดเดรส
 ปั จจุบน
ั มีควำมสำคัญน้ อยกว่ำกำรออกแบบซีพียู
 จำนวนแอ็ดเดรสของระบบมีผลต่อวงรอบกำรทำงำนของคำสัง่
เครื่ อง
 ยิ่งมีจำนวนแอ็ดเดรสมำกก็จะยิ่งทำให้ วงรอบกำรทำงำนน้ อยลง
ทำให้ ทำงำนได้ เร็วขึ ้น
จำนวนแอ็ดเดรส
One-address
Two-address
จำนวนแอ็ดเดรส
Three-address
Zero-address
กำรออกแบบชุดคำสั่ง
พื้นฐานการออกแบบชุดคาสัง่
Operation repertoire : จำนวนโอเปอเรชันที่มีให้ เลือกใช้ รวมทังควำม
้
ซับซ้ อนของโอเปอเรชันที่ควรเป็ น
 Data type : ควำมหลำกหลำยของประเภทของข้ อมูลที่ทำโอเปอเรชัน
 Instruction format : ควำมยำวของคำสัง่ (เป็ นบิต) จำนวนแอ็ดเดรส
ขนำดของฟิ ลด์ และอื่น ๆ
 Register : จำนวนรี จิสเตอร์ ที่คำสัง่ สำมำรถอ้ ำงอิงและใช้ ประโยชน์ได้
 Addressing : กำรกำหนดโหมดของแอ็ดเดรสสำหรับโอเปอแรนด์

ประเภทโอเปอเรชัน
พื้นฐานของโอเปอเรชันสามารถแบ่งเป็ นกลุ่ม ๆ ได้คือ






โอเปอเรชันทำงด้ ำนกำรถ่ำยโอนข้ อมูล (Data transfer)
โอเปอเรชันทำงด้ ำนคณิตศำสตร์ (Arithmetic)
โอเปอเรชันทำงด้ ำนตรรกะ (Logical)
โอเปอเรชันทำงด้ ำนกำรแปลงค่ำ (Conversion)
โอเปอเรชันทำงด้ ำนอุปกรณ์อินพุต/เอำต์พตุ (I/O)
โอเปอเรชันทำงด้ ำนกำรควบคุมระบบ (System control)
ประเภทโอเปอแรนด์
ประเภทของโอเปอแรนด์มีดงั นี้
 แอ็ดเดรส
 ตัวเลข
 คำแรกเตอร์
 ข้ อมูลตรรกะ
ประเภทข้ อมูลของ Pentium









General ประเภทข้ อมูลที่เป็ น Byte, word, doubleword, quadword
Integer ค่ำเลขฐำนสองที่มีเครื่ องหมำย
Ordinal ค่ำจำนวนเต็มไม่มีเครื่ องหมำย
Unpacked binary coded decimal (BCD)กำรแสดงค่ำของตัวเลข
BCD ในช่วง 0-9
Packed BCD ไบต์ที่แสดงตัวเลข BCD 2 ค่ำ อยูร่ ะหว่ำง 0-99
Near pointer แอ็ดเดรสขนำด 32 บิต ใช้ สำหรับ พอยเตอร์ เพื่ออ้ ำงอิง
ในหน่วยควำมจำ
Bit field ชุดของบิตที่เรี ยงต่อเนื่อง แต่ละบิตมีควำมเป็ นอิสระ
Byte string byte , word , doubleword ที่เรี ยงต่อเนื่องกัน
Floating point ตัวเลขที่เป็ นทศนิยม
โครงสร้ ำงข้ อมูลตัวเลขของ Pentium
ประเภทข้ อมูลของ PowerPC







Unsigned byte ใช้ ทำงตรรกะและคณิตศำสตร์ ของจำนวนเต็ม
Unsigned Halfword เหมือนกับ Unsigned byte แต่ใช้ 16
บิต
Signed Halfword ใช้ สำหรับคำสัง่ ทำงคณิตศำสตร์
Unsigned Word ใช้ ทำงตรรกะและเป็ นแอ็ดเดรสพอยเตอร์
Signed Word ใช้ สำหรับคำสัง่ ทำงคณิตศำสตร์
Unsigned Doubleword ใช้ เป็ นแอ็ดเดรสพอยเตอร์
Byte String ขนำด 0-128 ไบต์
รูปแบบคำสั่ง
ควำมยำวคำสัง่
 กำรจัดวำงบิต

 จำนวนในกำรกำหนดโหมดของแอ็ดเดรส
 จำนวนโอเปอแรนด์
 รี จิสเตอร์ กบ
ั หน่วยควำมจำ
 จำนวนชุดของรี จิสเตอร์
 ขอบเขตของแอ็ดเดรส
 ควำมละเอียดในกำรกำหนดแอ็ดเดรส
กำรกำหนดแอ็ดเดรสหน่ วยควำมจำ
Little Endian
 Big Endian

ข้ อมูล คือ 89ABCDEF
(ก) กำรวำงไบต์แบบ Little Endian (ข) กำรวำงไบต์แบบ Big Endian
กำรกำหนดโหมดของแอ็ดเดรส








กำรกำหนดแอ็ดเดรสแบบให้ ค่ำโดยตรง (Immediate Addressing)
กำรกำหนดแอ็ดเดรสโดยตรง (Direct Addressing)
กำรกำหนดแอ็ดเดรสทำงอ้ อม (Indirect Addressing)
กำรกำหนดแอ็ดเดรสผ่ ำนรี จสิ เตอร์ โดยตรง (Register Direct Addressing)
กำรกำหนดแอ็ดเดรสผ่ ำนรี จสิ เตอร์ ทำงอ้ อม (Register Indirect Addressing)
กำรกำหนดแอ็ดเดรสแบบแทนที่ (Displacement หรื อ Indexed Addressing)
กำรกำหนดแอ็ดเดรสแบบสัมพันธ์ (Relative Addressing)
กำรใช้ สแต็ก (Stack)
กำรกำหนดแอ็ดเดรสแบบให้ ค่ำโดยตรง
Immediate Addressing
LOAD X, #1000
เป็ นกำรโหลดข้ อมูล 1000 ไว้ ที่ตวั แปร X
LOAD X, 1000
กำรกำหนดแอ็ดเดรส
Direct Addressing
เป็ นกำรโหลดข้ อมูลที่แอ็ดเดรส 1000 ไว้ ที่ตวั แปร X
(ถ้ ำที่แอ็ดเดรส 1000 มีคำ่ 10 ดังนัน้ X จะมีคำ่ เท่ำกับ 10)
กำรกำหนดแอ็ดเดรสทำงอ้ อม
Indirect Addressing
LOAD X, (1000)
เป็ นกำรโหลดข้ อมูลที่อยูบ่ นแอ็ดเดรสที่เก็บอยูใ่ น
แอ็ดเดรส 1000 (ถ้ ำที่แอ็ดเดรส 1000 มีคำ่ 1002
ดังนันข้
้ อมูลที่แท้ จริงอยูท่ ี่แอ็ดเดรส 1002 ในที่นี ้
คือ 20 ดังนัน้ X จะมีคำ่ เท่ำกับ 20)
กำรกำหนดแอ็ดเดรสผ่ ำนรี จเิ ตอร์ โดยตรง
Register Direct Addressing
LOAD X, R1 เป็ นกำรโหลดข้ อมูลจำกรี จิสเตอร์ R1 ไว้ ที่ตวั แปร X
(ถ้ ำที่รีจิสเตอร์ R1 มีคำ่ 30 ดังนัน้ X จะมีคำ่ เท่ำกับ 30)
กำรกำหนดแอ็ดเดรสผ่ ำนรี จเิ ตอร์ ทำงอ้ อม
Register Indirect Addressing
LOAD X, (R1) เป็ นกำรโหลดข้ อมูลที่อยูใ่ นแอ็ดเดรสที่เก็บอยู่ใน
รี จิสเตอร์ R1 ไว้ ที่ตวั แปร X (ถ้ ำที่รีจิสเตอร์ R1 เก็บค่ำ
1001 และที่แอ็ดเดรส 1001 ของหน่วยควำมจำมีคำ่ 40
ดังนัน้ X จะมีคำ่ เท่ำกับ 40)
กำรกำหนดแอ็ดเดรสแบบแทนที่
Displacement หรื อ Indexed Addressing
LOAD X, (R1)+Constant
เป็ นกำรโหลดข้ อมูลจำกแอ็ดเดรสบน
หน่วยควำมจำที่เกิดจำกค่ำในรี จิสเตอร์ บวกกับค่ำคงที่ ไว้ ที่ตวั แปร
X (ถ้ ำในรี จิสเตอร์ มีคำ่ 1000, ค่ำคงที่เท่ำกับ 2 และค่ำที่แอ็ดเดรส
1002 มีคำ่ เท่ำกับ 20 ดังนันค่
้ ำ X จะเท่ำกับ 20)
กำรกำหนดแอ็ดเดรสแบบสัมพันธ์
Relative Addressing
LOAD X, PC+Constant
เป็ นกำรโหลดข้ อมูลจำกแอ็ดเดรสบน
หน่วยควำมจำที่เกิดจำกค่ำในโปรแกรมเคำเตอร์ บวกกับค่ำคงที่ ไว้
ที่ตวั แปร X (ถ้ ำในโปรแกรมเคำเตอร์ มีคำ่ 1000, ค่ำคงที่เท่ำกับ 1
และค่ำที่แอ็ดเดรส 1001 มีคำ่ เท่ำกับ 40 ดังนันค่
้ ำ X จะเท่ำกับ 40)
Stack
LOAD X, Stack
เป็ นกำรโหลดข้ อมูลที่อยูบ่ นสุดของสแต็กไว้ ที่ตวั
แปร X (ถ้ ำข้ อมูลที่อยูบ่ นสุดของสแต็กมีคำ่ 1000
ค่ำ X จะมีคำ่ เท่ำกับ 1000 นัน่ เอง)
คาถาม
• . Instruction Sets หมำยถึง
• คุณสมบัติพนื้ ฐำนของคำสั่ ง มีอะไรบ้ ำง
• ประเภทคำสั่งมีอะไรบ้ ำง
คาถาม
• กำรกำหนดแอ็ดเดรสแบบสัมพันธ์
ถ้ ำ LOAD X, PC+Constant เป็ นกำรโหลดข้ อมูลจำกแอ็ดเดรสบน
หน่วยควำมจำที่เกิดจำกค่ำในโปรแกรมเคำเตอร์ บวกกับค่ำคงที่ ไว้ ที่ตวั แปร
X (ถ้ ำในโปรแกรมเคำเตอร์ มีคำ่ 100, ค่ำคงที่เท่ำกับ 15 และค่ำที่แอ็ดเดรส
102 มีคำ่ เท่ำกับ 95 ดังนันค่
้ ำ X จะเท่ำกับ 95) ให้ นกั เรี ยนวำดรูปภำพ
แสดงกำรเก็บข้ อมูล
คาถาม
• กำรกำหนดแอ็ดเดรสผ่ ำนรีจิเตอร์ ทำงอ้ อม
ถ้ ำ LOAD X, (R1)
(ถ้ ำที่รีจิสเตอร์ R1 เก็บค่ำ 101 และที่แอ็ดเดรส
101 ของหน่วยควำมจำมีคำ่ 77 ดังนัน้ X จะมีคำ่ เท่ำกับ77)ให้ นกั เรี ยนวำด
รูปภำพแสดงกำรเก็บข้ อมูล

similar documents