วันพุธที่ 25 กรกฎาคม พ.ศ. 2550

คอมพิวเตอร์ทำงานอย่างไร

คอมพิวเตอร์ในยุคแรกๆเช่น ENIAC เวลาโปรแกรมต้องใช้วิธีการเปลี่ยนสายเชื่อมต่ออุปกรณ์ต่างๆ ซึ่งเป็นวิธีการที่ยุ่งยากมาก จึงเกิดแนวคิดว่าตัวโปรแกรมน่าจะจัดเก็บอยู่ในส่วนที่สามารถปรับเปลี่ยนแก้ไขได้ง่าย เป็นที่มาของแนวคิดที่ทำการจัดเก็บข้อมูลต่างๆรวมถึงโปรแกรมไว้ใน หน่วยความจำ หรือ memory ทำให้คอมพิวเตอร์จะได้รับคำสั่งโดยการอ่านคำสั่งจากหน่วยความจำ และการปรับเปลี่ยนโปรแกรมสามารถทำได้โดยการเปลี่ยนแปลงค่าภายในหน่วยความจำ
แนวคิดข้างต้นรู้จักในชื่อว่า "Stored-Program Concept" หรือ อีกชื่อว่าสถาปัตยกรรม von Neumann โดยเข้าใจว่า J. Presper Eckert และ John William Mauchly ซึ่งเป็นนักออกแบบ ENIAC เป็นผู้คิดค้นขึ้น
แนวคิดการทำงานแบบ Stored-Program ถูกใช้เป็นแนวคิดหลักของการทำงานในคอมพิวเตอร์จนถึงปัจจุบัน โดยแนวคิดนี้จะแบ่งการทำงานของคอมพิวเตอร์เป็น 4 ส่วนหลักได้แก่
หน่วยประมวลผลในรูปแบบข้อมูล Binary หรือที่เรียกว่า Arithmetic-Logical Unit (ALU) เปรียบเสมือนหัวใจของคอมพิวเตอร์ หน้าที่หลักของมันคือทำการประมวลผลทางคณิตศาสตร์ขั้นพื้นฐานอันได้แก่การบวกและลบ และการทำการเปรียบเทียบข้อมูลสองข้อมูลว่ามีค่าเท่ากันหรือไม่ถ้าไม่จะมีค่ามากกว่าหรือน้อยกว่า
หน่วยความจำ หรือ Memory ใช้สำหรับเก็บข้อมูล (Data) และ คำสั่ง (Instructions) โดยข้อมูลภายในหน่วยความจำจะถูกแบ่งเป็นส่วนๆเล็กๆเท่าๆกัน แต่ละส่วนมีที่อยู่(address) เพื่อใช้เข้าถึงข้อมูลที่ถูกจัดเก็บเอาไว้
อุปกรณ์อินพุตและเอาต์พุต หรือ I/O Device เป็นส่วนที่ใช้นำข้อมูลจากโลกภายนอกเข้ามาภายในระบบคอมพิวเตอร์ เพื่อนำมาประมวลผล และเมื่อได้ผลลัพธ์ก็จะนำข้อมูลที่ได้มาแสดงผลให้โลกภายนอกคอมพิวเตอร์ได้รับทราบ
หน่วยควบคุมการทำงาน หรือ Control Unit เป็นส่วนที่ใช้เชื่อมต่อแต่ละส่วนเข้าด้วยกัน หน้าที่หลักๆคือทำการอ่านข้อมูลคำสั่งที่อยู่ภายในหน่วยความจำหรือที่ได้จากอุปกรณ์อินพุต ทำการแปลความหมายและส่งไปประมวลผลใน ALU จากนั้นนำผลที่ได้ไปจัดเก็บในหน่วยความจำหรืออุปกรณ์เอาต์พุต หน้าที่หลักอีกประการ คือควบคุมลำดับการทำงานของแต่ละขั้นตอนให้อยู่ในเวลาที่เหมาะสม
หน่วยประมวลผล
การทำงานของหน่วยประมวลผลกลาง หน่วยประมวลผล จะรับคำสั่งและข้อมูลจากหน่วยความจำ โดยส่งเข้าที่ Queue Prefetch Unit จะตรวจสอบว่า ค่าใน Queue เป็นคำสั่งหรือไม่ ถ้าเป็นคำสั่งจะสั่งให้ Bus Interface Unit(BIU) ส่งค่าของคำสั่งไปที่ Decode Unit ถ้าเป็นค่าที่อยู่(Address)ของหน่วยความจำ จะถูกส่งไปที่ Segment and Paging Unit Segment and Paging Unit จะแปลงที่อยู่ของหน่วยความจำ จากที่อยู่เสมือน(Virtual Address)ในรูปแบบของ segment : offset ให้กลายเป็นที่อยู่จริง(Physical Address)ที่ Bus Interface Unit เข้าใจ หน่วยถอดรหัส(Decode Unit) จะตรวจสอบและแยกแยะคำสั่ง แล้วแปลคำสั่ง และส่งสัญญาณควบคุมไปให้ Execution Unit ทำงานตามคำสั่งนั้น ใน Execution Unit จะประกอบด้วย
Control Unit(CU)จะทำหน้าที่ควบคุมการทำงานภายในโปรเซสเซอร์เป็นตัวสั่งงาน Unit อื่นๆตามคำสั่งที่แปลจาก Decode Unit Protection Test Unit จะป้องกันและตรวจสอบการทำงานของส่วนต่างๆ ไม่ให้ทำผิดกฏเกณฑ์ จนเกิดข้อผิดพลาดขึ้น Register จะทำหน้าที่เก็บค่าชั่วคราวก่อนและหลังการประมวลเพื่อส่งให้ส่วนอื่นๆต่อไป เป็นเหมือนกระดาษทดชัว่คราว สำหรับ ALU Arithmetic Logic Unit(ALU) เป็นส่วนการคำนวณทางคณิตศาสตร์และหาค่าตรรกะของการเปรียบเทียบ
เมื่อ ALU คำนวณหรือเปรียบเทียบค่าเรียบร้อยแล้ว จะส่งไปเก็บไว้ที่ Register แล้ว Control Unit จะสั่งให้ BIU เก็บค่าผลลัพธ์ลงในหน่วยความจำ โดยแปลงที่อยู่เสมือนที่ Control Unit กำหนด ให้กลายเป็น ที่อยู่จริงของหน่วยความจำที่จะนำผลลัพธ์ไปเก็บไว้

