MMU 存储器管理单元
ARM MMU L1 L2页表计算说明剖析

ARM的存储管理单元MMU知识点介绍 (1)ARM MMU 页表设置计算 (9)ARM的存储管理单元MMU知识点介绍由于ARM的MMU知识体系比较庞大,只总结必须知道了解的MMU知识点。
(一)MMU内存管理单元的作用(1)虚拟存储空间到物理存储空间的映射(2)存储器访问权限控制(3)设置虚拟存储空间的缓冲特性(二)MMU的地址变换的内存块单元(1)段单元:按大小为1M的内存块单元为单位进行的虚拟地址物理地址之间的变换。
第 1 页共47 页(2)大页单元:按大小为64K的内存块单元为单位进行的虚拟地址物理地址之间的变换。
(3)小页单元:按大小为4K的内存块单元为单位进行的虚拟地址物理地址之间的变换。
(4)极小页单元:按大小为1K的内存块单元为单位进行的虚拟地址物理地址之间的变换。
Linux在最初的汇编代码中使用段单元的映射机制来实现MMU的开启。
当Linux系统启动之后采用的是小页单元的映射机制,因为我们知道Linux把物理内存和虚拟内存的管理是按页来管理的,每个页大小为4k字节。
(三)MMU的地址变换方式(1)一级页表地址映射第 2 页共47 页一级页表地址段映射,是指按1M大小的内存块单元进行的地址映射,查找的过程就是找到页表基地址和当前需要转化的虚拟地址的高12位为索引的页目录项,由于每个目录项都是4字节对齐的,所以应该为:页表基地址+虚拟地址高12位X 4,从上图中可看出第 3 页共47 页一级描述符的地址总是4字节对齐的,即后两位为0.一级描述符地址中存放的是一级描述符,一级描述符的格式定义如下:映射实例:题目:把内存的地址从0x100000-0x200000空间映射成虚拟地址0xc0100000-0xc0200000的地址空间.(第一步)根据图1的介绍,我们先把内存虚拟地址右移20位:Table index = (0xc0100000>> 20) = 0xc01(第二步)我们打算用内存地址0x4000-0x8000的内存空间内作为存放页表的内存地址。
E500内核MMU介绍

MMU(Memory Management Units)内存管理单元mmu是处理器的重要组成部分,主要功能是将程序使用的虚拟地址转换为处理器硬件能够直接访问的物理地址。
mmu为系统软件设立了转换查找表以支持虚实地址的映射。
在这些查找表中将规定虚实地址的对应关系及访问控制等一系列信息。
系统软件将利用处理器提供的查找表完成虚实地址的映射。
E500内核mmu中共使用两个查找表TLB0(translation lookaside buffer)和TLB1来实现虚拟地址和物理地址的转换。
其中TLB0用来进行页式映射,而TLB1用来实现段式映射。
段式映射:采用段式映射可以直接使用硬件提供的TLB1查找表,而不使用在内存中的页表就可以完成虚实地址的转换。
这种虚实地址的转换的效率较高。
我们目前一般只使用TLB1实现虚实地址的转换。
在E500 V1内核中,TLB1中一共有16个Entry,其中每个Entry 能映射4KB~256MB大小的页面。
页式映射:使用TLB0和系统页表完成虚实地址的转换。
其中TLB0存放在E500内核中,而系统页表存放在主存储器中。
在E500 V1内核中,TLB0中一共有256个Entry,其中每个Entry只能固定映射4KB大小的页面。
因此在TLB0中最多只能保存256*4KB=1MB 大小的虚拟地址空间。
对于32位的PowerPC处理器,TLB0能直接映射的虚拟地址空间远远不够,不可避免的会出现TLB Miss异常,即处理器访问的地址空间不在TLB0的Entry 中。
当发生这种异常时,需要查找系统页表,获得与被访问虚拟地址对应的物理地址,并同步TLB0。
E500 V1内核的虚实地址转换:有上图可知,E500内核的41位虚拟地址由1位AS,8位PID和32位的EA组成。
AS位:在E500内核中根据AS位的不同将地址空间分为两种,分别为地址空间0和地址空间1。
AS=0对应地址空间0;AS=1对应地址空间1。
下列针对内存管理单元mmu的说法

下列针对内存管理单元mmu的说法内存管理单元(MMU)是计算机系统中重要的组成部分,负责实现虚拟位置区域到物理位置区域的转换,以及实现内存保护和访问权限控制等功能。
下面我将针对内存管理单元MMU的一些说法进行全面评估,并撰写一篇有价值的文章。
1. 内存管理单元(MMU)是计算机系统中重要的组成部分,负责实现虚拟位置区域到物理位置区域的转换。
在现代计算机系统中,MMU 的作用十分重要,它可以有效地管理系统内存,并且保障程序之间的隔离和保护。
2. 内存管理单元(MMU)对系统性能有着重要的影响。
通过对虚拟位置区域到物理位置区域的映射,MMU可以提高内存访问效率,从而加速程序的执行速度。
3. 内存管理单元(MMU)在操作系统中起到关键作用,它能够实现内存的动态分配和回收,从而更好地满足不同程序的内存需求。
4. 内存管理单元(MMU)对系统的安全性和稳定性具有重要影响。
通过内存保护和访问权限控制等功能,MMU可以有效防止程序之间的干扰和非法访问,提高系统的稳定性和安全性。
5. 个人观点和理解:内存管理单元(MMU)是计算机系统中不可或缺的部分,它不仅可以提高系统的性能,而且能够保障系统的安全和稳定。
在未来的计算机发展中,MMU将继续发挥着重要作用。
总结回顾:通过对内存管理单元(MMU)的全面评估,我们深入了解了其在计算机系统中的重要作用和影响。
从虚拟位置区域到物理位置区域的转换,到内存访问效率的提升,再到系统安全性和稳定性的保障,MMU无疑是计算机系统中不可或缺的部分。
在未来的计算机发展中,我们需要更加重视对MMU的研究和应用,以更好地推动计算机系统的发展和进步。
内存管理单元(MMU)是计算机系统中不可或缺的重要组成部分,其作用不仅限于实现虚拟位置区域到物理位置区域的转换,还涵盖了内存保护和访问权限控制等功能。
在现代计算机系统中,MMU对系统性能、安全性和稳定性都有着重要的影响,其作用和意义愈发凸显。
关于虚拟位置区域到物理位置区域的转换,MMU的作用是至关重要的。
存储管理单元MMUⅣ

知识产权核(IP核, intellectual property)
识产权知识产权(IP) 电路或核是设计好并经过 验证的集成电路功能单元
IP复用意味着设计代价降低(时间,价格) IP核的类别:
微处理器微处理器: ARM, PowerPC; 存储器存储器: RAM, memory controller; 外设: PCI, DMA controller; 多媒体处理: MPEG/JPEG ; encoder/decoder ; 数字信号处理器(DSP) 通信: Ethernet controller, router,
嵌入式系统原理与接口技术
嵌入式系统的软/硬件框架
功能层 软件层 中间层 硬件层
应用程序
文件系统
图形用户 接口
任务管理
实时操作系统(RTOS)
BSP/HAL 硬件抽象层/板极支持包
D/A
通用接口
A/D
嵌入式 微处理器
ROM
I/O
SDRAM
人机交互接口
嵌入式计算机系统
嵌入式系统硬件基础
冯·诺依曼体系结构和哈佛体系结构 CISC与RISC IP 核 流水线 存储器系统
ARM7TDMI核以后,T变种的ARM微处 理器有两种工作状态:
ARM状态 Thumb状态。
ARM与Thumb状态转换
在程序的执行过程中,微处理器可以随时在两种工作状态之 间切换,并且该转变不影响处理器的工作模式和相应寄存器中的 内容。
进入Thumb状态:当操作数寄存器的状态位(位[0])为1时,执行BX指令。 进入ARM状态:当操作数寄存器的状态位(位[0])为0时,执行BX指令。
ARM公司本身不生产芯片,转让设计许可,由合作公司生产 各具特色的芯片。
ARM存储管理单元MMU和存储保护单元MPU

ARM存储管理单元MMU和存储保护单元MPU展开全文MMU提供的一个关键服务是,能使各个任务作为独立的程序在其自己的私有存储空间运行.地址转换过程允许运行的多个程序使用相同的虚拟地址,而各自存储在物理存储器的不同位置.区域可以是活跃的,也可以是睡眠的:活跃区域包含当前系统正在使用的代码或数据;睡眠区域包含当前不使用,但可能在短时间内变为活跃的代码或数据.睡眠区域是被保护的,因此当前正在运行的任务是不能访问的.MPU和MMU的主要区别是,MMU中增加了额外的硬件,以支持虚存.一个重定位寄存器只能转换一块存储空间.这块存储空间的大小由虚拟地址的偏移量部分所占的位数所决定.ARM的MMU中临时存放转换数据的一组重定位寄存器实际上是一个由64个重定位寄存器组成的全相联cache.这个cache就是转换旁路缓冲器--TLB.TLB缓存最近被访问的页的转换数据.MMU 还使用主存中的表来存放描述系统中用到的虚拟存储器映射数据,这些转换数据的表就是页表.页表中的每个项代表了将虚拟存储器的一个页转换到物理存储器的一个页帧所需要的所有信息.在MMU中,区域被定义为一组页表的集合,并作为虚存中的连续页完全由软件控制.除了L1一级页表外,所有其他的页表都代表虚存的1MB空间.如果一个区域的大小大于1MB或者它跨过页表的1MB边界地址,那么就必须使用一组页表来描述这个区域.页表可以驻留在存储器中,而不必映射到MMU硬件.当在2个应用程序任务间实现上下文切换时,处理器其实要发生多次上下文切换.它先从用户模式任务切换到内核模式任务,以处理准备运行下一个应用程序任务时的上下文数据的移动;然后,它从内核模式任务切换到下一个上下文的新的用户模式任务.MMU在转换一个地址时失败,就会产生一个中止异常.MMU只有在转换失败,权限错误和域错误时,才会中止.L1住页表包含2种类型的页表项:保存指向二级页表起始地址指针的页表项和保存用于转换1MB页的页表项.L1页表也称为段页表.当L1页表作为页目录时,其页表项包含的是1MB虚拟空间的L2粗页表或L2细页表指针;当L1页表用于转换一个1MB的段时,其页表项包含的是物理存储器中1MB页帧的首地址.目录页表项和1MB的段页表项可以共存于L1主页表.CP15:c2寄存器保存转换表基地址TTB--指向L1主页表在虚存中的位置.TLB只支持两种类型的命令:清除TLB和锁定TLB中的转换数据.存储器访问时,MMU将虚拟地址的一部分与TLB中的所有值进行比较.如果TLB中已有所要的转换数据,即为一次TLB命中,则由TLB提供物理地址的转换数据.如果TLB中不存在有效的转换数据,即为一次TLB失效,则MMU会由硬件自动处理TLB失效,通过主存中的页表搜索有效的转换数据,并将其装入TLB的64行的一行.如果TLB中的某一行是锁定的,则当TLB清除命令发出时,它仍然保留在TLB中.在受保护的系统中,主要有两类资源需要监视:存储器系统和外围设备.存储器中对区域的访问可以是读/写,只读或不可访问,基于当时的处理器模式--管理模式或用户模式,还有一些附加的权限.区域还有控制cache和写缓冲器属性的cache写策略.当处理器访问主存的一个区域时,MPU比较该区域的访问权限属性和当时的处理器模式.如果请求符合区域访问标准,则MPU允许内核读/写主存;如果存储器请求导致存储器访问违例,则MPU产生一个异常信号.区域与内核是冯.诺依曼结构还是哈佛结构无关.每个区域通过0~7的号码来标识和引用.区域的属性如下:(1)区域可以相互重叠;(2)每个区域都分配有一个优先级,该优先级与分配区域的权限无关;(3)当区域重叠时,具有最高优先级的区域的属性可以覆盖其他区域的属性,优先级仅作用于重叠部分的地址;(4)区域的起始地址必须是其大小的倍数;(5)区域的大小可以是4KB~4GB之间的任何2的乘幂;(6)访问所定义区域外的存储器将产生异常.如果是内核预取指令,则MPU产生预取指令中止异常;如果是存储器数据请求,则产生数据中止异常.在启用存储器保护单元之前,必须至少定义一个数据区域和一个指令区域,而且必须在启用cache和写缓冲器之前(或同时)启用存储器保护单元.控制器通过设置CP15的主寄存器c1~5来配置MPU.通过配置寄存器c2和c3来设置区域的cache和写缓冲器的属性,寄存器c5控制区域的访问权限,在寄存器c6里有8个或16个次寄存器用来定义每个区域的大小和位置.初始化MPU,cache和写缓冲器需要以下步骤:(1)使用CP15:c6来定义指令和数据区域的大小和位置(2)使用CP15:c5来设置每个区域的访问权限(3)分别使用CP15:c2和CP15:c3来设置每个区域的cache和写缓冲器属性(4)使用CP15:c1来使能cache和MPU每个内核有3个CP15寄存器用来控制区域的cache和写缓冲器属性.其中CP15:c2:c0:0和CP15:c2:c0:1两个寄存器保存D- cache和I-cache区域属性;第三个寄存器,CP15:c3:c0:0用于保存区域写缓冲器属性,并应用于存储器数据区域.当配置数据区域时,区域的cache位和写缓冲器位一起决定区域的策略.写缓冲器位有2个用途:使能和禁止区域的写缓冲器和设置区域的cache策略.区域的cache位控制写缓冲器位的作用.当cache位为0时,写缓冲器位为1,则使能写缓冲器;写缓冲器位为0,则禁用写缓冲器.当cache位为1时,cache和写缓冲器都被使能,此时写缓冲器位决定cache策略.若写缓冲器位为0,则区域使用直写策略;若写缓冲器位为1,则区域使用回写策略.。
简单介绍MMU的工作原理

简单介绍MMU的工作原理
MMU(Memory Management Unit,内存管理单元)是计算机系统中的一种硬件设备,负责将逻辑地址转换为物理地址,实现虚拟内存和物理内存之间的映射和管理。
MMU的工作原理如下:
1. 虚拟地址转换:当CPU访问一个地址时,MMU首先接收到这个地址(即虚拟地址),然后根据内部的地址映射表将其转换为物理地址。
2. 地址映射表:MMU内部有一个地址映射表,它记录了虚拟地址和物理地址之间的对应关系。
这个表中的每一项称为页表项。
通常,虚拟地址被划分为若干个页面,而物理地址也被划分为相同的大小的内存块。
每个页表项记录了虚拟页面和物理页面之间的对应关系。
3. 地址转换:MMU根据地址映射表中的对应关系,将虚拟地址中的页号(Page Number)转换为物理地址中的页号,以及虚拟地址中的页面内偏移(Page Offset)转换为物理地址中的页面内偏移。
4. 访问权限控制:MMU还会根据地址映射表中的附加信息,如权限位,来判断对于特定的虚拟地址,是否允许对其进行读、写、执行等操作。
如果权限不足,则会触发异常或终止进程。
通过MMU的工作,操作系统可以实现虚拟内存的概念。
虚拟内存可以将大于物理内存的程序部分存储在辅助存储设备上,而只将当前需要的部分调入物理内存中,从而实现更高效的内存管理和更大的可用内存空间。
BCM芯片MMU浅析

MMU浅析1.MMU是什么?MMU(Memory Management Unit)内存管理单元,位于bcm芯片的入口逻辑和出口逻辑中间,负责包的缓存和调度。
芯片接收到数据包之后先存储在缓存中,即CBP(cell buffer pool),然后再发送时加以调度。
一个芯片所拥有的cell个数是有限制的,每个cell大小是128byte,每个包进入芯片后占用一个或者多个cell,例如一个64byte到128byte大小的包就占用一个cell,一个1408byte到1536byte的包就占用12个cell,每个芯片cell总大小不一,如何把这些有限的cell分配和使用是提高BCM芯片转发能力和效率的关键。
2.MMU工作机制MMU在芯片中主要有两种分配方式,动态和静态,每个出端口有8个cos,每个cos有使用的静态阈值,当然也有公共部分的cell,同时每个端口也有公共cell 的动态阈值。
对于某个cos,在使用的cell超过静态阈值的时候就需要共享动态cell,如果使用的动态cell超过本端口cell的共享阈值或者整个动态区的cell使用超过阈值,那么这个端口就会进入hold状态,造成丢包。
每个入端口也有自己的cell限制阈值,当入端口的数据包计数超过该端口的阈值之后,端口就会进入阻塞态,就会发送pause帧。
芯片的buffer是有限的,一个包在入口被计数,在出口也被计数。
3.MMU寄存器PORT_MIN:针对入端口,每个端口所拥有cell的最小保证数量,静态PORT_SHARED_LIMIT:入端口,每个端口所能使用的共享区cell的数量,超过此阈值,端口就会发pause 帧TOTAL_SHARED_LIMIT:公共区的动态cell个数限制OP_BUFFER_SHARED_LIMIT:针对出端口,出口所能共享到的cell个数OP_QUEUE_CONFIG:配置出口cos的寄存器,其中Q_MIN是配置每个出口cos所拥有的最小保证数量,静态OP_SHARED_LIMIT:每个出口8个cos所能共享的cell阈值还有其他很多可配置寄存器,下面以56820芯片为例来说明具体使用。
ARM存储系统MMU

