CPU cache là gì? CPU cache có công dụng ra sao?

Duy Luân
7/6/2021 12:13Phản hồi: 107
CPU cache là gì? CPU cache có công dụng ra sao?
Nhắc tới bộ nhớ của máy tính chúng ta thường nghĩ đến RAM hay thậm chí là ổ cứng, ổ SSD, nhưng ngoài ra còn có một loại bộ nhớ quan trọng nữa là cache. Cache cũng ảnh hưởng lớn đến việc máy của bạn chạy nhanh hay chậm, game bạn chơi có hiệu năng tốt hay không, cái phần mềm bạn đang dùng có thể xử lý nhanh hơn không.

Cache là gì và nó nằm ở đâu trong CPU?


Cache dịch ra tiếng Việt có thể xem là “bộ nhớ đệm”, nhưng từ này sẽ không diễn tả đầy đủ ý nghĩa nên trong bài này mình sẽ tiếp tục dùng chữ cache.

Ngày xưa, ở thời hoang sơ của thế giới máy tính, tốc độ của cả CPU và RAM đều chậm nên cả hai có thể giao tiếp với nhau ở cùng tốc độ. Tưởng tượng giống như bạn và một người bạn nữa cùng chạy bộ, nếu hai bạn chạy cùng tốc độ với nhau thì hai bạn có thể thoải mái nói chuyện. Nhưng nếu người kia chạy nhanh hơn bạn thì làm sao mà nói. Đó là điều xảy ra khi tốc độ CPU bắt đầu nhanh lên khi mà công nghệ ngày càng phát triển, tiến bộ hơn, nhất là từ thập niên 1980.

Thế nên người ta sinh ra một loại bộ nhớ tốc độ cao khác, nhanh hơn RAM, và có thể “chạy cùng” với CPU, đó là cache. Cache sẽ chứa dữ liệu để CPU cần thì có thể lấy vào xử lý, không phải “lội” xuống tận ổ cứng của bạn để lấy vì sẽ tốn thời gian hơn nhiều.

cpu_cache.jpg

Đi ngược lại một chút, máy tính của bạn có nhiều “lớp” (layer) bộ nhớ. Lớp chậm nhất, chính là nơi lưu trữ dữ liệu vĩnh viễn (gọi là persistent storage, hay secondary storage), chi phí thấp, dung lượng cao, ví dụ như SSD, HDD. Lên một lớp nhanh hơn là RAM, chứa dữ liệu để CPU lấy vào tính toán, tốc độ nhanh hơn đồng nghĩa với việc chi phí sản xuất cũng tăng. RAM thường được cấu thành từ nhiều chip nhớ thuộc loại Dynamic RAM (DRAM).

Nhanh hơn cả RAM là cache, và cache thường nằm ngay trên đế CPU đối với những con chip hiện đại. Chúng gần ở CPU về khoảng cách vật lý, điều đó giúp cache có thể trao đổi dữ liệu cực kì hiệu quả. Nó lại cùng nằm trong cùng đế chip với các nhân xử lý nên rút ngắn thời gian gửi nhận tín hiệu. Cache dùng loại bộ nhớ gọi là Static RAM (SRAM). SRAM có tốc độ cao hơn so với DRAM và cũng dùng ít điện hơn.

Cache của CPU hoạt động như thế nào?


Để hiểu về cách mà cache hoạt động, bạn cần biết về cách CPU lấy dữ liệu vào để tính toán. Cứ mỗi một phép tính cần thực hiện, CPU phải trải qua một chu trình gọi là machine cycle. Chu trình đó như hình bên dưới.

machine_cycle.jpg

Trong bước trên, có đoạn Fetch là lúc CPU sẽ lấy dữ liệu cần tính toán, cũng như lấy lệnh để biết là nó cần làm gì với dữ liệu đó. Ví dụ, khi máy tính cần thực hiện tính A + B, CPU sẽ lấy dữ liệu dữ liệu là A và B, cùng với lệnh ADD để cộng hai số này lại.

Dữ liệu này lấy từ đâu? Nó là do phần mềm gửi lên. Mà phần mềm gửi lên bằng cách nào? Phần mềm sẽ đưa dữ liệu đó vào RAM, và CPU sẽ lấy từ RAM lên (ít nhất là theo thiết kế của những chiếc máy tính thời xưa).

