You are on page 1of 38

ĐẠI HỌC QUỐC GIA TP.

HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC BÁCH KHOA
KHOA ĐIỆN – ĐIỆN TỬ
BỘ MÔN ĐIỆN TỬ
---------------o0o---------------

ĐỒ ÁN MÔN HỌC

Scalable Ternary Content Addressable Memory


Implementation Using FPGAs

GVHD: TS. Trần Hoàng Linh


SVTH: Nguyễn Phan Thiên Phúc - 1910455
Lê Minh Châu - 1912764

TP. HỒ CHÍ MINH, THÁNG 05 NĂM 2022


Lời cảm ơn GVHD: TS. Trần Hoàng Linh

LỜI CẢM ƠN
Trong suốt quá trình học tập, thực hiện và hoàn thành đồ án 1 này, em đã nhận được sự
hướng dẫn, giúp đỡ của thầy, các anh trong lab 203B3. Em cảm ơn thầy – TS. Trần Hoàng
Linh, đã đưa những định hướng và tư vấn để chúng em có được góc nhìn tổng quát về lĩnh vực
này, song với đó, em cũng muốn gửi lời cảm ơn đến “anh thầy” – ThS. Trịnh Vũ Đăng Nguyên,
đã giúp đỡ em trong quá trình thực hiện đồ án.
Tp. Hồ Chí Minh, ngày 04 tháng 06 năm 2022.
Sinh viên

i
Đồ án môn học GVHD: TS. Trần Hoàng Linh

TÓM TẮT ĐỒ ÁN

TCAM ngày nay được sử dụng rộng rãi trong thiết bị với nhiều chức năng tìm kiếm
khác nhau. Song song với đó, việc thực hiện TCAM trên phần cứng có thể tái lập trình như
FPGA ngày càng được quan tâm nhiều hơn. Hầu hết, các thiết kế TCAM trên nền tảng FPGA
hiện nay đều dựa trên thuật toán brute – froce, hiểu nôm na là một thuật toán vét cạn, thuật toán
này sẽ thực hiện tất cả các trường hợp để có thể giải quyết một vấn đề nào đó, chính điều này
dẫn đến việc sử dụng không hiệu quả nguồn tài nguyên trên phần cứng của chúng ta.
Để có thể giải quyết được vấn đề trên, trong khuôn khổ đồ án 1 này, nhóm chúng em
sẽ trình bày một kiến trúc TCAM dựa trên RAM có khả năng mở rộng có hoạch định trước để
đạt được hiệu quả trên nền tảng FPGA. Trong đó, chúng em có trình bày những ý tưởng và
thuật toán của thiết kế. Dựa theo bài báo “Scalable Ternary Content Addressable Memory
Implementation Using FPGAs” của tác giả Weirong Jiang, tác giá đã đề xuất một kiến trúc mà
chúng có thể ghép nối thành một khối lớn bao gồm nhiều đơn vị TCAM dựa trên RAM.

ii
Đồ án môn học GVHD: TS. Trần Hoàng Linh

MỤC LỤC

1. GIỚI THIỆU ....................................................................................................................... 1

1.1 Tổng quan ...................................................................................................................... 1

1.2 Nhiệm vụ đề tài .............................................................................................................. 1

1.3 Phân chia công việc trong nhóm .................................................................................... 1

2. LÝ THUYẾT ...................................................................................................................... 2

Chương 1: GIỚI THIỆU CHUNG VỀ RAM, CAM.............................................................. 2

1.1. Sơ lược về bộ nhớ RAM:......................................................................................... 2

1.2. Sơ lược về bộ nhớ CAM:......................................................................................... 3

Chương 2: CÁCH THỨC HOẠT ĐỘNG TCAM & TỔ CHỨC BỘ NHỚ TCAM BẰNG
BỘ NHỚ RAM TRUYỀN THỐNG TRÊN NỀN TẢNG FPGA .......................................... 4

2.1. Cách thức hoạt động TCAM: ...................................................................................... 4

2.2. Tổ chức TCAM bằng RAM truyền thống trên nền tảng FPGA: ............................. 6

2.2.1. TCAM dựa trên RAM: ..................................................................................... 6

2.2.2. Cách tổ chức bộ nhớ TCAM trên nền RAM: ................................................... 8

Chương 3: PHƯƠNG THỨC HOẠT ĐỘNG VÀ MỞ RỘNG BỘ NHỚ TCAM ................. 9

3.1. Phương thức hoạt động của bộ nhớ TCAM: ............................................................. 10

3.1.1. Phương thức tìm kiếm dữ liệu trong bộ nhớ TCAM: ........................................ 10

3.1.2. Phương thức cập nhật dữ liệu vào bộ nhớ TCAM: ............................................ 12

3.2. Mở rộng bộ nhớ TCAM: ........................................................................................... 15

3.2.1. Depth Extension (the number of words in the TCAM  N) hay mở rộng số

lượng rule trong TCAM: .............................................................................................. 15

3.2.2. Width Extension (the numbers of bits of each TCAM word) hay mở rộng độ
rộng data trong mỗi rule trong TCAM:........................................................................ 17

Chương 4: GIẢI THUẬT SCALABLE TCAM IMPLEMENTATION USING FPGAs .... 19

4.1. Mô hình tổng quát: ................................................................................................ 19

4.2. Độ phức tạp của thuật toán – Big O Notation: ...................................................... 20

iii
Đồ án môn học GVHD: TS. Trần Hoàng Linh

4.3. Lookup (tìm kiếm): ................................................................................................ 21

4.4. Update (cập nhật): ................................................................................................. 22

4.5. Space Analysis (phân tích không gian): ................................................................ 23

Chương 5: SƠ ĐỒ KHỐI HỆ THỐNG................................................................................ 25

5.1. Sơ đồ khối cơ bản cho giải thuật 1: ....................................................................... 25

5.2. Sơ đồ khối cơ bản cho giải thuật 2: ....................................................................... 27

5. THIẾT KẾ VÀ THỰC HIỆN PHẦN CỨNG .................................................................. 30

6. THIẾT KẾ VÀ THỰC HIỆN PHẦN MỀM (NẾU CÓ) .................................................. 30

7. KẾT QUẢ THỰC HIỆN .................................................................................................. 30

8. KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN ........................................................................ 30

8.1. Kết luận ..................................................................................................................... 30

8.2. Hướng phát triển ....................................................................................................... 30

9. TÀI LIỆU THAM KHẢO ................................................................................................ 30

10. PHỤ LỤC..................................................................................................................... 30

iv
Đồ án môn học GVHD: TS. Trần Hoàng Linh

DANH SÁCH HÌNH MINH HỌA


Hình 2-1 Minh họa một khối RAM điển hình. .......................................................................... 2

Hình 2-2 Khối RAM điển hình. ................................................................................................. 3

Hình 2-3 Minh họa một khối CAM điển hình. .......................................................................... 3

Hình 2-4 Minh họa một khối TCAM ......................................................................................... 6

Hình 2-5 Đặc trưng ngõ vào và ngõ ra của khối TCAM và RAM ............................................ 7

Hình 2-6 Mô tả nối quan hệ giữa hai tổ chức bộ nhớ, RAM và TCAM .................................... 7

Hình 2-7 Mô tả việc thực hiện TCAM bằng RAM trên nền tảng FPGA ................................... 7

Hình 2-8 Thực hiên một TCAM 12 bằng RAM 41 ............................................................ 8

Hình 2-9 Thực hiện một TCAM 22 bằng RAM 42 ............................................................ 9

Hình 2-10 Tổ chức bộ nhớ TCAM theo RAM .......................................................................... 9

Hình 2-11 Nhắc lại mối quan hệ vào ra cuả TCAM và RAM. ................................................ 12

Hình 2-12 TCAM 1 × 1 và RAM 2 × 1 tương ứng ................................................................ 12

Hình 2-13 Thực hiện một TCAM 11 bằng RAM 21 ........................................................ 13

Hình 2-14 Cập nhật TCAM 1 × 1 ........................................................................................... 13

Hình 2-15 Cập nhật TCAM 2 × 1 ........................................................................................... 14

Hình 2-16 Cập nhật TCAM 2 × 2 ........................................................................................... 14

Hình 2-17 Cập nhật TCAM 1 × 2 ........................................................................................... 15

Hình 2-18 Mô tả Depth Extension ........................................................................................... 16

Hình 2-19 Mô tả Width Extension ........................................................................................... 18

Hình 2-20 Xây dựng TCAM 1 × 2 bằng cách sử dụng hai TCAM 1 × 1 .............................. 18

Hình 2-21 Cơ sở dữ liệu của TCAM 16 × 16 ......................................................................... 25

Hình 2-22 Các RAM tương ứng khi chia Data thành 8 phần .................................................. 25

Hình 2-23 Kiến trúc cơ bản (chưa thêm update logic)............................................................. 26

Hình 2-24 Sơ đồ khối được thêm vào khối Update logic, CMP (Compare), CHG (Change) . 28

Hình 2-25 Mô tả khối CHG ..................................................................................................... 28

Hình 2-26 Mô tả khối CMP ..................................................................................................... 28

v
Đồ án môn học GVHD: TS. Trần Hoàng Linh

Hình 2-27 Mô tả chi tiết một khối RAM đã được thêm vào update logic, CMP, CHG. ......... 29

vi
Đồ án môn học GVHD: TS. Trần Hoàng Linh

DANH SÁCH BẢNG SỐ LIỆU

Bảng 2-1 Ví dụ về cơ sở dữ liệu cơ bản trong một khối RAM điển hình trong hình 2-1. ......... 2

Bảng 2-2 Ví dụ về cơ sở dữ liệu cơ bản trong một khối RAM điển hình trong hình 2-3. ......... 4

Bảng 2-3 Bảng chân trị của bộ mã hóa ưu tiên 4 sang 2 ........................................................... 5

Bảng 2-4 Dữ liệu trong TCAM 6 × 4. ..................................................................................... 10

Bảng 2-5 Mối quan hệ khi thực hiện TCAM 𝑁 × 𝑊 bằng RAM ........................................... 10

Bảng 2-6 Dữ liệu trong RAM 16 × 6. ..................................................................................... 11

Bảng 2-7 Bảng ký hiệu các giá trị ............................................................................................ 12

Bảng 2-8 Data chứa trong RAM 2 × 1 khi thực hiện TCAM 1 × 1 ....................................... 13

Bảng 2-9 Một số hàm dùng để phân tích giải thuật ................................................................. 21

vii
Đồ án môn học GVHD: TS. Trần Hoàng Linh

1. GIỚI THIỆU

1.1 Tổng quan

Nhu cầu sử dụng bộ nhớ truy xuất dữ liệu đa dạng, xuất hiện trong các bộ xử lý và điều
hướng trong các hệ thống cơ sở dữ liệu lớn, mạng lưới cho trí tuệ nhân tạo…từ đó gia tăng nhu
cầu tích hợp bộ nhớ truy xuất dữ liệu trên FPGA. Trong số các thiết kế TCAM dựa trên FPGA
đã được đề ra, nhưng đa số đều đang dùng giải thuật brute – force dẫn đến tiêu tốn tài nguyên
phần cứng rất nhiều, chính yếu tố này làm chúng ít được chú ý đến trong thực tế. Mặt khác,
một số tác vụ hiện tại đã cho ta thấy rằng RAM có thể được dùng để thực hiện như một TCAM.
Tuy nhiên, không có bất kỳ một minh chứng chính xác hay một học liệu thực hiện hiệu quả
trên FPGA. Những ý tưởng họ đặt ra chỉ tương đối vững chắc, điều này hiển nhiên dẫn đến
việc không thực hiện tốt các TCAM có kích thước lớn hơn.

1.2 Nhiệm vụ đề tài

Trong đồ án này, chúng em xin giới thiệu một loại kiến trúc có khả năng ghép mỗi đơn
vị nhỏ riêng biệt thành một khối lớn hơn, cũng như khả năng mở rộng bằng các đơn vị TCAM
dựa trên RAM có kích thước nhỏ. Đồng thời chúng em nêu ra giải thuật phía sau cùng với sơ
đồ khối, với đó, chúng em hiện thực với kích thước TCAM 1616. Chúng em đề ra thứ tự nội
dung sẽ tìm hiểu, các nội dung như sau:

Nội dung 1: Tìm hiểu lý thuyết nguyên lý hoạt động của bộ nhớ TCAM, giới thiệu TCAM
dựa trên RAM và xác định được thách thức trong việc thực hiện một TCAM dựa trên RAM có
kích thước lớn.

Nội dung 2: Trình bày giải thuật để thực hiện kiến trúc này.

Nội dung 3: Dựa trên giải thuật kiến trúc vừa được trình bày ở nội dung 2, chúng ta sẽ
xâu dựng nên sơ đồ khối để thực hiện xây dựng một khối TCAM có kích thước 3216.

1.3 Phân chia công việc trong nhóm


Thành viên nhóm Công việc
Nguyễn Phan Thiên Phúc Tìm hiểu giải thuật, các
vấn đề lý thuyết liên quan,
viết quyển, soạn slide trình
bày
Lê Minh Châu Đọc hiểu và xây dựng sơ
đồ khối

1
Đồ án môn học GVHD: TS. Trần Hoàng Linh

2. LÝ THUYẾT

Chương 1: GIỚI THIỆU CHUNG VỀ RAM, CAM

1.1. Sơ lược về bộ nhớ RAM:

RAM (Random Access Memory) là một loại bộ nhớ khả biến cho phép đọc – ghi ngẫu
nhiên dữ liệu đến bất kỳ vị trí nào trong bộ nhớ dựa theo địa chỉ của bộ nhớ. Dựa vào chức
năng tương ứng mà RAM được chia thành hai loại, SRAM và DRAM, nhưng ở đây, chúng ta
không thực hiện phân tích kỹ cho từng loại RAM mà chúng ta chỉ thực hiện phân tích tổng quát
về phương thức hoạt động trong RAM.

Hình 2-1 Minh họa một khối RAM điển hình.


Như đã trình bày sơ lược rằng RAM sẽ truy xuất đến địa chỉ được cung cấp để thực viện
tác vụ lên nội dung cần tìm đến. Khi quan sát ở hình 2-1, ngõ vào lúc này là địa chỉ 01, lúc đó
RAM sẽ tra cứu và cung cấp cho ta được nội dung đang chứa trong địa chỉ đó. Như vậy, chúng
ta có thể hiểu rằng, ngõ vào của RAM là địa chỉ chứa thông tin mà chúng ta cần truy xuất và
ngõ ra là thông tin được chứa trong địa chỉ mà chúng ta vừa cung cấp.

INPUT OUTPUT
Add Data
00 10101
01 01101
10 01100
11 10011
Bảng 2-1 Ví dụ về cơ sở dữ liệu cơ bản trong một khối RAM điển hình trong hình 2-1.
Chúng ta có thể vẽ nên được sơ đồ khối của một khối RAM truyền thống đơn giản như
sau:

2
Đồ án môn học GVHD: TS. Trần Hoàng Linh

Hình 2-2 Khối RAM điển hình.


Thông qua khối RAM điển hình ở hình 2-2, RAM có hai chế độ hoạt động: chế độ Ghi
(Write) và chế độ Đọc (Read). Khi RAM thực hiện ghi dữ liệu, RAM sẽ được cung cấp địa chỉ
cần trỏ đến và thực hiện đưa data vào địa chỉ; đối với chế độ đọc dữ liệu, chúng ta nạp vào
RAM một địa chỉ cần truy xuất và ta thu lại được nội dung được chứa tại địa chỉ đấy.

1.2. Sơ lược về bộ nhớ CAM:

CAM (Content Addressable Memory) là 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 hay nói cách khác, đây là bộ nhớ
thực hiện tìm kiếm theo nội dung và trả về kết quả dưới dạng địa chỉ ô nhớ. Dưới đây là một
khối CAM điển hình.

Hình 2-3 Minh họa một khối CAM điển hình.


Như trình bày trong hình 2-3, dữ liệu truyền vào hay từ khóa sẽ được tìm kiếm đồng thời
trong bốn dữ liệu được lưu trữ trong CAM. Ở đây, khi chúng ta quan sát tại các địa chỉ 00, 01
và 10 sẽ cho ra kết quả MATCH = 0, và tại địa chỉ 11 sẽ cho ra kết quả MATCH = 1 cùng với
địa chỉ tương ứng là 11. Vậy chúng ta khẳng định lại rằng, ngõ vào của CAM là dữ liệu chứa
trong bộ nhớ và ngõ ra chúng ta nhận được là địa chỉ chứa dữ liệu mà chúng ta đưa vào. Nhưng
khác với RAM, đối với CAM dữ liệu là chúng ta nạp vào được gọi là Data và địa chỉ mà chúng
ta thu về được gọi là Id hoặc Rule.

3
Đồ án môn học GVHD: TS. Trần Hoàng Linh

OUTPUT INPUT
Id/ Rule Data
00 1010101
01 1110000
10 1001101
11 0000101
Bảng 2-2 Ví dụ về cơ sở dữ liệu cơ bản trong một khối RAM điển hình trong hình 2-3.
Đối với CAM, chúng ta có hai chế độ hoạt động, gồm: Setting và Search. Ở chế độ
Setting, chúng hoạt động gần giống với chế độ Write của RAM, nhưng chúng sẽ điền data vào
và kèm theo rule tương ứng. Còn ở chế độ Search, chỉ đơn giản rằng chúng ta nạp vào CAM
một nội dung và chúng ta nhận lại được là địa chỉ chứa nội dung đó.

