公认的计算机之父是阿兰·图灵在 1936 年提出了「图灵机」的概念。图灵机是一个抽象的计算模型,它可以形象地表述为:
- 有一个向两端无限延伸的带子,可以在上面记录内容
- 有一个可以在带子上擦除/写入的读写头,可以在带子上任意移动
- 有一个控制器,控制读写头的移动和擦除/写入操作
图灵机的表述看似纸上谈兵,但实际与现在计算机的体系结构有良好的对应,甚至可以说是所有现代计算机背后的灵魂。
- 带子对应于内存(当然内存不能无限大,这限制了计算机的处理能力是有上限的)
- 读写头可以在带子上任意移动读写对应内存的随机存取(内存的英文名字就是 Random Access Memory)
- 控制器对应中央处理器
在内存这条带子上,找到正确的位置以便进行存取的过程,就是所谓的「内存寻址」过程。在图灵机这个思想模型中,我们可以假设读写头可以按照要求立即在带子上找到正确的位置。但是在现实生活中,有效地内存寻址是必须要解决的问题。因此,内存寻址可谓是计算机体系结构的核心问题之一。
这篇文章主要讨论 Intel x86 架构上的内存寻址问题。纯干货,吃到撑。