• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    一種高效的浮點(diǎn)上下文切換算法

    2017-07-10 06:41:24張東梅濤
    科技風(fēng) 2017年2期

    張東 梅濤

    摘 要:為了提升基于浮點(diǎn)運(yùn)算的任務(wù)上下文切換性能,本文提出了一種高效的浮點(diǎn)上下文切換算法;基于某型嵌入式實(shí)時(shí)操作系,設(shè)計(jì)實(shí)現(xiàn)了所提出的浮點(diǎn)上下文切換算法,并進(jìn)行任務(wù)上下文切換的性能對(duì)比實(shí)驗(yàn);實(shí)驗(yàn)結(jié)果表明,本文提出的浮點(diǎn)上下文切換算法可以有效地提高混合環(huán)境下任務(wù)切換的效率,顯著減小浮點(diǎn)任務(wù)上下文切換的時(shí)間消耗。

    關(guān)鍵詞:浮點(diǎn)任務(wù);上下文切換;性能對(duì)比

    中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A

    一、背景

    隨著嵌入式領(lǐng)域信息處理技術(shù)的發(fā)展,越來(lái)越多的應(yīng)用需要使用浮點(diǎn)運(yùn)算來(lái)完成其功能,對(duì)操作系統(tǒng)[ 1 ]提出了新的功能和性能要求。在信息處理領(lǐng)域,通常情況下浮點(diǎn)任務(wù)和非浮點(diǎn)任務(wù)配合使用,完成各種計(jì)算。如果操作系統(tǒng)在任務(wù)切換的過(guò)程中,對(duì)每一個(gè)任務(wù)均保存和恢復(fù)浮點(diǎn)上下文,則會(huì)造成大量的時(shí)間和空間開(kāi)銷,嚴(yán)重影響系統(tǒng)性能,需要提出新的浮點(diǎn)任務(wù)和非浮點(diǎn)任務(wù)切換算法,為混合任務(wù)環(huán)境下任務(wù)的高效切換提供支持。

    二、浮點(diǎn)上下文切換算法

    上下文切換[ 2 ]的基本原理就是當(dāng)發(fā)生任務(wù)切換時(shí),保存當(dāng)前任務(wù)的寄存器到內(nèi)存中,將下一個(gè)即將要切換過(guò)來(lái)的任務(wù)的寄存器狀態(tài)恢復(fù)到當(dāng)前 CPU 寄存器中,使其繼續(xù)執(zhí)行,同一時(shí)刻只允許一個(gè)任務(wù)獨(dú)享寄存器。在任務(wù)切換的過(guò)程中是涉及任務(wù)上下文的保存和恢復(fù)操作,而任務(wù)上下文切換操作的性能是衡量操作系統(tǒng)性能的一個(gè)重要指標(biāo)。任務(wù)上下文切換指標(biāo)可以反映出操作系統(tǒng)在多任務(wù)環(huán)境下的處理能力。由于浮點(diǎn)運(yùn)算應(yīng)用的大量普及,已有的操作系統(tǒng)上下文切換算法已不能有效滿足實(shí)時(shí)高效處理的需求。

    為了提高任務(wù)切換的性能,減少浮點(diǎn)上下文的保存和恢復(fù)次數(shù),本文設(shè)計(jì)了一種高效浮點(diǎn)上下文切換算法。該浮點(diǎn)上下文切換的基本原理為:盡量延遲浮點(diǎn)上下文的保存和恢復(fù)操作,僅在切換到使用浮點(diǎn)運(yùn)算的任務(wù)時(shí),才進(jìn)行浮點(diǎn)上下文的保存和恢復(fù)操作。使用浮點(diǎn)運(yùn)算的任務(wù)稱為浮點(diǎn)任務(wù),否則稱為普通任務(wù)。如果當(dāng)前執(zhí)行的任務(wù)為普通任務(wù),那么該任務(wù)在運(yùn)行過(guò)程中不會(huì)進(jìn)行浮點(diǎn)運(yùn)算,不會(huì)破壞浮點(diǎn)上下文,則不需要進(jìn)行浮點(diǎn)上下文的保存和恢復(fù)操作;如果當(dāng)前執(zhí)行的任務(wù)為浮點(diǎn)任務(wù),那么直到換到另一個(gè)浮點(diǎn)任務(wù)時(shí),才進(jìn)行浮點(diǎn)上下文的保存和恢復(fù)操作。根據(jù)該原理,系統(tǒng)中需要進(jìn)行浮點(diǎn)上下文的切換操作的影響范圍僅與系統(tǒng)中使用浮點(diǎn)運(yùn)算的任務(wù)相關(guān),有效地提高了系統(tǒng)中任務(wù)切換的性能和效率。圖1給出了浮點(diǎn)上下文切換的示意。

    由圖可知,假設(shè)系統(tǒng)當(dāng)前有4個(gè)任務(wù),浮點(diǎn)任務(wù)A,普通任務(wù)B,浮點(diǎn)任務(wù)C和普通任務(wù)D。根據(jù)前述浮點(diǎn)上下文切換原理,在任務(wù)A切換任務(wù)B的過(guò)程中,并不需要保存浮點(diǎn)任務(wù)A的浮點(diǎn)上下文,僅僅將浮點(diǎn)任務(wù)A的浮點(diǎn)上下文向任務(wù)B傳遞;當(dāng)由普通任務(wù)B切換到浮點(diǎn)任務(wù)C的時(shí)候,才需要保存浮點(diǎn)任務(wù)A的浮點(diǎn)上下文。在進(jìn)行了兩次任務(wù)切換時(shí),僅需要一次浮點(diǎn)上下文的切換操作,可以有效降低由于浮點(diǎn)運(yùn)算導(dǎo)致的系統(tǒng)性能的下降。

    三、浮點(diǎn)上下文切換算法的實(shí)現(xiàn)

    根據(jù)前述浮點(diǎn)上下文切換原理,選擇某型嵌入式實(shí)時(shí)操作系統(tǒng)軟件(RTOS)實(shí)現(xiàn)該上下文切換算法。為了敘述方便,定義前繼任務(wù)為當(dāng)前即將切換出去的任務(wù);后繼任務(wù)為即將切換進(jìn)入CPU執(zhí)行的任務(wù)。為了能夠簡(jiǎn)潔高效地實(shí)現(xiàn)該浮點(diǎn)上下文切換算法,在所選擇的RTOS的任務(wù)控制塊中增加了一個(gè)任務(wù)浮點(diǎn)屬性,標(biāo)識(shí)當(dāng)前任務(wù)是否為浮點(diǎn)任務(wù)。如果在創(chuàng)建任務(wù)時(shí),設(shè)置了任務(wù)的浮點(diǎn)屬性,則所創(chuàng)建的任務(wù)即為浮點(diǎn)任務(wù);否則為普通任務(wù)。

    為了充分發(fā)揮浮點(diǎn)運(yùn)算的性能,浮點(diǎn)上下文地址通常要求按CPU字長(zhǎng)的整數(shù)倍對(duì)齊,本文所選擇的RTOS中,浮點(diǎn)上下文按照8字節(jié)對(duì)齊。在實(shí)現(xiàn)前文提出的浮點(diǎn)上下文切換方法的過(guò)程中,使用了任務(wù)浮點(diǎn)上下文的最低位,作為任務(wù)浮點(diǎn)上下文傳遞的標(biāo)記。當(dāng)浮點(diǎn)上下文傳遞標(biāo)記被置位,則認(rèn)為當(dāng)前任務(wù)中的浮點(diǎn)上下文為傳遞過(guò)來(lái)的,當(dāng)前任務(wù)為普通任務(wù),并不是浮點(diǎn)任務(wù);否則,表示當(dāng)前任務(wù)就是浮點(diǎn)任務(wù)。

    任務(wù)切換的過(guò)程中,根據(jù)前繼任務(wù)和后繼任務(wù)的不同類型,需要進(jìn)行不同的操作。

    本文設(shè)計(jì)的浮點(diǎn)上下文切換算法的具體步驟如下:

    1)判斷所創(chuàng)建的任務(wù)是否為浮點(diǎn)任務(wù)。

    2)如果是浮點(diǎn)任務(wù),則申請(qǐng)浮點(diǎn)上下文空間,并將申請(qǐng)的浮點(diǎn)上下文空間記錄在任務(wù)控制塊的浮點(diǎn)上下文成員中;否則,則設(shè)置任務(wù)控制塊中的浮點(diǎn)上下文成員為空。

    3)任務(wù)切換時(shí),判斷前繼任務(wù)和后繼任務(wù)的類型;可能存在的任務(wù)類型組合包括:

    a.浮點(diǎn)任務(wù)/浮點(diǎn)任務(wù);

    b.浮點(diǎn)任務(wù)/非浮點(diǎn)任務(wù);

    c.非浮點(diǎn)任務(wù)/浮點(diǎn)任務(wù);

    d.非浮點(diǎn)任務(wù)/非浮點(diǎn)任務(wù)。

    4)根據(jù)前繼任務(wù)和后繼任務(wù)的類型對(duì)浮點(diǎn)上下文進(jìn)行切換操作:

    ①如果為步驟3)的a.組合,則對(duì)浮點(diǎn)任務(wù)的上下文進(jìn)行保存和恢復(fù);

    ②如果為步驟3)的b.組合,暫時(shí)不進(jìn)行浮點(diǎn)上下文的保存,將前繼任務(wù)控制塊中的浮點(diǎn)上下文成員傳遞給后繼任務(wù),而將浮點(diǎn)上下文的保存操作推遲到切換浮點(diǎn)任務(wù)時(shí)才進(jìn)行;

    ③如果為步驟3)的c.組合,任務(wù)上下文切換操作過(guò)程如下:

    (a)判斷前繼任務(wù)控制塊中的浮點(diǎn)上下文成員是否為空;如果為空,則進(jìn)行步驟(b);否則,則進(jìn)行步驟(c);

    (b)在當(dāng)前任務(wù)運(yùn)行前,沒(méi)有浮點(diǎn)任務(wù)運(yùn)行,不需要進(jìn)行浮點(diǎn)上下文的保存工作,僅需要恢復(fù)浮點(diǎn)上下文;

    (c)在當(dāng)前任務(wù)運(yùn)行前,有浮點(diǎn)任務(wù)運(yùn)行,如果前繼任務(wù)的浮點(diǎn)上下文與后繼任務(wù)的浮點(diǎn)上下文不一致,則將浮點(diǎn)上下文保存到前繼任務(wù)控制塊所傳遞的上下文中,并清除前繼任務(wù)控制塊浮點(diǎn)上下文傳遞標(biāo)記,恢復(fù)后繼任務(wù)的浮點(diǎn)上下文,否則清除前繼任務(wù)的浮點(diǎn)上下文;

    ④如果為步驟3)的d.組合,任務(wù)上下文切換操作的方式為:

    (a)判斷前繼任務(wù)控制塊中的浮點(diǎn)上下文成員是否為空;如果為空,則進(jìn)行步驟(b);否則,則進(jìn)行步驟(c);

    (b)在當(dāng)前任務(wù)運(yùn)行前,沒(méi)有浮點(diǎn)任務(wù)運(yùn)行;不需要進(jìn)行浮點(diǎn)上下文保存/恢復(fù)操作;

    (c)在當(dāng)前任務(wù)運(yùn)行前,有浮點(diǎn)任務(wù)運(yùn)行,將前繼任務(wù)的浮點(diǎn)上下文傳遞到后繼任務(wù),并清除前繼任務(wù)控制塊中的浮點(diǎn)上下文成員。

    四、浮點(diǎn)上下文切換算法的性能

    為了驗(yàn)證本文設(shè)計(jì)的浮點(diǎn)上下文切換算法的性能,根據(jù)前文設(shè)計(jì)的上下文切換算法,在某型RTOS中實(shí)現(xiàn)了上述浮點(diǎn)上下文切換算法,并在PowerPC7450單核處理器[ 3 ]平臺(tái)上進(jìn)行性能驗(yàn)證實(shí)驗(yàn)。為了比較本文設(shè)計(jì)的浮點(diǎn)上下文切換算法的性能,在所選擇的RTOS中使用始終在任務(wù)上下文中保存和恢復(fù)浮點(diǎn)上下文方法切換上下文,即在每次任務(wù)切換時(shí),均對(duì)每個(gè)前繼任務(wù)保存浮點(diǎn)上下文并且對(duì)后繼任務(wù)恢復(fù)浮點(diǎn)上下文,并在同一處理器平臺(tái)上進(jìn)行性能驗(yàn)證實(shí)驗(yàn)。

    實(shí)驗(yàn)中通過(guò)兩個(gè)任務(wù)進(jìn)行切換操作,計(jì)算任務(wù)上下文切換操作的時(shí)間。實(shí)驗(yàn)場(chǎng)景[ 4 ]如下,任務(wù)A和任務(wù)B進(jìn)行切換,在任務(wù)A從CPU中切換出來(lái)的點(diǎn)開(kāi)始第一次計(jì)時(shí),在任務(wù)B切換進(jìn)入CPU的點(diǎn)記錄第一結(jié)束時(shí)間;然后,在任務(wù)B切換出來(lái)的點(diǎn)開(kāi)始第二次計(jì)時(shí),在任務(wù)A切換進(jìn)入CPU的點(diǎn)記錄第二次結(jié)束時(shí)間,通過(guò)1000次任務(wù)切換操作,計(jì)算任務(wù)上下文切換操作的平均時(shí)間。

    基于本文設(shè)計(jì)的浮點(diǎn)上下文切換方法,實(shí)驗(yàn)結(jié)果如下所示:

    如果任務(wù)切換時(shí)按照始終進(jìn)行浮點(diǎn)上下文切換的算法進(jìn)行上下文切換操作時(shí),實(shí)驗(yàn)數(shù)據(jù)如下:

    根據(jù)實(shí)驗(yàn)結(jié)果,可置本文設(shè)計(jì)的浮點(diǎn)上下文切換算法,在非浮點(diǎn)任務(wù)和浮點(diǎn)任務(wù)混雜的運(yùn)算環(huán)境下,可以有效地提高任務(wù)切換的性能,顯著地降低任務(wù)切換的時(shí)間消耗;對(duì)于計(jì)算資源相對(duì)有限的嵌入式環(huán)境,上下文切換性能的提升,可以有效提高系統(tǒng)的效率;對(duì)于實(shí)時(shí)性要求較高的環(huán)境,任務(wù)上下文切換時(shí)間的降低,可以顯著提高系統(tǒng)的實(shí)時(shí)響應(yīng)能力。

    五、結(jié)語(yǔ)

    本文設(shè)計(jì)了一種高效的浮點(diǎn)上下文切換算法,根據(jù)性能對(duì)比實(shí)驗(yàn)結(jié)果,證實(shí)了本文提出算法可以有效地提高系統(tǒng)的任務(wù)切換性能,顯著地降低任務(wù)上下文切換的時(shí)間消耗。通過(guò)與已有的任務(wù)上下文切換算法進(jìn)行對(duì)比實(shí)驗(yàn),證明本文設(shè)計(jì)實(shí)現(xiàn)的浮點(diǎn)上下文切換算法,在使用浮點(diǎn)運(yùn)算和非浮點(diǎn)運(yùn)算混合的情況下可以提高上下文切換的性能,可以顯著提高系統(tǒng)的效率,增強(qiáng)系統(tǒng)性能。

    參考文獻(xiàn):

    [1] 陳瑜,諶衛(wèi)軍譯.操作系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[M].北京:電子工業(yè)出版社,2007,3.

    [2] 孫利鋒.嵌入式操作系統(tǒng)任務(wù)切換方法對(duì)比分析[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2011年07期:10-12.

    [3] Freescale Inc.MPC7450 microprocessor family users manual [M].USA: Freescale Inc,2010.

    [4] 王蕾,樸希望,李世群,陳蕾.嵌入式實(shí)時(shí)操作系統(tǒng)的時(shí)間性能測(cè)試[J].內(nèi)蒙古大學(xué)學(xué)報(bào),2011年,42卷第5期:547-551.

    基金項(xiàng)目:

    工信部民用飛機(jī)專項(xiàng)科研項(xiàng)目(MJ-S-2012-05)

    作者簡(jiǎn)介:

    張東(1983-),男,陜西西安人,碩士,主要研究方向?yàn)榍度胧綄?shí)時(shí)操作系統(tǒng)。

    万盛区| 崇州市| 宁南县| 乌兰浩特市| 五莲县| 铁力市| 霍州市| 大丰市| 道真| 富裕县| 临城县| 阿尔山市| 吉隆县| 多伦县| 菏泽市| 靖州| 锦州市| 潼南县| 竹北市| 千阳县| 青海省| 丹东市| 鲁山县| 昌乐县| 铁力市| 溧水县| 肥西县| 江安县| 南部县| 正定县| 乌审旗| 寻乌县| 克东县| 卢湾区| 双城市| 靖边县| 舞钢市| 安福县| 西畴县| 根河市| 望江县|