Điều chỉnh Điện áp và Tần số Động (DVFS)
1. Tổng quan
Điều chỉnh điện áp và tần số động (DVFS, Dynamic Voltage and Frequency Scaling) là một kỹ thuật quản lý năng lượng điều chỉnh điện áp cung cấp và tần số hoạt động cùng nhau trong lúc chạy để khớp với khối lượng công việc (tải) mà bộ xử lý đang thực hiện, qua đó tối thiểu hóa mức tiêu thụ điện năng và sinh nhiệt trong khi vẫn đáp ứng hiệu năng yêu cầu. Cốt lõi nằm ở chỗ "không phải lúc nào cũng chạy ở tốc độ tối đa, mà chỉ chạy nhanh đúng mức cần thiết ngay lúc này", và việc hạ điện áp cùng tần số đồng thời chính là bản chất phân biệt nó với clock gating đơn thuần.
Bối cảnh ra đời của DVFS là vấn đề mật độ công suất (power density) do việc thu nhỏ tiến trình bán dẫn tạo ra. Khi tiến trình thu nhỏ, có thể tích hợp nhiều transistor hơn trên cùng diện tích, nhưng nếu cứ tiếp tục nâng xung nhịp thì mức tiêu thụ điện năng trên một đơn vị diện tích tăng vọt và việc làm mát chạm giới hạn. Việc "cuộc đua xung nhịp" dừng lại và chuyển hướng sang đa nhân vào giữa những năm 2000 chính là vì bức tường năng lượng (power wall) này, và từ đó mô thức chuyển từ "thiết kế vắt kiệt hiệu năng" sang "thiết kế nâng cao hiệu năng trên mỗi watt (performance per watt)". DVFS là kỹ thuật tiêu biểu đứng ở trung tâm của bước chuyển đó.
Về mặt khái niệm, DVFS được đề xuất trong nghiên cứu năng lượng thấp vào cuối thập niên 1990 và bắt đầu được trang bị chính thức vào bộ xử lý thương mại quanh năm 2000. SpeedStep của Intel, PowerNow!/Cool'n'Quiet của AMD, LongRun của Transmeta Crusoe là những ví dụ tiêu biểu thời kỳ đầu, còn ở phe ARM nó trở thành kỹ thuật chuẩn trên thực tế cùng với sự lan rộng của di động. Ban đầu OS chỉ chuyển đổi các bậc lớn một cách chậm chạp, nhưng ngày nay đã tinh vi đến mức phần cứng tự chủ điều chỉnh hàng chục bậc theo đơn vị µs. Như vậy DVFS là một công nghệ trưởng thành được mài giũa hơn hai mươi năm, song vẫn đang tiến hóa giữa những áp lực mới như việc thu nhỏ tiến trình và khối lượng công việc AI.
Nhu cầu đối với DVFS thể hiện những bộ mặt khác nhau tùy môi trường hoạt động. Ở các thiết bị pin như điện thoại thông minh và thiết bị đeo, kéo dài tuổi thọ pin là mục tiêu ưu tiên hàng đầu; ở trung tâm dữ liệu, động cơ là cắt giảm hóa đơn điện và chi phí làm mát cũng như tuân thủ giới hạn công suất tủ rack; còn ở hệ thống nhúng và ô tô, lý do trực tiếp là quản lý nhiệt và độ tin cậy. Nghĩa là DVFS được dùng chung trên toàn phổ từ di động đến HPC, nhưng chỉ có thể áp dụng đúng đắn khi hiểu rằng hàm mục tiêu mà mỗi lĩnh vực muốn tối ưu là khác nhau. Gần đây, khi mức tiêu thụ điện của trung tâm dữ liệu trở thành vấn đề xã hội và quy định phát thải carbon được siết chặt, DVFS đang được soi xét lại không chỉ ở khía cạnh giảm chi phí mà còn từ góc nhìn tính bền vững (sustainability) / điện toán xanh. Khả năng thực hiện cùng một phép tính với ít năng lượng hơn chính là phương tiện giảm dấu chân carbon.
Căn cứ cho hiệu quả mà DVFS nhắm tới nằm ở công thức công suất động (dynamic power) của mạch CMOS. Công suất động được biểu diễn xấp xỉ là P_dyn ≈ α·C·V²·f, trong đó α là hệ số hoạt động chuyển mạch, C là điện dung tải, V là điện áp cung cấp, f là tần số. Việc công suất tỉ lệ với bình phương điện áp (V²) trong công thức này giải thích toàn bộ về DVFS. Chỉ hạ tần số thì công suất chỉ giảm tuyến tính, nhưng vì hạ tần số cho phép mạch hoạt động ổn định ở điện áp thấp hơn nên có thể hạ cả điện áp cùng lúc, và kết quả là công suất giảm mạnh gần như lập phương. Như sẽ thấy ở phần sau, chính "số hạng bình phương" này là lý do khiến DVFS vượt trội áp đảo so với việc chỉ điều chỉnh tần số đơn thuần.
Các đặc trưng phân biệt DVFS với những phương tiện tiết kiệm năng lượng khác có thể quy về ba điểm. Thứ nhất là tính thích ứng lúc chạy: nó đổi điểm hoạt động bằng cách nhìn tải trong lúc thực thi chứ không phải tại thời điểm thiết kế. Thứ hai là điều chỉnh điện áp và tần số đồng thời: nó không tách rời hai yếu tố, nhằm đạt hiệu ứng bình phương nói trên. Thứ ba là tính thuận nghịch của hiệu năng: khác với power gating vốn tắt hẳn một khối, hiệu năng có thể được khôi phục bất cứ lúc nào, phù hợp cho những nhân phải luôn chạy. Nhờ ba đặc trưng này, DVFS đã trở thành phương tiện quản lý năng lượng mặc định cho các bộ xử lý đa dụng nơi không cho phép tạm dừng tức thời.
2. Nguyên lý hoạt động và mô hình năng lượng
Để hiểu đúng DVFS, trước hết phải phân biệt năng lượng được tiêu thụ ở đâu. Mức tiêu thụ năng lượng của bộ xử lý chia đại thể thành công suất động phát sinh do chuyển mạch, và công suất tĩnh (static/leakage power) rò rỉ chỉ vì transistor đang bật. DVFS chủ yếu nhắm vào công suất động, nhưng việc tiến trình càng mới thì tỉ trọng công suất tĩnh càng lớn—khiến riêng DVFS là có giới hạn—là vấn đề cốt lõi của quản lý năng lượng hiện đại.
flowchart TB
subgraph TOT["Tiêu thụ năng lượng của bộ xử lý"]
DYN["Công suất động P_dyn ≈ α·C·V²·f"]
STA["Công suất tĩnh P_static (dòng rò)"]
end
DYN --> F["Hạ tần số f và điện áp V cùng nhau"]
F --> SAVE["Giảm mạnh công suất nhờ hiệu ứng bình phương điện áp"]
STA --> LEAK["Chỉ giảm khi cắt bằng sleep/power gating"]
SAVE --> GOAL["Nâng hiệu năng trên watt trong khi giữ hiệu năng yêu cầu"]
LEAK --> GOAL
Vì sao công suất tĩnh ngày càng trở thành vấn đề thì gắn với vật lý của việc thu nhỏ tiến trình. Tiến trình càng mịn thì điện áp ngưỡng (threshold voltage) của transistor cũng phải hạ cùng để duy trì tốc độ, nhưng khi điện áp ngưỡng giảm thì dòng rò qua những transistor lẽ ra phải tắt lại tăng theo hàm mũ. Kết quả là ở các tiến trình tiên tiến từ 10nm trở xuống, tỉ trọng công suất tĩnh trong tổng công suất đã lớn hơn nhiều so với trước, làm giảm hiệu quả tương đối của DVFS vốn chỉ cắt công suất động. Đây là bối cảnh ra đời đại nguyên tắc của thiết kế năng lượng thấp hiện đại rằng "riêng DVFS là chưa đủ và phải kết hợp với power gating và các trạng thái sleep (C-state)".
Như hình trên cho thấy, DVFS là phương tiện kéo số hạng V²·f xuống, còn dòng rò phải được xử lý bằng power gating riêng. Ở đây quan trọng là vì sao điện áp và tần số nhất thiết phải được điều chỉnh cùng nhau. Vì độ trễ chuyển mạch của transistor dài ra khi điện áp hạ xuống, nên hạ điện áp cũng hạ luôn tần số tối đa mà mạch có thể hoạt động ổn định. Do đó với một tần số nhất định tồn tại một điện áp tối thiểu có thể chịu được nó, và các nhà sản xuất chip quy định trước những tổ hợp (tần số, điện áp) an toàn này thành một bảng bậc rời rạc gọi là P-state hoặc OPP (Operating Performance Point). DVFS không dùng giá trị tùy ý mà di chuyển giữa những bậc đã được kiểm chứng này.
Bảng OPP được viết với một biên an toàn nhỏ trong quá trình đặc trưng hóa chip (characterization) để chịu được sai lệch tiến trình-điện áp-nhiệt độ (PVT). Chẳng hạn một nhân di động nào đó có từ năm, sáu đến hàng chục bậc, kiểu như 1.05V ở 2.4GHz, 0.90V ở 1.8GHz, 0.75V ở 1.0GHz. Bậc càng dày thì càng khớp tải chính xác hơn, nhưng cũng khiến chuyển đổi thường xuyên hơn và điều khiển phức tạp hơn. Governor chọn trong các bậc rời rạc này bậc thấp nhất thỏa mãn tải hiện tại, và đây là quyết định bản chất của điều khiển DVFS.
Hãy ước lượng độ lớn của mức tiết kiệm năng lượng bằng con số. Giả sử một nhân hoạt động ở 2.0GHz tại 1.2V, rồi tải giảm và nó xuống 1.0GHz tại 0.9V. Vì công suất động tỉ lệ với V²·f nên (0.9/1.2)² × (1.0/2.0) ≈ 0.5625 × 0.5 ≈ 0.28, tức giảm khoảng 72%. Nếu chỉ giảm tần số còn một nửa thì công suất chỉ giảm 50%, nhờ hạ cả điện áp nên đã tiết kiệm thêm được nhiều. Như vậy việc điều chỉnh tần số không kèm hạ điện áp cũng giống như chỉ dùng một nửa của DVFS. Ngược lại, turbo boost vốn nâng hiệu năng áp dụng cùng công thức theo chiều ngược: nó nâng điện áp để cho phép tần số cao hơn, vắt kiệt hiệu năng trong khoảnh khắc ngắn, nhưng công suất và nhiệt vọt lên hơn cả bình phương. Vì thế turbo chỉ được giữ trong khi ngân sách nhiệt còn cho phép, và tự động được thu lại khi nhiệt độ chạm ngưỡng. Như vậy DVFS thực hiện điều chỉnh hai chiều—tiết kiệm năng lượng xuống dưới, đảm bảo hiệu năng tức thời lên trên—trên một trục điện áp-tần số duy nhất.
Thứ tự thay đổi điện áp và tần số cũng có nguyên lý. Khi nâng hiệu năng thì nâng điện áp trước để đảm bảo dư địa chịu tần số mục tiêu rồi mới nâng tần số; khi hạ thì hạ tần số trước rồi mới hạ điện áp. Đảo ngược thứ tự là vì sẽ tạo ra một khoảng nguy hiểm hoạt động ở tần số cao trong khi điện áp không đủ, có thể gây lỗi tính toán. Như vậy DVFS không chỉ đơn thuần đổi giá trị mà cần điều khiển tuần tự có tính đến thời gian chờ ổn định điện áp và thời gian khóa lại PLL, và chi phí chuyển đổi này là căn cứ cho ràng buộc "chuyển đổi quá thường xuyên là thiệt" được bàn ở sau.
Tuy nhiên, điểm bẫy của DVFS là công suất (tiêu thụ tức thời) và năng lượng (công suất × thời gian) là khác nhau. Hạ tần số thì công suất tức thời giảm nhưng mất nhiều thời gian hơn để hoàn thành cùng một công việc, và trong thời gian đó công suất tĩnh (rò) cứ tiếp tục rò. Khi tỉ trọng công suất tĩnh lớn lên ở tiến trình mới hơn, nảy sinh một nghịch lý là chạy "chậm và lâu" lại dùng tổng năng lượng thậm chí nhiều hơn so với "hoàn thành nhanh rồi ngủ". Sự đánh đổi này là điểm xuất phát của tranh luận race-to-idle được bàn ở mục sau.
Sự phân biệt này luôn phải được làm rõ khi đánh giá DVFS. Chính sách DVFS tối ưu khác nhau hoàn toàn tùy theo mục tiêu là giảm tổng năng lượng (J), như hóa đơn điện của trung tâm dữ liệu; hạ công suất tức thời (W), như nhiệt tức thời và tuổi thọ của thiết bị pin; hay giữ công suất đỉnh (peak power) dưới một giá trị nhất định, như giới hạn công suất tủ rack. Chẳng hạn nếu mục tiêu là tuân thủ trần công suất thì tốt hơn là giới hạn chính tần số tối đa dù phải hy sinh đôi chút hiệu năng trung bình, còn nếu mục tiêu là tối thiểu tổng năng lượng thì phải chọn dùng giữa race-to-idle và giữ điện áp thấp theo từng khối lượng công việc. Nhầm lẫn chỉ số mục tiêu sẽ rơi vào nghịch lý "công suất giảm nhưng hóa đơn điện vẫn như cũ".
3. Phương thức điều khiển và phân loại
Hiệu quả về hiệu năng và năng lượng của DVFS thay đổi rất nhiều theo chính sách điều khiển quyết định "khi nào và đổi điện áp, tần số bao nhiêu". Ngay trên cùng một phần cứng, tuổi thọ pin và tính phản hồi cũng khác nhau rõ rệt tùy dùng governor nào, nên chính sách điều khiển là mấu chốt quyết định thành bại của một thiết kế DVFS. Có thể chia thành vài loại theo chủ thể điều khiển và căn cứ phán đoán, và hình kiến trúc dưới đây biểu diễn vòng điều khiển từ quan sát tải đến áp dụng điện áp-tần số. Cốt lõi của vòng này là PMIC/VRM phụ trách điện áp và PLL phụ trách tần số bị tách rời về mặt vật lý, nên bộ điều khiển phải phối hợp thứ tự thay đổi và việc chờ ổn định.
sequenceDiagram
participant WL as "Khối lượng công việc (ứng dụng)"
participant OS as "Governor của OS (cpufreq)"
participant PMIC as "Bộ điều áp (PMIC/VRM)"
participant CPU as "Nhân bộ xử lý"
WL->>OS: "Truyền tín hiệu mức sử dụng CPU / bộ lập lịch"
OS->>OS: "Quyết định OPP mục tiêu (tần số/điện áp)"
OS->>PMIC: "Yêu cầu thiết lập điện áp mục tiêu"
PMIC->>CPU: "Nâng/hạ điện áp cung cấp (chờ ổn định)"
OS->>CPU: "Thay đổi tần số xung nhịp (khóa lại PLL)"
CPU-->>OS: "Hoàn tất thay đổi / phản hồi bộ đếm hiệu năng"
Note over OS,CPU: "Khi nâng thì điện áp trước, khi hạ thì tần số trước"
A. Phân loại theo chủ thể điều khiển
Thứ nhất, phương thức điều khiển bằng phần mềm OS là cách truyền thống trong đó hệ điều hành nhìn mức sử dụng CPU và thông tin bộ lập lịch để chọn tần số. Hệ thống con cpufreq của Linux là tiêu biểu, với performance (luôn cao nhất), powersave (luôn thấp nhất), ondemand/conservative (phản ứng dựa trên mức sử dụng), và governor schedutil hiện đại. schedutil định tần số bằng cách cộng thêm biên khoảng 25% vào các tín hiệu mức sử dụng CFS/RT/DL/IRQ do bộ lập lịch tổng hợp, và ở chỗ nó tích hợp bộ lập lịch với điều khiển năng lượng, nó phản ứng chính xác và nhanh hơn các governor dựa trên bộ định thời cũ.
Giới hạn của điều khiển OS nằm ở độ trễ giữa quan sát và phản ứng. Một governor dựa trên bộ định thời như ondemand nhìn mức sử dụng mỗi vài chục ms và điều chỉnh tần số, nên dễ "đánh trống bỏ dùi" với tải bùng phát như cuộn chạm ập đến rồi biến mất trong vài ms. Nó chỉ nâng tần số sau khi tải đã kết thúc, hoặc hạ muộn một tần số đã nâng để khớp với tải đã xong. Đây là lý do schedutil nhận trực tiếp tín hiệu mức sử dụng của bộ lập lịch: nó phản ánh ngay mức sử dụng tại khoảnh khắc một tác vụ thức dậy, giảm độ trễ phản ứng. Dù vậy độ trễ cỡ mili-giây của đường phần mềm không thể bị loại bỏ hoàn toàn, nên điều khiển tự chủ bằng phần cứng sau đây xuất hiện như một bổ sung.
Thứ hai, phương thức điều khiển tự chủ bằng phần cứng có đơn vị quản lý năng lượng bên trong chip tự điều chỉnh tần số theo đơn vị micro-giây nhanh hơn OS rất nhiều. Speed Shift (HWP, Hardware P-states) của Intel và CPPC của AMD thuộc loại này. OS chỉ đưa ra gợi ý về "dải hiệu năng mong muốn" và phần cứng thực hiện việc chọn tần số thực tế, loại bỏ độ trễ can thiệp của OS vốn mất vài chục mili-giây khi tải thay đổi đột ngột, nâng cao đồng thời tính phản hồi và hiệu quả. Phần cứng còn có lợi thế đưa ra phán đoán chính xác hơn và nhanh hơn, vì nó biết trực tiếp trạng thái nội bộ mà OS không thấy được (nhiệt độ, dòng điện, tỉ lệ hoạt động thực của từng nhân). Dù vậy, có trường hợp ở Linux 5.11 khi phản ánh hiệu năng mục tiêu của HWP y nguyên khiến một số khối lượng công việc đạt turbo tối đa quá nhanh và mất hiệu quả, nên logic ánh xạ đã được điều chỉnh lại. Điều này cho thấy không phải "càng giao cho phần cứng càng tốt", mà việc phân chia vai trò giữa OS và phần cứng phải được tinh chỉnh tỉ mỉ. Vì OS biết bối cảnh toàn hệ thống (tác vụ nào quan trọng) còn phần cứng biết trạng thái vật lý hiện tại, nên cách kết hợp thông tin của cả hai là mấu chốt của hiệu quả.
Thứ ba, điều khiển theo miền / không đồng nhất là phương thức chia một chip thành nhiều miền điện áp-tần số và điều chỉnh từng miền độc lập. big.LITTLE / DynamIQ của ARM gộp nhân hiệu năng cao và nhân hiệu quả cao, đổi chính nhân tùy tính chất công việc và điều khiển mỗi cụm nhân bằng DVFS riêng. EAS (Energy Aware Scheduling) của Linux tham chiếu mô hình năng lượng-hiệu năng của mỗi OPP để tính ở giai đoạn lập lịch rằng "đặt tác vụ này lên nhân nào ở tần số nào thì năng lượng là tối thiểu"; EAS được thiết kế trên tiền đề governor schedutil nơi tần số bám theo mức sử dụng, nên cả hai gắn kết chặt chẽ.
Lý do điều khiển không đồng nhất quan trọng là vì cùng một công việc nhưng hiệu quả năng lượng chênh nhau gấp nhiều lần tùy nó chạy trên nhân nào. Đặt một tác vụ nhẹ như đồng bộ hay thông báo chạy nền lên nhân hiệu năng cao thì lãng phí năng lượng, ngược lại trói một tác vụ nhạy với độ trễ như tương tác người dùng chỉ vào nhân hiệu quả thì phản hồi chậm. EAS quyết định việc bố trí này tự động dựa trên mô hình năng lượng-hiệu năng, nhưng vì nó chọn sai nếu mô hình lệch với chip thực nên độ chính xác của mô hình chi phối hiệu quả tổng thể. Nghĩa là DVFS không đồng nhất là một nỗ lực tích hợp "chạy ở đâu (lập lịch)" và "chạy nhanh bao nhiêu (governing)" dưới một hàm mục tiêu năng lượng duy nhất, và là trục cốt lõi của hiệu quả năng lượng SoC di động hiện đại.
B. Chiến lược race-to-idle
Nền tảng của chính sách điều khiển là hai triết lý: "chậm và lâu" và "hoàn thành nhanh rồi ngủ". Race-to-idle là chiến lược vội hoàn thành công việc ở tần số tối đa rồi bước vào trạng thái sleep sâu, dựa trên ý tưởng rằng công việc hoàn thành càng nhanh thì thời gian dòng rò chảy càng ngắn. Tiến trình mới hơn với tỉ trọng rò càng lớn thì càng có lợi về tổng năng lượng khi tắt hẳn thay vì lê lết ở điện áp thấp. Các nghiên cứu đo đạc thực tế báo cáo rằng vì công suất trạng thái idle nhỏ hơn nhiều so với công suất hoạt động, nên hoàn thành nhanh ở tần số cao rồi chuyển sang idle có thể hiệu quả đến mức bù trừ cho phần lợi của tối ưu công suất hoạt động. Rốt cuộc, hệ thống hiện đại dùng cả hai chiến lược cùng nhau, và điểm tối ưu thay đổi theo tỉ lệ rò-công suất động, chi phí vào idle, và việc công việc bị giới hạn bởi bộ nhớ hay bởi tính toán.
Ngược lại, rõ ràng có những trường hợp chiến lược giữ điện áp thấp có lợi. Nếu là tải thường xuyên với công việc đến không ngừng thì ngay từ đầu không có khe để vào sleep sâu, nên hạ điện áp để giảm công suất động là tốt hơn. Ngoài ra, trong những trường hợp như đoạn giới hạn bởi bộ nhớ nơi hạ tần số gây tổn thất hiệu năng nhỏ, race-to-idle chỉ lãng phí năng lượng. Thêm vào đó, trạng thái sleep sâu tốn không ít năng lượng và độ trễ để vào và ra, nên nếu đoạn idle không đủ dài thì ngủ lại là thiệt. Do đó quy tắc đơn giản "cứ hoàn thành nhanh rồi ngủ" là sai, và governor thực tế nhìn cả mẫu tải lẫn dự đoán idle và trộn hai chiến lược một cách động.
Hệ thống thực tế không dùng các chiến lược này một cách loại trừ mà xếp chồng theo tầng. Phần cứng đảm nhận việc tinh chỉnh theo đơn vị µs, governor của OS chỉ định dải theo đơn vị ms, và bộ lập lịch quyết định đặt lên nhân nào—vai trò được phân chia như vậy. Bảng dưới đây so sánh các phương thức điều khiển chính, và nên đọc không phải con số mà "nó phán đoán dựa trên gì và trả giá ra sao".
| Phương thức | Chủ thể phán đoán | Độ trễ phản ứng | Ưu điểm | Giới hạn |
|---|---|---|---|---|
| ondemand/conservative | OS (bộ định thời) | vài chục ms | đơn giản, đa dụng | kém nhạy với tải đổi đột ngột |
| schedutil | OS (liên kết bộ lập lịch) | vài ms | chính xác, liên kết EAS | phụ thuộc lựa chọn governor |
| Speed Shift/HWP, CPPC | phần cứng | vài chục µs | độ trễ cực thấp, hiệu quả cao | giảm khả năng OS quan sát |
| big.LITTLE+EAS | OS + HW không đồng nhất | vài ms | bố trí tối ưu năng lượng | phụ thuộc độ chính xác mô hình |
4. Trường hợp áp dụng và so sánh
Hiệu quả thực tế của DVFS xuất hiện khác nhau tùy hàm mục tiêu của lĩnh vực áp dụng. Ở SoC di động, Qualcomm Snapdragon và dòng Apple A/M kết hợp hàng chục OPP, nhân không đồng nhất và governor phần cứng để tăng tốc tức thời nhân hiệu năng cho những đợt bùng phát ngắn như chạm màn hình và cuộn, rồi lập tức hạ xuống nhân hiệu quả và điện áp thấp để tiết kiệm pin. Chỉ số cốt lõi ở đây không phải công suất trung bình mà là "thời lượng pin cả ngày so với tính phản hồi cảm nhận được", và độ trễ chuyển đổi DVFS phải ngắn cỡ vài chục µs thì người dùng mới không thấy chậm.
Cụ thể, nhìn vào khoảnh khắc người dùng nhấn biểu tượng ứng dụng, một nhân hiệu năng vọt lên tần số tối đa trong vài chục ms để vẽ hoạt ảnh chuyển màn hình không giật, và một khi hoạt ảnh kết thúc và màn hình tĩnh lại, nó quay về trạng thái điện áp thấp của nhân hiệu quả trong vài ms. Mẫu "tăng tốc tức thời rồi quay về ngay" này chính là hiện thực hóa race-to-idle trên di động, và nếu chuyển đổi chỉ chậm đôi chút thì khung hình hoạt ảnh bị đẩy lùi và người dùng cảm nhận là "giật" (jank). Một trong những lý do Apple tích hợp dọc OS, bộ lập lịch và điều khiển năng lượng trên SoC của mình cũng chính là để xử lý chuyển đổi này cực kỳ nhanh và tinh vi.
Ở trung tâm dữ liệu / HPC, mục tiêu hoàn toàn khác. Vì hàng nghìn nút phải chạy trong giới hạn công suất tủ rack và dung lượng làm mát, DVFS được dùng không phải cho pin của một nút riêng lẻ mà để tuân thủ tổng chi phí sở hữu (TCO) và trần công suất (power capping). Các nghiên cứu đánh giá HPC báo cáo rằng ở đoạn giới hạn bởi bộ nhớ, hạ tần số gây suy giảm hiệu năng nhỏ nên có thể tiết kiệm năng lượng, trong khi ở đoạn giới hạn bởi tính toán, hạ tần số kéo dài thời gian thực thi và trái lại có thể làm tăng tổng năng lượng. Nghĩa là cùng một DVFS cũng chia ra lợi hay thiệt tùy đặc tính khối lượng công việc.
Hãy xem trực giác về lợi/thiệt này bằng con số đơn giản. Ở một kernel giới hạn bởi bộ nhớ nơi CPU thường dừng chờ dữ liệu đến từ bộ nhớ, hạ tần số nhân 33% từ 3.0GHz xuống 2.0GHz có thể chỉ kéo dài thời gian thực thi khoảng 10%, vì độ trễ bộ nhớ chi phối. Lúc này công suất động, với việc hạ điện áp xếp chồng lên, rớt xuống dưới một nửa, nên tổng năng lượng giảm nhiều. Ngược lại, ở một kernel giới hạn bởi tính toán nơi CPU tính không ngừng, hạ tần số 33% kéo dài thời gian thực thi gần như tỉ lệ 50%, nên dù công suất tức thời giảm, thời gian dòng rò chảy dài ra và tổng năng lượng trái lại có thể tăng. Để người vận hành trung tâm dữ liệu "giữ trần công suất nhưng tối thiểu tổn thất hiệu năng" thì cần lập lịch nhận biết năng lượng áp dụng chính sách DVFS khác biệt theo từng nút và từng đoạn như vậy.
Ở nhúng / ô tô, nhiệt và độ tin cậy nổi lên hàng đầu. Vì một ECU kín không quạt hay bộ điều khiển công nghiệp bị giảm mạnh tuổi thọ khi nhiệt tích tụ, điều tiết nhiệt (thermal throttling)—hạ tần số khi tiến gần nhiệt độ tới hạn phối hợp với cảm biến nhiệt—hoạt động như một bộ mặt khác của DVFS. Trong trường hợp này mục tiêu của DVFS không phải tiết kiệm năng lượng mà là "bảo đảm hoạt động liên tục trong nhiệt độ định mức". Dù vậy, ở các hệ thống nơi tính thời gian thực quan trọng như ô tô và hàng không, DVFS trở thành con dao hai lưỡi. Vì hạ tần số kéo dài thời gian thực thi xấu nhất (WCET) và tạo rủi ro lỡ hạn chót, những hệ thống này cố định một sàn tần số cho các tác vụ liên quan an toàn hoặc chỉ cho phép DVFS một cách hạn chế. Nghĩa là sự cân bằng giữa hiệu quả năng lượng/nhiệt và bảo đảm thời gian thực phải được thiết kế một cách tường minh. Bài học xuyên suốt cả ba lĩnh vực là DVFS là một công nghệ duy nhất, song vì nó tối ưu điều gì khác nhau theo thiết kế nên tiêu chí đánh giá cũng phải khác nhau.
So sánh DVFS với các kỹ thuật lân cận làm rõ vị trí của nó. Clock gating chỉ dừng xung nhịp của các khối không dùng để giảm công suất động nhưng để nguyên điện áp nên hiệu quả hạn chế; power gating cắt hẳn nguồn của khối để loại bỏ cả rò nhưng độ trễ khởi động lại lớn. DVFS là giải pháp trung gian giữa hai cái này vốn "điều chỉnh điện áp và tần số trong khi duy trì hiệu năng", và một chip thực tế dùng cả ba kỹ thuật cùng nhau tùy tình huống. Undervolting, vốn hạ chính điện áp đến giới hạn an toàn, và AVS (Adaptive Voltage Scaling), vốn phản ánh đặc tính khác nhau của từng chip, có thể xem là các mở rộng đẩy trục điện áp của DVFS một cách quyết liệt hơn.
Hàm ý thực tiễn cần đọc từ so sánh này là ba kỹ thuật mỗi cái đảm nhận một thang thời gian khác nhau và một thành phần năng lượng khác nhau. Clock gating được dùng cho điều khiển tinh vi dừng và đánh thức khối theo đơn vị nano-giây, DVFS đổi điểm hoạt động theo đơn vị micro-giây đến mili-giây, còn power gating tắt nguyên khối trong những đoạn nghỉ trên mili-giây. Vì độ trễ khởi động lại và năng lượng chuyển đổi càng lớn thì đoạn idle phải càng dài mới sinh lợi, nhà thiết kế kết hợp ba kỹ thuật theo tầng dựa trên "khối này nghỉ bao nhiêu, nghỉ thường xuyên ra sao". Đây chính là lý do phải hiểu DVFS không như một công nghệ đứng một mình mà trên phổ các kỹ thuật quản lý năng lượng.
5. Chuyên sâu: Xu hướng mới nhất và góc nhìn an ninh
Dù DVFS là một công nghệ trưởng thành, gần đây nó vẫn tiếp tục tiến hóa, và việc nó đồng thời đang bị chỉ ra là một bề mặt tấn công mới là điều đặc biệt quan trọng từ góc nhìn của Kỹ sư chuyên nghiệp. Mục này xem xét ba dòng chảy: sự tích hợp của điều khiển, việc nhận biết ứng dụng, và nghịch lý ở khía cạnh an ninh.
Đặc biệt trong thời đại các bộ tăng tốc AI, trọng tâm của DVFS đang dịch từ một CPU đơn lẻ sang toàn bộ chip. Khi GPU và NPU tiêu thụ năng lượng khổng lồ, chi phí của các tác vụ suy luận và huấn luyện quy mô lớn trên thực tế được quyết định bởi hiệu năng tính toán trên mỗi watt. Vì vậy, điều phối năng lượng ở cấp hệ thống quản lý tích hợp DVFS của chính bộ tăng tốc, trạng thái năng lượng của bộ nhớ (HBM), và việc phân bổ ngân sách năng lượng giữa nhiều bộ tăng tốc đã trở thành năng lực cạnh tranh cốt lõi. Nó đã mở rộng vượt khỏi điện áp và tần số của một nhân đơn lẻ thành bài toán tối ưu đồng thời điểm hoạt động của hàng trăm đơn vị tính toán trong một trần công suất.
Về mặt tiến hóa công nghệ, điều khiển ngày càng đi theo hướng tích hợp phần cứng-bộ lập lịch. Như với Intel Speed Shift và AMD CPPC, phần cứng tự chủ điều chỉnh theo đơn vị µs, và Linux buộc việc lập lịch và quyết định năng lượng vào một vòng duy nhất bằng schedutil+EAS. Thêm vào đó, các khung như DTPM (Dynamic Thermal Power Management) phân bổ ngân sách năng lượng trên toàn cây thiết bị đã được đưa vào nhân Linux, phát triển thành cấu trúc nơi CPU, GPU, NPU thương lượng trên một giới hạn công suất chung. Ở các bộ tăng tốc AI và trung tâm dữ liệu, khi "hiệu năng suy luận trên mỗi watt" trở thành chỉ số cốt lõi, DVFS có xu hướng mở rộng vượt khỏi một nhân đơn lẻ sang điều phối năng lượng cấp hệ thống bao trùm cả bộ tăng tốc và bộ nhớ.
Hơn nữa, điều khiển năng lượng dựa trên học máy cũng đang được nghiên cứu và thương mại hóa. Trong khi governor dựa trên quy tắc trước đây dựa vào các suy nghiệm đơn giản như "nâng một bậc nếu mức sử dụng vượt ngưỡng", gần đây người ta thử các cách tiếp cận học mẫu khối lượng công việc để dự đoán tải của đoạn tiếp theo và đổi điểm hoạt động một cách phủ đầu. Nếu dự đoán chính xác thì có thể nâng hiệu năng chỉ vào khoảnh khắc cần thiết mà không có độ trễ phản ứng, cải thiện đồng thời năng lượng và hiệu năng cảm nhận được. Dù vậy, vì phải cân nhắc cùng lúc chi phí tính toán và bộ nhớ của chính mô hình học cũng như tổn thất khi dự đoán sai, đây vẫn là lĩnh vực đòi hỏi thiết kế thận trọng.
Một dòng chảy nữa là DVFS nhận biết phần mềm / ứng dụng. Governor trước đây chỉ dựa vào tín hiệu gián tiếp là mức sử dụng CPU mà OS quan sát, nhưng gần đây ngày càng nhiều nỗ lực liên kết các gợi ý ở cấp ứng dụng—như hạn chót dựng khung hình (game di động, màn hình), chu kỳ đến của gói mạng, ranh giới lô suy luận—vào điều khiển năng lượng. Chẳng hạn ở đoạn màn hình làm mới ở 60Hz, nó chỉ nâng tần số đủ để vẽ khung hình kịp lúc và đẩy thời gian còn lại sang điện áp thấp. Điều này nghĩa là sự dịch chuyển sang một hàm mục tiêu tinh vi hơn—"nhanh đủ để giữ hạn chót" thay vì "cứ nhanh vì mức sử dụng cao"—và cho thấy hướng DVFS cài khớp chặt chẽ với toàn bộ phần mềm hệ thống.
Về mặt an ninh, DVFS đã trở thành con dao hai lưỡi. Chính cái đặc tính rằng điện áp và tần số có thể điều chỉnh bằng phần mềm lại trở thành kênh để kẻ tấn công khai thác. Tiêu biểu, Plundervolt (CVE-2019-11157) thao túng ác ý giao diện điều chỉnh điện áp của CPU Intel để gây lỗi trong các phép tính ở vùng an toàn SGX, thành công—chỉ bằng phần mềm—một tấn công tiêm lỗi (fault injection) rút ra khóa mật mã. Ngoài ra, Hertzbleed (2022) khai thác tính chất rằng, do DVFS, tần số hoạt động thay đổi theo mức tiêu thụ năng lượng, chứng minh một tấn công kênh bên (side-channel) suy luận giá trị bí mật của phép tính mật mã chỉ bằng cách quan sát từ xa sự chênh lệch thời gian tính toán. Những trường hợp này cho thấy việc điều khiển tinh vi vì hiệu quả năng lượng có thể làm yếu đi sự cô lập và tính bí mật, và gợi ý rằng ở các đoạn tính toán quan trọng về an ninh cần một thiết kế đánh đổi hiệu năng lấy an ninh—như cố định tần số hoặc chặn truy cập vào giao diện điện áp. Thực tế, để ứng phó Plundervolt, các nhà sản xuất đã chọn vô hiệu hóa giao diện điều chỉnh điện áp bằng phần mềm trong firmware, một trường hợp từ bỏ một phần bậc tự do của DVFS vì an ninh. Tóm lại, DVFS nằm trên một sự đánh đổi ba chiều liên quan không chỉ hiệu năng và năng lượng mà cả an ninh, và nhà thiết kế phải quyết định tường minh nhượng bộ trục nào và bao nhiêu.
6. Cân nhắc và hàm ý
Chiến lược áp dụng — lập hồ sơ khối lượng công việc trước: DVFS không phải công nghệ "cứ bật là có lợi vô điều kiện". Công việc giới hạn bởi tính toán, nếu hạ tần số, có thể kéo dài thời gian thực thi và trái lại làm tăng tổng năng lượng, trong khi lợi ích lớn ở công việc giới hạn bởi bộ nhớ và nhiều chờ I/O. Do đó, trước khi định chính sách governor/OPP, phải đo đặc tính của khối lượng công việc mục tiêu (có giới hạn bởi bộ nhớ không, mẫu bùng phát, độ nhạy độ trễ) và chọn chính sách tương ứng.
Đánh đổi — cân bằng tam giác giữa năng lượng, hiệu năng và chi phí chuyển đổi: Mỗi lần đổi tần số, việc khóa lại PLL và ổn định điện áp tốn một độ trễ chuyển đổi vài µs đến vài chục µs và một lượng nhỏ năng lượng chuyển đổi. Vì chuyển đổi quá thường xuyên trái lại là thiệt, phải phối hợp biên dư của governor và chu kỳ chuyển đổi giữa tính phản hồi (độ trễ thấp), hiệu quả (năng lượng thấp) và sự ổn định (kìm hãm chuyển đổi quá mức). Vì giữa race-to-idle và giữ điện áp thấp cái nào có lợi thay đổi theo tỉ lệ rò-công suất động, cần một phán đoán tính đến cả thế hệ tiến trình.
Triển vọng — điều phối năng lượng cấp hệ thống: Trung tâm của điều khiển đang dịch từ OS sang tích hợp phần cứng-bộ lập lịch, và từ một CPU đơn lẻ sang thương lượng ngân sách năng lượng bao trùm CPU, GPU, NPU và bộ nhớ. Sắp tới DVFS sẽ định vị vượt khỏi việc điều chỉnh từng linh kiện riêng lẻ, thành một trục của bức tranh lớn hơn phân bổ ngân sách năng lượng/nhiệt của toàn chip theo thời gian thực dưới một khung như DTPM. Khi hiệu năng trên mỗi watt trở thành chỉ số cạnh tranh của thời đại AI, tầm quan trọng của nó càng lớn hơn.
Tương thích với các công nghệ liên kết: DVFS sinh ra hiệu quả trọn vẹn chỉ khi được thiết kế không đứng một mình mà cùng với clock gating, power gating, điều tiết nhiệt, quản lý trạng thái idle (C-state), và lập lịch nhân không đồng nhất (big.LITTLE, EAS). Đặc biệt, vì bộ lập lịch (chạy ở đâu) và governor (chạy nhanh bao nhiêu), nếu tách rời, sẽ lệch nhau, nên nên thiết kế và tinh chỉnh từ góc nhìn tích hợp, như với
schedutil+EAS.Cân nhắc an ninh và độ tin cậy: Như Plundervolt và Hertzbleed cho thấy, khả năng điều chỉnh điện áp và tần số bằng phần mềm có thể là kênh cho tấn công tiêm lỗi và kênh bên. Ở các đoạn tính toán nhạy cảm về an ninh, hãy áp dụng cố định tần số hoặc kiểm soát truy cập vào giao diện điện áp, và ở các hệ thống nơi an toàn chức năng quan trọng như ô tô và y tế, phải thiết kế tường minh sàn tần số trong điều kiện xấu nhất sao cho DVFS không làm tổn hại bảo đảm thời gian đáp ứng thời gian thực (WCET).
Làm rõ chỉ số mục tiêu: Trước khi lập chính sách DVFS, phải đóng đinh trước "sẽ tối thiểu hóa/ràng buộc điều gì". Tổng năng lượng (hóa đơn điện, carbon), công suất tức thời (nhiệt, tuổi thọ), công suất đỉnh (giới hạn tủ rack, cấp nguồn) là những hàm mục tiêu khác nhau, và một thiết lập làm tốt cái này có thể làm xấu cái kia. Ngay ở giai đoạn đo đạc/kiểm chứng cũng phải chọn một benchmark khớp với chỉ số này mới tránh được tối ưu hóa méo mó kiểu "công suất giảm nhưng chi phí và hiệu năng cảm nhận lại xấu đi".
Tổng hợp lại, DVFS là một kỹ thuật trưởng thành được kiểm chứng suốt hơn hai mươi năm, song vẫn là một lĩnh vực có độ khó thiết kế cao giữa những thay đổi môi trường mới như công suất tĩnh gia tăng, kiến trúc không đồng nhất, bộ tăng tốc AI và mối đe dọa an ninh. Từ góc nhìn của Kỹ sư chuyên nghiệp, DVFS nên được nhìn không như một "công nghệ hạ xung nhịp" đơn thuần mà như một bài toán thiết kế hệ thống phối hợp sự đánh đổi đa trục gồm năng lượng, hiệu năng, nhiệt, an ninh và tính thời gian thực sao cho khớp với đặc tính khối lượng công việc và mục tiêu vận hành. Đặt sự cân bằng đó ở đâu không có một đáp án cố định duy nhất, và thiết kế đúng đắn xuất phát từ việc trước hết định nghĩa hàm mục tiêu của lĩnh vực áp dụng.
Tài liệu tham khảo
- WikiChip, "Race-to-idle." https://en.wikichip.org/wiki/race-to-idle
- arXiv, "Evaluation of DVFS techniques on modern HPC processors and accelerators for energy-aware applications." https://arxiv.org/pdf/1703.02788
- The Linux Kernel Documentation, "CPU Performance Scaling (cpufreq)." https://www.kernel.org/doc/html/latest/admin-guide/pm/cpufreq.html
- Phoronix, "Linux 5.11 Intel P-State Schedutil Tuned For Better Efficiency." https://www.phoronix.com/news/Linux-5.11-P-State-Schedutil
- Plundervolt, "Software-based Fault Injection Attacks against Intel SGX." https://plundervolt.com/
- Hertzbleed Attack. https://www.hertzbleed.com/
Tóm tắt một câu: DVFS là một kỹ thuật quản lý năng lượng điều chỉnh điện áp và tần số cùng nhau để khớp tải và kéo số hạng
V²·fxuống; nhờ hiệu ứng bình phương điện áp, nó tiết kiệm năng lượng vượt trội áp đảo so với điều chỉnh tần số đơn thuần, song lợi/thiệt giữa race-to-idle và giữ điện áp thấp chia ra theo công suất tĩnh, chi phí chuyển đổi và đặc tính khối lượng công việc, và trong khi nó chống đỡ hiệu năng trên mỗi watt từ di động đến HPC, nó là một công nghệ dựa trên đánh đổi trở thành bề mặt an ninh như trong Plundervolt và Hertzbleed.