A claim for priority under 35 U.S.C. § 119 is made to Korean Patent Application No. 10-2016-0120890 filed Sep. 21, 2016, in the Korean Intellectual Property Office, the entire contents of which are hereby incorporated by reference.
Example embodiments of the inventive concepts disclosed herein relate to a memory module and a computer system, and more particularly, to a memory module that communicates with a host through a plurality of channels and a computer system including the same.
In general, a computer system may include a host and a memory module. A host may include a processor. The processor may store an operation - suit in the memory module. An operating speed of the processor may be faster than a data input-'output speed of the memory module. In this case, since the memory module fails to support the operating speed of the processor, the memory module has an influence on the whole performance of the computer system.
To overcome the above-described issue, the number of channels between the host and the memory module may increase. For this reason, there is a need for a computer system that efficiently uses the channels between the host and the memory module.
Example embodiments of the inventive concepts provide a memory module that communicates with a host through a plurality of channels and a computer system including the same.
According to an aspect of an example embodiment, a computer system includes a host and a memory module. The host transfers a plurality of cache lines composed of a plurality of data elements to a memory module through a plurality of channels and allocates cache lines, with target data elements in the plurality of data elements, to one channel of the plurality of channels. The target data elements are being arranged within the cache lines according to a stride interval. The stride interval is a number of data elements between consecutive ones of the target data elements. The memory module includes gather-scatter engines that are respectively connected to the plurality of channels and scatter or gather the target data elements under control of the host.
According to another aspect of an example embodiment, a memory module includes a plurality of memory areas and a plurality of gather-scatter engines. The plurality of memory areas are respectively connected with the plurality of channels. The plurality of gather-scatter engines are respectively connected with the plurality of channels and respectively connected with the plurality of memory areas. Under control of the host, each of the plurality of gather-scatter engines are configured to scatter target data elements through one of the plurality of channels such that the target data elements are stored in a memory area connected with the one channel of the plurality of channels, the target data elements are accessed based on a stride interval. The stride interval is a number of data elements between consecutive ones of the target data elements. The plurality of gather scatter engines are configured to transfer through one channel of the plurality of channels such that the target data elements are stored in a memory area connected with the one channel and transfers the target data elements from the memory area connected with the one channel of the plurality of channels.
A computer system includes a host configured to transfer a stream of data to a memory module through a plurality of channels, the stream of data divided into cache lines of bytes or larger, each line of data including a plurality of data elements of 2 bytes or larger, some of the data elements are target data elements that are dispersed among the stream of data at a regular interval, and allocate the data lines which include target data elements to one channel of the plurality of channels. The host also includes a memory module including gather-scatter engines that are respectively connected to the plurality of channels. The gather-scatter engines are configured to scatter the data elements into one of a plurality of memory areas or gather the target data elements from the one of the plurality of memory areas, under control of the host.
Below, example embodiments of the inventive concepts may be described in detail and clearly to such an extent that an ordinary one in the art easily implements the inventive concepts.
Referring to
The host 20 and the memory module 30 may communicate with each other through the channels CH1 and CH2. An interface that is used for communication between the host 20 and the memory module 30 may be determined according to the protocol or specification. For example, the interface may be determined by various protocols such as universal serial bus (USB), advanced technology attachment (ATA), serial ATA (SATA), serial attached SCSI (SAS), parallel ATA (PATA), high speed interchip (HSIC), small computer system interface (SCSI), firewire, peripheral component interconnection (PCI), PCI express (PCIe), nonvolatile memory express (NVMe), universal flash storage (UFS), secure digital (SD), multimedia card (MMC), embedded MMC (eNEMC), etc.
The host 20 may drive elements and an operating system of the computer system 10. In an example embodiment, the host 20 may include controllers for controlling elements of the computer system 10, interfaces, graphics engines, etc. In an example embodiment, the host 20 may include a central processing unit (CPU), a graphic processing unit (GPU), a system on chip (SoC), an application processor (AP), or the like.
The data remapper 21 may be implemented with hardware or software. For example, the data remapper 21 may be implemented with a field programmable gate array (FPGA), an application specific integrated circuit (ASIC), or the like. The data remapper 21 may perform a mapping operation on data that is output from the host 20 to the memory module 30 or is received from the memory module 30. The data remapper 21 may determine whether to allocate data to any channel of the two channels CH1 and CH2. In more detail, the data remapper 21 may determine whether to allocate a plurality of cache lines to any channel of the two channels CH1 and CH2. Below, a cache line will be described,
Data input/output between the host 20 and the memory module 30 may be performed by a data stream in units of a cache line. The host 20 may read frequently used data together with pieces of data close to the frequently used data from the memory' module 30 in consideration of data locality. A data unit by which the host 20 reads data from the memory module 30 may be called a cache line. The host 20 may store a cache line in an internal cache memory (not illustrated) (to be described in
The memory controllers 22 and 23 may drive the memory module 30. In more detail, each of the memory controllers 22 and 23 may output a command for controlling the memory module 30 and data to the memory module 30. Referring to
The memory module 30 may exchange data with the host 20. The memory module 30 may operate as a main memory, a working memory, a buffer memory, or a storage memory of the computer system 10.
The memory module 30 may include a plurality of memory devices (not illustrated). Each of the memory devices may include a plurality of memory cells (not illustrated). Each memory cell may be a volatile memory cell. For example, each memory cell may be a dynamic random access memory (DRAM) cell, a static random access memory (SRAM) cell, or the like. Each memory cell may be a non-volatile memory cell. For example, each memory cell may be a NOR flash memory cell, a NAND flash memory cell, a ferroelectric random access memory (FRAM) cell, a phase change random access memory (PRAM) cell, a thyristor random access memory (TRAM) cell, a magnetic random access memory (MRAM) cell, or the like.
Referring to
Under control of the host 20, each of the gather-scatter engines 32 and 33 may scatter data received through a channel and may store the scattered data in an internal storage of the memory module 30. Under control of the host 20, each of the gather-scatter engines 32 and 33 may gather scattered data from the internal storage of the memory module 30 and may transfer the gathered data to the host 20 through a channel.
An operation in which data is exchanged between the host 20 and the memory module 30 will be described with reference to
The processor 24 may control overall operations of elements included in the computer system 10. The processor 24 may process data. Data that are frequently used by the processor 24 may be stored in the cache memory 25. The cache memory 25 may be used to reduce a speed difference between the processor 24 and the memory module 30. As described above, the cache memory 25 may include cache lines that are virtual storage spaces.
Each of the first and second memory areas 34 and 35 may include a plurality of memory devices (not illustrated). The memory devices included in the first memory area 34 and the memory devices included in the second memory area 35 may operate independently of each other. That is, the memory devices included in the first memory area 34 may perform data input/output with the host 20 through the first channel CH1. The memory devices included in the second memory area 35 may perform data input/output with the host 20 through the second channel CH2.
Referring to
The processor 24 may need data elements that are continuously arranged within a stream of data including cache lines. In this case, if the processor 24 reads data in units of a cache line, the processor 24 may obtain necessary data elements at a time. Accordingly, when the processor 24 accesses continuously arranged data elements, the processor 24 may efficiently process data.
However, in some cases, the processor 24 may also need data elements that are not continuously arranged. In more detail, the processor 24 may access data elements that are arranged by a stride interval. The stride interval is a regular interval of data between consecutive target data elements in the stream of data. Referring to
In short, when the target data elements belong to one cache line because of a small stride, the processor 24 may efficiently process data. However, when the target data elements are scattered and arranged in a plurality of cache lines because of a large stride, the processor 24 may inefficiently process data compared to that described above. Accordingly, to improve the performance of the processor 24, the memory module 30 may include the gather-scatter engines 32 and 33 that gather the target data elements and transfer the gathered target data elements to the host 20. Also, to improve the performance of the processor 24, the host 20 may include the data remapper 21.
In more detail, the gather-scatter engines 32 and 33 may receive a gather command or a scatter command from the host 20 and may process the received command. When receiving the gather command from the host 20, the gather-scatter engines 32 and 33 may gather target data elements that the host 20 needs and may transfer the gathered target data elements to the host 20. When receiving the scatter command from the host 20, the gather-scatter engines 32 and 33 may scatter and store target data elements in the internal storage of the memory module 30. If the memory module 30 fails to process the gather command or the scatter command, the host 20 may generate a plurality of commands for processing each of target data elements. That is, in the case where the memory module 30 includes a gather-scatter engine, the host 20 may process target data elements at a time through the gather command or the scatter command. Below, an operation that is performed in the data remapper 21 after the host 20 generates the scatter command will be described.
Referring to
In contrast, referring to
Referring to
The processor 24 may transfer the gather command to the memory module 30 to obtain necessary target data elements. Each of the gather-scatter engines 32 and 33 may read data in units of a cache line and may gather target data elements. As illustrated in
In contrast, as illustrated in FIG, 3, in the case where target data elements are stored only in the first memory area 34, the host 20 may receive target data elements by occupying only the first channel CH1. Since the second channel CH2 is not occupied, the host 20 may transfer an additional command to the memory module 30 through the second channel CH2. That is, a way to allocate cache lines to a channel illustrated in
The host 20 according to an example embodiment of the inventive concepts may allocate a plurality of cache lines, in which target data elements are included, to one channel through the data remapper 21. The host 20 may transfer an additional command to the memory module 30 through another channel, to which the gather command or the scatter command is not allocated.
The host 50 may include the plurality of processors 51_1 to 51_m. Here, “m” indicates the number of processors included in the host 50. The performance of the computer system 40 may be improved more and more as “m” becomes larger. The processors 51_1 to 51_m may operate independently of each other or may operate in connection with each other. For example, some processors of the processors 51_1 to 51_m may be CPUs, and some of the other processors may be GPUs.
The crossbar 53 may be arranged between the processors 51_1 to 51_m and the memory controllers 52_1 to 52_n. Here, values of “m” and “n” may be the same or may be different from each other. The crossbar 53 may function as a switch that connects the processors 51_1 to 51_m and the memory controllers 52_1 to 52_n. Referring to
According to an example embodiment of the inventive concepts, any processor of the processors 51_1 to 51_m may occupy any one channel of a plurality of channels CH1 to CHn to read target data elements (refer to
The processor 110 may control the cache memory 120. The processor 110 may read frequently used data from the cache memory 120 in units of a cache line. In contrast, the processor 110 may store frequently used data in the cache memory 120 in units of a cache line. Also, the processor 110 may back up data, which is not frequently used any more, from the cache memory 120 to a memory module. In addition to the above-described cases, the cache memory 120 may transfer first data stream Data Stream1 to the memory module under control of the processor 110.
The processor 110 may control the data remapper 130 through a first control signal CTRL1. The first control signal CTRL1 may include information about the size of a data element, the size of a cache line, a stride value, a plurality of channels, or the like. In addition, the first control signal CTRL1 may further include identification information for identifying data that are exchanged between the host 100 and the memory module.
When the processor 110 generates the scatter command, the data remapper 130 may convert the first data stream Data Stream1 into second data streamData Stream2 in response to the first control signal CTRL1. In more detail, the data remapper 130 may remap cache lines in which target data elements (refer to
When the processor 110 generates the gather command, the data remapper 130 may convert the second data stream Data Stream2 into the first data stream Data Stream1 in response to the first control signal CTRL1. In more detail, the data remapper 130 may convert the second data streamData Stream2 into the first data stream Data Stream1 with reference to the above-described remapping information. The converted first data stream Data Stream1 may be transferred to the processor 110 or the cache memory 120.
Although not illustrated in
The multiplexer 140 may select at least one of the memory controllers 150_to 150_n in response to a second control signal CTRL2. Here, the second control signal CTRL2 may be generated by the data remapper 130. In more detail, when the processor 110 generates the scatter command, the multiplexer 140 may select any memory controller to allocate cache lines in which target data elements are included. Also, the multiplexer 140 may select any other memory controller to which the remaining cache lines other than the cache lines, in which target data elements are included, are allocated. When the processor 110 generates the gather command, the multiplexer 140 may select any memory controller to receive cache lines composed of target data elements. In this case, also, the multiplexer 140 may select any other memory controller to which the remaining cache lines are allocated.
The gather-scatter command decoder 210 may receive a host command. The gather-scatter command decoder 210 may decode the gather command or the scatter command of the host command. The gather-scatter command decoder 210 may transfer the decoding result to the command generator 220, the address generator 230, and the data manage circuit 240.
The command generator 220 may generate a memory command used in a memory module with reference to the decoding result of the gather-scatter command decoder 210. In more detail, when the gather-scatter command decoder 210 decodes the scatter command, the command generator 220 may generate a plurality of write commands. Here, the number of write commands may be determined with reference to the scatter command and cache lines transferred to the gather-scatter engine 200 together with the scatter command. An interval between write commands may be determined in consideration of the address generator 230 and the memory module. When the gather-scatter command decoder 210 decodes the gather command, the command generator 220 may generate a plurality of read commands. Here, the number of read commands may be determined with reference to cache lines that will be transferred to the host 20 (refer to
The address generator 230 may generate a memory address (not illustrated) used in the memory module with reference to the decoding result of the gather-scatter command decoder 210, in more detail, an interval between addresses generated by the address generator 230 may be determined with reference to a stride interval. For example, an interval between addresses generated by the address generator 230 may be the same as the stride interval. Although not illustrated in
In more detail, the address generator 230 may directly receive a stride value from the host 20 or may receive the stride value through the gather-scatter command decoder 210. The address generator 230 may generate a memory address with reference to the received stride value. That is, the address generator 230 may assign a memory address to each of target data elements. To this end, the address generator 230 may include a counter (not illustrated) that counts a stride value, a counter (not illustrated) that counts any address, etc.
The data manage circuit 240 may function as a data buffer between the host 20 (refer to
The write data manage circuit 341 may be included in the data manage circuit 240 described with reference to
The read data manage circuit 342 may be included in the data manage circuit 240 described with reference to
The mode register set 350 may be connected with the address generator 330. The mode register set 350 may include a plurality of registers (not illustrated). The mode register set 350 may provide the address generator 330 with information that is needed to generate an address. For example, the host 20 may store a stride value in the mode register set 350 in advance. Alternatively, the host 20 may change a stride value stored in the mode register set 350.
The first multiplexer 361 may transfer any one of a host command or a command generated by the command generator 320 to a memory module. The first multiplexer 361 may just transfer the host command to the memory module. Alternatively, the first multiplexer 361 may transfer a command generated by the command generator 320 to the memory module while the gather-scatter engine 300 processes the scatter command or the gather command. In this case, the first multiplexer 361 may also transfer an address generated by the address generator 330 to the memory module.
The second multiplexer 362 may transfer any one of host data or data generated by the write data manage circuit 341 to the memory module. Here, the host data may mean data that are transferred from the host 20 to the memory module. The second multiplexer 362 may just transfer the host data to the memory module. Alternatively, the second multiplexer 362 may transfer data generated by the write data manage circuit 341 to the memory module while the gather-scatter engine 300 processes the scatter
The third multiplexer 363 may transfer any one of memory data or data generated by the read data manage circuit 342 to the host 20. Here, the memory data may mean data that are read from memory devices of the memory module. The third multiplexer 363 may just transfer the memory data to the host 20. Alternatively, the third multiplexer 363 may transfer data generated by the data manage circuit 342 to the host 20 while the gather-scatter engine 300 processes the gather command.
At a point in time TO, the gather-scatter engine 200 may receive a gather command or scatter command (i/S from the host 20. In addition, the memory module 30 may receive an address ADD from the host 20. In this case, the gather command, the scatter command, and the address may be transferred in synchronization with a clock CK.
At a point in time T1, the gather-scatter engine 200 may perform command decoding. In more detail, the gather-scatter command decoder 210 may decode the gather command or the scatter command received at the point in time T0.
At a point in time T2, the gather-scatter engine 200 may perform first address translation ADD Translation 1. Here, the address translation means that the address generator 230 newly generates a memory address with reference to the gather command, the scatter command, and the address received at the point in time T0.
At a point in time T3, the gather-scatter engine 200 may terminate the first address translation ADD translation 1. . In succession, the gather-scatter engine 200 may perform second address translation ADD translation 2. The gather-scatter engine 200 may transfer a translated first address and a first memory command Memory CMD 1 corresponding to the translated first address to the memory module. Here, the first memory command Memory CMD 1 may be a write command when the gather-scatter engine 200 receives the scatter command and may be a read command when the gather-scatter engine 200 receives the gather command. Although not illustrated in
At the point in time T4, operations described at the point in tune T3 may be repeatedly performed. At a point in time T5, the gather-scatter engine 200 may perform k-th address translation ADD translation k. Here, “k” may be determined according to a specification between the host 20 and the memory module 30, the stride value, the size of a cache line, the size of data elements, or the like. At a point in time T5, the gather-scatter engine 200 may transfer a translated (k-1)-th address and a (k-1)-th memory command Memory CMD k-1 corresponding to the translated (k-1)-th address to the memory module. Between a point in time T5 and a point in time T6, an operation of the memory module, which is performed according to the (k-1)-th memory command Memory CMD k-1, may be completed. However, a complete point in time is not limited to illustration.
At a point in time T6, the gather-scatter engine 200 may terminate the k-th address translation ADD translation k. The gather-scatter engine 200 may transfer a translated k-th address and a k-th memory command Memory CMD k corresponding to the translated k-th address to the memory module. Afterwards, an operation of the memory module, which is performed according to the k-th memory command Memory CMD k-1, may be completed.
If the gather-scatter 200 receives the gather command from the host 20, at a point in time T7, the gather-scatter engine 200 may output data, that is, a cache line to the host 20. As described above, the cache line may be composed of target data elements.
According to an example embodiment of the inventive concepts, the host 20 may only transfer the gather command or the scatter command to the memory module 30 at the point in time T0 for input/output of target data that will be accessed by a stride interval. That is, an additional command for input/output of target data is not needed from the point in time T0 to the point in time T7. That is, the host 2s may perform any other normal operations from the point in time T0 to the point in time T7.
In operation S110, the memory module 30 may receive a gather command or a scatter command from the host 20. In more detail, one of the gather-scatter engines 32 and 33 included in the memory module 30 may receive the gather command or the scatter command. Operation S110 may correspond to an operation at the point in time T0 of
In operation S120, the gather-scatter engine 32 or 33 may decode the gather command. If the host 20 generates a command different from the gather command or the scatter command, the gather-scatter engine 32 or 33 may just transfer the command generated by the host 20 to the memory module 30. Operation S120 may correspond to an operation at the point in time T1 of FIG, 8.
In operation S130, the gather-scatter engine 32 or 33 may generate the memory command based on a result of decoding the gather command. For example, the memory command may be a read command. Also, the gather-scatter engine 32 or 33 may generate a memory address corresponding to the memory command. Operation S130 may correspond to an operation from the point in time T2 to the point in time T6 of
In operation S140, the gather-scatter engine 32 or 33 may gather target data elements that are accessed by a stride interval. In more detail, the gather-scatter engine 32 or 33 may gather data read out from the memory module 30 through the read command. Afterwards, the gather-scatter engine 32 or 33 may output a cache line to the host 20. Here, the cache line may be composed of target data elements that are accessed by a stride interval by the gather-scatter engine 32 or 33. Operation S140 may correspond to an operation at the point in time T7 of
In operation S210, the memory module 30 may receive a scatter command from the host 20. In more detail, one of the gather-scatter engines 32 and 33 included in the memory module 30 may receive the scatter command. Operation S210 may correspond to an operation at the point in time TO of
In operation S220, the gather-scatter engine 32 or 33 may decode the scatter command. Operation S220 may correspond to an operation at the point in time T1 of
In operation S230, the gather-scatter engine 32 or 33 may generate the memory command based on the decoding result of the scatter command. For example, the memory command may be a write command. The gather-scatter engine 32 or 33 may also generate a memory address corresponding to the memory command. The gather-scatter engine 32 or 33 may scatter target data elements that are accessed by a stride interval. In more detail, the gather-scatter engine 32 or 33 may scatter target data elements to be accessed by a stride interval, based on the memory command. Operation S230 may correspond to an operation from the point in time T2 to the point in time T6 of
In operation S240, the gather-scatter engine 32 or 33 may transfer the memory command generated in operation S230 and the scattered target data elements to the memory module 30. Operation S240 may correspond to an operation from the point in time T2 to the point in tune 17 of FIG, 8.
In operation S310, a host 70 may generate a scatter and.
In operation S320, the host 70 may remap a data stream. In this case, the host 70 may allocate a plurality of cache lines, in which target data elements to be accessed by a stride interval are included, to one channel. The host 70 may allocate the remaining cache lines to other channels.
In operation S330, the host 70 may transfer the remapped data stream and the scatter command to a memory module 80 through one channel. According to an example embodiment of the inventive concepts, the cache lines in which target data elements are included may be transferred through one channel. Operation S330 may correspond to operation S210 of
In operation S340, the memory module 80 may generate a memory command with reference to the received command. The memory module 80 may scatter target data elements to be accessed by a stride interval. Operation S340 may correspond to operation 5230 of FIG, 10.
In operation S350, the memory module 80 may perform a write operation. In more detail, the memory module 80 may store the target data elements scattered in operation S340 therein. Operation S350 may correspond to operation S240 of
In operation S360 and operation S370, the host 70 may generate an additional command and may transfer the additional command to the memory module 80. In operation 5380, the host 70 may receive results corresponding to the additional command from the memory module 80. Here, the additional command may be a scatter command that is different from the scatter command generated in operation S310 or may be a command for performing any other operation. In
In operation S410, the host 70 may generate a gather command.
In operation S420, the host 70 may transfer the gather command to the memory module 80. Target data elements to be accessed by a stride interval have been previously stored in the memory module 80 through one channel. Accordingly, the host 70 may transfer the gather command to only one channel, not a plurality of channels. Operation S420 may correspond to operation S110 of
In operation S430, the memory module 80 may generate a memory command with reference to the received command. Operation S430 may correspond to operation S130 of
In operation S440, the memory module 80 may gather target data elements to be accessed by a stride interval. In more detail, the memory module 80 may perform a read operation. Operation S440 may correspond to operation S140 of
In operation S450, the memory module 80 may transfer a result corresponding to the gather command to the host 70. Here, the result corresponding to the gather command may mean target data elements gathered in operation S440. The result corresponding to the gather command may be transferred to the host 70 through one channel. The remaining channels may be used for the host 70 to transfer an additional command to the memory module 80 or to receive a result of the memory module 80, which corresponds to the additional command.
In operation S460 and operation S470, the host 70 may generate an additional command and may transfer the additional command to the memory module 80. In operation S480, the host 70 may receive results corresponding to the additional command from the memory module 80. Here, the additional command may be a gather command that is different from the gather command generated in operation S410 or may be a command for performing any other operation. In
The host 1100 may drive elements and an operating system of the computer system 1000. In an example embodiment, the host 1100 may include controllers for controlling elements of the computer system 1000, interfaces, graphics engines, etc. The host 1100 may be a system-on-chip (SoC).
The user interface 1200 may include interfaces that input data or an instruction to the host 1100 or output data to an external device. In an example embodiment, the user interface 1200 may include user input interfaces such as a keyboard, a keypad, buttons, a touch panel, a touch screen, a touch pad, a touch ball, a camera, a microphone, a gyroscope sensor, a vibration sensor, and a piezoelectric element. The user interface 1200 may further include interfaces such as a liquid crystal display (LCD), an organic light-emitting diode (OLED) display device, an active matrix OLED (AMOLED) display device, a light-emitting diode (LED), a speaker, and a motor.
The storage module 1300 may store data. For example, the storage module 1300 may store data received from the host 1100. Alternatively, the storage module 1300 may transfer data stored therein to the host 1100. In an example embodiment, the storage module 1300 may be implemented with a nonvolatile memory device such as an electrically programmable read only memory (EPROM), a NAND flash memory, a NOR flash memory, a PRAM, a ReRAM, a FeRAM, an MRAM, or a TRAM. The storage module 1300 may be a memory module according to an example embodiment of the inventive concepts.
The network module 1400 may communicate with external devices. In an example embodiment, the network module 1400 may support wireless communications, such as code division multiple access (CDMA), global system for mobile communication (GSM), wideband CDMA (WCDMA), CDMA-2000, time division multiple access (TDMA), long term evolution (LTE), worldwide interoperability for microwave access (Wimax), wireless LAN (WLAN), ultra wide band (LTWB), Bluetooth, and wireless display (WI-DI).
The memory module 1500 may operate as a main memory, a working memory, a buffer memory, or a cache memory of the computer system 1000. The memory module 1500 may include volatile memories such as a DRAM and an SRAM or nonvolatile memories such as a NAND flash memory, a NOR flash memory, a PRAM., a ReRAM, a FeRAM, an MRAM, and a TRAM. The memory module 1500 may be a memory module according to an example embodiment of the inventive concepts.
The system bus 1600 may electrically connect the host 1100, the user interface 1200, the storage module 1300, the network module 1400, and the memory module 1500 to each other.
A computer system according to an example embodiment of the inventive concepts may efficiently perform data input/output that is performed in units of a cache line.
A memory device according to an example embodiment of the inventive concepts may efficiently perform data input/output through gather-scatter engines that respectively correspond to a plurality of channels.
While the inventive concepts have been described with reference to example embodiments, it will be apparent to those skilled in the art that various changes and modifications may be made without departing from the spirit and scope of the inventive concepts. Therefore, it should be understood that the above example embodiments are not limiting, but illustrative.
Number | Date | Country | Kind |
---|---|---|---|
10-2016-0120890 | Sep 2016 | KR | national |