介绍了发行一致性(K. Gharachorloo等人的“可伸缩共享存储器多处理器中的存储器一致性和事件顺序”)的论文提到了一类称为“非同步”(nsync)的存储器操作。在竞争放松算法中用于竞争而非同步访问其他线程的数据。
我误以为RISC-V中的LR和SC指令清除了AQ和RL位,是nsync类指令吗?我问是因为RISC-V手册(版本20190608-Base-Ratified,第50页)指出,清除AQ和RL位后,LR和SC为:“ ...适合使用LR / SC序列实现并行归约运算。”
答案 0 :(得分:1)
我不这么认为。前面的句子(在我的草稿副本中)指出:
如果LR和SC均未设置,则LR / SC序列可以为 被观察到发生在周围的内存操作之前或之后 相同的RISC-V哈特这可能是合适的....
我认为他们正在得到的是lr / sc将仅与链接地址(确定,高速缓存行)同步,因此lr / sc之间的其他内存位置可以比此地址更宽松。换句话说,除非有其他类似篱笆的操作待处理,否则lr / sc不必等待存储缓冲区中的前一项才可以进入RAM。
因此,实现互斥锁是不合适的(因为大多数多线程程序将互斥锁视为内存的排序点),但非常适合计数器或堆栈索引。