有一个相对较新的Linux ABI,被称为x32 ,x86-64处理器运行在32位模式下,所以指针仍然只有32位,但仍然使用64位体系结构特定的寄存器。 因此,与普通的32位一样,最大内存使用量限制为4GB,但与64位相比,指针使用的caching空间更less,可以高效地执行64位算术操作,并且可以访问更多的寄存器(16)比你在香草32位(8)。
假设你有一个工作负载适合在4GB以内,有什么办法的x32的性能可能比在x86-64更糟?
在我看来,如果你不需要额外的内存空间,就不会丢失任何东西 – 你应该总是获得相同的性能(当你已经适应了caching)或更好的(当指针空间节省让你更适合caching) 。 但是,如果有分页/ TLB /等,我不会感到惊讶。 我不知道的细节。
具有更高cpu性能的机器(根据gprof)如何具有更差的实时性能?
奇怪的performance像素3Dgraphics程序
Isabelle:版本Isabelle2013-2的性能问题
如何在64b操作系统上执行Xperf callstack捕获?
推荐用于Windows的MysqL调整工具
Windows(Vista):在程序快捷方式上设置进程优先级
调用Runtime.getRuntime()。availableProcessors()
CreateFileMapping,MapViewOfFile,如何避免阻塞系统内存
Nginx + uWsgi + Flask应用程序性能testing
当然,如果你有一个多线程的程序,x32上的数据结构更小的事实可能会导致线程之间的高速缓存线 – 不同的对象可能被分配到x32模式的相同高速缓存线和x86_64模式的不同高速缓存线。 如果两个线程独立修改这些对象,缓存乒乓可能会严重拖慢x32代码。 当然,不管指针大小如何,这种高速缓存效果都可能发生,但是如果代码已经被调整为假设64位指针,那么指向32位的指针可能会使事情失调。
在X32中,处理器实际上是以“长模式”执行的,与x86_64的模式相同。 也就是说,处理器在寻址时看到的地址仍然是64位,但X32 ABI确保所有的地址都足够小,以适应32位。 因此,在某些情况下,当指针必须从32位扩展到64时,会有一些轻微的开销。
另外,需要在RAM中使用x86 / x86-64 / x32库,我认为这是在实践中最终会遇到的(除非你在谈论嵌入式或其他严格控制的系统而不是通用计算机)了解X32的一些好处。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。