วันเสาร์ที่ 14 มีนาคม พ.ศ. 2552

บทที่ 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 : จำนวนรีจิสเตอร์ที่คำสั่งสามารถอ้างอิงและใช้ประโยชน์ได้
ประเภทโอเปอเรชัน
- โอเปอเรชันทางด้านการถ่ายโอนข้อมูล (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 ตัวเลขที่เป็นทศนิยม
- Addressing : การกำหนดโหมดของแอ็ดเดรสสำหรับโอเปอแรนด์
โครงสร้างข้อมูลตัวเลขของ Pentium
ประเภทข้อมูลของ PowerPC

- Unsigned byte ใช้ทางตรรกะและคณิตศาสตร์ของจำนวนเต็ม
- Unsigned Halfword เหมือนกับ Unsigned byte แต่ใช้ 16 บิต
- Signed Halfword ใช้สำหรับคำสั่งทางคณิตศาสตร์
- Unsigned Word ใช้ทางตรรกะและเป็นแอ็ดเดรสพอยเตอร์
- Signed Word ใช้สำหรับคำสั่งทางคณิตศาสตร์
- Unsigned Doubleword ใช้เป็นแอ็ดเดรสพอยเตอร์
- Byte String ขนาด 0-128 ไบต์

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

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