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

คำนำ

คอมพิวเตอร์ คือ “อุปกรณ์ที่ประกอบด้วยชิ้นส่วนทางอิเล็กทรอนิกส์ที่สามารถรับข้อมูลและชุดคำสั่ง (Program) ในรูปแบบที่เครื่องรับได้ แล้วนำมาประมวลผล (Process) ข้อมูลตามชุดคำสั่งเพื่อแก้ปัญหา หรือทำการคำนวณที่ สลับซับซ้อนจนได้ผลลัพธ์ตามต้องการ และยังสามารถบันทึก หรือแสดงผลลัพธ์เหล่านั้นได้”
เอกสารประกอบการเรียนฉบับนี้เป็นส่วนหนึ่งของวิชา ระบบคอมพิวเตอร์และสถาปัตยกรรม

สารบัญ

สารบัญ


บทที่ 1 - พื้นฐานสถาปัตยกรรมคอมพิวเตอร์
บทที่ 2 - ข้อมูล (Data)
บทที่ 3 - การคำนวณทางคณิตศาสตร์ หน่วยประมวลผล

ทางคณิตศาสตร์และตรรกะ (ALU)
บทที่ 4 - ชุดคำสั่ง (Instruction Sets)
บทที่ 5 - การออกแบบโปรเซสเซอร์ (Processor Design)
บทที่ 6 - การนำข้อมูลเข้าและการส่งข้อมูลออก
บทที่ 7 - การคำนวณทางคณิตศาสตร์
บทที่ 8 - รูปแบบของคำสั่งและการบ่งตำแหน่งที่อยู่
บทที่ 9 - โครงสร้างและหน้าที่ของซีพียู
บทที่ 10 - บัสและอินเทอร์เฟซ (Bus & Interface)
บทที่ 11 - อินพุต/เอาต์พุต (Input/Output)
บทที่ 12 - หน่วยควบคุมและเส้นทางข้อมูล
บทที่ 13 - การสื่อสาร,เครือข่ายและอินเทอร์เน็ต
บทที่ 14 - มัลติโปรเซสเซอร์ (Multiprocessors)
บทที่ 15 - ระบบปฏิบัติการ (Operating Systems
)

บทที่ 1 - พื้นฐานสถาปัตยกรรมคอมพิวเตอร์


พื้นฐานสถาปัตยกรรมคอมพิวเตอร์













พื้นฐานสถาปัตยกรรมคอมพิวเตอร์
คอมพิวเตอร์ คือ “อุปกรณ์ที่ประกอบด้วยชิ้นส่วนทางอิเล็กทรอนิกส์ที่สามารถรับข้อมูลและชุดคำสั่ง (Program) ในรูปแบบที่เครื่องรับได้ แล้วนำมาประมวลผล (Process) ข้อมูลตามชุดคำสั่งเพื่อแก้ปัญหา หรือทำการคำนวณที่ สลับซับซ้อนจนได้ผลลัพธ์ตามต้องการ และยังสามารถบันทึก หรือแสดงผลลัพธ์เหล่านั้นได้”


ประเภทของคอมพิวเตอร์
- คอมพิวเตอร์ระดับยิ่งใหญ่ หรือซุปเปอร์คอมพิวเตอร์ (Super Computer)
- คอมพิวเตอร์ระดับใหญ่ หรือเมนเฟรมคอมพิวเตอร์ (Mainframe Computer)
- คอมพิวเตอร์ระดับเล็ก หรือมินิคอมพิวเตอร์ (Mini Computer)
- คอมพิวเตอร์ส่วนบุคคล หรือพีซี (PC : Personal Computer)
- คอมพิวเตอร์ขนาดสมุดบันทึก หรือโน็ตบุค (Notebook Computer)
- คอมพิวเตอร์ที่ทำหน้าที่เลขาส่วนตัว หรือพีดีเอ (PDA : Personal Digital Assistant)
- คอมพิวเตอร์เครือข่าย หรือเน็ต (Net)

องค์ประกอบระบบคอมพิวเตอร์
- ฮาร์ดแวร์ (Hardware)
- ซอฟต์แวร์ (Software)
- บุคลากร (Pepleware)
- ข้อมูล (Data)
- กระบวนการทำงาน (Procedure)

