Patent Description:
In a compute node or system, such as a server, desktop computer or laptop, computations are either done on the main central processing unit (CPU) or on accelerator cards, e.g. graphic accelerator cards carrying graphics processing units (GPU). Data transfers from main memory always have to go long-distance through a particular computing system to reach the CPU or the GPU and allow these units to perform computations with the data. Hence, performance and energy efficiency are adversely affected by this memory "bottleneck" of contemporary computing architectures. A view on how main memory is laid out in these computing architectures sheds light on the nature of said memory bottleneck. Main memory of computing devices is usually organized in memory modules (e.g. dual in-line memory modules, called DIMMs) that work on shared memory channels, also known as busses. These shared memory channels limit the achievable performance of the system, since particularly the sustainable memory bandwidth is limited.

In-Memory Processing (IMP), which is also known as Near-Data Processing or In-Memory Computing, has been proposed as a new form of processing architecture, where computations are located closer to main memory of a system. Since data may stay local, data movement between levels of the memory hierarchy is reduced and better performance and energy efficiency is achieved.

Recent approaches for implementing this architecture propose custom memory devices, such as JEDEC High-Bandwidth Memory (HBM) and Micron's Hybrid Memory Cube (HMC), and specialized logic dies, which offer high bandwidth for IMP computing, when tightly integrated.

This form of integration with HBM or HMC is expensive, since it requires either <NUM>-dimensional process technology, such as through-silicon via [TSV]-enabled 3D stacking of logic and DRAM dies, or "<NUM>"-dimensional techniques, such as using an additional Silicon-interposer on top of the package substrate. As a consequence, recent compute architectures for hardware implementations of IMP are not suitable for replacing commodity RAM devices, such as DDR4 and Non-Volatile Memory (NVM), typically used as main memory in commodity compute nodes, such as servers, and memory capacity of these solutions is thus limited.

Due to the limited memory capacity of these IMP solutions, additional commodity memory (e.g., JEDEC DDR4) needs to be deployed in typical compute systems (e.g., servers) such that the main CPU can work from main memory. IMP cannot make use of this main memory, since IMP is tightly integrated with specialized memory. Since IMP solutions can only be used for part of the main memory, the size of the active working set of workloads is limited and main memory is fragmented. As a further limitation, memory used by IMP may not be visible to a system on a chip (SoC), host or CPU, if IMP is disabled, while commodity RAM is still be used for normal operation and booting the system. As a result of this specialization, IMP is only applied for selected applications resulting in a limited scope of application.

<NPL> discloses a collection of Processing-In-Memory (PIM) chips as smart-memory co-processors to a conventional microprocessor. Features of the DIVA PIMs include a memory interface to a host processor, <NUM>-bit wide data paths for exploiting on-chip bandwidth and an address translation unit.

<CIT> discloses an operation method of a semiconductor memory device including a memory cell array and an internal processor. Internal processing operations include receiving at the memory device a first mode indicator that indicates whether the memory device should operate in a processor mode or in a normal mode, receiving at the memory device processing information for the memory device, when the first mode indicator indicates that the memory device should operate in the processor mode, storing the processing information in a first memory cell region of the memory cell array, using the stored processing information to perform internal processing by the internal processor, and storing a result of the internal processing in the memory cell array.

<NPL> discloses aspects of a Data-Intensive Architecture (DIVA) to support PIM.

<NPL> discloses the integration of near-DRAM accelerators (NDA) with a load-reduced DIMM (LRDIMM).

In view of the above-mentioned challenges and disadvantages, the invention aims to improve the conventional solutions.

The object of the invention is achieved by the solution defined in the enclosed independent claims. Advantageous implementations of the invention are further defined in the dependent claims.

A first aspect of the invention provides a media controller, MDC, for enabling in-memory computing with a main memory, where the memory is for use in a computing device, comprising an in-memory processing, IMP, unit or IMP processor configured to access the main memory based on a first linear main memory address and to perform computations on data from the main memory, a slave physical layer unit or simply slave physical layer configured to serve a request from a host to access the main memory, wherein the request comprises a type of access and an address information, a reverse memory controller, RMC, configured to reassemble a second linear main memory address from a plurality of protocol fields contained in the address information, and to provide the second linear main memory address and the type of access to a local memory controller, LMC, and the LMC configured to grant the IMP access to the main memory and to reschedule the request from the host to access the main memory, as long as computations and access to the main memory performed by the IMP are active and if the first and second linear memory addresses are both included in a predetermined address range.

