怪怪虎 发表于 2009-10-30 13:30

回复 #10 cjaizss 的帖子

呵呵.以前的理解是512byte的空间只是用来存放数据的.
现在的理解是512byte里存一些控制信息,cpu会根据这个信息从IC的SRAM中读取信息. 在MPC架构中,IC的SRAM已经被归纳到统一的地址空间中.

另外,能不能share一些硬件手册放到论坛里?

beepbug 发表于 2009-12-22 10:32

过去,在Apple II兼容机里装块汉卡,里面ROM有1MB,但是,CPU是6502,只能寻址64KB。读写是这样做的:先往一个地址写一数,然后再访问。由这个数来决定是访问哪一段。
还有一个Z80机,装一个多用户操作系统,可以连接7个终端,每个用户使用64KB空间。但是,这Z80也是8位CPU,也只能访问一个64KB空间。
早期的汽车导航仪,用的当然不是32位芯片,要访问存储卡,也只能采用地址复用的方式。

cjaizss 发表于 2009-12-22 11:01

原帖由 怪怪虎 于 2009-10-30 13:30 发表 http://linux.chinaunix.net/bbs/images/common/back.gif
呵呵.以前的理解是512byte的空间只是用来存放数据的.
现在的理解是512byte里存一些控制信息,cpu会根据这个信息从IC的SRAM中读取信息. 在MPC架构中,IC的SRAM已经被归纳到统一的地址空间中.

另外,能不能share ...
呵呵,没问题啊,可是硬件手册基本上是枯燥无味的,不是搞相关项目用到这个东西的话,是不会有多少人愿意看的

readkernel 发表于 2009-12-22 11:18

呵呵,
powerpc e500 core上电还只认4k呢

怪怪虎 发表于 2009-12-29 23:13

现在回过头来看这个问题,感觉问得有些"呆". 现在对这个问题自己在总结下,不对指出请跟帖奥,^_^
1)如果用的是内存映射方式,不会存在这种问题的,因为整个芯片的地址空间都包括在了统一规划的地址空间内
2)如果用的是IO映射方式,就有可能了,因为此时cpu是通过io端口(寄存器)来和设备通信的, 此时IO端口只会在物理空间中占有不大的一部分.所以有可能是512bytes.这个大小一般是2的次米. 对这个物理地址空间的访问就是对IO设备(IO寄存器的访问)

beepbug 发表于 2010-01-05 18:42

你这个“映射方式”和“为什么处理器只看到一部分地址空间”是两码事。

怪怪虎 发表于 2010-01-05 19:26

原帖由 beepbug 于 2010-1-5 18:42 发表 http://linux.chinaunix.net/bbs/images/common/back.gif
你这个“映射方式”和“为什么处理器只看到一部分地址空间”是两码事。
如果不和映射方式有关,一个io芯片的地址,应该除在处理器地址空间的某个范围段. 难道不是这样吗?

readkernel 发表于 2010-01-05 22:33

原帖由 怪怪虎 于 2009-12-29 23:13 发表 http://linux.chinaunix.net/bbs/images/common/back.gif
现在回过头来看这个问题,感觉问得有些"呆". 现在对这个问题自己在总结下,不对指出请跟帖奥,^_^
1)如果用的是内存映射方式,不会存在这种问题的,因为整个芯片的地址空间都包括在了统一规划的地址空间内
2)如果用 ...

物理上的IO端口是i386体系CPU特有的访问外设的方式,i386体系访问IO端口有其特殊的指令(in, out)。
其他CPU体系就没有IO端口的概念,所有外设的寄存器、缓存等都由CPU统一编址到物理内存空间。

其实如果自己设计外设电路,也可以把外设挂在i386体系CPU的访问内存的地址总线上

beepbug 发表于 2010-01-06 19:17

原帖由 怪怪虎 于 2010-1-5 19:26 发表 http://linux.chinaunix.net/bbs/images/common/back.gif

如果不和映射方式有关,一个io芯片的地址,应该除在处理器地址空间的某个范围段. 难道不是这样吗?
不是。至少有三类安排:
1)I/O端口和内存编址完全不搭界。
2)内部是一回事,完全编址在一起。
3)硬件是分开的,但是,又把口地址映射到一段内存地址上。

beepbug 发表于 2010-01-06 19:19

原帖由 readkernel 于 2010-1-5 22:33 发表 http://linux.chinaunix.net/bbs/images/common/back.gif
其实如果自己设计外设电路,也可以把外设挂在i386体系CPU的访问内存的地址总线上
赞!
楼主可以参见这一段话。
页: 1 [2]
查看完整版本: 为什么处理器只看到一部分地址空间