สำหรับ หน่วยประมวลผลกลาง (CPU) ของคอมพิวเตอร์มีการพัฒนาอย่างก้าวกระโดดในช่วงไม่กี่ปีมานี้ ทรานซิสเตอร์มีขนาดเล็กลงทุกปีจนแทบจะถึงจุดที่เริ่มไม่เป็นไปตามกฏของมัวร์แล้ว
(กฎของมัวร์ (Moore's law) อธิบายถึง ปริมาณของทรานซิสเตอร์บนวงจร โดยจะเพิ่มเป็นเท่าตัวประมาณทุก ๆ สองปี กฎนี้ได้ถูกพิสูจน์อย่างต่อเนื่องมาแล้วกว่าครึ่งศตวรรษ และคาดว่าจะใช้ได้จนถึงปี 2015 หรือ 2020 หรืออาจมากกว่านั้น
ที่มา : https://th.wikipedia.org/wiki/กฎของมัวร์)
อย่างไรก็ตาม เมื่อพูดถึง CPU แล้ว มันไม่จัดอยู่แค่จำนวนทรานซิสเตอร์ และความเร็วของสัญญาณนาฬิกาเท่านั้น อีกสิ่งที่สำคัญไม่ยิ่งหย่อนไปกว่ากันก็คือ "แคช (Cache)" นั่นเอง
คูณผู้อ่านอาจจะเคยเห็นตัวเลขของค่า Cache ในข้อมูลบอกสเปกของ CPU กันมาบ้าง อย่างไรก็ตาม ซึ่งจะมีน้อยคนที่จะใส่ใจกับค่าของ CPU Cache อาจจะด้วยที่ว่ามันไม่ใช่ข้อมูลไฮไลท์ที่ถูกหยิบขึ้นมาทำการตลาดด้วย
ภาพจาก https://arstechnica.com/gadgets/2021/03/intel-rocket-lake-s-desktop-gaming-cpus-are-here/
แล้วจริง ๆ CPU Cache สำคัญขนาดไหน ทำงานอย่างไร มาอ่านคำตอบกันหน่อยดีกว่า เลือกเมนูได้จากเมนูลัดด้านล่างนี้ได้เลย
หากจะให้เข้าใจง่าย ๆ CPU Cache ก็คือ หน่วยความจำความเร็วสูง (High-Speed Memory) ชนิดหนึ่ง ซึ่งถ้าเราย้อนกลับไปในยุคเริ่มต้นของคอมพิวเตอร์ ที่ความเร็วของ CPU และหน่วยความจำยังทำงานได้ช้ามาก อย่างไรก็ตาม ในช่วง ค.ศ. 1980 (พ.ศ. 2523)
และ ณ เวลานั้น ความเร็วในการทำงานของ CPU ได้เพิ่มสูงขึ้นอย่างรวดเร็ว แต่ หน่วยความจำหลัก RAM (Random Access Memory) ยังไม่สามารถพัฒนาให้เร็วได้ตามความเร็วของ CPU ได้นั้น จึงทำให้หน่วยความจำชนิดใหม่ที่มีความเร็วสูงเป็นพิเศษถือกำเนิดขึ้น ก็คือหน่วยความจำแคชในซีพียู (CPU Cache Memory) นั่นเอง
จะเห็นได้ว่า ตอนนี้ คอมพิวเตอร์ของคุณมีหน่วยความจำภายในเครื่องอยู่หลากหลายแบบ
มีหน่วยความจำหลักอย่าง ฮาร์ดดิสก์ (Harddisk - HDD) หรือ อุปกรณ์เก็บข้อมูลแบบ SSD (Solid-State Drive) เอาไว้สำหรับจัดเก็บข้อมูล, ระบบปฏิบัติการ และติดตั้งโปรแกรม
แล้วก็มี RAM ที่ทำงานได้รวดเร็วกว่าหน่วยความจำหลัก แต่ว่าเป็นหน่วยความจำชั่วคราว คอมพิวเตอร์จะนำข้อมูลที่จำเป็นต่อการทำงานของซอฟต์แวร์ไปเก็บไว้บน RAM เพื่อให้ข้อมูลเหล่านั้นพร้อมใช้งานอย่างรวดเร็ว
สุดท้าย คือ หน่วยความจำที่ทำงานได้เร็วที่สุดในคอมพิวเตอร์ นั่นก็คือ CPU Cache นั่นเอง
หน่วยความจำของคอมพิวเตอร์มีลำดับชั้นตามความเร็วในการทำงาน โดย CPU Cache นั้นจะอยู่ที่ด้านบนสุดของลำดับชั้น (เร็วที่สุด) นอกจากนี้ ยังเป็นส่วนที่อยู่ใกล้ที่สุดหน่วยการประมวลผลกลาง เพราะมันเป็นส่วนประกอบหนึ่งของ CPU นั่นเอง
โดย Cache Memory นั้นจะอยู่ในรูปแบบของ Static RAM (SRAM) ในขณะที่ RAM ทั่วๆ ไปจะเป็น Dynamic RAM (DRAM) โดยความแตกต่างจะอยู่ที่ SRAM จะเก็บข้อมูลเอาไว้ได้ตราบใดที่มีไฟเลี้ยงอยู่ แต่ DRAM จะมีการรีเฟรชข้อมูล ดังนั้น การส่งข้อมูลมาเก็บไว้ใน DRAM ข้อมูลจะถูกส่งมาซ้ำ ๆ อยู่ตลอดเวลา
ซอฟต์แวร์ต่าง ๆ บนคอมพิวเตอร์ ถูกออกแบบมาในลักษณะของชุดคำสั่ง ที่ CPU สามารถตีความ และทำงานตามคำสั่งที่ได้รับ เมื่อเราสั่งให้ซอฟต์แวร์ทำงาน มันจะนำข้อมูลจากหน่วยความจำหลัก (HDD หรือ SSD) ไปป้อนให้กับ CPU ซึ่งช่วงเวลานี้เองที่ลำดับชั้นจะมีบทบาทสำคัญเกิดขึ้น
โดยในตอนแรกข้อมูลจะถูกส่งไปพักเอาไว้ที่ RAM ก่อน และหลังจากนั้นค่อยส่งไปยัง CPU เป็นลำดับต่อไป โดยที่ CPU ในปัจจุบันนี้สามารถรองรับชุดคำสั่งได้จำนวนมหาศาลภายในเวลา 1 วินาที เพื่อที่จะดึงศักยภาพการทำงานได้เต็มที่ CPU ต้องการหน่วยความจำที่มีความเร็วสูงเป็นพิเศษคอยสนับสนุน ซึ่งก็จะเป็นหน้าที่ของ CPU Cache นั่นเอง
ตัวควบคุมหน่วยความจำ (Memory Controller) จะนำข้อมูลที่ได้จากแรมส่งไปให้กับ CPU Cache โดยตัวควบคุมหน่วยความจำนี้อาจจะอยู่ในตัว CPU เลย หรือ Northbridge Chipset บน แผงวงจรหลัก (Mainboard)
ภาพจาก : https://en.wikipedia.org/wiki/Northbridge_(computing)
ข้อมูลภายใน Cache จะถูกส่งกลับไปมาอยู่ภายใน CPU โดยภายในนั้นก็จะมีลำดับชั้นของหน่วยความจำอยู่ด้วยเช่นกัน
อย่างที่ได้บอกไปในย่อหน้าที่แล้วว่า ภายใน Cache Memory ก็มีลำดับชั้นหน่วยความจำด้วยเช่นกัน โดยมันถูกแบ่งออกเป็น 3 ระดับ (3 Levels) ซึ่งประกอบไปด้วย L1, L2 และ L3 มีความแตกต่างกันที่ความเร็ว และขนาดของ Cache
คำถาม คือ ขนาดของ Cache ที่แตกต่างกัน ส่งผลต่อประสิทธิภาพให้แตกต่างกันหรือเปล่า ?
L1 Cache เป็นหน่วยความจำที่ทำงานได้เร็วที่สุดในระบบคอมพิวเตอร์ ในแง่ของลำดับความสำคัญในการเข้าถึง L1 Cache จะใช้เก็บข้อมูลที่ CPU จำเป็นต้องใช้ในขณะที่กำลังประมวลผลงานบางอย่างให้เสร็จสิ้นอยู่
ขนาดของ L1 Cache จะแตกต่างกันไปตามรุ่นของ CPU สำหรับระดับผู้ใช้ทั่วไปแล้ว CPU เรือธงอย่างเช่น i9-10980XE ก็จะมีขนาดของ L1 Cache รวมทั้งหมดอยู่ที่ประมาณ 1 MB. ส่วนถ้าเป็น CPU ระดับเซิร์ฟเวอร์ก็อาจจะจะขยับไปอยู่ที่ 1-2 MB. L1 memory Cache
เนื่องจากไม่มีมาตรฐานที่แน่นอนว่า L1 Cache ต้องมีขนาดเท่าไหร่ ดังนั้น ถ้าอยากรู้ว่า CPU รุ่นไหนมี L1 Cache ขนาดเท่าไหร่ เราต้องไปค้นหาข้อมูลเอาเองในเว็บไซต์ของผู้ผลิต
ส่วนใหญ่แล้ว L1 Cache จะถูกแบ่งออกเป็นสองส่วน คือ Instruction Cache และ Data Cache โดย Instruction Cache จะดูแลด้านข้อมูลเกี่ยวกับปฏิบัติการที่ CPU ต้องกระทำ ในขณะที่ Data Cache จะเก็บข้อมูลของปฏิบัติการที่ต้องทำ
สังเกตว่า L1 ถูกแบ่งออกเป็น 2 ส่วน D และ I
L2 Cache ช้ากว่า L1 Cache แต่มันจะมีขนาดใหญ่กว่า โดยในขณะที่ L1 Cache อาจจะวัดขนาดกันที่ระดับ kilobytes ขนาดของ L2 Cache จะวัดกันอยู่ที่ระดับ megabytes ตัวอย่างเช่น AMD Ryzen 5 5600X มี 384 KB. L1 Cache, 3 MB. L2 Cache และ 32 MB. L3 Cache
ในด้านความเร็ว L2 Cache ทำงานได้ช้ากว่า L1 มาก แต่ก็ยังทำงานได้เร็วกว่า RAM นะ โดยทั่วไปแล้ว L1 จะทำงานได้เร็วกว่า RAM ประมาณ 100 เท่า ในขณะที่ L2 จะเร็วกว่า RAM 25 เท่า
L3 Cache เป็นหน่วยความจำที่มีขนาดใหญ่ที่สุด หากเทียบกับ L1 และ L2 แต่ก็เป็น Cache หน่วยความจำ ที่ทำงานได้ช้าที่สุดเช่นกัน ใน CPU ระดับผู้ใช้งานทั่วไปที่เป็นรุ่นเรือธง L3 Cache อาจจะใหญ่ถึง 32 MB. และหากเป็น CPU ระดับเซิร์ฟเวอร์ก็ใหญ่ได้ถึง 64 MB.
ซึ่งในสมัยก่อนนั้น L3 Cache จะไม่ได้อยู่ใน CPU เหมือนในปัจจุบันนี้ ในยุคที่ CPU ส่วนใหญ่ยังมีแค่ Core เดียว L3 Cache นั้นจะฝังอยู่บนเมนบอร์ด แต่ปัจจุบันนี้ L3 Cache เป็นส่วนหนึ่งของ CPU แล้ว
ความพิเศษอีกอย่างหนึ่งของ L3 Cache คือ ในขณะที่ L1 และ L2 Cache จะมีอยู่ในแต่ละ Core ของ CPU เลย แต่ตัว L3 Cache แม้จะอยู่ใน CPU เหมือนกัน แต่ก็ไม่ได้อยู่ใน Core โดยตรง ทำหน้าที่เป็นเหมือนหน่วยความจำส่วนกลางที่ Core ทั้งหมดใน CPU สามารถใช้งานร่วมกันได้
ภาพจาก : https://www.makeuseof.com/tag/what-is-cpu-cache/
ตามหลักการพื้นฐานแล้ว ข้อมูลจะถูกส่งออกจาก RAM มายัง L3 Cache จากนั้นก็ไปยัง L2 Cache และสุดท้ายที่ L1 Cache และเมื่อ CPU มองหาข้อมูลเพื่อที่จะนำมาประมวลผล มันจะเริ่มค้นหาจากภายใน L1 Cache ก่อน หากค้นเจอ จะเรียกสถานการณ์นี้ว่า "Cache Hit" จากนั้นมันจะดำเนินการค้นหาต่อไปยัง L2 ตามด้วย L3
หาก CPU ค้นหาข้อมูลที่ต้องการในหน่วยความจำ Cache ไม่เจอเลย มันจะพยายามไปค้นหาในหน่วยความจำหลักแทน ซึ่งหากสถานการณ์นี้เกิดขึ้น เราก็จะเรียกสถานการณ์นี้ว่า "Cache Miss"
จะเห็นได้ว่า Cache ออกแบบมาเพื่อให้การรับส่งข้อมูลระหว่างหน่วยความจำหลัก กับ CPU สามารถทำได้รวดเร็วมากขึ้น ช่วงเวลาที่ใช้ในการเข้าถึงข้อมูลในหน่วยความจำนี้จะเรียกว่า "Latency"
L1 Cache เป็นหน่วยความจำที่มีค่า Latency ต่ำที่สุด ทำงานได้เร็วสุด และอยู่ใกล้กับ Core มากที่สุด แน่นอนว่า L3 Cache ที่อยู่ไกลสุดมีค่า Latency สูงที่สุด ในการทำงาน ค่า Latency จะสูงที่สุดเมื่อเกิด Cache miss แล้วจำเป็นต้องไปดึงข้อมูลจากหน่วยความจำหลัก
ปัจจุบันนี้ ค่า Latency ลดลงเรื่อย ๆ เนื่องจากเทคโนโลยีที่ดีขึ้น คอมพิวเตอร์ทำงานได้เร็ว และมีประสิทธิภาพสูงกว่าอดีตมาก ด้วยพลังจาก RAM DDR4 และ SSD ทำให้ค่า Latency ต่ำกว่าสมัยก่อนมาก
อาจมีคนสงสัยว่า ทำไม L1 Cache ถึงมีขนาดเล็กจัง แค่ 1 MB. เนี่ยนะ ทำไมไม่ทำให้มันใหญ่กว่านี้ล่ะ เรื่องนี้มีเหตุผลอยู่ครับ คือ สำหรับ CPU Cache แล้ว ยิ่งใหญ่ไม่ได้แปลว่ายิ่งดี
ลองนึกภาพว่าเราต้องหา "หน้าหนังสือ" ที่ต้องการจากหนังสือที่มีความยาว 10 หน้า กับหนังสือที่มีความยาว 1,000 หน้า แน่นอนว่า หนังสือที่มีความยาว 10 หน้า ย่อมใช้เวลาในการค้นหาน้อยกว่า การเพิ่มขนาด Cache ก็ไม่ต่างจากการเพิ่มจำนวนหน้าเข้าไปในหนังสือ มันไม่ได้ทำให้ประสิทธิภาพเพิ่มขึ้น เพราะ CPU จะต้องเสียเวลาไปกับการค้นหาตำแหน่งข้อมูลที่ต้องการนานขึ้นโดยใช่เหตุ
|
แอดมินสายเปื่อย ชอบลองอะไรใหม่ไปเรื่อยๆ รักแมว และเสียงเพลงเป็นพิเศษ |
ความคิดเห็นที่ 2
26 กุมภาพันธ์ 2566 07:20:52
|
||
ขอบคุณสำหรับความรู้ครับ
|
||
ความคิดเห็นที่ 1
7 พฤศจิกายน 2564 12:01:04
|
||
เป็นความรู้ที่ดีครับ
|
||