KR101573618B1 - 메모리 구조에 기반한 외부 퀵 정렬의 방법 및 장치 - Google Patents

메모리 구조에 기반한 외부 퀵 정렬의 방법 및 장치 Download PDF

Info

Publication number
KR101573618B1
KR101573618B1 KR1020140083632A KR20140083632A KR101573618B1 KR 101573618 B1 KR101573618 B1 KR 101573618B1 KR 1020140083632 A KR1020140083632 A KR 1020140083632A KR 20140083632 A KR20140083632 A KR 20140083632A KR 101573618 B1 KR101573618 B1 KR 101573618B1
Authority
KR
South Korea
Prior art keywords
memory
data
sorting
alignment
target data
Prior art date
Application number
KR1020140083632A
Other languages
English (en)
Inventor
오현옥
조승표
정현식
장유원
박성민
안신우
Original Assignee
한양대학교 산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한양대학교 산학협력단 filed Critical 한양대학교 산학협력단
Priority to KR1020140083632A priority Critical patent/KR101573618B1/ko
Application granted granted Critical
Publication of KR101573618B1 publication Critical patent/KR101573618B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System (AREA)

Abstract

메모리 구조를 고려하여 정렬을 수행하는 방법 및 장치에 관한 기술이 개시된다. 메모리 구조에 기반한 외부 퀵 정렬의 방법은, 복수의 정렬 대상 데이터들을 스캔하여 최대값과 최소값을 검색하는 단계와, 최대값과 최소값을 이용하여 정렬을 수행할 적어도 하나의 메모리의 개수에 기반한 피벗들을 결정하는 단계와, 피벗들을 기준으로 설정된 복수의 구간들을 기준으로 복수의 정렬 대상 데이터들을 이동시키는 단계와, 복수의 정렬 대상 데이터들을 복수의 구간 별로 적어도 하나의 메모리에 할당하여 정렬을 수행하는 단계를 포함한다. 따라서, 데이터에 대한 쓰기 속도가 빠르고, 쓰기에 따른 에너지 소비가 상대적으로 낮은 적어도 하나의 휘발성 메모리에 데이터를 할당하여 정렬할 수 있고, 이를 통하여 메모리 구조에 고려하여 최적의 방법으로 데이터를 정렬할 수 있다.

Description

