内存控制器和mmu问题

unbutun 2008-07-03 05:56:31
内存控制器和mmu有什么区别?

现在接触davinci系列处理器,其中包含arm926、vpss(主要用于视频处理)、dsp

这些东西都在内存控制器之下工作,而mmu只在arm端有,想问是内存控制器是在arm内还是另外在片内独立的一个东西,而mmu和内存控制器有什么区别?都起什么作用?

...全文
439 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
gooogleman 2008-08-30
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 shuiyan 的回复:]
ARM7一般不会支持外部内存,只有少量的型号支持总线扩展(就是外部RAM/SDRAM),典型的S3C44B0是支持SDRAM。只要支持的,内存控制器都是CPU内置的。
[/Quote]

是这样,也没有必要,因为ARM7跑不了Wince和linux等系统。内部集成的就可以应付需求了
gooogleman 2008-08-30
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 vsong 的回复:]
ARM9架构的 s3c2410 cpu 的内存控制器有8个bank控制寄存器用于控制片内和片外的存储器,每个bank支持128M的地址空间。

bank0的开始地址为0x0000 0000 结束地址为0x07FF FFFF (128M)
bank1的开始地址为0x0800_0000 结束地址为0x0FFF FFFF (128M)
.
.
.
bank6的开始地址为0x3000 0000 结束地址为0x37FF FFFF (128M)
bank7....

你的外部存储器例如SDRAM接在bank6上,所以cpu操作SDRAM的时候就会从0x3000 0000的地…
[/Quote]

------------对
shuiyan 2008-07-15
  • 打赏
  • 举报
回复
ARM7一般不会支持外部内存,只有少量的型号支持总线扩展(就是外部RAM/SDRAM),典型的S3C44B0是支持SDRAM。只要支持的,内存控制器都是CPU内置的。
unbutun 2008-07-15
  • 打赏
  • 举报
回复
dm6446,再问一下arm7的也是在片内吗?
unbutun 2008-07-15
  • 打赏
  • 举报
回复
ARM7一般不会支持外部内存,只有少量的型号支持总线扩展(就是外部RAM/SDRAM),典型的S3C44B0是支持SDRAM


--------------请问arm7一般不会支持外部内存-----这个是什么意思?为什么不支持外部内存?那arm7在片内集成有flash之类的东西吗?
shuiyan 2008-07-14
  • 打赏
  • 举报
回复
你问的什么平台?首先,不管是哪个平台,内存控制器都不是在“内存”中,内存只是存储芯片。

Intel的X86架构的系列都不在CPU内,所以才要南北桥芯片。
AMD的X86架构都在CPU内。
龙芯的在CPU内。

嵌入式中的ARM9及以上系列,都在CPU内。
MIPS都在CPU内。

其他的……lx补充
unbutun 2008-07-14
  • 打赏
  • 举报
回复
内存控制器是做在片内的还是在板子上还是在内存上?
song x 2008-07-12
  • 打赏
  • 举报
回复
ARM9架构的 s3c2410 cpu 的内存控制器有8个bank控制寄存器用于控制片内和片外的存储器,每个bank支持128M的地址空间。

bank0的开始地址为0x0000 0000 结束地址为0x07FF FFFF (128M)
bank1的开始地址为0x0800_0000 结束地址为0x0FFF FFFF (128M)
.
.
.
bank6的开始地址为0x3000 0000 结束地址为0x37FF FFFF (128M)
bank7....

你的外部存储器例如SDRAM接在bank6上,所以cpu操作SDRAM的时候就会从0x3000 0000的地方操作
song x 2008-07-12
  • 打赏
  • 举报
回复
不完全同意zenny_chen
对于ARM9来说 MMU 和 MEMORY CONTROLLER 都是片内资源,一下的解释适用ARM9

MMU Memory Management Unit 存储器管理单元
主要功能 :
虚拟地址到物理地址映射
存储器访问权限控制
高速缓存支持

MEMORY CONTROLLER 内存控制器
主要功能:为外部存储器存储提供内存控制信号(provides memory control signals required for external memory access.)
特性:

— 小/大端支持 Little/Big endian (selectable by a software)
— 每一个bank支持128M地址空间,总共有8个bank,最大支持1G地址空间 Address space: 128Mbytes per bank (total 1GB/8 banks)
— 除了bank0,其他的bank的存储大小都是可编程的Programmable access size (8/16/32-bit) for all banks except bank0 (16/32-bit)
— 总共有8个bank控制器 Total 8 memory banks
六个分配给ROM,SRAM等 Six memory banks for ROM, SRAM, etc.
剩下的2个给ROM,SRAM,SDRAM等 Remaining two memory banks for ROM, SRAM, SDRAM, etc .
— 7个bank控制器的开始地址是固定的 Seven fixed memory bank start address
— 最后一个bank控制器的开始地址是可自定义的 Adjustable start address for the last bank.
— 最后两个bank的大小是可编程的 Programmable bank size for the last two banks.
— 所有的bank 的存储周期是可编程的 Programmable access cycles for all memory banks
— 使用外部等待扩展总线周期 External wait to extend the bus cycles
— 支持自刷新和掉电模式的SDRAM Supporting self-refresh and power down mode for SDRAM
cpuwolf 2008-07-11
  • 打赏
  • 举报
回复
完全同意zenny_chen的说法。
MMU指CPU内部的。
内存控制器是控制,如SDRAM
zenny_chen 2008-07-03
  • 打赏
  • 举报
回复
MMU言下之意就是Memory Management Unit,通常提供外部存储器的访问权限、分页、Cache设置等操作。
MMU通常在核心芯片上。

内存控制器的话应该是对于某个存储器所持有的控制器,这个与一般外设的控制器(如DMA控制器)差不多,一般在片外。内存控制器个人理解为可以用来控制物理存储器的一些状态,比如对一个SDRAM进行刷新,或使其进入睡眠模式等。

MMU是对整个系统的存储构架体系的控制;而某个特定的存储器控制器(SDRAM、FLASH等)是针对特定存储器硬件而言的。

【课程简介】本课程是《Armv8/Armv9架构从入门到精通 第二期》中的第四章。建议购买大课程。本课程以为armv8-aarch64、armv9为基准,不涉及armv7及其以前的版本,也不涉及aarch32。本课程包含但不限于以下内容MMU的基础学习:啥是MMU?工作原理?MMU和cache之间的关系?及其怎样相互影响的?哪些是MMU硬件自动的行为?哪些是软件可配置的行为?地址空间基础:啥是虚拟地址空间?啥是物理地址空间?啥时memory-map? 代码程序中的虚拟地址空间是怎样的?arm core硬件决定的物理地址空间是怎样的?SOC memory-map时的地址空间是怎样的?具体的外设又是怎样的地址空间?Translation Regime:系统里有多少个MMU?系统里有多少个Translation Regime?他们之间的关系是怎样的?页表翻译:MMU是怎样翻译的?页表有几级?这些信息是怎么告诉MMU的,MMU又是怎样工作的,软件又需要怎样设计?stage1和stage2的区别和使用?Descriptor:啥是Descriptor、页表项、entry、条目、页表条目? Descriptor的格式是怎样的?每一个属性位是怎样的?MMU除了完成地址转换,属性权限的控制/cache的缓存策略是怎样配置的?optee中使用MMU的示例MMU深度思考篇:开启MMU瞬间可能出现的问题以及多种常用的解决方案。注意这里提到的是多种方案,绝大多数人只知道第一种,除此之外还有没有其它的设计方式? MMU关闭时cache的缓存策略会怎样?【思考】01、一个大系统中有多少个MMU ?02、一个ARM Core中有多少个Translation regime?03、EL1&0 Translation regime Stage2、EL2 Translation regime stage1、EL2&0 Translation regime stage1 这三者的区别是什么?04、TTBR1_EL2寄存器有啥特殊性,这个寄存器是给谁使用的?05、有没有TTBR1_EL3寄存器?为什么?06、什么是memory-map? 一个ARM的系统中,有几套物理地址空间?07、页表到底有几级? 页表最少可以有几级?页表最多可以有几级?08、页表有多大? 页表存放在哪里?页表由谁来管理?09、页表是否能放在cache中?10、什么是Translation Table walk? 什么是TLB?11、请简述页表查询的过程?12、在一个大系统中,物理地址是多少位的? 物理地址是多少位指的是什么?虚拟地址又是多少位的? 物理地址的位数和虚拟地址的位数都是由谁来决定的?13、请说明entry、descriptor、页表项、条目 这个四个词汇的由来?14、TCR中有缓存属性和共享属性、页表的entry中也有缓存属性和共享属性,这俩有什么区别?15、请简述TTBR0和TTBR1的概念和意义?16、请简述cacheability和shareability属性的含义?17、stage1和stage2有何区别?18、stage1和stage2的descriptor中,有很多重复的属性,当两者属性有冲突了怎么办?19、L1、L2、L2的descriptor中也有部分相同的属性,重复时怎么办?20、Descriptor的格式有哪几种?21、Descriptor的类型有哪几种?22、简述您所观察到的系统软件中(操作系统或hypervisor)的shareability和cacheability一般都是怎样配置的?23、开启一个MMU的步骤是怎样的?24、啥是flat map? 啥是full level table?25、页表中的AF属性位、DBM属性位分别是干啥的?26、页表中的nG属性位是干啥的?27、页表中的Contiguous属性位是干啥的?28、在开启MMU的瞬间会考虑哪些事情?【课程目录】当前21节课,6.8小时

21,597

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