Nhưng như đã nói ở trên, vì CPU có tốc độ quá nhanh, nó có thể tính được rất rất nhiều phép tính trong mỗi giây, nên tốc độ lấy dữ liệu từ RAM không thể đáp ứng được tốc độ cần lấy dữ liệu của CPU. Thế nên người ta mới nghĩ đến việc “chêm” thêm một số bộ nhớ tốc độ cao vào giữa CPU và RAM. CPU trước hết sẽ tìm dữ liệu trong register (là một bộ nhớ nằm trực tiếp trong nhân CPU), nếu không có thì nó tìm trong cache, nếu cache không có thì nó tìm dữ liệu trong RAM, và RAM không có thì tìm trong SSD / HDD.

Quảng cáo



Cứ mỗi bước như vậy thì tốc độ sẽ chậm dần đi do bản chất của các loại chip nhớ cũng như do khoảng cách từ bộ nhớ đến CPU, thế nên CPU sẽ cố gắng đoán xem ở bước tiếp theo nó cần dữ liệu gì để đưa trước vào cache / register, như vậy CPU sẽ đỡ phải lội ngược dòng và làm giảm tốc độ tính. Quá trình này được gọi là “prediction”.

Về mặt phần mềm, ví dụ bạn đang chạy app máy tính và cần tính A + B, thì app sẽ làm nhiệm vụ đưa lệnh và đưa dữ liệu vào RAM. Sau đó, bộ điều khiển (memory controller) sẽ đưa tiếp dữ liệu vào cache.

Cache L1, L2 và L3


Ở trên mình đã giải thích lý do vì sao CPU cần cache và cách mà cache hoạt động rồi, giờ là lúc tìm hiểu xem vì sao trong CPU có nhiều cấp độ cache. Sao người ta không dùng 1 loại cache thôi cho khỏe người?

Vấn đề cũng xoay quanh chi phí và tốc độ mà thôi. Tốc độ càng nhanh thì chi phí cần để sản xuất ra càng cao, và dung lượng dữ liệu có thể chứa được cũng theo đó mà nhỏ đi. Để việc chuyển dữ liệu được trơn tru, người ta tách cache thành nhiều level khác nhau: L1, L2, L3.

Và nếu dữ liệu không có trong cache L1, CPU sẽ tìm tiếp trong L2, không có thì tìm tiếp L3, không có nữa thì đi ra RAM, và không có nữa thì chui xuống HDD / SSD để tìm.

Quảng cáo


Intel_CPU_cache.jpeg

L1 cache hiện nay có thể xem là cache nhanh nhất, đây là nơi đầu tiên trong cache mà CPU sẽ đi tìm dữ liệu khi nó cần tính toán một cái gì đó. L1 thường được chia làm 2 loại: cache để chứa lệnh và cache chứa dữ liệu. Ví dụ, con CPU Intel Core i9-10940X hiện có cache L1 là 448 KB cho dữ liệu và 448 KB cho lệnh.

L2 cache chậm hơn L1 nhưng có dung lượng lớn hơn. Ví dụ, con AMD Ryzen 5 5600X có tới 3MB cache L2 trong khi L1 của nó chỉ 384KB. Con Core i9-10940X có cache L2 đến 14MB. Và mặc dù nói là “chậm hơn” nhưng tốc độ của cache L2 vẫn nhanh hơn khoảng 25 lần so với RAM, còn cache L1 thì nhanh hơn 100 lần so với RAM.

Và cuối cùng là cache L3, có những con chip sở hữu đến 64MB cache L3, và AMD mới đây còn giới thiệu công nghệ cache xếp chồng lên nhau để đạt mức 192MB cache L3. AMD nói rằng chỉ riêng việc này đã giúp cải thiện hiệu năng game thêm 15% mà không cần điều chỉnh gì về phần mềm.

Cache L1 và L2 thường nằm trên từng nhân CPU, còn cache L3 trong các CPU hiện đại thường được chia sẻ chung giữa các nhân với nhau.

Tóm lại


