WO2018232736A1 - 内存访问技术及计算机系统 - Google Patents
内存访问技术及计算机系统 Download PDFInfo
- Publication number
- WO2018232736A1 WO2018232736A1 PCT/CN2017/089774 CN2017089774W WO2018232736A1 WO 2018232736 A1 WO2018232736 A1 WO 2018232736A1 CN 2017089774 W CN2017089774 W CN 2017089774W WO 2018232736 A1 WO2018232736 A1 WO 2018232736A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- data
- sub
- block
- length
- memory controller
- Prior art date
Links
Images
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/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- 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/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0646—Configuration or reconfiguration
-
- 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
- G06F13/1673—Details of memory controller using buffers
-
- 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
-
- 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
- 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/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
Definitions
- the present application relates to the field of computer technologies, and in particular, to a memory access technology and a computer system.
- a non-volatile dual in-line memory module is a computer random access memory (RAM).
- the NVDIMM can include a plurality of non-volatile memory (NVM) chips. NVDIMMs retain full memory data when the system is completely powered down. It can be understood that the NVM chip on the NVDIMM may specifically be a non-volatile random access memory (NVRAM).
- the NVM on the NVDIMM may include a phase change memory (PCM), a resistive random access memory (RRAM), a magnetic random access memory (MRAM), and a spin torque conversion. Magnetic random access memory (SPR-transfer torque MRAM, STT MRAM) and the like.
- NVDIMMs communicate with the memory controller using the NVDIMM-P protocol.
- the NVDIMM-P protocol is a bus access protocol compatible with the double data rate (DDR) protocol.
- processors typically have read requirements for reading data of different lengths. Therefore, the processor may send a memory access request to the memory controller for reading data of different lengths. For example, the processor may send a 64B (Byte) fetch request or a 128B fetch request to the memory controller as needed.
- the memory controller typically sends a read command to the NVDIMM for reading a fixed length of data. For example, in one case, the memory controller can send a read command to the NVDIMM for reading 64B data.
- the memory controller when the memory controller receives the memory access request for reading the 128B data, the memory controller needs to split the memory access request into two 64B read commands and pass the two A read command reads the 128B of data required by the processor from the NVDIMM. This type of processing wastes the bandwidth of the command bus and affects system performance.
- the memory controller fixedly sends a read command to the NVDIMM for reading 128B data.
- the memory controller needs to change the 64B memory access request to the 128B read command and send the data to the NVDIMM. The 128B read command. Obviously, this approach wastes the bandwidth of the data bus.
- the memory access technology and the computer system provided in the application can support reading commands of different lengths of data and improve system performance without wasting bus bandwidth.
- the application provides a computer system.
- the computer system includes a memory controller, a media controller, and a non-volatile memory NVM coupled to the media controller. Said NVM is used to store data.
- the memory controller is coupled to the media controller. After the memory controller sends a first read command to the media controller, the media controller may read the first data from the NVM according to a first address in the first read command.
- the first read command carries a first ID, the first address, and a first length, where the first ID is an identifier of the first read command, and the first length is used to indicate the The size of the first data to be read by the first read command.
- the memory controller sends at least two Send commands to the media controller, wherein the at least two send commands are configured to acquire at least two third lengths of data, the third length being less than the first length .
- the media controller returns, to the memory controller, at least two sub-blocks of the third length and metadata of the at least two sub-blocks in response to the at least two send commands.
- the metadata includes the first ID and a location identifier, where the location identifier is used to indicate an offset of the corresponding sub-block in the first data.
- the memory controller merges the at least two sub-blocks into the first data according to a location identifier in metadata of the at least two sub-blocks.
- the computer system provided by the present application can support the system's memory access request without increasing the read command when receiving the memory access request for acquiring larger data. This can reduce the waste of bus bandwidth and improve system performance.
- the location identifier is at least one bit.
- the communication between the memory controller and the media controller is compliant with the NVDIMM-P protocol.
- the memory controller is further configured to send a second read command to the media controller, where the second read command carries a second ID, a second An address and a second length, the second length being used to indicate a size of the second data to be read by the second read command.
- the media controller is further configured to acquire the second data from the NVM according to the second address.
- the memory controller is further configured to send a second Send command to the media controller, where the second send command is used to acquire the data block of the third length, and the second length is equal to the third length.
- the media controller is further configured to, in response to the second send command, return the metadata of the second data and the second data to the memory controller, where the metadata of the second data is carried Said second ID.
- the computer system provided by the present application can support reading requirements of reading data of different lengths without increasing the number of read commands and not wasting bus bandwidth. Improved system performance.
- the media controller is further configured to divide the first data read from the NVM into The at least two sub-blocks are buffered, and metadata of the at least two sub-blocks is recorded.
- the metadata of each of the sub-blocks further includes a transmission identifier, where the transmission identifier is used to indicate Whether the sub-data block is the last sub-block of data to be transmitted in the first data.
- the computer system also includes a cache for buffering at least two sub-blocks of the first data read from the NVM and the second data.
- the media controller is further configured to: when the second data is located in the cache after the first sub-block of the first data, and before the second sub-block of the first data, The second data is sent to the memory controller in preference to the first sub-data block.
- the transmission identifier of the first sub-block indicates that the first sub-block is not in the first data.
- the last sub-block to be transmitted the transmission identifier of the second sub-block indicates that the second sub-block is the last sub-block to be transmitted in the first data.
- the computer system provided by the present application carries the identifier to be transmitted in the metadata of the sub-block returned by the media controller to the memory controller, so that the media controller can transmit according to the process in returning data to the memory controller.
- the identifier adjusts the sending order of the sub-blocks sent to the memory controller, thereby not only processing the read command for reading data of different lengths, but also reducing the waiting delay of the memory controller 106 receiving the data, thereby further improving the processing of the computer system. effectiveness.
- the computer system further includes a processor.
- the processor is configured to send a first memory access request to the memory controller.
- the first memory access request includes the first ID, the first address, and the first length.
- the memory controller is further configured to send the first read command to the media controller according to the first memory access request. According to the computer system of this possible implementation, even if a memory access request for reading large data is received by the processor, the memory access request sent by the processor is not changed. A small data read command can reduce the number of read commands, save bus bandwidth, and improve the performance of the computer system compared with the prior art.
- the application provides a memory.
- the memory includes a non-volatile memory NVM and a media controller coupled to the NVM.
- the NVM is used to store data.
- the media controller is configured to receive a first read command sent by a memory controller in the computer system, and read the first data from the NVM according to the first address in the first read command.
- the first read command carries a first ID, the first address, and a first length, where the first ID is an identifier of the first read command, and the first length is used to indicate the The size of the first data to be read by the first read command.
- the media controller After receiving the at least two Send commands sent by the memory controller, the media controller returns at least two sub-lengths of the third length to the memory controller in response to the at least two send commands sent by the memory controller A data block and metadata of the at least two sub-blocks.
- the at least two send commands are used to obtain data of a third length, where the third length is smaller than the first length.
- the first ID and the location identifier are included in the metadata of each sub-block.
- the location identifier is used to indicate an offset of the corresponding sub-block in the first data, so that the at least two sub-blocks can be merged into a location according to location identifiers in the at least two sub-blocks
- the first data is described.
- the medium memory is further configured to receive a second read command sent by the memory controller, and according to a second address in the second read command
- the second data is obtained in the NVM.
- the second read command carries a second ID, a second address, and a second length, where the second length is used to indicate a size of the second data to be read by the second read command.
- the media controller After receiving the second send command sent by the memory controller, the media controller returns the metadata of the second data and the second data to the memory controller in response to the second send command .
- the second send command is used to obtain the data block of the third length, the second length is equal to the third length, and the second ID is carried in the metadata of the second data.
- the memory further includes a cache, where the cache is used to cache the first number read by the media memory from the NVM According to the at least two sub-blocks.
- the media controller is further configured to record metadata of the at least two sub-blocks.
- the metadata of each of the sub-blocks further includes a transmission identifier, where the transmission identifier is used to indicate Whether the sub-data block is the last sub-block of data to be transmitted in the first data.
- the cache is further configured to cache the second data.
- the media controller is further configured to: when the second data is located in the cache after the first sub-block of the first data, and before the second sub-block of the first data, The second data is sent to the memory controller in preference to the first sub-data block.
- the transmission identifier of the first sub-block indicates that the first sub-block is not the last sub-block to be transmitted in the first data
- the transmission identifier of the second sub-block indicates the The two sub-blocks are the last sub-block of the first data to be transmitted.
- the present application provides a memory access method, which is applied to the computer system provided by any one of the foregoing first aspect or the first aspect, or the first aspect or the first aspect.
- the functionality of a computer system provided by any of the possible implementations.
- the present application provides yet another memory access method.
- the method is implemented by the media controller in the computer system provided by the foregoing first aspect or any one of the possible implementation manners of the first aspect, for implementing the foregoing first aspect or any one of the possible implementation manners of the first aspect Provides the functionality of a media controller in a computer system.
- the present application provides yet another memory access method.
- the method is implemented by the memory controller in the computer system provided by the foregoing first aspect or any one of the possible implementation manners of the first aspect, for implementing the foregoing first aspect or any one of the possible implementation manners of the first aspect Provides the functionality of a memory controller in a computer system.
- the application provides a memory controller.
- the memory controller includes a communication interface and a control circuit coupled to the communication interface.
- the communication interface is configured to send a first read command to the media controller in the computer system, where the first read command carries a first ID, a first address, and a first length, and the first ID is the first And an identifier of the read command, where the first length is used to indicate a size of the first data to be read by the first read command.
- the communication interface is further configured to send at least two Send commands to the media controller, and receive at least two sub-blocks of the third length that are sent by the media controller in response to the at least two send commands, and the at least two The metadata of the sub-blocks.
- the at least two send commands are configured to acquire data of at least two of the third lengths, where the third length is smaller than the first length.
- the at least two sub-blocks are obtained by the media controller from the non-volatile memory NVM in the computer system according to the first address.
- the first ID and the location identifier are included in the metadata of each sub-block, and the location identifier is used to indicate a location of the corresponding sub-block in the first data.
- the control circuit is configured to merge the at least two sub-data blocks into the first data according to a location identifier in metadata of the at least two sub-blocks.
- the communication interface is further configured to send a second read command to the media controller.
- the second read command carries a second ID, a second address, and a second length, where the second length is used to indicate that the second read command is to be read.
- the size of the second data taken.
- the communication interface sends a second send command to the media controller, and receives metadata of the second data and the second data returned by the media controller according to the second send command.
- the second send command is used to acquire the data block of the third length, and the second length is equal to the third length.
- the second data is obtained by the media controller from the NVM according to the second address, and the second ID is carried in the metadata of the second data.
- the present application further provides a computer program product, comprising program code, the program code comprising instructions executed by a computer to implement the method described in the third aspect, the fourth aspect or the fifth aspect .
- the present application further provides a computer readable storage medium for storing program code, the program code comprising instructions executed by a computer to implement the foregoing third aspect, The method described in the four aspects or the fifth aspect.
- FIG. 1 is a schematic structural diagram of a computer system according to an embodiment of the present invention.
- FIG. 2 is a signaling diagram of a memory access method according to an embodiment of the present invention.
- FIG. 3 is a schematic diagram of a data structure of a read command according to an embodiment of the present disclosure
- FIG. 4 is a schematic diagram of a data structure returned by a media controller to a memory controller according to an embodiment of the present invention
- FIG. 5 is a schematic diagram of a data structure of metadata in data returned by a media controller to a memory controller according to an embodiment of the present disclosure
- FIG. 6 is a signaling diagram of still another memory access method according to an embodiment of the present invention.
- FIG. 7 is a flowchart of a scheduling method according to an embodiment of the present invention.
- FIG. 8 is a schematic diagram of a scheduling method according to an embodiment of the present disclosure.
- FIG. 9 is a schematic diagram of still another scheduling method according to an embodiment of the present invention.
- FIG. 1 is a schematic structural diagram of a computer system according to an embodiment of the present invention.
- the computer system 100 can include at least a processor 102, a memory controller 106, and a non-volatile dual in-line memory module (NVDIMM) 108.
- memory controller 106 can be integrated into processor 102.
- the computer system 100 may further include a communication interface and other devices such as a disk that is externally stored, and is not limited herein.
- Processor 102 is the computing core and control unit of computer system 100.
- a plurality of processor cores 104 may be included in the processor 102.
- Processor 102 can be a very large scale integrated circuit.
- An operating system and other software programs are installed in the processor 102 such that the processor 102 can access NVDIMMs 108, caches, and disks.
- the Core 104 in the processor 102 may be, for example, a central processing unit (CPU), or may be an application specific integrated circuit (ASIC).
- CPU central processing unit
- ASIC application specific integrated circuit
- a memory controller 106 is a bus circuit controller that internally controls the NVDIMM 108 and manages and schedules data transfers between the NVDIMM 108 and the Core 104. Data can be exchanged between NVDIMM 108 and Core 104 via memory controller 106.
- the memory controller 106 can be a separate chip and is coupled to the Core 104 via a system bus. Those skilled in the art will appreciate that the memory controller 106 can also be integrated into the processor 102 (as shown in Figure 1) or can be built into the Northbridge. The specific location of the memory controller 106 is not limited in the embodiment of the present invention.
- the memory controller 106 can include a communication interface 1062 and a control circuit 1064 that can communicate with the processor 102 and the NVDIMM 108 via the communication interface 1062.
- Memory controller 106 can control circuitry 1064 to control the logic necessary to write data to or read data from NVDIMM 108.
- NVDIMM 108 is a random access memory RAM of computer system 100 that can be used as memory or storage for computer system 100.
- the NVDIMM 108 can include a media controller 110, at least one non-volatile memory NVM 112, and a cache 114.
- the media controller 110 can include logic circuitry with control capabilities.
- the NVM 112 is used to store various running software in the operating system, input and output data, and information exchanged with external storage. Among them, the NVM 112 can exist in the form of a chip.
- the NVM 112 may include a phase change memory (PCM), a resistive random access memory (RRAM), a magnetic random access memory (MRAM), and Spin-transfer torque MRAM (STT MRAM) can be used as a non-volatile memory for memory.
- PCM phase change memory
- RRAM resistive random access memory
- MRAM magnetic random access memory
- STT MRAM Spin-transfer torque MRAM
- Memory controller 106 is coupled to NVDIMM 108 via bus 105. Communication between the memory controller 106 and the NVDIMM 108 is compliant with the NVDIMM-P protocol.
- the NVDIMM-P protocol is a bus access protocol compatible with the double data rate (DDR) protocol.
- the media controller 110 can access data stored in the NVM 112 in accordance with a memory access command of the memory controller 106. It can be understood that the memory access command sent by the memory controller 106 can be a read command or a write command.
- the media controller 110 can read data from the NVM 112 according to a read command sent by the memory controller 106, or the media controller 110 can also write data into the NVM 112 according to a write command sent by the memory controller 106.
- the bus 105 in the embodiment of the present invention may include a data bus, a command/address bus, and a read data ready feedback line.
- the data bus is used to transmit data and metadata.
- the command/address bus is used to transfer read commands such as read commands and write commands.
- Read data preparation feedback line for sending for notification
- the data to be read by the memory controller 106 has been ready for the ready signal in the NVDIMM.
- the memory controller 106 when the memory controller 106 reads data from the NVDIMM 108 via the bus 105, the memory controller 106 first sends a read command based on the command/address bus.
- the media controller 110 in the NVDIMM 108 After the media controller 110 in the NVDIMM 108 acquires the data to be read from the NVM 112 based on the target address in the read command, the NVDIMM 108 transmits to the memory controller 106 via the read data ready feedback line for notifying that the data is already present.
- the ready signal is prepared in the NVDIMM.
- the memory controller 106 After receiving the Ready signal sent by the NVDIMM 108, the memory controller 106 sends a send command for acquiring data to the NVDIMM 108 via the command/address bus. After the memory controller 106 sends a fixed time delay of the send command, the media controller 110 returns the data prepared in its cache to the memory controller 106 via the data bus. Since the NVDIMM-P protocol supports out-of-order execution of NVM read commands, in actual applications, the memory controller 106 cannot know which read command data the data returned by the media controller 110 is when sending the send command.
- the cache 114 is used to cache data that the media controller 110 reads from the NVM 112.
- Cache 114 can contain a cache queue. Typically, cache queues cache data in a first-in, first-out order.
- the media controller 110 can schedule the data in the cache 114 in accordance with the order of the data in the cache 114. For example, the media controller 110 may send the cached data to the memory controller 106 in the order in which the data cached in the cache queue, or write the data to the NVM 112. In the embodiment of the present invention, the media controller 110 may not schedule data in a first-in first-out order, but schedule the data in the cache team according to the priority of the data or according to the application requirements. It can be understood that, in practical applications, a write buffer (not shown in FIG. 1) for buffering data to be written to the NVM 112 may also be included in the NVDIMM 108.
- the NVDIMM-P bus protocol is compatible with the standard DDR bus protocol, its data bus is multiplexed. In this way, the write command sent by the memory controller and the send command for getting the data are all multiplexed with the same data bus. Therefore, in order to prevent conflicts of commands on the bus, when the memory controller sends a send command to the media controller, it must determine the transmission time of the data returned according to the send command, so as to be able to determine the transmission time of the next command. Thereby, it is possible to accurately schedule each memory access command.
- the memory controller cannot know that the data returned by the media controller 110 belongs to when the send command is sent. Which reads the data of the command, so that the length of the data it receives cannot be known. Further, the memory controller cannot determine the transmission time of the returned data when sending the send command. For the above reasons, as previously discussed, in the prior art, the memory controller 106 typically sends a fixed length read command to the NVDIMM 108. For example, the memory controller 106 sends a read command for reading 64B data or a read command for reading 128B data to the NVDIMM 108.
- the manner in which the memory controller 106 sends a fixed-length read command to the NVDIMM 108 may cause an increase in the number of read commands or waste the bandwidth of the bus 105, thereby affecting system performance.
- the internal memory of the NVDIMM usually needs to be wear-balanced according to the received memory access command, and the increase of the number of commands may increase the work of performing wear leveling. Therefore, the memory access method in the prior art is also disadvantageous for system performance improvement. Therefore, in order not to waste bandwidth and improve system performance, a memory controller 106 can be provided to support A computer system that reads data of different lengths in NVDIMM 108 is necessary.
- FIG. 2 is a signaling diagram of a data reading method according to an embodiment of the present invention. As shown in FIG. 2, the method can include the following steps.
- the processor 102 sends a first memory access request to the memory controller 106.
- the first memory address carries a first logical address and a first length, where the first length is used to indicate a size of the first data to be read by the processor 102, where the first logical address is used for Indicates the address of the first data to be read.
- the memory controller 106 sends a first read command to the media controller 110 according to the first memory access request, where the first read command carries a first ID, a first address, and a first length.
- the first length is used to indicate the size of the first data to be read by the first read command.
- the first address is used to indicate a physical address of the first data in the NVM 112.
- FIG. 3 is a schematic diagram of a data structure of an XREAD command according to an embodiment of the present invention.
- An XREAD command is transmitted in two cycles.
- the chip select (CS) of the first cycle is low (L)
- the second cycle is followed by the first cycle
- the second cycle is sliced.
- the selected signal is high (H).
- Each cycle in turn includes the rising edge of the clock and the falling edge of the clock.
- the information transmitted on the rising edge of the clock can be found in the "Command/Address Signal Rising CLK_t” section in Figure 3.
- Information on the falling edge of the clock can be found in the "Command/Address Signal Falling CLK_t” section in Figure 3.
- the following fields may be included in the XREAD command provided by the embodiment of the present invention.
- the "CS" bit is a chip select signal field that indicates whether the NVDIMM is selected.
- the Length[2:0] field is used to indicate the length of the data to be read by the XREAD command.
- the ADDR[11:5] and ADDR[4:1] fields are used to indicate the address of the data to be read by the XREAD command.
- the RID[9:7] and RID[6:0] fields are used to indicate the ID of the XREAD command.
- the "RFU" field is an unused reserved field.
- the first read command may include a first ID of the first read command, and the first ID is an identifier of the first read command.
- the first ID may be identified by the RID[9:7] and RID[6:0] fields in FIG.
- the first read command may further include an address of the data to be read.
- the address of the data to be read carried in the first read command is referred to as a first address.
- the first address can be identified by the ADDR[11:5] and ADDR[4:1] fields shown in FIG. It should be noted that the first address is the physical address of the first data in the NVM 112.
- the (multi-length) read command in the first read command sent by the memory controller 106 to the media controller 110, also needs to adopt a partial field to indicate the length of the first data to be read by the first read command.
- the length of the first data can be indicated by the "Length[2:0]” field in FIG.
- the "Length[2:0]” field can be used to indicate how many 64B (byte) blocks the memory controller 106 is to read. For example, as shown in FIG.
- the "Length[2:0]” field may have 3 bits, and the "Length[2:0]” field may be represented as 000 to 111, correspondingly, the "Length[2:0]” field.
- the data that can be used for the indicated memory controller to be read can be 64B to 512B in length.
- computer system 100 can support a read operation of reading 512B data at a time, according to the data format of the XREAD command shown in FIG.
- the "Length[2:0]" field in FIG. 3 is only an example, and the length of the data to be read is not limited. In practical applications, more reserved fields can also be used to indicate the length of the data to be read.
- the "RFU" field shown in FIG. 3 can also be used to indicate the length of data to be read.
- the field for indicating the length of the data to be read may include 4 bits, and the value that the field can indicate may be from 0000 to 1111.
- the size of the data to be read indicated by the “Length[2:0]” field is exemplified by the 64B granularity. According to this manner, the size of the data to be read is 64B. Multiples. In the actual application, the "Length[2:0]" field indicates that the size may be 32B, 128B or other sizes, which is not limited in the embodiment of the present invention.
- the media controller 110 reads the first data from the NVM 112 based on the first address. Specifically, the media controller 110 can read the first data from the NVM 112 according to the first address and the first length. After reading the first data, the media controller 110 may cache the first data in a buffer. In the embodiment of the present invention, after reading the first data, the media controller 110 may perform block buffering according to the granularity of 64B according to the first data. For example, if the first length is 128B, the first data can be divided into two 64B data blocks, which are respectively cached in the cache 114 of the NVDIMM 108.
- the ID of the read command to which the data block belongs and the location of the data block in the data to be read by the read command may be identified in each data block. For example, if the first length of the first data is 128B, the media controller 110 may divide the first data into the first sub-block and the second sub-block for buffering, and record in the metadata information of the first sub-block. a first ID and a location of the first sub-block in the first data. The position of the first sub-block in the first data refers to the offset of the first sub-block in the first data.
- the first sub-block may be recorded in the metadata of the first sub-block.
- the location information is 1, and the location information of the second sub-block is recorded as 0 in the metadata of the second sub-block.
- the position indication bit in the metadata of the data block can be more than just one bit, and a field with multiple bits can be used to indicate the position of the data block in the data to be read. For example, if the position of the data block is indicated by a field of 3 bits, it is possible to use 000 to 111 to respectively indicate 8 different positions of each data block in the data to be read.
- the media controller 110 sends a ready signal to the memory controller 106.
- the ready signal is used to notify the memory controller 106 to cache data to be read in the buffer of the media controller 110.
- the NVDIMM-P protocol defines a ready signal for feedback data during the reading of data. This is also a difference between the NVDIMM-P protocol and the DDR bus protocol.
- the Ready signal is used to notify the memory controller that the NVDIMM has prepared the data to be read by the memory controller. After receiving the Ready signal, the memory controller can obtain the prepared data from the buffer of the NVDIMM through the send command.
- the memory controller 106 sends a send command to the media controller 110.
- the send command is used to read a data block of a third length in the NVDIMM cache.
- the media controller sends a ready signal to the memory controller 106. Since the NVDIMM-P protocol supports out-of-order execution of NVM read commands, the memory controller 106 does not know at this time which read command data is being prepared by the NVDIMM. As described above, in the case of processing a read command for reading variable length data, the memory controller 106 does not know the size of the data retrieved when sending the send command to the media controller 110, and thus cannot determine The transfer time of the returned data.
- the memory controller 106 in order not to cause disorder of commands on the bus, even if the memory access request sent by the processor reads data of different lengths, the memory controller 106 is still used to obtain a fixed length (for example, The third length) of the data is sent in the way of the send command. According to this manner, even if the size of the data to be read by the different memory access requests is different, since the length of the data acquired once is fixed, the transmission time of the data returned by the media controller 110 can be determined, so that the memory controller 106
- the send command may be sent to the media controller 110 in accordance with a fixed data transfer time to acquire data to be read from the NVDIMM.
- the third length can be set according to an actual application. In practical applications, the third length may be 64B in order not to waste bandwidth.
- the media controller 110 returns a third length of data block and corresponding metadata to the memory controller 106 according to the send command.
- the metadata of the data refers to information used to describe the data.
- the data block is usually returned together with the corresponding metadata.
- the data block of the third length returned by the media controller 110 and the corresponding metadata may also be collectively referred to as returned data.
- the format of the data returned by the media controller 110 can be as described in FIG. As shown in FIG.
- the returned data may include the following information: Data 402, ECC 404, ID 406, and Location 408.
- the Data 402 field is the data block of the third length.
- the Data 402 field can be a 64B data block. It can be understood that the third length can be set according to actual needs. For example, the third length can be set to 64B or 128B as long as it is a fixed length.
- the ECC 404 field is used to indicate error correction information of the data block. In practical applications, the ECC 404 field can occupy 12B. Moreover, in actual applications, the ECC 404 field may not be included in the returned data.
- the ID 406 field is used to refer to Show the read command to which the data block belongs.
- the media controller 110 is configured according to the memory controller 106.
- the ID of the first sub-block and the ID of the second sub-block may both be the ID of the first read command.
- Location 408 is used to indicate the location of the returned sub-block of data in the data to be read by the read command indicated by ID 406. For example, when the media controller 110 returns the first sub-block, Location 408 may be "1" and the first sub-block for return is the high 64B of the data to be read by the first read command.
- FIG. 5 is a schematic structural diagram of metadata of a data block returned according to a send command according to an embodiment of the present invention.
- M0 and M1 are used to indicate signals transmitted on the two signal lines of the transmission metadata.
- the "RID” field is used to indicate the read command to which the data block belongs.
- the memory controller 106 can identify which read data the returned data block is read according to the "RID” field.
- the "SB” field is used to indicate the offset of the returned data block in the data to be read by the read command indicated by the "RID” field.
- the RID occupies 10 bits, and the SB occupies 3 bits for description.
- the RID information in the metadata corresponds to the RID[9:7] and RID[6:0] fields in the XREAD command shown in FIG. 3, and is used to indicate the read command to which the sub-block belongs.
- the three bits occupied by the SB are used to correspond to the three bits in "Length[2:0]" in the XREAD command shown in FIG.
- media controller 110 will send a ready signal to memory controller 106 when there is data in cache 114 for buffering read data to be returned in NVDIMM 108.
- the memory controller 106 After receiving the ready signal sent by the media controller 110, the memory controller 106 sends a send command to the media controller 110. After receiving the send command, the media controller 110 returns the data block of the third length of the send command to the memory controller 106. Therefore, it can be understood that when the data to be read by a certain read command is large, for example, greater than the set third length, then at least two steps 208 to 212 need to be performed to completely read the NVDIMM from the NVDIMM. Read the data to be read by the command.
- the first data is greater than the third length
- the memory controller needs to send at least two send commands to retrieve the first data from the NVDIMM.
- the memory controller 106 transmits at least two send commands to the memory controller 106 to transmit at least two sub-blocks of the first data, respectively, in response to the at least two send commands.
- the memory controller 106 obtains the first data according to the received at least two sub-blocks. Specifically, after receiving the data returned by the media controller 110 according to the send instruction, the memory controller 106 may determine the read command to which the sub-data block belongs according to the metadata of the returned sub-block. In the embodiment of the present invention, the first data to be read by the first read command is greater than the third length as an example. After the memory controller 106 receives the at least two sub-blocks including the first ID, the sub-data blocks in the first data may be respectively obtained according to the SB field in the metadata of the at least two data blocks. The memory controller 106 is configured to obtain the first data from at least two sub-blocks including the first ID according to an offset of each sub-block in the first data. In step 216, the memory controller 106 returns the first data to the processor 102.
- FIG. 6 is a signaling diagram of a memory access method in still another case according to an embodiment of the present disclosure. As shown in Figure 6, the method can include the following steps.
- step 602 the processor sends a second memory access request to the memory controller 106.
- the second memory access request includes a second length of the second data to be read, where the second length is not greater than the third length.
- the description is made by taking the second data as 64B as an example.
- the memory controller 106 sends a second read command to the media controller 110.
- the second read command includes a second ID, a second address, and the second length.
- the data format of the second read command may also be as shown in FIG. 3.
- the second length is used to indicate a size of the second data to be read by the second read command.
- the media controller 110 reads the second data from the NVM 112. Similar to step 206, media controller 110 can read the second data from NVM 112 based on the second address and the second length. And reading the read second data in a cache of the NVDIMM.
- the metadata of the second data may include an ID of the second read command and a location of the second data. Since the second data is small, the media controller 110 does not have to perform block caching of the second data.
- the media controller 110 sends a ready signal to the memory controller 106.
- the memory controller 106 sends a send command to the media controller 110.
- the media controller 110 returns the second data and the metadata of the second data to the memory controller 106.
- the data format returned by the media controller 106 can be as shown in FIG. 4.
- the metadata of the second data can be as shown in FIG. Since the size of the second data is 64B, after the memory controller obtains the second data returned by the media controller 110, in step 614, the memory controller 106 can directly return the second data to the processor 102.
- the metadata of the second data may be The location identifier is set to 000 to indicate that the second data has only one data block.
- the memory controller 106 receives the second data returned by the media controller 110, it may be learned that the data belongs to the second according to the second ID in the metadata of the second data.
- the memory controller 106 can know that the second data has only one data block, so that the memory controller 106 can The location identifier in the metadata of the second data is considered to be a meaningless identifier.
- the embodiment shown in FIG. 6 is similar to the embodiment shown in FIG. 2. Therefore, the relevant steps in the embodiment shown in FIG. 6 can be specifically referred to the description of the corresponding steps in FIG. 2.
- the memory controller 106 can retrieve the second data by a send command. Therefore, after the memory controller 106 obtains the second read command to be read according to the metadata of the second data returned by the media controller 110, the memory controller may directly return to the processor 102. The second data.
- the computer system 100 provided by the embodiment of the present invention can process multiple different read commands of different NVM 112 chips in parallel.
- computer system 100 can process the first read command and the second read command in parallel.
- 2 and 6 are merely schematic illustrations of a method of performing a read command for reading different lengths of data processed by computer system 100.
- the computer system 100 provided by the embodiment of the present invention can also support out-of-order execution of read commands.
- the various steps in Figure 2 may be performed in cross-over with the various steps in Figure 6.
- the memory controller may perform step 604.
- the media controller returns data to the memory controller 106, it may first return to at least part of the first data in the first data to be read shown in FIG. 2, or may return to the second in FIG. Read the second data of the command to be read. Therefore, in the embodiment of the present invention, the execution order of each step of the memory access method shown in FIG. 2 and FIG. 6 is not limited.
- the memory controller 106 can send the NVDIMM 108 for reading different lengths according to the received memory access request. Read command for data.
- the memory controller 106 sends a first read command for reading larger data (eg, first data)
- the memory controller 106 can send at least two for reading the fixed length to the media controller in the NVDIMM 108 ( For example, a send command of data of a third length, wherein the third length is less than the first length.
- the media controller 110 may receive at least two third-length sub-blocks and metadata from the memory controller 106 according to the received at least two send commands, where the metadata corresponding to each sub-block includes the sub-data for indicating the sub-data.
- the location identifier of the block in the first data can merge the at least two sub-blocks into the first data according to the location identifier in the metadata of the returned at least two sub-blocks.
- a plurality of read commands to be read may be cached in the cache 114 of the NVDIMM 108.
- the media controller 110 sends a ready message to the memory controller 106 to notify the memory controller 106 to fetch data.
- the waiting delay of the memory controller can also be reduced by optimizing the scheduling order of the data blocks in the cache. The following is a detailed description of how the computer system 100 provided by the embodiment of the present invention optimizes the waiting time delay when the memory controller acquires data according to FIG. 5 and FIG. 7 .
- a transmission identifier may be added to the metadata shown in FIG. 5.
- the transmission identifier LB only occupies one bit in the metadata shown in FIG. 5, and specifically, may be from the metadata structure shown in FIG. Among the unused bits (for example, the bit indicated by the RFU in FIG. 5), one bit is selected as the transmission identifier.
- the transmission identifier is used to indicate whether the sub-data block is the last data block to be transmitted in the data to be read by the read command indicated by the RID.
- any one of the at least two sub-blocks may be used as the last sub-block of the first data to be transmitted.
- the determined LB bit in the metadata of the last sub-block to be transmitted may be identified as "1”
- the LB bit in the metadata of the other sub-blocks in the first data may be The identifier is "0". It can be understood that “1” is only an example for indicating that the sub-block is the identifier of the last sub-block to be transmitted, and “0” is only used to indicate that the sub-block is not the last one to be transmitted.
- the identifier of the sub-block other identifiers may be used in the actual application, which is not limited herein.
- the media controller 110 may optimize the cache in step 212 shown in FIG. 2 and step 612 shown in FIG. The return order of the sub-blocks of each read command cached in 114.
- FIG. 7 is a flowchart of a scheduling method according to an embodiment of the present invention.
- FIG. 8 is a schematic diagram of a scheduling method according to an embodiment of the present invention.
- FIG. 9 is a schematic diagram of still another scheduling method according to an embodiment of the present invention.
- the media controller 110 may employ the following steps when returning data blocks to the memory controller 106.
- the media controller 110 determines that the second data is located in the cache 114 after the first sub-block of the first data and before the second sub-block of the first data.
- the transmission identifier of the first sub-block indicates that the first sub-block is not the last sub-block to be transmitted in the first data
- the transmission identifier of the second sub-block indicates the The two sub-blocks are the last sub-block of the first data to be transmitted.
- the first read command A and the second read command B are taken as an example, wherein the data to be read by the first read command A includes a sub-block A0, a sub-block A1, and a sub-block A2 (LB).
- the data to be read by the second read command B includes the sub-block B0 (LB).
- A2 (LB) is used to indicate that A2 is the last sub-block of data to be transmitted in the data read by the first read command A
- B0 (LB) is used to indicate that B0 is the data to be transmitted in the data read by the second read command B.
- the last sub-block The buffering order of each sub-block in the buffer 114 is as shown at 802, wherein the sub-block B0 (LB) is located after the sub-block A0 and the sub-block A1 and before the sub-block A2 (LB).
- the media controller 110 sends the second data to the memory controller 110 in preference to the first sub-block in response to the send command sent by the memory controller 106.
- the media controller 110 may first send a second data B0 (LB) to the memory controller 106 in response to a send command sent by the memory controller 106, and then respond.
- the other at least two send commands sent by the memory controller 106 return the first sub-block A0, the second sub-block A1, and the third sub-block A2 (LB) to the memory controller 106.
- the transmission delay for transmitting one sub-block is 4 cycles. If the media controller 110 transmits each sub-block to the memory controller 106 in the cache order shown by 802 in FIG. 8, the memory controller 110 receives the wait delay of all the sub-blocks of the first read command A as 16 Cycle, the memory controller 110 receives the wait delay of all sub-blocks of the second read command B for 12 cycles.
- the media controller 110 may The data B0 (LB) of the second read command B is sent to the memory controller 110 in preference to the sub-data blocks A0 and A1 of the first read command A.
- the memory controller 110 receives the wait delay of all the sub-blocks of the first read command A unchanged, still 16 cycles, but the memory controller 110 receives all the children of the second read command B.
- the waiting delay of the data block is 4 cycles. Thereby, the delay of the memory controller 110 receiving the sub-block of the second read command B is reduced, and the processing efficiency of the memory controller 110 processing the second read command B is improved.
- FIG. 8 is an example in which the data to be read by the second read command includes only one sub-block B0 (LB).
- each sub-block to be read by the second read command is located in the data of the first read command to be read in the cache.
- the media controller 110 may prioritize the sub-data to be read by the second read command over the first read.
- the sub-block of data to be read is sent to the memory controller 106. As shown at 902 in FIG.
- the data to be read by the second read command B includes B0 and B1 (LB), and both B0 and B1 (LB) are located in the buffer 114 in the first read command A to be read.
- the media controller 110 may follow the indication of 904.
- the scheduling sequence sends each sub-block of data to the memory controller 110.
- the data B0 and B1 (LB) to be read by the second read command may be sent to the memory controller in preference to the sub-data block A0 to be read by the first read command A.
- the transmission delay of transmitting one sub-block is 4 cycles.
- the delay of the data read by the memory controller 110 receiving the second read command B is reduced from 16 delays to 4 times. After the delay, the delay of the data read by the memory controller 110 receiving the first read command A is still 20 delays. Therefore, the processing efficiency of the memory controller is optimized to some extent.
- the media controller 110 cannot place the data in the first read command in the cache.
- the other read commands following the last sub-block of the transfer are to be read, and the sub-blocks to be read are sent to the memory controller in preference to the sub-block of the first read command.
- the sub-data block C0 (LB) of the third read command C is located after the sub-data block A2 (LB) of the first read command A in the buffer 114, then the media controller 110 cannot.
- the C0 (LB) is transmitted to the memory controller 106 in preference to the sub-data blocks A0, A1, and A2 (LB) of the first read command. Otherwise, the memory controller 110 receives an increase in the data block delay of the first read command A. For example, in the example shown in FIG. 8, assuming that the sub-block of the first read command A is sent last, the delay of the memory controller 106 receiving the data of the first read command A will increase from 16 cycles to 20 cycle.
- the media controller 110 is adjusting the data block.
- the last data block to be transmitted in the data read by a read command cannot be sent in preference to other data blocks of the command.
- the media controller 110 cannot send the sub-block A2 (LB) in the first read command to the memory controller 106 in preference to the sub-block A0 or A1.
- the read command is read by adjusting each read command.
- the order in which the data is returned Not only can the read command for reading data of different lengths be processed, but also the waiting delay of the memory controller 106 receiving the data can be reduced, and the processing efficiency of the memory controller 106 is improved.
- the above embodiments it may be implemented in whole or in part by software, hardware, firmware, or any combination thereof.
- software it may be implemented in whole or in part in the form of a computer program product.
- the computer program product includes one or more computer instructions.
- the computer program instructions When the computer program instructions are loaded and executed on a computer, the processes or functions described in accordance with embodiments of the present invention are generated in whole or in part.
- the computer can be a general purpose computer, a special purpose computer, a computer network, or other programmable device.
- the computer instructions can be stored in a computer readable storage medium or transferred from one computer readable storage medium to another computer readable storage medium, for example, the computer instructions can be from a website site, computer, server or data center Transfer to another website site, computer, server, or data center by wire (eg, coaxial cable, fiber optic) or wireless (eg, infrared, wireless, microwave, etc.).
- the computer readable storage medium can be any available media that can be accessed by a computer or a data storage device such as a server, data center, or the like that includes one or more available media.
- the usable medium may be a magnetic medium (such as a floppy disk, a hard disk, a magnetic tape), an optical medium (such as an optical disk), or a semiconductor medium (such as a solid-state drive (SSD)), etc., which may store non-transient code of the program code.
- Non-transitory machine readable medium such as a floppy disk, a hard disk, a magnetic tape
- an optical medium such as an optical disk
- a semiconductor medium such as a solid-state drive (SSD)
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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Systems (AREA)
- Memory System (AREA)
- Saccharide Compounds (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
Abstract
Description
Claims (20)
- 一种计算机系统,包括内存控制器、介质控制器以及与所述介质控制器连接的非易失性内存NVM,其中,所述NVM,用于存储数据;所述内存控制器连接所述介质控制器,所述内存控制器用于向所述介质控制器发送第一读命令,所述第一读命令中携带有第一ID、第一地址以及第一长度,所述第一ID为所述第一读命令的标识,所述第一长度用于指示所述第一读命令待读取的第一数据的大小;所述介质控制器,用于根据所述第一地址从所述NVM中读取所述第一数据;所述内存控制器,用于向所述介质控制器发送至少两个Send命令,其中,所述至少两个send命令用于获取至少两个第三长度的数据,所述第三长度小于所述第一长度;所述介质控制器,用于响应所述至少两个send命令,向所述内存控制器返回所述第三长度的至少两个子数据块以及所述至少两个子数据块的元数据,其中,所述元数据中包含有所述第一ID以及位置标识,所述位置标识用于指示对应的子数据块在所述第一数据中的偏移量;所述内存控制器用于根据所述至少两个子数据块的元数据中的位置标识将所述至少两个子数据块合并为所述第一数据。
- 根据权利要求1所述的计算机系统,其特征在于:所述内存控制器,还用于向所述介质控制器发送第二读命令,所述第二读命令中携带有第二ID、第二地址以及第二长度,所述第二长度用于指示所述第二读命令待读取的第二数据的大小;所述介质控制器,还用于根据所述第二地址从所述NVM中获取所述第二数据;所述内存控制器,还用于向所述介质控制器发送第二Send命令,所述第二send命令用于获取所述第三长度的数据块,所述第二长度等于所述第三长度;所述介质控制器,还用于响应所述第二send命令,向所述内存控制器返回所述第二数据以及所述第二数据的元数据,所述第二数据的元数据中携带有所述第二ID。
- 根据权利要求1或2所述的计算机系统,其特征在于,所述介质控制器还用于:将从所述NVM读取的所述第一数据分为所述至少两个子数据块进行缓存,并记录所述至少两个子数据块的元数据。
- 根据权利要求2或3所述的计算机系统,其特征在于:所述每个子数据块的元数据中还包括传输标识,所述传输标识用于指示所述子数据块是否为所述第 一数据中待传输的最后一个子数据块;所述计算机系统还包括:缓存,用于缓存从所述NVM读取的所述第一数据的至少两个子数据块以及所述第二数据;所述介质控制器,还用于当所述第二数据在所述缓存中位于所述第一数据的第一子数据块之后,且位于所述第一数据的第二子数据块之前时,将所述第二数据优先于所述第一子数据块发送给所述内存控制器,其中,所述第一子数据块的传输标识指示所述第一子数据块不是所述第一数据中待传输的最后一个子数据块,所述第二子数据块的传输标识指示所述第二子数据块为所述第一数据中待传输的最后一个子数据块。
- 根据权利要求1-4任意一项所述的计算机系统,其特征在于,还包括:处理器,用于向所述内存控制器发送第一访存请求,所述第一访存请求包括所述第一ID、所述第一地址以及所述第一长度;所述内存控制器,还用于根据所述第一访存请求向所述介质控制器发送所述第一读命令。
- 一种存储器,包括:非易失性内存NVM,用于存储数据;与所述NVM连接的介质控制器,所述介质控制器用于:接收计算机系统中的内存控制器发送的第一读命令,所述第一读命令中携带有第一ID、第一地址以及第一长度,所述第一ID为所述第一读命令的标识,所述第一长度用于指示所述第一读命令待读取的第一数据的大小;根据所述第一地址从所述NVM中读取所述第一数据;接收所述内存控制器发送的至少两个Send命令,其中,所述至少两个send命令用于获取第三长度的数据,所述第三长度小于所述第一长度;响应所述内存控制器发送的至少两个send命令,向所述内存控制器返回所述第三长度的至少两个子数据块以及所述至少两个子数据块的元数据,其中,每个子数据块的元数据中均包含有所述第一ID以及位置标识,所述位置标识用于指示对应的子数据块在所述第一数据中的偏移量,以便根据所述至少两个子数据块中的位置标识使所述至少两个子数据块能够被合并为所述第一数据。
- 根据权利要求6所述的存储器,其特征在于,所述介质控制器还用于:接收所述内存控制器发送的第二读命令,其中,所述第二读命令中携带有第二ID、第二地址以及第二长度,所述第二长度用于指示所述第二读命令待读取的第二数据的大小;根据所述第二地址从所述NVM中获取所述第二数据;接收所述内存控制器发送的第二send命令,所述第二send命令用于获取所述 第三长度的数据块,所述第二长度等于所述第三长度;响应所述第二send命令,向所述内存控制器返回所述第二数据以及所述第二数据的元数据,所述第二数据的元数据中携带有所述第二ID。
- 根据权利要求6或7所述的存储器,其特征在于,还包括:缓存,用于缓存所述介质存储器从所述NVM中读取的所述第一数据的所述至少两个子数据块;所述介质控制器还用于:记录所述至少两个子数据块的元数据。
- 根据权利要求7或8所述的存储器,其特征在于,所述每个子数据块的元数据中还包括传输标识,所述传输标识用于指示所述子数据块是否为所述第一数据中待传输的最后一个子数据块;所述缓存还用于缓存所述第二数据;所述介质控制器,还用于当所述第二数据在所述缓存中位于所述第一数据的第一子数据块之后,且位于所述第一数据的第二子数据块之前时,将所述第二数据优先于所述第一子数据块发送给所述内存控制器,其中,所述第一子数据块的传输标识指示所述第一子数据块不是所述第一数据中待传输的最后一个子数据块,所述第二子数据块的传输标识指示所述第二子数据块为所述第一数据中待传输的最后一个子数据块。
- 一种内存访问方法,所述方法应用于计算机系统中,所述计算机系统包括内存控制器、介质控制器以及与所述介质控制器连接的非易失性内存NVM,所述方法包括:所述内存控制器向所述介质控制器发送第一读命令,所述第一读命令中携带有第一ID、第一地址以及第一长度,所述第一ID为所述第一读命令的标识,所述第一长度用于指示所述第一读命令待读取的第一数据的大小;所述介质控制器根据所述第一地址从所述NVM中读取所述第一数据;所述内存控制器向所述介质控制器发送至少两个Send命令,其中,所述至少两个send命令用于获取至少两个第三长度的数据,所述第三长度小于所述第一长度;所述介质控制器响应所述至少两个send命令,向所述内存控制器返回所述第三长度的至少两个子数据块以及所述至少两个子数据块的元数据,其中,每个子数据块中的元数据中均包含有所述第一ID以及位置标识,所述位置标识用于指示对应的子数据块在所述第一数据中的位置;所述内存控制器根据所述至少两个子数据块的元数据中的位置标识将所述至少两个子数据块合并为所述第一数据。
- 根据权利要求10所述的内存访问方法,其特征在于,还包括:所述内存控制器向所述介质控制器发送第二读命令,所述第二读命令中携带有第二ID、第二地址以及第二长度,所述第二长度用于指示所述第二读命令待读取的第二数据的大小;所述介质控制器根据所述第二地址从所述NVM中获取所述第二数据;所述内存控制器向所述介质控制器发送第二Send命令,所述第二send命令用于获取所述第三长度的数据块,所述第二长度等于所述第三长度;所述内存控制器接收所述介质控制器根据所述第二send命令返回的所述第二数据以及所述第二数据的元数据,其中,所述第二数据的元数据中携带有所述第二ID。
- 根据权利要求10或11所述的内存访问方法,其特征在于,还包括:所述介质控制器将从所述NVM读取的所述第一数据分为所述至少两个子数据块进行缓存,并记录所述至少两个子数据块的元数据。
- 根据权利要求11或12所述的内存访问方法,其特征在于,所述计算机系统还包括缓存,所述每个子数据块的元数据中还包括传输标识,所述传输标识用于指示所述子数据块是否为所述第一数据中待传输的最后一个子数据块;所述方法还包括:当所述第二数据在所述缓存中位于所述第一数据的第一子数据块之后,且位于所述第一数据的第二子数据块之前时,所述介质控制器将所述第二数据优先于所述第一子数据块发送给所述内存控制器,其中,所述第一子数据块的传输标识指示所述第一子数据块不是所述第一数据中待传输的最后一个子数据块,所述第二子数据块的传输标识指示所述第二子数据块为所述第一数据中待传输的最后一个子数据块。
- 根据权利要求10-13任意一项所述的方法,其特征在于,还包括:所述内存控制器接收所述计算机系统的处理器发送的第一访存请求,所述第一访存请求包括所述第一ID、所述第一地址以及所述第一长度;所述内存控制器根据所述第一访存请求向所述介质控制器发送所述第一读命令。
- 一种内存访问方法,所述方法应用于计算机系统中,所述计算机系统包括内存控制器、介质控制器以及与所述介质控制器连接的非易失性内存NVM,所述方法包括:所述介质控制器接收所述内存控制器发送的第一读命令,所述第一读命令中携带有第一ID、第一地址以及第一长度,所述第一ID为所述第一读命令的标识,所述第一长度用于指示所述第一读命令待读取的第一数据的大小;所述介质控制器根据所述第一地址从所述NVM中读取所述第一数据;所述介质控制器接收所述内存控制器发送的至少两个Send命令,其中,所述至少两个send命令用于获取第三长度的数据,所述第三长度小于所述第一长度;所述介质控制器响应所述内存控制器发送的至少两个send命令,向所述内存控制器返回所述第三长度的至少两个子数据块以及所述至少两个子数据块的元数据,其中,每个子数据块的元数据中均包含有所述第一ID以及位置标识,所述位置标识用于指示对应的子数据块在所述第一数据中的偏移量,以便根据所述至少两个子数据块中的位置标识使所述至少两个子数据块能够被合并为所述第一数据。
- 根据权利要求15所述的方法,其特征在于,还包括:所述介质控制器接收所述内存控制器发送的第二读命令,所述第二读命令中携带有第二ID、第二地址以及第二长度,所述第二长度用于指示所述第二读命令待读取的第二数据的大小;所述介质控制器根据所述第二地址从所述NVM中获取所述第二数据;所述介质控制器接收所述内存控制器发送的第二send命令,所述第二send命令用于获取所述第三长度的数据块,所述第二长度等于所述第三长度;所述介质控制器响应所述第二send命令,向所述内存控制器返回所述第二数据以及所述第二数据的元数据,所述第二数据的元数据中携带有所述第二ID。
- 根据权利要求15或16所述的方法,其特征在于,还包括:所述介质控制器将从所述NVM读取的所述第一数据分为所述至少两个子数据块进行缓存,并记录所述至少两个子数据块的元数据。
- 根据权利要求16或17所述的方法,其特征在于,所述计算机系统还包括缓存,所述每个子数据块的元数据中还包括传输标识,所述传输标识用于指示所述子数据块是否为所述第一数据中待传输的最后一个子数据块;所述方法还包括:当所述第二数据在所述缓存中位于所述第一数据的第一子数据块之后,且位于所述第一数据的第二子数据块之前时,所述介质控制器将所述第二数据优先于所述第一子数据块发送给所述内存控制器,其中,所述第一子数据块的传输标识指示所述第一子数据块不是所述第一数据中待传输的最后一个子数据块,所述第二子数据块的传输标识指示所述第二子数据块为所述第一数据中待传输的最后一个子数据块。
- 一种内存访问方法,所述方法应用于计算机系统中,所述计算机系统包括内存控制器、介质控制器以及与所述介质控制器连接的非易失性内存NVM,所述方法包括:所述内存控制器向所述介质控制器发送第一读命令,所述第一读命令中携带 有第一ID、第一地址以及第一长度,所述第一ID为所述第一读命令的标识,所述第一长度用于指示所述第一读命令待读取的第一数据的大小;所述内存控制器向所述介质控制器发送至少两个Send命令,其中,所述至少两个send命令用于获取至少两个第三长度的数据,所述第三长度小于所述第一长度;所述内存控制器接收所述介质控制器响应所述至少两个send命令发送的所述第三长度的至少两个子数据块以及所述至少两个子数据块的元数据,其中,所述至少两个子数据块是所述介质控制器根据所述第一地址从所述NVM中获取的,每个子数据块的元数据中均包含有所述第一ID以及位置标识,所述位置标识用于指示对应的子数据块在所述第一数据中的位置;根据所述至少两个子数据块的元数据中的位置标识将所述至少两个子数据块合并为所述第一数据。
- 根据权利要求19所述的方法,其特征在于,还包括:所述内存控制器向所述介质控制器发送第二读命令,所述第二读命令中携带有第二ID、第二地址以及第二长度,所述第二长度用于指示所述第二读命令待读取的第二数据的大小;所述内存控制器向所述介质控制器发送第二send命令,所述第二send命令用于获取所述第三长度的数据块,所述第二长度等于所述第三长度;所述内存控制器接收所述介质控制器根据所述第二send命令返回的所述第二数据以及所述第二数据的元数据,其中,所述第二数据是所述介质控制器根据所述第二地址从所述NVM中获取的,所述第二数据的元数据中携带有所述第二ID。
Priority Applications (15)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
BR112019026942-8A BR112019026942B1 (pt) | 2017-06-23 | 2017-06-23 | Tecnologia de acesso à memória e sistema de computador |
ES17914958T ES2840423T3 (es) | 2017-06-23 | 2017-06-23 | Tecnología de acceso a la memoria y sistema informático |
EP17914958.8A EP3480702B1 (en) | 2017-06-23 | 2017-06-23 | Memory access technology and computer system |
CN201780043116.5A CN109478168B (zh) | 2017-06-23 | 2017-06-23 | 内存访问技术及计算机系统 |
KR1020227031161A KR102532173B1 (ko) | 2017-06-23 | 2017-06-23 | 메모리 액세스 기술 및 컴퓨터 시스템 |
PCT/CN2017/089774 WO2018232736A1 (zh) | 2017-06-23 | 2017-06-23 | 内存访问技术及计算机系统 |
JP2019570989A JP6900518B2 (ja) | 2017-06-23 | 2017-06-23 | メモリアクセス技術およびコンピュータシステム |
KR1020217039534A KR102443106B1 (ko) | 2017-06-23 | 2017-06-23 | 메모리 액세스 기술 및 컴퓨터 시스템 |
KR1020207001375A KR102336232B1 (ko) | 2017-06-23 | 2017-06-23 | 메모리 액세스 기술 및 컴퓨터 시스템 |
EP22188013.1A EP4152166A3 (en) | 2017-06-23 | 2017-06-23 | Memory access technology and computer system |
EP20195180.3A EP3822798B1 (en) | 2017-06-23 | 2017-06-23 | Memory access technology and computer system |
US16/284,609 US10732876B2 (en) | 2017-06-23 | 2019-02-25 | Memory access technology and computer system |
US16/927,066 US11231864B2 (en) | 2017-06-23 | 2020-07-13 | Memory access technology and computer system |
JP2021099325A JP7162102B2 (ja) | 2017-06-23 | 2021-06-15 | メモリアクセス技術およびコンピュータシステム |
US17/569,911 US11681452B2 (en) | 2017-06-23 | 2022-01-06 | Memory access technology and computer system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2017/089774 WO2018232736A1 (zh) | 2017-06-23 | 2017-06-23 | 内存访问技术及计算机系统 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US16/284,609 Continuation US10732876B2 (en) | 2017-06-23 | 2019-02-25 | Memory access technology and computer system |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2018232736A1 true WO2018232736A1 (zh) | 2018-12-27 |
Family
ID=64735409
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/CN2017/089774 WO2018232736A1 (zh) | 2017-06-23 | 2017-06-23 | 内存访问技术及计算机系统 |
Country Status (8)
Country | Link |
---|---|
US (3) | US10732876B2 (zh) |
EP (3) | EP3822798B1 (zh) |
JP (2) | JP6900518B2 (zh) |
KR (3) | KR102532173B1 (zh) |
CN (1) | CN109478168B (zh) |
BR (1) | BR112019026942B1 (zh) |
ES (1) | ES2840423T3 (zh) |
WO (1) | WO2018232736A1 (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10877669B1 (en) * | 2011-06-30 | 2020-12-29 | Amazon Technologies, Inc. | System and method for providing a committed throughput level in a data store |
US10831650B2 (en) * | 2018-03-07 | 2020-11-10 | Exten Technologies, Inc. | Systems and methods for accessing non-volatile memory and write acceleration cache |
US11442634B2 (en) * | 2018-04-12 | 2022-09-13 | Micron Technology, Inc. | Replay protected memory block command queue |
US10969994B2 (en) * | 2018-08-08 | 2021-04-06 | Micron Technology, Inc. | Throttle response signals from a memory system |
US11074007B2 (en) | 2018-08-08 | 2021-07-27 | Micron Technology, Inc. | Optimize information requests to a memory system |
US11409436B2 (en) | 2018-08-08 | 2022-08-09 | Micron Technology, Inc. | Buffer management in memory systems for read and write requests |
US10782916B2 (en) | 2018-08-08 | 2020-09-22 | Micron Technology, Inc. | Proactive return of write credits in a memory system |
US11210093B2 (en) | 2019-04-08 | 2021-12-28 | Micron Technology, Inc. | Large data read techniques |
US11256423B2 (en) * | 2019-10-14 | 2022-02-22 | Western Digital Technologies, Inc. | Efficiently identifying command readiness based on system state and data spread in multi queue depth environment |
CN110781120B (zh) * | 2019-10-23 | 2023-02-28 | 山东华芯半导体有限公司 | 一种axi总线主机设备跨4kb传输的实现方法 |
US11599485B2 (en) * | 2020-11-25 | 2023-03-07 | Micron Technology, Inc. | Status check using signaling |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101876944A (zh) * | 2009-11-26 | 2010-11-03 | 威盛电子股份有限公司 | 动态随机存取存储器控制器和控制方法 |
US20110041039A1 (en) * | 2009-08-11 | 2011-02-17 | Eliyahou Harari | Controller and Method for Interfacing Between a Host Controller in a Host and a Flash Memory Device |
CN102414666A (zh) * | 2009-05-06 | 2012-04-11 | 苹果公司 | 用于受管理的非易失性存储器的低等待时间读取操作 |
CN103034603A (zh) * | 2012-12-07 | 2013-04-10 | 天津瑞发科半导体技术有限公司 | 多通道闪存卡控制装置及其控制方法 |
CN106843772A (zh) * | 2017-02-14 | 2017-06-13 | 郑州云海信息技术有限公司 | 一种基于一致性总线扩展非易失内存的系统及方法 |
Family Cites Families (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH07302176A (ja) * | 1994-05-09 | 1995-11-14 | Toshiba Corp | 半導体ディスク装置 |
US7480781B2 (en) * | 2004-12-30 | 2009-01-20 | Intel Corporation | Apparatus and method to merge and align data from distributed memory controllers |
WO2010093356A1 (en) * | 2009-02-11 | 2010-08-19 | Stec, Inc. | A flash backed dram module |
TWI454906B (zh) * | 2009-09-24 | 2014-10-01 | Phison Electronics Corp | 資料讀取方法、快閃記憶體控制器與儲存系統 |
JP5611889B2 (ja) * | 2011-05-17 | 2014-10-22 | 株式会社東芝 | データ転送装置、データ送信システムおよびデータ送信方法 |
US9294564B2 (en) * | 2011-06-30 | 2016-03-22 | Amazon Technologies, Inc. | Shadowing storage gateway |
US8793343B1 (en) * | 2011-08-18 | 2014-07-29 | Amazon Technologies, Inc. | Redundant storage gateways |
CN102609378B (zh) * | 2012-01-18 | 2016-03-30 | 中国科学院计算技术研究所 | 一种消息式内存访问装置及其访问方法 |
CN104216837A (zh) * | 2013-05-31 | 2014-12-17 | 华为技术有限公司 | 一种内存系统、内存访问请求的处理方法和计算机系统 |
CN104375946B (zh) * | 2013-08-16 | 2018-04-20 | 华为技术有限公司 | 一种数据处理的方法及装置 |
JP6217241B2 (ja) | 2013-08-28 | 2017-10-25 | コニカミノルタ株式会社 | 胸部診断支援システム |
US9021154B2 (en) * | 2013-09-27 | 2015-04-28 | Intel Corporation | Read training a memory controller |
JP6287571B2 (ja) * | 2014-05-20 | 2018-03-07 | 富士通株式会社 | 演算処理装置、情報処理装置、及び、演算処理装置の制御方法 |
US9823864B2 (en) * | 2014-06-02 | 2017-11-21 | Micron Technology, Inc. | Systems and methods for throttling packet transmission in a scalable memory system protocol |
KR102249416B1 (ko) * | 2014-06-11 | 2021-05-07 | 삼성전자주식회사 | 메모리 시스템 및 메모리 시스템의 구동 방법 |
WO2016071954A1 (ja) * | 2014-11-04 | 2016-05-12 | 株式会社日立製作所 | 半導体メモリデバイス、及び、半導体メモリデバイスを有するストレージ装置 |
US9711194B2 (en) * | 2015-01-28 | 2017-07-18 | Xilinx, Inc. | Circuits for and methods of controlling the operation of a hybrid memory system |
US9778864B2 (en) * | 2015-03-10 | 2017-10-03 | SK Hynix Inc. | Data storage device using non-sequential segment access and operating method thereof |
JP6515602B2 (ja) * | 2015-03-12 | 2019-05-22 | 日本電気株式会社 | データ処理装置及びデータ処理方法 |
JP6541998B2 (ja) * | 2015-03-24 | 2019-07-10 | 東芝メモリ株式会社 | メモリデバイス、半導体装置および情報処理装置 |
US10353747B2 (en) * | 2015-07-13 | 2019-07-16 | Futurewei Technologies, Inc. | Shared memory controller and method of using same |
US10254990B2 (en) * | 2015-12-07 | 2019-04-09 | Netapp, Inc. | Direct access to de-duplicated data units in memory-based file systems |
US9460791B1 (en) * | 2015-12-08 | 2016-10-04 | Inphi Corporation | Data clock synchronization in hybrid memory modules |
US10152237B2 (en) * | 2016-05-05 | 2018-12-11 | Micron Technology, Inc. | Non-deterministic memory protocol |
KR102554416B1 (ko) * | 2016-08-16 | 2023-07-11 | 삼성전자주식회사 | 메모리 장치의 내부 상태 출력 장치 및 이를 적용하는 메모리 시스템 |
US20180059933A1 (en) * | 2016-08-26 | 2018-03-01 | Sandisk Technologies Llc | Electrically-Buffered NV-DIMM and Method for Use Therewith |
US10542089B2 (en) * | 2017-03-10 | 2020-01-21 | Toshiba Memory Corporation | Large scale implementation of a plurality of open channel solid state drives |
-
2017
- 2017-06-23 KR KR1020227031161A patent/KR102532173B1/ko active IP Right Grant
- 2017-06-23 KR KR1020207001375A patent/KR102336232B1/ko active IP Right Grant
- 2017-06-23 EP EP20195180.3A patent/EP3822798B1/en active Active
- 2017-06-23 WO PCT/CN2017/089774 patent/WO2018232736A1/zh unknown
- 2017-06-23 CN CN201780043116.5A patent/CN109478168B/zh active Active
- 2017-06-23 BR BR112019026942-8A patent/BR112019026942B1/pt active IP Right Grant
- 2017-06-23 EP EP17914958.8A patent/EP3480702B1/en active Active
- 2017-06-23 KR KR1020217039534A patent/KR102443106B1/ko active IP Right Grant
- 2017-06-23 JP JP2019570989A patent/JP6900518B2/ja active Active
- 2017-06-23 ES ES17914958T patent/ES2840423T3/es active Active
- 2017-06-23 EP EP22188013.1A patent/EP4152166A3/en active Pending
-
2019
- 2019-02-25 US US16/284,609 patent/US10732876B2/en active Active
-
2020
- 2020-07-13 US US16/927,066 patent/US11231864B2/en active Active
-
2021
- 2021-06-15 JP JP2021099325A patent/JP7162102B2/ja active Active
-
2022
- 2022-01-06 US US17/569,911 patent/US11681452B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102414666A (zh) * | 2009-05-06 | 2012-04-11 | 苹果公司 | 用于受管理的非易失性存储器的低等待时间读取操作 |
US20110041039A1 (en) * | 2009-08-11 | 2011-02-17 | Eliyahou Harari | Controller and Method for Interfacing Between a Host Controller in a Host and a Flash Memory Device |
CN101876944A (zh) * | 2009-11-26 | 2010-11-03 | 威盛电子股份有限公司 | 动态随机存取存储器控制器和控制方法 |
CN103034603A (zh) * | 2012-12-07 | 2013-04-10 | 天津瑞发科半导体技术有限公司 | 多通道闪存卡控制装置及其控制方法 |
CN106843772A (zh) * | 2017-02-14 | 2017-06-13 | 郑州云海信息技术有限公司 | 一种基于一致性总线扩展非易失内存的系统及方法 |
Non-Patent Citations (1)
Title |
---|
See also references of EP3480702A4 * |
Also Published As
Publication number | Publication date |
---|---|
EP4152166A3 (en) | 2023-04-26 |
JP2021152933A (ja) | 2021-09-30 |
JP7162102B2 (ja) | 2022-10-27 |
CN109478168B (zh) | 2020-12-04 |
EP3822798A2 (en) | 2021-05-19 |
EP3480702A4 (en) | 2019-09-04 |
KR20200019706A (ko) | 2020-02-24 |
BR112019026942B1 (pt) | 2024-02-15 |
US11231864B2 (en) | 2022-01-25 |
KR20220129100A (ko) | 2022-09-22 |
EP4152166A2 (en) | 2023-03-22 |
EP3822798B1 (en) | 2022-08-24 |
EP3480702B1 (en) | 2020-09-30 |
KR102532173B1 (ko) | 2023-05-16 |
US20220206686A1 (en) | 2022-06-30 |
CN109478168A (zh) | 2019-03-15 |
KR102336232B1 (ko) | 2021-12-07 |
EP3480702A1 (en) | 2019-05-08 |
BR112019026942A2 (pt) | 2020-07-07 |
US20200393965A1 (en) | 2020-12-17 |
US11681452B2 (en) | 2023-06-20 |
US20190196716A1 (en) | 2019-06-27 |
KR20210150611A (ko) | 2021-12-10 |
KR102443106B1 (ko) | 2022-09-14 |
EP3822798A3 (en) | 2021-06-09 |
ES2840423T3 (es) | 2021-07-06 |
JP2020524859A (ja) | 2020-08-20 |
JP6900518B2 (ja) | 2021-07-07 |
US10732876B2 (en) | 2020-08-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7162102B2 (ja) | メモリアクセス技術およびコンピュータシステム | |
US20200218662A1 (en) | Data caching device and control method therefor, data processing chip, and data processing system | |
JP6373487B2 (ja) | 方法、プログラム、装置、メモリデバイス、電子デバイス、およびコンピュータ可読記録媒体 | |
WO2013170731A1 (zh) | 将数据写入存储设备的方法与存储设备 | |
TW201234188A (en) | Memory access device for memory sharing among multiple processors and access method for the same | |
CN111448543B (zh) | 内存访问技术及计算机系统 | |
CN107783727B (zh) | 一种内存设备的访问方法、装置和系统 | |
KR20200100151A (ko) | 집단화된 메모리 장치에 대한 메모리 요청 스케줄링 | |
CN117312201B (zh) | 一种数据传输方法、装置及加速器设备、主机和存储介质 | |
EP2998867B1 (en) | Data writing method and memory system | |
US8639840B2 (en) | Processing unit, chip, computing device and method for accelerating data transmission | |
WO2019084789A1 (zh) | 直接存储器访问控制器、数据读取方法和数据写入方法 | |
CN110781107A (zh) | 基于dram接口的低延迟融合io控制方法和装置 | |
US20220253238A1 (en) | Method and apparatus for accessing solid state disk | |
US8959278B2 (en) | System and method for scalable movement and replication of data | |
CN117472817A (zh) | 数据处理方法、装置、系统及网卡 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 17914958 Country of ref document: EP Kind code of ref document: A1 |
|
ENP | Entry into the national phase |
Ref document number: 2017914958 Country of ref document: EP Effective date: 20190204 |
|
ENP | Entry into the national phase |
Ref document number: 2019570989 Country of ref document: JP Kind code of ref document: A |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
REG | Reference to national code |
Ref country code: BR Ref legal event code: B01A Ref document number: 112019026942 Country of ref document: BR |
|
ENP | Entry into the national phase |
Ref document number: 20207001375 Country of ref document: KR Kind code of ref document: A |
|
ENP | Entry into the national phase |
Ref document number: 112019026942 Country of ref document: BR Kind code of ref document: A2 Effective date: 20191217 |