Có hai loại CAM, đó là BCAM (Binary CAM) và TCAM (Ternary CAM). Trong đó,
BCAM chỉ biểu diễn hay giá trị 0 hoặc 1, nhưng đối với TCAM, chúng còn có thể biểu diễn cả
giá trị tùy định. Chúng ta có thể nhận ra rằng, đối với CAM, chúng không hỗ trợ giá trị tùy
định nên nhu cầu sử dụng tài nguyên bộ nhớ là vô cùng lớn, đối với TCAM, do có giá trị tùy
định nên nhu cầu sử dụng tốt hơn nhưng ta phải đánh đổi rằng phải thêm một bộ mã hóa ưu
tiên để xác quyết được giá trị ở ngõ ra. Để tìm hiểu rõ hơn về TCAM, chúng ta sẽ bước sang
chương 2 để có góc nhìn sâu sắc hơn về TCAM.

Chương 2: CÁCH THỨC HOẠT ĐỘNG TCAM & TỔ CHỨC BỘ NHỚ TCAM BẰNG
BỘ NHỚ RAM TRUYỀN THỐNG TRÊN NỀN TẢNG FPGA

2.1. Cách thức hoạt động TCAM:

Như đã có đề cập trong đoạn cuối ở nội dung 1.2, chúng ta đã biết được TCAM là một
loại bộ nhớ có thể biểu diễn các giá trị nhị phân 0, 1 và cả giá trị tùy định. Do chúng có chứa
giá trị tùy định nên TCAM có thể biểu diễn một khoảng giá trị và có khả năng tìm kiếm cả loại
data có chứa giá trị tùy định; chính điều này làm nên sự khác biệt với bộ nhớ truyền thống rằng:
ở bộ nhớ RAM truyền thống, ta phải truyền đầy đủ tất cả các bit trong Add để ta có thể tiến
hành tìm kiếm data, không giải quyết trường hợp có chứa bit tùy định trong Add. Cũng chính
vì yếu tố này, nên TCAM xảy ra một vấn đề rằng: một từ khóa được nhập vào có khả năng
trùng khớp với nhiều rule khác nhau. Và để giải quyết vấn đề này, bộ nhớ TCAM sẽ có thêm
một bộ mã hóa ưu tiên (priority encoder) để xác quyết rule mà chúng ta sẽ nhận được ở ngõ ra.
Như vậy, ta có thể dẫn đến kết luận này, một TCAM gồm hai thành phần: các từ khóa (các ký
tự) của TCAM (TCAM words) và bộ mã hóa ưu tiên (priority encoder).

4
Đồ án môn học GVHD: TS. Trần Hoàng Linh

Chúng em sẽ nhắc nhớ đôi nét về bộ mã hóa ưu tiên (priority encoder). Một bộ mã hóa
ưu tiên cung cấp tổ hơp nhị phân ở ngõ ra gồm n bit thể hiện thứ tự cao nhất mà lệnh đang hoạt
động. Nếu có hai hay nhiều hơn số ngõ vào đều đang ở mức cao tại cùng một thời điểm, thì
ngõ vào với mức ưu tiên cao nhất sẽ được ưu tiên. Ví dụ với bộ mã hóa ưu tiên 4 sang 2 ở bảng
2-3 bên dưới, D3 là ngõ vào có mức ưu tiên cao nhất, dần về ngõ vào D0 có mức ưu tiên thấp
nhất, các ngõ ra Y1Y0 chứa số thứ tự của ngõ vào có độ ưu tiên cao nhất đang tích cực và cuối
cùng ngõ ra V tích cực khi có ít nhất một ngõ vào của mạch mã hóa có giá trị là 1. Khi quan
sát bảng chân trị này, chúng ta rút ra nhận xét rằng ngõ ra có mức ưu tiên nằm về phía bên trái
của giá trị tùy định “X” hay chúng sẽ chọn vị trí bit 1 xuất hiện đầu tiên.

D3 D2 D1 D0 Y1 Y0 V
0 0 0 0 X X 0
0 0 0 1 0 0 1
0 0 1 X 0 1 1
0 1 X X 1 0 1
1 X X X 1 1 1
Bảng 2-3 Bảng chân trị của bộ mã hóa ưu tiên 4 sang 2
Chúng ta sẽ cùng phân tích một quá trình truy xuất dữ liệu của TCAM ở hình 2-4, ở vị
trí rule 00 và 01 có tổ hợp nhị phân khác với ngõ vào nên kết quả MATCH = 0. Khi xét đến
rule 10, tại rule data có dạng 10011xx chúng khớp với ngõ vào với 5 bit đầu tiên, chúng cho ra
kết quả MATCH = 1 bất chấp hai bit còn lại do chúng mang giá trị là tùy định. Tương tự đối
với rule 11, data ngõ vào khớp data chứa trong là 100110X ở 6 bit đầu tiên và cho ra kết quả
MATCH = 1. Như vậy kết quả tìm kiếm có thể là rule 10 hoặc 11, các kết quả MATCH lúc
này được cho vào bộ mã hóa ưu tiên để xác quyết giá trị ngõ ra, với lý thuyết chúng ta vừa
nhắc lại, bộ mã hóa ưu tiên thường chọn vị trí bit 1 xuất hiện đầu tiên nên rule chúng ta nhận
được là 10.

5
Đồ án môn học GVHD: TS. Trần Hoàng Linh

Hình 2-4 Minh họa một khối TCAM


Trước khi bước sang nội dung kế tiếp của chương này, chúng ta sẽ tìm hiểu một số ứng
dụng của bộ nhớ TCAM. TCAM hiện nay được sử dụng rộng rãi hạ tầng mạng và thực hiện
nhiều chức năng tìm kiếm khác nhau, đối với các cơ sở dữ liệu lớn hiện nay như Google,
Bing…chúng ta không thể dùng công cụ tìm kiếm tuần tự thông thường để tìm được kết quả
trùng khớp do chúng sẽ tiêu tốn rất nhiều thời gian. Tuy nhiên, các hệ thống tìm kiếm này đều
dùng một công cụ tìm kiếm gọi là Search Engine, chúng được thiết kế với chức năng tìm kiếm
các thông tin trên mạng World Wide Web. Khi sử dụng công cụ tìm kiếm, người dùng sẽ nhập
từ khóa mà họ muốn tìm kiếm để có thể nhận về kết quả có liên quan, đấy có thể là một trang
web, tài liệu, hình ảnh… Các kết quả nhận về sẽ được sắp xếp theo một thứ tự nào đó dựa trên
thuật toán của Search Engine.

Ngoài ra TCAM còn được dùng trong các bộ định tuyến mạng để tăng 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, phân tích chuỗi DNA, ứng
dụng trong neutral network…

2.2. Tổ chức TCAM bằng RAM truyền thống trên nền tảng FPGA:

2.2.1. TCAM dựa trên RAM:

Trong các giải pháp tăng tốc phần cứng gần đây, FPGA 1 (Field – Programmable Gate
Array) thường được sử dụng trong các thiết kế mạch số và khả năng nâng cấp trực tiếp trên hệ
thống. Với các ứng dụng đã được nêu trong cuối nội dung 2.1 cần các phần cứng hỗ trợ tìm
kiếm tốc độ cao như TCAM, nhưng do FPGA không hỗ trợ TCAM do đó các phương pháp
được đề xuất đều sử dụng các tài nguyên sẵn có trên mạch, gồm: LUT và RAM. Để xây dựng
TCAM trên FPGA, tài nguyên được sử dụng trong đồ án này là các khối RAM được hỗ trợ
trong FPGA. Tuy nhiên, khi sử dụng chúng để xây dựng nên bộ nhớ TCAM, chúng ta cần quan
tâm rằng các ô nhớ này không hỗ trợ giá trị tùy định mà chỉ hỗ trợ các giá trị nhị phân. Chúng
ta có mối quan hệ giữa tổ chức bộ nhớ RAM và TCAM như sau: data của TCAM đóng vai trò

1
FPGA là một nhánh của PLD (Programmable Logic Devices) trong lĩnh vực Digital IC. Chúng là một nền tảng
gồm các khối logic có thể lập trình được và có thể tái cấu trúc khi ta thực hiện nạp một đoạn chương trình mới.

6
Đồ án môn học GVHD: TS. Trần Hoàng Linh

là địa chỉ của RAM, địa chỉ của TCAM (Rule/Id) đóng vai trò là data của RAM. Mối tương
quan này được biểu thị rõ trên hình 2-5.

Hình 2-5 Đặc trưng ngõ vào và ngõ ra của khối TCAM và RAM

Rule/Id Data Add Data

TCAM RAM
Hình 2-6 Mô tả nối quan hệ giữa hai tổ chức bộ nhớ, RAM và TCAM

Hình 2-7 Mô tả việc thực hiện TCAM bằng RAM trên nền tảng FPGA
Trước khi bắt đầu tìm hiểu cách tổ chức bộ nhớ TCAM dựa trên RAM, chúng ta sẽ có
một số thuật ngữ cần được biết đến, gồm:

