Với sự phát triển của công nghệ bán dẫn, các bộ vi xử lý ngày càng mạnh hơn và hỗ trợ phát triển phần mềm trên những ngôn ngữ cấp cao như C/C++, việc tạo ra một khung chương trình nền so
Trang 1ĐẠI HỌC QUỐC GIA TP HCM
TRƯỜNG ĐẠI HỌC BÁCH KHOA
Trang 2Cán bộ chấm nhận xét 1: TS Nguyễn Đức Thái
Cán bộ chấm nhận xét 2: TS Bùi Trọng Tú
Luận văn thạc sĩ được bảo vệ tại Trường Đại học Bách Khoa, ĐHQG Tp HCM ngày 14 tháng 06 năm 2012
Thành phần Hội đồng đánh giá luận văn thạc sĩ gồm:
1 TS Nguyễn Thanh Bình (Chủ tịch hội đồng)
2 TS Nguyễn Thanh Hiên (Thư ký hội đồng)
3 TS Nguyễn Đức Thái (Phản biện 1)
4 TS Bùi Trọng Tú (Phản biện 2)
5 TS Đinh Đức Anh Vũ (Ủy viên)
Xác nhận của Chủ tịch Hội đồng đánh giá LV và Trưởng Khoa quản lý chuyên ngành sau khi luận văn đã được sửa chữa (nếu có)
CHỦ TỊCH HỘI ĐỒNG TRƯỞNG KHOA…………
Trang 3ĐẠI HỌC QUỐC GIA TP.HCM
TRƯỜNG ĐẠI HỌC BÁCH KHOA
CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
Độc lập - Tự do - Hạnh phúc
NHIỆM VỤ LUẬN VĂN THẠC SĨ
Họ tên học viên: VŨ CHÍ HIẾU MSHV: 09070437
Ngày, tháng, năm sinh: 15-09-1978 Nơi sinh: Bình Định Chuyên ngành: Khoa học Máy tính Mã số: 604801
I TÊN ĐỀ TÀI:
Xây dựng hệ điều hành thời gian thực cho ứng dụng đồng hồ trên vi xử
lý S1C17704 với tiêu chí tiêu thụ năng lượng thấp.
II NHIỆM VỤ VÀ NỘI DUNG:
Nghiên cứu và xây dựng hệ điều hành thời gian thực cho ứng dụng đồng
hồ trên vi xử lý S1C17704 với tiêu chí tiêu thụ năng lượng thấp
III NGÀY GIAO NHIỆM VỤ : 04-07-2011
IV NGÀY HOÀN THÀNH NHIỆM VỤ: 15-05-2012
V CÁN BỘ HƯỚNG DẪN: TS ĐINH ĐỨC ANH VŨ
Tp HCM, ngày 15 tháng 05 năm 2012
TRƯỞNG KHOA ….………
Trang 4góp nhiều ý kiến quý báu và tạo điều kiện thuận lợi để tôi thực hiện luận văn
Tôi xin gửi lời cảm ơn của mình tới gia đình và bạn bè, những người đã hỗ trợ tôi trong suốt quá trình học tập và nghiên cứu tại trường Đại học Bách Khoa TP Hồ Chí Minh
TP Hồ Chí Minh, tháng 05 năm 2012
Người thực hiện
Vũ Chí Hiếu
Trang 5TÓM TẮT
Đồng hồ điện tử số ra đời từ thập niên 70 của thế kỷ 20 và trải qua nhiều giai đoạn phát triển cho đến nay Lúc mới ra đời đồng hồ điện tử số chỉ có các chức năng cơ bản như xem giờ, xem ngày tháng, đồng hồ bấm giờ (stopwatch) và đồng
hồ đếm ngược (countdown timer) với phần cứng đơn giản bao gồm bộ vi xử lý, phím nhấn và màn hình hiển thị Tuy nhiên với sự phát triển của công nghệ bán dẫn trong việc tạo ra các bộ vi xử lý mạnh hơn với dòng tiêu thụ thấp hơn cùng với việc tích hợp các chức năng khác nhằm tạo tính cạnh tranh, đồng hồ điện tử số hiện tại không chỉ đơn thuần dùng để xem giờ mà nó còn cung cấp nhiều chức năng khác để thỏa mãn yêu cầu ngày càng cao của người sử dụng Đồng hồ điện tử số hiện nay được xem như đồng hồ đa chức năng vi tính hóa (computerized multi-function watch) với các chức năng tích hợp khác như đo áp suất, đo độ cao, đo nhiệt độ, đo
độ sâu, la bàn điện tử, GPS, … Việc phát triển phần mềm cho đồng hồ điện tử số trước kia chủ yếu là sử dụng hợp ngữ (assembly language) với tài nguyên phần cứng rất hạn chế và thường dựa trên kinh nghiệm lập trình của người viết chương trình Tuy nhiên với việc các chương trình phần mềm cho đồng hồ ngày càng phức tạp, việc phát triển dựa trên hợp ngữ và kinh nghiệm của người lập trình không còn phù hợp để cho ra các phần mềm có chất lượng trong thời gian ngắn Với sự phát triển của công nghệ bán dẫn, các bộ vi xử lý ngày càng mạnh hơn và hỗ trợ phát triển phần mềm trên những ngôn ngữ cấp cao như C/C++, việc tạo ra một khung chương trình nền (software platform) để giúp việc phát triển phần mềm cho các ứng dụng đồng hồ là điều cần thiết nhằm giảm thời gian phát triển chương trình và tạo ra các chương trình có chất lượng trong thời gian ngắn nhất có thể Đề tài nghiên cứu tập trung xây dựng hệ điều hành thời gian thực cho việc phát triển các ứng dụng đồng hồ điện tử số trên vi xử lý S1C17704 của Seiko Epson với tiêu chí tiêu thụ năng lượng thấp Phần trọng tâm của đề tài tập trung nghiên cứu việc quản lý các tác vụ trên hàng đợi phân cấp kết hợp với xung đồng hồ hệ thống động nhằm giảm năng lượng tiêu thụ trong khi vẫn đáp ứng được các yêu cầu về thời gian thực thi
Trang 6display However with the development of semiconductor technology, the more powerful processors with lower power consumption with the integration of other functions, electronic digital watch is currently not only use for time viewing but also provides many other functions to satisfy the increasing requirements of users Electronic digital watch is now considered as a computerized multi-function watch with integrated functions such as pressure, altimeter, temperature, depth meter, electronics compass, GPS, The software development of electronic digital watch
in the past mostly based on assembly language with limited hardware resources and often based on the experience of programmer However with the increasingly complex of software programs, the software development based on the assembly language and the programmer's experience is no longer suitable to produce quality software in a short time Together with the development of semiconductor technology, the processor has more powerful and supports software development in the high-level language like C/C++, creating a framework based (software platform)
to help the development of application software for electronic digital watch is necessary This can help to reduce development time and make a quality program in the shorter time This study focuses on building a real-time operating system for developing applications of electronic digital watch on the S1C17704 processor of Seiko Epson with low energy consumption criteria In this study, I focus on the management of task in a multi-level task queue with dynamic system tick to reduce power consumption while meeting the requirements of the deadline execution time
of tasks
Trang 7LỜI CAM ĐOAN
Tôi xin cam đoan nội dung luận văn này là công trình nghiên cứu khoa học của tôi Các kết quả của luận văn là trung thực và chưa từng được ai khác công bố trong bất kỳ công trình nào khác
TP Hồ Chí Minh, tháng 05 năm 2012
Người thực hiện
Vũ Chí Hiếu
Trang 8Chương 1: MỞ ĐẦU 1
1.1 Động cơ nghiên cứu 1
1.2 Mục tiêu của Software Platform 2
1.3 Mục tiêu và nhiệm vụ của luận văn 2
1.3.1 Mục tiêu của đề tài 2
1.3.2 Bài toán cần giải quyết 3
1.3.3 Phạm vi nghiên cứu – nhiệm vụ của luận văn 3
1.4 Phương pháp nghiên cứu 3
1.5 Đóng góp của nghiên cứu 4
1.5.1 Về giải thuật 4
1.5.2 Về mục tiêu 4
1.6 Cấu trúc luận văn 4
Chương 2: TỔNG THUẬT CÁC CÔNG TRÌNH LIÊN QUAN 7
2.1 Tối ưu hóa năng lượng tiêu thụ trong hệ thống thời gian thực 7
2.2 Tối ưu bộ nhớ trong hệ thống nhúng 11
Chương 3: CƠ SỞ LÝ THUYẾT 12
3.1 Hệ điều hành thời gian thực 12
3.1.1 Khái niệm hệ thống thời gian thực 12
3.1.2 Lịch sử phát triển hệ điều hành 12
3.1.3 Hệ điều hành thời gian thực (RTOS) 15
3.1.3.1 Khái niệm hệ điều hành thời gian thực 15
3.1.3.2 Scheduler 16
3.1.3.3 Các đối tượng (Objects) 23
3.1.3.4 Dịch vụ 23
3.1.3.5 Các đặc tính chính của hệ điều hành 23
3.2 Vi xử lý S1C17704 26
Trang 93.2.1 Giới thiệu họ vi xử lý S1C17 của Seiko Epson 26
3.2.2 Vi xử lý S1C17704 28
3.3 Các đặc tính của phần mềm ứng dụng đồng hồ 30
Chương 4: GIẢI PHÁP, KIẾN TRÚC VÀ HIỆN THỰC HỆ THỐNG 32
4.1 Giải pháp 32
4.1.1 Động cơ 33
4.1.2 Giải pháp 34
4.2 Kiến trúc hệ thống 37
4.2.1 API 38
4.2.2 Hàng đợi tác vụ phân cấp (Hierarchical Task Queue) 38
4.2.3 Scheduler phân cấp (Hierarchical Scheduler) 38
4.2.4 Trình quản lý ngắt 39
4.2.5 Lớp giao tiếp phần cứng (Hardware Access Layer) 39
4.3 Hiện thực hệ thống 39
4.3.1 Công cụ phát triển và ngôn ngữ lập trình 39
4.3.2 Các cấu trúc dữ liệu sử dụng trong hệ điều hành 40
4.3.2.1 Khối điều khiển tác vụ (Task Control Block) 40
4.3.2.2 Khối điều khiển sự kiện (Event Control Block) 41
4.3.2.3 Khối điều khiển Semaphore (Semaphore Control Block) 42
4.3.2.4 Khối điều khiển hàng đợi tin nhắn (Message Queue Control Block) 42
4.3.3 Hiện thực các khối chức năng 43
4.3.3.1 Hàng đợi tác vụ phân cấp (Hierarchical Task Queue) 43
4.3.3.2 Hàng đợi tác vụ sẵn sàng (Ready Task Queue) 44
4.3.3.3 Scheduler phân cấp 45
4.3.3.4 Giao tiếp giữa các tác vụ (intertask communication) 47
4.3.3.5 Trình điều khiển thiết bị 47
4.3.4 Hiện thực thời gian thực 48
Chương 5: THỰC NGHIỆM VÀ ĐÁNH GIÁ 49
5.1 Phần cứng thử nghiệm 49
5.2 Phần mềm thử nghiệm 50
Trang 106.1 Kết luận 55
6.2 Hướng phát triển 55
PHỤ LỤC: BÀI BÁO KHOA HỌC 56
TÀI LIỆU THAM KHẢO 66
Trang 11DANH MỤC HÌNH
Hình 2.1 - Sơ đồ chuyển đổi chế độ tiêu thụ năng lượng của a) Strong ARM
SA-1100 và b) M16C (nguồn [31]) 9
Hình 2.2 - Mô hình đề xuất của [31] 9
Hình 2.3 - Mô hình chuyển đổi trạng thái các tác vụ [25] 11
Hình 3.1 - Góc nhìn cấp cao của một RTOS bao gồm kernel, và các thành phần khác trong các hệ thống nhúng (nguồn [20]) 15
Hình 3.2 - Các thành phần chính trong kernel của một RTOS (nguồn [20]) 16
Hình 3.3 - Đa nhiệm sử dụng chuyển đổi ngữ cảnh (nguồn [20]) 17
Hình 3.4 - Lập lịch dựa trên độ ưu tiên với pre-empty (nguồn [20]) 20
Hình 3.5 - Lập lịch theo round-robin và pre-empty (nguồn [20]) 22
Hình 3.6 - Sơ đồ khối của S1C17704 (nguồn Seiko Epson) 30
Hình 4.1 - Sự thực thi của CPU trong hệ thống thời gian thực 33
Hình 4.2 - Hàng đợi tác vụ phân cấp 34
Hình 4.3 - Sự thực thi tác vụ của hệ thống khi T1, T2 và T3 đều tích cực 35
Hình 4.4 - Sự thực thi tác vụ của hệ thống khi chỉ có T3 tích cực 36
Hình 4.5 - Hàng đợi phân cấp cho 3 nhóm tác vụ T1, T2 và T3 36
Hình 4.6 - Sự thực thi tác vụ của hệ thống khi mức 1 không tích cực 36
Hình 4.7 - Sự thực thi tác vụ của hệ thống khi mức 1 và mức 2 không tích cực 37
Hình 4.8 - Kiến trúc của hệ điều hành đề nghị 37
Hình 4.9 - Ví dụ về hàng đợi tác vụ phân cấp 43
Hình 4.10 - Hàng đợi tác vụ sẵn sàng 44
Hình 4.11 - Chuyển đổi FirstReady khi tác vụ được thực thi 44
Hình 4.12 - Chuyển đổi trạng thái ở hàng đợi phân cấp và hàng đợi sẵn sàng khi xung đồng hồ hệ thống ở mức 2 tích cực và T12 ở trạng thái FINISHED 46
Hình 4.13 - Chuyển đổi tác vụ đang thực thi và cập nhật hàng đợi sẵn sàng 47
Hình 5.1 – Đo dòng tiêu thụ của CPU trong thử nghiệm 51
Hình 5.2 - Dòng tiêu thụ của CPU khi sử dụng hàng đợi phân cấp và xung đồng hồ hệ thống động 53
Hình 5.3 - Dòng tiêu thụ của CPU khi sử dụng hàng đợi một cấp và xung đồng hồ hệ thống cố định 54
Trang 12Bảng 5.2 - Bảng mô tả các chế độ thử nghiệm 52
Trang 13DANH MỤC CÁC TỪ VIẾT TẮT
Từ viết tắt Từ đầy đủ tiếng Anh Từ đầy đủ tiếng Việt
API Application Programming
Interface
Giao diện lập trình ứng dụng
CPU Central Processing Unit Bộ xử lý trung tâm
DVS Dynamic Voltage Supplies Cung cấp điện áp động
GPOS General Purpose Operating
System
Hệ điều hành đa dụng
GPS Global Positioning System Hệ thống định vị toàn cầu
ISR Interrupt Service Routine Trình phục vụ ngắt
LCD Liquid Crystal Display Màn hình tinh thể lỏng
NMI Non-Maskable Interrupt Ngắt không có khả năng tắt
PDA Personal Digital Assistant Thiết bị kỹ thuật số hỗ trợ cá nhân PWM Pulse Width Modulation Điều chế độ rộng xung
RAM Random Access Memory Bộ nhớ truy cập ngẫu nhiên
RISC Reduced Instructions Set
Computer
Máy tính với tập lệnh đơn giản hóa
ROM Read Only Memory Bộ nhớ chỉ cho phép đọc
RTOS Real-Time Operating System Hệ điều hành thời gian thực
TCB Task Control Block Khối điều khiển tác vụ
Trang 14tính cạnh tranh, đồng hồ điện tử số hiện tại không chỉ đơn thuần dùng để xem giờ
mà nó còn cung cấp nhiều chức năng khác để thỏa mãn yêu cầu ngày càng cao của người sử dụng Đồng hồ điện tử số hiện nay được xem như đồng hồ đa chức năng vi tính hóa (computerized multi-function watch) với các chức năng tích hợp khác như
đo áp suất, đo độ cao, đo nhiệt độ, đo độ sâu, la bàn điện tử, GPS, …
Bên cạnh việc tạo ra các bộ vi xử lý ngày càng mạnh hơn với nhiều tính năng hơn các công cụ phát triển phần mềm cũng được hỗ trợ ngày càng nhiều trên những ngôn ngữ cấp cao như C, C++, Java …
Việc phát triển phần mềm cho đồng hồ điện tử số trước đây chủ yếu sử dụng hợp ngữ (assembly language) với tài nguyên phần cứng rất hạn chế và thường dựa trên kinh nghiệm lập trình của người viết chương trình Tuy nhiên với việc các chương trình phần mềm cho đồng hồ ngày càng phức tạp và các môi trường phát triển phần mềm đều hỗ trợ các ngôn ngữ lập trình cấp cao, việc phát triển dựa trên hợp ngữ và kinh nghiệm của người lập trình không còn phù hợp để cho ra các phần mềm có chất lượng trong thời gian ngắn
Hiện nay trên thị trường có khá nhiều nền tảng phần mềm (software platform)
và nhiều hệ điều hành thời gian thực Tuy nhiên chưa có một software platform thực
sự nào được xây dựng chuyên biệt cho ứng dụng đồng hồ để đáp ứng yêu cầu riêng biệt của các ứng dụng này Việc tạo ra một software platform để giúp việc phát triển phần mềm cho các ứng dụng đồng hồ là điều cần thiết nhằm giảm thời gian phát triển và tạo ra các chương trình có chất lượng trong khi vẫn đảm bảo thời lượng sử dụng pin Việc thực hiện thành công đề tài sẽ giúp cho việc phát triển các ứng dụng đồng hồ trở nên dễ dàng hơn và tạo thuận lợi trong việc phát triển lĩnh vực đồng hồ
Trang 151.2 Mục tiêu của Software Platform
Đề tài nghiên cứu tập trung đưa ra một software platform cho việc phát triển các ứng dụng đồng hồ điện tử số dưới hình thức một hệ điều hành thời gian thực trên vi xử lý S1C17704 của Seiko Epson với tiêu chí tiêu thụ năng lượng thấp Mục tiêu tổng thể của software platform này là cung cấp một môi trường phát triển các ứng dụng đồng hồ với các tiêu chí quan trọng là:
• Hiện thực đơn giản và dễ bảo trì
• Tính linh hoạt trong việc kế thừa
• Dễ dàng khi chuyển đổi phần cứng
• Tiêu thụ năng lượng thấp
Software platform được phát triển theo mô hình hệ điều hành thời gian thực (Real-Time Operating Systems)
1.3 Mục tiêu và nhiệm vụ của luận văn
1.3.1 Mục tiêu của đề tài
Đề tài xây dựng một hệ điều hành thời gian thực cho việc phát triển các ứng dụng đồng hồ điện tử số trên vi xử lý S1C17704 của Seiko Epson với tiêu chí tiêu thụ năng lượng thấp Đề tài tập trung xây dựng một hệ điều hành thời gian thực nhỏ gọn, đáp ứng được các yêu cầu của việc phát triển các ứng dụng đồng hồ điện tử số với khả năng dễ dàng mở rộng và chuyển đổi sang các vi xử lý khác Đồng thời đề tài cũng tập trung nghiên cứu việc tạo ra các khe thời gian (time-slice) linh động trong quá trình thực thi các tác vụ nhằm giảm năng lượng tiêu thụ trong khi vẫn đáp ứng được các yêu cầu về thời gian thực thi các tác vụ
Trang 16một là cải tiến việc tiêu thụ năng lượng trong hệ thống nhúng thời gian thực hay nói cách khác là đưa ra một mô hình cải tiến cho hệ điều hành thời gian thực nhằm giảm năng lượng tiêu thụ trong quá trình thực thi các tác vụ; hai là tối ưu hóa bộ nhớ on-chip sử dụng trong hệ thống thời gian thực
1.3.3 Phạm vi nghiên cứu – nhiệm vụ của luận văn
Do giới hạn thời gian thực hiện luận văn, tôi không thể giải quyết cả hai bài toán trên Trong phạm vi luận văn này, tôi chỉ tập trung giải quyết bài toán thứ nhất: đưa ra một mô hình cải tiến cho hệ điều hành thời gian thực nhằm giảm năng lượng tiêu thụ trong quá trình thực thi các tác vụ Cụ thể hơn, đề tài này tập trung nghiên cứu, đưa ra giải pháp khắc phục vấn đề lãng phí năng lượng của hệ điều hành thời gian thực trong việc thực thi các tác vụ tuần hoàn (periodic tasks) Giải pháp đưa ra cũng chính là phần trọng tâm của đề tài đó là mô hình quản lý các tác vụ tuần hoàn phân cấp và xung nhịp hệ thống động (dynamic system tick)
1.4 Phương pháp nghiên cứu
Phương pháp nghiên cứu của tôi là nghiên cứu lý thuyết về hệ điều hành thời gian thực (Real-Time Operating Systems), các phương pháp tiết kiệm năng lượng trong hệ thống thời gian thực Sau đó dựa trên các yêu cầu của ứng dụng đồng hồ và cấu trúc của vi xử lý S1C17704 nhằm xác định bài toán cần giải quyết Từ đó tôi sẽ nghiên cứu và đưa ra giải pháp cho bài toán vừa xác định Việc đánh giá giải pháp được thực hiện dựa trên lý thuyết và thực nghiệm với dữ liệu là các tác vụ tiêu biểu của một đồng hồ điện tử số
Trang 171.5 Đóng góp của nghiên cứu
• Bộ lập lịch (Scheduler) sẽ quản lý cấp tác vụ thay vì quản lý từng tác vụ riêng lẻ
• Tùy thuộc vào tập tác vụ tại từng thời điểm khác nhau mà xung nhịp hệ thống sẽ thay đổi nhằm giảm năng lượng tiêu thụ
1.6 Cấu trúc luận văn
Luận văn bao gồm 6 chương, nội dung được phân bố như sau:
Chương 1: Mở đầu
Chương này giới thiệu tổng quan về đề tài nghiên cứu, bao gồm các nội dung sau:
Trang 18• Trình bày cấu trúc của luận văn
Chương 2: Tổng thuật các công trình liên quan
Nội dung chính của chương này trình bày các nghiên cứu liên quan đến đề tài
từ đó định hướng cho giải pháp của luận văn
Chương 3: Cơ sở lý thuyết
Nội dung của chương này gồm ba phần: phần đầu trình bày cơ sở lý thuyết của
hệ điều hành thời gian thực, phần thứ hai trình bày sơ lược về kiến trúc và đặc điểm của vi xử lý S1C17704 và phần thứ ba sẽ giới thiệu các đặc tính của phần mềm ứng dụng đồng hồ
Chương 4: Giải pháp, Kiến trúc và Hiện thực hệ thống
Nội dung của chương này gồm ba phần Phần thứ nhất là kiến trúc cho hệ điều hành thời gian thực cho đồng hồ Phần thứ hai cũng là phần trọng tâm nghiên cứu của đề tài, phần này sẽ trình bày giải pháp quản lý các tác vụ tuần hoàn một cách hiệu quả nhằm giảm năng lượng tiêu thụ của hệ thống Phần cuối trong chương này
sẽ trình bày chi tiết việc hiện thực hệ thống
Chương 5: Thực nghiệm và đánh giá
Trình bày chi tiết toàn bộ các thử nghiệm, thống kê và đánh giá kết quả
Chương 6: Kết luận và hướng phát triển
Tóm tắt lại những gì luận văn đã thực hiện được Nhận xét ngắn gọn về luận văn Chỉ ra hai hướng phát triển trong tương lai Thứ nhất là việc mở rộng giải pháp
Trang 19cho các tác vụ không tuần hoàn (aperiodic tasks) Thứ hai là tối ưu hóa bộ nhớ chip trong hệ thống thời gian thực
Trang 20on-yêu cầu hoạt động ở tốc độ cao, hỗ trợ nhiều chức năng phức tạp nhưng phải tiêu thụ năng lượng thấp Nhìn chung các cách tiếp cận trong việc giảm năng lượng tiêu thụ trong thiết kế có trong tất cả các cấp độ thiết kế: cấp độ mạch, cấp độ linh kiện, cấp độ kiến trúc, cấp độ trình biên dịch, cấp độ hệ điều hành và cấp độ mạng Tuy nhiên trong phạm vi của đề tài, chỉ các cách tiếp cận trên cấp độ hệ điều hành sẽ được đề cập ở đây Cách tiếp cận giảm năng lượng tiêu thụ ở cấp độ hệ điều hành dựa trên ý tưởng là tắt các chức năng phần cứng khi không sử dụng hoặc điều chỉnh hiệu suất phần cứng khi nhu cầu sử dụng thay đổi để giảm năng lượng tiêu thụ Việc tắt các khối chức năng khi không sử dụng có thể là tắt các khối chức năng ngoại vi hoặc các khối chức năng trong các bộ vi xử lý Điều chỉnh hiệu suất phần cứng là trên một phần cứng có sẵn, việc phần mềm chạy trên phần cứng sao cho hiệu quả và tối ưu năng lượng tiêu thụ mà vẫn đảm bảo các yêu cầu thiết kế
Các nghiên cứu liên quan đến việc giảm năng lượng tiêu thụ của hệ thống thời gian thực đều dựa trên các cơ sở sau: các bộ vi xử lý hiện nay hầu hết đều cung cấp nhiều chế độ hoạt động với các mức tiêu thụ điện năng khác nhau, các hệ thống thời gian thực hầu hết đều có hệ số sử dụng (utilization) bộ vi xử lý nhỏ hơn 100% Các nghiên cứu hiện nay hầu hết đều tiếp cận theo hướng sử dụng các chế độ hoạt động khác nhau của bộ vi xử lý tùy vào số tác vụ thực thi và yêu cầu đáp ứng của chúng
để giảm điện năng tiêu thụ
Trong nghiên cứu của Aydin và các cộng sự vào năm 2001 [1], tác giả đưa ra một giải pháp cho các tác vụ thời gian thực tuần hoàn với đặc tính năng lượng tiêu
thụ khác nhau Nghiên cứu này cho thấy, một tác vụ T i có thể thực thi ở tốc độ liên
tục S i tại tất cả các thời điểm mà không gây ảnh hưởng đến việc tối ưu Công trình
Trang 21đưa ra giải thuật với độ phức tạp O(n 2 log n) để tính toán giá trị tối ưu S i Công trình cũng chứng minh rằng việc lập lịch theo phương pháp EDF (Earliest Deadline First)
có thể được sử dụng để có được một lịch trình khả thi với các giá trị tốc độ tối ưu trên
Một nghiên cứu khác của Aydin và các cộng sự vào năm 2001 [2], tác giả đưa
ra giải pháp lập lịch chú trọng đến điện năng cho các tác vụ tuần hoàn thời gian thực cứng bằng cách thay đổi điện áp động (Dynamic Voltage Scaling – DVS) Công trình đưa ra giải pháp bao gồm ba phần: (a) một giải pháp tĩnh (off-line) để tính toán tốc độ tối ưu, với giả sử các tác vụ đều thực thi với thời gian thực thi xấu nhất (worse-case execution time), (b) một cơ chế giảm tốc độ động (on-line) để giảm năng lượng tiêu thụ bằng cách điều chỉnh tốc độ tương ứng với khối lượng công việc thực tế, và (c) cơ chế tốc độ động, thích ứng và suy đoán để điều chỉnh việc hoàn thành sớm các tác vụ thực thi trong tương lai bằng cách sử dụng thông tin thời gian thực thi trung bình
Nghiên cứu của Gang Zeng và các cộng sự vào năm 2008 [31] xem xét về việc quản lý các ngắt tuần hoàn để giảm thiểu tiêu thụ điện năng khi bộ xử lý hoạt động
ở trạng thái nghỉ (idle state) Trong nghiên cứu này, tác giả đề cập đến cách giải quyết vấn đề này trong hai trường hợp khác nhau Trong trường hợp ngắt tuần hoàn không thể bị vô hiệu, tác giả đưa ra giải pháp tiêu thụ điện năng hoạt động ở trạng thái nghỉ, và đề xuất phương pháp tiếp cận tĩnh và động cho việc lựa chọn tần số tối
ưu để tiết kiệm điện năng Mặt khác, trong trường hợp ngắt tuần hoàn có thể được
vô hiệu hóa, tác giả đề nghị sử dụng xung đồng hồ cấu hình để vô hiệu hóa các trình phục vụ ngắt cho đến khi tác vụ tiếp theo được bắt đầu để bộ xử lý có thể ở chế độ năng lượng thấp trong một thời gian dài hơn Các phương pháp tiếp cận đề xuất được hiện thực trong một hệ điều hành thời gian thực và hiệu quả của nó đã được xác nhận bởi các tính toán lý thuyết và thực tế đo đạc trên một bộ xử lý nhúng
Trang 22Hình 2.1 - Sơ đồ chuyển đổi chế độ tiêu thụ năng lượng của a) Strong ARM
SA-1100 và b) M16C (nguồn [31])
Hình 2.2 - Mô hình đề xuất của [31]
Nghiên cứu của Flavius Gruian vào năm 2001 [12] xác định việc lập lịch để giảm năng lượng của các tác vụ thời gian thực cứng với độ ưu tiên cố định Phương pháp được mô tả là có thể hiện thực được trong RTOS Mục tiêu giảm tiêu thụ năng lượng bằng cách sử dụng cả trên quyết định tĩnh và động, thực hiện ở cả mức tác vụ
và mức nhóm tác vụ Tác giả giả sử các tác vụ là độc lập và chạy trên bộ vi xử lý với nguồn cung cấp điện áp động (DVS) Nghiên cứu có tính đến hành vi thực sự của một hệ thống thời gian thực, mà thường là tốt hơn so với trường hợp xấu nhất,
Trang 23phương pháp của tác giả sử dụng dữ liệu ngẫu nhiên để lập lịch sử dụng năng lượng hiệu quả
Nghiên cứu của Ravindra Jejurikar và Rajesh Gupta vào năm 2002 [14] xác định hệ số suy giảm (slowdown factor) của hệ thống dựa trên yêu cầu chức năng và hiệu suất Nguồn cung cấp điện áp động (DVS) của một bộ xử lý dựa trên các hệ số suy giảm có thể dẫn đến tiết kiệm năng lượng đáng kể Nghiên cứu đưa ra cách tính toán hệ số suy giảm cho các tác vụ trong việc đồng bộ cho các truy cập đến tài nguyên chia sẻ
Công trình của Niraj K Jha vào năm 2001 [15] mô tả các phương pháp tiếp cận phần mềm có thể được sử dụng để đánh giá phần mềm thiết kế so với một tải tối
đa của bộ xử lý Phương pháp dựa trên phân tích thời gian của bộ xử lý được thực hiện, đó là lợi ích tốt nhất của nhà thiết kế để giảm thiểu tiêu thụ điện năng của một
bộ vi xử lý nhúng Công trình này xem xét bốn phương pháp phần mềm như chờ đợi thông minh, giảm sự kiện, kiểm soát hoạt động và tắt máy thông minh để giảm thiểu điện năng tiêu thụ Những phương pháp tiếp cận phần mềm đặc biệt cho các ứng dụng nhúng, nơi xử lý có phản ứng với các sự kiện bên ngoài như phát hiện một phím của người sử dụng thông qua thiết bị đầu cuối cầm tay, các PDA hoặc cảm biến và các màn hình cảm ứng
Công trình của Youngsoo Shin và các cộng sự vào năm 2000 [25] trình bày một phương pháp tối ưu hóa năng lượng cho các ứng dụng nhúng thời gian thực trên một bộ xử lý có tốc độ thay đổi Phương pháp này kết hợp các thành phần tĩnh
và động Thành phần tĩnh xác định tốc độ xử lý thấp nhất có thể trong khi bảo đảm thời gian hoàn thành tối đa của tất cả các tác vụ Thành phần động tự động thay đổi tốc độ xử lý, chuyển bộ xử lý vào một chế độ sử dụng điện năng thấp hơn tùy theo tình trạng của tập tác vụ nhằm khai thác các thời gian thực hiện khác nhau và khoảng thời gian nhàn rỗi
Trang 24Hình 2.3 - Mô hình chuyển đổi trạng thái các tác vụ [25]
Nghiên cứu của J Sjödin và các cộng sự vào năm 1998 [26] đưa ra giải pháp tiết kiệm năng lượng tiêu thụ cho các hệ thống nhúng thời gian thực dựa trên việc sắp xếp các vùng nhớ trong bộ nhớ sao cho các vùng nhớ có tần số truy xuất cao sẽ được bố trí tại những vùng nhớ tiêu thụ năng lượng thấp
2.2 Tối ưu bộ nhớ trong hệ thống nhúng
Công trình của Nathan Cooprider và các cộng sự vào năm 2007 [8] đưa ra phương pháp nén bộ nhớ tĩnh (offline RAM compression) để giảm kích thước bộ nhớ chương trình bằng cách tận dụng các bit dư thừa của dữ liệu để chứa dữ liệu khác có kích thước phù hợp với số bit dư thừa này Công trình rất hữu ích đối với các ứng dụng nhỏ có bộ nhớ on-chip hạn chế
Nghiên cứu của Robert Davis và các cộng sự vào năm 2000 [10] đưa ra phương pháp sử dụng một stack chung cho tất cả các tác vụ thay vì sử dụng stack riêng rẽ cho từng tác vụ để giảm việc sử dụng bộ nhớ
Trang 25Chương 3: CƠ SỞ LÝ THUYẾT
Cơ sở lý thuyết chính của đề tài nghiên cứu là hệ điều hành thời gian thực và các phương pháp tối ưu hóa năng lượng tiêu thụ trong hệ thống thời gian thực Đề tài thực hiện sử dụng phương pháp quản lý năng lượng động kết hợp bằng cách sử dụng lập lịch phân cấp và xung đồng hồ hệ thống động
3.1 Hệ điều hành thời gian thực
3.1.1 Khái niệm hệ thống thời gian thực
Một hệ thống thời gian thực là một hệ thống thỏa mãn ràng buộc về thời gian đáp ứng hay nói cách khác hệ thống thời gian thực phải đảm bảo tính đúng đắn cả
về luận lý (logic) và thời gian đáp ứng
Một hệ thống thời gian thực mềm (soft real-time) là một hệ thống trong đó việc không đáp ứng các ràng buộc thời gian đáp ứng sẽ làm giảm hiệu suất hệ thống nhưng không phá hủy hệ thống
Một hệ thống thời gian thực cứng (hard real-time) là một hệ thống mà trong đó việc không đáp ứng một ràng buộc thời gian đáp ứng có thể dẫn đến sự phá hủy một phần hoặc toàn bộ hệ thống
Một hệ thống thời gian thực dẻo (firm real-time) là một hệ thống trong đó việc không đáp ứng một vài ràng buộc thời gian đáp ứng không phá hủy hệ thống nhưng nếu không đáp ứng nhiều hơn một vài ràng buộc thời gian đáp ứng có thể dẫn đến
sự phá hủy một phần hoặc toàn bộ hệ thống
3.1.2 Lịch sử phát triển hệ điều hành
Trong những ngày đầu của ngành khoa học máy tính, các nhà phát triển tạo ra các ứng dụng phần mềm bao gồm mã máy cấp thấp để khởi tạo và tương tác trực tiếp với phần cứng của hệ thống Sự liên kết chặt chẽ giữa phần mềm và phần cứng dẫn đến các ứng dụng không thể di chuyển từ hệ thống này sang hệ thống khác một
Trang 26trừu tượng các phần cứng cơ bản từ các mã ứng dụng Ngoài ra, sự ra đời của hệ điều hành đã giúp thay đổi thiết kế các ứng dụng phần mềm từ ứng dụng lớn, nguyên khối đến các ứng dụng phân cấp theo module, kết nối với nhau mà có thể chạy trên môi trường hệ điều hành
Trong thập niên 60 và 70, khi quy mô máy tính vừa và lớn chiếm ưu thế, UNIX được phát triển để tạo thuận lợi cho nhiều người sử dụng truy cập vào hệ thống máy tính giới hạn sẵn có đắt tiền UNIX cho phép nhiều người sử dụng thực hiện một loạt các tác vụ để chia sẻ các máy tính lớn và tốn kém Việc truy cập đa người dùng là rất hiệu quả: một người sử dụng có thể in các tập tin, trong khi viết các chương trình khác Do đó, UNIX đã được sử dụng rất rộng rãi từ máy vi tính cho đến các siêu máy tính
Trong những năm 80, Microsoft giới thiệu hệ điều hành Windows, trong đó nhấn mạnh đến môi trường máy tính cá nhân Mục tiêu cho người sử dụng tương tác với máy tính thông qua một giao diện người dùng đồ họa, các hệ điều hành Microsoft Windows đã dẫn đến kỷ nguyên máy tính cá nhân
Trong những thập niên gần đây, việc xây dựng cho thế hệ kế tiếp của máy tính bắt đầu chuyển hướng sang các thiết bị di động sử dụng pin: máy tính bảng, máy tính nhúng, hệ thống nhúng Để đáp ứng nhu cầu của máy tính nhúng, các hệ điều hành thời gian thực (RTOS) thương mại, chẳng hạn như VxWorks, được phát triển Mặc dù một số chức năng tương tự tồn tại giữa RTOS và hệ điều hành đa dụng (GPOS), có nhiều sự khác biệt quan trọng giữa chúng Những khác biệt này giúp giải thích tại sao RTOS phù hợp hơn với các hệ thống nhúng thời gian thực
Trang 27Một số chức năng cốt lõi giống nhau giữa một RTOS điển hình và các GPOS bao gồm:
• Một số mức độ đa nhiệm
• Phần mềm và quản lý tài nguyên phần cứng
• Cung cấp các dịch vụ cơ bản của hệ điều hành cho các ứng dụng
• Trừu tượng hóa các phần cứng từ các ứng dụng phần mềm
Mặt khác, một số khác biệt chức năng quan trọng làm cho RTOS khác biệt với GPOS bao gồm:
• Khả năng thay đổi quy mô lên hoặc xuống để đáp ứng nhu cầu ứng dụng
• Hiệu suất nhanh hơn
• Giảm dung lượng bộ nhớ cần thiết
• Chính sách lập lịch phù hợp cho các hệ thống nhúng thời gian thực
• Hỗ trợ cho các hệ thống nhúng không có đĩa cứng bằng cách cho phép khởi động và thực thi chương trình từ ROM hoặc RAM
• Tính di động tốt hơn với các nền tảng phần cứng khác nhau
Ngày nay, GPOS hướng đến máy tính đa dụng và chạy chủ yếu trên các hệ thống như máy tính cá nhân, máy trạm, và máy tính lớn Trong một số trường hợp, GPOS chạy trên các thiết bị nhúng có bộ nhớ phong phú và yêu cầu thời gian thực rất mềm GPOS thường yêu cầu nhiều bộ nhớ hơn, tuy nhiên nó không phù hợp với các thiết bị nhúng thời gian thực với bộ nhớ hạn chế và yêu cầu hiệu suất cao
RTOS có thể đáp ứng các yêu cầu này một cách tốt hơn Chúng đáng tin cậy, nhỏ gọn, có khả năng mở rộng tốt và chúng thực hiện tốt trong các hệ thống nhúng thời gian thực Ngoài ra, RTOS có thể dễ dàng thiết kế, chỉnh sửa để sử dụng chỉ những thành phần cần thiết cho một ứng dụng cụ thể
Trang 28một RTOS có thể khá đa dạng, từ một ứng dụng đơn giản cho một đồng hồ bấm giờ
kỹ thuật số đến một ứng dụng phức tạp hơn nhiều cho hệ thống định vị trên máy bay Những RTOS tốt luôn có khả năng mở rộng để đáp ứng các yêu cầu đặt ra khác nhau cho các ứng dụng khác nhau
Trong một số ứng dụng, một RTOS chỉ gồm một nhân (kernel), cung cấp luận
lý tối thiểu, lịch trình, và các thuật toán quản lý tài nguyên Các RTOS đều có một kernel Mặt khác, một RTOS có thể là một sự kết hợp của các khối chức năng khác nhau; bao gồm kernel, một hệ thống quản lý tập tin, giao thức mạng và các thành phần khác cần thiết cho một ứng dụng cụ thể, như minh họa ở mức cao trong hình 3.1
Hình 3.1 - Góc nhìn cấp cao của một RTOS bao gồm kernel, và các thành phần
khác trong các hệ thống nhúng (nguồn [20])
Trang 29Mặc dù nhiều RTOS có thể mở rộng lên hoặc xuống để đáp ứng yêu cầu ứng dụng Hầu hết kernel của RTOS chứa các thành phần sau:
• Scheduler: được chứa trong từng kernel và chứa một tập các thuật toán để xác định tác vụ thực hiện khi nào Một số ví dụ phổ biến của thuật toán lập lịch bao gồm round-robin và lập lịch dựa trên độ ưu tiên của các tác
vụ
• Các đối tượng: được giúp các nhà phát triển tạo ra các ứng dụng cho các
hệ thống nhúng thời gian thực Đối tượng của kernel thông thường bao gồm các tác vụ, semaphore và message-queue, …
• Dịch vụ: là hoạt động mà kernel thực hiện trên một đối tượng hay nói chung là các hoạt động như định thời, quản lý ngắt và quản lý tài nguyên
Hình 3.2 - Các thành phần chính trong kernel của một RTOS (nguồn [20])
Trang 30trình Các quá trình này được tương tự như tác vụ ở chỗ chúng có thể độc lập cạnh tranh thời gian thực hiện CPU Các quá trình khác với các tác vụ ở chỗ chúng cung cấp tính năng bảo vệ bộ nhớ tốt hơn khi tính đến chi phí về hiệu suất và chi phí bộ nhớ
Đa nhiệm (multitasking): đa nhiệm là khả năng của hệ điều hành để xử lý các hoạt động trong thời hạn quy định Một kernel thời gian thực có thể có nhiều tác vụ thực thi cùng lúc mà vẫn đảm bảo các tác vụ hoàn thành trong thời gian quy định Một trong những kịch bản đa nhiệm được minh họa trong hình 3.3
Hình 3.3 - Đa nhiệm sử dụng chuyển đổi ngữ cảnh (nguồn [20])
Trang 31Chuyển đổi ngữ cảnh: mỗi tác vụ sẽ có ngữ cảnh riêng của mình, đó là trạng thái của các thanh ghi của CPU yêu cầu tại mỗi thời điểm tác vụ dự kiến sẽ thực thi Một chuyển đổi ngữ cảnh xảy ra khi Scheduler chuyển từ tác vụ này sang tác vụ khác Để hiểu rõ hơn về những gì xảy ra khi ngữ cảnh, chúng ta hãy xem một kernel điển hình sẽ làm gì trong trường hợp này
Mỗi khi một tác vụ mới được tạo ra, kernel cũng tạo ra và duy trì kiểm soát một khối điều khiển tác vụ tương ứng gọi là TCB (Task Control Block) TCB là cấu trúc dữ liệu hệ thống mà kernel sử dụng để duy trì thông tin về tác vụ cụ thể TCB chứa tất cả mọi thông tin kernel cần biết về một tác vụ cụ thể Khi một tác vụ đang thực thi, ngữ cảnh của nó là rất linh động Ngữ cảnh linh động này được duy trì trong TCB Khi tác vụ dừng, ngữ cảnh của nó được lưu giữ trong TCB, và được phục hồi trong lần chạy kế tiếp của tác vụ Một chuyển đổi ngữ cảnh điển hình được minh họa trong hình 3.3
Như thể hiện trong hình 3.3, khi Scheduler của kernel xác định rằng nó cần phải ngừng thực thi tác vụ 1 và bắt đầu thực thi tác vụ 2; các bước sau đây sẽ được thực hiện:
• Kernel sẽ lưu thông tin ngữ cảnh của tác vụ 1 trong TCB của nó
• Kernel tải thông tin ngữ cảnh của tác vụ 2 từ TCB của tác vụ 2, và thực thi tác vụ 2
• Ngữ cảnh của tác vụ 1 không thay đổi trong khi tác vụ 2 thực thi, nhưng nếu Scheduler có nhu cầu để thực thi tác vụ 1 một lần nữa, tác vụ 1 sẽ tiếp tục từ thời điểm trước khi chuyển đổi ngữ cảnh
Thời gian cần cho Scheduler chuyển đổi từ tác vụ này sang một tác vụ khác là thời gian chuyển ngữ cảnh Thời gian này tương đối nhỏ so với hầu hết các hoạt động mà một tác vụ thực hiện Nếu thiết kế của một ứng dụng bao gồm chuyển đổi ngữ cảnh thường xuyên thì ứng dụng có thể phải chịu chi phí thực thi không cần
Trang 32hiện việc này
Dispatcher: dispatcher là một phần của Scheduler thực hiện chuyển đổi ngữ cảnh và thay đổi luồng thực thi (flow of execution) Bất cứ lúc nào một RTOS đang chạy, luồng thực thi, còn được gọi là luồng kiểm soát (flow of control), sẽ ở một trong ba vùng: ở tác vụ ứng dụng, ở một trình phục vụ ngắt (Interrupt Service Routine – ISR), hoặc ở kernel Khi một tác vụ hoặc ISR thực hiện truy cập hệ thống (make a system call), luồng kiểm soát chuyển đến kernel để thực hiện một trong các thủ tục hệ thống được cung cấp bởi kernel Khi rời khỏi kernel, dispatcher có nhiệm
vụ chuyển luồng điều khiển đến một trong những tác vụ trong ứng dụng của người dùng Nó sẽ không nhất thiết phải là tác vụ thực hiện truy cập hệ thống Đó là các thuật toán lập lịch của Scheduler nhằm xác định tác vụ thực thi kế tiếp Dispatcher
sẽ làm công việc chuyển đổi ngữ cảnh và chuyển điều khiển thực thi
Mặt khác, nếu một ISR truy cập hệ thống, dispatcher được bỏ qua cho đến khi ISR hoàn thành Quá trình này xảy ra ngay cả khi một số tài nguyên đã được giải phóng mà thông thường sẽ gây ra một chuyển đổi ngữ cảnh giữa các tác vụ Chuyển đổi ngữ cảnh không diễn ra vì ISR phải hoàn thành mà không bị gián đoạn bởi tác
vụ Sau khi ISR hoàn thành, thoát khỏi kernel thông qua dispatcher để chuyển đến tác vụ chính xác
Các thuật toán lập lịch: như đã đề cập trước đó, Scheduler sẽ xác định tác vụ nào thực thi bằng cách dựa trên một thuật toán lập lịch (còn được gọi là chính sách lập lịch) Hầu hết các kernel hiện nay hỗ trợ hai thuật toán lập lịch trình thông thường: lập lịch dựa trên độ ưu tiên, và lập lịch vòng round-robin
Trang 33Các nhà sản xuất RTOS thường định nghĩa trước các thuật toán này, tuy nhiên trong một số trường hợp người lập trình có thể tạo ra và xác định các thuật toán lập lịch trình riêng của họ Mỗi thuật toán được mô tả tiếp theo
Lập lịch dựa trên độ ưu tiên: trong số các thuật toán lập lịch trình giới thiệu ở đây, hầu hết các kernel thời gian thực sử dụng lập lịch dựa trên độ ưu tiên theo mặc định Như thể hiện trong hình 3.4 với loại hình lập lịch này, tác vụ được thực thi ở bất kỳ thời điểm nào luôn là tác vụ có độ ưu tiên cao nhất trong số tất cả các tác vụ sẵn sàng để thực thi trong hệ thống
Hình 3.4 - Lập lịch dựa trên độ ưu tiên với pre-empty (nguồn [20])
Các kernel thời gian thực nói chung thường hỗ trợ 256 mức độ ưu tiên, trong
đó 0 là cao nhất và 255 thấp nhất Một số kernel chỉ định độ ưu tiên trong thứ tự ngược lại, trong đó 255 là cao nhất và 0 thấp nhất Với một Scheduler dựa trên độ
ưu tiên, mỗi tác vụ đều có độ ưu tiên, và tác vụ có độ ưu tiên cao nhất sẽ thực thi đầu tiên Nếu một tác vụ với một ưu tiên cao hơn tác vụ đang thực thi trở nên sẵn sàng để thực thi, kernel ngay lập lưu ngữ cảnh tác vụ hiện hành trong TCB và chuyển thực thi đến tác vụ có ưu tiên cao hơn Như trong hình 3.4 tác vụ 1 được gỡ khỏi (pre-empty) bởi tác vụ 2 ưu tiên cao hơn, tác vụ 2 sau đó được gỡ khỏi bởi tác
vụ 3 Khi tác vụ 3 hoàn tất, tác vụ 2 trở lại thực thi Tương tự như vậy, sau khi hoàn thành tác vụ 2, tác vụ 1 sẽ được thực thi Mặc dù tác vụ được gán một độ ưu tiên khi chúng được tạo ra, độ ưu tiên của một tác vụ có thể được thay đổi bằng cách sử
Trang 34hiện trong lúc hệ thống đang chạy Dựa trên các thuật toán lập lịch trình on-line, tất
cả các tác vụ đều được gán độ ưu tiên Độ ưu tiên này có thể được cố định hoặc tự động thay đổi trong quá trình thực thi hệ thống Có bốn thuật toán cơ bản cho lập lịch trình on-line Với độ ưu tiên cố định, hầu hết các hệ thống sử dụng thuật toán Rate Monotonic Algorithm (RMA) hoặc Deadline Monotonic Algorithm (DMA) Mặt khác, The Earliest Deadline First (EDF) và The Least Laxity First (LLF) là phương pháp phổ biến cho độ ưu tiên động
Rate Monotonic Algorithm: được đề xuất bởi Liu và Layland, 1973; thuật toán này gán độ ưu tiên cho một tác vụ tuần dựa trên các quy tắc mà tác vụ với thời gian tuần hoàn ngắn hơn (tỷ lệ yêu cầu cao hơn) sẽ được ưu tiên cao hơn
Deadline Monotonic Algorithm (DMA) gán độ ưu tiên cho các tác vụ theo thời hạn hoàn thành của chúng [19] Các tác vụ với thời hạn hoàn thành tương đối ngắn nhất được gán ưu tiên cao nhất
Đối với các thuật toán lập lịch dựa trên độ ưu tiên động, độ ưu tiên của tác vụ được gán dựa trên các thông số động có thể thay đổi trong quá trình thực thi tác vụ Các thuật toán quan trọng nhất trong thể loại này là The Earliest Deadline First (EDF) và The Least Laxity First (LLF)
Thuật toán The Earliest Deadline First: ưu tiên của tác vụ được gán theo thời hạn tuyệt đối của nó (absolute deadline) Tác vụ với thời hạn sớm nhất sẽ được thực hiện với độ ưu tiên cao nhất
Thuật toán The Least Laxity First (LLF): gán độ ưu tiên cho các tác vụ theo độ lỏng lẻo tương đối (relative laxity) của chúng [21] Các tác vụ với lỏng lẻo nhỏ hơn
sẽ được thực hiện với ưu tiên cao hơn
Trang 35Lập lịch vòng Round-Robin: hệ thống chia sẻ thời gian thực thi của CPU cho mỗi tác vụ một cách bình đẳng Lập lịch vòng round-robin thuần túy không thể đáp ứng các yêu cầu hệ thống thời gian thực bởi vì trong hệ thống thời gian thực, tác vụ thực hiện công việc với tầm quan trọng và độ ưu tiên khác nhau Thay vào đó lập lịch theo độ ưu tiên có thể được kết hợp với lập lịch vòng round-robin sử dụng khe thời gian (time – slicing) để cấp phát CPU cho các tác vụ có độ ưu tiên giống nhau như thể hiện trong hình 3.5
Hình 3.5 - Lập lịch theo round-robin và pre-empty (nguồn [20])
Với khe thời gian, mỗi tác vụ thực thi trong một khoảng thời gian quy định Một bộ đếm thời gian sẽ theo dõi các khe thời gian cho mỗi tác vụ Khi khe thời gian của một tác vụ hoàn tất, bộ đếm sẽ bị xóa, và tác vụ được đặt ở cuối của hàng đợi Tác vụ mới được thêm vào với cùng độ ưu tiên được đặt ở cuối của hàng đợi Nếu một tác vụ trong một khe thời gian được dừng bởi một tác vụ có độ ưu tiên cao hơn, thời gian chạy của nó được lưu lại và sau đó phục hồi khi tác vụ có độ ưu tiên cao hoàn thành Ý tưởng này được minh họa trong hình 3.5, trong đó tác vụ 1 được
ưu tiên bởi tác vụ 4 có độ ưu tiên cao hơn phục hồi lại khi tác vụ 4 hoàn tất
Trang 36gian thực thi của CPU
• Semaphore: là đối tượng có thể được tăng lên hoặc giảm đi bởi tác vụ nhằm đồng bộ hóa hoặc loại trừ tương hỗ
• Tin nhắn hàng đợi (message queue): giống như cấu trúc dữ liệu có thể được sử dụng để đồng bộ hóa loại trừ tương hỗ, và trao đổi dữ liệu bằng cách chuyển các tin nhắn giữa các tác vụ
Các nhà phát triển tạo các ứng dụng nhúng thời gian thực có thể kết hợp các đối tượng kernel để giải quyết vấn đề thiết kế thời gian thực, chẳng hạn như đồng thời, đồng bộ hóa hoạt động, và truyền thông dữ liệu
Trang 37• Hiệu suất (performance)
• Nhỏ gọn (compactness)
• Khả năng co giãn (scalability)
Những thuộc tính này sẽ được thảo luận tiếp theo, tuy nhiên, thuộc tính của một RTOS thường dựa trên loại ứng dụng đang được phát triển
Độ tin cậy (reliability): các hệ thống nhúng phải đáng tin cậy Tùy thuộc vào ứng dụng, hệ thống có thể cần phải hoạt động trong thời gian dài mà không có sự can thiệp của con người Có nhiều mức độ khác nhau về độ tin cậy được yêu cầu Ví
dụ, một máy tính kỹ thuật số năng lượng mặt trời có thể khởi động lại chính nó nếu
nó không nhận được đủ ánh sáng, đối với máy tính điều này vẫn có thể được coi là chấp nhận được Mặt khác, một bộ chuyển mạch viễn thông không thể khởi động lại trong quá trình hoạt động mà không tốn chi phí cao liên quan đến thời gian ngừng hoạt động Các RTOS trong các ứng dụng đòi hỏi mức độ khác nhau về độ tin cậy Mặc dù có nhiều mức độ khác nhau về độ tin cậy có thể chấp nhận được, nói chung
độ tin cậy của một hệ thống là tính sẵn sàng (tiếp tục cung cấp dịch vụ) và không bị lỗi Một cách phổ biến mà các nhà phát triển phân loại hệ thống có độ tin cậy cao là định lượng thời gian ngừng hoạt động của hệ thống mỗi năm Lưu ý rằng không chỉ mỗi RTOS được dùng để xác định độ tin cậy của hệ thống, nó là sự kết hợp của tất
cả các yếu tố trong hệ thống, bao gồm cả phần cứng, RTOS và ứng dụng để xác định độ tin cậy của hệ thống
Dự đoán (predictability): do hầu hết các hệ thống nhúng là hệ thống thời gian thực, đáp ứng yêu cầu thời gian là chìa khóa để đảm bảo hoạt động tốt Các RTOS được sử dụng trong trường hợp này cần phải được dự đoán một mức độ nhất định Xác định thuật ngữ mô tả hành vi dự đoán được của các RTOS, trong đó việc hoàn thành truy cập hệ thống xảy ra trong khung thời gian được biết đến Các nhà phát triển có thể viết các chương trình đơn giản để xác thực thời gian đáp ứng của một RTOS Kết quả này dựa trên những thời gian phản hồi cụ thể khi gọi dịch vụ của
Trang 38càng nhanh Mặc dù phần cứng cơ bản có thể thay đổi sức mạnh xử lý của hệ thống, phần mềm cũng có thể đóng góp vào hiệu năng hệ thống Hiệu suất của bộ xử lý thường được mô tả bằng số triệu lệnh mỗi giây (MIPS) Băng thông cũng là biện pháp đo hiệu suất tổng thể của một hệ thống, kết hợp cả phần cứng và phần mềm Một định nghĩa của băng thông là tỷ lệ mà tại đó một hệ thống có thể tạo ra output dựa trên các intput Băng thông cũng có nghĩa là số lượng dữ liệu truyền chia cho thời gian thực hiện để truyền nó Tốc độ truyền dữ liệu thông thường được đo bằng bội số của bit mỗi giây (bps)
Nhỏ gọn (compactness): các ràng buộc thiết kế ứng dụng và ràng buộc chi phí giúp xác định một hệ thống nhúng nhỏ gọn như thế nào có thể được Ví dụ, một điện thoại di động rõ ràng phải là nhỏ, di động, và chi phí thấp Những yêu cầu thiết
kế giới hạn bộ nhớ hệ thống, do đó giới hạn kích thước của ứng dụng và hệ điều hành Trong hệ thống nhúng như vậy, phần cứng bị hạn chế do kích thước và chi phí, các RTOS rõ ràng phải nhỏ và hiệu quả Trong những trường hợp này, việc sử dụng bộ nhớ của RTOS có thể là một yếu tố quan trọng Để đáp ứng yêu cầu toàn
bộ hệ thống, nhà thiết kế phải hiểu được cả hai phần tiêu thụ bộ nhớ tĩnh và động của RTOS và ứng dụng sẽ chạy trên nó
Khả năng co giãn (scalabilty): bởi vì các RTOS có thể được sử dụng trong một loạt các hệ thống nhúng, chúng phải có khả năng thay đổi quy mô lên hoặc xuống
để đáp ứng yêu cầu của từng ứng dụng cụ thể Tùy thuộc vào bao nhiêu chức năng được yêu cầu, một RTOS phải có khả năng thêm hoặc xóa các thành phần module, bao gồm cả hệ thống file và giao thức ngăn xếp Nếu một RTOS không có khả năng
mở rộng tốt, các nhà phát triển có thể phải mua hoặc xây dựng các phần còn thiếu
Trang 39Giả sử rằng một nhóm phát triển muốn sử dụng một RTOS cho việc thiết kế một dự
án điện thoại di động và trạm liên lạc Nếu một RTOS có tính mở rộng quy mô tốt, RTOS này có thể được sử dụng trong cả hai dự án, thay vì hai RTOS khác nhau, làm tiết kiệm đáng kể thời gian và tiền bạc
3.2 Vi xử lý S1C17704
3.2.1 Giới thiệu họ vi xử lý S1C17 của Seiko Epson
Lõi S1C17 là loại lõi xử lý cấu trúc RISC 16 bit của Seiko Epson, dùng công nghệ CMOS công suất thấp 0.35 – 0.15µm Tần số hoạt động: tối đa 90MHz (tùy thuộc vào chủng loại bộ xử lý và công nghệ xử lý)
Bộ câu lệnh:
• Số lượng: 111 lệnh cơ bản (184 lệnh bao gồm các biến thể)
• Chu kỳ thực hiện: các lệnh chính thực thi trong một chu kỳ
• Lệnh mở rộng: có thể dài 24 bit
Các loại lệnh:
• Truyền dữ liệu: 8 bit, 16 bit, 24 bit, 32 bit, có dấu, không dấu
• Phép tính số nguyên: cộng trừ, so sánh
• Toán tử logic: and or xor not
• Dịch (shift) và chuyển đổi (swap)
• Lệnh rẻ nhánh
• Lệnh điều khiển hệ thống
• Lệnh mở rộng câu lệnh
• Lệnh đồng xử lý
Trang 40• 1 thanh ghi chuyên dụng 8 bit
Không gian bộ nhớ và bus:
• Có thể lên đến 16M byte không gian bộ nhớ (địa chỉ 24 bit)
• Kiến trúc Harvard dùng bus lệnh riêng 16 bit, và bus dữ liệu 32 bit
Các cách định vị địa chỉ:
• Định vị địa chỉ tức thời
• Định vị địa chỉ thanh ghi trực tiếp
• Định vị địa chỉ thanh ghi gián tiếp
Các ngắt hỗ trợ:
• Reset, NMI (Non-Markable Interrupt), và hỗ trợ 32 nguồn ngắt ngoài
• Ngắt khi truy cập vào vùng địa chỉ không hợp lệ
• Ngắt cho việc kiểm lỗi chương trình
• Rẽ nhánh trực tiếp từ bảng vector ngắt đến hàm xử lý ngắt (interrupt handler routine)
• Ngắt bằng phần mềm với các vector ngắt cho trước