SlideShare uma empresa Scribd logo
1 de 57
Baixar para ler offline
ĐẠI HỌC ĐÀ NẴNG
TRƢỜNG ĐẠI HỌC BÁCH KHOA
VÕ THÀNH VĂN
THIẾT KẾ VÀ THỰC THI LÕI IP
PHÂN LUỒNG DỮ LIỆU TRÊN FPGA
LUẬN VĂN THẠC SĨ
KỸ THUẬT ĐIỆN TỬ
Đà Nẵng - Năm 2017
ĐẠI HỌC ĐÀ NẴNG
TRƢỜNG ĐẠI HỌC BÁCH KHOA
VÕ THÀNH VĂN
THIẾT KẾ VÀ THỰC THI LÕI IP
PHÂN LUỒNG DỮ LIỆU TRÊN FPGA
Chuyên ngành: Kỹ thuật điện tử
Mã số: 60520203
LUẬN VĂN THẠC SĨ
NGƢỜI HƢỚNG DẪN KHOA HỌC
TS. Phan Trần Đăng Khoa
Đà Nẵng - Năm 2017
Lời cam đoan
Tôi xin cam đoan đây là công trình nghiên cứu của riêng tôi, các kết quả nghiên
cứu đƣợc trình bày trong luận văn là trung thực, khách quan và chƣa từng để bảo vệ ở
bất kỳ học vị nào.
Tôi xin cam đoan rằng mọi sự giúp đỡ cho việc thực hiện luận văn đã đƣợc cám
ơn, các thông tin trích dẫn trong luận văn này đều đƣợc chỉ rõ nguồn gốc.
Đà Nẵng, ngày 25 tháng 4 năm 2017
Lời cảm ơn
Trƣớc khi trình bày nội dung chính, tôi xin bày tỏ lòng biết ơn sâu sắc tới TS.
Phan Trần Đăng Khoa đã tận tình hƣớng dẫn để tôi có thể hoàn thành luận văn này.
Tôi cũng xin bày tỏ lòng biết ơn chân thành tới toàn thể các thầy cô giáo trong
Khoa Điện tử Viễn thông, Trƣờng Đại học Bách khoa, Đại học Đà Nẵng đã cung cấp
kiến thức và điều kiện trong suốt quá trình học tập tại Khoa.
Nhân dịp này tôi cũng xin đƣợc gửi lời cảm ơn chân thành tới lãnh đạo, các
đồng nghiệp tại Trung tâm Vi mạch Đà Nẵng và gia đình, bạn bè đã luôn bên tôi, tạo
điều kiện, giúp đỡ tôi hoàn thành luận văn.
Đà Nẵng, ngày 25 tháng 4 năm 2017
i
Mục lục
Mục lục i
Danh mục hình vẽ ii
Danh mục bảng biểu iii
MỞ ĐẦU 1
1 TỔNG QUAN VỀ PHÂN LUỒNG DỮ LIỆU 3
1.1 Giới thiệu chƣơng . . . . . .. . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . 3
1.2 Khái niệm phân luồng dữ liệu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .... . 3
1.3 Vai trò của phân luồng dữ liệu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . … 3
1.4 Các chức năng chính của phân luồng dữ liệu . . . . . . . . . . . .. . . . . . . . . 4
1.4.1 Phân loại luồng dữ liệu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ... 5
1.4.2 Chính sách lƣu lƣợng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ..... 8
1.4.3 Định hình luồng lƣu lƣợng . . . . . . . . . . . . . . . . . . . . .. . . . . . … 8
1.4.4 Lập lịch gói tin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 9
1.4.5 Quản lý bộ đệm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ..10
1.5 Kết luận chƣơng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2 CƠ SỞ LÝ THUYẾT CÁC THUẬT TOÁN LẬP LỊCH 1 2
2.1 Giới thiệu chƣơng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . …12
2.2 Thuật toán First Come First Serve . . . . . . . . . . . . . . . . . . . . . . . . . . . … 12
2.3 Thuật toán lập lịch Max-Min . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . …12
2.4 Thuật toán Round-Robin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . …14
2.5 Thuật toán Weighted Round-Robin . . . . . . . . . . . . .. . . . . . . . . . . . . . ..15
2.6 Thuật toán Deficit Round-Robin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ..16
2.7 Kết luận chƣơng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ...18
3 THIẾT KẾ LÕI IP PHÂN LUỒNG DỮ LIỆU 1 9
3.1 Tổng quan quá trình thiết kế . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . …19
3.2 Thiết kế kiến trúc lõi IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . …. 19
3.3 Thiết kế khối quản lý bộ đệm (Buffer Management) . . . . . . . . . . . . . . . 22
ii
3.3.1 Chức năng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . … 22
3.3.2 Sơ đồ kết nối . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ….23
3.3.3 Mô tả tín hiệu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .... . 23
3.4 Thiết kế khối xử lý ghi gói tin vào hàng đợi (Enqueue) . . . . . . . . . . . . 24
3.4.1 Chức năng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . … 24
3.4.2 Mô tả tín hiệu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ...25
3.4.3 Máy trạng thái . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ..27
3.5 Thiết kế khối xử lý đọc gói tin từ hàng đợi ra (Dequeue) ... . . . . . . . . . . 28
3.5.1 Chức năng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ...28
3.5.2 Mô tả tín hiệu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ... 28
3.5.3 Máy trạng thái . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ..31
3.6 Thiết kế khối hỗ trợ giao tiếp bộ nhớ (Memory Accessor) . . . . . . . . ... 32
3.6.1 Chức năng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ... 32
3.6.2 Mô tả tín hiệu . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . ... 32
3.6.3 Máy trạng thái . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .34
3.7 Thiết kế khối quản lý hàng đợi (Queue Management) . . . . . . . . . . . . . 36
3.7.1 Chức năng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .36
3.7.2 Cấu Trúc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 38
3.7.3 Mô tả tín hiệu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.7.4 Máy Trạng Thái . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 41
3.8 Thiết kế khối cấp phát bộ nhớ động(Dynamic Allocator) . . . . . . . . . . . 44
3.8.1 Chức năng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 44
3.8.2 Mô tả tín hiệu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
3.8.3 Máy trạng thái . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . .. 46
3.9 Thiết kế khối lập lịch(Scheduler) . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 48
3.9.1 Chức năng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 48
3.9.2 Mô tả tín hiệu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
3.9.3 Máy trạng thái khối Scheduler . . . . . . . . . . . . . . . . . . . . . . . . . 50
3.10 Thiết kế khối chống tắc nghẽn(Congestion) . . . . . . . . . . . . . . . . . . . . . 54
3.10.1 Chức năng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
3.10.2 Mô tả tín hiệu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
3.11 Kết luận chƣơng . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . 59
iii
4 MÔ PHỎNG VÀ THỰC HIỆN LÕI IP PHÂN LUỒNG DỮ LIỆU TRÊN
NỀN FPGA 6 0
4.1 Giới thiệu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ...60
4.2 Yêu cầu phần mềm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .60
4.3 Kết quả tổng hợp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . .61
4.4 Kết quả mô phỏng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
4.5 Năng lực xử lý của lõi IP . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . 65
4.6 Thực hiện trên nền FPGA . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . 65
4.6.1 Công nghệ FPGA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
4.6.2 Phần cứng sử dụng . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . .. . .. 67
4.6.3 Quá trình thực hiện . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . 68
4.6.4 Kiểm tra thực tế . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . 70
4.7 Kết luận chƣơng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
Kết luận và hƣớng phát triển 7 2
Tài liệu tham khảo
iv
THIẾT KẾ VÀ THỰC THI LÕI IP PHÂN LUỒNG DỮ LIỆU TRÊN FPGA
Học viên: Võ Thành Văn. Chuyên ngành: Kỹ thuật Điện tử.
Mã số: ...........Khóa: K31. Trƣờng Đại học Bách khoa - ĐHĐN
Tóm tắt – Phân luồng dữ liệu là một kỹ thuật đƣợc áp dụng để giải quyết nhiều bài toán, đặc biệt
là trong bài toán đảm bảo chất lƣợng dịch vụ QoS trong các thiết bị mạng hiện nay. Trong đề tài
này, tác giả sẽ trình bày các khái niệm cùng các chức năng cơ bản liên quan đến phân luồng dữ
liệu. Bên cạnh đó, còn đề cập đến các thuật toán lập lịch, chỉ rõ ƣu nhƣợc điểm cùng cách thực
hiện trên phần cứng các thuật toán, từ đó đề xuất thiết kế và thực hiện chức năng phân luồng dữ
liệu trên FPGA. Kết quả tổng hợp của lõi IP đƣợc thực hiện trên board mạch Zynq ZC706 cho
thấy lõi IP chỉ chiếm 1% số thanh ghi cùng 4% số bảng tìm kiếm LUT trong tổng số tài nguyên
của board, và tần số clock tối đa đạt đƣợc là 200MHz. Cuối cùng, tác giả đã tóm tắt các kết quả
đạt đƣợc và đƣa ra các hƣớng phát triển tiếp theo.
Từ khóa - Phân luồng dữ liệu; Lập lịch; QoS; FPGA; Thiết bị mạng
DESIGN AND IMPLEMENT TRAFFIC MANAGEMENT IP CORE ON
FPGA
Abstract – Traffic management is a technique used to solve many problems, especially in quality
of service (QoS) for today‟s networking devices. In this thesis, we present fundamental define-
tions and functions related to traffic management. In addition, several scheduling algorithms are
considered in order to compare their advantages and disadvantages and the ability to implement
into hardware. Based on these principles, we describe the design and implementation of the
Traffic Management IP Core on FPGA. The synthesis results using Zynq ZC706 board showed
that it consumes 1% of slice registers and 4% of slice LUTs in hardware resource, and the
maximum frequency is up to 200MHz. At the end of the thesis, we summarize the key results
achieved and provide perspectives of the work.
Key words - Traffic management; Scheduling; QoS; FPGA; Networking devic.
v
Danh mục hình vẽ
1.1 Sơ đồ khối của phân luồng dữ liệu trong router/switch . . . . . . . 5
1.2 Trƣờng CoS trong 802.1Q header . . . . . . . . . . . . . . . . . . 6
1.3 IP Precedence và DSCP trong header của gói tin IPv4 . . . . . . . 6
1.4 Bộ chính sách lƣu lƣợng . . . . . . . . . . . . . . . . . . . . . . . . 8
1.5 Cách hoạt động của bộ định hình lƣu lƣợng . . . . . . . . . . . . . 8
1.6 Cơ chế hoạt động của mô hình thùng thẻ - Token Bucket . . . . . . 9
2.1 Ví dụ về thuật toán công bằng Max-Min . . . . . . . . . . . . . . . 13
2.2 Thực thi thuật toán Round-robin . . . . . . . . . . . . . . . . . . . 14
2.3 Cách thức quản lý FQ . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.4 Thực hiện thuật toán WRR trên phần cứng . . . . . . . . . . . . . 16
2.5 Lƣợt rà soát Round robin thứ nhất . . . . . . . . . . . . . . . . . . 17
2.6 Lƣợt rà soát Round robin thứ hai . . . . . . . . . . . . . . . . . . 18
3.1 Sơ đồ kết nối lõi IP phân luồng dữ liệu . . . . . . . . . . . . . . . . 19
3.2 Sơ đồ kết nối khối Quản lý Bộ đệm . . . . . . . . . . . . . . . . . . 22
3.3 Máy trạng thái của Khối Enqueue . . . . . . . . . . . . . . . . . . 27
3.4 FSM của khối Dequeue . . . . . . . . . . . . . . . . . . . . . . . . 31
3.5 Máy trạng thái wr_state . . . . . . . . . . . . . . . . . . . . . . . . 35
3.6 Máy trạng thái rd_state . . . . . . . . . . . . . . . . . . . . . . . . 36
3.7 Cấu trúc dữ liệu quản lý hàng đợi . . . . . . . . . . . . . . . . . . 37
3.8 Sơ đồ cấu trúc module QueueManagement . . . . . . . . . . . . . 38
3.9 Máy trạng thái module QueueManagement . . . . . . . . . . . . . 41
3.10 Máy trạng thái con của DEACTIVE . . . . . . . . . . . . . . . . . 42
3.11 Máy trạng thái tƣơng ứng lệnh ACTIVE . . . . . . . . . . . . . . 43
3.12 Tổ chức dữ liệu một ô nhớ của khối DynamicAllocator . . . . . . 44
3.13 Máy trạng thái của khối DynamicAllocator . . . . . . . . . . . . . 47
3.14 Máy trạng thái con của trạng thái ACTIVE . . . . . . . . . . . . . 47
3.15 Sơ đồ tín hiệu khối Scheduler . . . . . . . . . . . . . . . . . . . . . 49
3.16 Máy trạng thái wr_dq_state . . . . . . . . . . . . . . . . . . . . . . 51
3.17 Máy trạng thái dq_empty_state . . . . . . . . . . . . . . . . . . . . 52
vi
3.18 Máy trạng thái schedule_state . . . . . . . . . . . . . . . . . . . . 53
3.19 Sơ đồ tín hiệu khối Congestion . . . . . . . . . . . . . . . . . . . . 55
3.20 Sơ đồ tín hiệu khối WRED . . . . . . . . . . . . . . . . . . . . . . 56
3.21 Máy trạng thái của trƣờng hợp xử lý gói tin đến . . . . . . . . . . 58
3.22 Máy trạng thái của trƣờng hợp xử lý gói tin đi . . . . . . . . . . . 59
4.1 Kết quả tổng hợp phần cứng . . . . . . . . . . . . . . . . . . . . . 62
4.2 Mô hình kiểm tra mô phỏng . . . . . . . . . . . . . . . . . . . . . 63
4.3 Kết quả mô phỏng ở ngõ ra 2 . . . . . . . . . . . . . . . . . . . . . 64
4.4 Kết quả mô phỏng trên Modelsim . . . . . . . . . . . . . . . . . . 64
4.5 Cấu trúc tổng thể của một FPGA . . . . . . . . . . . . . . . . . . . 66
4.6 Kit phát triển Zynq ZC706 . . . . . . . . . . . . . . . . . . . . . . 67
4.7 Kết nối lõi IP và các thành phần vào hệ thống . . . . . . . . . . . . 69
4.8 Kết quả của quá trình tạo file bitstream . . . . . . . . . . . . . . . 69
4.9 Mô hình kết nối . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
vii
Danh mục bảng biểu
1.1 Bảng các vấn đề khi không có QoS . . . . . . . . . . . . . . . . . . 4
1.2 Bảng giá trị IP precedence . . . . . . . . . . . . . . . . . . . . . . 6
1.3 Bảng giá trị DSCP . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.1 Bảng mô tả tín hiệu lõi IP . . . . . . . . . . . . . . . . . . . . . . . 21
3.2 Bảng mô tả tín hiệu module BuffMan . . . . . . . . . . . . . . . . 23
3.3 Bảng mô tả tín hiệu Khối Enqueue . . . . . . . . . . . . . . . . . . 25
3.4 Bảng mô tả tín hiệu module Dequeue . . . . . . . . . . . . . . . . 28
3.5 Bảng mô tả tín hiệu Khối Memory Accessor . . . . . . . . . . . . . 32
3.6 Bảng mô tả lệnh khối QueueManagement . . . . . . . . . . . . . . 37
3.7 Bảng mô tả tín hiệu module QueueManagement . . . . . . . . . . 39
3.8 Bảng mô tả lệnh khối DynamicAllocator . . . . . . . . . . . . . . 44
3.9 Bảng mô tả tín hiệu khối DynamicAllocator . . . . . . . . . . . . . 45
3.10 Bảng mô tả tín hiệu Khối Scheduler . . . . . . . . . . . . . . . . . 50
3.11 Bảng mô tả tín hiệu Khối Congestion . . . . . . . . . . . . . . . . 55
3.12 Bảng mô tả tín hiệu Khối WRED . . . . . . . . . . . . . . . . . . . 56
4.1 Kết quả thực nghiệm khi thay đổi tốc độ truyền dữ liệu . . . . . . 71
viii
Danh mục từ viết tắt
CIR Committed Information Rate
CoS Class of Service
DQ Departure Queue
DRR Deficit Round Robin
DSCP Differentiated Services Code Point
FPGA Field-Programmable Gate Array
FQ Flow Queue
HDL Hardware Description Language
HTTP Hypertext Transfer Protocol
IP Internet Protocol
OSI Open Systems Interconnection
PQ Priority Queueing
RAM Random Access Memory
QoS Quality of Service
RED Random Early Detection
RFC Request for Comments
RTL Register Transfer Language
RTP Real Time Protocol
WFQ Weighted Fair Queueing
WRED Weighted Random Early Detection
WRR Weighted Round Robin
1
MỞ ĐẦU
Tính cấp thiết của đề tài
Trong giai đoạn đầu của dịch vụ Internet, do băng thông và các tài nguyên khác
đủ để cung cấp cho các ứng dụng trong mạng nên vấn đề phân biệt và ƣu tiêncho các
gói tin chƣa đƣợc quan tâm. Ban đầu, các nhà cung cấp dịch vụ đƣa ra mô hìnhbest-
effort, trong đó tất cả các khách hàng sẽ đƣợc đối xử nhƣ nhau và chỉ khác nhauở loại
kết nối. Đây là dịch vụ phổ biến trên mạng Internet hay mạng IP nói chung.
Nhƣng khi internet càng ngày càng phát triển và phát triển thêm các dịch vụ
HTTP, voice, video. . . thì điều này sẽ làm cho chất lƣợng của các dịch vụ giảm đi rõ
rệt vì độ trễ lớn, độ biến động trễ lớn và không đủ băng thông để truyền, phƣơng án
tăng băng thông của mạng cũng không giải quyết đƣợc vấn đề này mà lại còn rất tốn
kém. Chính vì vậy, giải pháp về phân luồng dữ liệu ra đời để đảm bảo các ứng dụng
thời gian thực chạy đƣợc trên Internet và các ứng dụng truyền thống đƣợc bảo đảm
chất lƣợng tốt hơn.
Bên cạnh đó, các thiết bị mạng nhƣ router, firewall đã đƣợc sử dụng rộng rãi tại
nhiều gia đình, cơ quan, doanh nghiệp tại Việt Nam. Tuy nhiên, toàn bộ các thiết bị
này hiện đƣợc nhập khẩu từ nƣớc ngoài, do các nhà sản xuất nƣớc ngoài cung cấp
hoàn toàn, dẫn đến một nguy cơ lệ thuộc và mất quyền kiểm soát rất lớn đối với tầng
thông tin quốc gia khi xảy ra sự cố. Vì vậy, từng bƣớc tạo ra các sản phẩm do chính
công dân Việt Nam nghiên cứu sản xuất để bảo đảm an toàn thông tin là hết sức cần
thiết.
Xuất phát từ những yêu cầu trên, luận văn của em nghiên cứu về đề tài:
“Thiết kế và thực thi lõi IP phân luồng dữ liệu trên FPGA”
Mục tiêu nghiên cứu
Nghiên cứu thiết kế kiến trúc lõi IP phân luồng dữ liệu trên FPGA, thực
hiệnbằng ngôn ngữ mô tả phần cứng Verilog HDL.
Đối tƣợng và phạm vi nghiên cứu
 Mô hình và kĩ thuật phân luồng dữ liệu.
 Ngôn ngữ mô tả phần cứng Verilog HDL và công nghệ FPGA.
 Thực hiện và đánh giá lõi IP phân luồng dữ liệu dựa trên công cụ mô phỏng
2
ModelSim và trên nền tảng FPGA.
Phƣơng pháp nghiên cứu
 Nghiên cứu lý thuyết:
- Tìm hiểu và phân tích các tài liệu về phân luồng dữ liệu.
- Nghiên cứu kiến trúc lõi IP phân luồng dữ liệu, đặc biệt là các thành phần
có liên quan nhƣ phƣơng pháp quản lý hàng đợi, thuật toán lập lịch.
 Nghiên cứu thực nghiệm:
- Sử dụng ngôn ngữ mô tả phần cứng Verilog HDL để mô tả các phƣơng pháp,
thuật toán.
- Mô phỏng mức RTL trên công cụ mô phỏng ModelSim, thực thi trên nền FPGA
và đánh giá kết quả.
Ý nghĩa khoa học và thực tiễn của đề tài
Đề tài tạo ra lõi IP phân luồng dữ liệu, đƣợc ứng dụng trong các thiết bị
mạng,góp phần thực tiễn vào việc nâng cao chất lƣợng dịch vụ của các thiết bị này,
đồng thời làm chủ đƣợc công nghệ giúp đảm bảo an toàn thông tin.
Kết cấu của luận văn
Luận văn gồm các phần chính sau đây:
 Chƣơng 1: TỔNG QUAN VỀ PHÂN LUỒNG DỮ LIỆU.
 Chƣơng 2: CƠ SỞ LÝ THUYẾT CÁC THUẬT TOÁN LẬP LỊCH.
 Chƣơng 3: THIẾT KẾ LÕI IP PHÂN LUỒNG DỮ LIỆU.
 Chƣơng 4: MÔ PHỎNG VÀ THỰC HIỆN LÕI IP PHÂN LUỒNG DỮ LIỆU
TRÊN NỀN FPGA.
 KẾT LUẬN VÀ HƢỚNG PHÁT TRIỂN CỦA ĐỀ TÀI
 PHỤ LỤC
3
Chƣơng 1
TỔNG QUAN VỀ PHÂN LUỒNG DỮ LIỆU
1.1. Giới thiệu chƣơng
Trong chƣơng này sẽ trình bày khái niệm về phân luồng dữ liệu cũng nhƣ vai
trò của phân luồng dữ liệu trong hệ thống mạng internet ngày nay. Bên cạnh đó, sơ đồ
khối và các khối chức năng chính của phân luồng dữ liệu cũng đƣợc giới thiệu để có
cái nhìn khái quát và tổng quan hơn.
1.2. Khái niệm phân luồng dữ liệu
Phân luồng dữ liệu là công việc đƣợc sử dụng trong nhiều ứng dụng, nhằm mục
đích phân loại các gói dữ liệu vào các tập dữ liệu khác nhau để xử lý tiếp theo; mỗi tập
dữ liệu có một quy tắc hành động riêng, đặc biệt là trong chức năng nâng cao chất
lƣợng dịch vụ (QoS - Quality of Service) của hệ thống mạng ngày nay. Tiêu chuẩn
mới nhất của phân luồng dữ liệu đƣợc định nghĩa trong các tài liệu RFC 5777 [8] và
RFC 7640 [9].
1.3. Vai trò của phân luồng dữ liệu
Ngày nay, Internet phát triển rất nhanh kèm theo đó là sự phát triển nhiều loại
dịch vụ khác nhau. Có thể kể đến các dịch vụ sử dụng các ứng dụng đa phƣơng tiện
hoặc các ứng dụng thời gian thực nhƣ thoại IP (IP Telephony), hệ thống hội nghị video
(video conference system), truyền hình trực tiếp video (livestream) là các ứng dụng
mới cần nhiều băng thông hơn rất nhiều so với các ứng dụng đã đƣợc sử dụng rất sớm
trên Internet. Mặt khác các ứng dụng này yêu cầu việc truyền dữ liệu đi qua mạng phải
liên tục, độ trễ thấp.
Chất lƣợng của các ứng dụng thoại phụ thuộc vào chất lƣợng đƣờng truyền kết
nối từ đầu cuối đến đầu cuối. Các dấu hiệu của tín hiệu thoại không đƣợc đảm bảo chất
lƣợng có thể kể đến nhƣ truyền lỗi, nhiễu tín hiệu, tiếng vọng,... Ngay cả việc truyền
dữ liệu thời gian thực sử dụng giao thức thời gian thực RTP (Real Time Protocol) vẫn
phụ thuộc vào việc tận dụng các tài nguyên đƣợc phân phát trên cơ sở giao thức IP.
Bảng 1.1 cho thấy các dấu hiệu của mạng khi không có cơ chế và các kỹ thuật
để đảm bảo chất lƣợng dịch vụ:
4
Bảng 1.1: Bảng các vấn đề khi không có QoS
Kiểu lƣu lƣợng Các vấn đề khi không có QoS
Voice Voice nghe khó hiểu
Voice không liên tục, tiếng nói bị méo
Ngƣời gọi không biết ngƣời nhận kết thúc khi nào hay kết thúc
chƣa
Video Hình ảnh hiển thị chập chờn
Âm thanh không đồng bộ với video
Sự di chuyển của hình ảnh chậm lại
Data Dữ liệu đƣợc chuyển đến khi nó không còn giá trị nữa
Dữ liệu phản hồi không đúng so với ban đầu
Thời gian truyền bị gián đoạn làm cho ngƣời dùng thất vọng và
từ bỏ hoặc thực hiện lại dịch vụ
Chính vì vậy phân luồng dữ liệu ra đời để giải quyết các vấn đề trên, thông qua
việc phân chia các ứng dụng thành các luồng dữ liệu khác nhau, áp dụng các kỹ thuật
lập lịch gói tin, giúp đảm bảo đƣợc chất lƣợng của các dịch vụ chạy trên Internet.
1.4. Các chức năng chính của phân luồng dữ liệu
Hình 1.1 biểu diễn vị trí của phân luồng dữ liệu trong một router/switch với 2
cổng vào, trong đó cả ngõ vào và ngõ ra của mỗi cổng đều sử dụng chức năng phân
luồng dữ liệu. Các khối chức năng chính của phân luồng dữ liệu đƣợc mô tả nhƣ sau:
 Phân loại luồng dữ liệu (Traffic classification).
 Chính sách lƣu lƣợng (Traffic policing).
 Định hình luồng lƣu lƣợng (Traffic shaping).
 Lập lịch (Traffic scheduling).
 Quản lý bộ đệm (Buffer Management).
Tại ngõ vào của mỗi cổng, chức năng giới hạn tốc độ xác định luồng dữ liệu có
phùhợp với các chính sách lƣu lƣợng đã đề ra hay không, sau đó khối quản lý bộ đệm
xácđịnh gói tin đó đƣợc cho phép đi vào hay bị loại bỏ và nếu bị loại bỏ thì sẽ loại bỏ
theophƣơng pháp nào. Bên cạnh đó, khối lập lịch gói tin và tối ƣu hóa luồng lƣu lƣợng
xác định gói tin nào sẽ đƣợc tháo ra tiếp theo và đƣợc gửi tới cổng nào thông qua
Fabric, đồng thời kiểm soát tốc độ truyền của gói tin trƣớc khi đi ra khỏi router.
5
Hình 1.1: Sơ đồ khối của phân luồng dữ liệu trong router/switch
1.4.1. Phân loại luồng dữ liệu
Phân loại luồng dữ liệu là phƣơng pháp đƣợc sử dụng để nhóm các gói tin IP lại
với nhau theo lớp dịch vụ. Trong mạng, các gói tin đƣợc lựa chọn dựa trên các trƣờng
ở phần header của gói tin IP, các trƣờng này cũng đƣợc sử dụng cho việc đánh dấu gói
tin nhƣ: Giao diện đầu vào, IP Precedence, DSCP, địa chỉ nguồn hoặc địa chỉ đích và
các ứng dụng. Có hai kiểu phân loại luồng dữ liệu:
 Phân loại đa trƣờng (Multi Field classification) – MF
 Phân loại kết hợp hành vi (Behavior Aggregate classification) – BA
Phân loại đa trƣờng MF
Trong phƣơng pháp phân loại đa trƣờng, các gói tin đƣợc phân loại dựa trên tổ
hợp các giá trị của một hoặc nhiều trƣờng trong phần header của gói tin IP. Thông
thƣờng sẽ dựa theo các trƣờng: địa chỉ MAC nguồn, địa chỉ MAC đích, địa chỉ IP
nguồn, địa chỉ IP đích, port nguồn, port đích và giao thức (protocol) để phục vụ tốt cho
việc phân loại này.
Phân loại kết hợp hành vi BA
Phƣơng pháp phân loại kết hợp hành vi thực hiện việc phân loại gói tin dựa trên
trƣờng IP Precedence hoặc rộng hơn nữa là trƣờng chứa giá trị DSCP trong phần
header của gói tin IPv4. Bên cạnh đó, ở tầng liên kết dữ liệu theo mô hình OSI, trƣờng
CoS trong chuẩn 802.1Q cũng đƣợc sử dụng với mục đích nhƣ trên.
6
Hình 1.2: Trƣờng CoS trong 802.1Q header
Trƣờng IP Precedence là 3 bit đầu tiên trong trƣờng ToS (Type of Service) trong
header của gói tin IPv4. Với 3 bit của trƣờng IP Precedence chúng ta có 8 giá trị tƣơng
ứng với 8 mức ƣu tiên khác nhau đối với các gói tin IPv4, dựa trên mức độ ƣu tiên đó,
các bộ định tuyến đƣa ra các quyết định chuyển tiếp các gói tin qua mạng.
Hình 1.3: IP Precedence và DSCP trong header của gói tin IPv4
Bảng giá trị IP precedence đƣợc xác định theo RFC 791 [10] nhƣ sau:
Bảng 1.2: Bảng giá trị IP precedence
Giá trị Mô tả
000 (0) Bình thƣờng (Routine or Best Effort)
001 (1) Ƣu tiên (Priority)
010 (2) Tức thời (Immediate)
011 (3) Truyền nhanh (Flash)
100 (4) Truyền cực nhanh cho phép ghi đè (Flash Override)
7
101 (5) Tới hạn, tối đa (Critical -mainly used for Voice RTP.)
110 (6) Internet
111 (7) Điều khiển mạng (Network)
Càng ngày, sự đa dạng về các dịch vụ ngày càng gia tăng, khi 3 bit của trƣờng
IP Precedence không đủ để phân loại cụ thể và chi tiết các lớp dịch vụ nữa thì trƣờng
DSCP ra đời để bổ sung cho sự phát triển đó. Trƣờng DSCP sử dụng 6 bit trong trƣờng
ToS trong header của gói tin IPv4, mở rộng 3 bit ban đầu của trƣờng IP Precedence.
Lúc đó, chuẩn RFC 2475 đã quy định các giá trị của trƣờng DSCP nhƣ sau
Bảng 1.3: Bảng giá trị DSCP
Giá trị Mô tả Giá trị IP Precedence tƣơng đƣơng
101 110 High Priority (EF) 101 - Critical
000 000 Best Effort 000 - Routine
001 010 AF11 001 - Priority
001 100 AF12 001 - Priority
001 110 AF13 001 - Priority
010 010 AF21 010 - Immediate
001 100 AF11 010 - Immediate
010 110 AF22 010 - Immediate
011 010 AF31 011 - Flash
011 100 AF32 011 - Flash
011 110 AF33 011 - Flash
100 010 AF41 100 - Flash Override
100 100 AF42 100 - Flash Override
8
100 110 AF43 100 - Flash Override
1.4.2. Chính sách lưu lượng
Chính sách lƣu lƣợng luôn theo dõi, điều chỉnh lƣu lƣợng truy cập mạng cho
phù hợp với hợp đồng lƣu lƣợng, và nếu nhƣ đƣợc yêu cầu, nó sẽ làm giảm hoặc thậm
chí vứt bỏ lƣu lƣợng vƣợt quá ngƣỡng nhằm mục đích thực thi chính sách phù hợp trên
đƣờng truyền.
Khối chính sách lƣu lƣợng bao gồm các bộ đo các lƣu lƣợng để xác định lƣu
lƣợng đầu vào và đầu ra, trên cơ sở đó, áp dụng chính sách điều khiển tốc độ lƣu lƣợng
phù hợp với đầu ra bởi bộ đánh dấu gói tin. Các gói tin có thể bị loại bỏ nếu không phù
hợp với chính sách lƣu lƣợng. Hình 1.4 biểu diễn sơ đồ khối của bộ chính sách lƣu
lƣợng và hai khối nhỏ của nó là bộ đo lƣu lƣợng và bộ đánh dấu gói tin.
Hình 1.4:Bộ chính sách lƣu lƣợng
Thông thƣờng, chính sách lƣu lƣợng kiểm tra tốc độ của lƣu lƣợng đi vào theo
một tham số lƣu lƣợng chính nhƣ: Tốc độ thông tin cam kết (CIR - Committed
Information Rate) và tốc độ thông tin đỉnh (PBS - Peak Burst Size), kích thƣớc bùng nổ
cam kết (CBS - Committed Burst Size) và kích thƣớc bùng nổ vƣợt ngƣỡng (EBS -
Excess Burst Size) [12] [13] [14].
1.4.3. Định hình luồng lưu lượng
Hình 1.5: Cách hoạt động của bộ định hình lƣu lƣợng
9
Các công cụ định hình lƣu lƣợng (Traffic Shaping -TS) làm chậm các gói tin khi
các gói đi ra khỏi một router sao cho tốc độ truyền tổng thể không vƣợt quá một giới
hạn đã định nghĩa.
Nếu lƣu lƣợng đầu vào có độ bùng nổ cao, thì luồng lƣu lƣợng phải có bộ đệm
để đầu ra giảm sự bùng nổ và mềm hơn. Bằng cách này, định hƣớng lƣu lƣợng làm cho
luồng lƣu lƣợng đƣợc điều chỉnh theo dạng lƣu lƣợng đã xác định trƣớc. Việc điều
chỉnh tốc độ lƣu lƣợng giuống nhƣ một quá trình “truyền và nghỉ”, router làm việc luân
phiên giữa hai trạng thái: truyền gói tin và giữ gói tin trong hàng đợi.
Bộ định hình lƣu lƣợng trì hoãn một lƣu lƣợng lớn vào hàng đợi định hình khi
lƣu lƣợng đó vƣợt quá mức cho phép đƣợc coi là Committ Information Rate – CIR.
Hình 1.6: Cơ chế hoạt động của mô hình thùng thẻ - Token Bucket
Để làm điều này, bộ định hình lƣu lƣợng sử dụng mô hình thùng thẻ - token
bucket để xác định lƣu lƣợng truy cập vƣợt quá mức giới hạn đã đƣợc cấu hình với
CIR. Mỗi lần một gói tin xếp vào hàng đợi, bộ định hình lƣu lƣợng sẽ so sánh kích
thƣớc của gói tin với kích thƣớc hiện tại của token bucket. Nếu kích thƣớc gói tin nhỏ
hơn hoặc bằng khoảng trống còn trong token bucket thì gói tin đó đƣợc gửi đi. Ngƣợc
lại, nếu vƣợt quá nó sẽ bị trì hoãn trong hàng đợi định hình.
1.4.4. Lập lịch gói tin
Thực hiện phân loại lƣu lƣợng trong thiết bị mạng bằng cách định hƣớng các
gói tin đến các hàng đợi khác nhau và áp dụng thuật toán để gửi các gói tin ứng với độ
ƣu tiên của các hàng đợi đó. Các thuật toán lập lịch sẽ đƣợc trình bày rõ trong Chƣơng
2 - Cơ sở lý thuyết các thuật toán lập lịch.
10
1.4.5. Quản lý bộ đệm
Thực hiện công việc cung cấp bộ nhớ cho từng hàng đợi, quản lý tình trạng của
các hàng đợi và đƣa ra thông báo để loại bỏ gói tin khi hàng đợi chuẩn bị đầy nhằm
mục đích chống tắc nghẽn. Một bộ quản lý bộ đệm thƣờng bao gồm các hoạt động:
 Thêm gói tin vào hàng đợi khi hàng đợi chƣa đầy.
 Loại bỏ gói tin nếu hàng đợi đã đầy.
 Xóa bỏ gói tin khi đƣợc yêu cầu bởi bộ lập lịch.
