Tại sao lại khuyến khích dùng RAM bus cao với Ryzen? Mối quan hệ giữa RAM, CPU, Infinity Fabaric là gì? Bài viết này sẽ cố gắng giải đáp câu hỏi trên. Nội dung tóm tắt: ​ Cơ chế hoạt động: - Các CPU core, bộ khiển nhớ (memory controller), các thiết bị ngoại vi khác,... được kết nối với nhau nhờ Infinity Fabric như cách hệ thống giao thông kết nối một thành phố. Xung Infinity fabric (FCLK) càng cao thì tốc độ truyền nhận dữ liệu bên trong CPU càng cao nhưng cũng có thể dẫn đến khả năng giao tiếp bị chậm lại do mất đồng bộ về thời điểm truyền tin giữa các bộ phận. - Nếu Infinity Fabric chạy quá chậm thì tốc độ truyền tin thấp, hoặc tuy nhanh nhưng chưa đủ nhanh thì các bộ phận khác trong CPU sẽ bị lỡ mất thời điểm truyền dữ liệu tới nhau (nhất là giữa CPU Core với Memory Controller). Mặc định là xung Infinity Fabric = xung bộ khiển nhớ (FCLK = UCLK) để đảm bảo tính đồng bộ. - Max FCLK của mỗi con CPU sẽ khác nhau. Cao nhất thường thấy là 1900MHz, trường hợp hiếm là 1933MHz. Những con chip dòng cao như Ryzen 7 hoặc 9 do chip thuộc hàng binning tốt nên thường có thể lên FCLK cao hơn các con CPU dòng Ryzen 3 hoặc 5 . Đồng nghĩa với việc có khả năng chạy RAM nhanh mà vẫn đảm việc truyền dữ liệu không bị mất đồng bộ. - RAM có 2 thứ quan trọng nhất cần lưu ý là xung nhịp RAM (RAM Frequency) và độ trễ truy xuất (Cas Latency). RAM Frequency ảnh hưởng đến số lần truyền dữ liệu giữa CPU<->RAM (băng thông) trong khi Cas Latency là khoản thời gian chờ đợi trong việc đáp ứng các yêu cầu truy xuất. Cas Latency càng thấp thì tần suất xử lý yêu cầu truy xuất càng cao. Tần suất yêu cầu truy xuất thấp nhưng gói dữ liệu lớn thì RAM Frequency cao sẽ ảnh hưởng hiệu năng nhiều nhất (xét về băng thông), Cas Latency ít ảnh hưởng hơn. Tần suất yêu cầu truy xuất cao nhưng gói dữ liệu nhỏ thì Cas Latency thấp sẽ giúp tăng hiệu năng tốt nhất chứ không phải RAM Frequency. Áp dụng lên thực tế: - Nói về các ứng dụng thiên về tính toán mà ít đưa ra các yêu cầu truy xuất dữ liệu nhiều như việc Render thì không bị ảnh hưởng lắm bởi Infinity Fabric, RAM speed, timing, latency. Chủ yếu bị ảnh hưởng bởi xung CPU. Thím nào mua về chỉ render có thể dùng RAM bus thấp (MT/s = 2133~2666) mà công việc cũng không bị ảnh hưởng mấy. Nói vậy thôi bèo lắm cũng nên mua RAM 2666 tại 2133 với 2400 là quá chậm rồi, tiền không hơn bao nhiêu. - Game là ứng dụng hay đưa ra các yêu cầu truy xuất dữ liệu, có thể gói dữ liệu không lớn nhưng tần suất yêu cầu thường khá cao. Tùy game mà thích độ trễ thấp hơn là băng thông cao hoặc là thích cả hai. Nếu máy dùng để chơi game thì nên chú trọng dùng RAM bus cao (MT/s = 3000~3800), Cas Latency thấp và tự chỉnh lại timing bằng DRAM calculator for Ryzen để giảm độ trễ hết mức có thể (dùng Thaiphoon để biết RAM chip gì - đọc thêm về OC DDR4 tại đây ). - Chơi game thì RAM 3200 thấy hợp với túi tiền nhất, hiệu năng so với 3600/3800 không kém mấy trừ phi có card VGA khủng như 2080ti. Nếu đang có RAM bus thấp thì nên siết lại timing và tăng FCLK (1900MHz trở xuống) để giảm độ trễ và tăng tốc độ truyền nhận dữ liệu trong CPU. - iGPU của APU rất cần băng thông, nên chú trọng mua RAM bus cao và tự chỉnh timing sẽ đưa ra kết quả tốt nhất. - Thím nào có ý định chạy RAM từ 3866 trở lên thì khuyên nên tự chỉnh FCLK cho mức cao nhất mà con chip có thể chịu được để giảm độ trễ. Bởi từ RAM 3866 trở lên thì xung bộ khiển nhớ (UCLK) sẽ không đồng bộ với RAM Frequency nữa mà chạy ở mức 1 : 2. Tức UCLK chỉ bằng 1/2 RAM Frequency. Đồng bộ FCLK với UCLK lúc này có thể không đáng nữa bởi vì UCLK hiện đang rất thấp. Nội dung chi tiết: ​ Tính toán Khả nảng tính toán của CPU thì phụ thuộc vào kiến trúc và xung nhịp CPU là chủ yếu. 2 con CPU cùng chung một kiến trúc thì con nào xung cao hơn sẽ có khả năng tính toán cao hơn. Tuy nhiên sau khi tính toán đưa ra kết quả thì CPU bắt buộc phải ghi vào RAM , và để đưa lệnh và dữ liệu cho CPU cũng bắt buộc phải được đọc từ RAM . RAM bus cao và timing thấp sẽ tăng khả năng truy xuất dữ liệu cho CPU. Nếu phần mềm các thím sử dụng nhạy cảm với khả năng truy xuất dữ liệu thì RAM bus cao cùng độ trễ thấp sẽ giúp tăng hiệu năng của phần mềm ấy. Memory Controller (Bộ khiển nhớ) Bộ phận đảm nhiệm việc làm cầu nối giữa CPU<->RAM. Cái này hay được gọi là con chip cầu bắc hoặc NB(Northbridge) tại hồi xưa con chip này là riêng biệt và nằm trên mainboard và ở gần CPU và phía trên con Chipset(SB-Southbridge). Dần dần thì AMD và Intel tích hợp con chip này vào luôn CPU. Hiện tại thì AMD đặt tên bộ phận này là "Unified Memory Controller" với tên gọi xung nhịp là ( UCLK ) . Ram Frequency Xung nhịp của RAM ( MEMCLK ), RAM đang dùng từ đời DDR, DDR2, DDR3, DDR4 là Double Data Rate thay vì Single Data Rate tức với mỗi nhịp của chip nhớ (memory chip) thì sẽ truyền dữ liệu được 2 lần thay vì 1 lần . Ví dụ DDR4 với RAM Frequency (MEMCLK) = 1600 MHz sẽ có MT/s = 3200 tức 3,200,000,000 lần truyền dữ liệu/giây với mỗi lần truyền được 64bit (do độ rộng băng thông của một channel là 64bit). Đây là lý do tại sao người ta thường khuyến khích chạy 2 cây RAM (Dual Channel) thay vì 1 cây RAM (Single Channel), bởi Bus Width (độ rộng băng thông) của Dual Channel = 128bit so với Single Channel = 64bit . Infinity Fabric Bộ phận được giới thiệu từ thế hệ Zen đầu tiên, đảm nhiệm việc liên lạc giữa các CPU die với nhau và xung nhịp được đồng bộ (Sync) với Memory controller, là cầu nối truy xuất dữ liệu giữa Core<->Core, CPU<->RAM và CPU<-> các linh kiện khác như keyboard, mouse. Ở Ryzen 1000, 2000 thì nó chỉ nằm trên CPU die, sang Ryzen 3000 thì AMD dành thêm một die riêng cho bộ phận này, gọi là IO die. Phần khoanh tròn là IO die Cơ cấu hoạt động của Infinity Fabric Đối với APU thì Infinity Fabric còn là mối liên kết giữa CPU và iGPU Infinity Fabric đối với các Threadripper đời 2000 (tương tự với đời 1000) Infinity Fabric đảm nhiệm phần truy xuất/liên kết nên "xung Infinity fabric"(FCLK) cao đồng nghĩa với việc độ trễ truy xuất thấp . FCLK vs UCLK vs MEMCLK Đời Zen và Zen+ (Ryzen 1000/2000 tính luôn cả APU 3200G/3400G) thì tỷ lệ mặc định FCLK : UCLK = MEMCLK , tức xung nhịp RAM bao nhiêu thì xung nhịp bộ khiển nhớ cũng bấy nhiêu. Và vì xung nhịp Infinity Fabric (FCLK)= xung nhịp bộ khiển nhớ (UCLK) nên xung nhịp RAM (MEMCLK) càng cao bao nhiêu thì xung nhịp Infinity Fabric cũng cao bấy nhiêu. Điều này dẫn tới việc tăng tốc độ truyền tải dữ liệu và cũng giảm độ trễ trong giao tiếp giữa core với core, die với die và CPU với RAM. Khuyến khích chạy RAM bus cao từ đời Ryzen 1000 cũng vì lý do trên, không phải chỉ để tăng băng thông bộ nhớ mà chủ yếu để tăng FCLK nhằm giảm độ trễ truy xuất dữ liệu. Đời Zen 2 (Ryzen 3000 không tính APU 3200G/3400G) FCLK được tách rời khỏi UCLK (mặc định FCLK : UCLK = 1 : 1 nhưng có thể tùy chỉnh nếu muốn). Riêng UCLK thì chạy ở 2 chế độ: UCLK : MEMCLK = 1 : 1 mặc định cho RAM với MT/s = 2133~3800 (1066.5~1900 MHz). UCLK : MEMCLK = 1 : 2 mặc định cho RAM với MT/s = 3866 trở lên (1933 MHz +). Xung bộ khiển nhớ chỉ bằng 1/2 xung RAM nếu chạy RAM 3866 trở lên. AMD khuyến khích người dùng để FCLK trùng với xung nhịp của RAM (tức xung nhịp của bộ khiển nhớ) đối với RAM 3800 trở xuống (mặc định tỷ lệ 1:1). Nhưng do đời Zen 2 cho phép tùy chỉnh FCLK nên người dùng với RAM bus thấp (MT/s = 2133~2666) vẫn có thể tăng FCLK để tăng tốc độ liên kết giữa các bộ phận mà không cần phải dùng RAM bus cao (MT/s = 3000~3800). Render Điểm Cinebench R20 dường như không bị tác động nhiều bởi RAM hoặc FCLK Corona Render cũng tương tự, giảm được vài s. Khả năng tính toán của CPU thì phụ thuộc chủ yếu vào xung nhịp CPU chứ không phải FCLK nên RAM bus cao hoặc FCLK cao không ảnh hưởng gì nhiều đến khả năng render. Băng thông (Bandwidth) Riêng về băng thông thì bị ảnh hưởng bởi RAM bus là chủ yếu. Thím nào chơi APU và chỉ dùng iGPU thì hãy đầu tư cho RAM bus cao. Gaming Các ứng dụng game khá nhạy cảm với độ trễ của việc truy xuất dữ liệu nên RAM bus cao, tight timing và FCLK cao sẽ giúp tăng FPS. Giải thích đơn giản là nếu có một bộ phận công chứng giấy tờ với khả năng xử lý là 1000 bộ hồ sơ/ 1 tháng. Có 2 cách để giải quyết: Thứ nhất, gộp hết tất cả hồ sơ và giao cùng một lần cho bộ phận công chứng vào đầu tháng và sẽ gửi kết quả vào cuối tháng. Thứ hai, nhận đến đâu sẽ giải quyết đến đó và gửi kết quả đi nhanh hết mức có thể. Cả 2 trường hợp đều sẽ xử lý 1000 bộ hồ sơ trong 1 tháng nhưng độ trễ sẽ khác nhau. RAM 2133, tight timing, tỷ lệ FLCK : UCLK/MEMCLK = 1:1 vs FCLK 1900 So sánh với RAM bus cao hơn và tỷ lệ FLCK : UCLK/MEMCLK = 1:1 Game rất nhạy cảm với độ trễ trong truy xuất dữ liệu, có thể giảm độ trễ này bằng cách chỉnh lại timing với DRAM calculator for Ryzen hoặc tăng FCLK . Nhưng nếu có RAM bus cao thì tight timing sẽ giúp giảm độ trễ rất nhiều, đồng nghĩa với việc tăng FPS trong game. RAM 3800 loose vs tight timing, tỷ lệ FLCK : UCLK/MEMCLK = 1:1 Tự chỉnh timing thay vì dùng XMP sẽ giúp tăng FPS mà không cần đến việc OC FCLK Assassin Creed Odyssey khá nhạy cảm với độ trễ thấp nhưng băng thông cao không quan trọng lắm, trừ phi có card VGA khủng. World War Z thích băng thông cao hơn là độ trễ thấp Nguồn: Edit: 22/06/2020 Làm rõ thế nào là RAM bus thấp/cao. Phân biệt thêm sự khác biệt giữa RAM Frequency (MEMCLK) với Unified Memory Controller Frequency (UCLK) Điều lưu ý khi chạy RAM từ 3866 trở lên. Một vài vấn đề khác. 23/06/2020 - Chỉnh lại format, đưa bản tóm tắt lên đầu cho dễ đọc, và thêm vào một số nội dung khác.