The MDC of the first aspect allows increasing the available memory capacity for IMP at a lower cost than, for instance, with HBM and HMC integration. In particular, the usable bandwidth is increased compared to standard memory subsystems. Also, the MDC of the first aspect simplifies the deployment of IMP. In particular, by reassembling the second linear main memory address, the LMC is able to compare the access of the host to the access of the IMP, which is based on the first linear memory address, and thus enables the rescheduling of the host request. Notably, the host is not aware of this reassembling, and cannot observe difference than when conventionally accessing a main memory.

In an implementation form of the first aspect, the request further comprises data and the RMC is further configured to provide the data to the LMC, if the type of access is a write access.

Accordingly, the RMC is configured to distinguish different types of access requested by the host.

In a further implementation form of the first aspect, the MDC comprises a buffer unit (or buffer) configured to decouple an electrical load on a memory channel to the host from another electrical load of the main memory.

In a further implementation form of the first aspect, the MDC comprises a switch configured to disable or enable the IMP, wherein the MDC is configured to route all requests from the host to access the main memory without scheduling via the buffer, if the IMP is disabled, and schedule all requests from the host to access the main memory by the LMC and route the requests via the buffer unit, if the IMP is enabled.

If the IMP is disabled, the LMC does thus not interfere with the access scheduled by the host. If the IMP is enabled, IMP can be carried out efficiently, since the host requests are scheduled accordingly by the LMC.

In a further implementation form of the first aspect, the switch is configured to be triggered at run-time or boot time of the computing device.

A second aspect of the invention provides a memory module, which comprises the MDC according to the first aspect and at least a part of the main memory.

Accordingly, the memory module of the second aspect achieves the same advantages as the MDC of the first aspect.

In an implementation form of the second aspect, the at least a part of the memory comprises a plurality of memory units or memories disposed on a dual in-line memory module, DIMM, and organized in ranks, whereby each rank is defined by a unique chip-select signal and only one rank at a time has access to the memory channel to the host.

In a further implementation form of the second aspect, each memory unit is addressed by and directly wired with the MDC to replace its respective rank address with a rank-independent address of a local channel, whereby the local channel comprises all memory units associated with at least one rank, and all local channels are simultaneously accessible by the MDC.

In a further implementation form of the second aspect, the MDC further comprises an address mapper to map the request from the host of the computing device to access the main memory, which is targeted at the rank address of each memory unit, to the corresponding rank-independent local channel address.

In a further implementation form of the second aspect, the address mapper is configured to forward a rank address to the corresponding local channel, if the local channel comprises all memory units associated with exactly one rank.

In a further implementation form of the second aspect, the local memory controller of the MDC is further configured to access only a range of memory units or only selected ranks.

In a further implementation form of the second aspect, a control over any of the local channels, which is covered by the range of memory units, is turned over to the host.

A third aspect of the invention provides a method for enabling in-memory computing with a main memory, where the memory is for use in a computing device, in a computing device, comprising the steps of accessing, by an in-memory processing, IMP, the main memory based on a first linear main memory address and performing computations on data from the main memory, serving, by a slave physical layer, a request from a host to access the main memory, wherein the request comprises a type of access and an address information, reassembling, by a reverse memory controller, RMC, a second linear main memory address from a plurality of protocol fields contained in the address information, and providing the second linear main memory address and the type of access to a local memory controller, LMC, and granting, by the local memory controller, the IMP access to the main memory and rescheduling the request from the host to access the main memory, as long as computations and access to the main memory performed by the IMP are active and if the first and second linear memory addresses are both included in a predetermined address range.

In an implementation form of the third aspect, the request further comprises data and the RMC further provides the data to the LMC, if the type of access is a write access.

In a further implementation form of the third aspect, the MDC comprises a buffer unit (or buffer) for decoupling an electrical load on a memory channel to the host from another electrical load of the main memory.

In a further implementation form of the third aspect, the MDC comprises a switch for disabling or enabling the IMP, wherein the MDC routes all requests from the host to access the main memory without scheduling via the buffer, if the IMP is disabled, and schedules all requests from the host to access the main memory by the LMC and routes the requests via the buffer, if the IMP is enabled.

In a further implementation form of the third aspect, the switch is triggered at run-time or boot time of the computing device.

