KR102230669B1 - 실시간 고속 데이터 병렬 처리 장치 및 방법 - Google Patents

실시간 고속 데이터 병렬 처리 장치 및 방법 Download PDF

Info

Publication number
KR102230669B1
KR102230669B1 KR1020190019829A KR20190019829A KR102230669B1 KR 102230669 B1 KR102230669 B1 KR 102230669B1 KR 1020190019829 A KR1020190019829 A KR 1020190019829A KR 20190019829 A KR20190019829 A KR 20190019829A KR 102230669 B1 KR102230669 B1 KR 102230669B1
Authority
KR
South Korea
Prior art keywords
data
slot
memory bank
processors
stored
Prior art date
Application number
KR1020190019829A
Other languages
English (en)
Other versions
KR20200054834A (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 KR1020190019829A priority Critical patent/KR102230669B1/ko
Publication of KR20200054834A publication Critical patent/KR20200054834A/ko
Application granted granted Critical
Publication of KR102230669B1 publication Critical patent/KR102230669B1/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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • 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
    • 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
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals

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)
  • Multi Processors (AREA)

Abstract

실시간 고속 데이터 병렬 처리 장치 및 방법이 제공된다. 입력 메모리 뱅크는 처리하기 위한 데이터를 저장하고, 하나 이상의 메모리는 데이터를 처리하기 위한 프로그램이 저장 및 구동되고, 다수의 프로세서들은 프로그램을 구동하여 입력 메모리 뱅크에 저장된 데이터를 실시간으로 병렬 처리하고, 출력 메모리 뱅크는 다수의 프로세서들에 의해 처리된 데이터를 저장하고, 데이터 매니저는 처리하기 위한 데이터를 분할하여 입력 메모리 뱅크에 저장하고, 출력 메모리 뱅크에 저장된 데이터를 읽어와 사전에 정해진 순서대로 취합하여 출력할 수 있다.

Description

