วันจันทร์ที่ 13 เมษายน พ.ศ. 2552

Computer Architecture

Computer Architecture

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

-Instruction set

-Data representations

-Addressing

-I/O

ความแตกต่างระหว่าง Computer architecture และ computer organization

ความต่างของทั้งสองอยู่ที่การ Implementation โดยการสร้างคอมพิวเตอร์สามารถสร้างและออกแบบได้หลายอย่างแต่อยู่บนพื้นฐานของ Architecture เดียวกัน เช่น computer architecture ประกอบด้วยอุปกรณ์ต่างๆ แต่สามารถ organize ได้หลากหลายรูปแบบภายใต้ architecture เดียวกัน แต่โปรแกรมเมอร์จะมองไม่เห็นส่วนประกอบเหล่านี้

คอมพิวเตอร์มี 2 มุมมองคือ ด้านหลักการทำงาน และ โครงสร้าง

1. Function View ประกอบด้วย Process data, Store data, Move data between the computer and the outside world และ control the operation of the above

2. Structure View ประกอบด้วย CPU, Memory, Input/Output unit (I/O) และInterconnection structure (BUS)

- Memory

- Input/Output unit (I/O)

- Interconnection structure (BUS)

- CPU

· Register

· Arithmetic and logic Unit

· Internal CPU interconnection

· Control Unit

§ Sequencing Logic

§ Control Unit Register and Decoder

§ Control memory

History of Computers

Machanical Era เป็นช่วงเริ่มต้นที่นักคณิตศาสตร์นักดาราศาสตร์หรือนักคณิตศาสตร์ได้พยายามคิดค้นเครื่องมือเพื่อใช้ในการคำนวณที่ให้ผลลัพธ์รวดเร็วและมีความถูกต้องแม่นยำ

ข้อด้อยของเครื่องในยุคนี้คือ

- มีแรงเฉื่อยจากระบบเฟืองและเกียร์

- ขนาดใหญ่มาก ขาดความน่าเชื่อถือเพราะเมื่อใช้งานไปนานๆ จะเกิดภาวะสึกหรอของเครื่อง และแพง

The Electronic Era แบ่งออกเป็นหลายยุคได้แก่

ยุคที่ 1 เครื่องที่ผลิตได้แก่ ENIAC เป็นเครื่องแรกสำหรับอิเล็กทรอนิกส์คอมพิวเตอร์ที่เป็นจุดเด่นของยุคนี้ ผลิตโดยใช้เทคนิคของการประกอบอุปกรณ์อิเล็กทรอนิกส์ที่มีส่วนประกอบค่อนข้างเยอะ มีวัตถุประสงค์เพื่อใช้ในการคำนวณวิธีการยิงกระสุนปืนใหญ่ ขนาดใหญ่มาก ซึ่งเครื่องจะประกอบไปด้วย Vacuum tube 18,000 tubes, 70,000 resistors, 10,000 capacitors, 6,000 switches, 30x50 feet, 30 tons, power 140 kW ใช้คำนวณเลขฐานสิบ ตั้งโปรแกรมโดยการสลับสายสวิทต์ที่เสียบเข้ากับตู้โปรแกรม ความเร็วในการคำนวณประมาณ 5,000 ครั้งต่อวินาที

หลังจากนั้น Von Nuemann และ Goldstine ทั้งสองท่านนี้ได้แนวคิดจาก ENIAC จึงได้พัฒนาภายใต้แนวคิดที่จะเก็บโปรแกรมไว้บนหน่วยความจำ แต่เมื่อเวลาผ่านไปหลักการนี้เป็นที่รู้จักกันในชื่อของ Von Nuemann Architecture และเป็นพื้นฐานของเครื่องคอมพิวเตอร์ทุกเครื่องหลังจากนั้นเลย ซึ่งมีแนวคิดสามข้อดังนี้

- Data และ instruction ต้องถูกเก็บอยู่บน single read-write memory

- Memory จะบรรจุตำแหน่งของหน่วยความจำ

- การประมวลผลเกิดเป็นลำดับ

ยุคที่ 2 มีการเปลี่ยนแปลงด้านเทคโนโลยีของอุปกรณ์ที่ใช้ในการผลิตโดยหันมาใช้ transistors แทน vacuum tube ทำให้สามารถรองรับภาษาโปรแกรมที่สูงขึ้นและคำนวณถึงระดับ Floating point ได้ เทคโนโลยีที่เด่นๆ ในยุคนี้ก็น่าจะเป็นการเขียนโปรแกรมโดยการใช้ punched card

ยุคที่ 3 มีการเปลี่ยนแปลงอีกครั้งโดยหันมาใช้ semiconductor memory ในการผลิตภายใต้ระบบ Integrated circuit ซึ่งรองรับ Microprogramming และ Multiprogramming

ยุคที่ 4 วงจรได้พัฒนาเป็น VLSI /very large scale integration มีความสามารถในการนำไฟฟ้าดีขึ้นมาก และขนาดของอุปกรณ์เล็กลง สามารถนำมาวางบนบอร์ดเดียวกันได้ ทำให้เป็นจุดเริ่มของการผลิต single board computer ในปัจจุบันด้วย

ยุคที่ 5 ยังใช้ VLSI /very large scale integration และได้พัฒนาต่อเป็น Ultra large scale integration /ULSI ได้เกิดระบบเน็ตเวิร์คมากขึ้นในยุคนี้ นำไปสู่การเริ่มผลิตหุ่นยนต์อัฉริยะ และการประมวลผลแบบขนานในกลุ่มคอมพิวเตอร์ขนาดใหญ่

เมื่อเปรียบเทียบแต่ยุคในการนำอุปกรณ์มาประดิษฐ์คอมพิวเตอร์นั้น สามารถแสดงพัฒนาการได้ดังนี้

Vacuum tube àTransistoràSmall scale integration 100 device on a chipàMedium scale integration 100-3,000 device on a chip àLarge scale integration 3,000-100,000 devices on a chip àVery Large scale integration 100,000-108 devices on a chip àUltra large scale integration >108 devices on a chip

Moore’s Law

เป็นกฎที่ได้ตั้งขึ้นเพื่อทำนายการเติบโตของเทคโนโลยีคอมพิวเตอร์ ดังนี้

- ปริมาณอุปกรณ์ที่ประกอบบนชิปจะมีความหนาแน่นมากขึ้น เป็นสองเท่าทุกปี

- แต่เมื่อปี 1970 การเติบโตลดลงเล็กน้อย ทำให้อัตราการเติบโตลดลงเหลือ สองเท่าภายใน 18 เดือน

- ราคาของชิปไม่เปลี่ยนแปลง

- ขนาดของชิปเล็กลงแต่มีความหนาแน่นมากขึ้น ทำให้ประสิทธิภาพมากขึ้น

- ขนาดเล็กทำให้ใช้งานสะดวกขึ้น

- ใช้พลังงานน้อยลงและระบบระบายความร้อนไม่ความจำเป็นน้อยลง

- มีการเชื่อมต่อของระบบน้อยทำให้มีความน่าเชื่อถือมากขึ้น เพราะลดความผิดพลาดจากการเชื่อมต่อ

Performance Mismatch

เมื่อโปรเซสเซอร์มีความเร็วเพิ่มขึ้น ความจุของหน่วยความจำมากขึ้น แต่ความเร็วของหน่วยความจำยังช้ากว่าโปรเซสเซอร์อยู่มาก วิธีการแก้ปัญหานี้คือ การเพิ่มจำนวนบิตที่อ่านได้ต่อหนึ่งครั้งให้มากขึ้น ทำให้ขนาดของ DRAM กว้างขึ้น เปลี่ยนการเชื่อมต่อระหว่างโปรเซสเซอร์กับแรม โดยการใช้แคชคั่นกลาง ลดการดึงข้อมูลจากหน่วยความจำโดยตรงเพราะช้า ทำการติดตั้งแคชบนชิปแทนเพื่อลดปัญหานี้ หรือเพิ่มแบนด์วิธเช่น บัสความเร็วสูง หรือการเรียงบัสแบบลำดับขั้น

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

