郝小龍 鞠曉東 盧俊強(qiáng) 門百永 陳云霞
(1 西安石油大學(xué) 油氣鉆井技術(shù)國家工程實(shí)驗(yàn)室井下測控研究室 西安 710065)
(2 中國石油大學(xué)(北京)北京 102249)
(3 中國石油集團(tuán)測井有限公司隨鉆測井中心 西安 710054)
為了提高探測深度和方位分辨率,新一代方位遠(yuǎn)探測聲波測井儀采用陣列化的方位接收換能器并記錄更長時(shí)間的全波列數(shù)據(jù)[1],每個(gè)深度點(diǎn)的數(shù)據(jù)量能夠達(dá)到4 Mbits。如果采用電纜實(shí)時(shí)傳輸所有數(shù)據(jù),最大測井速度僅為60 m/h 左右。為此,實(shí)際儀器中采用了井下存儲全部數(shù)據(jù)而只上傳部分抽查數(shù)據(jù)的工作方式,使儀器的測井速度達(dá)到480 m/h[2?3]。聲波測井儀器在井下高溫惡劣環(huán)境中工作,存儲器在高溫下的可靠性是儀器存儲功能穩(wěn)定運(yùn)行的關(guān)鍵。受工藝水平的限制,目前的存儲器在測井高溫(175?C 甚至更高)條件下會出現(xiàn)比特位翻轉(zhuǎn)、壞塊、讀寫錯(cuò)誤甚至徹底損壞等故障。因此,使用前篩選出高溫下穩(wěn)定的存儲器并設(shè)計(jì)有效的溫度補(bǔ)償算法是非常必要的。
電子元件的失效曲線為浴盆型,即早期失效的概率遠(yuǎn)遠(yuǎn)大于中間使用階段失效的概率。基于這一規(guī)律,為了提高測井儀器高溫下的可靠性,通過一定時(shí)間的高溫老化實(shí)驗(yàn)進(jìn)行元器件的篩選是常用的途徑[4]。設(shè)計(jì)一種簡易的存儲器高溫老化檢測系統(tǒng)有助于高效地進(jìn)行存儲器的篩選,同時(shí)可以評估溫度補(bǔ)償算法的效果。存儲器檢測系統(tǒng)的關(guān)鍵在于設(shè)計(jì)它的訪問接口和測試策略以保證檢測的有效性和簡易性,研究者們在這方面做了許多工作。微軟公司的FAT32 文件系統(tǒng)提供了一種對存儲設(shè)備進(jìn)行訪問的機(jī)制[5];三星公司提供了一種針對存儲器大數(shù)據(jù)塊的錯(cuò)誤校驗(yàn)糾錯(cuò)(Error checking and correction,ECC)算法,該算法具備定位及糾正單比特錯(cuò)誤,并發(fā)現(xiàn)雙比特錯(cuò)誤的能力[6];肖紅兵等[7]、鄒驍?shù)萚8]、Hao 等[9]分別設(shè)計(jì)了隨鉆聲波測井工作條件下的存儲器控制器和數(shù)據(jù)存儲管理策略。
本文在前人研究的基礎(chǔ)上,設(shè)計(jì)了基于通用存儲器測試座的硬件測試環(huán)境,編寫了基于MSComm控件的上位機(jī)控制軟件,開發(fā)了包含功能分區(qū)、ECC 算法以及模擬實(shí)際測井溫度環(huán)境的存儲器測試管理策略,測試了不同存儲器在高溫老化時(shí)出現(xiàn)故障的類型和嚴(yán)重程度,分析了ECC算法對存儲器使用的溫度補(bǔ)償效果,高效地完成了存儲器的篩選工作。
圖1為基于DSP處理器的Flash 高溫老化實(shí)驗(yàn)系統(tǒng),其中虛線框中的DSP 和以插拔方式安裝的Flash 測試座被設(shè)計(jì)在同一塊高溫電路板上。DSP通過普通IO 管腳模擬的時(shí)序訪問Flash 存儲器,通過USB-TTL 模塊與上位機(jī)連接以接收測試命令并上傳測試結(jié)果。Flash 在DSP 的控制下,接收數(shù)據(jù)總線(IO7-IO0)上的命令、地址或數(shù)據(jù),然后按照相應(yīng)的時(shí)序完成數(shù)據(jù)讀寫、塊擦除及相應(yīng)的組合操作。USB-TTL模塊通過FT2232和MAX3232兩個(gè)接口芯片,實(shí)現(xiàn)了USB與UART兩種數(shù)據(jù)傳輸格式的轉(zhuǎn)換,建立了DSP和上位機(jī)通信的橋梁。
圖1 系統(tǒng)硬件設(shè)計(jì)的原理框圖Fig.1 Hardware schematic diagram of system
圖2為設(shè)計(jì)的Flash 測試座的實(shí)物圖,包括夾持模塊和轉(zhuǎn)換模塊兩部分。夾持模塊為定制的高溫老化測試座,它可以對符合開放NAND 閃存接口協(xié)議(Open NAND flash interface,ONFI)、引腳數(shù)為48個(gè)、間距為0.5 mm、封裝形式為薄型小尺寸封裝(Thin small outline package,TSOP)的存儲器進(jìn)行測試。轉(zhuǎn)換模塊將夾持模塊的48 個(gè)引腳線進(jìn)行分類組合,形成了2 組雙排插針接口(P1 和P2),該接口同時(shí)起著安裝固定和信號傳遞的作用。不同容量的存儲器在內(nèi)部一般按照片、區(qū)(plane)、塊、頁幾級地址結(jié)構(gòu)進(jìn)行組織,外部訪問接口的差異在片選信號(Chip select,CE)上。為了滿足不同容量存儲器的測試要求,DSP 能夠控制所有片選信號(CE1~CE4)。該設(shè)計(jì)不僅避免了焊接測試法對芯片的傷害,而且使測試更加方便和高效。
圖2 Flash 存儲器測試座的實(shí)物圖Fig.2 Photograph of testing model for Flash memory
本文在上位機(jī)中設(shè)計(jì)了基于MSComm 控件的控制軟件,在DSP控制器中開發(fā)了存儲器的測試管理策略。二者配合實(shí)現(xiàn)了存儲器的實(shí)時(shí)交互測試。
圖3是在VS2010 環(huán)境中開發(fā)的上位機(jī)控制軟件界面。MSComm 控件是Microsoft 公司提供的簡化Windows 下串行通信編程的Active X 控件[10]。通過該控件,上位機(jī)與DSP 處理器之間以波特率115200、8 位數(shù)據(jù)、1 位停止位、無奇偶校驗(yàn)的方式進(jìn)行串行通信。設(shè)計(jì)中,利用該控件的標(biāo)準(zhǔn)通信命令實(shí)現(xiàn)了數(shù)據(jù)的格式化接收和發(fā)送,其中上位機(jī)的接收使用事件驅(qū)動方式而發(fā)送采用主動方式。此外,軟件中的數(shù)據(jù)存儲功能可以實(shí)時(shí)保存全部測試數(shù)據(jù)以供后續(xù)的詳細(xì)分析與處理。
圖3 Flash 測試的上位機(jī)軟件Fig.3 PC software for Flash testing
圖4為自頂向下的存儲器測試管理層次圖,主要由壞塊管理、讀寫管理、校驗(yàn)糾錯(cuò)管理、交互管理四個(gè)部分組成。下面詳細(xì)介紹該策略的具體實(shí)現(xiàn)方法。
圖4 存儲器測試管理的層次圖Fig.4 Hierarchical graphic of testing management for Flash
(1)壞塊管理
存儲器的壞塊主要來源于兩方面:初始出廠時(shí)的壞塊和使用過程中產(chǎn)生的壞塊。通過讀取存儲器中出廠時(shí)的壞塊標(biāo)記,可以建立初始壞塊信息表。當(dāng)擦除或者寫入失敗時(shí),進(jìn)行壞塊的動態(tài)標(biāo)記。設(shè)計(jì)中,使用數(shù)組分別記錄壞塊的標(biāo)記和壞塊的位置,并實(shí)時(shí)更新與顯示壞塊的個(gè)數(shù)和位置信息。
(2)讀寫管理
對存儲器的讀寫訪問實(shí)質(zhì)上就是設(shè)計(jì)底層驅(qū)動。本文通過DSP 的普通IO 管腳構(gòu)建片選(CE)、讀寫使能信號(WE、RD),地址和命令鎖存信號(ALE、CLE)、狀態(tài)線(R/B)和數(shù)據(jù)線(I/O)的邏輯控制組合,使它們滿足讀寫操作的時(shí)序要求。
(3)校驗(yàn)糾錯(cuò)管理
ECC 算法能夠評價(jià)存儲器在高溫環(huán)境下出現(xiàn)位翻轉(zhuǎn)及其可校正的程度。本文改進(jìn)了傳統(tǒng)的ECC算法[6],使其適合聲波測井的數(shù)據(jù)特點(diǎn),同時(shí)對存儲器的管理信息和波形數(shù)據(jù)均可以檢驗(yàn)和糾錯(cuò)。算法以16 位的字為數(shù)據(jù)塊的基本單元,采用可變ECC字節(jié)的方法,對任意2n(n≥0)個(gè)字的數(shù)據(jù)塊進(jìn)行校驗(yàn),能夠發(fā)現(xiàn)數(shù)據(jù)塊中的雙比特位錯(cuò)誤并糾正單比特位錯(cuò)誤。其中,2個(gè)字節(jié)的ECC碼可以校驗(yàn)1字到8 字的數(shù)據(jù)塊,而4 字節(jié)的ECC 碼可以校驗(yàn)256字到2048 字的數(shù)據(jù)塊。
本文以2 字?jǐn)?shù)據(jù)的ECC 算法為例進(jìn)行說明。表1為算法的極性分布表,將2 個(gè)字按照高低字節(jié)和位的順序進(jìn)行排列,可以構(gòu)成4 行×8 列的數(shù)據(jù)位矩陣,其中W0_LB表示第0 字的低字節(jié),bit7 表示字中的第7 位,CP0~CP5 為列校驗(yàn)值,LP0~LP3表示行校驗(yàn)值。CP0和LP0 由式(1)~式(4)計(jì)算得到,其中Wi(j)表示第i字的第j位,Li(j)表示第i行字節(jié)的第j位,CP0_Temp(i)和LP0_Temp(i)為計(jì)算的中間值。
其他極性值的定義和計(jì)算方法類似,每個(gè)極性值是不同組合的16個(gè)數(shù)據(jù)位異或的結(jié)果,每一位數(shù)據(jù)與3 個(gè)列極性值和2 個(gè)行極性值唯一對應(yīng)。比較存儲時(shí)的ECC 校驗(yàn)值和讀取到的ECC 校驗(yàn)值,即可實(shí)現(xiàn)數(shù)據(jù)塊中單比特位錯(cuò)誤的定位和校正。
(4)交互管理
設(shè)計(jì)中,DSP 的串行接口和USB-TTL 模塊是高溫測試板和上位機(jī)的硬件交互通道。通過設(shè)計(jì)功能分區(qū)、測試函數(shù)、狀態(tài)顯示、異常處理等內(nèi)容,可以測試存儲器在不同溫度下出錯(cuò)和可恢復(fù)的程度,進(jìn)而完成存儲器的高溫老化實(shí)驗(yàn)。
表2為10 個(gè)交互命令的測試功能、分區(qū)、操作內(nèi)容和實(shí)時(shí)顯示信息的對應(yīng)關(guān)系。上位機(jī)控制軟件以字符形式發(fā)送0~9 即可選擇這10 個(gè)命令,對Flash的三個(gè)測試區(qū)域進(jìn)行操作。
表1 ECC 算法的極性生成表Table1 Polar table for the ECC algorithm
表2 交互管理的對應(yīng)表Table2 Correspondence table of interactive management
為了模擬實(shí)際測井的數(shù)據(jù)存取環(huán)境,存儲器的篩選通過不帶電高溫老化實(shí)驗(yàn)和帶電完整測試兩個(gè)步驟完成。不帶電高溫老化實(shí)驗(yàn)是指不給所有存儲器上電,將它們放置于烤箱中加溫至175?C,持續(xù)2 h 后降溫,測試加溫前和降溫后存儲器的性能變化,初步判斷存儲器是否徹底損壞。
帶電完整測試是指選擇表2中的命令編碼對存儲器在以下三種情況下的性能進(jìn)行測試:(1)室溫下寫入數(shù)據(jù),加溫到175?C 并持續(xù)2 h,降溫后讀??;(2)175?C 時(shí)寫入數(shù)據(jù),持續(xù)2 h 后降至室溫讀??;(3)任意溫度下實(shí)時(shí)寫入數(shù)據(jù)并讀取。按照以下流程,可以對一個(gè)新的Flash 存儲器進(jìn)行完整的測試,實(shí)時(shí)顯示的信息如表2所示。
(1)室溫下正確獲取ID。如果錯(cuò)誤,說明存儲器徹底損壞。
(2)室溫下建立初始化壞塊表。
(3)室溫下測試。對表2中的3個(gè)分區(qū)進(jìn)行讀寫測試,統(tǒng)計(jì)芯片在室溫下的出錯(cuò)情況。
(4)加溫測試。從室溫到175?C 的加溫過程以及降溫過程中,使用連續(xù)讀寫模式進(jìn)行測試;175?C穩(wěn)定半小時(shí)后,對單溫度點(diǎn)隨機(jī)存取區(qū)寫入數(shù)據(jù),持續(xù)2 h 結(jié)束前讀取數(shù)據(jù)。
(5)降至室溫測試。分別使用命令2和命令4 讀取相應(yīng)測試區(qū)的數(shù)據(jù)并進(jìn)行分析。
按照上述方法,對三星、鎂光、青島智騰等公司生產(chǎn)的多種Flash 存儲器進(jìn)行了檢測,發(fā)現(xiàn)三星的存儲器在高溫下比較可靠。在此基礎(chǔ)上,對28個(gè)三星存儲器進(jìn)行了測試,現(xiàn)象和初步結(jié)論如下:
(1)第一次不帶電加溫實(shí)驗(yàn)后,28 個(gè)存儲器中有4 個(gè)徹底損壞,2 個(gè)有新的壞塊產(chǎn)生。第二次不帶電加溫實(shí)驗(yàn)后,沒有徹底損壞的存儲器出現(xiàn)。因此,不帶電高溫老化實(shí)驗(yàn)可以有效地剔除嚴(yán)重不滿足要求的存儲器。
(2)在剩余的24 個(gè)存儲器中隨機(jī)挑選5 個(gè),進(jìn)行了完整的帶電加溫測試,統(tǒng)計(jì)的讀寫操作開始出錯(cuò)溫度、帶ECC 處理和不帶ECC 處理兩種方式下讀取數(shù)據(jù)的錯(cuò)誤數(shù)、錯(cuò)誤類型以及錯(cuò)誤位置如表3所示,其中CE0和CE1為每個(gè)存儲器中兩個(gè)片結(jié)構(gòu)的片選標(biāo)志。部分存儲器在加溫到150?C 后,就開始出現(xiàn)頁內(nèi)單比特位翻轉(zhuǎn)錯(cuò)誤,且出錯(cuò)的塊、頁、列地址固定,未出現(xiàn)單頁內(nèi)多比特位翻轉(zhuǎn)和多處錯(cuò)誤的情況。由于ECC 算法可以校正頁內(nèi)單比特位翻轉(zhuǎn)的錯(cuò)誤,所有存儲器在175?C的高溫讀寫實(shí)驗(yàn)中,帶ECC 處理的數(shù)據(jù)讀取錯(cuò)誤數(shù)均為0。因此,通過ECC 算法進(jìn)行溫度補(bǔ)償后,該款存儲器可以在測井要求的175?C高溫環(huán)境中工作。
表3 存儲器讀寫錯(cuò)誤統(tǒng)計(jì)表Table3 Error statistics of memory reading and writing
聲波測井儀器在井下高溫惡劣環(huán)境中工作,存儲器在高溫下的可靠性是儀器存儲功能穩(wěn)定運(yùn)行的關(guān)鍵。篩選出高溫下穩(wěn)定的存儲器并設(shè)計(jì)有效的溫度補(bǔ)償算法有助于提高存儲器的可靠性。
本文設(shè)計(jì)了基于老化測試座和MSComm 控件的存儲模塊高溫老化檢測系統(tǒng),使用ECC算法進(jìn)行數(shù)據(jù)的校驗(yàn)糾錯(cuò)以提高存儲器的使用溫度。實(shí)驗(yàn)結(jié)果表明,存儲器在測井高溫條件下會出現(xiàn)比特位翻轉(zhuǎn)、擦除失敗甚至徹底損壞等故障,高溫老化實(shí)驗(yàn)可以篩選出滿足要求的存儲器;三星的該款存儲器在測井高溫下的比特位翻轉(zhuǎn)以頁內(nèi)單比特位翻轉(zhuǎn)為主,ECC算法能夠起到很好的溫度補(bǔ)償作用。
本設(shè)計(jì)不僅可以對符合開放NAND 閃存接口協(xié)議的同類存儲器進(jìn)行快速的高溫老化與篩選實(shí)驗(yàn),而且對井下存儲系統(tǒng)的設(shè)計(jì)有著重要的參考意義。