在"低级编程:英特尔®64架构上的C,汇编和程序执行"一书中,我读到:
每个虚拟64位地址(例如,我们在程序中使用的地址)由几个字段组成.地址本身实际上只有48位宽; 它被符号扩展为64位规范地址.它的特点是它的17个左位是相等的.如果不满足条件,则在使用时立即拒绝该地址.然后借助特殊表将48位虚拟地址转换为52位物理地址.
为什么虚拟地址和物理地址之间的差异为4位?
assembly memory-management virtual-memory memory-address mmu
我已经发现,在x86 CPU有以下内存屏障指令:mfence,lfence,和sfence。
x86 CPU是否仅具有这三个内存屏障指令,或者还有更多指令?