Moore’s Law
จำนวนทรานซิสเตอร์บนชิปเพิ่มเป็นสองเท่าราวทุกสองปี
ใจความสำคัญ
หัวข้อที่มีชื่อว่า “ใจความสำคัญ”Moore’s Law เป็นข้อสังเกตพื้นฐานด้านอุตสาหกรรมเซมิคอนดักเตอร์ที่ Gordon Moore ผู้ร่วมก่อตั้ง Intel เสนอไว้ในบทความ “Cramming More Components onto Integrated Circuits” ที่ตีพิมพ์ในนิตยสาร Electronics ฉบับวันที่ 19 เมษายน 1965 ขณะนั้น Moore ดำรงตำแหน่งผู้อำนวยการฝ่ายวิจัยและพัฒนาของ Fairchild Semiconductor และถูกขอให้คาดการณ์อนาคตของอุตสาหกรรมชิ้นส่วนเซมิคอนดักเตอร์ในอีกสิบปีข้างหน้า
ในบทความต้นฉบับ Moore ลากเส้นผ่านจุดข้อมูลห้าจุดที่แสดงจำนวนส่วนประกอบต่อวงจรรวมหนึ่งชิ้นในช่วงปี 1959-1964 (นับที่ต้นทุนต่อส่วนประกอบต่ำที่สุด) แล้วต่อเส้นแนวโน้มนั้นไปถึงปี 1975 เขาคาดการณ์ว่าจำนวนส่วนประกอบต่อชิปจะเพิ่มเป็นสองเท่าทุกปี จนถึงราว 65,000 ชิ้นภายในปี 1975 ต่อมาในปี 1975 Moore ได้ปรับคาดการณ์ใหม่เป็น “เพิ่มเป็นสองเท่าทุกสองปี” ซึ่งเทียบเท่าอัตราเติบโตทบต้นราว 41% ต่อปี และคำว่า “Moore’s Law” เองก็ถูกตั้งชื่อขึ้นภายหลังโดย Carver Mead ศาสตราจารย์จาก Caltech ไม่ใช่โดย Moore เอง
ที่น่าสนใจคือ Moore’s Law ไม่ใช่กฎทางฟิสิกส์แต่อย่างใด มันคือการคาดการณ์เชิงเศรษฐศาสตร์และวิศวกรรมที่อาศัยการปรับปรุงกระบวนการผลิตอย่างต่อเนื่อง และในเวลาต่อมามันได้กลายเป็น “คำทำนายที่ทำให้ตัวมันเองเป็นจริง” (self-fulfilling prophecy) เพราะทั้งอุตสาหกรรมใช้มันเป็นเป้าหมายในการวางแผนวิจัยและพัฒนา รวมถึงกำหนดโรด map การผลิตของตนเองให้สอดคล้องกับมัน
ความหมายและนัยยะ
หัวข้อที่มีชื่อว่า “ความหมายและนัยยะ”แม้จะเริ่มต้นเป็นข้อสังเกตด้านฮาร์ดแวร์ล้วน ๆ แต่ Moore’s Law ก็ส่งผลสะเทือนอย่างลึกซึ้งต่อวิธีคิดและวิธีทำงานของวงการซอฟต์แวร์มาหลายทศวรรษ:
- พลังประมวลผลราคาถูกลงเรื่อย ๆ — เมื่อทรานซิสเตอร์เพิ่มขึ้นเป็นสองเท่าโดยต้นทุนใกล้เคียงเดิม นักพัฒนาก็ได้รับ “งบประมาณ” ด้านประสิทธิภาพเพิ่มขึ้นทุกปีโดยแทบไม่ต้องทำอะไรเลย สิ่งนี้ทำให้ application ที่ซับซ้อนขึ้นเรื่อย ๆ (graph ิก 3 มิติ, machine learning, big data analytics) กลายเป็นไปได้ในทางปฏิบัติ ทั้งที่เมื่อสิบปีก่อนหน้ายังทำไม่ได้ด้วยฮาร์ดแวร์ยุคนั้น
- Dennard scaling ที่มาคู่กัน — ข้อสังเกตของ Robert Dennard ในปี 1974 ระบุว่าเมื่อทรานซิสเตอร์เล็กลง ความหนาแน่นของพลังงาน (power density) จะคงที่ ทำให้ความเร็วสัญญาณนาฬิกา (clock speed) เพิ่มได้โดยไม่ต้องเพิ่มการใช้พลังงานตามสัดส่วน นี่คือกลไกที่ทำให้ซีพียูเร็วขึ้นปีต่อปีในยุค 1990-ต้น 2000 โดยซอฟต์แวร์ไม่ต้องเปลี่ยนแปลงอะไรเลยก็เร็วขึ้นตาม
- จุดหักเหปี 2004-2005 — เมื่อ Dennard scaling เริ่มพังทลายลงเพราะกระแสไฟรั่ว (leakage current) ที่ระดับนาโนเมตรเล็กลงเรื่อย ๆ ผู้ผลิตซีพียูไม่สามารถเพิ่มความเร็วสัญญาณนาฬิกาต่อไปได้โดยไม่เกิดความร้อนสะสมเกินขีดจำกัด อุตสาหกรรมจึงหันไปเพิ่มจำนวนแกนประมวลผล (multicore) แทนที่จะเพิ่มความเร็วต่อแกน Herb Sutter เรียกปรากฏการณ์นี้ว่า “The Free Lunch Is Over” — นักพัฒนาซอฟต์แวร์ไม่สามารถพึ่งพาฮาร์ดแวร์ที่เร็วขึ้นเองได้อีกต่อไป แต่ต้องเขียน code ที่รองรับ concurrency และ parallelism อย่างจริงจังเพื่อดึงประโยชน์จากแกนที่เพิ่มขึ้น
- ขีดจำกัดทางฟิสิกส์ — เมื่อทรานซิสเตอร์เข้าใกล้ขนาดระดับอะตอม (ปัจจุบันเล็กที่สุดในเชิงพาณิชย์อยู่ที่ราว 3 นาโนเมตร) ปรากฏการณ์ควอนตัมและข้อจำกัดทางความร้อนทำให้การรักษาอัตราเร่งแบบทวีคูณนี้ยากขึ้นเรื่อย ๆ แม้เทคโนโลยีใหม่ ๆ เช่น 3D stacking, chiplet, หรือ specialized hardware (GPU, TPU) จะยังคงเพิ่มพลังประมวลผลโดยรวมได้ แต่รูปแบบการเติบโตแบบ “double ทุกสองปีในต้นทุนต่อชิปเท่าเดิม” นั้นได้ชะลอตัวลงอย่างชัดเจนตั้งแต่ราวปี 2010
สำหรับสถาปนิกซอฟต์แวร์ นัยยะสำคัญคือ Moore’s Law เคยเป็นเหตุผลให้ “รอฮาร์ดแวร์แก้ปัญหาประสิทธิภาพให้” แต่เมื่อ free lunch หมดลง การออกแบบซอฟต์แวร์ที่ดี, algorithm ที่มีประสิทธิภาพ, และสถาปัตยกรรมที่รองรับการ scale แนวนอน (horizontal scaling) จึงกลับมาสำคัญกว่าที่เคยเป็นมา
ตัวอย่างในโลกจริง
หัวข้อที่มีชื่อว่า “ตัวอย่างในโลกจริง”code ตัวอย่างด้านล่างไม่ได้แสดง Moore’s Law โดยตรง (เพราะมันเป็นข้อสังเกตด้านฮาร์ดแวร์) แต่แสดงให้เห็นผลสะเทือนของมันต่อการออกแบบซอฟต์แวร์ในทางปฏิบัติ: เมื่อ clock speed หยุดโต นักพัฒนาต้องเปลี่ยนจาก code แบบ sequential ไปเป็น code ที่ใช้ประโยชน์จากหลายแกนประมวลผล
// ก่อนปี 2005: พึ่งพา Moore's Law + Dennard scaling// ให้ซีพียูรุ่นถัดไปรัน code sequential นี้ได้เร็วขึ้นเองโดยไม่ต้องแก้ codeforeach (var item in items){ Process(item);}
// หลังปี 2005: "free lunch is over" ต้องออกแบบให้ใช้หลายแกนเอง// เพราะความเร็วต่อแกนไม่เพิ่มขึ้นตามที่เคยเป็นParallel.ForEach(items, item =>{ Process(item);});ตัวอย่างที่เป็นรูปธรรมอื่น ๆ ของผลกระทบจาก Moore’s Law:
- graph ิกและเกม — จำนวนทรานซิสเตอร์ที่เพิ่มขึ้นทำให้ GPU สมัยใหม่มีคอร์นับพัน ทำให้ render ภาพ 3 มิติแบบเรียลไทม์และการฝึก neural network ขนาดใหญ่เป็นไปได้
- มือถือและ IoT — ชิปที่เล็กลงและถูกลงตาม Moore’s Law ทำให้คอมพิวเตอร์ทรงพลังพอที่จะใส่ในอุปกรณ์ขนาดเท่าฝ่ามือหรือเล็กกว่านั้น
- cloud computing — ต้นทุนต่อหน่วยประมวลผลที่ลดลงต่อเนื่องเป็นปัจจัยหนึ่งที่ทำให้ model ธุรกิจแบบ pay-per-use ของผู้ให้บริการ cloud เป็นไปได้ในเชิงเศรษฐศาสตร์
- การเปลี่ยนผ่านสู่ multicore — ภาษาโปรแกรมและ runtime สมัยใหม่ (เช่น async/await ใน C#, goroutine ใน Go, actor model) ล้วนเกิดขึ้นเพื่อตอบสนองต่อโลกหลังปี 2005 ที่การเพิ่มประสิทธิภาพต้องมาจาก parallelism ไม่ใช่ clock speed อีกต่อไป
บทเรียนที่นำไปใช้
หัวข้อที่มีชื่อว่า “บทเรียนที่นำไปใช้”- อย่าพึ่งพาฮาร์ดแวร์ในอนาคตมาชดเชย code ที่ไม่มีประสิทธิภาพ — ยุคที่ “รอรุ่นหน้าซีพียูเร็วขึ้นเอง” ได้จบลงแล้วตั้งแต่กลางทศวรรษ 2000 การออกแบบ algorithm และโครงสร้างข้อมูลที่ดียังคงสำคัญเสมอ (ดู Wirth’s Law ด้านล่าง)
- ออกแบบให้รองรับ concurrency ตั้งแต่ต้น — เมื่อการเพิ่มประสิทธิภาพมาจากจำนวนแกนที่มากขึ้นแทนที่จะเป็นความเร็วต่อแกน ระบบที่ออกแบบมาให้ทำงานแบบขนานได้ (parallelizable) จะได้ประโยชน์จากฮาร์ดแวร์ใหม่มากกว่าระบบที่ล็อกตัวเองไว้กับการทำงานแบบ sequential
- เข้าใจว่า “กฎ” นี้คือแนวโน้มทางเศรษฐศาสตร์ ไม่ใช่กฎธรรมชาติที่แน่นอน — เมื่อใช้ Moore’s Law เป็นสมมติฐานในการวางแผนความจุระบบหรือ capacity planning ระยะยาว ควรตระหนักว่าอัตราเร่งแบบทวีคูณนี้ชะลอตัวลงแล้ว และการวางแผนควรอิงข้อมูลฮาร์ดแวร์จริงมากกว่าอิงกฎที่เป็นที่นิยม
- มองหาการเติบโตของประสิทธิภาพจากที่อื่นเมื่อ Moore’s Law ชะลอตัว — เช่น specialized hardware (GPU/TPU), การ scale แนวนอนใน cloud, หรือการปรับปรุง algorithm และสถาปัตยกรรมซอฟต์แวร์เอง ล้วนเป็นแหล่งเพิ่มประสิทธิภาพที่ไม่ต้องพึ่งจำนวนทรานซิสเตอร์อย่างเดียว
ที่เกี่ยวข้อง
หัวข้อที่มีชื่อว่า “ที่เกี่ยวข้อง”- Wirth’s Law — ข้อสังเกตที่ว่าซอฟต์แวร์ช้าลงเร็วกว่าที่ฮาร์ดแวร์จะเร็วขึ้น ซึ่งมักถูกอ้างถึงคู่กับ Moore’s Law เพื่อเตือนว่าอย่าใช้พลังประมวลผลที่เพิ่มขึ้นเป็นข้ออ้างให้ซอฟต์แวร์อืดลง
- Amdahl’s Law — กฎที่อธิบายขีดจำกัดของการเร่งความเร็วด้วยการประมวลผลแบบขนาน ซึ่งสัมพันธ์โดยตรงกับยุคหลัง Moore’s Law ที่ต้องพึ่ง multicore
- Conway’s Law — ข้อสังเกตด้านองค์กรและสถาปัตยกรรมซอฟต์แวร์ ที่มักถูกจัดกลุ่มร่วมกับ Moore’s Law ในฐานะ “กฎ” ที่มีอิทธิพลต่อวงการซอฟต์แวร์
- Brooks’s Law — อีกหนึ่งข้อสังเกตคลาสสิกด้านวิศวกรรมซอฟต์แวร์ที่เตือนว่าทรัพยากรเพิ่มเติม (ไม่ว่าจะเป็นคนหรือฮาร์ดแวร์) ไม่ได้แก้ปัญหาทุกอย่างเสมอไป
- Law of Diminishing Returns — แนวคิดที่อธิบายว่าทำไมการลงทุนเพิ่มขึ้นเรื่อย ๆ (ในที่นี้คือการย่อทรานซิสเตอร์ให้เล็กลง) จึงให้ผลตอบแทนที่ลดลงเมื่อเข้าใกล้ขีดจำกัดทางกายภาพ
แหล่งอ้างอิง
หัวข้อที่มีชื่อว่า “แหล่งอ้างอิง”- ที่มา · deviq.com/laws/moores-law
- Moore’s law – Wikipedia
- Cramming More Components onto Integrated Circuits (Gordon Moore, 1965 original paper, PDF)
- 1965: “Moore’s Law” Predicts the Future of Integrated Circuits — Computer History Museum
- The Free Lunch Is Over: A Fundamental Turn Toward Concurrency in Software (Herb Sutter, 2005)
- The Death of Moore’s Law: What it means and what might fill the gap going forward — MIT CSAIL Alliances