วันพฤหัสบดีที่ 24 กันยายน พ.ศ. 2552

Cache นั้นสำคัญไฉน

• Cache คืออะไร? และ ที่มาของ Cache

Cache นั้น ถ้าว่ากันตามหลักการ มันก็คือ หน่วยความจำชนิดหนึ่ง ซึ่งจะมีความเร็วในการเข้าถึง และการถ่ายโอนข้อมูล ที่สูง โดยจะมีหน้าที่ในการเก็บ พัก ข้อมูลที่มีการใช้งานบ่อยๆ เพื่อเวลาที่ CPU ต้องการใช้ข้อมูลนั้นๆ จะได้ค้นหาได้เร็ว โดยที่ไม่จำเป็น ที่จะต้องไปค้นหาจากข้อมูลทั้งหมด

เปรียบเทียบกันง่ายๆ ก็เหมือนกับการอ่านหนังสือ แล้วเวลาที่เจอข้อความที่น่าสนใจ ก็ทำการจดบันทึกไว้ที่สมุด แล้วเมื่อเวลาต้องการ ข้อมูลนั้นๆ ก็สามารถค้นหาจากในสมุดจดได้ง่ายกว่า เปิดหาจากหนังสือทั้งเล่ม แน่นอน ข้อมูลที่จดลงในสมุดนั้น มีขนาดน้อยกว่า ในหนังสือแน่ๆ คงไม่มีใครที่จะลอกข้อมูล ทุกบันทัด ทุกหน้าของหนังสือ ลงในสมุดจดเป็นแน่แท้

เรามาว่ากันถึงเรื่อง Cache ของเรากันต่อดีกว่า จากที่กล่าวมาแล้วข้างต้น ในปัจจุบัน เราจะพบการใช้งาน Cache อยู่ 2 แบบ นั่นก็คือ Memory Cache และ Disk Cache โดยที่หลักการทำงานของทั้ง 2 ชนิดนี้ก็คล้ายๆ กัน กล่าวคือ Disk Cache นั้น จะเป็นการอ่านข้อมูลที่ต้องการใช้งานเข้ามาเก็บไว้ในหน่วยความจำหลัก เมื่อ CPU มีการเรียกใช้งาน ก็จะเข้าไปค้นหาในหน่วยความจำหลักก่อน หากว่าไม่พบจึงจะไปค้นหาใน Harddisk ต่อไป และ ในกรณีของ Memory Cache นั้น ก็เป็นอีกลำดับขั้นหนึ่งถัดจาก Disk Cache นั่นก็คือ จะทำการดึงข้อมูลที่มีการเรียกใช้งานบ่อยๆ เข้ามาเก็บไว้ในหน่วยความจำ ขนาดเล็ก ที่มีความไวสูงกว่าหน่วยความจำหลัก เมื่อ CPU ต้องการใช้งาน ก็จะมองหาข้อมูลที่ต้องการที่ หน่วยความจำขนาดเล็กนั้นก่อน ก่อนที่จะเข้าไปหาในหน่วยความจำหลักที่ มีการเข้าถึงและการส่งถ่ายข้อมูลที่ช้ากว่าต่อไป และ หน่วยความจำขนาดเล็กๆ นั้น เราก็เรียกมันว่า Cache นั่นเอง

สำหรับในบทความนี้ เราจะพูดถึงเรื่อง Memory Cache กันอย่างเดียว เพราะฉะนั้นผมจะขอเรียกแค่สั้นๆว่า Cache ก็ขอให้เป็นอันเข้าใจตรงกันนะครับ ว่ามันหมายถึง Memory Cache



Cache นั้น ตำแหน่งของมัน จะอยู่ระหว่าง CPU กับ หน่วยความจำหลัก โดยมันจะทำการดึง หรือ เก็บข้อมูลที่มีการเรียกใช้งานบ่อยๆ จากหน่วยความจำหลัก ซึ่งความไวในการอ่าน หรือ ส่งถ่ายข้อมูลจาก Cache ไปยัง CPU หรือ จาก CPU ไปยัง Cache นั้น จะทำได้เร็วกว่า จากหน่วยความจำหลักไปยัง CPU หรือจาก CPU ไปยังหน่วยความจำหลัก มาก เพราะทำด้วย SRAM ซึ่งมีความไวสูง และมีราคาแพงกว่าหน่วยความจำของระบบที่เป็น DRAM อยู่มาก และก็เพราะราคาที่แพงนี้ ทำให้ขนาดของ Cache ที่ใช้ในระบบ จึงมีขนาดน้อยกว่าหน่วยความจำหลักอยู่มากเช่นกัน

