Hyperscan cần chạy trên bộ vi xử lý Intel hiện đại hỗ trợ tập lệnh SIMD như SSEngoai hang anh 2025, AVX... SIMD chủ yếu được sử dụng để tăng tốc thực thi các lệnh, nguyên lý gia tốc của nó nằm ở việc thực hiện đồng thời nhiều lệnh không phụ thuộc theo chuỗi. Như hình minh họa dưới đây:
Hình | 1 Minh họa thực thi song song SIMD
Vì Intel đã phát triển các lệnh thực thi song songbóng đá trực tiếp, cộng thêm sự phổ biến rộng rãi của biểu thức chính quy, bài báo đã cải tiến thuật toán hiện có để tìm kiếm biểu thức chính quy và sử dụng công nghệ SIMD nhằm nâng cao đáng kể hiệu suất tìm kiếm.
Ý tưởng cốt lõi của Hyperscan là: 1. Phân tách biểu thức chính quy ban đầu thành nhiều thành phần; 2. Cải thiện thuật toán khớp cho từng thành phần để chúng có thể tận dụng các lệnh SIMD.
Tiếp theobóng đá trực tiếp, sẽ lần lượt giới thiệu thuật toán phân giải và thuật toán cải tiến.
Ý tưởng chính của việc phân tách biểu thức chính quy trong Hyperscan là chia nhỏ biểu thức thành các chuỗi và sub-regex (FA)bóng đá trực tiếp, trong đó FA là Finite Automata – máy trạng thái hữu hạn.
Phân giải chính tắc tuyến tính
1:regex —> left str FA
2:left —> left str FA | FA
Trong đó str,FA đều là các thành phần độc lậpngoai hang anh 2025, FA có thể để trống.
Sau khi phân táchkết quả bóng đá trực tiếp, một biểu thức chính quy có thể được biểu diễn dưới dạng: FAnstrnFAn−1strn−1 ... str2FA1str1FA0
Có thể chọn phân giải chính tắc
Dạng (A|B)bóng đá trực tiếp, chỉ khi A và B có thể được phân giải thành str hoặc FA kết quả bóng đá trực tiếp, nếu không thì (A|B) sẽ được coi là một FA Sau khi phân táchngoai hang anh 2025, kết quả của biểu thức chính quy sẽ tương đương với kết quả ban đầu; tuy nhiên, hiện tại Hyperscan chưa đưa ra bằng chứng toán học cho điều này.
Phương pháp thực hiện
Đối với phân giải chính tắcngoai hang anh 2025, phương pháp dựa trên đồ thị được chia thành ba loại:
1. Phân tích đường đi
Hình | 2 Phân tích đường đi
2. Phân tích khu vực
Hình | 3 Phân tích khu vực
3. Phân tích luồng mạng
Hình | 4 Phân tích luồng mạng
Chương này giới thiệu thuật toán khớp đa chuỗi và FAbóng đá trực tiếp, thuật toán này sử dụng SIMD để tăng tốc.
Thuật toán khớp đa chuỗi
Tên thuật toán là FDR; thuật toán được chia thành hai bướckết quả bóng đá trực tiếp, như hình:
Hình | 5 Hai giai đoạn khớp FDR
Đầu tiênngoai hang anh 2025, sử dụng thuật toán Extended Shift-or Matching để so khớp các chuỗi đã được phân tách; sau đó, các phương án khớp được chuyển đến thuật toán FA để tiếp tục kiểm tra.
Shift-or Matching
Thuật toán shift-or là một thuật toán đơn giản; như hình:
Hình | 6 Thuật toán shift-or kinh điển
Đối với chuỗi cần khớpkết quả bóng đá trực tiếp, cần duy trì hai trạng thái st-mask và sh-mask('c').
Đối với chuỗingoai hang anh 2025, nếu 'c' xuất hiện trong chuỗi, thì bit trong sh-mask('c') tại vị trí mà 'c' xuất hiện sẽ là 0, còn lại đều là 1.
Như hình 6ngoai hang anh 2025, chuỗi khớp là "aphp", 'p' xuất hiện ở vị trí thứ 2 và 4, do đó sh-mask('p') = 11110101.
Trạng thái ban đầu của st-mask là 11111111
Đối với ký tự mới nhập 'x':
st-mask=((st-mask≪1) | sh-mask(‘x’)
Nếu bit tương ứng với độ dài chuỗi khớp trong st-mask là 0 thì có nghĩa là đã khớp thành công.
Thuật toán Shift-or Matching có hiệu suất caokết quả bóng đá trực tiếp, nhưng cũng tồn tại hai nhược điểm: 1. Chỉ hỗ trợ khớp một chuỗi đơn; 2. Không thể sử dụng SIMD để tối ưu hóa.
Để khắc phục hai nhược điểm nàybóng đá trực tiếp, sử dụng thuật toán sau:
Multi-string shift-or matching
Để hỗ trợ khớp đồng thời nhiều chuỗingoai hang anh 2025, cấu trúc dữ liệu đã được sửa đổi.
Đầu tiênkết quả bóng đá trực tiếp, chia chuỗi thành n bucket, mỗi bucket được gán số từ 0 đến n-1; giả sử rằng mỗi chuỗi chỉ thuộc về một bucket duy nhất.
Bước haikết quả bóng đá trực tiếp, mở rộng st-mask và sh-mask n lần;
sh-mask('x') được khởi tạo toàn bộ là 1;
Nếu 'x' xuất hiện ở vị trí thứ k trong bucket thứ nbóng đá trực tiếp, thì bit thứ k của sh-mask('x') ở vị trí thứ n sẽ được đặt thành 0; đồng thời, các bucket có độ dài ngắn hơn độ dài lớn nhất cần được bổ sung bit.
Hình | 7 Ví dụ về sh-mask
Vị trí thứ k ở đây khác với thuật toán Shift-or Matchingbóng đá trực tiếp, vì ở đây đếm từ bên phải. st-mask |= (sh-mask('x') << (k bytes)). Dưới đây là ví dụ minh họa.
Hình | 8 Khớp shift-or đa chuỗi FDR
Nhóm mẫu
Trong phần trước đã đề cập đến việc phân bổ cặp chuỗi vào các nhóm khác nhau; bài viết này sử dụng phương pháp lập trình động để thực hiện việc phân nhóm.
Đầu tiênbóng đá trực tiếp, sắp xếp mảng ký tự theo độ dài chuỗi; sau đó sử dụng phương trình quy hoạch động sau để hoàn thành nhóm:
Cải tiến thuật toán
Có một số hạn chế đối với mã hóa trong cùng một bucket. Ví dụ trong hình 7ngoai hang anh 2025, do a và c tương đương, b và d tương đương, nên có thể nhận diện sai các chuỗi như ad và cb. Để khắc phục lỗi này, thuật toán được cải tiến bằng cách mở rộng độ dài ký tự, làm cho độ dài ký tự được mở rộng lên m bit (9 ≤ m ≤ 15).
Giả sử m=12 thì a được ánh xạ thành a=((loworder4bitsofb<<8)|a)
Tăng tốc bằng SIMD
Sau khi cải tiến trênbóng đá trực tiếp, các thành phần có thể sử dụng lệnh SIMD đồng bộ để tăng tốc.
Khi String Matching thành côngbóng đá trực tiếp, sẽ kích hoạt FA Matching; để có thể tận dụng SIMD hiệu quả, FA Matching chạy theo cách bit-based NFA. Mô tả thuật toán như sau:
Trước tiênbóng đá trực tiếp, mã hóa n trạng thái của NFA thành 0, n-1;
Định nghĩa trạng thái Sbóng đá trực tiếp,biểu thị tính hợp lệ của các trạng thái hiện tại; ví dụngoai hang anh 2025, nếu bit thứ k là 1, thì trạng thái thứ k hiện tại là hợp lệ;
Định nghĩa shift-k maskngoai hang anh 2025, biểu thị trạng thái hiện tại có thể bỏ qua k trạng thái để đạt được trạng thái mới đối với nút đầu vào mới;
Exception mask biểu thị cờ ở nút ngoại lệ
succ_mask[i] biểu thị tập hợp các trạng thái mà nút i có thể đạt được (bit được thiết lập thành 1 nếu có thể chuyển sang trạng thái đó qua một lần chuyển đổi).
reach[x], biểu thị tất cả các trạng thái mà ký tự k có thể đạt được;
Chuyển trạng thái được định nghĩa là nút loại và nút ngoại lệ; nút loại có chuyển trạng thái vượt qua không quá k nút và không có trạng thái quay lại.
Hình | 9 Trình bày NFA của biểu thức chính tắc (AB|CD)AFF*
Như hình 9kết quả bóng đá trực tiếp, shift-k được đặt là 2; trong đó các bit 0, 2, 4 là nút ngoại lệ; mô tả thuật toán như sau:
Hình | 10 Thuật toán NFA dựa trên bit
Liên kết thân thiện:
xem tu vi hang ngay Live Casino nổ hủ game nổ hũ keo truc tuye keo bd kết quả bóng đá số