亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

實(shí)現(xiàn)并行數(shù)據(jù)排序的硬件電路及方法

文檔序號(hào):6459229閱讀:204來(lái)源:國(guó)知局
專利名稱:實(shí)現(xiàn)并行數(shù)據(jù)排序的硬件電路及方法
技術(shù)領(lǐng)域
本發(fā)明涉及微電子數(shù)字電路設(shè)計(jì)領(lǐng)域,具體涉及一種采用并行方法實(shí)現(xiàn)數(shù) 據(jù)排序的硬件電路及方法。
背景技術(shù)
排序是數(shù)據(jù)處理的最基本操作之一,也是我們經(jīng)常碰到的問(wèn)題。目前實(shí)現(xiàn) 數(shù)據(jù)排序的方法可以劃分為兩種方式軟件實(shí)現(xiàn)方式和硬件實(shí)現(xiàn)方式。軟件實(shí)現(xiàn)方式有很多種,各有各的特點(diǎn),對(duì)應(yīng)不同的應(yīng)用場(chǎng)合。但所有軟 件實(shí)現(xiàn)的方式都有一個(gè)共同的缺點(diǎn),那就是速度比較慢并且需要利用處理器資 源。在速度要求較高或者沒(méi)有處理器資源的場(chǎng)合,無(wú)法采用這類軟件實(shí)現(xiàn)方式。而硬件實(shí)現(xiàn)方式的原理大多借鑒軟件排序中的"冒泡法",所謂"冒泡法", 即將待排序的數(shù)據(jù)看作是豎著排列的"氣泡",較小的比較輕,從而要往上浮。 在冒泡排序算法中我們要對(duì)這個(gè)"氣泡"序列處理若干遍。所謂一遍處理,就 是自底向上檢查一遍這個(gè)序列,并時(shí)刻注意兩個(gè)相鄰的數(shù)據(jù)的順序是否正確。 如果發(fā)現(xiàn)兩個(gè)相鄰數(shù)據(jù)的順序不對(duì),即小的數(shù)據(jù)在下面,就交換它們的位置。 顯然,處理一遍之后,最小的數(shù)據(jù)就浮到了最高位置;處理兩遍之后,次小的 數(shù)據(jù)就浮到了次高位置。在作第二遍處理時(shí),由于最高位置上的數(shù)據(jù)已是最小,所以不必檢查。由上可知,第n遍處理時(shí),不必檢查第n高位置以上的數(shù)據(jù), 因?yàn)榻?jīng)過(guò)前面n-l遍的處理,它們已正確地排好序。因此,利用該方法排序n 個(gè)數(shù)據(jù)需要(n-l)!個(gè)時(shí)鐘周期,這在數(shù)據(jù)量較少時(shí)還可以接受。 一旦數(shù)據(jù)量比 較大的時(shí)候,比較所需的周期數(shù)會(huì)變的非常大以至于不可接受。并且比較器前 端的數(shù)據(jù)選擇電路當(dāng)n比較大時(shí)會(huì)非常復(fù)雜,以至電路運(yùn)行速率較低。發(fā)明內(nèi)容本發(fā)明的目的在于克服目前排 序方法需要周期數(shù)較多的缺點(diǎn),利用硬件方 式將冒泡排序過(guò)程并行化以提高排序速率。為了達(dá)到上述目的,本發(fā)明的技術(shù)方案如下一種實(shí)現(xiàn)并行數(shù)據(jù)排序的硬件電路,包括 一組寄存器,每個(gè)寄存器具有 兩個(gè)數(shù)據(jù)輸入端口iO、 il, 一個(gè)數(shù)據(jù)選擇端口 Sel以及一個(gè)數(shù)據(jù)輸出端口;當(dāng) 數(shù)據(jù)選擇端口 Sel為0時(shí)寄存器選擇鎖存端口 il的數(shù)據(jù),而當(dāng)數(shù)據(jù)選擇端口Sd為1時(shí)寄存器選擇鎖存端口 i0的數(shù)據(jù); 一組比較器,每個(gè)比較器有三個(gè)數(shù)據(jù)輸入端口IO、 II、 12, 一個(gè)數(shù)據(jù)選擇端口Se以及兩個(gè)數(shù)據(jù)輸出端口L、 S; 當(dāng)數(shù)據(jù)選擇端口 Se為0時(shí),該比較器比較數(shù)據(jù)輸入端口 i0和il的數(shù)據(jù)并將其 中的大值輸出到端口 L上,而小值輸出到端口 S;當(dāng)數(shù)據(jù)選擇端口 Se為1時(shí), 該比較器比較數(shù)據(jù)輸入端口 il和i2的數(shù)據(jù)并將其中的大值輸出到端口 L,而 小值輸出到端口S;以及一個(gè)周期計(jì)數(shù)器。所述比較器的三個(gè)數(shù)據(jù)輸入端口 10、 II、 12通常分別與相鄰的寄存器的數(shù) 據(jù)輸出口相連。設(shè)該比較器的編號(hào)為k,則與之相連的三個(gè)寄存器單元編號(hào)分 別為2k、 2k+l和2k+2。不過(guò)有一種情況例外,那就是當(dāng)寄存器單元個(gè)數(shù)為偶 數(shù)時(shí),最后一個(gè)比較器單元的只與兩個(gè)寄存器單元相連,其10端口與倒數(shù)第 二個(gè)寄存器單元的數(shù)據(jù)輸出口相接,II、 12端口都與最后一個(gè)寄存器單元的 數(shù)據(jù)輸出口相接。所述比較器數(shù)據(jù)輸出端口 S與和該比較器相連的編號(hào)最小的 寄存器的端口 il和編號(hào)次小的寄存器的端口 i0相連,而端口 L與和該比較器 相連的編號(hào)次小的寄存器的端口 il和編號(hào)最大的寄存器的端口 i0相連。對(duì)于 編號(hào)為0的寄存器單元其數(shù)據(jù)輸入端口 i0與il都與編號(hào)為0的比較器單元的 S端相連。如果寄存器單元個(gè)數(shù)為偶數(shù),則最后一個(gè)比較器單元的輸出端口L 僅與編號(hào)次小的寄存器的端口 il相連;如果寄存器單元個(gè)數(shù)為奇數(shù),則最后 一個(gè)寄存器單元的數(shù)據(jù)輸入端口 i0與il都與編號(hào)最大的比較器單元的L端相 連。所述周期計(jì)數(shù)器的最低位與所有寄存器的數(shù)據(jù)選擇端口 Sel以及所有比較 器的數(shù)據(jù)選擇端口 Se分別相連。相應(yīng)地, 一種實(shí)現(xiàn)并行數(shù)據(jù)排序的方法,包括如下步驟步驟l、將n個(gè) 寄存器中每相鄰兩個(gè)單元編為一組,從編號(hào)為0的單元開始。即編號(hào)為0、 1 的兩個(gè)單元為一組;編號(hào)為2、 3的單元為第二組,依次類推直到編號(hào)為n-l 的單元;步驟2、對(duì)同一組內(nèi)的兩個(gè)單元中的數(shù)據(jù)進(jìn)行比較,并將數(shù)值比較小 的數(shù)據(jù)存儲(chǔ)于編號(hào)較小的單元內(nèi),而值比較大的數(shù)據(jù)存儲(chǔ)于編號(hào)較大的單元 內(nèi)。步驟3、將編號(hào)為0的單元單獨(dú)編為一組,從編號(hào)為1的單元開始將寄存器A中每相鄰兩個(gè)單元編為一組;即編號(hào)為l、 2的兩個(gè)單元為一組;編號(hào)為3、 4的單元為第二組,依次類推直到編號(hào)為n-l的單元;步驟4、對(duì)同一組內(nèi)的兩個(gè)單元中的數(shù)據(jù)進(jìn)行比較,并將數(shù)值比較小的數(shù)據(jù)存儲(chǔ)于編號(hào)較小的單元內(nèi),數(shù)值比較大的數(shù)據(jù)存儲(chǔ)于編號(hào)較大的單元內(nèi);步驟5、重復(fù)以上操作n次。 采用本發(fā)明的上述電路及方法,極大的縮短了硬件排序所需周期數(shù),可以 實(shí)現(xiàn)在n個(gè)時(shí)鐘周期內(nèi)完成對(duì)n個(gè)數(shù)據(jù)的排序。該電路采用多個(gè)比較器并行工 作,極大的簡(jiǎn)化了比較器前端的數(shù)據(jù)選擇電路,提高了電路可以運(yùn)行的最高速 率。本電路在0.35um工藝下實(shí)現(xiàn),運(yùn)行速率可以達(dá)到300MHz以上。


圖1為本發(fā)明的數(shù)據(jù)并行排序的硬件電路結(jié)構(gòu)圖; 圖2為圖1中使用的寄存器單元及其等效電路; 圖3為圖1中使用的比較器單元及其等效電路;圖4為本發(fā)明的一個(gè)具體實(shí)例,描述了對(duì)7個(gè)數(shù)據(jù)進(jìn)行排序的硬件電路結(jié) 構(gòu)圖。
具體實(shí)施方式
下面根據(jù)圖1至圖4,給出本發(fā)明的較佳實(shí)施例,并予以詳細(xì)描述,使能 更好地理解本發(fā)明的功能、特點(diǎn)。本發(fā)明在"冒泡法"的基礎(chǔ)上將這樣過(guò)程并行化。假設(shè)有n個(gè)數(shù)據(jù)需要比 較,則第一輪比較需要n個(gè)時(shí)鐘周期,第二輪需要n-l個(gè)時(shí)鐘周期……如果將 第二輪比較開始的時(shí)間晚于第一輪一個(gè)時(shí)鐘周期,而第三輪有比第二輪再晚一 個(gè)時(shí)鐘周期,這樣就會(huì)發(fā)現(xiàn)所有輪的執(zhí)行完成時(shí)間都是一致的,即第一輪開始 比較后的n個(gè)時(shí)鐘周期。因此可以得出并行化后,對(duì)n個(gè)數(shù)據(jù)進(jìn)行排序所需時(shí) 間為n個(gè)時(shí)鐘周期。為了更好的解釋本發(fā)明,下面對(duì)本發(fā)明所用的一些單元進(jìn)行說(shuō)明。圖2a為本發(fā)明所用的寄存器單元。每個(gè)單元有兩個(gè)數(shù)據(jù)輸入端口 i0和il、 一個(gè)數(shù)據(jù)選擇端口 Sd以及一個(gè)數(shù)據(jù)輸出端口 。當(dāng)Sd為0時(shí)寄存器選擇鎖存 il端口的數(shù)據(jù),而當(dāng)Sd為1時(shí)寄存器選擇鎖存i0端口的數(shù)據(jù)。其等效電路如 圖lb所示。圖3a為本發(fā)明所用的比較器單元。每個(gè)單元有三個(gè)數(shù)據(jù)輸入端口 10、 II 和12, 一個(gè)數(shù)據(jù)選擇端口 Se以及兩個(gè)數(shù)據(jù)輸出端口 L、 S。當(dāng)Se為0時(shí),該 比較器比較數(shù)據(jù)輸入端口 10和II的數(shù)據(jù)并將其中的大值輸出到L端口上;而 小值輸出到S端口;當(dāng)Se為1時(shí),該比較器比較數(shù)據(jù)輸入端口 II和12的數(shù) 據(jù)并將其中的大值輸出到L端口上,而小值輸出到S端口。其等效電路如圖 3b所示。本發(fā)明所述電路用于實(shí)現(xiàn)n個(gè)數(shù)據(jù)的排序。該電路包括 一 組寄存器 A、 一組比較器B和一個(gè)周期計(jì)數(shù)器C。初始數(shù)據(jù)存儲(chǔ)于寄存器組A中,該電 路工作過(guò)n個(gè)時(shí)鐘周期后,會(huì)完成對(duì)原始數(shù)據(jù)進(jìn)行排序并將排序好的數(shù)據(jù)存儲(chǔ) 在寄存器組A中。所述比較器B的每個(gè)單元的三個(gè)數(shù)據(jù)輸入端口IO、 II、 12,通常分別與三 個(gè)相鄰的寄存器A單元的數(shù)據(jù)輸出口相連。設(shè)該比較器的單元編號(hào)為k,則與 之相連的三個(gè)寄存器單元編號(hào)分別為2k、 2k+l和2k+2。不過(guò)有一種情況例外, 那就是當(dāng)寄存器單元個(gè)數(shù)為偶數(shù)時(shí),最后一個(gè)比較器單元的只與兩個(gè)寄存器單 元相連,其IO端口與倒數(shù)第二個(gè)寄存器單元的數(shù)據(jù)輸出口相接,H、I2端口 都與最后一個(gè)寄存器單元的數(shù)據(jù)輸出口相接。所述比較器B的數(shù)據(jù)選擇端口 Se與周期計(jì)數(shù)器C的最低位相連;而數(shù)據(jù)輸出端口 S與和該比較器相連的編 號(hào)最小的寄存器A單元的端口 il和編號(hào)次小單元的端口 i0相連,而端口 L與 和該比較器B相連的編號(hào)次小的寄存器A單元的端口 il和編號(hào)最大單元的端 口 i0相連。對(duì)于編號(hào)為0的寄存器A單元其數(shù)據(jù)輸入端口 i0與il都與編號(hào)為 O的比較器B單元的S端相連。如果寄存器A單元個(gè)數(shù)為偶數(shù),則最后一個(gè) 比較器B單元的輸出端口 L僅與編號(hào)次小的寄存器A的端口 il相連;如果寄 存器A單元個(gè)數(shù)為奇數(shù),則最后一個(gè)寄存器A單元的數(shù)據(jù)輸入端口 i0與il 都與編號(hào)最大的比較器B單元的L端相連。如圖l所示。所述周期計(jì)數(shù)器C的最低位與所有寄存器A單元和比較器B單元的Se 端相連。如圖1所示。該計(jì)數(shù)器初始值為O,每個(gè)時(shí)鐘周期自動(dòng)加l。利用上述電路實(shí)現(xiàn)并行數(shù)據(jù)排序的方法,包括以下步驟-步驟l、將寄存器(A)中每相鄰兩個(gè)單元編為一組,從編號(hào)為O的單元 開始。即編號(hào)為O、 l的兩個(gè)單元為一組;編號(hào)為2、 3的單元為第二組,依次 類推直到編號(hào)為n-l的單元。步驟2、對(duì)同一組內(nèi)的兩個(gè)單元中的數(shù)據(jù)進(jìn)行比較,并將值比較小的數(shù)據(jù) 存儲(chǔ)于編號(hào)較小的單元內(nèi),而值比較大的數(shù)據(jù)存儲(chǔ)于編號(hào)大的單元內(nèi)。步驟3、將編號(hào)為0的單元單獨(dú)編為一組,從編號(hào)為1的單元開始將寄存 器(A)中每相鄰兩個(gè)單元編為一組。即編號(hào)為1、 2的兩個(gè)單元為一組;編 號(hào)為3、 4的單元為第二組,依次類推直到編號(hào)為n-l的單元。步驟4、對(duì)同一組內(nèi)的兩個(gè)單元中的數(shù)據(jù)進(jìn)行比較,并將值比較小的數(shù)據(jù) 存儲(chǔ)于編號(hào)較小的單元內(nèi),而值比較大的數(shù)據(jù)存儲(chǔ)于編號(hào)大的單元內(nèi)。步驟5、重復(fù)以上操作直到所述周期計(jì)數(shù)器(C)的值變?yōu)閚-l,則結(jié)束所 有操作,此時(shí)存儲(chǔ)于寄存器(A)中各個(gè)單元的數(shù)據(jù)就是排序后的數(shù)據(jù),其中 較小的值存放在編號(hào)較小的單元中。所述步驟1中如果n為偶數(shù)則可以分成n/2組;如果為奇數(shù)則可分成(n+l)/2組,其中最 后一組只有一個(gè)編號(hào)為(n-l)的單元。 所述步驟2和4中利用硬件并行化的特性,所述各組的比較操作可以同時(shí)進(jìn)行。如果該組內(nèi) 只有一個(gè)單元,則該單元中的數(shù)據(jù)保持不變。 所述步驟3中如果n為偶數(shù)則可以分成(n/2+l)組,其中編號(hào)為0和n-l的單元分別各自 獨(dú)自編組,其余單元都是兩個(gè)編為一組;如果n為奇數(shù)則可分成(n+l)/2組, 其中編號(hào)為O的單元獨(dú)自編組,其余單元都是兩個(gè)編為一組。下面以7個(gè)數(shù)據(jù)的排序?yàn)槔?,詳?xì)講解本發(fā)明所述電路。此電路詳細(xì)結(jié)構(gòu)如圖4所示。7個(gè)原始數(shù)據(jù)分別存儲(chǔ)于寄存器單元D0、 Dl……D6中。首先第一拍該電路比較D0與Dl中的數(shù)據(jù),并將其中的較小 值輸出給DO去鎖存,而較大值輸出給D1去鎖存。與此同時(shí)該電路還會(huì)比較 D2與D3中的數(shù)據(jù)并將較小值輸出給D2去鎖存,而較大值輸出給D3去鎖存; 還有D4與D5中的數(shù)據(jù)也會(huì)進(jìn)行比較并將較小值輸出給D4去鎖存,而較大 值輸出給D5去鎖存。這里對(duì)應(yīng)的電路實(shí)現(xiàn)為D0的輸出接C0的i0端,Dl的輸出接CO的il 端。CO的輸出端S接DO的數(shù)據(jù)輸入端il,而C0的輸出端L接D1的數(shù)據(jù)輸 入端il。周期計(jì)數(shù)器的最低位接DO與CO的sd端。由于周期計(jì)數(shù)器在初始時(shí)為0,所以其最低位為"0"。這樣通過(guò)CO的sd端控制比較器比較i0和il上 的數(shù)據(jù),而i0和il與DO和Dl的數(shù)據(jù)輸出端相連,這樣就實(shí)現(xiàn)了 DO與Dl 中的數(shù)據(jù)比較。比較器CO的數(shù)據(jù)輸出端S與DO的il端相連,此時(shí)該端口輸 出的數(shù)是這兩個(gè)數(shù)中的較小的數(shù),而由于DO的Sd端為"0",所以DO選擇 鎖存的數(shù)據(jù)正好是該寄存器il端口上的數(shù)據(jù),即將比較的較小的結(jié)果鎖存進(jìn) D0寄存器。比較器CO的數(shù)據(jù)輸出端L與Dl的il端相連,此時(shí)該端口輸出 的數(shù)是這兩個(gè)數(shù)中的較大的數(shù),而由于Dl的Sd端為"0",所以Dl選擇鎖 存的數(shù)據(jù)正好是該寄存器il端口上的數(shù)據(jù),即將比較的較大的結(jié)果鎖存進(jìn)Dl 寄存器。同理我們可以得到D2、 D3與CI的連接方式,以及D4、 D5與C2 的連接方式,如圖四所示。然后在第二拍該電路比較Dl與D2中的數(shù)據(jù),并將其中的較小值輸出給 Dl去鎖存,而較大值輸出給D2去鎖存。與此同時(shí)該電路還會(huì)比較D3與D4 中的數(shù)據(jù)并將較小值輸出給D3去鎖存,而較大值輸出給D4去鎖存;還有D5 與D6中的數(shù)據(jù)也會(huì)進(jìn)行比較并將較小值輸出給D5去鎖存,而較大值輸出給 D6去鎖存。這里對(duì)應(yīng)的電路實(shí)現(xiàn)為Dl的輸出接CO的il端,D2的輸出接C0的i2 端。C0的輸出端S接D1的數(shù)據(jù)輸入端iO,而C0的輸出端L接D2的數(shù)據(jù)輸 入端i0。周期計(jì)數(shù)器的最低位接Dl與CO的sd端。由于周期計(jì)數(shù)器此時(shí)時(shí)為 1,所以其最低位為"1"。這樣通過(guò)CO的sel端控制比較器比較il和i2上的 數(shù)據(jù),而il和i2與Dl和D2的數(shù)據(jù)輸出端相連,、這樣就實(shí)現(xiàn)了 Dl與D2中 的數(shù)據(jù)比較。比較器C0的數(shù)據(jù)輸出端S與D1的iO端相連,此時(shí)該端口輸出 的數(shù)是這兩個(gè)數(shù)中的較小的數(shù),而由于Dl的Sd端為"1",所以Dl選擇鎖 存的數(shù)據(jù)正好是該寄存器iO端口上的數(shù)據(jù),即將比較的較小的結(jié)果鎖存進(jìn)D1 寄存器。比較器C0的數(shù)據(jù)輸出端L與D2的i0端相連,此時(shí)該端口輸出的數(shù) 是這兩個(gè)數(shù)中的較大的數(shù),而由于D2的Sd端為"1",所以D2選擇鎖存的 數(shù)據(jù)正好是該寄存器i0端口上的數(shù)據(jù),即將比較的較大的結(jié)果鎖存進(jìn)D2寄存 器。同理我們可以得到D3、 D4與Cl的連接方式,以及D5、 D6與C2的連 接方式,如圖4所示。然后第三拍和第五拍重復(fù)第一拍的操作;而第四拍和第六拍重復(fù)第二拍的 操作。在第六拍結(jié)束后就完成了這7個(gè)數(shù)據(jù)的比較,并且最小數(shù)存儲(chǔ)在DO單9元中,次小數(shù)存儲(chǔ)在D1單元中,依此類推直到最大數(shù)存儲(chǔ)在D6單元中。利用圖4所示電路實(shí)現(xiàn)排序的方法,包括以下步驟步驟1、將寄存器組中每相鄰兩個(gè)單元編為一組,從D0開始。DO與Dl 為一組;D2與D3為一組;D4與D5為一組;D6單獨(dú)一組。步驟2、對(duì)同一組內(nèi)的兩個(gè)單元中的數(shù)據(jù)進(jìn)行比較,并將值比較小的數(shù)據(jù) 存儲(chǔ)于編號(hào)較小的單元內(nèi),而值比較大的數(shù)據(jù)存儲(chǔ)于編號(hào)大的單元內(nèi)。由于 D6單獨(dú)一組,所以D6的數(shù)據(jù)保持不變。步驟3、將D0單獨(dú)編為一組,從Dl開始將寄存器組中每相鄰兩個(gè)單元 編為一組。即D0單獨(dú)一組;Dl與D2為一組;D3與D4為一組;D5與D6 為一組。步驟4、對(duì)同一組內(nèi)的兩個(gè)單元中的數(shù)據(jù)進(jìn)行比較,并將值比較小的數(shù)據(jù) 存儲(chǔ)于編號(hào)較小的單元內(nèi),而值比較大的數(shù)據(jù)存儲(chǔ)于編號(hào)大的單元內(nèi)。由于 D0單獨(dú)一組,所以DO的數(shù)據(jù)保持不變。步驟5、重復(fù)以上操作直到所述周期計(jì)數(shù)器的值變?yōu)?,則結(jié)束所有操作, 此時(shí)存儲(chǔ)于寄存器組中各個(gè)單元的數(shù)據(jù)就是排序后的數(shù)據(jù),其中最小數(shù)存儲(chǔ)在 D0單元中,次小數(shù)存儲(chǔ)在Dl單元中,依此類推直到最大數(shù)存儲(chǔ)在D6單元中。綜上所述,利用本發(fā)明所述一種實(shí)現(xiàn)并行數(shù)據(jù)排序的電路和算法,可產(chǎn)生 下述有益效果相比普通硬件排序電路縮短了排序所需時(shí)間。對(duì)n個(gè)數(shù)據(jù)排序只需n-l個(gè) 時(shí)鐘周期。簡(jiǎn)化了比較器前的數(shù)據(jù)選擇電路,提高了電路最大可運(yùn)行頻率。本發(fā)明所 述電路采用0.35um工藝實(shí)現(xiàn),最高運(yùn)行頻率可達(dá)300MHz。以上所述的,僅為本發(fā)明的較佳實(shí)施例,并非用以限定本發(fā)明的范圍。例 如,本發(fā)明還可以用于在眾多數(shù)據(jù)中實(shí)現(xiàn)挑選出最大值和最小值。即凡是依據(jù) 本發(fā)明申請(qǐng)的權(quán)利要求書及說(shuō)明書內(nèi)容所作的簡(jiǎn)單、等效變化與修飾,皆落入 本發(fā)明專利的權(quán)利要求保護(hù)范圍。
權(quán)利要求
1. 一種實(shí)現(xiàn)并行數(shù)據(jù)排序的硬件電路,其特征在于,包括多個(gè)寄存器,每個(gè)寄存器具有兩個(gè)數(shù)據(jù)輸入端口i0、i1,一個(gè)數(shù)據(jù)選擇端口Sel以及一個(gè)數(shù)據(jù)輸出端口;當(dāng)數(shù)據(jù)選擇端口Sel為0時(shí)寄存器選擇鎖存端口il的數(shù)據(jù),而當(dāng)數(shù)據(jù)選擇端口Sel為1時(shí)寄存器選擇鎖存端口i0的數(shù)據(jù);多個(gè)比較器,每個(gè)比較器有三個(gè)數(shù)據(jù)輸入端口I0、I1、I2,一個(gè)數(shù)據(jù)選擇端口Se以及兩個(gè)數(shù)據(jù)輸出端口L、S;當(dāng)數(shù)據(jù)選擇端口Se為0時(shí),該比較器比較數(shù)據(jù)輸入端口i0和i1的數(shù)據(jù)并將其中的大值輸出到端口L上,而小值輸出到端口S;當(dāng)數(shù)據(jù)選擇端口Se為1時(shí),該比較器比較數(shù)據(jù)輸入端口i1和i2的數(shù)據(jù)并將其中的大值輸出到端口L,而小值輸出到端口S;以及周期計(jì)數(shù)器,與所有寄存器的數(shù)據(jù)選擇端口Sel以及所有比較器的數(shù)據(jù)選擇端口Se分別相連。
2、 如權(quán)利要求l所述的實(shí)現(xiàn)并行數(shù)據(jù)排序的硬件電路,其特征在于-編號(hào)為k的比較器的三個(gè)數(shù)據(jù)輸入端口 10、 II、 12通常分別與編號(hào)分別為2k、 2k+l和2k+2的三個(gè)寄存器相連,僅當(dāng)寄存器個(gè)數(shù)為偶數(shù)時(shí),最后一個(gè)比 較器只與兩個(gè)寄存器相連,其10端口與倒數(shù)第二個(gè)寄存器的數(shù)據(jù)輸出口相接, II、 12端口都與最后一個(gè)寄存器的數(shù)據(jù)輸出口相接;所述比較器數(shù)據(jù)輸出端口 S與和該比較器相連的編號(hào)最小的寄存器的端口 il和編號(hào)次小的寄存器的端 口 i0相連,而端口 L與和該比較器相連的編號(hào)次小的寄存器的端口 il和編號(hào) 最大的寄存器的端口 iO相連;對(duì)于編號(hào)為O的寄存器,其數(shù)據(jù)輸入端口 i0、 il 都與編號(hào)為0的比較器單元的S端相連;如果寄存器單元個(gè)數(shù)為偶數(shù),則最后一個(gè)比較器單元的輸出端口 L僅與 編號(hào)次小的寄存器的端口 il相連;如果寄存器單元個(gè)數(shù)為奇數(shù),則最后一個(gè) 寄存器單元的數(shù)據(jù)輸入端口 i0與il都與編號(hào)最大的比較器單元的L端相連。
3、 一種實(shí)現(xiàn)并行數(shù)據(jù)排序的方法,包括如下步驟步驟l、將n個(gè)寄存器中每相鄰兩個(gè)單元編為一組,從編號(hào)為O的單元開 始,即編號(hào)為0、 1的兩個(gè)單元為一組;編號(hào)為2、 3的單元為第二組,依次類 推直到編號(hào)為n-l的單元;步驟2、對(duì)同一組內(nèi)的兩個(gè)單元中的數(shù)據(jù)進(jìn)行比較,并將數(shù)值比較小的數(shù)據(jù)存儲(chǔ)于編號(hào)較小的單元內(nèi),而值比較大的數(shù)據(jù)存儲(chǔ)于編號(hào)較大的單元內(nèi)。步驟3、將編號(hào)為O的單元單獨(dú)編為一組,從編號(hào)為1的單元開始將寄存 器中每相鄰兩個(gè)單元編為一組;即編號(hào)為l、 2的兩個(gè)單元為一組;編號(hào)為3、 4的單元為第二組,依次類推直到編號(hào)為n-l的單元;步驟4、對(duì)同一組內(nèi)的兩個(gè)單元中的數(shù)據(jù)進(jìn)行比較,并將數(shù)值比較小的數(shù) 據(jù)存儲(chǔ)于編號(hào)較小的單元內(nèi),數(shù)值比較大的數(shù)據(jù)存儲(chǔ)于編號(hào)較大的單元內(nèi);步驟5、重復(fù)以上操作n次。
4、 如權(quán)利要求3所述實(shí)現(xiàn)并行數(shù)據(jù)排序的方法,其特征在于 所述步驟1中如果n為偶數(shù)則可以分成n/2組;如果為奇數(shù)則可分成(n+l)/2組,其中最后一組只有一個(gè)編號(hào)為(n-l)的單元。
5、 如權(quán)利要求3所述實(shí)現(xiàn)并行數(shù)據(jù)排序的方法,其特征在于 所述步驟2和4中利用硬件并行化的特性,所述各組的比較操作同時(shí)進(jìn)行;如果該組內(nèi)只有一個(gè)單元,則該單元中的數(shù)據(jù)保持不變。
6、 如權(quán)利要求3所述實(shí)現(xiàn)并行數(shù)據(jù)排序的方法,其特征在于 所述步驟3中如果n為偶數(shù)則可以分成(n/2+l)組,其中編號(hào)為0和n-l的單元分別各自獨(dú)自編組,其余單元都是兩個(gè)編為一組;如果n為奇數(shù)則可分 成(n+l)/2組,其中編號(hào)為O的單元獨(dú)自編組,其余單元都是兩個(gè)編為一組。
全文摘要
本發(fā)明公開了一種實(shí)現(xiàn)并行數(shù)據(jù)排序的硬件電路及方法。將n個(gè)寄存器中每相鄰兩個(gè)單元編為一組,從編號(hào)為0的單元開始;對(duì)同一組內(nèi)的兩個(gè)單元中的數(shù)據(jù)進(jìn)行比較,并將數(shù)值比較小的數(shù)據(jù)存儲(chǔ)于編號(hào)較小的單元內(nèi),而值比較大的數(shù)據(jù)存儲(chǔ)于編號(hào)較大的單元內(nèi);將編號(hào)為0的單元單獨(dú)編為一組,從編號(hào)為1的單元開始將寄存器A中每相鄰兩個(gè)單元編為一組;對(duì)同一組內(nèi)的兩個(gè)單元中的數(shù)據(jù)進(jìn)行比較,并將數(shù)值比較小的數(shù)據(jù)存儲(chǔ)于編號(hào)較小的單元內(nèi),數(shù)值比較大的數(shù)據(jù)存儲(chǔ)于編號(hào)較大的單元內(nèi);重復(fù)以上操作n次。采用本發(fā)明的上述電路及方法,極大的縮短了硬件排序所需周期數(shù),可以實(shí)現(xiàn)在n個(gè)時(shí)鐘周期內(nèi)完成對(duì)n個(gè)數(shù)據(jù)的排序。
文檔編號(hào)G06F7/76GK101261576SQ20081003566
公開日2008年9月10日 申請(qǐng)日期2008年4月3日 優(yōu)先權(quán)日2008年4月3日
發(fā)明者余維學(xué), 煒 姚, 王傳芳, 程劍濤 申請(qǐng)人:啟攀微電子(上海)有限公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1