วันศุกร์ที่ 13 เมษายน พ.ศ. 2550

ระเบิดศึก ยุค Intel Pentium Classic กับ AMD 5x86 และ AMD K5

ระเบิดศึก
ยุค Intel Pentium Classic กับ AMD 5x86 และ AMD K5 [ 11 Apr. 1999 ]
Intel Pentium ( Classic )
เพื่อแก้ปัญหาการอ้างชื่อรุ่นของ CPU ในการขาย CPU เลียนแบบจากทาง AMD และ Cyrix ทาง Intel จึงตัดสินใจจดลิขสิทธิ์ชื่อ CPU ของตน แต่ ชื่อที่เป็นตัวเลขนั้น ไม่สามารถจดทะเบียนลิขสิทธิ์ได้ จึงได้ทำการเปลี่ยนชื่อ CPU ใน generation ที่ 5 ของตนเป็น Pentium ( Pentium มีรากศัพท์มาจาก Penta ที่แปลว่า 5 ) ซึ่งต่อมา ก็เรียกว่า Pentium Classic และพร้อมๆ กันนั้นเอง ก็ได้เกิด slogan ของ Intel ซึ่งจะติดมาพร้อมๆกับ CPU ของตนว่า "Intel Inside" เพื่อสร้างความมั่นใจให้แก่ลูกค้าของตน ว่าได้ CPU ของตน ( Intel ) แน่ๆ ทาง Intel ได้ประกาศตัว CPU Intel Pentium ในปี 1993 โดยเพิ่ม Cache ภายใน หรือ L1 Cache เป็น 2 เท่าจากรุ่น 486 คือ จาก 8 K เป็น 16 K แต่แบ่งหน้าที่การทำงานของ Cache เป็น 2 ส่วน คือ เป็น Data Cache ใช้สำหรับเก็บข้อมูลที่จะใช้ประมวลผล มีขนาด 8 K และ อีกส่วนหนึ่ง เป็น Instruction Cache ซึ่งใช้เก็บคำสั่งต่างๆ ที่จะใช้ในการประมวลผล อีก 8 K ในส่วนของทรานซิสเตอร์ภายใน ก็เพิ่มจาก 486 ซึ่งมีประมาณ 1.2 ล้านตัว ไปเป็น 3.1 ล้านตัว และ ในส่วนของการประมวลผล ก็เปลี่ยนจากเดิมมาเป็น 32 Bit แต่ในส่วนของ FPU นั้นใช้ 64 Bit ดังนั้น pin ตรง interface ที่ใช้ ก็ต้องรองรับการส่ง/รับ ข้อมูลขนาด 64 Bit ด้วย ทำให้ต้องเปลี่ยน Interface ด้วย ทำให้ CPU Intel Pentium ไม่สามารถใช้บน Mainboard ของ 486 ได้ เรียก Interface นี้ว่า SPGA ซึ่งมีจำนวนช่องขาสำหรับใส่ pin ทั้งหมด 296 ขา หรือ ที่เราเรียกกันจนติดปากว่าเป็น Socket 7 นั่นเอง และ ไฟเลี้ยงของ CPU ก็เปลี่ยนมาเป็น 5 Volt ใน Pentium รุ่นแรกๆ ( Pentium 60 และ Pentium 66 ) แต่ต่อมา3.3 Volt เพราะการใช้ไฟที่ 5 Volt นั้น ทำให้ความร้อนที่เกิดขึ้นสูงมาก จึงได้ลดไฟเลี้ยงลง รวมถึงเปลี่ยนมาใช้ system bus ที่ 50 , 60 และ 66 MHz ด้วย CPU Intel Pentium นี้ ได้เพิ่ม Architecture เข้าไปใหม่ที่เรียกว่า "super-scalar" ซึ่งก็ทำให้ประสิทธิภาพโดยรวมเพิ่มขึ้นมาจาก 486 มาก โดยเฉพาะประสิทธิภาพในด้านการประมวลผลเลขจำนวนเต็ม ที่เพิ่มขึ้นเป็นเท่าตัวเลยทีเดียว เรามาดูลักษณะเด่นๆ ของ Intel Pentium กันดีกว่า
เป็น Superscalar Architecture
Dynamic Branch Prediction ( เกี่ยวกับการทำนายผลการคำนวนล่วงหน้า )
สำหรับหน่วยประมวลผลเลขจำนวนเต็มเป็น Pipeline ( 2 Pipeline )
หน่วยประมวลผลเลขทศนิยม ก็เป็น Pipeline ( 1 Pipeline )
Improved Instruction Execution Time
แบ่ง Cache ออกเป็น 8 K สำหรับข้อมูล และ อีก 8 K สำหรับ คำสั่ง
ในส่วนของ Cache ข้อมูล จะเป็น Cache แบบ WriteBack
64-Bit Data Bus
Bus Cycle Pipelining
Address Parity
Internal Parity Checking
Functional Redundancy Checking
Execution Tracing
สนับสนุนการทำงานแบบ Symmetric MuliProcessing หรือ SMP ทำให้สามารถใช้ Dual CPU ช่วยกันประมวลผลได้ แต่อย่างไรก็ตาม ในช่วงที่ Pentium วางตลาดไม่นาน ก็มีข่าวที่ทำให้ทาง Intel ต้องสะอึก นั้นก็คือในช่วงปลายปี ( ประมาลเดือน พฤศจิกายน ) 1994 ( พ.ศ. 2537 ) มีการพบ Bug หรือข้อผิดพลาดในการคำนวนเลขทศนิยม ซึ่งเกิดขึ้นกับการหาร จนเป็นข่าวและทำให้ผู้ซื้อเกิดความลังเลอยู่พอสมควร ทำให้ Intel ต้องเร่งแก้ปัญหานี้ และ ออกแถลงการณ์แก้ข่าวจนวุ่นเลยทีเดียว โดยทาง Intel ก็ยินดีเปลี่ยน CPU ที่มีปัญหานั้นให้ ( รุ่นที่มีปัญหาคือรุ่นแรกๆ ได้แก่ Pentium 60 และ Pentium 66 ) AMD 5x86 และ AMD K5 สำหรับ AMD นั้น เมื่อแยกตัวออกมาจาก Intel และ ผลิต CPU เลียนแบบ CPU ของ Intel โดยใช้ Microcode ของ Intel ซึ่งก็ผลิตมาจนถึงรุ่น AMD 5x86 ซึ่งก็เป็น CPU ที่มีความเร็วมากถึง 133 MHz ใช้ตัวคูณที่ 4 ( 33x4 ) ทำให้ประสิทธิภาพโดยทั่วๆไป นั้นใกล้เคียงกับ ระดับ Intel Penium 75 เลยทีเดียว แต่โดยสถาปัตยกรรมภายในแล้ว ก็เหมือนๆกับ 486DX นั่นเอง เพราะ ไม่ใช่ Superscalar Design เพียงแต่ มันเพิ่มความเร็วขึ้นมาเท่านั้นเอง แต่ก็มีบ้างสำหรับบางคำสั่ง ที่มันสามารถทำงานได้เสร็จภายใน 1 รอบสัญญาณนาฬิกา
AMD 5x86 นั้น มี Cache ภายใน หรือ L1 Cache ขนาด 16 K และ เป็นแบบ Write Back เป็น CPU แบบ 32 Bit และ ใช้ความกว้างของเส้นทางข้อมูล 32 Bit รวมถึงสามารถอ้างตำแหน่งได้ 32 Bit ด้วย โดยราคานั้น ก็ถูกมากๆ และ คิดคุณภาพต่อราคา ก็จัดว่าคุ้มค่ามากๆ โดยใช้ Pin และ Mainboard แบบ 486 ได้
และ ต่อมา ทาง AMD ก็ได้หันมาผลิต CPU ที่เป็นของตัวเองบ้าง โดยทำการออกแบบสถาปัตยกรรมภายในใหม่เองทั้งหมด และ เปลี่ยนชื่อ CPU ของตน ซึ่งจัดว่าเป็น Generation ที่ 5 เสียใหม่ว่า AMD K5 ซึ่งในช่วงแรกๆ ก็ยังคงเรียกว่า AMD 5k86 เพื่อมิให้ผู้ใช้เกิดการสับสน และ เปรียบเทียบรุ่นของ CPU ไม่ถูก โดยสถาปัตยกรรมของ AMD K5 นั้นได้ spec ต่างๆ เป็นเท่าตัวของ Intel Pentium และได้มีการใช้ P-Rating ( หรือ PR ) เป็นตัววัดประสิทธิภาพ เทียบกับ CPU ของ Intel Pentium ซึ่งประสิทธิภาพของ AMD K5 นั้น ก็จัดได้ว่าดีเยี่ยมทีเดียว เพียงแต่ รุ่นนี้ออกมาช้า และขาดการโปรโมทที่ดี ทำให้ไม่ได้รับการนิยมเท่าที่ควร ทั้งๆ ที่ความสามารถนั้น ก็เทียบเท่ากับ Intel Pentium ( จะมีก็แต่ในส่วนของ FPU ที่ยังคงตามหลังอยู่ ) และ ราคานั้น ก็ถูกกว่า Intel Pentium อยู่พอสมควรเช่นกัน เรามาดูลักษณะเด่นๆ ของ AMD K5 บ้างดีกว่า
4-issue core with full out-of-order execution and completion
แบ่ง L1 Cache เป็นสองส่วน คือ 8 K สำหรับ Cache ข้อมูล และ อีก 16 K สำหรับ Cache คำสั่ง
ในส่วนของ Cache ข้อมูล จะเป็น Cache แบบ WriteBack
Dynamic, block-oriented branch prediction with speculative execution
5-stage RISC-like pipeline
6 parallel functional units
High-performance FPU
Validated software compatibility
Static clock control with AMD-patented Digital Phase Lock Loop (DLL) circuitry
64-bit Pentium-compatible และใช้ Socket 7 เช่นเดียวกับ Pentium
ใช้ System Bus เป็น 60 และ 66 MHz
Compatibility with existing 586-class systems and supporting designs
ใช้ไฟเลี้ยง CPU 3.52 MHz ผมจะขอกล่าวถึง NextGen 5x86 สักนิดหนึ่ง เพราะ บริษัทนี้ ถูก AMD เข้าซื้อ และ รวมเทคโนโลยี เข้าเป็น CPU ในยุคใหม่ ในช่วงเวลาถัดมา โดย CPU ของ NextGen ในสมัยนั้น คือ 5x86 มีคุณสมบัติที่ดูแล้วน่าสนใจมากๆ เลยทีเดียว แต่ก็มีข้อด้อยที่น่าเสียดายใช่น้อยเช่นกัน มาดูลักษณะเด่นๆของ Nx586 กันดีกว่า
Superscalar Execution
มี 2 Pipeline และสามารถจัดการกับคำสั่งแบบไม่เรียงลำดับได้
แบ่ง Cache ระดับ 1 ออกเป็น ส่วนข้อมูล และ ส่วนคำสั่ง
Branch Prediction
64-bit bus ซึ่งดูๆแล้ว ก็เหมือนๆ กับ ทั้ง Pentium และ AMD K5 เลย แต่ยังครับ ยังมีอยู่ 2 จุด ที่เป็นจุดเด่น และ น่าสนใจของ Nx586
RISC86 Microarchitecture จากพื้นฐานการทำงานของ RISC นั้น จะเร็วและ มีประสิทธิภาพโดยรวม สูงกว่าแบบ CISC ดังนั้น การเพิ่มประสิทธิภาพให้กับ CPU ตระกูล x86 ซึ่งเป็น CISC ก็โดยการ แปลงคำสั่งของ RISC มาใช้บน CISC ซึ่งก็เรียกว่าเป็น RISC86 ซึ่งผลที่ได้ก็คือ
ได้ประสิทธิภาพแบบ RISC สำหรับคำสั่งของ x86 ที่เป็น CISC
หน่วยการทำงาน หรือ Execution Unit ก็จะมีขนาดเล็กลง
หน่วยการทำงานจะมีประสิทธิภาพดีขึ้น
ง่ายต่อการเพิ่มหน่วยการทำงานในภายภาคหน้า ซึ่งนอกจากจะทำให้มีประสิทธิภาพสูงในช่วงนั้นแล้ว ยังเผื่อสำหรับอนาคตต่อไปได้อีกด้วย
On-chip L2 Cache Controller Nx586 นั้นจะมีตัวควบคุมการทำงานของ L2 Cache ( ที่อยู่บน Mainboard ) อยู่ในตัว CPU เองเลย ทำให้สามารถควบคุมการทำงานให้ได้ประสิทธิภาพมาก กว่าการที่จะให้ตัวควบคุมบน Mainboard เป็นตัวควบคุม ซึ่งแน่นอน การทำงานของ L2 Cache ก็จะทำงานด้วยความเร็วที่เท่าๆกับความเร็วของ CPU เลย ซึ่งก็จะทำให้ได้ประสิทธิภาพสูงขึ้นอีก ดูแล้วน่าจะมีประสิทธิภาพสูง และ เป็นคู่แข่งที่น่ากลัวมากสำหรับ Intel Pentium เลยนะครับ แต่ Nx586 นั้น มีข้อด้อยที่ทำให้ความเด่นของมันลดลงไปเลย ก็คือ
ใช้ Socket ที่ต่างจาก Pentium และ K5 อีกทั้งยังใช้ไฟเลี้ยง 4 Volt ด้วย ทำให้ต้องออกแบบ Mainboard มาเฉพาะตัวเลย
ไม่สนับสนุนการทำงานเชิงทศนิยม ทำให้ไม่ compatible กับ คำสั่งเก่าๆ บางคำสั่งของ 486 DX และ ประสิทธิภาพด้านนี้ด้อยลงไปถนัดตา ซึ่งจุดนี้หล่ะครับ ที่ทำให้มันไม่เด่น ไม่ดังนัก แต่ มันก็เป็นเทคโนโลยี ที่ AMD นำไปใช้ในการพัฒนา CPU ของตนต่อไป รายละเอียดเพิ่มเติม
Write Back กับ Write Through เป็นวิธีการเขียนข้อมูลกลับลง ที่หน่วยความจำหลัก โดยที่ Write Throught นั้น เมื่อมีการเขียนข้อมูลลงบน Cache แล้ว ก็จะทำการเขียนข้อมูลลงบน หน่วยความจำหลักด้วย ทันที ซึ่งก็จะเสียเวลาในการเข้าถึงหน่วยความจำหลักอยู่มาก ( เมื่อเทียบกับการเข้าถึงหน่วยความจำ Cache ) แต่ Write Back นั้นจะต่างกัน โดย Write Back นั้นจะเก็บข้อมูลบน Cache ให้นานที่สุด เมื่อมีการ Idle หรือ ต้องการใช้เนื้อที่บน Cache ในการเก็บข้อมูล อื่น จึงจะทำการเขียนข้อมูลนั้นๆ ลงบน หน่วยความจำหลัก ซึ่งก็ช่วยลดเวลาลงอีกมากเลยทีเดียว
PR ( P-Rating ) P-Rating นั้น เป็นมาตรในการวัดประสิทธิภาพของ CPU ที่ง่ายต่อความเข้าใจ ซึ่งเกิดจากความร่วมมือในการกำหนดมาตรฐานร่วมกันระหว่าง AMD, Cyrix, IBM และ SGS Thomson โดยใช้โปรแกรม Winstone เป็นตัวทดสอบประสิทธิภาพ ( ในสมัยนั้นใช้ Winstone 96 ) ทำไมต้องเป็น P-Rating?ก็เพราะว่า เมื่อ Intel ตัดสินใจจดลิขสิทธิ์ชื่อ Pentium แล้ว AMD, Cyrix และ เจ้าอื่นๆ ก็ไม่สามารถจะใช้ชื่อ Pentium ได้ ซึ่งแต่รุ่น 286, 386 หรือแม้แต่ 486 ที่ผ่านมา ไม่ว่าจะของ Intel , AMD , Cyrix หรือเจ้าไหนๆ ก็ใช้ชื่อนี้ได้ แต่เมื่อเกิดเหตุการณ์นี้ขึ้น ก็อาจสร้างความงุนงงแก่ผู้ซื้อ ว่ารุ่นใหม่ๆ ของ AMD, Cyrix นั้น จะเอาไปเทียบรุ่นกับ Pentium ที่เท่าไร จึงเกิดมาตรฐานนี้ขึ้นมา การทดสอบประสิทธิภาพเพื่อหาค่า PR นั้น ก็ทำโดยใช้ CPU Intel Pentium วัดประสิทธิภาพด้วย Winstone ในระดับต่างๆ จากนั้น จึงเอา CPU Intel Pentium ออก แล้ว เอา AMD K5 ( หรือ อื่นๆ ) ใส่ลงไปแทน แล้ว วัดประสิทธิภาพเปรียบเทียบกัน โดยที่อุปกรณ์อื่นๆ ยังคงเหมือนเดิม ต่างกันที่ CPU เท่านั้น ถ้า AMD K5 นั้น มี P-Rating เป็น 100 ( PR 100 ) นั่นก็หมายความว่า CPU ตัวนั้นมีประสิทธิภาพที่เทียบเท่า หรือ เหนือกว่า CPU ของ Intel Pentium ที่ความเร็ว 100 MHz หรือ AMD K5 PR 133 ก็หมายความว่า มีประสิทธิภาพในระดับเดียวกันหรือมากกว่า Intel Pentium 133 MHz นั่นเอง แต่อย่างไรก็ตาม "PR" นั้น ก็ไม่ใช่เป็นตัวบอกความเร็วที่แท้จริงของ ความเร็วของ CPU ดังที่ได้เห็นแล้วจากตัวอย่างข้างต้นของ AMD ปัจจุบันนี้ ก็เหลือแต่ CPU ของ IBM และ Cyrix เท่านั้น ที่ยังคงใช้ PR เป็นตัวบอกรุ่นความเร็วของ CPU ของตน
Pipelining คือการแบ่งหน้าที่การทำงานของ CPU เพื่อเพิ่มประสิทธิภาพในการทำงาน โดยแบ่งคร่าวๆ เป็น 5 ขั้นตอน คือ
Instruction Fetch หรือ ภาครับคำสั่ง จะทำหน้าที่รับคำสั่งใหม่ๆ ทั้งจากหน่วยความจำหลัก หรือจากใน Instruction Cache เข้ามา เพื่อส่งต่อให้ภาคต่อไปจัดการต่อ
Instruction Decode หรือ ภาคการแปลคำสั่ง คือ จะทำหน้าที่แยกแยะคำสั่งต่างๆ ของ CISC ซึ่งในตอนที่แล้ว เราทราบแล้วว่า CISC นั้น ในแต่ละคำสั่ง จะมีขนาดที่ไม่แน่นอน ตรงส่วนนี้ก็จะทำการซอยคำสั่งนั้นเป็นคำสั่งย่อยๆ ให้มีความยาวเท่าๆกัน ในลักษณะเช่นเดียวกับ RISC เรียกคำสั่งย่อยๆ นั้นว่า Micro Operation
Get Operands หรือ ภาครับข้อมูล คือ รับข้อมูลที่จะใช้ในการประมวลผลเข้ามาเก็บไว้ เช่นจากขั้นตอนที่ 2 เรารู้ว่าจะใช้การ "บวก" ก็ต้องรับค่าที่จะใช้ในการบวก มาด้วยอีก 2 ค่า บางทีขั้นตอนนี้ ก็ถูกรวมเข้ากับขั้นตอนที่ 2
Execute หรือ ภาคประมวลผล เป็นขั้นตอนที่ทำการประมวลผลตามคำสั่งและ operand ที่ได้รับมาจากขั้นที่ 2 และ 3 ซึ่ง ถ้าให้ขั้นที่ 2 เป็นการถอดรหัสว่าเป็นการบวก ขั้นที่ 3 รับค่าที่จะบวก ขั้นนี้ ( ขั้นที่ 4 ) ก็จะทำการบวกให้ได้ผลลัพธ์ออกมา
Write Result หรือ ภาคการเขียนข้อมูลกลับ เมื่อทำการประมวลผลเสร็จสิ้น ผลลัพธ์ที่ได้ก็จะนำไปเก็บไว้ใน register หรือ ใน Data Cache ซึ่งบางที ขั้นตอนนี้ ก็ถูกมองรวมไว้กับขั้นที่ 4 ดังจะเห็นได้ว่า เมื่อ CPU ได้รับ คำสั่งเข้ามาแล้ว ก็จะทำการแปลงหรือถอดรหัสให้เป็นคำสั่งที่ CPU เข้าใจ แล้วจึงทำงานตามคำสั่งนั้นๆ ซึ่งในขณะที่ทำงานแต่ละคำสั่งนั้น ก็ต้องรอให้ทำครบทุกขั้นตอนเสียก่อน จึงจะรับคำสั่งใหม่ๆ เข้ามาได้ การทำงานแบบ Pipelining นั้น ก็จะช่วยใช้ช่วงเวลาให้คุ้มค่า ให้ CPU ทำงานได้เต็มประสิทธิภาพยิ่งขึ้น โดยในขณะที่รับคำสั่งเข้ามาก็จะทำการส่งต่อให้ ภาคแปลคำสั่ง เมื่อส่งต่อให้ แล้ว ก็ทำการรับคำสั่งถัดไปทันที และ เมื่อ ภาคแปลคำสั่งได้รับคำสั่ง ก็จะทำการแปล และ แยกแยะคำสั่ง แล้วส่งต่อให้ภาครับข้อมูลต่อไป เป็นทอดๆ ซึ่งทำให้สามารถทำงานได้หลายๆ คำสั่งในขณะเวลาเดียวกัน การทำงานแบบ Pipeline นี้ ก็ช่วยเพิ่มประสิทธิภาพของ CPU ได้อีกมากมายเลยทีเดียว
Super Scalar อีกวิธีหนึ่งสำหรับเพิ่มประสิทธิภาพของ CPU นั่นก็คือ การให้ CPU นั้นสามารถทำงานหลายๆ คำสั่งได้พร้อมๆกัน ใน 1 สัญญาณนาฬิกา หรือมีหลายๆ Pipeline ทำให้สามารถทำงานได้หลายๆ คำสั่งพร้อมๆ กันได้ เรื่องของ Pipeline และ SuperScalar สามารถอ่านรายละเอียดเพิ่มเติมได้ที่ Pipeline and SuperScalar ครับ
RISC และ CISC อ่านเพิ่มเติมได้ที่ RISC vs. CISC ครับ

ไม่มีความคิดเห็น: