问题标签 [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 投票
5 回答
31087 浏览

multithreading - 什么是 CPU 线程,它与代码中的逻辑线程有什么关系?

我在文献中看到了一些较新的 CPU,例如Intel Xeon “Nehalem-EX”,它们具有 8 个内核和 16 个线程。他们在这里谈论什么?我在参考文献中也看到了这一点,所以 SPARCS 也肯定这不是由代码产生的那种逻辑线程吗?这种超线程是否被重新命名?

0 投票
7 回答
313 浏览

programming-languages - 某些语言是否有内在的处理器架构设计

我很想知道某些语言是否在设计上更适合某些处理器架构。当我说架构时,我指的不是 ARM/PPC/MIPS,而是更多基于堆栈、累加器或寄存器的架构。

例如,我可以想到 Forth,它是一种堆栈架构。还有其他人吗?

0 投票
8 回答
349 浏览

assembly - 本机可执行文件的哪一部分(特别是)使其不可移植?

起初这听起来像是一个愚蠢的问题,但请耐心等待。

众所周知,一种 CPU 架构的二进制文件不会在其他架构上运行。例如,不可能在 sparc64 芯片上运行 x86 二进制文件(没有某种兼容层)。指令集是不同的,所以很明显这是行不通的。

但是,当二进制文件用于同一个 CPU,但用于不同的操作系统时,代码的哪一部分会阻止执行。例如,在 x86 Linux 机器上运行 x86 Solaris 二进制文件。我假设存在某种与运行时链接器或进程调度器相关的平台特定存根?

我很想知道。谢谢。

0 投票
6 回答
3436 浏览

security - 哈佛架构计算机对任意代码注入和执行攻击免疫吗?

哈佛架构计算机具有独立的代码和数据存储器。这是否使它们免受代码注入攻击(因为数据不能作为代码执行)?

0 投票
6 回答
8711 浏览

multithreading - 多核处理器的关键部分

使用单核处理器,所有线程都从一个 CPU 运行,在内存中的某个互斥体(或信号量等)上使用原子测试和设置操作来实现临界区的想法似乎很简单;因为您的处理器是从程序中的一个位置执行测试和设置,所以它一定不能从您程序中的另一个位置伪装成其他线程来执行测试和设置。

但是,当您确实拥有多个物理处理器时会发生什么?似乎简单的指令级原子性是不够的,b/c 有两个处理器可能同时执行它们的测试和设置操作,你真正需要保持原子性的是访问共享内存位置互斥体。(如果共享内存位置被加载到缓存中,那么整个缓存一致性问题也需要处理......)

这似乎会比单核情况产生更多的开销,所以这里是问题的核心:它有多糟糕?是不是更糟?我们只是忍受它吗?或者通过强制执行一个进程组中的所有线程必须位于同一个物理核心上的策略来回避它?

0 投票
2 回答
477 浏览

c++ - 即使指针从未被取消引用,如何在结束后三指针中发生硬件陷阱?

Herb Sutter 在 2005年11 月 1 日的 C++ 专栏中写道...

[O] 在某些 CPU 架构中,包括当前的架构,上述代码可能会导致在创建结束后三指针的位置发生硬件陷阱,无论该指针是否被取消引用。

CPU 如何陷入位模式?关于什么 ...

额外的问题:“一些当前的 CPU 架构”这个短语是否应该通常理解为仅指运输产品,或者如果描述或暗示它们的虚构作品具有最近的出版日期,它是否也包括虚构的架构?

0 投票
6 回答
1421 浏览

theory - 使用特制 CPU 寻找大数的质因数

我的理解是,如今许多公钥密码算法都依赖于大素数来组成密钥,而难以分解两个素数的乘积使得加密难以破解。我的理解也是,分解如此大的数字如此困难的原因之一是,所使用的数字的绝对大小意味着没有 CPU 可以有效地处理这些数字,因为我们的微型 32 位和 64 位 CPU 无法匹配对于 1024、2048 甚至 4096 位数。必须使用专门的 Big Integer 数学库来处理这些数字,而这些库本身就很慢,因为 CPU 一次只能保存(和处理)小块(如 32 位或 64 位)。

所以...

为什么你不能构建一个具有 2048 位寄存器和巨大算术电路的高度专业化的定制芯片,就像我们从 8 位到 16 位到 32 位到 64 位 CPU 一样,只是构建一个更大的芯片?该芯片不需要传统 CPU 上的大部分电路,毕竟它不需要处理虚拟内存、多线程或 I/O 等事情。它甚至不需要是支持存储指令的通用处理器。只是对巨大数字执行必要的算术计算的最低限度。

我对 IC 设计了解不多,但我确实记得学习过逻辑门的工作原理,如何构建半加器、全加器,然后将一堆加法器连接在一起进行多位运算。只是放大。很多。

现在,我相当肯定有一个很好的理由(或 17 个)以上方法行不通(否则许多比我聪明的人中的一个已经这样做了),但我很想知道为什么它行不通。

(注意:这个问题可能需要重新处理,因为我什至不确定这个问题是否有意义)

0 投票
2 回答
345 浏览

serialization - 跨不同 cpu 架构的双倍?

是否可以通过网络发送双浮点值(当然要针对正确的字节顺序进行调整)并在不同的 cpu 架构上互换使用它们,特别是 i386、mips(几个不同的内核)、powerpc(e300、e500)。没有非常旧的硬件。

使用 gcc 4.2.1 作为带有 -Os 的编译器,适用于所有架构。

据说它到处都是 IEEE-754 标准(是吗?),但正如维基百科所说:

IEEE 754-1985 允许实现中的许多变化(例如某些值的编码和某些异常的检测)。IEEE 754-2008 已经收紧了其中的许多内容,但仍然存在一些变化(尤其是二进制格式)。

我不打算传递 NaN 或其他特殊的东西,只是有效的十进制数字。

0 投票
1 回答
2198 浏览

cpu-architecture - 如何确定 SSE 预取指令大小?

我正在使用包含 SSE 预取指令的内联汇编的代码。预处理器常量确定是否使用 32、64 或 128 字节预取指令。该应用程序用于各种平台,到目前为止,我不得不在每种情况下调查哪个是给定 CPU 的最佳选择。我知道这是缓存行大小。这些信息是否可以自动获得?/proc/cpuinfo 中似乎没有明确显示它。

0 投票
5 回答
7376 浏览

c++ - 用于动态代码生成的最可移植库?

我正在寻找最便携的汇编程序库,例如asmjitjitasm

当我说“最便携”时,我的意思是,它对各种架构的支持最多。语言并不重要,但 C++ 将是最好的解决方案,尤其是与 GCC 结合使用时。

对我来说重要的架构是 x86/64、PowerPC 和 ARM。