สิ่งที่คุณ ARES กล่าวมานั้นก็น่านำมาพิจารณาเหมือนกันครับทุกท่าน เพียงแต่คุณ ARES ต้องไม่ลืมว่า CPU ทุกรุ่นที่ใช้ 16-byte Allocate ในขั้นตอน Pre-Decoder นั้นก็มีข้อจำกัดเหมือนกันกับ Conroe ทั้งสิ้นครับ ไม่ว่าจะเป็น K8 หรือ Netburst ก็ตาม
ในขั้นตอนนี้หากคุณจะบอกว่า CPU ที่มีความเร็ว Clock speed สูงกว่าย่อมจะทำงานได้ดีกว่าก็ ถือว่าถูกต้องครับ แต่จะต้องเป็น CPU ที่มีสถาปัตยกรรมเดียวกันเท่านั้นครับ จึงจะทำให้ข้อสรุป นี้ถูกต้องสมบูรณ์
การเปรียบเทียบระหว่าง Core , Netburst และ K8 ในขั้นตอนนี้ เราจะต้องดูสถาปัตยกรรมภายในเป็นหลัก จำนวน Pipeline Stages ของแต่ละตัวไม่เหมือนกัน Core 14 Stages, K8 12 Stages และ Netburst 31 Stages ซึ่งจะเห็นว่า เข้าป่าไปคนละอย่างเลย ทั้งยังแต่ละ Stages ของแต่ละตัวจะใช้กี่ Clock ก็ไม่เท่ากันซะอีก นี่เป็นประการที่ 1
สำหรับกรณีของ Instruction Queue นั้นจำนวน Entry ของ Buffer ต่างๆ ของ CPU แต่ละสถาปัตยกรรมก็ไม่เท่ากัน เนื่องจากแนวทางการพัฒนาไม่เหมือนกัน กรณีของ Trace Cache ใน Netburst เป็นแบบนึงใน K8 และ Core แม้จะใช้ Tradition Cache เหมือนกัน แต่การทำ Branch และ Instruction Queue ก็ไปคนละแนวเลย และนี่เป็นประการที่ 2
ฉะนั้นการจะสรุปดื้อๆ เอาว่า CPU ที่ Clock speed สูงนั้นทำงานได้ไวกว่า ด้วยขั้นตอนนี้ เพียงประการเดียว น่าจะไม่ถูกต้องนักนะครับ คุณ ARES ครับ
คุณ ARES พยายามจะชี้ว่าเป็นปัญหาของ Core หรือ Conroe ผมกลับมองต่างมุมครับ หากเราคิดในมุมกลับว่า ทำไม Intel จึงออกแบบ Conroe มาแบบนี้ ? บางทีคุณ ARES อาจจะเห็นคำตอบ ลองดูจากภาพที่ผมได้ลงให้ดูไปแล้วก่อนหน้านี้ ก็น่าจะพอมองเห็นครับ
จุดที่ Conroe ได้เปรียบ K8 หรือ Netburst นั้นอยู่ที่ Decoder แต่ละ Core ของ Conroe ที่สามารถถอดรหัสได้สูงสุดถึง 5 ชุดคำสั่งต่อ 1 รอบสัญญาณนาฬิกา (*ถ้าใช้เทคนิค Macro-Fusion*)(** ปกติจะเป็น 4 ตามแผนภาพ ** ) ดังภาพข้างล่างนี้
เทคนิค Macro-Fusion ของ Core Microarchitect ที่สามารถยุบรวม
ชุดคำสั่งที่คล้ายกันให้เป็นคำสั่งเดียวกันได้
ในขณะที่ K8 หรือ Netburst สิ่งที่เป็นไปได้สูงสุดสำหรับขั้นตอน Decode นั้นจำกัดอยู่ที่ 3 ชุดคำสั่งต่อ 1 รอบสัญญาณนาฬิกาเท่านั้น
และตัว ALU ของ Conroe ที่ได้รับการพัฒนาให้มีศักยภาพในการประมวลผลได้ดีกว่า K8 หรือ Netburst คือ สามารถประมวลผลได้สูงสุด 5 ชุดคำสั่ง ต่อ 1 รอบสัญญาณนาฬิกา (ต่อ 1 Core)
ในขณะที่ K8 หรือ Netburst สิ่งที่เป็นไปได้สูงสุดสำหรับขั้นตอน Execute นี้ จำกัดอยู่ที่ 3 ชุดคำสั่งต่อ 1 รอบสัญญาณนาฬิกาเท่านั้น
หากเราเอาภาพมาต่อกันตั้งแต่ขั้นตอนเริ่มต้นของการทำงานทั้งหมดของ CPU แต่ละสถาปัตยกรรมคือ Core , K8 และ Netburst ผมเชื่อว่า คุณ ARES และท่านที่สนใจน่าจะมองได้ไม่ยากว่า CPU สถาปัตยกรรมไหนน่าจะทำงานได้ไวกว่าครับ
ผมไม่ได้ต่อว่าท่านนะครับ กรุณาอย่าอารมณ์ร้อน เพียงแต่แลกเปลี่ยนมุมมองแค่นั้นครับ ที่ท่านกล่าวมานั้นก็ไม่ใช่ว่าผิดทั้งหมด ส่วนถูกก็มีไม่น้อย เพียงแต่การสรุปของท่านนั้นอาจจะทำให้หลายท่านเข้าใจผิดว่า สิ่งที่ท่านนำเสนอมานั้นเป็นจุดอ่อนของ Conroe เท่านั้น แต่จริงๆ แล้วผมอยากจะให้ข้อมูลทุกท่านเพิ่มเติมว่า K8 และ Netburst ก็มีจุดอ่อนตรงนี้เช่นกัน
ผมจึงอยากให้ท่านมองดูภาพรวมมากกว่า เพราะการจะประมวลผลข้อมูลใดๆ ออกมาจาก CPU ได้ เราคงไม่ได้มาเน้นขั้นตอนการ Pre-Decoder เพียงอย่างเดียว แต่จะต้องมองไปจนสุดทางที่ผลลัพธ์ไหลออกมาโน่นแหละครับ จึง
จะบอกได้ว่า CPU รุ่นไหนไวกว่า
ในขั้นตอนนี้หากคุณจะบอกว่า CPU ที่มีความเร็ว Clock speed สูงกว่าย่อมจะทำงานได้ดีกว่าก็ ถือว่าถูกต้องครับ แต่จะต้องเป็น CPU ที่มีสถาปัตยกรรมเดียวกันเท่านั้นครับ จึงจะทำให้ข้อสรุป นี้ถูกต้องสมบูรณ์
การเปรียบเทียบระหว่าง Core , Netburst และ K8 ในขั้นตอนนี้ เราจะต้องดูสถาปัตยกรรมภายในเป็นหลัก จำนวน Pipeline Stages ของแต่ละตัวไม่เหมือนกัน Core 14 Stages, K8 12 Stages และ Netburst 31 Stages ซึ่งจะเห็นว่า เข้าป่าไปคนละอย่างเลย ทั้งยังแต่ละ Stages ของแต่ละตัวจะใช้กี่ Clock ก็ไม่เท่ากันซะอีก นี่เป็นประการที่ 1
สำหรับกรณีของ Instruction Queue นั้นจำนวน Entry ของ Buffer ต่างๆ ของ CPU แต่ละสถาปัตยกรรมก็ไม่เท่ากัน เนื่องจากแนวทางการพัฒนาไม่เหมือนกัน กรณีของ Trace Cache ใน Netburst เป็นแบบนึงใน K8 และ Core แม้จะใช้ Tradition Cache เหมือนกัน แต่การทำ Branch และ Instruction Queue ก็ไปคนละแนวเลย และนี่เป็นประการที่ 2
ฉะนั้นการจะสรุปดื้อๆ เอาว่า CPU ที่ Clock speed สูงนั้นทำงานได้ไวกว่า ด้วยขั้นตอนนี้ เพียงประการเดียว น่าจะไม่ถูกต้องนักนะครับ คุณ ARES ครับ
คุณ ARES พยายามจะชี้ว่าเป็นปัญหาของ Core หรือ Conroe ผมกลับมองต่างมุมครับ หากเราคิดในมุมกลับว่า ทำไม Intel จึงออกแบบ Conroe มาแบบนี้ ? บางทีคุณ ARES อาจจะเห็นคำตอบ ลองดูจากภาพที่ผมได้ลงให้ดูไปแล้วก่อนหน้านี้ ก็น่าจะพอมองเห็นครับ
จุดที่ Conroe ได้เปรียบ K8 หรือ Netburst นั้นอยู่ที่ Decoder แต่ละ Core ของ Conroe ที่สามารถถอดรหัสได้สูงสุดถึง 5 ชุดคำสั่งต่อ 1 รอบสัญญาณนาฬิกา (*ถ้าใช้เทคนิค Macro-Fusion*)(** ปกติจะเป็น 4 ตามแผนภาพ ** ) ดังภาพข้างล่างนี้
เทคนิค Macro-Fusion ของ Core Microarchitect ที่สามารถยุบรวม
ชุดคำสั่งที่คล้ายกันให้เป็นคำสั่งเดียวกันได้
ในขณะที่ K8 หรือ Netburst สิ่งที่เป็นไปได้สูงสุดสำหรับขั้นตอน Decode นั้นจำกัดอยู่ที่ 3 ชุดคำสั่งต่อ 1 รอบสัญญาณนาฬิกาเท่านั้น
และตัว ALU ของ Conroe ที่ได้รับการพัฒนาให้มีศักยภาพในการประมวลผลได้ดีกว่า K8 หรือ Netburst คือ สามารถประมวลผลได้สูงสุด 5 ชุดคำสั่ง ต่อ 1 รอบสัญญาณนาฬิกา (ต่อ 1 Core)
ในขณะที่ K8 หรือ Netburst สิ่งที่เป็นไปได้สูงสุดสำหรับขั้นตอน Execute นี้ จำกัดอยู่ที่ 3 ชุดคำสั่งต่อ 1 รอบสัญญาณนาฬิกาเท่านั้น
หากเราเอาภาพมาต่อกันตั้งแต่ขั้นตอนเริ่มต้นของการทำงานทั้งหมดของ CPU แต่ละสถาปัตยกรรมคือ Core , K8 และ Netburst ผมเชื่อว่า คุณ ARES และท่านที่สนใจน่าจะมองได้ไม่ยากว่า CPU สถาปัตยกรรมไหนน่าจะทำงานได้ไวกว่าครับ
ผมไม่ได้ต่อว่าท่านนะครับ กรุณาอย่าอารมณ์ร้อน เพียงแต่แลกเปลี่ยนมุมมองแค่นั้นครับ ที่ท่านกล่าวมานั้นก็ไม่ใช่ว่าผิดทั้งหมด ส่วนถูกก็มีไม่น้อย เพียงแต่การสรุปของท่านนั้นอาจจะทำให้หลายท่านเข้าใจผิดว่า สิ่งที่ท่านนำเสนอมานั้นเป็นจุดอ่อนของ Conroe เท่านั้น แต่จริงๆ แล้วผมอยากจะให้ข้อมูลทุกท่านเพิ่มเติมว่า K8 และ Netburst ก็มีจุดอ่อนตรงนี้เช่นกัน
ผมจึงอยากให้ท่านมองดูภาพรวมมากกว่า เพราะการจะประมวลผลข้อมูลใดๆ ออกมาจาก CPU ได้ เราคงไม่ได้มาเน้นขั้นตอนการ Pre-Decoder เพียงอย่างเดียว แต่จะต้องมองไปจนสุดทางที่ผลลัพธ์ไหลออกมาโน่นแหละครับ จึง
จะบอกได้ว่า CPU รุ่นไหนไวกว่า

Comment