คนคอมพิวเตอร์

Archive for สิงหาคม 2008

 

หน้าแรก สารบัญ เกี่ยวกับบล็อกนี้ เกี่ยวกับผู้เขียน

 


ตอนจบ

ขั้นตอนง่ายๆ ที่คุณทำเองได้ เพื่อให้คอมพิวเตอร์มีสมรรถนะเต็มร้อย

 

 

  • บทความโดย : ลาภลอย วานิชอังกูร
  • จากนิตยสาร : ComToday

 

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

 

ลบโปรแกรมที่ไม่ได้ใช้

มีหลายโปรแกรมที่เราอาจเคยติดตั้งไว้แต่ไม่ได้ใช้งานอีกต่อไปแล้ว เราควรลบโปรแกรมเหล่านี้ออกไปให้หมด การลบโปรแกรมโดยลบเพียงไอคอนบน desktop ไม่มีประโยชน์อะไร เพราะไอคอนนั้นเป็นแค่ Short cut หรือตัวเชื่อมทางลัด หากเราลบ Short Cut ไฟล์ต่างๆ จะยังคงอยู่ในโฟลเดอร์ c:\Program Files การลบโปรแกรมโดยลบโฟลเดอร์เก็บโปรแกรมภายใน c:\Program Files ก็ไม่ใช่วิธีที่ถูกต้องอีกเช่นกัน เพราะแม้ไฟล์โปรแกรมจะถูกลบไปแล้ว แต่วินโดวส์ยังคงคิดว่าโปรแกรมยังอยู่เพราะค่าต่างๆ ที่บันทึกไว้ใน registry ไม่ได้ถูกลบไปด้วย

วิธีลบโปรแกรมที่ถูกต้องคือการ uninstall หรือการถอดถอนโปรแกรมซึ่งทำได้โดยเลือกไอคอน Add or Remove Programs ใน Control Panel (กุดปุ่ม Start, Setting, Control Panel แล้วดับเบิ้ลคลิกที่ไอคอน Add or Remove Programs) เมื่อมีกรอบข้อความ Add or Remove Programs ปรากฏขึ้นให้ตรวจสอบรายชื่อโปรแกรมว่ามีตัวใดบ้างที่เราไม่ต้องการแล้ว หรือคิดว่าจะไม่ใช้ ให้กดเลือกรายการนั้นแล้วกดปุ่ม Change/Remove โปรแกรม uninstall จะทำงานให้เราเลือกลบ (หรือติดตั้งเพิ่มเติม) โปรแกรมนั้นได้ ทำขั้นตอนนี้ซ้ำจนกว่าในรายการจะเหลือแต่โปรแกรมที่จำเป็นต้องใช้จริงๆ

 

กรอบข้อความ Add or Remove Programs

 

 

นอกจากโปรแกรมที่เราติดตั้งไว้ ตัววินโดวส์เองก็ติดตั้งโปรแกรมประยุกต์ใช้งานหลายอย่างไว้ด้วย ยกตัวอย่างเช่น

  • Fax Services
  • Internet Information Services (IIS)
  • Management and Monitoring Tools
  • Message Queuing
  • MSN Explorer
  • Outlook Express (ไม่มีประโยชน์หากเราใช้กูเกิ้ลเมน หรือฮอทเมล)
  • Windows Messenger (ปรกติเราจะใช้ MSN Messenger แทน)

 

โปรแกรมเหล่านี้ส่วนมากเราไม่ได้ใช้และควรลบทิ้งไปเสียด้วย วิธีลบทำได้โดยเปิดหน้า Add or Remove Programs สังเกตที่แถบด้านซ้ายมือจะมีปุ่ม Add/Remove Windows Components ให้กดเพื่อเปิด Windows Components Wizard ซึ่งจะแสดงรายชื่อโปรแกรมที่วินโดวส์ติดตั้งไว้ กดหน้าชื่อโปรแกรมที่ต้องการลบ เพื่อให้เครื่องหมายถูกหายไป ทำเช่นนี้ให้ครบทุกโปรแกรมที่ต้องการลบแล้วกดปุ่ม Next

 

กรอบข้อความ Windows Components Wizard

 

 

ล้าง registry

Registry เป็นระบบฐานข้อมูลที่วินโดวส์ใช้เก็บบันทึกสภาวะของระบบ เมื่อเราใช้คอมพิวเตอร์ไประยะหนึ่ง (สองถึงสามเดือน) registry จะเริ่มมีรายการที่คลาดเคลื่อน ขยะ และบันทึกที่ไม่ถูกต้อง ดังนั้นเราจึงควรปรับปรุงแก้ไข registry ให้กลับมีสภาพสมบูรณ์เป็นครั้งเป็นคราว

โชคร้ายที่วินโดวส์ไม่มีโปรแกรมปรับปรุงแก้ไข registry มาให้ แต่ไม่เป็นไร เพราะในอินเตอร์เน็ตมีโปรแกรมปรับปรุงแก้ไข registry ที่ใช้งานได้ดีให้เราดาวน์โหลดได้ฟรีหลายตัว ตัวที่แนะนำให้ใช้คือ RegSeeker (ดาว์นโหลดได้จาก www.snapfiles.com/download/dlregseeker.html) ให้ดาวน์โหลดมาติดตั้งแล้วเปิดโปรแกรม จะเห็นแถบซ้ายมือเป็นเมนูคำสั่ง ให้กดที่ Clean the Registry แล้วกดปุ่ม OK โปรแกรม RegSeeker จะล้างข้อมูลที่เป็นขยะใน registry ให้โดยอัตโนมัติ

 

โปรแกรม RegSeeker

 

 

ขจัดตัวกินแรงเครื่อง

มีโปรแกรมเล็กๆ หลายโปรแกรมที่แอบทำงานอยู่ในฉากหลัง เมื่อรวมกันเข้าก็กินพลังการประมวลผลของคอมพิวเตอร์ไปไม่น้อย ทำให้เรารู้สึกว่าเครื่องอืดผิดปรกติ โชคดีที่เราสามารถใช้โปรแกรม RegSeeker ขจัดตัวกินแรงเครื่องเหล่านี้ได้ ให้กดที่คำสั่ง Startup entries เมื่อกดแล้ว RegSeeker จะแสดงรายการโปรแกรมทั้งหมดที่จะเริ่มทำงานทันทีที่เรา restart วินโดวส์ เราสามารถลบโปรแกรมเหล่านี้ได้เป็นส่วนใหญ่ โดยเลือกโปรแกรมที่จะลบแล้วกดปุ่ม Del คอมพิวเตอร์บางเครื่องอาจจำเป็นต้องมีโปรแกรมบางอย่างทำงานตอนเริ่มต้น เช่นไดร์ฟเวอร์การ์ดจอ หรือการ์ดเสียง ดังนั้นก่อนลบดูให้แน่ใจว่าโปรแกรมที่เราจะลบไม่เกี่ยวข้องกับฮาร์ดแวร์ หากไม่รู้หรือไม่แน่ใจก็อย่าลบ

 

 

บำรุงฮาร์ดดิสก์

เมื่อใช้งานคอมพิวเตอร์ไปนานๆ ฮาร์ดดิสก์มักมีพื้นที่เล็กๆ ที่ทำงานบกพร่อง (bad sector) ข้อบกพร่องนี้หากลุกลามไปมากเข้าจะทำให้ประสิทธิภาพของระบบลดลง เพราะการอ่านข้อมูลจากฮาร์ดดิสก์ต้องใช้เวลานานกว่าปรกติ โชคดีที่วินโดวส์มีโปรแกรมซ่อมบำรุงฮาร์ดดิสก์มาให้แล้ว (ชื่อ Scandisk) วิธีเรียกใช้ทำดังนี้ เปิดโปรแกรม Windows Explorer คลิกขวาที่ไดร์ฟซี เลือกหัวข้อ Properties ในกรอบข้อความ Properties กด tab Tools ในกรอบ Error-checking ให้กดปุ่ม Check Now… เมื่อกดแล้วจะมีกรอบข้อความ Check Disk Local Disk ปรากฏขึ้น ให้กดเลือกหัวข้อทั้งสองหัวข้อ (คือ Automatically fix file system error และ Scan for and attempt recovery of bad sectors) แล้วกดปุ่ม Start

หากเราซ่อมบำรุงฮาร์ดดิสก์ที่ใช้เป็นตัวบูต (ไดร์ฟซี) วินโดวส์จะแสดงกรอบข้อความแจ้งว่าไม่สามารถ Scandisk ขณะนี้ได้ แต่จะประวิงไปจนกว่าจะถึงตอนบูตครั้งหน้า ให้กดปุ่ม Yes แล้วบูตเครื่อง โปรแกรม Scandisk จึงจะทำงาน ให้ทำเช่นนี้กับทุกพาร์ติชันและทุกฮาร์ดดิสก์ กระบวนการนี้อาจกินเวลานานพอสมควร

 

กรอบข้อความ Properties ของฮาร์ดดิสก์ขณะแสดง tab Tools

 

 

จัดเรียงข้อมูล

อย่างที่เรียนไปตอนต้นบทความแล้วว่าเมื่อใช้คอมพิวเตอร์ไปสักระยะหนึ่งพื้นที่ว่างในฮาร์ดดิสก์จะกระจัดกระจายไม่ต่อเนื่องเป็นผืนเดียวกันทำให้การอ่านข้อมูลจากฮาร์ดดิสก์ช้าลง (Fragment) โชคดีที่วินโดวส์แถมโปรแกรมจัดเรียงข้อมูล (Defragment) มาให้ด้วย วิธีเรียกใช้ก็คล้ายกับวิธีเรียกโปรแกรม Scandisk คือ เปิดโปรแกรม Windows Explorer คลิกขวาที่ไดร์ฟซี เลือกหัวข้อ Properties ในกรอบข้อความ Properties กด tab Tools ในกรอบ Defragmentation กดปุ่ม Defragment Now… วินโดวส์จะแสดงกรอบข้อความ Disk Defragmenter หากมีฮาร์ดดิสก์หลายตัว หรือมีตัวเดียวแต่แบ่งเป็นหลายพาร์ติชัน ให้เลือกไดร์ฟที่ต้องการแล้วกดปุ่ม Defragment หากฮาร์ดดิสก์มีความจุมาก กระบวนการนี้จะกินเวลานานเช่นกัน

 

โปรแกรม Defragment ในวินโดวส์

 

 

สุขภาพดีทั่วหน้า

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

 

หน้าแรก สารบัญ เกี่ยวกับบล็อกนี้ เกี่ยวกับผู้เขียน

 
ตอน 1

 

ขั้นตอนง่ายๆ ที่คุณทำเองได้ เพื่อให้คอมพิวเตอร์มีสมรรถนะเต็มร้อย

 

 

  • บทความโดย : ลาภลอย วานิชอังกูร
  • จากนิตยสาร : ComToday

 

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

 

ต้นตอของความอืด

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

  1. ซอฟท์แวร์ : โปรแกรมบางโปรแกรมๆ ที่เราติดตั้งไว้อาจลอบใส่งาน (task หรือ process) บางอย่างซึ่งจะทำงานอยู่ที่ฉากหลังตลอดเวลา ทำให้กินแรงเครื่องโดยไม่จำเป็น บางครั้งเรายกเลิกการติดตั้งโปรแกรม (remove program) แล้ว แต่ยังมีเศษซากบางอย่างหลงเหลืออยู่ นี่เป็นสาเหตุที่ทำให้คอมพิวเตร์ทำงานช้าลงได้
  2. ไวรัส : ไวรัสในที่นี้รวมถึงโปรแกรมมุ่งร้ายอื่นๆ เช่น หนอน สปายแวร์ โทรจัน ฯลฯ โปรแกรมเหล่านี้จะลอบทำสิ่งอัปมงคลหลายๆ อย่างอยู่หลังฉาก จึงกินแรงเครื่องไปบางส่วน
  3. Registry : วินโดวส์จะมีแฟ้มบันทึกภาวะของระบบเรียกว่า Windows registry การเพิ่มลดโปรแกรม (add/remove program) จะทำให้ registry เพิ่มและลดขนาดตามไปด้วย เมื่อเวลาผ่านไปบ่อยครั้งที่ข้อมูลใน registry จะผิดพลาดหรือมีขยะ เป็นสาเหตุให้วินโดวส์ทำงานช้าลง
  4. ฮาร์ดดิสก์ : เมื่อใช้คอมพิวเตอร์ไปสักระยะหนึ่ง การลบและเพิ่มข้อมูลที่เกิดขึ้นสะสมมีผลให้พื้นที่ว่างในฮาร์ดดิสก์ไม่ต่อเนื่องกัน แฟ้มข้อมูลใหม่จึงถูกเก็บไว้อย่างกระจัดกระจาย ทำให้การอ่านข้อมูลจากฮาร์ดดิสก์ช้าลง

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

 

