scd tcam library l.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
SCD: TCAM Library PowerPoint Presentation
Download Presentation
SCD: TCAM Library

Loading in 2 Seconds...

play fullscreen
1 / 6

SCD: TCAM Library - PowerPoint PPT Presentation


  • 144 Views
  • Uploaded on

SCD: TCAM Library. Fred Kuhns fredk@arl.wustl.edu Applied Research Laboratory Washington University in St. Louis. Assumptions, Constants. TCAM located on SRAM0 (SRAM, channel ID 0) Base address 0x80000000; Select 0 and burst size 1. Each NPU (A/B) has own LA-1 interface

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'SCD: TCAM Library' - thu


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
scd tcam library

SCD: TCAM Library

Fred Kuhns

fredk@arl.wustl.edu

Applied Research Laboratory

Washington University in St. Louis

assumptions constants
Assumptions, Constants
  • TCAM located on SRAM0 (SRAM, channel ID 0)
    • Base address 0x80000000; Select 0 and burst size 1.
  • Each NPU (A/B) has own LA-1 interface
    • SPP version 1 and 2 do not use the second LA-1 interface
      • set IsPort1Used to 0 (i.e. false)
    • NPUA must perform initial configuration
    • Both NPUA/B can use LA-1 interface for lookups
    • All TCAM control implemented on XScale A
      • its not clear that we can use the IDT libraries to control from both NPUA and NPUB.
  • All databases are IDT type exact match.
    • Maximum of 16 databases;
    • Must start on segment boundary
  • User specified DB entry widths:
    • Max: 576-bits; Min: 32-bits;Allowed sizes: n*32, n in (1, 18); 36; 74 and 144.
    • Actual Core sizes: 36, 72, 144, 288 and 576 bits
  • Segment size: 8K x 72-bit
    • 256K x 72-bit core entries
    • Database must start on a segment boundary.
    • Max segments: 32
  • ZBT Associated SRAM
    • 512K x 36 bit ZBT SRAM (18Mb)
    • Allocated as 0, 32, 64 or 128-bit result data
    • Index and size are number of 32-bit words
  • Command context
    • Available: 128 (0,...,127)
    • Control uses context 120 through 127
search machine class
Search Machine Class
  • Class SearchMachine {...}
    • May use callbacks with interrupt handlers for ARP aging.
    • Constructor accepts a set of key value pairs specify the configurable parameters.

typedef multimap<string, valTable> confTable;

    • Internal state:
      • next database id, starts at 0.
      • segment allocation state (for the 32 available segments): Just need current address of available block.
      • associated memory allocation state: Just need current address of available block.
      • current set of database objects (stl set object).
    • Operations: The Database object is of type Handle<T,P> with the RefCntPolicy (reference counted smart pointer). Or can use pointers by then the SearchMachine class “owns” the DB object and is the only one allowed to destroy it.

typedef handle<Database,RefCntPolicy> DB;

DB create_database(key_bits, res_bits, max_cnt);

void destroy_database(DB);

get_dbs() // returns an iterable object, say an stl set.

configuring a database
Configuring a DataBase
  • class DataBase {...}
    • The user is expected to keep track of entry indices.
    • State:

id_; // returns ID assigned by SearchMachine class

handle_; // assigned by IDT software when DB is created

key_width(); // in bits

core_width(); // in bits

result_width(); // in bits

entry_count(); // max number of entries

core_start_addr_;

assoc_data_addr_;

    • Operations:

fltr {key[N]; mask[N]; result[M]}

write_fltr(index, fltr);

update_result(index,result);

fltr get_fltr(key); fltr get_fltr(index)

result lookup_fltr(key)

rem_fltr(fid); rem_fltr(key)

configuration file
Configuration File

[SearchMachine]

useLAPort1 = 0

[database]

name = name_db1

id = num_db1

numEntries = X

keyWidth = W # bits

resultWidth = Y # bits

[database]

...

substrate configuration tables on npe

Entries

TCAM

keys

masks

results

0

1

2

NPUA

...

...

...

NA-1

NA

NA+1

NA+2

NPUB

...

...

...

N-1

Substrate Configuration tables on NPE

Search machine