ฮาร์ดแวร์ (Hardware)
- หน่วยรับข้อมูลหรืออินพุต (Input Unit)
- หน่วยประมวลผลกลางหรือซีพียู (CPU : Central Processing Unit)
- หน่วยเก็บข้อมูล (Storage)
- หน่วยเก็บข้อมูลหรือความจำหลัก (Primary Storage หรือ Main Memory)
- หน่วยเก็บข้อมูลสำรอง (Secondary Storage)
- หน่วยแสดงข้อมูลหรือเอาต์พุต (Output Unit)



โครงสร้างระบบคอมพิวเตอร์ด้านอินพุต/เอาต์พุต
ซอฟต์แวร์ (Software)

- ซอฟต์แวร์ระบบ (System Software)
- โปรแกรมระบบปฏิบัติการ (OS : Operating System)
- โปรแกรมแปลภาษาคอมพิวเตอร์ (Translator Program)
- ยูทิลิตี้หรือโปรแกรมอรรถประโยชน์ (Utility Program)
- ซอฟต์แวร์สำเร็จรูป (Package)
- ซอฟต์แวร์ประยุกต์ (Application Software)


บุคลากร (Peopleware)
- ออกแบบและวิเคราะห์ระบบ (System Analysis and Design)
- โปรแกรมเมอร์ (Programming)
- ผู้บริหารฐานข้อมูล (Database Administrator : DBA)
- ผู้ปฏิบัติการ (Operator)
- ผู้ใช้ (User)
- ผู้บริหาร (Manager)

ข้อมูล (Data)
ข้อมูลเป็นสิ่งที่ต้องบันทึกลงไปในคอมพิวเตอร์ พร้อมกับโปรแกรมที่นักคอมพิวเตอร์ได้เขียนไปเพื่อผลิตผลลัพธ์ที่ต้องการออกมา หน่วยที่เล็กที่สุดของข้อมูลได้แก่ ตัวอักขระ (Character) ซึ่งจะประกอบไปด้วยตัวอักษร ตัวเลข และสัญลักษณ์ต่างๆ เมื่อนำตัวอักขระเหล่านี้มารวมกัน จะทำให้ได้หน่วยข้อมูลที่ใหญ่ขึ้น คือ ฟิลด์ (Field) เมื่อนำฟิลด์หลายๆ ฟิลด์มาประกอบกันจะเป็น เรกคอร์ด (Record) และถ้านำหลายๆ เรกคอร์ดมาประกอบกันจะเป็นไฟล์ (File) และหากนำหลายๆ ไฟล์มารวมกัน ในลักษณะที่มีความสัมพันธ์กันในแต่ละไฟล์ด้วยจะกลายเป็นฐานข้อมูล (Database)


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


วิวัฒนาการของคอมพิวเตอร์
- ลูกคิด (Abacus)
- John Napier สร้างเครื่องคิดเลขที่เรียกว่า “Napier’s Bones”
- Henry Briggs คิดค้นแบบคำนวณตารางลอการิทึม
- Edmund Gunter ได้นำค่าลอการิทึมของ Briggs มาแกะลงไม้บรรทัด
- William Aughtred ได้นำความคิดของ Gunter มาสร้าง Slide Rule ซึ่งถือว่าเป็นคอมพิวเตอร์อนาลอกเครื่องแรกของโลก
- Charles Babbage สร้างเครื่องมือที่ชื่อ “อนาไลติคัล เอ็นจิน“ (Analytical engine)
- Ada Lovelace โปรแกรมเมอร์คนแรกของโลก => ภาษา Ada





ยุคคอมพิวเตอร์
- ยุคแรก (ค.ศ.1945-1955) เป็นยุคคอมพิวเตอร์พื้นฐาน ที่เป็น หลอดสูญญากาศใช้ยูทิลิตี้แบบธรรมดา
- ยุคที่ 2 (ค.ศ.1955-1964) เป็นยุคทรานซิสเตอร์ ที่ช่วยให้คอมพิวเตอร์มีความน่าเชื่อถือมากขึ้น
- ยุคที่ 3 (ค.ศ.1965-1980) เริ่มมีการคิดค้นและผลิต IC (Integrated Circuit) ทำให้คอมพิวเตอร์มีขนาดเล็กลง มีการพัฒนาภาษาขั้นสูง
- ยุคที่ 4 (ค.ศ.1980-ปัจจุบัน) มีความซับซ้อนมากขึ้น ใช้ระบบปฏิบัติการแบบ multi-mode ใช้คุณลักษณะเวอร์ชวลแมชชีน (Virtual machines) และมีการสื่อสารข้อมูล
- ยุคที่ 5 คอมพิวเตอร์ในอนาคต