ปรับเวอร์ชัน อุดช่องโหว่

ปรับเวอร์ชันในที่นี้ไม่ได้หมายถึงใช้ Windows XP อยู่แล้วอัพเกรดไปใช้ Windows Vista แต่หมายถึงให้ปรับไปเป็นตัวปรับปรุงแก้ไขใหม่สุด (service pack) ในวินโดวส์รุ่นนั้นๆ สาเหตุที่ต้องทำเช่นนั้นเพราะแฮกเกอร์มืด (พวกเจาะระบบและนักสร้างโปรแกรมมุ่งร้าย) มักหาช่องโหว่ในระบบรักษาความปลอดภัยของวินโดวส์รุ่นใหม่สุด และสร้างโปรแกรมโจมตีช่องโหว่นั้น บริษัทไมโครซอฟต์จึงปรับรุ่นเพื่อแก้ไขช่องโหว่ เหตุการณ์นี้จะเกิดเป็นงูกินหาง เราจึงควรปรับรุ่นวินโดวส์ในเครื่องของเราเป็นระยะๆ

การปรับรุ่นไม่มีอะไรยุ่งยาก เพียงเข้าไปที่เว็บไซต์ www.windowsupdate.com แล้วคลิกเลือกการปรับรุ่นให้ตรงกับวินโดวส์ที่ท่านใช้อยู่ โปรแกรมในหน้าเว็บจะดาวน์โหลดและติดตั้งตัวปรับปรุงแก้ไขใหม่สุดให้โดยไม่เสียค่าใช้จ่ายใดๆ

ในกรณีที่เป็น Windows XP เราสามารถตั้งค่าให้วินโดวส์ปรับรุ่นตัวเองโดยอัตโนมัติเมื่อบริษัทไมโครซอฟต์ออกตัวปรับรุ่นตัวใหม่ (จะมีการปรับเล็กๆ น้อยประปรายอยู่ตลอดเวลา) ซึ่งเป็นคุณสมบัติที่ดีมีประโยชน์ เพราะจะทำให้เรามั่นใจได้ว่าคอมพิวเตอร์ของเราจะปลอดภัยจากการโจมตีโดยเราไม่ต้องคอยกังวลเรื่องการปรับเวอร์ชัน

การตั้งค่าให้วินโดวส์ปรับรุ่นตัวเองโดยอัตโนมัตินี้ปรกติจะถูกกำหนดให้เป็นอย่างนั้นอยู่แล้วเมื่อติดตั้งวินโดวส์ หากท่านไม่แน่ใจก็สามารถตรวจสอบได้โดยดูใน System Properties (กดปุ่ม Start, Setting, Control Panel ดับเบิ้ลคลิกที่ไอคอน System) ในกรอบข้อความ System Properties ให้กดที่ tab Automatic Updates แล้วดูให้แน่ใจว่าหัวข้อ Automatic (Recommended) ถูกเลือกอยู่ (อย่างที่เห็นในรูป) หากหัวข้ออื่นๆ ถูกเลือกอยู่ให้คลิกที่หัวข้อ Automatic (Recommended) หนึ่งครั้ง

 

 

การตั้งค่าให้วินโดวส์ปรับรุ่นตัวเองโดยอัตโนมัติ

 

 

ต่อต้านมัลแวร์

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

สำหรับผู้ใช้ Windows XP และ Windows Vista ขอแนะนำให้ให้ Avast! โปรแกรมป้องกันไวรัสคุณภาพสูง ใช้งานได้ดี และที่สำคัญคือฟรี (เฉพาะ Home Edition) สามารถดาวน์โหลดได้ที่ www.avast.com ผู้ผลิตอ้างว่าขณะนี้มีผู้ลงทะเบียนใช้ทั่วโลกสามสิบล้านรายแล้ว Avast! สามารถค้นหาและทำลาย โปรแกรมมุ่งร้ายต่างๆ เช่น ไวรัส หนอน สปายแวร์ โทรจัน และอื่นๆ ที่แพร่หลายได้

 

Avast! โปรแกรมป้องกันไวรัสคุณภาพสูง ใช้งานได้ดี และที่สำคัญคือฟรี

 

 

สำหรับผู้ที่ใช้ Windows XP ขอแนะนำให้ใช้ Windows Defender โปรแกรมป้องกัน pop-up และสปายแวร์จากบริษัทไมโครซอฟท์ (ดาวน์โหลดได้ที่นี่) บริษัทไมโครซอฟท์ใจดีให้เราดาว์นโหลดใช้ฟรีเช่นกัน

 

Windows Defender โปรแกรมป้องกัน pop-up และสปายแวร์จากบริษัทไมโครซอฟท์

 

 

เก็บกวาดขยะ

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

วิธีเก็บกวาดทำได้โดยเปิดโปรแกรม Window Explorer คลิกขวาที่ฮาร์ดดิสก์ที่เราต้องการเก็บกวาด (ปรกติจะเป็นไดร์ฟซี) เลือกหัวข้อ Properties จะเห็นกรอบข้อความ Properties แสดงสถานะของฮาร์ดดิสก์ เช่นเนื้อที่ทั้งหมด เนื้อที่ว่าง มุมล่างด้านซ้ายมีปุ่ม Disk Cleanup ให้กดปุ่มนี้ เพราะนี่คือปุ่มทำหน้าที่กำจัดไฟล์ชั่วคราวหรือไฟล์ของระบบที่วินโดวส์ไม่ได้ใช้แล้ว ให้ทำกระบวนการนี้ซ้ำกับพาร์ติชันและฮาร์ดดิสก์อื่นๆ (ถ้ามี) ให้ครบทุกตัว

 

กรอบข้อความ Properties แสดงสถานะของฮาร์ดดิสก์และมีปุ่ม Disk Cleanup

 

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

  1. เปิดโปรแกรม Windows Explorer
  2. เลือกเมนู Tools
  3. เลือกหัวข้อ Folder Options…
  4. ในกรอบข้อความ Folder Options… ให้กด tab View
  5. กดให้มีเครื่องหมายบวกหน้ารายการ Show hidden files and folders
  6. กดให้ไม่มีเครื่องหมายบวกหน้ารายการ Hide extensions for known file types
  7. กดให้ไม่มีเครื่องหมายบวกหน้ารายการ Hide protected operating system files

 

ในกรอบข้อความ Folder Options… tab View

 

 

เมื่อทำตามขั้นตอนข้างบนแล้วต่อไปเราจะลบไฟล์ขยะของระบบ ให้เปิดใช้โปรแกรม Windows Explorer เปิดโฟลเดอร์ C:\Documents and Settings\xxx\Local settings\Temp (xxx คือชื่อที่ท่านใช้ในระบบ) ในโฟลเดอร์ Temp จะมีไฟล์และโฟลเดอร์ที่เป็นขยะจำนวนมาก ให้ลบทิ้งทั้งหมดโดยเลือกเมนู File, Select All, Delete

ระหว่างลบไฟล์ขยะอาจมีกรอบข้อความ Error Deleting File or Folder แสดงว่าอาจยังมีบางไฟล์หรือโฟลเดอร์ที่ถูกอ้างอิงจากระบบอยู่ ให้ยกเลิกการเลือกโฟลเดอร์นั้น แล้วลบที่เหลือ หากหาไม่เจอว่าโฟลเดอร์ใดเป็นสาเหตุของ Error ให้เลือกลบทีละโฟลเดอร์ ในกรณีที่คอมพิวเตอร์มีผู้ใช้งานหลายคน อาจมีโฟลเดอร์ Temp หลายชุด ให้ทำขั้นตอนนี้ช้ำกับผู้ใช้คนจนครบ การทำเช่นนี้จะทำให้ได้ที่ว่างในฮาร์ดดิสก์คืนมาจำนวนมาก และทำให้คอมพิวเตอร์ทำงานเร็วขึ้นด้วย

โปรดติดตามตอบจบ

 

หน้าแรก สารบัญ เกี่ยวกับบล็อกนี้ เกี่ยวกับผู้เขียน


ตอนจบ

สร้างลิงค์ลิสต์เป็นออพเจ็กต์แบบไทป์เซฟโดยไม่ต้องใช้พอยน์เตอร์

 

  • บทความโดย : ลาภลอย วานิชอังกูร
  • เขียนเมื่อ : วันเสาร์ที่ 25 สิงหาคม พ.ศ. 2550
  • พิมพ์ในนิตยสาร : WinMag

 

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


 

คลาสสร้างลิงค์ลิสต์

เมื่อนิยามโหนดเสร็จแล้วเราจะได้ไทป์ใหม่ (คือไทป์ชื่อ Node) เราสามารถเรียกใช้งานไทป์นี้ได้เหมือนไทป์อื่นๆ (เช่น int, char) ต่อไปเราจะนิยามคลาสชื่อ LinkedList ซึ่งจะนำไทป์นี้มาสร้างลิงค์ลิสต์

คลาส LinkedList อย่างง่ายที่สุดประกอบด้วยสมาชิกเพียงห้าตัว แบ่งเป็นสมาชิกแบบฟิลด์สองตัว (บรรทัดที่ 37 และ 38) และสมาชิกแบบเมธอดสามตัว (บรรทัดที่39,44 และ 54) ดังแสดงเป็นโครงสร้างแบบเอาท์ไลน์ (outline) ดังนี้

 

 

สมาชิกแบบฟิลด์ของคลาส LinkedList

สมาชิกแบบฟิลด์ของคลาส LinkedList มีเพียงสองตัวคือ front และ back ฟิลด์ทั้งสองนี้มีดาต้าไทป์เป็น Node front ทำหน้าที่ชี้โหนดแรกของลิงค์ลิสต์ back ทำหน้าที่ชี้โหนดสุดท้ายของลิงค์ลิสต์

 

ในรูปนี้ฟิลด์ front คือโหนดที่หนึ่ง ฟิลด์ back คือโหนดที่สี่

 

สมาชิกแบบเมธอดของคลาส LinkedList

คลาส LinkedList มีเพียงสามเมธอดคือ LinkedList ทำหน้าที่เป็นคอนสทรักเตอร์ AppendNode ทำหน้าที่เพิ่มโหนดใหม่ และ DisplayNodes ทำหน้าที่แสดงข้อมูลทั้งหมดในลิงค์ลิสต์

 

 

โค้ดที่เห็นข้างบนคือ คอนสทรักเตอร์ ทำหน้าที่กำหนดค่าเริ่มต้นให้แก่ฟิลด์ front และ back ให้เป็น null คือว่างเปล่า เพราะในขณะเริ่มต้นยังไม่มีโหนดใดๆ อยู่ภายในลิงค์ลิสต์เลย

 

 

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

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

 

 

การทำงานของเมธอด AppendNode สมมุติว่าเรากำลังใส่โหนดที่สองเข้าไป (ใส่ข้อมูล 34) คำสั่ง back.Next = myNode จะทำให้ค่า Next ของโหนดที่ 1 ชี้ไปยังโหนดสอง (เพราะตอนนี้ back คือโหนดที่ 1 และ myNode คือโหนดที่ 2) คำสั่ง myNode.Previous = back ทำให้ Previous ชี้ไปยังโหนดที่ 1 และสุดท้ายคำสั่ง back = myNode ทำหน้าที่เลื่อนตัวชี้ back ไปยังโหนดที่เกิดขึ้นใหม่

 

 

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

 

โปรแกรมทดสอบ

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

 

 

คำสั่งบรรทัดที่ 74 สร้างออพเจ็กต์ลิงค์ลิสต์โดยใช้ตัวแปรอ้างอิงชื่อ myList บรรทัดที่ 75 ถึง 78 แทรกโหนดใหม่เข้าสู่ลิงค์ลิสต์โดยใส่ข้อมูลเป็นเลขจำนวนเต็ม 10,20 และ 30 ตามลำดับ บรรทัดที่ 78 เรียกเมธอด DisplayNodes เพื่อแสดงข้อมูลทั้งหมดในลิงค์ลิสต์ บรรทัดที่ 79 เรียกเมธอด ReadLine เพื่อหยุดการทำงานของโปรแกรม (หากไม่ใส่ไว้ โปรแกรมจะปิดหน้าต่างไปก่อนที่เราจะทันดูผลลัพธ์)

ผลลัพธ์ที่ได้จากการทำงานของโปรแกรมนี้คือ

10

20

30

 

อาเรย์ลิสต์

เรานิยามคลาส Node และคลาส LinkedList เพื่อศึกษาหลักการทำงานของลิงค์ลิสต์เท่านั้น ในการใช้งานจริงเราไม่จำเป็นต้องนิยามลิงค์ลิสต์เอง เพราะ .NET Framework เตรียมคลาสไว้ให้แล้วคือ ArrayList อยู่ในเนมสเปส System.Collections วิธีใช้งานก็คล้ายๆ กัน โค้ดทดสอบการใช้งานอาร์เรย์ลิสต์เป็นดังนี้

 

 

ซอร์สโค้ด

ท่านสามารถดาวน์โหลดซอร์สโค้ดของบทความนี้ได้จากเว็บไซต์ laploy.com (เลือกหัวข้อดาวน์โหลด ไฟล์ชื่อ LinkedList.zip ภายในเป็นโซลูชันที่สร้างจาก Visual Studio .NET 2005)หากท่านมีข้อสงสัยใดๆ โปรดใส่คำถามไว้ที่กระดานถาม-ตอบซึ่งอยู่ในเว็บไซต์เดียวกัน

 

 

หน้าแรก สารบัญ เกี่ยวกับบล็อกนี้ เกี่ยวกับผู้เขียน

 

 
ตอน 1

 

สร้างลิงค์ลิสต์เป็นออพเจ็กต์แบบไทป์เซฟโดยไม่ต้องใช้พอยน์เตอร์


 

  • บทความโดย : ลาภลอย วานิชอังกูร
  • เขียนเมื่อ : วันเสาร์ที่ 25 สิงหาคม พ.ศ. 2550
  • พิมพ์ในนิตยสาร : WinMag

 

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

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

 

ลิงค์ลิสต์คืออย่างนี้

ลิงค์ลิสต์ (Linked List) คือโครงสร้างข้อมูลพื้นฐานอย่างหนึ่ง ดีกว่าอาร์เรย์ (array) ในแง่ที่สามารถปรับเปลี่ยนขนาดได้อย่างมีพลวัต ในการใช้งานอาร์เรย์เราต้องกำหนดขนาดที่แน่นอน และไม่สามารถเปลี่ยนขนาดภายหลังได้ หากไม่รู้ปริมาณข้อมูลก่อนล่วงหน้า เราจะไม่สามารถกำหนดขนาดที่เหมาะสมให้แก่อาร์เรย์ได้ (การกำหนดขนาดอาร์เรย์ให้มากไว้ก่อนทำให้เปลืองเนื้อที่ในหน่วยความจำ และไม่ใช้วิธีเขียนโปรแกรมที่ดี)

แต่สำหรับลิงค์ลิสต์ เราไม่จำเป็นต้องกำหนดขนาดตอนเริ่มใช้ และเพราะลิงค์ลิสต์สามารถเพิ่ม-ลดขนาดอย่างไรก็ได้ การนำลิงค์ลิสต์มาสร้างโครงสร้างข้อมูลแบบต่างๆ เช่น สแต็ก (stack) และคิว (queue) ด้วยลิงค์ลิสต์ จึงมีประสิทธิภาพกว่าการใช้อาร์เรย์

 

จัดการข้อมูลอย่างมีประสิทธิภาพ

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

วิธีที่ดีกว่าคือนำกระดาษมาแผ่นหนึ่ง แล้วเขียนรายการจัดเรียงหมายเลขโต๊ะเสียใหม่ หากใช้วิธีนี้เราสามารถจัดเรียงนักเรียนอย่างไรก็ได้โดยไม่เกิดความวุ่นวาย ยกตัวอย่างเช่น กระดาษแผ่นแรกเป็นรายการจัดเรียงตามลำดับชื่อ กระดาษอีกแผ่นเป็นรายการจัดเรียงลำดับตามความเก่งในการเรียน (เช่นเก่งสุดไว้บนสุด)

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

 

ถ้าเรามีห้องเรียนซึ่งมีนักเรียนสามคน หากเราต้องการเรียงลำดับของนักเรียนเสียใหม่

การเรียงข้อมูลด้วยรายการในกระดาษจะมีประสิทธิภาพกว่าการให้นักเรียนย้ายโต๊ะจริงๆ

 

 

มีลิงค์ลิสต์ที่ไหนมีโหนดที่นั่น

โหนด (Node) คือองค์ประกอบพื้นฐานของลิงค์ลิสต์ หากในลิงค์ลิสต์มีข้อมูลสิบรายการ มันก็จะมีโหนดสิบอันด้วย โหนดแต่ละโหนดมีองค์ประกอบสามส่วน คือส่วนทำหน้าที่เก็บข้อมูล (data) ส่วนเก็บตัวอ้างอิงไปยังโหนดก่อนหน้า (Previous) และส่วนเก็บตัวอ้างอิงไปยังโหนดถัดไป (Next)

 

 

โหนดมีองค์ประกอบสามส่วน คือส่วนทำหน้าที่เก็บข้อมูล

ส่วนเก็บตัวอ้างอิงไปยังโหนดก่อนหน้า และส่วนเก็บตัวอ้างอิงไปยังโหนดถัดไป

 

 

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

 

วิธีนิยามโหนด

หากเขียนโปรแกรมด้วยภาษาซี เราจะนิยามโหนดด้วยโครงสร้างข้อมูลแบบสตรัคเจอร์ (struct)เมื่อจะอ้างอิงถึงโหนดเราจะใช้พอยน์เตอร์ แม้ในภาษา C# จะมีพอยน์เตอร์เหมือนกัน แต่เราจะไม่ใช้ เพราะจุดมุ่งหมายของบทความนี้คือการสร้างลิงค์ลิสต์แบบไทป์เซฟ (type-safe เป็นวิธีเขียนโปรแกรมปรกติใน C#)

เมื่อจะไม่ใช้พอยน์เตอร์ เราก็นิยามโหนดด้วย struct ไม่ได้ เราจึงต้องนิยามโหนดด้วยคลาส แล้วนำคลาสไปสร้างออพเจ็กต์ เมื่อสร้างโหนดให้เป็นออพเจ็กต์แล้วเราจะสามารถอ้างถึงมันได้โดยไม่ต้องอาศัยพอยน์เตอร์

โครงสร้างแบบเอาท์ไลน์ (outline) ของคลาส Node เป็นดังนี้

 

 

บรรทัดแรกเป็นส่วนประกาศชื่อคลาส บรรทัดที่ 2 และ 12 กำหนดส่วนหัวและส่วนท้ายของตัวคลาส (คือกำหนดโค้ดส่วน body หรือไส้ในของคลาส) บรรทัดที่ 3 ถึงบรรทัดที่ 5 คือสมาชิกแบบฟิลด์ของคลาสนี้ บรรทัดที่ 7 ถึงบรรทัดที่ 9 คือสมาชิกแบบพร็อพเพอร์ตีของคลาส และสุดท้าย บรรทัดที่ 11 คือเมธอดซึ่งเป็นคอนสทรักเตอร์

 

สมาชิกแบบฟิลด์ของคลาส Node

ฟิลด์ หรือดาต้าฟิลด์ (data field) คือสมาชิกของคลาสซึ่งทำหน้าที่เก็บข้อมูล ช่วยให้ออพเจ็กต์สามารถเก็บข้อมูลได้ ฟิลด์เทียบได้กับตัวแปรโกบัล (global variable) ในภาษาซี แต่จะมีขอบเขตอยู่ภายในคลาสเท่านั้น

โปรดสังเกตว่าฟิลด์ทั้งหมดมีเอ็กเซสโมดิไฟเออร์ (access modifier) เป็นแบบไพรเวท (private) ซึ่งจะมีผลให้โค้ดภายนอกมองไม่เห็นฟิลด์ในออพเจ็กต์

หมายเหตุ : โค้ดภายนอก คือโค้ดที่อยู่ภายนอกคลาสนี้ หมายถึงคลาสซึ่งทำหน้าที่รับบริการ หรือคลาสที่นำคลาสนี้ไปใช้สร้างออพเจ็กต์ (caller หรือ client class) ต่อไปจะเรียกสั้นๆ ว่า “โค้ดภายนอก”

 

 

บรรทัดที่ 1 data ทำหน้าที่เป็นส่วนเก็บข้อมูลของโหนด โปรดสังเกตว่าผู้เขียนกำหนดดาต้าไทป์ หรือชนิดข้อมูลไว้เป็น int หรือเลขจำนวนเต็ม (integer) ทำให้ลิงค์ลิสต์ที่จะสร้างนี้ ทำงานได้กับเฉพาะข้อมูลแบบเลขจำนวนเต็มเท่านั้น หากต้องการให้ลิงค์ลิสต์ทำงานได้กับข้อมูลทุกชนิดต้องเปลี่ยนไปใช้เจนเนอริค (Generic)

บรรทัดที่ 2 previous คือตัวชี้ไปยังโหนดก่อนหน้าตัวมันในลิงค์ลิสต์ โปรดสังเกตว่าเราจะใช้ฟิลด์นี้อ้างถึงออพเจ็กต์แบบโหนด ดังนั้นดาต้าไทป์ของมันจึงต้องเป็นแบบโหนดด้วย โค้ดอาจดูแปลกเพราะเราอ้างถึงดาต้าไทป์ที่เรากำลังนิยามอยู่ภายในตัวนิยามเอง (คือเรากำลังนิยามคลาสชื่อ Node แต่สมาชิกภายในคลาสกลับมีดาต้าไทป์เป็นแบบ Node เสียเอง) ตัวแปลภาษา C# ยินยอมให้เราทำเช่นนี้ได้ การนิยามโหนดจึงสะดวกมาก

บรรทัดที่ 3 คือฟิลด์ชื่อ next ฟิลด์นี้คือตัวชี้ ทำหน้าที่ชี้ไปยังโหนดที่อยู่ถัดไปในลิงค์ลิสต์

 

สมาชิกแบบพร็อพเพอร์ตีของคลาส Node

นักเขียนโค้ดภาษาซีอาจสงสัยว่า พร็อพเพอร์ตีคืออะไร ทำหน้าที่อะไร ในภาษา C# พร็อพเพอร์ตีคือเมธอดพิเศษ ทำหน้าที่ให้โค้ดภายนอกสามารถเข้าถึงข้อมูลภายในออพเจ็กต์ได้ (เราจะนำคลาสนี้ไปสร้างออพเจ็กต์)

คลาส Node มีสมาชิกแบบพร็อพเพอร์ตี (property) สามตัว เท่ากันกับสมาชิกแบบดาต้าฟิลด์ โปรดสังเกตว่านอกจากจำนวนเท่ากันแล้ว ชื่อยังคล้ายกันอีกด้วย แต่ต่างที่ชื่อฟิลด์ตัวอักษรตัวแรกเป็นตัวเล็ก ขณะที่ชื่อของพร็อพเพอร์ตีอักษรตัวแรกจะเป็นตัวใหญ่ ยกตัวอย่างเช่น ฟิลด์ชื่อ data จะมีพร็อพเพอร์ตีชื่อ Data คู่กัน เนื่องจากภาษา C# มีความอ่อนไหวต่ออักษรตัวเล็ก-ใหญ่ ตัวแปลภาษาจึงมองว่าเป็นคนละชื่อกัน

คำสั่ง set และ get คือเอกเซสเซอร์ (accessor) คำสั่ง get ทำให้ client class สามารถอ่านข้อมูลจากฟิลด์ได้ และคำสั่ง get ช่วยให้ client class สามารถเขียนข้อมูลไปยังฟิลด์ได้

 

 

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

 

สมาชิกแบบเมธอดของคลาส Node

เมธอดคือกลุ่มโค้ดซึ่งทำหน้าที่ประมวลผล (คล้ายฟังก์ชันในภาษาซี) คลาส Node มีเมธอดอยู่ตัวเดียว และไม่ใช่เมธอดธรรมดา แต่เป็นเมธอดแบบคอนสทรักเตอร์(constructor method) ขอให้สังเกตว่าโค้ดของคอนสทรักเตอร์ จะเหมือนเมธอดทั่วไป ยกเว้นสองประการๆ แรกคือคอนสทรักเตอร์จะไม่มีรีเทินไทป์ (return type ค่าส่งกลับ) ประการที่สอง คอนสทรักเตอร์ จะต้องมีชื่อเดียวกับคลาสเสมอ

 

 

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

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

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

 

 

หน้าแรก     สารบัญ    เกี่ยวกับบล็อกนี้  เกี่ยวกับผู้เขียน


Laploy Vanichangkul
Professional IT consultant

Laploy Vanichangkul have been working in professional IT consultancy business for ten years. He started his carrier by develop business application using dBASEII, clipper and FoxPro. Today he is an expert in system integration using Microsoft technology such as ASP.NET, ADO.NET, Microsoft SQL Server 2008 and LINQ. It is a normal work day for him to deal with complex query that solve complex business rules. He have good experience in Data mining, Data Warehouse, OLAP (SSRS) and OLTP. He used to work in the international organization in area of database and Business Intelligence.

Beside database and Business Intelligence, his IT knowledge also apply to Microprocessor / Microcontroller Based Embedded System, Rich Internet Application, Framework Development in Object Oriented Programming using C#, NET Framework and Service Oriented Architecture for Enterprise Orchestration.

Laploy Vanichangkul speak fluency Thai and fair English. He have been working in IT projects in many countries include Thailand, India, Germany, Switzerland and The U.S.A. He have traveled throughout Europe and the U.K. That help him to understand the European custom and culture.

Recently, Laploy Vanichangkul gives IT consultancy to Thailand leading organization include TOT, CAT and Jasmine. He also have many publish book such as OOP C# ASP.NET” (ISBN 13:978-974-212-598-1) and Database – Query – T-SQL – Stored Procedure and regularly write articles for IT periodical.

Email: laploy@gmail.com
Phone: 084-007-5544
Web: www.laploy.com

 

 

Contributions

I’ve ten experience  in IT business. The companies I served are among the Blue Chip companies like CAT Telecom, TOT Public Company Limited, Q-House, Jasmin, Accenture, to name but a few. Hereunder are some few examples of my IT consultancy works;

 

Job Title: PEA SCADA MARS Master
Client: Provincial Electricity Authority (PEA)
Location: Thailand
Date: 2009-2010

Abstract
•    Over view: The SCADA applications include the distribution network model, connectivity analysis, power flow, fault isolation and system restoration, trouble call management, and volt/var control functions. The distribution network and graphical displays were imported from the corporate GIS using the GIS-Gateway.  These systems allow PEA to manage the operation of the distribution system in real-time, and provide tools that identify ways to optimize the network and improve the quality and reliability of service.
•    Approach: Area Distribution Dispatch Centres (ADDC), communicate with over 8,000 remote terminal units and Substation Automation Systems. The RTUs communicate with each ADDC using the DNP3 protocol over a combination of digital microwave, TDMA, telephone lines and UHF radio links.
•    Development: I have designed the hardware and software for MARS (Multi Address Radio System) Master that communicate with RTUs via UHF link.
Key technology: C#

 

 

Job Title: Network Management System
Client: Provincial Electricity Authority (PEA)
Location: Thailand
Date: 2010

Abstract
•    Over view: Network Management System (NMS) is running at each new ADDC that will he used by Authority personnel for network-wide diagnostic monitoring, maintenance, and  configuration of the UHF communications equipment, i.e., the MARS master radios, multiplexers, and  remote radios. 
•    Approach: The MARS NMS software shall support the communication of diagnostic data from all MARS radios within a MARS radio cell. The software shall connect to all master radios in the MARS communications system via dedicated modem, or hard wired RS-232 link.. Each master radio and remote radio shall have a unique diagnostic address.
•    Development: I have designed the hardware and software for Network Management System (NMS).
Key technology: C# 3.0 and Microsoft SQL Server 2008

 

Job Title : Cell sites remote monitoring system
Client : Communication Authorization of  Thailand (CAT)
Location: Bangkok
Date: 2006

Abstract:
•    Over view: Telecom shelter for cellular telephone cell sites in Thailand are suffering from heat and humidity. To maintain reliability of a cell site circuitry, three air-conditioner are brought in and set to run eight hours per unit in circle. Electric consuming and maintenance cost of cell sites’ air-conditioners generate major expense.
•    Approach: Since most upcountry cell sites are located in remote area. Access to those shelter are time consuming and expensive. To minimize on site visit for scheduled checking. The shelter temperature and humidity must be carefully monitoring. Also unusual electric consumption of the air-con must be aware.
•    Development: I designed a special microcontroller circuitry to captures temperature, humidity and electric consumption data. Utilize the RS-232 interface and a PC running Windows + NET Framework to collect data and record in the off-line MS Access database. These data then automatically sent to Internet and stored in MS SQL Server every ten seconds interval.
    Server-side programs are written in C# to allow user from  anywhere in the world to access and monitor the cell site status. Client-side script written in  JavaScript to produce streamline information updating (AJAX using XML to interchange data with C# server-side script) also featuring real-time graph on web browser.
    Information can be export to MS Excel for off-line analysis. On-line analysis also possible include line chart. Program has been test and work well in both Internet Explorer and Mozilla Firefox web browser.
•    Status: On-line
Key technology: ASP.NET 2.0, C#, JavaScript, AJAX, XML, MS-SQL Server and Micro controller using C language.

 

 

Job title : Telephone cable robbery SMS notification system
Client : TOT
Location: Thailand
Date: 2007

Abstract:
•    Over view: Last year TOT loss over 10 millions Baht due to telephone cable robbery. The robber cut telephone cable from electric pole in deserted location.
•    Approach: TOT need a system to notify police before the robber leave the scene. I develop a system which monitoring the telephone cable health. The SMS will be send to police mobile phone as soon as the system found telephone cable disconnect.
Development: I designed and create hardware and software for this project. I use cheap PC and simple cable monitoring circuit. The circuit connected to one free telephone line on the monitored cable. C# program in the PC will continually send line status to a web server. Server-side program (also in C#) will send SMS as soon as its found a bad bit.
•    Status: On-line

Key technology: ASP.NET 2.0, C#, JavaScript, AJAX, XML and MS-SQL Server 2005.

 

 

 

Job title : On-line Product Catalog (ASP.NET)
Client : Thailand2buy
Location: Bangkok
Date: 2007

Abstract:
•    Over view: Thailand2buy is a reseller in Bangkok whom export Thai products to the USA and Europe. They wanted to have an on-line catalog which buyer around the world can access all product information before make purchase in volume.
•    Approach: Thaiand2buy needs a website with dynamic content. They must be able to add, remove and edit all product information anytime by themselves.
Development: I made website design, both structure and artwork. I create web application model in ASP.NET 2.0 and C#. This application include product database authoring and user right management. This application will run in any computer with standard web browser.
    One of its may interesting feature is “Currency calculator” which cleverly employ C# delegate and Web service technology.
    The application is designed with OOP in mind. It is highly customizable. All codes are reusable and can be tailor into a new web site rapidly.
•    Status: On-line

Key technology: ASP.NET 2.0, C#, JavaScript, AJAX, XML and MS-SQL Server.

  

 

 

Job title : Layana Resort & Spa website
Client : Lanta Land development Co., Ltd.
Location: Lanta Island, Krabi
Date: 2007

Abstract:
•    Over view: Layana Resort is well-known five stars resort in the Lanta island, south of Thailand. Lanta Land wants a full features website which include information pages, photo gallery, rooms rate, packages information, room on-line reservation etc.
•    Approach: I designed all static pages in plain HTML and dynamic pages with C# in ASP.NET 2.0 for room reservation.
Development: These are some height-light feature.
Water wave title: Move mouse at the top title bar you will see water effect. This was written in Java (not JavaScript).
JavaScript menu bar: Has been designed to be interactive, fast and harmonize to the overall website design.
Restaurant Upgrade: The content of this section can be managed by Layana’s personal. Written using ASP.NET 2.0, C#, and MS-SQL Server
•    Status: On-line

Key technology: Java, ASP.NET 2.0 and C#, JavaScript, AJAX, XML and MS-SQL Server and HTML.

 

 

Job title : Club Car website
Client : Club Car Thailand Co., Ltd.
Location: Thailand
Date: January 2001

Abstract:

•    Over view: The client need to improve design of the website from old-fashion to modern-look design. Also want to add on-line car rental system.

•    Approach: Redesign the website using PhotoShop and Adobe Illustrator. On-line application was done with PHP script.

•    Development: These are some height-light feature.
o    Flash Animation: Some graphic is done in Shockwave technology.
o    Membership submission : The visitor can submit for special membership offers (written in VB Script).
o    Extranet: On-site club car personal connect to website for car rental status (written in VB Script).

Key technology: ASP, VB Script, MySQL and PHP.

 

 

Job Title: Multimedia Authoring Tool
Client: MIE Gmbh
Location: Frankfurt am Main, Germany
Date: 1996-1997

Abstract
•    Over view: The need of custom multimedia presentation for organization and product grow beyond in-house personal can cope with. The demand for easy to use yet powerful enough multimedia authoring tool  has rising. 
•    Approach: The client decided to develop their own multimedia authoring tool  to use internally and to provide service to their clients.
•    Development: I have designed a low cost and easy to use multimedia authoring tool  to served the requirement.
Key technology: VB6, ODBC and MS SQL Server 6

 

 

Job Title: Presentation layer for product database
Client: Medien und Veröffentlichung AG
Location: Zurich, Switzerland
Date: 1997-1999

Abstract
•    Over view: The client company is a world-wide business directory publication with several million of customer information in the database. The requirement was to present client data, include product picture, video  in the sophisticate manner.
•    Approach: The best solution was to develop Presentation layer beside from logic and database layer.
•    Development: I have designed Presentation layer wish be able to show text, picture and video on demand.
Key technology: VB6, ODBC and custom made DBMS

 

 

Other IT projects

In additional to the previous examples, there are more than 30 IT projects I have served in the past seven years. Hereunder are to name but a few;

Client: Allianz C.P.
Business : Insurance

 

Client: Suvarnabhumi Airport
Business: Airport

 

Client: Club Car
Business: Electric car

 

Client: Daijitsu
Business: Air conditioner manufacturer

 

Client: International School Bangkok (ISB)
Business: Education

 

Client: Jasmine International Public Company Limited
Business: Telecommunication

Client: Thairung
Business: Automobile Manufacturer

 

 

Client: Kongphop
Business: Frozen food

 

Client: Piyavate Hospital
Business: Health care

 

Client: Other Ways
Business: Tourist Agency

 

Client: Sky Eyes
Business: Flight Business

Publication

In the last five years I’ve been writing several books and magazine articles. I used to be an Editor at large of Computer Time magazine.  Hereunder are some examples of my work;

Publication: Data structures Demystified
ISBN: 974-9672-45-3
Year: 2005
Role: Translator

 

Publication: OOP C# ASP.NET
ISBN: 13:978-974-212-598-1
Year: 2007
Role: Author

 

Publication: Database – Query – T-SQL – Stored Procedure
ISBN: 978-616-08-0009-4
Year: 2009
Role: Author

 

หน้าแรก     สารบัญ    เกี่ยวกับบล็อกนี้  เกี่ยวกับผู้เขียน

เว็บบล็อก "คนคอมพิวเตอร์" หรือ Laploy’s articles เป็นบล็อกรวบรวมบทความจาก ลาภลอย วานิชอังกูร มีบทความหลายประเภทคละกัน เช่นบทความเกี่ยวกับการพัฒนาซอฟต์แวร์ บทความเกี่ยวกับการสร้างและดัดแปลงฮาร์ดแวร์ บทความเกี่ยวกับเทคโนโลยีคอมพิวเตอร์ทั่วไป บทความทั่วไป และนิยายนักสืบ

บทความเหล่านี้ส่วนใหญ่ถูกตีพิมพ์ในนิตยสารคอมพิวเตอร์หัวต่างๆ เช่น Windows Magazine (WinMag), Micro Computer, CHIP, Hobby Electronic, Computer Today, Windows IT Pro และอื่นๆ ในระหว่างปี ค.ศ. 2006 – 2008 และมีบางบทความที่เขียนขึ้นเป็นพิเศษเพื่อลงในบล็อกนี้โดยเฉพาะ

 

 

สวัสดีครับ ยินดีต้อนรับสู่เว็บบล็อก "คนคอมพิวเตอร์" หรือ Laploy’s articles

ขอให้สนุกกับการอ่านบทความต่างๆ นะครับ

 

 

หน้าแรก     สารบัญ    เกี่ยวกับบล็อกนี้  เกี่ยวกับผู้เขียน

  

  • เซลโปรเซสเซอร์ตอน 1 : ตัวประมวลผลสำหรับคอมพิวเตอร์ส่วน บุคคล หรือไมโครโปรเซสเซอร์ เป็นตลาดที่ใหญ่เกินกว่าจะให้อินเทลและ AMD ครอบครองไว้เพียงสองราย สามบริษัทยักษ์ใหญ่ระดับโลกจึงร่วมกันระดมสมองและแรงกายเพื่อสร้างซีพียูแบบ ใหม่ ซึ่งมีพลังการประมวลผลระดับซุปเปอร์คอมพิวเตอร์ ที่ท่านสามารถเป็นเจ้าของได้ในราคาที่ถูกอย่างไม่น่าเชื่อ
  • เซลโปรเซสเซอร์ตอนจบ : บทความนี้คือตอนสองซึ่งเป็นตอน จบของรายงานเจาะลึกตัวประมวลผลเซล (The Cell หรือ CELL/BE ไมโครโปรเซสเซอร์ที่โซนี ไอบีเอ็ม และโตชิบาร่วมกันสร้าง) เพื่อสำรวจว่าซีพียูนี้ดีหรือด้อยกว่าซีพียูที่เราใช้กันอยู่ในปัจจุบัน อย่างไร และมันจะมีผลกระทบต่อเราอย่างไรบ้างในอนาคต
  • สร้างลิงค์ลิสต์ใน C# [ตอน 1]: ลิงค์ลิสต์ช่วยให้เราจัดการกับ ข้อมูลปริมาณมากๆ ได้โดยสะดวก เพราะแทนที่เราจะโยกย้ายตัวข้อมูล เราสามารถโยกย้ายตัวชี้ข้อมูลในลิงค์ลิสต์แทนได้ หากข้อมูลมีปริมาณมากหรือมีขนาดใหญ่ การโยกย้ายข้อมูลจะใช้เวลานาน แต่ลิงค์ลิสต์มีขนาดเล็ก การโยกย้ายตัวชี้ข้อมูลในลิงค์ลิสต์จึงมีประสิทธิภาพกว่า

  • สร้างลิงค์ลิสต์ใน C# [ตอนจบ]: ตอนจบของบทความสอนวิธีสร้างลิงค์ลิสต์ อธิบายคลาสสร้างลิงค์ลิสต์ โปรแกรมทดสอบ และการสร้างอาเรย์ลิงค์ลิสต์

  • ยกระดับ-กระชับเครื่องพีซี [ตอน 1] : ขั้นตอนง่ายๆ ที่คุณทำเองได้ เพื่อให้คอมพิวเตอร์มีสมรรถนะเต็มร้อย บทความนี้จะนำเสนอวิธีปรับแต่ง คอมพิวเตอร์ของท่านให้มีสภาพสมบูรณ์ที่สุด เป็นขั้นตอนพื้นฐานง่ายๆ ใช้เครื่องมือที่มีอยู่แล้วในวินโดวส์ และซอฟท์แวร์ utility ที่ดาวน์โหลดมาใช้ได้ฟรีจากอินเตอร์เน็ต ขั้นตอนเหล่านี้จึงเป็นวิธีที่ประหยัดที่สุดในการเพิ่มประสิทธิภาพของ คอมพิวเตอร์

  • ยกระดับ-กระชับเครื่องพีซี [ตอนจบ] : ขั้นตอนง่ายๆ ที่คุณทำเองได้ เพื่อให้คอมพิวเตอร์มีสมรรถนะเต็มร้อย

  • นิยายนักสืบตอน 3 : DNS Pinning : หล่อนเพ่งมองอย่างไม่เชื่อสายตา คอมพิวเตอร์บนโต๊ะทำงานของแต่ละคนบัดนี้กำลังทำสิ่งอัศจรรย์เกินความคาดคิดอย่างที่สุด!

  • เล่นภาพซับซ้อนใน ActionScript [AS3] : สร้างฉากหลังเป็นออพเจ็กต์ และมีตัวการ์ตูนเดินข้างหน้า

  • ฮาร์ดดิสก์แสงเพลง [ตอน 1] : ฮาร์ดดิสก์เก่าอย่าเพิ่งโยนทิ้ง นำมาดัดแปลงเป็นเครื่องยิงลำแสงเลเซอร์ที่ทำงานตามเสียงดนตรีกันดีกว่า

  • ฮาร์ดดิสก์แสงเพลง [ตอนจบ] : ฮาร์ดดิสก์เก่าอย่าเพิ่งโยนทิ้ง นำมาดัดแปลงเป็นเครื่องยิงลำแสงเลเซอร์ที่ทำงานตามเสียงดนตรีกันดีกว่าตอนจบ

  • นิยายนักสืบ ตอน 4 แฮกเกอร์มืด ปล้นเหนือเมฆ : “เปรี้ยง!” ทันใดนั้นนรกก็แตก! อากาศในปอดถูกดูดด้วยอำนาจของแรงอัด คลื่นความร้อนกระแทกผนังกระจกทั้งสี่ด้านแตกกระจาย มีเสียงคนหวีดร้องและการเคลื่อนไหวอย่างคลุ้มคลั่ง แสงสีขาวสว่างวาบขึ้นกลบภาพทุกอย่างในคลองจักษุ โอ้! ผมตาบอดเสียแล้ว

  • สร้างสแตกด้วยลิงค์ลิสต์ใน C# : สร้างสแตกที่เพิ่ม-ลดขนาดได้อย่างมีพลวัตสไตล์เมนเนจโค้ด โครงสร้างข้อมูลสแตก (stack หรือกองซ้อน) มีหลักการทำงานแบบ “เข้าล่าสุดได้ออกก่อน” (List in – First out หรือ LIFO) ยกตัวอย่างเช่น เมื่อเราพับเสื้อผ้าแล้ววางซ้อนไว้เป็นตั้ง เมื่อต้องการหยิบผ้ามาใส่ เราต้องหยิบชิ้นที่อยู่บนสุดก่อน วันรุ่งขึ้นจึงหยิบผ้าตัวถัดไป ไล่ไปเช่นนี้จนถึงตัวล่างสุด เราจะไม่หยิบผ้าตัวที่อยู่กลางๆ หรือล่างสุดออกมาก่อน เมื่อจะนำผ้าไปใส่ในตั้ง เราต้องใส่ไว้บนสุดของตั้ง เราจะไม่นำไปแทรกไว้ตรงกลางหรือล่างสุด …

  • ของเล่นไฮเทค [ตอน 1] [ตอน 2] : ตรุษ จีนแล้วจะมัวนั่งทับอังเปากันทำไม ควักเงินออกมาซื้อของเล่นกันดีกว่า บทความนี้จะแนะนำของเล่นไฮเทคเด็ดๆ สำหรับผู้ชื่นชอบเทคโนโลยีและมีความเป็นเด็กในหัวใจ

  • ActionScript 3.0 : ซ่อนโค้ดไว้หลังฉาก : วิธีเขียน Flex เอพลิเกชันแบบโค้ดบีไฮนด์ (code-behind) กับสามโครงงานด้านแฟ้มตัวอักษร ไม่ ว่าจะเขียนโปรแกรมเกม หรือโปรแกรมประยุกต์ใช้งานทางธุรกิจ เรามักหลีกเลี่ยงการอ่านข้อมูลจากแฟ้มข้อมูลตัวอักษรไม่ได้ (text file ต่อไปจะเรียกย่อว่า TF)บทความนี้ผู้เขียนจะแสดงวิธีสร้างหน้าเว็บที่มีส่วนประมวลผลด้าน TF และวิธีทำให้เป็นโค้ดบีไฮนด์สามโปรเจ็กต์

  • ยกระดับ-กระชับเครื่องพีซี [ตอน1] [ตอน2] : บทความ นี้จะนำเสนอวิธีปรับแต่งคอมพิวเตอร์ของท่านให้มีสภาพสมบูรณ์ที่สุด เป็นขั้นตอนพื้นฐานง่ายๆ ใช้เครื่องมือที่มีอยู่แล้วในวินโดวส์ และซอฟท์แวร์ utility ที่ดาวน์โหลดมาใช้ได้ฟรีจากอินเตอร์เน็ต ขั้นตอนเหล่านี้จึงเป็นวิธีที่ประหยัดที่สุดในการเพิ่มประสิทธิภาพของ คอมพิวเตอร์

  • สร้าง Mouse Air Pad [ตอน1] [ตอน2] : จะทนรำคาญผ่ามือที่ชุ่มเหงื่อไปทำไม มาประดิษฐ์แผ่นรองเมาส์ที่มีระบบระบายอากาศกันดีกว่า คนที่ใช้คอมพิวเตอร์อย่างหนัก เป็นเวลานาน เช่นนักเล่นเกม ผู้ที่ทำงานกับโปรแกรมโฟโต้ชอป หรือผู้ที่สร้างภาพสามมิติด้วยโปรแกรมมายา มักมีปัญหาร่วมกันอยู่อย่างหนึ่ง นั่นคืออาการมือชุ่มเหงื่อ โรคนี้เป็นวงจรอุบาทว์ เพราะเมื่อเป็นแล้วจะทำให้มือและเมาส์ลื่น ซึ่งจะทำให้การเลื่อนเมาส์ขาดความแม่นยำ เป็นผลให้เกิดความเครียด เมื่อเครียดแล้วจะยิ่งทำให้เหงื่อออกมากขึ้น ทำให้ในที่สุดต้องหยุดงานลงกลางคัน

  • คิวน่ารักเพราะสร้างจากลิงค์ลิสต์ [ตอน 1][ตอน2][ตอน3][ตอน4] : บทความนี้มีจุดมุ่งหมายเพื่อ เสนอวิธีเขียนโปรแกรมแบบ OOP แสดงการทำงานของโครงสร้างข้อมูล แสดงตัวอย่างอัลกอริทึม แสดงวิธีเขียนโค้ดด้วยภาษา C# แสดงการเขียนโปรแกรมแบบเมนเนจโค้ด และแสดงวิธีสร้างคิวด้วยลิงค์ลิสต์แบบเจนเนอริค

  • นิยายนักสืบตอน : ตัวดูดมะเร็ง [ตอน1][ตอน2] ชนกพรกำลังตรวจสอบโค้ดคำสั่ง ขณะได้ยินเสียงผิดปรกติ หล่อนเหลียวมองออกไปนอกหน้าต่าง ท้องฟ้ามีดาวให้เห็นเพียงไม่กี่ดวงเพราะเป็นคืนเดือนเพ็ญ เลยหมู่ไม้ออกไปเห็นท้องทะเลดำมืด แสงจันทร์สะท้อนยอดคลื่นระยิบระยับ หล่อนละสายตาจากหน้าต่างกลับมามองสำรวจในห้อง ศูนย์คอมพิวเตอร์ขณะนี้ว่างเปล่า เจ้าหน้าที่ทั้งหมดออกเวรไปแล้ว ห้องโถงค่อนข้างมืด ตามไฟไว้เพียงบางจุด

  • คลัสเตอร์ : ซุปเปอร์คอมพิวเตอร์ส่วนตัว[ตอน1] [ตอน2] จะเสียเงินหลายร้อยล้านซื้อซุปเปอร์คอมพิวเตอร์ไปทำไม ในเมื่อคุณสร้างเองได้โดยใช้เงินเพียงเสี้ยวเดียว

  • เราเตอร์เทเบิ้ล [ตอน1] [ตอน2] เราเตอร์ที่คุณซื้อมาอาจมีอะไร ซ่อนไว้มากกว่าที่คิด ภายในเราเตอร์มีอะไร? อะไรคือโฮมเกตเวย์? อะไรคือ DHCP, PPPoE, MAC, AP, SSID, Channel, WEP, 802.1x, WPA, PSK Key, Pre-Shared, RADIUS, Net Mask, Port Forwarding ฯลฯ เชิญค้นหาคำตอบทั้งหมดนี้ได้ บทความนี้จะแนะนำให้ท่านรู้จักกับเราเตอร์ ซอฟท์แวร์ในเราเตอร์ ความหมายของคำศัพท์บางคำที่เกี่ยวกับระบบเครือข่าย และวิธีกำหนดค่าของซอฟท์แวร์ในเราเตอร์ เพื่อให้เครือข่ายในบ้านทำงานได้อย่างมีประสิทธิภาพและปลอดภัยจากการบุกรุก

     

 

หน้าแรก     สารบัญ    เกี่ยวกับบล็อกนี้  เกี่ยวกับผู้เขียน

 

 

[ตอนจบ]

 

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

 

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

 

 

  • บทความโดย : ลาภลอย วานิชอังกูร
  • เขียนเมื่อ : Tuesday, January 08, 2008
  • พิมพ์ในนิตยสาร : WinMag

บทความนี้คือตอนสองซึ่งเป็นตอนจบของรายงานเจาะลึกตัวประมวลผลเซล (The Cell หรือ CELL/BE ไมโครโปรเซสเซอร์ที่โซนี ไอบีเอ็ม และโตชิบาร่วมกันสร้าง) เพื่อสำรวจว่าซีพียูนี้ดีหรือด้อยกว่าซีพียูที่เราใช้กันอยู่ในปัจจุบันอย่างไร และมันจะมีผลกระทบต่อเราอย่างไรบ้างในอนาคต ในตอนที่แล้วผู้เขียนได้นำเสนอหัวข้อต่างๆ ดังนี้ [อ่านบทความตอนแรกที่นี่]

  • กว่าจะกลายเป็นเซล : ประวัติความเป็นมาของโครงการ
  • การผลิตและการตลาดของเซล : การแบ่งงานกันทำของสามบริษัทยักษ์ใหญ่
  • สถาปัตยกรรมของ "เซล" : โครงสร้างภายในของตัวประมวลผลสะท้านโลก
  • การประมวลผลแบบกระจาย : การทำงานประสานกันระหว่างหน่วยต่างๆ ในเซล
  • กายวิภาคส่วนฮาร์ดแวร์ของเซล : หน่วยการทำงานต่างๆ ภายในตัวประมวลผล
  • Power Processor Element : ส่วนต่างๆ ของหน่วยประมวลผลเพาเวอร์ในเซล
  • เทคโนโลยีเพาเวอร์ : เป็นเทคโนโลยีที่ใช้ในซีพียูแบบเพาเวอร์พีซีและในเซล
  • Synergistic Processor Elements : ตัวประมวลผลแบบเวคเตอร์ภายในเซล
  • โลคัลสตอร์ : เทคโนโลยีเพื่อให้เข้าถึงข้อมูลในแรมได้เร็วขึ้น
  • โลคัลสตอร์กับแคช : เปรียบเทียบจุดแข็งจุดอ่อนระหว่างโลคัลสตอร์กับแคช
  • Locking Cache : หลักการทำงานของลอคกิงแคชในเซล

 

ในบทความตอนจบนี้ท่านจะได้พบกับหัวข้อต่างๆ ดังต่อไปนี้

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

 

การประมวลผลแบบสตรีม

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

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

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

โดยทั่วไปแล้วการประมวลผลแบบสตรีมไม่จำเป็นต้องใช้แถบความกว้างของสัญญาณสูงมากนัก แต่เซลก็มีแถบความกว้างของสัญญาณสูงมากอยู่แล้ว และยิ่งไปกว่านั้นการเชื่อมต่อระหว่างระบบที่ใช้เซลยังถูกออกแบบมาให้ทำได้พร้อมกันหลายๆ ระบบ มีผลให้การประมวลผลแบบสตรีมระหว่างหลายๆ SPE เป็นไปได้อย่างต่อเนื่องพร้อมๆ กันโดยไม่มีระบบใดเป็นตัวถ่วง

 

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

 

 

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

 

ถ้าคุณคิดว่าพีซีของคุณแรงแล้วละก็…

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

แม้ซีพียูในคอมพิวเตอร์เดกส์ทอปบางตัวจะมีหน่วยประมวลผลแบบเวคเตอร์ภายใน (เช่น SSE, VMX และ AltiVec) แต่ซีพียูเองไม่ได้เป็นตัวประมวลผลแบบเวคเตอร์อย่างแท้จริง หน่วยประมวลผลแบบเวคเตอร์ภายในเป็นเพียงหน่วยที่เสริมการทำงาน เพื่อเพิ่มคำสั่งพิเศษเข้าสู่ชุดคำสั่งหลัก (คำสั่งพวกมัลติมีเดีย) และพวกมันจำเป็นต้องใช้ทรัพยากรร่วมกับหน่วยประมวลผลกลาง ตรงข้ามกับ SPE ที่เป็นตัวประมวลผลแบบเวคเตอร์อย่างแท้จริง แต่ละตัวทำงานโดยอิสระ มีหน่วยความจำเป็นของตนเอง และที่สำคัญคือในหนึ่งเซลมี SPE มากถึงแปดตัว

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

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

 

เซลถูกนำไปใช้สร้างอุปกรณ์บอร์ดแบนด์

 

 

เรื่องของ EIB และ DMA

DMA (ย่อจาก Direct Memory Access หมายถึงการเข้าถึงหน่วยความจำโดยตรง) เป็นกลไกที่ช่วยให้เกิดการผ่องถ่ายข้อมูลระหว่างส่วนต่างๆ ในซีพียูและแรมได้โดยตรง ไม่ต้องอาศัยการอ่านข้อมูลที่ละไบต์ผ่านคำสั่งของซีพียูที่ช้ากว่ามาก ในเซลรุ่นแรกจะมีตัวควบคุมดีเอ็มเอหรือ DMAC ทำหน้าที่ยักย้ายถ่ายเทข้อมูลระหว่างแรมกับ SPE และ PPE ผ่านบัสขนาด 1024 บิต และมีกลไกป้องกันการเขียนข้อมูลทับข้ามบล็อก ในเซลรุ่นล่าสุด DMAC ก็ยังเหมือนเดิม แต่ตัดเรื่องกลไกป้องกันการเขียนข้อมูลทับข้ามบล็อกออก และบัสข้อมูล 1024 บิตถูกแทนที่ด้วยบัสแบบวงแหวนที่เล็กกว่าชุดหนึ่งเรียกว่า EIB (ย่อจาก Element Interconnect Bus)

EIB กอปรขึ้นจากบัสขนาดสิบหกบิตจำนวนสี่ชุด ทำให้สามารถยักย้ายถ่ายเทข้อมูลระหว่างแรมกับ SPE และ PPE ได้พร้อมๆ กันถึงสามจุด บัสนี้ทำงานที่ความเร็วเพียงครึ่งเดียวของซีพียู ในทางทฤษฏี EIB สามารถย้ายข้อมูลได้ในอัตรา 96 ไบต์ต่อหนึ่งรอบการทำงาน (384 กิกกะไบต์ต่อวินาที) แต่ไอบีเอ็มประกาศว่าในทางปฏิบัติ EIB จะทำงานได้เพียงสองในสามของอัตราดังกล่าวเท่านั้น

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

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

 

ความสั้น-ยาวของเส้นบนแผ่นวงจรพิมพ์จะมีผลต่อการมาถึงของสัญญาณด้วย วิศวกรผู้ออกแบบเมนบอร์ดจึงต้องคอยระมัดระวังให้เส้นบนแผ่นวงจรพิมพ์ที่เป็นบัสข้อมูลทั้งหมดมีความยาวเสมอกัน

 

หน่วยความจำและส่วนติดต่อโลกภายนอก

หน่วยประมวลผลกลางทุกตัวล้วนจำเป็นต้องเชื่อมต่อกับหน่วยความจำและโลกภายนอก สิ่งที่โซนีและโตชิบาตัดสินใจทำคือซื้อเทคโนโลยี "เยลโลสโตน" และ "เรดวูด" จากบริษัทแรมบัส อันเป็นเทคโนโลยีที่ใช้ในแรมแบบ XDR และส่วนติดต่อโลกภายนอกแบบ FlexIO

เทคโนโลยีทั้งสองมีความน่าสนใจเพราะนอกจากจะมีพลังการถ่ายเทข้อมูลที่สูงจัดจนน่าทึ่งแล้ว มันยังถูกออกแบบมาให้สร้างเมนบอร์ดได้ง่ายอีกด้วย เมื่อเกิดการถ่ายเทข้อมูลที่ความถี่สูงมากๆ ความสั้น-ยาวของเส้นบนแผ่นวงจรพิมพ์จะมีผลต่อการมาถึงของสัญญาณด้วย วิศวกรผู้ออกแบบเมนบอร์ดจึงต้องคอยระมัดระวังให้เส้นบนแผ่นวงจรพิมพ์ที่เป็นบัสข้อมูลทั้งหมดมีความยาวเสมอกัน แต่ XDR และ FlexIO ใช้เทคโนโลยีแบบ FlexPhase ที่สามารถรับมือกับการมาถึงของสัญญาณที่แตกต่างกันได้ จึงเบาแรงผู้ออกแบบเมนบอร์ดลงได้มาก

ระบบหน่วยความจำของเซลถูกออกแบบมาให้มีลักษณะเดียวกับสถาปัตยกรรมส่วนอื่นๆ คือเน้นให้มีความเร็วสูงจัด นอกจากนั้นยังถูกออกแบบให้มีการรบกวนต่ำ แต่มีแถบช่องสัญญาณกว้างมาก การติดต่อระหว่าง SPE กับหน่วยความจำทำได้เป็นบล็อกขนาด 128 ไบต์ ส่วนการติดต่อระหว่าง PPE กับหน่วยความจำมีขนาดเท่าใดไม่ทราบแน่ชัด แต่เชื่อว่าน่าจะมีขนาดเท่ากันเพราะขนาดของข้อมูลที่มุ่งเข้าสูงแคชเป็นเช่นนั้น

เซลใช้หน่วยความจำความเร็วสูงแบบ XDR RAM แถบช่องสัญญาณอยู่ที่ 25.6 กิกกะไบต์ต่อวินาที ซึ่งพิจารณาได้ว่าสูงกว่าพีซีทั่วไป แต่ก็เป็นเรื่องสมเหตุผลเพราะไม่ว่าจะมีให้มากเพียงใดก็ตาม SPE จะสามารถบริโภคแถบช่องสัญญาณได้จนหมดเกลี้ยง แต่ผู้ผลิตเซลไม่สามารถทำให้ช่องสัญญาณกว้างไปกว่านี้แล้ว (ปัจจุบันใช้บัสข้อมูลมากถึง 72 ขา) เพราะยิ่งขามากราคาของชิพก็จะยิ่งสูง ปัจจุบันเซลมีอัตราถ่ายเทข้อมูลที่แต่ละขา 3.2 กิกกะไบต์ แต่ XDR ถูกออกแบบมาให้ทำงานได้สูงสุดถึง 6.4 กิกกะไบต์ดังนั้นการเพิ่มความเร็วเป็นสองเท่าจึงเป็นไปได้

 

 

โตชิบามีแผนจะใช้เซลในโน้ตบุ๊กรุ่นใหม่

 

 

ขีดจำกัดของหน่วยความจำ

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

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

 

เบลดหนึ่งหน่วยมีตัวประมวลผลเซลคู่กันสองตัว เมื่อนำมาประกอบกันเป็นชุดใหญ่รวม 64 เซลพบว่าได้อำนาจประมวลผลสูงถึง 16 เทราฟล็อป ซึ่งเป็นความเร็วระดับซุปเปอร์คอมพิวเตอร์

 

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

บริษัทไอบีเอ็มผลิตแม่ข่ายแบบเบลด (blade system ดูรายละเอียดในบทความ PC Clustering นิตยสาร WinMag ฉบับ 173  บทความโดยลาภลอย วานิชอังกูร) เบลดหนึ่งหน่วยมีตัวประมวลผลเซลคู่กันสองตัว เมื่อนำมาประกอบกันเป็นชุดใหญ่รวม 64 เซลพบว่าได้อำนาจประมวลผลสูงถึง 16 เทราฟล็อป ซึ่งเป็นความเร็วระดับซุปเปอร์คอมพิวเตอร์ (เคลย์ ทู มีความเร็วเพียง 1.9 กิกกะฟล็อป)

 

ตัวจัดการหน่วยความจำ

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

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

 

 

ภาพที่เกิดจากอำนาจของเซลโปรเซสเซอร์

 

 

แท่งคอนกรีต

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

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

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

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

สถาปัตยกรรมเซลสวนกระแสนี้ โดยกำหนดให้โมเดลการเขียนโปรแกรม (programming model หมายถึงรูปแบบการเขียนโปรแกรม เช่นการเขียนโปรแกรมแบบ 64 บิต การเขียนโปรแกรมบนดอตเน็ต และการเขียนโปรแกรมแบบคู่ขนานเป็นต้น) ของเซลจะมีลักษณะตรงกันข้ามกับแอ็บส์แทรกท์ นั่นคือให้ผู้เขียนโค้ดอ้างถึงฮาร์ดแวร์โดยตรงหรือแบบคอนกรีต (concrete ในที่นี้หมายถึงการนำไปใช้อย่างดิบๆ ไม่มีการแปลงรูปให้เป็นนามธรรมเพื่อลดหรือซ่อนความซับซ้อนเสียก่อน เพราะถือว่าโมเดลนั้นคงที่หรืออยู่ตัวดีแล้ว)

 

 

 

 

 

เมื่อเราต้องเขียนโปรแกรมควบคุม SPE เราจำเป็นจะต้องเขียนโดยอ้างถึง SPE โดยตรง (ไม่ได้อ้างถึงแอ็บส์แทรกท์ที่เป็นตัวแทน) เป็นการเขียนโปรแกรมที่ระบุถึงฮาร์ดแวร์ของจริง ยกตัวอย่างเช่นการเขียนโปรแกรมอ้างถึง SPE จะมีโลคัลสตอร์ขนาด 256K ที่มีรีจิสเตอร์จำนวน 128 ตัว ไม่มากหรือน้อยไปกว่านั้น ไม่เหมือนสถาปัตยกรรม x86 หรือเพาเวอร์พีซี ที่จะมีจำนวนรีจิสเตอร์ไม่แน่นอน แตกต่างไปตามโมเดลการเขียนโปรแกรม ส่วนซีพียูแบบทรานส์เมตา (Transmeta บริษัทผู้ผลิตซีพียูกินไฟน้อยสำหรับคอมพิวเตอร์พกพา) ยิ่งแล้วใหญ่ เพราะไม่เพียงแต่รีจิสเตอร์เท่านั้นที่ไม่แน่นอน แม้แต่สถาปัตยกรรมทั้งหมดก็ยังเอาแน่ไม่ได้ขึ้นอยู่กับว่าเราเขียนโปรแกรมโดยใช้โมเดลแบบใด

การหันหลังให้กับแอ็บส์แทรกท์ของเซลแม้จะแทบหมือนการลบหลู่สิ่งศักดิ์สิทธิ์และมีจุดเสียให้วิจารณ์ได้มากมาย แต่มันก็มีข้อได้เปรียบใหญ่อยู่ประการหนึ่ง นั่นคือประประสิทธิภาพที่เพิ่มขึ้น เพราะการมี แอ็บส์แทรกท์ หลายๆ ชั้นทำให้ต้องแปลงโค้ดกันหลายทอด (บางทีเป็นสิบทอด) ด้วยเหตุนี้เครื่อง 486 ความเร็ว 50MHz ที่เคยทำงานได้ดีในระบบปฏิบัติการรุ่นเก่า เมื่อเจอระบบปฏิบัติการรุ่นใหม่กลับอืดเป็นเรือเกลือ

ข้อเสียของการไม่ใช้แอ็บส์แทรกท์คือพัฒนาโปรแกรมได้ยากและผู้ออกแบบฮาร์ดแวร์จะเปลี่ยนแปลงระบบมากนักไม่ได้ ข้อเสียประการหลังนี้ใหญ่กว่าข้อแรก แต่ถ้าสังเกตดีๆ จะเห็นว่าตัวประมวลผลสมัยใหม่ไม่ได้ถูกเปลี่ยนแปลงสถาปัตยกรรมไปมากนัก ยกตัวอย่างเช่น AMD64 แม้จะเป็นการยกเครื่องตัวประมวลผลขนานใหญ่ แต่เมื่อดูรายละเอียดแล้วกลับพบว่ามันไม่แตกต่างจากเอธลอนสักเท่าใด ทางฝ่ายอินเทล เพนเทียม-เอ็ม ก็มีสถาปัตยกรรมที่ย้อนกลับไปได้ถึงเพนเทียมโปร ตัวประมวลผลแบบดูอัลคอร์ทั้งจากอินเทลและไอบีเอ็มยิ่งไม่มีความเปลี่ยนแปลงในส่วนสถาปัตยกรรมหลักเลยแม้แต่นิดเดียว

ผู้ออกแบบตัวประมวลผลเซลคงจะไม่เปลี่ยนแปลงสถาปัตยกรรมระดังล่างสุดในอนาคต จึงกำหนดให้โมเดลการเขียนโปรแกรมเป็นแบบอยู่ตัว (แต่ก็มีผู้กล่าวว่าระบบมีความอ่อนตัวพอที่จะวิวัฒน์ได้ในอนาคต) จาวาสามารถทำงานข้ามระบบปฏิบัติการและฮาร์ดแวร์ได้เพราะอาศัย "เวอร์ชวลแมชชีน" (เครื่องจักรเสมือน หมายถึงโปรแกรมที่จำลองตัวเป็นซีพียู) ที่เหมือนกันในทุกๆ แพลตฟอร์ม แม้ว่าซีพียูและระบบปฏิบัติการจะเปลี่ยนไปแต่เวอร์ชวลแมชชีนไม่เปลี่ยน เซลก็มีลักษณะเช่นเดียวกันนี้แต่ใช้วิธีที่แตกต่างกันโดยสิ้นเชิง จาวาอาศัย เวอร์ชวลแมชชีน ซึ่งเป็นซอฟต์แวร์ ส่วนเซลก็มีแมชชีนเหมือนกัน แต่เป็นกลไกในตัวซีพียูจริงๆ (ไม่ใช่เวอร์ชวลแมชชีน) ดังนั้นหากเราเขียนโปรแกรมควบคุม SPE ในระบบปฏิบัติการ OS X โค้ดเดียวกันนั้นก็ยังคงทำงานได้อย่างถูกต้องภายใต้ระบบปฏิบัติการวินโดวส์หรือลินุกซ์ เพราะในทุกๆ กรณีผู้ที่นำคำสั่งไปปฏิบัติการคือส่วนฮาร์ดแวร์ของเซลเอง

ที่พูดอย่างนี้ไม่ได้หมายความว่าเราจะต้องเขียนโปรแกรมด้วยภาษาแอสเซมบลี ตัวประมวลผลเซลก็มีตัวแปลภาษาได้เหมือนชาวบ้านเขา ดูอย่างจาวาที่แม้จะมี เวอร์ชวลแมชชีน แต่นักเขียนโค้ดก็ไม่ต้องเขียนภาษาเครื่อง (machine language) ให้กับเวอร์ชวลแมชชีน แต่ใช้ภาษาระดับสูงคือภาษาจาวาได้ หรืออย่างดอตเน็ต ไมโครซอฟต์ได้สร้างภาษาเครื่องขึ้นใหม่สำหรับดอตเน็ตโดยเฉพาะ นักเขียนโค้ดคนไหนอยากจะเขียนภาษาแอสเซมบลี้เล่นก็ได้ แต่ไม่จำเป็นเพราะดอตเน็ตมีตัวแปลภาษาต่างๆ ให้เลือกใช้เป็นกระบุง

 

 

การที่ SPE ของเซลมีรีจิสเตอร์จริงๆ เพียง 128 ตัว (PPE มี 32 ตัว) และมีโลคัลสตอร์อีก 256K ย่อมทำให้การสร้างตัวแปลภาษาลำบากไม่น้อย แต่เมื่อมองในอีกมุมหนึ่งมันก็ทำให้การสร้างตัวแปลภาษาทำได้ง่ายขึ้นเหมือนกัน เพราะเราสามารถเขียนโค้ดเพื่อตรวจสอบว่ากำลังเกิดอะไรขึ้นและปรับสภาพการแปลให้มีประสิทธิภาพสูงสุดได้ง่าย ตัวแปลภาษาไม่ต้องตรวจสอบเพื่อเปรียบเทียบว่าจะเป็นอย่างไรหากนำข้อมูลไปวางในโมเดลอื่นๆ เพราะตัวประมวลผลเซลมีเพียงโมเดลเดียว

 

เซลวันนี้และพรุ่งนี้

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

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

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

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

 

 

หน้าแรก     สารบัญ    เกี่ยวกับบล็อกนี้  เกี่ยวกับผู้เขียน

 

[ตอน1]

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

 

 

  • บทความโดย : ลาภลอย วานิชอังกูร
  • เขียนเมื่อ : Tuesday, January 08, 2008
  • พิมพ์ในนิตยสาร : WinMag

บทความนี้คือรายงานเสนอข้อมูลเจาะลึกถึงระดับสถาปัตยกรรมของตัวประมวลผลเซล (The Cell หรือ CELL/BE) เพื่อสำรวจว่าซีพียูนี้ดีหรือด้อยกว่าซีพียูที่เราใช้กันอยู่ในขณะนี้หรือไม่ และมันจะมีผลกระทบต่อเราในอนาคตมากน้อยอย่างไร

 

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

เคน คุตะระจิ บิดาแห่งเครื่องเล่นเกมเพลย์สเตชัน

 

 

กว่าจะเป็นเซล

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

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


   
  เครื่องเล่นเกมเพลย์สเตชันสามของโซนีที่ใช้ตัวมวลผลเซล 

 

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

 


แผ่นวงจรของ PS3 ชิพที่เห็นล้อมเส้นสีแดงคือเซล

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

 

การผลิตและการตลาดของเซล

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

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

 

ศูนย์คอมพิวเตอร์ของไอบีเอ็ม ณ เมืองออสติน รัฐเทกซัส

 

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

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

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

 

สถาปัตยกรรมของ "เซล"

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

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

 

บอร์ดพัฒนาซอฟต์แวร์สำหรับซีพียูเซล โตชิบาผลิตออกขายเพื่อให้นักพัฒนาทดลองเล่นเซล

 

 

เซลเพียงตัวเดียวมีอำนาจการประมวลผลสูงถึง 256GFLOPS (คำนวณเลขทศนิยมได้ 256 พันล้านครั้งต่อวินาที)

 

ประมวลผลแบบกระจาย

ไอบีเอ็มอ้างว่าเซลทำงานเร็วกว่าซีพียูใดๆ ที่มีอยู่ในขณะนี้สิบเท่า แม้คำอวดอ้างนี้จะดูน่าขันแต่อันที่จริง GPU (Graphic Processor Unit ตัวประมวลผลที่อยู่ในการ์ดจอ) ทั่วไปก็ทำงานเร็วกว่าซีพียูส่วนใหญ่อยู่แล้ว เทคโนโลยีที่ใช้ในเซลมีลักษณะเดียวกันกับที่ใช้ใน GPU ดังนั้นคำกล่าวอ้างของไอบีเอ็มจึงไม่เกินเลยความจริง แต่เซลต่างจาก GPU ตรงที่ GPU ถูกออกแบบมาเพื่องานเฉพาะเจาะจง (คือการประมวลผลทางภาพเท่านั้น) ในขณะที่เซลถูกออกแบบให้ทำงานได้อเนกประสงค์

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

นอกจากจะทำงานได้ดีในการประมวลผลแบบกระจายแล้ว เซลยังทำงานได้ดีภายในเครื่องๆ เดียวด้วย เพราะเซลเพียงตัวเดียวมีอำนาจการประมวลผลสูงถึง 256GFLOPS (คำนวณเลขทศนิยมได้ 256 พันล้านครั้งต่อวินาที) เมื่อทำงานที่ความถี่สัญญาณนาฬิกา 4GHz ตาม "กฏของอัมดาห์ล" ตัวประมวลผลทั่วไปมักทำงานไม่ได้ตามตัวเลขระบุอำนาจการประมวลผล สาเหตุเกิดจากข้อจำกัดต่างๆ เช่นความเร็วในการเคลื่อนย้ายข้อมูลระหว่างแรมกับซีพียู แต่สำหรับเซลมันสามารถทำงานได้ตามนั้นจริงๆ เพราะมันถูกออกมาแตกต่างจากซีพียูอื่นๆ เพื่อตัดปัญหาคอขวดทั้งหมด

 

กายวิภาคส่วนฮาร์ดแวร์ของเซล

หน่วยฮาร์ดแวร์ของเซลมีส่วนประกอบต่างๆ ดังนี้

  • หน่วย Power Processor Element หรือ PPE ถูกสร้างจาก PowerPC ขนาด 64 บิตพร้อม VMX จำนวนหนึ่งชุด
  • หน่วย Synergistic Processor Element (SPE) แปดชุด เป็นซีพียูที่ทำงานแยกกันโดยอิสระ
  • หน่วย Element Interconnect Bus (EIB) หนึ่งชุด เป็นหน่วยซึ่งทำหน้าที่ควบคุมการเชื่อมต่อหน่วยต่างๆ ที่อยู่ภายในทั้งหมด
  • หน่วย Direct Memory Access Controller (DMAC) หนึ่งชุด ทำหน้าที่เคลื่อนย้ายข้อมูลระหว่างแรมกับซีพียู
  • หน่วย Rambus XDR memory Controller สองชุด แต่ละชุดสามารถผ่านข้อมูลได้ที่ความเร็ว 12.8 GB ต่อวินาที ทำให้เซลมีแบนวิดธ์ในการติดต่อกับหน่วยความจำสูงถึง 25.6GB
  • หน่วย Rambus FlexIO Interface สองชุด เมื่อรวมกันแล้วทำให้เซลมีแบนวิดธ์ในการติดต่อกับอุปกรณ์รอบข้างสูงถึง 76.8GB

 

 

ส่วนประกอบต่างๆ ภายในหน่วยฮาร์ดแวร์ของเซล (บน)

 

ภาพถ่ายแผ่นซิลิกอนของเซล

 

ต่อไปนี้เป็นข้อมูลจำเพาะต่างๆ ของส่วนฮาร์ดแวร์เซล

  • ทำงานได้สูงสุดที่ความเร็ว 4GHz
  • แบนวิดธ์ในการติดต่อกับหน่วยความจำ 25.6GB
  • แบนวิดธ์ในการติดต่อกับอุปกรณ์รอบข้าง 76.8GB
  • 256GFLOPS ในการคำนวณละเอียดปรกติ
  • 25GFLOPS ในการคำนวณละเอียดสองเท่า
  • 256GOPS เลขจำนวนเต็ม
  • ขนาดชิพ 235ตารางมิลลิเมตร
  • จำนวนทรานซิสเตอร์ 235 ล้านตัว
  • กินไฟ 60-80 วัตต์

 

เซลมีขนาดเพียง 235 มิลลิเมตร แต่มีทรานซิสเตอร์อัดแน่นอยู่ภายในมากถึงสองร้อยสามสิบห้าล้านตัว

 

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

Power Processor Element

โครงสร้างและการทำงานของ Power Processor Element หรือ PPE จะเหมือนซีพียูปรกติทั่วไป ทำหน้าที่ควบคุมการทำงานของ SPE โปรแกรมส่วนใหญ่รวมถึงระบบปฏิบัติการในคอมพิวเตอร์ที่มีเซลเป็นหัวใจจะทำงานที่ PPE และมันจะทำหน้าจัดสรรงานที่ซับซ้อนไปรันบน SPE แต่ละตัว ยกตัวอย่างเช่น ในขณะที่เรารันโปรแกรมสังเคราะห์เสียง โค้ดส่วนระบบปฏิบัติการและโปรแกรมประยุกต์ส่วนใหญ่จะทำงานภายใน SPE แต่งานที่ซับซ้อนกินแรงซีพียูมากๆ คือส่วนสังเคราะห์เสียงจะถูกแยกออกไปรันใน SPE พร้อมกันหลายๆ ตัว

 

สถาปัตยกรรมของ PPE

 

PPE มีขนาด 64 บิต เป็นสถาปัตยกรรมแบบเพาเวอร์คล้ายในชิพ PowerPC มีแคชขนาด 512K สถาปัตยกรรมนี้ไม่เหมือนชิพของอินเทลและ AMD แต่จะเหมือนตัวประมวลผลที่ใช้ในคอมพิวเตอร์ของบริษัทแอปเปิล แม้สถาปัตยกรรมเพาเวอร์จะมีความเข้ากันได้กับโค้ดของชิพ PowerPC ในระดับไบนารี เพราะมีคำสั่งภาษาเครื่องเหมือน PowerPC แต่โครงสร้างการทำงาน PPE แตกต่างจากชิพ 970 หรือ G5 ทำให้เปรียบเทียบความเร็วโดยพิจารณาจากสัญญาณนาฬิกาเพียงอย่างเดียวไม่ได้

 

คอมพิวเตอร์ของบริษัทแอปเปิลที่ใช้ตัวประมวลผลแบบ PowerPC

 

 

ไอบีเอ็มนำเทคโนโลยีที่เป็นนวัตกรรมซึ่งคิดค้นไว้สำหรับชิพเพาเวอร์มาใส่ไว้ใน PPE จำนวนมาก เช่น POWER5 อันเป็นเทคโนโลยีที่ทำให้ซีพียูรันงานได้สองเธรดพร้อมๆ กัน เทคโนโลยีไฮเปอร์ไวเซอร์ที่ช่วยให้ซีพียูรันระบบปฏิบัติการได้สองโอเอสพร้อมๆ กัน และเทคโนโลยี VMX ที่ช่วยเพิ่มประสิทธิภาพของโปรแกรมระบบปฏิบัติการ

 

 

เทคโนโลยีเพาเวอร์

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

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

 

ไอบีเอ็มยังนำเทคโนโลยีที่ใช้ในเครื่องเมนเฟรมและเครื่องมินิคอมพิวเตอร์มาใช้ใน PPE ด้วย ทำให้นอกจากเซลสามารถทำงานกับระบบปฏิบัติการ big iron ซึ่งออกแบบมาสำหรับสถาปัตยกรรมเพาเวอร์แล้ว เซลยังสามารถวิ่งระบบปฏิบัติการ OS/400 ได้ ผู้สันทัดกรณีเชื่อว่าไอบีเอ็มมีแผนจะทำให้เซลใช้ได้กับระบบปฏิบัติการ AIX ซึ่งเป็นระบบปฏิบัติการแบบยูนิกซ์แบบของไอบีเอ็มสำหรับคอมพิวเตอร์ขนาดใหญ่ (ยังไม่มีคำยืนยันจากไอบีเอ็ม)

หน่วย PPE คือส่วนแกนหลักหรือคอร์ของเซล ซีพียู PPC Tri-Core ที่ใช้ในเครื่องเล่นเกม Xbox 360 ก็มีสถาปัตยกรรมที่คล้ายคลึงกันเพราะพัฒนามาจากรากฐาน PowerPC เช่นเดียวกัน แต่ PPE เป็นเพียงส่วนคอร์ของเซลเท่านั้น ส่วนที่ทำงานจริงจังจะอยู่ใน SPE ที่มีอยู่มากถึงแปดหน่วย

 

<< โปรเซสเซอร์ IBM Power5

 

 

Synergistic Processor Elements

Synergistic Processor Elements หรือ SPE เป็นตัวประมวลผลแบบเวคเตอร์ (ตัวประมวลผลแบบ Vector หรือ SIMD คือตัวประมวลผลที่ใช้เพื่อการประมวลผลแบบขนาน โดยคำสั่งเดียวจะสามารถรับข้อมูลได้หลายชุดพร้อมๆ กัน) เป็นสถาปัตยกรรมแบบเดียวกับที่พบได้ในซุปเปอร์คอมพิวเตอร์ โดยมีซุปเปอร์คอมพิวเตอร์เคลย์ หนึ่ง เป็นผู้ประเดิม สถาปัตยกรรม MMX และ SSE ที่ในซีพียูของอินเทลและ AMD และ VMX ที่ใช้ในตัวประมวลผลของแอปเปิลก็มีหลักการทำงานคล้ายๆ กันนี้ SPE จะใช้ได้ดีกับงานประมวลผลทางภาพ เสียง สามมิติ และการคำนวณทางวิทยาศาสตร์

SPE มีการทำงานและคำสั่งคล้ายกับ AltiVec ซึ่งเป็นสถาปัตยกรรมที่ปรากฏในชิพ G4 ของโมโตโรลา G5 และ POWER6 ของไอบีเอ็ม เป็นชุดคำสั่งแบบ SIMD ซึ่งทำหน้าที่คำนวณเลขจำนวนเต็มและทศนิยม แต่ SPE ไม่เหมือน AltiVec เพราะมีการเปลี่ยนแปลง เพิ่ม และลดคำสั่งไปจำนวนหนึ่ง และรีจิสเตอร์จำนวน 128 ตัวได้ถูกนิยามหน้าที่เสียใหม่ SPE มีการเพิ่มตัวกระทำทางทศนิยมขนาด 64 บิตขึ้นหลายตัว และตัดตัวปัดเลขจำนวนเต็มล้นหลักออกไป ความแตกต่างระหว่าง SPE และ AltiVec ทำให้เข้ากันไม่ได้ในระดับไบนารี แต่ก็ไม่แตกต่างกันโดยสิ้นเชิง ดังนั้นหากนำซอร์สโค้ดมาคอมไพล์ใหม่ โปรแกรมที่เขียนเพื่อทำงานใน AltiVec จะสามารถทำงานใน SPE ได้เช่นกัน

 

สถาปัตยกรรมของ SPE

 

ภายในเซลมี SPE แปดหน่วย ซึ่งมองได้ว่าเป็นโปรเซสเซอร์ที่ทำงานไม่ขึ้นแก่กัน แต่ละหน่วยประกอบด้วยรีจิสเตอร์ขนาด 128 บิต 128 ตัว มีหน่วยประมวลผลเลขทศนิยมความละเอียดปรกติสี่ตัว และตัวประมวลผลเลขจำนวนเต็มอีกสี่ตัว แต่ละหน่วยทำงานได้ด้วยความเร็ว 32 GFLOP มีหน่วยความจำแบบ "โลคัลสตอร์" (Local store)ขนาด 256KB ทำหน้าที่ทดข้อมูล SPE แต่ละหน่วยมีขนาดห้ามิลลิเมตร กินไฟห้าวัตต์ (เมื่อทำงานที่ 4GHz) ไอบีเอ็มอ้างว่า SPE แต่ละหน่วยมีประสิทธิภาพพอๆ กับซีพียูระดับหรูสุดในคอมพิวเตอร์เดกส์ทอปหนึ่งเครื่อง

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

 

 

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

 

 

โลคัลสตอร์

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

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

 

โลคัลสตอร์ใน SPE แต่ละชุดจะเชื่อมต่อกับบัสแบบ EIB ที่เชื่อมต่อกับแรมด้วยความเร็วสูงมาก

 

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

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

 

โลคัลสตอร์กับแคช

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

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

 

Locking Cache

หลักการใช้งานหน่วยความจำของ PPE แตกต่างจาก SPE มันไม่ใช้โลคัลสตอร์อย่าง SPE แต่ใช้ "ลอคกิงแคช" (Locking Cache) ซึ่งเป็นแคชแบบที่นิยมใช้ในชิพประมวลผลแบบฝังตัว ซีพียู XScale ซีพียูสำหรับเครื่องเล่นเกม XBox 360 และซีพียู G3-G4 ต่างก็ใช้ลอคกิงแคชกันทั้งนั้น

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

 

โปรดติดตามตอนต่อไปซึ่งเป็นตอนจบในโพสหน้า

 


เกี่ยวกับบล็อกนี้

เว็บบล็อก “คนคอมพิวเตอร์” หรือ Laploy’s articles เป็นบล็อกรวบรวมบทความจาก ลาภลอย วานิชอังกูร มีบทความหลายประเภทคละกัน เช่นบทความเกี่ยวกับการพัฒนาซอฟต์แวร์ บทความเกี่ยวกับการสร้างและดัดแปลงฮาร์ดแวร์ บทความเกี่ยวกับเทคโนโลยีคอมพิวเตอร์ทั่วไป บทความทั่วไป และนิยายนักสืบ

เกี่ยวกับผู้เขียน

ลาภลอย วานิชอังกูร เป็นผู้เชี่ยวชาญการพัฒนาแอพลิเกชันฐานข้อมูลและ Business Intelligence โดยเริ่มจากการพัฒนาโปรแกรมด้วย dBaseII, Clipper, FoxPro ปัจจุบันเป็นผู้เชี่ยวชาญในการบูรณาการระบบฐานข้อมูลด้วยเทคโนโลยีของไมโคร ซอฟต์เช่น ASP.NET, ADO.NET, Microsoft SQL Server 2008 และ LINQ ชำนาญการเขียนคิวรีเพื่อแก้ปัญหาทางธุรกิจที่ซับซ้อน Data mining, Data Warehouse, OLAP (SSRS), OLTP เคยออกแบบฐานข้อมูลสัมพันธ์ในองค์กรระหว่างประเทศ เคยพัฒนาแอพลิเกชันฐานข้อมูลในโครงการขนาดใหญ่หลายโครงการ และเคยให้คำปรึกษาด้าน BI ในศูนย์คอมพิวเตอร์ (T-Center) ในองค์กรของประเทศฝรั่งเศส
นอกจากงานฐานข้อมูลแล้ว ลาภลอย วานิชอังกูร ยังเชี่ยวชาญการพัฒนาซอฟต์แวร์ระบบฝังตัว (Microprocessor / Microcontroller Based Embedded System) งานพัฒนาแอพลิเกชันในอินเตอร์เน็ตแบบ RIA (Rich Internet Application) งานพัฒนาโครงสร้างพื้นฐานของซอฟต์แวร์ด้วยหลักการ OOP (Framework Development in Object Oriented Programming) ด้วยภาษา C# และ .NET Framework และงานบูรณาการระบบในองค์กรหรือ SOA (Service Oriented Architecture for Enterprise Orchestration) เคยร่วมงานกับทีมพัฒนาซอฟต์แวร์ในหลายๆ ประเทศ เช่น ไทย อินเดีย สวิส เยอรมัน และประเทศสหรัฐอเมริกา
ปัจจุบัน ลาภลอย วานิชอังกูร ทำหน้าที่ให้คำปรึกษาการวางระบบ IT (เช่น SQL, OLAP,.NET, SCADA, BI, SOA และอื่นๆ) ให้แก่หน่วยงานขนาดใหญ่หลายแห่ง และมีบทความทางวิชาการตีพิมพ์ในวารสารหลายเล่มอย่างสม่ำเสมอ และเป็นผู้เขียนหนังสือ "เรียนรู้ด้วยตนเอง DataBase - Query - T-SQL - Stored Procedure" และ “เรียนรู้ด้วยตนเอง OOP C# ASP.NET” (ISBN 13:978-974-212-598-1)
ท่านสามารถติดต่อผู้เขียนได้ที่อีเมล laploy@gmail.com

เรียนรู้ด้วยตนเอง OOP C# ASP.NET

ชื่อหนังสือ : เรียนรู้ด้วยตนเอง OOP C# ASP.NET โดย : ลาภลอย วานิชอังกูร จัดพิมพ์จัดจำหน่ายโดย : บริษัท ซีเอ็ดยูเคชั่น จำกัด (มหาชน) ISBN : 13:978-974-212-598-1 ราคา : 349 บาท จำนวนหน้า : 648 ขนาด : 19x29 ซ.ม.

เรียนรู้ด้วยตนเอง DataBase – Query – T-SQL – Stored Procedure

ชื่อหนังสือ: เรียนรู้ด้วยตนเอง DataBase - Query - T-SQL - Stored Procedure โดย: ลาภลอย วานิชอังกูร จัดพิมพ์จัดจำหน่าย: บริษัท ซีเอ็ดยูเคชั่น จำกัด (มหาชน) ISBN: 978-616-08-0009-4 ราคา: 559 บาท จำนวนหน้า: 1,100 ขนาด: 19x29 ซ.ม. วางตลาด: ตุลา 2552

กรุณาป้อนอีเมลของท่าน

Join 17 other followers