KR20140113482A - Simd 명령어 세트 아키텍처를 이용하여 대규모 데이터 세트 내에서 최소 및 최대 값들을 찾기 위한 고속 접근법 - Google Patents

Simd 명령어 세트 아키텍처를 이용하여 대규모 데이터 세트 내에서 최소 및 최대 값들을 찾기 위한 고속 접근법 Download PDF

Info

Publication number
KR20140113482A
KR20140113482A KR1020140029886A KR20140029886A KR20140113482A KR 20140113482 A KR20140113482 A KR 20140113482A KR 1020140029886 A KR1020140029886 A KR 1020140029886A KR 20140029886 A KR20140029886 A KR 20140029886A KR 20140113482 A KR20140113482 A KR 20140113482A
Authority
KR
South Korea
Prior art keywords
data
data set
boundary value
data unit
sets
Prior art date
Application number
KR1020140029886A
Other languages
English (en)
Other versions
KR101597623B1 (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 KR20140113482A publication Critical patent/KR20140113482A/ko
Application granted granted Critical
Publication of KR101597623B1 publication Critical patent/KR101597623B1/ko

Links

Images

Classifications

    • 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/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2272Management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/22Arrangements for sorting or merging computer data on continuous record carriers, e.g. tape, drum, disc

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Advance Control (AREA)
  • Image Processing (AREA)

Abstract

시스템 및 방법은 단일 명령어 다중 데이터(single instruction multiple data; SIMD) 명령어 세트 아키텍처 및 어레이 엔트리들의 특정 데이터 레이아웃을 이용하여, 대규모 데이터 세트 내에서 경계값 데이터 유닛을 결정하고, 이와 병행하여, 대규모 데이터 세트로의 결정된 경계값 데이터 유닛의 연관 인덱스를 결정할 수 있다. 일 예에서, 어레이 엔트리들의 특정 데이터 레이아웃은 데이터 값 및 그의 어레이에 대한 연관 인덱스를 단일 어레이 엔트리로 결합한다.

Description

SIMD 명령어 세트 아키텍처를 이용하여 대규모 데이터 세트 내에서 최소 및 최대 값들을 찾기 위한 고속 접근법{FAST APPROACH TO FINDING MINIMUM AND MAXIMUM VALUES IN A LARGE DATA SET USING SIMD INSTRUCTION SET ARCHITECTURE}
여기서 실시되는 실시예들은 일반적으로 대규모 데이터 세트들에 대한 데이터 처리에 관한 것으로, 보다 상세하게는, 단일 명령어 다중 데이터(single insturction multiple data; SIMD) 프로세서들을 이용하여 대규모 데이터 세트들을 처리하는 것에 관한 것이다.
SIMD 프로세서들은 일반적으로 복잡한 제어 플로우 또는 과도한 양의 프로세서간 통신없이 대용량의 데이터 병렬처리(data parallelism)를 나타내는 애플리케이션들에서 사용된다. SIMD 프로세서들에 대한 전형적인 애플리케이션들은, 예를 들면, 패턴 인식, 데이터베이스 검색, 및 통계 분석과 같은 저레벨 비전 및 이미지 처리를 포함할 수 있다. 이미지 처리에 있어서 수반되는 하나의 공통적인 연산은 최소값 또는 최대값 및 대규모 데이터 어레이로의 연관 인덱스를 찾는 것이다. 대부분의 SIMD 프로세서들은 최소 및 최대 연산들을 빠르게 수행할 수 있는 명령어들을 제공한다. 그러나, SIMD 프로세서들이 이들 값을 생성하는 인덱스들을 추적해야 한다면, SIMD 명령어들의 데이터 병렬처리가 깨어질 수 있다.
본 발명의 실시예들의 다양한 이점은 다음의 상세한 설명 및 첨부의 청구범위를 읽음으로써, 그리고 다음의 도면을 참조함으로써 당업자에게 자명해질 것이다.
도 1은 실시예에 따른 컴퓨팅 시스템의 예의 블록도이다.
도 2a 및 도 2b는 실시예에 따른 대규모 데이터 세트 및 대규모 데이터 세트의 데이터 레이아웃의 예들의 도면이다.
도 3은 실시예에 따라 경계 데이터값 유닛 및 연관 인덱스를 결정하는 방법의 예의 흐름도이다.
도 4a 및 도 4b는 실시예에 따른 SIMD 명령어 리스팅 및 블록도의 예들의 도면이다.
도 5는 실시예에 따른 시스템의 블록도이다.
도 6은 실시예에 따른 디바이스의 도면이다.
이제, 도 1을 참조하면, 중앙 처리 유닛(CPU; 120), 시스템 메모리(130), 데이터베이스(150)를 포함하는 저장 장치(140), 그래픽 프로세싱 유닛(GPU; 160) 및 그래픽 메모리(170)를 포함하는 컴퓨팅 시스템(100)이 도시되어 있다. 도시된 시스템(100)은 랩톱, PDA(personal digital assistant), 무선 스마트폰, 미디어 플레이어, 이미징 디바이스, MID(mobile Internet device), 스마트 태블릿 등과 같은 모바일 플랫폼의 일부, 또는 그들의 임의의 조합일 수 있다. 시스템(100)은 또한 PC(personal computer) 서버, 워크스테이션 등과 같은 고정 플랫폼의 일부일 수 있다.
CPU(120)는, 예를 들면, DDR(dual data rate) 동기식 동적 랜덤 액세스 메모리 모듈들과 같은 랜덤 액세스 메모리를 포함할 수 있는 시스템 메모리(130)로의 액세스를 제공하는 메모리 컨트롤러(도시 생략)를 포함할 수 있다. 시스템 메모리(130)의 모듈들은 SIMM(single inline memory module), DIMM(dual inline memory module), SODIMM(small outline DIMM) 등으로 통합될 수 있다. CPU(120)는 또한 하나 이상의 드라이버들 및/또는 프로세서 코어들(도시 생략)을 구비할 수 있고, 여기서, 각각의 코어는 명령어 페치 유닛들, 명령어 디코더들, 레벨 1(L1) 캐시, 실행 유닛들 등을 갖는 완전히 기능적일 수 있다. CPU는 하나 이상의 SIMD(single instruction multiple data) 프로세서 코어들을 포함할 수 있다. CPU(120)는 또한 마이크로소프트 윈도우, 리눅스, 또는 맥(맥킨토시) 운영 시스템(OS)과 같은 OS를 실행할 수 있다.
저장 장치(140)는, 자기 디스크 드라이브, 광학 드라이브, 플래시 메모리, 또는 정보를 영구 저장할 수 있는 다른 디바이스들을 포함하는 다양한 컴포넌트들 또는 서브시스템들로 구현될 수 있다. 도 1에 도시된 바와 같이, 저장 장치(140)는 대규모 데이터 세트를 저장하는 데이터베이스(150)를 포함한다.
도시된 시스템(100)은 또한 그래픽 메모리(170)에 결합된 GPU(graphics processing unit; 160)를 포함한다. 전용 그래픽 메모리(170)는 GDDR(그래픽 DDR) 또는 DDR SDRAM 모듈들, 또는 그래픽 렌더링을 지원하는데 적절한 임의의 다른 메모리 기술을 포함할 수 있다. GPU(160) 및 그래픽 메모리(170)는 그래픽/비디오 카드 상에 설치될 수 있고, 여기서, GPU(160)는 PEG(PCI Express Graphics, 예를 들면, 주변 컴포넌트 상호접속/PCI 익스프레스 x16 그래픽스 150W-ATX 명세1.0, PCI 특정 관심 그룹) 버스, 또는 가속 그래픽 포트(예를 들면, AGP V3.0 인터페이스 명세, 2002년 9월) 버스 같은 그래픽 버스를 통해 GPU(120)와 통신할 수 있다. 그래픽 카드는 시스템 마더보드 상에, 메인 CPU(120)에 통합될 수 있고, 마더보드 상에 개별 카드 등으로서 구성될 수 있다.
도시된 GPU(160)는 소프트웨어 모듈을 그래픽 애플리케이션의 일부로서 실행한다. 그래픽 애플리케이션은 대규모 데이터 세트에서 최소값 또는 최대값 및 대규모 데이터 어레이로의 연관 인덱스를 결정하는데 필요할 수 있다. 일 예에서, 소프트웨어 모듈은 대규모 데이터 세트에서 최소값 또는 최대값을 결정하고, 이와 병행하여, 대규모 데이터 어레이로의 그 값의 연관 인덱스를 결정하기 위한 코드를 포함한다.
소프트웨어 모듈은 또한 데이터 값과 그 데이터 값의 연관 인덱스를, 대규모 데이터 세트의 데이터 엔트리로서 저장하기 위한 단일 데이터 유닛으로 결합하기 위한 코드를 포함할 수 있다. 소프트웨어 모듈은, 예를 들면, C++과 같은 객체 지향 언어와 같은 임의의 프로그래밍 언어에 기입될 수 있다.
GPU(160)는 또한 그래픽 성능을 향상시키고 및/또는 지원하기 위한 하나 이상의 SIMD 프로세서 코어들을 포함할 수 있다. 따라서, 도시된 접근법은 고레벨의 데이터 병렬처리 및 프로세싱 복잡도를 수반하는 그래픽 환경에서 특히 이점이 있을 수 있다.
이제, 도 2a를 참조하면, 대규모 데이터 세트가 도시되어 있고, 여기서, 대규모 데이터 세트는 어레이 데이터 구조를 포함한다. 도시된 어레이에서 각각의 엔트리는, 도 2b에 도시된 바와 같이, 데이터 값 및 대규모 데이터 세트로의 연관 인덱스를 포함하는 특정 데이터 레이아웃을 구비한다. 데이터 값은 데이터 엔트리의 최상위 비트들에 저장되고, 인덱스는 데이터 엔트리의 최하위 비트들에 저장된다.
소프트웨어 모듈은, 예를 들면, 다음의 코드를 실행함으로써 대규모 데이터 세트의 특정 데이터 레이아웃을 구성하고 어셈블링할 수 있고, 여기서 N=16이다:
declare dataArray[N];
Const IndexArray[16] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};
add (16) acc[0:15] IndexArray[0:15] 0
mac (16) dataIndexArray[0:15] dataArray[0:15] 65536
add (16) acc[0:15] IndexArray[0:15] 16
mac (16) dataIndexArray[16:31] dataArray[16:31] 65536
데이터 엔트리들의 특정 데이터 레이아웃은 데이터값과 그의 인덱스를 단일 데이터 엔트리로 결합함으로써 구성될 수 있다. 소프트웨어 모듈은 매 16개의 입력 데이터 유닛들에 대해 두 개의 SIMD(16) 명령어들을 실행함으로써 대규모 데이터 세트의 특정 데이터 레이아웃을 구성하고 어셈블링할 수 있다. 예를 들면, 처음 16개의 데이터 유닛에 대해, 소프트웨어 모듈은 add(16) acc[0:15] IndexArray[0:15] 0; 및 mac(16) dataIndexArray[0:15] dataArray[0:15] 65536를 실행할 수 있고, 제2 데이터 유닛에 대해, 소프트웨어 모듈은 add(16) acc[0:15] IndexArray[0:15] 16; 및 mac(16) dataIndexArray[16:31] dataArray[16:31] 65536를 실행할 수 있다.
SIMD16 명령어는 16개의 데이터 채널에 대해 동일한 연산을 병렬로 수행한다. SIMD 명령어 프로세싱은 각각의 채널이 순차적으로 프로세싱되는 접근법보다 더 효율적일 수 있다. SIMD16 명령어가 설명되었지만, 임의의 SIMD 명령어가 사용될 수 있다.
또 다른 예시적인 실시예에서, 특정 데이터 레이아웃은 오프-라인으로 구성되고, 데이터베이스(150)는 대규모 데이터 세트로 사전에 파퓰레이팅된다(pre-populated).
도 3은, 예를 들면, 대규모 데이터 세트 내에서 최소 또는 최대 데이터값과 같은 경계값 데이터 유닛을 결정하고, 이와 병행하여, 대규모 데이터 세트로의 결정된 경계값 데이터 유닛의 연관 인덱스를 결정하는 방법을 도시한다. 이 방법은 일반적으로 단일 데이터 유닛이 생성될 때까지 복수의 프로세싱 스테이지 동안 대규모 데이터 세트 내의 소규모 데이터 유닛들에 대해 경계값 데이터 유닛을 연속하여 결정하는 것을 포함할 수 있다.
이 방법은, 랜덤 액세스 메모리(RAM), 판독 전용 메모리(ROM), PROM(Programmable ROM), 펌웨어, 플래시 메모리 등과 같은 메모리의 머신 판독가능 또는 컴퓨터 판독가능 매치에 저장된 로직 명령어들의 세트로서의 실행가능 소프트웨어로 구현되거나, 또는, 예를 들면, PLAs(programmable logic arrays), FPGAs(field programmble gate arrays), CPLDs(complex programmable logic devices)와 같은 구성가능 로직으로 구현되거나, 또는, 예를 들면, ASIC(application specific integrated circuit), CMOS(complementary metal oxide semiconductor) 또는 TTL(transistor-transistor logic) 기술과 같은 회로 기술 및 어셈블리 언어 프로그래밍을 이용하는 고정 기능 하드웨어로 구현되거나, 또는 그들의 임의의 조합으로 구현될 수 있다.
프로세스 블록(310)에서, 프로세싱 스테이지(예를 들면, 제1 프로세싱 스테이지)는 데이터 세트를 수신한다. 제1 프로세싱 스테이지에 의해 수신되는 데이터 세트는 대규모 데이터 세트를 포함할 수 있다. 데이터 세트는 프로세스 블록(320)에서 복수의 소규모 데이터 세트로 분할된다. SIMD 환경에서, 예를 들면, 32개의 어레이 엘리먼트들을 포함하는 대규모 데이터 세트는 각각 16개의 어레이 엘리먼트를 포함하는 두 개의 서브-어레이로 분할되고, 여기서, 각각의 어레이 엘리먼트는 도 2b에 도시된 특정 데이터 레이아웃을 포함한다.
이 예에서, 대규모 데이터 세트는, 시스템의 성능을 향상시키기 위해 SIMD 명령어들(예를 들면, SIMD16 명령어)이 가능한 한 많은 데이터 유닛들을 병렬로 처리하는데 사용되는 것을 보장하도록 유닛들로 분할된다. 임의의 SIMD 구성이 사용될 수 있다.
프로세스 블록(330)에서, 소규모 데이터 세트들의 세트들 간에 경계값 데이터 유닛이 결정되고, 이와 동시에, 그의 연관 인덱스가 결정된다. 예를 들면, 각각의 데이터 채널(즉, 어레이 엘리먼트)에 대해 제1 서브어레이와 제2 서브어레이 간에 최소 데이터값이 결정될 수 있다.
각각의 서브어레이는 16개의 어레이 엘리먼트를 포함하고, 예를 들면, min(16) minArray[0:15] sub-array1[0:15] sub-array2[16:31]과 같은 SIMD16을 이용하여, 예를 들면, set(0) sub-array1[0], subarray2[0]; set(1) sub-array1[1], sub-array2[1]; set(2) sub-array1[2], sub-array2[2]; set(3) sub-array1[3], sub-array2[3]; set(4) sub-array1[4], sub-array2[4]; set(5) sub-array1[5], sub-array2[5]; set(6) sub-array1[6], sub-array2[6]; 및 set (15) sub-array1[15], sub-array2[15]와 같은 16개의 데이터 세트들 간의 최소 데이터값이 병렬로 결정될 수 있다.
서브어레이 1 및 서브어레이2에서 각각의 데이터 세트 간에 결정된 각각의 최소 데이터값에 대한 인덱스 값이 결과의 데이터 세트에 포함된다. 최소값이 결정되는 경우, 각각의 데이터 값의 인덱스 값이, 각각의 엔트리에 대해 특정 데이터 레이아웃과 일치하는 데이터 값에 첨부되기 때문에, 그 값의 인덱스 또한 결정된다. 인덱스 값은 최소 데이터 값의 최하위 비트들에 위치된다.
각각의 데이터 세트 간의 최소 데이터 값들은 16개의 어레이 엘리먼트를 포함하는 새로운 데이터 세트로서 저장된다. 각각의 어레이 엘리먼트는 대응하는 세트들 간의 최소 데이터 값 및 그 데이터 값의 연관 인덱스를 포함한다. 프로세스 블록(340)에서 새로운 데이터 세트가 출력된다.
프로세스 블록(350)에서, 방법은 데이터 세트가 단일 엔트리(즉, 어레이 엘리먼트)를 포함하는지를 결정한다. 이 예에서, n=16이다. n이 1과 동일하지 않으면, 방법은 프로세싱의 그 다음 계층적 스테이지로 계속된다. 프로세싱의 그 다음 계층적 스테이지는 프로세스 블록(310-340)의 프로세싱을 수행한다.
예를 들면, 프로세싱의 제2 스테이지는 16개의 어레이 엘리먼트를 포함하는 데이터 세트를 수신한다. 데이터 세트는 각각 8개의 어레이 엘리먼트를 포함하는 두 개의 서브어레이로 분할된다. 이제 대규모 데이터 세트는 8개의 데이터 채널을 포함하는 서브어레이들로 분할되므로, SIMD8 명령어를 이용하여 새로운 데이터 세트의 경계 데이터 값을 결정할 수 있다.
예를 들면, min(8) minArray[0:7] sub-array1[0:7] sub-array2[8:15]와 같은 SIMD8 명령어를 이용하여, 예를 들면, set(0) sub-array1[0], subarray2[0]; set(1) sub-array1[1], sub-array2[1]; set(2) sub-array1[2], sub-array2[2]; set(3) sub-array1[3], sub-array2[3]; set(4) sub-array1[4], sub-array2[4]; set(5) sub-array1[5], sub-array2[5], set(6) sub-array1[6], sub-array2[6] 및 set(7) sub-array1[7], sub-array2[7]와 같은 8개의 데이터 세트들 간의 최소 데이터 값들이 병렬로 결정될 수 있다.
각각의 데이터 세트 간의 최소 데이터 값들은 8개의 어레이 엘리먼트를 포함하는 새로운 데이터 세트로서 저장된다. 각각의 어레이 엘리먼트는 대응하는 세트들 간의 최소 데이터 값 및 그 데이터 값의 연관 인덱스를 포함한다. 새로운 데이터 세트는 프로세스 블록(340)에서 출력된다. 프로세스 블록(350)에서, n=8이다.
프로세싱의 제3 스테이지는 8개의 어레이 엘리먼트를 포함하는 데이터 세트를 수신한다. 데이터 세트는 각각 4개의 어레이 엘리먼트를 포함하는 두 개의 서브어레이로 분할된다. 대규모 데이터 세트가 4개의 데이터 채널을 포함하는 서브어레이들로 분할되므로, SIMD4 명령어를 이용하여 새로운 데이터 세트의 경계 데이터 값을 결정할 수 있다.
예를 들면, min(4) minArray[0:3] sub-array1[0:3] sub-array2[4:7]와 같은 SIMD4를 이용하여, 예를 들면, set(0) sub-array1[0], subarray2[0]; set(1) sub-array1[1], sub-array2[1]; set(2) sub-array1[2], sub-array2[2]; set(3) sub-array1[3], sub-array2[3]; 및 set(4) sub-array1[4], sub-array2[4]와 같은 4개의 데이터 세트들 간의 최소 데이터 값들이 병렬로 결정될 수 있다.
각각의 데이터 세트 간의 최소 데이터 값들은 4개의 어레이 엘리먼트를 포함하는 새로운 데이터 세트로서 저장된다. 각각의 어레이 엘리먼트는 대응하는 세트들 간의 최소 데이터 값 및 그 데이터 값의 연관 인덱스를 포함한다. 새로운 데이터 세트가 프로세스 블록(340)에서 출력된다. 프로세스 블록(350)에서, n=4이다.
제4 프로세싱 스테이지는 4개의 어레이 엘리먼트를 포함하는 데이터 세트를 수신한다. 데이터 세트는 각각 두 개의 어레이 엘리먼트를 포함하는 두 개의 서브어레이로 분할된다. 대규모 데이터 세트가 두 개의 데이터 채널을 포함하는 서브어레이들로 분할되므로, SIMD2 명령어를 이용하여 새로운 데이터 세트의 경계 데이터 값을 결정한다.
예를 들면, min(2) minArray[0:1] sub-array1[0:1] sub-array2[2:3]와 같은 SIMD2 명령어를 이용하여, 예를 들면, set(0) sub-array1[0], subarray2[0] 및 set(1) sub-array1[1], sub-array2[1]과 같은 두 개의 데이터 세트 간의 최소 데이터 값이 병렬로 결정될 수 있다.
각각의 데이터 세트 간의 최소 데이터 값들은 두 개의 어레이 엘리먼트를 포함하는 새로운 데이터 세트로서 저장된다. 각각의 어레이 엘리먼트는 대응하는 세트들 간의 최소 데이터 값 및 그 데이터 값의 연관 인덱스를 포함한다. 새로운 데이터 세트가 프로세스 블록(340)에서 출력된다. 프로세스 블록(350)에서, n=2이다.
제5 프로세싱 스테이지는 두 개의 어레이 엘리먼트를 포함하는 데이터 세트를 수신한다. 데이터 세트는 각각 하나의 어레이 엘리먼트를 포함하는 두 개의 서브어레이로 분할된다. 대규모 데이터 세트가 하나의 데이터 채널을 포함하는 서브어레이들로 분할되므로, SIMD1 명령어를 이용하여 새로운 데이터 세트의 경계값 데이터 값을 결정할 수 있다.
예를 들면, min(1) minArray[0] sub-array1[0] sub-array2[1]과 같은 SIMD1 명령어를 이용하여, 예를 들면, set(0) subarray1[0], subarray2[0]와 같은 단일 데이터 세트 간의 최소 데이터 값이 병렬로 결정될 수 있다.
제5 프로세싱 스테이지가 완료되면, 데이터 세트 간의 최소 데이터 값은 단일 어레이 엘리먼트를 포함한다. 따라서, 프로세스 블록(350)에서, n=1이고 단일 엔트리가 프로세스 블록(360)으로 출력된다. 엔트리의 최상위 비트들은 단일 엔트리의 경계 데이터 값을 포함하고, 엔트리의 최하위 비트들은 그 값의 인덱스를 포함한다. 단일 엔트리의 경계 데이터 값은 전체적인 대규모 데이터 세트에 대한 경계 데이터 값을 나타낸다.
방법은, 데이터 엔트리들의 특정 데이터 레이아웃이 데이터 값 및 단일 엔트리로 결합된 연관 인덱스를 포함하고 있기 때문에 경계 데이터 값 유닛의 연관 인덱스 값을 결정하고 이와 병행하여 전체적인 대규모 데이터 세트에 대해 경계 데이터 값 유닛을 결정할 수 있다. 전체적인 대규모 데이터 세트에 대해 경계 데이터 값이 결정되면, 그의 인덱스가 엔트리의 최하위 비트들로서 저장된다.
예시적인 실시예에서, 새로운 데이터 레이아웃의 모든 인덱스들을 유지하기에 비트들이 충분하지 않은 경우, 데이터 세트는, 동일 그룹 내의 모든 데이터가 특정 데이터 레이아웃에 의해 표현될 수 있도록 몇 개의 소규모 그룹들로 분할될 수 있다. 우선, 도 3에 따라 각각의 그룹에 대해 경계 데이터 값들 및 인덱스들이 계산된다. 다음에, 결과 데이터의 인덱스들이 그룹 인덱스로 대체되어 새로운 데이터 세트를 형성한다. 새로운 데이터 세트는 도 3에 따라 프로세싱되어, 전체적인 경계 데이터 값 및 대응하는 그룹 인덱스를 획득한다. 그룹 인덱스로부터, 그 그룹 내의 경계 데이터 값 및 인덱스가 검색되어 글로벌 데이터 인덱스를 도출할 수 있다.
도 4a는, 예를 들면, 대규모 데이터 세트에서 최소 또는 최대 데이터 값과 같은 경계값 데이터 유닛을 결정하고, 이와 병행하여, 단일 데이터 유닛이 생성될 때까지 복수의 프로세싱 스테이지 동안 대규모 데이터 세트 내의 소규모 데이터 유닛들에 대한 경계값 데이터 유닛을 연속하여 결정하는 것을 포함하여 상기 대규모 데이터 세트로의 결정된 경계값 데이터 유닛의 연관 인덱스를 결정하는 접근법에 대한 특정 데이터 레이아웃을 이용하여 연산들을 수행하기 위한 SIMD 명령어 리스팅을 도시한다. 도 4b는 도 4a의 대응하는 명령어들 및 연산들이 수행되는 방법의 예시적인 블록도이다.
일반적으로, 초기화 부분(401a)은 어레이 dataIndexArray [N]; minArray [16] and maxArray [16]를 초기화하는 것을 제공할 수 있고, 여기서, N=16이다. 리스팅(402a)은 두 개의 어레이 간의 각각의 데이터 채널에 대한 최소 및 최대 데이터 값을 찾고, 그 결과를 minArray[0:15] 및 maxArray[0:15]에 적절히 저장하기 위한 두 개의 SIMD 16 명령어를 도시한다.
리스팅(403a)은 32개의 어레이 엘리먼트보다 더 큰 어레이 크기 및 16의 배수를 갖는 대규모 데이터 세트의 최소 및 최대 데이터 값을 결정하기 위한 의사 코드를 도시한다. 예를 들면, 도 4b에서, 참조번호 403b는 64개의 어레이 엘리먼트를 포함하는 대규모 데이터 세트의 소규모 섹션들에 대해 수행되는 최소 및 최대 연산들을 도시한다. 초기에, 어레이 엘리먼트들 [0:15]와 [16:31] 사이에서 최소 및 최대 데이터 어레이 값들이 결정된다. 403a에서 의사 코드의 제1 반복에서(즉, i=2, N=64), 결과들이 어레이 엘리먼트들 [32:47]와 비교되어 어레이 엘리먼트들 [0: 47] 간의 최소 및 최대 데이터 어레이 값들이 결정된다.
제1 반복의 결과들이 의사 코드의 제2 반복에서(즉, i=3) 어레이 엘리먼트 [48:63]와 비교되어 어레이 엘리먼트들 [0:63] 간의 최소 및 최대 데이터 어레이 값들이 결정된다. 그 결과의 데이터 어레이들은 minArray [0:15] 및 maxArray [0:15]이다. 각각의 어레이는 16개의 어레이 엘리먼트를 포함한다.
리스팅(404a)은 대규모 데이터 세트가 각각 8개의 데이터 어레이 엘리먼트를 포함하는 두 개의 서브어레이로 분할될 때 대규모 데이터 세트에서 최소 및 최대 어레이 값들을 결정하기 위한 SIMD 명령어(즉, SIMD8 명령어)를 도시한다. 참조번호 404b는 이 구성을 도시한다.
리스팅(405a)은 대규모 데이터 세트가 각각 4개의 데이터 어레이 엘리먼트를 포함하는 두 개의 서브어레이로 분할될 때 대규모 데이터 세트에서 최소 및 최대 어레이 값들을 결정하기 위한 SIMD 명령어(즉, SIMD4 명령어)를 도시한다. 참조번호 405b는 이 구성을 도시한다.
리스팅(406a)은 대규모 데이터 세트가 각각 두 개의 데이터 어레이 엘리먼트를 포함하는 두 개의 서브어레이로 분할될 때 대규모 데이터 세트에서 최소 및 최대 어레이 값들을 결정하기 위한 SIMD 명령어(즉, SIMD2 명령어)를 도시한다. 참조번호 406b는 이 구성을 도시한다.
리스팅(407a)은 대규모 데이터 세트가 각각 하나의 데이터 어레이 엘리먼트를 포함하는 두 개의 서브어레이로 분할될 때 대규모 데이터 세트에서 최소 및 최대 어레이 값들을 결정하기 위한 SIMD 명령어(즉, SIMD1 명령어)를 도시한다. 참조번호 407b는 이 구성을 도시한다.
리스팅(408a) 및 참조번호 408b는 대규모 데이터 세트 및 그 대규모 데이터 세트로의 연관 인덱스에 대해 전체적인 최소 또는 최대 데이터 값을 포함하는 최종 단일 엔트리 어레이 엘리먼트를 도시한다.
도 5는 시스템(700)의 실시예를 도시한다. 일 실시예에서, 시스템(700)은 그 시스템(700)이 이 문맥에 제한되는 것은 아니지만 미디어 시스템일 수 있다. 예를 들면, 시스템(700)은 개인용 컴퓨터(PC), 랩톱 컴퓨터, 울트라-랩톱 컴퓨터, 태블릿, 터치 패드, 휴대용 컴퓨터, 핸드헬드 컴퓨터, 팜탑 컴퓨터, PDA(personal digital assistant), 셀룰러 전화, 결합 셀룰러 전화/PDA, 텔레비전, 스마트 디바이스(예를 들면, 스마트폰, 스마트 태블릿 또는 스마트 텔레비전), MID(mobile internet device), 메시징 디바이스, 데이터 통신 디바이스 등에 통합될 수 있다.
실시예에서, 시스템(700)은 디스플레이(720)에 결합된 플랫폼(702)을 포함한다. 플랫폼(702)은 콘텐츠 서비스 디바이스(들)(730) 또는 콘텐츠 전달 디바이스(들)(740) 또는 다른 유사한 콘텐츠 소스들과 같은 콘텐츠 디바이스로부터 콘텐츠를 수신할 수 있다. 하나 이상의 네비게이션 특징을 포함하는 네비게이션 컨트롤러(750)를 이용하여, 예를 들면, 플랫폼(702) 및/또는 디스플레이(720)와 상호작용할 수 있다. 이들 컴포넌트 각각은 이하에 더 상세하게 설명된다.
실시예에서, 플랫폼(702)은 칩셋(705), 프로세서(710), 메모리(712), 저장장치(714), 그래픽 서브시스템(715), 애플리케이션(716) 및/또는 무선 기기(718)의 임의의 조합을 포함할 수 있다. 칩셋(705)은 프로세서(710), 메모리(712), 저장장치(714), 그래픽 서브시스템(715), 애플리케이션(716), 및/또는 무선 기기(718) 사이에 상호통신을 제공할 수 있다. 예를 들면, 칩셋(705)은 저장장치(714)와 상호통신을 제공할 수 있는 저장장치 어댑터(도시 생략)를 포함할 수 있다.
프로세서(710)는 CISC(Complex Instruction Set Computer) 또는 RISC(Reduced Instruction Set Computer) 프로세서들, x86 명령어 세트 호환 프로세서들, 멀티-코어, 또는 임의의 다른 마이크로프로세서 또는 중앙 처리 유닛(CPU)으로서 구현될 수 있다. 실시예에서, 프로세서(710)는 듀얼-코어 프로세서(들), 듀얼-코어 모바일 프로세서(들) 등을 포함할 수 있다.
메모리(712)는, 이에 제한되는 것은 아니지만, RAM(Random Access Memory), DRAM(Dynamic Random Access Memory), 또는 SRAM(Static RAM)과 같은 휘발성 메모리 디바이스로서 구현될 수 있다.
저장장치(714)는, 이에 제한되는 것은 아니지만, 자기 디스크 드라이브, 광학 디스크 드라이브, 테이프 드라이브, 내부 저장 디바이스, 부착 저장 디바이스, 플래시 메모리, 배터리 백업 SDRAM(동기식 DRAM), 및/또는 네트워크 액세스가능 저장 디바이스와 같은 비휘발성 저장 디바이스로서 구현될 수 있다. 실시예에서, 저장장치(714)는, 예를 들면, 다수의 하드 드라이브들이 포함될 때, 중요한 디지털 미디어에 대한 저장 성능 향상 보호를 증가시키기 위한 기술을 포함할 수 있다.
그래픽 서브시스템(715)은 디스플레이를 위해 정지 또는 비디오와 같은 이미지들의 프로세싱을 수행할 수 있다. 그래픽 서브시스템(715)은, 예를 들면, GPU(graphics processing unit) 또는 VPU(visual processing unit)일 수 있다. 아날로그 또는 디지털 인터페이스를 이용하여 그래픽 서브시스템(715)와 디스플레이(720)를 통신가능하게 결합할 수 있다. 예를 들면, 인터페이스는 임의의 고선명 멀티미디어 인터페이스, 디스플레이포트(DisplayPort), 무선 HDMI, 및/또는 무선 HD 부합 기술일 수 있다. 그래픽 서브시스템(715)은 프로세서(710) 또는 칩셋(705)으로 통합될 수 있다. 그래픽 서브시스템(715)은 칩셋(705)에 통신 가능하게 결합된 스탠드-얼론(stand-alone) 카드일 수 있다.
여기서 설명되는 그래픽 및/또는 비디오 프로세싱 기술은 다양한 하드웨어 아키텍처에서 구현될 수 있다. 예를 들면, 그래픽 및/또는 비디오 기능이 칩셋 내에 통합될 수 있다. 대안으로, 개별 그래픽 및/또는 비디오 프로세서가 사용될 수 있다. 또 다른 실시예로서, 그래픽 및/또는 비디오 기능이, 멀티-코어 프로세서를 포함하는 범용 프로세서에 의해 구현될 수 있다. 추가의 실시예에서, 기능들은 소비자 전자 디바이스에서 구현될 수 있다.
무선 기기(718)는 다양한 적절한 무선 통신 기술을 이용하여 신호들을 송수신할 수 있는 하나 이상의 무선 기기들을 포함할 수 있다. 그러한 기술들은 하나 이상의 무선 네트워크들 간의 통신을 수반할 수 있다. 예시적인 네트워크는 (이에 제한되지는 않지만) WLANs(wirelesslocal area networks), WPANs(wireless personal area networks), WMANs(wireless metropolitan area network), 셀룰러 네트워크, 및 위성 네트워크를 포함한다. 그러한 네트워크들 간의 통신시에, 무선 기기(718)는 하나 이상의 적용가능한 표준에 따라 임의의 버전으로 동작할 수 있다.
실시예에서, 디스플레이(720)는 임의의 텔레비전 유형의 모니터 또는 디스플레이를 포함할 수 있다. 디스플레이(720)는, 예를 들면, 컴퓨터 디스플레이 스크린, 터치 스크린 디스플레이, 비디오 모니터, 텔레비전형 디바이스, 및/또는 텔레비전을 포함할 수 있다. 디스플레이(720)는 디지털 및/또는 아날로그일 수 있다. 실시예에서, 디스플레이(720)는 홀로그래픽 디스플레이일 수 있다. 또한, 디스플레이(720)는 시각적 투영을 수신할 수 있는 투명 표면일 수 있다. 그러한 투영은다양한 형태의 정보, 이미지, 및/또는 객체를 전달할 수 있다. 예를 들면, 투영은 MAR(mobile augmmented reality) 애플리케이션에 대한 시각적 중첩(visual overlay)일 수 있다. 하나 이상의 소프트웨어 애플리케이션들(716)의 제어 하에, 플랫폼(702)은 디스플레이(720) 상에 사용자 인터페이스(722)를 디스플레이할 수 있다.
실시예에서, 콘텐츠 서비스 디바이스(들)(730)는 임의의 국가, 국제적 및/또는 독립적인 서비스에 의해 호스팅될 수 있고, 따라서, 예를 들면, 인터넷을 통해 플랫폼(702)에 액세스가능할 수 있다. 콘텐츠 서비스 디바이스(들)(730)는 플랫폼(702) 및/또는 디스플레이(720)에 결합될 수 있다. 플랫폼(702) 및/또는 콘텐츠 서비스 디바이스(들)(730)는 네트워크(760)에 결합되어 네트워크(760)로/로부터 미디어 정보를 통신(예를 들면, 전송 및/또는 수신)할 수 있다. 콘텐츠 전달 디바이스(들)(740) 또한 플랫폼(702) 및/또는 디스플레이(720)에 결합될 수 있다.
실시예에서, 콘텐츠 서비스 디바이스(들)(730)는 케이블 텔레비전 박스, 개인용 컴퓨터, 네트워크, 전화, 디지털 정보 및/또는 콘텐츠를 전달할 수 있는 인터넷 인에이블 디바이스 또는 어플라이언스, 콘텐츠 제공자와 플랫폼(702) 및/또는 디스플레이(720) 간에 네트워크(760)를 통해 또는 직접 콘텐츠를 단방향으로 또는 양방향으로 통신할 수 있는 임의의 다른 유사한 디바이스를 포함할 수 있다. 콘텐츠는 시스템(700) 내의 컴포넌트들 중 임의의 컴포넌트 및 콘텐츠 제공자로 그리고 그로부터 네트워크(760)를 통해 단방향으로 및/또는 양방향으로 통신될 수 있다는 것이 이해될 것이다. 콘텐츠의 예로는, 예를 들면, 비디오, 음악, 의료 및 게이밍 정보 등을 포함하는 임의의 미디어 정보를 포함할 수 있다.
콘텐츠 서비스 디바이스(들)(730)는 미디어 정보, 디지털 정보, 및/또는 다른 콘텐츠를 포함하는 케이블 텔레비전 프로그래밍과 같은 콘텐츠를 수신한다. 콘텐츠 제공자의 예로는 임의의 케이블 또는 위성 텔레비전 또는 무선 기기 또는 무선 콘텐츠 제공자가 포함될 수 있다. 제공된 예들은 본 발명의 실시예를 제한하는 것을 의미하는 것은 아니다.
실시예에서, 플랫폼(702)은 하나 이상의 네비게이션 특징들을 갖는 네비게이션 컨트롤러(750)로부터 제어 신호들을 수신할 수 있다. 컨트롤러(750)의 네비게이션 특징들을 이용하여, 예를 들면, 사용자 인터페이스(722)와 상호작용할 수 있다. 실시예에서, 네비게이션 컨트롤러(750)는 사용자가 공간(예를 들면, 연속 및 다차원) 데이터를 컴퓨터로 입력할 수 있게 하는 컴퓨터 하드웨어 컴포넌트(특히 인간 인터페이스 디바이스)일 수 있는 포인팅 디바이스일 수 있다. GUI(graphical user interfaces), 텔레비전 및 모니터 같은 많은 시스템은 사용자가 물리적 제스처를 이용하여 데이터를 제어하고 컴퓨터 또는 텔레비전에 제공할 수 있게 한다.
컨트롤러(750)의 네비게이션 특징들 중 이동은 디스플레이 상에 표시되는 포인터, 커서, 포커스 링, 또는 다른 시각적 표시자의 이동에 의해 디스플레이(예를 들면, 디스플레이(720)) 상에 에코될(echoed) 수 있다. 예를 들면, 소프트웨어 애플리케이션(716)의 제어 하에, 네비게이션 컨트롤러(750) 상에 위치된 네비게이션 특징들은, 예를 들면, 사용자 인터페이스(722) 상에 디스플레이되는 가상의 네비겡션 특징들에 매핑될 수 있다. 실시예에서, 컨트롤러(750)는 개별 컴포넌트가 아니라 플랫폼(702) 및/또는 디스플레이(720)에 통합될 수 있다. 그러나, 실시예는 그러한 엘리먼트에 또는 여기서 도시되고 설명된 문맥에 제한되는 것은 아니다.
일 실시예에서, 드라이버들(도시 생략)은 사용자들이, 예를 들면, 인에이블될 때, 초기 부트-업(boot-up) 후에 버튼의 터치로 텔레비전과 같은 플랫폼(702)을 즉시 턴온 및 턴오프하게 할 수 있는 기술을 포함할 수 있다. 프로그램 로직은, 플랫폼이 "턴오프"될 때 플랫폼(702)이 콘텐츠를 미디어 어댑터들 또는 다른 콘텐츠 서비스 디바이스(들)(730) 또는 콘텐츠 전달 디바이스(들)(740)로 스트리밍할 수 있게 할 수 있다. 부가하여, 칩셋(705)은, 예를 들면, 5.1 서라운드 사운드 오디오 및/또는 고선명 7.1 서라운드 사운드 오디오를 지원하는 하드웨어 및/또는 소프트웨어를 포함할 수 있다. 드라이버들은 통합 그래픽 플랫폼들을 위한 그래픽 드라이버를 포함할 수 있다. 실시예에서, 그래픽 드라이버는 PCI(peripheral component interconnect) 익스프레스 그래픽 카드를 포함할 수 있다.
다양한 실시예에서, 시스템(700)에 도시된 임의의 하나 이상의 컴포넌트들은 통합될 수 있다. 예를 들면, 플랫폼(702)과 콘텐츠 서비스 디바이스(들)(730)이 통합될 수 있거나, 또는 플랫폼(702)와 콘텐츠 전달 디바이스(들)(740)이 통합될 수 있거나, 또는, 예를 들면, 플랫폼(702), 콘텐츠 서비스 디바이스(들)(730)과 콘텐츠 전달 디바이스(들)(740)가 통합될 수 있다. 다양한 실시예에서, 플랫폼(702)과 디스플레이(720)과 통합 유닛일 수 있다. 예를 들면, 디스플레이(720)와 콘텐츠 서비스 디바이스(들)(730)가 통합될 수 있거나, 또는 디스플레이(720)와 콘텐츠 전달 디바이스(들)(740)가 통합될 수 있다. 이들 예는 본 발명을 제한하는 것을 의미하는 것이 아니다.
다양한 실시예에서, 시스템(700)은 무선 시스템, 유선 시스템, 또는 그들의 조합으로 구현될 수 있다. 무선 시스템으로서 구현될 때, 시스템(700)은, 하나 이상의 안테나, 전송기, 수신기, 송수신기, 증폭기, 필터, 제어 로직 등과 같은 무선 공유 미디어를 통해 통신하는데 적절한 컴포넌트 및 인터페이스를 포함할 수 있다. 무선 공유 미디어의 예로는, RF 스펙트럼과 같은 무선 스펙트럼 등의 부분들을 포함할 수 있다. 유선 시스템으로서 구현될 때, 시스템(700)은, 입력/출력(I/O) 어댑터, I/O 어댑터를 대응하는 유선 통신 매체에 접속하기 위한 물리적 커넥터, 네트워크 인터페이스 카드(NIC), 디스크 컨트롤러, 비디오 컨트롤러, 오디오 컨트롤러 등과 같은 유선 통신 미디어를 통해 통신하는데 적절한 컴포넌트 및 인터페이스를 포함할 수 있다. 유선 통신 미디어의 예로는, 와이어, 케이블, 금속 리드, 인쇄 회로 기판(PCB), 백플레인, 스위치 파브릭, 반도체 재료, 트위스트쌍 와이어, 동축 케이블, 광 섬유 등이 포함될 수 있다.
플랫폼(702)은 정보를 통신하기 위한 하나 이상의 논리적 물리적 채널들을 설정할 수 있다. 정보는 미디어 정보 및 제어 정보를 포함할 수 있다. 미디어 정보는 사용자를 위한 콘텐츠를 나타내는 임의의 데이터를 지칭할 수 있다. 콘텐츠의 예로는, 예를 들면, 음성 대화로부터의 데이터, 화상 회의, 스트리밍 비디오, 전자 메일("이메일") 메시지, 음성 메일 메시지, 영숫자 기호들, 그래픽스, 이미지, 비디오, 텍스트 등이 포함될 수 있다. 음성 대화로부터의 데이터는, 예를 들면, 음성 정보, 침묵 기간, 배경 잡음, 편안한 잡음, 톤 등일 수 있다. 제어 정보는 자동화 시스템을 위한 커맨드, 명령어 또는 제어 워드를 나타내는 임의의 데이터를 지칭할 수 있다. 예를 들면, 제어 정보는 시스템을 통해 미디어 정보를 라우팅하고, 노드에 명령하여 미디어 정보를 미리 정해진 방식으로 프로세싱하도록 사용될 수 있다. 그러나, 실시예들은 도 5에 도시되고 설명된 문맥 또는 엘리먼트에 제한되는 것은 아니다.
전술한 바와 같이, 시스템(700)은 가변하는 물리적 스타일 또는 폼 팩터에서 구체화될 수 있다. 도 6은 시스템(700)이 구체화될 수 있는 작은 폼 팩터 디바이스(800)의 실시예를 도시한다. 실시예에서, 예를 들면, 디바이스(800)는 무선 능력을 갖는 모바일 컴퓨팅 디바이스로서 구현될 수 있다. 모바일 컴퓨팅 디바이스는 프로세싱 시스템 및, 예를 들면, 하나 이상의 배터리 같은 모바일 전력 소스 또는 전력 공급 장치를 갖는 임의의 디바이스를 지칭할 수 있다.
전술한 바와 같이, 모바일 컴퓨팅 디바이스의 예로는 개인용 컴퓨터(PC), 랩톱 컴퓨터, 울트라-랩톱 컴퓨터, 태블릿, 터치 패드, 휴대용 컴퓨터, 핸드헬드 컴퓨터, 팜톱 컴퓨터, PDA, 셀룰러 전화, 조합 셀룰러 전화/PDA, 텔레비전, 스마트 디바이스(예를 들면, 스마트폰, 스마트 태블릿 또는 스마트 텔레비전), MID(mobile internet device), 메시징 디바이스, 데이터 통신 디바이스 등이 포함될 수 있다.
모바일 컴퓨팅 디바이스의 예로는 또한, 손목 컴퓨터, 손가락 컴퓨터, 반지 컴퓨터, 안경 컴퓨터, 벨트-클립 컴퓨터, 팔-밴드 컴퓨터, 신발 컴퓨터, 의류 컴퓨터 및 다른 착용가능한 컴퓨터와 같은 사람이 착용하도록 배치되는 컴퓨터들이 포함될 수 있다. 실시예에서, 예를 들면, 모바일 컴퓨팅 디바이스는 컴퓨터 애플리케이션을 실행할 수 있을뿐만 아니라 음성 통신 및/또는 데이터 통신을 할 수 있는 스마트폰으로서 구현될 수 있다. 일부 실시예들은 예를 들면 스마트폰으로서 구현된 모바일 컴퓨팅 디바이스로 설명될 수 있지만, 다른 실시예들은 다른 무선 모바일 컴퓨팅 디바이스들을 이용하여 또한 구현될 수 있다는 것이 이해될 것이다. 실시예들은 이러한 문맥에 제한되는 것이 아니다.
도 6에 도시된 바와 같이, 디바이스(800)는 하우징(802), 디스플레이(804), 입력/출력(I/O) 디바이스(806), 및 안테나(808)를 포함할 수 있다. 디바이스(800)는 또한 네비게이션 특징(812)을 포함할 수 있다. 디스플렝이(804)는 모바일 컴퓨팅 디바이스에 적절한 정보를 디스플레이하기 위한 임의의 적절한 디스플레이 유닛을 포함할 수 있다. I/O 디바이스(806)는 정보를 모바일 컴퓨팅 디바이스에 입력하기 위한 임의의 적절한 I/O 디바이스를 포함할 수 있다. I/O 디바이스(806)에 대한 예로는 영숫자 키보드, 숫자 키패드, 터치 패드, 입력 키, 버튼, 스위치, 라커 스위치, 마이크로폰, 스피커, 음식 인식 디바이스 및 소프트웨어 등이 포함될 수 있다. 정보는 또한 마이크로폰에 의해 디바이스(800)에 입력될 수 있다. 그러한 정보는 음성 인식 디바이스에 의해 디지털화될 수 있다. 실시예들은 이러한 문맥에 제한되는 것이 아니다.
다양한 실시예들은 하드웨어 엘리먼트, 소프트웨어 엘리먼트, 또는 그들의 조합을 이용하여 구현될 수 있다. 하드웨어 엘리먼트들의 예로는 프로세서, 마이크로프로세서, 회로, 회로 소자(예를 들면, 트랜지스터, 저항, 커패시터, 인덕터 등), 집적 회로, ASIC(application specific integrated circuit), PLD(programmable logic device), DSP(digital signal processor), FPGA(field programmable gate array), 로직 게이트, 레지스터, 반도체 디바이스, 칩, 마이크로칩, 칩셋 등이 포함될 수 있다. 소프트웨어의 예로는 소프트웨어 컴포넌트, 프로그램, 애플리케이션, 컴퓨터 프로그램, 애플리케이션 프로그램, 시스템 프로그램, 머신 프로그램, 운영 시스템 소프트웨어, 미들웨어, 펌웨어, 소프트웨어 모듈, 루틴, 서브루틴, 기능, 방법, 절차, 소프트웨어 인터페이스, API(application program interface), 명령어 세트, 컴퓨팅 코드, 컴퓨터 코드, 코드 세그먼트, 컴퓨터 코드 세그먼트, 단어, 값, 기호, 또는 그들의 임의의 조합이 포함될 수 있다. 실시예가 하드웨어 엘리먼트 및/또는 소프트웨어 엘리먼트를 이용하여 구현될지를 결정하는 것은, 원하는 컴퓨팅 레이트, 전력 레벨, 내열성, 프로세싱 싸이클 버짓(budget), 입력 데이터 레이트, 출력 데이터 레이트, 메모리 리소스, 데이터 버스 속도 및 다른 설계 또는 성능 제한과 같은 임의의 수의 팩터들에 따라 가변할 수 있다.
적어도 하나의 실시예의 하나 이상의 양상은, 머신에 의해 판독될 때, 머신으로 하여금 여기서 설명된 기술을 수행하기 위한 로직을 작성하게 하는, 프로세서 내의 다양한 로직을 나타내는, 머신 판독가능 매체 상에 저장된 대표 명령어에 의해 구현될 수 있다. "IP 코어"로서 알려진 그러한 대표는 유형의 머신 판독가능 매체 상에 저장될 수 있고 다양한 소비자 또는 제조 설비에 공급되어 실제로 로직 또는 프로세서를 만드는 제조 기계를 로딩할 수 있다.
부가 예 및 주석:
예 1은, 대규모 데이터 세트에서 경계값 데이터 유닛을 결정하고, 이와 병행하여, 단일 데이터 유닛이 생성될 때까지 계층 방식으로 수행되는 복수의 프로세싱 스테이지 동안 대규모 데이터 세트 내의 소규모 데이터 세트들의 경계값 데이터 유닛을 연속하여 결정함으로써 대규모 데이터 세트로의 결정된 경계값 데이터 유닛의 연관 인덱스를 결정하는 방법을 제공하고, 각각의 데이터 세트는 복수의 데이터 엔트리를 포함한다.
예 2는, 예 1의 방법을 포함하고, 데이터 값 및 데이터 값의 연관 인덱스를 단일 데이터 유닛으로 결합하는 단계, 및 단일 데이터 유닛을 대규모 데이터 세트 내에 데이터 엔트리로서 저장하는 단계를 더 포함할 수 있다.
예 3은, 예 1의 방법을 포함하고, 각각의 프로세싱 스테이지는 소규모 데이터 세트들의 세트들 간 경계값 데이터 유닛을 결정하고, 이와 병행하여 대규모 데이터 세트로의 상기 결정된 값의 연관 인덱스를 결정한다.
예 4는, 예 1의 방법을 포함하고, 소규모 데이터 세트들의 세트들 간 경계값 데이터 유닛을 결정하는 것은, 단일 명령어 다중 데이터(single instruction multiple data; SIMD) 명령어들을 이용하여 각각의 데이터 세트 내의 데이터 엔트리들에 대해 병렬로 연산을 수행하는 것을 포함한다.
예 5는, 예 4의 방법을 포함하고, 각각의 프로세싱 스테이지의 출력은 수신되는 데이터 세트를 다음의 프로세싱 스테이지로의 새로운 데이터 세트 입력으로서 생성한다.
예 6은, 예 1의 방법을 포함하고, 제1 프로세싱 스테이지는 대규모 데이터 세트를 데이터 세트 입력으로서 수신한다.
예 7은, 예 1의 방법을 포함하고, 대규모 데이터 세트는 데이터베이스 내에 구조적 어레이로서 저장된다.
예 8은, 예 1의 방법을 포함하고, 경계값 데이터 유닛은 최소값 데이터 유닛 및 최대값 데이터 유닛 중 하나이다.
예 9는 대규모 데이터 세트 내에서 경계값 데이터 유닛을 결정하고, 이와 병행하여, 상기 대규모 데이터 세트로의 상기 결정된 경계값 데이터 유닛의 연관 인덱스를 결정하는 결정 모듈을 포함하는 시스템을 포함할 수 있다.
예 10은, 예 9의 시스템을 포함하고, 데이터 값 및 상기 데이터 값의 연관 인덱스를 단일 데이터 유닛으로 결합하고, 단일 데이터 유닛을 대규모 데이터 세트 내에 데이터 엔트리로서 저장하는 결합 모듈을 더 포함한다.
예 11은, 예 10의 시스템을 포함하고, 대규모 데이터 세트 내에서 경계값 데이터 유닛을 결정하고, 이와 병행하여, 대규모 데이터 세트로의 결정된 경계값 데이터 유닛의 연관 인덱스를 결정하는 결정 모듈은, 단일 데이터 유닛이 생성될 때까지 계층 방식으로 수행되는 복수의 프로세싱 스테이지 동안 대규모 데이터 세트 내의 소규모 데이터 세트들의 경계값 데이터 유닛을 연속하여 결정하는 것을 포함한다.
예 12는, 예 11의 시스템을 포함하고, 각각의 프로세싱 스테이지는 데이터 세트를 수신하고 데이터 세트를 복수의 소규모 데이터 세트들로 분할하며, 각각의 데이터 세트는 복수의 데이터 엔트리를 포함한다.
예 13은, 예 12의 시스템을 포함하고, 각각의 프로세싱 스테이지는 소규모 데이터 세트들의 세트들 간 경계값 데이터 유닛을 결정하고 이와 병행하여 대규모 데이터 세트로의 결정된 값의 연관 인덱스를 결정한다.
예 14는, 예 13의 시스템을 포함하고, 소규모 데이터 세트들의 세트들 간 경계값 데이터 유닛을 결정하는 것은, 단일 명령어 다중 데이터(SIMD) 명령어들을 이용하여 각각의 데이터 세트 내의 데이터 엔트리들에 대해 병렬로 연산을 수행하는 것을 포함한다.
예 15는, 예 14의 시스템을 포함하고, 각각의 프로세싱 스테이지의 출력은 수신되는 데이터 세트를 다음의 프로세싱 스테이지로의 새로운 데이터 세트 입력으로서 생성한다.
예 16은, 예 9의 시스템을 포함하고, 경계값 데이터 유닛은 최소값 데이터 유닛 및 최대값 데이터 유닛 중 하나이다.
예 17은 명령어들을 포함하는 적어도 하나의 컴퓨터 판독가능 매체를 포함하고, 명령어들은, 프로세서에 의해 실행되는 경우, 컴퓨터로 하여금, 대규모 데이터 세트 내에서 경계값 데이터 유닛을 결정하고, 이와 병행하여, 대규모 데이터 세트로의 결정된 경계값 데이터 유닛의 연관 인덱스를 결정하도록 야기한다.
예 18은, 예 17의 적어도 하나의 컴퓨터 판독가능 매체를 포함하고, 프로세서에 의해 실행되는 경우, 컴퓨터로 하여금, 데이터 값 및 데이터 값의 연관 인덱스를 단일 데이터 유닛으로 결합하고, 단일 데이터 유닛을 대규모 데이터 세트 내에 데이터 엔트리로서 저장하도록 야기하는 명령어들을 더 포함한다.
예 19는, 예 18의 적어도 하나의 컴퓨터 판독가능 매체를 포함하고, 프로세서에 의해 실행되는 경우, 컴퓨터로 하여금, 대규모 데이터 세트 내에서 경계값 데이터 유닛을 결정하고, 이와 병행하여, 대규모 데이터 세트로의 결정된 경계값 데이터 유닛의 연관 인덱스를 결정하도록 야기하는 상기 명령어들은, 단일 데이터 유닛이 생성될 때까지 계층 방식으로 수행되는 복수의 프로세싱 스테이지 동안 대규모 데이터 세트 내의 소규모 데이터 세트들의 경계값 데이터 유닛을 연속하여 결정하는 것을 포함한다.
예 20은, 예 19의 적어도 하나의 컴퓨터 판독가능 매체를 포함하고, 각각의 프로세싱 스테이지는 데이터 세트를 수신하고 데이터 세트를 복수의 소규모 데이터 세트들로 분할하며, 각각의 데이터 세트는 복수의 데이터 엔트리를 포함한다.
예 21은, 예 20의 적어도 하나의 컴퓨터 판독가능 매체를 포함하고, 각각의 프로세싱 스테이지는 소규모 데이터 세트들의 세트들 간 경계값 데이터 유닛을 결정하고 이와 병행하여 대규모 데이터 세트로의 결정된 값의 연관 인덱스를 결정한다.
예 22는, 예 21의 적어도 하나의 컴퓨터 판독가능 매체를 포함하고, 소규모 데이터 세트들의 세트들 간 경계값 데이터 유닛을 결정하는 것은, 단일 명령어 다중 데이터(SIMD) 명령어들을 이용하여 각각의 데이터 세트 내의 데이터 엔트리들에 대해 병렬로 연산을 수행하는 것을 포함한다.
예 23은, 예 22의 적어도 하나의 컴퓨터 판독가능 매체를 포함하고, 각각의 프로세싱 스테이지의 출력은 수신되는 데이터 세트를 다음의 프로세싱 스테이지로의 새로운 데이터 세트 입력으로서 생성하고 제1 프로세싱 스테이지는 대규모 데이터 세트를 데이터 세트 입력으로서 수신한다.
예 24는, 예 17의 적어도 하나의 컴퓨터 판독가능 매체를 포함하고, 대규모 데이터 세트는 데이터베이스에 구조적 어레이로서 저장된다.
예 25는, 예 17의 적어도 하나의 컴퓨터 판독가능 매체를 포함하고, 경계값 데이터 유닛은 최소값 데이터 유닛 및 최대값 데이터 유닛 중 하나이다.
예는 또한 예 1 내지 예 8 중 어느 하나의 방법을 수행하기 위한 수단을 포함하는 장치를 포함할 수 있다.
본 발명의 실시예는 모든 유형의 반도체 집적 회로("IC") 칩과 사용하는데 적용가능하다. 이들 IC 칩의 예는, 제한되는 것은 아니지만, 프로세서, 컨트롤러, 칩셋 컴포넌트, PLA, 메모리 칩, 네트워크 칩 등을 포함한다. 부가하여, 도면의 일부에서, 신호 도전선은 라인으로 표시되어 있다. 몇몇은, 더 많은 구성 신호 경로들을 나타내고, 번호 라벨을 갖도록 하기 위해, 다수의 구성 신호 경로들을 나타내고, 및/또는 하나 이상의 끝에 화살표를 갖도록 하기 위해, 우선 정보 흐름 방향을 나타내기 위해 상이할 수 있다. 그러나, 이것은 제한적인 방식으로 구성되어서는 안된다. 오히려, 그러한 부가된 세부사항은 회로의 보다 용이한 이해를 수월하게 하기 위해 하나 이상의 예시적인 실시예와 결합하여 사용될 수 있다. 임의로 표현된 신호 라인들은, 부가의 정보를 갖는지 여부에 관계없이, 다수의 방향으로 이동할 수 있고, 임의의 적절한 유형의 신호 스킴, 예를 들면, 차분 쌍, 광 섬유 라인, 및/또는 단일-엔디드(single-ended) 라인으로 구현되는 디지털 또는 아날로그 라인으로 구현될 수 있는 하나 이상의 신호를 실질적으로 포함할 수 있다.
예시적인 크기/모델/값/범위가, 본 발명의 실시예가 이들에 제한되지 않음에도 불구하고, 주어질 수 있다. 시간에 따라 제조 기술(포토리소그래피)이 발전함에 따라, 더 작은 크기의 디바이스가 제조될 수 있다는 것이 예상된다. 부가하여, IC 칩 및 다른 컴포넌트들로의 공지된 전력/접지 접속은 도면 내에 도시될 수도 있고 설명 및 논의의 간소화를 위해 그리고 본 발명의 실시예의 임의의 양상을 모호하게 하지 않도록 도시되지 않을 수도 있다. 더욱이, 본 발명의 실시예를 모호하게 하는 것을 피하기 위해 블록도의 형태로 배치가 도시되어 있고, 또한 그러한 블록도의 구현으로 특정하는 사실에 비추어, 배치는 실시예가 구현될 플랫폼에 상당히 의존적이고, 즉, 그러한 특정은 당업자의 관점에서 잘 이해되어야 한다. 본 발명의 예시적 실시예를 설명하기 위해 특정 세부사항(예를 들면, 회로)이 설명된 경우, 본 발명의 실시예는 이들 특정 세부사항 없이, 또는 이들 특정 세부사항의 변형으로 실시될 수 있다는 것이 당업자에게는 자명하다. 따라서, 설명은 제한적인 대신 예시적인 것으로서 간주되어야 한다.
몇몇 실시예는, 예를 들면, 머신, 또는 머신에 의해 실행될 때, 머신으로 하여금 실시예에 따른 방법 및/또는 연산을 수행하도록 야기할 수 있는 명령어 또는 명령어들의 세트를 저장할 수 있는 유형의 컴퓨터 판독가능 매체 또는 물품을 이용하여 구현될 수 있다. 그러한 머신은, 예를 들면, 임의의 적절한 프로세싱 플랫폼, 컴퓨팅 플랫폼, 컴퓨팅 디바이스, 프로세싱 디바이스, 컴퓨팅 시스템, 프로세싱 시스템, 컴퓨터, 프로세서 등을 포함할 수 있고, 하드웨어 및/또는 소프트웨어의 임의의 적절한 조합을 이용하여 구현될 수 있다. 머신 판독가능 매체 또는 물품은, 예를 들면, 임의의 적절한 유형의 메모리 유닛, 메모리 디바이스, 메모리 물품, 메모리 매체, 저장 디바이스, 저장 물품, 저장 매체 및/또는 저장 유닛, 예를 들면, 메모리, 분리형 또는 비분리형 매체, 소거형 또는 비소거형 매체, 기록가능 또는 재기록가능 매체, 디지털 또는 아날로그 매체, 하드 디스크, 플로피 디스크, CD-ROM(Compact Disk Read Only Memory), CD-R(Compact Disk Recordable), CD-RW(Compact Disk Rewriteable), 광학 디스크, 자기 매체,자기-광학 매체, 분리형 메모리 카드 또는 디스크, 다양한 유형의 DVD(Digital Versatile Disk), 테이프, 카세트 등을 포함할 수 있다. 명령어는, 임의의 적절한 고레벨, 저레벨, 객체 지향, 비주얼, 컴파일 및/또는 해석 프로그래밍 언어를 이용하여 구현된, 소스 코드, 컴파일 코드, 해석 코드, 실행가능 코드, 정적 코드, 동적 코드, 암호화 코드 등과 같은 임의의 적절한 유형의 코드를 포함할 수 있다.
특별히 달리 설명되지 않는다면, "프로세싱", "컴퓨팅", "계산", "결정" 등과 같은 용어는 컴퓨팅 시스템의 레지스터 및/또는 메모리 내에 물리량(예를 들면, 전자)으로서 표현된 데이터를 컴퓨팅 시스템의 메모리, 레지스터 또는 다른 그러한 정보 저장장치, 전송 또는 디스플레이 디바이스 내에 물리량으로서 유사하게 표현되는 다른 데이터로 조작 및/또는 변환하는 컴퓨터 또는 컴퓨팅 시스템, 또는 다른 유사한 컴퓨팅 디바이스의 액션 및/또는 프로세스를 지칭한다는 것이 이해될 수 있다. 실시예는 이러한 문맥에 제한되는 것은 아니다.
용어 "결합"은 문제의 컴포넌트들 간의 임의의 유형의 관계, 직접 또는 간접적인 것을 지칭하는데 사용될 수 있고, 전기, 기계, 유체, 광학, 전자기, 전자기계 또는 다른 접속에 적용할 수 있다. 부가하여, 용어 "제1", "제2" 등은 여기서 논의를 용이하게 하기 위해서만 사용될 수 있고, 달리 표시되지 않는 한, 특정한 시간적 또는 연대기적 중요성을 갖는 것은 아니다.
당업자는 본 발명의 실시예의 광버위한 기술이 다양한 형태로 구현될 수 있다는 것을 전술한 설명으로부터 이해할 것이다. 따라서, 본 발명의 실시예가 특정 예와 결합되어 설명되었지만, 본 발명의 실시예의 진정한 범위는, 도면, 상세한 설명, 및 다음의 청구범위를 연구하면 당업자에게는 다른 수정이 자명해질 것이기 때문에, 그에 제한되어서는 안된다.
130: 시스템 메모리
140: 저장 디바이스
150: 데이터베이스
170: 그래픽 메모리
705: 칩셋
710: 프로세서
712: 메모리
714: 저장 장치
715: 그래픽 서브시스템
716: 애플리케이션
718: 무선 기기
720: 디스플레이
722: 사용자 인터페이스
730: 콘텐츠 서비스 디바이스(들)
740: 콘텐츠 전달 디바이스(들)
760: 네트워크

