TWI864600B - 應用於智慧型處理器的記憶體管理裝置與方法 - Google Patents
應用於智慧型處理器的記憶體管理裝置與方法 Download PDFInfo
- Publication number
- TWI864600B TWI864600B TW112105770A TW112105770A TWI864600B TW I864600 B TWI864600 B TW I864600B TW 112105770 A TW112105770 A TW 112105770A TW 112105770 A TW112105770 A TW 112105770A TW I864600 B TWI864600 B TW I864600B
- Authority
- TW
- Taiwan
- Prior art keywords
- circuit
- mapping
- virtual
- memory
- original data
- Prior art date
Links
Images
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
- Bus Control (AREA)
Abstract
記憶體管理裝置包含預取電路、設定電路以及映射電路。預取電路經由直接記憶體存取電路取得原始資料,該原始資料指示第一虛擬地址與一記憶體的複數個實體地址之間的映射關係。設定電路解析該原始資料以將該些實體地址依序映射至包含該第一虛擬地址的複數個第二虛擬地址並發出一寫入請求。映射電路根據該寫入請求儲存該些實體地址與該些第二虛擬地址之間的映射關係為一第一映射表,並根據對應於該直接記憶體存取電路的至少一通道之至少一讀取請求利用該第一映射表存取該記憶體。
Description
本案是關於記憶體管理裝置與方法,尤其是可改善智慧型處理器的記憶體管理效率之記憶體管理裝置與方法。
隨著人工智慧技術的發展,智慧型處理器的使用場景越來越多樣化。在現有技術中,可提高智慧處理器的內部儲存空間,以滿足智慧型處理器對於該些場景所需要的記憶體頻寬存取需求。在現有技術中,智慧型處理器的記憶體管理可能會產生碎片化的資料存取(通常涉及多個不連續的實體地址),或是需要完整搜尋緩衝區來取得記憶體的實體地址。如此,會使得記憶體管理效率不彰,從而影響指令處理效率。
於一些實施態樣中,本案的目的之一在於提供一種記憶體管理裝置與方法,以可改善先前技術的缺點。
於一些實施態樣中,應用於智慧處理器的記憶體管理裝置包含預取電路、設定電路以及映射電路。預取電路經由一直接記憶體存取電路取得一原始資料,該原始資料指示一第一虛擬地址與一記憶體的複數個實體地址之間的映射關係。設定電路解析該原始資料以將該些實體地址依序映射至包含該第一虛擬地址的複數個第二虛擬地址並發出一寫入請求。映射電路根據該寫入請求儲存該些實體地址與該些第二虛擬地址之間的映射關係為一第一映射表,並根據對應於該直接記憶體存取電路的至少一通道之至少一讀取請求利用該第一映射表以存取該記憶體。
於一些實施態樣中,記憶體管理方法包含下列操作:經由一直接記憶體存取電路取得一原始資料,該原始資料指示一第一虛擬地址與一記憶體的複數個實體地址之間的映射關係;解析該原始資料以將該些實體地址依序映射至包含該第一虛擬地址的複數個第二虛擬地址並發出一寫入請求;以及根據該寫入請求儲存該些實體地址與該些第二虛擬地址之間的映射關係為一第一映射表,並根據對應於該直接記憶體存取電路的至少一通道之至少一讀取請求利用該第一映射表以存取該記憶體。
有關本案的特徵、實作與功效,茲配合圖式作較佳實施例詳細說明如下。
本文所使用的所有詞彙具有其通常的意涵。上述之詞彙在普遍常用之字典中之定義,在本案的內容中包含任一於此討論的詞彙之使用例子僅為示例,不應限制到本案之範圍與意涵。同樣地,本案亦不僅以於此說明書所示出的各種實施例為限。
關於本文中所使用之『耦接』或『連接』,均可指二或多個元件相互直接作實體或電性接觸,或是相互間接作實體或電性接觸,亦可指二或多個元件相互操作或動作。如本文所用,用語『電路』可為由至少一個電晶體與/或至少一個主被動元件按一定方式連接以處理訊號的裝置。
圖1為根據本案一些實施例繪製一種記憶體管理裝置100的示意圖。在一些實施例中,記憶體管理裝置100可應用於一智慧型處理器(Intelligence Processing Unit)內,以管理該智慧型處理器的內部記憶體來提高內部記憶體的利用率。
記憶體管理裝置100包含預取(pre-fetch)電路110、設定電路120、映射電路130以及控制電路140。預取電路110耦接至直接記憶體存取
(Direct Memory Access)電路100A以存取一外部記憶體(例如為,但不限於,動態隨機存取記憶體)與/或智慧型處理器中的一快取記憶體。預取電路110可經由直接記憶體存取電路100A取得原始資料OD。於一些實施例中,原始資料OD可指示第一虛擬地址與一記憶體(例如為前述的外部記憶體或快取記憶體)中的多個實體地址之間的映射關係。關於原始資料OD的設置方式將於後參照圖2說明。
在一些實施例中,在初始階段或記憶體管理裝置100初次啟動後,預取電路110可將經由系統中的主處理器(例如為中央處理器)發出的觸發訊號TR1而進行電路內部的參數(例如,但不限於,暫存器的數值)配置。在後續的操作中,該主處理器(與/或控制電路140)可依據所要執行的命令CMD發出後續的觸發訊號TR1,以控制預取電路110經由直接記憶體存取電路100A獲得對應的原始資料OD。
在一些實施例中,預取電路110更判斷預取電路110中的剩餘資料容量是否足夠儲存原始資料OD的一部份資料的資料量,以選擇性地儲存該部分資料,直到儲存完原始資料OD。例如,預取電路110包含預取控制電路111與緩衝器電路112。預取控制電路111受控於觸發訊號TR1,並經由直接記憶體存取電路100A依序讀取到多個部分資料(其可組成原始資料OD)。預取控制電路111可判斷緩衝器電路112當前的剩餘資料容量是否大於或等於一個部分資料的資料量,以選擇性地控制緩衝器電路112儲存該部分資料。例如,若緩衝器電路112當前的剩餘資料容量大於或等於一個部分資料的資料量,預取控制電路111可控制緩衝器電路112經由直接記憶體存取電路100A接收並儲存該部分資料。依此類推,預取控制電路111可重複執行上述操作,直到完整原始資料OD
儲存(即預先取出)至緩衝器電路112。在一些實施例中,智慧處理器中的直接記憶體存取電路100A支援多步幅(stride)、多級長度與記憶體對齊(byte align)的資料搬運。因此,在上述的預先取出原始資料OD的過程中,預取控制電路111可逐步地搬運該些部分資料,其中每個部分資料可具有固定長度,例如為,但不限於,256位元。
設定電路120解析原始資料OD以將前述的多個實體地址依序映射到多個第二虛擬地址(其包含第一虛擬地址)並發出寫入請求WR。在一些實施例中,設定電路120可由解碼器與狀態機實施,以根據原始資料OD的資料格式進行解析來獲得該些實體地址與該些第二虛擬地址之間的映射關係。關於此處之操作可參考圖3說明。在獲得上述的映射關係後,設定電路120可向映射電路130發出寫入請求WR,從而將上述的映射關係儲存為一映射表。在一些實施例中,設定電路120受控於觸發訊號TR2。控制電路140可解碼源自主處理器的一命令CMD以產生該觸發訊號TR2,以控制設定電路120對原始資料OD進行解析,以更新虛擬地址與實體地址之間的映射關係。
映射電路130根據寫入請求WR儲存該些實體地址與該些第二虛擬地址之間的映射關係至映射電路130的第一儲存空間以作為一第一映射表,並根據來自於直接記憶體存取電路100A的一或多個(可至少為一個)讀取請求RR1~RRN利用該第一映射表來存取前述的外部記憶體或是快取記憶體,其中該些讀取請求RR1~RRN分別對應於直接記憶體存取電路100A的不同通道。例如,當主處理器的命令CMD中有一部分的指令或操作是經由智慧處理器執行時,智慧處理器可經由直接記憶體存取電路100A發出一或多個讀取請求RR1~RRN給映射電路130。映射電路130可基於此一或多個讀取請求RR1~RRN來利
用第一映射表(或是可指示其他虛擬地址與其他實體地址之間的映射關係的其他映射表)而獲得欲使用的指令與/或資料在前述的外部記憶體或是快取記憶體中的實際儲存地址(即實體地址),進而自外部記憶體或是快取記憶體取得欲使用的指令與/或資料。
在一些實施例中,映射電路130更暫存該些讀取請求RR1~RRN與寫入請求WR,並仲裁該些讀取請求RR1~RRN與寫入請求WR以決定該些讀取請求RR1~RRN與寫入請求WR中每一者存取映射電路130的多個儲存空間的順序。
詳細而言,映射電路130包含仲裁電路131以及記憶體132。仲裁電路131包含一緩衝器131A,其可暫存該些讀取請求RR1~RRN與寫入請求WR。如此,可避免仲裁電路131在進行仲裁的過程中因請求數量過多等原因出現異常而停止接收寫入請求與/或讀取請求。仲裁電路131可執行一仲裁演算法來決定寫入請求WR與該些讀取請求RR1~RRN存取記憶體132的多個儲存空間的順序。在一些實施例中,仲裁演算法可為,但不限於,循環制(Round-Robin)演算法。記憶體132包含多個儲存空間,其可分別儲存多個映射表。例如,仲裁電路131可響應該寫入請求WR而將該些實體地址與該些第二虛擬地址之間的映射關係儲存在多個儲存空間中的第一儲存空間,以作為一第一映射表。
藉由設置仲裁電路131,直接記憶體存取電路100A與設定電路120可並行地存取映射電路130中的多個映射表,進而實現高效率的記憶體管理。例如,當設定電路120欲將第一映射表儲存到記憶體132的第一儲存空間(對應於寫入請求WR)且直接記憶體存取電路100A欲讀取記憶體132中的第二
儲存空間之映射表(例如對應於讀取請求RR1)時,由於兩者所要存取的儲存空間不同,仲裁電路131可讓設定電路120與直接記憶體存取電路100A同時存取第一與第二儲存空間。換句話說,在此情形下,設定電路120寫入第一映射表到該第一儲存空間的期間與直接記憶體存取電路100A讀取第二儲存空間的期間至少有部分重疊。如此,可提高記憶體132的存取效率,從而提高記憶體管理的效率。
控制電路140可解碼源自主處理器的命令CMD,並判斷命令CMD中的相依性來設定多個觸發訊號TR2以及S1~SN。控制電路140可根據多個觸發訊號TR2以及S1~SN所對應的多個虛擬暫存器值(例如為圖4B的多個虛擬暫存器值EVR1~EVR4與EVR1’~EVR4’)判斷記憶體132中的多個儲存空間的操作狀態,以設定多個觸發訊號TR2以及S1~SN的輸出順序。如前所述,觸發訊號TR2可觸發設定電路120發出寫入請求WR,且剩餘的多個觸發訊號S1~SN可觸發直接記憶體存取電路100A發出該些讀取請求RR1~RRN。多個觸發訊號S1~SN分別對應於該些讀取請求RR1~RRN。例如,觸發訊號S1可觸發直接記憶體存取電路100A發出讀取請求RR1,且觸發訊號S2可觸發直接記憶體存取電路100A發出讀取請求RR2。依此類推,應可理解多個觸發訊號S1~SN與該些讀取請求RR1~RRN之間的對應關係。關於控制電路140的詳細操作將於後參照圖4A與圖4B。
圖2為根據本案一些實施例繪製圖1中的原始資料OD的示意圖。如圖2所示,原始資料OD包含多列資料,每一列資料包含16個資訊,且每一個資訊可包含16個位元。換言之,一列資料的長度為256個位元。
以第1列至第3列的資料為例,基於從右至左且從上到下的順序,原始資料OD依序包含數量資訊(標示為TL=32)、標籤資訊(標示為Tag)、數量資訊(標示為LEN=4)、第一虛擬地址(標示為VA)之資訊、多個實體地址(依序標示為PA0~PA3)之資訊、數量資訊(標示為LEN=26)、第一虛擬地址(標示為VA)之資訊、多個實體地址之資訊(依序標示為PA0~PA25)、數量資訊(標示為LEN=1)、第一虛擬地址(標示為VA)之資訊、實體地址(標示為PA0)之資訊、數量資訊(標示為LEN=1)、第一虛擬地址(標示為VA)之資訊、實體地址(標示為PA0)之資訊以及多個無效資訊(標示為TL=0)。需特別說明,在不同資訊欄位中的虛擬地址VA與實體地址PA0~PA25可代表不同的地址。多個無效資訊為零碎的無用資訊,其可用來補齊資料以實現位元對齊。
數量資訊TL=32指示本次所要設定的所有實體地址的數量為32個,例如,在第1列至第3列的資料中,與實體地址相關的資訊共有32個。標籤資訊Tag可用來讓設定電路120判斷是否有讀到正確的原始資料OD。數量資訊LEN=4指示虛擬地址VA的遞增數量(相當於第二虛擬地址的數量)。例如,虛擬地址VA(相當於第一虛擬地址或第二虛擬地址的第一者)可對應於位於其左邊的實體地址PA0,虛擬地址VA+1(相當於第二虛擬地址的第二者)可對應於左邊的實體地址PA1,依此類推,虛擬地址VA+3可對應於實體地址PA3。再者,若進一步類推,在後續的數量資訊LEN=26與虛擬地址VA可指示虛擬地址VA對應到實體地址PA0,且虛擬地址VA+25對應到實體地址PA25。據此,應可理解上述多個資訊可指示出多個實體地址與多個第二虛擬地址之間的映射關係。
基於上述的設置方式,可將多個實體地址壓縮為對應到一個虛擬地址。例如,在第一列中,數量資訊LEN=4可將一個虛擬地址VA對應到4個實體地址PA0~PA3。在一些實施例中,原始資料OD可經由外部系統或主處理器預先生成。例如,外部系統與主處理器可基於智慧處理器所執行的神經網路所應用的相關場景預先準備好原始資料OD(即,原始資料OD是離線化產生),如此,可以壓縮資料量並讓直接記憶體存取電路100A使用連續的虛擬地址,進而產生連續的指令來繳少更換映射表的頻率。
圖3為根據本案一些實施例繪製圖1的設定電路120所執行的操作之流程圖。在一些實施例中,下述的多個操作可用來實現狀態機的操作。
在操作S310,從閒置狀態經由觸發訊號(例如為觸發訊號TR2)觸發而執行下一操作。在操作S320,讀取原始資料,捨棄無效資訊(例如為圖2中的無效資訊TL=0),並確認是否有正確讀取到數量資訊(例如為數量資訊TL=32)。若有正確讀取到數量資訊,執行操作S330。在操作S330,比對標籤資訊(例如為標籤資訊Tag),以確認是否有讀取到正確的原始資料。例如,當控制電路140解碼命令CMD時,控制電路140可確認與命令CMD相關的操作或指令所要使用的映射表之標籤。控制電路140可傳輸此標籤之資訊以及觸發訊號TR2給設定電路120。設定電路120可比對此標籤與原始資料OD中的標籤資訊Tag來決定是否有取得正確的原始資料OD。若有正確取得原始資料OD,執行操作S340。若沒有正確取得原始資料,執行操作S350以回報錯誤。
在操作S340中,解析虛擬地址之資訊以及數量資訊(例如為數量資訊TL=32)。若解析完成,執行操作S360,解析多個實體地址之資訊,以設定多個第二虛擬地址與多個實體地址之間的映射關係。例如,如前所述,在
圖2的第1列資料中,與數量資訊LEN=4的相關的多個實體地址PA0~PA3相關的映射關係為:虛擬地址VA對應於實體地址PA0,虛擬地址VA+1對應於實體地址PA1,虛擬地址VA+2對應於實體地址PA2,且虛擬地址VA+3可對應於左邊的實體地址PA3。換言之,藉由操作S340與操作S360,設定電路120可將原始資料OD中經過壓縮的映射關係(即一個虛擬地址對應到多個實體地址)還原成多個虛擬地址與多個實體地址的映射關係。若在操作S360中,所處理的實體地址的數量不同於數量資訊(例如為TL=32)的數值,代表實體地址的數量有錯。於此狀態下,執行操作S350以回報錯誤,並在回報錯誤後清除相關資料並回到閒置狀態。在操作S370中,發出寫入請求並等待仲裁完成,並在多個第二虛擬地址與多個實體地址之間的映射關係被儲存為第一映射表後回到閒置狀態。
圖4A為根據本案一些實施例繪製圖1中的控制電路140的示意圖。控制電路140包含指令解碼器141、多個任務佇列電路142[0]~142[N]、多個觸發電路143[0]~143[N]、外部虛擬暫存器(external virtual register)佇列電路144以及相依性確認電路145。
多個任務佇列電路142[0]~142[N]中每一者可為,但不限於,一先入先出(FIFO)電路,任務佇列電路142[0]儲存設定電路120待執行的任務,且任務佇列電路142[1]~142[N]分別儲存直接記憶體存取電路100A的第1個至第N個通道待執行的任務。多個觸發電路143[0]~143[N]分別對應於多個任務佇列電路142[0]~142[N]設置。例如,觸發電路143[0]可根據任務佇列電路142[0]發出的要求產生觸發訊號TR2。觸發電路143[1]可根據任務佇列電路142[1]發出的要求產生觸發訊號S1至直接記憶體存取電路100A,以使直接記憶體存取電路100A的第1個通道發出讀取請求RR1。依此類推,觸發電路143[N]可根據任務佇
列電路142[N]發出的要求產生觸發訊號SN至直接記憶體存取電路100A,以使直接記憶體存取電路100A的第N個通道發出讀取請求RRN。
指令解碼器141可解碼命令CMD以確認命令CMD所需的指令或資料,並相應地傳輸相關任務到多個任務佇列電路142[0]與142[1]~142[N]。例如,若所需的指令或資料涉及到新的映射表中所記錄的實體地址,指令解碼器141可發送任務至任務佇列電路142[0]。觸發電路143[0]可據此產生新的寫入請求WR以控制設定電路120替換現有的映射表。
為了確保設定電路120與控制電路140可正確地並行使用映射電路130中所儲存的多個映射表,可藉由外部虛擬暫存器(external virtual register)佇列電路144以及相依性確認電路145來判斷映射電路130中的多個儲存空間的操作狀態,以設定經由多個觸發訊號TR2與S1~SN的輸出順序。指令解碼器141可解碼命令CMD,並根據命令CMD所需的指令或資料之間的相依性設定外部虛擬暫存器佇列電路144中的多個外部虛擬暫存器值(如圖4B中的多個外部虛擬暫存器值EVR1~EVR4以及EVR1’~EVR4’),以記錄映射電路130中多個儲存空間的操作狀態(例如,是否正被設定電路120寫入中或是正由直接記憶體存取電路的一通道存取中)。相依性確認電路145可根據指令或資料之間的相依性以及多個外部虛擬暫存器值確認多個觸發訊號TR2與S1~SN的輸出順序。根據指令或資料之間的相依性,相依性確認電路145可設定多個任務佇列電路142[0]~142[N]是否可傳輸要求至多個觸發電路143[0]~143[N]。例如,相依性確認電路145可藉由中斷多個任務佇列電路142[0]~142[N]與多個觸發電路143[0]~143[N]之間的連接來設定多個觸發訊號TR2與S1~SN的輸出順序。關於此處之說明將於後參照圖4B說明。
圖4B為根據本案一些實施例繪製圖1中的設定電路120與直接記憶體存取電路100A存取記憶體132的工作排程的示意圖。在圖4B中的例子中,相依性確認電路145可根據多個指令之間的相依性來決定設定電路120與直接記憶體存取電路100A存取記憶體132的順序。在一些實施例中,相依性確認電路145可根據智慧處理器所應用的多種相關場景事先記錄多個指令與/或資料之間的相依性,以根據當前收到的命令CMD中所包含的指令來設定多個觸發訊號TR2與S1~SN的輸出順序。
舉例而言,在一些場景中,經解碼後的命令CMD包含對應於一連串的數學運算(例如可為圖像處理的運算或是卷積運算等)多個指令。例如,第1個指令可能為卷積運算,第2個指令要利用卷積運算的計算結果再進行濾波處理來產生下一個輸出。相依性確認電路145可讓直接記憶體存取電路100A先利用記憶體132的第一映射表中所指示的多個實體地址,以存取卷積運算要用到的多個指令與/或資料來進行第一層運算(例如時間t1至時間t2的操作)。接著,相依性確認電路145可讓設定電路120將記憶體132的第一映射表替換為第二映射表(例如時間t2至時間t3的操作),並控制直接記憶體存取電路100A根據該第二映射表所指示的多個實體地址,以存取濾波處理要用到的多個指令與/或資料來進行第二層運算(例如時間t3開始的操作)。
詳細而言,在時間t1,直接記憶體存取電路100A的通道1正在讀取記憶體132中的第一映射表,以利用該第一映射表來獲得實體地址並自前述的外部記憶體或快取記憶體取出指令或資料來進行卷積運算。因此,直接記憶體存取電路100A的通道1所對應的外部虛擬暫存器值EVR1(其儲存於外部虛擬暫存器佇列電路144)會切換成一預設值(以斜線背景表示)以指示該記憶體132
中儲存該第一映射表的對應儲存空間處於忙碌狀態。在時間t2,直接記憶體存取電路100A的通道1結束讀取第一映射表。設定電路120可清除該對應儲存空間並將寫入第二映射表至該對應儲存空間。因此,設定電路120可將對應的外部虛擬暫存器值EVR1’與EVR2’(其儲存於外部虛擬暫存器佇列電路144)會切換成預設值,以指示該記憶體132中的該對應儲存空間處於忙碌狀態。在時間t3,設定電路120完成替換第二映射表,且直接記憶體存取電路100A的通道2正在讀取記憶體132中的第二映射表,以利用該第二映射表來獲得實體地址並自前述的外部記憶體或快取記憶體取出指令或資料來進行濾波處理。
直接記憶體存取電路100A的通道3與通道4存取記憶體132中第二儲存空間所儲存的第二映射表,從而獲得所需要的資料與/或資料。由於第一儲存空間不同於第二儲存空間,通道3的工作時間可與通道1的工作時間與/或設定電路120寫入第一儲存空間的時間存在部分重疊。類似地,通道2的工作時間可與通道3或4的工作時間與/或設定電路120寫入第二儲存空間的時間(即外部虛擬暫存器值EVR3’與EVR4’處於忙碌狀態的時間)存在部分重疊。
直接記憶體存取電路100A的通道3與通道4以及設定電路120之間的操作類似於上述操作,故不重複說明。從上述操作過程中可理解,設定電路120的替換映射表之操作不會影響通道3的處理效率,同樣的,設定電路120的替換映射表之操作不會影響通道1的處理效率。據此,藉由設置多個外部虛擬暫存器值EVR1~EVR4以及EVR1’~EVR4’,可讓設定電路120與直接記憶體存取電路100A有更高的效率並行地存取記憶體132的多個儲存空間。
圖5為根據本案一些實施例繪製記憶體管理方法500的流程圖。在操作S510,經由一直接記憶體存取電路取得一原始資料,該原始資料指示一
第一虛擬地址與一記憶體的複數個實體地址之間的映射關係。在操作S520,解析該原始資料以將該些實體地址依序映射至包含該第一虛擬地址的複數個第二虛擬地址並發出一寫入請求。在操作S530,根據該寫入請求儲存該些實體地址與該些第二虛擬地址之間的映射關係為一第一映射表,並根據對應於該直接記憶體存取電路的至少一通道之至少一讀取請求利用該第一映射表存取該記憶體。
上述多個操作之說明可參照前述各個實施例,故不再重複贅述。上述記憶體管理方法500的多個操作僅為示例,並非限定需依照此示例中的順序執行。在不違背本案的各實施例的操作方式與範圍下,在記憶體管理方法500下的各種操作當可適當地增加、替換、省略或以不同順序執行(例如可以是同時執行或是部分同時執行)。
綜上所述,本案一些實施例中的記憶體管理裝置與記憶體管理方法可在智慧處理器內部實現動態更新映射表、利用離線化產生具有壓縮性質的映射關係資料以及並行化的存取來提高記憶體管理的效率,從而改善智慧處理器的運行效率。
雖然本案之實施例如上所述,然而該些實施例並非用來限定本案,本技術領域具有通常知識者可依據本案之明示或隱含之內容對本案之技術特徵施以變化,凡此種種變化均可能屬於本案所尋求之專利保護範疇,換言之,本案之專利保護範圍須視本說明書之申請專利範圍所界定者為準。
100:記憶體管理裝置
100A:直接記憶體存取電路
110:預取電路
111:預取控制電路
112:緩衝器電路
120:設定電路
130:映射電路
131:仲裁電路
131A:緩衝器
132:記憶體
140:控制電路
141:指令解碼器
142[0]~142[N]:任務佇列電路
143[0]~143[N]:觸發電路
144:外部虛擬暫存器佇列電路
145:相依性確認電路
500:記憶體管理方法
CMD:命令
EVR1-EVR4,EVR1’-EVR4’:虛擬暫存器值
LEN=4,LEN=26,LEN=1,LEN=5,LEN=1:數量資訊
OD:原始資料
PA0~PA25:實體地址
RR1~RRN:讀取請求
S1~SN:觸發訊號
S310,S320,S330,S340,S350,S360,S370:操作
S510,S520,S530:操作
TL=32,TL=4,TL=13:數量資訊
TR1,TR2:觸發訊號
Tag:標籤資訊
VA:虛擬地址
WR:寫入請求
t1~t3:時間
〔圖1〕為根據本案一些實施例繪製一種記憶體管理裝置的示意圖;
〔圖2〕為根據本案一些實施例繪製圖1中的原始資料的示意圖;〔圖3〕為根據本案一些實施例繪製圖1中的設定電路所執行的操作之流程圖;〔圖4A〕為根據本案一些實施例繪製圖1中的控制電路的示意圖;〔圖4B〕為根據本案一些實施例繪製圖1中的設定電路與直接記憶體存取電路存取記憶體的工作排程的示意圖;以及〔圖5〕為根據本案一些實施例繪製記憶體管理方法的流程圖。
100:記憶體管理裝置
100A:直接記憶體存取電路
110:預取電路
111:預取控制電路
112:緩衝器電路
120:設定電路
130:映射電路
131:仲裁電路
131A:緩衝器
132:記憶體
140:控制電路
CMD:命令
OD:原始資料
RR1~RRN:讀取請求
S1~SN:觸發訊號
TR1,TR2:觸發訊號
WR:寫入請求
Claims (10)
- 一種記憶體管理裝置,應用於一智慧處理器,該記憶體管理裝置包含:一預取電路,經由一直接記憶體存取電路取得一原始資料,該原始資料指示一第一虛擬地址與一記憶體的複數個實體地址之間的映射關係;一設定電路,解析該原始資料以將該些實體地址依序映射至包含該第一虛擬地址的複數個第二虛擬地址並發出一寫入請求;以及一映射電路,根據該寫入請求儲存該些實體地址與該些第二虛擬地址之間的映射關係為一第一映射表,並根據對應於該直接記憶體存取電路的至少一通道之至少一讀取請求利用該第一映射表以存取該記憶體,其中該預取電路包含:一緩衝器電路;以及一預取控制電路,判斷該緩衝器電路的一剩餘資料容量是否大於或等於該原始資料中的一部分資料之資料量,以選擇性地控制該緩衝器電路儲存該部分資料。
- 如請求項1之記憶體管理裝置,其中該原始資料包含一第一數量資訊、一第二數量資訊、一標籤資訊、該第一虛擬地址的資訊以及該些實體地址的資訊,其中該第一數量資訊指示該些實體地址的數量,且該第二數量資訊指示該些第二虛擬地址的數量。
- 如請求項2之記憶體管理裝置,其中該設定電路根據該第一數量資訊以及該標籤資訊判斷是否有正確預取到該原始資料,並根據該第一虛擬 地址的資訊、該第二數量資訊以及該些第二虛擬地址的資訊將該些實體地址依序映射至該些第二虛擬地址。
- 如請求項3之記憶體管理裝置,其中該設定電路根據該第一虛擬地址的資訊以及該第二數量資訊依序遞增該第一虛擬地址以產生該些第二虛擬地址。
- 如請求項1之記憶體管理裝置,其中該映射電路更仲裁該寫入請求與該至少一讀取請求,以決定該寫入請求與該至少一讀取請求中每一者存取用來儲存該第一映射表的一儲存空間的順序。
- 如請求項1之記憶體管理裝置,其中當該映射電路欲儲存該第一映射表至該映射電路中的一第一儲存空間且該至少一讀取請求欲讀取該映射電路中的一第二儲存空間時,該第一映射表儲存至該第一儲存空間的期間與該第二儲存空間響應於該至少一讀取請求被讀取的期間至少部分重疊。
- 如請求項1之記憶體管理裝置,其中該映射電路包含:一記憶體,包含複數個儲存空間;以及一仲裁電路,暫存該至少一讀取請求與該寫入請求,並決定該寫入請求與該至少一讀取請求存取該些儲存空間的順序,其中,該仲裁電路響應該寫入請求儲存該第一映射表至該些儲存空間中的一對應儲存空間,以替換該對應儲存空間先前儲存的一第二映射表。
- 如請求項1之記憶體管理裝置,更包含:一控制電路,解碼源自一主處理器的一指令並判斷該指令的相依性以設定複數個觸發訊號,並根據該些觸發訊號所分別對應的複數個外部虛擬暫存器值 判斷該映射電路中的複數個儲存空間的操作狀態以設定該些觸發訊號的輸出順序,其中該些觸發訊號中的一第一觸發訊號用以觸發該設定電路發出該寫入請求,且該些觸發訊號中的剩餘觸發訊號用以觸發該直接記憶體存取電路發出該至少一讀取請求。
- 一種記憶體管理方法,包含:經由一直接記憶體存取電路取得一原始資料,該原始資料指示一第一虛擬地址與一記憶體的複數個實體地址之間的映射關係;解析該原始資料以將該些實體地址依序映射至包含該第一虛擬地址的複數個第二虛擬地址並發出一寫入請求;根據該寫入請求儲存該些實體地址與該些第二虛擬地址之間的映射關係為一第一映射表,並根據對應於該直接記憶體存取電路的至少一通道之至少一讀取請求利用該第一映射表以存取該記憶體;以及仲裁該寫入請求與該至少一讀取請求,以決定該寫入請求與該至少一讀取請求中每一者存取用來儲存該第一映射表的一儲存空間的順序。
- 一種記憶體管理方法,包含:經由一直接記憶體存取電路取得一原始資料,該原始資料指示一第一虛擬地址與一記憶體的複數個實體地址之間的映射關係;解析該原始資料以將該些實體地址依序映射至包含該第一虛擬地址的複數個第二虛擬地址並發出一寫入請求;以及 根據該寫入請求儲存該些實體地址與該些第二虛擬地址之間的映射關係為一第一映射表,並根據對應於該直接記憶體存取電路的至少一通道之至少一讀取請求利用該第一映射表以存取該記憶體,其中該第一映射表儲存在一映射電路的一第一儲存空間,且當該映射電路欲儲存該第一映射表至該第一儲存空間且該至少一讀取請求欲讀取該映射電路中的一第二儲存空間時,該第一映射表儲存至該第一儲存空間的期間與該第二儲存空間響應於該至少一讀取請求被讀取的期間至少部分重疊。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| TW112105770A TWI864600B (zh) | 2023-02-17 | 2023-02-17 | 應用於智慧型處理器的記憶體管理裝置與方法 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| TW112105770A TWI864600B (zh) | 2023-02-17 | 2023-02-17 | 應用於智慧型處理器的記憶體管理裝置與方法 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| TW202435080A TW202435080A (zh) | 2024-09-01 |
| TWI864600B true TWI864600B (zh) | 2024-12-01 |
Family
ID=93609692
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| TW112105770A TWI864600B (zh) | 2023-02-17 | 2023-02-17 | 應用於智慧型處理器的記憶體管理裝置與方法 |
Country Status (1)
| Country | Link |
|---|---|
| TW (1) | TWI864600B (zh) |
Citations (8)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20070073996A1 (en) * | 2005-04-07 | 2007-03-29 | Ati Technologies Inc. | Virtual memory fragment aware cache |
| US7386697B1 (en) * | 2004-01-30 | 2008-06-10 | Nvidia Corporation | Memory management for virtual address space with translation units of variable range size |
| TW201433917A (zh) * | 2013-01-07 | 2014-09-01 | 三星電子股份有限公司 | 系統晶片、電子系統及其記憶體位址轉譯方法 |
| TWI588654B (zh) * | 2014-05-09 | 2017-06-21 | 美光科技公司 | 用於可重組態之記憶體系統之虛擬化實體位址 |
| TW201918882A (zh) * | 2017-11-13 | 2019-05-16 | 韓商愛思開海力士有限公司 | 記憶體系統及其操作方法 |
| CN110659225A (zh) * | 2018-06-28 | 2020-01-07 | 华为技术有限公司 | 内存管理方法以及相关装置 |
| CN111813710A (zh) * | 2020-09-11 | 2020-10-23 | 鹏城实验室 | 避免Linux内核内存碎片方法、设备及计算机存储介质 |
| TW202301127A (zh) * | 2021-06-17 | 2023-01-01 | 日商鎧俠股份有限公司 | 記憶體系統及資訊處理系統 |
-
2023
- 2023-02-17 TW TW112105770A patent/TWI864600B/zh active
Patent Citations (8)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US7386697B1 (en) * | 2004-01-30 | 2008-06-10 | Nvidia Corporation | Memory management for virtual address space with translation units of variable range size |
| US20070073996A1 (en) * | 2005-04-07 | 2007-03-29 | Ati Technologies Inc. | Virtual memory fragment aware cache |
| TW201433917A (zh) * | 2013-01-07 | 2014-09-01 | 三星電子股份有限公司 | 系統晶片、電子系統及其記憶體位址轉譯方法 |
| TWI588654B (zh) * | 2014-05-09 | 2017-06-21 | 美光科技公司 | 用於可重組態之記憶體系統之虛擬化實體位址 |
| TW201918882A (zh) * | 2017-11-13 | 2019-05-16 | 韓商愛思開海力士有限公司 | 記憶體系統及其操作方法 |
| CN110659225A (zh) * | 2018-06-28 | 2020-01-07 | 华为技术有限公司 | 内存管理方法以及相关装置 |
| CN111813710A (zh) * | 2020-09-11 | 2020-10-23 | 鹏城实验室 | 避免Linux内核内存碎片方法、设备及计算机存储介质 |
| TW202301127A (zh) * | 2021-06-17 | 2023-01-01 | 日商鎧俠股份有限公司 | 記憶體系統及資訊處理系統 |
Also Published As
| Publication number | Publication date |
|---|---|
| TW202435080A (zh) | 2024-09-01 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN109564545B (zh) | 用于压缩地址的方法和设备 | |
| US20130318285A1 (en) | Flash memory controller | |
| CN108139994B (zh) | 内存访问方法及内存控制器 | |
| KR101789190B1 (ko) | 스크래치 패드 메모리 구조를 이용한 캐시 및 이를 포함하는 프로세서 | |
| JP4966404B2 (ja) | メモリ制御装置、記憶装置、及びメモリ制御方法 | |
| CN117312201B (zh) | 一种数据传输方法、装置及加速器设备、主机和存储介质 | |
| CN103077123A (zh) | 一种数据写入和读取方法及装置 | |
| JP7630667B2 (ja) | メモリコントローラおよびメモリコントローラで実施される方法 | |
| US20050253858A1 (en) | Memory control system and method in which prefetch buffers are assigned uniquely to multiple burst streams | |
| US7039728B2 (en) | Information processing device and method | |
| CN117707991B (zh) | 一种数据读写方法、系统、设备及存储介质 | |
| WO2025139618A1 (zh) | 用于芯片的数据读取方法、芯片、计算机设备、存储介质及计算机程序产品 | |
| US20240419359A1 (en) | Memory system | |
| US20160110286A1 (en) | Data writing method and memory system | |
| CN104808950B (zh) | 对嵌入式存储器元件的模式依赖性访问 | |
| CN101261611A (zh) | 一种外围设备间的数据传输装置和传输方法 | |
| TWI864600B (zh) | 應用於智慧型處理器的記憶體管理裝置與方法 | |
| CN114168495B (zh) | 存储设备的增强的预读能力 | |
| US12360929B2 (en) | Memory management device and method applied to intelligence processing unit | |
| CN112860596B (zh) | 一种神经网络张量处理器的数据流高速缓存装置 | |
| CN112825024A (zh) | 命令融合、拆分方法与NVMe控制器 | |
| CN116107923B (zh) | 一种基于bram的多对多高速访存架构和访存系统 | |
| CN113157205B (zh) | 一种nand阵列的控制方法、控制器、电子设备及存储介质 | |
| US8452920B1 (en) | System and method for controlling a dynamic random access memory | |
| WO2017031637A1 (zh) | 一种内存访问方法、装置和系统 |