Skylake X Microarchitect Diagram
รู้สึกได้เหมือนได้ลูกศิษย์มาขอให้ติววิชา Microprocessor ให้ แต่ลูกศิษย์สอนยากหน่อย ต้องทำใจครับแฟนๆ Intel
คิดว่ากระจ่างไปตั้งแต่วันเสาร์จนผมไปเที่ยวกลับมาแล้วลูกศิษย์ก็ยังไม่ Get จะทำไงดีน้อ แนะให้ไปซื้อ Skylake X หรือ Icelake มาใช้สะดีไหมเนี่ย
1. อยากให้กลับไปทำความเข้าใจดีๆ ในสิ่งที่ผมอธิบายให้ฟังในวันเสาร์ ผมว่าคนที่เขาอ่านละเอียดและตั้งใจจะศึกษาจะเข้าใจดีได้ในเวลาที่น้อยที่สุด
เพราะมันไม่อะไรในกอไผ่ที่ซับซ้อน
2. ดูเหมือนคุณ SSK จะติดใจในประเด็น Port 0+Port 1 ผมก็ได้อธิบายไปแล้ว Instruction Windows ของ Skylake 512-bit wide VS Ryzen 256-bit wide คือประเด็นที่ 1
และต่อมา เมื่อระบบ Decode เจอว่าเป็นคำสั่ง AVX512 มันก็จะ Fused Register ระหว่าง Port 0 และ 1 ให้กว้าง 512-bit อัตโนมัติเพื่อรองรับชุดคำสั่งและข้อมูลไปประมวลผลดังที่
ได้อธิบายไปแล้ว คำสั่ง AVX512 ก็กระทำกับข้อมูลขนาด 512-bit ไม่ใช่ 256-bit จึงไม่ต้องมารอ Execute ที่ละ 256-bit แบบที่คุณ SSK เข้าใจ Input 512-bit -> Output 512-bit
ตรงๆ เลยแค่นั้น ไม่มีอะไรซับซ้อนเลย เด็กๆ ก็เข้าใจได้ไม่ยาก แต่ถ้า Decode ว่าเป็น AVX256 หรือ SSE ก็จะทำงานกันอีกแบบก็แค่นั้นเอง ไม่เห็นจะเข้าใจอะไรยากเลยนะครับ
ส่วน Scheduler คุณ SSK ก็ต้องเข้าใจก่อนว่า Skylake และ Ryzen มันต่างกันครับ ตัว Skylake เขาเป็นแบบ Unifed Scheduler คือจัดลำดับได้ทั้ง
ชุดคำสั่งที่ทำงานกับข้อมูลชนิดที่เป็นจำนวนเต็มและ Logic (ALU) และจำนวนทศนิยม Floating Point (FPU) และ Vector เลยในตัว ทั้งหมดมี Reorder
Buffer 224 Entry และสนับสนุนการเรียงลำดับ Allocation Queue ได้ถึง 64 ชุดคำสั่งต่อ thread ดังภาพ
ในขณะที่ Ryzen นั้นจะใช้ระบบ Dedicate Scheduler แยกในส่วนคำสั่งการประมวลผลข้อมูลชนิดจำนวนเต็มและ Logic (ALU) ผ่าน
Integer Scheduler ทางด้านซ้ายมือและ FPU Scheduler ทางด้านขวามือ
หลังจาก X86/64 Decoder แล้วก็จะส่งมาพักไว้ใน MicroOp Queue เพื่อจะแยกชนิดการประมวลผลคำสั่งข้อมูลจำนวนเต็มและ Logic
และชนิดทศนิยมและ Vectore ขนาด 128(256*) bit แบบในภาพข้างบน (*ZEN2 Microarchitect)
แต่น่าเสียดายที่ Instruction Windows ของ Ryzen นั้นกว้างสูงสุดเพียง 256-bit wide และจำนวนรีจิสเตอร์ของ Ryzen ไม่มากพอที่จะ
รองรับการประมวลผลข้อมูลและคำสั่ง AVX512 ที่ต้องอาศัยรีจิสเตอร์ขนาด 512-bit ZMM0-31 จำนวน 32 ชุดเข้าไปในแต่ Core เพื่อเข้า
กันได้กับชุดคำสั่ง AVX512 มาตรฐานที่กำหนดโดย Intel
ด้วยเหตุนี้ Ryzen จึงไม่สามารถประมวลผลข้อมูลคำสั่ง AVX512 ได้ครับ
ผมสรุปให้ฟังง่ายๆ สั้นๆ เพียงแค่นี้ คิดว่าแฟนๆ Intel และ AMD ที่สนใจคงพอจะมองเห็นได้ชัดแล้วว่า
1. Hardware ภายในของ CPU Intel ได้รับการออกแบบมาเพื่อทำงานกับชุดคำสั่งและข้อมูลระดับ 512-bit โดยเฉพาะ
จึงทำให้ สถาปัตยกรรมของ Intel ล้ำสมัยกว่า AMD ที่ยังคงสนับสนุนเพียงการประมวลผลในระดับ 256-bit สูงสุดในปัจจุบัน
2. CPU Skylake X ได้รับการพัฒนาแล้วเสร็จในปี 2014 ในขณะที่ AMD ZEN 2 พัฒนาเสร็จในปี 2019 ที่ผ่านมา
3. ท่านคงมีคำตอบในใจกันเองแล้วนะครับว่า CPU ค่ายไหนล้ำหน้ากว่า
และสำหรับปัจจุบันนี้ Intel ยังล้ำหน้าไปไกลลิบด้วยสถาปัตยกรรม Sunny Cove Microarchitect ในปี 2019 ที่ AMD ยากจะไล่ทัน
อาทิ
1. World First X86-64 CPU Increse Physical Address / Linear Address
Intel เพิ่มความสามารถในการอ้าง Physical Address ไปที่ 52-bit และเพิ่มความสามารถการอ้าง Linear Address ไปที่ 57-bit จากปัจจุบัน 48-bit
ใน Skylake Microarchitect ทำให้ CPU สามารถประกาศ Address ไปไกลกว่ายุคใดๆ ที่ผ่านมา
2. 10-Port Execution (From 8 Skylake X) และเพิ่มแบนด์วิธ L1 cache จาก 2 x 512-bit Load / 1 x 512-bit Store ใน Skylake X
เป็น 2 x 512-bit Load / 2 x 512-bit Store ใน Icelake และ CPU รุ่นที่ใหม่กว่า
3. ชุดคำสั่ง AVX512 ใหม่อีกมากมาย
สำหรับประเด็น Scheduler ที่ท่าน SSK กล่าวมา ในส่วนของ Intel และ AMD มีความแตกต่างกันนะครับ
ข้อจำกัดของ Ryzen จึงไม่ใช่ข้อจำกัดของ Skylake แต่อย่างใด
คงสรุปง่ายๆ ให้ทุกท่านฟังเป็นความรู้กันตรงนี้นะครับ
สำหรับคำถามที่ว่า Intel หรือ AMD ล้ำหน้ากว่ากันนั้น ผมเชื่อว่าหากทุกท่านได้ติดตามมาตั้งแต่ต้น
นาทีนี้ทุกท่านคงมีคำตอบในใจเป็นที่เรียบร้อยแล้วนะครับ
รู้สึกได้เหมือนได้ลูกศิษย์มาขอให้ติววิชา Microprocessor ให้ แต่ลูกศิษย์สอนยากหน่อย ต้องทำใจครับแฟนๆ Intel
คิดว่ากระจ่างไปตั้งแต่วันเสาร์จนผมไปเที่ยวกลับมาแล้วลูกศิษย์ก็ยังไม่ Get จะทำไงดีน้อ แนะให้ไปซื้อ Skylake X หรือ Icelake มาใช้สะดีไหมเนี่ย
1. อยากให้กลับไปทำความเข้าใจดีๆ ในสิ่งที่ผมอธิบายให้ฟังในวันเสาร์ ผมว่าคนที่เขาอ่านละเอียดและตั้งใจจะศึกษาจะเข้าใจดีได้ในเวลาที่น้อยที่สุด
เพราะมันไม่อะไรในกอไผ่ที่ซับซ้อน
2. ดูเหมือนคุณ SSK จะติดใจในประเด็น Port 0+Port 1 ผมก็ได้อธิบายไปแล้ว Instruction Windows ของ Skylake 512-bit wide VS Ryzen 256-bit wide คือประเด็นที่ 1
และต่อมา เมื่อระบบ Decode เจอว่าเป็นคำสั่ง AVX512 มันก็จะ Fused Register ระหว่าง Port 0 และ 1 ให้กว้าง 512-bit อัตโนมัติเพื่อรองรับชุดคำสั่งและข้อมูลไปประมวลผลดังที่
ได้อธิบายไปแล้ว คำสั่ง AVX512 ก็กระทำกับข้อมูลขนาด 512-bit ไม่ใช่ 256-bit จึงไม่ต้องมารอ Execute ที่ละ 256-bit แบบที่คุณ SSK เข้าใจ Input 512-bit -> Output 512-bit
ตรงๆ เลยแค่นั้น ไม่มีอะไรซับซ้อนเลย เด็กๆ ก็เข้าใจได้ไม่ยาก แต่ถ้า Decode ว่าเป็น AVX256 หรือ SSE ก็จะทำงานกันอีกแบบก็แค่นั้นเอง ไม่เห็นจะเข้าใจอะไรยากเลยนะครับ
ส่วน Scheduler คุณ SSK ก็ต้องเข้าใจก่อนว่า Skylake และ Ryzen มันต่างกันครับ ตัว Skylake เขาเป็นแบบ Unifed Scheduler คือจัดลำดับได้ทั้ง
ชุดคำสั่งที่ทำงานกับข้อมูลชนิดที่เป็นจำนวนเต็มและ Logic (ALU) และจำนวนทศนิยม Floating Point (FPU) และ Vector เลยในตัว ทั้งหมดมี Reorder
Buffer 224 Entry และสนับสนุนการเรียงลำดับ Allocation Queue ได้ถึง 64 ชุดคำสั่งต่อ thread ดังภาพ
ในขณะที่ Ryzen นั้นจะใช้ระบบ Dedicate Scheduler แยกในส่วนคำสั่งการประมวลผลข้อมูลชนิดจำนวนเต็มและ Logic (ALU) ผ่าน
Integer Scheduler ทางด้านซ้ายมือและ FPU Scheduler ทางด้านขวามือ
หลังจาก X86/64 Decoder แล้วก็จะส่งมาพักไว้ใน MicroOp Queue เพื่อจะแยกชนิดการประมวลผลคำสั่งข้อมูลจำนวนเต็มและ Logic
และชนิดทศนิยมและ Vectore ขนาด 128(256*) bit แบบในภาพข้างบน (*ZEN2 Microarchitect)
แต่น่าเสียดายที่ Instruction Windows ของ Ryzen นั้นกว้างสูงสุดเพียง 256-bit wide และจำนวนรีจิสเตอร์ของ Ryzen ไม่มากพอที่จะ
รองรับการประมวลผลข้อมูลและคำสั่ง AVX512 ที่ต้องอาศัยรีจิสเตอร์ขนาด 512-bit ZMM0-31 จำนวน 32 ชุดเข้าไปในแต่ Core เพื่อเข้า
กันได้กับชุดคำสั่ง AVX512 มาตรฐานที่กำหนดโดย Intel
ด้วยเหตุนี้ Ryzen จึงไม่สามารถประมวลผลข้อมูลคำสั่ง AVX512 ได้ครับ
ผมสรุปให้ฟังง่ายๆ สั้นๆ เพียงแค่นี้ คิดว่าแฟนๆ Intel และ AMD ที่สนใจคงพอจะมองเห็นได้ชัดแล้วว่า
1. Hardware ภายในของ CPU Intel ได้รับการออกแบบมาเพื่อทำงานกับชุดคำสั่งและข้อมูลระดับ 512-bit โดยเฉพาะ
จึงทำให้ สถาปัตยกรรมของ Intel ล้ำสมัยกว่า AMD ที่ยังคงสนับสนุนเพียงการประมวลผลในระดับ 256-bit สูงสุดในปัจจุบัน
2. CPU Skylake X ได้รับการพัฒนาแล้วเสร็จในปี 2014 ในขณะที่ AMD ZEN 2 พัฒนาเสร็จในปี 2019 ที่ผ่านมา
3. ท่านคงมีคำตอบในใจกันเองแล้วนะครับว่า CPU ค่ายไหนล้ำหน้ากว่า
และสำหรับปัจจุบันนี้ Intel ยังล้ำหน้าไปไกลลิบด้วยสถาปัตยกรรม Sunny Cove Microarchitect ในปี 2019 ที่ AMD ยากจะไล่ทัน
อาทิ
1. World First X86-64 CPU Increse Physical Address / Linear Address
Intel เพิ่มความสามารถในการอ้าง Physical Address ไปที่ 52-bit และเพิ่มความสามารถการอ้าง Linear Address ไปที่ 57-bit จากปัจจุบัน 48-bit
ใน Skylake Microarchitect ทำให้ CPU สามารถประกาศ Address ไปไกลกว่ายุคใดๆ ที่ผ่านมา
2. 10-Port Execution (From 8 Skylake X) และเพิ่มแบนด์วิธ L1 cache จาก 2 x 512-bit Load / 1 x 512-bit Store ใน Skylake X
เป็น 2 x 512-bit Load / 2 x 512-bit Store ใน Icelake และ CPU รุ่นที่ใหม่กว่า
3. ชุดคำสั่ง AVX512 ใหม่อีกมากมาย
สำหรับประเด็น Scheduler ที่ท่าน SSK กล่าวมา ในส่วนของ Intel และ AMD มีความแตกต่างกันนะครับ
ข้อจำกัดของ Ryzen จึงไม่ใช่ข้อจำกัดของ Skylake แต่อย่างใด
คงสรุปง่ายๆ ให้ทุกท่านฟังเป็นความรู้กันตรงนี้นะครับ
สำหรับคำถามที่ว่า Intel หรือ AMD ล้ำหน้ากว่ากันนั้น ผมเชื่อว่าหากทุกท่านได้ติดตามมาตั้งแต่ต้น
นาทีนี้ทุกท่านคงมีคำตอบในใจเป็นที่เรียบร้อยแล้วนะครับ
Comment