Nhưng thiết bị chỉ hoạt động ở một kênh và sửdụng kỹ thuật polling đề kiêm tra trang thái interrupt register, việc này sẽ làm trễ việc bắt tín hiệu hoàn thành từ DMAC, đồng thời CPU phải
Trang 1ĐẠI HỌC QUỐC GIA TP HÒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA KỸ THUẬT MÁY TÍNH
LÊ PHÙNG KHÁNH MINH
KHÓA LUẬN TÓT NGHIỆP
THIẾT KE BO DIEU KHIỂN
DIRECT MEMORY ACCESS CONTROLLER DESIGN
KY SƯ KY THUAT MAY TÍNH
TP HO CHi MINH, 2021
Trang 2ĐẠI HỌC QUỐC GIA TP HÒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THONG TIN
KHOA KỸ THUẬT MÁY TÍNH
LÊ PHUNG KHANH MINH - 16521734
KHOA LUAN TOT NGHIEP
THIET KE BO DIEU KHIEN TRUY CAP BO NHO TRUC TIEP
DIRECT MEMORY ACCESS CONTROLLER DESIGN
KY SU KY THUAT MAY TINH
GIANG VIEN HUONG DAN
THS HO NGỌC DIEM
TP HO CHi MINH, 2021
Trang 3THONG TIN HOI DONG CHAM KHÓA LUẬN TOT NGHIỆP
Hội đồng chấm khóa luận tốt nghiệp, thành lập theo Quyết định số 462/QD-DHCNTT
ngày 23 tháng 07 năm 2021 của Hiệu trưởng Trường Đại học Công nghệ Thông tin.
Trang 4LỜI CẢM ƠN
Trong suốt quá trình gần 5 năm ở giảng đường Đại học, em đã tích lũy được
nhiều kiến thức vô cùng bổ ích cùng những kinh nghiệm quý báu mà các thầy các cô
trường Đại hoc Công nghệ Thông tin — Dai học Quốc gia Thành phố Hồ Chi Minh đã
truyền đạt cho em Em xin chân thành cảm ơn các thầy cô cả trường nói chung, các thầy cô thuộc khoa Kỹ thuật máy tính nói riêng Ngoài kiến thức trên trường thầy cô
còn chia sẻ với chúng em nhiều khía cạnh trong cuộc sống cũng như trong ngành
nghề sau này, em rat biêt ơn mọi người về điêu đó.
Bên cạnh đó, em cảm thấy may mắn vì đã có những người bạn luôn bên cạnh,động viên, hỗ trợ trong suốt quá trình học tập tại trường Mọi người cũng giúp đỡ em
tìm kiếm thông tin, giải quyết các van đề khó khan trong suốt quá trình làm khóa luận
tốt nghiệp Xin chân thành cảm ơn mọi người!
Cuối cùng, em muốn gửi lời cảm ơn đến Ths Hồ Ngọc Diễm va thay Tran Dai
Dương, đã dành thời gian và tâm huyết đề hướng dẫn và giúp đỡ em trong suốt quá
trình thực hiện đề tài Cô và thầy đã truyền đạt cho em những kiến thức quý giá cũng
như những kinh nghiệm học tập dé em hoàn thành khóa luận tốt nghiệp lần này Emcảm thấy vô cùng biết ơn vì điều đó
Lời cuối cùng, em xin kính chúc quý thầy cô và các bạn có thật nhiều sức khỏe,
nhiêu hạnh phúc trong cuộc sông và luôn thành công trong công việc.
Sinh viên
Lê Phùng Khánh Minh
Trang 5MỤC LỤC
Chương 1 Tổng quan đề tài 2 22-©:+£22E+E9EEEEEEE12227112227112711272122711 E1 2
1.1 Téng quan tình hình nghiên cứu -2¿£+++£+E+£+2E++e+£Ex+e+rrxerrrrecee 2
1.1.1 _ Tinh hình nghiên cứu ngồi nue - + + cscscrxsrseteeereerrsree 2
1.1.2 Tình hình nghiên cứu trong ƯỚC 5 5+ S++s++sseEeexeeeeeeereers 3
1.2 Mục tiêu đề tài - 222cc 22212 222211122221122221122.201120 112 0 Eerrie 3
1.2.1 Mục tiêu tổng quát -c2++e+2EEECEEEEECEEEEEEEEE E11 Eecrrkrcee 31.2.2 Mục tiêu chỉ tiẾt -c-522222cc2EEEEErEEEEkErErrkrrrrrrrrrrrrrree 4
IS N08) 20 (i00 1 4
Chương2 Co sở lý thuyẾt -22c2c222Scc2EEESEEEEEEEEEEEEErrrrkerrrrkrrrrrrcee 6
2.1 Định nghĩa về bộ truy cập bộ nhớ trực tiếp "— — 6
2.2 Cơ cầu hoạt s0i-0ài 88) 001 7 2.3 DMAC kết hợp bộ xử lý CPU 22¿©222++++22E++ettEEEEertrrrkrrrrrrrrrrrre 9
2.4 Dé xuất lệnh dma -2 2¿-©EV+2+22EE+++EEEEEE+EEEE11E222112122112127112 221 10Chương3 Thiết kế hệ thống -2-2E++£2EEEEEEEEEEEEEEEEEEEEEtEErkerrrreerre 12
3.1 Thiết kế hệ thống tổng quát -22++£+2E+++EE++tEEEEetEEEetrrrkerrrreree 123.2 Thiết kế DMAC -222-222222+22221122222111222111.2711 22111 21111 17
3.2.1 Khối Address decoder -ccc222+ecccvxettrxkeerrkerrrkerrre 17 3.2.2 Khối Yêu cầu generatOr -¿2++++2+++ttExxettrxxerrrxeerrreerre 20
3.2.3 — Khối Arbiter c22cLccEEErrEEErrerrrrrrrerree 22
3.2.4 Khối DMA Channel 2¿©2++++22E+++t2EEE+erttrrrrrrrrrkrrrrre 26
3.2.4.1 Khối Channel contrỌÏer s se ++Ex++EE++EE++EEvSEktrkerrkerrerrs 283.2.4.2 Khối Channel SCtUP TO 11:20 11117 30
3.2.4.3 Khối Yêu cầu checker ¿-s+s+2E+EE+EE+EE+EE+EESEESEEtEEererrezrerree 32
Trang 63.2.4.4 Khối Channel exeCutiOn -¿- s-5cc2t+EE+EEEEESEEtEEEEEEEEEerrerreererrex 33
3.2.5 4108i1/55100 i51 NNS 38
3.3 Thiết kế khối Datapath -2-2++2EE++22EEE22221112211271122111 211 Excee 39
3.3.1 Xử lý interrupt của DMAC ssc St S.tsireierereiererrke 41
3.3.2 Khối Controller -2c+22E+++rttrxvertrrrxrrrrrrrerrrre 47Chuong 4 Mô phỏng và đánh giá kết QUa eecsseescsseessssesssssesssseessssesssssesesseesssseeee 51
4.1 Kết quả mô phỏng -+©++£+2E+++2EEEEEEEEE12E1127111177111121122.11 E1 re 51
4.1.1 _ Kiểm tra chức năng điều khiển việc truyền dữ liệu của DMAC 51
4.1.2 Kiểm tra hoạt động xử lý interrupt của hệ thống - 58
4.2 Kết quả Post-Implementation c cscssssssessssseessssessssesssssesssssesssseeessseesssesssseees 62
4.3 So sánh với các nghiên cứu đã thực hiỆn ¿5+ 5s+<+x+exve+ssreeses 64
Chương 5 Kết luận và hướng phát triển đề tài -cez+:+e+zc:szer 65
5.1 Kếtluận đề an ~«e~« ⁄ 65
5.1.1 _ Kết quả đạt được của dé tài -©cccecccrxcrrrkerrrrkerrrrkeree 65
5.1.2 §L);0u 1117 e 65
Trang 7DANH MỤC HÌNH
Hình 2.1: Truyền dữ liệu với CPU - 22 22+2++£+2EEE£2EEEESEEEEEEEEECEEEEerrrrkerrrrrcee 6
Hình 2.2: Truyền dữ liệu với cơ chế DMA 2-2¿©2+2£2++++2E+Evcrxererrkerrrkecee 7
Hình 2.3: Sơ đồ trang thái hoạt động của khối đọc và khối ghi - 8
Hình 2.4: So đồ tổng quát về việc kết hợp DMAC vào CPU -. 10 Hình 2.5: Cấu trúc lệnh dma 2£©2£©++£+EE++££EE+EEEEEEtEEEEteEEEerrrrkrrrrreerre 11
Hình 3.1: Cau trúc tong quát của hệ thống ¿-¿©++£+2E++e+EE+z+Erxerrrreesrr 12
Hình 3.2: Cấu trúc tong quát của khối DMAC -¿©+++2+z+czxzrerrseeeri 15
Hình 3.3: Cấu trúc chi tiết của khối DMAC -.2¿-©2222¿222+vzrrvvrxeerrrrreccee l6
Hình 3.4: Cấu trúc của khối Address đecO(er - 2: ¿©+z+2+++vvxerervseeerx 17
Hình 3.5: Cấu trúc của khối Yêu cầu øeneration -z¿+sz+++++erxeszrrseerr 20
Hình 3.6: Cấu trúc của khối ATbifer -+-++£©++22E+£tSEEEetEEEEeeEEEEerrkrrrrreerre 23
Hình 3.7: Sơ đồ nguyên lý của khối Arbiter -¿ 2£ ©++£+2++e+tExee+erxerrrseere 25
Hình 3.8: Cấu trúc của khối DMA Channel 2: 2©+£+2++++2E++e+2zxz+cvseeer 26
Hình 3.9: Cấu trúc chỉ tiết của khối DMA Channel . -¿+25c¿+csscceẻ 28Hình 3.10: Cấu trúc của khối Channel eontrolÏer sc- sc s+:x++tx++£x++zx+zzx+zrxs 28
Hình 3.11: Cấu trúc của khối Channel setup register ¿-z+c5sc+¿ 30
Hình 3.12: Cấu trúc của khối Yêu cầu checker -¿2+z++2+zz++c+sc++e 32
Hình 3.13: Cấu trúc của khối Channel Execution -s ¿s+cs+zx+zz++zx+zxszresrezss 34
Hình 3.14: Cấu trúc chi tiết của khối Channel exXecutiOn -s- se sezs++rv+ 36
Hình 3.15: Cấu trúc của khối Interrupt interface -2¿s+++z+22z+e+zcvsezrr 38
Hình 3.16: Cấu trúc chi tiết khối Datapath -¿- ¿©++£+2E++e+EExeeterxerrrrrerrr 40Hình 3.17: Cấu trúc của khối queue - 2c ++£+++£+2E++£+2E+++tEEEEeerrxerrrkerrrre 43Hình 3.18: Cấu trúc của khối stack -2-++++22+++++22E+++tttEEAerrrrrkerrrrrkecree 44
Hình 3.19: Cau trúc của khối ControÏÏer ¿z2++£+++++2xz+crxzrzrreeerr 47
Hình 4.1: Mơ phỏng hoạt động của DMAC (1) vee eeeeeeeseseseneseecsenessaeeseneseneeeeeees 57 Hình 4.2: Mơ phỏng hoạt động của DMAC (2) 5-5-5 Scscsreieersrererreree 58 Hình 4.3: Mơ phỏng hoạt động của DMAC (3) 5c ccccscssrerersrerrrree 58
Hình 4.4: Mơ phỏng hoạt động của hệ thống 11 61
Trang 8Hình 4.5: Mô phỏng hoạt động của hệ thống 22 62
Trang 9DANH MỤC BANG
Bảng 3.1: Các tín hiệu input và output của DMACC 5c scsscrseeresrereee 13
Bảng 3.2: Các thành phần của DMAC -2¿22222+c222S+vrtEEEExrrrrrkrrrrrrrerree 15
Bảng 3.3: Các tín hiệu input và output của khối Address đecoder 17
Bảng 3.4: Chức năng truyền dữ liệu của từng kênh DMA - :-: 19
Bảng 3.5: Vùng địa chỉ nguồn — đích ứng với từng kênh DMA . 19
Bảng 3.6: Các tín hiệu input và output của khối Yêu cầu øenerator 20
Bảng 3.7: Cách hoạt động của khối Yêu cầu generatOr -¿- z2 21 Bảng 3.8: Các tín hiệu input va output của khối Arbifer ¿- z5 23 Bảng 3.9: Các tín hiệu input và output của khối DMA Channel 26
Bang 3.10: Các tín hiệu input va output của khối Channel controller 29
Bảng 3.11: Các tín hiệu input và output của khối Channel setup register 30
Bảng 3.12: Các tín hiệu input và output của khối Yêu cầu checker 32
Bảng 3.13: Cách hoạt động của khối Yêu cầu checker - -csc+¿ 33 Bảng 3.14: Các tín hiệu input va output của khối Channel execution 34
Bảng 3.15: Các tín hiệu input và output của khối Interrupt interface - 39
Bảng 3.16: Giá trị các thanh ghi được minh họa về một chương trình assembly 42
Bảng 3.17: Các tín hiệu input và output của khối queue - ¿2+2 45 Bảng 3.18: Các tín hiệu input và output của khối stack c¿©cssc+¿ 45 Bảng 3.19: Các tín hiệu input và output của khối Controller - 48
Bảng 4.1: Thông tin về dir liệu mô phỏng trong Data Memory 51
Bảng 4.2: Mục tiêu kiểm tra mô phỏng DMAÁCC ni, 53 Bảng 4.3: Khởi tạo giá trị cho thanh gh1 5 + 555 2£ +vEeeeEeeexereeeersrke 54 Bang 4.4: Các lệnh dma phục vụ kiểm tra hoạt động của DMAC - 54
Bang 4.5: Dữ liệu trong Data Memory sau khi chạy mô phỏng DMAC 55
Bảng 4.6: Mục tiêu kiểm tra mô phỏng hệ thống 2¿ +2scz2ccssccee 59 Bảng 4.7: Các lệnh dma phục vu kiểm tra hoạt động của hệ thống ¬ 59 Bảng 4.8: Dữ liệu trong Data Memory sau khi chạy mô phỏng hệ thống 59
Bang 4.9: Kết qua kiểm tra thời gian và tan số hoạt động của thiết ké 63
Trang 10Bảng 4.10: Kết quả so sánh với các nghiên cứu đã thực hiện - 64
Trang 11DANH MỤC TU VIET TAT
Dang viết tắt Dạng đầy đủ
AUU Arithmetic Logic Unit CPU Central Processing Unit DMA Direct Memory Access DMAC Direct Memory Access Controller
FIFO First In First Out
FPGA Field-programmable gate array
VO IN/OUT
ISE Instruction Set Extension
RISC-V Reduced Instructions Set Computer V
Trang 12TOM TAT KHÓA LUẬN
Trong thời đại số hiện nay, các thiết kế vi mach không ngừng phát triển nhăm
tăng tối đa các ứng dụng cũng như tốc độ của hầu hết các thiết bị điện tử Các nhà
nghiên cứu và doanh nghiệp đã và đang nỗ lực trong vấn đề phát triển các vi kiến
trúc Là sinh viên của trường Dai hoc Công nghệ Thông tin — Đại hoc Quốc gia Thành phố Hỗ Chí Minh, nhóm cũng mong muốn góp phan vào công cuộc phát triển đó Vì
vậy, nhóm mong muốn thực hiện đề tài Thiết kế bộ điều khiển truy cập bộ nhớ trực
tiếp với mong muốn ý tưởng có thé được hiện thực hóa và phát triển trong tương lai.
Trong khóa luận tốt nghiệp này, nhóm sẽ trình bày van đề về việc thiết kế một
Bộ điều khiến truy cập bộ nhớ trực tiếp DMAC theo kiến trúc tập lệnh RISC-V
32-bit Nhóm sẽ thực hiện việc kết nối DMAC với bộ xử lý dé thực hiện việc truyền dữ
liệu trực tiếp đến Data Memory Bên cạnh đó, thiết kế DMAC sẽ hoạt động với bốn
kênh truyền phục vụ mục đích truyền khác nhau và hoạt động xử lý interrupt.
Trang 13Chương 1 Tổng quan dé tai
1.1 Tổng quan tình hình nghiên cứu
RISC-V là một kiến trúc tập lệnh mở cho phép sửa đổi và can thiệp đến thiết
kế bên trong Vì vậy, RISC-V rất phổ biến trong thời gian gần đây, được áp dụng
trong học tập nghiên cứu và phát triển các sản phẩm máy tính Đại học Berkeley đã
góp phan phát triển kiến trúc này dé giảm các chi phí về phần mềm thông qua việc
cho phép sử dụng nhiều hơn các tập lệnh mở được triển khai ở phần cứng Việc triểnkhai RISC-V có thé dé dàng mở rộng bằng cách thiết kế thêm hoặc tùy chỉnh các
chức năng mong muốn [1].
Với đặc điểm là kiến trúc tập lệnh mở, RISC-V nhanh chóng được các nhà
khoa học, các nghiên cứu sinh cũng như các doanh nghiệp mô xẻ với nhiều mục dich
khác nhau Ngoài các tập lệnh sỐ nguyên co bản như RV32I, RV64I và RV128L,
RISC-V còn được cải tiến với các tập lệnh mở rộng ISE như RV32M, RV32F,
RV32D, [2] Bên cạnh đó một số nhà nghiên cứu còn tận dụng các đặc điểm của
RISC-V dé mở rộng các chức năng không thuần CPU như thuật toán mã hóa dữ liệuAES [3] hay xử lý tín hiệu không dây với năng lượng tiêu thụ cực thấp [4]
Bộ điều khiển truy cập bộ nhớ trực tiếp DMAC là một yêu cầu thiết yếu đối
với đa số các nền tảng máy tính hiện đại, phục vụ cho mục đích truyền nhận đữ liệu.
Nhóm đề tài mong muốn tận dụng kiến trúc mở của RISC-V để tạo ra một tập lệnh
có thé điều khiển các hoạt động của DMAC, nhăm tăng tốc độ truyền thông tin cấuhình tới DMAC và giảm tài nguyên khi kết nối CPU với DMAC thông qua bus hệ
thống Nhóm đã khảo sát và tìm hiều về tình hình nghiên cứu DMAC trong và ngoài
nước nhằm phục vụ cho mục đích đề tài:
1.1.1 Tinh hình nghiên cứu ngoài nước
Xilinx đã công bố sản phẩm DS579 của họ vào năm 2010 [5] Đây là một DMAC trung tâm phục vụ cho các thiết bị ngoại vi và các thiết bị nhớ memory trên
bus PLB Đây là một sản phẩm hoàn chỉnh với khả năng kết nối 32-bit master/slave
Trang 14với độ rộng bus là 32, 64 và 128 bits Nhưng thiết bị chỉ hoạt động ở một kênh và sử
dụng kỹ thuật polling đề kiêm tra trang thái interrupt register, việc này sẽ làm trễ việc
bắt tín hiệu hoàn thành từ DMAC, đồng thời CPU phải kiểm tra các thanh ghi này
liên tục, điêu này làm giảm hiệu năng của hệ thông.
Năm 2018, Yingying Chi và Zhe Zheng đã công bé đề tài A Design of Direct
Memory Access Controller for Wireless Communication SoC in Power Grid, phuc
vụ cho hệ thống không day với khả nang hỗ trợ bốn kênh DMA theo thứ tự ưu tiên,
nhưng chi dùng lại ở mô phỏng chức năng ở dạng séng[6].
Năm 2019, Xilinx công bố LogiCORE IP AXI DMA v7.1, hỗ trợ 16 kênh truyền với tốc độ tối đa là 399.04MB/s, tần số 100MHz [7].
1.1.2 Tình hình nghiên cứu trong nước
Năm 2014, hai sinh viên Nguyễn Tan Tai và Lê Ngọc Hải, trường Đại học
Công nghệ Thông tin ĐHQG Thành phó Hồ Chí Minh, đã nghiên cứu về IPs coreDSP 32-bit Direct Memory Access Controller cho bài báo cáo khóa luận tốt nghiệp
theo chuẩn Avalon Bus của Altera [8] Kết quả nghiên cứu thiết kế thành công hai bộ
DMAC một và hai chiều, nhưng chưa kết hợp được hai bộ này thành một Thiết kế
vẫn dựa trên kỹ thuật polling dé kiểm tra interrupt và tan số tối đa đạt được: 100MHz
tốc độ truyền 44Mbytes/s dùng cho một kênh DMA duy nhất
Năm 2018, các nhà nghiên cứu Nguyễn Kiêm Hùng, Đồng Phạm Khôi và TrầnXuân Tú đã công bố đề tai A Reconfigurable Multi-function DMA Controller for
High-Performance Computing Systems, tại hội nghị hội nghị NICS 2018 Dé tài có
khả năng cấu hình với nhiều chức năng truyền dữ liệu khác nhau, đặc biệt là truyền
dữ liệu đưới dạng ma trận Tần số hoạt động tối đa của hệ thống là 1428.57 MHz [9] 1.2 Mục tiêu đề tài
1.2.1 Mục tiêu tong quát
Mục tiêu tổng quát của nhóm thực hiện đề tài là thiết kế một bộ điều khiến
truy cập bộ nhớ trực tiếp DMAC đa kênh dựa trên kiến trúc tập lệnh RISC-V 32-bit.
Trang 151.2.2 Mục tiêu chỉ tiết
e_ Mục tiêu thứ nhất, bộ DMAC có khả năng điều khiến việc thực thi
truyền dữ liệu thông qua tập lệnh của RISC-V 32-bit Điều này có nghĩa
là nhóm sẽ thiết kế tập lệnh mở rộng RISC-V 32-bit cho DMAC.
© Muc tiêu thứ hai, bộ DMAC có khả năng điều khiến việc truyền dữ liệu
trên 4 kênh DMA (DMA channel).
© Mục tiêu thứ ba, bộ DMAC phải có khả năng điều khiến việc thực thi
truyền dữ liệu giữa memory-memory, memory-IJ/O, I/O-memory I/O ở
day 1a serial I/O.
e Mục tiêu thứ tư, kênh DMA đạt tốc độ truyền dit liệu là 45Mbytes/s.
e_ Mục tiêu thứ năm, đánh giá kết quả hoạt động của thiết kế theo luồng
thiết kế Xilinx Vivado FPGA Design Flow:
o Mô phỏng kết quả thực thi của bộ xử lý trên Vivado
o Post-Implementation: kiêm tra thời gian va kết quả thực thi của
thiết kế trên Vivado.
o Giai đoạn thực hiện hóa: kiểm tra quá trình thực thi và kết qua
hoạt động của thiết kế trên FPGA (Virtex 7)
© Mục tiêu cuối cùng, so sánh kết qua mô phỏng và thực nghiệm với các
dé tài nghiên cứu đã thực hiện.
1.3 Phương pháp nghiên cứu
e Phương pháp nghiên cứu tài liệu:
o Tìm hiểu lý thuyết về bộ điều khiển truy cập bộ nhớ trực tiếp DMAC
o Cơ chế hoạt động của DMAC và cách thức giao tiếp với CPU
o Tìm hiểu về kiến trúc tập lệnh RISC-V.
o Phân tích, đánh gia và đưa ra các trạng thái hoạt động của DMAC.
o Đưa ra phương án thực hiện.
o Phân tích, đánh giá giải pháp và các phương án được đưa ra.
e Phương pháp thiếtkế: Xilinx Vivado FPGA Design Flow.
Trang 16e Phương pháp mô phỏng:
o Viết testbench mô phỏng chức năng trên Vivado
o_ Tối ưu hóa thiết kế
o_ Kiểm tra thời gian thực thi của kênh DMA và DMAC trên Vivado
e Phuong pháp thực nghiệm: Hiện thực va kiểm tra trên FPGA (sử dung kit
Virtex 7).
Trang 17Chương 2 Cơ sở lý thuyết
2.1 Định nghĩa về bộ truy cập bộ nhớ trực tiếp
Trong cách thức hoạt động của máy tính, thường thì hoạt động chuyên thông
tin giữa các thiết bị với nhau được thực hiện thông qua CPU theo cơ chế tuần tự Dé
có thê chuyền được thông tin từ một thiết bị ngoại vi tới bộ nhớ, CPU phải ra lệnh dé
có thé đọc một lượng thông tin từ ngoại vi vào thanh ghi CPU, sau đó ra lệnh ghi
thông tin đó từ register đến ô nhớ RAM đã được chỉ định
RAM
Hình 2.1: Truyền đữ liệu với CPU Quá trình này nhanh chậm tùy thuộc vào độ lớn thông tin cần chuyên, thường
thì sẽ rất nhiều Điều này khiến quá trình chuyên thông tin trở nên rất chậm, buộc
CPU phải tốn nhiều chu kỳ máy đề thực hiện quá trình truyền dữ liệu, làm ảnh hưởng
đến các tác vụ khác phải chờ cho đến khi việc truyền dữ liệu thực hiện xong
Dé giải quyết cho van dé trên, DMAC được sử dụng dé cho phép điều khiếnviệc truyền dit liệu trực tiếp giữa các thiết bị mà dữ liệu không cần đi qua CPU nữa
Điều này giúp tăng tốc độ truyền dữ liệu giữa các thiết bi với nhau, đồng thời CPU
vẫn thực hiện được các công việc khác mà không cần phải chờ, nhờ vậy mà toàn bộ
hệ thống cũng nhanh hơn đáng kê.
Trang 18Hình 2.2: Truyền dữ liệu với cơ chế DMA
2.2 Cơ cấu hoạt động của DMAC
DMAC trực tiếp điều khiến việc doc/ghi dữ liệu giữa các vùng nhớ với nhausau ghi đã nhận được yêu cầu từ CPU Bộ điều khién sẽ điều khiển hai thành phan
chính là khối đọc và khối ghi (read block và write block) Hai khối này sẽ trực tiếp
thực hiện truyền dt liệu đảm bao cho việc đọc và ghi thông tin chính xác lên từng
vùng nhớ Các trạng thái hoạt động của khối đọc và ghi được mô tả như Hình 2.3.
Trang 19rd_done = 0 wr_done = 0
read_ valid =0 write_ valid = 0
read_ data = read_ data write_data = write_ data
read_ valid =0 write_ valid = 0
read_ data = i_read_data write_data =1 _write_ data o_read_addr = read_addr o_write_addr = write_addr
read_valid = | write_valid = 1
read_addr = read_addr + 4 write_addr = write_addr + 4
write_addr == last_add.
Hình 2.3: So đồ trang thái hoạt động của khối đọc và khối ghi.
Các khối hoạt động dựa trên các tín hiệu điều khiển do DMAC phân tích từ
các lệnh nhận được từ CPU, khởi tạo các thông tin cần thiết dé thực hiện công việctruyền dir liệu Chi tiết về các tín hiệu input và output của hai khối được trình bày ở
mục 3.2.4.4.
e Khối đọc:
o Sau khi được kích hoạt, khối đọc sẽ được nạp các giá tri khởi tạo là địa
chỉ cần đọc (read_addr) và kích thước khối dữ liệu cần đọc (i_length)
Khối đọc sẽ tự tinh toán địa chỉ cuối cùng (last_addr) cần đọc.
Trang 20o Tín hiệu báo rằng bộ đệm FIFO đã đầy (FF_full), giúp khối đọc xác
định có nên tiếp tục đọc hay dừng Nếu FIFO day, việc đọc dit liệu sẽ
dừng lại và chờ đến khi tín hiệu FF_full tắt để việc đọc trở lại
o Việc kiêm tra bộ nhớ đệm FIFO có day hay không rat quan trọng, việc
này giúp tránh việc truyền thông tin bi sai lệch
o Sau từng địa chỉ được đọc, read_ addr sẽ trỏ tới dia chỉ kế tiếp và tới khi
“read_addr =last_addr” thì quá trình đọc hoàn thành, tín hiệu done sẽ được kích hoạt
e Khối ghi:
o_ Tín hiệu kích hoạt sẽ cho phép khối ghi nạp các giá trị khởi tạo tương
tự với khối đọc: địa chỉ cần ghi (write_addr) và kích thước khối dữ liệu
cần ghi (i_length) Dia chỉ ghi cuối cùng (last_addr) sẽ được tính toán.
o Tín hiệu báo bộ đệm FIFO trống (FF_empty) giúp ngăn không cho khối
ghi thực hiện khi không có dữ liệu nào hợp lệ.
o Tương tự với khối đọc, sau mỗi lần ghi hợp lệ write_addr sẽ trỏ đến địa
chỉ kế tiếp cần ghi Quá trình ghi hoàn thành sau khi write_addr =
last_addr, done sẽ được kích hoạt.
Vai trò của bộ đệm FIFO cũng rat cần thiết trong thiết kế FIFO hay còn gọi
là hàng đợi, được sử dụng như bộ đệm lưu trữ dữ liệu tạm thời giữa hai miền có tốc
độ xử lý dữ liệu khác nhau FIFO là bộ nhớ đệm giữa 2 khối đọc và ghi, giúp cho việc
doc/ghi được thực hiện một cách chính xác.
2.3 DMAC kết hợp bộ xứ lý CPU
Các hệ thống thông thường CPU sẽ giao tiếp với DMAC thông qua bus hệ
thống Điều này làm trễ công việc DMAC mỗi lần yêu cầu quyền truy cập bus đến
CPU Sau mỗi lần gửi yêu cầu sử dụng bus, DMAC phải chờ đến khi CPU cho phépmới được truy cập và tiến hành điều khién việc truyền di liệu Ngoài ra, việc đưa các
thông tin câu hình đến DMAC từ CPU thông qua bus hệ thống sẽ tốn nhiều chu kỳ
hơn.Với bộ DMAC bên CPU, việc yêu cầu sử dụng bus cũng như cấu hình DMAC
Trang 21sẽ diễn ra một cách trực tiếp, giảm độ trễ cho DMAC Việc kết hợp DMAC vào bên
trong CPU không làm cho chúng ràng buộc với nhau DMAC vẫn hoạt động riêng
biệt, việc truyền dữ liệu không làm ảnh hưởng đến các công việc của CPU Lệnh điều
khién DMAC được dựa trên kiến trúc tập lệnh RISC-V 32-bit có sẵn giúp việc cau
hình DMAC đơn giản và hiệu quả hơn.
Phương pháp này cho phép thực hiện nhiều công việc truyền dữ liệu cùng lúc bằng một lệnh dma CPU chỉ cần truyền lệnh đến DMAC và sau đó thực hiện các công việc khác Cấu trúc về hệ thống tổng quát mà nhóm hướng đến được thê hiện
Trang 22Mô tả dưới dang Verilog:
for (i = 0;i < rs2;i = i+4) {M[rd+i] = M[rs1+i];}
Lénh dma bao gom các trường tương ứng với định dạng lệnh R (R-format) của kiến trúc tập lệnh RISC-V Nhóm đề tài chọn định dạng lệnh R vì các giá trị khởi tạo
cần thiết cho DMAC phù hợp với cấu trúc của định dạng lệnh:
e opcode - 7’b0100111, là trường định danh lệnh, giúp phân biệt các lệnh khác
nhau.
e rd- trường chứa giá tri địa chỉ thanh ghi, thanh ghi này chứa dia chỉ vùng nhớ
đích (Destination address) La địa chỉ bắt đầu dé ghi dữ liệu
e rsi - trường chứa giá tri địa chỉ thanh ghi, thanh ghi này chứa dia chỉ vùng
nhớ nguồn (Source address) Là địa chỉ bắt đầu đề đọc dữ liệu
e rs2—frường chứ giá tri địa chỉ thanh ghi, thanh ghi này chứa giá trị kích thước
khối dữ liệu cần truyền Kích thước tối đa của một lần truyền là 232 ~ 16GB
e funct7 và funet3 là hai trường rỗng, mang giá trị là 0.
Chức năng của lệnh dma là khởi tạo các giá trỊ: địa chỉ nguồn và địa chỉ đích
của vùng nhớ cần được doc/ghi Dữ liệu sẽ được truyền từ địa chỉ nguồn đến địa chỉ
đích Kích thước dữ liệu cũng được khai báo trong lệnh dma, giúp cho DMAC biết
được số lượng word cần truyền, từ đó có thé tính ra được địa chỉ kết thúc dé DMAC
xác định khi nào thì công việc được hoàn thành.
11
Trang 23read_ data read_addr write_addr dma_read_addr dma_read_data dma_write_addr dma_write_data
read_data write_addr write_data
Data Memory
Hình 3.1: Cấu trúc tong quát của hệ thống.
12
Trang 24Trong đó hệ thống vẫn sẽ bao gồm các khối thực thi chung của một CPU cơ
ban là Program Counter, Instruction Memory, Register File, ALU, Controller, Immediate Generation va Data Memory.
Nhung với việc khối DMAC được thêm vào, thì phan tai nguyên của DataMemory sẽ được chia sẻ chung cho cả hai khối Datapath và DMAC Khối Selector
sẽ quyết định một trong hai khối trên có quyền truy cập vào Data Memory Hệ thống kết nối DMAC với CPU dựa trên các tín hiệu cần thiết mà DMAC cần từ CPU và
ngược lại.
Các tín hiệu 1nput va output cua bộ điều khiển truy cập bộ nhớ trực tiếp DMAC
được mô tả trong Bang 3.1.
Bảng 3.1: Các tín hiệu input va output của DMAC.
Tín hiệu xung clock của hệ thống
Tín hiệu reset của hệ thống (tích cực mức thấp).
Gia tri dia chi bat dau của nguôn dữ liệu
dma_source_addr ` ¬
cân truyên đi.
a Giá trị địa chỉ bat đầu của vùng dữ liệu
dma_ destination_ addr tok
muon truyên đến.
13
Trang 25Giá trị địa chỉ bắt đầu cân đọc của vùng dma_read_addr output | 32 bit : :
dữ liệu muôn truyền di.
Gia tri dia chỉ bat dau cân ghi của vùng
dma_write_addr output | 32 bit ) ¬
dữ liệu muôn truyén đên.
Bộ điều khiến truy cập bộ nhớ trực tiếp DMAC theo kiến trúc tập lệnh
RISC-V 32-bit đơn chu kỳ được nhóm đề tài phân tích và thiết kế dựa trên cơ sở lý thuyết
[8], [10] Cấu trúc của khối DMAC được trình bày ở Hình 3.3.
14
Trang 26DMA Channel
Hình 3.2: Cấu trúc tổng quát của khối DMAC
Các thành phần của khối DMAC gồm có: Address decoder, Yêu cầu generation, Arbiter, 4 khối DMA Channel ứng với 4 kênh, Interrupt Interface, Decoder va các khối Selector Thành phan của DMAC được trình bày ở Bảng 3.2.
DMA Channel Nhận thông tin, cài đặt và trực tiếp truyền di liệu.
Interrupt interface Tao ra tin hiéu ngat dén hé thong
Nhận dữ liệu doc được từ Data Memory và truyền đến
đúng kênh DMA đang hoạt động.
Là các khối nhận thông tin từ đúng kênh DMA, sau đótruyền đến Data Memory
15
Trang 27Cấu trúc chỉ tiết của khối DMAC được mô tả trong Hình 3.3.
write_data_1 write_data_2 write_data_3 write_data_4
read_data_1 read_data_2 read_data_3 read_data_4
Trang 283.2 Thiết kế DMAC
3.2.1 Khối Address decoder
Khối Address decoder là một khối giải mã địa chỉ sau khi nhận các giá trị địa
chinguén dma_source_addrvàđíchdma_ destination_addr mà hệthống muốn truyền
Address decoder có cấu trúc như Hình 3.4.
Hình 3.4: Cấu trúc của khối Address decoder
Các tín hiệu input và output của khối Address decoder được mô tả trong Bảng
Trang 29Gia tri địa chỉ bat dau của nguon dữ
dma_source_addr ; : ¬
liệu cân truyền di.
¬ Giá trị địa chỉ bắt đầu của vùng dữ
dma_ destination_ addr ; , ¬
liệu muôn truyên đên.
dma_length Giá trị kích thước dữ liệu cần truyền.
channel_ sel[0]: DMA Channel 1
channel_sel output 4 bit
channel_sel[1]: DMA Channel 2 channel_ sel[2]: DMA Channel 3 channel_ sel[3]: DMA Channel 4
Thiết kế của nhóm dựa trên phương pháp ánh xạ bộ nhớ (memory mapping)
đối với khối Data Memory Ánh xạ bộ nhớ sử dụng cùng một không gian địa chỉ dé
thé hiện cho cả vùng nhớ memory và thiết bị I/O Các thiết bị /O ở đây được hiểu làcác thiết bị ngoại vi với phương thức truyền nối tiếp hay còn gọi là Serial I/O
Ứng với các chức năng khác nhau của từng kênh DMA, Address decoder sẽgiải mã các giá trị địa chỉ được đưa vào và xác định rằng vùng nhớ mà hệ thống muốntruy cập là memory hay I/O Từ đó cung cấp đúng các giá trị này đến kênh DMA phùhợp Các chức năng của từng kênh DMA được thé hiện trong Bang 3.4
18
Trang 30chỉ 0x74, 0x78, 0x7C và 0x80 Cụ thẻ việc giải mã địa chỉ được thể hiện như Bảng
3.5.
Bảng 3.5: Vùng địa chỉ nguồn — đích ứng với từng kênh DMA
dma_ destination_addr | channel_sel[3:0]| Kênh DMA 0x00 - 0xóC 0x00 - Ox6C 3ˆb0001
19
Trang 313.2.2 Khối Yêu cầu generator
Khôi Yêu câu generator là khôi có chức năng tạo ra tín hiệu yêu câu đê sử
dụng các kênh DMA Yêu cầu generator có cấu trúc như Hình 3.5
Các tín hiệu input và output của khối Yêu cầu generator được mô tả như Bang
channel_ sel[3:0] req[3:0]
> Request
channel_done[3:0] generation
Hình 3.5: Cau trúc của khôi Yêu cau generation.
Bảng 3.6: Các tín hiệu input va output của khối Yêu cầu generator.
20
Trang 32req[0]: DMA Channel 1
req[1]: DMA Channel 2 req[2]: DMA Channel 3 req[3]: DMA Channel 4 output 4 bit
Mục dich của khối Yêu cầu generation là để tạo ra một yêu cầu hợp lệ cho từng kênh DMA Đồng thời khối này còn giúp duy trì trạng thái yêu cầu đến các kênh tránh việc truyền dt liệu bi giản đoạn do một lệnh dma yêu cầu đến kênh khác truyền
vào, làm tắt tín hiệu channel_ sel ở kênh hiện tại Ví dụ: khi lệnh dma thứ nhất chọn
kênh 1, tín hiệu channel_sel[0] tích cực, dẫn đến req[0] cũng được kích hoạt Đến chu
kì kế tiếp, khi lệnh dma thứ 2 xuất hiện và chọn kênh 2, lúc này channel_sel[ 1] tích
cực, nhưng channel_sel[0] sẽ bị tắt làm cho req[0] tat theo Lúc này, thay vì kênh 1 đang hoạt động thì bị kênh 2 chen vào làm gián đoạn Vì thế hệ thống sẽ hoạt động không đúng với mục đích ban đầu.
Qua phân tính trên, nhóm đã đưa ra được cách thức hoạt động của khối Yêucầu generation như Bảng 3.7
*Luu ý: các bit khác của các tín hiệu hoạt động tương tự với bit [0] trong Bang 3.7.
21
Trang 333.2.3 Khoi Arbiter
Trong trường hợp các kênh DMA đều được yêu cầu dé hoạt động, trường hop
các kênh cùng được hoạt động là điều không thê, kể cả trong các thiết kế pho thônghiện nay, vì việc sử dụng tài nguyên tại một thời điểm chỉ có thể do một khối thựchiện Vì vậy, việc tiến hành phân xử dé cấp quyên truy cập cho từng kênh DMA là
rat cần thiết Tùy vào mục đích của từng hệ thống, Arbiter có thé được áp dụng thuật
toán FIFO, thuật toán Round Robin hoặc thuật toán độ ưu tiên Với thuật toán FIFO,
các yêu cầu sẽ được phân xử theo thứ tự xuất hiện của yêu cầu Thuật toán Round
Robin sẽ phân xử các yêu cầu theo cơ chế công bằng, các yêu cầu sẽ được thực hiện
luân phiên Thuật toán độ ưu tiên sẽ phân xử các kênh có mức độ ưu tiên từ cao tới
thấp Ví dụ: mức độ ưu tiên của chức năng truyền I/O — memory là cao nhất, tiếp đến
là memory — /O và memory — memory; Arbiter sẽ cấp phép cho yêu cau các kênh theo thứ tự kênh 2, 3, 1 và 4 Dựa trên tham khảo thiết kế DMAC đa kênh như tài liệu [10] nhóm đề quyết định lựa chọn thuật toán Round Robin với mục đích cân bằng
độ ưu tiên giữa các kênh.
Khác với thuậttoán Round Robin dưới góc độ phần mềm, cơ chế Round Robin
trên phần cứng không cho phép ngắt các công việc giữa chừng, điều này gây tốn nhiều
tài nguyên và mức độ cần thiết không lớn Bên cạnh đó một vài giao thức không cho
phép ngắt giữa chừng sau khi đã được cấp phép (cấp phép hoạt động) Vì vậy, cơ chếRound Robin ở phần cứng không có khoảng thời gian truy cập nhất định hay còn gọi
là quantum time, mà một yêu cau sau khi đã được cấp phép thì phải hoàn thành công
việc của nó trước khi chuyên quyên truy cập sang cho một yêu câu khác.
22
Trang 34Cấu trúc của khối Arbiter được thé hiện như Hình 3.6.
req[3:0] gnt[3:0]
rst_n
Hình 3.6: Cấu trúc của khối Arbiter
Với thiết kế 4 kênh DMA, vì vậy nhóm chọn một khối Round Robin Arbiter
4-bit dé phù hợp với việc yêu cầu và cấp phép cho cả 4 kênh hoạt động
Các tín hiệu input và output của khối Arbiter được thé hiện như Bảng 3.8.
Bảng 3.8: Các tín hiệu input và output của khối Arbiter
input 1 bit | Tin hiệu clock của hệ théng rst_n Ibit | Tin hiệu reset của hệ thống (tích cực mức thấp)
Trang 35[| | |WSEPMACimgr
3 dé quét qua từng nguồn yêu cầu Mỗi nguồn yêu cầu, từ req[0] đến req[3], sẽ ứngvới giá trị của bộ đếm rr_counter lần lượt từ 0 đến 3 Tại thời điểm không có yêu cầu
nào được cấp phép, nêu bộ đếm trùng giá trị với một nguồn yêu cầu đang tích cực,
thì yêu cầu đó sẽ được cấp phép và bộ đếm sẽ tăng dé quét đến nguồn yêu cầu tiếp
theo.
Đối với đề tài này, DMAC không tính toán đến mức độ ưu tiên của các kênh
DMA, chúng được phân xử đồng đều với nhau Vì vậy, nếu có cả 3 kênh cùng yêu
cầu thì việc chọn kênh cũng sẽ phụ thuộc vào giá tri rr_counter, chứ không dựa theo
thứ tự mà hệ thống yêu cầu Ví dụ, cả 3 kênh yêu cầu theo thứ tự lần lượt là kênh 2,
3 và 4, thì Arbiter sẽ phân xử dé cấp phép dựa vào rr_counter, néu rr_counter = 2 tại
chu kỳ cấp phép đang rỗi, thì kênh 3 sẽ được cấp phép, kênh 2 và 4 phải chờ đến khi
kênh 3 hoàn thành.
24
Trang 36counter[ 1:0]
req[3:0] gnt[3:0]
Hình 3.7: Sơ đồ nguyên lý của khối Arbiter
Nếu không quét thay có bat kỳ nguồn yêu cầu nào, thì rr_counter sẽ tự tăng
lên 1 đơn vị Khi rr_counter = 3, néu bộ đếm tăng lên một đơn vi thì rr_counter sẽ trở
về 0 Trong suốt quá trình cấp phép, khi kênh DMA được cấp phép chưa hoàn thành
thì rr_counter van gift nguyên giá tri.
Nhóm xác định việc phân xử các yêu cầu của DMAC đối với các yêu cầu của các kênh là như nhau, vì vậy khối Arbiter được thiết kế theo thuật toán Round Robin
không
25
Trang 373.2.4 Khoi DMA Channel
Nhóm đề tài đã thiết kế 4 kênh DMA với 3 chức năng khác nhau, nhưng về
mặt cấu trúc cơ bản thì giống nhau Cấu trúc của mỗi kênh được thé hiện như Hình
Hình 3.8: Cấu trúc của khối DMA Channel
Các tín hiệu input và output của khối DMA Channel được mô tả trong Bảng
3.9.
Bảng 3.9: Các tín hiệu input va output của khối DMA Channel.
source_addr input | 32 bit ` `
cân được truyền.
26
Trang 38a | Giá trị địa chi bắt đầu của đích ma dữ liệu cần
destination_addr| input | 32 bit ¬
được truyên đên.
length Giá trị kích thước đữ liệu cần truyền.
Tín hiệu cấp phép, cho phép khởi động kênh
nt
DMA.
req Tín hiệu yêu cầu đến kênh DMA.
27
Trang 39length source_addr destination_addr
clk
Channel execution
req channel_sel
Hình 3.9: Cau trúc chỉ tiết của khối DMA Channel
Các thành phần bên trong khối DMA Channel gồm có các khối: Channel controller, Channel setup register, Yêu cầu checker và khối chính đó là Channel
execution.
3.2.4.1 Khối Channel controller
Khối Channel controller là một bộ phận điều khiến các hoạt động chính của
khối DMA Channel, kết nỗi trực tiếp với Channel execution dé quản lý việc truyền