二進制數折半查找算法在DSP上的實現
發布時間:2007/8/23 0:00:00 訪問次數:742
摘要:折半查找是采用跳躍躍方式先將順序數列中的“中間值”與所查詢值進行比較,然后按照比值大于或小于“中間值”來判斷所查找數的甩在區域。文章給出了將折半算法應用于數字信號處理器上以實現二進制數的查找算法的一種具體方法。并給出了采用這種方法的軟件程序。
關鍵詞:折半查找 二進制 DSP
1 折半查找的基本原理
近十幾年來,隨著各類集成化單片數字信號處理器(DSP,Digital Signal Processor)性能的不斷改時,相慶的軟件和開發工具日臻完善,價格也迅速下降。它們所具有的功能強、集成度高、應用靈活及性能價格比高的優點使其信息處理(如語音與圖像各種的處理)、通信、多媒體、綜合網絡、控制、消費電子、醫療設備、測試與儀器等諸多領域得到了極為廣泛的。有一種看法認為:單片機是事物處理型的處理器,如開關的通斷或邏輯操作等;數字信號處理器是數據處理型的處理器,如進行大量的包括FFT在內的數據運行等。這種看法在某種程序上是有一定道理的。一般地說,DSP應用系統要處理的數據多、運算量大而且實時性要求較高,研究DSP本身(包括硬件方面和軟件方面)的優勢對快速有效地執行某種算法有著重要的實用價值。
查找是智能系統經常用到的操作,實現查找的方法有多種,如順序查找、折半查找和分塊查找等。在這些方法中,如果按順序存儲結構組織的查找表中的所有數據元素按關鍵字有序,則可以執行折半查找(或稱二分查找)。它的基本思想是:由于查找表中的數據按關鍵字有序(假設遞增有序),則在查找時不必逐個順序比較,而可以采用跳躍式方式先與“中間位置”的記錄關鍵字比較,若相同,則查找成功,若給定值大于“中間位置”的關鍵字,則在后半部分進行折半查找,否則在前半部進行折半查找。
2 折音查找算法在DSP上的實現
二進制折半查找算法(Binary Search Algorithm)在DSP上實現并不難,但是一般查找程序都未能充發利用DSP內部先進的結構和指令集,從而使得程序運行的時間未能縮至最短。這在某些時候不會防礙系統效率,但在系統數據量較大而且實時性要求較高的情況下,則必須盡一切可能提高程序的效率。本文以TMS320C50為例給出了一個二進制查找算法的子程序,該程序可使系統的查找效率得到較大提高。
程序中充分利用了TMS320C50的位反址尋址指令,該指令可以在每一個測試過程中使搜尋的工作減半并釋放累加器以進行其它工作。此外,該程序利用了條件執行指令(XC),而不是使用傳統的條件轉換指令,這樣一來便節省了指令周期并提高了效率。具體的TMS320C50的指令集可以參考其它文獻[1]。
本文介紹的二進搜尋程序是在有序狀態下進行的。它假設表格中的數據按由低到高的次序排列,最大數在存儲器中的地址最大。當然,反之(最小數在地址的最高位)亦是如此。此外,程序還假設數據中的最大個數是2的冪次方,在下面給出的源程序中個數2 11個。
TMS320C50的源程序:
.bss NTABLE,800h ;2的11次冪的數據空間(按由低到高排列)
.bss LOOK,1 ;要查找的數
.mmregs
.text
.
.
.
call bsearch
.
.
.
;***********************
;二進制查找子程
摘要:折半查找是采用跳躍躍方式先將順序數列中的“中間值”與所查詢值進行比較,然后按照比值大于或小于“中間值”來判斷所查找數的甩在區域。文章給出了將折半算法應用于數字信號處理器上以實現二進制數的查找算法的一種具體方法。并給出了采用這種方法的軟件程序。
關鍵詞:折半查找 二進制 DSP
1 折半查找的基本原理
近十幾年來,隨著各類集成化單片數字信號處理器(DSP,Digital Signal Processor)性能的不斷改時,相慶的軟件和開發工具日臻完善,價格也迅速下降。它們所具有的功能強、集成度高、應用靈活及性能價格比高的優點使其信息處理(如語音與圖像各種的處理)、通信、多媒體、綜合網絡、控制、消費電子、醫療設備、測試與儀器等諸多領域得到了極為廣泛的。有一種看法認為:單片機是事物處理型的處理器,如開關的通斷或邏輯操作等;數字信號處理器是數據處理型的處理器,如進行大量的包括FFT在內的數據運行等。這種看法在某種程序上是有一定道理的。一般地說,DSP應用系統要處理的數據多、運算量大而且實時性要求較高,研究DSP本身(包括硬件方面和軟件方面)的優勢對快速有效地執行某種算法有著重要的實用價值。
查找是智能系統經常用到的操作,實現查找的方法有多種,如順序查找、折半查找和分塊查找等。在這些方法中,如果按順序存儲結構組織的查找表中的所有數據元素按關鍵字有序,則可以執行折半查找(或稱二分查找)。它的基本思想是:由于查找表中的數據按關鍵字有序(假設遞增有序),則在查找時不必逐個順序比較,而可以采用跳躍式方式先與“中間位置”的記錄關鍵字比較,若相同,則查找成功,若給定值大于“中間位置”的關鍵字,則在后半部分進行折半查找,否則在前半部進行折半查找。
2 折音查找算法在DSP上的實現
二進制折半查找算法(Binary Search Algorithm)在DSP上實現并不難,但是一般查找程序都未能充發利用DSP內部先進的結構和指令集,從而使得程序運行的時間未能縮至最短。這在某些時候不會防礙系統效率,但在系統數據量較大而且實時性要求較高的情況下,則必須盡一切可能提高程序的效率。本文以TMS320C50為例給出了一個二進制查找算法的子程序,該程序可使系統的查找效率得到較大提高。
程序中充分利用了TMS320C50的位反址尋址指令,該指令可以在每一個測試過程中使搜尋的工作減半并釋放累加器以進行其它工作。此外,該程序利用了條件執行指令(XC),而不是使用傳統的條件轉換指令,這樣一來便節省了指令周期并提高了效率。具體的TMS320C50的指令集可以參考其它文獻[1]。
本文介紹的二進搜尋程序是在有序狀態下進行的。它假設表格中的數據按由低到高的次序排列,最大數在存儲器中的地址最大。當然,反之(最小數在地址的最高位)亦是如此。此外,程序還假設數據中的最大個數是2的冪次方,在下面給出的源程序中個數2 11個。
TMS320C50的源程序:
.bss NTABLE,800h ;2的11次冪的數據空間(按由低到高排列)
.bss LOOK,1 ;要查找的數
.mmregs
.text
.
.
.
call bsearch
.
.
.
;***********************
;二進制查找子程
上一篇:傳聲器的主要技術指標