วันนี้ดูรูปจาก http://upload.wikimedia.org/wikipedia/commons/d/d6/AMD_K10_Arch.svg เหมือนรูปบอกได้ชัดเจนเลยว่า. CPU ตระกูล x86-64 จริงๆ แล้วก็ใช้เทคเดียวกับ RISC ทั้งหลาย อย่าง MIPS, Arm, Power และอื่นๆ. แต่ว่าเพื่อที่จะได้ compatible กับของเก่าเลยต้องทำ. เลยยังรับ x86 Ops แต่ว่ามาแปลงให้เป็น instruction แบบ RISC ตอน decode?
พอใช้การแปลงคำสั่งใน CPU แบบนี้ก็แก้ปัญหาของ x86 ได้หมดเลยหรือเปล่า? เท่าที่อ่านมากจาก http://www.osnews.com/story/3997/Analysis:_x86_Vs_PPC/page3/ ก็น่าจะสรุปว่าแก้ได้หลายๆอย่าง โดยเฉพาะเรื่องความเร็ว. แต่ว่าปัญหาเรื่องใช้พลังงานมากก็ยังมีอยู่ เพราะว่า hardware ที่ใช้ในการ Decode x86 Ops ให้เป็น Macro Ops ซับซ้อนกว่า การ decode RISC Ops ตรงๆ หรือว่ามีการแปลบ้างบางคำสั่งอย่างที่ใช้ Power ของ IBM.
อีกส่วนหนึ่งคือเขาบอกว่า x86 มีจำนวน Register น้อยใน CPU อาจจะทำ Register renaming เยอะกว่าการมี register ให้ใช้เยอะๆ. (ที่ต้องใช้ Register เยอะเพราะว่าต้องถ้ามีหลายๆ Instruction ทำงานพร้อมๆ กัน หรือสลับลำดับกัน ก็อาจจะไปใช้ Register ซ้ำกันได้. อย่างเช่น คำสั่ง 2 คำสั่ง อาจจะเขียนทับ Register ชื่อเดียวกัน เป็นต้น.) ผลคือใน Pentium4 มี Rename register 128 ตัว จำนวนมากกว่า Power 970 ที่ใช้ 48 ตัว. (เลยทำให้กินไฟเยอะ?). เรื่อง Rename register นี่ผมก็ไม่แน่ใจว่าจะเชื่อบทความที่อ่านมาได้มากแต่ไหนเพราะว่า Power5 เองก็เพิ่ม Rename register มาเป็น 120 ตัวแล้ว [1]. ประเด็น CPU ที่แก้ปัญหาเรื่องเปลี่ยนชื่อ Register ได้ดีที่สุดที่มีขายในตลาดทั่วไป น่าจะเป็น Itanium2 ที่มี General register ถึง 120 ตัว. ซึ่งเป็นส่วนหนึ่งที่ทำให้ software ไปจัดการใช้ Register ได้เอง. วงจรใน CPU ก็ซับซ้อนน้อยลง.
ทั้งหมดนี้ก็น่าจะเป็นเหตุผลว่าทำไม x86-64 อย่าง Core2 และ K10 ทำงานได้รวดเร็วเหลือเกิน ถึงแม้จะใช้ชุดคำสั่งแบบ CISC เพราะว่า CPU พวกนี้แอบแปลคำสั่งแบ CISC ไปเป็นอะไรคล้ายๆ RISC ใน CPU ก่อนนี่เอง. แต่ว่า RISC ก็ยังได้เปรียบอยู่เรื่องความซับซ้อนและการใช้พลังงาน. อาจจะเป็นเหตุผลด้วยว่าทำไม Intel Atom, AMD Geode, VIA C(เท่าไหร่) ออกมามากมาย. แต่โทรศัพท์มือถือก็ยังใช้ CPU จาก ARM family อยู่ดี.
ป.ล. อีกประเด็นหนึ่งที่ผมไม่ค่อยเข้าใจคือ Game console ที่ใช้ CPU ที่มีฐานบน Power architecture กันถ้วนหน้าทั้ง. PS3, XBox360 และ Wii … อาจจะเป็นเพราะ Altivec แต่ไม่เกี่ยวกับประเด็น RISC หรือ x86?
ป.ล. 2 ผมเข้าใจว่าการแปล x86 Ops เป็น RISC-like Ops มีมานานแล้ว. อย่างน้อยๆก็ใน Pentium4 แต่ไม่รู้ว่าตัวแรกที่เริ่มแปลง คือตัวไหน.
ป.ล. 3 x86 ตระกูลประหยัดก็ยังมีจุดขายที่ run Windows XP ได้. ไม่งั้น AMD และ Intel คงไม่ออกแรงทำ CPU ที่ต้องมาแปลคำสั่ง x86 แบบนี้.
เรื่องการแปลงคำสั่งให้เป็น unit ย่อยๆ มีทั้งใน RISC/CISC อยู่แล้วแม้แต่ตระกูล Power เองก็ตาม และคำสั่งที่เพิ่มเข้ามาในช่วงหลังๆ เองก็ไม่ได้แปลงยากขนาดนั้น กลับกันคำสั่งที่เข้ามาในช่วงแรกๆ เองก็ไม่ได้ซับซ้อนเกินไปอีกเช่นกัน
มีคนเคยว่าไว้ว่าตอนนี้ X86 ISA ไม่ต่างอะไรจาก Java Byte Code ที่ไม่ได้มีอะไรสวยงามขนาดนั้น แต่มันรันได้แทบทุกที่ เร็วๆ นี้เราน่าจะได้เห็นมือถือ X86 กันในที่สุด หลังจากลง EEE PC ไปแล้ว
อินเทลเองนั้นอยากจะทิ้ง X86 มาหลายรอบแล้ว (ประกาศว่าหมดอนาคตตั้งแต่ตอน Itanium ซึ่งหมดอนาคตไปก่อน) แต่ปรากฎว่าคนไม่ยอมรับเรื่อง Binary Incompatible เลยต้องกลับมาเอาคืนด้วย Core/Core2 นี่เห็นว่าบ่นๆ อยากจะทิ้งไปอีกรอบแล้ว
ความเห็น โดย LewCPE — 21 มีนาคม 2008 @ 02:12
ใน http://www.osnews.com/story/3997/Analysis:_x86_Vs_PPC/page3/ บอกว่า ISA ของ Power แปลง*น้อยกว่า* x86 (แต่ก็แปลง), เพราะว่าแปลงน้อยกว่าเลยวงจรซับซ้อนน้อยกว่า. (แต่ผมก็แอบสงสัยอยู่ว่าวงจรจะออกมาแตกต่างกันแค่ไหนกัน?)
Power กับ Sparc อาจจะแปลงเยอะกว่า MIPS? MIPS เลยประหยัดไฟกว่าแล้วไปอยู่ PSP? (paragraph นี้มั่วๆนะ ไม่รู้จริงเปล่า).
ความเห็น โดย वीर — 21 มีนาคม 2008 @ 02:42
Itanium ก็ยังไม่หมดอนาคตมั้ง แต่ว่าอาจจะยังกินตลาดใหญ่ไม่ได้. Itanium ตอนนี้ดูเหมือนเก็บตลาดของ Alpha กับ PA-RISC ไปหมดแล้ว. ตลาด Unix server ที่ใช้ Oracle ทั่วไปก็คงจะพอมีพื้นที่ให้ Itanium อยู่บ้าง. ผมอ่าน paper หลายๆ lab ใช้ Itanium ทำการทดลองกัน.
x86-64 อาจจะดูไม่ค่อยน่ากลัวสำหรับ Itanium เท่าไหร่ เพราะเหมือนกับเป็นคนละตลาดกัน? ดูราคา IBM P-series 520 ที่ใช้ Power6 แล้วผมว่าน่ากลัวกว่า ราคามันเหลือแค่ระดับ 6000 USD แล้ว.
ความเห็น โดย वीर — 21 มีนาคม 2008 @ 05:27
แต่ดู benchmark แล้ว IBM P-series มักจะทำได้ดีตอนที่ใช้ CPU หลายๆตัว :-P. IBM P-series 520 รุ่นเล็กเลยอาจจะดูไม่ค่อยมีประโยชน์?
ความเห็น โดย वीर — 21 มีนาคม 2008 @ 06:19