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