201007457 九、發明說明: 【發明所屬之技術領域】 本發明是有關於一種緩衝儲存技術’特別是指一 η 調適緩衝裝置及其方法。 s 種可 【先前技術】 參閱圖1 ’ 一般電路設計中,處理器7會將運算資料寫 入外接記憶體8中。但是,由於處理器7速度普遍高出: 憶體8許多,所以通常採用一内建緩衝裝置7ι來暫存運= 資料,然後再繼續往下執行指令,以避免因記憶體 而降低效能。 ” 習知-種緩衝裝置接收處理器7傳來的數筆相鄰資料( 資料寬度是-字元—d))與對應位址後,會分別記錄在複 數分別具有_字元儲存寬度的資料項目(_y)與複數位址項 目内右該緩衝裝置支援寫入合併(write merge),則當其中 :份相鄰資料的對綠㈣增連續時,能合併朗系統匯 流排(bus) 9的單—寫人命令,作為傳送該等部份相鄰資料 的依據。雖然此種做法不需一一傳遞每一筆資料的位址並 可減少流經系統匯流排9的資料量,但是該資料項目的儲 2度因僅可容納一筆資料’所以只有相鄰資料的位址遞 增連續時才能進行合併,而合併機率並不大。 習種緩衝裝置將資料項目的神寬度擴張為四 緩衝裝置被寫滿前,可將位址連續的資料記錄在 ^〜資料項目。因此,即使位址連續的資料不是依序寫入 、、衝裝置,仍有機會合併在一起。不過,若是相鄰數筆資 201007457 料都非位址連續,則可能出現—資料項目僅記錄_ ’造成儲存空間極大的浪費。 斗 此外’習知另有允許同-項目可被安排記錄位址或是 資料’而不似前述兩種緩衝裝置必須準備位址項目和資料 項目。當前一位址與目前位址呈現遞增連續時,只需記錄 目前資料而不需記錄目前位址’而目前資料與先前資料則 可以合併成單—寫人命令。然而,當不滿足遞增連續時, 則必須將位址和資料都予以記錄。由於相鄰資料才能合併 ,因此將導致系統匯流排9的資料量仍難以減少。 【發明内容】 因此,本發明之目的,即在提供一種可以彈性地調整 儲存結構的可調適緩衝裝置及其方法,能有效合併資料而 使得系統匯流排的資料量下降,並且結構彈性有助於儲存 空間使用率的提高。 於是,本發明可調適緩衝裝置,包含:複數個項目, 每一個項目包括一位址攔位以及一記錄區塊;及一控制單 元,選擇性地將每一個項目設定為一般狀態或是轉換狀態❹ ,其中’當該控制早元設定該些項目的一第一項目為一般 狀態時,該第一項目的位址欄位用以記錄一第一位址,該 第一項目的記錄區塊記錄該第一位址所對應的資料以及相 鄰於該第一位址的其他位址所對應的資料;當該控制單元 設定該些項目的一第二項目為轉換狀態時,該控制單元將 該第二項目的位址糊位以及記錄區塊分為多個單元,其中 每一個單元皆可分別用以記錄一第二位址、該第二位址所 201007457 對應的資料以及相鄰於該第二位址所對應的資料。 而本發明可調適緩衝方法,適用於一可調適緩衝裝置 ’該可調適缓衝裝置包括複數個項目,每—個項目包括_
用以記錄位址相鄰之資料的記錄區塊,該記錄區塊可設定 為一般狀態或轉換狀態,該方法包含以下㈣:接收並根 據所接收資料對應的位址,判斷是否可將資料寫入該記錄 區塊的其中一個位址相鄰的記錄攔位;若無法將資料寫入 該記錄區塊的任一個位址相鄰的記錄攔位,判斷是否可將 其中一個項目由一般狀態變更為轉換狀態;以及若沒有任 何項目可由-般狀態變更為轉換狀態,則待該些記錄糊位 的資料寫出後’再將接收資料寫入;#中,由一般狀態變 更為轉換狀態是將每一個項目的位址攔位和記錄區塊分為 複數個單s,且其中至少有—個是未被寫人資料的空白單 元,而同-項目或同-單元的資料可合併寫出,以釋出空 白項目或單元。 【實施方式】 有關本發明之前述及其他技術内容、特點與功效,在 以下配合參考圖式之一個較佳實施例的詳細說明中,將可 清楚的呈現。 參閱圖2’纟發明可調適緩衝裝置之較佳實施例適用於 一處理器100中,能暫存處理器1〇〇的運算資料,且透過 一系統匯流排3將資料傳送到一記憶體2。 該可調適緩衝裝置1包含一控制單元u及多個項目。 每一個項目包括一個有效欄位(field)121、一個狀態欄位122 201007457 、一個致能攔位123、一個位址攔位124及一個記錄區塊 125 ’且記錄區塊125包括η個記錄攔位s(n-l)...s3、S2、sl 、s0 ° 該控制單元11可設定每一狀態攔位122的值,當設定 其值為0時’可代表所對應到的項目處於一般狀態,則當 設定其值為1時’可顯示該項目處於轉換狀態。且本較佳 實施例是預設所有項目為一般狀態《必須注意的是,文中 所設定的值不論為〇或是1,皆是用以清楚表達實施例的操 作内容’文内所述之任何設定數值皆非用以限定本發明的 範疇。 當該控制單元11設定該項目為一般狀態時,該項目之 位址欄位124可記錄該控制單元11寫入的一位址,而記錄 攔位s(n-l)〜s0可記錄與該位址相關的至少一資料。該相關 的資料包括該位址所對應的資料或相鄰於該位址的其他(n_ 1)個位址所對應的資料,其中n為記錄區塊125的攔位數。 在此舉一例子說明··假設n=8,且位址欄位124記錄的 位址為0x1000,且假設相鄰位址的位址差為4,則記錄欄 位S〇〜s7只能記錄對應位址0x1000、〇xl〇〇4、〇χι〇〇8、 0x100c、Οχιοιο、0χ1014、〇χ1〇18、〇xl〇lc 的資料,而這 些資料就是與位址欄位124所記錄之位址〇χ1〇〇〇相關的資 料。 當該控制單元11設定該項目為轉換狀態時,該控制單 兀η將該項目的位址攔位124和記錄區塊125分為多個單 元,且每一單元用於記錄該控制單元u寫入的一位址及與 201007457 • 該位址相關的至少一資料。而該相關的資料包括該位址所 - 對應的資料或相鄰於該位址的其他(m-2)個位址所對應的資 料’其中m是每一單元的棚位數。 如.參考圖7的項目3,單元unit i包括位址攔位124 與記錄攔位s7、S6,單元unit 2包括記錄欄位s5〜s3,單元 unit 3包括記錄攔位S2〜s〇。unit !的位址欄位124用於記錄 位址,而記錄攔位S7、S6用於記錄相關的資料。unh 2的 記錄攔位s5用於記錄位址,而記錄欄位s4、s3用於記錄相 • 關的資料。unit 3的記錄欄位s2用於記錄位址,而記錄攔 位s 1、s0用於記錄相關的資料。 該控制單元11也設定每一有效棚位的值,當項目 為一般狀態時,該有效攔位121的值預設為1〇〇;當項目為 轉換狀態時,有效欄位121的該等位元分別代表該項目中 的該等單元的有效性。如圖7的項目3,當unit 1、2有記 錄資料且unit 3沒有記錄資料時,有效攔位121的值可設為 110 ° ® 該控制單元11也設定每一致能欄位123的值,該致能 攔位123的值具有多個位元,該等位元分別對應記錄攔位 s(n_l)〜s0是否有記錄資料,當所對應的攔位有記錄資料時 ’位元值可設定為1,反之,位元值則設定為〇。 參閲圖3,本發明可調適緩衝裝置之較佳實施例所執行 的可調適緩衝方法包含以下步驟: 步驟61 :控制單元η接收一資料及與該資料相對應的 位址,並判斷有無適當項目或單元的記錄區塊125可寫入 9 201007457 配合參閲圖4,而步驟61包括以下子步驟·. :步冑611 ··判斷接收資料所對應的位址與記錄區塊 二任-資料所對應的位址是否屬於同—個呈—般狀態之 η個相鄰位址。若是’則跳到步驟62 ;若否 到子步驟612。 :步冑612··判斷接收資料所對應的位址與記錄區塊 25中任—資料所對應的位址是否屬於同一單元的(㈣個 2位址。若是,則跳到步驟&,若否,則跳到子步驟帽 而執行子步驟611〜612的目的在於將位址連續或相鄰 的資料集中’以利後續記錄於同一項目或單元,進而將這 些集中的資料一起合併輸出到記憶體2。 j步驟613 :判斷是否尚有未被寫入資料的項目或單元 ’、7是’跳到步驟62 ;若否,則判斷該資料無對應的項目 或單元可寫入並跳到步驟63。 步驟62 .控制單% u將接收資料或其所對應的位址寫❹ 入步驟61判斷出的對應項目或單元中,接著跳回步驟6ι。 更詳細地來說,當控制單元η在子步驟611判斷出接 枚資料所對應的位址與記錄區塊125中任一資料所對應的 位址屬於同一個呈一般狀態之項目的η個相鄰位址,便會 將接收資料寫人記錄區& 125的項目中’並修改致能搁位 123的值。 而當控制單元11在子步驟612判斷出接收資料所對應 10 201007457 的位址與記錄區塊125中任一資料所對應的位址屬於同一 單το的(m-l)個相鄰位址,便會將接收資料寫入記錄區塊 125的單元中,並修改致能攔位123的值。
且當控制單元U在子步驟613判斷出尚有未被寫入資 料的項目或單元,便會將接收資料的對應位址轉換成一參 考位址,並將該參考位址和接收資料寫入空的項目或單元 中。並視需要修改致能攔位123、有效欄位121的值。值得 注意的是,將接收資料的對應位址轉成參考位址的方式不 限,只要在寫入空的項目時使接收資料的對應位址屬於^ 個相關該參考位址的位址(其中n為每—記錄區塊的欄位數) ,或是在寫入空的單元時使接收資料的對應位址屬於 個相關該參考位址的位址即可(其中m為每一單元的搁位數) 。因此,該參考位址的值也可以跟接收資料的對應位址一 樣’也就是說,不需進行轉換,直接將接收資料的對應位 址和接收資料寫人該項目巾。例如:若接收f料的對應位 址是0x1534,則其參考位址可為〇χ152〇或〇χΐ534等。 回歸參閲圖3,步驟63:控制單元11依據各爛位的記 錄情形,決定是否將其中一項目更動為轉換狀態。若是, 跳到步驟64,若否,直接跳到步驟65。本例是指更動最後 一項目,但不以此為限。 也就是說’若該些項目當中至少有一 ^ 靖目於轉換狀態 下可包括未被寫入資料的空白單元,則控制單元U會將該 項目設定為轉換狀態。若該些項目於轉換狀態下仍無法2 括未被寫入資料的空白單元,則控制單元u不對該些項= 11 201007457 執行轉換,例如··幾乎記錄區塊125的所有欄位都被寫入 ’不適宜再對記錄區塊125做調整,或例如··即使執行狀 態轉換後’仍然無法挪出—單元供接收資料寫入。 步驟64 ··將其中—項目設定為轉換狀態,因此使記錄 區塊125分為多個單元,更將該項目中原先已記錄的資料 與位址置於其中-單元,且視f要修改所記錄的位址值。 而且該等單元中,至少有一個是未被寫入資料的空白單 兀’控制單元11可將接收資料的對應位址轉換成—參考位 址,並將該參考位址和接收資料寫入該空白單元。此外,❹ 更進-步設定狀態攔位122的值為丨,且修改有效欄位121 和致能攔位123,然後跳回步驟6 J。 在此舉-例子說明,請參閱圖6的項目3,假設原先項 目3已3己錄了 D11(相對應的位址為〇x〇〇b〇)和參考位址 〇X〇_。當項目3需被分為多個單元以繼續記錄下一筆資料 時’參閱圖7的項目3’將項目3分為3個單元:她 卜响3。且將D11移至unhl,即將du由爛位μ移到 s6並修改位址欄位124所記錄的位址為〇χ〇_。此外,再❹ 將D12(對應的位址為0χ6〇6〇)寫入她2,即寫入搁位U, 並於欄位s5寫入位址〇x6〇6〇。 步驟65 ’控制單元11先短暫拖延(stall)處理器100的 寫入動作,同時透過系統匯流排3將其中一項目(如:項目 0)中的記錄輸出到記憶體2,且將其他項目中的記錄依序往 前移動而釋出最後-個項目(如:項目3)(亦即產生未被寫入 資料的項目然後跳回步驟62。值得注意的是,在輪出時 12 201007457 ,對於—般狀態的項目,是將該項 疋册邊項目内所有資料一起合併 後再輸出,而對於轉換狀態的項目,則將同—單元内 =一起先合併後再輸出,且可以每次僅輸出其中—單元之 資料’而不需完全輸出該項目的所有單元之資料,如此可 產生未被寫入資料的單元。 在此舉一簡單例子說明可調適緩衝方法的流程,假設 依序送人緩衝裝置的資料為D1、D2、...、Dn、dh,且
所5應的位|址如下表 D14 所示 0x1518 假設在D8寫人前,D1〜D7於項目中的寫人關係如圖 〇 依據子步驟611’因為與項目〇中已記錄之位址〇χΐ〇〇〇 相關的8(η=8)個位址分別為0χ1〇〇〇、〇χ1〇〇4、〇χ1〇〇8、 0x100c、oxioio、0x1014、〇x1018、0xl01c。而 D8 對應到 的位址為〇xl〇18,屬於這8個位址的其中之一,因此,依 據步驟62,D8寫入項目0的記錄欄位s6(如圖6)。且致能 欄位123的值將變為01011011。 接收到的下一資料的對應位址為〇x320〇 ,依據子步 驟611 ’與項目1中已記錄之位址〇χ32〇〇相同,因此依據 步驟62,D9寫入項目1的記錄欄位s〇,且致能欄位123的 值變為00001101(如圖6的項目u。 同樣,D10(對應到的位址為Oxioic)也依據子步驟611 和步驟62寫入項目〇的記錄欄位S7中(如圖6的項目〇)。 13 201007457 而Dll(對應的位址為0x00b0)進行子步驟611和6i2的 判斷結果均為否’因此跳到子步驟613。且因為項目3尚未 有資料寫入,因此如圖6所示,依據步驟62將一參考位址
OxOOaO寫入項目3之位址攔位124,且將D11寫入S4。且 修改致能欄位123為00010000,而狀態欄位122的值此時 為〇’有效爛位121的值此時為1〇〇。 而下一資料D12(對應的位址為〇χ6〇6〇)因為子步驟 611〜613的判斷結果都為否,且步驟63判斷可將項目3的 狀態做轉換,所以執行步驟64,因此,如圖7所示,控制❹ 單元11將項目3分為3個單元,且先將Du移至unk i, 並修改位址攔位124所記錄的位址為〇x〇〇b〇。此外,再將 〇12寫入11仙2,並於攔位35寫入參考位址如6〇6〇。 机程接著跳回步驟61,以等待接收下一資料對應 的位址為Gx6GaG)。因為依據子步驟611、612的判斷結果 都為否’因此流程跳到子步驟⑴。因為子步驟613的判斷 結果為是’所以如圖8所示,將寫人項目3的她3 , 即攔位s0,且將位址〇x6〇a〇寫入欄位s2,。 ⑩ 接收下資料D14,且因為子步驟611〜613與步驟63 的判斷結果都為否’所以進行步驟65,如圖9所示,將項 中的》已錄輸出,且將其他項目中記錄的資料依序往前 移而釋出項目3。並跳回步驟62以將D14寫入項目3。 綜合上述’即使面對處理器100送出資料之對應位址 不具規則性的情況,也能將具有連續或相鄰位址的資料記 錄於同一項.目或單元中。然後將這些資料合併成對系統匯 14 201007457 流排3的單-寫入命令,亦即只需通知-個位址,便能傳 送複數資料。因此’這樣的安排能有效提高資料合併輪出 的機率’而減少位址傳遞次數,且流經系統匯流排3的資 料量也會隨之降低。此外’本實施例中的項目因為可由一 般狀態轉換為轉換狀態,因此,可爭取更多的記錄空間, 也盡量避免了一個項目僅記錄—筆資料的窘境。 本發明之另-實施例在步驟63的判斷結果為否時,可 :選:先不執行㈣65’改為判斷其他項目是否可以分為 多個單元,若可以,則跳到步驟64以分出其他單元。但若 =有項目中的記錄區塊U5 #呈現报滿的狀態,而無法再 分為多個單元,此時則需執行步驟65。 本發明之另一實施例也可以進—步判冑目前僅剩幾個 項目,可以自由寫Μ也就是說,還有幾個項目的記錄區塊 125疋全為空白)’並當判斷出少於一預定數目的項目可以 自由寫入時’即將這些項目依步驟64設定成轉換狀態以分 成多個單元來使用。值得注意的是,決定分成多個單元的 時間點不以上述所說為限。 本發明之另一實施例中,於步驟62中,將接收資料的 對應位址轉換成參考位址的方式也可以採用另一方式:計 算接收資料的對應位址除以(位址差χ記錄欄位之欄位數)的 餘數,且餘數為〇Χ〇〇的,將所對應到的資料寫入記錄欄位 SO,餘數為0x04的寫入sl,餘數為〇χ〇8的寫入s2,其餘 以此類推。且寫入位址攔位124中的參考位址則是指向記 錄攔位S〇所記錄之資料所對應到的位址。如圖6的項目2 15 201007457 ’因為D6對應的位址為〇xI534,而因為0x1534除以(4χ 8=)32的餘數為0x14,所以將D6寫入記錄欄位s5,而攔位 s〇對應到的位址為〇xl52〇,因此寫入位址攔位124中的參 考位址即為0x1520。值得注意的是,寫入位址欄位124中 的參考位址除了可以是指向記錄欄位s〇之外,也可以指向 其他具代表性的記錄攔位,譬如:記錄欄位内確實記錄有 資料者。 綜上所述,本發明可調適緩衝裝置及其方法支援寫入 合併的做法’並允許可調適轉換來更改項目的記錄結構,◎ 因而能降低流經系統匯流排3的資料量,並使緩衝裝置j! 的儲存空間有較佳運用,故確實能達成本發明之目的。 惟以上所述者’僅為本發明之較佳實施例而已,當不 能以此限定本發明實施之範圍,即大凡依本發明申請專利 範圍及發明說明内容所作之簡單的等效變化與修飾,皆仍 屬本發明專利涵蓋之範圍内。 【圖式簡單說明】 圖1是一方塊圖,說明處理器將運算資料寫入外接記❹ 憶體中; 圖2是一方塊圖,說明本發明可調適緩衝裝置之較佳 實施例内建於處理器中’並將資料寫入記憶體中; 圖3是一流程圖,說明本發明可調適緩衝方法之較佳 實施例; 圖4是一流程圖,說明判斷有無適當項目或單元可供 資料寫入; 八 16 201007457 圖5是一示意圖,說明各項目皆處於一般狀態; 圖6是一示意圖,說明將資料寫入於一尚未有資料寫 入的項目内, 圖7是一示意圖,說明將其中一項目更動為轉換狀態 9 圖8是一示意圖,說明資料寫入於一尚未有資料寫入 的單元内;及 圖9是一示意圖,說明將其中一項目的記錄輸出而空 出一項目。
17 201007457 【主要元件符號說明】 100 處理器 3 系統匯流排 1 可調適緩衝裝置 61-65 步驟 11 控制單元 611〜613 子步驟 121 有效欄位 s0 記錄爛位 122 狀態欄位 si 記錄欄位 123 致能欄位 s2 記錄欄位 124 位址欄位 s3 記錄欄位 125 記錄區塊 s(n-l) 記錄欄位 2 記憶體 unitl~3 XtV — 早兀 ❿
18