C语言与内存需要知道的事情:计算细节分析

  • CPU计算过程

    程序,必须先载入内存才能运行;

    CPU,设计成只从内存中读取数据。

    这个链条从计算机硬件上来看:硬盘(程序) --> 内存 --> CPU

    硬盘内存都是起到存储功能,并无计算功能;计算过程是在CPU中。

    CPU内部又有一个硬件链条:缓存 --> 寄存器 --> 运算单元

    计算过程,最终是发生在CPU内部的运算单元里。

  • 寄存器与运算单元

    寄存器,是与运算单元接触的最后一个存储数据的物理硬件。

    对于32CPU,每个寄存器内一般能存储32位的数据,即4个字节的数据。同理,64CPU对应64位(8字节)的寄存器

    寄存器作为物理单元,最大就是4个字节(以32位为例),对应数据类型里的int

    寄存器是一个物理概念,对应32位;

    int数据类型是一个软件概念,对应32位;

    作为软件概念,double是8个字节,即64位,对应的2个寄存器,就是说当设定一个double数据类型,每次在物理层面就是2个寄存器一起行动。

    常说的32位64位计算机,指的就是寄存器的容量位数,同时也指==总线==的传输容量。

    寄存器作为物理硬件,有着各自特定的作用及名称:

    1. EIP(Extern Instruction Pointer)寄存器

      其值,表示下一条指令的地址

    2. CR3寄存器

      保存当前进程页目录的物理地址

    3. EBP寄存器

      表示栈的底部

    4. ESP寄存器

      表示栈的顶部

  • 缓存与内存的区别

    内存虽然快,但是CPU计算更快,CPU与内存间通过总线传输,此传输过程相对CPU计算能力是比较慢的,因此就有缓存存在的必要性。

    缓存与计算单元的距离更近,不需要总线的开销,可以将频繁使用的数据暂时放到缓存。

  • References

  1. C语言中文网
发布了753 篇原创文章 · 获赞 1021 · 访问量 54万+

猜你喜欢

转载自blog.csdn.net/The_Time_Runner/article/details/103810229
今日推荐