relis
早期独立完成了无线音频SOC芯片的所有设计,验证,综合,芯片测试工作。后做了一些芯片架构和团队带领的工作。
展开
-
NoC进阶
Bisection即把所有节点分成两个节点数相等的部分,所有可能的分配中,两部分之间channel数或者带宽最小的划分就对应bisection。或者由此构成拓扑,更多来自于bisection bandwidth的需求,还有ports本身的限制。比如这里的channel,假设所有node之间一半的traffic需要通过这个channel。Hop count是消息从源节点往目的节点经过的channel数量,直接影响网络的延迟。实际上上面的channel刚好也是bisection channel。原创 2024-06-14 16:50:10 · 316 阅读 · 0 评论 -
片上网络(NOC)入门
结合设计目标,如可扩展性,最好的bisection bandwidth,那么mesh网络最好。如果是要求高带宽的某些网络,mesh网络是有瓶颈的,à路由算法,流量控制(flow control)分层拓扑结构(hierarchy)需要hierarchy的网络去做。原创 2024-06-13 11:13:17 · 15 阅读 · 0 评论 -
PCIe和USB 3.0是有相同的接口吗?
一个PCI Hub板上,也可以出现USB的接头。但是这并不意味着可以在这个板子上插上一个USB的设备。USB3的线缆的连接器非常普遍,而且还便宜。这有可能是这样的:板子的背面还有一个PCIe switch,这样就可以把4个x16的wire变成x1的wire了。而USB刚好可以支持x1的wire。而且还能满足PCIe的(物理层)需求。每个x16的slot可以插上GPU卡。所以虽然看过去性能不一定好,但是如果不是非要用在GPU之间通信的场合,那么也够用!X1的PCIe pins会转接到USB连接器的高速双绞线上原创 2024-06-12 11:54:40 · 202 阅读 · 0 评论 -
PCIe (4)
因此PCI其实也是统一地址的 它的操作也就是所谓的读 或者 写 (load or store)以上完成从地址0xfdaff040(0x3f6bfc10 * 4)读取一个DW的操作。不过后来arm将CPU和显卡都放在了同一颗芯片上,所以就换成了AHB, AXI这些。比如一次read, 会在PCI总线上变成TLP。PCI最早是台式机用来连接CPU和显卡的。PCIe是从PCI发展出来的。然后device再返回数据。原创 2024-06-11 16:40:47 · 25 阅读 · 0 评论 -
USB (5)
对于比如鼠标这样的设备,主机会最快125us poll一次,看是否有输入。这也就是interrupt transfer类型。Bulk传输则是尽力传输,在总线够用时传输,不会有严格的时序要求。适合打印机,大容量存储设备。对于isochronous transfer类型,数据是在固定的时隙传输的,但不保证正确性。USB是一个poll的总线。并且数据传输是对齐到time-line的。原创 2024-06-11 14:21:57 · 122 阅读 · 0 评论 -
USB (4)
USB 3.0(SS)只会poll一次,之后device会在准备好的时候发送ERDY(Endpoint Ready)。USB 2.0使用poll和NAK机制进行流控(device到host)。Host会一直poll,直到非NAK。原创 2024-06-11 10:54:14 · 17 阅读 · 0 评论 -
USB (3)
USB是polled bus,这和PCIe不一样,所有的transfer都是由host发起的。如果device没有数据,那么只能回复NAK。对于IN(从device到host)。原创 2024-06-10 10:32:52 · 44 阅读 · 0 评论 -
USB (2)
首先是TOKEN TRANSACTION,其次是DATA TRANSACTION,再次是Handshake Transaction。上面的SETUP TRANSACTION是TOKEN TRANSACTION的一种。另外三种是OUT, IN, SOF。在每个TRANSACTION中又包含了3个STAGE,最后一个STAGE是ACK。SETUP是默认为“OUT”方向的transaction。以2.0的枚举过程为例。原创 2024-06-09 12:35:47 · 40 阅读 · 0 评论 -
USB (1)
USB的physical层是基于Serdes的,所以有串并/并串的转换,有8b/10b encode, 有scramble,有时钟恢复。不过USB或者PCIe的物理层不一样,单根线或者多根线(lanes)实现很高速,距离还挺远的传输。其实回过头看USB 是可以和无线 有线(internet) 可以和PCIe 甚至AXI类比的。不同的协议,依赖的介质不一样 这就要求相应的Physical层处理。不过AXI 如果要说有物理层,那就是直接连线了。它们共通处在于都是communication。原创 2024-06-06 20:30:29 · 109 阅读 · 0 评论 -
RDMA (2)
非iWARP时,CPU维护TCP/IP层,这涉及到维护connection context,payloads的分片和重组,处理中断等。非iWARP时,当应用向网络适配器发出读或者写命令时,命令穿过用户空间以及内核空间,因此需要在用户空间和内核空间间进行切换。如果没有iWARP,数据在从网络适配器到应用层buffer路中,会有中间的拷贝。iWARP下,使用RDMA将数据从网络适配器的buffer复制到应用程序的buffer,提高了效率,较低了延迟。这规避了对内核的调用,减少了开销和延迟。原创 2024-06-04 14:23:34 · 59 阅读 · 0 评论 -
RDMA (1)
iWARP消除了三个方面的开销:CPU的TCP/IP处理需求,内存拷贝,application context 切换。RoCE(RDMA over Converged Ethernet),也是由InfiniBand Trade Associationg(IBTA)于2009年开发。Remote Direct Memory Access(RDMA)是用来给有高速需求的应用释放网络消耗的。RDMA在网络的两个应用之间进行低延迟,高吞吐的内存对内存的直接数据通信。InfiniBand需要部署独立的协议。原创 2024-06-04 13:55:57 · 440 阅读 · 0 评论 -
CXL (1)
CXL和PCIe跑在一样的physical layer上,与PCIe不一样的是,CXL允许CPU和连接的设备共享一致(coherent)的内存。另外,为了降低延迟,CXL引入了专用的CXL.cache和CXL.mem协议,这和CXL.io(基于PCIe DMA)是分开的。比如在第一种(type 1)使用场景中,允许没有内存或者很少内存的设备可以共享CPU的内存。如此,CXL可以让内存不在限于CPU或者GPU本地的部分,而是可以共享。CXL说到底 是为了打破内存墙而生的。原创 2024-06-03 14:58:21 · 45 阅读 · 0 评论 -
NV link
实际上,PCIe依然会和NV link一起使用。NV link比PCIe有什么厉害的地方。NV link是去CPU中心化的。NV link只针对GPU。NV link是并行总线。原创 2024-05-31 17:44:08 · 136 阅读 · 0 评论 -
通信技术体会
pcie虽然物理层和usb都是serdes,但transaction layer就是上面这样的,也就是它是双向,点对点,split的,所以除了serdes高速,这一层也是高速。因为pcie还是axi(神似split/cutthrough)。(axi更多是接口而不是bus)。所以serdes速度差别没有量级区别 但延迟和吞吐确是好。pcie可以看成是全连接的ahb bus,但又不是。原创 2024-05-31 13:54:53 · 338 阅读 · 0 评论 -
PCIe (3)
不过MMIO依然是CPU直接发起PCIe transaction(TLP)。这意味着在TLP response到来之前,CPU必须等待。但是要访问更大的空间,则不可以,所以这里BAR将更大空间(device memory)映射到了IO。BAR 提供了一种MMIO的访问形式,访问的是类似register的IO,但是却是访问memory。Configuration space是确定的大小的,一般4KB左右。而DMA模式则不用这样。原创 2024-05-30 18:23:31 · 177 阅读 · 0 评论 -
PCIe (2)
Flow control保证transmitters不会给receiver发送不能接收的Transaction Layer Packets(TLPs)。Requester利用flow control(FC)机制跟踪Receiver端可用的queue/buffer空间,以防止overflow。Transaction Layer则对收到的TLPs计数,发送端则在接收端credits超出时不再发送。PCIE link初始化时,会读取对方FIFO的容量,在传输过程中定期同步对方FIFO的剩余容量。原创 2024-05-29 18:01:53 · 35 阅读 · 0 评论 -
PCIe (1)
DLLPs是2 DW,包含ACK/NAK 和flow control DLLPs。当completer侧接收了TLP,则会在completer的transaction layer释放接收RX空间。Payload size如果是256 bytes, 那么throughput = 256/(256+20)=92%。ACKs和flow control 更新DLLPs均是和数据(TLP)方向相反方向。如果所有的credits都使用了,那么需要等待credit更新。如果是8B/10B的编码,那么需要25%的开销。原创 2024-05-28 18:01:17 · 197 阅读 · 0 评论 -
小白怎么看DDR
不过到了灰色的txq里面,不一定是一一发送的,而是按聚合数,可变数量的发送的。在DDR里面,cmdq里面的东西就可能不同cpu有interleave的。有做和参与这么些芯片 虽说每每是片上系统 但是DDR是个远观 没近看的。只是txq里面不会把多个Node的东西Interleave。不过和WiFi的发送通路一对比 却有些类似的地方。实在不明白为什么要有这么多步骤。但是DRAM的控制就不简单了。各种cpu可以看作node。它们说DRAM长这样。原创 2024-05-28 14:44:25 · 41 阅读 · 0 评论 -
为什么要有NOC
大芯片,物理面积很大,延迟太长;片上系统,IP众多,总线规模太大。路径不是固定的,AXI带来的时序也不是固定的,这才可以解决这些问题。如果是AHB,注意AXI并不真的定义了总线,更多是接口。这些限制下,AHB由于固定的时序而不能满足需求。那么如何实现上面的带宽,延迟需求呢。原创 2024-05-27 15:42:34 · 35 阅读 · 0 评论 -
静态时序分析 (3)
引入的DPT(Double Patterning Technology)之后,在同一层layer上要做两次mask,两次mask之间的偏差,会导致线间距变化,从而影响耦合电容值,需要将这一因素考虑到RC corner中,所以DPT 的RC corner是:Cworst_CCworst, RCworst_CCworst, Cbest_CCbest, RCbest_CCbest.R=r/W*T, r为电阻率,除了跟线宽 W 和线厚 T 相关之外,还跟温度相关,随着温度的上升而增大。原创 2024-05-24 16:32:48 · 348 阅读 · 0 评论 -
AHB协议
当master想要访问slave时,master发送HBUSREQ信号给arbiter请求总线控制权,arbiter如果返回给master一个HGRANT信号,则该master获得总线控制权,然后master给slave发送HTRANS信号,开始和slave进行数据传输。HTRANS[1:0] 2位址的控制信号。HREADY表示上一master有效,因此,HSELx和HREADY都有效,才采样地址和控制信号。HRESP[1:0] 响应。HWRITE 读写信号。HSIZE[3:0] 传输数据的位宽。原创 2024-05-22 17:36:30 · 12 阅读 · 0 评论 -
AXI (3)
BVALID信号必须在WVALID和WREADY信号之后。可以在第一个burst还未完成时,即进行第二个burst。写响应信号BRESP必须在最后一笔数据数据完成之后。VALID信号和READY信号同时有效,则方采样。多burst(可outstanding)写传输。写地址和写数据通道之间没有严格的顺序限制。只有当读地址通道完成后才有读数据通道。数据则使用LAST标识最后一笔。数据传输过程只发送首地址。原创 2024-05-22 14:10:14 · 12 阅读 · 0 评论 -
AXI (2)
BRESP[1:0] slave响应表明写传输状态。AWREADY 用来判断slave是否准备好接收写地址信号,为高才接收。WSTRB[3:0] 写字节使能信号,用来表明写数据中的哪些字节是有效的。ARREADY 用来判断slave是否准备好接收读地址信号。WREADY 用来判断slave是否准备好接收写数据,为高才接收。BREADY 用来判断是否准备好接收写响应信号,为高才接收。AWVALID 用来判断写地址信号是否有效。BVALID 用来判断写响应信号是否有效。WVALID 用来判断写数据是否有效。原创 2024-05-22 13:44:27 · 10 阅读 · 0 评论 -
AXI (1)
这对应定制/控制和数据分离 不分离没有办法outstanding,不outstanding, 那么分离意义何在。非及时 这和outstanding, 地址/控制和数据分离体现了一样的点 可以支持延迟 并且可以利用延迟。Outstanding,可以实现上一次数据传输还没有完成的情况下继续下一次的地址/控制信号。允许添加寄存器打拍,这对应总线内部是没有明确定义的 这也支持“大”系统。这可以提高延迟的容忍度 所以响应延迟的地方 可以提高吞吐。总线的地址/控制和数据通路是分离的。读写独立 带宽增加了一倍。原创 2024-05-22 13:16:52 · 252 阅读 · 0 评论 -
静态时序分析 (2)
比如recovery/removal, Areset和当前clock路径。比如setup, 下一data路径和当前clock路径,比如hold, 当前data路径和当前clock路径。以setup为例子,检查的是两条路径的相对的时间!如果多个clock之间,那么寻找重复的周期即可以。根据路径的不一样,分为不一样的。也可以是模型计算出来的。原创 2024-05-21 15:10:58 · 6 阅读 · 0 评论 -
静态时序分析(1)
有两种进行时序验证的方式,一个是时序仿真,一个是静态时序分析(STA)。STA可以在多个芯片环节使用 区别在于STA所用的信息的准确度和完备性。比如理想的时钟和互联信息时 这一般在RTL综合阶段进行。在CTS完成之后,则有真实的clock 时间信息。时序分析(公共的时钟周期内进行)比其仿真更快。时序仿真 要求向量,包含逻辑和时序信息。其会遍历所有的时钟以及外部环境的可能。在布局完成之后,则有真实的互联信息。在布线完成之后,有了真实的RC信息。时序是IC中非常重要的一环。时序仿真有时候也是必要的。原创 2024-05-20 14:56:53 · 33 阅读 · 0 评论