Thứ nhất, the Depth of TCAM biểu thị số lượng từ trong TCAM, ký hiệu là N.

Thứ hai, the Width of TCAM biểu thị độ rộng của mỗi từ (hay data của một rule) được lưu
trong TCAM, được ký hiệu là W.

Thứ ba, kích thước của TCAM là tổng số bit trong TCAM, được tính bằng biểu thức 𝑵 × 𝑾.

Thứ tư, độ rộng địa chỉ của bộ nhớ RAM là số lượng bit có trong địa chỉ RAM, được ký
hiệu là d, như vậy số tổ hợp nhị phân lúc này là 2 .

7
Đồ án môn học GVHD: TS. Trần Hoàng Linh

Chúng ta mô tả tổ chức của một TCAM hay một RAM bằng 𝐷𝑒𝑝𝑡ℎ × 𝑊𝑖𝑑𝑡ℎ, nghĩa
rằng 𝑁 × 𝑊. Chẳng hạn, một TCAM 21 bao gồm 2 từ khóa mỗi từ có độ rộng là 1 bit, hay
ta có thể nói TCAM này gồm 2 rule, data của mỗi rule có độ rộng là 1 bit. Ngoài ra chúng ta
còn có các khái niệm khác dùng, đối với các TCAM có số lượng bit cho mỗi data lớn thì chúng
được gọi là wide TCAM (tạm dịch là TCAM rộng); ngược lại các TCAM có được gọi là narrow
TCAM. Khi TCAM có số lượng rule lớn, ta gọi đây là deep TCAM, ngược lại được gọi là
shallow TCAM.

2.2.2. Cách tổ chức bộ nhớ TCAM trên nền RAM:

Đối với bộ nhớ TCAM được tổ chức dựa trên bộ nhớ RAM, data và rule được xử lý để
có mối tương quan đến khối RAM, nghĩa rằng mỗi rule ở ngõ vào TCAM được biến đổi thành
địa chỉ của khối RAM và mỗi data cảu TCAM sẽ trở thành địa chỉ của khối RAM (như đã trình
bày tường minh ở bảng 2-4 và hình 2-6). Mỗi một data trong TCAM gồm W bit được lưu vào
trong khối RAM tương ứng với 2 bit địa chỉ. Để đơn giản hơn, chúng ta sẽ phân tích TCAM
có kích thước 1 × 2, gồm 1 rule và data trong rule này có độ rộng là 2 bit, cụ thể tại rule 0 có
chứa data 1X. Lúc này TCAM Sẽ tương ứng với RAM có kích thước 2 × 1, gồm 4 tổ hợp địa
chỉ và mỗi data có một bit. Khi ta truyền data có dạng 1X ứng với rule 0 phía TCAM thì tương
ứng kết quả MATCH = 1 ở hai địa chỉ là 10 và 11 phía RAM.

TCAM 12 RAM 41


Rule Data TCAM có Add Data
0 1X RAM tương ứng 00 0
01 0
10 1
11 1
Hình 2-8 Thực hiên một TCAM 12 bằng RAM 41

Kế đến, ta thử đến ví dụ trong trường hợp TCAM 𝑁 × 𝑊 = 2 × 2, tương ứng với trường
hợp này chúng ta dùng RAM 2 × 𝑁 = 2 × 2. Đối với trường hợp này, ở data của RAM, từ
trái sang phải sẽ biểu thị rule 0 và rule 1. Ví dụ, tại địa chỉ 00 của RAM, tương ứng với data
của TCAM tại rule 1 nên data của RAM sẽ được ghi nhận là 01, nghĩa là set bit tại rule 1 lên
1.

8
Đồ án môn học GVHD: TS. Trần Hoàng Linh

TCAM 22 RAM 42


Rule Data TCAM có Add Data
0 1X RAM tương ứng 00 01
1 0X 01 01
10 10
11 10
Hình 2-9 Thực hiện một TCAM 22 bằng RAM 42
Ngoài ra, để có thể hiểu thêm việc thực hiện TCAM bằng RAM bằng cách thực hiện các
ví dụ dưới đây, chúng ta đã thực hiện hình 2-9 (a) và hình 2-9 (d), đối với hình 2-9 (b) là là tổ
chức bộ nhớ của TCAM 13 dựa trên RAM 81, hình 2-9 (c) là tổ chức bộ nhớ của TCAM
14 dựa trên RAM 161 và hình 2-9 (e) là tổ chức bộ nhớ của TCAM 23 dựa trên RAM
82.

Hình 2-10 Tổ chức bộ nhớ TCAM theo RAM


Chương 3: PHƯƠNG THỨC HOẠT ĐỘNG VÀ MỞ RỘNG BỘ NHỚ TCAM

9
Đồ án môn học GVHD: TS. Trần Hoàng Linh

3.1. Phương thức hoạt động của bộ nhớ TCAM:

3.1.1. Phương thức tìm kiếm dữ liệu trong bộ nhớ TCAM:

Quá trình tìm kiếm nội dung trong bộ nhớ TCAM là quá trình đọc dữ liệu trong RAM có
kích thước tương ứng. Với hình 2-5 mô tả đặc trưng ngõ vào và ngõ ra của khối TCAM và
RAM cùng với hình 2-6 mô tả mối quan hệ giữa hai tổ chức bộ nhớ, RAM và TCAM, chúng
ta sẽ cùng nhau thực hiện và cùng phân tích một ví dụ để hiểu rõ phương thức tìm kiếm dữ liệu,
giả sử chúng ta có cơ sở dữ liệu chứa trong TCAM 6 × 4 như sau:

OUTPUT INPUT
No. Entry Id/Rule Data
TCAM

0 0 0 0 0 0 1 0
6x4

1 0 0 1 1 1 X 1
2 0 1 0 X 1 0 0
N
3 0 1 1 1 0 0 X
4 1 0 0 0 X 0 1
5 1 0 1 1 X 0 0
W
Bảng 2-4 Dữ liệu trong TCAM 6 × 4.

Với các phân tích sơ lược ở hình 2-8 đã thực hiện TCAM 1 × 2 bằng RAM 4 × 1 hay
hình 2-9 với TCAM 2 × 2 bằng RAM 4 × 2. Để tổng quát vấn đề, chúng em sẽ cụ thể lại về
các kích thước của TCAM và RAM, cũng như ngõ vào và ngõ ra của từng loại bộ nhớ bằng
bảng 2-5 dưới đây.

Type TCAM RAM

Kích thước Size: N  W Size: 2W  N

Từ khóa W bit này đóng vai trò là


Ngõ vào Từ khóa nhị phân có độ rộng W
ngõ vào để truy cập vào RAM.

N – bit vector is stored in each


Match vector N – bit binary match vector.
RAM word.
Bảng 2-5 Mối quan hệ khi thực hiện TCAM 𝑁 × 𝑊 bằng RAM
Như vậy đối với TCAM 𝑁 × 𝑊 = 6 × 4 sẽ được thực hiện tìm kiếm bằng RAM có kích thước
2 × 𝑁 = 2 × 6 = 16 × 6. Với độ rộng data chứa trong TCAM gồm 4 bit thì đối với RAM,
ngõ vào chúng ta có 2 tổ hợp nhị phân, và đối với data chúng ta có 6 bit như theo kích thước
của RAM.
10
Đồ án môn học GVHD: TS. Trần Hoàng Linh

INPUT OUTPUT
Add Data
0 0 0 0 X X X X X X
0 0 0 1 0 0 0 0 1 0
0 0 1 0 1 0 0 0 0 0
0 0 1 1 X X X X X X
0 1 0 0 0 0 1 0 0 1
0 1 0 1 0 0 0 0 1 0
RAM 16 x 6

0 1 1 0 X X X X X X
0 1 1 1 X X X X X X
↓2
1 0 0 0 0 0 0 1 0 1
1 0 0 1 0 0 0 1 0 0
1 0 1 0 X X X X X X
1 0 1 1 X X X X X X
1 1 0 0 0 0 1 0 0 1
1 1 0 1 0 1 0 0 0 0
1 1 1 0 X X X X X X
1 1 1 1 0 1 0 0 0 0
Rule 0 Rule 1 Rule 2 Rule 3 Rule 4 Rule 5
𝑁→
Bảng 2-6 Dữ liệu trong RAM 16 × 6.
Bảng 2-6 phía trên chính là cấu trúc dữ liệu của RAM, chúng ta sẽ bắt đầu phân tích cơ
sở để điền được dữ liệu trong RAM như vậy. Như chúng ta đã cùng phân tích về mối tương
quan ngõ vào, ngõ ra giữa TCAM và RAM, hơn nữa, chúng ta đã phân tích về kích mối quan
hệ về kích thước bộ nhớ khi nạp cơ sở dữ liệu. Do data trong TCAM sẽ đóng vai trò làm địa
chỉ của RAM mà RAM không giải quyết giá trị tùy định, nên với TCAM 6 × 4 có 4 bit data
nên địa chỉ của RAM gồm 2 = 16 tổ hợp nhị phân biểu hiện tất cả các trường hợp của dữ
liệu. Còn Rule của TCAM sẽ trở thành data của RAM mà TCAM 6 × 4 gồm 6 rule nên độ
rộng bit của data là 6 bit. Từ trái sang phải trong data của RAM, ta đánh dấu từ Rule 0 đến
Rule 5 như bảng 2-6. Chúng ta xét với địa chỉ đầu tiên trong RAM, 0000, và kết hợp quan sát
cột data ở bảng 2-5, ta nhận thấy không có trường hợp trùng khớp nên data ở địa chỉ là XXX
XXX. Kế đến ở địa chỉ 0001, data ở bảng 2-5 tồn tại giá trị này tại rule 4, với qui ước đánh thứ
tự rule đã đề cập trước đó, tại vị trí rule 4, giá trị nhị phân tại đây bằng 1, các vị còn lại bằng
0, ta điền vào bảng 2-6 tại địa chỉ đó như sau: 000010. Tương tự ở địa chỉ 0100, ta nhận thấy
có 2 rule ứng với trường hợp này, đó là rule 2 và rule 5, vậy data ta điền vào tại địa chỉ 0100
này là 001001.

