決策樹是由決策節(jié)點(diǎn)和左和右子樹和/或葉組成的二進(jìn)制搜索樹。決策節(jié)點(diǎn)包括要被做出的決策。分支從決策節(jié)點(diǎn)通向其他決策節(jié)點(diǎn)或葉節(jié)點(diǎn),并且對(duì)分支之一的選擇基于在決策節(jié)點(diǎn)處做出的決策。示例決策包括對(duì)兩個(gè)值(諸如特征值和閾值)進(jìn)行比較。如果特征值小于或等于閾值,則選擇左子樹;如果特征值不小于或等于閾值,則選擇右子樹。分支前進(jìn)到下一節(jié)點(diǎn),并且如果下一節(jié)點(diǎn)是決策節(jié)點(diǎn),則做出另一決策等,直到選擇通向葉節(jié)點(diǎn)的分支。葉節(jié)點(diǎn)表示決策樹的輸出或端點(diǎn)。示例輸出是針對(duì)決策樹的輸出值或得分。該過程被稱為遍歷決策樹。
在其他應(yīng)用中,決策樹用于對(duì)文檔搜索中的文檔進(jìn)行排名。在一個(gè)示例中,決策樹用于計(jì)算特性項(xiàng)(例如網(wǎng)頁)與特定搜索查詢的相關(guān)性。獲得候選搜索結(jié)果文檔的初始集合,并且產(chǎn)生針對(duì)候選搜索結(jié)果文檔的特征向量。該特征向量表示候選搜索結(jié)果文檔的各方面(例如文檔統(tǒng)計(jì))。特征的一個(gè)示例是搜索查詢字在候選文檔中出現(xiàn)的次數(shù)。每個(gè)決策樹節(jié)點(diǎn)包括閾值和特征標(biāo)識(shí)符,其可以用于查找針對(duì)候選搜索結(jié)果文檔的特征值。遍歷決策樹,并且樹遍歷過程最終到達(dá)葉節(jié)點(diǎn)并且輸出相關(guān)聯(lián)的得分。該得分(或如果使用超過一個(gè)決策樹,則多個(gè)得分)用于確定候選搜索結(jié)果的相關(guān)性。多個(gè)文檔的相對(duì)得分用于對(duì)文檔進(jìn)行排名。
除搜索之外,決策樹具有各種用途。決策樹用于實(shí)現(xiàn)手勢(shì)識(shí)別、語音識(shí)別、數(shù)據(jù)挖掘以及其他類型的計(jì)算。
技術(shù)實(shí)現(xiàn)要素:
提供該發(fā)明內(nèi)容以引入在下文詳細(xì)描述中進(jìn)一步描述的本公開的簡(jiǎn)化概念。該發(fā)明內(nèi)容不旨在標(biāo)識(shí)所要求變化的主題的關(guān)鍵特征,其也不旨在用于確定所要求變化的主題的范圍。
本描述的實(shí)施例包括決策樹評(píng)分的硬件實(shí)施方式,其使得比基于傳統(tǒng)軟件的決策樹評(píng)分更快的決策樹評(píng)分。決策樹評(píng)分系統(tǒng)的芯片上架構(gòu)包括在一個(gè)或多個(gè)專用電路或可編程邏輯電路中并行實(shí)現(xiàn)的多個(gè)決策樹處理器。在芯片上架構(gòu)的頂層處是決策樹評(píng)分器(DTS),其從上游計(jì)算系統(tǒng)主機(jī)或處理系統(tǒng)接收特征向量(例如,特征值的集合),將特征向量發(fā)送到第一決策樹群集(DTC),從決策樹群集接收得分,以及將結(jié)果輸出到主機(jī)或其他下游系統(tǒng)。在層次結(jié)構(gòu)的下一層處,多個(gè)決策樹群集(DTC)在其之間分布特征向量,并且處理得分并將得分從決策樹處理器傳播到鄰近的DTC和DTS。DTC包括一個(gè)或多個(gè)決策樹處理器和一個(gè)或多個(gè)特征存儲(chǔ)區(qū)片(FST)。特征值和閾值壓縮降低了針對(duì)決策樹評(píng)分系統(tǒng)的帶寬和存儲(chǔ)要求。
附圖說明
參考附圖闡述了詳細(xì)描述。在附圖中,參考標(biāo)記中的最左邊的(一個(gè)或多個(gè))數(shù)字標(biāo)識(shí)參考標(biāo)記首次出現(xiàn)的附圖。不同的附圖中的相同參考標(biāo)記的使用指示類似或相同的項(xiàng)。
圖1是根據(jù)各個(gè)實(shí)施例的包括一個(gè)或多個(gè)硬件實(shí)現(xiàn)的決策樹評(píng)分器的示例決策樹評(píng)分系統(tǒng)的框圖。
圖2圖示了根據(jù)本公開的各個(gè)實(shí)施例編碼的決策樹。
圖3圖示了實(shí)數(shù)線上的唯一的閾值的示例列表。
圖4圖示了根據(jù)各個(gè)實(shí)施例的決策樹評(píng)分器的示例架構(gòu)。
圖5圖示了根據(jù)各個(gè)實(shí)施例的決策樹群集的示例架構(gòu)。
圖6圖示了根據(jù)各個(gè)實(shí)施例的決策樹處理器的多級(jí)、多線程、管線樹遍歷實(shí)施方式。
圖7描繪了根據(jù)各個(gè)實(shí)施例的示出執(zhí)行決策樹節(jié)點(diǎn)的示例過程的流程圖。
圖8圖示了根據(jù)各個(gè)實(shí)施例的通過決策樹評(píng)分器對(duì)多個(gè)決策樹進(jìn)行評(píng)分的過程。
圖9圖示了根據(jù)各個(gè)實(shí)施例的通過決策樹群集對(duì)多個(gè)決策樹進(jìn)行評(píng)分的過程。
圖10圖示了根據(jù)各個(gè)實(shí)施例的對(duì)多個(gè)決策樹的閾值進(jìn)行編碼的過程。
圖11圖示了根據(jù)各個(gè)實(shí)施例的對(duì)特征值的集合進(jìn)行編碼的過程。
圖12是可用于執(zhí)行本文所描述的各種方法的示例計(jì)算系統(tǒng)的框圖。
具體實(shí)施方式
概述
本描述的實(shí)施例包括決策樹評(píng)分的硬件實(shí)施方式,其使得比基于傳統(tǒng)的軟件的決策樹評(píng)分更快決策樹得分。該硬件實(shí)施方式包括被實(shí)現(xiàn)為電路的、執(zhí)行決策樹程序的一個(gè)或多個(gè)決策樹處理器。決策樹程序是已經(jīng)被轉(zhuǎn)換為由決策樹處理器可執(zhí)行的程序或其他數(shù)據(jù)的決策樹。決策樹程序包括決策樹表,其包括針對(duì)決策樹的各個(gè)決策節(jié)點(diǎn)、特征標(biāo)識(shí)符、閾值和輸出值。決策樹處理器的一些實(shí)施例以多級(jí)和/或多線程方式遍歷決策樹。在多線程實(shí)施例中,決策樹處理器的每級(jí)執(zhí)行不同的決策樹線程;因此,n級(jí)多線程決策樹處理器并發(fā)地執(zhí)行每周期多達(dá)n個(gè)決策樹的部分。
實(shí)施例包括用于將決策樹編碼、壓縮和/或編譯為在決策樹處理器內(nèi)執(zhí)行的過程、系統(tǒng)和裝置。在各個(gè)實(shí)施例中,通過布置節(jié)點(diǎn)從決策樹消除指針,使得在決策樹中節(jié)點(diǎn)中具有其之間的分支的一些節(jié)點(diǎn)鄰近決策樹表中的特定節(jié)點(diǎn)。利用下一節(jié)點(diǎn)數(shù)據(jù)(諸如偏移值或增量值)標(biāo)識(shí)其他節(jié)點(diǎn)。葉值是決策樹節(jié)點(diǎn)表示的一部分,而不是不同的葉節(jié)點(diǎn)條目的一部分。
在一些實(shí)施例中,特征值和閾值壓縮降低了針對(duì)決策樹評(píng)分系統(tǒng)的帶寬和存儲(chǔ)要求,同時(shí)還增加了實(shí)施例能夠處理的工作量的大小。在本描述的一些實(shí)施例中,針對(duì)在一個(gè)或多個(gè)決策樹中與特定特征相比較的每個(gè)閾值創(chuàng)建分類列表,并且將閾值索引分配給閾值。雖然可能閾值的總數(shù)是大的(例如,在一些實(shí)施例中通過32位浮點(diǎn)數(shù)來表示),但是針對(duì)多個(gè)決策樹中的特定特征的實(shí)際閾值的總數(shù)實(shí)際上小得多,通常不超過255個(gè)閾值(但是更大數(shù)目的閾值也是可能的)。創(chuàng)建密集或非密集定點(diǎn)小整數(shù)閾值索引。閾值索引可以是從0到閾值的總數(shù)的數(shù)字,并且因此可以由4位、8位或其他n位固定點(diǎn)值表示。在其他實(shí)施例中,閾值索引可以是負(fù)數(shù),并且可以包括不連續(xù)的整數(shù)值,諸如0、2、4、6或其他不連續(xù)的整數(shù)值。特征值也可以編碼為n位固定點(diǎn)特征值索引,使得閾值索引與特征值索引的比較相當(dāng)于原始非壓縮閾值與原始非壓縮特征值的比較。
在一些實(shí)施例中,多個(gè)決策樹處理器被并行實(shí)現(xiàn)在一個(gè)或多個(gè)專用電路或可編程邏輯電路上。在一些實(shí)施例中,多個(gè)決策樹處理器執(zhí)行或關(guān)于共同特征向量并發(fā)地執(zhí)行決策樹。在芯片上架構(gòu)的頂層處是決策樹評(píng)分器(DTS),其從上游計(jì)算系統(tǒng)主機(jī)或處理系統(tǒng)接收特征向量(例如,特征值的集合),將特征向量發(fā)送到第一決策樹群集(DTC),從決策樹群集接收得分,并且將結(jié)果輸出到主機(jī)或其他下游系統(tǒng)。在層次結(jié)構(gòu)的下一層處,多個(gè)決策樹群集(DTC)在其之間分布特征向量并且將得分從決策樹處理器傳播到鄰近的DTC和DTS。在層次結(jié)構(gòu)的下一層處,DTC包括一個(gè)或多個(gè)決策樹處理器和一個(gè)或多個(gè)特征存儲(chǔ)區(qū)片(FST)。該決策樹處理器可以是多線程以關(guān)于共同特征向量并發(fā)地執(zhí)行多個(gè)決策樹。FST將要被評(píng)分的特征向量存儲(chǔ)在多個(gè)決策樹上,并且在一些實(shí)施例中被雙緩沖以使得特征集能夠?qū)懙紽ST,同時(shí)另一特征集由決策樹處理器訪問以用于評(píng)分。
本文所描述的實(shí)施例服從專用硬件中(諸如ASIC中)或可編程邏輯器件中(諸如FPGA中)的實(shí)施方式。實(shí)施例的各方面也服從多核處理器、芯片上系統(tǒng)(SoC)(例如,SoC上的一個(gè)或多個(gè)決策樹評(píng)分核心)和/或具有擴(kuò)展的指令集的通用處理器,并且因此能夠響應(yīng)于一個(gè)或多個(gè)原子處理器指令而部分地或全部地執(zhí)行決策樹。可以以多種方式實(shí)現(xiàn)本文所描述的設(shè)備、過程和系統(tǒng)。下文參考以下附圖提供示例實(shí)施方式。
示例決策樹評(píng)分系統(tǒng)
圖1是根據(jù)各個(gè)實(shí)施例的包括一個(gè)或多個(gè)硬件實(shí)現(xiàn)的決策樹評(píng)分器102的示例決策樹評(píng)分系統(tǒng)100的框圖。主機(jī)104包括決策樹編碼器106,其用于將決策樹編碼為模型上下文108以用于在決策樹評(píng)分器102上執(zhí)行。如下文更詳細(xì)描述的,決策樹編碼器106使用可變長(zhǎng)度節(jié)點(diǎn)表示決策樹,其中,利用鄰接和偏移消除子樹指針,葉值被包括在節(jié)點(diǎn)表示中,并且閾值被編碼為閾值索引值。決策樹編碼器106降低決策樹的大小以使得其中的更多個(gè)能夠被加載到?jīng)Q策樹評(píng)分器102上。決策樹編碼器106還可以或備選地使用其他壓縮技術(shù)來壓縮模型上下文108的決策樹數(shù)據(jù)(或編碼的決策樹數(shù)據(jù))。在這些實(shí)施例中,決策樹評(píng)分器102或其他芯片上邏輯被配置為將壓縮的決策樹或編碼的決策樹數(shù)據(jù)解壓縮以用于在決策樹評(píng)分器102上進(jìn)行評(píng)分。
主機(jī)104還包括特征向量編碼器110,其對(duì)特征向量112內(nèi)的特征值進(jìn)行編碼以降低決策樹評(píng)分器102的帶寬和存儲(chǔ)要求,使特征向量112與編碼的模型上下文108相兼容,并且將模型上下文108和特征向量112放置到更容易由如本文中的各個(gè)實(shí)施例所描述的專用硬件處理的形式中。如該詳細(xì)描述內(nèi)的其他地方更詳細(xì)描述的,特征向量編碼器110選擇針對(duì)特征的特征索引值,使得特征索引值與模型上下文108內(nèi)的閾值索引值的比較相當(dāng)于對(duì)應(yīng)的特征值和閾值的比較。
主機(jī)104包括決策樹評(píng)分調(diào)度器114,其調(diào)度決策樹評(píng)分作業(yè)。主機(jī)104接收或確定特征向量112的各種各個(gè)特征向量將對(duì)模型上下文108的各個(gè)特征向量進(jìn)行評(píng)分。決策樹評(píng)分作業(yè)的示例集合包括:
特征向量1/模型上下文A
特征向量2/模型上下文B
特征向量3/模型上下文A
特征向量4/模型上下文B
由于通常將新模型上下文加載到?jīng)Q策樹評(píng)分器102中比將新特征向量加載到?jīng)Q策樹評(píng)分器102中花費(fèi)更多時(shí)間,因而決策樹評(píng)分調(diào)度器114將決策評(píng)分作業(yè)重新排列以降低將新模型上下文108加載到?jīng)Q策樹評(píng)分器102中的次數(shù)。繼續(xù)以上示例,決策樹評(píng)分作業(yè)被重新排列如下:
特征向量1/模型上下文A
特征向量3/模型上下文A
特征向量2/模型上下文B
特征向量4/模型上下文B
在搜索領(lǐng)域中,模型上下文是與所執(zhí)行的搜索的類型相關(guān)聯(lián)的決策樹的集合。利用不同的決策樹的集合的搜索上下文的示例是語言(可以使用以德語查詢執(zhí)行搜索的不同的模型上下文執(zhí)行英語查詢的搜索)、圖像搜索、新搜索、視頻搜索等。其他搜索上下文可以要求不同的模型上下文。
主機(jī)104被配置為經(jīng)由數(shù)據(jù)路徑接口(諸如接口118和120)通信地耦合到一個(gè)或多個(gè)專用設(shè)備或可編程邏輯設(shè)備116。在各個(gè)實(shí)施例中,接口118和120是外圍組件接口Express(PCI-Express)接口,但是在不脫離實(shí)施例的范圍的情況下,可以使用其他接口類型和規(guī)格。接口類型的確定可以基于接口帶寬目標(biāo),其可以進(jìn)而基于針對(duì)決策樹評(píng)分系統(tǒng)100的吞吐量目標(biāo)。在特定示例中,其中目標(biāo)處理速度是每搜索文檔評(píng)分一微秒,使用本文所描述的決策樹和特征壓縮技術(shù)導(dǎo)致每特征向量(例如,每候選搜索結(jié)果文檔)近似2-8KB或每秒近似2-8GB。PCI-Express適于該目標(biāo),但是其他接口類型和規(guī)格也可以適于該目標(biāo)或其他目標(biāo)。在不脫離實(shí)施例的范圍的情況下,還可以使用多個(gè)接口代替單個(gè)高速接口。
如下文更詳細(xì)描述的,主機(jī)104可以被實(shí)現(xiàn)為由計(jì)算系統(tǒng)的一個(gè)或多個(gè)通用處理器可執(zhí)行的多個(gè)編程指令。然而,主機(jī)104的一個(gè)或多個(gè)方面可以被實(shí)現(xiàn)在專用電路或可編程邏輯電路(諸如ASIC芯片或FPGA芯片)。
決策樹評(píng)分器102包括一個(gè)或多個(gè)決策樹群集122。決策樹群集122被配置為在其之間分布模型上下文108和特征向量112。備選地或者附加地,決策樹評(píng)分器102可以包括用于貫穿決策樹評(píng)分器102傳遞模型上下文108和/或特征向量112的互連網(wǎng)絡(luò)。決策樹群集122還被配置為處理和傳播來自鄰近的決策樹群集122以及來自決策樹群集122內(nèi)的決策樹處理器124的決策樹得分。決策樹群集122被配置為處理從決策樹處理器124和鄰近的決策樹群集所接收的得分-其可以包括對(duì)決策樹得分進(jìn)行求和-并且將經(jīng)處理的得分(例如求和的得分)傳播到其他鄰近的決策樹群集122,如該詳細(xì)描述內(nèi)的其他地方更詳細(xì)描述的。決策樹評(píng)分器102被配置為從決策樹群集122之一接收針對(duì)決策樹評(píng)分作業(yè)的最終得分(例如,標(biāo)量或向量)并且將得分輸出給主機(jī)104或另一下游設(shè)備。
決策樹處理器124包括用于執(zhí)行一個(gè)或多個(gè)模型上下文108的決策樹的電路,諸如并行并且并發(fā)地針對(duì)特征向量112中的共同特征向量或針對(duì)特征向量112中的不同特征向量,這取決于實(shí)施方式。特征存儲(chǔ)庫126中的不同特征存儲(chǔ)庫可以存儲(chǔ)特征向量112的共同特征向量或特征向量112中的不同特征向量。每個(gè)決策樹群集122內(nèi)的特征存儲(chǔ)庫126可以存儲(chǔ)特征向量112中的相同的或不同的特征向量112。
如本文所使用的,決策樹處理器124包括用于對(duì)決策樹進(jìn)行評(píng)分的電路。決策樹處理器124可以包括用于對(duì)決策樹和決策樹代碼本身進(jìn)行評(píng)分的電路,其被實(shí)現(xiàn)為決策樹表并且被存儲(chǔ)在對(duì)決策樹處理器124可訪問的某個(gè)存儲(chǔ)器中。一個(gè)或多個(gè)決策樹表可以被硬編碼到?jīng)Q策樹處理器124中,被存儲(chǔ)在決策樹處理器124內(nèi)的存儲(chǔ)器上,或被存儲(chǔ)在與決策樹處理器124相關(guān)聯(lián)并且通信地耦合到?jīng)Q策樹處理器124的存儲(chǔ)器上。存儲(chǔ)決策樹表的存儲(chǔ)器可以是共享的或?qū)S么鎯?chǔ)的,并且可以是隨機(jī)存取存儲(chǔ)器(RAM)、閃速存儲(chǔ)器、只讀存儲(chǔ)器(ROM)或其他存儲(chǔ)器類型。存儲(chǔ)決策樹表的存儲(chǔ)器可以是管芯上的(諸如管芯上存儲(chǔ)器)或可以是附接存儲(chǔ)器上的芯片外的,諸如可以經(jīng)由高速存儲(chǔ)器接口通信地耦合。模型上下文可以共同駐留在共享或?qū)S么鎯?chǔ)器內(nèi)。在一些實(shí)施例中,主機(jī)104可以將模型上下文108提供給決策樹評(píng)分器102和/或芯片上的或附接的存儲(chǔ)器。當(dāng)調(diào)度工作量時(shí),主機(jī)104可以向決策樹評(píng)分器102提供應(yīng)當(dāng)加載或由決策樹處理器124訪問和執(zhí)行的模型上下文108的指示。在一些實(shí)施例中,可以存在存儲(chǔ)決策樹表的兩層存儲(chǔ)器;第一層存儲(chǔ)器(其可以是芯片上的或附接的存儲(chǔ)器,并且可以共享或?qū)S糜谝粋€(gè)或多個(gè)決策樹處理器124)利用根據(jù)當(dāng)前工作量要求待執(zhí)行的特定(一個(gè)或多個(gè))決策樹表被加載或可加載。第二層存儲(chǔ)器(其可以是芯片上的或在附接存儲(chǔ)器中、共享或?qū)S糜谝粋€(gè)或多個(gè)決策樹處理器124)可以存儲(chǔ)一個(gè)或多個(gè)共同駐留的模型上下文,其全部或部分可加載到第一層決策樹表存儲(chǔ)器中。
主機(jī)104可以將特征向量112中的共同特征向量提供給多個(gè)專用設(shè)備或可編程邏輯設(shè)備116,并且還將單個(gè)模型上下文108的決策樹表提供給多個(gè)專用設(shè)備或可編程邏輯設(shè)備116。因此,跨越多個(gè)專用設(shè)備或可編程邏輯設(shè)備116的單獨(dú)的決策樹群集122和決策樹處理器124可以對(duì)單個(gè)模型上下文108針對(duì)特征向量112中的共同特征向量的決策樹進(jìn)行評(píng)分。來自多個(gè)專用設(shè)備或可編程邏輯設(shè)備116中的每個(gè)設(shè)備的評(píng)分?jǐn)?shù)據(jù)可以在如該詳細(xì)描述內(nèi)的其他地方所描述的多個(gè)專用設(shè)備或可編程邏輯設(shè)備116中的每個(gè)設(shè)備內(nèi)傳播,并且還傳遞回到主機(jī)104。在一些實(shí)施例中,評(píng)分?jǐn)?shù)據(jù)可以從第一專用設(shè)備或可編程邏輯設(shè)備116傳遞到另一專用設(shè)備或可編程邏輯設(shè)備116,其可以進(jìn)一步傳播得分?jǐn)?shù)據(jù)(諸如通過求和或附加得分,或附加得分的總和)以產(chǎn)生針對(duì)專用設(shè)備或可編程邏輯設(shè)備116二者的組合的得分?jǐn)?shù)據(jù)。
在不脫離實(shí)施例的范圍的情況下,處理得分?jǐn)?shù)據(jù)的其他方法也是可能的。例如,每個(gè)決策樹評(píng)分器102可以從決策樹處理器124和/或決策樹評(píng)分器102內(nèi)的決策樹群集122接收得分或得分的總和的列表,并且將最后的總和值提供給主機(jī)104、另一可編程邏輯設(shè)備116或某個(gè)其他下游設(shè)備。決策樹評(píng)分器102可以將得分(或得分的總和)提供給主機(jī)104、另一可編程邏輯設(shè)備116或其他下游設(shè)備。主機(jī)104、其他可編程邏輯設(shè)備116或其他下游設(shè)備可以執(zhí)行特征向量112的最終評(píng)分,諸如通過對(duì)得分求和或執(zhí)行某個(gè)其他算法,以諸如基于來自多個(gè)專用設(shè)備或可編程邏輯設(shè)備116中的一個(gè)或多個(gè)設(shè)備的得分?jǐn)?shù)據(jù),確定針對(duì)特征向量112的最終得分。
在一些實(shí)施例中,專用設(shè)備116或可編程邏輯設(shè)備116可以是或被包括在以下各項(xiàng)中的一個(gè)或多個(gè)中:專用集成電路(ASIC)、可編程邏輯器件諸如現(xiàn)場(chǎng)可編程門陣列(FPGA)、片上系統(tǒng)(SoC)、作為具有對(duì)決策樹評(píng)分的專用部分的通用處理器的一部分、某個(gè)其他邏輯器件或以上內(nèi)容的某種組合。
具有擴(kuò)展的指令集的通用處理器
在一些實(shí)施例中,擴(kuò)展通用處理器的指令集架構(gòu)以包括決策樹遍歷、評(píng)分指令和狀態(tài)。在一些實(shí)施例中,指令集包括遍歷決策樹中的一個(gè)節(jié)點(diǎn)的指令。在一些實(shí)施例中,擴(kuò)展的指令集包括用于遍歷多個(gè)節(jié)點(diǎn)或遍歷從根(頂節(jié)點(diǎn))到葉的整個(gè)決策樹的指令。
由具有擴(kuò)展的指令集的通用處理器可用于遍歷決策樹的狀態(tài)包括決策樹節(jié)點(diǎn)和特征向量數(shù)據(jù)的表示??梢砸詳?shù)據(jù)結(jié)構(gòu)、以可執(zhí)行指令或以某種其他形式表示決策樹節(jié)點(diǎn)。作為數(shù)據(jù)結(jié)構(gòu),決策樹可以表示為包括一個(gè)或多個(gè)節(jié)點(diǎn)的樹,該節(jié)點(diǎn)包括特征標(biāo)識(shí)符、閾值和左字樹數(shù)據(jù)和右子樹數(shù)據(jù),其可以標(biāo)識(shí)左(相應(yīng)右)子樹節(jié)點(diǎn)或左(相應(yīng)右)葉節(jié)點(diǎn)或葉評(píng)分?jǐn)?shù)據(jù)。特定節(jié)點(diǎn)的數(shù)據(jù)可以捆綁到鄰近的字節(jié)中,例如記錄或“結(jié)構(gòu)”或“類”或可以跨表散布。在決策樹節(jié)點(diǎn)被表示為數(shù)據(jù)結(jié)構(gòu)的情況下,通過數(shù)據(jù)值(例如,節(jié)點(diǎn)的索引或指針(機(jī)器地址))標(biāo)識(shí)樹節(jié)點(diǎn)。響應(yīng)于遍歷一個(gè)或多個(gè)節(jié)點(diǎn)的指令而遍歷樹節(jié)點(diǎn)包括:以樹節(jié)點(diǎn)標(biāo)識(shí)符開始、取回其標(biāo)識(shí)的特征、將其與節(jié)點(diǎn)的閾值相比較,并且使用比較結(jié)果來確定左子樹或右子樹的樹節(jié)點(diǎn)標(biāo)識(shí)符或右或左葉/葉值。在一些實(shí)施例中,遍歷節(jié)點(diǎn)的指令(在本文中被稱為NODEWALK指令)可以采用兩個(gè)參數(shù),例如包含指向數(shù)節(jié)點(diǎn)的指針的寄存器和包含指向RAM中的特征向量的指針的寄存器,并且可以產(chǎn)生兩個(gè)值,例如,包含指向左或右子樹(如果非葉節(jié)點(diǎn))的指針或者包含輸出值(如果葉節(jié)點(diǎn))的寄存器,以及包含如果NODEWALK已經(jīng)到達(dá)葉值(終止樹遍歷)所設(shè)定的標(biāo)記的條件代碼寄存器。在匯編語言中,樹遍歷包括:
;利用決策樹的根節(jié)點(diǎn)的地址加載r1
;利用特征向量的地址加載r2
repeat:
rl=NODEWALK rl,r2;從一個(gè)節(jié)點(diǎn)遍歷到其左或右子樹節(jié)點(diǎn)
JNE repeat;重復(fù),直到到達(dá)葉
;到達(dá)葉;葉輸出值處于r1
NODEWALK的另一實(shí)施例捆綁循環(huán)測(cè)試并且跳到一個(gè)指令中:
;利用決策樹的根節(jié)點(diǎn)的地址加載
;利用特征向量的地址加載r2
repeat2:
rl=NODEWALKREPEAT rl,r2,repeat2;遍歷一個(gè)節(jié)點(diǎn),
重復(fù);直到;到達(dá)葉
;到達(dá)葉;葉輸出值處于r1
另一實(shí)施例遍歷一個(gè)指令中的整個(gè)樹:
;利用決策樹的根節(jié)點(diǎn)的地址加載
;利用特征向量的地址加載r2
r3=TREEWALK rl,r2;遍歷樹
;葉輸出值處于r1
在一些實(shí)施例中,決策樹被表示為由實(shí)現(xiàn)決策樹遍歷指令的處理器執(zhí)行的一系列樹遍歷指令。該指令對(duì)應(yīng)于決策樹中的一個(gè)節(jié)點(diǎn)。該指令(被表示為比特串)包括比特字段,其包括特征標(biāo)識(shí)符、閾值和左和右子樹節(jié)點(diǎn)和/或葉和葉值的標(biāo)識(shí)符。在該實(shí)施例中,利用指令(機(jī)器代碼)地址標(biāo)識(shí)樹節(jié)點(diǎn)。因此,樹遍歷包括執(zhí)行改變程序控制流以跳到針對(duì)左子樹或右子樹的代碼的樹代碼遍歷指令。
例如,如果決策樹由兩個(gè)節(jié)點(diǎn)組成:
這可以由該程序表示:
其中,NODE指令編碼:
leaf-output-value=NODE#feature-identifier,#threshold-value,
#left-subtree-address,#right-subtree-address,#left-leaf-output-value,
#right-leaf-output-value,#leaf-code-address,feature-vector-address-r
egister
#字段是指令的“立即(immediate)”值比特字段。
在該實(shí)施例中,通過執(zhí)行其第一NODE指令對(duì)決策樹進(jìn)行評(píng)分,其跳到下一左或右NODE指令等直到其到達(dá)葉。根NODE指令的比特字段對(duì)特征標(biāo)識(shí)符(10)、閾值(41)、左子樹(“l(fā)eft”)、右子樹(nil)、左葉值(nil)和右葉值(c)進(jìn)行編碼。在該示例中,如果所標(biāo)識(shí)的特征小于或等于閾值tl,那么在地址“左”處控制傳送到第二NODE指令。該指令的比特字段對(duì)其特征標(biāo)識(shí)符(20)、閾值(t2)、左和右子樹(nil)和左和右葉輸出值(相應(yīng)地a和b)進(jìn)行編碼。如果節(jié)點(diǎn)指令前進(jìn)到葉,那么其向指定地址(結(jié)束)傳送控制并且在輸出寄存器中獲得葉索引或輸出值。
在其他實(shí)施例中,樹遍歷指令可以使用隱性寄存器、專用寄存器或存儲(chǔ)器位置來標(biāo)識(shí)特征向量和葉節(jié)點(diǎn)地址。其他實(shí)施例可以采用可變長(zhǎng)度指令編碼來壓縮或消除未被用于表示特定決策樹節(jié)點(diǎn)的指令比特字段(諸如nil子樹字段)。其他實(shí)施例可以利用存儲(chǔ)器中的指令的鄰接來以與先前所描述的方式類似的方式壓縮或消除比特字段(諸如左子樹地址或右子樹地址)。
在一些實(shí)施例中,決策樹數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)器或決策樹指令存儲(chǔ)器可以被集成到通用處理器中、被外部地存儲(chǔ)到其中或可以通過存儲(chǔ)器高速緩存層次結(jié)構(gòu)耦合到外部存儲(chǔ)器。
具有決策樹遍歷、評(píng)分指令和狀態(tài)的通用處理器還可以耦合到特征存儲(chǔ)RAM。在一些實(shí)施例中,可以通過如該詳細(xì)描述內(nèi)的其他地方所描述的特征向量分布網(wǎng)絡(luò)自動(dòng)地加載特征存儲(chǔ)RAM。具體而言,在不要求通過具有用于遍歷決策樹的擴(kuò)展的指令集的通用處理器執(zhí)行任何指令的的情況下,可以通過特征向量分布網(wǎng)絡(luò)將新特征數(shù)據(jù)加載到該RAM中。這可以節(jié)省對(duì)決策樹評(píng)分所要求的時(shí)間和能量。
具有決策樹遍歷、評(píng)分指令和狀態(tài)的通用處理器也可以耦合到得分聚合系統(tǒng)。這可以包括附加寄存器、線程狀態(tài)、加法器樹網(wǎng)絡(luò),以累積起由于如NODEWALK、TREEWALK或NODE的指令的葉輸出值(得分)以將節(jié)點(diǎn)遍歷到葉節(jié)點(diǎn)。這也可以節(jié)省對(duì)決策樹評(píng)分所要求的時(shí)間和能量。
示例決策樹編碼
圖2圖示了根據(jù)本公開的各個(gè)實(shí)施例編碼的決策樹。在圖2中圖示了示例決策樹200。其包括多個(gè)決策節(jié)點(diǎn)202和多個(gè)葉節(jié)點(diǎn)204。決策節(jié)點(diǎn)202包括各種特征,包括特征標(biāo)識(shí)符(其可以是地址)、索引號(hào)、參考數(shù)字、或標(biāo)識(shí)在決策節(jié)點(diǎn)202處被比較的特征的其他標(biāo)識(shí)符。該決策節(jié)點(diǎn)202還包括與特征值(經(jīng)由特征標(biāo)識(shí)符參考的)相比較的閾值。該決策節(jié)點(diǎn)202還包括左分支指針和右分支指針,其指示其中定位下一節(jié)點(diǎn)的位置。每個(gè)決策節(jié)點(diǎn)202表示比較;例如,節(jié)點(diǎn)數(shù)字7示出特征值(被標(biāo)識(shí)為特征“FI”)與閾值數(shù)字10相比較。在不脫離實(shí)施例的范圍的情況下,其他比較是可能的。
本文所描述的實(shí)施例指代左分支、右分支、左節(jié)點(diǎn)、右節(jié)點(diǎn)等。但是僅出于描述決策樹的原因而使用這些術(shù)語。一般而言,決策樹遍歷算法執(zhí)行特征值與閾值之間的比較,并且基于比較的結(jié)果,繼續(xù)到第一節(jié)點(diǎn)或第二節(jié)點(diǎn)。為了便于描述,這些接下來的節(jié)點(diǎn)在本文中被稱為左節(jié)點(diǎn)和右節(jié)點(diǎn),但是這不以文字或限制性意義理解。
葉節(jié)點(diǎn)204包括葉值。當(dāng)決策樹遍歷算法到達(dá)葉節(jié)點(diǎn)204時(shí),完成遍歷決策樹的特定實(shí)例,并且輸出到達(dá)的對(duì)應(yīng)于特定葉節(jié)點(diǎn)204的葉值。
決策樹編碼器106對(duì)決策樹200進(jìn)行編碼。決策樹編碼器106創(chuàng)建針對(duì)模型上下文內(nèi)的每個(gè)決策樹的決策樹表206。在決策樹表206中,利用鄰接消除至少一些分支指針。因此,決策樹200中的節(jié)點(diǎn)1在決策樹表中被編碼為在節(jié)點(diǎn)2之前。節(jié)點(diǎn)3被列出在節(jié)點(diǎn)2之后,并且節(jié)點(diǎn)4在節(jié)點(diǎn)3之后。因此,在決策樹表206內(nèi)的節(jié)點(diǎn)1-3的執(zhí)行期間,決策樹處理器(諸如決策樹處理器124之一)知道基于特征值與閾值的比較的結(jié)果,將決策樹表206中的接下來的鄰近節(jié)點(diǎn)或者由下一節(jié)點(diǎn)數(shù)據(jù)(諸如偏移值)引用的另一節(jié)點(diǎn)選擇為待由決策樹處理器執(zhí)行的下一節(jié)點(diǎn)。因此,基于圖2中的示例鄰接,執(zhí)行決策樹表206的決策節(jié)點(diǎn)的結(jié)果(其指示選擇左分支)導(dǎo)致將鄰近節(jié)點(diǎn)選擇為下一節(jié)點(diǎn)。因此,在特定決策節(jié)點(diǎn)具有通向另一決策節(jié)點(diǎn)(并且非葉節(jié)點(diǎn))的左分支,決策樹表206中的鄰近節(jié)點(diǎn)是下一葉節(jié)點(diǎn)。使用下一節(jié)點(diǎn)數(shù)據(jù)(諸如偏移值)標(biāo)識(shí)右下一節(jié)點(diǎn)。在不存在左決策節(jié)點(diǎn)的情況下(由于例如左分支通向葉節(jié)點(diǎn)),右下一節(jié)點(diǎn)相鄰是可能的;還可以由下一節(jié)點(diǎn)數(shù)據(jù)(諸如偏移值)標(biāo)識(shí)這樣的右節(jié)點(diǎn),或其可以假定是鄰近的。
除了基于鄰接將決策節(jié)點(diǎn)202布置在決策樹表206內(nèi),決策樹編碼器106還包括決策樹表206內(nèi)的決策節(jié)點(diǎn)202的表示中的葉節(jié)點(diǎn)204的任何葉節(jié)點(diǎn)值。例如,通過決策樹編碼器106對(duì)節(jié)點(diǎn)7進(jìn)行編碼使得其表示包括葉值?;诠?jié)點(diǎn)7的執(zhí)行的結(jié)果(例如,基于特征值與閾值10的比較,如圖2中所示),決策樹處理器選擇輸出左葉節(jié)點(diǎn)的值或者將節(jié)點(diǎn)8選擇為下一決策節(jié)點(diǎn)以用于處理。
決策節(jié)點(diǎn)202在決策樹表206內(nèi)被表示為可變長(zhǎng)度決策節(jié)點(diǎn)(一些被示出為比其他更小來說明這一點(diǎn))。在一個(gè)示例中,以下字段由決策樹編碼器106用于編碼決策節(jié)點(diǎn)。
2葉:{feat_ad;info;L_Leaf_val;R_Leaf_val}(72比特)
1葉:{feat_ad;info;L_Leaf_val or R_Leaf_val}(48比特)
0葉:{feat_ad;info;delta(可選的)}(24或36比特)
決策樹表206內(nèi)的決策節(jié)點(diǎn)202的所有表示包括特征標(biāo)識(shí)符(“feat_ad”)和信息(“info”)字段。該特征標(biāo)識(shí)符標(biāo)識(shí)其中找到在決策節(jié)點(diǎn)的執(zhí)行中要與閾值相比較的特征值(其可以是如該詳細(xì)描述內(nèi)的其他地方所描述的特征索引值)的特征存儲(chǔ)內(nèi)的位置。該特征標(biāo)識(shí)符可以是決策樹處理器使用來查找特征存儲(chǔ)庫內(nèi)(諸如特征存儲(chǔ)庫126內(nèi))的特征值的地址或其他標(biāo)識(shí)符。該信息字段包括下文更詳細(xì)討論的各個(gè)子字段。
二葉決策節(jié)點(diǎn)還包括左葉值(“L_Leaf_val”)和右葉值(“R_Leaf_val”)。這些值表示決策樹200的可能的結(jié)果或輸出。一葉決策節(jié)點(diǎn)包括左葉值(“L_Leaf_val”)或右葉值(“R_Leaf_val”)中的一個(gè)。葉值可以包括各種數(shù)據(jù)類型,包括整數(shù)、固定點(diǎn)、浮點(diǎn)或標(biāo)識(shí)存儲(chǔ)在決策樹表外部的唯一值的索引。
沒有葉的決策節(jié)點(diǎn)(諸如節(jié)點(diǎn)2)包括標(biāo)識(shí)其中定位右決策節(jié)點(diǎn)的可選的增量值。在這種情況下,左決策節(jié)點(diǎn)被定位在鄰近位置處的決策樹表206內(nèi)(例如,對(duì)于節(jié)點(diǎn)2而言,“左”決策節(jié)點(diǎn)是節(jié)點(diǎn)3)。右決策節(jié)點(diǎn)被定位在由增量值可標(biāo)識(shí)的決策樹表206內(nèi)的位置處。決策樹處理器處理增量值以確定右決策節(jié)點(diǎn)值。例如,決策樹處理器可以將增量值添加到當(dāng)前執(zhí)行決策節(jié)點(diǎn)的位置值(例如,索引值或地址)以獲得下一右決策節(jié)點(diǎn)的位置值(例如,地址或索引值)。在一些實(shí)例中,增量值被包括在info字段內(nèi),如下文更詳細(xì)描述的。在這些實(shí)例中,分離的增量值未被包括在節(jié)點(diǎn)表示中。
在示例實(shí)施方式中,fead_ad字段是12比特,info字段是12比特,rdelta字段是12比特,左葉值是24比特,并且右葉值是24比特。
info字段包括標(biāo)識(shí)閾值、是否存在左葉、是否存在右葉的各種子字段,并且對(duì)用于定位下一右節(jié)點(diǎn)的共同偏移或增量值進(jìn)行編碼。info字段的一個(gè)示例如下:
Info:{nyb;x;l_leaf;r_leaf;threshold}
在一些實(shí)施例中,nyb字段是標(biāo)識(shí)特征值是4比特還是8比特字(例如,特征值是否是“半字節(jié)”)的1比特,x字段是1位,l_leaf是1比特,r_leaf是1比特,并且threshold是8比特,但是在不脫離實(shí)施例的范圍的情況下,可以使用其他字段大小。l_leaf字段指示節(jié)點(diǎn)是否包括左葉值;同樣地,r_leaf字段指示節(jié)點(diǎn)是否包括右葉值。如上文所指出的,info字段可以用于對(duì)右節(jié)點(diǎn)偏移或增量值進(jìn)行編碼,從而消除對(duì)于節(jié)點(diǎn)中的分離的增量字段的需要。在x=l的情況下,l_leaf和r_leaf字段用于對(duì)四個(gè)共同偏移值進(jìn)行編碼。在特定示例中,l_leaf和r_leaf字段用于對(duì)8字、12字、16字和20字的偏移(其中,1字=12比特,在該特定示例中)進(jìn)行編碼,但是在不脫離實(shí)施例的范圍的情況下,可以對(duì)其他偏移值進(jìn)行編碼。在不能利用info字段內(nèi)的共同偏移值之一對(duì)偏移值進(jìn)行編碼的情況下—由于例如下一右節(jié)點(diǎn)不在作為遠(yuǎn)離當(dāng)前節(jié)點(diǎn)的共同偏移之一的位置處—使用可選的分離的偏移增量字段。在一些實(shí)施例中,多個(gè)決策樹被存儲(chǔ)在一個(gè)決策樹表中,以及適當(dāng)?shù)木幋a標(biāo)識(shí)決策樹的數(shù)目和/或決策樹表內(nèi)的一個(gè)或多個(gè)決策樹的位置。
在一些實(shí)施例中,決策樹表206還包括DTT報(bào)頭208,其對(duì)決策樹表206的各方面進(jìn)行編碼(諸如包含在決策樹表206內(nèi)的決策樹的數(shù)目和決策樹表206內(nèi)的一個(gè)或多個(gè)決策樹的開始位置)。
示例閾值和特征壓縮
在給定決策樹內(nèi)或在多個(gè)決策樹內(nèi)(諸如在模型上下文108內(nèi)),決策節(jié)點(diǎn)包括特征標(biāo)識(shí)符和閾值。在示例決策樹節(jié)點(diǎn)執(zhí)行時(shí),將(從由特征標(biāo)識(shí)符feat_ad索引的位置處的特征向量讀取的)特征值與閾值相比較。該比較可以是確定特征值是否小于或等于閾值。如果是,那么選擇左分支;如果否,那么選擇右分支。在不脫離實(shí)施例的范圍的情況下,其他類型的比較是可能的,諸如小于、大于或大于或等于。雖然下文所描述的特征值和閾值編碼的各個(gè)示例假定決策樹比較包括確定特征值是否小于或等于閾值,但是在不脫離實(shí)施例的范圍的情況下,基于其他類型的決策樹比較,可以針對(duì)特征值和閾值執(zhí)行類似的編碼。
貫穿多個(gè)決策樹,將在一個(gè)或多個(gè)節(jié)點(diǎn)中引用給定特征fi。引用給定特征fi的節(jié)點(diǎn)將包括一個(gè)或多個(gè)閾值tvi之一。因此,在給定模型上下文內(nèi)(例如,一個(gè)或多個(gè)決策樹)并且對(duì)于特定特征fi而言,決策樹編碼器106確定與對(duì)應(yīng)于特定特征fi的特征值fvi相比較的閾值tvi的列表tsi。不與特定特征fi相比較的閾值未被包括在針對(duì)特定特征fi的列表中(雖然它們將被包括在針對(duì)其他特征的其他列表中)。為了對(duì)模型上下文內(nèi)的特定fi的閾值tvi進(jìn)行編碼,使用以下程序。
對(duì)于每個(gè)特征fi而言,決策樹編碼器106形成被包括在還引用fi的模型上下文的決策樹中的任一任何節(jié)點(diǎn)中的所有唯一閾值tvi的分類列表tsi。圖3圖示了實(shí)數(shù)線300上的唯一閾值tvi的示例列表tsi。分類列表tsi僅包括閾值tvi的唯一閾值,因此即使其被包括在引用給定模型上下文內(nèi)的fi的多個(gè)節(jié)點(diǎn)中,特定閾值tvi也僅出現(xiàn)在tsi中一次。
在圖3中示出了針對(duì)tsi中的閾值tvi的示例編碼302。索引號(hào)tvii以遞增順序被分配到tsi內(nèi)的實(shí)數(shù)線300上的每個(gè)唯一tvi,使得最小tvi被分配索引0,并且最大tvi被分配tsi內(nèi)的第一tvi的總數(shù)減一的索引號(hào)。在圖3中所示的示例中,閾值tl是最小tvi,并且被分配索引0,而閾值t6是最大tvi并且被分配閾值索引值5。在閾值是大數(shù)目的情況下,定點(diǎn)整數(shù)索引值tvii的分配降低了表示決策樹節(jié)點(diǎn)表示內(nèi)的閾值所要求的比特的數(shù)目。例如,閾值tvi可以是32比特浮點(diǎn)數(shù)(雖然在不脫離實(shí)施例的范圍的情況下,可以使用其他比特?cái)?shù)和其他變量類型),并且在圖3中所圖示的示例中,與三比特?cái)?shù)一樣小可以用于表示閾值索引tvii(雖然其他位數(shù)可以被用于表示tvii和特征索引值fvii,如下文更詳細(xì)描述的)。
除將tvi編碼為tvii之外,特征向量編碼器110將對(duì)應(yīng)于特征向量112中的fi的特征值fvi編碼為特征索引值fvii,使得其與編碼的閾值索引值tvii兼容。每個(gè)特征向量112包括針對(duì)每個(gè)fi的特征值fvi的列表。在一些實(shí)施例中,基于閾值索引值tvii,將特征值fvi編碼為特征索引值fvii,并且特別地對(duì)其進(jìn)行編碼,使得閾值索引值tvii與特征索引值fvii的比較的結(jié)果相當(dāng)于將閾值tvi與特征值fvi相比較的結(jié)果。通過這種方式對(duì)特征值進(jìn)行編碼,基于原始特征值和閾值,針對(duì)編碼的特征向量112的模型上下文108內(nèi)的編碼的決策樹的執(zhí)行的結(jié)果產(chǎn)生與決策樹的基于傳統(tǒng)軟件的執(zhí)行相同的輸出。
繼續(xù)圖3中所圖示的示例,模型上下文108內(nèi)的決策樹的決策節(jié)點(diǎn)的執(zhí)行基于確定特征值fvi是否小于或等于閾值tvi。因此,在該示例中,特征值fvi被編碼為特征索引值fvii中使得
當(dāng)且僅當(dāng)fvi≤tvi時(shí),fvii<tvii
更一般地,特征值fvi被編碼為特征索引值fvii使得
當(dāng)且僅當(dāng)fvi比較tvi時(shí),fvii比較tvii
其中,比較表示在決策樹的執(zhí)行期間所執(zhí)行的比較函數(shù)(例如,≤、≥、<或>之一=。在圖3中所示的示例中,選擇特征索引值fvii使得
fvii是最大的整數(shù),使得fvi<=tsi[fvii],
或者否則如果fi>tsi[#tsi-l],則fvii=#tsi。
其中#tsi是與特定模型上下文內(nèi)的特定特征fi相關(guān)聯(lián)的閾值ti的總數(shù)(例如,引用特征fi的節(jié)點(diǎn)中的所有閾值tvi)。換句話說,特征索引值fvii被選擇為以以下各項(xiàng)下中的任一項(xiàng):(1)對(duì)應(yīng)于大于或等于特征值fvi的閾值tvi中的最小閾值的閾值索引值tvii,或者如果所有閾值tvi小于特征值fvi,(2)大于最大閾值索引值tvii的數(shù)目。在上文所示的示例中,對(duì)應(yīng)的fvii被選擇為等于閾值tvi的總數(shù)的數(shù)目,其比最大tvii大1,然而,可以選擇比最大tvii更大的任何數(shù)目。
在圖3中所圖示的示例中,特征向量編碼器110將示例特征fl-f6編碼為編碼304。關(guān)于特征fl,t2是大于或等于fl的最小tvi,并且因此,針對(duì)f1的特征索引值fvii被設(shè)定為與針對(duì)t2的tvii相同(即,1)。關(guān)于特征f6,沒有tvi大于或等于f6;因此,針對(duì)f6的fvii被設(shè)定為大于最大tvii的數(shù)目。在圖3中所示的示例中,針對(duì)t6的fvii被設(shè)定為6,其比最大tvii(5)大1。而且,在圖3中所示的示例中,f4被編碼為3。
在實(shí)施例中,被選擇為對(duì)與特定fi相關(guān)聯(lián)的tvi和fvi進(jìn)行編碼的比特?cái)?shù)足夠大以容納#tsi(與引用fi的決策節(jié)點(diǎn)相關(guān)聯(lián)的第一tvi的總數(shù))。在一些實(shí)施例中,可能的索引長(zhǎng)度的集合在的索引長(zhǎng)度用于表示tvi和fvi,其降低了對(duì)tvi和fvi進(jìn)行編碼的復(fù)雜性。在一個(gè)特定示例中,tvi和fvi被編碼為4比特字、8比特字或者多個(gè)8比特字,但是在不脫離實(shí)施例的范圍的情況下,可以使用其他字長(zhǎng)。在特定示例中,選擇索引字長(zhǎng)使得
·如果lg(#tsi)<4,則將tvi和fvi重新編碼為4比特,其中l(wèi)g(x)是以2為底的x的對(duì)數(shù)。
·否則如果lg(#tsi)<8,則將tvi和fvi編碼為8比特
·否則利用#tsi>255閾值比較將任何tvi和fvi重新編碼為(#tsi)/255分離的fi
在fi被編碼為(#tsi)/255分離的fi的情況下,決策節(jié)點(diǎn)由決策樹編碼器106重新編碼為指示(#tsi)/255分離的fi之一,并且因此對(duì)節(jié)點(diǎn)的對(duì)應(yīng)的閾值tvi進(jìn)行重新編碼。在特定示例中,具有tsi內(nèi)的1259總tvi的fi導(dǎo)致與被重新編碼為五個(gè)不同的節(jié)點(diǎn)之一的特定的fi相關(guān)聯(lián)的節(jié)點(diǎn),每個(gè)具有分離的fi和8比特閾值。因此,fvii=0被編碼為(0,0,0,0,0)(例如針對(duì)原始fi被分解為的所有分離的fi,被編碼為0);fvii=255被編碼為(255、0、0、0、0)(例如,針對(duì)分離的fi中的第一個(gè)的255和針對(duì)分離的fi的所有其他的0);fvii=256被編碼為(255,1,0,0,0)(例如,針對(duì)分離的fi中的第一個(gè)的255、針對(duì)第二個(gè)分離的fi的1、以及0針對(duì)所有其他的0);fvii=1258被編碼為(255,255,255,255,238)。還以類似的方式對(duì)針對(duì)分離的fi的閾值tvi進(jìn)行編碼。
并行架構(gòu)
圖4圖示了根據(jù)各個(gè)實(shí)施例的實(shí)現(xiàn)在專用集成電路或可編程集成電路上的決策樹評(píng)分器102的架構(gòu)400。該架構(gòu)400包括布置在網(wǎng)格中的多個(gè)決策樹群集(DTC)122。該DTC 122被配置為從決策樹評(píng)分器102接收模型上下文108和特征向量112。該DTC 122包括多個(gè)決策樹處理器124的子集和特征存儲(chǔ)庫126的子集。決策樹處理器124的子集可以是利用與決策樹處理器的其他子集相同或不同的決策樹表加載和/或可加載的,并且特征存儲(chǔ)庫126的子集可以是利用相同或不同的特征向量加載或可加載的(例如其可以利用共同特征向量被加載)。
DTC 122可以從第一鄰近DTC 122接收特征向量112并且將其分布到DTC 122的第二鄰近DTC 122。在一個(gè)示例中,DTC 122-A被配置為從DTC 122-C接收特征向量112,并且將一些特征向量112分布到DTC 122-C和122-D,如由圖4中的箭頭所圖示的。
同樣地,DTC 122可以從第一鄰近DTC 122接收得分?jǐn)?shù)據(jù)并且將其傳播到DTC 122的第二鄰近DTC 122。該得分?jǐn)?shù)據(jù)可以基于如由決策樹處理器124中的不同的決策樹處理器124(諸如針對(duì)共同特征集)輸出的單獨(dú)的決策樹得分。該得分?jǐn)?shù)據(jù)可以是得分的列表、得分的求和或基于單個(gè)得分的一些其他得分?jǐn)?shù)據(jù)(諸如單個(gè)得分的乘法或用于處理得分的某個(gè)其他算法)。該得分的列表可以是來自單個(gè)決策樹結(jié)果的得分的列表或處理的得分的列表。例如,來自特定決策樹群集122的所有得分可以求和并且附加到所有DTC 122得分的列表,使得最終得分?jǐn)?shù)據(jù)包括來自每個(gè)DTC 122的求和得分的列表。在另一示例中,可以對(duì)來自由單個(gè)決策樹處理器124執(zhí)行的決策樹的所有得分進(jìn)行求和,并且來自所有決策樹處理器的求和得分可以列在最終得分?jǐn)?shù)據(jù)中等。在不脫離實(shí)施例的范圍的情況下,可以使用傳播得分?jǐn)?shù)據(jù)的其他方式。在一些實(shí)施例中,來自每個(gè)DTC 122、DTC 122組、決策樹處理器124、決策樹處理器124組、單個(gè)決策樹、決策樹組的經(jīng)處理或原始得分?jǐn)?shù)據(jù)以某種其他方式(諸如在分離的輸出網(wǎng)絡(luò)上)被提供給DTS 400并且未被傳播給鄰近的DTC 122,如本文所描述的。
在圖4中所示的示例中,DTC 122-E被配置為從鄰近的DTC 122-F和122-G接收得分?jǐn)?shù)據(jù)。DTC 122-E被配置為從鄰近的DTC 122-F和122-G接收得分?jǐn)?shù)據(jù)連同由DTC 122-E內(nèi)的決策樹處理器(諸如決策樹處理器124)所提供的得分?jǐn)?shù)據(jù),處理得分?jǐn)?shù)據(jù)以確定組合的得分?jǐn)?shù)據(jù)(諸如通過對(duì)得分求和、將得分附加到單個(gè)得分的列表或以某種其他方式處理得分?jǐn)?shù)據(jù)),并且將組合的得分?jǐn)?shù)據(jù)傳遞到執(zhí)行類似功能的鄰近的DTC 122-H等,直到所有得分被傳播到將最終得分?jǐn)?shù)據(jù)傳遞到DTS 102的DTC 122中的最后一個(gè)。更一般地,DTC 122被配置為傳播得分?jǐn)?shù)據(jù)使得得分不被重復(fù)計(jì)算。例如,通過DTS 102的得分傳播的特定模式使DTC 122中的任一個(gè)避免從相同得分已經(jīng)被處理到其中的兩個(gè)相鄰DTC 122接收兩個(gè)得分。
在一些實(shí)施例中,將模型上下文加載到?jīng)Q策樹評(píng)分器架構(gòu)400包括將不同的決策樹表加載到DTC 122內(nèi)的決策樹區(qū)片中的不同的決策樹區(qū)片中,包括貫穿決策樹評(píng)分器架構(gòu)400的DTC 122的決策樹處理器分布的多個(gè)決策樹。在這些實(shí)施例中,加載到DTC 122中的決策樹中的每個(gè)決策樹基于共同特征向量,產(chǎn)生不同的得分。
在一些實(shí)施例中,同時(shí)被加載到?jīng)Q策樹架構(gòu)400中的不同的決策樹表可以是單個(gè)模型上下文108的一部分或不同的模型上下文108的一部分。在一些實(shí)施例中,多個(gè)決策樹模型被編碼到單個(gè)模型上下文中。在一個(gè)示例中,兩個(gè)模型可以類似但是具有一些差異。稍微地修改針對(duì)兩個(gè)模型的決策樹以引入選擇模型1或者模型2的新決策節(jié)點(diǎn)。另外,到特征向量中的適當(dāng)?shù)奶卣鬟x擇模型1或者模型2。
在一些實(shí)施例中,將特征向量加載到?jīng)Q策樹評(píng)分器架構(gòu)400包括將相同特征向量加載到DTC 122的特征存儲(chǔ)區(qū)片中的每一個(gè)中。因此,針對(duì)具有處理(例如,求和)并且傳播回到DTS 102的所有得分的相同特征集,對(duì)在實(shí)施例中彼此不同的DTC的多個(gè)決策樹進(jìn)行評(píng)分。
在其他實(shí)施例中,利用相同決策樹來加載DTC 122的各個(gè)DTC 122,使得其執(zhí)行與DTC 122中的其他DTC 122相同的決策樹??梢詫⒉煌奶卣飨蛄考虞d到DTC中的不同的DTC,使得針對(duì)不同的特征向量執(zhí)行決策樹。在一些實(shí)施例中,利用不同的特征向量和相同的決策樹來加載DTC 122,或者決策樹組被加載到?jīng)Q策樹評(píng)分器架構(gòu)400中。在這些實(shí)施例中,利用不同的一個(gè)或多個(gè)特征向量組來加載每個(gè)DTC 122。針對(duì)特征向量對(duì)決策樹進(jìn)行評(píng)分,并且當(dāng)模型上下文的所有決策樹流過特征向量并且被執(zhí)行時(shí),在針對(duì)特征向量的時(shí)間上累積評(píng)分。在這些實(shí)施例中,DTC 122可以被配置為保持針對(duì)特征向量的得分時(shí),直到針對(duì)特征向量加載并且執(zhí)行模型上下文的所有決策樹;備選地,單個(gè)決策樹得分被傳輸?shù)街鳈C(jī)104,其累積并且處理針對(duì)特定特征向量的得分。
在其他實(shí)施例中,利用不同的決策樹作業(yè)(例如,模型上下文和特征向量的組合)來記載不同的DTC 122組。因此,決策樹評(píng)分器架構(gòu)400的第一部分針對(duì)第一模型上下文確定針對(duì)第一特征向量的得分,決策樹評(píng)分器架構(gòu)400的第二部分針對(duì)第二模型上下文確定針對(duì)第二特征向量的得分等,以及決策樹評(píng)分器架構(gòu)400的第N個(gè)部分針對(duì)第N個(gè)模型上下文確定針對(duì)第N個(gè)特征向量的得分。在這些實(shí)施例中,利用模型上下文的決策樹和逐個(gè)分布在用于評(píng)分的部分內(nèi)的特征向量來加載每個(gè)部分的DTC 122,或者利用不同的特征向量來加載每個(gè)部分的DTC 122,并且模型上下文的決策樹逐個(gè)被分布在用于評(píng)分的部分內(nèi)。
決策樹評(píng)分器架構(gòu)400內(nèi)的DTC 122的數(shù)目可以放大到任意大的數(shù)目,這取決于在其上實(shí)現(xiàn)決策樹評(píng)分器架構(gòu)400的集成電路的大小和能力。
在一些實(shí)施例中,利用超過一個(gè)決策樹評(píng)分器架構(gòu)400,其各自具有并行執(zhí)行的自身的DTC 122集。在這些實(shí)施例中,單個(gè)模型上下文可以加載到一個(gè)或多個(gè)芯片的DTC 122上,并且特征向量逐個(gè)被分布到不同的芯片的DTC 122以用于評(píng)分。在其他實(shí)施例中,利用逐個(gè)分布到用于評(píng)分的DTC 122中的每一個(gè)中的模型上下文的不同的決策樹將不同的特征向量加載到不同的芯片的DTC 122中。在各種其他實(shí)施例中,這些方法的組合可以被用于組合的多芯片決策樹評(píng)分器架構(gòu)400的不同的部分。
在一些實(shí)施例中,確定加載到?jīng)Q策樹評(píng)分器架構(gòu)400的模型上下文的總體或組合得分基于相關(guān)函數(shù)(諸如加法或者乘法),其中,對(duì)得分進(jìn)行分組的順序不確定結(jié)果。因此,DTC 122中的DTC內(nèi)的決策樹的分布對(duì)于針對(duì)加載到架構(gòu)400中的模型上下文的決策樹產(chǎn)生對(duì)于特定特征向量的正確最后或組合得分不必是重要的。在其他實(shí)施例中,針對(duì)特征向量和模型上下文決策樹評(píng)分作業(yè)的得分的處理不是相關(guān)的,并且貫穿架構(gòu)分布決策樹和/或特征向量的順序?qū)τ诖_定針對(duì)特定特征向量的最后或組合得分是重要的。
可以經(jīng)由專用設(shè)備或可編程邏輯設(shè)備116內(nèi)部的一個(gè)或多個(gè)網(wǎng)絡(luò)將特征向量112、模型上下文108的決策樹表和/或得分?jǐn)?shù)據(jù)分布到DTC 122和/或決策樹處理器124。DTC 122、決策樹處理器124和各種特征存儲(chǔ)庫126中的一個(gè)或多個(gè)可以是經(jīng)由分組報(bào)頭可尋址的。不管可加載到針對(duì)決策樹處理器124的共享或?qū)S么鎯?chǔ)中的決策樹表的分布方法如何,決策樹表可以單獨(dú)地傳輸(諸如經(jīng)由分組)并且尋址到DTC 122或決策樹處理器124中的一些DTC或決策樹處理器,或者決策樹表可以一起被分布。主機(jī)104和/或決策樹評(píng)分器102內(nèi)的邏輯可以確定DTC 122和決策樹處理器124之間的單個(gè)決策樹表的分布。而且,DTC 122可以包括將決策樹表分布到?jīng)Q策樹處理器124中的單獨(dú)的一些決策樹處理器124的邏輯。
圖4圖示了將得分和特征向量分布到芯片上多處理器系統(tǒng)的決策樹處理器的網(wǎng)絡(luò)的示例。具體而言,DTC 122充當(dāng)用于聚集/處理得分?jǐn)?shù)據(jù)和特征向量的網(wǎng)絡(luò)元件。在其他實(shí)施例中,其他網(wǎng)絡(luò)類型用于將得分和/或特征向量分布到?jīng)Q策樹處理器和/或特征存儲(chǔ)庫。在這些其他實(shí)施例中,可以包括或可以不包括決策樹群集122作為架構(gòu)的一部分。在一個(gè)實(shí)施例中,決策處理器可以布置在決策樹處理器的網(wǎng)格中,并且得分和/或特征向量可以經(jīng)由決策樹處理器直接并且最終地分布到?jīng)Q策樹評(píng)分器或其他得分聚集元件。在其他實(shí)施例中,廣播網(wǎng)絡(luò)(其可以是總線、網(wǎng)格、點(diǎn)對(duì)點(diǎn)、軸輻式或其他拓?fù)?可以將決策樹處理器(和/或決策樹群集122)連接到?jīng)Q策樹評(píng)分器或提供特征向量和/或接收/累積/處理來自決策樹處理器的得分的其它元件。在其他實(shí)施例中,片上網(wǎng)絡(luò)(NOC)(其可以具有諸如將配置數(shù)據(jù)分布到FPGA元件或其他功能的其他目的)可以被重新使用,以從決策樹處理器到?jīng)Q策樹評(píng)分器或其他評(píng)分聚集元件分布特征向量,和/或?qū)⒌梅謹(jǐn)?shù)據(jù)從決策樹處理器提供到?jīng)Q策樹評(píng)分器或其他得分聚集元件。
得分聚集元件可以接收并且累積來自決策樹處理器和/或決策樹群集122的得分?jǐn)?shù)據(jù)。該得分聚集元件可以處理得分?jǐn)?shù)據(jù),其可以包括對(duì)得分?jǐn)?shù)據(jù)求和、將得分?jǐn)?shù)據(jù)附加到得分的列表或向量、執(zhí)行某種其他算法以基于所接收的數(shù)據(jù)而計(jì)算得分等。該得分聚集元件可以以處理的形式或者以原始的形式將得分?jǐn)?shù)據(jù)傳遞到主機(jī)或其他下游元件。
實(shí)施例可以包括分離的網(wǎng)絡(luò),一個(gè)網(wǎng)絡(luò)用于得分?jǐn)?shù)據(jù)并且另一個(gè)網(wǎng)絡(luò)用于特征向量。因此,在不同的實(shí)施例中,網(wǎng)絡(luò)可以是特征網(wǎng)絡(luò)、得分聚集網(wǎng)絡(luò)或二者。在一些實(shí)施例中,決策樹群集122可以充當(dāng)針對(duì)特征網(wǎng)絡(luò)或得分網(wǎng)絡(luò)中的一者或兩者的網(wǎng)絡(luò)元件。在不脫離實(shí)施例的范圍的情況下,其他示例是可能的。
圖5圖示了根據(jù)各個(gè)實(shí)施例的實(shí)現(xiàn)在專用集成電路或可編程集成電路上的決策樹群集122的架構(gòu)500。該架構(gòu)500包括一個(gè)或多個(gè)決策樹處理器124和一個(gè)或多個(gè)特征存儲(chǔ)庫126。圖5中所圖示的示例架構(gòu)500包括五個(gè)決策樹處理器124和一個(gè)特征存儲(chǔ)庫126,雖然在各個(gè)其他實(shí)施例中,使用其他數(shù)目的決策樹處理器124和特征存儲(chǔ)庫126。
DTC 122包括接收針對(duì)特征存儲(chǔ)庫126中的存儲(chǔ)庫的特征向量的特征輸入總線寄存器,例如,64比特特征輸入總線寄存器。DTC 122包括累積并且輸出保持得分的得分輸出寄存器,以用于輸出到DTC 122的鄰近的DTC,例如,33比特固定點(diǎn)得分輸出寄存器。DTC 122的加法器樹對(duì)來自決策樹處理器124和來自一個(gè)或兩個(gè)或兩個(gè)以上鄰近的DTC 122的得分進(jìn)行合計(jì)。當(dāng)其中執(zhí)行的所有決策樹線程已經(jīng)完成并且輸出得分時(shí),決策樹處理器124輸出完成的標(biāo)記。DTC 122累積完成的標(biāo)記,并且在加法器樹將來自鄰近的DTC 122的得分添加到來自決策樹處理器124的得分時(shí),DTC 122就將得分輸出到一個(gè)或多個(gè)鄰近的DTC 122。這時(shí)候,DTC 122還將完成信號(hào)輸出到其上游DTC 122(諸如通過可以與DTS 102內(nèi)的互連網(wǎng)絡(luò)相同或不同的完成信號(hào)網(wǎng)絡(luò))以分布特征向量、得分?jǐn)?shù)據(jù)和/或決策樹表數(shù)據(jù)。在最后DTC 122的情況下,得分和完成信號(hào)被輸出到DTS 102。在接收到完成信號(hào)時(shí),DTC 122和決策樹評(píng)分器102就確定上游DTC 122已經(jīng)完成其決策樹執(zhí)行并且所有可用的得分被接收在輸入總線上,得分將不再等待接收,并且得分準(zhǔn)備被添加到?jīng)Q策樹處理器124的得分并且被傳播到下游DTC 122和/或決策樹評(píng)分器102。
在一些實(shí)施例中,特征存儲(chǔ)庫126被雙緩沖以使得一個(gè)特征集能夠加載到特征存儲(chǔ)庫126,同時(shí)另一特征集由決策樹處理器124讀取。在一個(gè)示例中,特征存儲(chǔ)庫126包括兩個(gè)32比特寫端口,這使得特征存儲(chǔ)庫126能夠以250MHz收回64位的特征數(shù)據(jù)。在一個(gè)示例中,特征存儲(chǔ)庫126包括使得特征存儲(chǔ)庫126能夠接收每周期兩個(gè)8比特特征的兩個(gè)32比特讀端口。特征存儲(chǔ)庫126接收來自決策樹處理器124的特征標(biāo)識(shí)符并且利用特征值(例如,8比特特征值和標(biāo)記)做出響應(yīng)。
在一些實(shí)施例中,通過由特定決策樹群集122的決策樹處理器124使用的特征向量的子集的選擇性捕獲降低了特征存儲(chǔ)庫126上的存儲(chǔ)空間。并非特征向量112內(nèi)的所有特征將由特定決策樹群集122的決策樹引用;因此,在一些實(shí)施例中,通過僅捕獲通過由特定DTC 122的決策樹處理器124執(zhí)行的決策樹實(shí)際上引用的一些特征值降低了特征存儲(chǔ)庫126上的存儲(chǔ)空間。因此,可以在被尋址到特征存儲(chǔ)庫126或特定特征存儲(chǔ)庫126被包括在其中的DTC 122的分組中引用要由特定特征存儲(chǔ)庫126存儲(chǔ)的特征向量的部分。該特征存儲(chǔ)庫126可以提供有掩模(諸如在被尋址到特征存儲(chǔ)庫126或DTC 122的分組中),其標(biāo)識(shí)用于選擇性地存儲(chǔ)的特征向量的部分。
如下文將更詳細(xì)描述的,決策樹處理器124是能夠執(zhí)行多個(gè)決策樹的多線程樹遍歷引擎。在決策樹處理器124內(nèi)將決策樹存儲(chǔ)為決策樹表。在各個(gè)實(shí)施例中,決策樹表被存儲(chǔ)在各種存儲(chǔ)器存儲(chǔ)類型上,諸如隨機(jī)存取存儲(chǔ)器,包括動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)、塊隨機(jī)存取存儲(chǔ)器(BRAM)、靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)等。在一些實(shí)施例中,決策樹處理器124包括五級(jí)管線,如下文更詳細(xì)描述的;因此,只要存在至少五個(gè)可運(yùn)行的線程(對(duì)應(yīng)于其執(zhí)行尚未完成的五個(gè)決策樹),決策樹處理器124就能夠在每個(gè)時(shí)鐘周期上發(fā)起遍歷決策樹的一個(gè)節(jié)點(diǎn)。
多級(jí)樹遍歷管線
在一些實(shí)施例中,決策樹處理器包括管線架構(gòu)。圖6圖示了根據(jù)各個(gè)實(shí)施例的決策樹處理器的多級(jí)、多線程、管線樹遍歷電路600。該電路600被實(shí)施在決策樹處理器內(nèi)的邏輯電路內(nèi)。線程電路(或線程級(jí))(圖6中表示的“TH”)從NEXT_THDS表602接收下一線程TH_THD。在圖6中所圖示的示例中,NEXT_THDS表602是32x5比特,并且因此存儲(chǔ)高達(dá)32個(gè)5比特下一線程數(shù)目;因此多達(dá)32個(gè)線程可以由電路600處理。NEXT_THDS表602是線程的鏈接列表;初始地所有線程被列在NEXT_THDS表602中;當(dāng)線程完成(通過輸出葉值)時(shí),線程從NEXT_THDS表602解鏈接。一旦將所有線程從NEXT_THDS表602解鏈接,決策樹處理器將完成信號(hào)輸出到?jīng)Q策樹群集,這指示其完成所有線程。線程電路使用來自NEXT_THDS表602的下一線程標(biāo)識(shí)符發(fā)出針對(duì)來自節(jié)點(diǎn)地址表(NODE_ADS表604)和葉表(葉表606)的下一線程的下一節(jié)點(diǎn)地址的讀取。NODE_ADS表604是32x13比特,并且因此存儲(chǔ)多達(dá)32個(gè)13位下一節(jié)點(diǎn)地址(針對(duì)每個(gè)線程一個(gè))。
葉表606存儲(chǔ)葉輸出標(biāo)記;在針對(duì)葉表606內(nèi)的特定線程的條目存儲(chǔ)輸出標(biāo)記(例如,1或0)的情況下,葉值被輸出到?jīng)Q策樹群集并且線程從NEXT_THDS表602解鏈接。
在葉輸出標(biāo)記指示先前未選擇葉值的情況下,下一節(jié)點(diǎn)地址被傳遞到讀取節(jié)點(diǎn)電路(讀取級(jí))(在圖6中表示的“RN”),并且通過針對(duì)下一節(jié)點(diǎn)描述符的電路600發(fā)出對(duì)應(yīng)于當(dāng)前線程的節(jié)點(diǎn)表NTAB 608的讀取。在實(shí)施例中,NTAB 608被存儲(chǔ)在決策樹處理器的電路內(nèi)的專用存儲(chǔ)器上或與決策樹處理器的電路相關(guān)聯(lián)的專用存儲(chǔ)器上。在其他實(shí)施例中,NTAB 608被存儲(chǔ)在從決策樹處理器分離并且通信地耦合到?jīng)Q策樹處理器的存儲(chǔ)器中。在一些實(shí)施例中,NTAB 608被存儲(chǔ)在由多個(gè)決策樹處理器共享的存儲(chǔ)器中。
在電路600的F1特征電路(或F1特征級(jí))中讀出節(jié)點(diǎn)描述符的12比特特征地址F1_FEAT_AD和12比特info字段FI_INFO連同下一節(jié)點(diǎn)數(shù)據(jù)(諸如偏移值,如果存在于NTAB 608中的話)。例如,下一左節(jié)點(diǎn)地址和右節(jié)點(diǎn)地址和下一左葉標(biāo)記值和右葉標(biāo)記值通過該級(jí)處的邏輯610被預(yù)計(jì)算并且是節(jié)點(diǎn)地址、info字段和可選的rdelta偏移字段的函數(shù)。info字段確定是否存在節(jié)點(diǎn)一、二或零下一子樹節(jié)點(diǎn),并且是否存在一、二或零葉值。下一左和右下一節(jié)點(diǎn)地址基于NTAB 608內(nèi)的鄰接和FI_RDELTA值(如果存在的話)或根據(jù)info字段中的偏移值進(jìn)行預(yù)計(jì)算,如該詳細(xì)描述內(nèi)的其他地方所描述的。在一些實(shí)施例中,在當(dāng)前節(jié)點(diǎn)具有左子樹節(jié)點(diǎn)時(shí),下一左節(jié)點(diǎn)地址是鄰近當(dāng)前節(jié)點(diǎn)(緊接地跟隨)的節(jié)點(diǎn)的地址,并且下一左葉標(biāo)記是假。否則,當(dāng)前節(jié)點(diǎn)具有左葉輸出值,并且下一左節(jié)點(diǎn)對(duì)當(dāng)前節(jié)點(diǎn)內(nèi)的包含左葉值的(一個(gè)或多個(gè))字的地址進(jìn)行尋址,并且下一左葉標(biāo)記是真。預(yù)計(jì)算對(duì)于下一右節(jié)點(diǎn)地址和下一右葉標(biāo)記而言是類似的。在當(dāng)前節(jié)點(diǎn)具有右子樹節(jié)點(diǎn)但是沒有左子樹節(jié)點(diǎn)時(shí),下一右節(jié)點(diǎn)地址是鄰近當(dāng)前節(jié)點(diǎn)(緊接地跟隨)的節(jié)點(diǎn)的地址,并且下一右葉標(biāo)記是假。在當(dāng)前節(jié)點(diǎn)具有左子樹節(jié)點(diǎn)和右子樹節(jié)點(diǎn)二者時(shí),通過添加當(dāng)前節(jié)點(diǎn)地址和偏移確定下一右節(jié)點(diǎn)地址(其值被編碼在info字段內(nèi)或者明確地表示在任選的rdelta偏移字段中),并且下一右葉標(biāo)記是假。否則,當(dāng)前節(jié)點(diǎn)具有右葉輸出值,并且下一右節(jié)點(diǎn)對(duì)當(dāng)前節(jié)點(diǎn)內(nèi)的包含右葉值的(一個(gè)或多個(gè))字的地址進(jìn)行尋址,并且下一右葉標(biāo)記是真。
在電路600的F2特征電路(或F2特征級(jí))處,從特征存儲(chǔ)庫612(例如,特征存儲(chǔ)庫126)讀取與F1_FEAT_AD相關(guān)聯(lián)的特征值。在實(shí)施例中,F(xiàn)ST 126被配置為由兩個(gè)不同的決策樹處理器讀??;因此,示出了具有兩個(gè)輸入和兩個(gè)輸出的特征存儲(chǔ)庫612。
在電路600(在圖6中表示的“EX”)的執(zhí)行電路(或執(zhí)行級(jí))處,通過邏輯614將從特征存儲(chǔ)612讀取的特征值(“EX_FEAT”)與當(dāng)前執(zhí)行的節(jié)點(diǎn)的閾值(EX_TH)相比較。閾值EX_TH和特征值EX_FEAT可以是閾值索引值和特征索引值,如在該詳細(xì)描述中的其他地方描述的,或者其可以是未壓縮的閾值和特征值。本公開的實(shí)施例不限于一個(gè)或另一個(gè)的使用。基于由邏輯614輸出的比較的結(jié)果,將下一左節(jié)點(diǎn)地址或者下一右節(jié)點(diǎn)地址寫到NODE_ADS表604中的線程的條目。還基于由邏輯614輸出的比較的結(jié)果,將下一左葉標(biāo)記或者下一右葉標(biāo)記寫到LEAFS表606中的線程的條目。
一旦執(zhí)行電路選擇針對(duì)特定線程的葉值并且設(shè)定葉標(biāo)記,那么下一次線程就被發(fā)出到管線中,讀取葉標(biāo)記并且NODE_ADS表604中的節(jié)點(diǎn)地址不是節(jié)點(diǎn)的地址,而是NTAB 608內(nèi)的先前節(jié)點(diǎn)內(nèi)的葉值字的地址。在RN電路處,從NTAB 608讀取這些葉值字,從而獲得針對(duì)特定線程的得分620,而不是特征地址和info字段的葉值。得分620可以被輸出到?jīng)Q策樹群集,如該詳細(xì)描述內(nèi)的其他地方所描述的。另外,當(dāng)葉標(biāo)記是真時(shí),從NEXT_THDS表602解鏈接線程,使得其不再次由管線獲取。
電路600的各部分中的每個(gè)部分(TH、RN、FI、F2和EX)并發(fā)地處理線程中的不同線程。因此,在任何時(shí)候,電路600處理多達(dá)五個(gè)不同的線程的某個(gè)部分,其對(duì)應(yīng)于每個(gè)時(shí)鐘周期并發(fā)地處理多達(dá)五個(gè)不同的決策樹的某個(gè)部分。
示例過程
圖7描繪了根據(jù)各個(gè)實(shí)施例的示出執(zhí)行決策樹的示例過程700的流程圖。在702處,決策樹處理器(例如,決策樹處理器管線的線程電路或級(jí))確定要由處理器執(zhí)行的下一線程并且發(fā)出對(duì)節(jié)點(diǎn)表的讀取以確定下一線程的下一節(jié)點(diǎn)地址。
在704處,決策樹處理器(例如,決策樹處理器管線的讀取節(jié)點(diǎn)電路或級(jí))從可以存儲(chǔ)在決策樹處理器內(nèi)的決策樹節(jié)點(diǎn)表取回決策樹節(jié)點(diǎn)數(shù)據(jù)(諸如決策樹節(jié)點(diǎn)字,包括至少特征指示符和閾值)。決策樹節(jié)點(diǎn)的子集還包括下一節(jié)點(diǎn)數(shù)據(jù),諸如下一節(jié)點(diǎn)偏移值。
決策樹節(jié)點(diǎn)執(zhí)行的最終結(jié)果導(dǎo)致葉值的輸出作為決策樹遍歷線程的輸出(諸如在決策樹節(jié)點(diǎn)執(zhí)行導(dǎo)致選擇左葉值或右葉值的情況下)。在706處,決策樹處理器(例如,決策樹處理器的讀取電路或級(jí))確定是否針對(duì)特定線程設(shè)定葉標(biāo)記(諸如在通過管線的線程的先前傳遞期間)。在設(shè)定葉標(biāo)記的情況下,在708處,從線程表解鏈接特定線程。在710處,決策樹節(jié)點(diǎn)的葉值數(shù)據(jù)(諸如一個(gè)或多個(gè)葉值字)由決策樹處理器管線的讀取節(jié)點(diǎn)電路或級(jí)讀取并且輸出到?jīng)Q策樹群集或某種其他輸出網(wǎng)絡(luò)。
在712處,在未設(shè)定葉標(biāo)記的情況下,決策樹處理器(例如,決策樹處理器管線的特征電路或級(jí))從特征存儲(chǔ)讀取由特征指示符所標(biāo)識(shí)的特征值。
在714處,決策樹處理器(例如,決策樹處理器管線的特征電路或級(jí))基于下一節(jié)點(diǎn)數(shù)據(jù)(諸如偏移值和鄰近當(dāng)前執(zhí)行的節(jié)點(diǎn)的下一決策樹節(jié)點(diǎn)),對(duì)可能的下一決策樹節(jié)點(diǎn)地址進(jìn)行預(yù)計(jì)算。決策樹處理器(例如,決策樹處理器管線的特征電路或級(jí))還或備選地預(yù)計(jì)算針對(duì)右或左葉數(shù)據(jù)的地址(諸如當(dāng)前決策樹節(jié)點(diǎn)的右或左葉字或值)。如該詳細(xì)描述內(nèi)的其他地方所指出的,決策樹節(jié)點(diǎn)表的節(jié)點(diǎn)的子集包括一個(gè)或多個(gè)葉值。葉節(jié)點(diǎn)的存在指示決策節(jié)點(diǎn)的執(zhí)行的可能結(jié)果是選擇輸出下一次線程穿過管線的葉值。因此,決策樹處理器根據(jù)存在是左葉還是左下一節(jié)點(diǎn)并且基于在所執(zhí)行的特定決策節(jié)點(diǎn)中存在是右葉值還是右下一節(jié)點(diǎn),對(duì)左葉數(shù)據(jù)地址或左下一節(jié)點(diǎn)地址之一和右葉數(shù)據(jù)地址或右下一節(jié)點(diǎn)地址之一進(jìn)行預(yù)計(jì)算。在714處的預(yù)計(jì)算發(fā)生在由決策樹處理器的決策節(jié)點(diǎn)的執(zhí)行之前。
在一些實(shí)施例中,通過處理下一節(jié)點(diǎn)數(shù)據(jù)諸如決策樹節(jié)點(diǎn)的偏移值(諸如通過將偏移值添加到當(dāng)前節(jié)點(diǎn)的位置以到達(dá)下一節(jié)點(diǎn)的位置)執(zhí)行下一節(jié)點(diǎn)地址中的一些下一節(jié)點(diǎn)地址的預(yù)計(jì)算。下一節(jié)點(diǎn)數(shù)據(jù)(諸如偏移值)是由在決策節(jié)點(diǎn)內(nèi)提供的不同的下一節(jié)點(diǎn)數(shù)據(jù)(諸如偏移值)或者由決策節(jié)點(diǎn)的info字段編碼,如該詳細(xì)描述內(nèi)的其他地方所描述的。預(yù)計(jì)算下一節(jié)點(diǎn)地址還基于針對(duì)下一節(jié)點(diǎn)地址中的一些下一節(jié)點(diǎn)地址的鄰接。
在716處,決策樹處理器(例如,決策樹處理器管線的執(zhí)行電路或級(jí))執(zhí)行決策樹節(jié)點(diǎn)。執(zhí)行決策樹節(jié)點(diǎn)包括將決策樹節(jié)點(diǎn)的閾值與從特征存儲(chǔ)所取回的特征值相比較。閾值可以是閾值索引值,并且特征值可以是特征索引值,如該詳細(xì)描述內(nèi)的其他地方所描述的。
在718處,決策樹處理器(例如,決策樹處理器管線的執(zhí)行電路或級(jí))確定針對(duì)要被取回和執(zhí)行的線程的下一決策樹節(jié)點(diǎn)和/或包含下一次線程被獲取到管線中待輸出的葉值的葉數(shù)據(jù)的地址?;趫?zhí)行決策樹節(jié)點(diǎn)的結(jié)果,確定對(duì)葉數(shù)據(jù)的下一決策樹節(jié)點(diǎn)或地址的選擇。比較的一些結(jié)果(諸如在特征值小于或等于閾值的情況下)導(dǎo)致基于下一節(jié)點(diǎn)數(shù)據(jù)(諸如下一節(jié)點(diǎn)偏移值)確定下一決策樹節(jié)點(diǎn)。比較的其他結(jié)果(諸如在特征值不小于或等于閾值的情況下)導(dǎo)致確定鄰近在決策樹處理器內(nèi)的決策樹相關(guān)聯(lián)的決策樹表內(nèi)的當(dāng)前執(zhí)行的節(jié)點(diǎn)的下一決策樹節(jié)點(diǎn)。
在720處,通過決策樹處理器(例如,通過決策樹處理器的線程電路或級(jí))做出所有線程是否已經(jīng)退出的確定。由于線程在710處輸出葉值并且完成,因而其在708處從決策樹線程的鏈接列表解鏈接。當(dāng)所有線程被解鏈接時(shí),完成該決策樹處理器124中的決策樹執(zhí)行。每個(gè)線程對(duì)應(yīng)于單個(gè)決策樹;因此一旦完成所有線程,決策樹處理器就輸出完成信號(hào)并且輸出來自決策樹執(zhí)行的一個(gè)或多個(gè)得分。
圖8圖示了根據(jù)各個(gè)實(shí)施例的通過決策樹評(píng)分器對(duì)多個(gè)決策樹進(jìn)行評(píng)分的過程800。在802處,決策樹評(píng)分器102從主機(jī)104或其他上游處理系統(tǒng)接收模型上下文108。在804處,決策樹評(píng)分器102將模型上下文108加載到多個(gè)決策樹群集122上。
在806處,決策樹評(píng)分器102從主機(jī)104或從上游處理系統(tǒng)接收特征向量112。在808處,決策樹評(píng)分器102將特征向量112提供給決策樹群集122中的第一決策樹群集。因此,在一些實(shí)施例中,將共同特征向量提供給決策樹群集122和決策樹處理器124。
在810處,決策樹評(píng)分器102從決策樹群集122之一接收最終得分和完成信號(hào),這指示決策樹群集已經(jīng)完成利用多個(gè)決策樹對(duì)特征向量的評(píng)分。在812處,決策樹評(píng)分器102將最終得分提供給主機(jī)104或下游處理系統(tǒng),其在一些實(shí)施例中可以包括另一決策樹評(píng)分器或其他系統(tǒng)。
圖9圖示了根據(jù)各個(gè)實(shí)施例的通過決策樹群集對(duì)多個(gè)決策樹進(jìn)行評(píng)分的過程900。在902處,決策樹群集(DTC)122從決策樹評(píng)分器102或從鄰近的DTC 122接收特征向量(諸如共同特征向量)。在904處,DTC 122將特征向量提供給其他鄰近的DTC 122。通過這種方式,特征向量被分布到?jīng)Q策樹評(píng)分器內(nèi)的所有DTC。
在906處,決策樹群集122使得多個(gè)DTC 122內(nèi)的多個(gè)決策樹處理器124開始執(zhí)行被加載到DTC 122上的模型上下文內(nèi)的多個(gè)決策樹。執(zhí)行多個(gè)決策樹可以是并發(fā)的,并且可以由多線程、多級(jí)管線決策樹處理器執(zhí)行。除了其他方面,執(zhí)行決策樹包括閾值(或閾值索引值)與共同特征向量的特征值(或特征索引值)的比較以及基于比較選擇下一節(jié)點(diǎn)和/或輸出值。執(zhí)行決策樹導(dǎo)致針對(duì)多個(gè)決策樹中的一些決策樹的對(duì)應(yīng)的得分。
在908處,DTC 122從決策樹處理器124接收由于決策樹處理器124上的決策樹的執(zhí)行的對(duì)應(yīng)的得分和完成信號(hào)。在910處,DTC 122從鄰近的DTC 122接收得分和完成信號(hào)。
在912處,基于接收到完成信號(hào)和得分,DTC 122利用來自鄰近的DTC 122的得分處理來自決策樹處理器124的得分。例如,DTC 122可以對(duì)得分求和來產(chǎn)生累積得分。在另一示例中,DTC 122可以將得分或來自DTC 122內(nèi)的決策樹處理器124的得分的總和附加到從鄰近的DTC 122所接收的得分?jǐn)?shù)據(jù)。
在914處,DTC 122將累積得分和完成信號(hào)傳播到鄰近的DTC 122,最終到達(dá)DTC 122的最后的DTC,其將最終得分提供給決策樹評(píng)分器102。通過這種方式,來自在DTC 122中的每個(gè)DTC內(nèi)的決策樹處理器124上執(zhí)行的決策樹中的每個(gè)決策樹的單獨(dú)的得分被累積到最終的得分?jǐn)?shù)據(jù)(諸如來自決策樹處理器中的單個(gè)決策樹處理器的得分的最后總和或得分的列表或得分的集合)并且被傳播到?jīng)Q策樹評(píng)分器102。
圖10圖示了根據(jù)各個(gè)實(shí)施例的對(duì)多個(gè)決策樹的閾值進(jìn)行編碼的過程1000。在1002處,決策樹編碼器106標(biāo)識(shí)對(duì)應(yīng)于特定特征的多個(gè)決策樹(諸如模型上下文1008內(nèi)的那些)的所有決策節(jié)點(diǎn)中引用的所有閾值。
在1004處,決策樹編碼器106確定與一個(gè)或多個(gè)決策樹中的特定特征相關(guān)聯(lián)的唯一閾值的列表。在一些實(shí)施例中,諸如以遞增或以遞減順序?qū)α斜磉M(jìn)行排序。在1006處,決策樹編碼器106至少部分基于與一個(gè)或多個(gè)決策樹中的特定特征相關(guān)聯(lián)的唯一閾值的排序列表中的值的數(shù)目,確定要用于表示針對(duì)閾值的閾值索引值的比特的數(shù)目。
在一個(gè)特定示例中,在與特定特征相關(guān)聯(lián)的閾值的總數(shù)的以2為底的對(duì)數(shù)小于4的情況下,閾值索引被編碼為4比特字,并且在與特定特征相關(guān)聯(lián)的閾值的總數(shù)的以2為底的對(duì)數(shù)小于8的情況下,閾值索引被編碼為8比特字。在與特定特征相關(guān)聯(lián)的閾值的總數(shù)的以2為底的對(duì)數(shù)大于8的情況下,多個(gè)特征用于表示編碼的決策樹中的特定特征,使得通過n/255確定用于表示特定特征的特征數(shù)目,其中n等于與特定特征相關(guān)聯(lián)的閾值的總數(shù),如該詳細(xì)描述內(nèi)的其他地方所描述的。8比特字用于表示針對(duì)這些多個(gè)特征的閾值。在其他實(shí)施例中,修改決策樹以代替具有超過預(yù)定值的多個(gè)唯一閾值的一個(gè)節(jié)點(diǎn)而包括多個(gè)決策節(jié)點(diǎn)。在不脫離實(shí)施例的范圍的情況下,其他示例是可能的。
在1008處,決策樹編碼器106確定針對(duì)唯一閾值的列表的多個(gè)閾值索引。在一些實(shí)施例中,索引值被分配給分類列表,使得與較小的閾值相關(guān)聯(lián)的閾值索引值小于與較大的閾值相關(guān)聯(lián)的閾值索引值,雖然在其他實(shí)施例中,較大的索引值被分配給較小的閾值。在一個(gè)特定示例中,唯一閾值中的最小的閾值被分配閾值索引值0,并且最大一個(gè)被分配等于唯一閾值的總數(shù)減去一的閾值索引值。在不脫離實(shí)施例的范圍的情況下,其他示例是可能的。
在1010處,決策樹編碼器106表示一個(gè)或多個(gè)決策樹,使得與特定特征相關(guān)聯(lián)的一個(gè)或多個(gè)決策樹的決策節(jié)點(diǎn)包括閾值索引值。針對(duì)多個(gè)決策樹中的至少一個(gè)決策節(jié)點(diǎn)中引用的每個(gè)特征重復(fù)過程1000,直到利用閾值索引值對(duì)多個(gè)決策樹中的所有閾值進(jìn)行編碼。
圖11圖示了根據(jù)各個(gè)實(shí)施例的對(duì)特征值的向量進(jìn)行編碼的過程1100。如上文關(guān)于圖10所描述的,對(duì)針對(duì)每個(gè)特征的閾值進(jìn)行編碼。對(duì)針對(duì)編碼的決策樹的集合要被評(píng)分的特征向量的特征值進(jìn)行編碼,使得特征值與編碼的閾值兼容。在1102處,特征向量編碼器110接收待由多個(gè)決策樹評(píng)分的特征向量112。
在1104處,特征向量編碼器110將與特定特征相關(guān)聯(lián)的特征值與對(duì)應(yīng)于特定特征(例如,上文所描述的列表tsi)的閾值相比較。在1106處,通過特征向量編碼器110做出以下確定:關(guān)于對(duì)應(yīng)于特征向量中的特定特征的特征值是否大于與具有特定特征的多個(gè)決策樹中的相關(guān)聯(lián)的閾值集中的最大閾值。
在1108處,一旦確定特征值不大于最大閾值(“否”路徑),則特征向量編碼器110標(biāo)識(shí)大于或等于特征值的唯一閾值的列表的最小的閾值。
在1110處,特征向量編碼器110對(duì)特征值進(jìn)行編碼以產(chǎn)生等于排序閾值索引值中的特定閾值索引值的編碼的特征值(例如,特征索引值),該特定閾值索引值對(duì)應(yīng)于唯一閾值的排序列表的最小閾值。
在1112處,一旦確定特征值大于最大閾值(“是”路徑),則特征向量編碼器110將特征索引值設(shè)定為大于最大的閾值索引值。在一個(gè)特定示例中,特征索引值被設(shè)定為等于與特征相關(guān)聯(lián)的唯一閾值的總數(shù),但是可以使用大于最大閾值索引值的任何數(shù)目。通過這種方式,對(duì)特征索引值進(jìn)行設(shè)定使得在決策樹執(zhí)行期間閾值索引值與對(duì)應(yīng)的特征索引值的比較的結(jié)果(諸如通過決策樹處理器124)相當(dāng)于對(duì)應(yīng)的閾值與對(duì)應(yīng)的特征值的比較的結(jié)果。
在單個(gè)塊中圖示了圖7-圖11的示例過程的操作,并且參考那些塊概述了圖7-圖11的示例過程的操作。描述操作的順序不旨在被解釋為限制的,并且任何數(shù)目的所描述的操作可以以任何順序組合、分離為子操作和/或并行執(zhí)行以實(shí)現(xiàn)過程。根據(jù)本公開的各個(gè)實(shí)施例的過程可以包括僅邏輯流程圖中所描繪的操作中的一些或全部操作。
示例計(jì)算系統(tǒng)
圖12是可用于執(zhí)行本文所描述的各種方法的示例計(jì)算系統(tǒng)1200的框圖。計(jì)算系統(tǒng)1200可以被配置為能夠?qū)崿F(xiàn)決策樹評(píng)分系統(tǒng)的全部或一部分的任何適合的計(jì)算設(shè)備(諸如主機(jī)104)。根據(jù)各種非限制性示例,適合的計(jì)算設(shè)備可以包括個(gè)人計(jì)算機(jī)(PC)、手持式設(shè)備、可穿戴智能設(shè)備、智能電話、平板計(jì)算機(jī)、膝上型計(jì)算機(jī)、臺(tái)式計(jì)算機(jī)、游戲系統(tǒng)、電子媒體播放器(諸如mp3播放器和電子書閱讀器)、服務(wù)器、服務(wù)器群、數(shù)據(jù)中心、專用計(jì)算機(jī)、這些的組合或能夠存儲(chǔ)和執(zhí)行本文所描述的決策樹評(píng)分系統(tǒng)的全部或一部分的任何其他(一個(gè)或多個(gè))計(jì)算設(shè)備。
在一個(gè)示例配置中,計(jì)算系統(tǒng)1200包括一個(gè)或多個(gè)處理器1202和存儲(chǔ)器1204。該計(jì)算系統(tǒng)1200還可以包含允許與各種其他系統(tǒng)通信的(一個(gè)或多個(gè))通信連接1206。該計(jì)算系統(tǒng)1200還可以包括一個(gè)或多個(gè)輸入設(shè)備1208(諸如鍵盤、鼠標(biāo)、筆、語音輸入設(shè)備、觸摸輸入設(shè)備等)和通信地耦合到(一個(gè)或多個(gè))處理器1202和存儲(chǔ)器1204的一個(gè)或多個(gè)輸出設(shè)備1210(諸如顯示器、揚(yáng)聲器、打印機(jī)等)。
存儲(chǔ)器1204可以存儲(chǔ)在(一個(gè)或多個(gè))處理器1202上可加載并且可執(zhí)行的程序指令以及在這些程序的執(zhí)行期間所生成和/或結(jié)合這些程序可用的數(shù)據(jù)。在所圖示的示例中,存儲(chǔ)器1204存儲(chǔ)操作系統(tǒng)1212,其提供計(jì)算系統(tǒng)1200的基本系統(tǒng)功能性,并且除了其他方面,還提供計(jì)算系統(tǒng)1200的其他程序和程序模塊的操作。
計(jì)算機(jī)可讀介質(zhì)
取決于所使用的計(jì)算設(shè)備的配置和類型,圖12中的計(jì)算系統(tǒng)1200的存儲(chǔ)器1204可以包括易失性存儲(chǔ)器(諸如隨機(jī)存取存儲(chǔ)器(RAM))和/或非易失性存儲(chǔ)器(諸如只讀存儲(chǔ)器(ROM)、閃速存儲(chǔ)器等)。存儲(chǔ)器1204還可以包括附加的可移除存儲(chǔ)和/或不可移除存儲(chǔ),包括但不限于閃速存儲(chǔ)器、磁性存儲(chǔ)器、光學(xué)存儲(chǔ)器和/或帶存儲(chǔ)器,其可以提供針對(duì)計(jì)算系統(tǒng)1200的計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊和其他數(shù)據(jù)的非易失性存儲(chǔ)。
存儲(chǔ)器1204是計(jì)算機(jī)可讀介質(zhì)的示例。計(jì)算機(jī)可讀介質(zhì)包括至少兩種類型的計(jì)算機(jī)可讀介質(zhì)(即,計(jì)算機(jī)存儲(chǔ)介質(zhì)和通信介質(zhì))。計(jì)算機(jī)存儲(chǔ)介質(zhì)包括以用于存儲(chǔ)諸如計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其他數(shù)據(jù)的信息的任何過程或技術(shù)實(shí)現(xiàn)的易失性和非易失性、可移除和不可移除介質(zhì)。計(jì)算機(jī)存儲(chǔ)介質(zhì)包括但不限于相變存儲(chǔ)器(PRAM)、靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)、動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)、其他類型的隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、電可擦除可編程只讀存儲(chǔ)器(EEPROM)、閃速存儲(chǔ)器或其他存儲(chǔ)器技術(shù)、壓縮磁盤只讀存儲(chǔ)器(CD-ROM)、數(shù)字多用光盤(DVD)或其他光學(xué)存儲(chǔ)、磁帶盒、磁帶、磁盤存儲(chǔ)或其他磁性存儲(chǔ)設(shè)備或可以用于存儲(chǔ)用于由計(jì)算設(shè)備訪問的信息的任何其他非傳輸介質(zhì)。相反,通信介質(zhì)可以實(shí)現(xiàn)計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊、調(diào)制數(shù)據(jù)信號(hào)(諸如載波或其他傳輸機(jī)制)中的其他數(shù)據(jù)。如本文所定義的,計(jì)算機(jī)存儲(chǔ)介質(zhì)不包括通信介質(zhì)。
結(jié)論
雖然本公開使用特定于結(jié)構(gòu)特征和/或方法動(dòng)作的語言,但是本發(fā)明不限于所描述的特定特征或動(dòng)作。而相反,特定特征和動(dòng)作被公開為實(shí)現(xiàn)本發(fā)明的說明性形式。