Professional Documents
Culture Documents
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
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
2. LÝ THUYẾT ...................................................................................................................... 2
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.2. Tổ chức TCAM bằng RAM truyền thống trên nền tảng FPGA: ............................. 6
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.1. Depth Extension (the number of words in the TCAM N) hay mở rộng số
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
iii
Đồ án môn học GVHD: TS. Trần Hoàng Linh
iv
Đồ án môn học GVHD: TS. Trần Hoàng Linh
Hình 2-3 Minh họa một khối CAM điển hình. .......................................................................... 3
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 12 bằng RAM 41 ............................................................ 8
Hình 2-9 Thực hiện một TCAM 22 bằng RAM 42 ............................................................ 9
Hình 2-11 Nhắc lại mối quan hệ vào ra cuả TCAM và RAM. ................................................ 12
Hình 2-13 Thực hiện một TCAM 11 bằng RAM 21 ........................................................ 13
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-22 Các RAM tương ứng khi chia Data thành 8 phần .................................................. 25
Hình 2-24 Sơ đồ khối được thêm vào khối Update logic, CMP (Compare), CHG (Change) . 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
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-5 Mối quan hệ khi thực hiện TCAM 𝑁 × 𝑊 bằng RAM ........................................... 10
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
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.
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 1616. 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 3216.
1
Đồ án môn học GVHD: TS. Trần Hoàng Linh
2. LÝ THUYẾT
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.
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
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.
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
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
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:
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
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 21 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.
Đố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.
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
9
Đồ án môn học GVHD: TS. Trần Hoàng Linh
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.
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)
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:
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.
12
Đồ án môn học GVHD: TS. Trần Hoàng Linh
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ớ.
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.
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.
Ở 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
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.1. Depth Extension (the number of words in the TCAM N) hay mở rộng
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
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
16
Đồ án môn học GVHD: TS. Trần Hoàng Linh
TCAM 1 × 1 RAM 2 × 1
0 X 0 1
1 1
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
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
Đầ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 đó.
Ở 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.
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.
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
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
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
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:
Mà
𝑊 =𝑊 (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 𝑂𝑣𝑒𝑟𝑎𝑙𝑙 𝑀𝑒𝑚𝑜𝑟𝑦 𝑅𝑒𝑞𝑢𝑖𝑟𝑒𝑚𝑒𝑛𝑡 = 𝑁𝑊.
𝓌
24
Đồ án môn học GVHD: TS. Trần Hoàng Linh
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-22 Các RAM tương ứng khi chia Data thành 8 phần
25
Đồ án môn học GVHD: TS. Trần Hoàng Linh
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
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
Đề 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.
10.PHỤ LỤC
30