问题标签 [nehalem]

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.

0 投票
3 回答
847 浏览

windows - Nehalem Xeon 在 32 位操作系统、XP 与 2003 上的性能

我必须在 WinXP 或 Win2003 上运行 32 位代码。Nehalem Xeons(5500 系列)应该是最快的,但我不确定内存安排会发生什么。我不确定两个部分:

  1. 为了获得最大速度的内存设置,我需要安装至少 6gb 的 RAM(让每个 CPU 3 块都可以使用)。内存交错的方式是否可以让 32 位操作系统(WinXP 或 2003)从中获得最大性能?(我很好浪费了几 GB 的 RAM)。
  2. Win2003 的 NUMA 支持是否适用于 Xeon 5500s?(如果是这样,我想我应该使用 Win2003 而不是 WinXP?)
0 投票
1 回答
922 浏览

memory - 在 Windows XP 中将内存地址映射到物理模块

我计划在具有双处理器、基于 Intel 的 Nehalem 微架构和三通道 RAM 的工作站上运行 32 位 Windows XP。即使 XP 被限制为 4 GB 的 RAM,我的理解是它可以在安装超过 4 GB 的情况下运行,但只会暴露 4 GB(或略少)。

我的问题是:假设 6 GB 的 RAM 安装在六个 1 GB 的模块中,Windows 实际将哪个物理 4 GB 映射到它的地址空间?

尤其:

  • 它会使用所有六个 1 GB 模块,利用所有内存通道吗?(我的猜测是肯定的,并且到组内各个模块的映射发生在硬件中。)

  • 它会将 2 GB 的地址空间映射到两个 NUMA 节点中的每一个(因为每个处理器都有自己的内存接口),还是一个处理器可以快速访问 3 GB RAM,而另一个处理器只有 1 GB?

谢谢!

0 投票
6 回答
3986 浏览

java - 多线程访问内存

我正在编写一个在 Nehalem 处理器上运行的多线程 Java 应用程序。但是我有一个问题,从 4 个线程开始,我几乎看不到我的应用程序中的加速。

我做了一些简单的测试。我创建了一个线程,它只分配一个大数组并访问数组中的随机条目。因此,当我运行线程数时,运行时间不应该改变(假设我没有超过可用 CPU 内核的数量)。但我观察到的是,运行 1 或 2 个线程几乎需要相同的时间,但运行 4 或 8 个线程要慢得多。因此,在尝试解决我的应用程序中的算法和同步问题之前,我想找出我可以实现的最大可能并行化。

我使用-XX:+UseNUMA了 JVM 选项,所以数组应该分配在相应线程附近的内存中。

PS如果线程进行简单的数学计算,4甚至8个线程都没有时间下降,所以我得出结论,当线程访问内存时我有一些问题。

任何帮助或想法表示赞赏,谢谢。


编辑

谢谢大家的回复。我发现我对自己的解释不够好。

在尝试消除我的应用程序中的同步问题之前,我做了一个简单的测试来检查可以实现的最佳并行化。代码如下:

因此,正如您所看到的,在这个 minitest 中根本没有同步,并且数组的分配也在线程内部,因此它应该放在可以快速访问的内存块中。此代码中也没有内存争用。仍然对于 4 个线程,运行时间下降了 30%,8 个线程运行速度慢了两倍。正如您从代码中看到的那样,我只是等到所有线程完成他们的工作,并且由于他们的工作是独立的,线程数不应该影响执行的总时间。

在机器上安装了 2 个四核超线程 Nehalem 处理器(总共 16 个 CPU),因此每个有 8 个线程可以独占 CPU。

当我尝试使用较小的数组(20K 条目)运行此测试时,4 个线程的执行时间下降了 7%,8 个线程的执行时间下降了 14%,这很令人满意。但是当我尝试在大型数组(40M 条目)上操作随机访问时,运行时间会急剧增加,所以我认为存在大块内存(因为它们不适合缓存内存?)在非访问中访问的问题- 高效的方式。

有什么想法可以解决这个问题吗?

希望这能以更好的方式澄清问题,再次感谢。

0 投票
1 回答
562 浏览

memory - Nehalem 内存架构地址映射

给定具有 12GB RAM (6x2GB) 的 2 处理器 Nehalem Xeon 服务器,内存地址如何映射到物理内存模块?

我想在具有 3 个相同内存模块的单个处理器 Nehalem 上,地址空间将在模块上进行条带化,以提供更好的内存带宽。但是有什么样的条纹尺寸?第二个处理器(+内存)如何改变这种情况?

0 投票
1 回答
1190 浏览

caching - Nehalem l2 缓存中的银行数量

当我偶然发现仙人掌界面“银行数量”中的一个术语时,我正在研究不同缓存配置的访问时间。

存储体数量是高速缓存中交错模块的数量,它增加了高速缓存的带宽和并行访问的数量。

在这种情况下,我想找出 Nehalem 架构缓存中的银行数量。我用谷歌搜索了这个东西,但没有找到任何有用的东西。

我的理由是:

  1. L1 数据和指令高速缓存必须有单个 bank。访问粒度在这里是一个词。
  2. L2 缓存支持 L1 数据和指令缓存的未命中。因此它必须支持 2 个银行。
  3. L3 高速缓存通常在系统中的所有内核之间共享,因此它必须具有大量 (32) 个存储体。

我的直觉正确吗??另外,银行的数量是否会改变结构化数据/程序的方式(理想情况下不应该但仍然......)?

0 投票
1 回答
1211 浏览

multicore - 最小化 NUMA 架构中的内核间通信

任何人都可以强调在 NUMA 多核架构中减少内核间通信的方法。案例研究英特尔 NEHALEM 微架构。

0 投票
2 回答
1621 浏览

x86 - x86 上跨页面边界的软件预取

我的理解是硬件预取永远不会跨越页面边界。我想知道软件预取是否具有相同的限制,即我可以使用软件预取来避免未来的 TLB 未命中。通过四处搜索,这似乎是可能的,但我在文档中找不到任何确定的东西,所以参考会很好。

我对 Nehalem、Sandy Bridge 和 Westmere 特别感兴趣。

0 投票
2 回答
615 浏览

c - x86 上的简单 PAPI 分析中出现意外大量 TLB 未命中

我正在使用 PAPI 高级 API 来检查一个简单程序中的 TLB 未命中,该程序循环遍历一个数组,但看到的数字比预期的要大。

在其他简单的测试用例中,结果似乎相当合理,这让我认为结果是真实的,额外的未命中是由于硬件预取或类似原因造成的。

谁能解释这些数字或指出我在使用 PAPI 时的一些错误?

我希望打印的数字在 32 的区域内,或者至少是某个倍数,但始终得到 93 或更高的结果(并非始终高于 96,即不是每次迭代都只有 3 次未命中)。我正在运行固定到一个核心,上面没有其他任何东西(除了定时器中断)。

我在 Nehalem 上并且不使用大页面,因此 DTLB 中有 64 个条目(L2 中有 512 个)。

0 投票
1 回答
16595 浏览

cpu - 每个周期的浮点运算 - 英特尔

我一直在寻找很长一段时间,似乎无法找到一个官方/结论性的数字来引用英特尔至强四核可以完成的单精度浮点运算/时钟周期的数量。我有一个 Intel Xeon 四核 E5530 CPU。

我希望用它来计算我的 CPU 可以达到的最大理论 FLOP/s。

MAX FLOPS = (# 核心数) * (时钟频率 (周期/秒)) * (# FLOPS / 周期)

任何指向我正确方向的东西都会很有用。我发现 Sandy-bridge 和 haswell SSE2/AVX/AVX2 的每个周期都有这个 FLOPS

英特尔酷睿 2 和 Nehalem:

4 DP FLOPs/cycle:2-wide SSE2 加法 + 2-wide SSE2 乘法

8 SP FLOPs/cycle:4-wide SSE 加法 + 4-wide SSE 乘法

但我不确定这些数字是在哪里找到的。他们是否假设一个融合乘加(FMAD)操作?

编辑:使用它,在 DP 中,我计算英特尔引用的正确 DP 算术吞吐量为 38.4 GFLOP/s(在此处引用)。对于 SP,我得到了两倍,76.8 GFLOP/s。我很确定 4 DP FLOP/cycle 和 8 SP FLOP/cycle 是正确的,我只想确认他们如何获得 4 和 8 的 FLOPs/cycle 值。

0 投票
1 回答
1651 浏览

x86 - 英特尔 Nehalem 微架构可以实现的最大 IPC 是多少?

英特尔 Nehalem 架构可实现的每周期最大指令数是否有估计?此外,影响每个周期最大指令的瓶颈是什么?