KR101196566B1 - 멀티 프로세서 시스템 및 그 정보처리방법 - Google Patents

멀티 프로세서 시스템 및 그 정보처리방법 Download PDF

Info

Publication number
KR101196566B1
KR101196566B1 KR1020077017364A KR20077017364A KR101196566B1 KR 101196566 B1 KR101196566 B1 KR 101196566B1 KR 1020077017364 A KR1020077017364 A KR 1020077017364A KR 20077017364 A KR20077017364 A KR 20077017364A KR 101196566 B1 KR101196566 B1 KR 101196566B1
Authority
KR
South Korea
Prior art keywords
record
array
item value
item
value
Prior art date
Application number
KR1020077017364A
Other languages
English (en)
Other versions
KR20080014726A (ko
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 가부시키가이샤 터보 데이터 라보라토리
Publication of KR20080014726A publication Critical patent/KR20080014726A/ko
Application granted granted Critical
Publication of KR101196566B1 publication Critical patent/KR101196566B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/40Data acquisition and logging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24553Query execution of query operations
    • G06F16/24554Unary operations; Data partitioning operations

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

본 발명에서는, 공유 메모리상의 대규모의 표형식 데이터를 복수의 프로세서에 의해 병렬로 정렬(소트)한다. 본 발명에 따르면, 맨 먼저, 처리대상인 레코드가 분할되어 복수의 프로세서에 할당된다. 다음으로, 각 프로세서가 처리대상인 레코드에 관련지어진 항목값번호의 로컬 출현횟수를 카운트한다. 이어서 각 프로세서에 의해 카운트된 항목값번호의 로컬 출현횟수를, 항목값번호의 글로벌한 누계수, 즉, 복수의 프로세서 사이에서 공통으로 이용되는 누계수로 변환한다. 마지막으로, 각 프로세서는 상기 글로벌한 누계수를 포인터로서 이용함으로써, 할당된 코드의 순서를 바꾼다.

Description

멀티 프로세서 시스템 및 그 정보처리방법{MULTIPROCESSOR SYSTEM, AND ITS INFORMATION PROCESSING METHOD}
본 발명은, 복수의 프로세서가 메모리를 공유하여 병렬처리를 실시하는 공유 메모리형 멀티 프로세서 시스템에서의 정보처리방법, 특히, 공유 메모리상의 대규모의 표형식 데이터를 복수의 프로세서에 의해 병렬로 정렬(sort)하는 정보처리방법에 관한 것이다.
본 발명은 또한, 이러한 정보처리방법을 실시하는 공유 메모리형 멀티 프로세서 시스템에 관한 것이다.
본 발명은, 더욱이 이러한 정보처리방법을 실현시키기 위한 프로그램에 관한 것이다.
본 발명은, 더욱이 이러한 프로그램이 기록된 기억매체에 관한 것이다.
사회 전체의 다양한 장소에 컴퓨터가 도입되어, 인터넷을 비롯한 네트워크가 침투된 오늘날은 여기저기에서 대규모의 데이터가 축적?처리되게 되었다.
한편, 대규모의 데이터를 처리하기 위하여, 양호한 효율의 알고리즘이 개발되고 있다. 대규모 데이터, 특히, 대규모의 표형식 데이터를 처리할 때 빈번히 출현하는 처리가 정렬(sort)이다. 효율적인 정렬 알고리즘으로서, 기수(基數)(RADIX) 정렬과 카운팅(COUNTING) 정렬(계수정렬, 분포계수정렬이라고도 부름)이 알려져 있다. 카운팅 정렬(counting sort)은 기수정렬의 각 자릿수를 정렬하는데 이용되는 경우가 있으며, 효율이 양호한 알고리즘이지만, 그 적용을 위해서는,
1) 정렬대상이 정수일 것
2) 정렬대상이 되는 정수의 상한과 하한을 알고 있을 것
3) 정렬대상이 되는 정수의 상한과 하한의 차이가 지나치게 크지 않을 것
이라는 전제조건이 있다.
이에 대하여, 본 발명자는, 대규모의 표형식 데이터를 고속으로 검색, 집계, 정렬(sort)하는데 적합한 데이터 관리기구를 제안한 바 있다(특허문헌 1 참조). 상기 데이터 관리기구는, 표형식 데이터 항목의 각 항목값을 나타내기 위한 정보블럭을 갖는다. 이 정보블럭에서는, 표형식 데이터의 항목에 속하는 항목값이, 각 항목값에 부여된 항목값 번호와, 항목값 번호를 순서대로 늘어놓은 실제 항목값의 배열에 의해 표시된다. 각 레코드의 항목값에 대응된 항목값 번호를 레코드 번호순으로 늘어놓은 배열이 준비되며, 각 레코드의 항목값은, 해당 레코드의 항목값 번호에 대응된 값을 항목값의 배열에서 찾음으로써 특정된다. 또한, 표형식 데이터중의 처리대상인 레코드는, 레코드 번호를 순서대로 늘어놓은 배열에 의해 특정된다.
정보블럭은, 표형식 데이터의 각 항목에 대하여, 그 항목에 속하는 항목값이 순서가 매겨진(정수화된) 항목값 번호의 순으로, 상기 항목값 번호에 대응된 항목값이 저장된 테이블이다. 항목값 자체는, 수치(정수, 고정 소수점, 부동 소수점 등), 문자열 등 어떠한 타입의 데이터여도 된다. 따라서, 상기 데이터 관리기구는, 모든 타입의 데이터의 값이 항목값 번호라는 정수로 취급될 수 있다는 특장점이 있다. 즉, 상기 데이터 관리기구에 따르면, 가령, 문자열 타입의 데이터를 정렬할 때, 문자열 타입의 데이터를 그대로 정렬대상으로 하여 정렬하는 것이 아니라, 문자열 타입의 데이터의 값에 대응된 항목값 번호를 정렬대상으로 하여 정렬할 수가 있다. 이 때, 정렬결과는 레코드 번호를 순서대로 늘어놓은 배열에 의해 표시된다. 이와 같이, 본 발명자가 제안한 정보블럭에 근거하는 데이터 관리기구는, 카운팅 정렬을 적용하기 위한 상기 1) 내지 3)의 전제조건을 충족시킨다는 점에서 우수하다.
다른 한편으로, 대규모 데이터를 처리하기 위해 필요한 방대한 계산을 고속으로 실행하기 위하여, 병렬처리의 도입이 시도되고 있다. 정렬에 관해서도 각종의 병렬정렬 알고리즘이 제안되고 있다. 일반적으로, 병렬 처리 아키텍처는 크게 「분산 메모리형]과 「공유 메모리형」으로 나뉜다. 분산 메모리형은, 각 프로세서가 각각 로컬 메모리를 가지고, 이것들을 결합하여 시스템을 구축한다. 이러한 방식에서는, 이론적으로 수 백~수 만대의 프로세서를 조립한 하드웨어 시스템의 설계가 가능하다. 그러나, 분산 메모리형은, 데이터의 분장관리가 복잡하고, 프로세서간 통신효율이 낮다는 등의 기술적 과제가 있다. 이에 반해, 공유 메모리형은 복수의 프로세서가 하나의 거대한 메모리 공간을 공유하는 방식이다. 이러한 방식에서는, 프로세서 그룹과 공유 메모리간의 트래픽이 병목(bottle neck)이 되므로, 현실적으로는 100대를 초과하는 프로세서를 이용하여 시스템을 구축하기가 용이하 지 않은 것으로 여겨진다.
그러나, 이러한 상황 하에서 최근에는 복수의 CPU를 이용한 공유 메모리형 멀티 프로세서 시스템으로서 구성된 퍼스널 컴퓨터의 입수가 가능하다. 이러한 종류의 퍼스널 컴퓨터에 사용되는 표준적인 CPU는, 메모리버스의 5~6배 정도의 내부클럭으로 동작하고, 그 내부에 자동적인 병렬실행기능이나 파이프라인 처리기능이 장비되어 있어, 약 1데이터를 1클럭(메모리버스)으로 처리할 수 있다.
특허문헌 1 : 국제공개공보 WO00/10103호
따라서, 대규모의 표형식 데이터를 처리하기 위한 효율적인 정렬 알고리즘과, 공유 메모리형 멀티 프로세서 시스템의 조합이 기대된다.
효율적인 정렬 알고리즘으로서 알려져 있는 카운팅 정렬은, 상기의 1) 내지 3)의 전제조건에 의해 제약되어 있으므로, 본 발명자가 제안한 상기 정보블럭에 근거하는 데이터 관리기구를 채용하지 않는 한, 대규모의 표형식 데이터의 처리에 적용시키기가 곤란하다. 더욱이 대규모의 표형식 데이터를 공유 메모리형 멀티 프로세서 시스템으로 병렬정렬하는 기술은 아직 알려져 있지 않다.
따라서, 본 발명의 목적은, 상기 정보블럭에 근거하는 데이터 관리기구를 이용하여, 공유 메모리상의 대규모의 표형식 데이터를 복수의 프로세서에 의해 병렬로 정렬하기 위한 정보처리방법을 제안하는 데 있다.
또한, 본 발명의 목적은, 이러한 정보처리방법을 실시하는 공유 메모리형 멀티 프로세서 시스템을 제공하는 데 있다.
더욱이 본 발명의 목적은, 이러한 정보처리방법을 실현시키기 위한 프로그램을 제공하는 데 있다.
더욱이 본 발명의 목적은, 이러한 프로그램이 기록된 기억매체를 제공하는 데 있다.
본 발명은, 표형식(表形式) 데이터의 각 항목에 대하여, 그 항목에 속하는 항목값이 순서가 매겨진(정수화된) 항목값 번호의 순으로(오름차순 또는 내림차순의 어느 쪽이라도 무방함), 상기 항목값 번호에 대응된 항목값이 저장된 테이블인 정보블럭에 근거하는 데이터 관리기구에 의거한다. 항목값 자체는, 수치(정수(整數), 고정 소수점, 부동(浮動) 소수점 등), 문자열 등의 어떠한 타입의 데이터여도 된다. 상기 데이터 관리기구를 채용함으로써, 모든 타입의 데이터 값이 항목값 번호라는 정수로 취급될 수 있다. 즉, 상기 데이터 관리기구에 따르면, 임의의 타입의 데이터를 정렬할 때에, 그 임의의 타입의 데이터를 그대로 정렬대상으로 삼아서 정렬하는 것이 아니라, 그 데이터의 값에 대응된 항목값 번호를 정렬대상으로 삼아서 정렬할 수가 있다. 따라서, 상기 정보블럭에 근거하는 데이터 관리기구는, 카운팅 정렬을 적용하기 위한 전제조건을 충족한다. 또한, 표형식 데이터중의 처리대상의 레코드가 레코드 번호를 순서대로 늘어놓은 배열에 의해 특정되므로, 정렬의 결과는 레코드 번호를 순서대로 늘어놓은 배열에 의해 표시된다.
본 발명은, 이러한 데이터 관리기구를 공유 메모리형 멀티 프로세서 시스템에 적용함으로써, 공유 메모리상의 대규모의 표형식 데이터를 복수의 프로세서에 의해 병렬로 정렬하기 위한 정보처리방법 및 그 정보처리방법을 실시하는 공유 메모리형 멀티 프로세서 시스템을 실현한다. 이를 위해, 본 발명에 따르면, 맨 먼저 처리대상의 레코드가 분할되어 복수의 프로세서에 할당된다. 다음으로, 각 프로세서가 처리대상의 레코드에 관련지어진 항목값 번호의 로컬 출현횟수를 카운트한다. 그 다음에, 각 프로세서에 의해 카운트된 항목값 번호의 로컬 출현횟수를 항목값 번호의 글로벌한 누계수(累計數), 다시 말해, 복수의 프로세서 사이에서 공통적으로 이용되는 누계수로 변환한다. 마지막으로, 각 프로세서는, 상기 글로벌한 누계수를 포인터로서 이용함으로써, 할당된 레코드의 순서를 바꾼다. 따라서, 본 발명에 따르면, 공유 메모리형 멀티 프로세서 시스템에 있어서, 레코드가 있는 항목의 항목값(예컨대, 정수값, 고정 소수점 수치, 부동 소수점 수치, 문자열 등)에 관하여 레코드를 병렬로 정렬할 수가 있다.
처리대상이 되는 레코드의 복수의 프로세서에 대한 할당, 로컬 출현횟수의 카운트 및 할당된 레코드의 순서 교체는, 복수의 프로세서에 의해 병렬로 처리될 수 있다. 또한, 복수의 프로세서에 의한 병렬처리를 이용하여 글로벌한 누계수를 산출해도 되지만, 메모리에 순차적(sequential)으로 액세스할 수 있어 캐시에 대한 히트율이 높기 때문에, 1대 또는 일부 프로세서만이 담당하여 고속성을 유지할 수가 있다.
상기 본 발명의 원리는 다음과 같은 여러 양태에 의해 실시된다.
본 발명의 제 1 양태는, 공유 메모리형 멀티 프로세서 시스템에 있어서 레코드의 소정 항목의 항목값에 따라서 레코드 순서를 바꾸어 나열하는 정보처리방법이다. 공유 메모리형 멀티 프로세서 시스템은, 표형식 데이터의 레코드의 레코드 번호가 소정의 레코드 순서에 따라 저장된 레코드 번호배열, 표형식 데이터의 레코드의 소정 항목의 항목값에 대응하는 항목값 번호가 레코드 번호에 따라 저장된 항목값 번호배열, 및 표형식 데이터의 항목값이 해당 항목값에 대응하는 항목값 번호의 순서에 따라 저장된 항목값 배열을 기억하는 공유 메모리와, 상기 공유 메모리에 액세스 가능한 복수의 프로세서를 구비한다. 본 발명에 의한 정보처리방법은,
상기 레코드 번호배열을 분할하여 제 1의 복수의 프로세서에 할당하는 단계와,
상기 제 1의 복수의 프로세서 중의 각 프로세서에 있어서, 상기 할당된 레코드 번호배열의 부분에 포함되는 레코드에 대응된 항목값 번호의 출현횟수를 카운트하는 단계와,
상기 항목값 번호의 범위를 분할하여 제 2의 복수의 프로세서에 할당하는 단계와,
상기 제 2의 복수의 프로세서 중의 각 프로세서에 있어서, 상기 항목값 번호의 순으로, 상기 항목값 번호가 일치하는 범위내에서는 상기 레코드 번호배열의 부분의 순서에 따라, 상기 할당된 항목값 번호의 각각의 출현횟수를 누계수로 변환하는 단계와,
상기 제 1의 복수의 프로세서 중의 각 프로세서에 있어서, 상기 할당된 레코드 번호배열의 부분에 포함되는 레코드에 대응된 상기 항목값 번호의 누계수를 포인터로서 이용하여, 상기 할당된 상기 레코드 번호배열의 부분에 포함되는 레코드 번호를 또 다른 레코드 번호배열에 저장하는 단계를 포함한다.
상기 정보처리방법은, 항목값 번호의 출현횟수의 카운트 처리의 병렬화, 출현횟수로부터 누계수로의 변환처리의 병렬화 및 또 다른 레코드 번호배열의 작성처리의 병렬화를 달성한다. 따라서, 본 발명은, 카운팅 정렬(counting sort)의 기술을 공유 메모리형 멀티 프로세서 환경에 적합하도록 확장시킴으로써, 대규모의 표형식 데이터를 공유 메모리형 멀티 프로세서 시스템에 의해 병렬정렬할 수 있다. 한편, 멀티 프로세서 시스템을 구성하는 복수의 프로세서 중, 임의의 제 1의 복수의 프로세서가 레코드 번호배열의 각각의 부분을 담당하고, 임의의 제 2의 복수의 프로세서가 항목값 번호의 범위의 각각의 부분을 담당한다. 제 1의 복수의 개수와 제 2의 복수의 개수는 멀티 프로세서 시스템을 구성하는 프로세서 전체의 개수여도 되고, 그 일부여도 된다는 점에 주의할 필요가 있다.
또한, 본 발명의 정보처리방법은, 항목값 번호에 관하여 기수정렬의 사고방식을 도입함으로써, 대규모의 표형식 데이터를 공유 메모리형 멀티 프로세서 시스템에서 다단계로 병렬정렬할 수 있다. 예를 들어, 항목값 번호배열의 사이즈가 클 경우에는, 항목값 번호배열을 압축하여 이용할 수 있으면 효율적인 처리가 가능하다. 이를 위해, 본 발명에 의한 정보처리방법은,
상기 항목값 번호의 범위에 따라서 상기 항목값 번호의 기수를 설정하는 단계와,
상기 기수로 표현된 상기 항목값 번호의 최하위 자릿수로부터 최상위 자릿수까지 순서대로 현재의 자릿수에 관해, 1회째에는 상기 레코드 번호배열을 현재의 레코드 번호배열로 하고, 2회째 이후에는 또 다른 레코드 번호배열을 현재의 레코드 번호배열로 하여, 정렬처리를 반복하는 단계를 포함한다. 이로써, 최하위 자릿수로부터 최상위 자릿수까지 순서대로 항목값 번호의 자릿수마다 병렬정렬처리가 이루어진다. 상기 정렬처리는,
상기 현재의 레코드 번호배열을 분할하여 제 1의 복수의 프로세서에 할당하는 단계와,
상기 제 1의 복수의 프로세서 중의 각 프로세서에 있어서, 상기 할당된 레코드 번호배열의 부분에 포함되는 레코드에 대응된 항목값 번호의 현재의 자릿수 값의 출현횟수를 카운트하는 단계와,
상기 항목값 번호의 현재 자릿수 값의 범위를 분할하여 제 2의 복수의 프로세서에 할당하는 단계와,
상기 제 2의 복수의 프로세서 중의 각 프로세서에 있어서, 상기 항목값 번호의 현재 자릿수 값의 순으로, 상기 항목값 번호의 현재 자릿수 값이 일치하는 범위내에서는 상기 레코드 번호배열의 부분의 순서에 따라, 상기 할당된 항목값 번호의 현재 자릿수 값의 각각의 출현횟수를 누계수로 변환하는 단계와,
상기 제 1의 복수의 프로세서 중의 각 프로세서에 있어서, 상기 할당된 레코드 번호배열의 부분에 포함되는 레코드에 대응된 상기 항목값 번호의 현재 자릿수 값의 누계수를 포인터로서 이용하여, 상기 할당된 상기 레코드 번호배열의 부분에 포함되는 레코드 번호를 또 다른 레코드 번호배열에 저장하는 단계를 포함한다.
본 발명에 따르면, 항목값 번호의 최하위 자릿수로부터 최상위 자릿수의 순으로 현재의 자릿수에 관한 정렬처리가 반복되므로, 기수정렬의 사고방식에 따라 항목값 번호에 관한 정렬이 실현된다. 따라서, 대규모의 표형식 데이터를 공유 메모리형 멀티 프로세서 시스템에 있어서 병렬정렬하는 것이 가능하다.
상기 다단계 병렬정렬에서는, 항목값 번호의 현재 자릿수 값의 각각의 출현횟수를 누계수로 변환하는 단계는 제 2의 복수의 프로세서에 의해 병렬로 실행된다. 그러나, 이 단계는 복수의 프로세서에 의해 병렬로 실행하지 않더라도 고속으로 실행할 수 있는 경우가 있다. 왜냐하면, 이 단계의 처리는, 순차적(sequential)으로 이루어지므로, 캐시 히트율이 높기 때문이다. 이를 위해, 본 발명에 의한 정보처리방법은,
상기 항목값 번호의 범위에 따라서 상기 항목값 번호의 기수를 설정하는 단계와,
상기 기수로 표현된 상기 항목값 번호의 최하위 자릿수로부터 최상위 자릿수까지 순서대로 현재의 자릿수에 관해, 1회째에는 상기 레코드 번호배열을 현재의 레코드 번호배열로 하고, 2회째 이후에는 또 다른 레코드 번호배열을 현재의 레코드 번호배열로 하여, 정렬처리를 반복하는 단계를 포함하고,
상기 정렬처리가,
상기 현재의 레코드 번호배열을 분할하여 상기 복수의 프로세서에 할당하는 단계와,
각 프로세서에 있어서, 상기 할당된 레코드 번호배열의 부분에 포함되는 레코드에 대응된 항목값 번호의 현재 자릿수 값의 출현횟수를 카운트하는 단계와,
적어도 1대의 프로세서에 있어서, 상기 항목값 번호의 현재 자릿수 값의 순으로, 상기 항목값 번호의 현재 자릿수 값이 일치하는 범위내에서는 상기 레코드 번호배열의 부분의 순서에 따라서, 상기 할당된 항목값 번호의 현재 자릿수 값의 각각의 출현횟수를 누계수로 변환하는 단계와,
상기 각 프로세서에 있어서, 상기 할당된 레코드 번호배열의 부분에 포함되는 레코드에 대응된 상기 항목값 번호의 현재 자릿수 값의 누계수를 포인터로서 이용하여, 상기 할당된 상기 레코드 번호배열의 부분에 포함되는 레코드 번호를 또 다른 레코드 번호배열에 저장하는 단계를 포함한다.
본 정보처리방법에서는, 항목값 번호의 현재 자릿수의 범위는 복수의 프로세서로 분할되지 않고, 적어도 1대, 바람직하게는 1대의 프로세서가, 항목값 번호의 현재 자릿수값의 출현횟수를 순서대로 누계수로 변환한다. 이 경우에도, 항목값 번호의 최하위 자릿수로부터 최상위 자릿수로 순서대로 현재의 자릿수에 관한 정렬처리가 반복되므로, 기수정렬의 사고방식에 따라 항목값 번호에 관한 정렬이 실현된다. 따라서, 대규모의 표형식 데이터를 공유 메모리형 멀티 프로세서 시스템에 의해 병렬정렬하는 것이 가능하다.
또한, 본 발명은 상기 목적을 달성하기 위하여, 표형식 데이터 레코드의 레코드 번호가 소정의 레코드 순서에 따라 저장된 레코드 번호배열, 표형식 데이터의 레코드의 소정 항목의 항목값에 대응하는 항목값 번호가 레코드 번호에 따라 저장된 항목값 번호배열, 및 표형식 데이터의 항목값이 해당 항목값에 대응하는 항목값 번호의 순서에 따라 저장된 항목값 배열을 기억하는 공유 메모리와,
상기 공유 메모리에 액세스 가능한 복수의 프로세서를 구비한 공유 메모리형 멀티 프로세서 시스템에 있어서,
상기 레코드 번호배열을 분할하여 상기 복수의 프로세서에 할당하는 단계와, 상기 복수의 프로세서 중의 각 프로세서에 있어서, 상기 할당된 레코드 번호배열의 부분에 포함되는 레코드의 순서를 해당 레코드에 대응된 항목값 번호에 따라 바꾸어, 해당 레코드의 레코드 번호를 또 다른 레코드 번호배열에 저장하는 단계를 포함하는, 레코드의 소정 항목의 항목값에 따라서 레코드 순서를 바꾸어 나열하는 정보처리방법을 제공한다.
더욱이, 본 발명은 상기 목적을 달성하기 위하여, 표형식 데이터의 레코드의 레코드 번호가 소정의 레코드 순서에 따라 저장된 레코드 번호배열, 표형식 데이터의 레코드의 소정 항목의 항목값에 대응하는 항목값 번호가 레코드 번호에 따라 저장된 항목값 번호배열, 및 표형식 데이터의 항목값이 해당 항목값에 대응하는 항목값 번호의 순서에 따라 저장된 항목값 배열을 기억하는 공유 메모리와,
상기 공유 메모리에 액세스 가능한 복수의 프로세서를 구비한 공유 메모리형 멀티 프로세서 시스템에 있어서,
상기 항목값 번호의 범위에 따라서 상기 항목값 번호의 기수를 설정하는 단계와,
상기 기수로 표현된 상기 항목값 번호의 상위 자릿수에 관하여 상기 레코드 번호배열 중의 레코드 번호를 바꾸어 나열하여, 상기 항목값 번호의 상위 자릿수 값의 순으로 구분된 중간적인 레코드 번호배열을 생성하는 단계와,
상기 중간적인 레코드 번호배열의 구분마다 프로세서를 할당하는 단계와,
상기 구분마다 할당된 각 프로세서가, 상기 중간적인 레코드 번호배열의 상기 구분내의 레코드 번호를 상기 항목값 번호의 하위 자릿수 값의 순으로 바꾸어 나열하는 단계를 포함하는, 레코드의 소정 항목의 항목값에 따라서 레코드 순서를 바꾸어 나열하는 정보처리방법을 제공한다.
본 발명의 제 2 양태는, 공유 메모리와 상기 공유 메모리에 액세스 가능한 복수의 프로세서를 구비하고, 상기 본 발명의 정보처리방법을 실시하는 공유 메모리형 멀티 프로세서 시스템이다. 본 발명의 공유 메모리형 멀티 프로세서 시스템에 있어서, 상기 공유 메모리는, 표형식 데이터의 레코드의 레코드 번호가 소정의 레코드 순서에 따라 저장된 레코드 번호배열, 표형식 데이터의 레코드의 소정 항목의 항목값에 대응하는 항목값 번호가 레코드 번호에 따라 저장된 항목값 번호배열, 및 표형식 데이터의 항목값이 해당 항목값에 대응하는 항목값 번호의 순서에 따라 저장된 항목값 배열을 기억한다. 이로써, 본 발명의 공유 메모리형 멀티 프로세서 시스템은 블럭정보에 근거하는 데이터 관리기구를 이용할 수 있다.
각 프로세서는,
상기 레코드 번호배열 중 자기(自) 프로세서가 담당하는 부분을 결정하는 수단과,
상기 레코드 번호배열의 부분에 포함되는 레코드에 대응된 항목값 번호의 출현횟수를 카운트하는 수단과,
상기 항목값 번호의 범위 중 자기 프로세서가 담당하는 범위를 정하는 수단과,
상기 항목값 번호의 순으로, 상기 항목값 번호가 일치하는 범위내에서는 상기 레코드 번호배열의 부분의 순서에 따라, 상기 담당하는 범위내의 항목값 번호의 각각의 출현횟수를 누계수로 변환하는 수단과,
상기 레코드 번호배열의 부분에 포함되는 레코드에 대응된 상기 항목값 번호의 누계수를 포인터로서 이용하여, 상기 레코드 번호배열의 부분에 포함되는 레코드 번호를 또 다른 레코드 번호배열에 저장하는 수단을 포함한다.
각 프로세서는 병렬로 동작할 수 있기 때문에, 출현횟수의 카운트의 병렬화, 출현횟수의 누계수로의 변환의 병렬화, 및 또 다른 레코드 번호배열의 작성의 병렬화가 실현된다.
항목값 번호의 출현횟수를 누계수로 변환할 때에, 얻어진 누계수를 항목값 번호의 순으로 전파시킬 필요가 있다. 이를 위해, 상기 항목값 번호의 범위 중 선행하는 범위를 담당하는 프로세서의 상기 출현횟수를 누계수로 변환하는 수단에 의해 얻어진 상기 누계수가, 직후의 범위를 담당하는 프로세서의 상기 출현횟수를 누계수로 변환하는 수단에 의해 참조된다.
또한, 본 발명의 공유 메모리형 멀티 프로세서 시스템은, 항목값 번호에 관하여 기수정렬의 사고방식을 도입함으로써, 대규모의 표형식 데이터를 다단계로 병렬정렬하기 위하여, 각 프로세서가,
상기 항목값 번호의 범위에 따라서 상기 항목값 번호의 기수를 설정하는 수단과,
상기 기수로 표현된 상기 항목값 번호의 최하위 자릿수로부터 최상위 자릿수까지 순서대로 현재의 자릿수를 설정하고, 1회째에는 상기 레코드 번호배열을 현재의 레코드 번호배열로서, 2회째 이후에는 또 다른 레코드 번호배열을 현재의 레코드 번호배열로서 설정하여, 정렬처리를 반복하는 수단을 포함한다. 이로써, 항목값 번호의 최하위 자릿수로부터 최상위 자릿수까지의 자릿수마다 병렬정렬처리가 순서대로 실행된다. 더욱이 상기 정렬처리를 반복하는 수단은,
상기 레코드 번호배열 중 자기 프로세서가 담당하는 부분을 결정하는 수단과,
상기 레코드 번호배열의 부분에 포함되는 레코드에 대응된 항목값 번호의 현재 자릿수 값의 출현횟수를 카운트하는 수단과,
상기 항목값 번호의 현재 자릿수 값의 범위 중 자기 프로세서가 담당하는 범위를 정하는 수단과,
상기 항목값 번호의 현재 자릿수 값의 순으로, 상기 항목값 번호의 현재 자릿수 값이 일치하는 범위내에서는 상기 레코드 번호배열의 부분의 순서에 따라, 상기 담당하는 범위내의 항목값 번호의 현재 자릿수 값의 각각의 출현횟수를 누계수로 변환하는 수단과,
상기 레코드 번호배열의 부분에 포함되는 레코드에 대응된 상기 항목값 번호의 현재 자릿수 값의 누계수를 포인터로서 이용하여, 상기 레코드 번호배열의 부분에 포함되는 레코드 번호를 또 다른 레코드 번호배열에 저장하는 수단을 포함한다. 이로써, 항목값 번호의 자릿수마다 병렬정렬처리가 실현된다. 본 발명에 따르면, 항목값 번호의 자릿수마다의 정렬처리에 있어서, 복수의 프로세서가, 출현횟수의 카운트, 출현횟수의 누계수로의 변환, 및 또 다른 레코드 번호배열의 작성을 병렬로 실행한다.
또한, 출현횟수의 누계수로의 변환을 복수의 프로세서에서 분담하여 수행하기 때문에, 본 발명에 있어서, 상기 항목값 번호의 현재 자릿수의 범위 중 선행하는 범위를 담당하는 프로세서의 상기 출현횟수를 누계수로 변환하는 수단에 의해 얻어진 상기 누계수는, 직후의 범위를 담당하는 프로세서의 상기 출현횟수를 누계수로 변환하는 수단에 의해 참조된다.
더욱이 대규모의 표형식 데이터를 다단계로 병렬정렬하는 본 발명에 의한 공유 메모리형 멀티 프로세서 시스템은, 현재 자릿수 값의 각각의 출현횟수에 대한 누계수화를 적어도 1대, 바람직하게는 1대의 프로세서에 의해 실행할 수도 있다. 이를 위해, 본 발명에 따른 공유 메모리형 멀티 프로세서 시스템에 있어서, 각 프로세서는, 상기 항목값 번호의 범위에 따라서 상기 항목값 번호의 기수를 설정하는 수단과, 상기 기수로 표현된 상기 항목값 번호의 최하위 자릿수로부터 최상위 자릿수까지 순서대로 현재의 자릿수를 설정하며, 1회째에는 상기 레코드 번호배열을 현재의 레코드 번호배열로서, 2회째 이후에는 또 다른 레코드 번호배열을 현재의 레코드 번호배열로서 설정하여, 정렬처리를 반복하는 수단을 포함한다.
각 프로세서의 상기 정렬처리를 반복하는 수단은, 상기 레코드 번호배열 중 자기 프로세서가 담당하는 부분을 결정하는 수단과, 상기 레코드 번호배열의 부분에 포함되는 레코드에 대응된 항목값 번호의 현재 자릿수 값의 출현횟수를 카운트하는 수단을 포함한다.
더욱이, 적어도 1대의 프로세서의 상기 정렬처리를 반복하는 수단에는, 상기 항목값 번호의 현재 자릿수 값의 순으로, 상기 항목값 번호의 현재 자릿수 값이 일치하는 범위내에서는 상기 레코드 번호배열의 부분의 순서에 따라, 상기 항목값 번호의 현재 자릿수 값의 각각의 출현횟수를 누계수로 변환하는 수단이 포함된다.
더욱이, 상기 정렬처리를 반복하는 수단에는, 상기 레코드 번호배열의 부분에 포함되는 레코드에 대응된 상기 항목값 번호의 현재 자릿수 값의 누계수를 포인터로서 이용하여, 상기 레코드 번호배열의 부분에 포함되는 레코드 번호를 또 다른 레코드 번호배열에 저장하는 수단이 포함된다.
본 발명에 따르면, 각 프로세서는, 항목값 번호의 현재 자릿수 값의 범위중 자기 프로세서가 담당하는 범위를 정할 필요가 없어져, 복수의 프로세서에서 출현횟수를 누계수로 변환하는 처리를 분담하지 않아도 되므로, 공유 메모리형 멀티 프로세서 시스템의 구성이 간단해진다.
더욱이, 본 발명의 제 3 양태에 따르면, 이러한 정보처리방법을 실현시키기 위한 프로그램이 제공된다.
더욱이, 본 발명의 제 4 양태에 따르면, 이러한 프로그램이 기록된 기억매체가 제공된다.
도 1은 본 발명의 실시형태에 관한 컴퓨터 시스템의 개요도이다.
도 2는 데이터 관리기구를 설명하기 위한 표형식 데이터의 일례를 나타내는 도면이다.
도 3은 본 발명의 실시형태에 관한 데이터 관리기구의 설명도이다.
도 4a, 4b는 본 발명의 실시형태에 관한 정렬대상의 데이터 구조에 대한 설명도이다.
도 5는 본 발명의 실시형태에 관한 병렬정렬방법의 플로우 챠트이다.
도 6은 본 발명의 실시형태에 관한 병렬정렬방법의 초기화 단계에 대한 설명도이다.
도 7a, 7b는 본 발명의 실시형태에 관한 병렬정렬방법의 카운트 업 단계의 설명도(그 1)이다.
도 8a, 8b는 본 발명의 실시형태에 관한 병렬정렬방법의 카운트 업 단계의 설명도(그 2)이다.
도 9a, 9b는 본 발명의 실시형태에 관한 병렬정렬방법의 카운트 업 단계의 설명도(그 3)이다.
도 10a, 10b는 본 발명의 실시형태에 관한 오름차순의 병렬정렬방법의 누계수화 단계에 대한 설명도이다.
도 11a, 11b는 본 발명의 실시형태에 관한 오름차순의 병렬정렬방법의 전송단계에 대한 설명도(그 1)이다.
도 12a, 12b는 본 발명의 실시형태에 관한 오름차순의 병렬정렬방법의 전송단계에 대한 설명도(그 2)이다.
도 13a, 13b는 본 발명의 실시형태에 관한 오름차순의 병렬정렬방법의 전송단계에 대한 설명도(그 3)이다.
도 14a~14c는, 도 4b에 도시된 데이터 구조에 대하여 본 발명의 실시형태에 관한 오름차순의 병렬정렬방법을 적용한 결과를 나타내는 도면(그 1)이다.
도 15a, 15b는, 도 4b에 도시된 데이터 구조에 대하여 본 발명의 실시형태에 관한 오름차순의 병렬정렬방법을 적용한 결과를 나타내는 도면(그 2)이다.
도 16a, 16b는 본 발명의 실시형태에 관한 내림차순의 병렬정렬방법의 누계수화 단계에 대한 설명도이다.
도 17a, 17b는 본 발명의 실시형태에 관한 내림차순의 병렬정렬방법의 전송단계에 대한 설명도(그 1)이다.
도 18a, 18b는 본 발명의 실시형태에 관한 내림차순의 병렬정렬방법의 전송단계에 대한 설명도(그 2)이다.
도 19a, 19b는 본 발명의 실시형태에 관한 내림차순의 병렬정렬방법의 전송단계에 대한 설명도(그 3)이다.
도 20a, 20b는 도 4b에 도시된 데이터 구조에 대하여 본 발명의 실시형태에 관한 내림차순의 병렬정렬방법을 적용한 결과를 나타내는 도면(그 1)이다.
도 21a~21c는, 도 4b에 도시된 데이터 구조에 대하여 본 발명의 실시형태에 관한 내림차순의 병렬정렬방법을 적용한 결과를 나타내는 도면(그 2)이다.
도 22는 본 발명의 실시형태에 관한 다단계 병렬정렬방법의 플로우 챠트이다.
도 23a, 23b는 본 발명의 실시형태에 관한 다단계 병렬정렬방법의 제 1단계의 카운트 업 단계에 대한 설명도(그 1)이다.
도 24a, 24b는 본 발명의 실시형태에 관한 다단계 병렬정렬방법의 제 1단계의 카운트 업 단계에 대한 설명도(그 2)이다.
도 25a, 25b는 본 발명의 실시형태에 관한 다단계 병렬정렬방법의 제 1단계의 카운트 업 단계에 대한 설명도(그 3)이다.
도 26a, 26b는 본 발명의 실시형태에 관한 오름차순의 다단계 병렬정렬방법의 제 1단계의 누계수화 단계에 대한 설명도이다.
도 27a, 27b는 본 발명의 실시형태에 관한 오름차순의 다단계 병렬정렬방법의 제 1단계의 전송단계에 대한 설명도(그 1)이다.
도 28a, 28b는 본 발명의 실시형태에 관한 오름차순의 다단계 병렬정렬방법의 제 1단계의 전송단계에 대한 설명도(그 2)이다.
도 29a, 29b는 본 발명의 실시형태에 관한 오름차순의 다단계 병렬정렬방법의 제 1단계의 전송단계에 대한 설명도(그 3)이다.
도 30은 본 발명의 실시형태에 관한 다단계 병렬정렬방법의 제 2단계의 초기화 단계에 대한 설명도이다.
도 31a, 31b는 본 발명의 실시형태에 관한 다단계 병렬정렬방법의 제 2단계의 카운트 업 단계에 대한 설명도(그 1)이다.
도 32a, 32b는 본 발명의 실시형태에 관한 다단계 병렬정렬방법의 제 2단계의 카운트 업 단계에 대한 설명도(그 2)이다.
도 33a, 33b는 본 발명의 실시형태에 관한 다단계 병렬정렬방법의 제 2단계의 카운트 업 단계에 대한 설명도(그 3)이다.
도 34는 본 발명의 실시형태에 관한 오름차순의 다단계 병렬정렬방법의 제 2단계의 누계수화 단계에 대한 설명도이다.
도 35a, 35b는 본 발명의 실시형태에 관한 오름차순의 다단계 병렬정렬방법의 제 2단계의 전송단계에 대한 설명도(그 1)이다.
도 36a, 36b는 본 발명의 실시형태에 관한 오름차순의 다단계 병렬정렬방법의 제 2단계의 전송단계에 대한 설명도(그 2)이다.
도 37a, 37b는 본 발명의 실시형태에 관한 오름차순의 다단계 병렬정렬방법의 제 2단계의 전송단계에 대한 설명도(그 3)이다.
도 38a~38c는 도 4b에 도시된 데이터 구조에 대하여 본 발명의 실시형태에 관한 오름차순의 다단계 병렬정렬방법을 적용한 결과를 나타내는 도면(그 1)이다.
도 39a, 39b는 도 4b에 나타낸 데이터 구조에 대하여 본 발명의 실시형태에 관한 오름차순의 다단계 병렬정렬방법을 적용한 결과를 나타내는 도면(그 2)이다.
도 40은 다단계 정렬을 설명하기 위한 데이터 구조도이다.
도 41a~41d는 다단계 정렬의 제 1단계의 카운트 업 및 누계수화에 대한 설명도이다.
도 42a, 42b는 다단계 정렬의 제 1단계의 레코드번호 전송에 관한 설명도이다.
도 43은 다단계 정렬의 제 1단계의 레코드번호 전송결과에 대한 설명도이다.
도 44는 다단계 정렬의 제 2단계의 초기 상태를 나타내는 도면이다.
도 45a~45c는 다단계 정렬의 제 2단계의 카운트 업 및 누계수화에 대한 설명도이다.
도 46a, 46b는 다단계 정렬의 제 2단계의 레코드번호 전송에 관한 설명도이다.
* 도면의 주요 부분에 대한 부호의 설명 *
10 : 컴퓨터 시스템 12-1, 12-2, ???, 12-p : CPU
14 : 공유 메모리 16 : ROM
18 : 고정기억장치 20 : CD-ROM 드라이버
22 : I/F 24 : 입력장치
26 : 표시장치
이하, 첨부된 도면을 참조하여 본 발명의 여러가지 실시예를 설명한다.
[컴퓨터 시스템 구성]
도 1은 본 발명에 의한 레코드의 소정 항목의 항목값에 따라서 레코드 순서를 바꾸어 나열하는 정보처리방법을 실시하는 컴퓨터 시스템의 일실시예를 나타낸 개략도이다. 도 1에 나타낸 바와 같이, 상기 컴퓨터 시스템(10)은, 프로그램을 실행함으로써 시스템 전체 및 개개의 구성부분을 제어하는 p대의 프로세서(CPU ; 12- 1, 12- 2, ...12-p), 워크 데이터 등을 기억하는 공유 메모리, 예를 들면, RAM(Random Access Memory ; 14), 프로그램 등을 기억하는 ROM(Read Only Memory ; 16), 하드 디스크 등의 고정기억매체(18), CD-ROM(19)을 액세스하기 위한 CD-ROM 드라이버(20), CD-ROM 드라이버(20)나 외부 네트워크(도시생략)에 접속된 외부단자와의 사이에 설치된 인터페이스(I/F ; 22), 키보드나 마우스로 이루어진 입력장치(24), CRT 표시장치(26)를 구비하고 있다. CPU(12), RAM(14), ROM(16), 외부기억매체(18), I/F(22), 입력장치(24) 및 표시장치(26)는, 버스(28)를 통해 서로 접속되어 있다. 도시되어 있지는 않지만, 각 CPU는 고유한 로컬 메모리를 구비하고 있어도 된다.
본 실시형태에 관한, 레코드의 소정 항목의 항목값에 따라서 레코드 순서를 바꾸어 나열하는 프로그램은, CD-ROM(19)에 수용되어 CD-ROM 드라이버(20)에 의해 판독되어도 되고, ROM(16)에 미리 기억되어 있어도 된다. 또한, 일단 CD-ROM(19)에서 판독한 것을, 외부기억매체(18)의 소정의 영역에 기억시켜 두어도 된다. 혹은, 상기 프로그램은, 네트워크(도시생략), 외부단자 및 I/F(22)를 거쳐 외부로부터 공급되는 것이어도 된다.
또한, 본 발명의 실시형태에 관한 공유 메모리형 멀티 프로세서 시스템은, 컴퓨터 시스템(10)에 레코드의 소정 항목의 항목값에 따라서 레코드 순서를 바꾸어 나열하는 프로그램을 실행시킴으로써 실현된다.
[정보블럭에 근거하는 데이터 관리기구]
도 2는 데이터 관리기구를 설명하기 위한 표형식 데이터의 일례를 나타낸 도면이다. 상기 표형식 데이터는, 상술한 국제공개 제WO00/10103호에 제안된 데이터 관리기구를 이용함으로써, 컴퓨터 내에서는 도 3에 나타낸 바와 같은 데이터 구조 로서 기억된다.
도 3에 나타낸 바와 같이, 표형식 데이터의 각 레코드의 배열순 번호와, 내부 데이터의 배열순 번호를 대응짓는 배열(301 ; 이하, 이 배열을 「OrdSet」이라 약기함)에는, 표형식의 레코드마다 내부 데이터의 배열순 번호가 값으로서 배치된다. 본 실시예에서는 모든 표형식 데이터가 내부 데이터로서 표시되므로, 표형식 데이터의 레코드 번호와 내부 데이터의 배열순 번호는 일치한다.
예를 들어, 성별에 관해서는, 표형식 데이터의 레코드 0에 대응하는 내부 데이터의 배열순 번호는, 배열(OrdSet ; 301)로부터 0임을 알 수 있다. 배열순 번호가 0인 레코드에 관한 실제 성별의 값, 즉 「남자」또는 「여자」는, 실제의 값이 소정의 순서에 따라 정렬된 값 리스트(303 ; 이하, 값 리스트를 「VL」이라 약기함)로의 포인터 배열(302 ; 이하, 포인터 배열을 「VNo」라 약기함)을 참조함으로써 취득할 수 있다. 포인터 배열(302)은, 배열(OrdSet ; 301)에 저장되어 있는 배열순 번호의 순서에 따라, 실제의 값 리스트(303)내의 요소를 지시하여 나타내는 포인터를 저장하고 있다. 이로써, 표형식 데이터의 레코드 0에 대응하는 성별의 항목값은, (1)배열(OrdSet ; 301)로부터 레코드 0에 대응하는 배열순 번호 0을 추출하고, (2)값 리스트에 대한 포인터 배열(302)로부터 배열순 번호 0에 대응하는 요소 1을 추출하며, (3)값 리스트(303)으로부터, 값 리스트에 대한 포인터 배열(302)에서 추출된 요소 1에 의해 지시되는 요소 「여자」를 추출함으로써 취득할 수 있다.
다른 레코드에 대해서도, 또한, 연령 및 신장에 관해서도 마찬가지로 항목값을 취득할 수 있다.
이와 같이 표형식 데이터는 값 리스트(VL)와, 값 리스트에 대한 포인터 배열(VNo)의 조합에 의해 표현되며, 이 조합을 특히 「정보블럭」이라 부른다. 도 3에는, 성별, 연령 및 신장에 관한 정보블럭이 각각 정보블럭(308, 309 및 310)으로서 나타내어져 있다.
단일 컴퓨터가, 단일 메모리(물리적으로는 복수여도 되지만, 단일 어드레스 공간에 배치되어 액세스된다는 의미에서 단일 메모리)라면, 해당 메모리에, 순서집합의 배열(OrdSet), 각 정보블럭을 구성하는 값 리스트(VL) 및 포인터 배열(VNo)을 기억시켜 두면 된다. 그러나, 대량의 레코드를 보유하기 위해서는, 그 크기에 따라 메모리 용량도 커지기 때문에, 이러한 대량의 레코드를 병렬처리할 수 있는 것이 바람직하다.
따라서, 본 실시형태에서는, 복수의 프로세서가 공유 메모리에 기억된 레코드의 데이터에 액세스하여, 복수의 프로세서의 병렬처리에 의해 고속 정렬을 실현한다.
[병렬정렬]
다음으로, 본 발명의 실시형태에 관한, 공유 메모리형 멀티 프로세서 시스템에 있어서 레코드의 소정 항목의 항목값에 따라 레코드 순서를 바꾸어 나열하는 정보처리방법, 즉, 병렬정렬방법을 설명한다. 도 4a, 4b는 정렬대상이 되는 데이터 구조를 나타낸 도면이다. 도 4a에 나타낸 표형식 데이터(401)는, 정렬대상이 되는 데이터 구조를 행렬형식으로 알기 쉽게 표현한 것으로서, 레코드 0에서 레코드 19까지의 20개의 레코드를 포함하고, 각 레코드는 연령과 지역이라는 2개의 항목에 의해 구성된다. 도 4b에 나타낸 데이터 구조(402)는, 컴퓨터 시스템(10)의 공유 메모리(14)에 기억된 데이터 구조를 나타낸다. 도 4b의 레코드 번호배열(OrdSet : 순서집합을 의미함 ; 403)은 레코드 번호 0에서 19를 소정의 순서에 따라 저장하는 배열이다. 본 실시예에서는, 레코드 번호는 0에서 19의 순으로 저장되어 있다. 연령과 지역의 데이터는, 각각 정보블럭(404)과 정보블럭(405)의 형태로 기억된다. 연령의 정보블럭(404)은, 연령의 항목값에 대응하는 항목값 번호가 레코드 번호의 순서에 따라 저장된 항목값 번호배열(이하에서는, VNo : 값 번호라고도 부름 ; 406)과, 연령의 항목값이 해당 항목값에 대응하는 항목값 번호의 순서에 따라 저장된 항목값 배열(이하에서는, VL : 값 리스트라고도 부름 ; 407)에 의해 구성된다. 마찬가지로, 지역의 정보블럭(405)은, 지역의 항목값에 대응하는 항목값 번호가 레코드 번호의 순서에 따라 저장된 항목값 번호배열(408)과, 지역의 항목값이 해당 항목값에 대응하는 항목번호의 순서에 따라 저장된 항목값 배열(409)에 의해 구성된다. 컴퓨터 시스템(10)의 p대의 프로세서(12-1, ???, 12-p)는, 공유 메모리(14) 상의 이들 데이터에 액세스할 수 있다.
도 5는, 본 발명의 실시형태에 관한 병렬정렬방법의 플로우차트이다. 본 실시형태에서는 CPU의 수는 4대로 하고, 모든 CPU가 병렬로 동작하는 예를 생각한다. 시스템내의 CPU의 총수 및 병렬로 동작하는 CPU의 수는 본 예로 한정되지 않는다는 점에 주의해야 한다. 또한, 이하에서는, 설명의 편의상, 연령의 항목에 관하여 연령의 오름차순으로 정렬하는 경우를 상정한다. 또한, 연령의 항목값 배열의 요소는 연령의 오름차순으로 배열되어 있다. 병렬정렬방법은, 단계 501로부터 단계 505의 5단계에 의해 구성된다.
단계 501 : 레코드 번호배열을 4분할하여 각 부분을 4대의 CPU에 할당한다 (도 6 참조).
단계 502 : 각 CPU는, 할당된 레코드 번호배열의 부분에 포함되는 레코드에 대응된 항목값 번호의 출현횟수를 병렬적으로 카운트한다(도 7a, 7b 내지 도 9a, 9b 참조).
단계 503 : 항목값 번호의 범위, 즉, 항목값 번호 0에서 항목값 번호 4까지의 5개의 값을 4대의 CPU에 할당한다. 예를 들면, CPU-0은 항목값 번호 0 및 1이 할당되며, CPU-1에서 CPU-3은 항목값 번호 2에서 항목값 번호 4까지가 하나씩 할당된다(도 10a 참조).
단계 504 : 4대의 CPU는, 각각 항목값 번호의 순으로, 항목값 번호가 일치하는 범위내에서는 레코드 번호배열의 부분의 순서에 따라, 할당된 항목값 번호의 각각의 출현횟수를 누계수로 변환한다 (도 10a 및 10b 참조).
단계 505: 4대의 CPU는, 할당된 레코드 번호배열의 부분에 포함되는 레코드에 대응된 항목값 번호의 누계수를 포인터로서 이용하여, 할당된 레코드 번호배열의 부분에 포함되는 레코드 번호를 또 다른 레코드 번호배열에 저장한다 (도 11a, 11b 내지 도 13a, 13b 참조).
다음으로 각 단계를 상세히 설명한다.
도 6은 병렬정렬방법의 초기화 단계 501의 설명도이다. CPU-0으로부터 CPU-3의 4대의 CPU에는, 레코드 번호배열의 선두부터 순서대로 4 레코드씩 할당된다. 예를 들면, CPU-0은, 레코드 번호배열의 선두인 OrdSet[0]으로부터 5번째의 OrdSet[4]까지 담당한다(OrdSet[x]의 x는 배열(OrdSet)의 첨자를 의미함). 또한, 공유 메모리(14)에는, 항목값 번호의 출현횟수를 카운트하기 위한 카운트 배열 Count-0, Count-1, Count-2 및 Count-3이 마련되어 각 CPU에 관련지어진다. Count 배열의 개수는 CPU의 수와 동수이며, Count 배열의 배열 사이즈는 VL배열의 사이즈와 동일하다. Count 배열의 요소는 0으로 초기화된다.
도 7a, 7b 내지 도 9a, 9b는 병렬정렬방법의 카운트 업 단계 502의 설명도이다. 도 7a의 서브 단계 1에서는, 예를 들어 CPU-0은, OrdSet[0]의 값 0을 판독하고, 판독된 값 0을 첨자로 하여 VNo[0]의 값 1을 판독하며, 이 값 1을 첨자로 하여 Count-0[1]의 값 0을 1로 인크리먼트(increment)한다. 마찬가지로, CPU-1은, OrdSet[5]의 값 5를 판독하고, 판독된 값 5를 첨자로 하여 VNo[5]의 값 2를 판독하며, 이 값 2를 첨자로 하여 Count-1[2]의 값 0을 1로 인크리먼트한다. CPU-2 및 CPU-3에 대해서도 마찬가지이다. 도 7b의 서브 단계 2에서는, 예를 들어 CPU-0은, OrdSet[1]의 값 1을 판독하고, 판독된 값 1을 첨자로 하여 VNo[1]의 값 3을 판독하며, 이 값 3을 첨자로 하여 Count-0[3]의 값 0을 1로 인크리먼트한다. CPU-1, CPU-2 및 CPU-3에 대해서도 마찬가지이다. 각 프로세서는, 도 8a 및 8b, 도 9a에 나타낸 바와 같이, 자기 프로세서가 담당하는 배열(OrdSet)의 각 요소를 판독하고, 그 요소를 첨자로 하여 배열(VNo)의 요소를 판독하며, 더욱이 그 판독된 요소를 첨자로 하여 대응하는 Count배열의 요소를 인크리먼트한다. 그 결과로서, 도 9b에 나타낸 바와 같은 카운트 업 결과를 얻을 수 있다. 도 9a, 9b의 배열 Count-0의 요소 Count-0[i]는, CPU-0이 담당한 배열(OrdSet)인 OrdSet[0]으로부터 OrdSet[4]의 범위내의 각 레코드에 대응하는 연령의 항목값 번호 i의 출현횟수를 나타낸다. 예를 들어 Count-0[0]은, CPU-0의 담당범위 내의 항목값 번호 0의 출현횟수가 1회인 것을 나타내고, Count-3[1]은 CPU-3의 담당범위 내의 항목값 번호 1의 출현횟수가 2회인 것을 나타낸다.
도 10a, 10b는 병렬정렬방법의 누계수화 단계 503 및 504의 설명도이다. 본 예에서는, 오름차순 정렬에 대응하여, 항목값 번호의 오름차순으로 누계수화를 실시한다. CPU-0은, 배열 Count의 1행째와 2행째(즉, 항목값 번호 0과 1)의 누계수화를 담당하고, CPU-1 내지 CPU-3은, 각각 배열 Count의 3 내지 5행째(즉, 항목값 번호 3 내지 5)의 누계수화를 담당한다. 도 10a에 나타낸 바와 같이, 누계수화는 배열 Count의 횡방향(즉, 첨자가 일치하는 행)을 우선으로 하여 이루어지며, 이어서, 선행하는 행의 누계수를 후속하는 행의 누계수에 가산함으로써 전체의 누계수가 결정된다. 또, 횡방향의 누계수화는, 각 CPU가 병렬로 실행할 수 있다는 점에 주의해야 한다.
일반적으로, i번째(0≤i≤p-1)의 CPU인 CPU-i가 카운트 업한 항목값 번호 j(0≤j≤q-1)의 카운트 값을 Count[i][j], 누계수를 Count'[i][j]와 같이 나타내면, 누계수화는 다음과 같이 기술할 수 있다.
Count'[0][0] = 0
Count'[i][0] = Count'[i-1][q-1] + Count[i-1][q] 단, i > 1
Count'[i][j] = Count'[i][j-1] + Count[i][j-1] 단, j > 1
이와 같이 누계수 연산에서는, 선행하는 행으로부터 다음 행으로 오프셋 Count'[i-1][q-1]을 전파시킬 필요가 있다. 따라서, 본 실시형태에서는, 누계수화의 연산을 CPU가 분담하여 수행하고 있지만, 1대의 프로세서를 선택하여 그 프로세서가 단독으로 누계수화를 수행해도 된다.
도 10b는 누계수화의 순서를 종방향으로 일렬로 나타낸 것이다. 예를 들면, 도 10b에 있어서, (1) Count-0:0의 행은, 배열 Count-0의 선두의 요소 Count-0[0]의 카운트 값 1이 누계수 0으로 변환되는 것을 나타낸다. 다시 말해,
1, 2, 2, 0, 2, 0, 2, 2, 0, 2, 0, 1, 1, 1, 0, 1, 1, 0, 1, 1
이라는 카운트 값의 계열을 누계수화하면,
0, 1, 3, 5, 5, 7, 7, 9, 11, 11, 13, 13, 14, 15, 16, 16, 17, 18, 18, 19가 된다.
도 11a, 11b 내지 도 13a, 13b는 레코드 번호를 또 다른 레코드 번호배열에 저장하는 전송단계 505에 대한 설명도이다. 전송단계에서 각 CPU는, 레코드 번호배열(OrdSet)로부터 자신이 담당하는 범위내의 레코드 번호를 판독하고, 그 다음에, 그 레코드 번호를 첨자로 하여 포인터 배열(VNo)로부터 항목값 번호를 판독하며, 더욱이 상기 항목값 번호를 첨자로 하여 자기 프로세서에 관련지어진 누계수화된 Count배열로부터 누계수치를 판독하여, 그 판독된 누계수치를 포인트(point)하여 또 다른 레코드 번호배열(OrdSet')에 레코드 번호를 저장하는 동시에, Count배열의 누계수치를 1씩 인크리먼트한다.
예를 들면, 도 11a의 서브 단계 1에서 CPU-0은, OrdSet[0]의 값 0(즉, 레코 드 번호 0)을 판독하고, 다음에 VNo[0]의 값 1을 판독하며, 더욱이 관련지어진 Count배열의 Count-0[1]의 값 5를 판독하고, OrdSet[5]에 레코드 번호 0을 설정하는 동시에, Count-0[1]의 값을 6에 인크리먼트한다. 이 레코드 번호의 전송처리는, 이하 동일하게, 도 11b의 서브 단계 2, 도 12a 및 12b의 서브 단계 3 및 4, 도 13a의 서브 단계 5와 같이 진행되어, 최종적으로 도 13b에 나타낸 바와 같은 또 다른 레코드 번호배열(OrdSet')을 얻을 수가 있다.
도 14a~14c 및 도 15a, 15b는, 도 4b에 나타낸 데이터 구조에 대하여 본 발명의 실시형태에 관한 병렬정렬방법을 적용시킨 결과를 나타낸 도면이다. 본 예에서는, 연령에 관한 오름차순 정렬을 실시하였으므로, 결과의 레코드 번호배열(OrdSet')에는, 연령의 항목값으로서 16세, 18세, 20세, 21세 및 23세를 갖는 레코드가 연령순으로 나열되어 있음을 알 수 있다. 또한, 연령이 일치하는 레코드의 순서는, 원래의 레코드 번호배열(OrdSet)중의 순서가 보존되어 있다.
상기의 병렬정렬방법은 연령에 관한 오름차순 정렬의 예에 대하여 설명하고 있으나, 이 병렬정렬방법은 연령에 관한 내림차순 정렬에도 마찬가지로 적용할 수 있다. 내림차순 정렬은 오름차순 정렬과 마찬가지로 이루어지지만, 누계수화의 순서가 오름차순 정렬과는 다르다. 도 16a, 16b는 본 발명의 실시형태에 관한 병렬(내림차순)정렬방법의 누계수화 단계를 설명하는 도면이다. 도 16a에 나타낸 바와 같이, 누계수화는 배열 Count의 횡방향(즉, 첨자가 일치하는 행)을 우선하여 실행되며, 그 다음에, 후방의 행의 누계수를 선행하는 행의 누계수에 가산함으로써 전체의 누계수가 결정된다. 한편, 횡방향의 누계수화는, 각 CPU가 병렬로 실행할 수 있다는 것에 주의해야 한다.
일반적으로, i번째(0≤i≤p-1)의 CPU인 CPU-i가 카운트 업한 항목값 번호 j(0≤j≤q-1)의 카운트 값을 Count[i][j], 누계수를 Count'[i][j]와 같이 나타내면, 누계수화는 다음과 같이 기술할 수 있다.
Count'[p-1][0] = 0
Count'[i][0] = Count'[i+1][q-1] + Count[i+1][q] 단, i > 1
Count'[i][j] = Count'[i][j-1] + Count[i][j-1] 단, j > 1
이와 같이 누계수 연산에서는, 후방의 행으로부터 앞의 행으로 오프셋 Count'[i+1][q-1]을 전파시킬 필요가 있다. 따라서, 본 실시형태에서는, 누계수화의 연산을 CPU가 분담하여 실시하고 있는데, 1대의 프로세서를 선택하여 그 프로세서가 단독으로 누계수화를 실시해도 된다. 도 16b는 누계수화의 순서를 종방향으로 일렬로 나타낸 것이다. 도 16b에 있어서, 예를 들어, (1) Count-0:4의 행은, 배열 Count-0의 선두의 요소 Count-0[4]의 카운트 값 1이 누계수 0으로 변환되는 것을 나타내고 있다.
도 17a, 17b 내지 도 19a, 19b는 내림차순의 병렬정렬방법의 전송단계 505를 설명하는 도면이다. 전송단계에서 각 CPU는, 레코드 번호배열(OrdSet)로부터 자신이 담당하는 범위내의 레코드 번호를 판독하고, 그 다음에, 그 레코드 번호를 첨자로 하여 포인터 배열(VNo)로부터 항목값 번호를 판독하며, 더욱이 상기 항목값 번호를 첨자로 하여, 자기 프로세서에 관련지어진 누계수화된 Count 배열로부터 누계수치를 판독하며, 이 판독된 누계수치를 포인트하여 또 다른 레코드 번호배열(OrdSet')에 레코드 번호를 저장하는 동시에, Count 배열의 누계수치를 1씩 인크리먼트한다.
도 20a, 20b 및 도 21a~21c는, 도 4b에 나타낸 데이터 구조에 대하여 본 발명의 실시형태에 관한 내림차순의 병렬정렬방법을 적용시킨 결과를 나타낸 도면이다. 본 예에서는, 연령에 관한 내림차순 정렬을 실행하였으므로, 결과의 레코드 번호배열(OrdSet')에는, 연령의 항목값으로서 23세, 21세, 20세, 18세 및 16세를 갖는 레코드가 연령순으로 나열되어 있음을 알 수 있다. 또한, 연령이 일치하는 레코드의 순서는, 원래의 레코드 번호배열(OrdSet) 중의 순서가 보존되어 있다.
[병렬 누계수화 연산]
다음으로, 상기의 실시예에서 설명한 누계수화 단계 504를 더욱 구체적으로 설명한다. 도 9b에 나타낸 것과 같은 카운트 결과가 얻어졌을 때, 도 10a 및 10b와 같은 누계수화가 이루어진다. 누계수화를 병렬로 실시하기 위하여, 각 CPU에는, 대상으로 삼는 항목값 번호의 값의 범위가 할당된다. CPU-0에는 항목값 번호 0과 1이, CPU-1에는 항목값 번호 2가, CPU- 2에는 항목값 번호 3이, CPU-3에는 항목값 번호 4가 할당된다. 따라서, Count 배열의 요소를, 상술한 바와 같이 Count[i][j]의 형태로 나타내면(i는 카운트를 담당한 CPU의 번호, j는 항목값 번호를 나타냄), 각 CPU의 누계수화의 담당범위:
CPU-0의 담당범위(항목값 번호 0 및 1)
Count[0][0] = 1
Count[1][0] = 2
Count[2][0] = 2
Count[3][0] = 0
Count[0][1] = 2
Count[1][1] = 0
Count[2][1] = 2
Count[3][1] = 2
CPU-1의 담당범위(항목값 번호 2)
Count[0][2] = 0
Count[1][2] = 2
Count[2][2] = 0
Count[3][2] = 1
CPU-2의 담당범위(항목값 번호 3)
Count[0][3] = 1
Count[1][3] = 1
Count[2][3] = 0
Count[3][3] = 1
CPU-3의 담당범위(항목값 번호 4)
Count[0][4] = 1
Count[1][4] = 0
Count[2][4] = 1
Count[3][4] = 1
이 얻어진다.
이와 같은 담당범위가 정해지면, 맨 먼저 각 CPU-i가 담당범위 내의 카운트의 소계(Sum[i])를 계산하면,
Sum[0] = 11
Sum[1] = 3
Sum[2] = 3
Sum[3] = 3
이 얻어진다. 이러한 소계의 계산은 병렬처리이다.
다음으로, 상기 소계를 CPU-0으로부터 CPU-3의 순으로 전파시켜, 소계의 누계수(Aggr_sum[i])를 계산하면,
Aggr_sum[0] = 0
Aggr_sum[1] = Aggr_sum[0] + Sum[0] = 11
Aggr_sum[2] = Aggr_sum[1] + Sum[1] = 14
Aggr_sum[3] = Aggr_sum[2] + Sum[2] = 17
이 얻어진다. 소계의 누계수는 선두가 0이 되도록 정의된다.
마지막으로, 각 CPU-i는, 담당범위에서 Count값을 누계수로 변환하고, 산출된 소계의 누계수(Aggr_sum[i])를 그 Count값의 누계수에 가산함으로써, 최종적인 카운트의 누계수(Count')를 얻는다. 이러한 Count'의 계산도 병렬처리이다. 이로 써,
CPU-0의 담당범위(항목값 번호 0 및 1)
Count'[0][0] = 0 + Aggr_sum[0] = 0 + 0 = 0
Count'[1][0] = Count'[0][0] + Count[0][0] = 0 + 1 = 1
Count'[2][0] = Count'[1][0] + Count[1][0] = 1 + 2 = 3
Count'[3][0] = Count'[2][0] + Count[2][0] = 3 + 2 = 5
Count'[0][1] = Count'[3][0] + Count[3][0] = 5 + 0 = 5
Count'[1][1] = Count'[0][1] + Count[0][1] = 5 + 2 = 7
Count'[2][1] = Count'[1][1] + Count[1][1] = 7 + 0 = 7
Count'[3][1] = Count'[2][1] + Count[2][1] = 7 + 2 = 9
CPU-1의 담당범위(항목값 번호 2)
Count'[0][2] = 0 + Aggr_sum[1] = 9 + 2 = 11
Count'[1][2] = Count'[0][2] + Count[0][2] = 11 + 0 = 11
Count'[2][2] = Count'[1][2] + Count[1][2] = 11 + 2 = 13
Count'[3][2] = Count'[2][2] + Count[2][2] = 13 + 0 = 13
CPU-2의 담당범위(항목값 번호 3)
Count'[0][3] = 0 + Aggr_sum[2] = 0 + 14 = 14
Count'[1][3] = Count'[0][3] + Count[0][3] = 14 + 1 = 15
Count'[2][3] = Count'[1][3] + Count[1][3] = 15 + 1 = 16
Count'[3][3] = Count'[2][3] + Count[2][3] = 16 + 0 = 16
CPU-3의 담당범위(항목값 번호 4)
Count'[0][4] = 0 + Aggr_sum[3] = 0 + 17 = 17
Count'[1][4] = Count'[0][4] + Count[0][4] = 17 + 1 = 18
Count'[2][4] = Count'[1][4] + Count[1][4] = 18 + 0 = 18
Count'[3][4] = Count'[2][4] + Count[2][4] = 18 + 1 = 19
가 얻어진다.
이 결과는 도 10b에 나타낸 누계수화의 결과와 일치한다.
[다단계 병렬정렬]
상기의 카운팅 정렬에 근거하는 병렬정렬은 기수정렬의 사고방식과 조합시킬 수 있다. 항목값 배열(VL)의 사이즈가 클 때, 다시 말해, 항목값 번호의 개수가 다수일 때에는, 항목값 번호를 기수로 표현하고, 자릿수마다 상기의 병렬정렬을 실시함으로써 효율적인 정렬을 실현할 수 있다. 이하에서는, 이러한 다단계 병렬정렬방법에 대하여 설명한다. 특히, 본 실시형태에 관한 다단계 병렬정렬은, 최하위의 자릿수에서 시작하여 순서대로 현재의 자릿수에 관한 정렬처리를 실시하고, 마지막으로 최상위의 자릿수에 관한 정렬처리를 실시함으로써 최종적인 정렬을 완료한다.
본 발명의 실시에 관한 다단계 병렬정렬방법의 일례에서도, 상기 병렬정렬방법의 예에서 사용한 도 4b의 데이터 구조를 이용한다. 본 실시형태에서는, CPU의 수는 4대로 하고 모든 CPU가 병렬로 동작하는 예를 상정한다. 시스템내의 CPU의 총수 및 병렬로 동작하는 CPU의 수는 본 예로 한정되지 않는다는 것에 주의해야 한 다. 또한, 이하에서는, 설명의 편의상, 연령의 항목에 관하여 연령의 오름차순으로 정렬하는 경우를 상정한다. 또한, 연령의 항목값 배열의 요소는 연령의 오름차순으로 나열되어 있다. 도 4b의 데이터 구조에서는, 연령에 관한 항목값 번호(VNo)가 0에서 4까지의 값을 취할 수 있으므로, 기수 = 4로서 항목값 번호를 분해하면, 항목값 번호는 아래 자릿수와 윗 자릿수의 2자리로 분해된다. 구체적으로는, 항목값 번호의 모듈로 4의 값이 아래 자릿수의 값이며, 항목값 번호를 4로 나눈 몫이 윗 자릿수의 값이다.
도 22는, 본 발명의 실시형태에 관한 다단계 병렬정렬방법의 플로우차트이다. 다단계 병렬정렬방법은, 단계 2201로부터 단계 2205의 5단계에 의해 구성된다.
단계 2201 : 항목값 번호의 범위에 따라서 항목값 번호의 기수(본 예에서는 기수 = 4)를 선택하고, 초기의 레코드 번호배열(OrdSet)을 현재의 레코드 번호배열로 설정하여, 항목값 번호의 최하위 자릿수(본 예에서는 항목값 번호의 모듈로(4)의 값)를 현재의 자릿수로 설정한다.
단계 2202 : 현재의 레코드 번호배열을 분할하여 4대의 프로세서에 할당한다.
단계 2203 : 4대의 프로세서 중의 각 프로세서에 있어서, 할당된 레코드 번호배열의 부분에 포함되는 레코드에 대응된 항목값 번호의 현재 자릿수 값의 출현횟수를 카운트한다.
단계 2204 : 항목값 번호의 현재 자릿수 값의 범위를 분할하여 4대의 프로세 서에 할당한다.
단계 2205: 4대의 프로세서 중의 각 프로세서에 있어서, 항목값 번호의 현재 자릿수 값의 순으로, 항목값 번호의 현재 자릿수 값이 일치하는 범위내에서는 레코드 번호배열의 부분의 순서에 따라, 할당된 항목값 번호의 현재 자릿수 값의 각각의 출현횟수를 누계수로 변환한다.
단계 2206 : 4대의 프로세서 중의 각 프로세서에 있어서, 할당된 레코드 번호배열의 부분에 포함되는 레코드에 대응된 항목값 번호의 현재 자릿수 값의 출현횟수의 누계수를 포인터로서 이용하여, 할당된 레코드 번호배열의 부분에 포함되는 레코드 번호를 또 다른 레코드 번호배열에 저장한다.
단계 2207 : 기수로 표현된 항목값 번호의 최상위 자릿수까지 정렬처리가 이루어졌는지의 여부를 판정하여, 최상위 자릿수까지 정렬되어 있으면, 다단계 병렬정렬처리를 종료한다.
단계 2208 : 미처리된 자릿수가 남아있다면, 그 자릿수를 현재의 자릿수로 설정하고, 또 다른 레코드 번호배열을 현재의 레코드 번호배열로 하여, 단계 2202로 되돌아 간다.
상기 본 발명의 실시형태에 관한 다단계 병렬정렬방법에 있어서, 단계 2202에서 단계 2206까지의 정렬처리는, 상기 본 발명의 병렬정렬방법과 동일한 처리이며, 항목값 번호 대신에 항목값 번호의 현재의 자릿수 값이 사용되는 점만 다르다.
다음으로, 본 발명의 실시형태에 관한 다단계 병렬정렬방법을 구체적으로 설명한다. 본 예에서는, 도 4b에 나타낸 데이터를, 4대의 CPU를 사용하여 연령의 오 름차순으로 정렬한다. 초기화 단계 2201은, 1단계째의 정렬처리로서, 연령의 항목값 번호의 모듈로4(MOD 4)의 값(하위자릿수의 값)에 관한 정렬처리를 설정하고, 2단계째의 정렬처리로서, 연령의 항목값 번호의 4로 나눈 몫(DIV 4)의 값에 관한 정렬처리를 설정한다.
초기화 단계 2201에서는, 도 6에 나타낸 Count 배열과 동일한 배열이 준비된다. 단, 본 예의 배열은, 항목값 번호의 현재의 자릿수 값의 출현횟수를 카운트하는 배열이다.
도 23a, 23b 내지 도 25a, 25b는, 다단계 병렬정렬방법의 제 1단계의 카운트 단계 2203에 대한 설명도이다. 도 23a의 서브 단계 1에서는, 예를 들면, CPU-0은, OrdSet[0]의 값 0을 판독하고, 판독된 값 0을 첨자로 하여, VNo[0]의 값 1을 판독하며, 이 값 1의 모듈로4(MOD4)의 값 1을 첨자로 하여, Count-0[1]의 값 0을 1로 인크리먼트한다. 마찬가지로, CPU-1은, OrdSet[5]의 값 5를 판독하고, 이 값 5를 첨자로 하여, VNo[5]의 값 2를 판독하며, 이 값 2의 MOD4의 값 2를 첨자로 하여, Count-1[2]의 값 0을 1로 인크리먼트한다. 이하, 도 23b의 서브 단계 2, 도 24a의 서브 단계 3, 도 24b의 서브 단계 4 및 도 25a의 서브 단계 5를 실행함으로써, 도 25b에 나타낸 바와 같은 카운트 업 결과를 얻을 수 있다. 도 23a, 23b~도 25a, 25b의 배열 Count-0의 요소 Count-0[i]는, CPU-0이 담당한 배열(OrdSet)인 OrdSet[0]으로부터 OrdSet[4]의 범위내의 각 레코드에 대응하는 연령의 항목값 번호의 하위 자릿수 값 i의 출현횟수를 나타낸다. 예를 들면, Count-0[0]은, CPU-0의 담당범위내의 항목값 번호의 하위 자릿수 값 0의 출현횟수가 1회인 것을 의미하 고, Count-3[1]은 CPU-3의 담당범위내의 항목값 번호의 하위 자릿수 값 1의 출현횟수가 2회인 것을 나타낸다.
도 26a, 26b는 다단계 병렬정렬방법의 제 1단계의 누계수화 단계에 관한 설명도이다. 본 예에서는, 오름차순 정렬에 대응하여, 항목값 번호의 하위 자릿수 값의 오름차순으로 누계수화를 실시한다. CPU-0은, 배열 Count의 1행째(즉, 항목값 번호의 하위자릿수의 값 0)의 누계수화를 담당하고, CPU-1 내지 CPU-3은, 각각, 배열 Count의 2 내지 4행째(즉, 항목값 번호의 하위자릿수의 값 1 내지 3)의 누계수화를 담당한다. 도 26a에 나타낸 바와 같이, 누계수화는 배열Count의 횡방향(즉, 첨자가 일치하는 행)을 우선하여 실시되며, 이어서, 선행하는 행의 누계수를 후속하는 행의 누계수에 가산함으로써 전체의 누계수가 결정된다. 또, 횡방향의 누계수화는, 이미 설명한 바와 같이 각 CPU가 병렬로 실행할 수 있지만, 단일 CPU가 담당해도 된다.
도 27a, 27b 내지 도 29a, 29b는 다단계 병렬정렬방법의 제 1단계에 있어서 레코드 번호를 또 다른 레코드 번호배열에 저장하는 전송단계에 대한 설명도이다. 전송단계에서는, 각 CPU는, 레코드 번호배열(OrdSet)로부터 자신이 담당하는 범위내의 레코드 번호를 판독하고, 그 다음에, 그 레코드 번호를 첨자로 하여 포인터 배열(VNo)로부터 항목값 번호의 하위 자릿수 값을 판독하며, 더욱이 상기 항목값 번호의 하위 자릿수 값을 첨자로 하여, 자기 프로세서에 관련지어진 누계수화된 Count배열로부터 누계수치를 판독하며, 이 판독된 누계수치를 포인트하여 또 다른 레코드 번호배열(OrdSet')에 레코드 번호를 저장하는 동시에, Count 배열의 누계수치를 1씩 인크리먼트한다. 도 29b는 이러한 전송단계의 결과로서 제 1단계에서 얻은 레코드 번호배열(OrdSet')을 나타낸다.
제 2단계에서는, 제 1단계에서 얻어진 레코드 번호배열(OrdSet')을 초기 조건으로 하여, 연령의 항목값 번호의 상위자릿수의 값(DIV 4의 값)에 관한 오름차순 정렬을 실행한다.
도 30은, 본 발명의 실시형태에 관한 다단계 병렬정렬방법의 제 2단계의 단계 2202에 있어서, 현재의 레코드 번호배열(OrdSet')을 4대의 CPU에 할당하고, 각각의 Count배열을 준비한 상태를 나타낸 도면이다.
도 31a, 31b 내지 도 33a, 33b는, 다단계 병렬정렬방법의 제 2단계의 카운트 단계를 설명하기 위한 도면이다. 도 31a의 서브 단계 1에서는, 예를 들면, CPU-0은, OrdSet'[0]의 값 2를 판독하고, 판독된 값 2를 첨자로 하여 VNo[2]의 값 4를 판독하며, 이 값 1의 4로 나눈 몫(DIV4)의 값 1을 첨자로 하여, Count-0[1]의 값 0을 1로 인크리먼트한다. 마찬가지로, CPU-1은, OrdSet'[5]의 값 12를 판독하고, 이 값 12를 첨자로 하여 VNo[12]의 값 4를 판독하며, 이 값 4의 DIV 4의 값 1을 첨자로 하여 Count-1[1]의 값 0을 1로 인크리먼트한다. 이하, 도 31b의 서브 단계 2, 도 32a의 서브 단계 3, 도 32b의 서브 단계 4 및 도 33a의 서브 단계 5를 실행함으로써, 도 33b에 나타낸 바와 같은 제 2단계의 카운트 업 결과를 얻을 수 있다. 도 31a, 31b 내지 33a, 33b에 있어서, 배열 Count-0의 요소 Count-0[i]은, CPU-0이 담당한 배열(OrdSet')인 OrdSet'[0]으로부터 OrdSet[4] 범위내의 각 레코드에 대응하는 연령의 항목값 번호의 상위 자릿수의 값 i의 출현횟수를 나타낸다. 예를 들 면, Count-0[0]은, CPU-0의 담당범위내의 항목값 번호의 상위 자릿수 값 0의 출현횟수가 4회인 것을 나타내고, Count-3[1]은 CPU-3의 담당범위내의 항목값 번호의 상위 자릿수 값 1의 출현횟수가 0회인 것을 나타낸다.
도 34는 다단계 병렬정렬방법의 제 2단계의 누계수화 단계를 설명하기 위한 도면이다. 본 예에서는 오름차순 정렬에 대응하여, 항목값 번호의 상위 자릿수 값의 오름차순으로 누계수화를 실시한다. 다단계화에 의해 항목값 번호의 상위 자릿수 값의 개수는 2개로 삭감되어 있으므로, 본 예에서는 예를 들어 CPU-0이 모든 값의 누계수화를 담당한다. 도 34에 나타낸 바와 같이, CPU-0은, Count[0][0], Count[1][0], Count[2][0], Count[3][0], Count[0][1], Count[1][1], Count[2][1] 및 Count[3][1]의 순으로 누계수화를 실시한다. 물론, 본 예의 경우에, CPU-0과 CPU-1의 2대의 CPU에 항목값 번호의 상위 자릿수의 값 0과 1을 할당하여 2대의 CPU가 누계수화 연산을 실시해도 된다.
도 35a, 35b 내지 도 37a, 37b는 다단계 병렬정렬방법의 제 2단계에 있어서 레코드 번호를 또 다른 레코드 번호배열에 저장하는 전송단계를 설명하기 위한 도면이다. 전송단계에서는, 각 CPU는, 레코드 번호배열(OrdSet)로부터 자신이 담당하는 범위내의 레코드 번호를 판독하고, 그 다음에, 그 레코드 번호를 첨자로 하여 포인터 배열(VNo)로부터 항목값 번호의 상위 자릿수의 값을 판독하며, 더욱이 상기 항목값 번호의 상위 자릿수 값을 첨자로 하여, 자기 프로세서에 관련지어진 누계수화된 Count 배열로부터 누계수치를 판독하고, 이 판독된 누계수치를 포인트하여 또 다른 레코드 번호배열(OrdSet")에 레코드 번호를 저장하는 동시에, Count 배열의 누계수치를 1씩 인크리먼트한다. 도 37b는 이러한 전송단계의 결과로서 제 2단계에서 얻은 레코드 번호배열(Ordset")을 나타낸다.
본 실시예의 다단계 병렬정렬방법은 항목값 번호의 하위 자릿수와 상위 자릿수의 2단계에 의해 구성되어 있으므로, 더 이상의 정렬처리는 이루어지지 않는다. 따라서, 제 2단계에서 얻은 레코드 번호배열(OrdSet")은 최초의 레코드 번호배열(OrdSet)을 연령에 관하여 오름차순으로 정렬한 결과이다.
도 38a~38c 및 도 39a, 39b는, 도 4b에 나타낸 데이터 구조에 대하여 본 발명의 실시형태에 관한 오름차순의 다단계 병렬정렬방법을 적용시킨 결과를 나타낸 도면이다. 본 실시예에서는, 연령에 관한 오름차순 정렬을 실시하였으므로, 결과의 레코드 번호배열(OrdSet")에는, 연령의 항목값으로서 16세, 18세, 20세, 21세 및 23세를 갖는 레코드가 연령순으로 나열되어 있음을 알 수 있다. 또한, 연령이 일치하는 레코드의 순서는, 원래의 레코드 번호배열(OrdSet) 중의 순서가 보존되어 있다. 그 결과는, 도 14a ~ 14c 및 도 15a, 15b에 나타낸 본 발명의 실시형태에 관한 오름차순의 병렬정렬방법을 도 4b의 데이터 구조에 적용시킨 결과와 일치한다.
또한, 상기의 다단계 병렬정렬방법은 오름차순 정렬이지만, 본 발명의 다단계 병렬정렬은 내림차순 정렬이어도 마찬가지로 동작한다. 더욱이 이미 설명한 바와 같이, 다단계 병렬정렬의 각 단계에서의 누계수화 연산은, 복수의 프로세서에서 병렬처리해도 되고, 혹은, 적어도 1대, 바람직하게는, 1대의 프로세서가 단독으로 처리해도 된다.
[다단계 정렬]
상기 다단계 병렬정렬은, 최하위 자릿수로부터 시작하여 순서대로 현재의 자릿수에 관한 정렬처리를 실시하고, 마지막으로 최상위 자릿수에 관한 정렬처리를 실시함으로써 최종적인 정렬이 완료된다. 이에 대하여, 최상위 자릿수로부터 시작하여 순서대로 현재의 자릿수에 관한 정렬처리를 실시하고, 마지막으로 최하위 자릿수에 관한 정렬처리를 실시함으로써 최종적인 정렬이 완료될 수도 있다. 이하에서는, 이러한 최상위로부터 최하위의 순으로 정렬처리를 다단계화하는 방법에 대해 간단히 설명하도록 한다.
본 예에서는, 도 40에 도시된 것과 같은 데이터 구조를 이용한다. 또한, 본 예에서 CPU의 수는 1대로 한다. 또한, 이하에서는, 연령의 항목에 관하여 연령의 오름차순으로 정렬하는 경우를 상정한다. 레코드의 총수는 레코드번호 0에서 레코드번호 19까지의 20개이며, 항목값번호는 0에서 8까지의 9개이다. 즉, 실제 연령의 값은 15, 16, 18, 19, 20, 21, 23, 25 및 28의 9가지이다. 도 40의 데이터 구조에서, 연령에 관한 항목값번호(VNo)는 0에서 8까지의 값을 취할 수 있으므로, 기수 = 4로 하여 항목값번호를 분해하면, 항목값번호를 4로 나눈 몫이 윗 자릿수의 값이며, 항목값번호의 모듈로4의 값이 아래 자릿수의 값이다. 항목값번호의 윗 자릿수는 0, 1 및 2의 3가지의 값을 취할 수 있으며, 아래 자릿수는 0, 1, 2 및 3의 4가지의 값을 취할 수 있다.
맨 먼저, 제 1단계에 있어서, 윗 자릿수의 값(0, 1 및 2)의 출현횟수를 카운 트하기 위한 배열 Count-1을 준비하고, 요소를 0으로 초기화한다. 예를 들어, Count-1[0]은, 항목값번호의 상위 자릿수 값이 0인 레코드의 개수를 카운트하기 위한 영역이다.
다음으로, 레코드번호배열(OrdSet)의 선두의 요소(즉, 레코드)로부터 순서대로, 그 요소에 대응하는 항목값번호를 배열(VNo)로부터 판독하고, 그 항목값번호를 4로 나눈 몫의 값을 포인터로서 이용하여, 배열 Count-1의 요소의 값을 인크리먼트(increment)한다. 도 41a~41d는, OrdSet[0] = 0, OrdSet[7] = 7, 및 OrdSet[19] = 19의 3개의 레코드번호에 대하여, 항목값번호의 상위 자릿수의 값을 산출하여 해당하는 카운터를 카운트 업하고, 이어서 누계수화하는 예에 관한 설명도이다. 도 41c를 통해 알 수 있듯이, 상기 제 1단계의 카운트 업 처리에 의해, 항목값번호의 상위 자릿수 값이 0인 레코드의 개수는 12개, 상위 자릿수 값이 1인 레코드의 개수는 7개, 상위 자릿수 값이 2인 레코드의 개수는 1개이다. 더욱이 도 41d에 나타낸 바와 같이 상기 카운트 값을 누계수화한다.
다음으로, 항목값번호의 상위 자릿수 값의 출현횟수가 누계수화된 배열 Aggr-1을 이용하여, 레코드번호배열(OrdSet)을 또 다른 레코드번호배열(OrdSet')로 변환한다. 구체적으로는, OrdSet[i]=j이면, VNo[j]를 판독하고, 상기 VNo[j]를 4로 나눈 몫(VNo[j] DIV 4)을 k라 할 때, Aggr-1[k]의 값을 판독하여, OrdSet[Aggr-1[k]]에 레코드번호(j)를 설정하고 Aggr-1[k]를 인크리먼트한다. 도 42a, 42b는, 이러한 다단계 정렬에서의 레코드번호 전송처리에 대한 설명도로서, 도 42a는 OrdSet[0]의 전송을, 도 42b는 OrdSet[19]의 전송을 나타낸다. 도 43은, 제 1단계 의 레코드번호 전송결과인 레코드번호배열(OrdSet')과, 상위 자릿수 값이 분포하는 범위를 나타낸다. 예를 들어, 상위 자릿수 값이 0인 레코드는 레코드번호배열(OrdSet')의 OrdSet'[0]에서 OrdSet'[11]의 범위(구간 0)에 분포하고, 상위 자릿수 값이 1인 레코드는 레코드번호배열(OrdSet')의 OrdSet'[12]로부터 OrdSet'[18]의 범위(구간 1)에 분포하며, 상위 자릿수 값이 2인 레코드는 레코드번호배열(OrdSet')의 OrdSet'[19] (구간 2)에 존재한다.
다음으로, 다단계 정렬의 제 2단계에서는, 각 구간내에서, 항목값번호의 하위 자릿수 값에 의해 레코드번호를 정렬(sort)한다. 예를 들어, OrdSet'의 구간 1은, OrdSet"이 대응하는 구간 1에 전송된다. 제 2단계의 정렬에서는, 이미 상위의 자릿수로 구간이 정해져 있으므로, 레코드번호가 구간 이외로 전송되는 일은 없다.
도 44는, 다단계 정렬의 제 2단계의 초기상태를 나타내는 도면이다. 이하의 설명에서는 OrdSet'의 구간 1에 대하여 설명한다. 예를 들어, 복수의 프로세서가 존재할 경우에는, 구간마다 프로세서를 할당함으로써 이하의 처리를 병렬화하는 것도 가능하다. Count-2는 구간 1내에서 항목값번호의 하위 자릿수 값(0,1,2,3)의 출현횟수를 카운트하기 위한 배열이다.
도 45a~45c는, 다단계 정렬의 제 2단계의 카운트 업 및 누계수화에 대한 설명도이다. 도 45a로부터 시작하여 순서대로 카운트 업함으로써, 도 45b에 나타낸 것과 같은 카운트 업 배열을 얻을 수 있다. 이 카운트 업 배열은, 도 45C에 나타낸 바와 같이 누계수화된다.
마지막으로, 제 2의 누계수 배열(Aggr-2)을 포인터로서 이용하여, 레코드번 호배열(OrdSet')의 구간 1을 레코드번호배열(OrdSet")의 구간 1로 전송함으로써 다단계 정렬이 완료된다. 도 46a, 46b는, 다단계 정렬의 제 2단계의 레코드번호전송에 관한 설명도이다. 구체적으로는, OrdSet'[i]=j이면, VNo[j]을 판독하고, 이 VNo[j]을 4로 나눈 나머지(VNo[j] MOD 4)를 k라 할 때, Aggr-2[k]의 값을 판독하여, OrdSet"[Aggr-2[k]]에 레코드번호(j)를 설정하고, Aggr-2[k]를 인크리먼트한다. 도 46a는 OrdSet'[14]의 전송을, 도 46b는 OrdSet'[18]의 전송을 나타낸다. 도 46b의 OrdSet"의 구간 1은, 구간 1의 최종적인 정렬결과를 나타낸다.
구간 1과 마찬가지로, 그 밖의 구간 0, 구간 2에 대해서도 제 2단계의 카운트 업, 누계수화 및 레코드번호전송을 적용시킴으로써, 레코드번호배열(OrdSet) 전체가 레코드번호배열(OrdSet")로 전송되어 정렬이 완료된다.
상술한 바와 같이, 본 발명의 실시형태에서는, 컴퓨터 시스템(10)에 의해 레코드의 소정 항목의 항목값에 따라서 레코드순서를 바꾸어 나열하는 프로그램을 실행한다. 보다 구체적으로는, 본 실시형태에 있어서는, 이하와 같이 프로그램에 의해, 각 CPU는 상술한 처리단계를 실행하거나 혹은 상술한 기능을 실현한다.
본 실시형태에 있어서, 컴퓨터 시스템(10)에는 OS(예를 들면, 리눅스(Linux:등록상표))가 탑재된다. 초기에는 OS의 제어에 따라, 어떤 CPU(예를 들면, CPU(12-1))가, 프로그램을 메모리(예를 들면, 공유 메모리(14))에 로드한다. 프로그램이 메모리에 로드되면, CPU(12-1, 12-2, ..., 12-p) 각각이 처리를 실행해야 할 경우에는, OS의 제어 하에서 각 CPU는 각각 소정의 기능을 실현한다. 즉, 각 CPU가 공유 메모리(14)에 기억된 프로그램중의 소정의 처리단계를 판독하여 그 처 리단계를 실행한다. 한편, 특정 CPU가 처리를 해야 할 경우에는, OS의 제어 하에서 그 특정 CPU에 의해 다른 소정의 기능을 실현한다. 즉, 특정 CPU만이, 공유 메모리(14)에 기억된 프로그램중의 다른 소정의 처리단계를 판독하여 그 다른 소정의 처리단계를 실행한다. 한편, 각 CPU가 실행하는 프로그램의 저장장소는, 상기 공유 메모리(14)로 한정되는 것은 아니며, 각 CPU에 부수되는 각각의 로컬 메모리(도시생략)여도 무방하다.
이와 같이, 본 실시형태에서는, OS의 제어하에서 프로그램에 의해, 각 CPU가 소정의 기능을 실현하는 동시에, 필요에 따라 특정 CPU가 다른 소정의 기능을 실현할 수가 있다.
본 발명은 이상의 실시형태로 한정되지 않으며, 특허청구의 범위에 기재된 발명의 범위내에서 각종 변경이 가능하고, 이러한 것들도 본 발명의 범위내에 포함됨은 말할 필요도 없다.
본 발명에 따르면, 공유 메모리형의 병렬처리환경에 있어서, 대규모의 표형식 데이터의 고속병렬정렬을 실현할 수 있는 정보처리장치를 제공할 수 있게 된다.

Claims (16)

  1. 표형식 데이터의 레코드의 레코드번호가 소정의 레코드순서에 따라 저장된 레코드번호배열, 표형식 데이터의 레코드의 소정 항목의 항목값에 대응하는 항목값번호가 레코드번호에 관련지어 저장된 항목값번호배열, 및 표형식 데이터의 항목값이 해당 항목값에 대응하는 항목값번호의 순서에 따라 저장된 항목값배열을 기억하는 공유 메모리와,
    상기 공유 메모리에 액세스가능한 n(n≥1)대의 프로세서를 구비한 공유 메모리형 멀티 프로세서 시스템에 있어서, 레코드의 소정 항목의 항목값에 따라 레코드순서를 바꾸어 나열하는 정보처리방법으로서,
    상기 레코드번호배열을 n1(n1≤n)개의 부분으로 분할하고, 상기 분할된 레코드번호배열의 n1개의 부분을 상기 n대의 프로세서 중의 n1대의 프로세서에 각각 할당하는 단계와,
    상기 n1대의 프로세서중의 각 프로세서에 의해, 상기 할당된 레코드번호배열의 부분에 포함되는 레코드번호에 관련지어진 항목값번호의 출현횟수를 카운트하는 단계와,
    상기 항목값번호의 범위를 n2(n2≤n)개의 범위로 분할하고, 상기 분할된 항목값번호의 n2개의 범위를 상기 n대의 프로세서 중의 n2대의 프로세서에 각각 할당하는 단계와,
    상기 n2대의 프로세서중의 각 프로세서에 의해, 상기 항목값번호가 다른 경우에는 상기 항목값번호의 순서에 따르고, 동일한 항목값번호의 출현횟수가 2대 이상의 프로세서에 의해 카운트되고 있는 경우에는 상기 레코드번호배열의 부분의 순서에 따라서, 상기 n1대의 프로세서에 의해 카운트된 상기 항목값번호의 각각의 출현횟수를 누계수로 변환하는 단계와,
    상기 n1대의 프로세서중의 각 프로세서에 의해, 상기 할당된 레코드번호배열의 부분에 포함되는 레코드번호에 관련지어진 상기 항목값번호의 누계수를 포인터로서 이용하여, 상기 할당된 상기 레코드번호배열의 부분에 포함되는 레코드번호를 또 다른 레코드번호배열에 저장하는 단계를 포함하는 정보처리방법.
  2. 표형식 데이터의 레코드의 레코드번호가 소정의 레코드순서에 따라 저장된 레코드번호배열, 표형식 데이터의 레코드의 소정 항목의 항목값에 대응하는 항목값번호가 레코드번호에 관련지어 저장된 항목값번호배열, 및 표형식 데이터의 항목값이 해당 항목값에 대응하는 항목값번호의 순서에 따라 저장된 항목값배열을 기억하는 공유 메모리와,
    상기 공유 메모리에 액세스가능한 n(n≥1)대의 프로세서를 구비한 공유 메모리형 멀티 프로세서 시스템에 있어서, 레코드의 소정 항목의 항목값에 따라 레코드순서를 바꾸어 나열하는 정보처리방법으로서,
    상기 항목값번호의 범위에 따라 상기 항목값번호의 기수(基數)를 설정하는 단계와,
    상기 기수로 표현된 상기 항목값번호의 최하위 자릿수로부터 최상위 자릿수까지 순서대로 현재 자릿수에 관하여, 1회째는 상기 레코드번호배열을 현재의 레코드번호배열로 하고, 2회째 이후는 또 다른 레코드번호배열을 현재의 레코드번호배열로 하여 정렬(sort)처리를 반복하는 단계를 포함하며,
    상기 정렬처리가,
    상기 현재의 레코드번호배열을 n1(n1≤n)개의 부분으로 분할하고, 상기 분할된 현재의 레코드번호배열의 부분을 상기 n대의 프로세서 중의 n1대의 프로세서에 할당하는 단계와,
    상기 n1대의 프로세서중의 각 프로세서에 의해, 상기 할당된 레코드번호배열의 부분에 포함되는 레코드번호에 관련지어진 항목값번호의 현재 자릿수 값의 출현횟수를 카운트하는 단계와,
    상기 항목값번호의 현재 자릿수 값의 범위를 n2(n2≤n)개의 범위로 분할하고, 상기 분할된 항목값번호의 자릿수 값의 n2개의 범위를 상기 n대의 프로세서 중의 n2대의 프로세서에 할당하는 단계와,
    상기 n2대의 복수의 프로세서중의 각 프로세서에 의해, 상기 항목값번호의 현재 자릿수의 값이 다른 경우에는 상기 항목값번호의 현재 자릿수 값의 순서에 따르고, 상기 항목값번호의 현재 자릿수의 동일한 값이 2대 이상의 프로세서에 의해 카운트되고 있는 경우에는 상기 레코드번호배열의 부분의 순서에 따라서, 상기 n1대의 프로세서에 의해 카운트된 항목값번호의 현재 자릿수 값의 각각의 출현횟수를 누계수로 변환하는 단계와,
    상기 n1대의 프로세서중의 각 프로세서에 의해, 상기 할당된 레코드번호배열의 부분에 포함되는 레코드번호에 관련지어진 상기 항목값번호의 현재 자릿수 값의 누계수를 포인터로서 이용하여, 상기 할당된 상기 레코드번호배열의 부분에 포함되는 레코드번호를 또 다른 레코드번호배열에 저장하는 단계를 포함하는 정보처리방법.
  3. 표형식 데이터의 레코드의 레코드번호가 소정의 레코드순서에 따라 저장된 레코드번호배열, 표형식 데이터의 레코드의 소정 항목의 항목값에 대응하는 항목값번호가 레코드번호에 관련지어 저장된 항목값번호배열, 및 표형식 데이터의 항목값이 해당 항목값에 대응하는 항목값번호의 순서에 따라 저장된 항목값배열을 기억하는 공유 메모리와,
    상기 공유 메모리에 액세스가능한 복수의 프로세서를 구비한 공유 메모리형 멀티 프로세서 시스템에 있어서, 레코드의 소정 항목의 항목값에 따라 레코드 순서를 바꾸어 나열하는 정보처리방법으로서,
    상기 항목값번호의 범위에 따라 상기 항목값번호의 기수를 설정하는 단계와,
    상기 기수로 표현된 상기 항목값번호의 최하위 자릿수로부터 최상위 자릿수까지 순서대로 현재 자릿수에 관하여, 1회째는 상기 레코드번호배열을 현재의 레코드번호배열로 하고, 2회째 이후는 또 다른 레코드번호배열을 현재의 레코드번호배열로 하여 정렬처리를 반복하는 단계를 포함하며,
    상기 정렬처리가,
    상기 현재의 레코드번호배열을 분할하고, 상기 분할된 현재의 레코드번호배열의 부분을 상기 복수의 프로세서에 할당하는 단계와,
    각 프로세서에 의해, 상기 할당된 레코드번호배열의 부분에 포함되는 레코드번호에 관련지어진 항목값번호의 현재 자릿수 값의 출현횟수를 카운트하는 단계와,
    적어도 1대의 프로세서에 의해, 상기 항목값번호의 현재 자릿수의 값이 다른 경우에는 상기 항목값번호의 현재 자릿수 값의 순서에 따르고, 상기 항목값번호의 현재 자릿수의 동일한 값이 2대 이상의 프로세서에 의해 카운트되고 있는 경우에는 상기 레코드번호배열의 부분의 순서에 따라서, 상기 할당된 항목값번호의 현재 자릿수 값의 각각의 출현횟수를 누계수로 변환하는 단계와,
    상기 각 프로세서에 의해, 상기 할당된 레코드번호배열의 부분에 포함되는 레코드번호에 관련지어진 상기 항목값번호의 현재 자릿수 값의 누계수를 포인터로서 이용하여, 상기 할당된 상기 레코드번호배열의 부분에 포함되는 레코드번호를 또 다른 레코드번호배열에 저장하는 단계를 포함하는 정보처리방법.
  4. 표형식 데이터의 레코드의 레코드번호가 소정의 레코드순서에 따라 저장된 레코드번호배열, 표형식 데이터의 레코드의 소정 항목의 항목값에 대응하는 항목값번호가 레코드번호에 관련지어 저장된 항목값번호배열, 및 표형식 데이터의 항목값이 해당 항목값에 대응하는 항목값번호의 순서에 따라 저장된 항목값배열을 기억하는 공유 메모리와,
    상기 공유 메모리에 액세스가능한 n(n≥1)대의 프로세서를 구비한 공유 메모리형 멀티 프로세서 시스템에 있어서, 레코드의 소정 항목의 항목값에 따라 레코드순서를 바꾸어 나열하는 정보처리방법으로서,
    상기 레코드번호배열을 n1(n1≤n)개의 부분으로 분할하고, 상기 분할된 레코드번호배열의 n1개의 부분을 상기 n대의 프로세서 중의 n1대의 프로세서에 할당하는 단계와,
    상기 n1대의 프로세서중의 각 프로세서에 의해, 상기 할당된 레코드번호배열의 부분에 포함되는 레코드번호에 관련지어진 항목값번호의 출현횟수를 카운트하는 단계와,
    상기 항목값번호의 범위를 n2(n2≤n)개의 범위로 분할하고, 상기 분할된 항목값번호의 n2개의 범위를 상기 n대의 프로세서 중의 n2대의 프로세서에 할당하는 단계와,
    상기 n2대의 프로세서중의 각 프로세서에 의해, 상기 n2대의 프로세서에 할당된 항목값번호에 관하여, (i)상기 n1대의 프로세서 중의 각 프로세서에 의해 카운트된 상기 출현횟수의 합을 산출하고, 산출된 합을 상기 항목값번호의 범위의 순으로 상기 n2대의 프로세서 사이에서 전파시키며, (ii)상기 항목값번호가 다른 경우에는 상기 항목값번호의 순서에 따르고, 동일한 항목값번호의 출현횟수가 2대 이상의 프로세서에 의해 카운트되고 있는 경우에는 상기 레코드번호배열의 부분의 순서에 따라서, 상기 출현횟수를 누계수로 변환하며, 상기 전파된 합을 상기 누계수에 가산함으로써, 상기 n1대의 프로세서중의 각 프로세서에 할당된 레코드번호배열의 부분에 포함되는 레코드번호에 관련지어진 항목값번호마다 상기 출현횟수를 누계수로 변환하는 단계와,
    상기 n1대의 프로세서 중의 각 프로세서에 의해, 상기 할당된 레코드번호배열의 부분에 포함되는 레코드번호에 관련지어진 상기 항목값번호마다 얻어진 상기 누계수를 포인터로서 이용하여, 상기 할당된 상기 레코드번호배열의 부분에 포함되는 레코드번호를 또 다른 레코드번호배열에 저장하는 단계를 포함하는 정보처리방법.
  5. 표형식 데이터의 레코드의 레코드번호가 소정의 레코드순서에 따라 저장된 레코드번호배열, 표형식 데이터의 레코드의 소정 항목의 항목값에 대응하는 항목값번호가 레코드번호에 관련지어 저장된 항목값번호배열, 및 표형식 데이터의 항목값이 해당 항목값에 대응하는 항목값번호의 순서에 따라 저장된 항목값배열을 기억하는 공유 메모리와,
    상기 공유 메모리에 액세스가능한 n(n≥1)대의 프로세서를 구비한 공유 메모리형 멀티 프로세서 시스템에 있어서, 레코드의 소정 항목의 항목값에 따라 레코드순서를 바꾸어 나열하는 정보처리방법으로서,
    적어도 1대의 프로세서에 의해, 상기 항목값번호의 범위에 따라 상기 항목값번호의 기수를 설정함으로써, 상기 항목값번호를 상위 자릿수의 하위 자릿수로 나누는 단계와,
    적어도 1대의 프로세서에 의해, 상기 레코드번호배열에 포함되는 레코드번호에 관련지어진 상기 항목값번호의 상위 자릿수 값의 출현횟수를 카운트하고, 상기 항목값번호의 상위 자릿수 값의 순서에 따라 상기 출현횟수를 누계수로 변환하며, 상기 항목값번호의 상위 자릿수 값의 누계수를 포인터로서 이용하여 상기 레코드번호배열 중의 레코드번호를 바꾸어 나열하여, 상기 항목값번호의 상위 자릿수 값의 순서에 따라 n1(≤n)개로 구분된 중간적인 레코드번호배열을 생성하는 단계와,
    적어도 1대의 프로세서에 의해, 상기 중간적인 레코드번호배열의 n1개의 구분을 각각 상기 n대의 프로세서 중의 n1대의 프로세서에 할당하는 단계와,
    상기 구분마다 할당된 각 프로세서에 의해, 상기 중간적인 레코드번호배열 중의 상기 할당된 구분 내의 레코드번호에 관련지어진 상기 항목값번호의 하위 자릿수 값의 출현횟수를 카운트하고, 상기 항목값번호의 하위 자릿수 값의 순서에 따라 상기 출현횟수를 누계수로 변환하며, 상기 항목값번호의 하위 자릿수 값의 누계수를 포인터로서 이용하여 상기 중간적인 레코드번호배열 중의 상기 할당된 구분 내의 레코드번호를 그 관련지어진 상기 항목값번호의 하위 자릿수 값의 순으로 바꾸어 나열하는 단계를 포함하는 정보처리방법.
  6. 공유 메모리와 상기 공유 메모리에 액세스가능한 n(n≥1)대의 프로세서를 구비한 공유 메모리형 멀티 프로세서 시스템으로서,
    상기 공유 메모리가, 표형식 데이터의 레코드의 레코드번호가 소정의 레코드순서에 따라 저장된 레코드번호배열, 표형식 데이터의 레코드의 소정 항목의 항목값에 대응하는 항목값번호가 레코드번호에 관련지어 저장된 항목값번호배열, 및 표형식 데이터의 항목값이 해당 항목값에 대응하는 항목값번호의 순서에 따라 저장된 항목값배열을 기억하고,
    각 프로세서가,
    n1(n1≤n)개의 부분으로 분할된 상기 레코드번호배열중 각 프로세서가 담당하는 부분을 결정하는 수단과,
    상기 레코드번호배열의 부분에 포함되는 레코드번호에 관련지어진 항목값번호의 출현횟수를 카운트하는 수단과,
    n2(n2≤n)개의 범위로 분할된 상기 항목값번호의 범위중 각 프로세서가 담당하는 범위를 결정하는 수단과,
    상기 항목값번호가 다른 경우에는 상기 항목값번호의 순서에 따르고, 동일한 항목값번호의 출현횟수가 2대 이상의 프로세서에 의해 카운트되고 있는 경우에는 상기 레코드번호배열의 부분의 순서에 따라서, 각 프로세서가 담당하는 범위 내의 항목값번호의 각각의 출현횟수를 누계수로 변환하는 수단과,
    상기 레코드번호배열의 부분에 포함되는 레코드번호에 관련지어진 상기 항목값번호의 누계수를 포인터로서 이용하여, 상기 레코드번호배열의 부분에 포함되는 레코드번호를 또 다른 레코드번호배열에 저장하는 수단을 포함하는 공유 메모리형 멀티 프로세서 시스템.
  7. 제 6항에 있어서,
    상기 항목값번호의 범위중 선행하는 범위를 담당하는 프로세서의 상기 출현횟수를 누계수로 변환하는 수단에 의해 얻어진 상기 누계수가, 직후의 범위를 담당 하는 프로세서의 상기 출현횟수를 누계수로 변환하는 수단에 의해 참조되는 공유 메모리형 멀티 프로세서 시스템.
  8. 공유 메모리와 상기 공유 메모리에 액세스가능한 복수의 프로세서를 구비한 공유 메모리형 멀티 프로세서 시스템으로서,
    상기 공유 메모리가, 표형식 데이터의 레코드의 레코드번호가 소정의 레코드순서에 따라 저장된 레코드번호배열, 표형식 데이터의 레코드의 소정 항목의 항목값에 대응하는 항목값번호가 레코드번호에 관련지어 저장된 항목값번호배열, 및 표형식 데이터의 항목값이 해당 항목값에 대응하는 항목값번호의 순서에 따라 저장된 항목값배열을 기억하고,
    각 프로세서가,
    상기 항목값번호의 범위에 따라 상기 항목값번호의 기수를 설정하는 수단과,
    상기 기수로 표현된 상기 항목값번호의 최하위 자릿수로부터 최상위 자릿수까지 순서대로 현재 자릿수를 설정하고, 1회째는 상기 레코드번호배열을 현재의 레코드번호배열로서, 2회째 이후는 또 다른 레코드번호배열을 현재의 레코드번호배열로서 설정하여 정렬처리를 반복하는 수단을 포함하고,
    상기 정렬처리를 반복하는 수단이,
    상기 레코드번호배열중 각 프로세서가 담당하는 부분을 결정하는 수단과,
    상기 레코드번호배열의 부분에 포함되는 레코드번호에 관련지어진 항목값번호의 현재 자릿수 값의 출현횟수를 카운트하는 수단과,
    상기 항목값번호의 현재 자릿수 값의 범위중 각 프로세서가 담당하는 범위를 결정하는 수단과,
    상기 항목값번호의 현재 자릿수의 값이 다른 경우에 상기 항목값번호의 현재 자릿수 값의 순서에 따르고, 상기 항목값번호의 현재 자릿수의 동일한 값이 2대 이상의 프로세서에 의해 카운트되고 있는 경우에는 상기 레코드번호배열의 부분의 순서에 따라, 각 프로세서가 담당하는 범위 내의 항목값번호의 현재 자릿수 값의 각각의 출현횟수를 누계수로 변환하는 수단과,
    상기 레코드번호배열의 부분에 포함되는 레코드번호에 관련지어진 상기 항목값번호의 현재 자릿수 값의 누계수를 포인터로서 이용하여, 상기 레코드번호배열의 부분에 포함되는 레코드번호를 또 다른 레코드번호배열에 저장하는 수단을 포함하는 공유 메모리형 멀티 프로세서 시스템.
  9. 제 8항에 있어서,
    상기 항목값번호의 현재 자릿수의 범위중 선행하는 범위를 담당하는 프로세서의 상기 출현횟수를 누계수로 변환하는 수단에 의해 얻어진 상기 누계수가, 직후의 범위를 담당하는 프로세서의 상기 출현횟수를 누계수로 변환하는 수단에 의해 참조되는 공유 메모리형 멀티 프로세서 시스템.
  10. 공유 메모리와 상기 공유 메모리에 액세스가능한 복수의 프로세서를 구비한 공유 메모리형 멀티 프로세서 시스템으로서,
    상기 공유 메모리가, 표형식 데이터의 레코드의 레코드번호가 소정의 레코드순서에 따라 저장된 레코드번호배열, 표형식 데이터의 레코드의 소정 항목의 항목값에 대응하는 항목값번호가 레코드번호에 관련지어 저장된 항목값번호배열, 및 표형식 데이터의 항목값이 해당 항목값에 대응하는 항목값번호의 순서에 따라 저장된 항목값배열을 기억하고,
    각 프로세서가,
    상기 항목값번호의 범위에 따라 상기 항목값번호의 기수를 설정하는 수단과,
    상기 기수로 표현된 상기 항목값번호의 최하위 자릿수로부터 최상위 자릿수까지 순서대로 현재 자릿수를 설정하며, 1회째는 상기 레코드번호배열을 현재의 레코드번호배열로서, 2회째 이후는 또 다른 레코드번호배열을 현재의 레코드번호배열로서 설정하여 정렬처리를 반복하는 수단을 포함하고,
    상기 정렬처리를 반복하는 수단이,
    상기 레코드번호배열중 각 프로세서가 담당하는 부분을 결정하는 수단과,
    상기 레코드번호배열의 부분에 포함되는 레코드번호에 관련지어진 항목값번호의 현재 자릿수 값의 출현횟수를 카운트하는 수단을 포함하고,
    적어도 1대의 프로세서의 상기 정렬처리를 반복하는 수단이, 상기 항목값번호의 현재 자릿수의 값이 다른 경우에는 상기 항목값번호의 현재 자릿수 값의 순서에 따르고, 상기 항목값번호의 현재 자릿수의 동일한 값이 2대 이상의 프로세서에 의해 카운트되고 있는 경우에는 상기 레코드번호배열의 부분의 순서에 따라서, 상기 항목값번호의 현재 자릿수 값의 각각의 출현횟수를 누계수로 변환하는 수단을 포함하며,
    상기 정렬처리를 반복하는 수단이, 상기 레코드번호배열의 부분에 포함되는 레코드번호에 관련지어진 상기 항목값번호의 현재 자릿수 값의 누계수를 포인터로서 이용하여, 상기 레코드번호배열의 부분에 포함되는 레코드번호를 또 다른 레코드번호배열에 저장하는 수단을 더 포함하는 공유 메모리형 멀티 프로세서 시스템.
  11. 표형식 데이터의 레코드의 레코드번호가 소정의 레코드순서에 따라 저장된 레코드번호배열, 표형식 데이터의 레코드의 소정 항목의 항목값에 대응하는 항목값번호가 레코드번호에 관련지어 저장된 항목값번호배열, 및 표형식 데이터의 항목값이 해당 항목값에 대응하는 항목값번호의 순서에 따라 저장된 항목값배열을 기억하는 공유 메모리와,
    상기 공유 메모리에 액세스가능한 n(n≥1)대의 프로세서를 구비한 공유 메모리형 멀티 프로세서 시스템에 있어서,
    각 프로세서에 의해,
    n1(n1≤n)개의 부분으로 분할된 상기 레코드번호배열중 각 프로세서가 담당하는 부분을 결정하는 기능과,
    상기 레코드번호배열의 부분에 포함되는 레코드번호에 관련지어진 항목값번호의 출현횟수를 카운트하는 기능과,
    n2(n2≤n)개의 범위로 분할된 상기 항목값번호의 범위중 각 프로세서가 담당하는 범위를 결정하는 기능과,
    상기 항목값번호가 다른 경우에는 상기 항목값번호의 순서에 따르고, 동일한 항목값번호의 출현횟수가 2대 이상의 프로세서에 의해 카운트되고 있는 경우에는 상기 레코드번호배열의 부분의 순서에 따라서, 각 프로세서가 담당하는 범위 내의 항목값번호의 각각의 출현횟수를 누계수로 변환하는 기능과,
    상기 레코드번호배열의 부분에 포함되는 레코드번호에 관련지어진 상기 항목값번호의 누계수를 포인터로서 이용하여, 상기 레코드번호배열의 부분에 포함되는 레코드번호를 또 다른 레코드번호배열에 저장하는 기능을 실현하기 위한 프로그램을 기록한 컴퓨터 판독가능한 기록매체.
  12. 표형식 데이터의 레코드의 레코드번호가 소정의 레코드순서에 따라 저장된 레코드번호배열, 표형식 데이터의 레코드의 소정 항목의 항목값에 대응하는 항목값번호가 레코드번호에 관련지어 저장된 항목값번호배열, 및 표형식 데이터의 항목값이 해당 항목값에 대응하는 항목값번호의 순서에 따라 저장된 항목값배열을 기억하는 공유 메모리와,
    상기 공유 메모리에 액세스가능한 복수의 프로세서를 구비한 공유 메모리형 멀티 프로세서 시스템에 있어서,
    각 프로세서에 의해,
    상기 항목값번호의 범위에 따라 상기 항목값번호의 기수를 설정하는 기능과,
    상기 기수로 표현된 상기 항목값번호의 최하위 자릿수로부터 최상위 자릿수까지 순서대로 현재 자릿수를 설정하며, 1회째는 상기 레코드번호배열을 현재의 레코드번호배열로서, 2회째 이후는 또 다른 레코드번호배열을 현재의 레코드번호배열로서 설정하여 상기 현재 자릿수의 정렬처리를 제어하는 기능과,
    상기 레코드번호배열중 각 프로세서가 담당하는 부분을 결정하는 기능과,
    상기 레코드번호배열의 부분에 포함되는 레코드번호에 관련지어진 항목값번호의 현재 자릿수 값의 출현횟수를 카운트하는 기능과,
    상기 항목값번호의 현재 자릿수 값의 범위중 각 프로세서가 담당하는 범위를 결정하는 기능과,
    상기 항목값번호의 현재 자릿수의 값이 다른 경우에는 상기 항목값번호의 현재 자릿수 값의 순서에 따르고, 상기 항목값번호의 현재 자릿수의 동일한 값이 2대 이상의 프로세서에 의해 카운트되고 있는 경우에는 상기 레코드번호배열의 부분의 순서에 따라서, 각 프로세서가 담당하는 범위 내의 항목값번호의 현재 자릿수 값의 각각의 출현횟수를 누계수로 변환하는 기능과,
    상기 레코드번호배열의 부분에 포함되는 레코드번호에 관련지어진 상기 항목값번호의 현재 자릿수 값의 누계수를 포인터로서 이용하여, 상기 레코드번호배열의 부분에 포함되는 레코드번호를 또 다른 레코드번호배열에 저장하는 기능을 실현하기 위한 프로그램을 기록한 컴퓨터 판독가능한 기록매체.
  13. 표형식 데이터의 레코드의 레코드번호가 소정의 레코드순서에 따라 저장된 레코드번호배열, 표형식 데이터의 레코드의 소정 항목의 항목값에 대응하는 항목값번호가 레코드번호에 관련지어 저장된 항목값번호배열, 및 표형식 데이터의 항목값이 해당 항목값에 대응하는 항목값번호의 순서에 따라 저장된 항목값배열을 기억하는 공유 메모리와,
    상기 공유 메모리에 액세스가능한 복수의 프로세서를 구비한 공유 메모리형 멀티 프로세서 시스템에 있어서,
    각 프로세서에 의해,
    상기 항목값번호의 범위에 따라 상기 항목값번호의 기수를 설정하는 기능과,
    상기 기수로 표현된 상기 항목값번호의 최하위 자릿수로부터 최상위 자릿수까지 순서대로 현재 자릿수를 설정하며, 1회째는 상기 레코드번호배열을 현재의 레코드번호배열로서, 2회째 이후는 또 다른 레코드번호배열을 현재의 레코드번호배열로서 설정하여 상기 현재 자릿수의 정렬처리를 제어하는 기능과,
    상기 레코드번호배열중 각 프로세서가 담당하는 부분을 결정하는 기능과,
    상기 레코드번호배열의 부분에 포함되는 레코드번호에 관련지어진 항목값번호의 현재 자릿수 값의 출현횟수를 카운트하는 기능을 실현하며,
    적어도 1대의 프로세서에 의해, 상기 항목값번호의 현재 자릿수 값이 다른 경우에는 상기 항목값번호의 현재 자릿수 값의 순서에 따르고, 상기 항목값번호의 현재 자릿수의 동일한 값이 2대 이상의 프로세서에 의해 카운트되고 있는 경우에는 상기 레코드번호배열의 부분의 순서에 따라서, 상기 항목값번호의 현재 자릿수 값의 각각의 출현횟수를 누계수로 변환하는 기능을 실현하며,
    상기 각 프로세서에 의해, 상기 레코드번호배열의 부분에 포함되는 레코드번호에 관련지어진 상기 항목값번호의 현재 자릿수 값의 누계수를 포인터로서 이용하여, 상기 레코드번호배열의 부분에 포함되는 레코드번호를 또 다른 레코드번호배열에 저장하는 기능을 더욱 실현하기 위한 프로그램을 기록한 컴퓨터 판독가능한 기록매체.
  14. 표형식 데이터의 레코드의 레코드번호가 소정의 레코드순서에 따라 저장된 레코드번호배열, 표형식 데이터의 레코드의 소정 항목의 항목값에 대응하는 항목값번호가 레코드번호에 관련지어 저장된 항목값번호 배열, 및 표형식 데이터의 항목값이 해당 항목값에 대응하는 항목값번호의 순서에 따라 저장된 항목값배열을 기억하는 공유 메모리와,
    상기 공유 메모리에 액세스가능한 n(n≥1)대의 프로세서를 구비한 공유 메모리형 멀티 프로세서 시스템에 있어서,
    n1(n1≤n)개의 부분으로 분할된 상기 레코드번호배열의 부분이 할당된 상기 n대의 프로세서 중 n1대의 프로세서 각각에 의해, 상기 할당된 레코드번호배열의 부분에 포함되는 레코드번호에 관련지어진 항목값번호의 출현횟수를 카운트하는 기능을 실현하며,
    n2(n2≤n)개의 범위로 분할된 상기 항목값번호의 범위가 할당된 상기 n대의 프로세서 중의 n2대의 프로세서 각각에 의해, 상기 n2대의 프로세서에 할당된 항목값번호에 관하여, (i)상기 n1대의 프로세서 중의 각 프로세서에 의해 카운트된 상기 출현횟수의 합을 산출하고, 산출된 합을 상기 항목값번호의 범위의 순으로 상기 n2대의 프로세서 사이에서 전파시키며, (ii)상기 항목값번호가 다른 경우에는 상기 항목값번호의 순서에 따르고, 동일한 항목값번호의 출현횟수가 2대 이상의 프로세서에 의해 카운트되고 있는 경우에는 상기 레코드번호배열의 부분의 순서에 따라서, 상기 출현횟수를 누계수로 변환하며, 상기 전파된 합을 상기 누계수에 가산함으로써, 상기 n1대의 프로세서중의 각 프로세서에 할당된 레코드번호배열의 부분에 포함되는 레코드번호에 관련지어진 항목값번호마다 상기 출현횟수를 누계수로 변환하는 기능을 실현하며,
    상기 n1대의 프로세서 중의 각 프로세서에 의해, 상기 할당된 레코드번호배열의 부분에 포함되는 레코드번호에 관련지어진 상기 항목값번호마다 얻어진 상기 누계수를 포인터로서 이용하여, 상기 할당된 상기 레코드번호배열의 부분에 포함되는 레코드번호를 또 다른 레코드번호배열에 저장하는 기능을 실현하기 위한 프로그램을 기록한 컴퓨터 판독가능한 기록매체.
  15. 표형식 데이터의 레코드의 레코드번호가 소정의 레코드순서에 따라 저장된 레코드번호배열, 표형식 데이터의 레코드의 소정 항목의 항목값에 대응하는 항목값번호가 레코드번호에 관련지어 저장된 항목값번호배열, 및 표형식 데이터의 항목값이 해당 항목값에 대응하는 항목값번호의 순서에 따라 저장된 항목값배열을 기억하는 공유 메모리와,
    상기 공유 메모리에 액세스가능한 n(n≥1)대의 프로세서를 구비한 공유 메모리형 멀티 프로세서 시스템에 있어서,
    적어도 1대의 프로세서에 의해,
    상기 항목값번호의 범위에 따라 상기 항목값번호의 기수를 설정함으로써, 상기 항목값번호를 상위 자릿수와 하위 자릿수로 나누는 기능과,
    상기 레코드번호배열에 포함되는 레코드번호에 관련지어진 상기 항목값번호의 상위 자릿수 값의 출현횟수를 카운트하여, 상기 항목값번호의 상위 자릿수 값의 순서에 따라 상기 출현횟수를 누계수로 변환하며, 상기 항목값번호의 상위 자릿수 값의 누계수를 포인터로서 이용하여 상기 레코드번호배열 중의 레코드번호를 바꾸어 나열하여, 상기 항목값번호의 상위 자릿수 값의 순서에 따라 n1(≤n)으로 구분된 중간적인 레코드번호배열을 생성하는 기능을 실현하며,
    상기 중간적인 레코드번호배열의 구분마다 할당된 각 프로세서에 의해, 상기 중간적인 레코드번호배열 중의 상기 할당된 구분 내의 레코드번호에 관련지어진 상기 항목값번호의 하위 자릿수 값의 출현횟수를 카운트하고, 상기 항목값번호의 하위 자릿수 값의 순서에 따라 상기 출현횟수를 누계수로 변환하며, 상기 항목값번호의 하위 자릿수 값의 누계수를 포인터로서 이용하여 상기 중간적인 레코드번호배열 중의 상기 할당된 구분 내의 레코드번호를 그 관련지어진 상기 항목값번호의 하위 자릿수 값의 순으로 바꾸어 나열하는 기능을 실현하기 위한 프로그램을 기록한 컴퓨터 판독가능한 기록매체.
  16. 삭제
KR1020077017364A 2005-05-24 2006-05-22 멀티 프로세서 시스템 및 그 정보처리방법 KR101196566B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2005150604 2005-05-24
JPJP-P-2005-00150604 2005-05-24
PCT/JP2006/310110 WO2006126467A1 (ja) 2005-05-24 2006-05-22 マルチプロセッサシステム及びその情報処理方法

Publications (2)

Publication Number Publication Date
KR20080014726A KR20080014726A (ko) 2008-02-14
KR101196566B1 true KR101196566B1 (ko) 2012-11-01

Family

ID=37451891

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020077017364A KR101196566B1 (ko) 2005-05-24 2006-05-22 멀티 프로세서 시스템 및 그 정보처리방법

Country Status (7)

Country Link
US (2) US7801903B2 (ko)
EP (1) EP1901183A4 (ko)
JP (1) JP4339381B2 (ko)
KR (1) KR101196566B1 (ko)
CN (1) CN101133414B (ko)
CA (1) CA2595858A1 (ko)
WO (1) WO2006126467A1 (ko)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4758429B2 (ja) * 2005-08-15 2011-08-31 株式会社ターボデータラボラトリー 共有メモリ型マルチプロセッサシステム及びその情報処理方法
JP4881435B2 (ja) * 2007-06-21 2012-02-22 株式会社ターボデータラボラトリー メモリ共有型並列処理システムにおいて表形式データを集計する方法及び装置
JP5208117B2 (ja) * 2007-08-28 2013-06-12 株式会社ターボデータラボラトリー 表形式データを操作するマルチコア対応データ処理方法、マルチコア型処理装置、及び、プログラム
WO2009044486A1 (ja) * 2007-10-05 2009-04-09 Turbo Data Laboratories, Inc. 表形式データをソートする方法、マルチコア型装置、及び、プログラム
US8473467B2 (en) 2009-01-02 2013-06-25 Apple Inc. Content profiling to dynamically configure content processing
US8959094B2 (en) * 2010-05-28 2015-02-17 Oracle International Corporation Early return of partial sort results in a database system
US20120259869A1 (en) * 2011-04-07 2012-10-11 Infosys Technologies, Ltd. System and method for implementing a window sorting mechanism
GB2500863A (en) * 2012-01-20 2013-10-09 Data Re Ltd A method of indexing a database
KR101196145B1 (ko) 2012-02-21 2012-10-30 인하대학교 산학협력단 Cuda를 이용한 최장공통비상위문자열 그래프 모델의 병렬 생성 방법
KR101993258B1 (ko) 2012-11-22 2019-09-27 삼성전자주식회사 레지스터 슬라이싱 회로 및 이를 포함하는 시스템 온 칩
US9177006B2 (en) * 2012-12-29 2015-11-03 International Business Machines Corporation Radix sort with read-only key
WO2015050474A1 (en) * 2013-10-03 2015-04-09 Huawei Technologies Co., Ltd Method and system for assigning a computational block of a software program to cores of a multi-processor system
CN104657388A (zh) * 2013-11-22 2015-05-27 阿里巴巴集团控股有限公司 一种数据处理方法和装置
US9628107B2 (en) 2014-04-07 2017-04-18 International Business Machines Corporation Compression of floating-point data by identifying a previous loss of precision
US9959299B2 (en) 2014-12-02 2018-05-01 International Business Machines Corporation Compression-aware partial sort of streaming columnar data
US10909078B2 (en) 2015-02-25 2021-02-02 International Business Machines Corporation Query predicate evaluation and computation for hierarchically compressed data
US10296612B2 (en) 2015-09-29 2019-05-21 At&T Mobility Ii Llc Sorting system
US10416959B2 (en) 2015-10-27 2019-09-17 At&T Mobility Ii Llc Analog sorter
US10496370B2 (en) 2015-12-02 2019-12-03 At&T Intellectual Property I, L.P. Adaptive alphanumeric sorting apparatus
US10261832B2 (en) 2015-12-02 2019-04-16 At&T Mobility Ii Llc Sorting apparatus
US10216478B2 (en) 2016-03-30 2019-02-26 International Business Machines Corporation Increasing radix sorting efficiency utilizing a crossover point
US9934287B1 (en) * 2017-07-25 2018-04-03 Capital One Services, Llc Systems and methods for expedited large file processing
CN108052309A (zh) * 2017-12-26 2018-05-18 杭州迪普科技股份有限公司 一种对象排序方法及装置
CN109857573B (zh) * 2018-12-29 2021-03-05 深圳云天励飞技术有限公司 一种数据共享方法、装置、设备及系统
US11281427B2 (en) * 2019-04-24 2022-03-22 Ido Dov Cohen Fast sort engine

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004092948A1 (ja) 2003-04-16 2004-10-28 Turbo Data Lab Inc 情報処理システムおよび情報処理方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0522488B1 (en) 1991-07-10 2002-02-20 Hitachi, Ltd. Method of sorting on distributed database system and method of accessing thereto
JP3395208B2 (ja) * 1991-07-10 2003-04-07 株式会社日立製作所 分散データベースのソート方法およびアクセス方法
US5765146A (en) * 1993-11-04 1998-06-09 International Business Machines Corporation Method of performing a parallel relational database query in a multiprocessor environment
WO2000010103A1 (fr) 1998-08-11 2000-02-24 Shinji Furusho Procede et dispositif de recuperation, de stockage et de triage de donnees formatees en tableaux
JP2001147800A (ja) * 1999-11-22 2001-05-29 Taabo Data Laboratory Kk 情報処理システム、並びに、この情報処理システムを利用したソート方法、コンパイル方法およびジョイン方法
EP1412864A1 (en) * 2001-07-18 2004-04-28 Koninklijke Philips Electronics N.V. Non-volatile memory arrangement and method in a multiprocessor device
KR101030249B1 (ko) * 2003-10-24 2011-04-22 가부시키가이샤 터보 데이터 라보라토리 분산 메모리형 정보 처리 시스템
JP4758429B2 (ja) * 2005-08-15 2011-08-31 株式会社ターボデータラボラトリー 共有メモリ型マルチプロセッサシステム及びその情報処理方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004092948A1 (ja) 2003-04-16 2004-10-28 Turbo Data Lab Inc 情報処理システムおよび情報処理方法

Also Published As

Publication number Publication date
JPWO2006126467A1 (ja) 2008-12-25
KR20080014726A (ko) 2008-02-14
CN101133414B (zh) 2011-05-04
US8065337B2 (en) 2011-11-22
US7801903B2 (en) 2010-09-21
WO2006126467A1 (ja) 2006-11-30
CA2595858A1 (en) 2006-11-30
CN101133414A (zh) 2008-02-27
EP1901183A1 (en) 2008-03-19
US20080215584A1 (en) 2008-09-04
EP1901183A4 (en) 2010-01-13
US20100312802A1 (en) 2010-12-09
JP4339381B2 (ja) 2009-10-07

Similar Documents

Publication Publication Date Title
KR101196566B1 (ko) 멀티 프로세서 시스템 및 그 정보처리방법
US9529590B2 (en) Processor for large graph algorithm computations and matrix operations
CN101782893A (zh) 可重构数据处理平台
Komarov et al. Fast k-NNG construction with GPU-based quick multi-select
CN111292805B (zh) 一种三代测序数据重叠检测方法及系统
Liu et al. GPU-accelerated BWT construction for large collection of short reads
CN116521611A (zh) 一种深度学习处理器的泛化架构设计方法
US7849289B2 (en) Distributed memory type information processing system
CN111028897A (zh) 一种基于Hadoop的基因组索引构建的分布式并行计算方法
Lu et al. GSNP: a DNA single-nucleotide polymorphism detection system with GPU acceleration
JPWO2019220692A1 (ja) 演算装置
WO2005106713A1 (ja) 情報処理方法及び情報処理システム
JP4881435B2 (ja) メモリ共有型並列処理システムにおいて表形式データを集計する方法及び装置
WO2010013320A1 (ja) 表形式データを操作する方法、分散メモリ型マルチプロセッサ、及び、プログラム
US20080281843A1 (en) Distributed Memory Type Information Processing System
Riha et al. An Adaptive Hybrid OLAP Architecture with optimized memory access patterns
EP1615121A1 (en) Information processing system and information processing method
Bandyopadhyay et al. Sorting large multifield records on a GPU
JP4995724B2 (ja) 情報処理システムおよび情報処理方法
CN117493386B (zh) 数据库访问方法及装置、存储介质和电子设备
Izadkhah Divide and Conquer
JP5008720B2 (ja) メモリ間接参照をメモリ直接参照に変換する方法及び装置
Du et al. GPU acceleration of finding LPRs in DNA sequence based on SUA index
Chen et al. Fast scalable algorithm on LARPBS for sequence alignment
CN110825936A (zh) 生成倒排索引和用倒排索引检索的方法、系统及存储介质

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20151005

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20180911

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20190919

Year of fee payment: 8