หน่วยความจำ
หน่วยความจำเป็นพื้นที่การทำงานและเป็นพื้นที่การจัดเก็บข้อมูลของคอมพิวเตอร์ เพราะคอมพิวเตอร์ไม่สามารถทำงานตามลำพังโดยอาศัยเพียงหน่วยประมวลผลหลักได้ หน่วยความจำแบ่งออกเป็น 2 ประเภทใหญ่ๆ ได้แก่ หน่วยความจำชั่วคราว คือ แรม (RAM: Random Access Memory) โดยแรมจะเป็นหน่วยความจำที่ใช้ขณะคอมพิวเตอร์ทำงาน และจะหายไปเมื่อปิดเครื่อง อีกชนิดหนึ่งคือหน่วยความจำถาวร หรือหน่วยความจำหลัก ได้แก่ ฮาร์ดดิสก์ Hard Disk ที่ใช้ในการเก็บข้อมูล และ รอม (ROM: Read Only Memory) ที่ใช้ในการเก็บค่าไบออส หน่วยความจำถาวรจะใช้ในการเก็บข้อมูลของเครื่องคอมพิวเตอร์และจะไม่สูญหายเมื่อปิดเครื่อง
ข้อแตกต่างของหน่วยความจำคือ หน่วยความจำแบบชั่วคราวจะมีความเร็วในการถ่ายข้อมูลสูง แต่ความจำน้อย เมื่อเกิดการทำงานของโปรแกรมมากๆ จึงต้องส่งผ่านข้อมูลลงหน่วยความจำถาวร ซึ่งเป็นสาเหตุหนึ่งของอาการแฮ็ง (hang)
http://th.wikipedia.org/wiki/%E0%B8%84%E0%B8%AD%E0%B8%A1%E0%B8%9E%E0%B8%B4%E0%B8%A7%E0%B9%80%E0%B8%95%E0%B8%AD%E0%B8%A3%E0%B9%8C

how first computer use

Unlike modern digital computers, analog computers are not very flexible, and need to be reconfigured (i.e., reprogrammed) manually to switch them from working on one problem to another. Analog computers had an advantage over early digital computers in that they could be used to solve complex problems while the earliest attempts at digital computers were quite limited. But as digital computers have become faster and used larger memory (e.g., RAM or internal store), they have almost entirely displaced analog computers, and computer programming, or coding has arisen as another human profession.
Since computers were rare in this era, the solutions were often hard-coded into paper forms such as graphs and nomograms, which could then allow analog solutions to problems, such as the distribution of pressures and temperatures in a heating system.
Some of the most widely deployed analog computers included devices for aiming weapons, such as the Norden bombsight and Fire-control systems for naval vessels. Some of these stayed in use for decades after WWII. One example is the Mark I Fire Control Computer, deployed by the United States Navy on a variety of ships from destroyers to battleships.
The art of analog computing reached its zenith with the differential analyzer, invented by Vannevar Bush in 1930. Fewer than a dozen of these devices were ever built; the most powerful was constructed at the University of Pennsylvania's Moore School of Electrical Engineering, where the ENIAC was built. Digital electronic computers like the ENIAC spelled the end for most analog computing machines, but hybrid analog computers, controlled by digital electronics, remained in substantial use into the 1950s and 1960s, and later in some specialized applications