KR101616347B1 - 범용 그래픽 프로세서 기반 클라우드 스토리지의 소거 코딩 방법 - Google Patents

범용 그래픽 프로세서 기반 클라우드 스토리지의 소거 코딩 방법 Download PDF

Info

Publication number
KR101616347B1
KR101616347B1 KR1020150053900A KR20150053900A KR101616347B1 KR 101616347 B1 KR101616347 B1 KR 101616347B1 KR 1020150053900 A KR1020150053900 A KR 1020150053900A KR 20150053900 A KR20150053900 A KR 20150053900A KR 101616347 B1 KR101616347 B1 KR 101616347B1
Authority
KR
South Korea
Prior art keywords
data
parity
gpu
xor operation
graphics processor
Prior art date
Application number
KR1020150053900A
Other languages
English (en)
Inventor
김덕환
이광수
피라한데 메히디
류재환
허희성
Original Assignee
인하대학교산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 인하대학교산학협력단 filed Critical 인하대학교산학협력단
Priority to KR1020150053900A priority Critical patent/KR101616347B1/ko
Application granted granted Critical
Publication of KR101616347B1 publication Critical patent/KR101616347B1/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/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30029Logical and Boolean instructions, e.g. XOR, NOT
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

본 발명은 다수의 GPU 코어를 구비한 그래픽 프로세서에 의하여, 소거코드를 위한 연산을 수행하는, 그래픽 프로세서 기반 클라우드 스토리지의 소거 코딩 방법에 관한 것으로서, (a) 메인 메모리로 데이터를 읽어오는 단계; (b) 읽어온 데이터를 청킹하여 청크 데이터로 분할하고, 상기 청크 데이터를 GPU 메모리로 배정하는 단계; (c) 상기 청크 데이터를 프런트 디스크 페어와 리어 디스크 페어로 분리하고, 디스크와 동일한 개수의 GPU 코어에 요소 벡터 페어를 배정하여 병렬로 XOR 연산을 수행하는 단계; (d) 상기 (c)단계에서 XOR 연산 결과값인 프런트 디스크 페어 서브패리티와 리어 디스크 페어 서브패리티를 GPU 코어에 배정하여 병렬로 XOR 연산을 수행하는 단계; 및 (e) 상기 (d)단계에서 XOR 연산 결과값인 패리티를 상기 메인 메모리로 전송하는 단계를 포함하는 구성을 마련한다.
상기와 같은 소거 코딩 방법에 의하여, 소거 코드(Erasure Codes) 생성 시 필요한 XOR 연산 작업을 병렬 처리함으로써, XOR 연산에 필요한 많은 소요시간을 감소시키고, 메인 프로세서 코어(CPU Core)에서 다른 작업을 원할하게 진행하도록 하여 전체적인 성능을 향상시킬 수 있다.

Description

범용 그래픽 프로세서 기반 클라우드 스토리지의 소거 코딩 방법 { A GPGPU based Erasure Coding Performance Enhancing Method in Cloud Storage System }
본 발명은 소거 코드(Erasure Codes)의 XOR 연산에 범용 그래픽 프로세서(GPGPU) 기술을 적용하는 그래픽 프로세서 기반 클라우드 스토리지의 소거 코딩 방법에 관한 것이다.
특히, 본 발명은 클라우드 스토리지 시스템에서 신뢰성 및 연산 속도 향상을 위해 이용되는 소거 코드(Erasure Codes)를 범용 그래픽 프로세서(GPGPU) 기반의 계층적 코딩 스케쥴링(Encoding Scheduling) 방법을 적용하여 병렬 처리함으로써, 소거 코드(Erasure Codes) 생성 시 많은 양의 XOR 연산 작업에 의해 발생되는 많은 소요시간을 감소시키는, 그래픽 프로세서 기반 클라우드 스토리지의 소거 코딩 방법에 관한 것이다.
클라우드 스토리지 시스템에서 사용자에게 스토리지 장치에 대한 빠른 서비스를 제공하는 것이 중요한 이슈이다. 신뢰성 향상 및 빠른 연산 속도를 제공하기 위해 클라우드 스토리지 시스템에서 데이터 접근빈도와 소거 코드(Erasure Codes)를 이용한 데이터 복제 기법[비특허문헌 1], Reliable Energy-Aware SSD based RAID-6 System[비특허문헌 2][비특허문헌 3][비특허문헌 4][비특허문헌 5] 등의 연구들이 진행 되고 있다.
소거 코드(Erasure Codes)는 데이터를 인코딩(Encoding)하여 생성된 코드들을 저장하며, 생성된 코드는 데이터 손실 시에 디코딩(Decoding)하여 원본 데이터를 복구하는 방법이다. 소거 코드(Erasure Codes)는 뛰어난 복구 성능과 입출력성능을 제공하지만 인코딩(Encoding), 디코딩(Decoding) 작업 시 많은 양의 XOR 계산 작업을 필요로 하는 단점을 가지고 있다.
범용 그래픽 프로세서(GPGPU)는 그래픽 프로세서(GPU)를 사용하여 기존의 메인 프로세서(CPU) 기반에서의 프로그램의 연산 작업을 대신 수행하는 기술이다. 기존의 CPU 기반에서는 순차적으로 계산 작업을 하기 때문에 반복적인 연산처리 작업을 실행해도 똑같은 작업을 긴 시간 동안 해야 하는 한계성을 가지고 있었다. 하지만 범용 그래픽 프로세서(GPGPU)는 기존 CPU가 하는 그래픽이나 연산 처리 등의 반복 계산 작업을 병렬 처리가 가능하게 함으로써 짧은 시간 내에 반복 계산 작업을 가능하게 해준다.
스토리지 시스템에서 데이터를 저장할 때 신뢰성을 유지하기 위해 소거 코드(Erasure Codes)를 생성하게 되고, 소거 코드(Erasure Codes) 생성 시 필요한 많은 XOR 연산을 범용 그래픽 프로세서(GPGPU) 기술을 이용하여 병렬 처리하면 빠르게 데이터를 저장, 복구할 수 있게 될 것이다.
따라서 소거 코드(Erasure Codes)의 XOR 연산에 범용 그래픽 프로세서(GPGPU) 기술을 적용하여, 빠른 소거 코드를 생성하는 기술에 대한 개발이 필요하다.
[비특허문헌 1] 김주경, 김덕환, 클라우드 스토리지 시스템에서 데이터 접근빈도와 Erasure Codes를 이용한 데이터 복제 기법, 대한전자공학회, 전자공학회논문지 51,(2), 85-91 (7 pages), 2014.2 [비특허문헌 2] M. Pirahandeh and D.H. Kim, "Reliable Energy-Aware SSD based RAID-6 System", FAST Conference in Storage systems. San Jose, USA, Poster Session, February 2012. [비특허문헌 3] O. Khan, R. Burns, J. Plank, W. Pierce, and C. Huang, "Rethinking Erasure Codes for Cloud File Systems: Minimizing I/O for Recovery and Degraded Reads", USENIX FAST, San Jose, CA, Feb. 2012. [비특허문헌 4] M. Pirahandeh, D-H. Kim, "Adopted erasure code for SSD based RAID-6 System," ITC-CSCC. Sapporo, Japan, pp. 81-85, July 2012. [비특허문헌 5]장은빈, 하윤수, CUDA 기반의 병렬 프로그래밍을 통한 H.264/AVC 부호화 속도 향상 및 CPU 부하 경감, 한국마린엔지니어링학회, 한국마린엔지니어링학회지 34(6), 858-863 (6 pages), 2010.9 [비특허문헌 6] J.S. Plank, "XOR's Lower Bounds and MDS Codes for Storage", IEEE Information Theory Workshop, Brazil, pp. 529-551, October 2011. [비특허문헌 7]CUDA Toolkit. https://developer.nvidia.com/cuda-toolkit
본 발명의 목적은 상술한 바와 같은 문제점을 해결하기 위한 것으로, 클라우드 스토리지 시스템에서 소거 코드(Erasure Codes)를 인코딩 또는 디코딩 시, 범용 그래픽 프로세서(GPGPU)를 이용하고, 계층적 코딩 스케쥴링(Encoding Scheduling) 방법을 적용하여 XOR 연산 작업을 병렬 처리하는, 그래픽 프로세서 기반 클라우드 스토리지의 소거 코딩 방법을 제공하는 것이다.
상기 목적을 달성하기 위해 본 발명은 다수의 GPU 코어를 구비한 그래픽 프로세서에 의하여, 소거코드를 위한 연산을 수행하는, 그래픽 프로세서 기반 클라우드 스토리지의 소거 코딩 방법에 관한 것으로서, (a) 메인 메모리로 데이터를 읽어오는 단계; (b) 읽어온 데이터를 청킹하여 청크 데이터로 분할하고, 상기 청크 데이터를 GPU 메모리로 배정하는 단계; (c) 상기 청크 데이터를 디스크의 개수만큼의 동일한 크기의 워드들로 구분하고, 상기 워드들을 2개씩 페어를 형성시키고, 상기 페어 내의 데이터 요소들을 각각 GPU 코어에 배정하여, XOR 연산을 수행하여 서브 패리티를 생성하는 단계; (d) 상기 서브 패러티들을 GPU 코에 배정하여 병렬로 XOR 연산을 수행하는 단계; 및, (e) 상기 (d)단계에서 XOR 연산 결과값인 패리티를 상기 메인 메모리로 전송하는 단계를 포함하는 것을 특징으로 한다.
또한, 본 발명은 그래픽 프로세서 기반 클라우드 스토리지의 소거 코딩 방법에 있어서, 상기 (c)단계에서, 하나의 페어에 대하여, 워드 크기와 동일한 개수의 GPU 코어를 배정하여, 배정된 각 GPU 코어가 페어 내의 데이터 요소들에 대하여 XOR 연산을 수행하게 하는 것을 특징으로 한다.
또한, 본 발명은 그래픽 프로세서 기반 클라우드 스토리지의 소거 코딩 방법에 있어서, 상기 (d)단계에서, 생성된 서브패리티의 개수가 2개를 초과하는 경우, 서브패리티들을 다시 2개씩 페어를 형성시키고, 형성된 페어 내의 데이터 요소들을 각각 GPU 코어에 배정하여, XOR 연산을 수행하여 다시 서브패리티를 생성하되, 서브패리티 개수가 2개일 때까지 반복하는 것을 특징으로 한다.
또한, 본 발명은 그래픽 프로세서 기반 클라우드 스토리지의 소거 코딩 방법에 있어서, 디스크의 개수가 4개이고, 상기 (c)단계에서, 상기 데이터 청크를 4개의 워드로 구분하고, 구분된 워드들을 프런트 디스크 페어와 리어 디스크 페어로 분리하고, GPU 코어에 분리된 페어를 배정하여 병렬로 XOR 연산을 수행하여, 각각 프런트 디스크 페어 서브패리티와 리어 디스크 페어 서브패리티를 구하고, 상기 (d) 단계에서, 상기 프런트 디스크 페어 서브패리티와 리어 디스크 페어 서브패리티를 GPU 코어에 배정하여 병렬로 XOR 연산을 수행하는 것을 특징으로 한다.
상술한 바와 같이, 본 발명에 따른 그래픽 프로세서 기반 클라우드 스토리지의 소거 코딩 방법에 의하면, 소거 코드(Erasure Codes) 생성 시 필요한 XOR 연산 작업을 병렬 처리함으로써, XOR 연산에 필요한 많은 소요시간을 감소시키고, 메인 프로세서 코어(CPU Core)에서 다른 작업을 원할하게 진행하도록 하여 전체적인 성능을 향상시킬 수 있는 효과가 얻어진다.
실험을 통해 CPU 기반의 인코딩(Encoding) 방법과 비교하여 소거 코드(Erasure Codes) 생성에 소모된 시간을 측정하였다. GPGPU 병렬 처리 방법을 사용할 때 소거 코드(Erasure Codes)의 생성에 소모된 시간이 기존의 방법에 비해 최대 21% 적게 소모 되었으며 데이터 청크(Data Chunk)의 크기가 커질수록 GPGPU 기반의 계층적 인코딩(Encoding) 효율이 높아짐을 확인했다.
도 1은 CPU 기반 비트 행렬 곱셈 연산(bit matrix multiplication)을 나타낸 도면으로서, G=갈로아 필드; I=데이터 행렬; H=코딩 행렬; D= 데이터; w = 워드(word); k= 데이터 디스크의 수; m=패리티(Parity) 디스크의 수를 나타낸 도면.
도 2는 CPU 기반에서의 인코딩 스케쥴러(Encoding Scheduler)의 패리티 벡터 생성 과정을 도시한 도면.
도 3은 본 발명을 실시하기 위한 전체 시스템의 구성에 대한 블록도.
도 4은 본 발명의 일실시예에 따른 범용 그래픽 프로세서 기반 클라우드 스토리지의 소거 코딩 방법을 설명하는 흐름도.
도 5는 본 발명의 일실시예에 따른 GPU 기반에서의 소거 코딩(Erasure Coding) 과정을 나타낸 도면.
도 6는 GPU 기반의 소거 코드(Erasure Codes) 청크(chunks) 인코딩 방법을 도시한 표.
도 7은 발명의 일실시예에 따른 GPU 기반에서의 계층적 인코딩 스케쥴러(Encoding Scheduler)의 XOR 연산 과정을 나타낸 도면.
도 8은 본 발명의 실험에 따른 측정 장비 스펙 정보를 나타낸 표.
도 9은 본 발명의 실험에 따른 데이터 청크(Data_chunk) 크기에 따른 인코딩(Encoding) 시간을 나타낸 그래프.
도 10는 본 발명의 실험에 따른 데이터 크기에 따른 시간 감소량을 나타낸 그래프.
이하, 본 발명의 실시를 위한 구체적인 내용을 도면에 따라서 설명한다.
또한, 본 발명을 설명하는데 있어서 동일 부분은 동일 부호를 붙이고, 그 반복 설명은 생략한다.
먼저, 본 발명에 사용되는 소거 코드(Erasure Codes)에 대하여 도 1을 참조하여 설명한다.
소거 코드(Erasure Codes)는 데이터의 손실 시 데이터를 복구하는 방법으로 뛰어난 입출력 성능과 신뢰성을 제공하기 때문에, 여러 개의 디스크를 사용한 스토리지에 많이 사용된다. 소거 코드(Erasure Codes)로 생성된 코드의 종류중 하나인 패리티(Parity)는 데이터 복제본보다 생성 시 적은 저장 공간을 사용한다. 소거 코드(Erasure Codes)에는 RDP 코드, 리드-솔로몬 코드(Reed-Solomon Code), EVENODD 코드 등의 다양한 종류가 있다.
도 1a은 데이터 디스크의 수 k가 4이고, 패리티(Parity) 디스크의 수 m이 1일 때 소거 코드(Erasure Codes)의 패리티(Parity) 디스크를 생성하는 방법을 설명하고 있다. 한 개의 디스크는 4개의 데이터 요소 벡터(Data element vector)로 구성되며, k=(w×w) 행렬(matrix)로 표시된다. 위의 소거 코드(Erasure Codes)의 패리티(Parity)의 종류는 직접 패리티(direct parity)로 가장 기본적인 패리티(Parity)이다.
도 1b는 입력 데이터에서 1개의 데이터 청크를 청킹하는 것을 보여주고 있고, 도 1c는 데이터 행렬 I를 이용하여 입력 데이터(데이터 청크) D를 4개의 디스크로 디스크 청크하는 것을 보여준다. 또한, 도 1d는 코딩 행렬 D를 이용하여, 데이터 청크에 대하여 패리티를 구해 패리티 청크를 구하는 것을 도시하고 있다.
즉, 앞서 도 1은 한 개의 데이터 청크를 데이터 디스크의 수 k가 4이고, 패리티(Parity) 디스크의 수 m이 1일 때의 소거 코드(Erasure Codes)의 패리티(Parity) 디스크를 생성하는 방법을 설명하고 있다. 한 개의 디스크 청크는 4개의 데이터 요소 벡터(Data element vector)로 구성되며, 도 1a에서 한 개의 디스크는 XOR연산을 위해 w×w 행렬(matrix)로 표시된다. 앞서 도 1은 소거 코딩(Erasure Codes)을 하여 데이터 디스크와 패리티 디스크 청크를 생성에 필요한 데이터의 요소들을 표시하기 위한 행렬을 그림으로 나타낸 것이다.
이때, G는 갈로아 필드로서, 사용자가 입력한 데이터 바탕으로 k개의 데이터 디스크와 m개의 패리티(Parity) 디스크로 생성하기 위한 행렬이다. 갈로아 필드는 데이터와 XOR연산을 할 전체 행렬이다.
I는 데이터 행렬로서, 갈로아 필드 중 데이터 디스크를 생성하기 위한 부분이다. 따라서 I×D를 하면 k개의 데이터 디스크가 생성된다. 또한, H는 코딩 행렬로서, 갈로아 필드 중 패리티 디스크를 생성하기 위한 부분으로써 H×D를 하면 m개의 패리티 디스크가 생성된다. W는 한 개의 디스크 청크에 저장될 요소벡터의 숫자이다. 또한, D는 사용자가 입력한 데이터로써 도 1a에서는 하나의 청크를 나타낸다.
다음으로, 메인 프로세서(CPU) 기반에서의 소거 코드(Erasure Codes) 인코딩 스케쥴러(Encoding Scheduler)에 대하여 도 2를 참조하여 설명합니다.
도 2는 CPU 기반에서 데이터 청크(Data Chunk)의 인코딩 스케쥴러(Encoding Scheduler)에 의한 패리티 벡터(Parity vector)들을 생성하는 과정을 나타낸 것이다. 이때, 데이터 디스크의 수 k = 4 이고, 패리티(Parity) 디스크의 수 m = 1 이다. 또한, D = {d1 ,1, … , d4 ,4}인 총 16개의 데이터 요소 벡터(data element vector)를 가진다.
D는 사용자 데이터의 청크를 나타내고, 데이터 요소 벡터는 행렬의 각 요소를 뜻한다. 행의 경우 디스크의 번호를 뜻하며 열의 경우 워드(word)의 번호를 뜻한다. 예를 들어, d3 ,2는 소거 코딩 인코딩(erasure coding encoding) 후에 3번째 디스크의 2번 데이터 요소 벡터를 말한다. 도 1에서 H×D를 하여 서로 XOR 연산을 할 요소벡터를 나타내면, 도 2에 표시된 데이터요소와 같다. 각각의 데이터요소를 다음 수학식 1과 같이 XOR 연산을 하면 패리티 요소 벡터들이 생성되고 이는 패리티 디스크의 한 개의 청크에 해당된다.
CPU에서는 패리티 요소 벡터(Parity element vector)들을 생성하기 위해서는 다음 수학식 1과 같이 계산된다.
[수학식 1]
p1 = d1 ,1
Figure 112015037233198-pat00001
d2 ,1
Figure 112015037233198-pat00002
d3 ,1
Figure 112015037233198-pat00003
d4 ,1
앞서, 패리티 벡터는 패리티 요소 벡터와 동일하다. 또한, 패리티 요소 벡터는 페리티 디스크를 구성하는 것으로서, 워드(word) 개수의 패리티 요소 벡터들 이 모여 하나의 패리티 청크를 구성하고, 여러 청크들로 패리티 디스크로 구성된다. 또한, 데이터 요소 백터는 데이터 디스크를 구성하는 것으로서, 워드(word) 개수의 데이터 요소 벡터들이 모여 하나의 데이터 청크를 구성하고, 여러 청크들로 데이터 디스크로 구성된다.
각각의 데이터 요소 벡터(data element vector)들을 순차적으로 XOR 연산을 하게 된다. 모든 패리티 벡터(Parity vector)들을 생성하여 패리티(Parity) 디스크를 생성하기 위해서는 총 12번의 XOR 연산이 필요하다. 또한, 이전의 XOR 연산이 끝나야 다음 XOR 연산을 실행할 수 있으므로 총 12번의 지연(Delay)이 발생하게 된다. 이와 같은 지연(Delay)의 발생으로 인하여 패리티 디스크를 생성 시 많은 시간이 소모되며 해당 CPU 코어(Core)에서의 다른 작업을 진행하지 못함으로 인해 성능저하가 발생하는 문제점이 있다.
다음으로, 본 발명을 실시하기 위한 전체 시스템의 구성을 도 3을 참조하여 설명한다.
도 3에서 보는 바와 같이, 본 발명을 실시하기 위한 전체 시스템은 메인 프로세서(미도시)가 수행되는 메인 메모리(10) 및, 범용 그래픽 프로세서(20)로 구성된다. 또한, 범용 그래픽 프로세서(20)는 데이터를 저장하는 GPU 메모리(21), 다수의 GPU 코어(22), GPU 코어(22)의 스케쥴링을 처리하는 GPU 제어부(23)로 구성된다.
메인 메모리(10)는 메인 프로세서(CPU) 등에서 작업을 수행하기 위한 메모리로이다.
또한, 범용 그래픽 프로세서(20)는 다수의 CPU 코어(22)로 구성되고, 각 CPU 코어(22)는 병렬로 동시에 수행되는 단위 그래픽 프로세서들이다. 예를 들어,각 CPU 코어(22)들은 각각 동시에 XOR 연산을 동시에 병렬로 실행하여 그 결과를 출력할 수 있다.
또한, GPU 메모리(21)는 데이터를 저장하는 공간으로서, 메인 메모리(10)로부터 데이터를 가져오거나 결과 데이터를 메인 메모리(10)로 전송한다. 또한, 각 CPU 코어(22)는 GPU 메모리(21)에 접근하여 필요한 데이터를 가져오거나, 연산된 결과 데이터를 GPU 메모리(21)에 기록한다.
GPU 제어부(23)는 주로 다수의 CPU 코어(22)의 작업에 대하여 스케쥴링을 수행한다. 즉, GPU 제어부(23)는 병렬로 처리할 연산들 및, 데이터를 정하고, 각 연산 및 데이터를 다수의 CPU 코어(22)에 각각 할당하여, 병렬로 다수의 데이터를 병렬로 처리하도록 제어한다.
다음으로, 본 발명의 일실시예에 따른 범용 그래픽 프로세서(GPGPU) 기반 클라우드 스토리지의 소거 코딩 방법을 도 4 내지 도 7을 참조하여 설명한다.
도 4에서 보는 바와 같이, 본 발명에 따른 범용 그래픽 프로세서 기반 클라우드 스토리지의 소거 코딩 방법은 데이터 읽어오는 단계(S10); 데이터 청크 변환 단계(S20); 제1차 XOR 연산 수행 단계(S30); 제2차 XOR 연산 수행 단계(S40); 및, 생성된 패리티 이동 단계(S50)로 구성된다.
그래픽 프로세서(GPU) 기반에서의 소거 코드(Erasure Codes)의 인코딩 수행 과정을 구성과 함께 도시한 것이 도 5와 같다.
인코딩(Encoding) 요청이 발생하면 호스트(host)로부터 데이터를 읽어온다(Read)(S10). 읽어온 데이터는 비트(bit) 단위로 청킹(Chunking)하고 메인 메모리(Main Memory)에 존재하는 청크 데이터(Chunk data)들을 GPU 메모리에 새로 배정한다(S20). 다음으로 GPU 인코딩 스케쥴러(Encoding Scheduler)의 스케쥴링(Scheduling) 방법에 따라 패리티(Parity)를 생성한다(S30,S40). 데이터(Data), 메타 파일(MetaFile)과 생성된 패리티(Parity)는 리디렉터(Redirector)를 통해 데이터 스토리지(Data Storage)와 패리티 스토리지(Parity Storage)에 기록(write)하게 된다(S50).
앞서 GPU 기반에서의 인코딩 스케쥴러(Encoding Scheduler)에 의해 인코딩 되는 과정은 도 6와 같다. 즉, 도 6는 패리티(Parity) 디스크 생성 시 발생하는 시간 지연(Time Delay)을 감소시키는 방법을 나타내고 있다.
먼저 인코딩(Encoding)을 요청하는 데이터가 입력(input)되면 먼저 데이터의 주소를 GPU 메모리로의 새로운 주소를 변환하고, 패리티 청크(Parity chunk)를 저장할 공간을 설정한다(S20). 데이터들은 GPU 메모리의 16개의 데이터 요소 벡터(data element vector)를 가지는 청크(chunk)들로 분할하여 청크 어레이(chunk array)에 저장한다.
각각의 청크(chunk)들은 청크의 개수만큼 2단계의 XOR 연산을 실행하게 된다(S30,S40). 첫 번째 XOR 연산을 통해 서브 패리티(subparity) 8개를 생성하고 두 번째 XOR 연산 시 서브 패리티(subparity)를 이용하여 패리티(Parity)를 생성한다. 위의 연산 과정을 통해 생성된 패리티(Parity)와 데이터 청크(chunk)는 GPU 메모리에서 메인 메모리(main Memory)로 기록(write)한다(S50).
도 7은 기존의 CPU기반에서와 같이 k=4, m=1인 총 16개의 데이터 요소 벡터(data element vector)를 가진 데이터 청크(Data Chunk)를 GPU 기반에서 패러티(Parity) 디스크 생성하기 위한 XOR 연산 과정을 나타낸 것이다. GPU 기반에서의 계층적 인코딩(Encoding) 방법은 시간 지연(Time Delay)을 감소시키기 위해 2단계를 거쳐 패리티 디스크를 생성한다.
제 1단계에서는 데이터 청크(Data Chunk)를 프런트 디스크 페어(Front Disk Pair)와 리어 디스크 페어(Rear Disk Pair)로 분리하고 디스크와 동일한 개수의 GPU 코어에 요소 벡터(element vector) 페어(Pair)를 배정하여 이를 병렬로 XOR 연산을 한다(S30).
제 2단계에서는 제 1단계에서의 XOR 연산 결과 값인 프런트 디스크 페어 서브패리티(Front Disk Pair subparity)와 리어 디스크 페어 서브패리티(Rear Disk Pair subparity)를 새로운 GPU 코어(Core)에 배정하고 이를 병렬로 XOR 연산을 실행하여 패리티 벡터(Parity vector) p1, p2, p3, p4를 생성한다(S40).
앞서, 데이터 청크 어레이는 버퍼의 크기에 따라 다르지만 일반적으로 사용자가 입력한 전체 데이터를 말한다. 데이터 요소 벡터는 데이터 디스크를 구성하는 것으로써 워드(word) 개수의 데이터 요소 벡터들이 모여 하나의 데이터 청크를 구성하고, 여러 청크들로 데이터 디스크로 구성된다. 즉, k개의 데이터 디스크의 경우 하나의 데이터 디스크는 w개의 데이터 요소 벡터를 가지는 청크들의 집합(어레이)로 구성된다.
또한, 프런트 디스크 페어 및, 리어 디스크 페어는 XOR 계산을 하기 위한 데이터 요소들을 병렬로 계산하기 위한 묶음을 나타낸 것이다.
한편, 디스크의 수가 증가하게 되면 열의 수가 늘어나게 되고 이때에도 2개씩 쌍으로 묶어 연산을 처리하게 된다. 디스크의 개수가 8개인 경우 1 단계에서 코어(core)의 개수는 16개가 되며, 2 단계에서도 8개의 코어(core)가 배정되어 XOR연산을 수행한다. 마지막으로 3 단계에서 4개의 코어(core)가 배정되어 패리티 요소 벡터를 생성한다. 즉, 디스크의 개수가 4개 이후 2배씩 증가함에 따라 단계가 1단계씩 증가한다. 8개일 때 3단계, 16개 일 때 4단계이다.
또한, 하나의 패리티 요소 벡터를 생성하기 위해서 사용하는 데이터 요소 벡터는 도 1의 H×D 행렬 곱을 통해 선택한다. 그리고 선택된 모든 데이터 요소 벡터들을 XOR 하면 하나의 패리티 요소 벡터가 생성된다. 도 2에서 나온 주황색 데이터 요소 벡터는 도 1의 H×D행렬을 통해 선택된 요소 벡터들만을 표시한다. 또한 도 7은 도 2에 표시된 데이터 요소 벡터들을 GPU로 병렬처리하는 방법을 나타낸 것이다.
도 6은 GPU기반에서의 소거 코딩(Erasure coding)을 보이며 청킹 자체는 CPU에서 이루어지며 메인 메모리에 저장된다. 청킹은 연속된 데이터를 XOR 연산을 위해 묶는 것을 뜻하며 하나의 청크는 도 1의 D를 뜻한다.
XOR의 횟수의 경우 CPU와 GPU에서 차이를 보이지 않으나 계산을 병렬로 하여 패리티 디스크의 생성을 빠르게 한 것이다. XOR연산의 횟수는 소거 코드(Erasure Codes)의 종류에 따라 변하나 직접 패리티(Direct Parity, 즉, SPC, Single Parity Check)를 사용하므로 12회가 된다. 직접 패리티(Direct Parity)에서 XOR 연산 횟수=w*(k-1)회 발생한다. CPU의 경우 12회의 XOR 연산을 위해 12회의 지연(Delay)이 발생하나 계층적으로 할 경우 2회의 지연(Delay)만이 발생한다.
앞서 설명한 바와 같이, 본 발명에 따른 방법에서는 제 2단계에서 제 1단계의 결과 값을 기다리는 총 1회의 지연(Delay) 발생하게 된다. 시간 지연(Time Delay)을 감소시킴으로써 패리티 디스크 생성 시간을 감소시켜 주며, CPU에서 처리하는 많은 연산을 GPU에서 처리하게 함으로써 CPU를 다른 작업 처리에 사용할 수 있게 됨으로써 전체적인 성능이 향상하게 된다.
다음으로, 실험을 통한 본 발명의 효과를 구체적으로 설명한다.
먼저, 본 발명의 실험을 위한 실험환경을 설명한다.
소거 코드(Erasure Codes)의 인코딩(Encoding) 속도를 측정하기 위한 장비의 스펙 정보는 도 8의 표와 같다.
본 발명에서는 직접 패리티(Direct parity)를 기존의 CPU를 이용한 인코딩(Encoding) 방법과 범용 그래픽 프로세서(GPGPU) 기반의 계층적 인코딩(Encoding) 기법을 사용하였다. 실험에서 데이터 청크(Data_chunk)의 크기는 4MB부터 1GB까지 9가지로 나누었으며 각 크기마다 5번씩 인코딩(Encoding) 시간을 측정하여 평균값을 구하였다.
다음으로, 기존의 방법에 의한 결과와 병렬 처리 이용 결과의 비교에 대하여 설명한다.
도 9에서 GPU 평균 소모 시간은 범용 그래픽 프로세서(GPGPU)기반의 계층적 소거 코드(Erasure Codes) 인코딩(Encoding) 기법에서의 인코딩(Encoding) 소모시간을 나타내며 CPU 평균 소모 시간은 기존의 CPU에서의 인코딩(Encoding) 시간을 나타낸다.
기존의 방법에서 XOR 연산 시 발생되는 12번의 지연(Delay)이 제안된 계층적 XOR 스케쥴링(Scheduling) 방법을 통해 지연(Delay)을 1번으로 줄어 전체적으로 시간이 적게 소모되었음을 보여주며 약 10000ms의 속도 차를 보여 주었다. 1GB에서 최대 21% 시간이 적게 소모되었다.
도 10를 보면 데이터의 크기가 증가할수록 시간 감소 비율이 감소하였으며 1GB에서 최대 21% 시간이 적게 소모되었다. 도 10에서 시간감소비율은 다음 식에 의해 계산된다.
[수학식 2]
Figure 112015037233198-pat00004
실험은 데이터 청크(Data_chunk)의 크기가 증가할수록 GPU 기반의 계층적 인코딩(Encoding) 기법이 더욱 효율적이라는 결과를 나타낸다.
본 발명에서는 범용 그래픽 프로세서(GPGPU)기반의 계층적 인코딩 스케쥴링(Encoding Scheduling) 방법을 보였고, 기존의 CPU에서의 인코딩(Encoding) 시간을 측정하였다. 그 결과 GPU를 사용한 계층적 인코딩 스케쥴링(Encoding Scheduling) 기법이 효율적이라는 결론을 얻었다.
이상, 본 발명자에 의해서 이루어진 발명을 실시 예에 따라 구체적으로 설명하였지만, 본 발명은 실시 예에 한정되는 것은 아니고, 그 요지를 이탈하지 않는 범위에서 여러 가지로 변경 가능한 것은 물론이다.
10 : 메인 메모리 20 : 그래픽 프로세서
21 : GPU 메모리 22 : GPU 코어
23 : GPU 제어부

Claims (4)

  1. 다수의 GPU 코어를 구비한 그래픽 프로세서에 의하여, 소거코드를 위한 연산을 수행하는, 그래픽 프로세서 기반 클라우드 스토리지의 소거 코딩 방법에 있어서,
    (a) 상기 그래픽 프로세서는 메인 메모리로 데이터를 읽어오는 단계;
    (b) 상기 그래픽 프로세서는 읽어온 데이터를 청킹하여 청크 데이터로 분할하고, 상기 청크 데이터를 GPU 메모리로 배정하는 단계;
    (c) 상기 그래픽 프로세서는 상기 청크 데이터를 디스크의 개수만큼의 동일한 크기의 워드들로 구분하고, 상기 워드들을 2개씩 페어를 형성시키고, 상기 페어 내의 데이터 요소들을 각각 GPU 코어에 배정하여, XOR 연산을 수행하여 서브 패리티를 생성하는 단계;
    (d) 상기 그래픽 프로세서는 상기 서브 패리티들을 GPU 코어에 배정하여 병렬로 XOR 연산을 수행하는 단계; 및,
    (e) 상기 그래픽 프로세서는 상기 (d)단계에서 XOR 연산 결과값인 패리티를 상기 메인 메모리로 전송하는 단계를 포함하고,
    상기 (c)단계에서, 하나의 페어에 대하여, 워드 크기와 동일한 개수의 GPU 코어를 배정하여, 배정된 각 GPU 코어가 페어 내의 데이터 요소들에 대하여 XOR 연산을 수행하게 하는 것을 특징으로 하는 그래픽 프로세서 기반 클라우드 스토리지의 소거 코딩 방법.
  2. 삭제
  3. 제1항에 있어서,
    상기 (d)단계에서, 생성된 서브패리티의 개수가 2개를 초과하는 경우, 서브패리티들을 다시 2개씩 페어를 형성시키고, 형성된 페어 내의 데이터 요소들을 각각 GPU 코어에 배정하여, XOR 연산을 수행하여 다시 서브패리티를 생성하되, 서브패리티 개수가 2개일 때까지 반복하는 것을 특징으로 하는 그래픽 프로세서 기반 클라우드 스토리지의 소거 코딩 방법.
  4. 제1항에 있어서,
    디스크의 개수가 4개이고,
    상기 (c)단계에서, 상기 청크 데이터를 4개의 워드로 구분하고, 구분된 워드들을 프런트 디스크 페어와 리어 디스크 페어로 분리하고, GPU 코어에 분리된 페어를 배정하여 병렬로 XOR 연산을 수행하여, 각각 프런트 디스크 페어 서브패리티와 리어 디스크 페어 서브패리티를 구하고,
    상기 (d) 단계에서, 상기 프런트 디스크 페어 서브패리티와 리어 디스크 페어 서브패리티를 GPU 코어에 배정하여 병렬로 XOR 연산을 수행하는 것을 특징으로 하는 그래픽 프로세서 기반 클라우드 스토리지의 소거 코딩 방법.
KR1020150053900A 2015-04-16 2015-04-16 범용 그래픽 프로세서 기반 클라우드 스토리지의 소거 코딩 방법 KR101616347B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020150053900A KR101616347B1 (ko) 2015-04-16 2015-04-16 범용 그래픽 프로세서 기반 클라우드 스토리지의 소거 코딩 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150053900A KR101616347B1 (ko) 2015-04-16 2015-04-16 범용 그래픽 프로세서 기반 클라우드 스토리지의 소거 코딩 방법

Publications (1)

Publication Number Publication Date
KR101616347B1 true KR101616347B1 (ko) 2016-05-13

Family

ID=56023636

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150053900A KR101616347B1 (ko) 2015-04-16 2015-04-16 범용 그래픽 프로세서 기반 클라우드 스토리지의 소거 코딩 방법

Country Status (1)

Country Link
KR (1) KR101616347B1 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180043888A (ko) * 2016-10-20 2018-05-02 인하대학교 산학협력단 다중 가상머신 환경에서의 패스쓰루 gpu를 이용한 계층적 raid의 패리티 생성 시스템
US10230398B2 (en) 2016-08-19 2019-03-12 Samsung Electronics Co., Ltd. Erasure code data protection and recovery computation system and method
KR20200055319A (ko) * 2018-11-13 2020-05-21 인하대학교 산학협력단 분산 스토리지 어플리케이션의 저전력 gpu 스케줄링 방법

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10230398B2 (en) 2016-08-19 2019-03-12 Samsung Electronics Co., Ltd. Erasure code data protection and recovery computation system and method
KR20180043888A (ko) * 2016-10-20 2018-05-02 인하대학교 산학협력단 다중 가상머신 환경에서의 패스쓰루 gpu를 이용한 계층적 raid의 패리티 생성 시스템
KR101893655B1 (ko) * 2016-10-20 2018-08-31 인하대학교 산학협력단 다중 가상머신 환경에서의 패스쓰루 gpu를 이용한 계층적 raid의 패리티 생성 시스템
KR20200055319A (ko) * 2018-11-13 2020-05-21 인하대학교 산학협력단 분산 스토리지 어플리케이션의 저전력 gpu 스케줄링 방법
KR102141158B1 (ko) * 2018-11-13 2020-08-04 인하대학교 산학협력단 분산 스토리지 어플리케이션의 저전력 gpu 스케줄링 방법

