![(电路与系统专业论文)嵌入式处理器内存管理单元的设计和验证[电路与系统专业优秀论文].pdf_第1页](http://file.renrendoc.com/FileRoot1/2019-12/13/e9196423-bb62-44b4-977e-db0eedeedcac/e9196423-bb62-44b4-977e-db0eedeedcac1.gif)
![(电路与系统专业论文)嵌入式处理器内存管理单元的设计和验证[电路与系统专业优秀论文].pdf_第2页](http://file.renrendoc.com/FileRoot1/2019-12/13/e9196423-bb62-44b4-977e-db0eedeedcac/e9196423-bb62-44b4-977e-db0eedeedcac2.gif)
![(电路与系统专业论文)嵌入式处理器内存管理单元的设计和验证[电路与系统专业优秀论文].pdf_第3页](http://file.renrendoc.com/FileRoot1/2019-12/13/e9196423-bb62-44b4-977e-db0eedeedcac/e9196423-bb62-44b4-977e-db0eedeedcac3.gif)
![(电路与系统专业论文)嵌入式处理器内存管理单元的设计和验证[电路与系统专业优秀论文].pdf_第4页](http://file.renrendoc.com/FileRoot1/2019-12/13/e9196423-bb62-44b4-977e-db0eedeedcac/e9196423-bb62-44b4-977e-db0eedeedcac4.gif)
![(电路与系统专业论文)嵌入式处理器内存管理单元的设计和验证[电路与系统专业优秀论文].pdf_第5页](http://file.renrendoc.com/FileRoot1/2019-12/13/e9196423-bb62-44b4-977e-db0eedeedcac/e9196423-bb62-44b4-977e-db0eedeedcac5.gif)
已阅读5页,还剩56页未读, 继续免费阅读
(电路与系统专业论文)嵌入式处理器内存管理单元的设计和验证[电路与系统专业优秀论文].pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
浙江大学硕士学位论文 摘要 随着体系结构的不断发展和多任务嵌入式系统的开发,嵌入式处理器需要提 供虚拟内存管理的支持,虚拟内存管理是通过内存管理单元硬件实现在系统运行 时的地址转换和地址空间保护。嵌入式处理器和通用处理器在内存管理单元的性 能评估方面是有很大差别的。首先,嵌入式处理器经常运用在实时系统中,硬件 设计者比较关心系统在最差情况下的系统性能。另外,功耗问题也是设计高性能 嵌入式处理器需要考虑的重要因素。 本文提出了一种设计c k c o r e 内存管理单元的新的方法,c k c o i 冱是 由杭州中天微系统有限公司和浙江大学合作开发的3 2 位高性能嵌入式处理器。 内存管理单元采用两级地址转换后备缓冲器结构,分别称为m i c r ot l b 和j o i n t t l b 。m i c m t l b 和一般的t l b 相比,它的结构比较简单,而且它的地址转换逻 辑经过了优化。由于地址转换过程很快,所以不需要在处理器流水线增加一级地 址转换过程。为了降低未命中率和功耗,j o i n tt l b 的4 8 个全相联的表项被分为 6 组,采用了分步访问的策略,有限状态机在m i c r o t l b 未命中时根据最近末使 用算法替换m i c r 0 t l b 的某一个表项。在j o i m t l b 未命中时,采用了软件管理 的机制来负责t l b 的填充,这样不但可以提高页表结构的灵活性,而且也降低 了硬件的成本。 本文还介绍了内存管理单元的验证方法和验证流程,通过在验证的不同阶段 使用静态测试和动态测试的手段,不但可以帮助设计者及时发现硬件设计的问 题,而且也提高了测试代码的覆盖率,从而保证了设计的质量。 关键词:嵌入式处理器,虚拟存储,内存管理单元,地址转换后备缓冲器 第j 页 浙江大学硕士学位论文 1 绪论 随着嵌入式处理器的广泛应用和体系结构的不断发展,现在流行的嵌入式处 理器都需要操作系统的支持,由于任务复杂度的不断提高,经常需要多个进程协 同工作,这就要求硬件提供相应的支持。本章着重介绍虚拟存储技术和现代处理 器内存管理单元( m e m o r ym a n a g e m e n tu n i t ,m m u ) 的设计方法。 1 1 课题的背景及研究意义 随着嵌入式系统应用领域的不断扩大和应用要求的不断提高,嵌入式系统也 变得越来越复杂。同时嵌入式处理器的体系结构也在不断发展,许多体系结构是 从过去主要用于桌面系统的结构( 如m i p s 、s p a r c 等) 或高端d s p 中衍生出 来的。嵌入式处理器和通用处理器之间的不同也不再仅仅局限于寄存器组织、基 本指令集、流水线结构,而扩展到诸如功耗、成本、外设集成度、中断响应时间、 片上r a m 或r o m 容量等问题【”。 随着s o c 研究的逐步深入,整个嵌入式系统要求具有更强的整合性,更注 重软硬件的协同设计,对嵌入式处理器的性能和功耗问题也提出了更高的要求。 在采用d r a m 等作为片外存储器的嵌入式系统( 如m p e g 一4 视频解码器) 中,内部数据处理单元( 如嵌入式处理器或d s p ) 将与之进行大量的数据交换, 这就要求对存储器的结构进行优化。由于外部存储器具有较高的访问时延,以 d r a m 为存储器的系统常常要面对由此带来的系统性能的损失。随着时钟频率 和嵌入式处理器的性能的不断提高,对嵌入式系统存储系统的访问时间和存储器 的带宽提出了更高的要求,因此现代嵌入式处理器广泛运用了虚拟存储技术,通 过使用内存管理单元( m m u ) 和片内集成高速缓存( c a c h e ) 来弥补处理器时钟 频率和存储器存取时间的差距,提高嵌入式系统的性能。另一方面,由于嵌入式 系统任务复杂度的不断提高,现在流行的嵌入式处理器需要有操作系统的支持, 以实现多个进程的协同工作和通信,这也要求嵌入式处理器提供相应的硬件支持 来简化软件的工作复杂度,并提供保护机制来防止不安全的内存访问造成系统的 崩溃。 3 2 位嵌入式处理器内存管理单元的研究和设计属于杭州中天微系统公司和 浙江大学超大规模集成电路实验室合作承担的国家8 6 3 课题“3 2 位高性能通用 第5 页 浙江大学硕士学位论文 嵌入式处理器c k c o r e ”的一部分。c k c o r e 面向的应用领域是高性能、 低功耗、低成本的嵌入式控制系统和电池供电的便携式产品。c k c o r e 具有 可扩展指令,可配置硬件资源,可重新综合,易于集成等优点,而且c k c o r e 拥有自主知识产权。c k c o r e 在功耗和电源管理上也很出色,c k c o r e 通 过静态设计、动态电源管理和低电压供电来减少功耗。它可以通过进入省电模式 来节省能量,还可以实时地关断内部功能模块。本课题在该课题研究成果的基础 上,通过将内存管理单元集成到c k c o r e 中,从而实现了处理器的存储管理 功能,使该处理器可以应用于更加复杂的嵌入式系统中。 第6 页 浙江大学硕士学位论文 1 2 虚拟存储技术及其研究现状 任何一个具有一定复杂度的计算机系统都是依靠运行在处理器上的多个进 程协同工作来完成的,由于每个进程都拥有自己的地址( 虚拟地址) 空间,这就 要求提供一套机制来实现多个进程对有限的物理存储器资源的共享。虚拟存储技 术实现了每个进程的虚拟地址到主存的物理地址的转换,还提供了对地址空间的 保护机制。虚拟存储的实现需要有操作系统和硬件的支持,现代通用处理器一般 采用内存管理单元( m m u ) 来实现硬件支持。 虚拟存储技术被广泛应用于多任务的计算机系统中,程序员在编写程序时不 需要考虑程序访问的物理地址,这样大大减轻了程序员的工作量,提高了编程的 效率。在程序执行的任何时刻,可能只有一部分虚拟地址映射到主存的物理地址, 其他则映射到磁盘空间。当访问存储器的地址范围发生变化,有必要把虚拟地址 空间的某些部分从磁盘调入主存时,虚拟存储会自动完成进程的代码段和数据段 在主存和磁盘之间的换入换出【2 1 。图1 1 显示了进程的虚拟地址到物理地址的映 射关系【2 】。 虚拟地址物理地址 o 4 k 8 k 1 2 k 1 6 k 主存储器 磁盘 图1 1 进程的虚拟地址到物理地址的映射 采用虚拟存储技术主要需要解决以下两个问题: 如何快速的将进程的虚拟地址转换为访问主存所需要的物理地址: 如何实现多个进程对存储器访问的保护机制。 除了上述两个问题外,还应该看到嵌入式系统的存储体系和桌面系统还是有 第7 页 浙江大学硕士学位论文 很大差别的。首先很多嵌入式系统是实时系统,需要具有良好的实时性能,系统 设计人员更关心的是系统在最坏情况下的性能( w o r s t - c a s ep e r f o r m a n c e ) ,而不是 系统的平均性能( a v e r a g e c a s ep e r f o r m a n c e ) 。其次很多嵌入式系统的应用领域是 面向电池供电的便携产品,需要考虑系统的低功耗问题,这就要求硬件的实现尽 量简单圆。以下3 个小节分别介绍了虚拟存储的设计方法。 1 2 1 页表组织 虚拟地址空间可以分成具有固定大小( 一般为4 k 字节到6 4 k 字节) 的页或 具有变长尺寸的段,由于页式管理可以使物理存储器和磁盘的数据交换有更好的 性能,现在的虚拟存储系统一般都采用页式管理或段页( p a g e ds e g m e n t ) 式管理。 地址映射是完成虚拟页码( v i r t u a lp a g en u m b e r , v p n ) 到物理页号( p h y s i c a l f r a m en u m b e r , p f n ) 的转换过程,地址转换信息一般储存在页表项( p a g et a b l e e n t r y , p t e ) 中。如果用单个页表保存映射关系,那么页表需要占用很大的存储 空间。如果每个页为4 k 字节,那么3 2 位地址中的高2 0 位必须被转换。如果每 个p t e 需要占用4 个字节,这就需要所以页表占用4 m 字节,这个代价对于一 个小的系统来说是不可接受的p j 。所以页表的组织结构一般采用层次型 ( h i e r a r c h i c a l ) 和反相型( i n v e r t e d ) 两种方式,图1 2 显示了一个具有两级层次 的页表【4 】。 页表项( p t e ) 图1 2 两级层次型页表 其中页目录表的表项指定了页表的物理起始地址,页表的表项指定了页表项 的物理起始地址,每个页表项含有地址转换信息。如果每个目录及页表项的大小 为4 个字节,则页目录表和页表大小为4 k 字节,这样就可以管理一个大小为4 m 字节的物理存储器,对于一般的嵌入式应用来说就足够了【3 1 。 第8 页 浙江大学硕士学位论文 层次型页表的搜索策略可以分为直顶向下( t o p - d o w n ) 和直底向上 ( b o t t o m u p ) 两种。传统的m m u 大都采用直顶向下的方式,如i n t e li a 3 2 。页 表通常组织为两级或更多级,用虚拟地址的高位( 虚拟页码) 顺序查找页目录和 页表项来完成对页表的搜索,这样页表的级数就决定了内存访问的次数【引。图1 3 是直顶向下搜索策略的示意图【4 】。 虚拟页码页内偏移 页目录表页表物理页 ( 含1 0 2 4 项)( 含1 0 2 4 n )( 含4 k 字节) 图1 3 直顶向下的搜索策略 直底向上的方法是依赖于所有的页表项( p t e ) 在虚拟地址空间是连续的特 性,具体的操作流程是:用虚拟页码直接索引页表,如果地址转换成功,只需要 一次内存访问就可以找到p t e 。否则首先用虚拟页码的高位查找页目录表,找到 对应的页目录,然后再用虚拟页码索引页表,由于此时页表的起始物理地址已知, 所以可以找到对应的p t e 。由于采用这种策略一般只需要一次内存访问就可以完 成页表的搜索,因此可以极大地提高系统的性能,m i p s 和a l p h a 都采用这种方 式。图1 4 是直底向上搜索策略的示意图【4 】。 第9 页 浙江大学硕士学位论文 虚拟页码( 2 0b i t s )页内偏移( 12 b i t s ) 、 巨蓊箍拟黼锺i 蘸l 虚拟页码( 2 0b i t s ) o o hi i * 嚣4 f 、矧= j i i 黼= h ( 2b i t s ) l 嚣戮嬲_ i 麓r 器嘉税磷黝i 一!南_ m 喜1 n 估 0 0 匿;i ”“墓萋蕊璧爨慧鬈薹i 2 ;誊一- 一“”,“ ( 2b i t s ) 图1 4 直底向上搜索策略 如果采用层次型的页表组织,进程的每个虚拟页都需要有一个p t e ,这样会 占用大量的内存,而现实中并不是每个虚拟页都是有意义的。反相型页表的p t e 和物理页一一对应,它的优点是非常紧凑,特别在6 4 位的地址空间很有优势, p a - r i s c 和p o w e r p c 都采用这种方式。由于在搜索页表时需要用虚拟地址索引 页表,所以虚拟地址首先需要通过哈希表转换。另外不同的虚拟页可能映射到同 一个物理页,所以采用冲突链表来链接这些不同的虚拟页。在嵌入式系统中,特 别是实时系统,需要我们对任务的执行时间有明确的估算,由于反相型页表的搜 索时间是不确定的,所以嵌入式处理器一般采用层次型的页表组织。 1 2 2 地址转换后备缓冲器( m ) 上面描述的页方式可以使程序员在设计应用程序时不需要关心目标代码的 物理地址,但是可以看出,这是以付出相当的性能代价来得到的。原因是每次存 储器访问都带来两次额外的存储器访问,即在访问所需数据之前要进行1 次页目 录访问和页表访问【3 1 。 为了加速地址的转换过程,m m u 一般都采用了地址转换后备缓冲器 ( t r a n s l a t el o o k a s i d eb u f f e r ,t l b ) 。t l b 是一种片上存储器结构,可以缓存最 近完成转换过程的页表项。如果地址转换的信息存在t l b 中( 称为t l b 命中) , 系统可以通过t l b 完成虚拟地址到物理地址的转换而无需访问页表。如果地址 转换的信息不在t l b 中( 称为t l b 未命中) ,系统需要访问页表并把匹配的页 表项填充回t l b 中。 大多数处理器中的t l b 有6 4 个表项或者更多,一般采用全相联结构来提高 第1 0 页 浙江大学硕士学位论文 t l b 的命中率【6 j 。为了增加带宽,t l b 的设计经常采用指令t l b 和数据t l b 分 离的结构。虽然t l b 只构成了处理器片上存储器的很小部分,但是它产生的功 耗却占了很大的比例。例如一种典型的嵌入式r i s c 处理器s t r o n g a r m l l 0 ,它 的指令c a c h e 、数据c a c h e 和t l b 所产生的功耗分别占了整个芯片功耗的2 7 、 1 6 和1 7 【。”。原因是对t l b 的访问频率非常高( 如程序指针需要在每一个c p u 时钟完成地址转换) ,随着处理器时钟频率的不断提高,功耗问题成了t l b 设计 中必须认真考虑和解决的问题。 为了降低t l b 的功耗而不影响系统性能,现代t l b 微体系设计中一般采用 3 种方法: 由于t l b 的索引标志( t a g ) 部分一般采用内容寻址存储器结构( c o n t e n t a d d r e s s a b l em e m o r y ,c a m ) 实现,数据部分一般采用静态存储器( s r a m ) 实现。现在的研究集中在改变c a m 单元结构和降低工作电压来降低功耗【刖。 把整个t l b 分成两个组或多个组,利用虚拟页码的低位产生组选择信息, 从而减少对t l b 的t a g 存储器和数据存储器的访问次数。 采用层次形的t l b 结构。在地址转换过程中,首先访问第一级t l b ( m i c r o t l b 或f i l t e r t l b ) ,如果没有找到地址转换信息,再访问第二级t l b ( m a i n t l b ) 。由于m i c r ot l b 的表项结构比较简单,而且表项的数量较少( 一般 只有4 个或者8 个表项) ,所以在访问m i c r ot l b 时产生的功耗较少。 如果在访问t l b 时没有找到地址转换信息,称为t l b 未命中( t l bm i s s ) , 需要通过硬件或者软件的方式来搜索页表的p t e ,并填充t l b 。硬件的方式是 通过有限状态机( f s m ) 来搜索页表项,p o w e r p c 和n 一3 2 就采用了这种方式。 有限状态机是一种非常有效的设计,因为它对处理器流水线的干扰很小。在发生 t l b 未命中期间,指令流水线被停顿,并且不需要清空流水线的缓冲区。原因 是有限状态机不需要使用指令c a c h e ,而仅仅使用和页表有关的数据c a c h e 。有 些设计甚至可以不停顿流水线的执行,如i n t e lp e n t i u mp r o 允许在t l bm i s s 期 间继续处理其他独立的指令。有限状态机的主要缺点是页表的结构需要固定,在 设计操作系统时缺乏灵活性。 最近的m m u 设计中使用了软件管理的t l b ,在发生t l b 未命中时,采用 操作系统的异常处理程序来处理t l bm i s s 事件。m i p s 就是最早提供软件管理 第1 1 页 浙江大学硕士学位论文 t l b 的商用处理器。在发生t l bm i s s 时,硬件会发出异常来中断程序的正常执 行,通过异常矢量表把程序指针转移到个软件异常处理程序来访问页表。由于 硬件没有直接管理页表,操作系统可以自行定义页表结构【4 。 软件管理机制的灵活性是以性能为代价的。由于处理t l bm i s s 的异常处理 程序通常需要1 0 1 0 0 指令周期,如果异常处理代码不在指令c a c h e 中,处理时 间要比采用硬件的方式长的多。另外,异常产生时需要清空流水线缓冲区,开销 很大。尽管如此,由于采用软件管理机制,m m u 的设计比较简单,硬件的代价 较少,在嵌入式处理器的m m u 设计中被广泛应用。 1 2 3 地址空间保护和内存共享 m m u 硬件通过地址空间表示符( a d d r e s s s p a c ei d e n t i f i e r ) 或者段页组织 ( p a g e ds e g m e n t a t i o n ) 来实现地址空间的保护机制。 m i p s 、a l p h a 和s p a r c 体系结构采用a s i d 机制。在进程切换时,操作系 统把当前进程的a s i d 设置在一个受保护的寄存器中。进程的虚拟地址首先和 a s i d 拼按成扩展的虚拟地址,然后通过t l b 转换成物理地址。一个具有3 2 位 地址空间的体系结构,如果a s i d 是8 位,那么形成的虚拟地址是4 0 位。由于 进程无法修改存放a s i d 的寄存器,所以每个进程拥有独立的地址空间5 1 。图1 5 是m i p sr 1 0 0 0 0m v l u 采用a s i d 实现地址转换 兰;曼篓 x 浙江大学硕士学位论文 图1 5 采用a s i d 机制实现地址转换和地址空间保护 段页组织的地址转换过程分成两个步骤:进程的虚拟地址首先被转换成段粒 度的全局地址;然后全局虚拟地址被转换成页粒度的物理地址。虚拟地址的高位 指向由操作系统维护的段标识符( s e g m e n ti d e n t i f i e r ) 寄存器,和a s l d 机制不 同,全局虚拟地址的高位地址是通过段标识符寄存器的内容替换生成的。 p o w e r p c 和p a l r i s c 采用了这种机制。 虚拟存储技术实现了有效的内存共享机制,多个进程可以共享相同的代码 段,避免了采用传统消息传递机制所带来的数据复制的开销。实现共享内存的最 常用的技术称为地址匿名( a d d r e s sa l i a s i n g ) ,每个进程都拥有不同的页表,多个 进程的虚拟地址可以映射到相同的物理地址,这种映射关系被各自进程的p t e 所维护。操作系统通过设置这些p t e 的存取控制位以保证不同的进程对相同的 物理页的访问有不同的权限。 1 3 本文所作的工作及内容安排 本文所作的工作主要围绕c k c o r e 的内存管理单元的设计和验证展开的, 作者在整个项目中完成了内存管理单元的微体系结构设计和r t l 编码,参与了 c k c o r e 验证环境和i s a 参考模型的设计,编写了部分测试脚本,并完成了 内存管理单元的模块验证和系统验证。 本文所作的工作和后面各章的内容安排如下: 第 x 浙江大学硕士学位论文 i fi sr fe xd fd sw b i fi sr fe xd fd sw b i fi s r f e xd fd sw b i f i sr fe xd f d sw b i fi sr f e xd fd sw b i fi s r f e xd fd s、船 i fl s r f e xd fd sw b 图2 2 流水线重叠执行 在流水执行指令的过程中,当指令之间相关的时候,数据前馈硬件将前一条 指令执行结果直接前馈到执行单元作为它的源操作数,从而使得后面的指令不用 等到前一条指令完成并回写时才能得到操作数。 c k c o r e 包括一个3 2 位指令缓存用于给处理器提供指令。指令提取单元 ( i f u ) 每次向指令缓存中写入3 2 位的数据,即每次向缓存中写入两条指令。 当执行指令时,只有其中的一条指令送给指令译码单元用于译码。当指令缓存指 令都执行完成之后,指令提取单元重新从指令高速缓存中取出两条指令,填充指 令缓存。图2 3 是指令缓存中指令的流向图。 图2 3 指令缓存中指令的流向 由于c k c o r e 在i f 级需要完成指令的提取,所以对指令地址( p c ) 的 转换过程需要在经可能短的时间内完成,否则只有降低c p u 运行的频率或者增 加流水线的级数,这样就会降低系统的性能。在设计m m u 中,要求产生t l b 命中的逻辑尽可能简单;另外还要求t l b 的命中率尽可能高,否则指令流水线 将停顿,直到在页表中搜索到匹配的p t e 。 单周期的指令( 大多数的算术和逻辑指令) 一般都是按顺序发射并完成,而 第1 7 页 浙江大学硕士学位论文 3 2 3 2 位的乘法指令、除法指令、o m n i p 指令则需要多个周期才能完成。由于 这类指令的执行不需要访问存储器,所以没有d f 和d s 级。 对于读写存储器( 1 0 删s t o r e ) 指令,c p u 在d f 级计算有效数据地址,在d s 级访问数据存储区。这类指令需要在d f 级需要完成存储器地址的转换,在m m u 设计中需要实现指令和数据分离的t l b ,这样就可以并行地完成地址转换。图 2 4 是读写存储器指令的流水线执行过程。 时间段 访霎霉储 薹蔓i 二蔓二 墅重 二至二 垂至圈 图2 4 访问存储器指令执行过程 无条件跳转指令( b r 指令、b s r 指令和j m p 指令) 的跳转和有条件跳转指令 ( b t 、b f 指令) 预测正确时的跳转需要两个周期来填充流水线,其执行过程如图 2 5 所示: 时间段 糕指令匿工丑翌圈 目标指令匿工翌圈 图2 5 无条件跳转指令和有条件跳转指令预测正确时的执行过程 b t 、b f 指令预测不正确时的跳转则需要三个周期来填充流水线,其执行过程 如图2 6 所示: 时间段 跳黼令匿卫丑翌围 目标指令匿玉翌圃 图2 6 有条件跳转指令预测不正确时的执行过程 间接跳转指令( j s r i 指令、j m p i 指令) 的跳转需要四个周期来填充流水线, 其执行过程如图2 7 所示: 第1 8 页 浙江大学硕士学位论文 低功耗s r a m 基础上,设法减少对c a c h e 的访问次数。 在此之前,对减少c a c h e 访问次数的研究集中在分步访问上。即先访问索引 标志存储器,以访问的结果来确定是否访问某一组数据存储器,如图2 9 所示。 这样会不可避免地把索引标志存储器和数据存储器放在不同的流水节拍上,从而 增加流水线级数,影响系统性能。 图2 9 一种低功耗的c a c h e 结构 c k c o r e 采用了一种降低指令c a c h e 功耗的控制逻辑。一方面利用访问 索引标志存储器的间隙来提前访问索引标志存储器,得到并保存下一个c a c h e 行的行匹配和组选择信息,这使得在取指过程中,只需启用一个组的数据存储器 就可以得到指令,从而减少对数据存储器的访问:在提前访问索引标志存储器时, 还可利用预测机制来减少对索引标志存储器的访问。另一方面利用环形历史缓冲 第2 1 页 浙江大学硕士学位论文 区来记录每次访问索引标志存储器得到的组选择信息及地址范围,在程序跳转时 如果地址落在环形历史缓冲区内,组选择信息可以被重用,从而减少对索引标志 存储器的访问次数来节省功耗。利用组选择环形历史缓冲区的低功耗指令c a c h e 的结构如图2 1 0 所示。 图2 1 0 利用组选择环形历史缓冲区的低功耗指令c a c h e 的结构 c k c o r e 的c a c h e 使用物理地址实现c a c h e 行的索引和行标志( t a g ) 的 比较,采用这种机制的原因是: 1 在虚拟地址转换到物理地址的过程中,可以实现页级的访问权限检查; 2 在进程切换时,如果c a c h e 的行标志是虚拟地址,则必须清空c a c h e ; 3 由于多个进程的不同虚拟地址可以映射到相同的物理地址,这个物理地址的 数据在采用虚拟地址作为行标志的c a c h e ( 虚拟c a c h e ) 中可能出现多个同义 第2 2 页 浙江大学硕士学位论文 项( s y n o n y m ) 。如果一个进程修改了它所对应的那份拷贝,而硬件上又没有 一种同步机制来完成其它拷贝的更新,那么其他进程会得到错误的数据。使 用物理地址作为c a c h e 的行标志( 物理c a c h e ) 则不存在这种问题。 对指令c a c h e 和数据c a c h e 的访问分别发生在指令流水线的i f 级和d f 级, 为了实现地址转换过程和c a c h e 访问的并行执行,在实现中使用虚拟地址的页内 偏移高位索引c a c h e 行。图2 1 1 是含有m m u 的c a c h e 行匹配逻辑,其中虚拟 页地址通过t l b 转换成物理页地址,虚拟页内偏移的高8 位索引c a c h e 索引标 志存储器,物理页地址和c a c h e 的索引标志比较产生c a c h e 行匹配信号。 图2 1 1 含有m m u 的c a c h e 匹配逻辑 第2 3 页 浙江大学硕士学位论文 2 4 协处理单元( a 呻) 协处理单元( c p 0 ) 有一组只有在核心态才可以访问的控制寄存器,这些寄 存器可以控制c p u 和c a c h e 的工作模式。其中处理器状态寄存器( p s r ) 存储 了当前c p u 的状态和控制信息;基址向量寄存器( v b r ) 用来保存异常向量表 的基址;异常保留寄存器( e p s r 、e p c 、f p s r 、f p c ) 在c p u 发生异常和快速 中断时用来储存c p u 的状态和p c 指针;高速缓存配置寄存器实现对指令c a c h e 和数据c a c h e 的关联组、行大小和写策略的配置;高速缓存控制寄存器实现对指 令c a c h e 和数据c a c h e 的启用和清空。对控制寄存器的读写操作是通过m f c r 和 m t c r 指令来完成的,其中m f c r 指令实现对控制寄存器的写操作,m t c r 指令实现 对控制寄存器的读操作。 c p 0 还实现了c k c o r e 的低功耗指令( s t o p 、d o z e 、w a i t ) 。当这些指令 由执行单元( i u ) 传递给c p 0 后,c p 0 在确认可以进入低功耗模式时会产生全 局时钟关断信号,这时c p u 从正常执行状态转换到休眠状态。外部中断信号可 以唤醒c p u 。 由于m m u 采用软件管理t l b 的机制,所以当t l bm i s s 异常产生时,异常 处理程序需要完成对页表的搜索和t l b 的填充。硬件需要提供对t l b 填充的支 持,原有的c k c o r e 指令集没有读写t l b 的指令,解决方案是在m m u 中增 加一个m m u 控制寄存器,通过m t e r 指令设置该寄存器的读写标志位,当读写 标志位有效时,硬件会产生读写t l b 的控制信号,采用这种方法可以避免增加 特殊的指令。 2 5 本章小结 本章重点分析了c k - c o r e 的指令流水线、c a c h e 结构和协处理单元。为 了不增加流水线级数而影响系统性能,内存管理单元需要实现快速的地址转换, 在设计中考虑采用层次形的t l b 结构。首先访问第一级t l b ( m i c r o t l b ) ,m i c r o t l b 的表项结构比较简单,产生t l b 命中( t l bh i t ) 的逻辑延迟很短。如果在 m i c r o t l b 没有找到地址映射信息,m m u 采用硬件有限状态机( f s m ) 访问第 二级t l b ( j o i n t t l b ) 。为了提高命中率,j o i n t t l b 采用全相联的结构。为了降 低功耗,只有在j o i n t t l b 命中时才会产生对t l b 数据存储器的片选信号。另外, 第2 4 页 浙江大学硕士学位论文 为了完成指令地址( p c ) 和数据访问地址的并行转换,m m u 采用指令t l b 和 数据t l b 分离的结构。 m m u 还实现了一组控制寄存器以支持t l bm i s s 异常处理程序对t l b 的读 写操作。由于这些寄存器和m m u 的控制逻辑关系紧密,在设计中考虑由c p 0 产生对这些寄存器的读写控制信号,但寄存器的逻辑实现则在m m u 中完成。 第2 5 页 浙江大学硕士学位论文 3 内存管理单元的设计方法 嵌入式系统主要是面向低功耗和实时性的应用,在内存管理单元的设计中, 需要尽量降低硬件的成本和功耗,认真评估系统在最差情况下的系统性能 ( w o r s t - c a s ep e r f o r m a n c e ) 。本章将具体介绍m m u 的硬件实现,重点分析了如何 采用层次型的t l b 结构来加快地址映射的过程,并有效地降低功耗。 3 1 概述 c k c o r e 的内存管理单元( m m u ) 主要实现了地址转换和地址空间保护 机制。c k c o r e 的地址空间是3 2 位,存储体系采用段页( p a g e ds e g m e n t ) 管 理,提供了段级存取访问权限检查和页级精细粒度保护。 虚拟地址空间被分成4 个逻辑段,图3 1 显示了c k c o r e 虚拟地址空间 的段分配。在用户模式下,只可以访问0 x 0 0 0 0 _ _ 0 0 0 0 0 x 7 f f f _ f f f f 的地址空间, 对其它地址空间将引起特权异常。 核心段( 2 g 1 用户段( 2 g ) 可映射的核心段 ( s s e ( 3 2 :1 g b ) 不可映射不可缓存的核心房 ( s s e g l :5 1 2 m b ) 不可映射可缓存的核心段 ( s s e g o :5 1 2 m b ) 可映射的用户段 ( u s e g = 2 g b ) 图3 1c k c o r e 虚拟地址空间 以下是对4 个段功能的说明: 1 u s e g :在用户模式( u s e rm o d e ) 下,程序可以访问该虚拟地址空间( 起始 地址是0 x 0 0 0 00 0 0 0 ,结束地址是0 x 7 f f ff f f f ,大小是2 g 字节) 。对u s e g 访问将通过m m u 的转换,u s e g 一般是用来储存应用程序的代码段和数据 段。 第2 6 页 浙江大学硕士学位论文 6 支持页级精细粒度的保护机制。 7 m m u 实现了9 个寄存器支持读写t l b 表项,其中指令控制寄存器( m m u c o r l t m li n 咖l c t i o nr e g i s t e r ) 支持对j o i n tt l b 表项的替换。 8 j o 缸t l b 的某些表项可以被锁定,防止被软件替换出去。 3 2 微体系结构 m m u 和c k c o r e 的指令提取单元( i f u ) ,指令执行单元( i u ) ,存储单 元( l s u ) 以及协处理单元( c p o ) 存在接口信号。m m u 接受i f u 和l s u 发送 的虚拟地址,通过t l b 转换为物理地址,同时还进行地址访问的权限检查。当 地址访问出现异常时,砌懈7 产生的异常信号通过i f u 或者l s u 传送到i u 。c p o 主要是产生对m m u 寄存器的读写控制信号,对m m u 寄存器的读写操作是通过 特权指令( m t c r 和m & ) 来完成的。图3 2 显示了m m u 和c k c o r e 其它模 块的接口信号。 图3 2 删和c k c o r e 其他模块的接口信号 m m u 的数据通路主要包括m m u 寄存器组、指令m i c mt l b 、数据m i c r o t l b 和j o i m t l b 。图3 3 是m m u 的微体系结构图。 第2 8 页 浙江大学硕士学位论文 图3 3 舢微体系结构 如图3 3 所示,i f u 和l s u 发送的虚拟页地址和相关m i c m r n 卫所有表项的 1 毡部分的v p n 2 同时作相等比较,为了保证表项的数据是有效的,表项的有效 位必须是被置位的,否则比较结果无效。假设某一个t l b 表项的v p n 2 和虚拟 页地址相匹配,则由多路选择器选取相应的t l b 表项的数据部分。t l b 表项的 数据部分包括物理页号( p f n ) 和该物理页的存取控制标志位,根据存取控制标 志,m m u 在发送物理页号的同时,还会发送相应的存取控制信号( 如地址访问 是否授权,地址对应的数据能否缓存) 。如果没有在m i c mt l b 找到匹配的表项, m i c r ot l b 将请求j o i n tt l b 替换它的某一个表项,j o i n tt l b 需要1 6 个时钟 周期搜索它所有的表项,如果找到匹配的表项,j o i n tt l b 会产生物理页号并同 时根据l r u 算法替换m i c mn m 的某一个表项。如果在j o i n tt l b 仍然没有匹 第2 9 页 浙江大学硕士学位论文 配的映射信息,m m u 会产生t l bm i s s 异常。i f u 和l s u 把异常信号发送到i u , i u 会根据异常向量号计算异常处理程序的入口地址,在清空指令流水线缓存后, 把控制转移到异常处理程序。 3 3 数据通路设计 3 3 1m m u 寄存器组 加m ij 采用软件管理t l b 的机制,硬件实现了9 个寄存器以支持软件对t l b 表项的读写操作,这些操作是通过c p o 的m f c r 和m t c r 指令来实现的。以下详细 分析每个寄存器的功能。 1 控制指令寄存器 由于c k c o i 也的指令集没有提供针对t l b 表项的相关指令,在m m u 设计中 使用这个寄存器来产生相应的控制信号,避免了在c k c o r e 指令集中增加新 的指令。通过m t c r 指令在该寄存器的某个控制位置1 ,可以实现对t l b 表项 的读写和清空操作。控制指令寄存器的布局如图3 4 所示: 3 13 0 2 92 82 7 87o 图3 4 控制指令寄存器布局 t l b r t l b 读操作控制位 当该位置1 时,软件可以读取j o i n tt l b 表项的内容。t l b 表项的位置通过 索引寄存器的索引域指定,由于j o i n t t l b 有4 8 个表项,当索引域的值超出该范 围时,这个操作的返回结果是没有意义的。这个操作在1 个时钟周期完成,硬件 自动将该位清0 ,t l b 表项的内容被存储在t l b 索引标志( 1 1 a g ) 寄存器、 t l b 数据0 寄存器、t l b 数据1 寄存器和t l b 页掩膜寄存器。 t l b w i t l b 索引方式写操作控制位 当该位置1 时,软件可以指定某一个j o i n t l b 表项并更改其内容。t l b 表项 的位置通过索引寄存器的索引域指定,由于j o 血t l b 有4 8 个表项,当索引域的 值超出该范围时,这个操作的返回结果是没有意义的。这个操作在1 个时钟周期 完成,硬件自动将该位清0 ,t l b 对应表项被t l b1 她寄存器、t l b 数据0 寄存器、t l b 数据1 寄存器和t l b 页掩膜寄存器的内容更新。 第3 0 页 浙江大学硕士学位论文 t l b w r t l b 随机方式写操作控制位 当该位置1 时,软件以随机的方式更改j o i n tt l b 表项的内容。t l b 表项的 位置通过随机索引寄存器的索引域指定,硬件保证t l b 表项位置不超过t l b 表 项的范围。这个操作在1 个时钟周期完成,硬件自动将该位清o ,t l b 对应 表项被t l bt a g 寄存器、t l b 数据o 寄存器、t l b 数据1 寄存器和t l b 页掩膜 寄存器的内容更新。 t l b i n v t l b 清空操作控制位 当该位置1 时,硬件根据控制指令寄存器指定的a s i d 域,把匹配该a s i d 域的t l b 表项的有效位清除。这个操作在1 个时钟周期完成,硬件自动将该位 清o 。由于m m u 采用a s i d 机制来实现地址空间的保护,在每个t l b 表项 的t a g 都包含一个8 位的a s i d 域。由于a s i d 域最多只能分配给2 5 6 个进程, 当运行在系统中的进程数超过2 5 6 个时,在进程切换时,可能需要把同一个a s i d 分配给不同的进程( a s i dr e c y c l e ) ,所以硬件需要提供一种机制来清除该a s i d 对应的t l b 表项,通过这个命令可以有效地完成对t l b 某些表项的清空而不需 要清空所有t l b 的表项。 2 索引寄存器 这个寄存器的索引域在t l b 读操作和t l b 索引方式写操作时用来指定t l b 表 项的位置。索引寄存器的布局如图3 5 所示: 3 l6 5o 图3 5 索引寄存器布局 1 1 1 d e x 一索引域 软件可以修改该域的值,当索引域的值超出t l b 表项的范围时,这个操作的返 回结果是没有意义的。 3 随机索引寄存器 这个寄存器的索引域在t l b 随机方式写操作时用来指定t i 出表项的位置。随机 索引寄存器的布局如图3 6 所示: 第3 l 页 浙江大学硕士学位论文 3 1650 ! 竺! 竺l竺坚 图3 6 随机索引寄存器布局 h l d e x 一索引域 该寄存器是只读寄存器,软件不可以修改索引域。索引域的值的改变通过硬件来 实现,它的下限由索引下限寄存器的值指定,上限是t i m 表项数目减1 。在系 统初始化和软件更新索引下限寄存器后,索引域的值被设置为上限。 4 索引下限寄存器 这个寄存器指定了随机索引域的下限。在随机方式写t i m 表项操作时,可以禁 止软件修改一部分t l b 表项,这部分t l b 表项的内容可以通过索引方式写操作 ( t l b 、1 ) 更新。索引下限寄存器的布局如图3 7 所示: 3 l650 r c s e e dw i r e d 图3 7 索引下限寄存器布局 w i r e d t l b 随机索引域下限 这个寄存器在系统初始化后清07 ,软件可以修改下限值,这个操作同时会随机 索引寄存器的初始化。由于j o i n t t l b 有4 8 个表项,当下限值超出该范围时,这 个操作的返回结果是没有意义的。 5 t l b 数据0 寄存器和t l b 数据1 寄存器 这2 个寄存器的结构是一致的,在读写t l b 操作时分别对应t l b 表项的2 个数 据部分。数据部分保存了物理页号和页级存取控制位信息。在执行t l b 读操作 后,硬件将t l b 表项的2 个数据部分分别写入数据0 寄存器和数据1 寄存器: 在执行t l b 写操作时,数据0 寄存器和数据l 寄存器的内容将更新t l b 表项的 2 个数据部分。t l b 数据域寄存器的布局如图3 8 所示: 3 l2 62 5 65 32 lo 图3 ,8t l b 数据段o 和t l b 数据段1 寄存器布局 第3 2 页 浙江大学硕士学位论文 p f n 一物理页号 由于m m u 支持的最小页面是4 k 字节,物理页号对应物理地址的3 l 1 2 位。 c 一高速缓存标志( c a c h e a b l e ) 0 1 0 :读写该页不访问c a c h e 0 1 1 :读写该页需要访问c a c h e m m u 只支持上述2 种设置,其他设置将引起不可知的系统运行结果。 d 一修改标志( d i n y ) 这个标志位指示了是否可以对该页数据进行写操作。如果该位置l ,程序允许 对该页的写操作;如果该位清零,对该页执行写操作会引起t l b 修改异常( t l b m o d i f i e de x c e 砸o n ) 。在采用页式管理的存储系统中,需要知道每个物理页对应 的数据块是否被修改,在发生修改异常后,异常处理程序会更新对应页表p t e 的“脏”( d i n ) r ) 位。 v 一有效标志( v h l i d ) 这个标志位指示了t l b 表项储存的映射信息是否有效。如果该位置1 ,允许 对该页进行访问;如果该位清0 ,对该页的访问会引起t l b 无效异常( t l b i n v a l i de x c e p t i o n ) 。 g 一全局标志( g 1 0 b a l ) 这个标志位实现了内存共享,如果该位置1 ,所有的进程都可以对该页访问: 如果该位清零,在地址映射过程中需要比较a s i d 。 6 t l b 索引标志( t a g ) 寄存器 这个寄存器在读写t l b 操作时对应t l b 表项的索引标志部分,t a g 包括虚拟页 码和a s i d 。在执行t l b 读操作后,硬件将t l b 表项的t a g 部分写入该寄存器; 在执行t l b 写操作时,该寄存器的内容将更新m 表项的t a g 。在发生m 未 命中异常、t l b 修改异常、t l b 无效异常和t l b 重复匹配异常时,硬件自动地 将发生异常的虚拟页码写入v p n 。t l b 索引标志寄存器的布局如图3 9 所示: 3 11 21 l870 图3 9t l b 索引标志寄存器布局 第3 3 页 浙江大学硕士学位论文 v p n 一虚拟页码 由于m m u 支持的最小页面是4 k 字节,虚拟页码对应虚拟地址的3 1 1 2 位。 a s i d 一地址空间标识符 m 协,采用a s i d 机制实现地址空间的保护,这个域在每次进程切换时被软件更 新为当前进程的a s i d 。 7 p t e 索引寄存器 p t e b 髂e 域被软件设置为当前迸程页表的虚拟基地址。当发生t l bm i s s 异常时, 硬件把引起异常的虚拟地址的3 1 1 3 位( v p n 2 ) 自动装入b a d v p n 2 域,由 于页表在虚拟地址空间是连续的,所
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 由员工经营公司合同协议
- 热水器安装安全协议合同
- 深水井打井合同协议范本
- 牙科技术入股合作协议书
- 潍坊修剪车采购合同范本
- 香港化验所转让合同范本
- 杂志社与代理的合同协议
- 洪山区口译服务合同范本
- 苏州技师学院就业协议书
- 舞蹈培训机构合同协议书
- CNAS-CL62-2016 检测和校准实验室能力认可准则在基因扩增检测领域的应用说明
- 《煤矿职业病危害防治》培训课件2025
- 国际商务谈判失败的具体案例分析
- 《草莓酱的制作》课件
- 2025上海崇明现代农业园区开发限公司招聘39人高频重点提升(共500题)附带答案详解
- 住院患者跌倒、坠床、压力性损伤的风险评估及管理
- 东南大学版三基内科
- 开封市第一届职业技能大赛育婴员项目技术文件(康养照护品牌)
- 市场营销策划岗位招聘笔试题及解答(某大型央企)2024年
- 特种作业低压电工培训
- 静配中心医院感染课件
评论
0/150
提交评论