64 位架构上的 32 位操作系统
我在 64 位 x86 处理器(intel)上运行 32 位 ubuntu。我知道在这种情况下字大小是 64 位,但我对 32 位操作系统有点困惑。 那么,当我计算内存带宽时,我是否应该假设将使用64线的数据总线宽度,并且它将表现出与64位操作系统相同的性能? IOW,我想更好地理解操作系统宽度与架构宽度之间的关系。
例如,可以使用 64 位宽的内存总线一次性读取 64 位操作数。这个需要64位操作系统的支持吗?对于 32 位操作系统,它会进行两次读取(每次 32 位)来读取 64 位操作数吗?
谢谢!
I am running 32bit ubuntu on 64bit x86 processor (intel). I know that the word size is 64bits in this case but I am little confused about the 32bit OS.
So while I calculate the memory bandwidth, shall I assume that the data bus width of 64 lines will be used and it will exhibit the same performance as the 64bit OS? IOW, I want to better understand the relation between OS width on the architecture width.
For instance, a 64bit operand can be read in single shot with a 64bit wide memory bus. Does this need the support of 64bit OS? With a 32bit OS, will it make two reads (32bits each time) to read the 64bit operand?
Thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
你不应该担心这个。
操作系统 32 位与 64 位仅在内存寻址上有所不同。在 64 位中,您可以添加更多内容。
从内存加载的数据独立于操作系统 - 它取决于处理器架构。
更好的处理器可以在一次内存加载时加载 128、256 位。
这是最简短的解释,并且对于在此操作系统上运行的 99.9% 的程序来说应该是正确的。
0,1% 如果保留给程序,则在访问数据时不关心内存对齐。但这个问题可能会在接下来的 99.9% 中通过处理器缓存得到解决。
总结 - 如果您的操作系统有足够的内存来运行所有程序,您不必担心。
You shouldn't worry about this.
OS 32-bit vs. 64 bit is deffer only on memory addressing. IN 64-bit you may addres more.
Data loading from memory is independent from OS - it depends on processor architecture.
Better processor may load 128, 256 bits at one memory load.
It is shortest explanation and should be true in 99,9% of programs running on this OS.
0,1% if reserved for programs, that doesn't care about memory aligment when accessing data. But this problem may be addressed in next 99,9% by processor cache.
Summarizing - you shouldn't worry if your OS has enough memory to run all programs.
为 32 位操作系统编译的应用程序甚至不知道总线是 64 位,它们将始终仅使用前 32 位。
由于处理器未在 64 位模式下运行,因此您的 64 位数据将存储在两个不同的寄存器中(例如 EAX:EDX),使用总线的前 32 位读取同一数字的两个不同部分。
Applications compiled for a 32 bit OS don't even know that the bus is 64bits large, they will always use the first 32bits only.
Because the processor is NOT running in 64bits mode, your 64bits data will be stored in two distinct registers (say EAX:EDX), reading two distinct parts of the same number, using the first 32bits of the bus.