สถาปัตยกรรมคอมพิวเตอร์คืออะไร ?
- ผู้ออกแบบระบบ IBM System/360 “สถาปัตยกรรมคอมพิวเตอร์ หมายถึงโครงสร้างของคอมพิวเตอร์ที่โปรแกรมเมอร์ของระบบจะต้องเข้าใจในภาษาเครื่องเพื่อเขียนโปรแกรมให้เครื่องทำงานได้อย่างถูกต้อง”
- Bell และ Newell ให้แนวคิดของสถาปัตยกรรมคอมพิวเตอร์ในรูปแบบระดับชั้นที่เรียกว่า hierarchical, multilevel descriptionระดับทั้ง 4 ประกอบด้วยระดับวงจรอิเล็กทรอนิกส์ (Electronics Circuit Level), ระดับการออกแบบลิจิก (Logic Design Level), ระดับการโปรแกรม (Programming Level) และระดับการสวิตช์โปรเซสเซอร์และหน่วยความจำ (Processor-Memory-Switch Level)


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

- ช่องการสื่อสารข้อมูลที่เชื่อมระบบเข้าด้วยกันอาจจะเป็นการเชื่อมต่อระหว่างอุปกรณ์ 2 อุปกรณ์ หรือเป็นสวิตช์ที่ซับซ้อนที่เชื่อมต่อหลาย ๆ องค์ประกอบเข้าด้วยกัน
- แผนภาพ PMS แทนส่วนประกอบหลักของเครื่องคอมพิวเตอร์ส่วนบุคคลแอปเปิลแมคอินทอช (Apple Macintosh) ในตอนต้นจะใช้ช่องสื่อสารข้อมูลเดี่ยวที่เรียกว่า “บัส” (bus) ซึ่งจะเชื่อมต่อส่วนประกอบหลักทั้งหมด จนเมื่อบัสเป็นสวิตช์จะมีส่วนประกอบเพียงสองส่วนที่สามารถติดต่อซึ่งกันและกันในเวลาหนึ่ง ๆ เมื่อสวิตช์ถูกสร้างขึ้นเพื่อการถ่านโอนข้อมูลของอุปกรณ์อินพุต/เอาต์พุต

โมเดลของ von Neumann
- เครื่องของ von Neumann ทั้งโปรแกรมและข้อมูลจะใช้หน่วย ความจำเดียวกัน โดยจะมี program counter (PC) ชี้คำสั่งปัจจุบันในหน่วยความจำ เมื่อไม่มีคำสั่ง branch จะมีการดึงคำสั่งจากหน่วยความจำมาประมวลผลเรียงลำดับเรื่อยไปจนกว่าจะหมดคำสั่ง

บทที่ 2 - ข้อมูล (Data)


