我有两个关于X86处理器的问题。
首先:什么是SSE?它是用来做什么的?它是CISC架构吗?一个不会用汇编语言编程,也不会学习程序编译器的程序员应该学习SSE吗?
第二:64位处理器支持32位处理器。如果64位处理器取代了32位处理器,程序员是否应该为32位编写使用少于2 GB RAM的应用程序?32位应用程序使用的内存更少,它的二进制文件也更小。操作系统必须存储32位和64位共享库,这可能是一个问题。
谢谢
发布于 2011-03-29 12:08:25
嘿,在回答这个问题的时候,它被迁移到超级用户,然后被删除了,现在它似乎神奇地又回到了这里。第三次尝试是魅力!
我不太精通SSE,但它是一种在每个时钟周期内并行操作多个数据集的机制。(较旧的芯片在每个周期内留下惊人数量的空闲硅片;芯片在每个周期内独立执行多个指令的能力变得更好,但它涉及大量的猜测工作,并且在一些数据密集型算法上完全失败。)因此,SSE借鉴了旧的SIMD系统,它允许对多个数据片段执行相同的命令。设置时间可能会更长,但从长远来看,它完成了很多工作。
根据您试图完成的任务,它可以使用make a huge difference,但大多数程序员可能永远不需要SSE提供的工具。
至于在64位进程上执行32位进程来节省内存,这是一个真正的可能性。但是当AMD第一次引入x86-64指令集时,他们非常小心地指出了新的指令和额外的寄存器,这些指令和额外的寄存器可以提高不会耗尽地址空间或执行许多64位算术操作的任务的性能。他们提到,大多数人可能希望大多数代码在64位模式下执行,但在大多数情况下,性能加速将是微妙的。
因此,除了Firefox和Flash之外,64位是无处不在的,而且由于指针较大而导致的内存扩展似乎不是什么大问题。
发布于 2011-03-29 11:57:55
SSE是英特尔对单指令多数据的实现。在同一时间对多个值执行相同的操作,以加快速度。如果你做一些繁重的数值计算工作,特别是图像处理,它可能值得一看-尽管库可能已经做了,而且为了真正的bang/buck,你可以学习Cuda/openCL。
32/64位非常复杂,并且特定于操作系统/编译器。64位代码的空间开销很大--在64位操作系统上使用32位构建可能会有一些优势。但很多原因都是由于指针大小之外的操作系统原因-例如,需要在64位版本上进行签名构建。
发布于 2011-03-29 12:03:06
你可以读到关于
https://stackoverflow.com/questions/5467704
复制相似问题