Home > Knowledge Base > มารู้จักกับ Cache ของ CPU กันดีกว่า

มารู้จักกับ Cache ของ CPU กันดีกว่า

มาทำความรู้จักกับ cache ของ cpu กันดีกว่าครับ บทความนี้อาจจะมีส่วนช่วยในการตัดสินใจเวลาที่เราไปเลือกหาซื้อ cpu ไม่มากก็น้อยนะครับ

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

77801

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 )

นี่เป็นจุดหนึ่งละนะ ที่ทำให้ 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 ซึ่งถึงแม้ว่าจะมีขนาดเพียง เล็กน้อย แต่ก็มีความสำคัญมาก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 นั้นๆ ซึ่ง ก็แน่นอน จะมีความของความเร็วแตกต่างกันไปด้วย (Cache ระดับสองนั้นในปัจจุบันอาจจะเป็นตัวแปรสำคัญเลยที่เดียวที่จะทำให้เราตัดสินใจซื้อ cpu รุ่นนั้นๆรองลงมาจากความเร็วของ Cpu และเทคโนโลยีการผลิต)

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

ก็เห็นกันแล้วนะครับ ว่า ขนาดของ Cache นั้นเป็นสิ่งสำคัญ และ ความเร็วของ Cache นั้น ก็สำคัญเช่นกัน

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

พบกันใหม่ในบทความคราวหน้านะครับ

เครดิตโดยท่าน achira สมาชิก VarietyPC.net


  Note. "ทางเว็บไซต์ไม่อนุญาตให้เว็บมาสเตอร์หรือเจ้าของเว็บไซต์ใด คัดลอกบทความหรือรูปภาพเพื่อนำไปเผยแพร่ต่อบนเว็บไซต์อื่น หากฝ่าฝืนถือเป็นความผิดตามกฎหมายที่ระบุไว้สูงสุด"


มาทำความรู้จักกับ cache ของ cpu กันดีกว่าครับ บทความนี้อาจจะมีส่วนช่วยในการตัดสินใจเวลาที่เราไปเลือกหาซื้อ cpu ไม่มากก็น้อยนะครับ 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…

Review Overview

About varietypc

บทความส่วนใหญ่บนเว็บไซต์ VarietyPC.net จะมีการนำเสนอบทความทั้งข้อความและรูปภาพประกอบที่ค่อนข้างละเอียด ส่วนหนึ่งก็เพื่อจุดประสงค์ที่ต้องการให้ผู้ใช้งานมือใหม่สามารถทำความเข้าใจได้ง่ายและไม่เกร็งหรือกลัวที่จะแก้ปัญหาด้วยตัวเอง เหมือนเวลาผมเข้าเว็บไซต์บางเว็บที่มีการอธิบายแบบลวกๆ อธิบายไม่เข้าใจ ทำให้งงเป็นไก่ตาแตกไปเป็นวันๆหรือยกเลิกที่จะทำไปเลยก็มี หากเพื่อนๆมีข้อสงสัยส่วนใด สามารถสอบถามได้นะครับ