TWI604379B - 用於k最近相鄰者搜尋之系統、設備及方法 - Google Patents
用於k最近相鄰者搜尋之系統、設備及方法 Download PDFInfo
- Publication number
- TWI604379B TWI604379B TW104138748A TW104138748A TWI604379B TW I604379 B TWI604379 B TW I604379B TW 104138748 A TW104138748 A TW 104138748A TW 104138748 A TW104138748 A TW 104138748A TW I604379 B TWI604379 B TW I604379B
- Authority
- TW
- Taiwan
- Prior art keywords
- vector
- distance
- bit
- global
- circuit
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Computational Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Databases & Information Systems (AREA)
- Algebra (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Computer Hardware Design (AREA)
- Complex Calculations (AREA)
Description
本發明的領域一般係涉及電腦處理器結構,並且,更具體地說,涉及最近相鄰者搜尋。
在許多的應用中,希望可對一資料集之多維特徵(點)進行一種快速和有效最近相鄰者搜尋。舉例來說,這種類型的搜尋有利於諸如影像重建和機器學習的領域。最近相鄰者資料集搜尋有幾種方法。在最近相鄰者搜尋中,給定在一空間中的一組點和一輸入實例(查詢點),一種搜尋被執行以在一集合中找到最接近該輸入實例的一點。
依據本發明之一實施例,係特地提出一種設備,其包含有:至少一個向量部分距離計算電路以計算在一搜尋空間中一組向量的一部分總和和一累積距離;一最小排序網路以排序來自該等累積距離之一選擇的位元集合,指出來自該搜尋空間中該等向量之該等選擇位元集合的一最小值和是否該最小值係獨一無二的;以及一全域控制電路以接收該最小排序網路的一輸出,並控制該至少一個向量
部分距離計算電路之操作的各個方面。
101‧‧‧查詢物件向量
103_0~103_N‧‧‧向量0~N部分距離計算
105‧‧‧全域控制
107‧‧‧最小排序網路
109‧‧‧0級比較節點
111‧‧‧「k」級比較節點
203‧‧‧向量部分距離計算
205‧‧‧資料元件計算器電路
207‧‧‧局部控制電路
209‧‧‧移位器
211‧‧‧壓縮器樹
213‧‧‧正反器
215‧‧‧加法器
219‧‧‧選擇器
301‧‧‧查詢物件
303‧‧‧儲存的物件鎖存
305‧‧‧|a-b|
307‧‧‧來自控制的選擇
309‧‧‧選擇器
311‧‧‧乘法器
313‧‧‧加法器
401‧‧‧查詢物件
403‧‧‧儲存的物件鎖存
405‧‧‧|a-b|
407‧‧‧來自控制的選擇
409‧‧‧選擇器
501‧‧‧全域指標
503‧‧‧向量位址
505‧‧‧最小位址
509‧‧‧最小精確度
511‧‧‧AND閘
513‧‧‧AND閘
515‧‧‧移除
517‧‧‧局部計算控制
901‧‧‧OR閘
903‧‧‧12b全域遮罩
905‧‧‧優先級編碼器
907‧‧‧OR樹
911‧‧‧選擇器
913‧‧‧12x12b查詢表
1001‧‧‧OR閘
1003‧‧‧XOR閘
1005‧‧‧OR閘
1007‧‧‧|a-b|>ε
1009‧‧‧AND閘
1501~1527‧‧‧方塊
1600‧‧‧管線
1602‧‧‧提取
1604‧‧‧長度解碼
1606‧‧‧解碼
16016‧‧‧分配
1610‧‧‧重新命名
1612‧‧‧排程
1614‧‧‧暫存器讀取/記憶體讀取
1616‧‧‧執行階段
16116‧‧‧寫回/記憶體寫入
1622‧‧‧例外處理
1624‧‧‧提交
1630‧‧‧前端單元
1632‧‧‧分支預測單元
1634‧‧‧指令快取單元
1636‧‧‧指令TLB單元
16316‧‧‧指令提取
1640‧‧‧解碼單元
1650‧‧‧執行引擎單元
1652‧‧‧重新命名/分配器單元
1654‧‧‧引退單元
1656‧‧‧排程器單元
16516‧‧‧實體暫存器集單元
1660‧‧‧執行集群
1662‧‧‧執行單元
1664‧‧‧記憶體存取單元
1670‧‧‧記憶體單元
1672‧‧‧資料TLB單元
1674‧‧‧資料快取單元
1676‧‧‧L2快取單元
1690‧‧‧核心
1700‧‧‧指令編碼
1702‧‧‧環形網路
1704‧‧‧該L2快取的局部子集
1706‧‧‧L1快取
1708‧‧‧純量單元
1710‧‧‧向量單元
1712‧‧‧純量暫存器
1714‧‧‧向量暫存器
1706A‧‧‧L1資料快取
1720‧‧‧拌和單元
1720A、1722B‧‧‧數字轉換
1724‧‧‧複製
1726‧‧‧寫入遮罩暫存器
1728‧‧‧16寬的向量ALU
1800‧‧‧處理器
1802A~N‧‧‧核心
1804A~N‧‧‧快取單元
1806‧‧‧共用的快取單元
1808‧‧‧專用邏輯
1810‧‧‧系統代理單元
1812‧‧‧環形
1814‧‧‧整合式的記憶體控制器單元
1816‧‧‧匯流排控制器單元
1900‧‧‧系統
1910‧‧‧處理器
1915‧‧‧處理器
1920‧‧‧控制器集線器
1940‧‧‧記憶體
1945‧‧‧協同處理器
1950‧‧‧IOH
1960‧‧‧I/O
1990‧‧‧GMCH
1995‧‧‧連接
2000‧‧‧系統
2014‧‧‧I/O裝置
2015‧‧‧處理器
2016‧‧‧第一匯流排
2018‧‧‧匯流排橋接器
2020‧‧‧第二匯流排
2022‧‧‧鍵盤和/或滑鼠
2024‧‧‧音訊I/O
2027‧‧‧通信裝置
2028‧‧‧資料儲存
2030‧‧‧程式碼和資料
2032、2034‧‧‧記憶體
2038‧‧‧協同處理器
2039‧‧‧高效能介面
2050、2052‧‧‧點對點互連
2072、2082‧‧‧IMC
2076、2078、2086、2088、2094、2098‧‧‧P-P
2070‧‧‧處理器
2072、2082‧‧‧CL
2080‧‧‧處理器/協同處理器
2090‧‧‧晶片組
2092、2096‧‧‧I/F
2100‧‧‧系統
2114‧‧‧I/O裝置
2115‧‧‧傳統I/O
2200‧‧‧系統單晶片
2202‧‧‧互連單元
2210‧‧‧應用程式處理器
2220‧‧‧協同處理器
2230‧‧‧SRAM單元
2232‧‧‧DMA單元
2240‧‧‧顯示器單元
2302‧‧‧高階語言
2304‧‧‧x86編譯器
2306‧‧‧x86二進位碼
2308‧‧‧替代的指令集編譯器
2310‧‧‧替代的指令集二進位碼
2312‧‧‧指令轉換器
2314‧‧‧不具有一x86指令集核心的處理器
2316‧‧‧具有至少一個x86指令集核心的處理器
在該等附圖的該等圖示中,本發明係透過舉例的方式被圖示出,而不是透過限制性的方式被圖示出,其中類似的標號表示類似的元件並且其中:圖1根據一實施例展示出一高階kNN加速器組織。
圖2根據一實施例圖示出一示例性向量部分距離計算電路。
圖3根據一實施例圖示出一平方差資料元件計算電路的一示例性向量部分距離總和。
圖4根據一實施例圖示出一絕對差資料元件計算電路的一示例性向量部分距離總和。
圖5根據一實施例圖示出一示例性局部控制電路。
圖6根據一實施例圖示出一示例性曼哈坦距離排序處理。
圖7根據一實施例圖示出一示例性資料元件歐幾里得距離排序處理。
圖8根據一實施例圖示出使用部分距離之一示例性排序處理。
圖9根據一實施例圖示出一示例性全域控制電路。
圖10根據一實施例圖示出一示例性0級比較節點
電路。
圖11根據一實施例圖示出一示例性k級比較節點電路。
圖12根據一實施例圖示出一示例性8位元/16位元可重新配置計算電路。
圖13根據一實施例圖示出一示例性部分距離計算用於16位元元件的平方和。
圖14根據一實施例圖示出一餘弦相似度計算(1d距離)電路和根據一實施例圖示出用於內積之示例性部分距離計算。
圖15A-B根據一實施例圖示出一kNN搜尋的一種示例性方法。
圖16A根據本發明的實施例係一方塊圖,其圖示出一示例性依序管線和一示例性暫存器重新命名、亂序分發/執行管線兩者。
圖16B根據本發明的實施例係一方塊圖,其圖示出一依序結構核心的依示例性實施例以及將被包括在一處理器中之一示例性暫存器重命名、亂序分發/執行結構核心兩者。
圖17A-B圖示出一更具體之示例性依序核心結構方塊圖,該核心將會是在一晶片中數個邏輯方塊(包括相同類型和/或不同類型的其他核心)中之一。
圖18根據本發明的實施例係一處理器1800的方塊圖,其可能有一個以上的核心,可能具有一整合式的記
憶體控制器,以及可能有一整合式的圖形。
圖19-22係示例性電腦結構的方塊圖。
圖23根據本發明的實施例係一方塊圖,對比一軟體指令轉換器的使用以把在一來源指令集中的二進位指令轉換成在一目標指令集中的二進位指令。
在下面的描述中,許多具體的細節將進行闡述。然而,可被理解的是本發明的實施例可以在沒有這些具體細節的情況下被實踐。在其他的實例中,公知的電路、結構和技術並沒有被詳細示出以免模糊了對本說明書的理解。
在本說明書中對「一實施例」、「一個實施例」、「一示例實施例」等的引用表明該描述的實施例可以包括一種特定的特徵、結構、或特性,但是每一個實施例不一定包括該特定的特徵、結構、或特性。此外,這樣的短語不一定指的是同一個實施例。再者,當一特定的特徵、結構、或特性結合一實施例被描述時,被認知的是在本領域習知技藝者的知識範圍內這種特徵、結構、或特性可以結合其他的實施例,不管有沒有明確的被描述。
最近相鄰者搜尋的一種方法是計算從該輸入實例到一資料集合中每一點的距離,和追踪該最短距離。然而,這種簡單的方法可能不可行於較大的資料集合。該距離計算可使用一k維(k-d)樹一次一個特徵地執行所有特徵
的一種詳盡檢查來完成。因此這種方法很慢並另外有高功耗。
另外一種最近相鄰者方法使用Voronoi圖。每一個Voronoi圖把一平面分割成相等最近相鄰者區域,其稱之為胞格。這可圖示為數個胞格,每一個具有一特徵(點)。從理論上來講,可使用一Voronoi圖來找到在一特定胞格中的該特徵來為任何輸入實例找到一個「最佳匹配的」特徵。然而,如圖所示,Voronoi胞格具高度不規則的形狀,並且難以計算(它們同時要大量的時間和處理器)和使用。換句話說,對最近相鄰者特徵搜尋,Voronoi圖本身不是方便或有效率的方法。
本文詳細陳述了將被使用在改進最近相鄰者搜尋中之系統、設備、和方法的實施例,其克服了上述方法的缺點。總之,給定一輸入(即,一觀察),在一個特徵空間(即,一特徵的字典)中搜尋出該最佳匹配的特徵被達成。對於通常係稀疏地出現在高維度向量空間中的特徵向量(注意在本說明書中特徵是向量,因此,特徵和特徵向量可互換使用)而言,這種方法特別的適合。
以下詳述的是一種k-最近相鄰者(kNN)加速器的實施例,其調整該等距離計算的精確度以最小化查詢出每一個最近相鄰者所需要的該級數。許多候選向量僅使用低精確度計算來從該搜尋空間被移除,而更靠近該最近相鄰者之其餘的候選人在較後面的迭代使用較高精確度來被移除以宣告出一贏家。由於大部分的計算要求較低精確度和
消耗較少的能量,整體的kNN能量效率會被顯著的提高。通常,這個kNN加速器係一中央處理單元(CPU)、圖形處理單元(GPU)、等等的一部分。但是,該kNN加速器可以是外部於該CPU、GPU、等等。
圖1根據一實施例圖示出一高階kNN加速器。在此加速器中,有一些主要的組件包括數個向量局部距離計算電路103_0至103_N、一全域控制電路105、以及一最小排序網路107。這些組件的每一個將在以下被詳細的討論。
一查詢物件向量101被輸入到該等數個向量部分距離計算電路103_0到103_N用於部分距離的計算。沒有被顯示的是用於此一呈現物件向量的儲存。該等部分距離計算電路103_0到103_N計算每一個參考向量的部分距離和一累積的距離,並提供一有效的指示給該最小排序網路107。在一查詢101與儲存向量之間用較低有效位元精確度使用多迭代部分距離計算並在每一次迭代中如本文詳述地做改善,會比過去的方法更為節能。部分距離計算涉及在每次迭代中對不同的距離度量(諸如歐幾里德(平方和)距離和曼哈坦(絕對差之和)距離)計算從該MSB開始之完整距離的較少位元。該部分結果以正確有效性被加入到該累積完成的距離,從而隨著該計算的繼續提高了較低有效位元的精確度。
圖2根據一實施例圖示出一示例性向量部分距離計算電路203。該向量是由許多的維度構成,在本實例中每一個維度由8b來表示。在每一個維度中的個別距離首先是
由205計算然後它們被加總以在211得到該總距離。一局部控制電路207提供一指示指出在該不同的資料元件計算器電路205中要選擇那些位元。
如以上所述,可以使用幾種不同類型的距離度量,因此有不同的資料元件計算器電路205。當使用一種絕對差總和(曼哈坦距離)度量時,從每一個向量元件的該絕對差選擇適當的兩個位元(2b)並把它們加總起來是在向量部分距離計算電路203中完成的。圖3根據一實施例圖示出一平方差(歐幾里得距離)資料元件計算器電路205的一示例性向量部分距離總和。如圖所示,一查詢物件(如圖所示的8位元)的一部分和一儲存物件(相同位元數)的一部分具有由硬體所做的絕對差(|a-b|)計算並且該結果的特定位元係使用多工器和一控制信號來選擇的。在一些實施例中,一局部控制電路提供的該控制信號將會在下面詳述。該多工的該等結果被乘(一對2bx2b乘法)然後被相加。在這實例中,該輸出是一5位元值,它代表當計算該等差的平方時的一部分距離。這些會由壓縮器樹211相加以計算該整個向量的一部分歐幾里得距離。
當使用一種絕對差的總和(曼哈坦距離)度量時,從每一個向量元件的該絕對差選擇適當的兩個位元(2b)並把它們加總起來是在向量部分距離計算電路203中完成的。圖4根據一實施例圖示出一絕對差資料元件計算器電路205的一示例性向量部分距離總和。如圖所示,一查詢物件(如圖所示的8位元)的一部分和一儲存物件(相同位元數)的
一部分具有由硬體所做的絕對差(|a-b|)計算並且該結果的特定位元係使用多工器和一控制信號來選擇的。在一些實施例中,一局部控制電路提供的該控制信號將會在下面詳述。在這實例中,該輸出是一2位元值。
該部分SAD計算把壓縮器樹大小降低了四倍,而該部分歐幾里德度量計算把每一個向量元件8位元乘8位元的乘法器替換成一對平凡的2位元乘法器,也因此把該壓縮器樹211的面積降低了3倍。該歐幾里得距離之此非顯而易見的建構保證了在處理一較高的MSB位元置之後,任何隨後較低的MSB細化不會影響任何較高位元超過1,如以下針對圖3、4、6、和7所討論的。圖7圖示出一完整平方差操作的一實施例(用於計算歐幾里得距離),其被打散成由圖3該示例性電路所計算的部分計算迭代。圖7說明了由執行如該顯示順序所示的計算和排序,在較低階位元上的計算操作不會擾亂經處理過之較高階位元超過1。類似的,圖4圖示出每一個元件該電路的一實施例而圖6圖示出由該用於曼哈坦距離的電路所執行之該對應計算操作的一實例。圖6說明了藉由執行如該顯示順序所示的計算和排序,在較低階位元上的計算操作不會擾亂經處理過之較高階位元超過1。
在一些實施例中,由於一共同的硬體資料路徑,一單一電路被使用來在不同度量之間做重新配置。
一壓縮器樹211把該資料元件距離計算器的每一個的該等輸出相加。在歐幾里得距離的一個256維向量中,這個輸出是一個13位元的值。該壓縮器樹211的該輸出會被
發送到一移位器209。通常,此移位器係一右移移位器,然而,取決於該位元資料順序配置,它可以是一左移移位器。在大多數的實施例中,該移位元量係由局部控制電路207來控制。該移位器把該部分距離對準相對於該累積距離的正確有效性。
正反器213儲存來自前一迭代的該累積距離而該加法器215的該輸出是在目前迭代中的該累積距離。在下一迭代開始時,該值會被寫入正反器213。該選擇器219基於該全域指標選擇來自該累積距離的該2b。它還選擇了來自把該部分和加到該前一累積距離在該2b位置上的該進位輸出。
該局部控制電路207把psumi作為一輸入,並在把它傳遞到該排序網路107之前僅修改該較高位元作為一psum值(例如,3位元)。一有效位元也被傳遞到該最小排序網路107。圖5根據一實施例圖示出一示例性局部控制電路。該局部控制電路控制該向量部分距離計算電路的幾個不同的方面,如以上所述。此電路接收來自一全域控制單元的一全域指標(下面詳細說明),伴隨來自該選擇器219的一psumi,以及來自該最小排序網路107之一最小總和、位址、和精確指示。
如圖所示,該局部控制電路拿該正被處理向量的一位址和來自該最小排序網路107的一最小位址,並使用比較電路來判定它們是否相等。從該比較的輸出和來自該最小排序網路107的該最小精確做邏輯AND,以有助於判定是
否該物件向量不需再被處理。特別的是,該輸出被使用在一有效位元的計算中諸如透過如所示出的該AND閘。該局部控制電路使用該最小總和,psumi,和全域指標以產生一移除信號,以及局部計算信號(用於控制該等不同的資料元件計算器電路205),如圖所示。向量處理可以兩個原因之一來被停止-1)該目前的向量被宣布為一獲勝者或2)該目前的向量從該搜尋空間被移除當它保證不會成為該最近相鄰者時。在上面的描述係針對前者判定該「完成」信號。這個信號的該反向(圖示為經歷一個小圈才進入該AND閘513)會影響該有效信號。如果該「完成」被判定,該有效信號將被反判定。影響有效之該剩下的邏輯判定該向量是否沒有完成但仍是該搜尋空間的一部分。該移除信號表明在該目前的迭代中向量從搜尋空間被移除,並且此資訊由該全域控制所使用。在圖5中所示的該電路還從該全域CLK信號產生時脈以控制儲存元件(包括213)的該時脈。該局部控制電路還從該全域控制電路接收「計算控制」,它然後傳遞給該部分距離計算205和移位器電路209。
從本質上講,該局部控制電路為每一向量的一局部狀態控制提供跨所有向量的全域狀態控制以記錄距離計算狀態和在其它們被移除的迭代使得當計算k>1的一經排序列表時可以再次使用先前的距離計算和比較。
部分距離計算和排序迭代被交錯地如在圖6和7中所示。圖6根據一實施例圖示出一示例性曼哈坦距離計算與排序處理,而圖7根據一實施例圖示出一示例性資料元件
歐幾里得距離計算與排序處理。在這些圖示中該等字母(a、b、c、和d)是在該等查詢和參考向量之8b元件之間該絕對差的2b成分。如圖所示,該典型的程序是由向量部分距離計算電路103_0到103_N進行一計算迭代隨後跟著在該最小排序網路107中的一排序。然而,有些時候在連續排序迭代之間可以沒有計算迭代諸如在圖7中所示。
該最小排序網路107進行基於窗口的排序。特別的是,這種排序網路處理從一部分計算出距離之最高有效位元(MSB)開始的一個小得多的位元窗口,使得進一步的部分計算可用小得多的比較器電路以及可做向量候選者的早先移除。
例如,在一些實施例中,該排序網路在每次迭代中僅處理該從MSB到LSB累積向量距離之一2位元的窗口(圖6和7)。這使得可用非常低的硬體複雜度來有一種高度的平行化。由於在較低位元的該計算精煉可以影響在該MSB中已處理的位元最多為1,該排序網路107還需要處理產生自在目前2b窗口該計算迭代的該進位輸出。因此,該排序網路107比較,舉例來說,在每一個節點109和111之3b的數字(進位輸出與2b之和)。就比較而言,對於一256維向量距離比較(每元件8b),一常規排序網路在每一個節點會需要24b的比較器。
該排序網路107全域地廣播該求出的最小3b結果和局部控制用於各別向量距離計算把它們的3b psum(進位輸出與2b總和)比較該廣播結果,看看該特定的向量是否可
以從更進一步使用該全域105和局部控制電路的距離精化計算和比較中被移除。
由於該較低階的計算可在一將來的迭代中影響目前處理的窗口為1,對於候選者的移除,在該局部控制和排序網路107中所有的3b比較需要一超過1的差。出於同樣的原因,該局部控制還考慮到在一先前的迭代中是否一特定向量比該最小值大於1。使用精確信號,該排序網路107指出該發現的最小值是否是獨一無二的。排序迭代繼續下去,直到一獨一無二的最近向量被找到或達到該LSB為止。來自排序網路的反饋移除候選向量免於進一步距離計算和比較,從而導致高達3倍的計算量減少。
圖8根據一實施例圖示出使用部分距離之一示例性排序處理。由於當找到該最佳候選者時向量候選者會被移除,它們的局部狀態控制儲存了在其它們被移除的該迭代(如在圖5中的1ptr信號和在圖8中的方塊所示)。
同時,當該全域控制指標向前移動(朝向該LSB)時,即使一單一向量被丟棄一個1也會被寫入到一全域二進遮罩之該相關聯的位元位置中(其被儲存在全域控制電路105中)。在該第一向量被發現之後,該全域二進制遮罩對該全域控制邏輯105指出該全域指標需要跳回到何處用於可能包含有下一個最近相鄰者的該組向量。該過程繼續迭代,並被圖示出用於在圖8中第二和第三最近相鄰者搜尋。當一全域指標已往回跳向該MSB,只有其儲存之迭代狀態匹配該全域指標位置的那些向量才會變得活躍。更接近該
最近相鄰者之向量將會在一更接近之全域指標位置處被移除。比起一傳統的排序方法其簡單地移除該最近相鄰者和從頭開始進行整個的計算和排序的過程,維護狀態的這種技術具有三大優勢-(a)它重複使用在求先前排序等級時已經完成的部分距離計算,(b)透過利用已經計算出的比較,減少需要被比較的該向量數目,以及(c)不需要k被預先定義來最小化用於任何排序等級之計算和比較。使用此種控制之計算和比較重複使用的優點量化了從X(例如,256)個向量(例如,每個向量256個8-b元件)中找出下一個最近相鄰者的該增量成本,在3個最近相鄰者已被找到之後。一傳統的排序技術將導致從剩餘的253個候選向量中找出該最近向量,而提出的控制會導致把此搜尋空間減少了19X和把該相關聯計算減少了20X。
在該圖示中,來自該等向量之部分距離的一2位元窗口被處理。指向右邊的該等箭頭係來自局部控制電路的有效位元。在週期0中,該第七比較因為比最小值大超過1而關閉,因此該向量可以被移除。這移除被儲存在該局部控制電路中。此處理程序如以上詳述的方式進行。如果所有的向量都進行所有的部分和計算,該得到的距離將會匹配該完整的距離,其被顯示在最左邊僅作為參考。
圖9根據一實施例圖示出一示例性全域控制電路。如在圖1中所示,該全域控制電路105從該最小排序網路107接收最小精確、位址、和總和值。該最小精確信號和一指出在該LSB位置之一全域指標的信號被邏輯OR並被用
作為用於一全域指標輸出的一選擇信號,其不是前一個全域指標遞增一就是已從一全域二進制遮罩被(優先權)編碼的一個,如圖所示。該全域二進制遮罩係由接收自該局部控制電路207之移除信號的OR樹來製成。計算控制信號的求出係使用一查詢表,使用該全域指標充當該表的一索引。直到一獨一無二的最小值或LSB沒被找到為止,該全域指標每次迭代不斷地朝向LSB移動(為達成這個該指標被遞增1)。這種情況係由該OR閘901來測試。否則,該指標回滾到在該二進制遮罩中該最近的1以尋找下一個最近相鄰者。即使一向量被移除,一個1被寫入到在該二進制遮罩內的該指標位置,否則一個0被寫入。該OR樹907檢測就算只有一向量被移除(該等移除信號係由所有各別局部控制電路所產生),之後的解多工器使用該全域指標來設置該適當位置的輸入為1,且當下一次迭代開始時(CLK的上升邊緣)這會被寫入到該全域二進制遮罩(在儲存903中保有)。該最接近1的該位置是由該優先級編碼器905來計算。該計算控制廣播到所有向量係基於該指標位置。藉由將它們儲存在一查詢表913中,這可以是可編程的,可基於該指標讀出該等適當的控制信號。
更詳細的檢視該最小排序網路107,有兩種類型的比較節點-0級和「k」級節點。圖10根據一實施例圖示出一示例性0級比較節點電路。如圖所示,該電路接受有效位元,該等位元被使用來指出該psum是否是來自是該搜尋空間一部分的一個向量。如果伴隨一psum的該有效位元為0,
則該psum會在一節點的一比較中被忽略。
該等相鄰的有效位元進行邏輯OR以提供一0級有效位元。這些有效位元也進行XOR然後與一信號做OR以產生一精確位元,該信號表示在該等輸入總和之間的該絕對差值大於一臨界值ε。精確位元如果是「1」意味著沒有其他的向量接近。最後,該等相鄰的總和也相互比較,該結果與該等有效位元之一做AND以形成一位址和那一個總和將被輸出的選擇。該0級比較節點的該整體輸出是一位址、有效位元、精確位元、以及一總和。該輸出有效指出是否該結果是有效的(該等輸入有效中的至少一個必須為真以滿足這個條件)。該比較結果被加到該找到之最小向量該位址的該最高階位元(在此情況下位元[0],因為它是該第一比較層級)。該輸出精確信號指出該等兩向量不等價或是接近(如果ε是1,則差大於1;或如果ε是0,則差大於0)。如果該等輸入只有一個是有效該XOR 1003判定該精確信號,不論該比較結果為何(因為如果該等總和中之一是無效的則該比較並不重要)。該比較結果傳到該較小總和連同它的輸入位址到下一個節點。
圖11根據一實施例圖示出一示例性k級比較節點電路。該電路接受來自它前面該級(例如,0級)之位址、有效位元、精確位元和一總和的相鄰輸出,並將它們提供給該所示的電路。該操作類似於圖10中所示的操作。該等總和信號的該比較結果現在也從傳入的精確信號選擇並把該選擇的精確與在這個節點所計算的精確信號做AND以產生
該輸出精確信號。該輸出精確信號指出是否該輸出總和是獨一無二的,即,在從0級開始所有向量之任何最接近向量超過ε界限的最小者。
以上所述之該kNN加速器不同的實施例增加了靈活性和/或該加速器將受益的應用空間。舉例來說,在一些實施例中,為了啟用在向量元件大於8b上的計算,為8b元件所設計的該距離計算電路可以透過組合相鄰8b元件電路的配對來被重複使用於16b元件。圖12根據一實施例圖示出一示例性的8位元/16位元可重新配置計算電路。在該電路中,一控制信號廣播兩組選擇信號用於偶數/奇數編號的8b運算電路。對於一固定的電路和儲存大小,當在16b的模式下操作時該向量維數或儲存的向量數會被減少了一半。在16b的模式下要計算一完整平方和所需要的該迭代次數會從6(用於8b元件)增加至15。在連續排序迭代之間可能需要多個計算迭代,以確保當處理較低階位元時較高階位元不被影響超過1。即使在16b模式下,基於部分計算之加速器排序大大的降低了用於找出最近相鄰者的計算。圖13根據一實施例圖示出一示例性部分距離計算用於16位元元件的平方和。在一些實施例中,只有16b寬度或重新配置被使用。當然,也可以使用其他的位元寬度或重新配置。
在一些實施例中,該kNN加速器可被重新配置來支援較大的向量維度,在該距離計算單元的該壓縮器樹中具有額外階段以加入來自其他距離計算單元方塊的結果。因此,因為每一個向量的維度被增加,該儲存的向量數減
少了。
在一些實施例中,該kNN加速器的功能被延伸成可以在比該加速器儲存容量更大的資料集上操作。來自儲存在該加速器內之一資料庫中經排序k-最近候選者首先被計算,被移除的候選者被來自記憶體之任何剩餘的物件描述符來替換,並且該處理繼續,直到所有的物件候選者都被迭代過以找到該整體k-最近描述符向量。對於一加速器具有256物件容量且每一個物件特徵描述有一256維(每維度8b)向量,橫跨從512至2048個物件之一物件資料庫大小該加速器一致地能夠降低用於一排序的16-最接近候選者名單的平方和計算。
在一些實施例中,除了由最小距離找出向量,該加速器可以被重新配置來以距離下降順序找出向量,藉由反轉在該排序網路的該等比較節點內該3b比較器電路的該輸出。可替代地,該降序排列的計算是通過把該最大可能距離減去該累積部分距離,然後使用該相同之基於窗口的最小排序網路來處理該等所得到的數字。
在一些實施例中,各種距離度量的容納可藉由只重新配置在該網路中的該1D距離電路來達成。除了歐幾里德和曼哈坦的距離之外,對一向量尋找該最接近匹配的另一種流行的度量是餘弦相似度,它採用在向量之間的該角度距離以找到該最接近的匹配。在兩個向量A和B之間該角度的餘弦被計算為[Σ(ai.bi)]/[(Σai 2)1/2.(Σbi 2)1/2],一個較小的角度可產生較大的餘弦。針對基於餘弦的相似度,若該
儲存的資料庫已經被正歸化那麼正歸化就不需要,然後該最佳化會被轉化為找出該點積Σ(ai.bi)具有最大量值的向量。在查詢和儲存物件之間的該點積可以使用於該歐幾里得度量之該等現有2b乘法器來被部分地計算出。
圖14根據一實施例圖示出一餘弦相似度計算(1d距離)電路和根據一實施例圖示出用於點積之示例性部分距離計算。在連續排序迭代之間可能需要多個計算迭代,以確保當處理較低階位元時較高階位元不被影響超過1。對於帶有符號元件的點積,每一個計算迭代需要2個步驟-第一步加總所有的正乘積到該積累的部分距離,然後從該累積的部分距離減去所有負乘積之總和。
在一些實施例中,隨著迭代進行,基於把該累積的部分距離比較一預定的絕對臨界值,候選向量也可被早期的移除。另外,宣告一獲勝向量不需要是精確的,且挑選一贏家的迭代可基於一預定的相對精確度(使用全域指標位置)或絕對積累部分距離來被更早期地停止。這樣子的方案可以減少用於最佳化來進行近似最近相鄰者(ANN)搜尋演算法的能源消耗。
圖15根據一實施例圖示出kNN搜尋的一種示例性方法,使用上面所詳述kNN加速器的實施例。在一高層級中,kNN搜尋的該方法包括計算部分距離、積累這些距離、並且以一種交錯的方式排序那些累積的距離。下面是本程序的一更詳細的說明。
在一些實施例中,一個或多個變數被重置。舉例
來說,用於每一個參考向量的一累積的距離、一全域指標、一全域二進制遮罩、一k值、用於每一個參考向量的一有效位元(設置為1)、用於每一個參考向量的一「完成」位元(設置為0)、以及用於每一個參考向量的一局部指標。
在1501,對於每一個參考向量和該參考向量的每一個元件,在該元件與在該查詢向量中一對應元件之間的一絕對差被計算出。
在1503,基於該全域指標一比較臨界值被設定。
在1505判定是否一部分距離將被計算。當該部分距離應被計算時,在1507對於具有一有效位元設置為1(表示有效)的每一個參考物件向量,一部分距離被計算(例如,使用在圖3和4和壓縮器樹211中的電路)並移位和加入到一累積距離。
在1509,當該部分距離不應該被計算或在1507已經發生之後,對於具有一有效位元設置為1(表示有效)的每一個參考物件向量,該累積距離之位元(psum)的一全域指標相依子集被發送到該最小排序網路。
在1511,該排序網路找出一全域最小值和第二最小值。
在1513,判定該全域最小值減去該第二最小值是否大於該設定的臨界值。如果是的話,則精確被設置為1。在1515,當該精確為1,或該全域指標是累積距離的該LSB時,則該最小值發現被設置為1。
在1517,典型地平行於1513,對於有效等於1之
每一個參考物件向量,基於該設定的臨界值和一先前迭代的比較,把該psum與該全域最小值做一比較。基於此比較,該有效位元被更新成不是保持在1就是被失效為0。如果在目前的迭代中該有效被更新為0,該目前的全域指標被寫入到與該參考向量相關聯的該局部指標儲存並且1被寫入到在該全域指標位置的該全域二進制遮罩中。
在1519,判定該最小值發現是否等於1。如果是的話,則在1521中k被遞增1。另外,對於該全域最小值向量,在1521完成被設置為1且有效被設置為0。如果不是的話,則在1527該全域指標被遞增1且該比較臨界值再次被設定。
在k被遞增之後,在1523該全域指標被遞減到在該全域二進制遮罩中最接近1的一個位置。本質上,該全域指標會回滾到一參考物件向量從該搜尋空間被移除的一個最後位置上。
在1525,對於每一個參考物件向量,如果該局部指標大於或等於該全域指標而且該完成位元等於0時,該有效位元被設置為1且該比較臨界值被再次設定。當下一個最近的向量將被計算時,這會再次插入一參考向量進入該搜尋空間中。
雖然以上描述的排序和計算是對所有的參考向量平行的做,這些操作可透過在同一電路上對不同的向量循序地進行計算和排序操作以節省佔地面積。
以上所描述的系統、方法、和設備可使用來提供
許多的優點。在向量之間的該距離被迭代地計算使得在連續的迭代中該計算出距離的精確度從MSB提高到LSB。在每一次迭代中,一向量之一部分距離的該計算提供在一特定有效或位元位置上改善該完整(累計)的距離精確的目的。該完整的距離計算被分解成若干部分距離計算用於不同的度量諸如歐幾里德、曼哈坦或點積,使得在計算該等較高位元之後,在連續迭代中於低階位元位置上精確度的改善之後從不會改變較高階位元在一特定臨界值之外。
以上的完成係使用(i)具有1D計算電路之部分距離計算電路,利用控制信號來計算該右邊部分距離並根據該向量的該維數來排列,(ii)所有1D計算的該等部分距離使用一壓縮器樹加總以級(iii)一累加器,其具有用於目前累積距離的儲存,使用一移位器在一適當的有效性該部分距離被加到其。
排序這些積累的向量距離不用等到完整的距離已被計算-該排序可以用低精確度距離來開始。排序不會把該等累計距離的所有位元考慮在內-它是被迭代地完成,僅以位元的一小窗口開始,從MSB到LSB。該排序網路使用一可編程臨界值(在該示例性情況下,它是1或0)以宣告是否在每一比較和在一迭代的整個排序網路中該發現的最小值比任何其他的數小超過該臨界值。
該計算和排序被交錯從MSB到LSB使得許多參考向量使用低精確度的距離計算從該搜尋空間中被移除,而只有剩下的向量進行下一次迭代來提升較低的位元精確
度用於判定最近相鄰者。
與每一個向量相關聯的計算中具有局部控制,其使用該排序網路的結果來判定用於該向量的計算和排序是否進行到下一迭代或從該搜尋空間被移除。
在每一個向量計算中局部控制和距離累加器會保持狀態即使它從該搜尋空間被移除。當找到下一個最近相鄰者時,該局部控制可以重新插入該向量進入該搜尋空間(基於全域指標)和重複使用在該先前移除點之前之任何先前的計算。
全域控制協調在該等累積距離中那些位元使用廣播到所有向量之一全域指標被發送到該排序網路的活動。
用於該迭代相依之部分距離計算的控制信號也從該全域控制被廣播到所有的向量。這些控制信號可以被儲存在一可由該全域指標引用的可編程查詢表中或作為一固定的功能邏輯。
全域控制紀錄當找到一最近的相鄰者時向量從該搜尋空間被移除之迭代。該全域控制跳回到在其該向量被移除之該最近的迭代狀態以在該搜尋空間中僅有那些移除向量時開始搜尋以找出下一個最近的相鄰者。
該kNN加速器可被做成可編程的以改變該排列的順序。
位元的大小、維度、或向量數的任何數量都是可支援的。另外,在一些實施例中,該kNN加速器是可編程
的,使得每一個維度的該等位元大小、維度或參考向量的該數量可被編程。
該操作可以被序列化,使得用於不同的參考向量的計算和排序可利用共用的部分距離計算和排序電路來完成。
處理器核心可以以不同的方式來實現,用於不同的目的,且在不同的處理器中。舉例來說,這種核心的實現方式可以包括:1)意圖用於通用計算之一種通用依序核心;2)意圖用於通用計算之一種高性能通用亂序核心;3)主要意圖用於通用計算之圖形和/或科學(吞吐量)計算之一種特別用途核心。不同的處理器的實現方式可包括:1)一CPU,其包括一個或多個意圖用於通用計算之通用依序核心和/或一個或多個意圖用於通用計算之高性能通用亂序核心;以及2)一協同處理器,其包括一個或多個主要意圖用於通用計算之圖形和/或科學(吞吐量)計算之特別用途核心。這種不同的處理器導致不同的電腦系統系結構,其可包括:1)該協同處理器在一不同於該CPU的單獨晶片上;2)該協同處理器在與一CPU相同的封裝中不同的晶粒上;3)該協同處理器在與一CPU在相同的晶粒上(在此情況下,這樣的一個協同處理器有時被稱為專用邏輯,諸如整合式的圖形和/或科學(吞吐量)的邏輯,或稱為特殊用途核心);及4)一系統單晶片,其在該相同的晶粒上可以包含有該描述的CPU(有時被稱為該(等)應用程式核心或應用程式處理
器),該上述協同處理器、以及其他的功能。示例性核心結構會在接下來被描述,然後是示例性處理器和電腦結構的說明。
圖16A根據本發明的實施例係一方塊圖,其圖示出一示例性依序管線和一示例性暫存器重新命名、亂序分發/執行管線兩者。圖16B根據本發明的實施例係一方塊圖,其圖示出一依序結構核心的一示例性實施例以及將被包括在一處理器中之一示例性暫存器重命名、亂序分發/執行結構核心兩者。在圖16A-B中的實線方塊圖示出了該依序管線和依序核心,而可選擇性地加入虛線方塊圖示出了暫存器重新命名,亂序分發/執行管線和核心。鑑於該依序方面是亂序方面的一個子集,該亂序方面將進行說明。
在圖16A中,一處理器管線1600包括一提取階段1602、一長度解碼階段1604、一解碼階段1606、一分配階段1608、一重新命名階段1610、一排程(也稱為調度或分發)階段1612、一暫存器讀取/記憶體讀取階段1614、一執行階段1616、一寫回/記憶體寫入階段1618、一例外處理階段1622、以及一提交階段1624。
圖16B展示出處理器核心1690,其包含有耦合到一執行引擎單元1650的一前端單元1630,並且兩者都被耦合到一記憶體單元1670。該核心1690可以是一精簡指令集計算(RISC)核心、一複雜指令集計算(CISC)核心、一超長
指令字(VLIW)核心、或一混合型或替代的核心類型。作為另一種選擇,該核心1690可以是一種特殊用途核心,諸如,舉例來說,一網路或通信核心、壓縮引擎、協同處理器核心、通用計算圖形處理單元(GPGPU)核心、圖形核心、或類似物。
該前端單元1630包括一耦合到指令快取單元1634的一分支預測單元1632,該快取單元被耦合到一指令位址轉換緩衝器(TLB)1636,該緩衝器被耦合到一指令提取單元1638,該提取單元備耦合到一解碼單元1640。該解碼單元1640(或解碼器)可以解碼指令,並產生一輸出為一個或多個微操作、微碼入口點、微指令、其他指令、或其它控制信號,其係解碼自、或以其他方式反應、或衍生自該等原始指令。該解碼單元1640可以使用各種不同的機制來實現。合適機制的實例包括,但不侷限於,查詢表、硬體實現、可編程邏輯陣列(PLA)、微碼唯讀記憶體(ROM)、等等。在一實施例中,該核心1690包含有一微碼ROM或其他媒體,其儲存某些巨集指令的微碼(例如,在解碼單元1640中或以其他方式在該前端單元1630中)。該解碼單元1640被耦合到在該執行引擎單元1650中的一重新命名/分配器單元1652。
該執行引擎單元1650包含有耦合到一引退單元1654之一重新命名/分配器單元1652和一組一個或多個排程器單元1656。該(等)排程器單元1656表示任何數量的不同的排程器,包括保留站、中央指令窗口、等等。該(等)排程
器單元1656被耦合到該(等)實體暫存器集單元1658。該(等)實體暫存器集單元1658的每一個代表一個或多個實體暫存器集,其中的不同者儲存一個或多個不同的資料類型,諸如純量整數、純量浮點數、打包整數、打包浮點數、向量整數、向量浮點、狀態(例如,將要執行之下一個指令位址的一指令指標)、等等。在一實施例中,該(等)實體暫存器集單元1658包括一向量暫存器單元、一寫入遮罩暫存器單元,和一純量暫存器單元。這些暫存器單元可以提供結構式向量暫存器、向量遮罩暫存器、和通用暫存器。該(等)實體暫存器集單元1658被該引退單元1654重疊以圖示出暫存器重新命名和亂序執行可以被實現的各種方式(例如,使用一(多)個重新排序緩衝器和一(多)個引退暫存器集;使用一(多)個未來檔案、一(多)個歷程緩衝器、和一(多)個引退暫存器集;使用一暫存器地圖和一暫存器池;等等)。該引退單元1654和該(等)實體暫存器集單元1658被耦合到該(等)執行集群1660。該(等)執行集群1660包括一組一個或多個執行單元1662及一組一個或多個記憶體存取單元1664。該等執行單元1662可以在各種類型的資料(例如,純量浮點數、打包整數、打包浮點數、向量整數、向量浮點數)上執行各種操作(例如,移位、加、減、乘)。雖然一些實施例可以包括專用於特定功能或功能集合的多個執行單元,其他的實施例可以僅包括一個執行單元或多個執行單元全部來執行所有的功能。該(等)排程器單元1656、實體暫存器集單元1658、以及執行集群1660被展示出為可能為複數的因為某
些實施例中產生用於特定類型資料/操作的獨立管線(例如,一純量整數管線、一純量浮點數/打包整數/打包浮點數/向量整數/向量浮點數管線、和/或一記憶體存取管線,它們每一個都有自己的排程器單元、實體暫存器集單元、和/或執行集群-並在一種單獨的記憶體存取管線的情況下,某些實施例中被實現成只有這個管道的該執行群集具有該(等)記憶體存取單元1664)。還應被理解的是,在各別的管線被使用的情況中,這些管線的一個或多個可以是亂序分發/執行的而其餘的是依序的。
該組記憶體存取單元1664被耦合到該記憶體單元1670,其包括一資料TLB單元1672,該資料TLB單元被耦合到一資料快取單元1674,該資料快取單元被耦合到一2級(L2)快取單元1676。在一示例性實施例中,該等記憶體存取單元1664可以包括一負載單元、一儲存位址單元、以及一儲存資料單元,其中每一個被耦合到在該記憶體單元1670中的該資料TLB單元1672。該指令快取單元1634更被耦合到在該記憶體單元1670中的一2級(L2)快取單元1676。該L2快取單元1676被耦合到快取的一個或多個其他的級別,並最終耦合到一主記憶體。
透過舉例的方式,該示例暫存器重新命名,亂序分發/執行核心結構可實現該管線1600如下:1)該指令提取1638執行該等提取與長度解碼階段1602和1604;2)該解碼單元1640執行該解碼階段1606;3)該重新命名/分配器單元1652執行該分配階段1608和該重新命名階段1610;4)該(等)
排程單元1656執行該排程階段1612;5)該(等)實體暫存器集單元1658和該記憶體單元1670執行該暫存器讀取/記憶體讀階段1614;該執行集群1660執行該執行階段1616;6)該記憶體單元1670和該(等)實體暫存器集單元1658執行該寫回/記憶體寫入階段1618;7)各種單元可能涉及該例外處理階段1622;8)該引退單元1654和該(等)實體暫存器集單元1658執行該提交階段1624。
該核心1690可以支援一個或多個指令集(例如,x86指令集(與已經被添加在更新版本的一些延伸);美國加州桑尼維爾,MIPS科技的MIPS架構;美國加州桑尼維爾ARM控股的ARM指令集(與任選的附加延伸諸如NEON),包括本文所描述的該(等)指令。在一實施例中,該核心1690包括邏輯以支援一打包資料指令集延伸(例如,AVX1、AVX2),由此允許由許多多媒體應用程式所使用之該等操作將使用打包資料來執行。
應被理解的是該核心可以支援多執行緒(執行兩個或多個平行操作或執行緒集合),並且可以以多種方式來進行,包括時間切片多執行緒、同步多執行緒(其中一單一實體核心為該實體核心正同步執行多執行緒的該等執行緒的每一個提供了一邏輯核心)、或它們的組合(例如,之後的時間切片提取和解碼和同步多執行緒諸如Intel®超執行緒技術)。
雖然暫存器重新命名是在亂序執行的環境中被描述,但是應被理解的是,暫存器重新命名可以被使用在
一依序結構中。儘管該處理器的該圖示的實施例也包括分離的指令和資料快取單元1634/1674和一共用的L2快取單元1676,另外的實施例可以以一單一內部快取同時用於指令和資料,諸如,舉例來說,一1級(L1)內部快取,或多個級別的內部快取。在一些實施例中,該系統可以包括一內部快取和一外部快取的組合,該外部快取外部於該核心和/或該處理器。可替代地,所有的快取可以外部於該核心和/或該處理器。
圖17A-B圖示出一更具體之示例性依序核心結構方塊圖,該核心將會是在一晶片中數個邏輯方塊(包括相同類型和/或不同類型的其他核心)中之一。該等邏輯方塊透過一高頻寬互連網路(例如,一環形網路)進行通信,其具有一些固定功能邏輯、記憶體I/O介面、和其他必要的I/O邏輯,這取決於該應用。
圖17A根據本發明的實施例係一單一處理器核心的方塊圖,其連接到晶粒上互連網路1702,與它的該2級(L2)快取1704的局部子集。在一實施例中,一指令編碼器1700支援該x86指令集帶有一打包資料指令集延伸。一L1快取1706允許低延遲存取到快取記憶體進入該等純量和向量單元。雖然在一實施例中(為了簡化該設計),一純量單元1708和一向量單元1710使用各別的暫存器集(分別是純量暫存器1712和向量暫存器1714)並在它們之間傳輸的資料被寫入記憶體,然後從一1級(L1)快取1706讀回,本發明的
替代實施例可使用不同的方法(例如,使用一單一暫存器集或包括一通信路徑其允許資料在兩個暫存器集之間傳送而不會被寫入和讀回)。
該L2快取1704的該局部子集是一全域L2快取的一部分,其被分割成單獨的局部子集,每一個處理器核心一個。每一個處理器核心具有一直接存取路徑到該L2快取1704它自己的局部子集。由一處理器核心所讀出的資料被儲存在其L2快取子集1704中並且可被快速地存取,平行於其他處理器核存取它們自己的局部L2快取子集。由一處理器核心所寫入的資料被儲存在它自己的L2快取子集1704中並從其他的子集清除,如果需要的話。該環形網路確保共享資料的一致性。該環形網路是雙向的以允許行為者諸如處理器核心、L2快取和其他的邏輯方塊彼此在該晶片內進行通信。每一個環形資料路徑係每一個方向1012-位元寬。
圖17B根據本發明的實施例是圖17A處理器核心一部分的展開視圖。圖17B包括該L1快取1704的一L1資料快取1706A部分,以及更詳細的有關於該向量單元1710和該等向量暫存器1714。明確地說,該向量單元1710是一個16-寬的向量處理單元(VPU)(參見16-寬ALU 1728),其執行一個或多個整數、單精度浮點數和雙精度浮點數指令。該VPU支援以拌和單元1720拌和該等暫存器輸入、用數字轉換單元1722A-B做數值轉換、和在該記憶體輸入上以複製單位元1724做複製。寫入遮罩暫存器1726允許預測產生的向量寫入。
圖18根據本發明的實施例係一處理器1800的方塊圖,其可能有一個以上的核心,可能具有一整合式的記憶體控制器,以及可能有一整合式的圖形。在圖18中的該等實線方塊圖示出一處理器1800具有一單一核心1802A、一個系統代理1810、一組一個或多個匯流排控制器單元1816、而該可選擇之另外的虛線方塊圖示出一替代的處理器1800具有多個核心1802A-N、在該系統代理單元1810中一組一個或多個整合式的記憶體控制器單元1814、和專用邏輯1808。
因此,該處理器1800不同的實現方式可以包括:1)一CPU,具有該專用邏輯1808被整合有圖形和/或科學(吞吐量)邏輯(其可以包括一個或多個核心),並且該等核心1802A-N是一個或多個通用核心(例如,通用依序核心、通用亂序核心、該兩者的一種組合);2)一協同處理器,具有該等核心1802A-N是大量之主要意圖用於圖形和/或科學(吞吐量)的專用核心;以及3)一協同處理器,具有該等核心1802A-N是大量之通用依序核心。因此,該處理器1800可以是一通用處理器、協同處理器或專用處理器,諸如,舉例來說,一網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU(通用圖形處理單元)、一高吞吐量許多整合式核心(MIC)的協同處理器(包括30個或更多的核心)、嵌入式處理器、或類似物。該處理器可以在一個或多個晶片上被實現。使用數個工序技術的任意一個,諸如,舉例來說,BiCMOS、
CMOS、或NMOS,該處理器1800可以是一部分和/或可以被實現在一個或多個基板上。
該記憶體層級結構包括在該等核心內快取的一個或多個層級、一組或一個或多個共用的快取單元1806、和耦合到該組整合式記憶體控制器單元1814的外部記憶體(圖中未示出)。該組共享快取單元1806可以包括一個或多個中間級快取,諸如2級(L2)、3級(L3)、4級(L4)、或快取的其他級別、一末級快取(LLC),和/或它們的組合。雖然在一實施例中一基於環形的互連單元1812互連該整合式的圖形邏輯1808、該組共享快取單元1806、以及該系統代理單元1810/整合式的記憶體控制器單元1814,但備選的實施例可使用任何數量公知的技術用於互連這些單元。在一實施例中,一致性被維持在一個或多個快取單元1806和核心1802-A-N之間。
在一些實施例中,該等核心1802A-N的一個或多個能夠進行多執行緒。該系統代理1810包括協調和運行核心1802A-N的那些組件。該系統代理單元1810可以包括例如一功率控制單元(PCU)和一顯示器單元。該PCU可以是或包括需要用來調節該等核心1802A-N和該整合式圖形邏輯1808之該功率狀態的邏輯和組件。該顯示器單元是用於驅動一個或多個外部連接的顯示器。
以結構指令集的觀點來說,該等核心1802A-N可以是同質或異質的;即,該等核心1802A-N的兩個或多個可能能夠執行相同的指令集,而其他可能能夠執行該指令集
的一個子集或一不同的指令集。
圖19-22系示例性電腦結構的方塊圖。本領域之公知之其他的系統設計和配置如筆記型電腦、桌上型電腦、手持PC、個人數位助理、工程工作站、伺服器、網路設備、網路集線器、交換機、嵌入式處理器、數位信號處理器(DSP)、圖形裝置、視訊遊戲裝置、機上盒、微控制器、蜂巢式電話、可攜式媒體播放器、手持裝置、和各種其他電子裝置,也是合適的。在一般情況下,能夠納入如本文所揭露之一處理器和/或其他執行邏輯的大量各種系統或電子裝置一般來說是合適的。
現在參考圖19,被展示出的是根據本發明之一實施例一系統1900的方塊圖。該系統1900可以包括一個或多個處理器1910、1915,其被耦合到一控制器集線器1920。在一實施例中,該控制器集線器1920包括一圖形記憶體控制器集線器(GMCH)1990和一輸入/輸出集線器(IOH)1950(它們可能是在不同的晶片上);該GMCH 1990包括記憶體和圖形控制器其被耦合到記憶體1940和一協同處理器1945;該IOH 1950把輸入/輸出(I/O)裝置1960耦合到GMCH 1990。可替代地,該記憶體和圖形控制器之一或兩個被整合在該處理器內(如本文所述),該記憶體1940和該協同處理器1945被直接耦合到該處理器1910,和該控制器集線器1920與該IOH 1950是在同一個單一晶片上。
額外處理器1915之可任意選擇的特性在圖19中
以虛線表示。每一個處理器1910、1915可以包括在此描述之該等處理核心的一個或多個,並可以是該處理器1800的一些版本。
該記憶體1940可以是,舉例來說,動態隨機存取記憶體(DRAM)、相變記憶體(PCM)、或者是兩者的組合。對於至少一個實施例,該控制器集線器1920與該(等)處理器1910、1915透過一多點匯流排,諸如一前端匯流排(FSB)、點對點介面諸如QuickPath互連(QPI)、或類似的連接1995,進行通信。
在一實施例中,該協同處理器1945是一專用處理器,諸如,舉例來說,一高吞吐量MIC處理器、一網路或通信處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器、或類似物。在一實施例中,控制器中心1920可包括一整合式的圖形加速器。
以品質因數光譜考量而言,包括結構、微結構、熱量、功耗特性、等等,在該等實體資源1910、1915之間可以有多種差異。
在一實施例中,該處理器1910執行可控制一般類型資料處理操作的指令。嵌入在該等指令中的可能是協同處理器指令。該處理器1910識別出這些協同處理器指令為應是由該附接協同處理器1945來執行的一種類型。因此,該處理器1910發出這些協同處理器指令(或代表協同處理器指令的控制信號)在一協同處理器匯流排或其他的互連之上,給協同處理器1945。協同處理器1945接受並執行該
等接收到的協同處理器指令。
現在參考圖20,根據本發明的一實施例展示出的是一第一更具體示例系統2000的方塊圖。如在圖20中所示,多處理器系統2000是一種點對點互連系統,並且包括一第一處理器2070和一第二處理器2080它們經由一點對點互連2050耦合。處理器2070和2080的每一個可以是該處理器1800的一些版本。在本發明的一實施例中,處理器2070和2080分別為處理器1910和1915,而協同處理器2038是協同處理器1945。在另一實施例中,處理器2070和2080分別為處理器1910和協同處理器1945。
處理器2070和2080被展示成分別包括整合式的記憶體控制器(IMC)單元2072和2082。處理器2070還包括其匯流排控制器單元點對點(P-P)介面2076和2078的一部分;類似地,第二處理器2080包括P-P介面2086和2088。處理器2070、2080可使用P-P介面電路2078、2088經由一點對點(P-P)介面2050交換資訊。如在圖20中所示,IMC 2072和2082耦合該等處理器到各自的記憶體,即一記憶體2032和一記憶體2034,其可以是局部附接到該等各別處理器的主記憶體的部分。
處理器2070、2080每一個可以使用點對點介面電路2076、2094、2086、2098經由各自的P-P介面2052、2054與一晶片組2090交換資訊。晶片組2090可以可選擇性地經由一高效能介面2039與該協同處理器2038交換資訊。在一實施例中,該協同處理器2038是一專用處理器,諸如,舉
例來說,一高吞吐量MIC處理器、一網路或通信處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器、或類似物。
一共用快取(圖中未示出)可被包括在兩個處理器的任一之中或兩處理器的外部,仍經由P-P互連連接到該等處理器,以使得處理器的任一或兩者之局部快取資訊可被儲存在該共用快取中如果一處理器被置於一低功率模式的話。
晶片組2090可以經由一介面2096被耦合到一第一匯流排2016。在一實施例中,第一匯流排2016可以一種週邊組件互連(PCI)匯流排,或一匯流排諸如一PCI Express匯流排或另一種第三代I/O互連匯流排,雖然本發明的範圍並不侷限於此。
如圖20所示,各種I/O裝置2014可被耦合到第一匯流排2016,連同一匯流排橋接器2018其耦合第一匯流排2016到一第二匯流排2020。在一實施例中,一個或多個附加的處理器2015,諸如協同處理器、高吞吐量MIC處理器、GPGPU、加速器(諸如,例如,圖形加速器或數位信號處理(DSP)單元)、場可編程閘陣列、或任何其它的處理器,被耦合到第一匯流排2016。在一實施例中,第二匯流排2020可以是一種低引腳計數(LPC)匯流排。各種裝置可被耦合到一第二匯流排2020,包括,舉例來說,一鍵盤和/或滑鼠2022、通信裝置2027和一儲存單元2028比如一磁碟或其他大容量的儲存裝置,其可以包括指令/程式碼和資料2030,
在一個實施例中。此外,一音訊I/O 2024可被耦合到該第二匯流排2020。注意,其他的架構也是可能的。例如,不使用圖20的該點對點架構,一系統可以實現多點匯流排或其他的如此架構。
現在參考圖21,根據本發明的一實施例圖示出一第二更具體示例系統2100的方塊圖。在圖20和21中相同的元件有相同的參考標號,圖20的某些方面已經從圖21中移除以避免模糊了圖21的其他方面。
圖21圖示出該等處理器2070、2080可以分別包括整合式的記憶體和I/O控制邏輯(「CL」)2072和2082。因此,該CL 2072、2082包括整合式的記憶體控制器單元和包括I/O控制邏輯。圖21不僅圖示出耦合到該CL 2072、2082的該等記憶體2032、2034,I/O裝置2114也耦合到該控制邏輯2072、2082。傳統I/O裝置2115被耦合到該晶片組2090。
現在參考圖22,根據本發明的一實施例圖示出一SoC 2200的方塊圖。在圖18中相似的元件具有相似的參考標號。另外,虛線方塊在更先進的SoC上可選擇的功能。在圖22中,一互連單元2202被耦合到:一應用程式處理器2210,其包括一組一個或多個核心202A-N和共用的快取單元1806;系統代理單元1810;匯流排控制器單元1816;整合式的記憶體控制器單元1814;一組一個或多個協同處理器2220其可包括整合式的圖形邏輯、一影像處理器、一音訊處理器、和一視訊處理器;一靜態隨機存取記憶體(SRAM)單元2230;一直接記憶體存取(DMA)單元2232;以及用於
耦合到一個或多個外部顯示器的一顯示器單元2240。在一實施例中,該(等)協同處理器2220包括一專用處理器,諸如,舉例來說,一網路或通訊處理器、壓縮引擎、GPGPU、一高吞吐量MIC處理器、嵌入式處理器、或類似物。
本文在這裡揭露機制的實施例可以以硬體、軟體、韌體或這些實現方式的一種組合來實現。本發明的實施例可以被實現為電腦程式或程式碼,執行在可編程系統上,其包括至少一個處理器、一儲存系統(包括依電性和非依電性記憶體和/或儲存元件)、至少一個輸入裝置、以及至少一個輸出裝置。
程式碼,諸如在圖20中所示的碼2030,可被應用於輸入指令以執行本文所描述的該等功能和產生輸出資訊。該輸出資訊可被應用於一個或多個輸出裝置,以已知的方式。就本申請的目的而言,一處理系統包括具有處理器,諸如,舉例來說;一數位信號處理器(DSP)、一微控制器、一特定應用積體電路(ASIC)、或一微處理器的任何系統。
該程式碼可以以一種高階程序性或物件導向式程式語言來來實現以與一處理系統進行通信。該程式碼還可以以組合語言或機器語言來實現,如果需要的話。事實上,本文描述的機制並不侷限於在任何特定程式語言的範疇上。在任何情況下,該語言可以是一種編譯式或直譯式語言。
至少一個實施例的一個或多個方面可以由儲存
在一機器可讀取媒體上的代表指令來實現,其代表在該處理器中的各種邏輯,當其由一機器讀取時,會使得該機器可以製造邏輯來執行在本文中所描述的技術。這樣的表示,被稱為「IP核心」可以被儲存在一有形的、機器可讀取媒體上並提供給各種客戶或生產設施以載入到實際做出該邏輯或處理器之該等製造機器中。
這樣子的機器可讀取儲存媒體可以包括,不是限制性的,由一機器或裝置製造或形成製品之非暫時性、有形的安排,包括儲存媒體諸如硬碟、任何其他類型的碟包括軟碟、光碟、光碟唯讀記憶體(CD-ROM)、可重寫光碟(CD-RW)、和磁光碟、半導體裝置諸如唯讀記憶體(ROM)、隨機存取記憶體(RAM)諸如動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM)、可擦除式可編程唯讀記憶體(EPROM)、快閃記憶體、電可擦除式可編程唯讀記憶體(EEPROM)、相變記憶體(PCM)、磁卡或光卡、或任何其他類型適於儲存電子指令的媒體。
因此,本發明的實施例還包括非暫時性的、有形的機器可讀取媒體包含有指令或包含有設計資料,諸如硬體描述語言(HDL),其定義本文中所描述之結構、電路、設備、處理器和/或系統特徵。這樣子的實施例也可以被稱為程式產品。
在一些情況下,一指令轉換器可被使用來把一指令從一來源指令集轉換為一目標指令集。舉例來說,該指
令轉換器可能轉譯(例如,使用靜態二進制轉譯、包括動態編譯的動態二進制轉換)、變形、仿真、或以其他方式把指令轉換成一個或多個將要由該核心內來處理的其他指令。該指令轉換器可以以軟體、硬體、韌體、或其一組合來實現。該指令轉換可能是在處理器上、不在處理器上,或部分在和部分不在處理器上。
圖23根據本發明的實施例係一方塊圖,其對比一軟體指令轉換器的使用以把在一來源指令集中的二進位指令轉換成在一目標指令集中的二進位指令。在該所示實施例中,該指令轉換器是一軟體指令轉換器,雖然可替代地,該指令轉換器可以以軟體、韌體、硬體、或它們的各種組合來實現。圖23展示出一種高階語言2302的程式可以利用一x86編譯器2304來編譯以產生x86二進位碼2306,其可原生地由一具有至少一個x86指令集核心2316的處理器來執行。該具有至少一個x86指令集核心2316的處理器代表與具有至少一個x86指令集核心的Intel處理器基本上執行該等相同功能之任何的處理器,藉由相容地執行或以其他方式處理(1)該Intel x86指令集核心之該指令集的一個相當大的部分或(2)應用程式的目的碼版本或其他軟體其目標為在具有至少一個x86指令集核心的Intel處理器上運行,為了實現與具有至少一個x86指令集核心的Intel處理器基本上相同的結果。該x86編譯器2304代表其可操作以產生x86二進位碼2306(例如,目的碼)的一編譯器,其可以,有或沒有附加的連結處理,在具有至少一個x86指令集核心2316的該處理
器上被執行。類似地,圖23展示出該高階語言2302程式可以使用一替代的指令集編譯器2308編譯以產生替代的指令集二進位碼2310,其可原生地由一不具有至少一個x86指令集核心2316的處理器來執行(例如,一處理器具有執行美國加州桑尼維爾MIPS Technologies之該MIPS指令集的核心和/或具有執行美國加州桑尼維爾ARM Holdings之該ARM指令集的核心)。該指令轉換器2312被使用來把該x86二進位碼2306轉換成可原生地由一沒有x86指令集核心2314的該處理器來執行的程式碼。此轉換的程式碼不太可能相同於該替代的指令集二進位碼2310,因為能夠做這個的指令轉換器很難做;然而,轉換後的程式碼將完成該一般操作並且由來自該替換指令集的指令來組成。因此,該指令轉換器2312代表軟體、韌體、硬體、或其一個組合,其透過仿真、模擬或任何其他方法,允許一處理器或不具有x86指令集處理器或核心之其他電子裝置來執行該x86二進位碼2306。
101‧‧‧查詢物件向量
103_0~103_N‧‧‧向量0~N部分距離計算
105‧‧‧全域控制
107‧‧‧最小排序網路
109‧‧‧0級比較節點
111‧‧‧「k」級比較節點
Claims (22)
- 一種設備,其包含:至少一個向量部分距離計算電路,其用以計算在一搜尋空間中之一組向量的一部分總和與一累積距離;一最小排序網路,其用以排序來自該等累積距離之一選擇的位元集合,該最小排序網路指出來自該搜尋空間中該等向量之該等選擇位元集合的一最小值及該最小值是否為獨一無二的;以及一全域控制電路,其用以接收該最小排序網路的一輸出,並控制該至少一個向量部分距離計算電路之操作的各個方面。
- 如請求項1之設備,其中每一個向量部分距離計算電路包含:數個資料元件計算器電路;一壓縮器樹形電路,其用以把該等數個資料元件計算器電路的每一個結果做加總;一局部控制電路,其用以從該累積距離輸出一較小的位元窗口,並使用該最小排序網路的一結果來判定何時一向量的一計算和排序將進行到下一迭代或從該搜尋空間被移除;以及一累加器,其用以在一目前的迭代中增加該等部分距離之結果,其中,在加到之前迭代所積累的該距離之前,一正確的有效性係由一移位器而提供以移位該部分 距離。
- 如請求項1之設備,其中該最小排序網路包含:數個第一級比較節點,其用以接收來自相鄰向量局部距離計算電路的一部分和與有效位元,並用以輸出一有效位元、精確位元,位址、和總和,其中該第一級比較節點用以邏輯地OR運算該等接收到的相鄰有效位元以提供該輸出有效位元,互斥地OR運算該等接收到的相鄰有效位元,把該互斥OR運算的一結果與該相鄰總和比較可能存在差異總和的一輸出進行邏輯地OR運算以產生該輸出精確位元,其中該精確位元是1來指出在該等兩個輸入之間的差是否大於一可程控的臨界值或者是否兩個輸入都是無效的;以及數個第二級比較節點,用以從相鄰比較節點接收一部分總和、有效位元、位址、和精確位元並用以輸出一有效位元、精確位元、位址、和總和,該等接收總和的一比較結果用以從傳入的精確信號做選擇,把該選擇的精確與在這一節點所計算的精確信號做一邏輯地AND運算以產生該輸出精確信號,該精確信號指出該輸出總和是否為獨一無二的,其中該比較結果形成該位址的一最高階位元。
- 如請求項3之設備,其中該全域控制電路包含:一OR樹,其用以接收及OR運算來自數個局部控制 電路的數個移除位元;一全域遮罩,其用以對該全域控制邏輯指示出該全域指標針對可能包含下一個最近相鄰者的該組向量需要跳回到何處;一選擇器,其用以自遞增一的先前全域指標及來自耦合到該全域遮罩之一優先編碼器的一輸出中選擇出該全域指標。
- 如請求項1之設備,其中每一個維度的一位元大小、維度、和參考數目係可重新配置的。
- 如請求項2之設備,其中該等數個資料元件計算器電路的每一個係絕對差電路之一局部距離計算總和。
- 如請求項2之設備,其中該等數個資料元件計算器電路的每一個係平方電路之一局部距離計算總和。
- 如請求項2之設備,其中該等數個資料元件計算器電路的每一個係可重新配置以操作為用於數個資料元件位元寬度之一更大資料元件計算器電路的一部分。
- 如請求項2之設備,其中該等數個資料元件計算器電路的每一個係一部分距離計算點積電路。
- 如請求項1之設備,其中該全域控制電路用以協調在該等累積的距離中那些位元被發送到該排序網路的活動,使用廣播到所有向量的一全域指標、廣播用於該迭代相依之部分距離計算的控制信號到所有的向量、以及紀錄當找到一最近相鄰者時向量從該搜尋空間被移除之迭代。
- 如請求項10之設備,其中該等控制信號被儲存在一可由該全域指標參考的一可程控查詢表中。
- 如請求項2之設備,在每一個向量部分距離計算電路中的該等局部控制電路和距離累加器會保持狀態即使它從該搜尋空間被移除,並且,當找到下一個最近相鄰者時,該局部控制電路可以重新插入該向量至該搜尋空間中並重複使用到該先前移除點之前之任何先前的計算,其中該局部控制電路使用該最小排序網路的該輸出來判定用於一向量的該計算和排序將於何時進行到下一個迭代或從該搜尋空間被移除。
- 如請求項1之設備,其中該設備被配置成以遞增的距離來排序。
- 如請求項1之設備,其中該設備被配置以改變排序的一順序。
- 如請求項1之設備,其中該設備操作在比該設備儲存容量更大的資料集上,計算來自該設備之一資料庫中經排序的k-最近之候選者,用在記憶體中剩餘的物件描述符來替換被移除的候選者,並且重複過程直到所有的物件候選者都被迭代過以找到整體k-最近描述符向量為止。
- 一種方法,其包含下列步驟:執行以下的連續迭代,使用至少一個向量部分距離計算電路以針對一查詢向量來計算數個向量的部分距離、移位該等計算的部分距離、並積累該經移位之計算的部分距離,以及 使用一最小排序網路來排序那些累積的距離,從一最高有效位元開始到一最低有效位元。
- 如請求項16之方法,其中每一個連續的迭代改善了從一最高有效位元開始到一最低有效位元的該計算之部分距離的精確度。
- 如請求項16之方法,其中,排序從一最高有效位元開始到一最低有效位元之那些累積的距離始於低精確度的距離,且只有剩下的向量會進入到下一迭代以針對判定最近相鄰者去改善較低位元精確度。
- 如請求項16之方法,其中該排序網路執行該排序係使用一可程控的臨界值來宣稱在每一次比較中及在一迭代中之一整個排序網路中所找到的一最小值是否比任何其他的數字小超過該臨界值。
- 如請求項16之方法,其中該累積距離計算針對不同的度量被分解成若干個部分距離計算,使得在計算該等較高位元之後,在連續迭代中低階位元位置上之精確度的改善不改變較高階位元超過一臨界值。
- 如請求項16之方法,其中針對一查詢向量計算數個向量的部分距離之步驟包含:使用具有用於1D計算之電路的電路,其使用控制信號來計算該右邊部分距離並根據該向量的該維數來排列;使用一壓縮器樹來加總所有1D計算的該等部分距離;以及 把該等經加總的部分距離加到一目前累積的距離。
- 如請求項16之方法,其中每一次迭代以共同之該至少一個向量部分距離計算及最小排序網路電路來執行。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/582,607 US9626334B2 (en) | 2014-12-24 | 2014-12-24 | Systems, apparatuses, and methods for K nearest neighbor search |
US14/944,828 US10303735B2 (en) | 2015-11-18 | 2015-11-18 | Systems, apparatuses, and methods for K nearest neighbor search |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201636823A TW201636823A (zh) | 2016-10-16 |
TWI604379B true TWI604379B (zh) | 2017-11-01 |
Family
ID=56116747
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW104138748A TWI604379B (zh) | 2014-12-24 | 2015-11-23 | 用於k最近相鄰者搜尋之系統、設備及方法 |
Country Status (3)
Country | Link |
---|---|
CN (1) | CN105740200B (zh) |
DE (1) | DE102015015182A1 (zh) |
TW (1) | TWI604379B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10649770B2 (en) * | 2017-01-31 | 2020-05-12 | Facebook, Inc. | κ-selection using parallel processing |
CN110019657B (zh) * | 2017-07-28 | 2021-05-25 | 北京搜狗科技发展有限公司 | 处理方法、装置和机器可读介质 |
CN108182401B (zh) * | 2017-12-27 | 2021-09-03 | 武汉理工大学 | 一种基于聚合块信息的安全虹膜识别方法 |
CN112749238A (zh) * | 2020-12-30 | 2021-05-04 | 北京金堤征信服务有限公司 | 搜索排序方法、装置、电子设备以及计算机可读存储介质 |
CN113705858B (zh) * | 2021-08-02 | 2023-07-11 | 西安交通大学 | 多目标区域的最短路径规划方法、系统、设备及存储介质 |
CN117839217A (zh) * | 2023-06-29 | 2024-04-09 | 高世超 | 网络游戏区块链路地图时空高效路径搜索方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE69430528T2 (de) * | 1994-07-28 | 2003-01-02 | International Business Machines Corp., Armonk | Such/Sortier-Schaltung für Neuronalnetzwerke |
GB2476800A (en) * | 2010-01-07 | 2011-07-13 | Linear Algebra Technologies Ltd | Sparse matrix vector multiplier using a bit map of non-zero elements to control scheduling of arithmetic operations |
CN103136535A (zh) * | 2011-11-29 | 2013-06-05 | 南京理工大学常熟研究院有限公司 | 一种用于点云简化的k近邻搜索方法 |
US9405538B2 (en) * | 2012-12-28 | 2016-08-02 | Intel Corporation | Functional unit having tree structure to support vector sorting algorithm and other algorithms |
-
2015
- 2015-11-23 TW TW104138748A patent/TWI604379B/zh active
- 2015-11-24 DE DE102015015182.7A patent/DE102015015182A1/de active Pending
- 2015-11-24 CN CN201510823660.4A patent/CN105740200B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
DE102015015182A1 (de) | 2016-06-30 |
CN105740200B (zh) | 2019-07-30 |
CN105740200A (zh) | 2016-07-06 |
TW201636823A (zh) | 2016-10-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI604379B (zh) | 用於k最近相鄰者搜尋之系統、設備及方法 | |
KR101744031B1 (ko) | 독립적 데이터 상에서의 재귀적 계산들의 벡터화를 위한 판독 및 기입 마스크들 갱신 명령어 | |
JP6526609B2 (ja) | プロセッサ | |
JP6082116B2 (ja) | リードマスク及びライトマスクにより制御されるベクトル移動命令 | |
US10296660B2 (en) | Systems, apparatuses, and methods for feature searching | |
Inoue et al. | Faster set intersection with SIMD instructions by reducing branch mispredictions | |
KR101851439B1 (ko) | 충돌 검출을 수행하고, 레지스터의 콘텐츠를 다른 레지스터의 데이터 구성요소 위치들로 브로드캐스트하기 위한 시스템들, 장치들 및 방법들 | |
KR101772299B1 (ko) | 스트라이딩된 액세스 패턴을 가진 벡터 레지스터에서 성분들을 축소하기 위한 명령어 | |
CN108028665B (zh) | 用于使用硬件和软件进行压缩的系统、方法和装置 | |
CN107925420B (zh) | 用于经优化压缩比的异构压缩架构 | |
US10303735B2 (en) | Systems, apparatuses, and methods for K nearest neighbor search | |
JP5941488B2 (ja) | 条件付きショート前方分岐の計算的に等価な述語付き命令への変換 | |
US9626334B2 (en) | Systems, apparatuses, and methods for K nearest neighbor search | |
JP2017107587A (ja) | 複数のビットを左にシフトし、複数の1を複数の下位ビットにプルインするための命令 | |
CN105814538B (zh) | 用于仿真共享内存架构的支持浮点的流水线 | |
TW201732559A (zh) | 用以執行鍵值查找指令之處理裝置 | |
JP2018500659A (ja) | 高速ベクトルによる動的なメモリ競合検出 | |
Liu et al. | G-Learned Index: Enabling Efficient Learned Index on GPU | |
CN108845832B (zh) | 一种提高处理器主频的流水线细分装置 | |
TWI740860B (zh) | 基於截斷的確定性有限自動機利用硬體過濾器施行複雜正規表示法樣式匹配的方法與設備 | |
CN116168765B (zh) | 基于改进strobemer的基因序列生成方法及系统 | |
KR101635856B1 (ko) | 데이터 요소에 있는 비트들의 제로화를 위한 시스템, 장치, 및 방법 | |
Zhang et al. | Progress in a novel architecture for high performance processing | |
CN117501256A (zh) | 用于大数据集的复杂过滤器硬件加速器 | |
CN115857872A (zh) | 针对每个矩阵维度的多个片的矩阵操作 |