问题标签 [cpu-architecture]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
multithreading - CPU 寄存器和缓存一致性
当涉及到 MESI 等缓存一致性协议时,CPU 寄存器和 CPU 缓存之间有什么关系?如果某个值存储在 CPU 的缓存中,并且还存储在寄存器中,那么如果缓存行被标记为“脏”会发生什么?据我了解,即使缓存已更新(由于 MESI),也无法保证寄存器会更新其值。
验证此代码:
(假设编译器没有优化循环外“完成”的负载)据
我所知,第二个线程看不到“完成”的更新,因为它的值保存在寄存器中(CPU 2 的缓存是但是更新)。
放置内存屏障会强制“刷新”所有寄存器吗?寄存器与缓存的关系是什么?那么寄存器和内存屏障呢?
c# - 检测cpu架构的正确方法?
我正在尝试检测用于安装 x86 msi 或 x64 msi 文件的正确 cpu 架构。
如果我是对的,对于 msi,我需要 os cpu 架构
我不完全确定我的方式是否正确,因为我无法测试它。你怎么看?
cpu - 如何区分指令与数据?
在阅读ARM核心文档时,我有这个疑问。CPU如何区分读取数据和数据总线,是将其作为指令执行还是作为可以操作的数据执行?
请参阅该文件的摘录 -
“数据通过数据总线进入处理器内核。数据可能是要执行的指令,也可能是数据项。”
提前感谢您启发我!/多发性硬化症
c++ - 为什么我的 C++ 应用程序比 Core i7 上的 C 应用程序(使用相同的库)更快
我有一个用 C 编写的库,我有 2 个用 C++ 和 C 编写的应用程序。这个库是一个通信库,所以其中一个 API 调用如下所示:
在 C 应用程序中,代码执行如下操作:
C++ 应用程序在哪里执行此操作:
在英特尔酷睿 i7 上,C++ 代码每秒产生的消息几乎正好多出 50%。而在英特尔酷睿 2 Duo 上,它每秒产生的消息数量几乎完全相同。(核心 i7 有 4 个核心,每个核心有 2 个处理线程)
我很好奇硬件执行了什么样的魔法来实现这一目标。我有一些理论,但我想我会得到一个真正的答案:)
编辑:来自评论的附加信息
编译器是visual C++,所以这是一个windows box(两者都是)
通信库的实现创建了一个新线程来发送消息。source_create 是创建此线程的原因。
multithreading - 您是否期望未来的 CPU 代不会缓存一致?
我正在设计一个程序,我发现假设隐式缓存一致性会使设计变得容易得多。例如,我的单个编写器(始终是同一个线程)多个读取器(始终是其他线程)场景没有使用任何互斥锁。
对于当前的 Intel CPU 来说,这不是问题。但我希望这个程序至少在未来十年(软件时间很短)产生收入,所以我想知道你是否认为这可能是未来 cpu 架构的问题。
embedded - ARM vs X86:如何选择?
我最近看到了 32 位 ARM 处理器。我想知道为什么我们不能使用它来构建台式计算机。在那种情况下,它与 X86 有何不同?ARM 架构消耗更少的功率吗?这是在嵌入式系统中使用它们的原因吗?
- 为什么我们有两种(ARM 和 X86)处理器架构?
- 为什么我们通常将 ARM 架构用于嵌入式和 x86 用于工作站?
- 选择一个而不是另一个的一般标准是什么。
java - java.lang.UnsatisfiedLinkError, mach-o 但 Mac10.6.2 上的架构错误
我试图在我的本地机器上运行一个项目。
我试图在我的 Mac 10.6.2 上加载从该项目的运行实例中获得的这个 jnilib 文件,
然后我抛出了这个异常:
我已经用 file 命令检查了 jnilib:
我猜这是因为 jnilib 文件是用 32 位编译的,而 Mac10.6 附带的 Java 是 64 位的。所以我去Java Preference并设置Java首先使用32位。但它没有用。
如上所述,这个 jnilib 文件是从我的 Mac 上正在运行的项目实例中复制的,所以它应该可以工作。我不明白为什么它在已安装的应用程序中工作,但在我的 Eclipse 中却没有。
cpu-architecture - 注册机与堆栈机有何不同?
注册机与堆栈机有何不同?
performance - 现代 CPU 的每刻缓存带宽
现代 CPU 的缓存访问速度是多少?Intel P4,Core2,Corei7,AMD每个处理器时钟周期可以从内存读取或写入多少字节?
请用理论(ld/sd 单元的宽度及其以 uOPs/tick 为单位的吞吐量)和实际数字(甚至 memcpy 速度测试或 STREAM 基准测试)(如果有)来回答。
PS这是一个问题,与汇编程序中加载/存储指令的最大速率有关。可以有理论上的加载速率(所有指令每个 Tick 都是最宽的加载),但处理器只能给出其中的一部分,即实际的加载限制。