MMU 存储器管理单元
- 格式:doc
- 大小:25.50 KB
- 文档页数:1
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的内存空间内作为存放页表的内存地址。
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的一些说法进行全面评估,并撰写一篇有价值的文章。
1. 内存管理单元(MMU)是计算机系统中重要的组成部分,负责实现虚拟位置区域到物理位置区域的转换。
在现代计算机系统中,MMU 的作用十分重要,它可以有效地管理系统内存,并且保障程序之间的隔离和保护。
2. 内存管理单元(MMU)对系统性能有着重要的影响。
通过对虚拟位置区域到物理位置区域的映射,MMU可以提高内存访问效率,从而加速程序的执行速度。
3. 内存管理单元(MMU)在操作系统中起到关键作用,它能够实现内存的动态分配和回收,从而更好地满足不同程序的内存需求。
4. 内存管理单元(MMU)对系统的安全性和稳定性具有重要影响。
通过内存保护和访问权限控制等功能,MMU可以有效防止程序之间的干扰和非法访问,提高系统的稳定性和安全性。
5. 个人观点和理解:内存管理单元(MMU)是计算机系统中不可或缺的部分,它不仅可以提高系统的性能,而且能够保障系统的安全和稳定。
在未来的计算机发展中,MMU将继续发挥着重要作用。
总结回顾:通过对内存管理单元(MMU)的全面评估,我们深入了解了其在计算机系统中的重要作用和影响。
从虚拟位置区域到物理位置区域的转换,到内存访问效率的提升,再到系统安全性和稳定性的保障,MMU无疑是计算机系统中不可或缺的部分。
在未来的计算机发展中,我们需要更加重视对MMU的研究和应用,以更好地推动计算机系统的发展和进步。
内存管理单元(MMU)是计算机系统中不可或缺的重要组成部分,其作用不仅限于实现虚拟位置区域到物理位置区域的转换,还涵盖了内存保护和访问权限控制等功能。
在现代计算机系统中,MMU对系统性能、安全性和稳定性都有着重要的影响,其作用和意义愈发凸显。
关于虚拟位置区域到物理位置区域的转换,MMU的作用是至关重要的。
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(Memory Management Unit,内存管理单元)是计算机系统中的一种硬件设备,负责将逻辑地址转换为物理地址,实现虚拟内存和物理内存之间的映射和管理。
MMU的工作原理如下:
1. 虚拟地址转换:当CPU访问一个地址时,MMU首先接收到这个地址(即虚拟地址),然后根据内部的地址映射表将其转换为物理地址。
2. 地址映射表:MMU内部有一个地址映射表,它记录了虚拟地址和物理地址之间的对应关系。
这个表中的每一项称为页表项。
通常,虚拟地址被划分为若干个页面,而物理地址也被划分为相同的大小的内存块。
每个页表项记录了虚拟页面和物理页面之间的对应关系。
3. 地址转换:MMU根据地址映射表中的对应关系,将虚拟地址中的页号(Page Number)转换为物理地址中的页号,以及虚拟地址中的页面内偏移(Page Offset)转换为物理地址中的页面内偏移。
4. 访问权限控制:MMU还会根据地址映射表中的附加信息,如权限位,来判断对于特定的虚拟地址,是否允许对其进行读、写、执行等操作。
如果权限不足,则会触发异常或终止进程。
通过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芯片为例来说明具体使用。
详细解释下述术语的概念、功能及相互关系:虚拟地址、物理地址、MMU、页表、TLB、页框作业一1、详细解释下述术语的概念、功能及相互关系:虚拟地址、物理地址、MMU、页表、TLB、页框。
答:物理地址也叫实地址、二进制地址,它是在地址总线上,以电子形式存在的,使得数据总线可以访问主存的某个特定存储单元的内存地址。
虚拟地址也叫逻辑地址。
在和虚拟内存的计算机中,物理地址这个术语多用于区分虚拟地址。
尤其是在使用内存管理单元(MMU)转换内存地址的计算机中,虚拟和物理地址分别指在经MMU转换之前和之后的地址。
MMU是Memory Management Unit的缩写,中文名是内存管理单元,它是中央处理器(CPU)中用来管理虚拟存储器、物理存储器的控制线路,同时也负责虚拟地址映射为物理地址,以及提供硬件机制的内存访问授权。
页表是系统为保证进程的正确运行而建立的页面映像表。
分页转换功能由驻留在内存中的表来描述,该表称为页表(page table),存放在物理地址空间中。
页表实现从页号到物理块号的地址映射。
TLB:Translation lookaside buffer,即旁路转换缓冲,或称为页表缓冲。
页表存储在主存储器中,查询页表所付出的代价很大,TLB的使用就是为了减小由于使用页表而付出的访存代价。
CPU中添加了能自动把虚拟内存(即逻辑地址)地址转化为物理内存地址的电路,为了简化这种电路,就把RAM划分为长度为4KB或8KB的块,这种块就叫页框。
联系:为了实现多道程序的并发处理以及充分利用内存,将内存划分长度为4KB或8KB的页框,页表记录了页框到物理地址的映射,为了加快CPU通过查询页表访问内存速度,使用了TLB;MMU负责虚拟地址和物理地址的映射。
作业二1、嵌入式系统开发中为何有重定向程序?作用?答:嵌入式系统需要在交叉环境中开发,在嵌入式系统实际应用中,往往嵌入式系统和主机调试环境是独立的,嵌入式系统的输入输出与主机的调试环境的输入输出不同,而嵌入式系统又想使用标准输入输出中的库函数,这时就要使用重定向技术,将标准的输入输出重定向为嵌入式系统的输入输出。
最初的容错设计为存储器保护。
多年以来,微处理器一直带有片上存储器管理单元(MMU),MMU能使单个软件线程工作于硬件保护地址空间。
但是在许多商用实时操作系统中,即使系统中含有这些硬件也没采用MMU。
当应用程序的所有线程共享同一存储器空间时,任何一个线程将有意或无意地破坏其它线程的代码、数据或堆栈。
异常线程甚至可能破坏内核代码或内部数据结构。
例如线程中的指针错误就能轻易使整个系统崩溃,或至少导致系统工作异常。
就安全性和可靠性而言,基于进程的实时操作系统(RTOS)的性能更为优越。
为生成具有单独地址空间的进程,RTOS只需要生成一些基于RAM的数据结构并使MMU加强对这些数据结构的保护。
基本思路是在每个关联转换中“接入”一组新的逻辑地址。
MMU利用当前映射,将在指令调用或数据读写过程中使用的逻辑地址映射为存储器物理地址。
MMU还标记对非法逻辑地址进行的访问,这些非法逻辑地址并没有映射到任何物理地址。
这些进程虽然增加了利用查询表访问存储器所固有的系统开销,但其实现的效益很高。
在进程边界处,疏忽或错误操作将不会出现,用户接口线程中的缺陷并不会导致其它更关键线程的代码或数据遭到破坏。
目前在可靠性和安全性要求很高的复杂嵌入式系统中,仍然存在采无存储器保护的操作系统的情况,这实在有些不可思议。
采用MMU还有利于选择性地将页面映射或解映射到逻辑地址空间。
物理存储器页面映射至逻辑空间,以保持当前进程的代码,其余页面则用于数据映射。
类似地,物理存储器页面通过映射可保持进程的线程堆栈。
RTOS可以在每个线程堆栈解映射之后,很容易地保留逻辑地址所对应的页面内容。
这样,如果任何线程分配的堆栈发生溢出,将产生硬件存储器保护故障,内核将挂起该线程,而不使其破坏位于该地址空间中的其它重要存储器区,如另一线程堆栈。
这不仅在线程之间,还在同一地址空间之间增加了存储器保护。
存储器保护(包括这类堆栈溢出检测)在应用程序开发中通常非常有效。
采用了存储器保护,程序错误将产生异常并能被立即检测,它由源代码进行跟踪。
如果没有存储器保护,程序错误将导致一些细微的难以跟踪的故障。
实际上,由于在扁平存储器模型中,RAM通常位于物理地址的零页面,因此甚至NULL指针引用的解除都无法检测到。
/html/75/33042b5d3fce6f5cfe1951fd7be6b093.html。