(微电子学与固体电子学专业论文)支持linux操作系统的存储器管理单元设计研究.pdf_第1页
(微电子学与固体电子学专业论文)支持linux操作系统的存储器管理单元设计研究.pdf_第2页
(微电子学与固体电子学专业论文)支持linux操作系统的存储器管理单元设计研究.pdf_第3页
(微电子学与固体电子学专业论文)支持linux操作系统的存储器管理单元设计研究.pdf_第4页
(微电子学与固体电子学专业论文)支持linux操作系统的存储器管理单元设计研究.pdf_第5页
已阅读5页,还剩63页未读 继续免费阅读

(微电子学与固体电子学专业论文)支持linux操作系统的存储器管理单元设计研究.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

支持l i n u x 操作系统的 存储器管理单元设计研究 摘要 随着家庭网络核心平台的硬件系统日趋完善,提升原有的u c o s 一1 i 操作系统来 实现更强的管理功能已经显得十分必要。在众多备选方案中,完全开源免费的l i n u x 操作系统具有很强的竞争力,它能够支持多用户、多进程,对存储器的访问权限进 行检测,同时l i n u x 操作系统已经被成功移植到众多的硬件平台,具有良好的可移 植性,这些都成为本文将l i n u x 列为目标系统的原因。 为了实现l i n u x 操作系统在现有家庭网络核心s o c 平台上的运行,必须完成软、 硬件两个方面的工作。首先,必须为该平台中的3 2 位嵌入式处理器s r i s c 增加一 款存储器管理单元( m m u ) 。该存储器管理单元能够完成l i n u x 操作系统所需的内 存控制功能,同时协助操作系统实现内存管理的异常响应机制。其次,还必须对 m i p s 平台上的现有l i n u x 操作系统内核进行移植,加入和家庭网络核心平台相关的 硬件信息。 本文针对家庭网络核心的现有硬件平台,为其开发了支持l i n u x 操作系统的存 储器管理单元,能够完成该操作系统所需的地址分段映射、硬件查询两节页表、存 储权限控制等功能,同时该m m u 还能与系统中原有的全定制两级快表( t l b ) 紧 密配合,在快表命中时快速取得所需的物理地址。本文采用g c c 编译器对经过移 植的l i n u x 内核进行编译,内核版本为l i n u x - 2 4 1 8 。 在通过p l i 接口实现的软硬件集成验证平台上,l i n u x 内核已经能够顺利运行并 完成初始化。 关键词:家庭网络核心平台:m m u ;存储器管理单元;软硬件协同设计;系统集 成;l i n u x ;操作系统;快表;地址映射;异常响应 a b s t r a c t w i t ht h ed e v e l o p m e n to f h a r d w a r es y s t e mi nt h eh o m e n e ts o cp l a t f o r m ,i ti sq u i t e n e c e s s a r yt oi m p r o v et h ec u r r e n tu c o s - i io p e r a t i n gs y s t e mt ou p g r a d et h ec o n t r o l l i n g f u n c t i o n a l i t y a m o n gv a r i o u sc h o i c e s ,l i n u xi st h em o s tc o m p e t i t i v eo n e w h o s es o u r c e c o d ei st o 酬i yo 弘na n d & e l 抽u xc o u f ds u p p o nm u 婚u s e r8 f dm u n i i 也f e a da | i a c l j o n a n dc o n t r o lt h ea c c e s s i b i l i t yt ot h em e m o r ys p a c e m e a n w h i l e ,l i n u xh a sa l r e a d yb e s u c c e s s f u l l yp o r t e do n t od i f f e r e n th a r d w a r ep l a t f o r ms u c ha sa r ma n dm i p s ,s oi t s p o r t a b i l i t yi se x c e l l e n tc o m p a r e dw i t ho t h e rc o m m e r c i a lo s a l lt h ea b o v er e a s o n sl e a dt o t h es e l e c t i o no fl i n u xa so u rt a r g e ts y s t e mi nt h i sp a p e r i no r d e rt om a k el i n u xr u no nc u r r e n th o m e n e ts o cp l a t f o r m ,b o t hh a r d w a r ea n d s o f t w a r ej o b sn e e dt ob ed o n e f i r s t ,t h e3 2 b i tr i s ce m b e d d e dp r o c e s s o rn e e d sa m e m o r ym a n a g e m e n tu n i tt oh a n d l ea l lt a s k sr e l a t e dt om e m o r ya c c e s s m m ui sa l s o r e s p o n s i b l ef o rg e n e r a t i n ge x c e p t i o n sd u et ou n l a w f u lm e m o r ya c c e s s i n g s e c o n d ,c u r r e n t l i n u xk e r n e lb a s e do nm i p sa r c h i t e c t u r en e e dt ob em o d i f i e d ,a d d i n gh o m e n e th a r d w a r e c o n f i g u r a t i o ni n f o r m a t i o ni n t ot h es o f t w a r e t h i sp a p e rd e s i g n e dam e m o r ym a n a g e m e n tu n i tw h i c hc o u l ds u p p o r tl i n u x o p e r a t i n g s y s t e m t h i sn e wd e s i g n e dm m u c o u l df i n i s ht h ef o l l o w i n gf u n c t i o n s :m e m o r y a d d r e s sm a p p i n gb yd i f f e r e n ta d d r e s ss p a c e s ,a c e s s i n gt h ep h y s i c a lp a g ei nt h em a i n m e m o r yb yh a r d w a r e ,c o n t r o l l i n gt h e f u l lc u s t o m d e s i g n e dt l ba n dg e n e r a t i n g e x c e p t i o n st oc p u w h e nt l bh i ti nt h ea d d r e s st r a n s l a t ep r o c e s s ,m m uc o u l dg e tt h e n e e d e dp h y s i c a la d d r e s sd i r e c t l y g c cc o m p i l e ri sa d o p t e dt oc o m p i l et h er e v i s e dl i n u x k e m e lf i l ew h i c hv e r s i o ni sl i n u x 2 4 18 t e s t e do nt h ev e r i f i c a t i o np l a t f o r mb a s e do np l i ,t h el i n u xk e m a lc o u l da l r e a d y f i n i s ht h ei n i t i a l i z a t i o np r o c e s s k e y w o r d s :h o m e n e ts o c p l a t f o r m ; m m u ;m e m o r ym a n a g e m e n tu n i t ; h a r d w a r e s o f t w a r ec o - d e s i g n ;s y s t e mi n t e g r a t i o n ;l i n u x ;o p e r a t i n gs y s t e m ;t l b 论文独创性声明 本论文是我个人在导师指导下进行的研究工作及取得的研究成果论文中 除了特别加以标注和致谢的地方外,不包含其他人或其它机构已经发表或撰写 过的研究成果其他同志对本研究的启发和所做的贡献均已在论文中作了明确 的声明并表示了谢意 作誊釜名:窒蟹整日期:建堕:! :! s 论文使用授权声明 本人完全了解复旦大学有关保留、使用学位论文的觌定。即:学校有权保 留送交论文的复印件允许论文被查阅和借阅:学校可以公布论文的全部或部 分内容可以采用影印、缩印或其它复制手段保存论文保密的论文在解密后 遵守此规定 作者签名:盎丝盔 导师签名:上斗l 日期:一兰堑z 二丛厂 第一章引言 第一章引言 1 1 家庭网络核心平台简介及其中的3 2 位r i s c 处理器简介 随着互联网技术的广泛应用和现代计算机技术的飞速发展,“家庭网络”这一概 念一经推出就得到了p c 及家电业的极大关注。1 9 9 4 年,家庭网络的概念首次在西 方国家提出,1 9 9 8 年少数发达国家开始了家庭网络的综合建设实验。1 9 9 9 年3 月, 比尔盖茨到中国推广“维纳斯计划”,希望专门为中国市场量身打造“机顶盒”产 品,用现有电视作为显示器,利用电话线为通道接入国际互联网。正是“维纳斯计 划”催生了中国的数字家庭网络概念。 8 6 3s o c 重点课题“家庭网络核心s o c 平台l ”主要研究的是家庭网络网关芯 片和家电控制芯片的s o c 平台开发技术,图1 1 是该平台的结构示意图。整个家庭 网络s o c 平台系统由网关端和家电端组成,图1 1 ( a ) 和( b ) 分别表示了这两个 s o c 的系统结构。网关端s o c 的核心3 2 位高性能嵌入式处理器采用的是2 0 0 2 年度 的8 6 3 s o c 专项重点课题“3 2 位高性能嵌入式c p u 及j a v a 协处理器开发”【i 】的研究 成果,另外还包含内部w i s h b o n e 总线和仲裁,两个以太网m a c ,u s b 主控制器, 以及其他一些外设接口电路,还有在这之上运行的pc o s 实时操作系统和应用软 件。 ( a ) 网关端s o c 系统结构 1 支持l i n u x 操作系统的存储嚣管理单元设计研究 第一章引言 ( b ) 家电端s o c 系统结构 图1 1 “家庭网络核心s o c 平台l ”系统结构 1 23 2 位r i s c 处理器s r i s c 及其流水线 “家庭网络核心s o c 平台1 ”中采用了被称为s r i s c 的3 2 位低功耗嵌入式处 理器,该处理器的指令集与m i p s 3 2 4 k e c 兼容( 不包含针对c a c h e 和m m u 的特权 指令) ,具有五级流水线。s r i s c 采用h a r v a r d 结构,指令总线核数据总线分离,具 有独立的指令快存( i c a c h e ) 和数据快存( d c a c h e ) 。该处理器目前运行u c o s i i 操作系统,能够胜任家庭网络核心中控制中枢的功能。表1 1 列举关于s r i s c 的总 体实现结果。 表1 1s r i s c 的总体实现结果 设计工艺 o 1 8 pm 1 1 8 vc m o s 工艺 s r i s c 最高频率 2 h h z 锑c i s c 电路规模1 5m i l l i o nt n n s i s t o m s r i s c 版图面积( 含p a d ) 4 f m 4 m m s r i s c 五级流水线结构如图1 2 所示,分别为取指( i ) 、执行( e ) 、访存( m ) 、 对齐及写回( w ) 。在各流水线阶段,s r i s c 的操作如下: 2 支持l i n u x 操作系统的存储器管理单元设计研究 干m l t ? l 第一章引言 厂 厂 厂 广 n flem aw ! i i a - fb v o a s 3 i 苎且爿氇避! s s 、 i li c a c h er e a ra u jo n i i i - t l b lld e cd a cd c 古c h ea l i a n lr e a w l il d - t l b i i 1 a c li a c 2 i 1 r l a d e 鲁v o a s s i i l m u liim d ur a gr e a w l i i ;: i i m u l t i 1 8 y 1 6c p am d i j r 国量 i l i m u i t i? 3 2 x 32 ic p am d u r e s i i 。, i s i a na d i u s tim d ur e 宴 d i v i de i 图1 2s r i s c 的五级流水线结构 取指( i ) 阶段的操作包括:前半个时钟周期完成虚拟地址到物理地址的 转换,同时在i c a c h e 中首先根据i n d e x 的值将相应s e t 的各路t a g 读出。后半个周 期根据t a g 判断i c a c h e 是否命中,命中则取出指令,否则c a c h em i s s 。 执行( e ) 阶段的操作包括:前半个周期从r e g i s t e rf i l e 中取出数据,同 时进行指令译码;后半个周期a l u 开始运算,或计算出l o a d s t o r e 的虚拟地址,或 计算出b r a n c h 指令的目标地址并确定是否跳转,或开始乘法、除法运算;同时给出 新的p c 值,新的p c 值可能为累加、保持、跳转或选择中断向量。 访存( m ) 阶段的操作包括:前半个周期a l u 运算结束,或者访存指令 完成虚拟地址到物理地址的映射,可能有m m u 中的快表( t l b ) 不命中,同时在 d c a c h e 中首先根据i n d e x 值将相应s e t 的各路t a g 读出;后半个时钟周期根据t a g 判断是否命中,命中则取出数据,写入数据,否则c a c h em i s s ;乘法器、除法器继续 执行 对齐( a ) 阶段的操作包括:将l o a d 的数据完成字对齐;乘法、除法指 令完成。 写回( w ) 阶段的操作包括:数据写回寄存器堆,如果是乘法、除法指令 则写回h f l o 寄存器。 , 既有s r i s c 处理器核在流水线设计时并未充分考虑到l i n u x 操作系统由于内 存控制引起的各类异常,例如,在流水线的访存周期出现数据快表异常时,s r i s c 3 支持l i n u x 操作系统的存储器管理单元设计研究 第一章引言 并不会对这一异常进行正常响应。所以在为处理器核设计存储器管理单元的同时, 还必须对原有的异常响应机制进行修改,详见2 5 1 节。 有关s r i s c 处理器更详细的内容,可以参阅参考文献【2 】。 1 3 为家庭网络核心移植l i n u x 操作系统的意义 8 6 3s o c 重点课题“家庭网络核心s o c 平台l ”验收时所采用的操作系统为 u c o s i i 。u c o s i i 是一种免费公开源代码的操作系统,具有执行效率高,占用空 间小、实时性能优良和可扩展性强等特点,最小的内核可编译至2 k 。但随着家庭网 络核心平台中的外设不断增加、系统功能日趋复杂,u c o s i i 这种针对小型控制系 统的操作系统已经显得无法胜任,例如在u c o s i i 中很难实现对于多用户、多任务 的支持,进程调度和管理也十分简陋,用户进程之间没有保护机制。为家庭网络核 心平台移植一款功能更强,效率更高的操作系统,并开发能够支持该操作系统的s o c 功能模块就变得非常必要。 从八十年代起,国际上就有一些i t 组织、公司,开始进行商用嵌入式系统和 专用操作系统的研发。这其中涌现了一些著名的嵌入式系统,如m i c r o s o i t 公司的 w i n c e a 和w i n d r i v e rs y s t e m 公司的v x w o r k s l 4 就分别是非实时和实时嵌入式操作系 统的代表。但是这些商用产品的造价都十分昂贵,用于一般用途会提高产品成本从 而失去竞争力。考虑到以上因素,本文计划为现有家庭网络核心平台移植开放源代 码的l i n u x 操作系统,并为其设计支持该操作系统所需的存储器管理单元,这主要 是基于以下几个方面的考虑: 完全免费。l i n u x 是一款免费的操作系统,用户可以通过网络或其他途径 免费获得,并可以任意修改其源代码。这是其他的操作系统所做不到的。正是由于 这一特点,对l i n u x 操作系统内核的编写和修改工作成为可能。 功能强大。l i n u x 操作系统能够完全胜任对于多用户、多任务的需求,同 时具有良好的界面和丰富的网络功能,对于拓展家庭网络核心的应用范围至关重要。 安全可靠。l i n u x 采取了许多安全技术措施,其中有对读、写进行权限控 制、审计跟踪、核心授权等技术,这些都为安全提供了保障。 支持多种平台。目前l i n u x 能够支持x 8 6 ,a r m , m i p s ,a l p h a ,p o w e r p c 等多种体系结构,并已经成功移植到数十种硬件平台。这使得l i n u x 系统移植的软 件工作交得相对容易,而本文将集中讨论为l i n u x 成功移植所必须的硬件设计。 4 支持l i n u x 操作系统的存储器管理单元设计研究 第一章引言 1 4 内存管理的基础知识 操作系统的内存管理功能用于向操作系统提供一致的地址映射功能和内存页面 的申请、释放操作。如果没有操作系统的帮助,这些工作将由应用程序本身完成, 也就是说,每个应用程序需要管理好自己的内存空间,通过程序员在编程过程中保 证内存访问不会越界,从而来保证程序运行的安全性。比如每个任务自己只能申请 局部的静态内存空间,在运行的过程中别的任务都不可能修改该内存空间的值,也 就不存在越界的问题。但是静态内存分配的方式加剧了内存资源使用的浪费程度。 如果有操作系统的帮助,应用程序就可以根据需要向操作系统申请内存空间。由操 作系统统一管理。操作系统可以根据申请和释放时应用程序提供的参数,申请不同 需求的内存,从而简化了应用程序的开发过程,并且保证了程序运行的安全稳定。 如图1 3 所示,在增加了存贮器管理单元( m m u ) 的微处理器中,操作系统会 使用它来完成从虚拟地址( 、,a ) 到物理地址( p :a ) 的转换 5 1 ,所有的应用程序只需 要使用虚拟地址来寻址数据。这种使用虚拟地址寻址整个系统的主存的方式在现代 操作系统中被称为虚拟内存:m m u 便是实现虚拟内存的必要条件。使用虚拟内存 的管理方法,既可以使操作系统运行体积比物理内存还要大的应用程序,又节约了 物理内存空间。 图1 3 由m m u 实现的虚、实地址转换 1 5l i n u x 对m m u 的设计要求及软硬件功能划分 为了能够将l i n u x 操作系统移植到现有的家庭网络s o c 平台,必须为平台中 的r i s c 处理器设计一款存储器管理单元( m m u ) 。本文设计的存储器管理单元 5 支持l i n u x 操作系统的存储器管理单元设计研究 第一章引言 ( m m u ) 具备内存地址映射和寻址功能,在地址映射出错时还能向处理器返回异 常请求,它使操作系统的内存管理更加方便。它在系统中主要完成以下几项任务 6 1 : 重定位:程序的入口地址和预先声明的数据地址均在编译期间决定, m m u 允许程序在任何物理地址上运行。 为程序分配内存:m m u 可以从物理内存里许多零散的页中创建连续的程 序空间,使系统能从一个包含固定大小页面的缓存里分配内存。 隐藏和保护:用户级程序只能访问k u s e g 内存区域( 较低的程序地址) 内 的数据。这类程序只能在操作系统所许可的内存区域中读取数据。另外,内存中的 每一页也可以分别指定为可写权限或者读写权限,操作系统甚至可以阻止其他程序 因为某种意外覆盖代码空间的应用程序。 使内存映射与程序相适应:存在m m u 的情况下,程序能够使用与之相 适应的地址。在一个庞大的操作系统里,可以同时运行同段程序的许多份拷贝, 以便使它们使用相同的程序地址时变得更容易。 按需调页:程序运行时,好像他们所需的所有内存资源都已经分配好。实 际上,操作系统只分配给它们当前所需的资源。程序如果访问未分配内存的空间, 就会导致异常发生,并交由操作系统处理。操作系统会在这块内存中装入适当的数 据以保证应用程序继续运行。 现在主流的虚拟内存和物理内存转换的机制是页式映射的机制【7 】( 详见第二 章) ,要实现页式地址映射需要完成的工作有建立和填充页表、通过页表中的映射关 系完成虚拟内存和物理内存的转换、提供一套中断机制来处理页表异常等。本文进 行l i n u x 操作系统的移植过程中,页表的建立和填充、提供一套中断机制来处理页 表异常是由操作系统( 软件) 完成的;而虚拟内存和物理内存的转换及访问权限控 制,异常产生则是由存储器管理单元( 硬件) 完成的 对快表不命中的情况有两种处理方法:一种是硬件发出异常让操作系统来查询 页表填充t l b ,另一种是硬件直接查询页表填充t l b 。两种方法各有优劣:在操作 系统查询页表的方案中,硬件结构简单、关键路径短、灵活性好,但是效率低下, 很多r i s cc p u 使用这种方案( 如m i p s4 k c 系列c f u s 1 ) ;在硬件查询页表的方案中 硬件结构较复杂、需要和操作系统很好的配合,但是效率高,使用这种方案的c p u 有很多,c i s c c p u 大多使用这种方案,其中最著名的就是x 8 6 体系的c p u 9 ) ,另外 一些高端的r i s cc p u 也会使用这种方案如a r m l lm p c o r ep r o c e s s o r i “。为了获得 高效率,本文使用了硬件直接查询页表的方案。 6 支持l i n u x 操作系统的存储器管理单元设计研究 第一章引言 1 6 本文的工作及内容安排 本文的主要工作是为家庭网络核心平台中的3 2 位r i s c 处理器移植l i n u x 操作 系统,包括硬件和软件两个方面的工作。硬件方面主要是设计一款能够支持l i n u x 操作系统的存储器管理单元,完成地址映射、访问权限控制等任务;软件方面主要 是对l i n u x 内核进行修改,使它能够顺利运行在增加了内存管理功能后的处理器上。 本论文共由六章组成。 第一章为引言,主要介绍了家庭网络核心平台的现状以及为该平台移植l i n u x 操作系统的必要性,提出了m m u 在系统中完成的主要功能,最后介绍了本文的工 作和内容安排。 第二章详细介绍了为l i n u x 操作系统而设计的m m u 的各项具体功能,包括地 址映射与变换,两级页表访问,内存访问权限控制,异常的产生等。 第三章介绍了为l i n u x 移植而进行的各项软件工作。 第四章介绍了m m u 控制器的设计实现细节,包括内部各个模块的功能分析以 及仿真结果。 第五章将l i n u x 系统移植的软、硬件结果进行集成,在f p g a 上验证了运行l i n u x 操作系统的家庭网络平台。 第六章是本文的总结和展望。 7 支持l i n u x 操作系统的存储器管理单元设计研究 第二章支持l i n u x 系统的m m u 控制器 第二章支持l i n u x 系统的m m u 控制器 m m u 作为3 2 位处理器核执行单元和片上高速缓存( c a c h e ) 之间的一个接口,主 要完成虚拟地址到物理地址的映射任务。它使用一个片内的地址转换后备缓冲存储 器( t l b ) ,也称为快表,以很高的速度完成虚、实地址之间映射关系的缓存。图 2 1 是为家庭网络核心平台中使用的3 2 位处理器核增加m m u 后的模块架构。 乘,除法单元 处理器核执 行单元 1 一 t 协处理器单 7 c 躺加b i u 靳h 外存 。 图2 1 增加m m u 后的3 2 位微处理器核架构 如1 3 节所述,虚拟内存系统通过将较大的虚拟地址空间中的地址转换成物理 内存空间的地址,从而扩充程序可使用的地址空间。当操作系统管理物理内存空间 以适应在同一内存执行多任务操作时,这种转换显得非常有用。 本章将就l i n u x 操作系统移植中的硬件设计部分展开介绍,详细讨论支持 l i n u x 的存储器管理单元所担负的各项功能。 2 1r i s c 处理器的基本地址空间 l i n u x 操作系统要求家庭网络核心平台中所采用的3 2 位微处理器必须能够运行 在两种优先级别上;用户态和核心态,也就是通常所说的“用户模式”和“内核模 式”【6 】。但实际上,从核心态切换到用户态,处理器本身所做的工作并没有不同, 只是有时某些操作将被认为非法。例如,在用户态下,任何一个程序地址的最高位 是l 都会引起处理器异常;另外,在用户态下,一些特殊的指令也会导致处理器进 入异常。由内存管理引起的处理器异常将会在后面的章节中详细讨论。 s 支持l i n u x 操作系统的存储器管理单元设计研究 墨高, 一理u 一 一b | 缸耋l u 一器朋rl玎 一储顷一 一睇,丽= 第二章支持l i n u x 系统的m m u 控制嚣 2 1 1 用户模式的地址空间分配 用户模式是c p u 正常工作的模式,几乎所有的应用程序都工作在这个模式下, 因此应用程序都存放在用户模式地址空间。在用户模式下可访问的地址空间是 0 0 0 00 0 0 0 至7 f f ff f f f 的用户段虚拟地址空间,在这个2 g 大小的地址空间中所 有的地址都是可映射的,并且可以根据需要设置每个地址的是否可c a c h e 。此时的 虚拟地址要加上8 位a s i d 以扩展成为一个独一无二的虚拟地址。在用户模式下, 程序无权访问内核指令或内核地址空间。如果在用户模式下访问0 x s 0 0 00 0 0 至 o x f f f ff f f f 的地址或者访问处理器的状态寄存器就会产生异常,m m u 将通知 c p u 产生了地址访问错误。 2 1 2 内核模式的地址空间分配 l i n u x 内核包含了系统运行所必需的所有程序。因为内核对于正常运行非常重 要,所以内核运行在特殊的保护模式,我们称之为内核模式。当系统复位后,处理 器就进入了l i n u x 内核模式运行本文所采用的3 2 位c p u 中,内核地址空间被划 分为4 个大区域,分别用一个传统的名字命名,如图2 2 所示。一段地址处于不同 的区域,就会有不同的属性,介绍如下: k u s e g0 x 0 0 0 00 0 0 0 0 x 7 f f ff f f f ( 低端2 g b ) :该段地址空间与用户模 式下的地址空间相同,虚拟地址要加上8 位的a s i d 来扩展成一个唯一的虚拟地址。 也可以通过设置处理器的状态寄存器将该段设置成不可映射( u n m a p p e d ) 和不可缓 存( u n c a c h e a b l e ) 。 图2 23 2 位微处理器的内核模式地址空间划分 k s e g o0 x 8 0 0 0 _ _ 0 0 0 0 0 x 9 f f f _ f f f f ( 5 1 2 m b ) :对于这段地址空间,只需要 9 支持l i n u x 操作系统的存储器管理单元设计研究 第二章支持l i n u x 系统的m m u 控制器 将虚拟地址的最高位清零,就可以转换为物理地址,然后将它们连续映射到物理内 存中5 1 2 m b 大小的低字段( o x 0 0 0 00 0 0 0 一o x l f f ff f f f ) 。因为这种转换相当简单, 因此常常把这些地址称为“无需转换的”( u n m a p p e d ) 。在本文进行l i n u x 操作系统 的移植过程中,l ( s e 的用来存放操作系统的内核。 k s e g lo x a 0 0 00 0 0 0 0 x b f f ff f f f ( 5 1 2 m b ) :对于这段空间的虚拟地址 只需将最高三位清零( 减去o x a 0 0 00 0 0 0 ) 即可转换为物理地址,然后像k s e g o 一 样,映射到物理内存中5 1 2 m b 大小的低字段。但要注意,k s e g l 是不通过高速缓存 ( c a c h e ) 进行存取的,处理器的i o 访问都集中在这一段地址空间进行。 在l i n u x 操作系统运行过程中,k s e g l 是唯一在系统重启时能正常工作的地 址空间,系统重启时的入口向量o x b f c o0 0 0 0 就属于k s e g l 。该入口向量对应的物 理地址是o x l f c o0 0 0 0 ,这个地址将被用来访问系统的片外闪存,取得处理器需要 执行的初始化程序。 l ( s e 醇0 x c 0 0 00 0 0 0 一o x f f f ff f f f ( 1 g b ) :这段地址空间只能在内核模 式下使用并且要经过m m u 进行地址映射。本文在进行操作系统移植的过程中没有 使用这片区域的地址空间。 2 2 地址映射与变换 2 2 1 内存的页式管理方式 如前所述,l i n u x 运行在用户模式或内核模式的k u s e g 地址段时需要经过m m u 进行虚、实地址的映射,而工作在内核模式的其他地址段时的映射过程比较简单, 只要对虚拟地址的高位进行线性运算即可得到物理地址。本节接下来将要详细介绍 利用m m u 进行地址映射和变换的过程。 根据操作系统采用的地址映射和变换方法不同,常用的内存管理方式包括三种: 段式管理,页式管理和段页式管理1 。l i n u x 采用页式管理的方法来实现内存管理。 页式管理将整个虚拟地址空间划分为一个个固定大小的块,每一块称为一页 ( p a g e ) ,把主存储器的地址空间( 物理地址空间) 也按照虚拟地址空间那样的大小 划分成页。页是一种逻辑上的划分,它可以由系统软件任意指定。本文在移植l i n u x 操作系统时指定的页面大小是4 k b 。 在虚拟存储器中,虚拟地址空间中的页称为虚页,物理地址空间中的页成为实 页。这样,把一个虚拟地址空间中编写的用户程序映象到物理地址空间时,只需要 建立从虚页号到实页号的地址变换即可,从而可以大大缩短地址的长度,既节省了 1 0 支持l i n u x 操作系统的存储嚣管理单元设计研究 第二章支持l i n u x 系统的m m u 控制嚣 硬件,又能加快地址变换的速度。 页裹萋址 p g db 图2 3 页式虚拟存储器的地址映射 页式虚拟存储器的地址映射方法如图2 3 所示。处理器给出的虚拟地址高2 0 位 和低1 2 位被分别称为虚拟页号和页内偏移。页表基址寄存器p g db a s e 记录了当 前进程所对应的页表基址在主存中的位置,m m u 通过将页表基址与虚拟页号相加 后得到的地址来访问主存,找到该虚拟页号对应的物理页号,并将返回的2 0 位的物 理页号与页内偏移拼接在一起,作为处理器访存所采用的最终物理地址。在整个过 程中,处理器只需要额外访问主存一次来取得物理页号。 2 2 2 两级页表 考虑到现代计算机系统,都支持非常大的虚拟地址空间,如果采用2 2 1 节所述 的页式内存管理方式,将会导致页表的容量非常大,在主存中占用相当大的空间。 例如,对于3 2 位的地址空间,4 g b 寻址的处理器,如果直接采用4 k b 大小的页面 来实现页式内存管理,那么页表的容量至少应为2 2 0 x 2 0 位,即2 5 m b 。很明显, 这样的开销太大了。 而且当页表的容量超过了一个页的大小( 4 k b ) 时,它就有可能被映射到主存 中不连续的页上。这样,把页表基址与虚页号相加查找物理页号的方法就不适用了 目前解决的办法是采用二级或更多级页表,首先找到第一级页表的基地址,然后根 据第一级页表的基地址再找到第二级页表的基地址,如此下去,构成一个多级页表, 并且在最后一级页表中给出物理页号等信息。 本文使用的二级页表的地址变换过程如图2 4 所示,虚拟地址的最高1 0 位作为 一级页表的目录索引,与页表基址寄存器p g db a s e 中的一级页表基址相加后访 问主存,得到所需的第二级页表基址;虚拟地址的二级部分,2 1 至1 2 位作为二级 页表的目录索引,与第一次访存得到的第二级页表基址相加后再次访存,查询二级 页表,得到所需的物理页号;物理页号与虚拟地址的低1 2 位拼接成最终的物理地址, 1 1 支持l i n u x 操作系统豹存储器管理单元设计研究 第二章支持l i n u x 系统的m m u 控制器 用来取得处理器所需的指令或数据。 如图2 4 所示,一级页表和二级页表的大小都为4 k b ,这样可以大大减少页表 在主存中所占据的容量,同时可以避免因为页表在主存中不连续存贮而导致的各种 问题。值得注意的时,每次地址变换需要访问主存两次才能够得到最终需要的物理 地址,查表的时间比普通的页式管理要增加一倍。 2 3 快表( t l b ) 设计 图2 a 两级页表的地址映射 主存 在本文进行l i n u x 操作系统移植的过程中,快表的设计并不是核心工作,本节 将简单介绍快表在m m u 进行地址映射时的功能。关于快表设计的详细内容见参考 文献【1 2 】 一般来说主存的速度比处理器的速度要慢很多,如果每次访问主存都要经过两 次查表才能完成的话,效率明显太低。众所周知,程序在执行过程中具有局部性的 特点,也就是说,在一段时间内对页表的访问只局限在少数几个存储字内。因此可 以设计一个容量较小的高速存储器来保存最近使用过的虚拟页和物理页的对应关 系,当同一虚拟页再次被访问到的时候可以直接从高速缓存中读出相应的物理页号, 从而得到物理地址,省去了查表的操作。这个小容量的高速存储器被称为快表 ( t r a n s l a t i o nl o o k a s i d eb u f f e r ) ,简称t l b 。 快表采用全定制数字电路设计方式进行设计,结构上主要包括c a m 阵列和 s r a m 阵列两个部分,分别用来存储以前曾经访问过的虚拟页号和对应的物理页号。 在快表的配合下,m m u 可以高效地完成整个地址映射过程,如图2 5 所示。输入 的虚拟地址同样被划分为虚拟页号和页内偏移两部分。高2 0 位的虚拟页号首先与快 1 2 支持l i n 皿操作系统的存储嚣管理单元设计研究 第二章支持l i n u x 系统的m m u 控制器 表中c a m 阵列所存储的所有虚拟页号都进行并行比较,如果有某一路c a m 单元 命中,说明本次访问的虚拟地址之前也曾经被访问过,而且在快表中已经存储了所 需的物理地址。这时只要读出命中一路c a m 单元对应的s r a m 中存贮的物理页号 即可。再将物理页号与页内偏移拼接成最终的物理地址。 虚拟地址 快表 物理地址 图2 5 由快表完成的地址转换 快表命中的同时,还会向m m u 返回相应的命中标志信号,从而避免了两级页 表的查询。只有在快表失效时,才需要按照2 2 2 节所述的方法查询两级页表,并将 最新访问的虚拟地址和得到的物理页号填入到快表中,方便下次使用。 由于本文采用的3 2 位微处理器采用指令总线和数据总线分离的哈佛结构,所以 在m m u 中也采用了相互独立的指令快表( i t l b ) 和数据快表( d t l b ) 来分别进 行取指和取操作数的地址转换。i t l b 和d t l b 在结构上完全相同,都是3 2 路的全 相联形式,可以分别存贮3 2 路虚拟页号和物理页号的对应关系。 2 4m m u 控制寄存器 本文设计的存储器管理单元为了能够与原有s r i s c 处理器配合,更好地支持 l i n u x 操作系统,将会受到s r i s c 中数个寄存器的控制,这些为数不多的寄存器都 存在于s r i s c 的c p 0 协处理器中。本节将针对这些处理器进行简要介绍,详细的 信息可见参考文献【6 】。 e n t r y h i ( c p 0 的l o 号寄存器) e n t r y h i 寄存器中保存了导致快表异常时的虚拟地址信息。包括引起异常的指 令所访问的虚拟页号值( 准确地说是虚拟页号值,2 ) ,以及当前进程的a s i d 值。 e n t r y l 0 0 和e n t r y l o l ( c p 0 的2 号和3 号寄存器) 这一对e n t r y l o 寄存器记录了采用特权指令( t l b r 、t l b w i 等) 访问快表时 1 3 支持l i n t t x 操作系统的存储器管理单元设计研究 第二章支持l i n u x 系统的m m u 控制器 的物理页号,以及主存中该物理页面是否经快存缓存( c a c h e a b l e ) 、是否具有写权 限( w r i t a b l e ) 。 p a g e m a s k ( c p 0 的5 号寄存器) p a g e m a s k 中的m a s k 域( 2 4 位至1 3 位) 可以用来屏蔽掉虚拟页号与快表中c a m 阵列比较时的某些位。m a s k 域中被置l 的位在虚拟页号的匹配过程中会被忽略掉。 r a n d o m ( c p o 的1 号寄存器) r a n d o m 寄存器中保存着t l b 的一个索引值,该寄存器通过对c p u 执行的每条 指令进行计数( 递减计数) 来得到随机值。这个随机值在写t l b 的t l b w r 指令执 行时作为t l b 的索引,以此来支持写入t l b 入口的随机替换策略。 2 5 权限控制 2 5 1 内存控制引起的异常 m m u 在完成l i n u x 操作系统的内存管理任务时,必须对每一次的存储器访问 进行权限检测,防止越界访问的情况发生。例如,当处理器刚刚复位,工作于内核 模式时,c p u 对内存的访问不受任何限制;当处理器运行至用户模式时,程序地址 空间位于2 0 b 之上则是非法的,因为它已经超过了k u s e g 的地址范围。当m m u 检 测到发生了如上所述的越界访问情况时,将会向处理器发出异常( e x c e p t i o n ) 请求, 处理器将暂停当前正在顺序执行的指令而进入内核模式,同时从一个固定的地址入 口开始执行一段异常处理程序。 在内存控制中能够引起处理器异常的情况除了上面提及的越界访问外,还包括 两级页表未初始化、读写权限检测失败等。详见表2 1 。其中的a d e l 即前面提及的 在用户模式下访问内核地址空间引起的异常。 在快表( t l b ) 的c a m 阵列中,除了存储有2 0 位的虚拟页号外,还包括一 位v a l i d 位和一位w r i t a b l e 位【1 3 】,这两位的值将在c a m 单元被更新时同时被写入, 在c a m 单元参与虚拟页号比较时同时参与比较。对于v a l i d 位而言,无论当前执行 的是一条l o a d 指令还是s t o r e 指令,即便c a m 单元中存储的虚拟页号命中,如果 v a l i d 位为零,表明此时快表中存储的物理页号是无效的,处理器需要访问两级页表。 如果处理器访问两级页表时读回的p r e s e n t 标志位为零,则说明主存中的两级页表还 未经过初始化,会引起d t l bi n v a l i d 或i t l bi n v a l i d 异常。同样,存储于c a m 阵 列中的w r i t a b l e 位将在执行s t o r e 操作时被检测,如果w r i t a b l e 位为零,说明所访 问的物理页面没有写权限,同样会引起处理器异常,处理器进入异常处理入口继续 1 4 支持l i n u x 操作系统的存储器管理单元设计研究 第二章支持l i n u x 系统的m m u 控制器 执行。 表2 1内存管理异常种类 异常名称描述 m s _ i n v a l i dr r l b 未命中,主存中的页袭来初始化 d t bh w a l i d d t i b 未命中,主存中的页袭来初始化 y 1 b _ m o d读写权限检测失败,s t o l e 指令对应物理页面的w 枞位为零 d e l 用户模式下访问内核空间的地址 2 5 2 具有异常检测的m m u 工作流程 前面的章节已经详细介绍了l i n u x 操作系统运行过程中,m m u 进行地址映射 和访问权限控制的方式,本节将综合以上两点,较全面地阐述m m u 的工作流程。 如图2 6 所示,由于处理器取指和取数据时m m u 的工作流程稍有不同,所以m m u 控制器的工作也被划分为对取指虚拟地址的映射和取操作数虚拟地址的映射两个部 分。下面将以操作数取指过程中m m u 的工作为例进行介绍。 当处理器需要对主存中的数据空间进行操作时( 执行l o a d s t o r e 指令) ,处 理器会给出该操作数的虚拟地址。m m u 在收到虚拟地址后首先会检测所访问的地 址空间在当前模

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论