问题标签 [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.

0 投票
3 回答
299 浏览

performance - 周期/字节计算

在加密社区中,通常以周期/字节来衡量算法性能。我的问题是,CPU 架构中的哪些参数会影响这个数字?当然除了时钟速度:)

0 投票
5 回答
35451 浏览

python - Python:获取 Windows 操作系统版本和架构

首先,我不认为这个问题与
Detect 64bit OS (windows) in Python
重复, 因为恕我直言,它还没有得到彻底的回答。

唯一接近的答案是:

使用sys.getwindowsversion()或存在 PROGRAMFILES(X86) ( if 'PROGRAMFILES(X86)' in os.environ)

但:

  • windows环境变量PROGRAMFILES(X86)可靠吗?我担心任何人都可以创建它,即使它不存在于系统中。
  • 如何使用sys.getwindowsversion()以获得架构?

关于sys.getwindowsversion()
链接http://docs.python.org/library/sys.html#sys.getwindowsversion
将我们引向http://msdn.microsoft.com/en-us/library/ms724451%28VS.85%29。 aspx
但我没有看到与架构(32 位/64 位)相关的任何内容。
此外,返回的元组中的平台元素似乎与架构无关。

最后一点:我正在寻找一种同时使用 python 2.5 和从 Windows XP 开始的 Windows 版本的解决方案

谢谢!

编辑:
相关信息可在此处获得
http://msdn.microsoft.com/en-us/library/ms724340%28v=VS.85%29.aspx
但我怎样才能用 python 得到这个?

Edit2:在 64 位 Windows 上,使用 32 位 python 解释器:

  • os.environ["PROCESSOR_ARCHITECTURE"] 返回
    • 'x86'
  • platform.architecture() 返回
    • ('32 位','WindowsPE')
0 投票
5 回答
27817 浏览

computer-science - 图灵机与冯诺依曼机

背景

冯-诺依曼架构描述了存储程序计算机,其中指令和数据存储在内存中,机器通过改变其内部状态来工作,即指令对某些数据进行操作并修改数据。所以本质上,系统中维护着状态。

图灵机架构通过操纵磁带上的符号来工作。即存在无限数量的插槽的磁带,并且在任何一个时间点,图灵机都在特定的插槽中。根据在该插槽读取的符号,机器可以更改符号并移动到不同的插槽。所有这些都是确定性的。


问题

  1. 这两个模型之间有什么关系吗?冯诺依曼模型是基于图灵模型还是受其启发?

  2. 我们可以说图灵模型是冯纽曼模型的超集吗?

  3. 函数式编程适合图灵模型吗?如果是这样,怎么做?我认为函数式编程并不适合冯诺依曼模型。

0 投票
8 回答
101013 浏览

c - malloc 可以分配的最大内存

我试图弄清楚我可以在我的机器上最大程度地分配多少内存(1 Gb RAM 160 Gb HD Windows 平台)。

我读到 malloc 可以分配的最大内存仅限于物理内存(在堆上)。

此外,当某个程序的内存消耗超过一定水平时,计算机将停止工作,因为其他应用程序无法获得所需的足够内存。

所以为了确认,我用 C 写了一个小程序:

我希望有一段时间内存分配会失败并且循环会中断,但是我的计算机挂起,因为它是一个无限循环。

我等了大约一个小时,最后我不得不强行关闭我的电脑。

一些问题:

  • malloc 是否也从 HD 分配内存?
  • 上述行为的原因是什么?
  • 为什么循环没有在任何时候中断?
  • 为什么没有分配失败?
0 投票
9 回答
6299 浏览

x86 - 为什么只有四个寄存器?

为什么最常见的 CPU(x86)中只有四个寄存器?如果添加更多寄存器,速度不会有很大的提高吗?什么时候会增加更多的寄存器?

0 投票
1 回答
349 浏览

memory - 高速缓存内存性能

我只是有一个关于缓存的一般问题。程序如何在基于缓存的系统上表现不佳?,因为高速缓存存储来自请求的主存储器的地址,以及范围与从主存储器复制的地址相同的地址。

0 投票
5 回答
1884 浏览

performance - CUDA 可以帮助解决什么样的数据处理问题?

我处理过许多数据匹配问题,而且它们通常归结为快速并行运行许多 CPU 密集型算法的实现,例如汉明/编辑距离。这对 CUDA 有用吗?

你用它解决了什么样的数据处理问题?标准四核英特尔台式机真的有提升吗?

克里斯

0 投票
2 回答
295 浏览

multithreading - 缓存一致性和生成线程

背景

我一直在阅读各种书籍和文章,以了解并发执行上下文中的处理器缓存、缓存一致性和内存屏障。但到目前为止,我一直无法确定我的常见编码实践在最严格的意义上是否安全。

假设

  1. 以下伪代码在双处理器机器上执行:

    /li>
  2. main() 在处理器 1 (P1) 上执行,而 myThread() 在 P2 上执行。

  3. 最初,sharedVar 存在于 P1 和 P2 的缓存中,初始值为 0(由于上面未显示的一些“预热代码”。)

问题

严格来说——最好不假设任何特定类型的 CPU——myThread() 是否保证打印 1?

根据我对处理器缓存的新认识,在 print() 语句时,P2 可能没有收到由 P1 在 main() 中的分配导致的 sharedVar 无效请求,这似乎完全有可能。因此,myThread() 似乎有可能打印 0。

参考

这些是我一直在阅读的相关文章和书籍:

  1. 共享内存一致性模型:教程
  2. 内存屏障:软件黑客的硬件视图
  3. Linux 内核内存屏障
  4. 计算机体系结构:一种定量方法
0 投票
5 回答
26142 浏览

multithreading - SMP 内核、进程和线程如何精确地协同工作?

在单核 CPU 上,每个进程都在操作系统中运行,并且 CPU 从一个进程跳到另一个进程以充分利用自身。一个进程可以有许多线程,在这种情况下,CPU 在相应进程上运行时会通过这些线程运行。

现在,在多核 CPU 上:

  • 核心是在每个进程中一起运行,还是核心可以在一个特定时间点在不同进程中单独运行?例如,您有程序 A 运行两个线程。双核 CPU 可以运行这个程序的两个线程吗?如果我们使用类似OpenMP的东西,我认为答案应该是肯定的。但是,当内核在这个 OpenMP 嵌入式进程中运行时,其中一个内核可以简单地切换到另一个进程吗?

  • 对于单核创建的程序,100%运行时,为什么每个核的CPU使用率是分布的?(例如,80% 和 20% 的双核 CPU。在这种情况下,所有内核的利用率总和为 100%。)内核是否通过运行每个线程、每个进程以某种方式相互帮助? ?

0 投票
7 回答
8515 浏览

c - CPU 和数据对齐

如果您觉得这已被多次回答,请原谅我,但我需要以下问题的答案!

  1. 为什么必须对齐数据(在 2 字节/4 字节/8 字节边界上)?我的疑问是,当 CPU 有地址线 Ax Ax-1 Ax-2 ... A2 A1 A0 时,很有可能按顺序寻址内存位置。那么为什么需要在特定边界对齐数据呢?

  2. 在编译代码和生成可执行文件时如何找到对齐要求?

  3. 例如,如果数据对齐是 4 字节边界,这是否意味着每个连续字节都位于模 4 偏移处?我的疑问是数据是否是 4 字节对齐的,这是否意味着如果一个字节位于 1004,那么下一个字节位于 1008(或 1005)?