실시간 고속 데이터 병렬 처리 장치 및 방법{Apparatus and method for processing real-time parallel data}
본 발명은 실시간 고속 데이터 병렬 처리 장치 및 방법에 관한 것으로서, 보다 상세하게는, 고속의 입력 데이터를 주어진 시간 내에 처리하기 위하여 데이터를 분할 및 저장하고, 동시에 다수의 소프트웨어 기반 프로세서들에 의해 처리되는 데이터를 취합 및 재구성하여 출력하는 실시간 고속 데이터 병렬 처리 장치 및 방법에 관한 것이다.
고용량 데이터에 기반한 서비스의 활용이 증가하면서 고용량 데이터를 수신하고, 일정 시간 내에 처리 후 그 결과를 출력할 수 있는 하드웨어 및 소프트웨어 기술도 빠른 속도로 발전하고 있다. 이러한 고속 병렬처리 기술은 다음과 같은 분야에서 그 중요성이 강조되고 있다.
첫째, 고해상도 동영상 처리분야이다. 영상의 해상도가 증가하면서 데이터 처리용량은 증가하는 해상도의 제곱으로 증가하고 있다.
둘째, 빅데이터 처리분야이다. 빅데이터에 기반한 서비스가 증가하면서 대용량 데이터 처리 아키텍쳐에 대한 연구가 활발히 진행되고 있다.
셋째, 광대역 통신 분야이다. 유무선으로 전송되는 데이터의 고용량화 추세에 맞춰 실시간 데이터 처리 기술의 중요성이 증가하고 있다.
넷째, 레이다 데이터 처리분야이다. 레이다의 정밀화 및 디지털 빔형성 기술의 적용으로 기저대역에서 처리할 데이터의 용량이 빠른 속도로 증가하고 있다. 특히 위성용 합성 개구 레이다의 경우 고용량 데이터를 고속으로 처리할 수 있는 기술의 적용이 필요하다.
한편, 기존의 데이터 처리 방식에는 하드웨어 기반 처리 방식과 멀티 코어/프로세서 기반 소프트웨어 병렬처리 방식이 있다.
하드웨어 기반 처리 방식은 실시간 고속 데이터처리에 많이 이용된다. 이 방식은 타 방식에 비해 소형화 및 저전력화가 가능한 장점이 있어 소형기기에 많이 적용된다. 그러나, 설계 변경 시 소요되는 시간과 노력이 타 방식에 비해 크다는 단점이 있다.
멀티 코어/프로세서 기반 소프트웨어 병렬처리 방식은 데이터 처리시 설계/구현의 유연성을 확보하기 위하여 적용될 수 있다. 이 때, 소프트웨어가 구동되는 CPU(중앙처리장치)의 처리속도를 증가시키기 위해 CPU 클럭 주파수를 증가시키는 구조보다는 병렬의 연산기 코어/프로세서를 사용하여 그 코어/프로세서 개수를 증가시키는 방식이 많이 적용되어 왔다. 이 방식은 데이터 병렬처리 알고리즘을 소프트웨어적으로 유연하게 변경할 수 있고, 구현 용이성 측면에서 하드웨어 기반의 처리 방식보다 더 유리하나, 소비전력이 상대적으로 더 크고, 처리 시간의 균일도, 즉 지터(jitter)가 더 크다는 단점이 있다.
국내 등록특허 제10-1245994호
전술한 문제점을 해결하기 위하여 본 발명이 이루고자 하는 기술적 과제는, 설계 변경이 유연한 데이터 처리 알고리즘을 내장할 수 있는 소프트웨어 기반의 데이터 처리기를 적용함과 동시에 기존의 멀티 코어/프로세서 방식이 갖는 데이터 입출력시의 병목현상을 제거하면서 실시간으로 고속/고용량 병렬 데이터 처리가 가능한 실시간 고속 데이터 병렬 처리 장치 및 방법을 제안하는 데 있다.
본 발명의 해결과제는 이상에서 언급된 것들에 한정되지 않으며, 언급되지 아니한 다른 해결과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
전술한 기술적 과제를 해결하기 위한 수단으로서, 본 발명의 실시 예에 따르면, 실시간 고속 데이터 병렬 처리 장치는, 병렬 처리하기 위한 데이터를 저장하는 입력 메모리 뱅크; 상기 데이터를 처리하기 위한 프로그램이 저장 및 구동되는 하나 이상의 메모리; 상기 프로그램을 구동하여 상기 입력 메모리 뱅크에 저장된 데이터를 실시간으로 병렬 처리하는 다수의 프로세서들; 상기 다수의 프로세서들에 의해 처리된 데이터를 저장하는 출력 메모리 뱅크; 및 상기 병렬 처리하기 위한 데이터를 분할하여 상기 입력 메모리 뱅크에 저장하고, 상기 출력 메모리 뱅크에 저장된 데이터를 읽어와 사전에 정해진 순서대로 취합하여 출력하는 데이터 매니저;를 포함한다.
상기 입력 메모리 뱅크 및 상기 출력 메모리 뱅크에는, 상기 데이터의 병렬 처리를 위해 사용할 프로세서의 개수(N_Proc)와, 상기 입력 메모리 뱅크와 상기 출력 메모리 뱅크를 각각 다수의 서브 뱅크들로 분할하기 위한 서브 뱅크 개수(Num of Sub bank)와, 상기 다수의 서브 뱅크들에 존재하는 슬롯들의 개수(num of slot)와, 상기 슬롯들 각각을 구성하는 바이트(byte) 수와, 상기 슬롯들 각각의 어드레스와 슬롯 인덱싱(Add_Idx_slot)과, 상기 입력 메모리 뱅크와 출력 메모리 뱅크가 버퍼를 구성하는 방식(Config Buffer)이 설정된 뱅크 제어 테이블이 저장되며, 상기 데이터 매니저는, 상기 입력 메모리 뱅크에 설정된 뱅크 제어 테이블의 바이트 수를 참조하여 상기 데이터를 분할하고, 상기 버퍼를 구성하는 방식을 참조하여 상기 분할된 데이터를 저장할 서브 뱅크와 슬롯을 상기 입력 메모리 뱅크에서 선택하여 차례대로 저장한다.
상기 입력 메모리 뱅크의 각 서브 뱅크에는, 상기 데이터 매니저가 상기 분할된 데이터를 저장할 슬롯을 선택하고, 상기 다수의 프로세서들이 상기 저장된 데이터를 읽을 슬롯을 선택하기 위한 정책이 설정되는 입력 슬롯 제어 테이블이 저장되며, 상기 입력 슬롯 제어 테이블에 설정되는 정책은, 상기 서브 뱅크 내 슬롯들로 구성되는 링 버퍼가 비어있는 상태인지를 나타내는 버퍼 엠티(Buffer Empty) 필드와, 상기 링 버퍼가 모두 채워진 상태인지를 나타내는 버퍼 풀(Buffer Full) 필드와, 상기 데이터 매니저가 상기 입력 메모리 뱅크에 상기 분할된 데이터를 저장할 때 사용할 슬롯 인덱스를 기록하는 라이트 인덱스(Write Index) 필드와, 상기 다수의 프로세서들이 슬롯에 저장된 데이터를 읽기 위한 슬롯 인덱스를 기록하는 리드 인덱스(Read Index) 필드를 포함한다.
상기 데이터 매니저는, 상기 버퍼 풀 필드의 값이 false이면, 상기 라이트 인덱스 필드에 기록된 슬롯 인덱스에 대응하는 슬롯에 상기 분할된 데이터를 저장하기 시작하고, 다음 라이트 이벤트 발생 시 사용할 슬롯 인덱스를 연산하여 상기 라이트 인덱스 필드에 기록하고, 상기 버퍼 엠티 필드의 값을 false로 설정하며, 상기 다수의 프로세서들 각각은, 상기 버퍼 엠티 필드의 값이 false이면, 상기 슬롯에 저장된 데이터를 읽는 것이 가능한 것으로 판단하고, 상기 리드 인덱스 필드에 기록된 슬롯 인덱스에 대응하는 슬롯으로부터 상기 분할된 데이터를 읽어와 처리하고, 다음 리드 이벤트 발생 시 사용할 슬롯 인덱스를 연산하여 상기 리드 인덱스 필드에 기록하고, 상기 버퍼 풀 필드의 값을 false로 설정하여 데이터 저장이 가능하도록 처리한다.
상기 출력 메모리 뱅크의 각 서브 뱅크에는, 상기 다수의 프로세서들이 상기 처리된 데이터를 저장할 슬롯을 선택하고, 상기 데이터 매니저가 상기 다수의 프로세서들에 의해 저장된 데이터를 읽을 슬롯을 선택하기 위한 정책이 설정되는 출력 슬롯 제어 테이블이 저장되며, 상기 출력 슬롯 제어 테이블에 설정되는 정책은, 상기 서브 뱅크 내 슬롯들로 구성되는 링 버퍼가 비어있는 상태인지를 나타내는 버퍼 엠티(Buffer Empty) 필드와, 상기 링 버퍼가 모두 채워진 상태인지를 나타내는 버퍼 풀(Buffer Full) 필드와, 상기 데이터 매니저가 상기 입력 메모리 뱅크에 상기 분할된 데이터를 저장할 때 사용할 슬롯 인덱스를 기록하는 라이트 인덱스(Write Index) 필드와, 상기 다수의 프로세서들이 슬롯에 저장된 데이터를 읽기 위한 슬롯 인덱스를 기록하는 리드 인덱스(Read Index) 필드를 포함한다.
상기 다수의 프로세서들 각각은, 상기 버퍼 풀 필드의 값이 false이면, 상기 라이트 인덱스 필드에 기록된 슬롯 인덱스에 대응하는 슬롯에 상기 처리된 데이터를 저장하기 시작하고, 다음 라이트 이벤트 발생 시 사용할 슬롯 인덱스를 연산하여 상기 라이트 인덱스 필드에 기록하고, 상기 버퍼 엠티 필드의 값을 false로 설정하며, 상기 데이터 매니저는, 상기 버퍼 엠티 필드의 값이 false이면, 상기 슬롯에 저장된 데이터를 읽는 것이 가능한 것으로 판단하고, 상기 리드 인덱스 필드에 기록된 슬롯 인덱스에 대응하는 슬롯으로부터 상기 처리된 데이터를 읽어와 처리하고, 다음 리드 이벤트 발생 시 사용할 슬롯 인덱스를 연산하여 상기 리드 인덱스 필드에 기록하고, 상기 버퍼 풀 필드의 값을 false로 설정하여 데이터 저장이 가능하도록 처리한다.
한편, 본 발명의 다른 실시 예에 따르면, 전자장치의 실시간 고속 데이터 병렬 처리 방법은, (A) 데이터 매니저가 병렬 처리하기 위한 데이터를 입력받아 분할하여 입력 메모리 뱅크에 저장하는 단계; (B) 다수의 프로세서들이 데이터를 처리하기 위한 프로그램을 구동하여 상기 입력 메모리 뱅크에 저장된 데이터를 읽어와 실시간으로 병렬 처리하는 단계; (C) 상기 다수의 프로세서들이 상기 병렬 처리된 데이터를 출력 메모리 뱅크에 저장하는 단계; 및 (D) 상기 데이터 매니저가 상기 출력 메모리 뱅크에 저장된 데이터를 읽어와 사전에 정해진 순서대로 취합하여 출력하는 단계;를 포함한다.
상기 (A) 단계 이전에, (E) 상기 입력 메모리 뱅크 및 상기 출력 메모리 뱅크에, 상기 데이터의 병렬 처리를 위해 사용할 프로세서의 개수(N_Proc)와, 상기 입력 메모리 뱅크와 상기 출력 메모리 뱅크를 각각 다수의 서브 뱅크들로 분할하기 위한 서브 뱅크 개수(Num of Sub bank)와, 상기 다수의 서브 뱅크들에 존재하는 슬롯들의 개수(num of slot)와, 상기 슬롯들 각각을 구성하는 바이트(byte) 수와, 상기 슬롯들 각각의 어드레스와 슬롯 인덱싱과, 상기 입력 메모리 뱅크와 출력 메모리 뱅크가 버퍼를 구성하는 방식(Config Buffer)이 설정된 뱅크 제어 테이블이 저장되는 단계; 및 (F) 상기 저장된 뱅크 제어 테이블에 기초하여 상기 입력 메모리 뱅크와 상기 출력 메모리 뱅크의 동작을 설정하는 단계;를 더 포함하고, 상기 (A) 단계에서, 상기 데이터 매니저는, 상기 입력 메모리 뱅크에 저장된 뱅크 제어 테이블의 바이트 수를 참조하여 상기 데이터를 분할하고, 상기 버퍼를 구성하는 방식을 참조하여 상기 분할된 데이터를 저장할 서브 뱅크와 슬롯을 상기 입력 메모리 뱅크에서 선택하여 차례대로 저장한다.
본 발명에 따르면, 실시간성을 갖는 고속/고용량 데이터 처리 방식을 제안함으로써, 데이터 처리 절차, 즉 데이터 처리 알고리즘은 데이터 처리장치 하드웨어에서 구동 가능한 소프트웨어로 구현이 가능하며, 이는 처리 알고리즘의 구현, 수정 및 최적화를 용이하게 하는 효과가 있다.
또한, 본 발명에 따르면, 데이터 처리장치의 개수는 시스템 처리 요구시간, 즉 실시간성 요구조건에 맞게 결정되며, 이는 유연한 시스템 아키텍쳐 설계를 가능하게 해준다. 즉, 본 발명은 데이터 처리장치의 개수를 증가시킴으로써 데이터 처리시간을 감소시키며, 동시에 데이터 처리용량을 증가시키는 효과가 있다.
본 발명의 효과는 이상에서 언급된 것들에 한정되지 않으며, 언급되지 아니한 다른 효과들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
도 1은 본 발명의 실시 예에 의한 실시간 고속 데이터 병렬 처리 장치를 도시한 블록도,
도 2를 병렬처리 프로세서 개수에 다른 병렬처리 소요시간의 일 예를 보여주는 그래프,
도 3은 분할된 데이터의 형식을 보여주는 도면,
도 4는 본 발명의 실시 예에 따라 설정된 입력 메모리 뱅크의 일 예를 보여주는 도면,
도 5는 제1서브뱅크가 10개의 슬롯들을 포함하는 경우, 제1 내지 제10슬롯들에 의해 형성된 링 버퍼를 도시한 도면,
도 6은 본 발명의 실시 예에 따라 설정된 출력 메모리 뱅크의 일 예를 보여주는 도면,
도 7은 도 1 내지 도 6을 참조하여 설명한 실시간 고속 데이터 병렬 처리 장치의 동작을 개략적으로 보여주는 도면, 그리고,
도 8은 본 발명의 실시 예에 따른 전자 장치의 고속 데이터 병렬 처리 방법을 설명하기 위한 흐름도이다.
이상의 본 발명의 목적들, 다른 목적들, 특징들 및 이점들은 첨부된 도면과 관련된 이하의 바람직한 실시 예들을 통해서 쉽게 이해될 것이다. 그러나 본 발명은 여기서 설명되는 실시 예들에 한정되지 않고 다른 형태로 구체화될 수도 있다. 오히려, 여기서 소개되는 실시 예들은 개시된 내용이 철저하고 완전해질 수 있도록 그리고 당업자에게 본 발명의 사상이 충분히 전달될 수 있도록 하기 위해 제공되는 것이다.
본 명세서에서 제1, 제2 등의 용어가 구성요소들을 기술하기 위해서 사용된 경우, 이들 구성요소들이 이 같은 용어들에 의해서 한정되어서는 안 된다. 이들 용어들은 단지 어느 구성요소를 다른 구성요소와 구별시키기 위해서 사용되었을 뿐이다. 여기에 설명되고 예시되는 실시 예들은 그것의 상보적인 실시 예들도 포함한다.
또한, 제1엘리먼트(또는 구성요소)가 제2엘리먼트(또는 구성요소) 상(ON)에서 동작 또는 실행된다고 언급될 때, 제1엘리먼트(또는 구성요소)는 제2엘리먼트(또는 구성요소)가 동작 또는 실행되는 환경에서 동작 또는 실행되거나 또는 제2엘리먼트(또는 구성요소)와 직접 또는 간접적으로 상호 작용을 통해서 동작 또는 실행되는 것으로 이해되어야 할 것이다.
어떤 엘리먼트, 구성요소, 장치, 또는 시스템이 프로그램 또는 소프트웨어로 이루어진 구성요소를 포함한다고 언급되는 경우, 명시적인 언급이 없더라도, 그 엘리먼트, 구성요소, 장치, 또는 시스템은 그 프로그램 또는 소프트웨어가 실행 또는 동작하는데 필요한 하드웨어(예를 들면, 메모리, CPU 등)나 다른 프로그램 또는 소프트웨어(예를 들면 운영체제나 하드웨어를 구동하는데 필요한 드라이버 등)를 포함하는 것으로 이해되어야 할 것이다.
또한, 어떤 엘리먼트(또는 구성요소)가 구현됨에 있어서 특별한 언급이 없다면, 그 엘리먼트(또는 구성요소)는 소프트웨어, 하드웨어, 또는 소프트웨어 및 하드웨어 어떤 형태로도 구현될 수 있는 것으로 이해되어야 할 것이다.
또한, 본 명세서에서 사용된 용어는 실시 예들을 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 명세서에서 사용되는 '포함한다(comprises)' 및/또는 '포함하는(comprising)'은 언급된 구성요소는 하나 이상의 다른 구성요소의 존재 또는 추가를 배제하지 않는다.
이하, 본 발명에서 실시하고자 하는 구체적인 기술 내용에 대해 첨부도면을 참조하여 상세하게 설명하기로 한다.
아래의 특정 실시 예들을 기술하는데 있어서, 여러 가지의 특정적인 내용들은 발명을 더 구체적으로 설명하고 이해를 돕기 위해 작성되었다. 어떤 경우에는, 발명을 기술하는 데 있어서 흔히 알려졌으면서 발명과 크게 관련 없는 부분들은 본 발명을 설명하는 데 있어 별 이유 없이 혼돈이 오는 것을 막기 위해 기술하지 않음을 미리 언급해 둔다.
도 1에 도시된 실시간 고속 데이터 병렬 처리 장치(100)의 각각의 구성은 기능 및 논리적으로 분리될 수도 있음을 나타내는 것이며, 반드시 각각의 구성이 별도의 물리적 장치로 구분되거나 별도의 코드로 작성됨을 의미하는 것은 아님을 본 발명의 기술분야의 평균적 전문가는 용이하게 추론할 수 있을 것이다.
상기 실시간 고속 데이터 병렬 처리 장치(100)를 위한 프로그램은 소정의 데이터 프로세싱 장치에 설치되어 본 발명의 기술적 사상을 구현할 수 있다.
또한, 본 발명의 실시 예에 따른 상기 실시간 고속 데이터 병렬 처리 장치(100)는 마이크로 프로세서, 메모리, FPGA(Field Programmable Gate Array), ASIC(Application Specific Integrated Circuit) 등 프로그램의 설치 및 실행이 가능한 전자 장치를 사용하여 구현될 수 있다.
도 1은 본 발명의 실시 예에 의한 실시간 고속 데이터 병렬 처리 장치(100)를 도시한 블록도이다.
먼저, 본 발명의 실시 예에 따른 고속 데이터 병렬 처리는 다수의 CPU들, 즉, 프로세서들(150-1~150-N)에서 데이터를 동시에 처리하기 위하여 데이터를 각각의 프로세서들(150-1~150-N)에 분할하여 전달하고, 프로세서들(150-1~150-N)이 데이터를 동시에 처리하며, 프로세서들(150-1~150-N)에서 각각 처리된 데이터를 합치는 동작을 포함할 수 있다.
도 1을 참조하면, 본 발명의 실시 예에 의한 실시간 고속 데이터 병렬 처리 장치(100)는 데이터 입력부(110), 데이터 매니저(120), 입력 메모리 뱅크(130), 제1 내지 제N메모리들(140-1~140-N), 제1 내지 제N프로세서들(150-1~150-N), 출력 메모리 뱅크(160) 및 데이터 출력부(170)를 포함할 수 있다.
데이터 입력부(110)는 처리하기 위한 데이터를 입력받아 선입선출(FIFO: Fist In First Out) 방식으로 데이터 매니저(120)로 출력한다.
데이터 매니저(120)는 처리하기 위한 데이터를 분할하여 입력 메모리 뱅크(130)에 저장하고, 출력 메모리 뱅크(160)에 저장된 데이터를 읽어와 사전에 정해진 순서대로 취합하여 출력할 수 있다.
입력 메모리 뱅크(130)는 처리하기 위한 데이터를 데이터 매니저(120)로부터 입력받아 저장할 수 있다.
제1 내지 제N메모리들(140-1~140-N)은 제1 내지 제N프로세서들(150-1~150-N)이 소프트웨어 기반의 데이터를 처리하기 위한 프로그램을 저장 및 구동할 수 있다. 제1 내지 제N메모리들(140-1~140-N)은 프로세서 개수만큼 구비되거나 하나만 구비되어 다수의 프로세서들(150-1~150-N)이 공유할 수도 있다.
제1 내지 제N프로세서들(150-1~150-N)은 제1 내지 제N메모리들(140-1~140-N)에 저장된 프로그램을 구동하여 입력 메모리 뱅크(130)에 저장된 데이터를 실시간으로 병렬 처리할 수 있다. 제1 내지 제N프로세서들(150-1~150-N)은 소프트웨어 기반의 데이터를 처리하는 CPU(Central Processing Unit)일 수 있다. 이하에서는 시스템에 구비된 프로세서가 최대 N개이며, 데이터 처리에 사용할 프로세서의 개수로서 N개가 설정된 경우를 예로 들어 설명한다.
출력 메모리 뱅크(160)는 제1 내지 제N프로세서들(150-1~150-N)에 의해 처리된 데이터를 저장한다.
데이터 출력부(170)는 데이터 매니저(120)에서 합쳐진 데이터를 선입선출 방식으로 출력(또는 송신)한다. 선입선출의 방식으로 변환처리된 데이터는 이 데이터를 필요로 하는 모든 장치 또는 SSD(Solid State Drive)와 같은 저장장치로 출력될 수 있다.
상술한 본 발명의 실시 예에 따른 데이터 병렬 처리 동작은, 1. 입력 메모리 뱅크(130)와 출력 메모리 뱅크(160)의 동작을 설정하는 동작, 2. 실제 처리할 데이터를 분할하여 저장하는 동작, 3. 데이터를 병렬 처리하는 동작, 4. 처리된 데이터를 저장 및 취합하는 동작을 포함할 수 있다.
1. 입력 메모리 뱅크(130)와 출력 메모리 뱅크(160)의 동작(상태)을 설정하는 동작
입력 메모리 뱅크(130)와 출력 메모리 뱅크(160)의 동작을 설정하는 동작은, 소프트웨어 기반의 데이터 처리장치의 개수, 즉, 데이터 병렬 처리에 사용할 프로세서의 개수(N_proc)을 결정하고, 입력 메모리 뱅크(130, Bank Of RAM_in, before processing)와 출력 메모리 뱅크(160, Bank Of RAM_out, after processing)를 N개의 서브 뱅크들(N_sub_bank개)로 분할하고, N개로 분할된 각각의 서브 뱅크를 M개의 슬롯들(M_slot개)로 분할하고, 분할된 각 슬롯이 저장할 수 있는 데이터 용량(즉, byte 수)를 결정하고, 수신된 데이터를 서브 뱅크 내 슬롯에 저장할 때 저장에 사용할 서브 뱅크를 선택하는 순서를 설정하는 동작을 포함할 수 있다.
먼저, 병렬 처리에 사용할 프로세서의 개수(N_proc)는 시스템에서 요구되는 전체 병렬처리 지연시간을 결정하는 주요한 요소로서, [수학식 1]을 만족하는 N값 중에서 결정될 수 있다.
Figure 112019017961389-pat00001
[수학식 1]에서 '2'와 '4'는 상수로서, 데이터 매니저(120)가 프로세서들(150-1~150-N)로 데이터를 넘겨주는 동안 2회의 메모리 액세스가 발생하고, 반대로 프로세서들(150-1~150-N)이 데이터 매니저(120)로 데이터를 넘겨주는 동안 2회의 메모리 액세스가 발생하므로 '4'라는 상수를 사용한다. 또한, '2'는 위와 같은 과정을 수행할 때 프로세서들(150-1~150-N) 및 데이터 매니저(120)가 메모리가 갱신되었음을 확인하는데 걸리는 시간이 포함되어야 하며, 2회 확인되므로 '2'를 사용한다. 여기서, '메모리'는 입력 메모리 뱅크(130) 또는 출력 메모리 뱅크(160)를 의미한다.
또한, T_Latency_req는 시스템에서 요구되는 병렬처리 지연시간이고, T_MEM_Latency는 메모리가 새로운 데이터로 갱신되었을 때, 데이터가 갱신되었음을 프로세서가 인식하는데 소요되는 시간이다. 새로운 데이터의 갱신 유무는 후술할 입력 슬롯 제어 테이블(또는 출력 슬롯 제어 테이블)의 write_idx 및 read_idx를 확인함으로써 알 수 있다. T_MEM_Access는 프로세서가 특정 메모리 주소에 접근하여 데이터를 읽어오거나 쓰는데 걸리는 시간이다.
시스템 관리자 또는 데이터 매니저(120)는 [수학식 1]을 계산한 값과 같거나 작은 T_Proc(N)을 만족하는 N값 중 하나를 선정함으로써 병렬처리에 사용할 데이터 처리장치의 개수를 결정할 수 있다. 이 때, N에 따른 병렬 처리 소요 시간(T_proc)은 도 2에 의해 정해질 수 있다.
도 2를 병렬처리 프로세서 개수에 다른 병렬처리 소요시간의 일 예를 보여주는 그래프이다. 프로세서의 개수는 전체 시스템의 처리 속도와 지연시간을 결정하는 중요한 요소이므로, 시스템 관리자는 N과 T_proc의 관계를 참조하여 프로세서 개수를 정할 수 있다.
프로세서의 개수가 결정되면, 시스템 관리자 또는 데이터 매니저(120)는 [표 1]과 같이 입력 메모리 뱅크(130)와 출력 메모리 뱅크(160)의 상태를 설정하는 뱅크 제어 테이블을 결정할 수 있다.
필드 설명 비고
Num_of_Sub_Bank 서브 뱅크 개수 CPU(프로세서) 개수와 같다
Num_of_slot 하나의 서브 뱅크에 존재하는 슬롯 개수
Byte_slot 하나의 슬롯을 구성하는 byte수
Add_Idx_slot 각 슬롯의 어드레스와 인덱스
Config_Buffer 입력 메모리 뱅크(Bank of RAM in) 또는 출력 메모리 뱅크(Bank of RAM out)가 버퍼를 구성하는 방법
- RR(Round Robin) 방식: 서브뱅크A의 첫번째 슬롯(slot1_in_A)-서브뱅크 B의 첫번째 슬롯(slot1_in_B)-서브뱅크C의 첫번재 슬롯(slot1_in_C)…의 순서로 버퍼에 write 또는 read
- FUF(Fill-Until-Full) 방식: 서브뱅크A의 각 슬롯이 full상태가 될 때까지 write/read, full이 되면, 서브뱅크B의 각 슬롯에 write/read 시작
Buffer 구성방법
[표 1]을 참조하면, 뱅크 제어 테이블에는 데이터의 병렬 처리를 위해 사용할 프로세서의 개수(N_Proc)와, 입력 메모리 뱅크(130)와 출력 메모리 뱅크(160)를 각각 다수의 서브 뱅크들로 분할하기 위한 서브 뱅크 개수(Num of Sub bank)와, 다수의 서브 뱅크들에 존재하는 슬롯들의 개수(Num of slot)와, 각 슬롯을 구성하는 바이트(byte) 수와, 각 슬롯의 어드레스와 슬롯 인덱싱(Add_Idx_slot)과, 입력 메모리 뱅크(130)와 출력 메모리 뱅크(160)가 버퍼를 구성하는 방식(Config Buffer)이 설정된다.
데이터 매니저(120)는 처리하기 위하여 수신된 데이터를 각각의 프로세서들(150-1~150-N)에서 처리하기 위하여 특정 크기로 분할하며, 슬롯은 그 특정 크기를 저장하는데 사용되는 서브 뱅크 내의 저장공간 단위를 의미한다. 서브 뱅크 내의 슬롯들은 링 버퍼(Ring Buffer)로 사용되며, 링 버퍼가 오버플로우되지 않을 정도로 큰 값(byte 수)을 갖도록 정해진다. 오버플로우의 발생할 가능성이 있는지의 여부는 본 발명의 실시 예가 적용될 시스템의 성능을 분석함으로써 확인할 수 있다.
데이터 매니저(120)는 이후 실제 데이터 처리 시 데이터 매니저(120)와 프로세서들(150-1~150-N)이 뱅크 제어 테이블 내의 각 설정값을 읽어와 데이터 저장 및 읽기에 참조하도록 할 수 있다.
본 발명의 실시 예에 의한 실시간 고속 데이터 병렬 처리 장치(100)가 적용된 컴퓨터와 같은 시스템 또는 데이터 매니저(120)는 [표 1]의 뱅크 제어 테이블을 입력 메모리 뱅크(130)와 출력 메모리 뱅크(160)에 각각 저장하며, 이후 실제 데이터 처리 시 데이터 매니저(120)와 프로세서들(150-1~150-N)이 뱅크 제어 테이블 내의 각 설정값을 읽어와 데이터 저장 및 읽기에 참조하도록 할 수 있다.
이를 위하여, 뱅크 제어 테이블이 입력 메모리 뱅크(130)와 출력 메모리 뱅크(160)에 각각 저장된 후, 시스템이 부팅되는 동안, 시스템 또는 데이터 매니저(120)는 [표 1]의 설정값을 참조하여 데이터 병렬 처리에 사용할 프로세서들을 정하고, 입력 메모리 뱅크(130)와 출력 메모리 뱅크(160)를 다수의 서브뱅크들로 나누고 프로세서들(150-1~150-N)과 서브뱅크들을 1:1 매핑시킬 수 있다. 이로써 각 프로세서들(150-1~150-N)은 자신이 데이터를 읽어오거나 저장할 서브뱅크를 인지할 수 있다.
또한, 시스템 또는 데이터 매니저(120)는 각 서브뱅크를 다수의 슬롯으로 나누어 입력 메모리 뱅크(130)와 출력 메모리 뱅크(160)의 동작을 설정할 수 있다. 이 때, 각 서브뱅크의 메모리 어드레스와 슬롯의 어드레스도 뱅크 제어 테이블에 함께 설정될 수 있다.
또한, 시스템 관리자가 [수학식 1]에 의해 데이터 처리에 사용할 프로세서 개수를 조정하면, 조정된 개수에 따라 [표 1]의 뱅크 제어 테이블의 각 설정값 역시 변경되고, 시스템 또는 데이터 매니저(120)는 부팅 시 변경된 각 설정값으로 입력 메모리 뱅크(130)와 출력 메모리 뱅크(160)의 동작을 설정한다.
상술한 [표 1]의 뱅크 제어 테이블은 데이터 매니저(120)와 데이터 처리에 사용되는 N개의 프로세서들(150-1~150-N)에 저장될 수도 있다.
2. 실제 처리할 데이터를 분할하여 저장하는 동작
입력 메모리 뱅크(130)와 출력 메모리 뱅크(160)의 동작 설정이 완료된 후, 처리할 데이터가 데이터 입력부(110)로 입력되면, 데이터 입력부(110)는 데이터를 FIFO 방식으로 데이터 매니저(120)로 출력한다.
데이터 매니저(120)는 입력 메모리 뱅크(130)에 설정된 뱅크 제어 테이블 중 'Byte_slot' 필드에 설정된 byte 크기를 확인하고, 입력되는 데이터를 확인된 byte 크기 내로 분할한 후 입력 메모리 뱅크(130)에 저장한다. 이 때, 데이터 매니저(120)는 뱅크 제어 테이블 중 'Config_buffer' 필드에 설정된 버퍼 방식을 참조하여, 분할된 데이터를 저장할 서브 뱅크와 슬롯을 입력 메모리 뱅크(130)에서 선택한 후 차례대로 저장할 수 있다.
도 3은 분할된 데이터의 형식을 보여준다. 데이터 매니저(120)에 의해 분할된 데이터는 도 3에 도시된 것처럼 Fragmented_idx와 Payload로 구성된다. Fragmented_idx는 분할된 데이터를 취합하여 재구성할 경우 각 페이로드의 순서를 처음 입력되는 데이터와 동일하게 유지시키기 위한 인덱스, 즉, 일련번호이다. 페이로드에는 실제 분할된 데이터가 실린다.
데이터 매니저(120)는 입력 메모리 뱅크(130)에 분할된 데이터를 저장할 때 사용할 서브뱅크를 결정하는 방식을, 상술한 것처럼 뱅크 제어 테이블의 Config_Buffer 필드에 설정된 값을 확인하여 정할 수 있다.
자세히 설명하면, Config_Buffer 필드에 설정된 값이 RR이면, 데이터 매니저(120)는 데이터를 저장할 서브뱅크를 Round Robin 방식으로 선택한다. 즉, 데이터 매니저(120)는 최초 분할된 데이터는 서브뱅크 A의 슬롯에 저장하고, 다음으로 분할된 데이터는 이전에 선택된 서브뱅크 B 다음에 위치하는 서브뱅크 B의 슬롯에 저장하는 방식으로 동작한다. 즉, 데이터 매니저(120)는 데이터 저장에 사용할 서브뱅크를 서브뱅크의 인덱스 기준 또는 어드레스 기준으로 순차적으로 선택할 수 있다.
또한, Config_Buffer 필드에 설정된 값이 FUF이면, 데이터 매니저(120)는 데이터를 저장할 서브뱅크를 Fill Until Full 방식으로 선택한다. 즉, 데이터 매니저(120)는 최초 분할된 데이터 저장 시 첫번째 서브뱅크인 서브뱅크 A의 첫번째 슬롯을 선택하여 저장하고, 이 후 서브뱅크 A의 모든 슬롯들에 데이터가 저장될 때까지 서브뱅크 A를 선택한다. 서브뱅크 A의 모든 슬롯들이 데이터 저장에 사용되면, 데이터 매니저(120)는 다음 서브뱅크인 서브뱅크 B의 슬롯들을 순차적으로 선택하여 분할된 데이터를 저장한다.
한편, 데이터 매니저(120)가 서브뱅크 내의 슬롯에 데이터 저장 시, 슬롯을 선택하기 위한 정책이 필요하며, 이를 위하여 입력 메모리 뱅크(130)의 각 서브뱅크에는 [표 2]와 같은 입력 슬롯 제어 테이블(slot_[Idx_Sub_Bank]_control_field_in Table)이 저장될 수 있다. '[Idx_Sub_Bank]'는 입력 슬롯 제어 테이블이 저장되는 서브뱅크의 인덱스이다.
필드 설명 설정값 사용객체
Buffer_Empty 서브뱅크 내 슬롯으로 구성된 링버퍼가 empty상태, 즉 모든 버퍼가 비었음을 의미함.- 초기값은 true (즉, buffer가 비었음)
- Buffer_Empty가 false로 설정되는 조건은 Ring Buffer에 데이터가 저장됨.
- Buffer_Empty가 true로 설정되는 조건은 Ring Buffer에서 데이터를 읽은 후 Read_idx 업데이트 하고, Read_idx == Write_idx일 경우임.
- Read_idx 업데이트: Read_idx = (Read_idx + 1)%Num_of_slot
초기 Buffer_Empty=true

이후, write, read 동작에 따라 변경됨.
Buffer_Empty 필드의 초기값은 데이터 매니저가 write.
이후 데이터 처리장치가 write

Buffer_Full 서브뱅크 내 슬롯으로 구성된 링버퍼가 full 상태, 즉 모든 버퍼가 데이터로 다 채워졌는지를 나타냄.- 초기값은 false (즉, buffer가 full이 아님)
- Buffer_Full이 true가 되는 조건은 데이터 저장 후 Write_idx 업데이트 하고, Write_idx = Read_idx임
- Write_idx 업데이트: Write_idx = (Write_idx + 1)%Num_of_slot
초기 Buffer_Full=false

이후, write, read 동작에 따라 변경됨.
데이터 매니저가 Buffer_Full 필드의 설정값을 write.
Write_idx N번째 서브뱅크를 구성하는 슬롯들로 구성된 링버퍼에서 다음 번 write 이벤트 시 사용할 슬롯의 인덱스.- 저장 조건은 Buffer_Full이 false임 초기 Write_idx=1

이후, write, read 동작에 따라 변경됨.
데이터 매니저가 Write_idx 필드에 슬롯 인덱스를 write,
프로세서 #N이 read
Read_idx N번째 서브뱅크를 구성하는 슬롯들로 구성된 링버퍼에서 다음 번 read 이벤트 시 사용할 슬롯의 인덱스임.- 읽기 조건은 Buffer_Empty가 false임 초기 Read_idx=1

