fwzfwz1
驱动中牛
驱动中牛
  • 注册日期2002-11-01
  • 最后登录2007-06-01
  • 粉丝0
  • 关注0
  • 积分80分
  • 威望8点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
阅读:2301回复:8

总线地址和物理地址的区别

楼主#
更多 发布于:2003-06-04 17:27
总线地址和物理地址的区别,及明确的定义。感觉没有一本书讲的清除,都是拿来使用又乱用。
有了驱动,人才有了力量。
fwzfwz1
驱动中牛
驱动中牛
  • 注册日期2002-11-01
  • 最后登录2007-06-01
  • 粉丝0
  • 关注0
  • 积分80分
  • 威望8点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-06-05 15:09
总线地址是否与总线有关或者说与pci总线有关,到底如何定义,难道没有人知道吗,《linux设备驱动程序》中提到了,但是不明确,希望高手指点!!!!
有了驱动,人才有了力量。
fwzfwz1
驱动中牛
驱动中牛
  • 注册日期2002-11-01
  • 最后登录2007-06-01
  • 粉丝0
  • 关注0
  • 积分80分
  • 威望8点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-06-10 12:01
大家不关心这类问题吗?
有了驱动,人才有了力量。
jyhlc
驱动牛犊
驱动牛犊
  • 注册日期2002-03-11
  • 最后登录2005-11-24
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-06-24 15:47
这个同志好像问题很多
这个问题好像懂一点,可以说说,如果对了,别忘记给分啊
我不知道什么叫做总线地址,什么叫做物理地址,这些名词好像都不是很清楚地说,但是如果你知道了整个映射过程的话,就会知道到底是怎么回事情了。
在一个mov a,b(intel语法)的指令中,a和b都是一个偏移地址,比如说0xc00000000什么的,这个地址由CPU进行转化,+segment base之后就变成了另外一个地址,好像人们叫他线性地址
这个地址用于paging,也就是通过pgd什么的,最终转化为到某一个具体的页面地址,这个页面地址被发送到总线上
大致是这样子的
fwzfwz1
驱动中牛
驱动中牛
  • 注册日期2002-11-01
  • 最后登录2007-06-01
  • 粉丝0
  • 关注0
  • 积分80分
  • 威望8点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-06-24 16:24
问题多,说明勤于思考。多谢支持,但是这个问题你似乎还是没有回答对。
有了驱动,人才有了力量。
jyhlc
驱动牛犊
驱动牛犊
  • 注册日期2002-03-11
  • 最后登录2005-11-24
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-06-25 09:21
好吧,那就继续
前面说过的地址被发送到总线上(当然前提是经过确认的),然后进入北桥(或者是南桥?我从来弄不清楚这个名字,反正就是memory controller什么的),这个上面有个host bridge,他会把信号发送到system bus上面,这个时候,如果地址是属于物理地址空间,好像memory controller就会进行确认,类似于一个PCI设备一样,如果不是物理地址空间,那么就会有其他的pci设备进行确认,如果没有当然就是master abort了。如果在北桥(南桥?)中还有图形控制器的话,好像复杂一点,不过原理大致也是差不多
上述的内容可以在芯片组的datasheet和manual 中找到。
不知道说清楚了没有?如果有遗漏,大概是在内存处理模块中对pci内存映射和物理地址(RAM)的处理区别了,这是在内存初始的时候通过820了解到那些是可以用 的物理地址,那些是空的地址来决定的
至于highmem,好像一般实际上用不到,我看的时候没有太多注意:)
fwzfwz1
驱动中牛
驱动中牛
  • 注册日期2002-11-01
  • 最后登录2007-06-01
  • 粉丝0
  • 关注0
  • 积分80分
  • 威望8点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-06-25 11:37
你其实是讲了物理空间中RAM所占空间和pci设备空间的区别及处理。
根据我最近看到的文章,对于X86来说,物理空间和总线空间是一回事。但是对于其他处理器可不一定是这样。
不过感谢你的回答,使我对这一概念又清楚了一些!Think You!
有了驱动,人才有了力量。
seant
驱动牛犊
驱动牛犊
  • 注册日期2001-07-05
  • 最后登录2005-05-05
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2003-07-03 16:20
就我自己的理解,
1)物理地址是与CPU相关的。在CPU的地址信号线上产生的就是物理地址。在程序指令中的虚拟地址经过段映射和页面映射后,就生成了物理地址,这个物理地址被放到CPU的地址线上。
2)总线地址,顾名思义,是与总线相关的,就是总线的地址线或在地址周期上产生的信号。
3)物理地址与总线地址之间的关系由系统的设计决定的。在x86平台上,物理地址与PCI总线地址是相同的。在其他平台上,也许会有某种转换,通常是线性的转换。

比如:CPU需要访问物理地址是0xfa000的单元,那么在x86平台上,会产生一个PCI总线上对0xfa000地址的访问。这个单元或者是内存中,或者是某个卡上的存储单元,甚至可能这个地址上没有对应的存储器。而在另外一个平台上,或许在PCI总线上产生的访问是针对地址为0x1fa000的单元。
fwzfwz1
驱动中牛
驱动中牛
  • 注册日期2002-11-01
  • 最后登录2007-06-01
  • 粉丝0
  • 关注0
  • 积分80分
  • 威望8点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2003-07-03 22:35
你的理解基本和我一样,我在一本书上看到关于物理地址及总线地址的区别是这样的:CPU使用物理地址,而其他设备使用总线地址,例如PCI设备。
有了驱动,人才有了力量。
游客

返回顶部