Tối ưu mã chương trình

Một phần của tài liệu LUẬN VĂN: PHÁT TRIỂN, TỐI ƯU THUẬT TOÁN ADAPTIVE PAGE LAYOUT TRÊN THIẾT BỊ NHÚNG docx (Trang 26 - 30)

4 Giải pháp

4.4 Tối ưu mã chương trình

Thực hiện các phép so sánh

Tất cả các chỉ lệnh của hệ vi xử lý ARM đều có 4 bit gọi là các bit điều kiện, chỉ lệnh chỉ được thực hiện khi giá trị của tất các bit này đều là true. Vì vậy khi thực hiện nhiều phép so sánh được nhóm lại có thể loại trừ việc thực thi một số chỉ lệnh qua các bit điều kiện đó. Do đó khi lập trình tôi sẽ nhóm các phép so sánh lại thành một phép toán (nếu có thể) ví dụ (a > 0 & b > 0 & c < 0 & d < 0). Các phép so sánh này đã được nhóm lại sẽ được xử lý nhanh hơn. Các phép

CHƯƠNG4: GIẢI PHÁP

so sánh a > 0, b > 0, c < 0, d < 0 đã được nhóm lại qua đó tiết kiệm được thực hiện một số chỉ lệnh.

Một điểm đặc biệt nữa khi thực hiện các phép so sánh là kiến trúc vi xử lý ARM sẽ thực hiện việc so sánh với 0 nhanh hơn so với các giá trị khác, khi thực hiện phép so sánh ARM sẽ thực thi chỉ lệnh CMP trong tập lệnh nếu đó là phép so sánh với 0 thì kiến trúc vi xử lý ARM sẽ bỏ qua không tiếp tục thực thi chỉ lệnh này đồng thời sẽ bật các cờ N hoặc Z, N là khi số so sánh âm, Z là khi số so sánh là 0. Qua đó việc so sánh sẽ thực hiện nhanh hơn so với các số thông thường. Ta có thể tiết kiệm thời gian tính toán bằng cách thực hiện việc so sánh với 0 khi có thể, ví dụ trong vòng lặp sau:

f o r( i = 0 ; i <= n ; i + + ) . . . .

Có thể thay thế bằng đoạn mã sau:

f o r( i = n ; i >= 0 ; i − −) . . .

Thay vì thực hiện so sánh i với n tại mỗi vòng lặp, ta sẽ so sánh i với 0.

Sử dụng kiểu dữ liệu

kiến trúc vi xử lý ARM tính toán với kiểu dữ liệu unsigned nhanh hơn kiểu dữ liệu thông thường do đó khi có thể nên dùng kiểu dữ liệu unsigned, toàn bộ các dữ liệu đầu vào của thuật toán APL đều là số không âm do đó có thể hoàn toàn sử dụng kiểu dữ liệu unsigned khi xử lý dữ liệu đầu vào.

Đối với các biến cục bộ hay khi truyền tham số tránh sử dụng các biến kiểu char hoặc short bởi khi khởi tạo các kiểu dữ liệu này biến cục bộ sẽ là 8 bit hoặc 16 bit, do đó thanh ghi phải dịch chuyển 24 hoặc 16 bit để thực hiện phép toán, điều này sẽ tốn thêm 1 hoặc 2 chỉ lệnh còn đối với kiểu dữ liệu int thanh ghi không phải thực hiện phép dịch này. Do đó toàn bộ biến cục bộ và tham biến trong mã nguồn chương trình đều sử dụng kiểu dữ liệu int hoặc unsigned int.

CHƯƠNG4: GIẢI PHÁP

Tối ưu hàm trong chương trình

Số tham số của hàm cũng quyết định tới tốc độ xử lý của kiến trúc vi xử lý ARM. Các chỉ lệnh dùng để gọi hàm của ARM bao gồm 2 loại:

Các chỉ lệnh nhỏ BL, ... MOVE pc, lr thời gian thực hiện rất nhanh tuy nhiên chỉ gọi được các hàm có ít hơn 4 tham số.

Các chỉ lệnh LDM và TDM cần sử dụng stack để lưu các tham số khi gọi hàm tuy nhiên

cho phép gọi hàm với nhiều tham số, thời gian thực hiện lâu hơn so với loại chỉ lệnh ở trên.

Do đó các hàm trong chương trình cần được thiết kế với ít hơn 4 tham số để tận dụng các chỉ lệnh gọi hàm nhanh hơn.

Sử dụng các hàm inline đối với các hàm có số câu lệnh ít ví dụ đối với hàm Mul(int a, int b) của phép nhân dấu phảy tĩnh ta sử dụng

i n l i n e Mul ( i n t a , i n t b ) ;

Sử dụng hàm inline cho giảm thời gian lưu mã vào thanh ghi đồng thời có thể giảm số lần thực hiện các chỉ lệnh ví dụ đối trong hàm inline khi thực hiện các chỉ lệnh ADD và MUL kiến trúc vi xử lý ARM sẽ thay thế bằng việc sử dụng chỉ lệnh MLA giúp tăng tốc thực hiện chương trình.

CHƯƠNG 5

Demo, thực nghiệm

5.1 Thử nghiệm trên ARM

Tôi tiến hành thực hiện việc cài đặt thuật toán APL khi chưa tối ưu và sau khi đã tối ưu trên ARM. Chương trình được chạy trên board Amardillo9 sử dụng chip ARM920T, 200MHz, 64MB DRAM, hệ điều hành là Embedded Debian (Linux Kernel Version 2.6). Sạu đó tôi cài đặt chương trình mô hình hóa dữ liệu sức khỏe sử dụng thuật toán APL như một mô đun để biểu diễn dữ liệu.

5.1.1 Cài đặt thuật toán APL

Dữ liệu đưa vào là file chứa chiều dài và chiều rộng của các hình khối, sử dụng thuật toán APL để đưa ra kết quả là danh sách các chiều dài chiều rộng mới. Các hình khối có thể được biểu diễn một cách đơn giản như các hình chữ nhật đơn giản được vẽ trên màn hình (sử dụng thư viện đồ họa X11), các hình khối được sắp xếp trên màn hình có thể thấy trên hình 5.1 và 5.2 (ứng với thử nghiệm thuật toán APL chưa tối ưu và tối ưu).

Việc tối ưu không gian chết thử nghiệm trên ARM đạt được kết quả rất rõ rệt, kết quả tối ưu về không gian có thể thấy qua bảng 5.1 và đồ thị 5.3. Qua bản kết quả có thể thấy trung bình không

Một phần của tài liệu LUẬN VĂN: PHÁT TRIỂN, TỐI ƯU THUẬT TOÁN ADAPTIVE PAGE LAYOUT TRÊN THIẾT BỊ NHÚNG docx (Trang 26 - 30)

Tải bản đầy đủ (PDF)

(44 trang)