이후, write, read 동작에 따라 변경됨.
프로세서 #N이 Read_idx 필드에 슬롯 인덱스를 write,
데이터 매니저가 read
데이터 매니저(120)는 버퍼 구성 방식에 따라 분할된 데이터를 저장할 슬롯을 선택하고, 다수의 프로세서들(150-1~150-N)이 저장된 데이터를 읽을 슬롯을 선택하기 위한 정책이 설정되는 입력 슬롯 제어 테이블을 생성하여 각 서브뱅크에 저장 및 관리할 수 있다.
[표 2]를 참조하면, 입력 슬롯 제어 테이블에 설정되는 정책은, 서브 뱅크 내의 슬롯들로 구성되는 링 버퍼가 비어있는 상태인지를 나타내는 버퍼 엠티(Buffer Empty) 필드와, 링 버퍼가 모두 채워진 상태인지를 나타내는 버퍼 풀(Buffer Full) 필드와, 데이터 매니저(120)가 입력 메모리 뱅크(130)에 분할된 데이터를 저장할 때 사용할 슬롯 인덱스를 기록하는 라이트 인덱스(Write Index) 필드와, 다수의 프로세서들(150-1~150-N)이 저장된 데이터를 읽기 위한 슬롯의 인덱스를 기록하는 리드 인덱스(Read Index) 필드와, 각 필드의 초기값을 포함한다.
데이터 매니저(120)는 처리할 데이터가 입력되면, 또는 시스템이 부팅되는 동안 또는 시스템이 부팅된 이후, 각 필드의 초기값이 설정된 입력 슬롯 제어 테이블을 입력 메모리 뱅크(130)의 각 서브 뱅크마다 생성하여 각 서브 뱅크에 저장할 수 있다.
[표 2]에서 사용 객체는 각 필드의 설정값을 쓰거나 읽는 주체를 의미한다.
도 4는 본 발명의 실시 예에 따라 설정된 입력 메모리 뱅크(130)의 일 예를 보여준다.
도 4를 참조하면, 입력 메모리 뱅크(130)는 뱅크 제어 테이블이 저장되는 영역과 제1 내지 제N서브뱅크들(SB1~SBN)을 포함하고, 제1 내지 제N서브뱅크들은 각각 제1 내지 제N입력 슬롯 제어 테이블이 저장되는 영역과, M개의 슬롯들(slot1~slotM)을 포함한다. 예를 들어, 제1서브뱅크(제1SB)는 제1입력 슬롯 제어 테이블이 저장되는 영역과, 제1 내지 제M슬롯들(slot1_SB1~slotM_SB1)을 포함한다. SB1~SBN은 제1 내지 제N서브뱅크들, slot1~slotM은 제1 내지 제M슬롯들을 의미한다.
데이터 매니저(120)는 각 서브뱅크(SB1~SBN)마다 도 5와 같은 링버퍼를 논리적으로 구성하여 데이터를 저장하고, 제1프로세서(150-1)는 제1서브뱅크(SB1)의 슬롯들(slot1_SB1~slotM_SB1)에 저장된 데이터를 처리한다. 제2프로세서(150-2)는 제2서브뱅크(SB2)의 슬롯들(slot1_SB2~slotM_SB2)에 저장된 데이터를 처리하며, 나머지 프로세서들(150-3~150-N) 역시 매핑된 제3 내지 제N서브뱅크들(SB3~SBN)에 저장된 데이터를 처리한다.
이하에서는 도 4 및 도 5를 참조하여 데이터 매니저(120)와 제1프로세서(150-1)가 데이터를 저장 및 읽어오는 동작에 대해 설명한다.
도 5는 제1서브뱅크(SB1)가 10개의 슬롯들을 포함하는 경우, 제1 내지 제10슬롯들에 의해 형성된 링 버퍼를 도시한 도면이다.
도 5에서, 1~10은 제1 내지 제10슬롯들의 인덱스로서, 입력 슬롯 제어 테이블의 Write_idx 필드와 Read_idx 필드에 라이트 인덱스(Write Index)와 리드 인덱스(Read Index)로서 사용된다.
제1서브뱅크의 입력 슬롯 제어 테이블의 초기 설정은 다음과 같다.
[초기 설정]
Buffer_empty=true
Buffer_full=flase
Read_idx=1
Write_idx=1
데이터 매니저(120)가 분할된 데이터를 저장하려는 경우(write 동작), 데이터 매니저(120)는 다음과 같이 동작할 수 있다.
[Write 동작]
If buffer_full==false
write_idx 위치에 data를 저장(write)
write_idx=(write_idx+1)%Num_of_slot <========= modulus 연산
if write_idx==read_idx
buffer_full=true로 설정
buffer_empty=flase로 설정
Else
don’t write data
위의 write 동작을 참조하여 설명하면, 데이터 매니저(120)는, 현재 데이터를 저장할 서브뱅크를 먼저 확인하고, 확인된 서브뱅크가 제1서브뱅크이면, 제1서브뱅크에 저장된 제1입력 슬롯 제어 테이블을 확인한다. 데이터 매니저(120)는 제1입력 슬롯 제어 테이블에서 버퍼 풀 필드의 값이 false이면, 라이트 인덱스 필드에 기록된 슬롯 인덱스(최초의 경우 1)에 대응하는 슬롯에 분할된 데이터를 저장하고, 다음 라이트 이벤트 발생 시 사용할 슬롯 인덱스를 연산하여 라이트 인덱스 필드에 기록하며, 버퍼 엠티 필드의 값을 false로 설정한다.
다음 라이트 이벤트 발생 시 사용할 슬롯 인덱스 연산은 modulus 연산을 사용할 수 있다. 예를 들어, 처음 데이터를 기록한 슬롯 인덱스(즉, write_idx)=1이므로, 데이터 매니저(120)는 write_idx=(write_idx+1)%Num_of_slot=(1+1)%10=2를 산출하고, write_idx 필드에 2를 기록한다. 따라서, 이후의 데이터는 2번째 슬롯에 저장한다. 만약, 현재 데이터를 저장한 슬롯의 인덱스가 10인 경우, write_idx=(10+1)%10=1이 산출되어, 라이트 인덱스 필드에는 다시 1이 기록된다.
데이터 매니저(120)는 순차적으로 데이터를 슬롯들에 저장함으로써 write_idx와 read_idx가 동일해지면, 버퍼 풀 필드를 true로 설정하여 더 이상 데이터를 저장할 슬롯이 없음을 표시할 수 있다. 이후 프로세서가 슬롯에 저장된 데이터를 읽음으로써 버퍼 풀 필드의 값은 false로 설정되어 데이터 저장이 가능해진다.
다음, 제1프로세서(150-1)가 제1서브뱅크에 저장된 데이터를 읽으려는 경우, 제1프로세서(150-1)는 다음과 같이 동작할 수 있다.
[Read 동작]
If buffer_empty==false
read_idx 위치의 data 읽음
read_idx=(read_idx+1)%Num_of_slot
if read_idx==write_idx
buffer_empty=true로 설정
buffer_full=flase로 설정
Else
don’t read data
위의 read 동작을 참조하여 설명하면, 제1프로세서(150-1)는 제1서브뱅크에 저장된 제1입력 슬롯 제어 테이블을 확인하여, 버퍼 엠티 필드의 값이 false이면, 슬롯에 저장된 데이터를 읽는 것이 가능한 것으로 판단하고, 리드 인덱스 필드에 기록된 슬롯 인덱스(최초의 경우 1)에 대응하는 슬롯으로부터 데이터를 읽어와 처리하고, 다음 리드 이벤트 발생 시 사용할 슬롯 인덱스를 연산하여 리드 인덱스 필드에 기록하고, 버퍼 풀 필드의 값을 false로 설정하여 데이터 저장이 가능하도록 처리할 수 있다.
다음 리드 이벤트 발생 시 사용할 슬롯 인덱스 연산은 modulus 연산을 사용할 수 있다. 예를 들어, 처음 데이터를 읽어온 슬롯 인덱스(즉, read_idx)=1이므로, 제1프로세서(150-1)는 read_idx=(read_idx+1)%Num_of_slot=(1+1)%10=2를 산출하고, read_idx 필드에 2를 기록한다. 따라서, 이후에는 2번째 슬롯에 저장된 데이터를 읽어온다.
제1프로세서(150-1)는 데이터를 읽어오는 동안 read_idx와 write_idx가 동일해지면, 버퍼 엠티 필드를 true로 설정하여 더 이상 데이터를 읽을 슬롯이 없음을 표시할 수 있다. 이후 데이터 매니저(120)가 슬롯에 데이터를 저장함으로써 버퍼 엠티 필드의 값이 false로 설정되어 데이터를 읽는 것이 가능해질 수 있다.
입력 메모리 뱅크(130)에 상술한 바와 같이 데이터를 저장하고 읽는 동작은 모든 활성화된 제2 내지 제N프로세서들(150-2~150-N)에 대해서도 동일하게 적용한다.
3. 데이터를 병렬 처리하는 동작
상술한 동작에 의해 제1 내지 제N프로세서들(150-1~150-N)은 각각 대응하는 제1 내지 제N서브뱅크들(SB1~SBN)에서 데이터를 읽어와 사전에 정해진 일련의 절차, 즉, 알고리즘에 의해 처리한다.
4. 처리된 데이터를 저장 및 취합하는 동작
제1 내지 제N프로세서들(150-1~150-N)은 처리된 데이터를 출력하기 위하여 데이터 매니저(120)로 전달하게 되는데, 이 때 출력 메모리 뱅크(160)를 사용할 수 있다. 제1 내지 제N프로세서들(150-1~150-N)이 처리된 데이터를 출력 메모리 뱅크(160)에 저장하고, 데이터 매니저(120)가 출력 메모리 뱅크(160)에 저장된 데이터를 읽어오는 동작은 데이터 매니저(120)에서 제1 내지 제N프로세서들(150-1~150-N)로 데이터가 전달되는 동작과 반대의 과정을 갖는다.
자세히 설명하면, 처리된 데이터를 출력 메모리 뱅크(160)에 저장 및 취합하는 동작은 출력 메모리 뱅크(160)에 저장된 뱅크 제어 테이블(Bank_control_field_out Table)과, 출력 메모리 뱅크(160)의 제1 내제 제N서브뱅크들에 각각 저장된 출력 슬롯 제어 테이블(slot_[Idx_Sub_Bank]_control_field_out Table)이 사용된다. '[Idx_Sub_Bank]'는 출력 슬롯 제어 테이블이 저장되는 서브뱅크의 인덱스로서, 즉, 각 프로세서(150-1~150-N)가 데이터를 저장하기 위해 매핑된 서브뱅크의 인덱스이다.
즉, 출력 메모리 뱅크(160)의 각 서브 뱅크에는, 제1 내지 제N프로세서들(150-1~150-N)이 처리된 데이터를 저장할 슬롯을 선택하고, 데이터 매니저(120)가 제1 내지 제N프로세서들(150-1~150-N)에 의해 저장된 데이터를 읽을 슬롯을 선택하기 위한 정책이 설정되는 출력 슬롯 제어 테이블이 각각 저장된다.
출력 슬롯 제어 테이블 역시 데이터 매니저(120) 또는 각 프로세서(150-1~150-N)가 각 서브 뱅크 내의 슬롯들로 링 버퍼를 구성하고, 데이터 매니저(120) 또는 제1 내지 제N프로세서들(150-1~150-N)이 링 버퍼에 쓰기 및 읽기 동작을 수행할 수 있도록 지원하기 위한 필드들이 [표 3]과 같이 정의되어 있다.
필드 설명 설정값 사용객체
Buffer_Empty 서브뱅크 내 슬롯으로 구성된 링버퍼가 empty상태, 즉 모든 버퍼가 비었음을 의미함.- 초기값은 true (즉, buffer가 비었음)
- Buffer_Empty가 false로 설정되는 조건은 Ring Buffer에 데이터가 저장됨.
- Buffer_Empty가 true로 설정되는 조건은 Ring Buffer에서 데이터를 읽은 후 Read_idx 업데이트 하고, Read_idx == Write_idx일 경우임.
- Read_idx 업데이트: Read_idx = (Read_idx + 1)%Num_of_slot
초기 Buffer_Empty=true

이후, write, read 동작에 따라 변경됨.
데이터 매니저가 Buffer_Empty 필드의 설정값을 write.
Buffer_Full 서브뱅크 내 슬롯으로 구성된 링버퍼가 full 상태, 즉 모든 버퍼가 데이터로 다 채워졌는지를 나타냄.- 초기값은 false (즉, buffer가 full이 아님)
- Buffer_Full이 true가 되는 조건은 데이터 저장 후 Write_idx 업데이트 하고, Write_idx = Read_idx임
- Write_idx 업데이트: Write_idx = (Write_idx + 1)%Num_of_slot
초기 Buffer_Full=false

이후, write, read 동작에 따라 변경됨.
Buffer_Full 필드의 초기값은 데이터 매니저가 write.
이후에는 프로세서가 write.
Write_idx N번째 서브뱅크를 구성하는 슬롯들로 구성된 링버퍼에서 다음 번 write 이벤트 시 사용할 슬롯의 인덱스.- 저장 조건은 Buffer_Full이 false임 초기 Write_idx=1

이후, write, read 동작에 따라 변경됨.
프로세서 #N이 write
데이터 매니저가 read,
Read_idx N번째 서브뱅크를 구성하는 슬롯들로 구성된 링버퍼에서 다음 번 read 이벤트 시 사용할 슬롯의 인덱스임.- 읽기 조건은 Buffer_Empty가 false임 초기 Read_idx=1

