- 博客(179)
- 资源 (1)
- 收藏
- 关注
原创 PCIe-Transaction Descriptor – Traffic Class Field
TC字段的提取与处理TC字段位于TLP头部的字节1位[6:4]在整个PCIe拓扑中保持不变,用于路由决策需要正确提取并映射到相应的虚通道TC到VC的映射策略系统软件负责配置TC/VC映射表典型映射:TC0-TC3映射到VC0,TC4-TC7映射到VC1支持动态映射调整以适应不同应用场景虚通道仲裁机制支持多种仲裁算法:轮询、TC优先级、加权轮询、严格优先级需要监控TC利用率,避免低优先级TC饥饿实现自适应仲裁策略交换机中的TC路由Switch根据TC和地址信息进行路由决策。
2025-12-29 22:43:31
2
原创 PCIe-Relaxed Ordering and ID-Based Ordering Attributes
IDO使能条件:必须通过Device Control 2寄存器显式使能才能使用IDO属性。请求类型限制Configuration/I/O/MSI请求:IDO保留,RO必须为0普通内存请求:允许IDO和RO原子操作:不能有RO,但可以有IDO消息请求:IDO通常不保留(除非明确禁止)完成者处理不需要从请求复制IDO建议启用IDO的完成者为所有完成设置IDO可以有选择地为某些完成类型禁用IDORC对等转发RC不需要在对等转发时保留IDO位实现可以选择是否保留IDO以优化性能错误检查。
2025-12-29 22:29:42
2
原创 PCIe-Transaction Descriptor- Attributes Field
性能优化:通过合理设置No Snoop和Relaxed Ordering,可以显著减少不必要的snoop操作和排序约束,提升系统性能。一致性管理:在支持硬件一致性的多核SoC中,Attributes字段用于协调PCIe设备与CPU缓存之间的数据一致性。内存类型区分:根据不同的内存类型(可缓存、不可缓存、写合并等)设置不同的Attributes,优化访问模式。原子操作支持:原子操作需要强制严格排序,忽略Relaxed Ordering属性。可配置性。
2025-12-29 21:48:48
2
原创 AXI- Multi-copy atomic中的Pos设计
功能正确性所有对同一地址的访问都经过同一个PoS原子操作期间地址被锁定写操作在所有无效化确认后才完成性能目标支持目标并发数(如16个并发原子操作)满足最大延迟要求(如<100ns)带宽匹配内存控制器能力可扩展性目录大小可配置Home Node数量可扩展互连带宽可升级功耗管理空闲时时钟门控动态电压频率调节支持低功耗状态保持验证与调试形式验证属性定义完整性能计数器齐全硬件追踪支持串行化点的设计是SoC内存子系统中最复杂但也最关键的部分之一。
2025-12-29 13:53:39
3
原创 PCIe-浅谈Transaction ID和Tag(2)
分层Requester ID管理RC层:管理总线号分配和重配置设备层:捕获并应用分配的Bus/Device NumberSwitch层:保持Transaction ID不变,使用正确ID生成自己的请求。
2025-12-25 23:08:59
5
原创 PCIe-Tag Rule(2)
/ Requester ID格式:Bus Number (8 bits) + Function Number (8 bits)input [7:0] st_value, // Steering Tag值(仅当Posted_TH1时有效)// Tag[7:0]可以是任意值,通常设为0或优化为其他用途。// 关键规则:Switch不能修改经过的TLP的Transaction ID。
2025-12-25 22:54:00
5
原创 PCIe-Tag Rule
/ 无效10-bit Tag(Tag[9:8]=00b)uint16_t ten_bit_tag_enable : 1;// 未知Tag - 可能是10-bit Tag请求被不支持10-bit的Completer处理。
2025-12-25 22:28:15
9
原创 PICe-Tag标签及演变
/ 使能请求者10-bit Tag。output reg [9:0] tag_usage_statistics[0:2] // 按Tag[9:8]分组统计。
2025-12-25 22:02:17
6
原创 PCIe-Tag字段与Outstanding Request
print(f"10-bit Tag (768) 是否足够: {'是' if optimal_outstanding <= 768 else '否'}")print(f"8-bit Tag (256) 是否足够: {'是' if optimal_outstanding <= 256 else '否'}")print(f"5-bit Tag (32) 是否足够: {'是' if optimal_outstanding <= 32 else '否'}")// 时间戳(用于超时检测)
2025-12-25 21:55:17
6
原创 PCIe-浅谈Transaction ID和Tag
parameter TAG_WIDTH = 5, // 5位(32个Tag)或8位(256个Tag)reg [31:0] tag_utilization[0:255];// 问题:多个VM可能使用相同的"虚拟"Bus/Device/Function编号。
2025-12-25 21:38:39
10
原创 PCIe-浅谈“反常“0/1 DW Read/Write事务
Zero-Length Read提供了一种标准机制,请求者可以通过发送一个不读取任何数据的读请求,并等待其完成,从而确保之前同一TC的Posted Write已经完成。如果完全禁止未启用任何字节的写请求,那么任何这样的请求都会被认定为错误,这可能会限制一些潜在的用途。这意味着,如果将来有新的协议或功能需要利用这种请求,可以在不违反规范的情况下定义。规范通过LN协议的例子,说明了这种请求的实用价值。这样定义确保了协议的确定性:即使请求没有读取任何字节,完成者也必须响应,而且响应格式是统一的。
2025-12-25 00:19:00
4
原创 PCIe-Zero-Length Read
Zero-Length Read与之前的Zero-Length Write类似,但用于读请求。具体来说,它是一个1 DW的Memory Read Request,其Byte Enable全部为0(即1st DW BE[3:0] = 0000b, Last DW BE[3:0] = 0000b)。根据规范,对于这样的读请求,Completer必须返回一个1 DW的Completion with Data,数据内容未指定(可以是任意值)。但更重要的是,这个请求被用作一种“刷新”机制。
2025-12-25 00:08:24
7
原创 PCIe-1 DW 的 Read Request
对于第一条 "如果1 DW的Read Request指定未启用任何字节读取(1st DW BE[3:0] = 0000b),则相应的Completion必须指定1 DW的长度,并包括1 DW的数据有效载荷。.last_be = 4'b1111 // 违规!// 规则1: Length>1时,First DW BE不能为0000。// 规则2: Length=1时,Last DW BE必须为0000。
2025-12-24 23:54:17
7
原创 PCIe-Zero Length Write
它是指Memory Write Request TLP中,Length字段为1(即1个DW),但First DW Byte Enable和Last DW Byte Enable(对于1 DW请求,只使用First DW BE,Last DW BE必须为0000b)都为0,也就是说没有字节被使能。尽管它不写入任何数据,但它仍然是一个TLP,会经过PCIe拓扑,到达目标设备。input wire [2:0] addr_space_type, // 0=内存,1=I/O,2=配置,3=LN等。
2025-12-24 23:17:00
5
原创 PCIe-SoC角度来看Memory Read Request
/ PCIe请求:地址0x1000, Length=1, First BE=1111b。// PCIe请求:地址0x2000, Length=256 (1KB数据)// 2. 计算:实际需要12字节,从0x1005-0x1010。// - 地址0x1004,BE=1110b(读取3字节)// - 地址0x1008,BE=1111b(读取4字节)// - 地址0x100C,BE=0011b(读取2字节)// PCIe请求:地址0x1005, Length=3,
2025-12-24 23:01:43
4
原创 PCIe-QW对齐
first_dw_be = 0b1110, // 使能字节1,2,3(地址0x4005-0x4007)// DW0字节2 → DW0字节3 → DW1字节0 → DW1字节1 → DW1字节2 → DW1字节3。.last_dw_be = 0b0001 // 使能字节0(地址0x400C)// DW0字节3 → DW1字节0 → DW1字节1 → DW1字节2 → DW1字节3。// 使能字节0,1,2。.first_dw_be = 0b0011, // 访问寄存器A(低2字节)
2025-12-24 22:43:07
6
原创 SV-this的使用
(2)在new函数中,将某个变量赋值给另外一个变量时,如果此类没有定义这个变量,则按照以下顺序寻找:父类----> 此类所在的package A---->Package A中improt的Package B。所在域即为类所在的位置,在package A,所在域就是packageA ,并不会到一个没有improt的package C中。当从super.new进入到基类时,基类中的this.变量,指的还是基类本身中的这个变量,并不是拓展类的同名变量,如果基类不存在就会报错。关键字始终代表当前正在被构造的。
2025-12-23 22:33:29
187
原创 AXI-A9.2 Cache line size
缓存行:它是从内存中加载到缓存中的最小数据单元。它包含一段连续的、字节对齐的内存地址,其起始地址必须对齐到缓存行大小的整数倍(例如,64字节的缓存行,其起始地址必须是64的倍数)。统一大小要求:在支持缓存共享的系统中,所有参与者(如CPU、一致性互连、I/O一致性设备)必须使用相同的缓存行大小。这是实现高效、正确的硬件一致性协议的基础。缓存行对齐事务:某些操作(主要是缓存维护操作)必须针对整个缓存行进行,不能只操作其中的一部分字节。
2025-12-23 22:31:59
6
原创 AXI-A9.1 Caching in AXI
早期同构多核(SMP)采用总线侦听,扩展到几十核后,总线成为瓶颈,演进为基于目录的一致性协议(如CHI)。它接收GPU(I/O一致性代理)通过AXI发来的访问,并能够检查系统缓存的状态,必要时向CPU集群发起侦听,以满足GPU的I/O一致性请求。例如,如果CPU缓存了某数据,然后非一致性DMA要读取该数据,软件必须在DMA读取前,先执行缓存清洗操作,将CPU缓存中最新的数据写回内存。(I/O一致性模型)来管理一致性,既提供了必要的功能,又将复杂的全局一致性逻辑收敛到一致性互连中,而不是分散在每个外设里。
2025-12-23 22:10:34
5
原创 AXI-A7.4.10 Support for Atomic transactions(2)
该部分描述了AXI协议中,管理器(Manager,如CPU、DMA等主设备)对原子事务的一种向后兼容性支持机制。其核心在于,即使一个管理器本身具备发起原子事务的能力,它也可以被配置为不发起这类事务,以确保在不支持原子操作的旧系统中能正常工作。这是通过一个可选的 输入引脚实现的。功能: 是一个1位的输入信号,用于全局控制管理器接口是否允许发出原子事务。状态:置位(Asserted,逻辑1):这是默认值。管理器可以正常发起原子事务。取消置位(Deasserted,逻辑0):管理器被禁止发起任何原子事务。任何试
2025-12-16 22:58:02
10
原创 AXI-A7.4.10 Support for Atomic transactions(1)
属性是一个简单的布尔标志,用于明确声明一个AXI接口组件(可以是管理器、从设备或互连组件)是否支持原子事务扩展功能。True:该组件原子事务。False:该组件原子事务(此为默认值)。:如果一个组件声明支持(True),则它原子操作类型、所有数据大小和所有字节序。不允许部分支持。
2025-12-16 22:44:26
12
原创 AXI-A7.4.9 Atomic transaction dependencies
这些规则定义了在执行AtomicLoad、AtomicSwap和AtomicCompare事务时,管理器(Master)和从设备(Subordinate)之间握手信号(VALID和READY)的时序约束。其核心目标是在保证原子操作正确性的前提下,最大限度地维持AXI协议的流水线化和通道独立性优势。
2025-12-16 22:39:22
10
原创 AXI-A7.4.7 Transaction structure
AXI协议中AtomicLoad、AtomicSwap和AtomicCompare这三类原子操作的事务结构和执行规则。原子操作的核心特点是“读-修改-写”的不可分割性,即操作在执行过程中不会被其他访问打断,且对外界表现为一个整体。
2025-12-15 22:38:59
8
原创 AXI-A7.4.6 Atomic transaction signaling
AWATOP(Atomic Operation Type)是一个6位的AXI信号,专为支持原子操作而引入。它出现在写地址通道(AW)上,用于指示当前事务的原子操作类型和字节序信息。:表示非原子操作,即普通写事务。:原子存储类操作。高两位为01,第3位(e)表示字节序(0为小端,1为大端),低三位(xxx)用于指定具体操作(如原子加、原子与等,需参考完整编码表)。:原子加载类操作。高两位为10,同样包含字节序位和子操作码。:原子交换操作。将内存中的值与提供的新值整体交换。:原子比较并交换操作。
2025-12-15 22:27:45
11
原创 AXI-A7.4.5 Request attribute restrictions for Atomic transactions
摘要:AXI协议对原子事务请求属性设置限制规则以确保操作正确性和系统一致性。1)允许AWCACHE与AWDOMAIN任意组合,支持原子操作在不同内存区域的灵活性应用;2)AWSNOOP必须为零(禁用缓存维护操作)才能执行原子操作,避免操作复杂性;3)禁止AWLOCK独占访问与原子操作同时使用,防止两种原子机制冲突。这些规则源于多核系统需求,在兼容性、缓存一致性管理和实现简化间取得平衡,既保证原子操作性能又降低硬件实现复杂度。
2025-12-15 22:16:22
13
原创 AXI-A7.4.4 ID use for Atomic transactions
它通过强制性的ID隔离,避免了不同性质的事务流发生危险的相互干扰,在复杂的SoC互连中为关键的同步操作保驾护航。
2025-12-15 22:11:55
10
原创 AXI-A7.4.3 Atomic transactions attribute-Example
上述内容展示了在64位数据通道的AXI总线上,Atomic Compare(原子比较并交换)事务中比较值(C)和交换值(S)在数据总线上的位置分布。这些例子根据传输地址(AWADDR)、传输大小(AWSIZE)、传输长度(AWLEN)和突发类型(AWBURST)的不同组合,展示了值的位置如何变化。以下是具体举例和分类原因的说明,以及规则诞生背景。地址0x00,INCR突发:比较值位于字节线0,交换值位于字节线1(标记为“- - - - - S C”,从右向左对应字节线0至7,字节线0为C,字节线1为S)。
2025-12-15 21:48:35
7
原创 AXI-A7.4.3 Atomic transactions attributes
AtomicCompare(CAS)规则的复杂性反映了它在现代计算系统中的核心重要性。实用性驱动:规则服务于实际应用需求,不是理论设计灵活性平衡:在性能和功能之间找到平衡点演进兼容:继承历史,面向未来硬件友好:考虑实现复杂度和性能影响设计高效系统:优化CAS性能避免微妙错误:正确处理边界条件支持现代软件:满足无锁编程需求面向未来扩展:预留演进空间。
2025-12-15 21:37:45
7
原创 AXI-A7.4.2 Atomic transaction operations
性能优势消除锁的开销,实现无锁数据结构减少总线流量(相比软件实现的读-修改-写)硬件加速,单指令完成复杂操作正确性保障硬件保证原子性,避免竞争条件简化软件编程模型提供内存顺序保证(与内存屏障配合)系统集成标准化接口,促进IP重用支持异构计算(CPU/GPU/DSP共享原子操作)便于验证和形式化验证。
2025-12-15 21:00:32
4
原创 AXI-A6.3.4 Manager ordering guarantees(2)
Observation在AXI中的本质定义在AXI协议中指的是一个事务的效果被系统中的其他组件可见的时刻。这是一个关于可见性和时序的概念,描述了事务在系统中的传播和一致性状态。关键定义观察点:一个事务被系统中某个组件"看到"的时间点观察顺序:不同事务被观察到的相对顺序全局可观察性:事务对所有相关组件都可见的状态Observation的设计原则可见性优先:确保事务效果在需要时可见顺序一致性:保持合理的观察顺序性能平衡:在正确性和性能之间找到平衡点可预测性:观察行为应该是可预测的。
2025-12-15 10:15:09
29
原创 AXI-A7.4.1 Overview
四种原子事务(AtomicStore、AtomicLoad、AtomicSwap、AtomicCompare)构成了现代SoC原子操作的基础。它们的分类反映了从简单到复杂、从单向到双向、从无条件到有条件的设计哲学。系统级影响:原子事务如何与缓存一致性、内存控制器、互连网络交互性能权衡:在不同实现方案之间的选择软件协同:如何为编译器、操作系统提供最优支持可扩展性:如何设计支持未来扩展的原子操作单元安全考虑:在安全关键系统中的原子操作保护。
2025-12-11 23:05:03
10
原创 AXI-A7.4.1 AtomicCompare
语义完整性:比较-条件写入-返回原始值三位一体,提供完整的原子操作语义效率优化:入站数据减半,减少总线流量,提高系统整体效率可扩展性:2的幂次方尺寸支持从嵌入式到服务器的各种应用硬件友好:固定大小集合简化了硬件实现和验证。
2025-12-11 23:03:53
11
原创 AXI-A7.4.1 AtomicSwap
AtomicSwap作为原子事务的四种基本形式之一,代表了最简单也最基础的原子操作。它的设计和实现反映了计算机体系结构中对高效同步原语的持续需求。性能优化:如何减少延迟、提高吞吐量、支持高并发架构集成:如何与缓存一致性协议、内存层次、互连网络协同资源管理:如何在硬件复杂度、面积、功耗之间取得平衡正确性保证:如何确保在各种边界条件下的原子性和正确性可扩展性:如何支持未来更大的数据尺寸和更复杂的操作AtomicSwap的成功不仅在于其技术简单性,更在于它解决了并发编程中的根本问题。
2025-12-11 22:51:27
29
原创 AXI-A7.4.1 AtomicLoad
AtomicLoad作为原子事务的关键形式,解决了"获取并更新"这一常见并发编程模式的需求。其技术特点(返回原始值、原地计算、原子性保证)使其在多核和分布式系统中具有重要价值。架构集成:如何与缓存一致性协议、内存层次、互连网络协同工作性能优化:如何减少延迟、提高吞吐量、支持高并发资源管理:如何平衡硬件复杂度与功能完整性错误恢复:如何确保在错误条件下的系统可靠性可扩展性:如何支持未来更复杂的原子操作需求。
2025-12-11 22:44:27
28
原创 AXI-A7.4.1 AtomicStore
AtomicStore作为原子事务的四种基本形式之一,体现了"计算靠近数据"的设计哲学。它的单向无返回值特性使其在只需要更新内存的场景中具有最佳性能。硬件架构:如何与缓存一致性协议、内存控制器、互连网络集成性能优化:如何减少延迟、提高吞吐量、支持并发可配置性:如何支持不同的应用需求和系统规模错误处理:如何保证操作的原子性和系统的鲁棒性可验证性:如何确保复杂并发场景下的正确性AtomicStore的成功不仅在于其技术优势,更在于它满足了多核时代对高效同步原语的迫切需求。
2025-12-11 22:42:46
25
原创 AXI-A7.4 Atomic transactions
原子事务代表了内存访问模型的重大演进,从"移动数据到计算"转向"移动计算到数据"。这种转变由多核处理器、NUMA系统、内存分解等技术趋势驱动,旨在减少数据移动、降低延迟、提高并发性。对于SoC设计工程师,原子事务不仅是协议支持问题,更是系统架构设计问题。位置选择:在哪里执行原子操作(缓存、内存控制器、专用单元)?一致性处理:如何与缓存一致性协议集成?性能权衡:原子操作执行时间 vs 数据传输时间?正确性保证:如何确保原子性、一致性?可扩展性:如何支持未来更复杂的原子操作?
2025-12-11 22:21:53
7
原创 AXI-A7.3.4 Exclusive access from the perspective of the Subordinate
解释:在独占读和独占写之间,其他总线主设备(其他CPU核、DMA控制器、GPU等)修改了监控的内存位置。这是独占访问失败的最常见情况,表示真正的数据竞争发生了。SoC设计示例:systemverilog// 场景:两个CPU核竞争同一内存位置module conflict_detection_example ( input wire clk, input wire resetn);// CPU0执行独占序列// 时钟周期0:CPU0发出独占读 LDREX [0x1000], AR
2025-12-11 22:11:06
8
原创 AXI-A7.3.4 Exclusive access from the perspective of the Subordinate
责任分离:管理者发起请求,从属设备验证和执行,互连负责传输。最小保证:规范定义最小要求(必须监控),但允许实现优化(可以监控更大范围)。失败安全:宁可保守失败(返回非EXOKAY),也不冒险成功(数据损坏)。渐进兼容:新特性(如虚拟化支持)作为扩展添加,不破坏原有机制。对于SoC设计工程师,这些规则不仅是实现要求,更是理解现代多核系统同步机制本质的窗口。平衡硬件成本与性能:监控器设计直接影响系统同步性能考虑可扩展性:未来可能支持更多核心、更多主设备注重验证。
2025-12-11 22:04:07
8
原创 AXI-A7.3.3 Exclusive access restrictions(2)
表A7.5中的信号是匹配的关键依据——如果读和写的这些信号有任何不同,监控器可能无法正确识别它们属于同一序列,导致STREX失败(即使内存位置未被其他代理修改)。:在具有复杂缓存一致性协议(如MESI、MOESI)的多核SoC中,一致性事务和独占访问事务需要不同的处理路径。如果读和写的AxCACHE属性不同,它们可能采取不同的路径或经历不同的延迟,导致写事务到达监控器时,读事务的状态已过期。:在复杂SoC中,应提供性能计数器和调试接口,帮助软件开发者理解独占访问失败的原因(是真正的冲突还是信号不匹配)。
2025-12-11 21:49:42
9
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