TW202336577A - 處理系統 - Google Patents
處理系統 Download PDFInfo
- Publication number
- TW202336577A TW202336577A TW112100428A TW112100428A TW202336577A TW 202336577 A TW202336577 A TW 202336577A TW 112100428 A TW112100428 A TW 112100428A TW 112100428 A TW112100428 A TW 112100428A TW 202336577 A TW202336577 A TW 202336577A
- Authority
- TW
- Taiwan
- Prior art keywords
- data
- architecture
- query
- memory
- filter
- Prior art date
Links
- 238000012545 processing Methods 0.000 title claims description 248
- 230000015654 memory Effects 0.000 claims abstract description 285
- 238000013138 pruning Methods 0.000 claims abstract description 78
- 238000007781 pre-processing Methods 0.000 claims abstract description 48
- 239000013598 vector Substances 0.000 claims description 107
- 230000001133 acceleration Effects 0.000 claims description 71
- 230000004044 response Effects 0.000 claims description 22
- 230000006872 improvement Effects 0.000 claims description 5
- 238000000034 method Methods 0.000 description 104
- 230000006870 function Effects 0.000 description 94
- 238000007405 data analysis Methods 0.000 description 71
- 238000001914 filtration Methods 0.000 description 64
- 238000003860 storage Methods 0.000 description 63
- 230000008569 process Effects 0.000 description 55
- 238000013500 data storage Methods 0.000 description 49
- 230000009467 reduction Effects 0.000 description 28
- 238000012517 data analytics Methods 0.000 description 26
- 238000004458 analytical method Methods 0.000 description 24
- 238000004891 communication Methods 0.000 description 20
- 238000012546 transfer Methods 0.000 description 19
- 238000012216 screening Methods 0.000 description 14
- 230000007704 transition Effects 0.000 description 13
- 238000013439 planning Methods 0.000 description 11
- 238000003491 array Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 7
- 238000007726 management method Methods 0.000 description 7
- 238000012805 post-processing Methods 0.000 description 7
- 239000000758 substrate Substances 0.000 description 7
- 230000008901 benefit Effects 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 6
- 238000005304 joining Methods 0.000 description 6
- 101100328884 Caenorhabditis elegans sqt-3 gene Proteins 0.000 description 5
- 230000002776 aggregation Effects 0.000 description 5
- 238000004220 aggregation Methods 0.000 description 5
- 238000004422 calculation algorithm Methods 0.000 description 5
- 238000012986 modification Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 238000012958 reprocessing Methods 0.000 description 5
- 238000012552 review Methods 0.000 description 5
- 239000007787 solid Substances 0.000 description 5
- 238000012360 testing method Methods 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 4
- 238000010276 construction Methods 0.000 description 4
- 238000012937 correction Methods 0.000 description 4
- 230000003993 interaction Effects 0.000 description 4
- 101100498818 Arabidopsis thaliana DDR4 gene Proteins 0.000 description 3
- 101100328886 Caenorhabditis elegans col-2 gene Proteins 0.000 description 3
- 238000013459 approach Methods 0.000 description 3
- 230000001934 delay Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000009826 distribution Methods 0.000 description 3
- 230000014509 gene expression Effects 0.000 description 3
- 238000007689 inspection Methods 0.000 description 3
- 239000004065 semiconductor Substances 0.000 description 3
- 108010001267 Protein Subunits Proteins 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 125000004122 cyclic group Chemical group 0.000 description 2
- 238000013501 data transformation Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000009977 dual effect Effects 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 230000011664 signaling Effects 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 238000012384 transportation and delivery Methods 0.000 description 2
- 238000009966 trimming Methods 0.000 description 2
- 241000918959 Xele Species 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000002620 method output Methods 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 230000000116 mitigating effect Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 150000003071 polychlorinated biphenyls Chemical class 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 230000001737 promoting effect Effects 0.000 description 1
- 230000005236 sound signal Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 210000000352 storage cell Anatomy 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000026676 system process Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
- 229910052724 xenon Inorganic materials 0.000 description 1
- FHNFHKCVQCLJFQ-UHFFFAOYSA-N xenon atom Chemical compound [Xe] FHNFHKCVQCLJFQ-UHFFFAOYSA-N 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/24569—Query processing with adaptation to specific hardware, e.g. adapted for using GPUs or SSDs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Image Analysis (AREA)
Abstract
一種資料預處理架構可包括介面及修剪邏輯,該修剪邏輯經組態以:經由該介面自查詢處理器接收至少一個篩選值;使用該至少一個篩選值以掃描儲存於記憶體中之資料表之列或行;產生識別駐存有該至少一個篩選值的該資料表之一組列或行的選擇指示符;並且基於該選擇指示符而將經篩選輸出提供至該查詢處理器。
Description
相關申請案之交互參照
本申請案主張於2022年1月5日申請之美國臨時專利申請案第63/296,645號、於2022年1月31日申請之美國臨時專利申請案第63/304,975號以及於2022年6月9日申請之美國臨時專利申請案第63/350,579號的優先權。前述申請案以全文引用之方式併入本文中。
本發明大體上係關於對處理系統之改良,且尤其係關於增大處理速度及減小功率消耗。
記憶體處理模組及相關技術之細節可見於2018年7月30日申請之PCT/IB2018/000995、2019年9月6日申請之PCT/IB2019/001005、2020年8月13日申請之PCT/IB2020/000665以及2021年10月18日申請之PCT/US2021/055472中。諸如XRAM、XDIMM、XSC及IMPU等例示性元件可購自以色列特拉維夫市(Tel Aviv,Israel)之紐羅布萊德有限公司(NeuroBlade Ltd.)。
在一實施例中,一種系統可包括經組態以駐存於一資料儲存單元與一個或多個主機之間的一基於硬體之可程式化資料分析處理器,其中該可程式化資料分析處理器包括:一選擇器模組,其經組態以輸入一第一資料集,且基於一選擇指示符而輸出該第一資料集之一第一子集;一篩選及投射模組,其經組態以輸入一第二資料集,且基於一函式而輸出一更新第二資料集;一加入及分組模組,其經組態以將來自一個或多個第三資料集的資料組合成一組合資料集;以及一通信網狀架構,其經組態以在該選擇器模組、該篩選及投射模組以及該加入及分組模組中之任一者之間傳送資料。
在一實施例中,一種系統可包括經組態以駐存於一資料儲存單元與一個或多個主機之間的一基於硬體之可程式化資料分析處理器,其中該可程式化資料分析處理器包括:一選擇器模組,其經組態以輸入一第一資料集,且基於一選擇指示符而輸出該第一資料集之一第一子集;一篩選及投射模組,其經組態以輸入一第二資料集,且基於一函式而輸出一更新第二資料集;一通信網狀架構,其經組態以在該等模組中之任一者之間傳送資料。
在一實施例中,一種系統可包括經組態以駐存於一資料儲存單元與一個或多個主機之間的一基於硬體之可程式化資料分析處理器,其中該可程式化資料分析處理器包括:一選擇器模組,其經組態以輸入一第一資料集,且基於一選擇指示符而輸出該第一資料集之一第一子集;一加入及分組模組,其經組態以將來自一個或多個第三資料集的資料組合成一組合資料集;以及一通信網狀架構,其經組態以在該等模組中之任一者之間傳送資料。
在一實施例中,一種系統可包括經組態以駐存於一資料儲存單元與一個或多個主機之間的一基於硬體之可程式化資料分析處理器,其中該可程式化資料分析處理器包括:一篩選及投射模組,其經組態以輸入一第二資料集,且基於一函式而輸出一更新第二資料集;一加入及分組模組,其經組態以將來自一個或多個第三資料集的資料組合成一組合資料集;以及一通信網狀架構,其經組態以在該等模組中之任一者之間傳送資料。
在一實施例中,一種資料預處理架構可包含:一介面;以及一修剪邏輯,其經組態以:經由該介面自一查詢處理器接收至少一個篩選值;使用該至少一個篩選值以掃描儲存於一記憶體中之一資料表之列或行;產生識別駐存有該至少一個篩選值的該資料表之一組列或行的一選擇指示符;並且基於該選擇指示符而將一經篩選輸出提供至該查詢處理器。
在一實施例中,一種資料預處理架構可包括一介面及修剪邏輯,其中該修剪邏輯經組態以:經由該介面自一查詢處理器接收兩個或更多個篩選值;使用該兩個或更多個篩選值當中之一第一篩選值以掃描儲存於一記憶體中之一資料集之一第一元件群組;產生識別駐存有該第一篩選值的該資料集之一第一元件集的一第一選擇指示符;使用該兩個或更多個篩選值當中之一第二篩選值以掃描該資料集之一第二元件群組;產生識別駐存有該第一篩選值及該第二篩選值兩者的該資料集之一第二元件集的一改進選擇指示符;並且基於該改進選擇指示符而將一經篩選輸出提供至該查詢處理器。
在一實施例中,一種加速資料庫管理系統可包括至少一個處理器,該至少一個處理器包括電路系統及一記憶體,其中該記憶體包括指令,該等指令在由該電路系統執行時使該至少一個處理器:接收一初始資料庫查詢;基於該初始資料庫查詢而產生一主查詢;分析該主查詢,且基於對該主查詢之該分析而產生至少一第一子查詢及一第二子查詢,其中該第二子查詢不同於該第一子查詢;沿著一第一處理路徑處理該第一子查詢以將一第一輸入提供至一執行模組;沿著不同於該第一處理路徑之一第二處理路徑處理該第二子查詢以將一第二輸入提供至該執行模組;並且基於由該執行模組接收之該第一輸入及該第二輸入而產生一主查詢結果。
在一實施例中,一種資料篩選器系統包括一介面及資料篩選器電路系統。該資料篩選器電路系統可經組態以經由該介面接收一資料篩選器起始信號,且回應於接收到該資料篩選器起始信號而執行與一資料查詢相關聯之至少一個操作,其中該資料查詢牽涉儲存於至少一個儲存單元中的資料之主體;其中執行與該資料查詢相關聯之該至少一個操作會導致自資料之主體產生一經篩選資料子集,包括比該資料查詢所牽涉的資料之主體少的資料。該資料篩選器電路系統亦可經組態以將該經篩選資料子集傳送至經組態以執行關於該資料查詢之一個或多個額外操作的一主機處理器以向該資料查詢產生一輸出。
與其他所揭示實施例一致,非暫時性電腦可讀儲存媒體可儲存程式指令,該等程式指令由至少一個處理裝置執行且執行本文中所描述之方法中的任一者。
前述一般性描述及下文詳細描述僅為例示性及解釋性的,且並不限制申請專利範圍。
實例架構
圖1係電腦(CPU)架構之實例。CPU 100可包含處理單元110,該處理單元包括一個或多個處理器子單元,諸如處理器子單元120a及處理器子單元120b。儘管未在當前圖中描繪,但各處理器子單元可包含複數個處理元件。此外,處理單元110可包括一個或多個級別之晶載快取記憶體。此類快取記憶體元件通常與處理單元110形成於同一半導體晶粒上,而非經由形成於基板中之一個或多個匯流排連接至處理器子單元120a及120b,該基板含有處理器子單元120a及120b以及快取記憶體元件。直接位於同一晶粒上而非經由匯流排連接之配置可用於處理器中之第一級(L1)及第二級(L2)快取記憶體兩者。替代地,在早期處理器中,L2快取記憶體係使用子單元與L2快取記憶體之間的背側匯流排而在處理器子單元當中共用。背側匯流排通常大於下文所描述之前側匯流排。因此,因為快取記憶體將會供晶粒上之所有處理器子單元共用,所以快取記憶體130可與處理器子單元120a及120b形成於同一晶粒上或經由一個或多個背側匯流排以通信方式耦接至處理器子單元120a及120b。在不具有匯流排(例如,快取記憶體直接形成於晶粒上)之實施例以及使用背面匯流排之實施例兩者中,快取記憶體在CPU的處理器子單元之間共用。
此外,處理單元110可與共用記憶體140a及記憶體140b通信。舉例而言,記憶體140a及140b可表示共用動態隨機存取記憶體(DRAM)之記憶體組。儘管描繪為具有兩個組,但記憶體晶片可包括介於八個與十六個之間的記憶體組。因此,處理器子單元120a及120b可使用共用記憶體140a及140b來儲存資料,接著藉由處理器子單元120a及120b對該資料進行操作。然而,此配置導致記憶體140a及140b與處理單元110之間的匯流排在處理單元110之時脈速度超過匯流排之資料傳送速度時成為瓶頸。此情況對於處理器大體上成立,從而產生比基於時脈速率及電晶體數目之規定處理速度低的有效處理速度。
圖2係圖形處理單元(GPU)架構之實例。CPU架構之缺陷類似地存在於GPU中。GPU 200可包含處理單元210,該處理單元包括一個或多個處理器子單元(例如,子單元220a、220b、220c、220d、220e、220f、220g、220h、220i、220j、220k、220l、220m、220n、220o及220p)。此外,處理單元210可包括一個或多個級別之晶載快取記憶體及/或暫存器檔案。此類快取記憶體元件通常與處理單元210形成於同一半導體晶粒上。實際上,在當前圖之實例中,快取記憶體210與處理單元210形成於同一晶粒上且在所有處理器子單元當中共用,而快取記憶體230a、230b、230c及230d分別形成於處理器子單元之子集上且專屬於該等處理器子單元。
此外,處理單元210與共用記憶體250a、250b、250c及250d通信。舉例而言,記憶體250a、250b、250c及250d可表示共用DRAM之記憶體組。因此,處理單元210之處理器子單元可使用共用記憶體250a、250b、250c及250d來儲存資料,接著藉由處理器子單元對該資料進行操作。然而,此配置導致記憶體250a、250b、250c及250d與處理單元210之間的匯流排成為瓶頸,其類似於上文關於CPU所描述之瓶頸。
圖3係具有錯誤校正碼(ECC)能力之電腦記憶體之圖解表示。如當前圖中所展示,記憶體模組301包括展示為九個晶片(亦即,分別為晶片-0 100-0至晶片-8 100-8)之記憶體晶片300之陣列。各記憶體晶片具有各別記憶體陣列302(例如標記為302-0至302-8之元件)以及對應位址選擇器306(展示為各別選擇器-0 106-0至選擇器-8 106-8)。控制器308展示為DDR控制器。DDR控制器308以操作方式連接至CPU 100(處理單元110),自CPU 100接收資料以供寫入至記憶體,並且自記憶體擷取資料以發送至CPU 100。DDR控制器308亦包括錯誤校正碼(ECC)模組,該錯誤校正碼模組產生可用於識別及校正CPU 100與記憶體模組301之組件之間的資料傳輸中之錯誤的錯誤校正碼。
圖4係用於將資料寫入至記憶體模組301之程序之圖解表示。具體言之,寫入至記憶體模組301之程序420可包括以叢發寫入資料422,各叢發針對正被寫入之各晶片(在當前實例中,記憶體晶片300中之8個,包括晶片-0 100-0至晶片-7 100-7)包括8個位元組。在一些實施方案中,在DDR控制器308中之ECC模組312中計算初始錯誤校正碼(ECC)424。跨晶片之資料的8個位元組中之各者而計算ECC 424,從而跨8個晶片針對叢發之各位元組而產生額外初始1位元組ECC。8位元組(8×1位元組)ECC係藉由叢發寫入至充當記憶體模組301中之ECC晶片的第九記憶體晶片,諸如晶片-8 100-8。
記憶體模組301可啟動用於各晶片之資料叢發的循環冗餘校驗(CRC)檢驗,以保護晶片介面。循環冗餘校驗係數位網路及儲存裝置中常用以偵測原始資料之偶發變化的錯誤偵測碼。資料區塊基於區塊內容之多項式除法之餘數而獲得附加的短檢驗值。在此情況下,初始CRC 426由DDR控制器308經由晶片叢發(當前圖中之一個列)中之資料422的8個位元組計算,且藉由各資料叢發(各列/至對應晶片)作為晶片叢發傳輸中之第九位元組而發送。當各晶片300接收資料時,各晶片300計算資料上之新CRC,且將新CRC與所接收之初始CRC進行比較。若CRC匹配,則將所接收之資料寫入至晶片之記憶體302。若CRC並不匹配,則丟棄所接收之資料,且啟動警示信號。警示信號可包括ALERT_N信號。
另外,當將資料寫入至記憶體模組301時,通常經由(例示性)所傳輸命令428B及位址428C計算初始同位428A。各晶片300接收命令428B及位址428C,計算新同位,並且將初始同位與新同位進行比較。若同位匹配,則所接收之命令428B及位址428C用於將對應資料422寫入至記憶體模組301。若同位並不匹配,則丟棄所接收之資料422,且啟動警示信號(例如,ALERT_N)。
圖5係用於自記憶體讀取之程序530之圖解表示。當自記憶體模組301讀取時,自記憶體讀取初始ECC 424且將其與資料422一起發送至ECC模組312。ECC模組312跨晶片之資料的8個位元組中之各者計算新ECC。將新ECC與初始ECC進行比較以判定(偵測、校正)資料(傳輸、儲存)中是否已出現錯誤。另外,當自記憶體模組301讀取資料時,通常經由(例示性)所傳輸命令538B及位址538C(傳輸至記憶體模組301以告知記憶體模組301讀取及自哪一位址讀取)計算初始同位538A。各晶片300接收命令538B及位址538C,計算新同位,並且將初始同位與新同位進行比較。若同位匹配,則所接收之命令538B及位址538C用於自記憶體模組301讀取對應資料422。若同位並不匹配,則丟棄所接收之命令538B及位址538C,且啟動警示信號(例如,ALERT_N)。
記憶體處理模組及相關聯器具之概述
圖6係包括記憶體處理模組之架構之圖解表示。舉例而言,如上文所描述,記憶體處理模組(MPM)610可實施於晶片上,以包括在形成於晶片上之相關聯記憶體元件本端的至少一個處理元件(例如,處理器子單元)。在一些情況下,MPM 610可包括在MPM 610內之其相關聯記憶體元件當中在空間上分佈於共同基板上的複數個處理元件。
在圖6之實例中,記憶體處理模組610包括與四個專屬記憶體組600(展示為各別組-0 600-0至組-3 600-3)耦接之處理模組612。各組包括對應記憶體陣列602(展示為各別記憶體陣列-0 602-0至記憶體陣列-3 602-3)以及選擇器606(展示為選擇器-0 606-0至選擇器-3 606-3)。記憶體陣列602可包括類似於上文關於記憶體陣列302所描述之記憶體元件。包括算術運算、其他基於邏輯之運算等本端處理可由處理模組612(在此文件之上下文中亦被稱作「處理子單元」、「處理器子單元」、「邏輯」、「微腦(micro mind)」或「UMIND」)使用儲存於記憶體陣列602中或自其他來源(例如自其他處理模組612)提供之資料來執行。在一些情況下,一個或多個MPM 610之一個或多個處理模組612可包括至少一個算術邏輯單元(ALU)。處理模組612以操作方式連接至記憶體組600中之各者。
DDR控制器608亦可例如經由MPM從屬控制器623以操作方式連接至記憶體組600中之各者。替代地及/或除DDR控制器608之外,主控制器622亦可例如經由DDR控制器608及記憶體控制器623以操作方式連接至記憶體組600中之各者。DDR控制器608及主控制器622可實施於外部元件620中。另外及/或替代地,可提供第二記憶體介面618以用於與MPM 610進行操作通信。
雖然圖6之MPM 610將一個處理模組612與四個專屬記憶體組600配對,但可將更多或更少之記憶體組與對應處理模組配對以提供記憶體處理模組。舉例而言,在一些情況下,MPM 610之處理模組612可與單個專屬記憶體組600配對。在其他情況下,MPM 610之處理模組612可與兩個或更多個專屬記憶體組600、四個或更多個專屬記憶體組600等配對。包括一起形成於共同基板或晶片上之MPM的各種MPM 610可相對於彼此包括不同數目個記憶體組。在一些情況下,MPM 610可包括一個記憶體組600。在其他情況下,MPM可包括兩個、四個、八個、十六個或更多個記憶體組600。因此,每處理模組612之記憶體組600的數目可貫穿整個MPM 610或跨MPM而為相同的。一個或多個MPM 610可包括於晶片中。在非限制性實例中,包括於XRAM晶片624中。替代地,至少一個處理模組612可控制比包括於MPM 610內或包括於替代性或較大結構(諸如XRAM晶片624)內之另一處理模組612多的記憶體組600。
各MPM 610可包括一個處理模組612或多於一個處理模組610。在圖6之實例中,一個處理模組612與四個專屬記憶體組600相關聯。然而,在其他情況下,MPM之一個或多個記憶體組可與兩個或更多個處理模組612相關聯。
各記憶體組600可組態有任何合適數目個記憶體陣列602。在一些情況下,組600可僅包括單個陣列。在其他情況下,組600可包括兩個或更多個記憶體陣列602、四個或更多個記憶體陣列602等。組600中之各者可具有相同數目個記憶體陣列602。替代地,不同組600可具有不同數目個記憶體陣列602。
各種數目個MPM 610可一起形成於單個硬體晶片上。在一些情況下,硬體晶片可包括僅一個MPM 610。然而,在其他情況下,單個硬體晶片可包括兩個、四個、八個、十六個、32個、64個等MPM 610。在當前圖中所表示之特定非限制性實例中,將64個MPM 610在硬體晶片之共同基板上組合在一起以提供亦可被稱作記憶體處理晶片或計算記憶體晶片的XRAM晶片624。在一些實施例中,各MPM 610可包括經組態以(例如,經由MPM從屬控制器623)與DDR控制器608及/或主控制器622通信之從屬控制器613(例如,eXtreme/Xele或XSC從屬控制器(SC))。替代地,少於XRAM晶片624上之所有MPM可包括從屬控制器613。在一些情況下,多個MPM(例如,64個MPM)610可共用安置於XRAM晶片624上之單個從屬控制器613。從屬控制器613可將資料、命令、資訊等傳送至XRAM晶片624上之一個或多個處理模組612,以使得各種操作待由一個或多個處理模組612執行。
一個或多個XRAM晶片624可包括複數個XRAM晶片624,諸如十六個XRAM晶片624,其可經組態在一起以提供雙排記憶體模組(DIMM)626。傳統DIMM可被稱作RAM棒,其可包括八個或九個等動態隨機存取記憶體晶片(積體電路),該等動態隨機存取記憶體晶片經建構為印刷電路板(PCB)/經建構在該印刷電路板上且具有64位元資料路徑。相比於傳統記憶體,所揭示之記憶體處理模組610包括與本端記憶體元件(例如,記憶體組600)耦接之至少一個計算組件(例如,處理模組612)。由於多個MPM可包括於XRAM晶片624上,因此各XRAM晶片624可包括在空間上分佈於相關聯記憶體組600當中之複數個處理模組612。為確認在XRAM晶片624內包括計算能力(以及記憶體),包括單個PCB上之一個或多個XRAM晶片(例如,十六個XRAM晶片,如圖6實例中)的各DIMM 626可被稱作XDIMM(或eXtremeDIMM或XeleDIMM)。各XDIMM 626可包括任何數目個XRAM晶片624,且各XDIMM 624可具有與其他XDIMM 626相同或不同數目個XRAM晶片624。在圖6實例中,各XDIMM 626包括十六個XRAM晶片624。
如圖6中所展示,架構可進一步包括一個或多個記憶體處理單元,諸如密集記憶體處理單元(IMPU)628。各IMPU 628可包括一個或多個XDIMM 626。在圖6實例中,各IMPU 628包括四個XDIMM 626。在其他情況下,各IMPU 628可包括與其他IMPU相同或不同數目個XDIMM。IMPU 628中所包括之一個或多個XDIMM可與一個或多個DDR控制器608及/或一個或多個主控制器622一起封裝或以其他方式與其整合。舉例而言,在一些情況下,IMPU 628中所包括之各XDIMM可包括專屬DDR控制器608及/或專屬主控制器622。在其他情況下,IMPU 628中所包括之多個XDIMM可共用DDR控制器608及/或主控制器622。在一個特定實例中,IMPU 628包括四個XDIMM 626以及四個主控制器622(各主控制器622包括DDR控制器608),其中主控制器622中之各者經組態以控制一個相關聯XDIMM 626,包括相關聯XDIMM 626中所包括之XRAM晶片624的MPM 610。
DDR控制器608及主控制器622係控制器域630中之控制器之實例。較高級域632可含有一個或多個額外裝置、使用者應用程式、主機電腦、其他裝置、協定層實體及其類似者。控制器域630及相關特徵描述於以下章節中。在使用多個控制器及/或多級控制器之情況下,控制器域630可充當多層模組域之至少一部分,其亦進一步描述於以下章節中。
在由圖6表示之架構中,一個或多個IMPU 628可用於提供可被稱作XIPHOS器具之記憶體器具640。在圖6之實例中,記憶體器具640包括四個IMPU 628。
處理元件612在XRAM晶片624(其併入至XDIMM 626中,該等XDIMM併入至IMPU 628中,該等IMPU併入至記憶體器具640中)內之記憶體組600當中的位置可顯著減輕與CPU、GPU及使用共用記憶體進行操作之其他處理器相關聯的瓶頸。舉例而言,處理器子單元612之任務可為使用儲存於記憶體組600中之資料執行一系列指令。處理子單元612對記憶體組600之接近可顯著減少使用相關資料執行規定指令所需的時間。
如圖7中所展示,主機710可將指令、資料及/或其他輸入提供至記憶體器具640且自該記憶體器具讀取輸出。在所揭示實施例中,記憶體器具640可執行與來自記憶體器具內(例如,一個或多個IMPU之一個或多個XDIMM 626的一個或多個XRAM晶片624之一個或多個MPM 610的處理模組612內)之主機710的所接收之輸入相關聯的處理,而非需要主機來存取共用記憶體以及相對於自共用記憶體擷取之資料執行計算/功能。藉由處理模組612在與儲存執行各種計算/功能等所需的相關資料之記憶體組600相同的硬體晶片當中及其上之分佈,使得此類功能性成為可能。
圖6中所描述之架構可經組態以用於程式碼之執行。舉例而言,各處理器子單元612可與記憶體器具640內之XRAM晶片624中的其他處理器子單元分開而單獨地執行程式碼(定義指令集)。因此,本發明之XRAM晶片可允許處理器子單元完全並行地操作,而非依賴於作業系統來管理多執行緒處理或使用多任務處理(其為併發的而非並行的)。
除完全並行實施之外,指派至各處理器子單元之指令中的至少一些可重疊。舉例而言,XRAM晶片624上(或XDIMM 626或IMPU 628內)之複數個處理器子單元612可將重疊指令執行為例如作業系統或其他管理軟體之實施方案,同時執行非重疊指令以便在作業系統或其他管理軟體之環境內執行並行任務。
出於在本說明書中論述之各種結構的目的,電子裝置工程聯合委員會(JEDEC)標準第79-4C號定義DDR4 SDRAM規格,包括特徵、功能性、AC及DC特性、封裝及球/信號指派。在本申請案時間為2020年1月之最新版本可自以下獲得且以全文引用之方式併入本文中:JEDEC固態技術協會,阿靈頓北10街3103號南240室(3103 North 10th Street,Suite 240 South,Arlington),VA 22201-2107,www.jedec.org。
諸如XRAM、XDIMM、XSC及IMPU等例示性元件可購自以色列特拉維夫市之紐羅布萊德有限公司。記憶體處理模組及相關技術之細節可見於2018年7月30日申請之PCT/IB2018/000995、2019年9月6日申請的PCT/IB2019/001005、2020年8月13日申請之PCT/IB2020/000665以及2021年10月18日申請的PCT/US2021/055472中。使用XRAM、XDIMM、XSC、IMPU等元件之例示性實施方案並非限制性的,且基於此描述,熟習此項技術者將能夠使用替代性元件來設計並實施用於各種應用程式之組態。
資料分析處理器
圖8係處理系統,尤其為用於資料分析之處理系統的實施方案之實例。許多現代應用程式受到儲存裝置800與處理(展示為通用計算810)之間的資料通信820限制。當前解決方案包括添加資料快取級以及硬體組件之重新佈局。舉例而言,用於資料分析應用程式之當前解決方案具有侷限性,包括:(1)儲存與處理之間的網路頻寬(BW)、(2)CPU之間的網路頻寬、(3)CPU之記憶體尺寸、(4)低效資料處理方法,以及(5)對CPU記憶體之存取速率。
另外,資料分析解決方案對按比例擴大具有相當大之挑戰。舉例而言,當嘗試添加更多處理能力或記憶體時,需要更多處理節點,因此需要處理器之間及處理器與儲存裝置之間的更多網路頻寬,從而導致網路擁擠。
圖9係用於資料分析加速器之高級架構之實例。資料分析加速器900經組態於外部資料儲存裝置920與分析引擎(AE)910(視情況繼之以例如分析引擎910上之完成處理912)之間。外部資料儲存裝置920可部署於資料分析加速器900外部,經由外部電腦網路存取。分析引擎(AE)910可部署於通用電腦上。加速器可包括軟體層902、硬體層904、儲存層906及網路連接(未圖示)。各層可包括諸如軟體模組922、硬體模組924及儲存模組926之模組。該等層及模組連接在該等層中之各者內、之間及外部。可至少部分地藉由在外部資料儲存裝置920與分析引擎910(或通用計算810)之間應用一個或多個新穎操作、資料簡化及部分處理操作而進行加速。本解決方案之實施方案可包括但不限於諸如內嵌(in-line)、高並行度計算及資料簡化之特徵。在替代性操作中,資料之(僅)一部分係由資料分析加速器900處理,且資料之一部分繞過資料分析加速器900。
資料分析加速器900可至少部分地提供串流處理器,且特別適合於但不限於加速資料分析。資料分析加速器900可大幅減少(例如,減少若干數量級)經由網路傳送至分析引擎910(及/或通用計算810)之資料量,減少CPU之工作負荷,且減少CPU需要使用的所需記憶體。加速器900可包括一個或多個資料分析處理引擎,該一個或多個資料分析處理引擎經定製以用於資料分析任務,諸如掃描、加入、篩選、彙總等,相較於分析引擎910(及/或通用計算810)更有效地進行此等任務。資料分析加速器900之實施方案係硬體增強型查詢系統(HEQS),其可包括Xiphos資料分析加速器(可購自以色列特拉維夫市之紐羅布萊德有限公司)。
圖10係用於資料分析加速器之軟體層之實例。軟體層902可包括但不限於兩個主要組件:軟體開發套組(SDK)1000及嵌入式軟體1010。SDK經由定義明確且易於使用之面向資料分析的軟體API為資料分析加速器提供加速器能力之抽象。SDK之特徵係使得資料分析加速器的使用者能夠維持使用者自身之DBMS,同時添加資料分析加速器能力,例如,作為使用者之DBMS的規劃器最佳化之部分。SDK可包括模組,諸如:
運行時間環境1002可將硬體能力曝露於以上層。運行時間環境可管理基礎硬體引擎及處理元件之程式化、執行、同步及監測。
快速資料I/O提供有效API 1004以用於將資料注入至資料分析加速器硬體及儲存層中,諸如NVMe陣列及記憶體,以及用於與資料交互。快速資料I/O亦可負責將資料自資料分析加速器轉遞至另一裝置(諸如分析引擎910、外部主機或伺服器)以供處理及/或完成處理912。
管理器1006(資料分析加速器管理器)可處置資料分析加速器之管理。
工具鏈可包括開發工具1008以例如幫助開發者增強資料分析加速器之效能、消除瓶頸並最佳化查詢執行。工具鏈可包括模擬器及測繪器以及LLVM編譯器。
嵌入式軟體組件1010可包括在資料分析加速器自身上運行之程式碼。嵌入式軟體組件1010可包括控制加速器之各種組件之操作的韌體1012,以及在處理元件上運行之即時軟體1014。嵌入式軟體組件碼之至少一部分可由(資料分析加速器)SDK產生,諸如自動產生。
圖11係用於資料分析加速器之硬體層之實例。硬體層904包括一個或多個加速單元1100。各加速單元1100包括多種元件(模組)中之一者或多者,該等元件可包括選擇器模組1102、篩選及投射模組(FPE)1103、加入及分組(JaGB)模組1108以及橋接器1110。各模組可含有一個或多個子模組,例如FPE 1103,其可包括字串引擎(SE)1104及篩選及彙總引擎(FAE)1106。
在圖11中,複數個加速單元1100展示為第一加速單元1100-1至第n加速單元1100-N。在本說明書之上下文中,元件編號字尾「-N」通常係指元件中之例示性一者,其中「N」係整數,而無字尾之元件編號通常係指元件或元件群組。一個或多個加速單元1100可單獨地或組合地使用一個或多個單獨FPGA、ASIC、PCB及類似者或其組合來實施。加速單元1100可具有相同或類似硬體組態。然而,此並非限制性的,且模組可因加速單元1100而異。
在本說明書中將使用元件組態之實例。如上文所提及,元件組態可變化。類似地,將使用網路連接及通信之實例。然而,可使用元件之間的替代性及額外連接、前饋及回饋資料。自元件之輸入及輸出可包括資料,且替代地或另外包括信令及類似資訊。
選擇器模組1102經組態以自其他加速元件中之任一者接收輸入,諸如至少自橋接器1110以及加入及分組引擎(JaGB)1108(展示於當前圖中)接收輸入,且視情況/替代地/另外自篩選及投射模組(FPE)1103、字串引擎(SE)1104以及篩選及彙總引擎(FAE)1106接收輸入。類似地,選擇器模組1102可經組態以輸出至其他加速元件中之任一者,諸如輸出至FPE 1103。
FPE 1103可包括多種元件(子元件)。自FPE 1103之輸入及輸出可到達FPE 1103以供分佈至子元件,或直接向及自子元件中之一者或多者分佈。FPE 1103經組態以自其他加速元件中之任一者接收輸入,諸如自選擇器模組1102接收輸入。FPE輸入可被傳送至字串引擎1104及FAE 1106中之一者或多者。類似地,FPE 1103經組態以自子元件中之任一者輸出至其他加速元件中之任一者,諸如JaGB 1108。
加入及分組(JaGB)引擎1108可經組態以自其他加速元件中之任一者接收輸入,諸如自FPE 1103及橋接器1110接收輸入。JaGB 1108可經組態以輸出至加速單元元件中之任一者,例如輸出至選擇器模組1102及橋接器1110。
圖12係用於資料分析加速器之儲存層及橋接器之實例。儲存層906可包括在加速單元1100中之一者或多者及資料分析加速器900中之一者或多者本端、遠端部署或分佈在其內及/或外部的一種或多種類型之儲存裝置。儲存層906可包括在硬體層904本端部署之非揮發性記憶體(諸如本端資料儲存裝置1208)及揮發性記憶體(諸如加速器記憶體1200)。本端資料儲存裝置1208之非限制性實例包括但不限於在資料分析加速器900本端及內部部署之固態硬碟(SSD)。加速器記憶體1200之非限制性實例包括但不限於FPGA記憶體(例如,使用FPGA實施加速單元1100之硬體層904的FPGA記憶體)、記憶體中處理(PIM)1202記憶體,例如記憶體處理模組610中之記憶體602的組600,以及SRAM、DRAM及HBM(例如,部署於具有加速單元1100之PCB上)。儲存層906亦可使用及/或經由橋接器1110(諸如記憶體橋接器1114)經由網狀架構1306(下文參考圖13所描述)將記憶體及資料例如分佈至其他加速單元1100及/或其他加速處理器900。在一些實施例中,儲存元件可由一個或多個元件或子元件實施。
一個或多個橋接器1110向及自硬體層904提供介面。橋接器1110中之各者可直接地或間接地向/自加速單元1100之元件發送及/或接收資料。橋接器1110可包括儲存裝置1112、記憶體1114、網狀架構1116及計算1118。
橋接器組態可包括與本端資料儲存裝置1208介接之儲存橋接器1112。記憶體橋接器與例如PIM 1202、SRAM 1204及DRAM/HBM 1206之記憶體元件介接。網狀架構橋接器116與網狀架構1306介接。計算橋接器1118可與外部資料儲存裝置920及分析引擎910介接。資料輸入橋接器(未圖示)可經組態以自其他加速元件中之任一者(包括自其他橋接器)接收輸入且輸出至加速單元元件中之任一者(諸如輸出至選擇器模組1102)。
圖13係用於資料分析加速器之網路連接之實例。互連件1300可包括部署於加速單元1100中之各者內的元件。互連件1300可以操作方式連接至加速單元1100內之元件,從而在元件之間提供加速單元1100內的通信。在圖13中,例示性元件(1102、1104、1106、1108、1110)展示為連接至互連件1300。互連件1300可使用一個或多個子連接系統實施,該一個或多個子連接系統使用在該等元件中之兩者或更多者(包括但不限於專屬電路及PCI開關)之間的各種網路連接及協定中之一者或多者。互連件1300可促進元件之間的替代性及額外連接前饋及回饋,包括但不限於循環、多程處理及繞過一個或多個元件。互連件可經組態以用於資料、信令及其他資訊之傳送。
橋接器1110可經部署且經組態以提供自加速單元1100-1(自互連件1300)至外部層及元件之連接性。舉例而言,可如上文所描述經由記憶體橋接器1114提供與儲存層906之連接性、經由網狀架構橋接器1116提供與網狀架構1306之連接性,且經由計算橋接器1118提供與外部資料儲存裝置920及分析引擎910的連接性。其他橋接器(未圖示)可包括NVME、PCIe、高速、低速、高頻寬、低頻寬等等。網狀架構1306可提供在資料分析加速器900-1內部及例如在如硬體904及儲存裝置906之層之間及在加速單元之間(例如,在第一加速單元1100-1至額外加速單元1100-N之間)的連接性。網狀架構1306亦可提供來自資料分析加速器900,例如在第一資料分析加速器900-1至額外資料分析加速器900-N之間的外部連接性。
資料分析加速器900可使用柱狀資料結構。柱狀資料結構可作為輸入提供且作為輸出自資料分析加速器900之元件接收。特別地,加速單元1100之元件可經組態以接收呈柱狀資料結構格式的輸入資料且產生呈柱狀資料結構格式之輸出資料。舉例而言,選擇器模組1102可以FPE 1103所輸入之柱狀資料結構格式產生輸出資料。類似地,互連件1300可接收並傳送元件之間的柱狀資料,及加速單元1100與加速器900之間的網狀架構1306。
串流處理避免可限制記憶體映射系統之通信頻寬的記憶體有界操作。加速器處理可包括諸如柱狀處理之技術,亦即,以柱狀格式處理資料以相比於基於列之處理而改良處理效率並減少上下文交換。加速器處理亦可包括諸如單一指令多重資料(SIMD)之技術以將同一處理應用於多個資料元件上,從而增大處理速度,促進資料之「即時」或「線速度」處理。網狀架構1306可有助於大規模系統實施。
諸如PIM 1202及HBM 1206之加速器記憶體1200可提供對記憶體之高頻寬隨機存取的支援。部分處理可自資料分析加速器900產生資料輸出,該資料輸出可比來自儲存裝置920之原始資料小幾個數量級。因此,藉由顯著減小之資料尺度促進分析引擎910或通用計算上之處理的完成。因此,電腦效能得以改良,例如增加處理速度、減少潛時、減少潛時之變化以及減少功率消耗。
與本發明中所描述之實例一致,在一實施例中,一種系統包括經組態以駐存於一資料儲存單元與一個或多個主機之間的一基於硬體之可程式化資料分析處理器,其中該可程式化資料分析處理器包括:一選擇器模組,其經組態以輸入一第一資料集,且基於一選擇指示符而輸出該第一資料集之一第一子集;一篩選及投射模組,其經組態以輸入一第二資料集,且基於一函式而輸出一更新第二資料集;一加入及分組模組,其經組態以將來自一個或多個第三資料集的資料組合成一組合資料集;以及一通信網狀架構,其經組態以在該選擇器模組、該篩選及投射模組以及該加入及分組模組中之任一者之間傳送資料。該等模組可對應於上文結合例如圖8至圖13所論述之模組。
在一些實施例中,第一資料集具有柱狀結構。舉例而言,第一資料集可包括一個或多個資料表。在一些實施例中,第二資料集具有柱狀結構。舉例而言,第二資料集可包括一個或多個資料表。在一些實施例中,一個或多個第三資料集具有柱狀結構。舉例而言,一個或多個資料集可包括一個或多個資料表。
在一些實施例中,第二資料集包括第一子集。在一些實施例中,一個或多個第三資料集包括更新第二資料集。在一些實施例中,第一子集包括等於或小於第一資料集中之值數目的值數目。
在一些實施例中,一個或多個第三資料集包括結構化資料。舉例而言,結構化資料可包括呈行格式及列格式之表資料。在一些實施例中,一個或多個第三資料集包括一個或多個表,且組合資料集包括基於組合來自一個或多個表之行的至少一個表。在一些實施例中,一個或多個第三資料集包括一個或多個表,且組合資料集包括基於組合來自一個或多個表之列的至少一個表。
在一些實施例中,選擇指示符係基於先前篩選值。在一些實施例中,選擇指示符可指定與第一資料集之至少一部分相關聯的記憶體位址。在一些實施例中,選擇器模組經組態以將第一資料集作為資料區塊並行地輸入且使用資料區塊之SIMD處理以產生第一子集。
在一些實施例中,篩選及投射模組包括經組態以修改第二資料集之至少一個功能。在一些實施例中,篩選及投射模組經組態以將第二資料集作為資料區塊並行地輸入且執行資料區塊之SIMD處理功能以產生第二資料集。
在一些實施例中,加入及分組模組經組態以組合來自一個或多個表之行。在一些實施例中,加入及分組模組經組態以組合來自一個或多個表之列。在一些實施例中,模組經組態以用於線速率處理。
在一些實施例中,通信網狀架構經組態以藉由在模組之間將資料串流而傳送資料。資料之串流(或串流處理或分散式串流處理)可促進向/自本文中所論述的模組中之任一者傳送的資料之並行處理。
在一些實施例中,可程式化資料分析處理器經組態以執行SIMD處理、上下文交換及串流處理中之至少一者。上下文交換可包括自一個執行緒切換至另一執行緒,且可包括儲存當前執行緒之上下文及恢復另一執行緒之上下文。
與本發明中所描述之實例一致,在一實施例中,一種系統包括經組態以駐存於一資料儲存單元與一個或多個主機之間的一基於硬體之可程式化資料分析處理器,其中該可程式化資料分析處理器包括:一選擇器模組,其經組態以輸入一第一資料集,且基於一選擇指示符而輸出該第一資料集之一第一子集;一篩選及投射模組,其經組態以輸入一第二資料集,且基於一函式而輸出一更新第二資料集;一通信網狀架構,其經組態以在該等模組中之任一者之間傳送資料。該等模組可對應於上文結合例如圖8至圖13所論述之模組。
與本發明中所描述之實例一致,在一實施例中,一種系統包括經組態以駐存於一資料儲存單元與一個或多個主機之間的一基於硬體之可程式化資料分析處理器,其中該可程式化資料分析處理器包括:一選擇器模組,其經組態以輸入一第一資料集,且基於一選擇指示符而輸出該第一資料集之一第一子集;一加入及分組模組,其經組態以將來自一個或多個第三資料集的資料組合成一組合資料集;以及一通信網狀架構,其經組態以在該等模組中之任一者之間傳送資料。該等模組可對應於上文結合例如圖8至圖13所論述之模組。
與本發明中所描述之實例一致,在一實施例中,一種系統包括經組態以駐存於一資料儲存單元與一個或多個主機之間的一基於硬體之可程式化資料分析處理器,其中該可程式化資料分析處理器包括:一篩選及投射模組,其經組態以輸入一第二資料集,且基於一函式而輸出一更新第二資料集;一加入及分組模組,其經組態以將來自一個或多個第三資料集的資料組合成一組合資料集;以及一通信網狀架構,其經組態以在該等模組中之任一者之間傳送資料。該等模組可對應於上文結合例如圖8至圖13所論述之模組。
基於修剪器之選擇器概述及硬體實施方案
隨著處理器速度及記憶體尺寸兩者均繼續增大,對有效處理速度之顯著限制係馮紐曼(von Neumann)瓶頸。馮紐曼瓶頸係由輸貫量限制產生。特別地,相較於由處理器進行之實際計算,自記憶體至處理器之資料傳送常常遇到瓶頸。此外,處理器之計算頻寬通常大於處理器存取記憶體時所使用之匯流排的頻寬。
此等瓶頸對於以下各者特別地顯著:記憶體密集型程序,諸如神經網路及其他機器學習演算法;資料庫建構、索引搜尋及查詢;及包括比資料處理操作多的讀取及寫入操作之其他任務。
為了促進對大資料集之操縱,需要改良資料處理技術。將通用處理器用於要求苛刻之應用程式在新資料資源可為大規模的未來可能不再可行,且此等資料資源之生長速率可能超過資料處理能力,尤其對於考慮移動至大資料平台中的公司而言。通用處理器與完全定製硬體之組合常常被稱為硬體加速。圖形處理單元(GPU)、特殊應用積體電路(ASIC)或場可程式化閘陣列(FPGA)係經設計以在較高速度下運行密集型程序之此新一代硬體解決方案的部分。然而,硬體加速不僅關於購買此等新專用組件,亦關於對其進行程式化。任何資料科學家皆不具備對此等先進硬體組件進行程式化所需之技能組合。硬體工程師可執行此等任務,但由於高需求及低供給,其通常定價較高。出於此原因,大部分公司無法使用硬體加速且增加其效能。本發明描述用於減輕或克服上文所闡述之一個或多個問題以及先前技術中之其他問題的解決方案。
相較於其他系統,具有專用且完全定製之硬體組件的預處理架構可減少資料傳送。代替直接實施與現有主機處理器(例如,中央處理單元(CPU))相關聯之定製硬體組件,所揭示實施例可充當主機處理器(例如,查詢處理器、分析引擎)與資料儲存裝置之間的中間物以加速與包括於資料儲存裝置中之資料的交互。舉例而言,在主機起始資料查詢之情況下,所揭示實施例可藉由執行關於資料查詢的任務且遞送資料查詢結果作為輸出(例如,至主機或沿另一輸出路徑)來對主機起始之資料查詢作出回應。此流程可避免瓶頸及與直接自資料儲存裝置至主機載入資料、主機與資料儲存裝置之間的記憶體讀取/寫入及/或由自資料儲存裝置擷取之資料的主機進行之基於軟體之處理相關聯的低效。在某些情形下,所揭示實施例可自主機接收查詢且將查詢結果返回至主機(或某一其他目的地)。藉由經設計以加速某些資料篩選(或其他資料操縱)程序之電路系統,所揭示實施例可經裝備以相比於主機可獨立實現的更快速地返回查詢結果。所揭示實施例可適用於輔助多種資料密集型任務。在一個實例中,所揭示實施例可輔助表篩選,且可不再需要將資料之整個表自記憶體傳送至遠端CPU以由CPU處理以供自該表選擇資料。
選擇器之實施例在本說明書之上下文中被稱作「修剪器」、「修剪器選擇器」、「基於修剪器之選擇器」、「修剪器模組」、「修剪邏輯」及類似用語。基於修剪器之選擇器的特徵係經組態以自主機處理器傳送至少一個篩選值之介面。修剪邏輯接著經組態以:經由介面接收篩選值且使用至少一個篩選值以掃描儲存於記憶體中之資料表之列或行;產生識別駐存有至少一個篩選值的資料表之一組列或行的選擇指示符;並且基於選擇指示符而將經篩選輸出提供至主機處理器。在本說明書中,使用非限制性實例,其中資料以列-行格式而結構化為資料表,可使用且篩選其他類型之資料,包括非結構化資料。非結構化資料之實例包括文字、訊息視訊、相片、網頁、音訊信號等。
應注意,在資料庫技術中,詞語「修剪器」及「修剪」可用於指代與當前實施例之領域無關的功能。「修剪」功能之一些實例包括:自資料庫移除不合需要的歷史資料;在遷移之前減小資料庫尺寸;判定並提取具有所要性質之資料集;以及自資料庫移除不合需要之資料。雖然此等功能可能使用所揭示實施例中之一者或多者而不限制實施例的範圍,但待由所揭示實施例解決之問題包括表之更快且更高效篩選。
在資料分析處理器中實施之基於修剪器之選擇器
相比於其他選擇系統,用於多程資料處理之系統可顯著減少資料傳送。基於修剪器之選擇器的特徵係經組態以用於基於來自資料集之資料的第一子集而產生選擇指示符之第一處理器。處理模組經組態以用於自來自資料集之資料的第二子集選擇(篩選/消耗)所選擇資料,該選擇基於選擇指示符。
在本說明書中,使用資料集為呈列-行格式之結構化表資料且選擇指示符為選擇向量的非限制性實例。在此情況下,基於修剪器之選擇器的特徵係處理行及述詞之初始處置,接著處理(消耗、篩選)表資料。第一處理器最初對表資料之第一組一個或多個行進行篩選以產生選擇向量。選擇向量包括指示第一組行之對應列中存在(匹配)述詞的一個或多個旗標。較佳地,處理模組消耗表資料之第二組一個或多個行且基於選擇向量而輸出來自第二組行之對應列。在替代性實施例中,可輸出選擇向量。
所揭示實施例特別適用於解決表篩選之問題,例如不再需要將資料之整個表自記憶體傳送至遠端CPU以由CPU處理以供自該表選擇資料。表包括基於述詞而經篩選之一組列。
圖14係資料分析架構之高級實例。可至少部分地藉由在外部資料儲存裝置920與分析引擎910(例如,CPU)之間應用新穎操作,視情況繼之以完成處理912來進行諸如資料分析加速器900之加速。修剪器選擇器1402可實施為硬體層904中之模組。
圖15係資料分析加速器900之實例,包括具有修剪器選擇器1402之實施例的選擇器模組1102之實施方案。修剪器選擇器1402可實施為加速單元1100中之硬體層904之部分。如上文參考總體加速架構及組態所描述,修剪器選擇器1402可經組態以自其他加速元件中之任一者接收輸入,例如至少自橋接器1110中之一者接收資料,且視情況/替代地/另外自篩選及投射模組(FPE)1103、字串引擎(SE)1104、篩選及彙總引擎(FAE)1106以及加入及分組模組1108接收輸入。類似地,修剪器選擇器可經組態以輸出至其他加速元件中之任一者,例如輸出至FPE 1103或輸出至橋接器1110。
圖16A係表選擇器1600之方法之實例。在此文件之上下文中,術語「表選擇器」亦被稱作篩選或查詢表以自該表提取資料,且亦被稱作選擇及/或自表之選擇。當前實例中之例示性表1601包括4列1602之資料,各列具有4個值:城市、街道、名字(FN)及姓氏(LN)。資料列1602包括列-1 1602-1、列-2 1602-2、列-3 1602-3及列-4 1602-4。值1604展示為對應於行1604,包括行-1(col-1)1604-1、行-2(col-2)1604-2、行-3(col-3)1604-3及行-4(col-4)1604-4。匹配篩選器1606及IN篩選器1608用以產生經篩選結果1610。例示性表資料展示為城市{A, B}、街道{a, v}、分別一至四之FN {FN1, FN2, FN3, FN4}及一至四之對應LN {LN1, LN2, LN3, LN4}。例示性選擇器方法選取住在城市A(第1述詞)及街道IN群組{a, b, c, d}(第2述詞)的人群之名字及姓氏(FN,LN)。此查詢可例如以SQL表示:
select t.fn, t.ln
from table as t
where t.city = A and t.street = a
傳統查詢1600係基於列篩選,且使用以下方法:
1. 藉由匹配篩選器1606掃描列1602中之資料。由於列1602中之各者中的資料由匹配篩選器1606掃描,因此正經掃描之列係基於第一述詞(城市,col-1 1604-1)而經篩選以產生第一經篩選結果。
2. 來自匹配篩選器1606之第一經篩選結果(經篩選列)被發送至IN篩選器1608。由於經篩選列(第一經篩選結果之列)中之各者由IN篩選器1608接收,因此IN篩選器1608基於作為第二述詞({a, b, c, d})之IN群組而進行篩選且輸出經篩選結果1610。
如此項技術中已知,述詞係應用於表中之列的條件。邏輯條件之結果為正確(TRUE)或錯誤(FALSE)。用於述詞中(藉由述詞)之例示性操作包括:
IN運算子。
存在函式。
匹配運算子。
範圍運算子。
類運算子。
ANY/ALL運算子。
圖16B係符合所揭示實施例之預處理架構(例如,硬體修剪器)之圖解表示。可至少部分地使用修剪電路系統及/或藉由在記憶體1322與查詢處理器1324(例如,CPU)之間應用修剪操作而執行使用修剪器1320減少資料傳送。在一些實施例中,查詢處理器1324可包括能夠起始與儲存於記憶體中之資料之交互(例如,資料查詢)的任何基於邏輯之電路系統。基於邏輯之電路系統的實例可包括組合電路系統、狀態電路系統、處理器、ASIC、FPGA、CPU或GPU。在一些其他實施例中,查詢處理器1324(例如,主機處理器,如上文所描述)可發出使修剪邏輯1328相對於記憶體1322中之資料執行預設篩選任務的信號。舉例而言,信號可對應於特定電壓值、邏輯值、文字字串或位元字串。另外,可將經篩選結果發送至查詢處理器1324或任何其他合適之位置,諸如暫存器或資料儲存裝置。
修剪器1320可包含介面1326及修剪邏輯1328。查詢(包括至少一個篩選值)可由查詢處理器1324發送。可在修剪器1320處經由介面1326接收查詢。可由修剪邏輯1328執行查詢。介面可包括可接收與查詢相關聯之至少一個資料值的一個或多個結構(例如,ASIC接腳、電路節點、邏輯區塊等等)。在上文及在整個本說明書中,術語「查詢」係指對儲存於資料源(例如記憶體)中之資料的請求,此請求可包含至少一個篩選值以減少自資料源擷取之資料的數目。在一些實施例中,查詢可包含除擷取資料外之至少一個額外資料操縱操作。舉例而言,查詢可包括諸如插入、更新或刪除資料之操作。出於說明之目的,以下提供以SQL語言表示之查詢:
SELECT t.street
FROM table as t
WHERE t.city = A.
此查詢之目標係自資料表「t」擷取住在城市「A」之人群的街道名稱。為了易於理解,關於包括列及行之資料表而描述所揭示實施例。然而,應理解,所揭示實施例可結合包括可搜尋資料元件之任何合適資料集來使用。在一些情況下,此類資料集可為結構化資料元件。
在替代性操作中,資料之一部分可由修剪器1320處理(如由當前圖中之實線雙向箭頭表示),且資料之另一部分可繞過修剪器1320(如由圖16B中之虛線雙向箭頭表示)。
在一些實施例中,查詢處理器1324可包括CPU。舉例而言,查詢處理器可部署於通用電腦上,以使得當查詢操作為通用電腦所需時,資料並未自記憶體1322直接傳送至通用電腦之中央處理單元,而是由修剪器1320處理並篩選。一般而言,查詢處理器可包括經組態以對自記憶體擷取之資料進行操作、處理、調節等的任何基於邏輯之電路系統。此等查詢處理器可包括CPU、GPU、FPGA。在某些情況下,所揭示之修剪器1320(包括修剪器邏輯1328)可輔助減少或消除與將大量資料自資料儲存單元傳送至查詢處理器(例如,作為查詢處理器進行的操作之部分)以產生查詢之結果相關聯的瓶頸效應。
在一些實施例中,記憶體1322可包括一個或多個非揮發性儲存單元。非揮發性儲存單元之實例可包括快閃記憶體儲存裝置、硬碟機(HDD)或固態硬碟(SSD)。在一些其他實施例中,記憶體1322可包括一個或多個揮發性記憶體模組。舉例而言,記憶體1322可包括一個或多個動態隨機存取記憶體(DRAM)模組、靜態RAM模組(SRAM)、快取記憶體模組、同步動態RAM(SDRAM)模組、DDR4 SDRAM模組、半導體記憶體晶片及/或計算記憶體。在又一實施例中,記憶體1322可包括一個或多個雙列直插記憶體模組(DIMM)。
修剪邏輯1328可包括適合於執行一個或多個資料篩選操作之任何類型的基於硬體之電路系統。在一些實施例中,修剪邏輯1328可包括經程式化以篩選自記憶體擷取之資料的FPGA。舉例而言,在一些情況下,將來自資料表之資料串流至FPGA。滿足提供至FPGA之某些篩選準則的資料值可作為來自FPGA實施之修剪邏輯的輸出而經串流。可自FPGA之輸出省略不滿足篩選準則之資料值。以此方式,修剪邏輯可自甚至極大資料庫(例如,具有數百萬列之資料表)迅速且有效地產生經篩選資料輸出,且此等經篩選資料輸出可經提供至一個或多個查詢處理器。使用所揭示之修剪邏輯的此操作可不再需要查詢處理器自資料儲存單元載入大資料表或資料表之部分(例如,經由記憶體瓶頸),且相對於大資料表/區塊執行其自身之篩選操作。修剪邏輯亦可包括其他結構。在一些情況下,修剪邏輯1328可實施於一個或多個ASIC上。另外或替代地,修剪邏輯可包括一個或多個比較器,該一個或多個比較器經組態以接收呈數位或二進位形式之至少兩個輸入值且產生指示一個輸入是等於、小於還是大於另一輸入的輸出。基於比較器之邏輯結構的實例包括字串篩選器、字串比較器、計數器、分類網路等。在一些情況下,比較器可包括使用特定語言(例如,SQL語言中之MATCH、IN、EXIST、RANGE、LIKE、ANY/ALL函式等)在處理裝置上程式化之一個或多個函式。
在圖16B之實例中,修剪器1320位於記憶體1322外部。然而,可使用不同組態。舉例而言,在一些實施例中,修剪邏輯1328可在記憶體1322本端。在其他實施例中,修剪邏輯1328可部署於與記憶體1322相關聯之介面或控制器上。在一些實施例中,修剪器1320可包括內部記憶體且可將儲存於記憶體1322中之資料表或一個或多個資料表之部分複製至內部記憶體中。
在一些實施例中,修剪器1320可包括為經組態以加速各種資料分析功能之更複雜資料分析加速器架構(圖14)之部分。資料分析加速器可經組態為記憶體1322與查詢處理器1324之間的中間物。在一個實例中,資料分析加速器900可包含複數個模組、硬體及軟體兩者,以及一些儲存組件,其中該等模組可彼此互連。修剪器1320可由資料分析加速器之複數個模組當中的一個或多個模組實施。部署於複數個模組中之一個模組中的任何處理器可發送包含至少一個篩選值之查詢,該至少一個篩選值可藉由修剪邏輯1328經由介面1326接收。在一些實施例中,查詢處理器1324可指代加速器自身之部分,其中加速器之部分可包含引發資料請求的一個或多個處理器子單元。
基於單一篩選值之表篩選
圖16C提供可由修剪器1320相對於例示性資料表1330執行之實例篩選操作之圖解表示。舉例而言,查詢處理器1324可起始資料查詢,且作為資料查詢之部分,可將諸如篩選值1331(亦即,表示城市「A」之值)之至少一個篩選值傳送至修剪器1320。篩選值可包括數字(例如,整數值)、文字字串、數字及/或文字之二進位表示等。作為回應,修剪器1320可掃描儲存於記憶體1322中之資料(例如,一個或多個資料表)且產生包括滿足至少一個篩選值之資料的經篩選輸出。經篩選輸出可經提供至查詢處理器1324,從而減輕查詢處理器1324自身產生查詢結果(可涉及一個或多個瓶頸之程序,該一個或多個瓶頸可導致與資料查詢程序相關聯的低效)之需要。
修剪器1320可使用各種技術以掃描來自記憶體1322之資料。舉例而言,回應於篩選值1331,修剪器1320可將行1334-1識別為包括與掃描相關之資料。在一些實施例中,來自行1334-1之值可載入至與修剪器1320相關聯之記憶體層中。可一次一個地載入值且依序掃描該等值。亦即,行1334-1中之列值可依序與篩選值1331進行比較以判定各列值是匹配還是包括篩選值1331。在其他情況下,來自行1334-1之值可載入於預定尺寸之區塊中,以使得藉由依序存取儲存於資料表1330的列(或行)中之值的區塊而掃描來自行1334-1之列值(或在一些實例中為行值)。經載入以供掃描之值的區塊可包括單列值或單行值。在其他情況下,經載入以供掃描之值的區塊可包括來自複數個列或複數個行之值。值之區塊可具有任何合適之尺寸。在一些情況下,值之區塊可表示256位、2、8、32、64、128、256千位或10 MB之資料。在一些情況下,可一起載入且接著隨後掃描包括於行1334-1中之所有值。
在本說明書之上下文中,邏輯匹配可為篩選值與待分析之另一測試值(例如,來自資料表1330之資料值,或自與資料表1330相關聯的一個或多個值導出之值)之間的布林運算(Boolean operation)之結果。布林運算可由儲存於修剪邏輯1328之至少一個處理器中的程式執行。另外或替代地,布林運算可使用包括於修剪邏輯1328中之一個或多個硬體組件(例如,比較器等)來執行。布林運算可在不同層級處發生。舉例而言,布林運算可由將篩選值與呈文字字串或整數值形式之測試值進行比較組成。在一些實施例中,篩選值可為二進位、二進位大型物件、十進位、時序等。替代地,該運算可藉由篩選值及測試值之二進位表示來直接執行。
使用修剪邏輯1328,其可包括一個或多個篩選器、字串比較器等,修剪器1320掃描來自行1334-1之值且將來自行1334-1之值與篩選值1331(例如,在此情況下為「A」)進行比較。作為行1334-1之值的掃描之部分,修剪器1320之修剪邏輯1328產生識別圖16C的實例中之駐存有篩選值「A」之一組列的選擇指示符1337(在其他情況下,亦可關於行而進行該識別)。
選擇指示符1337可包括適合於識別包括匹配至少一個資料查詢篩選值之值的列或行(或任何其他資料結構位置)之任何結構。在一些情況下,選擇指示符1337可使用經組態以儲存位元向量之值的一個或多個暫存器來實施。在圖16C之實例中,對於來自行1334-1的匹配篩選值(「A」)之各列值,包括修剪邏輯1328之修剪器1320可在儲存於一個或多個暫存器中的位元向量中設定位元(例如,設定至值「1」)。
修剪器1320可經組態以在掃描結束時抑或在一些情況下在相關資料位置之掃描正在進行中時將各種類型的經篩選輸出提供至查詢處理器1324。在一個實例中,提供至查詢處理器1324之經篩選輸出包括由修剪器1320之修剪邏輯1328產生的選擇指示符1337。1’及0’之此位元向量可接著由查詢處理器1324用作對滿足資料查詢之資料的映射。使用選擇指示符,查詢處理器1324可僅自滿足資料查詢(例如,城市=A)之資料表1330之彼等列選擇性地載入值。換言之,查詢處理器1324可經組態以使用由修剪邏輯1328提供之選擇指示符以自記憶體1322擷取資料表1330之子集,該子集包括駐存有至少一個篩選值(例如,「A」)的資料表之一組經識別列或行。
在另一實例中,修剪器1320可將資料表1330之子集輸出至查詢處理器1324,該子集包括駐存有至少一個篩選值的資料表之該組經識別列或行的至少一部分。此子集將對應於由選擇指示符位元向量表示之「正確」值且應自列(或在一些實施例中自行)排除不包括至少一個篩選值「A」的值。
返回至圖16C之實例,資料表1330可包含複數個列1332及行1334。在此實例中,資料表1330包括十個列(1332-1至1332-10)及四個行(1334-1至1334-4),其中行1334-1儲存城市值,行1334-2儲存街道值,行1334-3儲存名字(FN)值,且行1334-4儲存姓氏(LN)值。
資料表1330可經組態以儲存可由資料查詢存取之任何類型的資料。舉例而言,諸如資料表1330之資料表可用於儲存各種類型的記錄(例如,客戶記錄、訂購單記錄、傳記資訊或表示實體特性之任何類型的資訊)。在圖16C之實例中,與資料查詢相關聯之篩選操作的目標係自資料表1330擷取表徵住在城市「A」中之個人的資訊。
在資料表1330中,篩選行對應於第一行1334-1(「城市」行)。在對與行1334-1相關聯之列值的掃描期間,修剪邏輯1328將第一行1334-1之各列值與篩選值「A」或篩選值「A」之表示進行比較。在圖16C之實例中,五個列值(亦即,1332-1、1332-3、1332-5、1332-9及1332-10)包括匹配篩選值「A」之值。因此,選擇指示符位元向量將產生為包括與索引1、3、5、9及10相關聯之「正確」值。位元向量之其他索引將指示「錯誤」結果。如上文所指出,可將各種輸出自修剪器1320提供至查詢處理器1324。在一些情況下,可將選擇指示符1337(例如,圖16C中之[1, 0, 1, 0, 1, 0, 0, 0, 1, 1])作為輸出提供至查詢處理器1324。在其他情況下,可將資料表1330之子集作為經篩選輸出提供至查詢處理器1324(例如,連同選擇指示符1337一起或作為該選擇指示符之替代方案)。舉例而言,如圖16C中所展示,可產生經篩選資料表1336作為輸出。在此情況下,經篩選資料表1336包括僅來自其中城市=A之彼等列的值。應注意,經篩選表1336之空列展示於圖16C中以僅闡明與資料表1330之對應列的關係且指示自經篩選表1336中省略了來自不包括資料查詢篩選值之列的資料。亦應注意,經篩選表不需要包括來自行1334-1之資料值,此係因為彼等值(亦即,「A」)隱含地表示於經篩選表1336中。亦即,經篩選表1336包括僅來自其中行1334-1之列值指示城市=A的列之值。
如上文所描述,修剪邏輯1328可在對資料表1330之掃描完成之後或在對資料表1330之掃描正在進行中時將經篩選表1336(或經篩選表1336之值)輸出至查詢處理器1324。舉例而言,在圖16C之實例中,假定對篩選行列值之掃描開始於第一列1332-1,修剪邏輯可設定至選擇指示符之第一位元「1」,且將列1332-1之所有列值(例如,除篩選行列值以外)發送至查詢處理器1324。在此情況下,作為經篩選輸出之部分而傳送至查詢處理器1324之列值包括值「a」、「FN1」及「LN1」。在一些情況下,可在掃描第二列1332-2之前、在對第二(及/或後續列)之掃描正在進行中的同時或在對資料表1330之掃描完成之後將此等值傳送至查詢處理器。在其他情況下,如上文所描述,修剪器可僅輸出選擇指示符1337或輸出該選擇指示符連同經篩選表1336。
基於多於一個篩選值之表篩選
圖16D提供修剪器1320可如何回應於涉及多於一個篩選值之資料查詢而輔助產生資料查詢結果的一個實例之圖解表示。類似於圖16C之實例,此處,資料表1330包括複數個列1332及行1334。具體言之,圖16D中之資料表1330包括十個列(1332-1至1332-10)及四個行(1334-1至1334-4),其中四個行包括與以下各者相關聯之值:城市(1334-1)、街道(1334-2)、名字(FN)(1334-3)、姓氏(LN)(1334-4)。在圖16D之實例中,自查詢處理器1324接收或由該查詢處理器產生之資料查詢可包括與資料查詢尋求資料(例如,名字(FN)及姓氏(LN))相關聯的兩個篩選值1331b,該資料查詢尋求資料與住在城市「A」及街道「a」之人群相關聯。此類查詢可與SQL表述相關聯,諸如:
SELECT t.First Name, t.Last Name
FROM table as t
WHERE t.city = A AND t.street = a.
其將自資料表「t」擷取住在城市「A」之街道「a」的個人之名字及姓氏。
如在以上圖16C實例中,在此實例中,修剪器操作可包括:修剪邏輯1328經由介面1326自查詢處理器1324接收至少一個篩選值。在此實例中,篩選值包括街道=a及城市=A。此等篩選值係由修剪邏輯1328使用以掃描儲存於記憶體1322中之資料表1330的列1332(或行1334,此取決於表結構)。由於該掃描,修剪邏輯1328產生識別駐存有至少一個篩選值的資料表1330之一組列(或行)的選擇指示符1336。換言之,選擇指示符識別來自表1330的滿足所接收之篩選值(亦即,城市=A且街道=a,在圖16D之實例中)的資料之子集。如下文將詳細地描述,可基於掃描程序之結果而改進選擇指示符,且選擇指示符之一個或多個改進版本可用於加速對表1330中的與所接收之篩選值相關的資訊之掃描。修剪器1320可基於選擇指示符1336而將經篩選輸出提供至查詢處理器1324。在一些情況下,經篩選輸出可包括選擇指示符1336。在其他情況下,可將來自表1330的對應於改進選擇指示符(例如,1336-2)之經篩選資料子集提供至呈經篩選表1338形式之查詢處理器1324。可在具有或不具有選擇指示符1336之情況下將經篩選表1338提供至查詢處理器1324。
返回至圖16D,將更詳細地描述用於基於所接收之篩選值,城市=A及街道=a,而掃描資料表1330的例示性程序。可使用兩個所接收之篩選值中之任一者開始掃描程序。在一個實例中,修剪邏輯1328可基於城市=A之篩選值而開始掃描。使用類似於上文相對於圖16C實例所描述之技術,修剪邏輯可掃描「城市」值所儲存於的行1334-1中之列值1332-1至1332-10。對於包括「A」之值的各列,修剪邏輯1328將設定對應選擇指示符1336之指定符。如上文所提及,選擇指示符可包括經組態以追蹤修剪邏輯1328之掃描結果的任何資料結構。在一些情況下,選擇指示符包括儲存於一個或多個暫存器中之位元向量。在此等實例中,對於包括「A」之值的城市行1334-1之各列值,修剪邏輯1328將選擇指示符之位元設定為「正確」或「1」(或設定為與第一篩選值邏輯匹配之任何其他指示符)。由於基於篩選值「A」而掃描城市行1334-1,修剪邏輯可產生初始選擇指示符1336-1,該初始選擇指示符包括位元向量[1, 0, 1, 0, 1, 0, 0, 0, 1, 1],該位元向量指示在列1332-1、1332-3、1332-5、1332-9及1332-10中識別出與「A」之值的邏輯匹配(且相反地,在列1332-2、1332-4、1332-6、1332-7或1332-8中未識別出與「A」之值的邏輯匹配)。
對資料表1330之掃描可基於第二篩選值街道=「a」而繼續。然而,初始選擇指示符1336-1可用以加快第二篩選器掃描,而非關於第一篩選值城市=「A」而重複上文所描述之掃描程序。舉例而言,若所關注之資料查詢尋求住在城市「A」及住在街道「a」之個人的名字及姓氏,則不需要掃描資料表1330之在行1334-1中不包括與「A」邏輯匹配的城市值之列。初始選擇指示符1336-1包括此資訊且可由修剪邏輯1328使用以導引資料表1330之第二(及)後續掃描。舉例而言,在產生初始選擇指示符1336-1之後,修剪邏輯1328僅需要掃描街道行1334-2的亦包括如由初始選擇指示符1336-1中之位元=「1」所指定之城市值=「A」的彼等列。因此,修剪邏輯而是可依賴於初始選擇指示符1336-1且僅掃描街道行1334-2之列1332-1、1332-3、1332-5、1332-9及1332-10以對彼等列位置處的「a」之值進行測試,而非掃描街道行1334-2之所有值。在此特定實例中,依賴初始選擇指示符1336-1會允許修剪邏輯1328在其對街道行1334-2進行掃描以尋找街道值=「a」時跳過列1332-2、1332-4、1332-6、1332-7或1332-8(亦即,在此實例中,相對於第二篩選值,修剪邏輯1328需要掃描之列數目減少了50%)。在此實例中,對街道行1334-2之列1332-1、1332-3、1332-5、1332-9及1332-10的掃描將僅在列1332-1、1332-5及1332-10中產生與街道值「a」之邏輯匹配。基於此等結果,可產生改進選擇指示符1336-2,其指示資料表1330之僅列1332-1、1332-5及1332-10表示既住在城市「A」又住在街道「a」之個人。
可將改進選擇指示符1336-2輸出至查詢處理器1324。替代地或另外,修剪器1320可輸出包括資料查詢之結果的經篩選表1338。如圖16D中所展示,經篩選表1338包括僅來自列1332-1、1332-5及1332-10之名字及姓氏值。
在本發明所揭示實施例中使用選擇指示符有可能會顯著加快對資料結構之掃描,此又可導致產生資料查詢之結果所需的時間之顯著減少。資料結構掃描被加速之程度甚至可隨著資料查詢之複雜度增加而增加。舉例而言,隨著與資料查詢相關聯之篩選值的數目增加,在所揭示實施例中使用選擇指示符及改進選擇指示符有可能會極大地減少需要掃描之資料量以便將結果返回至資料查詢。圖16D之特定實例僅涉及兩個篩選值。然而,在一些情況下,資料查詢可涉及3、10、50或100+個篩選值且可相對於具有可能數千或數百萬列及/或行或更多的資料表而進行。關於第一篩選值而對資料表進行之初始掃描將產生初始選擇指示符。關於第二篩選值且僅涉及由初始選擇指示符識別之彼等列而對資料表進行的減少之第二掃描將產生第一改進選擇指示符。關於第三篩選值且僅涉及由第一改進選擇指示符識別之彼等列而對資料表進行的另一減少之第三掃描將產生第二改進選擇指示符。關於第四篩選值且僅涉及由第二改進選擇指示符識別之彼等列而對資料表進行的另一減少之第四掃描將產生第三改進選擇指示符。關於第五篩選值且僅涉及由第三改進選擇指示符識別之彼等列而對資料表進行的另一減少之第五掃描將產生第四改進選擇指示符。此程序可繼續,直至已經由對諸如資料表之資料結構中之相關位置的掃描而對與特定資料查詢相關聯之所有篩選值進行定址為止。正如圖16D之實例繪示,在本發明所揭示實施例中使用選擇指示符可顯著地減少相對於第二篩選值而需要掃描之資料量。使用改進選擇指示符可進一步減少相對於第三篩選值而需要掃描之資料量,等等。對於涉及多個篩選值之資料查詢,不出所料,相對於第n篩選值進行的掃描會涉及相對於第一篩選值掃描之資料量的一小部分。因此,所揭示實施例相較於傳統技術可更迅速地產生資料查詢之經篩選資料輸出。
應注意,雖然以上實例指代使用位元向量實施之選擇指示符,但在一些實施例中,選擇指示符1336可採取不同於位元向量之形式。舉例而言,選擇指示符可使用選擇位元映射、符記、資料結構、功能及/或詞典實施,包括表示對應於至少一個篩選值之資料匹配的指示符或旗標。資料結構中之各值可指示是否應選擇對應資料單元。選擇指示符可包括用於評估諸如資料表1330之資料結構之相關部分所需的任何數目個項目。舉例而言,選擇指示符可包括1×n位元向量,其中n大於或等於資料表1330中所包括之列(或行)的數目。在其他情況下,選擇指示符可具有定長(例如,取決於一個或多個相關聯暫存器之尺寸),且掃描資料表1330及輸出經篩選結果可以逐步方式執行以在關於選擇指示符結構尺寸之任何尺寸約束內工作。舉例而言,可針對一個或多個篩選值掃描資料表1330之第一部分。可產生初始及在適用情況下為改進之選擇指示符,且可將經篩選輸出提供至查詢處理器1324。可接著針對資料表1330之第二及(在適當時)後續部分重複此程序,其中資料表1330的部分經大小設定以與關於例如用以實施與特定資料查詢相關聯之選擇指示符之暫存器的任何尺寸約束相容。
返回至圖16D之實例,修剪器1320可基於所產生之選擇指示符/改進選擇指示符而返回各種類型的經篩選輸出。在一些情況下,可提供選擇指示符1336(例如,提供至查詢處理器1324)作為經篩選輸出。選擇指示符1336可包括初始選擇指示符或改進選擇指示符,如圖16D中所展示。查詢處理器1324或任何其他處理器可使用由修剪器1320輸出之選擇指示符以自記憶體1322擷取例如由自修剪器1320接收到之選擇指示符所指示的資料值。舉例而言,在圖16D之實例中,基於自修剪器1320輸出之選擇指示符1336而擷取的資料值將僅包括定位於資料表1330之列1332-1、1332-5及1332-10中的名字及姓氏值。
替代地或另外,修剪器1320可在其掃描操作完成期間或在其掃描操作完成之後將經篩選資料輸出串流。舉例而言,在回應於涉及N個篩選值之資料查詢而對資料結構的第N次掃描期間或之後,修剪器1320可將經篩選資料輸出結果串流至查詢處理器1324。
經篩選輸出可包括資料表之子集,該子集包括駐存有至少一個篩選值的資料表之該組經識別列或行的至少一部分。資料表之子集可排除不包括至少一個篩選值之列或行。作為經篩選輸出返回的資料表之子集亦可排除篩選值自身,此係因為彼等值被暗示為與所返回結果相關聯,因為僅來自包括與篩選值邏輯匹配之列(或行)的值係作為經篩選輸出由修剪器1320返回。
在一些實施例中,可儲存相對於特定資料查詢而產生之一個或多個選擇指示符以供稍後使用。在圖16D之實例中,初始選擇指示符1336-1及/或改進選擇指示符1336-2(其可或可不作為經篩選結果之部分自修剪器1320輸出)可經儲存(例如,儲存在記憶體1322或任何其他儲存單元中)。此等所儲存之選擇指示符可回應於涉及在對資料表之先前掃描中所使用的篩選值之資料查詢而經充分利用以甚至更迅速地產生經篩選搜尋結果。此充分利用可用於在第一資料查詢與後續資料查詢之間尚未更新源資料(例如,圖16D之資料表1330)的情況下或用於在資料查詢之間對資料源之更新被追蹤到或為已知的情況下。對涉及更新資料值之資料行(或列)的後續掃描可在執行更新掃描時充分利用所儲存之選擇指示符(例如,圖16D之初始選擇指示符1336-1)來說明新資料。舉例而言,若在關於篩選值「A」而對城市行1334-1進行掃描之後僅改變列值1332-4,則回應於涉及城市=「A」之後續資料查詢,修剪器1320可以先前儲存的初始選擇指示符1336-1開始。修剪器1320將必須掃描列1332-4之僅更新值以對「A」之值進行測試。基於該測試之結果,修剪器1320可儲存初始選擇指示符1336-1之更新版本(亦即,城市=「A」結果)且使用該更新版本來完成資料查詢。修剪器1320將不需要回應於涉及先前遇到的「A」之篩選值的資料查詢而重複對城市行1334-1之整個掃描。
為了進一步繪示此原理,作為由圖16D表示之資料查詢的部分,修剪器1320可儲存初始選擇指示符1336-1(指示與篩選值城市=「A」邏輯匹配)及/或改進選擇指示符1336-2(指示與篩選值城市=「A」及篩選值街道=「a」邏輯匹配)。回應於請求住在城市「A」且名字為「Carl」之個人之姓氏的後續資料查詢:
SELECT t.Last Name
FROM table as t
WHERE t.city = A AND t.First Name = Carl
修剪器1320不需要重複對城市行1334-1之掃描以識別包括值「A」之列。已在初始選擇指示符1336-1中發現該資訊。因此,為了完成資料查詢,修剪器1320可依賴於先前儲存之初始選擇指示符1336-1以關於篩選值「Carl」而僅掃描名字行1334-3的列1332-1、1332-3、1332-5、1332-9及1332-10。若FN5係列1332-1、1332-3、1332-5、1332-9及1332-10中識別出之唯一「Carl」,則修剪器將返回LN5作為經篩選輸出。視情況,與資料查詢城市=「A」及FN=「Carl」相關聯之改進選擇指示符(例如,[0, 0, 0, 0, 1, 0, 0, 0, 0, 0])可經儲存以供未來使用。
在又一實例中,在圖16D之實例之後的資料查詢可僅請求住在城市=「A」街道=「a」之個人的姓氏。
SELECT t.Last Name
FROM table as t
WHERE t.city = A AND t.street = a.
回應於請求住在城市「A」街道「a」之個人之姓氏的後續資料查詢,修剪器1320不需要重複對城市行1334-1或街道行1334-2之掃描以識別包括值「A」及「a」之列。已在改進選擇指示符1336-2中發現該資訊。因此,為了完成資料查詢,修剪器1320可依賴於先前儲存之改進選擇指示符1336-2以立即輸出所請求資訊,亦即,如由改進選擇指示符1336-2([1, 0, 0, 0, 1, 0, 0, 0, 0, 1])所告知的LN1、LN5及LN10。
除上述實例以外,所儲存之選擇指示符亦可在適用情況下組合使用以完成涉及先前搜尋的篩選值之組合的後續資料查詢。舉例而言,修剪器1320可經組態以將兩個或更多個先前儲存之選擇指示符(例如,使用AND或OR函數)邏輯地組合為所產生之經篩選輸出1338或產生新的改進選擇指示符以供用於完成新接收之資料查詢。
在一些實施例中,修剪邏輯1328可經組態以並行地掃描資料表1330之列1332或行1334,其中使用各別篩選值掃描各列或行。結果,修剪邏輯1328可並行地產生選擇指示符,從而識別駐存有相關篩選值的資料表之一組列(或行)。在圖16D之實例中,可分別使用篩選值「A」及「a」並行地掃描資料表1330之第一行1334-1及第二行1334-2。對於各次掃描,可產生特定選擇指示符,掃描第一行1334-1可使得產生第一特定位元向量(例如,位元向量1336-1),且掃描第二行1334-2可使得產生第二特定位元向量(例如,指示包括值「a」之列的位元向量;在此實例中,其等同於位元向量1336-2)。
修剪邏輯1328可經組態以組合針對並行地掃描之各列(或行)而產生的選擇指示符,以產生識別駐存有特定資料查詢之篩選值的資料表之一組列或行的最終選擇指示符。舉例而言,在圖16D實例中,修剪邏輯1328可組合位元向量1336-1及1336-2以產生最終位元向量(其在此情況下將產生等同於圖16D之選擇指示符1336的最終選擇指示符)。可使用例如藉由修剪邏輯1328實施之「AND」運算子來執行第一與第二位元向量之組合。
在一些實施例中,修剪邏輯1328可經進一步組態以對經篩選輸出執行後處理操作。後處理操作之實例可包括對所選擇資料進行重格式化、壓縮、處置、保存或結構化中之至少一者。
以下章節提供關於所揭示之修剪器之操作的其他實例及細節。舉例而言,圖17提供基於修剪器之選擇器的例示性實施方案之另一實例。基於修剪器之選擇器1700的特徵係處理行及述詞之初始處置,接著處理(消耗、篩選)表資料。可在多個步驟中進行該處理,如當前描述中所描述。基於修剪器之選擇器的另一特徵係多程處理,包括對位元向量之多個更新,接著消耗(篩選)表資料。此實施方案並非限制性的且基於此描述,熟習此項技術者將能夠在適當時實施組合及/或並行步驟。在一些實施例中,基於修剪器之選擇器可包括修剪器模組1402,該修剪器模組包括若干子模組,諸如構建傳遞/丟棄位元向量1732之修剪器位元向量產生模組1722、閘管理器模組1724、修剪器控制器1726及修剪器封裝器1728。在此文件之上下文中,傳遞/丟棄位元向量1732亦被稱作「位元向量」1732。修剪器模組1402輸出與經篩選結果1610類似之經篩選結果1710。
應注意,在當前圖中為了清楚起見,諸如S121及S122之流程展示為將表資料傳送至加速元件,在此情況下傳送至篩選器(1706、1708)。然而,如下文例如參考圖18所描述,可經由選擇器模組1102及選擇處理器1823處理所有輸入資料,其中閘管理器1724可修剪傳入資料。因此,傳入資料之量在由加速元件中之一者處理之前減少,該等加速元件在此情況下為篩選器,諸如1706、1708。在各步驟中,單行或行群組經掃描且可如下經處理:
1. 掃描述詞行。視情況,可並行掃描行,且可藉由用於各別行之篩選器掃描各行。舉例而言,匹配篩選器1706(類似於匹配篩選器1606)針對「城市」掃描(第一輸入資料步驟S121)行-1 1604-1。篩選器之輸出結果包括位元向量更新1730(在此情況下為匹配篩選器輸出更新1730A)經發送S125至修剪器模組1402。
2. 基於述詞(在當前例示性情況下為城市A)之存在,修剪器位元向量產生模組1722構建傳遞/丟棄位元向量1732。視情況,可自篩選器(1706、1708)之組合結果並行構建傳遞/丟棄位元向量1732。一般而言,可自對一個或多個「子代」位元向量進行任何邏輯運算而產生位元向量,其中各子代位元向量係由不同篩選器產生。
3. 在當前實例中,該方法使用位元向量1732藉由多程程序之第二遍次重複以經由流程S122處理傳入資料行-2 1604-2,以減少發送至第二篩選器,在此情況下發送至IN篩選器1708(類似於IN篩選器1608)之資料量。IN篩選器1708針對所包括之(IN)街道名稱而掃描減少之(經修剪之)行-2 1604-2,且輸出經發送S127至修剪器模組1402的位元向量更新1730(在此情況下為IN篩選器輸出更新1730B)。
4. 基於述詞(在當前例示性情況下為街道IN群組{a, b, c, d})之存在,修剪器位元向量產生模組構建更新之傳遞/丟棄位元向量1732。視情況,可自篩選器(1706、1708)之組合結果並行構建傳遞/丟棄位元向量1732。
5. 因為無需進行更多篩選,因此在當前實例中,來自表1601之資料的行1604(在當前例示性情況下為Col-3 1604-3及Col-4 1604-4)可由修剪器模組1402並行地消耗(消耗資料步驟S123、S124),在該修剪器模組中,閘管理器模組1724使用傳遞/丟棄位元向量1732來允許傳遞來自該表的述詞選定之資料,同時丟棄不匹配之行資料。自修剪器模組1402輸出所傳遞之資料作為經篩選結果1710。
6. 視情況選用之後處理可用以按照應用要求來重格式化、壓縮且以其他方式處置及結構化所得資料(未圖示)。
應注意,當前例示性選擇器方法並非限制性的。特別地,為簡單及清楚起見,藉由一個篩選器中之各者篩選僅一個行(藉由匹配篩選器1706篩選col-1且藉由IN篩選器1708篩選col-2),且接著消耗剩餘兩個行(col-3及col-4)以選擇並丟棄用於經篩選結果1710之資料。第一述詞不同於第二述詞。基於此描述,熟習此項技術者將能夠使用及/或再使用多個行實施額外查詢。舉例而言,在替代性實施例中,對諸如col-1及col-2之多於一個行進行匹配篩選。在另一替代性實施例中,輸出亦用作篩選器之行,諸如col-1以及col-3及col-4。在另一替代性實施例中,述詞可包括已經使用或尚未使用之其他述詞。
亦應注意,當前圖中之流程係為了清楚起見,且下文更詳細地描述修剪器選擇器的組態之細節及元件之交互。
圖18係修剪器多程架構之流程圖。在一些實施例中,修剪器多程架構1800可包括儲存資料集1831之記憶體1832。可經由控制器1804(諸如記憶體控制器)且經由選擇處理器1823將來自資料集1831之資料的第一子集發送至一個或多個第一處理器1822。在本說明書中為了清楚起見,通常描述單個第一處理器1822。一個或多個第一處理器1822中之各者可包括一個或多個更新產生器模組1850,該一個或多個更新產生器模組經組態以用於基於來自資料集1831之資料的第一子集而產生選擇指示符更新1852。
可將選擇指示符更新1852(諸如1730)回饋至經組態以接收選擇指示符更新1852之選擇處理器1823。在當前圖中,在選擇處理器1823上之例示性部署中展示了一個處理模組1824。此等例示性實施方案並非限制性的,且可將選擇指示符更新1852回饋至替代性位置,包括但不限於第一處理器1822、控制器1804中之一者或多者以及記憶體模組1832中之一者或多者。
處理模組1824經組態以用於基於選擇指示符更新1852而更新位元向量1732。選擇指示符更新1852可包括如何更新當前位元向量1732之指示,然而,此並非限制性的,且選擇指示符更新可為更新位元向量(在此情況下,處理模組僅將選擇指示符用作新/更新位元向量1732)。
該方法可基於來自資料集1831之相同或其他資料而重複經由第一處理器1822的額外傳遞及各別額外選擇指示符更新1852之額外產生。
在當前描述中,已使用位元向量1732之例示性實施方案。此實施方案並非限制性的,且基於此描述,熟習此項技術者將能夠設計並實施除例示性位元向量1732以外的選擇指示符更新1852以促進選擇,諸如表篩選。在不限制當前實施例之範圍的情況下,位元向量自來自資料集1831之資料的第二子集選擇(篩選/消耗)所選擇資料,該選擇基於選擇指示符更新1852。如此文件中別處所描述,處理第二子集以供選擇並非限制性的,且替代性處理功能係可能的。
選擇指示符更新1852及位元向量1732可替代地使用選擇位元映射、符記、資料結構、功能及詞典實施,包括用於選擇(驗證其有效性)對應資料(例如,對應於在行處理期間待選擇之所要述詞及列)之指示符或旗標。資料結構中之各值可指示是否應選擇對應資料單元。位元向量1732/資料結構可包括複數個位元/旗標。在一個實施例中,修剪器封裝器1728使用選擇指示符更新1852來減小(壓縮)位元向量1732之尺寸。舉例而言,為了僅保留指示待在下一遍次中處理之列的向量之元件。對應地,修剪器控制器可保存映射資料以指示位元向量之各元件對應於哪一列。
在當前描述中,處理模組1824實施例示性選擇功能,其中使用位元向量1732來修剪(篩選、資料簡化)所消耗資料行以選擇待傳遞之資料。此實施方案並非限制性的,且基於此描述,熟習此項技術者將能夠基於選擇指示符更新1852及位元向量1732而設計並實施諸如計算、操縱(資料變換)等替代性功能。
圖19係修剪器架構之實例。修剪器多程架構1800展示於當前圖之修剪器架構1900之例示性實施方案中。在當前實例中,修剪器架構1900包括媒體模組1901,該媒體模組包括用於儲存諸如表1601之資料集1831的記憶體1832。媒體模組1901可為DIMM、XDIMM™、固態硬碟(SSD)、計算記憶體或其他儲存媒體,包括揮發性及/或非揮發性記憶體組件。記憶體1832可由儲存層906實施。
媒體模組1901可具有相關聯之控制器1804,諸如記憶體控制器。來自記憶體1832中之表1601的資料之第一子集係經由通道S1210發送至第一處理器1822。如上文所提及,任何或所有輸入資料可經由選擇處理器1823處理,其中閘管理器1724可修剪傳入資料。
選擇處理器1823可由選擇器1102實施。選擇處理器1823經由介面1940以操作方式連接至媒體模組1901及至少一個第一處理器1822。選擇處理器1823包括可由修剪器模組1402實施之處理模組1824。選擇處理器1823亦可包括可部署為修剪器模組1402之部分的修剪器控制器1726及封裝器(「修剪器封裝器」、「封裝器芯」)1728。第一處理器1822可部署於及/或一個或多個第一處理器能力可實施於選擇處理器1823中。
介面1940可由網狀架構1306實施,其連接一個或多個元件、大部分元件或較佳地所有元件以用於資料之靈活通信、路由及多程通信。
第一處理器1822包括/代管如由位元向量更新產生器模組1922實施之在當前圖中展示的更新產生器1850。第一處理器可由諸如篩選及投射模組1103、加入及分組模組1108等加速單元1100元件中之任一者或多者實施。因此,各加速單元元件與可實施為位元向量更新產生器模組1922之更新產生器1850相關聯。位元向量更新產生器模組1922中之各者可分別為加速器元件中之各者的子模組,其經組態以基於相關聯元件之處理而產生位元向量更新。第一處理器1822對資料進行初始處理,且基於該處理,位元向量更新產生模組1922經由通道S1211輸出位元向量更新1730。應注意,在此實例中,首先處理資料,位元向量更新1730係/表示初始位元向量。
位元向量更新產生模組1922產生選擇指示符更新1852,諸如可發送至選擇處理器1823之位元向量更新1730。位元向量更新1730係經由回饋通道S1211發送至一個或多個組件上之一個或多個處理模組1824,諸如選擇器模組1102上之修剪器1402。
在選擇處理器1823中,處理模組1824,在此情況下為修剪器模組1402,經組態以接收位元向量更新1730。如此文件中別處所描述,選擇指示符/位元向量更新1730係由修剪器位元向量產生模組1722使用以構建/更新位元向量1732。閘管理器1724經組態以用於基於位元向量1732而自來自表1601之資料的第二子集選擇(消耗)所選擇資料。經由通道S1212將所選擇資料自閘管理器1724輸出至第一處理器1822中之相同者或另一者。替代地,來自表1601之資料的第二子集可經由通道S1210輸入至第一處理器1822以用於產生位元向量之下一更新。如上文所提及,第二子集(及可能所有子集)可經由通道S1210發送以供由選擇處理器1823及閘管理器1724進行處理及資料簡化(修剪),且接著經簡化資料發送至第一處理器1822以供由一個或多個加速元件進行篩選。
最終位元向量1732可由閘管理器1724使用以產生經由通道S1213輸出之經篩選結果1710。視情況,發送經篩選結果1710以供進一步處理1930。
相較於第一處理器1822,選擇處理器1823可實體地接近記憶體1832。熟習此項技術者將認識到,諸如記憶體1832之元件可以多種組態實施為一個或多個模組,且本說明書中之單數的使用在本說明書中係出於清楚起見且並非限制性的。控制器可實施為單一模組或具有對應功能性之兩個或更多個模組,其合併或分佈在選擇處理器1823中、作為控制器1804之部分、在媒體模組1901中之另一位置、在第一處理器1822中及類似者。
本端選擇處理器1823可能相對不如第一處理器1822那麼強。舉例而言,相較於第一處理器1822,選擇器模組1102可實施功能之子集及/或簡單功能。因而,第一處理器1822可比選擇處理器1823更好地適合密集、複雜及/或「繁重」計算,而選擇器模組可實施所要資料之相對輕量及快速(線速度)消耗及輸出。
修剪器架構(1800、1900)之特徵係多程產生及處理。資料(資料集1831)用以產生(更新產生器1850)接著用於處理(處理模組1824)之選擇指示符更新1852。該架構特別適用於使用第一處理器1822以用於實施更密集之處理任務計算(更新)選擇指示符更新1852,同時使用更接近記憶體1832/資料集1831之資源,例如選擇處理器1823以用於實施處理模組1824/閘管理器1724的相對不太密集之處理任務以執行自記憶體1832之快速選擇以產生經篩選結果1710。
例示性實施方案可包括:
資料集1831係在計算記憶體(記憶體1832)上,處理模組1824與計算記憶體部署於同一基板上,且自計算記憶體輸出所選擇資料1710。
資料集1831係在DDR4(揮發性儲存RAM)1832上且處理模組1824部署於介面或控制器上。
資料集1831係在非揮發性儲存裝置(磁碟、SSD)1832上且處理模組1824實施於儲存裝置中之處理器上。
資料集1831係在非揮發性儲存裝置(磁碟、SSD)1832上且處理模組1824實施於介面或控制器上。
資料集1831係在主機上之記憶體1832中且處理模組1824實施於介面或控制器上。
圖20係狀態之間的轉變之實例。基於修剪器之例示性選擇器狀態機2000包括閒置狀態2002、設定狀態2004、更新狀態2006及消耗狀態2008。「狀態」在此文件之上下文中亦被稱作「步驟」。狀態機2000係實施選擇之例示性方法。
在基於修剪器之狀態機2000中,修剪器位元向量(傳遞/丟棄位元向量1732)構建可分成兩個步驟:單一「設定步驟」或「設定狀態」,接著為視情況一個或多個「更新步驟」或「更新狀態」。一旦完成位元向量1732之構建,則修剪器模組1402準備好篩選所消耗行。
自閒置狀態2002,狀態機2000可轉變至設定狀態2004以開始構建位元向量1732。若位元向量1732已經建構,則當準備好篩選資料時,閒置狀態2002可轉變至消耗狀態2008。
設定狀態2004基於第一述詞及行處理而對位元向量1732進行初始設定。在僅存在一個述詞之情況下,位元向量1732之構建現已完成,且設定狀態2004可轉變至消耗狀態2008以開始處理資料。替代地,(當前圖中未展示)若尚不存在準備處理之資料,則設定狀態2004可轉變至閒置狀態2002。在存在多於一個述詞之情況下,設定狀態2004轉變至更新狀態2006以處置剩餘述詞。剩餘述詞不同於第一述詞。在圖17之實例中,匹配篩選器1706實施用於處理第一述詞城市A之設定狀態2004。
在更新狀態2006中,對於每個剩餘述詞,基於述詞及相關聯行處理而更新位元向量1732。更新狀態2006重複直至已處置所有剩餘述詞為止。應注意,為簡單起見,處置剩餘述詞及更新位元向量1732不限於如當前圖中所展示之串行實施。基於此描述,熟習此項技術者將能夠實施具有述詞之並行處理的更新狀態2006。在更新狀態2006結束建構位元向量1732之後,更新狀態2006轉變至消耗狀態2008。替代地,(當前圖中未展示)若尚不存在準備處理之資料,則更新狀態2006可轉變至閒置狀態2002。在圖17之實例中,IN篩選器1708實施用於處理剩餘述詞之更新狀態2006,在此情況下剩餘述詞為第二述詞街道IN群組{a, b, c, d}。
在消耗狀態2008中,使用位元向量1732來篩選所消耗資料行以選擇待傳遞之資料(同時丟棄非匹配行資料)。位元向量1732中之各位元對應於所消耗行中之列(值)。由於位元向量1732中之位元的次序可設定為等同於消耗行列(值)之次序,因此位元向量1732之位元可用以選擇(保持、允許傳遞)對應列資料。消耗狀態2008可保持作用中及/或重複直至所有行/資料得到處理為止,在當前圖中展示為判定當前資料之處理是否結束的步驟2010。在資料尚未準備好處理或額外資料尚未準備好處理之情況下,消耗狀態2008可轉變至閒置狀態2002(當前圖中未展示)。
自消耗狀態2008至設定狀態2004之轉變實現對大表之修剪。位元向量尺寸可為有限數目個位元,且特別地,向量尺寸中之位元數目可小於表列之數目。在非限制性實例中,若所使用之位元向量1732係2K位,且表1601具有數百萬個列,則表1601可分成多個子表,各子表為2K列。此等子表亦可被視為資料之「原始塊」或「列塊」。在此情況下,修剪程序可在「位元向量尺寸」表塊(亦即,表之部分、子部分、子表)中進行。當完成對塊(表之子部分)之處理(完成當前區塊2010為「是」)但未完成表處理(保持尚未修剪的表之額外部分,更多子表區塊2012為「是」)時,狀態機自消耗狀態2008轉變至設定狀態2004以構建下一位元向量且繼續修剪表之額外部分。循環狀態(設定狀態2004至更新狀態2006至消耗狀態2008)之此重複可繼續且重複直至整個表處理完成(更多子表區塊2012為「否」)。一旦完成對表之所有所要部分的處理,方法便返回等待下一篩選任務,其中狀態機自消耗狀態2008轉變至閒置狀態2002(經由區塊2010及2012)。
在圖17之實例中,修剪器模組1402實施消耗狀態13308,消耗(輸入)來自表1601之資料行,且處理(篩選)閘管理器模組1724中的行資料。
圖21係部署於硬體層中之修剪器之表示。如所展示,硬體層1402可包括修剪器1402。
圖22係部署於選擇器模組中之修剪器之表示。如所展示,選擇器模組1102可包括修剪器1402。
圖23係修剪器組件之表示。如所展示,修剪器1402可包括位元向量產生器1722、傳遞/丟棄位元向量1732及閘管理器1724。
圖24係部署於選擇處理器上之修剪器組件之表示。如所展示,選擇處理器1823可包括修剪器1402。另外,如所展示,修剪器1402可包括位元向量產生器1722、位元向量1732、閘管理器1724、控制器1726及封裝器1728。
在當前描述中,已使用例示性消耗狀態2008,其中使用位元向量1732對所消耗資料行進行篩選以選擇待傳遞之資料。此實施方案並非限制性的,且基於此描述,熟習此項技術者將能夠設計並實施消耗狀態以實施諸如計算、操縱(資料變換)等替代性功能。
查詢規劃器
各種類型之資料庫可用於組織所儲存資料,且各種介面可用於允許使用者(例如,終端使用者)存取資料庫中所維持之資料。對儲存於資料庫中之資料的存取可由資料庫管理系統(DBMS)提供。資料庫管理系統可使用資料庫程式設計語言,諸如結構化查詢語言(SQL)或其他查詢語言,以允許使用者與一個或多個資料庫交互且存取彼等資料庫內所含之資料。DBMS可啟用允許輸入、儲存、組織及/或擷取關於可用資料庫之資料或資訊的各種資料庫相關功能。DBMS可使用各種不同結構或技術以用於執行資料庫相關任務。舉例而言,DBMS可包括組件,包括查詢引擎(QE)、規劃器(查詢引擎規劃器,QEP)及執行模組。
大部分現代DBMS實施方案(Oracle、IBM DB2、Microsoft SQL、Sybase、MySQL、PostgreSQL、Ingress等)係關係資料庫。此等DBMS使用資料庫查詢語言,該等資料庫查詢語言允許使用者在功能上表示所要結果,其被稱為「查詢」、「表述」或「查詢表述」。此等資料庫查詢語言隱藏資料庫系統如何處理查詢且存取資料以計算查詢之結果的細節。舉例而言,回應於與使用者查詢相關聯之高級任務或請求,DBMS可執行一個或多個操作以最佳化由使用者提供的表述(亦即,將使用者查詢轉換成或更改為一個或多個不同表述,以使得可執行(或更高效地執行)使用者查詢)。在許多情況下,DBMS具有其中應用程式或使用者提交其查詢之用戶端側以及執行該等查詢之伺服器側。在伺服器側,大部分企業採用一個或多個通用伺服器。
雖然已開發了許多DBMS實施方案,但仍存在某些需求。舉例而言,DBMS實施方案對於其相關聯電腦系統之特定軟體及硬體組件及/或對於DBMS經設計以操作之資料庫的特定結果或組織係特定的。因此,可能需要在重新設計或定製方面付出巨大努力來實施具有更新系統之DBMS,該等更新系統包括新組件及/或資料庫結構修改。
舉例而言,如本文中所描述,所揭示實施例可包括新穎加速器或加速技術,其旨在提高執行資料密集型操作(例如,資料查詢以及其他)之速度及效率。然而,將新能力(諸如對所揭示加速器或加速技術之使用)整合至舊版DBMS中之方法需要大量定製工作。舉例而言,重新設計DBMS以與所揭示加速器及/或加速技術一起操作或利用所揭示加速器及/或加速技術之能力可尤其需要對QE或QE之各種組件進行完全重新設計及重新構建以僅與加速器模組一起工作並管理該加速器模組。為了與某些加速器模組一起使用,QE可能需要大量更改以適應與可用於QEP之預設能力相關聯的額外「選單」選項。在無此類更改之情況下,QEP將無法將查詢規劃之部分推送至加速器模組。在另一實例中,包括平台相關資訊之「描述」可由查詢引擎讀取且用以使用加速器模組產生查詢規劃。在此等實例中之各者中,將需要付出大量努力來更改QE及/或寫入並整合選單及/或針對與特定系統實施方案相關聯之每個QE、QEP及/或加速器模組而添加描述符。需要解決方案以用於使用現有DBMS整合額外及視情況選用之能力,諸如所揭示加速器模組及/或加速技術。
圖25提供包括用以查詢規劃之加速器不可知擴展的資料分析架構之一個實例的圖解表示。可至少部分地藉由採用一個或多個加速組件及/或藉由在外部資料儲存裝置920與分析引擎910(例如,CPU;主機)之間執行一個或多個加速操作,視情況繼之以完成處理912來進行諸如可由資料分析加速器900提供之加速。在當前實施例中,查詢引擎(QE)2502及查詢引擎規劃器(QEP)2504可實施於加速器900內部、加速器900外部(例如,分析引擎910上),或可實施為部分在加速器900內部且部分在該加速器外部(例如,在加速器900與分析引擎910之間劃分)。QE及QEP經由軟體層902與加速器900介接,包括軟體模組922,諸如SDK 1000、API 1004組件。處理可包括使用一個或多個硬體模組924之硬體層904。資料可來自於且儲存至例如位置,包括外部資料儲存裝置920、儲存層906、儲存模組926、加速器記憶體1200及/或分析引擎910或通用電腦上之資料。資料庫之一個或多個部分可使用儲存層906而儲存。舉例而言,資料庫(2640C,圖27)尤其可儲存於加速器記憶體1200中。
圖26A係資料庫查詢引擎(QE)2600之圖解表示。QE 2600包括查詢引擎規劃器QEP 2612,該查詢引擎規劃器用以輸入來自使用者之查詢且產生最佳化查詢規劃以供由執行引擎2614(亦被稱作「執行模組」)執行。QE 2600經由操作連接S2610與資料庫(DB)2640A通信。應注意,在此文件之上下文中,對資料庫之一般參考使用元件編號「2640」,且資料庫2640的特定例項(諸如部署及組態)包括字尾,諸如「2640A」、「2640」及「2640C」。
圖26B提供用於與資料庫加速器2642一起使用之實例查詢引擎(QE)2620之圖解表示。與QE 2600相比,QE 2620包括新查詢引擎規劃器(QEP)2622及許多新組件2624,諸如新執行引擎2624A及新加速器管理器2624B。QEP 2622可經修改以實施「下推」,其中QEP經修改以辨識遠端資料源(諸如資料庫加速器2642)之能力,提取資料源可執行的規劃之部分,且將規劃之所提取部分下推至加速器2642。新組件2624可經由操作連接S2612與資料庫加速器2642通信。此類方法可基於現有DBMS/QE而實施。舉例而言,可重寫現有系統之QE,且可添加新模組以使用資料庫加速器2642來規劃、管理及執行。此類實施方案將需要修改QEP 2622以將QEP 2622組態為用於辨識具有資料庫加速器2642所提供之能力的操作。此外,每當在資料庫加速器2642中添加或改變能力時,將需要重寫或更新QEP 2622。
圖27係供與加速器模組2740一起使用之另一查詢引擎2700之圖解表示。QE 2700可利用QE 2600之未更改部分,同時最小化對QE 2600之影響。在此實施例中,加速器2740使用儲存於在加速器2740內部及/或外部之一個或多個位置中的資料庫2640C。加速器規劃器2702(一個或多個加速器規劃器)處理查詢以產生例如兩組查詢。兩組查詢中之第一組可由加速器2740執行以產生至少一個部分結果。兩組查詢中之第二組可由諸如QEP 2612及資料庫2640A之QE組件結合來自加速器2740的部分結果而處理。
圖28表示另一查詢引擎組態及相關聯查詢操作。在初始步驟2800處,使用者提供資料庫查詢2802。QE 2600包括執行諸如檢查2806(例如,輸入初始資料庫查詢2802之語法檢查)之功能以產生主查詢2808的查詢引擎前端2804。
主查詢2808係由包括QEP 2612、執行模組2822及資料庫(2640、2640A)之第一流F1處理。將主查詢2808輸入至查詢引擎規劃器QEP 2612。QEP 2612可包括最佳化器2812以對主查詢2808進行剖析及結構化。視情況,QEP 2612可包括執行模組2822之預設能力之選項的「選單」2814,QEP可自其中進行選擇。基於主查詢2808,QEP產生輸入至執行模組2822之最佳化查詢規劃2816。
執行模組2822使用來自資料庫2640A之資料經由操作連接S2610執行最佳化查詢規劃2816。執行模組2822產生主查詢結果2824。
主查詢結果2824視情況在步驟2826處由QE前端2804處理以產生自QE 2600輸出之結果資料2828。將結果資料2828提供2830至指定接收者。
初始資料庫查詢2802係由使用者提供2800,然而,此並非限制性的,且查詢可由除使用者外之源提供。初始資料庫查詢2802可以結構化查詢語言(SQL)格式提供,但亦可部分地或完全地以除SQL外之格式提供。類似地,諸如主查詢2808、第一子查詢2908及第二子查詢2904之其他查詢可呈SQL格式、其他格式及/或自定義格式。
查詢引擎前端2804在QE 2600外部之組件(例如,經由輸入/輸出,諸如與初始資料庫查詢2802及結果資料2828相關聯之彼等輸入/輸出)與QE 2600內部之組件(例如,QEP 2612及執行模組2822)之間介接。
檢查2806功能/模組可包括用以檢查及/或處理QE 2600之輸入的多種功能。此檢查可包括語法檢查、查詢之預處理等。取決於執行何種檢查及/或處理,所產生之主查詢2808可與初始資料庫查詢2802相同。在其他情況下,主查詢2808可類似於初始資料庫查詢2802或相對於該初始資料庫查詢有更實質之改變。
選單2814可提供選單選項,因此QEP 2612可基於主查詢2808之內容而鏈接至模組中。選單2814可指代由執行模組2822提供之操作及能力的清單,以及與操作及能力相關聯之性質(例如,記憶體要求、CPU要求、網路連接覆蓋區、所支援之資料類型、所支援之並行度、分佈選項等)。各QEP可具有與QEP經構建以與之工作的執行模組相對應之相關聯選單。
在一些實施例中,在步驟2830處,將結果資料2828提供至使用者。然而,此並非限制性的。QE 2600可將諸如結果資料2828之輸出提供至除使用者外之目的地。舉例而言,可將諸如結果資料2828之所產生結果提供至電腦程序及/或提供至儲存裝置(例如,用於將結果資料2828儲存於資料庫2640中)。步驟2826處之視情況選用之處理可提供來自QE 2804的結果資料2828,該QE亦含有可包括用以檢查及/或處理QE 2600之輸入的多種功能之2806檢查功能/模組。
圖29提供查詢引擎2700及相關聯操作之圖解表示。QE 2700包括類似於上文所描述之QE 2600之一些組件、輸入及輸出。QE 2700包括一個或多個加速器規劃器2702,其可併有「下拉」。如本文中所使用,下拉可在加速器規劃器2702A擷取主查詢2808時出現。作為回應,加速器規劃器2702A可判定查詢之哪些功能可經加速(例如,自查詢拉出)且繼而哪些功能(剩餘功能)並不適合於加速。加速器規劃器2702A可繼續發送剩餘功能至QEP 2612。
在圖29實例中,展示第一加速器規劃器2702A。第一加速器規劃器2702A接收主查詢2808作為輸入且產生至少一組加速器子查詢2904及視情況至少一組殘餘子查詢2908。至少一組加速器子查詢2904可被稱作「第二子查詢2904」或「加速器子查詢2904」。至少一組殘餘子查詢2908可被稱作「第一子查詢2908」或「殘餘子查詢2908」。
作為第二處理路徑,第二子查詢2904可由加速器最佳化器2902處理以產生經由操作連接S2922發送至加速器模組2740之第二子查詢規劃2906。加速器模組2740包括加速器執行模組(引擎)2922以及資料庫2640C之至少一部分。視情況,加速器執行模組2922可使用位於加速器2740外部之資料庫之至少一部分。基於第二子查詢規劃2906及資料庫2640C(及/或另一資料庫部分),加速器(執行)模組2922產生一個或多個中間表2940(例如,部分查詢結果)。中間表2940可暫時用於中間步驟中,其中經加速及舊版(殘餘)處理兩者均在QE 2700中執行。
作為另一第一處理路徑,第一子查詢2908可輸入至QEP 2612。基於第一子查詢2908,QEP 2612產生最佳化規劃,在此情況下為作為輸入提供至執行模組2822之最佳化殘餘規劃2916。執行模組2822使用一個或多個中間表2940及資料庫2640(例如,資料庫2640D)經由第一操作連接S2921執行最佳化殘餘規劃2916。基於一個或多個中間表2940及資料庫2640,執行模組2822產生主查詢結果2824。資料庫2640可經部署而使得資料庫2640C之至少一部分儲存於加速器2740上且資料庫2640D之至少一部分儲存於除加速器2740外的位置處。資料庫2640D之在另一位置處的部分可由執行模組2822使用以用於最佳化殘餘規劃2916之執行。
本發明所揭示實施例之一個特徵係能夠依賴於專用於非加速功能之查詢引擎(例如,查詢引擎未經修改且不需要修改以提供加速查詢操作)。因此,所揭示實施例可併有查詢引擎,諸如類似於QE 2600而結構化之查詢引擎,其中對彼等查詢引擎之組件或操作具有極少修改或無修改。
在當前描述中,一個或多個加速器規劃器被稱作元件2702,且例示性特定加速器規劃器被稱作2702A、27020B等。基於此描述,熟習此項技術者將能夠將一個或多個加速器規劃器2702實施為一個或多個模組。舉例而言,作為單一模組、作為兩個單獨模組或其中一個模組為另一模組之子模組。
一般而言,加速器規劃器(第一加速器規劃器2702A)處理主查詢2808且判定主查詢2808之哪些部分可由第一流F1處理,以及主查詢2808之哪些部分可由第二流F2處理。第二流F2包括加速器2740。第一加速器規劃器2702A判定主查詢2808之哪些部分可藉由除在第一QE流F1中以外受處理而獲益。此判定可基於相比於第一流F1之能力的第二流F2(在此情況下為加速器2740)之能力。此判定亦可基於加速器執行引擎2922之能力之選單。在作為第一流F1之替代方案而經由第二流F2對主查詢2808之至少一部分的處理係合乎需要或可用的情況下,主查詢2808之彼等經判定部分可用以產生第二子查詢2904,且待由第一流F1處理之剩餘部分用以產生第一子查詢2908。
在當前例示性情況下,加速器模組2740可用以增強QE之能力。加速器模組2740之例示性能力且因此益處中之一者係一個或多個預定義功能(例如,查詢相關功能)的增加之處理速度且因此減少之處理時間。加速器規劃器2702可藉由剖析並分析查詢中之功能來處理主查詢2808,以判定主查詢2808部分/功能中之任一者是否可由加速器模組2740(由加速器模組實施之預定義功能/操作)處置。適合於加速之主查詢2808之經判定部分用以產生待由第二流F2處理的第二子查詢2904。主查詢2808之剩餘部分用以產生待由第一流F1處理之第一子查詢2908。
因此,加速器規劃器2702可經組態以產生兩個子查詢:第二子查詢2904及第一子查詢2908。然而,此實施方案並非限制性的,且加速器規劃器2702可產生單一子查詢、至少一個子查詢、至少兩個子查詢、三個或更多個子查詢等。舉例而言,在主查詢2808將不受益於加速之情況下(或在主查詢2808之一部分的加速係不可能或不可用之情況下),可產生僅一個子查詢,在此情況下為第一子查詢2908。類似地,在整個主查詢2808可經加速之情況下,可產生僅一個子查詢,在此情況下為第二子查詢2904。在其他情況下主查詢2808可包括可個別地加速之兩個或更多個部分。在該等情況下,可產生兩個或更多個加速器子查詢2904。
類似於第一加速器規劃器2702A之操作,一個或多個其他加速器規劃器(未圖示)可接收一個或多個加速器子查詢2904作為輸入且輸出一個或多個第二子查詢規劃2906。加速器子查詢2904之數目可與所產生之第二子查詢規劃2906的數目相同或不同。
當加速器規劃器2702產生子查詢(2908、2904)時,該產生可說明例如子查詢(2908、2904)及所得子查詢規劃(2916、2906)、執行模組(2822、2922)、表(2940)及資料庫(2640)中之各者的後續處理及(未來)交互。舉例而言,出於維持對不需要之流程(第一流F1)的處理及操作之目的,產生單個第二子查詢2904之以上描述可包括產生作為「空(null)」或「直通」查詢的第二子查詢2904。舉例而言,若可加速整個主查詢2808且僅產生第二子查詢2904,則亦可產生空查詢作為第一子查詢2908以維持包括QEP 2612及最佳化殘餘規劃2916之QE/組件的殘餘流。在該等情況下,執行模組2822可輸出中間表2940作為主查詢2808結果2824。空查詢可為具有可與輸入表相同之輸出表(在不對資料進行任何關係操作、篩選或變換之情況下)的「直通」規劃。因此,可產生零或多組加速器子查詢2904、零或多組殘餘子查詢2908及零或多個中間表2940。
加速器規劃器2702可產生包括對中間表2940之參考的第一子查詢2908。此參考可用以例如向包括於殘餘流F1中之分量中的任一者(例如,執行2822)警示加速流F2之使用。舉例而言,在一些情況下,對中間表2940之參考可觸發執行2822使用中間表2940。
在此文件之上下文中,「加速器模組2740」亦被稱作「加速器2740」,該加速器為基於硬體之裝置。一個實施方案係使用紐羅布萊德有限公司(以色列特拉維夫市)Xiphos™資料分析加速器。在例示性實施方案中,加速器2740以硬體實施且將經組態有資料庫2640之至少一部分,其展示為已匯入至加速器2740硬體上之資料庫2640C。在替代性實施方案中,加速器2740可至少部分地以軟體實施。在另一替代性實施方案中,加速器可存取資料儲存裝置,例如儲存層906或資料庫2640。
加速器執行模組2922可使用資料庫2640C執行第二子查詢規劃2906以產生中間表2940。在此文件之上下文中,「中間表」2940亦被稱作「虛擬表」及「部分表」。中間表2940可儲存於例如暫時記憶體中、儲存於資料庫2640中及/或儲存於加速器2740上以供由執行模組2822將來存取。中間表2940可表示來自資料源(例如,來自資料庫2640C)之表的變換,該資料源係基於經判定第二子查詢2904規劃2906由加速器執行模組2922之加速執行產生的。取決於資料庫2640之儲存裝置的實施方案,第一操作連接S2921可類似於至資料庫2640A之操作連接S2811。替代地,舉例而言,若資料庫2640C已載入至加速器2740中,則第一操作連接S2921可經實施以亦與資料庫2640D之至少一部分通信。
圖30提供查詢引擎2700之替代性組態以及相關聯操作之圖解表示。在此實例中,加速器執行模組(引擎)2922可包括或曝露應用程式設計介面(API)以供加速器規劃器2702D使用。在此情況下,加速器規劃器2702D可選擇由加速器模組API提供之功能且當處理主查詢2808時併有此等功能(API調用)以產生一個或多個查詢。類似於QEP 2612(圖29)之查詢引擎規劃器3012可經併入以輔助殘餘子查詢產生及規劃。最佳化器模組2812含有選單2814,在此實施例中其可輸出第一/殘餘子查詢2908及第二/加速器子查詢2904兩者。可將殘餘子查詢提供至執行模組2822(經由連接S3032)以供執行。可將加速器子查詢2904提供至加速器規劃器2702D,該加速器規劃器經組態以基於加速器子查詢2904而產生加速器查詢規劃3006。可經由連接S3033將加速器查詢規劃3006提供至加速器執行模組2922。
在加速器2740內,API調用經導向至加速器模組2922且在適當時由該加速器模組執行。結果資料經由連接S3041自加速器2740返回至執行模組2822。執行2822可經由連接S2921存取資料庫2640D(例如,以執行與第一子查詢2908相關聯之查詢規劃之部分)。基於經由連接S3032及S3041接收之輸入,執行模組2822可產生主查詢結果2824,該主查詢結果可經過視情況選用之處理2826,隨後在步驟2830處輸出為結果資料2828。
圖31係符合所揭示實施例之經組態以實施加速器規劃器之例示性系統3100的圖解表示。系統(處理系統)3100包括處理器3102(一個或多個)及四個例示性記憶體裝置:隨機存取記憶體(RAM)3104、開機唯讀記憶體(ROM)3106、大容量儲存裝置(硬碟)3108及快閃記憶體3110,以上所有者皆經由共同匯流排3112進行通信。處理及記憶體可包括任何電腦可讀媒體,該電腦可讀媒體儲存軟體及/或韌體及/或任何硬體元件,包括但不限於場可程式化邏輯陣列(FPLA)元件、硬佈線邏輯元件、場可程式化閘陣列(FPGA)元件及特殊應用積體電路(ASIC)元件。處理器3102由用於執行本文中詳述之功能及操作的一個或多個處理器(例如硬體處理器,包括微處理器)形成。處理器可包括例如處理器,諸如用於伺服器、電腦及其他電腦化裝置中之彼等處理器。舉例而言,處理器可包括來自AMD及英特爾之x86處理器、來自英特爾之Xenon®及Pentium®處理器,以及其任何組合。任何指令集架構可用於包括但不限於精簡指令集電腦(RISC)架構及/或複雜指令集電腦(CISC)架構之處理器3102中。模組(處理模組)3114展示於大容量儲存裝置3108上,但如熟習此項技術者將顯而易見,該模組可位於記憶體裝置中之任一者上。
大容量儲存裝置3108係用於實施本文中所描述之加速器規劃器的攜有電腦可讀程式碼之非暫時性電腦可讀儲存媒體的非限制性實例。此等非暫時性電腦可讀儲存媒體之其他實例包括唯讀記憶體,諸如攜有此類程式碼之CD。
系統3100可具有儲存於記憶體裝置上之作業系統,ROM可包括用於系統之開機程式碼,且處理器可經組態以用於執行開機程式碼以將作業系統載入至RAM 3104,從而執行作業系統以將電腦可讀程式碼複製至RAM 3104且執行程式碼。
網路連接3120提供去往及來自系統3100之通信。舉例而言,單一網路連接提供至本端及/或遠端網路上之其他裝置的一個或多個鏈路,包括虛擬連接。替代地,系統3100可包括多於一個網路連接(未圖示),各網路連接提供至其他裝置及/或網路之一個或多個鏈路。
系統3100可實施為分別經由網路連接至用戶端或伺服器之伺服器或用戶端。
返回至圖29,將提供與所揭示之加速資料庫管理系統相關之額外細節。舉例而言,所揭示之加速資料庫管理系統可包括至少一個處理器,該至少一個處理器包括電路系統及記憶體,其中記憶體包括在由電路系統執行時使至少一個處理器執行圖29中所展示之功能的指令。舉例而言,與查詢引擎2700相關聯之一個或多個處理器可接收由使用者產生的作為SQL查詢或作為任何其他合適格式之查詢的初始資料庫查詢2802。舉例而言,使用查詢前端2804之查詢引擎2700可基於初始資料庫查詢而產生主查詢2808。主查詢2808可與初始查詢2802相同或不同。舉例而言,語法檢查2806可產生相對於初始查詢2802之一個或多個修改(例如,語法變化)。主查詢2808可隨後例如由加速器規劃器2702A分析,且基於對主查詢之分析,至少第一子查詢2908及至少第二子查詢2904可基於主查詢2808而產生。第二子查詢2904可在至少一個方面不同於第一子查詢2908。
可沿著不同處理路徑處理由加速器規劃器2702A產生之第一及第二子查詢,其中各處理路徑與至執行模組2822之不同輸入相關聯。舉例而言,可沿著包括QEP 2612之第一處理路徑處理第一子查詢2908(例如,未經加速或殘餘子查詢),以將最佳化殘餘查詢規劃2916作為第一輸入提供至執行模組2822。可沿著不同於第一處理路徑且包括例如加速器2740之第二處理路徑處理第二子查詢2904(例如,加速子查詢),以產生中間表2940,該等中間表可作為第二輸入提供至執行模組2822。基於作為至執行模組之第一及第二輸入而接收的最佳化殘餘規劃2916及中間表2940,執行模組2822可產生主查詢結果2824。
任何合適觸發可用以警示執行模組2822:已基於主查詢2808而產生至少一個加速器子查詢2904。在一些情況下,接收一個或多個中間表2940可使得執行模組2822基於回應於第一/殘餘子查詢2908而產生之最佳化殘餘規劃2916以及回應於第二/加速器子查詢2904而產生之中間表2940兩者而輸出主查詢結果2824。在其他情況下,殘餘子查詢2908可包括對第二子查詢之參考以向執行模組或沿著第一處理路徑之任何組件警示非空第二子查詢2904的存在。在一些情況下,對第二子查詢之參考可包括待由執行模組接收作為第二輸入之加速器輸出的指示。
如上文所提及,在產生第一及第二子查詢時,諸如加速器規劃器2702A之規劃器模組可判定主查詢2808之一部分是否可由加速器單元(例如,加速器2740)執行。若如此,則第二子查詢2904被稱作加速器子查詢,且可經產生以便使用加速器單元執行主查詢之該部分。在一些情況下,加速器單元2740可經組態以執行可得益於加速之一個或多個預定功能或操作(例如,資料篩選、資料選擇、分類等)。加速器規劃器2702A可基於由加速器2740提供之一個或多個預定功能或操作而對主查詢2808之一部分是否可由加速器單元執行作出判定。
另外,加速器規劃器2702A可基於可用加速器功能及/或硬體而產生一個或多個加速器子查詢2904。舉例而言,在一些情況下,可產生多個加速器子查詢2904,其中各加速器子查詢與待由加速器2740執行之預定功能相關聯。在其他情況下,可產生多個加速器子查詢2904,其中各加速器子查詢與相同或不同加速器單元相關聯(例如,其中兩個或更多個加速器單元係可用的)。在第二子查詢2904包括一組多於一個子查詢之情況下,該組查詢中之各查詢可使得產生一個或多個中間表2940。在一些情況下,第一子查詢2908可包括引發對由該組查詢之查詢中的至少一者產生之一個或多個中間表的使用之單一查詢。
在一些情況下,加速器2740可經組態以執行一個或多個預定資料庫功能或資料庫操作。加速器規劃器2702A可基於由加速器2740提供之一個或多個預定資料庫功能或資料庫操作而對主查詢2808之一部分是否可由加速器單元執行進一步作出判定。
如先前所提及,加速器單元2740可經組態以輸出一個或多個中間資料表2940,該一個或多個中間資料表可作為輸入提供至執行模組2822。一個或多個中間資料表可包括藉由至少一個加速器單元基於相對於加速器單元資料庫中所儲存之資料的操作而產生之中間資料結果。在一些情況下,如在圖29之實例中,一個或多個中間資料表可由與至少一個加速器單元相關聯且對與資料庫2640C相關聯之資料操作的至少一個加速器執行模組2922產生,該資料庫可在加速器2740本端。
返回至執行模組2822,至執行模組之第一輸入可包括基於第一子查詢2908的殘餘查詢規劃2916,且至執行模組之第二輸入可包括來自加速器單元2740的輸出(例如,中間表2940)。執行模組2822可經組態以相對於自與加速單元相關聯之資料庫2640C分離的資料庫2640D執行殘餘規劃2916。在一些情況下,執行模組2822可經組態以相對於來自加速器單元之輸出而執行殘餘規劃2916。在其他情況下,執行模組2822可經組態以執行殘餘規劃2916而不依賴來自加速器單元之輸出。且在另外其他情況下,執行模組2822可經組態以相對於資料庫2640D而執行殘餘規劃2916以提供殘餘規劃結果,且將殘餘規劃結果與來自加速器單元(例如,中間表2940)之輸出組合以提供主查詢結果2824。
加速器2740可實施於任何合適平台上。在一些實施例中,加速器2740可實施於計算記憶體上或包括該計算記憶體。此計算記憶體可包括用於執行與加速器2740相關聯之加速功能中之一者或多者的複數個處理器子單元。複數個處理器子單元可安置於記憶體晶片上(例如,安置於具有與該記憶體晶片相關聯之複數個記憶體組的共同基板上)。複數個處理器子單元可在空間上分散於複數個記憶體組當中。在一些情況下,加速器資料庫2640C可儲存於加速單元之計算記憶體中。
視情況,可相對於主查詢結果2824執行一個或多個後處理操作2826,以提供所得資料2828作為對接收到初始資料庫查詢2802之回應。此處理可尤其包括格式化、分類或任何其他合適之後處理。
內嵌資料簡化
如以上章節中所描述,包括主機計算(例如,CPU)之傳統架構經組態以將資料自資料儲存單元載入至記憶體中且接著對該資料進行操作,此可產生計算延遲,尤其對於資料/記憶體密集型操作。舉例而言,包括資料查詢之某些類型之操作可能需要CPU將大量資料載入至記憶體中且相對於資料而執行許多記憶體存取以便產生操作/查詢之結果。此類操作對於諸如資料查詢之資料密集型操作而言可能極為低效,此係由於載入資料及存取所載入資料可能遭遇與有限網路頻寬、記憶體存取頻寬、記憶體潛時等相關聯之傳統瓶頸。此等低效之此負面影響在所要操作/資料查詢牽涉大量資料(例如,牽涉可包括對一個或多個資料庫中之資料主體進行關聯、存取、傳送及/或操作,主機處理器將需要審查該一個或多個資料庫以便判定特定操作/資料查詢之結果)的情況下可尤其嚴重,但操作/查詢之結果涉及來自所牽涉之較大資料主體內的相對少量資料。
一種此類情形之實例可回應於「頂部」查詢而出現,其中使用者可請求相對於一個或多個資料庫中所表示之特定特性的頂部X元件。在一個特定實例(在許多實例當中)中,使用者可請求與住在俄勒岡州本德市(Bend, Oregon)之前十名消費型產品購買者(其花費以美元為單位)相關聯的資料記錄。此查詢所牽涉之資料主體可涉及數百萬(或甚至數十億)之記錄,該等記錄包括於資料庫內或跨多個資料庫分佈(例如,針對位於整個美國或世界各地之個人而儲存的消費者記錄)。然而,查詢尋求來自所牽涉之資料主體中所表示之相對較小人群(亦即,住在俄勒岡州本德市之消費者)當中的極小數目個結果(亦即,前十名消費支出者)。
對於用以執行此查詢之主機,所牽涉資料之整個主體將需要自一個或多個外部儲存單元載入至記憶體中,且主機將繼續對整個資料主體進行操作以產生所請求結果。主機操作可需要對記憶體之多個存取以及多個相關聯邏輯運算,此可為耗時的。此程序之複雜性(及可能之時間延遲)在所牽涉資料之整個主體太大而不能適配於可用記憶體內的情況下可能更加複雜。在該等情況下,將需要分階段執行載入操作及邏輯運算,且將需要比較來自各階段之中間結果以便產生最終結果。
所揭示實施例至少部分地旨在解決與由傳統主機處理器執行之資料密集型操作相關聯的低效。在下文進一步詳細論述之一些實例中,所揭示的基於加速器之實施例可例如回應於使用者產生之查詢而提供粗略資料篩選操作。舉例而言,可將特定資料查詢所牽涉之資料主體之一部分載入至與一個或多個加速器單元相關聯的本端記憶體中。由於在記憶體存取線速率下接收到資料主體之該部分,因此可掃描所接收部分以自載入資料當中識別並不滿足(或無法滿足)資料查詢之至少一些值/記錄。可自中間經篩選資料結果中消除此等值/記錄,該等中間經篩選資料結果自加速器單元提供至主機計算。因此,主機計算具有較少資料進行審查(且在一些情況下,具有遠少於待審查之所牽涉資料主體源的資料)以判定最終資料查詢結果。因此,所揭示實施例可在其他情境中顯著加速某些資料查詢程序,例如在相對大資料庫當中尋求相對小數目個記錄的情況下。在該等情況下,所揭示之粗略內嵌資料篩選器架構及操作可將主機處理器需要審查之資料減少50%或更多。在一些情況下,需要審查之資料量可減少75%、90%或甚至超過95%。
由所揭示實施例提供之加速的一個來源係,相比於由主機計算執行之資料查詢程序,自外部資料儲存裝置載入至一個或多個加速單元之初始資料可表示特定資料查詢所牽涉的資料主體之一小部分。在以上頂部功能實例中,無需載入與各消費者相關聯之完整記錄以執行初始粗略篩選操作。舉例而言,在一個實例中,篩選程序可以載入並掃描代表各消費者之住宅位置的資料行開始。可僅將住宅行載入至本端加速器記憶體中且針對住在俄勒岡州本德市之個人對該住宅行進行掃描。一旦已識別彼等個人(例如,使用本文中所揭示之基於修剪器之特徵及選擇指示符),資料自資料儲存單元至本端加速器記憶體中之第二載入便可限於表示所呈現消費者之總支出的單行資訊。並且,由於加速器單元先前判定住在俄勒岡州本德市之個人之相關資料庫中的位置(例如,如由選擇指示符所指示),因此表示支出金額之整個行無需載入至本端加速器記憶體中。實情為,將僅需要載入與俄勒岡州本德市居民相關聯之支出資料,該支出資料來自追蹤整個美國或世界各地之消費者支出的資料庫,可能僅占資料庫中所儲存之總記錄的一小部分。
接下來,加速器可快速掃描改進資料(例如,以記憶體存取線速率)且在對相關資料之一次掃描中丟棄經識別為不能滿足資料查詢之彼等記錄。舉例而言,如下文更詳細地論述,在對相關資料之一次掃描中(例如,以記憶體存取線速率)的粗略篩選操作之效能可使得傳遞不滿足資料查詢的某一數量之資料(例如,與來自俄勒岡州本德市的不屬於該地區前十名最高支出消費者之個人相關聯的資料)。然而,粗略篩選操作可消除可在單次傳遞相關資料期間經識別為不滿足資料查詢之大量記錄。舉例而言,在來自俄勒岡州本德市之十名消費者已作為經篩選資料結果而經識別並傳遞之後,若來自俄勒岡州本德市消費者之第11項記錄指示比與已記錄的十名消費者相關聯之支出小的總支出,則可藉由粗略篩選操作來消除第11項。藉由此程序,將以經篩選資料結果傳遞僅在資料掃描中稍後遇到之總支出大於初始十個(或大於一組十個先前遇到之個人)的彼等個人應注意,經篩選結果可包括經掃描資料(例如,消費者支出金額)以及非經掃描資料(例如,與藉由粗略篩選操作傳遞或識別之個人相關聯的列值)。
由於粗略篩選操作,主機計算可具備待審查之高度針對性的資料群組,其可表示待審查以產生最終資料查詢結果之資料的數量級減少。在俄勒岡州本德市實例中,主機計算可接收表示來自俄勒岡州本德市之十多名消費者的集中資料集,例如數千個記錄,以進行審查,而非載入並審查表示數百萬或數十億個記錄之整個資料庫並且隨後有條理地且努力地搜遍彼等記錄以定位住在俄勒岡州本德市的前十名消費者。在經篩選結果超過資料查詢所請求之十個的情況下,主機計算可能需要對少量記錄進行審查、比較、分類等以識別資料查詢之結果。以此方式,所揭示實施例有可能顯著地減輕主機計算之處理負擔並消除與記憶體存取時間/記憶體瓶頸相關聯之較大時間延遲源。
換言之,輕量處理模組(例如,藉由所揭示加速器單元中之任一者執行的粗略快速篩選)可大幅減少經傳送以供由實施重型處理之主機計算處理的資料量。如在此項技術中已知,相較於重型程序,輕量程序可包括較快執行、較少操作及使用較少資源。舉例而言,相較於花費相對較長時間來執行較大任務之重型操作,輕量操作可為較小較快任務。可使用多階段方法分佈並執行查詢,該多階段方法包括接近於資料原點之粗略篩選階段(例如,涉及藉由諸如輕量處理模組之第一程序執行的較大資料簡化)。該方法亦可包括例如作為藉由主機計算執行之重型程序執行的精細操作階段(例如,分類及/或最終資料篩選)。作為操作之結果,精細操作階段經過設計而可涉及由於藉由輕量處理模組進行之操作及粗略篩選而產生的顯著簡化之資料集,且因此可需要藉由諸如主機計算之重型處理的第二程序進行較少資料簡化。可在線完成資料簡化,亦即,隨著多階段實施方案之各階段正在執行,連續地同時運行處理。
圖32提供根據例示性所揭示實施例之經組態以實施內嵌資料簡化之資料分析架構的圖解表示。可至少部分地藉由在外部資料儲存裝置920與分析引擎910(例如,CPU/主機)之間應用新穎操作,視情況繼之以完成處理912來進行例如藉由資料分析加速器900執行的加速。在當前實施例中,內嵌資料簡化3200可實施於硬體層904中作為硬體模組924中之一者或多者。舉例而言,硬體層904中之FPGA可經組態有所揭示之內嵌資料簡化系統的一個或多個部分。此組態並非限制性的,並且內嵌資料簡化之一個或多個部分可使用軟體層902、軟體模組922、儲存層906、儲存模組926及/或分析引擎910來實施。資料可自各種位置擷取且儲存至各種位置,包括外部資料儲存裝置920、儲存層906、儲存模組926、加速器記憶體1200及/或分析引擎910或通用電腦上之資料,以及其他位置。在較佳實施方案中,資料係以線速度自外部儲存裝置920或加速器記憶體1200串流穿過資料分析加速器900且接著到達分析引擎以供處理完成912。
圖33表示資料處理之實例方法。來自資料儲存裝置3301之展示為資料3302A的資料集經傳送3308至對資料3302B執行重處理3310以產生所要輸出3316的位置。此等架構將大量資料3302自儲存裝置傳送至另一位置以供處理。應注意,在當前描述中為了清楚起見,資料3302元件數目在資料處於不同位置時展示為具有不同字尾(3302A、3302B)。資料儲存裝置3301包括資料儲存裝置800,該傳送係經由通信通道820,且重處理係實施於通用計算810上。
圖34提供根據例示性所揭示實施例之內嵌資料簡化系統及方法之圖解表示。在此情況下,且與以上描述一致,來自資料儲存裝置3401之資料3302係藉由輕量第一程序(展示為輕處理3404)處理以產生資料之第一子集3406。替代地,來自資料3302之第一組部分結果(下文描述為3724)可經處理以產生第一子集3406。第一子集3406經傳送3408至重型第二程序(展示為重處理3310)處理第一子集3406以產生資料之第二子集3412的位置,第二子集3412基於特定準則。第二子集3412可與第一子集3406相同(例如,其中處理3310不會導致進一步資料簡化)或與第一子集3406不同(例如,其中處理3310導致進一步資料簡化)。視情況選用之處理3414可在程序中之任何階段實施,例如如圖34中所展示,以處理第二子集3412以產生所要輸出3316。
如本文中所描述,資料儲存裝置3401可使用資料分析處理器900之外部資料儲存裝置920或儲存層906(例如,儲存模組926)來實施。相比於分析引擎910,輕處理3404可藉由相對接近於資料儲存裝置3401之一個或多個硬體模組924而實施於硬體層904中。第一子集3406可自資料分析處理器900傳送3408至分析引擎910以供重處理3310。替代地,可至少部分地在除分析引擎910以外之位置中實施重處理,例如作為軟體層902中之一個或多個軟體模組922。第二子集3412可接著視需要藉由處理完成912處理。
本發明所揭示實施例之特徵可包括資料簡化。舉例而言,相對於處理,可將少量資料之第一子集3406自儲存裝置傳送至另一位置以供進一步處理。在非限制性實施方案中,第一子集3406中之資料量可比資料集3302中之資料量(例如,特定資料查詢所牽涉之資料量)小兩個或更多個數量級。對應地,在實例實施方案中,所傳送之資料量(經由傳送3408)可比在實施方案中傳送之資料量(經由傳送3308)小兩個或更多個數量級。在藉由資料分析加速器900進行處理(串流)之情況下,藉由資料分析加速器900進行之資料簡化可為自資料3302輸入至第一子集3406輸出的至少兩個數量級。亦可關於緊接著全功能操作之初始部分功能操作而描述所揭示之粗略篩選操作。
圖35係查詢處理之實施方案之實例。查詢3500可包括一個或多個功能。在當前圖中展示了第一篩選器(篩選器-A,3500-A)、第二篩選器(篩選器-B,3500-B)及「頂部」功能(頂部3500-C)。查詢3500係藉由主機(710、810)中之CPU 100運行。記憶體模組301可為資料儲存裝置3301之部分且保持待傳送(經由資料傳送3510)至主機710的資料3302。CPU 100根據查詢3500來處理所傳送資料。
圖36A提供根據例示性所揭示實施例之內嵌資料簡化系統及方法之圖解表示。在此情況下,輕量第一程序經組態以在記憶體處理模組610上運行。查詢3600(類似於查詢3500)可包括一個或多個功能。在當前圖中展示了第一篩選器(篩選器-A,3600-A)、第二篩選器(篩選器-B,3600-B)及「頂部」功能(頂部3600-C)。記憶體模組301由包括處理模組612中之一者或多者的記憶體處理模組(MPM)610中之一者或多者替換。MPM 610可為資料儲存裝置3401之部分且保持資料3302。在當前例示性實施方案中,第一篩選器(篩選器-A,3600-A)、第二篩選器(篩選器-B,3600-B)及「頂部」功能(3600-C)之部分/部分實施方案經組態於處理模組612上。處理模組612根據查詢3600之經組態部分來處理資料3302以產生資料之第一子集3406。第一子集3406接著經傳送3610至主機710。主機710包括經組態有「頂部」功能3600-C之完全實施的CPU 100。第一子集3406係根據查詢3600之經組態部分而處理以產生資料之第二子集3412。
圖36B提供根據例示性所揭示實施例之另一內嵌資料簡化系統及方法之圖解表示。在此情況下,輕量第一程序可在資料分析加速器900上運行。資料(例如,來自資料儲存裝置3301)可儲存於加速器記憶體1200上。在當前例示性實施方案中,第一篩選器(篩選器-A,3600-A)、第二篩選器(篩選器-B,3600-B)及「頂部」功能(3600-C)之部分/部分實施方案可經組態為資料分析加速器900上之內嵌資料簡化3200的一部分。資料分析加速器900根據查詢3600之經組態部分來處理資料3302以產生資料之第一子集3406。第一子集3406接著經傳送3620至分析引擎910。分析引擎910包括經組態有「頂部」功能3600-C之至少一部分或完全實施的處理完成模組912。第一子集3406係藉由完成處理912根據查詢3600之經組態部分而處理以產生資料之第二子集3412。
圖37提供根據例示性所揭示實施例之內嵌資料簡化系統流程之圖解表示。當前非限制性實例使用來自具有多個項目(元素)之資料儲存裝置(類似於資料儲存裝置3401)的一組資料3720(類似於資料3302)。該組資料3720係由第一篩選器,篩選器-A 3722(類似於第一篩選器3600)來處理,在此情況下城市=「TLV」3721-B以產生第一組部分結果3724。在此情況下,部分結果3724係具有多個元素之表:項目3721-A(3701、3702、3703、3704、3705、3706、3707、3708、3710、3713,各項目具有一行名稱3721-C及薪資(SAL.3721-D)。自第一組部分結果3724產生資料之第一子集3406。在此情況下,使用實施「頂部」功能3600-C之一部分且產生與所要結果相等或比其更多之資料(在資料3720包括比所要結果之數目更多的項目之常見情況下)的第一輕量部分功能3726來產生第一子集3406。此部分功能3726使得第一子集3406包括誤報,亦即,比所要結果更多之資料。第一子集3406可經傳送(3610、3620、3408)至第一子集3406經處理以產生3732資料之第二子集3412的位置。自第一子集3406產生資料之第二子集3412係基於給定準則3721-D。在此情況下,使用實施「頂部」功能3600-C且產生所要資料之第二重型全功能3732來產生第二子集3412。
第二子集3412可經排序,或如在當前實例3412B中那樣無序。視情況選用之程序3414,在此實例中為分類3736程序,可經實施以產生經分類資料3738。在此情況下,將薪資自最大至最小進行排序且輸出如所要輸出3316之結果。另外或替代分類,可在任何階段進行視情況選用之處理3414。
如上文所提及,部分功能3726可包括誤報,如藉由請求前四名薪資之例示性「頂部」功能以及產生具有六個(不是四個)結果之第一子集3406的輕量初始部分功能3726所展示。後續重型全功能3732處理第一子集3406以產生具有所要四個結果之第二子集3412。如本文中所使用之術語「部分功能」不應與小於所要結果之「部分」混淆。如所描述,第一部分功能3726可產生包括與所要結果相比等量或更大之結果的超集。因此,輕量「部分功能」係指重型全功能之部分實施。
如上文所提及,視情況選用之處理3414可在程序中之任何階段實施。舉例而言,如當前圖中所展示,分類3736操作係視情況選用之處理3414的實例,在此情況下經執行以處理含有無序結果之第二子集3412,以產生含有按金額排序之薪資的經分類資料3738。
可基於給定準則3721-D而自第一子集3406產生資料之第二子集3412。第二子集3412可不同於第一子集3406。第二子集3412可含有與第一子集3406相比等量或較少之資料。
處理可包括篩選模組。舉例而言,第一篩選器(篩選器-A,3600-A、3722)篩選資料(3302、3720)以產生第一組部分結果3724。資料可經結構化,可呈表格式(行、列),及/或可包括結構化資料庫等。
篩選(3600-A、3722)可基於不同於給定準則3721-D之一組篩選準則(3721-B)。替代地,篩選(3600-A、3722)可基於給定準則3721-D。篩選(3600-A、3722)可與產生3726第一子集3406同時執行。
分類(3736)第二子集可基於給定準則3721-D以產生經分類資料3738。分類(3736)第一子集可基於給定準則3721-D以產生經分類資料3738。分類(3736)第二子集可基於經分類資料3738及給定準則(3721-D)。
產生第一子集3406可實施於第一處理系統上並且產生第二子集3412可實施於除第一處理系統以外之第二處理系統上。替代地,產生第一子集3406及第二子集3412可實施於單一處理系統上,或分佈於三個或更多個處理系統上之處理。在非限制性實例中,產生第一子集3406可藉由作為MPM 610之第一處理系統實施,並且產生第二子集3412可藉由作為主機710之第二處理系統實施。在另一非限制性實例中,產生第一子集3406可藉由資料分析加速器900硬體層904實施,並且產生第二子集3412可藉由分析引擎910實施。
第一組部分結果3724中之資料量可小於或等於該組資料3302、3720中之資料量。第一子集3406中之資料量可小於第一組部分結果3724中之資料量。第一子集3406中之資料量可小於該組資料3302、3720中之資料量。第二子集3412中之資料量可小於或等於第一子集3406中之資料量。第一子集3406中之資料量可比該組資料3302、3720中之資料量小兩個或更多個數量級。
產生第一子集3406可基於功能之部分實施,並且產生第二子集3412可基於功能之完全實施。第一子集3406可具有小於第一組部分結果3724之資料以及等於或大於第二子集3412之資料。第一子集3406可為第二子集3412之超集。第一子集3406之產生可藉由輕量處理相對於藉由重型處理實施的第二子集3412之產生而實施。第一子集3406之產生可藉由輕量演算法相對於可藉由重型演算法實施的第二子集3412之產生而實施。使用輕量演算法基於第一組部分結果3724而產生第一子集3406可相對於使用重型演算法基於第一組部分結果3724而產生第二子集3412產生相等或更多之資料。基於第一組部分結果3724而產生第一子集3406可相對於基於第一組部分結果3724而產生第二子集3412產生相等或更多之資料。
圖38提供根據例示性所揭示實施例之表示用於內嵌資料簡化的方法之實例的流程圖。該方法可在資料分析加速器900硬體層904中實施為一個或多個硬體模組924。根據一個範疇,為了輔助理解方法,可將大量輕量處理視為定限技術。輕量處理部分不需要實施分類、對串流資料進行操作且無記憶體。如此項技術中已知,無記憶體係指缺少用於儲存資料之記憶體的使用,相比之下,可將暫存器(例如,少量)用於在處理期間所使用之資訊。
在當前圖之例示性實施方案中,參數經初始化3802,包括最小值為負無窮(MIN_VAL = -INF)、上限最小值為正無窮(UP_BOUND_MIN = +INF)及所要值數目(K=所要值數目(NUMBER OF VALUES WANTED))。在適當時將其他參數設定為初始值,例如計數設定為零。只要存在更多資料待處理3804,則針對各資料將相關一個(或多個)元素與最小值進行比較3808(ELEM > MIN_VAL?)。若元素之值不大於最小值,則方法在步驟3804處繼續。若元素之值大於最小值,則方法輸出3810與元素相關聯之資料(可能包括元素、相關聯資料、與元素相關聯之元組等)。
該方法現更新多個參數。超過最小計數遞增3812(OVER_MIN_CNT ++)。若元素小於上限最小值3814(ELEM < UP_BOUND_MIN?),則將上限最小值設定3816為元素值。
在任一情況下,檢查超過最小計數參數3818以查看吾人是否已達到所要值數目(OVER_MIN_CNT >= K?)。若是,則更新參數3820:最小值經設定為上限最小值(MIN_VAL = UP_BOUND_MIN),接著將上限最小值設定為正無窮(UPPER_BOUND_MIN = +INF),且將超過最小計數設定為零(OVER_MIN_CNT = 0)。該方法繼續步驟3804以查看是否存在更多資料待處理。
當不再存在資料待處理時(3804「否」),接著方法結束,可進行視情況選用之處理3806(參見3414)等。
返回至圖36B,現將描述關於所揭示之內嵌篩選實施例之額外細節。根據所揭示實施例,內嵌資料篩選器系統可包括介面(例如,任何接腳、節點、匯流排連接、控制器或經組態以接收指示資料查詢之資料查詢或信號的裝置)及資料篩選器電路系統(例如,包括於資料分析加速器900之內嵌資料簡化模組3200中的電路系統)。
資料篩選器電路系統可包括用於執行與所揭示之內嵌資料篩選器相關聯之粗略篩選操作的各種硬體組件,諸如篩選器、比較器、字串比較器、暫存器、一個或多個場可程式化閘陣列、一個或多個處理器等。回應於可包括查詢3600、查詢3600之導數、一個或多個篩選器參數(例如,3600-A、3600-B、3600-C等)或所接收查詢之另一合適指示符的資料篩選器起始信號,資料篩選器電路系統可執行與資料查詢相關聯之至少一個操作。舉例而言,資料篩選器起始信號可指示一組預定操作中之哪一者將由資料篩選器電路系統執行(例如,經由篩選器、功能以及藉由資料篩選器起始信號傳送之相關聯參數)。至少一個操作可包括擷取查詢所牽涉之且至少一個儲存單元中所儲存之資料主體的一個或多個子集。舉例而言,資料篩選器起始信號可指示資料篩選器電路系統將在執行與資料查詢相關聯之至少一個操作時使用資料主體的哪一子集。資料查詢所牽涉之資料主體可儲存於一個或多個資料庫中(例如,資料儲存裝置920中),且在一些情況下可以資料表格式組織。
至少一個操作亦可包括相對於查詢參數(例如,篩選器3600-A、篩選器3600-B等)分析所擷取資料之一個或多個子集。此分析可經設計以使得自資料查詢所牽涉之資料主體產生經篩選資料子集,其中經篩選資料子集包括少於資料查詢所牽涉之資料主體的資料。經篩選資料子集可接著傳送至主機處理器(例如,分析引擎910),該主機處理器經組態以執行關於資料查詢之一個或多個額外操作(例如,最終篩選、分類、格式化等)以產生資料查詢的輸出(例如,輸出3316)(圖34)。
藉由內嵌資料簡化模組3200之資料篩選器電路系統執行的至少一個操作可包括至少一個篩選操作。在一些情況下,藉由資料篩選器電路系統執行之至少一個操作包括兩個或更多個篩選操作。篩選操作中之各者可基於與資料查詢3600之參數相關聯的一組篩選準則。參考上文所描述之俄勒岡州本德市實例,與查詢3600相關聯之第一篩選器3600-A(例如,列出住在俄勒岡州本德市之前十名支出消費者)可包括「俄勒岡州本德市」。使用第一篩選器3600-A,資料篩選器電路系統可使用選擇指示符來識別住在俄勒岡州本德市之個人,如本發明之其他章節中所描述。可使用不同於篩選器3600-A之篩選器來應用一個或多個額外篩選操作。接下來,內嵌資料簡化模組3200之資料篩選器電路系統可執行粗略篩選操作。舉例而言,參考僅表示住在俄勒岡州本德市之彼等個人的簡化資料集,資料篩選器電路系統可執行部分頂部功能,諸如頂部功能3600-C(例如,前十名支出消費者),以產生經篩選資料子集。此經篩選資料子集可包括比資料查詢3600所牽涉之資料主體少的資料,但包括比至資料查詢之輸出多的資料(例如,比分析引擎910輸出作為資料查詢3600之最終結果更多的結果)。在俄勒岡州本德市實例中,資料篩選器電路系統可根據與圖38中所概述之方法類似的方法來掃描藉由選擇指示符識別之簡化資料集的一部分。亦即,電路系統可執行部分頂部功能操作以篩除無法滿足資料查詢頂部功能之完全應用的資料,同時將候選者傳遞至可滿足資料查詢頂部功能之分析引擎910。在一些情況下,經篩選資料集3620將等同於藉由分析引擎910輸出之資料查詢(例如,其中在資料庫中識別十個或少於十個消費者)。然而,更常見地,經篩選資料集3620將包括比藉由分析引擎910輸出之資料查詢更多的資料記錄(例如,其中在資料庫中識別多於十個消費者且篩選器電路系統返回比資料查詢3600中所指定之頂部功能參數大的多個候選者)。資料分析引擎910可接收來自篩選器電路系統之經篩選資料結果且執行一個或多個額外任務以向資料查詢產生最終結果。額外任務可包括指定頂部功能之最終應用以消除落在指定頂部功能之外的在經篩選資料集中傳送之任何候選者。額外任務亦可包括分類、格式化、排名等中之一者或多者。
以另一方式描述,由資料篩選器電路系統執行之粗略篩選操作可包括執行第一任務資料操作(例如,部分頂部功能或其他部分篩選操作)。在此情況下,藉由資料分析引擎910(例如,主機處理器)執行之一個或多個額外操作包括與資料操作相關聯之至少第二任務(不同於第一任務)。第二任務可包括對所接收之簡化資料集執行完全頂部功能(對經由資料傳送3620傳送之簡化的經篩選資料集)或任何其他完全篩選操作。如上文所提及,此操作亦可描述為篩選器電路系統基於功能(例如,頂部功能)之部分實施/大致實施而產生經篩選資料子集,以及資料分析引擎910基於功能(例如,頂部功能)之完全實施/精確實施而產生查詢資料輸出。
可以多種方式將自內嵌資料簡化模組3200之篩選器電路系統輸出的經篩選資料子集傳送至分析引擎910。舉例而言,在一些情況下,資料篩選器電路系統可經組態以掃描自資料主體(例如,單行資料或一行資料之部分)接收之資料,且將輸出值(例如,與藉由掃描程序識別之候選者記錄相關聯的列值)作為經篩選資料子集串流至主機處理器。當篩選器電路系統持續執行與資料查詢相關聯之一個或多個操作(例如,部分頂部功能等)時,將輸出值串流至主機處理器。資料篩選器電路系統可經組態以將經篩選資料子集之部分傳送至主機處理器,此與相對於資料主體執行至少一個操作並行地發生。經篩選資料子集可包括資料查詢之部分結果。並且,資料查詢可與指定所要數目個結果之至少一個頂部功能相關聯,並且其中經篩選資料子集包括多於所要數目個結果。
所揭示實施例可包括以下各者:
一種加速資料庫管理系統,其包含:至少一個處理器,其包括電路系統及一記憶體,其中該記憶體包括指令,該等指令在由該電路系統執行時使該至少一個處理器:接收一初始資料庫查詢;基於該初始資料庫查詢而產生一主查詢;分析該主查詢,且基於對該主查詢之該分析而產生至少一第一子查詢及一第二子查詢,其中該第二子查詢不同於該第一子查詢;沿著一第一處理路徑處理該第一子查詢以將一第一輸入提供至一執行模組;沿著不同於該第一處理路徑之一第二處理路徑處理該第二子查詢以將一第二輸入提供至該執行模組;並且基於由該執行模組接收之該第一輸入及該第二輸入而產生一主查詢結果。
其中該主查詢等同於該初始資料庫查詢。
其中該主查詢包括相對於該初始資料庫查詢之一個或多個語法變化。
其中該初始資料庫查詢係由使用者產生。
其中該初始資料庫查詢包括一SQL查詢。
其中該第二子查詢包括一加速器子查詢。
其中該第一子查詢包括一殘餘子查詢。
其中該殘餘子查詢包括對該第二子查詢之一參考。
其中該第一處理路徑包括經組態以基於該第一子查詢而輸出一殘餘查詢規劃之一查詢規劃器模組。
其中將該殘餘查詢規劃作為該第一輸入提供至該執行模組。
其中該殘餘查詢規劃係一最佳化殘餘查詢規劃。
其中該殘餘查詢規劃包括對該第二子查詢之一參考。
其中對該第二子查詢之該參考包括待由該執行模組接收作為該第二輸入之一加速器輸出的一指示。
其中該加速器輸出包括一個或多個中間資料表。
其中該第二處理路徑包括至少一個加速器單元。
其中該至少一個加速器單元經組態以執行一個或多個預定資料庫功能或資料庫操作。
其中該第二子查詢係基於由該至少一個加速器單元提供之該一個或多個預定資料庫功能或資料庫操作而產生。
其中該至少一個加速器單元經組態以輸出一個或多個中間資料表。
其中將該一個或多個中間資料表作為至該執行模組之該第二輸入提供至該執行模組。
其中該一個或多個中間資料表包括藉由該至少一個加速器單元基於相對於一加速器單元資料庫中所儲存之資料的操作而產生之中間資料結果。
其中該一個或多個中間資料表係由與該至少一個加速器單元相關聯之至少一個加速器執行模組產生。
其中至該執行模組之該第一輸入包括基於該第一子查詢的一殘餘查詢規劃,並且至該執行模組之該第二輸入包括來自一加速器單元的一輸出,並且其中該執行模組經組態以相對於自與該加速單元相關聯之一資料庫分離的一資料庫執行該殘餘規劃。
其中至該執行模組之該第一輸入包括基於該第一子查詢的一殘餘查詢規劃,並且至該執行模組之該第二輸入包括來自一加速器單元的一輸出,並且其中該執行模組經組態以相對於來自該加速器單元之該輸出執行該殘餘規劃。
其中至該執行模組之該第一輸入包括基於該第一子查詢的一殘餘查詢規劃,並且至該執行模組之該第二輸入包括來自一加速器單元的一輸出,並且其中該執行模組經組態以執行該殘餘規劃而不依賴於來自該加速器單元之該輸出。
其中至該執行模組之該第一輸入包括基於該第一子查詢的一殘餘查詢規劃,並且至該執行模組之該第二輸入包括來自一加速器單元的一輸出,並且其中該執行模組經組態以:相對於一資料庫執行該殘餘規劃以提供一殘餘規劃結果;並且將該殘餘規劃結果與來自該加速器單元之該輸出組合以提供該主查詢結果。
其中來自該加速器單元之該輸出包括一個或多個中間資料表。
其中該加速單元包括計算記憶體。
其中該計算記憶體包括安置於一記憶體晶片上之複數個處理器子單元。
其中該複數個處理器子單元安置於具有與該記憶體晶片相關聯之複數個記憶體組的一共同基板上。
其中一加速器資料庫儲存於該加速單元之該計算記憶體中。
其中回應於該主查詢,該至少一個處理器經組態以:使用一規劃器模組判定該主查詢之一部分是否可由一加速器單元執行;並且產生該第二子查詢以便使用該加速器單元執行該主查詢之該部分。
其中該加速器單元經組態以執行一個或多個預定功能或操作。
其中對該主查詢之一部分是否可由一加速器單元執行之該判定係基於該一個或多個預定功能或操作。
其中該第二子查詢包括待由一個或多個加速單元執行之兩個或更多個加速器子查詢。
其中該第二子查詢包括一組查詢,該組查詢中之各查詢使得產生一個或多個中間表。
其中該第一子查詢包括使用自該組查詢之該等查詢中的至少一者產生之該一個或多個中間表的一單一查詢。
其中該至少一個處理器經組態以相對於該主查詢結果執行一個或多個後處理操作以提供所得資料作為對接收到該初始資料庫查詢之一回應。
一種資料篩選器系統,其包含:一介面;以及資料篩選器電路系統,其經組態以:經由該介面接收一資料篩選器起始信號,且回應於接收到該資料篩選器起始信號而執行與一資料查詢相關聯之至少一個操作,其中該資料查詢牽涉儲存於至少一個儲存單元中的資料之一主體;其中執行與該資料查詢相關聯之該至少一個操作會導致自資料之該主體產生一經篩選資料子集,包括比該資料查詢所牽涉的資料之該主體少的資料;並且將該經篩選資料子集傳送至經組態以執行關於該資料查詢之一個或多個額外操作的一主機處理器以向該資料查詢產生一輸出。
其中藉由該資料篩選器電路系統執行之該至少一個操作包括至少一個篩選操作。
其中藉由該資料篩選器電路系統執行之該至少一個操作包括兩個或更多個篩選操作。
其中一第一篩選操作係基於一第一組篩選準則並且一第二篩選操作係基於一第二組篩選準則,該第二組篩選準則不同於該第一組篩選準則。
其中藉由該資料篩選器電路系統執行之該至少一個操作包括一粗略篩選操作。
其中該粗略篩選操作產生一經篩選資料子集,該經篩選資料子集包括比該資料查詢所牽涉之資料之該主體少的資料,但包括比至該資料查詢之該輸出多的資料
其中藉由該資料篩選器電路系統執行之該至少一個操作包括一部分頂部功能操作。
其中該部分頂部功能操作返回超過該資料查詢所指定之多個結果。
其中該部分頂部功能操作係在執行一個或多個篩選操作之後藉由該資料篩選器電路系統執行。
其中藉由該資料篩選器電路系統執行之該至少一個操作包括與一資料操作相關聯的至少一第一任務,並且該主機處理器上之該一個或多個額外操作包括與該資料操作相關聯的不同於該第一任務之至少一第二任務。
其中產生該經篩選資料子集係基於一功能之一部分實施,並且產生該查詢資料輸出係基於該功能之一完全實施。
其中產生該經篩選資料子集係基於一功能之一大致實施,並且產生該查詢資料輸出係基於該功能之一精確實施。
其中該資料篩選器起始信號係該資料查詢。
其中該資料篩選器起始信號係自該資料查詢導出。
其中該資料篩選器起始信號指示一組預定操作中之哪一者將由該資料篩選器電路系統執行。
其中該資料篩選器起始信號指示該資料篩選器電路系統將在執行與該資料查詢相關聯之該至少一個操作時使用哪一資料。
其中儲存於該至少一個儲存單元中之資料之該主體係以一個或多個資料表組織。
其中該資料查詢所牽涉之資料之該主體對應於回應於該資料查詢而待審查的一完整資料集。
其中該資料篩選器電路系統包括一場可程式化閘陣列。
其中該資料篩選器電路系統包括一個或多個比較器。
其中該資料篩選器電路系統包括一個或多個暫存器。
其中該資料篩選器電路系統包括一個或多個處理器。
其中藉由該主機處理器執行之該一個或多個額外操作包括一分類功能、一頂部功能或一排名功能中之至少一者。
其中該資料篩選器電路系統經組態以掃描自資料之該主體接收的資料,且將輸出值作為該經篩選資料子集串流至該主機處理器。
其中將該輸出值串流至該主機處理器在執行與一資料查詢相關聯之該至少一個操作時發生。
其中該資料篩選器電路系統經組態以將該經篩選資料子集之部分傳送至該主機處理器,此與相對於資料之該主體執行該至少一個操作並行地發生。
其中該經篩選資料子集包括該資料查詢之部分結果。
其中該資料查詢與指定一所要數目個結果之至少一個頂部功能相關聯,並且其中該經篩選資料子集包括多於該所要數目個結果。
本文中所揭示之實施例係例示性的並且用於促進記憶體密集操作及減少資料傳送之任何其他構件可與本發明一致。
已出於說明之目的呈現前述描述。前述描述並非窮盡且不限於所揭示之精確形式或實施例。修改及調適對熟習此項技術者而言將自本說明書之考量及所揭示實施例的實踐顯而易見。另外,儘管所揭示實施例之範疇描述為儲存於記憶體中,但熟習此項技術者將瞭解,此等範疇亦可儲存於其他類型之電腦可讀媒體上,諸如次要儲存裝置,例如硬碟或CD ROM,或其他形式的RAM或ROM、USB媒體、DVD、藍光、4K超HD藍光,或其他光碟機媒體。
基於書寫描述及所揭示方法之電腦程式在有經驗的開發者之技能內。可使用熟習此項技術者已知之技術中之任一者來產生或可結合現有軟體來設計各種程式或程式模組。舉例而言,程式區段或程式模組可以或藉助於.Net框架(.Net Framework)、.Net緊密框架(.Net Compact Framework)(及相關語言,諸如視覺培基(Visual Basic)、C等)、Java、C++、Objective-C、HTML、HTML/AJAX組合、XML或包括Java小程式之HTML而經設計。
此外,儘管本文中已描述說明性實施例,但熟習此項技術者基於本發明將瞭解具有均等元件、修改、省略、組合(例如,各種實施例中之範疇的組合)、調適及/或更改之任何及所有實施例的範圍。申請專利範圍中之限制應基於申請專利範圍中所採用的語言而廣泛地解譯,且不限於本說明書中所描述或在本申請案之審查期間的實例。實例應解釋為非排他性的。此外,所揭示方法之步驟可以任何方式修改,包括藉由對步驟重新排序及/或插入或刪除步驟。因此,希望本說明書及實例僅僅被視為說明性的,而真實範圍及精神係由以下申請專利範圍及其均等物之完整範圍指示。
100:CPU
110:處理單元
120A:處理器子單元
120B:處理器子單元
130:快取記憶體
140A:記憶體
140B:記憶體
200:GPU
210:處理單元
220A:子單元
220B:子單元
220C:子單元
220D:子單元
220E:子單元
220F:子單元
220G:子單元
220H:子單元
220I:子單元
220J:子單元
220K:子單元
220L:子單元
220M:子單元
220N:子單元
220O:子單元
220P:子單元
230A:快取記憶體
230B:快取記憶體
230C:快取記憶體
230D:快取記憶體
240:快取記憶體
250A:記憶體
250B:記憶體
250C:記憶體
250D:記憶體
300:記憶體晶片
300-0:晶片
300-1:晶片
300-2:晶片
300-3:晶片
300-4:晶片
300-5:晶片
300-6:晶片
300-7:晶片
300-8:晶片
301:記憶體模組
302:記憶體陣列
302-0:記憶體陣列
302-1:記憶體陣列
302-2:記憶體陣列
302-3:記憶體陣列
302-4:記憶體陣列
302-5:記憶體陣列
302-6:記憶體陣列
302-7:記憶體陣列
302-8:記憶體陣列
306:對應位址選擇器
306-0:選擇器
306-1:選擇器
306-2:選擇器
306-3:選擇器
306-4:選擇器
306-5:選擇器
306-6:選擇器
306-7:選擇器
306-8:選擇器
308:DDR控制器
312:ECC模組
420:程序
422:資料
424:初始錯誤校正碼/ECC/初始ECC
426:初始CRC
428A:初始同位
428B:命令
428C:位址
530:程序
538A:初始同位
538B:命令
538C:位址
600:記憶體組
600-0:組
600-1:組
600-2:組
600-3:組
602:記憶體陣列
602-0:記憶體陣列
602-1:記憶體陣列
602-2:記憶體陣列
602-3:記憶體陣列
606:選擇器
606-0:選擇器
606-1:選擇器
606-2:選擇器
606-3:選擇器
608:DDR控制器
610:記憶體處理模組/MPM
612:處理模組/處理元件/處理器子單元
613:從屬控制器
618:第二記憶體介面
620:外部元件
622:主控制器
623:MPM從屬控制器/記憶體控制器
624:XRAM晶片
626:雙排記憶體模組/DIMM/XDIMM
628:密集記憶體處理單元/IMPU
630:控制器域
632:較高級域
640:記憶體器具
710:主機
800:儲存裝置
810:通用計算
820:資料通信
900:資料分析加速器
900-1:第一資料分析加速器
900-N:額外資料分析加速器
902:軟體層
904:硬體層
906:儲存層
910:分析引擎
912:完成處理
920:外部資料儲存裝置
922:軟體模組
924:硬體模組
926:儲存模組
1000:軟體開發套組/SDK
1002:運行時間環境
1004:API
1006:管理器
1008:開發工具
1010:嵌入式軟體/嵌入式軟體組件
1012:韌體
1014:即時軟體
1100:加速單元
1100-1:第一加速單元
1100-N:第n加速單元
1102:選擇器模組
1103:篩選及投射模組/FPE
1104:字串引擎
1106:篩選及彙總引擎/FAE
1108:加入及分組模組/JaGB
1110:橋接器
1112:儲存裝置/儲存橋接器
1114:記憶體/記憶體橋接器
1116:網狀架構/網狀架構橋接器
1118:計算/計算橋接器
1200:加速器記憶體
1202:記憶體中處理/PIM
1204:SRAM
1206:DRAM/HBM
1208:本端資料儲存裝置
1300:互連件
1306:網狀架構
1320:修剪器
1322:記憶體
1324:查詢處理器
1326:介面
1328:修剪邏輯
1330:資料表
1331:篩選值
1331b:篩選值
1332:列
1332-1:列
1332-2:列
1332-3:列
1332-4:列
1332-5:列
1332-6:列
1332-7:列
1332-8:列
1332-9:列
1332-10:列
1334:行
1334-1:行
1334-2:行
1334-3:行
1334-4:行
1336:經篩選資料表/經篩選表/選擇指示符
1336-1:初始選擇指示符
1336-2:改進選擇指示符
1337:選擇指示符
1338:經篩選表
1402:修剪器選擇器/修剪器模組
1600:表選擇器
1601:表
1602:資料列
1602-1:列
1602-2:列
1602-3:列
1602-4:列
1604:值/行
1604-1:行
1604-2:行
1604-3:行
1604-4:行
1606:匹配篩選器
1608:IN篩選器
1610:經篩選結果
1700:基於修剪器之選擇器
1706:篩選器/匹配篩選器
1708:篩選器/IN篩選器
1710:經篩選結果
1722:修剪器位元向量產生模組
1724:閘管理器模組/閘管理器
1726:修剪器控制器/控制器
1728:修剪器封裝器/封裝器
1730:位元向量更新
1730A:匹配篩選器輸出更新
1730B:IN篩選器輸出更新
1732:傳遞/丟棄位元向量
1800:修剪器多程架構
1804:控制器
1822:第一處理器
1823:選擇處理器
1824:處理模組
1831:資料集
1832:記憶體
1850:更新產生器模組/更新產生器
1852:選擇指示符更新
1900:修剪器架構
1901:媒體模組
1922:位元向量更新產生器模組/位元向量更新產生模組
1930:處理
1940:介面
2000:狀態機
2002:閒置狀態
2004:設定狀態
2006:更新狀態
2008:消耗狀態
2010:步驟/區塊
2012:區塊
2502:查詢引擎
2504:查詢引擎規劃器
2600:查詢引擎/QE
2612:查詢引擎規劃器/QEP
2614:執行引擎
2620:查詢引擎/QE
2622:查詢引擎規劃器/QEP
2624:組件
2624A:執行引擎
2624B:加速器管理器
2640A:資料庫
2640C:資料庫
2640D:資料庫
2642:資料庫加速器
2700:查詢引擎/QE
2702:加速器規劃器
2702A:第一加速器規劃器/加速器規劃器
2702D:加速器規劃器
2740:加速器模組/加速器
2800:初始步驟
2802:初始資料庫查詢
2804:查詢引擎前端/QE前端
2806:檢查
2808:主查詢
2812:最佳化器
2814:選單
2816:最佳化查詢規劃
2822:執行模組
2824:主查詢結果
2826:步驟/後處理操作
2828:結果資料
2830:步驟
2902:加速器最佳化器
2904:第二子查詢/加速器子查詢
2906:第二子查詢規劃
2908:第一子查詢/殘餘子查詢
2916:最佳化殘餘規劃
2922:加速器執行模組
2940:中間表
3006:加速器查詢規劃
3012:查詢引擎規劃器
3100:系統
3102:處理器
3104:隨機存取記憶體/RAM
3106:開機唯讀記憶體
3108:大容量儲存裝置
3110:快閃記憶體
3112:匯流排
3114:模組
3120:網路連接
3200:內嵌資料簡化
3301:資料儲存裝置
3302:資料
3302A:資料
3302B:資料
3308:傳送
3310:重處理
3316:輸出
3401:資料儲存裝置
3404:輕處理
3406:第一子集
3408:傳送
3412:第二子集
3412B:第二子集
3414:視情況選用之處理/程序
3500:查詢
3500-A:篩選器-A
3500-B:篩選器-B
3500-C:頂部
3510:資料傳送
3600:查詢
3600-A:篩選器-A
3600-B:篩選器-B
3600-C:頂部
3610:傳送
3620:經篩選資料集/傳送/資料傳送
3701:項目
3702:項目
3703:項目
3704:項目
3705:項目
3706:項目
3707:項目
3708:項目
3710:項目
3713:項目
3720:資料
3721-A:項目
3721-B:「TLV」/篩選準則
3721-C:名稱
3721-D:薪資/給定準則
3722:篩選器-A/篩選
3724:第一組部分結果
3726:第一輕量部分功能/部分功能
3732:第二重型全功能
3736:分類
3738:經分類資料
3802:步驟
3804:步驟
3806:步驟
3808:步驟
3810:步驟
3812:步驟
3814:步驟
3816:步驟
3818:步驟
3820:步驟
F1:第一流
F2:第二流
S121:流程/第一輸入資料步驟
S122:流程
S123:消耗資料步驟
S124:消耗資料步驟
S125:步驟
S127:步驟
S1210:通道
S1211:通道
S1212:通道
S1213:通道
S2610:操作連接
S2612:操作連接
S2921:第一操作連接
S2922:操作連接
S3032:連接
S3033:連接
S3041:連接
併入於本發明中且構成本發明之一部分的附圖繪示各種所揭示實施例。在附圖中:
圖1係電腦(CPU)架構之實例。
圖2係圖形處理單元(GPU)架構之實例。
圖3係具有錯誤校正碼(ECC)能力之電腦記憶體之圖解表示。
圖4係用於將資料寫入至記憶體模組之程序之圖解表示。
圖5係用於自記憶體讀取之程序之圖解表示。
圖6係包括記憶體處理模組之架構之圖解表示。
圖7展示主機將指令、資料及/或其他輸入提供至記憶體器具且自該記憶體器具讀取輸出。
圖8係處理系統,尤其為用於資料分析之處理系統的實施方案之實例。
圖9係用於資料分析加速器之高級架構之實例。
圖10係用於資料分析加速器之軟體層之實例。
圖11係用於資料分析加速器之硬體層之實例。
圖12係用於資料分析加速器之儲存層及橋接器之實例。
圖13係用於資料分析加速器之網路連接之實例。
圖14係資料分析架構之高級實例。
圖15係資料分析加速器之實例。
圖16A係與表選擇器相關之方法之實例。
圖16B係符合所揭示實施例之資料預處理架構之圖解表示。
圖16C係藉由符合所揭示實施例之修剪邏輯而執行的表篩選操作之例示性實施方案的簡圖。
圖16D係藉由符合所揭示實施例之修剪邏輯而執行的表篩選操作之另一例示性實施方案的簡圖。
圖17基於修剪器之選擇器的例示性實施方案之實例。
圖18係修剪器多程架構之流程圖。
圖19係修剪器架構之實例。
圖20係狀態之間的轉變之實例。
圖21係部署於硬體層中之修剪器之表示。
圖22係部署於選擇器模組中之修剪器之表示。
圖23係修剪器組件之表示。
圖24係部署於選擇處理器上之修剪器組件之表示。
圖25係具有用以查詢規劃之加速器不可知擴展的資料分析架構之高級簡圖。
圖26A係資料庫查詢引擎(QE)之操作之表示。
圖26B係使用資料庫加速器之資料庫新查詢引擎(QE)2620之操作的表示。
圖27係符合例示性所揭示實施例之查詢引擎及加速器模組之操作的表示。
圖28係另一查詢引擎組態及操作之簡圖。
圖29係符合例示性所揭示實施例之查詢引擎組態及操作之簡圖。
圖30係符合例示性所揭示實施例之另一查詢引擎組態及操作之簡圖。
圖31係符合例示性所揭示實施例之經組態以實施加速器規劃器之例示性系統的部分方塊圖。
圖32提供根據例示性所揭示實施例之經組態以實施內嵌資料簡化之資料分析架構的圖解表示。
圖33表示資料處理之實例方法。
圖34提供根據例示性所揭示實施例之內嵌資料簡化系統及方法之圖解表示。
圖35表示資料處理之實例方法。
圖36A提供根據例示性所揭示實施例之內嵌資料簡化系統及方法之圖解表示。
圖36B提供根據例示性所揭示實施例之另一內嵌資料簡化系統及方法之圖解表示。
圖37提供根據例示性所揭示實施例之內嵌資料簡化系統流程之圖解表示。
圖38提供根據例示性所揭示實施例之表示用於內嵌資料簡化的方法之實例的流程圖。
1320:修剪器
1322:記憶體
1324:查詢處理器
1326:介面
1328:修剪邏輯
Claims (41)
- 一種資料預處理架構,包含: 一介面;以及 修剪邏輯,其經組態以:經由該介面自一查詢處理器接收至少一個篩選值;使用該至少一個篩選值以掃描儲存於一記憶體中之一資料表之列或行;產生識別駐存有該至少一個篩選值的該資料表之一組列或行的一選擇指示符;並且基於該選擇指示符而將一經篩選輸出提供至該查詢處理器。
- 如請求項1之資料預處理架構,其中該經篩選輸出包括由該修剪邏輯產生之該選擇指示符。
- 如請求項1之資料預處理架構,其中該查詢處理器經組態以使用由該修剪邏輯提供之該選擇指示符以自該記憶體擷取該資料表之一子集,該子集包括駐存有該至少一個篩選值的該資料表之一組經識別列或行。
- 如請求項1之資料預處理架構,其中該經篩選輸出包括該資料表之一子集,該子集包括駐存有該至少一個篩選值的該資料表之該組經識別列或行之至少一部分。
- 如請求項4之資料預處理架構,其中該資料表之該子集排除了不包括該至少一個篩選值之列。
- 如請求項4之資料預處理架構,其中該資料表之該子集排除了不包括該至少一個篩選值之行。
- 如請求項1之資料預處理架構,其中該至少一個篩選值表示一文字字串或一整數值中之至少一者。
- 如請求項1之資料預處理架構,其中該修剪邏輯包括比較器邏輯,該比較器邏輯經組態以將該至少一個篩選值與儲存於該資料表之列或行中的值進行比較。
- 如請求項1之資料預處理架構,其中該選擇指示符包括至少一個位元向量。
- 如請求項9之資料預處理架構,其中該修剪邏輯進一步包括一個或多個暫存器,該一個或多個暫存器經組態以儲存該至少一個位元向量。
- 如請求項1之資料預處理架構,其中該修剪邏輯經組態以藉由依序存取儲存於該資料表之該等列或行中的值來掃描該等列或行。
- 如請求項1之資料預處理架構,其中該修剪邏輯經組態以藉由依序存取儲存於該資料表之該等列或行中的值之區塊來掃描該等列或行。
- 如請求項12之資料預處理架構,其中該等值之區塊對應於單列或單行。
- 如請求項12之資料預處理架構,其中該等值之區塊對應於複數個列或複數個行。
- 如請求項1之資料預處理架構,其中該查詢處理器包括一CPU。
- 如請求項1之資料預處理架構,其中該記憶體包括一計算記憶體。
- 如請求項1之資料預處理架構,其中該修剪邏輯包括一場可程式化閘陣列。
- 如請求項1之資料預處理架構,其中該修剪邏輯包括一個或多個比較器。
- 如請求項1之資料預處理架構,其中該修剪邏輯在該記憶體本端。
- 如請求項1之資料預處理架構,其中該修剪邏輯在該記憶體外部。
- 如請求項1之資料預處理架構,其中該修剪邏輯部署於與該記憶體相關聯之一介面或控制器上。
- 如請求項1之資料預處理架構,其中該至少一個篩選值包括一第一篩選值及一第二篩選值,並且其中該修剪邏輯經組態以:使用該第一篩選值以掃描該資料表之該等列或行以產生識別駐存有該第一篩選值的該資料表之該組列或行的該選擇指示符;以及使用該選擇指示符以導引對由該選擇指示符識別之該組列或行的一改進掃描,且產生識別駐存有該第一篩選值及該第二篩選值兩者的該資料表之一第二組列或行的一改進選擇指示符。
- 如請求項22之資料預處理架構,其中該經篩選輸出限於駐存有該第一篩選值及該第二篩選值兩者的該資料表之該第二組列或行之一個或多個值。
- 如請求項22之資料預處理架構,其中該經篩選輸出係基於該改進選擇指示符。
- 如請求項22之資料預處理架構,其中該經篩選輸出包括該改進選擇指示符。
- 一種資料預處理架構,包含: 一介面;以及 修剪邏輯,其經組態以:經由該介面自一查詢處理器接收兩個或更多個篩選值;使用該兩個或更多個篩選值當中之一第一篩選值以掃描儲存於一記憶體中之一資料集之一第一元件群組;產生識別駐存有該第一篩選值的該資料集之一第一元件集的一第一選擇指示符;使用該兩個或更多個篩選值當中之一第二篩選值以掃描該資料集之一第二元件群組;產生識別駐存有該第一篩選值及該第二篩選值兩者的該資料集之一第二元件集的一改進選擇指示符;並且基於該改進選擇指示符而將一經篩選輸出提供至該查詢處理器。
- 如請求項26之資料預處理架構,其中該資料集經結構化。
- 如請求項26之資料預處理架構,其中該資料集以列及行排序。
- 如請求項26之資料預處理架構,其中該第一選擇指示符用於識別該資料集之該第二元件群組。
- 如請求項1之資料預處理架構,其中該修剪邏輯部署於選擇器上。
- 如請求項1之資料預處理架構,其中該修剪邏輯經部署為選擇處理器上之一處理模組。
- 如請求項1之資料預處理架構,其中來自該記憶體之輸入資料係藉由選擇處理器中之該修剪邏輯使用該選擇指示符進行篩選的。
- 如請求項1之資料預處理架構,進一步包含包括經組態具有各別至少一個篩選值之至少一個篩選器。
- 如請求項33之資料預處理架構,其中該至少一個篩選器中之一者或多者經部署為一個或多個第一處理器。
- 如請求項34之資料預處理架構,其中該一個或多個第一處理器實施一個或多個加速元件。
- 如請求項34之資料預處理架構,其中該等第一處理器中之一者或多者包括一選擇指示符更新產生器。
- 如請求項1之資料預處理架構,其中接收及提供係使用一網狀架構實施的。
- 如請求項1之資料預處理架構,其中接收及提供係使用一基於柱狀之資料格式實施的。
- 如請求項1之資料預處理架構,其中該選擇指示符更新產生器經組態以基於該至少一個篩選值中之至少一者而產生一選擇指示符更新。
- 如請求項1之資料預處理架構,其中該修剪邏輯係回應於接收到該選擇指示符更新而經組態以基於該選擇指示符及該所接收選擇指示符更新而產生一改進選擇指示符。
- 如請求項1之資料預處理架構,其中該選擇處理器經組態以基於該至少一個篩選值中之一第二篩選值而輸入來自該記憶體之一第二元件群組,且基於該改進選擇指示符而提供該第二元件群組之一經篩選輸出子集。
Applications Claiming Priority (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202263296645P | 2022-01-05 | 2022-01-05 | |
US63/296,645 | 2022-01-05 | ||
US202263304975P | 2022-01-31 | 2022-01-31 | |
US63/304,975 | 2022-01-31 | ||
US202263350579P | 2022-06-09 | 2022-06-09 | |
US63/350,579 | 2022-06-09 |
Publications (1)
Publication Number | Publication Date |
---|---|
TW202336577A true TW202336577A (zh) | 2023-09-16 |
Family
ID=85381438
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW112100428A TW202336577A (zh) | 2022-01-05 | 2023-01-05 | 處理系統 |
Country Status (2)
Country | Link |
---|---|
TW (1) | TW202336577A (zh) |
WO (1) | WO2023131869A1 (zh) |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10803066B2 (en) * | 2010-06-29 | 2020-10-13 | Teradata Us, Inc. | Methods and systems for hardware acceleration of database operations and queries for a versioned database based on multiple hardware accelerators |
US9727606B2 (en) * | 2012-08-20 | 2017-08-08 | Oracle International Corporation | Hardware implementation of the filter/project operations |
CN107559403B (zh) | 2016-06-30 | 2020-05-19 | 比亚迪股份有限公司 | 一种谐波减速器柔轮及其制造方法 |
CN107247551A (zh) | 2017-06-30 | 2017-10-13 | 京东方科技集团股份有限公司 | 亮度调节方法及装置 |
US20190188132A1 (en) * | 2017-12-18 | 2019-06-20 | Intel Corporation | Sql scan hardware accelerator |
CN109036522B (zh) | 2018-06-28 | 2021-08-17 | 深圳视见医疗科技有限公司 | 图像处理方法、装置、设备及可读存储介质 |
-
2023
- 2023-01-05 TW TW112100428A patent/TW202336577A/zh unknown
- 2023-01-05 WO PCT/IB2023/000018 patent/WO2023131869A1/en unknown
Also Published As
Publication number | Publication date |
---|---|
WO2023131869A1 (en) | 2023-07-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Raasveldt et al. | Duckdb: an embeddable analytical database | |
US10521427B2 (en) | Managing data queries | |
Borkar et al. | Hyracks: A flexible and extensible foundation for data-intensive computing | |
AU2013335229B2 (en) | Profiling data with source tracking | |
US20160055191A1 (en) | Executing constant time relational queries against structured and semi-structured data | |
US10127275B2 (en) | Mapping query operations in database systems to hardware based query accelerators | |
Loebman et al. | Analyzing massive astrophysical datasets: Can Pig/Hadoop or a relational DBMS help? | |
US10831773B2 (en) | Method and system for parallelization of ingestion of large data sets | |
CN104685499B (zh) | 执行过滤和投影操作的方法、系统和计算机可读介质 | |
WO2010005447A1 (en) | Methods and systems for generating query plans that are compatible for execution in hardware | |
JP2015532749A (ja) | 集約/グループ化動作:フィルタリング方法のハードウェア実装 | |
CN103597472A (zh) | 旁路信息传递 | |
Chattopadhyay et al. | Procella: Unifying serving and analytical data at YouTube | |
US11797337B2 (en) | Data processing management methods for imaging applications | |
US20230222126A1 (en) | Inline data reduction | |
US10108745B2 (en) | Query processing for XML data using big data technology | |
US11809421B2 (en) | System and method for data analytics | |
TW202336577A (zh) | 處理系統 | |
Solodovnikova et al. | Handling evolution in big data architectures | |
Kalavri | Performance optimization techniques and tools for distributed graph processing | |
US20200311076A1 (en) | Database partition pruning using dependency graph | |
AU2017202899B2 (en) | Managing data queries | |
Adji et al. | Enhanced graph transforming algorithm to solve transitive dependency between vertices | |
Becla et al. | Data Management Database Design | |
KR20240050268A (ko) | 스파크 오픈 소스 프레임워크 기반 유전체 데이터 처리 장치 및 방법 |