Mục đích chính của hàng đợi là điều khiển lƣu lƣợng, chống tắc nghẽn trong
mạng, đặc biệt là tại các nút cổ chai. Kĩ thuật quản lý bộ đệm trƣớc đây là cấp phát
một kích thƣớc lớn nhất cho mỗi hàng đợi, các gói tin đến sẽ đƣợc đƣa vào trong hàng
đợi cho đến khi hàng đợi đầy, sau đó nếu còn có gói đến thì sẽ loại bỏ các gói mới tới
này. Khi số lƣợng các gói trong hàng đợi giảm đi sau mỗi lần đƣợc lập lịch tháo ra thì
lúc đó, hàng đợi mới nhận tiếp các gói mới. Đây cũng chính là kĩ thuật “loại bỏ phần
đuôi” (drop tail). Tuy nhiên cách này có hai hạn chế:
 Kĩ thuật này không có sự ƣu tiên lƣu lƣợng nên khi có luồng dữ liệu quan trọng
đến hàng đợi trong lúc hàng đợi đang bị đầy thì gói tin đó vẫn bị loại bỏ.
 Thƣờng thì các luồng lƣu lƣợng đến hàng đợi dƣới dạng bó. Khi hàng đợi đầy thì
bất kì luồng nào đến cũng đều bị loại bỏ cho tới khi số gói trong hàng đợi giảm
xuống. Kĩ thuật này sẽ loại bỏ các bó thông tin chứ không chỉ là các gói, do đó
việc mất mát thông tin rất lớn.
Để giải quyết các nhƣợc điểm của quản lý bộ đệm nêu trên và chống tắc nghẽn, các
phƣơng pháp thƣờng đƣợc áp dụng là RED (mở rộng WRED), hàng đợi cân bằng có
trọng số (WFQ), hàng đợi ƣu tiên (PQ),...
Thuật toán RED [1] đƣợc phát minh bởi Sally Floyd và Van Jacobson, dựa trên
tính toán kích thƣớc hàng đợi trung bình để đánh giá tắc nghẽn và gửi phản hồi nhằm
phát hiện sớm để tránh tắc nghẽn. Do đó, RED đƣợc sử dụng để phát hiện ra tắc nghẽn
ngay khi nó mới bắt đầu hình thành để duy trì mạng trong miền độ trễ thấp. RED đƣợc
chia thành 2 phần chính: dự báo tắc nghẽn và loại bỏ gói tin. Dựa vào đặc điểm gói tin,
RED thực hiện ƣớc lƣợng kích thƣớc trung bình của hàng đợi và quyết định loại bỏ hay
cho gói tin đi vào. Nội dung của thuật toán đƣợc trình bày nhƣ sau:
11
Algorithm 1 Thuật toán RED
for mỗi gói tin do
tính toán kích thƣớc trung bình của queue 𝑎𝑣𝑔;
if 𝑚𝑖𝑛𝑡𝑕 ≤ 𝑎𝑣𝑔 ≤ 𝑚𝑎𝑥𝑡𝑕 then
tính toán xác suất loại bỏ 𝑝𝑎;
if 𝑝𝑎 = 1 then
loại bỏ gói tin;
else
if 𝑚𝑎𝑥𝑡𝑕 ≤ 𝑎𝑣𝑔 then
loại bỏ gói tin;
else
cho phép gói tin đi vào bộ đệm;
Trong đó, 𝑚𝑖𝑛𝑡𝑕 và 𝑚𝑎𝑥𝑡𝑕 lần lƣợt là các giá trị ngƣỡng thấp nhất và cao nhất
của mỗi hàng đợi.
Cơ chế RED dựa vào quyết định loại bỏ gói tin ngẫu nhiên khi dung lƣợng bộ đệm vƣợt
quá ngƣỡng cho trƣớc, vì vậy các luồng dữ liệu với dung lƣợng lớn sẽ bị loại bỏ một số
lƣợng lớn gói tin trong trƣờng hợp tắc nghẽn. Do đó, thuật toán WRED đƣợc bổ sung
nhằm mục đích xử lý các luồng dữ liệu theo tỷ lệ loại bỏ gói tin khác nhau để đảm bảo
rằng, với các luồng dữ liệu quan trọng thì xác suất gói tin bị loại bỏ thấp hơn các luồng
dữ liệu khác.
1.5. Kết luận chƣơng
Trong chƣơng này, ta đã có cái nhìn tổng quan về phân luồng dữ liệu cũng nhƣ
các thành phần tạo nên nó. Chƣơng sau sẽ trình bày rõ ràng và chi tiết về các thuật
toán lập lịch, một phần rất quan trọng trong phân luồng dữ liệu và cách thực hiện từng
thuật toán trên phần cứng.
12
Chƣơng 2
CƠ SỞ LÝ THUYẾT CÁC THUẬT TOÁN LẬP LỊCH
2.1. Giới thiệu chƣơng
Bộ lập lịch sẽ quyết định xem hàng đợi nào đƣợc phép tháo gói tin ra, gói tin ra
sẽ đƣợc đƣa tới giao diện đầu ra nào. Các router truyền thống chỉ có một hàng đợi đơn
cho một đầu ra cố định, do vậy bộ lập lịch của nó rất đơn giản. Nó sẽ tìm cách tháo gói
tin ra khỏi hàng đợi nhanh nhất có thể. Tuy nhiên, với bộ phân luồng dữ liệu có số
lƣợng hàng đợi lớn hơn, việc lựa chọn thuật toán lập lịch phù hợp sẽ giúp giải quyết
đƣợc các vấn đề ƣu tiên dịch vụ. Một số kiểu thuật toán lập lịch thƣờng sử dụng gồm:
thuật toán FCFS, thuật toán Max-Min, thuật toán Round robin, thuật toán Round robin
theo trọng số (Weighted Round robin - WRR), thuật toán thâm hụt Round robin
(Deficit Round robin - DRR), thuật toán cân bằng theo trọng số (Weighted Fair
Queueing - WFQ).
2.2. Thuật toán First Come First Serve
Ở thời điểm các router áp dụng mô hình best-effort cho tất cả các gói tin truyền
qua mạng IP thì thuật toán First Come First Serve (FCFS) thƣờng xuyên đƣợc sử
dụng. Nội dung của thuật toán này là các gói tin sau khi đã đƣợc phân loại sẽ đƣợc đƣa
vào một hàng đợi duy nhất và các gói tin đƣợc tháo ra đúng theo nguyên tắc: Gói nào
vào hàng đợi trƣớc sẽ đƣợc tháo ra trƣớc.
Ƣu điểm của phƣơng pháp này là đơn giản, không phải tốn tài nguyên phần
cứng và thời gian xử lý các thuật toán điều khiển. Thuật toán FCFS chỉ việc lƣu trữ các
gói tin đi vào và gửi các gói tin đi ra theo thứ tự mà chúng đi vào. FCFS đối xử với các
gói tin nhƣ nhau, hoạt động theo cùng một phƣơng pháp, do đó, phù hợp với mô hình
best-effort trƣớc đây.
Nhƣợc điểm của FCFS là không phân biệt đƣợc các luồng dữ liệu khác nhau,
dẫn đến việc không có cơ chế đối xử khác nhau với các luồng dữ liệu đó, làm cho các
luồng dữ liệu bị suy giảm chất lƣợng khi có tắc nghẽn xảy ra.
2.3. Thuật toán lập lịch Max-Min
Một trong những mục tiêu của lập lịch là phân bổ băng thông có sẵn cho các
luồng dữ liệu khác nhau. Ví dụ băng thông sẵn có giữa ngƣời dùng A và router R1 là
10 Mb/s, giữa ngƣời dùng B và router R1 là 100 Mb/s, và giữa R1 và đích đến C là
13
1.1Mb/s. Câu hỏi đƣợc đặt ra ở đây là: băng thông dành cho ngƣời dùng A và B ở đây
nhƣ thế nào là cân bằng? 0.55 Mb/s và 0.55 Mb/s hay 0.1 Mb/s và 1 Mb/s?
Để giải quyết vấn đề trên, Bertsekas và Gallager đã đƣa ra nguyên lý cơ bản là
tiêu chuẩn công bằng max-min [5] nhƣ sau: Giả sử có N luồng dữ liệu cùng chia sẻ một
băng thông C. Luồng dữ liệu 𝑓𝑖(1 ≤ 𝑖 ≤ 𝑁) mong muốn đƣợc truyền với tốc độ 𝑊(𝑓𝑖),
tuy nhiên tốc độ đạt đƣợc là 𝑅(𝑓𝑖). Gọi tập tốc độ 𝑅(𝑓1), . . . , 𝑅(𝑓𝑁) là tập khả thi nếu
𝑅(𝑓𝑖)
𝑁
𝑖=1
≤ 𝐶. Khi đó, tập khả thi này sẽ là công bằng max-min nếu không tồn tại
một cách nào để tăng tốc độ của luồng dữ liệu 𝑝 mà không mất tính khả thi hoặc giảm
tốc độ của một luồng dữ liệu 𝑞 với điều kiện 𝑅(𝑓𝑝) ≤ 𝑅(𝑓𝑞 ).
Các bƣớc thực hiện để phân chia tốc độ tối đa cho từng luồng dữ liệu nhƣ sau:
 Bƣớc 1: Chọn luồng dữ liệu 𝑓𝑗 trong tập 𝑅(𝑓𝑛 )(1 ≤ 𝑗 ≤ 𝑁) có tốc độ mong
muốn nhỏ nhất.
 Bƣớc 2: Nếu 𝑊 𝑓𝑗 ≤
𝐶
𝑁
thì gán 𝑅 𝑓𝑗 = 𝑊 𝑓𝑗
 Bƣớc 3: Nếu 𝑊 𝑓𝑗 >
𝐶
𝑁
thì gán 𝑅 𝑓𝑗 =
𝐶
𝑁
 Bƣớc 4: Gán 𝑁 = 𝑁 − 1, 𝐶 = 𝐶 − 𝑅 𝑓𝑗 , loại bỏ luồng dữ liệu 𝑓𝑗 ra khỏi tập
𝑅 𝑓𝑛
 Bƣớc 5: Nếu 𝑁 > 0, quay trở lại bƣớc 1
Hình 2.1: Ví dụ về thuật toán công bằng Max-Min
 Bƣớc 1: Gán 𝑅 𝑓1 = 0.1
 Bƣớc 2: Gán 𝑅 𝑓2 = 0.9/3 = 0.3
 Bƣớc 3: Gán 𝑅 𝑓3 = 0.6/3 = 0.3
 Bƣớc 4: Gán 𝑅(𝑓4) = 0.3/1 = 0.3
Mặc dù đã có sự tiến bộ so với thuật toán FCFS khi đã có sự khác biệt trong tốc độ của
các luồng dữ liệu, tuy nhiên sự khác biệt đó là chƣa lớn và chƣa có sự công bằng đối
với các luồng dữ liệu yêu cầu tốc độ cao (Lƣu ý rằng, ở bƣớc 3, các luồng dữ liệu có
tốc độ 𝑊(𝑓𝑗 ) > 𝐶/𝑁 thì đều đƣợc đồng bộ ở một mức 𝑅(𝑓𝑗 ) = 𝐶/𝑁).
14
2.4. Thuật toán Round-Robin
Ở thuật toán Round-robin, một gói tin đến sẽ đƣợc lƣu trữ vào các hàng đợi
khác nhau dựa trên chỉ số luồng dữ liệu (flow ID) hoặc lớp dịch vụ. Server sẽ rà soát
từng hàng đợi theo thứ tự xoay vòng và sau đó, tháo gói tin ra khỏi các hàng đợi không
rỗng. Bộ lập lịch theo thuật toán Round robin đối xử công bằng với các ngƣời dùng và
cung cấp cho ngƣời dùng cùng một lƣợng băng thông nhƣ nhau.
Hình 2.2: Thực thi thuật toán Round-robin
Tuy nhiên, khi số lƣợng hàng đợi lớn và yêu cầu băng thông cao thì việc rà soát
từng hàng đợi để xem xét hàng đợi nào có gói tin đƣợc tháo ra sẽ gây mất thời gian khi
phải rà soát các hàng đợi rỗng. Chính vì vậy giải pháp đƣa ra là tạo danh sách hành
trình hàng đợi (DQ - Departure Queue) chứa chỉ số của các hàng đợi không rỗng nhƣ
hình 2.2. Ở đây, giả sử rằng các dịch vụ có cùng kích thƣớc cố định là cell. Bộ lập lịch
tại đầu ra của switch có 𝑀 hàng đợi FQ và 1 hàng đợi DQ. Các gói tin đi vào đƣợc lƣu
trữ tại bộ nhớ và đƣợc đánh địa chỉ 𝐴𝑖, 𝐴𝑗 và 𝐴𝑘 nhƣ trên hình vẽ, các địa chỉ này đƣợc
quản lý bởi các hàng đợi (Flow queue) ứng với các luồng dữ liệu. Khi đó, với các hàng
đợi FQ không rỗng, chỉ số FQ (từ 1 tới M) sẽ đƣợc lƣu vào danh sách DQ.
Tại mỗi khe thời gian, DQ chọn ra hàng đợi có chỉ số trên cùng (HOL - Head of
line) và tháo cell trên cùng của hàng đợi đó ra. Nếu hàng đợi FQ vẫn còn cell trong
danh sách thì chỉ số của hàng đợi FQ này sẽ đƣợc ghi lại vào cuối danh sách hàng đợi
DQ. Nếu FQ trở nên rỗng thì sẽ không làm gì cả. Sau đó, khi có một gói tin mới đến
thuộc hàng đợi FQ đang rỗng thì chỉ số hàng đợi FQ sẽ đƣợc ghi vào cuối danh sách
hàng đợi DQ.
Thuật toán Round robin có hai nhƣợc điểm chính:
 Khi băng thông đầu ra đƣợc chia thành N hàng đợi FQ thì tƣơng ứng mỗi hàng
đợi sẽ có băng thông là 1/𝑁, nếu các luồng dữ liệu đầu vào có yêu cầu băng
15
thông khác nhau thì thuật toán Round robin không thể phân bố lại băng thông
đầu ra theo yêu cầu băng thông của các luồng dữ liệu đầu vào.
 Kích thƣớc gói tin không đƣợc quan tâm trong thuật toán này, trong khi đó, kích
thƣớc các gói tin lại ảnh hƣởng đến sự phân bố băng thông thực tế. Ví dụ, nếu
một hàng đợi nào đó có các gói tin có kích thƣớc lớn hơn các hàng đợi khác, thì
hàng đợi này phải có băng thông đầu ra lớn hơn băng thông đầu ra của các hàng
đợi khác (1/𝑁).
2.5. Thuật toán Weighted Round-Robin
Giả sử hệ thống round robin có trọng số (WRR) tại mỗi kết nối 𝑖 sẽ có một
trọng số nguyên 𝑤𝑖 tƣơng ứng. Khi server rà soát đến kết nối thứ 𝑖, nó sẽ tháo ra 𝑤𝑖
cell trƣớc khi rà soát hàng đợi tiếp theo. Lập lịch theo thuật toán này rất linh hoạt vì có
thể gán các trọng số cho các dịch vụ khác nhau. Mỗi kết nối đƣợc hoạt động với một
tốc độ
𝑔𝑖 =
𝑤𝑖
𝑗𝑤𝑗
(2.1)
Ví dụ hệ thống WRR có 2 ngƣời dùng là A và B cùng các trọng số tƣơng ứng: 𝑤𝐴 = 3
và 𝑤𝐵 = 7. Khi đó bộ lập lịch sẽ dành ra 30% (= 𝑤𝐴/(𝑤𝐴 + 𝑤𝐵)) băng thông cho
ngƣời dùng A và 70% (= 𝑤𝐵/(𝑤𝐴 + 𝑤𝐵)) băng thông cho ngƣời dùng B.
Hình 2.3: Cách thức quản lý FQ
Thuật toán WRR có thể đƣợc thực hiện ở phần cứng bằng cách sử dụng các
thanh ghi lƣu giữ trọng số (𝑤𝑖) và bộ đếm (𝐶𝑖) cho mỗi hàng đợi FQ nhƣ hình 2.3. Bộ
đếm có nhiệm vụ theo dõi số lƣợng cell có thể gửi đi trong mỗi khung truyền. Giả sử
khung truyền có kích thƣớc 𝐹 (= 𝑤𝑖). Một hàng đợi FQ đƣợc gọi là đủ điều kiện nếu
16
nhƣ hàng đợi đó khác rỗng và giá trị trong bộ đếm khác 0. Tại thời điểm khởi đầu của
khung truyền, mỗi bộ đếm (𝐶𝑖) đƣợc khởi tạo với giá trị ban đầu chính bằng trọng số
(𝑤𝑖) của hàng đợi FQ đó. Khi hàng đợi FQ đủ điều kiện đƣợc rà soát, mỗi cell đƣợc
tháo ra sẽ làm giá trị của bộ đếm 𝐶𝑖 giảm đi 1. Sau khi 𝐹 cell đƣợc tháo ra, khung
truyền mới lại đƣợc bắt đầu.
Hình 2.4: Thực hiện thuật toán WRR trên phần cứng
Để thực hiện thuật toán WRR trên phần cứng, sử dụng 2 hàng đợi DQ nhƣ
hình 2.4. Trong đó, hàng đợi 𝐷𝑄𝑠 ở chế độ chờ (standby), hàng đợi 𝐷𝑄𝑎 chỉ hàng đợi ở
chế độ hoạt động (active), chịu trách nhiệm về việc truyền các cell. Cách thức lƣu trữ
các cell dữ liệu vào bộ nhớ và quản lý địa chỉ trong các hàng đợi FQ tƣơng tự nhƣ thuật
toán Round robin. 𝐷𝑄𝑎 chọn lựa hàng đợi FQ có chỉ số đầu danh sách để tháo gói tin
cho đến khi hàng đợi FQ đó rỗng. Khi đó, vai trò của 𝐷𝑄𝑎 và 𝐷𝑄𝑠 đƣợc hoán đổi cho
nhau. Vào thời điểm khởi tạo của hệ thống, mỗi bộ đếm 𝐶𝑖 đƣợc gán giá trị bằng trọng
số 𝑤𝑖. Khi một gói tin đi vào hàng đợi 𝐹𝑄𝑖, nếu nó là gói tin đầu danh sách của hàng
đợi 𝐹𝑄𝑖 và giá trị 𝐶𝑖 ≠ 0 thì đƣợc tham gia vào hàng đợi 𝐷𝑄𝑎 (chỉ số 𝑖 đƣợc đƣa vào
cuối hàng đợi 𝐷𝑄𝑎), nếu 𝐶𝑖 = 0 thì đƣợc tham gia vào hàng đợi 𝐷𝑄𝑠. Nếu nó không
phải là gói tin đầu danh sách thì đơn giản sẽ đƣợc thêm vào cuối của hàng đợi 𝐹𝑄𝑖. Mỗi
khi có cell đƣợc tháo ra khỏi 𝐹𝑄𝑖 thì giá trị 𝐶𝑖 tƣơng ứng lại giảm đi 1. Sau đó, kiểm tra
hàng đợi 𝐹𝑄𝑖. Nếu 𝐹𝑄𝑖 không rỗng và 𝐶𝑖 ≠ 0, chỉ số 𝑖 đƣợc thêm vào cuối của hàng
đợi 𝐷𝑄𝑎. Nếu 𝐹𝑄𝑖 không rỗng nhƣng 𝐶𝐼 = 0 thì chỉ số 𝑖 đƣợc thêm vào cuối hàng đợi
𝐷𝑄𝑠. Nếu 𝐹𝑄𝑖 rỗng thì chuyển sang rà soát hàng đợi tiếp theo.
2.6. Thuật toán Deficit Round-Robin
Thuật toán thâm hụt round robin (DRR) là trƣờng hợp mở rộng của thuật toán
WRR cho trƣờng hợp các gói tin có kích thƣớc khác nhau. Ý tƣởng chính của thuật
toán là sử dụng thuật toán round robin với một phần lƣợng tử dịch vụ đƣợc gán cho
mỗi hàng đợi. Điểm khác biệt duy nhất so với phƣơng pháp round robin truyền thống
17
là nếu hàng đợi không thể tháo gói tin trong lƣợt của nó vì kích thƣớc gói tin quá lớn
thì phần lƣợng tử sẽ đƣợc thêm vào ở lƣợt rà soát tiếp theo. Cụ thể nhƣ sau:
Giả sử mỗi luồng dữ liệu 𝑖 đƣợc xác định bởi một giá trị 𝑄𝑖 bits tại mỗi lƣợt rà
soát, kèm theo một biến trạng thái 𝐷𝐶𝑖 (Deficit Counter) để xác định phần thâm hụt.
Công việc rà soát ở mỗi lƣợt đƣợc tính là một vòng round robin tất cả các hàng đợi hiện
có. Để tránh việc phải kiểm tra các hàng đợi rỗng, một danh sách ActiveList đƣợc tạo ra
để chứa chỉ số của các hàng đợi có ít nhất một gói tin trong đó. Các gói tin đi vào từ
nhiều luồng dữ liệu đƣợc phân loại để lƣu trữ vào các hàng đợi khác nhau. Giả sử số
bytes của gói tin đầu tiên trong hàng đợi 𝑖 ở lƣợt rà soát thứ 𝑘 là 𝑏𝑦𝑡𝑒𝑖(𝑘). Khi một gói
tin đến và lƣu trữ vào hàng đợi đang rỗng 𝑖 thì chỉ số 𝑖 sẽ đƣợc thêm vào cuối danh
sách ActiveList. Nếu 𝑖 ở đầu danh sách ActiveList thì ở lƣợt rà soát thứ 𝑘, thuật toán sẽ
tính toán giá trị 𝐷𝐶𝑖 = 𝐷𝐶𝑖 + 𝑄𝑖 và tháo gói tin của hàng đợi 𝑖 ra nếu thỏa mãn điều
kiện 𝑏𝑦𝑡𝑒𝑠𝑖(𝑘) ≤ 𝐷𝐶𝑖, sau đó cập nhật lại giá trị 𝐷𝐶𝑖 = 𝐷𝐶𝑖 − 𝑏𝑦𝑡𝑒𝑠𝑖(𝑘). Lúc này,
nếu hàng đợi 𝑖 vẫn còn gói tin để tháo ra thì chỉ số 𝑖 sẽ đƣợc ghi vào cuối danh sách
ActiveList, nếu không thì gán giá trị của 𝐷𝐶𝑖 về 0 và xóa chỉ số 𝑖 ra khỏi danh sách
ActiveList.
Hình 2.5: Lƣợt rà soát Round robin thứ nhất
18
Hình 2.6: Lƣợt rà soát Round robin thứ hai
Một ví dụ về hoạt động của thuật toán DRR đƣợc mô tả nhƣ hình 2.5 và
hình 2.6. Tại thời điểm khởi đầu, các giá trị biến đếm 𝐷𝐶𝑖 đều đƣợc gán bằng 0, con trỏ
trỏ vào đỉnh của danh sách ActiveList. Khi hàng đợi đầu tiên đƣợc rà soát, giá trị lƣợng
tử 500 đƣợc cộng vào biến đếm 𝐷𝐶𝑖. Vì kích thƣớc gói tin ở đầu hàng đợi 𝑖 là 200 (nhỏ
hơn giá trị 𝐷𝐶𝑖 = 500) nên gói tin này đƣợc tháo ra, phần dƣ thừa 300 đƣợc gán lại cho
𝐷𝐶𝑖. Vì kích thƣớc gói tin tiếp theo trong hàng đợi 𝑖 là 750 > 300 nên không thể tháo
gói tin này ra khỏi hàng đợi 𝑖, lúc đó cập nhật lại giá trị thâm hụt sang cho lƣợt rà soát
tiếp theo (𝐷𝐶𝑖 = 𝐷𝐶𝑖 + 𝑄𝑖 = 300 + 500 = 800). Con trỏ đƣợc di chuyển sang hàng
đợi FQ#2, nơi mà giá trị 𝐷𝐶 đƣợc gán bằng 500 bytes và cho phép gói tin đầu hàng đợi
đƣợc phép tháo ra.
2.7. Kết luận chƣơng
Trong chƣơng này đã nêu ra đƣợc các thuật toán lập lịch khác nhau, phƣơng
pháp thực hiện mỗi thuật toán trên phần cứng cùng với ƣu nhƣợc điểm của từng thuật
toán. Qua đó, sự lựa chọn thuật toán DRR để thực hiện bộ lập lịch trong phân luồng dữ
liệu là hợp lý bởi tính ứng dụng của nó và khả năng thực hiện trên phần cứng so với
các thuật toán phức tạp khác. Trong chƣơng sau sẽ trình bày rõ việc thiết kế từng chức
năng trong phân luồng dữ liệu.
19
Chƣơng 3
THIẾT KẾ LÕI IP PHÂN LUỒNG DỮ LIỆU
3.1. Tổng quan quá trình thiết kế
Trong chƣơng này sẽ trình bày chi tiết kỹ thuật thiết kế lõi IP Phân luồng dữ
liệu. Việc phân tích thiết kế lõi IP theo trình tự từ trên xuống dƣới theo quy trình Top –
Down. Quá trình thiết kế đƣợc xem xét ở mức độ tổng thể nhƣ xem xét các khối chức
năng, kích thƣớc hàng đợi, các tín hiệu giao tiếp nhƣ tín hiệu trạng thái, tín hiệu điều
khiển,.... Sau đó, ta sẽ module hóa các khối chức năng, kỹ thuật chuyển đổi trạng thái ,
dữ liệu của các khối chức năng đó. Lõi IP đƣợc thiết kế để giao tiếp bộ vi xử lý, làm
việc trong một hệ thống. Trong phạm vi của luận văn, chỉ đề cập đến việc thiết kế lõi
IP phân luồng dữ liệu, sau đó ở phần mô phỏng sẽ có thực hiện giao tiếp với bộ vi xử
lý ARM Cotex-A9 trên nền FPGA Xilinx – ZynqZC706.
3.2. Thiết kế kiến trúc lõi IP
Hình 3.1: Sơ đồ kết nối lõi IP phân luồng dữ liệu
20
Để đảm bảo các chức năng phân luồng dữ liệu vào các hàng đợi khác nhau, đồng
thời đảm bảo tốc độ do ngƣời dùng cấu hình, lõi IP phân luồng dữ liệu đƣợc thiết kế
với sơ đồ khối nhƣ hình 3.1. Trong đó:
 Khối Congestion: có chức năng kiểm tra tắc nghẽn trƣớc khi lƣu gói tin vào bộ
nhớ. Khối này sử dụng thuật toán WRED đã đƣợc nêu ra trong chƣơng 1.
 Khối BuffMan (Buffer Management): có nhiệm vụ quản lý bộ đệm, cấp phát
vùng nhớ cho các gói tin, quản lý các hàng đợi chứa các gói tin với mục đích
phân luồng dữ liệu. Bên cạnh đó, khối BuffMan còn có chức năng ghi, đọc gói
tin vào bộ nhớ, thông báo tình trạng gói tin cho khối Scheduler đƣợc biết. Khối
BuffMan đƣợc trình bày chi tiết ở mục 3.3.
 Khối Scheduler: có chức năng quản lý danh sách ActiveList và thực hiện công
việc lập lịch. Đồng thời áp dụng cơ chế thùng thẻ, đảm bảo đƣợc tính năng định
hình lƣu lƣợng của lõi IP phân luồng dữ liệu. Khối Scheduler đƣợc trình bày ở
mục 3.9.
Nguyên lý hoạt động
Gói tin khi đi vào lõi IP sẽ đƣợc kiểm tra tại Khối Congestion để đảm bảo rằng,
khi gói tin đi vào bộ đệm sẽ không bị tắc nghẽn. Khối Congestion đƣợc xem nhƣ là
“chốt chặn” cho phép gói tin đi vào khối BuffMan ở trong hay là không. Trong trƣờng
hợp thuật toán chống tắc nghẽn đƣa ra quyết định không cho gói tin đi vào nữa thì tại
đây, gói tin sẽ bị loại bỏ. Trƣờng hợp gói tin thỏa mãn điều kiện và đƣợc đi qua khối
Congestion, sẽ tiếp tục đi đến khối BuffMan để đƣợc lƣu vào bộ nhớ và chờ đƣợc
tháo ra theo đúng chính sách mà hàng đợi chứa gói tin này đã đƣợc quy định. Dựa vào
các tín hiệu trong nhóm tín hiệu ContextIn, khối BuffMan sẽ xác định gói tin đến
đƣợc phân loại vào hàng đợi nào, đây chính là công đoạn phân loại gói tin
(classification), sau đó thực hiện công việc cấp phát, quản lý địa chỉ của gói tin và tiến
hành lƣu gói tin vào bộ nhớ. Khi lƣu gói tin vào bộ nhớ xong, khối BuffMan sẽ gửi
nhóm tín hiệu EnqSts tới khối Scheduler để thông báo tình trạng quá trình ghi gói tin
khi ghi vào bộ nhớ: thành công hay không thành công, từ đó khối Scheduler sẽ dựa
vào đó quản lý danh sách ActiveList nhƣ đã trình bày trong mục 2.6. Ngoài ra, khối
Scheduler còn có một máy trạng thái hoạt động độc lập nhằm thực hiện thuật toán lập
lịch Deficit Round Robin (mục 2.6), rà soát các hàng đợi trong danh sách ActiveList và
gửi lệnh tháo gói tin tới khối BuffMan thông qua nhóm tín hiệu DeqCMD. Sau khi
nhận đƣợc lệnh từ khối Scheduler, khối BuffMan sẽ tiến hành công việc tháo gói tin
ra khỏi bộ nhớ theo nhóm tín hiệu Outputs, từ đó hoàn tất công việc phân luồng dữ
liệu cho một gói tin khi đi vào lõi IP.
21
Mô tả tín hiệu
Bảng 3.1 mô tả các tín hiệu của lõi IP phân luồng dữ liệu.
Bảng 3.1: Bảng mô tả tín hiệu lõi IP
Tín hiệu Nguồn Mô tả
Clk Clock Tín hiệu Clock
Rstn Reset Tín hiệu Reset
Input S Luồng dữ liệu vào1
Output M Luồng dữ liệu ra2
Hinf S Các thông số của ngƣời dùng cấu hình cho
mỗi hàng đợi và các thông số thống kê đƣợc
truyền qua nhóm tín hiệu này.
Nhóm tín hiệu DAAxiAcc bao gồm cả đọc và ghi3
Nhóm tín hiệu QMAxiAcc bao gồm cả đọc và ghi4
Nhóm tín hiệu AxiAcc bao gồm cả đọc và ghi5
Nhóm tín hiệu Hinf
dabaseaddr[31:0] S Địa chỉ cơ sở của vùng nhớ mà khối
DynamicAllocator quản lý
databaseaddr[31:0] S Địa chỉ cơ sở của vùng nhớ lƣu dữ liệu của
lõi IP
qmbaseaddr[31:0] S Địa chỉ cơ sở của vùng nhớ mà khối
QueueManagement quản lý
coeffdivide[7:0] S Hệ số chia clock
cmd[4:0] S Lệnh gửi từ host
inqc1[QCT1_WID-1:0] S Thông số đƣợc ghi vào trƣờng thông tin thứ
nhất của hàng đợi
1
Theo bus AXIS Stream đƣợc mô tả ở phụ lục
2
Theo bus AXIS Stream đƣợc mô tả ở phụ lục
3
Nhóm tín hiệu AxiAcessor cho đọc và ghi bao gồm Data,Cmd,Sts đã đƣợc mô tả ở bảng 3.5
4
Nhóm tín hiệu AxiAcessor cho đọc và ghi bao gồm Data,Cmd,Sts đã đƣợc mô tả ở bảng 3.5
5
Nhóm tín hiệu AxiAcessor cho đọc và ghi bao gồm Data,Cmd,Sts đã đƣợc mô tả ở bảng 3.5
22
Inqc2[QCT1_WID-1:0] S Thông số đƣợc ghi vào trƣờng thông tin thứ
2 của hàng đợi
length[LENGTH-1:0] S Độ rộng nội dung đƣợc phép ghi vào ô nhớ
qid[QID_WIDTH-1:0] S Chỉ số hàng đợi
retcode M Cờ trạng thái trả về khi nhận đƣợc lệnh cấu
hình từ Host
bytecount[63:0] M Số byte dữ liệu ra khỏi lõi IP
pktcount[63:0] M Số gói dữ liệu ra khỏi lõi IP
handshake signal S Nhóm tín hiệu bắt tay6
3.3. Thiết kế khối quản lý bộ đệm (Buffer Management)
3.3.1. Chức năng
Hình 3.2: Sơ đồ kết nối khối Quản lý Bộ đệm
Khối Quản lý bộ đệm thực hiện chức năng ghi dữ liệu vào và đọc dữ liệu ra
trong bộ nhớ, quá trình ghi đọc đƣợc thực hiện bởi khối Enqueue và Dequeue tƣơng
ứng. Bên cạnh đó, có khối QueueMan sẽ quản lý các hàng đợi và các cell, cấp phát các
6
Theo chuẩn bus AXIS Handshake đã đƣợc mô tả ở phụ lục.
23
vị trí nhớ cho các gói tin đủ điều kiện đi vào. Việc phân loại các gói tin đi vào các hàng
đợi tƣơng ứng cũng đƣợc thực hiện trong khối này.
3.3.2. Sơ đồ kết nối
Hình 3.2 mô tả sự kết nối giữa các khối con của khối Quản lý bộ đệm. Trong
đó:
 Khối Enq (Enqueue) : có chức năng phân loại gói tin đầu vào theo phƣơng pháp
phân loại kết hợp hành vi, thực hiện yêu cầu bộ nhớ đến khối quản lý hàng đợi,
đồng thời ghi dữ liệu của gói tin vào bộ nhớ theo đơn vị là từng cell nếu gói tin
hợp lệ. 7
 Khối Deq (Dequeue) : có chức năng nhận lệnh tháo hoặc hủy bỏ gói tin từ bộ lập
lịch, giao tiếp với khối truy xuất bộ nhớ để đọc gói tin ra theo từng cell và phân
xử đƣa đến ngõ ra mong muốn. 8
 Khối QMan (Queue Management) : có chức năng quản lý các hàng đợi và các
cell. Mỗi hàng đợi đƣợc quản lý bởi cấu trúc danh sách liên kết, ngoài ra còn có
các con trỏ đầu và cuối giúp thuận tiện trong việc cấp phát và tháo bỏ một cell,
bên cạnh đó hai con trỏ này còn hỗ trợ việc liên kết các hàng đợi trong danh sách
ActiveList của bộ lập lịch. 9
 Khối Memory Accessor: thực hiện quá trình truy xuất bộ nhớ.10
 Các khối QM_RRCmd, Deq_RRCmd: có chức năng phân xử các lệnh
(command) đầu vào theo thuật toán round robin.11
3.3.3. Mô tả tín hiệu
Bảng 3.2 mô tả các tín hiệu của khối Quản lý Bộ đệm.
Bảng 3.1: Bảng mô tả tín hiệu lõi IP
Tín hiệu Nguồn Mô tả
Clk Clock Tín hiệu Clock
Rstn Reset Tín hiệu Reset
Input S Luồng dữ liệu vào12
ContextIn S Các thông số của gói tin vào
7
Khối Enqueueđƣợc trình bày chi tiết ở mục 3.4.
8
Khối Dequeueđƣợc trình bày chi tiết ở mục 3.5.
9
Khối QueueManagementđƣợc trình bày chi tiết ở mục 3.7.
10
Khối Memory Accessorđƣợc trình bày chi tiết ở mục 3.6.
11
Khối Round robin commandđƣợc trình bày chi tiết ở phần phụ lục.
12
Theo bus AXIS Stream đƣợc mô tả ở phụ lục
24
QMCmd S Các lệnh đƣợc gửi tới khối Quản lý hàng đợi
để yêu cầu các thông tin về hàng đợi hoặc
các thông số của gói tin trong hàng đợi
Ctrl S Các thông số của ngƣời dùng cấu hình cho
mỗi hàng đợi đƣợc gán thông qua nhóm tín
hiệu này
Error M Thông báo cho host biết đƣợc quá trình xử lý
gói tin khi lƣu vào hoặc tháo ra bị lỗi
EnqSts M Thông báo quá trình ghi xong một gói tin
vào bộ nhớ tới khối lập lịch (Scheduler) để
khối lập lịch tháo gói tin ra đúng mong
muốn 13
ContextOut M Các thông số về gói tin không thay đổi trong
quá trình tháo dữ liệu (đề phòng trƣờng hợp
tháo bị lỗi làm các thông số bị ảnh hƣởng)
Outputs M Luồng dữ liệu đi ra.14
Nhóm tín hiệu DAAxiAcc bao gồm cả đọc và ghi15
Nhóm tín hiệu QMAxiAcc bao gồm cả đọc và ghi16
Nhóm tín hiệu AxiAcc bao gồm cả đọc và ghi17
3.4. Thiết kế khối xử lý ghi gói tin vào hàng đợi (Enqueue)
3.4.1. Chức năng
Khối Enqueue thực hiện chức năng phân loại các luồng dữ liệu đầu vào dựa
trên phân loại kết hợp hành vi BA, cụ thể là trƣờng IP Precedence trong phần header
của gói tin IPv4. Sau đó, lƣu trữ chúng vào bộ nhớ theo các hàng đợi tƣơng ứng, mỗi
lần lƣu theo đơn vị là từng cell.
13
Nhóm tín hiệu EnqSts đã đƣợc mô tả ở Bảng 3.3
14
Theo chuẩn bus AXIS Streamđã đƣợc mô tả ở phụ lục.
15
Nhóm tín hiệu AxiAcessor cho đọc và ghi bao gồm Data,Cmd,Sts đã đƣợc mô tả ở bảng 3.5
16
Nhóm tín hiệu AxiAcessor cho đọc và ghi bao gồm Data,Cmd,Sts đã đƣợc mô tả ở bảng 3.5
17
Nhóm tín hiệu AxiAcessor cho đọc và ghi bao gồm Data,Cmd,Sts đã đƣợc mô tả ở bảng 3.5
25
3.4.2. Mô tả tín hiệu
Bảng 3.3 mô tả các tín hiệu của Khối Enqueue. Trong bảng có sử dụng các
thông số parameter đƣợc định nghĩa nhƣ sau:
QID_WIDTH Độ rộng của chỉ số hàng đợi
CELL_ID_WIDTH Độ rộng của chỉ số cell
FCT_WIDTH Độ rộng các thông số tùy biến đầu gói tin
LCT_WIDTH Độ rộng các thông số tùy biến cuối gói tin
QCT1_WIDTH Độ rộng của trƣờng thông tin thứ nhất của hàng đợi
QCT2_WIDTH Độ rộng của trƣờng thông tin thứ hai của hàng đợi
CCT_WIDTH Độ rộng của trƣờng thông tin của gói tin đƣợc lƣu
trong cell đầu tiên
CELL_SIZE_WIDTH Độ rộng của một cell lƣu dữ liệu
(= 2𝐶𝐸𝐿𝐿_𝑆𝐼𝑍𝐸_𝑊𝐼𝐷𝑇𝐻
(𝑏𝑦𝑡𝑒𝑠))
CT_WIDTH Độ rộng của các thông số của gói tin đƣợc gửi tới
module lập lịch
Bảng 3.3: Bảng mô tả tín hiệu Khối Enqueue
Tín hiệu Nguồn Mô tả
Clk Clock Tín hiệu Clock
Rstn Reset Tín hiệu Reset
ContextIn S Các thông số của gói tin vào
EnqIn S Luồng dữ liệu đi vào.18
QM M Yêu cầu cellid tới khối quản lý hàng
đợi để lƣu dữ liệu của gói tin vào cellid
đó
MemData M Dữ liệu đƣợc gửi tới khối Memory
Acessor để ghi vào RAM
MemCmd M Yêu cầu xác nhận việc ghi đƣợc gửi tới
18
Theo bus AXIS Streamđã đƣợc mô tả ở phụ lục.
26
khối Memory Acessor để ghi dữ liệu
vào Random Access Memory (RAM)
MemSts S Trạng thái của quá trình ghi dữ liệu vào
bộ nhớ
EnqSts M Thông báo quá trình ghi xong một gói
tin vào bộ nhớ tới khối lập lịch
(Scheduler) để khối lập lịch tháo gói tin
ra đúng mong muốn
Nhóm tín hiệu ContextIn
qid[QID_WIDTH-1:0] S Chỉ số hàng đợi của gói tin vào
pktlen[15:0] S Chiều dài của gói tin vào (bytes)
firstcontext [FCT_WIDTH-
1:0]
S Các thông số tùy biến đầu gói tin ứng
với từng khối sử dụng module này
lastcontext [LCT_WIDTH-
1:0]
S Các thông số tùy biến cuối gói tin ứng
với từng khối sử dụng module này
physicalportin[1:0] S Cổng vật lý hiện tại của gói tin đi vào
totallen[15:0] S Chiều dài tổng cộng của gói tin vào
trong trƣờng hợp bị chia nhỏ (bytes)
islastcell S Cho biết gói tin vào có phải là gói tin
cuối cùng trong các gói bị chia nhỏ
Nhóm tín hiệu EnqSts
status[2:0] S Trạng thái của gói tin sau khi lƣu vào
bộ nhớ
 0 = Thành công.
 1 = Lỗi trong quá trình yêu cầu
cấp phát cell đầu tiên của tuser.
 2 = Lỗi trong quá trình yêu cầu
cấp phát các cell khác của tuser.
 3 = Lỗi trong quá trình ghi tuser.
 4 = Lỗi trong quá trình yêu cầu
cấp phát các cell của tdata.
 5 = Lỗi trong quá trình ghi tdata
27
context [CT_WIDTH-1:0] S Các thông số của gói tin đƣợc gửi tới
module lập lịch
qid[QID_WIDTH-1:0] S Chỉ số hàng đợi của gói tin vào
handshake signal S Nhóm tín hiệu bắt tay theo bus AXIS
Handshake19
3.4.3. Máy trạng thái
Hình 3.3: Máy trạng thái của Khối Enqueue
Các trạng thái của máy trạng thái Khối Enqueue biểu diễn trong hình 3.3:
RESET
Trạng thái khởi tạo ban đầu.
WAIT_FIRST
Trạng thái chờ gói tin bắt đầu đi vào Khối Enqueue.
WRITE_TUSER*
Trạng thái thực hiện quá trình ghi dữ liệu TUSER vào bộ nhớ.
WRITE_TDATA*
Trạng thái thực hiện quá trình ghi dữ liệu TDATA vào bộ nhớ.
19
Bus đã đƣợc mô tả ở phụ lục.
28
WRITE_SUCCES_CONTEXT
Trạng thái ghi các thông số về gói tin đã lƣu thành công vào cellcontext của cell đầu
tiên của gói tin.
SEND_STATUS
Trạng thái gửi tín hiệu cho khối lập lịch (Scheduler) biết là đã hoàn thành xong việc ghi
gói tin vào bộ nhớ.
Các trạng thái này đều có chung quá trình ghi phần thông tin (tuser) trƣớc và
phần dữ liệu (tdata) sau. Quá trình ghi dữ liệu (𝐖𝐑𝐈𝐓𝐄_𝐓𝐃𝐀𝐓𝐀∗
) có hai nhiệm vụ
chính, đó là yêu cầu địa chỉ cell (cellid) cần ghi tới khối QueueMan và sử dụng địa chỉ
cell đó để gửi tới khối truy xuất bộ nhớ MemAcc với mục đích ghi dữ liệu vào bộ nhớ.
Bằng cách sử dụng kiến trúc pipeline giữa hai công việc này giúp làm tăng tốc độ xử lý
cho lõi IP.
3.5. Thiết kế khối xử lý đọc gói tin từ hàng đợi ra (Dequeue)
3.5.1. Chức năng
Khối Dequeue thực hiện chức năng tháo dữ liệu đã đƣợc lƣu trong bộ nhớ, thứ
tự tháo gói đƣợc quy định bởi bộ lập lịch Scheduler. Đặc điểm nổi trội của khối
Dequeue này là có khả năng tháo dữ liệu dựa trên chỉ số hàng đợi (qid) hoặc chỉ số
cell(cellid) và mỗi lần tháo theo đơn vị là từng cell.
3.5.2. Mô tả tín hiệu
Bảng 3.4 mô tả các tín hiệu của module Dequeue. Trong bảng có sử dụng các
thông số parameter đƣợc định nghĩa nhƣ sau:
QID_WIDTH Độ rộng của chỉ số hàng đợi
CID_WIDTH Độ rộng của chỉ số cell
Bảng 3.4: Bảng mô tả tín hiệu module Dequeue
Tín hiệu Nguồn Mô tả
Clk Nguồn clock Tín hiệu Clock
Rstn Nguồn reset Tín hiệu Reset
CMD S Yêu cầu tháo các gói tin và các thông
số phục vụ cho việc tháo
QM M Yêu cầu cellid tới khối quản lý hàng
29
đợi để tháo dữ liệu của gói tin ra ở
trong cellid đó
MemData M Dữ liệu đƣợc đọc ra từ bộ nhớ thông
qua khối MemoryAcessor.20
MemCmd M Yêu cầu xác nhận việc đọc đƣợc gửi tới
khối MemoryAcessor để tháo dữ liệu ra
MemSts S Trạng thái của quá trình đọc dữ liệu từ
bộ nhớ
Outputs M Gói tin đi ra khối Dequeue theo bus 21
ContextOut M Các thông số về gói tin không thay đổi
trong quá trình tháo dữ liệu (đề phòng
trƣờng hợp tháo bị lỗi làm các thông số
bị ảnh hƣởng)
Stats M Thống kê của ngõ ra theo 2 thông số: số
gói tin ra và số dữ liệu ra, trong đó số
dữ liệu ra tính theo bytes.
Nhóm tín hiệu CMD
qid[QID_WIDTH-1:0] S Chỉ số hàng đợi của dữ liệu tháo ra
cellid [CID_WIDTH-1:0] S Chỉ số của cell đầu tiên, bắt đầu cho
quá trình tháo dữ liệu
pktlen[15:0] S Chiều dài của lƣợng dữ liệu muốn tháo
output[1:0] S Lựa chọn ngõ ra cho gói tin
tlastType S Tín hiệu này sử dụng cho các cmd:
0,1,2,3
 0 = tlast đƣợc bật lên vào cuối
gói tin.
 1 = tlast đƣợc bật lên cuối mỗi
cell đƣợc tháo ra
cmd[2:0] S Yêu cầu tháo gói tin từ khối lập lịch
20
MemData, MemCmd, MemSts đƣợc mô tả theo bus RdData, RdCmd, RdSts tại bảng 3.5
21
Bus AXIS Stream đã đƣợc mô tả ở phụ lục.
30
(Scheduler)
 0 = Tháo dữ liệu bằng chỉ số
hàng đợi (qid) và sau đó xóa
khỏi bộ nhớ.
 1 = Tháo dữ liệu bằng chỉ số
hàng đợi (qid) và vẫn giữ
nguyên dữ liệu đó trong bộ nhớ.
 2 = Tháo gói tin bằng chỉ số cell
(cellid) và sau đó xóa khỏi bộ
nhớ.
 3 = Tháo dữ liệu bằng chỉ số cell
(cellid) và vẫn giữ nguyên dữ
liệu đó trong bộ nhớ.
 4 = Tháo và bỏ dữ liệu bằng chỉ
số hàng đợi (qid) và sau đó xóa
khỏi bộ nhớ.
 5 = Tháo và bỏ dữ liệu bằng chỉ
số cell và sau đó xóa khỏi bộ
nhớ.
setLast S chỉ ra rằng gói tin đƣợc tháo ra có phải
là gói tin cuối cùng trong trƣờng hợp bị
phân mảnh hay không
 0 = chƣa phải là cuối cùng.
 1 = là gói tin cuối cùng.
handshake signal S Nhóm tín hiệu bắt tay theo bus AXIS
Handshake 22
22
Bus AXI Handshake đã đƣợc mô tả ở phụ lục.
31
3.5.3. Máy trạng thái
Hình 3.4: FSM của khối Dequeue
Máy trạng thái(FSM) của khối Dequeue biểu diễn ở hình 3.4, trong đó các trạng
thái của Dequeue FSM đƣợc mô tả nhƣ sau:
RESET
Trạng thái khởi tạo ban đầu.
WAIT_CMD
Trạng thái chờ tín hiệu yêu cầu tháo dữ liệu từ khối lập lịch (Scheduler).
QID_READ_PROCESSING*
Trạng thái thực hiện quá trình đọc dữ liệu ra từ bộ nhớ dựa vào QID (trƣờng hợp
𝑐𝑚𝑑 = 0 hoặc 𝑐𝑚𝑑 = 1).
CELLID_READ_PROCESSING*
Trạng thái thực hiện quá trình đọc dữ liệu ra từ bộ nhớ dựa vào CELLID đầu tiên
(trƣờng hợp 𝑐𝑚𝑑 = 2 hoặc 𝑐𝑚𝑑 = 3).
DROP_BY_QID*
Trạng thái thực hiện quá trình loại bỏ dữ liệu trong bộ nhớ dựa vào QID (trƣờng hợp
𝑐𝑚𝑑 = 4).
DROP_BY_CELLID*
32
Trạng thái thực hiện quá trình loại bỏ dữ liệu trong bộ nhớ dựa vào CELLID (trƣờng
hợp 𝑐𝑚𝑑 = 5).
Tƣơng tự nhƣ khối Enqueue, khối Dequeue cũng sử dụng kiến trúc pipeline giữa các
công việc yêu cầu địa chỉ cell tới khối QueueMan, gửi địa chỉ cell cần tháo tới khối truy
xuất bộ nhớ QueueMan và gửi yêu cầu xóa địa chỉ cell ra khỏi danh sách mà
QueueMan quản lý giúp làm tăng tốc độ xử lý cho lõi IP.
3.6. Thiết kế khối hỗ trợ giao tiếp bộ nhớ (Memory Accessor)
3.6.1. Chức năng
Khối Memory Accessor thực hiện chức năng hỗ trợ việc ghi đọc vào ô nhớ,
truy xuất cả bộ nhớ tốc độ cao và bộ nhớ tốc độ thấp.
3.6.2. Mô tả tín hiệu
Bảng 3.5 mô tả các tín hiệu của Khối Memory Accessor. Trong bảng có sử
dụng các thông số parameter đƣợc định nghĩa nhƣ sau:
CID _WIDTH Độ rộng của chỉ số cell
CELL_SIZE_WIDTH Độ rộng của một cell lƣu dữ liệu
(2𝐶𝐸𝐿𝐿_𝑆𝐼𝑍𝐸_𝑊𝐼𝐷𝑇𝐻
(𝑏𝑦𝑡𝑒𝑠)).
CACHED_SIZE_WIDTH Số lƣợng ô nhớ lƣu dữ liệu quản lý ở bộ nhớ tốc độ
cao (= 2𝐶𝐴𝐶𝐻𝐸𝐷_𝑆𝐼𝑍𝐸_𝑊𝐼𝐷𝑇𝐻
).
AXI_DATA_WIDTH Độ rộng dữ liệu của bus AXI.
AXI_ADDR_WIDTH Độ rộng địa chỉ của bus AXI.
Bảng 3.4: Bảng mô tả tín hiệu module Dequeue
Tín hiệu Nguồn Mô tả
Clk Clock Tín hiệu Clock
Rstn Reset Tín hiệu Reset
RdCmd S Nhóm lệnh đọc
WrCmd S Nhóm lệnh ghi
RdSts M Nhóm trạng thái đọc
WrSts M Nhóm trạng thái ghi
33
RdData M Nhóm dữ liệu đọc theo chuẩn bus
AXIS Stream23
WrData S Nhóm dữ liệu ghi
BaseAddr S Địa chỉ cơ sở của vùng nhớ
RdAxiAccCmd M Nhóm lệnh đọc giao tiếp với khối AXI
Accessor.
WrAxiAccCmd M Nhóm lệnh ghi giao tiếp với khối AXI
Accessor.
RdAxiAccSts M Nhóm trạng thái đọc nhận từ khối AXI
Accessor.
WrAxiAccSts M Nhóm trạng thái ghi nhận từ khối AXI
Accessor.
RdAxiAccData M Nhóm dữ liệu đọc theo chuẩn bus AXI
Stream.
WrAxiAccData S Nhóm dữ liệu ghi theo chuẩn bus AXI
Stream.
Nhóm tín hiệu RdCmd,WrCmd
handshake signal S Nhóm tín hiệu bắt tay theo bus
AXISHandshake.24
cellid [CID_WIDTH-1:0] S Chỉ số của cell để yêu cầu đọc/ghi
len[CELL_SIZE_WIDTH:0] S Độ dài dữ liệu đƣợc đọc/ghi ở bộ nhớ
Nhóm tín hiệu RdSts,WrSts
handshake signal S Nhóm tín hiệu bắt tay theo bus
AXISHandshake.
status[7:0] M Trạng thái của quá trình đọc/ghi ở bộ
nhớ.
 0x80: Quá trình ghi/đọc thành
công.
23
Bus AXI Stream đã đƣợc mô tả ở phụ lục.
24
Bus AXIS Handshake đã đƣợc mô tả ở phụ lục.
34
 Các trƣờng hợp còn lại: Quá
trìnhghi/đọc bị lỗi.
Nhóm tín hiệu RdAxiAccCmd,WrAxiAccCmd
handshake signal S Nhóm tín hiệu bắt tay theo bus AXIS
Handshake
tdata
[AXI_DATA_WIDTH+22:0]
M/S Tổ hợp các lệnh đầu vào, bao gồm:
 Địa chỉ gốc
 Địa chỉ đọc/ghi
 Chiều dài cần đọc/ghi
Nhóm tín hiệu RdAxiAccSts,WrAxiAccSts
handshake signal S Nhóm tín hiệu bắt tay theo bus
AXISHandshake
status[7:0] S Trạng thái của quá trình đọc/ghi ở bộ
nhớ.
 0x80: Quá trình ghi/đọc thành
công.
 Các trƣờng hợp còn lại: Quá
trìnhghi/đọc bị lỗi.
3.6.3. Máy trạng thái
Khối Memory Accessor sử dụng 2 máy trạng thái rd_state và wr_state phục vụ cho
quá trình đọc và ghi tƣơng ứng.
Mô tả các trạng thái của wr_state FSM đƣợc biểu diễn trong hình 3.5:
WR_RESET
Trạng thái khởi tạo ban đầu.
WR_WAIT_CMD
Trạng thái chờ lệnh ghi đƣợc gửi tới. Nếu địa chỉ ghi nhỏ hơn thông số
2𝐶𝐴𝐶𝐻𝐸𝐷_𝑆𝐼𝑍𝐸_𝑊𝐼𝐷𝑇𝐻
thì dữ liệu sẽ đƣợc lƣu trong cache, bộ nhớ tốc độ cao, ngƣợc lại,
dữ liệu sẽ đƣợc lƣu trong bộ nhớ tốc độ thấp.
WR_INTERNAL_WRITE
Trạng thái ghi dữ liệu vào bộ nhớ tốc độ cao.
WR_INTERNAL_SEND_STATUS
Thông báo trạng thái của quá trình ghi dữ liệu vào bộ nhớ tốc độ cao.
35
WR_EXTERNAL_WRITE
Trạng thái ghi dữ liệu vào bộ nhớ tốc độ thấp.
WR_EXTERNAL_SEND_STATUS
Trạng thái thông báo trạng thái của quá trình ghi dữ liệu vào bộ nhớ tốc độ thấp.
Hình 3.5: Máy trạng thái wr_state
Mô tả các trạng thái của rd_state FSM đƣợc biểu diễn trong hình 3.6:
RD_RESET
Trạng thái khởi tạo ban đầu.
RD_WAIT_CMD
Trạng thái chờ lệnh đọc đƣợc gửi tới. Nếu địa chỉ đọc nhỏ hơn thông số
2𝐶𝐴𝐶𝐻𝐸𝐷_𝑆𝐼𝑍𝐸_𝑊𝐼𝐷𝑇𝐻
thì sẽ thực hiện việc đọc dữ liệu trong cache, bộ nhớ tốc độ cao,
ngƣợc lại sẽ truy cập bộ nhớ tốc độ thấp để đọc dữ liệu.
RD_INTERNAL_FIRST_READ
Trạng thái đọc dữ liệu đầu tiên trong bộ nhớ tốc độ cao.
RD_INTERNAL_READ
Trạng thái đọc các dữ liệu tiếp theo trong bộ nhớ tốc độ cao.
RD_INTERNAL_SEND_STATUS
Trạng thái thông báo trạng thái của quá trình đọc dữ liệu từ bộ nhớ tốc độ cao.
RD_EXTERNAL_READ
36
Trạng thái đọc dữ liệu từ bộ nhớ tốc độ thấp.
RD_EXTERNAL_SEND_STATUS
Trạng thái thông báo trạng thái quá trình đọc dữ liệu từ bộ nhớ tốc độ thấp.
Hình 3.6: Máy trạng thái rd_state
3.7. Thiết kế khối quản lý hàng đợi (Queue Management)
3.7.1. Chức năng
Khối này cung cấp một giao diện lệnh dùng để quản lý hàng đợi các gói tin và
các cell. Hình 3.8 là giao diện bus vào ra và các tham số mặc định của module
QueueManagement. Tập lệnh đƣợc module này hỗ trợ bao gồm các lệnh liên quan
đến gói tin và các lệnh liên quan đến cell. Các lệnh liên quan đến gói tin đƣợc mô tả
trong bảng 3.6.
Để quản lý các hàng đợi một cách hiệu quả, khối Queue Management xây dựng
một cấu trúc dữ liệu [3] nhƣ hình 3.7. Trong đó khối Queue Management sẽ sử dụng
danh sách liên kết để quản lý địa chỉ các cell của các gói tin trong cùng một hàng đợi,
nhiệm vụ này do khối con Dynamic Allocator đảm nhận (chi tiết sẽ đƣợc trình bày ở
mục 3.8). Nhiệm vụ chính của khối Queue Management sẽ quản lý các con trỏ đầu,
con trỏ cuối, trạng thái của hàng đợi và các thông tin riêng để hỗ trợ cho khối lập lịch.
37
Hình 3.7: Cấu trúc dữ liệu quản lý hàng đợi
Bảng 3.6: Bảng mô tả lệnh khối QueueManagement
Tên lệnh Mã lệnh Mô tả
ACTIVE 0 Khởi động khối QueueManagement
DEACTIVE 1 Ngắt hoạt động QueueManagement
ENQUEUE 11 Thêm một gói tin vào hàng đợi
DEQUEUE 12 Lấy ra một gói tin từ hàng đợi
GET_QCONT1 13 Đọc thông tin liên quan đến hàng đợi
GET_QCONT2 14 Đọc thông tin liên quan đến hàng đợi
SET_QCONT1 15 Ghi thông tin liên quan đến hàng đợi
SET_QCONT2 16 Ghi thông tin liên quan đến hàng đợi
GET_CCONT_BY_QID 17 Đọc thông tin của cell ở đầu hàng đợi
EMPTY_QUEUE 18 Làm rỗng hàng đợi
MERGE_QUEUE 19 Nối hai hàng đợi
SET_HEAD_TAIL 20 Chỉ định vị trí đầu và cuối hàng đợi
GET_EMPTY 21 Xác định hàng đợi rỗng hay không
GET_HEAD_TAIL 22 Đọc ra vị trí đầu và cuối hàng đợi
38
INITIALIZE_QUEUE 23 Khởi tạo một gói tin
Các lệnh liên quan đến cell đƣợc mô tả ở bảng 3.9 (ngoại trừ lệnh
SET_PAIR_PTRS đƣợc tạo ra bởi khối QueueManagement).
3.7.2. Cấu Trúc
Module QueueManagement bao gồm các module con nhƣ minh họa trong
hình 3.8. Các module Serializer, MemoryAccessor, Deserializer hỗ trợ việc truy
xuất hàng đợi trong bộ nhớ. Module DynamicAllocator giúp quản lý các cell của gói
tin. Các gói tin và cell có thể đƣợc lƣu trữ ở BRAM hoặc DRAM phụ thuộc vào các
tham số QCACHED_WID và CCACHED_WID tƣơng ứng. Ngoài ra, nó còn cung cấp
giao diện RWAXI để giao tiếp với RAM.
Hình 3.8: Sơ đồ cấu trúc module QueueManagement
3.7.3. Mô tả tín hiệu
Bảng 3.7 mô tả chi tiết các tín hiệu vào ra của module QueueManagement.
Trong đó các thông số cấu hình đƣợc định nghĩa nhƣ sau:
AXI_ADDR_WIDTH Độ rộng địa chỉ của bus AXI
QID_WID Độ rộng trƣờng chỉ số hàng đợi
39
QCONT1_SIZE Độ rộng trƣờng thông tin thứ nhất của hàng đợi (tính
theo Byte)
QCONT2_SIZE Độ rộng trƣờng thông tin thứ hai của hàng đợi
CID_WID Độ rộng trƣờng chỉ số cell
CCONT_SIZE Độ rộng trƣờng nội dung cell (tính theo Byte)
MAX_CONT_LEN Giá trị lớn nhất trong: QCONT1_SIZE,
QCONT2_SIZE, CCONT_SIZE
Bảng 3.7: Bảng mô tả tín hiệu module QueueManagement
Tín hiệu Nguồn Mô tả
clk clock Từ nguồn clock chung
rstn reset Reset bất đồng bộ
qmbaseaddr
[AXI_ADDR_WIDTH-1:0]
S Giá trị địa chỉ bắt đầu của phần lƣu
trữ hàng đợi trong bộ nhớ
dabaseaddr
[AXI_ADDR_WIDTH-1:0]
S Giá trị địa chỉ bắt đầu của phần lƣu
trữ cell trong bộ nhớ
QM_AXIAccessor M Bus giao tiếp với bộ nhớ thông qua
khối AXI Accessor từ khối
QueueManagement, đọc/ghi các
thông tin liên quan đến hàng đợi.
DA_AXIAccessor M Bus giao tiếp với bộ nhớ thông qua
khối AXI Accessor từ khối con
DynamicAllocator, đọc/ghi các
thông tin liên quan đến cell
Nhóm tín hiệu liên quan đến lệnh
cmd[4:0] S Mỗi giá trị tƣơng ứng là một lệnh.
Xem chi tiết trong phần máy trạng
thái.
in_qid[QID_WID-1:0] S Chỉ số hàng đợi
in_qcontext1
[QCONT1_SIZE*8-1:0]
S Trƣờng thông tin thứ nhất của hàng
đợi. Bao gồm giá trị các tham số
40
không thay đổi nhiều trong suốt quá
trình hoạt động, do ngƣời dùng cấu
hình xuống
in_qcontext2
[QCONT2_SIZE*8-1:0]
S Trƣờng thông tin thứ 2 của hàng đợi.
Bao gồm giá trị các tham số thay đổi
liên tục trong suốt quá trình hoạt
động, đƣợc truy xuất bởi nhiều khối
khác nhau.
out_qcontext1
[QCONT1_SIZE*8-1:0]
M Trƣờng thông tin thứ nhất của hàng
đợi. Độ rộng và ý nghĩa tƣơng tự nhƣ
tín hiệu in_qcontext1 đã đƣợc mô tả ở
trên
out_qcontext2
[QCONT2_SIZE*8-1:0]
M Trƣờng thông tin thứ 2 của hàng đợi.
Độ rộng và ý nghĩa tƣơng tự nhƣ tín
hiệu in_qcontext2 đã đƣợc mô tả ở
trên
in_cid[CID_WID-1:0] S Chỉ số cell đầu vào
out_cid[CID_WID-1:0] M Chỉ số cell đầu ra
in_ccontext [CCONT_SIZE*8-
1:0]
S Thông tin của gói tin và trạng thái ghi
gói tin vào bộ nhớ đƣợc đƣa vào để
lƣu vào cellcontext của cell đầu tiên
của gói tin
out_ccontext
[CCONT_SIZE*8-1:0]
S Dữ liệu đƣợc đọc ra về thông tin của
gói tin và trạng thái ghi gói tin vào bộ
nhớ từ cellcontext của cell đầu tiên
của gói tin.
in_nxtptr[CID_WID-1:0] S Chỉ số của cell đƣợc gửi vào ở vị trí
“cell tiếp theo” trong danh sách liên
kết
in_preptr[CID_WID-1:0] S Chỉ số của cell đƣợc gửi vào ở vị trí
“cell trƣớc đó” trong danh sách liên
kết
in_length
[LOG2(MAX_CONT_LEN+1)-
S Độ dài (theo byte) của dữ liệu
41
1:0]
in_headptr[CID_WID-1:0] S Chỉ số cell ở vị trí đầu hàng đợi
in_tailptr [CID_WID-1:0] S Chỉ số cell ở vị trí cuối hàng đợi
out_headptr[CID_WID-1:0] M Trả ra giá trị chỉ số cell ở vị trí đầu
của hàng đợi
out_tailptr[CID_WID-1:0] S Trả ra giá trị chỉ số cell ở vị trí cuối
cùng của hàng đợi
tvalid S Tín hiệu này bật lên 1 cho biết lệnh và
các thông tin đi kèm là hợp lệ
tready M Tín hiệu này bật lên 1 cho biết đã xử
lý xong lệnh và kết quả trả về là có
giá trị
retcode M Tín hiệu này cho biết lệnh đƣa vào
đƣợc thực hiện thành công hay không.
3.7.4. Máy Trạng Thái
Hình 3.9: Máy trạng thái module QueueManagement
Chức năng của module này đƣợc bảo đảm nhờ các máy trạng thái. Các trạng thái
và điều kiện nhảy của máy trạng thái chính nhƣ hình 3.9. Trong đó:
RESET
Trạng thái khởi tạo ban đầu.
42
DEACTIVE
Trạng thái này chờ và gửi lệnh ACTIVE đến module DynamicAllocator. Sau khi có hồi
đáp từ module DynamicAllocator, máy trạng thái này sẽ kết thúc và trở lại máy trạng
thái chính nhƣ hình 3.10.
Hình 3.10: Máy trạng thái con của DEACTIVE
ACTIVE
Các lệnh đƣợc nhận và thực hiện ở trạng thái này đƣợc thể hiện nhƣ trong hình 3.11.
Mỗi lệnh có một máy trạng thái riêng đƣợc trình bày cụ thể trong các mục bên dƣới.
Trong đó:
WAIT_CMD
Trạng thái chờ lệnh để xác định nhảy đến máy trạng thái con nào.
ENQUEUE_CMD
Trạng thái tƣơng ứng khi nhận lệnh ENQUEUE_CMD.
DEQUEUE_CMD
Trạng thái tƣơng ứng khi nhận lệnh DEQUEUE_CMD.
GET_QCONT1_CMD
Trạng thái tƣơng ứng khi nhận lệnh GET_QCONT1_CMD.
GET_QCONT2_CMD
Trạng thái tƣơng ứng khi nhận lệnh GET_QCONT2_CMD.
SET_QCONT1_CMD
Trạng thái tƣơng ứng khi nhận lệnh SET_QCONT1_CMD.
SET_QCONT2_CMD
Trạng thái tƣơng ứng khi nhận lệnh SET_QCONT2_CMD.
GET_NXTCELL_AND_FREE_CMD
Trạng thái tƣơng ứng khi nhận lệnh GET_NXTCELL_AND_FREE_CMD.
43
XFER_CMD_TO_DALLOCATOR
Trạng thái này giúp chuyển lệnh từ ngoài vào module DynamicAllocator.
EMPTY_QUEUE_CMD
Trạng thái tƣơng ứng khi nhận lệnh EMPTY_QUEUE_CMD
Hình 3.11: Máy trạng thái tƣơng ứng lệnh ACTIVE
GET_CCONT_BY_QID_CMD
Trạng thái tƣơng ứng khi nhận lệnh GET_CCONT_BY_QID_CMD.
MERGE_QUEUE_CMD
Tải bản FULL (101 trang): https://bit.ly/3FSzkuX
Dự phòng: fb.com/TaiHo123doc.net
44
Trạng thái tƣơng ứng khi nhận lệnh MERGE_QUEUE_CMD.
SET_HEAD_TAIL_CMD
Trạng thái tƣơng ứng khi nhận lệnh SET_HEAD_TAIL_CMD.
GET_ENPTY_HEAD_TAIL_CMD
Trạng thái tƣơng ứng khi nhận lệnh GET_EMPTY_CMD hoặc
GET_HEAD_TAIL_CMD.
INITIALIZE_QUEUE_CMD
Trạng thái tƣơng ứng khi nhận lệnh INITIALIZE_QUEUE_CMD.
3.8. Thiết kế khối cấp phát bộ nhớ động(Dynamic Allocator)
3.8.1. Chức năng
Khối DynamicAllocator có chức năng quản lý và cấp phát ô nhớ thuộc cả 2 bộ
nhớ tốc độ cao và tốc độ thấp. Số luợng và độ rộng của các ô nhớ nguời sử dụng có thể
cấu hình đƣợc. Khối DynamicAllocator dùng phƣơng pháp danh sách liên kết để quản
lý các ô nhớ và hỗ trợ 12 lệnh để cho ngƣời sử dụng có thể truy cập, xử lý với các ô
nhớ đã đƣợc cấp phát.
Hình 3.12: Tổ chức dữ liệu một ô nhớ của khối DynamicAllocator
Trong đó:
PrePtrVB: Bit chỉ ra trƣờng PrePtr có hợp lệ hay không
PrePtr: Trƣờng lƣu chỉ số ô nhớ liền truớc của ô nhớ hiện tại
NextPtrVB: Bit chỉ ra trƣờng NextPtr có hợp lệ hay không
NextPtr: Trƣờng lƣu chỉ số ô nhớ liền sau của ô nhớ hiện tại
Context: Truờng lƣu nội dung của ô nhớ
Bảng 3.8: Bảng mô tả lệnh khối DynamicAllocator
Tên lệnh Mã lệnh Mô tả
active 0 Lệnh khởi động khối
DynamicAllocator
deactive 1 Lệnh ngắt hoạt động khối
DynamicAllocator
newcell 2 Lệnh yêu cầu cấp phát một ô nhớ mới
Tải bản FULL (101 trang): https://bit.ly/3FSzkuX
Dự phòng: fb.com/TaiHo123doc.net
45
freecell 3 Lệnh giải phóng một ô nhớ
setnextptr 4 Lệnh cập nhật chỉ số ô nhớ liền sau
getnextptrnofree 5 Lệnh đọc ra chỉ số ô nhớ liền sau và
không giải phóng ô nhớ
getnextptrfreecell 6 Lệnh đọc ra chỉ số ô nhớ liền sau và
giải phóng ô nhớ
setpreptr 7 Lệnh cập nhật chỉ số ô nhớ liền truớc
getpreptr 8 Lệnh đọc ra chỉ số ô nhớ liền truớc
setcontext 9 Lệnh cập nhật nội dung ô nhớ
getcontext 10 Lệnh đọc ra nội dung ô nhớ
setpairptr 11 Lệnh cập nhật đồng thời chỉ số ô nhớ
liền truớc và liền sau
3.8.2. Mô tả tín hiệu
Định nghĩa các thông số cấu hình của khối DynamicAllocator
CONTEXT_SIZE Độ rộng trƣờng nội dung của ô nhớ
HSPEED_SIZE_WIDTH Số lƣợng ô nhớ khối DynamicAllocator quản lý ở bộ
nhớ tốc độ cao: 2𝐻𝑆𝑃𝐸𝐸𝐷_𝑆𝐼𝑍𝐸_𝑊𝐼𝐷𝑇𝐻
Bảng 3.9: Mô tả tín hiệu khối DynamicAllocator
Tín hiệu Nguồn Mô tả
clk Clock Tín hiệu Clock
rstn Reset Tín hiệu Reset
Nhóm tín hiệu BaseAddr
baseaddr[31:0] S Địa chỉ cơ sở của vùng nhớ mà khối
DynamicAllocator quản lý
Nhóm tín hiệu CMD
cmd[3:0] S Giá trị lệnh
incellid [CELL_ID_WIDTH-
1:0]
S Chỉ số ô nhớ đƣợc truy xuất
outcellid
[CELL_ID_WIDTH:0]
M Chỉ số ô nhớ trả về
incontext [CONTEXT_SIZE*8- S Nội dung ghi vào ô nhớ
7740368

Mais conteúdo relacionado

Semelhante a THIẾT KẾ VÀ THỰC THI LÕI IP PHÂN LUỒNG DỮ LIỆU TRÊN FPGA.pdf

Phát triển thuật toán tự triển khai cho hệ thống đa robot giám sát môi trường...
Phát triển thuật toán tự triển khai cho hệ thống đa robot giám sát môi trường...Phát triển thuật toán tự triển khai cho hệ thống đa robot giám sát môi trường...
Phát triển thuật toán tự triển khai cho hệ thống đa robot giám sát môi trường...Man_Ebook
 
Ai cuong-ve-cac-he-thong-thong-tin-quan-ly
Ai cuong-ve-cac-he-thong-thong-tin-quan-lyAi cuong-ve-cac-he-thong-thong-tin-quan-ly
Ai cuong-ve-cac-he-thong-thong-tin-quan-lyGiang Nguyễn
 
Luận án: Một số phương pháp ngẫu nhiên cho bài toán cực đại hóa xác suất hậu ...
Luận án: Một số phương pháp ngẫu nhiên cho bài toán cực đại hóa xác suất hậu ...Luận án: Một số phương pháp ngẫu nhiên cho bài toán cực đại hóa xác suất hậu ...
Luận án: Một số phương pháp ngẫu nhiên cho bài toán cực đại hóa xác suất hậu ...Dịch vụ viết thuê Khóa Luận - ZALO 0932091562
 
Tailieu.vncty.com van de-chat_luong_dich_vu_trong_mang_the_he_moi_va_trien_...
Tailieu.vncty.com   van de-chat_luong_dich_vu_trong_mang_the_he_moi_va_trien_...Tailieu.vncty.com   van de-chat_luong_dich_vu_trong_mang_the_he_moi_va_trien_...
Tailieu.vncty.com van de-chat_luong_dich_vu_trong_mang_the_he_moi_va_trien_...Trần Đức Anh
 
04. de cuong bai giang cong nghe web
04. de cuong bai giang cong nghe web04. de cuong bai giang cong nghe web
04. de cuong bai giang cong nghe webĐinh Luận
 
BÁO CÁO CÔNG NGHỆ PHẦN MỀM 8 điểm-QUẢN LÝ CỬA HÀNG BÁN MÁY ẢNH
BÁO CÁO CÔNG NGHỆ PHẦN MỀM 8 điểm-QUẢN LÝ CỬA HÀNG BÁN MÁY ẢNHBÁO CÁO CÔNG NGHỆ PHẦN MỀM 8 điểm-QUẢN LÝ CỬA HÀNG BÁN MÁY ẢNH
BÁO CÁO CÔNG NGHỆ PHẦN MỀM 8 điểm-QUẢN LÝ CỬA HÀNG BÁN MÁY ẢNHHoà Đoàn
 
Hướng dẫn thiết kế khuôn Solidworks
Hướng dẫn thiết kế khuôn Solidworks Hướng dẫn thiết kế khuôn Solidworks
Hướng dẫn thiết kế khuôn Solidworks Cadcamcnc Học
 
Hướng dẫn tự học Linux
Hướng dẫn tự học LinuxHướng dẫn tự học Linux
Hướng dẫn tự học LinuxNguyễn Duy Nhân
 
ARDUINO_CHO_NGI_MI_BT_DU_Quyn_can (1).pdf
ARDUINO_CHO_NGI_MI_BT_DU_Quyn_can (1).pdfARDUINO_CHO_NGI_MI_BT_DU_Quyn_can (1).pdf
ARDUINO_CHO_NGI_MI_BT_DU_Quyn_can (1).pdfkhanhnguyen870330
 
Iot starter
Iot starterIot starter
Iot starterGreenCap
 
Tự học sử dụng Linux
Tự học sử dụng LinuxTự học sử dụng Linux
Tự học sử dụng LinuxVu Hung Nguyen
 
Arduino cho người mới bắt đầu
Arduino cho người mới bắt đầuArduino cho người mới bắt đầu
Arduino cho người mới bắt đầuHuynh MVT
 

Semelhante a THIẾT KẾ VÀ THỰC THI LÕI IP PHÂN LUỒNG DỮ LIỆU TRÊN FPGA.pdf (20)

Gt thiet ke lan wan
Gt thiet ke lan wanGt thiet ke lan wan
Gt thiet ke lan wan
 
Phát triển thuật toán tự triển khai cho hệ thống đa robot giám sát môi trường...
Phát triển thuật toán tự triển khai cho hệ thống đa robot giám sát môi trường...Phát triển thuật toán tự triển khai cho hệ thống đa robot giám sát môi trường...
Phát triển thuật toán tự triển khai cho hệ thống đa robot giám sát môi trường...
 
Ai cuong-ve-cac-he-thong-thong-tin-quan-ly
Ai cuong-ve-cac-he-thong-thong-tin-quan-lyAi cuong-ve-cac-he-thong-thong-tin-quan-ly
Ai cuong-ve-cac-he-thong-thong-tin-quan-ly
 
Luận án: Một số phương pháp ngẫu nhiên cho bài toán cực đại hóa xác suất hậu ...
Luận án: Một số phương pháp ngẫu nhiên cho bài toán cực đại hóa xác suất hậu ...Luận án: Một số phương pháp ngẫu nhiên cho bài toán cực đại hóa xác suất hậu ...
Luận án: Một số phương pháp ngẫu nhiên cho bài toán cực đại hóa xác suất hậu ...
 
Tailieu.vncty.com van de-chat_luong_dich_vu_trong_mang_the_he_moi_va_trien_...
Tailieu.vncty.com   van de-chat_luong_dich_vu_trong_mang_the_he_moi_va_trien_...Tailieu.vncty.com   van de-chat_luong_dich_vu_trong_mang_the_he_moi_va_trien_...
Tailieu.vncty.com van de-chat_luong_dich_vu_trong_mang_the_he_moi_va_trien_...
 
04. de cuong bai giang cong nghe web
04. de cuong bai giang cong nghe web04. de cuong bai giang cong nghe web
04. de cuong bai giang cong nghe web
 
Vô tuyến nhận thức hợp tác cảm nhận phổ trong môi trường pha đinh
Vô tuyến nhận thức hợp tác cảm nhận phổ trong môi trường pha đinhVô tuyến nhận thức hợp tác cảm nhận phổ trong môi trường pha đinh
Vô tuyến nhận thức hợp tác cảm nhận phổ trong môi trường pha đinh
 
BÁO CÁO CÔNG NGHỆ PHẦN MỀM 8 điểm-QUẢN LÝ CỬA HÀNG BÁN MÁY ẢNH
BÁO CÁO CÔNG NGHỆ PHẦN MỀM 8 điểm-QUẢN LÝ CỬA HÀNG BÁN MÁY ẢNHBÁO CÁO CÔNG NGHỆ PHẦN MỀM 8 điểm-QUẢN LÝ CỬA HÀNG BÁN MÁY ẢNH
BÁO CÁO CÔNG NGHỆ PHẦN MỀM 8 điểm-QUẢN LÝ CỬA HÀNG BÁN MÁY ẢNH
 
Hướng dẫn thiết kế khuôn Solidworks
Hướng dẫn thiết kế khuôn Solidworks Hướng dẫn thiết kế khuôn Solidworks
Hướng dẫn thiết kế khuôn Solidworks
 
Tu hoc su dung linux 2
Tu hoc su dung linux 2Tu hoc su dung linux 2
Tu hoc su dung linux 2
 
Tu hoc su_dung_linux
Tu hoc su_dung_linuxTu hoc su_dung_linux
Tu hoc su_dung_linux
 
Hướng dẫn tự học Linux
Hướng dẫn tự học LinuxHướng dẫn tự học Linux
Hướng dẫn tự học Linux
 
Tu hoc su dung linux
Tu hoc su dung linuxTu hoc su dung linux
Tu hoc su dung linux
 
Tailieu.vncty.com webmail
Tailieu.vncty.com   webmailTailieu.vncty.com   webmail
Tailieu.vncty.com webmail
 
Đề tài: mô hình đo thử hệ thống băng rộng trên optisystem
Đề tài: mô hình đo thử hệ thống băng rộng trên optisystem Đề tài: mô hình đo thử hệ thống băng rộng trên optisystem
Đề tài: mô hình đo thử hệ thống băng rộng trên optisystem
 
ARDUINO_CHO_NGI_MI_BT_DU_Quyn_can (1).pdf
ARDUINO_CHO_NGI_MI_BT_DU_Quyn_can (1).pdfARDUINO_CHO_NGI_MI_BT_DU_Quyn_can (1).pdf
ARDUINO_CHO_NGI_MI_BT_DU_Quyn_can (1).pdf
 
Iot starter
Iot starterIot starter
Iot starter
 
La0008
La0008La0008
La0008
 
Tự học sử dụng Linux
Tự học sử dụng LinuxTự học sử dụng Linux
Tự học sử dụng Linux
 
Arduino cho người mới bắt đầu
Arduino cho người mới bắt đầuArduino cho người mới bắt đầu
Arduino cho người mới bắt đầu
 

Mais de HanaTiti

TRUYỀN THÔNG TRONG CÁC SỰ KIỆN NGHỆ THUẬT Ở VIỆT NAM NĂM 2012.pdf
TRUYỀN THÔNG TRONG CÁC SỰ KIỆN NGHỆ THUẬT Ở VIỆT NAM NĂM 2012.pdfTRUYỀN THÔNG TRONG CÁC SỰ KIỆN NGHỆ THUẬT Ở VIỆT NAM NĂM 2012.pdf
TRUYỀN THÔNG TRONG CÁC SỰ KIỆN NGHỆ THUẬT Ở VIỆT NAM NĂM 2012.pdfHanaTiti
 
TRỊ LIỆU TÂM LÝ CHO MỘT TRƢỜNG HỢP TRẺ VỊ THÀNH NIÊN CÓ TRIỆU CHỨNG TRẦM CẢM.pdf
TRỊ LIỆU TÂM LÝ CHO MỘT TRƢỜNG HỢP TRẺ VỊ THÀNH NIÊN CÓ TRIỆU CHỨNG TRẦM CẢM.pdfTRỊ LIỆU TÂM LÝ CHO MỘT TRƢỜNG HỢP TRẺ VỊ THÀNH NIÊN CÓ TRIỆU CHỨNG TRẦM CẢM.pdf
TRỊ LIỆU TÂM LÝ CHO MỘT TRƢỜNG HỢP TRẺ VỊ THÀNH NIÊN CÓ TRIỆU CHỨNG TRẦM CẢM.pdfHanaTiti
 
IMPACTS OF FINANCIAL DEPTH AND DOMESTIC CREDIT ON ECONOMIC GROWTH - THE CASES...
IMPACTS OF FINANCIAL DEPTH AND DOMESTIC CREDIT ON ECONOMIC GROWTH - THE CASES...IMPACTS OF FINANCIAL DEPTH AND DOMESTIC CREDIT ON ECONOMIC GROWTH - THE CASES...
IMPACTS OF FINANCIAL DEPTH AND DOMESTIC CREDIT ON ECONOMIC GROWTH - THE CASES...HanaTiti
 
THE LINKAGE BETWEEN CORRUPTION AND CARBON DIOXIDE EMISSION - EVIDENCE FROM AS...
THE LINKAGE BETWEEN CORRUPTION AND CARBON DIOXIDE EMISSION - EVIDENCE FROM AS...THE LINKAGE BETWEEN CORRUPTION AND CARBON DIOXIDE EMISSION - EVIDENCE FROM AS...
THE LINKAGE BETWEEN CORRUPTION AND CARBON DIOXIDE EMISSION - EVIDENCE FROM AS...HanaTiti
 
Phát triển dịch vụ Ngân hàng bán lẻ tại Ngân hàng thương mại cổ phần xuất nhậ...
Phát triển dịch vụ Ngân hàng bán lẻ tại Ngân hàng thương mại cổ phần xuất nhậ...Phát triển dịch vụ Ngân hàng bán lẻ tại Ngân hàng thương mại cổ phần xuất nhậ...
Phát triển dịch vụ Ngân hàng bán lẻ tại Ngân hàng thương mại cổ phần xuất nhậ...HanaTiti
 
Nhân vật phụ nữ trong truyện ngắn Cao Duy Sơn.pdf
Nhân vật phụ nữ trong truyện ngắn Cao Duy Sơn.pdfNhân vật phụ nữ trong truyện ngắn Cao Duy Sơn.pdf
Nhân vật phụ nữ trong truyện ngắn Cao Duy Sơn.pdfHanaTiti
 
Pháp luật về giao dịch bảo hiểm nhân thọ ở Việt Nam.pdf
Pháp luật về giao dịch bảo hiểm nhân thọ ở Việt Nam.pdfPháp luật về giao dịch bảo hiểm nhân thọ ở Việt Nam.pdf
Pháp luật về giao dịch bảo hiểm nhân thọ ở Việt Nam.pdfHanaTiti
 
Tổ chức dạy học lịch sử Việt Nam lớp 10 theo hướng phát triển năng lực vận dụ...
Tổ chức dạy học lịch sử Việt Nam lớp 10 theo hướng phát triển năng lực vận dụ...Tổ chức dạy học lịch sử Việt Nam lớp 10 theo hướng phát triển năng lực vận dụ...
Tổ chức dạy học lịch sử Việt Nam lớp 10 theo hướng phát triển năng lực vận dụ...HanaTiti
 
The impact of education on unemployment incidence - micro evidence from Vietn...
The impact of education on unemployment incidence - micro evidence from Vietn...The impact of education on unemployment incidence - micro evidence from Vietn...
The impact of education on unemployment incidence - micro evidence from Vietn...HanaTiti
 
Deteminants of brand loyalty in the Vietnamese neer industry.pdf
Deteminants of brand loyalty in the Vietnamese neer industry.pdfDeteminants of brand loyalty in the Vietnamese neer industry.pdf
Deteminants of brand loyalty in the Vietnamese neer industry.pdfHanaTiti
 
Phát triển hoạt động môi giới chứng khoán của CTCP Alpha.pdf
Phát triển hoạt động môi giới chứng khoán của CTCP Alpha.pdfPhát triển hoạt động môi giới chứng khoán của CTCP Alpha.pdf
Phát triển hoạt động môi giới chứng khoán của CTCP Alpha.pdfHanaTiti
 
The current situation of English language teaching in the light of CLT to the...
The current situation of English language teaching in the light of CLT to the...The current situation of English language teaching in the light of CLT to the...
The current situation of English language teaching in the light of CLT to the...HanaTiti
 
Quản lý chi ngân sách nhà nước tại Kho bạc nhà nước Ba Vì.pdf
Quản lý chi ngân sách nhà nước tại Kho bạc nhà nước Ba Vì.pdfQuản lý chi ngân sách nhà nước tại Kho bạc nhà nước Ba Vì.pdf
Quản lý chi ngân sách nhà nước tại Kho bạc nhà nước Ba Vì.pdfHanaTiti
 
Sự tiếp nhận đối với Hàng không giá rẻ của khách hàng Việt Nam.pdf
Sự tiếp nhận đối với Hàng không giá rẻ của khách hàng Việt Nam.pdfSự tiếp nhận đối với Hàng không giá rẻ của khách hàng Việt Nam.pdf
Sự tiếp nhận đối với Hàng không giá rẻ của khách hàng Việt Nam.pdfHanaTiti
 
An Investigation into the Effect of Matching Exercises on the 10th form Stude...
An Investigation into the Effect of Matching Exercises on the 10th form Stude...An Investigation into the Effect of Matching Exercises on the 10th form Stude...
An Investigation into the Effect of Matching Exercises on the 10th form Stude...HanaTiti
 
Đánh giá chất lượng truyền tin multicast trên tầng ứng dụng.pdf
Đánh giá chất lượng truyền tin multicast trên tầng ứng dụng.pdfĐánh giá chất lượng truyền tin multicast trên tầng ứng dụng.pdf
Đánh giá chất lượng truyền tin multicast trên tầng ứng dụng.pdfHanaTiti
 
Quản lý các trường THCS trên địa bàn huyện Thanh Sơn, tỉnh Phú Thọ theo hướng...
Quản lý các trường THCS trên địa bàn huyện Thanh Sơn, tỉnh Phú Thọ theo hướng...Quản lý các trường THCS trên địa bàn huyện Thanh Sơn, tỉnh Phú Thọ theo hướng...
Quản lý các trường THCS trên địa bàn huyện Thanh Sơn, tỉnh Phú Thọ theo hướng...HanaTiti
 
Nghiên cứu và đề xuất mô hình nuôi tôm bền vững vùng ven biển huyện Thái Thụy...
Nghiên cứu và đề xuất mô hình nuôi tôm bền vững vùng ven biển huyện Thái Thụy...Nghiên cứu và đề xuất mô hình nuôi tôm bền vững vùng ven biển huyện Thái Thụy...
Nghiên cứu và đề xuất mô hình nuôi tôm bền vững vùng ven biển huyện Thái Thụy...HanaTiti
 
PHÁT TRIỂN DOANH NGHIỆP THƯƠNG MẠI NHỎ VÀ VỪA TRÊN ĐỊA BÀN TỈNH HÀ TĨNH.pdf
PHÁT TRIỂN DOANH NGHIỆP THƯƠNG MẠI NHỎ VÀ VỪA TRÊN ĐỊA BÀN TỈNH HÀ TĨNH.pdfPHÁT TRIỂN DOANH NGHIỆP THƯƠNG MẠI NHỎ VÀ VỪA TRÊN ĐỊA BÀN TỈNH HÀ TĨNH.pdf
PHÁT TRIỂN DOANH NGHIỆP THƯƠNG MẠI NHỎ VÀ VỪA TRÊN ĐỊA BÀN TỈNH HÀ TĨNH.pdfHanaTiti
 
ENERGY CONSUMPTION AND REAL GDP IN ASEAN.pdf
ENERGY CONSUMPTION AND REAL GDP IN ASEAN.pdfENERGY CONSUMPTION AND REAL GDP IN ASEAN.pdf
ENERGY CONSUMPTION AND REAL GDP IN ASEAN.pdfHanaTiti
 

Mais de HanaTiti (20)

TRUYỀN THÔNG TRONG CÁC SỰ KIỆN NGHỆ THUẬT Ở VIỆT NAM NĂM 2012.pdf
TRUYỀN THÔNG TRONG CÁC SỰ KIỆN NGHỆ THUẬT Ở VIỆT NAM NĂM 2012.pdfTRUYỀN THÔNG TRONG CÁC SỰ KIỆN NGHỆ THUẬT Ở VIỆT NAM NĂM 2012.pdf
TRUYỀN THÔNG TRONG CÁC SỰ KIỆN NGHỆ THUẬT Ở VIỆT NAM NĂM 2012.pdf
 
TRỊ LIỆU TÂM LÝ CHO MỘT TRƢỜNG HỢP TRẺ VỊ THÀNH NIÊN CÓ TRIỆU CHỨNG TRẦM CẢM.pdf
TRỊ LIỆU TÂM LÝ CHO MỘT TRƢỜNG HỢP TRẺ VỊ THÀNH NIÊN CÓ TRIỆU CHỨNG TRẦM CẢM.pdfTRỊ LIỆU TÂM LÝ CHO MỘT TRƢỜNG HỢP TRẺ VỊ THÀNH NIÊN CÓ TRIỆU CHỨNG TRẦM CẢM.pdf
TRỊ LIỆU TÂM LÝ CHO MỘT TRƢỜNG HỢP TRẺ VỊ THÀNH NIÊN CÓ TRIỆU CHỨNG TRẦM CẢM.pdf
 
IMPACTS OF FINANCIAL DEPTH AND DOMESTIC CREDIT ON ECONOMIC GROWTH - THE CASES...
IMPACTS OF FINANCIAL DEPTH AND DOMESTIC CREDIT ON ECONOMIC GROWTH - THE CASES...IMPACTS OF FINANCIAL DEPTH AND DOMESTIC CREDIT ON ECONOMIC GROWTH - THE CASES...
IMPACTS OF FINANCIAL DEPTH AND DOMESTIC CREDIT ON ECONOMIC GROWTH - THE CASES...
 
THE LINKAGE BETWEEN CORRUPTION AND CARBON DIOXIDE EMISSION - EVIDENCE FROM AS...
THE LINKAGE BETWEEN CORRUPTION AND CARBON DIOXIDE EMISSION - EVIDENCE FROM AS...THE LINKAGE BETWEEN CORRUPTION AND CARBON DIOXIDE EMISSION - EVIDENCE FROM AS...
THE LINKAGE BETWEEN CORRUPTION AND CARBON DIOXIDE EMISSION - EVIDENCE FROM AS...
 
Phát triển dịch vụ Ngân hàng bán lẻ tại Ngân hàng thương mại cổ phần xuất nhậ...
Phát triển dịch vụ Ngân hàng bán lẻ tại Ngân hàng thương mại cổ phần xuất nhậ...Phát triển dịch vụ Ngân hàng bán lẻ tại Ngân hàng thương mại cổ phần xuất nhậ...
Phát triển dịch vụ Ngân hàng bán lẻ tại Ngân hàng thương mại cổ phần xuất nhậ...
 
Nhân vật phụ nữ trong truyện ngắn Cao Duy Sơn.pdf
Nhân vật phụ nữ trong truyện ngắn Cao Duy Sơn.pdfNhân vật phụ nữ trong truyện ngắn Cao Duy Sơn.pdf
Nhân vật phụ nữ trong truyện ngắn Cao Duy Sơn.pdf
 
Pháp luật về giao dịch bảo hiểm nhân thọ ở Việt Nam.pdf
Pháp luật về giao dịch bảo hiểm nhân thọ ở Việt Nam.pdfPháp luật về giao dịch bảo hiểm nhân thọ ở Việt Nam.pdf
Pháp luật về giao dịch bảo hiểm nhân thọ ở Việt Nam.pdf
 
Tổ chức dạy học lịch sử Việt Nam lớp 10 theo hướng phát triển năng lực vận dụ...
Tổ chức dạy học lịch sử Việt Nam lớp 10 theo hướng phát triển năng lực vận dụ...Tổ chức dạy học lịch sử Việt Nam lớp 10 theo hướng phát triển năng lực vận dụ...
Tổ chức dạy học lịch sử Việt Nam lớp 10 theo hướng phát triển năng lực vận dụ...
 
The impact of education on unemployment incidence - micro evidence from Vietn...
The impact of education on unemployment incidence - micro evidence from Vietn...The impact of education on unemployment incidence - micro evidence from Vietn...
The impact of education on unemployment incidence - micro evidence from Vietn...
 
Deteminants of brand loyalty in the Vietnamese neer industry.pdf
Deteminants of brand loyalty in the Vietnamese neer industry.pdfDeteminants of brand loyalty in the Vietnamese neer industry.pdf
Deteminants of brand loyalty in the Vietnamese neer industry.pdf
 
Phát triển hoạt động môi giới chứng khoán của CTCP Alpha.pdf
Phát triển hoạt động môi giới chứng khoán của CTCP Alpha.pdfPhát triển hoạt động môi giới chứng khoán của CTCP Alpha.pdf
Phát triển hoạt động môi giới chứng khoán của CTCP Alpha.pdf
 
The current situation of English language teaching in the light of CLT to the...
The current situation of English language teaching in the light of CLT to the...The current situation of English language teaching in the light of CLT to the...
The current situation of English language teaching in the light of CLT to the...
 
Quản lý chi ngân sách nhà nước tại Kho bạc nhà nước Ba Vì.pdf
Quản lý chi ngân sách nhà nước tại Kho bạc nhà nước Ba Vì.pdfQuản lý chi ngân sách nhà nước tại Kho bạc nhà nước Ba Vì.pdf
Quản lý chi ngân sách nhà nước tại Kho bạc nhà nước Ba Vì.pdf
 
Sự tiếp nhận đối với Hàng không giá rẻ của khách hàng Việt Nam.pdf
Sự tiếp nhận đối với Hàng không giá rẻ của khách hàng Việt Nam.pdfSự tiếp nhận đối với Hàng không giá rẻ của khách hàng Việt Nam.pdf
Sự tiếp nhận đối với Hàng không giá rẻ của khách hàng Việt Nam.pdf
 
An Investigation into the Effect of Matching Exercises on the 10th form Stude...
An Investigation into the Effect of Matching Exercises on the 10th form Stude...An Investigation into the Effect of Matching Exercises on the 10th form Stude...
An Investigation into the Effect of Matching Exercises on the 10th form Stude...
 
Đánh giá chất lượng truyền tin multicast trên tầng ứng dụng.pdf
Đánh giá chất lượng truyền tin multicast trên tầng ứng dụng.pdfĐánh giá chất lượng truyền tin multicast trên tầng ứng dụng.pdf
Đánh giá chất lượng truyền tin multicast trên tầng ứng dụng.pdf
 
Quản lý các trường THCS trên địa bàn huyện Thanh Sơn, tỉnh Phú Thọ theo hướng...
Quản lý các trường THCS trên địa bàn huyện Thanh Sơn, tỉnh Phú Thọ theo hướng...Quản lý các trường THCS trên địa bàn huyện Thanh Sơn, tỉnh Phú Thọ theo hướng...
Quản lý các trường THCS trên địa bàn huyện Thanh Sơn, tỉnh Phú Thọ theo hướng...
 
Nghiên cứu và đề xuất mô hình nuôi tôm bền vững vùng ven biển huyện Thái Thụy...
Nghiên cứu và đề xuất mô hình nuôi tôm bền vững vùng ven biển huyện Thái Thụy...Nghiên cứu và đề xuất mô hình nuôi tôm bền vững vùng ven biển huyện Thái Thụy...
Nghiên cứu và đề xuất mô hình nuôi tôm bền vững vùng ven biển huyện Thái Thụy...
 
PHÁT TRIỂN DOANH NGHIỆP THƯƠNG MẠI NHỎ VÀ VỪA TRÊN ĐỊA BÀN TỈNH HÀ TĨNH.pdf
PHÁT TRIỂN DOANH NGHIỆP THƯƠNG MẠI NHỎ VÀ VỪA TRÊN ĐỊA BÀN TỈNH HÀ TĨNH.pdfPHÁT TRIỂN DOANH NGHIỆP THƯƠNG MẠI NHỎ VÀ VỪA TRÊN ĐỊA BÀN TỈNH HÀ TĨNH.pdf
PHÁT TRIỂN DOANH NGHIỆP THƯƠNG MẠI NHỎ VÀ VỪA TRÊN ĐỊA BÀN TỈNH HÀ TĨNH.pdf
 
ENERGY CONSUMPTION AND REAL GDP IN ASEAN.pdf
ENERGY CONSUMPTION AND REAL GDP IN ASEAN.pdfENERGY CONSUMPTION AND REAL GDP IN ASEAN.pdf
ENERGY CONSUMPTION AND REAL GDP IN ASEAN.pdf
 

Último

GNHH và KBHQ - giao nhận hàng hoá và khai báo hải quan
GNHH và KBHQ - giao nhận hàng hoá và khai báo hải quanGNHH và KBHQ - giao nhận hàng hoá và khai báo hải quan
GNHH và KBHQ - giao nhận hàng hoá và khai báo hải quanmyvh40253
 
GIÁO TRÌNH KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
GIÁO TRÌNH  KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘIGIÁO TRÌNH  KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
GIÁO TRÌNH KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘIĐiện Lạnh Bách Khoa Hà Nội
 
BỘ LUYỆN NGHE VÀO 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ LỜI - CÓ FILE NGHE.pdf
BỘ LUYỆN NGHE VÀO 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ LỜI - CÓ FILE NGHE.pdfBỘ LUYỆN NGHE VÀO 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ LỜI - CÓ FILE NGHE.pdf
BỘ LUYỆN NGHE VÀO 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ LỜI - CÓ FILE NGHE.pdfNguyen Thanh Tu Collection
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...Nguyen Thanh Tu Collection
 
Đề cương môn giải phẫu......................
Đề cương môn giải phẫu......................Đề cương môn giải phẫu......................
Đề cương môn giải phẫu......................TrnHoa46
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...Nguyen Thanh Tu Collection
 
ĐỀ CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT CÁC TỈNH THÀNH NĂM HỌC 2020 –...
ĐỀ CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT CÁC TỈNH THÀNH NĂM HỌC 2020 –...ĐỀ CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT CÁC TỈNH THÀNH NĂM HỌC 2020 –...
ĐỀ CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT CÁC TỈNH THÀNH NĂM HỌC 2020 –...Nguyen Thanh Tu Collection
 
1.DOANNGOCPHUONGTHAO-APDUNGSTEMTHIETKEBTHHHGIUPHSHOCHIEUQUA (1).docx
1.DOANNGOCPHUONGTHAO-APDUNGSTEMTHIETKEBTHHHGIUPHSHOCHIEUQUA (1).docx1.DOANNGOCPHUONGTHAO-APDUNGSTEMTHIETKEBTHHHGIUPHSHOCHIEUQUA (1).docx
1.DOANNGOCPHUONGTHAO-APDUNGSTEMTHIETKEBTHHHGIUPHSHOCHIEUQUA (1).docxTHAO316680
 
Nhiễm khuẩn tiêu hóa-Tiêu chảy do vi khuẩn.pptx
Nhiễm khuẩn tiêu hóa-Tiêu chảy do vi khuẩn.pptxNhiễm khuẩn tiêu hóa-Tiêu chảy do vi khuẩn.pptx
Nhiễm khuẩn tiêu hóa-Tiêu chảy do vi khuẩn.pptxhoangvubaongoc112011
 
CD21 Exercise 2.1 KEY.docx tieng anh cho
CD21 Exercise 2.1 KEY.docx tieng anh choCD21 Exercise 2.1 KEY.docx tieng anh cho
CD21 Exercise 2.1 KEY.docx tieng anh chonamc250
 
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdf
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdfChuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdf
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdfhoangtuansinh1
 
Kiểm tra cuối học kì 1 sinh học 12 đề tham khảo
Kiểm tra cuối học kì 1 sinh học 12 đề tham khảoKiểm tra cuối học kì 1 sinh học 12 đề tham khảo
Kiểm tra cuối học kì 1 sinh học 12 đề tham khảohoanhv296
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...Nguyen Thanh Tu Collection
 
Các điều kiện bảo hiểm trong bảo hiểm hàng hoá
Các điều kiện bảo hiểm trong bảo hiểm hàng hoáCác điều kiện bảo hiểm trong bảo hiểm hàng hoá
Các điều kiện bảo hiểm trong bảo hiểm hàng hoámyvh40253
 
TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...
TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...
TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...Nguyen Thanh Tu Collection
 
3-BẢNG MÃ LỖI CỦA CÁC HÃNG ĐIỀU HÒA .pdf - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
3-BẢNG MÃ LỖI CỦA CÁC HÃNG ĐIỀU HÒA .pdf - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI3-BẢNG MÃ LỖI CỦA CÁC HÃNG ĐIỀU HÒA .pdf - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
3-BẢNG MÃ LỖI CỦA CÁC HÃNG ĐIỀU HÒA .pdf - ĐIỆN LẠNH BÁCH KHOA HÀ NỘIĐiện Lạnh Bách Khoa Hà Nội
 
TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI LÝ LUẬN VĂN HỌC NĂM HỌC 2023-2024 - MÔN NGỮ ...
TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI LÝ LUẬN VĂN HỌC NĂM HỌC 2023-2024 - MÔN NGỮ ...TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI LÝ LUẬN VĂN HỌC NĂM HỌC 2023-2024 - MÔN NGỮ ...
TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI LÝ LUẬN VĂN HỌC NĂM HỌC 2023-2024 - MÔN NGỮ ...Nguyen Thanh Tu Collection
 
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...Nguyen Thanh Tu Collection
 
sách sinh học đại cương - Textbook.pdf
sách sinh học đại cương   -   Textbook.pdfsách sinh học đại cương   -   Textbook.pdf
sách sinh học đại cương - Textbook.pdfTrnHoa46
 

Último (20)

GNHH và KBHQ - giao nhận hàng hoá và khai báo hải quan
GNHH và KBHQ - giao nhận hàng hoá và khai báo hải quanGNHH và KBHQ - giao nhận hàng hoá và khai báo hải quan
GNHH và KBHQ - giao nhận hàng hoá và khai báo hải quan
 
GIÁO TRÌNH KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
GIÁO TRÌNH  KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘIGIÁO TRÌNH  KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
GIÁO TRÌNH KHỐI NGUỒN CÁC LOẠI - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
 
BỘ LUYỆN NGHE VÀO 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ LỜI - CÓ FILE NGHE.pdf
BỘ LUYỆN NGHE VÀO 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ LỜI - CÓ FILE NGHE.pdfBỘ LUYỆN NGHE VÀO 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ LỜI - CÓ FILE NGHE.pdf
BỘ LUYỆN NGHE VÀO 10 TIẾNG ANH DẠNG TRẮC NGHIỆM 4 CÂU TRẢ LỜI - CÓ FILE NGHE.pdf
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
Đề cương môn giải phẫu......................
Đề cương môn giải phẫu......................Đề cương môn giải phẫu......................
Đề cương môn giải phẫu......................
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
ĐỀ CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT CÁC TỈNH THÀNH NĂM HỌC 2020 –...
ĐỀ CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT CÁC TỈNH THÀNH NĂM HỌC 2020 –...ĐỀ CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT CÁC TỈNH THÀNH NĂM HỌC 2020 –...
ĐỀ CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT CÁC TỈNH THÀNH NĂM HỌC 2020 –...
 
1 - MÃ LỖI SỬA CHỮA BOARD MẠCH BẾP TỪ.pdf
1 - MÃ LỖI SỬA CHỮA BOARD MẠCH BẾP TỪ.pdf1 - MÃ LỖI SỬA CHỮA BOARD MẠCH BẾP TỪ.pdf
1 - MÃ LỖI SỬA CHỮA BOARD MẠCH BẾP TỪ.pdf
 
1.DOANNGOCPHUONGTHAO-APDUNGSTEMTHIETKEBTHHHGIUPHSHOCHIEUQUA (1).docx
1.DOANNGOCPHUONGTHAO-APDUNGSTEMTHIETKEBTHHHGIUPHSHOCHIEUQUA (1).docx1.DOANNGOCPHUONGTHAO-APDUNGSTEMTHIETKEBTHHHGIUPHSHOCHIEUQUA (1).docx
1.DOANNGOCPHUONGTHAO-APDUNGSTEMTHIETKEBTHHHGIUPHSHOCHIEUQUA (1).docx
 
Nhiễm khuẩn tiêu hóa-Tiêu chảy do vi khuẩn.pptx
Nhiễm khuẩn tiêu hóa-Tiêu chảy do vi khuẩn.pptxNhiễm khuẩn tiêu hóa-Tiêu chảy do vi khuẩn.pptx
Nhiễm khuẩn tiêu hóa-Tiêu chảy do vi khuẩn.pptx
 
CD21 Exercise 2.1 KEY.docx tieng anh cho
CD21 Exercise 2.1 KEY.docx tieng anh choCD21 Exercise 2.1 KEY.docx tieng anh cho
CD21 Exercise 2.1 KEY.docx tieng anh cho
 
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdf
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdfChuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdf
Chuong trinh dao tao Su pham Khoa hoc tu nhien, ma nganh - 7140247.pdf
 
Kiểm tra cuối học kì 1 sinh học 12 đề tham khảo
Kiểm tra cuối học kì 1 sinh học 12 đề tham khảoKiểm tra cuối học kì 1 sinh học 12 đề tham khảo
Kiểm tra cuối học kì 1 sinh học 12 đề tham khảo
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
Các điều kiện bảo hiểm trong bảo hiểm hàng hoá
Các điều kiện bảo hiểm trong bảo hiểm hàng hoáCác điều kiện bảo hiểm trong bảo hiểm hàng hoá
Các điều kiện bảo hiểm trong bảo hiểm hàng hoá
 
TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...
TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...
TỔNG HỢP ĐỀ THI CHÍNH THỨC KỲ THI TUYỂN SINH VÀO LỚP 10 THPT MÔN NGỮ VĂN NĂM ...
 
3-BẢNG MÃ LỖI CỦA CÁC HÃNG ĐIỀU HÒA .pdf - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
3-BẢNG MÃ LỖI CỦA CÁC HÃNG ĐIỀU HÒA .pdf - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI3-BẢNG MÃ LỖI CỦA CÁC HÃNG ĐIỀU HÒA .pdf - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
3-BẢNG MÃ LỖI CỦA CÁC HÃNG ĐIỀU HÒA .pdf - ĐIỆN LẠNH BÁCH KHOA HÀ NỘI
 
TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI LÝ LUẬN VĂN HỌC NĂM HỌC 2023-2024 - MÔN NGỮ ...
TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI LÝ LUẬN VĂN HỌC NĂM HỌC 2023-2024 - MÔN NGỮ ...TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI LÝ LUẬN VĂN HỌC NĂM HỌC 2023-2024 - MÔN NGỮ ...
TÀI LIỆU BỒI DƯỠNG HỌC SINH GIỎI LÝ LUẬN VĂN HỌC NĂM HỌC 2023-2024 - MÔN NGỮ ...
 
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 7 GLOBAL SUCCESS (2 CỘ...
 
sách sinh học đại cương - Textbook.pdf
sách sinh học đại cương   -   Textbook.pdfsách sinh học đại cương   -   Textbook.pdf
sách sinh học đại cương - Textbook.pdf
 

THIẾT KẾ VÀ THỰC THI LÕI IP PHÂN LUỒNG DỮ LIỆU TRÊN FPGA.pdf

  • 1. ĐẠI HỌC ĐÀ NẴNG TRƢỜNG ĐẠI HỌC BÁCH KHOA VÕ THÀNH VĂN THIẾT KẾ VÀ THỰC THI LÕI IP PHÂN LUỒNG DỮ LIỆU TRÊN FPGA LUẬN VĂN THẠC SĨ KỸ THUẬT ĐIỆN TỬ Đà Nẵng - Năm 2017
  • 2. ĐẠI HỌC ĐÀ NẴNG TRƢỜNG ĐẠI HỌC BÁCH KHOA VÕ THÀNH VĂN THIẾT KẾ VÀ THỰC THI LÕI IP PHÂN LUỒNG DỮ LIỆU TRÊN FPGA Chuyên ngành: Kỹ thuật điện tử Mã số: 60520203 LUẬN VĂN THẠC SĨ NGƢỜI HƢỚNG DẪN KHOA HỌC TS. Phan Trần Đăng Khoa Đà Nẵng - Năm 2017
  • 3. Lời cam đoan Tôi xin cam đoan đây là công trình nghiên cứu của riêng tôi, các kết quả nghiên cứu đƣợc trình bày trong luận văn là trung thực, khách quan và chƣa từng để bảo vệ ở bất kỳ học vị nào. Tôi xin cam đoan rằng mọi sự giúp đỡ cho việc thực hiện luận văn đã đƣợc cám ơn, các thông tin trích dẫn trong luận văn này đều đƣợc chỉ rõ nguồn gốc. Đà Nẵng, ngày 25 tháng 4 năm 2017
  • 4. Lời cảm ơn Trƣớc khi trình bày nội dung chính, tôi xin bày tỏ lòng biết ơn sâu sắc tới TS. Phan Trần Đăng Khoa đã tận tình hƣớng dẫn để tôi có thể hoàn thành luận văn này. Tôi cũng xin bày tỏ lòng biết ơn chân thành tới toàn thể các thầy cô giáo trong Khoa Điện tử Viễn thông, Trƣờng Đại học Bách khoa, Đại học Đà Nẵng đã cung cấp kiến thức và điều kiện trong suốt quá trình học tập tại Khoa. Nhân dịp này tôi cũng xin đƣợc gửi lời cảm ơn chân thành tới lãnh đạo, các đồng nghiệp tại Trung tâm Vi mạch Đà Nẵng và gia đình, bạn bè đã luôn bên tôi, tạo điều kiện, giúp đỡ tôi hoàn thành luận văn. Đà Nẵng, ngày 25 tháng 4 năm 2017
  • 5. i Mục lục Mục lục i Danh mục hình vẽ ii Danh mục bảng biểu iii MỞ ĐẦU 1 1 TỔNG QUAN VỀ PHÂN LUỒNG DỮ LIỆU 3 1.1 Giới thiệu chƣơng . . . . . .. . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . 3 1.2 Khái niệm phân luồng dữ liệu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .... . 3 1.3 Vai trò của phân luồng dữ liệu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . … 3 1.4 Các chức năng chính của phân luồng dữ liệu . . . . . . . . . . . .. . . . . . . . . 4 1.4.1 Phân loại luồng dữ liệu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ... 5 1.4.2 Chính sách lƣu lƣợng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ..... 8 1.4.3 Định hình luồng lƣu lƣợng . . . . . . . . . . . . . . . . . . . . .. . . . . . … 8 1.4.4 Lập lịch gói tin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 9 1.4.5 Quản lý bộ đệm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ..10 1.5 Kết luận chƣơng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2 CƠ SỞ LÝ THUYẾT CÁC THUẬT TOÁN LẬP LỊCH 1 2 2.1 Giới thiệu chƣơng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . …12 2.2 Thuật toán First Come First Serve . . . . . . . . . . . . . . . . . . . . . . . . . . . … 12 2.3 Thuật toán lập lịch Max-Min . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . …12 2.4 Thuật toán Round-Robin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . …14 2.5 Thuật toán Weighted Round-Robin . . . . . . . . . . . . .. . . . . . . . . . . . . . ..15 2.6 Thuật toán Deficit Round-Robin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ..16 2.7 Kết luận chƣơng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ...18 3 THIẾT KẾ LÕI IP PHÂN LUỒNG DỮ LIỆU 1 9 3.1 Tổng quan quá trình thiết kế . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . …19 3.2 Thiết kế kiến trúc lõi IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . …. 19 3.3 Thiết kế khối quản lý bộ đệm (Buffer Management) . . . . . . . . . . . . . . . 22
  • 6. ii 3.3.1 Chức năng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . … 22 3.3.2 Sơ đồ kết nối . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ….23 3.3.3 Mô tả tín hiệu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .... . 23 3.4 Thiết kế khối xử lý ghi gói tin vào hàng đợi (Enqueue) . . . . . . . . . . . . 24 3.4.1 Chức năng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . … 24 3.4.2 Mô tả tín hiệu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ...25 3.4.3 Máy trạng thái . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ..27 3.5 Thiết kế khối xử lý đọc gói tin từ hàng đợi ra (Dequeue) ... . . . . . . . . . . 28 3.5.1 Chức năng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ...28 3.5.2 Mô tả tín hiệu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ... 28 3.5.3 Máy trạng thái . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ..31 3.6 Thiết kế khối hỗ trợ giao tiếp bộ nhớ (Memory Accessor) . . . . . . . . ... 32 3.6.1 Chức năng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ... 32 3.6.2 Mô tả tín hiệu . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . ... 32 3.6.3 Máy trạng thái . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .34 3.7 Thiết kế khối quản lý hàng đợi (Queue Management) . . . . . . . . . . . . . 36 3.7.1 Chức năng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .36 3.7.2 Cấu Trúc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 38 3.7.3 Mô tả tín hiệu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 3.7.4 Máy Trạng Thái . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 41 3.8 Thiết kế khối cấp phát bộ nhớ động(Dynamic Allocator) . . . . . . . . . . . 44 3.8.1 Chức năng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 44 3.8.2 Mô tả tín hiệu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 3.8.3 Máy trạng thái . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . .. 46 3.9 Thiết kế khối lập lịch(Scheduler) . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 48 3.9.1 Chức năng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 48 3.9.2 Mô tả tín hiệu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 3.9.3 Máy trạng thái khối Scheduler . . . . . . . . . . . . . . . . . . . . . . . . . 50 3.10 Thiết kế khối chống tắc nghẽn(Congestion) . . . . . . . . . . . . . . . . . . . . . 54 3.10.1 Chức năng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 3.10.2 Mô tả tín hiệu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 3.11 Kết luận chƣơng . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . 59
  • 7. iii 4 MÔ PHỎNG VÀ THỰC HIỆN LÕI IP PHÂN LUỒNG DỮ LIỆU TRÊN NỀN FPGA 6 0 4.1 Giới thiệu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ...60 4.2 Yêu cầu phần mềm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .60 4.3 Kết quả tổng hợp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . .61 4.4 Kết quả mô phỏng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 4.5 Năng lực xử lý của lõi IP . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . 65 4.6 Thực hiện trên nền FPGA . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . 65 4.6.1 Công nghệ FPGA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 4.6.2 Phần cứng sử dụng . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . .. . .. 67 4.6.3 Quá trình thực hiện . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . 68 4.6.4 Kiểm tra thực tế . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . 70 4.7 Kết luận chƣơng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 Kết luận và hƣớng phát triển 7 2 Tài liệu tham khảo
  • 8. iv THIẾT KẾ VÀ THỰC THI LÕI IP PHÂN LUỒNG DỮ LIỆU TRÊN FPGA Học viên: Võ Thành Văn. Chuyên ngành: Kỹ thuật Điện tử. Mã số: ...........Khóa: K31. Trƣờng Đại học Bách khoa - ĐHĐN Tóm tắt – Phân luồng dữ liệu là một kỹ thuật đƣợc áp dụng để giải quyết nhiều bài toán, đặc biệt là trong bài toán đảm bảo chất lƣợng dịch vụ QoS trong các thiết bị mạng hiện nay. Trong đề tài này, tác giả sẽ trình bày các khái niệm cùng các chức năng cơ bản liên quan đến phân luồng dữ liệu. Bên cạnh đó, còn đề cập đến các thuật toán lập lịch, chỉ rõ ƣu nhƣợc điểm cùng cách thực hiện trên phần cứng các thuật toán, từ đó đề xuất thiết kế và thực hiện chức năng phân luồng dữ liệu trên FPGA. Kết quả tổng hợp của lõi IP đƣợc thực hiện trên board mạch Zynq ZC706 cho thấy lõi IP chỉ chiếm 1% số thanh ghi cùng 4% số bảng tìm kiếm LUT trong tổng số tài nguyên của board, và tần số clock tối đa đạt đƣợc là 200MHz. Cuối cùng, tác giả đã tóm tắt các kết quả đạt đƣợc và đƣa ra các hƣớng phát triển tiếp theo. Từ khóa - Phân luồng dữ liệu; Lập lịch; QoS; FPGA; Thiết bị mạng DESIGN AND IMPLEMENT TRAFFIC MANAGEMENT IP CORE ON FPGA Abstract – Traffic management is a technique used to solve many problems, especially in quality of service (QoS) for today‟s networking devices. In this thesis, we present fundamental define- tions and functions related to traffic management. In addition, several scheduling algorithms are considered in order to compare their advantages and disadvantages and the ability to implement into hardware. Based on these principles, we describe the design and implementation of the Traffic Management IP Core on FPGA. The synthesis results using Zynq ZC706 board showed that it consumes 1% of slice registers and 4% of slice LUTs in hardware resource, and the maximum frequency is up to 200MHz. At the end of the thesis, we summarize the key results achieved and provide perspectives of the work. Key words - Traffic management; Scheduling; QoS; FPGA; Networking devic.
  • 9. v Danh mục hình vẽ 1.1 Sơ đồ khối của phân luồng dữ liệu trong router/switch . . . . . . . 5 1.2 Trƣờng CoS trong 802.1Q header . . . . . . . . . . . . . . . . . . 6 1.3 IP Precedence và DSCP trong header của gói tin IPv4 . . . . . . . 6 1.4 Bộ chính sách lƣu lƣợng . . . . . . . . . . . . . . . . . . . . . . . . 8 1.5 Cách hoạt động của bộ định hình lƣu lƣợng . . . . . . . . . . . . . 8 1.6 Cơ chế hoạt động của mô hình thùng thẻ - Token Bucket . . . . . . 9 2.1 Ví dụ về thuật toán công bằng Max-Min . . . . . . . . . . . . . . . 13 2.2 Thực thi thuật toán Round-robin . . . . . . . . . . . . . . . . . . . 14 2.3 Cách thức quản lý FQ . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.4 Thực hiện thuật toán WRR trên phần cứng . . . . . . . . . . . . . 16 2.5 Lƣợt rà soát Round robin thứ nhất . . . . . . . . . . . . . . . . . . 17 2.6 Lƣợt rà soát Round robin thứ hai . . . . . . . . . . . . . . . . . . 18 3.1 Sơ đồ kết nối lõi IP phân luồng dữ liệu . . . . . . . . . . . . . . . . 19 3.2 Sơ đồ kết nối khối Quản lý Bộ đệm . . . . . . . . . . . . . . . . . . 22 3.3 Máy trạng thái của Khối Enqueue . . . . . . . . . . . . . . . . . . 27 3.4 FSM của khối Dequeue . . . . . . . . . . . . . . . . . . . . . . . . 31 3.5 Máy trạng thái wr_state . . . . . . . . . . . . . . . . . . . . . . . . 35 3.6 Máy trạng thái rd_state . . . . . . . . . . . . . . . . . . . . . . . . 36 3.7 Cấu trúc dữ liệu quản lý hàng đợi . . . . . . . . . . . . . . . . . . 37 3.8 Sơ đồ cấu trúc module QueueManagement . . . . . . . . . . . . . 38 3.9 Máy trạng thái module QueueManagement . . . . . . . . . . . . . 41 3.10 Máy trạng thái con của DEACTIVE . . . . . . . . . . . . . . . . . 42 3.11 Máy trạng thái tƣơng ứng lệnh ACTIVE . . . . . . . . . . . . . . 43 3.12 Tổ chức dữ liệu một ô nhớ của khối DynamicAllocator . . . . . . 44 3.13 Máy trạng thái của khối DynamicAllocator . . . . . . . . . . . . . 47 3.14 Máy trạng thái con của trạng thái ACTIVE . . . . . . . . . . . . . 47 3.15 Sơ đồ tín hiệu khối Scheduler . . . . . . . . . . . . . . . . . . . . . 49 3.16 Máy trạng thái wr_dq_state . . . . . . . . . . . . . . . . . . . . . . 51 3.17 Máy trạng thái dq_empty_state . . . . . . . . . . . . . . . . . . . . 52
  • 10. vi 3.18 Máy trạng thái schedule_state . . . . . . . . . . . . . . . . . . . . 53 3.19 Sơ đồ tín hiệu khối Congestion . . . . . . . . . . . . . . . . . . . . 55 3.20 Sơ đồ tín hiệu khối WRED . . . . . . . . . . . . . . . . . . . . . . 56 3.21 Máy trạng thái của trƣờng hợp xử lý gói tin đến . . . . . . . . . . 58 3.22 Máy trạng thái của trƣờng hợp xử lý gói tin đi . . . . . . . . . . . 59 4.1 Kết quả tổng hợp phần cứng . . . . . . . . . . . . . . . . . . . . . 62 4.2 Mô hình kiểm tra mô phỏng . . . . . . . . . . . . . . . . . . . . . 63 4.3 Kết quả mô phỏng ở ngõ ra 2 . . . . . . . . . . . . . . . . . . . . . 64 4.4 Kết quả mô phỏng trên Modelsim . . . . . . . . . . . . . . . . . . 64 4.5 Cấu trúc tổng thể của một FPGA . . . . . . . . . . . . . . . . . . . 66 4.6 Kit phát triển Zynq ZC706 . . . . . . . . . . . . . . . . . . . . . . 67 4.7 Kết nối lõi IP và các thành phần vào hệ thống . . . . . . . . . . . . 69 4.8 Kết quả của quá trình tạo file bitstream . . . . . . . . . . . . . . . 69 4.9 Mô hình kết nối . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
  • 11. vii Danh mục bảng biểu 1.1 Bảng các vấn đề khi không có QoS . . . . . . . . . . . . . . . . . . 4 1.2 Bảng giá trị IP precedence . . . . . . . . . . . . . . . . . . . . . . 6 1.3 Bảng giá trị DSCP . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 3.1 Bảng mô tả tín hiệu lõi IP . . . . . . . . . . . . . . . . . . . . . . . 21 3.2 Bảng mô tả tín hiệu module BuffMan . . . . . . . . . . . . . . . . 23 3.3 Bảng mô tả tín hiệu Khối Enqueue . . . . . . . . . . . . . . . . . . 25 3.4 Bảng mô tả tín hiệu module Dequeue . . . . . . . . . . . . . . . . 28 3.5 Bảng mô tả tín hiệu Khối Memory Accessor . . . . . . . . . . . . . 32 3.6 Bảng mô tả lệnh khối QueueManagement . . . . . . . . . . . . . . 37 3.7 Bảng mô tả tín hiệu module QueueManagement . . . . . . . . . . 39 3.8 Bảng mô tả lệnh khối DynamicAllocator . . . . . . . . . . . . . . 44 3.9 Bảng mô tả tín hiệu khối DynamicAllocator . . . . . . . . . . . . . 45 3.10 Bảng mô tả tín hiệu Khối Scheduler . . . . . . . . . . . . . . . . . 50 3.11 Bảng mô tả tín hiệu Khối Congestion . . . . . . . . . . . . . . . . 55 3.12 Bảng mô tả tín hiệu Khối WRED . . . . . . . . . . . . . . . . . . . 56 4.1 Kết quả thực nghiệm khi thay đổi tốc độ truyền dữ liệu . . . . . . 71
  • 12. viii Danh mục từ viết tắt CIR Committed Information Rate CoS Class of Service DQ Departure Queue DRR Deficit Round Robin DSCP Differentiated Services Code Point FPGA Field-Programmable Gate Array FQ Flow Queue HDL Hardware Description Language HTTP Hypertext Transfer Protocol IP Internet Protocol OSI Open Systems Interconnection PQ Priority Queueing RAM Random Access Memory QoS Quality of Service RED Random Early Detection RFC Request for Comments RTL Register Transfer Language RTP Real Time Protocol WFQ Weighted Fair Queueing WRED Weighted Random Early Detection WRR Weighted Round Robin
  • 13. 1 MỞ ĐẦU Tính cấp thiết của đề tài Trong giai đoạn đầu của dịch vụ Internet, do băng thông và các tài nguyên khác đủ để cung cấp cho các ứng dụng trong mạng nên vấn đề phân biệt và ƣu tiêncho các gói tin chƣa đƣợc quan tâm. Ban đầu, các nhà cung cấp dịch vụ đƣa ra mô hìnhbest- effort, trong đó tất cả các khách hàng sẽ đƣợc đối xử nhƣ nhau và chỉ khác nhauở loại kết nối. Đây là dịch vụ phổ biến trên mạng Internet hay mạng IP nói chung. Nhƣng khi internet càng ngày càng phát triển và phát triển thêm các dịch vụ HTTP, voice, video. . . thì điều này sẽ làm cho chất lƣợng của các dịch vụ giảm đi rõ rệt vì độ trễ lớn, độ biến động trễ lớn và không đủ băng thông để truyền, phƣơng án tăng băng thông của mạng cũng không giải quyết đƣợc vấn đề này mà lại còn rất tốn kém. Chính vì vậy, giải pháp về phân luồng dữ liệu ra đời để đảm bảo các ứng dụng thời gian thực chạy đƣợc trên Internet và các ứng dụng truyền thống đƣợc bảo đảm chất lƣợng tốt hơn. Bên cạnh đó, các thiết bị mạng nhƣ router, firewall đã đƣợc sử dụng rộng rãi tại nhiều gia đình, cơ quan, doanh nghiệp tại Việt Nam. Tuy nhiên, toàn bộ các thiết bị này hiện đƣợc nhập khẩu từ nƣớc ngoài, do các nhà sản xuất nƣớc ngoài cung cấp hoàn toàn, dẫn đến một nguy cơ lệ thuộc và mất quyền kiểm soát rất lớn đối với tầng thông tin quốc gia khi xảy ra sự cố. Vì vậy, từng bƣớc tạo ra các sản phẩm do chính công dân Việt Nam nghiên cứu sản xuất để bảo đảm an toàn thông tin là hết sức cần thiết. Xuất phát từ những yêu cầu trên, luận văn của em nghiên cứu về đề tài: “Thiết kế và thực thi lõi IP phân luồng dữ liệu trên FPGA” Mục tiêu nghiên cứu Nghiên cứu thiết kế kiến trúc lõi IP phân luồng dữ liệu trên FPGA, thực hiệnbằng ngôn ngữ mô tả phần cứng Verilog HDL. Đối tƣợng và phạm vi nghiên cứu  Mô hình và kĩ thuật phân luồng dữ liệu.  Ngôn ngữ mô tả phần cứng Verilog HDL và công nghệ FPGA.  Thực hiện và đánh giá lõi IP phân luồng dữ liệu dựa trên công cụ mô phỏng
  • 14. 2 ModelSim và trên nền tảng FPGA. Phƣơng pháp nghiên cứu  Nghiên cứu lý thuyết: - Tìm hiểu và phân tích các tài liệu về phân luồng dữ liệu. - Nghiên cứu kiến trúc lõi IP phân luồng dữ liệu, đặc biệt là các thành phần có liên quan nhƣ phƣơng pháp quản lý hàng đợi, thuật toán lập lịch.  Nghiên cứu thực nghiệm: - Sử dụng ngôn ngữ mô tả phần cứng Verilog HDL để mô tả các phƣơng pháp, thuật toán. - Mô phỏng mức RTL trên công cụ mô phỏng ModelSim, thực thi trên nền FPGA và đánh giá kết quả. Ý nghĩa khoa học và thực tiễn của đề tài Đề tài tạo ra lõi IP phân luồng dữ liệu, đƣợc ứng dụng trong các thiết bị mạng,góp phần thực tiễn vào việc nâng cao chất lƣợng dịch vụ của các thiết bị này, đồng thời làm chủ đƣợc công nghệ giúp đảm bảo an toàn thông tin. Kết cấu của luận văn Luận văn gồm các phần chính sau đây:  Chƣơng 1: TỔNG QUAN VỀ PHÂN LUỒNG DỮ LIỆU.  Chƣơng 2: CƠ SỞ LÝ THUYẾT CÁC THUẬT TOÁN LẬP LỊCH.  Chƣơng 3: THIẾT KẾ LÕI IP PHÂN LUỒNG DỮ LIỆU.  Chƣơng 4: MÔ PHỎNG VÀ THỰC HIỆN LÕI IP PHÂN LUỒNG DỮ LIỆU TRÊN NỀN FPGA.  KẾT LUẬN VÀ HƢỚNG PHÁT TRIỂN CỦA ĐỀ TÀI  PHỤ LỤC
  • 15. 3 Chƣơng 1 TỔNG QUAN VỀ PHÂN LUỒNG DỮ LIỆU 1.1. Giới thiệu chƣơng Trong chƣơng này sẽ trình bày khái niệm về phân luồng dữ liệu cũng nhƣ vai trò của phân luồng dữ liệu trong hệ thống mạng internet ngày nay. Bên cạnh đó, sơ đồ khối và các khối chức năng chính của phân luồng dữ liệu cũng đƣợc giới thiệu để có cái nhìn khái quát và tổng quan hơn. 1.2. Khái niệm phân luồng dữ liệu Phân luồng dữ liệu là công việc đƣợc sử dụng trong nhiều ứng dụng, nhằm mục đích phân loại các gói dữ liệu vào các tập dữ liệu khác nhau để xử lý tiếp theo; mỗi tập dữ liệu có một quy tắc hành động riêng, đặc biệt là trong chức năng nâng cao chất lƣợng dịch vụ (QoS - Quality of Service) của hệ thống mạng ngày nay. Tiêu chuẩn mới nhất của phân luồng dữ liệu đƣợc định nghĩa trong các tài liệu RFC 5777 [8] và RFC 7640 [9]. 1.3. Vai trò của phân luồng dữ liệu Ngày nay, Internet phát triển rất nhanh kèm theo đó là sự phát triển nhiều loại dịch vụ khác nhau. Có thể kể đến các dịch vụ sử dụng các ứng dụng đa phƣơng tiện hoặc các ứng dụng thời gian thực nhƣ thoại IP (IP Telephony), hệ thống hội nghị video (video conference system), truyền hình trực tiếp video (livestream) là các ứng dụng mới cần nhiều băng thông hơn rất nhiều so với các ứng dụng đã đƣợc sử dụng rất sớm trên Internet. Mặt khác các ứng dụng này yêu cầu việc truyền dữ liệu đi qua mạng phải liên tục, độ trễ thấp. Chất lƣợng của các ứng dụng thoại phụ thuộc vào chất lƣợng đƣờng truyền kết nối từ đầu cuối đến đầu cuối. Các dấu hiệu của tín hiệu thoại không đƣợc đảm bảo chất lƣợng có thể kể đến nhƣ truyền lỗi, nhiễu tín hiệu, tiếng vọng,... Ngay cả việc truyền dữ liệu thời gian thực sử dụng giao thức thời gian thực RTP (Real Time Protocol) vẫn phụ thuộc vào việc tận dụng các tài nguyên đƣợc phân phát trên cơ sở giao thức IP. Bảng 1.1 cho thấy các dấu hiệu của mạng khi không có cơ chế và các kỹ thuật để đảm bảo chất lƣợng dịch vụ:
  • 16. 4 Bảng 1.1: Bảng các vấn đề khi không có QoS Kiểu lƣu lƣợng Các vấn đề khi không có QoS Voice Voice nghe khó hiểu Voice không liên tục, tiếng nói bị méo Ngƣời gọi không biết ngƣời nhận kết thúc khi nào hay kết thúc chƣa Video Hình ảnh hiển thị chập chờn Âm thanh không đồng bộ với video Sự di chuyển của hình ảnh chậm lại Data Dữ liệu đƣợc chuyển đến khi nó không còn giá trị nữa Dữ liệu phản hồi không đúng so với ban đầu Thời gian truyền bị gián đoạn làm cho ngƣời dùng thất vọng và từ bỏ hoặc thực hiện lại dịch vụ Chính vì vậy phân luồng dữ liệu ra đời để giải quyết các vấn đề trên, thông qua việc phân chia các ứng dụng thành các luồng dữ liệu khác nhau, áp dụng các kỹ thuật lập lịch gói tin, giúp đảm bảo đƣợc chất lƣợng của các dịch vụ chạy trên Internet. 1.4. Các chức năng chính của phân luồng dữ liệu Hình 1.1 biểu diễn vị trí của phân luồng dữ liệu trong một router/switch với 2 cổng vào, trong đó cả ngõ vào và ngõ ra của mỗi cổng đều sử dụng chức năng phân luồng dữ liệu. Các khối chức năng chính của phân luồng dữ liệu đƣợc mô tả nhƣ sau:  Phân loại luồng dữ liệu (Traffic classification).  Chính sách lƣu lƣợng (Traffic policing).  Định hình luồng lƣu lƣợng (Traffic shaping).  Lập lịch (Traffic scheduling).  Quản lý bộ đệm (Buffer Management). Tại ngõ vào của mỗi cổng, chức năng giới hạn tốc độ xác định luồng dữ liệu có phùhợp với các chính sách lƣu lƣợng đã đề ra hay không, sau đó khối quản lý bộ đệm xácđịnh gói tin đó đƣợc cho phép đi vào hay bị loại bỏ và nếu bị loại bỏ thì sẽ loại bỏ theophƣơng pháp nào. Bên cạnh đó, khối lập lịch gói tin và tối ƣu hóa luồng lƣu lƣợng xác định gói tin nào sẽ đƣợc tháo ra tiếp theo và đƣợc gửi tới cổng nào thông qua Fabric, đồng thời kiểm soát tốc độ truyền của gói tin trƣớc khi đi ra khỏi router.
  • 17. 5 Hình 1.1: Sơ đồ khối của phân luồng dữ liệu trong router/switch 1.4.1. Phân loại luồng dữ liệu Phân loại luồng dữ liệu là phƣơng pháp đƣợc sử dụng để nhóm các gói tin IP lại với nhau theo lớp dịch vụ. Trong mạng, các gói tin đƣợc lựa chọn dựa trên các trƣờng ở phần header của gói tin IP, các trƣờng này cũng đƣợc sử dụng cho việc đánh dấu gói tin nhƣ: Giao diện đầu vào, IP Precedence, DSCP, địa chỉ nguồn hoặc địa chỉ đích và các ứng dụng. Có hai kiểu phân loại luồng dữ liệu:  Phân loại đa trƣờng (Multi Field classification) – MF  Phân loại kết hợp hành vi (Behavior Aggregate classification) – BA Phân loại đa trƣờng MF Trong phƣơng pháp phân loại đa trƣờng, các gói tin đƣợc phân loại dựa trên tổ hợp các giá trị của một hoặc nhiều trƣờng trong phần header của gói tin IP. Thông thƣờng sẽ dựa theo các trƣờng: địa chỉ MAC nguồn, địa chỉ MAC đích, địa chỉ IP nguồn, địa chỉ IP đích, port nguồn, port đích và giao thức (protocol) để phục vụ tốt cho việc phân loại này. Phân loại kết hợp hành vi BA Phƣơng pháp phân loại kết hợp hành vi thực hiện việc phân loại gói tin dựa trên trƣờng IP Precedence hoặc rộng hơn nữa là trƣờng chứa giá trị DSCP trong phần header của gói tin IPv4. Bên cạnh đó, ở tầng liên kết dữ liệu theo mô hình OSI, trƣờng CoS trong chuẩn 802.1Q cũng đƣợc sử dụng với mục đích nhƣ trên.
  • 18. 6 Hình 1.2: Trƣờng CoS trong 802.1Q header Trƣờng IP Precedence là 3 bit đầu tiên trong trƣờng ToS (Type of Service) trong header của gói tin IPv4. Với 3 bit của trƣờng IP Precedence chúng ta có 8 giá trị tƣơng ứng với 8 mức ƣu tiên khác nhau đối với các gói tin IPv4, dựa trên mức độ ƣu tiên đó, các bộ định tuyến đƣa ra các quyết định chuyển tiếp các gói tin qua mạng. Hình 1.3: IP Precedence và DSCP trong header của gói tin IPv4 Bảng giá trị IP precedence đƣợc xác định theo RFC 791 [10] nhƣ sau: Bảng 1.2: Bảng giá trị IP precedence Giá trị Mô tả 000 (0) Bình thƣờng (Routine or Best Effort) 001 (1) Ƣu tiên (Priority) 010 (2) Tức thời (Immediate) 011 (3) Truyền nhanh (Flash) 100 (4) Truyền cực nhanh cho phép ghi đè (Flash Override)
  • 19. 7 101 (5) Tới hạn, tối đa (Critical -mainly used for Voice RTP.) 110 (6) Internet 111 (7) Điều khiển mạng (Network) Càng ngày, sự đa dạng về các dịch vụ ngày càng gia tăng, khi 3 bit của trƣờng IP Precedence không đủ để phân loại cụ thể và chi tiết các lớp dịch vụ nữa thì trƣờng DSCP ra đời để bổ sung cho sự phát triển đó. Trƣờng DSCP sử dụng 6 bit trong trƣờng ToS trong header của gói tin IPv4, mở rộng 3 bit ban đầu của trƣờng IP Precedence. Lúc đó, chuẩn RFC 2475 đã quy định các giá trị của trƣờng DSCP nhƣ sau Bảng 1.3: Bảng giá trị DSCP Giá trị Mô tả Giá trị IP Precedence tƣơng đƣơng 101 110 High Priority (EF) 101 - Critical 000 000 Best Effort 000 - Routine 001 010 AF11 001 - Priority 001 100 AF12 001 - Priority 001 110 AF13 001 - Priority 010 010 AF21 010 - Immediate 001 100 AF11 010 - Immediate 010 110 AF22 010 - Immediate 011 010 AF31 011 - Flash 011 100 AF32 011 - Flash 011 110 AF33 011 - Flash 100 010 AF41 100 - Flash Override 100 100 AF42 100 - Flash Override
  • 20. 8 100 110 AF43 100 - Flash Override 1.4.2. Chính sách lưu lượng Chính sách lƣu lƣợng luôn theo dõi, điều chỉnh lƣu lƣợng truy cập mạng cho phù hợp với hợp đồng lƣu lƣợng, và nếu nhƣ đƣợc yêu cầu, nó sẽ làm giảm hoặc thậm chí vứt bỏ lƣu lƣợng vƣợt quá ngƣỡng nhằm mục đích thực thi chính sách phù hợp trên đƣờng truyền. Khối chính sách lƣu lƣợng bao gồm các bộ đo các lƣu lƣợng để xác định lƣu lƣợng đầu vào và đầu ra, trên cơ sở đó, áp dụng chính sách điều khiển tốc độ lƣu lƣợng phù hợp với đầu ra bởi bộ đánh dấu gói tin. Các gói tin có thể bị loại bỏ nếu không phù hợp với chính sách lƣu lƣợng. Hình 1.4 biểu diễn sơ đồ khối của bộ chính sách lƣu lƣợng và hai khối nhỏ của nó là bộ đo lƣu lƣợng và bộ đánh dấu gói tin. Hình 1.4:Bộ chính sách lƣu lƣợng Thông thƣờng, chính sách lƣu lƣợng kiểm tra tốc độ của lƣu lƣợng đi vào theo một tham số lƣu lƣợng chính nhƣ: Tốc độ thông tin cam kết (CIR - Committed Information Rate) và tốc độ thông tin đỉnh (PBS - Peak Burst Size), kích thƣớc bùng nổ cam kết (CBS - Committed Burst Size) và kích thƣớc bùng nổ vƣợt ngƣỡng (EBS - Excess Burst Size) [12] [13] [14]. 1.4.3. Định hình luồng lưu lượng Hình 1.5: Cách hoạt động của bộ định hình lƣu lƣợng
  • 21. 9 Các công cụ định hình lƣu lƣợng (Traffic Shaping -TS) làm chậm các gói tin khi các gói đi ra khỏi một router sao cho tốc độ truyền tổng thể không vƣợt quá một giới hạn đã định nghĩa. Nếu lƣu lƣợng đầu vào có độ bùng nổ cao, thì luồng lƣu lƣợng phải có bộ đệm để đầu ra giảm sự bùng nổ và mềm hơn. Bằng cách này, định hƣớng lƣu lƣợng làm cho luồng lƣu lƣợng đƣợc điều chỉnh theo dạng lƣu lƣợng đã xác định trƣớc. Việc điều chỉnh tốc độ lƣu lƣợng giuống nhƣ một quá trình “truyền và nghỉ”, router làm việc luân phiên giữa hai trạng thái: truyền gói tin và giữ gói tin trong hàng đợi. Bộ định hình lƣu lƣợng trì hoãn một lƣu lƣợng lớn vào hàng đợi định hình khi lƣu lƣợng đó vƣợt quá mức cho phép đƣợc coi là Committ Information Rate – CIR. Hình 1.6: Cơ chế hoạt động của mô hình thùng thẻ - Token Bucket Để làm điều này, bộ định hình lƣu lƣợng sử dụng mô hình thùng thẻ - token bucket để xác định lƣu lƣợng truy cập vƣợt quá mức giới hạn đã đƣợc cấu hình với CIR. Mỗi lần một gói tin xếp vào hàng đợi, bộ định hình lƣu lƣợng sẽ so sánh kích thƣớc của gói tin với kích thƣớc hiện tại của token bucket. Nếu kích thƣớc gói tin nhỏ hơn hoặc bằng khoảng trống còn trong token bucket thì gói tin đó đƣợc gửi đi. Ngƣợc lại, nếu vƣợt quá nó sẽ bị trì hoãn trong hàng đợi định hình. 1.4.4. Lập lịch gói tin Thực hiện phân loại lƣu lƣợng trong thiết bị mạng bằng cách định hƣớng các gói tin đến các hàng đợi khác nhau và áp dụng thuật toán để gửi các gói tin ứng với độ ƣu tiên của các hàng đợi đó. Các thuật toán lập lịch sẽ đƣợc trình bày rõ trong Chƣơng 2 - Cơ sở lý thuyết các thuật toán lập lịch.
  • 22. 10 1.4.5. Quản lý bộ đệm Thực hiện công việc cung cấp bộ nhớ cho từng hàng đợi, quản lý tình trạng của các hàng đợi và đƣa ra thông báo để loại bỏ gói tin khi hàng đợi chuẩn bị đầy nhằm mục đích chống tắc nghẽn. Một bộ quản lý bộ đệm thƣờng bao gồm các hoạt động:  Thêm gói tin vào hàng đợi khi hàng đợi chƣa đầy.  Loại bỏ gói tin nếu hàng đợi đã đầy.  Xóa bỏ gói tin khi đƣợc yêu cầu bởi bộ lập lịch. Mục đích chính của hàng đợi là điều khiển lƣu lƣợng, chống tắc nghẽn trong mạng, đặc biệt là tại các nút cổ chai. Kĩ thuật quản lý bộ đệm trƣớc đây là cấp phát một kích thƣớc lớn nhất cho mỗi hàng đợi, các gói tin đến sẽ đƣợc đƣa vào trong hàng đợi cho đến khi hàng đợi đầy, sau đó nếu còn có gói đến thì sẽ loại bỏ các gói mới tới này. Khi số lƣợng các gói trong hàng đợi giảm đi sau mỗi lần đƣợc lập lịch tháo ra thì lúc đó, hàng đợi mới nhận tiếp các gói mới. Đây cũng chính là kĩ thuật “loại bỏ phần đuôi” (drop tail). Tuy nhiên cách này có hai hạn chế:  Kĩ thuật này không có sự ƣu tiên lƣu lƣợng nên khi có luồng dữ liệu quan trọng đến hàng đợi trong lúc hàng đợi đang bị đầy thì gói tin đó vẫn bị loại bỏ.  Thƣờng thì các luồng lƣu lƣợng đến hàng đợi dƣới dạng bó. Khi hàng đợi đầy thì bất kì luồng nào đến cũng đều bị loại bỏ cho tới khi số gói trong hàng đợi giảm xuống. Kĩ thuật này sẽ loại bỏ các bó thông tin chứ không chỉ là các gói, do đó việc mất mát thông tin rất lớn. Để giải quyết các nhƣợc điểm của quản lý bộ đệm nêu trên và chống tắc nghẽn, các phƣơng pháp thƣờng đƣợc áp dụng là RED (mở rộng WRED), hàng đợi cân bằng có trọng số (WFQ), hàng đợi ƣu tiên (PQ),... Thuật toán RED [1] đƣợc phát minh bởi Sally Floyd và Van Jacobson, dựa trên tính toán kích thƣớc hàng đợi trung bình để đánh giá tắc nghẽn và gửi phản hồi nhằm phát hiện sớm để tránh tắc nghẽn. Do đó, RED đƣợc sử dụng để phát hiện ra tắc nghẽn ngay khi nó mới bắt đầu hình thành để duy trì mạng trong miền độ trễ thấp. RED đƣợc chia thành 2 phần chính: dự báo tắc nghẽn và loại bỏ gói tin. Dựa vào đặc điểm gói tin, RED thực hiện ƣớc lƣợng kích thƣớc trung bình của hàng đợi và quyết định loại bỏ hay cho gói tin đi vào. Nội dung của thuật toán đƣợc trình bày nhƣ sau:
  • 23. 11 Algorithm 1 Thuật toán RED for mỗi gói tin do tính toán kích thƣớc trung bình của queue 𝑎𝑣𝑔; if 𝑚𝑖𝑛𝑡𝑕 ≤ 𝑎𝑣𝑔 ≤ 𝑚𝑎𝑥𝑡𝑕 then tính toán xác suất loại bỏ 𝑝𝑎; if 𝑝𝑎 = 1 then loại bỏ gói tin; else if 𝑚𝑎𝑥𝑡𝑕 ≤ 𝑎𝑣𝑔 then loại bỏ gói tin; else cho phép gói tin đi vào bộ đệm; Trong đó, 𝑚𝑖𝑛𝑡𝑕 và 𝑚𝑎𝑥𝑡𝑕 lần lƣợt là các giá trị ngƣỡng thấp nhất và cao nhất của mỗi hàng đợi. Cơ chế RED dựa vào quyết định loại bỏ gói tin ngẫu nhiên khi dung lƣợng bộ đệm vƣợt quá ngƣỡng cho trƣớc, vì vậy các luồng dữ liệu với dung lƣợng lớn sẽ bị loại bỏ một số lƣợng lớn gói tin trong trƣờng hợp tắc nghẽn. Do đó, thuật toán WRED đƣợc bổ sung nhằm mục đích xử lý các luồng dữ liệu theo tỷ lệ loại bỏ gói tin khác nhau để đảm bảo rằng, với các luồng dữ liệu quan trọng thì xác suất gói tin bị loại bỏ thấp hơn các luồng dữ liệu khác. 1.5. Kết luận chƣơng Trong chƣơng này, ta đã có cái nhìn tổng quan về phân luồng dữ liệu cũng nhƣ các thành phần tạo nên nó. Chƣơng sau sẽ trình bày rõ ràng và chi tiết về các thuật toán lập lịch, một phần rất quan trọng trong phân luồng dữ liệu và cách thực hiện từng thuật toán trên phần cứng.
  • 24. 12 Chƣơng 2 CƠ SỞ LÝ THUYẾT CÁC THUẬT TOÁN LẬP LỊCH 2.1. Giới thiệu chƣơng Bộ lập lịch sẽ quyết định xem hàng đợi nào đƣợc phép tháo gói tin ra, gói tin ra sẽ đƣợc đƣa tới giao diện đầu ra nào. Các router truyền thống chỉ có một hàng đợi đơn cho một đầu ra cố định, do vậy bộ lập lịch của nó rất đơn giản. Nó sẽ tìm cách tháo gói tin ra khỏi hàng đợi nhanh nhất có thể. Tuy nhiên, với bộ phân luồng dữ liệu có số lƣợng hàng đợi lớn hơn, việc lựa chọn thuật toán lập lịch phù hợp sẽ giúp giải quyết đƣợc các vấn đề ƣu tiên dịch vụ. Một số kiểu thuật toán lập lịch thƣờng sử dụng gồm: thuật toán FCFS, thuật toán Max-Min, thuật toán Round robin, thuật toán Round robin theo trọng số (Weighted Round robin - WRR), thuật toán thâm hụt Round robin (Deficit Round robin - DRR), thuật toán cân bằng theo trọng số (Weighted Fair Queueing - WFQ). 2.2. Thuật toán First Come First Serve Ở thời điểm các router áp dụng mô hình best-effort cho tất cả các gói tin truyền qua mạng IP thì thuật toán First Come First Serve (FCFS) thƣờng xuyên đƣợc sử dụng. Nội dung của thuật toán này là các gói tin sau khi đã đƣợc phân loại sẽ đƣợc đƣa vào một hàng đợi duy nhất và các gói tin đƣợc tháo ra đúng theo nguyên tắc: Gói nào vào hàng đợi trƣớc sẽ đƣợc tháo ra trƣớc. Ƣu điểm của phƣơng pháp này là đơn giản, không phải tốn tài nguyên phần cứng và thời gian xử lý các thuật toán điều khiển. Thuật toán FCFS chỉ việc lƣu trữ các gói tin đi vào và gửi các gói tin đi ra theo thứ tự mà chúng đi vào. FCFS đối xử với các gói tin nhƣ nhau, hoạt động theo cùng một phƣơng pháp, do đó, phù hợp với mô hình best-effort trƣớc đây. Nhƣợc điểm của FCFS là không phân biệt đƣợc các luồng dữ liệu khác nhau, dẫn đến việc không có cơ chế đối xử khác nhau với các luồng dữ liệu đó, làm cho các luồng dữ liệu bị suy giảm chất lƣợng khi có tắc nghẽn xảy ra. 2.3. Thuật toán lập lịch Max-Min Một trong những mục tiêu của lập lịch là phân bổ băng thông có sẵn cho các luồng dữ liệu khác nhau. Ví dụ băng thông sẵn có giữa ngƣời dùng A và router R1 là 10 Mb/s, giữa ngƣời dùng B và router R1 là 100 Mb/s, và giữa R1 và đích đến C là
  • 25. 13 1.1Mb/s. Câu hỏi đƣợc đặt ra ở đây là: băng thông dành cho ngƣời dùng A và B ở đây nhƣ thế nào là cân bằng? 0.55 Mb/s và 0.55 Mb/s hay 0.1 Mb/s và 1 Mb/s? Để giải quyết vấn đề trên, Bertsekas và Gallager đã đƣa ra nguyên lý cơ bản là tiêu chuẩn công bằng max-min [5] nhƣ sau: Giả sử có N luồng dữ liệu cùng chia sẻ một băng thông C. Luồng dữ liệu 𝑓𝑖(1 ≤ 𝑖 ≤ 𝑁) mong muốn đƣợc truyền với tốc độ 𝑊(𝑓𝑖), tuy nhiên tốc độ đạt đƣợc là 𝑅(𝑓𝑖). Gọi tập tốc độ 𝑅(𝑓1), . . . , 𝑅(𝑓𝑁) là tập khả thi nếu 𝑅(𝑓𝑖) 𝑁 𝑖=1 ≤ 𝐶. Khi đó, tập khả thi này sẽ là công bằng max-min nếu không tồn tại một cách nào để tăng tốc độ của luồng dữ liệu 𝑝 mà không mất tính khả thi hoặc giảm tốc độ của một luồng dữ liệu 𝑞 với điều kiện 𝑅(𝑓𝑝) ≤ 𝑅(𝑓𝑞 ). Các bƣớc thực hiện để phân chia tốc độ tối đa cho từng luồng dữ liệu nhƣ sau:  Bƣớc 1: Chọn luồng dữ liệu 𝑓𝑗 trong tập 𝑅(𝑓𝑛 )(1 ≤ 𝑗 ≤ 𝑁) có tốc độ mong muốn nhỏ nhất.  Bƣớc 2: Nếu 𝑊 𝑓𝑗 ≤ 𝐶 𝑁 thì gán 𝑅 𝑓𝑗 = 𝑊 𝑓𝑗  Bƣớc 3: Nếu 𝑊 𝑓𝑗 > 𝐶 𝑁 thì gán 𝑅 𝑓𝑗 = 𝐶 𝑁  Bƣớc 4: Gán 𝑁 = 𝑁 − 1, 𝐶 = 𝐶 − 𝑅 𝑓𝑗 , loại bỏ luồng dữ liệu 𝑓𝑗 ra khỏi tập 𝑅 𝑓𝑛  Bƣớc 5: Nếu 𝑁 > 0, quay trở lại bƣớc 1 Hình 2.1: Ví dụ về thuật toán công bằng Max-Min  Bƣớc 1: Gán 𝑅 𝑓1 = 0.1  Bƣớc 2: Gán 𝑅 𝑓2 = 0.9/3 = 0.3  Bƣớc 3: Gán 𝑅 𝑓3 = 0.6/3 = 0.3  Bƣớc 4: Gán 𝑅(𝑓4) = 0.3/1 = 0.3 Mặc dù đã có sự tiến bộ so với thuật toán FCFS khi đã có sự khác biệt trong tốc độ của các luồng dữ liệu, tuy nhiên sự khác biệt đó là chƣa lớn và chƣa có sự công bằng đối với các luồng dữ liệu yêu cầu tốc độ cao (Lƣu ý rằng, ở bƣớc 3, các luồng dữ liệu có tốc độ 𝑊(𝑓𝑗 ) > 𝐶/𝑁 thì đều đƣợc đồng bộ ở một mức 𝑅(𝑓𝑗 ) = 𝐶/𝑁).
  • 26. 14 2.4. Thuật toán Round-Robin Ở thuật toán Round-robin, một gói tin đến sẽ đƣợc lƣu trữ vào các hàng đợi khác nhau dựa trên chỉ số luồng dữ liệu (flow ID) hoặc lớp dịch vụ. Server sẽ rà soát từng hàng đợi theo thứ tự xoay vòng và sau đó, tháo gói tin ra khỏi các hàng đợi không rỗng. Bộ lập lịch theo thuật toán Round robin đối xử công bằng với các ngƣời dùng và cung cấp cho ngƣời dùng cùng một lƣợng băng thông nhƣ nhau. Hình 2.2: Thực thi thuật toán Round-robin Tuy nhiên, khi số lƣợng hàng đợi lớn và yêu cầu băng thông cao thì việc rà soát từng hàng đợi để xem xét hàng đợi nào có gói tin đƣợc tháo ra sẽ gây mất thời gian khi phải rà soát các hàng đợi rỗng. Chính vì vậy giải pháp đƣa ra là tạo danh sách hành trình hàng đợi (DQ - Departure Queue) chứa chỉ số của các hàng đợi không rỗng nhƣ hình 2.2. Ở đây, giả sử rằng các dịch vụ có cùng kích thƣớc cố định là cell. Bộ lập lịch tại đầu ra của switch có 𝑀 hàng đợi FQ và 1 hàng đợi DQ. Các gói tin đi vào đƣợc lƣu trữ tại bộ nhớ và đƣợc đánh địa chỉ 𝐴𝑖, 𝐴𝑗 và 𝐴𝑘 nhƣ trên hình vẽ, các địa chỉ này đƣợc quản lý bởi các hàng đợi (Flow queue) ứng với các luồng dữ liệu. Khi đó, với các hàng đợi FQ không rỗng, chỉ số FQ (từ 1 tới M) sẽ đƣợc lƣu vào danh sách DQ. Tại mỗi khe thời gian, DQ chọn ra hàng đợi có chỉ số trên cùng (HOL - Head of line) và tháo cell trên cùng của hàng đợi đó ra. Nếu hàng đợi FQ vẫn còn cell trong danh sách thì chỉ số của hàng đợi FQ này sẽ đƣợc ghi lại vào cuối danh sách hàng đợi DQ. Nếu FQ trở nên rỗng thì sẽ không làm gì cả. Sau đó, khi có một gói tin mới đến thuộc hàng đợi FQ đang rỗng thì chỉ số hàng đợi FQ sẽ đƣợc ghi vào cuối danh sách hàng đợi DQ. Thuật toán Round robin có hai nhƣợc điểm chính:  Khi băng thông đầu ra đƣợc chia thành N hàng đợi FQ thì tƣơng ứng mỗi hàng đợi sẽ có băng thông là 1/𝑁, nếu các luồng dữ liệu đầu vào có yêu cầu băng
  • 27. 15 thông khác nhau thì thuật toán Round robin không thể phân bố lại băng thông đầu ra theo yêu cầu băng thông của các luồng dữ liệu đầu vào.  Kích thƣớc gói tin không đƣợc quan tâm trong thuật toán này, trong khi đó, kích thƣớc các gói tin lại ảnh hƣởng đến sự phân bố băng thông thực tế. Ví dụ, nếu một hàng đợi nào đó có các gói tin có kích thƣớc lớn hơn các hàng đợi khác, thì hàng đợi này phải có băng thông đầu ra lớn hơn băng thông đầu ra của các hàng đợi khác (1/𝑁). 2.5. Thuật toán Weighted Round-Robin Giả sử hệ thống round robin có trọng số (WRR) tại mỗi kết nối 𝑖 sẽ có một trọng số nguyên 𝑤𝑖 tƣơng ứng. Khi server rà soát đến kết nối thứ 𝑖, nó sẽ tháo ra 𝑤𝑖 cell trƣớc khi rà soát hàng đợi tiếp theo. Lập lịch theo thuật toán này rất linh hoạt vì có thể gán các trọng số cho các dịch vụ khác nhau. Mỗi kết nối đƣợc hoạt động với một tốc độ 𝑔𝑖 = 𝑤𝑖 𝑗𝑤𝑗 (2.1) Ví dụ hệ thống WRR có 2 ngƣời dùng là A và B cùng các trọng số tƣơng ứng: 𝑤𝐴 = 3 và 𝑤𝐵 = 7. Khi đó bộ lập lịch sẽ dành ra 30% (= 𝑤𝐴/(𝑤𝐴 + 𝑤𝐵)) băng thông cho ngƣời dùng A và 70% (= 𝑤𝐵/(𝑤𝐴 + 𝑤𝐵)) băng thông cho ngƣời dùng B. Hình 2.3: Cách thức quản lý FQ Thuật toán WRR có thể đƣợc thực hiện ở phần cứng bằng cách sử dụng các thanh ghi lƣu giữ trọng số (𝑤𝑖) và bộ đếm (𝐶𝑖) cho mỗi hàng đợi FQ nhƣ hình 2.3. Bộ đếm có nhiệm vụ theo dõi số lƣợng cell có thể gửi đi trong mỗi khung truyền. Giả sử khung truyền có kích thƣớc 𝐹 (= 𝑤𝑖). Một hàng đợi FQ đƣợc gọi là đủ điều kiện nếu
  • 28. 16 nhƣ hàng đợi đó khác rỗng và giá trị trong bộ đếm khác 0. Tại thời điểm khởi đầu của khung truyền, mỗi bộ đếm (𝐶𝑖) đƣợc khởi tạo với giá trị ban đầu chính bằng trọng số (𝑤𝑖) của hàng đợi FQ đó. Khi hàng đợi FQ đủ điều kiện đƣợc rà soát, mỗi cell đƣợc tháo ra sẽ làm giá trị của bộ đếm 𝐶𝑖 giảm đi 1. Sau khi 𝐹 cell đƣợc tháo ra, khung truyền mới lại đƣợc bắt đầu. Hình 2.4: Thực hiện thuật toán WRR trên phần cứng Để thực hiện thuật toán WRR trên phần cứng, sử dụng 2 hàng đợi DQ nhƣ hình 2.4. Trong đó, hàng đợi 𝐷𝑄𝑠 ở chế độ chờ (standby), hàng đợi 𝐷𝑄𝑎 chỉ hàng đợi ở chế độ hoạt động (active), chịu trách nhiệm về việc truyền các cell. Cách thức lƣu trữ các cell dữ liệu vào bộ nhớ và quản lý địa chỉ trong các hàng đợi FQ tƣơng tự nhƣ thuật toán Round robin. 𝐷𝑄𝑎 chọn lựa hàng đợi FQ có chỉ số đầu danh sách để tháo gói tin cho đến khi hàng đợi FQ đó rỗng. Khi đó, vai trò của 𝐷𝑄𝑎 và 𝐷𝑄𝑠 đƣợc hoán đổi cho nhau. Vào thời điểm khởi tạo của hệ thống, mỗi bộ đếm 𝐶𝑖 đƣợc gán giá trị bằng trọng số 𝑤𝑖. Khi một gói tin đi vào hàng đợi 𝐹𝑄𝑖, nếu nó là gói tin đầu danh sách của hàng đợi 𝐹𝑄𝑖 và giá trị 𝐶𝑖 ≠ 0 thì đƣợc tham gia vào hàng đợi 𝐷𝑄𝑎 (chỉ số 𝑖 đƣợc đƣa vào cuối hàng đợi 𝐷𝑄𝑎), nếu 𝐶𝑖 = 0 thì đƣợc tham gia vào hàng đợi 𝐷𝑄𝑠. Nếu nó không phải là gói tin đầu danh sách thì đơn giản sẽ đƣợc thêm vào cuối của hàng đợi 𝐹𝑄𝑖. Mỗi khi có cell đƣợc tháo ra khỏi 𝐹𝑄𝑖 thì giá trị 𝐶𝑖 tƣơng ứng lại giảm đi 1. Sau đó, kiểm tra hàng đợi 𝐹𝑄𝑖. Nếu 𝐹𝑄𝑖 không rỗng và 𝐶𝑖 ≠ 0, chỉ số 𝑖 đƣợc thêm vào cuối của hàng đợi 𝐷𝑄𝑎. Nếu 𝐹𝑄𝑖 không rỗng nhƣng 𝐶𝐼 = 0 thì chỉ số 𝑖 đƣợc thêm vào cuối hàng đợi 𝐷𝑄𝑠. Nếu 𝐹𝑄𝑖 rỗng thì chuyển sang rà soát hàng đợi tiếp theo. 2.6. Thuật toán Deficit Round-Robin Thuật toán thâm hụt round robin (DRR) là trƣờng hợp mở rộng của thuật toán WRR cho trƣờng hợp các gói tin có kích thƣớc khác nhau. Ý tƣởng chính của thuật toán là sử dụng thuật toán round robin với một phần lƣợng tử dịch vụ đƣợc gán cho mỗi hàng đợi. Điểm khác biệt duy nhất so với phƣơng pháp round robin truyền thống
  • 29. 17 là nếu hàng đợi không thể tháo gói tin trong lƣợt của nó vì kích thƣớc gói tin quá lớn thì phần lƣợng tử sẽ đƣợc thêm vào ở lƣợt rà soát tiếp theo. Cụ thể nhƣ sau: Giả sử mỗi luồng dữ liệu 𝑖 đƣợc xác định bởi một giá trị 𝑄𝑖 bits tại mỗi lƣợt rà soát, kèm theo một biến trạng thái 𝐷𝐶𝑖 (Deficit Counter) để xác định phần thâm hụt. Công việc rà soát ở mỗi lƣợt đƣợc tính là một vòng round robin tất cả các hàng đợi hiện có. Để tránh việc phải kiểm tra các hàng đợi rỗng, một danh sách ActiveList đƣợc tạo ra để chứa chỉ số của các hàng đợi có ít nhất một gói tin trong đó. Các gói tin đi vào từ nhiều luồng dữ liệu đƣợc phân loại để lƣu trữ vào các hàng đợi khác nhau. Giả sử số bytes của gói tin đầu tiên trong hàng đợi 𝑖 ở lƣợt rà soát thứ 𝑘 là 𝑏𝑦𝑡𝑒𝑖(𝑘). Khi một gói tin đến và lƣu trữ vào hàng đợi đang rỗng 𝑖 thì chỉ số 𝑖 sẽ đƣợc thêm vào cuối danh sách ActiveList. Nếu 𝑖 ở đầu danh sách ActiveList thì ở lƣợt rà soát thứ 𝑘, thuật toán sẽ tính toán giá trị 𝐷𝐶𝑖 = 𝐷𝐶𝑖 + 𝑄𝑖 và tháo gói tin của hàng đợi 𝑖 ra nếu thỏa mãn điều kiện 𝑏𝑦𝑡𝑒𝑠𝑖(𝑘) ≤ 𝐷𝐶𝑖, sau đó cập nhật lại giá trị 𝐷𝐶𝑖 = 𝐷𝐶𝑖 − 𝑏𝑦𝑡𝑒𝑠𝑖(𝑘). Lúc này, nếu hàng đợi 𝑖 vẫn còn gói tin để tháo ra thì chỉ số 𝑖 sẽ đƣợc ghi vào cuối danh sách ActiveList, nếu không thì gán giá trị của 𝐷𝐶𝑖 về 0 và xóa chỉ số 𝑖 ra khỏi danh sách ActiveList. Hình 2.5: Lƣợt rà soát Round robin thứ nhất
  • 30. 18 Hình 2.6: Lƣợt rà soát Round robin thứ hai Một ví dụ về hoạt động của thuật toán DRR đƣợc mô tả nhƣ hình 2.5 và hình 2.6. Tại thời điểm khởi đầu, các giá trị biến đếm 𝐷𝐶𝑖 đều đƣợc gán bằng 0, con trỏ trỏ vào đỉnh của danh sách ActiveList. Khi hàng đợi đầu tiên đƣợc rà soát, giá trị lƣợng tử 500 đƣợc cộng vào biến đếm 𝐷𝐶𝑖. Vì kích thƣớc gói tin ở đầu hàng đợi 𝑖 là 200 (nhỏ hơn giá trị 𝐷𝐶𝑖 = 500) nên gói tin này đƣợc tháo ra, phần dƣ thừa 300 đƣợc gán lại cho 𝐷𝐶𝑖. Vì kích thƣớc gói tin tiếp theo trong hàng đợi 𝑖 là 750 > 300 nên không thể tháo gói tin này ra khỏi hàng đợi 𝑖, lúc đó cập nhật lại giá trị thâm hụt sang cho lƣợt rà soát tiếp theo (𝐷𝐶𝑖 = 𝐷𝐶𝑖 + 𝑄𝑖 = 300 + 500 = 800). Con trỏ đƣợc di chuyển sang hàng đợi FQ#2, nơi mà giá trị 𝐷𝐶 đƣợc gán bằng 500 bytes và cho phép gói tin đầu hàng đợi đƣợc phép tháo ra. 2.7. Kết luận chƣơng Trong chƣơng này đã nêu ra đƣợc các thuật toán lập lịch khác nhau, phƣơng pháp thực hiện mỗi thuật toán trên phần cứng cùng với ƣu nhƣợc điểm của từng thuật toán. Qua đó, sự lựa chọn thuật toán DRR để thực hiện bộ lập lịch trong phân luồng dữ liệu là hợp lý bởi tính ứng dụng của nó và khả năng thực hiện trên phần cứng so với các thuật toán phức tạp khác. Trong chƣơng sau sẽ trình bày rõ việc thiết kế từng chức năng trong phân luồng dữ liệu.
  • 31. 19 Chƣơng 3 THIẾT KẾ LÕI IP PHÂN LUỒNG DỮ LIỆU 3.1. Tổng quan quá trình thiết kế Trong chƣơng này sẽ trình bày chi tiết kỹ thuật thiết kế lõi IP Phân luồng dữ liệu. Việc phân tích thiết kế lõi IP theo trình tự từ trên xuống dƣới theo quy trình Top – Down. Quá trình thiết kế đƣợc xem xét ở mức độ tổng thể nhƣ xem xét các khối chức năng, kích thƣớc hàng đợi, các tín hiệu giao tiếp nhƣ tín hiệu trạng thái, tín hiệu điều khiển,.... Sau đó, ta sẽ module hóa các khối chức năng, kỹ thuật chuyển đổi trạng thái , dữ liệu của các khối chức năng đó. Lõi IP đƣợc thiết kế để giao tiếp bộ vi xử lý, làm việc trong một hệ thống. Trong phạm vi của luận văn, chỉ đề cập đến việc thiết kế lõi IP phân luồng dữ liệu, sau đó ở phần mô phỏng sẽ có thực hiện giao tiếp với bộ vi xử lý ARM Cotex-A9 trên nền FPGA Xilinx – ZynqZC706. 3.2. Thiết kế kiến trúc lõi IP Hình 3.1: Sơ đồ kết nối lõi IP phân luồng dữ liệu
  • 32. 20 Để đảm bảo các chức năng phân luồng dữ liệu vào các hàng đợi khác nhau, đồng thời đảm bảo tốc độ do ngƣời dùng cấu hình, lõi IP phân luồng dữ liệu đƣợc thiết kế với sơ đồ khối nhƣ hình 3.1. Trong đó:  Khối Congestion: có chức năng kiểm tra tắc nghẽn trƣớc khi lƣu gói tin vào bộ nhớ. Khối này sử dụng thuật toán WRED đã đƣợc nêu ra trong chƣơng 1.  Khối BuffMan (Buffer Management): có nhiệm vụ quản lý bộ đệm, cấp phát vùng nhớ cho các gói tin, quản lý các hàng đợi chứa các gói tin với mục đích phân luồng dữ liệu. Bên cạnh đó, khối BuffMan còn có chức năng ghi, đọc gói tin vào bộ nhớ, thông báo tình trạng gói tin cho khối Scheduler đƣợc biết. Khối BuffMan đƣợc trình bày chi tiết ở mục 3.3.  Khối Scheduler: có chức năng quản lý danh sách ActiveList và thực hiện công việc lập lịch. Đồng thời áp dụng cơ chế thùng thẻ, đảm bảo đƣợc tính năng định hình lƣu lƣợng của lõi IP phân luồng dữ liệu. Khối Scheduler đƣợc trình bày ở mục 3.9. Nguyên lý hoạt động Gói tin khi đi vào lõi IP sẽ đƣợc kiểm tra tại Khối Congestion để đảm bảo rằng, khi gói tin đi vào bộ đệm sẽ không bị tắc nghẽn. Khối Congestion đƣợc xem nhƣ là “chốt chặn” cho phép gói tin đi vào khối BuffMan ở trong hay là không. Trong trƣờng hợp thuật toán chống tắc nghẽn đƣa ra quyết định không cho gói tin đi vào nữa thì tại đây, gói tin sẽ bị loại bỏ. Trƣờng hợp gói tin thỏa mãn điều kiện và đƣợc đi qua khối Congestion, sẽ tiếp tục đi đến khối BuffMan để đƣợc lƣu vào bộ nhớ và chờ đƣợc tháo ra theo đúng chính sách mà hàng đợi chứa gói tin này đã đƣợc quy định. Dựa vào các tín hiệu trong nhóm tín hiệu ContextIn, khối BuffMan sẽ xác định gói tin đến đƣợc phân loại vào hàng đợi nào, đây chính là công đoạn phân loại gói tin (classification), sau đó thực hiện công việc cấp phát, quản lý địa chỉ của gói tin và tiến hành lƣu gói tin vào bộ nhớ. Khi lƣu gói tin vào bộ nhớ xong, khối BuffMan sẽ gửi nhóm tín hiệu EnqSts tới khối Scheduler để thông báo tình trạng quá trình ghi gói tin khi ghi vào bộ nhớ: thành công hay không thành công, từ đó khối Scheduler sẽ dựa vào đó quản lý danh sách ActiveList nhƣ đã trình bày trong mục 2.6. Ngoài ra, khối Scheduler còn có một máy trạng thái hoạt động độc lập nhằm thực hiện thuật toán lập lịch Deficit Round Robin (mục 2.6), rà soát các hàng đợi trong danh sách ActiveList và gửi lệnh tháo gói tin tới khối BuffMan thông qua nhóm tín hiệu DeqCMD. Sau khi nhận đƣợc lệnh từ khối Scheduler, khối BuffMan sẽ tiến hành công việc tháo gói tin ra khỏi bộ nhớ theo nhóm tín hiệu Outputs, từ đó hoàn tất công việc phân luồng dữ liệu cho một gói tin khi đi vào lõi IP.
  • 33. 21 Mô tả tín hiệu Bảng 3.1 mô tả các tín hiệu của lõi IP phân luồng dữ liệu. Bảng 3.1: Bảng mô tả tín hiệu lõi IP Tín hiệu Nguồn Mô tả Clk Clock Tín hiệu Clock Rstn Reset Tín hiệu Reset Input S Luồng dữ liệu vào1 Output M Luồng dữ liệu ra2 Hinf S Các thông số của ngƣời dùng cấu hình cho mỗi hàng đợi và các thông số thống kê đƣợc truyền qua nhóm tín hiệu này. Nhóm tín hiệu DAAxiAcc bao gồm cả đọc và ghi3 Nhóm tín hiệu QMAxiAcc bao gồm cả đọc và ghi4 Nhóm tín hiệu AxiAcc bao gồm cả đọc và ghi5 Nhóm tín hiệu Hinf dabaseaddr[31:0] S Địa chỉ cơ sở của vùng nhớ mà khối DynamicAllocator quản lý databaseaddr[31:0] S Địa chỉ cơ sở của vùng nhớ lƣu dữ liệu của lõi IP qmbaseaddr[31:0] S Địa chỉ cơ sở của vùng nhớ mà khối QueueManagement quản lý coeffdivide[7:0] S Hệ số chia clock cmd[4:0] S Lệnh gửi từ host inqc1[QCT1_WID-1:0] S Thông số đƣợc ghi vào trƣờng thông tin thứ nhất của hàng đợi 1 Theo bus AXIS Stream đƣợc mô tả ở phụ lục 2 Theo bus AXIS Stream đƣợc mô tả ở phụ lục 3 Nhóm tín hiệu AxiAcessor cho đọc và ghi bao gồm Data,Cmd,Sts đã đƣợc mô tả ở bảng 3.5 4 Nhóm tín hiệu AxiAcessor cho đọc và ghi bao gồm Data,Cmd,Sts đã đƣợc mô tả ở bảng 3.5 5 Nhóm tín hiệu AxiAcessor cho đọc và ghi bao gồm Data,Cmd,Sts đã đƣợc mô tả ở bảng 3.5
  • 34. 22 Inqc2[QCT1_WID-1:0] S Thông số đƣợc ghi vào trƣờng thông tin thứ 2 của hàng đợi length[LENGTH-1:0] S Độ rộng nội dung đƣợc phép ghi vào ô nhớ qid[QID_WIDTH-1:0] S Chỉ số hàng đợi retcode M Cờ trạng thái trả về khi nhận đƣợc lệnh cấu hình từ Host bytecount[63:0] M Số byte dữ liệu ra khỏi lõi IP pktcount[63:0] M Số gói dữ liệu ra khỏi lõi IP handshake signal S Nhóm tín hiệu bắt tay6 3.3. Thiết kế khối quản lý bộ đệm (Buffer Management) 3.3.1. Chức năng Hình 3.2: Sơ đồ kết nối khối Quản lý Bộ đệm Khối Quản lý bộ đệm thực hiện chức năng ghi dữ liệu vào và đọc dữ liệu ra trong bộ nhớ, quá trình ghi đọc đƣợc thực hiện bởi khối Enqueue và Dequeue tƣơng ứng. Bên cạnh đó, có khối QueueMan sẽ quản lý các hàng đợi và các cell, cấp phát các 6 Theo chuẩn bus AXIS Handshake đã đƣợc mô tả ở phụ lục.
  • 35. 23 vị trí nhớ cho các gói tin đủ điều kiện đi vào. Việc phân loại các gói tin đi vào các hàng đợi tƣơng ứng cũng đƣợc thực hiện trong khối này. 3.3.2. Sơ đồ kết nối Hình 3.2 mô tả sự kết nối giữa các khối con của khối Quản lý bộ đệm. Trong đó:  Khối Enq (Enqueue) : có chức năng phân loại gói tin đầu vào theo phƣơng pháp phân loại kết hợp hành vi, thực hiện yêu cầu bộ nhớ đến khối quản lý hàng đợi, đồng thời ghi dữ liệu của gói tin vào bộ nhớ theo đơn vị là từng cell nếu gói tin hợp lệ. 7  Khối Deq (Dequeue) : có chức năng nhận lệnh tháo hoặc hủy bỏ gói tin từ bộ lập lịch, giao tiếp với khối truy xuất bộ nhớ để đọc gói tin ra theo từng cell và phân xử đƣa đến ngõ ra mong muốn. 8  Khối QMan (Queue Management) : có chức năng quản lý các hàng đợi và các cell. Mỗi hàng đợi đƣợc quản lý bởi cấu trúc danh sách liên kết, ngoài ra còn có các con trỏ đầu và cuối giúp thuận tiện trong việc cấp phát và tháo bỏ một cell, bên cạnh đó hai con trỏ này còn hỗ trợ việc liên kết các hàng đợi trong danh sách ActiveList của bộ lập lịch. 9  Khối Memory Accessor: thực hiện quá trình truy xuất bộ nhớ.10  Các khối QM_RRCmd, Deq_RRCmd: có chức năng phân xử các lệnh (command) đầu vào theo thuật toán round robin.11 3.3.3. Mô tả tín hiệu Bảng 3.2 mô tả các tín hiệu của khối Quản lý Bộ đệm. Bảng 3.1: Bảng mô tả tín hiệu lõi IP Tín hiệu Nguồn Mô tả Clk Clock Tín hiệu Clock Rstn Reset Tín hiệu Reset Input S Luồng dữ liệu vào12 ContextIn S Các thông số của gói tin vào 7 Khối Enqueueđƣợc trình bày chi tiết ở mục 3.4. 8 Khối Dequeueđƣợc trình bày chi tiết ở mục 3.5. 9 Khối QueueManagementđƣợc trình bày chi tiết ở mục 3.7. 10 Khối Memory Accessorđƣợc trình bày chi tiết ở mục 3.6. 11 Khối Round robin commandđƣợc trình bày chi tiết ở phần phụ lục. 12 Theo bus AXIS Stream đƣợc mô tả ở phụ lục
  • 36. 24 QMCmd S Các lệnh đƣợc gửi tới khối Quản lý hàng đợi để yêu cầu các thông tin về hàng đợi hoặc các thông số của gói tin trong hàng đợi Ctrl S Các thông số của ngƣời dùng cấu hình cho mỗi hàng đợi đƣợc gán thông qua nhóm tín hiệu này Error M Thông báo cho host biết đƣợc quá trình xử lý gói tin khi lƣu vào hoặc tháo ra bị lỗi EnqSts M Thông báo quá trình ghi xong một gói tin vào bộ nhớ tới khối lập lịch (Scheduler) để khối lập lịch tháo gói tin ra đúng mong muốn 13 ContextOut M Các thông số về gói tin không thay đổi trong quá trình tháo dữ liệu (đề phòng trƣờng hợp tháo bị lỗi làm các thông số bị ảnh hƣởng) Outputs M Luồng dữ liệu đi ra.14 Nhóm tín hiệu DAAxiAcc bao gồm cả đọc và ghi15 Nhóm tín hiệu QMAxiAcc bao gồm cả đọc và ghi16 Nhóm tín hiệu AxiAcc bao gồm cả đọc và ghi17 3.4. Thiết kế khối xử lý ghi gói tin vào hàng đợi (Enqueue) 3.4.1. Chức năng Khối Enqueue thực hiện chức năng phân loại các luồng dữ liệu đầu vào dựa trên phân loại kết hợp hành vi BA, cụ thể là trƣờng IP Precedence trong phần header của gói tin IPv4. Sau đó, lƣu trữ chúng vào bộ nhớ theo các hàng đợi tƣơng ứng, mỗi lần lƣu theo đơn vị là từng cell. 13 Nhóm tín hiệu EnqSts đã đƣợc mô tả ở Bảng 3.3 14 Theo chuẩn bus AXIS Streamđã đƣợc mô tả ở phụ lục. 15 Nhóm tín hiệu AxiAcessor cho đọc và ghi bao gồm Data,Cmd,Sts đã đƣợc mô tả ở bảng 3.5 16 Nhóm tín hiệu AxiAcessor cho đọc và ghi bao gồm Data,Cmd,Sts đã đƣợc mô tả ở bảng 3.5 17 Nhóm tín hiệu AxiAcessor cho đọc và ghi bao gồm Data,Cmd,Sts đã đƣợc mô tả ở bảng 3.5
  • 37. 25 3.4.2. Mô tả tín hiệu Bảng 3.3 mô tả các tín hiệu của Khối Enqueue. Trong bảng có sử dụng các thông số parameter đƣợc định nghĩa nhƣ sau: QID_WIDTH Độ rộng của chỉ số hàng đợi CELL_ID_WIDTH Độ rộng của chỉ số cell FCT_WIDTH Độ rộng các thông số tùy biến đầu gói tin LCT_WIDTH Độ rộng các thông số tùy biến cuối gói tin QCT1_WIDTH Độ rộng của trƣờng thông tin thứ nhất của hàng đợi QCT2_WIDTH Độ rộng của trƣờng thông tin thứ hai của hàng đợi CCT_WIDTH Độ rộng của trƣờng thông tin của gói tin đƣợc lƣu trong cell đầu tiên CELL_SIZE_WIDTH Độ rộng của một cell lƣu dữ liệu (= 2𝐶𝐸𝐿𝐿_𝑆𝐼𝑍𝐸_𝑊𝐼𝐷𝑇𝐻 (𝑏𝑦𝑡𝑒𝑠)) CT_WIDTH Độ rộng của các thông số của gói tin đƣợc gửi tới module lập lịch Bảng 3.3: Bảng mô tả tín hiệu Khối Enqueue Tín hiệu Nguồn Mô tả Clk Clock Tín hiệu Clock Rstn Reset Tín hiệu Reset ContextIn S Các thông số của gói tin vào EnqIn S Luồng dữ liệu đi vào.18 QM M Yêu cầu cellid tới khối quản lý hàng đợi để lƣu dữ liệu của gói tin vào cellid đó MemData M Dữ liệu đƣợc gửi tới khối Memory Acessor để ghi vào RAM MemCmd M Yêu cầu xác nhận việc ghi đƣợc gửi tới 18 Theo bus AXIS Streamđã đƣợc mô tả ở phụ lục.
  • 38. 26 khối Memory Acessor để ghi dữ liệu vào Random Access Memory (RAM) MemSts S Trạng thái của quá trình ghi dữ liệu vào bộ nhớ EnqSts M Thông báo quá trình ghi xong một gói tin vào bộ nhớ tới khối lập lịch (Scheduler) để khối lập lịch tháo gói tin ra đúng mong muốn Nhóm tín hiệu ContextIn qid[QID_WIDTH-1:0] S Chỉ số hàng đợi của gói tin vào pktlen[15:0] S Chiều dài của gói tin vào (bytes) firstcontext [FCT_WIDTH- 1:0] S Các thông số tùy biến đầu gói tin ứng với từng khối sử dụng module này lastcontext [LCT_WIDTH- 1:0] S Các thông số tùy biến cuối gói tin ứng với từng khối sử dụng module này physicalportin[1:0] S Cổng vật lý hiện tại của gói tin đi vào totallen[15:0] S Chiều dài tổng cộng của gói tin vào trong trƣờng hợp bị chia nhỏ (bytes) islastcell S Cho biết gói tin vào có phải là gói tin cuối cùng trong các gói bị chia nhỏ Nhóm tín hiệu EnqSts status[2:0] S Trạng thái của gói tin sau khi lƣu vào bộ nhớ  0 = Thành công.  1 = Lỗi trong quá trình yêu cầu cấp phát cell đầu tiên của tuser.  2 = Lỗi trong quá trình yêu cầu cấp phát các cell khác của tuser.  3 = Lỗi trong quá trình ghi tuser.  4 = Lỗi trong quá trình yêu cầu cấp phát các cell của tdata.  5 = Lỗi trong quá trình ghi tdata
  • 39. 27 context [CT_WIDTH-1:0] S Các thông số của gói tin đƣợc gửi tới module lập lịch qid[QID_WIDTH-1:0] S Chỉ số hàng đợi của gói tin vào handshake signal S Nhóm tín hiệu bắt tay theo bus AXIS Handshake19 3.4.3. Máy trạng thái Hình 3.3: Máy trạng thái của Khối Enqueue Các trạng thái của máy trạng thái Khối Enqueue biểu diễn trong hình 3.3: RESET Trạng thái khởi tạo ban đầu. WAIT_FIRST Trạng thái chờ gói tin bắt đầu đi vào Khối Enqueue. WRITE_TUSER* Trạng thái thực hiện quá trình ghi dữ liệu TUSER vào bộ nhớ. WRITE_TDATA* Trạng thái thực hiện quá trình ghi dữ liệu TDATA vào bộ nhớ. 19 Bus đã đƣợc mô tả ở phụ lục.
  • 40. 28 WRITE_SUCCES_CONTEXT Trạng thái ghi các thông số về gói tin đã lƣu thành công vào cellcontext của cell đầu tiên của gói tin. SEND_STATUS Trạng thái gửi tín hiệu cho khối lập lịch (Scheduler) biết là đã hoàn thành xong việc ghi gói tin vào bộ nhớ. Các trạng thái này đều có chung quá trình ghi phần thông tin (tuser) trƣớc và phần dữ liệu (tdata) sau. Quá trình ghi dữ liệu (𝐖𝐑𝐈𝐓𝐄_𝐓𝐃𝐀𝐓𝐀∗ ) có hai nhiệm vụ chính, đó là yêu cầu địa chỉ cell (cellid) cần ghi tới khối QueueMan và sử dụng địa chỉ cell đó để gửi tới khối truy xuất bộ nhớ MemAcc với mục đích ghi dữ liệu vào bộ nhớ. Bằng cách sử dụng kiến trúc pipeline giữa hai công việc này giúp làm tăng tốc độ xử lý cho lõi IP. 3.5. Thiết kế khối xử lý đọc gói tin từ hàng đợi ra (Dequeue) 3.5.1. Chức năng Khối Dequeue thực hiện chức năng tháo dữ liệu đã đƣợc lƣu trong bộ nhớ, thứ tự tháo gói đƣợc quy định bởi bộ lập lịch Scheduler. Đặc điểm nổi trội của khối Dequeue này là có khả năng tháo dữ liệu dựa trên chỉ số hàng đợi (qid) hoặc chỉ số cell(cellid) và mỗi lần tháo theo đơn vị là từng cell. 3.5.2. Mô tả tín hiệu Bảng 3.4 mô tả các tín hiệu của module Dequeue. Trong bảng có sử dụng các thông số parameter đƣợc định nghĩa nhƣ sau: QID_WIDTH Độ rộng của chỉ số hàng đợi CID_WIDTH Độ rộng của chỉ số cell Bảng 3.4: Bảng mô tả tín hiệu module Dequeue Tín hiệu Nguồn Mô tả Clk Nguồn clock Tín hiệu Clock Rstn Nguồn reset Tín hiệu Reset CMD S Yêu cầu tháo các gói tin và các thông số phục vụ cho việc tháo QM M Yêu cầu cellid tới khối quản lý hàng
  • 41. 29 đợi để tháo dữ liệu của gói tin ra ở trong cellid đó MemData M Dữ liệu đƣợc đọc ra từ bộ nhớ thông qua khối MemoryAcessor.20 MemCmd M Yêu cầu xác nhận việc đọc đƣợc gửi tới khối MemoryAcessor để tháo dữ liệu ra MemSts S Trạng thái của quá trình đọc dữ liệu từ bộ nhớ Outputs M Gói tin đi ra khối Dequeue theo bus 21 ContextOut M Các thông số về gói tin không thay đổi trong quá trình tháo dữ liệu (đề phòng trƣờng hợp tháo bị lỗi làm các thông số bị ảnh hƣởng) Stats M Thống kê của ngõ ra theo 2 thông số: số gói tin ra và số dữ liệu ra, trong đó số dữ liệu ra tính theo bytes. Nhóm tín hiệu CMD qid[QID_WIDTH-1:0] S Chỉ số hàng đợi của dữ liệu tháo ra cellid [CID_WIDTH-1:0] S Chỉ số của cell đầu tiên, bắt đầu cho quá trình tháo dữ liệu pktlen[15:0] S Chiều dài của lƣợng dữ liệu muốn tháo output[1:0] S Lựa chọn ngõ ra cho gói tin tlastType S Tín hiệu này sử dụng cho các cmd: 0,1,2,3  0 = tlast đƣợc bật lên vào cuối gói tin.  1 = tlast đƣợc bật lên cuối mỗi cell đƣợc tháo ra cmd[2:0] S Yêu cầu tháo gói tin từ khối lập lịch 20 MemData, MemCmd, MemSts đƣợc mô tả theo bus RdData, RdCmd, RdSts tại bảng 3.5 21 Bus AXIS Stream đã đƣợc mô tả ở phụ lục.
  • 42. 30 (Scheduler)  0 = Tháo dữ liệu bằng chỉ số hàng đợi (qid) và sau đó xóa khỏi bộ nhớ.  1 = Tháo dữ liệu bằng chỉ số hàng đợi (qid) và vẫn giữ nguyên dữ liệu đó trong bộ nhớ.  2 = Tháo gói tin bằng chỉ số cell (cellid) và sau đó xóa khỏi bộ nhớ.  3 = Tháo dữ liệu bằng chỉ số cell (cellid) và vẫn giữ nguyên dữ liệu đó trong bộ nhớ.  4 = Tháo và bỏ dữ liệu bằng chỉ số hàng đợi (qid) và sau đó xóa khỏi bộ nhớ.  5 = Tháo và bỏ dữ liệu bằng chỉ số cell và sau đó xóa khỏi bộ nhớ. setLast S chỉ ra rằng gói tin đƣợc tháo ra có phải là gói tin cuối cùng trong trƣờng hợp bị phân mảnh hay không  0 = chƣa phải là cuối cùng.  1 = là gói tin cuối cùng. handshake signal S Nhóm tín hiệu bắt tay theo bus AXIS Handshake 22 22 Bus AXI Handshake đã đƣợc mô tả ở phụ lục.
  • 43. 31 3.5.3. Máy trạng thái Hình 3.4: FSM của khối Dequeue Máy trạng thái(FSM) của khối Dequeue biểu diễn ở hình 3.4, trong đó các trạng thái của Dequeue FSM đƣợc mô tả nhƣ sau: RESET Trạng thái khởi tạo ban đầu. WAIT_CMD Trạng thái chờ tín hiệu yêu cầu tháo dữ liệu từ khối lập lịch (Scheduler). QID_READ_PROCESSING* Trạng thái thực hiện quá trình đọc dữ liệu ra từ bộ nhớ dựa vào QID (trƣờng hợp 𝑐𝑚𝑑 = 0 hoặc 𝑐𝑚𝑑 = 1). CELLID_READ_PROCESSING* Trạng thái thực hiện quá trình đọc dữ liệu ra từ bộ nhớ dựa vào CELLID đầu tiên (trƣờng hợp 𝑐𝑚𝑑 = 2 hoặc 𝑐𝑚𝑑 = 3). DROP_BY_QID* Trạng thái thực hiện quá trình loại bỏ dữ liệu trong bộ nhớ dựa vào QID (trƣờng hợp 𝑐𝑚𝑑 = 4). DROP_BY_CELLID*
  • 44. 32 Trạng thái thực hiện quá trình loại bỏ dữ liệu trong bộ nhớ dựa vào CELLID (trƣờng hợp 𝑐𝑚𝑑 = 5). Tƣơng tự nhƣ khối Enqueue, khối Dequeue cũng sử dụng kiến trúc pipeline giữa các công việc yêu cầu địa chỉ cell tới khối QueueMan, gửi địa chỉ cell cần tháo tới khối truy xuất bộ nhớ QueueMan và gửi yêu cầu xóa địa chỉ cell ra khỏi danh sách mà QueueMan quản lý giúp làm tăng tốc độ xử lý cho lõi IP. 3.6. Thiết kế khối hỗ trợ giao tiếp bộ nhớ (Memory Accessor) 3.6.1. Chức năng Khối Memory Accessor thực hiện chức năng hỗ trợ việc ghi đọc vào ô nhớ, truy xuất cả bộ nhớ tốc độ cao và bộ nhớ tốc độ thấp. 3.6.2. Mô tả tín hiệu Bảng 3.5 mô tả các tín hiệu của Khối Memory Accessor. Trong bảng có sử dụng các thông số parameter đƣợc định nghĩa nhƣ sau: CID _WIDTH Độ rộng của chỉ số cell CELL_SIZE_WIDTH Độ rộng của một cell lƣu dữ liệu (2𝐶𝐸𝐿𝐿_𝑆𝐼𝑍𝐸_𝑊𝐼𝐷𝑇𝐻 (𝑏𝑦𝑡𝑒𝑠)). CACHED_SIZE_WIDTH Số lƣợng ô nhớ lƣu dữ liệu quản lý ở bộ nhớ tốc độ cao (= 2𝐶𝐴𝐶𝐻𝐸𝐷_𝑆𝐼𝑍𝐸_𝑊𝐼𝐷𝑇𝐻 ). AXI_DATA_WIDTH Độ rộng dữ liệu của bus AXI. AXI_ADDR_WIDTH Độ rộng địa chỉ của bus AXI. Bảng 3.4: Bảng mô tả tín hiệu module Dequeue Tín hiệu Nguồn Mô tả Clk Clock Tín hiệu Clock Rstn Reset Tín hiệu Reset RdCmd S Nhóm lệnh đọc WrCmd S Nhóm lệnh ghi RdSts M Nhóm trạng thái đọc WrSts M Nhóm trạng thái ghi
  • 45. 33 RdData M Nhóm dữ liệu đọc theo chuẩn bus AXIS Stream23 WrData S Nhóm dữ liệu ghi BaseAddr S Địa chỉ cơ sở của vùng nhớ RdAxiAccCmd M Nhóm lệnh đọc giao tiếp với khối AXI Accessor. WrAxiAccCmd M Nhóm lệnh ghi giao tiếp với khối AXI Accessor. RdAxiAccSts M Nhóm trạng thái đọc nhận từ khối AXI Accessor. WrAxiAccSts M Nhóm trạng thái ghi nhận từ khối AXI Accessor. RdAxiAccData M Nhóm dữ liệu đọc theo chuẩn bus AXI Stream. WrAxiAccData S Nhóm dữ liệu ghi theo chuẩn bus AXI Stream. Nhóm tín hiệu RdCmd,WrCmd handshake signal S Nhóm tín hiệu bắt tay theo bus AXISHandshake.24 cellid [CID_WIDTH-1:0] S Chỉ số của cell để yêu cầu đọc/ghi len[CELL_SIZE_WIDTH:0] S Độ dài dữ liệu đƣợc đọc/ghi ở bộ nhớ Nhóm tín hiệu RdSts,WrSts handshake signal S Nhóm tín hiệu bắt tay theo bus AXISHandshake. status[7:0] M Trạng thái của quá trình đọc/ghi ở bộ nhớ.  0x80: Quá trình ghi/đọc thành công. 23 Bus AXI Stream đã đƣợc mô tả ở phụ lục. 24 Bus AXIS Handshake đã đƣợc mô tả ở phụ lục.
  • 46. 34  Các trƣờng hợp còn lại: Quá trìnhghi/đọc bị lỗi. Nhóm tín hiệu RdAxiAccCmd,WrAxiAccCmd handshake signal S Nhóm tín hiệu bắt tay theo bus AXIS Handshake tdata [AXI_DATA_WIDTH+22:0] M/S Tổ hợp các lệnh đầu vào, bao gồm:  Địa chỉ gốc  Địa chỉ đọc/ghi  Chiều dài cần đọc/ghi Nhóm tín hiệu RdAxiAccSts,WrAxiAccSts handshake signal S Nhóm tín hiệu bắt tay theo bus AXISHandshake status[7:0] S Trạng thái của quá trình đọc/ghi ở bộ nhớ.  0x80: Quá trình ghi/đọc thành công.  Các trƣờng hợp còn lại: Quá trìnhghi/đọc bị lỗi. 3.6.3. Máy trạng thái Khối Memory Accessor sử dụng 2 máy trạng thái rd_state và wr_state phục vụ cho quá trình đọc và ghi tƣơng ứng. Mô tả các trạng thái của wr_state FSM đƣợc biểu diễn trong hình 3.5: WR_RESET Trạng thái khởi tạo ban đầu. WR_WAIT_CMD Trạng thái chờ lệnh ghi đƣợc gửi tới. Nếu địa chỉ ghi nhỏ hơn thông số 2𝐶𝐴𝐶𝐻𝐸𝐷_𝑆𝐼𝑍𝐸_𝑊𝐼𝐷𝑇𝐻 thì dữ liệu sẽ đƣợc lƣu trong cache, bộ nhớ tốc độ cao, ngƣợc lại, dữ liệu sẽ đƣợc lƣu trong bộ nhớ tốc độ thấp. WR_INTERNAL_WRITE Trạng thái ghi dữ liệu vào bộ nhớ tốc độ cao. WR_INTERNAL_SEND_STATUS Thông báo trạng thái của quá trình ghi dữ liệu vào bộ nhớ tốc độ cao.
  • 47. 35 WR_EXTERNAL_WRITE Trạng thái ghi dữ liệu vào bộ nhớ tốc độ thấp. WR_EXTERNAL_SEND_STATUS Trạng thái thông báo trạng thái của quá trình ghi dữ liệu vào bộ nhớ tốc độ thấp. Hình 3.5: Máy trạng thái wr_state Mô tả các trạng thái của rd_state FSM đƣợc biểu diễn trong hình 3.6: RD_RESET Trạng thái khởi tạo ban đầu. RD_WAIT_CMD Trạng thái chờ lệnh đọc đƣợc gửi tới. Nếu địa chỉ đọc nhỏ hơn thông số 2𝐶𝐴𝐶𝐻𝐸𝐷_𝑆𝐼𝑍𝐸_𝑊𝐼𝐷𝑇𝐻 thì sẽ thực hiện việc đọc dữ liệu trong cache, bộ nhớ tốc độ cao, ngƣợc lại sẽ truy cập bộ nhớ tốc độ thấp để đọc dữ liệu. RD_INTERNAL_FIRST_READ Trạng thái đọc dữ liệu đầu tiên trong bộ nhớ tốc độ cao. RD_INTERNAL_READ Trạng thái đọc các dữ liệu tiếp theo trong bộ nhớ tốc độ cao. RD_INTERNAL_SEND_STATUS Trạng thái thông báo trạng thái của quá trình đọc dữ liệu từ bộ nhớ tốc độ cao. RD_EXTERNAL_READ
  • 48. 36 Trạng thái đọc dữ liệu từ bộ nhớ tốc độ thấp. RD_EXTERNAL_SEND_STATUS Trạng thái thông báo trạng thái quá trình đọc dữ liệu từ bộ nhớ tốc độ thấp. Hình 3.6: Máy trạng thái rd_state 3.7. Thiết kế khối quản lý hàng đợi (Queue Management) 3.7.1. Chức năng Khối này cung cấp một giao diện lệnh dùng để quản lý hàng đợi các gói tin và các cell. Hình 3.8 là giao diện bus vào ra và các tham số mặc định của module QueueManagement. Tập lệnh đƣợc module này hỗ trợ bao gồm các lệnh liên quan đến gói tin và các lệnh liên quan đến cell. Các lệnh liên quan đến gói tin đƣợc mô tả trong bảng 3.6. Để quản lý các hàng đợi một cách hiệu quả, khối Queue Management xây dựng một cấu trúc dữ liệu [3] nhƣ hình 3.7. Trong đó khối Queue Management sẽ sử dụng danh sách liên kết để quản lý địa chỉ các cell của các gói tin trong cùng một hàng đợi, nhiệm vụ này do khối con Dynamic Allocator đảm nhận (chi tiết sẽ đƣợc trình bày ở mục 3.8). Nhiệm vụ chính của khối Queue Management sẽ quản lý các con trỏ đầu, con trỏ cuối, trạng thái của hàng đợi và các thông tin riêng để hỗ trợ cho khối lập lịch.
  • 49. 37 Hình 3.7: Cấu trúc dữ liệu quản lý hàng đợi Bảng 3.6: Bảng mô tả lệnh khối QueueManagement Tên lệnh Mã lệnh Mô tả ACTIVE 0 Khởi động khối QueueManagement DEACTIVE 1 Ngắt hoạt động QueueManagement ENQUEUE 11 Thêm một gói tin vào hàng đợi DEQUEUE 12 Lấy ra một gói tin từ hàng đợi GET_QCONT1 13 Đọc thông tin liên quan đến hàng đợi GET_QCONT2 14 Đọc thông tin liên quan đến hàng đợi SET_QCONT1 15 Ghi thông tin liên quan đến hàng đợi SET_QCONT2 16 Ghi thông tin liên quan đến hàng đợi GET_CCONT_BY_QID 17 Đọc thông tin của cell ở đầu hàng đợi EMPTY_QUEUE 18 Làm rỗng hàng đợi MERGE_QUEUE 19 Nối hai hàng đợi SET_HEAD_TAIL 20 Chỉ định vị trí đầu và cuối hàng đợi GET_EMPTY 21 Xác định hàng đợi rỗng hay không GET_HEAD_TAIL 22 Đọc ra vị trí đầu và cuối hàng đợi
  • 50. 38 INITIALIZE_QUEUE 23 Khởi tạo một gói tin Các lệnh liên quan đến cell đƣợc mô tả ở bảng 3.9 (ngoại trừ lệnh SET_PAIR_PTRS đƣợc tạo ra bởi khối QueueManagement). 3.7.2. Cấu Trúc Module QueueManagement bao gồm các module con nhƣ minh họa trong hình 3.8. Các module Serializer, MemoryAccessor, Deserializer hỗ trợ việc truy xuất hàng đợi trong bộ nhớ. Module DynamicAllocator giúp quản lý các cell của gói tin. Các gói tin và cell có thể đƣợc lƣu trữ ở BRAM hoặc DRAM phụ thuộc vào các tham số QCACHED_WID và CCACHED_WID tƣơng ứng. Ngoài ra, nó còn cung cấp giao diện RWAXI để giao tiếp với RAM. Hình 3.8: Sơ đồ cấu trúc module QueueManagement 3.7.3. Mô tả tín hiệu Bảng 3.7 mô tả chi tiết các tín hiệu vào ra của module QueueManagement. Trong đó các thông số cấu hình đƣợc định nghĩa nhƣ sau: AXI_ADDR_WIDTH Độ rộng địa chỉ của bus AXI QID_WID Độ rộng trƣờng chỉ số hàng đợi
  • 51. 39 QCONT1_SIZE Độ rộng trƣờng thông tin thứ nhất của hàng đợi (tính theo Byte) QCONT2_SIZE Độ rộng trƣờng thông tin thứ hai của hàng đợi CID_WID Độ rộng trƣờng chỉ số cell CCONT_SIZE Độ rộng trƣờng nội dung cell (tính theo Byte) MAX_CONT_LEN Giá trị lớn nhất trong: QCONT1_SIZE, QCONT2_SIZE, CCONT_SIZE Bảng 3.7: Bảng mô tả tín hiệu module QueueManagement Tín hiệu Nguồn Mô tả clk clock Từ nguồn clock chung rstn reset Reset bất đồng bộ qmbaseaddr [AXI_ADDR_WIDTH-1:0] S Giá trị địa chỉ bắt đầu của phần lƣu trữ hàng đợi trong bộ nhớ dabaseaddr [AXI_ADDR_WIDTH-1:0] S Giá trị địa chỉ bắt đầu của phần lƣu trữ cell trong bộ nhớ QM_AXIAccessor M Bus giao tiếp với bộ nhớ thông qua khối AXI Accessor từ khối QueueManagement, đọc/ghi các thông tin liên quan đến hàng đợi. DA_AXIAccessor M Bus giao tiếp với bộ nhớ thông qua khối AXI Accessor từ khối con DynamicAllocator, đọc/ghi các thông tin liên quan đến cell Nhóm tín hiệu liên quan đến lệnh cmd[4:0] S Mỗi giá trị tƣơng ứng là một lệnh. Xem chi tiết trong phần máy trạng thái. in_qid[QID_WID-1:0] S Chỉ số hàng đợi in_qcontext1 [QCONT1_SIZE*8-1:0] S Trƣờng thông tin thứ nhất của hàng đợi. Bao gồm giá trị các tham số
  • 52. 40 không thay đổi nhiều trong suốt quá trình hoạt động, do ngƣời dùng cấu hình xuống in_qcontext2 [QCONT2_SIZE*8-1:0] S Trƣờng thông tin thứ 2 của hàng đợi. Bao gồm giá trị các tham số thay đổi liên tục trong suốt quá trình hoạt động, đƣợc truy xuất bởi nhiều khối khác nhau. out_qcontext1 [QCONT1_SIZE*8-1:0] M Trƣờng thông tin thứ nhất của hàng đợi. Độ rộng và ý nghĩa tƣơng tự nhƣ tín hiệu in_qcontext1 đã đƣợc mô tả ở trên out_qcontext2 [QCONT2_SIZE*8-1:0] M Trƣờng thông tin thứ 2 của hàng đợi. Độ rộng và ý nghĩa tƣơng tự nhƣ tín hiệu in_qcontext2 đã đƣợc mô tả ở trên in_cid[CID_WID-1:0] S Chỉ số cell đầu vào out_cid[CID_WID-1:0] M Chỉ số cell đầu ra in_ccontext [CCONT_SIZE*8- 1:0] S Thông tin của gói tin và trạng thái ghi gói tin vào bộ nhớ đƣợc đƣa vào để lƣu vào cellcontext của cell đầu tiên của gói tin out_ccontext [CCONT_SIZE*8-1:0] S Dữ liệu đƣợc đọc ra về thông tin của gói tin và trạng thái ghi gói tin vào bộ nhớ từ cellcontext của cell đầu tiên của gói tin. in_nxtptr[CID_WID-1:0] S Chỉ số của cell đƣợc gửi vào ở vị trí “cell tiếp theo” trong danh sách liên kết in_preptr[CID_WID-1:0] S Chỉ số của cell đƣợc gửi vào ở vị trí “cell trƣớc đó” trong danh sách liên kết in_length [LOG2(MAX_CONT_LEN+1)- S Độ dài (theo byte) của dữ liệu
  • 53. 41 1:0] in_headptr[CID_WID-1:0] S Chỉ số cell ở vị trí đầu hàng đợi in_tailptr [CID_WID-1:0] S Chỉ số cell ở vị trí cuối hàng đợi out_headptr[CID_WID-1:0] M Trả ra giá trị chỉ số cell ở vị trí đầu của hàng đợi out_tailptr[CID_WID-1:0] S Trả ra giá trị chỉ số cell ở vị trí cuối cùng của hàng đợi tvalid S Tín hiệu này bật lên 1 cho biết lệnh và các thông tin đi kèm là hợp lệ tready M Tín hiệu này bật lên 1 cho biết đã xử lý xong lệnh và kết quả trả về là có giá trị retcode M Tín hiệu này cho biết lệnh đƣa vào đƣợc thực hiện thành công hay không. 3.7.4. Máy Trạng Thái Hình 3.9: Máy trạng thái module QueueManagement Chức năng của module này đƣợc bảo đảm nhờ các máy trạng thái. Các trạng thái và điều kiện nhảy của máy trạng thái chính nhƣ hình 3.9. Trong đó: RESET Trạng thái khởi tạo ban đầu.
  • 54. 42 DEACTIVE Trạng thái này chờ và gửi lệnh ACTIVE đến module DynamicAllocator. Sau khi có hồi đáp từ module DynamicAllocator, máy trạng thái này sẽ kết thúc và trở lại máy trạng thái chính nhƣ hình 3.10. Hình 3.10: Máy trạng thái con của DEACTIVE ACTIVE Các lệnh đƣợc nhận và thực hiện ở trạng thái này đƣợc thể hiện nhƣ trong hình 3.11. Mỗi lệnh có một máy trạng thái riêng đƣợc trình bày cụ thể trong các mục bên dƣới. Trong đó: WAIT_CMD Trạng thái chờ lệnh để xác định nhảy đến máy trạng thái con nào. ENQUEUE_CMD Trạng thái tƣơng ứng khi nhận lệnh ENQUEUE_CMD. DEQUEUE_CMD Trạng thái tƣơng ứng khi nhận lệnh DEQUEUE_CMD. GET_QCONT1_CMD Trạng thái tƣơng ứng khi nhận lệnh GET_QCONT1_CMD. GET_QCONT2_CMD Trạng thái tƣơng ứng khi nhận lệnh GET_QCONT2_CMD. SET_QCONT1_CMD Trạng thái tƣơng ứng khi nhận lệnh SET_QCONT1_CMD. SET_QCONT2_CMD Trạng thái tƣơng ứng khi nhận lệnh SET_QCONT2_CMD. GET_NXTCELL_AND_FREE_CMD Trạng thái tƣơng ứng khi nhận lệnh GET_NXTCELL_AND_FREE_CMD.
  • 55. 43 XFER_CMD_TO_DALLOCATOR Trạng thái này giúp chuyển lệnh từ ngoài vào module DynamicAllocator. EMPTY_QUEUE_CMD Trạng thái tƣơng ứng khi nhận lệnh EMPTY_QUEUE_CMD Hình 3.11: Máy trạng thái tƣơng ứng lệnh ACTIVE GET_CCONT_BY_QID_CMD Trạng thái tƣơng ứng khi nhận lệnh GET_CCONT_BY_QID_CMD. MERGE_QUEUE_CMD Tải bản FULL (101 trang): https://bit.ly/3FSzkuX Dự phòng: fb.com/TaiHo123doc.net
  • 56. 44 Trạng thái tƣơng ứng khi nhận lệnh MERGE_QUEUE_CMD. SET_HEAD_TAIL_CMD Trạng thái tƣơng ứng khi nhận lệnh SET_HEAD_TAIL_CMD. GET_ENPTY_HEAD_TAIL_CMD Trạng thái tƣơng ứng khi nhận lệnh GET_EMPTY_CMD hoặc GET_HEAD_TAIL_CMD. INITIALIZE_QUEUE_CMD Trạng thái tƣơng ứng khi nhận lệnh INITIALIZE_QUEUE_CMD. 3.8. Thiết kế khối cấp phát bộ nhớ động(Dynamic Allocator) 3.8.1. Chức năng Khối DynamicAllocator có chức năng quản lý và cấp phát ô nhớ thuộc cả 2 bộ nhớ tốc độ cao và tốc độ thấp. Số luợng và độ rộng của các ô nhớ nguời sử dụng có thể cấu hình đƣợc. Khối DynamicAllocator dùng phƣơng pháp danh sách liên kết để quản lý các ô nhớ và hỗ trợ 12 lệnh để cho ngƣời sử dụng có thể truy cập, xử lý với các ô nhớ đã đƣợc cấp phát. Hình 3.12: Tổ chức dữ liệu một ô nhớ của khối DynamicAllocator Trong đó: PrePtrVB: Bit chỉ ra trƣờng PrePtr có hợp lệ hay không PrePtr: Trƣờng lƣu chỉ số ô nhớ liền truớc của ô nhớ hiện tại NextPtrVB: Bit chỉ ra trƣờng NextPtr có hợp lệ hay không NextPtr: Trƣờng lƣu chỉ số ô nhớ liền sau của ô nhớ hiện tại Context: Truờng lƣu nội dung của ô nhớ Bảng 3.8: Bảng mô tả lệnh khối DynamicAllocator Tên lệnh Mã lệnh Mô tả active 0 Lệnh khởi động khối DynamicAllocator deactive 1 Lệnh ngắt hoạt động khối DynamicAllocator newcell 2 Lệnh yêu cầu cấp phát một ô nhớ mới Tải bản FULL (101 trang): https://bit.ly/3FSzkuX Dự phòng: fb.com/TaiHo123doc.net
  • 57. 45 freecell 3 Lệnh giải phóng một ô nhớ setnextptr 4 Lệnh cập nhật chỉ số ô nhớ liền sau getnextptrnofree 5 Lệnh đọc ra chỉ số ô nhớ liền sau và không giải phóng ô nhớ getnextptrfreecell 6 Lệnh đọc ra chỉ số ô nhớ liền sau và giải phóng ô nhớ setpreptr 7 Lệnh cập nhật chỉ số ô nhớ liền truớc getpreptr 8 Lệnh đọc ra chỉ số ô nhớ liền truớc setcontext 9 Lệnh cập nhật nội dung ô nhớ getcontext 10 Lệnh đọc ra nội dung ô nhớ setpairptr 11 Lệnh cập nhật đồng thời chỉ số ô nhớ liền truớc và liền sau 3.8.2. Mô tả tín hiệu Định nghĩa các thông số cấu hình của khối DynamicAllocator CONTEXT_SIZE Độ rộng trƣờng nội dung của ô nhớ HSPEED_SIZE_WIDTH Số lƣợng ô nhớ khối DynamicAllocator quản lý ở bộ nhớ tốc độ cao: 2𝐻𝑆𝑃𝐸𝐸𝐷_𝑆𝐼𝑍𝐸_𝑊𝐼𝐷𝑇𝐻 Bảng 3.9: Mô tả tín hiệu khối DynamicAllocator Tín hiệu Nguồn Mô tả clk Clock Tín hiệu Clock rstn Reset Tín hiệu Reset Nhóm tín hiệu BaseAddr baseaddr[31:0] S Địa chỉ cơ sở của vùng nhớ mà khối DynamicAllocator quản lý Nhóm tín hiệu CMD cmd[3:0] S Giá trị lệnh incellid [CELL_ID_WIDTH- 1:0] S Chỉ số ô nhớ đƣợc truy xuất outcellid [CELL_ID_WIDTH:0] M Chỉ số ô nhớ trả về incontext [CONTEXT_SIZE*8- S Nội dung ghi vào ô nhớ 7740368