Tổng quan luận án
Công trình nghiên cứu "Một số kỹ thuật nâng cao hiệu năng phần mềm nhúng trên bộ xử lý đa nhân" được thực hiện bởi nghiên cứu sinh Bùi Hữu Phúc dưới sự hướng dẫn khoa học của PGS. Nguyễn Ngọc Bình và TS. Lê Quang Minh, tại Bộ môn Công nghệ Phần mềm, Khoa Công nghệ Thông tin, Trường Đại học Công nghệ, Đại học Quốc gia Hà Nội (bảo vệ năm 2023). Luận án thuộc chuyên ngành Công nghệ thông tin, tập trung giải quyết bài toán tối ưu hóa thời gian thực thi của phần mềm nhúng khi vận hành trên các kiến trúc phần cứng đa nhân hiện đại.
Tính cấp thiết và khoảng trống nghiên cứu
Hệ thống nhúng và thiết bị thông minh đóng vai trò cốt lõi trong nhiều lĩnh vực công nghiệp, tự động hóa, y tế, giao thông và đời sống. Theo báo cáo của The Brainy Insights (2021), thị trường hệ thống nhúng toàn cầu được dự báo tăng trưởng từ 88,35 tỷ USD năm 2020 lên 138,45 tỷ USD vào năm 2028, với tốc độ tăng trưởng kép hàng năm (CAGR) đạt 5,73% trong giai đoạn 2021-2028; riêng khu vực Châu Á - Thái Bình Dương dự báo đạt CAGR 7,65% và mảng phần mềm nhúng đạt CAGR 6,4%. Tại Việt Nam, nhu cầu nghiên cứu, đào tạo và phát triển hệ nhúng, phần mềm nhúng là cấp bách nhằm thu hẹp khoảng cách công nghệ thông tin và truyền thông với khu vực và thế giới, trong bối cảnh mối liên kết giữa viện - trường và doanh nghiệp còn hạn chế, các công ty phần mềm trong nước chủ yếu tập trung gia công hoặc phát triển ứng dụng thông thường.
Về mặt kỹ thuật, sự phát triển phần cứng theo định luật Moore đã đưa các bộ xử lý đa nhân (Chip Multi Processors - CMP) vào thay thế dần bộ xử lý đơn nhân trên các thiết bị nhúng và Internet Vạn Vật (IoT). Tuy nhiên, phần lớn các ứng dụng phần mềm nhúng hiện nay vẫn được thiết kế và lập trình theo mô hình tuần tự truyền thống, chưa khai thác được năng lực xử lý song song của các nhân phần cứng. Đồng thời, thiết bị nhúng luôn chịu các ràng buộc nghiêm ngặt về tài nguyên: năng lực tính toán của CPU, dung lượng bộ nhớ đệm và bộ nhớ chính, điện năng tiêu thụ và yêu cầu phản hồi thời gian thực. Khoảng trống nghiên cứu được tác giả xác định là:
- Việc áp dụng lập trình song song cho phần mềm nhúng gặp trở ngại lớn do chi phí điều khiển phân luồng, đồng bộ luồng và độ trễ truyền thông có thể triệt tiêu lợi ích tăng tốc;
- Khả năng mở rộng của song song hóa tác vụ bị giới hạn do tác vụ chỉ có thể phân chia đến một ngưỡng nguyên tử nhất định, nếu tiếp tục song song hóa thì chi phí phân phối sẽ vượt quá hiệu năng thu được;
- Nguy cơ mất cân bằng tải giữa các nhân khi phân phối dữ liệu đầu vào không đồng đều hoặc khi phân chia cố định cho các nhân có năng lực xử lý và cấu hình bộ nhớ không đồng nhất;
- Các kỹ thuật tối ưu hóa phần mềm đa nhân trước đây chủ yếu tập trung cho máy tính hiệu năng cao, máy chủ hoặc máy tính để bàn, thiếu các giải pháp tinh gọn, có khả năng cấu hình thích ứng trực tiếp trên mã nguồn cho môi trường nhúng.
Mục tiêu nghiên cứu
Mục tiêu tổng quát của luận án là nghiên cứu, xây dựng một tổ hợp các phương pháp và kỹ thuật nhằm rút ngắn thời gian thực thi của phần mềm nhúng trên bộ xử lý đa nhân. Luận án xác định 3 mục tiêu cụ thể được đánh số theo văn bản:
- Nghiên cứu, đánh giá thực trạng nghiên cứu về cải tiến hiệu năng của phần mềm nhúng, đặc biệt tập trung vào xử lý song song, phân vùng dữ liệu và xử lý bất đồng bộ;
- Đề xuất mô hình hóa, quy trình các kỹ thuật nâng cao hiệu năng phần mềm nhúng trên bộ xử lý đa nhân đặc biệt tập trung vào cải tiến mã nguồn phần mềm nhúng;
- Thực hiện thực nghiệm và đánh giá đối với kỹ thuật đề xuất.
Câu hỏi và bài toán nghiên cứu
Để hiện thực hóa các mục tiêu trên, luận án tập trung giải quyết 4 bài toán kỹ thuật cốt lõi:
- Xác định điều kiện ràng buộc để lựa chọn các tác vụ chính cần song song hóa, tránh tình trạng song song hóa tràn lan gây suy giảm hiệu năng so với thực thi tuần tự;
- Xây dựng mô hình không gian cấu hình mã nguồn và hàm đánh giá hiệu năng nhằm tự động tìm kiếm cấu hình song song thích hợp nhất cho từng bài toán;
- Thiết lập quy tắc phân chia dữ liệu cân bằng và cơ chế phân luồng động cho các bộ dữ liệu độc lập trên các nhân xử lý;
- Thiết lập mô hình phân vùng dữ liệu toàn cục dựa trên các tỷ lệ phần cứng của từng nhân (tốc độ xung nhịp, dung lượng bộ nhớ đệm) kết hợp cơ chế xử lý bất đồng bộ để loại bỏ thời gian chờ khóa đồng bộ.
Đối tượng và phạm vi nghiên cứu
- Đối tượng nghiên cứu: Các vấn đề, kỹ thuật có khả năng rút ngắn thời gian thực thi của phần mềm nhúng, tập trung vào các kỹ thuật khai thác đặc trưng của bộ xử lý đa nhân.
- Phạm vi nghiên cứu:
- Về khía cạnh hiệu năng: Luận án tập trung duy nhất vào chỉ số rút ngắn thời gian thực thi (giảm độ trễ), không đi sâu vào tối ưu hóa mức tiêu thụ năng lượng hay diện tích vi mạch.
- Về kỹ thuật: Nghiên cứu xử lý song song tác vụ, chuyển đổi mã nguồn tuần tự sang đa luồng, phân chia dữ liệu độc lập, phân vùng dữ liệu toàn cục và xử lý bất đồng bộ.
- Về môi trường thực nghiệm: Triển khai trên hệ điều hành Android (với máy ảo Java/Dalvik, mã nhị phân bytecode dịch ngược sang mã nguồn bậc cao) và máy tính nhúng Raspberry Pi 3 (chạy hệ điều hành nhúng, giao thức truyền thông MQTT cho IoT); đối tượng tính toán bao gồm phép tính nhân ma trận, 12 thuật toán tìm kiếm/sắp xếp cơ bản và các thuật toán mật mã khối (AES, DES, Triple DES).
Tổng quan tài liệu và vị trí của luận án
Trong Chương 1, tác giả thực hiện khảo sát có hệ thống các công trình nghiên cứu trong và ngoài nước liên quan đến tối ưu hóa phần mềm nhúng trên kiến trúc đa nhân, phân loại theo bốn nhóm chính:
[Khảo sát xử lý luồng & song song] [Tối ưu hóa đa nhân & hệ thống]
Hirzel (2014), Flouris (2017) Kornaros (2010), Posadas (2015)
Assuncao (2017), Grama (2011) Hill & Marty (2008), Chen (2019)
\ /
v v
[Khoảng trống nghiên cứu phần mềm nhúng]
- Chi phí đồng bộ luồng cao
- Mất cân bằng tải giữa các nhân
- Thiếu hàm lựa chọn cấu hình mã nguồn
/ \
v v
[Tối ưu ứng dụng di động & Android] [Xử lý bất đồng bộ & phân vùng dữ liệu]
Lee (2011), Linares-Vásquez (2014) Jagannathan (2012), Raychev (2015)
Hưởng (2015), Bình (2014) Alba (2001), Polychroniou (2014)
Các hướng nghiên cứu trước đây
-
Xử lý luồng và khai thác tính song song:
- Hirzel và cộng sự (2014) tổng hợp các phương pháp tối ưu hóa xử lý luồng dữ liệu nhưng không sử dụng xử lý song song;
- Flouris và cộng sự (2017) nghiên cứu biểu diễn truy vấn, lựa chọn sự kiện và quản lý bộ nhớ, đề cập đến tính song song nhưng chưa chú trọng nâng cao hiệu năng thời gian thực;
- Assuncao và cộng sự (2017) khảo sát kiến trúc hệ thống xử lý luồng song song trên đám mây nhưng thiếu các chiến lược song song hóa cụ thể;
- Grama và cộng sự (2011) đặt nền tảng lý thuyết lập trình song song trên bộ xử lý đa nhân với MPI, Pthreads và OpenMP.
-
Tối ưu hóa phân bổ tác vụ và kiến trúc đa nhân:
- Kornaros và cộng sự (2010) tổng quan các phương pháp tối ưu hóa đa nhân theo đơn mục tiêu hoặc đa mục tiêu;
- Posadas và cộng sự (2015) đề xuất phương pháp tối ưu hóa phân bổ tác vụ tự động cho hệ thống nhúng thời gian thực đa nhân thông qua tìm kiếm lặp, nhưng phương pháp này phải phân phối tất cả các tác vụ vào từng nhân nên phát sinh chi phí thời gian chờ và đồng bộ lớn;
- Hill và Marty (2008) phát triển mô hình dựa trên luật Amdahl cho kỷ nguyên vi xử lý đa nhân (đạt mức cải thiện trung bình 25%), tuy nhiên chưa giải quyết triệt để vấn đề chi phí di chuyển dữ liệu;
- Chen và cộng sự (2019) đề xuất đồng thiết kế phần cứng/phần mềm cho mạng trên một chip (NoC), cải thiện hiệu năng 33,1%, nhưng tỷ lệ hủy bỏ giao dịch trong bộ nhớ giao dịch phần mềm vẫn ở mức cao;
- Liu và cộng sự (2014) xây dựng bộ lập lịch bộ nhớ mức người dùng cho hệ thống đa nhân NUMA dựa trên bộ tiêu chuẩn PARSEC, đạt mức cải thiện 21%.
-
Tối ưu hóa phần mềm nhúng trên thiết bị di động (Android):
- Nghiên cứu của Nguyễn Ngọc Bình (2014) và Phạm Văn Hưởng (2015) hệ thống hóa các phương pháp tối ưu hóa phần mềm nhúng theo mô hình chữ V từ giai đoạn thiết kế, cài đặt đến thực thi;
- Các công trình của Lee và cộng sự (2011), Linares-Vásquez và cộng sự (2014), cùng các nhóm nghiên cứu liên quan chỉ ra rằng lập trình viên không thể can thiệp sâu vào nhân hệ điều hành hoặc máy ảo Dalvik trên Android mà chủ yếu can thiệp trực tiếp trên mã nguồn ứng dụng thông qua tái cấu trúc mã và chuyển đổi tuần tự sang song song.
-
Xử lý bất đồng bộ và phân chia dữ liệu:
- Jagannathan và cộng sự (2012) nghiên cứu chương trình bất đồng bộ với hàng đợi tác vụ có độ ưu tiên (task-buffer), phân rã luồng thực thi thành các tác vụ ngắn;
- Raychev và cộng sự (2015) mô hình hóa chương trình hướng sự kiện bất đồng bộ;
- Alba (2001) so sánh giải thuật di truyền song song đồng bộ và bất đồng bộ, chỉ ra rằng giải thuật bất đồng bộ loại bỏ thời gian nhàn rỗi do chờ đợi đồng bộ;
- Polychroniou và cộng sự (2014), Woods và cộng sự (2015), Kara và cộng sự (2015) nghiên cứu kỹ thuật phân vùng dữ liệu trên máy chủ đa nhân và FPGA, ghi nhận thông lượng xử lý cao nhưng đòi hỏi phần cứng phức tạp.
Khoảng trống luận án lựa chọn giải quyết
Từ việc phân tích các hạn chế của tài liệu đi trước, tác giả xác định luận án tập trung giải quyết bài toán cải tiến hiệu năng ở cấp độ mã nguồn phần mềm nhúng, hướng vào hai trục tiếp cận chính:
- Thay vì phân bổ tất cả các tác vụ hoặc song song hóa toàn bộ chương trình, luận án lựa chọn tác vụ theo quy luật Pareto kết hợp điều kiện ràng buộc để chỉ song song hóa các đoạn mã mang lại lợi ích hiệu năng thực sự;
- Thay vì phân chia dữ liệu đồng đều một cách cơ học giữa các nhân, luận án phân chia dữ liệu theo năng lực phần cứng thực tế (tốc độ xung nhịp, kích thước bộ nhớ đệm L1/L2) của từng nhân vi xử lý và chuyển từ cơ chế đồng bộ sang xử lý bất đồng bộ nhằm triệt tiêu hoàn toàn độ trễ chờ đợi khóa luồng.
Cơ sở lý thuyết và phương pháp nghiên cứu
Cơ sở lý thuyết và các khái niệm nền tảng
Luận án vận dụng hệ thống lý thuyết về kiến trúc máy tính và công nghệ phần mềm:
- Kiến trúc bộ xử lý đa nhân (CMP): Mỗi nhân tích hợp các đơn vị số học và logic (ALU), tập thanh ghi, bộ điều khiển, bộ nhớ đệm cấp 1 (L1 cache) riêng biệt cho từng nhân, trong khi bộ nhớ đệm cấp 2 (L2 cache) và bộ nhớ chính (RAM/DRAM) được chia sẻ dùng chung hoặc phân bổ theo từng khối.
- Mô hình lập trình song song Fork-Join: Luồng điều khiển chính thực hiện rẽ nhánh (Fork) thành nhiều luồng con chạy song song trên các nhân rỗi, sau đó thu nhận kết quả và hợp nhất (Join) trở lại luồng chính.
- Quy luật Pareto (80/20): Trong phần mềm, khoảng 80% thời gian thực thi thường tập trung vào 20% khối lượng mã nguồn (chủ yếu là các vòng lặp tính toán sâu hoặc các hàm xử lý dữ liệu trọng yếu).
- Mô hình xử lý đồng bộ và bất đồng bộ: Xử lý đồng bộ bắt buộc nhiệm vụ sau phải đợi nhiệm vụ trước kết thúc, làm phát sinh thời gian chờ nhàn rỗi. Xử lý bất đồng bộ cho phép các luồng thực thi độc lập, lưu trữ kết quả trung gian vào các biến dùng chung và cập nhật trạng thái thông qua cờ hiệu mà không yêu cầu khóa đồng bộ cứng.
- Kỹ thuật dịch ngược (Reverse Engineering): Sử dụng các công cụ dịch ngược để chuyển mã byte nhị phân của ứng dụng nhúng/di động thành mã nguồn bậc cao, từ đó phân tích cú pháp, trích xuất cấu trúc vòng lặp và tiến hành tái cấu trúc mã nguồn.
Khung phân tích và hệ thống công thức toán học
Luận án thiết lập hệ thống ký hiệu và công thức toán học chặt chẽ để phục vụ mô hình hóa:
| Ký hiệu |
Ý nghĩa trong luận án |
| $N$ |
Số nhân vật lý của bộ xử lý đa nhân |
| $S_i, S_{min}$ |
Tốc độ xử lý của nhân thứ $i$ và tốc độ của nhân chậm nhất trong hệ thống |
| $C_i$ |
Kích thước bộ nhớ đệm của nhân thứ $i$ |
| $D_t, D$ |
Kích thước dữ liệu ban đầu và kích thước dữ liệu của các bộ độc lập |
| $A, a, a_j$ |
Tập hợp các cấu trúc song song, cấu trúc song song cụ thể và cấu trúc đoạn thứ $j$ |
| $P, p, p_j$ |
Tập hợp bộ tham số, bộ tham số cụ thể và tham số tương ứng cấu trúc $a_j$ |
| $W, w, w_j$ |
Tập cấu hình song song, cấu hình song song cụ thể và cấu hình của đoạn thứ $j$ |
| $f, f_{ij}, f_{max}$ |
Hàm đánh giá hiệu năng, hiệu năng cấu hình $c_j$, và cấu hình đạt giá trị tối ưu |
| $r_s, r_c, r$ |
Tỷ lệ phân chia theo tốc độ, theo kích thước bộ nhớ đệm và tỷ lệ kết hợp tổng hợp |
Các công thức cốt lõi được tác giả xây dựng bao gồm:
- Điều kiện ràng buộc lựa chọn tác vụ song song (Công thức 2.6): Xác định ngưỡng mà tại đó thời gian thực thi đa luồng ($T_0$) nhỏ hơn thời gian thực thi đơn luồng ($T_1$), có tính đến chi phí phân luồng ($T$), thời gian truy xuất bộ nhớ ($T_u$), số câu lệnh trong vòng lặp ($Nc$), số lần thực hiện ($s$) và số nhân thực thi ($N_t$):
$$T_0 < T_1 \implies f(N_t, Nc, s, T, T_u) \text{ thỏa mãn ngưỡng Pareto 80/20}$$
- Hàm đánh giá lựa chọn cấu hình mã nguồn thích hợp (Hàm $f$):
$$f_{max} = \max_{w \in W} f(w, a, p)$$
Trong đó, cấu hình thích hợp nhất là cấu hình tối đa hóa hàm $f$ trên không gian cấu trúc mã nguồn và tham số điều khiển vòng lặp.
- Công thức phân luồng và kích thước dữ liệu độc lập (Công thức 3.4 và 3.7): Phân bổ kích thước dữ liệu $D_i$ và số luồng $N_i$ cho các tác vụ truyền thông điệp đến/đi ($N_r, N_s, d_r, d_s$) trong giao thức MQTT.
- Công thức phân vùng dữ liệu toàn cục (Công thức 3.17): Dữ liệu phân bổ cho nhân thứ $i$ ($D_{ri}$) dựa trên tỷ lệ tốc độ ($r_{si} = S_i / \sum S_i$), tỷ lệ bộ nhớ đệm ($r_{ci} = C_i / \sum C_i$) kết hợp hệ số tỷ lệ $\alpha, \beta$:
$$D_{ri} = D_t \cdot (\alpha \cdot r_{si} + \beta \cdot r_{ci}) \quad (\text{với } \alpha + \beta = 1)$$
Phương pháp nghiên cứu thực nghiệm
Luận án sử dụng phương pháp thực nghiệm định lượng kết hợp đo đạc đối sánh trực tiếp:
- Công cụ và nền tảng:
- Hệ điều hành Android trên thiết bị di động đa nhân;
- Máy tính nhúng đơn bo Raspberry Pi 3 (trang bị CPU ARM 4 nhân, kiến trúc 64-bit, bộ nhớ đệm L1/L2 tích hợp);
- Giao thức truyền thông MQTT cho các bài toán truyền nhận thông điệp IoT;
- Bộ thư viện mã hóa chuẩn công nghiệp: AES, DES và Triple DES (3DES) theo tiêu chuẩn FIPS/NIST.
- Quy trình đo đạc: Mỗi kịch bản thử nghiệm được lặp lại 100 lần độc lập để lấy giá trị trung bình thống kê, loại bỏ các sai số đột biến ngẫu nhiên của môi trường hệ điều hành.
Nội dung chính theo từng chương
Chương 1: Tổng quan về nâng cao hiệu năng phần mềm nhúng trên bộ xử lý đa nhân
Chương 1 hệ thống hóa cơ sở lý luận và khảo sát bối cảnh phát triển của phần mềm nhúng trên vi xử lý đa nhân. Tác giả chỉ ra rằng kiến trúc phần cứng nhúng đang dịch chuyển mạnh mẽ sang CMP nhằm đáp ứng các yêu cầu tính toán phức tạp của IoT và trí tuệ nhân tạo. Tuy nhiên, phần mềm nhúng phát triển theo mô hình chữ V truyền thống thường tối ưu hóa cục bộ ở mức biên dịch chéo hoặc tối ưu hóa thủ công mã hợp ngữ cho từng kiến trúc CPU (ARM, MIPS, PowerPC).
Chương này phân tích các rào cản chính khi chuyển đổi ứng dụng nhúng sang đa luồng, bao gồm: tranh chấp truy cập bộ nhớ dùng chung, chi phí chuyển đổi ngữ cảnh giữa các luồng, độ trễ phân phối dữ liệu và hiện tượng thắt cổ chai khi đồng bộ hóa. Từ việc phân tích các nghiên cứu liên quan, tác giả đề xuất mô hình tổng thể nâng cao hiệu năng phần mềm nhúng trên bộ xử lý đa nhân, xác định 2 hướng đột phá kỹ thuật: tiếp cận theo hướng lựa chọn tác vụ song song (triển khai trong Chương 2) và tiếp cận theo hướng song song hóa dữ liệu kết hợp bất đồng bộ (triển khai trong Chương 3).
Chương 2: Nâng cao hiệu năng dựa trên lựa chọn tác vụ xử lý song song
Chương 2 tập trung giải quyết bài toán tối ưu hóa mã nguồn ở cấp độ cấu trúc điều khiển và tác vụ chức năng, gồm hai nội dung chính:
[Chương trình tuần tự]
|
v
[Phân rã chức năng & Định vị đoạn lặp]
|
+---> Áp dụng luật Pareto 80/20 (Chọn hàm xử lý chính)
| Kiểm tra điều kiện ràng buộc Công thức (2.6)
| => Thực thi đa luồng: Giảm > 85% thời gian (Nhân ma trận)
|
+---> Đánh giá cấu trúc song song a_j và tham số p_j
Tối đa hóa hàm đánh giá hiệu năng f_max (Hàm f)
=> Chọn cấu hình tối ưu: Cải thiện 17,76% so với tuần tự
-
Lựa chọn các tác vụ xử lý theo điều kiện ràng buộc:
- Luận điểm: Không phải mọi tác vụ khi chuyển sang chạy song song đều giúp giảm thời gian chạy; nếu chi phí tạo luồng và điều khiển vượt quá khối lượng tính toán của tác vụ thì hiệu năng sẽ giảm sút.
- Phương pháp: Áp dụng quy tắc Pareto 80/20 để phân loại và lọc ra 20% các hàm tính toán tiêu tốn nhiều thời gian nhất của chương trình. Sau đó, áp dụng điều kiện ràng buộc toán học (Công thức 2.6) để xác định xem việc phân chia hàm đó cho $N_t$ luồng thực thi có đáp ứng bất đẳng thức $T_0 < T_1$ hay không.
- Kết quả thực nghiệm: Thử nghiệm với thuật toán nhân hai ma trận trên hệ điều hành Android. Sau 100 lần chạy lặp lại trên các kích thước ma trận khác nhau, phiên bản cải tiến theo điều kiện ràng buộc giúp giảm hơn 85% thời gian thực thi so với phiên bản tuần tự ban đầu.
-
Lựa chọn cấu hình mã nguồn thích hợp:
- Luận điểm: Với cùng một đoạn mã có khả năng song song, việc lựa chọn cấu trúc song song ($a_j \in A$) và các bộ tham số điều khiển vòng lặp ($p_j \in P$) khác nhau sẽ mang lại hiệu năng hoàn toàn khác nhau.
- Phương pháp: Đưa ra Định nghĩa 2.1 về cấu trúc song song, Định nghĩa 2.2 về cấu hình song song; thiết lập hàm đánh giá hiệu năng $f$. Thuật toán tiến hành duyệt không gian cấu hình $W$ để tìm kiếm cấu hình tối ưu $w_j$ đạt giá trị cực đại $f_{max}$.
- Kết quả thực nghiệm: Triển khai trên 12 chương trình đo chuẩn Android (thực hiện các giải thuật sắp xếp, tìm kiếm và biến đổi dữ liệu) với 3 phiên bản: tuần tự, song song hóa tác vụ thông thường (không chọn cấu hình), và song song hóa với cấu hình tối ưu theo hàm $f$. Kết quả đo trung bình 100 lần cho thấy phiên bản đề xuất cải thiện 17,76% thời gian chạy so với phiên bản tuần tự và cải thiện 17,30% so với phiên bản song song hóa không chọn cấu hình.
Chương 3: Nâng cao hiệu năng dựa trên xử lý song song dữ liệu
Chương 3 chuyển trọng tâm sang giải quyết bài toán song song hóa dữ liệu đầu vào và khắc phục độ trễ khóa đồng bộ, gồm hai nội dung chính:
-
Phân chia dữ liệu cân bằng và phân bổ động tới các nhân:
- Luận điểm: Các chương trình xử lý dòng dữ liệu lớn hoặc gói tin truyền thông trong hệ thống IoT cần phân phối tải cân bằng cho các nhân để loại bỏ hiện tượng nhân quá tải trong khi nhân khác nhàn rỗi.
- Phương pháp: Xây dựng định nghĩa về bộ dữ liệu độc lập và bộ dữ liệu phụ thuộc; thiết lập công thức phân luồng động (Công thức 3.4) và công thức tính kích thước gói dữ liệu phân bổ (Công thức 3.7) cho các luồng xử lý thông điệp đến ($N_r, d_r$) và thông điệp đi ($N_s, d_s$).
- Kết quả thực nghiệm: Thực hiện trên máy tính nhúng Raspberry Pi 3 với 4 chương trình truyền nhận thông điệp qua giao thức MQTT. Kết quả đo đạc thực tế chỉ ra phương pháp phân chia dữ liệu cân bằng giúp cải thiện trung bình 37% hiệu năng so với xử lý tuần tự.
-
Phân vùng dữ liệu và xử lý bất đồng bộ:
- Luận điểm: Khi các nhân của bộ vi xử lý có năng lực không đồng nhất (hoặc tần số xung nhịp và dung lượng cache khác nhau), việc chia đều dữ liệu sẽ làm chậm toàn bộ hệ thống do các nhân nhanh phải chờ nhân chậm nhất ($t_{max}$). Đồng thời, cơ chế đồng bộ hóa (Barrier/Lock) gây lãng phí chu kỳ xử lý nghiêm trọng.
- Phương pháp: Xây dựng mô hình phân vùng dữ liệu toàn cục theo Công thức 3.17, chia khối dữ liệu đầu vào tỷ lệ thuận với tốc độ xử lý ($r_s$) và dung lượng bộ nhớ đệm ($r_c$) của từng nhân. Kết hợp kỹ thuật xử lý bất đồng bộ: các luồng ghi nhận kết quả độc lập vào vùng nhớ chia sẻ, việc tổng hợp dữ liệu chỉ thực hiện một lần duy nhất tại thời điểm hoàn tất bằng cờ hiệu điều khiển.
- Kết quả thực nghiệm: Đo đạc thời gian thực thi mã hóa khối trên Raspberry Pi 3 với ba thuật toán AES, DES, Triple DES (3DES) trên các khối kích thước dữ liệu từ 1 MB đến 64 MB:
| Kích thước dữ liệu (MB) |
Thời gian mã hóa AES (ms) |
Thời gian mã hóa DES (ms) |
Thời gian mã hóa 3DES (ms) |
| 1 MB |
35,80 |
44,19 |
72,31 |
| 2 MB |
61,44 |
76,67 |
135,38 |
| 4 MB |
112,72 |
140,28 |
264,61 |
| 8 MB |
216,37 |
271,78 |
520,43 |
| 16 MB |
416,25 |
541,06 |
1.169,88 |
| 32 MB |
843,74 |
1.082,20 |
2.025,93 |
| 64 MB |
1.629,91 |
2.136,40 |
4.069,99 |
Ghi chú số liệu: Tỷ lệ cải tiến hiệu năng trung bình của phương pháp đề xuất so với thuật toán gốc đạt mức 63,01% (trong đó thuật toán AES đạt 52,29%, DES đạt 61,54%, và Triple DES đạt mức cao nhất 75,21%). Khi so sánh với các nghiên cứu tiêu biểu công bố trước đó, phương pháp của luận án đạt tỷ lệ cải thiện vượt trội: nghiên cứu của Hill và Marty [34] đạt 25%, nghiên cứu của Liu và cộng sự [36] đạt 21%, nghiên cứu của Chen và cộng sự [35] đạt 33,1% (thể hiện trực tiếp tại Hình 3.10 của văn bản).
Kết quả và những đóng góp mới
Đóng góp mới về mặt khoa học và lý luận
- Thiết lập mô hình tổng thể nâng cao hiệu năng phần mềm nhúng đa nhân: Hệ thống hóa quy trình cải tiến mã nguồn từ mức dịch ngược mã byte, phân tích phụ thuộc dữ liệu, đến tái cấu trúc mã nguồn tuần tự sang đa luồng tương thích với kiến trúc vi xử lý đa nhân.
- Phương pháp lựa chọn tác vụ theo điều kiện ràng buộc: Xây dựng cơ sở toán học (Công thức 2.6) tích hợp quy luật Pareto 80/20 nhằm sàng lọc và chỉ định chính xác các hàm tính toán trọng yếu đủ điều kiện song song hóa, giải quyết triệt để vấn đề suy giảm hiệu năng do chi phí phân phối tác vụ con vượt ngưỡng nguyên tử.
- Mô hình không gian cấu hình mã nguồn và hàm đánh giá $f$: Định nghĩa chính thức cấu trúc song song và cấu hình song song, xây dựng hàm mục tiêu $f$ nhằm tìm kiếm cấu hình tham số tối ưu cho mã nguồn đa luồng.
- Mô hình phân vùng dữ liệu toàn cục không đồng nhất kết hợp bất đồng bộ: Xây dựng công thức tính tỷ lệ phân phối khối lượng công việc dựa trên thông số phần cứng thực tế của từng nhân (tốc độ xung nhịp CPU và kích thước bộ nhớ đệm), kết hợp kiến trúc bất đồng bộ loại bỏ thời gian nhàn rỗi do chờ khóa đồng bộ luồng.
Đóng góp mới về mặt thực tiễn
- Quy trình cải tiến ứng dụng Android trên chip đa nhân: Cung cấp giải pháp kỹ thuật nâng cao tốc độ ứng dụng di động thông qua tái cấu trúc mã nguồn trực tiếp, đạt mức giảm trên 85% thời gian thực thi với phép tính ma trận và cải thiện 17,76% trên 12 chương trình giải thuật mẫu.
- Giải pháp phân luồng động cho hệ thống IoT chạy MQTT: Tối ưu hóa việc truyền nhận thông điệp trên phần cứng nhúng Raspberry Pi 3, đạt mức tăng tốc trung bình 37% so với xử lý tuần tự.
- Tối ưu hóa tốc độ thuật toán mật mã khối trên thiết bị nhúng: Triển khai giải pháp phân vùng bất đồng bộ cho các chuẩn mật mã AES, DES, 3DES, mang lại tỷ lệ tăng tốc trung bình 63,01%, giải quyết nút thắt cổ chai về độ trễ bảo mật trong truyền thông dữ liệu nhúng.
- Các công trình khoa học đã công bố: Toàn bộ các kết quả cốt lõi của luận án đã được bình duyệt và công bố trong 4 công trình khoa học uy tín:
- 01 bài báo tạp chí quốc tế thuộc danh mục Scopus: Tạp chí Informatics and Automation (2022) [CT4];
- 03 bài báo trong kỷ yếu hội thảo quốc tế và quốc gia xuất bản bởi IEEE và các nhà xuất bản chuyên ngành: Hội nghị FAIR (2017) [CT1], Hội nghị quốc tế NAFOSTED NICS (2017) [CT2], và Hội nghị quốc tế ATC (2018) [CT3].
Hạn chế và hướng nghiên cứu tiếp
Hạn chế của luận án
Văn bản luận án tự xác định các hạn chế kỹ thuật cụ thể sau:
- Chưa kết hợp đa cấp độ song song: Nghiên cứu mới khảo sát riêng rẽ song song hóa tác vụ và song song hóa dữ liệu; chưa xây dựng mô hình kết hợp đồng thời phân chia tác vụ với phân chia dữ liệu trên cùng một hệ thống.
- Bỏ qua độ trễ phân luồng: Luận án chưa tính toán chi tiết và định lượng thời gian trễ phát sinh trong quá trình khởi tạo và điều phối luồng của hệ điều hành.
- Phạm vi tối ưu hóa cục bộ: Kỹ thuật đề xuất tập trung can thiệp cục bộ vào từng mô-đun phần mềm trên thiết bị nhúng đơn lẻ, chưa mở rộng ra tối ưu hóa hiệu năng tổng thể trên toàn mạng hệ thống phân tán.
- Gia tăng chiếm dụng bộ nhớ: Việc nhân bản vùng đệm và lưu trữ dữ liệu trung gian trong mô hình xử lý bất đồng bộ làm tăng kích thước bộ nhớ RAM bị chiếm dụng.
- Hiệu quả thấp với tập dữ liệu nhỏ: Khi khối lượng dữ liệu xử lý có kích thước nhỏ, chi phí luân chuyển ngữ cảnh CPU giữa các luồng và chi phí xử lý dữ liệu trung gian lớn hơn lợi ích tính toán song song, dẫn đến hiệu năng đạt được thấp.
- Tính toán tĩnh trước thực thi: Việc phân chia dữ liệu toàn cục hiện mới chỉ tính toán cố định dựa trên cấu hình phần cứng tại thời điểm bắt đầu chạy; chưa thích ứng động khi hiệu năng của từng nhân CPU dao động trong quá trình vận hành thực tế.
- Tính tổng quát của hàm đánh giá: Hàm đánh giá hiệu năng $f$ trong lựa chọn cấu hình mã nguồn chưa đạt được dạng công thức tổng quát cho mọi bài toán mà vẫn phải xác định theo từng trường hợp cụ thể.
Hướng nghiên cứu tiếp theo
Để khắc phục các hạn chế trên, tác giả đề xuất 4 định hướng nghiên cứu tiếp theo:
- Nghiên cứu xác định hàm đánh giá hiệu năng $f$ tổng quát áp dụng cho mọi lớp bài toán phần mềm nhúng;
- Mở rộng giải pháp để xử lý các lớp bài toán đòi hỏi dữ liệu phải đồng bộ chặt chẽ;
- Thiết lập cơ chế ánh xạ cứng các luồng thực thi tới từng nhân vật lý tương ứng của bộ vi xử lý (Core Affinity);
- Xây dựng mô hình giám sát thích nghi thời gian thực để tái phân vùng dữ liệu động theo biến thiên hiệu suất tức thời của từng nhân CPU.
Giá trị tham khảo
Luận án mang lại giá trị tham khảo cụ thể cho các nhóm đối tượng học thuật và kỹ thuật:
- Nghiên cứu sinh và học viên cao học ngành Công nghệ thông tin / Kỹ thuật máy tính: Tham khảo phương pháp luận mô hình hóa toán học cho bài toán tối ưu mã nguồn; cách thiết lập điều kiện ràng buộc song song (Mục 2.1) và phương pháp xây dựng hàm mục tiêu tối ưu hóa cấu hình mã nguồn (Mục 2.2).
- Giảng viên và nhà nghiên cứu về hệ thống nhúng và IoT: Sử dụng các dữ liệu thực nghiệm đối sánh, mô hình phân vùng dữ liệu không đồng nhất (Mục 3.2) và công thức phân bổ thông điệp MQTT (Mục 3.1) làm tài liệu giảng dạy chuyên đề lập trình song song trên CMP.
- Kỹ sư phát triển phần mềm nhúng và ứng dụng di động: Vận dụng quy trình tái cấu trúc mã nguồn từ ứng dụng Android tuần tự sang đa luồng; ứng dụng trực tiếp các tham số tỷ lệ phân chia dữ liệu (tốc độ xung nhịp, kích thước cache L1/L2) để tăng tốc độ xử lý cho các thuật toán mã hóa khối (AES, DES, 3DES) trong các thiết bị cổng kết nối IoT (Gateway).
Câu hỏi thường gặp
1. Tại sao song song hóa tác vụ không phải lúc nào cũng mang lại hiệu năng cao hơn thực thi tuần tự?
Trong kiến trúc đa nhân, việc phân chia một tác vụ thành các tác vụ con sẽ đạt đến một ngưỡng nguyên tử. Nếu tiếp tục phân chia nhỏ hơn, chi phí phát sinh cho việc khởi tạo luồng, lập lịch, chuyển đổi ngữ cảnh CPU và giao tiếp/đồng bộ dữ liệu giữa các nhân sẽ lớn hơn thời gian thực thi của bản thân tác vụ đó. Do đó, luận án sử dụng quy luật Pareto 80/20 và thiết lập điều kiện ràng buộc toán học (Công thức 2.6) để chỉ song song hóa các tác vụ chính có khối lượng tính toán đủ lớn để bù đắp chi phí điều khiển.
2. Kỹ thuật lựa chọn cấu hình mã nguồn thích hợp trong Chương 2 hoạt động dựa trên nguyên lý nào?
Kỹ thuật này dựa trên việc khảo sát không gian cấu hình $W$, trong đó mỗi cấu hình $w$ là sự kết hợp giữa cấu trúc song song $a_j \in A$ của các đoạn mã với bộ tham số điều khiển tương ứng $p_j \in P$. Luận án xây dựng hàm đánh giá hiệu năng $f$ và thực hiện thuật toán tìm kiếm cấu hình thích hợp nhất sao cho giá trị của hàm $f$ đạt cực đại ($f_{max}$). Khi áp dụng cấu hình này, mã nguồn được tái cấu trúc tối ưu cho kiến trúc đa nhân, giúp cải thiện 17,76% thời gian chạy so với mã tuần tự.
3. Phương pháp phân chia dữ liệu toàn cục trong Chương 3 giải quyết hiện tượng nghẽn do không đồng nhất phần cứng ra sao?
Trên các bộ vi xử lý có các nhân sở hữu tốc độ xung nhịp hoặc dung lượng bộ nhớ đệm khác nhau, việc chia đều dữ liệu sẽ khiến các nhân nhanh phải chờ nhân chậm nhất xử lý xong. Luận án giải quyết bằng cách tính toán các tỷ lệ: tỷ lệ theo tốc độ $r_s$ và tỷ lệ theo kích thước cache $r_c$, từ đó đưa ra công thức phân vùng dữ liệu tổng hợp (Công thức 3.17). Mỗi nhân chỉ nhận khối lượng dữ liệu tỷ lệ thuận với năng lực tính toán và lưu trữ của nó, đảm bảo tất cả các nhân hoàn thành công việc ở các thời điểm gần như nhau.
4. Cơ chế xử lý bất đồng bộ được ứng dụng như thế nào trong bài toán mã hóa dữ liệu?
Trong các bài toán mã hóa khối (AES, DES, 3DES), dữ liệu đầu vào được phân thành các khối độc lập. Luận án áp dụng cơ chế bất đồng bộ bằng cách cho phép các luồng mã hóa thực thi hoàn toàn độc lập mà không cần thiết lập các rào cản đồng bộ (Barrier) trung gian. Các luồng ghi trực tiếp kết quả vào biến dùng chung và trạng thái kết thúc được kiểm soát tập trung ở giai đoạn cuối, giúp triệt tiêu thời gian chờ đợi khóa luồng và đạt tỷ lệ cải thiện hiệu năng trung bình 63,01%.
5. Những yếu tố phần cứng cụ thể nào đã được sử dụng trong các kịch bản thực nghiệm của luận án?
Luận án sử dụng hai môi trường phần cứng chính:
- Thiết bị di động thông minh chạy hệ điều hành Android đa nhân (phục vụ thực nghiệm phép nhân ma trận và 12 chương trình giải thuật mẫu trong Chương 2);
- Máy tính nhúng đơn bo Raspberry Pi 3 tích hợp bộ xử lý đa nhân ARM (phục vụ thực nghiệm truyền nhận thông điệp IoT qua giao thức MQTT và thực nghiệm mã hóa khối AES, DES, 3DES với các kích thước dữ liệu từ 1 MB đến 64 MB trong Chương 3).
Kết luận
Luận án "Một số kỹ thuật nâng cao hiệu năng phần mềm nhúng trên bộ xử lý đa nhân" của tác giả Bùi Hữu Phúc đã giải quyết trọn vẹn bài toán rút ngắn thời gian thực thi của phần mềm nhúng thông qua hai hướng tiếp cận: lựa chọn tác vụ song song theo điều kiện ràng buộc kết hợp tối ưu hóa cấu hình mã nguồn, và phân vùng dữ liệu không đồng nhất kết hợp cơ chế xử lý bất đồng bộ. Các kỹ thuật đề xuất được chứng minh tính đúng đắn thông qua hệ thống công thức toán học và kết quả thực nghiệm thực tế trên nền tảng Android và Raspberry Pi 3, đạt mức tăng tốc 17,76% đối với thuật toán tổng hợp, 37% đối với truyền thông điệp MQTT và 63,01% đối với các giải thuật mật mã khối. Mặc dù còn một số hạn chế về chiếm dụng bộ nhớ và tính toán phân vùng tĩnh, công trình đã đóng góp cơ sở lý luận và giải pháp thực tiễn quan trọng cho lĩnh vực công nghệ phần mềm nhúng trong kỷ nguyên Internet Vạn Vật.