11
Đồ án môn học GVHD: TS. Trần Hoàng Linh

Tựu chung lại, đối với trường hợp nội dung không có rule, ta điền vào giá trị tùy định,
đối với trường hợp có tồn tại rule, tại vị trí rule mà ta qui ước trên data của RAM, ta đặt giá trị
tại đấy bằng 1.

Data Add

(INPUT) (OUTPUT)

TCAM Mem (RAM)

Rule/Id Data

(OUTPUT) (INPUT)

Hình 2-11 Nhắc lại mối quan hệ vào ra cuả TCAM và RAM.
3.1.2. Phương thức cập nhật dữ liệu vào bộ nhớ TCAM:

Đầu tiên, chúng ta sẽ đến với một số ký hiệu:

Ký hiệu Ý nghĩa
𝑘 Giá trị nhị phân không chứa giá trị tùy định
𝑡 Giá trị nhị phân chứa giá trị tùy định
Bảng 2-7 Bảng ký hiệu các giá trị

Kế đến, ký hiệu tiếp theo được giới thiệu thông qua việc thực hiện TCAM 1 × 1. Bảng
2-7 thể hiện nội dung của RAM 2 × 1 trong tất cả trường hợp data TCAM 1 × 1 đang lưu trữ,
đó là 0, 1 và giá trị tùy định.

Hình 2-12 TCAM 1 × 1 và RAM 2 × 1 tương ứng


Trước khi quan sát bảng 2-7, chúng ta sẽ quan tâm đến hình 2-12, TCAM 1 × 1 (TCAM
có một rule và độ rộng data của mỗi rule là một bit) có chứa data là giá trị tùy định, với giá trị
ngõ vào của TCAM là data, điều này nghĩa rằng TCAM sẽ luôn tồn tại rule bất chấp giá trị một
bit nào được truyền vào, nhận xét này được thể hiện bằng hình 2-12, để hiểu rõ hơn thì hình 2-
13 thể hiện dưới dạng bảng để chúng ta có góc nhìn trực quan hơn.

12
Đồ án môn học GVHD: TS. Trần Hoàng Linh

TCAM 11 RAM 21


Add Data
Rule Data TCAM có
(𝑘) RAM[𝑘]
0 X RAM tương ứng 0 1
1 1
Hình 2-13 Thực hiện một TCAM 11 bằng RAM 21
Như vậy ta sẽ quan sát ở trường hợp tùy định – X thể hiện ở cuối bảng 2-7, data trong RAM[0]
và RAM[1] đều bằng 1. Vậy RAM[0] và RAM[1] chính là ký hiệu thứ hai mà chúng ta sẽ đề
cập, tổng quát hơn RAM[𝑘] thể hiện data mà chúng đang chứa tại địa chỉ 𝑘, với địa chỉ k là
add của RAM, tức chúng chỉ nhận giá trị nhị phân 0 và 1 (không nhận giá trị tùy định).

Data được lưu trữ trong RAM 2 × 1


Data chứa trong TCAM 1 × 1
RAM[0] RAM[1]
0 1 0
1 0 1
X 1 1
Bảng 2-8 Data chứa trong RAM 2 × 1 khi thực hiện TCAM 1 × 1
Cuối cùng, ta gọi RAM[𝑘][𝑖] là giá trị của bit thứ 𝑖 tại địa chỉ 𝑘 trong RAM. Như vậy,
khi ngõ vào nhận được giá trị 𝑡, nếu địa chỉ 𝑘 trùng khớp 𝑡 thì RAM[𝑘][𝑖] = 1, ngược lại thì
RAM[𝑘][𝑖] = 0. Đây nền tảng bổ sung để chúng ta có thể bắt đầu tìm hiểu phương thức cập
nhật dữ liệu vào bộ nhớ TCAM.

Phương thức cập nhật cho TCAM nghĩa rằng ta thực hiện tác vụ thêm (add) hoặc xóa dữ
liệu (delete). Một từ khóa khi được ghi vào RAM sẽ được ghi lần lượt tất cả các địa chỉ của
RAM đó – từ 0 ÷ (2 − 1). Với ý nghĩa của cách viết RAM[𝑘][𝑖], chúng ta diễn giải ý niệm
của cách viết này như sau: tại địa chỉ 𝑘 có vị trí tương ứng trùng với chuỗi bit không chứa giá
trị tùy định của từ khóa TCAM thì dữ liệu sẽ được ghi là 1, ngược lại sẽ bằng 0. Chúng ta sẽ
cùng nhau phân tích một số TCAM để có thể hiểu được phương thức cập nhật bộ nhớ.

Hình 2-14 Cập nhật TCAM 1 × 1

13
Đồ án môn học GVHD: TS. Trần Hoàng Linh

Trong hình 2-14, TCAM 1 × 1 chứa giá trị tùy định, như vậy dẫu địa chỉ 𝑘 của RAM
2 × 1 là 0 hay 1 thì chúng đều được điền vào giá trị là 1 tại 𝑖 = 0. Chúng ta ghi nhận kết quả
vừa phân tích như sau: RAM[0][0] = 1 và RAM[1][0] = 1.

Hình 2-15 Cập nhật TCAM 2 × 1

Sang đến hình 2-15, TCAM này sẽ ứng với RAM 2 × 2, tại vị trí 𝑖 = 0, TCAM chứa
data là bit 1, do đó khi RAM nhận được giá trị bằng 1 thì RAM[1][0] = 1, khi nhận được giá
trị là 0 thì RAM[0][0] = 0. Tương tự tại 𝑖 = 1, TCAM chứa giá trị tùy định nên khi giá trị nhị
phân nhận được là 0 thì RAM[0][1] = 1 và giá trị nhận được là 1 thì RAM[1][1] = 1.

TCAM 22 RAM 42


Rule Data TCAM có Add (𝑘) Data_RAM[𝑘][0] Data_RAM[𝑘][1]
0 1X RAM tương ứng 00 0 0
1 01 01 0 1
10 1 0
11 1 0
Hình 2-16 Cập nhật TCAM 2 × 2

Ở hình 2-16 này, chúng ta sẽ thực hiện TCAM băngd RAM 4 × 2. Data được lưu trữ
trong TCAM gồm 1X và 01. Tại vị trí 𝑖 = 0, RAM nhận giá trị ngõ vào có dạng 1X thì ghi
nhận giá trị 1 vào địa chỉ có dạng 1X, các vị trí còn lại là 0. Tại vị trí 𝑖 = 1, khi RAM nhận giá
trị ngõ vào là 01 thì điền vào RAM tại 𝑘 = 01 bit 1, các vị trí còn lại bằng 0.

14
Đồ án môn học GVHD: TS. Trần Hoàng Linh

Hình 2-17 Cập nhật TCAM 1 × 2


Ở TCAM cuối cùng này, data của rule duy nhất có độ rộng là 2 bit, khi RAM nhận ngõ
vào là 1X sẽ được ghi nhận data tại địa chỉ có dạng tương ứng là bit 1.

Chúng ta sẽ kết thúc nội dung 3.1 với hai phương thức hoạt động của bộ nhớ. Nhưng
thực tế đặc ra cho chúng ta là các bộ nhớ có kích thước rất lớn, như vậy chúng ta cần phải làm
gì để đáp ứng được thực tế đó? Chúng ta sẽ chuyển đến nội dung 3.2 để hiểu được cách mà ta
sẽ giải quyết câu hỏi thực tế đặt ra.

3.2. Mở rộng bộ nhớ TCAM:

3.2.1. Depth Extension (the number of words in the TCAM  N) hay mở rộng

số lượng rule trong TCAM:

