KR101202481B1 - 에스아이엠디 씨피유 아키텍쳐를 활용한 레코드 스캔 방법 및 이러한 방법을 사용하는 장치 - Google Patents

에스아이엠디 씨피유 아키텍쳐를 활용한 레코드 스캔 방법 및 이러한 방법을 사용하는 장치 Download PDF

Info

Publication number
KR101202481B1
KR101202481B1 KR1020100099403A KR20100099403A KR101202481B1 KR 101202481 B1 KR101202481 B1 KR 101202481B1 KR 1020100099403 A KR1020100099403 A KR 1020100099403A KR 20100099403 A KR20100099403 A KR 20100099403A KR 101202481 B1 KR101202481 B1 KR 101202481B1
Authority
KR
South Korea
Prior art keywords
simd
record
data
register
value
Prior art date
Application number
KR1020100099403A
Other languages
English (en)
Other versions
KR20120037755A (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 성균관대학교산학협력단
Priority to KR1020100099403A priority Critical patent/KR101202481B1/ko
Publication of KR20120037755A publication Critical patent/KR20120037755A/ko
Application granted granted Critical
Publication of KR101202481B1 publication Critical patent/KR101202481B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8007Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
    • G06F15/803Three-dimensional arrays or hypercubes

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Complex Calculations (AREA)

Abstract

에스아이엠디 씨피유 아키텍쳐를 활용한 레코드 스캔 방법 및 이러한 방법을 사용하는 장치가 개시되어 있다. SIMD(Single Instruction Multiple Data) 레지스터를 이용한 다차원 레코드 스캔 방법은 다차원 레코드에 포함된 차원 중 적어도 하나의 차원을 SIMD 레지스터에 기록하는 단계, SIMD 레지스터에 기록된 다차원 레코드에 포함된 차원 중 적어도 하나의 차원에 SIMD 연산을 수행하는 단계를 포함할 수 있다. 따라서, 기존의 시스템의 변화없이 다차원 속성을 갖는 레코드 스캔을 수행시 레코드의 스캔 속도를 향상 시킬 수 있고 또한 SIMD 연산시 SIMD 레지스터와 명령어들의 조합을 통해 조건 분기의 수를 줄여 분기 예측 오류를 감소시키므로 다차원 레코드 스캔 성능을 향상 시킬 수 있다.

Description

에스아이엠디 씨피유 아키텍쳐를 활용한 레코드 스캔 방법 및 이러한 방법을 사용하는 장치{METHODS OF SCANNING RECORD USING SINGLE INSTRUCTION MULTIPLE DATA CPU ARCHITECTURE AND APPARATUSES FOR USING THE SAME}
본 발명은 레코드 스캔 방법 및 이러한 방법을 사용하는 장치에 관한 것으로 더욱 상세하게는 에스아이엠디 씨피유를 이용하여 레코드를 스캔하는 방법 및 이러한 방법을 사용하는 장치에 관한 것이다.
대량의 데이터에 대해 복잡한 처리를 필요로 하는 근래의 컴퓨터 환경에서 데이터의 여러 가지 속성들을 비교하여 특정한 선택을 하고자 하는 경우, 데이터가 가진 레코드의 차수인 비교 속성의 개수(Dimension) 증가함에 따라 연산의 속도는 크게 달라질 수 있다.
최근 멀티코어 프로세서 환경에서 이러한 유형의 데이터 처리에 있어 성능으 향상시키기 위한 병렬화를 어떻게 구현할 것인가에 대해 여러 기법들이 고안되고 있다. 예를 들어, 기법에는 GPU(Graphic Processing Units)를 이용한 데이터 베이스 연산 수행 속도의 가속화, 다차원 속성을 고려한 경우로 병렬 스카이 라인(Parallel Skyline)을 그 예로 들 수 있다.
특히, 이 중에서 병렬 스카이라인은 다차원의 속성에 대한 스캔 효율을 높이기 위하여 스카이라인 알고리즘을 멀티코어 환경에 확장시켜 적용한 예로써, 대량의 데이터 집합을 멀티 코어를 구성하는 각 프로세서에 분산시켜 같은 CPU 시간 동안 최대한 많은 처리를 하도록 함으로써 수퍼 스칼라 단일 프로세서에서 명령어 수준의 병렬화(ILP, Instruction Level Parallelism)를 이용하는 것만으로는 극복하기 힘들었던 문제를 해결하고 있다.
도 1은 다차원의 속성을 가진 레코드를 비교하기 위한 순서도를 나타낸 것이다.
도 1을 참조하면 다차원의 레코드는 각 차원의 개수에 대한 조건 검사를 실시한다(단계 100).
조건 검사는 다차원의 레코드에 포함된 차원이 몇 개인지를 검사하여 반복 조건을 만드는 것이다. 예를 들어, 3개의 차원을 가진 레코드라면 해당 차원의 개수가 3개임을 파악하고 3회의 반복 조건을 만들 수 있다.
각 레코드에 속하는 해당 차원마다 각 차원이 해당 조건에 만족하는지 여부를 비교할 수 있다(단계 110).
예를 들어, 3개의 차원을 가진 레코드는 각각의 차원이 해당 기준값 이상인 지 여부에 대해 순차적으로 비교할 수 있다.
다음으로 레코드의 해당 차원 값이 해당 기준값 이상인 경우를 True라고 하고 해당 기준값 미만인 경우를 False라고 하면 해당 차원의 레코드 값이 특정한 값 이상인 경우(단계 120), 또는 해당 차원의 레코드 값이 특정한 값 미만인 경우(단계 130)로 나누어 분기하여, 각 레코드 값의 해당 차원의 속성이 가진 값을 해당 기준값과 비교한 결과를 산출할 수 있다.
따라서, 레코드의 각 차원을 순차적으로 비교하는 방법을 사용하여 다차원의 속성을 가진 레코드를 비교하는 경우 레코드 내의 차원의 개수가 늘어나는 만큼 증가한 횟수의 루프를 돌면서 해당 차원의 속성이 특정한 조건에 해당하는지를 판단해야 한다. 즉, 레코드 내의 차원이 확장되어 비교 대상이 되는 속성의 개수가 증가할수록 비교 연산이 레코드의 차원 수만큼 반복하여 수행된다.
다차원의 속성을 갖는 레코드에 대해 스캔을 할 경우, 다차원의 속성을 반복하여 비교하여야 하므로 레코드를 스캔하는 속도가 레코드가 가진 속성의 수가 늘어날수록 비례하여 느려진다.
따라서, 본 발명의 제1 목적은 SIMD(Single Instruction Multiple Data) CPU 아키텍쳐를 활용한 레코드 스캔 방법을 제공하는 것이다.
또한, 본 발명의 제2 목적은 SIMD CPU 아키텍쳐를 활용한 레코드 스캔 방법을 사용하는 장치를 제공하는 것이다.
상술한 본 발명의 제1 목적을 달성하기 위한 본 발명의 일 측면에 따른 SIMD(Single Instruction Multiple Data) 레지스터를 이용한 다차원 레코드 스캔 방법은 상기 다차원 레코드에 포함된 차원 중 적어도 하나의 차원을 상기 SIMD 레지스터에 기록하는 단계와 상기 SIMD 레지스터에 기록된 상기 다차원 레코드에 포함된 차원 중 적어도 하나의 차원에 SIMD 연산을 수행하는 단계를 포함할 수 있다. 상기 SIMD 레지스터를 이용한 다차원 레코드 스캔 방법은 상기 SIMD 연산을 통해 산출된 결과값과 소정의 기준값을 비교 연산하는 단계를 더 포함할 수 있다. 상기 비교 연산은 상기 산출된 결과값이 상기 소정의 기준값보다 큰지 여부를 산출하는 GT(Greater than)연산, 상기 산출된 결과값이 상기 소정의 기준값보다 크거나 같은지 여부를 산출하는 GE(Greater than equal)연산 및 상기 산출된 결과값이 상기 소정의 기준값과 같은지 여부를 산출하는 EQ(equal)연산 중 적어도 하나일 수 있다. 상기 SIMD 레지스터를 이용한 다차원 레코드 스캔 방법은 상기 비교 연산을 수행한 결과값을 기초로 분기 구조화를 수행하는 단계를 더 포함할 수 있다. 상기 분기 구조화는 상기 SIMD 연산을 통해 산출된 결과값과 소정의 기준값을 비교 연산한 비교 연산 결과로서 제1 데이터 및 제2 데이터가 산출된 경우 상기 제1 데이터에 포함된 모든 속성이 상기 제2 데이터에 포함된 모든 속성보다 비교 우위인 경우, L(Left),상기 제1 데이터에 포함된 모든 속성이 상기 제2 데이터에 포함된 모든 속성보다 비교 우위인 경우, R(Right), 상기 제1 데이터 에 포함된 속성과 상기 제2 데이터에 포함된 속성을 비교한 경우, 상기 제1 데이터가 상기 제2 데이터보다 비교 우위인 속성의 개수와 상기 제2 데이터가 상기 제1 데이터보다 비교 우위인 속성의 개수가 동일한 경우, N(Not clear) 및 상기 제1 데이터에 포함된 속성과 상기 제2 데이터에 포함된 속성을 비교한 경우, 상기 제1 데이터에 포함된 속성 중 적어도 하나의 속성은 상기 제1 데이터 속성이 비교우위이고 상기 제1 데이터에 포함된 속성 중 적어도 하나의 속성은 상기 제2 데이터의 속성이 비교우위인 경우에 있어서 상기 N(Not clear)으로 분기구조화 되지 않는 경우, I(Incompatible)로 분기할 수 있다. 상기 다차원 레코드에 포함된 차원 중 적어도 하나의 차원을 상기 SIMD 레지스터에 기록하는 단계는 상기 다차원 레코드에 포함된 차원의 수를 검사하는 단계; 및 상기 다차원 레코드에 포함된 차원을 벡터화하여 상기 SIMD 레지스터에 기록하는 단계를 더 포함할 수 있다. 상기 SIMD 레지스터에 기록된 상기 다차원 레코드에 포함된 차원 중 적어도 하나의 차원에 SIMD 연산을 수행하는 단계는 상기 SIMD 레지스터에 기록된 상기 다차원 레코드를 소정의 기준치와 비교하는 단계 및 상기 비교하는 단계를 통해 산출된 결과값을 스칼라 값으로 표현하기 위한 마스크 연산 단계를 포함할 수 있다.
또한 상술한 본 발명의 제2 목적을 달성하기 위한 본 발명의 일 측면에 따른 SIMD(Single Instruction Multiple Data) 레지스터를 이용하여 다차원 레코드 스캔을 수행하는 다차원 레코드 스캔 장치는 상기 다차원 레코드를 입력받는 입력부와 상기 입력부에서 입력받은 상기 다차원 레코드에 포함된 차원 중 적어도 하나의 차원에 대해 SIMD 연산을 수행하는 연산부를 포함할 수 있다. 상기 SIMD 레지스터를 이용한 다차원 레코드 스캔을 수행하는 다차원 레코드 스캔 장치는 상기 연산부에서 다차원 레코드에 포함된 적어도 하나의 차원을 SIMD 연산한 값을 출력하는 출력부를 더 포함할 수 있다. 상기 SIMD 레지스터를 이용한 다차원 레코드 스캔을 수행하는 다차원 레코드 스캔 장치는 상기 입력부에 입력되는 상기 다차원 레코드가 기록된 저장부를 더 포함할 수 있다. 상기 입력부는 상기 다차원 레코드를 조건 검사하여 벡터 로딩할 수 있다. 상기 연산부는 상기 SIMD 연산을 수행 후, 비교 연산 및 분기구조화 중 적어도 하나를 수행할 수 있다. 상기 연산부는 SIMD 레지스터를 포함하고, 상기 SIMD 레지스터를 이용하여 SIMD 연산을 수행할 수 있다.
상술한 바와 같이 본 발명의 실시예에 따른 에스아이엠디 씨피유 아키텍쳐를 활용한 레코드 스캔 방법 및 이러한 방법을 사용하는 장치에 따르면, 다차원의 속성을 갖는 레코드에 대한 스캔을 수행시 CPU에 포함된 SIMD 레지스터를 이용하여 다수의 속성을 갖는 레코드로 구성된 릴레이션에 대해 열-기반(Column-Based)이 아닌 행-기반(Row-Based)의 DLP(Data Level Parallelism)를 구현함으로써 효율적인 다차원 스캔을 할 수 있다. 또한, SIMD 레지스터를 이용하는 방법은 멀티코어 기반의 병렬화 기법과 독립적인 방법이므로 SIMD를 지원하는 단일 프로세서 뿐 아니라 이들로 구성된 멀티코어 프로세서에도 기존 시스템이나 아키텍쳐를 변경하지 않고도 적용할 수 있다.
따라서, 기존의 시스템의 변화없이 다차원 속성을 갖는 레코드 스캔을 수행시 레코드의 스캔 속도를 향상 시킬 수 있고 또한 SIMD 연산시 SIMD 레지스터와 명령어들의 조합을 통해 조건 분기의 수를 줄여 분기 예측 오류를 감소시키므로 다차원 레코드 스캔 성능을 향상 시킬 수 있다.
도 1은 다차원의 속성을 가진 레코드를 비교하기 위한 순서도를 나타낸 것이다.
도 2는 SIMD 연산을 나타내기 위한 개념도이다.
도 3은 SIMD 연산을 수행하기 위한 SIMD 레지스터를 나타낸 개념도이다.
도 4는 본 발명의 일실시예에 따른 SIMD 연산을 이용한 다차원 레코드 스캔 방법을 나타내는 순서도이다.
도 5는 본 발명의 일실시예에 따른 SIMD 연산 및 비교 연산을 하는 단계를 나타낸 개념도이다.
도 6은 본 발명의 일실시예에 따른 SIMD 연산 단계를 나타낸 다른 개념도이다.
도 7은 본 발명의 일실시예에 따른 SIMD 연산 결과를 기초로 산출된 값을 이용하여 분기 구조화를 진행하는 것을 나타낸 개념도이다.
도 8은 본 발명의 일실시예에 따른 SIMD 연산을 수행하는 다차원 레코드 스캔 장치를 나타내는 개념도이다.
도 9는 본 발명의 일실시예에 따른 SIMD 연산을 이용한 다차원 레코드 스캔의 성능을 나타내는 그래프이다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세한 설명에 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조부호를 유사한 구성요소에 대해 사용하였다.
제1, 제2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다. 및/또는 이라는 용어는 복수의 관련된 기재된 항목들의 조합 또는 복수의 관련된 기재된 항목들 중의 어느 항목을 포함한다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어"있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어"있다거나 "직접 접속되어"있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 이하, 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.
이하 본 발명의 실시예는 인텔(INTEL), AMD, 썬(Sun), 컴팩(COMPAQ) 등 여러 CPU 제작 회사들이 지원하고 있는 SIMD(Single Instruction Multiple Data) 명령어 셋을 이용하여 다차원의 레코드로 구성된 릴레이션에 대해 열-기반(Column-based)이 아닌 행-기반(Row-based)의 데이터 수준의 병렬화(DLP, Data Level Parallelism)를 구현하는 다차원 레코드 스캔 방법을 개시한다.
이하의 본 발명의 실시예에서는 x86 아키텍처의 SIMD 명령어를 활용하여 성능평가를 수행하였으며 이는 인텔과 AMD사의 프로세서가 공통적으로 지원하고 있는 SSE/SSE2/SSE3 명령어로 구성 될 수 있다. 하지만, 본 발명의 본질에서 벋어나지 않는 한, CPU의 종류마다 SIMD 명령어는 변화할 수 있으며 따라서, 본 발명의 권리범위가 특정한 CPU 아키텍쳐 및 특정 SIMD 명령어에 한정되는 것은 아니다.
이하 본 발명의 실시예에서는 레코드는 복수개의 차원을 가진 하나의 데이터 집합을 의미하고, 레코드에 포함된 차원은 레코드 스캔시 비교 대상이 되는 레코드에 포함된 값을 의미할 수 있다.
본 발명의 일실시예에서는 설명의 편의상, SIMD 연산은 SIMD 레지스터를 이용한 연산을 말하고 SIMD 연산에 있어 대입 연산과 비교 연산 및 MASK 연산을 사용하여 본 발명을 개시하지만, SIMD 연산에는 비교 연산, 논리 연산, Permute 연산, Mask 연산, 대입 연산, 변환 연산 등 다양한 연산이 사용될 수 있고 SIMD 레지스터를 사용하여 할 수 있는 연산은 본 발명의 본질에서 벋어나지 않는 한 본 발명의 권리 범위에 포함된다.
도 2는 SIMD 연산을 나타내기 위한 개념도이다.
도 2를 참조하면 4개의 차원(X1, X2, X3, X4)을 포함한 레코드 1(200)과 4개의 차원(Y1, Y2, Y3, Y4)을 포함한 레코드 2(210)는 병렬적으로 프로세스 유닛에서 실행되는 동일한 연산인 OP(220)에 전달된다. OP(220)에서의 연산 결과값은 4개의 데이터 스트림(230)으로 출력될 수 있다.
SIMD 연산은 레코드에 포함되는 각 차원을 저장할 SIMD 레지스터(이하 레지스터라는 용어도 SIMD 레지스터와 동일한 의미로 사용함.)와 SIMD 명령어들을 이용하여 수행된다. SIMD 레지스터에는 SIMD 레지스터의 크기에 해당하는 만큼의 데이터들이 벡터화되어 저장될 수 있다. 예를 들어, 128 비트의 SIMD 레지스터에는 32 비트의 실수값이 4개 저장될 수 있기 때문에 다차원 레코드의 4개의 차원이 하나의 128 비트의 레지스터에 저장될 수 있다.
SIMD 레지스터 내의 데이터 저장의 오류를 방지하고 이후 레지스터에 명령어 적용시 처리 속도가 저하되는 것을 방지하기 위해 사전에 SIMD 레지스터 내의 바이트를 정렬(Align)해주는 작업이 수행될 수 있다. 따라서, SIMD 레지스터 내의 바이트를 정렬(Align)시 기본적인 연산 및 마스크(Mask), 셔플(Shuffle) 등 다양한 연산 명령어들에 대해 해당 명령어가 어떤 SIMD 레지스터를 사용하는지, 레코드의 각 차원들이 SIMD 레지스터에 어떻게 정렬되어 저장되는지를 고려할 수 있다.
SIMD 명령어들 대부분은 레지스터 간(Resistor to Resistor) 연산 또는 레지스터 셔플링(Resistor Shuffling)을 통해 목적 레지스터에 해당 SIMD 연산의 결과를 저장한다. 따라서 연산의 결과를 원하는 값으로 추출하기 위해서는 해당 명령어의 수행 결과가 어떻게 반영되는지를 고려할 수 있다. 특히 마스킹(Masking)을 통해 이후 결과에 대한 조건 분기 등을 수행하는 경우는 연산을 통해 나온 결과로 어떤 타입의 값들이 반환되며 반환값으로는 몇 비트가 사용되고 있는지를 고려하여 SIMD 명령어를 사용할 수 있다.
도 3은 SIMD 연산을 수행하기 위한 SIMD 레지스터를 나타낸 개념도이다.
도 3을 참조하면, SIMD 연산을 수행하기 위한 64 비트 MMX 레지스터(300) 및 128 비트 XMM 레지스터(310)이 개시되어 있다.
인텔은 SIMD 연산을 수행하기 위한 MMXTM 기술을 CPU 아키텍쳐 IA-32를 통해 도입하였다. 각 SIMD 레지스터들은 각 레코드 차원들의 개별 속성값을 저장할 수 있고, 동시에 각 레코드 차원에 포함되는 개별 속성값을 비교할 수 있다.
이하 본 발명의 실시예에 따르면 16개의 128 비트 크기를 가진 SIMD 레지스터를 지원하는 프로세서를 사용하였고, 32 비트 크기의 레코드 속성을 비교하므로 하나의 128 비트 SIMD 레지스터에는 4개의 속성값이 포함될 수 있고, SIMD 연산 수행으로 얻어내는 마스크 값(Mask Value)은 4비트의 유의미한 값을 가질 수 있다. 하지만 본 발명의 본질에서 벋어나지 않는 한 SIMD 레지스터의 크기, 레코드 속성 및 마스크 값은 달라질 수 있다. 예를 들어, SIMD 레지스터의 크기가 128비트에서 512, 1024비트로 증가함에 따라 더욱 많은 레코드의 차원이 동시에 비교될 수 있어 더욱 더 빠른 레코드 스캔이 이루어질 수 있고 이러한 변화된 크기의 SIMD 레지스터를 이용하여 본 발명의 실시예에 따른 다차원 레코드 스캔 역시 본 발명의 권리 범위에 포함된다.
도 4는 본 발명의 일실시예에 따른 SIMD 연산을 이용한 다차원 레코드 스캔 방법을 나타내는 순서도이다.
도 4를 참조하면, SIMD 연산을 이용한 다차원 레코드 스캔을 수행하기 위해 조건 검사 및 벡터 로딩을 할 수 있다(단계 410).
조건 검사를 통해 해당 레코드에 몇 개의 차원이 포함되어 있는지를 검사하고, 벡터 로딩은 하나의 SIMD 레지스터에 여러개의 차원값을 로딩하는 것을 말한다. 벡터화는 다차원 레코드에 포함되는 차원에 해당하는 값을 SIMD 레지스터에 로딩하기 위한 형태로 변형하는 것을 말한다.
입력으로 제공된 다차원 레코드에 포함된 차원들을 벡터화하여 SIMD 레지스터에 로딩할 수 있다. 예를 들어, 128비트 크기의 SIMD 레지스터를 사용하고 레코드에 포함된 하나의 차원이 32 비트 크기를 가진다면 하나의 SIMD 레지스터에는 4개의 레코드 차원이 포함될 수 있다. 따라서, 16개의 차원을 가지고 있는 레코드의 경우, 4개의 128비트 크기의 SIMD 레지스터를 사용할 수 있고, 32개의 차원을 가지고 있는 레코드의 경우, 8개의 SIMD 레지스터에 포함될 수 있다.
즉, 조건 검사 및 벡터 로딩 단계에서는 입력으로 받아들인 레코드의 차원값들을 벡터화 하여 SIMD 레지스터에 기록할 수 있다.
SIMD 레지스터에 벡터 로딩된 레코드들을 기초로 SIMD 연산을 수행할 수 있다(단계 420).
SIMD 연산 단계에서는 SIMD 레지스터에 기록된 다차원 레코드를 소정의 기준치와 비교하고 비교 결과를 통해 산출된 값을 스칼라 값으로 표현하기 위한 마스크 연산을 수행할 수 있다.
CPU에서는 SIMD 명령어들의 조합을 이용하여 원하는 연산을 수행할 수 있다. 예를 들어 3: dst = _mm_max_ps(obj, cmp) 4: msk = _mm_cmpeq_ps(dst, cmp) 5: movemask = _mm_movemask_ps(msk) 와 같은 SIMD 연산을 통해서 max 단계를 통해 두 비교 대상(obj, cmp)로부터 더 큰 요소가 무엇인지를 판별하여 추출하는 연산을 수행할 수 있고, CMPEQ 단계를 통해 두 비교 대상의 각 요소들이 같은 값을 갖는지 여부를 비교하는 연산을 수행할 수 있다.
이러한 SIMD 연산을 통해 마스크 값을 생성할 수 있다. 마스크 연산은 SIMD 비교 연산의 결과를 벡터 값이 아닌 스칼라 값으로 변환하기 위해 사용되는 값이다. 하지만 이러한 마스크 값을 생성하기 위한 연산을 하지 않고 분기구조화 단계를 수행하는 것도 가능하다.
예를 들어 128비트 크기의 SIMD 레지스터를 사용해 32 비트 크기의 레코드 속성을 비교한다면 하나의 SIMD 레지스터에는 4개의 레코드 속성이 포함될 수 있고 레코드에 포함된 8개 차원의 속성을 비교하는 경우 2개의 SIMD 레지스터가 사용될 수 있다. 하나의 SIMD 레지스터에는 4개의 레코드 속성이 포함된 경우, 각 레지스터에 포함된 레코드 속성들을 비교 집단과 비교하여 4개의 마스크 값을 생성할 수 있다.
예를 들어. A, B, C, D, E, F, G, H의 8개의 차원의 속성값은 2개의 SIMD 레지스터에 (A, B, C, D)와 (E, F, G, H)로 나누어져 기록될 수 있고, 각각의 속성의 기준값과 비교될 수 있다. 만약 기준치를 만족하는 경우를 1, 기준치를 만족하지 못하는 경우를 0으로 나타낸다면, 각각의 레지스터에 기록된 값은 4비트의 이진수 값 1001, 0011과 같은 4개의 비트를 가진 하나의 집합으로 나타낼 수 있다.
SIMD 연산은 레코드의 일부 차원에 대해서만 행해질 수도 있다. 예를 들어, 9개의 차원을 가진 경우, 8개의 차원은 SIMD 연산을 통해 기준값과 비교될 수 있고, 나머지 1개의 차원은 일반 적인 비교 연산을 통해 레코드를 스캔할 수 있다.
SIMD 연산 후, 비교 연산을 수행할 수 있다(단계 430).
단계 420을 통해 구해진 마스크 값과 기준이 되는 상수값과 비교 연산을 통해 해당 레코드를 기준값을 만족하는 레코드들의 집합인 결과 집합에 포함시킬 것인지를 판단할 수 있다.
예를 들어, 단계 420을 통해 산출된 4비트의 이진수 값인 1001이 있는 경우 기준이 되는 값인 0011과 AND 연산을 이용해서 0001이라는 값을 얻어내고 이 값을 통해 해당 레코드가 결과 집합에 포함되는 레코드인지를 판단할 수 있다.
비교 연산(단계 430)을 수행한 후 결과값을 기초로 분기 구조화를 실시할 수 있다(단계 440).
분기 구조화는 비교 연산 후의 결과를 이용하여 추후의 프로그램에서 요구하는 작업을 수행하기 위해 수행되는 것으로서 비교 연산의 결과를 특정한 기준에 의해 분기시키는 것을 말한다.
예를 들어 A와 B를 비교 연산 한 결과를 이용해 1) A가 B보다 큰 경우 참(True), 2) A가 B보다 작거나 같은 경우 거짓(False), 3) A와 B의 크기가 비교 불가능 한 경우 비교불능(Incompatible)이라는 3개의 결과로 분기할 수 있다. 이러한 분기한 결과값을 기초로 A가 B보다 큰 경우 A 데이터 전부를 테이블에 포함시키고, 비교 불능인 경우 A와 B의 데이터 모두를 테이블에 포함시키는 처리를 수행할 수 있다.
도 5는 본 발명의 일실시예에 따른 SIMD 연산 및 비교 연산을 하는 단계를 나타낸 개념도이다.
도 5를 참조하면, 입력으로 받아들인 레코드의 속성값들을 벡터화하여 SIMD 레지스터에 로딩할 수 있다.
a1, a2, a3, a4, a5, a6, a7, a8, a9는 벡터화하여 SIMD 레지스터에 로딩된 레코드의 각 차원이고 로딩된 레코드의 각 차원을 기준으로 비교할 기준을 c1, c2, c3, c4, c5, c6,c7, c8, c9 으로 가정할 수 있다. 또한, 128 비트의 SIMD 레지스터를 사용하고 레코드에 포함된 하나의 차원 크기는 32 비트인 경우 하나의 SIMD 레지스터에는 4개의 레코드 속성 차원이 포함될 수 있다고 가정한다.
SIMD 연산 1단계(500)를 참조하면 각 레코드 속성들은 (a1, a2, a3, a4), (a5, a6, a7, a8)로 4개씩 하나의 SIMD 레지스터에 포함될 수 있고 남는 하나의 레코드 속성인 a9는 SIMD 연산이 아닌 일반 조건 연산을 수행할 수 있다.
a9의 경우, 일반적인 조건 연산이 아닌 또 다른 SIMD 레지스터에 포함하여 남는 SIMD 레지스터의 공간에 NULL 값을 입력하여 사용할 수도 있지만 이하의 실시예에서는 a9은 SIMD 연산을 통한 비교 연산이 아닌 일반적인 조건 연산을 통해 비교 연산을 수행하는 것으로 가정한다. 하지만, a9를 일반 조건 연산이 아닌 SIMD 레지스터에 포함시켜 SIMD 연산을 수행하는 것 또한 본 발명의 권리범위에 포함된다.
SIMD 연산 2단계(510)에서 로딩된 각 레코드의 속성값들은 지정한 연산을 수행할 수 있다.
각 레코드 속성의 크기를 비교하는 연산과 같은 비교 연산을 통해 레코드의 각 차원이 해당 기준을 만족하는지 여부에 대해 판단한 후 판단한 결과를 MASK 연산을 통해 스칼라값으로 표현할 수 있다.
예를 들어, Max(obj, cmp) 단계를 통해 두 비교 대상(obj, cmp)로부터 더 큰 요소가 무엇인지를 판별하여 추출하는 연산을 수행할 수 있고, CMPEQ(Max, cmp) 단계를 통해 두 비교 대상의 각 요소들이 같은 값을 갖는지 여부를 비교하는 연산을 수행할 수 있다. 연산이 수행된 결과를 마스킹하여 결과값을 도출할 수 있다.
SIMD 연산의 종류는 사용자의 지정에 따라 달라질 수 있고, 본 발명의 본질에서 벋어나지 않는 한 다양한 실시예를 가지고 변형될 수 있다.
비교 연산(520)에서는 단계 510을 통해 판단된 산출된 값을 이진수로 표현된 기준값과 비교하고 기준값과 소정의 논리 연산을 이용해 해당하는 값이 결과 집합에 포함되는 레코드 값인지 여부를 판단할 수 있다.
예를 들어, SIMD 레지스터에서 생성된 이진수의 값이 1001인 경우, 소정의 기준값인 0111과 비교 연산을 통해 0001이라는 값을 결과값으로 얻을 수 있고 이 값을 기초로 해당 레코드를 결과 집합에 포함할 것인지에 대하여 판단할 수 있다.
본 발명의 실시예에 따르면, 이러한 이진수의 비트수는 각 레지스터의 크기 및 레코드 속성의 크기에 따라 달라질 수 있다. 또한 비교 연산시 AND 연산이 아니라 다른 논리 연산을 통해서도 마스크 값을 얻어낼 수 있다.
도 6은 본 발명의 일실시예에 따른 SIMD 연산 단계를 나타낸 다른 개념도이다.
도 6을 참조하면 각 레코드 속성들을 SIMD 레지스터에 벡터화하여 로딩할 수 있다.
제1 SIMD 연산 단계(600)에서는 제1 SIMD 레지스터(600-1)에 비교하고자 하는 레코드 속성값을 벡터화하여 로딩하고 제2 SIMD 레지스터(600-2)에는 비교의 기준이 되는 레코드 속성값을 벡터화하여 로딩할 수 있다.
제2 SIMD 연산 단계(610)에서는 제1 SIMD 레지스터(600-1)와 제2 SIMD 레지스터(600-2)를 비교하여 제1 SIMD 레지스터(600-1)의 레코드 값이 클 경우 1로 제1 SIMD 레지스터(600-1)의 레코드 값이 작거나 같을 경우 0의 값을 가지도록 마스크 값을 생성할 수 있다. 또한 다른 마스크 값으로 제1 SIMD 레지스터(600-1)와 제2 SIMD 레지스터(600-2)의 값이 서로 같을 경우 1로 서로 다를 경우 0의 값을 가지도록 마스크 값을 생성할 수 있다.
GT 연산 결과값(610-1)의 GT는 Greater Than을 의미하는 것으로서 제1 레지스터(600-1)의 값이 제2 레지스터(600-2)의 값보다 큰 경우 1의 값을 가지고 제1 레지스터(600-1)의 값이 제2 레지스터(600-2)의 값보다 작거나 같은 경우 0의 값을 가진다. 제1 레지스터의(600-1)의 첫 번째 비트와 세 번째 비트가 제2 레지스터(600-3)보다 크기 때문에 결과값은 '1010'의 값을 가진다.
EQ 연산 결과값(610-2)의 EQ는 Equal을 의미하는 것으로서 제1 레지스터(600-1)의 두 번째 비트값과 제2 레지스터(600-2)의 두 번째 비트값이 동일하므로 '0100'의 값을 가진다.
제2 SIMD 연산 단계(610)로 생성된 마스크 값을 기초로 마스크 연산 단계(620)을 수행할 수 있다.
마스크 연산은 SIMD 연산으로 나온 결과를 마스킹 값으로 표현하는 것으로서 벡터값이 아닌 스칼라 값으로 표현하는 것이다.
예를 들어, 마스크 연산을 수행하여 GT 연산으로 나온 벡터값을 스칼라값인 4비트의 마스크 값 '1010'으로 변형하고 EQ 연산으로 나온 벡터값을 스칼라값인 4비트의 마스크 값인 '0100'로 변형할 수 있다.
산출된 스칼라 값인 마스크값을 기초로 논리 연산을 하여 하나의 값으로 생성할 수 있다.
산출된 스칼라 값인 '1010'과 '0100'을 OR 논리 연산하여 '1110'으로 표현할 수 있다.
도 7은 본 발명의 일실시예에 따른 SIMD 연산 결과를 기초로 산출된 값을 이용하여 분기 구조화를 진행하는 것을 나타낸 개념도이다.
분기구조화는 특정 프로그램에서 비교 연산 후의 결과 값을 이용하여 프로그램상의 처리를 하기 위해 비교 연산의 결과값을 특정한 기준을 기초로 하여 분류한 것을 말한다.
도 7을 참조하면, 좌측의 개념도는 위에서부터, GT(Greater than) 연산 결과로 산출된 값, EQ(Equal) 연산 결과로 산출된 값, GE(Greater than equal) 연산 결과로 산출된 값을 나타낸다.
GT(Greater than)연산은 상기 산출된 결과값이 상기 소정의 기준값보다 큰지 여부를 산출할 수 있고, GE(Greater than equal)연산은 상기 산출된 결과값이 상기 소정의 기준값보다 크거나 같은지 여부를 산출할 수 있다. 또한, EQ(equal)연산은 상기 산출된 결과값이 상기 소정의 기준값과 같은지 여부를 산출할 수 있다.
우측의 개념도의 GE all bits이라는 것은 SIMD 연산 후, Greater than equal bit-vector(GE)의 모든 significant bits가 1로 setting된 경우(예를 들어 '1111')를 1(True)로, 하나라도 0인 경우 0(False)으로 분류한 것을 나타낸다. GT any bit이라는 것은 SIMD연산 후, Greater than bit-vector(GT)의 모든 significant bits중 하나라도 1로 setting된 경우를 1(True)로 모두 0이면(예를 들어 '0000') 0(False)로 분류한 것을 나타낸다.
우측 개념도 안에 표시된 L, I, N, R은 각각의 분기 조건을 나타내는 것으로서 L, R은 비교 결과 어느 특정 데이터의 속성이 우월한 경우를 나타낸다. I는 Incompatible을 의미하는 것으로서 어떤 원소는 왼쪽의 데이터가 더 크고 어떤 원소는 오른쪽의 데이터가 더 큰 경우로서 비교할 수가 없음을 나타낼 수 있다. N은 Not Clear를 의미하는 것으로서 이것만으로는 두 데이터의 비교 결과를 판단하는 것이 불가능하여 더 많은 요소를 비교해봐야 하는 경우를 나타내는 것으로, 각각의 4개의 원소값이 동일한 경우를 나타낼 수 있다.
예를 들어, SIMD 연산을 통해 복수개의 데이터가 산출될 수 있다. SIMD 연산을 통해 산출된 데이터 값을 제1 데이터, 제2 데이터라고 한다면, 제1 데이터에 포함된 모든 속성이 제2 데이터에 포함된 모든 속성보다 비교 우위인 경우, L(Left)로 분기하고, 제1 데이터에 포함된 모든 속성이 제2 데이터에 포함된 모든 속성보다 비교 우위인 경우, R(Right)로 분기할 수 있다.
비교 우위는 두 값을 비교하여 두 값 중 하나의 값이 다른 하나의 값보다 특정한 기준을 더 만족하는 경우를 가리킬 수 있다.
또한, 제1 데이터에 포함된 속성과 제2 데이터에 포함된 속성을 비교한 경우, 제1 데이터가 제2 데이터보다 비교 우위인 속성의 개수와 제2 데이터가 제1 데이터보다 비교 우위인 속성의 개수가 동일한 경우, N(Not clear)로, 제1 데이터에 포함된 속성과 제2 데이터에 포함된 속성을 비교한 경우, 제1 데이터에 포함된 속성 중 적어도 하나의 속성은 제1 데이터 속성이 비교우위이고 제1 데이터에 포함된 속성 중 적어도 하나의 속성은 제2 데이터의 속성이 비교 우위인 경우에 있어서 N으로 분기구조화 되지 않는 경우 즉, 제1 데이터와 제2 데이터가 비교 우위인 개수가 동일하지 않을 경우 I(Incompatible)로 분기할 수 있다.
예를 들어, GT 연산 결과값이 '1010'인 경우 GT 연산 값은 '0000'인 경우에만 False 값을 가지므로 True에 해당하고, GE 연산 결과값이 '1110'인 경우, GE 연산 값은 '1111'인 경우에만 True에 해당하므로 False 값을 가진다.
즉, GT any bit은 True 이고. GE all bits는 False 이므로 분기구조화 된 결과값으로 I(Incompatible) 즉, 비교 불가능이라는 분기구조 결과값을 가질 수 있다.
현재 거의 모든 CPU가 명령어를 처리하는데 있어 이전 명령어에 대한 처리가 다 끝날 때까지 기다리지 않고 파이프라인(pipeline)이라는 것을 사용하여 다음 명령어를 바로바로 페치(fetch)하여 명령어 처리속도를 향상 시킨다. 하지만 프로그램 수행 간에 분기구조가 있는 경우는 분기 조건의 결과가 어떻게 될지 모르기 때문에 파이프라인이 제 역할을 할 수 없고 이러한 경우 파이프라인 스톨(pipeline stall)이라고 한다.
분기구조가 복잡해질수록 pipeline stall이 일어날 가능성이 높은데 pipeline stall을 막기 위해 CPU 아키텍쳐는 분기가 일어날지 말지를 미리 예측하는 프로세스를 갖는데 이러한 예측 프로세스를 분기 예측이라고 한다. 분기 예측이 잘못되었을 경우를 분기 예측 오류라고 하고 분기 예측 오류가 발생한 경우, pipeline stall이 발생하게 되어 프로그램 수행성능이 현저히 떨어진다.
본 발명의 일실시예에 따른 SIMD 레지스터를 이용한 레코드 스캔 방법에서 분기 구조화를 이용하는 경우, 기존의 다차원 레코드의 비교 연산에 있어서 필요하던 조건 분기의 횟수를 감소시켜 분기 예측 오류가 야기하는 CPU의 지연을 줄여줄 수 있다.
도 7에 나타난 실시예는 본 발명에 따른 분기구조화의 하나의 실시예로서 다양한 분기 구조화가 이루어질 수 있고, 본 발명의 본질에서 벋어나지 않는 한 이러한 다양한 분기 구조화는 본 발명의 권리범위에 속한다.
도 8은 본 발명의 일실시예에 따른 SIMD 연산을 수행하는 다차원 레코드 스캔 장치를 나타내는 개념도이다.
도 8을 참조하면, 다차원 레코드 스캔 장치는 입력부(800), 연산부(810), 출력부(820) 및 저장부(830)를 포함하여 구성될 수 있다.
입력부(800)는 다차원 레코드를 입력받아 연산부(810)에 전달할 수 있다. 또한 입력부(800)에서는 다차원 레코드에 포함된 차원들을 조건 검사 및 벡터 로딩하여 레코드에 포함된 각 차원들이 SIMD 연산을 수행할 수 있도록 SIMD 레지스터에 로딩할 수 있다.
연산부(810)은 입력부(800)를 통해 전달된 다차원 레코드를 연산부(810)에 포함된 SIMD 레지스터를 이용해 SIMD 연산을 수행할 수 있다.
연산부(810)에서 다차원 레코드에 포함된 차원 중 적어도 하나의 차원에 대해 SIMD 연산을 수행할 수 있고, 경우에 따라, 레코드에 포함된 특정 차원은 SIMD 연산이 아닌 일반 연산을 수행하여 레코드를 스캔할 수 있다.
연산부(810)에서는 SIMD 연산뿐만 아니라 비교 연산 및 분기 구조화 연산을 더 포함하여 수행하는 것도 가능하다.
출력부(820)는 연산부(810)에서 연산된 결과를 출력할 수 있다.
저장부(830)는 입력부(800)를 통해 연산부(810)에 입력되는 다차원 레코드가 기록된 곳으로서 예를 들어, 데이터베이스가 될 수 있다.
도 9는 본 발명의 일실시예에 따른 SIMD 연산을 이용한 다차원 레코드 스캔의 성능을 나타내는 그래프이다.
도 9를 참조하면, 그래프는 SIMD 연산을 적용하여 레코드 스캔을 수행한 경우와 SIMD 연산을 적용하지 않고 레코드 연산을 수행한 경우에 수행시간을 비교하여 나타낸다.
다차원 레코드 스캔의 성능 평가를 위한 시스템 환경은 AMD 'AthlonX2 7750 Dual core processor'를 사용하며 이 프로세서는 16개의 128 비트 xmm 레지스터를 지원할 수 있는 프로세서이다.
도 9의 그래프에서 실선(900, 910)은 SIMD 연산을 적용하여 다차원 레코드를 스캔한 경우를 나타내며, 점선(900-1, 910-1)은 SIMD 연산을 사용하지 않고 다차원 레코드 스캔을 수행할 경우를 나타낸다. 위의 두 개의 선(910-1, 910)은 레코드 집합의 크기가 4000k인 경우를 나타내고 아래의 두 개의 선(900, 900-1)은 레코드 집합의 크기가 1000k인 경우를 나타낸다.
그래프의 가로 축은 레코드에 포함된 차원의 개수를 나타내고, 그래프의 세로축은 CPU에서 다차원 레코드 스캔을 수행하는데 걸린 시간을 나타낸다.
레코드 집합의 크기가 1000k인 경우를 비교하면 레코드에 포함된 찬원의 수가 작은 경우에는 SIMD 연산을 이용한 다차원 레코드 스캔을 한 그래프(900)와 SIMD 연산을 이용하지 않은 다차원 레코드 스캔을 한 그래프(900-1)는 많은 차이를 보이지 않는다. 하지만 레코드에 포함된 차원의 수가 증가할수록 SIMD를 사용하여 다차원의 레코드를 스캔할 때 걸리는 실행 시간과 SIMD를 사용하지 않고 다차원 레코드를 스캔할 때 걸리는 실행 시간의 차이가 점점 커지는 것을 볼 수 있다.
즉, 본 발명의 일실시예에 따른 SIMD를 이용한 다차원 레코드 스캔은 레코드에 포함된 차원의 개수가 증가할수록 효과적으로 레코드 스캔 시간을 감소시킬 수 있다.
이상 실시예를 참조하여 설명하였지만, 해당 기술 분야의 숙련된 당업자는 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.

Claims (13)

  1. SIMD(Single Instruction Multiple Data) 레지스터를 이용한 다차원 레코드 스캔 방법에 있어서,
    상기 다차원 레코드에 포함된 차원의 수를 검사하는 단계;
    상기 다차원 레코드에 포함된 차원을 벡터화하여 상기 SIMD 레지스터에 기록하는 단계; 및
    상기 SIMD 레지스터에 기록된 상기 다차원 레코드에 포함된 차원 중 적어도 하나의 차원에 SIMD 연산을 수행하는 단계를 포함하는 SIMD 레지스터를 이용한 다차원 레코드 스캔 방법.
  2. 제1항에 있어서, 상기 SIMD 레지스터를 이용한 다차원 레코드 스캔 방법은,
    상기 SIMD 연산을 통해 산출된 결과값과 소정의 기준값을 비교 연산하는 단계를 더 포함하는 SIMD 레지스터를 이용한 다차원 레코드 스캔 방법.
  3. 제2항에 있어서, 상기 비교 연산은,
    상기 산출된 결과값이 상기 소정의 기준값보다 큰지 여부를 산출하는 GT(Greater than)연산;
    상기 산출된 결과값이 상기 소정의 기준값보다 크거나 같은지 여부를 산출하는 GE(Greater than equal)연산; 및
    상기 산출된 결과값이 상기 소정의 기준값과 같은지 여부를 산출하는 EQ(equal)연산 중 적어도 하나 인 것을 특징으로 하는 SIMD 레지스터를 이용한 다차원 레코드 스캔 방법.
  4. 제3항에 있어서, 상기 SIMD 레지스터를 이용한 다차원 레코드 스캔 방법은,
    상기 비교 연산을 수행한 결과값을 기초로 분기 구조화를 수행하는 단계를 더 포함하는 SIMD 레지스터를 이용한 다차원 레코드 스캔 방법.
  5. 제4항에 있어서, 상기 분기 구조화는,
    상기 SIMD 연산을 통해 산출된 결과값과 소정의 기준값을 비교 연산한 비교 연산 결과로서 제1 데이터 및 제2 데이터가 산출된 경우,
    상기 제1 데이터에 포함된 모든 속성이 상기 제2 데이터에 포함된 모든 속성보다 비교 우위인 경우, L(Left);
    상기 제1 데이터에 포함된 모든 속성이 상기 제2 데이터에 포함된 모든 속성보다 비교 우위인 경우, R(Right);
    상기 제1 데이터 에 포함된 속성과 상기 제2 데이터에 포함된 속성을 비교한 경우, 상기 제1 데이터가 상기 제2 데이터보다 비교 우위인 속성의 개수와 상기 제2 데이터가 상기 제1 데이터보다 비교 우위인 속성의 개수가 동일한 경우, N(Not clear);및
    상기 제1 데이터에 포함된 속성과 상기 제2 데이터에 포함된 속성을 비교한 경우, 상기 제1 데이터에 포함된 속성 중 적어도 하나의 속성은 상기 제1 데이터 속성이 비교우위이고 상기 제1 데이터에 포함된 속성 중 적어도 하나의 속성은 상기 제2 데이터의 속성이 비교우위인 경우에 있어서 상기 N(Not clear)으로 분기구조화 되지 않는 경우, I(Incompatible)로 분기하는 것을 특징으로 하는 SIMD 레지스터를 이용한 다차원 레코드 스캔 방법.
  6. 삭제
  7. 제1항에 있어서, 상기 SIMD 레지스터에 기록된 상기 다차원 레코드에 포함된 차원 중 적어도 하나의 차원에 SIMD 연산을 수행하는 단계는,
    상기 SIMD 레지스터에 기록된 상기 다차원 레코드를 소정의 기준치와 비교하는 단계; 및
    상기 비교하는 단계를 통해 산출된 결과값을 스칼라 값으로 표현하기 위한 마스크 연산 단계를 포함하는 SIMD 레지스터를 이용한 다차원 레코드 스캔 방법.
  8. SIMD(Single Instruction Multiple Data) 레지스터를 이용하여 다차원 레코드 스캔을 수행하는 다차원 레코드 스캔 장치에 있어서,
    상기 다차원 레코드를 입력받고 입력받은 다차원 레코드를 조건 검사하여 벡터 로딩하는 입력부; 및
    상기 입력부에서 입력받은 상기 다차원 레코드에 포함된 차원 중 적어도 하나의 차원에 대해 SIMD 연산을 수행하는 연산부를 포함하는 SIMD 레지스터를 이용하여 다차원 레코드 스캔을 수행하는 다차원 레코드 스캔 장치.
  9. 제8항에 있어서, 상기 SIMD 레지스터를 이용한 다차원 레코드 스캔을 수행하는 다차원 레코드 스캔 장치는,
    상기 연산부에서 다차원 레코드에 포함된 적어도 하나의 차원을 SIMD 연산한 값을 출력하는 출력부를 더 포함하는 SIMD 레지스터를 이용하여 다차원 레코드 스캔을 수행하는 다차원 레코드 스캔 장치.
  10. 제8항에 있어서, 상기 SIMD 레지스터를 이용한 다차원 레코드 스캔을 수행하는 다차원 레코드 스캔 장치는,
    상기 입력부에 입력되는 상기 다차원 레코드가 기록된 저장부를 더 포함하는 SIMD 레지스터를 이용하여 다차원 레코드 스캔을 수행하는 다차원 레코드 스캔 장치.
  11. 삭제
  12. 제8항에 있어서, 상기 연산부는,
    상기 SIMD 연산을 수행 후, 비교 연산 및 분기구조화 중 적어도 하나를 수행하는 것을 특징으로 하는 SIMD 레지스터를 이용하여 다차원 레코드 스캔을 수행하는 다차원 레코드 스캔 장치.
  13. 제8항에 있어서, 상기 연산부는,
    SIMD 레지스터를 포함하고, 상기 SIMD 레지스터를 이용하여 SIMD 연산을 수행하는 것을 특징으로 하는 SIMD 레지스터를 이용하여 다차원 레코드 스캔을 수행하는 다차원 레코드 스캔 장치.
KR1020100099403A 2010-10-12 2010-10-12 에스아이엠디 씨피유 아키텍쳐를 활용한 레코드 스캔 방법 및 이러한 방법을 사용하는 장치 KR101202481B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020100099403A KR101202481B1 (ko) 2010-10-12 2010-10-12 에스아이엠디 씨피유 아키텍쳐를 활용한 레코드 스캔 방법 및 이러한 방법을 사용하는 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020100099403A KR101202481B1 (ko) 2010-10-12 2010-10-12 에스아이엠디 씨피유 아키텍쳐를 활용한 레코드 스캔 방법 및 이러한 방법을 사용하는 장치

Publications (2)

Publication Number Publication Date
KR20120037755A KR20120037755A (ko) 2012-04-20
KR101202481B1 true KR101202481B1 (ko) 2012-11-16

Family

ID=46138789

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020100099403A KR101202481B1 (ko) 2010-10-12 2010-10-12 에스아이엠디 씨피유 아키텍쳐를 활용한 레코드 스캔 방법 및 이러한 방법을 사용하는 장치

Country Status (1)

Country Link
KR (1) KR101202481B1 (ko)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100538605B1 (ko) * 1998-03-18 2005-12-22 코닌클리즈케 필립스 일렉트로닉스 엔.브이. 데이터 처리 장치, 행렬 변환 방법 및 컴퓨터 판독가능한 매체

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100538605B1 (ko) * 1998-03-18 2005-12-22 코닌클리즈케 필립스 일렉트로닉스 엔.브이. 데이터 처리 장치, 행렬 변환 방법 및 컴퓨터 판독가능한 매체

Also Published As

Publication number Publication date
KR20120037755A (ko) 2012-04-20

Similar Documents

Publication Publication Date Title
CN109522254B (zh) 运算装置及方法
CN110110851B (zh) 一种lstm神经网络的fpga加速器及其加速方法
CN107657316B (zh) 通用处理器与神经网络处理器的协同系统设计
KR100997024B1 (ko) 스캔 연산을 수행하기 위한 시스템, 방법 및 컴퓨터 판독가능한 기록 매체
US10268454B2 (en) Methods and apparatus to eliminate partial-redundant vector loads
US20180203673A1 (en) Execution of computation graphs
US11275741B2 (en) Merge join system and method
CN117724763A (zh) 用于矩阵操作加速器的指令的装置、方法和系统
US11372929B2 (en) Sorting an array consisting of a large number of elements
JP2017517082A (ja) 並列ディシジョン・ツリー・プロセッサー・アーキテクチャ
US8433883B2 (en) Inclusive “OR” bit matrix compare resolution of vector update conflict masks
US20120331278A1 (en) Branch removal by data shuffling
US10884736B1 (en) Method and apparatus for a low energy programmable vector processing unit for neural networks backend processing
CN114450699A (zh) 由处理单元实现的方法、可读存储介质和处理单元
US11321092B1 (en) Tensor-based memory access
CN113853582A (zh) 向量索引寄存器
CN115860066A (zh) 一种基于批处理的神经网络推理流水线复用的方法
Zhang et al. A novel parallel approach of radix sort with bucket partition preprocess
US10152674B2 (en) Accelerated decision tree execution
KR101202481B1 (ko) 에스아이엠디 씨피유 아키텍쳐를 활용한 레코드 스캔 방법 및 이러한 방법을 사용하는 장치
US9383981B2 (en) Method and apparatus of instruction scheduling using software pipelining
US20210049012A1 (en) Parallel union control device, parallel union control method, and storage medium
Gong et al. Enabling fast and memory-efficient acceleration for pattern matching workloads: The lightweight automata processing engine
JP6572668B2 (ja) 検査方法
KR102631214B1 (ko) 대규모 언어 모델 추론을 가속화하기 위한 효율적인 데이터 포워딩 방법 및 시스템

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: 20151109

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee