Computing is changing

วันนี้ไปอบรมกับทางอินเทลมา เนื้อหาภายในคงไว้เล่าให้ฟังกันทีหลัง

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

โลกซอฟต์แวร์กำลังจะเปลี่ยนไป ถ้าวันนี้คุณไม่รู้ ก็คงได้เวลาแล้วล่ะครับ

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

ที่ผ่านมาฝ่ายออกแบบต้องยอมก้มหัวให้กับนักพัฒนาซอฟต์แวร์ตลอดมา เพื่อให้ชิปตัวเองขายได้ นักพัฒนาฮาร์ดแวร์ทำทุกอย่าง (ฝรั่งเรียก At all cost) เพื่อที่จะรีดความเร็วออกมาได้อีกสักนิด

เราเลยมีสถาปัตยกรรมใหม่ๆ เช่น out-of-order execution, register renaming, และอื่นๆ อีกหลายต่อหลายอย่าง โดยในภาษาวิชาการมันเป็นการพยายามทำให้คำสั่งหลายคำสั่งทำงานได้พร้อมๆ กันโดยที่ตัวซอฟต์แวร์เองไม่รู้ตัว ความพยายามนี้เรียกว่า Intruction Level Parallelism (ILP)

มาวันนี้เกิดอะไรขึ้น? นักพัฒนาฮาร์ดแวร์กำลังหันมาบอกว่าที่พยายามทำให้สารพัดนั้นมันกำลังถึงทางตัน แล้วตะโกนใส่หน้านักพัฒนาซอฟต์แวร์ว่าถ้าอยากได้ความเร็วเพิ่มต้องเขียนให้แบ่งงานกันเองแล้ว เป็นการบังคับให้นักพัฒนาซอฟต์แวร์ต้องแบ่งการทำงานซอฟต์แวร์ออกเป็นหลายๆ เธรด เพื่อทำงานพร้อมๆ กัน เรียกว่า Thread Level Parallelism (TLP)

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

ยิ่งไปกว่านั้นนักพัฒนาฮาร์ดแวร์เริ่มเรียกร้องมากขึ้นเรื่อยๆ โดยในวันนี้ความเร็วแต่ละคอร์เพิ่มขึ้นเพียงเล็กน้อย แต่อาศัยการเพิ่มจำนวนคอร์มากขึ้นเรื่อยๆ และมีแนวโน้มว่าอนาคตความเร็วของแต่ละคอร์จะลดลงเรื่อยๆ แต่จำนวนคอร์จะเพิ่มขึ้นอย่างมาก ไปในระดับหลายๆ สิบคอร์เช่นใน Larrabee ของอินเทลที่ความเร็วแต่ละเธรดจะลดลงเหลือเพียงครึ่งเดียวเพราะตัดความสามารถในส่วนของ out-of-order execution ออกไป แต่เพิ่มคอร์เข้าไปนับสิบคอร์

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

อาจารย์ผมเคยว่าไว้ว่าอย่าไปจับเทคโนโลยีเอาตอนบ่ายโมง

สำหรับเทคโนโลยี Multi-Thread นี่สิบโมงครึ่งแล้วครับ ถ้านักพัฒนาไทยจะจับ คงได้เวลาเต็มที่แล้ว

 

lewcpe

CTO at MFEC PLC. Chief Editor at Blognone.com