日本在线www-日本在线播放一区-日本在线不卡免费视频一区-日本在线不卡视频-成人影院久久久久久影院-成人影院一区二区三区

ABB
關(guān)注中國(guó)自動(dòng)化產(chǎn)業(yè)發(fā)展的先行者!
CAIAC 2025
2025工業(yè)安全大會(huì)
OICT公益講堂
當(dāng)前位置:首頁(yè) >> 案例 >> 案例首頁(yè)

案例頻道

嵌入式操作系統(tǒng)數(shù)學(xué)庫(kù)函數(shù)測(cè)試方法研究和應(yīng)用
核鷺操作系統(tǒng)數(shù)學(xué)庫(kù)以C語(yǔ)言函數(shù)庫(kù)的形式提供常用的若干數(shù)學(xué)函數(shù),被用于核安全重要的儀控系統(tǒng),直接參與核安全重要功能的實(shí)現(xiàn),因此必須在使用前對(duì)其進(jìn)行全面驗(yàn)證和確認(rèn)。為提高測(cè)試全面性、有效性和測(cè)試執(zhí)行的自動(dòng)化程度,研究者采用對(duì)比測(cè)試方法完成測(cè)試工作,以保證各函數(shù)的計(jì)算正確性和精度:首先在參考環(huán)境(通用PC機(jī))下,按照IEC 60559中浮點(diǎn)數(shù)定義和各待測(cè)函數(shù)定義域和計(jì)算方法等特性,生成各待測(cè)函數(shù)輸入值序列并在參考環(huán)境下調(diào)用編譯工具內(nèi)置的庫(kù)函數(shù)計(jì)算出對(duì)應(yīng)的函數(shù)輸出值,再將已產(chǎn)生的各待測(cè)函數(shù)輸入值序列和對(duì)應(yīng)的函數(shù)輸出值以二進(jìn)制文件方式保存并傳遞給嵌入式操作系統(tǒng)目標(biāo)機(jī)運(yùn)行環(huán)境,并在目標(biāo)機(jī)運(yùn)行環(huán)境下調(diào)用嵌入式操作系統(tǒng)數(shù)學(xué)庫(kù)函數(shù)計(jì)算各待測(cè)函數(shù)輸入值序列的對(duì)應(yīng)函數(shù)輸出值,最后以二進(jìn)制值的方式比較不同環(huán)境下的函數(shù)輸出值,分析測(cè)試中發(fā)現(xiàn)的問(wèn)題以及計(jì)算誤差產(chǎn)生原因和可接受條件,最終確保嵌入式操作系統(tǒng)數(shù)學(xué)庫(kù)函數(shù)在其定義域內(nèi)計(jì)算正確并在可接受的誤差范圍內(nèi)。

★北京廣利核系統(tǒng)工程有限公司程建明,徐先柱

關(guān)鍵詞:嵌入式操作系統(tǒng);數(shù)學(xué)庫(kù)函數(shù);對(duì)比測(cè)試;誤差分析

核鷺操作系統(tǒng)(NuEgretOS)是北京廣利核系統(tǒng)工程有限公司開(kāi)發(fā)的嵌入式多任務(wù)操作系統(tǒng)軟件,可運(yùn)行于基于龍芯2K1000處理器的專(zhuān)用硬件環(huán)境中,為執(zhí)行核安全重要功能的、符合包含IEC 62138-2018[1]等標(biāo)準(zhǔn)要求的應(yīng)用軟件提供操作系統(tǒng)軟件環(huán)境。NuEgretOS提供在目標(biāo)硬件環(huán)境下資源分配、調(diào)度、輸入輸出控制以及數(shù)據(jù)管理等服務(wù),應(yīng)用軟件在此基礎(chǔ)上提供信號(hào)和控制處理邏輯。NuEgretOS還提供部分C語(yǔ)言標(biāo)準(zhǔn)庫(kù)函數(shù)(其中包含數(shù)學(xué)庫(kù)函數(shù)),供基于NuEgretOS運(yùn)行的應(yīng)用軟件設(shè)計(jì)時(shí)調(diào)用。其中,NuEgretOS數(shù)學(xué)庫(kù)目前提供最常用的若干數(shù)學(xué)函數(shù),包括三角函數(shù)、反三角函數(shù)、雙曲函數(shù)、指數(shù)和對(duì)數(shù)函數(shù)、冪函數(shù),以及與浮點(diǎn)數(shù)特性相關(guān)的函數(shù)(如取整、取余、取絕對(duì)值、切分浮點(diǎn)數(shù))等。

出于安全方面的原因,NuEgretOS數(shù)學(xué)庫(kù)實(shí)現(xiàn)過(guò)程中不使用任何第三方函數(shù)庫(kù),包括不調(diào)用編譯器自帶的數(shù)學(xué)函數(shù)庫(kù)中的函數(shù)。同時(shí),由于NuEgretOS數(shù)學(xué)庫(kù)函數(shù)將直接參與應(yīng)用軟件處理邏輯,執(zhí)行包括核安全重要功能在內(nèi)的應(yīng)用軟件功能,因此在使用前必須對(duì)其進(jìn)行全面驗(yàn)證和確認(rèn)。通過(guò)測(cè)試保證其正確性和計(jì)算精度是NuEgretOS數(shù)學(xué)庫(kù)驗(yàn)證和確認(rèn)的重要工作之一。