The method of the third aspect achieves the same advantages as the MDC of the first aspect.

A fourth aspect of the invention provides a computer program product comprising a program code for enabling in-memory computing with a main memory in a computing device according to the first or the second aspect of the invention.

Accordingly, the above-described advantages can be achieved.

In summary, in the embodiments of the invention, in-memory computing with a main memory in a computing device can be implemented. The invention proposes a media controller, MDC, for enabling In-Memory Processing, IMP, with a main memory in a computing device. The MDC may use standard, commodity memory devices and protocols and can coordinate accesses from a host and accesses from IMP compute units to said memory devices. Thereby, available memory capacity for IMP is increased. The traditional organization of main memory in memory modules may be maintained, such that the deployment of IMP is simplified. Usable bandwidth is increased compared to a standard memory subsystem with standard, commodity memory devices by enabling the MDC to buffer, control and process data movement between memory modules and their associated memory channel(s)/bus(ses).

All devices, elements, units and means described in the present application could be implemented in the software or hardware elements or any kind of combination thereof.

The above described aspects and implementation forms of the invention will be explained in the following description of specific embodiments in relation to the enclosed drawings, in which.

<FIG> shows an overview of a control mechanism <NUM> with a media controller (MDC) <NUM> according to an embodiment of the invention. The MDC <NUM> enables in-memory computing on a main memory module <NUM> comprising memory devises <NUM> (here exemplarily DRAMs) in a computing device. Advantageously, the MDC <NUM> is provided on the main memory module <NUM> and connected to the memory devices <NUM>.

The MDC <NUM> comprises an IMP unit or In-Memory Processor <NUM>, a slave physical layer unit or slave physical layer <NUM>, a reverse memory controller (RMC) unit or a reverse memory controller (RMC) <NUM>, and a local memory controller or local memory controller (LMC) unit <NUM>.

The IMP unit <NUM> is configured to access the main memory <NUM>, i.e. particularly the memory devices <NUM>, based on a first linear main memory address, and to perform computations on data from the main memory <NUM>, <NUM>. Accordingly, IMP is enabled by the MDC <NUM>.

The slave physical layer unit <NUM> is configured to serve a request from a host <NUM> to access the main memory <NUM>, i.e. particularly the main memory devices <NUM>, wherein the request comprises a type of access and an address information.

The RMC <NUM> is configured to reassemble a second linear main memory address from a plurality of protocol fields contained in the address information in the host request, and to provide the second linear main memory address and the type of access to the LMC unit <NUM>.

The LMC unit <NUM> is configured to grant the IMP unit <NUM> access to the main memory <NUM>, specifically the memory devices <NUM>, and to reschedule the request from the host <NUM> to access the main memory <NUM>, <NUM>, as long as computations and access to the main memory <NUM>, <NUM> performed by the IMP unit <NUM> are active, and if the first and second linear memory addresses are both included in a predetermined address range. Thus, conflicts between memory accesses of the host and the IMP unit can be avoided.

Various memory modules <NUM> (e.g., LRDIMMs using DDR4 memory devices) may be used and may be enhanced with the MDC <NUM>. The MDC <NUM> preferably operates as a central buffer chip between the memory modules <NUM> and a CPU/host memory bus <NUM>. The CPU/host <NUM> may employ several memory busses, each populated with several memory modules <NUM>. The MDC <NUM> advantageously comprises the IMP compute capabilities performed by the IMP compute unit <NUM>. The MDC <NUM> may either use or integrate the Data Buffer, DB, / Registering Clock Driver, RCD, <NUM> (such as LRDIMM clock drivers and data buffers for signal integrity) functionality from traditional JEDEC LRDIMMs. The DB/RCD chips used today are preferably simple repeater devices, such that the electrical load on the memory channel <NUM> to the host <NUM> is decoupled from the load of the numerous DRAM devices <NUM> organized in memory ranks on the memory module <NUM> or dual-inline memory module (DIMM) <NUM>, to which will be referred to in the following. Such an IMP-enhanced load-reduced DIMM will be referred to as IMP-LRDIMM in the following.

The working principle of an IMP-LRDIMM, however, is also amenable to other memory architectures or technologies such as GDDR5 graphics RAM and byte-addressable non-volatile memory such as 3D XPoint technology.