Similar Documents

Publication Publication Date Title
Rashmi et al. Having your cake and eating it too: Jointly optimal erasure codes for {I/O}, storage, and network-bandwidth
KR102081980B1 (ko) 메모리 시스템에서의 라이트 동작 또는 리드 동작 수행 방법
US9262330B2 (en) Column oriented in-memory page caching
US8296515B1 (en) RAID-6 computation system and method
US8037391B1 (en) Raid-6 computation system and method
US9465692B2 (en) High reliability erasure code distribution
US11218174B2 (en) Method and system for storing data locally repairable and efficient multiple encoding
CN110618895A (zh) 一种基于纠删码的数据更新方法、装置和存储介质
US20180039425A1 (en) Method and apparatus for improved flash memory storage latency and robustness
WO2018000788A1 (zh) 一种数据存储方法和装置、一种数据恢复方法和装置
KR101616347B1 (ko) 범용 그래픽 프로세서 기반 클라우드 스토리지의 소거 코딩 방법
US10621045B2 (en) Flexible redundant array of independent disks (RAID) computation device
Pirahandeh et al. Energy-aware and intelligent storage features for multimedia devices in smart classroom
KR101617965B1 (ko) 체계적인 극 부호 부호화기
US20170077958A1 (en) Memory system and memory control method
CN108140016B (zh) 确定矩阵-向量相乘的运算最优序列的优化器
CN100470489C (zh) 磁碟阵列中处理资料运算的方法及其控制器
US10784896B2 (en) High performance data redundancy and fault tolerance
CN108665940B (zh) Ecc编码电路、解码电路以及存储器控制器
Pirahandeh et al. Energy-aware GPU-RAID scheduling for reducing energy consumption in cloud storage systems
Pirahandeh et al. MS scheduler: New, scalable, and high-performance sparse AVX-2 parity encoding and decoding technique for erasure-coded cloud storage systems
Pirahandeh et al. High performance GPU‐based parity computing scheduler in storage applications
KR101893655B1 (ko) 다중 가상머신 환경에서의 패스쓰루 gpu를 이용한 계층적 raid의 패리티 생성 시스템
Pirahandeh et al. Delta RAID to enhance recovery and small-write performance of RAID storages
JP2013171549A (ja) 乱数処理装置、乱数処理方法、及びプログラム

Legal Events

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

Payment date: 20190408

Year of fee payment: 4