메모리 구조에 기반한 외부 퀵 정렬의 방법 및 장치{METHOD AND APPARATUS OF EXTERNAL QUICK SORT BASED ON MEMORY ARCHITECTURE}
본 발명은 정렬 알고리즘에 관한 것으로, 더욱 상세하게는 메모리 구조를 고려하여 정렬을 수행하는 방법 및 장치에 관한 것이다.
현재 컴퓨터의 메모리 구조는 레지스터, 캐쉬, 메인 메모리의 순서로 구성되어 있다. 최근의 STT-MRAM(Spin Transfer Torque - Magnetic Random Access Memory)은 자기저항효과를 이용한 기억소자로서, 전원이 꺼져도 기록된 정보가 지워지지 않는 비휘발성의 특징을 가진 차세대 메모리로, 현재의 메인 메모리인 DRAM 메모리를 대체하는 기억장치로 많은 주목을 받고 있다.
차세대 메모리는 현재의 메모리들과 달리 위에서 언급한 데이터의 비휘발성뿐만 아니라 빠른 처리 속도와 내구성에 있어서 장점을 가지고 있으나, 현재의 DRAM 메모리들에 비해 메모리 상에서 데이터 쓰기를 할 경우 더 많은 에너지를 소비하고 속도가 느린 단점이 있다.
또한, 비휘발성 메모리는 DRAM과 같은 휘발성에 비해서 읽기/쓰기 동작이 없는 경우 소비하는 정적인 에너지 소비는 매우 낮은 편이다.
따라서, 미래의 메모리 구조는 큰 크기의 비휘발성 메모리(예, STT-MRAM)와 작은 크기의 휘발성 메모리(예, DRAM)로 구성될 것으로 예상된다. 예를 들어, 프로세서에서 가까운 곳에 빠른 메모리를, 좀 더 먼 곳에 느린 메모리를 위치시킴으로써 전체적인 성능을 향상시키는 메모리 구조가 제안되고 있다.
한편, 이러한 메모리 구조 상에서 효율적으로 동작하는 알고리즘의 개발이 필요하다. 많은 알고리즘 중에서 정렬 알고리즘은 매우 다양한 분야에 필수적으로 사용되는 알고리즘이므로 이를 고려한 정렬 알고리즘의 개발이 필요하다.
종래에 메인 메모리와 외부 저장 장치라는 메모리 계층 구조를 효율적으로 이용하는 정렬 방법으로 외부 병합 정렬 알고리즘이 있다. 하지만 외부 병합 정렬 알고리즘은 정렬해야 할 데이터의 두 배에 해당하는 메모리가 필요하므로 메인 메모리 상에서 동작하는 방식에는 적합하지 않은 문제점이 있다.
상기와 같은 문제점을 해결하기 위한 본 발명의 목적은, 메모리 구조를 고려하여 정렬을 수행하는 방법을 제공하는데 있다.
상기와 같은 문제점을 해결하기 위한 본 발명의 다른 목적은, 메모리 구조를 고려하여 정렬을 수행하는 장치를 제공하는데 있다.
상기 목적을 달성하기 위한 본 발명의 실시예에 따른 메모리 구조에 기반한 외부 퀵 정렬의 방법은, 복수의 정렬 대상 데이터들을 스캔하여 최대값과 최소값을 검색하는 단계와, 최대값과 최소값을 이용하여 정렬을 수행할 적어도 하나의 메모리의 개수에 기반한 피벗들을 결정하는 단계와, 피벗들을 기준으로 설정된 복수의 구간들을 기준으로 복수의 정렬 대상 데이터들을 이동시키는 단계와, 복수의 정렬 대상 데이터들을 복수의 구간 별로 적어도 하나의 메모리에 할당하여 정렬을 수행하는 단계를 포함한다.
여기에서, 상기 적어도 하나의 메모리는, 휘발성 메모리일 수 있다.
여기에서, 상기 복수의 정렬 대상 데이터들을 이동시키는 단계는, 복수의 구간 별로 카운트되는 데이터의 개수를 산출하고, 데이터의 개수에 기반하여 복수의 정렬 대상 데이터들을 이동시킬 수 있다.
여기에서, 상기 적어도 하나의 메모리에 할당하여 정렬을 수행하는 단계는, 복수의 구간 별로 적어도 하나의 메모리에 할당된 데이터에 대해 퀵 정렬(Quick Sort)을 수행하여 정렬할 수 있다.
여기에서, 상기 메모리 구조에 기반한 외부 퀵 정렬의 방법은, 퀵 정렬을 수행하여 정렬된 복수의 구간 별로 할당된 데이터를 병합하여 정렬 결과를 산출하는 단계를 더 포함할 수 있다.
여기에서, 상기 적어도 하나의 메모리에 할당하여 정렬을 수행하는 단계는, 적어도 하나의 메모리 중 특정 메모리에 할당될 데이터가 특정 메모리의 용량을 초과하는 경우, 특정 메모리에 할당될 데이터를 복수의 정렬 대상 데이터로 한 과정을 재귀적으로 수행할 수 있다.
여기에서, 상기 메모리 구조에 기반한 외부 퀵 정렬의 방법은, 비휘발성의 메인 메모리와 휘발성의 적어도 하나의 메모리로 구성된 메모리 구조를 이용하여 수행될 수 있다.
상기 다른 목적을 달성하기 위한 본 발명의 실시예에 따른 메모리 구조에 기반한 외부 퀵 정렬을 수행하는 장치는, 메인 메모리와, 메인 메모리가 연동하는 적어도 하나의 휘발성 메모리와, 메인 메모리 상의 복수의 정렬 대상 데이터들을 스캔하고, 복수의 정렬 대상 데이터들을 복수의 구간 별로 적어도 하나의 휘발성 메모리에 할당하여 정렬을 수행하는 프로세서를 포함한다.
상기와 같은 본 발명의 실시예에 따른 메모리 구조에 기반한 외부 퀵 정렬의 방법은 비휘발성의 메인 메모리와 휘발성의 적어도 하나의 메모리로 구성된 메모리 구조를 고려하여 수행될 수 있다.
또한, 본 발명의 실시예에 따른 메모리 구조에 기반한 외부 퀵 정렬의 방법은 데이터에 대한 쓰기 속도가 빠르고, 쓰기에 따른 에너지 소비가 상대적으로 낮은 적어도 하나의 휘발성 메모리에 데이터를 할당하여 정렬할 수 있고, 이를 통하여 메모리 구조에 고려하여 최적의 방법으로 데이터를 정렬할 수 있다.
도 1은 본 발명의 실시예에 따른 메모리 구조에 기반한 외부 퀵 정렬을 수행하는 장치를 설명하기 위한 블록도이다.
도 2는 본 발명의 실시예에 따라 정렬되는 복수의 정렬 대상 데이터를 나타내는 예시도이다.
도 3은 본 발명의 실시예에 따른 피벗들에 의해 복수의 구간들이 설정된 복수의 정렬 대상 데이터를 나타내는 예시도이다.
도 4는 본 발명의 실시예에 따른 복수의 구간 별로 카운트되는 데이터의 개수를 나타내는 예시도이다.
도 5는 본 발명의 실시예에 따른 복수의 구간들을 기준으로 이동하는 복수의 정렬 대상 데이터들을 설명하기 위한 예시도이다.
도 6은 본 발명의 실시예에 따른 메모리 구조에 기반한 외부 퀵 정렬을 수행하는 장치에 의해 출력되는 정렬 결과를 설명하기 위한 예시도이다.
도 7은 본 발명의 실시예에 따른 메모리 구조에 기반한 외부 퀵 정렬의 방법을 설명하기 위한 흐름도이다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세한 설명에 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조부호를 유사한 구성요소에 대해 사용하였다.
제1, 제2, A, B 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다. 및/또는 이라는 용어는 복수의 관련된 기재된 항목들의 조합 또는 복수의 관련된 기재된 항목들 중의 어느 항목을 포함한다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 본 발명에 따른 바람직한 실시예를 첨부된 도면을 참조하여 상세하게 설명한다.
도 1은 본 발명의 실시예에 따른 메모리 구조에 기반한 외부 퀵 정렬을 수행하는 장치를 설명하기 위한 블록도이다.
도 1을 참조하면, 본 발명의 실시예에 따른 메모리 구조에 기반한 외부 퀵 정렬을 수행하는 장치는 프로세서(100), 메인 메모리(210) 및 휘발성 메모리(220)를 포함하여 구성될 수 있다.
먼저, 프로세서(100)는 컴퓨터 시스템 등에 장착된 연산 처리 장치를 의미하는 것으로 메모리(200)와 연동하여 데이터에 대한 정렬을 수행할 수 있다.
메모리(200)는 메인 메모리(210)와 다수의 휘발성 메모리(220)(예를 들어, 5개의 휘발성 메모리(220))를 가진 구조를 가질 수 있다. 즉, 메인 메모리(210)는 연동하는 휘발성 메모리(220)와 비교하여 용량이 큰 비휘발성 메모리(220)일 수 있다. 예를 들어, 메인 메모리(210)는 STT-MRAM이고, 휘발성 메모리(220)는 DRAM일 수 있다.
프로세서(100)는 입력된 복수의 정렬 대상 데이터들을 정렬할 수 있다. 프로세서(100)는 메인 메모리(210) 상의 복수의 정렬 대상 데이터들을 스캔 또는 읽을 수 있고, 복수의 정렬 대상 데이터들을 복수의 구간 별로 적어도 하나의 휘발성 메모리(220)에 할당하여 정렬을 수행할 수 있다.
프로세서(100)는 복수의 정렬 대상 데이터들을 스캔하여 최대값과 최소값을 검색하고, 최대값과 최소값을 이용하여 정렬을 수행할 적어도 하나의 휘발성 메모리(220)의 개수에 기반한 피벗들을 결정할 수 있다.
또한, 프로세서(100)는 피벗들을 기준으로 설정된 복수의 구간들을 기준으로 복수의 정렬 대상 데이터들을 이동시킬 수 있고, 복수의 정렬 대상 데이터들을 복수의 구간 별로 적어도 하나의 휘발성 메모리(220)에 할당하여 정렬을 수행할 수 있다.
상세하게는, 복수의 구간 별로 적어도 하나의 휘발성 메모리(220)에 할당된 데이터에 대해 퀵 정렬(Quick Sort)을 수행하여 정렬할 수 있다. 따라서, 프로세서(100)는 퀵 정렬을 수행하여 정렬된 복수의 구간 별로 할당된 데이터를 병합하여 정렬 결과를 산출할 수 있다.
보다 상세하게는, 프로세서(100)는 적어도 하나의 휘발성 메모리(220) 중 특정 메모리에 할당될 데이터가 특정 메모리의 용량을 초과하는 경우, 특정 메모리에 할당될 데이터를 복수의 정렬 대상 데이터로 한 과정을 재귀적으로 수행하여 메모리의 구조 및 용량을 고려하여 퀵 정렬을 수행할 수 있다.
즉, 프로세서(100)는 데이터에 대한 쓰기 속도가 빠르고, 쓰기에 따른 에너지 소비가 상대적으로 낮은 적어도 하나의 휘발성 메모리(220)에 데이터를 할당하여 정렬할 수 있고, 이를 통하여 메모리 구조에 고려하여 최적의 방법으로 데이터를 정렬할 수 있다.
본 발명의 실시예에 따른 메모리 구조에 기반한 외부 퀵 정렬을 수행하는 장치의 동작은 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 프로그램 또는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의해 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다. 또한 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어 분산방식으로 컴퓨터로 읽을 수 있는 프로그램 또는 코드가 저장되고 실행될 수 있다.
본 발명의 실시예에 따른 메모리 구조에 기반한 외부 퀵 정렬의 수행 방법을 예를 들어 후술한다.
도 2는 본 발명의 실시예에 따라 정렬되는 복수의 정렬 대상 데이터를 나타내는 예시도이고, 도 3은 본 발명의 실시예에 따른 피벗들에 의해 복수의 구간들이 설정된 복수의 정렬 대상 데이터를 나타내는 예시도이다.
도 2를 참조하여, 복수의 정렬 대상 데이터가 10개의 데이터로 구성되고, 프로세서(100)는 도 1과 같이 메인 메모리(210)와 5개의 휘발성 메모리(220)와 연동하여 데이터를 정렬하는 경우를 예를 들어 설명한다.
프로세서(100)는 입력된 복수의 정렬 대상 데이터를 메인 메모리(210)에서 스캔하여 최대값과 최소값을 검색할 수 있다. 즉, 복수의 정렬 대상 데이터 중에서 최대값은 68이고, 최소값은 1이다.
도 3을 참조하면, 프로세서(100)는 최대값과 최소값을 이용하여 정렬을 수행할 적어도 하나의 휘발성 메모리(220)의 개수에 기반한 피벗들을 결정할 수 있다.
예를 들어, 휘발성 메모리(220)의 개수가 5개인 경우, 복수의 정렬 대상 데이터는 5개의 구간으로 나뉘는 것이 필요하다. 따라서, 5개의 구간을 결정하기 위해서는 4개의 피벗을 결정하는 것이 필요하다.
상세하게는, 최대값과 최소값에 대한 반영 비율을 변경하여 피벗을 결정할 수 있다. 제1 피벗은 (4×1+68)/5=14, 제2 피벗은 (3×1+2×68)/5=27, 제3 피벗은 (2×1+3×68)/5=41 및 제4 피벗은 (1+4×68)/5=54과 같이 결정할 수 있다.
또한, 프로세서(100)는 피벗들을 기준으로 복수의 구간들을 설정할 수 있다. 예를 들어, 최소값에서 제1 피벗까지를 제1 구간, 제1 피벗에서 제2 피벗까지를 제2 구간, 제2 피벗에서 제3 피벗까지를 제3 구간, 제3 피벗에서 제4 피벗까지를 제4 구간 및 제4 피벗에서 최대값까지를 제5 구간으로 설정할 수 있다.
즉, 9, 1, 3, 5, 14, 7은 제1 구간에 속하고, 25는 제2 구간에 속하고, 34는 제3 구간에 속하며, 68, 57은 제5구간에 속하는 것으로 판단될 수 있다. 또한, 제4 구간에 속하는 데이터는 없을 수 있다.
따라서, 본 발명의 실시예에 따른 메모리 구조에 기반한 외부 퀵 정렬을 수행하는 장치는 복수의 정렬 대상 데이터들이 피벗들을 기준으로 설정된 복수의 구간 중 어느 구간에 속하는지 판단할 수 있다.
도 4는 본 발명의 실시예에 따른 복수의 구간 별로 카운트되는 데이터의 개수를 나타내는 예시도이고, 도 5는 본 발명의 실시예에 따른 복수의 구간들을 기준으로 이동하는 복수의 정렬 대상 데이터들을 설명하기 위한 예시도이며, 도 6은 본 발명의 실시예에 따른 메모리 구조에 기반한 외부 퀵 정렬을 수행하는 장치에 의해 출력되는 정렬 결과를 설명하기 위한 예시도이다.
도 4를 참조하면, 프로세서(100)는 복수의 구간 별로 카운트되는 데이터의 개수를 산출할 수 있다. 예를 들어, 제1 구간에는 6개(9, 1, 3, 5, 14, 7)의 데이터가 속하고, 제2 구간에는 1개(25)의 데이터가 속하고, 제3 구간에는 1개(34)의 데이터가 속하며, 제5 구간에는 2개(68, 57)의 데이터가 속하는 것으로 카운트할 수 있다.
도 5를 참조하면, 프로세서(100)는 피벗들을 기준으로 설정된 복수의 구간들을 기준으로 복수의 정렬 대상 데이터들을 이동시킬 수 있다. 즉, 25는 제2 구간에 속함에도 불구하고 제1 구간에 속하는 데이터들 사이에 위치한다. 따라서, 25와 7의 위치를 바꾸어 복수의 정렬 대상 데이터들이 복수의 구간 별로 정렬할 수 있도록 한다.
또한, 프로세서(100)는 피벗들을 기준으로 설정된 복수의 구간들을 기준으로 복수의 정렬 대상 데이터들을 이동시키는 과정은 제1 구간부터 순차적으로 수행될 수 있으며, 복수의 구간 별로 카운트되는 데이터의 개수에 기반하여 수행될 수 있다.
즉, 34는 제3 구간에 속함에도 불구하고 제5 구간에 속하는 데이터들 사이에 위치한다. 따라서, 68과 34의 위치를 바꾸어 복수의 정렬 대상 데이터들이 복수의 구간 별로 정렬할 수 있도록 할 수 있다.
도 6 (a)는 피벗들을 기준으로 설정된 복수의 구간들을 기준으로 복수의 정렬 대상 데이터들을 이동시킨 후의 데이터의 정렬 상태를 나타낸다. 즉, 복수의 정렬 대상 데이터들은 복수의 구간들을 기준으로 구분될 수 있음을 알 수 있다.
도 6 (b)를 참조하면, 프로세서(100)는 복수의 정렬 대상 데이터들을 복수의 구간 별로 적어도 하나의 휘발성 메모리(220)에 할당하여 정렬을 수행하여 정렬 결과를 산출할 수 있다.
예를 들어, 제1 구간에 속하는 데이터들, 제2 구간에 속하는 데이터들, 제3 구간에 속하는 데이터들, 제4 구간에 속하는 데이터들 및 제5 구간에 속하는 데이터들 각각을 서로 다른 휘발성 메모리(220)에 할당하여 정렬을 수행할 수 있다.
또한, 프로세서(100)는 각각의 휘발성 메모리(220)에 할당된 데이터들에 퀵 정렬(Quick Sort)를 수행할 수 있다. 여기서, 퀵 정렬은 주어진 데이터들을 특정한 피벗보다 작은 값을 갖는 데이터들과 큰 값을 갖는 데이터들로 분리하여 정렬하는 기법을 의미하는 것으로, n개의 데이터를 정렬할 때, 최악의 경우에는 n2번의 비교를 수행하고, 평균적으로 (n log n)번의 비교를 수행할 수 있다.
더 나아가, 프로세서(100)는 적어도 하나의 휘발성 메모리(220) 중 특정 메모리에 할당될 데이터가 특정 메모리의 용량을 초과하는 경우, 특정 메모리에 할당될 데이터를 복수의 정렬 대상 데이터로 한 과정을 재귀적으로 수행할 수 있다. 예를 들어, 제1 구간에 속하는 데이터들의 용량이 하나의 휘발성 메모리(220)에서 처리되기 어려울 경우, 제1 구간에 속하는 데이터들을 다시 복수의 구간들로 나누어 여러 개의 휘발성 메모리(220)에 할당하여 정렬을 수행할 수 있다.
따라서, 본 발명의 실시예에 따르면, 각각의 휘발성 메모리(220)를 이용하여 정렬된 데이터들을 모아 도 6 (b)와 같이 정렬이 완료된 정렬 결과를 출력할 수 있다.
도 7은 본 발명의 실시예에 따른 메모리 구조에 기반한 외부 퀵 정렬의 방법을 설명하기 위한 흐름도이다.
도 7을 참조하여, 본 발명의 실시예에 따른 메모리 구조에 기반한 외부 퀵 정렬의 방법을 설명한다. 본 발명의 실시예에 따른 메모리 구조에 기반한 외부 퀵 정렬의 방법은 상술한 메모리 구조에 기반한 외부 퀵 정렬을 수행하는 장치에 의해 수행될 수 있다.
본 발명의 실시예에 따른 메모리 구조에 기반한 외부 퀵 정렬의 방법은, 복수의 정렬 대상 데이터들을 스캔하여 최대값과 최소값을 검색하는 단계(S710)와, 최대값과 최소값을 이용하여 정렬을 수행할 적어도 하나의 메모리의 개수에 기반한 피벗들을 결정하는 단계(720)와, 피벗들을 기준으로 설정된 복수의 구간들을 기준으로 복수의 정렬 대상 데이터들을 이동시키는 단계(730)와, 복수의 정렬 대상 데이터들을 복수의 구간 별로 적어도 하나의 메모리에 할당하여 정렬을 수행하는 단계(S760)를 포함한다.
복수의 정렬 대상 데이터들을 스캔하여 최대값과 최소값을 검색할 수 있다(S710). 복수의 정렬 대상 데이터들이 입력되면 이는 메인 메모리(210)에 저장될 수 있다. 프로세서(100)는 메인 메모리(210) 상의 복수의 정렬 대상 데이터들을 스캔하여 최대값과 최소값을 검색할 수 있다.
최대값과 최소값을 이용하여 정렬을 수행할 적어도 하나의 메모리의 개수에 기반한 피벗들을 결정할 수 있다(720). 여기서, 적어도 하나의 메모리를 휘발성 메모리(220)일 수 있다. 따라서, 다수의 휘발성 메모리(220)의 개수에 따라 복수의 정렬 대상 데이터들을 구분하는 기준인 피벗들을 결정할 수 있다.
피벗들을 기준으로 설정된 복수의 구간들을 기준으로 복수의 정렬 대상 데이터들을 이동시킬 수 있다(730). 구간들의 개수는 휘발성 메모리(220)의 개수에 상응하여 결정될 수 있다. 예를 들어, 복수의 구간 별로 카운트되는 데이터의 개수를 산출하고, 데이터의 개수에 기반하여 복수의 정렬 대상 데이터들을 이동시킬 수 있다. 따라서, 복수의 정렬 대상 데이터들이 어느 구간에 속하는지 판단하여 자신이 해당하는 구간에 데이터들이 연속적으로 속할 수 있도록 데이터의 위치를 이동시킬 수 있다.
복수의 정렬 대상 데이터들을 복수의 구간 별로 적어도 하나의 메모리에 할당하여 정렬을 수행할 수 있다(S760). 즉, 각각의 휘발성 메모리(220)에 할당된 데이터들에 퀵 정렬(Quick Sort)을 수행할 수 있다.
더 나아가, 적어도 하나의 휘발성 메모리(220) 중 특정 메모리에 할당될 데이터가 특정 메모리의 용량을 초과하는지 판단할 수 있다(S750). 적어도 하나의 휘발성 메모리(220) 중 특정 메모리에 할당될 데이터가 특정 메모리의 용량을 초과하는 경우, 특정 메모리에 할당될 데이터를 복수의 정렬 대상 데이터로 한 과정을 재귀적으로 수행할 수 있다(770). 즉, 특정 구간에 속하는 데이터들의 용량이 하나의 휘발성 메모리(220)에서 처리되기 어려울 경우, 특정 구간에 속하는 데이터들을 다시 복수의 구간들로 나누어 여러 개의 휘발성 메모리(220)에 할당하여 정렬을 수행할 수 있다.
또한, 적어도 하나의 휘발성 메모리(220) 중 특정 메모리에 할당될 데이터가 특정 메모리의 용량을 초과하지 않으면, 복수의 정렬 대상 데이터들을 복수의 구간 별로 적어도 하나의 메모리에 할당하여 정렬을 수행할 수 있다(S760).
따라서, 퀵 정렬을 수행하여 정렬된 복수의 구간 별로 할당된 데이터를 병합하여 정렬 결과를 산출할 수 있다.
상술한 본 발명의 실시예에 따른 메모리 구조에 기반한 외부 퀵 정렬의 방법은 비휘발성의 메인 메모리와 휘발성의 적어도 하나의 메모리로 구성된 메모리 구조를 고려하여 수행될 수 있다.
또한, 본 발명의 실시예에 따른 메모리 구조에 기반한 외부 퀵 정렬의 방법은 데이터에 대한 쓰기 속도가 빠르고, 쓰기에 따른 에너지 소비가 상대적으로 낮은 적어도 하나의 휘발성 메모리에 데이터를 할당하여 정렬할 수 있고, 이를 통하여 메모리 구조에 고려하여 최적의 방법으로 데이터를 정렬할 수 있다.
상기에서는 본 발명의 바람직한 실시예를 참조하여 설명하였지만, 해당 기술 분야의 숙련된 당업자는 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.
100: 프로세서 200 메모리
210: 메인 메모리 220: 휘발성 메모리

Claims (13)

  1. 정렬을 수행하는 장치에서 수행되는 방법에 있어서,
    복수의 정렬 대상 데이터들을 스캔하여 최대값과 최소값을 검색하는 단계;
    상기 최대값과 상기 최소값을 이용하여 정렬을 수행할 적어도 하나의 메모리의 개수에 상응하는 개수의 구간들의 구분을 위한 피벗들을 결정하는 단계;
    상기 피벗들을 기준으로 설정된 복수의 구간들을 기준으로 상기 복수의 정렬 대상 데이터들을 이동시키는 단계; 및
    상기 복수의 정렬 대상 데이터들을 상기 복수의 구간 별로 상기 적어도 하나의 메모리에 할당하여 정렬을 수행하는 단계를 포함하되,
    상기 복수의 정렬 대상 데이터들을 이동시키는 단계는,
    상기 복수의 구간 별로 카운트되는 데이터의 개수를 산출하고, 상기 데이터의 개수에 기반하여 상기 복수의 정렬 대상 데이터들을 이동시키는 것을 특징으로 하는, 메모리 구조에 기반한 외부 퀵 정렬의 방법.
  2. 청구항 1에 있어서,
    상기 적어도 하나의 메모리는,
    휘발성 메모리인 것을 특징으로 하는, 메모리 구조에 기반한 외부 퀵 정렬의 방법.
  3. 삭제
  4. 청구항 1에 있어서,
    상기 적어도 하나의 메모리에 할당하여 정렬을 수행하는 단계는,
    상기 복수의 구간 별로 상기 적어도 하나의 메모리에 할당된 데이터에 대해 퀵 정렬(Quick Sort)을 수행하여 정렬하는 것을 특징으로 하는, 메모리 구조에 기반한 외부 퀵 정렬의 방법.
  5. 청구항 4에 있어서,
    퀵 정렬을 수행하여 정렬된 상기 복수의 구간 별로 할당된 데이터를 병합하여 정렬 결과를 산출하는 단계를 더 포함하는, 메모리 구조에 기반한 외부 퀵 정렬의 방법.
  6. 정렬을 수행하는 장치에서 수행되는 방법에 있어서,
    복수의 정렬 대상 데이터들을 스캔하여 최대값과 최소값을 검색하는 단계;
    상기 최대값과 상기 최소값을 이용하여 정렬을 수행할 적어도 하나의 메모리의 개수에 상응하는 개수의 구간들의 구분을 위한 피벗들을 결정하는 단계;
    상기 피벗들을 기준으로 설정된 복수의 구간들을 기준으로 상기 복수의 정렬 대상 데이터들을 이동시키는 단계; 및
    상기 복수의 정렬 대상 데이터들을 상기 복수의 구간 별로 상기 적어도 하나의 메모리에 할당하여 정렬을 수행하는 단계를 포함하되,
    상기 적어도 하나의 메모리에 할당하여 정렬을 수행하는 단계는,
    상기 적어도 하나의 메모리 중 특정 메모리에 할당될 데이터가 상기 특정 메모리의 용량을 초과하는 경우,
    상기 특정 메모리에 할당될 데이터를 상기 복수의 정렬 대상 데이터로 한 과정을 재귀적으로 수행하는 것을 특징으로 하는, 메모리 구조에 기반한 외부 퀵 정렬의 방법.
  7. 정렬을 수행하는 장치에서 수행되는 방법에 있어서,
    복수의 정렬 대상 데이터들을 스캔하여 최대값과 최소값을 검색하는 단계;
    상기 최대값과 상기 최소값을 이용하여 정렬을 수행할 적어도 하나의 메모리의 개수에 상응하는 개수의 구간들의 구분을 위한 피벗들을 결정하는 단계;
    상기 피벗들을 기준으로 설정된 복수의 구간들을 기준으로 상기 복수의 정렬 대상 데이터들을 이동시키는 단계; 및
    상기 복수의 정렬 대상 데이터들을 상기 복수의 구간 별로 상기 적어도 하나의 메모리에 할당하여 정렬을 수행하는 단계를 포함하되,
    비휘발성의 메인 메모리와 휘발성의 상기 적어도 하나의 메모리로 구성된 메모리 구조를 이용하여 수행되는, 메모리 구조에 기반한 외부 퀵 정렬의 방법.
  8. 메인 메모리;
    상기 메인 메모리가 연동하는 적어도 하나의 휘발성 메모리; 및
    상기 메인 메모리 상의 복수의 정렬 대상 데이터들을 스캔하고, 상기 복수의 정렬 대상 데이터들을 복수의 구간 별로 상기 적어도 하나의 휘발성 메모리에 할당하여 정렬을 수행하는 프로세서를 포함하되,
    상기 프로세서는,
    상기 복수의 정렬 대상 데이터들을 스캔하여 최대값과 최소값을 검색하고,
    상기 최대값과 상기 최소값을 이용하여 정렬을 수행할 상기 적어도 하나의 휘발성 메모리의 개수에 상응하는 개수의 구간들의 구분을 위한 피벗들을 결정하고,
    상기 피벗들을 기준으로 설정된 상기 복수의 구간들을 기준으로 상기 복수의 정렬 대상 데이터들을 이동시키며,
    상기 복수의 정렬 대상 데이터들을 상기 복수의 구간 별로 상기 적어도 하나의 휘발성 메모리에 할당하여 정렬을 수행하되,
    상기 복수의 구간 별로 카운트되는 데이터의 개수를 산출하고, 상기 데이터의 개수에 기반하여 상기 복수의 정렬 대상 데이터들을 이동시키는 것을 특징으로 하는, 메모리 구조에 기반한 외부 퀵 정렬을 수행하는 장치.
  9. 삭제
  10. 삭제
  11. 청구항 8에 있어서,
    상기 프로세서는,
    상기 복수의 구간 별로 상기 적어도 하나의 휘발성 메모리에 할당된 데이터에 대해 퀵 정렬(Quick Sort)을 수행하여 정렬하는 것을 특징으로 하는, 메모리 구조에 기반한 외부 퀵 정렬을 수행하는 장치.
  12. 청구항 11에 있어서,
    퀵 정렬을 수행하여 정렬된 상기 복수의 구간 별로 할당된 데이터를 병합하여 정렬 결과를 산출하는 것을 특징으로 하는, 메모리 구조에 기반한 외부 퀵 정렬을 수행하는 장치.
  13. 청구항 8에 있어서,
    상기 프로세서는,
    상기 적어도 하나의 휘발성 메모리 중 특정 메모리에 할당될 데이터가 상기 특정 메모리의 용량을 초과하는 경우, 상기 특정 메모리에 할당될 데이터를 상기 복수의 정렬 대상 데이터로 한 과정을 재귀적으로 수행하는 것을 특징으로 하는, 메모리 구조에 기반한 외부 퀵 정렬을 수행하는 장치.
KR1020140083632A 2014-07-04 2014-07-04 메모리 구조에 기반한 외부 퀵 정렬의 방법 및 장치 KR101573618B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020140083632A KR101573618B1 (ko) 2014-07-04 2014-07-04 메모리 구조에 기반한 외부 퀵 정렬의 방법 및 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140083632A KR101573618B1 (ko) 2014-07-04 2014-07-04 메모리 구조에 기반한 외부 퀵 정렬의 방법 및 장치

Publications (1)

Publication Number Publication Date
KR101573618B1 true KR101573618B1 (ko) 2015-12-01

Family

ID=54882864

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140083632A KR101573618B1 (ko) 2014-07-04 2014-07-04 메모리 구조에 기반한 외부 퀵 정렬의 방법 및 장치

Country Status (1)

Country Link
KR (1) KR101573618B1 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10372451B2 (en) 2017-05-25 2019-08-06 Samsung Electronics Co., Ltd. Sequence alignment method of vector processor
US10409593B2 (en) 2017-03-31 2019-09-10 Samsung Electronics Co., Ltd. Semiconductor device
US10649771B2 (en) 2017-03-31 2020-05-12 Samsung Electronics Co., Ltd. Semiconductor device

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100121848A1 (en) * 2008-11-12 2010-05-13 Sun Microsystems, Inc. Multi-interval quicksort algorithm for complex objects

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100121848A1 (en) * 2008-11-12 2010-05-13 Sun Microsystems, Inc. Multi-interval quicksort algorithm for complex objects

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10409593B2 (en) 2017-03-31 2019-09-10 Samsung Electronics Co., Ltd. Semiconductor device
US10649771B2 (en) 2017-03-31 2020-05-12 Samsung Electronics Co., Ltd. Semiconductor device
US10990388B2 (en) 2017-03-31 2021-04-27 Samsung Electronics Co., Ltd. Semiconductor device
US11645072B2 (en) 2017-03-31 2023-05-09 Samsung Electronics Co., Ltd. Semiconductor device
US10372451B2 (en) 2017-05-25 2019-08-06 Samsung Electronics Co., Ltd. Sequence alignment method of vector processor
US11068265B2 (en) 2017-05-25 2021-07-20 Samsung Electronics Co., Ltd. Sequence alignment method of vector processor
US11442728B2 (en) 2017-05-25 2022-09-13 Samsung Electronics Co., Ltd. Sequence alignment method of vector processor

Similar Documents

Publication Publication Date Title
EP2564321B1 (en) Memory usage scanning
US10540093B2 (en) Multidimensional contiguous memory allocation
CN101154189B (zh) 支持不同存储单元类型的非易失性存储器的设备和方法
EP3408748B1 (en) Adaptive value range profiling for enhanced system performance
US9189389B2 (en) Memory controller and memory system
CN107622020B (zh) 一种数据存储方法、访问方法及装置
US9223694B2 (en) Data storage device and operating method thereof
US8060706B2 (en) Method of allocating physical memory in specified address range under Linux system platform
US20120030413A1 (en) Memory management device, information processing device, and memory management method
US8495286B2 (en) Write buffer for improved DRAM write access patterns
US20100318719A1 (en) Methods, memory controllers and devices for wear leveling a memory
CN106486167B (zh) 改进闪速存储器清除的方法和系统
KR102535666B1 (ko) 대형 그래프 처리를 위한 그래프 데이터 분할
KR101573618B1 (ko) 메모리 구조에 기반한 외부 퀵 정렬의 방법 및 장치
CN112069086A (zh) 用于垃圾收集操作的存储器系统及其操作方法
CN109343796B (zh) 一种数据处理方法和装置
CN110244906B (zh) 存储系统及其操作方法
Hong et al. Improving SSD performance using adaptive restricted-copyback operations
US20160179401A1 (en) Memory system and the operation method thereof
CN105117168A (zh) 一种信息处理方法和电子设备
CN109119126B (zh) 半导体器件和错误管理方法
US20140351298A1 (en) Method and apparatus for distributed processing of file
EP3296878B1 (en) Electronic device and page merging method therefor
Paulson et al. Page Replacement Algorithms–Challenges and Trends
US20160140034A1 (en) Devices and methods for linked list array hardware implementation

Legal Events

Date Code Title Description
AMND Amendment
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee