国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

實(shí)時(shí)機(jī)模型及時(shí)間語(yǔ)義指令集研究*

2021-05-11 01:35:34陳香蘭周學(xué)海
關(guān)鍵詞:指令集時(shí)序指令

陳香蘭,李 曦,汪 超,周學(xué)海

(中國(guó)科學(xué)技術(shù)大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,安徽 合肥 230027)

1 引言

航空航天、汽車電子和軌道交通等硬實(shí)時(shí)HRT(Hard Real-Time)系統(tǒng)需要嚴(yán)格的時(shí)域控制,要求系統(tǒng)設(shè)計(jì)滿足時(shí)間可預(yù)測(cè)性,以保證時(shí)序行為確定性和安全隔離。所謂“時(shí)間可預(yù)測(cè)性”一般指靜態(tài)地計(jì)算程序執(zhí)行時(shí)間(Execution Time)的安全和精確上界的能力,與計(jì)算機(jī)體系結(jié)構(gòu)和任務(wù)執(zhí)行機(jī)制密切相關(guān)。現(xiàn)代的計(jì)算機(jī)系統(tǒng)通過(guò)在各個(gè)層次引入計(jì)算并行化和訪存緩存化等優(yōu)化機(jī)制,雖然有效提升了系統(tǒng)的平均性能,卻也帶來(lái)了嚴(yán)重的時(shí)序不確定性問(wèn)題。另一方面,傳統(tǒng)實(shí)時(shí)系統(tǒng)設(shè)計(jì)采用優(yōu)先級(jí)調(diào)度策略,依賴定時(shí)器盡力而為地滿足任務(wù)執(zhí)行的時(shí)間約束,但定時(shí)器為處理器外設(shè),與指令執(zhí)行異步,且優(yōu)先級(jí)調(diào)度可能存在時(shí)序異常等問(wèn)題。這兩方面的原因?qū)е鲁绦驁?zhí)行時(shí)間在設(shè)計(jì)階段難以緊致確定,且平臺(tái)依賴,難以驗(yàn)證。因此,現(xiàn)有設(shè)計(jì)方法只能基于保守設(shè)計(jì)思想,以最壞情況執(zhí)行時(shí)間WCET(Worst-Case Execution Time)分析理論為基礎(chǔ),采用時(shí)序相對(duì)簡(jiǎn)單的系統(tǒng)架構(gòu)或過(guò)量資源預(yù)留策略,導(dǎo)致實(shí)際應(yīng)用中的資源利用率甚至不足30%。即便如此,在設(shè)計(jì)時(shí)仍然無(wú)法保證可預(yù)測(cè)性,操作的正確性只能事后驗(yàn)證。

未來(lái)的實(shí)時(shí)系統(tǒng)具有混合關(guān)鍵系統(tǒng)MCS(Mixed Critical System)特征,要求為時(shí)序關(guān)鍵(Timing Critical)應(yīng)用提供實(shí)時(shí)性保證,為安全關(guān)鍵(Safety Critical)應(yīng)用提供時(shí)空隔離能力,為其他應(yīng)用提供高性能算力。因此,需要構(gòu)建嚴(yán)格的緊致時(shí)間MTTT(Multi-Tier Tight Timing)設(shè)計(jì)方法,需要突破現(xiàn)有計(jì)算機(jī)體系結(jié)構(gòu)理論和方法的局限,建立軟硬件混合系統(tǒng)的建模方法。

自20世紀(jì)90年代起,實(shí)時(shí)系統(tǒng)研究者認(rèn)識(shí)到時(shí)間可預(yù)測(cè)性對(duì)硬實(shí)時(shí)系統(tǒng)設(shè)計(jì)的重要性,以構(gòu)造時(shí)間行為可預(yù)測(cè)的實(shí)時(shí)系統(tǒng)為目標(biāo),從計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)、處理器微結(jié)構(gòu)、編程模型和編程語(yǔ)言等方面展開了廣泛而深入的研究。研究表明,采用構(gòu)件化軟件體系結(jié)構(gòu)、基于時(shí)間觸發(fā)執(zhí)行機(jī)制和LET(Logical Execution Time)編程模型[1]構(gòu)建時(shí)序關(guān)鍵系統(tǒng)是實(shí)現(xiàn)MCS系統(tǒng)時(shí)序隔離、可預(yù)測(cè)、可組合和可擴(kuò)展(Extensibility)的可行技術(shù)路線。

但是,受上述體系結(jié)構(gòu)和任務(wù)執(zhí)行機(jī)制限制,LET模型系統(tǒng)執(zhí)行效率低下。為此,本文認(rèn)為必須解決2個(gè)關(guān)鍵問(wèn)題:(1)建立操作的時(shí)間語(yǔ)義模型,明確其時(shí)間行為、時(shí)間屬性和時(shí)間約束等要求;(2)突破現(xiàn)有計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)限制,提出具有時(shí)間語(yǔ)義的實(shí)時(shí)計(jì)算基礎(chǔ)架構(gòu)模型(處理器體系結(jié)構(gòu)、編程語(yǔ)言、分布式通信)和編程范式。目前廣泛應(yīng)用的建模方法只提供了描述時(shí)序約束的語(yǔ)法糖,缺少時(shí)間語(yǔ)義,無(wú)法在設(shè)計(jì)時(shí)進(jìn)行時(shí)序驗(yàn)證和組合。

本文提出一種具有時(shí)間語(yǔ)義的處理器體系結(jié)構(gòu)模型——實(shí)時(shí)機(jī)RTM(Real-Time Machine),和時(shí)間觸發(fā)指令集TTI(Time-Triggered Instruction set)[2],作為構(gòu)建多層次協(xié)同的緊致時(shí)間MTTT設(shè)計(jì)方法的重要基礎(chǔ)。

2 相關(guān)研究

本節(jié)對(duì)當(dāng)前支持實(shí)時(shí)計(jì)算的處理器體系結(jié)構(gòu)和高級(jí)編程語(yǔ)言的研究現(xiàn)狀進(jìn)行梳理。

2.1 實(shí)時(shí)計(jì)算處理器體系結(jié)構(gòu)

實(shí)時(shí)處理器研究工作可分為3類:時(shí)間可預(yù)測(cè)處理器TPP(Time/Temporal/Timing Predictable Processor)、RTOS(Real-Time Operating System)加速器和反應(yīng)式處理器。

LEOPARD(LEOn-based Probabilictically Analyzable processor Design)[3]基于通用處理器LEO,增加低開銷機(jī)制,支持基于測(cè)量的時(shí)序分析MBTA(Measurement-Based Timing Analysis)WCET時(shí)捕捉抖動(dòng)(延時(shí)變化)資源的影響。在計(jì)算核級(jí),分別控制Cache、TLB和延時(shí)可變的浮點(diǎn)計(jì)算單元的抖動(dòng)。在芯片級(jí),控制競(jìng)爭(zhēng),保證時(shí)間可組合。

DMT(Dominant Meta Thread)[4]為同步多線程SMT(Simultaneous MultiTreading)處理器。處理器中存在多個(gè)硬實(shí)時(shí)(HRT)和軟實(shí)時(shí)SRT(Soft Real-Time)或非實(shí)時(shí)線程。主線程DMT以看起來(lái)是處理器中的唯一線程的方式執(zhí)行,因此可以采用單線程WCET分析技術(shù)。通過(guò)主時(shí)間共享技術(shù)DTS(Dominant Time Sharing),多個(gè)HRT線程共享DMT的執(zhí)行時(shí)間。各線程的時(shí)間片長(zhǎng)度和周期可以在運(yùn)行時(shí)調(diào)整。

FlexPRET[5]處理器為SMT處理器,采用特殊前推通路避免數(shù)據(jù)依賴,采用細(xì)粒度多線程技術(shù)通過(guò)并發(fā)降低不使用動(dòng)態(tài)分支預(yù)測(cè)和Cache所導(dǎo)致的性能損失,達(dá)到WCET計(jì)算的復(fù)雜度與平均計(jì)算性能之間的平衡。同時(shí)執(zhí)行HRT任務(wù)和SRT任務(wù)。流水線使用線程隔離技術(shù)(HRT線程時(shí)分多址)消除線程間干擾。指令調(diào)度對(duì)SRT任務(wù)透明,不影響HRT任務(wù)。

同時(shí),F(xiàn)lexPRET以所謂PRET(PREcision-Timed)機(jī)模型[6]——一種提供可重復(fù)和可控制時(shí)序的處理器微結(jié)構(gòu)模型——為基礎(chǔ),針對(duì)時(shí)序可重復(fù)性問(wèn)題進(jìn)行指令集擴(kuò)充,增加了一些時(shí)序控制指令,包括設(shè)定代碼段的執(zhí)行時(shí)間下界指令delay_until、設(shè)定跳轉(zhuǎn)時(shí)間下界指令branch_expire以及設(shè)定在某個(gè)時(shí)刻拋出異常的指令interrupt_expire。PRET機(jī)采用物理與邏輯混合的時(shí)間概念。在FlexPRET中,時(shí)間表示為相對(duì)于系統(tǒng)加電或復(fù)位開始的納秒值而不是時(shí)鐘滴答數(shù),時(shí)序精度為一個(gè)時(shí)鐘周期,時(shí)鐘寬度為32位,更長(zhǎng)的相對(duì)時(shí)間需要軟件實(shí)現(xiàn)。這種表示方式使程序的時(shí)間值與處理器時(shí)鐘頻率無(wú)關(guān),保證了二進(jìn)制代碼的可移植性,并支持動(dòng)態(tài)頻率調(diào)節(jié)技術(shù)。對(duì)分布式系統(tǒng),可以通過(guò)調(diào)整定時(shí)器的增加值來(lái)實(shí)現(xiàn)時(shí)間同步,并維持亞納秒定時(shí)精度。FlexPRET將具有明確時(shí)序約束的硬實(shí)時(shí)線程(HRT)和傳統(tǒng)的軟實(shí)時(shí)線程(SRT)組合在一起,由應(yīng)用程序平衡共享處理器資源,將HRT不占用的流水線周期讓給SRT使用。硬件多線程技術(shù)顯示,確定性隨著應(yīng)用中并發(fā)性增加而增加,與傳統(tǒng)處理器差別顯著。只要有足夠的并發(fā)性,流水線停頓和訪存延遲較小,線程執(zhí)行的時(shí)序更加規(guī)則和可預(yù)測(cè),中斷響應(yīng)延遲也降低幾個(gè)數(shù)量級(jí),處理器利用率可達(dá)100%,但線程交替訪問(wèn),難以確定截止時(shí)間。

ARPRET(Auckland Reactive PRET)[7]處理器用于執(zhí)行PRET-C程序。PRET-C是C語(yǔ)言的宏擴(kuò)展,支持同步并發(fā)和表達(dá)邏輯時(shí)間的高級(jí)結(jié)構(gòu)。ARPRET基于3級(jí)流水線軟核Microblaze和1個(gè)硬件調(diào)度器PFU(Predictable Functional Unit)。只使用片上存儲(chǔ)器,因此其讀寫訪存指令為1個(gè)時(shí)鐘周期。ARPRET以吞吐率和簡(jiǎn)化最壞情況響應(yīng)時(shí)間WCRT(Worst-Case Response Time)分析為目標(biāo)。采用邏輯時(shí)間概念,通過(guò)靜態(tài)代碼分析實(shí)現(xiàn)邏輯時(shí)間和物理時(shí)間的映射。

JOP(Java Optimized Processor)處理器[8]使用2級(jí)棧緩存架構(gòu)實(shí)現(xiàn)Java虛擬機(jī)的棧架構(gòu)。采用3級(jí)流水線,使用2個(gè)寄存器存儲(chǔ)2個(gè)棧頂對(duì)象,棧的其他部分在SRAM中。由于分支延遲開銷很小,因此不使用分支預(yù)測(cè)。JOP中的所有字節(jié)碼被轉(zhuǎn)換為固定長(zhǎng)度的微指令,每個(gè)微指令的執(zhí)行周期數(shù)固定,獨(dú)立于其周圍的指令。

ARPA-MT(Advanced Real-time Processor Architecture-MultiThreaded)[9]是一種基于MIPS32架構(gòu)的SMT處理器,針對(duì)多任務(wù)實(shí)時(shí)系統(tǒng)進(jìn)行了優(yōu)化。ARPA-MT的協(xié)處理器0負(fù)責(zé)內(nèi)存管理、異常和中斷處理,協(xié)處理器2則實(shí)現(xiàn)了實(shí)時(shí)系統(tǒng)的硬件支持,如定時(shí)、任務(wù)調(diào)度、同步和切換,以及時(shí)序約束檢測(cè)。這些功能的硬件實(shí)現(xiàn)能夠更快、更加可預(yù)測(cè)地執(zhí)行任務(wù),減少了RTOS開銷,并改善其確定性。

與環(huán)境高效和可靠地交互(稱“反應(yīng)”)是面向控制的嵌入式系統(tǒng)應(yīng)用的關(guān)鍵特征,往往采用同步語(yǔ)言(如Esterel)和編程范式。反應(yīng)式處理器不使用中斷而是使用ISA(Instruction-Set Architecture)指令與環(huán)境交互,且執(zhí)行機(jī)制采用時(shí)間觸發(fā)而非事件觸發(fā)。REMIC(REactive MICroprocessor)[10]是帶有同步反應(yīng)式功能單元和控制單元的反應(yīng)式處理器,EMPEROR(Embedded MultiProcessor supporting Esterel Reactive OpeRations)[11]提供在多處理器之間分配同步線程的方法。

可以看出,TPP處理器通過(guò)限制使用分支預(yù)測(cè)、亂序執(zhí)行和Cache等造成時(shí)序不確定的技術(shù),提高WCET分析的緊致性。但是,TPP主要以滿足WCET分析緊致性要求為目標(biāo),損失了計(jì)算性能。RTOS加速器通過(guò)硬件實(shí)現(xiàn)任務(wù)調(diào)度和關(guān)鍵服務(wù)原語(yǔ),降低RTOS的運(yùn)行開銷和時(shí)間抖動(dòng),提升了可預(yù)測(cè)性,利于系統(tǒng)驗(yàn)證(硬件執(zhí)行時(shí)序是完全確定的),但受硬件實(shí)現(xiàn)復(fù)雜度和資源限制,靈活性不佳,通信接口效率低、時(shí)延高。反應(yīng)式處理器僅支持特定的同步編程語(yǔ)言和范式,通用性不佳,且計(jì)算性能有限。

2.2 實(shí)時(shí)計(jì)算高級(jí)語(yǔ)言和編程模型

現(xiàn)代編程語(yǔ)言反映了計(jì)算機(jī)體系結(jié)構(gòu)的特征。面向通用計(jì)算的編程語(yǔ)言描述了操作的執(zhí)行順序,操作的時(shí)間屬性與程序的邏輯正確性無(wú)關(guān)。實(shí)時(shí)系統(tǒng)編程可以基于同步范式(使用同步編程語(yǔ)言,如Esterel)或異步范式(使用異步編程語(yǔ)言,如Ada)。

同步模型基于邏輯時(shí)間模型和同步假設(shè),即動(dòng)作是原子的且瞬間完成,并發(fā)動(dòng)作間無(wú)交互,動(dòng)作與邏輯Tick同一時(shí)刻發(fā)生,無(wú)抖動(dòng)。該抽象為確定性模型,利于系統(tǒng)行為分析驗(yàn)證。同步語(yǔ)言中,邏輯Tick是語(yǔ)言語(yǔ)義的組成成分,用于事件定序,與實(shí)際物理時(shí)間無(wú)關(guān)。Esterel等同步語(yǔ)言基于虛擬時(shí)間抽象,與平臺(tái)的物理時(shí)間無(wú)關(guān),其邏輯行為總是可預(yù)測(cè)的。實(shí)現(xiàn)時(shí)采用時(shí)鐘驅(qū)動(dòng)的靜態(tài)調(diào)度技術(shù),利于響應(yīng)時(shí)間分析和因果關(guān)系保證,但表達(dá)復(fù)雜交互行為的能力不足。

異步語(yǔ)言基于物理時(shí)間的實(shí)時(shí)鐘模型,一般提供時(shí)鐘訪問(wèn)、進(jìn)程延遲、同步與通信超時(shí)等實(shí)時(shí)控制設(shè)施(包括原語(yǔ)與結(jié)構(gòu))。Ada編程語(yǔ)言基于物理時(shí)間概念提供了量化描述時(shí)序約束的語(yǔ)言結(jié)構(gòu),需要借助定時(shí)器中斷或操作系統(tǒng)所提供的時(shí)間服務(wù)控制程序的時(shí)序行為。Ada采用中斷驅(qū)動(dòng)的優(yōu)先級(jí)調(diào)度技術(shù),利用定時(shí)器控制任務(wù)執(zhí)行時(shí)間,且中斷是一種異步并發(fā)機(jī)制,必然導(dǎo)致應(yīng)用程序的時(shí)間行為不確定和不可重復(fù)。因此,采用Ada等高級(jí)語(yǔ)言進(jìn)行實(shí)時(shí)軟件編程是低效的,一方面其時(shí)序約束定義的粒度過(guò)粗(以任務(wù)為最小實(shí)體),另一方面,這些語(yǔ)言的編程模型所表達(dá)的時(shí)序約束僅為程序中位置相鄰的前后2個(gè)任務(wù)之間的時(shí)序關(guān)系,無(wú)法表達(dá)任意操作(可能并行)的時(shí)間約束。由于沒有支持通過(guò)合適的方法定義時(shí)間需求和進(jìn)行高精度時(shí)序分析的實(shí)時(shí)語(yǔ)言,實(shí)踐中HRT系統(tǒng)仍然只能采用低級(jí)編程語(yǔ)言,并手工對(duì)時(shí)間需求進(jìn)行調(diào)優(yōu)。

Chung等[12]針對(duì)靜態(tài)調(diào)度方法,對(duì)C語(yǔ)言進(jìn)行擴(kuò)展,基于所謂時(shí)間有向圖(Directed Timed Graph)模型,給出表達(dá)時(shí)序約束和優(yōu)先約束的語(yǔ)言結(jié)構(gòu),包括時(shí)序塊(Timing Block)和Temporal表達(dá)式,描述操作的開始時(shí)間、完成時(shí)間和周期。

ZET(Zero Execution Time)模型是同步反應(yīng)式編程的基礎(chǔ)抽象,BET(Bounded Execution Time)模型是實(shí)時(shí)調(diào)度理論的基礎(chǔ)抽象。實(shí)時(shí)程序的相關(guān)行為由輸入輸出時(shí)刻決定,而非程序代碼的執(zhí)行時(shí)刻。因此,Henzinger等[1]結(jié)合ZET和BET模型,在2000年提出了實(shí)時(shí)編程范式LET模型。采用LET模型時(shí),任務(wù)總是在其激活區(qū)間的開始處讀數(shù)據(jù),結(jié)束處寫數(shù)據(jù),使其可觀察的時(shí)態(tài)行為獨(dú)立于任務(wù)的物理執(zhí)行。LET確定了讀程序輸入到寫程序輸出之間所需的時(shí)間,而不考慮執(zhí)行程序所需的時(shí)間,具有平臺(tái)可移植性。雖然實(shí)際應(yīng)用時(shí)LET模型的資源(緩存、時(shí)間)利用率較低,但LET為控制工程師和軟件工程師提供了清晰的時(shí)序模型接口。2017年以來(lái),隨著多核平臺(tái)下可預(yù)測(cè)性(Predictability)成為關(guān)鍵問(wèn)題,工業(yè)界認(rèn)為L(zhǎng)ET對(duì)于解決多核MCS應(yīng)用和分布式實(shí)時(shí)系統(tǒng)的通信確定性問(wèn)題極具吸引力,甚至可能與Autosar相結(jié)合而成為新的工業(yè)標(biāo)準(zhǔn)。

3 實(shí)時(shí)機(jī)模型

計(jì)算機(jī)科學(xué)領(lǐng)域的時(shí)間概念相當(dāng)原始。圖靈機(jī)和馮·諾依曼機(jī)模型基于順序控制抽象,指令一條接一條執(zhí)行,時(shí)間先后關(guān)系(Temporal Succession)是當(dāng)前機(jī)器語(yǔ)言級(jí)唯一可用的時(shí)序關(guān)系。雖然定義馮·諾依曼機(jī)的程序邏輯行為無(wú)需顯式地引用時(shí)間概念,但無(wú)法滿足實(shí)時(shí)系統(tǒng)所需要的實(shí)時(shí)間約束。

在時(shí)態(tài)邏輯、進(jìn)程代數(shù)、自動(dòng)機(jī)和斷言等形式化建模方法中,時(shí)間概念在模型語(yǔ)義中是隱式的,所考慮的唯一時(shí)間屬性是順序,不考慮絕對(duì)時(shí)間(時(shí)間點(diǎn))或相對(duì)時(shí)間(持續(xù)時(shí)間),因此只能表達(dá)和驗(yàn)證離散事件系統(tǒng)行為的時(shí)態(tài)順序正確性,欠缺足夠的實(shí)時(shí)表達(dá)能力。它們的基本假設(shè)是程序代碼的執(zhí)行速度足夠快,程序的時(shí)間屬性與其功能正確性無(wú)關(guān)。為了適應(yīng)實(shí)時(shí)系統(tǒng)規(guī)約的需要,人們?cè)噲D擴(kuò)展傳統(tǒng)的形式化方法,以允許定量地表達(dá)定時(shí)特性,如時(shí)間自動(dòng)機(jī)和實(shí)時(shí)時(shí)態(tài)邏輯(Real-Time Temporal Logic)等。這些方法可應(yīng)用于簡(jiǎn)單系統(tǒng)的可調(diào)度性分析或時(shí)間行為驗(yàn)證,但難以應(yīng)用于具有嚴(yán)格時(shí)序行為約束的復(fù)雜實(shí)時(shí)系統(tǒng)。

