หน่วยความจำที่ใช้กับแคช
CACHE คือ หน่วยความจำขนาดเล็กที่มีความเร็วสูงซึ่งเก็บข้อมูล หรือคำสั่งที่ถูกเรียกใช้หรือเรียกใช้บ่อยๆ ข้อมูลและคำสั่งที่เก็บอยู่ใน CACHEซึ่งทำงานโดยใช้ SRAM (STATIC RAM) จะถูกดึงไปใช้งานได้เร็วกว่าการดึงข้อมูลจากหน่วยความจำหลัก (MAIN MEMORY)ซึ่งใช้DRAM (DYNAMIC RAM )หลายเท่าตัว
การทำงานของ CACHE เป็นขั้นตอนดังนี้
โปรแกรมที่ทำงานโดยผ่านหน่วยประมวลผลกลาง (CPU) ได้ทำการเรียกข้อมูลหรือรหัสที่ CPU จำเป็นต้องใช้ RAM cache ซึ่งเป็นส่วนหนึ่งของวงจรหลักในเครื่องคอมพิวเตอร์ ได้รับสัญญานการเรียกข้อมูลในขณะที่คำสั่งการเรียกข้อมูลกำลังเดินทางไปยัง RAM และ cache จะทำการค้นหาข้อมูลจากRAM และส่งต่อข้อมูลไปยัง CPU ในการค้นหาข้อมูลครั้งแรกอาจจะใช้เวลานานโดยที่ตัว CPU ไม่สามารถทำงานอย่างอื่นได้ในเวลานั้น ในขั้นตอนการค้นหาข้อมูลนี้ cache จะทำการบันทึกข้อมูลที่ค้นพบไว้ใน high-speed memory chips ที่มีเฉพาะภายใน cache ในทันที่ cache ตรวจสอบพบว่า CPU ได้ทำงานเสร็จสิ้นและกำลังว่างอยู่ cache จะทำการค้นหาข้อมูลหรือรหัสของโปรแกรม ซึ่งอยู่ใกล้เคียงกับตำแหน่งของข้อมูลที่ทางโปรแกรมได้เรียกใช้ก่อนหน้านี้จาก memory address และจัดเก็บข้อมูลไว้ใน high-speed memory chips ครั้งต่อไปที่ทางโปรแกรมถามหาข้อมูลจากทางหน่วยประมวลผลกลาง(CPU) cacheจะตรวจสอบดูว่าข้อมูลที่โปรแกรมต้องการมีอยู่ใน high-speed memory chips แล้วหรือยัง ถ้ามีอยู่แล้ว cache จะส่งข้อมูลไปให้ CPUได้โดยไม่จำเป็นต้องผ่านหน่วยความจำหลักซึ่งมีการทำงานที่ช้ากว่ามาก ทำให้ CPU สามารถลดเวลาไร้ประสิทธิภาพ และทำงานได้มากขึ้น เมื่อ CPU ต้องการเปลี่ยนข้อมูลบางอย่างที่มีอยู่ในหน่วยความจำหลักอยู่แล้ว cache จะตรวจสอบดูก่อนว่าข้อมูลที่โปรแกรมต้องการจะเปลี่ยน มีการจัดเก็บอยู่ใน high-speed memory chips แล้วหรือยัง ถ้ามีอยู่แล้ว cache จะเปรียบเทียบข้อมูลที่มีอยู่เดิมกับข้อมูลใหม่ที่เปลี่ยนไป และจะส่งข้อมูลไปเฉพาะ memory address ใน หน่วยความจำหลัก ที่มีการเปลี่ยนแปลงข้อมูลจากข้อมูลเดิมใน high-speed memory chips ซึ่งจะเร็วกว่าการเปลี่ยนแปลงข้อมูลทั้งหมด
ตัวอย่างการทำงานของ CACHE
เมื่อหน่วยประมวลผล(CPU)ทำการอ่านข้อมูล มันจะตรวจสอบว่าข้อมูลที่ต้องการเรียกใช้นั้นมีอยู่ใน CACHE หรือไม่ ถ้ามี ข้อมูลก็จะถูกถ่ายทอดไปยังหน่วยประมวลผลอย่างรวดเร็ว เพราะไม่ต้องเรียกข้อมูลจากหน่วยความจำหลัก(DRAM หรือ RAM)ซึ่งจะใช้เวลานาน แต่ถ้าตรวจสอบแล้วไม่มีข้อมูลอยู่ใน CACHE หน่วยประมวลผลจะดึงข้อมูลจาก(DRAM หรือ RAM) จากนั้นจะทำสำเนาและเก็บข้อมูลไว้ใน CACHE ด้วย ถ้ามีการเรียกใช้ข้อมูลนี้อีก ข้อมูลจะถูกดึงจาก CACHE เมื่อต้องการเรียกใช้ข้อมูลที่มีอยู่ใน CACHE จะเรียกว่า HIT ประสิทธิภาพการทำงานของ CACHE ขึ้นอยู่กับอัตราการพบข้อมูล(HIT RATE) CACHEที่ดีคือ CACHEที่จำข้อมูลที่ถูกเรียกใช้บ่อยได้ดี บนบอร์ด 100 MHz ของ Intel ต้องใช้เวลาถึง 180 Nanosec เพื่อนำข้อมูลจากหน่วยความจำหลัก ในขณะที่ใช้เพียง 45 Nanosec ในการนำข้อมูลจาก CACHE ด้วยประสิทธิภาพที่ไม่น่าเชื่อของ CACHE ทำให้น่าจะใช้ CACHE มาเป็นหน่วยความจำหลักแทน แต่หน่วยความจำของ CACHE ใช้SRAM ซึ่งมีราคาสูงกว่า DRAM ที่ใช้ในหน่วยความจำหลัก ถึงประมาณ6เท่า ฉะนั้นทำให้การใช้ CACHE แทนหน่วยความจำหลักนั้นไม่คุ้มค่าเพราะทำให้สิ้นเปลืองสูง โดยอาจจะเปรียบเทียบได้กับ การลงทุนทำร้านขายของชำเพื่อที่จะเก็บสินค้าทุกประเภท ซึ่งเป็นการลงทุนที่ไม่คุ้มค่า
ชนิดของ CACHE แบ่งเป็น 2 ชนิดดังนี้
Level 1 (L1 CACHE) คือ CACHEที่สร้างลงบนchipCPU หรือเรียกอีกอย่างว่าinternal CACHE มีขนาดเล็ก อย่างเช่น ขนาด 8k สำหรับ chip 486, เพนเทียมและ เพนเทียมโปรมีอยู่ 16k ส่วนเพนเทียม MMX และเพนเทียม II มี CACHE L1ขนาด 32k -Level 2 (L2 CACHE) คือ CACHEที่อยู่ระหว่างCPU กับ DRAM หรือเรียกอีกอย่างว่า external CACHE แต่มีขนาดใหญ่กว่า CACHE ชนิด L1 มาก แต่ในปัจจุบันมี CACHE L2 ของคอมพิวเตอร์บางรุ่นอยู่บน Chip CPU เช่น Chip ของ intel Pentium IIเป็นต้น
เทคโนโลยีและการพัฒนา CACHE
CACHE L2 256k สามารถประหยัดเวลาในการทำงานของคอมพิวเตอร์เป็นจำนวนมากในการเก็บข้อมูลที่ใช้เป็นประจำ และการเพิ่ม CACHE L2 อีก 256k เป็น 512k จะช่วยในการเก็บข้อมูลของ CACHE L2 ได้มากขึ้น ปัจจุบันมี CACHE L2 ขนาด 1M ซึ่งใช้กับเพนเทียมโปรและในอนาคตจะมี CACHE L2 ขนาด 1Mและ 2M สำหรับเพนเทียมทู ออกมาซึ่งเป็นการพัฒนาของ CACHE L2อีกขั้นหนึ่งด้วย สำหรับ CACHE L1 นั้น ได้มีแผนการพัฒนาโดยจะขยายขนาดขึ้น คาดว่าจะออกสู่ตลาดภายในปลายปี2541นี้ และจะมีการผลิต CACHE L3 โดยทางบริษัท AMD คาดว่าจะนำเข้าสู่ตลาดภายในปลายปี2541 หรือต้นปี2542 ซึ่งCACHE L3 จะเป็น external cache และย้าย CACHE L2 เข้าไปอยู่ใน CPU โดยจะออกมากับชิป AMD K6+ 3D หรือ AMD K7
Asynchronous Static RAM
ถูกนำมาใช้เป็น cache ตั้งแต่ CPU 80386 มีความร็วในการเข้าถึงข้อมูลรวดเร็วกว่า DRAM ที่นิยมใช้กันมีอยู่ 3 รุ่น แบ่งตามอัตราความเร็วในการเข้าถึงข้อมูล มี 20, 15, 12 นาโนวินาที(ns) แต่ไม่สามารถที่จะทำงานที่ความเร็วเท่าๆกับความเร็วของ CPU ทำให้ CPU ต้องเสียเวลาคอยข้อมูล(Wait State)จาก SRAM
Synchronous Burst Static RAM
มีคุณสมบัติ Burst คือ ใช้สัญญาณนาฬิกาในการทำงานให้น้อยที่สุด โดยใช้สัญญาณนาฬิกาของตัวสแตติกหน่วยความจำเอง ในการอ่านข้อมูลที่ต่อเนื่องกัน สามารถรองรับความเร็วของสัญญาณนาฬิกาของระบบบัส 66 MHz ไม่ต้องเสียเวลาคอยข้อมูล(Wait State) ในท้องตลาดมีอยู่ 2 รุ่นคือ 8.5 และ 12 นาโนวินาที(ns) เหมาะกับ เมนบอร์ดเพนเทียม
Pipelined Burst Static RAM (PB SRAM)
มีหน่วยความจำรีจิสเตอร์พิเศษอยู่ในชิปหน่วยความจำ ช่วยให้สามารถที่จะโอนข้อมูลพร้อมๆกับการระบุตำแหน่งและ อ้างถึงข้อมูลในสแตติกหน่วยความจำตำแหน่งต่อไป สามารถรองรับความเร็วของสัญญาณนาฬิกาที่สูงสุด 133 MHz ในท้องตลาดมีอยู่ 2 รุ่นคือ 4.5 และ 8 นาโนวินาที(ns) เหมาะกับระบบใหม่ที่มีความเร็วของสัญญาณนาฬิกา 75 - 100 MHz
ในปัจจุบันจะพบการใช้งาน 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 ก็จะมากขึ้นตามลำดับ ในขณะที่ความเร็วในการใช้งานกลับลดลงตามลำดับ
|