Claims (25)

  1. 대규모 데이터 세트에서 경계값 데이터 유닛을 결정하고, 이와 병행하여, 단일 데이터 유닛이 생성될 때까지 계층 방식으로 수행되는 복수의 프로세싱 스테이지 동안 상기 대규모 데이터 세트 내의 소규모 데이터 세트들의 경계값 데이터 유닛을 연속적으로 결정함으로써 상기 대규모 데이터 세트로의 상기 결정된 경계값 데이터 유닛의 연관 인덱스를 결정하는 단계를 포함하되,
    상기 각각의 데이터 세트는 복수의 데이터 엔트리를 포함하는
    방법.
  2. 제1항에 있어서,
    데이터 값 및 상기 데이터 값의 연관 인덱스를 단일 데이터 유닛 내에 결합하는 단계와,
    상기 단일 데이터 유닛을 상기 대규모 데이터 세트 내에 데이터 엔트리로서 저장하는 단계를 더 포함하는
    방법.
  3. 제1항에 있어서,
    각각의 프로세싱 스테이지는 상기 소규모 데이터 세트들의 세트들 간 경계값 데이터 유닛을 결정하고, 이와 병행하여 상기 대규모 데이터 세트로의 상기 결정된 값의 연관 인덱스를 결정하는
    방법.
  4. 제3항에 있어서,
    상기 소규모 데이터 세트들의 세트들 간 경계값 데이터 유닛을 결정하는 것은, 단일 명령어 다중 데이터(single instruction multiple data; SIMD) 명령어들을 이용하여 각각의 데이터 세트 내의 데이터 엔트리들에 대해 병렬로 연산을 수행하는 것을 포함하는
    방법.
  5. 제4항에 있어서,
    각각의 프로세싱 스테이지의 출력은 수신되는 데이터 세트를 다음의 프로세싱 스테이지로의 새로운 데이터 세트 입력으로서 생성하는
    방법.
  6. 제1항에 있어서,
    제1 프로세싱 스테이지는 상기 대규모 데이터 세트를 데이터 세트 입력으로서 수신하는
    방법.
  7. 제1항에 있어서,
    상기 대규모 데이터 세트는 데이터베이스 내에 구조적 어레이로서 저장되는
    방법.
  8. 제1항에 있어서,
    상기 경계값 데이터 유닛은 최소값 데이터 유닛과 최대값 데이터 유닛 중 하나인
    방법.
  9. 대규모 데이터 세트 내에서 경계값 데이터 유닛을 결정하고, 이와 병행하여, 상기 대규모 데이터 세트로의 상기 결정된 경계값 데이터 유닛의 연관 인덱스를 결정하는 결정 모듈을 포함하는
    시스템.
  10. 제9항에 있어서,
    데이터 값 및 상기 데이터 값의 연관 인덱스를 단일 데이터 유닛 내에 결합하고, 상기 단일 데이터 유닛을 상기 대규모 데이터 세트 내에 데이터 엔트리로서 저장하는 결합 모듈을 더 포함하는
    시스템.
  11. 제10항에 있어서,
    상기 결정 모듈이 대규모 데이터 세트에서 경계값 데이터 유닛을 결정하고, 이와 병행하여, 상기 대규모 데이터 세트로의 상기 결정된 경계값 데이터 유닛의 연관 인덱스를 결정하는 것은, 단일 데이터 유닛이 생성될 때까지 계층 방식으로 수행되는 복수의 프로세싱 스테이지 동안 상기 대규모 데이터 세트 내의 소규모 데이터 세트들의 경계값 데이터 유닛을 연속적으로 결정하는 것을 포함하는
    시스템.
  12. 제11항에 있어서,
    각각의 프로세싱 스테이지는 데이터 세트를 수신하고 상기 데이터 세트를 복수의 소규모 데이터 세트들로 분할하며, 각각의 데이터 세트는 복수의 데이터 엔트리를 포함하는
    시스템.
  13. 제12항에 있어서,
    각각의 프로세싱 스테이지는 상기 소규모 데이터 세트들의 세트들 간 경계값 데이터 유닛을 결정하고 이와 병행하여 상기 대규모 데이터 세트로의 상기 결정된 값의 연관 인덱스를 결정하는
    시스템.
  14. 제13항에 있어서,
    상기 소규모 데이터 세트들의 세트들 간 경계값 데이터 유닛을 결정하는 것은, 단일 명령어 다중 데이터(SIMD) 명령어들을 이용하여 각각의 데이터 세트 내의 데이터 엔트리들에 대해 병렬로 연산을 수행하는 것을 포함하는
    시스템.
  15. 제14항에 있어서,
    각각의 프로세싱 스테이지의 출력은 수신되는 데이터 세트를 다음의 프로세싱 스테이지로의 새로운 데이터 세트 입력으로서 생성하는
    시스템.
  16. 제9항에 있어서,
    상기 경계값 데이터 유닛은 최소값 데이터 유닛과 최대값 데이터 유닛 중 하나인
    시스템.
  17. 명령어들을 포함하는 적어도 하나의 컴퓨터 판독가능 매체로서,
    상기 명령어들은, 프로세서에 의해 실행되는 경우, 컴퓨터로 하여금,
    대규모 데이터 세트에서 경계값 데이터 유닛을 결정하고, 이와 병행하여, 상기 대규모 데이터 세트로의 상기 결정된 경계값 데이터 유닛의 연관 인덱스를 결정하도록 하는
    컴퓨터 판독가능 매체.
  18. 제17항에 있어서,
    프로세서에 의해 실행되는 경우, 컴퓨터로 하여금,
    데이터 값 및 상기 데이터 값의 연관 인덱스를 단일 데이터 유닛 내에 결합하고, 상기 단일 데이터 유닛을 상기 대규모 데이터 세트 내에 데이터 엔트리로서 저장하도록 하는 명령어들을 더 포함하는
    컴퓨터 판독가능 매체.
  19. 제18항에 있어서,
    상기 명령어들이 프로세서에 의해 실행되는 경우, 상기 컴퓨터로 하여금, 대규모 데이터 세트 내에서 경계값 데이터 유닛을 결정하고, 이와 병행하여, 상기 대규모 데이터 세트로의 상기 결정된 경계값 데이터 유닛의 연관 인덱스를 결정하도록 하는 것은, 단일 데이터 유닛이 생성될 때까지 계층 방식으로 수행되는 복수의 프로세싱 스테이지 동안 상기 대규모 데이터 세트 내의 소규모 데이터 세트들의 경계값 데이터 유닛을 연속적으로 결정하는 것을 포함하는
    컴퓨터 판독가능 매체.
  20. 제19항에 있어서,
    각각의 프로세싱 스테이지는 데이터 세트를 수신하고 상기 데이터 세트를 복수의 소규모 데이터 세트들로 분할하며, 각각의 데이터 세트는 복수의 데이터 엔트리를 포함하는
    컴퓨터 판독가능 매체.
  21. 제20항에 있어서,
    각각의 프로세싱 스테이지는 상기 소규모 데이터 세트들의 세트들 간 경계값 데이터 유닛을 결정하고 이와 병행하여 상기 대규모 데이터 세트로의 상기 결정된 값의 연관 인덱스를 결정하는
    컴퓨터 판독가능 매체.
  22. 제21항에 있어서,
    상기 소규모 데이터 세트들의 세트들 간 경계값 데이터 유닛을 결정하는 것은, 단일 명령어 다중 데이터(SIMD) 명령어들을 이용하여 각각의 데이터 세트 내의 데이터 엔트리들에 대해 병렬로 연산을 수행하는 것을 포함하는
    컴퓨터 판독가능 매체.
  23. 제22항에 있어서,
    각각의 프로세싱 스테이지의 출력은 수신되는 데이터 세트를 다음의 프로세싱 스테이지로의 새로운 데이터 세트 입력으로서 생성하고, 제1 프로세싱 스테이지는 상기 대규모 데이터 세트를 데이터 세트 입력으로서 수신하는
    컴퓨터 판독가능 매체.
  24. 제17항에 있어서,
    상기 대규모 데이터 세트는 데이터베이스에 구조적 어레이로서 저장되는
    컴퓨터 판독가능 매체.
  25. 제17항에 있어서,
    상기 경계값 데이터 유닛은 최소값 데이터 유닛과 최대값 데이터 유닛 중 하나인
    컴퓨터 판독가능 매체.
KR1020140029886A 2013-03-15 2014-03-13 Simd 명령어 세트 아키텍처를 이용하여 대규모 데이터 세트 내에서 최소 및 최대 값들을 찾기 위한 고속 접근법 KR101597623B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201361798288P 2013-03-15 2013-03-15
US61/798,288 2013-03-15
US13/853,589 2013-03-29
US13/853,589 US9152663B2 (en) 2013-03-15 2013-03-29 Fast approach to finding minimum and maximum values in a large data set using SIMD instruction set architecture

Publications (2)

Publication Number Publication Date
KR20140113482A true KR20140113482A (ko) 2014-09-24
KR101597623B1 KR101597623B1 (ko) 2016-02-25

Family

ID=50472999

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140029886A KR101597623B1 (ko) 2013-03-15 2014-03-13 Simd 명령어 세트 아키텍처를 이용하여 대규모 데이터 세트 내에서 최소 및 최대 값들을 찾기 위한 고속 접근법

Country Status (3)

Country Link
US (1) US9152663B2 (ko)
EP (1) EP2778902B1 (ko)
KR (1) KR101597623B1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104331497A (zh) * 2014-11-19 2015-02-04 中国科学院自动化研究所 一种利用向量指令并行处理文件索引的方法及装置
EP3684463A4 (en) * 2017-09-19 2021-06-23 Neuroenhancement Lab, LLC NEURO-ACTIVATION PROCESS AND APPARATUS
US11717686B2 (en) * 2017-12-04 2023-08-08 Neuroenhancement Lab, LLC Method and apparatus for neuroenhancement to facilitate learning and performance
US11413425B2 (en) 2019-05-24 2022-08-16 Neuroenhancement Lab, LLC Device, system, and method for reducing coronasomnia to enhance immunity and immune response

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR970062893A (ko) * 1996-02-22 1997-09-12 쯔지 하루오 데이타 처리 장치 및 데이타 처리 방법
US6633953B2 (en) * 2000-02-08 2003-10-14 Hywire Ltd. Range content-addressable memory

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6341296B1 (en) 1998-04-28 2002-01-22 Pmc-Sierra, Inc. Method and apparatus for efficient selection of a boundary value
DE10163700A1 (de) * 2001-12-21 2003-07-10 Systemonic Ag Verfahren zur Ermittlung eines Maximums bzw. Minimums
US9131899B2 (en) * 2011-07-06 2015-09-15 Apple Inc. Efficient handling of misaligned loads and stores
US7646940B2 (en) * 2006-04-04 2010-01-12 Microsoft Corporation Robust indexing and retrieval of electronic ink
US8417735B1 (en) * 2007-12-12 2013-04-09 Nvidia Corporation Instruction-efficient algorithm for parallel scan using initialized memory regions to replace conditional statements
US20100114905A1 (en) * 2008-11-03 2010-05-06 Elvin Slavik Method, System, and Product for Managing Spatial Data in a Database
US20120239706A1 (en) * 2011-03-18 2012-09-20 Los Alamos National Security, Llc Computer-facilitated parallel information alignment and analysis

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR970062893A (ko) * 1996-02-22 1997-09-12 쯔지 하루오 데이타 처리 장치 및 데이타 처리 방법
US6633953B2 (en) * 2000-02-08 2003-10-14 Hywire Ltd. Range content-addressable memory

Also Published As

Publication number Publication date
EP2778902A1 (en) 2014-09-17
US20140280189A1 (en) 2014-09-18
US9152663B2 (en) 2015-10-06
KR101597623B1 (ko) 2016-02-25
EP2778902B1 (en) 2017-08-16

Similar Documents

Publication Publication Date Title
US11030711B2 (en) Parallel processing image data having top-left dependent pixels
US9449360B2 (en) Reducing the number of sequential operations in an application to be performed on a shared memory cell
TWI556190B (zh) 使用像素區位元値的圖形資料之壓縮及解壓縮技術
US9811334B2 (en) Block operation based acceleration
US9396513B2 (en) Using group page fault descriptors to handle context switches and process terminations in graphics processors
KR101597623B1 (ko) Simd 명령어 세트 아키텍처를 이용하여 대규모 데이터 세트 내에서 최소 및 최대 값들을 찾기 위한 고속 접근법
US9626735B2 (en) Page management approach to fully utilize hardware caches for tiled rendering
US9471323B2 (en) System and method of using an atomic data buffer to bypass a memory location
US10242038B2 (en) Techniques for block-based indexing
US9864635B2 (en) Reducing the number of read/write operations performed by a CPU to duplicate source data to enable parallel processing on the source data
US10380106B2 (en) Efficient method and hardware implementation for nearest neighbor search
US9483810B2 (en) Reducing the number of IO requests to memory when executing a program that iteratively processes contiguous data
US20160292877A1 (en) Simd algorithm for image dilation and erosion processing
US9773477B2 (en) Reducing the number of scaling engines used in a display controller to display a plurality of images on a screen
TW201602961A (zh) 用以延遲著色之串流壓縮去鋸齒方法
US9558560B2 (en) Connected component labeling in graphics processors
US20140375647A1 (en) Efficient real-time rendering for high pixel density displays

Legal Events

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

Payment date: 20190129

Year of fee payment: 4