現(xiàn)代計(jì)算機(jī)系統(tǒng)依賴基于定時(shí)器的時(shí)鐘中斷機(jī)制提供定時(shí)服務(wù)。定時(shí)器作為處理器外設(shè),通過(guò)輪詢或中斷方式訪問(wèn)。時(shí)鐘中斷是一種異步并發(fā)機(jī)制,精度低,開銷大,且存在副作用——中斷當(dāng)前任務(wù)將導(dǎo)致其執(zhí)行時(shí)間延長(zhǎng),可能產(chǎn)生危害性后果?;趦?yōu)先級(jí)的任務(wù)調(diào)度策略以中斷機(jī)制為基礎(chǔ),行為難以預(yù)測(cè),且驗(yàn)證困難,平臺(tái)依賴性高。

可以看出,由于當(dāng)前處理器體系結(jié)構(gòu)不顯式地提供時(shí)間語(yǔ)義支持,系統(tǒng)模型和基礎(chǔ)設(shè)施缺乏時(shí)間語(yǔ)義,或僅基于邏輯時(shí)間,或僅基于物理時(shí)間。雖有研究者提出了一些引入時(shí)間概念的高級(jí)語(yǔ)言,但底層沒有時(shí)間語(yǔ)義而僅僅從高層引入是有問(wèn)題的,導(dǎo)致系統(tǒng)設(shè)計(jì)、分析、驗(yàn)證與實(shí)現(xiàn)的時(shí)間語(yǔ)義不一致?,F(xiàn)有時(shí)間可預(yù)測(cè)性保證依賴基于WCET的可調(diào)度分析,但由于系統(tǒng)行為內(nèi)在的異步并發(fā)性,執(zhí)行時(shí)間有界并不能保證操作的執(zhí)行順序,因此不能保證時(shí)序行為可預(yù)測(cè)。

傳統(tǒng)的保守方法只適合簡(jiǎn)單實(shí)時(shí)系統(tǒng)設(shè)計(jì),MCS系統(tǒng)需要緊致時(shí)間設(shè)計(jì)方法。2005年以來(lái),Bensalem等[13]多認(rèn)識(shí)到當(dāng)前研究的局限性,在不同場(chǎng)合提出實(shí)時(shí)計(jì)算需要重新思考甚至發(fā)展計(jì)算機(jī)科學(xué)的理論基礎(chǔ)。但迄今為止,由于實(shí)時(shí)應(yīng)用涉及控制工程、電子工程、計(jì)算機(jī)工程和軟件工程等多學(xué)科交叉,各領(lǐng)域之間存在理論方法甚至文化差異,這一問(wèn)題遠(yuǎn)未解決。

本文認(rèn)為,任務(wù)、動(dòng)作和操作的時(shí)間語(yǔ)義應(yīng)包含時(shí)間行為和時(shí)間屬性。前者與硬件實(shí)現(xiàn)無(wú)關(guān),不應(yīng)依賴于底層實(shí)現(xiàn);后者與硬件實(shí)現(xiàn)相關(guān),即具有平臺(tái)依賴性。前者為語(yǔ)義確定性問(wèn)題,后者為可預(yù)測(cè)性問(wèn)題。LET模型通過(guò)解耦計(jì)算與通信,保證了時(shí)態(tài)確定性,具有時(shí)域控制與值域控制相分離、時(shí)序行為可預(yù)測(cè)可組合且平臺(tái)無(wú)關(guān)等特點(diǎn)。另一方面,時(shí)間觸發(fā)TT(Time-Triggered)執(zhí)行機(jī)制具有時(shí)序可預(yù)測(cè)性和時(shí)間隔離(分區(qū))的特性。但是,兩者都需要具有確定時(shí)間行為的處理器架構(gòu)和時(shí)間語(yǔ)義指令集支持,并以此為基礎(chǔ)形成緊致時(shí)間設(shè)計(jì)方法。

定義1實(shí)時(shí)機(jī)RTM模型對(duì)馮·諾依曼機(jī)進(jìn)行以下擴(kuò)充:

(1)計(jì)算機(jī)系統(tǒng)由運(yùn)算器、控制器、存儲(chǔ)器、時(shí)鐘設(shè)備和I/O設(shè)備等功能部件構(gòu)成;

(2)指令時(shí)鐘部件用于操作定時(shí),與CPU的指令數(shù)據(jù)通路和控制器緊耦合,在保持馮·諾依曼機(jī)指令的邏輯功能不變的同時(shí),增加特定操作的執(zhí)行時(shí)刻和限定操作序列(動(dòng)作)的執(zhí)行時(shí)間等時(shí)間語(yǔ)義;

(3)RTM的指令字由操作碼、地址碼和定時(shí)碼構(gòu)成,操作碼定義操作的功能,地址碼指定操作數(shù)和下一條指令的地址,定時(shí)碼指定操作的時(shí)間約束。

