แคช
Memory Cahe (แคช)
     Cache คือหน่วยความจำชนิดหนึ่ง ซึ่งจะมีความเร็วในการเข้าถึง และการถ่ายโอนข้อมูลที่สูง โดยจะมี หน้าที่ในการเก็บ พัก ข้อมูลที่มีการใช้งานบ่อย ๆ เพื่อเวลาที่ CPU ต้องการใช้ข้อมูลนั้น ๆ จะได้คน้นหาได้เร็ว โดยที่ไม่จำเป็น ที่จะต้องไปค้นหาจากข้อมูลทั้งหมด
     เปรียบเทียบกันง่าย ๆ ก็เหมือนกับการอ่านหนังสือ แล้วเวลาที่เจอข้อความที่น่าสนใจ ก็ทำการจดบันทึก ไว้ที่สมุด แล้วเมื่อเวลาต้องการ ข้อมูลนั้น ๆ ก็สามารถค้นหาได้จากในสมุดจดได้ง่ายกว่า เปิดหาจากหนังสือ ทั้งเล่มแน่นอน ข้อมูลที่จดลงในสมุดนั้น มีขนาดน้อยกว่า ในหนังสือแน่ ๆ คงไม่มีใครที่จะลอกข้อมูลทุก บรรทัดทุกหน้าของหนังสือ ลงในสมุด
     ในปัจจุบันจะพบการใช้งาน Cache อยู่ 2 แบบ นั่นก็คือ Memory Cache และ Disk Cache โดยที่ หลักการทำงานของทั้ง 2 ชนิดนี้ก็คล้าย ๆ กัน คือ Disk Cache นั้นจะเป็นการอ่านข้อมูลที่ต้องการใช้งานเข้า มาเก็บไว้ในหน่วยความจำหลัก เมื่อ CPU มีการเรียกใช้งาน ก็จะเข้าไปค้นหาในหน่วยความจำหลักก่อนหากว่า ไม่พบจึงจะไปค้นหาใน Harddisk ต่อไป และในกรณีของ Memory Cache นั้น ก็เป็นอีกลำดับขั้นหนึ่งถัดจาก Disk Cache นั่นก็คือ จะทำการดึงข้อมูลที่มีการเรียกใช้งานบ่อย ๆ เข้ามาเก็บไว้ในหน่วยความจำ ขนาดเล็ก ที่มีความไวสูงกว่าหน่วยความจำหลัก เมื่อ CPU ต้องการใช้งาน ก็จะมองหาข้อมูลที่ต้องการ ที่หน่วยความจำ ขนาดเล็กนั้นก่อน ก่อนที่จะเข้าไปหาในหน่วยความจำหลักที่มี การเข้าถึงและการส่งข้อถ่ายข้อมูลที่ช้ากว่าต่อ ไปและหน่วยความจำขนาดเล็ก ๆ นั้นก็คือ Cache นั่นเอง
      Memory Cache นั้น ตำแหน่งของมัน จะอยู่ระหว่าง CPU กับหน่วยความจำหลัก โดยมันจะทำการดึง หรือเก็บข้อมูล ที่มีการเรียกใช้งานบ่อย ๆ จากหน่วยความจำหลัก ซึ่งความไวในการอ่าน หรือส่งถ่ายข้อมูลจาก Cahe ไปยัง CPU หรือจาก CPU ไปยัง Cache จะทำได้เร็วกว่า จากหน่วยความจำหลักไปยัง CPU หรือจาก CPU ไปยังหน่วยความจำหลักมาก เพราะทำด้วย SRAM ซึ่งมีความไวสูง และมีราคาแพงกว่าหน่วยความจำ ของระบบทเป็น DRAM อยู่มาก และก็เพราะราคาที่แพงนี้ ทำให้ขนาดของ Cache ที่ใช้ในระบบ จึงมีขนาด น้อยกว่าหน่วยความจำหลักอยู่มาก DRAM หรือ Dynamic RAM นั้นจะทำการเก็บข้อมูลในตัวเก็บประจุ ซึ่งจำเป็นจะต้องมีการ 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 หรือ Level2 Cacke (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 Contack หรือ SECC แต่ยังคงเรียก Cache ที่อยู่บน SECC ว่าเป็น External Cache หรือ Level2 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 K3-III ทาง AMD ก็ได้ทำการ เพิ่ม Cache เข้าไปที่ Package ของ CPU บ้าง (แต่ไม่ได้รวม เข้าไปในแกนของ CPU) และยังคงให้ม Cache บน Mainboard เช่นเดิม ดังนั้น จึงเกิดมีการใช้งาน Cache ถึง 3 ระดับด้วยกัน (เรียกว่า Tri Level Cache) โดยระดับแรกสุดนั้น ก็คือ Cache ที่อยู่ภายในแกนของ CPU เลย ระดับถัดมา ก็อยู่บน Package ของ CPU และระดับสุดท้ายอยู่บน Mainboard ซึ่งขนาดของ Cache ก็จะมากขึ้นตามลำดับ ในขณะที่ความเร็วในการใช้งานกลับลดลงตามลำดับ

ที่มา : เนื้อหาวิชาระบบปฏิบัติการ อ.ยุพดี อินทสร

โดย : นาย นักรบ ฆ้องกระโทก, สถาบันราชภัฏสงขลา, วันที่ 1 พฤศจิกายน 2545