TWI359358B - Methods, system and machine-readable storage mediu - Google Patents
Methods, system and machine-readable storage mediu Download PDFInfo
- Publication number
- TWI359358B TWI359358B TW092137494A TW92137494A TWI359358B TW I359358 B TWI359358 B TW I359358B TW 092137494 A TW092137494 A TW 092137494A TW 92137494 A TW92137494 A TW 92137494A TW I359358 B TWI359358 B TW I359358B
- Authority
- TW
- Taiwan
- Prior art keywords
- buffer
- pool
- index
- memory
- command
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Information Transfer Systems (AREA)
- Multi Processors (AREA)
- Computer And Data Communications (AREA)
Description
1359358 玫、發明說明: 【發明所屬之技術領域】 本申請案係關於管理記憶體。
先前技術】 一種多處理器系統可包括一共享記憶體,即,相同記憶 體可藉由該系統中兩個或多個處理器來存取(讀出或者寫 入)°亦可將該共享記憶體從邏輯上分區爲多個緩衝區。 【發明内容】 圖1顯示了一多處理器系統1〇,其包括處理器2〇_29、一 記憶體30以及一具有一局部記憶體41的緩衝區管理器 (BMGR)40。該等處理器21-29中的每—個、記憶體川以及 BMGR 40均連接至一系統匯流排5〇。在作業中,該等處理 器20-29中的每一個以及BMGR 4〇可以存取記憶體%,舉例 而言,從記憶體30中讀出資料以及/或者將.資料寫入至記憶 體3〇。在一實施例中,記憶體3〇從邏輯上被分區為緩衝池 60以及70,每個緩衝池包括一組具有相同大小的緩衝區。 在此實例中,緩衝區6卜65位於池6〇中,以及緩衝區7卜73 位於池70中。記憶體3〇亦儲存至少一個緩衝區資訊陣列 ,該陣列包括-具有緩衝區索引91-95的緩衝區索引陣列% 以及一具有參考計數參考計數陣列ι〇〇 。在此實施例中,緩衝區索引91_95以及R—CNT(參考計數 )101-105分別對應於緩衝池6〇中的緩衝區61_65。緩衝區索 引陣列90可被稱爲緩衝區索引91·95的一"自由表,,。緩衝區 O:\90\904IO.DOC4 =91 95的違自由表以及參考計數⑻⑻被卿 “管理-個池中緩衝區的分配以及解除分配,隨後將對此 進行解釋。BMGR 4〇儲存了來自局部記憶_中緩衝區索 引陣列9G的緩衝區索引的每個自由表之-子集(subset)。 ’GR 4G包括—組緩衝池分配/解除分配的暫存器Μ,其中 每個刀S& /解除分gei的暫存器對應於記憶體%中的一個緩 衝池。在系統_作㈣程中,-處理器可藉由將-讀出 命令發送給BMGR 4G來請求—緩衝區分配,其中該命令指 定了對應於記憶體30中# 一個緩衝池的一分配/解除分配 暫存器34。作爲回應,BMGR將—緩衝區的—緩衝區指標 位址發迗給該請求處理器,而該緩衝區指標位址基於儲存 於局部記憶體41中的緩衝區索引的該自由表上的一緩衝區 索引。 如此處所述,在一實施例中,僅有來自緩衝區索引陣列 90的緩衝區索引的每個自由表之一子集儲存於局部記憶體 41中。在此情形下,BMGR 40上的局部記憶體41的大小就 可能要減少。儲存於局部記憶體41中的該等自由表索引健 存於一個所謂的自由表循環佇列中。循環佇列表示為—件 列’其中資料(或者位址)儲存於該佇列中的連續位置上,起 始於一第一位置並且繼續直至到達一結束位置’當該彳宁列 繞起(wrap)時則允許在該佇列的該起始位置處覆寫 (over-written)資料(或者位址)。在系統1 〇的一實施例中,.該 自由表循環佇列藉由兩個指標來引用·,一個”頭"指標以及 一個"尾”指標。該頭指標用來指.向局部記憶體41中可分配 O:\90\90410.DOC4 1359358 的下-個緩衝區索引’以及該尾指標用來指向局部記憶體 41中可被寫回記憶體3〇的下一個緩衝區索引。 圖2顯不了 一過程100,其可藉由BMGR 40來執行以將 衝區分配給—請求處理器129。在過程_的執行過程中 ,BMGR 40處於間置⑴〇)狀態以等待一來自一處理器^9 的叩7。針對一接收到的分配命令(丨12),過程1〇〇決定(1 U) 一緩衝區是否可用於分配(舉例而言,BMGR4〇自由表佇列 上可用的一緩衝區索引)。如果一緩衝區索引被決定為可用 ,則BMGR 40將一對應於該分配緩衝區的緩衝區指標位址 發运(120)給該第一處理器,增加(122)該頭指標以指向該自 由表佇列上的下一個緩衝區索引。如果決定了一緩衝區索 引為不可用,則BMGR 40將一個空指標(舉例而言,零值) 傳回(116)給該第一處理器。過程1〇〇包括決定(125)是否需 要預取更多的緩衝區索引以保持局部記憶體41中該自由表 循環佇列上有足夠數量的缓衝區索引,以及如果決定(125) 了舄要更多的缓衝區索引的話,郭麼從記憶體3〇中預取 (126)附加的緩衝區索引。 【實施方式】 執行過程1〇〇可以允許兩個或更多個處理器21_29來共享 存取一緩衝池中的一特定緩衝區β在此實施例中,如果— 第一處理器具有一分配好的緩衝區,那麼該第一處理器可 允許一第二處理器來存取分配好的該緩衝區。舉例而言, 邊第一處理器可將分配好的該緩衝區的該位址發送給該第 二處理器。大約在同時,該第二處理器開始存取分配好的 O:\90\904IO.DOC4 -10- 1359358 該緩衝區,該第二處理器可以將一緩衝區增量命令發送給 BMGR 40。請繼續參考過程1〇〇(如圖2所示),針對—接收 到(130)的緩衝區增量命令,BMGR 40決定(135)對應該指標 位址的合適緩衝池,並且讀出,將,n,加到R—CNT(舉例而言 ’增量R_CNT)並且將對應於分配好的該緩衝區的該r_cnt 寫回去(140)。第一以及第二處理器可繼續存取分配好的該 缓衝區。當一處理器不再需要存取分配好的該緩衝區時, 該處理器可將一解除分配命令發送給BMGR 40。針對—接 收到(150)的解除分配命令,BMGR 40決定(155)對應該解 除分配命令的該緩衝池,從記憶體3〇中讀出(157)相應的 R—CNT ’並且將’n’從r_cnt(舉例而言,減量R—CNT)中減 去(157) ’以及決定(160)相應的該R—CNT是否等於零,如果 相應的該R—CNT被決定為等於零,那麼過程1〇〇就決定 (165)如果前一個決定(16〇)中相應的r_cnt等於i就增加 (175)該自由表尾指標,決定(18〇)該自由表是否要求寫回緩 衝區索引並且寫回(185)來自局部記憶體41中緩衝區索引的 該自由表中的緩衝區索引以共享記憶體3〇,以及傳回以等 待(110)命令。 此種管理緩衝區的方式允許一處理器使用單一分配命令 (舉例而。單一讀出命令)來請求一緩衝區分配,以及使 用單一解除分配命令(舉例而言,一單—寫入命令)來請求一 緩衝區解除分配。亦可允許在多處理器之間共享緩衝區而 無須該等處理器管理共享緩衝區資訊所之資源。此外,此 種管理緩衝區的方式允許—處理器請求—緩衝區的分配或 O:\90V90410.DOC4 -11- 1359358 者解除一緩衝區的分配而使得在BMGR 4〇處理該請求時不 曰導致s亥系統匯流排以及/或者該處理器的一暫停。進一步 過权100包括從儲存於局部記憶體40中的共享記憶體3〇 中預取緩衝區索引。因此,來自一處理器後來的分配請求 的處理時間要比僅t —處理器被請求時才獲取所需的緩衝 區索引所钯費的時間更短。反之,當解除分配緩衝區時 BMGR 40可將來自該自由表中缓衝區索引寫回至緩衝區索 引陣列90中。 一緩衝區分配命令可作爲一讀出命令而被實現至一緩衝 池的分配/解除分配命令暫存器34中。緩衝區管理器4〇藉由 發送一寫入命令(其中包括一緩衝區指標位址)給該請求處 理器來回應一分配命令。一緩衝區解除分配命令可作爲一 寫入命令而被實現至一緩衝池的分配/解除分配命令暫存 器34中。 在一實施例中,一單一分配/解除分配暫存器可被指定用 於分配以及解除分配命令。在一實施例中,分配/解除分配 暫存器34以32個暫存器的形式來實現,其中每個暫存器對 應於記憶體3 0中的一個緩衝池。但是,亦可有更多或者更 少的緩衝池以及一相應數量的分配/解除分配暫存器。 在一實施例中,每個緩衝池具有一對應的基位址,在此 貫例中’ pool60_base以及p〇〇170_base分別表示池6〇與70中 該第一緩衝區的記憶體30中的該位置。每個緩衝池可能亦 包括相應的變數以確定該池的特徵。舉例而言,—個名為 ”buff_SizeX"的變數可被用來指示一缓衝池中每個緩衝區 OAM\904l0.DOC4 -12- 1359358 的大小(舉例而言,記憶體位置的數量),以及一個名為 "#_buffX"的變數被用來指示一緩衝池中的緩衝區數量。在 系統10的作業過程中,變數buff_sizeX以及#_buffX被BMGR 40用來計算儲存於陣列9〇中的緩衝區索引值,並且亦被 BMGR 40用來決定一緩衝區索引值對應的緩衝區指標值。 更加詳細地,緩衝區可藉由包含一緩衝區指標位址的命 令來存取(舉例而言,讀出或者寫入)。然而,BMgr 40上 的該自由表循環佇列被用來儲存緩衝區索引。因此,當一 緩衝區被分配給一處理器時,來自該自由表的該緩衝區索 引被轉換為一用於傳回給該請求處理器的緩衝區指標位址 。在一實施例中,藉由使用記憶體30中的緩衝區指標位址 以及包含此緩衝區的該緩衝池的該等相關變數例如 buff_sizeX以及#_buffX來決定一緩衝池中一緩衝區的該緩 衝區索引。作爲一實例,一第一緩衝區的該緩衝區索引可 被設定為等於藉由將該緩衝區的該緩衝區指標位址除以包 含此緩衝區的該緩衝池的該變數buff_sizeX所決定的一個 值。反之,一緩衝區的該緩衝區指標位址可藉由將該緩衝 區索引值乘以包含此緩衝區的該緩衝池的相關的兮 buff_sizeX值來決定。 缓衝池的數量以及每個緩衝池的特徵為可程式化的,舉 例而言,每個緩衝池的該等特徵可在一系統初始化順序^ 者在系統作業期間被設定。.緩衝池及其特徵在系統ι〇作業 之前被初始化並且在系統作業期間一般保持不變。爲了改 變系統1。作業期間的一緩衝池特徵’所有針對一緩衝池: O:\90\90410.DOC4 - 13 - ^ 1359358 活動必須停止,並且緩衝池特徵值被重新設定,然後處理 此緩衝區的作業便可繼續進行。 在系統10的一實施例中,BMGR 40包括一匯流排介面42 ,其用於從處理器21-29接收命令以及將命令發送給處理器 21 -29並且用於從記憶體30接收資料以及將資料發送給記 憶體30。緩衝區官理器40亦包括解碼邏輯44,其可對從匯 流排介面42所接收到的命令進行解碼並且從緩衝區索引中 來決定緩衝區指標位址。 在一實施例中,在系統1〇作業期間,BMGR 40在局部記 憶體41中储存"池環境"(p0〇i c〇ntext)資訊,舉例而言,藉 由BMGR 40所管理的每個緩衝池的相關資訊。舉例而言, 池環i兄sfl可包括池基位址以及與一緩衝池相關的變數 當存取一緩衝池中的一緩衝區時,該 池環境資訊可用於藉由解碼邏輯44而將該自由表上的一緩 衝區索引轉換為對於一處理器而言為可用的一緩衝區指標 位址q 在一實施例中,一處理器可使用一單一命令來請求多個 緩衝區的分配或者解除分配。舉例而言,一處理器可發送 一指定一單一緩衝區的命令,或者一指定四個緩衝區的命 令。如另一實例,一處理器可發送一指定了一,η’值的緩衝 區分配命令,該’η,值對應於由該處理器所請求的緩衝區個 數。作爲回應,BMGR 40可能將多個緩衝區指標傳回給該 請求處理器’其中每個指標對應於一緩衝池内所分配的一 緩衝區的一位置。 O:\90\90410.DOC4 •14· 1359358 在一實施例中,多緩衝區索引可藉由BMGR 40使用一單 —匯流排50命令來預先獲取(以減少匯流排5〇上活動的數 量)。舉例而言’任何時候四個或者更多個緩衝區索引可藉 由BMGR 40來分配,一預取命令放置在主fif〇 44c中。主 介面控制44b可發送一讀出命令給記憶體3〇以從自由表9〇 中凊求四個附加緩衝區索引,並且當從一緩衝池的該自由 表仔列中的記憶體30接收到命令時BMGR 40將儲存那些附 加緩衝區索引。 過程100可以選擇性地包括一 MAX_RCNT值,其在過程 100執行期間被用作為一應用到R_CNT的增量值以及/或者 減量值。舉例而言,當解除分配多個緩衝區時執行動作(丨27) 、(135)以及(140)允許使用一 MAX_RCNT值。 在過程100的一實施例中,如果BMGR 40決定(115) 了在 —緩衝池中沒有可用於分配的緩衝區,那麼就將一空指標( 即’一零值)傳回給該請求處理器。在此情況下,該請求處 理器隨後可發送另一緩衝區分配命令。依然參考圖2所示, 如果過程100決定(115)了在該自由表上沒有可用的緩衝區 ,那麼BMGR 40就將一空指標發送(116)給該請求處理器, 並且決定(125)是否需要記憶體3〇中的附加緩衝區索引,並 且如果緩衝區管理器40決定需要附加緩衝區索引那麼就從 記憶體30中獲取(126)緩衝區索引。 在一貫施例中,在一緩衝區被分配給一處理器之前可將 儲存於記憶體30中的R一CNT值初始化設定其值為一〇)。因 此’在一緩衝區分配期間對應的該r_CNT沒有增加。此可 • O:\90\90410.DOC4 -15- 咸乂由系統ig所執行的匯流排命令猶環的數量。爲了解 除分配-緩衝區或者增加__R—CNT值—處理器無須知道 該緩衝池(從其中可分配—緩衝區)。更加詳細地,—處理器 可發=寫入命令給BMGR 4〇’其令該命令包括一緩衝池 的位址|巳圍内的_指標位址’並且職⑽將決定與該緩 衝池相對應的該池。 如下的貝例1表不系統10作業的一實例,其對應於過程 100的執行。 實例1 : 1) 處理器 21 讀 pool一I〇_alloc/deall〇c 暫存器 (@BMGR位址=0x0000_0540)並且緩衝區索引#5位於 该自由表頭指標所指之處(並且因此緩衝區索引#5必 須位於該局部記憶體,41的預取緩衝區中); 2) BMGR 40決定對應於緩衝區索引#5的一指標位 址,舉例而 § . p〇inter(po〇l = l〇,indice = 5)=pool 1〇 base+(pool_l〇_buffer_size*5); 3) BMGR將已決定的該指標位址〇〇,5)發送給處 理器21 ’並且亦將該循環仔列自由表的該頭指標增加 以指向該循環佇列自由表的下一個位置來準備另一個 分配命令; 4) 處理器21發送指標(1〇, 5)給處理器22(在某種情 況下,處理器2 1亦可發送一命令,舉例而言,處理器 22的一命令用來處理分配給處理器21的該緩衝區中所 發現的資料); O:\90\904IO.DOC4 -16- 1359358 5) 處理器21或者22發送一增量命令給BMGR 4〇來 增加對應於指標(10,5)的該R_CNT,舉例而言,藉由 發送一寫入命令給指標(1〇,5)中的一位址;(應當意識 到用來增加一 R一CNT的該寫入命令可能包括一特定緩 衝區的一位址範圍内的任何位址並且BMGR 40將從該 位址決定合適的緩衝區並增加該對應的緩衝區 R_CNT(l〇 , 5)); 6) 處理器2 1以及22可能繼續存取分配好的該緩衝 區(10’ 5)’大約在同時BMGR藉由從記憶體3 0中讀出 R—CNT(l〇,5),增加R_CNT以及將更新後的該r_cnt 值傳回給記憶體30來增加對應的該緩衝區 R_CNT(l〇,5); 7) 當處理器21在存取完緩衝區(10, 5)之後就藉由 將緩衝區(10,5)内的任何位址寫入至任何的ρ〇〇1_χ解除 分配暫存器34中而發送一解除分配命令給BMGR 4〇 ; 8) BMGR 40接收該解除分配命令,決定與緩衝區 (1 0,5)相對應的該R_CNT值,從記憶體3〇中讀出該 R_CNT(10 ’ 5)值,減少R—CNT(1〇,5),決定減少後的 R_CNT(10 ’ 5)=1 ’並且將減少後的R_CNT(1〇,5)值寫 回記憶體3 0中; 9) 當處理器22在存取完緩衝區(1〇,5)之後就藉由 將緩衝區(10, 5)内的任何位址寫入至任何的ρ〇〇1_χ解除 分配暫存器34中而發送一解除分配命令給BMGR4〇 ; 10) BMGR 4G接收該解除分配命令,決^緩衝區 O:\90\904l0.DOC4 •17- 1359358 (10 ’ d)所對應的該r_CNT值,從記憶體3〇中讀出該 R一CNT(10 ’ 5)值’減少 R_CNT(1〇,5)=〇,決定減少後 的R_CNT(10 ’ 5)=〇,在此情況下並非將r_cnt(1〇, 5) = 0寫回記憶體中,而是BMGR 40令11_〇1^(10,5)=1 。令R_CNT(po〇l,indice)=i很重要,因爲它可能節省 兩個匯流排命令異動之執行’舉例而言,一用於讀出 、更新以及寫回一 R—CNT值(從1過渡至0)的第一匯流 排命令’以及一用於將r_CNT從〇過渡至1的第二匯流 排命令;以及 11 )BMGR 40亦增加局部記憶體4丨中此緩衝池循 環佇列的該自由表尾指標。 在實例1中,應當意識到在步驟7)中BMGR 40增加了 R_CNT(l〇,5) ’ 然後在步驟9)中 BMGR 40減少了 R一CNT(l〇 ,5)。在一實施例中,有可能去除步驟7)與步驟9)的該等作 業。更加詳細地,如果一第一處理器(舉例而言,處理器2 i) 被指定為一"分配器"並且一第二處理器(舉例而言,處理器 22)被指定為一 π解除分配器”。在此情況下,即沒有複數個 了貫現增加以及解除分配的處理器,僅僅只有一個處理器 執行一緩衝區分配命令並且該第二處理器執行一特定緩衝 區的唯一解除分配命令。作業系統1〇以及/或者過程1〇〇的 此種方式可能減少用來分配、解除分配緩衝區以及/或者增 加R-CNT所需要的匯流排命令循環的數量。 在一實施例中,一分配或者解除分配命令可能包括一需 要分配或者解除分配的緩衝區的該位址邊界範圍之内的任 O:\90\904IO.DOC4 -18 - 1359358 何位址。更加詳細地,BMGR 40可能執行藉由該處理器所 發送的S亥指標位址上的一位址邊界檢查以決定哪一個緩衝 區的R_CNT需要更新(舉例而言,如圖2中所述的動作(155) 以及(135))。藉由BMGR 4〇執行位址邊界檢查的此種方式意 未著爲了凊求一緩衝區分配或者解除分配,處理器21-29無 須儲存一緩衝區的一基池位址。因此,一緩衝區内的一位 置的任何指標位址可被用作一分配或者解除分配命令的一 部分而從一處理器發送至BMGR 40。 在一實施例中,爲了增加或者減少一對應於正被分配的( 或者先前已經分配好的)一緩衝區的R-CNT,BMGR 40發送 一讀出命令給記憶體30以從對應於此缓衝區的r—cnt陣列 100中s買出g亥R—CNT值。當從記憶體30中接收到了該r CNT 時,BMGR 40便增加或者減少該R_CNT值,並且可能將更 新後的該R_CNT值寫回至記憶體30中(此取決於r CNT的 該更新值)。 在一實施例中,配置解碼邏輯區塊44以在處理其餘命令 之前處理缓衝區分配命令。更加詳細地,解碼邏輯44包括 解碼邏輯44a、主介面邏輯44b以及池狀態控制邏輯44de主 介面邏輯區塊44b包括一 FIFO佇列44c,其用來容納來自解 碼邏輯44a的解除分配命令以及增量命令。由解碼邏輯44a 所接收的緩衝區分配命令一旦被接收了即被處理,而緩衝 區解除分配命令以及/或者增量命令儲存於FIFO 44c中用於 主介面控制邏輯44c進行後續處理。因此,一等待藉由BMGR 40所處理的一缓衝區分釔命令的處理器將無須等待緩衝區 O:\90V904l0.DOC4 •19· 1359358 解除分配命令以及/或者r—CNT更新的處理。 在一實施例中,解碼邏輯44包括池狀態控制44d用於儲存 池環境資訊以及用於存取局部記憶體4丨。在此實例中,池 狀態控制44d被連接上用於接收來自命令解碼44a以及主介 面控制44b的存取請求。池狀態控制44d仲裁(arMtrate)來自 命令解碼44a以及主介面邏輯桃的存取請求並减行局部 記憶體4 1中資料的讀出與寫入。 每個處理器21-29以及BMGR 4〇可包括—作業系統,該作 業系統係用來控制該處理器的作業以及資源的分配的軟體 。該術語"過程’’或者"程式"所指為軟體,舉例而言一應用種 式(其可在—處理器或者電腦㈣上被執行)。該應用程式係 該組可執行指彳,其使用透過該作#系統而成為可用之電 腦資源用以執行該使用者所要求的一任務。 處理器21-29以及BMGR4〇可實現於硬體軟體或者該兩 者的:組合。他們可實現於在可程式化電腦或者其他機器 上執打的電腦程式中,而該等機器均包括一處理器、—可 由該處理II讀出的儲存媒體(包括揮發性以及非揮發性記 憶體以及/或者儲存元件)、至少_個輸人裝置以及—或多個 輸出裝置。程式碼可被應用於使用一輸入裝置(舉例而言, 一滑鼠或者鍵盤)所輸入的資料來執行應用並且產生輸出 資訊。 每個電腦程式可儲存於—儲存媒體/物品上(舉例而言, CD-ROM,硬碟或者磁碟)’#可藉由一通用或者專用可程 式化電腦進行讀取,當該儲存媒體或者裝置由該電腦讀出 O:\90\904 IO.DOC4 -20- 1359358 以執行應用時可用於配置並操作該電 他1門亦可以機写 可讀儲存媒體的方式來實現,配置以—電腦程式,並° 執行時該電腦程式中的指令根據其應用而使得一機器 起來。 .。作 本發明並不限於如上所述之該等具體實施例。舉例而言 ’上面描述了使用一多處理器系統中的處理器。然而二 或多個處理器可作爲功能單元來實現,其包括存取一共享 記憶體的功能,舉例而t,該等功能單元可實現爲應用: 定積體電路rASIC")°舉例而言’如上所述在娜R 40上 採用了 -局部記憶體。然而’該局部記憶體部分地可作爲 暫存器來實現及使用’舉例而言,可用來儲存緩衝區索引 以及池環境資訊。如其餘實例所述,如上摇述了一處理器 藉由,送-讀出命令給BMGR 4〇(其指定一分配/解除分配 暫存器)來請求-緩衝區分配。‘然而,該分配/解除分配命令 可以另一種方式來實現而無須指定一暫存器。 此處久有彳曰述的其他實施例亦在如下該等申請專利範圍 之内。 【圖式簡單說明】 圖1係—多處理器系統之一方塊圖。 圖2係—用於管理緩衝區的一過程之流程圖。 【圖式代表符號說明】 10 多處理器系統 20 處理器 21 處理器 O:\90\90410.DOC4 -21 - 1359358 22 處理器 23 處理器 24 處理器 25 處理器 26 處理器 27 處理器 28 處理器 29 處理器 30 記憶體 34 暫存器 40 緩衝區管理器(BMGR) 41 局部記憶體 42 匯流排介面 42a 目標介面 42b 主介面 44 解碼邏輯 44a 命令/解碼 44b 主介面邏輯 44c 先進先出(FIFO) 44d 池狀態控制 50 匯流排 60 緩衝池 61 緩衝區 62 缓衝區 O:\90\90410.DOC4 -22- 1359358 63 缓衝區 64 缓衝區 65 缓衝區 70 緩衝池 71 缓衝區 72 緩衝區 73 缓衝區 80 緩衝區資訊陣列 90 缓衝區索引陣列 91 缓衝區索引 92 缓衝區索引 93 缓衝區索引 94 缓衝區索引 95 緩衝區索引 100 參考計數陣列 101 參考計數 102 參考計數 103 參考計數 104 參考計數 105 參考計數 O:\90\90410, D0C4 -23-
Claims (1)
- 拾、申請專利範圍:第092137494號專利申請案 t文申請專利範圍替換本(1〇〇年1〇月) 1· 一種用於纪憶體管理之方法,其包括: 。在共享記憶體中儲存具有一第一數量的項目之緩衝 區索引的帛一自由表,每個緩衝區索引對應於該共享 5己憶體中一緩衝區的一位址; 藉由從緩衝區索引的該第一自由表中預取緩衝區索引 以在一循環排列之一第^記憶冑中儲存具有一第二數量 的項目之緩衝區余引的_第二自由表,該第二數量的項 目小於該第一數量的項目; 從一第一處理器接收一第一缓衝區分配命令,而該第一 緩衝區分配命令包括與該共享記憶體中之一緩衝也相關的 一暫存器位址; 基於該第一自由表中之與一自由緩衝區相對應的一緩 衝區索引之可用性來決定該緩衝池中之一緩衝區是否可 用;以及 如果決疋了緩衝區可用,則將該緩衝區分配給該第 一處理器。 2·根據申請專利範圍第1項之方法,其進一步包括: 在-緩衝區的一解除分配發生之後將來自該第二自由 表的一緩衝區索引寫回至該第一自由表。 3.根據申請專利範圍第1項之方法,其中該決定該緩衝池中 一緩衝區是否可用之步驟包括: 在該第二記憶體中儲存緩衝區環境資訊,該緩衝區環 境資訊包括-池基礎位址、—個緩衝區大小變數以及緩 90410-i00iQ2i.doc 奶9358 衝區變數的數量中的至少一個。 4.根據申請專利範圍第3項之方法,其進一步包括: 基於該緩衝池中一緩衝區大小,決定一緩衝區索引值 或者一緩衝區指標位址。 5,根據申請專利範圍第3項之方法,其進一步包括·· 基於該緩衝池中緩衝區的數量,決定一緩衝區索引值 或者一緩衝區指標位址。 根據申凊專利範圍第1項之方法,其中分配進一步包括: 將對應於所分配的該緩衝區的一緩衝區指標位址發送 給該第一處理器。 7·根據申請專利範圍第6項之方法,纟中與該緩衝池相關的 該暫存器位址包括與該緩衝池相關的一位址範圍之内的一 位址。 8. 根據申請專利範圍第丨項之方法,其進一步包括: 在該共享記憶體中儲存一參考計數值,該參考計數值 對應於存取所分配的該緩衝區的處理器的數量。 9. 根據中請專利範圍第8項之方法,其進一步包括: 從一第二處理器中接收一緩衝區增量命令,該缓衝區 增量命令包括與所分配的的該緩衝區相關的-位址;以及 為所分配的該緩衝區更新該參考計數值。 10. 根據申請專利範圍第8項之方法,其進一步包括: 接收77配命令,其指定了對該緩衝池中複數個缓衝 區的一請求;以及 分配該緩衝池中的至少兩個緩衝區。 90410-100lQ2l.doc -2 - 11.根據申請專利範圍第8項之方法.,其進一步包括: 接收來自複數個處理器中至少一佃玷姑k \ A 丁王^ 一個的一解除分配命令 ;以及 為分配好的該緩衝區更新該參考計數值。 K· 一種用於記憶體管理之系統,其包括: —系統匯流排; 連接至该系統匯流排的複數個處理器; 連接至該系統匯流排的一共享記憶體,其用來發送與 接收來自該等複數個處理器”料以及包括—缓衝池及 >考汁數值陣列,該參考計數值陣列中的每個參考計 數值對應於該緩衝池中的一緩衝區, 儲存於該共享記憶體中具有一第一數量的項目的緩衝 區索引的一第一自由表,該第一自由表中的每個緩衝區 索引對應於該緩衝池中的一緩衝區;以及 連接至該系統匯流排的一緩衝區管理器,其用來從該等 複數個處理器中的至少一冑中接收一緩衝區分配命令, : 將緩衝區分配回應發送給該處理器,該緩衝區管 理器可操作用來從該緩衝池中分配一缓衝區以回應來自 該等複數個處理器之一的該緩衝區分配命令以及從該共 享5己憶體接收資料及傳送資料至該共享記憶體,該緩衝 區管理盗包括用於儲存緩衝區索引之一第二自由表之一 局部記憶體’該第二自由表在該局部記憶體中具有一第 一數置之項目’該第二數量之項目小於在緩衝區索引之 該第 一 6 rb _± . 田表中之該第一數量之項目,以及一命令解碼 90410-1001021.doc ⑽358 品塊其可操作用來接收及解碼從該複數個處理器 收之°p令,存取儲存於該局部記憶體中之緩衝區索引 的該第二自由表,以及更新在該參考計數值陣列中之一 參考計數值。 根據申請專利範圍第12項之系統,其進-步包括: 餘存於該局部記憶體中的池環境資訊,該池環境資訊 •子應於在該共享記憶體中所定義的該緩衝池,該池環境 資訊包括-池基礎位址、該緩衝池的―大小以及該緩衝 池中的項目數量中的至少一個。 14.根據中請專利範圍第13項之系統,纟中該命令解碼邏輯 區,進-步包括操作用來決定一緩衝區索引以及基於該 池環境資訊的一緩衝區指標位址的邏輯。 15·—種用於記憶體管理之機器可讀取之儲存媒體,其上儲 存有若干指令,當藉由機器執行時結果如下: 。在-共享記憶體中儲存具有一第一數量之項目之緩衝 區索引的一第一自由表,每個緩衝區索引對應於該共享 5己憶體中一緩衝區的一位址; 藉由從待儲存於一第二自由表的緩衝區索引的該第一 由表中預取、緩衝區索引以儲存在—第二記憶體中具 有-第二數量之項目之緩衝區索引的該第二自由表該 第二數量之項目小於該第一數量之項目; 從-第-處理器中接收一第一緩衝區分配命令,該第 一緩衝區分配命令包括與該共享記憶體中—緩衝池相關 的一暫存器位址; 90410-1001021.doc -4- 丄 « 基於對應於該第二自 曰宙表中之一自由緩衝區的一缲1 區索引之可用性來決定 、、衡 以及 疋該緩衝池中一缓衝區是否可用; 如果決定了 -緩衝區可用,則將 緩衝區分配給該第—處理器。 T用的该 16. 根據申請專利範圍第15項之機器可讀取之儲存媒體,其 進一步包括若干指令,當被機器執行時產生如下結果: 在對-緩衝區實行解除分配之後將來自該第二自由表 的一緩衝區索引寫回至該第一自由表。 17. 根據申請專利範圍第15項之機器可讀取之儲存媒體,其 進一步包括料指令’當被機器執行時產生如下結果Γ 基於該緩衝池中一緩衝區的一大小,決定一緩衝區索 引值或者一緩衝區指標位址。 90410-1001021.doc -5-
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US10/340,078 US6931497B2 (en) | 2003-01-09 | 2003-01-09 | Shared memory management utilizing a free list of buffer indices |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| TW200428210A TW200428210A (en) | 2004-12-16 |
| TWI359358B true TWI359358B (en) | 2012-03-01 |
Family
ID=32711237
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| TW092137494A TWI359358B (en) | 2003-01-09 | 2003-12-30 | Methods, system and machine-readable storage mediu |
Country Status (5)
| Country | Link |
|---|---|
| US (1) | US6931497B2 (zh) |
| EP (1) | EP1581872A4 (zh) |
| JP (1) | JP4599172B2 (zh) |
| TW (1) | TWI359358B (zh) |
| WO (1) | WO2004063850A2 (zh) |
Families Citing this family (24)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US7133977B2 (en) * | 2003-06-13 | 2006-11-07 | Microsoft Corporation | Scalable rundown protection for object lifetime management |
| US7962707B2 (en) * | 2005-07-06 | 2011-06-14 | Honeywell International Inc. | Apparatus and method for deterministic garbage collection of a heap memory |
| US7487271B2 (en) * | 2005-09-22 | 2009-02-03 | Motorola, Inc. | Method and apparatus using buffer pools and arrays of buffer pointers for sharing memory in a multiprocessor system |
| US7827373B2 (en) * | 2005-10-31 | 2010-11-02 | Honeywell International Inc. | System and method for managing a short-term heap memory |
| US20070150593A1 (en) * | 2005-12-28 | 2007-06-28 | Telefonaktiebolaget Lm Ericsson (Publ) | Network processor and reference counting method for pipelined processing of packets |
| US7694041B2 (en) * | 2006-05-19 | 2010-04-06 | Arabella Software Ltd. | Method for managing buffers pool and a system using the method |
| US8510743B2 (en) | 2007-10-31 | 2013-08-13 | Google Inc. | Terminating computer applications |
| US7971007B2 (en) * | 2008-07-08 | 2011-06-28 | Silicon Motion, Inc. | Downgrade memory apparatus, and method for accessing a downgrade memory |
| JP2012010182A (ja) * | 2010-06-25 | 2012-01-12 | Sony Corp | 情報処理装置と情報処理方法 |
| US8972995B2 (en) * | 2010-08-06 | 2015-03-03 | Sonics, Inc. | Apparatus and methods to concurrently perform per-thread as well as per-tag memory access scheduling within a thread and across two or more threads |
| US8745291B2 (en) * | 2011-10-04 | 2014-06-03 | Qualcomm Incorporated | Inter-processor communication apparatus and method |
| US8949491B1 (en) | 2013-07-11 | 2015-02-03 | Sandisk Technologies Inc. | Buffer memory reservation techniques for use with a NAND flash memory |
| US10268410B2 (en) | 2014-10-20 | 2019-04-23 | Netapp, Inc. | Efficient modification of storage system metadata |
| US9965196B2 (en) * | 2014-10-20 | 2018-05-08 | Netapp, Inc. | Resource reservation for storage system metadata updates |
| CN105224258B (zh) * | 2015-10-19 | 2018-05-22 | 深圳芯邦科技股份有限公司 | 一种数据缓冲区的复用方法与系统 |
| US10169073B2 (en) | 2015-12-20 | 2019-01-01 | Intel Corporation | Hardware accelerators and methods for stateful compression and decompression operations |
| US10310897B2 (en) * | 2016-09-30 | 2019-06-04 | Intel Corporation | Hardware accelerators and methods for offload operations |
| US10235310B2 (en) | 2016-11-29 | 2019-03-19 | International Business Machines Corporation | Deallocation of memory buffer in multiprocessor systems |
| US10210106B2 (en) * | 2017-03-15 | 2019-02-19 | International Business Machines Corporation | Configurable hardware queue management |
| US10175912B1 (en) | 2017-07-05 | 2019-01-08 | Google Llc | Hardware double buffering using a special purpose computational unit |
| US11397672B2 (en) * | 2017-11-29 | 2022-07-26 | Beijing Memblaze Technology Co., Ltd | Deallocating command processing method and storage device having multiple CPUs thereof |
| KR101851948B1 (ko) * | 2018-01-29 | 2018-04-25 | (주)베스트케이에스 | 데이터 페이지의 버퍼 풀 관리 방법 |
| JP7484633B2 (ja) * | 2020-09-30 | 2024-05-16 | 株式会社デンソー | 共用ストレージ管理装置及び共用ストレージ管理方法 |
| US11907206B2 (en) * | 2021-07-19 | 2024-02-20 | Charles Schwab & Co., Inc. | Memory pooling in high-performance network messaging architecture |
Family Cites Families (8)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS5837887A (ja) * | 1981-08-28 | 1983-03-05 | Nippon Telegr & Teleph Corp <Ntt> | 記憶空間管理方式 |
| JPS60118937A (ja) * | 1983-11-30 | 1985-06-26 | Sharp Corp | マルチ・タスク制御用デバイス |
| JPS61290548A (ja) * | 1985-06-19 | 1986-12-20 | Fujitsu Ltd | 記憶装置の領域管理方式 |
| JPH077380B2 (ja) * | 1985-07-24 | 1995-01-30 | 株式会社日立製作所 | バッファ管理方法 |
| EP0522224B1 (en) * | 1991-07-10 | 1998-10-21 | International Business Machines Corporation | High speed buffer management |
| US5682553A (en) * | 1995-04-14 | 1997-10-28 | Mitsubishi Electric Information Technology Center America, Inc. | Host computer and network interface using a two-dimensional per-application list of application level free buffers |
| EP0872798A1 (en) * | 1997-03-21 | 1998-10-21 | CANAL+ Société Anonyme | Computer memory organization |
| US6618793B2 (en) * | 2000-12-18 | 2003-09-09 | Redback Networks, Inc. | Free memory manager scheme and cache |
-
2003
- 2003-01-09 US US10/340,078 patent/US6931497B2/en not_active Expired - Lifetime
- 2003-12-19 WO PCT/US2003/040967 patent/WO2004063850A2/en not_active Ceased
- 2003-12-19 JP JP2004566587A patent/JP4599172B2/ja not_active Expired - Fee Related
- 2003-12-19 EP EP03815240A patent/EP1581872A4/en not_active Withdrawn
- 2003-12-30 TW TW092137494A patent/TWI359358B/zh not_active IP Right Cessation
Also Published As
| Publication number | Publication date |
|---|---|
| JP2006513493A (ja) | 2006-04-20 |
| US6931497B2 (en) | 2005-08-16 |
| EP1581872A2 (en) | 2005-10-05 |
| WO2004063850A2 (en) | 2004-07-29 |
| TW200428210A (en) | 2004-12-16 |
| JP4599172B2 (ja) | 2010-12-15 |
| US20040139284A1 (en) | 2004-07-15 |
| EP1581872A4 (en) | 2007-05-16 |
| WO2004063850A3 (en) | 2004-12-23 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| TWI359358B (en) | Methods, system and machine-readable storage mediu | |
| EP0550164B1 (en) | Method and apparatus for interleaving multiple-channel DMA operations | |
| US5925099A (en) | Method and apparatus for transporting messages between processors in a multiple processor system | |
| US5740406A (en) | Method and apparatus for providing fifo buffer input to an input/output device used in a computer system | |
| US7487305B2 (en) | Prioritized bus request scheduling mechanism for processing devices | |
| US6631462B1 (en) | Memory shared between processing threads | |
| JP5841142B2 (ja) | 共有スタックの部分を割り当てるためのシステムおよび方法 | |
| US5638535A (en) | Method and apparatus for providing flow control with lying for input/output operations in a computer system | |
| US20040068607A1 (en) | Locking memory locations | |
| JPS595483A (ja) | 計算装置の動作方法 | |
| US8255591B2 (en) | Method and system for managing cache injection in a multiprocessor system | |
| US8949549B2 (en) | Management of ownership control and data movement in shared-memory systems | |
| US11822815B2 (en) | Handling ring buffer updates | |
| US5696990A (en) | Method and apparatus for providing improved flow control for input/output operations in a computer system having a FIFO circuit and an overflow storage area | |
| TW200406672A (en) | Free list and ring data structure management | |
| CA2706737A1 (en) | A multi-reader, multi-writer lock-free ring buffer | |
| US5924126A (en) | Method and apparatus for providing address translations for input/output operations in a computer system | |
| US11366689B2 (en) | Hardware for supporting OS driven observation and anticipation based on more granular, variable sized observation units | |
| WO2024078342A1 (zh) | 内存交换方法、装置、计算机设备及存储介质 | |
| WO2017016380A1 (en) | Advance cache allocator | |
| US7793023B2 (en) | Exclusion control | |
| US5664224A (en) | Apparatus for selectively loading data blocks from CD-ROM disks to buffer segments using DMA operations | |
| KR102725214B1 (ko) | 스트림 데이터를 처리하는 스토리지 장치, 그것의 포함하는 컴퓨팅 시스템, 그리고 그것의 동작 방법 | |
| CN100380347C (zh) | 半导体装置 | |
| US20050144389A1 (en) | Method, system, and apparatus for explicit control over a disk cache memory |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| MM4A | Annulment or lapse of patent due to non-payment of fees |