Cache càng lớn thì càng tốt, đơn giản là vậy thôi, nhưng giá CPU cũng theo đó mà tăng lên. Và bạn cũng đừng chỉ chọn CPU dựa vào cache, có rất nhiều yếu tố khác để bạn chọn cho mình một con CPU đáp ứng nhu cầu. Cache chỉ là 1 trong số đó mà thôi nhé.
107 bình luận
Chia sẻ

Xu hướng

vừa mới thi xong đọc lại cũng chả hiểu gì
Mới nhìn tựa đề , nghi ngờ có một loại cpu mới tên là cpu cache !
Từ thời Pentium 2 , rất nổi tiếng một thời , vì có chip SRAM cache gắn cạnh chip cpu , dạng giống như Apple M1 với DRAM bây giờ .
nhd1986
TÍCH CỰC
3 năm
Intel từ lúc thấm đòn đến giờ mới chịu nâng thêm cache cho cpu laptop. So sánh 11800H với 10870H, anh em sẽ thấy giữa dòng cũ 10xxx và mới 11xxx Cache L2 tăng rất nhiều, lên đến 5 lần từ 2MB -> 10MB, khiến cho điểm số geekbench đơn nhân theo đó cũng lên được thêm 400 điểm, từ 1200 -> 1600. Mua CPU thì chỉ cần so điểm geekbench và passmark là ổn, anh em khỏi cần lăn tăn thông số kỹ thuật chi, tìm hiểu thêm để biết nguyên nhân nó tăng điểm thôi chứ còn tới lui cũng là tiến trình, tập lệnh, cache và xung nhịp thôi.
Có thể bạn biết rồi:
- Đã có thời gian USB flash drive được dùng làm RAM để hỗ trợ khi mà RAM dung lượng còn bé và SSD chưa phổ biến
- HDD vẫn được dùng để hỗ trợ RAM khi đầy bằng cách dùng pagefile để lưu tạm
Cười vô mặt
CBDancer
TÍCH CỰC
3 năm
@nhqdat HDD cũng chậm cỡ đó, set pagefile thì select ổ nào chẳng được bác?
Khoảng 2003 nhà mình mới có máy tính, ram 128 hdd 80gb chip celeron 2.40ghz

.2007 mới biết đến usb.
Mình nhớ k nhầm thì hồi đó có con usb transcend màu trắng dẹt dẹt 128mb là 2.0 rồi bạn
@CBDancer PATA thời đó khoảng 66MB/s mà, còn nhanh gấp đôi USB 2.0
USB 1.1 khoảng 1-2 MB/s chứ mấy.
HemakA
TÍCH CỰC
3 năm
@nhqdat Ram ảo mà, ảo tưởng 😁
Cái thông số cache này có thể xem luôn tại Task Manager đó
Hay ạ 👍
Đại khái về tư tưởng là thế. Nhưng mà một trong những nguyên nhân dùng cache là độ trễ truy cập DRAM ở ngoài chứ không hẳn là thông lượng (chúng ta quen gọi là tốc độ). Với ARM cho thiết bị di động thì DRAM thường chỉ dùng x64 (tương đương kênh đơn của các module DRAM đang dùng cho máy tính hiện nay) nhưng với bộ xử lý Intel/AMD dùng rất nhiều kênh nên tổng thông lượng thường rất cao. Nhưng nhược điểm của nó là độ trễ vẫn cao và nó không có lợi cho truy cập ngẫu nhiên từng word một. Thường DRAM chỉ đạt thông lượng tối đa khi chạy ở chế độ burst. Còn cache chế tạo từ SRAM nên truy cập ngẫu nhiên theo word rất tốt. Độ trễ cũng thấp. Nhưng nói SRAM tiếp kiệm điện thì không hẳn. SRAM để làm cache đọc ghi với tần suất cao nó uống điên như uống nước. Lại còn đắt, diện tích lớn.
@mushu Chính xác luôn, bộ nhớ SRAM nhanh hơn DRAM nhiều lần nên người ta tận dụng đặc tính này. Nhưng vì nó quá đắt, vì cấu trúc silicon nó phức tạp hơn nên để ít chi phí, người ta chỉ làm Cache nhỏ thôi.
Lúc mới giới thiệu cache (hình như Pentium 2) nó ko hiệu quả lắm, nhưng sau vài lần nâng cấp thì nó trở thành ko thể thiếu, mà còn đẻ ra L2 L3.
Theo những gì còn nhớ lại cuối cùng của lớp “Cấu trúc máy tính” 😁
Biến thể SDRAM chính là GDDR trên GPU đấy, như mấy máy chơi game PS5 tận dụng Ram GDDR6 chung cho CPU với GPU luôn.
Làm sao để CPU "đoán" được nó sắp cần cái gì mà đưa vào cache nhỉ ?
@dualshoсk Nó có một loạt thuật toán mà mình đọc xong thấy rối quá, không đọc tiếp hihihi
@dualshoсk nó giống như việc bạn hay dùng cái gì thì nhất thì nó xếp lên ưu tiên ý bạn
@Duy Luân Mình cũng khó hiểu cái này với bộ nhớ flash! Ví dụ 1 cái usb 32GB có 2GB Cache thì làm sao mà mình copy cut nội dung ngẫu nhiên trong 32GB mà nó chuyển nhanh vào 2GB cache để đạt tốc độ cao nhỉ?
@MysticForce Flash kia là loại bộ nhớ, và lúc đó nó dùng để cache những thứ chậm hơn. Cache là chỗ lưu data thôi bạn 😁 bạn dùnng hđ làm cache, chứa sẵn các file hay dùng chằng hạn.

