本申請是申請?zhí)枮?01380060515.4、申請日為2013年12月11日的同名稱申請的分案申請。
本公開內(nèi)容總體上涉及計算架構(gòu)。更具體來說,本公開內(nèi)容涉及可伸縮計算結(jié)構(gòu)。
背景技術(shù):
當(dāng)前的計算系統(tǒng)通常是針對通用情況而設(shè)計的。舉例來說,當(dāng)前的計算系統(tǒng)包括針對多種指令集開發(fā)的至少一個中央處理單元(cpu)。一些計算系統(tǒng)還可以包括圖形處理單元(gpu)。gpu通常是專用于處理圖形工作負荷,其受益于并行地處理大塊數(shù)據(jù)。cpu和gpu都包括用以實施算術(shù)和邏輯操作的專用電路,其可以被稱作算術(shù)和邏輯單元(alu)。cpu和gpu的處理核心的尺寸都是固定的,并且與對應(yīng)的處理器的其他核心完全相同。此外,當(dāng)前的cpu和gpu的處理核心即使未處在使用中時也被通電。
附圖說明
通過參照附圖可以更好地理解后面的詳細描述,其中包含所公開的主題內(nèi)容的許多目的和特征的具體實例。
圖1是可以根據(jù)一些實施例使用的計算設(shè)備的方框圖。
圖2是根據(jù)本發(fā)明的實施例的可伸縮計算結(jié)構(gòu)的圖示,其中示出了合并到共同結(jié)構(gòu)中的典型cpu、gpu和固定功能硬件的各個組件;
圖3是示出了根據(jù)一些實施例的simd處理單元的圖示;
圖4是示出了根據(jù)一些實施例的mimd定序器管線控制器的圖示;
圖5是根據(jù)一些實施例的用于提供可伸縮計算結(jié)構(gòu)的方法的處理流程圖;以及
圖6是根據(jù)本發(fā)明的實施例的可伸縮計算結(jié)構(gòu)的圖示。
具體實施方式
正如前面所討論的那樣,系統(tǒng)中的計算元件或計算資源包括例如cpu、gpu、輸入/輸出(i/o)控制器、i/o總線、存儲器設(shè)備以及其他專用邏輯塊之類的各種組件,其通過固定方式連接并且無法被重新配置來支持特殊的處理管線和工作流程要求。此外,即使未處在使用中時,所述各種計算元件仍然可能保持在活躍的通電狀態(tài)。本技術(shù)的實施例提供了一種可伸縮計算結(jié)構(gòu),其中各個計算元件可以按照需要來使用,并且可以被動態(tài)地配置來指派到計算元件之間的i/o連接和總線上的專用管線。通過這種方式,以動態(tài)的方式支持工作流程,這允許相應(yīng)地調(diào)節(jié)性能和功率以便達到更好的功率和性能目標(biāo)。此外,一些實施例提供了一種可伸縮計算結(jié)構(gòu),其中可以動態(tài)地重新配置各個計算元件或計算資源,以便服務(wù)于特定工作負荷和許多同時的工作負荷。此外,當(dāng)未處在使用中時,計算元件可以被斷電。所述可伸縮計算結(jié)構(gòu)在運行時間被動態(tài)地配置成多條管線,其中每一條按照一定方式被控制和定序,從而在一個實施例中允許利用多種方法(其中包括隊列、共享存儲器命令和數(shù)據(jù)區(qū)段當(dāng)中的一項或更多項)或者通過網(wǎng)絡(luò)或互連上的通信協(xié)議流將多指令和多數(shù)據(jù)(mimd)流饋送到所述可伸縮計算結(jié)構(gòu)中。
這里所使用的“活躍”指的是消耗電力并且“開啟”的狀態(tài),而“不活躍”則指的是不生成電力并且“關(guān)閉”的狀態(tài)或者被設(shè)定到低功率狀態(tài)。低功率狀態(tài)可以是與活躍狀態(tài)相比較低??梢岳每缮炜s計算陣列實施的計算應(yīng)用包括而不限于圖像處理、打印成像、顯示成像、信號處理、計算機圖形、媒體和音頻處理、數(shù)據(jù)挖掘、視頻分析法以及數(shù)值處理。
在后面的描述和權(quán)利要求書中,可以使用術(shù)語“耦合”和“連接”及其導(dǎo)出用語。應(yīng)當(dāng)理解的是,這些術(shù)語不意圖作為彼此的同義詞。相反,在特定實施例中,可以使用“連接”來表明兩個或更多元件彼此直接物理或電接觸?!榜詈稀笨梢砸馕吨鴥蓚€或更多元件直接物理或電接觸。但是“耦合”還可以意味著兩個或更多元件彼此沒有直接接觸,但是仍然彼此協(xié)作或交互。
可以通過硬件、固件和軟件的其中之一或者其某種組合來實施一些實施例。一些實施例還可以被實施成存儲在機器可讀介質(zhì)上的指令,其可以由計算平臺讀取并且執(zhí)行來實施這里所描述的操作。機器可讀介質(zhì)可以包括用于通過可由機器(例如計算機)讀取的形式來存儲或傳送信息的任何機制。舉例來說,機器可讀介質(zhì)特別可以包括只讀存儲器(rom)、隨機存取存儲器(ram)、磁盤存儲介質(zhì)、光學(xué)存儲介質(zhì)、閃存設(shè)備。
一個實施例是一種實現(xiàn)方式或?qū)嵗?。在說明書中提到“某一實施例”、“一個實施例”、“一些實施例”、“各種實施例”或“其他實施例”意味著結(jié)合所述實施例描述的特定特征、結(jié)構(gòu)或特性被包括在本發(fā)明的至少一些實施例中,而不一定被包括在所有實施例中。在各處出現(xiàn)的“某一實施例”、“一個實施例”或“一些實施例”不一定全部指代相同的實施例。來自一個實施例的各個元素或方面可以與另一個實施例的各個元素或方面相組合。
這里所描述和示出的所有組件、特征、結(jié)構(gòu)、特性等等不需要都被包括在一個或多個特定的實施例中。如果說明書陳述例如“可以”或者“可能”包括某一組件、特征、結(jié)構(gòu)或特性,并不要求包括該特定組件、特征、結(jié)構(gòu)或特性。如果說明書或權(quán)利要求書提到“某一”或“一個”元件,這并不意味著僅有一個所述元件。如果說明書或權(quán)利要求書提到“一個附加”元件,這并不排除存在多于一個的所述附加元件。
應(yīng)當(dāng)提到的是,雖然參照特定實現(xiàn)方式描述了一些實施例,但是根據(jù)一些實施例其他實施方式也是可能的。此外,在附圖中示出以及/或者在這里描述的電路元件或其他特征的設(shè)置和/或順序不需要按照所示出和描述的特定方式來設(shè)置。根據(jù)一些實施例,許多其他設(shè)置是可能的。
在圖中示出的每一個系統(tǒng)中,各個元件在某些情況下可能分別具有相同的附圖標(biāo)記或不同的附圖標(biāo)記,從而表明所表示的元件可以是不同的和/或相似的。但是一個元件可以是足夠靈活的,從而具有不同的實現(xiàn)方式并且與這里所示出或描述的其中一些或所有系統(tǒng)一同工作。附圖中示出的各個元件可以是相同的或不同的。哪一個元件被稱作第一元件以及哪一個被稱作第二元件是任意的。
圖1是可以根據(jù)一些實施例使用的計算設(shè)備100的方框圖。計算設(shè)備100例如特別可以是膝上型計算機、臺式計算機、平板計算機、移動設(shè)備或者服務(wù)器。計算設(shè)備100可以包括被配置成執(zhí)行所存儲的指令的可伸縮計算結(jié)構(gòu)102,以及存儲可以由可伸縮計算結(jié)構(gòu)102執(zhí)行的指令的存儲器設(shè)備104。在一些實施例中,可以使用應(yīng)用編程接口(api)在運行時間配置可伸縮計算結(jié)構(gòu)。此外,在一些實施例中,可以在引導(dǎo)時間列舉可伸縮計算結(jié)構(gòu)。通過這種方式,計算設(shè)備可以認識到可伸縮計算結(jié)構(gòu)的硬件能力。
存儲器設(shè)備104可以是可伸縮計算結(jié)構(gòu)102的一個組件??缮炜s計算結(jié)構(gòu)102可以通過總線106耦合到存儲器設(shè)備104,并且被配置成實施在傳統(tǒng)上由中央處理單元(cpu)實施的任何操作。此外,可伸縮計算結(jié)構(gòu)102可以被配置成實施在傳統(tǒng)上由圖形處理單元(gpu)實施的任何數(shù)目的圖形操作。舉例來說,可伸縮計算結(jié)構(gòu)102可以被配置成渲染或操縱將向計算設(shè)備100的用戶顯示的圖形圖像、圖形幀、視頻等等。
可伸縮計算結(jié)構(gòu)102包括而不限于可以被動態(tài)地配置以及重新配置到各種處理管線中的幾項處理資源。管線是被分組在一起從而實施特定處理任務(wù)的資源或計算元件的集合。所述管線可以實施動態(tài)可配置的功能??缮炜s計算結(jié)構(gòu)102的管線可以被配置成基于指令的大小和類型而在運行時間執(zhí)行一個指令集合。在一些實施例中,可以在運行時間調(diào)用應(yīng)用編程接口(api),以便對于特定指令集合配置處理管線。舉例來說,api可以規(guī)定創(chuàng)建五個simd處理單元,以便在64比特寬的指令的運行時間處理64比特寬的指令。api還可以向可伸縮計算結(jié)構(gòu)102規(guī)定帶寬。在一些實施例中,可伸縮計算結(jié)構(gòu)102實施快速互連,其可以連同可伸縮計算結(jié)構(gòu)102內(nèi)的處理管線一起被動態(tài)地配置和重新配置。此外,所述快速互連可以是連接計算設(shè)備100的各項計算資源或計算元件的總線。還可以利用基本輸入/輸出系統(tǒng)(bios)對可伸縮計算結(jié)構(gòu)102的管線進行預(yù)先配置。舉例來說,當(dāng)計算設(shè)備100被通電時,在引導(dǎo)規(guī)程期間運行的bios可以識別可伸縮計算結(jié)構(gòu)102,其中包括可伸縮計算結(jié)構(gòu)102的各種組件。bios隨后可以對可伸縮計算結(jié)構(gòu)102的管線進行預(yù)先配置。在一些實施例中,在所述預(yù)先配置之后可以在必要時重新配置所述管線。
所述可伸縮計算結(jié)構(gòu)在運行時間被動態(tài)地配置成多條管線,每一條管線按照共享方式被控制和定序,從而允許將多指令和多數(shù)據(jù)(mimd)流饋送到可伸縮計算機結(jié)構(gòu)管線中。在一個實施例中,可以利用一種或更多種方法(其包括但不限于隊列、共享存儲器命令和數(shù)據(jù)區(qū)段、互連總線、網(wǎng)絡(luò)或互連上的通信協(xié)議流當(dāng)中的一項或更多項)或者使用類似的方法將mimd命令數(shù)據(jù)流饋送到可伸縮計算結(jié)構(gòu)中。此外,管線的動態(tài)配置涉及一個或更多mimd定序器或控制器,其接受用以配置多條管線的命令以及來自多項軟件應(yīng)用或者多個連接的系統(tǒng)的數(shù)據(jù),mimd序列將其饋送到對應(yīng)于計算、互連、存儲器和固定功能邏輯塊的管線化資源中,所述管線化資源被動態(tài)地配置到管線中以便實施特定任務(wù)。因此,所述管線是可以由一項或更多項軟件應(yīng)用或連接的系統(tǒng)使用的共享資源。
在可伸縮計算結(jié)構(gòu)102內(nèi),可以有一個或更多alu陣列以及一個或更多寄存器陣列。alu陣列可以被用來對于存儲在寄存器陣列中的數(shù)據(jù)實施算術(shù)和邏輯操作。寄存器陣列是可以被用來存儲被用作針對alu的輸入的數(shù)據(jù)的專用存儲器,并且還可以存儲從alu的操作得到的數(shù)據(jù)。所述數(shù)據(jù)可以在存儲器設(shè)備104與寄存器之間傳輸。存儲器設(shè)備104可以包括隨機存取存儲器(ram)、只讀存儲器(rom)、閃存或者任何其他適當(dāng)?shù)拇鎯ζ飨到y(tǒng)。舉例來說,存儲器設(shè)備104可以包括動態(tài)隨機存取存儲器(dram)。
計算設(shè)備100包括圖像捕獲機制108。在一些實施例中,圖像捕獲機制108是攝影機、立體攝影機、紅外傳感器等等。此外,圖像捕獲機制108可以是通用串行總線(usb)攝影機,其利用usb線纜與計算設(shè)備100耦合。圖像捕獲機制108被用來捕獲圖像信息。在一些實施例中,所述圖像捕獲機制可以是利用根據(jù)移動行業(yè)處理器接口(mipi)攝影機串行接口(csi)聯(lián)盟的規(guī)范開發(fā)的接口與可伸縮計算結(jié)構(gòu)102接口的攝影機設(shè)備。舉例來說,所述攝影機串行接口可以是mipicsi-1接口、mipicsi-2接口或者mipicsi-3接口。因此,所述攝影機串行接口可以是當(dāng)前所開發(fā)或者未來開發(fā)的任何攝影機串行接口。在一些實施例中,攝影機串行接口可以包括數(shù)據(jù)傳輸接口,其是與數(shù)據(jù)和時鐘信號的單向差分串行接口。此外,與可伸縮計算結(jié)構(gòu)的攝影機接口還可以是當(dāng)前所開發(fā)或者未來開發(fā)的任何攝影機并行接口(cpi)。在一些實施例中,可伸縮計算結(jié)構(gòu)102被配置成用于成像操作的simd處理單元??缮炜s計算結(jié)構(gòu)102可以取得來自工作負荷的simd指令以作為輸入,并且并行地基于所述指令來實施操作。舉例來說,圖像捕獲機制108可以被用來捕獲圖像以用于處理。圖像處理工作負荷可以包含一個simd指令集合,并且可伸縮計算結(jié)構(gòu)102可以被用來處理所述指令集合。
可伸縮計算結(jié)構(gòu)102可以通過總線106連接到輸入/輸出(i/o)設(shè)備接口112,其被配置成把計算設(shè)備100連接到一個或更多i/o設(shè)備114。i/o設(shè)備114例如可以包括鍵盤和指示設(shè)備,其中所述指示設(shè)備特別可以包括觸摸板或觸摸屏。i/o設(shè)備114可以是計算設(shè)備100的內(nèi)建組件,或者是外部連接到計算設(shè)備100的設(shè)備。
可伸縮計算結(jié)構(gòu)102還可以通過總線106鏈接到顯示器接口116,其被配置成把計算設(shè)備100連接到顯示設(shè)備118。顯示設(shè)備118可以包括作為計算設(shè)備100的內(nèi)建組件的顯示器屏幕。顯示設(shè)備118特別還可以包括外部連接到計算設(shè)備100的計算機監(jiān)視器、電視或投影儀。
計算設(shè)備100還包括存儲設(shè)備120。存儲設(shè)備120是例如硬盤驅(qū)動器、光盤驅(qū)動器、拇指驅(qū)動器、驅(qū)動器陣列或者其任何組合之類的物理存儲器。存儲設(shè)備120還可以包括遠程存儲驅(qū)動器。存儲設(shè)備120包括被配置成在計算設(shè)備100上運行的任何數(shù)目的應(yīng)用122。應(yīng)用122可以被用來實施可伸縮計算結(jié)構(gòu)。此外,應(yīng)用122的指令集合可以包括而不限于超長指令字(vliw)和單指令多數(shù)據(jù)(simd)指令。所述指令集合可以利用可伸縮計算結(jié)構(gòu)102來處理。計算設(shè)備100還可以包括網(wǎng)絡(luò)接口控制器(nic)124。nic124可以被配置成將計算設(shè)備100通過總線106連接到網(wǎng)絡(luò)126。網(wǎng)絡(luò)126特別可以是廣域網(wǎng)(wan)、局域網(wǎng)(lan)或因特網(wǎng)。
在一些實施例中,可伸縮計算結(jié)構(gòu)可以把從經(jīng)過處理的成像工作負荷得到的圖像發(fā)送到打印引擎128。打印引擎128可以把所得到的成像工作負荷發(fā)送到打印設(shè)備130。打印設(shè)備130可以包括打印機、傳真機以及可以利用打印對象模塊132來打印所得到的圖像的其他打印設(shè)備。在一些實施例中,打印引擎128可以通過網(wǎng)絡(luò)126把數(shù)據(jù)發(fā)送到打印設(shè)備130。此外,在一些實施例中,打印設(shè)備130可以包括另一個可伸縮計算結(jié)構(gòu)134,其可以被用來處理使用打印設(shè)備130的工作負荷。
應(yīng)當(dāng)理解的是,圖1的方框圖不意圖表明計算系統(tǒng)100包括圖1中示出的所有組件。相反,計算系統(tǒng)100可以包括更少的或者未在圖1中示出的附加組件(例如傳感器、電力管理集成電路、附加的網(wǎng)絡(luò)接口等等)。
圖2是根據(jù)本發(fā)明的實施例的可伸縮計算結(jié)構(gòu)200的圖示,其中示出了合并到共同結(jié)構(gòu)中的典型cpu、gpu和固定功能硬件??缮炜s計算結(jié)構(gòu)200例如可以是可伸縮計算結(jié)構(gòu)102(圖1)??缮炜s計算結(jié)構(gòu)200還可以是作為打印設(shè)備(比如圖1的打印設(shè)備130)的一個組件的可伸縮計算結(jié)構(gòu)134。
可伸縮計算結(jié)構(gòu)200允許現(xiàn)有的機器代碼在對應(yīng)于特定機器模式的核心上執(zhí)行。因此,可以利用可伸縮計算結(jié)構(gòu)200來執(zhí)行將利用cpu執(zhí)行的機器代碼。此外,可以利用可伸縮計算結(jié)構(gòu)200來執(zhí)行將利用gpu執(zhí)行的機器代碼。因此,可伸縮計算結(jié)構(gòu)200包括機器代碼202,其被用來控制可執(zhí)行特定機器代碼202的單指令、單數(shù)據(jù)(sisd)處理核心204。在一些實施例中,所述處理核心可以是intel?architecture(ia)cpu核心或超線程。處理核心204可以執(zhí)行由機器代碼202規(guī)定的原生數(shù)據(jù)類型、指令、寄存器、尋址模式、存儲器架構(gòu)和中斷應(yīng)對。在可伸縮計算結(jié)構(gòu)200中還包括單指令多數(shù)據(jù)(simd)和單指令單線程機器代碼206。simd/sist機器代碼206可以被用來指示一個或更多simd處理單元208。在一些實施例中,simd處理單元208包括合并到獨立資源中的intel?advancedvectorextensions(avx)和執(zhí)行單元(eu)。simd處理單元還可以被稱作simd計算陣列??梢躁P(guān)于圖3進一步描述simd處理單元208。
通過可編程的公平性策略和各種分配方案,為可伸縮計算結(jié)構(gòu)200的每一條所配置的管線保證必要的總線帶寬和執(zhí)行優(yōu)先權(quán)。固定功能硬件210可以被表示在可伸縮計算結(jié)構(gòu)200中。舉例來說,所述固定功能硬件可以包括圖形、顯示、媒體、安全性或感知計算單元。在一些實施例中,所述固定功能硬件可以利用可伸縮計算結(jié)構(gòu)的資源或計算元件來實施。通過這種方式,可以通過具有較低功率或更加高效的計算的其他硬件來替代所述固定功能硬件。可伸縮計算結(jié)構(gòu)200內(nèi)的固定功能硬件單元可以被動態(tài)地鎖定、共享以及指派到管線中。舉例來說,對媒體工作負荷進行編碼通常特別包括實施運動估計。在對二維(2d)視頻進行編碼時,可以在視頻的每一幀上實施運動估計搜索,以便確定對應(yīng)于每一幀的運動矢量。運動估計是這樣一種技術(shù),其中對一個幀序列中的對象的移動進行分析,以便獲得代表所述對象在各幀之間的所估計的運動的矢量。通過運動估計,已編碼媒體文件包括幀的被移動的部分而不包括幀的其他部分,從而節(jié)省了媒體文件中的空間,并且節(jié)省了媒體文件的解碼期間的處理時間。幀可以被劃分成各個宏塊,并且運動矢量代表宏塊在各幀之間的位置的改變??梢酝ㄟ^利用包括媒體固定功能單元的可伸縮計算結(jié)構(gòu)200配置的管線來確定運動矢量。
可以包括環(huán)形總線212以用于固定功能硬件單元之間的通信。環(huán)形緩沖器212可以被用來通過組裝管線傳輸數(shù)據(jù)。此外,外圍組件快速互連(pcie)總線214和輸入/輸出控制器集線器(ich)總線216可以向可伸縮計算結(jié)構(gòu)200中提供輸入。但是本技術(shù)不限于這里所描述的互連方法,因為在一些實施例中可以使用多種其他互連方法。
多指令多數(shù)據(jù)(mimd)管線定序器218可以被用來基于傳入指令按照需要把處理核心204、simd處理單元208以及固定功能硬件210組裝到管線中。所述指令可以從指令隊列220a獲得。此外,mimd定序器可以從存儲器中的指令控制塊220b或者從網(wǎng)絡(luò)或互連220c上的協(xié)議流接受數(shù)據(jù)和控制命令??梢岳脛討B(tài)地配置的管線鎖定可伸縮計算結(jié)構(gòu)200內(nèi)的存儲器資源。舉例來說,還可以在可伸縮計算結(jié)構(gòu)200中包括第2層(l2)高速緩存222和第3層(l3)高速緩存224以存儲數(shù)據(jù)。
圖3是示出了根據(jù)一些實施例的simd處理單元208的圖示。simd處理單元208可以處在simd計算陣列內(nèi),所述simd計算陣列可以包括被合并到動態(tài)地可配置并且可共享的計算資源中的高級矢量擴展(avx)單指令多數(shù)據(jù)(simd)單元或執(zhí)行單元(eu)當(dāng)中的至少一項或更多項。每一個simd處理單元208是simd處理資源的一個切片。換句話說,每一個切片是一個獨立的simd處理單元208。一個切片指的是一個巷道集合或分組,其中每一條巷道包括至少一個算術(shù)和邏輯單元(alu)和至少一個寄存器。simd處理單元208包括alu陣列302和寄存器陣列304。alu陣列302可以被用來對存儲在寄存器陣列304中的數(shù)據(jù)實施算術(shù)和邏輯操作。寄存器陣列304是專用存儲器,其可以被用來存儲被用作針對alu陣列302的輸入的數(shù)據(jù),并且還可以存儲從alu陣列302的操作得到的數(shù)據(jù)。寄存器陣列304可以是共享存儲器的一個組件,所述共享存儲器還包括共享機器情境(ctx)數(shù)據(jù)306。共享ctx數(shù)據(jù)306可以存儲機器情境和相關(guān)聯(lián)的數(shù)據(jù),比如程序計數(shù)器、寄存器設(shè)定、時鐘頻率、電壓水平以及所有其他機器狀態(tài)數(shù)據(jù)。
根據(jù)將要處理的工作負荷的大小和類型,每一個simd處理單元208可以被配置成具有不同的寬度。通過這種方式,每一個simd處理單元的寬度是基于在計算機上運行的每一項軟件中所解決的具體問題。每一個simd處理單元208的寬度是每一個切片中的巷道的數(shù)目。在圖3中,simd處理單元208包括:simd4-alu切片308,其包括四條alu巷道;simd2-alu切片310,其包括兩條巷道;simd4-alu切片312,其包括四條巷道;simd2-alu切片314,其包括兩條巷道;以及simd4-alu切片316,其包括四條巷道。如圖3中所示,simdalu切片308和simd切片314都被通電,正如每一個simd切片上方的通電狀態(tài)320a所分別標(biāo)示的那樣。類似地,simdalu切片310、simdalu切片312和simdalu切片316都被斷電,正如每一個simd切片上方的斷電狀態(tài)320b所分別標(biāo)示的那樣。
在一些實施例中,響應(yīng)于確定simdalu切片310、simdalu切片312和simdalu切片內(nèi)的alu單元不活躍,simdalu切片310、simdalu切片312和simdalu切片316都被斷電??梢杂杀O(jiān)測alu的控制器確定不活躍性。當(dāng)alu空閑的時間超出預(yù)定數(shù)量的時鐘周期時,其可以被關(guān)閉。此外,可以使用程序計數(shù)器來確定哪些alu可以被關(guān)閉。
圖4是根據(jù)一些實施例的示出了mimd定序器管線控制器218的圖示。來自輸入隊列(比如圖2的輸入隊列220)的信息被輸入到mimd定序器管線控制器218。mimd定序器管線控制器218從指令隊列220a(圖2)取得信息,并且將所述信息路由到在可伸縮計算結(jié)構(gòu)內(nèi)形成的各條管線。在一些實施例中,mimd定序器可以從存儲器中的指令控制塊220b或者從網(wǎng)絡(luò)或互連220c上的協(xié)議流接受數(shù)據(jù)和控制命令。
舉例來說,每當(dāng)指令隊列所包含的指令包括計算傅立葉變換時,mimd定序器管線控制器218a可以保留快速傅立葉變換(fft)模塊402。數(shù)字信號處理(dsp)應(yīng)用常常包括使用fft處理核心??梢岳糜布蜍浖韺嵤ゝft模塊402。由fft模塊402使用的數(shù)據(jù)可以從存儲器104中的緩沖器404a取回。一旦被處理,可以將所述數(shù)據(jù)寫回到存儲器中的緩沖器404b。因此,可以通過mimd定序器管線控制器218a來控制所述管線。
與mimd定序器管線控制器218a并行地,可以使用mimd定序器管線控制器218b來配置另一條管線進行圖像處理。例如輸入隊列220a(圖2)之類的指令隊列可以指示mimd定序器管線控制器218b配置包含用于圖像處理的各種模塊的管線。響應(yīng)于所述指令,mimd定序器管線控制器218b可以保留卷積固定功能硬件單元406a、形態(tài)固定功能硬件單元406b、媒體管線406c、simd處理單元406d和顯示器模塊406e。simd處理單元406d可以是如前面所描述的simd處理單元208。在一些實施例中,mimd定序器可以從存儲器中的指令控制塊220b或者從網(wǎng)絡(luò)或互連220c上的協(xié)議流接受數(shù)據(jù)和控制命令。
卷積固定功能硬件單元406a可以從圖像捕獲機制(比如圖1的圖像捕獲機制108)接收圖像數(shù)據(jù)??梢岳镁矸e固定功能硬件單元406a和形態(tài)固定功能硬件單元406b對來自圖像捕獲機制的圖像數(shù)據(jù)進行線性濾波。可以把來自卷積固定功能硬件單元406a的數(shù)據(jù)寫入到存儲器104中的緩沖器408a。形態(tài)固定功能硬件單元406b可以從緩沖器408a獲得數(shù)據(jù)。媒體管線406c被用來對圖像數(shù)據(jù)進行編碼??梢詮拇鎯ζ?04內(nèi)的緩沖器408b獲得圖像數(shù)據(jù)。媒體管線406c是執(zhí)行各種硬件和軟件模塊以編碼圖像數(shù)據(jù)的附加管線。舉例來說,用于編碼圖像數(shù)據(jù)的媒體管線可以包括實施運動估計,以便確定圖像數(shù)據(jù)內(nèi)的各幀的運動矢量和宏塊類型。此外,對圖像數(shù)據(jù)進行編碼可以包括對每一幀應(yīng)用不同的比特率。在對圖像數(shù)據(jù)進行編碼時,將其轉(zhuǎn)換成目標(biāo)數(shù)據(jù)格式。隨后將所述數(shù)據(jù)寫入到存儲器104中的緩沖器408c。
simd處理單元406d可以從存儲器104中的緩沖器408c獲得數(shù)據(jù)??梢杂蓅imd處理單元406d實施附加的圖像處理,比如針對特定顯示器優(yōu)化數(shù)據(jù)。隨后可以將所述數(shù)據(jù)寫入到存儲器104中的緩沖器408d。顯示器模塊406e可以從存儲器104中的緩沖器408d獲得數(shù)據(jù),并且在顯示器上渲染所述數(shù)據(jù)。
當(dāng)在管線模塊406與存儲器104中的緩沖器408之間傳遞圖像數(shù)據(jù)時,可以使用環(huán)形緩沖器212將數(shù)據(jù)從管線模塊406傳遞到緩沖器408。此外,環(huán)形緩沖器212可以在不訪問緩沖器408的情況下在管線模塊406之間傳輸數(shù)據(jù)。舉例來說,通常逐行地處理圖像數(shù)據(jù)。卷積固定功能硬件單元406a可以處理一行的圖像數(shù)據(jù),并且將其放置在環(huán)形緩沖器212中。環(huán)形緩沖器可以將所述數(shù)據(jù)直接發(fā)送到形態(tài)固定功能硬件單元406b以進行進一步處理。如果形態(tài)固定功能硬件單元406b無法處理由卷積固定功能硬件單元406a發(fā)送的圖像數(shù)據(jù),則環(huán)形緩沖器212可以將所述數(shù)據(jù)放置在緩沖器408a中,直到形態(tài)固定功能硬件單元406b能夠處理所述圖像數(shù)據(jù)為止。
圖5是根據(jù)一些實施例的用于提供可伸縮計算結(jié)構(gòu)的方法的處理流程圖。在方框502處,確定將由可伸縮計算結(jié)構(gòu)處理的工作流程。所述工作流程可以是基于軟件程序的指令集合。在一些實施例中,所述工作流程可以從指令隊列獲得。在方框504處,可以動態(tài)地配置管線以用于處理所述工作流程。所述管線可以包括處理核心、simd計算陣列或者其任何組合。simd計算陣列可以包括一個或更多simd處理單元。在一些實施例中,可以通過以下步驟來配置管線:為管線分配計算資源,為管線保留存儲器資源和總線帶寬,以及調(diào)度對于管線的工作流程使用。所述配置可以由控制器實施。在一些實施例中,所述控制器是mimd定序器管線控制器。此外,所述管線可以包括一個或更多處理核心以及一個或更多simd處理單元。至少一個處理核心或simd處理單元可以響應(yīng)于工作流程的大小而被斷電。此外,至少一個處理核心或simd處理單元可以響應(yīng)于將資源動態(tài)配置到某一管線中以便支持某一工作流程而被斷電。
在方框506處,可以利用所述管線來執(zhí)行工作流程。在一些實施例中,可以利用計算設(shè)備的管線或者打印設(shè)備的管線來執(zhí)行所述方法。執(zhí)行所述工作流程可以包括例如以下處理:圖像處理、圖像增強、圖像分析、計算機視覺、增強真實性、深度感測、手勢辨識、面部辨識、計算機游戲、計算機圖形、媒體處理、攝影機或傳感器處理、攝影機處理、顯示器處理、圖像轉(zhuǎn)換以及其任何組合。
圖5的處理流程圖不意圖表明應(yīng)當(dāng)按照任何特定順序來執(zhí)行方法500的各個步驟,也不意圖表明在每一種情況下都應(yīng)當(dāng)包括方法500的所有步驟。此外,取決于具體應(yīng)用,在方法500內(nèi)可以包括任何數(shù)目的附加步驟。舉例來說,打印設(shè)備130可以打印先前利用可伸縮計算結(jié)構(gòu)處理過的圖像。
圖6是根據(jù)本發(fā)明的實施例的可伸縮計算結(jié)構(gòu)600的圖示。可伸縮計算結(jié)構(gòu)600例如可以是可伸縮計算結(jié)構(gòu)102(圖1)。可伸縮計算結(jié)構(gòu)600還可以是作為打印設(shè)備(比如圖1的打印設(shè)備130)的一個組件的可伸縮計算結(jié)構(gòu)134。
外圍組件快速互連(pcie)總線214和輸入/輸出控制器集線器(ich)216可以向可伸縮計算結(jié)構(gòu)600提供輸入/輸出??缮炜s計算結(jié)構(gòu)600還包括環(huán)形緩沖器212a、環(huán)形緩沖器212b和環(huán)形緩沖器212c。環(huán)形緩沖器212a允許pcie總線214和ich216向mimd定序器管線控制器218、sisd處理核心204、simd處理單元208和固定功能硬件210發(fā)送數(shù)據(jù)。此外,環(huán)形緩沖器212b允許固定功能硬件單元210向l3高速緩存222傳遞數(shù)據(jù)。雖然僅示出了l3高速緩存222,但是在可伸縮計算結(jié)構(gòu)中可以存在任何數(shù)目的高速緩存。正如前面所討論的那樣,環(huán)形緩沖器212b允許從一個固定功能硬件單元向另一個固定功能硬件單元直接傳遞數(shù)據(jù)。環(huán)形緩沖器212c允許在mimd定序器管線控制器218、sisd處理核心204、simd處理單元208和固定功能硬件210之間直接傳遞數(shù)據(jù)。雖然示出了三個環(huán)形緩沖器,但是可伸縮計算結(jié)構(gòu)可以包括任何數(shù)目的環(huán)形緩沖器。此外,可以基于指令動態(tài)地配置和重新配置環(huán)形緩沖器,所述指令比如是來自指令隊列220a的指令。還可以基于來自存儲器控制塊220b或通信協(xié)議220c的數(shù)據(jù)重新配置環(huán)形緩沖器。
在一些實施例中,mimd定序器管線控制器可以包括優(yōu)先權(quán)級別。因此,如果第一mimd定序器管線控制器具有高于第二mimd定序器管線控制器的優(yōu)先權(quán),則當(dāng)?shù)诙imd定序器管線控制器正在使用第一mimd定序器管線控制器希望使用的資源或計算元件時,第一mimd定序器管線控制器能夠中斷第二mimd定序器管線控制器。此外,可以在管線之間共享資源,并且mimd定序器基于可編程的策略來仲裁管線之間的資源共享,所述可編程的策略比如是優(yōu)先權(quán)、期望帶寬、性能或者被用來管理資源的任何其他策略。在一些實施例中,mimd定序器管線控制器仲裁可伸縮計算結(jié)構(gòu)資源的使用。mimd定序器管線控制器還確保數(shù)據(jù)和指令將適合于所配置的管線。因此,多個mimd定序器管線控制器可以對可伸縮計算結(jié)構(gòu)的資源實施仲裁、優(yōu)先權(quán)排序、爭用和管理。
在一些實施例中,可伸縮計算結(jié)構(gòu)可以被使用在打印設(shè)備中,比如打印設(shè)備130。舉例來說,打印設(shè)備可以包括能夠掃描文檔的掃描模塊。打印設(shè)備可以將掃描文檔轉(zhuǎn)換成各種文件格式,比如pdf文件格式。打印設(shè)備還可以被用來增強掃描文檔或者改動掃描文檔內(nèi)的圖像。因此,利用可伸縮計算結(jié)構(gòu),可以配置管線以實施為打印機指派的各種任務(wù),其中包括而不限于掃描、文件格式轉(zhuǎn)換、增強以及圖像改動。此外,在一些實施例中,可以將可伸縮計算結(jié)構(gòu)與包括用于打印的資源的打印環(huán)境集成在一起。還可以把包括可伸縮計算結(jié)構(gòu)的計算設(shè)備集成到打印環(huán)境中。
本技術(shù)創(chuàng)建可以針對給定的處理、數(shù)據(jù)流而被流線化和優(yōu)化的管線。當(dāng)前,按照通用方式設(shè)計soc架構(gòu)以便總體上勝任為多種工作負荷服務(wù)。許多資源或計算元件不可用于單獨的動態(tài)可配置的使用。舉例來說,許多當(dāng)前的gpu固定功能硬件計算資源不可用于單獨的使用和配置到特定管線中。通過本技術(shù),每一個組件、資源或計算元件是單獨可用并且可訪問的。此外,可以根據(jù)將要處理的特定工作負荷動態(tài)地配置或重新配置每一個組件、資源或計算元件。
實例1
這里提供了一種用于提供可伸縮計算結(jié)構(gòu)的方法。提供用以確定由可伸縮計算結(jié)構(gòu)處理的工作流程的邏輯。所述工作流程基于一個指令集合。提供用以動態(tài)地配置用于處理所述工作流程的管線的邏輯,并且提供用以利用所述管線執(zhí)行所述工作流程的邏輯??梢酝ㄟ^以下步驟來配置管線:為管線分配計算資源,為管線保留存儲器資源和總線帶寬,以及調(diào)度管線的工作流程使用。所述管線可以由多項軟件應(yīng)用或者其他連接的系統(tǒng)同時使用,以便通過所述管線接受多指令多數(shù)據(jù)(mimd)流并且對各個mimd流進行定序。此外,多條管線可以被配置來接受同時的多指令多數(shù)據(jù)(mimd)流,并且各條管線可以在共享的計算、存儲器、邏輯和互連資源上操作。此外,所述管線可以包括一個或更多處理核心。至少一個處理核心可以響應(yīng)于工作流程的大小而被斷電。此外,至少一個處理核心可以響應(yīng)于將資源動態(tài)配置到某一管線中以便支持某一工作流程而被斷電。
管線的全部或一部分可以被降低功率到較低功率狀態(tài)、對應(yīng)于較低性能的較低時鐘速率或者被設(shè)定到對應(yīng)于更高性能的更高時鐘速率??梢哉{(diào)節(jié)管線中的電壓以便獲得更高的或較低的功率和性能速率。所述管線還可以包括simd計算陣列。simd計算陣列可以包括被合并到動態(tài)地可配置并且可共享的計算資源中的高級矢量擴展(avx)?單指令多數(shù)據(jù)(simd)單元或執(zhí)行單元(eu)當(dāng)中的至少一項或更多項。管線可以實施動態(tài)地可配置的功能。此外,執(zhí)行工作流程可以包括圖像處理、圖像增強、圖像分析、計算機視覺、增強真實性、深度感測、手勢辨識、面部辨識、計算機游戲、計算機圖形、媒體處理、攝影機或傳感器處理、攝影機處理、顯示器處理、圖像轉(zhuǎn)換或者其任何組合。此外,所提供的可伸縮計算結(jié)構(gòu)可以被集成到打印環(huán)境中。
實例2
這里提供了一種具有可伸縮計算結(jié)構(gòu)的計算設(shè)備。所述計算設(shè)備包括定序器和多個邏輯處理元件。所述多個邏輯處理元件包括處理核心、邏輯塊、i/o設(shè)備、i/o通道、總線、顯示設(shè)備以及存儲器資源。定序器在成像管線中對命令和數(shù)據(jù)進行控制和定序,并且定序器、處理核心、邏輯塊、i/o設(shè)備、i/o通道、總線、顯示設(shè)備和存儲器資源構(gòu)成可以被動態(tài)地配置來生成所述成像管線的可伸縮計算結(jié)構(gòu)。定序器還接受來自隊列、共享存儲器命令和數(shù)據(jù)區(qū)段、或者網(wǎng)絡(luò)或互連上的通信協(xié)議流當(dāng)中的一項或更多項的多指令多數(shù)據(jù)(mimd)流。
可以利用芯片上系統(tǒng)(soc)來實施可伸縮計算結(jié)構(gòu)。此外,所述成像管線可以是動態(tài)地可重新配置的。還可以對成像管線進行預(yù)先配置??梢员A舳鄠€邏輯處理元件以供定序器使用,或者將所述多個邏輯處理元件分配到處理群組或管線中。此外,多個邏輯計算元件當(dāng)中的至少一個或更多個可以響應(yīng)于工作流程或計算活動的大小或者工作流程的無活動而被斷電??缮炜s計算結(jié)構(gòu)可以包括simd計算陣列,simd計算陣列包括算術(shù)和邏輯單元(alu)陣列(其包括多個alu)和寄存器陣列(其包括多個寄存器)。定序器可以被配置來保留和控制邏輯計算元件,并且將其組裝到計算管線中,對于成像管線實施仲裁、優(yōu)先權(quán)排序和爭用管理??缮炜s計算結(jié)構(gòu)還可以包括固定功能硬件單元。此外,所述計算設(shè)備可以是圖像捕獲設(shè)備或圖像顯示設(shè)備。所述計算設(shè)備還可以被集成到打印環(huán)境中。
實例3
這里描述了一種用以打印工作負荷的打印設(shè)備。所述打印設(shè)備包括打印對象模塊。打印對象模塊可以被配置來確定用于由可伸縮計算結(jié)構(gòu)處理的工作流程,并且動態(tài)地配置用于處理所述工作流程的管線。利用所述管線來執(zhí)行所述工作流程。所述工作流程可以是成像工作負荷。此外,處理所述工作流程可以包括以下各項當(dāng)中的至少一項或更多項:圖像處理、圖像增強、圖像分析、圖像輸入以及圖像轉(zhuǎn)換。
在前面的描述中,對所公開的主題內(nèi)容的各個方面進行了描述。出于解釋的目的,前面闡述了特定數(shù)字、系統(tǒng)和配置以便提供對于主題內(nèi)容的透徹理解。但是受益于本公開內(nèi)容的本領(lǐng)域技術(shù)人員將認識到,可以在沒有這些具體細節(jié)的情況下實踐主題內(nèi)容。此外,對眾所周知的特征、組件或模塊進行了省略、簡化、組合或分解,以免模糊所公開的主題內(nèi)容。
所公開的主題內(nèi)容的各個實施例可以通過硬件、固件、軟件或者其組合來實施,并且可以參照或者結(jié)合程序代碼來描述,所述程序代碼比如是用于設(shè)計的仿真、模擬和制作的指令、函數(shù)、規(guī)程、數(shù)據(jù)結(jié)構(gòu)、邏輯、應(yīng)用程序、設(shè)計表示或格式,其在由機器訪問時導(dǎo)致所述機器實施任務(wù)、定義抽象數(shù)據(jù)類型或低層級硬件情境或者產(chǎn)生結(jié)果。
對于仿真,程序代碼可以利用硬件描述語言或者另一種功能描述語言(其實質(zhì)上提供所設(shè)計的硬件預(yù)期會如何實施的模型)來表示硬件。程序代碼可以是匯編或機器語言,或者是可以被編輯和/或解譯的數(shù)據(jù)。此外,在本領(lǐng)域內(nèi)常常以一種形式或另一種形式提到采取動作或?qū)е陆Y(jié)果的軟件。這樣的表示法僅僅是陳述由處理系統(tǒng)執(zhí)行程序代碼的一種簡略方式,其導(dǎo)致處理器實施動作或產(chǎn)生結(jié)果。
程序代碼例如可以被存儲在易失性和/或非易失性存儲器中,比如存儲設(shè)備和/或相關(guān)聯(lián)的機器可讀或機器可訪問介質(zhì),其中包括固態(tài)存儲器、硬盤驅(qū)動器、軟盤、光學(xué)存儲裝置、帶、閃存、記憶棒、數(shù)字視頻盤、數(shù)字通用盤(dvd)等等,以及例如機器可訪問生物狀態(tài)保存存儲裝置之類的更加特殊的介質(zhì)。機器可讀介質(zhì)可以包括用于以可由機器讀取的形式存儲、傳送或接收信息的任何有形機制,比如天線、光纖、通信接口等等。可以通過分組、串行數(shù)據(jù)、并行數(shù)據(jù)等形式來傳送程序代碼,并且可以在已壓縮或已加密格式中使用。
程序代碼可以被實施在可編程機器上所執(zhí)行的程序中,所述可編程機器比如是移動或靜止計算機、個人數(shù)字助理、機頂盒、蜂窩電話和尋呼機以及其他電子設(shè)備,其分別包括處理器、可由處理器讀取的易失性和/或非易失性存儲器、至少一個輸入設(shè)備以及/或者一個或更多輸出設(shè)備??梢詫⒊绦虼a應(yīng)用于利用輸入設(shè)備輸入的數(shù)據(jù),以便實施所描述的實施例并且生成輸出信息??梢詫⑤敵鲂畔?yīng)用于一個或更多輸出設(shè)備。本領(lǐng)域技術(shù)人員可以認識到,可以利用各種計算機系統(tǒng)配置來實踐所公開的主題內(nèi)容的實施例,所述計算機系統(tǒng)配置包括多處理器或多核處理器系統(tǒng)、小型計算機、大型計算機以及可以被嵌入到實際上任何設(shè)備中的普適或小型計算機或處理器。還可以在分布式計算環(huán)境中實踐所公開的主題內(nèi)容的實施例,其中可以由通過通信網(wǎng)絡(luò)鏈接的遠程處理設(shè)備來實施任務(wù)。
雖然各項操作可能被描述成順序的處理,但是其中一些操作實際上可以被并行地、同時地以及/或者在分布式環(huán)境中實施,并且其中程序代碼被本地存儲和/或遠程存儲以供單處理器或多處理器機器訪問。此外,在一些實施例中,在不背離所公開的主題內(nèi)容的精神的情況下可以重新安排各項操作的順序。程序代碼可以由嵌入式控制器使用或者與之相結(jié)合來使用。
雖然已參照說明性實施例描述了所公開的主題內(nèi)容,但是此描述不意圖按照限制性意義來解釋。所公開的主題內(nèi)容所涉及的領(lǐng)域內(nèi)的技術(shù)人員能夠想到的說明性實施例的各種修改以及主題內(nèi)容的其他實施例被認為落在所公開的主題內(nèi)容的范圍內(nèi)。