WO2014056178A1 - 内存系统、内存模块、内存模块的访问方法以及计算机系统 - Google Patents

内存系统、内存模块、内存模块的访问方法以及计算机系统 Download PDF

Info

Publication number
WO2014056178A1
WO2014056178A1 PCT/CN2012/082824 CN2012082824W WO2014056178A1 WO 2014056178 A1 WO2014056178 A1 WO 2014056178A1 CN 2012082824 W CN2012082824 W CN 2012082824W WO 2014056178 A1 WO2014056178 A1 WO 2014056178A1
Authority
WO
WIPO (PCT)
Prior art keywords
memory
memory module
interface
module
access
Prior art date
Application number
PCT/CN2012/082824
Other languages
English (en)
French (fr)
Inventor
张立新
陈明宇
黄永兵
Original Assignee
华为技术有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 华为技术有限公司 filed Critical 华为技术有限公司
Priority to PCT/CN2012/082824 priority Critical patent/WO2014056178A1/zh
Priority to CN201280001334.XA priority patent/CN103988186A/zh
Priority to EP12886312.3A priority patent/EP2887223A4/en
Publication of WO2014056178A1 publication Critical patent/WO2014056178A1/zh
Priority to US14/676,021 priority patent/US20150261698A1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
    • G06F13/1621Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by maintaining request order
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1684Details of memory controller using multiple buses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1689Synchronisation and timing concerns
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C5/00Details of stores covered by group G11C11/00
    • G11C5/02Disposition of storage elements, e.g. in the form of a matrix array
    • G11C5/04Supports for storage elements, e.g. memory modules; Mounting or fixing of storage elements on such supports
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C5/00Details of stores covered by group G11C11/00
    • G11C5/06Arrangements for interconnecting storage elements electrically, e.g. by wiring
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1003Interface circuits for daisy chain or ring bus memory arrangements
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C8/00Arrangements for selecting an address in a digital store
    • G11C8/12Group selection circuits, e.g. for memory block selection, chip selection, array selection

Definitions

  • Memory system memory module, access method of memory module, and computer system
  • the present invention relates to the field of computers, and in particular, to a memory system, a memory module, a memory module access method, and a computer system. Since the late 1990s, the processor process has developed about 27% faster than the memory process, resulting in computer memory. The system has gradually become a bottleneck restricting the performance of the entire system, and the "memory wall" has gradually emerged.
  • the performance metrics of the memory system are mainly memory bandwidth and memory latency. Memory latency can be based on the sensitivity of different requests to latency, using a reasonable request scheduling strategy to mitigate the impact of access latency on application performance. As the application pressure on memory continues to increase, the constraints of memory bandwidth are highlighted.
  • the "memory bandwidth wall” phenomenon summarizes the limitations of the bandwidth of existing memory systems on overall system performance.
  • one or more memory channels may exist.
  • the memory channels are managed by a memory controller.
  • Each memory channel can support one or more memory slots, and each memory slot supports a memory module and a memory chip.
  • the memory channel and the memory controller comply with the synchronous DDR (Double Date Rate) protocol and timing constraints. The currently free memory module cannot be bound by timing. Receive commands or transfer data.
  • memory bandwidth is a valuable resource, and it is a pity to waste bandwidth. How to improve the effective utilization of memory bandwidth is an important challenge to alleviate the bottleneck of the memory system.
  • the main idea of mining the bandwidth resources of the memory system is to allocate requests to each memory channel, rank, and even bank to improve the concurrency of request processing.
  • the high degree of concurrency of the request means that the request can be processed on multiple memory channels at the same time, thereby reducing the memory bus idle ratio and the waste of memory bandwidth resources.
  • the memory address mapping technique directly determines the size of the request parallelism.
  • the current memory address mapping technology improves the concurrency of the memory system by modifying the memory address mapping, thereby improving the utilization of the memory bandwidth.
  • the modification of the memory address mapping method depends on the characteristics of the application. The characteristics of different applications and the characteristics of different applications in different periods may have large differences, which makes the method of modifying memory address mapping less efficient, and the method is only suitable for some applications, and has certain limitations. Summary of the invention
  • the embodiment of the invention provides a memory system, a memory module, a memory module access method, and a computer system, which are used to improve the utilization of the memory channel and alleviate the bottleneck of the memory system to some extent.
  • the embodiment of the present invention provides a memory system, where the memory system includes: a first memory module, a second memory module; the first memory module is provided with a first memory channel interface, and passes the first The memory channel interface is connected to the first memory channel; the second memory module is provided with the second memory channel An interface, and connecting, by the second memory channel interface, a second memory channel; the first memory module and the second memory module are further respectively provided with a first memory module interconnection interface, where the first memory module is The first memory module interconnection interface is connected to the first memory module interconnection interface of the second memory module.
  • the first memory module is configured to interconnect between a first memory module interface of the first memory module and a first memory module of the second memory module
  • the connection of the interface and the second memory channel receive or transmit access data to the memory system, and receive or transmit access data to the memory system through the first memory channel.
  • the access data of the memory system includes one or more of the following: an access request to the first memory module, Response data or associated data of an access request of a memory module, an access request to the second memory module, and response data or associated data of an access request to the second memory module.
  • the first memory module includes a first memory management unit and at least one storage unit
  • the first memory management unit is connected to the first memory module interconnection interface, the first memory channel interface, and the storage unit, and the first memory management unit is configured to: pass the first memory Receiving, by the channel interface, access data; determining, according to the access data, whether the destination memory module of the access data is the first memory module; if the destination memory module of the access data is not the first memory module, The access data is sent to the second memory module through the first memory module interconnection interface; if the destination memory module of the access data is the first memory module, determining the access according to the access data
  • the destination storage unit of the data association performs an operation on the destination storage unit according to the access data, where the destination storage unit is Said first memory die One or more of the storage units of the block.
  • the first memory management unit is further configured to: receive, by using the first memory module interconnection interface, access data, determine the access a destination storage unit of data association; performing an operation on the destination storage unit according to the access data.
  • the memory system further includes a third memory module, where the third memory module is configured with a third channel interface;
  • the third channel interface is connected to the third memory channel;
  • the first memory module and the third memory module are further provided with a second memory module interconnection interface, and the second memory module of the first memory module is mutually
  • the connection port is connected to the second memory module interconnection interface of the third memory module;
  • the first memory module is further configured to use the second memory module interconnection interface of the first memory module and the third A connection between the second memory module interconnection interface of the memory module and the third memory channel receive or transmit access data to the memory system.
  • the access data to the memory system includes one or more of the following: an access request to the first memory module, Response data or associated data of an access request of the first memory module, an access request to the second memory module, response data or associated data of an access request to the second memory module, to the third memory module An access request, and response data or associated data for an access request to the third memory module.
  • the first memory module includes a first memory management unit and at least one storage unit, where An interconnection between the memory management unit and the first memory module, and between the second memory module
  • the first memory management unit is configured to: receive access data by using the first memory channel interface; and determine the access data according to the access data, where the first memory management unit is connected to the first memory channel interface Whether the destination memory module is the first memory module; if the destination memory module of the access data is not the first memory module, according to the correspondence between the target address of the access data and the interconnection interface between the memory modules a relationship between the inter-memory module interconnection interface corresponding to the access data, and if the inter-memory inter-module interconnection interface corresponding to the access data is an inter-memory inter-module interconnection interface, the access data is The first memory module interconnection interface is sent to the second memory module, and if the memory module interconnection interface corresponding to the access data
  • the embodiment of the present invention provides a memory module, where the memory module is provided with a memory channel interface and a first memory module interconnection interface, the memory module includes a memory management unit and at least one storage unit, the memory a management unit is connected to the memory channel interface, the first memory module interconnection interface, and the storage unit; the memory channel interface is configured to connect to a memory channel; and the memory management unit is configured to pass the memory channel interface And the memory channel connected to the memory channel interface receives or sends access data; the first memory module interconnection interface is used to connect with a first memory module other than the memory module; the memory management unit further And for transmitting or receiving access data by using the first inter-memory module interconnection interface and a connection between the memory module and the first memory module.
  • the access data includes one or more of the following: an access request to the memory module, response data to an access request of the memory module, or associated data, An access request to the first memory module, and response data or associated data for an access request to the first memory module.
  • the memory management unit is specifically configured to: receive, by using the memory channel interface and the memory channel, accessing a plurality of blocks;
  • the destination memory module of the access data is not the current memory module, and the access data is sent to the first memory module through the first memory module interconnection interface; if the destination memory module of the access data is the current memory
  • the module determines, according to the access data, a destination storage unit associated with the access data, and performs an operation on the destination storage unit according to the access data, where the destination storage unit is in a storage unit of a current memory module. one or more.
  • the memory management unit is further configured to: use the first memory module interconnection interface, the memory module, and the first memory The connection between the modules receives the access data, determines a destination storage unit associated with the access data, and performs an operation on the destination storage unit based on the access data.
  • the memory module is further configured with a second memory module interconnection interface, where the memory management unit is further connected to the second memory module interconnection interface; a second memory module interconnect interface is configured to be connected to the second memory module except the memory module and the first memory module; the memory management unit is further configured to use the second memory module interconnect interface And receiving, by the connection between the memory module and the second memory module, access data.
  • the accessing the data packet And one or more of the following: an access request to the memory module, response data or associated data of an access request to the memory module, an access request to the first memory module, to the first memory module Accessing the requested response data or associated data, an access request to the second memory module, and response data or associated data for an access request to the second memory module.
  • the memory management unit is specifically configured to: receive, by using the memory channel interface, accessing a plurality of blocks;
  • the destination memory module of the access data is not the current memory module, and the interconnection interface between the memory modules corresponding to the access data is determined according to the correspondence between the target address of the access data and the interconnection interface between the memory modules.
  • the access data is sent to the first memory module through the first inter-memory inter-module interface
  • the access data is sent to the second memory module through the second inter-memory inter-module interface
  • the destination memory module of the access data is a current memory module, determining a destination storage associated with the access data according to the access data Element, according to the execution of the data access object memory cell operation, wherein the destination storage unit is a current or more memory cells in the memory module.
  • the memory management unit is further configured to: receive, by using the first memory module interconnection interface, access data; Whether the destination memory module of the access data is the current memory module; if the destination memory module of the access data is not the current memory module, sending the access data to the second through the second memory module interconnection interface a memory module; if the destination memory module of the access data is current And storing, by the access module, a destination storage unit associated with the access data, performing operations on the destination storage unit according to the access data, where the destination storage unit is in a storage unit of a current memory module One or more.
  • an embodiment of the present invention provides a memory module access method, where the access method includes: receiving a read request through an inter-memory inter-interface interface, where the inter-memory inter-memory interface is used to connect in addition to the current memory module.
  • the other memory module determining, according to the read request, a destination storage unit associated with the read request, the destination storage unit being one or more of the storage units included in the memory module; reading the destination storage
  • the data stored in the unit is used as response data of the read request; the response data of the read request is sent through the inter-memory module interconnection interface or through a memory channel interface on the memory module.
  • the method further includes: determining, according to the read request, whether the target memory module of the read request is a current memory module; The requested memory module is not the current memory module, and the read request is sent to the other memory module through the memory module interconnection interface associated with the read request; if the destination memory module of the read request is the current memory module, And performing the step of determining, according to the read request, a destination storage unit associated with the read request.
  • the determining, by the read request, whether the destination memory module of the read request is a current memory module specifically: determining the read request Whether the target address belongs to the address space of the current memory module; or, determining whether the target address of the read request is the address of the current memory module.
  • the request is sent to the other memory module through the memory module interconnection interface associated with the read request, and the method includes: if the destination memory module of the read request is not the current memory module, querying the current memory according to the target address of the read request a routing table of the module, obtains an identifier of an interconnection interface between the memory modules associated with the target address of the read request; and interconnects the read request with an inter-memory interface corresponding to an identifier of an interconnection interface between the memory modules
  • the routing table stores the correspondence between the identifier of the interconnect interface of the memory module of the current memory module and the address of another memory module connected to the current memory module.
  • the first implementation manner of the third aspect or the second implementation manner of the third aspect, in the fourth implementation manner if the destination memory module of the read request is not the current memory module, the reading is performed
  • the request is sent to the other memory module through the inter-memory module interconnection interface associated with the read request, specifically: if the destination memory module of the read request is not the current memory module, obtaining the memory from the target address of the read request
  • the identifier of the inter-module interconnection interface is sent to the other memory module through the inter-memory interface interconnection interface corresponding to the identifier of the interconnection interface between the memory modules.
  • the method further includes: receiving a write request by using an inter-memory inter-interface interconnection interface; and receiving, by the inter-memory inter-module interconnection interface, the associated data of the write request; or Receiving, by the memory channel interface of the memory module, the associated data of the write request; determining, according to the write request, a destination storage unit associated with the write request; and writing the associated data of the write request to the destination storage unit .
  • the method further includes: determining, according to the write request, whether the destination memory module of the write request is a current memory module; if the destination memory module of the write request is not a current memory module, then the write request is And the associated data of the write request is sent to the other memory module through the inter-memory module interconnection interface associated with the write request; if the destination memory module of the write request is the current memory module, executing the pass the memory
  • the inter-module interconnection interface receives the associated data of the write request; or the step of receiving the associated data of the write request through a memory channel interface of the memory module.
  • an embodiment of the present invention provides a memory module access method, where the access method includes: receiving, by using a memory channel interface of a memory module, an access request; determining, according to the access request, whether a destination memory module of the access request is current a memory module; if the destination memory module of the access request is not the current memory module, sending the access request to another memory module through an inter-memory interface of the current memory module associated with the access request.
  • determining whether the destination memory module of the access request is a current memory module according to the access request specifically: determining whether a target address of the access request belongs to current memory The address space of the module; or, determining whether the target address of the access request is the address of the current memory module.
  • the access request is passed through the access
  • the memory module inter-interface of the current memory module that is requested to be associated is sent to the other memory module
  • the method includes: if the destination memory module of the access request is not the current memory module, querying the current memory module according to the target address of the access request a routing table, configured to obtain an identifier of an inter-memory interface interconnection interface associated with the target address of the access request, and send the access request to an inter-memory inter-module interconnection interface corresponding to an identifier of an interconnection interface between the memory modules Other memory modules; the road The correspondence between the identifier of the interconnect interface between the memory modules in which the current memory module is stored in the table and the address of other memory modules connected to the current memory module.
  • the access request is passed through the access
  • the memory module inter-interface of the current memory module that is requested to be associated is sent to the other memory module, and the method includes: if the destination memory module of the access request is not the current memory module, obtaining the memory module from the target address of the access request An identifier of the interconnect interface; the access request is sent to the other memory module through an inter-memory inter-module interface corresponding to the identifier of the interconnect interface between the memory modules.
  • a fifth aspect of the present invention provides a memory module access control method, where the method includes: when a target address of an access request received by a memory controller is located in a first memory module, and accessing the first memory module When the memory channel is busy, the memory controller interconnects the access request by accessing a second memory channel of the second memory module and a second memory module of the second memory module connected to the first memory module The interface, and the second memory module is connected to the first memory module through the connection between the second memory module interconnection interface and the first memory module.
  • the method further includes: when a target address of the access request received by the memory controller is located in the second memory module, and accessing the second memory channel of the second memory module When busy, the memory controller interconnects the access request by accessing a first memory channel of the first memory module and a first memory module of the first memory module connected to the second memory module. And the first memory module is sent to the second memory module through a connection between the first memory module interconnection interface and the second memory module.
  • an embodiment of the present invention provides a computer system, where the computer system includes: a memory controller, and a first memory module and a second memory module; the memory module is connected to the memory controller; the first memory module is provided with a first memory channel interface, and is connected through the first memory channel interface a first memory channel; the second memory module is provided with a second memory channel interface, and is connected to the second memory channel through the second memory channel interface, wherein the first memory module passes the first memory channel and the a memory controller is connected, the second memory module is connected to the memory controller through the second memory channel; and the first memory module and the second memory module are respectively provided with a first memory module interconnection The interface, the first memory module interconnection interface of the first memory module is connected to the first memory module interconnection interface of the second memory module.
  • the first memory module is configured to interconnect between a first memory module interface of the first memory module and a first memory module of the second memory module
  • the connection of the interface and the second memory channel receive or transmit access data, and receive or transmit access data through the first memory channel.
  • the access data includes one or more of the following: an access request to the first memory module, to the first memory module The response data or associated data of the access request, the access request to the second memory module, and the response data or associated data of the access request to the second memory module.
  • the first memory module includes a first memory management unit and at least one storage unit
  • the first memory management unit is connected to the first memory module interconnection interface, the first memory channel interface, and the storage unit, and the first memory management unit is configured to: pass the first memory
  • the channel interface receives the access data, and determines, according to the access data, whether the destination memory module of the access data is the first memory module; if the destination memory module of the accessed data is not
  • the first memory module sends the access data to the second memory module through the first memory module interconnection interface; if the destination memory module of the access data is the first memory module, Determining, by the access data, a destination storage unit associated with the access data, performing an operation on the destination storage unit according to the access data, wherein the destination storage unit is in a storage unit of the first memory module one or more.
  • the first memory management unit is further configured to: receive access data by using the first memory module interconnection interface, and determine the access a destination storage unit of data association; performing an operation on the destination storage unit according to the access data.
  • the system further includes a third memory module, where the third memory module is configured with a third channel interface, and the third memory module passes The third channel interface is connected to the third memory channel; the first memory module and the third memory module are further provided with a second memory module interconnection interface, and the second memory module of the first memory module is mutually
  • the connection port is connected to the second memory module interconnection interface of the third memory module; the first memory module is further configured to use the second memory module interconnection interface of the first memory module and the third A connection between the second memory module interconnection interface of the memory module and the third memory channel receive or transmit access data to the memory system.
  • the access data includes one or more of the following: an access request to the first memory module, to the first memory module Response data or associated data of the access request, an access request to the second memory module, response data or associated data to an access request of the second memory module, an access request to the third memory module, and Response data or associated data for an access request to the third memory module.
  • the first memory module includes a first memory management unit and at least one storage unit, where a memory management unit is connected to the first memory module interconnection interface, the second memory module interconnection interface, the first memory channel interface, and the storage unit, and the first memory management unit is used for Receiving, by the first memory channel interface, access data; determining, according to the access data, whether the destination memory module of the access data is the first memory module; if the destination memory module of the access data is not the first The memory module determines, according to the correspondence between the target address of the access data and the interconnection interface between the memory modules, an interconnection interface between the memory modules corresponding to the access data, and a memory module corresponding to the access data.
  • the inter-interconnect interface is an inter-memory inter-module interconnection interface
  • the access data is sent to the first inter-memory inter-module interconnection interface to And the second memory module sends the access data to the second memory module interconnection interface to the second memory module interconnection interface, if the memory module interconnection interface corresponding to the access data is the second memory module interconnection interface And the third memory module; if the destination memory module of the access data is the first memory module, determining, according to the access data, a destination storage unit associated with the access data, according to the access data The destination storage unit performs an operation, wherein the destination storage unit is one or more of the storage units of the first memory module.
  • the first memory channel is connected to the first memory controller
  • the second memory channel is connected to the second memory controller
  • the first memory controller is connected to the first processor, and the second memory controller is connected to the second processor; or Description The first memory controller is built in the first processor, and the second memory controller is built in the second processor.
  • the first processor is disposed on a first board, and the second processor is disposed on a second board.
  • the first processor and the second processor respectively run different operating systems.
  • a plurality of memory modules belonging to different memory channels in the memory system can pass through the interconnection interface between the memory modules.
  • Establishing a communication connection so that the memory module in the memory system can be accessed by multiple memory channels at the same time, so that when a certain memory channel is overloaded, the load is too large through another lightly loaded memory channel.
  • the access of the memory module on the memory channel solves the imbalance of the memory channel load to some extent, and effectively improves the utilization of the memory channel.
  • FIG. 1 is a schematic diagram of a logical structure of a memory system according to an embodiment of the present invention
  • FIG. 2a is a schematic diagram of a logical structure of another memory system according to an embodiment of the present invention
  • FIG. 2b is a schematic diagram of a logical structure of another memory system according to an embodiment of the present invention
  • FIG. 3 is a schematic diagram of a logical structure of a memory module according to an embodiment of the present invention
  • FIG. 3 is a schematic diagram of a logical structure of another memory module according to an embodiment of the present invention
  • FIG. 5 is a schematic diagram of a logical structure of another memory system according to an embodiment of the present disclosure.
  • FIG. 6 is a schematic diagram of a logical structure of another memory system according to an embodiment of the present disclosure.
  • FIG. 7 is a schematic diagram of a logical structure of another memory system according to an embodiment of the present disclosure.
  • FIG. 8 is a schematic flowchart of a memory access method according to an embodiment of the present disclosure.
  • FIG. 9 is a schematic flowchart diagram of another memory access method according to an embodiment of the present disclosure.
  • FIG. 10 is a schematic diagram of a memory access method according to an embodiment of the present invention
  • FIG. 11 is a schematic flowchart of a memory access method according to an embodiment of the present invention
  • FIG. 12 is a schematic flowchart of another memory access method according to an embodiment of the present invention
  • FIG. 13 is a schematic flowchart of a memory access control method according to an embodiment of the present invention
  • FIG. 15a is a schematic diagram showing a partial logic structure of a computer system according to an embodiment of the present invention
  • FIG. 15b is a schematic diagram showing a partial logic structure of another computer system according to an embodiment of the present invention
  • FIG. 17 is a schematic diagram showing a partial logical structure of another computer system according to an embodiment of the present invention.
  • the CPU Central Processing Unit
  • the processor may also be an ASIC (Application Specific Integrated Circuit), or the other is configured to One or more integrated circuits of the embodiments of the present invention may be implemented, and those skilled in the art may understand that other implementations of the processor may also replace the CPU in the embodiment of the present invention.
  • ASIC Application Specific Integrated Circuit
  • the memory controller is an important part of the computer system's internal control memory module (or memory) and the exchange of data between the memory and the processor through the memory controller. At present, it is more popular to embed the memory controller into the CPU, but it is also possible to implement the memory controller and the CPU independently, and the two communicate through the connection.
  • a memory module is used to store operational data of a processor (such as a CPU).
  • a memory module usually includes one or more storage units (or memory chips).
  • the memory channel interface is the interface on the memory module that is used to connect to the memory channel.
  • the memory channel is the channel through which the memory module is connected to the memory controller.
  • one or more memory modules are connected to the memory channel through a memory channel interface, which in turn is connected to the memory controller through a memory channel.
  • Embodiments of the present invention do not limit the types of memory channel interfaces and memory channels and the transmission protocols that are followed unless explicitly stated.
  • DIMMs Dual Inline Memory Modules
  • SIMM Single The in-line memory module, the one-sided contact memory module
  • EDORAM Extended Data Output RAM
  • DRAM Dynamic Random Access Memory
  • DRAM is the most common memory chip, and one DIMM or SIMM can contain one or more DRAMs. DRAM can only keep data for a short time. In order to maintain data, DRAM uses capacitor storage, so it must be refreshed once in a while.
  • NVM Non-Volatile Memory
  • DIMM Non-Volatile Memory
  • SIMM SIMM
  • NVM Non-Volatile Memory
  • NVM is usually used to store programs and data. Unlike DRAM, the data stored in NVM is not lost after shutdown or power failure.
  • connection in the embodiment of the present invention refers to between two or more virtual modules, between two or more physical modules, or between physical modules and virtual modules.
  • There is a communication connection and the specific implementation may be one or more communication lines or signal lines.
  • connection can be a direct connection, either through an interface or a port connection, or through other virtual modules or physical modules.
  • the "first” and “second” and the like described in the embodiments of the present invention are not specifically described for the sake of distinction unless explicitly stated.
  • FIG. 1 is a schematic diagram of a logical structure of a memory system according to an embodiment of the present invention.
  • the memory system 100 includes: a first memory module 101, a second memory module 102, a first memory module 101, and a first memory channel interface 1011, and the first memory channel interface 1011 is connected.
  • the second memory module 102 is provided with a second memory channel interface 1021, and is connected to the second memory channel 104 through the second memory channel interface 1021; the first memory module 101 and the second memory module 102 are also provided with a first Inter-memory inter-module interconnect interfaces 1012 and 1022, first memory module 101
  • the first inter-memory module interconnect interface 1012 is connected to the second inter-memory inter-module interconnect interface 1022 of the second memory module 102, and the first memory module inter-interface 1012 and the second memory module 102 of the first memory module 101 are connected.
  • the connection of a memory inter-module interconnect interface 1022 is shown as 105 in FIG. It should be noted that the first memory channel 103 and the second memory channel 104 may also be connected to other one or more memory modules.
  • the first memory module 101 is configured to connect to the first inter-memory interconnect interface 1022 of the second memory module 102 through the first inter-memory inter-module interface 1012 of the first memory module 101 and the second The memory channel 104 receives or transmits access data to the memory system and receives or transmits access data to the memory system through the first memory channel 103.
  • the first memory module 101 is configured to receive or send a connection through the first memory module interconnection interface 1012 of the first memory module 101 and the memory module interconnection interface of other memory modules. Access data to the memory system.
  • the access data to the memory system includes one or more of the following: an access request to the first memory module, response data or associated data to an access request of the first memory module, to the An access request of the two memory modules, and response data or associated data of the access request to the second memory module.
  • the access request may be a read request and may be a write request.
  • the response data of the access request may be data that the read request is to be read from the memory system.
  • the associated data of the access request may be Write the data that the request is to be written to the memory system.
  • the first memory channel 103 forms a path 110 for accessing the first memory module 101 (shown by a dashed line with a double-headed arrow); the second memory channel 104 communicates with the memory module 105 to form an access point. a memory module's path 111; the path 110 and the path 111 are not shared
  • the physical bus is embodied such that the first memory channel 103 and the second memory channel 104 do not share the physical bus, so the path 110 and the path 111 can work in parallel.
  • it can receive access requests not only through the first memory channel 103, that is, the path 110 (the access request can come from the memory controller), but also through the second memory channel 104 and the memory module.
  • the communication connection 105, the path 111, receives the access request.
  • the second memory module 102 not only receives the access request through the second memory channel 104, but also receives the access request through the first memory channel 103 and the communication connection 105 between the memory modules.
  • the associated data of the access request or the response data of the access request returned by the memory module may also be selected according to the running status of the path (for example, busy or idle), and the transmission path of the access data is not limited in the embodiment of the present invention. That is, the access request and the response data or associated data of the access request may be transmitted through the same path or through different paths.
  • FIG. 2a is a schematic diagram of a logical structure of a memory system 200 according to an embodiment of the present invention.
  • 201-205, 210, 211, 2011, 2012, 2021, and 2022 in FIG. 2a are respectively associated with 101-105, 110, and 111 in FIG. 1011, 1012, 1021, and 1022 have the same meanings, and are not described herein again.
  • a memory controller 206 Also shown in Figure 2a is a memory controller 206.
  • the first memory module 201 and the second memory module 202 are connected to the same memory controller 206 through different memory channels.
  • the memory controller 206 is configured to detect the running status of the first memory channel 203 and the second memory channel 204, receive access data to the memory system, and according to the operating conditions of the first memory channel and the second memory channel Transmitting the access data to the memory system.
  • the operating condition includes busy and idle, when the target address of the received access request is located in the first memory
  • the memory controller 206 transmits the access request to the first memory module 201 through the path 211, that is, to the second memory module 202 through the second memory channel 204, by the second
  • the memory module 202 sends the access data to the first memory through the connection 205 between the first inter-memory inter-module interconnection interface 2022 of the second memory module 202 and the first inter-memory inter-module interconnection interface 2012 of the first memory module 201.
  • the memory controller 206 passes the access request to the first through the first memory channel 203.
  • the memory module 201 is connected by the first memory module 201 through the first memory module interconnection interface 2012 of the first memory module 201 and the first memory module interconnection interface 2022 of the second memory module 202.
  • the access data is sent to the second memory module 202.
  • the response data returned according to the read request can be returned through the idle path or back through the busy path; the associated data of the write request can be sent through the same path as the read request, or through different paths.
  • the embodiment of the present invention is not limited.
  • the memory controller 206 is further configured to record a path of the access data and a status of the access data, where the path of the access data includes the first memory channel or a second memory channel, and the status of the access data Including whether the access data is sent.
  • the path of the access request may be the path 210 or the path 211 of the first memory module 201, or the corresponding path of the second memory module 202.
  • the status of the access request includes whether the access request is sent, and/or whether the result of the access request is returned.
  • the memory controller 206 shown in FIG. 2a is embedded in the CPU 207.
  • the memory controller may be independent of the processor, and the memory controller communicates with the CPU through a physical connection.
  • the first memory channel is connected to the first memory controller
  • the second memory channel is connected to the second memory controller, that is, the first memory channel and the second memory channel are respectively connected
  • two memory controllers can be embedded inside the CPU or independent of the CPU.
  • the access request may be sent to the second memory controller through a communication connection between the two, so that the access request is passed by the second memory controller.
  • the second memory channel is sent to the second memory module, and the second memory module sends the access request to the first memory module through the inter-memory interface.
  • the module responsible for scheduling can be set, and the module has a communication connection with the two memory controllers, and the module monitors the idleness of the memory channel. Or busy state or the memory controller sends the status of the memory channel to the module, which determines which memory controller the access request is sent to based on the status of the two (or more) memory channels.
  • the specific scheduling method refers to the foregoing embodiment of the present invention, and details are not described herein again.
  • the memory system 200 can also include a third memory module 208 as shown in FIG. 2b.
  • the third memory module 208 is provided with a third channel interface 2082; the third memory module 208 is connected to the second memory channel 204 through the third channel interface 2082; the first memory module 201 and the third memory module 208 are further provided with a second memory module
  • the interconnection interface 2013 and 2081, the second inter-memory inter-module interconnection interface 2013 of the first memory module 201 is connected to the second inter-memory inter-module interconnection interface 2081 of the third memory module 208; compared with the embodiment of FIG. 2, FIG.
  • the first memory module 201 in the illustrated embodiment is further configured to pass between the second memory module interconnect interface 2013 of the first memory module 201 and the second memory module interconnect interface 2081 of the third memory module 208.
  • the connection and second memory channel 204 receives or transmits access data to the memory system.
  • the third memory module 208 The connected memory channel can be a memory channel other than the first memory channel and the second memory channel.
  • two or more memory channels in the memory system can be connected to two or two memory modules, and one-to-one and one-to-many can be established between the memory modules as needed. / or many-to-one connection relationship. For example, as shown in FIG.
  • the first memory channel 203 is connected to the fourth memory module 209 through the memory channel interface 2092 of the fourth memory module, and the fourth memory module 209 and the third memory module 208 are interconnected through the respective memory module interface 2091 and 2081 connection.
  • the first memory module and the third memory module can also be connected through another memory module interconnection interface (not shown).
  • the storage medium of the memory module in the embodiment of the present invention may be the same or different.
  • the first memory module 201 is a DRAM memory module
  • the second memory module 202 is an NVM or other type of memory module.
  • the memory module in the embodiment of the present invention may be an independent physical module, and the memory channel interface and the interconnection interface between the memory modules are physical interfaces.
  • the memory channel interface in the embodiment of the present invention may be a double rate interface that conforms to the DDR or DDR2 or DDR3 or DDR4 protocol, or other types of interfaces that follow other protocols.
  • FIG. 3a is a schematic diagram of an internal structure of a memory module 301 according to an embodiment of the present invention.
  • the memory module can be applied to the memory system of the foregoing embodiment of the present invention (for example, the first memory module 201 in FIG. 1, FIG. 2a, FIG. 2c). ), can also be applied to other memory systems.
  • the memory module 301 includes a memory management unit 3011, a memory channel interface 3012, an inter-memory module interconnection interface 3013 (connecting other memory modules), and a plurality of storage units 3014.
  • the memory management unit 3011 and the memory modules are mutually The connection port 3013, the memory channel interface 3012, and the storage unit 3014 are connected.
  • the memory channel interface 3012 is configured to connect to the memory channel; the memory management unit 3011 is configured to receive or send the access data through the memory channel interface and the memory channel connected by the memory channel interface;
  • the inter-block interconnect interface 3013 is configured to be connected to other memory modules than the memory module.
  • the memory management unit 3011 is further configured to send or receive access data through the inter-memory inter-module interconnect interface 3013.
  • memory management The unit 3011 is configured to send or receive access data through the inter-memory inter-module interconnection interface 3013 and a connection between the memory module and the other memory modules.
  • the access data includes one or more of: an access request to the memory module, response data or associated data to an access request of the memory module, an access request to the first memory module, and Response data or associated data of the access request of the first memory module.
  • the memory management unit 3011 is configured to receive access data through the memory channel interface 3012 and the memory channel, and determine, according to the access data, whether the destination memory module of the access data is a current memory module; The destination memory module of the data is not the current memory module, and the access data is sent to the other memory module through the first memory module interconnection interface 3013; if the destination memory module of the access data is the current memory module, then according to Determining, by the access data, a destination storage unit associated with the access data, performing operations on the destination storage unit according to the access data, wherein the destination storage unit is one or more of the storage units 3014 of the current memory module One.
  • the step of determining whether the module is the current memory module specifically includes: determining whether the target address of the access data belongs to an address space of the current memory module, or determining whether the target address of the access data is an address of the current memory module.
  • the target address of the access data is an address of the destination memory module of the access data, and may be a numerical value or a numerical range.
  • the target address can be carried by the access data itself.
  • the access data may include an identifier bit, where the identifier bit is used to identify whether the target address of the access data is a current memory module. This flag can be implemented as 0 And 1, if the received access data identification bit is 0, it is determined that the target address of the access data is the current memory module; if it is 1, it is not the current memory module.
  • the access data is a read request
  • a read operation is performed on the destination storage unit
  • a write operation is performed on the destination storage unit
  • the memory management unit 3011 is further configured to: interconnect the interface 3013 through the memory module and the memory module
  • the connection between the 301 and the other memory module receives the access data, determines the destination storage unit associated with the access data, and performs an operation on the destination storage unit based on the access data.
  • a memory module may include two or more inter-memory interface interconnect interfaces.
  • access data received through one of the inter-memory interconnect interfaces such as a read request or a write request, also needs to determine whether the destination memory module of the accessed data is the current memory module, because the current memory module may be An intermediate memory module from one memory module to the next.
  • the memory module 301 is further provided with a memory module interconnection interface 3015, and the memory management unit 3011 is also connected to the memory module interconnection interface 3015; the memory module interconnection interface 3015 is used for The memory module is connected to the memory module except the memory module connected to the memory module interconnect interface 3013.
  • the memory management unit 3011 is also used to receive or send through the memory module interconnect interface 3015 and its connection with other memory modules. Access data. Two or more memory modules connected between the inter-memory module interconnection interface 3013 and the inter-memory module interconnection interface 3015 may be connected to the same memory channel or may be connected to different memory channels.
  • the access data includes one or more of: an access request to the memory module, response data or associated data of an access request to the memory module, an access request to the first memory module, to the Response data or associated data of an access request of a memory module, an access request to the second memory module, and to the second memory module Response data or associated data for the access request ⁇
  • the memory management unit 3011 is specifically configured to: receive access data through the memory channel interface 3012; whether the module is a current memory module; if the destination memory module of the access data is not the current memory module, according to the access data Corresponding relationship between the target address and the interconnection interface between the memory modules, and determining an interconnection interface between the memory modules corresponding to the access data, if the interconnection interface between the memory modules corresponding to the access data is an interconnection interface between the memory modules 3013, the access data is sent to the other memory modules connected to 3013 through the inter-memory inter-memory interface 3013, and if the inter-memory inter-interface interface corresponding to the access data is the inter-memory inter-memory interface 3015, The access data is sent to the other memory module connected to the 3015 through the inter-memory inter-memory interface 3015; if the destination memory module of the data is accessed, the operation is performed on the destination storage unit according to the access data, where The destination storage
  • the memory management unit 3011 is further configured to: receive, by using the inter-memory inter-module interconnection interface 3013, access data; and determine, according to the access data, whether the destination memory module of the access data is a current memory module; If the destination memory module of the access data is not the current memory module, send the access data to the other memory module connected to 3015 through the inter-memory module interconnection interface 3015; if the destination memory module of the access data is the current memory The module performs operations according to the destination storage unit, where the destination storage unit is one or more of the storage units of the current memory module.
  • the memory module of the above method receives the access data through one of the interconnection interfaces between the two memory modules, it can also be judged whether it is forwarded through the memory channel or another memory module interconnection interface.
  • the access data received from the memory channel or one of the memory module interconnection interfaces needs to be judged to determine which memory module is interconnected. The interface is forwarded out.
  • the memory module is an independent physical module, and the memory channel interface and the memory module interconnection interface are physical interfaces.
  • the memory channel interface can be double data rate DDR or DDR2 or DDR3 or DDR4 interface.
  • the memory unit includes a dynamic random access memory DRAM chip and/or a non-volatile memory NVM chip.
  • a plurality of memory modules belonging to different memory channels in the memory system can pass through the interconnection interface between the memory modules.
  • Establishing a communication connection so that the memory module in the memory system can be accessed by multiple memory channels at the same time, so that when a certain memory channel is overloaded, the load is too large through another lightly loaded memory channel.
  • the access of the memory module on the memory channel solves the imbalance of the memory channel load to some extent, and effectively improves the utilization of the memory channel.
  • FIG. 4 is a schematic diagram of a logical structure of a memory system 400 according to an embodiment of the present invention. As shown in FIG.
  • different CPUs respectively include a memory controller (in the embodiment of the present invention, an embedded CPU in a memory controller is taken as an example for description. In actual implementation, the memory controller and the CPU may be separately implemented separately), and the memory is implemented by the memory.
  • the controller is connected to a memory module through a memory channel (shown by a solid line connection in the figure), and the memory modules of the respective CPUs are connected by an interconnection interface (not shown) between the memory modules.
  • the solid line in FIG. 4 shows the memory channel between the memory controller and the respective memory modules, and the dashed line is the connection established between the memory modules through the interconnection interface between the memory modules.
  • a memory area network is formed by establishing interconnections between memory modules belonging to different CPUs, and each CPU can access each memory module in the entire memory area network through a memory channel connected thereto, and the memory area network
  • a single CPU or memory controller can be transparent.
  • the plurality of memory modules in FIG. 4 may be implemented as a DIMM or a SIMM module, wherein each memory module may internally include one or more DRAMs as storage units or one or more NVMs as storage units.
  • the storage mediums in the internal memory modules may be of the same type or different types, which is not limited in this embodiment of the present invention.
  • the communication connection between the memory modules can be implemented as a high speed bus, and the high speed bus can be either an asynchronous serial bus or a synchronous parallel bus.
  • the data unit transmitted in the bus can be a message packet.
  • the form of the message pack is flexible, and the contents such as commands and data can be configured.
  • the plurality of CPUs shown in FIG. 4 may be located wholly or partially within a computer system, or may belong to different computer systems. In the latter case, one CPU can be regarded as a server node, different server nodes may be located in different physical locations, and network delays, bandwidths, etc. between server nodes of different physical locations may have some differences, performance of different server nodes There are also differences in the parameters and the size of the network impact, and the characteristics of different applications on memory performance The request is not the same. Therefore, the form of the memory area network can be set according to different requirements.
  • the organization of the memory area network can be the grid network shown in FIG. 4, a hierarchical or semi-hierarchical network, or a centralized network.
  • the memory area network of different organization forms can refer to the memory module structure introduced in other embodiments in this document. On the basis of this, one of ordinary skill in the art can adjust the number of interconnection interfaces between memory modules and the connection relationship between memory modules. And the implementation of routing functions in the memory module.
  • server nodes can conveniently and quickly share the memory resources of the entire system.
  • memory data can be quickly moved and deployed between different nodes through a high-speed memory area network.
  • the system's memory resources can form a virtual global memory address space within the memory area network and be transparently shared.
  • data interaction is performed between different nodes, such as data replication, the memory area network can directly and quickly complete the data operation without using a conventional memory controller, operating system, network protocol stack, and the like.
  • FIG. 5 is a schematic diagram of a logical structure of a memory system 500 composed of different storage media according to an embodiment of the present invention.
  • Each of the memory controllers is connected to a DRAM memory module and an NVM memory module through a memory channel (shown by the solid line connection in Figure 5).
  • One or more memory cells (or “memory chips") in a DRAM memory module use DRAM storage media, and one or more memory cells in the NVM memory module use NVM storage media.
  • the DRAM memory module and the NVM module of different memory controllers are provided with interconnection interfaces between memory modules, and the connection relationship shown by the dotted line in FIG. 5 is established through these interfaces.
  • the DRAM memory module and the NVM memory module can be connected to the same memory controller through a memory channel interface and a memory channel that follow different protocols.
  • connection relationship between the memory modules may vary.
  • the frequency and bandwidth of the line used for the connection between the DRAM memory module and the NVM memory module may not be particularly high;
  • the frequency and bandwidth of the line used for the connection between the two must meet specific frequency and bandwidth requirements.
  • the memory system shown in Figure 5 adds an NVM memory module compared to the memory system shown in Figure 4.
  • DRAM memory modules and NVM memory modules have their own advantages and disadvantages in terms of capacity, delay, bandwidth, power consumption, and durability.
  • Figure 5 connects the memory modules of these different storage media together as a memory area network, which can make full use of each. The characteristics of the storage medium maximize the advantages of the memory system in terms of capacity, delay, power consumption and the like.
  • the types of memory modules in the specific implementation may also be selected other than DRAM and NVM, and the types of the hybrids may be two or more.
  • the connection relationship between the memory modules can be implemented as a mesh network as shown in FIG. 5, or a hierarchical or semi-hierarchical network, or a centralized network.
  • FIG. 6 is a schematic diagram of a logical structure of another memory system 600 according to an embodiment of the present invention.
  • each CPU has its own private memory module, and the private memory module can be implemented as a DIMM memory module or other kinds of memory modules.
  • Private memory modules of different CPUs can be of the same type or different classes. Type.
  • the private memory module does not have an interconnect interface between the memory modules, and is only connected to the memory controller through a memory channel (shown by a solid line connection in the figure), and thus cannot be accessed by other memory modules and other memory controllers or CPUs.
  • Each CPU is connected to its own private memory module and memory area network. Since the memory area network is shared to all processors to some extent, the shared memory modules may be constrained in terms of capacity, delay, bandwidth, etc., so each CPU is private.
  • the memory module can be used to some extent to meet the CPU's exclusive demand for memory.
  • the private memory modules of each CPU can be used to store the core, frequently accessed data of each CPU, without worrying about the memory bandwidth, capacity, etc. being affected by other CPUs.
  • FIG. 7 is a schematic diagram of a logical structure of a memory system according to an embodiment of the present invention.
  • the eight CPUs are paired on four boards (which can also be motherboards or motherboards).
  • Each of the two boards belongs to a computer system.
  • the two boards can be located in the same machine or can be located in different machines.
  • Memory modules in different computer systems other than the private memory modules can be shared by the memory system provided by the embodiments of the present invention.
  • the present invention organizes the memory modules in a multi-dimensional manner.
  • connections of the memory modules and the memory controllers there are connections between the memory modules.
  • the connection of the memory module's dimensions is accessed by other memory modules, and then by other memory channels, thus changing the traditional one-dimensional memory organization and the inconsistency between the memory channels, making full use of all memory channels.
  • Memory bus improve the utilization of memory bus bandwidth.
  • FIG. 8 is a schematic flowchart of a method for accessing a memory module according to an embodiment of the present disclosure.
  • the method may be applied to a memory system provided by an embodiment of the present disclosure, where the memory system includes two or more memory modules,
  • the memory module includes a memory channel interface and at least one memory module interconnection interface.
  • the method includes:
  • S102 Determine, according to the read request, a destination storage unit associated with the read request, where the destination storage unit is one or more of the storage units included in the memory module;
  • the embodiment of the present invention provides another memory system access method, where the method includes:
  • step S202 Determine, according to the read request, whether a destination memory module of the read request is a current memory module. If the target memory module of the read request is not a current memory module, then the read request is associated with the read request.
  • the memory module interconnection interface is sent to the other memory module (S206); if the destination memory module of the read request is the current memory module, step S203 is performed.
  • Steps S203, S204, and S205 are the same in steps S102, S103, and S104 in FIG. 8, and are not described herein again.
  • the step S202 may be implemented as: determining whether the target address of the read request belongs to an address space of the current memory module; or determining whether the target address of the read request is an address of a current memory module. If the target address of the read request belongs to the address space of the current memory module, or the target address of the read request is the address of the current memory module, the determination result is yes; if the target address of the read request does not belong to the current memory The address space of the module, and the target address of the read request is not the address of the current memory module, and the judgment result is no.
  • step S206 is specifically: querying a routing table of the current memory module according to the target address of the read request, and obtaining an identifier of an interconnection interface between the memory modules associated with the target address of the read request;
  • the read request is sent to the other memory module through the inter-memory interface interconnection interface corresponding to the identifier of the interconnect interface between the memory modules;
  • the routing table stores the identifier of the interconnect interface between the memory modules of the current memory module and the current The correspondence between the addresses of other memory modules connected to the memory module.
  • the memory management module maintains the correspondence between interface identifiers and memory addresses of different interfaces, which is hereinafter referred to as a routing table.
  • the first column in the routing table stores the interface identifiers of the interconnect interfaces between the two memory modules in the memory module, 1 and 2 respectively identify the interconnect interface 1 between the memory modules and the interconnect interface 2 between the memory modules; the second column is the memory
  • the memory address space corresponding to the inter-module interconnection interface, the memory address space corresponding to each interface may be a continuous address space, or may be a plurality of discontinuous address spaces, for example, an address range space such as 0MB ⁇ 255MB. with
  • step S206 is specifically: acquiring an identifier of an interconnection interface between memory modules from a target address of the read request; and corresponding to the identifier of the interconnection interface between the memory modules
  • the inter-memory interface interconnect interface is sent to other memory modules. See Figure 10b for an example diagram of the destination address carried in the access request.
  • the target address includes an interface identifier, a bank identifier, a row identifier, a column identifier, and other information.
  • the bank identifier, the row identifier, and the column identifier are common identifiers in the memory address that are well known to those skilled in the art, and other information is extended according to requirements, and details are not described herein again.
  • the interface identifier is used to identify an interface that needs to be routed by the access request, and may be an identifier of a memory channel interface or an identifier of an interconnection interface between memory modules.
  • step S206 is specifically: obtaining the identifier of the interconnect interface between the memory modules directly from the access request, and then forwarding the access request to the memory module corresponding to the identifier of the interconnect interface between the memory modules. Interconnect interface.
  • the data unit transmitted in the bus can be a message packet, and the form of the message packet is flexible, and the contents, such as commands and data, can be configured.
  • FIG. 10c is an example of a message packet form of an access request according to an embodiment of the present invention.
  • the message packet includes a packet header, a memory address, a message packet size, and a memory module and a memory module interconnection interface that the message packet needs to be routed. As can be seen from FIG.
  • the message packet is routed from the inter-memory inter-memory interface 1 of the memory module 1, and finally, the inter-memory inter-memory interface m of the memory module k is routed to the interconnection interface m with the memory module.
  • the memory management unit 601 can directly obtain the interconnect interface identifier of the memory module from the message packet, and route the message packet to the corresponding memory module interconnection interface, and then the memory management unit of the next memory module can also be used. In the same way, the routing continues until the real destination memory module is reached, and it is determined according to the memory address which one or more storage units of the destination memory module need to be accessed.
  • the memory module access method provided by the embodiment of the present invention may further include: 5301. Receive a write request by using an interconnect interface between the memory modules.
  • the receiving data of the write request is received by the inter-memory interface of the memory module; or receiving the associated data of the write request by using a memory channel interface of the memory module;
  • the method includes:
  • step S406 is executed to send the write request and the associated data of the write request to other memory modules through the inter-memory interface of the memory module associated with the write request. ;
  • step S403 is performed.
  • Steps S403, S404, and S405 are similar to steps S302, S303, and S304 of the foregoing embodiment, and are not described herein again.
  • the data related to the receive write request and the receive write request may pass through the same transmission line or through different transmission lines; the associated data of the forward write request and the write request may pass.
  • the same transmission line can also be used for different transmission lines, and whether the associated data of the write request and the write request is transmitted through the unified path is not limited.
  • the purpose of the write request may be referred to the foregoing embodiment of the read request, and is not described here.
  • steps S301-S304 or steps S401-S406 and steps S101-S104 Or steps S201-S206 have no specific order relationship.
  • the steps S101-S104 or steps S201-S206 may be performed, and if the write request is received, the steps S301-S304 or steps S401-S406 may be performed.
  • FIG. 13 is a schematic flowchart of a method for accessing another memory module according to an embodiment of the present invention. The method includes:
  • step S502 Determine, according to the access request, whether the destination memory module of the access request is a current memory module. If the destination memory module of the access request is not the current memory module, perform step S503. Specifically, step S502 may be implemented as: Determining whether the target address of the access request belongs to an address space of the current memory module; or determining whether the target address of the access request is an address of a current memory module.
  • step S503 is specifically implemented as: querying a routing table of a current memory module according to a target address of the access request, and obtaining an identifier of an interconnection interface between the memory modules associated with the target address of the access request;
  • the access request is sent to another memory module through an inter-memory module interconnection interface corresponding to the identifier of the interconnection interface between the memory modules;
  • the routing table stores an identifier of an interconnection interface between the memory modules of the current memory module. The correspondence between the addresses of other memory modules connected to the current memory module.
  • step S503 is specifically implemented to: obtain an identifier of an interconnection interface between memory modules from a target address of the access request; and use an identifier of an interconnection interface between the access request and the memory module The corresponding memory module interconnection interface is sent to other memory modules. If the destination memory module of the access request is the current memory module, the execution manner is similar to the foregoing embodiment.
  • the embodiment of the invention further provides a memory module access control method, which can be applied to a memory controller.
  • the method includes:
  • the memory controller passes the access request to access the second memory a second memory channel of the module, and a second memory module interconnection interface for the second memory module connected to the first memory module, and the second memory module is interconnected by the second memory module A connection of the first memory module is sent to the first memory module.
  • the method may further include:
  • the memory controller passes the access request to access the first memory a first memory channel of the module, and a first memory module interconnection interface of the first memory module connected to the second memory module, and the first memory module is interconnected by the first memory module The connection of the second memory module is sent to the second memory module.
  • the memory access method and the memory access control method provided by the embodiments of the present invention can enable a memory module to be accessed by multiple memory channels at the same time, so that when a certain memory channel is overloaded, another load is implemented.
  • the lighter memory channel accesses the memory module on the oversized memory channel to some extent, which solves the problem that the memory channel load is unbalanced, and effectively improves the utilization of the memory channel.
  • FIG. 14 is a schematic diagram of a logical structure of a computer system 800 according to an embodiment of the present invention.
  • the computer system includes: a processor 811, a memory controller 801, and an output device 810 (displayed Display, display), input device 809 (eg, keyboard, mouse, touch screen, etc.) and communication interface 808, wherein the memory controller connects the two memory modules 802 and 803 through two memory channels 805 and 806.
  • the memory module 802 can receive the access data sent by the memory controller 801 through the memory channel 805 connected thereto, or through the connection 804 with the memory module 803.
  • the memory channel 806 connected to the memory module 803 receives the access data sent by the memory controller.
  • the communication interface 808 is an interface used by the computer system to connect to the network, and may be a network card interface of a general computer, an antenna interface of the mobile terminal, or the like, for communicating with other computer systems, specifically including transmitting and receiving data.
  • other types of storage devices 805, such as caches or disks, may be included in the computer system.
  • the computer system can capture the structure of the bus connection, such as a processor, a memory controller, a communication interface, etc., connected together by a bus.
  • the bus can be an ISA (Industry Standard Architecture) bus, a PCI (Peripheral Component) bus, or an EISA (Extended Industry Standard)
  • the bus may be one or more physical lines, and may be divided into an address bus, a data bus, a control bus, etc. when it is a plurality of physical lines.
  • memory controller 801 can be built into processor 804.
  • a partial logic structure diagram of a computer system 800 includes: a memory controller 801, and a first memory module 802 and a second memory module 803;
  • the first memory module 802 is provided with a first memory channel interface 8021, and is connected to the first memory channel 805 through the first memory channel interface 8021;
  • the second memory module 803 is provided with a second memory channel interface 8031, and Connected through the second memory channel interface 8031
  • the second memory module 802 is connected to the memory controller 801 through the first memory channel 805, and the second memory module 803 is connected to the memory controller 801 through the second memory channel 806;
  • the memory module 802 and the second memory module 803 are also respectively provided with a first inter-memory inter-module interconnection interface 8022 and 8032, 8022 and 8032.
  • the first memory module 802 is configured to pass the first memory module interface of the first memory module 802.
  • the 8022 is connected to the first memory module interconnection interface 8032 of the second memory module 803 and the second memory channel 806 receives or transmits access data, and receives or transmits access data through the first memory channel 805.
  • the access data includes one or more of the following: an access request to the first memory module 802, response data or associated data to an access request of the first memory module 802, to the second memory module An access request of 803, and response data or associated data of an access request to the second memory module 803.
  • the first memory module 802 includes a first memory management unit and at least one storage unit, the first memory management unit and the first memory module interconnection interface, the first memory channel interface 8021, and the The storage unit is configured to: receive, by the first memory channel interface 8021, access data; determine, according to the access data, whether the destination memory module of the access data is the first memory module 802 If the destination memory module of the access data is not the first memory module 802, the access data is sent to the second memory module 803 through the first memory module interconnect interface 8022; The destination memory module that accesses the data is the first memory module 802, and determines a destination storage unit associated with the access data according to the access data, and performs an operation on the destination storage unit according to the access data, where The storage unit of the description is one or more of the storage units of the first memory module 802. Further, the first memory management unit is further configured to: receive the access data by using the first inter-memory module interconnection interface 8022, Determining a destination storage unit associated with the access data; performing an operation
  • the computer system may further include a third memory module 812, the third memory module 812 is provided with a third channel interface 8121, and the third memory module 812 passes the third channel interface 8121.
  • the second memory module 802 is connected to the second memory module 802.
  • the first memory module 802 and the third memory module 812 are respectively provided with a second memory module interconnection interface 8023 and 8122, and the second memory module of the first memory module 802.
  • the inter-interconnect interface 8023 is connected to the second inter-memory inter-module interface 8122 of the third memory module 812; the first memory module 802 is further configured to interconnect the interface 8202 through its own second inter-memory module The connection between the second memory module interconnect interface 8122 of the third memory module 812 and the second memory channel 806 receive or transmit access data to the memory system.
  • the third memory module 812 can also connect other memory channels than the first memory channel 805 and the second memory channel 806 through the third channel interface 8121.
  • the protocol followed by the memory channel between the three modules may be the same or different, which is not limited by the embodiment of the present invention.
  • the access data includes one or more of: an access request to the first memory module 802, response data or associated data of an access request to the first memory module 802, to the second memory module
  • the first memory module 802 includes a first memory management unit and at least one memory unit, and the first memory management unit and the first memory module interconnection interface 8022, the second memory module Inter-interconnect interface 8023, the first The memory channel interface 8021 is connected to the storage unit, and the first memory management unit is configured to: receive access data by using the first memory channel interface 8021; and determine, according to the access data, whether the destination memory module of the access data is The first memory module 802; if the destination memory module of the access data is not the first memory module 802, determining, according to the correspondence between the target address of the access data and the interconnect interface of the memory module And the inter-memory inter-module interconnection interface corresponding to the access data, if the inter-memory inter-module interconnection interface corresponding to the access data is the first inter-memory inter-module interconnection interface 8022, the access data is passed through the first memory
  • the inter-module interconnection interface 8022 is sent to the second memory module 803, and if the inter-memor
  • the memory controller 801 is configured to monitor the running status of the first memory channel 805 and the second memory channel 806; receive access data to the memory system, and according to the first memory The health of channel 805 and the second memory channel 806 sends the access data to the memory system.
  • the memory controller 801 is configured to monitor the running status of the first memory channel 805 and the second memory channel 806, where the operating conditions include busy and idle; when the target address of the received access data is located When the first memory module 802 is busy, the memory controller sends the access data to the second memory module 803 through the second memory channel 806, and the second memory module 803 passes through the first memory module room of the second memory module 803
  • the connection between the interconnection interface 8032 and the first memory module interconnection interface 8022 of the first memory module 802 transmits the access data to the first memory module 802; when the destination address of the access data is received When the second memory module 803 is in the second memory module 803 and the second memory channel 806 is busy, the memory controller sends the access data to the first memory module 802 through the first memory channel 805, by the first memory.
  • the module 802 sends the access data to the first connection through the first memory module interconnection interface 8022 of the first memory module 802 and the first memory module interconnection interface 8032 of the second memory module 803.
  • the memory controller 801 is further configured to: record a path of the access data and a status of the access data, where the path of the access data includes the first memory channel or a second memory channel, where the data is accessed
  • the status includes whether the access data is sent and/or the result of the access request is returned.
  • FIG. 16 is a schematic diagram showing a partial logic structure of another computer system according to an embodiment of the present invention.
  • the computer system 900 includes two memory controllers 9011 and 9012 that are coupled to two memory channels 905 and 906, respectively.
  • the memory controllers 9011 and 9012 are both built into the same CPU 907. In other implementations, memory controllers 9011 and 9012 can also be coupled to CPU 907 rather than built in.
  • 902, 903, 904, 9021, 9022, 9031, and 9032 in Fig. 16 are similar to 802, 803, 804, 8021, 8022, 8031, and 8032 in Fig. 15a, respectively, and will not be described again.
  • FIG. 17 a partial logical structure diagram of another computer system according to an embodiment of the present invention is provided.
  • the computer system 1000 includes two CPUs 10071 and 10072, and memory controllers 10011 and 10012 are built in the CPU 10071 and the CPU 10072, respectively.
  • the CPU 10071 and the CPU 10072 can run the same operating system or different operating systems.
  • 1002, 1003, 1004, 10021, 10022, 10031, and 10032 are similar to those in Figure 16, respectively. 902, 903, 904, 9021, 9022, 9031, and 9032 are not described herein.
  • each independent CPU can independently connect one communication interface.
  • each memory channel of the computer system may be connected to two or more memory modules, for example, the memory channel 805 may further connect two or more memories. Module.
  • the connection relationship between memory modules can be set as needed. For a specific implementation of the memory module, reference may be made to the foregoing description of the embodiments and the accompanying drawings.
  • the number of memory controllers in the computer system may be two or more, and the number of CPUs may be two or more.
  • the connection relationship between the multiple memory modules can be established according to specific requirements, and a memory area network of a grid, a hierarchical or a semi-hierarchical, or a centralized type is formed.
  • a memory area network of a grid, a hierarchical or a semi-hierarchical, or a centralized type is formed.
  • the memory system as illustrated in FIG. 1 and FIG. 2a to FIG. 2c may be wholly or partially included in the computer system provided by the embodiment of the present invention.
  • the storage mediums of the memory modules in the computer system provided by the embodiments of the present invention may be the same or different.
  • the memory module can be a separate physical module, and the memory channel interface and the memory module interconnection interface can be physical interfaces.
  • the memory channel interface can be a double data rate DDR interface or a DDR2 interface or a DDR3 interface or a DDR4 interface.
  • the computer system in the embodiment of the present invention may include one board or multiple boards, and different CPUs may be located on the same board or different boards, and different boards may be located in the same machine or may be located in different The machine refused. Therefore, the computer system to be protected by the present invention is only illustrated by taking FIG. 14-17 as an example, and is not limited thereto.
  • the computer system can add multiple memory modules in different memory modules in the memory system by adding one or more interconnection interfaces between the memory modules in the memory module.
  • a communication connection can be established through the interconnection interface between the memory modules, so that the memory module in the memory system can be accessed by multiple memory channels at the same time, so that when a certain memory channel is overloaded, the load is realized through another load.
  • the access of the memory module on the oversized memory channel by the light memory channel solves the imbalance of the memory channel load to some extent, and effectively improves the utilization of the memory channel.
  • the device embodiments described above are merely illustrative, and the components may or may not be physical units, that is, may be located in one place, or may be distributed to multiple network units. Some or all of the modules may be selected according to actual needs to achieve the objectives of the embodiments of the present invention. Further, in the drawings of the apparatus embodiments provided by the present invention, the connection relationship between the modules indicates that there is a communication connection therebetween, and specifically, one or more communication buses or signal lines can be realized. Those of ordinary skill in the art can understand and implement without any creative effort.
  • the present invention can be implemented by dedicated hardware including an application specific integrated circuit, a dedicated CPU, a dedicated memory, a dedicated component, and the like.
  • the specific hardware structure used to implement the same function can be varied, such as analog circuits, digital circuits, or dedicated circuits.
  • the present invention can also be implemented by computer software plus necessary hardware.
  • the computer software product is stored in a readable storage medium, such as a computer floppy disk, a USB disk, a mobile hard disk, a read-only memory (ROM, Read-Only Memory), Random access memory (RAM), disk or optical disk, etc., including a number of instructions to make a calculation
  • a readable storage medium such as a computer floppy disk, a USB disk, a mobile hard disk, a read-only memory (ROM, Read-Only Memory), Random access memory (RAM), disk or optical disk, etc., including a number of instructions to make a calculation
  • the device (which may be a personal computer, server, or network device, etc.) performs the methods described in various embodiments of the present invention.

Abstract

提供了一种内存系统、内存模块、内存模块的访问方法以及计算机系统,通过在内存模块中增加一个或多个内存模块间互联接口,使内存系统中分属于不同内存通道的多个内存模块能够通过该内存模块间互联接口建立通信连接,进而使得该内存系统中的内存模块可以同时被多个内存通道所访问,从而在某一内存通道负载过大的时候,实现通过另一负载较轻的内存通道对该负载过大的内存通道上的内存模块的访问,一定程度上解决了内存通道负载不均衡的情况,有效提高了内存通道的利用率。

Description

内存系统、 内存模块、 内存模块的访问方法以及计算机系统 技术领域
本发明涉及计算机领域, 尤其涉及一种内存系统、 内存模块、 内存模块的 访问方法以及计算机系统 背景技术 从 90年代末期开始, 处理器工艺比内存工艺的发展速度要快 27%左右, 导致计算机内存系统逐渐成为制约整个系统性能的瓶颈, "内存墙" 也逐渐显 现。 内存系统的性能指标主要是内存带宽和内存延迟。 内存的延迟可以根据不 同请求对延迟的敏感程度, 釆用合理的请求调度策略, 来弱化访问延迟对应用 程序性能的影响。 而随着应用程序对内存的请求压力不断增加, 内存带宽的制 约就凸显出来。 "内存带宽墙" 的现象概括了现有内存系统的带宽对整个系统 性能的制约。 在传统的内存系统中可以存在一个或多个内存通道,这些内存通道由内存 控制器管理,每个内存通道可以支持一个或多个内存槽,每个内存槽上挂载内 存模块与内存芯片, 内存控制器与内存通道、 内存通道与内存模块间存在一条 交互通路, 不同内存通道之间以及内存模块间相互独立。在以上传统的内存系 统中,如果内存请求集中在某一个内存通道上, 该内存系统就会出现单个内存 通道忙碌, 而其它内存通道空闲的不均衡现象。 另外, 内存通道与内存控制器遵守同步的 DDR(Double Date Rate, 双倍数 据速率)协议和时序的约束。 当前空闲的内存模块在受到时序约束时, 也不能 接收命令或传输数据。 当下一个请求访问该内存模块时, 它不能及时地返回数 据。 这样, 数据总线上可能出现空闲的现象, 造成内存带宽资源的浪费。 在 "内存带宽墙"的背景下, 内存带宽属于宝贵资源,浪费带宽显得非常可惜。 如何提高内存带宽的有效利用率, 是緩解内存系统瓶颈的一个重要挑战。 现有挖掘内存系统带宽资源的技术,主要思想是将请求均勾分配到各个内 存通道、 rank甚至 bank上, 提高请求处理的并发度。 请求的并发度高意味着 请求能同时在多个内存通道上被处理,从而减少内存总线空闲的比率和内存带 宽资源的浪费。给定一个内存地址,其所对应的物理位置(如内存通道号、 rank 号及 bank号)是由内存控制器的地址映射方式决定的。 因此, 内存地址的映 射技术直接决定了请求并行度的大小。目前的内存地址映射技术都是通过修改 内存地址映射的方式来提高内存系统的并发度, 进而提高内存带宽的利用率。 然而, 内存地址映射方式的修改依赖于应用程序的特征。 不同应用的特征以及 同一应用不同时期的特征都可能存在较大的差异,这使得修改内存地址映射的 方式效率较低, 且该方法只适合于部分应用, 存在一定的局限性。 发明内容
本发明实施例提供一种内存系统、 内存模块、 内存模块的访问方法以及计 算机系统, 用以提高内存通道的利用率, 一定程度上緩解内存系统瓶颈。
为了达到上述目的, 本发明实施例提供如下技术方案:
第一方面, 本发明实施例提供一种内存系统, 所述内存系统包括: 第一内 存模块, 第二内存模块; 所述第一内存模块设有第一内存通道接口, 并通过所 述第一内存通道接口连接第一内存通道;所述第二内存模块设有第二内存通道 接口, 并通过所述第二内存通道接口连接第二内存通道; 所述第一内存模块和 所述第二内存模块还分别设有第一内存模块间互连接口,所述第一内存模块的 第一内存模块间互连接口与所述第二内存模块的第一内存模块间互连接口连 接。
结合第一方面,在第一种实现方式中, 所述第一内存模块用于通过所述第 一内存模块的第一内存模块间接口与所述第二内存模块的第一内存模块间互 连接口的连接及所述第二内存通道接收或发送对所述内存系统的访问数据,以 及通过所述第一内存通道接收或发送对所述内存系统的访问数据。
结合第一方面的第一种实现方式,在第二种实现方式中, 所述内存系统的 访问数据包括以下中的一个或多个: 对所述第一内存模块的访问请求,对所述 第一内存模块的访问请求的响应数据或关联数据,对所述第二内存模块的访问 请求, 以及对所述第二内存模块的访问请求的响应数据或关联数据。
结合第一方面或第一方面的第一种实现方式或第一方面的第二种实现方 式,在第三种实现方式中, 所述第一内存模块包括第一内存管理单元和至少一 个存储单元, 所述第一内存管理单元与所述第一内存模块间互连接口、 所述第 一内存通道接口以及所述存储单元连接, 所述第一内存管理单元用于: 通过所 述第一内存通道接口接收访问数据;根据所述访问数据判断所述访问数据的目 的内存模块是否是所述第一内存模块;若所述访问数据的目的内存模块不是所 述第一内存模块,则将所述访问数据通过所述第一内存模块间互连接口发送给 所述第二内存模块; 若所述访问数据的目的内存模块是所述第一内存模块, 则 根据所述访问数据确定与所述访问数据关联的目的存储单元,根据所述访问数 据对所述目的存储单元执行操作, 其中, 所述目的存储单元为所述第一内存模 块的存储单元中的一个或多个。
结合第一方面的第三种实现方式,在第四种实现方式中, 所述第一内存管 理单元还用于: 通过所述第一内存模块间互连接口接收访问数据,确定与所述 访问数据关联的目的存储单元;根据所述访问数据对所述目的存储单元执行操 作。
结合第一方面的第一种实现方式,在第五种实现方式中, 所述内存系统还 包括第三内存模块, 所述第三内存模块设有第三通道接口; 所述第三内存模块 通过所述第三通道接口连接第三内存通道;所述第一内存模块和所述第三内存 模块还设有第二内存模块间互连接口,所述第一内存模块的第二内存模块间互 连接口与所述第三内存模块的第二内存模块间互连接口连接;所述第一内存模 块还用于通过所述第一内存模块的第二内存模块间互连接口与所述第三内存 模块的第二内存模块间互连接口之间的连接及所述第三内存通道接收或发送 对所述内存系统的访问数据。
结合第一方面的第五种实现方式,在第六种实现方式中,对所述内存系统 的访问数据包括以下中的一个或多个: 对所述第一内存模块的访问请求,对所 述第一内存模块的访问请求的响应数据或关联数据,对所述第二内存模块的访 问请求,对所述第二内存模块的访问请求的响应数据或关联数据,对所述第三 内存模块的访问请求,以及对所述第三内存模块的访问请求的响应数据或关联 数据。
结合第一方面的第五种实现方式或第一方面的第六种实现方式,在第七种 实现方式中, 所述第一内存模块包括第一内存管理单元和至少一个存储单元, 所述第一内存管理单元与所述第一内存模块间互连接口、所述第二内存模块间 互连接口、 所述第一内存通道接口以及所述存储单元连接, 所述第一内存管理 单元用于: 通过所述第一内存通道接口接收访问数据; 根据所述访问数据判断 所述访问数据的目的内存模块是否是所述第一内存模块;若所述访问数据的目 的内存模块不是所述第一内存模块,则根据所述访问数据的目标地址与所述内 存模块间互连接口的对应关系 ,确定与所述访问数据对应的内存模块间互连接 口, 若与所述访问数据对应的内存模块间互连接口为第一内存模块间互连接 口,则将所述访问数据通过所述第一内存模块间互连接口发送给所述第二内存 模块,若与所述访问数据对应的内存模块间互连接口为第二内存模块间互连接 口,则将所述访问数据通过所述第二内存模块间互连接口发送给所述第三内存 模块; 若所述访问数据的目的内存模块是所述第一内存模块, 则根据所述访问 数据确定与所述访问数据关联的目的存储单元,根据所述访问数据对所述目的 存储单元执行操作, 其中, 所述目的存储单元为所述第一内存模块的存储单元 中的一个或多个。
第二方面, 本发明实施例提供一种内存模块, 所述内存模块设有内存通道 接口和第一内存模块间互连接口,所述内存模块包括内存管理单元和至少一个 存储单元, 所述内存管理单元与所述内存通道接口、所述第一内存模块间互连 接口以及所述存储单元连接; 所述内存通道接口用于连接内存通道; 所述内存 管理单元用于通过所述内存通道接口以及所述内存通道接口连接的所述内存 通道接收或发送访问数据;所述第一内存模块间互连接口用于与除该内存模块 之外的第一内存模块连接;所述内存管理单元还用于通过所述第一内存模块间 互连接口及所述内存模块与所述第一内存模块之间的连接发送或接收访问数 据。 结合第一方面,在第一种实现方式中, 所述访问数据包括以下中的一个或 多个: 对所述内存模块的访问请求,对所述内存模块的访问请求的响应数据或 关联数据,对所述第一内存模块的访问请求, 以及对所述第一内存模块的访问 请求的响应数据或关联数据。
结合第二方面或第二方面的第一种实现方式,在第二种实现方式中, 所述 内存管理单元具体用于: 通过所述内存通道接口及所述内存通道接收访问数 块; 若所述访问数据的目的内存模块不是当前内存模块, 则将所述访问数据通 过所述第一内存模块间互连接口发送给所述第一内存模块;若所述访问数据的 目的内存模块是当前内存模块,则根据所述访问数据确定与所述访问数据关联 的目的存储单元, 根据所述访问数据对所述目的存储单元执行操作, 其中, 所 述目的存储单元为当前内存模块的存储单元中的一个或多个。
结合第二方面的第二种实现方式,在第三种实现方式中, 所述内存管理单 元还用于:通过所述第一内存模块间互连接口及所述内存模块与所述第一内存 模块之间的连接接收访问数据, 确定与所述访问数据关联的目的存储单元; 根 据所述访问数据对所述目的存储单元执行操作。
结合第二方面,在第四种实现方式中, 所述内存模块还设有第二内存模块 间互连接口, 所述内存管理单元还与所述第二内存模块间互连接口连接; 所述 第二内存模块间互连接口用于与除该内存模块和所述第一内存模块之外的第 二内存模块连接;所述内存管理单元还用于通过所述第二内存模块间互连接口 及所述内存模块与所述第二内存模块之间的连接接收或发送访问数据。
结合第二方面的第四种实现方式,在第五种实现方式中, 所述访问数据包 括以下中的一个或多个: 对该内存模块的访问请求,对该内存模块的访问请求 的响应数据或关联数据,对所述第一内存模块的访问请求,对所述第一内存模 块的访问请求的响应数据或关联数据,对所述第二内存模块的访问请求, 以及 对所述第二内存模块的访问请求的响应数据或关联数据。
结合第二方面的第四种实现方式或第二方面的第五种实现方式,在第六种 实现方式中, 所述内存管理单元具体用于: 通过所述内存通道接口接收访问数 块; 若所述访问数据的目的内存模块不是当前内存模块, 则根据所述访问数据 的目标地址与所述内存模块间互连接口的对应关系,确定与所述访问数据对应 的内存模块间互连接口,若与所述访问数据对应的内存模块间互连接口为第一 内存模块间互连接口,则将所述访问数据通过所述第一内存模块间互连接口发 送给所述第一内存模块 ,若与所述访问数据对应的内存模块间互连接口为第二 内存模块间互连接口,则将所述访问数据通过所述第二内存模块间互连接口发 送给所述第二内存模块; 若所述访问数据的目的内存模块是当前内存模块, 则 根据所述访问数据确定与所述访问数据关联的目的存储单元,根据所述访问数 据对所述目的存储单元执行操作, 其中, 所述目的存储单元为当前内存模块的 存储单元中的一个或多个。
结合第二方面的第六种实现方式,在第七种实现方式中, 所述内存管理单 元还用于: 通过所述第一内存模块间互连接口接收访问数据; 根据所述访问数 据判断所述访问数据的目的内存模块是否是当前内存模块;若所述访问数据的 目的内存模块不是当前内存模块,则将所述访问数据通过所述第二内存模块间 互连接口发送给所述第二内存模块;若所述访问数据的目的内存模块是当前内 存模块, 则根据所述访问数据确定与所述访问数据关联的目的存储单元,根据 所述访问数据对所述目的存储单元执行操作, 其中, 所述目的存储单元为当前 内存模块的存储单元中的一个或多个。
第三方面,本发明实施例提供一种内存模块访问方法,所述访问方法包括: 通过内存模块间互连接口接收读请求,所述内存模块间互连接口用于连接除当 前内存模块之外的其它内存模块;根据所述读请求确定与所述读请求关联的目 的存储单元,所述目的存储单元为所述内存模块中包含的存储单元中的一个或 多个; 读取所述目的存储单元中存储的数据作为所述读请求的响应数据; 将所 述读请求的响应数据通过所述内存模块间互连接口或通过所述内存模块上的 内存通道接口发送。
结合第三方面,在第一种实现方式中, 当所述内存模块间互连接口为两个 或两个以上时,在所述通过内存模块间互连接口接收读请求, 所述内存模块间 互连接口用于连接除当前内存模块之外的其它内存模块的步骤之后,所述方法 还包括: 根据所述读请求判断所述读请求的目的内存模块是否是当前内存模 块; 若所述读请求的目的内存模块不是当前内存模块, 则将所述读请求通过与 所述读请求关联的内存模块间互连接口发送给其它内存模块;若所述读请求的 目的内存模块是当前内存模块,则执行所述根据所述读请求确定与所述读请求 关联的目的存储单元的步骤。
结合第三方面的第一种实现方式,在第二种实现方式中, 所述根据所述读 请求判断所述读请求的目的内存模块是否是当前内存模块, 具体包括: 判断所 述读请求的目标地址是否属于当前内存模块的地址空间; 或者, 判断所述读请 求的目标地址是否是当前内存模块的地址。 集合第三方面的第一种实现方式或第三方面的第二种实现方式,在第三种 实现方式中, 所述若所述读请求的目的内存模块不是当前内存模块, 则将所述 读请求通过与所述读请求关联的内存模块间互连接口发送给其它内存模块,具 体包括: 若所述读请求的目的内存模块不是当前内存模块, 则根据所述读请求 的目标地址查询当前内存模块的路由表,获得与所述读请求的目标地址关联的 内存模块间互连接口的标识;将所述读请求通过与所述内存模块间互连接口的 标识对应的内存模块间互连接口发送给其它内存模块;所述路由表中存储有当 前内存模块的内存模块间互连接口的标识与当前内存模块连接的其它内存模 块的地址的对应关系。
集合第三方面的第一种实现方式或第三方面的第二种实现方式,在第四种 实现方式中, 所述若所述读请求的目的内存模块不是当前内存模块, 则将所述 读请求通过与所述读请求关联的内存模块间互连接口发送给其它内存模块,具 体包括: 若所述读请求的目的内存模块不是当前内存模块, 则从所述读请求的 目标地址中获取内存模块间互连接口的标识;将所述读请求通过与所述内存模 块间互连接口的标识对应的内存模块间互连接口发送给其它内存模块。
结合第三方面, 在第五种实现方式中, 所述方法还包括: 通过内存模块间 互连接口接收写请求;通过所述内存模块间互连接口接收所述写请求的关联数 据; 或者, 通过所述内存模块的内存通道接口接收所述写请求的关联数据; 根 据所述写请求确定与所述写请求关联的目的存储单元;将所述写请求的关联数 据写入所述目的存储单元。
结合第三方面的第五种实现方式,在第六种实现方式中, 当所述内存模块 间互连接口为两个或两个以上时,在所述通过内存模块间互连接口接收写请求 的步骤之后, 所述方法还包括: 根据所述写请求判断所述写请求的目的内存模 块是否是当前内存模块; 若所述写请求的目的内存模块不是当前内存模块, 则 将所述写请求及所述写请求的关联数据通过与所述写请求关联的内存模块间 互连接口发送给其它内存模块; 若所述写请求的目的内存模块是当前内存模 块, 则执行所述通过所述内存模块间互连接口接收所述写请求的关联数据; 或 者, 通过所述内存模块的内存通道接口接收所述写请求的关联数据的步骤。
第四方面,本发明实施例提供一种内存模块访问方法 ,所述访问方法包括: 通过内存模块的内存通道接口接收访问请求;根据所述访问请求判断所述访问 请求的目的内存模块是否是当前内存模块;若所述访问请求的目的内存模块不 是当前内存模块 ,则将所述访问请求通过与所述访问请求关联的当前内存模块 的内存模块间互连接口发送给其它内存模块。
结合第四方面,在第一种实现方式中, 所述根据所述访问请求判断所述访 问请求的目的内存模块是否是当前内存模块, 具体包括: 判断所述访问请求的 目标地址是否属于当前内存模块的地址空间; 或者, 判断所述访问请求的目标 地址是否是当前内存模块的地址。
结合第四方面或第四方面的第一种实现方式,在第二种实现方式中, 所述 若所述访问请求的目的内存模块不是当前内存模块,则将所述访问请求通过与 所述访问请求关联的当前内存模块的内存模块间互连接口发送给其它内存模 块, 具体包括: 若所述访问请求的目的内存模块不是当前内存模块, 则根据所 述访问请求的目标地址查询当前内存模块的路由表,获得与所述访问请求的目 标地址关联的内存模块间互连接口的标识;将所述访问请求通过与所述内存模 块间互连接口的标识对应的内存模块间互连接口发送给其它内存模块;所述路 由表中存储有当前内存模块的内存模块间互连接口的标识与当前内存模块连 接的其它内存模块的地址的对应关系。
结合第四方面或第四方面的第一种实现方式,在第三种实现方式中, 所述 若所述访问请求的目的内存模块不是当前内存模块,则将所述访问请求通过与 所述访问请求关联的当前内存模块的内存模块间互连接口发送给其它内存模 块, 具体包括: 若所述访问请求的目的内存模块不是当前内存模块, 则从所述 访问请求的目标地址中获取内存模块间互连接口的标识;将所述访问请求通过 与所述内存模块间互连接口的标识对应的内存模块间互连接口发送给其它内 存模块。
第五方面, 本发明实施例一种内存模块访问控制方法, 所述方法包括: 当 内存控制器接收到的访问请求的目标地址位于第一内存模块,且访问所述第一 内存模块的第一内存通道为忙碌时,所述内存控制器将所述访问请求通过访问 第二内存模块的第二内存通道,及用于与第一内存模块连接的第二内存模块的 第二内存模块间互连接口,及所述第二内存模块通过所述第二内存模块间互连 接口与第一内存模块的连接, 发送给所述第一内存模块。
结合第五方面, 在第一种实现方式中, 所述方法还包括: 当内存控制器接 收到的访问请求的目标地址位于第二内存模块,且访问所述第二内存模块的第 二内存通道为忙碌时,所述内存控制器将所述访问请求通过访问第一内存模块 的第一内存通道,及用于与第二内存模块连接的第一内存模块的第一内存模块 间互连接口,及所述第一内存模块通过所述第一内存模块间互连接口与第二内 存模块的连接, 发送给所述第二内存模块。
第六方面, 本发明实施例提供一种计算机系统, 该计算机系统包括: 至少 一个内存控制器、 以及第一内存模块和第二内存模块; 所述内存模块与内存控 制器连接; 所述第一内存模块设有第一内存通道接口, 并通过所述第一内存通 道接口连接第一内存通道; 所述第二内存模块设有第二内存通道接口, 并通过 所述第二内存通道接口连接第二内存通道,所述第一内存模块通过所述第一内 存通道与所述内存控制器连接,所述第二内存模块通过所述第二内存通道与所 述内存控制器连接;所述第一内存模块和所述第二内存模块还分别设有第一内 存模块间互连接口,所述第一内存模块的第一内存模块间互连接口与所述第二 内存模块的第一内存模块间互连接口连接。
结合第六方面,在第一种实现方式中, 所述第一内存模块用于通过所述第 一内存模块的第一内存模块间接口与所述第二内存模块的第一内存模块间互 连接口的连接及所述第二内存通道接收或发送访问数据,以及通过所述第一内 存通道接收或发送访问数据。
结合第六方面的第一种实现方式,在第二种实现方式中, 所述访问数据包 括以下中的一个或多个: 对所述第一内存模块的访问请求,对所述第一内存模 块的访问请求的响应数据或关联数据,对所述第二内存模块的访问请求, 以及 对所述第二内存模块的访问请求的响应数据或关联数据。
结合第六方面或第六方面的第一种实现方式或第六方面的第二种实现方 式,在第三种实现方式中, 所述第一内存模块包括第一内存管理单元和至少一 个存储单元, 所述第一内存管理单元与所述第一内存模块间互连接口、 所述第 一内存通道接口以及所述存储单元连接, 所述第一内存管理单元用于: 通过所 述第一内存通道接口接收访问数据;根据所述访问数据判断所述访问数据的目 的内存模块是否是所述第一内存模块;若所述访问数据的目的内存模块不是所 述第一内存模块,则将所述访问数据通过所述第一内存模块间互连接口发送给 所述第二内存模块; 若所述访问数据的目的内存模块是所述第一内存模块, 则 根据所述访问数据确定与所述访问数据关联的目的存储单元,根据所述访问数 据对所述目的存储单元执行操作, 其中, 所述目的存储单元为所述第一内存模 块的存储单元中的一个或多个。
结合第六方面的第三种实现方式,在第四种实现方式中, 所述第一内存管 理单元还用于: 通过所述第一内存模块间互连接口接收访问数据,确定与所述 访问数据关联的目的存储单元;根据所述访问数据对所述目的存储单元执行操 作。
结合第六方面的第一种实现方式,在第五种实现中, 所述所述系统还包括 第三内存模块, 所述第三内存模块设有第三通道接口, 所述第三内存模块通过 所述第三通道接口连接第三内存通道;所述第一内存模块和所述第三内存模块 还设有第二内存模块间互连接口,所述第一内存模块的第二内存模块间互连接 口与所述第三内存模块的第二内存模块间互连接口连接;所述第一内存模块还 用于通过所述第一内存模块的第二内存模块间互连接口与所述第三内存模块 的第二内存模块间互连接口之间的连接及所述第三内存通道接收或发送对所 述内存系统的访问数据。
结合第六方面的第五种实现方式,在第六种实现方式中, 所述访问数据包 括以下中的一个或多个: 对所述第一内存模块的访问请求,对所述第一内存模 块的访问请求的响应数据或关联数据,对所述第二内存模块的访问请求,对所 述第二内存模块的访问请求的响应数据或关联数据,对所述第三内存模块的访 问请求, 以及对所述第三内存模块的访问请求的响应数据或关联数据。 结合第六方面的第五种实现方式或第六方面的第六种实现方式,在第七种 实现方式中, 所述第一内存模块包括第一内存管理单元和至少一个存储单元, 所述第一内存管理单元与所述第一内存模块间互连接口、所述第二内存模块间 互连接口、 所述第一内存通道接口以及所述存储单元连接, 所述第一内存管理 单元用于: 通过所述第一内存通道接口接收访问数据; 根据所述访问数据判断 所述访问数据的目的内存模块是否是所述第一内存模块;若所述访问数据的目 的内存模块不是所述第一内存模块,则根据所述访问数据的目标地址与所述内 存模块间互连接口的对应关系,确定与所述访问数据对应的内存模块间互连接 口, 若与所述访问数据对应的内存模块间互连接口为第一内存模块间互连接 口,则将所述访问数据通过所述第一内存模块间互连接口发送给所述第二内存 模块,若与所述访问数据对应的内存模块间互连接口为第二内存模块间互连接 口,则将所述访问数据通过所述第二内存模块间互连接口发送给所述第三内存 模块; 若所述访问数据的目的内存模块是所述第一内存模块, 则根据所述访问 数据确定与所述访问数据关联的目的存储单元,根据所述访问数据对所述目的 存储单元执行操作, 其中, 所述目的存储单元为所述第一内存模块的存储单元 中的一个或多个。
结合第六方面或第六方面的第一种实现方式或第六方面的第二种实现方 式或第六方面的第三种实现方式或第六方面的第四种实现方式,在第八种实现 方式中, 所述第一内存通道与第一内存控制器连接, 所述第二内存通道与第二 内存控制器连接。
结合第六方面的第八种实现方式,在第九种实现方式中, 所述第一内存控 制器与第一处理器连接, 所述第二内存控制器与第二处理器连接; 或者, 所述 第一内存控制器内置于第一处理器, 所述第二内存控制器内置于第二处理器。 结合第六方面的第九种实现方式,在第十种实现方式中, 所述第一处理器 置于第一单板上, 所述第二处理器置于第二单板上。
结合第六方面的第九种实现方式或第六方面的第十种实现方式,在第十一 种实现方式中, 所述第一处理器和第二处理器分别运行不同的操作系统。
通过以上技术方案可知,本发明实施例通过在内存模块中增加一个或多个 内存模块间互连接口,使内存系统中分属于不同内存通道的多个内存模块能够 通过该内存模块间互连接口建立通信连接,进而使得该内存系统中的内存模块 可以同时被多个内存通道所访问,从而在某一内存通道负载过大的时候, 实现 通过另一负载较轻的内存通道对该负载过大的内存通道上的内存模块的访问, 一定程度上解决了内存通道负载不均衡的情况, 有效提高了内存通道的利用 率。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所 需要使用的附图作简单地介绍, 显而易见地, 下面描述中的附图仅仅是本发明 的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下, 还可以根据这些附图获得其他的附图。
图 1为本发明实施例提供的一种内存系统的逻辑结构示意图;
图 2a为本发明实施例提供的另一种内存系统的逻辑结构示意图; 图 2b为本发明实施例提供的另一种内存系统的逻辑结构示意图; 图 2c为本发明实施例提供的另一种内存系统的逻辑结构示意图; 图 3a为本发明实施例提供的一种内存模块的逻辑结构示意图; 图 3 b为本发明实施例提供的另一种内存模块的逻辑结构示意图; 图 4为本发明实施例提供的另一种内存系统的逻辑结构示意图;
图 5为本发明实施例提供的另一种内存系统的逻辑结构示意图;
图 6为本发明实施例提供的另一种内存系统的逻辑结构示意图;
图 7为本发明实施例提供的另一种内存系统的逻辑结构示意图;
图 8为本发明实施例提供的一种内存访问方法的流程示意图;
图 9为本发明实施例提供的另一种内存访问方法的流程示意图;
图 10a-图 10c为本发明实施例提供的一种内存访问方法的实现示意图; 图 11为本发明实施例提供的一种内存访问方法的流程示意图;
图 12为本发明实施例提供的另一种内存访问方法的流程示意图; 图 13为本发明实施例提供的一种内存访问控制方法的流程示意图; 图 14为本发明实施例提供的一种计算机系统的逻辑结构示意图; 图 15a为本发明实施例提供的一种计算机系统的局部逻辑结构示意图; 图 15b为本发明实施例提供的另一种计算机系统的局部逻辑结构示意图; 图 16为本发明实施例提供的另一种计算机系统的局部逻辑结构示意图; 图 17为本发明实施例提供的另一种计算机系统的局部逻辑结构示意图。 具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚, 下面将结合本发明 实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然, 所描述的实施例是本发明一部分实施例, 而不是全部的实施例。基于本发明中 的实施例 ,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其 他实施例, 都属于本发明保护的范围。
为了便于理解本发明的技术方案,首先介绍一些在本发明实施例中出现的 技术术语。 本发明实施例中所提到的 CPU ( Central Processing Unit , 中央处理 器)是处理器的一种, 处理器还可以是 ASIC ( Application Specific Integrated Circuit, 应用特定集成电路), 或者其它是被配置成实施本发明实施例的一个 或多个集成电路, 本领域技术人员可以理解的是, 处理器的其它实现方式也可 以替代本发明实施例中的 CPU。
内存控制器是计算机系统内部控制内存模块 (或称之为内存 )并且通过内 存控制器使内存与处理器之间交换数据的重要组成部分。目前比较流行的是将 内存控制器嵌入到 CPU中, 但也可以将内存控制器与 CPU分别独立实现, 二 者通过连接进行通信。
内存模块用于存储处理器(例如 CPU ) 的运行数据, 一个内存模块通常 包括一个或多个存储单元(或称之为内存芯片)。 内存通道接口是内存模块上 用于连接内存通道的接口。 内存通道是内存模块与内存控制器连接的通道。通 常情况, 一个或多个内存模块通过内存通道接口连接内存通道, 进而通过内存 通道与内存控制器连接。 除非明确说明, 否则本发明实施例并不对内存通道接 口和内存通道的类型和遵循的传输协议进行限定。
下面举例说明几种常用的内存模块。 DIMM ( Dual Inline Memory Modules , 双列直插式存储模块)是在奔腾 CPU推出后出现的新型内存模块, DIMM提 供了 64位的数据通道,因此它在奔腾主板上可以单条使用,它比 SIMM( single in-line memory module, 单边接触内存模组 )插槽要长一些, 并且它也支持新 型的 168线 EDORAM ( Extended Data Output RAM, 扩展数据输出内存)存储 器。 DRAM ( Dynamic Random Access Memory, 动态随机存取存 4诸器)为最常 见的内存芯片, 一个 DIMM或 SIMM中可以包含一个或多个 DRAM。 DRAM 只能将数据保持很短的时间。 为了保持数据, DRAM使用电容存储, 所以必 须隔一段时间刷新一次, 如果存储单元没有被刷新, 存储的信息就会丟失。 关 机或掉电之后 DRAM中存储的数据也会丟失。 NVM ( Non- Volatile Memory, 非易失性存储器)是另一种可做内存芯片的存储颗粒, 一个 DIMM或 SIMM 中可以包含一个或多个 NVM。 NVM通常用来存放程序和数据,不同于 DRAM 的特性, 关机或掉电之后 NVM中存储的数据不会丟失。
另外, 需说明的是, 本发明实施例中所述的 "连接"指的是两个或两个以 上虚拟模块之间、 两个或两个以上实体模块之间、或者实体模块与虚拟模块之 间具有通信连接, 其具体实现可以为一条或多条通信线路或信号线路。 除非明 确说明, 否则该 "连接" 可以是直接连接, 可以是通过接口或端口连接, 还可 以是通过其它的虚拟模块或实体模块连接。 本发明实施例中所述的 "第一"和 "第二"等除非有明确说明,否则仅是为了区分而言,并非有特定的顺序关系。
请参考图 1 , 为本发明实施例提供的一种内存系统的逻辑结构示意图。 如 图 1所示, 该内存系统 100包括: 第一内存模块 101 , 第二内存模块 102, 第 一内存模块 101设有第一内存通道接口 1011 ,并该所述第一内存通道接口 1011 连接第一内存通道 103; 第二内存模块 102设有第二内存通道接口 1021 , 并通 过第二内存通道接口 1021连接第二内存通道 104; 第一内存模块 101和第二 内存模块 102还设有第一内存模块间互连接口 1012和 1022 ,第一内存模块 101 的第一内存模块间互连接口 1012和第二内存模块 102的第二内存模块间互连 接口 1022连接,该第一内存模块 101的第一内存模块间接口 1012与第二内存 模块 102的第一内存模块间互连接口 1022的连接在图 1中示为 105。 需说明 的是,第一内存通道 103和第二内存通道 104还可以连接其它一个或多个内存 模块。
在本发明的一些实施例中, 第一内存模块 101用于通过第一内存模块 101 的第一内存模块间接口 1012与第二内存模块 102的第一内存间互连接口 1022 的连接及第二内存通道 104接收或发送对该内存系统的访问数据,以及通过第 一内存通道 103接收或发送对该内存系统的访问数据。在本发明的另一些实施 例中,第一内存模块 101用于通过第一内存模块 101的第一内存模块间互连接 口 1012与其它内存模块的内存模块间互连接口的连接接收或发送对内存系统 的访问数据。
其中,对该内存系统的访问数据包括以下中的一个或多个: 对所述第一内 存模块的访问请求, 对所述第一内存模块的访问请求的响应数据或关联数据, 对所述第二内存模块的访问请求,以及对所述第二内存模块的访问请求的响应 数据或关联数据。 需说明的是, 所述访问请求可以为读请求, 可以为写请求。 当所述访问请求为读请求时,所述访问请求的响应数据可以为读请求要从内存 系统中读取的数据, 当所述访问请求为写请求时, 所述访问请求的关联数据可 以为写请求要写入内存系统的数据。
在图 1所示内存系统中, 第一内存通道 103形成访问第一内存模块 101 的通路 110 (带双向箭头的虚线所示); 第二内存通道 104与内存模块间通信 连接 105 , 形成访问第一内存模块的通路 111 ; 通路 110与通路 111不共享物 理总线, 具体实现为第一内存通道 103和第二内存通道 104不共享物理总线, 因此通路 110与通路 111可以并行工作。 对于第一内存模块 101而言, 其不仅 可以通过第一内存通道 103 , 即通路 110 , 接收访问请求 (该访问请求可以来 自内存控制器 ), 也可以通过第二内存通道 104以及内存模块间的通信连接 105 , 即通路 111 , 接收访问请求。 同样, 第二内存模块 102不仅通过第二内 存通道 104接收访问请求 ,也可以通过第一内存通道 103以及内存模块间的通 信连接 105接收访问请求。对于访问请求的关联数据或内存模块返回的访问请 求的响应数据也可以根据通路的运行状态(例如忙碌或空闲 )选择合适的通路 进行发送, 本发明实施例中并不对访问数据的传输路线进行限定, 即访问请求 和该访问请求的响应数据或关联数据可以通过同一条通路传输,也可以通过不 同的通路传输。
需说明的是,本发明实施例提供的内存系统中不同的内存模块的存储介质 可以不相同, 也可以相同, 本发明实施例对此不作限定。
图 2a为本发明实施例提供的内存系统 200的逻辑结构示意图, 图 2a中的 201-205、 210、 211、 2011、 2012、 2021、 2022分别与图 1中的 101-105、 110、 111、 1011、 1012、 1021、 1022意义相同, 在此不再赘述。 图 2a还示出了存储 控制器 206。 第一内存模块 201和第二内存模块 202通过不同的内存通道连接 同一内存控制器 206。
内存控制器 206用于检测第一内存通道 203和第二内存通道 204的运行状 况,接收对所述内存系统的访问数据, 并根据所述第一内存通道和所述第二内 存通道的运行状况将所述访问数据发送给所述内存系统。 在一种实现方式下, 所述运行状况包括忙碌和空闲,当接收到的访问请求的目标地址位于第一内存 模块 201且第一内存通道 203为忙碌时,内存控制器 206将所述访问请求通过 通路 211传递给第一内存模块 201 , 即通过第二内存通道 204发送给第二内存 模块 202, 由第二内存模块 202通过第二内存模块 202的第一内存模块间互连 接口 2022和第一内存模块 201的第一内存模块间互连接口 2012之间的连接 205将所述访问数据发送给第一内存模块 201 ; 同样地, 当接收到的访问请求 的目标地址位于第二内存模块 202且第二内存通道 204为忙碌时,内存控制器 206将所述访问请求通过第一内存通道 203传递给第一内存模块 201 , 由第一 内存模块 201通过第一内存模块 201的第一内存模块间互连接口 2012与第二 内存模块 202的第一内存模块间互连接口 2022之间的连接 205将所述访问数 据发送给第二内存模块 202。 在这种实现方式下, 根据读请求返回的响应数据 可以通过空闲的通路返回,也可以通过忙碌的通路返回; 写请求的关联数据可 以与读请求通过同一条通路发送,也可以通过不同的通路发送,对此本发明实 施例不作限定。
进一步地,内存控制器 206还用于记录所述访问数据的路径和所述访问数 据的状态, 所述访问数据的路径包含所述第一内存通道或第二内存通道, 所述 访问数据的状态包括访问数据是否发送。在本发明实施例中, 所述访问请求的 路径可以是访问第一内存模块 201的通路 210或通路 211 , 当然也可以是访问 第二内存模块 202的对应通路。 所述访问请求的状态包括访问请求是否发送, 和 /或访问请求的结果是否返回。
图 2a所示的内存控制器 206内嵌在 CPU207中, 而在本发明的另一些实 施例中, 内存控制器也可以独立于处理器存在, 内存控制器与 CPU通过物理 连接进行通信。 在本发明的一些实施例中, 所述第一内存通道与第一内存控制器连接, 所 述第二内存通道与第二内存控制器连接,即第一内存通道和第二内存通道可以 分别连接不同的内存控制器, 两个内存控制器可以内嵌在 CPU内部, 也可以 独立于 CPU存在。 在一种实现方式下, 两个内存控制器之间可以具有通信连 接。 其中, 当第一内存控制器连接的第一内存通道忙碌时, 可以将访问请求通 过二者之间的通信连接发送给第二内存控制器,从而由第二内存控制器将该访 问请求通过第二内存通道发送给第二内存模块,再由第二内存模块通过内存模 块间互连接口将该访问请求发送给第一内存模块。在另一种实现方式下, 若两 个内存控制器之间没有通信连接, 则可以设置负责调度的模块, 该模块与两个 内存控制器都有通信连接,并由该模块监控内存通道的空闲或忙碌状态或者由 内存控制器将内存通道的状态发送给该模块, 该模块根据两条(或多条)内存 通道的状态、 决定访问请求发送给哪一个内存控制器。具体调度方法参考本发 明前述实施例, 在此不再赘述。
进一步地, 如图 2b所示该内存系统 200还可以包含第三内存模块 208。 第三内存模块 208设有第三通道接口 2082; 第三内存模块 208通过第三通道 接口 2082连接第二内存通道 204; 第一内存模块 201和第三内存模块 208还 设有第二内存模块间互连接口 2013和 2081 , 第一内存模块 201的第二内存模 块间互连接口 2013与第三内存模块 208的第二内存模块间互连接口 2081连 接; 与图 2实施例相比, 图 2b所示的实施例中的第一内存模块 201还用于通 过第一内存模块 201的第二内存模块间互连接口 2013与第三内存模块 208的 第二内存模块间互连接口 2081之间的连接及第二内存通道 204接收或发送对 所述内存系统的访问数据。 在本发明的其它一些实施例中, 第三内存模块 208 连接的内存通道可以是除第一内存通道和第二内存通道之外的其它内存通道。 在本发明的另一些实施例中,内存系统中的两条或两条以上内存通道都可 以连接两个或两个的内存模块, 内存模块之间可以根据需要建立一对一、一对 多和 /或多对一的连接关系。 例如如图 2c所示, 第一内存通道 203通过第四内 存模块的内存通道接口 2092连接第四内存模块 209 , 第四内存模块 209与第 三内存模块 208通过各自的内存模块互连接口 2091和 2081连接。 在图 2c的 基础上,第一内存模块和第三内存模块也可以通过另外的内存模块间互连接口 (图中未示出)连接。
需说明的是,本发明实施例中所述的内存模块的存储介质可以相同也可以 不同,例如第一内存模块 201是 DRAM内存模块,第二内存模块 202是 NVM 或其它类型的内存模块。 本发明实施例中所述内存模块可以为独立物理模块, 所述内存通道接口及内存模块间互连接口为物理接口。本发明实施例中所述内 存通道接口可以为遵循 DDR或 DDR2或 DDR3或 DDR4协议的双倍速率接口, 也可以为遵循其它协议的其它类型的接口。
请参阅图 3a为本发明实施例提供的内存模块 301的内部结构示意图, 该 内存模块可以应用于本发明前述实施例的内存系统(例如图 1、 图 2a、 图 2c 中的第一内存模块 201 ), 也可以应用于其它内存系统。 如图 3a所示, 该内存 模块 301包括内存管理单元 3011、 内存通道接口 3012、 内存模块间互连接口 3013 (连接其它内存模块)以及多个存储单元 3014; 内存管理单元 3011与内 存模块间互连接口 3013、 内存通道接口 3012以及存储单元 3014连接。 内存 通道接口 3012用于连接内存通道; 内存管理单元 3011用于通过所述内存通道 接口以及所述内存通道接口连接的所述内存通道接收或发送访问数据;内存模 块间互连接口 3013用于与除该内存模块之外的其它内存模块连接, 内存管理 单元 3011还用于通过内存模块间互连接口 3013发送或接收访问数据 ,具体地 , 根据图 3a内存管理单元 3011用于通过内存模块间互连接口 3013及所述内存 模块与所述其它内存模块之间的连接发送或接收访问数据。所述访问数据包括 以下中的一个或多个: 对所述内存模块的访问请求,对所述内存模块的访问请 求的响应数据或关联数据,对所述第一内存模块的访问请求, 以及对所述第一 内存模块的访问请求的响应数据或关联数据。
如图 3a所示, 内存管理单元 3011用于通过内存通道接口 3012及所述内 存通道接收访问数据;根据所述访问数据判断所述访问数据的目的内存模块是 否是当前内存模块; 若所述访问数据的目的内存模块不是当前内存模块, 则将 所述访问数据通过所述第一内存模块间互连接口 3013发送给其它内存模块; 若所述访问数据的目的内存模块是当前内存模块,则根据所述访问数据确定与 所述访问数据关联的目的存储单元,根据所述访问数据对所述目的存储单元执 行操作, 其中, 所述目的存储单元为当前内存模块的存储单元 3014中的一个 或多个。 模块是否是当前内存模块的步骤具体包括:判断所述访问数据的目标地址是否 属于当前内存模块的地址空间, 或者, 判断所述访问数据的目标地址是否是当 前内存模块的地址。所述访问数据的目标地址是所述访问数据的目的内存模块 的地址, 可以是一个数值, 也可以是数值范围。 该目标地址可以是访问数据自 己携带的。 在另一种实现方式下, 该访问数据中可以包含标识位, 该标识位用 于标识该访问数据的目标地址是否是当前内存模块。 该标识位可以实现为 0 和 1 , 若接收到的访问数据的标识位是 0 , 则确定该访问数据的目标地址是当 前内存模块; 若是 1 , 则不是当前内存模块。
在本发明一些实施例中, 若所述访问数据为读请求, 则对所述目的存储单 元执行读操作; 若所述访问数据写请求, 则对所述目的存储单元执行写操作。
内存管理单元 3011还用于:通过内存模块间互连接口 3013及该内存模块
301与其它内存模块之间的连接接收访问数据, 确定与所述访问数据关联的目 的存储单元; 根据所述访问数据对所述目的存储单元执行操作。
在本发明的一些实施例中,内存模块可以包含两个或两个以上内存模块间 互连接口。在这种实现下,通过其中一个内存模块间互连接口接收的访问数据, 例如读请求或写请求,也需判断该访问数据的目的内存模块是否是当前内存模 块,因为当前内存模块可能是上一个内存模块到下一个内存模块的中间内存模 块。
进一步地,如图 3b所示,内存模块 301还设有内存模块间互连接口 3015 , 内存管理单元 3011还与所述内存模块间互连接口 3015连接; 内存模块间互连 接口 3015用于与除该内存模块和内存模块间互连接口 3013连接的内存模块之 外的其它内存模块连接; 内存管理单元 3011还用于通过内存模块间互连接口 3015以及其与其它内存模块的连接接收或发送访问数据。 内存模块间互连接 口 3013和内存模块间互连接口 3015连接的两个或多个内存模块可以连接同一 内存通道, 也可以连接不同的内存通道。 所述访问数据包括以下中的一个或多 个: 对该内存模块的访问请求,对该内存模块的访问请求的响应数据或关联数 据,对所述第一内存模块的访问请求,对所述第一内存模块的访问请求的响应 数据或关联数据,对所述第二内存模块的访问请求, 以及对所述第二内存模块 的访问请求的响应数据或关联数据 <
如图 3b所示, 内存管理单元 3011具体用于: 通过内存通道接口 3012接 收访问数据; 模块是否是当前 内存模块; 若所述访问数据的目的内存模块不是当前内存模块, 则根据所述访 问数据的目标地址与内存模块间互连接口的对应关系,确定与所述访问数据对 应的内存模块间互连接口,若与所述访问数据对应的内存模块间互连接口为内 存模块间互连接口 3013 , 则将所述访问数据通过内存模块间互连接口 3013发 送给与 3013连接的其它内存模块, 若与所述访问数据对应的内存模块间互连 接口为内存模块间互连接口 3015 , 则将所述访问数据通过内存模块间互连接 口 3015发送给与 3015连接的其它内存模块;若所述访问数据的目的内存模块 元, 根据所述访问数据对所述目的存储单元执行操作, 其中, 所述目的存储单 元为当前内存模块的存储单元中的一个或多个。 具体实现可参考前述实施例, 在此不再赘述。
进一步地, 如图 3b所示, 内存管理单元 3011还可以用于: 通过内存模块 间互连接口 3013接收访问数据; 根据所述访问数据判断所述访问数据的目的 内存模块是否是当前内存模块;若所述访问数据的目的内存模块不是当前内存 模块,则将所述访问数据通过内存模块间互连接口 3015发送给与 3015连接的 其它内存模块; 若所述访问数据的目的内存模块是当前内存模块, 则根据所述 目的存储单元执行操作, 其中, 所述目的存储单元为当前内存模块的存储单元 中的一个或多个。 本领域技术人员容易理解的是,上述方法内存模块通过两个内存模块间互 连接口中的一个接收到访问数据之后 ,也可以判断是通过内存通道还是另一个 内存模块间互连接口转发出去。当内存模块具有三个或三个以上内存模块间互 连接口时,无论从内存通道还是其中一个内存模块间互连接口接收到的访问数 据, 都需要经过判断确定通过哪一个内存模块间互连接口转发出去。
在本发明的一些实施例中, 所述内存模块为独立物理模块, 所述内存通道 接口及内存模块间互连接口为物理接口。 内存通道接口可以为双倍数据速率 DDR或 DDR2或 DDR3或 DDR4接口。 存储单元包括动态随机存取存储器 DRAM芯片和 /或非易失性存储器 NVM芯片。
通过以上技术方案可知,本发明实施例通过在内存模块中增加一个或多个 内存模块间互连接口,使内存系统中分属于不同内存通道的多个内存模块能够 通过该内存模块间互连接口建立通信连接,进而使得该内存系统中的内存模块 可以同时被多个内存通道所访问,从而在某一内存通道负载过大的时候, 实现 通过另一负载较轻的内存通道对该负载过大的内存通道上的内存模块的访问, 一定程度上解决了内存通道负载不均衡的情况, 有效提高了内存通道的利用 率。
另夕卜,通过本发明实施例提供的技术方案, 不同内存控制器连接的内存模 块之间, 不同 CPU连接的不同内存模块之间, 甚至不同单板、 不同机拒、 不 同计算机系统的内存模块之间都可以建立连接, 形成一个内存区域网络, 该内 存区域网络可以被不同内存控制器、 不同 CPU、 不同单板、 不同机拒、 不同 计算机系统共享。内存模块间连接形成的拓朴可以根据需求通过设置内存模块 上互连接口的个数和连接关系来设置。 下面通过一些具体的实施方式来说明。 请参阅图 4,为本发明实施例提供的一种内存系统 400的逻辑结构示意图。 如图 4所示, 不同的 CPU分别包含内存控制器(本发明实施例以内存控制器 内嵌入 CPU为例进行说明, 实际实现中内存控制器与 CPU也可以独立分开实 现), 并由该内存控制器通过内存通道(图中实线连接所示)连接一个内存模 块, 各个 CPU的内存模块之间通过内存模块间互连接口 (图中未示出)进行 连接。其中, 图 4中实线所示为内存控制器与与各自的内存模块之间的内存通 道, 虚线为各个内存模块之间通过内存模块间互连接口建立的连接。 由图 4 可见, 分属于不同 CPU的内存模块之间通过建立互连形成了一个内存区域网 络, 每个 CPU通过与其连接的内存通道可以实现访问整个内存区域网络中各 个内存模块, 内存区域网络对于单个 CPU或内存控制器可以是透明的。
图 4中多个内存模块具体可以实现为 DIMM或 SIMM模块, 其中每个内 存模块内部可以包含一个或多个 DRAM作为存储单元, 或者包含一个或多个 NVM作为存储单元。 各个内存模块内部的存储介质可以是同类型的, 也可以 是不同类型的,对此本发明实施例并不做限定。其中内存模块间的通信连接可 以实现为高速总线, 所述高速总线既可以是异步的串行总线,也可以是同步的 并行总线。 如果是异步的串行总线, 总线中传输的数据单元可以是消息包。 消 息包的形式比较灵活, 里面的内容例如命令、 数据都可以配置。
图 4中所示多个 CPU可以全部或部分位于一个计算机系统内部, 也可以 分别属于不同的计算机系统。 后者的情况下, 一个 CPU可以看做一个服务器 节点, 不同的服务器节点可能位于不同的物理位置, 而不同物理位置的服务器 节点间的网络延迟、 带宽等可能存在一些差异, 不同服务器节点的性能参数以 及网络影响的大小也存在不同之处,而且不同应用程序的特征对内存性能的要 求也不大相同。 因此, 内存区域网络的形式可以根据不同的需求进行设置, 内 存区域网络的组织可以是图 4所示的网格网络,也可以是层次或半层次化的网 络,还可以是集中式的网络。 不同组织形式的内存区域网络都可以借鉴本文中 其它实施例中介绍的内存模块结构,在此基础上, 本领域普通技术人员可以通 过调整内存模块间互连接口的数量、内存模块间的连接关系以及内存模块中的 路由功能等实现。
可见, 实现了内存模块间互连之后, 不同服务器节点可以方便、 快捷地共 享整个系统的内存资源。对于不同服务器内存负载不均衡的现象, 内存数据可 以通过高速的内存区域网络在不同节点间进行快速的移动和部署。系统的内存 资源可以在内存区域网络内形成虚拟的全局内存地址空间,透明地共享。另外, 如果不同节点间要进行数据的交互,如数据复制等操作, 内存区域网络可以不 通过传统的内存控制器、 操作系统、 网络协议栈等一套流程, 而直接迅速地完 成数据的操作。
请参阅图 5, 为本发明实施例提供的一种不同存储介质组成的内存系统 500的逻辑结构示意图。 其中每个内存控制器通过内存通道 (图 5中实线连接 所示 )连接一个 DRAM内存模块和一个 NVM内存模块。 DRAM内存模块中 的一个或多个存储单元(或称之为 "内存芯片")使用的是 DRAM存储介质, NVM内存模块中的一个或多个存储单元使用的是 NVM存储介质。 不同内存 控制器的 DRAM内存模块和 NVM模块设有内存模块间互连接口, 并通过这 些接口建立如图 5中虚线所示的连接关系。 DRAM内存模块和 NVM内存模块 的具体实现可以参考本发明任意内存模块实施例以及本领域人员据此可以获 知的任意变形实现方式。 在本发明的另一些实施例中, 图 5中所示的 DRAM内存模块和 NVM内 存模块可以通过遵循不同的协议的内存通道接口和内存通道与同一内存控制 器连接。
在图 5所示的实施例中, 根据对 DRAM内存模块和 NVM内存模块的使 用方式不同, 内存模块间的连接关系也会存在差异。 在一种实现方式下, 如果 NVM内存模块只是作为 DRAM内存模块的数据备份, 那么 DRAM内存模块 与 NVM内存模块之间的连接使用的线路的频率和带宽可以不用特别高; 在另 一种实现方式下, 如果 NVM内存模块作为 DRAM内存模块的一部分, 那么 二者之间的连接使用的线路的频率和带宽必须达到特定的频率和带宽要求。
图 5所示的内存系统与图 4所示的内存系统相比增加了 NVM内存模块。
DRAM内存模块与 NVM内存模块在容量、延迟、 带宽、 功耗及持久性等方面 有各自的优缺点,图 5将这些不同存储介质的内存模块连接在一起作为一个内 存区域网络, 可以充分利用各种存储介质的特性, 最大化该内存系统在容量、 延迟、 功耗等各个方面的优势。、
需说明的是, 具体实现中内存模块的种类也可以选择出 DRAM和 NVM 之外的其它, 混合的种类可以是两种, 也可以是两种以上。 内存模块间的连接 关系可以实现为如图 5所示的网格网络, 或者层次或半层次化网络, 或者集中 式网络。
请参阅图 6, 为本发明实施例提供的另一种内存系统 600的逻辑结构示意 图。 在前述图 5实施例的基础上, 图 6所示的内存系统中, 每一个 CPU都有 自己的私有内存模块, 该私有内存模块可以实现为 DIMM内存模块或其它种 类的内存模块。 不同 CPU的私有内存模块可以是相同类型, 也可以是不同类 型。 该私有内存模块没有设置内存模块间互连接口, 仅通过内存通道(图中实 线连接所示 )与内存控制器连接, 因此不能被其它的内存模块及其它内存控制 器或 CPU所访问。
各个 CPU连接各自的私有内存模块和内存区域网络, 由于内存区域网络 在一定程度上为所有处理器共享, 而共享的内存模块在容量、 延迟、 带宽等方 面都可能受到约束, 因此各个 CPU的私有内存模块可以在一定程度上用来满 足 CPU对内存的独占需求。各个 CPU的私有内存模块可以用来存放各个 CPU 比较核心的、 经常访问的数据, 而不用担心内存带宽、 容量等被其它 CPU影 响。
请参阅图 7, 为本发明实施例提供的一种内存系统的逻辑结构示意图。 如 图 7所示, 8个 CPU分别成对位于 4块单板(也可以为母板或主板)上, 每 两块单板属于一个计算机系统。 这两块单板可以位于同一个机拒,也可以位于 不同的机拒。除私有内存模块之外的不同计算机系统内的内存模块可以通过本 发明实施例提供的内存系统共享。
通过以上实施例的描述可以看出, 本发明以多维的方式来组织内存模块, 除了内存模块和内存控制器的连接之外,还存在内存模块间的连接。 内存模块 个维度的连接被其它的内存模块, 进而被其它的内存通道所访问,从而改变了 传统的一维内存组织形式, 以及其造成的内存通道间无法协调的现象, 充分利 用所有内存通道的内存总线, 提高内存总线带宽的利用率。
下面再通过一些具体的实施例介绍本发明提供的内存系统中内存模块的 访问方式。 请参阅图 8, 为本发明实施例提供的内存模块访问方法的方法流程示意 图, 该方法可以应用于本发明实施例提供的内存系统, 该内存系统包括两个或 两个以上内存模块,所述内存模块包括内存通道接口和至少一个内存模块间互 连接口, 内存模块的实现方式可参考前述实施例所述。 如图 8所示, 该方法包 括:
5101、通过内存模块间互连接口接收读请求,所述内存模块间互连接口用 于连接除当前内存模块之外的其它内存模块;
5102、根据所述读请求确定与所述读请求关联的目的存储单元,所述目的 存储单元为所述内存模块中包含的存储单元中的一个或多个;
S103、 读取所述目的存储单元中存储的数据作为所述读请求的响应数据;
S 104、将所述读请求的响应数据通过所述内存模块间互连接口或通过所述 内存模块上的内存通道接口发送。
进一步的,当所述内存模块间互连接口为两个或两个以上时,如图 9所示, 本发明实施例提供另一种内存系统访问方法, 该方法包括:
S201、通过内存模块间互连接口接收读请求,所述内存模块间互连接口用 于连接除当前内存模块之外的其它内存模块。
S202、根据所述读请求判断所述读请求的目的内存模块是否是当前内存模 块; 若所述读请求的目的内存模块不是当前内存模块, 则将所述读请求通过与 所述读请求关联的内存模块间互连接口发送给其它内存模块(S206 ); 若所述 读请求的目的内存模块是当前内存模块, 则执行步骤 S203。
步骤 S203、 S204和 S205分别于图 8中的步骤 S102、 S103和 S104相同, 在此不再赘述。 具体地, 步骤 S202可以实现为: 判断所述读请求的目标地址是否属于当 前内存模块的地址空间; 或者, 判断所述读请求的目标地址是否是当前内存模 块的地址。 若所述读请求的目标地址属于当前内存模块的地址空间, 或者, 所 述读请求的目标地址是当前内存模块的地址, 则判断结果为是; 若所述读请求 的目标地址不属于当前内存模块的地址空间,且所述读请求的目标地址不是当 前内存模块的地址, 则判断结果为否。
在一种实现方式下, 步骤 S206具体为: 根据所述读请求的目标地址查询 当前内存模块的路由表,获得与所述读请求的目标地址关联的内存模块间互连 接口的标识;将所述读请求通过与所述内存模块间互连接口的标识对应的内存 模块间互连接口发送给其它内存模块;所述路由表中存储有当前内存模块的内 存模块间互连接口的标识与当前内存模块连接的其它内存模块的地址的对应 关系。
如图 10a所示,内存管理模块中维护有不同接口的接口标识与内存地址之 间的对应关系, 以下称之为路由表。该路由表中的第一列存储内存模块中两个 内存模块间互连接口的接口标识, 1和 2分别标识内存模块间互连接口 1和内 存模块间互连接口 2; 第二列是内存模块间互连接口对应的内存地址空间, 每 个接口对应的内存地址空间可以是连续的一个地址空间,也可以是多个不连续 的地址空间, 例如可以是 0MB~255MB等这样一个地址范围空间和
1024MB-1279MB这样一个地址范围空间。
在另一种实现方式下, 步骤 S206具体为: 从所述读请求的目标地址中获 取内存模块间互连接口的标识;将所述读请求通过与所述内存模块间互连接口 的标识对应的内存模块间互连接口发送给其它内存模块。 请参阅图 10b, 为访问请求中携带的目标地址的一个示例图。 该目标地址 中包含接口标识、 bank标识、 row标识、 column标识以及其它信息。 其中, bank标识、 row标识、 column标识都是本领域技术人员熟知的内存地址中的 通用标识,而其它信息是根据需要扩展的信息,在此不再赘述。需要说明的是, 所述接口标识用来标识该访问请求需要路由的接口,可能是内存通道接口的标 识, 也可能内存模块间互连接口的标识。
在另一种实现方式下, 步骤 S206具体为: 直接从访问请求中获取内存模 块间互连接口的标识,然后将此访问请求转发至与此内存模块间互连接口的标 识对应的内存模块间互连接口。
若内存模块间的互连釆用的是异步的串行总线,那么该总线中传输的数据 单元可以是消息包, 消息包的形式比较灵活, 里面的内容例如命令、 数据等都 可以进行配置。 图 10c为本发明实施例中访问请求的消息包形式的一个示例, 该消息包中包含包头、 内存地址、 消息包大小以及该消息包需要路由的内存模 块及内存模块间互连接口。从图 10c中可以看出, 该消息包从内存模块 1的内 存模块间互连接口 1路由出去, 最后由内存模块 k的内存模块间互连接口 m 路由到与此内存模块间互连接口 m连接的内存模块。 因此, 内存管理单元 601 可以直接从该消息包中获取内存模块间互连接口标识,将该消息包路由到对应 的内存模块间互连接口,然后下一个内存模块的内存管理单元也可以釆用同样 的方式继续进行路由, 直到到达真正的目的内存模块,根据内存地址确定需要 访问的是该目的内存模块的哪一个或多个存储单元。
进一步地, 如图 11所示, 本发明实施例提供的内存模块访问方法还可以 包括: 5301、 通过内存模块间互连接口接收写请求;
5302、 通过所述内存模块间互连接口接收所述写请求的关联数据; 或者, 通过所述内存模块的内存通道接口接收所述写请求的关联数据;
5303、 根据所述写请求确定与所述写请求关联的目的存储单元;
S304、 将所述写请求的关联数据写入所述目的存储单元。
当所述内存模块间互连接口为两个或两个以上时, 如图 12所示, 所述方 法包括:
5401、 通过内存模块间互连接口接收写请求;
5402、根据所述写请求判断所述写请求的目的内存模块是否是当前内存模 块; 具体判断方法可以参考前述读请求的判断方法。
若所述写请求的目的内存模块不是当前内存模块, 则执行步骤 S406将所 述写请求及所述写请求的关联数据通过与所述写请求关联的内存模块间互连 接口发送给其它内存模块;
若所述写请求的目的内存模块是当前内存模块, 则执行步骤 S403。
步骤 S403、 S404和 S405与前述实施例的步骤 S302、 S303和 S304类似, 在此不再 赘述。
本领域技术人员容易理解的是, 本发明实施例中,接收写请求和接收写请 求关联数据可以通过同一条传输线路, 也可以通过不同的传输线路; 转发写请 求和写请求的关联数据可以通过同一条传输线路, 也可以通过不同的线路,对 写请求和写请求的关联数据是否通过统一通路传输并不做限定。写请求的目的 内存模块的判断过程可以参考前述读请求的实施例, 在此不再赘述。
另外, 需说明的是, 步骤 S301-S304或步骤 S401-S406与步骤 S101-S104 或步骤 S201-S206没有特定的顺序关系。对于内存模块而言,接收的是读请求 就可以执行步骤步骤 S101-S104或步骤 S201-S206 , 接收的是写请求, 就可以 执行步骤 S301-S304或步骤 S401-S406
请参阅图 13 , 为本发明实施例提供的另一种内存模块的访问方法的方法 流程示意图。 该方法包括:
5501、 通过内存模块的内存通道接口接收访问请求;
5502、根据所述访问请求判断所述访问请求的目的内存模块是否是当前内 存模块;若所述访问请求的目的内存模块不是当前内存模块,则执行步骤 S503. 具体地, 步骤 S502可以实现为: 判断所述访问请求的目标地址是否属于 当前内存模块的地址空间; 或者, 判断所述访问请求的目标地址是否是当前内 存模块的地址。
S503、将所述访问请求通过与所述访问请求关联的当前内存模块的内存模 块间互连接口发送给其它内存模块。
在一种实现方式下, 步骤 S503具体实现为: 根据所述访问请求的目标地 址查询当前内存模块的路由表,获得与所述访问请求的目标地址关联的内存模 块间互连接口的标识;将所述访问请求通过与所述内存模块间互连接口的标识 对应的内存模块间互连接口发送给其它内存模块;所述路由表中存储有当前内 存模块的内存模块间互连接口的标识与当前内存模块连接的其它内存模块的 地址的对应关系。
在另一种实现方式下, 步骤 S503具体实现为: 从所述访问请求的目标地 址中获取内存模块间互连接口的标识;将所述访问请求通过与所述内存模块间 互连接口的标识对应的内存模块间互连接口发送给其它内存模块。 若所述访问请求的目的内存模块是当前内存模块,那么执行方式类似于前 述实施例。
本发明实施例还提供一种内存模块访问控制方法,该方法可以应用于内存 控制器中。 该方法包括:
当内存控制器接收到的访问请求的目标地址位于第一内存模块,且访问所 述第一内存模块的第一内存通道为忙碌时,所述内存控制器将所述访问请求通 过访问第二内存模块的第二内存通道,及用于与第一内存模块连接的第二内存 模块的第二内存模块间互连接口,及所述第二内存模块通过所述第二内存模块 间互连接口与第一内存模块的连接, 发送给所述第一内存模块。
进一步地, 该方法还可以包括:
当内存控制器接收到的访问请求的目标地址位于第二内存模块,且访问所 述第二内存模块的第二内存通道为忙碌时,所述内存控制器将所述访问请求通 过访问第一内存模块的第一内存通道,及用于与第二内存模块连接的第一内存 模块的第一内存模块间互连接口,及所述第一内存模块通过所述第一内存模块 间互连接口与第二内存模块的连接, 发送给所述第二内存模块。
通过以上技术方案可知 ,本发明实施例提供的内存访问方法和内存访问控 制方法可以使内存模块同时被多个内存通道所访问,从而在某一内存通道负载 过大的时候,实现通过另一负载较轻的内存通道对该负载过大的内存通道上的 内存模块的访问, 一定程度上解决了内存通道负载不均衡的情况,有效提高了 内存通道的利用率。
请参阅图 14 , 为本发明实施例提供的一种计算机系统 800的逻辑结构示 意图。 该计算机系统中包括: 处理器 811、 内存控制器 801、 输出设备 810 (显 示器、 显示屏)、 输入设备 809 (例如键盘、 鼠标、 触摸屏等) 以及通信接口 808, 其中内存控制器通过两条内存通道 805和 806连接两个内存模块 802和 803。 其中, 内存模块 802与内存模块 803之间存在连接 804, 内存模块 802 既可以通过与其连接的内存通道 805接收内存控制器 801发送的访问数据,也 可以通过与内存模块 803之间的连接 804以及连接内存模块 803的内存通道 806接收内存控制器发送的访问数据。 通信接口 808是计算机系统用来与网络 连接的接口, 可以是普通计算机的网卡接口、 手机终端的天线接口等, 用于与 其它计算机系统进行通信, 具体包括发送和接收数据等。 除了内存之外, 该计 算机系统中还可以包含其它类型的存储设备 805 , 例如高速緩存或磁盘等。
在本发明的其它一些实施例中, 该计算机系统可以釆取总线连接的结构, 例如处理器、内存控制器、通信接口等通过总线连接在一起。该总线可以是 ISA ( Industry Standard Architecture , 工业标准体系结构) 总线、 PCI ( Peripheral Component, 夕卜部设备互连 ) 总线或 EISA ( Extended Industry Standard
Architecture, 扩展工业标准体系结构)总线等。 所述总线可以是一条或多条物 理线路, 当是多条物理线路时可以分为地址总线、 数据总线、 控制总线等。
在本发明的其它一些实施例中, 内存控制器 801可以内置于处理器 804 内。
请参阅图 15a, 为本发明实施例提供的一种计算机系统 800的局部逻辑结 构示意图 ,包括:内存控制器 801、以及第一内存模块 802和第二内存模块 803; 两个内存模块都与与内存控制器 801连接;第一内存模块 802设有第一内存通 道接口 8021 , 并通过第一内存通道接口 8021连接第一内存通道 805; 第二内 存模块 803设有第二内存通道接口 8031 , 并通过第二内存通道接口 8031连接 第二内存通道 806 , 第一内存模块 802通过第一内存通道 805与所述内存控制 器 801连接,第二内存模块 803通过所述第二内存通道 806与所述内存控制器 801连接; 第一内存模块 802和第二内存模块 803还分别设有第一内存模块间 互连接口 8022和 8032, 8022和 8032连接。
第一内存模块 802用于通过第一内存模块 802的第一内存模块间接口
8022与第二内存模块 803的第一内存模块间互连接口 8032的连接及第二内存 通道 806接收或发送访问数据 ,以及通过第一内存通道 805接收或发送访问数 据。 所述访问数据包括以下中的一个或多个: 对所述第一内存模块 802的访问 请求,对所述第一内存模块 802的访问请求的响应数据或关联数据,对所述第 二内存模块 803的访问请求,以及对所述第二内存模块 803的访问请求的响应 数据或关联数据。
具体的, 第一内存模块 802包括第一内存管理单元和至少一个存储单元, 所述第一内存管理单元与所述第一内存模块间互连接口、所述第一内存通道接 口 8021以及所述存储单元连接, 所述第一内存管理单元用于: 通过所述第一 内存通道接口 8021接收访问数据; 根据所述访问数据判断所述访问数据的目 的内存模块是否是所述第一内存模块 802; 若所述访问数据的目的内存模块不 是所述第一内存模块 802, 则将所述访问数据通过所述第一内存模块间互连接 口 8022发送给所述第二内存模块 803; 若所述访问数据的目的内存模块是所 述第一内存模块 802 , 则根据所述访问数据确定与所述访问数据关联的目的存 储单元, 根据所述访问数据对所述目的存储单元执行操作, 其中, 所述目的存 储单元为所述第一内存模块 802的存储单元中的一个或多个。进一步的, 第一 内存管理单元还用于:通过所述第一内存模块间互连接口 8022接收访问数据, 确定与所述访问数据关联的目的存储单元;根据所述访问数据对所述目的存储 单元执行操作。
进一步的, 请参阅图 15b, 该计算机系统还可以包括第三内存模块 812, 所述第三内存模块 812设有第三通道接口 8121 , 所述第三内存模块 812通过 所述第三通道接口 8121连接第二内存通道 806; 所述第一内存模块 802和所 述第三内存模块 812还分别设有第二内存模块间互连接口 8023和 8122, 所述 第一内存模块 802的第二内存模块间互连接口 8023与所述第三内存模块 812 的第二内存模块间互连接口 8122连接; 所述第一内存模块 802还用于通过其 自身的第二内存模块间互连接口 8022与所述第三内存模块 812的第二内存模 块间互连接口 8122之间的连接及所述第二内存通道 806接收或发送对所述内 存系统的访问数据。
在本发明的其它一些实施例中,所述第三内存模块 812也可以通过所述第 三通道接口 8121连接除第一内存通道 805和第二内存通道 806之外的其它内 存通道。三个模块之间内存通道遵循的协议可以相同也可以不相同, 本发明实 施例对此不作限定。
所述访问数据包括以下中的一个或多个:对所述第一内存模块 802的访问 请求,对所述第一内存模块 802的访问请求的响应数据或关联数据,对所述第 二内存模块 803的访问请求,对所述第二内存模块 803的访问请求的响应数据 或关联数据,对所述第三内存模块 812的访问请求, 以及对所述第三内存模块 812的访问请求的响应数据或关联数据。在此种实现方式下,第一内存模块 802 包括第一内存管理单元和至少一个存储单元,所述第一内存管理单元与所述第 一内存模块间互连接口 8022、 所述第二内存模块间互连接口 8023、 所述第一 内存通道接口 8021以及所述存储单元连接, 所述第一内存管理单元用于: 通 过所述第一内存通道接口 8021接收访问数据; 根据所述访问数据判断所述访 问数据的目的内存模块是否是所述第一内存模块 802; 若所述访问数据的目的 内存模块不是所述第一内存模块 802 , 则根据所述访问数据的目标地址与所述 内存模块间互连接口的对应关系,确定与所述访问数据对应的内存模块间互连 接口,若与所述访问数据对应的内存模块间互连接口为第一内存模块间互连接 口 8022 , 则将所述访问数据通过所述第一内存模块间互连接口 8022发送给所 述第二内存模块 803 , 若与所述访问数据对应的内存模块间互连接口为第二内 存模块间互连接口 8023 , 则将所述访问数据通过所述第二内存模块间互连接 口 8023发送给所述第三内存模块; 若所述访问数据的目的内存模块是所述第 元, 根据所述访问数据对所述目的存储单元执行操作, 其中, 所述目的存储单 元为所述第一内存模块 802的存储单元中的一个或多个。
在本发明实施例中,内存控制器 801用于监测所述第一内存通道 805和所 述第二内存通道 806的运行状况; 接收对所述内存系统的访问数据, 并根据所 述第一内存通道 805和所述第二内存通道 806的运行状况将所述访问数据发送 给所述内存系统。
具体的,内存控制器 801用于监测所述第一内存通道 805和所述第二内存 通道 806的运行状况 , 所述运行状况包括忙碌和空闲; 当接收到的所述访问数 据的目标地址位于第一内存模块 802且所述第一内存通道 805为忙碌时,所述 内存控制器将所述访问数据通过所述第二内存通道 806发送给第二内存模块 803 , 由所述第二内存模块 803通过所述第二内存模块 803的第一内存模块间 互连接口 8032和所述第一内存模块 802的第一内存模块间互连接口 8022之间 的连接将所述访问数据发送给第一内存模块 802; 当接收到的所述访问数据的 目标地址位于第二内存模块 803且所述第二内存通道 806为忙碌时,所述内存 控制器将所述访问数据通过所述第一内存通道 805发送给第一内存模块 802, 由所述第一内存模块 802通过所述第一内存模块 802的第一内存模块间互连接 口 8022与所述第二内存模块 803的第一内存模块间互连接口 8032之间的连接 将所述访问数据发送给第二内存模块 803。
进一步的, 内存控制器 801还用于: 记录所述访问数据的路径和所述访问 数据的状态, 所述访问数据的路径包含所述第一内存通道或第二内存通道, 所 述访问数据的状态包括访问数据是否发送和 /或访问请求的结果是否返回。
请参阅图 16 , 为本发明实施例提供的另一种计算机系统的局部逻辑结构 示意图。 如图 16所示, 该计算机系统 900包括两个内存控制器 9011和 9012, 二者分别连接两个内存通道 905和 906。 内存控制器 9011和 9012都内置于同 一 CPU907中。 在其它的实现方式中, 内存控制器 9011和 9012也可以与 CPU907连接而非内置。 图 16中 902、 903、 904、 9021、 9022、 9031以及 9032 分别类似于图 15a中的 802、 803、 804、 8021、 8022、 8031以及 8032 , 在此 不再赘述。
请参阅图 17 , 为本发明实施例提供的另一种计算机系统的局部逻辑结构 示意图。 如图 17所示, 该计算机系统 1000包括两个 CPU10071和 10072, CPU10071和 CPU10072中分别内置了内存控制器 10011和 10012。 CPU10071 和 CPU10072可以运行相同的操作系统, 也可以运行不同的操作系统。 图 17 中 1002、 1003、 1004、 10021、 10022、 10031以及 10032分别类似于图 16中 的 902、 903、 904、 9021、 9022、 9031以及 9032, 在此不再赘述。 其中在图 17中每个独立 CPU可以独立连接一个通信接口。
需说明的是,在本发明的其它一些实施例中,计算机系统的每个内存通道 都可以连接两个或两个以上内存模块,例如内存通道 805的还可以再连接两个 或两个以上内存模块。 内存模块之间的连接关系可以根据需要设置。 内存模块 的具体实现可以参考前述实施例描述及其附图。
在本发明的其它实施例中, 计算机系统中的内存控制器也可以是两个以 上, CPU的数量同样可以为两个或两个以上。 多个内存模块之间的连接关系 可以根据具体需求建立, 形成网格、 层次化或半层次化、 或集中式等的内存区 域网络, 具体结构可以参考前述实施例的描述。 另夕卜, 如图 1、 图 2a-图 2c中 所示例的内存系统都可以全部或部分包含在本发明实施例所提供的计算机系 统中。
需要说明的是,本发明实施例所提供的计算机系统中的内存模块的存储介 质可以相同也可以不同。 内存模块可以为独立物理模块, 内存通道接口及内存 模块间互连接口可以为物理接口。具体的, 内存通道接口可以为双倍数据速率 DDR接口或 DDR2接口或 DDR3接口或 DDR4接口。
另外, 本发明实施例所述的计算机系统可以包含一个单板或多个单板, 不 同的 CPU可以位于同一单板或不同单板上, 不同的单板可以位于同一机拒, 也可以位于不同的机拒。 因此本发明想要保护的计算机系统仅以图 14- 17为例 来说明, 并不以此为限。
可见,本发明实施例所提供的计算机系统通过在内存模块中增加一个或多 个内存模块间互连接口,使内存系统中分属于不同内存通道的多个内存模块能 够通过该内存模块间互连接口建立通信连接,进而使得该内存系统中的内存模 块可以同时被多个内存通道所访问,从而在某一内存通道负载过大的时候, 实 现通过另一负载较轻的内存通道对该负载过大的内存通道上的内存模块的访 问, 一定程度上解决了内存通道负载不均衡的情况,有效提高了内存通道的利 用率。
本说明书中的各个实施例均釆用递进的方式描述,各个实施例之间相同相 似的部分互相参见即可,例如装置实施例中某些模块的功能实现可以参考方法 实施例中方法的描述。
需说明的是, 以上所描述的装置实施例仅仅是示意性的, 其中所述作为分 可以是或者也可以不是物理单元, 即可以位于一个地方, 或者也可以分布到多 个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实 施例方案的目的。 另外, 本发明提供的装置实施例附图中, 模块之间的连接关 系表示它们之间具有通信连接, 具体可以实现为一条或多条通信总线或信号 线。 本领域普通技术人员在不付出创造性劳动的情况下, 即可以理解并实施。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本发 明可借助专用硬件包括专用集成电路、 专用 CPU、 专用存储器、 专用元器件 等来实现。 用来实现同一功能的具体硬件结构可以是多种多样的, 例如模拟电 路、数字电路或专用电路等。本发明也可以通过计算机软件加必要的硬件实现, 该计算机软件产品存储在可读取的存储介质中, 如计算机的软盘, U盘、 移动 硬盘、 只读存储器(ROM, Read-Only Memory )、 随机存取存储器(RAM, Random Access Memory ), 磁碟或者光盘等, 包括若干指令用以使得一台计算 机设备(可以是个人计算机, 服务器, 或者网络设备等)执行本发明各个实施 例所述的方法。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于 此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内, 可轻易想到 变化或替换, 都应涵盖在本发明的保护范围之内。 因此, 本发明的保护范围应 以所述权利要求的保护范围为准。

Claims

权 利 要 求
1、 一种内存系统, 其特征在于, 所述内存系统包括: 第一内存模块, 第 二内存模块; 所述第一内存模块设有第一内存通道接口, 并通过所述第一内存 通道接口连接第一内存通道; 所述第二内存模块设有第二内存通道接口, 并通 过所述第二内存通道接口连接第二内存通道;所述第一内存模块和所述第二内 存模块还分别设有第一内存模块间互连接口,所述第一内存模块的第一内存模 块间互连接口与所述第二内存模块的第一内存模块间互连接口连接。
2、 根据权利要求 1所述的系统, 其特征在于, 所述第一内存模块用于通 过所述第一内存模块的第一内存模块间接口与所述第二内存模块的第一内存 模块间互连接口的连接及所述第二内存通道接收或发送对所述内存系统的访 问数据, 以及通过所述第一内存通道接收或发送对所述内存系统的访问数据。
3、 根据权利要求 2所述的系统, 对所述内存系统的访问数据包括以下中 的一个或多个: 对所述第一内存模块的访问请求,对所述第一内存模块的访问 请求的响应数据或关联数据,对所述第二内存模块的访问请求, 以及对所述第 二内存模块的访问请求的响应数据或关联数据。
4、 根据权利要求 1-3任一项所述的系统, 其特征在于, 所述第一内存模 块包括第一内存管理单元和至少一个存储单元,所述第一内存管理单元与所述 第一内存模块间互连接口、所述第一内存通道接口以及所述存储单元连接, 所 述第一内存管理单元用于:
通过所述第一内存通道接口接收访问数据; 存模块; 若所述访问数据的目的内存模块不是所述第一内存模块,则将所述访问数 据通过所述第一内存模块间互连接口发送给所述第二内存模块;
若所述访问数据的目的内存模块是所述第一内存模块,则根据所述访问数 据确定与所述访问数据关联的目的存储单元,根据所述访问数据对所述目的存 储单元执行操作, 其中, 所述目的存储单元为所述第一内存模块的存储单元中 的一个或多个。
5、 根据权利要求 4所述的系统, 其特征在于, 所述第一内存管理单元还 用于: 通过所述第一内存模块间互连接口接收访问数据, 确定与所述访问数据 关联的目的存储单元; 根据所述访问数据对所述目的存储单元执行操作。
6、 根据权利要求 2所述的系统, 其特征在于, 所述内存系统还包括第三 内存模块, 所述第三内存模块设有第三通道接口; 所述第一内存模块和所述第 三内存模块还分别设有第二内存模块间互连接口,所述第一内存模块的第二内 存模块间互连接口与所述第三内存模块的第二内存模块间互连接口连接; 所述第三内存模块通过所述第三通道接口连接第二内存通道或第三内存 通道;
所述第一内存模块还用于通过所述第一内存模块的第二内存模块间互连 接口与所述第三内存模块的第二内存模块间互连接口之间的连接及所述第三 内存通道接收或发送对所述内存系统的访问数据。
7、 根据权利要求 6所述的系统, 其特征在于, 对所述内存系统的访问数 据包括以下中的一个或多个: 对所述第一内存模块的访问请求,对所述第一内 存模块的访问请求的响应数据或关联数据, 对所述第二内存模块的访问请求, 对所述第二内存模块的访问请求的响应数据或关联数据 ,对所述第三内存模块 的访问请求, 以及对所述第三内存模块的访问请求的响应数据或关联数据。
8、 根据权利要求 6或 7所述的系统, 其特征在于, 所述第一内存模块包 括第一内存管理单元和至少一个存储单元,所述第一内存管理单元与所述第一 内存模块间互连接口、所述第二内存模块间互连接口、所述第一内存通道接口 以及所述存储单元连接, 所述第一内存管理单元用于:
通过所述第一内存通道接口接收访问数据; 存模块;
若所述访问数据的目的内存模块不是所述第一内存模块,则根据所述访问 数据的目标地址与所述内存模块间互连接口的对应关系,确定与所述访问数据 对应的内存模块间互连接口,若与所述访问数据对应的内存模块间互连接口为 第一内存模块间互连接口,则将所述访问数据通过所述第一内存模块间互连接 口发送给所述第二内存模块 ,若与所述访问数据对应的内存模块间互连接口为 第二内存模块间互连接口,则将所述访问数据通过所述第二内存模块间互连接 口发送给所述第三内存模块;
若所述访问数据的目的内存模块是所述第一内存模块,则根据所述访问数 据确定与所述访问数据关联的目的存储单元,根据所述访问数据对所述目的存 储单元执行操作, 其中, 所述目的存储单元为所述第一内存模块的存储单元中 的一个或多个。
9、 根据权利要求 1-5任一项所述的系统, 其特征在于, 所述第一内存通 道和所述第二内存通道与同一内存控制器连接。
10、 根据权利要求 9述的系统, 其特征在于, 所述内存控制器用于: 监测所述第一内存通道和所述第二内存通道的运行状况;
接收对所述内存系统的访问数据,并根据所述第一内存通道和所述第二内 存通道的运行状况将所述访问数据发送给所述内存系统。
11、 根据权利要求 10所述的系统, 其特征在于, 所述内存控制器具体用 于:
监测所述第一内存通道和所述第二内存通道的运行状况,所述运行状况包 括忙碌和空闲;
当接收到的所述访问数据的目标地址位于第一内存模块且所述第一内存 通道为忙碌时 ,所述内存控制器将所述访问数据通过所述第二内存通道发送给 第二内存模块,由所述第二内存模块通过所述第二内存模块的第一内存模块间 互连接口和所述第一内存模块的第一内存模块间互连接口之间的连接将所述 访问数据发送给第一内存模块;
当接收到的所述访问数据的目标地址位于第二内存模块且所述第二内存 通道为忙碌时 ,所述内存控制器将所述访问数据通过所述第一内存通道发送给 第一内存模块,由所述第一内存模块通过所述第一内存模块的第一内存模块间 互连接口与所述第二内存模块的第一内存模块间互连接口之间的连接将所述 访问数据发送给第二内存模块。
12、 根据权利要求 10或 11所述的系统, 其特征在于, 所述内存控制器还 用于: 记录所述访问数据的路径和所述访问数据的状态, 所述访问数据的路径 包含所述第一内存通道或第二内存通道,所述访问数据的状态包括访问数据是 否发送和 /或访问请求的结果是否返回。
13、 根据权利要求 1-5任一项所述的系统, 其特征在于, 所述第一内存通 道与第一内存控制器连接 , 所述第二内存通道与第二内存控制器连接。
14、 根据权利要求 13所述的系统, 其特征在于, 所述第一内存控制器与 第一处理器连接, 所述第二内存控制器与第二处理器连接; 或者, 所述第一内 存控制器内置于第一处理器, 所述第二内存控制器内置于第二处理器。
15、 根据权利要求 14所述的系统, 其特征在于, 所述第一处理器置于第 一单板上, 所述第二处理器置于第二单板上。
16、 根据权利要求 15所述的系统, 其特征在于, 所述第一单板和第二单 板分别内置于不同的计算机系统内。
17、 根据权利要求 1-16任一项所述的系统, 其特征在于, 不同的内存模 块的存储介质不相同; 或者, 不同的内存模块的存储介质相同。
18、 根据权利要求 1-17任一项所述的系统, 其特征在于, 所述内存模块 为独立物理模块, 所述内存通道接口及内存模块间互连接口为物理接口。
19、 根据权利要求 1-18任一项所述的系统, 其特征在于, 所述内存通道 接口为双倍数据速率 DDR接口或 DDR2接口或 DDR3接口或 DDR4接口。
20、 一种内存模块, 其特征在于, 所述内存模块设有内存通道接口和第一 内存模块间互连接口, 所述内存模块包括内存管理单元和至少一个存储单元, 所述内存管理单元与所述内存通道接口、所述第一内存模块间互连接口以及所 述存储单元连接;
所述内存通道接口用于连接内存通道;
所述内存管理单元用于通过所述内存通道接口以及所述内存通道接口连 接的所述内存通道接收或发送访问数据;
所述第一内存模块间互连接口用于与除该内存模块之外的第一内存模块 连接;所述内存管理单元还用于通过所述第一内存模块间互连接口发送或接收 访问数据。
21、 根据权利要求 20所述的内存模块, 其特征在于, 所述访问数据包括 以下中的一个或多个: 对所述内存模块的访问请求,对所述内存模块的访问请 求的响应数据或关联数据,对所述第一内存模块的访问请求, 以及对所述第一 内存模块的访问请求的响应数据或关联数据。
22. 根据权利要求 20或 21所述的内存模块,所述内存管理单元具体用于: 通过所述内存通道接口及所述内存通道接收访问数据;根据所述访问数据判断 所述访问数据的目的内存模块是否是当前内存模块;若所述访问数据的目的内 存模块不是当前内存模块,则将所述访问数据通过所述第一内存模块间互连接 口发送给所述第一内存模块; 若所述访问数据的目的内存模块是当前内存模 访问数据对所述目的存储单元执行操作, 其中, 所述目的存储单元为当前内存 模块的存储单元中的一个或多个。
23、 根据权利要求 22所述的内存模块, 其特征在于, 所述内存管理单元 还用于:通过所述第一内存模块间互连接口及所述内存模块与所述第一内存模 块之间的连接接收访问数据,确定与所述访问数据关联的目的存储单元; 根据 所述访问数据对所述目的存储单元执行操作。
24、 根据权利要求 20所述的内存模块, 其特征在于, 所述内存模块还设 有第二内存模块间互连接口,所述内存管理单元还与所述第二内存模块间互连 接口连接;
所述第二内存模块间互连接口用于与除该内存模块和所述第一内存模块 之外的第二内存模块连接;所述内存管理单元还用于通过所述第二内存模块间 互连接口及所述内存模块与所述第二内存模块之间的连接接收或发送访问数 据。
25、 根据权利要求 24所述的内存模块, 其特征在于, 所述访问数据包括 以下中的一个或多个: 对该内存模块的访问请求,对该内存模块的访问请求的 响应数据或关联数据,对所述第一内存模块的访问请求,对所述第一内存模块 的访问请求的响应数据或关联数据,对所述第二内存模块的访问请求, 以及对 所述第二内存模块的访问请求的响应数据或关联数据。
26、 根据权利要求 24或 25所述的内存模块, 其特征在于, 所述内存管理 单元具体用于:
通过所述内存通道接口接收访问数据; 块;
若所述访问数据的目的内存模块不是当前内存模块,则根据所述访问数据 的目标地址与所述内存模块间互连接口的对应关系,确定与所述访问数据对应 的内存模块间互连接口,若与所述访问数据对应的内存模块间互连接口为第一 内存模块间互连接口,则将所述访问数据通过所述第一内存模块间互连接口发 送给所述第一内存模块 ,若与所述访问数据对应的内存模块间互连接口为第二 内存模块间互连接口,则将所述访问数据通过所述第二内存模块间互连接口发 送给所述第二内存模块;
若所述访问数据的目的内存模块是当前内存模块,则根据所述访问数据确 定与所述访问数据关联的目的存储单元,根据所述访问数据对所述目的存储单 元执行操作, 其中, 所述目的存储单元为当前内存模块的存储单元中的一个或 多个。
27、 根据权利要求 26所述的内存模块, 其特征在于, 所述内存管理单元 还用于:
通过所述第一内存模块间互连接口接收访问数据; 块;
若所述访问数据的目的内存模块不是当前内存模块,则将所述访问数据通 过所述第二内存模块间互连接口发送给所述第二内存模块;
若所述访问数据的目的内存模块是当前内存模块,则根据所述访问数据确 定与所述访问数据关联的目的存储单元,根据所述访问数据对所述目的存储单 元执行操作, 其中, 所述目的存储单元为当前内存模块的存储单元中的一个或 多个。
28、 根据权利要求 20-27任一项所述的内存模块, 其特征在于, 所述内存 模块为独立物理模块, 所述内存通道接口及内存模块间互连接口为物理接口。
29、 根据权利要求 20-28任一项所述的内存模块, 其特征在于, 所述内存 通道接口为双倍数据速率 DDR或 DDR2或 DDR3或 DDR4接口。
30、 根据权利要求 20-29任一项所述的内存模块, 其特征在于, 所述存储 单元包括动态随机存取存储器 DRAM芯片和 /或非易失性存储器 NVM芯片。
31、 一种内存模块访问方法, 其特征在于, 所述访问方法包括: 通过内存模块间互连接口接收读请求,所述内存模块间互连接口用于连接 除当前内存模块之外的其它内存模块; 根据所述读请求确定与所述读请求关联的目的存储单元,所述目的存储单 元为所述当前内存模块中包含的存储单元中的一个或多个;
读取所述目的存储单元中存储的数据作为所述读请求的响应数据; 将所述读请求的响应数据通过所述内存模块间互连接口或通过所述内存 模块上的内存通道接口发送。
32、 根据权利要求 31所述的方法, 其特征在于, 当所述内存模块间互连 接口为两个或两个以上时,在所述通过内存模块间互连接口接收读请求的步骤 之后, 所述方法还包括:
根据所述读请求判断所述读请求的目的内存模块是否是当前内存模块; 若所述读请求的目的内存模块不是当前内存模块,则将所述读请求通过与 所述读请求关联的内存模块间互连接口发送给其它内存模块;
若所述读请求的目的内存模块是当前内存模块,则执行所述根据所述读请 求确定与所述读请求关联的目的存储单元的步骤。
33、 根据权利要求 32所述的方法, 其特征在于, 所述根据所述读请求判 断所述读请求的目的内存模块是否是当前内存模块, 具体包括:
判断所述读请求的目标地址是否属于当前内存模块的地址空间; 或者, 判 断所述读请求的目标地址是否是当前内存模块的地址。
34、 根据权利要求 32或 33所述的方法, 其特征在于, 所述若所述读请求 的目的内存模块不是当前内存模块,则将所述读请求通过与所述读请求关联的 内存模块间互连接口发送给其它内存模块, 具体包括:
若所述读请求的目的内存模块不是当前内存模块,则根据所述读请求的目 标地址查询当前内存模块的路由表,获得与所述读请求的目标地址关联的内存 模块间互连接口的标识;
将所述读请求通过与所述内存模块间互连接口的标识对应的内存模块间 互连接口发送给其它内存模块;
所述路由表中存储有当前内存模块的内存模块间互连接口的标识与当前 内存模块连接的其它内存模块的地址的对应关系。
35、 根据权利要求 32或 33所述的方法, 其特征在于, 所述若所述读请求 的目的内存模块不是当前内存模块,则将所述读请求通过与所述读请求关联的 内存模块间互连接口发送给其它内存模块, 具体包括:
若所述读请求的目的内存模块不是当前内存模块,则从所述读请求的目标 地址中获取内存模块间互连接口的标识;将所述读请求通过与所述内存模块间 互连接口的标识对应的内存模块间互连接口发送给其它内存模块。
36、 根据权利要求 31所述的方法, 其特征在于, 所述方法还包括: 通过内存模块间互连接口接收写请求;
通过所述内存模块间互连接口接收所述写请求的关联数据; 或者, 通过所 述内存模块的内存通道接口接收所述写请求的关联数据;
根据所述写请求确定与所述写请求关联的目的存储单元;
将所述写请求的关联数据写入所述目的存储单元。
37、 根据权利要求 36所述的方法, 其特征在于, 当所述内存模块间互连 接口为两个或两个以上时,在所述通过内存模块间互连接口接收写请求的步骤 之后, 所述方法还包括:
根据所述写请求判断所述写请求的目的内存模块是否是当前内存模块; 若所述写请求的目的内存模块不是当前内存模块,则将所述写请求及所述 写请求的关联数据通过与所述写请求关联的内存模块间互连接口发送给其它 内存模块;
若所述写请求的目的内存模块是当前内存模块,则执行所述通过所述内存 模块间互连接口接收所述写请求的关联数据; 或者, 通过所述内存模块的内存 通道接口接收所述写请求的关联数据的步骤。
38、 一种内存模块访问方法, 其特征在于, 所述访问方法包括: 通过内存模块的内存通道接口接收访问请求;
根据所述访问请求判断所述访问请求的目的内存模块是否是当前内存模 块;
若所述访问请求的目的内存模块不是当前内存模块,则将所述访问请求通 过与所述访问请求关联的当前内存模块的内存模块间互连接口发送给其它内 存模块。
39、 根据权利要求 38所述的方法, 其特征在于, 所述根据所述访问请求 判断所述访问请求的目的内存模块是否是当前内存模块, 具体包括:
判断所述访问请求的目标地址是否属于当前内存模块的地址空间; 或者, 判断所述访问请求的目标地址是否是当前内存模块的地址。
40、 根据权利要求 38或 39所述的方法, 其特征在于, 所述若所述访问请 求的目的内存模块不是当前内存模块,则将所述访问请求通过与所述访问请求 关联的当前内存模块的内存模块间互连接口发送给其它内存模块, 具体包括: 若所述访问请求的目的内存模块不是当前内存模块,则根据所述访问请求 的目标地址查询当前内存模块的路由表,获得与所述访问请求的目标地址关联 的内存模块间互连接口的标识; 将所述访问请求通过与所述内存模块间互连接口的标识对应的内存模块 间互连接口发送给其它内存模块;
所述路由表中存储有当前内存模块的内存模块间互连接口的标识与当前 内存模块连接的其它内存模块的地址的对应关系。
41、 根据权利要求 38或 39所述的方法, 其特征在于, 所述若所述访问请 求的目的内存模块不是当前内存模块,则将所述访问请求通过与所述访问请求 关联的当前内存模块的内存模块间互连接口发送给其它内存模块, 具体包括: 若所述访问请求的目的内存模块不是当前内存模块,则从所述访问请求的 目标地址中获取内存模块间互连接口的标识;将所述访问请求通过与所述内存 模块间互连接口的标识对应的内存模块间互连接口发送给其它内存模块。
42、 一种内存模块访问控制方法, 其特征在于, 所述方法包括: 当内存控制器接收到的访问请求的目标地址位于第一内存模块,且访问所 述第一内存模块的第一内存通道为忙碌时,所述内存控制器将所述访问请求通 过访问第二内存模块的第二内存通道,及用于与第一内存模块连接的第二内存 模块的第二内存模块间互连接口,及所述第二内存模块通过所述第二内存模块 间互连接口与第一内存模块的连接, 发送给所述第一内存模块。
43、 根据权利要求 42所述的方法, 其特征在于, 所述方法还包括: 当内存控制器接收到的访问请求的目标地址位于第二内存模块,且访问所 述第二内存模块的第二内存通道为忙碌时,所述内存控制器将所述访问请求通 过访问第一内存模块的第一内存通道,及用于与第二内存模块连接的第一内存 模块的第一内存模块间互连接口,及所述第一内存模块通过所述第一内存模块 间互连接口与第二内存模块的连接, 发送给所述第二内存模块。
44、 一种计算机系统, 其特征在于, 所述计算机系统包括: 至少一个内存 控制器、以及第一内存模块和第二内存模块;所述内存模块与内存控制器连接; 所述第一内存模块设有第一内存通道接口,并通过所述第一内存通道接口 连接第一内存通道; 所述第二内存模块设有第二内存通道接口, 并通过所述第 二内存通道接口连接第二内存通道,所述第一内存模块通过所述第一内存通道 与所述内存控制器连接,所述第二内存模块通过所述第二内存通道与所述内存 控制器连接;
所述第一内存模块和所述第二内存模块还分别设有第一内存模块间互连 接口,所述第一内存模块的第一内存模块间互连接口与所述第二内存模块的第 一内存模块间互连接口连接。
45、 根据权利要求 44所述的系统, 其特征在于, 所述第一内存模块用于 通过所述第一内存模块的第一内存模块间接口与所述第二内存模块的第一内 存模块间互连接口的连接及所述第二内存通道接收或发送访问数据,以及通过 所述第一内存通道接收或发送访问数据。
46、 根据权利要求 45所述的系统, 所述访问数据包括以下中的一个或多 个: 对所述第一内存模块的访问请求,对所述第一内存模块的访问请求的响应 数据或关联数据,对所述第二内存模块的访问请求, 以及对所述第二内存模块 的访问请求的响应数据或关联数据。
47、 根据权利要求 44-46任一项所述的系统, 其特征在于, 所述第一内存 模块包括第一内存管理单元和至少一个存储单元,所述第一内存管理单元与所 述第一内存模块间互连接口、 所述第一内存通道接口以及所述存储单元连接, 所述第一内存管理单元用于: 通过所述第一内存通道接口接收访问数据; 存模块;
若所述访问数据的目的内存模块不是所述第一内存模块,则将所述访问数 据通过所述第一内存模块间互连接口发送给所述第二内存模块;
若所述访问数据的目的内存模块是所述第一内存模块,则根据所述访问数 据确定与所述访问数据关联的目的存储单元,根据所述访问数据对所述目的存 储单元执行操作, 其中, 所述目的存储单元为所述第一内存模块的存储单元中 的一个或多个。
48、 根据权利要求 47所述的系统, 其特征在于, 所述第一内存管理单元 还用于: 通过所述第一内存模块间互连接口接收访问数据,确定与所述访问数 据关联的目的存储单元; 根据所述访问数据对所述目的存储单元执行操作。
49、 根据权利要求 45所述的系统, 其特征在于, 所述系统还包括第三内 存模块, 所述第三内存模块设有第三通道接口; 所述第一内存模块和所述第三 内存模块还分别设有第二内存模块间互连接口,所述第一内存模块的第二内存 模块间互连接口与所述第三内存模块的第二内存模块间互连接口连接;
所述第三内存模块通过所述第三通道接口连接第三内存通道或第二内存 通道;
所述第一内存模块还用于通过所述第一内存模块的第二内存模块间互连 接口与所述第三内存模块的第二内存模块间互连接口之间的连接及所述第三 内存通道接收或发送对所述内存系统的访问数据。
50、 根据权利要求 49所述的系统, 其特征在于, 所述访问数据包括以下 中的一个或多个: 对所述第一内存模块的访问请求,对所述第一内存模块的访 问请求的响应数据或关联数据,对所述第二内存模块的访问请求,对所述第二 内存模块的访问请求的响应数据或关联数据, 对所述第三内存模块的访问请 求, 以及对所述第三内存模块的访问请求的响应数据或关联数据。
51、 根据权利要求 49或 50所述的系统, 其特征在于, 所述第一内存模块 包括第一内存管理单元和至少一个存储单元,所述第一内存管理单元与所述第 一内存模块间互连接口、 所述第二内存模块间互连接口、 所述第一内存通道接 口以及所述存储单元连接, 所述第一内存管理单元用于:
通过所述第一内存通道接口接收访问数据; 存模块;
若所述访问数据的目的内存模块不是所述第一内存模块,则根据所述访问 数据的目标地址与所述内存模块间互连接口的对应关系,确定与所述访问数据 对应的内存模块间互连接口,若与所述访问数据对应的内存模块间互连接口为 第一内存模块间互连接口,则将所述访问数据通过所述第一内存模块间互连接 口发送给所述第二内存模块 ,若与所述访问数据对应的内存模块间互连接口为 第二内存模块间互连接口,则将所述访问数据通过所述第二内存模块间互连接 口发送给所述第三内存模块;
若所述访问数据的目的内存模块是所述第一内存模块,则根据所述访问数 据确定与所述访问数据关联的目的存储单元,根据所述访问数据对所述目的存 储单元执行操作, 其中, 所述目的存储单元为所述第一内存模块的存储单元中 的一个或多个。
52、 根据权利要求 44-48任一项所述的系统, 其特征在于,
所述第一内存通道和所述第二内存通道与同一内存控制器连接。
53、 根据权利要求 52述的系统, 其特征在于, 所述内存控制器用于: 监测所述第一内存通道和所述第二内存通道的运行状况;
接收对所述内存系统的访问数据,并根据所述第一内存通道和所述第二内 存通道的运行状况将所述访问数据发送给所述内存系统。
54、 根据权利要求 53所述的系统, 其特征在于, 所述内存控制器具体用 于:
监测所述第一内存通道和所述第二内存通道的运行状况,所述运行状况包 括忙碌和空闲;
当接收到的所述访问数据的目标地址位于第一内存模块且所述第一内存 通道为忙碌时 ,所述内存控制器将所述访问数据通过所述第二内存通道发送给 第二内存模块,由所述第二内存模块通过所述第二内存模块的第一内存模块间 互连接口和所述第一内存模块的第一内存模块间互连接口之间的连接将所述 访问数据发送给第一内存模块;
当接收到的所述访问数据的目标地址位于第二内存模块且所述第二内存 通道为忙碌时 ,所述内存控制器将所述访问数据通过所述第一内存通道发送给 第一内存模块,由所述第一内存模块通过所述第一内存模块的第一内存模块间 互连接口与所述第二内存模块的第一内存模块间互连接口之间的连接将所述 访问数据发送给第二内存模块。
55、 根据权利要求 53或 54所述的系统, 其特征在于, 所述内存控制器还 用于: 记录所述访问数据的路径和所述访问数据的状态, 所述访问数据的路径 包含所述第一内存通道或第二内存通道,所述访问数据的状态包括访问数据是 否发送和 /或访问请求的结果是否返回。
56、 根据权利要求 44-48任一项所述的系统, 其特征在于,
所述第一内存通道与第一内存控制器连接,所述第二内存通道与第二内存 控制器连接。
57、 根据权利要求 56所述的系统, 其特征在于, 所述第一内存控制器与 第一处理器连接, 所述第二内存控制器与第二处理器连接; 或者, 所述第一内 存控制器内置于第一处理器, 所述第二内存控制器内置于第二处理器。
58、 根据权利要求 57所述的系统, 其特征在于, 所述第一处理器置于第 一单板上, 所述第二处理器置于第二单板上。
59、 根据权利要求 57或 58所述的系统, 其特征在于, 所述第一处理器和 第二处理器分别运行不同的操作系统。
60、 根据权利要求 44-59任一项所述的系统, 其特征在于, 所述不同的内 存模块的存储介质不相同; 或者, 不同的内存模块的存储介质相同。
61、 根据权利要求 44-60任一项所述的系统, 其特征在于, 所述内存模块 为独立物理模块, 所述内存通道接口及内存模块间互连接口为物理接口。
62、 根据权利要求 44-61任一项所述的系统, 其特征在于, 所述内存通道 接口为双倍数据速率 DDR接口或 DDR2接口或 DDR3接口或 DDR4接口。
PCT/CN2012/082824 2012-10-12 2012-10-12 内存系统、内存模块、内存模块的访问方法以及计算机系统 WO2014056178A1 (zh)

Priority Applications (4)

Application Number Priority Date Filing Date Title
PCT/CN2012/082824 WO2014056178A1 (zh) 2012-10-12 2012-10-12 内存系统、内存模块、内存模块的访问方法以及计算机系统
CN201280001334.XA CN103988186A (zh) 2012-10-12 2012-10-12 内存系统、内存模块、内存模块的访问方法以及计算机系统
EP12886312.3A EP2887223A4 (en) 2012-10-12 2012-10-12 MEMORY SYSTEM, MEMORY MODULE, METHOD OF ACCESSING MEMORY MODULE, AND COMPUTER SYSTEM
US14/676,021 US20150261698A1 (en) 2012-10-12 2015-04-01 Memory system, memory module, memory module access method, and computer system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2012/082824 WO2014056178A1 (zh) 2012-10-12 2012-10-12 内存系统、内存模块、内存模块的访问方法以及计算机系统

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US14/676,021 Continuation US20150261698A1 (en) 2012-10-12 2015-04-01 Memory system, memory module, memory module access method, and computer system

Publications (1)

Publication Number Publication Date
WO2014056178A1 true WO2014056178A1 (zh) 2014-04-17

Family

ID=50476888

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2012/082824 WO2014056178A1 (zh) 2012-10-12 2012-10-12 内存系统、内存模块、内存模块的访问方法以及计算机系统

Country Status (4)

Country Link
US (1) US20150261698A1 (zh)
EP (1) EP2887223A4 (zh)
CN (1) CN103988186A (zh)
WO (1) WO2014056178A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9495304B2 (en) 2012-10-15 2016-11-15 Huawei Technologies Co., Ltd. Address compression method, address decompression method, compressor, and decompressor
CN113243010A (zh) * 2018-12-19 2021-08-10 美光科技公司 存储器模块接口

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104461727A (zh) * 2013-09-16 2015-03-25 华为技术有限公司 内存模组访问方法及装置
US10318473B2 (en) * 2013-09-24 2019-06-11 Facebook, Inc. Inter-device data-transport via memory channels
US20150169445A1 (en) * 2013-12-12 2015-06-18 International Business Machines Corporation Virtual grouping of memory
US9697114B2 (en) * 2014-08-17 2017-07-04 Mikhael Lerman Netmory
US9645760B2 (en) * 2015-01-29 2017-05-09 Kabushiki Kaisha Toshiba Storage system and control method thereof
US10127165B2 (en) * 2015-07-16 2018-11-13 Samsung Electronics Co., Ltd. Memory system architecture including semi-network topology with shared output channels
US9786389B2 (en) * 2015-10-16 2017-10-10 SK Hynix Inc. Memory system
US10621119B2 (en) * 2016-03-03 2020-04-14 Samsung Electronics Co., Ltd. Asynchronous communication protocol compatible with synchronous DDR protocol
US10390114B2 (en) * 2016-07-22 2019-08-20 Intel Corporation Memory sharing for physical accelerator resources in a data center
US11403035B2 (en) * 2018-12-19 2022-08-02 Micron Technology, Inc. Memory module including a controller and interfaces for communicating with a host and another memory module
KR20210046348A (ko) * 2019-10-18 2021-04-28 삼성전자주식회사 복수의 프로세서들에 유연하게 메모리를 할당하기 위한 메모리 시스템 및 그것의 동작 방법
US20210209035A1 (en) * 2020-12-26 2021-07-08 Intel Corporation Memory accesses using a memory hub

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1788260A (zh) * 2003-05-13 2006-06-14 先进微装置公司 包含通过串行内存互连而连接至多个内存模块的主机的系统
CN101562039A (zh) * 2008-04-14 2009-10-21 威刚科技股份有限公司 多通道内存储存装置及其控制方法
CN101587740A (zh) * 2008-05-23 2009-11-25 承奕科技股份有限公司 多通道固态存储系统
US20100274976A1 (en) * 2009-04-24 2010-10-28 Samsung Electronics Co., Ltd. Method of operating data storage device and device thereof

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7136958B2 (en) * 2003-08-28 2006-11-14 Micron Technology, Inc. Multiple processor system and method including multiple memory hub modules
US7334070B2 (en) * 2004-10-29 2008-02-19 International Business Machines Corporation Multi-channel memory architecture for daisy chained arrangements of nodes with bridging between memory channels
US8145851B2 (en) * 2005-09-07 2012-03-27 Sony Corporation Integrated device
US20080082750A1 (en) * 2006-09-28 2008-04-03 Okin Kenneth A Methods of communicating to, memory modules in a memory channel
CN101159687B (zh) * 2007-11-07 2010-07-28 中国科学院计算技术研究所 一种多通道通信传输数据的系统和装置与方法
US7895172B2 (en) * 2008-02-19 2011-02-22 Yahoo! Inc. System and method for writing data dependent upon multiple reads in a distributed database
US20100005220A1 (en) * 2008-07-01 2010-01-07 International Business Machines Corporation 276-pin buffered memory module with enhanced memory system interconnect and features
KR20120092220A (ko) * 2011-02-11 2012-08-21 삼성전자주식회사 인터페이스 장치 및 이를 포함하는 시스템
CN102217253B (zh) * 2011-05-05 2013-10-09 华为技术有限公司 报文转发方法、装置及网络设备
US10318473B2 (en) * 2013-09-24 2019-06-11 Facebook, Inc. Inter-device data-transport via memory channels

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1788260A (zh) * 2003-05-13 2006-06-14 先进微装置公司 包含通过串行内存互连而连接至多个内存模块的主机的系统
CN101562039A (zh) * 2008-04-14 2009-10-21 威刚科技股份有限公司 多通道内存储存装置及其控制方法
CN101587740A (zh) * 2008-05-23 2009-11-25 承奕科技股份有限公司 多通道固态存储系统
US20100274976A1 (en) * 2009-04-24 2010-10-28 Samsung Electronics Co., Ltd. Method of operating data storage device and device thereof

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
See also references of EP2887223A4 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9495304B2 (en) 2012-10-15 2016-11-15 Huawei Technologies Co., Ltd. Address compression method, address decompression method, compressor, and decompressor
CN113243010A (zh) * 2018-12-19 2021-08-10 美光科技公司 存储器模块接口

Also Published As

Publication number Publication date
EP2887223A4 (en) 2015-08-19
EP2887223A1 (en) 2015-06-24
CN103988186A (zh) 2014-08-13
US20150261698A1 (en) 2015-09-17

Similar Documents

Publication Publication Date Title
WO2014056178A1 (zh) 内存系统、内存模块、内存模块的访问方法以及计算机系统
US20200058363A1 (en) Memory devices and methods for managing error regions
US9293170B2 (en) Configurable bandwidth memory devices and methods
TW202213104A (zh) 管理記憶體資源的系統及實行遠端直接記憶體存取的方法
GB2479078A (en) Management of memory resources in a chip
JP2012514286A (ja) 可変式メモリリフレッシュ装置および方法
US8661207B2 (en) Method and apparatus for assigning a memory to multi-processing unit
JP2012515989A (ja) メモリ装置電源管理装置及び方法
WO2010072113A1 (zh) 一种存储方法、存储系统及控制器
JP7349812B2 (ja) メモリシステム
JP7317727B2 (ja) 複数のチップ間の通信をサポートする方法、装置、電子機器およびコンピューター記憶媒体
WO2013097394A1 (zh) 一种多处理器共享存储方法及系统
EP4002139A2 (en) Memory expander, host device using memory expander, and operation method of server system including memory expander
JP2015088071A (ja) 情報処理装置、記憶装置制御回路及び記憶装置の制御方法
CN103246622B (zh) 一种扩展内存的方法、内存节点、主节点及系统
CN107844433A (zh) 一种异构混合内存服务器架构
CN115202859A (zh) 一种内存扩展方法以及相关设备
WO2022177573A1 (en) Dual-port memory module design for composable computing
KR102572143B1 (ko) 메모리 클라우드를 위한 메모리 자원 공유 방법 및 이를 이용한 메모리 자원 공유 시스템
WO2022170769A1 (zh) 通信方法、装置及系统
CN116578523B (zh) 片上网络系统及其控制方法
US20230222067A1 (en) Apparatus and method for cache-coherence
US20230222062A1 (en) Apparatus and method for cache-coherence
CN117667379A (zh) 计算机系统、内存扩展设备及用于计算机系统的方法
CN117834447A (zh) 基于PCIe Switch的互联池化系统拓扑管理装置及方法

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: 12886312

Country of ref document: EP

Kind code of ref document: A1

REEP Request for entry into the european phase

Ref document number: 2012886312

Country of ref document: EP

WWE Wipo information: entry into national phase

Ref document number: 2012886312

Country of ref document: EP

NENP Non-entry into the national phase

Ref country code: DE