临街小站

Router源代码架构--Filt_sink

Filt_sink源码结构

先来讲flit_sink,也就是汇聚节点(网关)的微片控制模块。整个大模块下分4个相对小的模块结构。

  • chi-rtr_channel_input

接收端信道接口 input channel interface

  • gnt_ivc_arb

通用仲裁,指出哪一个虚拟信道 generic arbiter

  • fb

微片缓冲 flit buffer

  • fco

发送端的流量控制接口 output port flow control

chi 接收端信道接口

信道接口分管的模块比较多:

  • link_activityq

活动链表队列寄存器

  • flit_dataq

微片数据队列寄存器

  • flit_validq

微片验证寄存器

  • flit_ctrlq

微片控制信号队列寄存器

  • flit_sel_out_ivc_dec

indicate which VC the current flit (if any) belongs to,指明目前的微片属于哪个虚拟信道。从one-hot编码转换成二进制

  • flit_headq

头微片队列寄存器

  • flit_head_out_sel

指明头微片

  • flit_ctrq

微片数目队列计算器 flit_counter

  • flit_tail_out_sel

指明尾微片

gnt_ivc_arb仲裁

最后获取的是仲裁的虚拟信道结果

  • gnt_lod

leading one detector前导1检测方法

  • rr_arb

轮询调度仲裁

  • prefix_arb

基于轮询调度的前缀树

  • matrix_arb-c_matrix_arbiter

矩阵仲裁

flit buffer微片缓冲

微片缓冲是NoC Router接收端非常重要的一部分:

  • has_tail_ivcq

指出哪个虚拟信道有尾微片

  • push_mask_dec

掩码压栈解码

  • tailq

尾微片队列寄存器

  • pop_mask_dec

掩码出栈解码

  • pop_tail_sel

尾微片选择

  • samqc

controller for statically allocated multi-queue. 已分配的多静态队列的控制器

  • push_addr_sel

压栈地址选择

  • damqc

已分配的动态队列控制器

  • pop_addr_sel

出栈地址选择

  • empty_sel

空的虚拟信道选择

  • pop_dataq

数据寄存器出栈

  • read_addrq

读地址

  • bf

buffer file 缓存的寄存器文件

  • pop_next_addr_sel

下个出栈的地址选择

fco输出端流控

发送端流量控制模块的下属模块很简洁,主要包括:

  • cred_validq

信用验证

  • cred_vc_enc

虚拟信道信用编码

  • cred_vcq

虚拟信道信用

clinjie wechat
Think about u every day