linux内核原理剖析——内存寻址(一)

最近总想分享点硬核的原创文章出来,一是硬核技术是一个程序员真正应该修炼
的内功;二是修炼硬核技能是通往架构师领域的必经之路。本系列文章将分享关
于linux内核设计原理相关的内容,希望能打通我们的七经八脉,真正领悟底层系
统设计的核心思想。关于linux内核之内存寻址相关的原理计划分享出三篇文章来讲解,此文为第一篇。

引言

所谓内存寻址,简单说来就是cpu接受到指令后需要从内存中取得相应数据,但是内存中的数据都是有对应地址的,需要通过地址来获取相应地址段上的数据,这也就是为什么要内存寻址。

所谓地址在操作系统中分为逻辑地址、线性地址、物理地址。

  • 逻辑地址
    逻辑地址其实就是机器码指令用到的地址,也就是机器指令码中用到的地址都是逻辑地址。目前这个地址是由16位段选择符和32位偏移量来表示的,这个地址也可叫做虚拟地址。

  • 线性地址
    是一个32位无符号整数,是由逻辑地址转换而来的。

  • 物理地址
    是内存芯片中的物理地址,是缓存数据的实际地址。是由逻辑地址转换而来的。最终是由这个地址来定位到内存空间。

实模式与保护模式

在8086处理器出现之前,内存地址的寻址方式是直接访问物理地址。在8086处理器中,了寻址1M的内存空间,把地址总线扩展到20位,但是ALU只有16位,也就是说如何用16位寄存器表示20位内存空间?为了解决这个问题,就产生了分段机制,也就是引入了4个段寄存器,es、cs、ds、ss,每个寄存器都是16位。8086处理器中逻辑地址格式为16位段寄存器地址:16位偏移地址,那么怎么用两个16位地

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
内存工作原理 1.内存寻址 首先,内存从CPU获得查找某个数据的指令,然后再找出存取资料的位置时(这个动作称为“寻址”),它先定出横坐标(也就是“列地址”)再定出纵坐标(也就是“行地址”),这就好像在地图上画个十字标记一样,非常准确地定出这个地方。对于电脑系统而言,找出这个地方时还必须确定是否位置正确,因此电脑还必须判读该地址的信号,横坐标有横坐标的信号(也就是RAS信号,Row Address Strobe)纵坐标有纵坐标的信号(也就是CAS信号,Column Address Strobe),最后再进行读或写的动作。因此,内存在读写时至少必须有五个步骤:分别是画个十字(内有定地址两个操作以及判读地址两个信号,共四个操作)以及或读或写的操作,才能完成内存的存取操作。 2.内存传输 为了储存资料,或者是从内存内部读取资料,CPU都会为这些读取或写入的资料编上地址(也就是我们所说的十字寻址方式),这个时候,CPU会通过地址总线(Address Bus)将地址送到内存,然后数据总线(Data Bus)就会把对应的正确数据送往微处理器,传回去给CPU使用。 3.存取时间 所谓存取时间,指的是CPU读或写内存内资料的过程时间,也称为总线循环(bus cycle)。以读取为例,从CPU发出指令给内存时,便会要求内存取用特定地址的特定资料,内存响应CPU后便会将CPU所需要的资料送给CPU,一直到CPU收到数据为止,便成为一个读取的流程。因此,这整个过程简单地说便是CPU给出读取指令,内存回复指令,并丢出资料给CPU的过程。我们常说的6ns(纳秒,秒-9)就是指上述的过程所花费的时间,而ns便是计算运算过程的时间单位。我们平时习惯用存取时间的倒数来表示速度,比如6ns的内存实际频率为1/6ns=166MHz(如果是DDR就标DDR333,DDR2就标DDR2 667)。 4.内存延迟 内存的延迟时间(也就是所谓的潜伏期,从FSB到DRAM)等于下列时间的综合:FSB同主板芯片组之间的延迟时间(±1个时钟周期),芯片组同DRAM之间的延迟时间(±1个时钟周期),RAS到CAS延迟时间:RAS(2-3个时钟周期,用于决定正确的行地址),CAS延迟时间 (2-3时钟周期,用于决定正确的列地址),另外还需要1个时钟周期来传送数据,数据从DRAM输出缓存通过芯片组到CPU的延迟时间(±2个时钟周期)。一般的说明内存延迟涉及四个参数CAS(Column Address Strobe 行地址控制器)延迟,RAS(Row Address Strobe列地址控制器)-to-CAS延迟,RAS Precharge(RAS预冲电压)延迟,Act-to-Precharge(相对于时钟下沿的数据读取时间)延迟。其中CAS延迟比较重要,它反映了内存从接受指令到完成传输结果的过程中的延迟。大家平时见到的数据3—3—3—6中,第一参数就是CAS延迟(CL=3)。当然,延迟越小速度越快。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值