日本在线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à):
郵件:
主站蜘蛛池模板: 国产欧美日韩中文久久-国产欧美日韩在线一区二区不卡-国产欧美日韩在线人成aaaa-国产欧美日韩在线观看一区二区三区-婷婷国产天堂久久综合五月-婷婷99视频精品全部在线观看 | 佐藤遥希在线播放一二区-佐山爱巨大肥臀在线-佐山爱痴汉theav-佐良娜被爆漫画羞羞漫画-麻豆视频传媒二区-麻豆视频传媒 | 亚洲国产区男人本色vr-亚洲国产区男人本色-亚洲国产品综合人成综合网站-亚洲国产品有宅男-亚洲国产片在线观看-亚洲国产片精品一区二区三区 | 一区二区不卡久久精品-一区二区播放-一区二区3区免费视频-一区不卡在线观看-久久机热-久久黄网 | 一级毛片在线看-一级毛片在线播放免费-一级毛片一级毛片免费毛片-一级毛片一级毛片-九九51精品国产免费看-九号影院 | 午夜久久久久久-午夜久久久-午夜精品在线免费观看-午夜精品影院-国产日韩久久-国产日韩精品一区在线观看播放 | 香蕉网站男人网站-香蕉网站狼人久久五月亭亭-香蕉网在线视频-香蕉网在线观看-香蕉网伊-香蕉婷婷 中文有码中文字幕免费视频-中文有码视频-中文伊人-中文一区在线观看-欧美性综合-欧美性在线视频 | 欧美精品久久久亚洲,欧美国产第一页,亚欧成人一区二区,久久精品一区二区影院,国产成人精品综合久久久,亚洲国产精品一区 | 玖玖射,国内高清久久久久久久久,久久婷婷丁香,91精品自在拍精选久久,不卡一区二区三区四区,奇迹少女第四季中文版免费全集 | 欧美中出,国产欧美又粗又猛又爽老,日本啊v,欧美日韩欧美,国产va在线观看,国产一区二区三区在线视频 | 国产首页-国产手机精品自拍视频-国产视频综合-国产视频自拍一区-香蕉网在线播放-香蕉网在线 | 亚洲人成电影青青在线播放-亚洲人成www在线播放-亚洲人成a在线网站-亚洲人av高清无码-久操久-久操-9c.lu | 国产一卡2卡3卡四卡精品网站-国产一久久香蕉国产线看观看-国产一进一出视频网站-国产一级在线现免费观看-亚洲高清国产拍精品影院-亚洲高清二区 | 日韩成人A片一区二区三区-日韩成人黄色片-日韩成人在线视频-日韩吃奶摸下AA片免费观看-日韩大片免费看-日韩大片在线观看 | 日本漫画母亲口工子全彩-日本漫画大全无翼乌-日本妈妈在线观看中文字幕-日本妈妈xxxx-操他射他影院-操老太太的逼 | 国产偷抇久久精品A片蜜臀A-国产偷抇久久精品A片蜜臀AV-国产偷抇久久精品A片图片-国产偷窥熟妇高潮呻吟-国产凸凹视频熟女A片-国产玩弄放荡人妇系列 | 色网在线免费观看-色网在线观看-色网在线播放-色网在线-黄色片网址大全-黄色片网站在线观看 | 91噜噜噜在线观看-91露脸对白-91麻豆福利-91麻豆高清国产在线播放-91麻豆国产-91麻豆国产福利精品 | 国产毛片高清,精品综合,日韩亚洲欧美综合,精品国产一区二区三区免费看,精品久久久久久国产牛牛app,亚洲欧美国产精品第1页 | 日韩在线观看网站-日韩在线观看视频网站-日韩在线观看视频免费-日韩在线观看视频黄-日韩在线观看免费完整版视频-日韩在线观看免费 | 亚洲 日韩 色 图网站-亚洲 图片 另类 综合 小说-亚洲 无码 欧美 经典-亚洲 校园 春色 另类 图片-亚洲 校园 欧美 国产 另类-亚洲 在线 成 人色色 | 美女内射毛片在线看-美女内射毛片在线看免费人动物-美女内射视频WWW网站午夜-美女强奷到抽搐在线播放-美女视频黄a视频全免费网站色窝-美女视频黄的全是免费 | 日本久色-日本久久综合视频-日本久久综合-日本久久中文字幕-日本久久一区二区-日本久久网站 | 91导航在线-91岛国-91第一页-91短视频在线高清hd-91粉嫩萝控精品福利网站-91粉色视频在线观看 | 夜夜操狠狠操,99在线观看精品免费99,亲爱的妈妈2,色婷婷亚洲十月十月色天,精品福利一区二区在线观看,久久国产精品99精品国产 | 久久夜视频-久久夜色视频-久久夜色精品国产欧美-久久夜色精品国产噜噜小说-久久夜色精品国产-久久亚洲这里只有精品18 | 在线免费观看国产精品,日韩经典在线,香蕉久久网,爽妇网s,国内在线观看精品免费视频,欧美另类图片亚洲偷 | 美女操网站-美女操操操-美女操操-美女被日动态图-美女被猛男躁免费视频网站-美女被漫画 | 视频免费观看网址-视频免费观看视频-视频免费观看入口大全-视频免费1区二区三区-国产成人尤物精品一区-国产成人悠悠影院 | 国产日韩欧美亚洲综合在线-国产日韩欧美视频在线观看-国产日韩欧美视频-国产日韩欧美久久久-人人澡人人澡人人澡-人人澡人人澡人人 | 麻豆黑色丝袜jk制服福利网站-麻豆精品传媒视频观看-麻豆精品传媒一二三区在线视频-麻豆精选传媒4区2021-在线视频99-在线视频a | 四虎影视免费在线观看-四虎影视免费在线-四虎影视免费看-四虎影视免费观看免费观看-激情影院在线-激情影院费观看 | 日本久久久久久久,97久久精品一区二区三区,狠狠色噜噜狠狠狠狠97,日日干综合,五月天婷婷在线观看高清,九色福利视频 | 欧美黑寡妇香蕉视频-欧美国产一区视频在线观看-欧美国产一区二区三区-欧美国产一区二区-国产成人精品第一区二区-国产成人精品2021欧美日韩 | 天天色天天爽,久久综合九色综合狠狠97,五月天激情啪啪,国产精品网址你懂的,五月激激激综合网色播免费,国产成人精品久久亚洲高清不卡 | 在线亚洲激情,免费看电影网站,奇米影音先锋,99免费视频观看,国产成人aa视频在线观看,久久久蜜桃 欧美人成在线视频-欧美人成一本免费观看视频-欧美人xxxxxbbbb-欧美区在线-在线不卡免费视频-在线播放周妍希国产精品 | 亚洲欧洲在线视频-亚洲欧洲在线观看-亚洲欧洲一区二区三区-亚洲欧洲一区二区-久久国产精品最新一区 | 天堂网在线最新版www-天堂网在线资源-天堂网在线看-天堂网在线观看视频-日本精品无码特级毛片-日本精品无码一区二区三区久久久 | 成人av免费视频在线观看-成人av鲁丝片一区二区免费-成人av精品一区二区三区四区-成人aⅴ综合视频国产-成人aⅴ片-成年网站免费观看精品少妇人妻av一区二区三区 | 黄色在线网站-黄色在线网页-黄色在线网-黄色在线视频网址-品色阁-品色成人网 | 波多野结衣中文字幕教师-波多野结衣中文字幕2022免费-波多野结衣中文在线观看-波多野结衣中文在线播放-波多野结衣中文一区-波多野结衣中文丝袜字幕 |