[NoC]Outstanding和Credit的概念详解
Outstanding和Credit的概念详解
摘要:在计算机体系结构、片上网络(NoC)、总线互连(如AMBA、PCIe或内存总线)中,outstanding 和 credit 是两个重要的概念,用于管理数据传输的并发性、流控制和性能优化。它们虽然都与处理多个事务(transactions)或数据包相关,但本质上不同:outstanding更侧重于跟踪未完成的事务数量,以实现并发和乱序执行;credit则是一种流控制机制,用于防止接收端缓冲区溢出。以下我将详细解释它们的定义、差异、各自的使用场景,并提供示例。
1. Outstanding的概念
1.1 定义:
Outstanding(常称为"outstanding requests"或"outstanding transactions")指的是系统中已发出但尚未完成或响应的请求/事务的数量。这些请求已被发送到总线或互连,但尚未收到确认(acknowledgment)或数据返回。Outstanding机制允许系统在等待一个事务完成的同时,继续发出新的请求,从而提高并发度和吞吐量(throughput)。
- 关键特性:
- 跟踪未决事务:系统维护一个计数器或队列,记录outstanding的数量(e.g., 最大outstanding为8表示最多允许8个未完成请求)。
- 与乱序执行相关:常用于支持out-of-order(乱序)处理,允许事务不按发出顺序完成(e.g., 后发出的读请求可能先返回)。
- 限制机制:通常有上限(e.g., 通过硬件寄存器设置),超出时新请求会被阻塞(stall),防止系统过载。
- 目的:优化延迟(latency)和带宽利用率,尤其在高延迟环境中(如DRAM访问)。
1.2 使用情况:
- 适用于高并发、延迟敏感的系统:常见于处理器-内存总线、缓存一致性协议或多核互连中,用于管理多个未决请求,提高ILP(Instruction-Level Parallelism)或MLP(Memory-Level Parallelism)。
- 典型场景:
- CPU-内存系统:现代处理器(如Intel x86或ARM)允许多个outstanding memory requests。e.g., 在乱序执行核中,load/store单元可以发出多个读/写请求,而不等待前一个完成。
- 总线协议如AMBA AXI:AXI支持outstanding transactions,允许主设备(master)发出多个读/写 burst,而从设备(slave)异步响应。这提高了总线利用率。
- NoC或片上互连:在多核SoC中,outstanding用于跟踪从一个核到另一个核的未决消息,防止流水线停顿。
- 优点:提高系统并行度;允许重排序(reordering)以隐藏延迟。
- 缺点:需要额外硬件(如重排序缓冲区,Reorder Buffer)来处理乱序响应;可能引入复杂性,如确保数据一致性。
- 管理方式:通过ID标签(transaction ID)跟踪每个outstanding事务,确保响应匹配正确请求。
1.3 示例:
- 在一个DDR内存控制器中,CPU可以有最多16个outstanding读请求。CPU发出请求1(读地址A),不等待返回,就发出请求2(读地址B)。如果B的数据先返回,系统使用ID标签将它路由回正确的位置。这隐藏了内存访问的~100ns延迟,提高了整体性能。
2. Credit的概念
2.1 定义:
Credit(信用或令牌)是一种流控制(flow control)机制,用于管理发送方和接收方之间的数据传输速率。接收方预先分配"credits"给发送方,每个credit代表接收缓冲区的一个可用槽位(slot)。发送方只有在持有credit时才能发送数据;发送后,credit被消耗;接收方处理完数据后,返回credit,允许更多传输。
- 关键特性:
- 基于信用计数:发送方维护credit计数器(初始值由接收方提供)。credit > 0时可发送;=0时阻塞。
- 防止溢出:核心是确保接收端的缓冲区不会被过载(buffer overflow),通过显式反馈控制流量。
- 类型:常见credit-based flow control,包括on/off credit(简单开关)和滑动窗口式credit(类似TCP)。
- 目的:在有缓冲区限制的系统中,避免拥塞(congestion)和数据丢失;常用于packet-switched(包交换)网络。
2.1 使用情况:
- 适用于有缓冲区约束的点对点或网络传输:常见于网络协议、互连总线或NoC中,尤其当链路带宽有限或接收端处理速度慢时,用于拥塞控制。
- 典型场景:
- NoC和片上网络:在NoC路由器间,credit用于虚拟通道(virtual channel)流控制。e.g., 发送路由器只有下游缓冲区有credit时才转发flit(数据片段)。
- 总线协议如PCIe或RapidIO:PCIe使用credit-based flow control管理虚拟通道(VC)的流量。接收端广告(advertise)可用credit,发送端据此决定是否传输TLPs(Transaction Layer Packets)。
- 内存和I/O系统:在高带宽内存(HBM)或NVMe SSD中,credit控制主机到设备的命令队列深度,防止队列溢出。
- 网络协议:类似于InfiniBand或Ethernet的信用机制,用于端到端流控制。
- 优点:简单高效;提供细粒度控制;支持异步传输而不需全局时钟。
- 缺点:引入credit返回的开销(额外带宽);如果credit循环延迟高,可能降低吞吐。
- 管理方式:通过专用信用信号或包(credit packets)返回credit;可与窗口大小(window size)结合,允许burst传输。
2.2 示例:
- 在NoC中,路由器A连接路由器B,B有4个缓冲槽。B初始发送4 credits给A。A使用1 credit发送一个flit;发送后credit减1。当credit=0时,A停止发送。B处理完一个flit后,返回1 credit给A,允许继续。这防止B缓冲溢出,即使A生成数据更快。
3. Outstanding和Credit的差异
虽然两者都处理多事务并发,但它们在目的、机制和应用上截然不同:
-
目的差异:
- Outstanding:焦点是最大化发送方的并发,允许系统"提前"发出请求以隐藏延迟。不直接关心接收端的缓冲。
- Credit:焦点是保护接收方的缓冲区,通过信用限制发送速率,确保不溢出。强调流控制和拥塞避免。
-
机制差异:
- Outstanding:是单向的(发送方