TW201535412A - 具有繞回性至連續性讀取之記憶體子系統 - Google Patents
具有繞回性至連續性讀取之記憶體子系統 Download PDFInfo
- Publication number
- TW201535412A TW201535412A TW104105547A TW104105547A TW201535412A TW 201535412 A TW201535412 A TW 201535412A TW 104105547 A TW104105547 A TW 104105547A TW 104105547 A TW104105547 A TW 104105547A TW 201535412 A TW201535412 A TW 201535412A
- Authority
- TW
- Taiwan
- Prior art keywords
- memory
- data
- memory region
- region
- reading
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0685—Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Memory System (AREA)
Abstract
本發明揭示用於存取記憶體的資料之系統、方法以及電腦程式產品實施例。方法實施例係藉由接收對於跨儲存在記憶體之至少第一記憶體區域及第二記憶體區域的資料之一或多個請求而操作。所述方法係由至少一處理器繼續執行記憶體之第一記憶體區域內的資料之繞回讀取。所述方法係由至少一處理器接著執行記憶體之第二記憶體區域內的資料之連續讀取,且第二記憶體區域鄰近第一記憶體區域。連續讀取開始於第二記憶體區域之第一邊界、且在第一記憶體區域內的資料之繞回讀取之後自動執行。
Description
本發明關於用於存取記憶體的資料之系統、方法以及電腦程式產品。
商業資料庫系統依賴快取技術來提高性能。相對於需要較長存取時間的儲存器(例如以碟片為基礎的儲存器),快取通常被使用來支援能被快速存取之記憶體,諸如隨機存取記憶體(RAM)。快取一般儲存常用到的資料並減少資料庫系統存取資料頁面所需的時間。
一般來說,存取非揮發性記憶體裝置之記憶體控制器係利用來自匯流排主控器之每個讀取或寫入交易請求的晶片選擇信號之斷言(assertion)而開始讀取或寫入操作。要被從記憶體讀取且被使用來填滿快取中之一或多個快取線的資料塊可能會跨儲存在記憶體之一個以上記憶體區域中,該記憶體通常需對要被寫入至關聯的快取線之每個資料塊發出個別的讀取命令。複數個讀取請求之需求增加了該記憶體的延遲與存取時間。
本案提供系統、方法、及/或電腦程式產品之實施例、及/或它們的組合及子組合,用於從複數個記憶體裝置存取資料。
實施例包括一種用於存取快取之電腦實現方法。該方法係藉由接收對於跨儲存在記憶體之至少第一記憶體區域和第二記憶體區域的資料之一或多個請求而操作。該方法係由至少一處理器繼續執行該記憶體之該第一記憶體區域內的資料之繞回讀取。然後,該方法係由該至少一處理器執行該記憶體之該第二記憶體區域內的資料之連續讀取,該第二記憶體區域鄰近該第一記憶體區域。該連續讀取係開始於該第二記憶體區域之第一邊界、並於該第一記憶體區域的資料之該繞回讀取之後自動執行。
另一實施例包括一種系統。該系統包括複數個記憶體裝置和耦合到該複數個記憶體裝置之記憶體控制器。該記憶體控制器係設計成接收對於跨儲存在該複數個記憶體裝置之第一記憶體區域和第二記憶體區域的資料之一或多個請求。該記憶體控制器亦執行該記憶體之第一記憶體區域中的資料之繞回讀取。該記憶體控制器亦設計為執行該記憶體之第二記憶體區域中的資料之連續讀取,該第二記憶體區域鄰近於該第一記憶體區域。該連續讀取係開始於該第二記憶體區域之第一邊界。該多個記憶體裝置係設計成使得,於執行該第一記憶體區域的資料之繞回讀取之後,資料的該連續讀取係在該第二記憶體區域的第一邊界自動啟動。
進一步之實施例包括一種儲存有指令之有形電腦可讀取裝置,當藉由至少一計算裝置執行時,該指令使該計算裝置執行操作。該操作包括接收對於跨儲存在記憶體之至少第一記憶體區域及第二記憶體區域的資料之一或多個請求。該操作更進一步包含執行該記憶體之第一記憶體區域中的資料之繞回讀取。該操作更進一步包含執行該記憶體之第二記憶體中的資料之連續讀取,該第二記憶體區域鄰近該第一記憶體區域。該連續讀取係開始於該第二記憶體區域之第一邊界、且在該第一記憶體區域內的資料之該繞回讀取之後自動執行。
本發明之進一步特徵和優點以及本發明不同實施例的結構與操作係詳述於下列參考圖式中。應該注意的是,本發明並不限於本文所述之特定實施例。在此的這些實施方案於本文中提出僅用於說明目的。根據本案所包含之教示,另外的實施例對於相關技術的之技術人員係為顯而易見。
100‧‧‧記憶體系統
102‧‧‧記憶體控制器
104‧‧‧主機CTRL區塊
106‧‧‧處理器
108‧‧‧記憶體裝置
110‧‧‧解碼器
112‧‧‧合併檢測模組
114‧‧‧TX計數器
116‧‧‧RX計數器
118‧‧‧狀態機
120‧‧‧RX FIFO
122‧‧‧TX FIFO
201a、201b、201c、301a、301b、301c、301d‧‧‧繞回邊界
MA0、MA1、MA2‧‧‧(第一、第二、第三)記憶體區域
400‧‧‧方法
402至416‧‧‧步驟
500‧‧‧電腦系統
502‧‧‧使用者輸入/輸出介面
503‧‧‧使用者輸入/輸出裝置
504‧‧‧處理器
506‧‧‧通信基礎設施(或匯流排)
508‧‧‧主(或主要)記憶體
510‧‧‧次要記憶體(或儲存裝置)
512‧‧‧硬碟驅動器
514‧‧‧可移動儲存驅動器(或裝置)
518、522‧‧‧可移動儲存單元
520‧‧‧介面
524‧‧‧通信(或網路)介面
526‧‧‧通信路徑
528‧‧‧遠端裝置、遠端網路、遠端實體
此處包括的圖式形成為說明書的一部分。
第1圖是根據示例性實施例之包括記憶體控制器的各種元件之記憶體系統之方塊圖。
第2A圖示意記憶體的資料讀取。
第2B圖示意根據示例性實施例之記憶體的資料讀取。
第3A圖和第3B圖示意根據示例性實施例
之跨複數個記憶體區域來讀取資料。
第4圖示意根據實施例之用於從複數個記憶體裝置讀取資料之示例性流程圖。
第5圖是用於實現各種實施例之示例性電腦系統。
在圖式中,相同的符號一般表示相同或相似之元件。此外,一般而言,符號最左邊的數字標識該符號第一次出現的圖式。
應當注意的是,在此描述之各種實施例及其相關的圖式係提供作為示例。因此,所屬技術領域中具有通常知識者應當理解,參照的特定記憶體位址、快取線的數目、以及不同構件或產生的信號上的符號並不意在限制本發明之範圍或精神。
第1圖是示例記憶體系統100的方塊圖,根據實施例,記憶體系統100包括在主機CTRL區塊104與複數個記憶體裝置108之間接收和傳送信號之記憶體控制器102。根據一些實施例,主機CTRL區塊104亦可為記憶體控制器102的一部分。主機CTRL區塊104包括能跨越主機匯流排從主機CPU(未示出)接收一或多個請求以存取多個記憶體裝置108之電力(electrical)電路及/或構件。在另一實施例中,主機CTRL區塊104可以接收來自快取記憶體控制器之一或多個請求以存取資料並填充部份快取。資料存取可能涉及一或多個讀取請求以擷取儲存在該複數
個記憶體裝置之一或多個中的資料,或者資料存取可能涉及一或多個寫入請求以將資料儲存在該複數個記憶體裝置之一或多個中。在另一例子中,所述存取可能涉及擦除儲存在該複數個記憶體裝置之一或多個中的資料。主機CTRL區塊104係接收一或多個資料請求並提供一或多個資料信號到記憶體控制器102。
提供給記憶體控制器102之資料信號可包括一指定要被存取的記憶體快取線的位元組大小之wrap_size信號。例如,但不限於,所述位元組大小可為32或64位元組。該資料信號亦包括一包括用於要被存取的資料的位址之adr_dat信號。該adr_dat信號可包括關聯於要被存取的資料的起始位址及資料長度之資料。如果來自CPU的請求係一寫入請求,則發送到記憶體控制器102之資料信號還包括一包括要被寫入到所述記憶體的資料之wdat_dat信號。
根據實施例,記憶體控制器102係接收由主機CTRL區塊104提供之各種資料信號,並適當地控制對通過處理器106的複數個記憶體裝置108之存取。記憶體控制器102可包括解碼器110、狀態機118、TX計數器114、RX計數器116、RX先進先出(FIFO)120、TX FIFO 122、以及處理器106。根據實施例,記憶體控制器102包括合併檢測模組112。
解碼器110可包括電力電路及/或構件,能產生適當的記憶體位址(address)和長度(length)信號以及一
指示資料讀取或資料寫入發生之rw信號。解碼器110亦可為能產生一指示在複數個記憶體裝置108的記憶體區域之資料讀取為繞回讀取(wrapped read)或連續讀取(continuous read)之類型(type)信號。繞回讀取與連續讀取之區別將在後續參考第2和3圖時更詳細地描述。
狀態機118可包括電力電路及/或構件,能從複數個記憶體裝置108到CPU主機傳送存取,並控制資料從複數個記憶體裝置108讀取或寫入時之時間。例如,狀態機118可以產生一rd_start信號以開始一個從複數個記憶體裝置108之資料讀取程序或一wr_start信號以開始一個至複數個記憶體裝置108之資料寫入程序。狀態機118亦可在所有要求的資料已被讀取(或寫入)時返回一adr_rd_en信號。
TX計數器114和RX計數器116可包括電力電路及/或構件,能向下計數要被寫入至或讀取來自複數個個記憶體裝置108之給定記憶體區域的資料之長度。例如,當要被寫入至給定的記憶體區域之資料的已計數長度達到零時,TX計數器114可以生成tx_end信號。在另一例子中,當要被從給定的記憶體區域讀取之資料的已計數長度達到零時,RX計數器116可以生成rx_end信號。另外,RX計數器116還可接收一指示記憶體何時從給定的記憶體區域被讀出之rx_en信號。
RX FIFO 120和TX FIFO 122可包括電力電路和/或構件,能緩衝傳送在複數個記憶體裝置108與主機
CTRL區塊104之間的資料。例如,RX FIFO 120可自複數個記憶體裝置108接收要被讀取之資料(dq_in)以及在傳送至主機CTRL區塊104(如rxfifo_dout)前提供資料的臨時緩衝。同樣,TX FIFO 122可以自主機CTRL區塊104接收要被寫入之資料(wdat_dat)以及在傳送至處理器106(如dq_out)前提供資料的臨時緩衝。於一例子中,資料的緩衝引起資料傳輸之延遲或改變資料之信號特性。
處理器106可設計用來至少控制記憶體控制器102中之各種構件。例如,處理器106接收來自記憶體控制器102的構件輸出之各種信號,且依序經由記憶體匯流排與複數個記憶體裝置108通信。處理器106可進一步設計成提供從複數個記憶體裝置讀取之資料,如dq_in。根據實施例,處理器106執行在複數個記憶體裝置108與記憶體控制器102之間的指定的匯流排協定。
根據實施例,合併檢測模組112包括電力電路和/或構件,能確定何時資料正被存取跨過彼此鄰近的複數個記憶體區域。合併檢測模組112可使用從接收到之一或多個讀取請求的adr_dat,以確定是否所述資料請求存在跨複數個記憶體裝置108中的具有鄰近位址之多個記憶體區域。於一例子中,當要被存取的資料存在彼此相鄰的兩個記憶體位址中時,在從第一記憶體區域中讀取資料完成之後,合併檢測模組112斷言一合併(merge)信號。所述合併信號的斷言使得RX計數器116以第二記憶體區域的長度被更新,且讀取操作繼續第二記憶體區域。複數個記憶
體裝置108之多個鄰近記憶體區域可以這種方式被讀取。在實施例中,在多個相鄰的記憶體區域之間讀取資料之此程序會發生,而不需要記憶體控制器102以執行該資料的多個讀取請求。例如,儘管多個讀取請求是由記憶體控制器102從主機CTRL區塊104接收,以在跨多個記憶體區域中存取資料,合併檢測模組112設計為合併這些多個讀取請求為一由記憶體控制器102之構件執行的資料之第一讀取請求。減少讀取請求之數目係減少用於存取在複數個記憶體裝置108之資料的潛伏(latency)。在另一例子中,合併檢測模組112設計成合併所述多個讀取請求為兩個讀取請求:用於使用繞回讀取讀取第一記憶體區域之一個讀取請求,用於使用連續讀取讀取任何附加記憶體區域之另一個讀取請求。繞回讀取和連續讀取的差異將更詳細地描述在下面參考第2和3圖。
第2A圖示意跨一個以上的記憶體區域之讀取資料的方法。各記憶體區域可被繞回邊界201a-c隔開。在實施例中,各記憶體區域包含要被寫入至記憶體快取之相關聯的快取線的資料。在此例子中,要被存取的資料開始於在第一記憶體區域MA0中的位址C,並延伸至在第二記憶體區域MA1(以十六進位格式定址)內的位址16。如果資料是從MA0的位址C讀取至MA1的位址16,則該資料被存取開始於位址C(接在從接收請求至讀取資料的延遲之後),並讀取前進直到抵達繞回邊界201b為止。每個繞回邊界201a-c可形成給定記憶體區域之開始或結束。此
外,繞回邊界201b可作為第一記憶體區域(MA0)之結束與相鄰的第二記憶體區域(MA1)之開始。每個黑點可代表新存取的開始以讀取資料。在記憶體區域內的某處開始資料之讀取係已知為未對齊讀取,而對齊讀取開始於繞回邊界。
一旦已經達到繞回邊界201b,資料被讀取開始回到MA0的繞回邊界201a。這就是所謂的資料的繞回讀取。一旦MA0的繞回讀取已經完成,晶片選擇信號會被解除斷言(de-assert)且必須被重新斷言(re-assert)以於繞回邊界201b開始而開始讀取下一記憶體區域MA1。這個過程,伴隨著由記憶體控制器執行之其他操作以初始化在下一記憶體區域MA1中資料的讀取,係導致如第2A圖所示的延遲。一旦用於讀取資料之位址已被正確地初始化,在MA1中讀取資料係開始於繞回邊界201b並繼續至繞回邊界201c。MA0和MA1的各讀取操作被認為是繞回讀取,其中MA0之繞回讀取為未對齊且MA1之繞回讀取為對齊。
根據實施例,第2B圖示意跨越超過一個記憶體區域讀取資料的方法。要被存取的資料起始於在記憶體區域MA0內的位址C且延伸至記憶體區域MA1內的位址16。每個記憶體區域MA0和MA1可以包括32或64位元組之資料。其他的資料大小也是可能的。在實施例中,每個記憶體區域包含被寫入到快取的相關聯快取線之資料。
根據實施例,繞回讀取發生起始於MA0的位址C,且於達到繞回邊界201b時回繞至繞回邊界201a。接著,當所有的MA0的資料已被讀取時,自動讀取資料開
始於繞回邊界201b且連續至繞回邊界201c。以此方式,MA1的所有資料以連續方式被讀取開始於其繞回邊界201b且結束於邊繞回界201c。根據實施例,第2A圖中示意在兩個記憶體區域MA0與MA1之間的資料之讀取未被延遲。
返回參考第1圖,合併檢測模組112可檢測到要被存取的資料橫跨兩個相鄰的記憶體區域(第2B圖之MA0和MA1)。根據一例子,合併檢測模組112合併兩個已接收的讀取請求(用於MA0和MA1的資料)成單一讀取請求。根據實施例,該單一讀取請求更新要被讀取之資料的長度以延伸橫跨兩個記憶體區域且不需由記憶體控制器102所執行之兩個單獨讀取操作。正因如此,如第2B圖中所示之從MA0讀取資料及從MA1讀取資料之間大致上沒有延遲。於一例子中,合併檢測模組112直到所有的資料從MA0被讀取才等待,以便合併一或多個已接收的讀取請求為用於跨MA0與MA1的資料之單一讀取請求。
根據實施例,資料之連續讀取可延伸到超出MA0之外的多個記憶體區域。根據一些實施例,第3A和3B圖示意資料是跨三個記憶體區域被讀取之例子。如第3A圖所示,延遲仍顯示在MA0和MA1之資料的讀取之間,但是,根據實施例,沒有延遲在附加相鄰記憶體區域(例如,記憶體區域MA1至MA2)之資料的讀取之間。第3A圖所示之情形可發生於,當使用合併檢測模組112將多個讀取請求合併成兩個讀取請求,一個用於第一記憶體區域
MA0且另一個讀取任何附加的相鄰記憶體區域時。在執行目前記憶體區域的繞回讀取之後無法開始其在下一記憶體區域的讀取,此可利用特別記憶體結構來執行。根據實施例,第3B圖示意使用在給定記憶體區域的繞回讀取之後能立即且自動地讀取下一個繞回邊界之記憶體的情況。
同時在第3A和3B圖中,要被存取之資料開始於記憶體區域MA0的位址C且延伸至記憶體區域MA2的位址2A。發生在MA0的繞回讀取係開始於位址C且在繞回邊界301b回繞。根據實施例,一旦該繞回讀取完成且已經回到位址B,下一個相鄰記憶體區域MA1之連續讀取則開始於繞回邊界301b。連續讀取開始於延遲以及新存取請求之後,如第3A圖中所示,但開始幾乎立刻如第3B圖所示。由於要被存取之資料繼續超出MA1,根據實施例,同樣的連續讀取也繼續通過繞回邊界301c且讀取MA2之資料。
參照第1圖,合併檢測模組112可以檢測在第一記憶體區域的繞回讀取之後,何時需跨多個相鄰的記憶體區域之連續讀取。在另一例子中,合併檢測模組112檢測在接收多個讀取命令後且在從記憶體區域讀取任何資料前,何時用於鄰近記憶體區域之多個讀取命令可被合併成一或兩個讀取命令。於一實施例中,合併檢測模組112合併已接收的讀取命令為單一讀取命令,且該單一讀取命令執行第一記憶體區域之繞回讀取接著執行一或多個相鄰的記憶體區域之連續讀取(如第3B圖所示)。在另一實施例
中,合併檢測模組112合併接收到的讀取命令成第一讀取命令以執行第一快取線之繞回讀取、以及第二讀取命令以執行一或多個相鄰的記憶體區域之連續讀取(如第3A圖)。
第4圖示意根據實施例之用於跨複數個記憶體區域讀取資料之示例方法400。於例子中,可通過第1圖的記憶體控制器102中所示之構件來執行方法400的各個步驟。應當理解的是,亦可執行超出所說明的那些其他步驟。
在區塊402,記憶體控制器閒置且等待命令。
在區塊404,記憶體控制器檢查對於資料之一或多個讀取請求是否已經被接收。如果沒有,記憶體控制器因為區塊402的命令而繼續等待。如果其確實接收一或多個讀取請求,方法400繼續到區塊406。於例子中,各個接收的讀取請求係用於給定的記憶體區域之繞回讀取。
在區塊406,斷言晶片選擇(CS)信號並準備從複數個記憶體裝置108讀取資料。如參照第1圖先前描述,此準備可能涉及記憶體控制器102內的各種信號之斷言。於實施例中,如果所請求的資料橫跨在複數個記憶體裝置108內的相鄰記憶體區域,記憶體控制器102內的合併檢測模組112可合併對於資料之一或多個請求成對於資料之單一請求或兩個請求。
在區塊408中,根據實施例,執行第一記憶
體區域中之資料的繞回讀取。該繞回讀取可開始於要被存取的資料之第一記憶體位址。該繞回讀取可接著繼續至第一記憶體區域之第二繞回邊界,且繼續從第一記憶體區域之第一繞回邊界讀取。
在區塊410,根據實施例,根據是否從相鄰記憶體區域繼續讀取資料而作出決定。可在執行如區塊408所述的繞回讀取之後由合併檢測模組112作成該決定,或者可在如區塊404所述之接收一或多個讀取請求之後由合併檢測模組112作成該決定。如果要被讀取的下一個記憶體區域是不相鄰的,則方法400繼續到區塊412,其中晶片選擇信號(CS)被解除斷言。方法400中,然後返回到在區塊402之閒置狀態以等待另一讀取請求。
然而,如果要被讀取的下一個記憶體區域相鄰如在區塊410所確定的,根據實施例,則方法400繼續到區塊414。在區塊414,更新要被存取的下一個記憶體區域之長度,例如,透過計數器。於實施例中,因為在下一個記憶體區域內的全部資料將會被讀取,長度係指定每一個在下一個記憶體區域中要被存取的資料之位元。亦可更新長度以涵蓋被讀取之多個相鄰記憶體區域之資料。例如,如果讀取請求係接收以用於彼此相鄰的三個附加之記憶體區域,則可更新該長度一次以涵蓋所有三個記憶體區域的讀取。於另一個實施例中,在讀取現有記憶體區域之後,更新該長度以用於要被讀取的下一記憶體區域。
在區塊416,根據實施例,執行下一個記憶
體區域之連續讀取。連續讀取可開始於正被存取的記憶體區域之第一繞回邊界以及結束於正被存取的記憶體區域之第二繞回邊界。連續讀取可為於記憶體區域內的資料之對齊讀取。根據實施例,連續讀取存取整個記憶體區域,即使所請求之資料結束在該記憶體區域內的位址。一旦已讀取該記憶體區域,根據實施例,方法400返回到區塊410以確定是否所請求的資料位元在任何進一步相鄰記憶體區域中。
於另一實施例中,在區塊416中之連續係讀取完持有所請求的資料之所有相鄰記憶體區域且不只是一次一個記憶體區域。在這種情況下,在讀取完所有相鄰記憶體區域之後,沒有進一步的連續記憶體區域以存取,且方法400繼續至區塊412。
例如,使用一或多個已知的電腦系統,如第5圖所示之電腦系統500,可實現各種實施例。電腦系統500可為何能執行本文所述之功能的任何已知的電腦,例如可來自國際商業機器、蘋果、升陽、惠普、戴爾、索尼、東芝等之電腦。
電腦系統500包括一或多個處理器(亦稱為中央處理單元,或CPU),例如處理器504。處理器504係連接到通信基礎設施(或匯流排)506。
一或多個處理器504各可為圖形處理單元(GPU)。於實施例中,GPU為一個設計為在電子裝置上快速
處理計算密集型的應用程式之專門的電子電路(electronic circuit)之處理器。GPU可具有有效平行處理資料的大區塊之高度並行結構,如電腦圖形應用程式、圖像和視頻共有的數學密集型資料。
電腦系統500亦包括(多個)使用者輸入/輸出裝置503,如顯示器、鍵盤、指示裝置等等,其通過(多個)使用者輸入/輸出介面502與通信基礎設施506進行通信。
電腦系統500還包括主(或主要(primary))記憶體508,諸如隨機存取記憶體(RAM)。主記憶體508可包括快取的一或多個級別。主記憶體508中儲存有控制邏輯(即,電腦軟體)及/或資料。
電腦系統500還可包括一或多個次要(secondary)記憶體(或儲存裝置)510。次要記憶體510可包括,例如,硬碟驅動器512及/或可移動儲存驅動器(或裝置)514。可移動儲存驅動器514可為軟碟驅動器、磁帶驅動器、光碟驅動器、光學儲存裝置、磁帶備份裝置及/或任何其他儲存裝置/驅動器。
可移動儲存驅動器514可與可移動儲存單元518互相作用。可移動儲存單元518包括具有儲存電腦軟體(控制邏輯)及/或資料於其上之電腦可用或可讀儲存裝置。可移動儲存單元518可為軟碟、磁帶、光碟、DVD、光學儲存盤及/或任何其他電腦資料記憶體裝置。可移動儲存驅動器514以公知的方式讀取及/或寫入可移動儲存單元
518中。
根據示範性實施例,次要記憶體510可包括用於允許電腦程式及/或其他指令及/或資料通過電腦系統500存取之其他裝置、工具或其他方法。這類裝置、工具或其他方法可包括,例如,可移動儲存單元522和介面520。可移動儲存單元522和介面520之例子可包括程式盒式記憶體和盒式記憶體介面(可見于諸如在視頻遊戲設備中)、可移動記憶體晶片(諸如EPROM或PROM)以及相關的插槽、儲存棒和USB埠、儲存卡和相關聯的儲存卡插槽、及/或任何其他可移動儲存單元和相關聯的介面。
電腦系統500可進一步包括通信(或網路)介面524。通信介面524允許電腦系統500與遠端裝置、遠端網路、遠端實體等(如標記號碼528所引用的單獨地和共同地)之任何組合進行通信和互相作用。例如,通信介面524可允許電腦系統500與遠端裝置528通過通信路徑526,其可為有線及/或無線通信且其可包括局域網、廣域網、網際網路等之任意組合。控制邏輯及/或資料可經由通信路徑526被發送到和來自電腦系統500。
在實施例中,有形設備或製造的物品包括具有控制邏輯(軟體)儲存在其上之有形的電腦可用或可讀介質,此處也稱為電腦程式產品或程式記憶體裝置。此包括,但不限於,電腦系統500、主記憶體508、次要記憶體510及可移動儲存單元518和522,以及製造實施前述任何組合之有形物品。此控制邏輯,當由一或多個資料處理裝
置(如電腦系統500)執行時,使得這樣的資料處理裝置如此處所述的進行操作。
根據包含於本案揭露內容之教導,如何利用第5圖所示以外之資料處理裝置、電腦系統及/或電腦架構來製造和使用本發明對於相關技術領域中的技術人員是顯而易見的。特別是,實施例可利用本文所述以外的軟體、硬體和/或作業系統實現來操作。
應該理解的是,具體實施方式部分而非發明內容和摘要部分(如果有的話),係意圖用來解釋申請專利範圍。發明內容和摘要部分(如果有的話)可闡述一或多個但非全部由發明人所設想之本發明的所有示例性實施例,而且因此,並非意在以任何方式限制本發明或申請專利範圍。
雖然已參照示例性領域和應用的示例性之實施例於本文描屬本發明,但應當理解本發明並不限於此。其他實施例及其變型是可能的且係在本發明之範圍和精神內。例如,並且不限制本段的一般性,實施例也不限於軟體、硬體、韌體及/或圖式中示出及/或本文所描述之實體。此外,實施例(無論是否在此明確地描述)具有顯著實用至領域和應用超出本文所描述的實施例。
實施例已在本文中描述的功能構造塊來描述的特定功能及其關係的實現以及關係。為了描述的方便性這些功能組成模組的界限在此處被專門定義。替換的邊
界可以被定義為只要特定功能及其關係(或等同物)被適當地執行。此外,替代實施例可使用比本文所描述的不同排序執行功能塊、步驟、操作、方法等。
本文涉及的“一實施例”,“實施例”,“示例實施例”或類似之措辭係指所描述之實施例可以包括特定的特徵、結構或特性,但每個實施例不一定包括該特定特徵,結構或特性。此外,這樣的語句不一定是指同一實施例。此外,當特定特徵、結構或特性結合實施例進行了說明,將這些特徵、結構或特性包括至其他實施例中(無論本文是否明確提及或描述),此係在本領域技術人員之之示範圍內。
本發明之廣度和範圍不應限制於任何上述示例性實施例,而是應當僅根據申請專利範圍和它們的等同物來限定。
400‧‧‧方法
402至416‧‧‧步驟
Claims (18)
- 一種用於存取資料之電腦實現方法,係包括:接收對於跨儲存在記憶體之至少第一記憶體區域及第二記憶體區域的資料之一或多個請求;由至少一處理器執行該記憶體之該第一記憶體區域內的資料之繞回讀取;以及由該至少一處理器執行該記憶體之該第二記憶體區域內的資料之連續讀取,該第二記憶體區域相鄰於該第一記憶體區域,其中,該連續讀取係開始於該第二記憶體區域的第一邊界、且於該第一記憶體區域內的資料之該繞回讀取後自動執行。
- 如申請專利範圍第1項所述之電腦實現方法,進一步包括:繼續該記憶體之一或多個附加的相鄰記憶體區域內的資料之該連續讀取,其中該一或多個附加的相鄰記憶體區域內的資料之該連續讀取係於前一相鄰的記憶體區域內的資料之該連續讀取後自動發生。
- 如申請專利範圍第1項所述之電腦實現方法,其中,該接收係包括從主機的CPU接收對於資料之一或多個請求。
- 如申請專利範圍第1項所述之電腦實現方法,進一步包括:如果接收到的對於資料之請求多於一個,則將所接收之對於資料的請求合併成對於跨至少該第一記憶體區域和該第二記憶體區域的資料之單一請求。
- 如申請專利範圍第1項所述之電腦實現方法,進一步包括:確定所請求的資料是否跨儲存在該記憶體之複數個相鄰的記憶體區域。
- 如申請專利範圍第1項所述之電腦實現方法,其中,該接收係包括從快取記憶體控制器接收對於資料之一或多個請求。
- 如申請專利範圍第6項所述之電腦實現方法,進一步包括:藉由該至少一處理器,將至少該請求的資料傳送至該快取記憶體控制器。
- 如申請專利範圍第7項所述之電腦實現方法,其中,在該第一記憶體區域內的該資料係寫入至關聯於該快取記憶體控制器之快取的第一快取線,且該第二記憶體區域內的該資料係寫入至該快取的第二快取線。
- 一種系統,係包括:複數個記憶體裝置;以及記憶體控制器,耦合至該複數個記憶體裝置並用以:接收對於跨儲存在該複數個記憶體裝置之至少第一記憶體區域及第二記憶體區域的資料之一或多個請求,執行該第一記憶體區域內的資料之繞回讀取,執行該第二記憶體區域內的資料之連續讀取,該第二記憶體區域相鄰於該第一記憶體區域, 其中,該連續讀取係開始於該第二記憶體區域的第一邊界,其中,該複數個記憶體裝置係用以使得於執行該第一記憶體區域內的資料之該繞回讀取後,資料之該連續讀取自動開始於該第二記憶體區域的該第一邊界。
- 如申請專利範圍第9項所述之系統,其中,該記憶體控制器係進一步用以執行在一或多個附加的鄰近記憶體區域內的資料之連續讀取。
- 如申請專利範圍第9項所述之系統,其中,該記憶體控制器係用以從主機的CPU接收對於資料之該一或多個請求。
- 如申請專利範圍第9項所述之系統,其中,該記憶體控制器係用以從快取記憶體控制器接收對於資料之該一或多個請求。
- 如申請專利範圍第12項所述之系統,其中,該記憶體控制器係用以傳送至少該請求的資料至該快取記憶體控制器。
- 如申請專利範圍第13項所述之系統,其中,該快取記憶體控制器係用以將該第一記憶體區域內之該資料寫入至快取內的第一快取線,以及將該第二記憶體區域內之該資料寫入至該快取的第二快取線。
- 如申請專利範圍第9項所述之系統,其中,該記憶體控制器包括合併檢測模組,如果該記憶體控制器接收對於資料之請求超過一個,則該合併檢測模組係用以將對於 資料之該接收的請求合併成對於跨至少該第一記憶體區域及該第二記憶體區域的資料之單一請求。
- 如申請專利範圍第9項所述之系統,其中,該記憶體控制器包括合併檢測模組,該合併檢測模組係用以:確定該至少第一記憶體區域及第二記憶體區域是否相鄰;以及如果該至少第一記憶體區域及第二記憶體區域係確定為相鄰,則斷言合併信號以更新該請求的資料之讀取長度。
- 如申請專利範圍第16項所述之系統,其中,該記憶體控制器進一步包括計數器,該計數器係用以向下計數該讀取長度之長度。
- 一種具有指令儲存於其中之有形電腦可讀裝置,當藉由至少一計算裝置執行時,該指令使得該至少一計算裝置執行操作包括:接收對於跨儲存在記憶體之至少第一記憶體區域及第二記憶體區域的資料之一或多個請求;執行該記憶體之該第一記憶體區域內的資料之繞回讀取;以及執行該記憶體之該第二記憶體區域內的資料之連續讀取,該第二記憶體區域相鄰於該第一記憶體區域,其中,該連續讀取係開始於該第二記憶體區域的第一邊界、且在該第一記憶體區域內的資料之該繞回讀取後自動執行。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/188,048 | 2014-02-24 | ||
US14/188,048 US9792049B2 (en) | 2014-02-24 | 2014-02-24 | Memory subsystem with wrapped-to-continuous read |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201535412A true TW201535412A (zh) | 2015-09-16 |
TWI655642B TWI655642B (zh) | 2019-04-01 |
Family
ID=52821917
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW104105547A TWI655642B (zh) | 2014-02-24 | 2015-02-17 | 具有繞回性至連續性讀取之記憶體子系統 |
Country Status (7)
Country | Link |
---|---|
US (2) | US9792049B2 (zh) |
JP (1) | JP6523707B2 (zh) |
KR (1) | KR102180975B1 (zh) |
CN (1) | CN104866432A (zh) |
DE (1) | DE102015203202B4 (zh) |
GB (1) | GB2525713B (zh) |
TW (1) | TWI655642B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20150093004A (ko) * | 2014-02-06 | 2015-08-17 | 삼성전자주식회사 | 불휘발성 저장 장치의 동작 방법 및 불휘발성 저장 장치를 액세스하는 컴퓨팅 장치의 동작 방법 |
US10509589B2 (en) | 2014-09-15 | 2019-12-17 | Adesto Technologies Corporation | Support for improved throughput in a memory device |
US10761778B2 (en) * | 2018-10-31 | 2020-09-01 | International Business Machines Corporation | Aggregation of read requests requesting common data objects into a common read operation in a data storage system for improving throughput |
US11232039B2 (en) * | 2018-12-10 | 2022-01-25 | Advanced Micro Devices, Inc. | Cache for storing regions of data |
US11249913B2 (en) * | 2020-03-06 | 2022-02-15 | Macronix International Co., Ltd. | Continuous read with multiple read commands |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6425062B1 (en) * | 1999-09-14 | 2002-07-23 | Intel Corporation | Controlling burst sequence in synchronous memories |
JP3967921B2 (ja) * | 1999-11-16 | 2007-08-29 | 株式会社ルネサステクノロジ | データ処理装置及びデータ処理システム |
US6477082B2 (en) * | 2000-12-29 | 2002-11-05 | Micron Technology, Inc. | Burst access memory with zero wait states |
US6779074B2 (en) * | 2001-07-13 | 2004-08-17 | Micron Technology, Inc. | Memory device having different burst order addressing for read and write operations |
JP4656862B2 (ja) * | 2004-05-28 | 2011-03-23 | ルネサスエレクトロニクス株式会社 | 半導体装置 |
ITMI20041910A1 (it) * | 2004-10-08 | 2005-01-08 | Atmel Corp | Architettura di decodifica a colonne migliorata per memorie flash |
JP2006172240A (ja) * | 2004-12-17 | 2006-06-29 | Nec Corp | データ処理システム及びそのメモリ制御方法 |
US7376762B2 (en) * | 2005-10-31 | 2008-05-20 | Sigmatel, Inc. | Systems and methods for direct memory access |
JP2008059565A (ja) * | 2006-08-01 | 2008-03-13 | Nec Electronics Corp | バーストメモリアクセスを制御するメモリインターフェース装置及びその制御方法 |
JP5285102B2 (ja) * | 2011-03-09 | 2013-09-11 | ウィンボンド エレクトロニクス コーポレーション | 半導体記憶装置 |
JP5623677B2 (ja) * | 2012-06-28 | 2014-11-12 | 三菱電機株式会社 | リードリクエスト処理装置 |
-
2014
- 2014-02-24 US US14/188,048 patent/US9792049B2/en active Active
-
2015
- 2015-02-17 TW TW104105547A patent/TWI655642B/zh active
- 2015-02-20 GB GB1502853.3A patent/GB2525713B/en active Active
- 2015-02-20 JP JP2015031330A patent/JP6523707B2/ja active Active
- 2015-02-23 DE DE102015203202.7A patent/DE102015203202B4/de active Active
- 2015-02-24 KR KR1020150025999A patent/KR102180975B1/ko active IP Right Grant
- 2015-02-25 CN CN201510087363.8A patent/CN104866432A/zh active Pending
-
2017
- 2017-10-12 US US15/730,952 patent/US10331359B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
GB2525713B (en) | 2016-08-10 |
US9792049B2 (en) | 2017-10-17 |
TWI655642B (zh) | 2019-04-01 |
GB201502853D0 (en) | 2015-04-08 |
US10331359B2 (en) | 2019-06-25 |
KR102180975B1 (ko) | 2020-11-19 |
US20180081564A1 (en) | 2018-03-22 |
KR20150100565A (ko) | 2015-09-02 |
DE102015203202B4 (de) | 2023-04-06 |
CN104866432A (zh) | 2015-08-26 |
US20150242129A1 (en) | 2015-08-27 |
JP2015158910A (ja) | 2015-09-03 |
JP6523707B2 (ja) | 2019-06-05 |
GB2525713A (en) | 2015-11-04 |
DE102015203202A1 (de) | 2015-08-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10496281B2 (en) | Data storage device, data processing system and method of operation | |
US20190034364A1 (en) | Storage device for interfacing with host and method of operating the host and the storage device | |
US10331359B2 (en) | Memory subsystem with wrapped-to-continuous read | |
US10303366B2 (en) | Data storage device that divides and processes a command and data processing system including the same | |
US8145805B2 (en) | Method for re-sequencing commands and data between a master and target devices utilizing parallel processing | |
KR102498223B1 (ko) | Ufs 장치의 작동 방법, ufs 호스트의 작동 방법, 및 이들을 포함하는 시스템의 작동 방법 | |
US9690720B2 (en) | Providing command trapping using a request filter circuit in an input/output virtualization (IOV) host controller (HC) (IOV-HC) of a flash-memory-based storage device | |
US9632953B2 (en) | Providing input/output virtualization (IOV) by mapping transfer requests to shared transfer requests lists by IOV host controllers | |
US9747038B2 (en) | Systems and methods for a hybrid parallel-serial memory access | |
US20150346795A1 (en) | Multi-host power controller (mhpc) of a flash-memory-based storage device | |
US20170031632A1 (en) | Data storage device, method of operating the same, and data processing system including the same | |
US9733988B1 (en) | Systems and methods to achieve load balancing among a plurality of compute elements accessing a shared memory pool | |
US20080052424A1 (en) | Data access system, data access apparatus, data access integrated circuit, and data access method | |
US10564847B1 (en) | Data movement bulk copy operation | |
US11983115B2 (en) | System, device and method for accessing device-attached memory | |
US9280298B2 (en) | Storage device and storage system | |
US9753873B1 (en) | Systems and methods for key-value transactions | |
US20240256126A1 (en) | System and method for managing data access in distributed systems | |
US20140365744A1 (en) | Programmable Latency Count to Achieve Higher Memory Bandwidth | |
KR20230144434A (ko) | 호스트 장치의 동작 방법 및 스토리지 장치의 동작 방법 | |
JP2005267139A (ja) | ブリッジ装置 |