RTM如圖1所示,以支持緊致時(shí)間設(shè)計(jì)為目標(biāo),其核心思想不是僅僅在CPU中增加了時(shí)鐘部件,而在于明確了時(shí)間行為控制的概念,并通過(guò)提供時(shí)間語(yǔ)義指令集,使上層應(yīng)用的時(shí)間行為與指令周期同步,實(shí)現(xiàn)了時(shí)域控制的原子性,減小了定時(shí)抖動(dòng)。RTM以“關(guān)注分離(Separation of Concerns)”和“構(gòu)建正確(Correct-by-Construction)”為設(shè)計(jì)原則,區(qū)分邏輯控制與時(shí)域控制,為實(shí)現(xiàn)從時(shí)序可預(yù)測(cè)設(shè)計(jì)到時(shí)序確定性設(shè)計(jì)轉(zhuǎn)變奠定了理論基礎(chǔ),利于實(shí)時(shí)程序代碼自動(dòng)生成和降低系統(tǒng)驗(yàn)證的復(fù)雜度。

Figure 1 RTM architecture圖1 RTM結(jié)構(gòu)

以RTM為基礎(chǔ),時(shí)間語(yǔ)義指令集可提供at、delay-until和timestamp等控制時(shí)間行為的指令,支持邏輯執(zhí)行時(shí)間(LET)模型和時(shí)間觸發(fā)等應(yīng)用模式。

4 應(yīng)用示例

本節(jié)對(duì)RISC-V[14]指令集進(jìn)行時(shí)間語(yǔ)義擴(kuò)展,定義時(shí)間觸發(fā)指令集TTI,并給出一個(gè)直升機(jī)飛控應(yīng)用實(shí)例。

4.1 TTI指令集

TTI時(shí)間語(yǔ)義指令集擴(kuò)展主要包含時(shí)間模型、時(shí)間寄存器和時(shí)間語(yǔ)義指令3個(gè)部分。其中,時(shí)間模型規(guī)范該指令集擴(kuò)展時(shí)間相關(guān)的概念和應(yīng)用方法;時(shí)間寄存器是在通用寄存器之外添加的新寄存器,用于存放時(shí)間值,該時(shí)間值符合時(shí)間模型規(guī)范;時(shí)間語(yǔ)義指令包括時(shí)鐘管理指令、時(shí)間寄存器管理指令和時(shí)間語(yǔ)義操作指令。

本文采用基于時(shí)間點(diǎn)(時(shí)刻)的絕對(duì)時(shí)間模型,即處理器時(shí)鐘的時(shí)間從設(shè)定時(shí)刻開始,一直以一定的速率增長(zhǎng)。描述操作的時(shí)間時(shí),采用某時(shí)刻的方式;描述一個(gè)時(shí)間段時(shí),采用從某時(shí)刻開始到某時(shí)刻結(jié)束的方式。時(shí)間寄存器存放絕對(duì)時(shí)間模型的一個(gè)時(shí)間點(diǎn)。

時(shí)間語(yǔ)義指令功能如表1所示,包括:

(1)時(shí)間管理指令:setti/getti指令用于設(shè)置/獲取系統(tǒng)當(dāng)前時(shí)間;settg指令用于設(shè)置系統(tǒng)當(dāng)前時(shí)間粒度,即時(shí)間向前自增的單位。

(2)時(shí)間寄存器管理指令:tmove指令用于通用寄存器和時(shí)間寄存器之間的數(shù)據(jù)傳輸。

(3)實(shí)時(shí)操作指令:ttiat/ttoat指令用于在指定時(shí)刻I/O端口輸入輸出。

Table 1 Function of extend instructions

表1中,rs1、rs2和rd為通用寄存器,trs為時(shí)間寄存器地址,tg為系統(tǒng)當(dāng)前時(shí)間粒度寄存器,ti為當(dāng)前時(shí)間寄存器。

RISC-V是一個(gè)典型的三操作數(shù)、加載-存儲(chǔ)形式的RISC指令集架構(gòu),由基礎(chǔ)指令集和擴(kuò)展指令集組成。基礎(chǔ)指令由基本整數(shù)指令構(gòu)成,擴(kuò)展指令分為標(biāo)準(zhǔn)擴(kuò)展和非標(biāo)準(zhǔn)擴(kuò)展2大類?,F(xiàn)階段已經(jīng)完成的標(biāo)準(zhǔn)擴(kuò)展為一個(gè)包含標(biāo)準(zhǔn)乘法和除法(M)、原子(A)、單精度(F)和雙精度(D)運(yùn)算的通用標(biāo)量指令集。非標(biāo)準(zhǔn)擴(kuò)展作為一個(gè)高度特殊化的擴(kuò)展,由用戶根據(jù)功能需求自定義完成。TTI指令集基于RISC-V非標(biāo)準(zhǔn)擴(kuò)展進(jìn)行定義,如圖2所示。

Figure 2 Format extension for TTI instructions圖2 TTI擴(kuò)展指令指令字格式

4.2 直升機(jī)飛控

直升機(jī)飛控系統(tǒng)的需求如圖3所示。若采用傳統(tǒng)的前后臺(tái)編程范式或輪詢范式實(shí)現(xiàn)飛控軟件,其架構(gòu)和時(shí)序分別如圖4a和圖4b所示??梢钥闯?,當(dāng)某時(shí)刻需要執(zhí)行多個(gè)動(dòng)作時(shí),采用這種編程模式必然存在定時(shí)抖動(dòng),如圖4b中時(shí)刻0,2和6。