The control mechanism performed by the MDC <NUM> makes sure that the memory on the DIMM or a plurality of DIMMs <NUM> is always visible to the host/CPU <NUM> as main memory, even though the IMP unit <NUM> may be enabled on the DIMM <NUM> locally at the same time ("Transparent LRDIMM" mode of operation). If the IMP unit <NUM> is enabled, accesses to the memory <NUM>, <NUM> from the IMP unit <NUM> are preferred over accesses to the memory from the host <NUM> by the following mechanism. If the IMP unit <NUM> is not used, the IMP-LRDIMM behaves like a normal LRDIMM. That means, all memory accesses from the host may be scheduled by the host-sided memory controller (MC) <NUM> of the host <NUM>. If the IMP unit <NUM> is switched on, all accesses to memory devices <NUM> on the DIMM <NUM>, either issued by the host <NUM> or issued by the IMP unit <NUM> of the MDC <NUM>, are scheduled by the LMC unit <NUM>, e.g. a memory controller (MDMC) integrated in the MDC <NUM>. The MDC <NUM> includes further the slave physical unit (slave PHY) <NUM> to work as an end point for the memory protocol with the host <NUM>. The RMC <NUM>, e.g. implemented as a reverse MC <NUM>, reassembles, e.g., complete addresses from RAS and CAS phases of a JEDEC protocol, which may be used by the host <NUM>, in order to take account of the physical memory architecture of DRAM devices <NUM> when addressing memory. Requests by the host <NUM> can be rescheduled by the LMC unit <NUM> of the MDC <NUM>. For the host <NUM>, the main memory <NUM> is still accessible, even if the IMP unit <NUM> is enabled for a same address range.

<FIG> shows a further mode of operation ("rank disaggregation") with an MDC <NUM> as an optional control mechanism <NUM>. A bandwidth increase for IMP may be attainable due to a novel organization of memory channels on IMP-LRDIMMs <NUM>, <NUM> derived from original memory ranks <NUM>, and localized IMP on IMP-LRDIMMs. Traditional DIMMs <NUM> or <NUM> are organized in memory ranks <NUM> to increase the total capacity of the DIMMs. Just as an example, four ranks <NUM> are shown on the LRDIMM <NUM> on the left side of <FIG>. Only one rank at a time, which is defined as a set of memory devices, which are connected to a same chip-select signal, and one DIMM <NUM> or <NUM> at a time can use the memory bus <NUM> to the host or SoC <NUM>. Therefore, bandwidth to main memory is limited by the shared bus <NUM> to the host/SoC <NUM>.

With an IMP compute-enabled DIMM <NUM> or <NUM> as shown on the right side of <FIG>, memory ranks can be connected as independent channels <NUM> to the MDC <NUM> such that the usable bandwidth for IMP on the DIMM <NUM>, <NUM> is increased. In this case additional PCB-level wiring overhead on the DIMM may be used. This kind of optimization for IMP computing makes sense, since the IMP compute capability on a DIMM, due to its direct access to main memory, does not depend on the limited bandwidth on the memory bus <NUM> to the host or SoC <NUM> for most of the IMP operations.

Overall, the usable bandwidth for IMP is increased since a) both DIMMs <NUM> and <NUM> on the bus <NUM> to the host can work independently (not having to share bandwidth on the bus to the host) and b) additionally several channels <NUM> can be used independently on DIMM instead of time-slot-dependent ranks <NUM>.

In a standard configuration (without IMP capability) as shown on the left side of <FIG> one 64b host channel <NUM> is shown as an example, whereby two DIMMs <NUM> and <NUM> share the same channel or bus <NUM> to the host <NUM>. Each DIMM is populated with <NUM> memory ranks <NUM>. Since ranks <NUM> and DIMMs <NUM>, <NUM> compete for bandwidth on the host channel, the usable peak bandwidth lies at <NUM> GB/s for memory devices of the type DDR4-<NUM>.

In a configuration according to an embodiment of the invention, <NUM> GB/s usable peak bandwidth may be achieved, because each DIMM <NUM> or <NUM> can use the bandwidth of <NUM> GB/s independently due to the intelligent buffering effect of the MDC <NUM> on each DIMM <NUM>, <NUM> between the host <NUM> and the DRAM devices of a particular rank. The DIMMs <NUM> and <NUM> are "disaggregated", because they do not have to compete for bandwidth on the host channel <NUM> anymore.