ข้อมูล
(Data)
ข้อมูลเป็นองค์ประกอบที่สำคัญอย่างหนึ่งในระบบคอมพิวเตอร์ เป็นสิ่งที่ต้องป้อนเข้าไปในคอมพิวเตอร์ พร้อมกับโปรแกรมที่นักคอมพิวเตอร์เขียนขึ้นเพื่อผลิตผลลัพธ์ที่ต้องการออกมา ข้อมูลที่สามารถนำมาใช้กับคอมพิวเตอร์ได้ มี 5 ประเภท คือ ข้อมูลตัวเลข (Numeric Data) ข้อมูลตัวอักษร (Text Data) ข้อมูลเสียง (Audio Data) ข้อมูลภาพ (Images Data) และข้อมูลภาพเคลื่อนไหว (Video Data)
โครงสร้างข้อมูล (Data Structure)
บิต (Bit) คือ ข้อมูลที่มีขนาดเล็กที่สุด เป็นข้อมูลที่เครื่องคอมพิวเตอร์สามารถเข้าใจและนำไปใช้งานได้ ซึ่งได้แก่ เลข 0 หรือ เลข 1 เท่านั้น
ไบต์ (Byte) หรือ อักขระ (Character) ได้แก่ ตัวเลข หรือ ตัวอักษร หรือ สัญลักษณ์พิเศษ 1 ตัว เช่น 0, 1, …, 9, A, B, …, Z และเครื่องหมายต่างๆ ซึ่ง 1 ไบต์จะเท่ากับ 8 บิต หรือ ตัวอักขระ 1 ตัว เป็นต้น
ฟิลด์ (Field) ได้แก่ ไบต์ หรือ อักขระตั้งแต่ 1 ตัวขึ้นไปรวมกันเป็นฟิลด์ เช่น เลขประจำตัว ชื่อพนักงาน เป็นต้น
เรคคอร์ด (Record) ได้แก่ ฟิลด์ตั้งแต่ 1 ฟิลด์ ขึ้นไป ที่มีความสัมพันธ์เกี่ยวข้องรวมกันเป็นเรคคอร์ด เช่น ชื่อ นามสกุล เลขประจำตัว ยอดขาย ข้อมูลของพนักงาน 1 คน เป็น 1 เรคคอร์ด
ไฟล์ (Files) หรือ แฟ้มข้อมูล ได้แก่ เรคคอร์ดหลายๆ เรคคอร์ดรวมกัน ซึ่งเป็นเรื่องเดียวกัน เช่น ข้อมูลของประวัติพนักงานแต่ละคนรวมกันทั้งหมดเป็นไฟล์หรือแฟ้มข้อมูลเกี่ยวกับประวัติพนักงานของบริษัท เป็นต้น
ฐานข้อมูล (Database) คือ การเก็บรวบรวมไฟล์ข้อมูลหลายๆ ไฟล์ที่เกี่ยวข้องกันมารวมเข้าด้วยกัน เช่น ไฟล์ข้อมูลของแผนกต่างๆ มารวมกันเป็นฐานข้อมูลของบริษัท เป็นต้น

การวัดขนาดข้อมูล
ในการพิจารณาว่าข้อมูลใดมีขนาดมากน้อยเพียงไร เรามีหน่วยในการวัดขนาดของข้อมูลดังต่อไปนี้
8 Bit = 1 Byte
1,024 Byte = 1 KB (กิโลไบต์)
1,024 KB = 1 MB (เมกกะไบต์)
1,024 MB = 1 GB (กิกะไบต์)
1,024 GB = 1TB (เทระไบต์)

บทที่ 3 - การคำนวณทางคณิตศาสตร์ หน่วยประมวลผลทางคณิตศาสตร์และตรรกะ (ALU)

การคำนวณทางคณิตศาสตร์
หน่วยประมวลผลทางคณิตศาสตร์และตรรกะ (ALU)
หน่วยประมวลผลทางคณิตศาสตร์และตรรกะ
ALU เป็นส่วนประกอบที่เป็นอิเล็กทรอนิกส์ที่ใช้พื้นฐานทางดิจิตอลลอจิก ทำหน้าที่ประมวลผลในคอมพิวเตอร์ทั้งทางด้านคณิตศาสตร์และตรรกะ โดยซีพียูจะมี ALU ประกอบอยู่ภายในซีพียู โดยซีพียูจะใช้งาน ALU ร่วมกับหน่วยควบคุม (Control Unit) รีจิสเตอร์ หน่วยความจำ และอุปกรณ์อินพุต/เอาต์พุต
ALU
การเปลี่ยนเป็นค่าตรงข้าม
ใช้ sign-and-magnitude
+21 = 00010101
-21 = 10010101 sign-and-magnitude
ใช้ 2’s complement
+21 = 00010101 2’s complement
= 11101010 กลับค่าแต่ละบิต
+ 1
-21 = 11101011
การบวกและการลบ
ใช้ 2’s complement
- ใช้หลัก a-b = a+(-b)
- ไม่คิดตัวทด และค่าสูงสุดไม่เกินของจำนวนบิต
การบวกและการลบ
ใช้ 1’s complement

