Tìm hiểu công nghệ AMD 3D V-Cache – Phần 1: Cache để làm gì?

Sau đợt ra mắt cực kỳ thành công của Ryzen 7 9800X3D, cho tới nay AMD đã có 3 thế hệ sản phẩm (Zen 3, Zen 4, Zen 5) có áp dụng công nghệ này. Và, để làm rõ mọi thứ trước khi đi vào chi tiết, mình cần nói rõ X3D có lợi cho TẤT CẢ MỌI ỨNG DỤNG, chứ không phải chỉ riêng game. Nhưng do cách PR cũng như nhóm đối tượng khách hàng mà AMD ngắm đến, phần lớn mọi người chỉ quan tâm tới X3D khi nói về game. Lối suy nghĩ này không sai nhưng nó không thể hiện đầy đủ bản chất vấn đề.


Một thứ có lẽ quá hiển nhiên mà bạn cũng biết đó là CPU là phần cứng, còn các chương trình là phần mềm và phần mềm thì cần phần cứng để xử lý các yêu cầu mà người dùng đưa ra. Tuy nhiên cũng có một cách khác để nhìn nhận 2 chủ thể này – CPU là nhà máy làm ra của cải vật chất còn phần mềm là các công ty thuê nhà máy đó, dĩ nhiên người dùng chúng ta là đối tượng được phục vụ sau cùng.

Nói một cách đơn giản, người dùng đưa ra yêu cầu về một sản phẩm, công ty chịu trách nhiệm thương hiệu nhận yêu cầu đó, sau khi xử lý họ lập ra các yêu cầu mới và gửi xuống cho nhà máy giải quyết tiếp. Tốc độ làm việc của nhà máy (năng suất) chính là yếu tố quyết định người dùng có sớm nhận được thứ họ mong muốn hay không (ở đây tạm gác vấn đề chất lượng sản phẩm). Đối chiếu qua game (nhất là game 3D), sản phẩm mà chúng ta nhận được chính là các khung hình hiện ra trên màn hình. Mọi thứ có mượt mà không, chuyển cảnh có lag không, các đối tượng có hành xử “đúng” như các dòng lệnh được lập trình sẵn hay không… ngoài vấn đề game (công ty) chạy tốt thì phần lớn lệ thuộc vào CPU/GPU (nhà máy) có năng suất tới đâu.

software-hardware.png
Phần mềm sau khi nhận được yêu cầu từ người dùng sẽ gửi các tập lệnh cho CPU xử lý. Dữ liệu được CPU xử lý xong sẽ lại trả về cho phần mềm gửi lại người dùng.

Nhìn chung thì vấn đề giữa phần cứng và phần mềm ở chỗ phần mềm là khách hàng của phần cứng. Phần mềm đưa ra yêu cầu (dựa trên yêu cầu gốc của người dùng) và phần cứng xử lý. Ví dụ người chơi bắn súng vào một vật thể trên màn hình, game sẽ phân tích người chơi bắn bao nhiêu phát, bắn trong bao lâu. Thông tin này được gửi tới CPU và nó sẽ tính toán sẽ tỷ lệ hit/miss là bao nhiêu, vật thể bị trúng có thể bị tác động hay không, nếu có thể bị tác động thì hiệu ứng tiếp theo sẽ thế nào (cháy nổ, vỡ vụn, chảy máu…).

Trên đây là vấn đề quan hệ cơ bản giữa các thành phần chính trong máy tính. Sau đây chúng ta sẽ đi vào vấn đề hiệu năng của chip xử lý.


À thì có 2 thứ chính: silicon và điện 😃

Đùa thôi, 2 món trên là cơ bản, cũng như xăng/điện và luyện kim giúp chiếc xe của bạn lăn bánh vậy. Như đã nói ở trên, CPU là nhà máy, game/phần mềm là khách hàng của nhà máy, sức mạnh của nhà máy chính là năng suất – trong một đơn vị thời gian nó làm ra được bao nhiêu sản phẩm. Vậy thì sức mạnh của CPU chính là khi phần mềm gửi yêu cầu về thì mất bao lâu để nó gửi trả kết quả?

Ryzen 7 9800X3D Linux all copy.jpg
Tổng quan hiệu năng Ryzen 7 9800X3D trên Linux. Hãy chú ý 9700X bình thường (65W) và mở khoá TDP (105W). Đồng thời so sánh với các CPU khác để thấy có rất nhiều yếu tố khác nhau làm nên sức mạnh tổng của 1 con chip.

Và trong một quan hệ vận động liên tục, khi phần mềm nhận được kết quả A từ CPU, nó lại gửi tiếp yêu cầu BCDEF (tuỳ theo người dùng) và CPU sẽ là chủ thể xử lý tiếp các thứ trên. Dĩ nhiên, nó càng hồi đáp nhanh có nghĩa là nó càng mạnh. Các bài benchmark mà chúng ta vẫn “vứt” cho CPU/GPU làm thực chất cũng là gửi cho chúng cả đống công việc (được chuẩn hoá) để xem con chip đó xử lý hết vấn đề trong bao lâu. Con chip mạnh là con chip gửi về kết quả sớm hơn những con chip… không mạnh. Tương tự, GPU mạnh là GPU trả về nhiều frame/s hơn những GPU yếu (mà fps ít quá thì game lag, giật, người chơi bị khó chịu).

Nhưng năng suất của CPU dựa vào cái gì? Chính là kiến trúc của vi xử lý, loại tập lệnh mà nó hỗ trợ (ISA), số nhân xử lý nó có, xung nhịp tối đa nó có thể đạt được, độ trễ của tín hiệu. Ở đây do các bài phân tích kiến trúc chip (Zen 5, Arrow Lake…) đều đã có, nên mình sẽ không nói lại. Mà chủ điểm sẽ là bộ đệm X3D của AMD. Tại sao chỉ 64 MB lại tạo ra điều khác biệt?


Nếu thường xuyên đọc các bài review hoặc phân tích chip, bạn sẽ thấy các trang công nghệ ít khi nói về bộ đệm (cache). Lý do không phải vì thành phần này không quan trọng, mà vì cấu trúc của nó quá đơn giản. Và có thể nói là kiến trúc SRAM (loại cache phổ biến hiện nay) hầu như không thay đổi trong suốt hàng chục năm qua, từ con chip Pentium 3, Athlon XP, Cell, ARMv7… đều chung 1 kiến trúc SRAM. Thế nên có gì để nói khi bao năm qua nó vẫn vậy (chỉ khác biệt tiến trình bán dẫn)?

SRAM-Cell-(6-Transistors) copy.jpg
Tế bào SRAM 6T (tạo bằng 6 transistor) phổ thông hiện nay. Ngoài ra còn các loại SRAM khác như 4T, 5T, 7T, 8T, 9T, 10T. Nhìn chung lượng transistor càng dùng nhiều thì càng tốn silicon.

Nhưng không nhắc tới không có nghĩa nó vô dụng. Thực tế việc mọi con chip đều cần tới SRAM cho thấy bất kể dùng để làm gì (CPU, GPU, DSP, modem mạng…), thì cache vẫn là thứ cần phải có. Tương tự như không ai nhắc tới nhưng công ty nào cũng cần có kế toán. Trở lại với nhà máy, dù là sản xuất cái gì trên đời cũng cần có kho hàng, bến bãi. Trần trụi mà nói, cache chính là kho hàng của nhà máy.

Nếu như nhân xử lý là một line sản xuất, thì cache chính là điểm tập kết sản phẩm ở cuối line. Cache càng rộng có nghĩa là sản phẩm làm ra sẽ càng có nhiều chỗ để chứa. Việc sản xuất sẽ được diễn ra liên tục. Cache mà đầy thì hàng ra cuối line không có chỗ chạy, hay còn gọi là dừng line (stop line). Với CPU, chúng ta gọi là “treo máy” hoặc “treo” (stall) nhân xử lý. Bạn buộc phải chờ cache được “giải phóng” thì lúc đó mới có chỗ để nhân xử lý/line sản xuất chạy tiếp.

Song vấn đề gì cũng có 2 mặt. Cache/kho hàng chiếm rất nhiều diện tích. Với chip bán dẫn mà nói, số silicon bạn bỏ ra cho cache hay cho các mạch logic (nhân CPU/GPU) là bài toán cầm cân nảy mực. Vì nếu sản xuất cùng 1 die bán dẫn, chi phí bỏ ra cho mỗi transistor là như nhau. Nhưng mạch logic mới làm ra “của cải vật chất”, còn mạch SRAM không làm ra gì cả mà chỉ là “kho chứa của cải”. Lấy ví dụ với chip Ryzen 7 5800X3D (bản 3D V-Cache đầu tiên), chỉ riêng 32 MB L3 Cache đã chiếm gần 1/2 kích thước die, và phần còn lại là 8 nhân Zen 3. Có nghĩa cache tuy dung lượng không bao nhiêu, nhưng số silicon cần bỏ ra rất nhiều. Mà càng nhét nhiều silicon thì kích thước die sẽ càng tăng >> hiệu suất bán dẫn giảm.

AMD 3D V-Cache 14.jpg
Mẫu chip đầu tiên áp dụng 3D V-Cache. Hãy chú ý phần diện tích 32 MB L3 Cache so với 8 nhân Zen 3 còn lại

Do đó không phải là các hãng chip (không riêng AMD) không hiểu lợi ích của cache to, mà đó là bài toán “cơm áo gạo tiền bỉm sữa học phí” mà mỗi dự án thiết kế chip phải cân nhắc trước khi đưa ra quyết định sau cùng.

Ngoài ra cache to còn một nhược điểm khác (không lớn nhưng vẫn cần xem xét) là dung lượng càng to thì thời gian bỏ ra tìm data càng cao. Hiểu nôm na như bạn đứng sản xuất ở line 4 mà cần lấy hàng từ line 0 ra. Song do tính chất hàng chạy liên tục nên line 0 thấy chỗ nào trống thì nhét hàng vào đó. Và bạn sẽ phải đi “mò” từng lot trong kho để thùng hàng nào dành cho mình. Quãng thời gian đi “mò” hàng này chính là thời gian truy cập. Thời gian truy cập càng cao có nghĩa là thời gian line 4 “chờ đợi” sẽ càng lâu >> năng suất giảm. Ngoài ra truy cập lâu còn dẫn tới tăng thêm mức tiêu thụ điện (để phục vụ tìm kiếm).

production line.webp
Storage copy.jpg
UNEX-Manufacturing-Current-Footprint copy.jpg
Dây chuyền sản xuất (trên) và Kho hàng (dưới). Có thể thấy để đáp ứng quy mô công nghiệp thì diện tích kho hàng cũng phải tương xứng với năng lực sản xuất. Điều này vẫn đúng với chip xử lý và cache.


Nãy giờ có lẽ bạn đang thắc mắc – nếu chứa dữ liệu ở cache mất công vậy tại sao chúng ta không chứa ở RAM hoặc chỗ khác? Chẳng phải giá RAM rất rẻ (so với CPU) sao? Câu trả lời là CÓ, chúng ta có chứa dữ liệu ở những chỗ đấy. Chứ nếu không chúng ta trang bị RAM để làm gì…

Vấn đề ở chỗ, hãy quay lại nhà máy mà bạn vừa đi “mò” hàng ở trên. Mặc dù cache rất đắt đỏ, nhưng nó lại ở ngay cạnh nhân CPU. Cũng như kho hàng của xưởng bạn không lớn, nhưng nó ở ngay bên kia line sản xuất. Thời gian để bạn chạy qua chạy lại là rất ngắn (với CPU cache tính bằng nanosecond). Còn RAM thực tế mà nói, nó giống như bãi logistic mà nhà máy của bạn thuê ở một cảng vụ nào đó. Bạn cần có xe tải, xe container để chở đống hàng trên ra đó (tất nhiên thời gian bốc dỡ hàng cũng phải tính vô quá trình sản xuất).

Ryzen 7 5800X3D mem latency 1.png
Ryzen 7 5800X3D mem latency 2.png
So sánh độ trễ và kích thước dữ liệu khi truy cập cache của Ryzen 5800X3D. Phiên bản non-X3D có độ trễ thấp hơn 1 chút khi quy mô data nhỏ (< 32 MB). Nhưng từ 32 MB trở lên thì độ trễ tăng vọt vì phải lấy data từ RAM về. Bản X3D độ trễ chỉ tăng nhẹ cho tới khi dùng hết 96 MB cache.

Và nếu nguyên liệu sản xuất tại cache (kho) đã hết, bạn sẽ phải chờ CPU fetch data từ RAM (cảng) về. Bình quân thời gian chờ dữ liệu từ RAM về nhân CPU gấp 60 – 70 lần từ L1 cache, gấp 30 lần từ L2 cache và gấp 10 lần từ L3 cache. Nếu rảnh bạn có thể dùng AIDA64 hoặc một trình benchmark bộ nhớ nào đó để check thử chênh lệch hiệu năng giữa RAM và CPU Cache là bao nhiêu. Cần chú ý ngoài độ trễ thì băng thông dữ liệu của cache đạt hàng ngàn GB/s trong khi RAM chỉ đạt vài chục GB/s.

Đây là lý do tại sao X3D của AMD dung lượng chỉ có 64 MB (phiên bản hiện tại) nhưng nó giá trị gấp nhiều những cây RAM có dung lượng 8 GB, 16 GB ngoài kia. Thông thường bạn sẽ không cảm nhận được nhiều cải thiện hiệu năng khi nâng cấp RAM (chỉ khi benchmark 1 ứng dụng thôi nhé, chạy nhiều ứng dụng thì nhiều RAM vẫn tốt hơn).

Ryzen 7 9800X3D aida64-cache-mem.png
Benchmark RAM và cache trên AIDA64 cho thấy khác biệt rõ ràng giữa độ trễ và băng thông

Nguồn: Tinhte.vn