Figure 3 Requirements of a helicopter flight control system

Figure 4 Software architecture and timing

LET編程模型將任務(wù)的邏輯行為“輸入-計(jì)算-輸出”過(guò)程相分離,如圖5所示,定義了嚴(yán)格的輸入輸出時(shí)刻,要求在指定時(shí)刻輸入,在輸出時(shí)刻之前計(jì)算出結(jié)果,并能夠?qū)⑤敵鼋Y(jié)果保持到指定時(shí)刻輸出,具有時(shí)間行為可預(yù)測(cè)、可組合和平臺(tái)無(wú)關(guān)性等重要特征,利于設(shè)計(jì)時(shí)進(jìn)行系統(tǒng)行為驗(yàn)證。

Figure 5 LET programming model圖5 LET編程模型

基于LET編程模型的飛控系統(tǒng)的實(shí)現(xiàn)代碼如下所示:

1Init(); // init the system

2time_t1 =time_t2 =time_t3 =time_t4 = 0;/*suppose all tasks start at 0*/

3flag_t1 =TTI(all_sensor_data,time_t1);

4flag_t2 =TTI(keyboard_data,time_t2);

5flag_t3 =TTI(sensor_data,mode_data,time_t3);

6flag_t4 =TTI(loop_data1,loop_data2,loop_data3,time_t4);

7SetIntertup();/*set a interrupt, and only enable it to interrupt*/

8 /*t1~t4, every 1/180 second, when occur, store*/

9 /*context for current task and go to INT_LABEL*/

10while(TRUE) {

11 INT_LABEL:

12if(flag_t1) {

13load_context();

14t1();

15store_context();

16time_t1 += 1;

17TTO(sensor_data,time_t1);

18flag_t1 =TTI(all_sensor_data,time_t1);

19 }

20if(flag_t2) {

21load_context();

22t2();

23store_context();

24time_t2 += 6;

25TTO(mode_data,time_t2);

26flag_t2 =TTI(keyboard_data,time_t2);

27 }

28if(flag_t3) {

29load_context();

30t31();

31t32();

32t33();

33store_context();

34time_t3 += 2;

35TTO(loop_data1,loop_data2,loop_data3,time_t3);

36flag_t3 =TTI(sensor_data,mode_data,time_t3);

37 }

38if(flag_t4) {

39load_context();

40t4();

41store_context();

42time_t4 += 6;

43TTO(control_data,time_t4);

44flag_t4 =TTI(loop_data1,loop_data2,loop_data3,time_t4);

45 }

46 }

基于LET編程模型的飛控系統(tǒng)各任務(wù)的時(shí)序行為如圖6所示。其中,t1為傳感器任務(wù),t2為模式任務(wù),t31,t32,t33為內(nèi)循環(huán)任務(wù),t4為控制器任務(wù)。

Figure 6 Timing for the LET program of the helicopter flight control program圖6 直升機(jī)飛控LET程序的時(shí)序

每個(gè)任務(wù)的LET實(shí)現(xiàn)包含3個(gè)部分:基于TTI()的定時(shí)輸入、計(jì)算和基于TTO()的定時(shí)輸出。其中,TTI()和TTO()分別是對(duì)ttiat和ttoat指令的封裝。TTI()在指定時(shí)刻完成指定數(shù)據(jù)的輸入,TTO()在指定時(shí)刻完成指定數(shù)據(jù)的輸出。若指定的時(shí)刻未到,則等待,等待過(guò)程中TTI()的返回值始終為FALSE,指定時(shí)刻到來(lái)時(shí),TTI()完成指定數(shù)據(jù)的輸入,此后返回值為TRUE。TTO()類似,但沒有返回值。每個(gè)任務(wù)通過(guò)TTI()顯式地請(qǐng)求在指定時(shí)刻執(zhí)行指定數(shù)據(jù)的輸入。系統(tǒng)實(shí)現(xiàn)代碼中第3~6行分別是t1,t2,t3和t4的首次定時(shí)輸入請(qǐng)求,對(duì)應(yīng)圖6中的“↑”標(biāo)記。計(jì)算部分的代碼是位于load_contex()和store_context()中間的代碼,第14,22,30~32,40行所示。計(jì)算執(zhí)行完畢,每個(gè)任務(wù)通過(guò)TTO()顯式地請(qǐng)求在指定時(shí)刻輸出指定數(shù)據(jù),同時(shí)通過(guò)TTI()發(fā)出下一輪的定時(shí)輸入請(qǐng)求。系統(tǒng)實(shí)現(xiàn)代碼中第17,25,35,43行分別是這4個(gè)任務(wù)的定時(shí)輸出請(qǐng)求,第18,26,36,44行分別是它們的下一輪定時(shí)輸入請(qǐng)求,并且這4個(gè)任務(wù)都將本次輸出和下一輪的輸入放在同一時(shí)刻,對(duì)應(yīng)圖6中的“?”標(biāo)記??梢钥闯觯蝿?wù)的LET實(shí)現(xiàn)中,輸入輸出時(shí)間完全由TTI()和TTO()指定的時(shí)刻決定,而不受任務(wù)計(jì)算部分程序執(zhí)行時(shí)間抖動(dòng)的影響。

飛控系統(tǒng)中設(shè)置一個(gè)周期性時(shí)鐘中斷,如系統(tǒng)實(shí)現(xiàn)代碼中第7行將中斷頻率設(shè)置為每秒180次。該中斷只用于中斷代碼中while循環(huán)中的4個(gè)任務(wù)。每次中斷處理,系統(tǒng)跳到INT_LABEL處開始處理。系統(tǒng)按照代碼順序依次查看是否需要執(zhí)行這4個(gè)任務(wù)的計(jì)算部分,如第12,20,28,38行的if語(yǔ)句。當(dāng)某任務(wù)設(shè)置的TTI()返回值為TRUE就執(zhí)行,如圖6中t1每次都執(zhí)行。當(dāng)某任務(wù)設(shè)置的TTI()返回值為FALSE,就跳過(guò)該任務(wù)不執(zhí)行,如圖6中點(diǎn)C處就跳過(guò)t2執(zhí)行t3。若沒有任務(wù)需要執(zhí)行,系統(tǒng)idle,如圖6中陰影右下角的idle部分,此時(shí)可以執(zhí)行其他軟實(shí)時(shí)或非實(shí)時(shí)任務(wù)。中斷發(fā)生時(shí),若有當(dāng)前任務(wù)正在執(zhí)行,則該任務(wù)被中斷,保存該任務(wù)上下文,然后開始新一輪中斷處理,如圖6中點(diǎn)A處,中斷在t2執(zhí)行過(guò)程中發(fā)生,此時(shí)保存t2上下文,轉(zhuǎn)到INT_LABEL處從t1重新開始依次執(zhí)行。被中斷的任務(wù)在后續(xù)執(zhí)行中輪到該任務(wù)執(zhí)行時(shí)將繼續(xù)執(zhí)行,如圖6中點(diǎn)B處,t1執(zhí)行完后順次執(zhí)行t2時(shí),加載t2之前被中斷的上下文繼續(xù)執(zhí)行。

由于輸入輸出定時(shí)由ttiat/ttoat指令控制,與任務(wù)計(jì)算邏輯的執(zhí)行時(shí)間無(wú)關(guān),保證了控制系統(tǒng)的魯棒性。

5 結(jié)束語(yǔ)

針對(duì)未來(lái)復(fù)雜的混合關(guān)鍵系統(tǒng)需要研究新的緊致時(shí)間控制設(shè)計(jì)方法,采用構(gòu)件化軟件體系結(jié)構(gòu),基于時(shí)間觸發(fā)執(zhí)行機(jī)制和LET編程模型構(gòu)建時(shí)間關(guān)鍵系統(tǒng)是實(shí)現(xiàn)可預(yù)測(cè)性、時(shí)序隔離、可組合和可擴(kuò)展的有效方案,但性能低效和分析驗(yàn)證復(fù)雜是這一方案的瓶頸,需要實(shí)時(shí)計(jì)算機(jī)體系結(jié)構(gòu)創(chuàng)新。

本文以馮·諾伊曼模型為基礎(chǔ),定義新的支持時(shí)間語(yǔ)義的實(shí)時(shí)計(jì)算機(jī)體系結(jié)構(gòu)模型,并以此為基礎(chǔ)實(shí)現(xiàn)緊致時(shí)間方法。文中提出了支持實(shí)時(shí)計(jì)算的RTM計(jì)算機(jī)模型和TTI指令集。RTM突破了馮·諾伊曼機(jī)模型在實(shí)時(shí)計(jì)算應(yīng)用中的理論局限,分離時(shí)域控制和值域控制的時(shí)序約束,明確了時(shí)間行為控制的基本抽象。

目前本文正在對(duì)RISC-V指令集進(jìn)行TTI擴(kuò)展,實(shí)現(xiàn)一個(gè)實(shí)時(shí)處理器原型RPU(Realtime Processing Unit),以驗(yàn)證RTM的時(shí)序行為控制能力。RPU將采用硬件多線程技術(shù),以滿足安全關(guān)鍵應(yīng)用的高性能和時(shí)空隔離需求。支持時(shí)間行為約束表達(dá)的實(shí)時(shí)控制設(shè)施(原語(yǔ)與結(jié)構(gòu))、編程語(yǔ)言、中間語(yǔ)言以及時(shí)間安全性分析與驗(yàn)證理論和技術(shù)都是重要的課題。

猜你喜歡
指令集時(shí)序指令
聽我指令:大催眠術(shù)
基于時(shí)序Sentinel-2數(shù)據(jù)的馬鈴薯遙感識(shí)別研究
基于Sentinel-2時(shí)序NDVI的麥冬識(shí)別研究
3DNow指令集被Linux淘汰
ARINC661顯控指令快速驗(yàn)證方法
LED照明產(chǎn)品歐盟ErP指令要求解讀
一種毫米波放大器時(shí)序直流電源的設(shè)計(jì)
電子制作(2016年15期)2017-01-15 13:39:08
實(shí)時(shí)微測(cè)量系統(tǒng)指令集及解析算法
什么是AMD64
基于覆蓋率驅(qū)動(dòng)的高性能DSP指令集驗(yàn)證方法
饶河县| 香港| 宣城市| 额尔古纳市| 阿瓦提县| 温泉县| 新宁县| 平乡县| 湘阴县| 西和县| 塘沽区| 沁源县| 肇州县| 通州区| 宿迁市| 荃湾区| 专栏| 行唐县| 图片| 阳西县| 开封市| 手机| 旺苍县| 南江县| 普兰县| 勐海县| 铜陵市| 综艺| 三门县| 申扎县| 平潭县| 津市市| 纳雍县| 博野县| 睢宁县| 鹿邑县| 韶关市| 常宁市| 安溪县| 霞浦县| 南京市|