changys
驱动小牛
驱动小牛
  • 注册日期2004-11-15
  • 最后登录2008-08-21
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望15点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
阅读:1982回复:7

为什么在windows中会有内存空间和IO空间之区别,既然都是做读写寄存器的操作何不统一成一种?

楼主#
更多 发布于:2005-05-12 14:22
rt
bmyyyud
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2010-01-21
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望130点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-05-12 16:07
这跟CPU架构有关
x86的是内存与I/O独立编址的,有I/O读写指令
而有些内存与I/O是一起编址的,只有内存读写指令
滚滚长江东逝水 浪花淘尽英雄 是非成败转头空 青山依旧在 几度夕阳红 白发渔樵江渚上 惯看秋月春风 一壶浊酒喜相逢 古今多少事 尽付笑谈中
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
板凳#
发布于:2005-05-12 17:09
这跟CPU架构有关
x86的是内存与I/O独立编址的,有I/O读写指令
而有些内存与I/O是一起编址的,只有内存读写指令

对,和WINDOWS无关......
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
changys
驱动小牛
驱动小牛
  • 注册日期2004-11-15
  • 最后登录2008-08-21
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望15点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-05-12 19:33
楼上的两位大侠,
我有几点不明白
1. 为什么要出现两套系统?
2. 有些寄存作用两种操作都可以吧?
3. 这种映射关系在硬件上是如何实现的,讲个大概过程吧
  我觉得奇怪为什么系统就知道该把它们映射到哪一个空间呢?
idaxsy
驱动大牛
驱动大牛
  • 注册日期2004-12-09
  • 最后登录2006-03-17
  • 粉丝0
  • 关注0
  • 积分386分
  • 威望54点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2005-05-13 09:00
 
这种映射关系在硬件上是如何实现的,讲个大概过程吧
 


我觉得这是主板的问题吧
[b]万水千山总是情,回个帖子行不行?[/b]
bmyyyud
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2010-01-21
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望130点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2005-05-13 09:35
1. 为什么要出现两套系统?
  因为本身他们就不同,I/O对应外设寄存器,内存对应RAM
2. 有些寄存作用两种操作都可以吧?
  这句话看不懂,不知道你要问什么
3. 这种映射关系在硬件上是如何实现的,讲个大概过程吧
  I/O与访存分开的,不用说吧
  联合编址的是指定一段内存空间作为I/O映射空间的,不是随便找哪里就可以的,类似X86的MMU部件虚拟地址到物理地址的转换
  我觉得奇怪为什么系统就知道该把它们映射到哪一个空间呢?
  系统看CPU是什么架构的,然后装入不同的HAL对付它
滚滚长江东逝水 浪花淘尽英雄 是非成败转头空 青山依旧在 几度夕阳红 白发渔樵江渚上 惯看秋月春风 一壶浊酒喜相逢 古今多少事 尽付笑谈中
changys
驱动小牛
驱动小牛
  • 注册日期2004-11-15
  • 最后登录2008-08-21
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望15点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2005-05-13 09:58
To bmyyyud:
有些问题不解:
1. \"因为本身他们就不同,I/O对应外设寄存器,内存对应RAM\"
我看过一个外设PCI卡的驱动,它的寄存器被Mmeory mapped到内存空间,这不是和你说的矛盾么?

2.我说的两种操作是指:
对同一个外设可以同时把的寄存器映射的两种空间,
即可以用 Read/Write_Reigiser_XXX 或 用 Read/Write_Port_XXX
可能存在这种情况么?

3.看了你的解答,我感觉内存这个设备有一套访问方式[内存访问方式], 其它的设备有一套访问方式[端口访问方式].
但是这里有一个矛盾,系统也可以把我的PCI卡映射到内存空间啊?
按你说的应该只能用端口方式访问这个PCI外设

4.关于资源的分配和映射过程,你能描述的再详细些么?
例如设备被映射到哪个空间? 是什么让系统决定为这个设备分配多大的地址空间.
bmyyyud
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2010-01-21
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望130点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2005-05-13 10:20
To bmyyyud:
有些问题不解:
1. \"因为本身他们就不同,I/O对应外设寄存器,内存对应RAM\"
我看过一个外设PCI卡的驱动,它的寄存器被Mmeory mapped到内存空间,这不是和你说的矛盾么?
我觉得这和硬件的设计有关,看将自己的地址放在CPU内存总线上还是I/O总线上

2.我说的两种操作是指:
对同一个外设可以同时把的寄存器映射的两种空间,
即可以用 Read/Write_Reigiser_XXX 或 用 Read/Write_Port_XXX
可能存在这种情况么?
如果硬件设计允许,原则上没有什么区别

3.看了你的解答,我感觉内存这个设备有一套访问方式[内存访问方式], 其它的设备有一套访问方式[端口访问方式].
但是这里有一个矛盾,系统也可以把我的PCI卡映射到内存空间啊?
按你说的应该只能用端口方式访问这个PCI外设
这个是由HAL屏蔽了细节

4.关于资源的分配和映射过程,你能描述的再详细些么?
例如设备被映射到哪个空间? 是什么让系统决定为这个设备分配多大的地址空间.
由于PCI是智能总线,这个是读PCI配置寄存器由PnP智能决定的
 
滚滚长江东逝水 浪花淘尽英雄 是非成败转头空 青山依旧在 几度夕阳红 白发渔樵江渚上 惯看秋月春风 一壶浊酒喜相逢 古今多少事 尽付笑谈中
游客

返回顶部