CN104679584B - 矢量上下文切换方法 - Google Patents
矢量上下文切换方法 Download PDFInfo
- Publication number
- CN104679584B CN104679584B CN201310632541.1A CN201310632541A CN104679584B CN 104679584 B CN104679584 B CN 104679584B CN 201310632541 A CN201310632541 A CN 201310632541A CN 104679584 B CN104679584 B CN 104679584B
- Authority
- CN
- China
- Prior art keywords
- task
- vector
- context
- altiveccontext
- switched
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Abstract
本发明涉及一种矢量上下文切换方法,该方法包括:1)创建任务;所述任务包括前继任务以及后继任务;前继任务是被切换出处理器的任务;后继任务是切换进处理器的任务;2)根据用户输入的参数判断步骤1)中创建的任务是否是矢量任务;若是,申请矢量上下文空间并将该空间的首地址记录在任务控制块中的成员altivecContext中;若否,则设置任务控制块中的成员altivecContext为NULL;3)判断前继任务和后继任务的类型;4)根据前继任务和后继任务的类型对矢量上下文进行切换。本发明提供了一种可提高任务切换的性能的矢量上下文切换方法。
Description
技术领域
本发明属于计算机软件控制领域,涉及一种矢量上下文切换方法。
背景技术
随着航空电子技术的发展,信号处理和图像处理的大规模应用,CPU提供了矢量处理功能来提高计算性能,这也就对操作系统提出了新的性能要求。在一个操作系统中,矢量任务需要和非矢量任务配合使用,但是如果操作系统对每一个任务均切换矢量上下文则会造成大量的系统开销,影响系统性能,需要提出新的矢量任务和非矢量任务切换方法,为混合任务环境下任务的高效切换提供可能。
发明内容
为了解决背景技术中存在的矢量任务和非矢量任务混和调度的问题,本发明提供了一种可提高任务切换的性能的矢量上下文切换方法。
本发明的技术解决方案是:本发明提供了一种矢量上下文切换方法,其特殊之处在于:所述矢量上下文切换方法包括以下步骤:
1)创建任务;所述任务包括前继任务以及后继任务;所述前继任务是被切换出处理器的任务;所述后继任务是切换进处理器的任务;
2)根据用户输入的参数判断步骤1)中创建的任务是否是矢量任务;若是,申请矢量上下文空间并将该空间的首地址记录在任务控制块中的成员altivecContext中;若否,则设置任务控制块中的成员altivecContext为NULL;
3)判断前继任务和后继任务的类型;
4)根据前继任务和后继任务的类型对矢量上下文进行切换。
上述步骤3)中前继任务和后继任务的类型包括:矢量任务切换到矢量任务、矢量任务切换到非矢量任务、非矢量任务切换到矢量任务以及非矢量任务切换到非矢量任务。
上述步骤3)中的类型是矢量任务切换到矢量任务时,所述步骤4)的具体实现方式是:对矢量任务的上下文进行保存和恢复。
上述步骤3)中的类型是矢量任务切换到非矢量任务时,所述步骤4)的具体实现方式是:暂时不进行矢量上下文的保存,将前继任务控制块中的成员altivecContext传递给后继任务,仅将矢量任务的矢量上下文地址传递给了非矢量任务,将该保存工作推迟到切换矢量任务时才进行。
上述步骤4)中将前继任务控制块中的成员altivecContext传递给后继任务的具体实现方式是将前继任务控制块中的成员altivecContext进行标记后赋值给后继任务控制块中的成员altivecContext。
上述步骤3)中的类型是非矢量任务切换到矢量任务时,所述步骤4)的具体实现方式是:
4.1)判断前继任务控制块中的成员altivecContext是否为NULL;若是,则进行步骤4.2);若否,则进行步骤4.3);
4.2)在该任务运行前,没有运行过矢量任务:不需要进行矢量上下文的保存工作,仅需要恢复矢量上下文;
4.3)在该任务运行前运行过矢量任务:如果前继任务的矢量上下文与后继任务的矢量上下文不一致,则将矢量上下文保存到前继任务控制块所传递的上下文地址中,并清除前继任务控制块中的标记,恢复后继任务的矢量上下文,否则清除前继任务的矢量上下文。
上述步骤3)中的类型是非矢量任务切换到非矢量任务时,所述步骤4)的具体实现方式是:
4.1)判断前继任务控制块中的成员altivecContext是否是NULL;若是,则进行步骤4.2);若否,则进行步骤4.3);
4.2)在该任务运行前,没有运行过矢量任务;既不需要进行矢量上下文保存也不需要进行矢量上下文恢复;
4.3)在该任务运行前运行过矢量任务,将前继任务的矢量上下文传递到后继任务。
上述步骤4.3)中将前继任务的矢量上下文传递到后继任务的具体实现方式是将前继任务控制块中的成员altivecContext的值赋给后继任务控制块中的成员altivecContext,然后清除前继任务控制块中的altivecContext。
本发明的优点是:
本发明是仅在需要切换矢量上下文时进行切换,即仅在切换矢量任务时才切换矢量上下文。具体来说就是如果被切换的是非矢量任务,那么认为在该任务中不会破坏矢量上下文,即不需要保存矢量上下文,直到切换到矢量任务时才进行矢量上下文的保存和恢复工作,有效的提高了操作系统任务切换的性能。
附图说明
图1是本发明所提供方法的流程示意图。
具体实施方式
在任务创建时,判断用户输入的参数,如果是矢量任务,那么申请矢量上下文空间并将该空间的首地址记录在任务控制块中的成员altivecContext中;否则设置该成员为NULL。
在任务切换时(称被切换出处理器的任务为前继任务,称切换进处理器的任务为为后继任务),可能会发生以下四种情况:
1、矢量任务切换到矢量任务:
在这种情况下,由于两个任务均会进行矢量运算,所以需要保存和恢复矢量上下文。
2、矢量任务切换到非矢量任务:
在这种情况下,由于后继任务不会进行矢量运算,所以可以暂时不保存上下文。
3、非矢量任务切换到矢量任务:
在这种情况下,由于后继任务会进行矢量运算但是前继任务不进行矢量运算,所以需要恢复上下文。
4、非矢量任务切换到非矢量任务:
在这种情况下,由于两个任务均不会进行矢量运算,所以不需要保存和恢复上下文。
根据以上四种情况分别采取不同的处理措施:
1、矢量任务切换到矢量任务
在这种情况下,进行矢量上下文保存和恢复。
2、矢量任务切换到非矢量任务
在这种情况下,暂时不进行矢量上下文的保存工作,而是将前继任务控制块中的成员altivecContext传递给后继任务,即将前继任务控制块中的成员altivecContext进行标记后赋值给后继任务控制块中的成员altivecContext。此时,系统不需要进行矢量上下文的保存工作,仅将矢量任务的矢量上下文地址传递给了非矢量任务,将该保存工作推迟到切换矢量任务时才进行。
3、非矢量任务切换到矢量任务
在这种情况下还需要区分为两种情况:
3.1)前继任务控制块中的成员altivecContext为NULL,即在该任务运行前,没有运行过矢量任务:在这种情况下,不需要进行矢量上下文的保存工作,仅需要恢复矢量上下文。
3.2)前继任务控制块中的成员altivecContext不为NULL,即在该任务运行前运行过矢量任务:在这种情况下,如果前继任务的矢量上下文与后继任务的矢量上下文不一致,则将矢量上下文保存到前继任务控制块所传递的上下文地址中,并清除前继任务控制块中的标记,然后恢复后继任务的矢量上下文,否则清除前继任务的矢量上下文。
4、非矢量任务切换到非矢量任务
在这种情况下还需要区分为两种情况:
4.1)前继任务控制块中的成员altivecContext为NULL,即在该任务运行前,没有运行过矢量任务:
在这种情况下,既不需要进行矢量上下文保存也不需要进行矢量上下文恢复。
4.2)前继任务控制块中的成员altivecContext不为NULL,即在该任务运行前运行过矢量任务:
在这种情况下,将前继任务控制块中的成员altivecContext的值赋给后继任务控制块中的成员altivecContext,然后清除前继任务控制块中的altivecContext,即将前继任务的矢量上下文传递到后继任务。
使用本方法矢量任务和非矢量任务混合调度示例,如图1所示:
1)矢量任务A切换到非矢量任务B,将任务A的altivecContext成员的值增加标记后赋给任务B的altivecContext成员。
2)非矢量任务B切换到矢量任务C,将矢量寄存器中的内容保存到任务B的altivecContext成员所指向的内存空间,然后将任务B的altivecContext成员设置为NULL,将任务C的矢量上下文恢复到矢量寄存器中。
3)矢量任务C切换到非矢量任务B,将任务C的altivecContext成员的值增加标记后赋给任务B的altivecContext成员。
4)非矢量任务B切换到非矢量任务D,将任务B的altivecContext成员赋给任务D的altivecContext成员,然后将任务B的altivecContext成员设置为NULL。
5)非矢量任务D切换到矢量任务C,由于任务D的altivecContext成员与任务C的altivecContext成员一致,所以不需要切换矢量上下文,仅将任务D的altivecContext成员设置为NULL。
共发生5次任务切换,但矢量上下文切换仅发生1次,提高了任务切换的性能。
Claims (3)
1.一种矢量上下文切换方法,其特征在于:所述矢量上下文切换方法包括以下步骤:
1)创建任务;所述任务包括前继任务以及后继任务;所述前继任务是被切换出处理器的任务;所述后继任务是切换进处理器的任务;
2)根据用户输入的参数判断步骤1)中创建的任务是否是矢量任务;若是,申请矢量上下文空间并将该空间的首地址记录在任务控制块中的成员altivecContext中;若否,则设置任务控制块中的成员altivecContext为NULL;
3)判断前继任务和后继任务的类型;
4)根据前继任务和后继任务的类型对矢量上下文进行切换;
所述步骤3)中前继任务和后继任务的类型包括:矢量任务切换到矢量任务、矢量任务切换到非矢量任务、非矢量任务切换到矢量任务以及非矢量任务切换到非矢量任务;
所述步骤3)中的类型是矢量任务切换到矢量任务时,所述步骤4)的具体实现方式是:对矢量任务的上下文进行保存和恢复;
所述步骤3)中的类型是矢量任务切换到非矢量任务时,所述步骤4)的具体实现方式是:暂时不进行矢量上下文的保存,将前继任务控制块中的成员altivecContext传递给后继任务,仅将矢量任务的矢量上下文地址传递给了非矢量任务,将该保存工作推迟到切换矢量任务时才进行;
所述步骤3)中的类型是非矢量任务切换到矢量任务时,所述步骤4)的具体实现方式是:
4.1.1)判断前继任务控制块中的成员altivecContext是否为NULL;若是,则进行步骤4.1.2);若否,则进行步骤4.1.3);
4.1.2)在该任务运行前,没有运行过矢量任务:不需要进行矢量上下文的保存工作,仅需要恢复矢量上下文;
4.1.3)在该任务运行前运行过矢量任务:如果前继任务的矢量上下文与后继任务的矢量上下文不一致,则将前继任务的矢量上下文保存到前继任务控制块所传递的上下文地址中,并清除前继任务控制块中的标记,恢复后继任务的矢量上下文,否则清除前继任务的矢量上下文;
所述步骤3)中的类型是非矢量任务切换到非矢量任务时,所述步骤4)的具体实现方式是:
4.2.1)判断前继任务控制块中的成员altivecContext是否是NULL;若是,则进行步骤4.2.2);若否,则进行步骤4.2.3);
4.2.2)在该任务运行前,没有运行过矢量任务;既不需要进行矢量上下文保存也不需要进行矢量上下文恢复;
4.2.3)在该任务运行前运行过矢量任务,将前继任务的矢量上下文传递到后继任务。
2.根据权利要求1所述的矢量上下文切换方法,其特征在于:所述步骤4)中将前继任务控制块中的成员altivecContext传递给后继任务的具体实现方式是将前继任务控制块中的成员altivecContext进行标记后赋值给后继任务控制块中的成员altivecContext。
3.根据权利要求1所述的矢量上下文切换方法,其特征在于:所述步骤4.2.3)中将前继任务的矢量上下文传递到后继任务的具体实现方式是将前继任务控制块中的成员altivecContext的值赋给后继任务控制块中的成员altivecContext,然后清除前继任务控制块中的altivecContext。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310632541.1A CN104679584B (zh) | 2013-11-28 | 2013-11-28 | 矢量上下文切换方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310632541.1A CN104679584B (zh) | 2013-11-28 | 2013-11-28 | 矢量上下文切换方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104679584A CN104679584A (zh) | 2015-06-03 |
CN104679584B true CN104679584B (zh) | 2017-10-24 |
Family
ID=53314678
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310632541.1A Active CN104679584B (zh) | 2013-11-28 | 2013-11-28 | 矢量上下文切换方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104679584B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1233016A (zh) * | 1998-03-10 | 1999-10-27 | 朗迅科技公司 | 具有事件相关矢量选择的历境控制器和采用其的处理器 |
CN1656445A (zh) * | 2002-05-24 | 2005-08-17 | 皇家飞利浦电子股份有限公司 | 对宽存储器访问 |
CN1936847A (zh) * | 2005-09-19 | 2007-03-28 | 英特尔公司 | 上下文状态管理技术 |
US7363574B1 (en) * | 2004-10-12 | 2008-04-22 | Nortel Networks Limited | Method and system for parallel CRC calculation |
-
2013
- 2013-11-28 CN CN201310632541.1A patent/CN104679584B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1233016A (zh) * | 1998-03-10 | 1999-10-27 | 朗迅科技公司 | 具有事件相关矢量选择的历境控制器和采用其的处理器 |
US6205468B1 (en) * | 1998-03-10 | 2001-03-20 | Lucent Technologies, Inc. | System for multitasking management employing context controller having event vector selection by priority encoding of contex events |
CN1656445A (zh) * | 2002-05-24 | 2005-08-17 | 皇家飞利浦电子股份有限公司 | 对宽存储器访问 |
US7363574B1 (en) * | 2004-10-12 | 2008-04-22 | Nortel Networks Limited | Method and system for parallel CRC calculation |
CN1936847A (zh) * | 2005-09-19 | 2007-03-28 | 英特尔公司 | 上下文状态管理技术 |
Also Published As
Publication number | Publication date |
---|---|
CN104679584A (zh) | 2015-06-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2001097029A3 (en) | Method and apparatus for implementing an extended virtual machine | |
US20180232175A1 (en) | Virtual machine hot migration method, host and storage medium | |
JP2011512590A5 (zh) | ||
TW200710645A (en) | Migration of system images | |
CN106547613A (zh) | 任务处理流程的调度及故障恢复方法 | |
CN103353850B (zh) | 虚拟机热迁移内存处理方法、装置和系统 | |
WO2011088261A3 (en) | Methods and apparatus for coordinated energy management in virtualized data centers | |
CN106462451A (zh) | 虚拟化平台处理中断方法和相关设备 | |
WO2003100552A3 (en) | Hybrid threads for multiplexing virtual machine | |
EP1496421A3 (en) | Apparatus and method for performing transparent block cipher cryptographic functions | |
CN108155988A (zh) | 一种保护密钥的迁移方法、装置、设备及可读存储介质 | |
CN106569876A (zh) | 一种基于直接设备访问模型的虚拟机迁移的方法及装置 | |
CN113076182B (zh) | 计算任务的恢复方法、装置、用户设备及存储介质 | |
KR101276340B1 (ko) | 병렬 처리 시스템 및 그 방법 | |
CN104679585B (zh) | 浮点上下文切换方法 | |
CN104679584B (zh) | 矢量上下文切换方法 | |
CN102662799A (zh) | 数据备份的方法、服务器及热备份系统 | |
US9361114B1 (en) | Instruction based interrupt masking for managing interrupts in a computer environment | |
CN107851027A8 (zh) | 数据处理系统 | |
KR102045997B1 (ko) | 분산 파일 시스템을 기반으로 하는 빅데이터 처리 플랫폼의 태스크 스케줄링 방법, 이를 위한 컴퓨터 프로그램 및 컴퓨터 판독 가능 기록 매체 | |
TW200519738A (en) | Apparatus and method for performing transparent block cipher cryptographic functions | |
CN105786597A (zh) | uCOS-III操作系统实现任务切换的方法及装置 | |
TWI650703B (zh) | 在記憶體內之資料的非同步複製 | |
CN105378674B (zh) | 多内核操作系统进程处理方法及装置 | |
JPH11288366A (ja) | 情報処理方法及び装置並びに記憶媒体 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |