TWI729019B - 處理裝置、系統單晶片、非暫時性機器可讀儲存媒體及用於排序之方法 - Google Patents
處理裝置、系統單晶片、非暫時性機器可讀儲存媒體及用於排序之方法 Download PDFInfo
- Publication number
- TWI729019B TWI729019B TW105135244A TW105135244A TWI729019B TW I729019 B TWI729019 B TW I729019B TW 105135244 A TW105135244 A TW 105135244A TW 105135244 A TW105135244 A TW 105135244A TW I729019 B TWI729019 B TW I729019B
- Authority
- TW
- Taiwan
- Prior art keywords
- elements
- sequence
- sorted
- ordered
- identified
- Prior art date
Links
- 238000012545 processing Methods 0.000 title claims abstract description 141
- 238000000034 method Methods 0.000 title claims description 40
- 238000003860 storage Methods 0.000 title claims description 35
- 230000015654 memory Effects 0.000 claims description 129
- 230000009466 transformation Effects 0.000 claims description 18
- 230000001174 ascending effect Effects 0.000 claims description 12
- 238000012986 modification Methods 0.000 claims description 7
- 230000004048 modification Effects 0.000 claims description 7
- 238000000844 transformation Methods 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 34
- 238000007667 floating Methods 0.000 description 23
- 230000002093 peripheral effect Effects 0.000 description 18
- 238000004891 communication Methods 0.000 description 12
- 230000007246 mechanism Effects 0.000 description 11
- 238000013461 design Methods 0.000 description 10
- 238000006243 chemical reaction Methods 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 8
- 230000003068 static effect Effects 0.000 description 8
- 230000006870 function Effects 0.000 description 7
- 239000000872 buffer Substances 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 6
- 238000012163 sequencing technique Methods 0.000 description 6
- 230000000694 effects Effects 0.000 description 5
- 238000006467 substitution reaction Methods 0.000 description 5
- 239000003795 chemical substances by application Substances 0.000 description 4
- 230000005291 magnetic effect Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 230000001133 acceleration Effects 0.000 description 3
- 238000012790 confirmation Methods 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 230000001419 dependent effect Effects 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 238000004088 simulation Methods 0.000 description 3
- 230000002159 abnormal effect Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 230000007613 environmental effect Effects 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 230000000717 retained effect Effects 0.000 description 2
- 239000000758 substrate Substances 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- LHMQDVIHBXWNII-UHFFFAOYSA-N 3-amino-4-methoxy-n-phenylbenzamide Chemical compound C1=C(N)C(OC)=CC=C1C(=O)NC1=CC=CC=C1 LHMQDVIHBXWNII-UHFFFAOYSA-N 0.000 description 1
- 101100285899 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) SSE2 gene Proteins 0.000 description 1
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 239000000969 carrier Substances 0.000 description 1
- 210000004027 cell Anatomy 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000000052 comparative effect Effects 0.000 description 1
- 238000004883 computer application Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000012938 design process Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000003032 molecular docking Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 229910052754 neon Inorganic materials 0.000 description 1
- GKAOGPIIYCISHV-UHFFFAOYSA-N neon atom Chemical compound [Ne] GKAOGPIIYCISHV-UHFFFAOYSA-N 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 210000000352 storage cell Anatomy 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
- G06F9/30192—Instruction operation extension or modification according to data descriptor, e.g. dynamic data typing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30021—Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30029—Logical and Boolean instructions, e.g. XOR, NOT
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30032—Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
- G06F9/30038—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Complex Calculations (AREA)
- Advance Control (AREA)
Abstract
一種處理裝置包括排序模組,該排序模組將暫存器集中的對應位置之位置值添加至多個元素中每一者,而導致對應位置中的多個變換後元素。該等多個元素包括多個位元。該排序模組將該等多個變換後元素中每一者與其自身且彼此進行比較。該排序模組亦基於該比較將致能或失能指示符中之一個指派給該等多個該等變換後元素中每一者。該排序模組進一步計數指派給該等多個該等變換後元素中每一者的該等致能指示符之數目,以產生該等多個元素之經排序序列。
Description
發明領域
本文所描述之實施例大體而言係關於處理裝置,且更具體而言,係關於用於處理裝置的於指令集架構中排序資料及合併經排序資料。
發明背景
排序為由許多電腦應用程式廣泛使用的重要核心。在資料庫中,排序幫助定序資料,產生索引及進行二元搜尋。排序促進統計有關之應用程式,包括找到最近對、決定元素之唯一性、找到第k大元素及識別離群值。排序在實體模擬中用來例如找到凸包以促進碰撞偵測。排序亦使用於大資料應用程式中,具體而言圖形分析,其中該排序用來排序在頂點規劃期間組成輸出向量的鍵/值對。合併排序為排序之極廣泛使用的實行方案。合併排序內之鍵基元合併兩個經排序序列。
依據本發明之一實施例,係特地提出一種處理裝置,其包含:一排序模組,用來:將一暫存器集中的一對應位置之一位置值添加至多個元素中每一者,而導致對應位置中的多個變換後元素,其中該等多個元素中每一者包含多個位元;將該等多個變換後元素中每一者與其自身及彼此比較;基於該比較而將一致能或失能指示符中之一者指派給該等多個變換後元素中每一者;以及計數被指派給該等多個變換後元素中每一者的該等致能指示符之一數目,以產生該等多個元素之一經排序序列。
100、1900:計算系統
105、205、505、805、1902:處理裝置
110、210:排序模組
120、520、820:合併模組
130、1340、1632、1634、1732、1734:記憶體
140a-n:暫存器
150:應用程式
220:縱橫邏輯
230:計數邏輯
240、570、870:置換邏輯
300、600、900、1800:方塊圖
322a、322b、322c、322d:行
302、620a:第一列
304、306、620c:第三列
308、620d:第四列
310:最後行
400、700、1000:方法
402~422:操作
530:除法邏輯
540:位置酬載邏輯
550、840:比併邏輯
560:排序酬載邏輯
602:表
610:第一半/下半
612:第二半/上半
620b:第二列
620e:第五列
702~716、1002~1024:方塊
830:識別邏輯
850:遮罩邏輯
860:排序遮罩邏輯
902:第一序列
904:第二序列
906、916:遮罩值
908、918:合併後序列
910、920:經排序合併後序列
922:最後經排序合併後序列
1100:處理器管線
1102:擷取級段
1103、1205:合併及排序模組
1104:長度解碼級段
1106:解碼級段
1108:分配級段
1110:重新命名級段
1112:排程級段
1114:暫存器讀取/記憶體讀取級段
1116:執行級段
1118:寫回/記憶體寫入級段
1122:異常處置級段
1124:確認級段
1190:處理器核心
1130:前端單元
1132:分支預測單元
1134:指令快取記憶體單元
1136:指令轉譯後備緩衝器(TLB)
1138:指令擷取單元
1140:解碼單元
1150:執行引擎單元
1152:重新命名/分配器單元
1154、1254:引退單元
1156:排程器單元
1158:實體暫存器檔案單元
1160:執行叢集
1162:執行單元
1164:記憶體存取單元
1170:記憶體單元
1172:資料TLB單元
1174:資料快取記憶體單元
1176:2階(L2)快取記憶體單元
1190、1402A-N、1506、1507:核心
1200、1310、1315、1770、1780、1810:處理器
1201:循序前端
1202:快速排程器/微操作排程器
1203:亂序執行引擎
1204:緩慢/一般浮點排程器/微操作排程器
1206:簡單浮點排程器/微操作排程器
1208、1210:暫存器檔案
1211:執行區塊
1212:執行單元/位址產生單元(AGU)
1214:執行單元/AGU
1216、1218:執行單元/快速ALU/高速ALU執行單元
1220:執行單元/緩慢ALU
1222:執行單元/浮點ALU/浮點執行區塊/浮點單元
1224:執行單元/浮點移動單元/浮點執行區塊/浮點單元
1226:指令預擷取器
1228:指令解碼器
1230:追蹤快取記憶體
1232:微碼ROM
1234:微操作佇列
1300、1700:系統
1320:圖形記憶體控制器集線器(GMCH)
1345:顯示器
1350:輸入/輸出(I/O)控制器集線器(ICH)
1360:外部圖形裝置
1370:周邊裝置
1395:前端匯流排(FSB)
1400、1500:SoC
1404(a):快取記憶體單元
1406:共用快取記憶體單元
1408:整合型圖形邏輯
1410:系統代理單元
1412:互連單元
1414、1672、1682:整合型記憶體控制器單元
1416:匯流排控制器單元
1418:媒體處理器
1420:應用處理器
1424:影像處理器
1426:音訊處理器
1428:視訊處理器
1430:靜態隨機存取記憶體(SRAM)單元
1432:直接記憶體存取(DMA)單元
1440:顯示器單元
1508:匯流排介面單元
1508:快取記憶體控制件
1510:L2快取記憶體
1510:互連體
1520:視訊編解碼器
1525:視訊介面
1530:用戶身份模組(SIM)
1535:啟動ROM
1540:SDRAM控制器
1545:快閃記憶體控制器
1550:周邊控制件
1555:功率控制件
1560:DRAM
1565:快閃記憶體
1570:藍牙模組
1575:3G數據機
1580:GPS
1585:WiFi
1600:系統/多處理器系統
1614、1714:I/O裝置
1616:第一匯流排
1618:匯流排橋接器
1622:鍵盤及/或滑鼠
1624:音訊I/O
1627:通訊裝置
1628:儲存單元
1630:指令/碼及資料
1638:高效能圖形電路
1639:高效能圖形介面
1650:點對點互連體/對點(P-P)介面
1652、1654、1676、1678、1686、1688、1778、1788、1776、1794、1786、1798:點對點(P-P)介面
1670:第一處理器
1680:第二處理器
1690、1790:晶片組
1694、1698:點對點介面電路
1696、1796:介面
1715:舊式I/O裝置
1750、1752、1754:點對點互連體
1772、1782:整合型記憶體及I/O控制邏輯(「CL」)
1820:音訊子系統
1830:顯示子系統
1832:顯示介面
1840:I/O控制器
1850:功率管理
1870:連接性
1872:行動式連接性
1874:無線連接性
1880:周邊連接
1882:至
1884:來自
1904:主記憶體
1906:靜態記憶體
1908:網路介面裝置
1910:視訊顯示單元
1912:文數字輸入裝置
1914:游標控制裝置
1916:信號產生裝置
1918:資料儲存裝置
1922:圖形處理單元
1924:電腦可讀儲存媒體
1926:處理邏輯/軟體/指令
1928:視訊處理單元
1932:音訊處理單元
將自以下給出的詳細描述且自本揭示案之各種實施例之伴隨圖式更充分地理解本揭示案。然而,圖式不應被視為使本揭示案限於特定實施例,但僅用於解釋及理解。
圖1為計算系統之一實施例的方塊圖,該計算系統包括實行指令集架構環境的處理裝置;圖2為例示根據本揭示案之一實施例的用來實行指令集架構執行環境之排序模組的方塊圖;圖3為根據本揭示案之一實施例的於指令集架構執行環境中排序之實例;圖4為例示根據本揭示案之一實施例的用於於指令集架構執行環境中排序之方法的流程圖;圖5為例示根據本揭示案之一實施例的用來實行指令集架構執行環境的合併模組的方塊圖;
圖6為根據本揭示案之一實施例的於指令集架構執行環境中合併之實例;圖7為例示根據本揭示案之一實施例的用於於指令集架構執行環境中合併之方法的流程圖;圖8為例示根據本揭示案之一實施例的用來實行指令集架構執行環境的合併模組的方塊圖;圖9為根據本揭示案之一實施例的於指令集架構執行環境中合併之實例;圖10為例示根據本揭示案之一實施例的用於於指令集架構執行環境中合併之方法的流程圖;圖11A為例示用於處理器之微型架構的方塊圖,本揭示案之一實施例可使用於該處理器中;圖11B為例示根據本揭示案之至少一實施例實行的循序管線及暫存器重新命名級段、亂序發佈/執行管線的方塊圖。
圖12例示根據本揭示案之一實施例的用於處理器之微型架構的方塊圖;圖13為例示系統的方塊圖,本揭示案之實施例可使用於該系統中;圖14為系統的方塊圖,本揭示案之實施例可於該系統中操作;圖15為系統的方塊圖,本揭示案之實施例可於該系統中操作;圖16為根據本揭示案之一實施例之系統單晶片(SoC)
的方塊圖;圖17為根據本揭示案之SoC設計之實施例的方塊圖;圖18例示電腦系統之一實施例的方塊圖;以及圖19例示根據本揭示案之以計算系統之形式的機器的方塊圖。
較佳實施例之詳細說明
本文所揭示的是用於為在計算系統中排序資料及合併經排序資料提供指令集架構環境的實施例。
現有資料排序機構實行於計算系統中之軟體中,該軟體可排序儲存在計算系統中之暫存器中的資料元素。當前資料排序機構耗用許多週期或指令來排序每一資料元素。例如,當前資料排序機構可耗用至少15個週期及12個指令來排序1個資料元素。因此,在大資料應用程式中排序資料可消耗大量指令或週期,此為耗時的。
本揭示案之實施例藉由使用硬體邏輯排序資料元素來克服以上問題,該硬體邏輯諸如縱橫邏輯、計數邏輯及置換邏輯。在一實施例中,縱橫邏輯在n個未排序元素之中的一元素之值與n個經排序元素之中的另一元素之值相同時使n個未排序元素(在暫存器中)左移特定數目之位元,將位置值添加至經左移n個元素中每一者以產生變換後n個元素,且將變換後n個元素中每一者與變換後n個元素中之其他元素進行比較。在一實施例中,計數邏輯基於比較產生相對順序之n個元素之所得序列,且置換
邏輯置換n個元素之所得序列且將n個經排序元素之置換後序列輸出至暫存器。在一實施例中,縱橫邏輯耗用4個週期,計數邏輯耗用1個週期,且置換邏輯耗用1個週期。因此,總共6個週期可用來排序16個資料元素。因此,本揭示案之實施例使資料元素之排序比現有資料排序機構加快至少35倍。
現有經排序資料合併機構實行於計算系統中之軟體中,該軟體可合併儲存在計算系統中之暫存器中的經排序資料元素。當前資料合併機構每次一個地合併每一資料元素,此可耗用許多週期或指令。例如,對於16個元素,每一資料元素之合併可耗用約每合併15個週期及12個指令。
本揭示案之實施例藉由實行硬體邏輯以進行合併操作來克服合併經排序資料元素之以上問題,該硬體邏輯諸如除法邏輯、位置酬載邏輯、比併邏輯、排序酬載邏輯及置換邏輯。在一實施例中,除法邏輯將n個元素(在暫存器中)之經排序輸入序列之兩個集合分成兩半:下半及上半。在一實施例中,位置酬載邏輯附接位置識別符作為用於上半及下半兩者中的n個元素中每一者之酬載。在一實施例中,比併邏輯合併上半中的n個元素中每一者與下半中的n個元素中每一者。排序酬載邏輯隨後可使用合併後經排序n個元素中每一者之位置來產生n個元素之經排序合併後序列。在一實施例中置換邏輯置換n個元素之所得經排序合併後序列,且將n個經排序元素之置換後經排
序合併後序列輸出至暫存器。對於16個元素,本揭示案之實行方案可利用2個週期或指令一次合併每一資料元素(亦即,藉由每週期合併8個元素),從而導致與現有經排序資料合併機構相比的8倍效能速度。
替代地,本揭示案之實施例可藉由實行其他硬體邏輯來克服合併經排序資料元素之以上問題,該其他硬體邏輯諸如識別邏輯、比併邏輯、遮罩邏輯、排序遮罩邏輯及置換邏輯。在一實施例中,識別邏輯自n個元素(在暫存器中)之經排序輸入序列之兩個集合之第一輸入序列識別n個元素之多個集合,且自第二輸入序列識別n個元素之多個集合。比併邏輯可首先將來自第一序列的該等多個集合中每一者中的所識別元素中每一者與來自第二序列的該等多個集合中中每一者中所識別元素中每一者進行比較。比併邏輯另外將來自第二序列的該等多個集合中每一者中的所識別元素中每一者與來自第一序列的該等多個集合中每一者的所識別元素中每一者進行比較。在一實施例中,遮罩邏輯基於第一比較自來自第一序列的該等多個集合中每一者選擇所識別元素,且亦基於第二比較自來自第二序列的該等多個集合中每一者選擇所識別元素。遮罩邏輯隨後可合併出自來自第一序列的該等多個集合中每一者的選定的所識別元素與出自來自第二序列的該等多個集合中每一者的選定的所識別元素。在一實施例中,排序遮罩邏輯排序合併後選定的所識別元素以產生n個元素之經排序合併後序列。在一實施例中,置換邏輯置換n個元素之
所得經排序合併後序列,且將n個經排序元素之置換後經排序合併後序列輸出至暫存器。
因此,與一次合併一資料元素之先前解決方案相反,本揭示案之實施例藉由同時合併多個資料元素改良與合併資料元素有關的處理速度。此外,本揭示案之實施例合併多個經排序輸入序列以產生全域經排序輸出。
圖1為實行用於處理裝置之指令集架構(ISA)的計算系統100的方塊圖。計算系統100之一些實例可包括但不限於具有大範圍處理能力的計算裝置,諸如個人電腦(PC)、伺服器電腦、個人數位助理(PDA)、智慧型電話、膝上型電腦、隨身型易網機電腦、平板裝置,及/或能夠執行指令之集合(順序的或以其他方式)的任何機器,該等指令指定將要由該機器採取的動作。
計算系統100可包括例如用來處置用於計算系統100之操作的處理裝置105。處理裝置105可包含位於分離組件中的一或多個處理裝置(亦稱為處理器),或替代地,體現於單個積體電路(IC)中的一或多個處理核心,該單個積體電路(IC)佈置在例如系統單晶片(SOC)組態中。在一些實施例中,處理裝置為一般用途處理裝置。例如,處理裝置105包括通常用作中央處理單元(CPU)的類型的處理裝置。在其他實施例中,處理裝置可為特殊用途處理裝置。特殊用途處理器之實例包括但不限於共處理裝置、圖形處理裝置、通訊處理裝置、網路處理裝置、密碼處理裝置、嵌入式處理裝置、數位信號處理裝置(DSP)等。處
理裝置105可連接至插座。在一些實施例中,若存在多個處理裝置,則處理裝置105可連接至同一插座或不同插座。
計算系統100可包括由處理裝置105執行的一或多個各種應用程式150。用來實行應用程式150(亦即電腦可執行程式)的指令可在處理裝置105中執行。指令可包括但不限於加法操作、移位操作、比較操作、計數操作、轉換操作、置換操作及混洗操作。
雖然處理裝置105及應用程式150在圖1中經描繪為單個、差別組件,但此等組件可一起實行於單個裝置中或網路連接在一起操作的多個不同裝置之不同組合中。裝置之實例可包括但不限於伺服器、主機電腦、網路連接電腦、基於處理的裝置,及類似類型之系統及裝置。
處理裝置105可包括諸如排序模組110、合併模組120及一或多個暫存器140a-n的模組。在一實施例中,模組為諸如進行某些操作的硬體電路的硬體組件。模組可為與電腦系統之處理裝置中的其他組件互動的自含組件。
排序模組110可執行對應於應用程式150的指令。指令可包括使排序模組110排序n個資料元素(元素)之序列的程式碼,該等資料元素中每一者具有特定數目之位元。特定而言,指令使排序模組110進行活動,該等活動諸如但不限於:讀取/檢索暫存器140a-n中的未排序n個元素之對應位置中的該等未排序n個元素之序列;使未排序元素左移log(n)個位元;將對應位置之值添加至移位後
未排序n個元素中每一者,從而導致變換後n個元素;將變換後n個元素中每一者與變換後n個元素中之其他元素進行比較以產生相對順序之n個元素之所得序列;及置換n個元素之所得序列,以將n個經排序元素之置換後序列輸出至暫存器140a-n。包括指令、資料等(未示出)的資訊可儲存在記憶體130中。
合併模組120可執行對應於應用程式150的指令。指令可包括用來使合併模組120將經排序序列之兩個集合合併成合併後序列且排序合併後序列以產生經排序合併後序列的程式碼。經排序序列之兩個集合中每一者包括n個元素,該等元素中每一者具有特定數目之位元。
在一實施例中,指令使合併模組120進行活動,該等活動諸如但不限於:讀取/檢索包括暫存器140a-n中的經排序n個元素之對應位置中的該等經排序n個元素的經排序序列之兩個集合;在兩半,亦即下半及上半之間劃分n個元素之經排序序列之兩個集合;附接位置作為用於上半及下半兩者中的n個元素中每一者之酬載;合併上半中的n個元素中每一者與下半中的n元素中每一者;及使用合併後經排序n個元素中每一者之位置來產生n個元素之所得經排序合併後序列;及置換n個元素之所得經排序合併後序列,以將n個經排序元素之置換後經排序合併後序列輸出至暫存器140a-n。包括指令、資料等(未示出)的資訊可儲存在記憶體130中。
在另一實施例中,指令使合併模組120進行
活動,該等活動諸如但不限於:讀取/檢索經排序序列之兩個集合,該兩個集合中每一者包括暫存器140a-n中的n個元素之對應位置中的該等n個元素;識別來自第一序列的n個元素之多個集合及來自第二序列的n個元素之多個集合;將來自第一序列的該等多個集合中每一者中的所識別元素中每一者與來自第二序列的該等多個集合中每一者中的所識別元素中每一者進行比較;基於比較自來自第一序列的該等多個集合中每一者選擇所識別元素;將來自第二序列的該等多個集合中每一者的所識別元素中每一者與來自第一序列的該等多個集合中每一者中的所識別元素中每一者進行比較;基於比較自來自第二序列的該等多個集合中每一者選擇所識別元素;合併出自來自第一序列的該等多個集合中每一者的選定的所識別元素與出自來自第二序列的該等多個集合中每一者的選定的所識別元素;排序合併後選定的所識別元素以產生n個元素之所得經排序合併後序列;及置換n個元素之所得經排序合併後序列,以將n個經排序元素之置換後經排序合併後序列輸出至暫存器140a-n。包括指令、資料等(未示出)的資訊可儲存在記憶體130中。
記憶體130可包括以固定或可移除格式的隨機存取記憶體(RAM)、非依電性記憶體或唯讀記憶體(ROM)。RAM可包括用來在計算系統100之操作期間保持資訊的記憶體,諸如,例如,靜態RAM(SRAM)或動態RAM(DRAM)。ROM可包括諸如用來在計算系統100啟
動時提供指令的計算裝置BIOS記憶體的記憶體、諸如電子可規劃ROM(EPROM)的可規劃記憶體、快閃記憶體等。在一實施例中,記憶體130經保護,使得記憶體130為藉由排序模組110且藉由合併模組120可存取的及/或可修改的。
暫存器140a-n可包括在計算系統100處於排序狀態中以能夠讀取資料中的未排序元素時藉由排序模組110進行的指令之執行期間使用的暫存器及/或儲存器。在一實施例中,暫存器為單指令多資料(SIMD)暫存器。在一實施例中,暫存器140a-n為向量資料暫存器。暫存器140a-n可包括但不限於用於暫時值之暫存器、堆疊指標、指向資料元素之指標、用於在計算系統100中執行的指令之暫時儲存器等。在一實施例中,暫存器140a-n可經保護以為僅藉由排序模組110及合併模組120可存取的及/或可修改的。暫存器140a-n可為在排序模組110及合併模組120外側執行的軟體可讀取的。
圖2例示根據本揭示案之一實施例的處理裝置205,該處理裝置包括用來實行指令集架構環境之排序模組210。在一實施例中,處理裝置205與以上關於圖1所描述之處理裝置105相同。在一實施例中,排序模組210與以上關於圖1所描述之排序模組110相同。排序模組210可包括諸如縱橫邏輯220、計數邏輯230及置換邏輯240的邏輯。在一實施例中,邏輯為諸如進行某些操作的硬體電路的硬體組件。邏輯可為與電腦系統之處理裝置中的其他
組件互動的自含組件。
更多或更少組件可包括在排序模組210中而不失一般性。
在一實施例中,排序模組210自暫存器接收未排序n個資料元素(元素)之序列之輸入,該暫存器諸如關於圖1所描述之暫存器140a-n。在一實施例中,資料元素為經定義來用於處理的資料單元。資料元素可藉由大小及類型定義。在一實施例中,暫存器140a-n為來源暫存器。n個元素中每一者包括特定數目之位元。在一實施例中,暫存器140a-n中每一者為包括各自32個位元之16個元素的512位元暫存器。在一實施例中,暫存器140a-n中每一者為包括各自64個位元之8個元素的512位元暫存器。縱橫邏輯220將未排序n個元素以縱橫方式置放在該等未排序n個元素之對應位置中以幫助排序元素。在一實施例中,縱橫邏輯220為縱橫式交換機,該縱橫式交換機包括以陣列組態佈置的交換機集合。
作為一實例,n個未排序元素為由3 3 1 2組成的十進制數之4個元素,該等元素中每一者包括128位元暫存器中的32個位元。圖3為描繪根據一示例性實施例的藉由4X4縱橫進行的輸入序列之概念性排序的方塊圖300。如圖3中所示,十進制數3 3 1 2為在單獨行322a、322b、322c及322d中置放在第一列302中的輸入。第二列304在單獨行中顯示位置向量值0 1 2 3。因此,用於數3 3 1 2的位置向量值分別為0 1 2 3。3之二進制值為0011,1
之二進制值為0001且2之二進制值為0010。
在一實施例中,當n個未排序元素之中的至少一元素之值與n個未排序元素之中的另一元素之值相同時,縱橫邏輯220使未排序n個元素中每一者左移log(n)個位元。在一實施例中,log(n)個位元為n中的位元之數目之一半。在一實施例中,進行左移以處置輸入的未排序n個元素之值中的重複。在其他實施例中,若在輸入的未排序n個元素之此等值中不存在重複,且硬體電路知道在此等值中無重複,則不進行左移。在一實施例中,硬體電路自硬體電路之程式設計者或使用者知道在此等未排序n個元素之輸入值中無重複。
返回至圖3中之實例,此等4個未排序元素中每一者經左移2個位元。二進制值0011之左移導致1100,該1100翻譯為12之十進制值。二進制值0001之左移導致0100,該0100翻譯為4之十進制值。二進制值0010之左移導致1000,該1000翻譯成8之十進制值。因此,十進制數3 3 1 2之左移值分別為12 12 4 8。12 12 4 8中每一者在其對應於其未排序數3 3 1 2的單獨行中經插入第三列306中。在一實施例中,縱橫邏輯220將未排序n個元素中每一者之對應位置的位置向量值添加至左移未排序n個元素中每一者。在一實施例中,加法之結果輸出變換後n個元素,該等變換後n個元素維持未排序n個元素之輸入序列之相對順序而無任何複製值。返回至圖3中之實例,將位置向量值0 1 2 3添加至對應左移值12 12 4 8中每一者,從而
分別導致在第四列308中的十進制值12 13 6 11。
在一實施例中,縱橫邏輯220將變換後n個元素中每一者與自身及變換後n個元素中之其他元素進行比較。在一實施例中,縱橫邏輯220在將變換後n個元素中每一者與自身及變換後n個元素中之其他元素進行比較時指派致能或失能指示符中之一個。在一實施例中,致能指示符包括1之值,且失能指示符包括0之值。在一實施例中,縱橫邏輯220將用於變換後n個元素中每一者的1或0之此指派值置放在該等指派值之對應位置中。在一實施例中,未排序n個元素將以升序排序。因此,縱橫邏輯220在比較變換後n個元素中每一者時進行大於操作。在一實施例中,縱橫邏輯220在變換後n個元素中每一者大於變換後n個元素中之其他元素時指派1之值,且在變換後n個元素中每一者不大於自身及變換後n個元素中之其他元素時指派0之值。在一實施例中,未排序n個元素將以降序排序。因此,縱橫邏輯220在比較變換後n個元素中每一者時進行小於操作。在一實施例中,縱橫邏輯220在變換後n個元素中每一者小於變換後n個元素中之其他元素時指派1之值,且在變換後n個元素中每一者小於自身及變換後n個元素中之其他元素時指派0之值。
返回至圖3中之實例,將所得值12 13 6及11中每一者與自身及其他所得值進行比較。在此實例中,比較操作為大於操作。例如,將12與自身、13、6及11進行比較以決定12是否大於12、13、6及11中每一者。因為12
不大於12,所為所指派值為0;因為12不大於13,所以所指派值為0;因為12大於6,所以所指派值為1;且因為12大於11,所以所指派值為1。因此,具有0之位置向量值的行322a中之值為0 0 1 1。針對值12、6及11進行使用大於操作的類似比較,此導致具有1之位置向量值的行322b中之值為1 0 1 1,具有2之位置向量值的行322c中之值為0 0 0 0,且具有位置向量3的行322d中之值為0 0 1 0。
在一實施例中,計數邏輯230計數指派給變換後n個元素之對應位置中的該等變換後n個元素中每一者的1之總數,以便產生相對順序之經排序n個元素。返回圖3中之實例,指派給所得值之對應位置向量值0 1 2及3中的所得值12 13 6及11中每一者的1之總數分別為2 3 0及1,如最後行310中所反映。因此,2 3 0及1分別為3 3 1 2之未排序輸入數之相對順序。在一實施例中,置換邏輯240置換(或混洗)相對順序之經排序n個元素,且將置換後經排序n個元素輸出至暫存器140a-n中之一個。在一實施例中,暫存器140a-n中之一個為目的地暫存器。在一實施例中,目的地暫存器與來源暫存器相同。在一實施例中,目的地暫存器不同於來源暫存器。在一實施例中,置換邏輯240在目的地暫存器中為經排序n個元素中每一者指派對應於用於來源暫存器中的未排序n個元素中每一者之位置的一位置,且將經排序n個元素推擠至目的地暫存器中的該等經排序n個元素之對應位置。
雖然圖3例示4 x 4縱橫作為描繪輸入序列之
概念性排序的n x n之一實例,但另一實例為具有16個位置向量值及十進制數之16個未排序元素的16 x 16縱橫,該等16個未排序元素中每一件在512位元暫存器中包括32個位元,從而產生相對順序之256個位元之16個經排序元素。
圖4為根據本揭示案之一實施例的用於在處理裝置之指令集架構環境中以升序排序資料之方法400的流程圖。方法400可藉由處理邏輯進行,該處理邏輯可包括硬體(例如,電路、專用邏輯、可規劃邏輯、微碼等)、軟體(諸如,在處理裝置、一般用途電腦系統或專用機器上執行之指令)、韌體,或上述各項之組合。在一實施例中,方法400可部分地藉由以上關於圖1及圖2所描述之排序模組110及210進行。
出於解釋之簡單性,方法400經描繪且描述為一系列動作。然而,根據本揭示案之動作可以各種順序及/或並行地且在本文中不存在且描述其他動作的情況下發生。此外,並非所有所例示動作可經進行來實行根據所揭示主題之方法400。另外,熟習此項技術者應理解並瞭解,方法400或者可藉由狀態圖表示為一系列相關狀態或表示為事件。
在方塊402處,處理邏輯自來源暫存器檢索來自未排序n個資料元素(元素)之對應位置的該等未排序n個資料元素(元素)之輸入序列。在方塊404處,使未排序n個元素左移特定數目之位元。在方塊406處,以對應位置之值添加左移後未排序n個元素中每一者,從而導致變換
後n個元素。在一實施例中,變換後n個元素維持未排序n個元素之輸入序列之相對順序。在一實施例中,變換後n個元素消除未排序n個元素中的任何複製值。在方塊408處,將變換後n個元素中每一者與自身且與變換後n個元素中之其他元素進行比較,以產生相對順序之n個元素之所得序列。在方塊410處,當與作為變換後n個元素的自身進行比較的變換後n個元素中每一者不大於自身時,指派0之值。在方塊412處,決定變換後n個元素中每一者是否大於變換後n個元素中之其他元素。
隨後,在方塊414處,當在方塊412處決定變換後n個元素中每一者不大於變換後n個元素中之其他元素時,指派0之值。在方塊416處,當在方塊412處決定變換後n個元素中每一者大於變換後n個元素中之其他元素時,指派1之值。在方塊418處,計數指派給變換後n個元素中每一者的1之總數,此導致相對順序之經排序n個元素。在方塊420處,置換經排序n個元素。在一實施例中,置換包括在目的地暫存器中為經排序n個元素中每一者指派一位置,該位置對應於用於來源暫存器中之未排序n個元素中每一者之位置。在方塊422處,將置換後經排序n個元素輸出至目的地暫存器。在一實施例中,目的地暫存器與來源暫存器相同。在一實施例中,目的地暫存器不同於來源暫存器。在一實施例中,為以降序排序,在方塊412處進行小於操作,使得在方塊412處,將決定變換後n個元素中每一者是否小於變換後n個元素中之其他元素。
圖5為例示根據本揭示案之一實施例的處理裝置505的方塊圖,該處理裝置包括用來實行指令集架構環境的合併模組520。在一實施例中,處理裝置505與以上關於圖1所描述之處理裝置105相同。在一實施例中,合併模組520與以上關於圖1所描述之合併模組120相同。合併模組520可包括諸如除法邏輯530、位置酬載邏輯540、比併邏輯550、排序酬載邏輯560及置換邏輯570的邏輯。在一實施例中,邏輯為諸如進行某些操作的硬體電路的硬體組件。邏輯可為與電腦系統之處理裝置中的其他組件互動的自含組件。更多或更少組件可包括在合併模組520中而不失一般性。
在一實施例中,合併模組520自至少一暫存器接收n個元素之經排序序列之兩個集合之輸入,該至少一暫存器諸如關於圖1所描述之暫存器140a-n。在一實施例中,暫存器140a-n中之一個為來源暫存器。n個元素中每一者包括特定數目之位元。在一實施例中,暫存器140a-n中之一個為包括各自32個位元之16個元素的512位元暫存器。在一實施例中,暫存器140a-n中之一個為包括各自64個位元之8個元素的512位元暫存器。在一實施例中,暫存器140a-n中之一個為包括各自32個位元之4個元素的128位元暫存器。在一實施例中,除法邏輯530在兩半,亦即第一半及第二半之間劃分n個元素之輸入經排序序列之兩個集合,使得n個元素之輸入經排序序列之一集合在第一半中,且n個元素之輸入經排序序列之另一集合
在第二半中。第一半及第二半中的n個元素中每一者包括該等元素之對應位置以幫助合併元素。
作為一實例,n個元素之兩個集合包括4個元素,其中每一元素為十進制數。在實例中,十進制數可為1 4 7 8及3 7 10 15,此等數中每一者為32個位元。圖6為描繪使用合併模組520的示範性合併操作之概念性圖解的方塊圖600。如圖6中所示,4個元素之經排序序列之示例性集合分別經分成表602之第一半(例如下半)610及第二半612(例如上半)。兩個集合之經排序序列中之第一集合之十進制數1 4 7 8在表602之第二列620b中的前四行中置放在下半610中,且兩個集合之經排序序列中之第二集合3 7 10 15在表602之第二列中的後四行中置放在上半612中。第一列620a在單獨行中顯示位置向量值0至7。因此,用於下半集合之數1 4 7 8的位置向量值分別為0 1 2 3,且用於上半集合之數3 7 10 15的位置向量值分別為4 5 6 7。
在一實施例中,位置酬載邏輯540將對應位置附接至下半610及上半612中之n個元素中每一者。返回至圖6中之實例,對應位置向量值0 1 2 3經附接至下半部610中的十進制數1 4 7 8,且對應位置向量值4 5 6 7經附接至上半612中的十進制數3 7 10 15,如在第三列中之括號中所例示。因而,第三列620c之下半610包括1[pos 0]、4[pos 1]、7[pos 2]、8[pos 3],且第三列620c之上半612包括3[pos 4]、7[pos 5]、10[pos 6]及15[pos 7]。在一實施例中,比併邏輯550合併下半610中的n個元素中
每一者與上半中的n個元素中每一者,從而導致n個元素之合併後序列,且將對應位置附接至下半610及上半612中的合併後n個元素中每一者,如表602之第四列620d中所示。
在一實施例中,合併包括將下半中的n個元素中每一者之值與上半中的n元素中每一者進行比較,及將上半中的n個元素中每一者之值與下半中的n個元素中每一者進行比較。如以上所論述,下半中的n個元素中每一者之值來自經排序輸入序列之兩個集合中之一集合,且上半中的n個元素中每一者之值來自經排序輸入序列之兩個集合中之另一集合(亦即,一個合併兩個經排序輸入以產生全域經排序輸出)。當使用比併合併過程時,比較之數目為n*log2 n。
此等比較隨後導致2n個元素之經排序序列,該等2n個元素包括以具有下半中的最低值之元素開始且以具有上半中的最高值之元素結束的列中的n個元素。在一實施例中,比較之數目為n值之平方(例如,當n=8時,比較之數目為64;當n=16時,比較之數目為256)。
在一實施例中,合併包括比較輸入n個元素之值,該等輸入n個元素中的第一半輸入元素(n/2個元素)來自一經排序輸入序列,且剩餘一半輸入元素(n/2個元素)來自另一經排序輸入序列(亦即一個合併兩個經排序輸入以產生全域經排序輸出)。在圖6中所涉及的實例中,第一半可為下半且第二半可為上半,或反之亦然。當使用比併合併過程時,比較之數目為n*log2 n。
返回圖6中之實例,下半中的十進制數1 4 7 8中每一者與上半中的十進制數3 7 10及15中每一者合併,從而導致8個元素之合併後序列。8個元素之此合併後序列包括下半中的1 3 4 7及上半中的7 8 10 15,並且該等元素之所附接對應位置向量值在括號中,使得第三列620c中的所得合併後序列包括下半中的1[pos 0]、3[pos 4]、4[pos 1]、7[pos 2]及上半中的7[pos 5]、8[pos 3]、10[pos 6]、15[pos 7]。
在一實施例中,排序酬載邏輯560檢索下半及上半中的合併後n個元素中每一者之對應位置,作為由n個元素組成的所得經排序合併後序列。參考圖6中之實例,來自表602之第三列620c的下半中的對應位置向量值0 4 1 2中每一者經檢索且置放在第四列之下半中,且來自第三列的上半中的對應位置向量值5 3 6 7中每一者經檢索且置放在第四列620d之上半中。因此,所得經排序合併後序列為(具有位置向量值)0 4 1 2 5 3 6 7,如第五列620e中所示。
在一實施例中,置換邏輯570置換(或混洗)n個元素之經排序合併後序列,且將置換後經排序合併後n個元素輸出至暫存器140a-n中之一個。在一實施例中,暫存器140a-n中之一個為目的地暫存器。在一實施例中,目的地暫存器與來源暫存器相同。在一實施例中,目的地暫存器不同於來源暫存器。在一實施例中,置換邏輯570在目的地暫存器中為經排序合併後n個元素中每一者指派對
應於用於來源暫存器中的經排序n個元素中每一者之位置的一位置,且將經排序合併後n個元素推擠至目的地暫存器中的該等經排序合併後n個元素之對應位置。
圖7為根據本揭示案之一實施例的用於在處理裝置之指令集架構環境中合併經排序序列之兩個集合及排序合併後序列之方法700的流程圖。方法700可藉由處理邏輯進行,該處理邏輯可包括硬體(例如,電路、專用邏輯、可規劃邏輯、微碼等)、軟體(諸如,在處理裝置、一般用途電腦系統或專用機器上執行之指令)、韌體,或上述各項之組合。在一實施例中,方法700可部分地藉由以上關於圖1及圖5所描述之合併模組120及520進行。
出於解釋之簡單性,方法700經描繪且描述為一系列動作。然而,根據本揭示案之動作可以各種順序及/或並行地且在本文中不存在且描述其他動作的情況下發生。此外,並非所有所例示動作可經進行來實行根據所揭示主題之方法700。另外,熟習此項技術者應理解並瞭解,方法700或者可藉由狀態圖表示為一系列相關狀態或表示為事件。
在方塊702處,處理邏輯自來源暫存器檢索來自n個資料元素(元素)之對應位置的該等n個資料元素(元素)之經排序序列之兩個集合之輸入。在方塊704處,在兩半,亦即n個元素中每一者具有其對應位置的第一半及第二半之間劃分n個元素之經排序輸入序列之兩個集合。在方塊706處,將對應位置之值附接至第一半中及第二半
中的n個元素中每一者。在方塊708處,將第一半中的n個元素中每一者與第二半中的n個元素中每一者合併,從而導致n個元素之合併後序列。因此,兩個經排序輸入序列經合併以產生全域經排序輸出。在方塊710處,將對應位置之值附接至第一半中及第二半中的合併後n個元素中每一者。
隨後,在方塊712處,自第一半及第二半檢索合併後n個元素之對應位置值中每一者,從而導致n個元素之經排序合併後序列。在方塊714處,置換n個元素之經排序合併後序列。在一實施例中,置換操作包括在目的地暫存器中為經排序合併後n個元素中每一者指派一位置,該位置對應於用於來源暫存器中的經排序n個元素中每一者之位置。在方塊716處,將n個元素之置換後經排序合併後序列輸出至目的地暫存器。在一實施例中,目的地暫存器與來源暫存器相同。在一實施例中,目的地暫存器不同於來源暫存器。
圖8為例示根據本揭示案之一實施例的處理裝置805的方塊圖,該處理裝置包括用來實行指令集架構環境的合併模組820。在一實施例中,處理裝置805與以上關於圖1所描述之處理裝置105相同。在一實施例中,合併模組820與以上關於圖1所描述之合併模組120相同。合併模組820可包括諸如識別邏輯830、比併邏輯840、遮罩邏輯850、排序遮罩邏輯860及置換邏輯870的邏輯。在一實施例中,邏輯為諸如進行某些操作的硬體電路的硬體組
件。邏輯可為與電腦系統之處理裝置中的其他組件互動的自含組件。更多或更少組件可包括在合併模組820中而不失一般性。
在一實施例中,合併模組820自暫存器中至少一個接收n個元素之經排序序列之兩個集合之輸入,該暫存器諸如關於圖1所描述之暫存器140a-n。在一實施例中,暫存器140a-n中之一個為來源暫存器。n個元素中每一者包括特定數目之位元。在一實施例中,暫存器140a-n中之一個為包括各自32個位遠之16個元素的512位元暫存器。在一實施例中,暫存器140a-n中之一個為包括各自64個位元之8個元素的512位元暫存器。在一實施例中,識別邏輯830識別來自第一經排序序列的n個元素之第一集合及來自第二經排序序列的n個元素之第二集合。
圖9為描繪根據本揭示案之實施例的合併操作之概念性圖解的方塊圖900。圖9中所描繪之實例包括n個元素之第一經排序輸入序列,其中第一經排序序列包括由1 2 7 8 9 14 17 17組成的十進制數之8個元素,此等數中每一者包括32個位元。另外,展示n個元素之第二經排序輸入序列,其中第二經排序序列包括由4 5 6 10 14 17 17 18組成的十進制數之8個元素,此等數中每一者亦包括32個位元。在一實施例中,識別邏輯830識別來自第一經排序序列的n個元素之第一集合及來自經排序第二序列的n個元素之第一集合。返回至圖9中之實例,來自第一序列902的第一集合包括前四個元素1 2 7 8,且來自第二序列
904的第一集合包括前四個元素4 5 6 10。
在一實施例中,比併邏輯840合併來自第一經排序序列的元素之所識別第一集合及來自第二經排序序列的元素之第一集合。比併邏輯840可將第一經排序序列之所識別第一集合中的每一元素與第二經排序序列之所識別第一集合中的每一元素進行比較,且基於比較指派一值。類似地,比併邏輯840可將第二經排序序列之第一集合中的每一元素與第一經排序序列之第一集合中的每一元素進行比較,且基於比較指派一值。
在一實施例中,n個元素將以降序排序。因此,比併邏輯840在將第一序列中的n個元素之所識別集合中每一者與第二序列進行比較時進行小於操作,且反之亦然。在一實施例中,當第一序列中的n個元素之所識別集合中每一者小於或等於第二序列中的n個元素之所識別集合中至少一其他元素時,比併邏輯840指派1之值,且反之亦然。在一實施例中,當第一序列中的n個元素之所識別集合中每一者不小於第二序列中的n個元素之所識別集合中至少一其他元素時,比併邏輯840指派0之值,且反之亦然。
在另一實施例中,n個元素將以升序排序。因此,比併邏輯840在將第一序列中的n個元素之所識別集合中每一者與第二序列進行比較時進行大小操作,且反之亦然。在一實施例中,當第一序列中的n個元素之所識別集合中每一者大於或等於第二序列中的n個元素之所識別
集合中至少一其他元素時,比併邏輯840指派1之值,且反之亦然。在一實施例中,當第一序列中的n個元素之所識別集合中每一者不大於第二序列中的n個元素之所識別集合中至少其他元素時,比併邏輯840指派0之值,且反之亦然。
返回至圖9中之實例,將第一序列902中的元素1 2 7 8中每一者與第二序列904中的元素4 5 6 10中每一者進行比較。在此實例中,比較為小於操作,使得第一序列中的十進制值1與其他十進制值進行比較,以決定該十進制值1是否小於或等於該等值(例如,第二序列中的4 5 6 10中至少一個),類似地,第一序列中的2經比較以決定2是否小於或等於第二序列中的4 5 6 10中至少一個,等等。因此,為第一序列之所有元素1 2 7 8指派1 1 1 1之遮罩值906。此外,將第二序列中的元素4 5 6 10中每一者與第一序列中的元素1 2 7 8中每一者進行比較。因此,為第二序列之所有元素4 5 6 10指派1 1 1 0之遮罩值906。
在一實施例中,遮罩邏輯850選擇第一序列之第一集合中以1之值指派的該等元素,且選擇第二序列之第一集合中以1之值指派的該等值。此等選定的元素藉由遮罩邏輯850聯合在一起以形成合併後序列。返回至圖9中之實例,第一序列中的元素1 2 7 8中每一者經選擇,且在第二序列中,元素4 5 6經選擇且聯合在一起,從而導致1 2 7 8 4 5 6之合併後序列908。在一實施例中,排序遮罩邏輯860排序合併後序列,從而導致元素之經排序合併
後序列。在一實施例中,排序遮罩邏輯860使用如以上所描述之圖1及圖2之排序模組110及210來排序合併後序列。返回至圖9中之實例,經排序合併後序列910為1 2 4 5 6 7 8。
在一實施例中,藉由識別邏輯830、比併邏輯840、遮罩邏輯850及排序遮罩邏輯860針對來自第一序列的n個元素之第二集合及來自第二序列的n個元素之第二集合重複以上過程。第一經排序輸入序列之n個元素之第二集合可包括來自第一序列中的n個元素之第一集合的未經合併之至少一元素。第二經排序序列之n個元素之第二集合可包括來自第二序列中的n個元素之第一集合的未經合併之至少一元素。
參考回圖9中之實例,在第一序列中所識別的元素之第二集合為9 14 17 17,且在第二序列中所識別的元素之第二集合為10 14 17 17。應注意,來自第二序列之第一集合的元素10未經合併,且因此經識別且包括在第二序列之第二集合中。比併邏輯840之出自來自第一序列的元素(如由身份邏輯830識別)之所識別第二集合的結果具有1 1 1 1之遮罩值916,且比併邏輯840之出自來自第二序列的元素(如由身份邏輯830識別)的元素之所識別集合的結果亦具有1 1 1 1之遮罩值916。因而,遮罩邏輯850選擇來自第一序列的所有元素9 14 17 17及來自第二序列的所有元素10 14 17 17,且將該等元素聯合成9 14 17 17 10 14 17 17之合併後序列918。排序遮罩邏輯860排序合
併後序列,從而導致9 10 14 14 17 17 17 17之經排序合併後序列920。
在一實施例中,由識別邏輯830、比併邏輯840、遮罩邏輯850及排序遮罩邏輯860針對來自第一經排序輸入序列的n個元素之剩餘集合及來自第二經排序輸入序列的n個元素之剩餘集合重複以上過程,直至第一序列及第二序列中的所有元素藉由排序遮罩邏輯860合併、排序且輸出為n個元素之最後經排序合併後序列為止。返回至圖9中之實例,最後經排序合併後序列922為1 2 4 5 6 7 8 9 10 14 17 17 17 17 18。因此,兩個經排序輸入序列經合併以產生全域經排序輸出。
在一實施例中,置換邏輯870置換(或混洗)n個元素之最後經排序合併後序列,且將置換後經排序合併後n個元素輸出至暫存器140a-n中之一個。在一實施例中,暫存器140a-n中之一個為目的地暫存器。在一實施例中,目的地暫存器與來源暫存器相同。在一實施例中,目的地暫存器不同於來源暫存器。在一實施例中,置換邏輯870在目的地暫存器中為經排序合併後n個元素中每一者指派對應於用於來源暫存器中的經排序n個元素中每一者之位置的一位置,且將經排序合併後n個元素推擠至目的地暫存器中的該等經排序合併後n個元素之對應位置。
圖10為根據本揭示案之一實施例的用於於處理裝置之指令集架構環境中合併資料之方法1000的流程圖。方法1000可藉由處理邏輯進行,該處理邏輯可包括
硬體(例如,電路、專用邏輯、可規劃邏輯、微碼等)、軟體(諸如,在處理裝置、一般用途電腦系統或專用機器上執行之指令)、韌體,或上述各項之組合。在一實施例中,方法1000可部分地由以上關於圖1及圖2所描述之排序模組110及210進行。
出於解釋之簡單性,方法1000經描繪且描述為一系列動作。然而,根據本揭示案之動作可以各種順序及/或並行地且在本文中不存在且描述其他動作的情況下發生。此外,並非所有所例示動作可經進行來實行根據所揭示主題之方法1000。另外,熟習此項技術者應理解並瞭解,方法1000或者可藉由狀態圖表示為一系列相關狀態或表示為事件。
在方塊1002處,處理邏輯自來源暫存器檢索來自n個資料元素(元素)之對應位置的該等n個資料元素(元素)之經排序序列之兩個集合之輸入。在方塊1004處,識別來自第一經排序輸入序列的n個元素之第一集合及來自第二經排序輸入序列的n個元素之第一集合。在方塊1006處,將第一序列之第一集合中的元素中每一者與第一序列之第一集合中的元素中每一者進行比較。在方塊1008處,基於在方塊1006處進行的比較將1之值指派給第一序列之第一集合中的元素。在一實施例中,序列以升序合併,使得當決定第一序列之第一集合中的元素大於或等於第二序列中之第一集合中的元素中至少一個時,將1之值指派給第一序列中之第一集合中的元素。在另一實施例中,序
列以降序合併,使得當決定第一序列之第一集合中的元素小於或等於第二序列中之第一集合中的元素中至少一個時,將1之值指派給第一序列中之第一集合中的元素。
在方塊1010處,基於在方塊1006處之比較將0之值指派給第一序列中之第一集合中的元素。在一實施例中,序列以升序合併,使得當決定第一序列之第一集合中的元素不大於第二序列中之第一集合中的元素中至少一個時,將0之值指派給第一序列中之第一集合中的元素。在另一實施例中,序列以降序合併,使得當決定第一序列之第一集合中的元素不小於第二序列中之第一集合中的元素中至少一個時,將0之值指派給第一序列中之第一集合中的元素。
隨後,在方塊1012處,將第二序列之第一集合中的元素中每一者與第二序列之第一集合中的元素中每一者進行比較。隨後,在方塊1014處,基於在方塊1012處進行的比較將1之值指派給第二序列之第一集合中的元素。在一實施例中,序列以升序合併,使得當決定第二序列之第一集合中的元素大於或等於第一序列中之第一集合中的元素中至少一個時,將1之值指派給第二序列中之第一集合中的元素。在一實施例中,序列以降序合併,使得當決定第二序列之第一集合中的元素小於或等於第一序列中之第一集合中的元素中至少一個時,將1之值指派給第二序列中之第一集合中的元素。
隨後,在方塊1016處,基於在方塊1012處進
行的比較將0之值指派給第二序列之第一集合中的元素。在一實施例中,序列以升序合併,使得當決定第二序列之第一集合中的元素不大於第一序列中之第一集合中的元素中至少一個時,將0之值指派給第二序列中之第一集合中的元素。在一實施例中,序列以降序合併,使得當決定第二序列之第一集合中的元素不小於第一序列中之第一集合中的元素中至少一個時,將0之值指派給第二序列中之第一集合中的元素。
在方塊1018處,將來自方塊1008的以1之值指派的第一序列之第一集合中的元素中每一者與來自方塊1014的以1之值指派的第二序列之第一集合中的元素中每一者合併,從而導致合併後序列。在方塊1020處,排序合併後序列,從而導致元素之經排序合併後序列。因此,兩個經排序輸入序列經合併以產生全域經排序輸出。
針對用於第一序列之元素之所有集合且針對用於第二序列之元素之所有集合,包括方塊1010及方塊1016之任何輸出,自方塊1004開始重複方法1000,直至在方塊1020處輸出n個元素之最後經排序合併後序列為止。在方塊1022處,置換n個元素之最後經排序合併後序列。在一實施例中,置換操作包括在目的地暫存器中為經排序合併後n個元素中每一者指派一位置,該位置對應於用於來源暫存器中的經排序n個元素中每一者之位置。在方塊1024處,將n個元素之置換後經排序合併後序列輸出至目的地暫存器。在一實施例中,目的地暫存器與來源暫
存器相同。在一實施例中,目的地暫存器不同於來源暫存器。
圖11A為例示根據本發明之至少一實施例的用來管理非精確事件的處理裝置之處理器監視效能之循序管線及暫存器重新命名級段、亂序發佈/執行管線的方塊圖。圖11B為例示循序架構核心及暫存器重新命名邏輯、亂序發佈/執行邏輯的方塊圖,上述各者將包括於根據本發明之至少一實施例的處理器中。圖11A中之實線方框例示循序管線,而虛線方框例示暫存器重新命名、亂序發佈/執行管線。類似地,圖11B中之實線方框例示循序架構邏輯,而虛線方框例示暫存器重新命名邏輯與亂序發佈/執行邏輯。
在圖11A中,處理器管線1100包括擷取級段1102、長度解碼級段1104、解碼級段1106、分配級段1108、重新命名級段1110、排程(亦稱為分派或發佈)級段1112、暫存器讀取/記憶體讀取級段1114、執行級段1116、寫回/記憶體寫入級段1118、異常處置級段1122及確認級段1124。在一些實施例中,級段可以不同順序提供且不同級段可循序地及亂序地加以考慮。
在圖11B中,箭頭表示兩個或兩個以上單元之間的耦接,且箭頭的方向指示該等單元之間的資料流的方向。圖11B展示處理器核心1190,該處理器核心包括耦接至執行引擎單元1150之前端單元1130,且該執行引擎單元及該前端單元兩者皆耦接至記憶體單元70。
核心1190可為精簡指令集計算(RISC)核心、複雜指令集計算(CISC)核心、極長指令字(VLIW)核心,或者混合式或替代性核心類型。作為另一選項,核心1190可為特殊用途核心,諸如例如,網路或通訊核心、壓縮引擎、圖形核心等。
前端單元1130包括耦接至指令快取記憶體單元1134之分支預測單元1132,該指令快取記憶體單元耦接至指令轉譯後備緩衝器(TLB)1136,該指令TLB耦接至指令擷取單元1138,該指令擷取單元耦接至解碼單元1140。解碼單元或解碼器可解碼指令,且產生一或多個微操作、微碼進入點、微指令、其他指令或其他控制信號作為輸出,上述各者係自原始指令解碼所得,或以其他方式反映原始指令,或係由原始指令導出。可使用各種不同機構來實行解碼器。適合的機構之實例包括但不限於查找表、硬體實行方案、可規劃邏輯陣列(PLA)、微碼唯讀記憶體(ROM)等。指令快取記憶體單元1134進一步耦接至記憶體單元1170中的2階(L2)快取記憶體單元1176。解碼單元1140耦接至執行引擎單元1150中的重新命名/分配器單元1152。
執行引擎單元1150包括重新命名/分配器單元1152,該重新命名/分配器單元耦接至引退(retirement)單元1154及一或多個排程器單元1156之集合。引退單元1154可包括根據本發明之實施例的用於於指令集架構中排序資料及合併經排序資料的合併及排序模組1103。排程
器單元1156表示任何數目之不同排程器,包括保留台、中央指令視窗等。排程器單元1156耦接至實體暫存器檔案單元1158。實際暫存器檔案單元1158中每一者表示一或多個實體暫存器檔案,該一或多個實體暫存器檔案中之不同實體暫存器檔案儲存諸如純量整數、純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點等的一或多個不同資料類型、狀態(例如,為將要執行的下一指令之位址的指令指標)等。實體暫存器檔案單元1158由引退單元1154重疊,以例示可實行暫存器重新命名及亂序執行的各種方式(例如,使用重排序緩衝器及引退暫存器檔案,使用未來檔案、歷史緩衝器及引退暫存器檔案;使用暫存器圖及暫存器池;等等)。
通常,架構暫存器自處理器外部或自程式設計師的角度可見。暫存器不限於任何已知特定類型之電路。各種不同類型之暫存器係適合的,只要其能夠儲存並提供如本文中所描述之資料即可。適合的暫存器之實例包括但不限於專用實體暫存器、使用暫存器重新命名之動態分配實體暫存器、專用實體暫存器與動態分配實體暫存器之組合等。引退單元1154及實際暫存器檔案單元1158耦接至執行叢集1160。執行聚集1160包括一或多個執行單元1162之集合及一或多個記憶體存取單元1164之集合。執行單元1162可進行各種操作(例如,移位、加法、減法、乘法)且對各種類型之資料(例如,純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點)進行操作。
雖然一些實施例可包括專門針對特定功能或功能集合之許多執行單元,但其他實施例可包括一執行單元或多個執行單元,該等多個執行單元全部進行所有功能。排程器單元1156、實體暫存器檔案單元1158及執行叢集1160被展示為可能係多個,因為某些實施例針對某些類型之資料/操作產生單獨的管線(例如,純量整數管線、純量浮點/緊縮整數/緊縮浮點/向量整數/向量浮點管線,及/或記憶體存取管線,其中每一管線具有其自有之排程器單元、實體暫存器檔案單元及/或執行叢集;且在單獨的記憶體存取管線之狀況下,所實行的某些實施例中,此管線之執行叢集具有記憶體存取單元1164)。亦應理解,在使用單獨的管線之情況下,此等管線中之一或多者可為亂序發佈/執行而其餘管線可為循序的。
記憶體存取單元1164之集合耦接至記憶體單元1170,該記憶體單元包括耦接至資料快取記憶體單元1174的資料TLB單元1172,該資料快取記憶體單元耦接至2階(L2)快取記憶體單元1176。在一示範性實施例中,記憶體存取單元1164可包括載入單元、儲存位址單元及儲存資料單元,其中每一者耦接至記憶體單元1170中的資料TLB單元1172。L2快取記憶體單元1176耦接至一或多個其他階快取記憶體且最終耦接至主記憶體。
藉由實例,示範性暫存器重新命名、亂序發佈/執行核心架構可將管線1100實行如下:1)指令擷取38進行擷取級段1102及長度解碼級段1104;2)解碼單元
1140進行解碼級段1106;3)重新命名/分配單元1152進行分配級段1108及重新命名級段1110;4)排程器單元1156進行排程級段1112;5)實體暫存器檔案單元1158及記憶體單元1170進行暫存器讀取/記憶體讀取級段1114;執行叢集1160進行執行級段1116;6)記憶體單元1170及實體暫存器檔案單元1158進行寫回/記憶體寫入級段1118;7)異常處置級段1122中可涉及各種單元;及8)引退單元1154及實體暫存器檔案單元1158進行確認級段1124。
核心1190可支援一或多個指令集(例如,x86指令集(以及一些擴展,較新版本已新增該等擴展);MIPS Technologie公司(Sunnyvale,CA)的MIPS指令集;ARM Holdings公司(Sunnyvale,CA)的ARM指令集(以及額外擴展,諸如NEON))。
應理解,核心可支援多執行緒處理(multithreading)(執行操作或執行緒之兩個或兩個以上並行集合),且可以各種方式完成此支援,其中包括經時間切割之多執行緒處理、同時多執行緒處理(其中單個實體核心針對該實體核心同時在多執行緒處理的各執行緒中之每一者提供一邏輯核心)或上述各者之組合(例如,經時間切割之擷取及解碼以及隨後同時的多執行緒處理,諸如在Intel®超多執行緒處理(Hyperthreading)技術中)。
雖然在亂序執行之上下文中描述暫存器重新命名,但應理解,暫存器重新命名可用於循序架構中。雖然處理器之所例示實施例亦包括單獨的指令與資料快取
記憶體單元634/674以及共享的L2快取記憶體單元1176,但替代性實施例可具有用於指令與資料兩者的單個內部快取記憶體,諸如例如1階(L1)內部快取記憶體或多階內部快取記憶體。在一些實施例中,系統可包括內部快取記憶體與外部快取記憶體之組合,該外部快取記憶體在核心及/或處理器外部。或者,所有快取記憶體可在核心及/或處理器外部。
圖12為例示根據本發明之一實施例的用於處理器1200之微架構的方塊圖,該處理器包括進行指令的邏輯電路。在一實施例中,處理器1200監視處理裝置之效能以管理非精確事件。在一些實施例中,可實行根據一實施例之指令來對資料元素進行操作,該等資料元素具有位元組、字、雙字、四字等大小,以及諸如單精度及雙精度整數及浮點資料類型之資料類型。在一實施例中,循序前端1201係處理器1200之部分,該循序前端擷取將要執行之指令且使該等指令準備好稍後在處理器管線中使用。前端1201可包括若干單元。在一實施例中,指令預擷取器1226自記憶體擷取指令且將該等指令饋入至指令解碼器1228,該指令解碼器又解碼或解譯該等指令。例如,在一實施例中,解碼器將所接收指令解碼成機器可執行之一或多個操作,稱為「微指令」或「微操作」(亦稱為micro op或uop)。
在其他實施例中,解碼器將指令剖析成運算碼及對應的資料與控制欄位,上述各者由微架構用來進行
根據一實施例之操作。在一實施例中,追蹤快取記憶體1230獲得經解碼的微操作且將該等解碼的微碼組譯成程式排序序列或在微操作佇列1234中追蹤以便執行。當追蹤快取記憶體1230遇到複雜指令時,微碼ROM 1232提供完成操作所需要的微操作。
一些指令被轉換成單個微操作,而其他指令使用若干微操作來完成完整的操作。在一實施例中,若需要超過四個微操作來完成指令,則解碼器1228存取微碼ROM 1232來完成該指令。對於一實施例,在指令解碼器1228處可將指令解碼成少量微操作以便處理。在另一實施例中,若需要許多微操作來實現操作,則可將指令儲存於微碼ROM 1232內。追蹤快取記憶體1230代表進入點可規劃邏輯陣列(PLA),該進入點可規劃邏輯陣列用來決定正確的微指令指標以便自微碼ROM 1232讀取微碼序列來完成根據本發明之一實施例的一或多個指令。在微碼ROM 1232結束針對指令之定序微操作之後,機器之前端1201回復自追蹤快取記憶體1230擷取微操作。
亂序執行引擎1203係使指令準備好執行之處。亂序執行邏輯具有許多緩衝器,用來在指令沿著管線進行且得以排程以便執行時平滑化且重新排序指令流以使效能最佳化。分配器邏輯分配每一微操作為了執行所需要的機器緩衝器及資源。暫存器重新命名邏輯將邏輯暫存器重新命名至暫存器檔案中的項上。分配器亦在指令排程器前為兩個微操作佇列(一個用於記憶體操作且一個用於非
記憶體操作)之一中的每一微操作分配一項:記憶體排程器、快速排程器1202、緩慢/一般浮點排程器1204及簡單浮點排程器1206。微操作排程器1202、1204、1206決定微操作何時準備執行,此判定係基於:該等微操作排程器之相依性輸入暫存器運算元來源之就緒狀態及微操作用來完成其操作的執行資源之可用性。一實施例之快速排程器1202可在主時鐘週期的每一半排程,而其他排程器每個主處理器時鐘週期可排程一次。該等排程器針對分派埠進行仲裁來排程微操作以便執行。
暫存器檔案1208、1210位於排程器1202、1204、1206與執行區塊1211中的執行單元1212、1214、1216、1218、1220、1222、1224之間。對於整數及浮點操作,分別存在單獨的暫存器檔案。一實施例之每一暫存器檔案1208、1210亦包括繞過(bypass)網路,該繞過網路可繞過尚未寫入至暫存器檔案中之剛剛完成的結果或將該等剛剛完成的結果轉送至新的相依性微操作。整數暫存器檔案1208及浮點暫存器檔案1210亦能夠相互通訊資料。對於一實施例,整數暫存器檔案1208分成兩個單獨的暫存器檔案,一個暫存器檔案用於資料之低位32個位元且第二暫存器檔案用於資料之高位32個位元。一實施例之浮點暫存器檔案1210具有128位元寬的項,因為浮點指令通常具有寬度為66至128個位元的運算元。
執行區塊1211含有執行單元1212、1214、1216、1218、1220、1222、1224,在此等執行單元中實
際執行指令。此部分包括暫存器檔案1208、1210,該等暫存器檔案儲存微指令用來執行之整數及浮點資料運算元。一實施例之處理器1200包含許多執行單元:位址產生單元(AGU)1212、AGU 1214、快速ALU 1216、快速ALU 1218、緩慢ALU 1220、浮點ALU 1222、浮點移動單元1224。對於一實施例,浮點執行區塊1222、1224執行浮點、MMX、SIMD及SSE或其他操作。一實施例之浮點ALU 1222包括64位元乘54位元的浮點除法器,來執行除法、平方根及餘數微操作。對於本發明之實施例,涉及浮點值的指令可以浮點硬體來處置。
在一實施例中,ALU操作發生在高速ALU執行單元1216、1218。一實施例之快速ALU 1216、1218可執行快速操作,其有效延時為時鐘週期的一半。對於一實施例,大多數複雜的整數操作發生在緩慢ALU 1220,因為緩慢ALU 1220包括用於長延時型操作之整數執行硬體,諸如乘法器、移位、旗標邏輯及分支處理。記憶體載入/儲存操作由AGU 1212、1214執行。對於一實施例,在對64位元的資料運算元進行整數操作的上下文中描述整數ALU 1216、1218、1220。在替代性實施例中,ALU 1216、1218、1220可經實行來支援各種資料位元,包括16、32、128、256等。類似地,浮點單元1222、1224可經實行來支援具有各種寬度之位元的大範圍運算元。對於一實施例,浮點單元1222、1224可結合SIMD及多媒體指令對128個位元寬的緊縮資料運算元進行操作。
在一實施例中,微操作排程器1202、1204、1206在父代負載已完成執行之前分派相依性操作。因為在處理器1200中推測式地排程並執行微操作,所以處理器1200亦包括處置記憶體遺漏的邏輯。若資料負載在資料快取記憶體中遺漏,則管線中可能有相依性操作正在進行,該等操作給排程器留下暫時不正確的資料。重新執行機構追蹤並重新執行使用不正確資料的指令。應重演相依性操作,且允許獨立操作完成。處理器之一實施例之排程器及重演機構亦經設計來捕集用於正文字串比較操作之指令序列。
處理器1200可包括引退單元1254,該引退單元耦接至執行區塊1211。引退單元1254可包括用於在用於處理裝置之指令集架構中排序資料及合併經排序資料的合併及排序模組1205。
「暫存器」一詞可代表用作指令之一部分來識別運算元的板上處理器儲存位置。換言之,暫存器可為自處理器外部(自程式設計師的角度)可使用的暫存器。然而,一實施例之暫存器的含義不應限於特定類型之電路。取而代之,一實施例之暫存器能夠儲存且提供資料並且執行本文中描述之功能。可使用任何數種不同技術藉由電路在處理器內實行本文中所描述之暫存器,諸如專用實體暫存器、使用暫存器重新命名之動態分配實體暫存器、專用實體暫存器與動態分配實體暫存器之組合等。在一實施例中,整數暫存器儲存三十二位元的整數資料。
一實施例之暫存器檔案亦含有用於緊縮資料的八個多媒體SIMD暫存器。對於以下論述,暫存器應理解為經設計來保持緊縮資料的資料暫存器,諸如以MMXTM技術致能的來自Intel公司(Santa Clara,California)的微處理器中的64個位元寬的MMX暫存器(在一些情況下亦稱為『mm』暫存器)。此等MMX暫存器(整數與浮點形式均可利用)可對伴隨著SIMD及SSE指令的緊縮資料元素進行操作。類似地,與SSE2、SSE3、SSE4或更先進(一般稱為「SSEx」)技術有關的128個位元寬的XMM暫存器亦可用來保持此等緊縮資料運算元。在一實施例中,在儲存緊縮資料及整數資料時,暫存器並不在兩個資料類型之間區分。在一實施例中,整數及浮點含於相同暫存器檔案或不同暫存器檔案中。此外,在一實施例中,浮點及整數資料可儲存於不同暫存器或相同暫存器中。
現參考圖13,所展示為根據本發明之一個實施例之系統1300的方塊圖。系統1300可包括一或多個處理器1310、1315,該等處理器耦接至圖形記憶體控制器集線器(GMCH)1320。圖13中用間斷線表示額外處理器1315之可選擇性質。在一實施例中,處理器1310、1315監視處理裝置之效能以管理非精確事件。
每一處理器1310、1315可為如以上所描述之電路、積體電路、處理器及/或矽積體電路的某一版本。然而,應注意的是,整合型圖形邏輯及整合型記憶體控制單元不太可能存在於處理器1310、1315中。圖13例示GMCH
1320可耦接至記憶體1340,該記憶體可為例如動態隨機存取記憶體(DRAM)。對於至少一實施例,DRAM可與非依電性快取記憶體相關聯。
GMCH 1320可為晶片組或晶片組之一部分。GMCH 1320可與處理器1310、1315通訊,且控制處理器1310、1315與記憶體1340之間的互動。GMCH 1320亦可充當處理器1310、1315與系統1300之其他元件之間的加速匯流排介面。對於至少一實施例,GMCH 1320經由多分支匯流排(multi-drop bus),諸如前端匯流排(FSB)1395,與處理器1310、1315通訊。
此外,GMCH 1320耦接至顯示器1345(諸如平板顯示器或觸控螢幕顯示器)。GMCH 1320可包括整合型圖形加速器。GMCH 1320進一步耦接至輸入/輸出(I/O)控制器集線器(ICH)1350,該ICH可用來將各種周邊裝置耦接至系統1300。例如在圖13之實施例中所展示為外部圖形裝置1360以及另一周邊裝置1370,該外部圖形裝置可為耦接至ICH 1350之離散圖形裝置。
或者,系統1300中亦可存在額外或不同的處理器。例如,額外處理器1315可包括:與處理器1310相同的額外處理器;與處理器1310異質或不對稱的額外處理器;加速器(諸如,圖形加速器或數位信號處理(DSP)單元);現場可規劃閘陣列;或任何其他處理器。就優點量度範圍而言,處理器1310與處理器1315之間可存在各種差異,其中包括架構特性、微架構特性、熱特性、功率消耗
特性等。此等差異可有效表明其本身在處理器1310與1315之間的不對稱性及異質性。對於至少一實施例,各種處理器1310、1315可駐留在同一晶粒封裝中。
實施例可實施於許多不同的系統類型中。圖14為根據本發明之一實施例之SoC 1400的方塊圖。此外,虛線方框係更先進SoC上之可選擇的特徵。在圖14中,互連單元1412耦接至:應用處理器1420,其包括一或多個核心1402A-N之集合及共用快取記憶體單元1406;系統代理單元1410;匯流排控制器單元1416;整合型記憶體控制器單元1414;一組或一或多個媒體處理器1418,其可包括整合型圖形邏輯1408、用於提供靜態及/或視訊攝影機功能性之影像處理器1424、用於提供硬體音訊加速之音訊處理器1426及用於提供視訊編碼/解碼加速之視訊處理器1428;靜態隨機存取記憶體(SRAM)單元1430;直接記憶體存取(DMA)單元1432;及用於耦接至一或多個外部顯示器之顯示器單元1440。在一實施例中,記憶體模組可包括在綜合型記憶體控制器單元1414中。在另一實施例中,記憶體模組可包括在SoC 1400之一或多個其他組件中,該一或多個其他組件可用來存取及/或控制記憶體。應用處理器1420可包括條件分支、間接分支及如本文實施例中所描述之事件執行邏輯。
記憶體階層包括該等核心內的一或多階快取記憶體、一或多個共享快取記憶體單元1406之集合、耦接至整合型記憶體控制器單元1414之集合的外部記憶體
(未示出)。共享快取記憶體單元1406之集合可包括一或多個中階快取記憶體,諸如2階(L2)、3階(L3)、4階(L4),或其他階快取記憶體、末階快取記憶體(LLC),及/或上述各項之組合。
在一些實施例中,核心1402A-N中一或多者能夠進行多執行緒處理。
系統代理1410包括協調並操作核心1402A-N之該等組件。系統代理單元1410可包括,例如,功率控制單元(PCU)及顯示單元。PCU可為調節核心1402A-N及整合型圖形邏輯1408之功率狀態所需要的邏輯及組件,或者包括上述邏輯及組件。顯示單元係用於驅動一或多個外部連接顯示器。
核心1402A-N就架構及/或指令集而言可為同質的或異質的。例如,核心1402A-N中之一些可為循序的,而其他核心係亂序的。作為另一實例,核心1402A-N中之兩個或兩個以上可能能夠執行同一指令集,而其他核心可能僅能夠執行該指令集之子集或不同的指令集。
應用處理器1420可為一般用途處理器,諸如可得自IntelTM公司(Santa Clara,Calif)的CoreTM i3、i5、i7、2 Duo及Quad、XeonTM、ItaniumTM、AtomTM、XScaleTM或StrongARMTM處理器。或者,應用處理器1420可來自另一公司,諸如ARM HoldingsTM,Ltd、MIPSTM等。應用處理器1420可為特殊用途處理器,諸如,例如網路或通訊處理器、壓縮引擎、圖形處理器、共處理器、嵌入式處理
器等。應用處理器1420可實行於一或多個晶片上。應用處理器1420可為一或多個基板之部分且/或可使用諸如例如BiCMOS、CMOS或NMOS的許多處理技術中之任一者將應用處理器1420實行於一或多個基板上。
圖15為根據本揭示案之系統單晶片(SoC)設計之一實施例的方塊圖。作為一特定例示性實例,SoC1500包括於使用者設備(UE)中。在一實施例中,UE指代將由終端使用者用來通訊的任何裝置,諸如手持式電話、智慧型電話、平板電腦、超薄筆記型電腦、具有寬頻帶配接器之筆記型電腦或任何其他類似通訊裝置。通常,UE連接至基地台或節點,該UE可能在本質上對應於GSM網路中之行動台(MS)。
此處,SOC 1500包括2個核心--核心1506及1507。核心1506及1507可符合指令集架構,諸如基於Intel® Architecture CoreTM之處理器、Advanced Micro Devices,Inc.(AMD)處理器、基於MIPS之處理器、基於ARM之處理器設計,或其客戶以及其執照或採用者。核心1506及1507耦接至與匯流排介面單元1508及L2快取記憶體1510相關聯的快取記憶體控制件1508,來與系統1500之其他部分通訊。互連體1510包括可能實行所描述之揭示案之一或多個態樣的晶片上互連體,諸如IOSF、AMBA或以上論述之其他互連體。在一實施例中,條件分支、間接分支及事件執行邏輯可包括在核心1506、1507中。
介面1510提供通訊通道至其他組件,諸如:
用來與SIM卡介接之用戶身份模組(SIM)1530、用來保持由核心1506及1507執行來初始化並啟動SOC 1500的啟動碼之啟動ROM 1535、用來與外部記憶體(例如DRAM 1560)介接之SDRAM控制器1540、用來與非依電性記憶體(例如快閃記憶體1565)介接之快閃記憶體控制器1545、用來與周邊裝置介接之周邊控制件1550(例如串列周邊介面)、用來顯示並接收輸入(例如具備觸控功能的輸入)之視訊編解碼器1520及視訊介面1525、用來進行圖形相關計算之GPU 1515等。此等介面中任一者可併入本文所描述之本揭示案之態樣。另外,系統1500例示用於通訊之周邊裝置,諸如藍牙模組1570、3G數據機1575、GPS 1580及WiFi 1585。
現參考圖16,所展示為根據本發明之一實施例之系統1600的方塊圖。如圖16中所示,多處理器系統1600係點對點互連系統,且包括第一處理器1670及第二處理器1680,該等處理器經由點對點互連體1650予以耦接。處理器1670及1680中每一者可為如本文所描述之計算系統之處理器之某一版本。在一實施例中,監視處理裝置之效能以管理非精確事件的處理器1670、1680用來監視處理裝置之效能以管理非精確事件。
雖然展示為具有兩個處理器1670、1680,但應理解,本揭示案之範疇不限於此。在其他實施例中,給定處理器中可存在一或多個額外處理器。
所展示處理器1670及1680分別包括整合型
記憶體控制器單元1672及1682。處理器1670亦包括點對點(P-P)介面1676及1678,作為該處理器之匯流排控制器單元的部分;類似地,第二處理器1680包括P-P介面1686及1688。處理器1670、1680可使用P-P介面電路1678、1688經由點對點(P-P)介面1650交換資訊。如圖16中所示,IMC 1672及1682將處理器耦接至各別記憶體,亦即,記憶體1632及記憶體1634,該等記憶體可為局部地附接至各別處理器之主記憶體的部分。
處理器1670、1680各自可使用點對點介面電路1676、1694、1686、1698經由單獨P-P介面1652、1654與晶片組1690交換資訊。晶片組1690亦可經由高效能圖形介面1639與高效能圖形電路1638交換資訊。
在任一處理器中或兩個處理器外部,可包括共享快取記憶體(未示出),而該共享快取記憶體經由P-P互連體與該等處理器連接,使得當處理器被置於低功率模式中時,可將任一處理器或兩個處理器之區域快取記憶體資訊儲存在該共享快取記憶體中。
晶片組1690可經由介面1616耦接至第一匯流排1616。在一實施例中,第一匯流排1616可為周邊組件互連(PCI)匯流排,或諸如高速PCI匯流排或另一第三代I/O互連匯流排之匯流排,但本發明之範疇不限於此。
如圖16中所示,各種I/O裝置1614以及匯流排橋接器1618可耦接至第一匯流排1616,該匯流排橋接器將第一匯流排1616耦接至第二匯流排1620。在一實施例
中,第二匯流排1620可為低接腳計數匯流排。各種裝置可耦接至第二匯流排1620,其中包括,例如,鍵盤及/或滑鼠1622、通訊裝置1627,及儲存單元1628,諸如磁碟驅動機或其他大容量儲存裝置,在一實施例中,該儲存單元可包括指令/碼及資料1630。此外,音訊I/O 1624可耦接至第二匯流排1620。請注意,其他架構係可能的。例如,代替圖16之點對點架構,系統可實行多分支匯流排或其他此種架構。
現參考圖17,所展示為根據本發明之一實施例之系統1700的方塊圖。圖17例示處理器1770、1780。在一實施例中,處理器1770、1780監視處理裝置之效能以管理非精確事件。此外,處理器1770、1780可分別包括整合型記憶體及I/O控制邏輯(「CL」)1772及1782,且分別經由介於點對點(P-P)介面1778與點對點(P-P)介面1788之間的點對點互連體1750彼此通訊。處理器1770、1780各自經由穿過各別P-P介面1776至1794及1786至1798的點對點互連體1752及1754與晶片組1790通訊,如所示。對於至少一實施例,CL 1772、1782可包括整合型記憶體控制器單元。CL 1772、1782可包括I/O控制邏輯。如所描繪,記憶體1732、1734耦接至CL 1772、1782,且I/O裝置1714亦耦接至控制邏輯1772、1782。舊式I/O裝置1715經由介面1796耦接至晶片組1790。
圖18例示平板計算裝置、智慧型手機或使用觸控螢幕介面連接器之其他行動裝置之一實施例的方塊圖
1800。處理器1810可監視處理裝置之效能以管理非精確事件。另外,處理器1810進行主處理操作。音訊子系統1820表示硬體(例如,音訊硬體及音訊電路)及軟體(例如,驅動器、編解碼器)組件,該等硬體及軟體組件與提供音訊功能給計算裝置相關聯。在一實施例中,使用者藉由提供音訊命令來與平板計算裝置或智慧型手機互動,該等音訊命令由處理器1810接收並處理。
顯示子系統1832表示硬體(例如,顯示器裝置)及軟體(例如,驅動器)組件,該等硬體及軟體組件為使用者提供視覺及/或觸覺顯示器以與平板計算裝置或智慧型手機互動。顯示子系統1830包括顯示介面1832,該顯示介面包括用來提供顯示給使用者之特定螢幕或硬體裝置。在一實施例中,顯示子系統1830包括觸控螢幕裝置,該觸控螢幕裝置提供輸出及輸入兩者給使用者。
I/O控制器1840表示有關於與使用者互動之硬體裝置及軟體組件。I/O控制器1840可操作以管理硬體,該硬體為音訊子系統1820及/或顯示子系統1830之部分。另外,I/O控制器1840說明用於額外裝置之連接點,該等額外裝置連接至平板計算裝置或智慧型手機,使用者可經由其進行互動。在一實施例中,I/O控制器1840管理裝置,諸如加速計、攝影機、光感測器或其他環境感測器,或可包括於平板計算裝置或智慧型手機中之其他硬體。輸入可為直接使用者互動之部分,以及向平板計算裝置或智慧型手機提供環境輸入。
在一實施例中,平板計算裝置或智慧型手機包括功率管理1850,該功率管理管理電池功率使用、電池之充電以及與功率節省操作有關之特徵。記憶體子系統1860包括用於將資訊儲存於平板計算裝置或智慧型手機中之記憶體裝置。連接性1870包括至平板計算裝置或智慧型手機之硬體裝置(例如,無線及/或有線連接器及通訊硬體)及軟體組件(例如,驅動器、協定堆疊)以與外部裝置通訊。行動式連接性1872可包括,例如:無線載體,諸如全球行動通訊系統(global system for mobile communication;GSM)、分碼多重存取(code division multiple access;CDMA)、分時多工(time division multiplexing;TDM);或其他行動式服務標準。無線連接性1874可包括,例如,並非行動式之活動性,諸如個人區域網路(例如,藍牙)、區域網路(例如,WiFi)及/或廣域網路(例如,WiMax),或其他無線通訊。
周邊連接1880包括硬體介面與連接器以及軟體組件(例如,驅動器、協定堆疊),以製作周邊連接,作為至其他計算裝置之周邊裝置(「至」1882),並且具有連接至平板計算裝置或智慧型手機之周邊裝置(「來自」1884),其中包括例如「對接」連接器,用來與其他計算裝置連接。周邊連接1880包括常見或標準型連接器,諸如通用串列匯流排(Universal Serial Bus;USB)連接器、包括迷你顯示器埠(MiniDisplayPort;MDP)之顯示器埠(DisplayPort)、高清晰度多媒體介面(High Definition
Multimedia Interface;HDMI)、火線(Firewire)等。
圖19例示以計算系統1900之示例性形式之機器的圖解表示,可在該計算系統內執行用於使該機器進行本文所論述之方法論中之任何一或多個的一組指令。在替代性實施例中,機器可連接(例如,網路連接)至LAN、內部網路、外部網路或網際網路中之其他機器。機器可作為主從網路環境中之伺服器或客戶端裝置,或作為點對點(或分散式)網路環境中之同級機器來操作。機器可為個人電腦(PC)、平板PC、機上盒(STB)、個人數位助理(PDA)、蜂巢式電話、網頁用具、伺服器、網路路由器、交換機或橋接器,或能夠執行一組指令(順序的或其他形式)之任何機器,該等指令規定將要由該機器採取之動作。此外,雖然例示僅單個機器,但「機器」一詞將亦被視為包括機器之任何集合,該等機器單獨地或共同地執行一組(或多組)指令以進行本文所論述之方法論中之任何一或多個。
計算系統1900包括經由匯流排1930彼此通訊的處理裝置1902、主記憶體1904(例如,唯讀記憶體(ROM)、快閃記憶體、動態隨機存取記憶體(DRAM)(諸如同步DRAM(SDRAM)或DRAM(RDRAM)等)、靜態記憶體1906(例如,快閃記憶體、靜態隨機存取記憶體(SRAM)等)及資料儲存裝置1918。
處理裝置1902表示一或多個一般用途處理裝置,諸如微處理器、中央處理單元(CPU)等。更特定而言,處理裝置可為複雜指令集計算(CISC)微處理器、精簡
指令集計算(RISC)微處理器、極長指令字(VLIW)微處理器,或實行其他指令集之處理器,或實行指令集之組合之處理器。處理裝置1902亦可為一或多個特殊用途處理裝置,諸如特定應用積體電路(ASIC)、現場可規劃閘陣列(FPGA)、數位信號處理器(DSP)、網路處理器等。在一實施例中,處理裝置1902可包括一或處理核心。處理裝置1902經組配來執行用於進行本文所論述之操作的處理邏輯1926。在一實施例中,處理裝置1902與如關於圖1所描述之電腦系統100相同,該電腦系統實行排序模組103及合併模組105。或者,計算系統1900可包括如本文所描述之其他組件。
計算系統1900可進一步包括網路介面裝置1908,該網路介面裝置可通訊地耦接至網路1920。計算系統1900亦可包括視訊顯示單元1910(例如,液晶顯示器(LCD)或陰極射線管(CRT))、文數字輸入裝置1912(例如,鍵盤)、游標控制裝置1914(例如,滑鼠)、信號產生裝置1916(例如,揚聲器)或其他周邊裝置。此外,計算系統1900可包括圖形處理單元1922、視訊處理單元1928及音訊處理單元1932。在另一實施例中,計算系統1900可包括晶片組(未例示),該晶片組指代經設計來與處理裝置1902一起工作且控制處理裝置1902與外部裝置之間的通訊的積體電路或晶片之群組。例如,晶片組可為母板上之晶片之集合,該母板將處理裝置1902連結至諸如主記憶體1904及圖形控制器的極高速裝置,以及將處理裝置1902
連結至周邊設備之較低速周邊匯流排,諸如USB、PCI或ISA匯流排。
資料儲存裝置1918可包括電腦可讀儲存媒體1924,體現本文所描述之功能之方法論中之任何一或多個的軟體1926儲存在該電腦可讀儲存媒體上。軟體1926亦可在其藉由計算系統1900之執行期間完全地或至少部分地駐留在主記憶體1904內作為指令1926及/或駐留在處理裝置1902內作為處理邏輯1926;主記憶體1904及處理裝置1902亦構成電腦可讀儲存媒體。
電腦可讀儲存媒體1924亦可用來儲存利用關於圖1所描述之排序模組103及合併模組105的指令1926及/或含有呼叫以上應用程式的方法的軟體程式館。儘管電腦可讀儲存媒體1924在一示例性實施例中展示為單個媒體,但「電腦可讀儲存媒體」一詞應被視為包括儲存指令之一或多個集合的單個媒體或多個媒體(例如,集中式或分散式資料庫,及/或相關聯之快取記憶體及伺服器)。「機器可讀儲存媒體」一詞亦應被視為包括能夠儲存、編碼或承載用於由機器執行之指令之集合及使機器進行實施例之方法論中之任何一或多個的任何媒體。因此,「電腦可讀儲存媒體」一詞應被視為包括但不限於固態記憶體以及光學及磁性媒體。雖然已關於有限數目之實施例描述本發明,但熟習此項技術者將瞭解根據該等實施例之許多修改及變化。希望所附申請專利範圍在落入本發明之真實精神及範疇內的同時涵蓋所有此類修改及變體。
以下實例係關於進一步實施例。
實例1為一種處理裝置,該處理裝置包含排序模組,該排序模組用來:將暫存器集中的對應位置之位置值添加至多個元素中每一者,從而導致對應位置中的多個變換後元素,其中該等多個元素中每一者包含多個位元;將該等多個變換後元素中每一者與其自身且彼此進行比較;基於該比較將致能或失能指示符中之一個指派給該等多個該等變換後元素中每一者;以及計數指派給該等多個該等變換後元素中每一者的該等致能指示符之數目,以產生該等多個元素之經排序序列。
在實例2中,實例1之主題可選擇性地包括:當該等多個元素之中的一元素之至少一值與該等多個元素之中的另一元素之值相同時,排序模組用來使該等對應位置中每一者中的該等多個元素中每一者左移一組位元。
在實例3中,實例1至實例2之主題可選擇性地包括:其中該經排序序列包含致能指示符之數目之計數,且該排序模組用來以升序或降序中之一個產生該等多個元素之該經排序序列。
在實例4中,實例1至實例3之主題可選擇性地包括:其中該排序模組用來將該等多個變換後元素中每一者進行比較進一步包含該排序模組用來進行小於操作。
在實例5中,實例1至實例4之主題可選擇性地包括:其中該排序模組用來將該等多個變換後元素中每一者進行比較進一步包含該排序模組用來進行大於操作。
在實例6中,實例1至實例5之主題可選擇性地包括:其中該排序模組用來產生該等多個經排序元素之該經排序序列之至少一第一集合及該等多個經排序元素之該經排序序列之第二集合。
在實例7中,實例1至實例6之主題可選擇性地包括進一步包含合併模組,該合併模組耦接至該排序模組,其中該合併模組用來:將該經排序序列之該第一集合分成第一半且將該經排序序列之該第二集合分成第二半,其中該第一半包含該經排序序列之該第一集合之該等多個經排序元素,且該第二半包含該經排序序列之該第二集合之該等多個經排序元素;將該第一半中的該等多個經排序元素中每一者與該第二半中的該等多個經排序元素中每一者進行比較,且將該第二半中的該等多個經排序元素中每一者與該第一半中的該等多個經排序元素中每一者進行比較,來以一順序產生該等多個經排序元素之該序列之第三集合;以及產生該序列之該第三集合中的該等多個元素中每一者之該對應位置之該位置值,作為合併後經排序序列。
在實例8中,實例1至實例7之主題可選擇性地包括進一步包含合併模組,該合併模組耦接至該排序模組,其中該合併模組用來:識別來自該經排序序列之該第一集合的該等多個經排序元素之一集合及來自該經排序序列之該第二集合的該等多個經排序元素之另一集合;將來自該經排序序列之該第一序列的每個該經識別一集合中的該等多個經排序元素中每一者與來自該經排序序列之該第
二集合的每個該經識別另一集合中的該等多個經排序元素中每一者比較;基於該比較從來自該經排序序列之該第一序列的每個該經識別一集合選擇該等經排序元素;將來自該經排序序列之該第二序列的每個該經識別另一集合中的該等多個經排序元素中每一者與來自該經排序序列之該第一集合每個的該經識別一集合中的該等多個經排序元素中每一者比較;以及基於該比較從來自該經排序序列之該第二序列的每個該經識別另一集合選擇該等經排序元素。
在實例9中,實例1至實例8之主題可選擇性地包括其中該合併模組用來:將來自經排序序列之該第一序列的來自每個該經識別一集合的該等選定的經排序元素與來自該經排序序列之該第二序列的來自每個該經識別另一集合的該等選定的經排序元素聯合,以產生合併後序列,該合併後序列包含該等組合選定的經排序元素;以及以一順序置放該等組合選定的經排序元素以產生合併後經排序序列。
在實例10中,實例1至實例9之主題可選擇性地包括其中該合併模組用來以升序或降序中之一者產生該合併後經排序序列。
實例11為系統單晶片(SoC),該系統單晶片包含記憶體及處理裝置,該處理裝置可通訊地耦接至該記憶體,該處理裝置包含排序模組,該排序模組用來:將暫存器集中的對應位置之位置值添加至多個元素中每一者,從而導致對應位置中的多個變換後元素,其中該等多個元
素中每一者包含多個位元;將該等多個變換後元素中每一者與其自身且彼此進行比較;基於該比較將致能或失能指示符中之一個指派給該等多個該等變換後元素中每一者;以及計數指派給該等多個該等變換後元素中每一者的該等致能指示符之數目,以產生該等多個元素之經排序序列。
在實例12中,實例11之主題可選擇性地包括當該等多個元素之中的一元素之至少一值與該等多個元素之中的另一元素之值相同時,排序模組用來使該等對應位置中每一者中的該等多個元素中每一者左移一組位元。
在實例13中,實例11至實例12之主題可選擇性地包括其中該經排序序列包含致能指示符之數目之該計數,且其中該排序模組用來產生該等多個經排序元素之該經排序序列之至少一第一集合及該等多個經排序元素之該經排序序列之第二集合。
在實例14中,實例11至實例13之主題可選擇性地包括其中處理裝置進一步包含合併模組,該合併模組耦接至該排序模組,其中該合併模組用來:將該經排序序列之該第一集合分成第一半且將該經排序序列之該第二集合分成第二半,其中該第一半包含該經排序序列之該第一集合之該等多個經排序元素,且該第二半包含該經排序序列之該第二集合之該等多個經排序元素;將該第一半中的該等多個經排序元素中每一者與該第二半中的該等多個經排序元素中每一者進行比較,且將該第二半中的該等多個經排序元素中每一者與該第一半中的該等多個經排序元素
中每一者進行比較,來以一順序產生該等多個經排序元素之該序列之第三集合;以及產生該序列之該第三集合中的該等多個元素中每一者之該對應位置之該位置值,作為合併後經排序序列。
在實例15中,實例11至實例14之主題可選擇性地包括其中處理裝置進一步包含合併模組,該合併模組耦接至該排序模組,其中該合併模組用來:識別來自該經排序序列之該第一集合的該等多個經排序元素之一集合及來自該經排序序列之該第二集合的該等多個經排序元素之另一集合;將來自該經排序序列之該第一序列的每個該經識別一集合中的該等多個經排序元素中每一者與來自該經排序序列之該第二集合的每個該經識別另一集合中的該等多個經排序元素中每一者比較;基於該比較從來自該經排序序列之該第一序列每個的該經識別一集合選擇該等經排序元素;將來自該經排序序列之該第二序列的每個該經識別另一集合中的該等多個經排序元素中每一者與來自該經排序序列之該第一集合的每個該經識別一集合中的該等多個經排序元素中每一者比較;基於該比較從來自該經排序序列之該第二序列的每個該經識別另一集合選擇該等經排序元素;將來自經排序序列之該第一序列的來自每個該經識別一集合的該等選定的經排序元素與來自該經排序序列之該第二序列的來自每個該經識別另一集合的該等選定的經排序元素聯合,用以產生合併後序列,該合併後序列包含該等組合選定的經排序元素;以及以一順序置放該等組
合選定的經排序元素以產生合併後經排序序列。
實例16為一種方法,該方法包含:將暫存器集中的對應位置之位置值添加至多個元素中每一者,從而導致對應位置中的多個變換後元素,其中該等多個元素中每一者包含多個位元;將該等多個變換後元素中每一者與其自身且彼此進行比較;基於該比較將致能或失能指示符中之一個指派給該等多個該等變換後元素中每一者;以及計數指派給該等多個該等變換後元素中每一者的該等致能指示符之數目,以產生該等多個元素之經排序序列。
在實例17中,實例16之主題可選擇性地包括其中該經排序序列包含致能指示符之數目之該計數。
在實例18中,實例16至實例17之主題可選擇性地包括進一步包含:當該等多個元素之中的一元素之至少一值與該等多個元素之中的另一元素之一值相同時,使該等多個元素中每一者移位至該等對應位置中每一者中的一左側位置;以及產生該等多個經排序元素之該經排序序列之至少一第一集合及該等多個經排序元素之該經排序序列之第二集合。
在實例19中,實例16至實例18之主題可選擇性地包括:將該經排序序列之該第一集合分成第一半且將該經排序序列之該第二集合分成第二半,其中該第一半包含該經排序序列之該第一集合之該等多個經排序元素,且該第二半包含該經排序序列之該第二集合之該等多個經排序元素;將該第一半中的該等多個經排序元素中每一者與
該第二半中的該等多個經排序元素中每一者進行比較,且將該第二半中的該等多個經排序元素中每一者與該第一半中的該等多個經排序元素中每一者進行比較,來以一順序產生該等多個經排序元素之該序列之第三集合;以及產生該序列之該第三集合中的該等多個元素中每一者之該對應位置之該位置值,作為合併後經排序序列。
在實例20中,實例16至實例19之主題可選擇性地包括:識別來自該經排序序列之該第一集合的該等多個經排序元素之一集合及來自該經排序序列之該第二集合的該等多個經排序元素之另一集合;將來自該經排序序列之該第一序列的每個該經識別一集合中的該等多個經排序元素中每一者與來自該經排序序列之該第二集合的每個該經識別另一集合中的該等多個經排序元素中每一者比較;基於該比較從來自該經排序序列之該第一序列的每個該經識別一集合選擇該等經排序元素;將來自該經排序序列之該第二序列的每個該經識別另一集合中的該等多個經排序元素中每一者與來自該經排序序列之該第一集合的每個該經識別一集合中的該等多個經排序元素中每一者比較;基於該比較從來自該經排序序列之該第二序列的每個該經識別另一集合選擇該等經排序元素;將來自經排序序列之該第一序列的來自每個該經識別一集合的該等選定的經排序元素與來自該經排序序列之該第二序列的來自每個該經識別另一集合的該等選定的經排序元素聯合,用以產生合併後序列,該合併後序列包含該等組合選定的經排序元素;
以及以一順序置放該等組合選定的經排序元素以產生合併後經排序序列。
實例21為一種非暫時性機器可讀儲存媒體,其包括指令,該等指令在由處理裝置存取時,使該處理裝置進行包含以下各項之操作:將暫存器集中的對應位置之位置值添加至多個元素中每一者,從而導致對應位置中的多個變換後元素,其中該等多個元素中每一者包含多個位元;將該等多個變換後元素中每一者與其自身且彼此進行比較;基於該比較將致能或失能指示符中之一個指派給該等多個該等變換後元素中每一者;以及計數指派給該等多個該等變換後元素中每一者的該等致能指示符之數目,以產生該等多個元素之經排序序列。
在實例22中,實例21之主題可選擇性地包括其中該經排序序列包含致能指示符之數目之該計數。
在實例23中,實例21至實例22之主題可選擇性地包括其中該等操作進一步包含:當該等多個元素之中的一元素之至少一值與該等多個元素之中的另一元素之一值相同時,使該等多個元素中每一者移位至該等對應位置中每一者中的一左側位置;以及產生該等多個經排序元素之該經排序序列之至少一第一集合及該等多個經排序元素之該經排序序列之第二集合。
在實例24中,實例21至實例23之主題可選擇性地包括其中該等操作進一步包含:將該經排序序列之該第一集合分成第一半且將該經排序序列之該第二集合分成
第二半,其中該第一半包含該經排序序列之該第一集合之該等多個經排序元素,且該第二半包含該經排序序列之該第二集合之該等多個經排序元素;將該第一半中的該等多個經排序元素中每一者與該第二半中的該等多個經排序元素中每一者進行比較,且將該第二半中的該等多個經排序元素中每一者與該第一半中的該等多個經排序元素中每一者進行比較,來以一順序產生該等多個經排序元素之該序列之第三集合;以及產生該序列之該第三集合中的該等多個元素中每一者之該對應位置之該位置值,作為合併後經排序序列。
在實例25中,實例21至實例24之主題可選擇性地包括其中該等操作進一步包含:識別來自該經排序序列之該第一集合的該等多個經排序元素之一集合及來自該經排序序列之該第二集合的該等多個經排序元素之另一集合;將來自該經排序序列之該第一序列的每個該經識別一集合中的該等多個經排序元素中每一者與來自該經排序序列之該第二集合的每個該經識別另一集合中的該等多個經排序元素中每一者比較;基於該比較從來自該經排序序列之該第一序列的每個該經識別一集合選擇該等經排序元素;將來自該經排序序列之該第二序列的每個該經識別另一集合中的該等多個經排序元素中每一者與來自該經排序序列之該第一集合的每個該經識別一集合中的該等多個經排序元素中每一者比較;基於該比較從來自該經排序序列之該第二序列的每個該經識別另一集合選擇該等經排序元
素;將來自經排序序列之該第一序列的來自每個該經識別一集合的該等選定的經排序元素與來自該經排序序列之該第二序列的來自每個該經識別另一集合的該等選定的經排序元素聯合,用以產生合併後序列,該合併後序列包含該等組合選定的經排序元素;以及以一順序置放該等組合選定的經排序元素以產生合併後經排序序列。
雖然關於就有限數目之實施例描述本揭示案,但熟習此項技術者將瞭解根據該等實施例之許多修改及變化。希望所附申請專利範圍在落入本發明之真實精神及範疇內的同時涵蓋所有此類修改及變體。
設計可經歷自產生至模擬至製造之各種階段。表示設計之資料可以數種方式來表示設計。首先,如在模擬中為有用的,硬體可使用硬體描述語言或另一功能描述語言來表示。另外,具有邏輯及/或電晶體閘之電路層級模型可在設計過程之一些階段產生。此外,大多數設計在一些階段達到表示各種裝置在硬體模型中之實體佈局之資料的層級。在使用習知半導體製造技術之狀況下,表示硬體模型之資料可為指定各種特徵在用於遮罩之不同遮罩層上是否存在的資料,該等遮罩用以產生積體電路。在設計之任何表示中,資料可儲存於任何形式之機器可讀媒體中。記憶體或者磁性或光學儲存器(諸如,碟片)可為儲存經由光波或電波所傳輸之資訊的機器可讀媒體,該光波或電波經調變或以其他方式產生以傳輸此資訊。當指示或攜載程式碼或設計之電載波經傳輸,達到執行電信號之複
製、緩衝或重新傳輸的程度時,新的複本得以製作。因此,通訊提供者或網路提供者可在有形的機器可讀媒體上至少暫時儲存體現本揭示案之實施例之技術的物件,諸如編碼至載波中的資訊。
如本文所使用之模組指代硬體、軟體,及/或韌體之任何組合。作為實例,模組包括與非暫時性媒體相關聯之硬體,諸如微控制器,該媒體儲存經調適來藉由微控制器執行之程式碼。因此,在一實施例中,對模組之引用指代硬體,其經特定組配來辨識及/或執行將要在非暫時性媒體上保留之程式碼。此外,在另一實施例中,模組之使用指代包括程式碼之非暫時性媒體,該程式碼經特定調適來藉由微控制器執行以執行預定操作。且如可推斷,在又一實施例中,模組一詞(在此實例中)可指代微控制器與非暫時性媒體之組合。常常,例示為單獨的模組邊界通常變化且可能重疊。例如,第一模組及第二模組可共用硬體、軟體、韌體或其組合,同時可能保留一些獨立的硬體、軟體或韌體。在一實施例中,邏輯一詞之使用包括硬體,諸如電晶體、暫存器,或諸如可規劃邏輯裝置之其他硬體。
在一實施例中,短語『經組配來』之使用指代佈置、放在一起、製造、要約出售、進口及/或設計進行所指明或所決定任務之設備、硬體、邏輯或元件。在此實例中,並未操作之設備或其元件仍『經組配來』在其經設計、耦接及/或互連以進行所指明任務的情況下進行該所指明任務。作為純例示性實例,邏輯閘可在操作期間提供0
或1。但『經組配來』將啟用信號提供至時脈之邏輯閘不包括可提供1或0之每一可能邏輯閘。實情為,邏輯閘為以某方式耦接之邏輯閘,該方式為在操作期間,1或0輸出將啟用時脈。再次注意,『經組配來』一詞之使用不需要操作,而是聚焦於設備、硬體及/或元件之潛在狀態,其中設備、硬體及/或元件之潛在狀態經設計來在該設備、硬體及/或元件正操作時執行特定任務。
此外,在一實施例中,短語『以』、『能夠』及或『可操作以』之使用指代一些設備、邏輯、硬體及/或元件以允許以指定方式使用該設備、邏輯、硬體及/或元件之方式來設計。注意如上文,在一實施例中,以、能夠或可操作以之使用指代設備、邏輯、硬體及/或元件之潛在狀態,其中設備、邏輯、硬體及/或元件不操作但以允許以指定方式使用設備的方式來設計。
如本文所使用,值包括數目、狀態、邏輯狀態或二進位邏輯狀態之任何已知表示。常常,邏輯位準、邏輯值或多個邏輯值之使用亦被稱為1及0,此簡單地表示二進位邏輯狀態。舉例而言,1指代高邏輯位準且0指代低邏輯位準。在一實施例中,諸如電晶體或快閃胞之儲存胞可能能夠保留單一邏輯值或多個邏輯值。然而,電腦系統中之值的其他表示已得以使用。舉例而言,十進位數10亦可表示為二進位值910及十六進位字母A。因此,值包括能夠保留於電腦系統中之資訊的任何表示。
此外,狀態可藉由值或值之多個部分表示。
作為實例,諸如邏輯1之第一值可表示預設或初始狀態,而諸如邏輯0之第二值可表示非預設狀態。另外,在一實施例中,重設及設定等詞分別指代預設及更新值或狀態。舉例而言,預設值可能包括高邏輯值,亦即,重設,而更新值可能包括低邏輯值,亦即,設定。注意,值之任何組合可用以表示任何數目個狀態。
上文所闡述之方法、硬體、軟體、韌體或程式碼之實施例可經由儲存於機器可存取、機器可讀、電腦可存取或電腦可讀媒體上之指令或程式碼來實施,該等指令或程式碼可藉由處理元件執行。非暫時性機器可存取/可讀媒體包括以可藉由機器讀取之形式提供(亦即,儲存及/或傳輸)資訊的任何機制,該機器諸如電腦或電子系統。例如,非暫時性機器可存取媒體包括隨機存取記憶體(RAM),諸如靜態RAM(SRAM)或動態RAM(DRAM);磁性或光學儲存媒體;快閃記憶體裝置;電氣儲存裝置;光學儲存裝置;聲學儲存裝置;用於保持自暫時性(傳播)信號(例如,載波、紅外信號、數位信號)接收的資訊的其他形式之儲存裝置等,該等其他形式之儲存裝置不同於可自該等暫時性(傳播)信號(例如,載波、紅外信號、數位信號)接收資訊的非暫時性媒體。
用來規劃邏輯以進行本揭示案之實施例的指令可儲存於系統中的記憶體中,諸如DRAM、快取記憶體、快閃記憶體或其他儲存體。此外,指令可經由網路或藉由其他電腦可讀媒體來散佈。因此,機器可讀媒體可包
括用於以可藉由機器(例如,電腦)讀取之形式儲存或傳輸資訊的任何機制,但不限於軟碟片、光碟、光碟片唯讀記憶體(CD-ROM),及磁光碟、唯讀記憶體(ROM)、隨機存取記憶體(RAM)、可抹除可規劃唯讀記憶體(EPROM)、電可抹除可規劃唯讀記憶體(EEPROM)、磁性或光學卡、快閃記憶體,或在資訊經網際網路經由電、光學、聲學或其他形式之所傳播信號(例如,載波、紅外信號、數位信號等)之傳輸中所使用的有形的機器可讀儲存器。因此,電腦可讀媒體包括適於以機器(例如,電腦)可讀的形式儲存或傳輸電子指令或資訊之任何類型之有形的機器可讀媒體。
遍及本說明書對「一實施例」或「實施例」之引用意味,結合實施例所述之特定特徵、結構或特性包括於當前技術的至少一實施例中。因此,短語「在一實施例中」或「在實施例中」在遍及本說明書之各處的出現未必均指代同一實施例。此外,特定特徵、結構或特性可在一或多個實施例中以任何合適之方式組合。
在前述說明書中,已參考特定例示性實施例提供了詳細描述。然而,將顯而易見的是,可在不脫離如所附申請專利範圍中所闡述之本揭示案之較廣泛精神及範疇的情況下在說明書中進行各種修改及變化。因此,應以例示性意義而非限制性意義來看待說明書及圖式。此外,實施例及其他例示性語言之前述使用未必指代同一實施例或同一實例,而可指代不同且相異的實施例,以及可能同一實施例。
100:計算系統
105:處理裝置
110:排序模組
120:合併模組
130:記憶體
140a-n:暫存器
150:應用程式
Claims (25)
- 一種處理裝置,其包含:一組暫存器,其用來儲存多個元素,其中該等多個元素中之每一者包含多個位元;及排序電路,其可通訊地耦接至該組暫存器,該排序電路包含:一縱橫電路,其用來:將該等多個元素中之每一者在該組暫存器中的對應位置中左移一組位元;藉由該組暫存器中的該對應位置之一位置值來修改該等多個經左移元素中之每一者,而導致對應位置中的多個變換後元素;經由該縱橫電路中的一大於或小於操作中之至少一者,將該等多個變換後元素中之每一者與其自身及彼此比較;以及基於該比較而將一致能指示符或一失能指示符中之一者指派給該等多個變換後元素中之每一者;以及一計數電路,其用來計數被指派給該等多個變換後元素中之每一者的該等致能指示符之一數目,以產生該等多個元素之一經排序序列。
- 如請求項1之處理裝置,其中該排序電路用來回應於該等多個元素之中的一元素之至少一值與該等多個元素之中的另一元素之一值為相同,而將該等多個元 素中之每一者左移。
- 如請求項1之處理裝置,其中該經排序序列包含致能指示符之數目之該計數,且該排序電路用來以一升序或一降序中之一者產生該等多個元素之該經排序序列。
- 如請求項3之處理裝置,其中該排序電路用來比較該等多個變換後元素中之每一者進一步包含該排序電路用來進行一小於操作。
- 如請求項3之處理裝置,其中該排序電路用來比較該等多個變換後元素中之每一者進一步包含該排序電路用來進行一大於操作。
- 如請求項1之處理裝置,其中該排序電路用來至少產生該等多個經排序元素之該經排序序列之一第一集合及該等多個經排序元素之該經排序序列之第二集合。
- 如請求項6之處理裝置,其進一步包含被耦接至該排序電路之一合併電路,其中該合併電路用來:將該經排序序列之該第一集合分成一第一半並且將該經排序序列之該第二集合分成一第二半,其中該第一半包含該經排序序列之該第一集合之該等多個經排序元素,而該第二半包含該經排序序列之該第二集合之該等多個經排序元素;將該第一半中的該等多個經排序元素中之每一者與該第二半中的該等多個經排序元素中之每一者比較,且將 該第二半中的該等多個經排序元素中之每一者與該第一半中的該等多個經排序元素中之每一者比較,用來以一順序產生該等多個經排序元素之序列之一第三集合;以及產生該序列之該第三集合中的該等多個元素中之每一者之該對應位置之該位置值,作為一合併後經排序序列。
- 如請求項6之處理裝置,其進一步包含被耦接至該排序電路之一合併電路,其中該合併電路用來:識別來自該經排序序列之該第一集合的該等多個經排序元素之一集合及來自該經排序序列之該第二集合的該等多個經排序元素之另一集合;將來自該經排序序列之該第一序列的每個該經識別一集合中的該等多個經排序元素中之每一者與來自該經排序序列之該第二集合的每個該經識別之另一集合中的該等多個經排序元素中之每一者比較;基於該比較從來自該經排序序列之該第一序列的每個該經識別集合選擇該等經排序元素;將來自該經排序序列之該第二序列的每個該經識別之另一集合中的該等多個經排序元素中之每一者與來自該經排序序列之該第一集合的每個該經識別集合中的該等多個經排序元素中之每一者比較;以及基於該比較從來自該經排序序列之該第二序列的每個該經識別之另一集合選擇該等經排序元素。
- 如請求項8之處理裝置,其中該合併電路用來: 將來自經排序序列之該第一序列的來自每個該經識別集合的該等選定之經排序元素與來自該經排序序列之該第二序列的來自每個該經識別之另一集合的該等選定之經排序元素聯合,以產生一合併後序列,該合併後序列包含該等組合選定之經排序元素;以及以一順序置放該等組合選定之經排序元素以產生一合併後經排序序列。
- 如請求項9之處理裝置,其中該合併電路用來以一升序或一降序中之一者產生該合併後經排序序列。
- 一種系統單晶片(SoC),其包含:一記憶體;以及一處理裝置,其通訊地耦接至該記憶體,該處理裝置包含:一組暫存器,其用來儲存多個元素,其中該等多個元素中之每一者包含多個位元;及排序電路,其可通訊地耦接至該組暫存器,該排序電路包含:一縱橫電路,其用來:將該等多個元素中之每一者在該組暫存器中的對應位置中左移一組位元;藉由該組暫存器中的該對應位置之一位置值來修改該等多個經左移元素中之每一者,而導致對應位置中的多個變換後元素; 經由該縱橫電路中的一大於或小於操作中之至少一者,將該等多個變換後元素中之每一者與其自身及彼此比較;以及基於該比較而將一致能指示符或一失能指示符中之一者指派給該等多個變換後元素中之每一者;以及一計數電路,其用來計數被指派給該等多個變換後元素中之每一者的該等致能指示符之一數目,以產生該等多個元素之一經排序序列。
- 如請求項11之SoC,其中該排序電路用來回應於該等多個元素之中的一元素之至少一值與該等多個元素之中的另一元素之一值為相同,而將該等多個元素中每一者左移。
- 如請求項11之SoC,其中該經排序序列包含致能指示符之數目之該計數,且該排序電路用來以一升序或一降序中之一者產生該等多個元素之該經排序序列。
- 如請求項13之SoC,其中該處理裝置進一步包含被耦接至該排序電路之一合併電路,其中該合併電路用來:將該經排序序列之該第一集合分成一第一半並且將該經排序序列之該第二集合分成一第二半,其中該第一半包含該經排序序列之該第一集合之該等多個經排序元素,而該第二半包含該經排序序列之該第二集合之該等多個經 排序元素;將該第一半中的該等多個經排序元素中之每一者與該第二半中的該等多個經排序元素中之每一者比較,且將該第二半中的該等多個經排序元素中之每一者與該第一半中的該等多個經排序元素中之每一者比較,用來以一順序產生該等多個經排序元素之該序列之一第三集合;以及產生該序列之該第三集合中的該等多個元素中之每一者之該對應位置之該位置值,作為一合併後經排序序列。
- 如請求項13之SoC,其中該處理裝置進一步包含被耦接至該排序電路之一合併電路,其中該合併電路用來:識別來自該經排序序列之該第一集合的該等多個經排序元素之一集合及來自該經排序序列之該第二集合的該等多個經排序元素之另一集合;將來自該經排序序列之該第一序列的每個該經識別集合中的該等多個經排序元素中之每一者與來自該經排序序列之該第二集合的每個該經識別之另一集合中的該等多個經排序元素中之每一者比較;基於該比較從來自該經排序序列之該第一序列的每個該經識別集合選擇該等經排序元素;將來自該經排序序列之該第二序列的每個該經識別之另一集合中的該等多個經排序元素中之每一者與來自該經排序序列之該第一集合的每個該經識別集合中的該等多個經排序元素中之每一者比較; 基於該比較從來自該經排序序列之該第二序列的每個該經識別之另一集合選擇該等經排序元素;將來自經排序序列之該第一序列的來自每個該經識別集合的該等選定之經排序元素與來自該經排序序列之該第二序列的來自每個該經識別之另一集合的該等選定之經排序元素聯合,用以產生一合併後序列,該合併後序列包含該等組合選定之經排序元素;以及以一順序置放該等組合選定之經排序元素以產生一合併後經排序序列。
- 一種用於排序之方法,其包含:藉由一處理裝置的一縱橫電路,將多個元素中之每一者在一組暫存器中的對應位置中左移一組位元;藉由該處理裝置的該縱橫電路,由該組暫存器中的該對應位置之一位置值來修改該等多個元素中之每一者,該修改會導致對應位置中的多個變換後元素,其中該等多個元素中之每一者包含多個位元;經由該縱橫電路中的一大於或小於操作中之至少一者,將該等多個變換後元素中之每一者與其自身及彼此比較;藉由該縱橫電路,基於該比較而將一致能指示符或一失能指示符中之一者指派給該等多個變換後元素中之每一者;以及藉由該處理裝置的一計數電路,計數被指派給該等多個變換後元素中之每一者的該等致能指示符之一數目,以 產生該等多個元素之一經排序序列。
- 如請求項16之方法,其中該經排序序列包含致能指示符之數目之該計數。
- 如請求項16之方法,其進一步包含:回應於該等多個元素之中的一元素之至少一值與該等多個元素之中的另一元素之一值為相同,而將該等多個元素中之每一者移位至該等對應位置之每一者中的一左側位置;以及至少產生該等多個經排序元素之該經排序序列之一第一集合及該等多個經排序元素之該經排序序列之第二集合。
- 如請求項18之方法,其進一步包含:將該經排序序列之該第一集合分成一第一半並且將該經排序序列之該第二集合分成一第二半,其中該第一半包含該經排序序列之該第一集合之該等多個經排序元素,而該第二半包含該經排序序列之該第二集合之該等多個經排序元素;將該第一半中的該等多個經排序元素中之每一者與該第二半中的該等多個經排序元素中之每一者比較,且將該第二半中的該等多個經排序元素中之每一者與該第一半中的該等多個經排序元素中之每一者比較,用來以一順序產生該等多個經排序元素之序列之一第三集合;以及產生該序列之該第三集合中的該等多個元素中之每一者之該對應位置之該位置值,作為一合併後經排序序列。
- 如請求項18之方法,其進一步包含:識別來自該經排序序列之該第一集合的該等多個經排序元素之一集合及來自該經排序序列之該第二集合的該等多個經排序元素之另一集合;將來自該經排序序列之該第一序列的每個該經識別集合中的該等多個經排序元素中之每一者與來自該經排序序列之該第二集合的每個該經識別之另一集合中的該等多個經排序元素中之每一者比較;基於該比較從來自該經排序序列之該第一序列的每個該經識別集合選擇該等經排序元素;將來自該經排序序列之該第二序列的每個該經識別另一集合中的該等多個經排序元素中之每一者與來自該經排序序列之該第一集合的每個該經識別集合中的該等多個經排序元素中之每一者比較;基於該比較從來自該經排序序列之該第二序列的每個該經識別之另一集合選擇該等經排序元素;將來自經排序序列之該第一序列的來自每個該經識別集合的該等選定之經排序元素與來自該經排序序列之該第二序列的來自每個該經識別之另一集合的該等選定之經排序元素聯合,用以產生一合併後序列,該合併後序列包含該等組合選定之經排序元素;以及以一順序置放該等組合選定之經排序元素以產生一合併後經排序序列。
- 一種包括指令之非暫時性機器可讀儲 存媒體,該等指令在由一處理裝置存取時,致使該處理裝置用來進行操作,包含:藉由該處理裝置的一縱橫電路,將多個元素中之每一者在一組暫存器中的對應位置中左移一組位元;藉由該處理裝置的該縱橫電路,由該組暫存器中的該對應位置之一位置值來修改該等多個元素中之每一者,該修改會導致對應位置中的多個變換後元素,其中該等多個元素中之每一者包含多個位元;經由該縱橫電路中的一大於或小於操作中之至少一者,將該等多個變換後元素中之每一者與其自身及彼此比較;藉由該縱橫電路,基於該比較而將一致能指示符或一失能指示符中之一者指派給該等多個變換後元素中之每一者;以及藉由該處理裝置的一計數電路,計數被指派給該等多個變換後元素中之每一者的該等致能指示符之一數目,以產生該等多個元素之一經排序序列。
- 如請求項21之非暫時性機器可讀儲存媒體,其中該經排序序列包含致能指示符之數目之該計數。
- 如請求項21之非暫時性機器可讀儲存媒體,其中該等操作進一步包含:回應於該等多個元素之中的一元素之至少一值與該等多個元素之中的另一元素之一值為相同,將該等多個元素中之每一者移位至該等對應位置之每一者中的一左側位 置;以及至少產生該等多個經排序元素之該經排序序列之一第一集合及該等多個經排序元素之該經排序序列之第二集合。
- 如請求項23之非暫時性機器可讀儲存媒體,其中該等操作進一步包含:將該經排序序列之該第一集合分成一第一半並且將該經排序序列之該第二集合分成一第二半,其中該第一半包含該經排序序列之該第一集合之該等多個經排序元素,而該第二半包含該經排序序列之該第二集合之該等多個經排序元素;將該第一半中的該等多個經排序元素中之每一者與該第二半中的該等多個經排序元素中之每一者比較,且將該第二半中的該等多個經排序元素中之每一者與該第一半中的該等多個經排序元素中之每一者比較,用來以一順序產生該等多個經排序元素之序列之一第三集合;以及產生該序列之該第三集合中的該等多個元素中之每一者之該對應位置之該位置值,作為一合併後經排序序列。
- 如請求項23之非暫時性機器可讀儲存媒體,其中該等操作進一步包含:識別來自該經排序序列之該第一集合的該等多個經排序元素之一集合及來自該經排序序列之該第二集合的該等多個經排序元素之另一集合;將來自該經排序序列之該第一序列的每個該經識別 集合中的該等多個經排序元素中之每一者與來自該經排序序列之該第二集合的每個該經識別之另一集合中的該等多個經排序元素中之每一者比較;基於該比較從來自該經排序序列之該第一序列的每個該經識別一集合選擇該等經排序元素;將來自該經排序序列之該第二序列的每個該經識別之另一集合中的該等多個經排序元素中之每一者與來自該經排序序列之該第一集合的每個該經識別集合中的該等多個經排序元素中之每一者比較;基於該比較從來自該經排序序列之該第二序列的每個該經識別之另一集合選擇該等經排序元素;將來自經排序序列之該第一序列的來自每個該經識別集合的該等選定之經排序元素與來自該經排序序列之該第二序列的來自每個該經識別之另一集合的該等選定之經排序元素聯合,用以產生一合併後序列,該合併後序列包含該等組合選定之經排序元素;以及以一順序置放該等組合選定之經排序元素以產生一合併後經排序序列。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/969,864 | 2015-12-15 | ||
US14/969,864 US10198264B2 (en) | 2015-12-15 | 2015-12-15 | Sorting data and merging sorted data in an instruction set architecture |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201723811A TW201723811A (zh) | 2017-07-01 |
TWI729019B true TWI729019B (zh) | 2021-06-01 |
Family
ID=59020026
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW105135244A TWI729019B (zh) | 2015-12-15 | 2016-10-31 | 處理裝置、系統單晶片、非暫時性機器可讀儲存媒體及用於排序之方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US10198264B2 (zh) |
EP (1) | EP3391202A1 (zh) |
CN (1) | CN108351786B (zh) |
TW (1) | TWI729019B (zh) |
WO (1) | WO2017105708A1 (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11106462B2 (en) * | 2019-05-24 | 2021-08-31 | Texas Instruments Incorporated | Method and apparatus for vector sorting |
US9606803B2 (en) | 2013-07-15 | 2017-03-28 | Texas Instruments Incorporated | Highly integrated scalable, flexible DSP megamodule architecture |
EP3428792B1 (en) | 2017-07-10 | 2022-05-04 | Arm Ltd | Testing bit values inside vector elements |
US11176084B2 (en) * | 2017-11-09 | 2021-11-16 | International Business Machines Corporation | SIMD instruction sorting pre-sorted source register's data elements into a first ascending order destination register and a second descending destination register |
US10936230B2 (en) * | 2018-01-26 | 2021-03-02 | National Technology & Engineering Solutions Of Sandia, Llc | Computational processor-in-memory with enhanced strided memory access |
US20200050452A1 (en) * | 2018-08-11 | 2020-02-13 | Intel Corporation | Systems, apparatuses, and methods for generating an index by sort order and reordering elements based on sort order |
US11082311B2 (en) * | 2019-06-06 | 2021-08-03 | Hewlett Packard Enterprise Development Lp | System and methods for supporting multiple management interfaces using a network analytics engine of a network switch |
US11249651B2 (en) * | 2019-10-29 | 2022-02-15 | Samsung Electronics Co., Ltd. | System and method for hierarchical sort acceleration near storage |
US11360740B1 (en) * | 2020-03-04 | 2022-06-14 | Unm Rainforest Innovations | Single-stage hardware sorting blocks and associated multiway merge sorting networks |
US11231935B2 (en) * | 2020-04-13 | 2022-01-25 | Oracle International Corporation | Vectorized sorted-set intersection using conflict-detection SIMD instructions |
CN112507284B (zh) * | 2020-12-18 | 2022-08-12 | 清华大学 | 稀疏矩阵乘法在可重构处理器阵列上的实现方法及装置 |
WO2023230943A1 (en) * | 2022-06-01 | 2023-12-07 | Huawei Technologies Co., Ltd. | System and method of data management |
GB2625271A (en) * | 2022-12-09 | 2024-06-19 | Imagination Tech Ltd | Sorting |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080104374A1 (en) * | 2006-10-31 | 2008-05-01 | Motorola, Inc. | Hardware sorter |
US20100235163A1 (en) * | 2009-03-16 | 2010-09-16 | Cheng-Tung Hsu | Method and system for encoding chinese words |
US8108411B2 (en) * | 2007-09-14 | 2012-01-31 | Yahoo! Inc. | Methods and systems for merging data sets |
TW201506797A (zh) * | 2013-04-11 | 2015-02-16 | Intel Corp | 用於在移動消除操作中旗標追蹤之系統與方法 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE3588212T2 (de) | 1984-08-22 | 1999-12-30 | Hitachi, Ltd. | Verfahren und Gerät zum Suchen von Daten |
US6122728A (en) * | 1998-02-02 | 2000-09-19 | Compaq Computer Corporation | Technique for ordering internal processor register accesses |
US7536532B2 (en) | 2006-09-27 | 2009-05-19 | International Business Machines Corporation | Merge operations of data arrays based on SIMD instructions |
GB2456775B (en) * | 2008-01-22 | 2012-10-31 | Advanced Risc Mach Ltd | Apparatus and method for performing permutation operations on data |
US8190943B2 (en) | 2009-03-13 | 2012-05-29 | Massachusetts Institute Of Technology | Systolic merge sorter |
US9021233B2 (en) * | 2011-09-28 | 2015-04-28 | Arm Limited | Interleaving data accesses issued in response to vector access instructions |
EP2831691A4 (en) * | 2012-03-30 | 2015-11-25 | Intel Corp | METHOD AND APPARATUS FOR FUSIONING AND SORTING SMALLER SORTED VECTORS IN LARGER SORTING VECTORS |
EP2859475A4 (en) | 2012-06-06 | 2016-03-02 | Spiral Genetics Inc | METHOD AND SYSTEM FOR SORTING DATA IN A CLOUD COMPUTER ENVIRONMENT AND OTHER DISTRIBUTED COMPUTER ENVIRONMENTS |
US9766888B2 (en) * | 2014-03-28 | 2017-09-19 | Intel Corporation | Processor instruction to store indexes of source data elements in positions representing a sorted order of the source data elements |
-
2015
- 2015-12-15 US US14/969,864 patent/US10198264B2/en active Active
-
2016
- 2016-10-31 TW TW105135244A patent/TWI729019B/zh not_active IP Right Cessation
- 2016-11-14 EP EP16876284.7A patent/EP3391202A1/en not_active Withdrawn
- 2016-11-14 WO PCT/US2016/061901 patent/WO2017105708A1/en active Application Filing
- 2016-11-14 CN CN201680066743.6A patent/CN108351786B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080104374A1 (en) * | 2006-10-31 | 2008-05-01 | Motorola, Inc. | Hardware sorter |
US8108411B2 (en) * | 2007-09-14 | 2012-01-31 | Yahoo! Inc. | Methods and systems for merging data sets |
US20100235163A1 (en) * | 2009-03-16 | 2010-09-16 | Cheng-Tung Hsu | Method and system for encoding chinese words |
TW201506797A (zh) * | 2013-04-11 | 2015-02-16 | Intel Corp | 用於在移動消除操作中旗標追蹤之系統與方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2017105708A1 (en) | 2017-06-22 |
CN108351786A (zh) | 2018-07-31 |
EP3391202A1 (en) | 2018-10-24 |
CN108351786B (zh) | 2024-03-08 |
US20170168827A1 (en) | 2017-06-15 |
US10198264B2 (en) | 2019-02-05 |
TW201723811A (zh) | 2017-07-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI729019B (zh) | 處理裝置、系統單晶片、非暫時性機器可讀儲存媒體及用於排序之方法 | |
TWI725077B (zh) | 用於排序的處理器、系統和方法 | |
TWI567751B (zh) | 多暫存器記憶體存取指令、處理器、方法及系統 | |
TWI743064B (zh) | 用於取得多重向量元素操作之指令及邏輯 | |
TW201729078A (zh) | 用於以通道為基礎的跨步儲存操作之指令及邏輯 | |
US10216516B2 (en) | Fused adjacent memory stores | |
TWI715678B (zh) | 用以執行鍵值查找指令之處理器與鍵值查找方法 | |
TW201725509A (zh) | 用於安全指令執行管線之指令及邏輯 | |
US9342284B2 (en) | Optimization of instructions to reduce memory access violations | |
US10635447B2 (en) | Scatter reduction instruction | |
TW201732556A (zh) | 用於集合運算之加速的硬體內容關聯之資料結構 | |
TW201643694A (zh) | 用於移位和(shift-sum)乘法器的指令及邏輯 | |
TW201730759A (zh) | 併合乘-加(fma)低功能性單元 | |
TW201729077A (zh) | 用於設置多重向量元素操作之指令及邏輯 | |
TW201723815A (zh) | 用於偶數與奇數向量取得操作之指令及邏輯 | |
CN108363668B (zh) | 线性存储器地址变换和管理 | |
EP3394726A1 (en) | Vector store/load instructions for array of structures | |
US20150186231A1 (en) | Allocating Machine Check Architecture Banks | |
US9851976B2 (en) | Instruction and logic for a matrix scheduler | |
US9792212B2 (en) | Virtual shared cache mechanism in a processing device | |
US20160179651A1 (en) | Enabling error detecting and reporting in machine check architecture | |
CN105723329B (zh) | 用于识别多指令串无序处理器中引退的指令的方法和设备 | |
US9823984B2 (en) | Remapping of memory in memory control architectures | |
CN105320494A (zh) | 带有一致的和非一致的子系统的存储器排序 | |
WO2019005054A1 (en) | DESIGN, DISCOVERY AND REUSE OF MODULAR ACCELERATOR FUNCTION UNIT (AFU) |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |