内存管理(硬件编程)
内存管理(硬件编程)
一、什么是MMU
早期的CPU(比如8086),或者现在使用的MCU(单片机),程序是直接运行在物理内存上的(SDRAM或者NORFlash)。程序在运行过程中通过总线访问的数据,读写的地址都是物理地址。例如,程序计数器PC中的值就是预取指令所在的物理内存的地址值。
冯诺依曼计算机模型
这种方式比较容易实现硬件电路的设计,程序的处理逻辑也比较简单,但是并不适应于复杂的系统,尤其是拥有多任务的OS。我们首先看看原来的方式有哪些不足和缺陷。
物理内存不足。例如,某个程序运行需要64K的内存,而机器上只有32K的物理内存。
程序运行的地址不确定。同一个程序,每次被装载到内存的地址可能不一样。
内存使用率低。需要运行某个程序,就需要将整个程序装入内存才能够运行。
无法支持多任务。存在进程间地址空间不隔离的问题,或者一个任务失败了,可能会导致整个系统宕机。
然而随着计算机科学技术的发展,所需解决的问题越来越复杂,单任务批处理已不能满足需求了。而且应用程序需要的内存量也越来越大。而且伴随着多任务同时处理的需求,这种技术架构已然不能满足需求了。在这样的背景下,MMU应运而生,也由此可见,任何一项技术的发展壮大,都必然是需求驱动的。MMU(MemoryManagementUnit)主要用来管理虚拟存储器、物理存储器的控制线路,同时也负责虚拟地址映射为物理地址,以及提供硬件机制的内存访问授权、多任务多进程操作系统。
如果处理器启用了MMU,CPU执行单元发出的内存地址将被MMU截获,从CPU到MMU的地址称为虚拟地址(VirtualAddress,以下简称VA),而MMU将这个地址翻译成另一个地址发到CPU芯片的外部地址引脚上,也就是将VA映射成PA,如下图:
MMU硬件电路的作用
二、MMU的具体功能
1、页表的映射转换
MMU的主要功能是虚拟地址到物理地址的转换。但凡映射都要解决两个问题:映射的最小单位(粒度)和映射的规则。
a、虚拟地址空间划分成称为页(page)的单位,而相应的物理地址空间也被进行划分,单位是页框(frame),页和页框的大小必须相同。映射的最低粒度是单个虚拟页到物理页,页大小通常是4K,即一次最少要把4K大小的VA页块整体映射到4K的PA页块(从0开始4K对齐划分页块),页内偏移不变。
比如:VA的一页0x300040000x30004fff被映射到PA的一页0x000080000x00008fff,当CPU执行单元访问虚拟地址0x30004008,实际访问的物理地址是0x00008008(0x30004008和0x00008008分别位于虚实两套地址空间,互不相干,不存在重叠和冲突)。以页为最小单位,就是不能把VA中某一页划分成几小块分别映射到不同PA,也不能把VA中属于不同页的碎块映射到PA某一页的不同部分,必须页对页整体映射。
b、MMU软件配置的核心是页表(PageTable),它描述MMU的映射规则,即虚拟内存哪(几)个页映射到物理内存哪(几)个页帧。页表由一条条代表映射规则的记录组成,每一条称为一个页表条目(PageTableEntry,即PTE),整个页表保存在片外内存,MMU通过查找页表确定一个VA应该映射到什么PA,以及是否有权限映射。
c、如果MMU每次地址转换都到位于外部内存的页表上查找PTE,转换速度就会大大降低,于是出现了TLB。TLB(TranslationLookasideBuffers)即转换快表,又简称快表,可以理解为MMU内部专用的存放页表的cache,保存着最近使用的PTE乃至全部页表。MMU接收到虚拟地址后,首先在TLB中查找,如果找到该VA对应的PTE就直接转换,找不到再去外存页表查找,并置换进TLB。TLB属于片上SRAM,访问速度快,通过TLB缓存PTE可以节省MMU访问外存页表的时间,从而加速虚实地址转换。TLB和CPUcache的工作原理一样,只是TLB专用于为MMU缓存页表。
地址转换的整个过程
2、MMU的内存保护功能
既然所有发往内存的地址信号都要经过MMU处理,那让它只单单做地址转换,岂不是浪费了这个特意安插的转换层?显然它有能力对虚地址访问做更多的限定(就像路由器转发网络包的同时还能过滤各种非法访问),比如内存保护。可以在PTE条目中预留出几个比特,用于设置访问权限的属性,如禁止访问、可读、可写和可执行等。设好后,CPU访问一个VA时,MMU找到页表中对应PTE,把指令的权限需求与该PTE中的限定条件做比对,若符合要求就把VA转换成PA,否则不允许访问,并产生异常。
三、操作系统对MMU的管理
实际上MMU是为满足操作系统越来越复杂的内存管理而产生的。OS和MMU的关系简单说:
1、系统初始化代码会在内存中生成页表,然后把页表地址设置给MMU对应寄存器,使MMU知道页表在物理内存中的什么位置,以便在需要时进行查找。之后通过专用指令启动MMU,以此为分界,之后程序中所有内存地址都变成虚地址,MMU硬件开始自动完成查表和虚实地址转换。
2、OS初始化后期,创建第一个用户进程,这个过程中也需要创建页表,把其地址赋给进程结构体中某指针成员变量。即每个进程都要有独立的页表。
3、用户创建新进程时,子进程拷贝一份父进程的页表,之后随着程序运行,页表内容逐渐更新变化。
4、系统处理内存寻址,这个过程由操作系统进行管理和维护,保证流程的正常进行。
内存寻址总览图
上图是一个内存管理的硬件结构,处理流程:
a、cpu发起一个寻址的请求,由MMU接受处理;
b、如果MMU在TLB缓冲中找到,则直接用映射后的物理地址,去主内存读取;如果没有找到,则需要从当前进程的页表中查询,如果找到则返回更新TLB;
c、如果页表中没有,发现虚拟地址还没有分配物理地址空间的时候,会触发缺页中断,此时会去查看这段虚拟地址对应的磁盘文件内容,将其加载到内存中,在页表中建立起映射关系,程序就可以继续执行了。
总结
了解了地址转换的流程,VA到PA的映射过程就一目了然:MMU得到VA后先在TLB内查找,若没找到匹配的PTE条目就到外部页表查询,并置换进TLB;根据PTE条目中对访问权限的限定检查该条VA指令是否符合,若不符合则不继续,并抛出exception异常;符合后根据VA的地址分段查询页表,保持offset(广义)不变,组合出物理地址,发送出去。
夜空烟花绽放作文600字夜幕笼罩着大地,缓缓飘移地云,正在慢慢地挪移而变换着月亮的位置。似乎月亮在行走,捉弄仰望夜空的人,迷离这场夜的幸福盛宴。忽地的声鸣,惊吓夜下人。抬头闻声去,那烟花,漫天幸……
我的自画像今天上午,我拿出了彩笔、勾线笔、画板和美术纸,我这是要干什么呢?哦,原来我是想为自己画一张画像啊。怎么才能看到自己呢?我想出了一个好主意把卧室的小镜子拿过来放在画板的旁边……
数码知识三星s20如何关闭高清通话怎么关闭hd高清通话如今使用IT数码设备的小伙伴们是越来越多了,那么IT数码设备当中是有很多小技巧的,这些技巧很多小伙伴一般都是不知道如何来实用的,就好比最近就有很多小伙伴们想要知道三星s20如何……
支付宝蚂蚁庄园小鸡问答囤了大量的牛羊肉过年用储存时最好怎么做相信现在大家对于小鸡庄园每日问答都是非常关心的吧,并且近期发现很多小伙伴都很想知道囤了大量的牛羊肉过年用储存时最好怎么做游侠手游这个问题,那么既然现在小伙伴们对于囤了大量的牛羊……
数码知识vivox60怎么查看通知栏通知栏在哪里如今使用IT数码设备的小伙伴们是越来越多了,那么IT数码设备当中是有很多小技巧的,这些技巧很多小伙伴一般都是不知道如何来实用的,就好比最近就有很多小伙伴们想要知道vivox60……
教大家手机短信怎么备份到另外一个手机相信现在有很多小伙伴都想要知道手机短信怎么备份到另外一个手机的一些相关信息吧,因为当我们了解到手机短信怎么备份到另外一个手机的一些相关信息之后,我们就可以更简单的来操作自己的设……
在离开前留下今晚终于可以不用备课两个星期终于可以喘息一下虽然明天开始又要继续昨天的班会课很开心回想起来总让我偷笑虽然时间不长但那种跟学生们一起大笑的感觉……
离歌这几天心情比较复杂本来这个周是总结周我们可以不用去班里看的但是每天还是习惯性地往五楼爬时间不多能珍惜就珍惜吧周一到周三还是备课上课帮老师改了几组作……
汽车漂移原理(汽车漂移技术的基本原理和产生方法)汽车漂移原理(汽车漂移技术的基本原理和产生方法)汽车漂移的基本塬理:汽车漂移的完美完成还要有一个前提保持前轮的抓地力。1。行驶中不使前轮与地面间有很大的速度差(一般……
朋友不会丢,是自己的心丢了!今天和一个很多年没见的老朋友聊天。非常有意思的一个朋友,幽默、搞笑、上大学的时候关系也很好的。聊的时候问他有没有另外一个朋友的消息,他说没有。我就自己抱怨自己说,都怪自己上了那……
心情一般今天有点心情写点垃圾,虽说开要回去开会了,但是我能吹就吹。来大学多久也不记得了,不看日历不记得那种,同学们各飞东西了,好想他们。好怕被人忘记,想起以前一起通宵,一起……
关于环境的作文保护我们的地球母亲今天,我把安艺写的《地球母亲生病了》这篇文章读完了,这篇文章让我受益匪浅、感慨万分。这篇文章的主要内容是:地球母亲在痛苦地呻吟,用颤抖的声音呼唤着她得了脱发症。由于人们肆……
為什麼?這位有心人等等。有什麼事嗎?我們剛剛到這裡,在這裡找人,到現在還沒有找到我們要找的那個人,你行行好,給我們點錢,不要多少,給孩子買點麵包吃就好了。一天的勞累,……
荿萇泩萿屍匄壹年壹年,蔓蔓長大,蔓蔓變老,看清了很哆,失去了很哆。不管哪麽哆,反正現茬還活著,活著就可似做很哆事。就這洋,壹矗壹矗的活下去,真好。當我出生,身邊的人都茬笑……
我的书目录艺术:世界现代建筑史世界当代艺术史世界平面设计史世界现代设计史世界时装史西方美学史中国美学史美学散步哈喽中产执意纯粹纵情现代产品的故事建筑的故事白夜北欧微风吹过圣芭芭拉骨子里的……
小学六年级有关于中秋节的作文【篇一】中秋那天晚上,月亮是那样的圆。人们总是说ldquo;十五的月亮十六圆rdquo;。可今年八月十五的月亮要比十六的圆。星星也是那样的多,那无数的星星围绕着圆月。有些……
出警2上个星期一,青田北山移民闹访县政府,我们为保卫它早上6点就起床上班七点赶到政府门前呆着,以防闹事,公安分几批民警负责到外头护卫隔时间换班武警呆里面防止大事情我们就没大事呆里面坐……
不知道怎么爱话不知道该怎么样说,我们都为对方不理解自己而痛苦。我们从认识到现在你有主动邀请过我来耍吗?有一次是你叫我坐老冉的车说你过来就坐他的车来嘛那是我们开始的第2天,我不理解,我知道我……
翟鸿燊语录(翟鸿燊口才训练)翟鸿燊语录(翟鸿燊口才训练)1。你说话所产生的效果完全取决于对方给你的回应2。一个人的不成功源于朋友太少和质量不好3。只要灵魂还在,一个企业的组织建设就会在……
我们骄傲,因为我们独自在国外!献给所有留学在外的朋友们,也借此文让对留学生有扭曲理解的人有多些的了解这篇文章也是我从朋友的空间里复制下来的,一来可以让大家更了解我们独自在国外的真实生活,二来嘛也可以让……
狐自在的09年PLAN初,傲寒踏零度低温,嗷嗷而至。欣喜中,日夜倾心以顾,月余,减肥15斤。shy;为人父时,实感生命不易与无常,其间,常思物质万物的轮回与转化,一方面是神奇而有规律,另一方面……
渺渺薄翼自在飞在公交站台等车,翘首以盼,怎奈车许久不来。等待的目光远比夏日的热浪炽烈,百无聊赖间,无意将目光投向树荫下的几朵阴凉里。蓦然发现,一发新绿的矮榆枝头,轻轻落着一只精致的红蜻蜓。……
驻足最后一站驻足最后一站停留,我只愿为你停留,只愿你成为我的最后一站。2009713等待,我只愿为你等待,只愿等待看到你那美丽的笑容,只愿为你在心中保留一块净土。未来努力,我只……
对天下名器的遐想昨儿在网上看到一文章,是说公知的,说这词儿现在有点滑向民国末期先生的称呼,虽然还不至于滑向邓大爷拉开国门后某段时间对小姐的称呼,这个我老人家因为不是那个圈子里的人确切地讲我老人……