Cache mà ngày xưa bạn dùng usb thì nó khác mục đích cáche cpu này. Nó cache file, cache cho hệ điều hành etc…
Tốc độ xử lý PC hiện tại nghẽn cổ chai ở DDR4. Cần tới 2022 khi DDR5 chính thức thương mại phổ biến thì mới giải phóng hết sức mạnh CPU. Khi đó bộ nhớ Cache CPU nhiều cũng tốt nhưng nó không quan trọng lắm nữa. Quan trọng là DRAm hiện tại đang bị lũng đoạnh bởi các công ty sx Ram làm cho việc nâng cấp công nghệ của người dùng khá khó vì không đủ tài chính. Đặc biệt là đại dịch Covid chưa có dấu hiệu chấm dứt/.
@CàChớn-Forever Căng gì bạn ơi, bạn nói sai tôi phải ý kiến chứ đâu phải ai cũng có kiến thức phần cứng để bị lùa gà!
@Masterbee thì nó tăng gấp đôi băng thông
@CàChớn-Forever yes... Thông số trên cây ram là tốc độ tối đa khi chạy dual, main và CPU có hỗ trợ. Còn khi cắm 1 cây thì nó chỉ chạy 1/2 thôi.
@Masterbee Bạn nói đúng, tôi cắm 2 cây DDR4 4G bus 2666MB thì thấy nhanh hơn khi cắm 1 cây 8G bus 2666MB, RAM Kingston's chính hãng đàng hoàng.
Để ý đến cái này là phải thừa tiền . Nhìn vào chỉ số của cache CPU nó nhích nhẹ cái là bay vài trăm đô , nên nó khá xa vời với đại đa số anh em .
Có vài thứ trong bài viết trên không đúng.

1. Ổ cứng không phải Primary Storage. RAM mới là Primary Storage còn HDD, SSD chỉ là Secondary Storage thôi

2. App( hay phần mềm) không gửi dữ liệu lên CPU. Bản thân CPU sẽ phân tích lệnh nó được nạp vào để chạy để biết dữ liệu cần lấy ở đâu(Có nhiều dạng dữ liệu và nguồn để lấy dữ liệu không nhất thiết phải từ RAM).

3. Cái gì mà cache nhiều level lại giải thích như hộp số của xe. Sai toét.

