在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > μC/OS優(yōu)先級調(diào)度機制在PowerPC上的優(yōu)化

            μC/OS優(yōu)先級調(diào)度機制在PowerPC上的優(yōu)化

            作者: 時間:2010-11-25 來源:網(wǎng)絡(luò) 收藏

              在這段代碼中,首先判斷前32個任務(wù)是否有處于就緒態(tài)的,如果沒有的話,再對后32個任務(wù)進行判斷。由于優(yōu)先級最低的空閑任務(wù)總是處于就緒態(tài),所以后32個任務(wù)總能返回一個有效值。該代碼在前32個任務(wù)有就緒態(tài)時運行7條指令,在前32個任務(wù)均沒有就緒時需要執(zhí)行10條指令;而μC/OS原有的代碼編譯出來的匯編程序,則需要運行15條指令。

              使用這個方法的另一個好處是不再需要使用256字節(jié)的OSUnMapTbl表,任務(wù)控制塊TCB也不需要使用OSTCBX、OSTCBY和OSTCBBitY、OSTCBBitX變量,每個ECB中也不再需要OSRdyGrp,這也減少了對ROM和RAM的占用。

            4 改進擴展任務(wù)數(shù)的優(yōu)先級調(diào)度性能

              當對μC/OSII支持的任務(wù)數(shù)進行擴展時,按照μC/OSII原有的做法,需要按照高低字節(jié)分別查找OSUnMapTbl對照表。任務(wù)數(shù)為256時,尋找最高優(yōu)先級就緒任務(wù)的函數(shù)將需要運行約35條指令。數(shù)出前導(dǎo)零數(shù)目的指令在這種情況下的作用將更加顯著,對于32位PowerPC處理器,精心設(shè)計的代碼可以做到僅需10條指令就將任務(wù)數(shù)擴展到1024個。

              此時OSRdyGrp擴展為32位,OSrdyTbl擴展成32個32位的數(shù)組。從OSRdyGrp得到的前導(dǎo)零數(shù)目,就是任務(wù)優(yōu)先級高5位的值,乘以4可以得到該字的相對偏移地址;在OSRdyTbl中,定義高位對應(yīng)高優(yōu)先級任務(wù),低位對應(yīng)低優(yōu)先級任務(wù),則其前導(dǎo)零數(shù)目就是任務(wù)優(yōu)先級低5位的值,和高5位的值移位相加就得到完整的任務(wù)優(yōu)先級。通過將OSRdyGrp和OSRdyTbl定義成結(jié)構(gòu)體,利用結(jié)構(gòu)體首地址的相對尋址來分別讀取其數(shù)值,可以減少一次取地址的操作。

              尋找最高優(yōu)先級就緒態(tài)的最終代碼如下:

            typedef struct {//定義結(jié)構(gòu)體
              INT32U Tbl[32];
              INT32U Grp;
            } OSTaskRdyBlock;
            OSTaskRdyBlock OSRdy;//定義全局變量OSRdy
            asm INT16U FindHighestRdyTask(void){
              lisr5,OSRdy@ha//將OSRdy結(jié)構(gòu)體指針載入r5寄存器
              orir5,r5,OSRdy@l
              lwzr3,128(r5)//OSRdy.Grp在結(jié)構(gòu)體中具有固定偏移量
              cntlzwr3,r3//數(shù)出OSRdyGrp的前導(dǎo)零數(shù)目
              slwir6,r3,2//得到OSRdyTbl的地址偏移量
              lwzxr4,r6,r5//通過結(jié)構(gòu)體指針,讀取OSRdy.Tbl的對應(yīng)字
              cntlzwr4,r4//計算OSRdyTbl對應(yīng)字的前導(dǎo)零數(shù)目
              slwir3,r3,5//任務(wù)優(yōu)先級高5位移位
              addr3,r4,r3//和優(yōu)先級低5位相加,得到完整優(yōu)先級
              blr//返回
            }

              在64位的PowerPC 更有cntlzd(Count Leading Zero Double word)指令,一次就可以找出64個任務(wù)中優(yōu)先級最高的那個,就更沒有必要使用μC/OSII中的算法了。

            5 總結(jié)

              RTOS實時內(nèi)核μC/OS和μC/OSII中,任務(wù)調(diào)度算法巧妙,性能優(yōu)異,在應(yīng)用領(lǐng)域很有影響力,被移植到各種上。然而由于是為8位設(shè)計的,對于那些具有優(yōu)先級硬件算法指令的16/32/64位,μC/OSII的軟件算法就完全失去了優(yōu)勢。應(yīng)該利用這類CPU的特有指令,優(yōu)化任務(wù)調(diào)度算法,使RTOS的實時性達到最佳。對于這類處理器,僅移植μC/OSII軟件算法是很不夠的,應(yīng)該利用相關(guān)硬件算法指令。

            linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

            上一頁 1 2 3 下一頁

            關(guān)鍵詞: 嵌入式 CPU

            評論


            相關(guān)推薦

            技術(shù)專區(qū)

            關(guān)閉