In a further configuration a further doubling of usable peak bandwidth may be attained, if additionally the exemplary four ranks <NUM> may be combined into two local memory channels <NUM> (<NUM>:<NUM> rank disaggregation). The MDC <NUM> may not only decouple the DIMMs <NUM> and <NUM> from the bus <NUM>, which cannot use the bus at the same time without the buffering capability of the MDC <NUM>, but also "disaggregates" ranks, because they do not have to wait for their respective chip-select signal and do therefore not have to compete for bandwidth on the host channel <NUM> anymore. As a result, <NUM> GB/s usable peak bandwidth (4x higher than standard configuration) may be attainable.

Further doubling of usable peak bandwidth may be attained if the exemplary four ranks <NUM> are re-organized into four local memory channels <NUM> (<NUM>:<NUM> rank disaggregation). As a result, <NUM> GB/s usable peak bandwidth (8x higher than standard configuration) may be attainable.

The mode of operation (IMP computing enabled/disabled and/or rank disaggregation) can vary based on address ranges (e.g., based on the addressed memory rank). The mode of operation can be set statically or during run-time as will be elaborated upon in the following.

<FIG> shows a standard Load-Reduced Dual Inline Memory Module (LRDIMM) <NUM>, which is augmented with IMP capability <NUM> in a central buffer chip or MDC <NUM> according to an embodiment of the present invention. The MDC <NUM> builds on the MDC <NUM> shown in <FIG>. The resulting LRDIMM <NUM> is again referred to as IMP-LRDIMM. The block diagram shows two implementations of the MDC <NUM>. In a first implementation traditional DB/RCD buffers (signal repeaters) <NUM> employed to connect with standard LRDIMMs are integrated with the MDC <NUM>, while in a second implementation the DB and/or RCD buffers <NUM> are installed separately outside of the MDC <NUM>.

In the following, the second implementation of an MDC <NUM> according to an embodiment of the invention is elaborated upon in more detail. The MDC <NUM> comprises an IMP unit <NUM> similar to the IMP unit <NUM>, a Reverse Memory Controller (Reverse MC) <NUM>, a Slave PHY <NUM> similar to the slave PHY <NUM>, and a LMC <NUM> similar to the LMC <NUM>, which is implemented on the MDC <NUM> as MDMC <NUM>.

During initialization of a computing system, the memory controller <NUM>, MC, of a host usually trains a PHY block in a memory device <NUM> or DB/RCD buffers <NUM> with test patterns, such that the memory device can sample command, address and data signals from the MC during operation. Training in the opposite direction is also necessary such that the MC can sample data sent by the memory device or buffer. The MC ensures that timing parameters of the memory device are met during normal operation and further maps physical addresses used by the core clusters of a host into multi-dimensional, memory-specific addresses. To this end, the MC maps the physical address from the host into a memory specific addressing scheme, which consists of sub-addresses like rank, bank/bank group, row and column addresses of the memory device. In case of a read access, the MC expects data returned by the memory device after defined timing periods, while the data signals will also be driven by the MC in case of a write access.

The slave PHY <NUM> and the Reverse MC <NUM> in the MDC <NUM> may ensure that the MC in the host can continue operating as if memory devices were directly under the control of the MC, whenever the IMP compute unit <NUM> is enabled. In this case, the MDMC <NUM> in the MDC <NUM> will actually be in charge of operating the memory devices.

The slave PHY <NUM> may be designed to be aware of the memory device timing assumed by the host to serve access requests from the host's MC (e.g., in order to drive data on the bus at the expected time after receiving a read command). The request for accessing main memory may then be handed over to a Reverse MC <NUM>, which may be designed to reassemble a linear main memory address ("physical" addresses originally used by the host) from a plurality of protocol fields contained in the sub-addresses, which have been received from the MC within a host by the MDC <NUM>, after the MC performed above discussed "mapping" of the linear address format. The reassembled memory address and the type of access (read or write) is then provided to a local memory controller or MDMC <NUM> on the MDC <NUM>, such that the request can be rescheduled by the MDMC <NUM> in the MDC <NUM>, if the reassembled linear memory address lies within a predetermined address range reserved for IMP computations.

The slave PHY <NUM> may further be designed to buffer read data (data to be returned as a result of a read request from the host), if the read timing on the bus to the host cannot be met, because it may take too long for the MDMC to process. In this case, the host MC polls for the availability of read data, and the slave PHY <NUM> identifies buffered entries based on read addresses transmitted by the host MC. Further methods may be applied to communicate the status of the buffer to the host, e.g. backlog of read data, by e.g. letting the host MC poll a memory-mapped status register.

<FIG> shows three flow paths <NUM>, <NUM> and <NUM> for memory accesses (i.e., data, command and address information) that can be distinguished, when a central buffer chip or MDC <NUM> according to an embodiment of the present invention is disposed on a standard LRDIMM <NUM> in order to enable IMP compute capability. The MDC <NUM> builds on the MDC <NUM> shown in <FIG>. Similar to the MDC <NUM>, the MDC <NUM> has an IMP unit, a slave PHY <NUM>, an RMC <NUM>, and an LMC <NUM>.

For JEDEC memory protocols like DDR4, memory accesses are subject to limited timing parameters. For case b), if read accesses from the host serviced by the MDMC <NUM> take too long for the protocol used by the host, the memory controller of the host (MC) changes to a different mode of operation in order to cope with the longer latency. For instance, the host MC could poll a memory-mapped register interface of the slave PHY <NUM> for available read data (polling mechanisms are known and not in the focus of this invention).

<FIG> shows an additional mode of operation <NUM> of an MDC according to the invention, if deployed on LRDIMMs, which has been referred to above as "rank disaggregation" on an IMP-LRDIMM. A standard LRDIMM <NUM> contains many DRAM devices <NUM> that are organized in memory ranks ① and ②. As an example, a traditional multi-rank organization of memory devices using x8 DRAM devices addressed by a 64b host channel is shown, whereby the memory devices <NUM> may be organized in <NUM> ranks ① and ② as in this example. Since only one rank can drive DB-signals <NUM> at a time, bandwidth is limited by the shared channel to DB units <NUM> on the DIMM (as well as the shared channel to the host). A memory rank, ① or ② in <FIG>, is defined by a unique chip-select signal, whereas further command, address and data lines are shared <NUM> among ranks. As a result, only one rank at a time can service the bus to the host, since this is a shared bus.

For an IMP-LRDIMM <NUM> employing an MDC <NUM> according to the invention and shown on the right side of <FIG>, a new multi-channel organization on an LRDIMM may be possible. The MDC <NUM> may take over control of the memory devices <NUM> via independent memory channels ① and ② with its MDMC, whereby some PCB-level wiring <NUM> and <NUM> overhead on the DIMM is required. As an example, DRAM devices <NUM> may now be organized in <NUM> channels ① and ② instead of two ranks. Due to this architecture twice the bandwidth is available for IMP computing on one LRDIMM. Host requests to access memory, which are still targeted at ranks, are mapped to local channel addresses with an address mapper <NUM>.

As a result, the IMP compute blocks of the MDC <NUM> can take advantage of the increased bandwidth by having independent memory channels ① and ② instead of memory ranks. For accesses by the host, the bandwidth does not increase, since the bandwidth is limited by the host bus. An address mapper block <NUM> transfers host accesses targeted at rank addresses to local channel addresses. If there is a simple relationship between ranks seen by the host and channels implemented on the IMP-LRDIMM <NUM>, a one-to-one mapping of ranks onto channels may be feasible, simplifying the mapping effort by the address mapper. Accesses to ranks may then simply be forwarded to corresponding channels. Memory access responses (like read data for accesses issued by the host) from different channels on the DIMM will not collide on the host bus, since the accesses to ranks are already serialized by the memory controller of the host <NUM> for the shared host bus.

<FIG> shows a further way of rank disaggregation enabled by disposing an MDC <NUM> according to an embodiment of the invention on a standard LRDIMM (only data buses shown; same connectivity holds for command and addresses). The MDC <NUM> builds on the MDC <NUM> shown in <FIG>. In this exemplary setup <NUM> with two channels ① and ②, whereby any amount of channels on the IMP-LRDIMM <NUM> is feasible, IMP computing may be enabled for selected address ranges. For all other main memory addresses IMP computing may be switched off. In this hybrid mode, both rescheduling of concurrent accesses to main memory requested by IMP and by a host as well as a strict containment of memory access to a defined memory range for IMP computing is performed.

If IMP computing is switched off for a particular address range, and if this address range is large enough to cover a complete channel on the IMP-LRDIMM <NUM>, the channel can be put back onto direct control by the memory controller from the host, thus reducing latency for memory accesses coming from host. However, accesses from the host to channels, for which IMP computing is switched on (at least for part of the address range), will be scheduled by the local MDMC ①, MDMC ②, the slave PHY <NUM> and the Reverse MC <NUM> will be in operation in order to avoid memory access collisions as has been described in the discussion for <FIG>.

The selection of address ranges may be executed by an IMP config unit <NUM>, which controls a plurality of multiplexers <NUM> and <NUM>. The multiplexer <NUM> or <NUM> may connect a particular segment of DRAM devices in channel ① or channel ② either with MDMC ① or MDMC ② of the MDC <NUM> via data/cmd lines <NUM> or <NUM> respectively or with the memory controller of the host <NUM> via a buffer unit <NUM>. The multiplexing status may stay constant as long as the IMP configuration stays constant. The IMP configuration may be a preferred assignment of a memory range allowed for IMP computing ("containment"), while host computing is not limited by an address range.

<FIG> shows the control flows <NUM> to an MDC for configuring of and during operation of an IMP-LRDIMM that supports hybrid configurations of IMP computing and rank disaggregation modes for different address ranges. A configuration is a combination of enabling or disabling the IMP compute capability and the rank disaggregation mode.

The left flow diagram of <FIG> (flow diagram (a)) shows how the physical address space of the IMP-LRDIMM can be subdivided into address ranges to define and support hybrid configurations:.

The right flow diagram of <FIG> (flow diagram (b)) shows the operation of an IMP-LRDIMM at run time, when a request for memory access arrives from a host and IMP computing is enabled:.

Referring to the flow diagrams (a) and (b) of <FIG>, the processing steps at run time (flow diagram (b) are subject to the concrete configuration set up obtained by the procedure illustrated in the flow diagram (a) of <FIG>. Specifically, in flow diagram (b) of <FIG>, step <NUM> ("submit to MDC for further processing") the further processing steps is subject to the configuration obtained during the configuration procedure obtained at the end of the procedure illustrated in flow diagram (a) of <FIG>. For example, the slave PHY may be enabled and address mapping may be applied.

<FIG> shows a method <NUM> for enabling in-memory computing with a main memory in a computing device. The method includes a step <NUM> of accessing, by an in-memory processing, IMP, unit, the main memory based on a first linear main memory address and performing computations on data from the main memory. The method also includes a step <NUM> of serving, by a slave physical layer unit, a request from a host to access the main memory, wherein the request comprises a type of access and an address information. The method further comprises a step <NUM> of reassembling, by a reverse memory controller, RMC, a second linear main memory address from a plurality of protocol fields contained in the address information. The method further comprises a step <NUM> of providing the second linear main memory address and the type of access to a local memory controller, LMC, unit. Finally, the method comprises a step <NUM> of granting, by the local memory controller unit, the IMP unit access to the main memory and rescheduling the request from the host to access the main memory, as long as computations and access to the main memory performed by the IMP unit are active and if the first and second linear memory addresses are both included in a predetermined address range.

The invention has been described in conjunction with various embodiments as examples as well as implementations. However, other variations can be understood and effected by those persons skilled in the art and practicing the claimed invention, from the studies of the drawings, this disclosure and the independent claims. The shown examples mainly use JEDEC DDR4 as the memory device technology on DIMM. The working principles, however, are also amenable to, for instance, GDDR5 graphics RAM and byte-addressable non-volatile memory, such as 3D XPoint technology.

Claim 1:
A media controller, MDC, (<NUM>) for enabling in-memory computing with a main memory, comprising:
an in-memory processor, IMP, (<NUM>) configured to access the main memory based on a first linear main memory address and to perform computations on data from the main memory;
a slave physical layer (<NUM>) configured to serve a request from a host (<NUM>) to access the main memory (<NUM>), wherein the request comprises a type of access and an address information;
a reverse memory controller, RMC, (<NUM>) configured to reassemble a second linear main memory address from a plurality of protocol fields contained in the address information, and to provide the second linear main memory address and the type of access to a local memory controller, LMC, (<NUM>); and
the LMC (<NUM>) configured to grant the IMP (<NUM>) access to the main memory and to reschedule the request from the host to access the main memory, as long as computations and access to the main memory performed by the IMP (<NUM>) are active and if the first and second linear memory addresses are both included in a predetermined address range.