TWI540433B - 用來存取記憶體的電路及相關的存取方法 - Google Patents

用來存取記憶體的電路及相關的存取方法 Download PDF

Info

Publication number
TWI540433B
TWI540433B TW104102007A TW104102007A TWI540433B TW I540433 B TWI540433 B TW I540433B TW 104102007 A TW104102007 A TW 104102007A TW 104102007 A TW104102007 A TW 104102007A TW I540433 B TWI540433 B TW I540433B
Authority
TW
Taiwan
Prior art keywords
data
storage area
circuit
cache
item
Prior art date
Application number
TW104102007A
Other languages
English (en)
Other versions
TW201627866A (zh
Inventor
曾鈺翔
謝鎮宇
Original Assignee
晨星半導體股份有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 晨星半導體股份有限公司 filed Critical 晨星半導體股份有限公司
Priority to TW104102007A priority Critical patent/TWI540433B/zh
Priority to US14/996,304 priority patent/US20160210245A1/en
Application granted granted Critical
Publication of TWI540433B publication Critical patent/TWI540433B/zh
Publication of TW201627866A publication Critical patent/TW201627866A/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/656Address space sharing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

用來存取記憶體的電路及相關的存取方法
本發明係有關於記憶體存取,尤指一種存取分散式記憶體(scatter memory)的電路及相關的存取方法。
在傳統的分散式記憶體中,會儲存有一個分散表(scatter table),這個分散表中記錄了多個項目(entry),且每個項目記錄了記憶體中一個資料儲存區域的起始位址及大小,其中分散表中所記錄之多個項目所分別對應的多個資料儲存區域的大小有可能並不一致,且有可能不是連續的位址。在對記憶體進行讀寫的過程中,由於資料儲存區域的大小可能不一致且位址不連續,因此,若是需要讀取先前在記憶體其他資料儲存區域中所儲存的資料,則需要一個一個的循序讀取分散表中所記錄的項目,以判斷所需要的資料是存放在哪一個資料儲存區域中,因此,耗費了記憶體的存取時間。
因此,本發明的目的之一在於提供一種用來存取記憶體的電路及相關的存取方法,其可以減少記憶體的存取時間,以解決先前技術的問題。
依據本發明一實施例,揭露了一種用來存取一記憶體的電路,其中該記憶體包含一分散表儲存區域以及複數資料儲存區域,該分散表儲存區域用以儲存複數項目(entry),且該些項目分別記錄該些資料儲存區域的起始 位址以及大小,且該電路包含有:一存取電路,耦接於該記憶體,用來存取該記憶體;以及一快取,耦接於該存取電路以及該記憶體,用以讀取該分散表儲存區域,並儲存自該分散表儲存區域中所讀取的該些項目中的一項目;其中當該存取電路需要讀取該些資料儲存區域所儲存的一資料時,該存取電路先發送一讀取請求至該快取以從該快取中讀取該項目,再根據該項目所記錄之一資料儲存區域的大小來判斷該資料是否儲存在該項目所記錄之該資料儲存區域中,並據以決定是否根據該項目所記錄之該資料儲存區域的起始位址來讀取該記憶體以取得該資料。
依據本發明另一實施例,揭露了一種用來存取一記憶體的方法, 其中該記憶體包含一分散表儲存區域以及複數資料儲存區域,該分散表儲存區域用以儲存複數項目,且該些項目分別記錄該些資料儲存區域的起始位址以及大小,該方法包含有:以一快取讀取該分散表儲存區域,並以該快取儲存自該分散表儲存區域中所讀取的該些項目中的一項目;以及當需要讀取該些資料儲存區域所儲存的一資料時,先發送一讀取請求至該快取以從該快取中讀取該項目,再根據該項目所記錄之一資料儲存區域的大小來判斷該資料是否儲存在該項目所記錄之該資料儲存區域中,並據以決定是否根據該項目所記錄之該資料儲存區域的起始位址來讀取該記憶體以取得該資料。
100‧‧‧記憶體
110‧‧‧分散表
200‧‧‧電路
210‧‧‧解碼電路
220‧‧‧直接記憶體存取引擎
230‧‧‧快取
D1~D4‧‧‧資料儲存區域
300~306‧‧‧步驟
第1圖為一記憶體的示意圖。
第2圖所示為依據本發明一實施例之用來存取記憶體的電路的示意圖。
第3圖為依據本發明一實施例之用來存取一記憶體的方法的流程圖。
請參考第1圖,第1圖為一記憶體100的示意圖。如第1圖所示, 記憶體100為一分散式記憶體,其包含了一分散表(scatter table)110與多個資料儲存區域D1~D4,其中分散表110包含了多個項目,例如圖示的項目1~項目4,其中每一個項目對應到記憶體100中的一個資料儲存區域,且每一個項目均記錄了所對應之資料儲存區域的起始位址以及大小。以第1圖所示的例子來說,項目1記錄了資料儲存區域D1的起始位址是0x02A00,大小為304個位元組(byte);項目2記錄了資料儲存區域D2的起始位址是0x02000,大小為256個位元組;項目3記錄了資料儲存區域D3的起始位址是0x03000,大小為48個位元組;且項目4記錄了資料儲存區域D4的起始位址是0x02B40,大小為112個位元組。需注意的是,第1圖所示的項目數量、資料儲存區域的數量、起始位址及大小僅是為了方便後續解釋本發明內容所使用的,而並非作為本發明的限制。
在記憶體100的存取操作上,若是有解碼電路需要讀取其中的資 料時,解碼電路需要先去讀取分散表110中的一個項目,之後再根據該項目中所記錄的資料儲存區域的起始位址去記憶體100中讀取資料。舉例來說,解碼電路會需要先去去讀取分散表110中的項目1,得知資料儲存區域D1的起始位址是0x02A00,之後再根據此起始位址0x02A00自記憶體100中讀取資料儲存區域D1中的資料,或是將資料寫入到資料儲存區域D1中。
然而,當解碼電路在進行一些解碼操作,例如使用藍培爾-西弗- 馬可夫鏈演算法(Lempel-Ziv-Markov chain-Algorithm,LZMA)、zlib、LZ77等演算法進行解壓縮操作時,會需要使用到先前曾經解碼完成後的資料來做為解碼下一筆資料的參考,舉例來說,假設解碼電路對一資料串進行解碼以持續產生解碼後資料,並將所產生的解碼後資料循序儲存到記憶體100中的 資料儲存區域D1、D2、D3、D4。假設目前正將解碼後資料寫入至資料儲存區域D4的第10個位元組,若此時的解碼需要使用到位於前150個位元組起算的20個位元組的解碼後資料(亦即,包含前150個位元組到前131個位元組之間的解碼後資料),則在先前技術中,由於在資料儲存區域D4中僅寫入到第10個位元組,前述所需的解碼後資料顯然不會位於資料儲存區域D4中,因此解碼電路會先讀取項目3並判斷所需要的資料是否儲存在資料儲存區域D3,若是所需要的資料在資料儲存區域D3則解碼電路會讀取資料儲存區域D3的所需資料以用來進行目前解壓縮操作的參考,而若是所需要的資料沒有在資料儲存區域D3,則解碼電路會再去讀取項目2並判斷所需要的資料是否儲存在資料儲存區域D2...並重複以上操作,直到讀取到所需的資料為止。
如上所述,先前技術在讀取資料時需要一次又一次地去讀取分散 表110中的項目,直到找到所需要的資料為止,因此,會有下兩個缺點:第一,由於記憶體100中分散表110與資料儲存區域D1~D4位於不同的位址,故記憶體的突發傳輸讀取(read burst)會被中斷;第二,因為每一個資料儲存區域D1~D4的大小並不一致,假設解碼電路在解碼資料時需要使用到位於前150個位元組起算的20個位元組的解碼後資料,則解碼電路並無法知道“位於前150個位元組起算的20個位元組的解碼後資料”是位於哪一個項目所對應到的資料儲存區域中,因此,解碼電路需要一個一個的讀取位於分散表110中的項目再加以判斷,故很耗費存取時間。
為了解決上述問題,本發明提供了一種用來存取記憶體的電路。 請參考第2圖,第2圖所示為依據本發明一實施例之用來存取記憶體100的電路200的示意圖。如第2圖所示,電路200包含了一解碼電路210、一存取電路(在本實施例中,該存取電路為一直接記憶體存取(Direct Memory Access,DMA)引擎220)以及一快取230。在本實施例中,解碼電路210包含 一解壓縮電路,例如使用LZMA、zlib、LZ77等演算法進行解壓縮操作的解壓縮電路,其用來對一資料串進行解壓縮以產生解壓縮資料,並將所產生的資料串透過直接記憶體存取引擎220儲存到記憶體100中;在本實施例中,記憶體100係為動態隨機存取記憶體(Dynamic Random Access Memory,DRAM),然而,在其他實施例中,記憶體100亦可使用快取或是快閃記憶體(flash memory)來實作;此外,快取230可使用靜態隨機存取記憶體(Static Random-Access Memory,SRAM)來實作。
此外,在第2圖所示的實施例中,係將直接記憶體存取引擎220 與快取230描述為兩個不同的元件,然而,本領域具有通常知識者應可了解快取230亦可被整合到直接記憶體存取引擎220中,只要其功能操作上與本發明實施例中的相同,其電路區塊的描述並不以第2圖所示的實施例為限。
請同時參考第1、2圖,在電路200的操作上,解碼電路210對一 資料串進行解碼,並將所產生的解碼後資料傳送到直接記憶體存取引擎220,直接記憶體存取引擎220透過快取230以自記憶體100中的分散表110取得項目1,並根據項目1所記錄的起始位址將解碼後資料依序寫入到資料儲存區域D1中,接著,直接記憶體存取引擎220再透過快取230以自記憶體100中的分散表110取得項目2,並根據項目2所記錄的起始位址將解碼後資料依序寫入到資料儲存區域D2中...以此類推,其中快取230會保留最後幾筆提供給直接記憶體存取引擎220的項目,當解碼電路210後續在解碼資料時需要先前已經儲存到資料儲存區域D1~資料儲存區域D4中的解碼後資料時,記憶體存取引擎220會發送一請求至快取230以要求取得分散表110中的項目內容,此時,快取230會先直接將本身暫存的項目傳送給直接記憶體存取引擎220,以供判斷所需要的資料是否儲存在該項目所對應到的資料儲存區域中,若是有的話,直接記憶體存取引擎220根據該項目所記錄的起始位址 自記憶體100中讀取資料;而若是所需要的資料沒有儲存在快取230所暫存之該項目所對應到的資料儲存區域中時,則直接記憶體存取引擎220便要求快取230自記憶體100中讀取更前面的項目。
舉一例子來詳細說明電路200的操作,在以下例子中,係假設快 取230在不包含目前讀取的項目的情形下可暫存的項目數量為兩筆,但本發明並不以此為限。同時參考第1、2圖,解碼電路210對一資料串進行解碼並產生解碼後資料,之後,解碼後資料被傳送到直接記憶體存取引擎220以準備寫入到記憶體100中。首先,直接記憶體存取引擎220會發送一寫入請求至快取230,而快取230便自記憶體100的分散表110中讀取項目1,並將項目1所記錄的內容(亦即資料儲存區域D1的起始位址是0x02A00,大小為304個位元組)傳送到直接記憶體存取引擎220,接著,直接記憶體存取引擎220便從記憶體100的資料儲存區域D1的起始位址0x02A00將解碼後資料依序寫入;當將304個位元組的解碼後資料寫入到資料儲存區域1之後,直接記憶體存取引擎220會發送下一個寫入請求至快取230,而快取230便自記憶體100的分散表110中讀取項目2(此時快取230中暫存了項目1的內容),並將項目2所記錄的內容(亦即資料儲存區域D2的起始位址是0x02000,大小為256個位元組)傳送到直接記憶體存取引擎220,接著,直接記憶體存取引擎220便從記憶體100的資料儲存區域D2的起始位址0x02000將解碼後資料依序寫入;重複上述步驟,在資料儲存區域D2也寫滿解碼後資料之後,解碼後資料繼續透過直接記憶體存取引擎220與快取230寫入到記憶體100的資料儲存區域D3、資料儲存區域D4中。
假設目前解碼後資料儲存到資料儲存區域D4的10個位元組,而 解碼電路210在解碼下一筆資料時需要使用到前100個位元組開始的20個位元的解碼後資料(亦即,包含前100個位元組到前81個位元組之間的解碼後 資料)來幫助解碼,因此,解碼電路210會發送一個命令到直接記憶體存取引擎220,以指示直接記憶體存取引擎220回到目前位置的前100個位元組的位址,然後讀20個位元組的資料回來,此時,直接記憶體存取引擎220先判斷目前所正在寫入資料的資料儲存區域D4是否有解碼電路210所需要的解碼後資料,在本實施例中,由於資料儲存區域D4目前只寫了10個位元組的解碼後資料,因此資料儲存區域4並沒有解碼電路210所需要的解碼後資料;接著,直接記憶體存取引擎220會發送一讀取請求到快取230中,以請求上一個項目內容,此時,由於快取230中暫存了項目2及項目3,故快取230會先直接將項目3所包含的內容(亦即資料儲存區域D3的起始位址及大小)傳送到直接記憶體存取引擎220,而直接記憶體存取引擎220便藉由所接收到之有關於資料儲存區域D3的大小資訊,來判斷資料儲存區域D3是否有解碼電路210所需要的解碼後資料,在本實施例中,由於資料儲存區域D3只有48個位元組的解碼後資料,因此資料儲存區域D3也沒有解碼電路210所需要的解碼後資料;接著,直接記憶體存取引擎220會再發送一讀取請求到快取230中,以請求再上一個項目內容,此時,快取230會先直接將項目2所包含的內容(亦即資料儲存區域D2的起始位址及大小)傳送到直接記憶體存取引擎220,而直接記憶體存取引擎220便藉由所接收到之有關於資料儲存區域D2的大小資訊,來判斷資料儲存區域D2是否有解碼電路210所需要的解碼後資料,在本實施例中,由於資料儲存區域D2包含了256個位元組解碼後資料,故解碼電路210所需要的解碼後資料便是儲存在資料儲存區域D2中。此時,直接記憶體存取引擎220可以藉由資料儲存區域D2的起始位址以及目前寫入在資料儲存區域2~4中的解碼後資料的資料量(在本實施例中,資料量為10+48+256=314位元組),來計算決定出解碼電路210所需要的解碼後資料的位址,而直接記憶體存取引擎220接著便在記憶體100的資料儲存區域D2中讀取這些解碼後資料,並回傳給解碼電路210。
在另一個狀況下,假設目前解碼後資料儲存到資料儲存區域D4 的10個位元組,而解碼電路210在解碼下一筆資料時需要使用到前500個位元組開始的10個位元的解碼後資料(亦即,包含前500個位元組到前491個位元組之間的解碼後資料)來幫助解碼,與上一段一開始所述的步驟類似,解碼電路210會發送一個命令到直接記憶體存取引擎220,以指示直接記憶體存取引擎220回到目前位置的前500個位元組的位址,然後讀10個位元組的資料回來,此時,由於快取230中暫存了項目2及項目3,因此,直接記憶體存取引擎220並自快取230中所取得的項目2及項目3的內容可以知道解碼電路210所需要的解碼後資料並不在資料儲存區域D2及資料儲存區域D3之中,因此,直接記憶體存取引擎220會再發送一讀取請求到快取230中,以請求再上一個項目內容,此時,由於快取230已經沒有暫存的項目內容,因此快取230會去記憶體100的分散表110中讀取項目1的內容(亦即資料儲存區域D1的起始位址及大小),並將項目1的內容傳送到直接記憶體存取引擎220,而直接記憶體存取引擎220便藉由所接收到之有關於資料儲存區域D1的大小資訊,來判斷資料儲存區域D1是否有解碼電路210所需要的解碼後資料,在本實施例中,由於資料儲存區域D1包含了304個位元組解碼後資料,故解碼電路210所需要的解碼後資料便是儲存在資料儲存區域D1中。 此時,直接記憶體存取引擎220可以藉由資料儲存區域D1的起始位址以及目前寫入在資料儲存區域D1~D4中的解碼後資料的資料量(在本實施例中,資料量為10+48+256+304=618位元組),來計算決定出解碼電路210所需要的解碼後資料的位址,而直接記憶體存取引擎220接著便在記憶體100的資料儲存區域D1中讀取這些解碼後資料,並回傳給解碼電路210。
如上所述,由於在接收到解碼電路210的讀取指示,而直接記憶 體存取引擎220向快取230要求項目內容時,快取230會直接先將目前所暫存的項目內容傳送給直接記憶體存取引擎220,而不需要每次都去讀取記憶 體100的分散表110,只有在快取230沒有所需要的項目內容時才需要去分散表110中讀取,因此,可以省下記憶體100讀寫的時間與頻寬,且也不會增加太多的製造成本。
此外,在上述的例子中,直接記憶體存取引擎220一次只會跟快 取230要求一個項目的內容,亦即直接記憶體存取引擎220發一個讀取請求,快取230回傳項目3的內容,而之後直接記憶體存取引擎220發下一個讀取請求,快取230才會回傳項目2的內容。然而,在本發明的另一個實施例中,若是快取230本身採用正反器(flip-flop)來實作時,快取230可以一次就將項目2及項目3的內容回傳到直接記憶體存取引擎220,以進一步節省存取時間。
此外,需注意的是,上述使用第1圖來描述電路200的操作僅為 一範例說明,而並非是作為本發明的限制,舉例來說,快取230中所暫存的項目可以是N筆項目內容,其中N可為任何適合的正整數,快取230中暫存資料的更新機制有可以根據演算法做不同的設計,或是當快取230目前沒有任何暫存項目時,可以一次從分散表110中讀取兩個項目的內容,這些設計上的變化均應隸屬於本發明的範疇。
此外,在以上的實施例中,由於每一個資料儲存區域D1~D4的大 小可能不一樣,故直接記憶體存取引擎220需要循序的接收項目3、項目2、項目1的內容以判斷解碼電路210所需要的解碼後資料在哪裡。然而,在本發明的另一個實施例中,假設每一個資料儲存區域的大小一致,例如都是512個位元組,則直接記憶體存取引擎220可以不需要依序接收項目3、項目2、項目1的內容,而可以根據本身的運算而大概知道所需要的解碼後資料位在哪一個資料儲存區域中,因此可以直接向快取230要求可能需要的項目內容。 舉例來說,假設目前直接記憶體存取引擎220正在將資料寫入到資料儲存區域D4中,而此時解碼電路210要求前1200個位元組開始的10個位元組的解碼後資料,則直接記憶體存取引擎220經由簡易計算可以很明顯地知道所需要的解碼後資料不可能會在資料儲存區域D3中,只有可能會在資料儲存區域D2或是資料儲存區域D1中。因此,直接記憶體存取引擎220可以直接發讀取請求至快取230以要求項目2的內容,而跳過了項目3,以進一步節省存取時間。
請參考第3圖,第3圖為依據本發明一實施例之用來存取一記憶體的方法的流程圖。同時參考第1、2、3圖,流程如下所述:步驟300:開始。
步驟302:對一資料串進行解碼,以產生複數解碼後資料,並將該些解碼後資料循序儲存到該記憶體中。
步驟304:以一快取讀取該分散表儲存區域,並以該快取儲存自該分散表儲存區域中所讀取的該些項目中的一項目。
步驟306:當需要讀取該些資料儲存區域所儲存的一資料時,先發送一讀取請求至該快取以從該快取中讀取該項目,再根據該項目所記錄之一資料儲存區域的大小來判斷該資料是否儲存在該項目所記錄之該資料儲存區域中,並據以決定是否根據該項目所記錄之該資料儲存區域的起始位址來讀取該記憶體以取得該資料。
簡要歸納本發明,在本發明的用來存取記憶體的電路及相關的存取方法中,係使用一快取來暫存自記憶體的分散表中所讀取的項目內容,而當直接記憶體存取引擎需要讀取項目內容時,便可以直接自快取中取得,而不需要每次都要去記憶體中的分散表中讀取項目內容,因此,可以確實減少記憶體存取時間,且記憶體的突發傳輸讀取也比較不會被中斷。
以上所述僅為本發明之較佳實施例,凡依本發明申請專利範圍所做之均等變化與修飾,皆應屬本發明之涵蓋範圍。
100‧‧‧記憶體
200‧‧‧電路
210‧‧‧解碼電路
220‧‧‧直接記憶體存取引擎
230‧‧‧快取

Claims (14)

  1. 一種用來存取一記憶體的電路,其中該記憶體包含一分散表(scatter table)儲存區域以及複數資料儲存區域,該分散表儲存區域用以儲存複數項目(entry),且該些項目分別記錄該些資料儲存區域的起始位址以及大小,該電路包含有:一存取電路,耦接於該記憶體,用來存取該記憶體;以及一快取,耦接於該存取電路以及該記憶體,用以讀取該分散表儲存區域,並儲存自該分散表儲存區域中所讀取的該些項目中的一項目;其中當該存取電路需要讀取該些資料儲存區域所儲存的一資料時,該存取電路先發送一讀取請求至該快取以從該快取中讀取該項目,再根據該項目所記錄之一資料儲存區域的大小來判斷該資料是否儲存在該項目所記錄之該資料儲存區域中,並據以決定是否根據該項目所記錄之該資料儲存區域的起始位址來讀取該記憶體以取得該資料。
  2. 如申請專利範圍第1項所述的電路,其中該快取儲存自該分散表儲存區域中所讀取的該些項目中的另一項目,當該存取電路決定不根據該項目所記錄之該資料儲存區域的起始位址來讀取該記憶體以取得該資料時,該存取電路發送另一讀取請求至該快取以從該快取中讀取該另一項目。
  3. 如申請專利範圍第1項所述的電路,另包含有:一解碼電路,耦接於該存取電路,用來對一資料串進行解碼,以循序產生複數解碼後資料,並透過該存取電路將該些解碼後資料循序儲存到該記憶體中;其中該資料係為該解碼電路對該資料串進行解碼時所需要使用的一部分該些解碼後資料。
  4. 如申請專利範圍第3項所述的電路,其中當該解碼電路透過該存取電路將該些解碼後資料循序儲存到該記憶體時,該存取電路係循序發送複數寫入請求至該快取,該快取根據該些寫入請求讀取該分散表儲存區域,並將自該分散表儲存區域中所讀取的第M個到第(M+L)個項目循序傳送給該存取電路,該存取電路據以將該些解碼後資料循序儲存到該記憶體中對應於第M個到第(M+L)個項目的第M個到第(M+L)個資料儲存區域中;其中該快取儲存傳送給該存取電路的最後N個項目,M、L、N皆為正整數,且N小於L。
  5. 如申請專利範圍第4項所述的電路,其中當該解碼電路發送一命令至該存取電路以要求讀取該資料時,該存取電路發送至少一讀取請求至該快取,且該快取從第(M+L-1)個項目開始,循序往回將該些項目的內容傳送至該存取電路,直到該存取電路確定該資料在哪一個資料儲存區域為止。
  6. 如申請專利範圍第5項所述的電路,其中當該快取傳送完第(M+L-1)到第M個項目的內容至該存取電路,且該存取電路仍未確定該資料在哪一個資料儲存區域時,該快取自該分散表儲存區域中讀取第(M-1)個項目並傳送至該存取電路。
  7. 如申請專利範圍第3項所述的電路,其中該解碼電路係為一LZMA解碼電路、一zlib解碼電路、以及一LZ77解碼電路的其中之一。
  8. 一種用來存取一記憶體的方法,其中該記憶體包含一分散表儲存區域以及複數資料儲存區域,該分散表儲存區域用以儲存複數項目,且該些項 目分別記錄該些資料儲存區域的起始位址以及大小,該方法包含有:以一快取讀取該分散表儲存區域,並以該快取儲存自該分散表儲存區域中所讀取的該些項目中的一項目;以及當需要讀取該些資料儲存區域所儲存的一資料時,先發送一讀取請求至該快取以從該快取中讀取該項目,再根據該項目所記錄之一資料儲存區域的大小來判斷該資料是否儲存在該項目所記錄之該資料儲存區域中,並據以決定是否根據該項目所記錄之該資料儲存區域的起始位址來讀取該記憶體以取得該資料。
  9. 如申請專利範圍第8項所述的方法,另包含有:以該快取儲存自該分散表儲存區域中所讀取的該些項目中的另一項目;以及當決定不根據該項目所記錄之該資料儲存區域的起始位址來讀取該記憶體以取得該資料時,發送另一讀取請求至該快取以從該快取中讀取該另一項目。
  10. 如申請專利範圍第8項所述的方法,另包含有:對一資料串進行解碼,以循序產生複數解碼後資料,並將該些解碼後資料循序儲存到該記憶體中;其中該資料係為對該資料串進行解碼時所需要使用的一部分該些解碼後資料。
  11. 如申請專利範圍第10項所述的方法,其中將該些解碼後資料循序儲存到該記憶體中的步驟包含有:依序發送複數寫入請求至該快取; 該快取根據該些寫入請求讀取分散表儲存區域,並將自該分散表儲存區域中所讀取的第M個到第(M+L)個項目循序傳送給一存取電路,該存取電路據以將該些解碼後資料循序儲存到該記憶體中對應於第M個到第(M+L)個項目的第M個到第(M+L)個資料儲存區域中,其中該快取儲存傳送給該存取電路的最後N個項目,M、L、N皆為正整數,且N小於L。
  12. 如申請專利範圍第11項所述的方法其中該項目為第(M+L-1)個項目,該讀取該資料的步驟更包含有:該快取從該第(M+L-1)個項目開始,循序往回將該些項目的內容傳送至該存取電路,直到該存取電路確定該資料在哪一個資料儲存區域為止。
  13. 如申請專利範圍第12項所述的方法,其中當該快取傳送完第(M+L-1)到第M個項目的內容至該存取電路,且該存取電路仍未確定該資料在哪一個資料儲存區域時,該快取自該分散表儲存區域中讀取第(M-1)個項目並傳送至該存取電路。
  14. 如申請專利範圍第8項所述的方法,係應用於一LZMA解碼電路、一zlib解碼電路、以及一LZ77解碼電路的其中之一。
TW104102007A 2015-01-21 2015-01-21 用來存取記憶體的電路及相關的存取方法 TWI540433B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
TW104102007A TWI540433B (zh) 2015-01-21 2015-01-21 用來存取記憶體的電路及相關的存取方法
US14/996,304 US20160210245A1 (en) 2015-01-21 2016-01-15 Circuit for accessing memory and associated accessing method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
TW104102007A TWI540433B (zh) 2015-01-21 2015-01-21 用來存取記憶體的電路及相關的存取方法

Publications (2)

Publication Number Publication Date
TWI540433B true TWI540433B (zh) 2016-07-01
TW201627866A TW201627866A (zh) 2016-08-01

Family

ID=56407992

Family Applications (1)

Application Number Title Priority Date Filing Date
TW104102007A TWI540433B (zh) 2015-01-21 2015-01-21 用來存取記憶體的電路及相關的存取方法

Country Status (2)

Country Link
US (1) US20160210245A1 (zh)
TW (1) TWI540433B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109284129A (zh) * 2017-07-21 2019-01-29 瑞昱半导体股份有限公司 用于处理器的资料存取装置与方法

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10565121B2 (en) * 2016-12-16 2020-02-18 Alibaba Group Holding Limited Method and apparatus for reducing read/write contention to a cache
CN114077554B (zh) * 2022-01-20 2022-06-21 广州匠芯创科技有限公司 一种数据解码方法、系统、设备及介质

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6912687B1 (en) * 2000-05-11 2005-06-28 Lsi Logic Corporation Disk array storage subsystem with parity assist circuit that uses scatter-gather list
JP4586633B2 (ja) * 2005-05-25 2010-11-24 ソニー株式会社 デコーダ回路、デコード方法及びデータ記録装置
US8495301B1 (en) * 2007-11-23 2013-07-23 Pmc-Sierra Us, Inc. System and method for scatter gather cache processing
US9239796B2 (en) * 2011-05-24 2016-01-19 Ixia Methods, systems, and computer readable media for caching and using scatter list metadata to control direct memory access (DMA) receiving of network protocol data
US9262197B2 (en) * 2014-07-16 2016-02-16 Dell Products L.P. System and method for input/output acceleration device having storage virtual appliance (SVA) using root of PCI-E endpoint

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109284129A (zh) * 2017-07-21 2019-01-29 瑞昱半导体股份有限公司 用于处理器的资料存取装置与方法
CN109284129B (zh) * 2017-07-21 2022-12-20 瑞昱半导体股份有限公司 用于处理器的资料存取装置与方法

Also Published As

Publication number Publication date
TW201627866A (zh) 2016-08-01
US20160210245A1 (en) 2016-07-21

Similar Documents

Publication Publication Date Title
US9996466B2 (en) Apparatus, system and method for caching compressed data
US20190196907A1 (en) Compression techniques for distributed data
US10042576B2 (en) Method and apparatus for compressing addresses
JP6599898B2 (ja) 中央処理装置(cpu)搭載システム内の圧縮メモリコントローラ(cmc)を使用したメモリ帯域圧縮の提供
CN107784121A (zh) 一种基于非易失内存的日志文件系统的小写优化方法
US9430394B2 (en) Storage system having data storage lines with different data storage line sizes
JP2005182983A (ja) バッファメモリを内蔵したフラッシュメモリ装置及びフラッシュメモリシステム
US9952801B2 (en) Accelerated address indirection table lookup for wear-leveled non-volatile memory
US7533234B2 (en) Method and apparatus for storing compressed code without an index table
US10445261B2 (en) System memory having point-to-point link that transports compressed traffic
TWI540433B (zh) 用來存取記憶體的電路及相關的存取方法
US20210056030A1 (en) Multi-level system memory with near memory capable of storing compressed cache lines
CN117312201B (zh) 一种数据传输方法、装置及加速器设备、主机和存储介质
US9904622B2 (en) Control method for non-volatile memory and associated computer system
US20030115404A1 (en) Write-once memory device including non-volatile memory for temporary storage
CN108170376A (zh) 存储卡读和写的方法和系统
US6643736B1 (en) Scratch pad memories
US10719440B2 (en) Semiconductor device and memory access method
KR101618999B1 (ko) 네트워크 부트 시스템
TWI690167B (zh) 用於低密度奇偶校驗碼的解碼方法與系統
KR20020020104A (ko) 데이터 입출력 속도가 증가된 메모리 카드
CN105988940A (zh) 用来存取存储器的电路及相关的存取方法

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees
MM4A Annulment or lapse of patent due to non-payment of fees