IP Library Granted Patent US 12,579,090
Granted Patent B2
US 12,579,090 · App. 18/936,875 · Granted Mar 17, 2026

Method and system for shifting data within memory

Inventors: Hyunho Kim (Seongnam-si, KR); Sangeun Je (Seongnam-si, KR); Jaewan Bae (Seongnam-si, KR)
Assignee: REBELLIONS INC.
G06F13/28G06F2213/28
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,579,090
App. No.
18/936,875
Granted
Mar 17, 2026
Kind
B2
Abstract

Provided is a method for shifting data within a memory, which is performed by a direct memory access (DMA) controller, and which includes receiving a task associated with an operation of shifting target data stored in a first area of a memory connected to the DMA controller to a second area of the memory, based on the task, generating sub-tasks associated with operations of shifting data chunks divided from the target data to the second area, determining data chunk groups each including at least one data chunk by grouping the data chunks, determining a priority of each of the data chunk groups based on an address of the first area and an address of the second area, and shifting the data chunk groups to the second area in sequence according to the determined priority.

Claims (67)

1 . A method for shifting data within a memory, the method being performed by a direct memory access (DMA) controller and comprising:

receiving a task associated with an operation of shifting target data stored in a first area of a memory connected to the DMA controller to a second area of the memory, wherein the second area partially overlaps with the first area;

generating a plurality of sub-tasks based on the task, wherein a plurality of data chunks are divided from the target data, each of the plurality of sub-tasks is associated with a respective one data chunk of the plurality of data chunks, and each of the plurality of sub-tasks is configured to shift an associated data chunk to the second area;

determining, by grouping the plurality of data chunks, a plurality of data chunk groups each comprising a plurality of data chunks;

determining, based on whether an address of the first area is higher than an address of the second area, a priority of each of the plurality of data chunk groups,

wherein if the address of the second area is higher than the address of the first area, a higher priority is assigned to a data chunk group stored at a higher address of the plurality of data chunk groups,

wherein if the address of the second area is lower than the address of the first area, a higher priority is assigned to a data chunk group stored at a lower address of the plurality of data chunk groups; and

shifting the plurality of data chunk groups from the first area to the second area in sequence according to the plurality of sub-tasks based on the determined priority, wherein the data is shifted from the data chunk group assigned the higher priority to a data chunk group assigned a lower priority.

2 . The method according to claim 1 , wherein each of the plurality of data chunk groups comprises a number of data chunks equal to or less than a predetermined maximum value.

3 . The method according to claim 2 , wherein the predetermined maximum value is equal to a number of channels connecting a memory controller associated with the memory and the DMA controller.

4 . The method according to claim 1 , wherein one or more data chunks included in each of the plurality of data chunk groups are continuously positioned in the first area.

5 . The method according to claim 1 , wherein the shifting the plurality of data chunk groups to the second area comprises:

receiving a first group that is one of the plurality of data chunk groups;

determining whether the reception of the first group is completed; and

initiating, in response to determining that the reception of the first group is completed, an operation of writing the first group to the second area.

6 . The method according to claim 5 , wherein the shifting the plurality of data chunk groups to the second area further comprises, in response to determining that the reception of the first group is completed and that there is a second group with a next priority after the first group, receiving the second group.

7 . The method according to claim 6 , wherein

the DMA controller comprises a plurality of channel controllers,

each of the plurality of channel controllers comprises a first buffer and a second buffer,

the first group is stored in a plurality of first buffers of the plurality of channel controllers, and

the second group is stored in a plurality of second buffers of the plurality of channel controllers.

8 . The method according to claim 6 , wherein the receiving the second group comprises receiving the second group while the first group is written to the second area.

9 . The method according to claim 5 , wherein

the DMA controller comprises a management controller and a plurality of channel controllers,

each of the plurality of sub-tasks is processed by one of the plurality of channel controllers,

the receiving the first group comprises receiving, by each of the plurality of channel controllers, each of one or more data chunks in the first group, and

the determining whether the reception of the first group is completed comprises:

transmitting, in response to completing the reception of each of the one or more data chunks, by each of the plurality of channel controllers, a reception completion signal to the management controller; and

in response to the management controller receiving the reception completion signal from all channel controllers, determining that the reception of the first group is completed.

10 . The method according to claim 9 , wherein the receiving each of the one or more data chunks in the first group comprises:

generating a plurality of read requests associated with a plurality of data items included in each of the one or more data chunks;

transmitting the plurality of read requests to a memory controller associated with the memory; and

receiving the plurality of data items corresponding to the plurality of read requests from the memory controller.

11 . The method according to claim 10 , wherein

the generating the plurality of read requests comprises calculating address information of a plurality of sub-areas in the first area where the plurality of data items are stored, and

each of the plurality of read requests comprises address information of each of the plurality of sub-areas.

12 . The method according to claim 1 , wherein

the DMA controller is connected to a memory controller associated with the memory through a plurality of channels, and

the shifting the plurality of data chunk groups to the second area comprises shifting at least one data chunk included in each of the plurality of data chunk groups in parallel using the plurality of channels.

13 . The method according to claim 12 , wherein the shifting the at least one data chunk in parallel comprises:

reading the at least one data chunk in parallel from the first area through the plurality of channels; and

writing the at least one data chunk in parallel to the second area through the plurality of channels.

14 . The method according to claim 13 , wherein

the DMA controller comprises a management controller and a plurality of channel controllers,

each of the one or more sub-tasks is processed by one of the plurality of channel controllers, and

the writing the at least one data chunk in parallel to the second area comprises:

generating a plurality of write requests associated with a plurality of data items included in the at least one data chunk; and

transmitting the plurality of write requests to the memory controller through the plurality of channels.

15 . The method according to claim 14 , wherein

the generating the plurality of write requests comprises calculating address information of a plurality of sub-areas in the second area where the plurality of data items are to be stored, and

each of the plurality of write requests comprises address information of each of the plurality of sub-areas.

16 . The method according to claim 1 , wherein the determining the priority comprises, in response to at least a portion of the first area and at least a portion of the second area overlapping with each other, determining the priority.

17 . A memory system, comprising:

a direct memory access (DMA) controller;

a memory connected to the DMA controller; and

a memory controller associated with the memory, wherein

the DMA controller is configured to:

receive a task associated with an operation of shifting target data stored in a first area of a memory connected to the DMA controller to a second area of the memory, wherein the second area partially overlaps with the first area;

generate a plurality of sub-tasks based on the task, wherein a plurality of data chunks are divided from the target data, each of the plurality of sub-tasks is associated with a respective one data chunk of the plurality of data chunks, and each of the plurality of sub-tasks is configured to shift an associated data chunk to the second area;

determine, by grouping the plurality of data chunks, a plurality of data chunk groups each comprising a plurality of data chunks;

determine, based on whether an address of the first area is higher than an address of the second area, a priority of each of the plurality of data chunk groups,

wherein if the address of the second area is higher than the address of the first area, a higher priority is assigned to a data chunk group stored at a higher address of the data chunk groups,

wherein if the address of the second area is lower than the address of the first area, a higher priority is assigned to a data chunk group stored at a lower address of the plurality of data chunk groups; and

shift the plurality of data chunk groups from the first area to the second area in sequence according to the plurality of sub-tasks based on the determined priority, wherein the data is shifted from the data chunk group assigned the higher priority to a data chunk group assigned a lower priority.

18 . The memory system according to claim 17 , wherein

each of the plurality of data chunk groups comprises a number of data chunks equal to or less than a predetermined maximum value, and

the predetermined maximum value is equal to a number of channels connecting a memory controller associated with the memory and the DMA controller.

Assignments (3)
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVING PROPERTY NUMBERS PREVIOUSLY RECORDED AT REEL: 71344 FRAME: 934. ASSIGNOR(S) HEREBY CONFIRMS THE MERGER AND CHANGE OF NAME. Recorded Oct 21, 2025
From: REBELLIONS INC.
To: REBELLIONS INC.
Reel/Frame 073150/0270 →
MERGER AND CHANGE OF NAME Recorded May 21, 2025
From: REBELLIONS INC.; SAPEON KOREA INC.
To: REBELLIONS INC.
Reel/Frame 071344/0934 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 4, 2024
From: KIM, HYUNHO; JE, SANGEUN; BAE, JAEWAN
To: REBELLIONS INC.
Reel/Frame 069302/0669 →
Priority Claims (1)
KR 10-2024-0056763 · Apr 29, 2024 · national
Continuity (1)
Related Publication 20250335380A1 · Oct 30, 2025
References Cited (36)
US 6658520B1 · Bennett · 2003 [cited by examiner]
US 6789172B2 · Chauvel · 2004 [cited by examiner]
US 8392662B2 · Jang et al. · 2013 [cited by applicant]
US 10185676B2 · Kwon et al. · 2019 [cited by applicant]
US 10877911B1 · Khan · 2020 [cited by examiner]
US 11159408B2 · Svennebring · 2021 [cited by examiner]
US 11199853B1 · Afrouzi · 2021 [cited by examiner]
US 11455249B2 · Lee · 2022 [cited by applicant]
US 11520519B2 · Kim · 2022 [cited by examiner]
US 11853252B2 · Rennig · 2023 [cited by examiner]
US 11977735B2 · Cha · 2024 [cited by applicant]
US 11994751B1 · Wagner · 2024 [cited by examiner]
US 20050091383A1 · Bender · 2005 [cited by examiner]
US 20130117766A1 · Bax · 2013 [cited by examiner]
US 20160154603A1 · Yoshioka · 2016 [cited by examiner]
US 20220229595A1 · Lee et al. · 2022 [cited by applicant]
US 20230138215A1 · Hiwada · 2023 [cited by examiner]
US 20230205460A1 · Ishihara · 2023 [cited by examiner]
US 20230231811A1 · Dalal · 2023 [cited by examiner]
US 20240192690A1 · Ebrahimi Afrouzi · 2024 [cited by examiner]
US 20240220431A1 · Govindachar · 2024 [cited by examiner]
US 20240264963A1 · Schaub · 2024 [cited by examiner]
US 20240320174A1 · Pedersen · 2024 [cited by examiner]
US 20250028611A1 · Groves · 2025 [cited by examiner]
US 20250053284A1 · Mannor · 2025 [cited by examiner]
US 20250060938A1 · Choquette · 2025 [cited by examiner]
US 20250117347A1 · Cao · 2025 [cited by examiner]
US 20250165384A1 · Gwak · 2025 [cited by examiner]
US 20250291590A1 · Fu · 2025 [cited by examiner]
US 20250291754A1 · Kottadamane Manjunatha Swamy · 2025 [cited by examiner]
US 20250335376A1 · Kim · 2025 [cited by examiner]
KR 1020090131146A · 2009 [cited by applicant]
KR 1020150095139A · 2015 [cited by applicant]
KR 1020210020694A · 2021 [cited by applicant]
KR 1020210138996A · 2021 [cited by applicant]
KR 1020220105285A · 2022 [cited by applicant]