【问题标题】:Questions about X86 processors关于 X86 处理器的问题
【发布时间】:2011-07-24 23:21:38
【问题描述】:

我有两个关于 X86 处理器的问题。

首先:什么是 SSE?它是干什么用的?是CISC架构吗? 不使用汇编编程且不编写编译器的程序员是否应该学习 SSE?

第二:64位处理器支持32位处理器。如果 64 位处理器取代 32 位处理器,程序员是否应该为 32 位编译使用少于 2 GB RAM 的应用程序? 32 位应用程序使用较少的内存,其二进制文件更小。操作系统必须同时存储 32 位和 64 位的共享库,这可能是个问题。

谢谢

【问题讨论】:

    标签: x86 32bit-64bit sse processor


    【解决方案1】:

    SSE 是英特尔对单指令多数据的实现。同时对多个值执行相同的操作以加快速度。如果您进行一些繁重的数值计算工作,尤其是图像处理,那么它可能值得一看 - 尽管库可能已经这样做了,而对于真正的 bang/buck,您将学习 Cuda/openCL。

    32/64 位很复杂,而且非常特定于操作系统/编译器。 64 位代码存在空间成本 - 在 64 位操作系统上使用 32 位构建可能会有优势。但是很多原因都是指针大小之外的操作系统原因 - 例如需要在 64 位版本上签名构建。

    【讨论】:

      【解决方案2】:
      1. 您可以阅读有关 SSE here 的信息。说实话,如果您不从事 ASM 工作或不从事媒体繁重的工作(即便如此,最好让编译器为您进行优化)。

      2. 并非所有 64 位处理器都支持 32 位指令。现代 64 位 PC 处理器确实支持 32 位指令。您可以阅读更多关于 here 的信息。您对传送 64 位与 32 位二进制文​​件有何顾虑?这一切都取决于您的客户需要/想要什么。确实,64 位二进制文​​件的大小往往更大。您的程序是否真的需要 64 位是您的决定。

      【讨论】:

      • 所有“64位”X86处理器(AMD64、x86-64、EM64T,不管你怎么称呼它们)都支持32位指令。如果他们不这样做,他们将不再是 X86。 64 位指令是对现有 32 位指令集的扩展。
      • 对——这就是我链接到 x86-64 维基百科文章的原因 :)
      【解决方案3】:

      [呵呵,在回答这个问题的时候,它被迁移到超级用户,然后被删除,现在它似乎神奇地回到了这里。第三次尝试就是魅力!]

      我并不精通 SSE,但它是一种在每个时钟周期并行处理多个数据集的机制。 (较旧的芯片在每个周期留下了惊人数量的硅空闲;这些芯片在每个周期自己执行多条指令方面做得更好,但它涉及相当多的猜测,并且在某些数据密集型算法上完全失败。)所以 SSE 采取了来自旧的SIMD 系统的页面,它允许对多条数据执行相同的命令。设置时间可能需要更长的时间,但从长远来看,它已经完成了很多

      根据您要完成的工作,它可以make a huge difference,但大多数程序员可能永远不需要 SSE 可以提供的那种工具。

      至于在 64 位进程上执行 32 位进程以节省内存,这是一个真正的可能性。但是当 AMD 首次引入 x86-64 指令集时,他们非常小心地指出了新指令和附加寄存器,这些指令和附加寄存器可以提高未用完地址空间或执行许多 64 位算术运算的任务的性能。他们提到大多数人可能希望大多数代码在 64 位模式下执行,但大多数时候性能加速会很微妙。

      所以,除了 Firefox 和 Flash 之外,64 位无处不在,而且由于更大的指针而导致的内存扩展似乎不是一个大问题。

      【讨论】:

        【解决方案4】:

        SSE 是 x86 架构的扩展,旨在支持多媒体。更多信息可以找到http://en.wikipedia.org/wiki/Streaming_SIMD_Extensions

        关于您的第二个问题存在大量争论。这里我只谈论 Intel 32 和 64 位平台。从功能上讲,如果程序从不使用超过 2GB 的内存,则应该没有区别。但是,为 64 位编译可以创建不同的性能配置文件。例如,在 64 位平台上指针的大小较大,这往往会使程序的大小变大。为了抵消 64 位的这个缺点,64 位平台有更多的寄存器,可以让你的程序运行得更快。这里有一个复杂的权衡。看看其他人的想法会很有趣。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-03-21
          • 1970-01-01
          • 1970-01-01
          • 2011-09-25
          • 2011-09-10
          • 2019-12-27
          相关资源
          最近更新 更多