1 庫(kù)函數(shù)設(shè)計(jì)NuEgretOS軟件和應(yīng)用軟件均使用C語(yǔ)言及必要的

匯編語(yǔ)言開(kāi)發(fā),使用GCC工具進(jìn)行編譯。NuEgretOS以鏡像文件(.bin文件)方式存儲(chǔ)于目標(biāo)硬件中的存儲(chǔ)器上,并在設(shè)備上電時(shí)加載運(yùn)行。NuEgretOS的C語(yǔ)言標(biāo)準(zhǔn)庫(kù)(其中包含數(shù)學(xué)庫(kù)函數(shù))以庫(kù)文件(.a文件)的形式提供給應(yīng)用開(kāi)發(fā)環(huán)境,并與應(yīng)用軟件代碼一起編譯生成可執(zhí)行與可鏈接格式文件(elf格式,.out文件),由NuEgretOS加載和運(yùn)行。

NuEgretOS數(shù)學(xué)庫(kù)(C語(yǔ)言標(biāo)準(zhǔn)庫(kù)的一部分)中的全部函數(shù)定義和POSIX.1-2017[2]標(biāo)準(zhǔn)中對(duì)應(yīng)的函數(shù)相同,是POSIX.1-2017規(guī)定的數(shù)學(xué)函數(shù)的子集。

NuEgretOS數(shù)學(xué)庫(kù)各函數(shù)輸入和輸出中的數(shù)學(xué)上定義為實(shí)數(shù)的數(shù)值均使用double類(lèi)型浮點(diǎn)數(shù)表示,該浮點(diǎn)數(shù)類(lèi)型符合ISO/IEC 60559:2020(IEEE Std754-2019)[3]對(duì)64位雙精度浮點(diǎn)數(shù)(binary64)的規(guī)定。double型數(shù)據(jù)位串定義如圖1所示。

image.png

圖1 double型數(shù)據(jù)位串定義

按該標(biāo)準(zhǔn)定義,double型數(shù)以64位位串值(二進(jìn)制內(nèi)存值)表示實(shí)數(shù)域內(nèi)的若干個(gè)(264-253-1,約1.84×1019個(gè))離散數(shù)值(有限小數(shù),含整數(shù))以及計(jì)算機(jī)在處理小數(shù)運(yùn)算時(shí)的特殊定義值(不表示任何實(shí)數(shù)的位串值,僅用于計(jì)算機(jī)對(duì)浮點(diǎn)數(shù)處理的特殊情況的表示)。double型數(shù)據(jù)位串值定義細(xì)分類(lèi)別及特點(diǎn)如表1所示。

表1 double型數(shù)據(jù)位串值定義細(xì)分類(lèi)別及特點(diǎn)

image.png

2 測(cè)試設(shè)計(jì)

2.1 計(jì)算誤差來(lái)源分析

基于ISO/IEC60559:2020(IEEE Std754-2019)[3]對(duì)64位雙精度浮點(diǎn)數(shù)(binary64)的規(guī)定,雙精度浮點(diǎn)數(shù)除特殊定義值外,兩個(gè)位串值相鄰的浮點(diǎn)數(shù)數(shù)值之間的差值的絕對(duì)值定義為1個(gè)ULP(unit in the last place,最小有效數(shù))。1ULP的實(shí)際表示值與指數(shù)域的大小相關(guān):當(dāng)指數(shù)域?yàn)樽畲笾?x7FE時(shí),1ULP≈8.99E307;當(dāng)指數(shù)域?yàn)樽钚≈?x000時(shí),1ULP≈4.94E-324。對(duì)于浮點(diǎn)數(shù)表示范圍(約-1.79E308~約1.79E308)內(nèi)的任意實(shí)數(shù),在最近舍入模式下,由浮點(diǎn)數(shù)離散特性帶來(lái)的最大表示誤差≤0.5ULPs。規(guī)格化數(shù)的二進(jìn)制有效數(shù)字個(gè)數(shù)為53個(gè),由浮點(diǎn)數(shù)舍入帶來(lái)的最大表示誤差(≤0.5ULPs)帶來(lái)的數(shù)值相對(duì)誤差范圍為(2-54,2-53),非規(guī)格化數(shù)的二進(jìn)制有效數(shù)字個(gè)數(shù)最大為52個(gè),隨數(shù)值減小而減少,由浮點(diǎn)數(shù)舍入帶來(lái)的最大表示誤差(≤0.5ULPs)造成的數(shù)值相對(duì)誤差也相應(yīng)增大,范圍為(2-53,2-1)。

對(duì)于NuEgretOS數(shù)學(xué)庫(kù)中與浮點(diǎn)數(shù)特性相關(guān)的算術(shù)函數(shù)(如取整、取余、取絕對(duì)值、切分浮點(diǎn)數(shù)等),函數(shù)的運(yùn)算輸出與其理論輸出之間不應(yīng)存在誤差,即允許誤差為0ULPs。而對(duì)于其它函數(shù),包括三角函數(shù)、反三角函數(shù)、雙曲函數(shù)、指數(shù)和對(duì)數(shù)函數(shù)、冪函數(shù)等,其理論計(jì)算值與其函數(shù)輸出值之間的誤差受多種因素影響,主要包括:

(1)輸入值表示誤差;

(2)計(jì)算方法誤差,如使用泰勒展開(kāi)式有限項(xiàng)帶來(lái)的誤差;

(3)計(jì)算過(guò)程誤差,包括模型參數(shù)引入的誤差、中間計(jì)算結(jié)果的舍入誤差等;

(4)輸出值表示誤差。基于NuEgretOS數(shù)學(xué)庫(kù)函數(shù)的目標(biāo)應(yīng)用,除算術(shù)計(jì)算函數(shù)外,設(shè)定各函數(shù)輸出的允許誤差為2ULPs。

2.2 驗(yàn)證目標(biāo)

基于NuEgretOS數(shù)學(xué)庫(kù)的設(shè)計(jì)特點(diǎn)和應(yīng)用要求,NuEgretOS數(shù)學(xué)庫(kù)的驗(yàn)證目標(biāo)包括:

(1)各函數(shù)在其定義域內(nèi)的任意值(包括浮點(diǎn)定義的正負(fù)零值)的計(jì)算輸出值正確(符合函數(shù)定義)且在允許誤差范圍內(nèi)。

(2)各函數(shù)對(duì)異常及特殊情況處理正確,包括對(duì)計(jì)算值超浮點(diǎn)表示范圍的處理、輸入非函數(shù)定義域數(shù)值、輸入浮點(diǎn)特殊定義值等,函數(shù)輸出符合處理器特性以及IEC60559規(guī)定的特殊定義值。如有定義,NuEgretOS應(yīng)用軟件可通過(guò)注冊(cè)中斷處理程序獲知計(jì)算過(guò)程例外或異常并處理。

2.3 測(cè)試方案

NuEgretOS數(shù)學(xué)庫(kù)為新開(kāi)發(fā)軟件,各函數(shù)遵循其數(shù)學(xué)定義,其輸出值實(shí)數(shù)范圍內(nèi)存在理論精確值,該理論精確值在確定的浮點(diǎn)數(shù)類(lèi)型定義和舍入方式下,經(jīng)計(jì)算機(jī)計(jì)算后輸出的浮點(diǎn)數(shù)(二進(jìn)制內(nèi)存值)是唯一的和確定的,與函數(shù)的實(shí)現(xiàn)方式以及運(yùn)行所依賴(lài)的硬件和軟件環(huán)境無(wú)關(guān)。同時(shí),NuEgretOS數(shù)學(xué)庫(kù)范圍內(nèi)的各函數(shù)已在支持POSIX標(biāo)準(zhǔn)的大多數(shù)軟件開(kāi)發(fā)工具及編譯工具中實(shí)現(xiàn)。這些已實(shí)現(xiàn)的函數(shù)多包含在隨軟件開(kāi)發(fā)工具及編譯工具提供的函數(shù)庫(kù)中,其實(shí)現(xiàn)比較成熟且已有較多運(yùn)行經(jīng)歷,運(yùn)算結(jié)果相對(duì)可信,NuEgretOS數(shù)學(xué)庫(kù)測(cè)試時(shí)假定對(duì)應(yīng)函數(shù)的預(yù)期運(yùn)算結(jié)果。當(dāng)運(yùn)算結(jié)果一致時(shí),可在較高可信度上證明NuEgretOS數(shù)學(xué)庫(kù)函數(shù)的正確性和精度,當(dāng)運(yùn)算結(jié)果不一致時(shí),進(jìn)行函數(shù)實(shí)現(xiàn)分析以定位問(wèn)題或通過(guò)設(shè)計(jì)分析證明NuEgretOS數(shù)學(xué)庫(kù)函數(shù)的正確性和精度。測(cè)試前對(duì)NuEgretOS數(shù)學(xué)庫(kù)全部函數(shù)的設(shè)計(jì)和實(shí)現(xiàn)代碼的評(píng)審和分析也是保證NuEgretOS數(shù)學(xué)庫(kù)函數(shù)的正確性和精度的措施。因此,可以通過(guò)對(duì)比其它已實(shí)現(xiàn)的成熟函數(shù)庫(kù)執(zhí)行結(jié)果的方式,對(duì)NuEgretOS數(shù)學(xué)庫(kù)的正確性和精度進(jìn)行對(duì)比測(cè)試。NuEgretOS數(shù)學(xué)庫(kù)對(duì)比測(cè)試總體方案如圖2所示。

image.png

圖2 對(duì)比測(cè)試方案

分別建立數(shù)學(xué)庫(kù)的參考運(yùn)行環(huán)境和目標(biāo)機(jī)運(yùn)行環(huán)境,目標(biāo)機(jī)運(yùn)行環(huán)境和NuEgretOS應(yīng)用軟件運(yùn)行環(huán)境完全一致。在參考運(yùn)行環(huán)境下,可以用與NuEgretOS應(yīng)用程序相同的方式調(diào)用相同定義的各數(shù)學(xué)庫(kù)函數(shù)。參考運(yùn)行環(huán)境由通用PC機(jī)搭建,同時(shí)作為測(cè)試應(yīng)用程序的開(kāi)發(fā)環(huán)境。

用相同的方式分別建立參考環(huán)境測(cè)試工程和目標(biāo)機(jī)測(cè)試工程,兩個(gè)測(cè)試工程共用一套C語(yǔ)言代碼,兩個(gè)工程中的測(cè)試應(yīng)用程序內(nèi)必要的有差別的行為通過(guò)預(yù)編譯開(kāi)關(guān)實(shí)現(xiàn)。測(cè)試應(yīng)用程序中含用例生成、用例執(zhí)行、結(jié)果保存、用例讀取、結(jié)果比較等主要功能模塊。參考環(huán)境應(yīng)用程序?qū)嶋H執(zhí)行用例生成、用例執(zhí)行、結(jié)果保存三項(xiàng)功能。參考環(huán)境測(cè)試應(yīng)用程序運(yùn)行結(jié)果保存中包括了測(cè)試用例中各函數(shù)的輸入序列和其在參考環(huán)境中的運(yùn)算結(jié)果。各函數(shù)的輸入序列和對(duì)應(yīng)的參考環(huán)境運(yùn)算結(jié)果組成測(cè)試向量,以二進(jìn)制內(nèi)存拷貝的方式保存成文件,并下載到目標(biāo)機(jī)運(yùn)行環(huán)境。目標(biāo)機(jī)測(cè)試應(yīng)用程序讀取各待測(cè)函數(shù)測(cè)試向量生成測(cè)試用例。目標(biāo)機(jī)測(cè)試應(yīng)用程序執(zhí)行完成測(cè)試用例后進(jìn)行結(jié)果比較,以文件和串口打印輸出的形式輸出與參考環(huán)境計(jì)算結(jié)果的比較情況。同時(shí)目標(biāo)機(jī)測(cè)試應(yīng)用程序用與參考環(huán)境測(cè)試應(yīng)用程序相同的方式保存測(cè)試結(jié)果。參考環(huán)境和目標(biāo)機(jī)處理器大小端模式相同,測(cè)試向量的保存、傳遞和讀取過(guò)程不引入浮點(diǎn)數(shù)表示誤差。參考環(huán)境和目標(biāo)機(jī)的測(cè)試應(yīng)用程序的全部輸出作為人工分析的輸入,用以最終判定NuEgretOS數(shù)學(xué)庫(kù)的正確性和計(jì)算精度是否符合設(shè)計(jì)和應(yīng)用目標(biāo)。

另外,還使用不同的編譯工具生成多個(gè)參考環(huán)境測(cè)試應(yīng)用程序并對(duì)其運(yùn)算結(jié)果進(jìn)行比較,用以提高參考環(huán)境測(cè)試應(yīng)用程序運(yùn)算結(jié)果作為NuEgretOS數(shù)學(xué)庫(kù)預(yù)期結(jié)果的可信度。

2.4 測(cè)試用例生成

在本項(xiàng)測(cè)試中,各函數(shù)的測(cè)試輸入覆蓋率是保證對(duì)NuEgretOS數(shù)學(xué)庫(kù)各函數(shù)測(cè)試全面性的最重要指標(biāo)。由于double型數(shù)據(jù)位串值個(gè)數(shù)(264)遠(yuǎn)大于目標(biāo)機(jī)運(yùn)行環(huán)境可執(zhí)行測(cè)試輸入數(shù)量,進(jìn)行位串值完全窮舉是不可行的,需按適當(dāng)?shù)囊?guī)則進(jìn)行抽樣。

為保證充分的輸入覆蓋率,測(cè)試用例設(shè)計(jì)前先分析各函數(shù)的基本特性,包括定義域、周期(如有)、單調(diào)性、與函數(shù)計(jì)算機(jī)實(shí)現(xiàn)方法相關(guān)的特殊值等,再根據(jù)各函數(shù)特性和浮點(diǎn)數(shù)定義自動(dòng)生成測(cè)試輸入序列。在參考環(huán)境測(cè)試應(yīng)用程序中生成各函數(shù)測(cè)試輸入值序列時(shí),需滿(mǎn)足以下規(guī)則:

2.4.1 插入函數(shù)整體定義域邊界值、典型周期定義域邊界值、函數(shù)拐點(diǎn)值,無(wú)論函數(shù)在這些值上是否有定義;

2.4.2 插入函數(shù)整體定義域、典型周期定義域內(nèi)若干(40個(gè)以上)隨機(jī)值;

2.4.3 插入與各函數(shù)實(shí)現(xiàn)相關(guān)的特殊值,可能包括:

(1)與函數(shù)計(jì)算方法相關(guān)的函數(shù)定義域邊界值,如sin函數(shù)中泰勒展開(kāi)式計(jì)算前x的邊界值π/4;

(2)與函數(shù)計(jì)算所用參數(shù)相關(guān)的特殊值等;

(3)函數(shù)計(jì)算過(guò)程中可能出現(xiàn)溢出例外的函數(shù)定義域值。

2.4.4 插入與浮點(diǎn)數(shù)定義相關(guān)的特殊值(無(wú)論數(shù)學(xué)函數(shù)在這些值上是否有定義),包括正負(fù)零、正負(fù)無(wú)窮大、qNaN(靜默非數(shù))/sNaN(信號(hào)非數(shù))典型值、規(guī)格化數(shù)和非規(guī)格化數(shù)的最大值和最小值。

除自動(dòng)生成的隨機(jī)數(shù)值外,以上各項(xiàng)中的輸入值均以C語(yǔ)言共用體方式直接對(duì)內(nèi)存賦值,以避免因常量編譯等因素造成實(shí)際輸入值與需輸入值不一致。另外,在按以上規(guī)則插入各函數(shù)測(cè)試輸入值時(shí),同時(shí)插入每個(gè)輸入值的二進(jìn)制位串值的相鄰值。

3 測(cè)試工程的編譯和運(yùn)行

在參考環(huán)境中,使用MinGW提供的GCC編譯工具編譯測(cè)試工程,編譯過(guò)程中數(shù)學(xué)函數(shù)調(diào)用GCC編譯工具自帶函數(shù)庫(kù)(libgcc.a)中的對(duì)應(yīng)函數(shù)實(shí)現(xiàn),編譯后的測(cè)試應(yīng)用程序在Windows操作系統(tǒng)下運(yùn)行。

目標(biāo)機(jī)測(cè)試工程在Windows操作系統(tǒng)下調(diào)用GCC編譯工具進(jìn)行交叉編譯,編譯過(guò)程中數(shù)學(xué)函數(shù)調(diào)用NuEgretOS數(shù)學(xué)庫(kù)(libEgretLibc.a)中的對(duì)應(yīng)函數(shù)實(shí)現(xiàn)。另外,在參考環(huán)境中還調(diào)用了MSVC編譯器編譯測(cè)試工程,編譯過(guò)程中數(shù)學(xué)函數(shù)調(diào)用MSVC編譯工具自帶的C運(yùn)行時(shí)庫(kù)中的對(duì)應(yīng)函數(shù)實(shí)現(xiàn)。

4 運(yùn)行結(jié)果比較

4.1 參考環(huán)境下不同編譯的測(cè)試應(yīng)用程序運(yùn)算結(jié)果比較

Windows操作系統(tǒng)下使用MinGW和MSVC編譯的測(cè)試應(yīng)用程序可以相互傳遞各自生成的二進(jìn)制測(cè)試向量文件。在相同的函數(shù)輸入下,兩個(gè)程序的函數(shù)運(yùn)行結(jié)果僅存在細(xì)微差別,包括:

(1)部分函數(shù)在特殊輸入值下計(jì)算值僅相差1ULP(如sqrt函數(shù)輸入最大規(guī)格化數(shù),sin/cos函數(shù)的部分輸入值)。

(2)部分函數(shù)在輸入為NaN時(shí),輸出的NaN位串值不同(如fabs函數(shù)是否將NaN位串值的符號(hào)位設(shè)置為0,exp函數(shù)輸出NaN時(shí)是否將位串值尾數(shù)域的全部非首位設(shè)置為0),對(duì)NaN的不同處理均不違反C99[4]和POSIX.1-2017標(biāo)準(zhǔn)的要求。

結(jié)合MinGW和MSVC編譯工具(包括工具自帶的函數(shù)庫(kù))的應(yīng)用廣泛程度和函數(shù)輸出比較結(jié)果,以MinGW編譯工具生成的參考環(huán)境測(cè)試應(yīng)用程序的運(yùn)算結(jié)果作為NuEgretOS數(shù)學(xué)庫(kù)各函數(shù)的參考值是相對(duì)可信的。

4.2 參考環(huán)境和目標(biāo)機(jī)運(yùn)行環(huán)境測(cè)試應(yīng)用程序運(yùn)算結(jié)果比較

以MinGW作為參考環(huán)境測(cè)試應(yīng)用程序編譯工具,并以該參考環(huán)境測(cè)試應(yīng)用程序生成的各函數(shù)輸入序列作為目標(biāo)機(jī)測(cè)試應(yīng)用程序的被測(cè)函數(shù)輸入序列,假定該參考環(huán)境測(cè)試應(yīng)用程序?qū)ψ陨砩傻臏y(cè)試輸入序列的函數(shù)運(yùn)算結(jié)果為目標(biāo)機(jī)測(cè)試應(yīng)用程序執(zhí)行NuEgretOS數(shù)學(xué)庫(kù)各函數(shù)的預(yù)期結(jié)果(即參考值)。經(jīng)目標(biāo)機(jī)測(cè)試應(yīng)用程序運(yùn)行結(jié)果比較,除以下兩項(xiàng)主要問(wèn)題外,NuEgretOS數(shù)學(xué)庫(kù)運(yùn)算結(jié)果符合驗(yàn)證目標(biāo):函數(shù)對(duì)有定義輸入值、異常及特殊情況處理正確,并且函數(shù)輸出為有限小數(shù)值的計(jì)算誤差≤2ULPs。

(1)問(wèn)題1:exp、sinh、sqrt、log、log10這5個(gè)函數(shù)輸入為非規(guī)格化浮點(diǎn)數(shù)時(shí),計(jì)算值錯(cuò)誤。部分測(cè)試結(jié)果如表2所示。

表2 問(wèn)題1測(cè)試結(jié)果

image.png

(2)問(wèn)題2:cos、sin、tan這三個(gè)周期性函數(shù)在輸入值較大時(shí),計(jì)算誤差超允許值(2ULPs)。部分測(cè)試結(jié)果如表3所示。

表3 問(wèn)題2測(cè)試結(jié)果

image.png

5 問(wèn)題分析和處理

經(jīng)過(guò)對(duì)已發(fā)現(xiàn)的兩個(gè)問(wèn)題(如表2和表3所示)相關(guān)的軟件代碼進(jìn)行分析和調(diào)試,兩個(gè)問(wèn)題的原因和處理方式如下:

(1)問(wèn)題1,屬例外處理的匯編代碼錯(cuò)誤。錯(cuò)誤原因?yàn)閰R編代碼中寄存器使用錯(cuò)誤,使得NuEgretOS在處理龍芯2K1000浮點(diǎn)協(xié)處理器(FPU)的例外(未實(shí)現(xiàn)操作例外,2K1000未實(shí)現(xiàn)的MIPS64全部浮點(diǎn)指令)時(shí)的處理邏輯出現(xiàn)錯(cuò)誤。匯編代碼修改后問(wèn)題得到解決。經(jīng)回歸測(cè)試,這5個(gè)函數(shù)(exp、sinh、sqrt、log、log10)在參考環(huán)境和目標(biāo)環(huán)境的計(jì)算誤差不超過(guò)2UPLs,符合NuEgretOS數(shù)學(xué)庫(kù)預(yù)先設(shè)定的要求。

(2)問(wèn)題2,由計(jì)算參數(shù)表示誤差而引起的中間計(jì)算值誤差隨三角函數(shù)2π周期數(shù)擴(kuò)大。NuEgretOS數(shù)學(xué)庫(kù)在實(shí)現(xiàn)cos、sin、tan這三個(gè)周期性函數(shù),其中sin和cos函數(shù)采用這兩個(gè)函數(shù)的泰勒展開(kāi)式求解,tan函數(shù)利用tanx=sinx/cosx關(guān)系式求解。在代入泰勒展開(kāi)式前,將輸入值x通過(guò)三角函數(shù)變換公式整理到絕對(duì)值不大于π/4的弧度值。首先需利用公式(如sinx=sin(k·2π+θ),x∈R,k∈N,θ∈[-π,π])將NuEgretOS數(shù)學(xué)庫(kù)中的三角函數(shù)定義域轉(zhuǎn)化到±π之間時(shí),使用位串值為0x401921FB54442D18的參數(shù)(名為PI2)表示理論數(shù)值2π,其表示值(6.283185307179586231996)與精確值(6.283185307179586476925)之間的表示誤差為δPI2≈2.449×10-16,約0.276ULPs。經(jīng)過(guò)k個(gè)2π周期后,造成θ值的誤差為δθ=k·δPI2,因此|k|≥1時(shí),這一單一因素將可以造成函數(shù)值誤差大于2ULPs。解決這一問(wèn)題可以有兩個(gè)途徑:

(1)限制函數(shù)輸入值的范圍,以減少中間值θ的計(jì)算誤差;

(2)使用更高精度的浮點(diǎn)數(shù)(如binary128或兩個(gè)binary64)表示2π的值并參與計(jì)算。

6 總結(jié)

研究者引入對(duì)比測(cè)試方法快速準(zhǔn)確地實(shí)現(xiàn)了對(duì)新開(kāi)發(fā)的嵌入式操作系統(tǒng)數(shù)學(xué)庫(kù)的測(cè)試,并通過(guò)誤差分析輔助完成了對(duì)測(cè)試中發(fā)現(xiàn)的被測(cè)函數(shù)問(wèn)題的定位和處理,提高了被測(cè)試函數(shù)庫(kù)的計(jì)算精度和結(jié)果可信度。

按照經(jīng)分析確定的規(guī)則生成各被測(cè)試函數(shù)輸入值序列保證了測(cè)試的有效覆蓋率。

在參考環(huán)境中采用不同編譯工具并調(diào)用不同工具自帶函數(shù)庫(kù)執(zhí)行相同輸入序列的函數(shù)計(jì)算,并對(duì)計(jì)算結(jié)果進(jìn)行比較,提高了參考環(huán)境生成的、擬作為目標(biāo)機(jī)環(huán)境被測(cè)函數(shù)預(yù)期值的函數(shù)值的正確性和精度的可信度。

使用浮點(diǎn)數(shù)內(nèi)存值二進(jìn)制方式保存、傳遞和比較各函數(shù)的輸入序列和對(duì)應(yīng)的參考環(huán)境運(yùn)算結(jié)果組成的測(cè)試向量,避免了浮點(diǎn)數(shù)值在不同環(huán)境中交換和比較可能帶來(lái)的表示誤差和比較不確定性。

通過(guò)參考環(huán)境和目標(biāo)環(huán)境測(cè)試應(yīng)用程序,測(cè)試用例按規(guī)則自動(dòng)生成、執(zhí)行并比較結(jié)果,提高了本項(xiàng)測(cè)試的自動(dòng)化程度。

作者簡(jiǎn)介:

程建明(1976-),男,四川人,高級(jí)工程師,學(xué)士,現(xiàn)就職于北京廣利核系統(tǒng)工程有限公司,主要從事核安全級(jí)軟件的驗(yàn)證和確認(rèn)工作。

徐先柱(1982-),男,黑龍江人,高級(jí)工程師,學(xué)士,現(xiàn)就職于北京廣利核系統(tǒng)工程有限公司,主要從事于核安全級(jí)軟件的驗(yàn)證與確認(rèn)工作。

參考文獻(xiàn):

[1] IEC 62138-2018, Nuclear power plants-Instrumentation and control systems important to safety-Software aspects for computer-based systems performing category B or C functions[S]. International Electrotechnical Commission,2018.

[2] POSIX.1-2017/IEEE Std 1003.1-2017,IEEE Standard for Information Technology-Portable Operating System Interface (POSIX?) [S]. IEEE Computer Society and The Open Group, 2017.

[3] ISO/IEC 60559:2020(E) IEEE Std 754-2019, Floating-point arithmetic[S]. 2020.

[4] ISO/IEC 9899:1999 Programming languages-C[S]. 1999.

摘自《自動(dòng)化博覽》2023年11月刊

熱點(diǎn)新聞

推薦產(chǎn)品

x
  • 在線(xiàn)反饋
1.我有以下需求:



2.詳細(xì)的需求:
姓名:
單位:
電話(huà):
郵件:
主站蜘蛛池模板: 丝袜国产一区,美女网站一区二区三区,国产精品免费观看视频,国产乱了真实在线观看,视频一区久久,国产成人成人一区二区 | 欧美成人精品动漫在线专区-欧美成人精品区综合A片-欧美成人精品三区综合A片-欧美成人精品一区二区综合A片-欧美成人另类-欧美成人猛片AAAAAAA | 在线日韩亚洲-在线日韩视频-在线日韩欧美一区二区三区-在线日韩欧美-久久精品嫩草影院-久久精品免视看国产盗摄 | 婷婷五色,五月天激情婷婷大综合,亚洲综合久久久久久中文字幕,国产ww久久久久久久久久,婷婷综合缴情亚洲五月伊,欧美日韩不卡在线 九九香蕉-九九线精品视频-九九五月天-九九天天影视-天天干b-天天干2018 | 久久免费高清视频-久久免费大片-久久免费播放视频-久久免费播放-午夜性色吃奶添下面69影院-午夜性色 | 亚洲欧美在线x视频,国产97碰免费视频,88午夜理论不卡,伦理电影院一个免费看片高清在线欧美激情视频在线观看一区二区三区 | 欧美一区二区三区香蕉视-欧美一区二区三区网站-欧美一区二区三区四区在线观看-欧美一区二区三区四区五区六区-欧美一区二区三区四区视频-欧美一区二区三区视视频 欧美性xxxxxx性,国产精彩视频在线观看,亚洲欧美视屏,久艹网,国产日韩欧美中文,亚洲欧美经典 | 欧洲亚洲综合,亚洲欧美综合视频,国产视频分类,欧美亚洲综合在线,亚洲另类第一页,91在线观 | 久久综合影视-久久综合伊人77777麻豆-久久综合一区二区三区-久久综合一-亚欧三级-亚欧美综合 | 与子敌伦刺激对白亂輪亂性-与嫂子同居的日子在线观看-与邻居换娶妻子2在线观看-瑜伽牲交AV-久久久96-久久久91精品国产一区二区 | 成人黄色在线网站-成人黄色在线免费观看-成人黄色在线观看-成人黄色在线播放-成人黄色在线-成人黄色影视 | 性情网站-性派对交换俱乐部-性派对xxxhd-性派对videos18狂欢-国产中学生-国产中文字幕在线视频 | 久久久久久99精品-久久久久久99-久久久久久91香蕉国产-久久久久久91精品色婷婷-中国一级片免费看-中国一级毛片国产高清 | 91黄色影院-91黄色视屏-91黄色大片-91黄-91果冻制片厂广电传媒-91果冻传媒 | 日韩a级片-日韩a级片视频-日韩a级片在线观看-日韩a级一片-日韩a级一片在线观看-日韩a级在线 | 在线亚洲不卡,三上悠亚一区二区观看,91伊人久久,婷婷激情五月,中文字幕久久精品,色综合久久中文字幕 | 在线观看 一区-在线观看 亚洲-在线观看 日韩-在线观看 免费高清视频-久久婷婷国产一区二区三区-久久婷婷国产五月综合色啪最新韩国 | 性欧美高清精品video-性欧美高清videofree-性欧美俄罗斯-性欧美xxxx乳高跟-国产真实乱偷人视频-国产真实乱了全集mp4 | 国产高清在线精品一区在线-国产高清在线精品一区二区三区-国产高清在线精品一区a-国产高清在线精品一区-日韩在线a视频免费播放-日韩在线2020专区 | 国产免费看-国产免费久久精品久久久-国产免费久久精品99-国产免费久久精品44-天天干天天天天-天天干天天爽天天射 | 18禁欧美猛交XXXXX无码-18禁无遮挡爽爽爽无码视频-18禁止观看免费私人影院-1区2区3区高清视频-日本在线网-日本在线视频一区二区 在线观看日本视频-在线观看日本免费-在线观看日本www-在线观看日本-久久亚洲精品成人-久久亚洲精品tv | 欧美黑寡妇香蕉视频-欧美国产一区视频在线观看-欧美国产一区二区三区-欧美国产一区二区-国产成人精品第一区二区-国产成人精品2021欧美日韩 | 亚洲欧美在线x视频,国产97碰免费视频,88午夜理论不卡,伦理电影院一个免费看片高清在线欧美激情视频在线观看一区二区三区 | 欧美日本一道免费一区三区-欧美日本一道高清二区三区-欧美日本一道道一区二区三-欧美日本亚洲国产一区二区-在线观看黄的网站-在线观看国内自拍 | 亚洲欧美在线x视频,国产97碰免费视频,88午夜理论不卡,伦理电影院一个免费看片高清在线欧美激情视频在线观看一区二区三区 | 我爱52av好色,一级毛片大全免费播放,成人午夜无人区一区二区,国产一区国产二区国产三区,青青青青久久精品国产h,狠狠操五月天 | 亚洲综合在线观看视频-亚洲综合在线观看一区-亚洲综合在线观看一区www-亚洲综合在线视频-亚洲综合在线网-亚洲综合在线一区 | 亚洲人成电影青青在线播放-亚洲人成www在线播放-亚洲人成a在线网站-亚洲人av高清无码-久操久-久操-9c.lu | 91精品久久久久久久久无码变态-91精品久久久久久久久中文字幕-91精品久久久久久久蜜臀-91精品久久久久久久青草-91精品久久久久久中文字幕-91精品久久久久久综合五月天 | 欧美在线日韩-欧美在线区-欧美在线看欧美视频免费网站-欧美在线精品一区二区在线观看-www..com黄-vr专区日韩精品中文字幕 | 亚洲成人7777-亚洲成人777-亚洲成人18-亚洲成片在线观看12345ba-国农村精品国产自线拍-国内做爰免费视频 | 五月婷六月婷婷,97九色,成年人国产,精品久久久久久久,久久久久久久国产精品电影,国产在线观看青草视频 | 国产夜色福利院在线观看免费-国产夜趣福利免费视频-国产野花视频天堂视频免费-国产亚洲综合一区二区在线-日韩精品在线观看免费-日韩精品在线电影 | 伊人第四色-伊人成影院-伊人成人在线视频-伊人成人在线观看-久久精品久久精品-久久精品九九亚洲精品天堂 | 亚洲视频一区二区,国产一区二区网站,国产精品…在线观看,欧美高清正版在线,欧美日韩 国产区 在线观看,亚洲最新视频在线观看 | 久久99热不卡精品免费观看,色播综合,国产一级视频在线观看网站,激情综合激情,aa视频在线观看,五月天综合激情网 | 青草视频在线观看免费视频-青草视频在线观看免费-青草视频网址-青草视频网站在线观看-国产黄色一级网站-国产黄色一级毛片 | 极品美女在线观看国产一区-极品嫩模一区二区三区-极品人妻被黑人中出-极品少妇xxxxⅹ另类-极品少妇xxxx精品少妇-极品少妇XXXX精品少妇偷拍 | 日b视频免费看-日b视频免费-人禽性bbb视频-人禽无码做爰在线观看-人妻中文字幕无码-人妻一区日韩二区国产欧美的无码 | 手机看片福利永久国产日韩-手机看片369-手机精品在线-手机国产乱子伦精品视频-国产精品嫩草影院在线观看免费-国产精品嫩草影院在线播放 | 玖玖射,国内高清久久久久久久久,久久婷婷丁香,91精品自在拍精选久久,不卡一区二区三区四区,奇迹少女第四季中文版免费全集 |