Tối ưu phần mềm nhúng trong giai đoạn thiết kế dựa trên chuyển đổi mô hình

90 6 0
Tối ưu phần mềm nhúng trong giai đoạn thiết kế dựa trên chuyển đổi mô hình

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

ĐẠI HỌC QUỐC GIA HÀ NỘI TRƢỜNG ĐẠI HỌC CÔNG NGHỆ - - NGUYỄN THỊ THU HUYỀN TỐI ƢU PHẦN MỀM NHÚNG TRONG GIAI ĐOẠN THIẾT KẾ DỰA TRÊN CHUYỂN ĐỔI MƠ HÌNH Ngành: Cơng nghệ thơng tin Chun ngành: Kỹ thuật phần mềm Mã số: 60480103 LUẬN VĂN THẠC SỸ CÔNG NGHỆ THÔNG TIN NGƯỜI HƯỚNG DẪN KHOA HỌC: PGS.TS NGUYỄN NGỌC BÌNH Hà Nội – 2014 MỤC LỤC MỞ ĐẦU CHƢƠNG NGÔN NGỮ MIỀN CHUYÊN DỤNG VÀ CÔNG NGHỆ SINH MÃ T4 .11 1.1 GIỚI THIỆU 11 1.2 NGÔN NGỮ MIỀN CHUYÊN DỤNG .11 1.2.1 Khái niệm 11 1.2.2 Phạm vi ứng dụng DSL .12 1.2.3 Các công cụ hỗ trợ phát triển DSL .12 1.3 DSL MƠ HÌNH PHẦN MỀM NHÚNG 15 1.3.1 DSL mơ hình phần mềm nhúng 15 1.3.2 Quy trình xây dựng framework DSL xây dựng siêu mơ hình 16 1.4 CƠNG NGHỆ SINH MÃ T4 18 1.4.1 Khái niệm 18 1.4.2 Các cơng cụ tích hợp sử dụng T4 19 1.4.3 Quy trình sinh mã theo T4 19 1.4.4 Tích hợp T4 vào DSL framework để sinh mã từ mơ hình 19 CHƢƠNG CÁC PHƢƠNG PHÁP TỐI ƢU TRONG GIAI ĐOẠN THIẾT KẾ 21 2.1 TỔNG QUAN VỀ TỐI ƢU PHẦN MỀM NHÚNG 21 2.2 CÁC KHÍA CẠNH TỐI ƢU PHẦN MỀM NHÚNG 22 2.3 CÁC PHƢƠNG PHÁP TỐI ƢU PHẦN MỀM NHÚNG TRONG GIAI ĐOẠN THIẾT KẾ 24 CHƢƠNG TỐI ƢU PHẦN MỀM NHÚNG TRONG GIAI ĐOẠN THIẾT KẾ DỰA TRÊN CHUYỂN ĐỔI MƠ HÌNH 30 3.1 Ý TƢỞNG VÀ QUY TRÌNH TRIỂN KHAI .30 3.2 CÁC PHÉP BIẾN ĐỔI TRÊN MƠ HÌNH 31 3.2.1 Phân chia cấu trúc 31 3.2.2 Gộp cấu trúc 32 3.2.3 Thay đổi thứ tự mối quan hệ 33 3.2.4 Hƣớng giới hạn mối quan hệ .34 3.2.5 Tạo hoạt động đặc trƣng 34 3.2.6 Chuyển đổi thuộc tính thành tham số 37 3.2.7 Loại bỏ thuộc tính dƣ thừa 37 3.2.8 Chuyển thuộc tính thành lớp 37 3.2.9 Thu gọn kiểu liệu 37 3.2.10 Chuyển tham số thành thuộc tính 37 3.2.11 Chuyển thành phần động thành tĩnh 38 3.3 XÂY DỰNG HÀM ĐÁNH GIÁ HIỆU NĂNG VÀ BỘ NHỚ CHIẾM DỤNG 38 3.3.1 Hàm đánh giá hiệu 38 3.3.2 Hàm đánh giá nhớ 41 3.4 ĐỊNH NGHĨA DSL, XÂY DỰNG FRAMEWORK VÀ TẠO MẪU T4 41 3.4.1 Định nghĩa DSL xây dựng framework 41 3.4.2 Tạo mẫu T4 để sinh tham số tự động từ mơ hình .43 3.5 XÂY DỰNG CHƢƠNG TRÌNH TỐI ƢU DỰA TRÊN BIẾN ĐỔI MƠ HÌNH 44 3.5.1 Chuyển đổi mơ hình để tối ƣu hiệu 46 3.5.2 Chuyển đổi mơ hình để tối ƣu nhớ chiếm dụng .46 4.1 MƠ TẢ VÀ MƠ HÌNH THỰC NGHIỆM 49 4.2 THỰC NGHIỆM - ỨNG DỤNG BÀI TOÁN THÁP HÀ NỘI 49 4.2.1 Mơ tả tốn 49 4.2.2 Thiết kế lớp gốc 49 4.2.3 Biến đổi mơ hình lớp 51 4.2.4 Đánh giá hiệu lựa chọn mơ hình tốt .53 4.3 THỰC NGHIỆM - ỨNG DỤNG BÀI TỐN QN HẬU 56 4.3.1 Mơ tả toán 57 4.3.2 Thiết kế lớp gốc 57 4.3.3 Biến đổi mơ hình lớp 58 4.3.4 Đánh giá hiệu lựa chọn mơ hình tốt .61 4.4 THỰC NGHIỆM - ỨNG DỤNG SẮP XẾP KIỂU PHÂN ĐOẠN (QUICK SORT) 64 4.4.1 Mơ tả tốn 64 4.4.2 Thiết kế lớp gốc 64 4.4.3 Biến đổi mơ hình lớp 65 4.4.4 Đánh giá hiệu lựa chọn mơ hình tốt .68 4.5 THỰC NGHIỆM - ỨNG DỤNG VẼ ĐỒ THỊ 71 4.5.1 Mơ tả tốn 71 4.5.2 Thiết kế lớp gốc 71 4.5.3 Biến đổi mơ hình lớp 72 4.5.3 Đánh giá hiệu lựa chọn mơ hình tốt .76 KẾT LUẬN VÀ HƢỚNG PHÁT TRIỀN .79 TÀI LIỆU THAM KHẢO 80 PHỤ LỤC 80 DANH MỤC CÁC BẢNG Bảng 3-1 Các độ đo ảnh hƣởng đến hiệu 39 Bảng 3-2 Các tham số sử dụng để đánh giá hiệu .40 Bảng 3-3 Các lớp ngữ nghĩa trực quan siêu mơ hình 42 Bảng 4-1 So sánh hiệu thực tế chƣơng trình Bài tốn Tháp Hà Nội 56 Bảng 4-2 So sánh tỷ lệ giảm chạy chƣơng trình Bài tốn Tháp Hà Nội .63 Bảng 4-3 So sánh hiệu thực tế chƣơng trình Bài toán quân hậu .63 Bảng 4-4 So sánh tỷ lệ giảm chạy chƣơng trình Bài tốn qn hậu 63 Bảng 4-5 So sánh hiệu thực tế chƣơng trình Quick Sort 71 Bảng 4-6 So sánh tỷ lệ giảm chạy chƣơng trình Quick Sort 72 Bảng 4-7 So sánh hiệu thực tế chƣơng trình Vẽ đồ thị 77 Bảng 4-8 So sánh tỷ lệ giảm chạy chƣơng trình Vẽ đồ thị 78 DANH MỤC CÁC HÌNH Hình 1-1 Cơng cụ Microsoft DSL để định nghĩa DSL .13 Hình 1-2 Cơng cụ EMF .14 Hình 1-3 Cơng cụ GMF .14 Hình 1-4 Cơng cụ MOFScript 15 Hình 1-5 Một phần siêu mơ hình định nghĩa DSL .17 Hình 1-6 Framework DSL hỗ trợ thiết kế biểu đồ lớp 18 Hình 1-7 Các bƣớc sinh mã theo T4 19 Hình 1-8 Một mẫu đƣợc xây dựng theo T4 để sinh tham số từ biểu đồ lớp 20 Hình 2-1 Quy trình triển khai kỹ thuật tối ƣu hƣớng mơ hình 26 Hình 3-1 Quy trình triển khai 31 Hình 3-2 Ví dụ chuyển đổi phân chia cấu trúc 32 Hình 3-3 Ví dụ chuyển đổi gộp cấu trúc .32 Hình 3-4 Ví dụ chuyển đổi thay đổi thứ tự mối quan hệ 33 Hình 3-5 Ví dụ chuyển đổi hƣớng giới hạn mối quan hệ 34 Hình 3-6 Ví dụ chuyển đổi tạo hoạt động đặc trƣng 34 Hình 3-7 Ví dụ chuyển đổi lập thuộc tính tạm thời 35 Hình 3-8 Ví dụ chuyển đổi loại bỏ thuộc tính dƣ thừa 36 Hình 3-9 Ví dụ chuyển đổi thuộc tính thành lớp 36 Hình 3-10 Siêu mơ hình DSL hỗ trợ tối ƣu hiệu cho biểu đồ lớp 42 Hình 3-11 Cập nhật tham số thành phần biểu đồ 43 Hình 3-12 Một mẫu đƣợc xây dựng theo T4 để sinh tham số Name Frequence từ biểu đồ lớp .43 Hình 3-13 Tập tin đầu T4 trích xuất tham số từ biểu đồ 44 Hình 3-14 Chƣơng trình tối ƣu 45 Hình 3-15 Tính tốn hiệu năng, nhớ chiếm dụng cho biểu đồ lớp 45 Hình 3-16 Biểu đồ so sánh tối ƣu hiệu năng, nhớ chiếm dụng biểu đồ lớp 46 Hình 4-1 Mơ hình thực nghiệm 49 Hình 4-2 Biểu đồ lớp A1 50 Hình 4-3 Tệp XML biểu đồ lớp A1 .50 Hình 4-4 Thuộc tính tần số truy xuất thành phần biểu đồ lớp A1 51 Hình 4-5 Chƣơng trình thực phép phân chia cấu trúc biểu đồ lớp A 51 Hình 4-6 Mẫu T4 lấy thơng tin ngữ nghĩa từ mơ hình lớp A .52 Hình 4-7 Tệp XML đƣợc tạo từ chƣơng trình tối ƣu A 52 Hình 4-8 Mơ hình liệu A .53 Hình 4-9 Tệp tham số dựa T4 templates A .53 Hình 4-10 Tính tốn hiệu nhớ cho biểu đồ lớp A 54 Hình 4-11 Biểu đồ so sánh tối ƣu hiệu nhớ chiếm dụng biểu đồ lớp A 54 Hình 4-12 Giao diện chƣơng trình Bài tốn Tháp Hà Nội 55 Hình 4-13 Biểu đồ lớp B1 57 Hình 4-14 Tệp XML biểu đồ lớp B1 58 Hình 4-15 Thuộc tính tần số truy xuất thành phần biểu đồ lớp B1 58 Hình 4-16 Chƣơng trình thực phép phân chia cấu trúc biểu đồ lớp B 59 Hình 4-17 Mẫu T4 lấy thơng tin ngữ nghĩa từ mơ hình lớp B 59 Hình 4-18 Tệp XML đƣợc tạo từ chƣơng trình tối ƣu B 60 Hình 4-19 Mơ hình liệu B .60 Hình 4-20 Tệp tham số dựa T4 templates B 61 Hình 4-21 Tính tốn hiệu nhớ cho biểu đồ lớp B 61 Hình 4-22 Biểu đồ so sánh tối ƣu hiệu nhớ chiếm dụng biểu đồ lớp B 62 Hình 4-23 Giao diện chƣơng trình Bài tốn Qn hậu 63 Hình 4-24 Biểu đồ lớp C1 64 Hình 4-25 Tệp XML biểu đồ lớp C1 65 Hình 4-26 Thuộc tính tần số truy xuất thành phần biểu đồ lớp C1 65 Hình 4-27 Chƣơng trình thực phép phân chia cấu trúc biểu đồ lớp C 66 Hình 4-28 Mẫu T4 lấy thông tin ngữ nghĩa từ mơ hình lớp C 66 Hình 4-29 Tệp XML đƣợc tạo từ chƣơng trình tối ƣu C 67 Hình 4-30 Mơ hình liệu C .67 Hình 4-31 Tệp tham số dựa T4 templates C 68 Hình 4-32 Tính tốn hiệu nhớ cho biểu đồ lớp C 68 Hình 4-33 Biểu đồ so sánh tối ƣu hiệu nhớ chiếm dụng biểu đồ lớp C 69 Hình 4-34 Giao diện chƣơng trình Quick sort 70 Hình 4-35 Biểu đồ lớp D1 71 Hình 4-36 Tệp XML biểu đồ lớp D1 71 Hình 4-37 Thuộc tính tần số truy xuất thành phần biểu đồ lớp D1 72 Hình 4-38 Chƣơng trình thực phép phân chia cấu trúc biểu đồ lớp D .73 Hình 4-39 Mẫu T4 lấy thơng tin ngữ nghĩa từ mơ hình lớp D 73 Hình 4-40 Tệp XML đƣợc tạo từ chƣơng trình tối ƣu D 74 Hình 4-41 Mơ hình liệu D .74 Hình 4-42 Tệp tham số dựa T4 templates D 75 Hình 4-43 Tính tốn hiệu nhớ cho biểu đồ lớp D 75 Hình 4-44 Biểu đồ so sánh tối ƣu hiệu nhớ chiếm dụng biểu đồ lớp D 76 Hình 4-45 Giao diện chƣơng trình Vẽ đồ thị 77 BẢNG THUẬT NGỮ VÀ TỪ VIẾT TẮT Ký hiệu Class Codesign hardwaresoftware DSD DSL EDA EMF ES GMF IDE MDE OOP Thuật ngữ Class Codesign hardware-software Domain-specific description Domain Specific Language Electronic Design Automation Eclipse Modeling Framework Embedded System Graphical Modeling Framework Integrated Development Environment; Integrated Design Environment; Integrated Debugging Environment Model Driven Engineering T4 UML Object-oriented programming Software Performance Engineering Text Template Transformation Toolkit Unified Modeling Language XML Extensible Markup Language SPE Diễn giải Lớp Đồng thiết kế phần cứng phần mềm Mô tả miền chuyên dụng Ngôn ngữ miền chuyên dụng Thiết kế điện tử tự động Hệ thống nhúng Mơi trƣờng phát triển tích hợp; Môi trƣờng thiết kế hợp nhất; Môi trƣờng gỡ lỗi hợp Kỹ thuật hƣớng mơ hình Lập trình hƣớng đối tƣợng Công nghệ sinh mã dựa mẫu Ngôn ngữ mơ hình hóa Ngơn ngữ đánh dấu mở rộng LỜI CAM ĐOAN Tôi xin cam đoan: Luận văn “Tối ƣu phần mềm nhúng giai đoạn thiết kế dựa chuyển đổi mơ hình” cơng trình nghiên cứu độc lập Những số liệu, kết nêu luận văn trung thực, đƣợc trích dẫn có tính kế thừa, phát triển từ tài liệu, tạp chí, cơng trình nghiên cứu đƣợc công bố, website … Các giải pháp nêu luận văn đƣợc rút từ sở lý luận trình nghiên cứu thực tiễn Ngƣời cam đoan MỞ ĐẦU Hệ thống nhúng hệ thống máy tính phần mềm đƣợc gắn theo hệ thống khác để điều khiển hoạt động xử lý thơng tin hệ thống Nói theo chuẩn IEEE nhƣ [1] thì: hệ thống nhúng hệ tính tốn nằm sản phẩm, tạo thành phần hệ thống lớn thực số chức hệ thống Khi hệ tính tốn (có thể máy tính cá nhân, vi xử lý, vi hệ thống,…) đƣợc nhúng vào sản phẩm hay hệ thống cách hữu thực số chức cụ thể hệ thống ta gọi hệ thống nhúng Hệ thống nhúng thƣờng đƣợc thiết kế để thực chức chun biệt Khác với máy tính đa chức năng, chẳng hạn nhƣ máy tính cá nhân, hệ thống nhúng thực một vài chức định, thƣờng kèm với yêu cầu cụ thể bao gồm số thiết bị máy móc phần cứng chuyên dụng Trong số trƣờng hợp, hệ nhúng hoạt động nhƣ hệ thống tồn độc lập Phần mềm nhúng phần mềm tích hợp hệ thống nhúng Mục đích phần mềm nhúng nhằm điều khiển phần cứng, cho phép đáp ứng tƣơng tác ngƣời dùng cung cấp môi trƣờng để phát triển phần mềm nhúng tích hợp khác Phần mềm nhúng tạo nên phần trí tuệ sản phẩm nhúng Phần mềm nhúng ngày có tỷ lệ giá trị cao giá trị sản phẩm nhúng Chúng ta nhìn thấy sản phẩm hệ thống nhúng sống hàng ngày nhƣ ô tô, điện thoại di động, ti vi, tủ lạnh, thẻ tín dụng, phƣơng tiện vận chuyển … hay hệ thống lớn nhƣ máy móc thiết bị bệnh viện, cơng nghệ viễn thơng, tự động hóa, thiết bị lƣợng, thiết bị cảnh báo bảo vệ sản phẩm đo điều khiển Việc thiết kế chế tạo hệ thống nhúng đƣợc nƣớc phát triển quan tâm giải từ lâu, nhƣng bắt đầu phát triển với tốc độ nhanh từ năm 1970 xuất vi xử lý vi điều khiển, đáp ứng nhu cầu phát triển hệ thống điện tử, dân dụng, an ninh quốc phòng, trị chơi, cơng nghiệp hóa, tự động điều khiển nhiều quốc gia giới Tuy nhiên, việc phát triển hệ thống nhúng lâu chủ yếu phụ thuộc vào ngƣời thiết kế, kinh nghiệm phát triển hệ thống trình độ cơng nghệ ngƣời kiến trúc sƣ Điều chƣa có đảm bảo thiết kế (về phần cứng và/hoặc phần mềm) tối ƣu hay tốt điều kiện đặt thiết kế phát triển hệ thống nhúng Với phát triển nhanh chóng cơng nghệ, công nghệ vi điện tử, hệ thống chip việc thiết kế phát triển hệ thống nhúng làm tay theo kinh nghiệm ngƣời thiết kế nữa, mà cần đƣợc làm tự động và/hoặc có hỗ trợ cơng cụ thiết kế Vì thế, tự động hóa thiết kế điện tử (EDA) thành chủ đề thời ln nóng bỏng, có sức hấp dẫn cạnh tranh cao nƣớc, tập đoàn xuyên quốc gia, trung tâm nghiên cứu trƣờng đại học suốt 40 năm qua ngày có tính cạnh tranh cao, thuộc công nghệ lõi công nghệ thông tin – truyền thông Hội nghị hàng đầu giới hàng năm tự động hóa thiết kế Design Automation Conference (DAC, www.dac.com) Hoa Kỳ đƣợc năm 1973 khu vực Châu Á Thái Bình Dƣơng (ASP-DAC, http://www.aspdac.com/aspdac/bylaws) từ năm 1995 ln có sức hấp dẫn cao với giới hàn lâm giới doanh nghiệp Các nghiên cứu hội nghị quốc tế hệ thống nhúng ngày tăng, nhu cầu đào tạo phát triển hệ thống nhúng cấp bách Việt Nam, nơi nhà cơng nghiệp nƣớc ngồi muốn hợp tác với doanh nghiệp, viện nghiên cứu đại học Việt Nam để triển khai dự án liên quan đến phát triển hệ thống nhúng, có lập trình nhúng xây dựng hệ thống gồm phần cứng lẫn phần mềm kèm theo [2] Công nghệ phần mềm đặc biệt phần mềm nhúng ngày phát triển mạnh mẽ Môi trƣờng phát triển phần mềm nhúng bị giới hạn về: khả xử lý CPU, kích thƣớc nhớ, thời gian sống pin, vấn đề tiêu thụ lƣợng, vấn đề thời gian thực thiết kế phần cứng – phần mềm – codesign hardware-s Asse nhƣ: khơng thể đánh giá xác hiệu năng, mức tiêu thụ điện năng, dung lƣợng nhớ chiếm dụng … độ đo phần mềm giai đoạn thiết kế chủ yếu tập trung vào độ đo chất lƣợng (khả tái sử dụng, tính dễ báo trì …) mà chƣa tập trung vào độ đo mức thực thi (thời gian thực thi, nhớ sử dụng …), nhƣng tối ƣu giai đoạn thiết kế mang Luận văn tập trung nghiên cứu tìm hiểu phƣơng pháp tối ƣu phát triển phần mềm nhúng giai đoạn thiết kế Đó để 10 đặc tả, mơ hình, tự động sinh mã tối ƣu, độc lập tảng cho phần mềm nhúng Cụ thể phƣơng pháp tối ƣu cấu trúc liệu dựa vào chuyển đổi mơ hình Cấu trúc luận văn có chƣơng gồm chƣơng nói ngơn ngữ miền chun dụng DSL cơng nghệ sinh mã T4, nội dung tập trung nghiên cứu ngơn ngữ DSL có tích hợp cơng nghệ sinh mã T4 nhằm xây dựng framework hỗ trợ thiết kế mơ hình cấu trúc liệu phần mềm nhúng Chƣơng tập trung tìm hiểu phƣơng pháp tối ƣu phần mềm nhúng giai đoạn thiết kế để từ lựa chọn phƣơng pháp tối ƣu mà luận văn tập trung nghiên cứu phát triển thực nghiệm cho nội dung chƣơng sau Tiếp đến chƣơng với trọng tâm nghiên cứu tối ƣu phần mềm nhúng giai đoạn thiết kế dựa chuyển đổi mơ hình, chúng tơi tập trung tìm hiểu kỹ thuật chuyển đổi mơ hình áp dụng giai đoạn thiết kế phần mềm nhúng để thực tối ƣu hiệu hay nhớ chiếm dụng Chƣơng xây dựng hệ thống thử nghiệm, cài đặt số phép biến đổi với số ứng dụng Cuối phần kết luận hƣớng nghiên cứu phát triển tiếp luận văn 76 Hình 4-44 Biểu đồ so sánh tối ƣu hiệu nhớ chiếm dụng biểu đồ lớp D Biểu đồ Hình 4-44 kết tối ƣu hiệu tối ƣu nhớ chiếm dụng Trong biểu đồ này, muốn tối ƣu hiệu biểu đồ lớp D2 đƣợc lựa chọn có hiệu tốt hơn, giá trị hàm mục tiêu nhỏ biểu đồ lớp D1 đƣợc lựa chọn muốn tối ƣu nhớ có nhớ chiếm dụng tốt hơn, giá trị hàm mục tiêu nhỏ Kết tối ƣu nhớ chiếm dụng đƣợc sử dụng để đánh giá xem mơ hình chiếm dụng nhớ nhiều hơn, không cài đặt chƣơng trình để kiểm tra kết tối ƣu nhớ chiếm dụng mà cài đặt chƣơng trình để kiểm tra kết tối ƣu hiệu Sau thực tối ƣu hiệu từ biểu đồ lớp, chúng tơi cài đặt chƣơng trình khác tƣơng ứng với với mơ hình lớp để thực thi kiểm tra hiệu thực tế Tập lệnh thuật tốn chƣơng trình giống nhau, chƣơng trình khác cấu trúc loại thuộc tính Điều nhằm tránh ảnh hƣởng phần cài đặt đến việc đánh giá mức mơ hình Cuối cùng, thực chƣơng trình, thống kê đánh giá hiệu thực nghiệm so với phƣơng pháp cài đặt Mỗi chƣơng trình thực chúng tơi vẽ hàm f(x) = sin(x), - Độ trễ (ms): =2, chƣơng trình chạy 20 lần mơi trƣờng thực tế, tính thời gian thực thi trung bình để đánh giá hiệu thực tế chƣơng trình theo mơ hình ban đầu mơ hình tối ƣu Giao diện chƣơng trình kết đƣợc thống kê bảng 77 Hình 4-45 Giao diện chƣơng trình Vẽ đồ thị Bảng 4-7 So sánh hiệu thực tế chƣơng trình Vẽ đồ thị Thực nghiệm 4/1 Chƣơng trình Chƣơng trình Lần 4025 4023 Lần 3996 3998 Lần 3998 3997 Lần 3998 3997 Lần 3998 3996 Lần 3998 3996 Lần 3996 3997 Lần 3997 3996 Lần 3996 3997 Lần 10 3997 3997 Lần 11 3996 3996 Lần 12 3997 3997 Lần 13 3996 3996 Lần 14 3997 3996 Lần 15 3996 3996 Lần 16 3996 3998 Lần 17 3997 3996 Lần 18 3997 3997 Lần 19 3996 3996 Lần 20 3996 3996 Trung bình (ms) 3998.15 3997.9 78 Từ kết so sánh hiệu tính tốn mơ hình ban đầu mơ hình tối ƣu có tỷ lệ giảm 0.4%, thời gian chạy thực tế chƣơng trình Vẽ đồ thị cài đặt mơ hình ban đầu mơ hình tối ƣu có tỷ lệ giảm 0.00625% Bảng 4-8 So sánh tỷ lệ giảm chạy chƣơng trình Vẽ đồ thị Mơ hình lớp Ban đầu Tối ƣu Tỷ lệ giảm Hiệu tính tốn Thời gian thực (ms) 15744 3998.15 15680 3997.9 0.4065040650406% 0.0062528919625% Ngồi ra, chúng tơi tiến hành thực nghiệm số chƣơng trình đơn giản khác nhƣ Game Snake, Mã tuần thu đƣợc kết tƣơng tự Tổng kết chƣơng Cho đến khơng có nhiều nghiên cứu tối ưu phần mềm nhúng dựa chuyển đổi mơ hình Cụ thể so với nghiên cứu Anne Keller “Tối ưu cấu trúc liệu phần mềm nhúng mức mơ hình” (Optimizing Abstract Data Types in Embedded Applications at Modeling Level), luận văn tơi có quy trình xây dựng DSL hỗ trợ thiết kế mơ hình liệu ứng dụng tích hợp cơng nghệ sinh mã T4 để trích suất tham số từ mơ hình Ngồi luận văn có chương trình tối ưu hóa cài đặt phép biến đổi phân chia cấu trúc chuyển thành phần động thành tĩnh cài đặt công thức đánh giá hiệu nhớ chiếm dụng từ biểu đồ lớp, để từ so sánh lựa chọn biều đổ lớp tối ưu Kết thực nghiệm kiểm chứng cho nghiên cứu 79 KẾT LUẬN VÀ HƢỚNG PHÁT TRIỀN Tối ƣu dựa biến đổi mơ hình hƣớng tối ƣu theo cách tiếp cận đánh giá trực tiếp mơ hình đƣợc quan tâm nghiên cứu nhƣng gặp nhiều thách thức Do luận văn phát triển phƣơng pháp tối ƣu phần mềm nhúng dựa biến đổi mơ hình xây dựng chƣơng trình tối ƣu nhƣ công cụ hỗ trợ Từ biểu đồ lớp phân tích tham số, xây dựng hàm đánh giá hiệu mức chiếm dụng nhớ để sử dụng làm tiêu chí lựa chọn Các phép biến đổi mơ hình đƣợc xây dựng để chuyển đổi mơ hình ban đầu sang mơ hình tối ƣu Quá trình tối ƣu đƣợc tiến hành tự động dựa ngôn ngữ miền chuyên dụng (DSL) công nghệ sinh mã T4 Cụ thể lý thuyết, luận văn bổ sung tham số vào hàm đánh giá hiệu từ mơ hình phần mềm, tìm hiểu hàm đánh giá nhớ ba phép biến đổi để tối ƣu hiệu Về thực nghiệm, luận văn xây dựng framework DSL, T4 để thiết kế sinh thông tin đặc tả, tham số tự động xây dựng chƣơng trình tối ƣu cho phép chuyển đổi mơ hình để tối ƣu hiệu năng, dung lƣợng nhớ chiếm dụng, xây dựng chƣơng trình cài đặt so sánh hàm đánh giá hiệu nhớ chiếm dụng Mặc dù thu đƣợc số kết khả quan nhƣng vấn đề tối ƣu giai đoạn thiết kế nhiều thách thức tốn tối ƣu dựa chuyển đổi mơ hình cần đƣợc giải đầy đủ tự động Trong luận văn này, giới hạn tốn khơng xét đến tính kế thừa cấu trúc nhƣ tính bao gói phạm vi truy xuất thành phần bên cấu trúc Mở rộng cho nghiên cứu tiếp sau, chúng tơi tiếp tục nghiên cứu sâu tối ƣu dựa chuyển đổi mơ hình đầy đủ xét mơ hình động nhƣ mơ hình tuần tự, mơ hình trạng thái; đánh giá khía cạnh khác mơ hình nhƣ tính cấu trúc, tính bao gói, tính kế thừa khả tái sử dụng Ngoài tiến hành thực nghiệm đầy đủ phép biến đổi lại kết hợp phép biến đổi để tối ƣu 80 TÀI LIỆU THAM KHẢO Tiếng việt Phạm Thƣợng Cát, “Hệ thống nhúng phát triển công nghệ thông tin”, Tạp chí Tin học Điều khiển, Tr 1-9, 2005 Nguyễn Ngọc Bình, ”Cơng nghệ phần mềm nhúng”, Nhà xuất Đại học quốc gia Hà Nội, Tr xii-xvi, 1-11, 2014 Tiếng anh Anne Keller, Optimizing Abstract Data Types in Embedded Applications at Modeling Level, November 2006 Armita Peymandoust, Tajana Simunic, Giovanni De Micheli, “Low Power Embedded Software Optimization using Symbolic Algebra”, 2002 Angyoon Oh and Geoffrey C Fox, “Optimizing Web Service Messaging Performance in Mobile Computing’, Community Grids Lab, Indiana University, Bloomington, Indiana, 47404, USA 2008 Feeney, L & Nilsson, M., “Investigating the energy consumption of a wireless network interface in an ad hoc networking environment”, IEEE INFOCOM, 2001, Forum Nokia, “Optimizing the Client/Server Communication for Mobile Applications”, February 28, 2003 J L Bentley Programming pearls: Little languages Communications of the ACM, 29(8):711–721, August 1986 Liu, T.; Sadler, C.; Zhang, P & Martonosi, M., “Implementing software on resource-constrained mobile sensors: experiences with impala and zebranet” Proceedings of the 2nd international conference on Mobile systems, applications, and services, 2004 10 Makiko Itoh, Yoshinori Takeuchi, Masaharu Imai, and AkichikAkichika Shiomi: "Synthesizable HDL Generation for Pipelined Processors from a Micro-Operation Description," IEICE Transactions on Fundamentals of 81 Electronics, Communications and Computer Sciences, Vol E83-A, No 3, pp 394-400, March 2000 Embedded Systems in UML - Stephen J Mellor 11 Michalis Anastasopoulos, Thomas Forster, and Dirk Muthig, “Optimizing Model-driven Development by deriving Code Generation Patterns from Product line architectures”, D-67661 Kaiserslautern, Germany, 2005 12 Nattawut Thepayasuwan, Alex Doboli “Hardware-software co-design of resource constrained systems on a chip”, Distributed Computing Systems Workshops, Proceedings 24th International Conference, pp 818-823, Mar 2004 13 N N Binh, M Imai, A Shiomi, N Hikichi, and J Sato, "A New Method for Hardware/Software Codesign of Pipelined Instruction Set Processor" Proceedings of 6th Tokai-shibu Electric Conference, Nov 1994 14 P.H Salus, editor Little Languages, volume III of Handbook of Programming Languages MacMillan, 1998 15 Pospiech F, Olsen S “Embedded software in the SoC world How HdS helps to face the HW and SW design challenge” IEEE, pp:653 – 658, 2124 Sept 2003 16 Poole, J., “Model-driven architecture: Vision, standards and emerging technologies” Workshop on Metamodeling and Adaptive Object Models, ECOOP, 2005 17 P.V Huong, N.N Binh, “Class Diagram Based Evaluation of Software Performance”, Proceedings of The 2012 International Conference on Information and Digital Engineering (ICIDE 2012), SPIE, Vol 8768, pp 211-217, Singapore, 10/2012 (DOI: 10.1117/12.2008322, http://spie.org/x648.html?product_id=2008322) 18 Quan Long, Zhiming Liu, Xiaoshan Li, and He Jifeng Consistent Code Generation from UML Models In ASWEC ’05: Proceedings of the 2005 Australian conference on Software Engineering, pages 23–30,Washington, DC, USA, 2005 IEEE Computer Society 19 Sangyoon Oh, Mehmet S Aktas, Marlon Pierce, Geoffrey C Fox, “Optimizing Web Service Messaging Performance Using a Context Store for Static Data” 20 Sanna Sivonen, “Domain-specific modelling language and code generator for developing repository-based Eclipse plug-ins”, ESPOO 2008 21 Vivy Suhendra, “Memory optimizations for time – Predictable embedded software”, A Thesis the degree of doctor, national university of Singapore 2009 82 22 Wonchul Lee, Wonyong Sung, “Software optimization of MPEG audio layer3 for a 32bit RISC processor”, APCCAS '02 Asia-Pacific Conference, Vol 1, pp 435-438, Oct 2002 23 Yong-Yoon Cho, Jong-Bae Moon, and Young-Chul Kim, “A System for Performance Evaluation of Embedded Software”, Engineering and Technology 2005 24 Zhihui Yang, “A Domain-Specific modeling approach for ComponentBased software”, The doctor degree, Muncie, Indiana, 2009 Danh sách website 25 http://tndhuy.wordpress.com/2011/06/15/domain-specific-language-invisual-studio/ 26 http://www.rose-hulman.edu/Users/faculty/young/CS-Classes/csse490mbse/SlidePDFs/session15.pdf 27 http://www.olegsych.com/2007/12/text-template-transformation-toolkit/ 28 http://bupbegiandon.wordpress.com/ 29 http://msdn.microsoft.com/en-us/subscriptions/cc677256.aspx 30 http://www.olegsych.com/2007/12/ 83 PHỤ LỤC Mã chƣơng trình toán “Tháp Hà Nội” protected override void OnPaint(PaintEventArgs e) { Graphics gr1 = e.Graphics; Pen pen1 = new Pen(Color.Blue, 5); // cột gr1.DrawRectangle(pen1, 100, 200, 5, 250); pen1.Width = 10; gr1.DrawEllipse(pen1, 32, 420, 150, 50); // cột pen1.Width = 5; gr1.DrawRectangle(pen1, 295, 200, 5, 250); pen1.Width = 10; gr1.DrawEllipse(pen1, 225, 420, 150, 50); // cột pen1.Width = 5; gr1.DrawRectangle(pen1, 500, 200, 5, 250); pen1.Width = 10; gr1.DrawEllipse(pen1, 430, 420, 150, 50); } private void Form1_Load(object sender, EventArgs e) { this.Top = 1; // vị trí đặt form 1,1 hình this.Left = 1; player.URL = "nhac.wav"; } public void chuyen(int n, int x_di, ref int d_thapDi, int x_Den, ref int d_thapDen) { // // delay // hoanh = this.piBo[n - 1].Location.X; tam = this.piBo[n - 1].Size.Width;// rong cua dia tam = tam / 2; switch (x_Den) 84 { case 25: x_Den = x_Den + (75 - tam); break; case 235: x_Den = x_Den + (60 - tam); break; case 435: x_Den = x_Den + (65 - tam); break; } // muc đích để chuyển tháp đƣợc cột Thread.Sleep(1000); //tạm dừng chƣơng trình this.piBo[n - 1].Location = new Point(hoanh, 100); Thread.Sleep(1000); this.piBo[n - 1].Location = new Point(270, 100); Thread.Sleep(1000); //tạm dừng chƣơng trình this.piBo[n - 1].Location = new Point(x_Den, d_thapDen); //x_di = x_Den; d_thapDen -= 10; d_thapDi += 10; // //delay // } private void chuyenthap(int n, int x_goc, int d_thapGoc, int x_thapDich, int d_thapDich, int x_tam, int d_tam) { if (n < 1) return; else { if (n == 1) { this.chuyen(1, x_goc, ref d_thapGoc, x_thapDich, ref d_thapDich); } else { this.chuyenthap(n - 1, x_goc, d_thapGoc, x_tam, d_tam, x_thapDich, d_thapDich);// chuyen n-1 dia tren sang cot tam de chuyen tang duoi cung đến cot đích this.chuyen(n, x_goc, ref d_thapGoc, x_thapDich, ref d_thapDich); // chuyển đĩa dƣới đến tháp đích this.chuyenthap(n - 1, x_tam, d_tam, x_thapDich, d_thapDich, x_goc, d_thapGoc); // chuyen n-1 dia nam tren dia lon nhat o cot dich } } } 85 Mã chƣơng trình tốn “8 qn hậu” private void btnStart_Click(object sender, EventArgs e) { DateTime Start = new DateTime(); DateTime End = new DateTime(); Stopwatch s1 = Stopwatch.StartNew(); Start = DateTime.Now; GeneticAlgo geneticAlgo = new GeneticAlgo(); List initPopulation = GetInitialPopulation((int)txtPop.Value); if(chkPorgress.Checked) geneticAlgo.progress +=new Progress(updateProgress); progressBar1.Maximum = (int)txtGen.Value; progressBar1.Value = 0; geneticAlgo.DoMating(ref initPopulation, (int)txtGen.Value, (double)txtCrosProb.Value, (double)txtMutProb.Value); dgResults.Rows.Clear(); for (int i = 0; i < initPopulation.Count - 1; i++) { String sol = "| "; for (int j = 0; j < 8; j++) { sol = sol + initPopulation[i].genes[j] + " | "; } dgResults.Rows.Add(new Object[] { sol, initPopulation[i].fitness }); } board1.Genes = initPopulation[0].genes; s1.Stop(); End = DateTime.Now; // System.TimeSpan y = End.Subtract(Start); string x = ""; x = "Start time: " + Start.ToString() + " " + Start.Millisecond.ToString() + "ms;" + " End time:" + End.ToString() + " " + End.Millisecond.ToString() + "ms;" + " Execution time: " + Convert.ToString(s1.ElapsedMilliseconds) + "ms"; MessageBox.Show(x); } private void updateProgress(int progress) 86 { progressBar1.Value = progress; int percent = (int)(((double)(progressBar1.Value progressBar1.Minimum) / (double)(progressBar1.Maximum - progressBar1.Minimum)) * 100); using (Graphics gr = progressBar1.CreateGraphics()) { gr.DrawString(percent.ToString() + "%", SystemFonts.DefaultFont, Brushes.Black, new PointF(progressBar1.Width / (gr.MeasureString(percent.ToString() + "%", SystemFonts.DefaultFont).Width / 2.0F), progressBar1.Height / - (gr.MeasureString(percent.ToString() + "%", SystemFonts.DefaultFont).Height / 2.0F))); } } private List GetInitialPopulation(int population) { List initPop = new List(); GeneticAlgo RandomGen = new GeneticAlgo(); for (int i = 0; i < population; i++) { List genes = new List(new int[] {0, 1, 2, 3, 4, 5, 6, 7}); Chromosome chromosome = new Chromosome(); chromosome.genes = new int[8]; for (int j = 0; j < 8; j++) { int geneIndex = (int)(RandomGen.GetRandomVal(0,genes.Count-1)+0.5); chromosome.genes[j] = genes[geneIndex]; genes.RemoveAt(geneIndex); } initPop.Add(chromosome); } return initPop; } Mã chƣơng trình “Sắp xếp kiểu phân đoạn” 87 public bool PerformSort() { bool bOK = false; if (nData != null) bOK = ExecuteActualSort(0, nData.GetUpperBound(0), true); return bOK; } // Sort the whole array in either ascending or descending order // Parameters: // bool bAscend: true - sort in ascending order // : false - sort in descending order public bool PerformSort(bool bAscend) { bool bOK = false; if (nData != null) bOK = ExecuteActualSort(0, nData.GetUpperBound(0), bAscend); return bOK; } // Sort the array between a low and high bound in either ascending or descending order // Parameters: // int nFirst : must be between and the upper bound of the array // : will be clamped to zero if out of range // int nLast : must be between and the upper bound of the array // : must be greater than nFirst // : will be clamped to the upper bound of the array if out of range // bool bAscend: true - sort in ascending order // : false - sort in descending order public bool PerformSort(int nFirst, int nLast, bool bAscend) { bool bOK = false; if (nData != null) { int nUpperBound = nData.GetUpperBound(0); 88 if (nFirst < 0) nFirst = 0; else if (nFirst > nUpperBound) nFirst = 0; if (nLast nUpperBound) nLast = nUpperBound; if (nFirst < nLast) bOK = ExecuteActualSort(nFirst, nLast, bAscend); } return bOK; } // Sort the array between a low and high bound in either ascending or descending order // Parameters: // int nFirst : between and the upper bound of the array // int nLast : between and the upper bound of the array // : will be greater than nFirst // bool bAscend: true - sort in ascending order // : false - sort in descending order private bool ExecuteActualSort(int nFirst, int nLast, bool bAscend) { bool bSortOK = false; try { int i, j, nStkPtr = 0, nTmp; bool bSortCompleted = false, bDirection = true; // get the maximum size of stack required: int nStackMax = (int)((Math.Log(nLast) + 3) * 2); // from Knuth Vol // Note, +3 is added because: // +1 to round up rather than down, // +1 because it's a full bottom-up stack (ie Stack[0] is never used), // +1 because data array is zero-indexed int[,] nStack = new int[nStackMax, 2]; 89 { { i = nFirst; j = nLast; bDirection = true; { if ((nData[i] > nData[j]) == bAscend) { // Swap the two items in the list pointed to by i and j nTmp = nData[i]; nData[i] = nData[j]; nData[j] = nTmp; bDirection = !bDirection; } if (bDirection) j ; else i++; } while (i < j); if (i + < nLast) { // There's another partition to be sorted nStkPtr++; nStack[nStkPtr, 0] = i + 1; nStack[nStkPtr, 1] = nLast; } nLast = i - 1; } while (nFirst < nLast); if (nStkPtr == 0) { // No more partitions to sort, so by definition we've finished! bSortCompleted = true; 90 } else { // Pop the most recently stored partition and sort that nFirst = nStack[nStkPtr, 0]; nLast = nStack[nStkPtr, 1]; nStkPtr ; } } while (!bSortCompleted); bSortOK = true; } catch { } return bSortOK; } ... nghiên cứu tối ƣu phần mềm nhúng giai đoạn thiết kế dựa chuyển đổi mơ hình, chúng tơi tập trung tìm hiểu kỹ thuật chuyển đổi mơ hình áp dụng giai đoạn thiết kế phần mềm nhúng để thực tối ƣu hiệu... 2.3 CÁC PHƢƠNG PHÁP TỐI ƢU PHẦN MỀM NHÚNG TRONG GIAI ĐOẠN THIẾT KẾ 24 CHƢƠNG TỐI ƢU PHẦN MỀM NHÚNG TRONG GIAI ĐOẠN THIẾT KẾ DỰA TRÊN CHUYỂN ĐỔI MƠ HÌNH 30 3.1 Ý TƢỞNG VÀ QUY... phƣơng pháp dựa mô phỏng, phƣơng pháp tối ƣu dựa phân chia phần cứng – phần mềm (đồng thiết kế) Ba hƣớng tiếp cận để đánh giá tối ƣu phần mềm giai đoạn thiết kế: Tối ưu dựa kỹ nghệ hiệu phần mềm (SPE)

Ngày đăng: 16/03/2021, 12:29