1 / 8

QManager Notes

QManager Notes. Fred. > CLK. > CLK. > CLK. > CLK. DATA_DCHR_FREE_PTR_F (in, 17..0). FULL_DCHR_QLENC_F (in). FULL_DCHR_SWQM_F (in). FULL_DP_DCHR_OUTC_F (in). EMPTY_QMGR_F (in). EMPTY_DCHR_FREE_PTR_F (in). COUNT_DCHR_PKTC_F (in). READY_IN (in). QM Dispatcher. QMGR_F_CTL. > CLK.

lila-ford
Télécharger la présentation

QManager Notes

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. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. QManager Notes Fred

  2. > CLK > CLK > CLK > CLK DATA_DCHR_FREE_PTR_F (in, 17..0) FULL_DCHR_QLENC_F (in) FULL_DCHR_SWQM_F (in) FULL_DP_DCHR_OUTC_F (in) EMPTY_QMGR_F (in) EMPTY_DCHR_FREE_PTR_F (in) COUNT_DCHR_PKTC_F (in) READY_IN (in) QM Dispatcher QMGR_F_CTL > CLK STATE_TRANS RD_QMGR_F_QMGR (out) next_state state CLK0 HEADER_ONLY_CTL > CLK DEC_HD_CNT_DCHR (out) LATCH_WORD RD_DCHR_FREE_PTR_F_DCHR (out) DEST_CTL FC_flag CARL FIFO: EMPTY_QMGR_F RD_QMGR_F_QMGR DATA_QMGR_F Line Card (QLNC) FIFO: FULL_DCHR_QLENC_F WEN_DCHR_QLENC_F_DCHR DATA_DCHR_QM_F_DCHR SW (SWQM) FIFO: FULL_DCHR_SWQM_F WEN_DCHR_SWQM_F_DCHR DATA_DCHR_QM_F_DCHR Drop (OUTC) FIFO: FULL_DP_DCHR_OUTC_F WEN_DP_DCHR_OUTC_F_DCHR DATA_DP_DCHR_OUTC_F_DCHR Signals Not Used: prev_state DG_flag Constants Defined but not used: SW_DATAGRAM_BASE LC_DATAGRAM_BASE copycount (1..0) DATA_QMGR_F (in, 31..0) DP_flag SR_flag TO_flag destination (1..0) qid (9..0) FM_flag qid_new (9..0) get_comref_entry SC_flag SB_flag pkt_ptr (19..0) WRITE_HEADER WEN_DCHR_QLENC_F_DCHR (out) comm_ref_ptr (17..0) WEN_DCHR_SWQM_F_DCHR (out) data_int (95..0) DATA_DCHR_QM_F_DCHR (out, 95..0) WEN_DCHR_PKTC_F_DCHR (out) DATA_DCHR_PKTC_F_DCHR (out, 35..0) WEN_DP_DCHR_OUTC_F_DCHR (out) DATA_DP_DCHR_OUTC_F_DCHR (out, 35..0)

  3. Qhdr Table Entry (word size 80-bit)) 79 47 29 11 0 A deficit (32-bit) head_ptr (18-bit) head_ptr (18-bit) next_q (11-bit) SRAM (2 words/entry, 36-bits/word) Q Hdr table ext flags int flags next pkt ptr cpy deficit 1 active (1) total length ppn spi pkt ptr (Valid) head_ptr tail_ptr next pkt ptr ext flags int flags cpy cached copies in LNQM, may be out of sync with the table next_q total length ppn spi pkt ptr (Valid) deficit 2 active (1) Previous deficit next pkt ptr ext flags int flags cpy head_ptr active (1) tail_ptr total length ppn spi pkt ptr (InValid) head_ptr next_q tail_ptr 3 deficit next pkt ptr ext flags int flags cpy next_q active (0) total length ppn spi pkt ptr (Valid) head_ptr tail_ptr Current ext flags int flags next pkt ptr cpy deficit next_q active (1) 4 deficit total length ppn spi pkt ptr (InValid) head_ptr active (1) tail_ptr head_ptr ext flags int flags next pkt ptr cpy next_q tail_ptr total length ppn spi pkt ptr (InValid) next_q 5 deficit next pkt ptr ext flags int flags cpy active (0) head_ptr total length ppn spi pkt ptr (Valid) tail_ptr next_q next pkt ptr ext flags int flags cpy total length ppn spi pkt ptr (InValid) deficit 511 next pkt ptr ext flags int flags cpy active (0) head_ptr total length ppn spi pkt ptr (Invalid) tail_ptr qid (index) next_q next pkt ptr ext flags int flags cpy total length ppn spi pkt ptr (Invalid)

  4. N N-7 N-15 External Flags (8 bit) Internal Flags (8 bit) EX HR IC DP RC NM HO FM TO DG SB SR FC LP SC -- 4 2 4 7 6 5 3 1 0 7 6 5 3 2 1 0 95 88 80 79 77 73 64 CARL <-> QMGR Flags (8 bit) Internal Flags (8 bit) MB Cpy Cnt Queue Identifier (10 bit) EX HR IC DP RC NM HO FM TO DG SB SR FC LP SC -- 31 29 24 19 16 15 13 9 0 63 61 56 51 32 PPN OVIN (5 bit) Packet Pointer (20 bit) 31 24 16 10 0 LFS Rate2 LFS Rate1 Total Length (11 bit) 31 24 16 8 0 Flags (8 bit) Internal Flags (8 bit) LFS Rate2 LFS Rate1 EX HR IC DP RC NM HO FM TO DG SB SR FC LP SC -- QMGR <-> OSAR 31 22 21 19 0 Queue Identifier (10 bit) MB Packet Pointer (20 bit) 31 24 29 10 0 PPN OVIN (5 bit) Total Length (11 bit) 23 0 Queue Length (24 bit) CARL <-> QMGR • External Flag Values • DP (Drop Packet): SPC directive to FPX. Will always be zero coming into SPC. • RC (Reclassify Packet): SPC directive to FPX. May be 0 or 1 going to SPC. SPC must redefine. • NM (No Match): FPX can not classify (no route), FPX to SPC. Set to 0 before returning to FPX. • EX (Exception Packet): Requires non-fast path; IP options, Non IPv4. FPX to SPC. Set to 0 before returning to FPX. • HO (Header Only): FPX to SPC; Set if packet size > 120B and only first chunk sent to SPC. SPC must not modify. SPC can not drop internally if this bit is set. • HR (Header Only Return): Internal FPX flag. SPC must not modify. • FM (From LC/SW): Set by FPX. SPC can use but not modify. • TO (To LC/SW): Set by FPX. SPC can use but not modify. • Internal Flag Values • DG (DataGram) • SB (SPC-Bound) • SR (SPC-Return) • IC (Initial Copy): CARL to QMGR, qmgr always sets to 0. • FC (Final Copy); CARL to QMGR, qmgr always sets to 0. • LP (LFS oPtion) • SC (Single-Chunk) • MC???

  5. packet Header Flow through QMGR Notes: MC = (cpycnt == 0) ? 0 : 1; External Flags Internal Flags next packet header in SRAM OPN MB MC EX HR LP DP RC NM HO FM TO DG SB SR SC 35 28 20 18 17 0 23 Total Length Packet Pointer PPN SPI 35 25 22 20 19 0 SRAM Single Copy Packet Header Format 95 88 80 79 77 73 64 cpy cnt Flags (8 bit) Internal Flags (8 bit) Queue Identifier (10 bit) MB In EX HR IC DP RC NM HO FM TO DG SB SR FC LP SC -- 31 29 24 19 16 15 13 9 0 63 61 56 51 32 PPN OVIN (5 bit) Packet Pointer (20 bit) OPN SPI 31 24 19 10 0 Out LFS Rate2 LFS Rate1 Total Length (11 bit) 31 24 16 10 0 CARL <-> QMGR Flags (8 bit) Internal Flags (8 bit) LFS Rate2 LFS Rate1 ‘0’ ‘0’ ‘0’ ‘0’ ‘0’ ‘0’ ‘0’ ‘0’ ‘0’ ‘0’ ‘0’ ‘0’ ‘0’ ‘0’ ‘0’ ‘0’ ‘0’ ‘0’ MC EX HR DP RC NM HO FM TO DG SB SR LP SC 31 24 16 8 0 Queue Identifier (10 bit) Packet Pointer (20 bit) MB ‘0’ current QID(8..0) -- 31 22 21 19 0 PPN OVIN (5 bit) Total Length (11 bit) ‘0’ ‘0’ ‘0’ ‘0’ ‘0’ ‘0’ ‘0’ ‘0’ ‘0’ ‘0’ ‘0’ ‘0’ ‘0’ OPN SPI 31 24 29 10 0 Queue Length (24 bit) ‘0’ ‘0’ ‘0’ ‘0’ ‘0’ ‘0’ ‘0’ ‘0’ 23 0 QMGR <-> OSAR

  6. N N-7 N-15 External Flags (8 bit) Internal Flags (8 bit) EX HR IC DP RC NM HO FM TO DG SB SR FC LP SC -- 32 30 24 35 34 33 31 29 28 27 26 25 23 22 21 20 35 20 17 27 0 SRAM Single Copy Packet Header Format external flags internal flags cpy next header 35 25 22 19 0 35 20 17 27 0 SRAM Multi-copy Packet Header Format external flags internal flags cpy next header 35 25 22 19 0 total length ppn ppn xx common reference ptr total length xx common reference ptr SRAM Multi-copy Common Reference Entry 35 0 X XXX 35 33 19 0 cpy X common reference ptr SRAM Table Entries FIX!

  7. Bmax Bi tokens Token Bucket Constrained Output Example: x = 64, F = 62.5MHz, Rmax = 1Gbps, F/x = 976.6 Kbps, zmax = 1024, R (Mbps) = {.98, 1.9, 2.9, 3.9, …, 1,000} Fill rate: add z tokens every tick (T seconds) remove L·x tokens to send a packet with L-bits Packet length = L (b), Desired Rate = Rav (b/s), Actual rate = Rmax (b/s) Interval (tick) = T (s), F-1, F is nominally 62.5MHz, Fill rate = z (tokens/tick), Drain rate = x (tokens/bit), Example: x = 1024 (xB = 8192), F = 62.5MHz, Rmax = 1Gbps, F/x = 61 Kbps (F/xB = 7.6KBps), zmax = 16384 (214), R (Mbps) = {.061, …, .98, 1.04, 1.1, …, 1,000} Bmax = 225, Bmin = 224, Sending continuously: T·Rav·x tokens used each period; drain rate Rav·x; z tokens added every tick; replenishment rate = z/T z = ceil(Rav·T·x), for Rav(z) < Rmax; zmax = floor(Rmax·T·x) So the corresponding sending rates are Rav(z) = z·(F/x), Rav = {F/x, 2F/x, 3F/x, …, zmaxF/x} Ticks to send packet = L/TRmax (ticks/pkt), Tokens to send packet Lx Given packet length in Bytes, LB, convert xB = 8xb; RB = Rb/8; Rb = zF/xb = zF/(xB/8) VHDL uses xB = 8192 (tok/B) => xb = 1024 (tok/b) Burst size:(xL tokens to send L bytes, zL/TR tokens added during send) d = B – xBLB + zLB/TRmax = B – L(x – z/TRmax), stop sending when <= 0 so min(n) >= (B/L) / (x – z/TRmax) But, z = ceil(RavTx) >= RavTx so a lower bound is (B/xL) / (1 – Rav/Rmax) Let B = MTU·x and L = MTU then n = ceil(Rmax/(Rmax-RAV)), or RAV = Rmax(n-1)/n for n = 1, 2, …, N Bucket depth range: d = n(tick) * z(tok/tick) = B; ticks to fill = n = B/z; it takes MTU’ = MTU*xB tokens to send; –MTU’ < d <= B; so scale d as d’ = d + MTU’ then 0 < d’ <= B + MTU’; So max scaled bucket depth = B’ = B + MTU’; B = MTU’ so B’ = 2MTU’ = 2·MTU·x MTU = 2048 = 211, x = 8192 = 213, B’ = 2 211 213 = 225

  8. using 8-bits for Z, x = 64 (tokens/Byte) Definitions: Packet length = L (b), Desired Sending Rate = R (b/s), Actual link rate = Rmax(b/s), Clock period = T (s) (or 1/F) Tokens replenishment/tick = z (tok/tick), Tokens consumed/Byte = x (tok/B), Max packet size = MTU = 2KB, Max bucket depth = Bmax = 2·MTU ·x, Min bucket depth = MTU ·x Configuration: X = 26 (tok/B), Rmax= 125MB/s, Bmax =2 MTU 26 = 218 (tok), Bmin = 217(tok), F = 55MHz R(z) = z·F/X = z·55·106/64 (B/s) = z· 55·106/8 (b/s) = z·55/8 (Mbps), alternatively, z(R) = ceil(R(b/s)·8/55·106) = ceil(R(Mb/s)·8/55) SPC traffic is limited to 200Mbps z = 30 (for 206.25Mb/s) Test scenarios: 0) Link at 1Gbps, z = 145/0x91 (996.88 Mb/s) 1) Link at 900Mbps, z = 131/0x83 (900.62 Mb/s) 2) Link at 500Mbps, z = 73/0x49 (501.88 Mb/s) 3) Link at 200Mbps, z = 30/0x1e (206.25 Mb/s) 4) Link at 100Mbps, z = 15/0x0f (103.12 Mb/s) 5) Link at 50Mbps, z = 8/0x08 (55.00 Mb/s) 6) Link at 10Mbps, z = 2/0x02 (13.75 Mb/s) 7) Link at 1 Mbps, z = 1/0x01 (6.88 Mb/s)

More Related