TWI833577B - 電腦系統,用於執行記憶體控制器上之資料處理之方法以及非暫時性電腦可讀儲存媒體 - Google Patents
電腦系統,用於執行記憶體控制器上之資料處理之方法以及非暫時性電腦可讀儲存媒體 Download PDFInfo
- Publication number
- TWI833577B TWI833577B TW112104569A TW112104569A TWI833577B TW I833577 B TWI833577 B TW I833577B TW 112104569 A TW112104569 A TW 112104569A TW 112104569 A TW112104569 A TW 112104569A TW I833577 B TWI833577 B TW I833577B
- Authority
- TW
- Taiwan
- Prior art keywords
- data
- request
- memory
- memory device
- processing
- Prior art date
Links
- 238000012545 processing Methods 0.000 title claims abstract description 103
- 238000000034 method Methods 0.000 title claims abstract description 50
- 230000000977 initiatory effect Effects 0.000 claims abstract description 8
- 238000004590 computer program Methods 0.000 abstract description 14
- 230000004044 response Effects 0.000 abstract description 10
- 230000008569 process Effects 0.000 description 28
- 238000004891 communication Methods 0.000 description 12
- 230000009471 action Effects 0.000 description 10
- 238000010586 diagram Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 230000001934 delay Effects 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 230000003190 augmentative effect Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 239000012634 fragment Substances 0.000 description 2
- 230000033001 locomotion Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 101100498818 Arabidopsis thaliana DDR4 gene Proteins 0.000 description 1
- 102100035964 Gastrokine-2 Human genes 0.000 description 1
- 101001075215 Homo sapiens Gastrokine-2 Proteins 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000000593 degrading effect Effects 0.000 description 1
- 230000026058 directional locomotion Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
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/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
-
- 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/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/161—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
- G06F13/1626—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by reordering requests
-
- 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/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/1647—Handling requests for interconnection or transfer for access to memory bus based on arbitration with interleaved bank access
-
- 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/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/1652—Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
- G06F13/1657—Access to multiple memories
-
- 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
- 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/18—Handling requests for interconnection or transfer for access to memory bus based on priority control
-
- 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/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/24—Handling requests for interconnection or transfer for access to input/output bus using interrupt
-
- 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/0604—Improving or facilitating administration, e.g. storage management
- G06F3/0605—Improving or facilitating administration, e.g. storage management by facilitating the interaction with a user or administrator
-
- 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/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C7/00—Arrangements for writing information into, or reading information out from, a digital store
- G11C7/10—Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
- G11C7/1015—Read-write modes for single port memories, i.e. having either a random port or a serial port
- G11C7/1042—Read-write modes for single port memories, i.e. having either a random port or a serial port using interleaving techniques, i.e. read-write of one part of the memory while preparing another part
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Memory System (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Retry When Errors Occur (AREA)
- Debugging And Monitoring (AREA)
- Communication Control (AREA)
- Credit Cards Or The Like (AREA)
Abstract
本發明揭示用於在一記憶體控制器上處理資料之方法、系統及設備,包含在電腦儲存媒體上編碼之電腦程式。該等方法之一者包括:獲得一第一請求及一第二請求以在複數個記憶體裝置之一第一記憶體裝置處存取對應於該第一請求及該第二請求之各自資料;及起始該各自資料之交錯處理;接收停止處理在該第一記憶體裝置處存取資料之請求且起始處理在一第二記憶體裝置處存取資料之請求之一指示;判定在接收該指示時尚未完全處理對應於該第一請求及該第二請求之該各自資料;及作為回應,將對應於尚未完全處理之該等請求之資料儲存於可供該記憶體控制器存取之記憶體中。
Description
本說明書係關於記憶體控制器。一記憶體控制器可為經組態以藉由從記憶體裝置讀取及寫入至記憶體裝置而存取資料之邏輯電路。記憶體控制器映射儲存於記憶體裝置中之資料且藉由所存取記憶體中之位址來識別資料。
取決於與記憶體控制器介接之記憶體裝置之類型(例如,DRAM裝置),記憶體控制器亦負責週期性地再新及維持記憶體中之資料且負責強制執行用於存取資料且由某些類型之記憶體裝置(例如,3D堆疊DRAM裝置)之硬體指定之某些資料存取約束。某些類型之記憶體裝置亦經受防止由記憶體控制器在連續時脈循環中存取相同裝置(或在一些情況中,相同裝置上之記憶體庫)之資料存取約束。儘管存在此等約束,3D堆疊DRAM裝置之價值在於其等優於其他類型之記憶體裝置之速度及降低功率消耗。
本說明書描述用於藉由一記憶體控制器處理資料之技術。一記憶體控制器接收從複數個記憶體裝置之一第一記憶體裝置存取及處理不同大小之資料之請求。控制器藉由產生在對應於兩個或兩個以上請求之資料之間交替之資料塊而處理對應於請求之資料。週期性地,記憶體控制器接收停止從一個記憶體裝置存取資料且開始在另一記憶體裝置處存取資料之指示。當記憶體控制器接收一指示時,該控制器判定是否尚未完全處理對應於所處理之當前請求之資料之剩餘部分,且作為回應,藉由將剩餘部分或其位址儲存於記憶體控制器內部之記憶體(例如,記憶體控制器內之SRAM表)中而「截去」剩餘部分。藉由截去剩餘部分,記憶體控制器可更高效地處理來自記憶體裝置之資料,尤其禁止在連續循環中存取一相同裝置或一裝置上之相同記憶體庫之記憶體裝置。
先前,在開始存取一第二記憶體裝置之前,記憶體控制器完成處理針對至一第一記憶體裝置之請求之資料之剩餘部分。此方法出現之一個問題係若請求之剩餘部分具有不同大小,則最終將在不具有一伴隨請求的情況下處理具有較長剩餘部分之請求。不交錯來自相同記憶體裝置之多個請求可在記憶體控制器之處理管線中導致閒置循環之「空泡(bubble)」。另外,閒置循環之空泡可轉化為一控制器與不同記憶體裝置之間的一資料通信匯流排之利用率之空泡,從而使效能降級。當一控制器嘗試在於相同記憶體裝置上讀取及寫入資料之間切換時出現類似空泡。
代替地,記憶體控制器繼續進行從一第二記憶體裝置存取資料,直至接收停止存取第二記憶體裝置且開始存取第一記憶體裝置之一指示。記憶體控制器判定從第一記憶體裝置存取之資料之一部分是否已在先前被「截去」且儲存於記憶體控制器內部之記憶體中。作為回應,記憶體控制器在從第一記憶體裝置接收新請求之前處理剩餘部分。
由於記憶體控制器強制執行約束以確保跨全部記憶體裝置均勻地存取資料,所以在接收停止存取第一記憶體裝置之一指示之後,記憶體控制器無法從第一記憶體裝置接收一新請求以伴隨較長請求之剩餘部分。此外,若記憶體控制器使請求在較長請求之資料與來自第二記憶體裝置之一請求之資料之間交替,則記憶體控制器將產生用於在隨後循環上存取不同記憶體裝置之循環空泡。共用相同資料通信匯流排之記憶體裝置架構(例如,3D堆疊記憶體裝置)之空泡更嚴重,此係因為在連續循環中無法存取不同記憶體裝置。
一般言之,本說明書中描述之標的物之一個發明態樣可體現在方法中,其等包含以下動作:在處理請求時,由記憶體控制器接收停止處理存取第一記憶體裝置之請求且起始處理存取複數個記憶體裝置之一第二記憶體裝置之請求之一指示。在接收指示之後,控制器判定尚未完全處理第一請求及第二請求,且作為回應,將識別對應於尚未完全處理之請求之資料之資料儲存於可供記憶體控制器存取之記憶體中。識別資料可為識別對應於儲存於一記憶體控制器中之尚未完全處理之一請求之資料之部分之一或多個記憶體位址。在一些實施方案中,識別資料係對應於尚未完全處理之請求之資料之剩餘部分。在該等實施方案中,剩餘部分經儲存於可供記憶體控制器存取之記憶體中。
此態樣之其他實施方案包含對應電腦系統、設備及記錄於一或多個電腦儲存裝置上之電腦程式,各經組態以執行該等方法之動作。
在儲存對應於來自第一記憶體裝置之請求之資料之剩餘部分之後,記憶體控制器開始處理對應於來自一第二記憶體裝置之請求之資料。記憶體控制器起始來自第二記憶體裝置之請求之交錯處理,直至接收停止從第二記憶體裝置存取資料之一第二指示。在接收第二指示之後,記憶體控制器判定是否尚未完全處理來自第二記憶體裝置之當前處理請求,且作為回應,將請求之剩餘部分儲存於記憶體中。替代地,記憶體控制器將對應於剩餘部分之位址儲存於記憶體控制器內部之記憶體中。
第二指示係記憶體控制器開始從另一記憶體裝置存取資料之一指示。例如,另一記憶體裝置可為第一記憶體裝置或複數個記憶體裝置之一第三記憶體裝置。若記憶體控制器接收開始從第一記憶體裝置存取資料之指示,則記憶體控制器判定是否已完全處理第一請求及第二請求,且若否,則恢復從先前儲存之剩餘部分開始之交錯處理。
若第二指示係記憶體控制器開始一第三記憶體裝置之一指示,則記憶體控制器開始存取儲存於第三記憶體裝置中之資料。在處理來自第三記憶體裝置之請求之資料時,記憶體控制器已儲存對應於來自第一記憶體裝置及第二記憶體裝置之請求之資料之剩餘部分。而且在處理來自第三記憶體裝置之資料時,記憶體控制器可接收一第三指示。第三指示係停止從第三記憶體裝置存取資料且開始從另一記憶體裝置(例如,第一記憶體裝置、第二記憶體裝置或一尚未存取之第四記憶體裝置)存取資料之一指示。
在一些實施方案中,記憶體控制器繼續處理請求之資料之剩餘部分直至完全處理該等請求之一者,而非在接收一指示之後截去且儲存兩個請求之資料。接著,記憶體控制器儲存其他請求之資料之剩餘部分或其對應位址。以此方式,記憶體控制器平衡記憶體裝置之間的切換,同時亦降低履行在記憶體控制器接收切換存取記憶體裝置之指示之前另外接近於完全處理之個別請求時之延時。
在一些實施方案中,記憶體控制器接收切換讀取/寫入模式之一指示,而非接收切換記憶體裝置之一指示。一些記憶體架構強加一約束以防止在連續循環中讀取及寫入資料(或反之亦然)。模式切換亦產生一循環空泡,在此期間,記憶體控制器未處理資料。藉由下文在本說明書中描述之相同技術,記憶體控制器可減少由於切換記憶體控制器上之讀取/寫入模式而導致之空泡數目。
本說明書中描述之標的物可在特定實施方案中實施以實現以下優點之一或多者。一記憶體控制器可更高效地處理針對複數個記憶體裝置上之不同大小之資料之請求。一般言之,經組態以處理混合大小之請求之任何記憶體控制器可藉由實施本說明書之技術而受益於改良頻寬利用率。可藉由減少閒置循環之空泡而更高效地存取禁止對相同裝置及/或記憶體庫進行連續資料存取之記憶體架構(例如,高頻寬記憶體)。平均而言,由於頻寬利用率較高,資料擷取之延時降低。由於較高頻寬使用率,可以一較高平均速率處理請求且減少排隊閒置之時間。
現有控制器可以最小修改擴增以實施如本說明書中描述之用於處理請求之邏輯。可實現此等改良,而無關於請求之資料之性質或由目標裝置針對請求執行之處理之性質。被編寫來與記憶體裝置及控制器介接之現有軟體無需修改來實施此等技術。
在下文之附圖及描述中闡述本說明書之標的物之一或多個實施方案之細節。從描述、圖式及發明申請專利範圍將變得明白標的物之其他特徵、態樣及優點。
相關申請案之交叉參考
本申請案根據35 U.S.C. § 119(e)規定主張2020年1月21日申請且以引用的方式併入本文中之美國專利申請案第62/964,031號之DATA PROCESSING ON MEMORY CONTROLLER之申請日期之權利。
圖1展示透過一資料通信匯流排120耦合至記憶體裝置110之一例示性記憶體控制器100。控制器100實施重排序控制器130、交錯控制器140及協定控制器150,其等之各者係經組態以執行下文詳細描述之各自操作之專用邏輯電路。另外,控制器100通信地耦合至一目標裝置160,該目標裝置160經組態以發送存取儲存於記憶體裝置110中之資料之請求且在執行對儲存於記憶體裝置110中之資料之處理之後接收記憶體控制器100之輸出。存取儲存於記憶體裝置110中之資料之請求包含讀取及寫入請求。由目標裝置160請求存取之資料可根據請求而變化大小。
記憶體控制器100可被實施為一處理單元上或其外之專用邏輯電路。在一些實施方案中,記憶體控制器100被實施為整合為一電腦之一處理單元之部分之一積體電路(一「晶片」)。處理單元可為任何適合類型之處理單元,例如一中央處理單元(CPU)、一圖形處理單元(GPU)、場可程式化閘陣列(FGPA)或特定應用積體電路(ASIC),諸如一張量處理單元(TPU)。
記憶體控制器100可被整合為充當一硬體加速器之一主機處理單元之一CPU之部分。一硬體加速器可具有用於在由硬體加速器處理資料之前對資料進行一般處理之一主機CPU。例如,主機CPU可負責接收作為包含主機CPU之一網路中之網路訊務接收之資料且負責將所接收資料串流傳輸至硬體加速器。如下文更詳細描述,在其中主機CPU實施記憶體控制器100之實施方案中,記憶體控制器對從記憶體裝置110接收之資料執行交錯處理,且根據在交錯輸出中交錯之請求而存取記憶體裝置110中之資料。
在本說明書中,一「記憶體裝置」係指經組態以儲存可由記憶體控制器100讀取或寫入之資料之一儲存裝置。一記憶體裝置被組織為一系列秩、庫、列及行。一記憶體裝置具有一或多個秩,且各秩表示複數個記憶體庫。各記憶體庫被分離為列及行,各表示記憶體可儲存於其中之裝置上之一實體位置。
在一些實施方案中,記憶體控制器在與實施一處理單元之一晶片分開之一晶片上實施,但透過實體連接(例如,一資料匯流排或實體連接,如電線)通信地耦合或以其他方式無線通信地耦合至記憶體裝置110。
記憶體控制器100可藉由根據標定資料之位置之庫、列及行之一位址方案引用待存取資料之位置之位址而存取儲存於一記憶體裝置中之資料。為易於說明,假定各記憶體裝置僅具有一個秩,但在一些實施方案中,位址方案亦在具有一個以上秩之一裝置上根據秩引用位置。庫之數目及是否可同時存取各庫取決於裝置之記憶體類型。
記憶體裝置110可被實施為:(i)由資料通信匯流排120通信地耦合之分開晶片;(ii)一單一晶片之部分;或(iii)兩者之一組合。記憶體110可為不同記憶體類型之裝置,例如一或多個DRAM、SRAM、電阻式RAM (ReRAM)、磁阻式RAM (MRAM)、鐵電RAM (FRAM)、自旋扭矩轉移MRAM (STT-MRAM)、相變記憶體(PCM)、雙倍資料速率記憶體(DDR,例如DDR4),包含圖形DDR記憶體(GDDR,例如GDDR5)及低功率DDR (LPDDR,例如LPDDR5)及導電橋RAM (CBRAM)。記憶體裝置110亦可包含非揮發性記憶體裝置。
在一些實施方案中,記憶體裝置110之各者可使用一3D晶粒堆疊技術實體地彼此連接。記憶體裝置可根據任何適合技術堆疊,例如晶圓至晶圓接合或矽穿孔(TSV)。3D堆疊DRAM之一些實例包含高頻寬記憶體(HBM)及混合記憶體立方(HMC)。
3D堆疊記憶體裝置共用一相同資料通信匯流排以與一記憶體控制器通信,且對不同裝置之資料存取經串列化而非並行執行;記憶體裝置控制器110需要至少一個運算時間循環以將存取資料從一個記憶體裝置切換至另一記憶體裝置。記憶體控制器110透過其重排序控制器130經組態以週期性地從一個記憶體裝置切換至另一記憶體裝置以確保跨全部裝置存取及處理資料而非僅對一單一裝置。
記憶體裝置110儲存待由目標裝置160處理之資料。例如,資料可表示至一機器學習模型之輸入,目標裝置160經組態以處理該等輸入以產生一對應輸出。目標裝置160可為經組態以接收資料以作為由記憶體控制器100產生之一輸出進行處理之任何適合運算裝置。在一些實施方案中,目標裝置160係一硬體加速器,例如一TPU。
首先可根據一或多個用戶端電腦上之一用戶端應用程式將處理資料之請求載入至記憶體裝置110中。請求對應於待由目標裝置160處理之資料片段。請求可指定對應於請求之資料之大小。使用記憶體控制器100或藉由任何其他適合技術將對應於請求之資料載入至記憶體裝置110中。
記憶體控制器100之重排序控制器130經組態以獲得記憶體控制器100待處理之新請求。重排序控制器130可使用任何適合技術來選擇待由記憶體控制器100處理之新請求。一般言之,重排序控制器130可將由目標裝置160接收之請求儲存為一請求「集區」,例如實施為一佇列或一映射表。
重排序控制器130可應用任何適合技術來判定從集區選擇哪些請求。例如,重排序控制器130可應用一先進先出或先進後出方法來選擇新請求。在一些實施方案中,重排序控制器130根據各請求之優先等級來選擇新請求。優先等級可由使用者指派、由目標裝置160指派、由重排序控制器130或通信地耦合至控制器100之其他系統指派或前述之某一組合。重排序控制器130亦負責強制執行對應於記憶體裝置110之資料存取約束及控制器約束。
一控制器約束係指記憶體裝置110憑藉其硬體對資料存取(即,從記憶體裝置110及至記憶體裝置110之資料讀取或寫入)強加之一約束。另一控制器約束係記憶體控制器100無法在連續循環中存取一記憶體裝置之相同庫之不同列之一約束。一資料存取約束係記憶體控制器100週期性停止從一個記憶體裝置存取資料且開始從另一記憶體裝置存取資料之一時序。資料存取約束確保由記憶體控制器100週期性地存取全部記憶體裝置(鑑於存在對該等記憶體裝置之待決請求)。
記憶體控制器100之交錯控制器140經組態以執行對應於由重排序控制器130選擇之請求之資料之交錯處理。交錯處理係指由記憶體控制器100執行之藉由在交錯請求之間交替而存取記憶體裝置110中之資料之程序。記憶體控制器100產生一均勻大小之資料塊之一交錯輸出。例如,記憶體控制器可產生在對應於第一請求、第二請求及第三請求之資料之間交替之32位元組塊之一交錯輸出,且記憶體控制器根據交替交錯輸出來處理請求。藉由交錯對應於兩個或兩個以上請求之資料,記憶體控制器可在經組態以無法由記憶體控制器在連續循環中讀取或寫入之記憶體裝置中更高效地服務請求。在不交錯的情況下,當一記憶體控制器等待一或多個循環才能夠再次從相同記憶體裝置讀取或寫入至相同記憶體裝置時,浪費「空泡」或閒置時脈循環。在一些實施方案中,記憶體裝置實施多個記憶體庫,其中禁止記憶體控制器在連續時脈循環中從相同記憶體庫讀取或寫入至相同記憶體庫。
記憶體控制器100之協定控制器150經組態以與目標裝置160介接以根據由控制器100處理之交錯輸出存取記憶體裝置110上之資料。在協定控制器150根據交錯輸出之請求存取資料時,協定控制器150可將所存取資料串流傳輸至目標裝置160。雖然在圖1中僅展示單一目標裝置160,但在一些實施方案中,協定控制器150經組態以將所存取資料串流傳輸至多個目標裝置,從而應用任何適合技術來跨多個裝置之各者同步或不同步地分佈控制器輸出。在一些實施方案中,各目標裝置接收相同輸出。替代地,在由記憶體控制器100串流傳輸出所存取資料時,各目標裝置接收所存取資料之一部分。
在一些實施方案中,在記憶體控制器交替來自記憶體裝置110之資料塊時,將交錯資料串流傳輸至目標裝置160。藉由將資料串流傳輸至目標裝置160,目標裝置160可更早地開始處理資料塊且無需等待記憶體控制器完成對應於所接收請求之交錯輸出。
圖2係用於在一記憶體控制器上處理資料之一例示性程序200之一流程圖。為方便起見,程序200將被描述為由經組態以根據本說明書從複數個記憶體裝置讀取及寫入至複數個記憶體裝置之一記憶體控制器執行。例如,圖1之記憶體控制器100 (經適當程式化)可執行程序200。
記憶體控制器獲得210存取複數個記憶體裝置之一第一記憶體裝置之一第一請求及一第二請求。請求指定待由記憶體控制器存取之不同大小(例如範圍係從32個位元組至512個位元組)之資料,但特定大小可根據實施方案而變化。
記憶體控制器經組態以藉由交替存取儲存於相同記憶體裝置之不同庫上之資料而減少存取第一記憶體裝置之循環數目。
記憶體控制器起始第一請求及第二請求之交錯處理220。在記憶體控制器接收停止處理請求之一指示之前,記憶體控制器經組態以不斷使用對應於新請求且從第一記憶體裝置存取之資料替換經處理請求。由於第一請求及第二請求無需係相同大小,所以記憶體控制器通常將在較短請求與一較長請求交錯時完成對較短請求之處理,且開始將較長請求之剩餘部分與一新請求之對應資料交錯。取決於記憶體裝置之硬體規格,記憶體控制器選擇對應於儲存於第一記憶體裝置之一記憶體庫上之資料之新請求,其不同於仍在處理之較長請求。
在處理第一請求及第二請求時,記憶體控制器接收230停止存取第一記憶體裝置且開始存取一第二記憶體裝置之一指示。在切換至另一記憶體裝置之前,記憶體控制器可維持用於在一預定時間週期內存取複數個記憶體裝置之一記憶體裝置之一資料存取約束。控制器待存取之隨後控制器裝置可為並非第一記憶體裝置之任何記憶體裝置。控制器可隨機地或藉由任何其他適合方法(例如,藉由對應於記憶體裝置之各者之識別符循序地)選擇下一記憶體裝置。
記憶體控制器判定240在接收指示時是否尚未完全處理第一請求及第二請求之一者或兩者。未完全處理意謂在記憶體控制器接收指示時,第一請求、第二請求或兩個請求之資料之一些剩餘部分尚未由記憶體控制器交錯。
回應於判定仍存在對應於第一請求或第二請求之資料之一剩餘部分,記憶體控制器儲存250識別對應於尚未完全處理之請求之資料之資料。在一些實施方案中,識別資料係對應於尚未完全處理之第一請求及第二請求之資料之剩餘部分。在一些實施方案中,記憶體控制器儲存對應於剩餘部分在第一記憶體裝置中之位置之一或多個記憶體位址而非儲存剩餘部分。實際上,記憶體控制器「截去」對應於在接收指示時正在處理之請求之資料之剩餘部分以隨後在記憶體控制器切換回至第一記憶體裝置時返回。
記憶體控制器開始存取260複數個記憶體裝置之第二記憶體裝置。控制器開始交錯來自對應於儲存於第二記憶體裝置上之資料之請求之資料塊,直至接收停止存取第二記憶體裝置之一指示。
此時,從記憶體控制器接收之停止存取第二記憶體裝置之指示亦可為針對以下任一項之指示:(i)開始在第一記憶體裝置處存取資料;或(ii)開始在複數個記憶體裝置之一第三記憶體裝置處存取資料。無論指示是否對應於上文(i)或(ii),記憶體控制器藉由判定在接收指示時是否已完全處理該等請求之資料而對指示作出回應。若否,則記憶體控制器儲存識別對應於該等請求之資料之資料(作為尚未完全處理之剩餘部分或作為對應於剩餘部分之位址)。
若記憶體控制器接收開始在第一記憶體裝置處存取資料之一指示,則記憶體控制器接著判定是否將對應於存取第一記憶體裝置之請求之資料之部分儲存於記憶體中。若是,則記憶體控制器藉由首先處理先前判定為已儲存之資料之剩餘部分而恢復處理。
若記憶體控制器接收開始在一第三記憶體裝置處存取資料之一指示,則記憶體控制器開始存取資料以處理第三記憶體裝置。記憶體控制器繼續存取第三記憶體裝置直至接收一指示,該指示將針對一先前存取裝置(即,第一記憶體裝置或第二記憶體裝置)或針對先前未由記憶體控制器存取之一第四裝置。
儘管上文描述假定記憶體控制器每次針對各記憶體裝置交錯來自兩個請求之資料,然在一些實施方案中,本說明書中描述之技術經擴展用於對應於相同記憶體裝置之任意數目個請求。在該等實施方案中,記憶體控制器在各請求之間交替之輸出中交錯資料塊,例如來自一第一請求、一第二請求、一第三請求、返回至第一請求等之資料。
圖3係藉由一記憶體控制器跨兩個記憶體裝置處理資料之一圖解。列310及列320表示由記憶體控制器在一時間週期內接收之對應於不同記憶體裝置之資料。列330表示由記憶體控制器使用列310及320中繪示之資料產生之交錯輸出。
請求312及314分別係處理來自一第一記憶體裝置之一第一記憶體庫及一第二記憶體庫之資料之請求。請求312之資料由列310中之右對角線表示,而請求314之資料由列320中之左對角線表示。為簡明起見,圖3中展示之請求以一各自參考數字開始及結束,從而表示對應於請求之資料片段之開端及尾端。
請求316及318分別係存取來自一第二記憶體裝置之一第一記憶體庫及一第二記憶體庫之資料之請求。請求316之資料由列310中之水平線表示,而請求318之資料由列320中之垂直線表示。
參考圖3中繪示之時間線340中之時間t
0,記憶體控制器首先接收請求312及314且開始對應資料之交錯處理。從時間t
0至時間t
1,記憶體控制器處理來自請求312及314之資料,從而導致如列330之片段中展示之交替資料塊,直至時間t
1。在時間t
1,記憶體控制器接收停止存取第一記憶體裝置且開始存取第二記憶體裝置之一指示。記憶體控制器從控制器在時間t
1正在處理之請求312及314判定是否存在待處理之剩餘資料。在此情況中,請求314及請求312兩者皆存在一剩餘部分350。記憶體控制器將剩餘部分350儲存於可供控制器存取之記憶體352中,且繼續進行存取及處理來自第二記憶體裝置之資料。開始於時間t
1且直至時間t
2,記憶體控制器處理對應於請求316及318之資料。圖解中在時間t
2之前的點表示t
1與t
2之間的時間經過。
在時間t
2,記憶體控制器接收停止從第二記憶體裝置存取資料且開始存取第一記憶體裝置之一指示。若記憶體控制器判定在時間t
2處理之請求尚未完全處理,則記憶體控制器將儲存來自第二記憶體裝置之請求之剩餘部分。在切換回至第一記憶體裝置之後,記憶體控制器判定在時間t
1發生第一次切換時是否存在未處理之一剩餘資料部分。在此實例中,記憶體控制器判定其先前將剩餘部分350儲存於記憶體中,且從時間t
2開始,在從第一記憶體裝置接收新請求之前處理剩餘部分350。
在一些實施方案中,記憶體控制器在接收一指示之後推遲從一個記憶體裝置切換至另一記憶體裝置。代替地,記憶體控制器處理當前請求之剩餘部分直至完全處理該等請求之一者。接著,記憶體控制器在切換至所指示記憶體裝置之前儲存未完全處理之請求之剩餘部分。
藉由延遲切換直至完全處理該等請求之一者,記憶體控制器可減少完全處理之請求之處理延時,此係因為完全服務請求之資料可被發送回至目標裝置。在一些實施方案中,延遲切換直至僅完全處理該等請求之一者而非等待兩個請求可為有利的。此係因為一個請求可早在第二請求之前被完全處理,因此處理第二請求而無需交錯一隨後第三請求,從而導致浪費頻寬。
此問題在記憶體控制器在兩個以上記憶體裝置之間切換時或在請求係處理一特別大資料片段時更嚴重。在後者情況中,大資料片段之處理可因記憶體裝置切換而中斷多次,從而進一步延遲完全處理一請求之時間。
從一個資料源切換至另一源不限於在記憶體裝置之間切換。一般言之,上文描述之標的物可經實施以促進從一記憶體裝置內之庫或通道切換,或在其中記憶體控制器無法在背對背循環中連續從相同資料源讀取或寫入至相同資料源之任何經保存記憶體源之間切換。
圖4係用於藉由延遲至一不同記憶體裝置之切換而由一記憶體控制器處理資料之一例示性程序400之一流程圖。為方便起見,程序400將被描述為由經組態以根據本說明書從複數個記憶體裝置讀取及寫入至複數個記憶體裝置之一記憶體控制器執行。例如,圖1之記憶體控制器100 (經適當程式化)可執行程序400。
在接收停止從一第一記憶體裝置存取資料之一指示之後,記憶體控制器判定410尚未完全處理在接收指示時正在處理之請求之資料。
在判定尚未完全處理該等請求之資料之後,記憶體控制器視情況判定420當前正在處理之一第一請求之一剩餘部分短於亦在當前處理之一第二請求之一剩餘部分,例如藉由在處理請求時追蹤對應於各請求之資料之剩餘部分。一較短剩餘部分指示記憶體控制器將在較長部分之前完成對較短部分之處理。
在一些實施方案中,記憶體控制器繼續處理直至完全處理該等請求之一者之資料而非作出判定。作出判定容許記憶體控制器進一步判定其是否應完全延遲切換,如下文更詳細描述。替代地或另外,控制器經組態以在某一固定延遲(例如,數個反覆/循環或一時間週期)之後切換,或在某一動態調整延遲(例如,回應於針對各控制器裝置處理之記憶體控制器負載平衡請求之一經調整延遲)之後切換。
在判定對應於第一請求之資料之剩餘部分短於第二請求之剩餘部分之後,記憶體控制器處理430第一請求及第二請求直至完全處理該等請求之一者。在一些實施方案中,記憶體控制器判定剩餘部分之大小差異是否滿足一臨限值差異,且僅在其滿足臨限值時繼續進行處理較短剩餘部分。在一些實施方案中,若對應於各請求之資料之剩餘部分不滿足臨限值差異(例如,由於剩餘部分具有相同大小),則記憶體控制器藉由延遲記憶體裝置之切換直至較長剩餘部分而繼續進行處理兩個請求直至完成或「截去」兩個請求而不延遲記憶體裝置之切換。
記憶體控制器儲存440識別對應於尚未完全處理之請求之資料之資料。如上文參考圖2描述,記憶體控制器可將第二請求之資料之剩餘部分(在此實例中,首先完全處理第一請求)儲存於可供控制器存取之記憶體中,或記憶體控制器可儲存剩餘部分在對應記憶體裝置中之位置之一記憶體位址。
記憶體控制器開始在第二記憶體裝置處存取450資料。記憶體控制器處理資料(如上文參考圖2描述)直至接收停止在第二記憶體裝置處存取資料之一指示。在一些實施方案中,從記憶體控制器接收之指示係從讀取資料切換至寫入資料之一指示。
圖5係在一記憶體控制器延遲至一不同記憶體裝置之切換時由記憶體控制器跨兩個記憶體裝置處理資料之一圖解。列510及列520表示由記憶體控制器在一時間週期內接收之對應於不同記憶體裝置之資料。列530表示由記憶體控制器使用列510及520中繪示之資料產生之交錯輸出。
類似於上文圖3之描述,請求512及514係存取一第一記憶體裝置之資料之分別由右對角線及左對角線表示之請求。請求516及518係存取一第二記憶體裝置之資料之請求且分別由水平線及垂直線表示。為簡明起見,圖5中展示之請求以一各自參考數字開始及結束,從而表示對應於請求之資料之開端及尾端。
在時間t
0,記憶體控制器開始處理對應於請求512及514之資料。在時間t
1,記憶體控制器接收停止在第一記憶體裝置處存取資料之一指示。記憶體控制器判定存在仍待處理的請求512及514之資料之剩餘部分。從時間t
1至時間t
2,記憶體控制器處理請求512及514之資料之剩餘部分直至達到該等剩餘部分之一者之尾端。在時間t
2,記憶體控制器完全處理請求514之資料。接著,記憶體控制器保存對應於請求512之資料之一剩餘部分550。控制器將剩餘部分550儲存於可供控制器存取之記憶體552中。在一些實施方案中,控制器儲存剩餘部分550之位址而非儲存剩餘部分550。
從時間t
2至時間t
3,記憶體控制器藉由從第二記憶體裝置存取資料而處理請求516及518之資料。圖解中在時間t
3之前的點表示t
2與t
3之間的時間經過。
在時間t
3,記憶體控制器接收停止存取第二記憶體裝置且開始在第一記憶體裝置中存取資料之一指示。作為回應,記憶體控制器延遲從第二記憶體裝置切換且儲存在時間t
2處理之請求之剩餘部分(若存在)。接著,記憶體控制器判定是否儲存來自第一記憶體裝置之資料之一剩餘部分。在此情況中,記憶體控制器判定先前儲存剩餘部分550,且從剩餘部分550開始恢復處理。由於剩餘部分僅係一單一請求(請求512),所以記憶體控制器亦接收一新請求522以與剩餘部分550一起進行處理。
本說明書中描述之標的物以及動作及操作之實施例可在以下項中實施:數位電子電路、有形體現之電腦軟體或韌體、電腦硬體(包含本說明書中揭示之結構及其等結構等效物),或其等之一或多者之組合。本說明書中描述之標的物之實施例可被實施為一或多個電腦程式,例如在一電腦程式載體上編碼以由資料處理設備執行或控制資料處理設備之操作的電腦程式指令之一或多個模組。載體可為一有形非暫時性電腦儲存媒體。替代地或另外,載體可為一人工產生之傳播信號(例如,一機器產生之電信號、光學信號或電磁信號),該傳播信號經產生以編碼用於傳輸至適合接收器設備以由一資料處理設備執行之資訊。電腦儲存媒體可為一機器可讀儲存裝置、一機器可讀儲存基板、一隨機或串列存取記憶體裝置或其等之一或多者之一組合或可為其等之部分。一電腦儲存媒體並非係一傳播信號。
術語「資料處理設備」涵蓋用於處理資料之各種設備、裝置及機器,包含舉例而言一可程式化處理器、一電腦或多個處理器或電腦。資料處理設備可包含專用邏輯電路,例如一FPGA(場可程式化閘陣列)、一ASIC(特定應用積體電路)或一GPU (圖形處理單元)。設備除包含硬體之外,亦可包含產生用於電腦程式之一執行環境之程式碼,例如構成處理器韌體、一協定堆疊、一資料庫管理系統、一作業系統或其等之一或多者之一組合之程式碼。
可用任何形式之程式設計語言編寫一電腦程式,包含編譯或解譯語言或宣告或程序語言;且其可以任何形式部署,包含作為一獨立程式,例如作為一應用程式或作為一模組、組件、引擎、副常式或適用於在一運算環境中執行之其他單元,該環境可包含由一資料通信網路在一或多個位置中互連之一或多個電腦。
一電腦程式可(但未必)對應於一檔案系統中之一檔案。一電腦程式可儲存於保存其他程式或資料(例如,儲存於一標記語言文件中之一或多個指令檔)之一檔案之一部分中、儲存於專用於所述程式之一單一檔案中,或儲存於多個協同檔案(例如,儲存一或多個模組、子程式或程式碼之部分之檔案)中。
本說明書中描述之程序及邏輯流程可由一或多個電腦執行,該一或多個電腦執行一或多個電腦程式以藉由對輸入資料進行操作且產生輸出而執行操作。程序及邏輯流程亦可由專用邏輯電路(例如一FPGA、一ASIC或一GPU)或由專用邏輯電路與一或多個程式化電腦之一組合執行。
適用於執行一電腦程式之電腦可基於通用或專用微處理器或兩者或任何其他類型之中央處理單元。一般言之,一中央處理單元將從一唯讀記憶體或一隨機存取記憶體或兩者接收指令及資料。一電腦之基本元件係用於執行指令之一中央處理單元及用於儲存指令及資料之一或多個記憶體裝置。中央處理單元及記憶體可藉由專用邏輯電路補充或併入至專用邏輯電路中。
一般言之,一電腦亦將包含一或多個大容量儲存裝置或可操作地耦合至一或多個大容量儲存裝置,且經組態以從大容量儲存裝置接收資料或傳送資料至大容量儲存裝置。大容量儲存裝置可為例如磁碟、磁光碟或光碟或固態碟機。然而,一電腦未必具有此等裝置。而且,一電腦可嵌入另一裝置中,例如一行動電話、一個人數位助理(PDA)、一移動音訊或視訊播放機、一遊戲控制台、一全球定位系統(GPS)接收器或一可擕式儲存裝置(例如一通用串列匯流排(USB)快閃隨身碟)(此處僅列舉一些)。
為提供與一使用者之互動,本說明書中描述之標的物之實施例可在具有用於顯示資訊給使用者之一顯示裝置(例如,一LCD (液晶顯示器)或有機發光二極體(OLED)監視器、一虛擬實境(VR)或擴增實境(AR)顯示器)及使用者可藉由其提供輸入至電腦之一輸入裝置(例如,一鍵盤及一指標裝置(例如,一滑鼠、一軌跡球或觸控墊))或經組態以與其等通信之一或多個電腦上實施。其他類型之裝置亦可用於提供與一使用者之互動;例如,提供至使用者之回饋及回應可為任何形式之感覺回饋,例如視覺、聽覺、語音或觸覺;且來自使用者之輸入可經接收為任何形式,包含聲學、語音或觸覺輸入,包含觸摸運動或手勢、或動力運動或手勢或定向運動或手勢。另外,一電腦可藉由將文件發送至供一使用者使用之一裝置及從該裝置接收文件而與該使用者互動;例如,藉由回應於從一使用者之裝置上之一網頁瀏覽器接收之請求而將網頁發送至該網頁瀏覽器,或藉由與在一使用者裝置(例如,一智慧型電話或電子平板電腦)上運行之一應用程式互動。而且,一電腦可藉由將文字訊息或其他形式之訊息發送至一個人裝置(例如,運行一傳訊應用程式之一智慧型電話)且作為回報從使用者接收回應訊息而與使用者互動。
本說明書結合系統、設備及電腦程式組件使用術語「經組態以」。一或多個電腦之彼一系統經組態以執行特定操作或動作意謂該系統已在其上安裝在操作中使該系統執行操作或動作之軟體、韌體、硬體或其等之一組合。一或多個電腦程式經組態以執行特定操作或動作意謂一或多個程式包含在由資料處理設備執行時使該設備執行操作或動作之指令。彼專用邏輯電路經組態以執行特定操作或動作意謂該電路具有執行操作或動作之電子邏輯。
本說明書中描述之標的物之實施例可在一運算系統中實施,該運算系統包含一後端組件(例如,作為一資料伺服器),或包含一中介軟體組件(例如,一應用程式伺服器),或包含一前端組件(例如,一用戶端電腦,其具有一圖形使用者介面、一網頁瀏覽器或一應用程式,一使用者可透過其等與本說明書中描述之標的物之一實施方案互動)或一或多個此等後端組件、中介軟體組件或前端組件之任何組合。系統之組件可藉由任何形式或媒體之數位資料通信(例如,一通信網路)互連。通信網路之實例包含一區域網路(LAN)及一廣域網路(WAN) (例如,網際網路)。
運算系統可包含用戶端及伺服器。一用戶端及伺服器通常彼此遠離且通常透過一通信網路互動。用戶端與伺服器之關係憑藉運行於各自電腦上且彼此具有一用戶端-伺服器關係之電腦程式引起。在一些實施例中,一伺服器將資料(例如一HTML網頁)傳輸至一使用者裝置以用於例如將資料顯示給與裝置互動之一使用者(其充當一用戶端)且自該使用者接收使用者輸入。在使用者裝置處產生之資料(例如使用者互動之一結果)可在伺服器處自該裝置接收。
雖然本說明書含有許多特定實施方案細節,但此等不應被解釋為對由發明申請專利範圍本身所定義之所主張內容之範疇之限制,而應當被解釋為可特定於特定發明之特定實施例之特徵之描述。本說明書中在分開的實施例之內容脈絡中描述之某些特徵亦可在一單一實施例中組合地實施。相反地,在一單一實施例之內容脈絡中描述之各種特徵亦可單獨地或以任何適合子組合在多項實施例中實施。而且,儘管上文可將特徵描述為以特定組合起作用且甚至最初如此主張,但在一些情況中,來自所主張組合之一或多個特徵可從組合中免除,且發明申請專利範圍可係關於一子組合或一子組合之變動。
類似地,雖然按一特定順序在圖式中描繪且在發明申請專利範圍中敘述操作,但此不應被理解為要求按所展示之特定順序或循序順序執行此等操作或執行全部所繪示操作以達成所要結果。在某些境況中,多任務處理及並行處理可為有利的。再者,在上文描述之實施例中之各種系統模組及組件之分離不應被理解為在所有實施例中皆需要此分離,且應理解所描述之程式組件及系統可大體上一起整合於一單一軟體產品中或封裝至多個軟體產品中。
已描述標的物之特定實施例。其他實施例在以下發明申請專利範圍之範疇內。例如,在發明申請專利範圍中敘述之動作可按一不同順序執行且仍達成所要結果。作為一個實例,在附圖中描繪之程序不必要求所展示之特定順序或循序順序來達成所要結果。在一些情況中,多任務處理及平行處理可為有利的。
100:記憶體控制器
110:記憶體裝置
120:資料通信匯流排
130:重排序控制器
140:交錯控制器
150:協定控制器
160:目標裝置
200:程序
210:獲得
220:交錯處理
230:接收
240:判定
250:儲存
260:存取
310:列
312:請求
314:請求
316:請求
318:請求
320:列
330:列
340:時間線
350:剩餘部分
352:記憶體
400:程序
410:判定
420:判定
430:處理
440:儲存
450:存取
510:列
512:請求
514:請求
516:請求
518:請求
520:列
522:新請求
530:列
550:剩餘部分
552:記憶體
圖1展示透過一資料通信匯流排耦合至記憶體裝置之一例示性記憶體控制器。
圖2係用於在一記憶體控制器上處理資料之一例示性程序之一流程圖。
圖3係藉由一記憶體控制器跨兩個記憶體裝置處理資料之一圖解。
圖4係用於藉由延遲至一不同記憶體裝置之切換而由一記憶體控制器處理資料之一例示性程序之一流程圖。
圖5係在一記憶體控制器延遲至一不同記憶體裝置之切換時由記憶體控制器跨兩個記憶體裝置處理資料之一圖解。
在各個圖式中,相似元件符號及名稱指示相似元件。
200:程序
210:獲得
220:交錯處理
230:接收
240:判定
250:儲存
260:存取
Claims (20)
- 一種電腦系統,其包括:複數個記憶體裝置;一記憶體控制器,其經組態以從至少該複數個記憶體裝置讀取及寫入到至少該複數個記憶體裝置,且執行包括以下項之操作:在該複數個記憶體裝置之一第一記憶體裝置處獲得一第一請求及一第二請求,該第一請求以存取對應於該第一請求的一第一大小(size)之一第一資料,該第二請求以存取對應於該第二請求的一第二大小之一第二資料;起始對應於該第一請求及該第二請求之該各自資料之交錯(interleaved)處理,其中該交錯處理包括在存取對應於該第一請求之該第一資料塊(chunks of data)與存取對應於該第二請求之該第二資料塊之間交替(alternating);接收一指示以停止處理在該第一記憶體裝置處存取資料之請求且起始處理在該複數個記憶體裝置之一第二記憶體裝置處存取資料之請求;在接收該指示時判定對應於該第一請求及該第二請求之該各自資料尚未完全處理;及回應且針對該第一資料及該第二資料之剩餘部分執行操作,該執行包括:當該等剩餘部分滿足一準則時,繼續該交替處理,直到完全處理該第一資料及該第二資料之一較短者,且儲存該第一資料及該第二資料之一較長者之一新剩餘部分於記憶體中;及當該等剩餘部分不滿足該準則 時,儲存該第一資料及該第二資料之該等剩餘部分於記憶體中用於隨後在該第一記憶體裝置處恢復(resume)該等剩餘部分之該交錯處理,直到完全處理該第一資料及該第二資料之一較短者。
- 如請求項1之系統,其中對應於該第一請求及該第二請求之該各自資料之交錯處理包括產生一交錯輸出,該交錯輸出包括在對應於該第一請求之該等第一資料塊(the chunks of the first data)與對應於該第二請求之該等第二資料塊之間交替之資料塊。
- 如請求項1之系統,其中該準則包括針對兩個資料之該等剩餘部分之大小(size)之差異之一臨限值。
- 如請求項2之系統,其中該等操作進一步包括串流傳輸(streaming)該交錯輸出以存取儲存對應於在該交錯輸出中交錯之請求之資料之一或多個記憶體裝置。
- 如請求項2之系統,其中該交替輸出之該等資料塊係一均勻大小(uniform size)。
- 如請求項1之系統,其中該等操作進一步包括:在完全處理該第一資料及該第二資料之該較短者之後,在該第一記憶體裝置處起始以下的另一交替處理:(i)該第一資料及該第二資料之該較長者之一剩餘者,及(ii)對應於一各自請求之一新資料。
- 如請求項1之系統,其中該指示係一第一指示,及其中該等操作進一步包括:在該複數個記憶體裝置之該第二記憶體裝置處,獲得一第三請求及一第四請求,該第三請求以存取對應於該第三請求的一第三大小之一第三資料,該第四請求以存取對應於該第四請求的一第四大小之一第四資料;及起始對應於該第三請求及該第四請求之該各自資料之交替處理,其中該交替處理包括在存取對應於該第三請求之該第三資料塊與存取對應於該第四請求之該第四資料塊之間交替;從該記憶體控制器接收一第二指示以停止處理在該第二記憶體裝置處存取資料之請求且起始處理在該第一記憶體裝置處存取資料之請求;在接收該第二指示時判定對應於該第三請求及該第四請求之該各自資料尚未完全處理;及回應且根據一準則針對該第三資料及該第四資料之剩餘部分執行操作,該執行包括:當該等剩餘部分滿足該準則時,繼續該交替處理,直到完全處理該第三資料及該第四資料之一較短者,且儲存該第三資料及該第四資料之一較長者之一新剩餘部分於記憶體中;及當該等剩餘部分不滿足該準則時,儲存該第三資料及該第四資料之該剩餘部分於記憶體中用於隨後在該第二記憶體裝置處恢復該等剩餘部分之該交錯處理,直到完全處理該第三資料及該第四資料之一較短者。
- 如請求項7之系統,其中該等操作進一步包括:在從該記憶體控制器接收該第二指示之後,在該第一記憶體裝置處獲得一第五請求及一第六請求,該第五請求以存取對應於該第五請求的一第五大小之一第五資料,該第六請求以存取對應於該第六請求的一第六大小之一第六資料;及起始對應於該第五請求及該第六請求之該各自資料之交錯處理。
- 一種由經組態以從複數個記憶體裝置讀取及寫入至該複數個記憶體裝置之一記憶體控制器執行之方法,該方法包括:在該複數個記憶體裝置之一第一記憶體裝置處獲得一第一請求及一第二請求,該第一請求以存取對應於該第一請求的一第一大小之一第一資料,該第二請求以存取對應於該第二請求的一第二大小之一第二資料;及起始對應於該第一請求及該第二請求之該各自資料之交錯處理,其中該交錯處理包括在存取對應於該第一請求之該第一資料塊與存取對應於該第二請求之該第二資料塊之間交替;接收一指示以停止處理在該第一記憶體裝置處存取資料之請求且起始處理在該複數個記憶體裝置之一第二記憶體裝置處存取資料之請求;在接收該指示時,判定對應於該第一請求及該第二請求之該各自資料尚未完全處理;及回應且針對該第一資料及該第二資料之剩餘部分執行操作,該執行包括:當該等剩餘部分滿足一準則時,繼續該交替處理,直到完全處理該 第一資料及該第二資料之一較短者,且儲存該第一資料及該第二資料之一較長者之一新剩餘部分於記憶體中;及當該等剩餘部分不滿足該準則時,儲存該第一資料及該第二資料之該等剩餘部分於記憶體中用於隨後在該第一記憶體裝置處恢復該等剩餘部分之該交錯處理,直到完全處理該第一資料及該第二資料之一較短者。
- 如請求項9之方法,其中對應於該第一請求及該第二請求之該各自資料之交錯處理包括產生一交錯輸出,該交錯輸出包括在對應於該第一請求之該等第一資料塊與對應於該第二請求之該等第二資料塊之間交替之資料塊。
- 如請求項9之方法,其中該準則包括針對兩個資料之該等剩餘部分之大小之差異之一臨限值。
- 如請求項10之方法,其中該等操作進一步包括串流傳輸該交錯輸出以存取儲存對應於在該交錯輸出中交錯之請求之資料之一或多個記憶體裝置。
- 如請求項10之方法,其中該交替輸出之該等資料塊係一均勻大小。
- 如請求項9之方法,其進一步包括:在完全處理該第一資料及該第二資料之該較短者之後,在該第一記憶體裝置處起始以下的另一交替處理:(i)該第一資料及該第二資料之該較 長者之一剩餘者及(ii)對應於一各自請求之一新資料。
- 一或多種非暫時性電腦可讀儲存媒體,其或其等編碼有指令,該等指令在由經組態以從複數個記憶體裝置讀取及寫入至該複數個記憶體裝置之一記憶體控制器執行時使該記憶體控制器執行操作,該等操作包括:在該複數個記憶體裝置之一第一記憶體裝置處獲得一第一請求及一第二請求,該第一請求以存取對應於該第一請求的一第一大小之一第一資料,該第二請求以存取對應於該第二請求的一第二大小之一第二資料;及起始對應於該第一請求及該第二請求之該各自資料之交錯處理,其中該交錯處理包括在存取對應於該第一請求之該第一資料塊與存取對應於該第二請求之該第二資料塊之間交替;接收一指示以停止處理在該第一記憶體裝置處存取資料之請求且起始處理在該複數個記憶體裝置之一第二記憶體裝置處存取資料之請求;在接收該指示時判定對應於該第一請求及該第二請求之該各自資料尚未完全處理;及回應且針對該第一資料及該第二資料之剩餘部分執行操作,該執行包括:當該等剩餘部分滿足一準則時,繼續該交替處理,直到完全處理該第一資料及該第二資料之一較短者,且儲存該第一資料及該第二資料之一較長者之一新剩餘部分於記憶體中;及當該等剩餘部分不滿足該準則時,儲存該第一資料及該第二資料之該等剩餘部分於記憶體中用於隨後在該第一記憶體裝置處恢復該等剩餘部分之該交錯處理,直到完全處理該第一資料及該第二資料之一較短者。
- 如請求項15之一電腦可讀儲存媒體,其中對應於該第一請求及該第二請求之該各自資料之交錯處理包括產生一交錯輸出,該交錯輸出包括在對應於該第一請求之該等第一資料塊與對應於該第二請求之該等第二資料塊之間交替之資料塊。
- 如請求項15之電腦可讀儲存媒體,其中該準則包括針對兩個資料之該等剩餘部分之大小之差異之一臨限值。
- 如請求項16之電腦可讀儲存媒體,其中該等操作進一步包括串流傳輸(stream)該交錯輸出以存取儲存對應於在該交錯輸出中交錯之請求之資料之一或多個記憶體裝置。
- 如請求項16之一或多種非暫時性電腦可讀儲存媒體,其中該交替輸出之該等資料塊係一均勻大小。
- 如請求項15之電腦可讀儲存媒體,其中該等操作進一步包括:在完全處理該第一資料及該第二資料之該較短者之後,在該第一記憶體裝置處起始以下的另一交替處理:(i)該第一資料及該第二資料之該較長者之一剩餘者及(ii)對應於一各自請求之一新資料。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202062964031P | 2020-01-21 | 2020-01-21 | |
US62/964,031 | 2020-01-21 | ||
US16/930,172 US11137936B2 (en) | 2020-01-21 | 2020-07-15 | Data processing on memory controller |
US16/930,172 | 2020-07-15 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202324110A TW202324110A (zh) | 2023-06-16 |
TWI833577B true TWI833577B (zh) | 2024-02-21 |
Family
ID=73448809
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW109137559A TWI769567B (zh) | 2020-01-21 | 2020-10-29 | 記憶體控制器上之資料處理 |
TW112104569A TWI833577B (zh) | 2020-01-21 | 2020-10-29 | 電腦系統,用於執行記憶體控制器上之資料處理之方法以及非暫時性電腦可讀儲存媒體 |
TW111120556A TWI796233B (zh) | 2020-01-21 | 2020-10-29 | 電腦系統,用於執行記憶體控制器上之資料處理之方法以及非暫時性電腦可讀儲存媒體 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW109137559A TWI769567B (zh) | 2020-01-21 | 2020-10-29 | 記憶體控制器上之資料處理 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW111120556A TWI796233B (zh) | 2020-01-21 | 2020-10-29 | 電腦系統,用於執行記憶體控制器上之資料處理之方法以及非暫時性電腦可讀儲存媒體 |
Country Status (5)
Country | Link |
---|---|
US (3) | US11137936B2 (zh) |
EP (2) | EP3855317B1 (zh) |
DK (1) | DK3855317T3 (zh) |
FI (1) | FI3855317T3 (zh) |
TW (3) | TWI769567B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11321020B2 (en) * | 2020-09-18 | 2022-05-03 | Kioxia Corporation | System and method for multichip coherence with side-by-side parallel multiport operation |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5343455A (en) * | 1990-04-05 | 1994-08-30 | Hitachi, Ltd. | Digital signal overlapped or joined recording method and apparatus |
WO2012068494A2 (en) * | 2010-11-18 | 2012-05-24 | Texas Instruments Incorporated | Context switch method and apparatus |
US20160210050A1 (en) * | 2015-01-16 | 2016-07-21 | SanDisk Technologies, Inc. | Storage operation interrupt |
US9875156B2 (en) * | 2015-10-01 | 2018-01-23 | Sandisk Technologies Llc | Data storage device with a memory die that includes an interleaver |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1446723B1 (en) * | 2001-11-21 | 2007-07-18 | Interdigital Technology Corporation | Method employed by a base station for transferring data |
US20080250212A1 (en) * | 2007-04-09 | 2008-10-09 | Ati Technologies Ulc | Method and apparatus for accessing memory using programmable memory accessing interleaving ratio information |
CN102016809A (zh) | 2008-04-22 | 2011-04-13 | 松下电器产业株式会社 | 存储器控制装置、存储器系统、半导体集成电路和存储器控制方法 |
WO2010143209A1 (en) | 2009-06-10 | 2010-12-16 | Francesco Falanga | Suspension of memory operations for reduced read latency in memory arrays |
US8850103B2 (en) | 2009-08-28 | 2014-09-30 | Microsoft Corporation | Interruptible NAND flash memory |
US20120054455A1 (en) | 2010-08-31 | 2012-03-01 | Qualcomm Incorporated | Non-Uniform Interleaving Scheme In Multiple Channel DRAM System |
US9465735B2 (en) * | 2013-10-03 | 2016-10-11 | Qualcomm Incorporated | System and method for uniform interleaving of data across a multiple-channel memory architecture with asymmetric storage capacity |
CN105099599B (zh) * | 2014-04-16 | 2019-12-27 | 上海澜至半导体有限公司 | 交织、解交织方法以及相应的装置 |
US9851905B1 (en) * | 2016-09-29 | 2017-12-26 | Intel Corporation | Concurrent memory operations for read operation preemption |
-
2020
- 2020-07-15 US US16/930,172 patent/US11137936B2/en active Active
- 2020-10-29 TW TW109137559A patent/TWI769567B/zh active
- 2020-10-29 TW TW112104569A patent/TWI833577B/zh active
- 2020-10-29 TW TW111120556A patent/TWI796233B/zh active
- 2020-11-13 EP EP20207348.2A patent/EP3855317B1/en active Active
- 2020-11-13 FI FIEP20207348.2T patent/FI3855317T3/fi active
- 2020-11-13 EP EP23163764.6A patent/EP4224326A1/en active Pending
- 2020-11-13 DK DK20207348.2T patent/DK3855317T3/da active
-
2021
- 2021-06-15 US US17/348,558 patent/US11513724B2/en active Active
-
2022
- 2022-11-23 US US17/993,802 patent/US11748028B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5343455A (en) * | 1990-04-05 | 1994-08-30 | Hitachi, Ltd. | Digital signal overlapped or joined recording method and apparatus |
WO2012068494A2 (en) * | 2010-11-18 | 2012-05-24 | Texas Instruments Incorporated | Context switch method and apparatus |
US20160210050A1 (en) * | 2015-01-16 | 2016-07-21 | SanDisk Technologies, Inc. | Storage operation interrupt |
US9875156B2 (en) * | 2015-10-01 | 2018-01-23 | Sandisk Technologies Llc | Data storage device with a memory die that includes an interleaver |
Also Published As
Publication number | Publication date |
---|---|
US11748028B2 (en) | 2023-09-05 |
DK3855317T3 (da) | 2023-08-07 |
US20230161498A1 (en) | 2023-05-25 |
US20210223985A1 (en) | 2021-07-22 |
US20210311658A1 (en) | 2021-10-07 |
EP4224326A1 (en) | 2023-08-09 |
EP3855317B1 (en) | 2023-05-03 |
FI3855317T3 (fi) | 2023-07-26 |
TW202129502A (zh) | 2021-08-01 |
TW202236097A (zh) | 2022-09-16 |
US11137936B2 (en) | 2021-10-05 |
US11513724B2 (en) | 2022-11-29 |
TWI769567B (zh) | 2022-07-01 |
TW202324110A (zh) | 2023-06-16 |
EP3855317A1 (en) | 2021-07-28 |
TWI796233B (zh) | 2023-03-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI629686B (zh) | 用於同時存取非揮發性記憶體之多個分區之裝置及方法 | |
US9851905B1 (en) | Concurrent memory operations for read operation preemption | |
US9875195B2 (en) | Data distribution among multiple managed memories | |
CN107621959B (zh) | 电子装置及其软件训练方法、计算系统 | |
US11036412B2 (en) | Dynamically changing between latency-focused read operation and bandwidth-focused read operation | |
EP3017372B1 (en) | Memory controlled data movement and timing | |
CN102073461B (zh) | 输入输出请求调度方法、相关装置和存储阵列 | |
KR20170141538A (ko) | 오브젝트 스토리지 장치 및 상기 오브젝트 스토리지 장치의 동작 방법들 | |
US20190042488A1 (en) | Shared memory controller in a data center | |
US20170153825A1 (en) | Access methods of memory device using relative addressing | |
CN114153373A (zh) | 用于执行存储器设备内的数据操作的存储器系统及其操作方法 | |
US11055220B2 (en) | Hybrid memory systems with cache management | |
TWI833577B (zh) | 電腦系統,用於執行記憶體控制器上之資料處理之方法以及非暫時性電腦可讀儲存媒體 | |
US11216373B2 (en) | Memory access commands with near-memory address generation | |
US20210279007A1 (en) | Device-initiated input/output assistance for computational non-volatile memory on disk-cached and tiered systems | |
US20230153245A1 (en) | Method of operating disaggregated memory system for context-aware prefetch and disaggregated memory system preforming the same | |
JP2012069102A (ja) | 不揮発性メモリの読み出し動作変更 | |
KR20200110942A (ko) | 글로벌 메모리 관리장치, 그것을 포함하는 컴퓨팅 노드, 및 그것의 동작 방법 | |
US20230090429A1 (en) | High-performance on-chip memory controller | |
US20190102299A1 (en) | Systems, methods and apparatus for fabric delta merge operations to enhance nvmeof stream writes | |
US11194510B2 (en) | Storage device and method of operating the same | |
US20240045914A1 (en) | Intelligent data storage for efficient retrieval based on contextual awareness for mobile applications | |
CN117631988A (zh) | 用于向存储器提供具有空中时延的命令的装置和方法 | |
TW202424720A (zh) | 記憶體裝置及其操作方法 |