物理地址如何映射大容量的内存
发布时间:2010-06-14 17:33:04 文章来源:www.iduyao.cn 采编人员:星星草
物理地址怎么映射大容量的内存?
一块SOC芯片,它的物理地址分配中有一大部分留给了内存,一部分留给了寄存器等,是这样的么?
如果内存很大,那么怎么实现有限的物理地址映射大容量内存的呢?这部分地址其实是对应内存控制器的么?而具体的实现是靠控制器完成?
------解决方案--------------------
一块SOC芯片,它的物理地址分配中有一大部分留给了内存,一部分留给了寄存器等,是这样的么?
是这样的。
通常,CPU内部会集成很多的模块,操作这些模块就需要寄存器。可能的实现是,将这些模块的寄存器都集中在一起放在一块连续的地址空间中。
对于内存,它也有相应的控制器模块。
该模块就会定义内存的一些属性,比如 片选CS是哪一个,base address 是多少,size 是多少。 具体的时序信息等等。
如果内存很大,那么怎么实现有限的物理地址映射大容量内存的呢?这部分地址其实是对应内存控制器的么?而具体的实现是靠控制器完成?
内存很大?
如果大过了SOC分配给内存的地址空间,那肯定不行的了。可能有一些内存的空间会牺牲掉。
内存的大小选型,一定要满足 SOC分配给内存的地址空间,否则,即使很大,也是浪费的。
内存控制器是一片起控制作用的寄存器区域。
内存的地址空间和内存控制器的地址空间,是两码事,是独立开的两个区域。
------解决方案--------------------
一一对应的,
具体对应方式,就看你启用的是 page 访问方式,还是 bta 块地址翻译方式,
可能还存在其他的虚拟地址到物理地址的映射方式
------解决方案--------------------
1、通常我们的操作系统都是32bit的,也就是4G最大的有效地址;
2、在外设(Local Bus,UART和SPI寄存器等)占掉一部分后,按照一一
对应的地址翻译,怎么都到不了4G的内存;
3、通常的做法是采用滑窗的方案,即根据访问,动态配置有效地址和物理地址
之间的映射;
4、当然,前天是你的CPU至少得支持大于32-bit的总线,比如36bit、64bit等
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。
其他相似内容:
-
在驱动开发中出现 'struct' type redefinition 应该怎么办?? 大神们告诉小弟一下...
下面是我写的代码:
#pragma once
//**********...
-
大神们帮我看一下,我的代码错在什么地方? 加载成功,卸载就蓝屏了....
/*
*******************************************************...
-
sigma8653很罕见的问题
SOS!
sigma8653板子插上卡,上电后可以识别SD卡,然后软重启(reboot)就无法识别了!
奇怪的时,继续软重启一次又可...
-
Cancel自旋锁 起了什么作用?
发现IoCancelIrp 函数中
获取了Cancel自旋锁
设置了Irp->Cancel
调用了OnCancelIo函数
但是进入了On...
-
windows下 pnp设备的即插即用功能是怎么实现的?
看到 windows内核情景分析里说
加载驱动有三种方式 前两种是静态 分别是引导...
-
取消当前 IRP 执行的过程是怎样的?
#pragma code_seg("PAGE")
NTSTATUS MyWdmRead(PDEVICE_OBJECT DeviceObject,PIRP Irp)
{
...
-
vs2008中,link2001错误的问题,代码如下
vs2008中,link2001错误的问题,代码如下
#include <ntddk.h>
VOID OnUnload(IN PDRIVER_OBJ...
-
什么是内核缓冲区,用户缓冲区
比如网卡的内核缓冲区,那这个缓冲区是在pc内存还是在网卡的芯片上呢?
------解决方案---------------...
-
如果在一个函数中有提升IRQL的语句 是不是整个函数都不能放在分页内存中 ?
如果我在一个函数前使用了 #pragma code_seg("PAGE") ...
-
请教Linux下dm9000网卡驱动程序问题
应用程序网络编程是基于socket接口的,好像完全屏蔽了底层,不能像字符设备那样应用程序可以调用...