วันพุธที่ 25 มิถุนายน พ.ศ. 2557

วิวัฒนาการของหน่วยประมวลผลกลาง

     เทคโนโลยีไมโครโพรเซสเซอร์ได้พัฒนาอย่างรวดเร็ว โดยเริ่มจากปี พ.ศ. 2518บริษัทอินเทลได้พัฒนาไมโครโพรเซสเซอร์ที่เป็นที่รู้จักกันดี คือ ไมโครโพรเซสเซอร์เบอร์ 8080 ซึ่งเป็นซีพียูขนาด บิต ซีพียูรุ่นนี้จะรับข้อมูลเข้ามาประมวลผลในรูปของเลขฐานสองครั้งละ บิต และทำงานภายใต้ระบบปฏิบัติการซีพีเอ็ม (CP/M) ต่อมาบริษัทแอปเปิ้ลก็เลือกซีพียู 6502 ของบริษัทมอสเทคมาผลิตเป็นเครื่องแอปเปิ้ลทูได้รับความนิยมเป็นอย่างมากในยุคนั้น
     เครื่องไมโครคอมพิวเตอร์ในประเทศไทยส่วนมากเป็นคอมพิวเตอร์ที่ใช้ซีพียูของตระกูล80XXX ที่พัฒนามาก 8088 8086 80286 80386 80486 และเพนเทียม ตามลำดับ
     การพัฒนาซีพียูตระกูลนี้เริ่มจากซีพียูเบอร์ 8088 ต่อมาประมาณปี พ.ศ. 2524 มีการพัฒนาเป็นซีพียูแบบ 16บิต ที่มีการรับข้อมูลจากภายนอกทีละ บิต แต่การประมวลผลบวก ลบ คูณ หาร ภายใน จะกระทำทีละ 16 บิต บริษัทไอบีเอ็มเลือกซีพียูตัวนี้เพราะอุปกรณ์ประกอบอื่น ๆ ในสมัยนั้นยังเป็นระบบ บิต คอมพิวเตอร์รุ่นซีพียู8088แบบ 16 บิตนี้เรียกว่า พีซี” และเป็นพีซีรุ่นแรก
ขีดความสามารถของซีพียูที่จะต้องพิจารณานอกจากขีดความสามารถในการประมวลผลภายใน การรับส่งข้อมูลระหว่างซีพียูกับอุปกรณ์ภายนอกแล้ว ยังต้องพิจารณาขีดความสามารถในการเข้าไปเขียนอ่านในหน่วยความจำด้วย ซีพียู 8088 สามารถเขียนอ่านในหน่วยความจำได้สูงสุดเพียง เมกะไบต์ (ประมาณ ล้านไบต์) ซึ่งถือว่ามากในขณะนั้น
     ความเร็วของการทำงานของซีพียูขึ้นอยู่กับการให้จังหวะที่เรียกว่า สัญญาณนาฬิกาซีพียู 8088 ถูกกำหนดจังหวะด้วยสัญญาณนาฬิกาที่มีความเร็ว 4.77 ล้านรอบใน 1วินาที หรือที่เรียกว่า 4.77 เมกะเฮิรตซ์ (MHz) ซึ่งปัจจุบันถูกพัฒนาให้เร็วขึ้นเป็นลำดับ
ไมโครคอมพิวเตอร์รุ่นพีซีได้รับการพัฒนาเพิ่มเติมฮาร์ดดิสก์ลงไปและปรับปรุงซอฟต์แวร์ระบบและเรียกชื่อรุ่นว่า พีซีเอ็กซ์ที (PC-XT)
     ใน พ.ศ. 2527 ไอบีเอ็มเสนอไมโครคอมพิวเตอร์รุ่นใหม่ที่ทำงานได้ดีกว่าเดิม โดยใช้ชื่อรุ่นว่า พีซีเอที” (PC-AT) คอมพิวเตอร์รุ่นนี้ใช้ซีพียูเบอร์ 80286 ทำงานที่ความเร็วสูงขึ้น คือ เมกะเฮิรตซ์ การทำงานของซีพียู 80286 ดีกว่าเดิมมาก เพราะรับส่งข้อมูลกับอุปกรณ์ภายในเป็นแบบ 16 บิตเต็ม การประมวลผลเป็นแบบ 16 บิต ทำงานด้วยความเร็วของจังหวะสัญญาณนาฬิกาสูงกว่า และยังติดต่อเขียนอ่านกับหน่วยความจำได้มากกว่า คือ ติดต่อได้สูงสุด 16 เมกะไบต์ หรือ 16 เท่าของคอมพิวเตอร์รุ่นพีซีเอ็กซ์ที
พัฒนาการของเครื่องพีซีที่ทำให้ผู้ผลิตอื่นออกแบบเครื่องคอมพิวเตอร์ตามอย่างไอบีเอ็ม โดยเพิ่มขีดความสามารถเฉพาะของตนเองเข้าไปอีก เช่น ใช้สัญญาณนาฬิกาสูงขึ้นเป็นเมกะเฮิรตซ์ 10 เมกะเฮิรตซ์ จนถึง 16เมกะเฮิรตซ์ ไมโครคอมพิวเตอร์บนรากฐานของพีซีเอที จึงมีผู้ใช้กันทั่วโลก ยุคนี้จึงเป็นยุคที่ไมโครคอมพิวเตอร์แพร่หลายอย่างเต็มที่
     ใน พ.ศ. 2529 บริษัทอินเทลประกาศตัวซีพียูรุ่นใหม่ คือ 80386 หลายบริษัทรวมทั้งบริษัทไอบีเอ็มเร่งพัฒนาโดยนำเอาซีพียู 80386 มาเป็นซีพียูหลักของระบบ ซีพียู80386 เพิ่มเติมขีดความสามารถอีกมาก เช่น รับส่งข้อมูลครั้งละ 32 บิต ประมวลผลครั้งละ 32 บิต ติดต่อกับหน่วยความจำได้มากถึง จิกะไบต์ (1จิกะไบต์ เท่ากับ1,024 ล้านไบต์) จังหวะสัญญาณนาฬิกาเพิ่มได้สูงถึง 33 เมกะเฮิรตซ์ ขีดความสามารถสูงกว่าพีซีรุ่นเดิมมาก และใน พ.ศ. 2530บริษัทไอบีเอ็มเริ่มประกาศขายไมโครคอมพิวเตอร์รุ่นใหม่ ชื่อว่า พีเอสทู” (PS/2) โดยมีโครงสร้างทางฮาร์ดแวร์ของระบบแตกต่างออกไป โดยเฉพาะระบบบัสผลปรากฏว่า เครื่องคอมพิวเตอร์รุ่น80386 ไม่เป็นที่นิยมมากนัก ทั้งนี้เพราะยุคเริ่มต้นของเครื่องคอมพิวเตอร์รุ่น 80386 มีราคาแพงมาก ดังนั้นใน พ.ศ. 2531 อินเทลต้องเอาใจลูกค้าในกลุ่มเอทีเดิม คือ ลดขีดความสามารถของ80386 ลงให้เหลือเพียง 80386SX
