優化圖像存儲器訪問的制作方法
【技術領域】
[0001] 本發明大體設及訪問存儲器。更具體地,本發明設及使用步進瓦工引擎(stepper Tiler Engine)訪問成像存儲器。
【背景技術】
[0002] 訪問存儲在存儲器中的圖像的計算機行為可能連續訪問存儲器中的圖像的某一 部分。相應地,流式傳送來自攝像機的視頻或將圖像發送到高速打印機可能需要每秒幾 千兆的數據帶寬。對存儲器和數據帶寬的差管理可能導致差的成像性能。
[0003] 此外,在訪問儲存設備中的圖像的時候,各種類型的無效率或錯誤可能發生。例 如,處理器可能試圖處理仍未被放在高速緩存中的圖像的行或區域,導致從儲存設備處理 該行或圖像。高速緩存是當與儲存設備相比時可被更快訪問的較小存儲器。當在高速緩存 中未找到之后從儲存設備處理圖像的該行或區域時,結果是高速緩存未命中。當與在不具 有任何高速緩存未命中的情況下處理圖像相比時,高速緩存未命中可能減慢圖像存儲器訪 問。
【附圖說明】
[0004] 通過參照附圖,可更好理解W下詳細描述,附圖包含了所公開的主題的許多對象 和特征的具體示例: 圖1是可根據實施例使用的計算設備的框圖; 圖2是圖示根據實施例的將圖像布置成一維陣列的圖; 圖3是矩形組裝器的圖示; 圖4A、4B和4C圖示了根據實施例的使用矩形緩沖器線性處理圖像的示例; 圖5A、5B和4C圖示了根據實施例使用行緩沖器線性處理圖像的示例; 圖6是根據實施例的訪問存儲在存儲器中的圖像的方法的處理流程圖;W及 圖7是根據實施例的包含訪問存儲在存儲器中的圖像的指令的計算機可讀介質的圖。
[0005] 貫穿公開文本和圖,使用相同數字來引用類似部件和特征。在100系列中的數字 指代最初在圖1中發現的特征;在200系列中的數字指代最初在圖2中發現的特征;并且W 此類推。
【具體實施方式】
[0006] 本文描述的實施例公開了優化圖像存儲器訪問。圖像被布置為一維(1D)陣列,使 得可使能線性訪問模式。如本文中使用的圖像可W是二維位圖、視頻的帖或=維對象。圖 像數據可W由像素區域構成。如本文使用的術語像素區域可W是單個像素、一組像素、像素 區域或其任意組合中的至少一種。圖像可W被處理為像素區域或行的組或矩形區域。在 實施例中,在本文還可W與術語行、行緩沖器、矩形、矩形緩沖器、數據緩沖器、陣列、1D陣列 或緩沖器可互換地稱為術語遞增。如本文使用的處理可W設及復制、傳輸或流式傳送來自 存儲器的圖像的遞增或像素區域到電子設備(例如計算機、打印機或攝像機)的處理器或輸 出。因此,替代對非線性矩形存儲器區域或非郵鄰行的低效存儲器訪問的是,將數據的期望 的矩形或行訪問模式順序封裝到1D陣列的集合中,W易于存儲器訪問并且易于計算。本領 域技術人員將認識到,將存儲器模式封裝到1D陣列中的該方法允許標準矢量處理指令和 自動遞增存儲器訪問指令被采用W高效訪問和處理數據。
[0007] 步進瓦工引擎用作流水線機器W預取用于矩形組裝器的存儲器模式。矩形組裝器 將存儲器模式組裝成高速緩存中的線性封裝的1D陣列的集合。步進瓦工引擎可然后使得 該1D陣列的集合是處理器可用的。處理單元然后可W使用指針訪問1D陣列。處理單元處 理數據,然后步進瓦工引擎將經處理的數據從1D陣列寫回到高速緩存或儲存設備。矩形組 裝器在處理完成之后可W將1D陣列從高速緩存收回。
[0008] 附加地,步進瓦工引擎包括狀態和控制寄存器的集合,該集合可被編程為自動訪 問存儲器模式并且將它們組裝成如上文所討論的線性封裝的1D陣列。可流水線方式 訪問存儲器模式,其中順序訪問每個模式。步進瓦工引擎包括可編程能力W順序在將被處 理的整個圖像區域上步進,并且將存儲器模式(例如矩形和行)組裝成封裝的線性1D陣列作 為流水線中的預取步驟。存儲器模式也可W W重疊方式訪問,其還使能預取和處理。當預取 存儲器模式時,通過步進瓦工引擎訪問存儲器并且將存儲器組裝成高速緩存中的1D陣列, 同時處理器訪問來自高速緩存的1D陣列。如上文討論的,在通過步進瓦工引擎將已經處理 或使用的1D陣列已經寫回到存儲器中的適當位置中時,可W從高速緩存收回它們。
[0009] 附加地,在實施例中,在處理行或區域之前可W將圖像的行或區域放到高速緩存 中,W防止高速緩存未命中。因為圖像被布置為一維陣列并且訪問模式是線性的,使用存 儲器尋址自動遞增指令和面向陣列處理的指令集,處理數據的陣列可W更快,因為可預測 在圖像存儲器訪問期間將被處理的下一行或區域。可通過存儲在高速緩存中來準備行或區 域,W用于快速訪問和處理。使用本文公開的方法來封裝存儲器模式(例如矩形或選擇的 行巧Ij線性1D陣列的集合中,本文描述的實施例可提供對存儲器訪問的優化W加速處理,因 為處理器將原本在繼續處理之前需要等待存儲器讀取和寫入操作完成。
[0010] 在W下描述和權利要求中,可使用術語"禪合"和"連接"W及它們的派生詞。應 當理解的是,該些術語非旨在作為相互的同義詞。相反,在特定實施例中,"連接"可用于指 示兩個或更多元件處于相互的直接物理或電氣接觸中。"禪合"可表示兩個或更多元件處于 直接物理或電氣接觸中。然而,"禪合"還可表示兩個或更多元件不處于相互直接接觸中,但 仍然相互協作或交互。
[0011] 一些實施例可W在硬件、固件和軟件中的一個或組合中實施。一些實施例還可被 實施為存儲在機器可讀介質上的指令,其可由計算平臺讀取和實行W執行本文描述的操 作。機器可讀介質可包括用于存儲或傳輸機器(例如計算機)可讀形式的信息的任何機構。 例如,機器可讀介質可包括只讀存儲器(ROM);隨機存取存儲器(RAM);磁盤存儲介質;光學 存儲介質;閃存設備;或電、光、聲或其它形式的傳播信號,例如載波、紅外信號、數字信號, 或發送和/或接收信號的接口,等等。
[0012] 實施例是實施方式或示例。在說明書中對"一實施例"、"一個實施例"、"一些實施 例"、"各個實施例"、或"其它實施例"的引用表示結合該實施例描述的特定特征、結構或特 性被包括在本發明的至少一些實施例中,但不一定在所有實施例中。各處出現的"一實施 例"、"一個實施例"或"一些實施例"不一定都指代相同實施例。來自一實施例的元件或方 面可W與另一實施例的元件或方面組合。
[0013] 不是本文描述和圖示的所有部件、特征、結構、特性等都需要被包括在特定實施例 或多個實施例中。如果說明書例如陳述了 "可"、"可能"、"能夠"或"能"包括部件、特征、結 構或特性,不要求該特定部件、特征、結構或特性被包括。如果說明書或權利要求設及"一" 或"一種"元件,其不表示僅存在一個該元件。如果說明書或權利要求設及"一附加"元件, 其不排除存在多于一個的該附加元件。
[0014] 應當注意,盡管參考特定實施方式描述了一些實施例,但是根據一些實施例,其它 實施方式是可能的。附加地,在圖中圖示的和/或本文描述的電路元件或其他特征的布置 和/或順序不需要W圖示和描述的特定方式來布置。根據一些實施例,很多其它布置是可 能的。
[0015] 在圖中示出的每個系統中,在一些情況下的元件可能每個具有相同附圖標記或不 同附圖標記來表明表示的該元件可能是不同和/或類似的。然而,元件可W足夠靈活W具 有不同實施方式,并且與本文示出或描述的系統中的一些或所有一起工作。圖中示出的各 個元件可W是相同或不同的。哪個被稱為第一元件并且哪個被稱為第二元件是任意的。
[0016] 圖1是根據實施例可使用的計算設備100的框圖。計算設備100可例如是膝上型 計算機、臺式計算機、平板計算機、移動設備或服務器等。計算設備100可包括被配置為執 行存儲的指令的中央處理單元(CPU) 102,W及存儲由CPU102可執行的指令的存儲器設備 104。CPU可通過總線106禪合到存儲器設備104。附加地,CPU102可W是單核處理器、多 核儲存設備、計算集群、或任意數量的其它配置。此外,計算設備100可包括多于一個的CPU 102。由CPU102執行的指令可被用于優化存儲器訪問。可W在本發明的實施例中使用除 了CPU之外的很多計算架構,例如單指令多數據(SIMD)指令集、數字信號處理(DSP)處理 器、圖像信號處理(ISP)處理器、GPU、或其他類型的陣列處理器,例如超長指令字(VLIW)機 器。
[0017] 計算設備100還可包括圖形處理單元(GPU) 108。如示出的,CPU102可W經由總 線106禪合到GPU108。GPU108可W被配置為執行在計算設備100內的任何數量的圖形 操作。例如,GPU108可W被配置為擅染或操縱將被顯示給計算設備100的用戶的圖形圖 像、圖形帖、視頻等。在一些實施例中,GPU108包括多個圖形引擎(未示出),其中