DRAM หรือ Dynamic RAM นั้นจะทำการเก็บข้อมูลในตัวเก็บประจุ ( Capacitor ) ซึ่งจำเป็นจะต้องมีการ refresh เพื่อ เก็บข้อมูลให้คงอยู่ โดยการ refresh นี้ ทำให้เกิดการหน่วงเวลาขึ้นในการเข้าถึงข้อมูล และก็เนื่อง จากที่มันต้อง refresh ตัวเองอยู่ตลอดเวลานี้เอง จึงเป็นเหตุให้ได้ชื่อว่า Dynamic RAM

ส่วน SRAM นั้นจะต่างจาก DRAM ตรงที่ว่า DRAM จะต้องทำการ refresh ข้อมูลอยู่ตลอดเวลา แต่ในขณะที่ SRAM จะเก็บข้อมูลนั้นๆ ไว้ และจะไม่ทำการ refresh โดยอัตโนมัติ ซึ่งมันจะทำการ refresh ก็ต่อเมื่อ สั่งให้มัน refresh เท่านั้น ซึ่งข้อดีของมัน ก็คือความเร็ว ที่เร็วกว่า DRAM ปกติมาก แต่ก็ด้วยราคาที่สูงกว่ามาก จึงเป็นข้อด้อยของมันเช่นกัน

จากที่กล่าวมาข้างต้น ก็ดูเหมือนว่า Cache นั้น มีความสำคัญ ต่อความเร็วของระบบอยู่ไม่ใช่น้อย แล้วทำไมเราถึงเพิ่งจะให้ความสำคัญกับมันล่ะ? เพราะว่า เพิ่งมีการใช้ Cache กับ CPU รุ่นใหม่ๆ อย่างนั้นหรือ?

เปล่าเลย จริงๆแล้ว เรามีการใช้ Cache มาตั้งนานแล้ว ตั้งแต่รุ่น 80486 ซึ่งสมัยนั้นทาง Intel ก็ได้เริ่มมีการใส่ Cache ให้กับ CPU ของตน โดยเริ่มใส่ขนาด 8KB ในรุ่น 486DX-33 และ ได้ทำการเพิ่มเป็น 16KB ในรุ่น 486DX4 เป็นต้นมา ซึ่ง Cache ที่ใส่ไปนั้น ได้ใส่เข้าไปในแกนหลักของ CPU เลย ทำให้การติดต่อระหว่าง CPU กับ Cache นั้น ทำได้เร็วมาก และมีการใช้ Cache อีกขั้นหนึ่ง โดยใส่ไว้ที่ Mainboard ซึ่งจะมีขนาดที่ใหญ่กว่า แต่ช้ากว่า Cache ที่ใส่ไว้ในแกน CPU

เมื่อ CPU ต้องการข้อมูลใดๆ ก็จะทำการค้นหาจาก Cache ที่อยู่ภายในแกน CPU ก่อน หากว่าพบข้อมูลที่ต้องการ ( เรียกว่า Cache Hit ) ก็จะดึงข้อมูลนั้นๆ มาใช้งานได้เลย แต่หากไม่พบ ( เรียกว่า Cache Miss ) ก็จะทำการค้นหาในส่วนของ Cache ที่อยู่บน Mainboard ต่อไป และ หากว่ายังไม่พบอีก ก็จะไปค้นหาในหน่วยความจำหลักต่อไปอีกขั้น และหากว่าในหน่วยความจำหลักนั้น ก็ยังไม่มีข้อมูลที่ต้องการ ก็จะไปค้นหาต่อใน Harddisk ต่อไป

ด้วยตำแหน่งในการเก็บ Cache ที่ต่างกัน และ ลำดับขั้นในการเรียกใช้งานต่างกัน จึงเรียก Cache ที่อยู่ในแกนของ CPU ว่า Internal Cache หรือ Level 1 Cache ( L1 Cache ) และ เรียก Cache ที่อยู่บน Mainboard นั้นว่าเป็น External Cache หรือ Level 2 Cache ( L2 Cache )

ต่อมา ใน CPU รุ่น Pentium ของ Intel นั้น ก็ได้ทำการแบ่ง Cache ภายใน ออกเป็น 2 ส่วนเพื่อแยกการทำงานกัน ซึ่งก็ได้แบ่งจาก 16KB นี้ ออกเป็น 8KB เพื่อใช้ เก็บคำสั่งต่างๆ เรียกว่า Instruction Cache และ อีก 8KB เพื่อใช้เก็บข้อมูลต่างๆ เรียกว่า Data Cache

และต่อมา CPU ในรุ่น Pentium II ของทาง Intel นั้น ก็ได้มีการเปลี่ยนแปลงตำแหน่งการเก็บ Cache ระดับ 2 ซึ่งจากปกติจะจัดเก็บไว้ บน Mainboard ก็ทำการย้าย มาเก็บไว้บน Package เดียวกับ CPU ( CPU Intel Pentium II นั้น จะมีลักษณะเป็น Cartridge แผ่นกว้างๆ มี CPU อยู่ตรงกลางและ เก็บ Cache ไว้ข้างๆ แล้วรวมกันเป็น Package เดียวกัน เรียกว่า Single Edge Contact Cartridge หรือ SECC แต่ก็ยังคงเรียก Cache ที่อยู่บน SECC ว่าเป็น External Cache หรือ Level 2 Cache เช่นเดิม เพราะยังคง อยู่ภายนอกตัว CPU เพียงแค่อยู่บน Package เดียวกันเท่านั้น

แต่ด้วยราคาที่สูงมากของ CPU Pentium II ในสมัยที่เพิ่งวางตลาดนั้น ทำให้มีผู้ที่มีอำนาจในการซื้อมาใช้งานน้อย ทาง Intel จึงได้ตัด Cache ระดับ 2 ออก จาก Pentium II เพื่อลดต้นทุนการผลิต และ เปลี่ยนรูปแบบ Package ให้ดูบางลง แล้วเรียก CPU ใหม่นี้ว่า Celeron และ เรียก Package ของ Celeron ว่า Single Edge Processor Package

จากที่กล่าวมาแล้วข้างต้นมาแล้วว่า Cache นั้นมีราคาสูง เพราะฉะนั้น เมื่อตัด Cache ระดับ 2 ออกทำให้ราคาของ Celeron ถูกกว่า Pentium II อยู่มาก และ ทาง Intel ก็หวังจะใช้ Celeron ที่ราคาถูกนั้น ตีตลาดระดับกลาง และ ระดับล่าง

แต่แล้วก็ฝันสลาย เพราะ Celeron ที่ไม่มี Cache นั้น ในด้านการเล่นเกมส์ ที่ไม่มีการเรียกใช้ Cache เท่าไร ทำคะแนน หรือ มีความสามารถ เทียบเท่ากับ Pentium II ที่ระดับความเร็วเท่าๆ กัน แต่ ในงานด้าน Office Application เช่น Microsoft Word, Microsoft Excell กลับทำได้แย่มากๆ จากที่เห็นก็คือ Celeron ที่ความเร็ว 300 MHz นั้น เมื่อใช้งานกับ Application ดังกล่าว กลับช้ากว่า Pentium MMX 233 เสียอีก ทำให้ Celeron รุ่นดังกล่าวไม่ได้รับความนิยมเท่าใดนัก

ทาง Intel จึงได้ผลิต Celeron รุ่นใหม่ที่ได้เติม Cache ระดับ 2 เข้าไปด้วย โดยให้มีขนาดเพียง 1/4 ของ Pentium II แต่ให้ทำงานด้วย ความเร็วเท่ากับ ความเร็วของ CPU ( Cache ระดับ 2 ของ Pentium II นั้นจะทำงานที่ความเร็วเพียงครึ่งหนึ่งของความเร็ว CPU ) และเพียงแค่เพิ่ม Cache ระดับ 2 เข้าไปนี้เอง ผลคะแนนที่ได้จากการทำงานกับ Application ดังกล่าวนั้น กลับเพิ่มขึ้นมามาก ต่างจาก รุ่นเดิมที่ไม่มี Cache อย่างเห็นได้ชัด

นี่เป็นจุดหนึ่งละนะ ที่ทำให้ Cache เริ่มเป็นที่สนใจ มากขึ้น แต่ยังไม่หมดเท่านี้ อีกจุดหนึ่งที่ทำให้เรื่องของ Cache นั้น เป็นที่กล่าวถึง กันมากขึ้นในขณะนี้ เกิดจากการประกาศตัวของ AMD K6-III

AMD K6-III มีอะไรดี ถึงทำให้เรื่องของ Cache เป็นที่น่าสนใจนัก อันนี้คงต้องเท้าความกลับไปอีกสักนิดหนึ่งก่อน ว่า CPU ของ AMD นั้นก็มีการใช้ Internal Cache และ External Cache เช่นเดียวกับ CPU ของ Intel มาโดยตลอด เมื่อ Intel เปลี่ยนสถาปัตยกรรมใหม่ เอา Cache ไปไว้บน Package ของ CPU และไม่มีการใช้ Cache บน Mainboard อีกต่อไป แต่ทาง AMD ก็ยังคงใช้งานบน สถาปัตยกรรมเดิม คือมี Internal Cache ภายใน CPU และมี External Cache อยู่บน Mainboard เรื่อยมา จนถึงรุ่น AMD K6-2

พอมา AMD K6-III ( หรือก็คือ AMD K6-3 แต่มีการเปลี่ยนชื่อ เพื่อให้สอดคล้องกับ Intel Pentium III ) ทาง AMD ก็ได้ทำการ เพิ่ม Cache เข้าไปที่ Package ของ CPU บ้าง ( แต่ไม่ได้รวมเข้าไปในแกนของ CPU ) และ ก็ยังคงให้มี Cache บน Mainboard เช่นเดิม ดังนั้น จึงเกิดมีการใช้งาน Cache ถึง 3 ระดับด้วยกัน ( เรียกว่า Tri-Level Cache ) โดย ระดับแรกสุดนั้น ก็คือ Cache ที่อยู่ภายในแกนของ CPU เลย ระดับถัดมา ก็อยู่บน Package ของ CPU และ ระดับสุดท้ายอยู่บน Mainboard ซึ่งขนาดของ Cache ก็จะมากขึ้นตามลำดับ ในขณะที่ความเร็วในการใช้งานกลับลดลงตามลำดับ

และนี่เอง จึงทำให้เรื่องของ Cache นั้นเป็นที่น่าสนใจยิ่งนัก ทั้งเรื่องที่ว่า ขนาดของ Cache ที่มีใน Celeron มีน้อย แต่ทำงานด้วยความเร็วสูง เท่ากับความเร็ว CPU ส่วน Pentium II มี Cache มากกว่า Celeron แต่ทำงานด้วยความเร็วเป็นครึ่งหนึ่ง ของ CPU อย่างไหนสำคัญกว่ากัน ขนาด หรือ ความเร็ว? และ เรื่องของ Tri-Level Cache ใน AMD K6-III นั้น จะทำให้ระบบเร็วขึ้นจริงไหม? มี Cache หลายระดับดีกว่าไหม?

เราจะมาดูกันต่อไป ถึงรายละเอียด และ ความสำคัญของ Cache ในแต่ละระดับกันต่อไป
• Cache ระดับ 1 ( Level 1 cache )

Cache ระดับ 1 นั้น จะเป็นส่วนที่สำคัญที่สุด และตำแหน่งของมันก็จะอยู่ใกล้ๆ กับตัว CPU ที่สุด ทำให้ CPU สามารถเข้าถึงได้รวดเร็วมาก ซึ่งโดยปกติแล้วขนาดของมัน ก็จะไม่ใหญ่นัก เช่น สำหรับ CPU Intel Pentium II หรือ Intel Celeron จะมี L1 Cache ขนาดเพียง 32 KB และ บน AMD K6-2 จะมีขนาด 64 KB ซึ่งถึงแม้ว่าจะมีขนาดเพียง เล็กน้อย แต่ก็มีความสำคัญมาก

ลองดูผลการทดลองประกอบ เพื่อดูความสำคัญของ Cache ทั้ง 2 Level นะครับ
o AMD K6-2 350MHz บน ASUS P5A ( L2 512KB )
o PC100 SDRAM 1x128 MB
o Matrox Millenium G200 8 MB Display Card Driver Version 4.26
o ทดสอบโดย Program Final Reality 1.01 บน Windows 98 / DirectX 6.0
o ทดสอบ 4 ครั้ง โดยทดสอบ ครั้งที่ 1 L1 on L2 on, ครั้งที่ 2 L1 on L2 off, ครั้งที่ 3 L1 off L2 on และ ครั้งสุดท้าย L1 off L2 off

ผลที่ได้จากการทดสอบเป็นดังกราฟนี้ครับ



จากรูป จะเห็นว่า เมื่อ disable L1 cache แล้ว Performance จะ drop ลงอย่างเห็นได้ชัดๆ เลย และ เช่นกัน เมื่อ disable L2 Cache แล้ว Performance ก็ drop ลงเช่นกัน แต่ก็ยังเห็นผลได้ไม่ชัดเจนเท่ากับการ disable L1 Cache

เอาละ ทีนี้ดูผลการทดสอบอย่างไม่เป็นทางการของผมประกอบนะครับ
o Intel Pentium II 300 MHz ( L1 32KB, L2 512 KB ) บน DFI LX ( ที่ office )
o PC 66 SDRAM 1x32 MB
o ทดสอบโดย Wintum 98 version 1.0.33




หมายเหตุ * หมายถึง ใช้เวลาในการ boot นานมาก ( มากกว่า 5 นาที ) และ เมื่อเรียก Program ก็ค้างไปเลย ( ไม่ hang แต่นานมาก ก็เลยไม่ได้ทดสอบ )


จากผลการทดลองข้างต้น ทั้ง 2 การทดลอง ก็พอจะสรุปกันได้แล้วนะครับ ถึงความสำคัญของ Level 1 Cache และ Level 2 Cache โดยเฉพาะอย่างยิ่ง กับ Level 1 Cache นั้น เมื่อผมปิดการใช้งานของมันที่ BIOS เท่านั้นหล่ะ ( Disable Level 1 Cache ) กว่าจะ boot ทีนึงก็นานเลย กว่าจะทำอะไรๆ ก็ลำบาก จะขยับ mouse ยังยากเลยครับ พอเรียก program ก็รอกว่า 5 นาที ถึงจะขึ้นหน้าจอมา ยิ่งถ้า เป็น mode ที่ disable ทั้งL1 และ L2 cache นั้น พอเรียก program ก็หยุดนิ่งไปเลย

Level 1 cache นั้น จะทำงานด้วยความเร็วที่เท่ากับ CPU เลย ( คงเพราะฝังอยู่ในตัว CPU ) และ สำหรับกว่าที่ว่า ยิ่งมี Cache มากๆ ก็จะยิ่งเร็วกว่า แน่นอนว่า คำกล่าวนี้เป็นจริง แต่ก็ไม่ใช่ทั้งหมดทุกกรณี เพราะว่ามีองค์ประกอบอื่นๆ ด้วย ดังจะเห็นได้จาก L1 cache ของ Intel Pentium II ซึ่ง มี ขนาดเพียง 32 KB แต่มีการเข้าถึงได้ 4 ทิศทาง ( 4 way associative ) ในขณะที่ AMD K6-2 จะมี L1 cache ขนาด 64 KB แต่มี การเข้าถึงได้เพียง 2 ทิศทาง ( 2 way associative ) ซึ่งในกรณีของการเข้าถึงแบบสุ่มนั้น Intel จะทำได้เร็วกว่า AMD
• Cache ระดับ 2 ( Level 2 cache )

ส่วนถัดมาในการค้นหาข้อมูลของ CPU เมื่อค้นหาใน Cache ระดับ 1 ไม่พบ ก็คือ Cache ระดับ 2 ซึ่ง ขนาดของ Level 2 Cache นั้น ก็จะต่างกัน ตามรุ่น และ ชนิดของ CPU นั้นๆ ซึ่ง ก็แน่นอน จะมีความของความเร็วแตกต่างกันไปด้วย

จากที่กล่าวมาแล้วเมื่อตอนต้นๆ ถึงเรื่องของ Celeron กับ Pentium II ที่ว่า Celeron นั้นมี Cache ระดับ 2 เพียง 128 KB แต่ทำงานด้วยความเร็วเท่าๆ กับ CPU ส่วน Pentium II จะมี Cache ระดับ 2 ถึง 512 KB แต่ทำงานด้วย ความเร็วเพียง ครึ่งหนึ่งของความเร็วของ CPU แล้วอย่างไหน สำคัญกว่ากัน ความเร็ว หรือว่าขนาด

เราจะมาดูผลการเปรียบเทียบประสิทธิภาพกันระหว่าง Pentium II กับ Celeron ซึ่งดูจะยุติธรรม และ เป็นกลางที่สุด เพราะว่า ต่างก็ใช้แกนของ CPU เหมือนๆกัน จะต่างกันก็เพียงแค่ขนาด และ ความเร็วของ Cache ระดับ 2 เท่านั้น

ให้สังเกตุที่รูปข้างล่าง 2 รูปต่อไปนี้ ซึ่งเป็นกราฟแสดงผลเปรียบเทียบ Performance ระหว่าง Pentium II 300 และ Celeron 300A ด้วย Mainboard ASUS P2B ส่วน spec อื่นๆ ก็ตามที่กล่าวไว้แล้วข้างต้น ( ตอนทดสอบ K6-2 )



จะเห็นได้ว่า มี Level 2 Cache มากๆ นั้น ให้ Performance ที่ดีกว่าจริงๆ แต่ก็ไม่มากนัก เห็นผลไม่ชัดเจน เมื่อเทียบ กับ Celeron ที่มี Level 2 Cache ที่เร็วๆ

อย่างไรก็ตาม ขนาดของ Level 2 cache นั้น ก็ยังเป็นจุดหลักสำคัญของ Performance เพื่อลดการ access disk โดยการอ่านข้อมูลมาเก็บไว้ที่ RAM และนำส่วนสำคัญๆ ที่ใช้บ่อยๆ มาเก็บที่ Cache นั้น ถ้า Cache มีขนาดที่ใหญ่ๆ การที่จะต้องอ่านข้อมูลจาก RAM ซึ่งช้ากว่า Cache นั้น ก็ทำได้ดีกว่า ยิ่งกับระบบ Network-File-Server นั้น ยิ่งมี Cache มากๆ และ เร็วๆ จะยิ่งดี ดังนั้น Intel Pentium II Xeon จึงมี L2 Cache 512K หรือมากกว่านั้น และ ทำงานที่ความเร็วเท่าๆ กับ CPU

สำหรับ AMD K6, K6-2 นั้น ใช้ cache ซึ่งอยู่บน Mainboard ซึ่ง ความเร็วสูงสุด ก็ตาม FSB ที่ใช้ เช่น K6-2 300 MHz นั้น Level 2 Cache ก็จะมี ความเร็ว ที่ 100 MHz ( FSB 100 MHz ) แต่ Intel Pentium II - 300 MHz นั้น จะมี Level 2 Cache ที่ความเร็ว 150 MHz และ Celeron 300A จะมี Level 2 Cache ที่มีความเร็วถึง 300 MHz ซึ่งสำหรับ AMD K6-2 กับ Pentium II นั้น ดูไม่แตกต่างเท่าไร แต่หากว่า เป็น Pentium II 400 ล่ะ จะมี Levl 2 Cache ที่ทำงานที่ 200 MHz ในขณะที่ AMD K6-2 400 MHz ก็ยังใช้ Cache ที่ทำงานด้วยความเร็ว 100 MHz เช่นเดิม นั่นก็เป็นส่วนสำคัญจุดหนึ่งที่ทำให้ผล Performance ในเรื่อง Memory Performance ของ AMD ด้อยกว่า Intel Pentium II และ Celeron

แต่ในสำหรับ AMD K6-3 นั้น ทาง AMD ได้รวม Level 2 cache เข้ากับ Package เดียวกับ CPU เลย โดยเก็บฝังไว้บนตัวของ CPU เช่นเดียวกับ Celeron แต่มีขนาดเป็น 2 เท่า และ ทำงานที่ความเร็วเท่าๆ กับ CPU ซึ่งก็ทำให้ AMD K6-3 นั้น มี L2 cache มากกว่าถึง Celeron 2 เท่า และ มี Level 2 cache ที่ความเร็วเป็น 2 เท่าของ Pentium II ( ที่ความเร็วเท่าๆกัน )

มาดูความสำคัญของ Levl 2 cache จากการทดลองอื่นๆ บ้างนะครับ อันนี้เป็นการทดลองของทางบริษัท Level 2 Company กันนะครับ โดยใช้ Program Ziff-Davis' Ver. 3.0 program MAC version ( ทดสอบกับเครื่อง Mac ) โดยทดสอบกับ L2 cache ขนาด 256 KByte และ 1024 KByte โดยผลที่ได้นี้ เป็น เปอร์เซ็นต์ที่เพิ่มขึ้นจากการที่ไม่มี L2 cache



ก็เป็นผลไว้ดูคร่าวๆนะครับ เพราะเป็นผลบนเครื่อง Mac แต่ผลที่ได้ก็สามารถใช้เป็นข้อสรุปได้เช่นกันถึงความสำคัญ ของ Cache ได้เช่นกัน
• Cache ระดับ 3 ( Level 3 cache )

AMD K6-III นั้น มีจุดที่น่าสนใจมากๆ อย่างหนึ่ง นั้นก็คือ K6-III นั้นจะมี Level 2 cache ฝังอยู่ใน chip CPU มาด้วย แต่ในขณะเดียวกัน Mainboard ที่ใช้สำหรับ AMD K6-III นั้น ก็มี Cache มาให้ด้วย ทำให้ มันมอง Cache บน Mainboard นั้นๆ เป็น Cache ระดับ 3 ( Level 3 Cache )

ทีนี้ เรามาลองดูกันว่า ถ้ามี Cache ระดับ 3 แล้ว Performance จะเพิ่มขึ้น หรือ ลดลงอย่างไร และ ขนาดของ Cache ระดับ 3 นั้นจะต้องเป็นเท่าไร โดยจากรูปนี้ เป็นการทดลองจาก Tom's Hardware เปรียบเทียบให้เห็นถึงผลของการมี Cache ระดับ 3 ที่ ขนาดต่างๆ โดยทดสอบกับ CPU AMD K6-III ( เพราะเป็นรุ่นเดียวในปัจจุบันที่มีการใช้งาน Cache ถึง 3 ระดับ )




จากกราฟ ก็คงจะเห็นถึง Performance ที่เพิ่มขึ้นเมื่อมี Cache ระดับ 3 และ Performance ที่เพิ่มขึ้น กับ ขนาดของ Cache ระดับ 3 แล้วนะครับ แต่จะเป็นเช่นนี้กับทุกกรณีหรือไม่ เรามาลองวิเคราะห์กันดูดีกว่านะครับ

ถ้าผมกำหนดให้ เวลาที่ใช้ในการอ่านข้อมูลจากแหล่งต่างๆ เป็นดังนี้



เมื่อ CPU ต้องการข้อมูลเพื่อการประมวลผล ก็จะมองหาข้อมูลที่ต้องการดังกล่าวเสียก่อน จากใน Cache ระดับ 1 ซึ่งถ้าหาพบ ก็จะใช้เวลาเพียง ไม่เกิน 1 หน่วย แต่ถ้าไม่พบ ก็จะไปมองหาที่ Cache ระดับ 2 ต่อไป ถ้าหาพบ ก็จะใช้เวลาไม่เกิน 11 หน่วยเวลา ( 1+10 ) แต่ถ้าหาไม่พบ ก็ต้องเสียเวลา มากกว่า 11 หน่วยเวลาเพื่อไปค้นหาในหน่วยความจำหลัก หรือ ใน Cache ระดับ 3 ต่อไป

ถ้าไม่มี Cache ระดับ 3 การหาข้อมูลนั้น เมื่อหาจากใน Cache ทั้งระดับ 1 และ ระดับ 2 ไม่พบ ก็จะเข้าไปหาที่หน่วยความจำหลักต่อไป ซึ่งถ้าพบ ก็จะใช้เวลามากกว่า 11 ( 1+10 ) หน่วยเวลา แต่ไม่เกิน 1,011 ( 1+10+1,000 ) หน่วยเวลา แต่ถ้ามี Cache ระดับ 3 ก็จะทำการเข้าไปค้นหาใน Cache ระดับ 3 ต่อไป ซึ่งเวลาที่ใช้ ก็ขึ้นอยู่กับขนาดของ Cache ระดับ 3 นั้นด้วย ซึ่งถ้าหาพบใน Cache ระดับ 3 ก็จะใช้เวลาที่มากกว่า 11 หน่วยเวลา แต่น้อยกว่า 111 ( 1+10+100 ) หน่วยเวลา สำหรับ Cache ระดับ 3 ขนาด 512KB และ น้อยกว่า 211 ( 1+10+100 ) สำหรับ Cache ระดับ 3 ขนาด 1,024 KB และ น้อยกว่า 411 ( 1+10+400 ) สำหรับ Cache ระดับ 3 ขนาด 2,048KB ซึ่งจะสังเกตุได้ว่า ถ้าสามารถหาข้อมูลพบใน Cache ระดับ 3 นั้น เวลาที่ใช้งาน ก็น้อยกว่า การที่ไม่มี Cache ระดับ 2 อยู่มากกว่าเท่าตัว

แต่ถ้าไม่พบล่ะ? ถ้าไม่พบข้อมูลที่ต้องการใน Cache ระดับ 3 ก็จะเสียเวลาในการค้นหาที่มากขึ้น ก่อนที่จะไปค้นหาในหน่วยความจำหลักต่อไป ซึ่งตรงจุดนี้เอง ก็เป็นผลทำให้ Performance ที่ได้ลดลง แต่อย่างไรก็ตาม การที่มี Cache ระดับ 3 ขนาดใหญ่นั้น โอกาสที่จะทำให้ค้นหาข้อมูลที่ต้องการ นั้นก็มากขึ้น

สำหรับอัตราส่วนระหว่าง Level 2 ต่อ Level 3 นั้นก็มีส่วนสำคัญ เช่นเดียวกันกับ อัตราส่วนระหว่าง Level 1/Level 2 หากว่า CPU มองหา ข้อมูลที่ต้องการใน Cache ระดับใดๆ ไม่เจอ ก็จะทำการค้นหาใน Cache ระดับถัดไป ซึ่งจะมีความเร็วช้ากว่า แต่มีขนาดใหญ่กว่า แต่อย่างไรก็ตาม ถ้าใน Cache ระดับถัดไปนั้น ขนาดไม่ใหญ่ โอกาสที่จะหาข้อมูลที่ต้องการเจอนั้น ก็มีน้อยกว่า ( เพราะมีเนื้อที่ น้อยกว่า ทำให้โอกาสที่จะดึงข้อมูลจาก RAM มา แล้วตรงกับที่ต้องการนั้น เป็นไปได้น้อยกว่า ) ก็ทำให้ CPU นั้น เสียเวลา ในการค้นหาไปอย่างสูญเปล่า ( ในกรณีที่หาไม่พบ ) แล้วก็จะทำให้ผล Performance นั้นช้ากว่า จากที่ควรจะเป็น ปกติแล้ว อัตราส่วนจะเป็นระหว่าง Cache ระดับถัดมาต่อ Cache ระดับก่อนหน้า จะเป็น 4:1 เช่น Level 2 Cache /Level 1 Cache ของ Celeron จะเป็น 128:32 ( 4:1 ) และ K6-3 จะเป็น 256:64 ( 4:1 ) ยกเว้นของ Pentium II ที่เป็น 512:32 ( 16:1 )

ทาง AMD ก็ได้อ้างว่า ด้วย Cache 1Mb บน Mainboard นั้น จะทำให้ Performance เพิ่มขึ้น 3-4 % ( L3/L2 = 1024/256 = 4/1 ) ซึ่ง ปัจจุบันนั้น ก็มี Mainboard ที่มี ทั้ง Cache 1M และ 512 K ให้เลือก เพราะฉะนั้น นี่คงเป็นตัวช่วยในการพิจารณาตัวหนึ่งแล้วนะครับ สำหรับผู้ที่คิดจะใช้ AMD K6-3 ว่าควรจะใช้ Mainboard อะไรดี สำหรับการ disable Level 3 Cache นั้น คิดว่า เป็นไปได้ โดยผ่านทาง BIOS ซึ่งก็น่าจะมีผลช่วยในการ Overclock ให้ได้มากขึ้น

คราวนี้เราลองย้อนกลับไปดูถึงตอนแรก ที่ผมเปรียบเทียบเรื่อง Cache กับการจดโน๊ตย่อลงสมุดนั้น เราอาจสรุปได้ว่า สมองของเราเป็น Cache ระดับ 1 เพราะเมื่ออ่านและเห็นว่าข้อความไหน หรือประโยคไหนที่น่าจำที่สุด สำหรับนักเรียน นิสิต นักศึกษา ก็คงอาจเล็งไว้แล้วว่า ตรงนี้ อาจารย์ต้องเอามาออกข้อสอบแน่ๆ ก็จะอ่านแล้วท่องจำเอาไว้ และ เมื่อเกินความสามารถที่จะท่องจำ ก็ทำการจดโน๊ตย่อไว้ในสมุดเล่มเล็กๆ นั่นก็คือ Cache ระดับ 2 นั่นเอง และ บางทีในการอ่าน ก็อาจมีเรื่องที่น่าสนใจมากๆ จดโน๊ตย่อไม่ไหว ก็อาจใช้ปากกาขีดข้อความสำคัญๆหรือทำการคั่นหน้าหนังสือตรงนั้นไว้ นั่นก็คือ Cache ระดับ 3 นั่นเองครับ

ก็เห็นกันแล้วนะครับ ว่า ขนาดของ Cache นั้น เป็นสิ่งสำคัญ และ ความเร็วของ Cache นั้น ก็สำคัญเช่นกัน แต่ ถ้าให้เลือก ระหว่าง Celeron 300A ซึ่งมี Level 2 cache 128 K ทำงานที่ความเร็วเท่าๆ กับ CPU กับ Pentium II 300 ที่มี L2 cache 512 K ทำงานเป็นครึ่งหนึ่ง แต่ราคานั้นต่างกันเท่าตัว ในขณะที่ Performance ในด้านที่ไม่เกี่ยวกับ Business นั้น แทบไม่ต่างกัน ก็ขอเลือก Celeron จะดีกว่า ( ถูกกว่าตั้งเยอะ )

แต่หากว่าต้องใช้งานด้าน Business แล้วละก็ คงจะต้องเลือก CPU ที่มี Cache มากๆ ไว้ก่อน เพราะถึงแม้ว่า Cache นั้นจะเร็ว แต่มีขนาดน้อย เปอร์เซ็นต์ในการหาข้อมูลพบใน Cache ก็น้อยลง ถึงแม้จะถูกชดเชยด้วยความเร็ว แต่มันก็ทำให้ Cache นั้นต้องรับ ภาระที่หนักมากขึ้นไปด้วย




อ้างอิงข้อมูลจาก
o เรื่องน่ารู้เกี่ยวกับ Intel Celeron
o เรื่องน่ารู้เกี่ยวกับ RAM
o Cache and More Cache at OverClocker.com
o Cache and everything about cache at PC Guide
o Introduction about Cache at WebOpedia
o What's Cache โดย L2 Company.

0 ความคิดเห็น:

แสดงความคิดเห็น