编码 0b00 0b01
访问类型 没有访问权限 客户类型
0b10 保留 0b11 管理者权限
含义 这时访问域将产生访问失效
根据页表中地址变换条目的访问权限控制位决定是否 允许特定的存储访问。 将产生不可预知的结果 不会产生访问失效
23
关于快表的操作
1. 使无效快表的内容(由CP15中的C8控制)
指令 MCR p15,0,Rd,c8,c7,0 MCR p15,0,Rd,c8,c7,1 MCR p15,0,Rd,c8,c5,0 MCR p15,0,Rd,c8,c5,1 MCR p15,0,Rd,c8,c6,0 MCR p15,0,Rd,c8,c6,1
不能访问
0b00 0 1 只读
只读
0b00 1 1 不可预测 不可预测
0b01 X X 读/写 不能访问
0b10 X X 读/写 只读
0b11 X X 读/写 读/写
22
MMU中的域
域是段、大页和小页的集合。ARM 结构支持16 个域。
对域的访问由域访问控制寄存器( CP15的寄存器C3 )的两 个位字段控制。即,C3中的每2位控制一个域的访问控制特 性。其编码及含义如下表:
Rd 0 虚拟地址 0 虚拟地址 0 虚拟地址
含义 使无效指令和数据Cache 使无效整个Cache中的单个地址变换条目 使无效指令Cache 使无效指令Cache中的单个地址变换条目 使无效数据Cache 使无效数据Cache中的单个地址变换条目
2. 锁定快表的内容(由CP15中的C10控制)
24
CP15中的寄存器C1
F(bit[10]): 由生产商定义。 Z(bit[11]): 使能跳转预测, 0 = 禁止, 1 = 使能。 I(bit[12]): 当数据和指令cache分开时,使能指令cache。 0 = 禁
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
最初的容错设计为存储器保护。
多年以来,微处理器一直带有片上存储器管理单元(MMU),MMU能使单个软件线程工作于硬件保护地址空间。
但是在许多商用实时操作系统中,即使系统中含有这些硬件也没采用MMU。
当应用程序的所有线程共享同一存储器空间时,任何一个线程将有意或无意地破坏其它线程的代码、数据或堆栈。
异常线程甚至可能破坏内核代码或内部数据结构。
例如线程中的指针错误就能轻易使整个系统崩溃,或至少导致系统工作异常。
就安全性和可靠性而言,基于进程的实时操作系统(RTOS)的性能更为优越。
为生成具有单独地址空间的进程,RTOS只需要生成一些基于RAM的数据结构并使MMU加强对这些数据结构的保护。
基本思路是在每个关联转换中“接入”一组新的逻辑地址。
MMU利用当前映射,将在指令调用或数据读写过程中使用的逻辑地址映射为存储器物理地址。
MMU还标记对非法逻辑地址进行的访问,这些非法逻辑地址并没有映射到任何物理地址。
这些进程虽然增加了利用查询表访问存储器所固有的系统开销,但其实现的效益很高。
在进程边界处,疏忽或错误操作将不会出现,用户接口线程中的缺陷并不会导致其它更关键线程的代码或数据遭到破坏。
目前在可靠性和安全性要求很高的复杂嵌入式系统中,仍然存在采无存储器保护的操作系统的情况,这实在有些不可思议。
采用MMU还有利于选择性地将页面映射或解映射到逻辑地址空间。
物理存储器页面映射至逻辑空间,以保持当前进程的代码,其余页面则用于数据映射。
类似地,物理存储器页面通过映射可保持进程的线程堆栈。
RTOS可以在每个线程堆栈解映射之后,很容易地保留逻辑地址所对应的页面内容。
这样,如果任何线程分配的堆栈发生溢出,将产生硬件存储器保护故障,内核将挂起该线程,而不使其破坏位于该地址空间中的其它重要存储器区,如另一线程堆栈。
这不仅在线程之间,还在同一地址空间之间增加了存储器保护。
存储器保护(包括这类堆栈溢出检测)在应用程序开发中通常非常有效。
采用了存储器保护,程序错误将产生异常并能被立即检测,它由源代码进行跟踪。
如果没有存储器保护,程序错误将导致一些细微的难以跟踪的故障。
实际上,由于在扁平存储器模型中,RAM通常位于物理地址的零页面,因此甚至NULL指针引用的解除都无法检测到。
/html/75/33042b5d3fce6f5cfe1951fd7be6b093.html。