关于X86处理器的问题

关于X86处理器的问题,x86,32bit-64bit,sse,processor,X86,32bit 64bit,Sse,Processor,关于X86处理器,我有两个问题 第一:什么是SSE?这是干什么用的?是CISC架构吗? 一个不在汇编程序中编程,也不在程序编译器中编程的程序员应该学习SSE吗 第二:64位处理器支持32位处理器。如果64位处理器取代32位处理器,程序员是否应该编译32位内存小于2GB的应用程序?32位应用程序使用的内存量更小,二进制文件也更小。操作系统必须存储32位和64位的共享库,这可能是个问题 感谢SSE是intel实现单指令多数据的工具。同时对多个值执行相同的操作以加快速度。如果你做了一些数值计算的繁重工

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

第一:什么是SSE?这是干什么用的?是CISC架构吗? 一个不在汇编程序中编程,也不在程序编译器中编程的程序员应该学习SSE吗

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


感谢

SSE是intel实现单指令多数据的工具。同时对多个值执行相同的操作以加快速度。如果你做了一些数值计算的繁重工作,特别是图像处理,也许值得一看——尽管这些库可能已经做了,而且你会学到Cuda/openCL

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

  • 你可以阅读有关SSE的文章。老实说,如果您不是在ASM中工作或做媒体繁重的工作,您可能不需要了解任何有关它的信息(即使这样,最好让编译器为您进行优化)

  • 并非所有64位处理器都支持32位指令。的确,现代64位PC处理器支持32位指令。你可以阅读更多关于这方面的内容。您对64位与32位二进制文件的发布有何顾虑?这完全取决于您的客户需要/想要什么。的确,64位二进制文件的大小往往更大。您的程序是否需要64位是您的决定


  • SSE是x86体系结构的扩展,旨在支持多媒体。可以找到更多信息


    关于你的第二个问题有相当多的争论。这里我只讲英特尔32位和64位平台。从功能上讲,如果一个程序使用的内存从未超过2GB,则不应存在差异。但是,为64位编译可以创建不同的性能配置文件。例如,在64位平台上,指针的大小更大,这会使程序的大小更大。为了弥补这一缺点,64位平台有更多的寄存器,可以使您的程序运行得更快。这里有一个复杂的权衡。看看别人怎么想会很有趣。

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

    我对SSE不太熟悉,但它是一种在每个时钟周期内并行操作多个数据集的机制。(较旧的芯片在每个周期中留下了惊人数量的硅空闲;芯片在每个周期中自己执行多条指令方面做得更好,但这涉及到相当多的猜测,并且在一些数据密集型算法方面完全失败。)因此SSE从较旧的系统中获得了一页,它允许对多个数据段执行相同的命令。安装时间可能会更长,但从长远来看,它做了很多工作

    根据您试图完成的工作,它可以完成,但大多数程序员可能永远不需要SSE能够提供的各种工具

    至于在64位进程上执行32位进程以节省内存,这是一种真正的可能性。但当AMD首次推出x86-64指令集时,他们非常小心地指出了新的指令和额外的寄存器,这些指令和寄存器可以在不耗尽地址空间或执行许多64位算术运算的任务上提高性能。他们提到,大多数人可能希望大多数代码在64位模式下执行,但大多数情况下性能的提高都是微妙的

    因此,除了Firefox和Flash之外,64位是普遍存在的,而且由于指针较大而导致的内存扩展似乎不是一个大问题。

    所有“64位”X86处理器(AMD64、X86-64、EM64T,不管你怎么称呼它们)都支持32位指令。如果没有,它们就不再是X86了。64位指令是现有32位指令集的扩展