- ถ้ามีตัวทดเกิดขึ้น จะนำไปบวกเข้ากับค่าผลลัพธ์ที่ได้
การคูณ
จำนวนเต็มไม่มีเครื่องหมาย
- ตั้งตัวคูณให้ตำแหน่งขวาสุดตรงกับตัวตั้ง
- ผลคูณย่อยที่เกิดขึ้นตำแหน่งขวาสุดให้ตรงตัวคูณ
- นำผลคูณย่อยมารวมกัน
- จำนวนเต็มมีเครื่องหมาย (บวก)
- จำนวนเต็มมีเครื่องหมาย (ลบ)
การหาร
-การบวกและลบเลขทศนิยม
- การตรวจสอบค่า 0
- การปรับเลขชี้กำลังให้เท่ากัน
- ทำการบวกหรือลบค่าของจำนวนนั้น (Mantissa)
- ปรับให้อยู่ในรูปแบบทั่วไป
การคูณเลขทศนิยม
- โฟลว์ชาร์ตแสดงการคูณเลขทศนิยม (Z <--X x Y)
การหารเลขทศนิยม
- โฟลว์ชาร์ตแสดงการคูณเลขทศนิยม (Z <--X / Y)
Haft Adder และ Full Adder
- ตารางค่าความจริงของการบวกเลข 2 บิต และวงจรสำหรับการบวกเลข 2 บิต
- ตารางค่าความจริงการบวกเลข 3 บิต (2 บิตและมีตัวทด) และสัญลักษณ์ Full Adder
- วงจร Full Adder ที่เกิดจาก Haft Adder 2 ตัว
Ripple-Carry Adder
- Ripple-Carry Adder (ขนาด 4 บิต)
- ตัวบวกขนาด 16 บิตที่เกิดจากการเรียงต่อกันของ Ripple-Carry Adder 4 ตัว

Ripple-Borrow Subtractor
- ตัวลบขนาด 16 บิตที่เกิดจากการเรียงต่อกันของ Ripple-Borrow Subtractor 4 ตัว

บทที่ 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 ไบต์

บทที่ 5 - การออกแบบโปรเซสเซอร์


การออกแบบโปรเซสเซอร์
(Processor Design)
โปรเซสเซอร์และซีพียู
- โปรเซสเซอร์ (Processor) จะเป็นตัวประมวลผลเพียงตัวเดียว
- ซีพียู (CPU : Central Processing Unit) หมายถึงหน่วยประมวลผลกลางที่หมายรวมถึงตัวประมวลผล, หน่วยประมวลผลทางคณิตศาสตร์และตรรกะ (ALU) และหน่วยควบคุม (Control Unit)
องค์ประกอบของซีพียู
- สถาปัตยกรรมของซีพียูเป็นตัวบ่งบอกถึงลักษณะเฉพาะ และลักษณะการทำงานที่สำคัญของซีพียู
- อาจจะเรียกอีกแบบหนึ่งว่า “สถาปัตยกรรมชุดคำสั่ง” (ISA : Instruction Set Architecture)
- ลักษณะเฉพาะของซีพียูนี้กล่าวรวมไปถึง จำนวนและประเภทของรีจิสเตอร์, วิธีการกำหนดโหมดของแอ็ดเดรสของหน่วยความจำ และการออกแบบชุดคำสั่งต่าง ๆ (Instruction Sets)
- ปัจจุบันนี้แบ่งออกเป็น 2 กลุ่มคือ CISC (Complex Instruction Set Computers) และ RISC (Reduced Instruction Set Computers)
โครงสร้างการเอ็กซิคิวต์คำสั่งใน CISC และ RISC
ลักษณะเฉพาะของ CISC
- มีการรวมเอาคุณสมบัติด้านต่าง ๆ เช่น การกำหนดโหมดของแอ็ดเดรส (Addressing Mode) หรือประเภทคำสั่ง (Instruction Type) เข้าด้วยกันเพื่อปรับปรุงขีดความสามารถในการทำงาน
- นักออกแบบมองว่าปริมาณการใช้หน่วยความจำ และเวลาที่ใช้ในการเข้าถึงต่าง ๆ ในการทำงานของคอมพิวเตอร์ต้องมองเป็นราคาต่อหน่วย
- สถาปัตยกรรมแบบ CISC มีจำนวน Addressing Mode หลายแบบ
- ลักษณะนี้ส่งผลให้ชุดคำสั่งที่ใช้มีขนาด และใช้เวลาในการประมวลผลแตกต่างกัน
- ผู้ใช้ยอมรับและพอใจ เนื่องจากผู้ใช้สามารถเพิ่มจำนวนโอเปอเรชันบนโปรแกรมที่มีขนาดเท่าเดิมได้
ลักษณะเฉพาะของ RISC
- หนึ่งชุดคำสั่งต่อวงรอบ
- ความยาวของชุดคำสั่งคงที่
- ติดต่อกับหน่วยความจำด้วยคำสั่งโหลดและสโตร์เท่านั้น
- การใช้การกำหนดโหมดของแอ็ดเดรสที่เรียบง่าย
- การใช้โอเปอเรชันที่เรียบง่ายและมีจำนวนจำกัด
- การหน่วงเวลาชุดคำสั่งบางประเภท
- การใช้เทคนิคพรีเฟ็ตช์ และสเปคคูเลทีฟ
- การแบ่งหน้าที่ให้คอมไพเลอร์จัดการ
ยุคเชื่อมต่อระหว่าง CISC กับ RISC
- เดิมคอมพิวเตอร์ยุคแรกจะประมวลผลชุดคำสั่งทีละคำสั่งในหนึ่งช่วงเวลา
- นักออกแบบได้พยายามที่จะปรับปรุงอัตราการประมวลผลชุดคำสั่งให้เพิ่มมากขึ้นโดยใช้วิธีการโอเวอร์แลป (Overlap) ชุดคำสั่งให้มีมากกว่าชุดคำสั่งในการประมวลผลแต่ละครั้ง
- วิธีการโอเวอร์แลปดังกล่าวนี้ต่อมารู้จักกันในชื่อของ Pipelining และ Superscalar
- หลักการทั่ว ๆ ไป ของการประมวลผลชุดคำสั่งคือคอมพิวเตอร์จะโหลดชุดคำสั่งที่ต้องการประมวลผลมาจากหน่วยความจำ เราเรียกขั้นตอนนี้ว่าดึงหรือเฟ็ตช์คำสั่ง (Fetch)
- หลังจากนั้นก็จะทำการประมวลผลหรือเอ็กซิคิวต์ (Execute) แล้วจึงจะเฟ็ตช์ชุดคำสั่งต่อไปเข้ามาหลังจากประมวลผลชุดคำสั่งแรกเสร็จสิ้น
- วิธีการเพิ่มประสิทธิภาพด้วยการโอเวอร์แลปก็คือการเฟ็ตช์ชุดคำสั่งถัดไปเข้ามาก่อนที่ชุดคำสั่งแรกจะทำเสร็จ เราเรียกว่า พรีเฟ็ตช์ (Prefetch)
- อีก เทคนิคที่คล้ายกันเรียกว่าซุปเปอร์สเกลลาร์ (Superscalar) ซึ่งเป็นเทคนิคที่ใช้กับโปรเซสเซอร์ที่มีความสามารถรับชุดคำสั่งเข้าไปประมวลผลได้ทีละหลาย ๆ ชุดคำสั่งพร้อม ๆ กัน
- เทคนิคไปป์ไลน์และซุปเปอร์สเกลลาร์ไม่สามารถนำมาใช้กับ CISC ได้ เนื่องจาก CISC มีความยาวของชุดคำสั่งที่ไม่แน่นอน และ Addressing mode ที่หลากหลายและซับซ้อนทำให้ลดประสิทธิภาพของ CISC ลง
กรณีตัวอย่าง CISC : Motorola MC68000
- สถาปัตยกรรมของซีพียูและหน่วยความจำ
- CPU register
- Memory
- การกำหนดโหมดของแอ็ดเดรส (Addressing Mode)
- รูปแบบคำสั่งของ MC68000 (Instruction Formats)
กรณีตัวอย่าง RISC : The SPARC
- สถาปัตยกรรมของโปรเซสเซอร์และหน่วยความจำของ SPARC
- แยกกลุ่มรีจิสเตอร์ระหว่าง Integer register และ Floating-point register
- มี Branch delayที่ต้องการโปรแกรมเคาเตอร์ (PC) 2 ชุด
- Processor state ประกอบด้วยรีจิสเตอร์ 32 ชุด
- ชุดคำสั่งมีขนาดคงที่ 32 บิต
- อินสตรัคชันรีจิสเตอร์ (IR)มีขนาด 32 บิต
- หน่วยความจำมีขนาด 32 บิตมีขนาดได้ถึง 232 ไบต์
- มีการกำหนดใช้ MMU (Memory Mapping Unit) ทำให้สามารถอ้างอิงเนื้อที่บนหน่วยความจำได้มากขึ้น
- การกำหนดโหมดของแอ็ดเดรสของ SPARC (Addressing Mode)
- register + register
- register + sign-extended, immediate 13-bit constant
- รูปแบบคำสั่งของ SPARC (Instruction Formats)