- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在开发我的无锁数据结构库的下一个版本,使用 ARM 上的 LL/SC。
对于我的 LL/SC 用例,我需要将其与 LDREX 和 STREX 之间的单个 STR 一起使用。 (而不是用它来模拟 CAS。)
现在,我已经编写了代码并且可以正常工作。然而,令我担心的是它可能并不总是有效。我在 PowerPC 上读到过,如果您访问与 LL/SC 目标相同的缓存行,就会破坏 LL/SC。
所以我在想,如果我的 STR 目标与我的 LL/SC 目标位于同一缓存行,那么,我就死定了。
现在,LL/SC 目标和 STR 目标始终位于不同的 malloc() 中,因此它们直接位于同一缓存行中的机会可能很小(我可以通过填充 LL/SC 目标来保证这一点,以便它从缓存行边界开始并填充该缓存行)。
但是,如果 STR 目标位于内存中正确(错误!)的位置,则可能存在错误共享。
查看 LDREX/STREX 文档,这描述了“物理地址”方面的独占访问。这意味着寄存器宽度粒度,而不是缓存行宽度粒度。
这就是我的问题 - LDREX/STREX 对使用寄存器宽度粒度或缓存行宽度粒度的内存访问是否敏感?
最佳答案
ARM 使用独占监视器通过加载链接/条件存储来实现对内存的独占访问。 [1] 包含所有详细信息,我想说的重要的是:
Exclusives Reservation Granule
When an exclusive monitor tags an address, the minimum region that can be tagged for exclusive access is called the Exclusives Reservation Granule (ERG). The ERG is implementation defined, in the range 8-2048 bytes, in multiples of two bytes. Portable code must not assume anything about ERG size.
所以在我看来你有点不走运。无论如何,大多数实际实现可能会保留一个较小的值,但据我所知,基本 ARM 架构并不能保证这一点,但也许有更多经验的人会发现我错了。 :)尽管如此,LL/SC 的所有实现都是某种形式的弱 LL/SC,因此您几乎永远无法完全确定 LL 和 SC 之间的存储不会总是杀死 SC,或者大多数情况下时间,或者也许永远不会......它只是如此依赖于架构和实现,我个人坚持使用 LL/SC 在紧密循环中实现 CAS,并像往常一样使用它并完成它。
[1] http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dht0008a/CJAGCFAF.html
关于assembly - ARM LL/SC 通过寄存器宽度或缓存行宽度进行独占访问?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10812442/
我是 Spark 的新手。有人可以清除我的疑问吗: 让我们假设下面是我的代码: a = sc.textFile(filename) b = a.filter(lambda x: len(x)>0 an
问题 每行输入都将包含一个字符串,后跟一个整数。每个字符串最多包含 10 个字母字符,每个整数都在 0 到 999 的范围内 输出代码 在输出的每一行中应该有两列:第一列包含字符串,并使用 15 个字
我希望从不同供应商、不同用途、不同 APDU 的一堆智能卡中读取一些基本信息。例如:国家身份识别智能卡、EMV(支付)、手机SIM、javacard等... 我编写了一个 Java 应用程序。让我将
我有一组我想读入 RDD 的日志文件。 这些日志文件都是压缩的 gzip 文件,文件名是 日期盖章。 我一直在用sc.wholeTextFiles()读入文件,似乎我遇到了 Java 堆内存问题。为了
我使用以下命令创建服务:sc create MyService binpath= "C:\Path\MyDriver.sys" 返回的消息是:[SC] CreateService SUCCESS,但是
我使用 Spring mvc,我的问题是关于 sendError方法来自 HttpServletResponse . 有人可以告诉我哪个最好: @RequestMapping(method = Req
class superClass {} class subClass extends superClass{} public class test { public static void m
我在ConcurrentHashMap中阅读了addCount函数的源代码, 但我不知道什么时候可以实现( sc == rs + 1 || sc == rs + MAX_RESIZERS)条件。 为什
我正在尝试使用 Sproutcore 呈现 UI,其中我有一个列表列表。有一个垂直的数据列表,其中每个关联的项目都有自己的项目列表。我已经根据我对 Sproutcore 的了解设置了我认为合适的模型。
当我通过 http://software.intel.com/en-us/android 安装 Intelhaxm 时并且我成功安装了,但是当我尝试使用管理员在命令提示符下验证 Intelhaxm 是
我试图在我的 MVC - Sitecore - 7.1 中的 v4.0.30319 项目中使用 Glass Mapper。 以下是我安装的 Glass Mapper 版本 Glass Mapper 版
在我通过取消注释文件中的以下行来更改 svnserve.conf 之后,我正在尝试使用 cmd 创建一个 svnserver, anon-access = read auth-access = wri
有没有办法让 java 使用 javax.smartcardio.TerminalFactory 识别我的 NFC 读卡器? 我正在使用 Ubuntu 13.04 并使用 pcsc_scan 我能够读
我正在使用 sc.exe 命令来安装 C# windows 服务。 C:Windows\System32> sc.exe Create "TestService1" binPath= "C:\Prog
sc-bytes 代表什么?每一个关于 sc-bytes 的讨论和博客都声明它代表从服务器到客户端的字节。 想知道sc-bytes是否代表总响应字节数, 例如,。当我们访问任何 URL 时,它是否包含
topLeftView: SC.ScrollView.design({ backgroundColor: "#DADFE6", childViews: 'labLabel labMem
我想将一些已解析的 JSON 数据从我的 Controller 推送到 SC.SourceListView (Sproutcore Showcase) .我使用 SC.TreeController并将
您对此有什么解决方案吗? 我想得到 SC.SceneView从下到上过渡,而不是从左到右或从右到左。 Doc在这里并没有说太多,但是由于原始转换必须在某个地方,也许我可以为此创建其方法的原型(prot
我正在基于SproutCore 1.8的项目中。我的应用程序必须在复杂的表格 View 中显示大量数据。实际上,表格 View 将成为应用程序界面的核心元素之一。另外,我可能需要大纲/树 View ,
我正在尝试在SproutCore应用程序中按部门显示联系人列表,并尝试将SC.ListView嵌套在另一个SC.ListView中无济于事。 我可以use SC.GridView to assist,
我是一名优秀的程序员,十分优秀!