我有两个关于X86处理器的问题。
第一:什么是SSE?它是为了什么?它是CISC架构吗? 程序员是否应该在汇编程序中编程并且不编程编译器学习SSE?
第二:64位处理器支持32位处理器。如果64位处理器取代32位处理器,程序员应该编译使用少于2 GB的32位RAM的应用程序吗? 32位应用程序使用较少的内存,其二进制文件较小。操作系统必须存储32位和64位的共享库,这可能是一个问题。
由于
答案 0 :(得分:1)
SSE是英特尔实施的单指令多数据。同时对多个值执行相同的操作以加快速度。如果你做一些数值计算繁重的工作,特别是图像处理,它可能值得一看 - 虽然图书馆可能已经做到了,而且真正的爆炸/降压,你会学习Cuda / openCL。
32/64位是复杂的,非常适合OS /编译器。 64位代码存在空间成本 - 在64位操作系统上使用32位构建可能会有优势。但是很多原因都是操作系统原因超出指针大小 - 例如需要在64位版本上签名构建。答案 1 :(得分:1)
答案 2 :(得分:0)
SSE是x86架构的扩展,旨在支持多媒体。可以找到更多信息http://en.wikipedia.org/wiki/Streaming_SIMD_Extensions。
关于你的第二个问题存在相当多的争论。在这里,我只谈论英特尔32位和64位平台。从功能上来说,如果程序从不使用超过2GB的内存,那么应该没有区别。但是,编译64位可以创建不同的性能配置文件。例如,指针的大小在64位平台上较大,这往往会使程序的大小更大。为了抵消这个64位的缺点,64位平台有更多的寄存器,可以让你的程序运行得更快。这里有一个复杂的权衡。看到其他人的想法会很有趣。
答案 3 :(得分:0)
[嘿,在回答这个问题时,它被移植到超级用户,然后被删除了,现在它似乎神奇地回到了这里。第三次尝试就是魅力!]
我并不精通SSE,但它是一种在每个时钟周期并行操作多个数据集的机制。 (较旧的芯片在每个周期中留下了令人惊讶的硅闲置量;芯片在每个周期自己执行多个指令时表现得更好,但它涉及相当多的猜测,并且在一些数据繁重的算法中完全失败。)因此SSE需要旧SIMD系统中的页面,允许在多个数据上执行相同的命令。设置时间可能需要更长时间,但从长远来看,它已经完成了批次。
根据您要完成的工作,它可以make a huge difference,但大多数程序员可能永远不需要SSE可以提供的各种工具。
至于在64位进程上执行32位进程以节省内存,这是一种真正的可能性。但是当AMD首次引入x86-64指令集时,他们非常谨慎地指出新指令和附加寄存器,这些寄存器可以提高未充满地址空间或执行许多64位算术运算的任务的性能。他们提到大多数人可能希望大多数代码在64位模式下执行,但是大多数时候性能加速都会很微妙。
因此,除了Firefox和Flash之外,64位无处不在,并且由于指针较大而导致的内存扩展似乎似乎是个大问题。