ARM基础学习-快速上下文切换技术
2017-05-06 16:40
225 查看
FCSE的原理
快速上下文切换技术(FCSE)通过修改系统中不同进程的虚拟地址,避免在进行进程间切换时造成虚拟地址到物理地址的重映射,从而提高系统性能;
通常情况下,如果两个进程占用的虚拟地址空间重叠,系统在这两个进程之间进行切换时,必须进行虚拟地址到物理地址的重映射。而虚拟地址到物理地址的重映射涉及到重建MMU中的页表,而且cache 及TLB中的内容都必须使无效(通过设置协处理器寄存器的相关位)。这些操作将带类巨大的系统开销,一方面重建MMU和使无效cache及TLB的内容需要很大的开销,另一方面重建cache和TLB内容也需要很大的开销。
如果两个进程使用了同样的虚拟地址空间,则对CPU而言,两个进程使用了同样的虚拟地址空间;快速上下文切换机构对各进程的虚拟地址进行变换,这样的系统中除了CPU之外的部分看到的是经过快速上下文切换机构变换的虚拟地址。快速上下文切换机构将各进程的虚拟地址空间变换成不同的虚拟地址空间。这样在进行进程间切换时就不需要进行虚拟地址到物理地址的重映射。
ARM系统中,4GB的虚拟空间被分成了128个进程空间块,每一个进程空间块大小为32MB。每个进程空间块中可以包含一个进程,该进程可以使用虚拟地址空间0x0~0x01FFFFFF,这个地址范围也就是CPU看到的进程的虚拟空间。系统128个进程空间块的编号0~127。 标号为X的进程空间块中的进程实际使用的虚拟地址空间为:
(X 0x02000000)到(X**0x02000000+0x01FFFFFF),这个地址空间是系统中除了CPU 之外的其他部分看到的该进程所占用的虚拟地址空间。
注:虽然虚拟空间被分成了128个进程空间块,每个进程空间块的大小为32MB,但这只是针对虚拟空间而言。在经过MMU转换以后,实际的物理空间块的大小可能只有1M,因为虚拟地址是被划分成段的
快速上下文切换机构将CPU发出的每个虚拟地址按照上述的规则进行变换,然后发送到系统的其他部分。变换过程如下图:
由地址VA到MVA的变换算法如下所示;
其中。PID为当前进程的所在进程空间的编号,即当前进程的进程标识符。其取值为0~127。
访问寄存器C13的指令格式如下所示。
MCR p15, 0,,,c0,0
MRC P15,0,,,c0,0
其中, 在读操作时,结果中位[31::25]返回PID,其他位 的数值是不可以预知的。写操作将设置PID的值。
快速上下文切换技术(FCSE)通过修改系统中不同进程的虚拟地址,避免在进行进程间切换时造成虚拟地址到物理地址的重映射,从而提高系统性能;
通常情况下,如果两个进程占用的虚拟地址空间重叠,系统在这两个进程之间进行切换时,必须进行虚拟地址到物理地址的重映射。而虚拟地址到物理地址的重映射涉及到重建MMU中的页表,而且cache 及TLB中的内容都必须使无效(通过设置协处理器寄存器的相关位)。这些操作将带类巨大的系统开销,一方面重建MMU和使无效cache及TLB的内容需要很大的开销,另一方面重建cache和TLB内容也需要很大的开销。
如果两个进程使用了同样的虚拟地址空间,则对CPU而言,两个进程使用了同样的虚拟地址空间;快速上下文切换机构对各进程的虚拟地址进行变换,这样的系统中除了CPU之外的部分看到的是经过快速上下文切换机构变换的虚拟地址。快速上下文切换机构将各进程的虚拟地址空间变换成不同的虚拟地址空间。这样在进行进程间切换时就不需要进行虚拟地址到物理地址的重映射。
ARM系统中,4GB的虚拟空间被分成了128个进程空间块,每一个进程空间块大小为32MB。每个进程空间块中可以包含一个进程,该进程可以使用虚拟地址空间0x0~0x01FFFFFF,这个地址范围也就是CPU看到的进程的虚拟空间。系统128个进程空间块的编号0~127。 标号为X的进程空间块中的进程实际使用的虚拟地址空间为:
(X 0x02000000)到(X**0x02000000+0x01FFFFFF),这个地址空间是系统中除了CPU 之外的其他部分看到的该进程所占用的虚拟地址空间。
注:虽然虚拟空间被分成了128个进程空间块,每个进程空间块的大小为32MB,但这只是针对虚拟空间而言。在经过MMU转换以后,实际的物理空间块的大小可能只有1M,因为虚拟地址是被划分成段的
快速上下文切换机构将CPU发出的每个虚拟地址按照上述的规则进行变换,然后发送到系统的其他部分。变换过程如下图:
由地址VA到MVA的变换算法如下所示;
if (VA[31:25]==0b0000000)then MVA=VA|(PID<<25) else MVA=VA
其中。PID为当前进程的所在进程空间的编号,即当前进程的进程标识符。其取值为0~127。
系统中,每个进程都使用虚拟地址空间0x0~0x01FFFFFF,当进程访问本进程的指令和数据时,它产生的为虚拟地址VA的高7位为0;快速上下文切换机构用该进程的进程标示符代替VA的高7位,从而得到变换后的虚拟地址MVA,这个MVA在该进程对应的进程空间块内。 当VA的高7位不全是0时,MVA=VA。这种VA是本进程用于访问别的进程中的数据和指令的虚拟地址,注意这时被访问的进程标识符不能为0. CP15中的寄存器C13用于快速上下文切换。其编码格式如下所示。
访问寄存器C13的指令格式如下所示。
MCR p15, 0,,,c0,0
MRC P15,0,,,c0,0
其中, 在读操作时,结果中位[31::25]返回PID,其他位 的数值是不可以预知的。写操作将设置PID的值。
当PID的值为0时,MVA=VA,相当于禁止了FCSE。系统复位后PID即为0. 当PID的值不为0时,相当于使能了FCSE。
相关文章推荐
- ARM 学习笔记(四) 快速上下文切换(FCSE)技术
- ARM 学习笔记(四) 快速上下文切换(FCSE)技术
- 信息安全技术基础学习指导
- 《JAVA2核心技术 卷一 基础知识(原书第七版)》《Core java2,Volume I-Fondamentsls Seven Edition》 学习笔记(一)
- Visual C# 技术内幕学习笔记 第二章 C#基础(2) 类成员
- IronRuby - 快速在半小时学习Ruby基础知识
- linux设备驱动学习需要掌握的基础技术
- 快速学习,理解.SQL注入技术
- 花了一个月学习网站开发的相关基础技术
- 超频基础技术教程学习
- 学习ARM技术并不难,难就难字看你自己会不会学习
- 【J2me3D系列学习文章之一】J2me3D开发技术和基础知识
- 《JAVA2核心技术 卷一 基础知识(原书第七版)》《Core java2,Volume I-Fondamentsls Seven Edition》 学习笔记(二)BREAK和CONTINUE的区别
- 快速学习,理解.SQL注入技术
- Java2核心技术第七版的学习笔记(三) Fundamental Programming Structures in Java(Java语言的基础)(四):
- Visual C# 技术内幕学习笔记 第二章 C#基础(1) 几个概念
- 发现一个很全面的网络基础技术学习网站
- Java2核心技术第七版的学习笔记(三) Fundamental Programming Structures in Java(Java语言的基础)(三)
- Ajax 基础学习与技术指南
- Visual C# 技术内幕学习笔记 第二章 C#基础(4) 可访问性、命名空间