ARM 学习笔记(四) 快速上下文切换(FCSE)技术

原创 2011年10月21日 20:02:48

接上回说,

       我们已经了解存储器管理的方法,现在我们来看一下,ARM 对不同进程的地址管理-------快速上下文切换技术(Fast Context Switch Extension ,FCSE ).    FCSE 通过修改系统中不同进程的虚拟地址,避免在进行进程间切换时造成的虚拟地址到物理地址的重映射,从而提高系统的性能。

      FCSE的原理

      通常情况下,如果两个进程占用的虚拟地址空间由重叠,系统在这两个进程之间进行切换时,必须进行虚拟地址到物理地址的重映射。而虚拟地址到物理地址的重映射涉及到重建MMU中的页表,而且cache 及TLB中的内容都必须使无效(通过设置协处理器寄存器的相关位)。这些操作将带类巨大的系统开销,一方面重建MMU和使无效cache及TLB的内容需要很大的开销,另一方面重建cache和TLB内容也需要很大的开销。

      FCSE的引入避免了这种系统开销。它位于CPU和MMU 之间。 如果两个进程使用了同样的虚拟地址空间,则对CPU而言,两个进程使用了同样的虚拟地址空间;快速上下文切换机构对各进程的虚拟地址进行变换,这样的系统中除了CPU之外的部分看到的时经过快速上下文切换机构变换的虚拟地址。快速上下文切换机构将个进程的虚拟地址空间变换成不同的虚拟地址空间。这样在进行进程间切换时就不需要进行虚拟地址到物理地址的重映射。

      ARM系统中,4GB的虚拟空间被分成了128个进程空间块,每一个进程空间块大小为32MB。每个进程空间块中可以包含一个进程,该进程可以使用虚拟地址空间0x0~0x01FFFFFF,这个地址范围也就是CPU看到的进程的虚拟空间。系统128个进程空间块的编号0~127, 标号为X 的进程空间块中的进程实际使用的虚拟地址空间为(X *0x02000000)到(X*0x02000000+0x01FFFFFF),这个地址空间是系统中除了CPU 之外的其他部分看到的该进程所占用的虚拟地址空间。

      快速上下文切换机构将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,<Rd>,<c13>,c0,0

MRC           P15,0,<Rd>,<c13>,c0,0

其中, 在读操作时,结果中位[31::25]返回PID,其他位 的数值是不可以预知的。写操作将设置PID的值。

        当PID的值为0时,MVA=VA,相当于禁止了FCSE。系统复位后PID即为0.

        当PID的值不为0时,相当于使能了FCSE。

 

                                                                                                                                                                                                        Atlas.dayong

 

ARM处理器的快速上下文切换技术

5.3.1  FCSE概述FCSE(Fast Context Switch Extension,快速上下文切换)位于CPU和MMU之间,如果两个进程使用了同样的虚拟地址空间,则对CPU而言,两个进程使...
  • jinzheng_2010
  • jinzheng_2010
  • 2011-06-23 08:42:00
  • 2871

ARM的快速上下文切换(FCSE)

一、FCSE的原理       通常情况下,如果两个进程占用的虚拟地址空间由重叠,系统在这两个进程之间进行切换时,必须进行虚拟地址到物理地址的重映射。而虚拟地址到物理地址的重映射涉及到重建MMU中的...
  • y695385603
  • y695385603
  • 2013-10-27 14:05:20
  • 1684

ARM 学习笔记(四) 快速上下文切换(FCSE)技术

接上回说,        我们已经了解存储器管理的方法,现在我们来看一下,ARM 对不同进程的地址管理-------快速上下文切换技术(Fast Context Switch Extension ,...
  • dayong1001
  • dayong1001
  • 2011-10-21 20:02:48
  • 11919

UCOS时钟中断与<em>上下文切换</em>情景分析

由于目前没有对于LPC系列的UCOS的中断以及<em>上下文切换</em>没有做很详细的分析,本文以实验室的LPC2200系列Magic板子为目标硬件,以UCOS2.52为目标操作系统,通过一个时钟中断...
  • 2016年07月15日 00:00

ARM处理器的快速上下文切换技术FCSE

FCSE 概述     FCSE(Fast Context Switch Extension,快速上下文切换)位于 CPU 和 MMU 之间,如果两个进程使用了同样的虚拟地址空间,则对 CPU而言...
  • yinsexingkong
  • yinsexingkong
  • 2016-05-01 20:54:52
  • 246

ARM基础学习-快速上下文切换技术

FCSE的原理快速上下文切换技术(FCSE)通过修改系统中不同进程的虚拟地址,避免在进行进程间切换时造成虚拟地址到物理地址的重映射,从而提高系统性能;...
  • tanli20090506
  • tanli20090506
  • 2017-05-06 16:40:38
  • 201

context切换实例-arm

函数所在的文件:kernel/sched/core.c 正如下面注释所讲的,进程的切换主要包含两部分: 一部分:进程地址空间的切换 二部分:进程各自的cpu寄存器现场 ...
  • snowxshy01
  • snowxshy01
  • 2014-03-13 09:46:10
  • 537

arm处理器快速上下文切换

概述: FCSE(Fast Context Switch Extension,快速上下文切换)位于CPU和MMU之间,如果两个进程使用了同样的虚拟地址空间,则对CPU而言,两个进程使用了同样的虚拟地...
  • liebao_han
  • liebao_han
  • 2018-03-23 10:50:11
  • 22

任务调度与上下文切换时间测试

创建两个进程(实时进程)并在它们之间传送一个令牌,如此往返传送一定的次数。其中一个进程在读取令牌时就会引起阻塞。另一个进程发送令牌后等待其返回时也处于阻塞状态。发送令牌带来的开销与上下文切换带来的开销...
  • csshuke
  • csshuke
  • 2015-05-13 20:40:04
  • 539

上下文切换

上下文切换 保存一个被挂起的任务的上下文 并在 任务恢复时 恢复其上下文的这个处理过程就叫做上下文切换(context switching)。 任务上下文是指任务运行的环境。例如,针对x86的CPU,...
  • liukun321
  • liukun321
  • 2011-04-06 19:49:00
  • 3408
收藏助手
不良信息举报
您举报文章:ARM 学习笔记(四) 快速上下文切换(FCSE)技术
举报原因:
原因补充:

(最多只允许输入30个字)