4. Cache không phải càng to càng tốt. Nếu cache càng to càng tốt sao người ta không xài cache level 1 lên đến 10MB cho máu mà chỉ xài có vài trăm KB? Lý do là cache quá to sẽ làm việc tìm kiếm dữ liệu trong cache chậm lại (đặc biệt với cache level 1). Phương pháp truy xuất dữ liệu trong cache không giống như truy xuất dữ liệu trong RAM. Cache dùng phương pháp Associate access còn RAM là Random Access. Nên không như RAM càng to càng tốt còn cache thì chỉ ở mức vừa phải (vừa phải là bao nhiêu thì tự tìm hiểu nhé)
@Masterbee Chả quan tâm đến Intel hay AMD nữa vì hết chơi Game và làm những công việc chuyên môn. Giờ chuyển sang làm nghề đi nhậu và bốc phét nên cần mấy em mỏng nhẹ mát mẻ như mấy em chân dài là M1 thôi.
Đi nhậu với bốc phét thì quan tâm xe hơi với motor bạn ơi. Gái giờ nhìn bạn có nhà hay có xe, Iphone với M1 họ cũng không quan tâm nữa vì quá đại trà rồi 😆
Đúng là L1 dùng 32+32KB từ rất lâu rồi. Đến Sunny Cove (core i 10th) Intel mới điều chỉnh một chút thành 32+48KB. ARM cũng chỉ dùng cấu hình từ 32-64KB. AMD cũng dùng cấu hình 32+32. Vụ V-Cache nó cũng kiểu như V-NAND và 3D-DRAM thôi. Bản thân intel trước đây cũng có một thời xài eDRAM làm L4 nhưng có vẻ nó không đem lại lợi ích đủ lớn trong khi giá thành lại lớn nên sau này không còn sử dụng nữa. Việc dùng V-Cache sẽ khiến die dày không đều nên khó thiết kế giải nhiệt nên triển khai cũng cần giải quyết vấn đề này. Do cache đặt gần ALU nên sẽ ảnh hưởng nhiều đến giải nhiệt tổng thể của nhân xử lý. Đây có lẽ là lý do intel chưa triển khai ngay.
@Masterbee Mấy món Mô Tô và xe hơi chơi lâu lắm rồi. Giờ chuyển sang xài đồ công ty cấp thôi như nhà, xe, tài xế, máy tính. Tóm lại là gần như vô sản

Mua mấy cái nhỏ gọn như Mac Mini... lỡ bị mất việc thì gom hành lý dọn về Mỹ hay đi nước khác làm việc cũng gọn lắm
Cứ con nào đắt thì mua là nó nhanh ấy mà :v Nghĩ nhiều làm gì có tuổi rồi không update được 😆
Sai nhé, đắt nhất là mấy con Platinum Intel nhưng sức mạnh xử lý chậm hơn mấy CPU Threadripper chỉ 1/2 giá.
Lỗi thường gặp view attachment
image.jpg
nếu CPU tìm dữ liệu không thấy trong ổ cứng ssd, hdd nó sẽ chạy ra cửa hàng tìm và sau đó lên internet tìm
mcjambi
ĐẠI BÀNG
3 năm
@tyller end Haha! Cho 2 likes
thằng M1 nó nhanh vì ram trên máy có con chip M1 đóng vai trò như cache của CPU? Mình hiểu thế đúng hông nhỉ? Hay là cơ chế ARM hoạt động khác?
@Masterbee Còn 1 thứ nữa là M1 dành cho người bình thường cần mát mẻ, tiết kiệm điện, tiết kiệm môi trường...

Người bình thường, xài tác vụ bình thường thì M1 thừa sức đáp ứng... mà số lượng người này thì nhiều hơn các chuyên gia nên Apple tha sức hốt bạc.
@Masterbee Bạn có chỗ nào reference cho cái quan điểm là mật độ trans của chip M1 gấp mấy lần của CPU Intel không? hay chỉ dựa vào cái mấy cái thông số 5nm, 7nm, 11nm để phát biểu liều như thế? Nếu thế thì nên đọc lại một bài khác cũng của @duyluan để rõ hơn về các con số 5nm, 7nm này. Nó không đại diện cho mật độ transitor nhé.

https://tinhte.vn/thread/14nm-10nm-7nm-5nm-thuc-ra-con-so-nay-do-cai-gi-tren-con-chip-y-nghia-cua-chung-la-gi.3175245/

14nm, 10nm, 7nm, 5nm: Thực ra con số này đo cái gì trên con chip? Ý nghĩa của chúng là gì?

Chip 14nm, chip 7nm, chip 5nm là những cụm từ chúng ta nghe rất thường xuyên. Tuy nhiên ít khi nào chúng ta ngồi lại để xem chúng có ý nghĩa thật sự là gì. Trong bài này mình sẽ giải thích với các bạn những điều mình nghiên cứu được về chip 7nm hay…
tinhte.vn
Tra google đi bạn ơi. Chứ cái gì cũng dâng tận miệng, tui đâu có được trả lương để trả lời câu hỏi cho bạn đâu.
Hi vọng công nghệ tiến xa hơn nữa để RAM SSD có ngày nhanh cỡ cache CPU .
@hoanglong0712 RAM vĩnh viễn không thể nhanh bằng cache. Đơn giản là cache nằm ngay trong đế chip nên khoảng cách vật lý gần CPU hơn RAM rất nhiều. Người ta nói nhất cự ly, nhì tốc độ mà bạn.
thì tùy nhu cầu và hầu bao với dòng chip thôi chứ ít ai quan tâm cache lắm haha
Bác giải thích kiểu này thì ai học qua máy tính mới hiểu, người bình thường ko hiểu đâu!
Em giải thích vậy cho dễ hiểu nè:
Khi mở game chơi, lúc này ổ cứng sẽ được truy lùng các tập tin của game, các file này nằm rải rác trong ổ cứng chứ ko phải nằm liền kề nên thời gian truy lùng hơi lâu chút, sau đó các file game sẽ được chuyển lên bộ nhớ RAM, RAM sẽ tập hợp các file game để đưa lên CPU, nếu ko có RAM, mỗi lần xử lý game thì phải truy lùng file từ ổ cứng, đó là lý do tại sao cần có RAM. Thử để ý, mở cái gì lần đầu sẽ chạy(load) rất lâu, tắt nó rồi mở lại sẽ thấy mở rất nhanh, vì dữ liệu nằm ở RAM rồi nên mở cái lên liền chứ ko cần truy lùng từ ổ cứng nữa!
Tiếp theo, RAM sẽ đẩy dữ liệu lên CPU, CPU nó chỉ biết xử lý, nếu cứ đưa vô ko cần phân loại, xử lý trước hay sau thì sẽ loạn, ví dụ vừa mở game vừa mở nhạc vừa mở web, thì nó chạy loạn xạ, cho nên cần có 1 “thư ký” cho CPU, chính là bộ nhớ đệm cach L.
Cache L3 được dùng chung, vì hiện nay CPU có tới 2-4 lõi, như trong hình có 4 lõi, thì dữ liệu từ RAM sẽ được L3 sắp xếp, phân luồng cho 4 lõi để xử lý, nếu ko có cache L3, dữ liệu có thể dồn hết cho 1 lõi nào đó, các lõi khác ngồi chơi!
Tiếp theo, sau khi L3 chia dữ liệu cho 4 lõi, tại mỗi lõi sẽ có cache L2, nhiệm vụ là lưu lại các chỉ thị, các file từ RAM đưa lên, đẩy vào cho cach L1.
Cache L1 cũng hoạt động tương tự như L2, nó làm việc trực tiếp với lõi CPU, nhưng khác ở chỗ, nếu L2 tập hợp cả đống chỉ thị chờ CPU xử lý, thì cache L1 đã soạn sẵn dữ liệu nạp vô lõi, cái nào xử lý trước, cái nào xử lý tiếp theo!
Nhờ có 3 bộ nhớ cache L1-L2-L3 như vậy, nên CPU mới xử lý rất nhanh, hồi xưa ko có cache L3(ví dụ pentium 4 thời năm 2001) thì L2 đảm nhận vị trí cache chung!
@phukhanhhuba Dễ hiểu
kukenlcd
ĐẠI BÀNG
3 năm
Thông tin khá hữu ích !!!

Xu hướng

Bài mới










  • Chịu trách nhiệm nội dung: Trần Mạnh Hiệp
  • © 2024 Công ty Cổ phần MXH Tinh Tế
  • Địa chỉ: Số 70 Bà Huyện Thanh Quan, P. Võ Thị Sáu, Quận 3, TPHCM
  • Số điện thoại: 02822460095
  • MST: 0313255119
  • Giấy phép thiết lập MXH số 11/GP-BTTTT, Ký ngày: 08/01/2019