หน่วยความจำที่ใช้กับแคช
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 ก็จะมากขึ้นตามลำดับ
ในขณะที่ความเร็วในการใช้งานกลับลดลงตามลำดับ
|