KR102657482B1 - 전자 장치 및 이를 이용한 연산을 수행하기 위한 방법 - Google Patents

전자 장치 및 이를 이용한 연산을 수행하기 위한 방법 Download PDF

Info

Publication number
KR102657482B1
KR102657482B1 KR1020230086989A KR20230086989A KR102657482B1 KR 102657482 B1 KR102657482 B1 KR 102657482B1 KR 1020230086989 A KR1020230086989 A KR 1020230086989A KR 20230086989 A KR20230086989 A KR 20230086989A KR 102657482 B1 KR102657482 B1 KR 102657482B1
Authority
KR
South Korea
Prior art keywords
data value
buffer
electronic device
data
calculation formula
Prior art date
Application number
KR1020230086989A
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 KR1020230086989A priority Critical patent/KR102657482B1/ko
Application granted granted Critical
Publication of KR102657482B1 publication Critical patent/KR102657482B1/ko

Links

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/3824Operand accessing
    • G06F9/383Operand prefetching
    • G06F9/3832Value prediction for operands; operand history buffers
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30123Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3844Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 개시의 한 측면으로서, 전자 장치가 개시된다. 상기 장치는, 외부로부터 커맨드를 수신하기 위한 수신부; 제1 데이터 값을 저장하기 위한 제1 버퍼; 및 상기 커맨드에 응답하여, 상기 제1 버퍼로부터 상기 제1 데이터 값을 로딩하고 로딩된 상기 제1 데이터 값에 대해 소정의 계산식에 기초한 연산을 수행하기 위한 연산 엔진을 포함하고, 상기 제1 데이터 값은 이전에 상기 연산 엔진에 의해 상기 소정의 계산식에 기초한 연산을 수행하여 획득된 결과 데이터 값 또는 상기 소정의 계산식에 기초한 연산에 사용할 질의 데이터 값 중 적어도 하나이다.

Description

전자 장치 및 이를 이용한 연산을 수행하기 위한 방법{ELECTRONIC DEVICE AND METHOD FOR PERFORMING CALCULATION USING SAME}
본 개시는 코어를 거치지 않고 자체적으로 반복적인 연산 및 입출력을 수행하는 전자 장치 및 이를 이용한 연산을 수행하기 위한 방법에 관한 것이다.
동일한 연산을 반복하여 수행해야 할 경우, 미리 계산해서 저장해 둔 결과를 활용하여 중복 연산을 줄이는 방식을 메모이제이션(Memoization)이라고 한다.  메모이제이션은 다양한 분야에서 활용되는데, 그 대표적인 예가 동적 프로그래밍(Dynamic Programming)이다. 동적 프로그래밍은 복잡한 문제를 여러 개의 간단한 문제(하위 문제)로 나누어 연산하고, 그것을 결합하여 최종적인 문제를 풀이하는 것을 가리키는데, 이 때 하위 문제들의 답을 저장해놓고 같은 하위 문제가 나타나면 사전에 구해 놓은 답을 이용하게 된다.
스미스-워터맨(Smith-Waterman), 니들맨-분쉬(Needleman-Wunsch)와 같은 동적 프로그래밍 알고리즘은 DNA 시퀀스 정렬과 단백질 분류, 단백질 접기(protein folding) 등의 연산에 사용된다. 이러한 동적 프로그래밍 알고리즘은 서로 다르게 정렬된 검체들의 유전자 시퀀스 적합도를 점수화 방법을 통해 측정할 수 있다. 일례로, 스미스-워터맨 알고리즘은 결과의 정확도가 매우 높지만 다른 알고리즘에 비해 더 많은 컴퓨팅 리소스와 시간을 요한다. 즉, 스미스-워터만 알고리즘을 이용한 연산을 수행하게 되면 각각의 데이터를 계산할 때 이전에 계산한 결과값을 불러오고 계산 후 다시 저장해야 하므로, CPU와 같은 코어(Core)에서 수많은 데이터의 입출력과 연산을 코어에서 처리해야 한다는 상당한 워크 로드가 부과된다는 문제점이 존재한다. 이에, 코어에서 동적 프로그래밍 알고리즘에 필요한 반복 연산 및 입출력을 수행하는 대신, 이러한 워크 로드를 경감시킬 수 있는 수단에 대한 요구가 존재한다.
이에, 본 개시의 일 목적은, 기존에 코어가 수행해야 했던 데이터 입출력 및 연산에 대한 워크 로드를 완화할 수 있는 전자 장치 및 이를 이용한 연산 방법을 제공하는 것에 있다.
다만, 본 개시가 해결하고자 하는 과제는 이상에서 언급한 바로 제한되지 않으며, 언급되지는 않았으나 아래의 기재로부터 본 개시가 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있는 목적을 포함할 수 있다.
본 개시는 장치, 시스템, 방법 또는 판독 가능 저장 매체에 저장된 컴퓨터 프로그램을 포함한 다양한 방식으로 구현될 수 있다.
본 개시의 일 실시예에 따른 전자 장치는, 외부로부터 커맨드를 수신하기 위한 수신부; 제1 데이터 값을 저장하기 위한 제1 버퍼; 및 상기 커맨드에 응답하여, 상기 제1 버퍼로부터 상기 제1 데이터 값을 로딩하고 로딩된 상기 제1 데이터 값에 대해 소정의 계산식에 기초한 연산을 수행하기 위한 연산 엔진을 포함하고, 상기 제1 데이터 값은 이전에 상기 연산 엔진에 의해 상기 소정의 계산식에 기초한 연산을 수행하여 획득된 결과 데이터 값 또는 상기 소정의 계산식에 기초한 연산에 사용할 질의 데이터 값 중 적어도 하나이다.
전술한 전자 장치에 있어서, 상기 전자 장치 외부의 외부 메모리 장치로부터 제2 데이터 값을 수신하기 위한 제2 버퍼를 더 포함한다.
전술한 전자 장치에 있어서, 상기 제1 버퍼 및 상기 제2 버퍼는 SRAM이다.
전술한 전자 장치에 있어서, 상기 커맨드에 응답하여, 상기 제1 버퍼로부터 상기 제1 데이터 값을 로딩하는 것은 상기 제1 데이터 값을 이용한 상기 연산을 수행하기 제1 시간 사이클 이전에 이루어지며, 상기 제1 시간 사이클은 상기 제1 버퍼로부터 데이터를 로딩하는데 소요되는 지연 시간보다 길거나 같다.
전술한 전자 장치에 있어서, 상기 연산 엔진은, 상기 제1 데이터 값에 대한 상기 연산의 수행 결과 생성된 제1 결과 데이터 값을 상기 제1 버퍼에 저장한다.
전술한 전자 장치에 있어서, 상기 연산 엔진은, 상기 제1 데이터 값에 대한 상기 연산의 수행 결과 생성된 결과 데이터 값 중 일부를 외부 메모리 장치로 전송되도록 한다.
전술한 전자 장치에 있어서, 상기 전자 장치는 송신부를 더 포함하고, 상기 송신부는, 상기 결과 데이터 값 중 상기 일부를 상기 연산 엔진으로부터 수신하여 임시 저장하고 순차적으로 상기 외부 메모리 장치로 전송하기 위한 제3 버퍼를 포함한다.
전술한 전자 장치에 있어서, 상기 소정의 계산식은 스미스-워터만 알고리즘에 기반한 계산식이다.
전술한 전자 장치는 상기 제2 버퍼에 의해 수신할 데이터 값에 대한 요청을 상기 외부 메모리 장치로 전송한다.
전술한 전자 장치에 있어서, 상기 연산 엔진은 버퍼 관리 모듈을 더 포함하고, 상기 버퍼 관리 모듈은 상기 제1 버퍼에 로딩할 상기 제1 데이터 값을 최적화된 크기 및 개수로 결정한다.
본 개시의 일 실시예에 따른 전자 장치를 이용하여 연산을 수행하는 방법은, 상기 전자 장치의 외부로부터 커맨드를 수신하는 단계; 상기 커맨드에 응답하여, 상기 전자 장치 내의 제1 버퍼로부터 제1 데이터 값을 로딩하는 단계; 및 로딩된 상기 제1 데이터 값에 대해 소정의 계산식에 기초한 연산을 수행하는 단계 - 상기 제1 데이터 값은 이전에 동일한 상기 소정의 계산식에 기초한 연산을 수행하여 획득된 결과 데이터 값 또는 상기 소정의 계산식에 기초한 연산에 사용할 질의 데이터 값 중 적어도 하나임 - 를 포함한다.
전술한 방법은, 상기 전자 장치 외부의 외부 메모리 장치로부터 수신한 제2 데이터 값을 제2 버퍼로부터 로딩하는 단계를 더 포함하고, 상기 소정의 계산식에 기초한 연산은 상기 제1 데이터 값 및 상기 제2 데이터 값에 대해 수행된다.
전술한 방법에 있어서, 상기 제1 버퍼 및 상기 제2 버퍼는 SRAM이다.
전술한 방법에 있어서, 상기 커맨드에 응답하여, 상기 제1 버퍼로부터 상기 제1 데이터 값을 로딩하는 단계는 상기 제1 데이터 값을 이용한 상기 연산을 수행하기 제1 시간 사이클 이전에 수행되며, 상기 제1 시간 사이클은 상기 제1 버퍼로부터 데이터를 로딩하는데 소요되는 지연 시간보다 길거나 같다.
전술한 방법은, 상기 제1 데이터 값에 대한 상기 연산의 수행 결과 생성된 제1 결과 데이터 값을 상기 제1 버퍼에 저장하는 단계를 더 포함한다.
전술한 방법은, 상기 제1 데이터 값에 대한 상기 연산의 수행 결과 생성된 결과 데이터 값 중 일부를 외부 메모리 장치로 전송되도록 하는 단계를 더 포함한다.
전술한 방법은, 상기 제2 버퍼에 의해 수신할 데이터 값에 대한 요청을 상기 외부 메모리 장치로 전송하는 단계를 더 포함한다.
전술한 방법은, 상기 제1 버퍼에 로딩할 상기 제1 데이터 값을 최적화된 크기 및 개수로 결정하는 단계를 더 포함한다.
상기한 바와 같이, 본 개시에 의하면 이하와 같은 효과가 있다.
본 개시의 다양한 실시예들에 의하면, 전자 장치 내에 구비된 하나 이상의 버퍼를 통해 연산에 필요한 데이터를 로드하여 사용하므로, 기존에 코어가 수행해야 했던 데이터 입출력 및 연산에 대한 워크 로드를 완화할 수 있는 효과가 발생한다.
본 개시의 다양한 실시예들에 의하면, 연산에 필요한 데이터 값을 버퍼로부터 로딩할 때 소요되는 지연 시간을 고려하여 데이터 값을 미리 로딩하도록 전자 장치의 동작 파이프라인을 구축함으로써, 데이터 값의 로딩 지연에 따른 영향을 최소화할 수 있는 효과가 발생한다.
본 개시의 효과는 이상에서 언급한 효과로 제한되지 않으며, 언급되지 않은 다른 효과들은 청구범위의 기재로부터 본 개시가 속하는 기술분야에서 통상의 지식을 가진 자(이하, '통상의 기술자'라 함)에게 명확하게 이해될 수 있을 것이다.
본 명세서에 첨부되는 다음의 도면들은 본 개시의 바람직한 실시예를 예시하는 것이며, 발명의 상세한 설명과 함께 본 개시의 기술사상을 더욱 이해시키는 역할을 하는 것이므로, 본 개시는 그러한 도면에 기재된 사항에만 한정되어 해석되어서는 아니 된다.
도 1은 본 개시의 일 실시예에 따른 전자 장치에 포함되는 아키텍처를 개념적으로 도시한 블록도이다.
도 2a 내지 도 2e는 본 개시의 일 실시예에 따른 전자 장치를 이용한 연산의 수행 방법의 예시를 나타내는 개략도이다.
도 3은 본 개시의 일 실시예에 따른 전자 장치를 이용한 연산의 수행시 각 동작의 타이밍을 개략적으로 나타내는 도면이다.
도 4는 본 개시의 다른 실시예에 따른 전자 장치에 포함되는 아키텍처를 개념적으로 도시한 블록도이다.
도 5는 본 개시의 일 실시예에 따른 전자 장치를 이용한 연산 방법에 관한 순서도이다.
본 명세서에 기재된 다양한 실시예들은, 본 개시의 기술적 사상을 명확히 설명하기 위한 목적으로 예시된 것이며, 이를 특정한 실시 형태로 한정하려는 것이 아니다. 본 개시의 기술적 사상은, 본 명세서에 기재된 각 실시예의 다양한 변경(modifications), 균등물(equivalents), 대체물(alternatives) 및 각 실시예의 전부 또는 일부로부터 선택적으로 조합된 실시예를 포함한다. 또한 본 개시의 기술적 사상의 권리 범위는 이하에 제시되는 다양한 실시예들이나 이에 대한 구체적 설명으로 한정되지 않는다.
기술적이거나 과학적인 용어를 포함해서, 본 명세서에서 사용되는 용어들은, 달리 정의되지 않는 한, 본 개시가 속하는 기술 분야에서 통상의 지식을 가진 자에게 일반적으로 이해되는 의미를 가질 수 있다.
본 명세서에서 사용되는 "포함한다", "포함할 수 있다", "구비한다", "구비할 수 있다", "가진다", "가질 수 있다" 등과 같은 표현들은, 대상이 되는 특징(예: 기능, 동작 또는 구성요소 등)이 존재함을 의미하며, 다른 추가적인 특징의 존재를 배제하지 않는다. 즉, 이와 같은 표현들은 다른 실시예를 포함할 가능성을 내포하는 개방형 용어(open-ended terms)로 이해되어야 한다.
본 명세서에서의 단수의 표현은 문맥상 명백하게 단수인 것으로 특정하지 않는 한, 복수의 표현을 포함한다. 또한, 복수의 표현은 문맥상 명백하게 복수인 것으로 특정하지 않는 한, 단수의 표현을 포함한다. 명세서 전체에서 어떤 부분이 어떤 구성요소를 포함한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있음을 의미한다.
또한, 명세서에서 사용되는 '모듈' 또는 '부'라는 용어는 소프트웨어 또는 하드웨어 구성요소를 의미하며, '모듈' 또는 '부'는 어떤 역할들을 수행한다. 그렇지만, '모듈' 또는 '부'는 소프트웨어 또는 하드웨어에 한정되는 의미는 아니다. '모듈' 또는 '부'는 어드레싱할 수 있는 저장 매체에 있도록 구성될 수도 있고 하나 또는 그 이상의 프로세서들을 재생시키도록 구성될 수도 있다. 따라서, 일 예로서, '모듈' 또는 '부'는 소프트웨어 구성요소들, 객체지향 소프트웨어 구성요소들, 클래스 구성요소들 및 태스크 구성요소들과 같은 구성요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로 코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들 또는 변수들 중 적어도 하나를 포함할 수 있다. 구성요소들과 '모듈' 또는 '부'들은 안에서 제공되는 기능은 더 작은 수의 구성요소들 및 '모듈' 또는 '부'들로 결합되거나 추가적인 구성요소들과 '모듈' 또는 '부'들로 더 분리될 수 있다.
본 개시의 일 실시예에 따르면, '모듈' 또는 '부'는 프로세서 및 메모리로 구현될 수 있다. '프로세서'는 범용 프로세서, 중앙 처리 장치(CPU), 마이크로프로세서, 디지털 신호 프로세서(DSP), 제어기, 마이크로제어기, 상태 머신 등을 포함하도록 넓게 해석되어야 한다. 몇몇 환경에서, '프로세서'는 주문형 반도체(ASIC), 프로그램가능 로직 디바이스(PLD), 필드 프로그램가능 게이트 어레이(FPGA) 등을 지칭할 수도 있다. '프로세서'는, 예를 들어, DSP와 마이크로프로세서의 조합, 복수의 마이크로프로세서들의 조합, DSP 코어와 결합한 하나 이상의 마이크로프로세서들의 조합, 또는 임의의 다른 그러한 구성들의 조합과 같은 처리 디바이스들의 조합을 지칭할 수도 있다. 또한, '메모리'는 전자 정보를 저장 가능한 임의의 전자 컴포넌트를 포함하도록 넓게 해석되어야 한다. '메모리'는 임의 액세스 메모리(RAM), 판독-전용 메모리(ROM), 비-휘발성 임의 액세스 메모리(NVRAM), 프로그램가능 판독-전용 메모리(PROM), 소거-프로그램가능 판독 전용 메모리(EPROM), 전기적으로 소거가능 PROM(EEPROM), 플래쉬 메모리, 자기 또는 광학 데이터 저장장치, 레지스터들 등과 같은 프로세서-판독가능 매체의 다양한 유형들을 지칭할 수도 있다. 프로세서가 메모리로부터 정보를 판독하고/하거나 메모리에 정보를 기록할 수 있다면 메모리는 프로세서와 전자 통신 상태에 있다고 불린다. 프로세서에 집적된 메모리는 프로세서와 전자 통신 상태에 있다.
본 명세서에서 사용되는 "제1", "제2", 또는 "첫째", "둘째" 등의 표현은, 문맥상 다르게 뜻하지 않는 한, 복수의 동종 대상들을 지칭함에 있어 한 대상을 다른 대상과 구분하기 위해 사용되며, 해당 대상들간의 순서 또는 중요도를 한정하는 것은 아니다.
본 명세서에서 사용되는 "A, B, 및 C," "A, B, 또는 C," "A, B, 및/또는 C" 또는 "A, B, 및 C 중 적어도 하나," "A, B, 또는 C 중 적어도 하나," "A, B, 및/또는 C 중 적어도 하나," "A, B, 및 C 중에서 선택된 적어도 하나," "A, B, 또는 C 중에서 선택된 적어도 하나," "A, B, 및/또는 C 중에서 선택된 적어도 하나" 등의 표현은, 각각의 나열된 항목 또는 나열된 항목들의 가능한 모든 조합들을 의미할 수 있다. 예를 들어, "A 및 B 중에서 선택된 적어도 하나"는, (1) A, (2) A 중 적어도 하나, (3) B, (4) B 중 적어도 하나, (5) A 중 적어도 하나 및 B 중 적어도 하나, (6) A 중 적어도 하나 및 B, (7) B 중 적어도 하나 및 A, (8) A 및 B를 모두 지칭할 수 있다.
본 명세서에서 사용되는 "~에 기초하여"라는 표현은, 해당 표현이 포함되는 어구 또는 문장에서 기술되는, 결정, 판단의 행위 또는 동작에 영향을 주는 하나 이상의 인자를 기술하는데 사용되고, 이 표현은 해당 결정, 판단의 행위 또는 동작에 영향을 주는 추가적인 인자를 배제하지 않는다.
본 명세서에서 사용되는, 어떤 구성요소(예: 제1 구성요소)가 다른 구성요소(예: 제2 구성요소)에 "연결되어" 있다거나 "접속되어" 있다는 표현은, 상기 어떤 구성요소가 상기 다른 구성요소에 직접적으로 연결 또는 접속되는 것뿐 아니라, 새로운 다른 구성요소(예: 제3 구성요소)를 매개로 하여 연결 또는 접속되는 것을 의미할 수 있다.
본 명세서에서 사용된 표현 "~하도록 구성된(configured to)"은 문맥에 따라, "~하도록 설정된", "~하는 능력을 가지는", "~하도록 변경된", "~하도록 만들어진", "~를 할 수 있는" 등의 의미를 가질 수 있다. 해당 표현은, "하드웨어적으로 특별히 설계된"의 의미로 제한되지 않으며, 예를 들어 특정 동작을 수행하도록 구성된 프로세서란, 소프트웨어를 실행함으로써 그 특정 동작을 수행할 수 있는 범용 프로세서(generic-purpose processor)를 의미할 수 있다.
이하, 첨부된 도면들을 참조하여, 본 개시의 다양한 실시예들을 설명한다. 첨부된 도면 및 도면에 대한 설명에서, 동일하거나 실질적으로 동등한(substantially equivalent) 구성요소에는 동일한 참조부호가 부여될 수 있다. 또한, 이하 다양한 실시예들의 설명에 있어서, 동일하거나 대응하는 구성요소를 중복하여 기술하는 것이 생략될 수 있으나, 이는 해당 구성요소가 그 실시예에 포함되지 않는 것을 의미하지는 않는다.
도 1은 본 개시의 일 실시예에 따른 전자 장치에 포함되는 아키텍처를 개념적으로 도시한 블록도이다.
도 1을 참조하면, 본 개시의 일 실시예에 따른 전자 장치(1)는 외부로부터 버스(bus)를 통해 커맨드(CMD)를 수신하기 위한 수신부(10), 커맨드(CMD)에 응답하여 연산을 수행하기 위한 하나 이상의 프로그래밍 엔진(20), 및 하나 이상의 프로그래밍 엔진(20)에 의해 수행된 연산의 결과 데이터 값을 외부로 버스를 통해 송신하기 위한 송신부(30)를 포함할 수 있다. 본 개시에 따른 전자 장치는 수신부(10), 하나 이상의 프로그래밍 엔진(20), 송신부(30)를 갖는 아키텍처를 포함하는 컴포넌트(예: 시스템온칩(SoC), 임베디드 시스템, 메모리 장치 등)로서, 이러한 컴포넌트는 컴퓨팅 장치(예: 퍼스널 컴퓨터, 스마트폰, 태블릿, 랩탑 등)에 설치 가능한 것일 수 있으나, 그 형태에 대해 한정하지는 않는다.
도 1을 참조하면, 전자 장치(1)의 수신부(10)는 시스템 버스를 통해 코어(Core) 등의 전자 장치(1) 외부의 구성요소로부터 커맨드(CMD)를 수신할 수 있다. 코어는 컴퓨팅 시스템의 명령어를 처리하기 위한 논리회로로서 프로세서(processor)와 같은 의미로 사용될 수 있으며, 코어는 예를 들어 하나 이상의 CPU(Central Processing Unit)일 수 있다. 다만, 커맨드(CMD)는 코어 이외에 다른 구성 요소로부터 수신된 것일 수 있으며, 이에 대해 한정하지는 않는다. 커맨드(CMD)는 시스템 버스를 통해 전자 장치(1)의 수신부(10)에 의해 수신될 수 있다. 시스템 버스는 코어와 메모리 장치 사이, 또는 코어와 입출력 포트 사이에 상호 데이터를 송수신할 수 있는 규격화된 경로를 가리키며, 예컨대 데이터 버스(data bus)일 수 있다. 본 개시에 있어서, 코어 및 전자 장치(1) 사이, 및 전자 장치(1)와 외부 저장 장치(미도시) 사이 등은 시스템 버스를 통해 데이터 송수신이 이루어질 수 있다.
일 실시예에 따르면, 수신부(10)는 큐(queue)의 형태로 구성되어 순차적(예를 들어, FIFO 방식)으로 커맨드들을 처리할 수 있다. 이러한 커맨드는 특정 데이터에 대해 소정의 계산식에 기초한 연산을 수행하라는 명령일 수 있다. 일 실시예에 따르면, 이 때의 소정의 계산식은 동적 프로그래밍(DP)에서 해결하고자 하는 복잡한 문제를 풀이하기 위한 과정에서 사용되는 것으로, 예를 들어, 스미스-워터만 알고리즘 등에 기반한 계산식일 수 있다. 다만, 본 개시에 따른 소정의 계산식은 반복적으로 풀이되는 계산식을 가리키는 것으로, 동적 프로그래밍 알고리즘 이외에 다른 알고리즘과 연관된 것일 수 있으며, 이에 대해서 한정하지는 않는다.
일 실시예에 따르면, 수신부(10)는 전자 장치(1) 외부의 메모리 장치로부터 버스를 통해 제2 데이터 값을 수신하기 위한 제2 버퍼(15)를 포함할 수 있다. 제2 데이터 값은 코어로부터의 커맨드(CMD)에 응답하여 프로그래밍 엔진(20)에서 소정의 계산식에 기초한 연산을 수행할 때 필요한 것으로서 제1 버퍼(25)에 저장되어 있지 않은 데이터에 해당할 수 있다. 제2 데이터 값은 이전에 전자 장치(1)에 의해 외부로 전송되어 저장된 제2 결과 데이터 값, 및 연산에 사용할 참조 데이터 값 중 적어도 하나일 수 있다. 다만, 제2 데이터 값이 어떤 값인지는 전자 장치(1)의 설계에 따라 달라질 수 있으며 다양한 변형 예가 가능하다.
일 실시예에 따르면, 하나 이상의 프로그래밍 엔진(20)은 제1 데이터 값을 저장하기 위한 제1 버퍼(25)와, 수신부(10)로부터 전달받은 커맨드에 응답하여, 제1 버퍼(25)로부터 제1 데이터 값을 로딩하여 로딩된 제1 데이터 값에 대해 소정의 계산식에 기초한 연산을 수행하기 위한 연산 엔진(27)과, 연산 엔진(27)에서 직전에 연산한 결과 데이터 값 또는 제2 버퍼(15)로부터 로딩한 데이터 값을 저장하고 있는 레지스터(23)를 포함할 수 있다. 전술한 것처럼, 비록 도 1에서는 설명의 편의를 위해 프로그래밍 엔진(20)을 하나만 도시하였지만, 실제 디자인에 있어서 프로그래밍 엔진(20)은 복수 개가 구비될 수 있으며, 이 경우, 연산 엔진(27)도 각 프로그램 엔진(20)마다 하나씩 구비되게 된다.
일 실시예에 따르면, 제1 버퍼(25)에 저장되는 제1 데이터 값은 이전에 연산 엔진(27)에 의해 소정의 계산식에 기초한 연산을 수행하여 획득된 제1 결과 데이터 값 또는 연산에 사용할 질의 데이터 값 중 적어도 하나에 해당할 수 있다. 일 실시예에 따르면, 제1 버퍼(25)에 저장되는 제1 데이터 값은 각 연산의 개시 시에는 질의 데이터 값이고, 연산 과정에서 각 사이클마다 획득되는 제1 결과 데이터 값으로 갱신될 수 있다. 다만, 이에 대해 한정하지는 않는다.
또한, 일 실시예에 따르면, 연산 엔진(27)은 소정의 계산식에 기초한 연산을 수행하기 위해 제1 데이터 값 뿐만 아니라 제2 데이터 값이 필요한 경우, 제2 버퍼(15)로부터 제2 데이터 값을 로딩하여 연산을 수행할 수 있다. 또한, 연산 엔진(27)은 연산에서 획득된 직전의 최소 단위 결과 데이터 값이 필요한 경우 레지스터(23)로부터, 연산에서 획득된 직전된 제2 결과 데이터 값이 필요한 경우 제2 버퍼(15)로부터 이를 로딩하여 획득할 수 있다.
일 실시예에 따르면, 프로그래밍 엔진(20)에 포함된 레지스터(23)는 소정의 계산식에 기초한 연산에 필요한 최소 단위 결과 데이터 값을 저장하는 역할을 할 수 있다. 이러한 최소 단위 결과 데이터 값은 기본적으로 연산 엔진(27)의 직전 연산 결과로부터 획득될 수 있다. 그러나 스미스-워터만 알고리즘과 같은 매트릭스 연산에서 각 행별 연산의 시작시와 같이 직전 연산에 의해 획득된 최소 단위 결과 데이터 값이 존재하지 않는 경우에는 제2 버퍼(15)로부터 대응하는 최소 단위 데이터 값을 로딩하여 획득할 수 있다. 한편, 레지스터(23)에서 저장하는 최소 단위 결과 데이터 값은, 말 그대로 소정의 계산식에 기초한 연산에 있어서의 최소 단위의 연산에 의해 획득된 것일 수 있다. 이에 대해서는 도 2를 참조하여 자세히 후술한다.
또한, 본 개시의 일 실시예에 따르면, 프로그래밍 엔진(20)은 제1 데이터 값 및/또는 제2 데이터 값에 대해 소정의 계산식에 기초한 연산을 수행하여 획득된 제1 결과 데이터 값 및 제2 결과 데이터 값 중 일부는 외부 메모리 장치에 저장되도록 설정될 수 있다. 비제한적인 예시로써, 외부 메모리 장치에 저장되는 제1 결과 데이터 값 및 제2 결과 데이터 값은 각 연산 단위(예를 들어 행 연산 또는 열 연산)에서 마지막으로 획득된 결과 데이터 값일 수 있으나, 이에 대하여 한정하지는 않는다. 즉, 일 실시예에 따르면, 제1 버퍼(25) 및 제2 버퍼(15)의 용량에는 한계가 있어 모든 결과 데이터 값들을 재사용을 위해 저장할 수는 없으므로, 그 중 일부의 결과 데이터 값만을 외부 메모리 장치에 저장했다가 필요시 호출하여 제2 버퍼(15)를 통해 로딩하는 방식을 적용하므로, 전자 장치(1)의 외부에 위치한 외부 메모리 장치로부터 데이터를 쓰기(저장) 및 판독(로딩)하는 횟수를 줄이고 코어(Core)의 데이터 입출력에 대한 워크 로드도 경감할 수 있는 효과를 가진다.
일 실시예에 따르면, 결과 데이터 값을 외부 메모리 장치에 저장하는 과정은, 제1 결과 데이터 값 및/또는 제2 결과 데이터 값을 송신부(30)에 포함된 쓰기(Write) 버퍼인 제3 버퍼(35)에 임시 저장하고 순차적으로 제3 버퍼(35)로부터 외부 메모리 장치로 전송하는 것을 포함할 수 있다.
한편, 전술한 것처럼, 제2 버퍼(15)는 외부 메모리 장치로부터 필요한 데이터 값을 획득하는 작용을 하는데, 이를 위해, 일 실시예에 따르면, 프로그래밍 엔진(20)은 외부의 메모리 장치에 데이터 요청을 전송하고, 이에 대한 응답하여 수신부(10)는 데이터 요청에 대응하는 제2 데이터 값을 수신하여 제2 버퍼(15)에 저장하는 과정을 거칠 수 있다. 또는, 본 개시의 다른 실시예에 따르면, 프로그래밍 엔진(20)이 별도의 데이터 요청을 외부의 메모리 장치에 전송하지 않더라도 주기적으로 제2 버퍼(15)에 제2 데이터 값이 수신될 수 있다. 일례로, 소정의 계산식에 기초한 연산이 특정한 패턴을 가지는 경우, 이러한 패턴에 기초하여 외부 메모리 장치로부터 특정 데이터를 수신하도록 미리 설계될 수 있다.
비제한적인 예시에 따르면, 제1 버퍼(25) 및 제2 버퍼(15)는 SRAM(Static Random Access Memory)으로 구성될 수 있다. 다만, 설계에 따라 제1 버퍼(25) 및 제2 버퍼(15) 중 적어도 하나는 플립플랍(Flip-flop) 또는 다른 구성 요소로 구성될 수 있으며, 이에 대해 한정하지는 않는다.
전술한 것처럼, 스미스-워터만 알고리즘, 니들맨-분쉬 알고리즘과 같은 동적 프로그래밍 알고리즘은 DNA 시퀀스 정렬, 단백질 분류 등의 연산에 이용되는데, 기존의 방식에 따르면 각각의 데이터 값에 대해 연산을 수행할 때마다 이전에 계산한 결과 데이터 값을 불러와서 연산한 후 다시 저장해야 하므로, 코어(Core)에서 연산 수행시마다 데이터의 입출력과 연산을 동시에 처리해야 하는 경우에는 상당한 워크 로드가 부과되게 된다. 이에 비하여, 본 개시의 일 실시예에 따른 전자 장치(1)의 경우, 이전에 동일한 소정의 계산식에 기초하여 수행한 결과 데이터 값을 제1 버퍼(25) 및 제2 버퍼(15)를 통하여 내부 파이프라인을 통해 로딩할 수 있으므로, 기존에 코어가 가지고 있던 데이터 입출력 및 연산에 대한 워크 로드를 상당 부분 완화할 수 있는 효과를 가진다.
도 2a 내지 도 2e는 본 개시의 일 실시예에 따른 전자 장치를 이용한 연산의 수행 방법의 예시를 나타내는 개략도이다.
먼저, 도 2a를 참조하면, 스미스-워터만 알고리즘, 니들맨-분쉬 알고리즘과 같은 동적 프로그래밍 알고리즘은 DNA 시퀀스 정렬, 단백질 분류 등의 연산에 이용되는 경우, 질의 데이터(Nq)를 참조 데이터(Ns)와 비교하고 그 비교 결과를 스코어링하여 최적의 매칭 대상을 결정하는 연산을 수행하게 된다. 도 2a 내지 도 2e는 이러한 연산을 수행하는 경우의 가능한 예시를 나타낸 것으로, 제1 버퍼(25)로부터 로딩되는 제1 데이터 값(Nq1, Nq2, Nq3)은 질의 데이터(Nq)가 되고, 제2 버퍼(15)로부터 로딩되는 제2 데이터 값(Ns1, Ns2, Ns3)은 참조 데이터(Ns)가 될 수 있다.
이 때, 제1 버퍼(25)의 용량에는 제한이 있으므로, 질의 데이터(Nq)는 복수의 제1 데이터 값(Nq1, Nq2, Nq3)으로 분할될 수 있다. 또한 제2 버퍼(15) 역시 용량의 제한이 있으므로, 참조 데이터(Ns)는 복수의 제2 데이터 값(Ns1, Ns2, Ns3)으로 분할될 수 있다. 도 2a의 예에서는 질의 데이터 및 참조 데이터를 각각 3개의 데이터 값으로 분할하였지만 이는 예시적인 것일 뿐이다.
도 2a의 예시에서, x축 및 y축은 각각 12개의 최소 단위 데이터 값으로 구성된다. 제1 버퍼(25)로부터 로딩된 제1 데이터(Nq1) 및 제2 버퍼(15)로부터 로딩된 제2 데이터(Ns1)의 소정의 계산식에 기초한 최소 단위 연산에 의해 첫번째 최소 단위 결과 데이터 값(PD1)이 생성될 수 있다. 이 때, 제1 데이터(Nq1) 및 제2 데이터(Ns1) 이외에 레지스터(23)에 기저장된 최소 단위 결과 데이터 값(PD0)이 연산에 필요한 경우, 연산 엔진(27)은 레지스터(23)로부터 이 값(PDO)을 참조할 수 있다.
도 2b를 참조하면, 소정의 계산식에 기초한 최소 단위 연산이 행 단위로 x축 방향으로 수행될 수 있으며 이에 따라 제1 데이터 값(Nq1)에 대응하는 최소 단위 결과 데이터 값(PD1, PD2, PD3, PD4)이 생성될 수 있다. 이 때, 행 단위 연산의 마지막 최소 단위 결과 데이터 값(PD4)은 제3 버퍼(35)에 저장될 수 있다.
도 2c를 참조하면, 도 2b에서 수행된 행 단위 연산의 최소 단위 결과 데이터 값(PD1, PD2, PD3, PD4)들의 세트는 제1 데이터 값(Nq1)에 대한 행 단위 연산 결과인 제1 결과 데이터 값(x1)이 될 수 있으며, 이러한 제1 결과 데이터 값(x1)은 제1 버퍼(25)에 저장되어 기존의 제1 데이터(Nq1)를 대체할 수 있다.
도 2d를 참조하면, 도 2c에서 제1 결과 데이터 값을 생성하는 과정이 반복되어 각 행에 대해 행 단위 연산 결과인 제1 결과 데이터 값(x1, x2, ..., x12)들이 순차적으로 생성될 수 있다. 그리고 이러한 과정에서, 각 행에 대한 제1 결과 데이터 값 중 마지막 최소 단위 결과 데이터 값은 도 2b에 도시된 것처럼 제3 버퍼(35)에 저장될 수 있으며, 큐에 의해 순차적으로 제3 버퍼(35)에 의해 외부 메모리 장치로 전송될 수 있다.
도 2e를 참조하면, 질의 데이터(Nq)를 분할한 제1 데이터(Nq1)에 대한 행 단위 연산이 모두 완료되면, 연산 엔진(27)은 제1 버퍼(25)로부터 후속 연산을 수행할 제1 데이터(Nq2)를 로딩할 수 있다. 그리고, 연산 엔진(27)은 제2 버퍼(15)로부터 제2 결과 데이터(y1)를 로딩할 수 있다. 제2 결과 데이터(y1)는 연산 수행 이전에 외부 메모리 장치로부터 제2 버퍼(15)로 전송되어 저장될 수 있다. 그리고, 도 2a 내지 도 2d에서 설명한 것과 같은 소정의 계산식에 기초한 행 단위 연산(및 최소 단위 연산)이 수행될 수 있다.
일 실시예에 따르면, 궁극적으로는 질의 데이터(Nq) 및 참조 데이터(Ns) 전체에 대해 도 2a 내지 도 2e에서 설명한 것과 같은 연산이 수행될 수 있다. 다만, 도 2a 내지 도 2e와 관련하여 전술한 것과 같은 전자 장치를 이용한 연산의 수행 방법은 예시적인 것으로, 코어로부터 수신한 커맨드에 기초하여 전자 장치에 자체적으로 구비된 하나 이상의 버퍼에 저장된 데이터 값을 활용하여 반복적인 연산을 수행한다는 점을 이용한 다양한 변형예가 존재할 수 있음은 본 기술 분야의 통상의 기술자에게 자명한 것이다.
도 3은 본 개시의 일 실시예에 따른 전자 장치를 이용한 연산의 수행시 각 동작의 타이밍을 개략적으로 나타내는 도면이다.
도 3을 참조하면, 제1 버퍼(25)(및 제2 버퍼(15))가 SRAM인 경우에, SRAM에서 데이터 값을 판독 및 로딩하는 것에 지연 시간(예를 들어, 1 사이클 지연(one cycle delay))이 발생할 수 있다. 따라서, 이러한 SRAM의 특성을 고려하여 프로그래밍 엔진은 제1 버퍼(25)(및 제2 버퍼(15))로부터 데이터 값을 지연 시간을 고려하여 연산을 수행하기 이전에 미리 로딩할 수 있다.
비제한적인 예시로써, 도 3의 예에서는, 프로그래밍 엔진(20)에서 커맨드에 응답하여 제1 버퍼(25)로부터 제1 데이터 값을 로딩하라는 요청(RE1)을 제1 시간 사이클(t1)에 수행할 수 있다. 이후 실제 제1 데이터 값이 로딩되어 연산 엔진(27)에 의해 판독되는 것은 제1 시간 사이클(t1) 다음의 시간 사이클인 제2 시간 사이클(t2)에 이루어질 수 있으며 로딩된 제1 데이터 값을 이용한 연산(CAL1)도 제2 시간 사이클(t2)에 수행될 수 있다. 또한, 연산의 결과 획득된 제3 데이터 값에 대한 기록 요청(WE1)도 제2 시간 사이클(t2)에 수행될 수 있다. 그 다음, 제1 데이터 값의 판독(RE2, RE3), 연산(CAL2, CAL3), 기록(WE2, WE3) 등도 마찬가지의 동작 타이밍에 따라 수행될 수 있다.
이처럼, 본 개시의 일 실시예에 따르면, 프로그래밍 엔진(20)에서 커맨드에 응답하여, 제1 버퍼(25)(및 제2 버퍼(15))로부터 데이터 값을 로딩하는 것은, 데이터 값을 이용한 연산을 수행하기 이전, 예를 들어, 제1 시간 사이클 이전에 이루어질 수 있으며, 이 때의 제1 시간 사이클은 제1 버퍼로부터 데이터 값을 로딩하는데 소요되는 지연 시간에 대응하거나 그보다 긴 시간에 해당할 수 있다.
이와 같이 연산에 필요한 데이터 값을 버퍼로부터 로딩할 때 소요되는 지연 시간을 고려하여 데이터 값을 미리 로딩하도록 전자 장치의 동작 파이프라인을 구축함으로써, 데이터 값의 로딩 지연에 따른 영향을 최소화할 수 있는 현저한 효과가 발생한다.
도 4는 본 개시의 다른 실시예에 따른 전자 장치에 포함되는 아키텍처를 개념적으로 도시한 블록도이다.
도 4를 참조하면, 본 개시의 일 실시예에 따른 전자 장치(1B)는 도 1의 전자 장치(1)와 마찬가지로, 외부로부터 버스(bus)를 통해 커맨드(CMD)를 수신하기 위한 수신부(10), 커맨드(CMD)에 응답하여 연산을 수행하기 위한 프로그래밍 엔진(20b), 및 프로그래밍 엔진(20)에 의해 수행된 연산의 결과 데이터 값을 외부로 버스를 통해 송신하기 위한 송신부(30)를 포함할 수 있다.
도 4에 따른 전자 장치(1B)는 도 1에 따른 전자 장치(1)와 비교했을 때, 프로그래밍 엔진(20b)의 연산 엔진(27b)의 구성 면에서 차이를 가진다는 점 이외에 다른 부분은 동일하므로 중복되는 설명은 생략하도록 한다.
도 4의 실시예에 따르면, 프로그래밍 엔진(20b)의 연산 엔진(27b)은 버퍼 관리 모듈(29)을 포함할 수 있다. 버퍼 관리 모듈(29)은 소정의 계산식에 기초한 연산을 최적화하기 위해 제1 버퍼(25) 및 제2 버퍼(15) 중 적어도 하나로부터 각각 로딩할 데이터 값의 크기 및 개수를 결정할 수 있다. 이를 위해, 버퍼 관리 모듈(29)은 각 버퍼의 크기, 소정의 계산식의 복잡도 및 패턴, 버퍼에 저장해야 할 데이터 값의 생성 빈도 및 크기, 외부 메모리 장치의 크기와 같은 요소들을 고려할 수 있다.
구체적으로, 도 2의 예를 다시 참조하면, 전술한 것처럼 제1 버퍼(25)의 용량에는 제한이 있으므로, 질의 데이터(Nq)는 복수의 제1 데이터(Nq1, Nq2, Nq3)로 분할될 수 있다. 일 실시예에 따르면, 이러한 분할은 연산 엔진(27)의 버퍼 관리 모듈(29)에 의해 수행될 수 있다. 버퍼 관리 모듈(29)은 제1 버퍼(25)의 용량, 제1 데이터 및 연산 과정에서 생성될 제1 결과 데이터의 생성 빈도 및 크기, 소정의 계산식의 복잡도 및 패턴, 외부 메모리 장치의 크기 중 적어도 하나를 고려하여 질의 데이터를 몇 개의 제1 데이터로 분할할지 결정할 수 있다. 또한 제2 버퍼(15) 역시 용량의 제한이 있으므로, 참조 데이터(Ns)는 복수의 제2 데이터(Ns1, Ns2, Ns3)로 분할될 수 있는데, 이러한 분할도 제2 버퍼(15)의 용량, 각 연산시 필요한 제2 데이터의 빈도 및 크기, 소정의 계산식의 복잡도 및 패턴, 외부 메모리 장치의 크기 중 적어도 하나를 고려하여 버퍼 관리 모듈(29)에 의해 최적화하여 수행될 수 있다.
한편, 본 개시의 다른 실시예에 따르면, 버퍼 관리 모듈(29)은 제1 버퍼(25) 및 제2 버퍼(15) 중 적어도 하나로부터 각각 로딩할 최적화된 데이터 값의 크기 및 개수를 결정하기 위해 인공 신경망 모듈을 이용할 수 있다. 인공 신경망 모듈은 다량의 사전 학습용 데이터를 이용한 학습을 통해 다양한 계산식의 연산에 있어서 각 버퍼의 최적의 데이터 값의 크기 및 개수를 결정하도록 학습된 것일 수 있다. 인공 신경망 모듈은 예를 들어 Transformer, LSTM(Long-Short Term Memory), RNN(Recurrent Neural Network), CNN(Convolution Neural Network), GAN(Generative Adversarial Network), AE(AutoEncoder) 등의 인공 신경망 모듈 중 적어도 하나를 포함하거나, 다층 퍼셉트론(Multi-layer perceptron), 나이브 베이지안 분류(Naive-Bayesian Classification), 랜덤 포레스트 분류(Random Forest Classification) 등의 기계 학습 모델이 이용될 수도 있다. 인공 신경망 모듈의 구체적인 적용에 대해서는 다양한 변형이 가능하므로, 이에 대해서 자세히 설명하지는 않는다.
도 5는 본 개시의 일 실시예에 따른 전자 장치를 이용한 연산 방법에 관한 순서도이다.
도 5를 참조하면, 본 개시의 예시적인 실시예들에 따른 전자 장치를 이용하여 연산을 수행하는 방법(100)이 예시된다.
먼저, 단계 S10에서는, 전자 장치 외부로부터 버스를 통해 커맨드를 수신할 수 있다. 이 때의 커맨드는 코어(Core)로부터 수신된 것일 수 있다. 이러한 커맨드는 특정 데이터에 대해 소정의 계산식에 기초한 연산을 수행하라는 명령일 수 있다. 일 실시예에 따르면, 이 때의 소정의 계산식은 동적 프로그래밍(DP)에서 해결하고자 하는 복잡한 문제를 풀이하기 위한 과정에서 사용되는 것으로, 예를 들어, 스미스-워터만 알고리즘 등에 기반한 계산식일 수 있다.
단계 S20에서는, 단계 S10에서 수신한 커맨드에 응답하여 전자 장치 내의 제1 버퍼로부터 제1 데이터 값을 로딩할 수 있다. 이 때의 제1 데이터 값은 제1 데이터 값은 이전에 연산 엔진(27)에 의해 소정의 계산식에 기초한 연산을 수행하여 획득된 제1 결과 데이터 값 또는 연산에 사용할 질의 데이터 값 중 적어도 하나에 해당할 수 있다.
또한, 제1 버퍼에 로딩할 제1 데이터 값을 최적화된 크기 및 개수로 결정하는 과정이 사전에 이루어질 수 있다. 이러한 과정에 대해서는 도 4와 관련하여 전술한 바 있으므로 중복 설명은 생략한다.
한편, 제1 버퍼가 SRAM인 경우에, SRAM에서 제1 데이터 값을 판독 및 로딩하는 것에 지연 시간(즉, 제1 시간 사이클의 지연)이 발생할 수 있다. 따라서, 이러한 SRAM의 특성을 고려하여 제1 버퍼로부터 제1 데이터 값을 지연 시간을 고려하여 미리 로딩할 수 있다. 이 때의 제1 시간 사이클은 제1 버퍼로부터 데이터를 로딩하는데 소요되는 지연 시간보다 길거나 같을 수 있다.
단계 S30에서는, 로딩된 제1 데이터 값에 대해 소정의 계산식에 기초한 연산을 수행할 수 있다.
또한, 필요시에는, 연산에 필요한 제2 데이터 값이 전자 장치 외부의 외부 메모리 장치로부터 수신되어 제2 버퍼(15)에 저장되어 있는 경우 제2 데이터 값을 제2 버퍼(15)로부터 로딩하여 획득할 수 있으며, 이 경우 소정의 계산식에 기초한 연산은 제1 데이터 값 및 제2 데이터 값에 대해 수행될 수 있다. 또한, 제2 버퍼에 의해 수신할 데이터 값에 대한 요청을 외부 메모리 장치 또는 코어 중 적어도 하나로 전송함으로써 연산에 필요한 데이터 값(즉, 제2 데이터 값)을 확보할 수 있다.
단계 S40에서는, 제1 데이터 값에 대해 소정의 계산식에 기초한 연산에서 획득된 결과 데이터 값 중 일부를 외부 메모리 장치로 전송하여 외부 메모리 장치에 저장되도록 할 수 있다. 외부 메모리 장치에 저장된 결과 데이터 값은 추후 필요시 제2 버퍼(15)로 불러와 연산에 사용할 수 있다.
본 개시에 따른 방법들은 컴퓨터로 구현된 방법들일 수 있다. 본 개시에서, 해당 방법들의 각 단계가 소정의 순서대로 도시되고 설명되었지만, 각 단계들은 순차적으로 수행되는 것 이외에, 본 개시에 따라 임의로 조합될 수 있는 순서로 수행될 수도 있다. 일 실시예에서, 적어도 일부의 단계가 병렬적, 반복적 또는 휴리스틱하게 수행될 수 있다. 본 개시는 해당 방법들에 변화 또는 수정을 가하는 것을 제외하지 않는다. 일 실시예에서, 적어도 일부의 단계가 생략되거나, 다른 단계가 추가될 수 있다.
본 개시의 다양한 실시예들은 기기(machine)가 읽을 수 있는 기록 매체(machine-readable recording medium)에 기록된 소프트웨어로 구현될 수 있다. 소프트웨어는 상술한 본 개시의 다양한 실시예들을 구현하기 위한 소프트웨어일 수 있다. 소프트웨어는 본 개시가 속하는 기술분야의 프로그래머들에 의해 본 개시의 다양한 실시예들로부터 추론될 수 있다. 예를 들어 소프트웨어는 기기가 읽을 수 있는 명령(예: 코드 또는 코드 세그먼트) 또는 프로그램일 수 있다. 기기는 기록 매체로부터 호출된 명령어에 따라 동작이 가능한 장치로서, 예를 들어 컴퓨터일 수 있다. 일 실시예에서, 기기는 본 개시의 실시예들에 따른 하드웨어 아키텍처(100)를 포함하는 전자 장치일 수 있다. 일 실시예에서, 기기의 프로세서는 호출된 명령을 실행하여, 기기의 구성요소들이 해당 명령에 해당하는 기능을 수행하게 할 수 있다. 기록 매체는 기기에 의해 읽혀질 수 있는, 데이터가 저장되는 모든 종류의 기록 매체(recording medium)를 의미할 수 있다. 기록 매체는, 예를 들어 ROM, RAM, CD-ROM, 자기 테이프, 플로피 디스크, 광 데이터 저장 장치 등을 포함할 수 있다. 일 실시예에서, 기록 매체는 네트워크로 연결된 컴퓨터 시스템 등에 분산된 형태로서 구현될 수도 있다. 소프트웨어는 컴퓨터 시스템 등에 분산되어 저장되고, 실행될 수 있다. 기록 매체는 비일시적(non-transitory) 기록 매체일 수 있다. 비일시적 기록 매체는, 데이터가 반영구적 또는 임시적으로 저장되는 것과 무관하게 실재하는 매체(tangible medium)를 의미하며, 일시적(transitory)으로 전파되는 신호(signal)를 포함하지 않는다.
이상 다양한 실시예들에 의해 본 개시의 기술적 사상이 설명되었지만, 본 개시의 기술적 사상은 본 개시가 속하는 기술 분야에서 통상의 지식을 가진 자가 이해할 수 있는 범위에서 이루어질 수 있는 다양한 치환, 변형 및 변경을 포함한다. 또한, 그러한 치환, 변형 및 변경은 첨부된 청구범위 내에 포함될 수 있는 것으로 이해되어야 한다. 본 개시에 따른 실시예들은 서로 조합될 수 있다. 각 실시예들은 경우의 수에 따라 다양하게 조합될 수 있으며, 조합되어 만들어진 실시예 역시 본 개시의 범위에 속한다.

Claims (18)

  1. 전자 장치로서,
    외부로부터 커맨드를 수신하기 위한 수신부;
    제1 데이터 값을 저장하기 위한 제1 버퍼;
    제2 데이터 값을 저장하기 위한 제2 버퍼;
    상기 커맨드에 응답하여, 상기 제1 버퍼로부터 상기 제1 데이터 값을 로딩하고 상기 제2 버퍼로부터 상기 제2 데이터 값을 로딩하고 로딩된 상기 제1 데이터 값 및 상기 제2 데이터 값에 대해 소정의 계산식에 기초한 연산을 수행하여 결과 데이터 값을 생성하기 위한 연산 엔진;
    상기 결과 데이터 값 중 일부를 상기 연산 엔진으로부터 수신하여 임시 저장하고 순차적으로 외부 메모리 장치로 전송하기 위한 제3 버퍼를 포함하는 송신부; 및
    상기 연산에 의해 얻어진 직전의 최소 단위 결과 데이터 값을 저장하기 위한 레지스터
    를 포함하고,
    상기 제1 데이터 값은 이전에 상기 연산 엔진에 의해 상기 소정의 계산식에 기초한 연산을 수행하여 획득된 결과 데이터 값 또는 상기 소정의 계산식에 기초한 연산에 사용할 질의 데이터 값 중 적어도 하나이고,
    상기 제2 데이터 값은 상기 외부 메모리 장치에 저장된 상기 결과 데이터 값 중 상기 일부로서, 상기 제2 버퍼에 의해 수신할 데이터 값에 대한 요청을 상기 외부 메모리 장치로 전송하여 획득된 것을 포함하고,
    상기 커맨드에 응답하여, 상기 제1 버퍼로부터 상기 제1 데이터 값을 로딩하고 상기 제2 버퍼로부터 상기 제2 데이터 값을 로딩하는 것은 상기 제1 데이터 값 및 상기 제2 데이터 값을 이용한 상기 연산을 수행하기 제1 시간 사이클 이전에 이루어지며, 상기 제1 시간 사이클은 상기 제1 버퍼 및 상기 제2 버퍼로부터 데이터를 로딩하는데 소요되는 지연 시간보다 길거나 같은
    전자 장치.
  2. 삭제
  3. 제1항에 있어서,
    상기 제1 버퍼 및 상기 제2 버퍼는 SRAM인
    전자 장치.
  4. 삭제
  5. 삭제
  6. 삭제
  7. 삭제
  8. 제1항에 있어서,
    상기 소정의 계산식은 스미스-워터만 알고리즘에 기반한 계산식인
    전자 장치.
  9. 삭제
  10. 제1항에 있어서,
    상기 연산 엔진은 버퍼 관리 모듈을 더 포함하고,
    상기 버퍼 관리 모듈은 상기 제1 버퍼에 로딩할 상기 제1 데이터 값의 크기 및 개수를 결정하는
    전자 장치.
  11. 전자 장치를 이용하여 연산을 수행하는 방법으로써,
    상기 전자 장치의 외부로부터 커맨드를 수신하는 단계;
    상기 커맨드에 응답하여, 상기 전자 장치 내의 제1 버퍼로부터 제1 데이터 값을 로딩하고, 상기 전자 장치 내의 제2 버퍼로부터 제2 데이터 값을 로딩하는 단계;
    로딩된 상기 제1 데이터 값 및 상기 제2 데이터 값에 대해 소정의 계산식에 기초한 연산을 수행하여 결과 데이터 값을 생성하는 단계 - 상기 제1 데이터 값은 이전에 동일한 상기 소정의 계산식에 기초한 연산을 수행하여 획득된 결과 데이터 값 또는 상기 소정의 계산식에 기초한 연산에 사용할 질의 데이터 값 중 적어도 하나임 - ; 및
    상기 결과 데이터 값 중 일부를 상기 전자 장치 내의 제3 버퍼에 임시 저장하는 단계 - 상기 제3 버퍼에 임시 저장된 상기 결과 데이터 값 중 상기 일부는 순차적으로 외부 메모리 장치로 전송됨 - ; 및
    상기 연산에 의해 얻어진 직전의 최소 단위 결과 데이터 값을 저장하는 단계
    를 포함하고,
    상기 제2 데이터 값은 상기 외부 메모리 장치에 저장된 상기 결과 데이터 값 중 상기 일부로서, 상기 제2 버퍼에 의해 수신할 데이터 값에 대한 요청을 상기 외부 메모리 장치로 전송하여 획득된 것을 포함하고,
    상기 커맨드에 응답하여, 상기 제1 버퍼로부터 상기 제1 데이터 값을 로딩하고 상기 제2 버퍼로부터 상기 제2 데이터 값을 로딩하는 것은 상기 제1 데이터 값 및 상기 제2 데이터 값을 이용한 상기 연산을 수행하기 제1 시간 사이클 이전에 이루어지며, 상기 제1 시간 사이클은 상기 제1 버퍼 및 상기 제2 버퍼로부터 데이터를 로딩하는데 소요되는 지연 시간보다 길거나 같은
    전자 장치를 이용한 연산 방법.
  12. 삭제
  13. 제11항에 있어서,
    상기 제1 버퍼 및 상기 제2 버퍼는 SRAM인
    전자 장치를 이용한 연산 방법.
  14. 삭제
  15. 삭제
  16. 삭제
  17. 삭제
  18. 제11항에 있어서,
    상기 방법은,
    상기 제1 버퍼에 로딩할 상기 제1 데이터 값의 크기 및 개수를 결정하는 단계를 더 포함하는
    전자 장치를 이용한 연산 방법.
KR1020230086989A 2023-07-05 2023-07-05 전자 장치 및 이를 이용한 연산을 수행하기 위한 방법 KR102657482B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020230086989A KR102657482B1 (ko) 2023-07-05 2023-07-05 전자 장치 및 이를 이용한 연산을 수행하기 위한 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020230086989A KR102657482B1 (ko) 2023-07-05 2023-07-05 전자 장치 및 이를 이용한 연산을 수행하기 위한 방법

Publications (1)

Publication Number Publication Date
KR102657482B1 true KR102657482B1 (ko) 2024-04-15

Family

ID=90715600

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020230086989A KR102657482B1 (ko) 2023-07-05 2023-07-05 전자 장치 및 이를 이용한 연산을 수행하기 위한 방법

Country Status (1)

Country Link
KR (1) KR102657482B1 (ko)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190015368A (ko) * 2016-06-07 2019-02-13 일루미나, 인코포레이티드 2차 및/또는 3차 프로세싱을 수행하기 위한 생물정보학 시스템, 장치, 및 방법
US20190197019A1 (en) * 2017-12-22 2019-06-27 Intel Corporation Systolic array of pipelined processing engines for implementing dynamic programming algorithms

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190015368A (ko) * 2016-06-07 2019-02-13 일루미나, 인코포레이티드 2차 및/또는 3차 프로세싱을 수행하기 위한 생물정보학 시스템, 장치, 및 방법
US20190197019A1 (en) * 2017-12-22 2019-06-27 Intel Corporation Systolic array of pipelined processing engines for implementing dynamic programming algorithms

Similar Documents

Publication Publication Date Title
US10592241B2 (en) Apparatus and methods for matrix multiplication
US11704538B2 (en) Data processing method and device
US11768911B2 (en) Method and apparatus for execution of neural network
US20200301739A1 (en) Maximizing resource utilization of neural network computing system
US20210089873A1 (en) Apparatus and system for execution of neural network
CN110837483B (zh) 张量维度变换的方法以及装置
US20130247058A1 (en) System for scheduling the execution of tasks based on logical time vectors
KR102657482B1 (ko) 전자 장치 및 이를 이용한 연산을 수행하기 위한 방법
US5253349A (en) Decreasing processing time for type 1 dyadic instructions
US10101999B2 (en) Memory address collision detection of ordered parallel threads with bloom filters
US11113140B2 (en) Detecting error in executing computation graph on heterogeneous computing devices
US8990741B2 (en) Circuit design support device, circuit design support method and program
US11436486B2 (en) Neural network internal data fast access memory buffer
US20230161835A1 (en) Matrix operation method and accelerator
US7966593B1 (en) Integrated circuit design system, method, and computer program product that takes into account the stability of various design signals
US20130031520A1 (en) Functional verification system for semiconductor integrated circuit, and functional verification method for semiconductor integrated circuit
US20100161866A1 (en) Logic controller having hard-coded control logic and programmable override control store entries
US20230126594A1 (en) Instruction generating method, arithmetic processing device, and instruction generating device
CN113688089B (zh) 数据处理方法、计算***和计算机存储介质
KR102606224B1 (ko) 프로세스 간 통신을 지원하기 위한 하드웨어 아키텍처를 포함하는 전자 장치 및 프로세스 간 통신을 수행하는 방법
US20220357948A1 (en) System and method for configurable and distributed processing for quantum control
KR102631214B1 (ko) 대규모 언어 모델 추론을 가속화하기 위한 효율적인 데이터 포워딩 방법 및 시스템
US20230131430A1 (en) Compiler device, instruction generation method, program, compiling method, and compiler program
JP7350488B2 (ja) 周辺装置制御システム、および周辺装置制御方法
US20220405581A1 (en) Neural network optimization system, neural network optimization method, and electronic device

Legal Events

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