TWI812524B - 藉由算數及/或逐位元單元執行條件敘述的方法及系統 - Google Patents
藉由算數及/或逐位元單元執行條件敘述的方法及系統 Download PDFInfo
- Publication number
- TWI812524B TWI812524B TW111140591A TW111140591A TWI812524B TW I812524 B TWI812524 B TW I812524B TW 111140591 A TW111140591 A TW 111140591A TW 111140591 A TW111140591 A TW 111140591A TW I812524 B TWI812524 B TW I812524B
- Authority
- TW
- Taiwan
- Prior art keywords
- variable
- arithmetic
- bitwise
- condition
- computer program
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 86
- 238000004590 computer program Methods 0.000 claims abstract description 113
- 239000011159 matrix material Substances 0.000 claims description 60
- 238000012545 processing Methods 0.000 claims description 45
- 230000015654 memory Effects 0.000 claims description 22
- 230000014509 gene expression Effects 0.000 abstract description 153
- 230000008569 process Effects 0.000 description 55
- 230000009466 transformation Effects 0.000 description 49
- 230000001131 transforming effect Effects 0.000 description 16
- 230000009471 action Effects 0.000 description 11
- 238000003491 array Methods 0.000 description 10
- 230000001174 ascending effect Effects 0.000 description 10
- 230000006870 function Effects 0.000 description 8
- 238000005457 optimization Methods 0.000 description 8
- 239000012634 fragment Substances 0.000 description 6
- 229910002056 binary alloy Inorganic materials 0.000 description 5
- 238000004891 communication Methods 0.000 description 5
- 238000007667 floating Methods 0.000 description 5
- 238000011156 evaluation Methods 0.000 description 4
- 238000007781 pre-processing Methods 0.000 description 4
- 230000009467 reduction Effects 0.000 description 4
- 239000013598 vector Substances 0.000 description 4
- 238000013459 approach Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 238000000844 transformation Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000013515 script Methods 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000007717 exclusion Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 238000005549 size reduction Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/57—Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/33—Intelligent editors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/57—Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
- G06F7/575—Basic arithmetic logic units, i.e. devices selectable to perform either addition, subtraction or one of several logical operations, using, at least partially, the same circuitry
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
- G06F8/313—Logic programming, e.g. PROLOG programming language
-
- 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/30072—Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
- G06F8/4441—Reducing the execution time required by the program code
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
- Peptides Or Proteins (AREA)
- Executing Machine-Instructions (AREA)
- Earth Drilling (AREA)
- Saccharide Compounds (AREA)
Abstract
本發明提供方法、系統及設備,包括在電腦儲存媒體上編碼的電腦程式,以藉由一算數及/或逐位元單元執行一條件敘述。存取包括一條件敘述的一電腦程式,該條件敘述包括一布林條件。將該布林條件變換為該布林條件的一算數及/或逐位元表達式。該電腦程式的一算數及/或逐位元表達式包括取代該布林條件的該布林條件的該算數及/或逐位元表達式。該電腦程式的該算數及/或逐位元表達式由一處理器的一算數及/或逐位元運算單元執行。
Description
本描述通常係關於計算系統,且更特定而言係關於藉由計算電路執行條件敘述及表達式。
在電腦科學中,條件敘述是程式設計語言的特徵,其取決於指定的布林條件評估為True還是False來執行不同的計算或動作。
條件敘述執行需要對布林條件進行評估,因此需要對數字進行比較。這種比較決定一個數字是大於、等於還是小於另一個數字。布林條件通常由數位比較器評估。數位比較器是一種硬體電子裝置,其以二進制形式將兩個數字作為輸入,並決定一個數字是大於、小於還是等於另一個數字。
條件敘述使用數位比較器的輸出來切換到執行一段或另一段電腦代碼。數位比較器的每個整體«if-then do»運算需要處理器的至少2個時鐘週期。此外,數位比較器往往無法並行執行多級條件任務。因此,數位比較器(或ALU的邏輯塊)往往構成積體電路處理器的瓶頸。
本說明書描述系統可如何僅利用處理器的算數塊及/或逐位元單元來執行包括條件敘述的電腦程式。
可以實現本說明書中所描述之主題的特定實施例以實現以下優點中的一或多個。
將條件敘述變換成一組算數及/或逐位元運算。因此,電腦程式可以單獨由處理器的算數及/或逐位元單元執行。特定而言,可以在不使用數位比較器的情況下執行電腦程式。如上所述,數位比較器的每個整體運算需要處理器的至少2個時鐘週期。另一方面,處理器的算數單元能夠在1個時鐘週期內執行絕大多數算數計算。因此,本說明書中所描述之技術提高處理器對電腦程式的執行速度。可以移除數位比較器,從而為算數及/或逐位元運算單元提供更多空間。對於恆定的晶片尺寸,可以因此增加晶片的功率,從而提高執行速度。
此外,數位比較器往往無法並行執行多級條件任務。因此,數位比較器往往構成積體電路處理器的瓶頸。另一方面,可以將算數及/或逐位元表達式分段為多個片段,然後可以由多個算數及/或逐位元塊並行執行該些片段。因此,本說明書中所描述之技術可以藉由多個並行工作的算數塊執行電腦程式來進一步提高處理器的執行速度。
該方法可以用於各個階級的任何合適的程式設計語言。特定而言,該方法可以用於特定軟體程式的任何合適的低階語言(例如,組合語言,或處於指令集架構(instruction set architecture,ISA)的階級)以及任何合適的高階程式設計語言(例如,C++代碼或Java等)。
本說明書主題的一或多個實施例的細節在附圖及以下描述中闡述。主題的其他特徵、態樣及優點將自描述、附圖及申請專利範圍中變得顯而易見。
第1圖是示出實例系統100的圖。系統100是可以實現本說明書中所描述之技術的系統的實例。
系統100包括處理器110,諸如中央處理單元(Central Processing Unit,CPU)、圖形處理單元(Graphics Processing Unit,GPU)、神經處理單元(Neural Processing Unit,NPU)、張量處理器單元(Tensor Processor Unit,TPU)或任何其他類型的能夠執行條件任務的處理單元。處理器執行由電腦程式182中的指令指定的基本算數、邏輯、控制及輸入/輸出(input/output,I/O)操作。處理器110可以是微處理器,其中CPU包含在單個金屬氧化物半導體(metal-oxide-semiconductor,MOS)積體電路(integrated circuit,IC)晶片160上。包含CPU的IC亦可包含諸如動態隨機存取記憶體(dynamic random-access memory,DRAM)以及多於一層的快取記憶體的記憶體單元150,以及用於連接到輸入裝置180或輸出裝置190的周邊介面。
處理器110包括多個功能組件,包括執行算數及逐位元邏輯運算的一或多個算數及/或逐位元運算單元(arithmetic and/or bitwise operation unit,ABU) 130、向ABU 130提供運算元並儲存ABU運算結果的一或多個暫存器140以及藉由指導ABU 130、暫存器140及其他組件的協調運算來編排指令的執行的一或多個控制單元(control unit,CU) 120。
ABU 130是執行算數及/或逐位元邏輯運算的數位電路。ABU 130可以包括一或多個算數塊131、一或多個逐位元移位塊132和一或多個逐位元邏輯塊133。算數塊131執行算數運算,諸如加法、帶進位的加法、減法、帶借位的減法。逐位元移位塊132執行位元移位運算,諸如算數移位、邏輯移位、旋轉、藉由進位旋轉。逐位元邏輯塊133執行逐位元邏輯運算,諸如及(AND)、或(OR)、互斥或(Exclusive-OR)。在一些實施例中,ABU 130不包括任何數位比較器。在一些實施例中,處理器110不包括任何數位比較器。
在運算中,處理器110存取並執行包括指令序列的電腦程式182。可以自記憶體單元150或自輸入裝置180存取電腦程式182。處理器可以遵循指令週期,包括提取、解碼和執行步驟。可以同時提取、解碼和執行多個指令。執行步驟可以由單個動作或動作序列組成。在每個動作期間,電連接處理器的各個部分,因此它們可以執行全部或部分所需操作,然後完成動作。可以將結果寫入暫存器140之一或記憶體單元150。
CU 120指導處理器110的操作。CU 120控制記憶體150、ABU 130以響應處理器已存取的電腦程式182。特定而言,CU 120可以藉由提供計時信號及控制信號來指導其他單元的操作。
在一些實施例中,CU 120包括變換單元121,其將電腦程式182變換為電腦程式的算數及/或逐位元表達式122。變換單元121識別在電腦程式182中發現的條件敘述並將其變換為條件敘述的算數及/或逐位元表達式。變換單元121基於算數及/或逐位元運算及運算元生成電腦程式182的算數及/或逐位元表達式122。然後CU 120將電腦程式182的算數及/或逐位元表達式122提供給ABU 130。在其他實施例中,系統包括單獨的資料處理設備,其識別在電腦程式182中發現的條件敘述並將其變換為條件敘述的算數及/或逐位元表達式。
在一些實施例中,條件敘述的算數及/或逐位元表達式僅包括算數及/或逐位元運算。在一些實施例中,基本上所有的條件敘述(例如,超過50%、超過60%、超過70%、超過80%、超過90%或超過95%)都經過變換,但是若處理器仍包括可用於評估條件敘述的定義的適當子集的數位緊密器,則不必變換一些條件敘述。
ABU 130存取來自CU 120的電腦程式182的算數及/或逐位元表達式122。ABU 130可以存取來自暫存器140或記憶體單元150的運算元。運算元亦可以是由ABU 130自身生成的常數。ABU 130亦可以存取狀態信息,狀態信息傳達關於先前運算或當前運算的信息。ABU 130輸出執行的運算的結果。結果可以由資料字及/或狀態信息組成。結果可以儲存在暫存器140或記憶體單元150中。
第2圖是執行電腦程式的實例過程的流程圖。該過程可以藉由安裝在一或多個位置的一或多台電腦上並根據本說明書進行程式設計的一或多個電腦程式來實現。例如,該過程可以由第1圖所示的系統100來執行。為方便起見,該過程將被描述為由一或多台電腦的系統執行。一些實施例涉及在經變換的電腦程式在系統100上執行之前預處理電腦程式以例如在完全不同的電腦系統上進行變換。例如,源編譯器可以在為目標電腦生成目標代碼及/或機器級代碼時進行變換。
系統存取(210)電腦程式(例如,第1圖的電腦程式182)。系統決定(205)電腦程式是否包括至少一個包括布林條件的條件敘述。若電腦程式包括至少一個條件敘述,則系統將布林條件變換(220)為布林條件的算數及/或逐位元表達式。若電腦程式不包括任何條件敘述,則系統向ABU 130提供(240)電腦的算數及/或逐位元表達式以供執行。
在執行時,條件敘述使處理器取決於指定的布林條件評估為True還是False來執行相關聯的任務。任務可以包括一或多個計算及/或一或多個動作。指定的布林條件需要將至少一個變量與一個值或另一個變量進行比較。例如,比較可以決定變量(例如,A)的值是大於(例如,A>B)、等於(例如,A=B)還是小於(例如,A<B)另一個變量(例如,B)的值。進行比較的結果決定處理器是否執行相關聯的任務。
第3圖是示出if-then(-else)條件敘述310的基本結構的偽代碼。當解釋器發現If時,它期望布林條件301並將該布林條件301評估為值True或False兩者之一。若條件為True,則處理器執行後續任務302。否則,將在下一個分支中繼續執行。若存在替代任務303 (例如,在Else塊中),則處理器執行替代任務303。若不存在Else分支,則處理器執行End If之後的敘述。執行完任一分支後,控制返回到結束end If之後的點。
再次參考第2圖,系統(例如,變換單元121)將布林條件變換(220)為布林條件的算數及/或逐位元表達式。布林條件的算數及/或逐位元表達式將條件敘述的變量作為變量。在一些實行方案中,布林條件的算數及/或逐位元表達式使得布林條件的算數及/或逐位元表達式的輸出驗證以下兩個特性。若變量的值驗證了布林條件,則布林條件的算數及/或逐位元表達式等於1。若變量的值未驗證布林條件,則布林條件的算數及/或逐位元表達式等於0。因此,布林值TRUE轉換為1,而布林值FALSE轉換為0。在執行中,布林條件的算數及/或逐位元表達式保持可執行代碼的待執行的部分,同時將不是待執行的部分清空。關於第4圖更詳細地描述將布林條件敘述變換為算數及/或逐位元表達式。
可以以各個階級的任何合適的程式設計語言執行變換。特定而言,該方法可以用於特定軟體程式的任何合適的低階語言(例如,組合語言,或處於指令集架構(instruction set architecture,ISA)的階級)以及任何合適的高階程式設計語言(例如,C++代碼或Java等)。當將源代碼編譯為目標機器的可執行代碼時,該過程可以作為預處理步驟執行,或者當在解釋器而不是編譯器中實現時,可以作為即時處理步驟執行。
下面提供可用於將布林條件變換為算數及/或逐位元表達式的特定及通用變換公式的實例。
特定變換公式的實例(在asm及/或ISA級別)。
整數、字符或布林類型的特定變換公式
答案=
(對於x = y及x >=y條件)
答案=
(對於其他條件)
浮動或雙重類型的特定變換公式(浮點類型資料)
答案=
(對於x = y及x >=y條件)
答案=
(對於其他條件)
所有資料類型(包括數組及字串)的通用變換公式之實例
布林條件「if(=)」的一般變換
答案=
布林條件「if(>=)」的一般變換
答案=
布林條件「if(<)」的一般變換
答案=
布林條件「if(>)」的一般變換
答案=
符號:
- z是底數。
- A, B是包含N個元素的數組。
- A[i], B[i]是數組的元素。如整數、浮點數等單個元素是只有一個元素的一維數組(列向量矩陣)。
-答案是布林條件的算數及/或逐位元表達式。
-%是除法的餘數。
- ceil(x)是頂函數,它將
x映射到大於或等於
x的最小整數。
-若布林條件是
x=y,則
k=x-y -若布林條件是x≥y,則k=(x-y)-(|x-y|)
- x<y是
x≥y的「else」結果
底數z可以是數字系統的底數。大多數以數字系統為底數的算數運算(例如冪函數及除法的餘數)可以藉由移位運算立即進行計算。特定而言,若處理器使用二進制系統,則z可以等於2。
在數組和字串的情況下,可以將數組的元素正規化。可以使用任何已知的正規化方法。這提高了條件敘述的執行速度。
返回參考第2圖,系統(例如,變換單元121)生成(230)電腦程式的算數及/或逐位元表達式。系統將電腦程式中的布林條件替換為布林條件的算數及/或逐位元表達式。在執行中,布林條件的算數及/或逐位元表達式保持可執行代碼的待執行的部分,同時將不是待執行的部分清空。關於第8圖和第9圖更詳細地描述電腦程式的算數及/或逐位元表達式的生成。
系統(例如,CU 120)向算數及/或逐位元單元(例如,ABU 130)提供(240)電腦程式的算數及/或逐位元表達式以供執行。電腦程式的算數及/或逐位元表達式可以採用特定軟體程式的任何合適的程式設計語言,特定而言任何合適的低階語言(例如,組合語言,或處於指令集架構(instruction set architecture,ISA)的階級)以及任何合適的高階程式設計語言(例如,C++代碼或Java等)。電腦程式的算數及/或逐位元表達式的執行不需要任何直接的數字比較。系統因此可以向算數及/或逐位元單元,特定而言不包括任何數位比較器的算數及/或逐位元單元提供電腦程式的算數及/或逐位元表達式。
系統(例如,ABU 130)執行(250)電腦程式的算數及/或逐位元表達式。條件敘述的算數及/或逐位元表達式的執行提供與條件敘述的執行相同的結果,而不需要任何數字比較。因此,不包括任何數位比較器的處理器可以執行電腦程式。關於第11A圖和第11B圖更詳細地描述具有算數主體的條件敘述的執行。關於第12A圖和第12B圖更詳細地描述具有非算數主體的條件敘述的執行。如關於第10圖更詳細地描述的,可以將電腦程式的算數及/或逐位元表達式分段且這些片段並行運行(例如,同時或併發),特定而言在多級條件敘述的情況下。
第4圖是將布林條件變換(例如,第2圖的220)為算數及/或逐位元表達式的實例過程的流程圖。布林條件將A作為第一變量,將B作為第二變量。
系統(例如,變換單元121)用A減去(410) B。
系統(例如,變換單元121)計算(420)減法結果的絕對值。
系統(例如,變換單元121)基於減法結果的絕對值計算(430)指數。
系統(例如,變換單元121)藉由利用計算出的指數對底數取冪來計算(440)指數。底數可以是任何數字。特定而言,底數可以是處理器使用的數字系統的底數。特定而言,若處理器使用二進制系統,則底數可以等於2。大多數以數字系統為底數的算數運算(例如冪函數及除法的餘數)可以藉由移位運算立即進行計算。特定而言,可以藉由將等於1的位元向左移動等於計算出的指數的位數來執行利用計算出的指數對底數取冪。這提高了執行速度。
系統(例如,變換單元121)計算(450)布林條件的算數及/或逐位元表達式為指數除以底數的餘數。
若布林條件得到驗證,則計算指數使得指數等於0。任何數字的0次方都會得到1。因此,若布林條件得到驗證,則指數等於0,且布林條件的算數及/或逐位元表達式將等於1。
在一些實施例中,底數是2。若處理器使用二進制系統,則可以取指數的最後一位元對指數除以底數的餘數開方。這降低了計算的複雜性。
第5圖是將布林條件A = B變換為A = B的算數及/或逐位元表達式的實例過程的流程圖。
系統(例如,變換單元121)用A減去(510) B。
系統(例如,變換單元121)計算(520)指數為510的結果的絕對值。
系統(例如,變換單元121)藉由利用在520計算出的指數對底數取冪來計算(530)指數。
系統(例如,變換單元121)計算(540)布林條件的算數及/或逐位元表達式為在530計算出的指數除以底數的餘數。
計算A = B的算數及/或逐位元表達式,從而驗證以下內容。若A = B,則指數等於0,且A = B的算數及/或逐位元表達式等於1。若A ≠ B,則指數不等於0,且A = B的算數及/或逐位元表達式等於0。
第6圖是將布林條件A ≥ B變換為A ≥ B的算數及/或逐位元表達式的實例過程的流程圖。
系統(例如,變換單元121)用A減去(610) B。
系統(例如,變換單元121)計算(620) 610的結果的絕對值。
系統(例如,變換單元121)用620的結果減去(630) 610的結果。
系統(例如,變換單元121)計算(640)指數為630的結果的絕對值。
系統(例如,變換單元121)藉由利用在640計算出的指數對底數取冪來計算(650)指數。
系統(例如,變換單元121)計算(660)布林條件的算數及/或逐位元表達式為在650計算出的指數除以底數的餘數。
計算A ≥ B的算數及/或逐位元表達式,從而驗證以下內容。若A ≥ B,則指數等於0,且A ≥ B的算數及/或逐位元表達式等於1。若A < B,則指數不等於0,且A ≥ B的算數及/或逐位元表達式等於0。
第7A圖是將布林條件A < B變換為A < B的算數及/或逐位元表達式的實例過程的流程圖。
系統(例如,變換單元121)用A減去(710) B。
系統(例如,變換單元121)計算(720) 710的結果的絕對值。
系統(例如,變換單元121)用720的結果減去(730) 710的結果。
系統(例如,變換單元121)計算(740)指數為730的結果的絕對值。
系統(例如,變換單元121)藉由利用在740計算出的指數對底數取冪來計算(750)指數。
系統(例如,變換單元121)計算(760)布林條件的算數及/或逐位元表達式為在750計算出的指數除以底數的餘數。
計算A < B的算數及/或逐位元表達式,從而驗證以下內容。若A < B,則指數等於0,且布林條件的算數及/或逐位元表達式等於1。若A ≥ B,則指數不等於0,且布林條件的算數及/或逐位元表達式將等於0。
第7B圖是將布林條件A < B變換為A < B的算數及/或逐位元表達式的另一實例過程的流程圖。
系統(例如,變換單元121)用A減去(710B) B。
系統(例如,變換單元121)計算(720B)布林條件的算數及/或逐位元表達式為A減去B的結果的借位值。
計算A < B的算數及/或逐位元表達式,從而驗證以下內容。若A < B,則A減去B的結果的借位值等於1,且布林條件的算數及/或逐位元表達式等於1。若A ≥ B,則A減去B的結果的借位值等於0,且布林條件的算數及/或逐位元表達式等於0。
第8圖是當條件敘述具有算數主體時生成(例如,第2圖的230)電腦程式的算數及/或逐位元表達式的實例過程的流程圖。關於第11A圖和第11B圖更詳細地描述實例。
系統(例如,變換單元121)將後續任務(例如,第3圖的302)的敘述與布林條件的算數及/或逐位元表達式相乘(810)。因此,當執行電腦程式時,會發生以下情況。若布林條件得到驗證,則布林條件的算數及/或逐位元表達式等於1,後續任務藉由與布林條件的算數及/或逐位元表達式相乘來維持,且執行後續任務。若布林條件未得到驗證,則布林條件的算數及/或逐位元表達式等於0,後續任務藉由與布林條件的算數及/或逐位元表達式相乘而無效,且不執行後續任務。
若條件敘述包括用公式表示為算數敘述的替代任務(例如,第3圖的303),則系統(例如,變換單元121)將算數後續任務與1減去布林條件的算數及/或逐位元表達式相乘(820)。因此,當執行電腦程式時,會發生以下情況。若布林條件得到驗證,則布林條件的算數及/或逐位元表達式等於1。後續任務藉由與布林條件的算數及/或逐位元表達式相乘來維持,而替代任務藉由與1減去布林條件的算數及/或逐位元表達式相乘而無效。因此,執行後續任務,而不執行替代任務。若布林條件未得到驗證,則布林條件的算數及/或逐位元表達式等於0,後續任務藉由與布林條件的算數及/或逐位元表達式相乘而無效,而替代任務藉由與布林條件的算數及/或逐位元表達式相乘來維持。因此,執行替代任務,而不執行後續任務。
第9圖是當條件敘述具有非算數主體時生成(例如,第2圖的230)電腦程式的算數及/或逐位元表達式的實例過程的流程圖。關於第12A圖和第12B圖更詳細地描述實例。
系統(例如,變換單元121)在電腦程式的算數及/或逐位元表達式中包括到與布林條件的算數及/或逐位元表達式相關聯的標籤的無條件跳轉。使用布林條件的算數及/或逐位元表達式啟動標籤,使得當條件敘述的算數及/或逐位元表達式等於1時,標籤等於後續任務(例如,第3圖的302)的開始敘述。因此,當執行電腦程式時,會發生以下情況。若布林條件得到驗證,則布林條件的算數及/或逐位元表達式等於1。標籤等於後續任務的開始敘述。無條件跳轉敘述指向後續任務。在執行期間,當處理器發現無條件跳轉敘述時,處理器執行後續任務。
若存在替代任務(例如,第3圖的303),則進一步啟動標籤,使得當條件敘述的算數及/或逐位元表達式等於0時,標籤等於替代任務的開始敘述。因此,當執行電腦程式時,會發生以下情況。若布林條件得到驗證,則布林條件的算數及/或逐位元表達式等於1,標籤等於後續任務的開始敘述,無條件跳轉敘述指向後續任務,且執行後續任務。若條件敘述未得到驗證,則布林條件的算數及/或逐位元表達式等於0,標籤等於替代任務的開始敘述,跳轉敘述指向替代任務,且執行替代任務。
第10圖是提供(例如,第2圖的240)電腦程式的算數及/或逐位元表達式並視情況執行(例如,第2圖的250)電腦程式的算數及/或逐位元表達式的實例過程的流程圖。算數及/或逐位元表達式是分段的。然後可以由多個算數及/或逐位元塊並行執行多個片段。因此,藉由利用多個並行工作的算數塊執行電腦程式,可以提高處理器的執行速度。此外,可以並行執行多級條件敘述。
系統(例如,變換單元121)將電腦程式的算數及/或逐位元表達式分段(1010)成多個片段。
系統(例如,ABU 130)並行執行(1020)片段。特定而言,ABU 130可以執行多線程。ABU 130並行執行至少兩個片段。特定而言,可以使用反波蘭記法來執行片段。
第11A圖是包括具有算數主體的條件敘述1110A的C++電腦程式的實例。
條件敘述1110A的布林條件1101A是x是否等於y。後續任務1102是z等於1。替代任務1103是z等於0。條件敘述1110A可以如下表達:
若x等於y,則z等於1。
若x不等於y,則z等於0。
條件敘述1110A的執行因此需要對變量x和y進行比較。
第11B圖是將第11A圖的電腦程式變換所得的C++電腦程式的實例。
已將條件敘述1110A變換為僅包括算數及/或逐位元運算的算數及/或逐位元表達式1110B。布林條件的算數及/或逐位元表達式1101B是z=1<<(x-y))%2。因此,若x等於y,則z=1<<(x-y))%2=1,若x 不等於y,則z=1<<(x-y))%2=0。
條件敘述的算數及/或逐位元表達式1101B的執行因此提供與條件敘述1110A的執行相同的結果但不需要對變量x和y進行比較。
第11C圖是包括具有算數主體的條件敘述的組合語言電腦程式1100C的實例。第11D圖是將第11C圖的電腦程式變換所得的組合語言電腦程式1100D的實例。
第12A圖是包括具有非算數主體的條件敘述1210A的C++電腦程式的實例。
條件敘述1210A的布林條件1201A是x是否等於y。後續任務1201是輸出「等於」。替代任務1202是輸出「不等於」。條件敘述1210A可以如下表達。若x等於y,則程式輸出「等於」。若x不等於y,則程式輸出「不等於」。
第12B圖是將第12A圖的電腦程式變換所得的C++電腦程式的實例。
已將條件敘述1210A變換為僅包括算數及/或逐位元運算的算數及/或逐位元表達式1210B。布林條件1201B的算數及/或逐位元表達式是res=(1<<k)%2,其中k=x-y。因此,若x=y,則res=(1<<k)%2=1,而若x≠y,則res=(1<<k)%2=0。無條件跳轉1204在初始化敘述1205中初始化。無條件跳轉提供到標籤(「condition[res]」)的無條件跳轉。
當條件敘述的算數及/或逐位元表達式等於1 (res=1)時,標籤(「condition[1]」)等於後續任務1201的開始敘述(「to_do」)。無條件跳轉敘述指向後續任務1201。在執行期間,當處理器發現無條件跳轉敘述1204時,處理器執行後續任務1201。
當條件敘述的算數及/或逐位元表達式等於0 (res=0)時,標籤(「condition[0]」)等於替代任務1202的開始敘述(「elso_do」)。無條件跳轉敘述指向替代任務1202。在執行期間,當處理器發現無條件跳轉敘述1204時,處理器執行替代任務1202。
條件敘述的算數及/或逐位元表達式的執行因此提供與條件敘述的執行相同的結果。
第12C圖是包括具有算數主體的條件敘述的組合語言電腦程式1200C的實例。第12D圖是將第12C圖的電腦程式變換所得的組合語言電腦程式1200D的實例。
第13A圖示出ABU的積體電路的組合邏輯電路1310A的實例。
組合邏輯電路1310A包括用於執行雙位元減法的半減法器1302。半減法器包括互斥或閘1303、反閘1304和及閘1305。半減法器1302有兩個輸入:被減數A 1311和減數B 1312。半減法器1302有兩個輸出:差1313和借出值1314。當條件邏輯電路1310A需要從多位減法中的下一位借位時,設定借出信號1314。僅當A等於0且B等於1時,借出信號1314才等於1。因此,當A<B時,借出信號等於1,而當A≥B時,借出信號等於0。因此,借出信號提供布林條件A<B的評估。
移位運算子1306將等於1的位元向左移位與差信號1313相等的位數。這導致利用A減去B的結果對底數取冪。移位運算子1306輸出等於底數的指數除以A減去B的結果的餘數的結果的第一右位元。因此當A=B時移位運算子1306的輸出等於1,而當A≠B時移位運算子1306的輸出等於0。因此,移位運算子1306的輸出提供布林條件A=B的評估。
第13B圖示出當變量A和B各自僅包括一個位元時ABU的積體電路的組合邏輯電路1310B的實例。條件邏輯電路1310B包括反或閘1320和反閘1330。反閘1330的輸出提供布林條件A=B的評估。
此外,在一些實行方案中,當布林條件在矩陣類型資料(數組、列表、向量等)之間時,使用以下技術,其中元素由數字及/或字符表示。使用這些技術可以提高比較矩陣類型資料的效率,從而亦改進將布林條件變換為布林條件的算數及/或逐位元表達式的過程。不是比較矩陣類型變量A和B中的每個相應數字或字符(在同一位中),而是可以減少待比較的矩陣類型目標(例如數組)的大小,以提高將布林條件變換為布林條件的算數及/或逐位元表達式的效率,如結合第14圖所描述。
第14圖是減小例如待比較的矩陣類型資料的大小的實例過程的流程圖。該過程可以藉由安裝在一或多個位置的一或多台電腦上並根據本說明書進行程式設計的一或多個電腦程式來實現。例如,該過程可以由第1圖所示的系統100來執行。為方便起見,該過程將被描述為由一或多台電腦的系統執行,但應注意,第14圖的過程可以是用於執行變換的電腦程式的預處理的一部分,因此不需要在執行變換後的電腦程式的同一電腦系統中執行。此外,雖然結合具有矩陣類型資料(例如資料目標,諸如數組、列表、向量等)的單個變量來描述第14圖的過程,但應理解,該過程是針對待在布林條件下進行比較的變量(例如,變量A和變量B)中之每一者來執行的。
系統決定(1400)變量是否具有奇數個元素。若是,則在後續處理期間拆分(1410)變量之前,可以從變量中移除(1405)單個元素,且將該單個元素添加到所形成的變量的較小版本中。例如,可以針對變量的較小版本實例化新矩陣類型變量,且可以將輸入變量的元素(例如,最後一個元素)的資料值添加到新變量(例如,在新變量的第一個元素中)中,然後可以從初始變量中移除該元素,從而產生偶數個元素以供拆分(1410)。請注意,應該從待比較的每個相應變量中移除(1405) (就位置而言,例如,在數組中的)相同的單個元素(以添加到變量的較小版本)。此外,一些實行方案在適當的位置處理變量,且不涉及實例化變量的新版本;因此,對以下變量的參考包括實例化新變量的實行方案和不實例化新變量的實行方案。最後,請注意,可以藉由遞回執行此處描述的相同過程來處置多維數組。
將變量拆分(1410)成雙元素對,其中雙元素對中之每一者中的資料值將用於形成較小變量的資料值。例如,第一雙元素對可以是輸入變量的第一元素和第二元素,第二雙元素對可以是輸入變量的第三元素和第四元素,第三雙元素對可以是輸入變量的第五元素和第六元素,依此類推。此外,可以以其他合適的方式形成雙元素對(其中變量的每個元素是僅一對的一部分)。應注意,對於每組比較變量,例如,對於給定類型的所有比較變量,應該以相同的方式進行拆分(1410)成對。通常,待藉由布林條件進行比較的每個變量的較小版本是使用來自數學序列的代表數形成的,其中數學序列的成員之間的差越來越大,其中每個代表數是表示雙元素對中的一對數字或字符的一個數字,且當該輸入變量具有奇數個資料元素時,每個變量的較小版本亦將包括輸入變量中的單個元素(例如,最後一個資料元素)。此外,在一些實行方案中,針對每個比較(矩陣類型)變量完全相同地執行所有優化步驟。
為了將一對數字或字符表示為一個數字,可以利用這些序列的成員之間的差遞增的性質,即差遞增的數學序列(幾何序列等)的兩個成員的和是唯一的。因此,對於變量的雙元素對中的每對元素,對數學序列的對應成員求和(1415),其中數學序列的成員對應於變量的雙元素對中的一對元素,其中該對元素中的每個資料值用作數學序列中相應成員的位置索引。這可以理解為用數學序列的成員替換該對中的每個元素,使其在該數學序列中的索引等於該對中元素的資料值,然後將變量的雙元素對中的每對元素的數學序列的兩個成員相加,以形成較小(縮小尺寸的)變量中的每個相應代表數。請注意,為了推導出比較(矩陣類型)變量的代表數(1415),應用相同的(一個選出的)數學序列;在一些實行方案中,對所有比較(矩陣類型)變量應用相同的數學序列(當推導出代表數時)。
系統亦可決定(1420)元素在變量中的位置是否重要。例如,當處理排序數組時,位置不重要(因為排序數組中元素的位置是已知的),且當處理邏輯條件時,位置不重要,其中認為對[2,3]等於對[3,2]。在其他情況下,例如,當認為對[2,3]不等於對[3,2]時,位置很重要。若位置不重要,則可按原樣使用數學序列各成員數總和中的每個代表數。但是,若元素在變量中的位置很重要,則對變量的雙元素對中的元素對計算(1425)位置變量。計算(1425)一對元素的每個位置變量可涉及利用布林條件Y > X的結果對負1取冪,其中X是該對元素中的第一元素,Y是該對元素中的第二元素。因此,若Y > X,則位置變量為負1,若Y ≤ X,則位置變量為正1。此外,請注意,在一些實行方案中亦可以使用反布林條件。
對於其中元素位置很重要的比較變量,藉由將數學序列成員的每個和與變量的雙元素對中的對應元素對的位置變量相乘(1430)來進一步形成代表數。因此,將F(n)作為藉由選定數學序列中的索引決定數字的函數(序列成員之間的差越來越大),x可以是第一數字,y可以是第二數字,且z可以是由此形成的唯一數(代表數)。元素在對中的位置很重要的公式為:
元素在對中的位置不重要的公式為:
Z = F(x)+F(y)
請注意,數學序列的成員之間的差越來越大的這些序列是其中|a
(i+1)- a
(i)| > |a
(i)– a
(i -1)|的序列,例如,幾何序列、指數序列等。其中,a
n是序列中索引(位置)等於n的序列的成員。此外,斐波那契序列從級數的第三個成員開始接收此特性。
此外,將代表數儲存(1435)在變量的較小(縮小尺寸的)版本中,以用於評估原始變量A和B之間的布林條件,或用於在評估原始變量A和B之間的布林條件之前進一步縮小變量的尺寸。例如,每個新對的代表數可以添加到新數組中,該數組是先前數組的較小(縮小尺寸的)版本。請注意,代表數應儲存(1435)在變量的較小版本中,以及對於所有比較變量應以相同次序從初始變量中移除(1405)任何單個元素。
系統可決定(1440)變量是否需要進一步縮減尺寸。例如,鑒於(1)執行額外尺寸縮減所花費的時間(變量中的元素數量和比較變量的數量越多,與通常比較相比減少的時間優勢越大)及/或(2)消耗的內存量(由於級數的高速增長,在不支持長算數的情況下,減少的變量中元素的值將增長,同時為了節省內存,系統可以捨入元素的值,這可能導致非常大或非常小的數字發生衝突)與(矩陣類型變量A和B中相同位的每個相應數字或字符的)傳統比較,若執行此操作不會提高效率,則不需要進一步縮減。因此,若不需要進一步縮減,則第14圖的過程結束。若需要進一步縮減,則重複第14圖的過程以再次縮減變量的尺寸。
請注意,對於待在布林條件下進行比較的變量A和B (具有矩陣類型資料)執行第14圖的過程。使用第14圖的過程縮減尺寸的變量的元素的資料值可以是數字及/或字符,且變量A和B的尺寸縮減的結果是提高將布林條件變換為布林條件的算數及/或逐位元表達式的效率。
此外,如上所述,在處理排序數組時,元素在待比較的矩陣類型變量中的位置並不重要。鑒於此,在一些實行方案中,將待比較的每個矩陣類型變量(數組、列表、向量等)進行排序以避免決定(1420)、計算(1425)及乘法(1430)運算的一或多個部分(或全部)。結合將布林條件變換為布林條件的算數及/或逐位元表達式,以下排序技術可以提供提高的效率。例如,不是使用現代排序技術(例如,快速排序(quicksort或qsort)、泡式排序、選擇排序、插入排序等)在單個線程上對整個數組進行排序,而是可以將數組拆分為多個較小的子數組,這些子數組的數量對應於可用線程的數量,其中每個較小的子數組處理可以由單獨的線程並行執行,且其中原始數組中每個元素的(搜索)位置索引是藉由將每個元素的值與初始數組的其他元素進行比較來決定的。
第15圖是將矩陣類型資料並行排序的實例過程的流程圖,例如待比較的矩陣類型資料,可與將布林條件變換為布林條件的算數及/或逐位元表達式結合使用。該過程可以藉由安裝在一或多個位置的一或多台電腦上並根據本說明書進行程式設計的一或多個電腦程式來實現。例如,該過程可以由第1圖所示的系統100來執行。為方便起見,該過程將被描述為由一或多台電腦的系統執行,但應注意,第15圖的過程可以是用於執行變換的電腦程式的預處理的一部分,因此不需要在執行變換後的電腦程式的同一電腦系統中執行。在任何情況下,這種並行排序方案都可以提高處理操作的總計算效率。
基於初始(選擇用於排序)矩陣類型資料變量,系統可以實例化(1500)新變量,其元素數量與矩陣類型資料變量相同。例如,可以創建與初始(待排序)數組中元素數量相同的新數組,且新數組中的所有元素位置都可以用空值填充。系統分配必要的記憶容量來儲存新變量。
系統將矩陣類型資料變量劃分(1505)為多個子部分,這些子部分的數量等於待用於執行排序的處理線程的數量。例如,初始(待排序)數組可以拆分為多個子數組,這些子數組的數量等於為排序任務分配的線程的數量。請注意,矩陣類型資料變量的子部分不必在維度上相等。
系統中的各個處理線程中之每一者決定(1510)由該處理線程處置的子部分中的每個元素的位置索引。這可能涉及將子部分的每個元素的值與矩陣類型資料變量中的所有其他值進行比較,以及計數矩陣類型資料變量的元素有多少小於(或針對倒數位置索引大於)子部分的比較元素。例如,在每個線程的級別上,系統可以藉由將子數組的每個元素的值與初始數組中其餘元素的值進行比較並計數初始數組中值大於(或小於)比較元素的元素的數量來決定排序數組中每個子數組的每個元素的位置索引。
當計數值小於比較元素的元素的數量時,結果計數為位置索引,即,計數為零表示矩陣類型資料變量中沒有其他值小於變量子部分中的比較值,因此該比較值在排序變量中排在第一(按升序排序時)。相比之下,當計算值大於比較元素的元素的數量時,結果計數為倒數位置索引,即,計數為零表示矩陣類型資料變量中沒有其他值大於變量子部分中的比較值,因此該比較值在排序變量中排在最後(按升序排序時)。
在一些實行方案中,系統決定(1515)排序是按升序還是按降序進行。在其他實行方案中,排序總是以一種或另一種次序進行,因此系統不需要決定(1515)。
當以升序排序時,系統根據處理線程所決定的位置索引以升序將新變量中的值替換(1520)為來自矩陣類型資料變量的值。因此,對於常規位置索引(當計數為較少的元素數時),位置索引為零的矩陣類型資料變量中的值位於新變量的第一個位置,位置索引為一的矩陣類型資料變量中的值位於新變量的第二個位置,位置索引為二的矩陣類型資料變量中的值在新變量中位於第三個位置,依此類推。例如,藉由以升序將新數組中的空值替換為具有相同位置索引的初始數組中的相應值,可以將初始數組中子數組級別的位置索引計數結果合併到新數組中。
然後,系統檢查(1525)以查看新變量中是否存在任何保持不變的值。例如,由於初始數組中存在相等值的元素,系統可以檢查新數組中是否仍有空值的元素。在這個階段,若新數組中沒有空值元素,則可以將新數組視為排序(初始)數組的等價物。請注意,初始變量中的每個元素的值等於初始變量另一個元素的值將獲得與該另一個元素相同的位置索引,因此,當初始變量中存在相等值時,新變量中的一或多個元素在替換(1520)後將保持不變。
發生這種情況時,系統將新變量中任何保持不變的值替換(1530)為新變量中的左相鄰元素值。例如,新數組中具有空值的所有剩餘元素可以替換為空值元素左側的第一個(無空)值元素,在此之後可以將新數組視為排序(初始)數組的等價物。鑒於初始矩陣類型資料變量的元素中相等值的數量,將根據需要進行多次替換。
同樣,當以降序排序時,系統根據處理線程所決定的位置索引以降序將新變量中的值替換(1535)為來自矩陣類型資料變量的值。因此,對於倒數位置索引(當計數為較多的元素數時),位置索引為零的矩陣類型資料變量中的值位於新變量的第一個位置,位置索引為一的矩陣類型資料變量中的值位於新變量的第二個位置,位置索引為二的矩陣類型資料變量中的值在新變量中位於第三個位置,依此類推。例如,藉由以降序將新數組中的空值替換為具有相同位置索引的初始數組中的相應值,可以將初始數組中子數組級別的位置索引計數結果合併到新數組中。
然後,系統檢查(1540)以查看新變量中是否存在任何保持不變的值。例如,由於初始數組中存在相等值的元素,系統可以檢查新數組中是否仍有空值的元素。在這個階段,若新數組中沒有空值元素,則可以將新數組視為排序(初始)數組的等價物。請注意,初始變量中的每個元素的值等於初始變量另一個元素的值將獲得與該另一個元素相同的位置索引,因此,當初始變量中存在相等值時,新變量中的一或多個元素在替換(1535)後將保持不變。
發生這種情況時,系統將新變量中任何保持不變的值替換(1545)為新變量中的右相鄰元素值。例如,新數組中具有空值的所有剩餘元素可以替換為空值元素右側的第一個(無空)值元素,在此之後可以將新數組視為排序(初始)數組的等價物。鑒於初始矩陣類型資料變量的元素中相等值的數量,將根據需要多次執行此操作。
最後,系統使用(1550)新變量作為矩陣類型資料變量的排序版本。在一些情況下,這是藉由在第14圖的過程中使用新變量而不是初始矩陣類型資料變量來實現的。在一些情況下,這是藉由用新變量中的排序值覆蓋初始矩陣類型資料變量中的值來實現的,且在第14圖的過程中使用當前排序的矩陣類型資料變量。
此外,應當注意,第15圖的並行排序過程可以有效地用於除第14圖的矩陣優化(用於比較矩陣類型資料)過程之外的上下文中。例如,第15圖的並行排序過程亦可用於矩陣類型資料的有效排序(無需進一步矩陣優化和比較)的上下文中,以諸如使用將布林條件變換為布林條件的算數及/或逐位元表達式的方法優化廣泛多種任務的標準排序,如本申請案中所描述。
在一些實行方案中,對矩陣類型資料目標進行排序的方法可以包括:實例化與矩陣類型資料目標具有相同元素數的新目標;將矩陣類型資料目標劃分為多個子部分,這些子部分的數量等於待用於執行排序的處理線程的數量;由相應處理線程中之每一者藉由將子部分的每個元素的值與矩陣類型資料目標中的所有其他值進行比較並計數矩陣類型資料目標的元素有多少小於或針對倒數位置索引大於子部分的比較元素來決定由處理線程處置的子部分中的每個元素的位置索引;根據處理線程所決定的位置索引,以升序或降序將新目標中的值替換為來自矩陣類型資料目標的值;以及取決於排序是升序還是降序,將新目標中任何保持不變的值替換為新目標中的左相鄰元素值或右相鄰元素值,其中新目標用作矩陣類型資料目標的排序版本。請注意,藉由比較值來決定位置索引可以採用結合第1圖至第13圖所描述之系統及技術,以用於將布林條件變換為布林條件的算數及/或逐位元表達式,這導致處理操作的效率提高。
此外,應注意,第14圖中比較矩陣類型資料(或目標)的過程的優化可有效地用於除將布林條件變換為布林條件的算數及/或逐位元表達式之外的上下文中。例如,該矩陣變量優化過程亦可用於比較的上下文中,而無需將布林條件轉換為算數及/或逐位元表達式,以諸如優化標準比較。此外,第14圖的優化過程可以獨立於比較過程來使用。例如,第14圖的優化過程可用於將矩陣壓縮為較小尺寸的矩陣,以實現高效儲存(所需記憶體較少)。
在一些實行方案中,第14圖的矩陣變量優化過程用於更普遍地提高矩陣類型目標比較的效率。因此,方法(根據一些實施例)可以包括:存取包括條件敘述的電腦程式,該條件敘述包括將第一變量A和第二變量B進行比較的布林條件,其中第一變量A和第二變量B中之每一者包括矩陣類型資料;將第一變量A和第二變量B中之每一者拆分成第一變量A的第一雙元素對和第二變量B的第二雙元素對;以及使用來自數學序列的代表數形成第一變量A和第二變量B中之每一者的較小版本以供比較,其中數學數列的成員之間的差越來越大,其中用於第一變量A的較小版本的代表數中之每一者是根據數學序列的各個成員計算得出的,該數學序列中的索引等於第一變量A的第一雙元素對中的資料值,用於第二變量B的較小版本的代表數中之每一者是根據數學序列的各個成員計算得出的,該數學序列中的索引等於第二變量B的第二雙元素對中的資料值,且其中當第一變量A和第二變量B中之每一者具有奇數個元素時,在拆分之前從第一變量A和第二變量B中移除單個元素,以及將第一變量A和第二變量B中的單個元素分別添加到第一變量A和第二變量B的較小版本中。此外,該方法包括在運行電腦程式時比較第一變量A和第二變量B的較小版本,以評估條件敘述的布林條件。
在一些實施例中,上述方法的形成操作包括:藉由針對第一變量A的較小版本的每個元素而對與第一變量A的第一雙元素對中的資料值相對應的數學序列的兩個相應成員求和,計算用於第一變量A的較小版本的代表數;以及藉由針對第二變量B的較小版本的每個元素而對與第二變量B的第二雙元素對中的資料值相對應的數學序列的兩個相應成員求和,計算用於第二變量B的較小版本的代表數。
在一些實施例中,上述方法包括:計算第一變量A的第一雙元素對的第一位置變量;計算第二變量B的第二雙元素對的第二位置變量;其中計算一對元素的每個位置變量包括利用布林條件Y > X的結果對等於負1的數字取冪,其中X是這對元素中的第一元素,Y是這對元素中的第二元素;且其中該形成包括:藉由針對第一變量A的較小版本的每個元素而將第一位置變量中之一者乘以與第一變量A的第一雙元素對中的資料值相對應的數學序列的相應成員中之兩者的和,計算第一變量A的較小版本的代表數,以及藉由針對第二變量B的較小版本的每個元素而將第二位置變量中之一者乘以與第二變量B的第二雙元素對中的資料值性對應的數學序列的相應成員中之兩者的和,計算第二變量B的較小版本的代表數。
在一些實行方案中,對所有比較(矩陣類型)變量應用相同(同一)的步驟、次序、工具(例如數學級數序列)。此外,本文檔中描述的一或多個系統可以用於一或多個實施例中,其中一或多個記憶體單元用以使一或多個指令處理單元執行上述方法的操作。用於矩陣類型目標比較的這些系統和方法提高了處理速度,因為在特定電腦(具有給定的處理能力)上可以儘可能比以前在該特定電腦上更快地比較矩陣類型資料。此外,用於矩陣類型目標比較的這些系統和方法可以使內存消耗更少,因為變量的較小版本可以需要比初始變量更少的內存。
一些實施例包括一種方法,該方法包括:存取電腦程式,其中該電腦程式包括條件敘述,該條件敘述包括布林條件;將布林條件變換為布林條件的算數及/或逐位元表達式;生成電腦程式的算數及/或逐位元表達式,包括取代布林條件的布林條件的算數及/或逐位元表達式;提供電腦程式的算數及/或逐位元表達式,其中電腦程式的算數及/或逐位元表達式用以由處理器的算數及/或逐位元運算單元執行。布林條件的算數及/或逐位元表達式可以驗證以下內容:若布林條件得到驗證,則布林條件的算數及/或逐位元表達式等於1;若布林條件未得到驗證,則布林條件的算數及/或逐位元表達式等於0。
在上述方法的一些實施例中,布林條件採用第一變量A和第二變量B,且將布林條件變換為布林條件的算數及/或逐位元表達式包括:A減去B;計算A減去B的結果的絕對值;基於A減去B的結果的絕對值計算指數;藉由利用計算出的指數對底數取冪來計算指數;以及基於指數除以底數的餘數計算布林條件的算數及/或逐位元表達式。布林條件可以是A = B,且將布林條件變換為布林條件的算數及/或逐位元表達式可以包括:計算指數為A減去B的結果的絕對值;以及計算布林條件的算數及/或逐位元表達式為指數除以底數的餘數。
布林條件可以是A ≥ B,且將布林條件變換為布林條件的算數及/或逐位元表達式可以包括:用A減去B的結果的絕對值減去A減去B的結果;計算指數為用A減去B的結果的絕對值減去A減去B的結果的結果的絕對值;以及計算布林條件的算數及/或逐位元表達式為指數除以底數的餘數。
布林條件可以是A < B,且將布林條件變換為布林條件的算數及/或逐位元表達式可以包括:用A減去B的結果的絕對值減去A減去B的結果;計算指數為用A減去B的結果的絕對值減去A減去B的結果的結果的絕對值;藉由利用指數將底數取冪來計算指數;以及計算布林條件的算數及/或逐位元表達式為1減去指數除以底數的餘數。
第一變量A和第二變量B可以是浮點類型資料。在一些實施例中,布林條件是A = B,第一變量A和第二變量B是浮點類型資料,且將布林條件變換為布林條件的算數及/或逐位元表達式包括:計算指數為頂函數應用於A減去B的結果的絕對值的結果;以及計算布林條件的算數及/或逐位元表達式為指數除以底數的餘數。在一些實施例中,布林條件是A ≥ B,第一變量A和第二變量B是浮點類型資料,且將布林條件變換為布林條件的算數及/或逐位元表達式包括:用A減去B的結果的絕對值減去A減去B的結果;計算指數為頂函數應用於以下的結果:用A減去B的結果的絕對值減去A減去B的結果的結果的絕對值;以及計算布林條件的算數及/或逐位元表達式為指數除以底數的餘數。在一些實施例中,布林條件是A < B,第一變量A和第二變量B是浮點類型資料,且將布林條件變換為布林條件的算數及/或逐位元表達式包括:用A減去B的結果的絕對值減去A減去B的結果;計算指數為頂函數應用於以下的結果:用A減去B的結果的絕對值減去A減去B的結果的結果的絕對值;藉由將底數乘以指數計算指數;以及計算布林條件的算數及/或逐位元表達式作為1減去指數除以底數的餘數。
在一些實施例中,第一變量A和第二變量B可以是布林類型資料(0和1),布林條件可以是A = B,且將布林條件變換為布林條件的算數及/或逐位元表達式可以包括:計算A與B的和;以及計算布林條件的算數及/或逐位元表達式為1減去該和除以底數的餘數。
在一些實施例中,第一變量A和第二變量B可以包括矩陣類型資料,且方法可以包括:將第一變量A和第二變量B中之每一者拆分成第一變量A的第一雙元素對和第二變量B的第二雙元素對;以及使用來自數學序列的代表數形成第一變量A和第二變量B中之每一者的較小版本以供比較,其中數學數列的成員之間的差越來越大;其中用於第一變量A的較小版本的代表數中之每一者是根據數學序列的各個成員計算得出的,該數學序列中的索引等於第一變量A的第一雙元素對中的資料值;其中用於第二變量B的較小版本的代表數中之每一者是根據數學序列的各個成員計算得出的,該數學序列中的索引等於第二變量B的第二雙元素對中的資料值;且其中當第一變量A和第二變量B中之每一者具有奇數個元素時,在拆分之前從第一變量A和第二變量B中移除單個元素,以及將第一變量A和第二變量B中的單個元素分別添加到第一變量A和第二變量B的較小版本中。
該形成可以包括:藉由針對第一變量A的較小版本的每個元素而對與第一變量A的第一雙元素對中的資料值相對應的數學序列的兩個相應成員求和,計算用於第一變量A的較小版本的代表數;以及藉由針對第二變量B的較小版本的每個元素而對與第二變量B的第二雙元素對中的資料值相對應的數學序列的兩個相應成員求和,計算用於第二變量B的較小版本的代表數。
上述方法亦可以包括:對第一變量A和第二變量B中之每一者進行排序,其中矩陣類型資料變量的排序包括:實例化與矩陣類型資料變量具有相同元素數的新變量;將矩陣類型資料變量劃分為多個子部分,這些子部分的數量等於待用於執行排序的處理線程的數量;由相應處理線程中之每一者藉由將子部分的每個元素的值與矩陣類型資料變量中的所有其他值進行比較並計數矩陣類型資料變量的元素有多少小於或針對倒數位置索引大於子部分的比較元素來決定由處理線程處置的子部分中的每個元素的位置索引;根據處理線程所決定的位置索引,以升序或降序將新變量中的值替換為來自矩陣類型資料變量的值;以及取決於排序是升序還是降序,將新變量中任何保持不變的值替換為新變量中的左相鄰元素值或右相鄰元素值,其中新變量用作矩陣類型資料變量的排序版本。
上述方法亦可以包括:計算第一變量A的第一雙元素對的第一位置變量;計算第二變量B的第二雙元素對的第二位置變量;其中計算一對元素的每個位置變量包括利用布林條件Y > X的結果對等於負1的數字取冪,其中X是這對元素中的第一元素,Y是這對元素中的第二元素;且其中該形成包括:藉由針對第一變量A的較小版本的每個元素而將第一位置變量中之一者乘以與第一變量A的第一雙元素對中的資料值相對應的數學序列的相應成員中之兩者的和,計算第一變量A的較小版本的代表數,以及藉由針對第二變量B的較小版本的每個元素而將第二位置變量中之一者乘以與第二變量B的第二雙元素對中的資料值性對應的數學序列的相應成員中之兩者的和,計算第二變量B的較小版本的代表數。
在上述實施例中,底數可以等於2,其中處理器使用二進制系統,且其中取指數的最後一位元來對指數除以底數的餘數開方。此外,當處理器使用二進制系統時,可以藉由將等於1的位元向左移動等於計算出的指數的位數來執行利用計算出的指數對底數取冪。
布林條件可以是A < B,且將布林條件變換為布林條件的算數及/或逐位元表達式可以包括:A減去B;計算布林條件的算數及/或逐位元表達式為A減去B的結果的借位值。
提供電腦程式的算數及/或逐位元表達式可包括:將電腦程式的算數及/或逐位元表達式分段為算數及/或逐位元表達式的多個片段;且算數及/或逐位元表達式的片段可用以並行執行。
布林條件可以包括用公式表示為算數敘述的後續任務,且生成電腦程式的算數及/或逐位元表達式可以包括:將後續任務與布林條件的算數及/或逐位元表達式相乘。布林條件可以包括用公式表示為算數敘述的替代任務,且生成電腦程式的算數及/或逐位元表達式可以包括:將替代任務與1減去布林條件的算數及/或逐位元表達式相乘。
布林條件可以包括用公式表示為非算數敘述的後續任務,且生成電腦程式的算數及/或逐位元表達式可以包括:在電腦程式的算數及/或逐位元表達式中包括到與布林條件的算數及/或逐位元表達式相關聯的標籤的無條件跳轉。此外,當布林條件的算數及/或逐位元表達式的值等於1時,標籤可以等於後續任務的敘述的開始。此外,布林條件可以包括用公式表示為非算數敘述的替代任務,其中當布林條件的算數及/或逐位元表達式的值等於0時,標籤等於替代任務的敘述的開始。
在一些實施例中,該方法進一步包括:由算數及/或逐位元運算單元執行電腦程式的算數及/或逐位元表達式。在一些實施例中,至少變換由第一電腦進行,且執行由第二電腦進行。在一些實施例中,變換和執行由同一電腦進行。
一些實施例包括一種系統,該系統包括:一或多個指令處理單元,包括至少一個控制單元、至少一個算數及/或逐位元運算單元以及至少一個暫存器單元;以及一或多個記憶體單元,與一或多個指令處理單元耦合;其中系統用以藉由使用至少一個算數及/或逐位元運算單元來執行基本上所有條件敘述的布林條件的算數及/或逐位元表達式,從而在電腦程式中執行各自包括布林條件之基本上所有條件敘述。在此類系統實施例中,系統的至少一個控制單元或單獨資料處理設備可用以執行上述方法實施例中之任一者的方法操作,且處理器的至少一個算數及/或逐位元運算單元可以包括用以執行電腦程式的算數及/或逐位元表達式的一或多個指令處理單元。此外,至少一個算數及/或逐位元運算單元可以包括算數塊、逐位元移位塊及逐位元邏輯塊中之一或多者,且至少一個算數及/或逐位元運算單元不必包括任何數位比較器。
本說明書中所描述之主題及功能操作的實施例可以在數位電子電路中、有形體現的電腦軟體或韌體中、電腦硬體(包括本說明書中揭露的結構及其結構等效物)中或它們中的一或多者之組合中實現。本說明書中所描述之主題的實施例可以實現為一或多個電腦程式,即在有形非暫時性儲存媒體上編碼的電腦程式指令的一或多個模組,用於由資料處理設備執行或控制其操作。電腦儲存媒體可以是機器可讀儲存裝置、機器可讀儲存基板、隨機或串列存取記憶體裝置或它們中的一或多者之組合。可替代地或另外,可以在人工生成的傳播信號(例如,機器生成的電、光或電磁信號)上對程式指令進行編碼,該傳播信號被生成用於對信息進行編碼以傳輸到合適的接收器設備以供資料處理設備執行。
術語「資料處理設備」指資料處理硬體,且包含用於處理資料的各種設備、裝置及機器,例如包括可程式處理器、電腦或多個處理器或電腦。該設備亦可以是或進一步包括專用邏輯電路,例如FPGA (現場可程式閘陣列(field programmable gate array))或ASIC (應用特定積體電路(application specific integrated circuit))。除了硬體之外,該設備還可以視情況包括為電腦程式創建執行環境的代碼,例如構成處理器韌體、協定堆疊、資料庫管理系統、操作系統或它們中的一或多者之組合的代碼。
電腦程式(亦可稱為或描述為程式、軟體、軟體應用程式、應用程式、模組、軟體模組、腳本或代碼)可採用任何形式的程式設計語言編寫,包括編譯或解釋語言,或宣告語言或程序語言,且可採用任何形式進行部署,包括作為獨立程式或作為模組、組件、次常式或其他適合在計算環境中使用的單元。程式可以但不必與檔案系統中的檔案相對應。程式可以儲存在保存其他程式或資料的一部分檔案中,例如,儲存在標示語言文檔中、儲存在專用於所述程式的單個檔案中或儲存在多個協調檔案中的一或多個腳本,例如,儲存一或多個模組、次程式或部分代碼的檔案。電腦程式可以部署為在一台電腦上或在位於一個站點或分佈在多個站點並藉由資料通訊網路互連的多台電腦上執行。
將一或多台電腦的系統用以執行特定操作或動作意味著系統已在其上安裝軟體、韌體、硬體或其組合,這些軟體、韌體、硬體或組合在運行中使系統執行操作或動作。將一或多個電腦程式用以執行特定操作或動作意味著一或多個程式包括在由資料處理設備執行時使該設備執行操作或動作的指令。
如本說明書所用,「引擎」或「軟體引擎」指提供與輸入同於的輸出的軟體實現的輸入/輸出系統。引擎可以是經編碼的功能塊,諸如程式館、平台、軟體開發套件(software development kit,「SDK」)或目標。每個引擎可以在任何適當類型的計算裝置上實現,例如伺服器、行動電話、平板電腦、筆記本電腦、音樂播放器、電子書閱讀器、桌上型或膝上型電腦、PDA、智慧型手機或其他固定或可攜式裝置,包括一或多個處理器及電腦可讀媒體。另外,兩個或更多個引擎可以在相同的計算裝置上實現,或在不同的計算裝置上實現。
本說明書中所描述之過程及邏輯流程可藉由一或多台可程式電腦執行一或多個電腦程式來進行,以藉由對輸入資料進行操作並生成輸出來執行功能。過程及邏輯流程亦可以藉由專用邏輯電路(例如FPGA或ASIC)或藉由專用邏輯電路與一或多個程式設計電腦的組合來進行。
適用於執行電腦程式的電腦可以基於通用微處理器或專用微處理器或兩者,或任何其他類型的中央處理單元。通常,中央處理單元將從唯讀記憶體或隨機存取記憶體或兩者接收指令及資料。電腦的基本元件是用於進行或執行指令的中央處理單元以及用於儲存指令及資料的一或多個記憶體裝置。中央處理單元和記憶體可由專用邏輯電路增補或併入專用邏輯電路中。通常,電腦亦將包括或可操作地耦合以自用於儲存資料的一或多個大容量儲存裝置(例如,磁碟、磁光碟或光碟)接收資料或向該些儲存裝置傳輸資料或兩者皆有。然而,電腦不必具有這樣的裝置。此外,電腦可以嵌入到另一裝置中,例如行動電話、個人數位助理(personal digital assistant,PDA)、行動音訊或視訊播放器、遊戲控制台、全球定位系統(Global Positioning System,GPS)接收器或可攜式儲存裝置,例如通用串列匯流排(universal serial bus,USB)快閃驅動器等。
適用於儲存電腦程式指令及資料的電腦可讀媒體包括所有形式的非揮發性記憶體、媒體及記憶體裝置,例如包括半導體記憶體裝置,例如EPROM、EEPROM和快閃記憶體裝置;磁碟,例如內部硬磁盤或可移磁碟;磁光碟;以及CD ROM和DVD-ROM磁碟。
為了提供與用戶的交互,本說明書中所描述之主題的實施例可以在具有用於向用戶顯示資訊的顯示裝置(例如CRT (陰極射線管(cathode ray tube))或LCD (液晶顯示器(liquid crystal display))監視器)以及鍵盤和指向裝置(例如滑鼠、軌跡球或用戶可藉以向電腦提供輸入的存在敏感顯示器或其他表面)的電腦上實現。其他類型的裝置也可用於提供與用戶的交互;例如,提供給用戶的回饋可以是任何形式的感官回饋,例如,視覺回饋、聽覺回饋或觸覺回饋;且可以以任何形式接收來自用戶的輸入,包括聲響輸入、語音輸入或觸覺輸入。此外,電腦可以藉以向用戶使用的裝置發送文檔和從該裝置接收文檔而與用戶交互;例如,藉由回應於從網頁瀏覽器接收到的請求向用戶裝置上的網頁瀏覽器發送網頁。此外,電腦可以藉由向個人裝置(例如,智慧型手機)發送文字訊息或其他形式的訊息、運行訊息應用程式並接收來自用戶的回應訊息而與用戶交互作為回報。
本說明書中所描述之主題的實施例可以在計算系統中實現,該計算系統包括後端組件(例如,作為資料伺服器),或者包括中間軟體組件(例如,應用伺服器),或者包括前端組件(例如,具有圖形用戶介面、網頁瀏覽器或用戶可藉以與本說明書中所描述之主題的實行方案交互的應用程式的客戶端電腦),或一或多個此類後端、中間軟體或前端組件的任何組合。系統的組件可以藉由數位資料通訊的任何形式或媒介互連,例如通訊網路。通訊網路的實例包括區域網路(local area network,LAN)及廣域網路(wide area network,WAN),例如網際網路。
計算系統可以包括客戶端及伺服器。客戶端及伺服器通常彼此遠離,且通常經由通訊網路進行交互。客戶端與伺服器的關係是由於電腦程式在各自的電腦上運行且彼此之間具有客戶端-伺服器關係而產生的。在一些實施例中,例如,出於向與作為客戶端的裝置交互的用戶顯示資料並從該用戶接收用戶輸入的目的,伺服器將資料(例如HTML頁面)傳輸到用戶裝置。可以在伺服器處從裝置接收在用戶裝置處生成的資料(例如,用戶交互的結果)。
儘管本說明書包含許多具體實施細節,但這些細節不應解釋為對任何發明的範圍或可能主張的範圍的限制,而應解釋為對可能特定於特定發明的特定實施例的特徵的描述。本說明書中在單獨實施例的上下文中所描述之某些特徵亦可以在單個實施例中組合實現。相反地,在單個實施例的上下文中所描述之各種特徵亦可以在多個實施例中單獨實現或在任何合適的子組合中實現。此外,儘管上述特徵可以被描述為在某些組合中起作用,甚至最初照此主張,但在某些情況下,可以從組合中刪除來自所主張的組合的一或多個特徵,且所主張的組合可涉及子組合或子組合的變體。
類似地,雖然在附圖中以特定次序描繪操作,但這不應理解為要求以所示的特定次序或以順序次序執行此類操作,或要求執行所有示出的操作以實現期望結果。在某些情況下,多任務及並行處理可能是有利的。此外,上述實施例中各種系統模組及組件的分離不應理解為在所有實施例中都需要這種分離,且應當理解,所描述的程式組件及系統通常可以在單個軟體產品中整合在一起,或者封裝到多個軟體產品中。
已描述主題的特定實施例。其他實施例在以下申請專利範圍的範疇內。例如,申請專利範圍中列舉的動作可以以不同的次序執行,且仍然能夠實現期望結果。作為一個實例,附圖中描繪的過程未必需要所示的特定次序或順序次序來實現期望結果。例如,操作1420和1425不必在第14圖中的操作1415之後;在一些實現中,在操作1415之前執行操作1420和1425。此外,在某些情況下,多任務及並行處理可能是有利的。
100:系統
110:處理器
120:CU
121:變換單元
122,1110B,1210B:算數及/或逐位元表達式
130:ABU
131:算數塊
132:逐位元移位塊
133:逐位元邏輯塊
140:暫存器
150:記憶體單元
160:晶片
180:輸入裝置
182:電腦程式
190:輸出裝置
205,210,220,230,240,250,410,420,430,440,450,510,520,530,540,610,620,630,640,650,660,710,720,730,740,750,760,710B,720B,810,820,910,1010,1020,1400,1405,1410,1415,1420,1425,1430,1435,1440,1500,1505,1510,1515,1520,1525,1530,1535,1540,1545,1550:操作
301,1101A,1201A:布林條件
302,1102,1201:後續任務
303,1103,1202:替代任務
310,1110A,1210A:條件敘述
1100C,1100D,1200C,1200D:組合語言電腦程式
1204:無條件跳轉
1205:初始化敘述
1302:半減法器
1303:互斥或閘
1304,1330:反閘
1305:及閘
1306:移位運算子
1310A,1310B:組合邏輯電路/條件邏輯電路
1311:被減數A
1312:減數B
1313:差/差信號
1314:借出值/借出信號
1320:反或閘
第1圖是示出實例系統的圖。
第2圖是僅利用處理器的算數及/或逐位元單元執行電腦程式的實例過程的流程圖。
第3圖是示出if-then(-else)條件敘述的基本結構的偽代碼。
第4圖是將布林條件變換為算數及/或逐位元表達式的實例過程的流程圖。
第5圖是將A = B變換為A = B的算數及/或逐位元表達式的實例過程的流程圖。
第6圖是將A ≥ B變換為A ≥ B的算數及/或逐位元表達式的實例過程的流程圖。
第7A圖和第7B圖是將A < B變換為A < B的算數及/或逐位元表達式的實例過程的流程圖。
第8圖是當條件敘述具有算數主體時生成電腦程式的算數及/或逐位元表達式的實例過程的流程圖。
第9圖是當條件敘述具有非算數主體時生成電腦程式的算數及/或逐位元表達式的實例過程的流程圖。
第10圖是提供電腦程式的算數及/或逐位元表達式的實例過程的流程圖。
第11A圖是包括具有算數主體的條件敘述的C++電腦程式的實例。第11B圖是將第11A圖的電腦程式變換所得的C++電腦程式的實例。第11C圖是包括具有算數主體的條件敘述的組合語言電腦程式的實例。第11D圖是將第11C圖的電腦程式變換所得的組合語言電腦程式的實例。
第12A圖是包括具有非算數主體的條件敘述的C++電腦程式的實例。第12B圖是將第12A圖的電腦程式變換所得的C++電腦程式的實例。第12C圖是包括具有算數主體的條件敘述的組合語言電腦程式的實例。第12D圖是將第12C圖的電腦程式變換所得的組合語言電腦程式的實例。
第13A圖和第13B圖示出算數及/或逐位元運算單元的積體電路的組合邏輯電路的實例。
第14圖是減小矩陣類型資料的大小的實例過程的流程圖。
第15圖是將矩陣類型資料並行排序的實例過程的流程圖。
國內寄存資訊(請依寄存機構、日期、號碼順序註記)
無
國外寄存資訊(請依寄存國家、機構、日期、號碼順序註記)
無
205,210,220,230,240,250:操作
Claims (4)
- 一種執行一條件敘述的方法,該方法包括以下步驟:存取包括該條件敘述的一電腦程式,該條件敘述包括將一第一變量A和一第二變量B進行比較的一布林條件,其中該第一變量A和該第二變量B中之每一者包括矩陣類型資料;將該第一變量A和該第二變量B中之每一者拆分為相應的該第一變量A的第一雙元素對及該第二變量B的第二雙元素對;及使用來自一數學序列的代表數形成該第一變量A和該第二變量B中之每一者的較小版本以供比較,其中該數學序列的成員之間的一差越來越大,其中用於該第一變量A的該較小版本的該些代表數中之每一者是根據該數學序列的各個成員計算得出的,該數學序列中的索引等於該第一變量A的該些第一雙元素對中的資料值,用於該第二變量B的該較小版本的該些代表數中之每一者是根據該數學序列的各個成員計算得出的,該數學序列中的索引等於該第二變量B的該些第二雙元素對中的資料值,且其中當該第一變量A和該第二變量B中之每一者具有奇數個元素時,在該拆分之前從該第一變量A和該第二變量B中之每一者中移除一單個元素,以及將該第一變量A和該第二變量B中之每一者中的該 單個元素分別添加到該第一變量A和該第二變量B的該些較小版本中;在運行該電腦程式時,比較該第一變量A和該第二變量B的該些較小版本,以評估該條件敘述的該布林條件。
- 如請求項1所述之方法,其中該形成之步驟包括以下步驟:藉由針對該第一變量A的該較小版本的每個元素而對與該第一變量A的該些第一雙元素對中的該些資料值分別相對應的該數學序列的兩個成員求和,計算用於該第一變量A的該較小版本的該些代表數;及藉由針對該第二變量B的該較小版本的每個元素而對與該第二變量B的該些第二雙元素對中的該些資料值分別相對應的該數學序列的兩個成員求和,計算用於該第二變量B的該較小版本的該些代表數。
- 如請求項1所述之方法,包括以下步驟:計算該第一變量A的該些第一雙元素對之第一位置變量;及計算該第二變量B的該些第二雙元素對之第二位置變量;其中計算一對元素的每個位置變量包括利用布林條件Y>X的結果對等於負1的一數字取冪,其中X是該對元素中的第一元素,Y是該對元素中的第二元素;且其中該形成之步驟包括以下步驟: 藉由針對該第一變量A的該較小版本的每個元素而將該些第一位置變量中之一者乘以與該第一變量A的該些第一雙元素對中的該些資料值分別相對應的該數學序列的兩個成員的一和,計算用於該第一變量A的該較小版本的該些代表數;及藉由針對該第二變量B的該較小版本的每個元素而將該些第二位置變量中之一者乘以與該第二變量B的該些第二雙元素對中的該些資料值分別相對應的該數學序列的兩個成員的一和,計算用於該第二變量B的該較小版本的該些代表數。
- 一種執行一條件敘述的系統,該系統包括:一或多個指令處理單元,包括至少一個控制單元、至少一個算數及/或逐位元運算單元以及至少一個暫存器單元;及一或多個記憶體單元,與一或多個指令處理單元耦合;其中該一或多個記憶體單元用以使該一或多個指令處理單元執行如請求項1至3中任一項所述之方法操作。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/076,726 | 2020-10-21 | ||
US17/076,726 US11029920B1 (en) | 2020-10-21 | 2020-10-21 | Execution of a conditional statement by an arithmetic and/or bitwise unit |
PCT/US2021/031996 WO2022086594A1 (en) | 2020-10-21 | 2021-05-12 | Execution of a conditional statement by an arithmetic and/or bitwise unit |
WOPCT/US21/31996 | 2021-05-12 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202311935A TW202311935A (zh) | 2023-03-16 |
TWI812524B true TWI812524B (zh) | 2023-08-11 |
Family
ID=76213270
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW111140591A TWI812524B (zh) | 2020-10-21 | 2021-10-14 | 藉由算數及/或逐位元單元執行條件敘述的方法及系統 |
TW110138115A TWI786879B (zh) | 2020-10-21 | 2021-10-14 | 藉由算數及/或逐位元單元執行條件敘述的方法及系統 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW110138115A TWI786879B (zh) | 2020-10-21 | 2021-10-14 | 藉由算數及/或逐位元單元執行條件敘述的方法及系統 |
Country Status (10)
Country | Link |
---|---|
US (1) | US11029920B1 (zh) |
EP (1) | EP4058885B1 (zh) |
JP (1) | JP7341258B2 (zh) |
KR (1) | KR20220054248A (zh) |
CN (1) | CN114902176A (zh) |
CA (1) | CA3192952A1 (zh) |
IL (1) | IL301192A (zh) |
MX (1) | MX2023002986A (zh) |
TW (2) | TWI812524B (zh) |
WO (1) | WO2022086594A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US12099462B1 (en) | 2023-12-08 | 2024-09-24 | Chariot Technologies Lab, Inc. | Dynamic processor architecture |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW200837604A (en) * | 2006-12-21 | 2008-09-16 | Ericsson Telefon Ab L M | Obfuscating computer program code |
TW200905559A (en) * | 2007-02-23 | 2009-02-01 | Cloakware Corp | System and method of interlocking to protect software-mediated program and device behaviours |
TW201617929A (zh) * | 2014-07-02 | 2016-05-16 | 上海兆芯集成電路有限公司 | 融合複合算術運算之區分 |
US20190317766A1 (en) * | 2017-06-27 | 2019-10-17 | Via Alliance Semiconductor Co., Ltd. | Apparatuses for integrating arithmetic with logic operations |
US20200199354A1 (en) * | 2017-08-31 | 2020-06-25 | Carbiolice | Biodegradable polyester article comprising enzymes |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6578133B1 (en) | 2000-02-24 | 2003-06-10 | Stanley M. Hyduke | MIMD array of single bit processors for processing logic equations in strict sequential order |
US7523151B1 (en) | 2000-05-12 | 2009-04-21 | The Athena Group, Inc. | Method and apparatus for performing computations using residue arithmetic |
GB0013355D0 (en) | 2000-06-01 | 2000-07-26 | Tao Group Ltd | Parallel modulo arithmetic using bitwise logical operations |
JP2008305185A (ja) * | 2007-06-07 | 2008-12-18 | Nec Electronics Corp | プロセッサ装置及び複合条件処理方法 |
US8782599B2 (en) | 2008-06-26 | 2014-07-15 | Invensys Systems, Inc. | Multi-mode editor for configuring process control blocks including both logical functions and arithmetic computations |
JP2011197951A (ja) * | 2010-03-18 | 2011-10-06 | Canon Inc | 画像処理装置及び画像処理方法 |
JP2015201119A (ja) * | 2014-04-10 | 2015-11-12 | 富士通株式会社 | コンパイルプログラム、コンパイル方法およびコンパイル装置 |
US9460075B2 (en) | 2014-06-17 | 2016-10-04 | International Business Machines Corporation | Solving and answering arithmetic and algebraic problems using natural language processing |
US9588765B2 (en) | 2014-09-26 | 2017-03-07 | Intel Corporation | Instruction and logic for multiplier selectors for merging math functions |
EP3411800A1 (en) | 2016-02-01 | 2018-12-12 | Microsoft Technology Licensing, LLC | Parameterizing and working with math equations in a spreadsheet application |
JP2021502636A (ja) * | 2017-11-09 | 2021-01-28 | エヌチェーン ホールディングス リミテッドNchain Holdings Limited | 検証可能な計算のためのcライクなスマートコントラクトの算術的強化 |
-
2020
- 2020-10-21 US US17/076,726 patent/US11029920B1/en active Active
-
2021
- 2021-05-12 CA CA3192952A patent/CA3192952A1/en active Pending
- 2021-05-12 MX MX2023002986A patent/MX2023002986A/es unknown
- 2021-05-12 CN CN202180007729.XA patent/CN114902176A/zh active Pending
- 2021-05-12 WO PCT/US2021/031996 patent/WO2022086594A1/en unknown
- 2021-05-12 EP EP21883464.6A patent/EP4058885B1/en active Active
- 2021-05-12 JP JP2021577389A patent/JP7341258B2/ja active Active
- 2021-05-12 IL IL301192A patent/IL301192A/en unknown
- 2021-05-12 KR KR1020217043317A patent/KR20220054248A/ko not_active Application Discontinuation
- 2021-10-14 TW TW111140591A patent/TWI812524B/zh active
- 2021-10-14 TW TW110138115A patent/TWI786879B/zh active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW200837604A (en) * | 2006-12-21 | 2008-09-16 | Ericsson Telefon Ab L M | Obfuscating computer program code |
TW200905559A (en) * | 2007-02-23 | 2009-02-01 | Cloakware Corp | System and method of interlocking to protect software-mediated program and device behaviours |
TW201617929A (zh) * | 2014-07-02 | 2016-05-16 | 上海兆芯集成電路有限公司 | 融合複合算術運算之區分 |
US20190317766A1 (en) * | 2017-06-27 | 2019-10-17 | Via Alliance Semiconductor Co., Ltd. | Apparatuses for integrating arithmetic with logic operations |
US20200199354A1 (en) * | 2017-08-31 | 2020-06-25 | Carbiolice | Biodegradable polyester article comprising enzymes |
Also Published As
Publication number | Publication date |
---|---|
KR20220054248A (ko) | 2022-05-02 |
JP7341258B2 (ja) | 2023-09-08 |
EP4058885A4 (en) | 2023-01-11 |
EP4058885A1 (en) | 2022-09-21 |
WO2022086594A1 (en) | 2022-04-28 |
EP4058885C0 (en) | 2024-05-01 |
CA3192952A1 (en) | 2022-04-28 |
TW202311935A (zh) | 2023-03-16 |
TW202219739A (zh) | 2022-05-16 |
TWI786879B (zh) | 2022-12-11 |
MX2023002986A (es) | 2023-04-10 |
IL301192A (en) | 2023-05-01 |
CN114902176A (zh) | 2022-08-12 |
US11029920B1 (en) | 2021-06-08 |
JP2023501763A (ja) | 2023-01-19 |
EP4058885B1 (en) | 2024-05-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107608715B (zh) | 用于执行人工神经网络正向运算的装置及方法 | |
KR20200002607A (ko) | 구분적 선형 근사를 이용한 심층 뉴럴 네트워크 아키텍처 | |
EP3769208B1 (en) | Stochastic rounding logic | |
CN112835551B (zh) | 用于处理单元的数据处理方法、电子设备和计算机可读存储介质 | |
TWI812524B (zh) | 藉由算數及/或逐位元單元執行條件敘述的方法及系統 | |
US11829764B2 (en) | Address manipulation using indices and tags | |
US20230161555A1 (en) | System and method performing floating-point operations | |
CN111445016A (zh) | 加速非线性数学计算的系统及方法 | |
CN116610362A (zh) | 一种处理器指令集译码方法、系统、设备和存储介质 | |
US20230401420A1 (en) | Compiling asymmetrically-quantized neural network models for deep learning acceleration | |
Trivedi et al. | Hybrid ADDer: A viable solution for efficient design of MAC in DNNs | |
JP2020067897A (ja) | 演算処理装置、学習プログラム及び学習方法 | |
US20230333849A1 (en) | Execution of a conditional statement by an arithmetic and/or bitwise unit | |
Mitra et al. | Development of Noise Tolerant Document Image Binarization Technique Employing an Accurate Square Root Circuit | |
CN116579437B (zh) | 一种量子线路训练方法、装置、存储介质及电子装置 | |
US11989653B2 (en) | Pseudo-rounding in artificial neural networks | |
CN116194886A (zh) | 使用超矢量的分支预测 | |
Zhang et al. | Approximate computing for efficient neural network computation: A survey | |
Rouhandeh | Optimization of Convolutional Neural Networks for Constrained Devices through Binarization | |
WO2022211655A1 (en) | A processor and a method for performing tensor network contraction in a quantum simulator | |
WO2023060287A1 (en) | Floating-point logarithmic number system scaling system for machine learning | |
EP4154191A1 (en) | Pseudo-rounding in artificial neural networks | |
JP2022131311A (ja) | ベクトル演算装置、ベクトル演算方法及びプログラム |