이후, write, read 동작에 따라 변경됨.
데이터 매니저가 write.
프로세서 #N이 read,
[표 3]에서 각 필드에 대한 설명, 즉, 데이터를 저장 및/또는 읽기 위한 동작은 [표 2]를 참조하여 설명한 것과 유사하므로 구체적인 설명은 생략한다.
다만, [표 2]의 경우, 입력 메모리 뱅크(130)에 데이터를 저장하는 주체는 데이터 매니저(120)이고 읽는 주체는 프로세서(예를 들어, 150-1)인 반면, [표 3]의 경우 출력 메모리 뱅크(160)에 데이터를 저장하는 주체는 프로세서(예를 들어, 150-1)이고, 저장된 데이터를 읽는 주체는 데이터 매니저(120)이다.
따라서, [표 2] 및 [표 3]의 각 필드의 설정값을 쓰거나 읽는 주체 역시 서로 차이가 있다. 예를 들어, [표 2]에서 버퍼 엠티 필드의 설정값 중 초기값은 데이터 매니저(120)가 기록하고, 이후에는 프로세서가 설정값을 기록하는 반면, [표 3]에서는 데이터 매니저(120)가 버퍼 엠티 필드의 설정값을 계속 기록한다.
도 6은 본 발명의 실시 예에 따라 설정된 출력 메모리 뱅크(160)의 일 예를 보여준다.
도 6을 참조하면, 출력 메모리 뱅크(160)는 뱅크 제어 테이블이 저장되는 영역과 제1 내지 제N서브뱅크들(SB1~SBN)을 포함하고, 제1 내지 제N서브뱅크들은 각각 제1 내지 제N출력 슬롯 제어 테이블이 저장되는 영역과, M개의 슬롯들(slot1~slotM)을 포함한다.
데이터 매니저(120) 또는 각 프로세서(150-1~150-N)는 각 서브뱅크(SB1~SBN)마다 도 5와 같은 링버퍼를 구성하여 초기값을 설정하고, 제1프로세서(150-1)는 제1서브뱅크(SB1)의 슬롯들(slot1_SB1~slotM_SB1)에 처리된 데이터를 저장하고, 제2프로세서(150-2)는 제2서브뱅크(SB2)의 슬롯들(slot1_SB1~slotM_SB1)에 처리된 데이터를 저장한다. 나머지 프로세서들(150-3~150-N) 역시 매핑된 제3 내지 제N서브뱅크들(SB3~SBN)에 데이터를 저장한다. 데이터 매니저(120)는 제1 내지 제N서브뱅크들(SB1~SBN)에 저장된 데이터를 읽어와 취합한다.
출력 메모리 뱅크(160)에 데이터를 저장하고 읽는 동작을 도 5를 참조하여 간단히 설명하면 다음과 같다.
먼저, Write 동작 시, 제1 내지 제N프로세서들(150-1~150-N) 각각은, 출력 슬롯 제어 테이블의 버퍼 풀 필드의 값이 false이면, 라이트 인덱스 필드에 기록된 슬롯 인덱스에 대응하는 슬롯에 처리된 데이터를 저장하기 시작하고, 다음 라이트 이벤트 발생 시 사용할 슬롯 인덱스를 연산하여 라이트 인덱스 필드에 기록하고, 버퍼 엠티 필드의 값을 false로 설정한다.
Read 동작 시, 데이터 매니저(120)는, 출력 슬롯 제어 테이블의 버퍼 엠티 필드의 값이 false이면, 슬롯에 저장된 데이터를 읽는 것이 가능한 것으로 판단하고, 리드 인덱스 필드에 기록된 슬롯 인덱스에 대응하는 슬롯으로부터 처리된 데이터를 읽어와 처리하고, 다음 리드 이벤트 발생 시 사용할 슬롯 인덱스를 연산하여 리드 인덱스 필드에 기록하고, 버퍼 풀 필드의 값을 false로 설정하여 데이터 저장이 가능하도록 처리할 수 있다.
상술한 동작에 의해 데이터 매니저(120)는 데이터를 출력 메모리 뱅크(160)의 N개의 서브뱅크들로부터 읽어와, 정해진 순서에 의해 데이터를 취합 및 재구성한다. 재구성 시 데이터 순서를 데이터 입력부(110)에서 수신한 순서와 동일하게 하기 위하여, 제1 내지 제N프로세서들(150-1~150-N)은 처리된 데이터의 페이로드앞에 Fragmented_idx를 추가하여 출력 메모리 뱅크(160)에 저장하고, 따라서, 데이터 매니저(120)는 Fragmented_idx를 이용하여 데이터 순서를 정할 수 있다.
5. 데이터를 출력하는 동작
데이터 매니저(120)는 취합 및 재구성된 데이터를 데이터 출력부(170)로 전달한다. 데이터 출력부(170)는 재구성된 데이터를 출력한다.
도 7은 도 1 내지 도 6을 참조하여 설명한 실시간 고속 데이터 병렬 처리 장치(100)의 동작을 개략적으로 보여주는 도면이다.
도 7을 참조하면, Bank of RAM 또는 Bank of RAM_in은 입력 메모리 뱅크(130)이고, Bank of RAM과 Bank of RAM_out은 출력 메모리 뱅크(160)를 의미한다. 데이터 매니저(120)는 Bank of RAM의 동작을 설정한 후 데이터가 입력되면, 데이터를 입력 메모리 뱅크(130)에 저장한다. 다수의 프로세서들(150-1~150-N)은 데이터 처리를 위한 소프트웨어의 구동을 시작하고, 입력 메모리 뱅크(130)에 저장된 데이터를 읽어와 소프트웨어에 의해 처리한 후 출력 메모리 뱅크(160)에 저장한다. 데이터 매니저(120)는 출력 메모리 뱅크(160)에 저장된 데이터를 읽어와 출력한다.
이러한 동작에 의해 고속 데이터 병렬 처리 장치(100)는 실시간으로 입력되는 데이터를 고속으로 병렬처리하는 것이가능하다.
도 8은 본 발명의 실시 예에 따른 전자 장치의 고속 데이터 병렬 처리 방법을 설명하기 위한 흐름도이다.
도 8의 고속 데이터 병렬 처리 방법을 위한 전자 장치는 도 1 내지 도 6을 참조하여 설명한 고속 데이터 병렬 처리 장치(100) 또는 장치(100)가 적용된 컴퓨터 또는 시스템일 수 있다.
도 8을 참조하면, 전자 장치는 입력 메모리 뱅크(130) 및 출력 메모리 뱅크(160)에 [표 1]과 같은 뱅크 제어 테이블을 저장하고, 저장된 뱅크 제어 테이블에 기초하여 입력 메모리 뱅크(130)와 출력 메모리 뱅크(160)의 동작을 설정한다(S810). S710단계에서, 전자 장치는 예를 들어, 뱅크 제어 테이블에 설정된 프로세서 개수(N)만큼 데이터 처리에 사용할 프로세서들을 정하고, 입력 메모리 뱅크(130)와 출력 메모리 뱅크(160)를 N개의 서브뱅크들로 나누고, 각 서브뱅크를 다수의 슬롯들로 나눈다.
전자 장치는 입력 메모리 뱅크(130)와 출력 메모리 뱅크(160)의 각 서브뱅크들에 설정할 입력 슬롯 제어 테이블과 출력 슬롯 제어 테이블을 N개씩 생성한 후 데이터 저장 및 읽기에 필요한 초기값을 설정한다(S820).
이후, 전자 장치의 데이터 매니저(120)는 처리하기 위한 데이터를 입력받아 분할하여 입력 메모리 뱅크(130)에 저장한다(S830, S840). S830단계에서, 전자 장치는 뱅크 제어 테이블에 설정된 슬롯의 byte 크기에 따라 데이터를 분할하고, S840단계에서, 뱅크 제어 테이블에 설정된 버퍼 구성 방식에 따라 데이터를 입력 메모리 뱅크(130)의 N개의 서브뱅크들에 저장한다.
S810단계에서 설정된 다수의 프로세서들은 데이터를 처리하기 위한 프로그램(즉, 소프트웨어)을 구동하고(S850), 입력 메모리 뱅크(130)의 각 서브뱅크마다 저장된 [표 2]와 같은 입력 슬롯 제어 테이블들 중 매핑된 서브뱅크의 입력 슬롯 제어 테이블을 참조하여 입력 메모리 뱅크(130)에 저장된 데이터를 읽어와 실시간으로 병렬 처리한다(S860). S840단계 내지 S860단계에서, 데이터 매니저(120)와 다수의 프로세서들(150-1~150-N)은 입력 슬롯 제어 테이블들의 각 필드의 설정값을 변경하거나 참조하여 데이터를 저장 또는 읽는다.
전자 장치의 다수의 프로세서들(150-1~150-N)은 병렬 처리된 데이터를 출력 메모리 뱅크(160)의 각 서브뱅크에 저장된 [표 3]과 같은 출력 슬롯 제어 테이블들을 참조하여 출력 메모리 뱅크(160)에 저장한다(S870).
데이터 매니저(120)는 출력 메모리 뱅크(160)의 서브뱅크들에 저장된 데이터를 읽어와 사전에 정해진 순서대로 취합하여 출력한다(S880).
한편, 본 발명에 따른 전자 장치의 고속 데이터 병렬 처리 방법은 이를 구현하기 위한 명령어들의 프로그램이 유형적으로 구현됨으로써, 컴퓨터를 통해 판독될 수 있는 기록매체에 포함되어 제공될 수도 있음은 통상의 기술자가 쉽게 이해할 수 있다.
즉, 본 발명에 따른 전자 장치의 고속 데이터 병렬 처리 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 형태로 구현되어, 컴퓨터 판독 가능한 기록매체에 기록될 수 있으며, 상기 컴퓨터 판독 가능한 기록매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 컴퓨터 판독 가능한 기록매체에는 하드 디스크와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media) 및 롬(ROM), 램(RAM), 플래시 메모리, USB 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다.
따라서, 본 발명은 전자 장치의 고속 데이터 병렬 처리 방법을 구현하기 위하여 상기 전자기파 특성 측정 시스템을 제어하는 컴퓨터 상에서 수행되는 컴퓨터 판독 가능한 기록매체에 저장된 프로그램을 함께 제공한다.
한편, 이상으로 본 발명의 기술적 사상을 예시하기 위한 바람직한 실시 예와 관련하여 설명하고 도시하였지만, 본 발명은 이와 같이 도시되고 설명된 그대로의 구성 및 작용에만 국한되는 것이 아니며, 기술적 사상의 범주를 일탈함이 없이 본 발명에 대해 다수의 변경 및 수정 가능함을 당업자들은 잘 이해할 수 있을 것이다. 따라서, 그러한 모든 적절한 변경 및 수정과 균등물들도 본 발명의 범위에 속하는 것으로 간주하여야 할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.
100: 실시간 고속 데이터 병렬 처리 장치
110: 데이터 입력부
120: 데이터 매니저
130: 입력 메모리 뱅크
140-1~140-N: 제1 내지 제N메모리들
150-1~150-N: 제1 내지 제N프로세서들
160: 출력 메모리 뱅크
170: 데이터 출력부
SB1~SBN: 제1 내지 제N서브뱅크들
slot1~slotM: 제1 내지 제M슬롯들

