ในช่วงนี้มีกระแสพูดคุยเกี่ยวกับ Exynos 5 Octa กันมาก ตัว Exynos 5 Octa นั้นเป็น SoC (system on a chip) ในรูปแบบ big.LITTLE ที่มีคอร์ของ Cortex-A15 และ Cortex-A7 อยู่ภายในอย่างละสี่คอร์ เรื่องหนึ่งที่ถกเถียงกัน (หรืออาจจะเข้าใจไปในทางเดียวกันโดยมิได้นัดหมาย) ก็คือคอร์ทั้งแปดของหน่วยประมวลผลแบบ big.LITTLE นั้นสามารถใช้งานได้ทีละสี่คอร์หรือว่าได้ทั้งแปดคอร์กันแน่?
ถ้าใครใจร้อนขอสรุปตรงนี้ว่าในทางฮาร์ดแวร์นั้นทั้งแปดคอร์สามารถทำงานได้พร้อมกันทั้งหมด แต่...
ปัญหาในขณะนี้คือระบบปฏิบัติการยังอาจจะไม่สามารถดึงประสิทธิภาพทั้งด้านความเร็วในการประมวลผลและการประหยัดพลังงานออกมาพร้อมๆ กันได้อย่างเต็มที่
คอร์แบบ Cortex-A15 และ Cortex-A7 นั้นเป็นสถาปัตยกรรมเดียวกันทุกกระเบียดนิ้ว (the processors are architecturally identical) ทั้งคู่ใช้ชุดคำสั่ง ARM v7A และทำงานได้ผลอย่างเดียวกันแต่แตกต่างกันที่ประสิทธิภาพ โดย Cortex-A15 ให้ประสิทธิภาพประมาณสองเท่าของ Cortex-A7 ด้วยสัญญาณนาฬิกาที่เท่ากัน และ Cortex-A7 ประหยัดพลังงานประมาณสามเท่าของ Cortex-A15 ในงานเดียวกัน ระบบ big.LITTLE นั้นสามารถทำงานได้สองรูปแบบคือ
1. big.LITTLE Task Migration
ในรูปแบบของ Task Migration นั้นใช้คอร์ Cortex-A15 จับคู่กับ Cortex-A7 ในจำนวนที่เท่ากัน (เช่น 4+4 ในกรณีของ Exynos 5 Octa) โดยจะอาศัยการเปิดปิดคอร์สลับกันตามโหลดของงานที่ทำในขณะนั้น ข้อดีของวิธีนี้ก็คือการออกแบบ scheduler (ตัวกำหนดว่างานไหนจะรันบนคอร์ไหนเมื่อไหร่)
ในระบบปฏิบัติการนั้นทำได้ง่ายเพราะสามารถใช้วิธีเดียวกันกับการปรับความเร็วของสัญญาณนาฬิกาที่ใช้กันอยู่ในปัจจุบันได้เลย สิ่งที่ต้องคำนึงถึงอย่างหนึ่งคือระหว่างการย้ายการทำงานจากคอร์หนึ่งไปอีกคอร์หนึ่งนั้นไม่ได้ได้มาฟรีๆ เพราะการย้ายงานนั้นหมายถึงการเก็บสถานะบนคอร์หนึ่งและนำไปอ่านออกมาคืนเพื่อทำต่อในอีกคอร์หนึ่ง ซึ่งในระหว่างนั้นคอร์ทั้งสองจะทำงานคู่กันและไม่สามารถประมวลผลอย่างอื่นได้ (ถ้าทำนานก็เปลืองไฟและกระตุก) การย้ายงานระหว่าง Cortex-A15 และ Cortex-A7 นั้นทาง ARM บอกว่าสามารถทำได้ใน 20,000 คำสั่ง หรือประมาณ 20 us เมื่อทำงานที่ความถี่ 1 GHZ
2. big.LITTLE MP
เนื่องจากว่าทุกๆ คอร์ของ Cortex-A15 และ Cortex-A7 นั้นออกแบบมาให้ต่อเข้ากับ
Cache Coherent Interconnect (CCI หรือตัวที่ทำให้ cache ของแต่ละคอร์มองเห็นข้อมูลเหมือนกัน) ที่ทำให้ทุกๆ คอร์สามารถทำงานไปพร้อมๆ กันได้ ดังนั้นในรูปแบบนี้ทุกๆ คอร์สามารถช่วยกันประมวลผลได้ แต่จะเป็นรูปแบบของหน่วยประมวลผลที่แตกต่างกัน (HMP/heterogeneous multiprocessing)
ระบบปฏิบัติการในอดีตมองว่าหน่วยประมวลผลทุกตัวนั้นสมมาตรกัน (เป็น SMP/symmetric multiprocessing) การที่หน่วยประมวลผลมีประสิทธิภาพไม่เท่ากัน แถมยังกินไฟไม่เท่ากันนั้นเป็นเรื่องที่ยังต้องศึกษาและปรับแต่งอยู่อีกมาก ดังนั้นจึงอาจจะต้องรออีกสักพักก่อนที่เราจะได้เห็นการใช้งานในรูปแบบนี้อย่างสมบูรณ์
big.LITTLE ปะทะ 4-PLUS-1
เรามักจะเห็นการนำ 4-PLUS-1 ของ NVIDIA มาเปรียบเทียบกับ big.LITTLE อยู่เสมอ วิธีการของ 4-PLUS-1 นั้นเรียกว่า Variable Symmetric Multiprocessing (vSMP)
ซึ่งความแตกต่างก็คือใน vSMP นั้นทุกๆ คอร์รวมถึงคอร์ประหยัดไฟนั้นเป็น Cortex-A9 เหมือนกันทั้งหมด (All five CPU cores are identical ARM Cortex A9 CPUs)
แต่กระบวนการผลิตซิลิคอนนั้นแตกต่างกัน คอร์ประหยัดไฟใช้กระบวนการผลิตที่เน้นให้ประหยัดพลังงานในขณะที่ทำงานได้ที่ความถี่ต่ำ
ส่วนคอร์หลักทั้งสี่นั้นใช้กระบวนการผลิตมาตรฐานที่สามารถทำงานได้ที่ความถี่สูงๆ
ความแตกต่างที่สำคัญอีกอย่างคือใน 4-PLUS-1 นั้นระบบปฏิบัติการมองไม่เห็นคอร์ประหยัดไฟ การสลับการทำงานระหว่างคอร์ปกติและคอร์ประหยัดไฟนั้นทำโดยอัตโนมัติ
ดังนั้นใน 4-PLUS-1 จึงไม่สามารถให้ทั้งห้าคอร์ทำงานพร้อมกันได้ ส่วนใน big.LITTLE นั้นระบบปฏิบัติการมองเห็นทุกคอร์ และต้องเป็นผู้สั่งการย้ายการทำงานระหว่างคอร์เอง
ขณะนี้และต่อไปจากนี้
การใช้งานรูปแบบ big.LITTLE Task Migration นั้นสามารถทำได้ง่ายโดยไม่ต้องปรับแก้ส่วน scheduling ของระบบปฏิบัติการ ดังนั้นเราน่าจะเห็นผลิตภัณฑ์ต่างๆ ใช้วิธีการนี้ก่อนในช่วงแรก
ส่วนในรูปแบบ big.LITTLE MP ที่ยืดหยุ่นกว่ามากและสามารถทำได้โดยไม่ต้องแก้ไขฮาร์ดแวร์ (จริงๆ เรียกได้ว่า big.LITTLE Task Migration เป็น subset ของ big.LITTLE MP เลยด้วยซ้ำ)
อาจจะต้องรอการปรับแต่งอีกสักระยะก่อนที่จะออกมาให้เราๆ ได้ใช้กัน (เมื่อ และต่อเมื่อ ไม่โดนลอยแพไปเสียก่อน)
มีคลิปดูเพลินๆ
อ้างอิง
Comments
กระจ่างเลย ขอบคุณครับ
ถือเป็นคู่ที่น่าลุ้นพอสมควรครับ
ชัดเจน... ขอบคุณครับ
:: DigiKin8 ::
Performance หากแปลเป็นประสิทธิภาพจะทำให้สับสนกับ efficiency ได้นะครับ ควรใช้คำอื่นเช่น สมรรถนะ หรือ ความสามารถ จะดีกว่า
Efficency ควรแปลเป็นประสิทธิภาพ จะเหมาะกว่าครับ
บางตำราแปล efficiency เป็น "ประสิทธิผล" ด้วยเหตุผลเรื่องหลบความหมายเหมือนกันครับ
ผมก็เรียนมาแบบ Efficiency = ประสิทธิผล เหมือนกันครับ
ทำไมผมคิดว่า effectivenes = ประสิทธิผล ส่วน efficiency = ประสิทธิภาพ
อาจจะคนละสายวิชาเลยแปลไม่เหมือนกันมั้งครับ ถ้าด้านการผลิต effciency = ประสิทธิภาพ ส่วน effectiveness = ประสิทธิผล ผมเรียนมางี้เหมือนกันครับ
อคติทำให้คนรับเหตุผลด้านเดียว
efficiency ในที่นี้หมายถึง output/input (งานที่ได้ เทียบกับพลังงานหรือทรัพยากรที่ใช้)
นิยมแปลเป็น efficiency = ประสิทธิภาพ มากกว่า
ส่วน effectiveness = ประสิทธิผล
หมายถึง output ที่ได้ / output ที่ต้องการ
ประเด็นหลักของผมคือ Performance ไม่ควรแปลว่า ประสิทธิภาพ เพราะจะทำให้สับสนครับ
ส่วน Efficiency จะแปลเป็นประสิทธิภาพ หรือประสิทธิผล อะไรก็ได้ แต่น่าจะดีกว่าใช้คำว่า ประหยัดพลังงาน
สัพพัก => สักพัก
ขอบคุณครับ
4core 4thread ?
กระจ่างมากครับ
แจ่มแจ้งเลยครับ แต่ละแบบก็มีทั้งข้อดีและข้อเสียในตัวของมันเอง
ถือว่าเป็นบทความประเทืองปัญญาดีมากครับ ขอบคุณที่แปล/เขียน/พิมพ์มาให้อ่าน
#ทำไมผมเพิ่งเห็นบทความนี้เนี่ย
สรุปว่า ถ้าเป็น kernel linux
แบบ 4+4 core จะใช้ driver cpufreq ทำ DVFS
ส่วนแบบ 8 core จะใช้ big.LITTLE scheduler