Computer Architecture Performance Measures

เราจะทราบได้อย่างไรว่าคอมพิวเตอร์เครื่องไหน แบบไหนที่มีประสิทธิภาพในการทำงานดีที่สุด หรือเร็วที่สุด จึงได้มีการคิดค้นวิธีการวัดประสิทธิภาพของคอมพิวเตอร์ ซึ่งจะมองในสองแง่มุมคือ ราคาต่อยูนิต และ ประสิทธิภาพที่ได้รับ ซึ่งประสิทธิภาพของคอมพิวเตอร์นั้นจะมีการแยกออกเป็นสองลักษณะด้วยกันคือ ลดเวลาการตอบสนองในแต่ละงาน และ การเพิ่มขึ้นของ ผลลัพธ์ต่อการทำงานทั้งหมด เรียกง่ายๆ ว่า การลด response time และการเพิ่ม throughput ซึ่งการเพิ่มประสิทธิภาพของคอมพิวเตอร์นั้นจะเพิ่มอย่างหนึ่งอย่างใดหรือทั้งสองอย่างเลยก็ได้

ตัวอย่างการเพิ่มประสิทธิภาพของคอมพิวเตอร์

- Faster clock cycle time ทำให้การทำงานแต่ละงานใช้เวลาน้อยลง ส่งผลให้ response time ลดลงด้วย และเพิ่ม throughput ไปในตัวเพราะทำงานเร็วผลลัพธ์ต่อเวลาก็เพิ่มขึ้น เป็นการทำงานตามแบบของ Von Nuemann อย่างเต็มรูปแบบคือ 1 CPU ทำงานทุกอย่างตามลำดับ เพียงแต่ทำเร็วขึ้นนั่นเอง

- Multiple processors for separate tasks แสดงถึงการเพิ่ม processors ซึ่งจะทำให้สามารถทำงานได้หลายๆ งานไปพร้อมๆ คือต่างคนต่างทำ หรือเรียกว่า pipeline processing ทำให้ throughput สูงขึ้นมากๆ แต่ response time เท่าเดิม

- Parallel processing of scientific problems เป็นการทำงานที่ต้องการความเร็วสูงคือ ให้ประมวลผลแบบคู่ขนานกันไป

การเพิ่มประสิทธิภาพการทำงานทั้งระบบ โดยทฤษฎีของ Amdahl’s Law

การพัฒนาด้านประสิทธิภาพได้มาจากการใช้บางโหมดการทำงานให้เร็วสำหรับการประมวลผลแต่จะถูกจำกัดด้วยสัดส่วนของเวลา การใช้โหมดที่เร็วขึ้นกว่าเดิมจะสามารถใช้ได้

การพิจารณาปัญหาด้านประสิทธิภาพของคอมพิวเตอร์

หนึ่งต้องระมัดระวังเรื่องสถาปัตยกรรมที่ดีเฉพาะบางส่วนไม่ใช่ทั้งหมด

สองเมื่อทดสอบประสิทธิภาพของเครื่อง ต้องระวัดระวังเรื่องการทดสอบไม่ครอบคลุม ทำให้ได้ผลการทดสอบไม่ครบถ้วน

Memory bandwidth

Memory bandwidth เป็นอัตราเร็วสูงสุดในหน่วยของบิตต่อวินาทีในการส่งข้อมูลจากหน่วนความจำหลัก ซึ่งตัวกำหนดข้อจำกัดเบื้องต้นของการกำลังการประมวลผลระบบ ส่วนด้อยไม่ได้เกี่ยวข้องกับการประมวลผลโปรแกรม ไม่มีการใช้ในการวิธีการนี้ในการบอกประสิทธิภาพ

MIPS: Million s of instructions per second

เป็นการวัดศักยภาพการประมวลผลข้อมูล ในหน่วยของล้านคำสั่งต่อวินาที ซึ่งง่ายต่อการเข้าใจและสามารถทดสอบทางการตลาดได้ง่ายด้วย แต่ปัญหาคือ แต่ละผู้ผลิตที่ผลิตคอมพิวเตอร์ไม่ได้สร้าง instruction set ให้เหมือนกัน ดังนั้นจะทดสอบประสิทธิภาพโดยใช้วิธีการนี้นั้นบอกได้ยาก เพราะ MIPS ยังขึ้นโปรแกรมที่กำลังทำงานด้วย ทั้งนี้ MIPS ยังแปรผกผันกับค่าประสิทธิภาพ เมื่อประสิทธิภาพเพิ่มขึ้นค่าอัตราของ MIPS จะต่ำลง เช่นการคำนวณเลขทศนิยมเทียบกับคำนวณจำนวนเต็ม ปรากฎว่า คำนวณทศนิยมใช้เวลาในการประมวลผลเร็วกว่าเลขจำนวนเต็ม

MFLOPS: Million of Floating Point operations per second

คำนวณทศนิยมหนึ่งล้านครั้งในหนึ่งวินาที ใช้ในการเปรียบเทียบประสิทธิภาพของเครื่องมือทางวิทยาศาสตร์ ใช้กับเครื่องที่มีค่า flop เท่ากันจึงจะทดสอบได้อย่างมีประสิทธิภาพ ปัญหาเรื่องค่า flop ไม่ตรงกันเนื่องจากการติดตั้งเครื่องบางเครื่องอาจใช้ค่า flop เดิมมาใช้กับเครื่องรุ่นใหม่ทำให้ค่าประสิทธิภาพด้านความเร็วที่ทดสอบได้ไม่เท่ากัน

Programs for performance analysis

เพื่อเป็นเครื่องวัดด้วยระบบวัดประสิทธิภาพ โปรแกรมประยุกต์จะเป็นตัวที่มีบทบาท

การวัดเปรียบเทียบสมรรถนะเกณฑ์มาตรฐานหมายถึง การทดสอบเพื่อวัดความสามารถในการประมวลผล หรือการทำงานของ โปรแกรมใดโปรแกรมหนึ่ง หรืออุปกรณ์คอมพิวเตอร์ชนิดใดชนิดหนึ่ง โดยเทียบเคียงกับเกณฑ์มาตรฐาน

การวัดเปรียบเทียบสมรรถนะเกณฑ์มาตรฐานหมายถึง การทดสอบเพื่อวัดความสามารถในการประมวลผล หรือการทำงานของ โปรแกรมใดโปรแกรมหนึ่ง หรืออุปกรณ์คอมพิวเตอร์ชนิดใดชนิดหนึ่ง โดยเทียบเคียงกับเกณฑ์มาตรฐาน

Toy benchmarks

Kernels

Real program เป็นโปรแกรมที่ทำงานร่วมกับ I/O มีความสามารถในการวัดความสามารถของเครื่องได้ดีที่สุด ส่วนใหญ่ยากมากที่จะตัดสินบนข้อจำกัดที่จะใช้เครื่องโดยที่ยังไม่ได้ซื้อ

รูปแบบที่สำคัญจะประกอบด้วย Compiler และโปรแกรมต่างๆที่สามารถใช้ทดสอบร่วมกันได้

SPEC: System Performance Evaluation Cooperative เป็นตัวอย่างที่ดีของการทำงานทดสอบประสิทธิภาพของเครื่อง

เหตุผลอื่นที่ต้องพิจารณาด้านประสิทธิภาพ

-ราคา ซึ่งจะประกอบด้วย

Design cost

Purchase cost

Components: component, direct, indirect

- Compatibility ความเข้ากันได้

- S/W availability

Maintenance

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

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