Claims (10)

  1. 병렬 처리하기 위한 데이터를 저장하는 입력 메모리 뱅크;
    상기 데이터를 처리하기 위한 프로그램이 저장 및 구동되는 하나 이상의 메모리;
    상기 프로그램을 구동하여 상기 입력 메모리 뱅크에 저장된 데이터를 실시간으로 병렬 처리하는 다수의 프로세서들;
    상기 다수의 프로세서들에 의해 처리된 데이터를 저장하는 출력 메모리 뱅크; 및
    상기 병렬 처리하기 위한 데이터를 분할하여 상기 입력 메모리 뱅크에 저장하고, 상기 출력 메모리 뱅크에 저장된 데이터를 읽어와 사전에 정해진 순서대로 취합하여 출력하는 데이터 매니저;를 포함하고,
    상기 입력 메모리 뱅크 및 상기 출력 메모리 뱅크에는,
    상기 데이터의 병렬 처리를 위해 사용할 프로세서의 개수(N_Proc)와, 상기 입력 메모리 뱅크와 상기 출력 메모리 뱅크를 각각 다수의 서브 뱅크들로 분할하기 위한 서브 뱅크 개수(Num of Sub bank)와, 상기 다수의 서브 뱅크들에 존재하는 슬롯들의 개수(num of slot)와, 상기 슬롯들 각각을 구성하는 바이트(byte) 수와, 상기 슬롯들 각각의 어드레스와 슬롯 인덱싱(Add_Idx_slot)과, 상기 입력 메모리 뱅크와 출력 메모리 뱅크가 버퍼를 구성하는 방식(Config Buffer)이 설정된 뱅크 제어 테이블이 저장되며,
    상기 데이터 매니저는,
    상기 뱅크 제어 테이블이 입력 메모리 뱅크와 출력 메모리 뱅크에 각각 저장된 이후, 시스템이 부팅되는 동안, 상기 뱅크 제어 테이블에 설정된 설정값을 참조하여 데이터 병렬 처리에 사용할 프로세서들을 정하고, 입력 메모리 뱅크와 출력 메모리 뱅크를 다수의 서브뱅크들로 나누고 상기 정해진 프로세서들과 서브뱅크들을 1:1 매핑시켜 상기 정해진 프로세서들이 데이터를 읽어오거나 저장할 서브뱅크를 인지할 수 있도록 처리하고,
    상기 입력 메모리 뱅크에 설정된 뱅크 제어 테이블의 바이트 수를 참조하여 상기 데이터를 분할하고, 상기 버퍼를 구성하는 방식을 참조하여 상기 분할된 데이터를 저장할 서브 뱅크와 슬롯을 상기 입력 메모리 뱅크에서 선택하여 차례대로 저장하는 것을 특징으로 하는 다수의 소프트웨어를 기반으로 하는 실시간 고속 데이터 병렬 처리 장치.
  2. 삭제
  3. 제1항에 있어서,
    상기 입력 메모리 뱅크의 각 서브 뱅크에는,
    상기 데이터 매니저가 상기 분할된 데이터를 저장할 슬롯을 선택하고, 상기 다수의 프로세서들이 상기 저장된 데이터를 읽을 슬롯을 선택하기 위한 정책이 설정되는 입력 슬롯 제어 테이블이 저장되며,
    상기 입력 슬롯 제어 테이블에 설정되는 정책은,
    상기 서브 뱅크 내 슬롯들로 구성되는 링 버퍼가 비어있는 상태인지를 나타내는 버퍼 엠티(Buffer Empty) 필드와, 상기 링 버퍼가 모두 채워진 상태인지를 나타내는 버퍼 풀(Buffer Full) 필드와, 상기 데이터 매니저가 상기 입력 메모리 뱅크에 상기 분할된 데이터를 저장할 때 사용할 슬롯 인덱스를 기록하는 라이트 인덱스(Write Index) 필드와, 상기 다수의 프로세서들이 슬롯에 저장된 데이터를 읽기 위한 슬롯 인덱스를 기록하는 리드 인덱스(Read Index) 필드를 포함하는 것을 특징으로 하는 실시간 고속 데이터 병렬 처리 장치.
  4. 제3항에 있어서,
    상기 데이터 매니저는,
    상기 버퍼 풀 필드의 값이 false이면, 상기 라이트 인덱스 필드에 기록된 슬롯 인덱스에 대응하는 슬롯에 상기 분할된 데이터를 저장하기 시작하고, 다음 라이트 이벤트 발생 시 사용할 슬롯 인덱스를 연산하여 상기 라이트 인덱스 필드에 기록하고, 상기 버퍼 엠티 필드의 값을 false로 설정하며,
    상기 다수의 프로세서들 각각은,
    상기 버퍼 엠티 필드의 값이 false이면, 상기 슬롯에 저장된 데이터를 읽는 것이 가능한 것으로 판단하고, 상기 리드 인덱스 필드에 기록된 슬롯 인덱스에 대응하는 슬롯으로부터 상기 분할된 데이터를 읽어와 처리하고, 다음 리드 이벤트 발생 시 사용할 슬롯 인덱스를 연산하여 상기 리드 인덱스 필드에 기록하고, 상기 버퍼 풀 필드의 값을 false로 설정하여 데이터 저장이 가능하도록 처리하는 것을 특징으로 하는 실시간 고속 데이터 병렬 처리 장치.
  5. 제1항에 있어서,
    상기 출력 메모리 뱅크의 각 서브 뱅크에는,
    상기 다수의 프로세서들이 상기 처리된 데이터를 저장할 슬롯을 선택하고, 상기 데이터 매니저가 상기 다수의 프로세서들에 의해 저장된 데이터를 읽을 슬롯을 선택하기 위한 정책이 설정되는 출력 슬롯 제어 테이블이 저장되며,
    상기 출력 슬롯 제어 테이블에 설정되는 정책은,
    상기 서브 뱅크 내 슬롯들로 구성되는 링 버퍼가 비어있는 상태인지를 나타내는 버퍼 엠티(Buffer Empty) 필드와, 상기 링 버퍼가 모두 채워진 상태인지를 나타내는 버퍼 풀(Buffer Full) 필드와, 상기 데이터 매니저가 상기 입력 메모리 뱅크에 상기 분할된 데이터를 저장할 때 사용할 슬롯 인덱스를 기록하는 라이트 인덱스(Write Index) 필드와, 상기 다수의 프로세서들이 슬롯에 저장된 데이터를 읽기 위한 슬롯 인덱스를 기록하는 리드 인덱스(Read Index) 필드를 포함하는 것을 특징으로 하는 실시간 고속 데이터 병렬 처리 장치.
  6. 제5항에 있어서,
    상기 다수의 프로세서들 각각은,
    상기 버퍼 풀 필드의 값이 false이면, 상기 라이트 인덱스 필드에 기록된 슬롯 인덱스에 대응하는 슬롯에 상기 처리된 데이터를 저장하기 시작하고, 다음 라이트 이벤트 발생 시 사용할 슬롯 인덱스를 연산하여 상기 라이트 인덱스 필드에 기록하고, 상기 버퍼 엠티 필드의 값을 false로 설정하며,
    상기 데이터 매니저는,
    상기 버퍼 엠티 필드의 값이 false이면, 상기 슬롯에 저장된 데이터를 읽는 것이 가능한 것으로 판단하고, 상기 리드 인덱스 필드에 기록된 슬롯 인덱스에 대응하는 슬롯으로부터 상기 처리된 데이터를 읽어와 처리하고, 다음 리드 이벤트 발생 시 사용할 슬롯 인덱스를 연산하여 상기 리드 인덱스 필드에 기록하고, 상기 버퍼 풀 필드의 값을 false로 설정하여 데이터 저장이 가능하도록 처리하는 것을 특징으로 하는 실시간 고속 데이터 병렬 처리 장치.
  7. 전자장치의 실시간 고속 데이터 병렬 처리 방법에 있어서,
    (A) 데이터 매니저가 병렬 처리하기 위한 데이터를 입력받아 분할하여 입력 메모리 뱅크에 저장하는 단계;
    (B) 다수의 프로세서들이 데이터를 처리하기 위한 프로그램을 구동하여 상기 입력 메모리 뱅크에 저장된 데이터를 읽어와 실시간으로 병렬 처리하는 단계;
    (C) 상기 다수의 프로세서들이 상기 병렬 처리된 데이터를 출력 메모리 뱅크에 저장하는 단계; 및
    (D) 상기 데이터 매니저가 상기 출력 메모리 뱅크에 저장된 데이터를 읽어와 사전에 정해진 순서대로 취합하여 출력하는 단계;를 포함하고,
    상기 (A) 단계 이전에,
    (E) 상기 입력 메모리 뱅크 및 상기 출력 메모리 뱅크에, 상기 데이터의 병렬 처리를 위해 사용할 프로세서의 개수(N_Proc)와, 상기 입력 메모리 뱅크와 상기 출력 메모리 뱅크를 각각 다수의 서브 뱅크들로 분할하기 위한 서브 뱅크 개수(Num of Sub bank)와, 상기 다수의 서브 뱅크들에 존재하는 슬롯들의 개수(num of slot)와, 상기 슬롯들 각각을 구성하는 바이트(byte) 수와, 상기 슬롯들 각각의 어드레스와 슬롯 인덱싱과, 상기 입력 메모리 뱅크와 출력 메모리 뱅크가 버퍼를 구성하는 방식(Config Buffer)이 설정된 뱅크 제어 테이블이 저장되는 단계; 및
    (F) 상기 저장된 뱅크 제어 테이블에 기초하여 상기 입력 메모리 뱅크와 상기 출력 메모리 뱅크의 동작을 설정하는 단계;를 더 포함하고,
    상기 (F) 단계에서, 상기 데이터 매니저는,
    상기 (E) 단계에서 상기 뱅크 제어 테이블이 입력 메모리 뱅크와 출력 메모리 뱅크에 각각 저장된 이후, 시스템이 부팅되는 동안, 상기 뱅크 제어 테이블에 설정된 설정값을 참조하여 데이터 병렬 처리에 사용할 프로세서들을 정하고, 입력 메모리 뱅크와 출력 메모리 뱅크를 다수의 서브뱅크들로 나누고 상기 정해진 프로세서들과 서브뱅크들을 1:1 매핑시켜 상기 정해진 프로세서들이 데이터를 읽어오거나 저장할 서브뱅크를 인지할 수 있도록 처리하고,
    상기 (A) 단계에서, 상기 데이터 매니저는, 상기 입력 메모리 뱅크에 저장된 뱅크 제어 테이블의 바이트 수를 참조하여 상기 데이터를 분할하고, 상기 버퍼를 구성하는 방식을 참조하여 상기 분할된 데이터를 저장할 서브 뱅크와 슬롯을 상기 입력 메모리 뱅크에서 선택하여 차례대로 저장하는 것을 특징으로 하는 다수의 소프트웨어를 기반으로 하는 실시간 고속 데이터 병렬 처리 방법.
  8. 삭제
  9. 제7항에 있어서,
    상기 입력 메모리 뱅크의 각 서브 뱅크에는,
    상기 데이터 매니저가 상기 분할된 데이터를 저장할 슬롯을 선택하고, 상기 다수의 프로세서들이 상기 저장된 데이터를 읽을 슬롯을 선택하기 위한 정책이 설정되는 입력 슬롯 제어 테이블이 저장되며,
    상기 입력 슬롯 제어 테이블에 설정되는 정책은,
    상기 서브 뱅크 내 슬롯들로 구성되는 링 버퍼가 비어있는 상태인지를 나타내는 버퍼 엠티(Buffer Empty) 필드와, 상기 링 버퍼가 모두 채워진 상태인지를 나타내는 버퍼 풀(Buffer Full) 필드와, 상기 데이터 매니저가 상기 입력 메모리 뱅크에 상기 분할된 데이터를 저장할 때 사용할 슬롯 인덱스를 기록하는 라이트 인덱스(Write Index) 필드와, 상기 다수의 프로세서들이 슬롯에 저장된 데이터를 읽기 위한 슬롯 인덱스를 기록하는 리드 인덱스(Read Index) 필드를 포함하는 것을 특징으로 하는 실시간 고속 데이터 병렬 처리 방법.
  10. 제7항에 있어서,
    상기 출력 메모리 뱅크의 각 서브 뱅크에는,
    상기 다수의 프로세서들이 상기 처리된 데이터를 저장할 슬롯을 선택하고, 상기 데이터 매니저가 상기 다수의 프로세서들에 의해 저장된 데이터를 읽을 슬롯을 선택하기 위한 정책이 설정되는 출력 슬롯 제어 테이블이 저장되며,
    상기 출력 슬롯 제어 테이블에 설정되는 정책은,
    상기 서브 뱅크 내 슬롯들로 구성되는 링 버퍼가 비어있는 상태인지를 나타내는 버퍼 엠티(Buffer Empty) 필드와, 상기 링 버퍼가 모두 채워진 상태인지를 나타내는 버퍼 풀(Buffer Full) 필드와, 상기 데이터 매니저가 상기 입력 메모리 뱅크에 상기 분할된 데이터를 저장할 때 사용할 슬롯 인덱스를 기록하는 라이트 인덱스(Write Index) 필드와, 상기 다수의 프로세서들이 슬롯에 저장된 데이터를 읽기 위한 슬롯 인덱스를 기록하는 리드 인덱스(Read Index) 필드를 포함하는 것을 특징으로 하는 실시간 고속 데이터 병렬 처리 방법.
KR1020190019829A 2019-02-20 2019-02-20 실시간 고속 데이터 병렬 처리 장치 및 방법 KR102230669B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020190019829A KR102230669B1 (ko) 2019-02-20 2019-02-20 실시간 고속 데이터 병렬 처리 장치 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190019829A KR102230669B1 (ko) 2019-02-20 2019-02-20 실시간 고속 데이터 병렬 처리 장치 및 방법

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020180137969A Division KR101987076B1 (ko) 2018-11-12 2018-11-12 실시간 고속 데이터 병렬 처리 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20200054834A KR20200054834A (ko) 2020-05-20
KR102230669B1 true KR102230669B1 (ko) 2021-03-22

Family

ID=70919355

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190019829A KR102230669B1 (ko) 2019-02-20 2019-02-20 실시간 고속 데이터 병렬 처리 장치 및 방법

Country Status (1)

Country Link
KR (1) KR102230669B1 (ko)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100801630B1 (ko) 2007-06-15 2008-02-05 디비코 주식회사 멀티코어 프로세서를 이용한 분산 디코딩 처리 장치 및방법
KR101245994B1 (ko) 2012-08-31 2013-03-20 케이씨씨시큐리티주식회사 대용량 데이터의 분산 병렬 처리 시스템 및 방법
KR101487454B1 (ko) * 2014-06-17 2015-01-28 (주)이지스 Lod 영상 병렬처리방법
KR101987076B1 (ko) * 2018-11-12 2019-06-10 한화시스템(주) 실시간 고속 데이터 병렬 처리 장치 및 방법

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20140092135A (ko) * 2013-01-15 2014-07-23 한국전자통신연구원 빅 데이터를 위한 병렬 정렬 방법 및 장치

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100801630B1 (ko) 2007-06-15 2008-02-05 디비코 주식회사 멀티코어 프로세서를 이용한 분산 디코딩 처리 장치 및방법
KR101245994B1 (ko) 2012-08-31 2013-03-20 케이씨씨시큐리티주식회사 대용량 데이터의 분산 병렬 처리 시스템 및 방법
KR101487454B1 (ko) * 2014-06-17 2015-01-28 (주)이지스 Lod 영상 병렬처리방법
KR101987076B1 (ko) * 2018-11-12 2019-06-10 한화시스템(주) 실시간 고속 데이터 병렬 처리 장치 및 방법

Also Published As

Publication number Publication date
KR20200054834A (ko) 2020-05-20

Similar Documents

Publication Publication Date Title
EP3680778B1 (en) Storage media programming with adaptive write buffer release
US9582426B2 (en) Hardware managed compressed cache
US9529707B2 (en) Apparatus and method for reducing read-modify-write cycles by combining unaligned write commands
US5832308A (en) Apparatus for controlling data transfer between external interfaces through buffer memory using a FIFO, an empty signal, and a full signal
US20190332318A1 (en) Accelerating shared file checkpoint with local burst buffers
US20190129876A1 (en) Devices and methods for data storage management
US10678481B2 (en) Adaptive caching and dynamic delay scheduling for in-memory data analytics
US10374628B2 (en) In-place data compression with small working memory
US10860225B2 (en) Apparatus and method for routing access based on device load
US11226778B2 (en) Method, apparatus and computer program product for managing metadata migration
CN108139972B (zh) 用于管理硬件辅助数据压缩中的存储器碎片的方法和设备
US8930596B2 (en) Concurrent array-based queue
US20200285510A1 (en) High precision load distribution among processors
EP1631911B1 (en) Method and device for transferring data between a main memory and a storage device
US10346070B2 (en) Storage control apparatus and storage control method
KR101987076B1 (ko) 실시간 고속 데이터 병렬 처리 장치 및 방법
KR102230669B1 (ko) 실시간 고속 데이터 병렬 처리 장치 및 방법
US10261722B2 (en) Performing caching utilizing dispersed system buffers
US11029878B2 (en) Information processing system
US11675513B2 (en) Selectively shearing data when manipulating data during record processing
WO2019008715A1 (ja) データロードプログラム、データロード方法およびデータロード装置
US11474947B2 (en) Information processing apparatus and non-transitory computer-readable storage medium storing cache control program
US11055218B2 (en) Apparatus and methods for accelerating tasks during storage caching/tiering in a computing environment
US20240311039A1 (en) Memory system
CN117349075A (zh) 一种数据处理方法及相关设备

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant