US20130007398A1 - Device and method for exchanging data between memory controllers - Google Patents
Device and method for exchanging data between memory controllers Download PDFInfo
- Publication number
- US20130007398A1 US20130007398A1 US13/603,521 US201213603521A US2013007398A1 US 20130007398 A1 US20130007398 A1 US 20130007398A1 US 201213603521 A US201213603521 A US 201213603521A US 2013007398 A1 US2013007398 A1 US 2013007398A1
- Authority
- US
- United States
- Prior art keywords
- memory
- memory controllers
- controllers
- exchanging data
- data
- Prior art date
- Legal status (The legal status 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 status listed.)
- Abandoned
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/1652—Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
- G06F13/1657—Access to multiple memories
Definitions
- the invention relates to a device and to a method for exchanging data between memory controllers.
- the memory controller is moved into a separate chip that may be integrated with the memory chip on Dual Inline Memory Modules (DIMM). This may allow a more autonomous operation of the memory.
- DIMM Dual Inline Memory Modules
- the memory modules are used in an interleaved way. This offers a good balancing over the memory channels when continuous addresses are accessed. This address assignment scheme rules out most memory operations carried out locally on one memory module only. For instance, if a list needs to be traversed, e.g. queues of an I/O device in virtual memory, the list elements would be distributed over several memory modules.
- FIG. 8 shows a schematic block diagram of a conventional device 800 for exchanging data between memory controllers 801 and 802 .
- Each memory controller 801 , 802 is coupled to a memory 803 , 804 .
- each memory controller 801 , 802 is coupled to a processor 805 , 806 or processor chip.
- the processors 805 , 806 are coupled to each other. If the memory controller 801 wants to exchange data with the memory controller 802 , it has to transmit the data over the processors 805 and 806 .
- an I/O device 807 may be a part of the device 800 .
- the I/O device 807 can be coupled to the processor 805 . If the I/O device 807 wants to write into a memory, for example memory 803 , it has to transmit the data over the processor 805 .
- the processor-to-memory bandwidth is limited in any case of transmitting data between the memory controllers 801 and 802 .
- the present invention provides a device for exchanging data, including: a plurality of memory controllers, wherein each memory controller of the plurality of memory controllers is coupled to an allocated memory for storing data; and an interconnect for connecting the plurality of memory controllers, wherein each memory controller of the plurality of memory controllers has one accelerator of a plurality of accelerators for mutually exchanging data over the interconnect.
- the present invention provides a method for exchanging data between a plurality of memory controllers, wherein each memory controller of the plurality of memory controllers is coupled to an allocated memory for storing data, the method including: connecting the plurality of memory controllers by an interconnect, and exchanging data between the memory controllers of the plurality of memory controllers over the interconnect directly.
- FIG. 1 shows a schematic block diagram of a first embodiment of a device for exchanging data between memory controllers
- FIG. 2 shows a schematic block diagram of a second embodiment of a device for exchanging data between memory controllers
- FIG. 3 shows a schematic block diagram of an embodiment of an accelerator of a memory controller
- FIG. 4 shows a schematic block diagram of an embodiment of a memory controller
- FIG. 5 shows a schematic block diagram of a third embodiment of a device for exchanging data
- FIG. 6 shows an embodiment of a sequence of method steps for exchanging data between memory controllers
- FIG. 7 shows a schematic block diagram of an embodiment of a system adapted for performing the method for exchanging data between memory controllers.
- FIG. 8 shows a schematic block diagram of a conventional device for exchanging data between memory controllers.
- FIG. 1 a schematic block diagram of a first embodiment of a device 100 for exchanging data between memory controllers 101 , 102 is depicted.
- the number of memory controllers 101 , 102 is 2 in FIG. 1 .
- the device 100 may have a plurality N of memory controllers (N ⁇ 2).
- Each memory controller 101 , 102 is coupled to an allocated memory 103 , 104 for storing data.
- the memory controller 101 is coupled to the memory 103 .
- the memory controller 102 is coupled to the memory 104 .
- the device 100 has an interconnect 105 for connecting the plurality of memory controllers 101 , 102 directly.
- the interconnect 105 is embodied as a ring or memory ring for connecting the plurality of memory controllers 101 , 102 in a ring structure.
- Each memory controller 101 , 102 has one accelerator 106 , 107 .
- the accelerators 106 , 107 are configured to mutually exchange data over the interconnect 105 .
- the device 100 can have a plurality of processors 108 , 109 .
- FIG. 1 shows two processors 108 , 109 coupled between the memory controllers 101 , 102 .
- the device 100 may have a plurality N of processors (N ⁇ 2).
- FIG. 2 shows a schematic block diagram for a second embodiment of a device 100 for exchanging data between memory controllers 101 , 102 .
- the second embodiment of the device 100 of FIG. 2 includes all features of the device 100 of FIG. 1 .
- at least one processor of the plurality of the processors 108 , 109 has an acceleration access unit 110 .
- the processor 108 includes the acceleration access unit 110 .
- the acceleration access unit 110 is configured to carry out a cache coherency protocol with the accelerators 106 , 107 of the memory controllers 101 , 102 .
- the accelerators 106 , 107 can be configured to carry out deterministic operations on data stored in the memories 103 , 104 .
- the respective accelerator 106 , 107 may carry out deterministic operations for marking phases of garbage collection in the allocated memory 103 , 104 .
- the respective accelerator 106 , 107 may carry out deterministic operations for copying data stored in the allocated memory 103 , 104 .
- deterministic operations which may be carried out by the accelerators 106 , 107 are deterministic operations for replicating data structures stored in the allocated memory 103 , 104 , deterministic operations for filling memory blocks in the allocated memory 103 , 104 , and deterministic operations for erasing memory blocks in the allocated memory 103 , 104 .
- FIG. 3 depicts a schematic block diagram of an embodiment of an accelerator 300 of a memory controller.
- the accelerator 300 of FIG. 3 can be an embodiment for the accelerators 106 , 107 of FIGS. 1 and 2 .
- the accelerator 300 has at least one address register 301 .
- the address register 301 can store memory addresses of the memories 103 , 104 .
- the accelerator 300 can have at least one state register 302 for storing states of the allocated memory or of all memories of the memory ring.
- the accelerator 300 has at least one result and error register 303 which is configured to manage the concurrent deterministic operations. Also, at least one counter register 304 can be provided for managing the deterministic operations for filling memory blocks and/or the deterministic operations for erasing memory blocks.
- the accelerator 300 may have at least one completion register 305 for managing a number of completion indications.
- Each completion indication can indicate a completion of a certain deterministic operation.
- a tag register 306 can be provided for managing a number of deterministic operations by a number of tags.
- the tags are configured to determine operation slots for the number of deterministic operations.
- the accelerator 300 can include at least one bypass register 307 for bypassing the tag register 306 such that the number of predefined deterministic operations are prioritized compared to the number of deterministic operations being managed by the tag register 306 .
- FIG. 4 a schematic block diagram of an embodiment of a memory controller 400 is depicted.
- the memory controller 400 of FIG. 4 can be an embodiment for the memory controllers 101 , 102 of FIGS. 1 and 2 .
- the memory controller 400 has an accelerator 401 and two interfaces 402 , 403 for interfacing the interconnect 105 (not shown).
- the respective interface 402 , 403 has a buffer 404 , 405 for preventing a deadlock between concurrent deterministic operations.
- FIG. 5 a schematic block diagram of a third embodiment of the device 100 for exchanging data between memory controllers 101 , 102 is illustrated.
- the third embodiment of the device 100 of FIG. 5 includes all the features of the second embodiment of the device 100 of FIG. 2 .
- the device 100 of FIG. 5 has an I/O switch 111 .
- the I/O switch 111 is connected to the interconnect 105 . Further, at least one I/O device 112 is connected to the I/O switch 111 .
- FIG. 5 shows only one I/O device 112 .
- the device 100 may have a plurality N of I/O devices (N ⁇ 2).
- the I/O device 112 is adapted to directly access the memory controllers 101 , 102 over the interconnect 105 .
- FIG. 6 shows an embodiment of a sequence of method steps for exchanging data between memory controllers.
- Each memory controller is coupled to an allocated memory for storing data (see FIGS. 1 , 2 and 5 ).
- step 601 the plurality of memory controllers is connected to an interconnect.
- step 602 data is exchanged between the memory controllers over the interconnect directly.
- Computerized devices can be suitably designed for implementing embodiments of the present invention as described herein.
- the methods described herein are largely non-interactive and automated.
- the methods described herein can be implemented either in an interactive, partly-interactive or non-interactive system.
- the methods described herein can be implemented in software (e.g., firmware), hardware, or a combination thereof.
- the methods described herein are implemented in software, as an executable program, the latter executed by suitable digital processing devices.
- at least one step or all steps of the above method of FIG. 6 may be implemented in software, as an executable program, the latter executed by suitable digital processing devices.
- the exchanging step of the above method of FIG. 6 is implemented in software. More generally, embodiments of the present invention can be implemented wherein general-purpose digital computers, such as personal computers, workstations, etc., are used.
- the system 700 depicted in FIG. 7 schematically represents a computerized unit 701 , e.g., a general-purpose computer.
- the unit 701 includes a processor 705 , memory 710 coupled to a memory controller 715 , and one or more input and/or output (I/O) devices 740 , 745 , 750 , 755 (or peripherals) that are communicatively coupled via a local input/output controller 735 .
- the input/output controller 735 can be, but is not limited to, one or more buses or other wired or wireless connections, as is known in the art.
- the input/output controller 735 can have additional elements, which are omitted for simplicity, such as controllers, buffers (caches), drivers, repeaters, and receivers, to enable communications.
- the local interface can include address, control, and/or data connections to enable appropriate communications among the aforementioned components.
- the I/O device 740 can include or implement an accelerator of one of FIG. 1 , 2 , or 5 .
- the I/O device 745 can include or implement an accelerator of one of FIG. 1 , 2 , or 5 .
- the input/output controller 735 can include or implement an accelerator of one of FIG. 1 , 2 , or 5 .
- the processor 705 is a hardware device for executing software, particularly that which is stored in memory 710 .
- the processor 705 can be any custom made or commercially available processor, a central processing unit (CPU), an auxiliary processor among several processors associated with the computer 701 , a semiconductor based microprocessor (in the form of a microchip or chip set), or generally any device for executing software instructions.
- the memory 710 can include any one or combination of volatile memory elements (e.g., random access memory) and nonvolatile memory elements. Moreover, the memory 710 can incorporate electronic, magnetic, optical, and/or other types of storage media. Note that the memory 710 can have a distributed architecture, where various components are situated remotely from one another, but can be accessed by the processor 705 .
- the software in memory 710 can include one or more separate programs, each of which includes an ordered listing of executable instructions for implementing logical functions.
- the software in the memory 710 includes methods described herein in accordance with exemplary embodiments and a suitable operating system (OS) 711 .
- the OS 711 essentially controls the execution of other computer programs, such as the methods as described herein (e.g., FIG. 6 ), and provides scheduling, input-output control, file and data management, memory management, and communication control and related services.
- the methods described herein can be in the form of a source program, executable program (object code), script, or any other entity including a set of instructions to be performed.
- the program When in a source program form, the program needs to be translated via a compiler, assembler, interpreter, or the like, as known per se, which may or may not be included within the memory 710 , so as to operate properly in connection with the OS 711 .
- the methods can be written as an object oriented programming language, which has classes of data and methods, or a procedure programming language, which has routines, subroutines, and/or functions.
- a conventional keyboard 750 and mouse 755 can be coupled to the input/output controller 735 .
- Other I/O devices 740 - 755 can include sensors (especially in the case of network elements), i.e., hardware devices that produce a measurable response to a change in a physical condition like temperature or pressure (physical data to be monitored).
- sensors especially in the case of network elements
- the analog signal produced by the sensors is digitized by an analog-to-digital converter and sent to controllers 735 for further processing.
- Sensor nodes are ideally small, consume low energy, are autonomous and operate unattended.
- the I/O devices 740 - 755 can further include devices that communicate both inputs and outputs.
- the system 700 can further include a display controller 725 coupled to a display 730 .
- the system 700 can further include a network interface or transceiver 760 for coupling to a network 765 .
- the network 765 transmits and receives data between the unit 701 and external systems.
- the network 765 is possibly implemented in a wireless fashion, e.g., using wireless protocols and technologies, such as WiFi, WiMax, etc.
- the network 765 may be a fixed wireless network, a wireless local area network (LAN), a wireless wide area network (WAN) a personal area network (PAN), a virtual private network (VPN), intranet or other suitable network system and includes equipment for receiving and transmitting signals.
- LAN wireless local area network
- WAN wireless wide area network
- PAN personal area network
- VPN virtual private network
- the network 765 can also be an IP-based network for communication between the unit 701 and any external server, client and the like via a broadband connection.
- network 765 can be a managed IP network administered by a service provider.
- the network 765 can be a packet-switched network such as a LAN, WAN, Internet network, etc.
- the software in the memory 710 can further include a basic input output system (BIOS).
- BIOS is stored in ROM so that the BIOS can be executed when the computer 701 is activated.
- the processor 705 When the unit 701 is in operation, the processor 705 is configured to execute software stored within the memory 710 , to communicate data to and from the memory 710 , and to generally control operations of the computer 701 pursuant to the software.
- the methods described herein and the OS 711 in whole or in part are read by the processor 705 , typically buffered within the processor 705 , and then executed.
- the methods described herein e.g. with reference to FIG. 6
- the methods can be stored on any computer readable medium, such as storage 720 , for use by or in connection with any computer related system or method.
- aspects of the present invention can be embodied as a system, method or computer program product. Accordingly, aspects of the present invention may take the form of an entirely hardware embodiment, an entirely software embodiment (including firmware, resident software, micro-code, etc.) or an embodiment combining software and hardware aspects. Furthermore, aspects of the present invention can take the form of a computer program product embodied in one or more computer readable medium(s) having computer readable non-transient program code embodied thereon. Any combination of one or more computer readable medium(s) may be utilized.
- the computer readable medium may be a computer readable signal medium or a computer readable storage medium.
- a computer readable storage medium may be, for example, but is not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or any suitable combination of the foregoing. More specific examples (a non-exhaustive list) of the computer readable storage medium would include the following: an electrical connection having one or more wires, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), an optical fiber, a portable compact disc read-only memory (CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination of the foregoing.
- a computer readable storage medium can be any tangible medium that can contain, or store a program for use by or in connection with an instruction execution system, apparatus, or device.
- a computer readable signal medium can include a propagated data signal with computer readable non-transient program code embodied therein, for example, in baseband or as part of a carrier wave. Such a propagated signal may take any of a variety of forms, including, but not limited to, electro-magnetic, optical, or any suitable combination thereof.
- a computer readable signal medium can be any computer readable medium that is not a computer readable storage medium and that can communicate, propagate, or transport a program for use by or in connection with an instruction execution system, apparatus, or device.
- Non-transient program code embodied on a computer readable medium can be transmitted using any appropriate medium, including but not limited to wireless, wireline, optical fiber cable, RF, etc., or any suitable combination of the foregoing.
- Computer non-transient program code for carrying out operations for aspects of the present invention may be written in any combination of one or more programming languages, including an object oriented programming language such as Java, Smalltalk, C++ or the like and conventional procedural programming languages, such as the “C” programming language or similar programming languages.
- the non-transient program code may execute entirely on the unit 701 , partly thereon, partly on a unit 701 and another unit 701 , similar or not.
- the computer program instructions can also be loaded onto a computer, other programmable data processing apparatus, or other devices to cause a series of operational steps to be performed on the computer, other programmable apparatus or other devices to produce a computer implemented process such that the instructions which execute on the computer or other programmable apparatus provide processes for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
- each block in the flowchart or block diagrams may represent a module, segment, or portion of code, which includes one or more executable instructions for implementing the specified logical function(s).
- the functions noted in the blocks may occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved and algorithm optimization.
Abstract
A device with an interconnect having a plurality of memory controllers for connecting the plurality of memory controllers. Each memory controller of the plurality of memory controllers is coupled to an allocated memory for storing data. Further, each memory controller of the plurality of memory controllers has one accelerator of a plurality of accelerators for mutually exchanging data over the interconnect.
Description
- This application is a continuation of and claims priority from U.S. patent application Ser. No. 13/534,063, filed Jun. 27, 2012, which in turn claims priority under 35 U.S.C. 119 from European Application 11171757.5, filed Jun. 28, 2011, the entire contents of both are incorporated herein by reference.
- 1. Field of the Invention
- The invention relates to a device and to a method for exchanging data between memory controllers.
- 2. Description of the Related Art
- From a cost and power point of view, the throughput between processor and memory is one of the most limited resources in a conventional computer. Virtualization, I/O processing (I/O; Input/Output), parallel processing, checkpointing and other techniques require memory operations with significant processing, such as memory-to-memory copying.
- In conventional computer systems, since memory is exclusively connected to the processor or processor chip, these operations occupy processor-to-memory bandwidth. In past systems, the detailed operations of the memory, e.g. bank open, read, write, refresh, are controlled by the memory controller on the processor chip.
- However, in upcoming conventional systems, the memory controller is moved into a separate chip that may be integrated with the memory chip on Dual Inline Memory Modules (DIMM). This may allow a more autonomous operation of the memory.
- Typically, if several memory modules are present in one system, the memory modules are used in an interleaved way. This offers a good balancing over the memory channels when continuous addresses are accessed. This address assignment scheme rules out most memory operations carried out locally on one memory module only. For instance, if a list needs to be traversed, e.g. queues of an I/O device in virtual memory, the list elements would be distributed over several memory modules.
- For example,
FIG. 8 shows a schematic block diagram of aconventional device 800 for exchanging data betweenmemory controllers memory controller memory memory controller processor processors memory controller 801 wants to exchange data with thememory controller 802, it has to transmit the data over theprocessors - Further, an I/
O device 807 may be a part of thedevice 800. For example, the I/O device 807 can be coupled to theprocessor 805. If the I/O device 807 wants to write into a memory, forexample memory 803, it has to transmit the data over theprocessor 805. - Thus, the processor-to-memory bandwidth is limited in any case of transmitting data between the
memory controllers - Accordingly, it is an aspect of the present invention to improve the exchange of data between memory controllers.
- In order to overcome these deficiencies, the present invention provides a device for exchanging data, including: a plurality of memory controllers, wherein each memory controller of the plurality of memory controllers is coupled to an allocated memory for storing data; and an interconnect for connecting the plurality of memory controllers, wherein each memory controller of the plurality of memory controllers has one accelerator of a plurality of accelerators for mutually exchanging data over the interconnect.
- According to another aspect, the present invention provides a method for exchanging data between a plurality of memory controllers, wherein each memory controller of the plurality of memory controllers is coupled to an allocated memory for storing data, the method including: connecting the plurality of memory controllers by an interconnect, and exchanging data between the memory controllers of the plurality of memory controllers over the interconnect directly.
-
FIG. 1 shows a schematic block diagram of a first embodiment of a device for exchanging data between memory controllers; -
FIG. 2 shows a schematic block diagram of a second embodiment of a device for exchanging data between memory controllers; -
FIG. 3 shows a schematic block diagram of an embodiment of an accelerator of a memory controller; -
FIG. 4 shows a schematic block diagram of an embodiment of a memory controller; -
FIG. 5 shows a schematic block diagram of a third embodiment of a device for exchanging data; -
FIG. 6 shows an embodiment of a sequence of method steps for exchanging data between memory controllers; -
FIG. 7 shows a schematic block diagram of an embodiment of a system adapted for performing the method for exchanging data between memory controllers; and -
FIG. 8 shows a schematic block diagram of a conventional device for exchanging data between memory controllers. - Similar or functionally similar elements in the figures have been allocated the same reference signs if not otherwise indicated.
- In
FIG. 1 , a schematic block diagram of a first embodiment of adevice 100 for exchanging data betweenmemory controllers - Without loss of generality, the number of
memory controllers FIG. 1 . In general, thedevice 100 may have a plurality N of memory controllers (N≧2). - Each
memory controller memory FIG. 1 , thememory controller 101 is coupled to thememory 103. In an analogous way, thememory controller 102 is coupled to thememory 104. - Further, the
device 100 has aninterconnect 105 for connecting the plurality ofmemory controllers FIG. 1 , theinterconnect 105 is embodied as a ring or memory ring for connecting the plurality ofmemory controllers - Each
memory controller accelerator accelerators interconnect 105. - Moreover, the
device 100 can have a plurality ofprocessors FIG. 1 shows twoprocessors memory controllers device 100 may have a plurality N of processors (N≧2). -
FIG. 2 shows a schematic block diagram for a second embodiment of adevice 100 for exchanging data betweenmemory controllers - The second embodiment of the
device 100 ofFIG. 2 includes all features of thedevice 100 ofFIG. 1 . Moreover, at least one processor of the plurality of theprocessors acceleration access unit 110. With respect toFIG. 2 , theprocessor 108 includes theacceleration access unit 110. Theacceleration access unit 110 is configured to carry out a cache coherency protocol with theaccelerators memory controllers - As a result, the
accelerators memories respective accelerator memory respective accelerator memory accelerators memory memory memory - Because the
accelerators acceleration access unit 110, theaccelerators respective accelerator FIG. 3 depicts a schematic block diagram of an embodiment of anaccelerator 300 of a memory controller. Theaccelerator 300 ofFIG. 3 can be an embodiment for theaccelerators FIGS. 1 and 2 . - In particular, the
accelerator 300 has at least oneaddress register 301. Theaddress register 301 can store memory addresses of thememories accelerator 300 can have at least onestate register 302 for storing states of the allocated memory or of all memories of the memory ring. - Further, the
accelerator 300 has at least one result and error register 303 which is configured to manage the concurrent deterministic operations. Also, at least onecounter register 304 can be provided for managing the deterministic operations for filling memory blocks and/or the deterministic operations for erasing memory blocks. - Furthermore, the
accelerator 300 may have at least onecompletion register 305 for managing a number of completion indications. Each completion indication can indicate a completion of a certain deterministic operation. - Also, a
tag register 306 can be provided for managing a number of deterministic operations by a number of tags. The tags are configured to determine operation slots for the number of deterministic operations. - Finally, the
accelerator 300 can include at least onebypass register 307 for bypassing thetag register 306 such that the number of predefined deterministic operations are prioritized compared to the number of deterministic operations being managed by thetag register 306. - In
FIG. 4 , a schematic block diagram of an embodiment of amemory controller 400 is depicted. Thememory controller 400 ofFIG. 4 can be an embodiment for thememory controllers FIGS. 1 and 2 . - The
memory controller 400 has anaccelerator 401 and twointerfaces respective interface buffer 404, 405 for preventing a deadlock between concurrent deterministic operations. InFIG. 5 , a schematic block diagram of a third embodiment of thedevice 100 for exchanging data betweenmemory controllers device 100 ofFIG. 5 includes all the features of the second embodiment of thedevice 100 ofFIG. 2 . Additionally, thedevice 100 ofFIG. 5 has an I/O switch 111. The I/O switch 111 is connected to theinterconnect 105. Further, at least one I/O device 112 is connected to the I/O switch 111. Without loss of generality,FIG. 5 shows only one I/O device 112. In general, thedevice 100 may have a plurality N of I/O devices (N≧2). By means of the I/O switch 111, the I/O device 112 is adapted to directly access thememory controllers interconnect 105. - Furthermore,
FIG. 6 shows an embodiment of a sequence of method steps for exchanging data between memory controllers. Each memory controller is coupled to an allocated memory for storing data (seeFIGS. 1 , 2 and 5). - In
step 601, the plurality of memory controllers is connected to an interconnect. Instep 602, data is exchanged between the memory controllers over the interconnect directly. - Computerized devices can be suitably designed for implementing embodiments of the present invention as described herein. In that respect, it can be appreciated that the methods described herein are largely non-interactive and automated. In embodiments, the methods described herein can be implemented either in an interactive, partly-interactive or non-interactive system. The methods described herein can be implemented in software (e.g., firmware), hardware, or a combination thereof. In embodiments, the methods described herein are implemented in software, as an executable program, the latter executed by suitable digital processing devices. In further embodiments, at least one step or all steps of the above method of
FIG. 6 may be implemented in software, as an executable program, the latter executed by suitable digital processing devices. In further embodiments, the exchanging step of the above method ofFIG. 6 is implemented in software. More generally, embodiments of the present invention can be implemented wherein general-purpose digital computers, such as personal computers, workstations, etc., are used. - For instance, the
system 700 depicted inFIG. 7 schematically represents acomputerized unit 701, e.g., a general-purpose computer. In embodiments, in terms of hardware architecture, as shown inFIG. 7 , theunit 701 includes aprocessor 705,memory 710 coupled to amemory controller 715, and one or more input and/or output (I/O)devices output controller 735. The input/output controller 735 can be, but is not limited to, one or more buses or other wired or wireless connections, as is known in the art. The input/output controller 735 can have additional elements, which are omitted for simplicity, such as controllers, buffers (caches), drivers, repeaters, and receivers, to enable communications. Further, the local interface can include address, control, and/or data connections to enable appropriate communications among the aforementioned components. For example, the I/O device 740 can include or implement an accelerator of one ofFIG. 1 , 2, or 5. Also, the I/O device 745 can include or implement an accelerator of one ofFIG. 1 , 2, or 5. Moreover, the input/output controller 735 can include or implement an accelerator of one ofFIG. 1 , 2, or 5. - The
processor 705 is a hardware device for executing software, particularly that which is stored inmemory 710. Theprocessor 705 can be any custom made or commercially available processor, a central processing unit (CPU), an auxiliary processor among several processors associated with thecomputer 701, a semiconductor based microprocessor (in the form of a microchip or chip set), or generally any device for executing software instructions. - The
memory 710 can include any one or combination of volatile memory elements (e.g., random access memory) and nonvolatile memory elements. Moreover, thememory 710 can incorporate electronic, magnetic, optical, and/or other types of storage media. Note that thememory 710 can have a distributed architecture, where various components are situated remotely from one another, but can be accessed by theprocessor 705. - The software in
memory 710 can include one or more separate programs, each of which includes an ordered listing of executable instructions for implementing logical functions. In the example ofFIG. 7 , the software in thememory 710 includes methods described herein in accordance with exemplary embodiments and a suitable operating system (OS) 711. TheOS 711 essentially controls the execution of other computer programs, such as the methods as described herein (e.g.,FIG. 6 ), and provides scheduling, input-output control, file and data management, memory management, and communication control and related services. - The methods described herein can be in the form of a source program, executable program (object code), script, or any other entity including a set of instructions to be performed. When in a source program form, the program needs to be translated via a compiler, assembler, interpreter, or the like, as known per se, which may or may not be included within the
memory 710, so as to operate properly in connection with theOS 711. Furthermore, the methods can be written as an object oriented programming language, which has classes of data and methods, or a procedure programming language, which has routines, subroutines, and/or functions. - In an embodiment, a
conventional keyboard 750 andmouse 755 can be coupled to the input/output controller 735. Other I/O devices 740-755 can include sensors (especially in the case of network elements), i.e., hardware devices that produce a measurable response to a change in a physical condition like temperature or pressure (physical data to be monitored). Typically, the analog signal produced by the sensors is digitized by an analog-to-digital converter and sent tocontrollers 735 for further processing. Sensor nodes are ideally small, consume low energy, are autonomous and operate unattended. - In addition, the I/O devices 740-755 can further include devices that communicate both inputs and outputs. The
system 700 can further include adisplay controller 725 coupled to adisplay 730. In embodiments, thesystem 700 can further include a network interface ortransceiver 760 for coupling to anetwork 765. - The
network 765 transmits and receives data between theunit 701 and external systems. Thenetwork 765 is possibly implemented in a wireless fashion, e.g., using wireless protocols and technologies, such as WiFi, WiMax, etc. Thenetwork 765 may be a fixed wireless network, a wireless local area network (LAN), a wireless wide area network (WAN) a personal area network (PAN), a virtual private network (VPN), intranet or other suitable network system and includes equipment for receiving and transmitting signals. - The
network 765 can also be an IP-based network for communication between theunit 701 and any external server, client and the like via a broadband connection. In exemplary embodiments,network 765 can be a managed IP network administered by a service provider. Besides, thenetwork 765 can be a packet-switched network such as a LAN, WAN, Internet network, etc. - If the
unit 701 is a PC, workstation, intelligent device or the like, the software in thememory 710 can further include a basic input output system (BIOS). The BIOS is stored in ROM so that the BIOS can be executed when thecomputer 701 is activated. - When the
unit 701 is in operation, theprocessor 705 is configured to execute software stored within thememory 710, to communicate data to and from thememory 710, and to generally control operations of thecomputer 701 pursuant to the software. The methods described herein and theOS 711, in whole or in part are read by theprocessor 705, typically buffered within theprocessor 705, and then executed. When the methods described herein (e.g. with reference toFIG. 6 ) are implemented in software, the methods can be stored on any computer readable medium, such asstorage 720, for use by or in connection with any computer related system or method. - As will be appreciated by one skilled in the art, aspects of the present invention can be embodied as a system, method or computer program product. Accordingly, aspects of the present invention may take the form of an entirely hardware embodiment, an entirely software embodiment (including firmware, resident software, micro-code, etc.) or an embodiment combining software and hardware aspects. Furthermore, aspects of the present invention can take the form of a computer program product embodied in one or more computer readable medium(s) having computer readable non-transient program code embodied thereon. Any combination of one or more computer readable medium(s) may be utilized. The computer readable medium may be a computer readable signal medium or a computer readable storage medium. A computer readable storage medium may be, for example, but is not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or any suitable combination of the foregoing. More specific examples (a non-exhaustive list) of the computer readable storage medium would include the following: an electrical connection having one or more wires, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), an optical fiber, a portable compact disc read-only memory (CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination of the foregoing. In the context of this document, a computer readable storage medium can be any tangible medium that can contain, or store a program for use by or in connection with an instruction execution system, apparatus, or device.
- A computer readable signal medium can include a propagated data signal with computer readable non-transient program code embodied therein, for example, in baseband or as part of a carrier wave. Such a propagated signal may take any of a variety of forms, including, but not limited to, electro-magnetic, optical, or any suitable combination thereof. A computer readable signal medium can be any computer readable medium that is not a computer readable storage medium and that can communicate, propagate, or transport a program for use by or in connection with an instruction execution system, apparatus, or device. Non-transient program code embodied on a computer readable medium can be transmitted using any appropriate medium, including but not limited to wireless, wireline, optical fiber cable, RF, etc., or any suitable combination of the foregoing.
- Computer non-transient program code for carrying out operations for aspects of the present invention may be written in any combination of one or more programming languages, including an object oriented programming language such as Java, Smalltalk, C++ or the like and conventional procedural programming languages, such as the “C” programming language or similar programming languages. The non-transient program code may execute entirely on the
unit 701, partly thereon, partly on aunit 701 and anotherunit 701, similar or not. - Aspects of the present invention are described above with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems) and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and/or block diagrams can be implemented by one or more computer program instructions. These computer program instructions can be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
- The computer program instructions can also be loaded onto a computer, other programmable data processing apparatus, or other devices to cause a series of operational steps to be performed on the computer, other programmable apparatus or other devices to produce a computer implemented process such that the instructions which execute on the computer or other programmable apparatus provide processes for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
- The flowchart and block diagrams in the figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods and computer program products according to various embodiments of the present invention. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or portion of code, which includes one or more executable instructions for implementing the specified logical function(s). It should also be noted that, in some alternative implementations, the functions noted in the blocks may occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved and algorithm optimization. It will also be noted that each block of the block diagrams and/or flowchart illustration, and combinations of blocks in the block diagrams and/or flowchart illustration, can be implemented by special purpose hardware-based systems that perform the specified functions or acts, or combinations of special purpose hardware and computer instructions.
- More generally, while the present invention has been described with reference to certain embodiments, it will be understood by those skilled in the art that various changes may be made and equivalents may be substituted without departing from the scope of the present invention. In addition, many modifications may be made to adapt a particular situation to the teachings of the present invention without departing from its scope. Therefore, it is intended that the present invention not be limited to the particular embodiments disclosed, but that the present invention will include all embodiments falling within the scope of the appended claims.
Claims (2)
1. A method for exchanging data between a plurality of memory controllers, wherein each memory controller of said plurality of memory controllers is coupled to an allocated memory for storing data, the method comprising:
connecting said plurality of memory controllers by an interconnect; and
exchanging data between said memory controllers of said plurality of memory controllers over said interconnect directly.
2. A computer program product for exchanging data between a plurality of memory controllers, the computer program product comprising a computer readable storage medium having computer readable non-transient program code embodied therein configured to perform the steps of a method for exchanging data between a plurality of memory controllers, wherein each memory controller of said plurality of memory controllers is coupled to an allocated memory for storing data, the method comprising:
connecting said plurality of memory controllers by an interconnect; and
exchanging data between said memory controllers of said plurality of memory controllers over said interconnect directly.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/603,521 US20130007398A1 (en) | 2011-06-28 | 2012-09-05 | Device and method for exchanging data between memory controllers |
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP11171757 | 2011-06-28 | ||
EP11171757.5 | 2011-06-28 | ||
US13/534,063 US8972667B2 (en) | 2011-06-28 | 2012-06-27 | Exchanging data between memory controllers |
US13/603,521 US20130007398A1 (en) | 2011-06-28 | 2012-09-05 | Device and method for exchanging data between memory controllers |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/534,063 Continuation US8972667B2 (en) | 2011-06-28 | 2012-06-27 | Exchanging data between memory controllers |
Publications (1)
Publication Number | Publication Date |
---|---|
US20130007398A1 true US20130007398A1 (en) | 2013-01-03 |
Family
ID=47391861
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/534,063 Active 2033-02-23 US8972667B2 (en) | 2011-06-28 | 2012-06-27 | Exchanging data between memory controllers |
US13/603,521 Abandoned US20130007398A1 (en) | 2011-06-28 | 2012-09-05 | Device and method for exchanging data between memory controllers |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/534,063 Active 2033-02-23 US8972667B2 (en) | 2011-06-28 | 2012-06-27 | Exchanging data between memory controllers |
Country Status (1)
Country | Link |
---|---|
US (2) | US8972667B2 (en) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140225923A1 (en) * | 2011-08-27 | 2014-08-14 | Zte Corporation | Method for accessing augmented reality user context |
US20190155774A1 (en) * | 2017-11-17 | 2019-05-23 | Fujitsu Limited | Data transmission apparatus and data transmission method |
US20220066828A1 (en) * | 2020-08-28 | 2022-03-03 | Apple Inc. | Hardware accelerators using shared interface registers |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10127012B2 (en) | 2013-12-27 | 2018-11-13 | Intel Corporation | Scalable input/output system and techniques to transmit data between domains without a central processor |
US10229470B2 (en) * | 2016-08-05 | 2019-03-12 | Intel IP Corporation | Mechanism to accelerate graphics workloads in a multi-core computing architecture |
US10366017B2 (en) | 2018-03-30 | 2019-07-30 | Intel Corporation | Methods and apparatus to offload media streams in host devices |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080005514A1 (en) * | 2006-06-06 | 2008-01-03 | Midori Kurokawa | Storage system and storage control device |
US20080215823A1 (en) * | 2007-02-08 | 2008-09-04 | Takeo Hosomi | Data consistency control system and data consistency control method |
US20090307416A1 (en) * | 2008-06-04 | 2009-12-10 | Intitio Corporation | Ssd with a controller accelerator |
US20110040935A1 (en) * | 2009-08-12 | 2011-02-17 | Hitachi, Ltd. | Management computer for managing storage system capacity and storage system capacity management method |
US20110239196A1 (en) * | 2010-03-29 | 2011-09-29 | Laurent Ichard | Micro-Task Pipeline Visualization |
US8443211B2 (en) * | 2009-01-05 | 2013-05-14 | Marvell World Trade Ltd. | Hibernation or suspend using a non-volatile-memory device |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040236877A1 (en) | 1997-12-17 | 2004-11-25 | Lee A. Burton | Switch/network adapter port incorporating shared memory resources selectively accessible by a direct execution logic element and one or more dense logic devices in a fully buffered dual in-line memory module format (FB-DIMM) |
US20030023958A1 (en) * | 2001-07-17 | 2003-01-30 | Patel Mukesh K. | Intermediate language accelerator chip |
US7913022B1 (en) | 2007-02-14 | 2011-03-22 | Xilinx, Inc. | Port interface modules (PIMs) in a multi-port memory controller (MPMC) |
US7882479B2 (en) | 2007-06-06 | 2011-02-01 | International Business Machines Corporation | Method and apparatus for implementing redundant memory access using multiple controllers on the same bank of memory |
US7925826B2 (en) | 2008-01-24 | 2011-04-12 | International Business Machines Corporation | System to increase the overall bandwidth of a memory channel by allowing the memory channel to operate at a frequency independent from a memory device frequency |
US20090216960A1 (en) | 2008-02-27 | 2009-08-27 | Brian David Allison | Multi Port Memory Controller Queuing |
US7886103B2 (en) | 2008-09-08 | 2011-02-08 | Cisco Technology, Inc. | Input-output module, processing platform and method for extending a memory interface for input-output operations |
US20100161914A1 (en) | 2008-12-23 | 2010-06-24 | Eilert Sean S | Autonomous memory subsystems in computing platforms |
US9052901B2 (en) * | 2011-12-14 | 2015-06-09 | Intel Corporation | Method, apparatus, and system for energy efficiency and energy conservation including configurable maximum processor current |
-
2012
- 2012-06-27 US US13/534,063 patent/US8972667B2/en active Active
- 2012-09-05 US US13/603,521 patent/US20130007398A1/en not_active Abandoned
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080005514A1 (en) * | 2006-06-06 | 2008-01-03 | Midori Kurokawa | Storage system and storage control device |
US20080215823A1 (en) * | 2007-02-08 | 2008-09-04 | Takeo Hosomi | Data consistency control system and data consistency control method |
US20090307416A1 (en) * | 2008-06-04 | 2009-12-10 | Intitio Corporation | Ssd with a controller accelerator |
US8443211B2 (en) * | 2009-01-05 | 2013-05-14 | Marvell World Trade Ltd. | Hibernation or suspend using a non-volatile-memory device |
US20110040935A1 (en) * | 2009-08-12 | 2011-02-17 | Hitachi, Ltd. | Management computer for managing storage system capacity and storage system capacity management method |
US20110239196A1 (en) * | 2010-03-29 | 2011-09-29 | Laurent Ichard | Micro-Task Pipeline Visualization |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140225923A1 (en) * | 2011-08-27 | 2014-08-14 | Zte Corporation | Method for accessing augmented reality user context |
US20190155774A1 (en) * | 2017-11-17 | 2019-05-23 | Fujitsu Limited | Data transmission apparatus and data transmission method |
US10733127B2 (en) * | 2017-11-17 | 2020-08-04 | Fujitsu Limited | Data transmission apparatus and data transmission method |
US20220066828A1 (en) * | 2020-08-28 | 2022-03-03 | Apple Inc. | Hardware accelerators using shared interface registers |
US11893419B2 (en) * | 2020-08-28 | 2024-02-06 | Apple Inc. | Hardware accelerators using shared interface registers |
Also Published As
Publication number | Publication date |
---|---|
US20130007375A1 (en) | 2013-01-03 |
US8972667B2 (en) | 2015-03-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10572376B2 (en) | Memory ordering in acceleration hardware | |
KR102496402B1 (en) | User-level fork and join processors, methods, systems, and instructions | |
US8972667B2 (en) | Exchanging data between memory controllers | |
US9423959B2 (en) | Method and apparatus for store durability and ordering in a persistent memory architecture | |
RU2608000C2 (en) | Providing snoop filtering associated with data buffer | |
US10338974B2 (en) | Virtual retry queue | |
US9497268B2 (en) | Method and device for data transmissions using RDMA | |
US20190004921A1 (en) | Method and system for cache agent trace and capture | |
US9940240B2 (en) | Persistent caching for operating a persistent caching system | |
CN105190539B (en) | The method and apparatus of deadlock during avoiding instruction from dispatching are remapped using dynamic port | |
US8954973B2 (en) | Transferring architected state between cores | |
US20140375658A1 (en) | Processor Core to Graphics Processor Task Scheduling and Execution | |
US8930716B2 (en) | Address translation unit, device and method for remote direct memory access of a memory | |
US9753871B2 (en) | Bridge and method for coupling a requesting interconnect and a serving interconnect in a computer system | |
US9367407B2 (en) | Optimizing placement plans for host failure in cloud computing environments | |
CN108701101B (en) | Arbiter-based serialization of processor system management interrupt events | |
US10073629B2 (en) | Memory transaction prioritization | |
EP3336696A1 (en) | Implementing device models for virtual machines with reconfigurable hardware | |
US10599335B2 (en) | Supporting hierarchical ordering points in a microprocessor system | |
KR20160113677A (en) | Processor logic and method for dispatching instructions from multiple strands | |
US20120159640A1 (en) | Acquiring Access To A Token Controlled System Resource | |
US11150902B2 (en) | Processor pipeline management during cache misses using next-best ticket identifier for sleep and wakeup | |
US9870340B2 (en) | Multithreading in vector processors | |
US9892050B2 (en) | Multi-stage translation of prefetch requests | |
US20130326122A1 (en) | Distributed memory access in a network |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |