Tìm hiểu công nghệ AMD 3D V-Cache - Tại sao rất tốt cho game?

AMD 3D V-Cache 1140x500

Là một sản phẩm ra mắt từ 2022, cho tới nay 3D V-Cache (hay X3D) là một tính năng rất nổi tiếng với cộng đồng gamer. Hãy cùng tìm hiểu.

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) á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 song nó không thể hiện đầy đủ bản chất vấn đề.

Quan hệ giữa CPU và phần mềm/ứng dụng

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. Song 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.

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 & 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ý.

Điều gì làm nên sức mạnh CPU?

Well, 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. Và 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. 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ả?

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?

Cache, vấn đề muôn thuở của chip xử lý

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)?

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. Và 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.

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).

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

Tại sao cache quan trọng hơn RAM, SSD, HDD?

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).

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).

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

Tại sao X3D thể hiện tốt nhất với game?

Ở trên mình đã nêu, thực tế mọi ứng dụng (trừ số ít hãn hữu) đều có thể khai thác được lợi ích từ một bộ cache to bự. Thực tế chính AMD cũng có phiên bản "full" X3D dành cho server (Genoa-X) và chả ai mua chip server để chơi game cả 🙂 Nhưng game lại là nơi X3D toả sáng nhất, tại sao?

Trước hết cần làm rõ một "quan điểm": game mà chúng ta bàn tới là game 3D, nơi hệ số FPS thống trị tất cả. Vẫn có những game không phải 3D (đánh cờ chẳng hạn) nhưng hãy gác chúng qua bên. Game của ngày hôm nay là game 3D. Và thứ mà mọi gamer mong chờ nhất sau khi cài xong 1 game 3D là gì? Hình ảnh trước hết phải mượt, tối thiểu cũng phải 30 fps, hoặc hơn thì 60 fps, cao nữa 120 hay 144 fps blah blah blah…

Tất nhiên phần lớn năng lực này do GPU quyết định (render đồ hoạ). Nhưng CPU vẫn đóng phần quan trọng trong tính toán đối tượng, chủ thể, AI, NPC, event, vật lý (không bàn PhysX)… Lượng NPC càng đông thì CPU càng cần phải khoẻ, số tương tác đối tượng càng nhiều CPU cũng phải đảm nhận. Ở đây mình xài tạm Starfield, một game có yếu tố trọng lực cũng như nhiều thể loại đối tượng tương tác.

Những vật thể lơ lửng trong Starfield. Hãy chú ý người chơi có thể tác động lên tất cả và CPU sẽ phải đảm nhiệm việc này. Những dữ liệu phát sinh ra sẽ được truy cập nhanh hơn nếu bộ cache lớn hơn

Như bạn cũng đã biết, độ "thật" của game tỷ lệ với số vật thể, hiệu ứng mà gamer có thể tác động đến. Mà số tương tác càng nhiều nghĩa là số meta data phái sinh sẽ càng nhiều. Mà điểm chính yếu ở chỗ các meta data này không có sẵn, chúng do gamer hoặc event tạo ra. Ở môi trường trọng lực bình thường mọi vật thể sẽ "nằm dưới". Nhưng sang zero-G, tất cả đều lơ lửng và Starfield cho phép bạn "va chạm" với tất cả. Từ đó dẫn tới có những vật thể bình thường đang ở khoang A nhưng vì tác động của gamer, chúng trôi nổi qua khoang B. Và khi trọng lực có lại thì chúng không còn ở vị trí cũ. Đấy là meta data do chính gamer làm ra.

Và ai giải quyết tất cả những vấn đề đó? CPU. Nếu CPU không đủ mạnh để xử lý kịp các event thì sao? Nó sẽ gửi thông tin chậm tới GPU. Tới lượt GPU nhận tin chậm thì nó sẽ render chậm và trong vài trường hợp hãn hữu, hình ảnh render ra có thể không đúng với kết quả real time (ví dụ bạn bắn nổ bình xăng làm cháy địch nhưng GPU chưa nhận được thông tin cần render địch bị cháy).

Dĩ nhiên trong một hệ thống sẽ luôn có 1 thành phần "nghẽn cổ chai". Thường khi render ở độ phân giải thấp, game sẽ "nghẽn" ở CPU còn khi xuất hình ảnh ở res cao, yêu cầu bóng đổ, ray-tracing, blurring, slo-mo… thì GPU mới "nghẽn". Do đó khi nói CPU tốt nhất cho game thì bạn nên hiểu rằng đây là CPU giúp xử lý các vấn đề không-phải-đồ-hoạ tốt nhất, chứ không phải chạy GPU cùi bắp mà đòi hình ảnh 4K @ 120 fps được.

Ở độ phân giải thấp, chênh lệch fps cao nhất vs. thấp nhất tới 60%. Nhưng tăng độ phân giải thì gánh nặng chuyển dần sang GPU

Ngoài ra cần nói thêm một vấn đề nữa về game đó là đối tượng khách hàng. Tuy cũng là ứng dụng như bao ứng dụng khác, song game có 1 đặc thù là người dùng liên tục tiếp xúc và tương tác (ra lệnh) cho nó/CPU. Đặc trưng này khác hoàn toàn việc bạn ngồi render bản vẽ CAD hay encode phim hay giải nén RAR/ZIP. Thông thường với các ứng dụng trên, bạn cứ vứt chúng nó ở đấy rồi đi uống café hay làm việc khác. Nên thực tế việc render ở mấy fps với bạn cũng không có ý nghĩa. Nhưng với game, "không mượt là không mượt".

Vì đặc thù khác biệt đó, mặc dù chơi GTA hay giải nén RAR cũng đều là công việc như nhau, nhưng cái trải nghiệm người dùng (UX) khi phóng xe trên xa lộ và bị truy nã 5 sao sẽ có ấn tượng nhiều hơn. Vì chính bạn là người "cảm nhận" được cái sự mượt mà đó. Chứ không phải vừa làm việc, vừa xem live stream, vừa thả tim ai đó trên mạng xã hội

X3D không chỉ lợi cho game. Các ứng dụng nặng về data vẫn được hưởng lợi từ một bộ cache lớn. Vấn đề là trải nghiệm "chơi game mượt mà" rất khó thấy khi chúng ta làm việc

Đến đây, hẳn bạn cũng hiểu tại sao cache càng to càng có lợi (không phải 100% nhưng phần lớn là thế). Ở phần sau, chúng ta sẽ phân tích cách AMD sản xuất X3D, các khó khăn cũng như là lợi ích và tương lai của công nghệ này.

1 thought on “Tìm hiểu công nghệ AMD 3D V-Cache - Tại sao rất tốt cho game?

Chia sẻ cảm nhận nhé ^^

Discover more from migovi

Subscribe now to keep reading and get access to the full archive.

Continue reading