CƠ SỞ LÝ THUYẾT BỘ NHỚ ĐỊA CHỈ NỘI DUNG
Sơ lược về bộ nhớ địa chỉ nội dung
2.1.1 Giới thiệu về bộ nhớ khả lập địa chỉ nội dung (CAM)
Bộ nhớ địa chỉ nội dung (CAM) là một loại bộ nhớ đặc biệt, có thể tìm kiếm toàn bộ cơ sở dữ liệu trong một chu kỳ CPU và trả về thông tin địa chỉ tương ứng [1][2][3] Những ứng dụng của CAM có thể kể đến như: định tuyến gói Internet, bộ nhớ đệm cho vi xử lý, hoặc ứng dụng trong AI Ngoài ra, CAM còn ứng dụng trong lĩnh vực nghiên cứu các chuỗi DNA [4] Mặc dù CAM có nhiều ưu thế như cải thiện tốc độ tìm kiếm dữ liệu trên vi xử lý, nhưng nó tiêu thụ nhiều điện năng và gần như không có khả năng nâng cấp
2.1.2 Giới thiệu về bộ nhớ khả lập địa chỉ nội dung 3 biến (TCAM)
Bộ nhớ địa chỉ nội dung 3 biến (TCAM) là phần mở rộng của CAM, hỗ trợ thêm việc xử lý giá trị tuỳ định ‘x’ TCAM dùng tài nguyên bộ nhớ nhiều gấp 30 lần so với DDR SRAM và tiêu thụ điện năng trên mỗi bit nhớ gấp 150 lần so với SRAM [5] Cho đến nay, TCAM là một thiết bị quan trọng trong việc cải tiến hệ thống kỹ thuật số Việc phát triển TCAM và CAM vật lý trong vài năm trở lại đây đã trở nên chậm lại, tuy nhiên, TCAM và CAM trên FPGA thì lại phát triển nhanh chóng Các ứng dụng tìm kiếm dữ liệu tốc độ cao ngày càng yêu cầu khắt khe hơn về TCAM trong nhiều lĩnh vực.
Sơ lược về một số nghiên cứu bộ nhớ khả lập địa chỉ nội dung
2.1 Sơ lược về bộ nhớ địa chỉ nội dung
2.1.1 Giới thiệu về bộ nhớ khả lập địa chỉ nội dung (CAM)
Bộ nhớ địa chỉ nội dung (CAM) là một loại bộ nhớ đặc biệt, có thể tìm kiếm toàn bộ cơ sở dữ liệu trong một chu kỳ CPU và trả về thông tin địa chỉ tương ứng [1][2][3] Những ứng dụng của CAM có thể kể đến như: định tuyến gói Internet, bộ nhớ đệm cho vi xử lý, hoặc ứng dụng trong AI Ngoài ra, CAM còn ứng dụng trong lĩnh vực nghiên cứu các chuỗi DNA [4] Mặc dù CAM có nhiều ưu thế như cải thiện tốc độ tìm kiếm dữ liệu trên vi xử lý, nhưng nó tiêu thụ nhiều điện năng và gần như không có khả năng nâng cấp
2.1.2 Giới thiệu về bộ nhớ khả lập địa chỉ nội dung 3 biến (TCAM)
Bộ nhớ địa chỉ nội dung 3 biến (TCAM) là phần mở rộng của CAM, hỗ trợ thêm việc xử lý giá trị tuỳ định ‘x’ TCAM dùng tài nguyên bộ nhớ nhiều gấp 30 lần so với DDR SRAM và tiêu thụ điện năng trên mỗi bit nhớ gấp 150 lần so với SRAM [5] Cho đến nay, TCAM là một thiết bị quan trọng trong việc cải tiến hệ thống kỹ thuật số Việc phát triển TCAM và CAM vật lý trong vài năm trở lại đây đã trở nên chậm lại, tuy nhiên, TCAM và CAM trên FPGA thì lại phát triển nhanh chóng Các ứng dụng tìm kiếm dữ liệu tốc độ cao ngày càng yêu cầu khắt khe hơn về TCAM trong nhiều lĩnh vực
2.2 Sơ lược về một số nghiên cứu bộ nhớ khả lập địa chỉ nội dung
Trong các giải pháp tăng tốc phần cứng gần đây, Mảng phần tử logic có thể tái lập trình (FPGA) thường được sử dụng vì sự nhanh chóng trong thiết kế mạch số và khả năng nâng cấp trực tiếp trên hệ thống Ứng dụng của FPGA có thể kể đến như cải thiện tốc độ các gói Internet định tuyến, trí tuệ nhân tạo (AI) và nghiên cứu sinh học, chuỗi DNA, v.v [6][7] Những ứng dụng được nêu trên thường yêu cầu các phần cứng hỗ trợ tìm kiếm dữ liệu tốc độ cao như TCAM và CAM Bởi FPGA không hỗ trợ sẵn CAM và TCAM, do đó phương pháp đề xuất sử dụng các tài nguyên sẵn có trên mạch, như các khối bộ nhớ ( Blocks RAM) và bảng tra cứu (LUT)
Nhiều nghiên cứu trước đây đề xuất sử dụng các khối RAM sẵn có bên trong FPGA để thay thế CAM và TCAM tuy nhiên cách làm này đi cũng với sự đánh đổi lượng lớn tài nguyên trong mạch theo nghiên cứu [5][8] Nghiên cứu [9] cung cấp TCAM thuật thoán có thể mở rộng sử dụng các mảnh cấu thành FPGA (slices) làm tài nguyên chính Xilinx đã giới thiệu một lõi IP (IP core) dùng để ứng dụng TCAM trên mạch FPGA của họ [10] Bên cạnh đó, các phương pháp dùng để tối ưu hoá lượng tài nguyên và điện năng tiêu thụ cũng đã được thể hiện trong các nghiên cứu [11-17] Green TCAM, dưa theo nghiên cứu [18], chứng minh rằng TCAM thuật toán cải thiện hiệu xuất đáng kể dựa trên việc cài đặt các quy tắc Pseudo-TCAM [19] sắp xếp các tài nguyên bộ nhớ một cách đơn giản và thống nhất với nhau áp dụng cho tất cả các quy tắc và thông lượng cao Thuật toán hỗ trợ cập nhật nhanh chóng được đề cập trong nghiên cứu [20] nhưng phải đánh đổi bằng hiệu suất Multi-pumping SRAMs, theo nghiên cứu [15], tăng tần số hoạt động của các khối RAM nội và cho phép nhiều truy cập cùng lúc trong cùng một xung nhịp hệ thống Với những thiết kế tần số cao, rất khó để thiết kế các RAM nội có thể đạt tốc độ nhanh hơn gấp 5 lần thiết kế của nghiên cứu [15] Nghiên cứu [17] đề xuất một cách đặc biệt để định vị dữ liệu, nhưng nghiên cứu này chỉ đề cập đế CAM mà không nói đến việc hỗ trợ giá trị tuỳ định thường thấy trong bộ nhớ địa chỉ nội dung khi được sử dụng trong các ứng dụng được nêu ở phần trên Nhiều đơn vị so khớp băm (hash matching unit) [21] cũng là một tuỳ chọn để triển khai TCAM thuật toán, nhưng nó gặp phải xung đột băm (hash collision)
Bảng 1 cho thấy dữ liệu cơ bản thường thấy của một CAM, bao gồm hàng dữ liệu được sắp xếp theo thứ tự ưu tiên Rule 0 là quy tắc mặc định khi dữ liệu trả về không phù hợp với bất kỳ quy tắc nào khác trong bộ nhớ Cơ sở dữ liệu này có thể được cài đặt vào một Bộ nhớ khả lập địa chỉ nội dung hỗ trợ giá trị tùy định (TCAM) hoặc một Bộ nhớ khả lập địa chỉ nội dung không hỗ trợ giá trị tùy định (CAM) cùng với
Bộ mở rộng tiền tố có kiểm soát (CPE), đơn giản là tách các giá trị tùy định và biến đổi chúng thành giá trị Nhị Phân Như vậy, với một bộ nhớ khả lập địa chỉ nội dung mà không không hỗ trợ giá trị tùy định (CAM), nhu cầu sử dụng tài nguyên bộ nhớ là vô cùng lớn
Bảng 1: Ví dụ về cơ sở dữ liệu cơ bản của TCAM
Ví dụ về Bộ mở rộng tiền tố có kiểm soát (CPE) được nêu trong nghiên cứu
[22] Với số lượng lớn các quy tắc và nhiều giá trị ngẫu nhiên như trong một bộ định tuyến FIB, việc sử dụng CPE tiêu tốn một lượng lớn tài nguyên bộ nhớ Để xây dựng bộ nhớ khả lập định địa chỉ nội dung trên FPGA, tài nguyên được sử dụng trong nghiên cứu này là các khối RAM nội được hỗ trợ trong FPGA Bộ nhớ bên trong FPGA được cung cấp dưới dạng các ô nhớ như trong Hình 1 Mỗi ô nhớ hỗ trợ lưu trữ một số lượng kilobit dữ liệu nhất định Ô nhớ M20K của Intel hỗ trợ 20k-bit và tương tự đối với các ô nhớ: Xilinx M9K, M10K hoặc B36K Các ô nhớ này hỗ trợ một số lượng địa chỉ và độ dài dữ liệu nhất định tùy thuộc vào công nghệ được sử dụng Tuy nhiên, khi sử dụng để xây dựng bộ nhớ khả lập địa chỉ nội dung, cần lưu ý rằng các ô nhớ này không hỗ trợ giá trị tùy định mà chỉ hỗ trợ giá trị nhị phân
Hình 1: Khôí RAM điển hình
Phương pháp xếp chồng dữ liệu (Data Collision)
2.3.1 Tổng Quan Để hiểu được thuật toán, trước tiên chúng ta cần hiểu cách hoạt động của bộ nhớ khả lập địa chỉ nội dung – CAM Hoạt động cơ bản của CAM được mô tả trong Hình 2
Dữ liệu cần tìm địa chỉ, được hiểu là dữ liệu khóa, được đưa vào CAM và kết quả được trả về Kết quả là địa chỉ tương ứng của dữ liệu đầu vào đã được cài đặt từ trước trong bộ nhớ khả lập địa chỉ nội dung Một cách tổng quát, kết quả có thể là địa chỉ đúng của dữ liệu mà ta cần tìm địa chỉ hoặc không, và dữ liệu ngõ vào sẽ được xử lý một cách phù hợp Khi thiết kế bộ nhớ TCAM trên FPGA, như đã đề cập trong [7] [16], cách tốt nhất để giảm số RAM và tối ưu hóa tốc độ hệ thống là cắt dữ liệu khóa thành nhiều mảnh dữ liệu với độ dài bit nhất định (độ dài của các mảnh có thể bằng nhau hoặc không) Phương pháp tối ưu nhất [7] [16] khi độ dài của các mảnh dữ liệu đúng bằng độ dài của địa chỉ ô nhớ trên FPGA Ví dụ, đối với ô nhớ M20K của Intel, độ dài này là 9 bit Trong phương pháp được thực hiện của nghiên cứu này, chúng ta cũng sẽ cắt dữ liệu khóa thành nhiều mảnh dữ liệu để tối ưu hóa tốc độ và giảm bộ nhớ tiêu thụ
Hình 2: Hoạt động cơ bản của bộ nhớ khả lập địa chỉ nội dung
2.3.2 Giới thiệu thuật toán chồng chập dữ liệu (Data Collision)
Hình 3 cho thấy dữ liệu khóa được cắt thành các mảnh dữ liệu có độ dài nhất định Những mảnh dữ liệu này truy cập mỗi ô nhớ tương ứng, những ô nhớ này đã được cài đặt dữ liệu trước đó, và tạo thành một Vector kết quả, được nêu trong nghiên cứu [17] Tuy nhiên, nghiên cứu [17] không hỗ trợ các quy tắc chứa giá trị tùy định Khi đã có được Vector kết quả, CAM sẽ phân tích và xác minh những kết quả đó để đưa ra kết quả cuối cùng của dữ liệu khóa tương ứng Nghiên cứu được trình bày trong tài liệu này thay đổi và tổ chức lại cấu trúc xung đột dữ liệu được trình bày trong nghiên cứu
[17] Những sửa đổi và việc bổ sung một số mô-đun cần thiết cho phép các quy tắc hỗ trợ giá trị tùy định và làm giảm vấn đề tiêu thụ bộ nhớ của CPE
Hình 3: Data của CAM được cắt thành nhiều mảnh và được sử dụng để tạo một vecto đối sánh ở cuối
Hình 4 cho thấy giải thuật cơ bản của cấu trúc TCAM này Dữ liệu tuân theo 3 bước chính để xử lý tạo ra kết quả
Hình 4: Luồng dữ liệu cơ bản của cấu trúc
Hình 5 mô tả chi tiết quá trình thiết lập các quy tắc vào bộ nhớ Ở đây chúng tôi lấy ví dụ về quy tắc 10-bit, được chia thành 5 mảnh dữ liệu có độ dài 2-bit Một bảng của bộ nhớ khả lập địa chỉ nội dung này bao gồm các ô nhớ, mỗi ô chứa hai thành phần – trạng thái của ô nhớ và dữ liệu nhận dạng (ID) cho quy tắc Cách ghi các quy tắc vào bảng như sau Đầu tiên, các quy tắc phải ở dạng thích hợp để được điền vào bảng, nghĩa là, quy tắc phải có các mảnh dữ liệu chứa 2-bit tùy định giống nhau dưới dạng "**" hoặc không có giá trị tùy định nào Nếu quy tắc có các phân mảnh ở dạng chỉ có một giá trị tùy định, thì quy tắc đó phải được tách thành hai quy tắc Để cài đặt một quy tắc vào bảng, viết ID của quy tắc đó vào ô tại địa chỉ tương ứng giá trị trong các mảnh dữ liệu của quy tắc đó trong bảng và chuyển trạng thái của ô sang đã ghi (Written) Nếu ô đã có quy tắc được viết trước đó, ô đó sẽ ở trạng thái xung đột (Collision) Sau khi viết xong các quy tắc, các ô trong bảng có một trong ba trạng thái: trống, đã ghi hoặc xung đột Khi viết quy tắc, cần đảm bảo có ít nhất n ô không xung đột nhau, thông thường, n chỉ cần bằng 1 Để xóa quy tắc khỏi bảng, xóa quy tắc đó khỏi ô đã điền, ô ở trạng thái xung đột sẽ trở thành đã ghi nếu chỉ còn lại một quy tắc được điền trong ô đó; ô ở trạng thái đã ghi sẽ trở thành ô trống
Hình 5: Đặt các quy tắc vào cơ sở dữ liệu của TCAM Để có thể tìm địa chỉ cho một khóa, một số thành phần cần được bổ sung Tuy nhiên, ở bước này, một vectơ dữ liệu đã có thể được tìm thấy để tiếp tục quy trình xử lý Hình
6 minh họa cách tìm khóa từ bảng dữ liệu quy tắc đã được thiết lập và trong một số trường hợp không hợp lệ, kết quả được kết luận một cách nhanh chóng Các trường hợp xấu có thể dự đoán được trong quá trình thiết lập bảng và có thể được ngăn chặn bằng cách tối ưu hóa phần mềm Theo nghiên cứu [16], đối với một TCAM có n rules và chứa m data ngẫu nhiên, tỷ lệ xung đột cho một cột là 26% Đối với z cột, tỷ lệ để có toàn bộ z cột đều ở trạng thái xung đột là 26% z , tỷ lệ này là rất nhỏ với một dữ liệu khóa dài
Hình 6: Tìm kiếm vectơ đối sánh từ cơ sở dữ liệu Ở bước tiếp theo, các quy tắc đã được thiết lập hoàn tất trong bảng Đối với mỗi quy tắc, chúng ta có một Vector dữ liệu đánh dấu các giá trị tùy định tương ứng – gọi là Vector mặt nạ Mỗi bit trong vectơ này đánh dấu một đoạn giá trị tùy định “**” (trong ví dụ này, mỗi bit trong Vector mặt nạ đánh dấu 2-bit giá trị) Với mỗi đoạn có chứa ID (không ở trạng thái xung đột), ta cần tìm một Vector mặt nạ tương ứng với ID đó để thực hiện việc so sánh Có rất nhiều cách có thể được áp dụng để tìm kiếm vectơ mặt nạ trong trường hợp này, mỗi cách khác nhau sẽ có những ưu nhược điểm khác nhau khi áp dụng trên phần cứng Vectơ mặt nạ và quá trình đánh dấu được mô tả trong Hình 7 Các vectơ mặt nạ được trình bày trong hình dưới dạng một chuỗi 5-bit với mỗi bit tương ứng với một đoạn dữ liệu được che
Hình 7: Vectơ mặt nạ từ vectơ ID quy tắc
Bước tiếp theo, TCAM thực hiện so sánh các đoạn ID trong Vector ID đã được đánh dấu và đưa ra kết quả cuối cùng bao gồm tín hiệu cho biết liệu khóa có khớp với dữ liệu quy tắc hay không và, nếu có, thì kết quả sẽ là ID cần tìm của quy tắc Trong trường hợp có hơn 1 kết quả trùng khớp, các đoạn khóa vẫn phải qua một bộ nhớ khác để xác nhận lại , để đề phòng xác suất xảy ra lỗi trùng khớp Việc xác nhận lại được thực hiện trước khi so sánh thứ tự ưu tiên vì nếu so sánh ưu tiên trước sẽ có khả năng xảy ra trường hợp lỗi trùng khớp Bước này được thể hiện trong Hình 8
Hình 8: Xác nhận lại vectơ để có kết quả chính xác
Mức độ ưu tiên được thiết lập vào bảng xác nhận và với các bộ quy tắc trong bộ nhớ khả lập địa chỉ nội dung lớn có thể được ưu tiên phân cấp trước giữa các vùng để giảm độ phức tạp khi thực hiện so sánh các thứ tự ưu tiên Sau khi so sánh thứ tự ưu tiên
Page : 9 và nhận được kết quả phù hợp có thứ tự ưu tiên cao nhất, kết quả là ID của quy tắc trùng khớp với dữ liệu khóa, hoặc báo hiệu rằng khóa không khớp với bất kì ID nào trong bộ nhớ khả lập địa chỉ nội dung ID này được sử dụng bởi một bộ nhớ dữ liệu ngoại vi để thực hiện các quy trình xử lý khác đối với gói dữ liệu liên quan tới dữ liệu khóa.
ĐẶC TẢ THIẾT KẾ LÕI IP BỘ NHỚ KHẢ LẬP ĐỊA CHỈ NỘI DUNG 3 BIẾN (TCAM)
Kiến trúc hệ thống
3.1.1 Sơ đồ khối Top level
Hình 9: Sơ đồ khối top level
H ình 10 : Sơ đ ồ ch i t iế t k hố i T op -le ve l
3.1.2 Mô tả tín hiệu vào ra
STT Tên chân Chiều Độ rộng bit Chức năng
1 clk Vào 1 Clock cung cấp cho IP
2 rst Vào 1 Reset bất đồng bộ
Dữ liệu khóa cần tìm địa chỉ được đưa vào IP để thực hiện việc tìm kiếm địa chỉ dữ liệu
Chuỗi dữ liệu được đưa vào các khối chức năng để thực hiện thiết lập dữ liệu TCAM
ID tương ứng với chuỗi dữ liệu được đưa vào các khối chức năng để thực hiện thiết lập dữ liệu TCAM
- Tín hiệu báo hiệu sẵn sàng thực hiện thiết lập dữ liệu vào TCAM
7 Rule ID Ra 8 Địa chỉ dữ liệu – ID tương ứng của dữ liệu khóa cần tìm địa chỉ
- Xác định dữ liệu ngõ ra có giá trị
- Báo hiệu TCAM đã thực hiện Cài Đặt xong 1 Rule
Bảng 2: Mô tả tín hiệu vào ra khối top level
3.1.3 Nguyên tắc hoạt động của khối top level
+ Cài Đặt: TCAM tiếp nhận 3 ngõ vào để thực hiện thiết lập dữ liệu vào bộ nhớ TCAM Ngõ vào Set String – chuỗi 125-bit dữ liệu bao gồm các dữ liệu cần thiết để thực thiện thiết lập TCAM: 8-bit thứ tự ưu tiên, 13-bit dữ liệu mặt nạ và 104-bit dữ liệu khóa Chuỗi dữ liệu trên sẽ được thiết lập vào các bộ nhớ tương ứng dựa trên 8-bit địa chỉ được gọi là ID– Set ID TCAM thực hiện Cài Đặt khi tín hiệu Set Enable tích cực mức 1 Khi thực hiện Cài Đặt, TCAM sẽ lần lượt tiếp nhận 1 chuỗi dữ liệu và 1 ID tương ứng và thiết lập các dữ liệu, quy trình này mất 2 clock để hoàn tất – tín hiệu Set Done tích cực mức 1.
+ Tìm Kiếm: TCAM nhận Key Input làm dữ liệu khóa để thực hiện tìm kiếm địa chỉ dữ liệu – ID tương ứng Dựa theo thuật toán đã được nêu ở Mục 2, 104-bit dữ liệu khóa sẽ được chia thành 13 mảnh 8-bit truy cập vào 13 ô nhớ khác nhau trong khối Segment Engine để thực hiện tìm kiếm ID và trả về kết quả là 130-bit Vector ID – gọi là Segment Vector Vector này sẽ được khối Mask Engine tiếp nhận và xử lý bằng cách cắt thành 13 đoạn 10-bit ID, bao gồm trạng thái, khác nhau 13 đoạn này sẽ được xử lý song song thông qua bộ nhớ đặc biệt – gọi là bộ nhớ mặt nạ Bộ nhớ này thực hiện truy xuất Vector mặt nạ tương ứng với ID và đánh dấu các đoạn ID Kết quả trả về là 13 đoạn 130-bit Vector ID đã được đánh dấu – gọi là Masked Vector ID
13 dữ liệu 130-bit Vector ID trên sẽ trực tiếp so sánh thông qua quy trình xử lý của Confirm Engine Khối IP này sẽ truy xuất dữ liệu từ bộ nhớ xác minh (reconfirmation memory), thực hiện xác minh, gắn cờ hiệu và thứ tự ưu tiên vào các kết quả
Khối Priority Engine tiếp nhận 13 kết quả, thực hiện việc so sánh các thứ tự ưu tiên và trả về kết quả ID cần tìm của dữ liệu khóa
- Khi thực hiện Cài Đặt, TCAM nhận lần lượt 1 chuỗi dữ liệu và ID tương ứng để thiết lập Khi hoàn tất thiết lập dữ liệu sau 2 chu kì, TCAM nhận dữ liệu cài đặt tiếp theo
- Khi thực hiện Cài Đặt, Set Enable phải tích cực mức 1, TCAM thực hiện Tìm
Kiếm khi tín hiệu Set Enable có giá trị 0
Các khối trong hệ thống
Khối Segment Engine nhận dữ liệu từ ngõ vào tín hiệu Set Segment Enable để quyết định thực hiện việc Cài Đặt/Tìm Kiếm IP thực hiện Cài Đặt khi Set Segment Enable tích cực mức cao; và ngược lại, khối sẽ thực hiện Tìm Kiếm
+ Khi thực hiện Cài Đặt, IP sẽ nhận dữ liệu tương ứng Set Key và Set ID Trong đó Set Key là nội dung của bộ nhớ địa chỉ nội dung (TCAM); Set ID là 8-bit địa chỉ của bộ nhớ địa chỉ nội dung (TCAM)
+ Khi thực hiện Tìm Kiếm, IP nhận dữ liệu từ Key Input là dữ liệu ngõ vào ta cần phải tìm địa chỉ Khóa dữ liệu sẽ được cắt nhỏ thành 13 đoạn dữ liệu (8 bit/đoạn) Segment Engine xử lý và tạo ra 13 địa chỉ (bao gồm trạng thái) tương ứng chứa 13 đoạn dữ liệu (Segment Vector)
3.2.1.3 Sơ đồ khối chi tiết
Hình 11: Sơ đồ khối Segment engine
Hình 12: Sơ khối chi tiết khối Segment Engine
Phụ thuộc vào tín hiệu Set Segment Enable, khối IP sẽ thực hiện Cài Đặt/Tìm
Kiếm ¨ Cài Đặt: Set Key đóng vai trò là địa chỉ của ID cài đặt vào RAM Ngõ vào Set ID đi vào 13 khối IP Status Engine khác nhau Khối IP này xử lý và đánh dấu trạng thái cho các đoạn địa chỉ và trả kết quả Set ID Mod để thực hiện việc ghi dữ liệu vào RAM Tín hiệu Done của khối FSM nối trực tiếp với Write Enable của RAM để báo hiệu dữ liệu đã sẵn sàng thiết lập vào RAM ¨ Tìm Kiếm: Dữ liệu khóa – Key Input sẽ được cắt nhỏ thành 13 mảnh dữ liệu (8 bit/đoạn) 13 mảnh dữ liệu này sẽ được đưa vào 13 ô nhớ tương ứng, Segment
Engine xử lý và trả về 13 ID (bao gồm trạng thái) tương ứng của 13 mảnh dữ liệu 13
ID này sẽ được ghép lại tạo thành một Vector ID gọi là – Segment Vector
3.2.1.5 Mô tả tín hiệu vào ra
STT Tên chân Chiều Độ rộng bit Chức năng
1 clk Vào 1 Clock cung cấp cho IP
2 rst Vào 1 Reset bất đồng bộ
3 Key Vào 104 Khóa dữ liệu cần tìm địa chỉ
Dữ liệu khóa được đưa vào khối Segment Engine thiết lập dữ liệu vào TCAM
ID tương ứng với dữ liệu khóa dùng để thiết lập dữ liệu vào TCAM
Hình 13: Cấu trúc bit của Segment Vector
- Tín hiệu được đưa vào khối Segment Engine, báo hiệu sẵn sàng cài đặt dữ liệu trong RAM
7 Segment Vector Ra 130 Tập hợp 13 địa chỉ chứa khóa dữ liệu, bao gồm trạng thái
Thông báo hoàn tất quá trình cài đặt xong 1 rule
Bảng 3: Mô tả tín hiệu vào ra của khối Segment engine
Khối Status Engine là một máy trạng thái, nhận 8-bit ID - Set ID là ngõ vào IP này giao tiếp trực tiếp với 13 khối RAM để kiểm tra dữ liệu trong RAM và đánh dấu trạng thái các ID chuẩn bị được ghi vào
Hình 14: Sơ đồ khối Status Engine
Page : 17 Khối IP là Máy Trạng Thái (FSM) kiểu Moore Tín hiệu Set Segment Enable điều khiển hoạt động của IP
Khi Set Segment Enable tích cực 1, máy trạng thái chuyển sang trạng thái tiếp theo Ở trạng thái tiếp theo, IP sẽ kiểm tra dữ liệu trong RAM và đánh dấu trạng thái cho dữ liệu mới, trả về ngõ ra Set ID Mod Sau đó, IP sẽ tự động quay về trạng thái ban đầu và đợi tín hiệu Cài Đặt tiếp theo
Cấu trúc bit của Set ID Mod
3.2.2.4 Mô tả tín hiệu vào ra
STT Tên chân Chiều Độ rộng bit Chức năng
1 clk Vào 1 Clock cung cấp cho IP
2 rst Vào 1 Reset bất đồng bộ
Hình 15: State machine khối Status Engine
Hình 16: Cấu trúc bit của Set ID Mod
Dữ liệu hiện có trong TCAM bao gồm 2-bit biểu diễn trạng thái, 8-bit ID
4 i_Set_ID Vào 8 ID tương ứng với dữ liệu khóa để thực hiện Cài Đặt
- Tín hiệu được đưa vào khối Segment Engine, báo hiệu sẵn sàng cài đặt dữ liệu trong TCAM
Dữ liệu đã được đánh dấu trạng thái, sẵn sàng cài đặt vào TCAM
- Tín hiệu ngõ ra, báo hiệu việc đánh dấu trạng thái đã hoàn tất và sẵn sàng Cài Đặt
- Tín hiệu này được kết nối trực tiếp với tín hiệu write enable của RAM, báo hiệu
RAM sẵn sàng thiết lập dữ liệu
Bảng 4: Mô tả tín hiệu khối Status Engine
Khối Mask Engine nhận dữ liệu từ ngõ vào tín hiệu Set Mask Enable để quyết định thực hiện việc Cài Đặt/Tìm Kiếm IP này thực hiện Cài Đặt khi Set Mask Enable tích cực mức cao; và ngược lại, khối sẽ thực hiện Tìm Kiếm
+ Khi thực hiện Cài Đặt, IP sẽ nhận 2 dữ liệu ngõ vào Set Mask Data và Set Mask ID Trong đó Mask ID là dữ liệu địa chỉ RAM; Mask Data là dữ liệu 13 bit mặt nạ được dùng để đánh dấu dữ liệu
+ Khi thực hiện Tìm Kiếm, IP nhận dữ liệu từ Segment Vector bao gồm 13 địa chỉ dữ liệu (10 bit/địa chỉ) Dựa vào các địa chỉ đó, Mask Engine xử lí và tạo ra Vector mặt nạ cho từng địa chỉ tương ứng
3.2.3.3 Sơ đồ khối chi tiết
Hình 17: Sơ đồ khối Mask engine
3.2.3.4 Giải thuật ¨ Cài đặt: Bên trong IP Mask Engine là 13 khối 256x13-bit RAM – được gọi là bộ nhớ mặt nạ Bộ nhớ này nhận Set Mask ID làm 8-bit địa chỉ, và 13-bit Set
Mask Data là Vector mặt nạ làm dữ liệu ô nhớ
Khi tín hiệu Set Mask Enable tích cực mức 1, dữ liệu Vector mặt nạ sẽ được ghi vào ô nhớ tại địa chỉ tương ứng – ID ¨ Tìm kiếm: IP nhận 130-bit Segment Vector – Vector ID được tạo ra từ
IP Segment Engine – làm ngõ vào Vector ID này sẽ được cắt làm 13 đoạn 10-bit dữ liệu ID – mỗi đoạn bao gồm 2-bit mô tả trạng thái dữ liệu và 8-bit ID – để thực hiện quá trình đánh dấu dữ liệu (như đã đề cập ở Mục 2) 13 dữ liệu ID này sẽ được tiếp nhận và xử lý bởi 13 bộ nhớ mặt nạ đã được thiết lập dữ liệu Bộ nhớ mặt nạ sẽ truy xuất dữ liệu Vector mặt nạ tương ứng với từng ID Thực hiện đánh dấu dữ liệu và trả về kết quả là 13 Vector ID đã được đánh dấu – gọi là Masked Vector ID tương ứng với 13 ID trong
Cấu trúc bit của Masked Vector ID
Hình 18: Sơ đồ khối chi tiết khối Mask Engine
3.2.3.5 Mô tả tín hiệu vào ra
STT Tên chân Chiều Độ rộng bit Chức năng
1 clk Vào 1 Clock cung cấp cho IP
2 rst Vào 1 Reset bất đồng bộ
Kết quả của khối Segment
Engine Tập hợp 13 địa chỉ
(ID quy tắc) chứa dữ liệu khóa cần tìm
Dữ liệu mặt na tương ứng với địa chỉ khóa ¨ Mask = 0 à Dữ liệu là binary ¨ Mask = 1 à Dữ liệu là don’t care (*)
5 Set Mask ID Vào 8 Địa chỉ tương ứng của Dữ liệu mặt nạ (Mask Data)
6 Set Mask Enable Vào 1 - Tín hiệu được đưa vào khối
Mask Engine, báo hiệu sẵn
Hình 19: Cấu trúc bit của Masked Vector ID sàng cài đặt dữ liệu trong RAM
7 Masked Vector ID1 Ra 130 Vector ID đã được đánh dấu tương ứng với ID1
8 Masked Vector ID2 Ra 130 Vector ID đã được đánh dấu tương ứng với ID2
9 Masked Vector ID3 Ra 130 Vector ID đã được đánh dấu tương ứng với ID3
10 Masked Vector ID4 Ra 130 Vector ID đã được đánh dấu tương ứng với ID4
11 Masked Vector ID5 Ra 130 Vector ID đã được đánh dấu tương ứng với ID5
12 Masked Vector ID6 Ra 130 Vector ID đã được đánh dấu tương ứng với ID6
13 Masked VectorID7 Ra 130 Vector ID đã được đánh dấu tương ứng với ID7
Vector ID đã được đánh dấu tương ứng với ID8
Vector ID đã được đánh dấu tương ứng với ID9
16 Masked Vector ID10 Ra 130 Vector ID đã được đánh dấu tương ứng với ID10
17 Masked Vector ID11 Ra 130 Vector ID đã được đánh dấu tương ứng với ID11
18 Masked Vector ID12 Ra 130 Vector ID đã được đánh dấu tương ứng với ID12
19 Masked Vector ID13 Ra 130 Vector ID đã được đánh dấu tương ứng với ID13
Bảng 5: Mô tả tín hiệu vào ra của khối Mask engine
Khối Confirm Engine nhận tín hiệu từ ngõ vào Set Confirm Enable để quyết định thực hiện việc Cài Đặt/Tìm Kiếm IP thực hiện Cài Đặt khi Set Confirm Enable tích cực mức cao; và ngược lại, khối sẽ thực hiện Tìm Kiếm
+ Khi thực hiện Cài Đặt, IP sẽ nhận chuỗi dữ liệu Set Confirm String – 125-bit; và Set Confirm ID – địa chỉ tương ứng với chuỗi dữ liệu
+ Khi thực hiện Tìm Kiếm, IP nhận dữ liệu từ 13 véc tơ mặt nạ (Mask Vector1,
Mask Vector2, Mask Vector13) Confirm Engine thực hiện so sánh địa chỉ và trạng thái trong mỗi véc tơ, để cho ra kết quả cuối cùng Với 13 Vector mặt na, khối IP này sẽ trả về 13 kết quả tương ứng (17-bit/kết quả)
Hình 20: Sơ đồ khối Confirm engine
3.2.4.3 Sơ đồ khối chi tiết
Khối Confirm Engine nhận tín hiệu Set Confirm Enable để quyết định thực hiện Cài Đặt/Tìm Kiếm ¨ Cài Đặt: Bên trong IP là một 256 x 125-bit RAM – gọi là bộ nhớ xác minh Bộ nhớ này nhận 125-bit chuỗi dữ liệu xác minh – Set Confirm String và 8-bit địa chỉ – Set Confirm ID tương ứng với chuỗi dữ liệu làm ngõ vào
Khi Set Confirm Enable tích cực mức 1, tại địa chỉ Set Confirm ID, bộ nhớ thực hiện ghi 125-bit dữ liệu vào ô nhớ
Hình 21: Sơ đồ khối Mask engine
Hình 23: Cấu trúc bit của Set Confirm String Hình 22: Sơ đồ khối chi tiết khối Confirm Engine
ĐẶC TẢ THIẾT KẾ LÕI IP BỘ NHỚ KHẢ LẬP ĐỊA CHỈ NỘI DUNG 3 BIẾN (TCAM) _ CẢI TIẾN
Kiến trúc hệ thống
4.1.1 Sơ đồ khối Top level
Hình 30: Sơ đồ khối top level
H ình 31 : Sơ đ ồ kh ối ch i t iế t T op -le ve l
4.1.2 Mô tả tín hiệu vào ra
STT Tên chân Chiều Độ rộng bit Chức năng
1 clk Vào 1 Clock cung cấp cho IP
2 rst Vào 1 Reset bất đồng bộ
Dữ liệu khóa cần tìm địa chỉ được đưa vào IP để thực hiện việc tìm kiếm địa chỉ dữ liệu
Chuỗi dữ liệu được đưa vào các khối chức năng để thực hiện thiết lập dữ liệu TCAM
ID tương ứng với chuỗi dữ liệu được đưa vào các khối chức năng để thực hiện thiết lập dữ liệu TCAM
- Tín hiệu báo hiệu sẵn sàng thực hiện thiết lập dữ liệu vào TCAM
7 Rule ID Ra 8 Địa chỉ dữ liệu – ID tương ứng của dữ liệu khóa cần tìm địa chỉ
- Xác định dữ liệu ngõ ra có giá trị
- Báo hiệu TCAM đã thực hiện Cài Đặt xong 1 Rule
Bảng 8: Mô tả tín hiệu vào ra khối top level
4.1.3 Nguyên tắc hoạt động của khối top level
+ Cài Đặt: TCAM tiếp nhận 3 ngõ vào để thực hiện thiết lập dữ liệu vào bộ nhớ TCAM Ngõ vào Set String – chuỗi 125-bit dữ liệu bao gồm các dữ liệu cần thiết để thực thiện thiết lập TCAM: 8-bit thứ tự ưu tiên, 13-bit dữ liệu mặt nạ và 104-bit dữ liệu khóa Chuỗi dữ liệu trên sẽ được thiết lập vào các bộ nhớ tương ứng dựa trên 8-bit địa chỉ được gọi là ID – Set ID TCAM thực hiện Cài Đặt khi tín hiệu Set Enable tích cực mức 1 Khi thực hiện Cài Đặt, TCAM sẽ lần lượt tiếp nhận 1 chuỗi dữ liệu ,1 ID tương ứng và thiết lập các dữ liệu, quy trình này mất 2 clock để hoàn tất – tín hiệu Set Done tích cực mức 1.
+ Tìm Kiếm: TCAM nhận Key Input làm dữ liệu khóa để thực hiện tìm kiếm địa chỉ dữ liệu – ID tương ứng Dựa theo thuật toán đã được nêu ở Mục 2, 104-bit dữ liệu khóa sẽ được chia thành 13 mảnh 8-bit truy cập vào 13 ô nhớ khác nhau trong khối Segment Engine để thực hiện tìm kiếm ID và trả về kết quả là 130-bit Vector ID – gọi là Segment Vector và Mask data của ID tương ứng Kết quả này này sẽ được khối Mask Engine tiếp nhận và xử lý bằng cách cắt thành 13 đoạn 10-bit ID, bao gồm trạng thái, khác nhau Khối này thực hiện truy xuất Vector mặt nạ tương ứng với ID và đánh dấu các đoạn ID Kết quả trả về là 13 đoạn 130-bit Vector ID đã được đánh dấu – gọi là
13 đoạn dữ liệu 130-bit Vector ID trên sẽ trực tiếp so sánh thông qua quy trình xử lý của Confirm Engine Khối IP này sau đó sẽ truy xuất dữ liệu từ bộ nhớ xác minh
(reconfirmation memory), thực hiện xác minh, gắn cờ hiệu và thứ tự ưu tiên vào các kết quả
Khối Priority Engine tiếp nhận 13 kết quả, thực hiện việc so sánh các thứ tự ưu tiên nếu các kết quả từ khối Confirm Engine bị trùng lặp và trả về kết quả ID cần tìm của dữ liệu khóa
- Khi thực hiện Cài Đặt, TCAM nhận lần lượt 1 chuỗi dữ liệu và ID tương ứng để thiết lập Khi hoàn tất thiết lập dữ liệu sau 2 chu kì, TCAM nhận dữ liệu cài đặt tiếp theo
- Khi thực hiện Cài Đặt, Set Enable phải tích cực mức 1, TCAM thực hiện Tìm
Kiếm khi tín hiệu Set Enable có giá trị 0
Các khối trong hệ thống
Khối Segment Engine nhận dữ liệu từ ngõ vào tín hiệu Set Segment Enable để quyết định thực hiện việc Cài Đặt/Tìm Kiếm IP thực hiện Cài Đặt khi Set Segment Enable tích cực mức cao; và ngược lại, khối sẽ thực hiện Tìm Kiếm
+ Khi thực hiện Cài Đặt, IP sẽ nhận dữ liệu tương ứng Set Data và Set ID Trong đó Set data là nội dung của bộ nhớ địa chỉ nội dung (TCAM) và nội dung Mask vector của ID tương ứng; Set ID là 8-bit địa chỉ của bộ nhớ địa chỉ nội dung (TCAM)
+ Khi thực hiện Tìm Kiếm, IP nhận dữ liệu từ Key Input là dữ liệu ngõ vào ta cần phải tìm địa chỉ Khóa dữ liệu sẽ được cắt nhỏ thành 13 đoạn dữ liệu (8 bit/đoạn) Segment Engine xử lý và tạo ra 13 vector (bao gồm trạng thái) tương ứng chứa 13 đoạn dữ liệu (Segment Vector)
Hình 32: Sơ đồ khối Segment Engine
4.2.1.3 Sơ đồ khối chi tiết
Phụ thuộc vào tín hiệu Set Segment Enable, khối IP sẽ thực hiện Cài Đặt/Tìm
Kiếm ¨ Cài Đặt: Set Data đóng vai trò là địa chỉ của ID cài đặt vào RAM Ngõ vào Set ID đi vào 13 khối IP Status Engine khác nhau Khối IP này xử lý và đánh dấu trạng thái cho các đoạn địa chỉ và trả kết quả Set ID Mod để thực hiện việc ghi dữ liệu vào RAM Tín hiệu Done của khối FSM nối trực tiếp với Write Enable của RAM để báo hiệu dữ liệu đã sẵn sàng thiết lập vào RAM ¨ Tìm Kiếm: Dữ liệu khóa – Key Input sẽ được cắt nhỏ thành 13 mảnh dữ liệu (8 bit/đoạn) 13 mảnh dữ liệu này sẽ được đưa vào 13 ô nhớ tương ứng, Segment
Engine xử lý và trả về 13 ID (bao gồm trạng thái) tương ứng của 13 mảnh dữ liệu 13
ID này sẽ được ghép lại tạo thành một Vector ID gọi là – Segment Vector Bên cạnh đó
Segment Engine còn trả về 13 đoạn Mask data tương ứng với 13 ID trong Segment
Hình 33: Sơ đồ khối chi tiết khối Segment Engine
Hình 35: Cấu trúc bit của Segment Vector Hình 34: Cấu trúc bit data của RAM 256 x 23 bit
4.2.1.5 Mô tả tín hiệu vào ra
STT Tên chân Chiều Độ rộng bit Chức năng
1 clk Vào 1 Clock cung cấp cho IP
2 rst Vào 1 Reset bất đồng bộ
3 Key Vào 104 Khóa dữ liệu cần tìm địa chỉ
Dữ liệu khóa và mask vec-tơ của ID tương ứng được đưa vào khối Segment Engine thiết lập dữ liệu vào TCAM
ID tương ứng với dữ liệu khóa dùng để thiết lập dữ liệu vào TCAM
- Tín hiệu được đưa vào khối Segment Engine, báo hiệu sẵn sàng cài đặt dữ liệu trong RAM
Tập hợp 13 địa chỉ chứa khóa dữ liệu, bao gồm trạng thái
Dữ liệu mặt na tương ứng với địa chỉ khóa ¨ Mask = 0 à Dữ liệu là binary
Mask = 1 à Dữ liệu là don’t care (*)
Dữ liệu mặt na tương ứng với địa chỉ khóa ¨ Mask = 0 à Dữ liệu là binary
Mask = 1 à Dữ liệu là don’t care (*)
Dữ liệu mặt na tương ứng với địa chỉ khóa ¨ Mask = 0 à Dữ liệu là binary
Mask = 1 à Dữ liệu là don’t care (*)
Dữ liệu mặt na tương ứng với địa chỉ khóa ¨ Mask = 0 à Dữ liệu là binary
Mask = 1 à Dữ liệu là don’t care (*)
Dữ liệu mặt na tương ứng với địa chỉ khóa ¨ Mask = 0 à Dữ liệu là binary
Mask = 1 à Dữ liệu là don’t care (*)
Dữ liệu mặt na tương ứng với địa chỉ khóa ¨ Mask = 0 à Dữ liệu là binary
Mask = 1 à Dữ liệu là don’t care (*)
Dữ liệu mặt na tương ứng với địa chỉ khóa ¨ Mask = 0 à Dữ liệu là binary
Mask = 1 à Dữ liệu là don’t care (*)
Dữ liệu mặt na tương ứng với địa chỉ khóa ¨ Mask = 0 à Dữ liệu là binary
Page : 43 Mask = 1 à Dữ liệu là don’t care (*)
Dữ liệu mặt na tương ứng với địa chỉ khóa ¨ Mask = 0 à Dữ liệu là binary
Mask = 1 à Dữ liệu là don’t care (*)
Dữ liệu mặt na tương ứng với địa chỉ khóa ¨ Mask = 0 à Dữ liệu là binary
Mask = 1 à Dữ liệu là don’t care (*)
Dữ liệu mặt na tương ứng với địa chỉ khóa ¨ Mask = 0 à Dữ liệu là binary
Mask = 1 à Dữ liệu là don’t care (*)
Dữ liệu mặt na tương ứng với địa chỉ khóa ¨ Mask = 0 à Dữ liệu là binary
Mask = 1 à Dữ liệu là don’t care (*)
Dữ liệu mặt na tương ứng với địa chỉ khóa ¨ Mask = 0 à Dữ liệu là binary
Mask = 1 à Dữ liệu là don’t care (*)
Bảng 9: Mô tả tín hiệu vào ra của khối Segment engine
Khối Status Engine là một máy trạng thái, nhận 8-bit ID - Set ID là ngõ vào IP này giao tiếp trực tiếp với 13 khối RAM để kiểm tra dữ liệu trong RAM và đánh dấu trạng thái các ID chuẩn bị được ghi vào
Hình 36: Sơ đồ khối Status Engine
Hình 37: State machine khối Status Engine
Page : 45 Khối IP là Máy Trạng Thái (FSM) kiểu Moore Tín hiệu Set Segment Enable điều khiển hoạt động của IP
Khi Set Segment Enable tích cực 1, máy trạng thái chuyển sang trạng thái tiếp theo Ở trạng thái tiếp theo, IP sẽ kiểm tra dữ liệu trong RAM và đánh dấu trạng thái cho dữ liệu mới, trả về ngõ ra Set ID Mod Sau đó, IP sẽ tự động quay về trạng thái ban đầu và đợi tín hiệu Cài Đặt tiếp theo
Cấu trúc bit của Set ID Mod
4.2.2.4 Mô tả tín hiệu vào ra
STT Tên chân Chiều Độ rộng bit Chức năng
1 clk Vào 1 Clock cung cấp cho IP
2 rst Vào 1 Reset bất đồng bộ
Dữ liệu hiện có trong TCAM bao gồm 2-bit biểu diễn trạng thái, 8-bit ID
4 i_Set_ID Vào 8 ID tương ứng với dữ liệu khóa để thực hiện Cài Đặt
5 i_Set_Segment_Enable Vào 1 - Tín hiệu được đưa vào khối
Hình 38: Cấu trúc bit của Set ID Mod sẵn sàng cài đặt dữ liệu trong TCAM
6 i_Mask Data Vào 13 13 bit mask của ID tương ứng
Dữ liệu đã được đánh dấu trạng thái và 13 bit mask tương ứng của dữ liệu, sẵn sàng cài đặt vào TCAM
- Tín hiệu ngõ ra, báo hiệu việc đánh dấu trạng thái đã hoàn tất và sẵn sàng Cài Đặt
- Tín hiệu này được kết nối trực tiếp với tín hiệu write enable của RAM, báo hiệu
RAM sẵn sàng thiết lập dữ liệu
Bảng 10: Mô ta tín hiệu vào ra khối Status Engine
+ Khi thực hiện Tìm Kiếm, IP nhận dữ liệu từ Segment Vector bao gồm 13 đoạn 10-bit dữ liệu ID và Mask data của ID trên từng đoạn segment của Segment Vector Dựa vào các địa chỉ đó, Mask Engine xử lí và tạo ra vector mặt nạ cho từng địa chỉ tương ứng
4.2.3.3 Sơ đồ khối chi tiết
Hình 39: Sơ đồ khối Mask Engine
Hình 40: Sơ đồ khối chi tiết khối Mask Engine
4.2.3.4 Giải thuật ¨ Tìm kiếm: IP nhận 130-bit Segment Vector và 13 Mask data được tạo ra từ IP Segment Engine – làm ngõ vào Segment Vector sẽ được cắt làm 13 đoạn 10- bit dữ liệu ID – mỗi đoạn bao gồm 2-bit mô tả trạng thái dữ liệu và 8-bit ID – để thực hiện quá trình đánh dấu dữ liệu (như đã đề cập ở Mục 2) 13 đoạn 10-bit dữ liệu ID này sẽ đánh dấu dựa trên Mask data và trả về kết quả là 13 Vector ID đã được đánh dấu – gọi là Masked Vector tương ứng với 13 ID trong Segment Vector
Cấu trúc bit của Masked Vector
Hình 41: Cấu trúc bit của Masked Vector ID
4.2.3.5 Mô tả tín hiệu vào ra
STT Tên chân Chiều Độ rộng bit Chức năng
1 clk Vào 1 Clock cung cấp cho IP
2 rst Vào 1 Reset bất đồng bộ
Kết quả của khối Segment
Engine Tập hợp 13 địa chỉ
(ID quy tắc) chứa dữ liệu khóa cần tìm
Dữ liệu mặt na tương ứng với địa chỉ khóa ¨ Mask = 0 à Dữ liệu là binary ¨ Mask = 1 à Dữ liệu là don’t care (*)
Dữ liệu mặt na tương ứng với địa chỉ khóa ¨ Mask = 0 à Dữ liệu là binary
Mask = 1 à Dữ liệu là don’t care (*)
Dữ liệu mặt na tương ứng với địa chỉ khóa ¨ Mask = 0 à Dữ liệu là binary
Mask = 1 à Dữ liệu là don’t care (*)
Dữ liệu mặt na tương ứng với địa chỉ khóa ¨ Mask = 0 à Dữ liệu là binary
Mask = 1 à Dữ liệu là don’t care (*)
Dữ liệu mặt na tương ứng với địa chỉ khóa ¨ Mask = 0 à Dữ liệu là binary
Mask = 1 à Dữ liệu là don’t care (*)
Dữ liệu mặt na tương ứng với địa chỉ khóa ¨ Mask = 0 à Dữ liệu là binary
Mask = 1 à Dữ liệu là don’t care (*)
Dữ liệu mặt na tương ứng với địa chỉ khóa ¨ Mask = 0 à Dữ liệu là binary
Mask = 1 à Dữ liệu là don’t care (*)
Dữ liệu mặt na tương ứng với địa chỉ khóa ¨ Mask = 0 à Dữ liệu là binary
Mask = 1 à Dữ liệu là don’t care (*)
Dữ liệu mặt na tương ứng với địa chỉ khóa ¨ Mask = 0 à Dữ liệu là binary
Mask = 1 à Dữ liệu là don’t care (*)
Dữ liệu mặt na tương ứng với địa chỉ khóa ¨ Mask = 0 à Dữ liệu là binary
Mask = 1 à Dữ liệu là don’t care (*)
Dữ liệu mặt na tương ứng với địa chỉ khóa ¨ Mask = 0 à Dữ liệu là binary
Mask = 1 à Dữ liệu là don’t care (*)
Dữ liệu mặt na tương ứng với địa chỉ khóa ¨ Mask = 0 à Dữ liệu là binary
Mask = 1 à Dữ liệu là don’t care (*)
Dữ liệu mặt na tương ứng với địa chỉ khóa ¨ Mask = 0 à Dữ liệu là binary
Mask = 1 à Dữ liệu là don’t care (*)
17 Masked Vector ID1 Ra 130 Vector ID đã được đánh dấu tương ứng với ID1
18 Masked Vector ID2 Ra 130 Vector ID đã được đánh dấu tương ứng với ID2
19 Masked Vector ID3 Ra 130 Vector ID đã được đánh dấu tương ứng với ID3
20 Masked Vector ID4 Ra 130 Vector ID đã được đánh dấu tương ứng với ID4
21 Masked Vector ID5 Ra 130 Vector ID đã được đánh dấu tương ứng với ID5
22 Masked Vector ID6 Ra 130 Vector ID đã được đánh dấu tương ứng với ID6
23 Masked VectorID7 Ra 130 Vector ID đã được đánh dấu tương ứng với ID7
24 Masked Vector ID8 Ra 130 Vector ID đã được đánh dấu tương ứng với ID8
25 Masked Vector ID9 Ra 130 Vector ID đã được đánh dấu tương ứng với ID9
26 Masked Vector ID10 Ra 130 Vector ID đã được đánh dấu tương ứng với ID10
27 Masked Vector ID11 Ra 130 Vector ID đã được đánh dấu tương ứng với ID11
28 Masked Vector ID12 Ra 130 Vector ID đã được đánh dấu tương ứng với ID12
29 Masked Vector ID13 Ra 130 Vector ID đã được đánh dấu tương ứng với ID13
Bảng 11: Mô tả tín hiệu vào ra của khối Mask engine
4.2.4 Khối Confirm Engine và Priority Engine
>
HỆ THỐNG KIỂM TRA THỰC NGHIỆM LÕI IP BỘ NHỚ ĐỊA CHỈ NỘI DUNG TRÊN FPGA
Sơ đồ hệ thống kiểm tra thiết kế trên Quartus và modelsim
5.1.1 Kiểm tra và đánh giá thiết kế trên quartus
IP được synthesis trên phần mềm quartus Kết quả synthesis cho thiết kế là thành công và sau đây là những đánh giá cũng như kết quả so sánh với những nghiên cứu khác
Hình 42: Kết quả synthesis version 1
Hình 43: Kết quả synthesis version 2
Bảng 12: Bảng tần số hoạt động tối đa cho phép của hai version
Hình 44: Kết quả tần số hoạt động tối đa cho phép của hai version
0 50 100 150 200 250 UE-TCAM : An Ultra Efficient SRAM-based
E-TCAM : An efficient SRAM-based architecture for
Z-TCAM : An SRAMbased architecture for TCAM_512 x 36 (2014) [29]
Hybrid partitioned SRAM-based ternary content addressable memory_512 x 36 (2012) [30]
FAST CONTENT UPDATING ALGORITHM FOR SRAM-
Parameteriz Content- able Addressable Memory_51
E-TCAM : An efficient SRAM-based architecture TCAM_512 x for
Z-TCAM : An SRAMbased architecture TCAM_512 x for
Hybrid partitioned SRAM-based ternary content addressable memory_51
CONTENT FAST UPDATING ALGORITHM FOR SRAM- BASED TCAM _512 x 36 (2018) [20]
Hình 45: Tần số hoạt động tối đa cho phép của giải thuật so với những nghiên cứu khác
5.1.1.3 Kết quả Memory Usage ¨ Bộ nhớ được sử dụng trong bài này là 256 x 40-bit M10K cho thiết kế Collision
TCAM 256 x 104 bit và 512 x 20-bit M10K cho thiết kế Collison TCAM (512 x 104 bit) ¨ Với mỗi instance RAM có độ lớn nhỏ hơn hoặc bằng 256 x 40-bit hoặc 512 x 20 bit RAM thì khi đó 1 M10K được tạo ra ¨ Tính toán: o Trong thiết kế, ta cần 1 RAM với độ lớn 256 x 13-bit RAM để lưu trữ dữ liệu Với lượng dữ liệu này, 1 M10K với độ lớn 256 x 40-bit hoàn toàn có thể thỏa mãn yêu cầu Sau khi tổng hợp, Quartus sẽ tạo ra 1 M10K o Trong trường hợp thiết kế của ta cần 1 RAM với độ lớn 256 x 125-bit RAM để lưu trữ dữ liệu Tuy nhiên M10K chỉ có thể chứa tối đa 40-bit dữ liệu Để khắc phục vấn đề này, Quartus sẽ ghép nối các M10K với nhau để tạo ra bộ nhớ có số bit dữ liệu lớn hơn hoặc bằng dữ liệu mà ta cần Do đó, cần ít nhất
125 / 40 = 3.125 => 4 M10K để có thể lưu trữ 125-bit dữ liệu o Trong trường hợp thiết kế cho TCAM ( 512 x 104 bit) chúng ta cần 1 RAM với độ lớn 512 x 126 -bit dữ liệu Tương tự như trên, quartus sẽ ghép nối các M10K với nhau để tạo ra bộ nhớ có số bị dữ liệu lớn hơn hoặc bằng dữ liệu mà ta cần Do đó, cần ít Nhất 126 /20 = 6,3 è 7 M10K để có thể lưu trữ 126- bit dữ liệu o Ta có bảng tính toán số luợng M10K cho mỗi thiết kế sau đây:
13 RAM instances Độ lớn mỗi RAM 256 x 10-bit
Tổng M10K toàn thiết kế 78 è 780 kb Memory
Bảng 13: Bảng tính số lượng M10K cho thiết kế Collision TCAM 256 x 104 ( ver 1)
Số instances 13 RAM instances 0 RAM instances 13 RAM instances Độ lớn mỗi RAM 256 x 23-bit
Tổng M10K toàn thiết kế 65 è 650 kb Memory
Số instances 13 RAM instances 0 RAM instances 13 RAM instances Độ lớn mỗi RAM 256 x 24-bit
Tổng M10K toàn thiết kế 104 è 1040 kb Memory
Bảng 14: Bảng tính số lượng M10K cho thiết kế Collision TCAM 256 x 104 ( ver 2)
Bảng 15: Bảng tính số lượng M10K cho thiết kế Collision TCAM 512 x 104 ( ver 2)
Hình 46: Tài nguyên bộ nhớ tiêu thụ của thiết kế so với những nghiên cứu kkhác
UE-TCAM : An Ultra Efficient SRAM-based
E-TCAM : An efficient SRAM-based architecture for TCAM_512 x 36 (2014) [27]
Z-TCAM : An SRAMbased architecture for
Hybrid partitioned SRAM-based ternary content addressable memory_512 x 36 (2012) [30]
FAST CONTENT UPDATING ALGORITHM FOR
UE-TCAM : An Ultra Efficient SRAM- based TCAM_51
Parameter izable Content- Addressab Memory_ le
E-TCAM : An efficient SRAM- based architectu re for TCAM_51
Z-TCAM : An SRAMbase d architectu re for TCAM_51
Hybrid partitione d SRAM- based ternary content addressab memory_ le
5.1.2 Xây dựng môi trường kiểm tra Mô phỏng bằng ModelSim
Việc kiểm tra lõi IP được thực hiện trên phần mềm Môi trường kiểm tra được xây dựng bởi ModelSim Với môi trường kiểm tra được xây dựng như trên giúp cho việc kiểm tra lõi IP một cách đơn giản và dễ dàng kiểm tra sửa lỗi bằng cách đọc các thông số và xem dạng sóng ở ModelSim
Môi trường kiểm tra bằng Mô phỏng như hình:
Hình 47: Cấu trúc file test bench
Page : 63 Testbench: đóng vai trò là driver, để đọc khối IP chính, cung cấp các testcase cho việc kiểm tra thiết kế
Hình 48: Kết quả mô phỏng modelsim
H ình 49 : K ết qu ả mô tả d ạng són g tr ên m ode ls im
Sơ đồ hệ thống kiểm tra thiết kế trên FPGA
HPS sử dụng chương trình C để điều khiển và giao tiếp với TCAM Adapter thông qua cầu AXI - Avalon Memory Map Với giao thức của AXI - Avalon Memory Map tối giản, giống với giao thức của RAM, chương trình C của HPS sẽ truyền tuần tự các dữ liệu vào TCAM Adapter
Giao thức AXI - Avalon Memory Map bao gồm chân Write (cho phép ghi), Read (cho phép đọc), Writedata (nội dung ghi) và Readdata (nội dung đọc) Các biến này tự động điều chỉnh theo CPU Assembly
Khi ghi, write sẽ được chỉnh bằng 1, lúc này writedata sẽ được ghi vào ô có địa chỉ tương ứng Còn lại write bằng 0 Khi đọc, read sẽ được chỉnh bằng 1, lúc này readdata sẽ được đưa lên bộ nhớ ảo, sau đó đưa vào biến giá trị mà HPS chứa nội dung đọc Address là địa chỉ của các buffer tương ứng với nội dung được ghi sau đây
Trong TCAM Adapter, có chứa các buffer bao gồm Địa chỉ Độ dài Nội dung
Hình 50: Môi trường kiểm tra thực nghiệm lõi IP trên FPGA
7 16-bit 15’d0, 1-bit Valid, 8-bit Result
Bảng 16: Nội dung TCAM Adapter
Giao thức AXI - Avalon Memory Map tối giản cho phép đọc và ghi (2 chiều) tối đa 32-bit/chu kỳ Đầu tiên, chương trình HPS sẽ cho Biến Trạng Thái là 4’b0000, mức đợi lệnh Khi đó bắt đầu truyền các dữ liệu đầu vào gồm Rule ID, Key, Mask Vector, và Priority vào TCAM Adapter theo địa chỉ tương ứng
Bước tiếp theo, HPS ghi biến trạng thái 4’b0001 nếu thực hiện ghi (set), hoặc 4’b0100 nếu thực hiện tìm (search) Việc canh thời gian và nhận lại kết quả từ TCAM vào biến Result và Valid sẽ được TCAM Adapter thực hiện tự động HPS chỉ cần đọc trở về Result và Valid thông qua cổng AXI - Avalon Memory Map, chân r và readdata
5.2.2 Hành vi của TCAM Adapter: ¨ Nếu biến trạng thái là 4’b0001 (set) thì TCAM Adapter thực hiện các tác vụ
● Ghi Rule ID vào i_set_RuleId
● Ghi Key vào i_set_Key
● Ghi RuleID, Mask Vector, Key, và Prioritiy vào i_set_String
● Cho biến i_set_enable = 1 trong quá trình chuyển
● Khi kết thúc quá trình ghi, cho tất cả các biến trở lại thành 0
● Adapter trở về trạng thái chờ nhận lệnh ¨ Nếu biến trạng thái là 4’b0100 (search) thì TCAM Adapter thực hiện các tác vụ
● Ghi buffer Rule ID vào i_RuleID
● Ghi buffer Key vào i_Key
● Cho biến i_set_enable = 0 trong quá trình chuyển
● Đợi TCAM cho về kết quả
● Nhận lại kết quả thành công thì ghi kết quả vào buffer (Result_and_Valid)
● Nếu chờ kết quả quá lâu, quá 15 chu kỳ thì sẽ ghi giá trị don’t care vào buffer (Result_and_Valid)
● Sau đó cho i_RuleID và i_Key thành 0 và kết thúc quá trình tìm
Bảng 17: Mẫu nội dung BGP dataset
Hình 51: Kết quả kiểm tra thực nghiệm lõi IP trên FPGA