TỔNG QUAN
Tình hình nghiên cứu trong và ngoài nước
Một trong những giải thuật phân đoạn được biết đến nhiều nhất là Rabin Chunking Giải thuật này là sự kết hợp giữa giải thuật phân đoạn Basic Sliding Window [15] và hàm băm cuộn Rabin [16] Tương ứng với mỗi vị trí của cửa sổ trượt, hàm băm Rabin sẽ tính toán các byte trong cửa sổ và kết quả sẽ được dùng để so sánh với một giá trị đặt trước để tìm ra điểm cắt của đoạn dữ liệu Việc tính toán các hàm băm này thường tiêu tốn một lượng thời gian đáng kể Do đó, nhiều nghiên cứu đã đề xuất các giải thuật phân đoạn mới không sử dụng hàm băm nhằm giảm thời gian tính toán của CPU
Local Maximum Chunking (LMC) [17] so sánh giá trị của các byte dữ liệu trong một cửa sổ trượt để tìm ra các điểm cắt trong một tệp tin Đây là một cách tiếp cận mới khi sử dụng các toán tử so sánh thay thế các phép toán đại số modulo trong hàm băm Rabin Tuy nhiên, do số lượng toán tử so sánh rất nhiều và liên tục lặp lại mỗi khi cửa sổ trượt dịch chuyển, thời gian tính toán của LMC thậm chí chậm hơn cả Rabin Chunking
Một biến thể khác của LMC là giải thuật Asymmetric Extremum (AE) [12] Giải thuật này sử dụng kết hợp một cửa sổ kích thước cố định và một cái không cố định thay thế cho cửa sổ trượt Nhờ việc không dùng cửa sổ trượt, AE giảm được số lượng phép so sánh và đạt được tốc độ tính toán cao hơn
Giải thuật Rapid Asymmetric Maximum (RAM) [13] ra đời dựa trên nền tảng của giải thuật AE Bằng cách đảo vị trí của các cửa sổ trong giải thuật AE, Widodo và các cộng sự chứng minh được RAM cắt giảm được số phép so sánh dư thừa Hiện nay, RAM đang là một trong những giải thuật phân đoạn nhanh nhất với tốc độ tính toán lên tới 550 MBps
Giải thuật Parity Check of Interval (PCI) [14] công bố trong một nghiên cứu gần đây mặc dù tiếp tục quay lại với cửa sổ trượt nhưng thay đổi việc so sánh byte bằng cách so sánh tổng số bit 1 trong cửa sổ với một ngưỡng giá trị Kết quả thực hiện bằng phần mềm chưa cho thấy cải thiện về tốc độ tính toán do việc đếm số bit 1 trong mỗi byte phải dựa vào bảng tra cứu
Nghiên cứu [9] đưa ra ý tưởng thực hiện phân đoạn song song thông qua hai bước tính toán Đầu tiên, tệp tin được chia thành các tệp nhỏ hơn và được phân đoạn đồng thời Tiếp theo, một số đoạn dữ liệu sẽ được tính toán và sửa lỗi ở bước thứ hai để thu được kết quả chính xác Nghiên cứu [10] và [11] cũng dựa trên mô hình này để phát triển thêm Nghiên cứu [10] đề xuất ý tưởng đánh dấu tất cả các vị trí có thể trở thành điểm cắt trong tầng tính toán thứ nhất nhằm đơn giản hóa và tăng tốc quá trình tính toán thứ hai Nghiên cứu [11] trình bày một hướng tiếp cận khác sử dụng các thiết lập kích thước tối đa và tối thiểu của đoạn dữ liệu để giới hạn số lượng đoạn cần tính toán trong tầng hai.
Nhiệm vụ đề tài
Dưới đây là những nhiệm vụ cần thực hiện trong đề tài này nhằm đạt được mục đích nghiên cứu đã đề ra
Nội dung 1: Tìm hiểu lý thuyết về các giải thuật phân đoạn dữ liệu, các phương pháp phân đoạn song song đã được công bố
Nội dung 2: Đề xuất phương pháp phân đoạn song song phù hợp cho các giải thuật phân đoạn không dùng hàm băm Từ đó, xây dựng thiết kế phần cứng ứng dụng giải pháp được đề ra
Nội dung 3: Đánh giá và bàn luận kết quả nghiên cứu đạt được
Nội dung 4: Kiến nghị những hướng phát triển trong tương lai và kết luận cho nghiên cứu
Chương 3 trong luận văn này sẽ trình bày nội dung 1 Nội dung 2 của nghiên cứu sẽ được thể hiện trong chương 4 Trong chương 5, học viên trình bày nội dung 3 Chương 6 là những bàn luận về hướng phát triển trong tương lai và kết luận như trong nội dung 4 Chương 7 là danh mục các công trình nghiên cứu của học viên liên quan đến đề tài của luận văn Chương 8 là danh mục tài liệu tham khảo Chương 9 là phụ lục, gồm các ghi chú về thuật ngữ sử dụng trong luận văn và các thông tin thêm.
CƠ SỞ LÝ THUYẾT
Lý thuyết về phân đoạn dữ liệu
Các phương pháp chủ yếu trong việc phân chia tệp tin thành nhiều đoạn bao gồm phân đoạn kích thước cố định và phân đoạn kích thước bất định Đối với phân đoạn kích thước cố định, một tệp tin sẽ được chia thành các đoạn dữ liệu bằng nhau về kích thước Cách thức phân đoạn này rất đơn giản và nhanh Tuy nhiên, khi có một lượng byte dữ liệu được thêm vào hay xóa đi khỏi tệp tin ban đầu, toàn bộ các đoạn dữ liệu từ đó về sau sẽ bị thay đổi Đây được gọi là hiện tượng “byte shifting”
Phân đoạn kích thước bất định, hay còn gọi là phân đoạn dựa trên nội dung (Content defined chunking – CDC), là phương pháp phổ biến hơn do sở hữu khả năng chống được hiện tượng byte shifting Dựa vào nội dung của dữ liệu, các giải thuật CDC sẽ chia tệp tin thành nhiều đoạn dữ liệu với kích thước khác nhau Khi nội dung của tệp tin thay đổi, chỉ một số ít đoạn dữ liệu thay đổi về kích thước, tùy thuộc vào số lượng byte được thêm bớt, nên phần lớn các đoạn dữ liệu còn lại không bị ảnh hưởng Do đó mà hiện tượng byte shifting không xảy ra khi thực hiện phân đoạn dựa trên nội dung
Hình 1 minh họa hoạt động của phương pháp phân đoạn kích thước cố định và phân đoạn kích thước bất định Tác động của hiện tượng byte shifting cũng được mô tả trong hình này ứng với mỗi phương pháp phân đoạn
Hình 1 So sánh giữa phân đoạn dữ liệu kích thước cố định và không cố định
Tiêu chí đánh giá giải thuật dữ liệu
Trong công bố [12], Y Zhang cùng các cộng sự đã đưa ra một số tiêu chí quan trọng dùng để đánh giá giải thuật CDC và được sử dụng rộng rãi trong các nghiên cứu về sau [13], [14] Các tiêu chí đánh giá gồm:
• Phụ thuộc vào nội dung dữ liệu: Nhằm hạn chế ảnh hưởng của hiện tượng byte shifting, các giải thuật phân đoạn cần phải quyết định điểm cắt dựa trên nội dung của dữ liệu
• Kích thước của các đoạn dữ liệu có sự chênh lệch nhỏ: Phương sai của kích thước đoạn dữ liệu có ảnh hưởng đáng kể đến hiệu quả của giải thuật khi dùng trong chống lặp dữ liệu Phương sai càng nhỏ thì mức độ hiệu quả của bộ chống trùng lặp dữ liệu càng cao [15]
• Có khả năng phát hiện và loại bỏ những chuỗi dữ liệu entropy thấp: Trong thực tế, các tệp tin có thế chứa các chuỗi byte hay các đoạn dữ liệu liên tục lặp lại Nếu chuỗi dữ liệu entropy thấp tránh được điều kiện cắt của giải thuật, kết quả thu được sẽ là một đoạn dữ liệu rất dài hoặc không tìm thấy điểm cắt Giải thuật CDC được kì vọng đủ khả năng xử lí những chuỗi dữ liệu này
• Tốc độ tính toán cao: Giải thuật CDC cần đơn giản và hạn chế các phép tính chiếm nhiều thời gian tính toán
• Hạn chế việc đặt mức giới hạn lên kích thước đoạn dữ liệu: Kích thước tối thiểu và tối đa thường được dùng để giảm các đoạn dữ liệu có kích thước quá nhỏ hoặc quá lớn Việc áp đặt mức giới hạn như vậy có tác dụng giảm phương sai kích thước đoạn dữ liệu [15], tuy nhiên cũng sẽ tạo ra các đoạn có điểm cắt không phụ thuộc vào nội dung dữ liệu
Các tiêu chí trên dùng để đánh giá giải thuật phân đoạn khi tính toán đơn luồng Trong trường xử lí phân đoạn song song, một tiêu chí nữa cần phải được xem xét
• Đảm bảo tính nhất quán của các đoạn dữ liệu: Kết quả phân đoạn khi tính toán song song phải giống như kết quả khi tính toán tuần tự.
Lý thuyết về các giải thuật phân đoạn dữ liệu không cố định
3.3.1 Giải thuật Asymmetric Extremum (AE)
Như được minh họa trong hình 2, giải thuật AE sử dụng hai cửa sổ: cửa sổ trái kích thước không cố định và cửa sổ phải kích thước cố định Giữa hai cửa sổ tồn tại một byte lẻ được gọi là “extreme-valued byte” Nếu extreme-valued byte lớn hơn tất cả các byte ở cửa sổ trái và không nhỏ hơn các byte của cửa sổ phải, điểm cắt được xác định ở vị trí cuối cùng của cửa sổ phải Extreme-valued byte cũng có có thể là byte với giá trị nhỏ nhất, tuy nhiên nghiên cứu [12] cũng chỉ ra rằng việc lựa chọn extreme-valued byte là byte lớn nhất hay nhỏ nhất không khác biệt đáng kể Các bước tính toán chi tiết cho giải thuật AE được trình trong giải thuật 1
Hình 2 Hoạt động của giải thuật AE
Do extreme-valued byte nằm ở giữa đoạn dữ liệu, giải thuật này kém hiệu quả với byte shifting trong một số trường hợp Khi một byte được thêm vào cửa sổ cố định của một đoạn dữ liệu, nó sẽ thay đổi đoạn dữ liệu đó và đoạn kế tiếp và trong trường hợp xấu nhất, các đoạn dữ liệu tiếp sau cũng bị ảnh hưởng Bù lại, việc extreme-valued byte nằm ở phía bên trái cửa sổ cố định và chỉ cần lớn hơn hoặc bằng các byte trong cửa sổ này cũng có điểm lợi là giúp cho AE có khả năng chống được chuỗi dữ liệu lặp rất tốt
Giải thuật 1: Giải thuật Asymmetric Extremum (AE)
• Kích thước cửa sổ phải: width
• Điểm cắt: cut_point function AE_chunking(file, width) i = 1 while (byte = read_byte(file)) if (byte = max.value) then if (i > width) then cut_point = i return cut_point end if max.value = byte max.position = i else continue end if i = i + 1 end while end function
3.3.3 Giải thuật Parity Check of Interval (PCI)
Giải thuật PCI thiết lập một cửa sổ trượt kích thước cố định W và một giá trị mặc định V làm ngưỡng so sánh Khi dữ liệu đưa vào lấp đầy cửa sổ trượt, nếu số lượng các bit 1 trong cửa sổ không ít hơn mức đặt ra thì điểm cắt được xác định là vị trí cuối cùng của cửa sổ đó Nếu điều kiện tìm điểm cắt không được thỏa mãn, cửa sổ trượt dịch qua vị trí tiếp theo và thực hiện lại việc so sánh tổng các bit 1 với ngưỡng cài đặt trước Hoạt động của giải thuật PCI được thể hiện như trong hình 4 Quá trình tính toán của PCI được mô tả trong giải thuật 3, bao gồm cả hàm đếm số bit 1 trong một byte dữ liệu
Hình 4 Hoạt động của giải thuật PCI
Giải thuật PCI thể hiện khả năng kháng lại hiện tượng byte shifting rất tốt Như thể hiện trong hình 4, nếu có sự thay đổi dữ liệu trong một đoạn thì có khả năng sẽ xuất hiện một điểm cắt mới chia đoạn đó làm đôi nhưng các đoạn khác không bị ảnh hưởng Trong trường hợp xấu nhất là một byte được thêm, xóa hay thay đổi ở trong khung cửa sổ tìm thấy điểm cắt thì chỉ có hai đoạn dữ liệu bị ảnh hưởng PCI cũng có những điểm trừ, ví dụ như mức chênh lệch về kích thước còn lớn do không có cửa sổ cố định đóng vai trò như giới hạn kích thước tối thiểu cho các đoạn dữ liệu Bên cạnh đó, khả năng
11 loại bỏ chuỗi byte lặp cũng là một vấn đề cần lưu tâm Nếu chuỗi byte này có các byte liền kề mà tổng bit 1 không vượt quá mức so sánh được cài đặt, điểm cắt gần như không tìm ra được trừ khi thay đổi cài đặt hoặc chấp nhận một đoạn dữ liệu rất dài
Giải thuật 3: Giải thuật Parity Check of Interval (PCI)
• Kích thước cửa sổ: width
• Ngưỡng so sánh: thres_value
• Điểm cắt: cut_point function PCI_chunking(file, width) i = 1 index = 0 array[] = {-1} while (byte = read_byte(file)) array[index % width +1]= byte if (content(array) >= width) then if (parity_check(array, index, width) >= thres_value) then cut_point = i return cut_point else continue end if end if i = i + 1 end while end function function parity_check(array, index, w) i = index num = 0 parity_of_byte[] = {0,1,1,…,8}; //size: 256 while (i!= index -1) num = num + parity_of_byte[array[i]] i = (i + 1)% w end while return num end function
Phương pháp phân đoạn dữ liệu song song
P-Dedupe là một hệ thống chống trùng lặp dữ liệu song song được giới thiệu bởi Xia và các cộng sự trong nghiên cứu [9] Trong hệ thống này, ý tưởng về bộ phân đoạn dữ liệu song song cũng lần đầu được trình bày và trở thành tiền đề cho sự phát triển của các nghiên cứu sau này
P-Dedupe đề xuất thực hiện phân đoạn đồng thời cho nhiều luồng dữ liệu con hay còn gọi là các “segment” Bước đầu, P-Dedupe chia nhỏ một luồng dữ liệu thành nhiều các segment bằng nhau và sau đó áp dụng giải thuật CDC để phân đoạn song song các segment Do từng segment được tính toán riêng lẻ, một số đoạn sẽ cần thêm giai đoạn chỉnh sửa để thu được kết quả chính xác nhất Cụ thể, điểm kết thúc của một segment cũng được xem như là điểm cắt của một đoạn dữ liệu khi tính toán song song Điều này có nghĩa là đoạn dữ liệu đó không phụ thuộc vào nội dung dữ liệu và kết quả không còn giống như so với khi tính toán tuần tự
Hình 5 trình bày trường hợp có hai segment A và B được phân đoạn song song bởi hệ thống P-Dedupe Sau khi được tính toán đồng thời, segment A và B lần lượt tạo ra các đoạn dữ liệu 𝐴 1 , 𝐴 2 , 𝐴 3 , 𝐴 4 và 𝐵 1 , 𝐵 2 , 𝐵 3 Điểm cắt của đoạn 𝐴 4 không dựa trên nội dung dữ liệu mà được quyết định bởi điểm kết thúc của segment A Điểm cắt thực sự của đoạn này có thể ở trong đoạn 𝐵 1 Do đó, cần thực hiện phân đoạn lại dữ liệu ở trong hai đoạn liên tiếp 𝐴 4 và 𝐵 1 để có kết quả đồng nhất so với khi thực hiện tuần tự giải thuật CDC
Hình 5 Hoạt động phân đoạn song song của P-Dedupe
SS-CDC được trình bày trong nghiên cứu [10] như một cách tiếp cận mới cho phân đoạn dữ liệu song song mà không làm suy giảm khả năng phát hiện trùng lặp của giải thuật CDC Tương tự như P-Dedupe, SS-CDC cũng chia luồng dữ liệu thành các segment trước khi xử lý song song Quá trình phân đoạn của SS-CDC bao gồm hai giai
13 đoạn như thể hiện trong hình 6 Giai đoạn thứ nhất là tính toán tất cả các vị trí có thể trở thành điểm cắt Quá trình này tuy tốn nhiều thời gian nhưng có thể thực hiện đồng thời cho nhiều segment Giai đoạn hai là xác định ranh giới của các đoạn dữ liệu từ những thông tin đã tính ở giai đoạn trước Điều kiện để lựa chọn điểm cắt trong giai đoạn này sẽ phụ thuộc vào các yêu cầu về kích thước tối đa và tối thiểu của giải thuật Quá trình xác định ranh giới của các đoạn dữ liệu chỉ có thể thực hiện một cách tuần tự bởi vì mỗi đoạn dữ liệu phải phụ thuộc vào điểm kết thúc của đoạn trước đó Hậu quả là giai đoạn hai cần tốn nhiều không gian lưu trữ tạm thời để lưu các segment đã được xử lý ở giai đoạn một
Hình 6 Quá trình phân đoạn của phương pháp SS-CDC
Tương tự như P-Dedupe, MUCH cũng chia tệp tin thành các segment và phân đoạn song song cho chúng Kết quả phân đoạn các segment sau đó sẽ được xử lý lại ở tầng tính toán thứ hai để thu được kết quả chính xác Tuy nhiên, MUCH cung cấp một kỹ thuật mới để việc chỉnh sửa các đoạn dữ liệu được hiệu quả với tên gọi là “Dual Mode Chunking”
Trong Dual Mode Chunking, quá trình phân đoạn sẽ hoạt động dưới hai chế độ là chế độ chậm (slow mode) và chế độ tăng tốc (accelerated mode) Các segment sẽ
14 được bắt đầu phân đoạn ở chế độ chậm, sau đó chuyển sang chế độ tăng tốc khi một đoạn dữ liệu được tạo ra thỏa mãn những điều kiện sau:
• Đoạn dữ liệu được phân đoạn ở chế độ hoạt động slow mode
• Kích thước đoạn lớn hơn 𝐶 min và nhỏ hơn hoặc bằng 𝐶 max − 𝐶 min , với 𝐶 min và
𝐶 max lần lượt là kích thước nhỏ nhất và lớn nhất của đoạn dữ liệu
• Nó không phải là đoạn dữ liệu đầu tiên của segment
Hình 7 minh họa hoạt động của Dual Mode Chunking Trong chế độ chậm, các thiết lập giới hạn về kích thước của đoạn dữ liệu không được áp dụng Trong chế độ tăng tốc, giải thuật CDC sẽ áp đặt các ngưỡng trên và dưới cho kích thước các đoạn dữ liệu để đẩy nhanh quá trình phân đoạn
Hình 7 Hoạt động của kỹ thuật Dual Mode Chunking trong bộ phân đoạn MUCH
Các đoạn dữ liệu được tạo ra trong chế độ hoạt động slow mode có thể nhỏ hơn kích thước tối thiểu hoặc lớn hơn kích thước tối đa được thiết lập Các đoạn dữ liệu này cùng với các đoạn dữ liệu cuối cùng của các segment sẽ được xử lý thêm ở tầng tính toán thứ hai Tầng tính toán này thực hiện hai tác vụ Tác vụ thứ nhất là kết nối các đoạn dữ liệu Một đoạn dữ liệu sẽ được ghép với đoạn tiếp theo nếu như nó có kích thước nhỏ hơn mức tối thiểu Tác vụ thứ hai là chia cắt đoạn dữ liệu Nếu một đoạn dữ liệu lớn hơn kích thước tối đa, nó sẽ bị cắt làm hai đoạn sao cho đoạn đầu có kích thước bằng với mức lớn nhất.
Lý thuyết về bộ lọc Bloom Filter
Nhằm hạn chế việc một bảng chỉ mục (Index table) chiếm dụng quá nhiều không gian lưu trữ khi số lượng chỉ mục tăng nhanh, một vector tên là Bloom Filter [17] được sử dụng với mục đích nhanh chóng kiểm tra sự tồn tại của dữ liệu ở trong bảng Cách
15 thức hoạt động của Bloom Filter được thể hiện như trong hình 8 Bộ Bloom Filter là một mảng m bit có giá trị khởi tạo là 0 Dữ liệu đưa vào sẽ được tính bởi k hàm băm lần lượt là ℎ 1 , ℎ 2 , … , ℎ 𝑘 Mỗi hàm sẽ trả về một kết quả khác nhau có giá trị từ 0 đến m-1 Những kết quả này sẽ trỏ tới vị trí tương ứng trong mảng và thay đổi giá trị ở vị trí đó từ 0 sang 1 Khi một dữ liệu được kiểm tra, nếu một trong các vị trí tương ứng với kết quả của k hàm băm là 0 thì dữ liệu này chắc chắn là một dữ liệu mới Ngược lại, nếu tất cả đều có giá trị là 1 thì dữ liệu này có thể đã tồn tại trước đó Nhấn mạnh lại là “có thể đã tồn tại trước đó” vì bản chất Bloom Filter chỉ có thể kiểm tra liệu đây có phải là dữ liệu mới hay không chứ không thể đảm bảo dữ liệu này có bị trùng với một dữ liệu đã lưu Trong trường hợp đó, cần phải đọc từng dữ liệu trong bộ nhớ ra và so sánh với dữ liệu muốn ghi vào thì mới có thể chắc chắn được
Hình 8 Hoạt động của bộ Bloom Filter
Giả sử có n phần tử đã được kiểm tra bởi một bộ Bloom Filter dùng k hàm băm và có kích thước mảng là m bit Xác suất để một bit trong mảng vẫn giữ nguyên giá trị khởi tạo là:
= 𝑒 − 𝑘𝑛 𝑚 Như vậy, xác suất để một phần tử được kết luận nhầm rằng đã bị lặp là:
Qua đây cũng thấy được rằng có 3 tham số sẽ tác động tới hiệu năng của một bộ Bloom Filter Những tham số đó là: số hàm băm k (ảnh hưởng thời gian tính toán), số phần tử trong mảng m (quyết định kích cỡ của Bloom Filter) và tỉ lệ dương tính giả f (tác động tới xác suất lỗi).
NỘI DUNG NGHIÊN CỨU
Đề xuất phương pháp phân đoạn dữ liệu song song
4.1.1 Đánh giá khả năng song song hóa của các giải thuật
Bảng 1 So sánh các giải thuật CDC
Giải thuật phân đoạn dữ liệu
Phân đoạn dựa trên nội dung Có Có Có Độ chênh lệch kích thước Nhỏ Lớn Chênh lệch nhỏ nếu giới hạn kích thước đoạn Lớn Khả năng loại bỏ chuỗi dữ liệu có entropy thấp
Có Có, nếu giới hạn kích thước đoạn Có
Dựa vào những cơ sở lý thuyết đã trình bày trong phần 3 và kết quả thực nghiệm trình bày trong các nghiên cứu [12], [13], [14], bảng 1 trình bày so sánh giữa các giải
17 thuật CDC Qua thực nghiệm, giải thuật RAM và AE luôn thể hiện sự vượt trội về tốc độ tính toán và là những ứng cử viên hàng đầu để nghiên cứu song song hóa
Một bộ phân đoạn dữ liệu song song sẽ bao gồm hai giai đoạn Giai đoạn thứ nhất là chia cắt các segment đồng thời trên các luồng xử lý để tạo ra các đoạn dữ liệu Sau đó, các đoạn dữ liệu tiếp giáp với điểm cắt của các segment sẽ được chỉnh sửa lại bời vì chúng không phụ thuộc vào nội dung dữ liệu Giai đoạn thứ hai sẽ thực hiện tính toán lại cho các đoạn dữ liệu này để thu được kết quả chính xác như khi tính toán tuần tự Tuy nhiên, sau khi điểm cắt thực sự của các đoạn dữ liệu xung quanh ranh giới các segment được tìm thấy, hiện tượng byte shifting có thể xảy ra và ảnh hưởng đến một số đoạn phía sau
Giải thuật AE có lợi thế về phương sai kích thước đoạn dữ liệu nhỏ và tốc độ tính toán nhanh Tuy nhiên, AE không có một giá trị so sánh cố định và tổng kích thước của các khung cửa sổ bao trùm lên toàn bộ đoạn dữ liệu Khi hai đoạn dữ liệu liền kề giữa các segment được tính toán lại, các đoạn dữ liệu phía sau có thể bị ảnh hưởng Hình 9 minh họa một ví dụ cho thấy tác động của hiện byte shifting lên các đoạn dữ liệu trong giải thuật AE Số lượng các đoạn dữ liệu bị ảnh hưởng sau khi thực hiện bước tính toán lại là không giới hạn Điều này đặt ra nghi ngại về việc liệu có phải thực hiện tính toán lại cho tất cả các đoạn dữ liệu trong segment Nếu khối lượng tính toán lại quá nhiều, việc thực hiện phân đoạn đa luồng thành ra lại làm giảm tốc độ giải thuật
Hình 9 Ảnh hưởng của hiện tượng byte shifting với giải thuật AE
Giải thuật RAM cải thiện đáng kể so với AE về mặt tốc độ tính toán Tuy nhiên, giống như AE, RAM cũng không có giá trị so sánh cố định và kích thước hai khung cửa sổ bằng kích thước của cả đoạn dữ liệu Khi xảy ra hiện tượng byte shifting, byte lớn nhất trong khung cửa sổ cố định của đoạn tiếp theo có thể thay đổi, dẫn đến điểm cắt của đoạn này và các đoạn phía sau cũng có thể bị thay đổi theo Trường hợp này được minh họa như trong hình 10
Hình 10 Tác động của hiện tượng byte shifting với giải thuật RAM
Khả năng kháng byte shifting kém của cả hai giải thuật AE và RAM sẽ gây khó khăn khi thực hiện phân đoạn song song, cụ thể là trong giai đoạn chỉnh sửa các đoạn dữ liệu Giả sử có nhiều luồng xử lý cùng thực hiện tính toán lại cho các đoạn dữ liệu tiếp giáp ranh giới các segment Việc tính toán lại trong một luồng xử lý bắt đầu từ đoạn dữ liệu cuối cùng của segment trước đó Nếu đoạn dữ liệu này bị thay đổi do tác động của hiện tượng byte shifting xảy ra trong quá trình chỉnh sửa song song Các kết quả tính toán lại bởi luồng xử lý liền kề coi như bị sai Bởi vì vấn đề này, AE và RAM không phù hợp để xây dựng mô hình phân đoạn song song
Giải thuật PCI xác định điểm cắt bằng cách so sánh tổng bit 1 trong khung cửa sổ trượt với một ngưỡng được cài đặt trước Nhờ vậy mà giải thuật PCI thể hiện khả năng kháng byte shifting tốt hơn Ngoài ra, do sử dụng cơ chế khung cửa sổ trượt, PCI có thể thay thế Rabin Chunking trong nhiều hệ thống phân đoạn song song đã có hoặc dựa vào đó để cải tiến và phát triển thêm
4.1.2 Đề xuất phương pháp phân đoạn dữ liệu song song
Các phương pháp phân đoạn song song hiện tại như SS-CDC hay MUCH có thể ứng dụng cho các giải thuật phân đoạn không sử dụng hàm băm Tuy nhiên, những phương pháp này chưa tối ưu do ban đầu phụ thuộc vào một số đặc điểm của giải thuật Rabin Chunking Cụ thể, MUCH yêu cầu phải có những thiết lập về kích thước đoạn dữ liệu để có thể sử dụng kỹ thuật Dual Mode Chunking Trong khi đó, các giới hạn kích thước đoạn thường được hạn chế trong các giải thuật CDC không dùng hàm băm, như đã trình bày trước đó ở phần 3.3 SS-CDC không bắt buộc phải giới hạn kích thước các đoạn dữ liệu tạo ra Tuy nhiên, phương pháp SS-CDC chỉ thực hiện song song một nửa, cụ thể là quá trình chỉnh sửa các đoạn dữ liệu phải xử lý tuần tự Việc xử lý tuần tự ở giai đoạn tính toán thứ hai như vậy yêu cầu một không gian lưu trữ tạm khá lớn và sẽ không phù hợp để hướng tới thực hiện trên nền tảng FPGA
Nghiên cứu này sẽ đề xuất một phương pháp phân đoạn song song toàn phần Phương pháp đề ra không những không phụ thuộc vào giới hạn kích thước đoạn mà còn phù hợp để thực hiện trên các nền tảng có tài nguyên hạn chế như FPGA Nhìn chung, phương pháp phân đoạn song song được đề xuất cũng bao gồm hai giai đoạn tính toán Giai đoạn một là phân đoạn đồng thời cho các segment Giai đoạn hai là tính toán và chỉnh sửa điểm cắt của các đoạn dữ liệu tiếp giáp ranh giới của segment Giả sử rằng giải thuật CDC sử dụng khung cửa sổ trượt kích thước W Các segment được chia từ cùng một dòng dữ liệu sẽ có W-1 byte chồng lên nhau
Nhằm giảm khối lượng tính toán ở giai đoạn hai, tất cả các điểm cắt tiềm năng sẽ được tính toán và đánh dấu trong giai đoạn một Tuy nhiên, cần phải có một giải pháp khác để xác định điểm cắt trong giai đoạn hai để có thể thực hiện song song trên nhiều luồng xử lý Nguyên nhân SS-CDC chỉ có thể thực hiện tuần tự trong giai đoạn này chính là chỉ tồn tại duy nhất một vị trí đáng tin cậy để bắt đầu Vị trí này cũng chính là vị trí bắt đầu của tệp tin Trong nghiên cứu này, học viên đề xuất một phiên bản sửa đổi của kỹ thuật Dual Mode Chunking nhằm mục đích tìm ra nhiều vị trí tin cậy hơn Qua đó, thực hiện song song hóa giai đoạn tính toán thứ hai
Phiên bản Dual Mode Chunking sửa đổi sẽ không sử dụng các giới hạn về kích thước nữa để phù hợp cho các giải thuật phân đoạn không dùng hàm băm Học viên nhận thấy rằng khoảng cách giữa các điểm cắt tiềm năng có thể dùng để tạo ra những điều kiện chuyển trạng thái hoạt động Bởi vì đoạn dữ liệu không thể nhỏ hơn kích thước của khung cửa sổ trượt, điểm kết thúc của đoạn dữ liệu có thể xác định thông qua khoảng cách giữa các điểm cắt tiềm năng mà không cần biết trước điểm bắt đầu của đoạn đó Hình 11 và 12 minh họa các trường hợp như vậy 𝑃 1 , 𝑃 2 , 𝑃 3 và 𝑃 4 là các điểm cắt tiềm năng Khoảng cách giữa hai điểm cắt tiềm năng liên tiếp được kí hiệu lần lượt là 𝐷 12 , 𝐷 23 và 𝐷 34 Ví dụ trong hình 11 giả thiết rằng 𝐷 12 < 𝑊, 𝐷 23 < 𝑊, 𝐷 34 ≥ 𝑊 và 𝑃 1 là điểm kết thúc của đoạn dữ liệu trước đó Kết quả là 𝑃 3 và 𝑃 4 được chọn trở thành điểm cắt chính thức do 𝐷 12 + 𝐷 23 > 𝑊 và 𝐷 34 ≥ 𝑊 Hình 12 minh họa một trường hợp khác với 𝐷 12 ≥ 𝑊, 𝐷 23 < 𝑊, 𝐷 34 ≥ 𝑊 và cả hai vị trí 𝑃 1 và 𝑃 2 đều là ranh giới của đoạn dữ liệu Bởi vì 𝐷 23 nhỏ hơn kích thước tối thiểu W, 𝑃 4 trở thành điểm kết thúc của đoạn dữ liệu Trong cả hai trường hợp, 𝑃 4 luôn được chọn để trở thành điểm cắt chính thức bất kể trạng thái của 𝑃 3 do 𝐷 34 luôn lớn hơn giới hạn nhỏ nhất của kích thước đoạn dữ liệu
Hình 11 Xác định điểm cắt chính thức với 𝐷 12 < 𝑊, 𝐷 23 < 𝑊, 𝐷 34 ≥ 𝑊 và 𝑃 1 là điểm cắt
Hình 12 Xác định điểm cắt chính thức với 𝐷 12 ≥ 𝑊, 𝐷 23 < 𝑊, 𝐷 34 ≥ 𝑊 và 𝑃 1 , 𝑃 2 là điểm cắt
Dựa vào việc có thể xác định một điểm cắt thông qua khoảng cách giữa các điểm cắt tiềm năng, nghiên cứu này đề xuất phiên bản sửa đổi cho Dual Mode Chunking như sau Quá trình phân đoạn dữ liệu hoạt động dưới hai chế độ gồm chế độ chậm (slow mode) và chế độ nhanh (fast mode) Các segment đầu tiên sẽ được tính toán ở chế độ hoạt động slow mode Ở chế độ này, cửa sổ trượt sẽ quét qua từng byte và tìm ra các điểm cắt tiềm năng cho tới khi tìm thấy một điểm cắt chuyển trạng thái Khi đã chuyển sang hoạt động ở chế độ fast mode, việc thực hiện phân đoạn tương tự như khi tính toán đơn luồng Các điểm cắt tìm thấy trong chế độ fast mode đều là điểm cắt chính thức và không cần thực hiện tính toán lại ở giai đoạn sau Nhờ đó, dữ liệu được phân đoạn nhanh chóng và giảm bớt không gian bộ nhớ đệm cần dùng Điều kiện để một điểm cắt tiềm năng trở thành điểm cắt chuyển trạng thái là:
• Vị trí của điểm cắt tiềm năng không nằm trong khoảng từ W đến 2*(W-1)
• Khoảng cách so với điểm cắt tiềm năng gần nhất tối thiểu bằng kích thước cửa sổ trượt W
Trong giai đoạn chỉnh sửa, các điểm cắt chính thức được xác định dựa trên vị trí của các điểm cắt tiềm năng, sao cho đoạn dữ liệu được tạo ra phải lớn hơn khung cửa sổ trượt Bộ xử lý sẽ lựa chọn điểm cắt cho các dữ liệu được tạo ra ở chế độ slow mode đến khi bắt gặp điểm cắt chuyển trạng thái Khi đó, các dữ liệu nhận được không cần tính toán lại vì chúng đã được tính ở chế độ fast mode trong giai đoạn đầu
Thiết kế phần cứng cho bộ phân đoạn dữ liệu song song
4.2.1 Sơ đồ thiết kế tổng quát
Hình 13 Sơ đồ thiết kế phần cứng của bộ phân đoạn song song
Hình 13 mô tả sơ đồ thiết kế phần cứng cho bộ phân đoạn dữ liệu song song Các segment được đưa vào các luồng xử lý đồng thời Trong mỗi luồng, bộ Chunking Module bắt đầu tìm các điểm cắt tiềm năng ở chế độ slow mode cho tới khi tìm thấy điểm cắt chuyển trạng thái và chuyển sang chế độ fast mode Ở chế độ hoạt động fast mode, bộ Chunking Module thực hiện phân đoạn cho phần còn lại của segment tương tự như giải thuật phân đoạn tuần tự Bởi vì AE và RAM không có một giá trị so sánh cố định, các giải thuật này không thể tính các điểm cắt tiềm năng Do đó, AE và RAM không phù hợp đế áp dụng cho phương pháp phân đoạn được đề xuất trong luận văn này Trong thiết kế phần cứng của nghiên cứu, học viên chọn giải thuật PCI vì đây là một giải thuật đơn giản và dễ dàng chuyển đổi thành phần cứng
Sau tầng phân đoạn đầu tiên, dữ liệu cùng với vị trí điểm cắt được lưu trong hai bộ đệm tương ứng với chế độ hoạt động của bộ Chunking Module Hai bộ đệm được gọi là Slow Mode Buffer và Fast Mode Buffer để phân biệt nội dung được lưu trong chúng Bộ Marshalling Module trước tiên sẽ đọc dữ liệu từ Fast Mode Buffer thuộc cùng luồng xử lý Khi đoạn dữ liệu cuối cùng của một segment được đọc ra, bộ
Marshalling Module tiếp tục đọc Slow Mode Buffer của luồng xử lý liền kề để ghép nối và hoàn tất đoạn dữ liệu đó Marshalling Module tiếp tục đọc dữ liệu từ Slow Mode Buffer và xác định các điểm cắt chính thức từ các điểm cắt tiềm năng cho đến khi gặp một điểm cắt chuyển trạng thái Khi đó, nó sẽ quay trở lại đọc Fast Mode Buffer và lặp lại quá trình này đến khi các bộ nhớ đệm không còn dữ liệu
Trong chế độ slow mode, nếu đã có quá nhiều dữ liệu được lưu tạm mà vẫn chưa tìm ra điểm cắt chuyển trạng thái thì bộ nhớ sẽ bị tràn Khi trường hợp này xảy ra, byte cuối cùng lưu vào bộ nhớ coi như là điểm cắt chuyển trạng thái và chuyển sang hoạt động ở chế độ fast mode
4.2.2 Thiết kế bộ Chunking Module
Hình 14 Phần cứng của bộ Chunking Module Bảng 2 Bảng chân phần cứng của bộ Chunking Module
Tên chân Loại ngõ Độ dài
(bit) Công dụng clk Vào 1 Clock hệ thống rst Vào 1 Reset đồng bộ tích cực cao data_in Vào 8 Byte dữ liệu đưa vào valid_in Vào 1
Tín hiệu xác thực dữ liệu ngõ vào
Dữ liệu được xử lý khi valid_in tích cực cao
24 start_in Vào 1 Tín hiệu thông báo khởi đầu tệp tin end_in Vào 1 Tín hiệu thông báo kết thúc tệp tin slow_mode_buffer_full Vào 1 Tín hiệu báo tràn của Slow Mode
Buffer data_out Ra 8 Byte dữ liệu ngõ ra, sau khi đã được xử lý phân đoạn valid_out Ra 1 Tín hiệu xác thực dữ liệu ngõ ra cut_point Ra 1 Tín hiệu báo vị trí điểm cắt mode Ra 1
Chế độ hoạt động ứng với byte dữ liệu ngõ ra 0 là chế độ slow mode 1 là chế độ fast mode switch Ra 1 Tín hiệu báo thời điểm chuyển chế độ hoạt động
Trong chế độ fast mode, bộ Chunking Module sử dụng giải thuật PCI để phân đoạn cho các segment Các đoạn dữ liệu tạo ra trong chế độ hoạt động này chính là kết quả cuối cùng và không cần thiết phải tính toán lại ở bộ Marshalling Module
Ngược lại, trong chế độ slow mode, giải thuật PCI được dùng để tìm tất cả các điểm cắt tiềm năng Cách sử dụng giải thuật PCI khác nhau trong mỗi chế độ hoạt động dẫn tới nhu cầu phải có một bộ điều khiển để kiểm soát quá trình phân đoạn Như được thể hiện trong hình 15, một bộ Chunking Controller sẽ thu thập thông tin về vị trí bắt đầu, kết thúc của tệp tin và segment cũng như các phát hiện về điểm cắt chuyển trạng thái để điều khiển hoạt động của bộ tính toán PCI Máy trạng thái của bộ Chunking Controller được trình bày trong hình 16
Hình 15 Thiết kế của bộ Chunking Module
Hình 16 Máy trạng thái của bộ Chunking Controller
Theo như mô tả của máy trạng thái trong hình 16, khi bộ Chunking Module bắt đầu phân đoạn segment, nó luôn mặc định hoạt động ở chế độ slow mode Tuy nhiên, với segment đầu tiên của dòng dữ liệu, nó sẽ ngay lập tức chuyển sang chế độ fast mode khi nhận được tín hiệu start_in Đối với các segment còn lại, tín hiệu start_in sẽ không bao giờ được bật và bộ Chunking Module sẽ tính toán ở chế độ slow mode cho tới khi tìm thấy điểm cắt chuyển trạng thái hoặc Slow Mode Buffer bị tràn
26 Ở chế độ fast mode, bộ Chunking Module liên tục kiểm tra tín hiệu kết thúc của một segment hoặc một tệp tin Khi một trong hai tín hiệu này tích cực, bộ Chunking Module sẽ chuyển về chế độ slow mode và sẵn sằng xử lý segment tiếp theo Tín hiệu mode cho biết chế độ hoạt động hiện tại của bộ Chunking Module và được dùng để lựa chọn bộ nhớ đệm Ngoài ra, tín hiệu switch cũng được xuất ra để thông báo cho các mô- đun khác về thời điểm chuyển trạng thái của bộ Chunking Module
Mạch thiết kế cho giải thuật PCI được thể hiện như trong hình 17 Mô-đun tính cho giải thuật PCI sẽ bao gồm hai phần chính là mạch đếm số byte và mạch đếm số bit trong cửa sổ trượt Mạch đếm byte có nhiệm vụ là quan sát và kiểm tra xem cửa sổ trượt đã được lấp đầy dữ liệu hay chưa Tín hiệu báo cửa sổ trượt bị đầy sẽ được dùng trong mạch đếm bit Nếu cửa sổ trượt chưa đầy, mạch đếm bit sẽ cộng tích lũy với số bit 1 của byte mới nhất trong khung cửa sổ Khi dữ liệu lấp đầy cửa sổ trượt, mạch đếm bit cộng số bit 1 của byte dữ liệu ở ngõ vào và trừ đi số bit 1 của byte cũ nhất trong khung cửa sổ
27 Hình 17 Mạch phần cứng cho giải thuật PCI
4.2.3 Thiết kế bộ Marshalling Module
Hình 18 Phần cứng của bộ Marshalling Module Bảng 3 Bảng chân phần cứng của bộ Marshalling Module
Tên chân Loại ngõ Độ dài
(bit) Công dụng clk Vào 1 Clock hệ thống rst Vào 1 Reset đồng bộ tích cực cao sbuf_n_empty Vào 1 Tín hiệu báo Slow Mode Buffer đang có dữ liệu sbuf_req Ra 1 Tín hiệu yêu cầu dữ liệu từ Slow
Mode Buffer sbuf_ack Vào 1 Tín hiệu xác thực dữ liệu đọc ra từ
Slow Mode Buffer sbuf_data [7:0] Vào 8 Dữ liệu đọc từ Slow Mode Buffer sbuf_p_cut_point Vào 1 Vị trí điểm cắt tiềm năng ứng với dữ liệu đọc từ Slow Mode Buffer sbuf_switch Vào 1 Tín hiệu báo kết thúc dữ liệu được xử lý ở chế độ chậm (slow mode)
29 fbuf_n_empty Vào 1 Tín hiệu báo Fast Mode Buffer đang có dữ liệu fbuf_req Ra 1 Tín hiệu yêu cầu dữ liệu từ Fast
Mode Buffer fbuf_ack Vào 1 Tín hiệu xác thực dữ liệu đọc ra từ
Fast Mode Buffer fbuf_data [7:0] Vào 8 Dữ liệu đọc từ Fast Mode Buffer fbuf_cut_point Vào 1 Vị trí điểm cắt chính thức ứng với dữ liệu đọc từ Fast Mode Buffer fbuf_switch Vào 1 Tín hiệu báo kết thúc dữ liệu được xử lý ở chế độ nhanh (fast mode) data_out [7:0] Ra 8 Dữ liệu ngõ ra sau khi hoàn tất quá trình phân đoạn song song cut_point_out Ra 1 Vị trí điểm cắt chính thức tương ứng với dữ liệu ngõ ra valid_out Ra 1 Tín hiệu xác thực dữ liệu ngõ ra
ĐÁNH GIÁ VÀ BÀN LUẬN KẾT QUẢ
Kết quả tổng hợp, mô phỏng và kiểm thử
Quá trình kiểm thử phương pháp phân đoạn song song được đề xuất trong luận văn được thực hiện trên phần mềm với ngôn ngữ C++ Thiết kế phần cứng được mô tả bằng ngôn ngữ Verilog và được mô phỏng với Testbench trên chương trình Modelsim Kết quả tổng hợp mạch được thực hiện với FPGA Cyclone V 5CSXFC6D6F31C6 trên phần mềm Quartus Prime Lite Edition 18.1
5.1.1 Kết quả kiểm thử phương pháp phân đoạn đề xuất
Nghiên cứu mang tính mới khi đề xuất phiên bản sửa đổi của Dual Mode Chunking Do đó, trước khi thực hiện thiết kế trên FPGA, cần kiểm tra lại tính đúng đắn trong việc phân đoạn song song Hình 21 là mô hình tiến hành kiểm tra và so sánh kết quả phân đoạn khi chạy đơn luồng và đa luồng bằng ngôn ngữ phần mềm Tập dữ liệu ban đầu được phân đoạn đơn luồng bằng giải thuật PCI Các đoạn dữ liệu sau đó được tính bởi hàm băm và kết quả sẽ cập nhật vào Bloom Filter Thực hiện tương tự với bộ phân đoạn song song và cập nhật kết quả vào mảng Bloom Filter đã được dùng khi phân đoạn đơn luồng Nếu Bloom Filter phát hiện đoạn dữ liệu mới chứng tỏ có điểm cắt bị xác định sai
Hình 21 Mô hình kiểm thử thiết kế đa luồng
Quá trình kiểm tra được thực hiện bằng phần mềm với ngôn ngữ C++ Hình 22 trình bày kết quả khi thực hiện phân đoạn bằng giải thuật PCI Hình 23 thể hiện kết quả phân đoạn song song bằng phương pháp đề xuất ứng dụng giải thuật PCI Kết quả phân đoạn song song được so sánh với kết quả phân đoạn tuần tự thông qua Bloom Filter Không có đoạn dữ liệu lỗi nào sau khi kiểm ra cho thấy phương pháp đề xuất vẫn đảm bảo được tính nhất quán của các đoạn dữ liệu
32 Hình 22 Kết quả khi phân đoạn tuần tự với giải thuật PCI bằng phần mềm
Hình 23 Kết quả khi phân đoạn song song với giải thuật PCI bằng phần mềm
5.1.2 Kết quả mô phỏng thiết kế phần cứng
Nghiên cứu thực hiện quá trình mô phỏng thiết kế phần cứng tương tự như với phần mềm C++ Sau khi phân đoạn tuần tự với giải thuật PCI và cho ra kết quả như hình 22, nội dung của mảng Bloom Filter sẽ được cập nhật vào Testbench Testbench sẽ truyền tập dữ liệu vào thiết kế phần cứng của bộ phân đoạn song song Kết quả mô phỏng mạch của bộ Chunking Module và bộ Marshalling Module được thể hiện tương ứng trong hình 24 và hình 25
Hình 24 Mô phỏng trên dạng sóng kết quả của bộ Chunking Module
Hình 25 Mô phỏng trên dạng sóng kết quả của bộ Marshalling Module
Kết quả phân đoạn song song ở ngõ ra của thiết kế phần cứng sau đó sẽ được tính toán bởi hàm băm để thu được những định danh duy nhất cho từng đoạn dữ liệu Kết quả tính toán hàm băm được đưa vào bộ Bloom Filter để kiểm tra tính tồn tại của đoạn dữ liệu Nếu kết quả phân đoạn song song không nhất quán với kết quả phân đoạn bằng thiết kế phần mềm, bộ Bloom Filter sẽ phát hiện các đoạn dữ liệu mới được tạo ra Trong quá trình mô phỏng, học viên thực hiện cài đặt tham số kích thước bộ nhớ
FIFO đủ lớn để đảm bảo không có các đoạn dữ liệu mới sinh ra do vấn đề tràn bộ nhớ Nhờ vậy, trường hợp kết quả phân đoạn thiếu nhất quán do bộ nhớ đệm bị tràn được loại bỏ khi mô phỏng hành vi hoạt động của thiết kế phần cứng Ảnh hưởng của kích thước bộ nhớ đệm lên tính nhất quán của kết quả phân đoạn sẽ được đánh giá ở phần sau Kết quả so sánh đoạn dữ liệu được tạo ra bởi thiết kế phần cứng và thiết kế phần mềm được thể hiện trong hình 26
Hình 26 Kết quả mô phỏng khi phân đoạn song song với thiết kế phần cứng
5.1.3 Kết quả tổng hợp mạch
Kết quả tổng hợp Quartus được dùng để đánh giá tốc độ và mức độ tiêu hao tài nguyên của thiết kế phần cứng Hình 27 cho thấy kết quả tài nguyên sử dụng của từng thành phần trong thiết kế bộ phân đoạn 4 luồng song song Thiết kế sử dụng 40 khối BRAM M10K, 2317 thanh ghi và 999 ALMs
Hình 27 Kết quả tổng hợp tài nguyên cho thiết kế 4 luồng Hình 28 thể hiện tần số hoạt động tối đa của thiết kế 4 luồng ở trường hợp góc mô phỏng điều kiện xấu nhất đạt 194.14 MHz
Hình 28 Kết quả tốc độ mạch của thiết kế 4 luồng trường hợp Slow 1100 mV 85C
Đánh giá, bàn luận và so sánh kết quả
Trong phần này, các thí nghiệm được tiến hành với dữ liệu thực tế Bảng 4 trình bày chi tiết nội dung của các tập dữ liệu được dùng trong nghiên cứu này
Bảng 4 Danh sách các tập dữ liệu dùng trong nghiên cứu
Tập dữ liệu Nội dung Kích thước (bytes)
Tập dữ liệu 1: tệp cài đặt hệ điều hành
Tập dữ liệu 2: dữ liệu mạng
Dữ liệu từ cuộc thi Mid-Atlantic Collegiate Cyber Defense Competition
Tập dữ liệu 3: phương tiện truyền thông
25 tệp video MP4 ngẫu nhiên 3,360,570,368
Tương ứng cho từng tập dữ liệu, cấu hình cho kích thước khung cửa sổ trượt W và ngưỡng so sánh V của giải thuật PCI sẽ được thiết lập khác nhau nhằm khích thước đoạn trung bình vào khoảng 1KB
5.2.3 Tác động của kích thước bộ nhớ đệm với kết quả phân đoạn
Khi bộ Chunking Module hoạt động ở chế độ slow mode, dữ liệu sẽ được lưu toàn bộ vào bộ nhớ đệm trước khi được xử lý bởi bộ Marshalling Module Nếu có một đoạn dữ liệu lớn hơn kích thước bộ nhớ, nó sẽ khiến cho bộ nhớ bị tràn và các đoạn dữ liệu không mong muốn được tạo ra Nói cách khác, các đoạn dữ liệu không mong muốn là những đoạn không đồng nhất với kết quả phân đoạn tuần tự
Bởi vì không thể biết trước được kích thước của đoạn lớn nhất trong một tập dữ liệu nên rất khó để xác định kích thước bộ nhớ đệm vừa đủ để không xảy ra hiện tượng tràn Tuy nhiên, lựa chọn kích thước bộ nhớ phù hợp vẫn góp phần hạn chế số lượng đoạn dữ liệu không mong muốn được tạo ra Với kích thước đoạn trung bình là khoảng
1 kB, nghiên cứu này sẽ khảo sát số lượng đoạn dữ liệu lỗi được tạo ra với độ sâu bộ nhớ đệm tăng dần từ 1024 lên 8192 Kết quả thực nghiệm được trình bày trong hình 29
Hình 29 Số lượng đoạn dữ liệu lỗi được tạo ra khi thay đổi kích thước bộ nhớ đệm
Số lượng đoạn dữ liệu không mong muốn là khá cao khi độ sâu của bộ nhớ đệm gần bằng kích thước đoạn trung bình Số lượng này giảm dần khi kích thước bộ nhớ tăng lên Do mỗi đoạn dữ liệu dài sẽ bị cắt làm đôi khi bộ nhớ đệm bị tràn, 1000 segment được phân đoạn song song có thể tạo ra tối đa khoảng 1998 đoạn dữ liệu không mong muốn Kết quả trong hình 29 cho thấy rằng có tới 70% đoạn dữ liệu lỗi được tạo ra từ tập dữ liệu 1 và 2 Trong khi đó, con số này đối với tập dữ liệu phương tiện truyền thông chỉ là gần 40% Số lượng dữ liệu lỗi giảm mạnh khi kích thước bộ nhớ đệm là 8192 Tuy nhiên, việc sử dụng bộ nhớ đệm lớn như vậy có thể làm giảm khả năng mở rộng thiết kế Trong trường hợp cấu hình kích thước bộ nhớ là 4096, số lượng đoạn dữ liệu không mong muốn tăng lên nhưng không đáng kể Bù lại, thiết kế giảm được một nửa lượng tài nguyên bộ nhớ Với kích thước đoạn trung bình là 1 kB, cấu hình bộ nhớ đệm là 4096 là lựa chọn hợp lý khi nó cân bằng được số lượng đoạn dữ liệu lỗi với lượng tài nguyên phần cứng sử dụng
5.2.4 Tác động của số lượng segment với kết quả phân đoạn
Các đoạn dữ liệu lỗi được tạo ra khi có đoạn dữ liệu rất dài đang được xử lý ở chế độ slow mode khiến cho bộ nhớ đệm bị tràn Điều này có nghĩa là số lượng segment
39 của một tập dữ liệu sẽ ảnh hưởng đến số đoạn lỗi Do số lượng luồng tính toán không ảnh hưởng đến số đoạn lỗi, thí nghiệm trong phần này chỉ thực hiện với hai luồng xử lý Bộ nhớ đệm trong thí nghiệm này được cấu hình với độ sâu là 4096 Thí nghiệm sẽ thực hiện thay đổi số lượng segment của từng tập dữ liệu, bắt đầu từ 2 segment sau đó tăng lên 500 và 1000 segment
Bảng 5 So sánh giữa giải thuật PCI và phương pháp phân đoạn đề xuất
Tập dữ liệu Phương pháp phân đoạn Tổng số đoạn Số byte lặp Số đoạn lỗi
1000 segment 3,638,263 196,230 72 Kết quả từ bảng 5 cho thấy các đoạn dữ liệu không mong muốn rất khó xuất hiện khi số lượng segment là nhỏ nhất Trong trường hợp có đoạn dữ liệu lỗi, số lượng được tạo ra cũng là rất ít Khi tăng số lượng segment lên, số lượng đoạn dữ liệu không mong muốn tăng theo dẫn đến tổng số đoạn được tạo ra cũng tăng lên
Trong một số trường hợp, đoạn dữ liệu khiến bộ nhớ đệm bị tràn là một đoạn dữ liệu lặp Khi đó, đoạn dữ liệu bị chia cắt thành hai đoạn mới và làm cho hiệu suất phát hiện dữ liệu lặp của thiết kế phân đoạn song song bị sụt giảm Những trường hợp này xảy ra khi tiến hành thực nghiệm với tập dữ liệu 1 Với 500 và 1000 segment đầu vào, số lượng byte dữ liệu lặp được phát hiện lần lượt giảm 0.35% và 0.64% so với khi phân đoạn tuần tự Tập dữ liệu càng chia nhỏ thành nhiều segment thì khả năng phát hiện dữ liệu lặp càng kém đi Trong khi đó, thực nghiệm với hai tập dữ liệu còn lại không cho thấy sự sụt giảm về số byte lặp bị phát hiện Nguyên nhân có thể do hai tập dữ liệu này có rất ít các đoạn dữ liệu dài trùng lặp với nhau
5.2.5 Tác động của kích thước bộ nhớ đệm với thông lượng của thiết kế
Bởi vì bộ Marshalling Module đọc dữ liệu từ hai bộ nhớ đệm thuộc hai luồng xử lý khác nhau, lượng dữ liệu được tính toán và đi ra khỏi mỗi luồng là khác nhau Tổng số byte được đọc và xử lý bởi một bộ Marshalling Module có thể nhiều hơn tổng số byte của các segment được đưa vào Mức độ chênh lệch giữa các luồng về lượng dữ liệu được xử lý sẽ tác động đến thông lượng của thiết kế Trong phần này, nghiên cứu sẽ thực hiện các thí nghiệm để đánh giá sự ảnh hưởng của kích thước bộ nhớ đệm đối với thông lượng của thiết kế Thí nghiệm sẽ được thực hiện với các cấu hình bộ nhớ đệm khác nhau, cho nhiều thiết kế với số lượng luồng lần lượt là 2, 4, 8, 16 và 32
Hình 30, 31, 32, 33 và 34 trình bày kết quả thông lượng cho từng thiết kế khi kích thước bộ nhớ đệm thay đổi từ 1024 tới 8192 Kết quả cho thấy, thông lượng giảm dần khi kích thước bộ nhớ đệm tăng lên Tuy nhiên, do kích thước bộ nhớ đệm so với kích thước của một segment là không đáng kể, mức độ chênh lệch về lượng dữ liệu xử lý bởi các luồng cũng là thấp Điều này giải thích cho việc thông lượng của thiết kế bị suy hao rất ít khi tăng kích thước bộ nhớ đệm
Hình 30 Thông lượng của thiết kế phân đoạn 2 luồng với các cấu hình bộ nhớ đệm
41 Hình 31 Thông lượng của thiết kế phân đoạn 4 luồng với các cấu hình bộ nhớ đệm
Hình 32 Thông lượng của thiết kế phân đoạn 8 luồng với các cấu hình bộ nhớ đệm
Hình 33 Thông lượng của thiết kế phân đoạn 16 luồng với các cấu hình bộ nhớ đệm
Hình 34 Thông lượng của thiết kế phân đoạn 32 luồng với các cấu hình bộ nhớ đệm
5.2.6 Đánh giá thiết kế phần cứng
Trong nghiên cứu này, thiết kế phần cứng sẽ được tổng hợp với chip FPGA Cyclone V 5CSXFC6D6F31C6 trên phần mềm Quartus Prime Lite Edition 18.1 Với kích thước bộ nhớ đệm là 4096, kết quả tổng hợp được trình bày trong bảng 6
Bảng 6 Kết quả tổng hợp của thiết kế phần cứng
Tần số hoạt động tối đa (MHz)
Tài nguyên phần cứng sử dụng BRAM
Kết quả cho thấy thiết kế phần cứng có thể hoạt động ở tần số clock cao, gần
200 MHz Khi mở rộng thiết kế lên 4 và 8 luồng xử lý, mức độ tài nguyên tiêu thụ tăng gần như tuyến tính Ngược lại, tần số hoạt động bị suy giảm rất ít do các bộ nhớ đệm được thiết kế bằng BRAM và tài nguyên phần cứng cho mỗi luồng xử lý đơn lẻ là không nhiều Khi số luồng được tăng lên thành 16 và 32, tần số hoạt động sụt giảm nhiều hơn do tổng tài nguyên của thiết kế lúc này đã chiếm một phần đáng kể trong toàn bộ chip FPGA Với mức thiết lập 32 luồng, thiết kế đã sử dụng hơn 50% tổng số BRMA M10K trong chip FPGA Để có thể tiếp tục mở rộng thiết kế và đạt thông lượng cao hơn, cần phải giảm cấu hình của bộ nhớ đệm xuống và đánh đổi bằng số lượng đoạn dữ liệu lỗi được tạo ra
Nghiên cứu [14] thực hiện giải thuật PCI bằng phần mềm và đạt được tốc độ tính toán khoảng 90 MBps Thiết kế phần cứng trong nghiên cứu này, với kích thước bộ nhớ đệm là 4096, cho thấy sự cải thiện đáng kể về tốc độ xử lý Hình 35 so sánh thông lượng của thiết kế song song trên phần cứng với thiết kế tuần tự trên phần mềm Kết quả cho thấy thiết kế phần cứng với số luồng tối thiểu (2 luồng) đạt tốc độ xử lý nhanh hơn gấp
4 lần so với thiết kế phần mềm của Zhang và các cộng sự