Số lượng rule của một TCAM có thể được tăng cường bằng cách xếp theo chiều dọc cho
các ký tự cùng độ rộng bit đối với mỗi rule (có cùng W). Tương tự trong việc triển khai trên
RAM, Depth hay số lượng Rule được mở rộng bằng cách tăng cường bằng việc tăng số bit
trong mỗi ký tự (tăng Width). Ở mỗi cột của RAM sẽ thể hiện match vector của từ khóa. Hình
2-18 (b) cho thấy TCAM có kích thước 2  1 với ký tự được lưu vào được thể hiện như TCAM
ở hình 2-18 (a). Thực hiện tương tự với RAM, nạp ký tự vào cho cột như hình 2-18 (a).

15
Đồ án môn học GVHD: TS. Trần Hoàng Linh

Hình 2-18 Mô tả Depth Extension

Chúng ta cũng có thể thấy việc mở rộng số ký tự lưu trữ tương tự với việc ghép nối các
match vector từ nhiều “shallower” TCAM (các TCAM có chỉ số N nhỏ). Chẳng hạn như một
TCAM có kích thước N  W chia thành hai TCAM theo chiều ngang, bao gồm: N1  W và
N2  W với N1 + N2 = N. Thực hiện tương tự cho RAM, ta cũng chia thành hai RAM 2W 
N1 và 2W  N2. Kết quả ngõ ra của hai thành phần RAM này chính là N – bit match vector
ghép từ match vector của mỗi RAM

Để minh họa rõ hơn cho ý tưởng trên, chúng ta trình bày lại hình 2-18 (b) dưới dạng bảng như
sau:

TCAM 2 × 1

Rule Data

0 0

1 X

Sau đó ta tách ra 2 TCAM nhỏ hơn với kích thước là TCAM 1 × 1 và mỗi TCAM đều có 1
RAM riêng được thể hiện như bên dưới
RAM 2 × 1
TCAM 1 × 1
Add Data
Rule Data
0 1
0 0
1 0

TCAM và RAM thứ 1

16
Đồ án môn học GVHD: TS. Trần Hoàng Linh

TCAM 1 × 1 RAM 2 × 1

Rule Data Add Data

0 X 0 1

1 1

TCAM và RAM thứ 2

Chúng ta bắt đầu thử nghiệm với ngõ vào có giá trị là 1, lúc này ngõ ra của RAM 1 và
RAM 2 lần lượt là 0 và 1 sau đó ta ghép lại thì được match vector là 01, như đã trình bày ở
phương thức đọc dữ liệu trong bộ nhớ thì ta nhận định ngõ vào này ứng với rule 1. Hay khì
chúng ta thử thay đổi với ngõ vào có giá trị là 0 thì output của RAM 1 và RAM 2 lần lượt là 1
và 1 sau đó ta ghép lại thì được match vector là 11, kết luận rằng ngõ vào bằng 0 này ứng với
cả rule 0 và rule 1.

Từ đấy, chúng ta có rút ra nhận xét như sau: việc tách ra 2 TCAM 1 × 1 khiến cho việc
xử lý output của RAM được rút ngắn lại hơn 1 bit làm cho công việc dễ triển khai hơn . Nếu
với N lớn việc tách TCAM sẽ rất có lợi và giảm đi khối lượng công việc triển khai trên RAM.

3.2.2. Width Extension (the numbers of bits of each TCAM word) hay mở rộng
độ rộng data trong mỗi rule trong TCAM:

Để có một TCAM rộng hơn (có số lượng bit data của mỗi rule nhiều hơn) thì chúng ta
cần giải quyết giá trị input có kích thước rộng hơn (hay ta nói ký tự ngõ vào có W lớn). Khi
thực hiện TCAM như một RAM duy nhất, một input có W lớn đồng nghĩa việc độ rộng bit của
địa chỉ to hơn cho RAM. Điều này dẫn đến thành phần N trong RAM có giá trị 2 W. Hình 2-19
(c) thể hiện một TCAM có kích thước 1  2 mở rộng độ rộng cho TCAM ở hình 2-19 (a). Khi
ngõ vào TCAM tăng độ rộng lên 1 bit thì số ký tự của RAM tương ứng sẽ tăng gấp đôi. Kiểu
thiết kế này không thể scale tốt trong trường hợp input có độ rộng lớn.

17
Đồ án môn học GVHD: TS. Trần Hoàng Linh

Hình 2-19 Mô tả Width Extension

Giải pháp lựa chọn thực hiện ở đây là sử dụng nhiều “narrow” TCAM để thực hiện
TCAM có độ rộng lớn hơn. Ví dụ, một TCAM N  W có thể chia theo chiều dọc thành hai
TCAM: N  W1 và N  W2 với W1 + W2 = W. Trong suốt thời gian tìm kiếm, một W – bit
input key lại được chia thành hai phần gồm: W1 – bit và W2 – bit. Mỗi một trong hai “narrower”
TCAM sẽ khớp với đoạn có chiều dài W1 và W2 từ đó sẽ xuất ra các N – bit match vector tương
ứng. Sau đó, hai N – bit match vector sẽ được AND lại với nhau để tạo ra match vector sau
cùng. Hai “narrow” TCAM kết nối với hai “shallow” TCAM tương ứng trong việc thực hiện
RAM – based. Như vậy ở RAM – based, tổng dung lượng bộ nhớ lúc này trở thành 2W 1  2W 2
thay vì 2W  2W 1.2W 2 . Hình 2 cho thấy TCAM có 1 x 2 được xây dựng dựa trên các TCAM
1 × 1.

Hình 2-20 Xây dựng TCAM 1 × 2 bằng cách sử dụng hai TCAM 1 × 1
Để minh họa rõ hơn cho ý tưởng trên, chúng ta trình bày lại hình 2-20 dưới dạng bảng như sau:

18
Đồ án môn học GVHD: TS. Trần Hoàng Linh

TCAM 1 × 2

Rule Data

0 0X

TCAM 1 × 2 sẽ được tách thành 2 TCAM nhỏ hơn với kích hơn là TCAM 1 × 1 và mỗi RAM
tương ứng của chúng.
TCAM 1X1 RAM 2 × 1
Rule Data Add Data
0 0 0 1
1 0
TCAM và RAM thứ nhất

TCAM 1X1 RAM 2 × 1


Rule Data Add Data
0 X 0 1
1 1
TCAM và RAM thứ 2 hai

Đầu tiên, khi thực hiện với ngõ vào là 01 thì ngõ ra của RAM thứ nhất và RAM thứ hai lần
lượt là 1 và 1 sau đó AND lại ta được match vector là 1, như vậy có tồn tại rule trong TCAM
ứng với ngõ vào là 01. Kế đến, khi ngõ vào là 11 thì output của RAM thứ nhất và RAM thứ
hai lần lượt là 0 và 1 sau đó AND lại ta được match vector là 0, ta nhận thấy không tồn tại rule
tương ứng đối với ngõ vào này.

Chúng ta rút ra nhận xét: so với việc sử dụng RAM 4 × 1 thì khối lượng công việc ta
chưa thấy phức tạp hơn so với sử dụng hai RAM có kích thước 2 × 1, nhưng nếu với W lớn
thì việc khai triển trên RAM sẽ khó khăn hơn rất nhiều so với việc tách TCAM ra nhỏ hơn và
khai triển từng RAM kích thước nhỏ tương ứng với TCAM đó.

Chương 4: GIẢI THUẬT SCALABLE TCAM IMPLEMENTATION USING FPGAs

Ở nội dung chương 4 này, chúng ta sẽ chính thức cụ thể hóa các vấn đề được đề cập trong
chương 3, về phương thức đọc dữ liệu trong TCAM, phương thức cập nhật vào bộ nhớ TCAM
và mở rộng bộ nhớ TCAM bằng hai giải thuật sẽ được trình bày.

4.1. Mô hình tổng quát:

19
Đồ án môn học GVHD: TS. Trần Hoàng Linh

Dựa trên phần thảo luận ở phần 3.2.2, một TCAM có kích thước tổng quát 𝑁 × 𝑊 có thể
được cấu trúc nên từ các P narrow TCAM, với P (P là số lượng các narrow TCAM) là các giá
trị sau: 𝑃 = 1,2 … 𝑊.

Trong đó, kích thước của một narrow TCAM bất kỳ ở vị trí thứ i là 𝑁 × 𝑊 với chỉ số i mang
các giá trị 𝑖 = 1,2, … , 𝑃 và từ đó, tổng số bit của TCAM được xác định bằng biểu thức sau:

𝑊= 𝑊

Gọi RAMi là biểu diễn một RAM tương đương với narrow TCAM thứ i với 𝑖 = 1,2, … , 𝑃. Kích
thước của RAMi là 2 × 𝑁 𝑣ớ𝑖 𝑖 = 1,2, … , 𝑃. Vì vậy TCAM có kích thước 𝑁 × 𝑊 có thể
được thực hiện bằng cách sử dụng các RAMs có số lượng là P.

4.2. Độ phức tạp của thuật toán – Big O Notation:

Trước khi chúng ta tiến đến tìm hiểu và phân tích giải thuật thì có một khái niệm nhỏ mà
chúng ta cần lưu tâm đến khi lập trình, đó là Big O Notation, tạm dịch là độ phức tạp của thuật
toán, đây là thuật ngữ để chỉ khoảng thời gian tiêu hao để thực hiện một giải thuật. Các lập
trình viên thường sử dụng chúng như một phương tiện để so sánh mức độ hiệu quả của nhiều
cách xử lý khác nhau cho cùng một vấn đề. Chúng ta sẽ trọng tâm vấn đề này trong một câu
ngắn gọn như sau: thời gian thực thi nhanh như thế nào còn phụ thuộc vào giá trị ngõ vào do
giá trị ngõ vào sẽ lớn dần trong quá trình thực thi.

Vế đầu tiên mà chúng ta quan tâm đến là “thời gian thực thi nhanh như thế nào”, thực sự
rất khó để xác định thời gian thực thi của một thuật toán hay một giải thuật, do chúng phụ thuộc
vào cấu hình phần cứng của mỗi CPU và sẽ cho ra các kết quả khác nhau. Nên việc đánh giá
thông qua câu hỏi: “Thời gian tiêu hao chính xác là bao nhiêu?”, thì chúng ta cần thay đổi lại
rằng “Thời gian thực thi nhanh như thế nào?”. Đến vấn đề “còn phụ thuộc vào giá trị ngõ vào”,
ở trong khái niệm Big O, chúng sử dụng đơn vị đo input là “n” (kích thước ngõ vào) để tính
thời gian thực thi chương trình thay vì dùng các đơn vị thời gian cụ thể như ms…Cuối cùng “
do giá trị ngõ vào sẽ lớn dần trong quá trình thực thi”, Khi bắt đầu chạy chương trình mọi người
thường nghĩ sẽ thật tốn công sức nếu người viết một thuật toán phức tạp để xử lý giá trị đầu
vào nhỏ, nhưng qua từng bước của thuật toán đó, giá trị ban đầu vốn nhỏ lại dần trở nên lớn
hơn thì mọi chuyện lại hoàn toàn khác, chẳng ai còn quan tâm đến độ phức tạp của thuật toán
đó nữa. Với phép phân tích Big O, lập trình viên chỉ quan tâm đến yếu tố khác bị tiêu hao (thời
gian, dung lượng lưu trữ) khi giá trị đầu vào lớn dần; trong nhiều trường hợp, khi thiết kế thuật

20
Đồ án môn học GVHD: TS. Trần Hoàng Linh

toán, ta lại đặt mục tiêu tiết kiệm bộ nhớ hơn so với tiết kiệm thời gian chạy chương trình.
Trong lập trình thì độ phức tạp (độ tiêu hao) bộ nhớ - memory complexity cũng quan trọng
ngang ngửa với độ phức tạp (độ tiêu hao) thời gian – time complexity khi chạy chương trình.
Trong rất nhiều tình huống, lập trình viên sẽ phải cân nhắc thuật toán gây ra tình trạng bù trừ
giữa 2 yếu tố trên. Quy tắc đơn giản để xác định mức độ tiêu hao bộ nhớ với phương thức Big
O là giá trị truyền vào càng nhiều thì thuật toán sẽ sử dụng càng nhiều bộ nhớ để xử lý.

Khi nghiệm lại vấn đề này dưới góc nhìn toán học, người ta định nghĩa Big O là một ký hiệu
mô tả giới hạn của một hàm số khi biến dần tiến đến một giá trị hữu hạn hay tiến về vô cùng.
Trong lĩnh vực khoa học máy tính, khái niệm Big O này được sử dụng để phân biệt cácc giải
thuật dựa trên thời gian thực thi hoặc dung lượng bộ nhớ tăng lên như thế nào khi ngõ vào lớn
dần.

Gọi 𝑓(𝑥) và 𝑔(𝑥) là hai hàm số có giá trị thuộc tập số thực, định nghĩa được biểu diễn như sau:

𝑓(𝑥) = 𝑂 𝑔(𝑥) 𝑘ℎ𝑖 𝑥 → ∞

Chúng ta có một số hàm dùng để phân tích giải thuật, các hàm có tốc độ chậm được liệt kế
trước, trong đó c là hằng số.

𝑂(1) Constant
𝑂(log(𝑛)) Logarithmic
𝑂((log(𝑛)) ) Polylogarithmic
𝑂(𝑛) Linear
𝑂(𝑛 ) Quadratic
𝑂(𝑛 ) Polynominal
𝑂(𝑐 ) exponential
Bảng 2-9 Một số hàm dùng để phân tích giải thuật

4.3. Lookup (tìm kiếm):

Giải thuật số 1 dưới đây thể hiện giải thuật tìm kiếm một key trong cả RAM tương ứng. Việc
này tiêu tốn O(1) đơn vị thời gian để có thể kết nối với mỗi RAM. Từ thời điểm các P RAM
được kết nối theo kiểu song song, tổng thời gian cho cả quá trình phức tạp này là O(1).

21
Đồ án môn học GVHD: TS. Trần Hoàng Linh

ALGORITHM 1: Lookup

Input: a W – bit key 𝑘

Input: {𝑅𝐴𝑀 }, 𝑖 = 1,2, … , 𝑃

Output: A N – bit match vector 𝑚

1. Divide k into P segment:


2. Initialize m to be all 1’s:
3. For 𝑖 ← 1 to P do {bitwise AND}
4. 𝑚 ← 𝑚 & 𝑅𝐴𝑀 {𝑘 }
5. End for

4.4. Update (cập nhật):

Việc cập nhật cho một TCAM có thể thực hiện lẫn cả việc thêm vào hoặc xóa đi một ký tự cụ
thể được chứa trong TCAM. Giải thuật số 2 thể hiện việc thêm vào hoặc xóa đi một ký tự thứ
n của TCAM trong việc thực hiện RAM – based, với số thứ tự các ký tự được chứa trong
TCAM có giá trị như sau: 𝑛 = 1,2, … , 𝑁. Điều này tiêu tốn 𝑂(2 ) đơn vị thời gian để có thể
cập nhật cho 𝑅𝐴𝑀 , 𝑖 = 1,2, … , 𝑃. Khi lượng P RAM này được cập nhật theo phương thức song
song, tổng thời gian của việc cập nhật phức tạp này được xác định bởi RAM có thời gian xử lý
dài nhất cho việc cập nhật, để rõ ràng hơn chúng ta có biểu thức xác định tổng thời gian cập
nhật như sau:

𝑂 𝑚𝑎𝑥 2 =𝑂 2

22
Đồ án môn học GVHD: TS. Trần Hoàng Linh

ALGORITHM 2: Updating a TCAM word

Input: a W – bit ternary word 𝑡

Input: The index of 𝑡: 𝑛

Output: The update operation: 𝑜𝑝 ∈ {𝑎𝑑𝑑, 𝑑𝑒𝑙𝑒𝑡𝑒}

1. Divide 𝑡 into 𝑃 segments: 𝑡 → {𝑡 , 𝑡 , … , 𝑡 }, 𝑡 = |𝑊 |, 𝑖 = 1,2, … , 𝑃.


2. For i  1 to P do {Update each RAM}
3. For k  0 to 2 − 1 do
4. If 𝑘 𝑚𝑎𝑡𝑐ℎ𝑒𝑠 𝑡 and 𝑜𝑝 == 𝑎𝑑𝑑 then
5. 𝑅𝐴𝑀 [𝑘][𝑛] = 1
6. Else
7. 𝑅𝐴𝑀 [𝑘][𝑛] = 0
8. End if
9. End for
10. End for

4.5. Space Analysis (phân tích kích thước):

Kích thước của 𝑅𝐴𝑀 is 2 × 𝑁, 𝑖 = 1,2, … , 𝑃. Vì vậy, tổng dung lượng bộ nhớ yêu cầu được
thể hiện bằng biểu thức sau:

(2 × 𝑁) = 𝑁 2

Để có thể giảm thiểu yêu cầu dung lượng bộ nhớ tổng thể, chúng tôi trình bày ván đề này như
sau:

𝑚𝑖𝑛 2 = 𝑚𝑖𝑛 𝑚𝑖𝑛{ , ,…, } 2 (1)

𝑊 =𝑊 (2)

Với P là một giá trị cho trước thì biểu thức biến đổi như sau:

23
Đồ án môn học GVHD: TS. Trần Hoàng Linh

𝑚𝑖𝑛{ , ,…, } 2 = 𝑃. 2

Trong đó 𝑊 = , 𝑖 = 1, 2, … , 𝑃. Vì vậy tổng dung lượng bộ nhớ yêu cầu là tối thiểu

khi tất cả lượng P RAMs có cùng độ rộng địa chỉ, ký hiệu là 𝓌 = . Đặc tính
depth của mỗi RAM là 2 𝓌 . Như vậy tổng dung lượng RAM:

𝑊 𝓌 2𝓌
2 ×𝑁 = (2𝓌 × 𝑁) = . 2 . 𝑁 = 𝑁𝑊. (3)
𝓌 𝓌

Ta gọi tỷ số kích thước giữa RAM và TCAM là số lượng bit RAM cần dùng để
triển khai một bit TCAM, ngoài ra chỉ số này còn được dùng để đánh giá mức độ
tối ưu tài nguyên của thiết kế

= số lượng bit RAM cần dùng để triển khai một bit TCAM
𝓌
 When all the RAMs employ the same Add width of 𝓌: = = 𝑔(𝓌)
𝓌

Để đảm bảo tỉ lệ RAM với TCAM là nhỏ nhất nên chọn RAM có số địa chỉ thấp
nhất:

min 𝑔(𝓌) = 2

𝑊
⎡ 𝑃=𝑊→𝓌= =1
⎢ 𝑃 𝑇ℎ𝑒 𝑑𝑒𝑝𝑡ℎ 𝑜𝑓 𝑒𝑎𝑐ℎ 𝑅𝐴𝑀 = 2𝓌 = 2
↔⎢ 𝑊 𝑊 𝑊 →
𝑇ℎ𝑒 𝑑𝑒𝑝𝑡ℎ 𝑜𝑓 𝑒𝑎𝑐ℎ 𝑅𝐴𝑀 = 2𝓌 = 4
⎢𝑃 = 2 → 𝓌 = 𝑃 = 𝑊 = 2
⎣ 2
𝓌
But 𝑂𝑣𝑒𝑟𝑎𝑙𝑙 𝑀𝑒𝑚𝑜𝑟𝑦 𝑅𝑒𝑞𝑢𝑖𝑟𝑒𝑚𝑒𝑛𝑡 = 𝑁𝑊.
𝓌

→ min 𝑂𝑣𝑒𝑟𝑎𝑙𝑙 𝑀𝑒𝑚𝑜𝑟𝑦 𝑅𝑒𝑞𝑢𝑖𝑟𝑒𝑚𝑒𝑛𝑡 = 2𝑁𝑊

24
Đồ án môn học GVHD: TS. Trần Hoàng Linh

Chương 5: SƠ ĐỒ KHỐI HỆ THỐNG

Dưới đây là cơ sở dữ liệu mà chúng ta sẽ thực hiện, là TCAM 16 × 16, các input được chia
thành 8 đoạn, mỗi đoạn 2 bit.

Hình 2-21 Cơ sở dữ liệu của TCAM 16 × 16

Hình 2-22 Các RAM tương ứng khi chia Data thành 8 phần

5.1. Sơ đồ khối cơ bản cho giải thuật 1:

25
Đồ án môn học GVHD: TS. Trần Hoàng Linh

Hình 2-23 Kiến trúc cơ bản (chưa thêm update logic)

Mô hình lý thuyết của việc triển khai RAM – based TCAM (được trình bày trong nội dung
4.1.) có thể liên quan trực tiếp tới kiến trúc phần cứng được thể hiện trong hình 2-22. Một
TCAM có kích thước 𝑁 × 𝑊 được thực hiện bằng cách sử dụng P RAM trong đó kích thước
của RAM thứ 𝑖 là 2 × 𝑁 và ∑ 𝑊 = 𝑊.

Như được minh họa trong giải thuật 1 (Lookup), việc tra cứu được thực hiện bởi chia nhỏ input
key W-bit đầu vào thành các thành phần P trong đó độ dài của thành phần thứ 𝑖 là 𝑊 , 𝑖 =
1,2, … , 𝑃. Sau đó mỗi thành phần của input key được sử dụng làm địa chỉ để truy cập vào RAM
tương ứng. Mỗi RAM xuất ra một vector N – bit. Các vectơ P N-bit sau đó được kết hợp lại
với nhau thông qua toán tử AND để tạo ra match vector cuối cùng. Match vector cuối cùng
được đưa vào bộ mã hóa ưu tiên để thu được chỉ số của từ matching word với mức độ ưu tiên
cao nhất. Một tín hiệu báo trùng khớp cũng được tạo ra để cho biết nếu có bất kỳ kết quả phù
hợp nào.

26
Đồ án môn học GVHD: TS. Trần Hoàng Linh

5.2. Sơ đồ khối cơ bản cho giải thuật 2:

Chúng ta sẽ thêm thêm update logic RAM – based TCAM để nó có thể tự hoàn thành bất
kỳ sự kiện cập nhật tại mọi thời điểm trong lúc hoạt động. Theo giải thuật 2 (Updating a TCAM
word), hình 2-23 cho thấy logic để cập nhật TCAM dựa trên RAM, trong đó 𝑊 =∑ 𝑊.
Chúng tôi sử dụng hai số nhị phân W – bit, được ký hiệu là Data và Mask , để đại diện cho một
ternary word W-bit mà nó sẽ được cập nhật. Bit thứ 𝑖 là của 𝑡 là bit tùy định khi và chỉ khi bit
thứ 𝑖 của Mask được đặt bằng 0, với số thứ tự của 𝑖 mang các giá trị 𝑖 = 1,2, … , 𝑊. Chẳng hạn,
một ternary word 2 – bit có giá trị 0X có thể được biểu diễn bởi: Data = 00 hoặc 01 và Mask =
10. Id chỉ rõ chỉ số của ternary word được cập nhật, Op mang ý nghĩa rằng nếu ternary word
được cập nhật (Op = 0) hoặc xóa đi (Op = 1).

27
Đồ án môn học GVHD: TS. Trần Hoàng Linh

Hình 2-24 Sơ đồ khối được thêm vào khối Update logic, CMP (Compare), CHG (Change)

Id
Data out
CHG
Op

Data in
Hình 2-25 Mô tả khối CHG

Wmax_bit counter
we
CMP
Data

Mask
Hình 2-26 Mô tả khối CMP

28
Đồ án môn học GVHD: TS. Trần Hoàng Linh

+1 Add_R
Wmax_bit
Counter Add_W

Data We Data_out
CMP
Mask

Id
Data_in
CHG
Op

Hình 2-27 Mô tả chi tiết một khối RAM đã được thêm vào update logic, CMP, CHG.

Việc thêm vào hoặc xóa đi Id-th ternary word t được thực hiện bằng cách thiết lập hoặc
xóa bit thứ Id khỏi tất cả các ký tự mà RAM có địa chỉ khớp với t. Trong khi đó chúng ta phải
giữ phần còn lại của các bit của các ký tự RAM này mà không thay đổi. Kể từ đây chúng ta
cần đọc nội dung ban đầu của các ký tự RAM, chỉ thay đổi bit Id và sau đó ghi ký tự RAM vừa
mới được cập nhật trở lại RAM. Điều này yêu cầu 2.2 𝓌 chu kỳ xung CLK để cập nhật single
– port RAM với địa chỉ có độ rộng là 𝓌. Để giảm độ trễ cập nhật, chúng tôi sử dụng simple
dual – port RAM và thực hiện đọc và ghi ở cùng chu kỳ xung CLK. A simple dual – port RAM
có hai ngõ vào và một ngõ ra. Một ngõ vào chỉ dành cho quá trình đọc dữ liệu và cổng còn lại
chỉ dành cho quá trình ghi dữ liệu. Tại mỗi chu kỳ xung CLK trong lúc cập nhật, bản cập nhật
logic ghi từ RAM được cập nhật vào địa chỉ k trong khi đọc nội dung của từ RAM tại địa chỉ
k + 1. Do đó, độ trễ cập nhật trở thành 2𝓌 + 1 chu kỳ xung CLK trong đó một chu kỳ xung
CLK được sử dụng để tìm nạp nội dung của ký tự RAM đầu tiên. Một thành phần khác của
update logic là máy trạng thái (không được thể hiện trong hình 2-23), nó thực hiện chuyển đổi
trạng thái của TCAM giữa việc tra cứu và cập nhật. Trong quá trình cập nhật, không được phép
tra cứu và mọi kết quả match đều không hợp lệ.

29
Đồ án môn học GVHD: TS. Trần Hoàng Linh

5. THIẾT KẾ VÀ THỰC HIỆN PHẦN CỨNG

6. THIẾT KẾ VÀ THỰC HIỆN PHẦN MỀM (NẾU CÓ)

7. KẾT QUẢ THỰC HIỆN

Đề tài chỉ mới được thực hiện đến công đoạn chuẩn bị sơ đồ khối, chưa lập trình bằng
Verilog HDL.

8. KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN

8.1. Kết luận

8.2. Hướng phát triển

9. TÀI LIỆU THAM KHẢO

[1] Weirong Jiang, “Scalable Ternary Content Addressable Memory Implememntation


Usings FPGAs”, Xilinx Research Lab, 2014.
[2] Altera Corp., “Advanced Sythensis Cookbook”, www.altera.com , 07/2011.

10.PHỤ LỤC

30

You might also like