ซีพียู 80386SX  ใช้กับโครงสร้างเครื่องพีซีเอทีเดิมได้พอดี  โดยแทบไม่ต้องดัดแปลงอะไร   ทั้งนี้เพราะโครงสร้างภายในซีพียูเป็นแบบ 80386 แต่โครงสร้างการติดต่อกับอุปกรณ์ภายนอกใช้เส้นทางเพียงแค่ 16 บิต ไมโครคอมพิวเตอร์ 80386SXจึงเป็นที่นิยม เพราะมีราคาถูกและสามารถทดแทนเครื่องคอมพิวเตอร์รุ่นพีซีเอทีได้
     ซีพียู 80486 เป็นพัฒนาการของอินเทลใน พ.ศ. 2532 และเริ่มใช้กับเครื่องไมโครคอมพิวเตอร์ในปีต่อมา ความจริงแล้วซีพียู 80486 ไม่มีข้อเด่นอะไรมากนัก เพียงแต่ใช้เทคโนโลยีการรวมชิป 80387 เข้ากับซีพียู 80386 ซึ่งชิป80387 เป็นหน่วยคำนวณทางคณิตศาสตร์ และรวมเอาส่วนจัดการหน่วยความจำเข้าไว้ในชิป ทำให้การทำงานโดยรวมรวดเร็วขึ้นอีก

     ใน พ.ศ. 2535 อินเทลได้ผลิตซีพียูตัวใหม่ที่มีขีดความสามารถสูงขึ้น ชื่อว่าเพนเทียม” การผลิตไมโครคอมพิวเตอร์จึงได้เปลี่ยนมาใช้ซีพียูเพนเทียม ซึ่งเป็นซีพียูที่มีขีดความสามารถเชิงคำนวณสูงกว่าซีพียู 80486 มีความซับซ้อนมากกว่าเดิม และใช้ระบบการส่งถ่ายข้อมูลได้ถึง 64 บิต
อินเทลได้พัฒนาด้านซีพียูอย่างต่อเนื่อง จากยุค 386, 486 จนมาใช้ชื่อ Pentium, Pentium Pro, Celeron, Pentium 2, Pentium 3 จากนั้นก็มาถึงยุคของPentium 4  และพัฒนามาถึงรุ่น Core 2 Duo ซึ่งเป็นซีพียูที่มีประสิทธิภาพสูงแต่ใช้พลังงานน้อย จึงมีความร้อนน้อยกว่า Pentium D เป็นอย่างมาก และเป็นที่นิยมในปัจจุบัน

หน่วยสำคัญของหน่วยประมวลผลกลาง

     หน่วยประมวลผลกลางเป็นวงจรไฟฟ้า มีหน่วยสำคัญที่ทำหน้าที่แตกต่างกัน หน่วย ได้แก่ หน่วยควบคุม(Control Unit : CU) และหน่วยคำนวณและตรรกะ (Arithmetic And Logic Unit : ALU)

     1. หน่วยควบคุม (Control Unit : CU)
หน่วยควบคุมเป็นหน่วยที่ทำหน้าที่ประสานงานและควบคุมการทำงานของระบบคอมพิวเตอร์ หน่วยนี้ทำงานคล้ายกับสมองคน ซึ่งควบคุมให้ระบบอวัยวะต่าง ๆ ของร่างกายทำงานประสานกัน นอกจากนี้ยังทำหน้าที่ควบคุมให้อุปกรณ์รับข้อมูลส่งข้อมูลไปที่หน่วยความจำ ติดต่อกับอุปกรณ์แสดงผลเพื่อสั่งให้นำข้อมูลจากหน่วยความจำไปยังอุปกรณ์แสดงผล โดยหน่วยควบคุมของคอมพิวเตอร์จะแปลความหมายของคำสั่งในโปรแกรมของผู้ใช้ และควบคุมให้อุปกรณ์ต่าง ๆ ทำงานตามคำสั่งนั้น ๆ จากที่กล่าวมาสามารถเปรียบเทียบการทำงานของหน่วยควบคุมกับการทำงานของสมองได้ดังนี้
สมอง    หน่วยควบคุม
  -ควบคุมอวัยวะสัมผัสทั้งห้า            -ควบคุมการทำงานของอุปกรณ์รับข้อมูล
  -จดจำและระลึกเรื่องราวต่าง ๆ        -ควบคุมการเก็บและการนำข้อมูลจากหน่วยความจำมาใช้
  -วิเคราะห์ปัญหา แก้ปัญหา และตัดสินใจ -ควบคุมการทำงานของหน่วยคำนวณและตรรกะ ให้ทำการคำนวณและเปรียบเทียบ
  -ควบคุมการแสดงออกโดยการพูดหรือการเขียน -ควบคุมการทำงานของหน่วยแสดงผล ให้พิมพ์หรือบันทึกผล
     2. หน่วยคำนวณและตรรกะ (Arithmetic And Logic Unit : ALU)หน่วยคำนวณและตรรกะเป็นหน่วยที่ทำหน้าที่คำนวณทางเลขคณิต ได้แก่ การบวก ลบ คูณ หาร และเปรียบเทียบทางตรรกะ เพื่อทำการตัดสินใจ เช่น ทำการเปรียบเทียบข้อมูลเพื่อตรวจสอบว่าปริมาณหนึ่ง น้อยกว่า เท่ากับ หรือมากกว่า อีกปริมาณหนึ่ง แล้วส่งผลการเปรียบเทียบว่าจริงหรือเท็จไปยังหน่วยความจำเพื่อทำงานต่อไปตามขั้นตอนที่กำหนดไว้ในเงื่อนไข การทำงานของ ALU คือ รับข้อมูลจากหน่วยความจำมาไว้ในที่เก็บชั่วคราวของ ALUซึ่งเรียกว่า รีจิสเตอร์” (Register) เพื่อทำการคำนวณ แล้วส่งผลลัพธ์กลับไปยังหน่วยความจำ ทั้งนี้ในการส่งข้อมูลระหว่างอุปกรณ์ต่าง ๆ ข้อมูลและคำสั่งจะอยู่ในรูปของสัญญาณไฟฟ้า แล้วส่งไปยังอุปกรณ์ต่าง ๆ ผ่านระบบส่งถ่ายข้อมูลภายในที่เรียกว่า บัส” (Bus)กลไกการทำงานของหน่วยประมวลผลกลางมีความสลับซับซ้อน ผู้พัฒนาซีพียูได้สร้างกลไกให้ทำงานได้ดีขึ้น โดยแบ่งการทำงานเป็นส่วน ๆ มีการทำงานแบบขนาน และทำงานเหลื่อมกัน เพื่อให้ทำงานได้เร็วขึ้นในด้านความเร็วของซีพียู ถูกกำหนดโดยปัจจัย อย่าง ปัจจัยแรก คือ สถาปัตยกรรมภายในของซีพียูแต่ละรุ่น ซีพียูที่ได้รับการออกแบบภายในที่ดีกว่าย่อมมีประสิทธิภาพในการประมวลผลที่ดีกว่า การพัฒนาทางด้านสถาปัตยกรรมก็มีส่วนทำให้ลักษณะของซีพียูแตกต่างกันไป ดังในรูปที่ 4.16 จะเห็นความแตกต่างระหว่างซีพียูเพนเทียมในรุ่นแรก ๆ ซึ่งแสดงในรูปที่4.16 (ก) กับซีพียูเพนเทียมโฟร์ ซึ่งแสดงในรูปที่ 4.16 (ข)
นอกจากนี้ อีกปัจจัยหนึ่งที่เป็นตัวกำหนดความเร็วของซีพียู คือ ความถี่ของสัญญาณนาฬิกา (Clock)ซึ่งเป็นสัญญาณไฟฟ้าที่คอยกำหนดจังหวะการทำงานประสานของวงจรภายในให้สอดคล้องกัน ในอดีตสัญญาณดังกล่าวจะมีความถี่ในหน่วยเป็นเมกะเฮิรตซ์ (Megahertz) หรือล้านครั้งต่อวินาที ดังนั้นสำหรับซีพียูที่มีสถาปัตยกรรมภายในเหมือนกันทุกประการ แต่ความถี่สัญญาณนาฬิกาต่างกัน ซีพียูตัวที่มีความถี่สัญญาณนาฬิกาสูงกว่าจะทำงานได้เร็วกว่า และซีพียูที่มีอยู่ในปัจจุบันมีความถี่ในระดับจิกะเฮิรตซ์ (Gigahertz)

สถาปัตยกรรมของหน่วยประมวลผลกลาง

สถาปัตยกรรมของหน่วยประมวลผลกลางที่เป็นที่รู้จัก

คอมพิวเตอร์แบบฝังตัว

  • สถาปัตยกรรม PowerPC 440 ของไอบีเอ็ม
  • สถาปัตยกรรม 8051 ของอินเทล
  • สถาปัตยกรรม 6800 ของโมโตโรลา
    • ใช้ในหน่วยควบคุม 68HC11 ซึ่งเป็นที่แพร่หลายอย่างมาก
  • สถาปัตยกรรม ARM ของ ARM (เคยเป็นส่วนหนึ่งของบริษัท Acorn Computers)
    • ใช้ใน เครื่องเล่นเพลง ไอพ็อด, เครื่องเล่นเกม เกมบอยแอดวานซ์, และ พีดีเอ จำนวนมาก 0
    • หน่วยประมวลผล XScale และ StrongARM ของอินเทลนั้น ใช้สถาปัตยกรรม ARM

เครื่องคอมพิวเตอร์ส่วนบุคคล

  • สถาปัตยกรรม x86 ของอินเทล
  • สถาปัตยกรรม 68006809, และ 68000 ของโมโตโรลา
  • สถาปัตยกรรม 6502 ของ MOS Technology
  • สถาปัตยกรรม Z80 ของ Zilog
  • สถาปัตยกรรม PowerPC ของไอบีเอ็ม (ในภายหลังคือพันธมิตร AIM alliance)
  • สถาปัตยกรรม AMD64 (หรือ x86-64) ของเอเอ็มดี
    • เข้ากันได้กับสถาปัตยกรรมแบบ x86 ของอินเทล

คอมพิวเตอร์เซิร์ฟเวอร์ และเวิร์คสเตชัน

มินิคอมพิวเตอร์จนถึงเมนเฟรม

  • สถาปัตยกรรม PDP-11 ของ DEC, และสถาปัตยกรรม VAX ที่ถูกพัฒนาต่อมา
  • สถาปัตยกรรม SuperH ของฮิตาชิ
  • สถาปัตยกรรมของคอมพิวเตอร์รุ่น UNIVAC 1100/2200 (ปัจจุบันสนับสนุนโดย Unisys ClearPath IX computers)
  • 1750A - คอมพิวเตอร์มาตรฐานของกองทัพสหรัฐ
  • AP-101 - คอมพิวเตอร์ของกระสวยอวกาศ

การทำงานของหน่วยประมวลผลกลาง

การทำงานของหน่วยประมวลผลกลาง


การทำงานของหน่วยประมวลผลกลางแบบพื้นฐาน
การทำงานของหน่วยประมวลผลกลางแบ่งออกตามหน้าที่ได้เป็นห้ากลุ่มใหญ่ๆ ดังนี้ โดยทำงานทีละคำสั่ง จากคำสั่งที่เรียงลำดับกันไว้ตอนที่เขียนโปรแกรม
  • Fetch - การอ่านชุดคำสั่งขึ้นมา 1 คำสั่งจากโปรแกรม ในรูปของรหัสเลขฐานสอง (Binary Code from on-off of BIT)
  • Decode - การตีความ 1 คำสั่งนั้นด้วยวงจรถอดรหัส (Decoder circuit) ตามจำนวนหลัก (BIT) ว่ารหัสนี้จะให้วงจรอื่นใดทำงานด้วยข้อมูลที่ใด
  • Execute - การทำงานตาม 1 คำสั่งนั้น คือ วงจรใดในไมโครโปรเซสเซอร์ทำงาน เช่น วงจรบวก วงจรลบ วงจรเปรียบเทียบ วงจรย้ายข้อมูล ฯลฯ
  • Memory - การติดต่อกับหน่วยความจำ การใช้ข้อมูที่อยู่ในหน่วยจำชั่วคราว (RAM, Register) มาใช้ในคำสั่งนั้นโดยอ้างที่อยู่ (Address)
  • Write Back - การเขียนข้อมูลกลับ โดยมีหน่วยจำ Register ช่วยเก็บที่อยู่ของคำสั่งต่อไป ภายหลังมีคำสั่งกระโดดบวกลบที่อยู่

การทำงานแบบขนานในระดับคำสั่ง (ILP)


การทำงานของหน่วยประมวลผลกลางแบบมี pipeline
โดยการทำงานเหล่านี้ถ้าเป็นแบบพื้นฐานก็จะทำงานกันเป็นขั้นตอนเรียงตัวไปเรื่อยๆ แต่ในหลักความเป็นไปได้คือการทำงานในแต่ละส่วนนั้นค่อนข้างจะเป็นอิสระออกจากกัน จึงได้มีการจับแยกกันให้ทำงานขนานกันของแต่ละส่วนไปได้ หลักการนี้เรียกว่า pipeline เป็นการทำการประมวลผลแบบขนานในระดับการไหลของแต่ละคำสั่ง (ILP: Instruction Level Parallelism) โดยข้อมูลที่เป็นผลจากการคำนวณของชุดก่อนหน้าจะถูกส่งกลับไปให้ชุดคำสั่งที่ตามมาในช่องทางพิเศษภายในหน่วยประมวลผลเอง

การทำงานของหน่วยประมวลผลกลางแบบมี pipeline และเป็น superscalar
การทำงานแบบขนานนี้สามารถทำให้มีความสามารถเพิ่มขึ้นได้อีกคือเพิ่มการทำงานแต่ละส่วนออกเป็นส่วนที่เหมือนกันในทุกกลุ่มแต่ให้ทำงานคนละสายชุดคำสั่งกัน วิธีการนี้เรียกว่าการทำหน่วยประมวลผลให้เป็น superscalar วิธีการนี้ทำให้มีหลายๆ ชุดคำสั่งทำงานได้ในขณะเดียวกัน โดยงานหนักของ superscalar อยู่ที่ส่วนดึงชุดคำสั่งออกมา (Dispatcher) เพราะส่วนนี้ต้องตัดสินใจได้ว่าชุดคำสั่งอันไหนสามารถทำการประมวลผลแบบขนานได้ หลักการนี้ก็เป็นการทำการประมวลผลแบบขนานในระดับการไหลของแต่ละคำสั่ง (ILP: Instruction Level Parallelism) เช่นกัน

การทำงานแบบขนานในระดับกลุ่มชุดคำสั่ง (TLP)

การทำงานของโปรแกรมคอมพิวเตอร์แต่ละโปรแกรมสามารถแบ่งตัวออกได้เป็นระดับกลุ่มชุดคำสั่ง (Thread) โดยในแต่ละกลุ่มสามารถทำงานขนานกันได้ (TLP: Thread Level Parallelism) ในระดับ2

หน่วยประมวลผลกลาง



หน่วยประมวลผลกลาง (central processing unit) หรือย่อว่า ซีพียู (CPU) เป็นวงจรอิเลคทรอนิกส์ที่ทำงาน หรือประมวลผล ตามชุดของคำสั่งเครื่องจากซอฟต์แวร์ คำนี้เริ่มใช้ในอุตสาหกรรมคอมพิวเตอร์ตั้งแต่ต้นศตวรรษ 1960s
ประมวลผลเปรียบเสมือนเป็นสมองของคอมพิวเตอร์ ในการทำหน้าที่ตัดสินใจหรือคำนวณ จากคำสั่งที่ได้รับมา เช่น การเปรียบเทียบ การกระทำการทางคณิตศาสตร์ ฯลฯ
โดยมีกระบวนการพื้นฐานคือ
·         - อ่านชุดคำสั่ง (fetch)
·         - ตีความชุดคำสั่ง (decode)
·         - ประมวลผลชุดคำสั่ง (execute)
·         - อ่านข้อมูลจากหน่วยความจำ (memory)
·         - เขียนข้อมูล/ส่งผลการประมวลกลับ (write back)

สถาปัตยกรรมของหน่วยประมวลผลกลาง ประกอบไปด้วย ส่วนควบคุมการประมวลผล (control unit) และ ส่วนประมวลผล (execution unit) และจะเก็บข้อมูลระหว่างการคำนวณ ไว้ในระบบเรจิสเตอร์