本申請(qǐng)案主張2014年7月25日申請(qǐng)的標(biāo)題為“通過向量處理器使用向量寄存器堆中的數(shù)據(jù)索引化累加器使標(biāo)量操作并行化,以及相關(guān)電路、方法和計(jì)算機(jī)可讀媒體(PARALLELIZATION OF SCALAR OPERATIONS BY VECTOR PROCESSORS USING DATA-INDEXED ACCUMULATORS IN VECTOR REGISTER FILES,AND RELATED CIRCUITS,METHODS,AND COMPUTER-READABLE MEDIA)”的第62/029,039號(hào)美國臨時(shí)專利申請(qǐng)案的優(yōu)先權(quán),所述美國臨時(shí)專利申請(qǐng)案以全文引用的方式并入本文中。
本申請(qǐng)案還主張2014年9月15日申請(qǐng)的標(biāo)題為“通過向量處理器使用向量寄存器堆中的數(shù)據(jù)索引化累加器使標(biāo)量操作并行化,以及相關(guān)電路、方法和計(jì)算機(jī)可讀媒體(PARALLELIZATION OF SCALAR OPERATIONS BY VECTOR PROCESSORS USING DATA-INDEXED ACCUMULATORS IN VECTOR REGISTER FILES,AND RELATED CIRCUITS,METHODS,AND COMPUTER-READABLE MEDIA)”的第14/486,326號(hào)美國專利申請(qǐng)案的優(yōu)先權(quán),所述美國專利申請(qǐng)案以全文引用的方式并入本文中。
技術(shù)領(lǐng)域
本發(fā)明的技術(shù)大體上涉及使用向量處理器的并行數(shù)據(jù)處理。
背景技術(shù):
現(xiàn)代計(jì)算機(jī)處理器遇到的一種類別的計(jì)算任務(wù)涉及基于輸入數(shù)據(jù)對(duì)數(shù)個(gè)累加器中的一者執(zhí)行標(biāo)量操作,其中輸入數(shù)據(jù)的值確定哪一累加器是每一標(biāo)量操作的目標(biāo)。此類別的計(jì)算任務(wù)的一非限制性實(shí)例是直方圖生成。為生成直方圖,處理器計(jì)算個(gè)別數(shù)據(jù)值或數(shù)據(jù)值范圍在輸入數(shù)據(jù)內(nèi)發(fā)生的累計(jì)頻率(例如,通過對(duì)每一數(shù)據(jù)值在輸入數(shù)據(jù)內(nèi)出現(xiàn)的次數(shù)進(jìn)行計(jì)數(shù))。以此方式,可確定數(shù)據(jù)值在輸入數(shù)據(jù)內(nèi)的總體分布,且可使用所述總體分布生成所述分布的視覺表示。
在圖像處理中頻繁使用直方圖,以通過繪制數(shù)字圖像內(nèi)的每一色調(diào)值的像素?cái)?shù)目來說明數(shù)字圖像中的色調(diào)分布。舉例來說,數(shù)字圖像可包括各自具有8位強(qiáng)度值的像素。因此,從數(shù)字圖像生成直方圖可需要處理器使用256(即,28)個(gè)累加器,其中每一累加器對(duì)應(yīng)于數(shù)字圖像的像素的可能的強(qiáng)度值中的一者。處理器進(jìn)行操作以檢查數(shù)字圖像的每一像素并且確定像素的強(qiáng)度值。接著使用像素的強(qiáng)度值確定應(yīng)使哪一累加器遞增。
例如直方圖生成的計(jì)算任務(wù)可為計(jì)算密集型,這是因?yàn)閷?duì)每一數(shù)據(jù)值的處理涉及接收數(shù)據(jù)值作為輸入,檢索對(duì)應(yīng)于所述數(shù)據(jù)值的累加器的值,以及基于對(duì)所檢索的值執(zhí)行的標(biāo)量操作將新值寫入到累加器。因此,每一數(shù)據(jù)值可需要處理多個(gè)處理器時(shí)鐘循環(huán)。此外,對(duì)輸入數(shù)據(jù)的處理可進(jìn)一步受用以更新累加器的帶寬的可用性限制。舉例來說,存儲(chǔ)有累加器的數(shù)據(jù)高速緩沖存儲(chǔ)器可在每一處理器時(shí)鐘循環(huán)期間僅提供有限數(shù)目的讀取路徑和/或?qū)懭肼窂健?/p>
用于優(yōu)化此類別的計(jì)算任務(wù)的一種方法涉及使用多指令多數(shù)據(jù)(MIMD)技術(shù)使標(biāo)量操作并行化的多核心處理的使用。在此方法下,多核心處理器的每一處理線程提供私有累加器集合,并且處理輸入數(shù)據(jù)的一段。在所有處理線程完成對(duì)輸入數(shù)據(jù)的相應(yīng)部分的處理之后,接著將用于處理線程中的每一者的累加器“減少”或加在一起。然而,此方法可在處理線程當(dāng)中引起相依性問題和/或存儲(chǔ)器沖突,且在使用額外處理群集時(shí)可能僅提供最小性能增加。
技術(shù)實(shí)現(xiàn)要素:
詳細(xì)描述中所揭示的方面包含通過向量處理器使用向量寄存器堆中的數(shù)據(jù)索引化累加器使標(biāo)量操作并行化。還揭示相關(guān)電路、方法和計(jì)算機(jī)可讀媒體。就此而言,在一個(gè)方面中,向量處理器經(jīng)配置以提供用于使標(biāo)量操作并行化的單指令多數(shù)據(jù)(SIMD)功能性。向量處理器包含提供多個(gè)向量寄存器的向量寄存器堆。每一向量寄存器邏輯上細(xì)分為多個(gè)累加器。所述多個(gè)向量寄存器中的累加器的總數(shù)目對(duì)應(yīng)于預(yù)期輸入數(shù)據(jù)中的可能的數(shù)據(jù)值的數(shù)目。向量寄存器堆還提供使得能夠在每一處理器時(shí)鐘循環(huán)期間做出到向量寄存器的多個(gè)寫入的多個(gè)寫入端口。為實(shí)現(xiàn)標(biāo)量操作的并行化,向量處理器經(jīng)配置以接收輸入數(shù)據(jù)向量。向量處理器接著對(duì)向量寄存器堆的每一寫入端口執(zhí)行向量操作以存取輸入數(shù)據(jù)值(例如,輸入數(shù)據(jù)向量的子集)。對(duì)于每一輸入數(shù)據(jù)值,確定寄存器索引和累加器索引。寄存器索引和累加器索引可一起充當(dāng)?shù)竭m當(dāng)累加器的映射,其中寄存器索引指示含有累加器的向量寄存器,且累加器索引指示向量寄存器內(nèi)的特定累加器。因此,累加器可被視為“經(jīng)數(shù)據(jù)索引化”,因?yàn)檩斎霐?shù)據(jù)值確定將作用于的累加器。對(duì)由寄存器索引指示的向量寄存器執(zhí)行標(biāo)量操作,其中基于寄存器索引和累加器索引進(jìn)行特定標(biāo)量操作。以此方式,向量處理器可利用向量寄存器堆的數(shù)據(jù)并行化能力增加處理帶寬,因此改進(jìn)總體處理性能。
在另一方面中,提供一種向量處理器,其包括向量寄存器堆。所述向量寄存器堆包含多個(gè)向量寄存器,每一向量寄存器經(jīng)配置以提供多個(gè)累加器。所述向量寄存器堆還經(jīng)配置以提供多個(gè)寫入端口。所述向量處理器經(jīng)配置以接收輸入數(shù)據(jù)向量。對(duì)于所述多個(gè)寫入端口中的每一寫入端口,所述向量處理器經(jīng)配置以執(zhí)行一或多個(gè)向量操作以存取所述輸入數(shù)據(jù)向量的輸入數(shù)據(jù)值。所述向量處理器經(jīng)進(jìn)一步配置以對(duì)于所述多個(gè)寫入端口中的每一寫入端口,基于所述輸入數(shù)據(jù)值確定指示所述多個(gè)向量寄存器當(dāng)中的向量寄存器的寄存器索引。所述向量處理器還經(jīng)配置以對(duì)于所述多個(gè)寫入端口中的每一寫入端口,基于所述輸入數(shù)據(jù)值確定指示所述向量寄存器的所述多個(gè)累加器當(dāng)中的累加器的累加器索引。所述向量處理器另外經(jīng)配置以基于所述寄存器索引和所述累加器索引,對(duì)由所述寄存器索引指示的所述向量寄存器執(zhí)行標(biāo)量操作。
在另一方面中,提供一種向量處理器,其包括用于接收輸入數(shù)據(jù)向量的裝置。所述向量處理器進(jìn)一步包括對(duì)于所述向量處理器的向量寄存器堆的多個(gè)寫入端口中的每一寫入端口,用于存取所述輸入數(shù)據(jù)向量的輸入數(shù)據(jù)值的裝置。所述向量處理器還包括對(duì)于所述多個(gè)寫入端口中的每一寫入端口,用于基于所述輸入數(shù)據(jù)值確定指示所述向量寄存器堆中的多個(gè)向量寄存器當(dāng)中的向量寄存器的寄存器索引的裝置。所述向量處理器另外包括對(duì)于所述多個(gè)寫入端口中的每一寫入端口,用于基于所述輸入數(shù)據(jù)值確定指示所述向量寄存器的多個(gè)累加器當(dāng)中的累加器的累加器索引的裝置。所述向量處理器進(jìn)一步包括對(duì)于所述多個(gè)寫入端口中的每一寫入端口,用于基于所述寄存器索引和所述累加器索引對(duì)由所述寄存器索引指示的所述向量寄存器執(zhí)行標(biāo)量操作的裝置。
在另一方面中,提供一種用于用向量處理器使標(biāo)量操作并行化的方法。所述方法包括通過向量處理器接收輸入數(shù)據(jù)向量。所述方法進(jìn)一步包括對(duì)于所述向量處理器的向量寄存器堆的多個(gè)寫入端口中的每一寫入端口,執(zhí)行一或多個(gè)向量操作以存取所述輸入數(shù)據(jù)向量的輸入數(shù)據(jù)值。所述方法還包括對(duì)于所述多個(gè)寫入端口中的每一寫入端口,執(zhí)行所述一或多個(gè)向量操作以基于所述輸入數(shù)據(jù)值,確定指示所述向量寄存器堆中的多個(gè)向量寄存器當(dāng)中的向量寄存器的寄存器索引。所述方法另外包括對(duì)于所述多個(gè)寫入端口中的每一寫入端口,執(zhí)行所述一或多個(gè)向量操作以基于所述輸入數(shù)據(jù)值,確定指示所述向量寄存器的多個(gè)累加器當(dāng)中的累加器的累加器索引。所述方法進(jìn)一步包括對(duì)于所述多個(gè)寫入端口中的每一寫入端口,執(zhí)行所述一或多個(gè)向量操作基于所述寄存器索引和所述累加器索引,對(duì)由所述寄存器索引指示的所述向量寄存器執(zhí)行標(biāo)量操作。
在另一方面中,提供一種存儲(chǔ)有計(jì)算機(jī)可執(zhí)行指令的非暫時(shí)性計(jì)算機(jī)可讀媒體。所述計(jì)算機(jī)可執(zhí)行指令致使向量處理器接收輸入數(shù)據(jù)向量。所述計(jì)算機(jī)可執(zhí)行指令進(jìn)一步致使所述向量處理器對(duì)于所述向量處理器的向量寄存器堆的多個(gè)寫入端口中的每一寫入端口,執(zhí)行一或多個(gè)向量操作以存取所述輸入數(shù)據(jù)向量的輸入數(shù)據(jù)值。所述計(jì)算機(jī)可執(zhí)行指令還致使所述向量處理器對(duì)于所述多個(gè)寫入端口中的每一寫入端口,執(zhí)行所述一或多個(gè)向量操作以基于所述輸入數(shù)據(jù)值,確定指示所述向量寄存器堆中的多個(gè)向量寄存器當(dāng)中的向量寄存器的寄存器索引。所述計(jì)算機(jī)可執(zhí)行指令另外致使所述向量處理器對(duì)于所述多個(gè)寫入端口中的每一寫入端口,執(zhí)行所述一或多個(gè)向量操作以基于所述輸入數(shù)據(jù)值,確定指示所述向量寄存器的多個(gè)累加器當(dāng)中的累加器的累加器索引。所述計(jì)算機(jī)可執(zhí)行指令進(jìn)一步致使所述向量處理器對(duì)于所述多個(gè)寫入端口中的每一寫入端口,執(zhí)行所述一或多個(gè)向量操作以基于所述寄存器索引和所述累加器索引,對(duì)由所述寄存器索引指示的所述向量寄存器執(zhí)行標(biāo)量操作。
附圖說明
圖1是可包含使標(biāo)量操作并行化的向量處理器的示范性計(jì)算機(jī)處理器的框圖;
圖2是用于使標(biāo)量操作并行化的圖1的向量處理器內(nèi)的示范性通信流和邏輯元件的框圖;
圖3是說明圖1的向量處理器處理輸入數(shù)據(jù)值的示范性結(jié)果的圖示;
圖4是說明用于通過圖1的向量處理器使用向量寄存器堆中的數(shù)據(jù)索引化累加器使標(biāo)量操作并行化的示范性過程的流程圖;
圖5是說明用于通過圖1的向量處理器合并標(biāo)量操作的進(jìn)一步示范性操作的流程圖;和
圖6是可包含圖1的向量處理器的示范性基于處理器的系統(tǒng)的框圖。
具體實(shí)施方式
現(xiàn)參考各圖,描述本發(fā)明的若干示范性方面。詞語“示范性”在本文中用于意指“充當(dāng)實(shí)例、例子或說明”。本文中描述為“示范性”的任何方面未必理解為比其它方面優(yōu)選或有利。
在詳細(xì)描述中所揭示的方面包含通過向量處理器使用向量寄存器堆中的數(shù)據(jù)索引化累加器使標(biāo)量操作并行化。還揭示相關(guān)電路、方法和計(jì)算機(jī)可讀媒體。就此而言,在一個(gè)方面中,向量處理器經(jīng)配置以提供用于使標(biāo)量操作并行化的單指令多數(shù)據(jù)(SIMD)功能性。向量處理器包含提供多個(gè)向量寄存器的向量寄存器堆。每一向量寄存器邏輯上細(xì)分為多個(gè)累加器。所述多個(gè)向量寄存器中的累加器的總數(shù)目對(duì)應(yīng)于預(yù)期輸入數(shù)據(jù)中的可能的數(shù)據(jù)值的數(shù)目。向量寄存器堆還提供使得能夠在每一處理器時(shí)鐘循環(huán)期間做出到向量寄存器的多個(gè)寫入的多個(gè)寫入端口。為實(shí)現(xiàn)標(biāo)量操作的并行化,向量處理器經(jīng)配置以接收輸入數(shù)據(jù)向量。向量處理器接著對(duì)向量寄存器堆的每一寫入端口執(zhí)行向量操作以存取輸入數(shù)據(jù)值(例如,輸入數(shù)據(jù)向量的子集)。對(duì)于每一輸入數(shù)據(jù)值,確定寄存器索引和累加器索引。寄存器索引和累加器索引可一起充當(dāng)?shù)竭m當(dāng)累加器的映射,其中寄存器索引指示含有累加器的向量寄存器,且累加器索引指示向量寄存器內(nèi)的累加器。因此,累加器可被視為“經(jīng)數(shù)據(jù)索引化”,因?yàn)檩斎霐?shù)據(jù)值確定將作用于的累加器。對(duì)由寄存器索引指示的向量寄存器執(zhí)行標(biāo)量操作,其中基于寄存器索引和累加器索引進(jìn)行特定標(biāo)量操作。以此方式,向量處理器可利用向量寄存器堆的數(shù)據(jù)并行化能力增加處理帶寬,因此改進(jìn)總體處理性能。
就此而言,圖1是包含用于使標(biāo)量操作并行化的示范性向量處理器12的計(jì)算機(jī)處理器10的示意圖。如下文將更詳細(xì)地論述,向量處理器12包含執(zhí)行單元14和向量寄存器堆16,其與其它特定示范性電路和功能性一起提供包含本文中所揭示的示范性向量處理操作的向量處理操作。計(jì)算機(jī)處理器10和其向量處理器12可涵蓋已知數(shù)字邏輯元件、半導(dǎo)體電路、處理核心和/或存儲(chǔ)器結(jié)構(gòu)以其它元件或其組合中的任一者。
在論述特定電路和經(jīng)配置以由本發(fā)明中的用于使用向量寄存器堆16使標(biāo)量操作并行化的向量處理器12提供的向量處理操作(其開始于圖2)之前,首先描述圖1中的計(jì)算機(jī)處理器10的組件。如上所述,向量處理器12包含向量寄存器堆16,其提供向量寄存器18(0)到18(X)。向量寄存器18(0)到18(X)可存儲(chǔ)由向量處理器12以SIMD方式執(zhí)行的向量指令將作用于的數(shù)據(jù)。在一些方面中,可使用多個(gè)物理寄存器堆(未示出)實(shí)施向量寄存器堆16,每一物理寄存器堆每個(gè)處理器時(shí)鐘循環(huán)提供多個(gè)讀取端口20(0)到20(Y)和多個(gè)寫入端口22(0)到22(Z)。物理寄存器堆可包括例如快速隨機(jī)存取存儲(chǔ)器(RAM)。向量寄存器堆16可包括多于一個(gè)物理寄存器堆,每一物理寄存器堆提供其自身的讀取端口和寫入端口。舉例來說,向量寄存器堆16可為512位寬,且可實(shí)施為四(4)個(gè)128位寬物理寄存器堆,每一物理寄存器堆每個(gè)處理器時(shí)鐘循環(huán)提供八(8)個(gè)讀取端口和四(4)個(gè)寫入端口。為支持向量處理器12的所說明元件,計(jì)算機(jī)處理器10和/或向量處理器12可包含其它額外組件,為清楚起見,圖1省略了這些額外組件。
繼續(xù)參考圖1,在此方面中的計(jì)算機(jī)處理器10還包含標(biāo)量處理器24,以除由向量處理器12提供的向量處理之外,還在計(jì)算機(jī)處理器10提供標(biāo)量處理。以此方式,計(jì)算機(jī)處理器10可經(jīng)配置以支持基于所執(zhí)行的指令的類型的向量和標(biāo)量指令操作兩者以用于高效率操作。在一些方面中,作為非限制性實(shí)例,標(biāo)量處理器24可為32位精簡(jiǎn)指令集計(jì)算(RISC)標(biāo)量處理器。在此實(shí)例中,標(biāo)量處理器24包含用于支持標(biāo)量指令處理的算術(shù)邏輯單元(ALU)26。標(biāo)量處理器24還可包含供標(biāo)量處理器24在執(zhí)行標(biāo)量指令時(shí)使用的通用寄存器(GPR)28。通用寄存器28可以通信方式耦合到ALU 26,如由箭頭30指示。標(biāo)量處理器24可進(jìn)一步包含以通信方式耦合到ALU 26的數(shù)據(jù)高速緩沖存儲(chǔ)器32,如由箭頭34所展示。數(shù)據(jù)高速緩沖存儲(chǔ)器32可用于ALU 26所頻繁使用的數(shù)據(jù)的高速存儲(chǔ)和恢復(fù)。
計(jì)算機(jī)處理器10進(jìn)一步包含指令分配電路36,其經(jīng)配置以從程序存儲(chǔ)器38提取指令,如由箭頭40指示。指令分配電路36可解碼所提取的指令?;谒鲋噶畹念愋?,指令分配電路36可經(jīng)由標(biāo)量數(shù)據(jù)路徑42將所提取的指令引導(dǎo)到標(biāo)量處理器24,或通過向量數(shù)據(jù)路徑44將所提取的指令引導(dǎo)到向量處理器12。
如上文所論述,計(jì)算機(jī)處理器10可遇到的一種類別的計(jì)算任務(wù)涉及對(duì)數(shù)據(jù)索引化累加器(即,確定哪一累加器是標(biāo)量操作的目標(biāo)的輸入數(shù)據(jù)的值所確定的累加器)執(zhí)行標(biāo)量操作。使用標(biāo)量處理器24執(zhí)行這些計(jì)算任務(wù)可引起次最佳處理器性能。作為一實(shí)例,每一輸入數(shù)據(jù)值可需要多個(gè)處理器時(shí)鐘循環(huán)以用于標(biāo)量處理器24進(jìn)行處理。對(duì)輸入數(shù)據(jù)的處理可進(jìn)一步受可用以標(biāo)量處理器24更新累加器的帶寬限制。舉例來說,累加器可存儲(chǔ)于數(shù)據(jù)高速緩沖存儲(chǔ)器32中,所述數(shù)據(jù)高速緩沖存儲(chǔ)器可在每一處理器時(shí)鐘循環(huán)期間僅提供有限數(shù)目的讀取端口(未示出)和/或?qū)懭攵丝?未示出)。
就此而言,圖1的向量處理器12經(jīng)配置以使用向量寄存器堆16中的數(shù)據(jù)索引化累加器提供標(biāo)量操作的并行化。為說明在標(biāo)量操作的并行化期間向量處理器12內(nèi)的示范性通信流和邏輯元件,提供圖2。出于說明的目的,將由向量處理器12執(zhí)行的計(jì)算任務(wù)假設(shè)為含有各自具有8位強(qiáng)度值的像素的數(shù)字圖像的直方圖的生成。
在圖2的實(shí)例中,向量處理器12的向量寄存器堆16包含總計(jì)三十二(32)個(gè)向量寄存器18,其被稱為向量寄存器18(0)到18(31)。向量寄存器18中的每一者邏輯上細(xì)分為八個(gè)累加器(“ACC”)46,其中向量寄存器18(0)含有累加器46(0)到46(7),向量寄存器18(1)含有累加器46(8)到46(15),以此類推,一直到向量寄存器18(31)含有累加器46(248)到46(255)。累加器46(0)到46(255)中的每一者分別存儲(chǔ)指示數(shù)字圖像中的具有0到255的強(qiáng)度的像素的計(jì)數(shù)的值。因此,在此實(shí)例中將通過向量處理器12并行化的標(biāo)量操作包括使存儲(chǔ)于累加器46(0)到46(255)中的一或多者中的值遞增。應(yīng)理解,在一些方面中,將并行化的標(biāo)量操作可包括對(duì)存儲(chǔ)于累加器46(0)到46(255)中的一或多者中的值執(zhí)行的額外和/或不同的算術(shù)和/或邏輯操作。
在此實(shí)例中的向量寄存器堆16提供總計(jì)四(4)個(gè)寫入端口22(0)到22(3),使得能夠在每一處理器時(shí)鐘循環(huán)期間更新向量寄存器18中的多達(dá)四(4)個(gè)向量寄存器。寫入端口22(0)到22(3)對(duì)應(yīng)于圖1的的寫入端口22(0)到22(Z),且提供對(duì)應(yīng)于寫入端口22(0)到22(Z)的功能性的功能性。向量寄存器堆16的一些方面可提供比圖2中所說明的更多或更少的寫入端口22。在一些方面中,在圖2中展示的向量寄存器堆16可對(duì)應(yīng)于多個(gè)物理寄存器堆(未示出)中的一者,每一物理寄存器堆提供寫入端口22。向量寄存器堆16因此可進(jìn)一步包括圖2中未示出的額外物理寄存器堆和額外寫入端口22。
向量處理器12接收表示數(shù)字圖像內(nèi)的將用于生成直方圖的像素強(qiáng)度值集合的輸入數(shù)據(jù)向量19。在此實(shí)例中,輸入數(shù)據(jù)向量19是包括編號(hào)為0到15的十六(16)個(gè)值的向量。根據(jù)一些方面,輸入數(shù)據(jù)向量19可為十六(16)個(gè)8位值的128位向量。作為非限制性實(shí)例,輸入數(shù)據(jù)向量19可經(jīng)接收作為輸入流(未示出),或可存儲(chǔ)于向量處理器12可存取的寄存器或其它存儲(chǔ)器(未示出)中。在一些方面中,輸入數(shù)據(jù)向量19可包括比在圖2中所展示的更多或更少的位和/或更多或更少的值。
對(duì)于寫入端口22(0)到22(3)中的每一者,向量處理器12提供對(duì)應(yīng)的多路復(fù)用器邏輯塊48(0)到48(3)。在一些方面中,多路復(fù)用器邏輯塊48(0)到48(3)可實(shí)施為定義用于執(zhí)行本文中所描述的操作的向量指令的微碼。每一多路復(fù)用器邏輯塊48接收輸入數(shù)據(jù)向量19的子集作為輸入,并且從所述子集選擇一個(gè)輸入數(shù)據(jù)值50以用于在處理器時(shí)鐘循環(huán)期間進(jìn)行處理。在圖2的實(shí)例中,多路復(fù)用器邏輯塊48中的每一者從輸入數(shù)據(jù)向量19接收四(4)個(gè)值,并且從所述四(4)個(gè)值選擇一個(gè)輸入數(shù)據(jù)值50。因此,向量處理器12可在四(4)個(gè)處理器時(shí)鐘循環(huán)中處理完整輸入數(shù)據(jù)向量19。
如上文所論述,當(dāng)生成直方圖時(shí),輸入數(shù)據(jù)值50中的每一者指示將使哪一累加器46遞增。舉例來說,如果輸入數(shù)據(jù)值50(0)是255(指示像素強(qiáng)度為255),那么向量處理器12應(yīng)致使對(duì)應(yīng)的累加器46(255)遞增。因?yàn)槔奂悠?6存儲(chǔ)于向量寄存器18(0)到18(31)內(nèi),所以需要向量處理器12解碼輸入數(shù)據(jù)值50以確定哪一特定向量寄存器18含有將遞增的累加器46。因此,如圖2所示的向量處理器12提供分別用于多路復(fù)用器邏輯塊48(0)到48(3)的寄存器解碼器(“REG DEC”)52(0)到52(3)。在一些方面中,寄存器解碼器52(0)到52(3)可實(shí)施為定義用于執(zhí)行本文中所描述的操作的向量指令的微碼。
寄存器解碼器52(0)到52(3)中的每一者從對(duì)應(yīng)多路復(fù)用器邏輯塊48(0)到48(3)接收相應(yīng)輸入數(shù)據(jù)值50(0)到50(3),并且對(duì)輸入數(shù)據(jù)值50(0)到50(3)分別進(jìn)行操作以生成寄存器索引54(0)到54(3)。寄存器索引54(0)到54(3)中的每一者指示含有將遞增的累加器46的向量寄存器18中的一者。在圖2的實(shí)例中,寄存器解碼器52中的每一者對(duì)對(duì)應(yīng)輸入數(shù)據(jù)值50進(jìn)行操作以生成具有在從0到31的范圍內(nèi)的值的寄存器索引54。因?yàn)樵诖藢?shí)例中的輸入數(shù)據(jù)值50中的每一者是8位值,所以生成寄存器索引54可通過執(zhí)行輸入數(shù)據(jù)值50中的每一者的八(8)位邏輯右移三(3)位而實(shí)現(xiàn)。應(yīng)理解,寄存器解碼器52可執(zhí)行額外和/或不同操作以生成寄存器索引54。
如圖2中所見,向量寄存器18(0)到18(31)中的每一者含有八(8)個(gè)累加器46。因此,進(jìn)一步需要向量處理器12解碼輸入數(shù)據(jù)值50以確定由寄存器索引54標(biāo)識(shí)的向量寄存器18內(nèi)的哪一特定累加器46應(yīng)遞增。就此而言,向量處理器12分別為多路復(fù)用器邏輯塊48(0)到48(3)提供累加器解碼器(“ACC DEC”)56(0)到56(3)。一些方面可提供累加器解碼器56(0)到56(3)實(shí)施為定義用于執(zhí)行本文中所描述的操作的向量指令的微碼。
累加器解碼器56(0)到56(3)從對(duì)應(yīng)多路復(fù)用器邏輯塊48(0)到48(3)接收相應(yīng)輸入數(shù)據(jù)值50(0)到50(3),并且分別對(duì)輸入數(shù)據(jù)值50(0)到50(3)進(jìn)行操作以生成累加器索引58(0)到58(3)。累加器索引58(0)到58(3)中的每一者指示由寄存器索引54中的對(duì)應(yīng)一者標(biāo)識(shí)的向量寄存器18中的一者內(nèi)的累加器46中的一者。在此實(shí)例中,累加器索引58中的每一者必須為在從0到7的范圍內(nèi)的值(即,3位值),指示由寄存器索引54中的對(duì)應(yīng)一者標(biāo)識(shí)的向量寄存器18中的一者內(nèi)的八(8)個(gè)累加器46中的哪一者將遞增。因此,生成累加器索引58可通過掩蔽輸入數(shù)據(jù)值50中的每一者的五(5)個(gè)高階位(例如,通過執(zhí)行邏輯“與”(AND)操作)而實(shí)現(xiàn)。應(yīng)理解,累加器解碼器56可執(zhí)行額外和/或不同操作以生成累加器索引58。
寄存器索引54和累加器索引58一旦生成,向量處理器12便可合成向量指令(未示出)以對(duì)向量寄存器18以適當(dāng)方式執(zhí)行標(biāo)量操作。在圖2的實(shí)例中,其中所執(zhí)行的計(jì)算任務(wù)是直方圖生成,向量處理器12可基于寄存器索引54和對(duì)應(yīng)累加器索引58執(zhí)行向量指令以使累加器46遞增。在一些方面中,使多個(gè)累加器46遞增可包含以下操作:檢索向量寄存器18中的一者的寄存器值,基于寄存器值和累加器索引58中的對(duì)應(yīng)一者執(zhí)行標(biāo)量操作(在此實(shí)例中為加法)以生成結(jié)果值,以及將結(jié)果值存儲(chǔ)于向量寄存器18中。應(yīng)理解,一些方面可提供所述結(jié)果值可由除在此實(shí)例中論述的那些標(biāo)量操作以外的額外和/或其它標(biāo)量操作產(chǎn)生。將進(jìn)一步理解,標(biāo)量操作可包含例如計(jì)算加權(quán)直方圖,其中被包含為輸入數(shù)據(jù)值50(0)到50(3)中的一者的一部分的加權(quán)值(未示出)加到向量寄存器18中的一者的寄存器值以生成結(jié)果值。
如上文所論述,在圖2的實(shí)例中,向量處理器12在每一處理器時(shí)鐘循環(huán)期間可實(shí)現(xiàn)四(4)個(gè)標(biāo)量操作(其中每一者是針對(duì)寫入端口22(0)到22(3)中的一者)。在一些情況下,向量處理器12可確定可合并標(biāo)量操作中的一或多者。舉例來說,輸入數(shù)據(jù)值50中的兩者或更多者可為不同的,但其值可為足夠接近的以使得在單一處理器時(shí)鐘循環(huán)期間可能需要使向量寄存器18中的單一者內(nèi)的累加器46中的兩者或更多者遞增。輸入數(shù)據(jù)值50中的兩者或更多者甚至可為相同的,在此情況下,在處理器時(shí)鐘循環(huán)期間可能需要不止一次地使累加器46中的相同者遞增。因此,在一些方面中,向量處理器12可提供沖突合并邏輯塊60以用于確定標(biāo)量操作中的一或多者是否可合并為單一經(jīng)合并標(biāo)量操作。在一些方面中,沖突合并邏輯塊60可實(shí)施為定義用于執(zhí)行本文中所描述的操作的向量指令的微碼。
一些方面可提供沖突合并邏輯塊60可確定對(duì)應(yīng)于寫入端口22中的兩者或更多者的寄存器索引54中的兩者或更多者是相同的。在此情況下,向量處理器12可合成向量指令以將對(duì)由匹配寄存器索引54指示的向量寄存器18內(nèi)的多個(gè)累加器46執(zhí)行的標(biāo)量操作合并為單一經(jīng)合并標(biāo)量操作。在一些方面中,沖突合并邏輯塊60可進(jìn)一步確定對(duì)應(yīng)于匹配寄存器索引54的累加器索引58中的兩者或更多者也是相同的。因此,向量處理器12可合成向量指令以將對(duì)由匹配累加器索引58指示的累加器46執(zhí)行的標(biāo)量操作合并為經(jīng)合并標(biāo)量操作(例如,以使累加器46遞增大于一)。
如上所述,在一些方面中,圖1的向量寄存器堆16可實(shí)施為多個(gè)物理寄存器堆(未示出),每一物理寄存器堆提供多個(gè)寫入端口22中的一或多個(gè)寫入端口。在此些方面中向量處理器12可經(jīng)配置以同時(shí)對(duì)所述多個(gè)物理寄存器堆中的每一者執(zhí)行上文關(guān)于圖2所描述的操作,從而引起甚至更大程度的并行化。作為非限制性實(shí)例,可接收輸入數(shù)據(jù)向量19作為多個(gè)輸入數(shù)據(jù)向量子集(未示出),所述多個(gè)輸入數(shù)據(jù)向量子集中的每一者可對(duì)應(yīng)于所述多個(gè)物理寄存器堆中的一者。向量處理器12接著可同時(shí)對(duì)每一物理寄存器堆的每一寫入端口22執(zhí)行向量操作以同時(shí)處理所述輸入數(shù)據(jù)向量子集。以此方式,多個(gè)物理寄存器堆中的每一者可用作用于將輸入數(shù)據(jù)的一部分的并行處理成對(duì)應(yīng)于輸入數(shù)據(jù)的所述部分的直方圖的單獨(dú)“通道”。在一些方面中,向量處理器12接著可將每一物理寄存器堆的向量寄存器18中的對(duì)應(yīng)累加器46求和以產(chǎn)生針對(duì)輸入數(shù)據(jù)的整個(gè)主體的直方圖。
圖3說明處理輸入數(shù)據(jù)向量64的輸入數(shù)據(jù)值62的圖2的向量處理器12的示范性結(jié)果。為清楚起見,圖3僅展示進(jìn)行處理的單一輸入數(shù)據(jù)值62,其對(duì)應(yīng)于經(jīng)由圖2的向量寄存器堆16的寫入端口22中的一者的標(biāo)量操作。然而,應(yīng)理解,向量處理器12可對(duì)圖2的向量寄存器堆16的多個(gè)寫入端口22并行地執(zhí)行圖3所說明的處理的多個(gè)例子。
在圖3中,向量處理器12的向量寄存器堆16包含總計(jì)三十二(32)個(gè)向量寄存器18,其被稱為向量寄存器18(0)到18(31)。向量寄存器18中的每一者邏輯上細(xì)分為八(8)個(gè)累加器(“ACC”)46,其中向量寄存器18(0)含有累加器46(0)到46(7),以此類推,一直到向量寄存器18(31)含有累加器46(248)到46(255)。累加器46中的每一者主開始處理之前初始化為值零(0)。
在圖3中,向量處理器12接收輸入數(shù)據(jù)向量64,并且可將包括輸入數(shù)據(jù)向量64的8位值66(0)到66(3)的子集提供到多路復(fù)用器邏輯塊68。多路復(fù)用器邏輯塊68選擇值66中的一者(在此實(shí)例中為值66(3))作為輸入數(shù)據(jù)值62。如圖3中所見,輸入數(shù)據(jù)值62具有二進(jìn)制值1111 1010(在十進(jìn)制中為250),表示像素強(qiáng)度值為250。接著將輸入數(shù)據(jù)值62提供到寄存器解碼器(“REG DEC”)70和累加器解碼器(“ACC DEC”)72,以將輸入數(shù)據(jù)值62映射到適當(dāng)?shù)南蛄考拇嫫?8和適當(dāng)?shù)睦奂悠?6。
在此實(shí)例中,寄存器解碼器70通過執(zhí)行輸入數(shù)據(jù)值62的多個(gè)位邏輯右移三(3)位來產(chǎn)生輸入數(shù)據(jù)值62的寄存器索引74。如圖3中所見的結(jié)果是具有二進(jìn)制值0001 1111(在十進(jìn)制中為31)的寄存器索引74。因此,寄存器索引74指示向量寄存器18(31)含有將通過向量處理器12遞增的累加器46。累加器解碼器72通過掩蔽輸入數(shù)據(jù)值62的五(5)個(gè)高階位來產(chǎn)生累加器索引76。此是通過對(duì)輸入數(shù)據(jù)值62和二進(jìn)制值111(在十進(jìn)制中為7)執(zhí)行邏輯“與”操作而實(shí)現(xiàn)。所得累加器索引76具有二進(jìn)制值0000 0010,或在十進(jìn)制中為2?;诶奂悠魉饕?6,向量處理器12可確定向量寄存器18(31)的第三累加器46(從右邊從零計(jì)數(shù))是標(biāo)量操作的目標(biāo)。如圖3中所展示,此對(duì)應(yīng)于累加器46(250)。因此,向量處理器12執(zhí)行向量指令以執(zhí)行標(biāo)量操作(在此情況下,使累加器46(250)遞增一)。
圖4是說明用于通過圖2的向量處理器12使用向量寄存器堆16中的累加器46使標(biāo)量操作并行化的示范性過程的流程圖。為清楚起見,在描述圖4時(shí)引用圖2和3的元件。在圖4中,操作以向量處理器12接收輸入數(shù)據(jù)向量64(框78)開始。向量處理器12接著執(zhí)行向量指令以對(duì)向量處理器12的向量寄存器堆16的多個(gè)寫入端口22中的每一寫入端口22(0)到22(Z)執(zhí)行操作,如由框80指示。應(yīng)理解,可同時(shí)對(duì)多個(gè)寫入端口22中的每一者執(zhí)行框80中所說明的操作。
向量處理器12首先存取輸入數(shù)據(jù)向量64的輸入數(shù)據(jù)值62(框82)。如上文所論述,輸入數(shù)據(jù)值62可表示輸入數(shù)據(jù)向量64的子集?;谳斎霐?shù)據(jù)值62,向量處理器12確定指示向量寄存器堆16中的多個(gè)向量寄存器18當(dāng)中的向量寄存器18(31)的寄存器索引74(框84)。在一些方面中,向量處理器12可通過執(zhí)行輸入數(shù)據(jù)值62的多個(gè)位的一或多個(gè)邏輯右移來確定寄存器索引74(框86)。向量處理器12還基于輸入數(shù)據(jù)值62確定指示向量寄存器18的多個(gè)累加器46當(dāng)中的累加器46(250)的累加器索引76(框88)。一些方面可提供向量處理器12通過將輸入數(shù)據(jù)值62的一或多個(gè)高階位掩蔽為零(0)來確定累加器索引76(框90)。應(yīng)理解,向量處理器12可執(zhí)行額外和/或其它操作以基于輸入數(shù)據(jù)值62確定寄存器索引74和/或累加器索引76。
向量處理器12接著基于寄存器索引74和累加器索引76對(duì)由寄存器索引74指示的向量寄存器18(31)執(zhí)行標(biāo)量操作(框92)。作為非限制性實(shí)例,標(biāo)量操作可包括用以使由累加器索引76指示的累加器46遞增的操作。在一些方面中,標(biāo)量操作可包含對(duì)累加器46的額外和/或其它算術(shù)和/或邏輯操作。舉例來說,標(biāo)量操作可包含根據(jù)被包含為輸入數(shù)據(jù)值62的一部分的加權(quán)值(未示出)計(jì)算遞增的累加器46中加權(quán)直方圖。
如上文關(guān)于圖2所論述,向量處理器12可在一些情況下通過合并將在單一處理器時(shí)鐘循環(huán)期間執(zhí)行的標(biāo)量操作來改進(jìn)其性能。就此而言,提供圖5以說明用于合并標(biāo)量操作的進(jìn)一步示范性操作的流程圖。為清楚起見,在描述圖5時(shí)引用圖2和3的元件。應(yīng)理解,可在圖4的框88和90的操作之后進(jìn)行圖5中所說明的操作。
在圖5中,向量處理器12基于針對(duì)多個(gè)寫入端口22中的每一寫入端口22(0)到22(Z)的寄存器索引54和累加器索引58中的一或多者,確定可合并針對(duì)多個(gè)寫入端口22中的對(duì)應(yīng)兩個(gè)或更多個(gè)端口22(0)到22(Z)的兩個(gè)或更多個(gè)標(biāo)量操作(框94)。在一些方面中,向量處理器12可確定可通過確定針對(duì)第一寫入端口22(0)到22(Z)的寄存器索引54與針對(duì)多個(gè)寫入端口22中的一或多個(gè)其它寫入端口22(0)到22(Z)的寄存器索引54相同,來合并兩個(gè)或更多個(gè)標(biāo)量操作(框96)。一些方面可提供向量處理器12可確定可通過進(jìn)一步確定針對(duì)第一寫入端口22(0)到22(Z)的累加器索引58與針對(duì)多個(gè)寫入端口22中的一或多個(gè)其它寫入端口22(0)到22(Z)的累加器索引58相同,來合并兩個(gè)或更多個(gè)標(biāo)量操作(框98)。
向量處理器12接下來將兩個(gè)或更多個(gè)標(biāo)量操作組合為經(jīng)合并標(biāo)量操作(框100)。作為非限制性實(shí)例,使相同累加器46遞增一(1)的兩個(gè)標(biāo)量操作可合并成經(jīng)合并標(biāo)量操作以使累加器46遞增二(2)。向量處理器12接著通過執(zhí)行經(jīng)合并標(biāo)量操作來執(zhí)行標(biāo)量操作(框102)。
根據(jù)本文中所揭示的各方面通過向量處理器使用向量寄存器堆中的數(shù)據(jù)索引化累加器使標(biāo)量操作并行化可提供于任何基于處理器的裝置中或集成到任何基于處理器的裝置中。實(shí)例包含但不限于機(jī)頂盒、娛樂單元、導(dǎo)航裝置、通信裝置、固定位置數(shù)據(jù)單元、移動(dòng)位置數(shù)據(jù)單元、移動(dòng)電話、蜂窩式電話、計(jì)算機(jī)、便攜式計(jì)算機(jī)、桌上型計(jì)算機(jī)、個(gè)人數(shù)字助理(PDA)、監(jiān)視器、計(jì)算機(jī)監(jiān)視器、電視機(jī)、調(diào)諧器、無線電、衛(wèi)星無線電、音樂播放器、數(shù)字音樂播放器、便攜式音樂播放器、數(shù)字視頻播放器、視頻播放器、數(shù)字影音光盤(DVD)播放器和便攜式數(shù)字視頻播放器。
就此而言,圖6說明可使用圖1到3中所說明的向量處理器(VP)12的基于處理器的系統(tǒng)104的實(shí)例。在此實(shí)例中,基于處理器的系統(tǒng)104包含一或多個(gè)中央處理單元(CPU)106,每一中央處理單元包含一或多個(gè)處理器108。一或多個(gè)處理器108可包含圖1到3的向量處理器(VP)12。CPU 106可為主控裝置。CPU 106可具有耦合到處理器108以用于快速存取暫時(shí)存儲(chǔ)的數(shù)據(jù)的高速緩沖存儲(chǔ)器110。CPU 106耦合到系統(tǒng)總線112且可為包含在基于處理器的系統(tǒng)104中的互耦主控和從屬裝置。如所熟知,CPU 106通過經(jīng)由系統(tǒng)總線112交換地址、控制和數(shù)據(jù)信息與這些其它裝置通信。舉例來說,CPU 106可將總線事務(wù)請(qǐng)求傳達(dá)到存儲(chǔ)器控制器114(其作為從屬裝置的一實(shí)例)。
其它主控和從屬裝置可連接到系統(tǒng)總線112。如圖6中所說明,作為實(shí)例,這些裝置可包含存儲(chǔ)器系統(tǒng)116、一或多個(gè)輸入裝置118、一或多個(gè)輸出裝置120、一或多個(gè)網(wǎng)絡(luò)接口裝置122,以及一或多個(gè)顯示器控制器124。輸入裝置118可包含任何類型的輸入裝置,包含但不限于輸入鍵、開關(guān)、語音處理器等。輸出裝置120可包含任何類型的輸出裝置,包含但不限于音頻、視頻、其它視覺指示符等。網(wǎng)絡(luò)接口裝置122可為經(jīng)配置以允許將數(shù)據(jù)交換到網(wǎng)絡(luò)126以及從網(wǎng)絡(luò)126交換數(shù)據(jù)的任何裝置。網(wǎng)絡(luò)126可為任何類型的網(wǎng)絡(luò),包含但不限于有線或無線網(wǎng)絡(luò)、私用或公共網(wǎng)絡(luò)、局域網(wǎng)(LAN)、廣域網(wǎng)(WLAN)以及因特網(wǎng)。網(wǎng)絡(luò)接口裝置122可經(jīng)配置以支持所要的任何類型的通信協(xié)議。存儲(chǔ)器系統(tǒng)116可包含一或多個(gè)存儲(chǔ)器單元128(0到N)。
CPU 106還可經(jīng)配置以經(jīng)由系統(tǒng)總線112接入顯示器控制器124以控制發(fā)送到一或多個(gè)顯示器130的信息。顯示器控制器124經(jīng)由一或多個(gè)視頻處理器132將信息發(fā)送到顯示器130以進(jìn)行顯示,所述一或多個(gè)視頻處理器132將待顯示的信息處理成適合于顯示器130的格式。顯示器130可包含任何類型的顯示器,包含但不限于陰極射線管(CRT)、液晶顯示器(LCD)、等離子顯示器等。
所屬領(lǐng)域的技術(shù)人員將進(jìn)一步了解,結(jié)合本文中所揭示的各方面所描述的各種說明性邏輯塊、模塊、電路和算法可被實(shí)施為電子硬件、存儲(chǔ)于存儲(chǔ)器中或另一計(jì)算機(jī)可讀媒體中且由處理器或其它處理裝置執(zhí)行的指令,或此兩者的組合。作為實(shí)例,本文中所描述的主控和從屬裝置可用于任何電路、硬件組件、集成電路(IC)或IC芯片中。本文中所揭示的存儲(chǔ)器可為任何類型和大小的存儲(chǔ)器,并且可經(jīng)配置以存儲(chǔ)所要的任何類型的信息。為清楚地說明此可互換性,上文已大體上關(guān)于功能性描述了各種說明性組件、塊、模塊、電路和步驟。如何實(shí)施此功能性取決于特定應(yīng)用、設(shè)計(jì)選項(xiàng)和/或強(qiáng)加于整個(gè)系統(tǒng)的設(shè)計(jì)約束。熟練的技術(shù)人員可針對(duì)每一特定應(yīng)用以不同方式實(shí)施所描述的功能性,但此類實(shí)施決策不應(yīng)被解釋為引起偏離本發(fā)明的范圍。
結(jié)合本文中所揭示的方面描述的各種說明性邏輯塊、模塊和電路可用以下各項(xiàng)來實(shí)施或執(zhí)行:處理器、數(shù)字信號(hào)處理器(DSP)、專用集成電路(ASIC)、現(xiàn)場(chǎng)可編程門陣列(FPGA)或其它可編程邏輯裝置、離散門或晶體管邏輯、離散硬件組件,或經(jīng)設(shè)計(jì)以執(zhí)行本文中所描述的功能的其任何組合。處理器可為微處理器,但在替代方案中,處理器可為任何常規(guī)處理器、控制器、微控制器或狀態(tài)機(jī)。處理器還可實(shí)施為計(jì)算裝置的組合,例如,DSP與微處理器的組合、多個(gè)微處理器、一或多個(gè)微處理器結(jié)合DSP核心,或任何其它此類配置。
本文中所揭示的各方面可以硬件和存儲(chǔ)于硬件中的指令來體現(xiàn),且可駐存于(例如)隨機(jī)存取存儲(chǔ)器(RAM)、快閃存儲(chǔ)器、只讀存儲(chǔ)器(ROM)、電可編程ROM(EPROM)、電可擦除可編程ROM(EEPROM)、寄存器、硬盤、可移除磁盤、CD-ROM或所屬領(lǐng)域中已知的任何其它形式的計(jì)算機(jī)可讀媒體中。示范性存儲(chǔ)媒體耦合到處理器,使得處理器可從存儲(chǔ)媒體讀取信息并且將信息寫入到存儲(chǔ)媒體。在替代方案中,存儲(chǔ)媒體可集成到處理器。處理器和存儲(chǔ)媒體可駐存于ASIC中。ASIC可駐存在遠(yuǎn)程站中。在替代方案中,處理器和存儲(chǔ)媒體可作為離散組件駐存在遠(yuǎn)程站、基站或服務(wù)器中。
還應(yīng)注意,描述本文中的示范性方面中的任一者中所描述的操作步驟以提供實(shí)例和論述??捎贸怂f明的序列之外的大量不同序列執(zhí)行所描述的操作。另外,在單個(gè)操作步驟中所描述的操作實(shí)際上可在許多不同步驟中執(zhí)行。另外,可組合在示范性方面中所論述的一或多個(gè)操作步驟。應(yīng)理解,如所屬領(lǐng)域的技術(shù)人員將容易顯而易見的是,流程圖中所說明的操作步驟可以經(jīng)受眾多不同修改。所屬領(lǐng)域的技術(shù)人員還將理解,可使用多種不同技術(shù)和技法中的任一者來表示信息和信號(hào)。舉例來說,可通過電壓、電流、電磁波、磁場(chǎng)或磁粒子、光場(chǎng)或光粒子或其任何組合來表示在整個(gè)上文描述中可能參考的數(shù)據(jù)、指令、命令、信息、信號(hào)、位、符號(hào)和碼片。
提供本發(fā)明的前述描述以使所屬領(lǐng)域的技術(shù)人員能夠制造或使用本發(fā)明。對(duì)所屬領(lǐng)域的技術(shù)人員來說,對(duì)本發(fā)明的各種修改將容易地顯而易見,且本文中界定的一般原理可應(yīng)用于其它變化而不背離本發(fā)明的精神或范圍。因此,本發(fā)明并不意圖限于本文中所描述的實(shí)例和設(shè)計(jì),而是應(yīng)被賦予與本文中所揭示的原理和新穎特征相一致的最廣范圍。