2026/6/9 12:06:12
网站建设
项目流程
云主机网站的空间在哪,php网站开发技术是什么,开封建网站的公司,上海外贸公司排名榜在互联总线里#xff0c;“原子操作”与 “AxLOCK” #xff0c;exclusive不是并列概念#xff0c;而是 “同一机制的不同实现方式”。1.atmotic原子操作原子操作指的是不可被中断的、最小的操作单元 —— 它要么完整执行完毕#xff0c;要么完全不执行#xff0c;不存在 …在互联总线里“原子操作”与 “AxLOCK” exclusive不是并列概念而是“同一机制的不同实现方式”。1.atmotic原子操作原子操作指的是不可被中断的、最小的操作单元—— 它要么完整执行完毕要么完全不执行不存在 “执行了一半” 的中间状态。对于总线来说基本的原子操作有原子读原子写原子读改写。原子读主要就是多transfer读中间不能被其他写打断或者更新。-------比如读地址0~3同时有写2~3发生导致读0,1是旧值2~3是新值。这就导致一个读被割裂了原子写主要是多transfer写过程中不要被其他读写操作打断。-------如果在原子写过程中出现有相同目标地址的读只能全部读没写之前的状态或等全部写完之后读。具体取决于原子写的内存模型和硬件 / 语言的同步语义-------如果在原子写过程中出现有相同目标地址的写这个写只能在原子写之前或之后。不会出现原子写0~3 abcd其他写0~3 efgh最终结果0~3为abghefcd这种交叉的情况-------最终结果只能是abcd或者efgh。多线程环境下两个原子写的执行顺序是不确定的由 CPU 调度器决定如果没有额外的同步机制比如锁、内存屏障无法预测最终结果。-------也可以对两个原子写中先被仲裁的返回resp_ok没被仲裁的返回resp_err原子读改写先读数据在修改全部或者部分数据在写入原地址。在这个写完成之前不能有其他的操作修改内存。改数据可以在存储的远端也可以在存储的近端。如果是近端读出来的数据就无需传到远端节省带宽减少延迟但通常需要请求的时候把部分操作数传到近端-------在axi5增加了原子操作的专用信号AWATOP直接定义ADD/SWAP/CLR/SET/EOR等操作。在此之前是没有专门的原子操作信号但是可以利用axuser来传递这些信息。2.axlock和exclusiveaxi3及之前版本有2bit axlock00normal01exclusive10lockedaxi4及之后版本放弃了locked只需1bit axlock0normal1exclusiveLocked锁住目标地址别的请求完全不能访问该 目标地址直到解锁可以是单独的locked read或write如果不能返回失败如获得lock需要最后一笔trans以unlock解锁低阻塞访问该地址AXI3 遗留现代设计已废弃Exclusive不锁总线仅对目标地址设 monitor后续写用BRESPEXOKAY/OKAY告知“是否被别的主机踩过”包含先Exclusive read后Exclusive write两部分其中一步失败就认为Exclusive失败高仅冲突时重试AXI4/5 推荐实现 spinlock、CAS、LL/SC显然Locked可以实现atmoic的读/写/读改写Exclusive可以实现atmotic的读改写。