Kỹ thuật này kết hợp với khả năng cấu hình lại từng phần động của thiết bị phần cứng như FPGA sẽ tạo ra một giải pháp hứa hẹn để giải quyết yêu cầu triển khai nhiều ứng dụng có thể điều
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
NGUYỄN VĂN CƯỜNG
NGHIÊN CỨU NoC CẤU HÌNH LẠI ĐƯỢC TRÊN FPGA VÀ PHÁT TRIỂN THUẬT TOÁN ÁNH XẠ ĐỘNG ỨNG DỤNG TRÊN NỀN TẢNG NoC
Chuyên ngành: Kỹ thuật điện tử
Mã số: 62520203
TÓM TẮT LUẬN ÁN TIẾN SĨ KỸ THUẬT ĐIỆN TỬ
Hà Nội – 2017
Trang 2Công trình này được hoàn thành tại:
Trường Đại học Bách khoa Hà Nội
Người hướng dẫn khoa học:
Vào hồi … giờ … , ngày … tháng … năm 2017
Có thể tìm hiểu luận án tại thư viện:
1 Thư viện Tạ Quang Bửu - Trường ĐHBK Hà Nội
2 Thư viện Quốc gia Việt Nam
Trang 3MỞ ĐẦU
1 Đặt vấn đề
Ngày nay, các thiết bị nhúng đang trở nên quan trọng trong cuộc sống của chúng ta (ví dụ: điện thoại thông minh, các thiết bị di động) Khi thiết kế hệ thống nhúng, người thiết kế cần xem xét kỹ lưỡng các tiêu chí ràng buộc như hiệu năng, thời gian đưa sản phẩm ra thị trường, tiêu thụ năng lượng, kích thước thực hiện, khả năng nâng cấp, cập nhật các ứng dụng và các tính năng mới trong tương lai, v.v Bên cạnh đó, các ứng dụng đa phương tiện tiên tiến như HD-video, xử lý ảnh, các trò chơi 3D, v.v luôn yêu cầu một sức mạnh tính toán lớn và chuyển tải dữ liệu nhanh Các ứng dụng này được thiết kế theo cách mà mức chất lượng của chúng có thể được điều chỉnh phù hợp với khả năng xử lý của nền tảng phần cứng [52, 70] Ví dụ khi xem video trên Internet, tùy thuộc vào băng thông của mạng cũng như khả năng xử lý của thiết bị mà người dùng có thể xem được video ở mức chất lượng HD hoặc SD, v.v Thêm vào đó, các ứng dụng được mô hình hóa dưới dạng đồ thị tác
vụ với số lượng lớn các tác vụ truyền thông và các đặc tính khác nhau do vậy yêu cầu xử lý song song các tác vụ này là rất cao Một yếu tố khác đó là hành vi của người sử dụng thiết bị luôn thay đổi theo thời gian như nghe nhạc, xem phim hoặc chơi trò chơi, v.v Theo các yêu cầu này, chúng ta
dễ thấy rằng các ứng dụng được đưa vào và rời khỏi hệ thống tại bất kỳ thời điểm nào Thứ tự các ứng dụng được đưa vào và rời hệ thống cũng không thể biết trước Ngoài ra, mức chất lượng của các ứng dụng cũng có thể bị thay đổi theo hành vi của người dùng hoặc theo tình trạng tài nguyên sẵn có của thiết bị (ví dụ: yêu cầu mức chất lượng, hiệu năng cho từng ứng dụng) Do vậy, việc phát triển các nền tảng phần cứng có nhiều khả năng linh hoạt và khả năng thích nghi với các yêu cầu như trên là hết sức cần thiết Một xu hướng mới trong thiết kế các nền tảng tiên tiến đó là tạo ra một nền tảng có thể tái cấu hình các mô đun vật lý sau khi chế tạo, kết hợp giữa bộ vi xử lý và các thiết
bị cấu hình lại [90], chẳng hạn như FPGA (Field Programmable Gate Array), để tăng thêm tính linh hoạt cho hệ thống trong các môi trường khác nhau [63] Tuy nhiên, khả năng của các phần tử cấu hình lại trong thiết bị luôn có giới hạn Do vậy, cần lựa chọn thêm một giải pháp quản lý động cho
hệ thống Một trong những giải pháp quan trọng và rất linh hoạt đó là kỹ thuật ánh xạ ứng dụng động Kỹ thuật này kết hợp với khả năng cấu hình lại từng phần động của thiết bị phần cứng như FPGA sẽ tạo ra một giải pháp hứa hẹn để giải quyết yêu cầu triển khai nhiều ứng dụng có thể điều chỉnh được mức chất lượng lên nền tảng có tài nguyên tái cấu hình hạn chế [8, 86]
Hơn nữa, do độ phức tạp của các thiết bị nhúng hiện đại ngày càng tăng, một số lượng ngày càng nhiều ứng dụng với chất lượng dịch vụ (QoS: Quality of Service) khác nhau có thể được triển khai lên thiết bị, thường là trong một môi trường các nền tảng cấu hình lại không đồng nhất Bởi vì một nền tảng cấu hình lại không đồng nhất với sự linh hoạt của các bộ xử lý nhúng và hiệu quả tính toán của một số vùng cấu hình lại đã được chứng minh là có nhiều ưu điểm hơn so với nền tảng đồng nhất [1, 49] Trong một nền tảng như vậy, các bộ xử lý nhúng thường được sử dụng để quản lý
và thực hiện một số tác vụ phức tạp thấp trong khi các vùng cấu hình lại được sử dụng để tăng tốc
độ tính toán cho các tác vụ phức tạp Khả năng cấu hình động cho phép nền tảng thích nghi với các yêu cầu xử lý thay đổi của các ứng dụng
Mặt khác, các yêu cầu truyền thông ngày càng gia tăng trong một hệ thống trên chip (SoC: System on Chip) phức tạp như nền tảng đa lõi không đồng nhất cấu hình lại được Do vậy việc lựa chọn một cơ sở hạ tầng truyền thông phù hợp là cần thiết Điều này phải đảm bảo các kết nối cần thiết với một QoS được xác định trước, chẳng hạn như thông lượng hoặc trễ tối đa Tuy nhiên, trong nhiều trường hợp mức ưu tiên của các ứng dụng chưa được biết trước tại lúc thiết kế mà chỉ biết được khi chúng được triển khai vào hệ thống tại thời gian chạy Trong trường hợp này, các yêu cầu truyền thông hiệu quả không được biết đến tại thời gian tổng hợp, do đó một cơ sở hạ tầng truyền
Trang 4thông linh hoạt sẽ được lựa chọn Hơn nữa, một SoC phức tạp còn yêu cầu tích hợp một số lượng lớn các lõi IP (Intellectual Property) lên nó, vì vậy, một cơ sở hạ tầng truyền thông hiệu năng cao, khả năng xử lý song song để kết nối các IP khác nhau cần được sử dụng Với yêu cầu này, các kiến trúc truyền thống như Bus chia sẻ hay kết nối trực tiếp điểm-điểm không thể áp dụng được Kiến trúc mạng trên chip (NoC: Network on Chip) ra đời và xem như một giải pháp thay thế cho kiến trúc Bus và kết nối điểm-điểm theo hướng công nghệ này Kiến trúc NoC cung cấp một cơ sở hạ tầng truyền thông có hiệu năng cao, có khả năng mở rộng và khả năng xử lý song song cao, thích hợp cho việc tích hợp một số lượng lớn các lõi IP lên một SoC [9,50] Do vậy, NoC được đề xuất như là một giải pháp cho truyền thông giữa các IP trong thiết kế các SoC phức tạp
Ngoài ra, hầu hết các nền tảng phần cứng SoC hiện nay được chế tạo trên công nghệ ASIC (Application-Specific Integrated Circuit) đó là một dạng thiết kế tĩnh, có nghĩa là các IP, hạ tầng truyền thông và các thiết bị ngoại vi không thể thay đổi sau khi sản phẩm được chế tạo Do vậy chúng khó có thể đáp ứng được các yêu cầu cho khả năng thích nghi, thay đổi một số mô đun hay sửa lỗi sau khi chế tạo Để phát triển một nền tảng SoC dạng ASIC cần phải có quỹ thời gian dài và chi phí khá cao khi yêu cầu thiết kế với số lượng sản phẩm không lớn Điều này rõ ràng bất lợi và không phù hợp với các yêu cầu như: Thời gian thiết kế sản phẩm mẫu ngắn, số lượng sản phẩm nhỏ, sản phẩm có độ linh hoạt và thích nghi cao Các hạn chế này có thể được khắc phục bằng công nghệ FPGA Một trong những tính năng đặc biệt của một FPGA hiện đại là khả năng cấu hình lại và cấu hình lại từng phần động Với khả năng này, FPGA có thể thay đổi nhiều lần và thay đổi động các chức năng đã thực hiện trên các thiết bị vật lý của nó ngay khi đang còn hoạt động Do đó, FPGA được lựa chọn như một nền tảng hứa hẹn để tạo mẫu nhanh cho một hệ thống trên chip so với ASIC [84] Điều này cũng thích hợp để xây dựng một hệ thống thích nghi Một hệ thống thích nghi [2, 87] là mô hình trong đó tác vụ tính toán có thể thay đổi và thích nghi với tình trạng tài nguyên của hệ thống hoặc các yêu cầu của ứng dụng hay hành vi của người dùng tại thời gian chạy Hơn nữa, nhờ vào sự phát triển không ngừng của công nghệ bán dẫn và công nghệ nano mà số lượng tài nguyên và tốc độ xử lý trên FPGA đang dần tăng; giá thành và tiêu thụ năng lượng tiếp tục giảm Thêm vào đó xu hướng thiết kế kết hợp giữa bộ vi xử lý và FPGA [28, 43] làm cho nó có thể phù hợp với các thiết kế hệ thống phức tạp linh hoạt trên một FPGA [6, 41]
Với những yêu cầu như vậy, việc phát triển một nền tảng nhúng đa lõi cấu hình lại được động trên FPGA dựa theo mô hình NoC có hiệu năng cao và triển khai các ứng dụng có thể điều chỉnh mức chất lượng lên nền tảng này tại thời gian chạy là các vấn đề mới cần được nghiên cứu Đó cũng chính là động lực mạnh mẽ thôi thúc nghiên cứu sinh chọn và thực hiện các nội dung nghiên cứu này trong luận án
2 Mục tiêu, phạm vi và phương pháp nghiên cứu
Mục tiêu nghiên cứu:
(i) Đề xuất kiến trúc NoC hiệu năng cao bao gồm kiến trúc bộ định tuyến và bộ giao tiếp
mạng
(ii) Xây dựng nền tảng phần cứng đa lõi linh hoạt có khả năng cấu hình lại được từng phần
trên FPGA dựa trên kiến trúc NoC Nền tảng này cho phép thay đổi tự động một số mô đun trong lớp truyền thông hoặc lớp tính toán của NoC tại thời gian chạy để thích nghi với các yêu cầu thay đổi của các ứng dụng
(iii) Xây dựng và đề xuất các thuật toán cho bài toán ánh xạ các ứng dụng có thể điều chỉnh
mức chất lượng vào nền tảng phần cứng cấu hình lại được dựa trên NoC
Phạm vi nghiên cứu:
Trang 5(i) Nghiên cứu mô hình kiến trúc NoC sử dụng cấu hình lưới hai chiều, kỹ thuật điều khiển
luồng wormhole, kênh ảo và giải thuật định tuyến XY để xây dựng mô hình truyền thông NoC có hiệu năng cao
(ii) Nghiên cứu công nghệ FPGA của Xilinx, công nghệ cấu hình lại từng phần động của
FPGA để phát triển nền tảng phần cứng có khả năng cấu hình lại được lớp truyền thông hoặc lớp tính toán
(iii) Nghiên cứu bài toán ánh xạ các ứng dụng động có thể điều chỉnh mức chất lượng vào
nền tảng phần cứng đa lõi cấu hình lại được dựa trên NoC với giả thiết kiến trúc lớp truyền thông là cố định và chỉ cấu hình lại lớp tính toán (các PE) của NoC để thích nghi với sự chuyển đổi từ ứng dụng này đến ứng dụng khác lên nền tảng phần cứng hoặc sự thay đổi mức chất lượng của các ứng dụng Ngoài ra, luận án cũng chỉ tập trung vào nghiên cứu mô hình ứng dụng dưới dạng đồ thị tác vụ
Phương pháp nghiên cứu
Đầu tiên, phương pháp điều tra và phân tích dựa trên sách, tạp chí và các nguồn tài liệu khác từ Internet sẽ được sử dụng Các ưu điểm và hạn chế của các vấn đề nghiên cứu liên quan đến luận án
sẽ được chỉ ra Từ đó, tác giả sẽ đề xuất một số mô hình và thuật toán cho vấn đề nghiên cứu
Cuối cùng, tính chính xác và đúng đắn của các mô hình và thuật toán đã đề xuất sẽ được kiểm chứng và phân tích bằng mô phỏng phần mềm và thực nghiệm trên các thiết bị thực tế
3 Cấu trúc của luận án
Cấu trúc của luận án bao gồm ba chương: Chương 1 trình bày lý thuyết liên quan đến các nội dung nghiên cứu của luận án Chương 2 phát triển nền tảng phần cứng cấu hình lại được cho NoC Chương 3 triển khai các ứng dụng có thể điều chỉnh mức chất lượng vào nền tảng cấu hình lại được dựa trên NoC tại thời gian chạy
CHƯƠNG 1
CƠ SỞ LÝ THUYẾT 1.1 Lý thuyết về mạng trên chip
Với sự phát triển không ngừng của công nghệ bán dẫn và công nghệ nano, số lượng các ứng dụng được tích hợp lên chip ngày càng tăng Kiến trúc Bus và kết nối điểm-điểm truyền thống không còn đáp ứng được yêu cầu này vì chúng có một số hạn chế trong khả năng mở rộng, khả năng sử dụng lại các IP, đồng bộ, v.v [35, 55] Kiến trúc NoC đã được đề xuất và xem như một giải pháp thay thế cho kiến trúc Bus và kết nối điểm-điểm Kiến trúc NoC cung cấp một cơ sở hạ tầng truyền thông có hiệu năng cao, thích hợp cho việc tích hợp một số lượng lớn các lõi IP lên một SoC [9, 50] Do vậy, NoC được đề xuất như là một giải pháp cho truyền thông giữa các IP trong thiết kế các SoC phức tạp Ý tưởng xây dựng NoC bắt nguồn từ mô hình mạng máy tính đã được phát triển trong lịch sử của hệ thống máy tính Hình 1.1 mô tả một NoC điển hình dạng lưới hai chiều 3x3 Tiếp theo, các thuật ngữ thường được sử dụng trong NoC sẽ được trình bày
Tài nguyên (Resource) hay lõi IP (IP core) hoặc PE (Processing Element): Là các khối logic thực hiện xử lý dữ liệu trong mạng Khối logic này có thể là một lõi vi xử lý, một bộ biến đổi FFT (Fast Fourier Transform), một lõi xử lý DSP (Digital Signal Processor), v.v
Bộ giao tiếp mạng (NI: Network Interface): Là khối logic làm nhiệm vụ kết nối tài nguyên vào mạng tại các vị trí giao diện dữ liệu vào ra của bộ định tuyến Do sự khác biệt về kích thước dữ liệu, giao diện tín hiệu điều khiển của các tài nguyên với mạng, bộ giao tiếp mạng có thể thay đổi tùy theo tài nguyên được kết nối với mạng
Bộ định tuyến (Router): Là khối logic thực hiện chức năng định tuyến, điều khiển luồng cho dòng dữ liệu trong mạng Đóng vai trò là hạt nhân trong NoC với mỗi mô hình NoC khác nhau, bộ
Trang 6định tuyến được thiết kế riêng để thực hiện thuật toán định tuyến, cơ chế điều khiển luồng riêng biệt
Liên kết vật lý (Physical link): Là các kết nối vật lý giữa các bộ định tuyến trong mạng NoC Liên kết bao gồm các đường truyền dữ liệu và các tín hiệu điều khiển/báo hiệu
Cấu hình mạng (Topology): Là cấu trúc hình học của NoC, cấu trúc hình học này sẽ quyết định cách liên kết giữa các bộ định tuyến với nhau, giải thuật định tuyến và thậm chí cả cơ chế điều khiển luồng
Định tuyến (Routing): Là cơ chế tìm đường đi cho gói tin (Packet) từ tài nguyên nguồn đến tài nguyên đích thông qua các kết nối trong mạng
Điều khiển luồng (Flow control): Là cơ chế cấp phát tài nguyên bộ đệm, liên kết cho gói tin khi gói tin đang truyền trong mạng
Độ trễ (Latency): Là thời gian cần thiết để truyền một gói tin đi từ nguồn đến đích Trong NoC,
có nhiều yếu tố ảnh hưởng tới độ trễ bao gồm trễ do định tuyến, độ chiếm dụng kênh, trễ do tranh chấp tài nguyên, thời gian ghép và tách gói tin (packetization and depacketization), thời gian ghép
và tách flit (flitization and deflitization), sự đồng bộ giữa các bộ định tuyến
Băng thông (Bandwidth): Là tốc độ cao nhất của luồng thông tin trong mạng được đo bằng số bit/giây
Thông lượng (Throughput): Là tổng số gói tin đến được đích của chúng trên mỗi đơn vị thời gian
IP core (0,0)
Router
NI
IP core (0,1)
Router
NI
IP core (0,2)
Router
NI
IP core (1,0)
Router
NI
IP core (1,1)
Router
NI
IP core (1,2)
Router
NI
IP core (2,0)
Router
NI
IP core (2,1)
Router
NI
IP core (2,2)
cả hai phần tử Logic lập trình (LE: Logic Element) và các lõi IP cứng trên cùng một đế bán dẫn, đặc biệt với khả năng cấu hình lại động từng phần giúp FPGA có thể thay đổi các chức năng đã được thực hiện trên thiết bị vật lý tại thời gian chạy mà không cần phải dừng hệ thống Chúng cung cấp đầy đủ các khả năng của chip và thiết kế thuận tiện Do vậy, FPGA là một nền tảng hứa hẹn để tạo mẫu nhanh chóng cho một hệ thống trên một FPGA (System-on-an-FPGA)[6], trong đó có bộ vi xử
lý, bộ điều khiển bộ nhớ, các bộ tăng tốc phần cứng cũng như các bộ điều khiển thiết bị ngoại vi, v.v
1.3 Kỹ thuật ánh xạ ứng dụng lên nền tảng mạng trên chip
1.2.1 Bài toán ánh xạ
Trang 7Bài toán ánh xạ ứng dụng lên nền tảng NoC đã được xây dựng trong [39] đó là quá trình gán các tác vụ của ứng dụng vào các PE của Noc Nó là một trường hợp của phép gán bậc hai (quadratic assignment) đã được chứng minh là một vấn đề NP-hard [31] Không gian tìm kiếm tăng giai thừa lần theo kích thước hệ thống Ví dụ, một NoC có kích thước 8x8, theo lý thuyết có thể có 64! trường hợp ánh xạ
Tổng quát, nếu ánh xạ N tác vụ vào M nút mạng (NM) thì có thể có
M
M N trường hợp ánh xạ các tác vụ vào các nút của NoC Trong trường hợp số tác vụ bằng số nút mạng (M=N) thì số trường hợp ánh xạ trở thành M! Ánh xạ có ảnh hưởng trực tiếp đến hiệu năng của NoC như độ trễ,
thông lượng, tiêu thụ điện năng, năng lượng, v.v Vì vậy cần phải có các kỹ thuật ánh xạ hiệu quả
để tối ưu các thông số này Kỹ thuật ánh xạ phụ thuộc vào các yếu tố sau đây:
(i) Mô hình ứng dụng (ví dụ: Task Graph [25], Data Flow Graph [88], v.v.)
(ii) Mô hình kiến trúc nền tảng phần cứng (ví dụ: Nền tảng đồng nhất, không đồng nhất, số lượng PE và loại PE, v.v.)
(iii) Các tham số ràng buộc của ứng dụng (ví dụ: Hiệu năng tính toán, trễ truyền thông, mức chất lượng, v.v.)
(iv) Mô hình thực hiện truyền thông giữa các PE (ví dụ: Thời gian thực hiện, năng lượng tiêu thụ, v.v.)
(v) Ước lượng thời gian thực hiện trên các PE khác nhau
Bài toán ánh xạ các tác vụ của ứng dụng lên nền tảng NoC có thể được thực hiện tại thời gian thiết kế (design-time) hoặc sau khi thiết kế tức là khi hệ thống đang hoạt động (run-time) Đối với
kỹ thuật ánh xạ tại thời gian thiết kế hay gọi là ánh xạ tĩnh thì kiến trúc nền tảng và ứng dụng đã được biết trước, vì vậy chúng không phù hợp cho việc thêm các ứng dụng mới vào hệ thống tại thời gian chạy Đối với kỹ thuật ánh xạ tại thời gian chạy hay gọi là ánh xạ động thì gần như các ứng dụng đều có thể chạy trên hệ thống khi hệ thống đang hoạt động, kỹ thuật này là một giải pháp phù hợp cho việc triển khai nhiều ứng dụng lên hệ thống có tài nguyên giới hạn Sau khi ánh xạ các tác
vụ lên hệ thống thì một số tác vụ đã được ánh xạ có thể được điều chỉnh vị trí, nếu yêu cầu người dùng thay đổi hoặc có ứng dụng mới đưa vào hệ thống
Trong phần tiếp theo, các kỹ thuật ánh xạ tĩnh và ánh xạ động sẽ thảo luận chi tiết hơn Tuy nhiên, luận án này sẽ tập trung vào kỹ thuật ánh xạ động, do đó chúng ta nghiên cứu sâu hơn về kỹ thuật này
1.2.2 Ánh xạ tại thời gian chạy
Ngược lại với ánh xạ tại thời gian thiết kế là kỹ thuật ánh xạ tại thời gian chạy Kỹ thuật này yêu cầu xem xét về thời gian để ánh xạ các tác vụ bởi vì nó làm tăng tổng thời gian thực hiện của ứng dụng Do đó, thuật toán tham lam thường được sử dụng để ánh xạ hiệu quả nhằm tối ưu các thông số như năng lượng tiêu thụ, độ trễ truyền thông, thời gian thực hiện, v.v
Một vài ưu điểm của ánh xạ động so với ánh xạ tĩnh được tóm tắt như sau:
(i) Khả năng thích nghi với nguồn tài nguyên sẵn có: Các nguồn tài nguyên sẵn có sẽ thay đổi khi các ứng dụng được đưa vào hệ thống lúc đang hoạt động
Trang 8(ii) Khả năng cho phép nâng cấp hệ thống: Nó có thể nâng cấp hệ thống để cho phép ứng dụng mới có thể hoạt động được hoặc thay đổi các tiêu chuẩn mà không được biết đến tại lúc thiết kế, thậm chí sau khi đã đưa tới tay người dùng
(iii) Khả năng để tránh các phần bị hỏng trong một nền tảng: Nếu một hoặc nhiều PE hoạt động không đúng chức năng sau khi sản xuất, hoặc theo thời gian làm cho một số phần tử xử lý
bị hỏng mà chúng ta không thể biết trước tại lúc thiết kế thì các bộ phận lỗi đó có thể bị vô hiệu hóa trước khi thực hiện quá trình ánh xạ [61]
Khi các ứng dụng đã được ánh xạ bắt đầu thực thi, quá trình ánh xạ một hoặc nhiều ứng dụng đang chạy cần phải được xem xét các vấn đề sau:
(i) Một ứng dụng mới được đưa vào hệ thống và nó cần tài nguyên từ các ứng dụng vừa mới thực hiện
(ii) Các thông số của một ứng dụng đang chạy được sửa đổi
(iii) Một ứng dụng đang chạy cần phải kết thúc để giải phóng tài nguyên chiếm giữ
(iv) Yêu cầu hiệu năng của một ứng dụng đang chạy bị thay đổi Điều này có thể cần thêm tài nguyên để thực hiện các chức năng bổ sung
(v) Quá trình ánh xạ hiện tại là không đủ tối ưu, nó yêu cầu ánh xạ lại
Những vấn đề nêu trên chỉ có thể được giải quyết bằng các kỹ thuật ánh xạ tại thời gian chạy
CHƯƠNG 2 PHÁT TRIỂN NỀN TẢNG PHẦN CỨNG CẤU HÌNH LẠI ĐƯỢC CHO NoC 2.1 Thiết kế bộ định tuyến cho NoC
Mạng trên chip được đề xuất như một giải pháp cho truyền thông giữa các IP trong thiết kế các
hệ thống trên chip phức tạp Tránh bế tắc, cắt giảm tắc nghẽn để tăng hiệu năng cho mạng là những thử thách lớn khi thiết kế NoC bởi vì chúng ảnh hưởng trực tiếp đến hiệu năng toàn mạng Để giải quyết các vấn đề này, các bộ định tuyến thường sử dụng kiến trúc kênh ảo đều tại mỗi cổng Trong mục này, tác giả đề xuất một kiến trúc cho bộ định tuyến sử dụng điều khiển luồng wormhole kết hợp với số lượng kênh ảo không đều trên cổng tại ngõ ra để cắt giảm chi phí nhưng vẫn đảm bảo
“deadlock free” và hiệu năng trong trường hợp lưu lượng dữ liệu đi qua mạng là cao nhất Chi phí
và hiệu năng của bộ định tuyến đã đề xuất sẽ được phân tích, đánh giá và so sánh với các bộ định tuyến sử dụng 2 và 4 kênh ảo
2.1.1 Đề xuất kiến trúc bộ định tuyến
Kiến trúc bộ định tuyến sử dụng cấu hình mạng hai chiều dạng lưới (2D-Mesh), chuyển mạch gói, điều khiển luồng wormhole kết hợp với kênh ảo không đều trên cổng và thuật toán định tuyến
XY Bộ định tuyến có 5 cổng gồm cổng Bắc (N), Nam (S), Đông (E), Tây (W) và cổng nội bộ L Tại mỗi cổng, dữ liệu có thể truyền theo hai hướng và có độ rộng là 34 bit Kích thước của mỗi flit
là 34 bit gồm 32 bit dữ liệu và 2 bit còn lại sử dụng cho nhận dạng loại flit Có 3 loại flit: Flit tiêu
đề (header flit), flit thân (body flit) và flit đuôi (end flit)
Kiến trúc đề xuất của bộ định tuyến như Hình 2.3, bao gồm 5 khối chính: Bộ đệm ngõ vào (FIFO), bộ giải mã flit (Flit decoder), chuyển mạch (Switch), kênh ảo và bộ phân xử (Arbiter)
Bộ đệm ngõ vào dùng để lưu trữ tạm thời các flit
Bộ giải mã flit thực hiện chức năng nhận, phân tích thông tin định tuyến trong flit tiêu đề và đưa ra thông tin định tuyến đến các ngõ ra cho gói tin
Chuyển mạch thực hiện chức năng kết nối đường chuyển dữ liệu đến đúng ngõ ra tương ứng theo tín hiệu điều khiển từ khối giải mã flit
Kênh ảo được thiết kế giống như các FIFO dùng để lưu trữ tạm thời các flit khi các flit chưa được cấp phát kênh vật lý
Trang 9ack_out req_in d_in
ack_in req_out
ack_out req_in d_in 34
E
VC 0 Arbiter
2 to1
req_out d_out 34
FIFO
E
E Flit decoder
ack_out req_in d_in 34
W
VC 0 Arbiter
2 to1
req_out d_out 34
FIFO
W
W Flit decoder
ack_out req_in d_in 34
34
VC 1
VC 2
VC 3 FIFO
L
L Flit decoder
ack_out req_in d_in 34
Hình 2.3 Kiến trúc bộ định tuyến đề xuất
Bộ phân xử thực hiện nhiệm vụ điều tiết các kênh ảo khi có yêu cầu truyền flit để cấp phát kênh vật lý, tương ứng
Quá trình vận chuyển các flit từ ngõ vào đến ngõ ra của bộ định tuyến được diễn ra như sau:
Các flit đi vào bộ đệm FIFO và được lưu trữ tạm thời tại đây Các tín hiệu bắt tay req_in và
ack_out sẽ thông báo đến bên gửi tình trạng sẵn sàng ghi và ghi dữ liệu thành công vào FIFO Tiếp
theo các flit sẽ được đưa vào bộ giải mã flit Tại đây địa chỉ nguồn và địa chỉ đích chứa trong flit tiêu đề được phân tích để đưa ra tín hiệu điều khiển hướng đi cho các flit Tiếp theo bộ chuyển mạch sẽ dựa vào các tín hiệu điều khiển được tạo ra từ bộ giải mã flit để tiếp tục chuyển dữ liệu đến các ngõ ra và đưa vào các kênh ảo tương ứng Cuối cùng, bộ phân xử sẽ lựa chọn và cấp phát kênh vật lý cho flit để truyền các flit đến các bộ định tuyến đích đến khi toàn bộ gói tin được truyền xong
Điểm đặc biệt trong thiết kế này đó là việc bố trí các kênh ảo khác nhau tại các cổng nhằm tiết kiệm tài nguyên phần cứng nhưng vẫn tránh được tắc nghẽn và đảm bảo được hiệu năng mạng bằng cách kết hợp linh hoạt giữa việc sử dụng thuật toán định tuyến XY với việc bố trí số kênh ảo phù hợp tại các cổng ngõ ra Điều này có thể được giải thích như sau: Theo nguyên tắc hoạt động của thuật toán định tuyến XY, khi chuyển các flit từ nguồn đến đích, đầu tiên các flit sẽ được truyền theo phương X sau đó đến phương Y đến khi tìm đúng địa chỉ đích sẽ dừng Do vậy, cổng ngõ ra E
sẽ nhận được dữ liệu từ các cổng ngõ vào W và L; cổng ngõ ra W sẽ nhận được dữ liệu từ cổng ngõ vào E và L; cổng ngõ ra S sẽ nhận được dữ liệu từ các cổng vào N, E, W và L; cổng ngõ ra N sẽ nhận được dữ liệu từ cổng ngõ vào S, E, W và L; cổng ngõ ra L sẽ nhận được dữ liệu từ các cổng ngõ vào N, S, E và W Dựa trên phân tích này, tác giả bố trí 4 kênh ảo tại các cổng ngõ ra N và S và
2 kênh ảo cho các cổng ngõ ra còn lại E và W
2.1.2 Kết quả và đánh giá
2.1.2.1 Kết quả tổng hợp
Kiến trúc bộ định tuyến được mô hình hóa bằng ngôn ngữ phần cứng Verilog HDL và được tổng hợp trên KIT FPGA Virtex-6 chip 6VLX240TFF156 bởi công cụ ISE (Integrated Software
Trang 10Environment )14.1 Bảng 2.2 chỉ ra tài nguyên FPGA đã sử dụng khi tổng hợp Kết quả tổng hợp cho thấy bộ định tuyến đã đề xuất chiếm khoảng 0,48% Register và 0,88% LUT so với tổng tài nguyên FPGA Nếu so sánh với trường hợp bộ định tuyến sử dụng 2 kênh ảo thì số Register tăng 26,6% và số LUT tăng 19,5% Tuy nhiên, khi so sánh với trường hợp 4 kênh ảo thì thiết kế đã đề xuất giảm 17,2% tài nguyên Register và 29,7% tài ngyên LUT Vấn đề tăng và giảm tài nguyên trong các thiết kế là do số lượng kênh ảo tăng; các mạch điều khiển kênh ảo và bộ phân xử có độ phức tạp lớn hơn Kết quả tổng hợp cũng chỉ ra rằng tần số làm việc cực đại của bộ định tuyến đã đề xuất có thể đạt đến 426,6 MHz
Bảng 2.2 Tài nguyên sử dụng của các bộ định tuyến trên FPGA
Độ trễ và thông lượng trung bình của mạng với kích thước 3x3 sử dụng bộ định tuyến chứa 1,
2, 4 kênh ảo và bộ định tuyến đã đề xuất sẽ được đánh giá và so sánh Các thông số mô phỏng được thiết lập như Bảng 2.1 và sử dụng công cụ Noxim trong [27] Kết quả mô phỏng về độ trễ và thông lượng trung bình như Hình 2.11 và Hình 2.12
Hình 2.11 Trễ trung bình toàn mạng Hình 2.12 Thông lượng trung bình toàn mạng
2.2 Thiết kế bộ giao tiếp mạng
Bộ giao tiếp mạng là khối logic rất quan trọng trong cấu trúc của NoC Chức năng của nó tương
tự như chức năng của card mạng kết nối giữa máy tính và mạng Internet [36, 45] tức là thực hiện kết nối tài nguyên vào mạng tại các vị trí giao diện dữ liệu vào ra của bộ định tuyến [64] Do sự khác biệt về kích thước dữ liệu, giao diện tín hiệu điều khiển của các tài nguyên với mạng nên bộ giao tiếp mạng có thể thay đổi tùy theo tài nguyên được kết nối với mạng Bộ giao tiếp mạng có thể chia ra làm hai phần như sau: Phần thứ nhất là phần giao tiếp với bộ định tuyến được xem như phần không phụ thuộc vì dữ liệu vào bộ định tuyến là các flit có kích thước dữ liệu cố định theo thiết kế Phần thứ hai là phần giao tiếp với tài nguyên, tùy thuộc vào loại tài nguyên mà kích thước dữ liệu
có thể thay đổi Vì vậy phần này được gọi là phần phụ thuộc
Trang 11C2R_READ_CTRL
state_FFA state_FFB req_router router_ack full_FFB empty_FFB rd_en_FFB
wr_en_FFA empty_FFA full_FFA release_FFA release_FFB pkt_size
C2R_WRITE_CTRL state_FFA core_req state_FFB ack_core
wr_en_FFB empty_FFB full_FFB
ack_core core_req
Data_router Core_data
34 bits
FIFO A
full_FFA empty_FFA wr_en_FFA release_FFB flit_en
R2C_WRITE_CTRL
state_FFA state_FFB ack_router full_FFB empty_FFB wr_en_FFB
rd_en_FFA empty_FFA full_FFA release_FFB A/B_select
R2C_READ_CTRL
state_FFA req_core
rd_en_FFB empty_FFB full_FFB
req_core core_ack
Hình 2.15 Kiến trúc tổng quát của bộ giao tiếp mạng
Kiến trúc của bộ giao tiếp mạng được đề xuất như Hình 2.15 gồm các khối chính sau: Các bộ
đệm FIFO A và B; các bộ điều khiển ghi/đọc dữ liệu vào/ra WRITE_CTRL và READ_CTRL; các bộ ghép Flitilizer và tách flit De-Flitilizer mỗi khối sẽ thực hiện một chức năng riêng
2.2.2 Kết quả và đánh giá
Bộ giao tiếp mạng đã đề xuất được mô hình hóa bằng ngôn ngữ Verilog, tổng hợp và mô phỏng bằng ISE 14.1 và Isim trên FPGA Virtex-6 chip 6VLX240TFF156 Các thông số như tài nguyên sử dụng, độ trễ, tốc độ hoạt động của NI đã đề xuất sẽ được phân tích và đánh giá Bảng 2.4 thống kê tài nguyên sử dụng của NI với trường hợp sử dụng bộ đệm đơn và sử dụng bộ đệm kép NI sử dụng
bộ đệm đơn mất khoảng 0,07% tài nguyên Register và 0,12% tài nguyên LUT so với tổng tài nguyên sẵn có của FPGA, trong khi với phiên bản NI sử dụng bộ đệm kép mất khoảng 0,08% tài nguyên Register và 0,24% tài nguyên LUT Dễ thấy tài nguyên sử dụng của phiên bản bộ đệm kép tăng so với phiên bản sử dụng bộ đệm đơn, điều này có thể lý giải như sau: Xét về kích thước bộ đệm, gần như không thay đổi vì bộ đệm kép được tách đôi từ bộ đệm đơn như sơ đồ khối trong Mục 2.2.1 Tuy nhiên, xét về mặt phức tạp của bộ điều khiển quá trình ghi/đọc trong phiên bản dùng bộ đệm đơn và bộ đệm kép thì phiên bản sử dụng bộ đệm kép có độ phức tạp lớn hơn Đó cũng là nguyên nhân làm tăng tài nguyên sử dụng của NI sử dụng bộ đệm kép
Bảng 2.4 Kết quả tổng hợp trên FPGA
Trang 12Kết quả tổng hợp cho thấy rằng tốc độ hoạt động của NI do tác giả đề xuất lớn hơn so với tốc
độ hoạt động của NI sử dụng một bộ đệm và nghiên cứu trong [4] Nó được thể trong Bảng 2.5 Trễ của bộ giao tiếp mạng sử dụng bộ đệm kép thấp hơn trễ trong NI sử dụng bộ đệm đơn
Bảng 2.5 Tốc độ hoạt động của các bộ giao tiếp mạng
2.3 Phát triển nền tảng phần cứng cấu hình lại từng phần động
Trong giới hạn của nghiên cứu này, tác giả sẽ tập trung vào phát triển một nền tảng mẫu có thể thực hiện theo hai giải pháp Giải pháp đầu tiên, nền tảng có thể cấu hình lại cơ sở hạ tầng truyền thông mạng, có thể cấu hình bộ định tuyến hoặc các thành phần trong bộ định tuyến như bộ đệm, chuyển mạch, bộ phân xử, v.v hoặc cấu hình cả cấu hình mạng để tối ưu kiến trúc truyền thông, trong khi duy trì cố định vị trí của các PE (lõi tính toán) Giải pháp này hoàn toàn phù hợp với kịch bản các ứng dụng chạy trên hệ thống có tải làm việc thay đổi động (ví dụ: thay đổi hiệu năng, thay đổi mức chất lượng) Giải pháp thứ hai, nền tảng có thể thay đổi tự động các PE tại thời gian chạy, trong khi cơ sở hạ tầng truyền thông mạng được giữ cố định Giải pháp này rất phù hợp cho bài toán ánh xạ các ứng dụng khác nhau lên hệ thống hoặc hệ thống có tài nguyên hạn chế nhưng yêu cầu triển khai nhiều ứng dụng lên nó tại các thời điểm khác nhau
và kết quả trên máy tính Khối sysAce_Compact Flash thực hiện giao tiếp với bộ nhớ ngoài CF (Compact Flash), nơi lưu trữ các file cấu hình như kích thước bộ đệm, bộ định tuyến hay các PE được tổng hợp theo các ứng dụng Bộ định thời (Timer) sử dụng để đo thời gian cấu hình của hệ thống HWICAP là một lõi cứng được cung cấp bởi Xilinx [98-99] (XPS_ICAP dùng cho Bus PLB hoặc AXI_ICAP sử dụng cho Bus AXI), nó có vai trò rất quan trọng trong hệ thống cấu hình lại động đó là nhận các file cấu hình từ bộ nhớ ngoài CF hoặc từ bộ nhớ SDRAM DDR3 để nạp vào khu vực cấu hình động của FPGA Ngoài ra, khu vực tĩnh còn chức một số mô đun không cần cấu hình lại của NoC
Khu vực động chứa các mô đun chức năng còn lại của NoC mà có thể thay đổi, sửa lỗi hoặc gỡ
bỏ tại thời gian chạy để thích nghi với yêu cầu thay đổi của ứng dụng
Hoạt động cấu hình lại được thực hiện nhờ vào bộ điều khiển cấu hình và vi xử lý nhúng được đặt trong phần tĩnh Bộ điều khiển cấu hình kết nối bộ nhớ ngoài CF hoặc bộ nhớ SDRAM DDR3 với ICAP thông qua Bus AXI/PLB Bộ nhớ ngoài CF được sử dụng để lưu trữ các file cấu hình từng phần đã được tổng hợp trước dựa trên phân tích các đặc tính của ứng dụng Để thực hiện một quá trình cấu hình, bộ điều khiển sẽ đọc file cấu hình mong muốn từ bộ nhớ ngoài CF hoặc bộ nhớ
Trang 13SDRAM DDR3 để ghi vào ICAP, tiếp theo dữ liệu sẽ được đọc từ ICAP để ghi vào bộ nhớ cấu hình của FPGA
Khu vực động
Khu vực tĩnh
Microblaze Processor
Uart
SysACE CompactFlash
HWICAP AXI/PLB BUS Timer
Flash Memory
Host
NoC DDR3
Phần không cần cấu hình
Phần không cần cấu hình
Phần cấu hình
Phần cấu hình
Hình 2.19 Sơ đồ khối tổng quát của hệ thống
Trong nghiên cứu này, tác giả sử dụng hai phương pháp cấu hình Phương pháp thứ nhất, thực hiện cấu hình từ bộ nhớ ngoài CF Ưu điểm của phương pháp này là tài nguyên mà hệ thống sử dụng nhỏ Tuy nhiên, tốc độ thực hiện cấu hình chậm vì độ rộng bus dữ liệu của bộ nhớ CF bé (8 bit) Phương pháp thứ hai, thực hiện cấu hình từ bộ nhớ SDRAM DDR3 Phương pháp này có tốc
độ cấu hình cao hơn phương pháp cấu hình từ CF vì bộ nhớ SDRAM DDR3 có tốc độ hoạt động và
độ rộng Bus dữ liệu lớn hơn bộ nhớ CF Tuy nhiên, hệ thống phải sử dụng tài nguyên nhiều hơn
2.3.2 Kết quả thực nghiệm
Thiết kế của tác giả được thực hiện và thử nghiệm trên Kit FPGA Virtex-6 dòng chip XC6VLX240T với hai loại Bus PLB/AXI cho các giải pháp nghiên cứu đã được trình bày ở trên Tần số hoạt động của hệ thống tại 100 MHz, tốc độ truyền nối tiếp giữa máy tính và FPGA là 115.200 baud thông qua cổng UART Các công cụ hỗ trợ thiết kế gồm ISE, XPS, SDK và PlanAhead phiên bản 14.1 của Xilinx Tài nguyên phần cứng của các hệ thống tương ứng với bus PLB, AXI và AXI + DDR3 được chỉ ra như Bảng 2.6
Bảng 2.6 Tài nguyên sử dụng của hệ thống
bộ nhớ RAM DDR3 nên tốc độ cấu hình được cải thiện hơn 5 lần so với trường hợp các file cấu hình được đọc từ bộ nhớ ngoài CF vì độ rộng bus dữ liệu của bộ nhớ RAM DDR3 lớn hơn Tuy nhiên, hệ thống này tiêu tốn khá nhiều tài nguyên Do vậy, tùy theo yêu cầu về QoS của từng miền ứng dụng mà chúng ta có thể lựa chọn loại hệ thống cấu hình phù hợp để thực hiện
Trang 14Bảng 2.7 Thời gian và tốc độ cấu hình của hệ thống
1 Router mạng 2x2
Cả mạng 2x2
1 PE của mạng 2x2
CHƯƠNG 3 TRIỂN KHAI CÁC ỨNG DỤNG CÓ THỂ ĐIỀU CHỈNH MỨC CHẤT LƯỢNG VÀO NỀN TẢNG CẤU HÌNH LẠI ĐƯỢC DỰA TRÊN NoC
TẠI THỜI GIAN CHẠY 3.1 Đặt vấn đề
Ngày nay, các thiết bị nhúng đang trở nên quan trọng trong cuộc sống của chúng ta Xu hướng triển khai nhiều ứng dụng và tích hợp nhiều tính năng lên chúng ngày càng gia tăng trong khi tài nguyên của chúng luôn bị giới hạn Điều này đòi hỏi người thiết kế phải có những giải pháp linh hoạt và hiệu quả Các FPGA hiện đại không ngừng tăng số lượng tài nguyên trên nó, giá thành tiếp tục giảm, các tính năng mới được tích hợp đặc biệt là khả năng cấu hình lại từng phần động Do vậy, FPGA là một lựa chọn thích hợp để phát triển nhanh một nền tảng nhúng đa lõi linh hoạt và có hiệu năng cao Theo hướng này, một số hệ thống nhúng dựa trên FPGA đã được phát triển để hỗ trợ cho các ứng dụng đa phương tiện và các ứng dụng xử lý tín hiệu [30, 38, 48, 54, 58] Các ứng dụng này thường yêu cầu cơ sở hạ tầng truyền thông hiệu năng cao và có khả năng xử lý dữ liệu nhanh Nhằm cung cấp một cơ sở hạ tầng truyền thông hiệu năng cao để kết nối các phần tử xử lý (PE) khác nhau của một SoC phức tạp, mạng trên chip đã được đề xuất như là một thay thế cho các kiến trúc truyền thống như Bus và kết nối điểm-điểm [9, 75] Ngoài ra, một nền tảng cấu hình lại không đồng nhất với sự linh hoạt của các bộ xử lý nhúng và hiệu quả tính toán của một số vùng cấu hình lại được dựa trên NoC đã chứng minh là có nhiều ưu điểm hơn so với các nền tảng đồng nhất [1, 49] Trong một nền tảng như vậy, các bộ xử lý nhúng thường được sử dụng để quản lý và thực hiện một số tác vụ phức tạp thấp trong khi các vùng cấu hình lại trên FPGA được sử dụng để tăng tốc tính toán cho các tác vụ phức tạp Khả năng cấu hình động cho phép nền tảng FPGA thích nghi với các yêu cầu xử lý thay đổi của các ứng dụng Mặt khác, nhiều ứng dụng được thiết kế theo cách mà mức chất lượng của chúng có thể được điều chỉnh để phù hợp với khả năng xử lý của các nền tảng phần cứng Do vậy, trong phần này, tác giả xem xét bài toán ánh xạ các ứng dụng có thể điều chỉnh mức chất lượng lên nền tảng tự cấu hình lại động dựa trên NoC không đồng nhất với ràng buộc tài nguyên trong khi vẫn đảm bảo QoS tổng thể tối đa cho các ứng dụng
3.2 Các định nghĩa và xây dựng bài toán ánh xạ
3.2.1 Mô hình ứng dụng
Một vấn đề lớn trong mô phỏng mạng đó là khó có thể chạy chính xác các ứng dụng thực tế trong mô phỏng vì mô phỏng mạng không có khả năng thực thi các mã nhị phân Do đó, trực tiếp chạy các ứng dụng thực tế trên mô hình kiến trúc NoC không phải là điều dễ dàng thực hiện Thay
vì mô phỏng các ứng dụng thực tế Một mô hình lưu lượng cung cấp một phân bố thống kê của truyền thông là một giải pháp đơn giản để mô hình và thực hiện nhanh các mô phỏng Điều này có thể cung cấp các kết quả hữu ích trong giai đoạn đầu của sự phát triển một dự án NoC Do vậy,