1. Trang chủ
  2. » Luận Văn - Báo Cáo

Khóa luận tốt nghiệp Kỹ thuật máy tính: Thiết kế bộ điều khiển truy cập bộ nhớ trực tiếp

79 0 0
Tài liệu đã được kiểm tra trùng lặp

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

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Thiết kế bộ điều khiển truy cập bộ nhớ trực tiếp
Tác giả Lê Phùng Khánh Minh
Người hướng dẫn THS. Hồ Ngọc Diễm
Trường học Trường Đại học Công nghệ Thông tin - Đại học Quốc gia Thành phố Hồ Chí Minh
Chuyên ngành Kỹ thuật Máy tính
Thể loại Khóa luận tốt nghiệp
Năm xuất bản 2021
Thành phố TP. Hồ Chí Minh
Định dạng
Số trang 79
Dung lượng 30,79 MB

Nội dung

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 3

THONG 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 4

LỜ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 5

MỤ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 6

3.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 7

DANH 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 8

Hình 4.5: Mô phỏng hoạt động của hệ thống 22 62

Trang 9

DANH 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 10

Bảng 4.10: Kết quả so sánh với các nghiên cứu đã thực hiện - 64

Trang 11

DANH 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 12

TOM 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 13

Chươ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 14

vớ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 15

1.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 16

e 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 17

Chươ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 18

Hì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 19

rd_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 20

o 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 21

sẽ 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 22

Mô 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 23

read_ 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 24

Trong đó 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 25

Giá 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 26

DMA 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 27

Cấ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 28

3.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 29

Gia 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 30

chỉ 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 31

3.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 32

req[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 33

3.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 34

Cấ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 36

counter[ 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 37

3.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 38

a | 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 39

length 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

Ngày đăng: 03/11/2024, 17:39

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN