每個圖形 引擎被配置為執行特定圖形任務,或執行特定類型的工作負荷。
[0018] 存儲器設備104可包括隨機存取存儲器(RAM)、只讀存儲器(ROM)、閃存、或任何其 它適當存儲器系統。例如,存儲器設備104可包括動態隨機存取存儲器(DRAM)。存儲器設 備104可包括被配置為執行用于優化圖像存儲器訪問的指令的設備驅動器110。設備驅動 器110可W是軟件、應用程序、應用代碼等。
[0019] 計算設備100包括圖像捕獲機構112。在實施例中,圖像捕獲機構112是攝像機、 立體攝像機、紅外傳感器等。圖像捕獲機構112被用于捕獲圖像信息。相應地,計算設備 100還包括一個或多個傳感器114。在示例中,傳感器114還可W是用于捕獲圖像紋理信息 的圖像傳感器。此外,圖像傳感器可W是電荷禪合設備(CCD)圖像傳感器、互補金屬氧化物 半導體(CMOS)圖像傳感器、片上系統(S0C)圖像傳感器、具有光敏薄膜晶體管的圖像傳感 器、或其任意組合。設備驅動器110可使用步進瓦工引擎來訪問由傳感器114捕獲的圖像。
[0020] CPU102可W經由總線106連接到被配置為將計算設備100連接到一個或多個1/ 0設備118的輸入/輸出(I/O)設備接口 116。I/O設備118可W包括例如鍵盤和定點設 備,其中定點設備可包括觸摸板或觸摸屏等。I/O設備118可W是計算設備100的內置部 件,或可W是外部連接到計算設備100的設備。
[0021]CPU102還可經由總線106鏈接到被配置為將計算設備100連接到顯示設備122 的顯示接口 120。顯示設備122可包括為計算設備100的內置部件的顯示屏。顯示設備122 還可包括外部連接到計算設備100的計算機監視器、電視機、或投影儀等。
[0022] 計算設備還包括存儲設備124。存儲設備124是諸如硬盤驅動器、光驅、拇指驅動 器、驅動器陣列或其任意組合的物理存儲器。存儲設備124還可包括遠程存儲驅動器。存 儲設備124包括被配置為在計算設備100上運行的任何數量的應用126。應用126可用于 處理圖像數據。在示例中,應用126可被用于優化圖像存儲器訪問。此外,在示例中,應用 126可訪問存儲器中的圖像W便執行對圖像的各種處理。存儲器中的圖像可W使用下文描 述的步進瓦工引擎來訪問。
[0023] 計算設備100還可包括可被配置為經由總線106將計算設備100連接到網絡130 的網絡接口控制器(NIC) 128。網絡130可W是廣域網(WAN)、局域網(LAN)或因特網等。
[0024] 在一些實施例中,應用126可發送來自計算設備100的圖像到打印引擎132。打印 引擎可發送圖像到打印設備134。打印設備134可包括打印機、傳真機和可使用打印對象模 塊136打印各個圖像的其他打印設備。在實施例中,打印引擎132可跨網絡130發送數據 到打印設備134。此外,諸如圖像捕獲機構112的設備可使用本文描述的技術來處理像素陣 列。顯示設備122還可使用本文在實施例中描述的技術W加速顯示器上的像素的處理。
[0025] 圖1的框圖非旨在指示計算設備100將包括圖1中示出的所有部件。此外,取決 于【具體實施方式】的細節,計算設備100可包括圖1中未示出的任何數量的附加部件。
[0026] 圖2是根據實施例,圖示圖像到一維陣列中的布置方案200的圖。在訪問存儲器 中的圖像之前,布置方案200可由步進瓦工引擎和矩形組裝器邏輯執行,W改進訪問存儲 器中的圖像的過程的效率。步進瓦工引擎可提供存儲器緩沖,其中W過程的方式快速處理 二維圖像202的區域。步進瓦工可使用步進高速緩存來存儲在成像訪問期間二維圖像的所 選區域。應當注意的是,在本文公開的實施例中,可使用能夠快速訪問的任何高速緩存。
[0027] 存儲器104 (圖1)中的二維圖像202可被劃分為多個像素區域204。每個像素區 域204可包含一個或多個像素。在實施例中,每個像素區域204可表示像素的矩形成組,或 像素的行,或由行和矩形一起構成的區域。在圖像存儲器訪問期間,每個像素區域204可被 放入高速緩存中,在高速緩存中,圖像區域204將由CPU102處理,并且在處理之后被順序 從高速緩存110移除。除了CPU之外,實施例可使用任何其它處理架構或方法,包括但不限 于邏輯塊、單指令多數據(SIMD)、GPU、數字信號處理器(DSP)、圖像信號處理器(ISP)或超 長指令字(VLIW)機器。
[002引步進瓦工引擎可將二維圖像202重新配置為區域的一維陣列206的集合,例如行 和矩形。因此,與非線性存儲器區域相對的,可W將任何訪問模式封裝在線性1D陣列中W 易于存儲器訪問并且易于計算。一維陣列206的每個塊可表示像素區域204,像素區域204 可W是像素的矩形成組或行。盡管在圖2中示出通過將二維圖像202的每個矩形塊轉換為 一維陣列206的像素區域204來將二維圖像202組裝為一維陣列206的集合的過程,但是 可使用任何類型的訪問模式。例如,還可將二維圖像204的每個列組裝為ID陣列。
[0029] 與二維陣列的不規則模式相對的,通過步進瓦工的該配置允許CPU102W線性順 序模式處理每個像素區域204。不規則存儲器訪問模式可引起在處理中的延遲,因為該訪問 模式不能W可預測方式被讀取或寫入。此外,存儲器系統可由各種大小和級的高速緩存構 成,其中當與更遠離處理器的其他存儲器相比時,更靠近處理器的高速緩存具有更快的訪 問時間。通過將存儲器訪問優化為線性1D陣列,可利用處理階段來優化和流水線化存儲器 性能。在實施例中,可從左到右或從右到左讀取像素區域204。隨著一個像素區域204正被 處理,可將在序列中的下一像素區域從存儲器儲存設備104傳輸到高速緩存,而可W從高 速緩存移除先前已被處理的另一像素區域。
[0030] 經由步進瓦工引擎,可使用自動遞增指令來快速訪問一維陣列206的每個像素區 域204。例如,諸如通常在C++中使用的*data++之類的快速融合存儲器自動遞增指令可訪 問圖像數據的任何部分,而不使用特別存儲器訪問模式。自動遞增指令可使用基址和偏移 來訪問數據,其通常要求一個計算來找到在陣列中的目標數據的地址。因此,當與被用于訪 問陣列中的數據的尋址模式相比時,自動遞增指令使能更快的存儲器訪問。例如,使用C++, 將使用諸如data[x] [y]的指令來訪問2D陣列,其中X表示行,并且y表示目標數據的列。 然而,在獲得目標數據地址之前,該樣的指令通常要求幾個計算。相應地,當與2D陣列相比 時,將數據布置在順序的1D陣列中使能了更快的數據訪問。
[0031] 圖3是圖示根據實施例的矩形組裝器300的圖。矩形組裝器300可W是可用于準 備二維圖像用于存儲器緩沖的步進瓦工中的引擎、命令或邏輯。矩形組裝器300可在二維 陣列302上操作W將它們組裝為一維陣列304或面積矢量。二維陣列302中的每個包含像 素區域,像素區域在一些實施例中可表示二維圖像的像素或像素的成組。二維陣列302中 的每個塊可W被給予對應于在二維陣列302內的像素區域的X和Y坐標的命名。如上文討 論的,C++中用于訪問像素區域的指令將是"data[x] [y]"。
[0032] 矩形組裝器300可將每個二維陣列302組裝為一維陣列304,使得W順序次序布置 每個陣列內包含的塊,允許更快、更可預測的訪問模式。如上文討論的,CPU可利用自動遞 增機器指令形式來依次訪問每個塊,其可在相同融合指令中執行處理和存儲器遞增二者, 該比發出第一指令W改變或遞增存儲器地址并且發出第二指令W執行處理更高效。例如, 用于訪問塊的序列的C++軟件中的指令可包含指令"*data++",該將允許生成代碼來使用 自動遞增指令形式W指示CPU在處理當前塊之后訪問每個隨后的塊。通過將行訪問模式的 矩形格式化為封裝的線性1D陣列,步進瓦工引擎提供高效的融合處理和存儲器自動遞增 指令W及訪問存儲器的增大速度,因為1D陣列可W是使得1D陣列能夠被保持為在高速緩 存中靠近處理器的大小。
[0033] 圖4A、4B和4C圖示了根據實施例使用矩形緩沖器線性處理圖像的示例。圖4A、 4B和4B圖示了使用具有將被處理的矩形區域的步進瓦工引擎,該矩形區域可跨行緩沖器 的集合被移動并且被包含在步進瓦工快速高速緩存中。步進瓦工引擎可在行被需要之前預 取行,W允許矩形組裝器W流水線方式將矩形區域預組裝為封裝線性1D陣列的集合用于 處理。行可W被預取并且存儲在作為用于提取矩形的容器的快速步進瓦工高速緩存中。在 圖中,圖像400中的像素區域或遞增區域可W被切開并且指明為處理區域401、活動緩沖器 402、收回緩沖器404和預取緩沖器406。該區域緩沖器中的每個的大小和形狀可W在處理 之前定義。
[0034]處理區域