KR101984635B1 - 어플리케이션을 고속으로 처리하는 연산 처리 장치 및 방법 - Google Patents

어플리케이션을 고속으로 처리하는 연산 처리 장치 및 방법 Download PDF

Info

Publication number
KR101984635B1
KR101984635B1 KR1020120078847A KR20120078847A KR101984635B1 KR 101984635 B1 KR101984635 B1 KR 101984635B1 KR 1020120078847 A KR1020120078847 A KR 1020120078847A KR 20120078847 A KR20120078847 A KR 20120078847A KR 101984635 B1 KR101984635 B1 KR 101984635B1
Authority
KR
South Korea
Prior art keywords
application
processing
communication channel
information
buffer
Prior art date
Application number
KR1020120078847A
Other languages
English (en)
Other versions
KR20140012320A (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 KR1020120078847A priority Critical patent/KR101984635B1/ko
Priority to JP2013148332A priority patent/JP6433645B2/ja
Priority to US13/945,267 priority patent/US9471309B2/en
Priority to EP13177168.5A priority patent/EP2687985A3/en
Priority to CN201310306144.5A priority patent/CN103577254B/zh
Publication of KR20140012320A publication Critical patent/KR20140012320A/ko
Application granted granted Critical
Publication of KR101984635B1 publication Critical patent/KR101984635B1/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/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • 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/3001Arithmetic instructions
    • 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
    • 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/3889Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
    • 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/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • 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/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Advance Control (AREA)
  • Multi Processors (AREA)

Abstract

어플리케이션을 고속으로 처리하는 연산 처리 장치 및 방법이 제공된다. 연산 처리 장치는, 어플리케이션 코드를 실행하여 어플리케이션 연산에 필요한 연산 처리 정보를 통신 채널에 저장하는 프로그램 제어부, 통신 채널에 저장된 연산 처리 정보를 이용하여 어플리케이션 연산을 처리하는 연산 처리부를 포함할 수 있다.

Description

어플리케이션을 고속으로 처리하는 연산 처리 장치 및 방법{ARITHMETIC PROCESSING APPARATUS AND METHOD FOR HIGH SPEED PROCESSING TO APPLICATION}
아래의 설명은 어플리케이션을 고속으로 처리하는 연산 처리 장치 및 방법에 관한 것으로, 보다 구체적으로는 어플리케이션을 구동을 위해 필요한 어플리케이션 코드와 어플리케이션 연산을 병렬로 처리함에 따라 신속하게 어플리케이션을 실행하는 장치 및 방법에 관한 것이다.
고성능 프로세서(Processor), DSP(Digital Signal Processor), GPU(Graphic Processing Unit) 등의 처리 장치는, 알고리즘 연산을 고속으로 처리하는 특정 연산 장치를 이용하여 연산 처리를 가속화한다. 예를 들어, 특정 연산 장치는 SIMD(Single Instruction Multiple Data) 및 MIMD(Multiple Data), 하드웨어 가속기 등을 포함할 수 있다. 여기서, SIMD는 하나의 명령어로 여러 개의 데이터를 처리하는 병렬 컴퓨팅 기술이고, MIMD는 복수의 명령어로 여러 개의 데이터를 처리하는 병렬 컴퓨팅 기술이다.
이처럼, SIMD, MIMD 등을 이용하는 경우, 프로그램 제어 장치와 특정 연산 장치가 서로 교차 실행하여 어플리케이션 연산을 처리한다.
그러면, 프로그램 제어 장치는, 특정 연산 장치에서 연산을 처리하는 동안 유휴 상태(idle state)를 유지하여 어플리케이션의 실행에 지연(delay)이 발생할 수 있다. 마찬가지로, 특정 연산 장치는 프로그램 제어 장치에서 어플리케이션 연산 또는 어플리케이션 코드를 실행하는 동안 유휴 상태를 유지하여 어플리케이션의 실행에 지연이 발생할 수 있다.
그리고, 프로그램 제어 장치와 특정 연산 장치가 유휴 상태를 유지하는 동안 하드웨어들이 낭비되어 효율이 감소할 수 있다.
일실시예에 따른 연산 처리 장치는, 어플리케이션 코드를 실행하여 어플리케이션 연산에 필요한 연산 처리 정보를 통신 채널에 저장하는 프로그램 제어부, 및 상기 통신 채널에 저장된 연산 처리 정보를 이용하여 어플리케이션 연산을 처리하는 연산 처리부를 포함할 수 있다.
이때, 상기 프로그램 제어부는, 상기 연산 처리부에서 제1 어플리케이션 연산을 처리 완료하기 전에, 제2 어플리케이션 연산에 필요한 연산 처리 정보를 통신 채널에 저장할 수 있다. 여기서, 상기 제2 어플리케이션 연산은, 상기 제1 어플리케이션 연산 이후에 처리될 연산일 수 있다.
또한, 상기 연산 처리부는, 상기 어플리케이션 연산을 처리한 결과에 해당하는 피드백(Feed-back) 정보를 상기 통신 채널에 저장할 수 있다.
또한, 상기 프로그램 제어부는, 상기 통신 채널에 저장된 피드백 정보에 기초하여 제2 어플리케이션 연산을 처리할 수 있다.
또한, 상기 프로그램 제어부는, 우선 연산 처리가 설정된 어플리케이션 연산의 연산 처리 정보를 통신 채널에 저장할 수 있다.
또한, 상기 연산 처리부는, 우선 연산 처리가 설정된 어플리케이션 연산의 피드백(Feed-back) 정보를 통신 채널에 저장할 수 있다.
또한, 상기 프로그램 제어부는, 상기 통신 채널의 오버 플로우 존재 여부에 기초하여 상기 연산 처리 정보를 상기 통신 채널에 저장할 수 있다.
또한, 상기 프로그램 제어부는, 상기 어플리케이션 연산에 필요한 전체 연산 중 일부 연산을 처리할 수 있다. 그러면, 상기 연산 처리부는, 상기 일부 연산을 제외한 연산을 처리하여 상기 어플리케이션 연산의 처리를 완료할 수 있다.
또한, 상기 연산 처리 정보는, 상기 어플리케이션 연산 처리에 필요한 데이터, 상기 데이터가 저장된 메모리 주소, 및 연산 파라미터 중 적어도 하나를 포함할 수 있다.
또한, 상기 통신 채널은, 버퍼, 공유 메모리 및 레지스터 중 적어도 하나를 포함할 수 있다.
일실시예에 따른 연산 처리 방법은, 어플리케이션 코드를 실행하여 어플리케이션 연산에 필요한 연산 처리 정보를 통신 채널에 저장하는 단계, 및 상기 통신 채널에 저장된 연산 처리 정보를 이용하여 어플리케이션 연산을 처리하는 단계를 포함할 수 있다.
또한, 상기 연산 처리 정보를 통신 채널에 저장하는 단계는, 상기 통신 채널에 저장된 연산 처리 정보를 이용하여 제1 어플리케이션 연산을 처리 완료하기 전에, 제2 어플리케이션 연산에 필요한 연산 처리 정보를 통신 채널에 저장할 수 있다. 여기서, 상기 제2 어플리케이션 연산은, 상기 제1 어플리케이션 연산 이후에 처리될 연산일 수 있다.
또한, 상기 어플리케이션 연산을 처리하는 단계는, 상기 어플리케이션 연산을 처리한 결과에 해당하는 피드백(Feed-back) 정보를 상기 통신 채널에 저장할 수 있다.
또한, 상기 연산 처리 정보를 통신 채널에 저장하는 단계는, 상기 통신 채널에 저장된 피드백 정보에 기초하여 제2 어플리케이션 연산을 처리할 수 있다.
또한, 상기 연산 처리 정보를 통신 채널에 저장하는 단계는, 우선 연산 처리가 설정된 어플리케이션 연산의 연산 처리 정보를 통신 채널에 저장할 수 있다.
또한, 상기 어플리케이션 연산을 처리하는 단계는, 우선 연산 처리가 설정된 어플리케이션 연산의 피드백(Feed-back) 정보를 통신 채널에 저장할 수 있다.
또한, 상기 연산 처리 정보를 통신 채널에 저장하는 단계는, 상기 통신 채널의 오버 플로우 존재 여부에 기초하여 상기 연산 처리 정보를 상기 통신 채널에 저장할 수 있다.
또한, 상기 연산 처리 정보를 통신 채널에 저장하는 단계는, 상기 어플리케이션 연산에 필요한 전체 연산 중 일부 연산을 처리할 수 있다. 그러면, 상기 어플리케이션 연산을 처리하는 단계는, 상기 일부 연산을 제외한 연산을 처리하여 상기 어플리케이션 연산의 처리를 완료할 수 있다.
도 1은 일실시예에 따른 연산 처리 장치가 통신 채널을 이용하여 병렬로 어플리케이션 연산을 처리하는 동작을 설명하기 위해 도시한 도면이다.
도 2는 일실시예에 따른 연산 처리 장치의 전반적인 구성을 도시한 도면이다.
도 3은 일실시예에 따른 버퍼를 이용하여 연산 처리 정보 및 피드백 정보를 저장하는 통신 채널의 구성을 도시한 도면이다.
도 4는 다른 실시예에 따른 버퍼를 이용하여 연산 처리 정보 및 피드백 정보를 저장하는 통신 채널의 구성을 도시한 도면이다.
도 5는 또 다른 실시예에 따른 버퍼를 이용하여 연산 처리 정보 및 피드백 정보를 저장하는 통신 채널의 구성을 도시한 도면이다.
도 6은 또 다른 실시예에 따른 버퍼를 이용하여 연산 처리 정보 및 피드백 정보를 저장하는 통신 채널의 구성을 도시한 도면이다.
도 7은 도 2 내지 도 6의 연산 제어부가 피드백 플래그를 이용하여 피드백 정보의 필요성을 판단하는 동작을 설명하기 위해 제공되는 도면이다.
도 8은 일실시예에 따른 프로그램 제어부가 어플리케이션 코드를 실행하고, 연산 처리부가 어플리케이션 연산을 처리하는 동작을 설명하기 위해 제공되는 도면이다.
도 9는 일실시예에 따른 연산 처리 장치에서 어플리케이션의 실행을 가속화하는 동작을 설명하기 위해 제공되는 도면이다.
도 10은 일실시예에 따른 연산 처리 장치가 하나 이상의 프로그램 제어부를 포함하는 구성을 도시한 도면이다.
도 11은 일실시예에 따른 연산 처리 방법을 도시한 흐름도이다.
도 12는 일실시예에 따른 우선 연산 처리가 설정된 어플리케이션 연산을 처리하는 방법을 도시한 흐름도이다.
도 13은 일실시예에 따른 피드백 정보의 피드백 필요성을 판단하는 방법을 설명하기 위해 제공되는 흐름도이다.
이하, 실시예들을 첨부된 도면을 참조하여 상세하게 설명한다. 일실시예에 따른 연산 처리 방법은 연산 처리 장치에 의해 수행될 수 있다. 각 도면에 제시된 동일한 참조부호는 동일한 부재를 나타낸다.
도 1은 일실시예에 따른 연산 처리 장치가 통신 채널을 이용하여 병렬로 어플리케이션 연산을 처리하는 동작을 설명하기 위해 도시한 도면이다.
도 1에 따르면, 연산 처리 장치(100)는 프로그램 제어부(101), 통신 채널(102), 및 연산 처리부(103)를 포함할 수 있다.
프로그램 제어부(101)는 어플리케이션 코드를 실행하여 어플리케이션 연산에 필요한 연산 처리 정보를 통신 채널(102)에 임시 저장할 수 있다. 여기서, 연산 처리 정보는, 어플리케이션 연산의 처리에 필요한 데이터, 데이터가 저장된 메모리의 주소, 및 연산 파라미터 중 적어도 하나를 포함할 수 있다.
이처럼, 연산 처리 정보를 통신 채널(104)에 저장한 이후, 프로그램 제어부(101)는 연산 처리부(103)의 연산 처리 결과를 기다리지 않고 곧 바로 다음 어플리케이션 연산을 처리할 수 있다.
예를 들어, 프로그램 제어부(101)는 제1 어플리케이션 코드를 실행하여 제1 어플리케이션 연산에 필요한 연산 처리 정보를 통신 채널(102)에 임시 저장할 수 있다. 이어, 프로그램 제어부(101)는 연산 처리부(103)에서 제1 어플리케이션 연산의 처리를 완료할 때까지 기다리지 않고, 바로 제2 어플리케이션 코드를 실행하여 제2 어플리케이션 연산에 필요한 연산 처리 정보를 통신 채널(102)에 임시 저장할 수 있다.
이처럼, 프로그램 제어부(101)는 연산 처리부(103)에서 제1 어플리케이션 연산의 처리를 완료하기 전에, 바로 제2 어플리케이션 연산을 처리하여 연산 처리부(103)로 인한 지연(delay)를 감소시킬 수 있다. 이러한 지연의 감소로 인해 어플리케이션의 실행 시간이 빨라질 수 있다.
그리고, 프로그램 제어부(101)는 통신 채널(102)의 오버 플로우(Overflow) 존재 여부에 기초하여 연산 처리 정보를 통신 채널(102)에 임시 저장할 수 있다.
예를 들어, 통신 채널(102)에 임시 저장된 연산 처리 정보가 가득하여 통신 채널(102)이 오버 플로우된 경우, 프로그램 제어부(101)는 통신 채널(102)의 저장 공간이 확보될 때까지 기다릴 수 있다. 이때, 프로그램 제어부(101)는 다음 어플리케이션 연산에 필요한 연산 처리 정보를 저장할 만큼의 통신 채널(102)이 확보될 때까지 기다릴 수 있다.
이상에서 설명한 바와 같이, 프로그램 제어부(101)와 연산 처리부(102)는 서로 분담하여 어플리케이션 연산을 처리할 수도 있다. 이때, 프로그램 제어부(101)는 프로그램 제어부(101)의 연산 처리 속도, 통신 채널(102)의 저장 용량, 연산 처리부(103)의 연산 처리 속도 중 적어도 하나에 기초하여 프로그램 제어부(101)에서 처리할 일부 연산량과 연산 처리부(103)에서 처리할 일부 연산을 제외한 연산량을 결정할 수 있다.
다시 말해, 프로그램 제어부(101)는 상기 결정에 기초하여 어플리케이션 연산에 필요한 전체 연산 중 일부 연산을 처리하고, 처리된 일부 연산에 해당하는 연산 처리 정보를 통신 채널(102)에 임시 저장할 수 있다. 그러면, 연산 처리부(103)는 통신 채널(102)에서 연산 처리 정보를 독출하여 일부 연산을 제외한 연산을 처리할 수 있다.
예를 들어, 프로그램 제어부(101)는 어플리케이션 연산의 전체 연산 100% 중 a%의 연산을 처리할 수 있다. 그리고, 프로그램 제어부(101)는 a% 처리된 연산의 처리 결과에 해당하는 연산 파라미터들을 포함하는 연산 처리 정보를 통신 채널(102)에 임시 저장할 수 있다. 그러면, 연산 처리부(103)는 통신 채널(102)에서 연산 처리 정보를 독출하여 나머지 1-a%의 연산을 처리할 수 있다. 이에 따라, 어플리케이션 연산의 처리가 완료될 수 있다.
또한, 프로그램 제어부(101)는 어플리케이션 코드를 실행하여 연산 처리부(102)에서 어플리케이션 연산을 처리하기 위한 준비 작업으로 연산 처리 정보를 생성하고, 연산 처리부(102)는 어플리케이션 연산을 수행할 수 있다. 다시 말해, 프로그램 제어부(101)는 어플리케이션 연산을 처리하지 않고, 연산 처리부(102)가 어플리케이션 연산에 필요한 전체 연산을 처리할 수 있다.
도 2는 일실시예에 따른 연산 처리 장치의 전반적인 구성을 도시한 도면이다.
특히, 도 2는 연산 처리 장치에 포함된 프로그램 제어부(201)와 연산 처리부(205)를 병렬 구동하기 위한 DSP(Digital Signal Processor)의 구성 요소를 도시한 도면이다.
도 2를 참고하면, 연산 처리 장치(200)는 프로그램 제어부(201), 제1 레지스터 파일(202), 제1 메모리(203), 통신 채널(204), 연산 처리부(205), 제2 레지스터 파일(206), 제2 메모리(207), 및 제3 메모리(208)를 포함할 수 있다.
먼저, 프로그램 제어부(201)는 어플리케이션(Application)을 구동하기 위해 어플리케이션 코드를 실행할 수 있다. 이때, 프로그램 제어부(201)는 어플리케이션 코드를 실행하여 어플리케이션 연산에 필요한 연산 처리 정보를 통신 채널(204)에 임시 저장할 수 있다.
일례로, 프로그램 제어부(201)는 어플리케이션 연산에 필요한 전체 연산 중 일부 연산을 처리할 수 있다. 그리고, 프로그램 제어부(201)는, 처리된 일부 연산에 해당하는 연산 파라미터들을 포함하는 연산 처리 정보를 통신 채널(204)에 임시 저장할 수 있다. 예를 들어, 프로그램 제어부(201)에서 일부 연산을 처리한 경우, 통신 채널(204)에 저장된 연산 파라미터는, 처리된 일부 연산의 처리 결과를 포함할 수 있다.
그러면, 연산 처리부(205)는 통신 채널(204)에서 연산 처리 정보를 독출하여 일부 연산을 제외한 연산을 처리할 수 있다.
여기서, 어플리케이션 코드는 어플리케이션을 구동하기 위해 연산 처리를 지시하는 명령어이고, 어플리케이션 연산은 어플리케이션 코드가 실행됨에 따라 어플리케이션을 구동하기 위해 필요한 연산일 수 있다. 예를 들어, 어플리케이션 코드는, 조건부 분기 명령어(Conditional Branch Instruction), 재귀 함수(Function Call), 및 분기 명령어(Branch Instruction) 등을 포함할 수 있다.
그리고, 연산 처리 정보는, 어플리케이션 연산 처리에 필요한 데이터, 데이터가 저장된 메모리의 주소, 및 연산 파라미터 중 적어도 하나를 포함할 수 있다.
다른 예로, 프로그램 제어부(201)는 어플리케이션 코드를 실행하고, 연산 처리부(205)에서 어플리케이션 연산을 처리하기 위한 준비 작업으로 연산 파라미터를 포함하는 연산 처리 정보를 생성할 수 있다. 예를 들어, 준비 작업을 위해 이용되는 연산 파라미터는, 연산 처리부(205)에서 처리될 어플리케이션 연산에서 호출될 함수 정보, 인덱스 정보 등을 포함할 수 있다.
그러면, 연산 처리부(205)는 연산 처리 정보를 이용하여 어플리케이션 연산의 전체 연산을 처리할 수 있다.
제1 레지스터 파일(202) 및 제1 메모리(203)는 어플리케이션 연산 처리에 필요한 데이터 및 프로그램 제어부(201)에서 처리한 어플리케이션 연산의 처리 결과인 연산 파라미터를 저장할 수 있다.
통신 채널(204)은 프로그램 제어부(201)에서 생성한 연산 처리 정보 및 연산 처리부(205)에서 생성한 피드백 정보를 임시 저장하는 저장 매체일 수 있다. 이때, 통신 채널(204)은 하나 이상의 저장 매체를 포함할 수 있다.
예를 들어, 통신 채널(104)은 버퍼(Buffer), 공유 메모리(Shared Memory) 및 레지스터(Register) 중 적어도 하나를 포함할 수 있다.
그러면, 연산 처리부(205)는 통신 채널(204)에 저장된 연산 처리 정보를 이용하여 어플리케이션 연산을 처리할 수 있다.
예를 들어, 연산 처리부(205)는 처리하고자 하는 어플리케이션 연산에 필요한 모든 연산 파라미터가 통신 채널(204)에 저장되었는지 확인할 수 있다. 통신 채널(204)에 모든 연산 파라미터가 저장된 경우, 연산 처리부(205)는 연산 파라미터를 이용하여 어플리케이션 연산의 처리를 완료할 수 있다.
이어, 연산 처리부(205)는 어플리케이션 연산을 처리한 결과에 해당하는 피드백(Feed-back) 정보를 제2 레지스터 파일(206), 제2 메모리(207), 및 제3 메모리(208) 중 적어도 하나에 저장할 수 있다. 그리고, 제2 레지스터 파일(206), 제2 메모리(207), 및 제3 메모리(208)는 연산 처리부(205)에서 사용되는 데이터들을 저장할 수 있다.
이때, 연산 처리부(205)는 필요에 따라 피드백(Feed-back) 정보를 통신 채널(204)에 저장할 수 있다. 예를 들어, 프로그램 제어부(201)에서 피드백 정보를 필요로 하는 경우, 연산 처리부(205)는 피드백 정보를 통신 채널(204)에 저장할 수 있다.
일례로, 제2 어플리케이션 연산을 위해 제1 어플리케이션 연산의 처리 결과인 피드백 정보가 필요할 수 있다.
그러면, 프로그램 제어부(201)는 제1 어플리케이션 연산의 피드백 정보가 필요함을 연산 처리부(205)와 미리 약속할 수 있다. 이처럼, 미리 약속된 경우, 연산 처리부(205)는 제1 어플리케이션 연산의 처리를 완료하고, 피드백 정보를 통신 채널(204)에 임시 저장할 수 있다. 그러면, 프로그램 제어부(201)는 통신 채널(204)에 저장된 피드백 정보를 이용하여 제2 어플리케이션 연산을 처리할 수 있다.
다른 예로, 미리 약속되지 않은 경우, 연산 처리부(205)는 프로그램 제어부(201)에서 제1 어플리케이션 연산의 피드백 정보를 필요로 하는지 여부를 나타내는 필요성을 판단할 수 있다.
그리고, 연산 처리부(205)는 판단에 기초하여 피드백 정보를 통신 채널(204)에 저장할 수 있다. 예를 들어, 통신 채널(204)에 제1 어플리케이션 연산을 위한 연산 파라미터와 함께 피드백 플래그 저장되어 있는 경우, 연산 처리부(205)는 프로그램 제어부(201)가 피드백 정보를 필요로 하는 것으로 판단하여 피드백 정보를 통신 채널(204)에 임시 저장할 수 있다.
도 2에서, 프로그램 제어부(201)와 연산 처리부(205)는 제1 레지스터 파일(202), 제1 메모리(203), 제2 레지스터 파일(206), 제2 메모리(207), 및 제3 메모리(208)를 공유할 수 있다. 이때, 제1 메모리(203), 제2 메모리(207)및 제3 메모리(208)는 명령 캐쉬(Instruction Cache), 데이터 캐쉬(Data Cache), 및 스크래치패드 메모리(Scratch Pad Memory) 등을 포함할 수 있다.
그리고, 프로그램 제어부(201)는 하나의 레지스터 파일 및 메모리를 이용하는 것으로 설명하였으나, 이는 실시예에 해당하며, 프로그램 제어부(201)는 하나 이상의 레지스터 파일과 하나 이상의 메모리를 이용할 수 있다. 마찬가지로, 연산 처리부(205)는 하나의 레지스터 파일과 두 개의 메모리를 이용하는 것으로 설명하였으나, 이는 실시예에 해당하며, 연산 처리부(205)는 하나 이상의 레지스터 파일과 하나 이상의 메모리를 이용할 수 있다.
도 3은 일실시예에 따른 버퍼를 이용하여 연산 처리 정보 및 피드백 정보를 저장하는 통신 채널의 구성을 도시한 도면이다.
도 3에 따르면, 통신 채널(303)은 제1 버퍼(304) 및 제2 버퍼(305)를 포함할 수 있다. 예를 들어, 제1 버퍼(304)는 Forward FIFO(First In First Out) 버퍼를 포함하고, 제2 버퍼(305)는 Backward FIFO 버퍼를 포함할 수 있다.
먼저, 프로그램 제어부(301)는 어플리케이션 코드를 실행하여 제1 내지 제N 어플리케이션 연산에 필요한 연산 처리 정보들을 통신 채널(303)에 저장할 수 있다.
일례로, N=5이고, 프로그램 제어부(301)가 제4 어플리케이션 연산의 피드백 정보를 필요로 함을 연산 처리부(302)와 미리 약속한 경우, 프로그램 제어부(301)는 제1 어플리케이션 연산에 필요한 연산 처리 정보 1을 제1 버퍼(304)에 임시 저장할 수 있다. 그러면, 연산 처리부(302)는 제1 버퍼(304)에 저장된 연산 처리 정보 1을 독출하여 제1 어플리케이션 연산을 처리할 수 있다. 그러면, 연산 처리 정보 1은 제1 버퍼(304)에서 비워질 수 있다.
이어, 연산 처리부(302)에서 제1 버퍼(304)에 저장된 연산 처리 정보 1을 이용하여 제1 어플리케이션 연산의 처리를 완료하기 전에, 프로그램 제어부(301)는 제2 어플리케이션 연산에 필요한 연산 처리 정보 2를 제1 버퍼(304)에 임시 저장할 수 있다.
이때, 연산 처리부(302)에서 제1 어플리케이션 연산의 처리가 완료되지 않은 경우, 프로그램 제어부(301)는 제3 어플리케이션 연산에 필요한 연산 처리 정보 3을 제1 버퍼(304)에 저장할 수 있다. 그러면, 제1 버퍼(304)는 연산 처리 정보 2와 연산 처리 정보 3을 저장하고 있을 수 있다.
그리고, 프로그램 제어부(301)는 제4 어플리케이션 연산에 필요한 연산 처리 정보 4를 제1 버퍼(304)에 임시 저장할 수 있다. 이때, 연산 처리부(302)에서 제1 및 제2 어플리케이션 연산의 처리를 완료하고, 제3 어플리케이션 연산을 처리 중인 경우, 프로그램 제어부(301)는 제4 어플리케이션 연산의 피드백 정보를 기다릴 수 있다.
이어, 연산 처리부(302)에서 제3 어플리케이션 연산의 처리를 완료한 경우, 연산 처리부(302)는 연산 처리 정보 4를 이용하여 제4 어플리케이션 연산의 처리를 완료할 수 있다.
그리고, 연산 처리부(302)는 제4 어플리케이션 연산의 피드백 정보를 제2 버퍼(305)에 임시 저장할 수 있다. 그러면, 프로그램 제어부(301)는 제2 버퍼(305)에 저장된 제4 어플리케이션 연산의 피드백 정보를 이용하여 제5 어플리케이션 연산을 처리할 수 있다. 이처럼, 프로그램 제어부(301)는 통신 채널(303)을 이용하여 연산 처리부(302)와 연동함에 따라, 피드백 정보가 필요한 경우를 제외하고는 연산 처리부(302)의 연산 처리 결과를 기다리지 않고 복수의 어플리케이션 연산을 바로 병렬 처리할 수 있다.
다른 예로, N=5이고, 프로그램 제어부(301)가 제4 어플리케이션 연산의 피드백 정보를 필요로 함을 연산 처리부(302)와 미리 약속하지 않은 경우, 연산 처리부(302)는 제1 버퍼(304)를 확인하여 처리하고자 하는 어플리케이션 연산의 피드백 정보를 프로그램 제어부(301)가 필요로 하는지 여부를 판단할 수 있다.
이때, 프로그램 제어부(301)가 연산 처리 정보 1 내지 3을 제1 버퍼(304)에 저장하고, 연산 처리부(302)가 제1 버퍼(304)에 저장된 연산 처리 정보 1 내지 3을 독출하여 제1 내지 제3 어플리케이션 연산의 처리를 완료하는 동작은 피드백 정보의 필요성을 미리 약속한 경우와 동일하므로 중복되는 설명은 생략하기로 한다.
예를 들어, 프로그램 제어부(301)는 제4 어플리케이션 연산에 필요한 연산 처리 정보 4를 제1 버퍼(304)에 임시 저장할 수 있다. 이때, 프로그램 제어부(301)는 제4 어플리케이션 연산의 피드백 정보가 필요함을 나타내는 피드백 플래그를 제1 버퍼(304)에 임시 저장할 수 있다. 그러면, 연산 처리부(302)는 제1 버퍼(304)에 저장된 피드백 플래그에 기초하여 제4 어플리케이션 연산의 피드백 정보를 프로그램 제어부(301)에서 필요로 하는 것으로 판단할 수 있다.
이어, 연산 처리부(302)는 제1 버퍼(304)에 저장된 연산 처리 정보 4를 독출하여 제4 어플리케이션 연산의 처리를 완료할 수 있다. 그리고, 연산 처리부(302)는 제4 어플리케이션 연산의 피드백 정보를 제2 버퍼(305)에 임시 저장할 수 있다. 그러면, 프로그램 제어부(301)는 제2 버퍼(305)에 저장된 제4 어플리케이션 연산의 피드백 정보를 이용하여 제5 어플리케이션 연산을 처리할 수 있다.
도 4는 다른 실시예에 따른 버퍼를 이용하여 연산 처리 정보 및 피드백 정보를 저장하는 통신 채널의 구성을 도시한 도면이다.
특히, 도 4는 통신 채널이 연산 처리 정보를 저장하는 2개의 버퍼와 피드백 정보를 저장하는 1개의 버퍼를 포함하는 실시예를 도시한 도면이다.
도 4에 따르면, 통신 채널(403)은 제1 버퍼(404), 제2 버퍼(405), 및 제3 버퍼(406)를 포함할 수 있다. 예를 들어, 제1 버퍼(404)는 Forward FIFO(First In First Out) 버퍼를 포함하고, 제2 버퍼(405)는 Backward FIFO 버퍼를 포함하고, 제3 버퍼(406)는 Forward Quick FIFO를 포함할 수 있다.
먼저, 프로그램 제어부(401)는 어플리케이션 코드를 실행하여 제1 내지 제N 어플리케이션 연산에 필요한 연산 처리 정보들을 통신 채널(403)에 저장할 수 있다.
일례로, N=5이고, 프로그램 제어부(401)가 제4 어플리케이션 연산의 피드백 정보를 필요로 하고, 제4 어플리케이션 연산에 우선 연산 처리가 설정되었음을 연산 처리부(402)와 미리 약속한 경우, 프로그램 제어부(401)는 제1 어플리케이션 연산에 필요한 연산 처리 정보 1을 제1 버퍼(404)에 임시 저장할 수 있다. 여기서, 우선 연산 처리는 프로그램 제어부(401)가 제5 어플리케이션 연산을 처리하기 위해 제4 어플리케이션 연산의 피드백 정보를 즉시 확인할 필요가 있는 경우에 미리 설정될 수 있다.
이때, 프로그램 제어부(401)는 제1 어플리케이션 연산에 필요한 연산 처리 정보 1을 제1 버퍼(404)에 임시 저장할 수 있다. 그러면, 연산 처리부(402)는 제1 버퍼(404)에 저장된 연산 처리 정보 1을 독출하여 제1 어플리케이션 연산을 처리할 수 있다. 그러면, 연산 처리 정보 1은 제1 버퍼(404)에서 비워질 수 있다.
이어, 연산 처리부(402)에서 제1 버퍼(404)에 저장된 연산 처리 정보 1을 이용하여 제1 어플리케이션 연산의 처리를 완료하기 전에, 프로그램 제어부(401)는 제2 어플리케이션 연산에 필요한 연산 처리 정보 2를 제1 버퍼(404)에 임시 저장할 수 있다.
이때, 연산 처리부(402)에서 제1 어플리케이션 연산의 처리가 완료되지 않은 경우, 프로그램 제어부(401)는 제3 어플리케이션 연산에 필요한 연산 처리 정보 3을 제1 버퍼(404)에 저장할 수 있다. 그러면, 제1 버퍼(404)는 연산 처리 정보 2와 연산 처리 정보 3을 저장하고 있을 수 있다.
그리고, 프로그램 제어부(401)는 우선 연산 처리가 설정된 제4 어플리케이션 연산에 필요한 연산 처리 정보 4를 제3 버퍼(406)에 임시 저장할 수 있다. 이때, 연산 처리부(402)는 순차적으로 제1 및 제2 어플리케이션 연산의 처리를 완료한 상태에서 제3 어플리케이션 연산을 처리하기 위해 제1 버퍼(404) 및 제3 버퍼(406)를 확인할 수 있다. 그러면, 연산 처리부(402)는 제1 버퍼(404)에 연산 처리 정보 3이 저장되고, 제3 버퍼(406)에 연산 처리 정보 4가 저장되어 있음을 확인할 수 있다.
여기서, 제3 버퍼(406)는 우선 연산 처리가 설정된 어플리케이션 연산에 필요한 연산 처리 정보가 저장되는 버퍼이므로, 연산 처리부(402)는 제3 버퍼(406)에서 연산 처리 정보 4를 독출하여 제4 어플리케이션 연산을 처리할 수 있다. 그리고, 연산 처리부(402)는 제4 어플리케이션 연산의 피드백 정보를 제2 버퍼(405)에 임시 저장할 수 있다. 이어, 연산 처리부(402)는 제1 버퍼(404)에서 연산 처리 정보 3을 독출하여 제3 어플리케이션 연산을 처리할 수 있다.
그러면, 프로그램 제어부(401)는 제2 버퍼(405)에서 제4 어플리케이션 연산의 피드백 정보를 독출하여 제5 어플리케이션 연산에 필요한 연산 처리 정보 5를 제1 버퍼(404)에 임시 저장할 수 있다. 그러면, 연산 처리부(402)는 제1 버퍼(404)에서 연산 처리 정보 5를 독출하여 제5 어플리케이션 연산의 처리를 완료할 수 있다.
이처럼, 연산 처리부(402)는, 제3 버퍼(406)를 이용하여 우선 연산 처리가 설정된 어플리케이션 연산을 우선적으로 처리하여 피드백 정보를 신속하게 프로그램 제어부(401)로 제공할 수 있다. 이에 따라, 프로그램 제어부(401)는 다음 어플리케이션 연산을 위해 이전 어플리케이션 연산의 피드백 정보를 기다리는 시간을 단축할 수 있다.
다른 예로, N=5이고, 프로그램 제어부(401)가 제4 어플리케이션 연산의 피드백 정보를 필요로 함을 연산 처리부(402)와 미리 약속하지 않은 경우, 연산 처리부(402)는 제1 버퍼(404) 및 제3 버퍼(406)를 확인하여 처리하고자 하는 어플리케이션 연산의 피드백 정보를 프로그램 제어부(401)가 필요로 하는지 여부를 판단할 수 있다. 여기서, 제4 어플리케이션 연산에 우선 연산 처리가 설정됨을 가정한다.
이때, 프로그램 제어부(401)가 연산 처리 정보 1 내지 3을 제1 버퍼(404)에 저장하고, 연산 처리부(402)가 제1 버퍼(404)에 저장된 연산 처리 정보 1 내지 3을 독출하여 제1 내지 제3 어플리케이션 연산의 처리를 완료하는 동작은 도 4에서 피드백 정보의 필요성을 미리 약속한 경우와 동일하므로 중복되는 설명은 생략하기로 한다.
예를 들어, 프로그램 제어부(401)는 제4 어플리케이션 연산에 필요한 연산 처리 정보 4를 제3 버퍼(406)에 임시 저장할 수 있다. 이때, 프로그램 제어부(401)는 제4 어플리케이션 연산의 피드백 정보가 필요함을 나타내는 피드백 플래그를 제3 버퍼(406)에 임시 저장할 수 있다. 그러면, 연산 처리부(402)는 제3 버퍼(406)에 저장된 피드백 플래그에 기초하여 제4 어플리케이션 연산의 피드백 정보를 프로그램 제어부(401)에서 필요로 하는 것으로 판단할 수 있다.
이어, 연산 처리부(402)는 제3 버퍼(406)에 저장된 연산 처리 정보 4를 독출하여 제4 어플리케이션 연산의 처리를 완료할 수 있다. 그리고, 연산 처리부(402)는 제4 어플리케이션 연산의 피드백 정보를 제2 버퍼(405)에 임시 저장할 수 있다. 그러면, 프로그램 제어부(401)는 제2 버퍼(405)에 저장된 제4 어플리케이션 연산의 피드백 정보를 이용하여 제5 어플리케이션 연산을 처리할 수 있다.
이상의 도 4에서 설명한 바와 같이, 어플리케이션 연산의 피드백 정보를 즉시 확인할 필요가 있는 경우, 프로그램 제어부(401)는 우선 연산 처리가 설정된 어플리케이션 연산의 연산 처리 정보를 제3 버퍼(406)에 임시 저장할 수 있다. 그리고, 어플리케이션 연산의 피드백 정보를 즉시 확인할 필요가 없는 경우, 프로그램 제어부(401)는 어플리케이션 연산의 연산 처리 정보를 제1 버퍼(404)에 임시 저장할 수 있다.
도 5는 또 다른 실시예에 따른 버퍼를 이용하여 연산 처리 정보 및 피드백 정보를 저장하는 통신 채널의 구성을 도시한 도면이다.
특히, 도 5는 통신 채널이 연산 처리 정보를 저장하는 1개의 버퍼와 피드백 정보를 저장하는 2개의 버퍼를 포함하는 실시예를 도시한 도면이다.
도 5에 따르면, 통신 채널(503)은 제1 버퍼(504), 제2 버퍼(505), 및 제3 버퍼(506)를 포함할 수 있다. 예를 들어, 제1 버퍼(504)는 Forward FIFO(First In First Out) 버퍼를 포함하고, 제2 버퍼(505)는 Backward FIFO 버퍼를 포함하고, 제3 버퍼(506)는 Backward Quick FIFO를 포함할 수 있다.
먼저, 프로그램 제어부(501)는 어플리케이션 코드를 실행하여 제1 내지 제N 어플리케이션 연산에 필요한 연산 처리 정보들을 통신 채널(503)에 저장할 수 있다.
일례로, N=5이고, 프로그램 제어부(501)가 제2 및 제4 어플리케이션 연산의 피드백 정보를 필요로 하고, 제4 어플리케이션 연산에 우선 연산 처리가 설정되었음을 연산 처리부(502)와 미리 약속한 경우, 프로그램 제어부(501)는 제1 어플리케이션 연산에 필요한 연산 처리 정보 1을 제1 버퍼(504)에 임시 저장할 수 있다. 여기서, 프로그램 제어부(501)가 제2 및 제4 어플리케이션 연산의 피드백 정보를 이용하여 제5 어플리케이션 연산을 처리함을 가정한다.
프로그램 제어부(501)는 제1 어플리케이션 연산에 필요한 연산 처리 정보 1을 제1 버퍼(504)에 임시 저장할 수 있다. 그러면, 연산 처리부(502)는 제1 버퍼(504)에 저장된 연산 처리 정보 1을 독출하여 제1 어플리케이션 연산을 처리할 수 있다. 그러면, 연산 처리 정보 1은 제1 버퍼(504)에서 비워질 수 있다.
이어, 연산 처리부(502)에서 제1 버퍼(504)에 저장된 연산 처리 정보 1을 이용하여 제1 어플리케이션 연산의 처리를 완료하기 전에, 프로그램 제어부(501)는 제2 어플리케이션 연산에 필요한 연산 처리 정보 2를 제1 버퍼(504)에 임시 저장할 수 있다. 그리고, 프로그램 제어부(501)는 제3 어플리케이션 연산에 필요한 연산 처리 정보 3과 제4 어플리케이션 연산에 필요한 연산 처리 정보 4를 제1 버퍼(504)에 임시 저장할 수 있다.
그러면, 연산 처리부(502)는 제2 내지 제3 어플리케이션 연산을 순차적으로 처리 완료할 수 있다. 그리고, 연산 처리부(502)는 제2 어플리케이션 연산의 피드백 정보를 제2 버퍼(505)에 임시 저장할 수 있다.
이어, 연산 처리부(502)는 제4 어플리케이션 연산의 처리를 완료하고, 제4 어플리케이션 연산의 피드백 정보를 제3 버퍼(506)에 임시 저장할 수 있다. 그러면, 프로그램 제어부(501)는 제2 버퍼(505)에서 제2 어플리케이션 연산의 피드백 정보를 독출하고, 제3 버퍼(506)에서 제4 어플리케이션 연산의 피드백 정보를 독출하여 제5 어플리케이션 연산에 필요한 연산 처리 정보 5를 생성할 수 있다.
그리고, 프로그램 제어부(501)는 연산 처리 정보 5를 제1 버퍼(504)에 임시 저장할 수 있다. 그러면, 연산 처리부(502)는 연산 처리 정보 5를 이용하여 제5 어플리케이션의 연산 처리를 완료할 수 있다.
다른 예로, N=5이고, 프로그램 제어부(501)가 제2 및 제4 어플리케이션 연산의 피드백 정보를 필요로 함을 연산 처리부(502)와 미리 약속하지 않은 경우, 연산 처리부(502)는 제1 버퍼(504)를 확인하여 처리하고자 하는 어플리케이션 연산의 피드백 정보를 프로그램 제어부(501)가 필요로 하는지 여부를 판단할 수 있다.
여기서, 프로그램 제어부(501)가 제2 및 제4 어플리케이션 연산의 피드백 정보를 이용하여 제5 어플리케이션 연산을 처리하고, 제4 어플리케이션 연산에 우선 연산 처리가 설정되었음을 가정한다.
이때, 프로그램 제어부(501)가 연산 처리 정보 1 내지 4를 제1 버퍼(504)에 순차적으로 저장하고, 연산 처리부(502)가 제1 버퍼(504)에 저장된 연산 처리 정보 1 내지 4를 독출하여 제1 내지 제4 어플리케이션 연산의 처리를 완료하는 동작은 도 5에서 피드백 정보의 필요성을 미리 약속한 경우와 동일하므로 중복되는 설명은 생략하기로 한다.
예를 들어, 프로그램 제어부(501)는 연산 처리 정보 2와 함께 제2 어플리케이션 연산의 피드백 플래그를 제1 버퍼(504)에 임시 저장할 수 있다. 그러면, 연산 처리부(502)는 제1 버퍼(504)에 저장된 제2 어플리케이션 연산의 피드백 플래그에 기초하여 제2 어플리케이션 연산의 피드백 정보를 프로그램 제어부(501)에서 필요로 하는 것으로 판단할 수 있다. 그리고, 연산 처리부(502)는 제2 어플리케이션 연산의 피드백 정보를 제2 버퍼(505)에 임시 저장할 수 있다.
마찬가지로, 프로그램 제어부(501)는 연산 처리 정보 3과 함께 제3 어플리케이션 연산의 피드백 플래그를 제1 버퍼(504)에 임시 저장할 수 있다. 그러면, 연산 처리부(502)는 제1 버퍼(504)에 저장된 제4 어플리케이션 연산의 피드백 플래그에 기초하여 제4 어플리케이션 연산의 피드백 정보를 프로그램 제어부(501)에서 필요로 하는 것으로 판단할 수 있다. 그리고, 연산 처리부(502)는 제4 어플리케이션 연산의 피드백 정보를 제3 버퍼(506)에 임시 저장할 수 있다.
그러면, 프로그램 제어부(501)는 제2 버퍼(505) 및 제3 버퍼(506)에서 제2 및 제3 어플리케이션 연산의 피드백 정보를 독출하여 제5 어플리케이션 연산에 필요한 연산 처리 정보 5를 생성할 수 있다. 그리고, 프로그램 제어부(501)는 연산 처리 정보 5를 제1 버퍼(504)에 저장할 수 있다. 그러면, 연산 처리부(502)는 연산 처리 정보 5를 이용하여 제5 어플리케이션 연산의 처리를 완료할 수 있다.
도 6은 또 다른 실시예에 따른 버퍼를 이용하여 연산 처리 정보 및 피드백 정보를 저장하는 통신 채널의 구성을 도시한 도면이다.
특히, 도 6은 통신 채널이 연산 처리 정보를 저장하는 2개의 버퍼와 피드백 정보를 저장하는 2개의 버퍼를 포함하는 실시예를 도시한 도면이다.
도 6에 따르면, 통신 채널(603)은 제1 버퍼(604), 제2 버퍼(605), 제3 버퍼(606), 및 제4 버퍼(607)를 포함할 수 있다. 예를 들어, 제1 버퍼(604)는 Forward FIFO(First In First Out) 버퍼를 포함하고, 제2 버퍼(605)는 Backward FIFO 버퍼를 포함하고, 제3 버퍼(606)는 Forward Quick FIFO 버퍼를 포함하고, 제4 버퍼(607)는 Backward Quick FIFO를 포함할 수 있다.
먼저, 프로그램 제어부(601)는 어플리케이션 코드를 실행하여 제1 내지 제N 어플리케이션 연산에 필요한 연산 처리 정보들을 통신 채널(603)에 저장할 수 있다. 여기서, 제2 내지 제N 어플리케이션 연산은 제1 어플리케이션 연산 이후에 처리될 연산일 수 있다.
일례로, N=6이고, 프로그램 제어부(601)가 제2 및 제4 어플리케이션 연산의 피드백 정보를 필요로 하고, 제4 어플리케이션 연산에 우선 연산 처리가 설정되었음을 연산 처리부(602)와 미리 약속한 경우, 프로그램 제어부(601)는 제1 어플리케이션 연산에 필요한 연산 처리 정보 1을 제1 버퍼(604)에 임시 저장할 수 있다. 여기서, 프로그램 제어부(601)가 제4 어플리케이션 연산의 피드백 정보를 이용하여 제5 어플리케이션 연산을 처리하고, 제2 어플리케이션 연산의 피드백 정보를 이용하여 제6 어플리케이션 연산을 처리함을 가정한다.
구체적으로, 프로그램 제어부(601)는 제1 어플리케이션 연산에 필요한 연산 처리 정보 1을 제1 버퍼(604)에 임시 저장할 수 있다. 그러면, 연산 처리부(602)는 제1 버퍼(604)에 저장된 연산 처리 정보 1을 독출하여 제1 어플리케이션 연산을 처리할 수 있다. 그러면, 연산 처리 정보 1은 제1 버퍼(604)에서 비워질 수 있다.
이때, 연산 처리부(602)에서 제1 버퍼(604)에 저장된 연산 처리 정보 1을 이용하여 제1 어플리케이션 연산의 처리를 완료하기 전에, 프로그램 제어부(601)는 제2 어플리케이션 연산에 필요한 연산 처리 정보 2를 제1 버퍼(604)에 임시 저장할 수 있다.
그리고, 프로그램 제어부(601)는 제3 어플리케이션 연산에 필요한 연산 처리 정보 3를 제1 버퍼(604)에 임시 저장할 수 있다. 여기서, 연산 처리부(602)에서 제1 어플리케이션 연산의 처리를 완료하지 않은 경우, 제1 버퍼(604)는 연산 처리 정보 2 및 연산 처리 정보 3을 순차적으로 저장하고 있을 수 있다.
이어, 프로그램 제어부(601)는 연산 처리 정보 3을 제1 버퍼(604)에 저장한 이후, 곧 바로 제4 어플리케이션 연산에 필요한 연산 처리 정보 4를 제3 버퍼(606)에 저장할 수 있다. 그러면, 제1 버퍼(604)는 연산 처리 정보 2 및 연산 처리 정보 3을 저장하고, 제3 버퍼(606)는 연산 처리 정보 4를 저장하고 있을 수 있다.
이때, 연산 처리부(602)에서 제1 어플리케이션 연산의 처리를 완료한 경우, 연산 처리부(602)는 제1 버퍼(604) 및 제3 버퍼(606)를 확인할 수 있다. 그리고, 연산 처리부(602)는 제3 버퍼(606)에서 연산 처리 정보 4를 독출하여 우선 연산 처리가 설정된 제4 어플리케이션 연산의 피드백 정보를 생성할 수 있다. 이어, 연산 처리부(602)는 제4 어플리케이션 연산의 피드백 정보를 제4 버퍼(607)에 임시 저장할 수 있다. 다시 말해, 연산 처리부(602)는 제2 및 제3 어플리케이션 연산보다 제4 어플리케이션 연산을 우선적으로 처리할 수 있다.
그리고, 제4 어플리케이션 연산의 피드백 정보를 제4 버퍼(607)에 저장한 이후, 연산 처리부(602)는 제1 버퍼(604)에서 연산 처리 정보 2를 독출하여 제2 어플리케이션 연산을 처리할 수 있다.
이때, 프로그램 제어부(601)는 연산 처리부(602)에서 제2 어플리케이션 연산을 처리하는 동안 제5 어플리케이션 연산에 필요한 연산 처리 정보 5의 생성을 시작할 수 있다. 다시 말해, 프로그램 제어부(601)는 제4 버퍼(607)에서 제4 어플리케이션 연산의 피드백 정보를 이용하여 연산 처리 정보 5의 생성을 시작할 수 있다. 그러면, 제4 버퍼(607)는 비워질 수 있다.
여기서, 프로그램 제어부(601)에서 연산 처리 정보 5의 생성을 완료하기 이전에, 연산 처리부(602)는 제2 어플리케이션 연산의 처리를 완료할 수 있다. 그러면, 연산 처리부(602)는 제2 어플리케이션 연산의 피드백 정보를 제2 버퍼(605)에 임시 저장할 수 있다.
그리고, 연산 처리부(602)는 제2 어플리케이션 연산의 처리를 완료한 이후, 연산 처리부(602)는 제1 버퍼(604)에서 연산 처리 정보 3을 독출하여 제3 어플리케이션 연산을 처리할 수 있다. 이때, 프로그램 제어부(601)는 연산 처리부(602)에서 제3 어플리케이션 연산을 처리하는 동안 연산 처리 정보 5의 생성을 완료할 수 있다. 그러면, 프로그램 제어부(601)는 연산 처리 정보 5를 제1 버퍼(604)에 임시 저장할 수 있다.
이어, 연산 처리부(602)는 제3 어플리케이션 연산의 처리를 완료한 이후, 연산 처리부(602)는 제1 버퍼(604)에서 연산 처리 정보 5를 독출하여 제5 어플리케이션 연산을 처리할 수 있다.
이때, 프로그램 제어부(601)는 연산 처리부(602)에서 제5 어플리케이션 연산을 처리하는 동안 제6 어플리케이션 연산에 필요한 연산 처리 정보 6을 생성할 수 있다. 다시 말해, 프로그램 제어부(601)는 제2 버퍼(605)에서 제2 어플리케이션의 피드백 정보를 독출하여 연산 처리 정보 6을 생성할 수 있다. 그리고, 프로그램 제어부(601)는 연산 처리 정보 6을 제1 버퍼(604)에 임시 저장할 수 있다.
그러면, 연산 처리부(602)는 연산 처리 정보 6을 이용하여 제6 어플리케이션 연산의 처리를 완료할 수 있다. 이처럼, 프로그램 제어부(601)와 연산 처리부(602)는 제1 내지 제4 버퍼를 이용하여 복수의 어플리케이션 연산을 병렬로 처리함에 따라, 피드백 정보를 요구하는 어플리케이션 연산의 처리 시 발생하는 지연(delay)을 감소시킬 수 있다. 이에 따라, 어플리케이션의 실행 시간은 단축될 수 있다.
다른 예로, N=6이고, 프로그램 제어부(601)가 제2 및 제4 어플리케이션 연산의 피드백 정보를 필요로 함을 미리 약속하지 않은 경우, 연산 처리부(602)는 제1 버퍼(604) 및 제3 버퍼(606)를 확인하여 처리하고자 하는 어플리케이션 연산의 피드백 정보를 프로그램 제어부(601)가 필요로 하는지 여부를 판단할 수 있다.
여기서, 프로그램 제어부(601)가 제4 어플리케이션 연산의 피드백 정보를 이용하여 제5 어플리케이션 연산을 처리하고, 제2 어플리케이션 연산의 피드백 정보를 이용하여 제6 어플리케이션 연산을 처리하고, 제4 어플리케이션 연산에 우선 연산 처리가 설정되었음을 가정한다.
먼저, 프로그램 제어부(601)는 제1 어플리케이션 연산에 필요한 연산 처리 정보 1을 제1 버퍼(604)에 임시 저장할 수 있다. 그러면, 연산 처리부(602)는 제1 버퍼(604)에 저장된 연산 처리 정보 1을 독출하여 제1 어플리케이션 연산을 처리할 수 있다. 그러면, 연산 처리 정보 1은 제1 버퍼(604)에서 비워질 수 있다.
이때, 연산 처리부(602)에서 제1 버퍼(604)에 저장된 연산 처리 정보 1을 이용하여 제1 어플리케이션 연산의 처리를 완료하기 전에, 프로그램 제어부(601)는 제2 어플리케이션 연산에 필요한 연산 처리 정보 2를 제1 버퍼(604)에 임시 저장할 수 있다. 이때, 프로그램 제어부(601)는 제2 어플리케이션 연산의 피드백 플래그를 연산 처리 정보 2와 함께 제1 버퍼(604)에 임시 저장할 수 있다.
그리고, 프로그램 제어부(601)는 제3 어플리케이션 연산에 필요한 연산 처리 정보 3를 제1 버퍼(604)에 임시 저장할 수 있다. 예를 들어, 연산 처리부(602)에서 제1 어플리케이션 연산의 처리를 완료하지 않은 경우, 제1 버퍼(604)는 제2 어플리케이션 연산의 피드백 플래그, 연산 처리 정보 2 및 연산 처리 정보 3을 순차적으로 저장하고 있을 수 있다.
이어, 연산 처리 정보 3을 제1 버퍼(604)에 저장한 이후 곧 바로, 프로그램 제어부(601)는 제4 어플리케이션 연산에 필요한 연산 처리 정보 4를 제3 버퍼(606)에 저장할 수 있다. 이때, 프로그램 제어부(601)는 제4 어플리케이션 연산의 피드백 플래그를 연산 처리 정보 4와 함께 제3 버퍼(606)에 임시 저장할 수 있다.
그러면, 제1 버퍼(604)는 제2 어플리케이션 연산의 피드백 플래그, 연산 처리 정보 2 및 연산 처리 정보 3을 저장하고, 제3 버퍼(606)는 제4 어플리케이션 연산의 피드백 플래그, 및 연산 처리 정보 4를 저장하고 있을 수 있다.
이때, 연산 처리부(602)에서 제1 어플리케이션 연산의 처리를 완료한 경우, 연산 처리부(602)는 제1 버퍼(604) 및 제3 버퍼(606)를 확인할 수 있다. 그러면, 연산 처리부(602)는 제3 버퍼(606)에서 제4 어플리케이션 연산의 피드백 플래그를 독출하여 제4 어플리케이션 연산의 피드백 정보를 프로그램 제어부(601)에서 필요로 하는 것으로 판단할 수 있다.
이에 따라, 연산 처리부(602)는 제3 버퍼(606)에서 연산 처리 정보 4를 독출하여 우선 연산 처리가 설정된 제4 어플리케이션 연산의 피드백 정보를 생성할 수 있다. 그리고, 연산 처리부(602)는 제4 어플리케이션 연산의 피드백 정보를 제4 버퍼(607)에 임시 저장할 수 있다. 다시 말해, 연산 처리부(602)는 제2 및 제3 어플리케이션 연산보다 제4 어플리케이션 연산을 우선적으로 처리할 수 있다.
이때, 제4 어플리케이션 연산의 피드백 정보를 제4 버퍼(607)에 저장한 이후, 연산 처리부(602)는 제1 버퍼(604)에서 제2 어플리케이션 연산의 피드백 플래그를 독출하여 제2 어플리케이션 연산의 피드백 정보를 프로그램 제어부(601)에서 필요로 하는 것으로 판단할 수 있다. 그러면, 연산 처리부(602)는 제1 버퍼(604)에서 연산 처리 정보 2를 독출하여 제2 어플리케이션 연산을 처리할 수 있다.
이때, 프로그램 제어부(601)는 연산 처리부(602)에서 제2 어플리케이션 연산을 처리하는 동안 제5 어플리케이션 연산에 필요한 연산 처리 정보 5의 생성을 시작할 수 있다. 다시 말해, 프로그램 제어부(601)는 제4 버퍼(607)에서 제4 어플리케이션 연산의 피드백 정보를 이용하여 연산 처리 정보 5의 생성을 시작할 수 있다. 그러면, 제4 버퍼(607)는 비워질 수 있다.
여기서, 프로그램 제어부(601)에서 연산 처리 정보 5의 생성을 완료하기 이전에, 연산 처리부(602)는 제2 어플리케이션 연산의 처리를 완료할 수 있다. 그러면, 연산 처리부(602)는 제2 어플리케이션 연산의 피드백 정보를 제2 버퍼(605)에 임시 저장할 수 있다.
그리고, 연산 처리부(602)는 제2 어플리케이션 연산의 처리를 완료한 이후, 연산 처리부(602)는 제1 버퍼(604)에서 연산 처리 정보 3을 독출하여 제3 어플리케이션 연산을 처리할 수 있다. 이때, 프로그램 제어부(601)는 연산 처리부(602)에서 제3 어플리케이션 연산을 처리하는 동안 연산 처리 정보 5의 생성을 완료할 수 있다. 그러면, 프로그램 제어부(601)는 연산 처리 정보 5를 제1 버퍼(604)에 임시 저장할 수 있다.
이어, 연산 처리부(602)는 제3 어플리케이션 연산의 처리를 완료한 이후, 연산 처리부(602)는 제1 버퍼(604)에서 연산 처리 정보 5를 독출하여 제5 어플리케이션 연산을 처리할 수 있다.
이때, 프로그램 제어부(601)는 연산 처리부(602)에서 제5 어플리케이션 연산을 처리하는 동안 제6 어플리케이션 연산에 필요한 연산 처리 정보 6을 생성할 수 있다. 다시 말해, 프로그램 제어부(601)는 제2 버퍼(605)에서 제2 어플리케이션의 피드백 정보를 독출하여 연산 처리 정보 6을 생성할 수 있다. 그리고, 프로그램 제어부(601)는 연산 처리 정보 6을 제1 버퍼(604)에 임시 저장할 수 있다. 그러면, 연산 처리부(602)는 연산 처리 정보 6을 이용하여 제6 어플리케이션 연산의 처리를 완료할 수 있다.
이상의 도 4, 도 5, 및 도 6에서는 제4 어플리케이션 연산에 우선 연산 처리가 미리 설정되었음을 가정하였으나, 이는 실시예에 해당하며, 연산 처리부는 처리하고자 하는 어플리케이션 연산에 우선 연산 처리가 설정되었는지 여부를 판단할 수 있다.
예를 들어, 우선 연산 처리가 필요한 경우, 프로그램 제어부는 우선 연산 처리가 필요한 어플리케이션 연산의 연산 처리 정보와 함께 우선 연산 플래그를 통신 채널에 임시 저장할 수 있다. 그러면, 연산 처리부는, 통신 채널에 저장된 우선 연산 플래그를 확인하여 처리하고자 하는 어플리케이션 연산에 우선 연산 처리가 설정되었는지 여부를 판단할 수 있다.
이상의 도 3 내지 도 6에서, 통신 채널은 버퍼를 이용하여 연산 처리 정보 및 피드백 정보 중 적어도 하나를 임시 저장하는 것으로 설명하였으나, 이는 실시예에 해당하며, 통신 채널은 공유 메모리 및 레지스터 중 적어도 하나를 포함할 수 있다.
도 7은 도 2 내지 도 6의 연산 제어부가 피드백 플래그를 이용하여 피드백 정보의 필요성을 판단하는 동작을 설명하기 위해 제공되는 도면이다.
도 7을 참고하면, 프로그램 제어부(701)는 어플리케이션 코드를 실행하여 제1 어플리케이션 연산에 필요한 연산 처리 정보를 통신 채널(702)에 임시 저장할 수 있다.
예를 들어, 프로그램 제어부(701)는 연산 처리부(702)에서 제1 어플리케이션 연산의 처리를 완료할 수 있도록, 제1 어플리케이션 연산에 필요한 연산 파라미터들(704)을 제1 버퍼(704)에 임시 저장할 수 있다. 이때, 프로그램 제어부(701)는 제1 어플리케이션 연산의 피드백 플래그(F: 706)를 연산 파라미터들(705)과 함께 제1 버퍼(704)에 저장할 수 있다.
그러면, 연산 처리부(702)는 제1 버퍼(704)를 확인하고, 제1 어플리케이션 연산의 피드백 플래그(706)에 기초하여 제1 어플리케이션 연산의 피드백 정보를 프로그램 제어부(701)가 필요로 하는 것으로 판단할 수 있다.
이때, 연산 처리부(702)는 제1 버퍼(704)를 확인하여 제1 어플리케이션 연산의 처리를 위한 모든 연산 파라미터들이 제1 버퍼(704)에 저장되었는지 여부를 확인할 수 있다. 모든 연산 파라미터들이 저장된 경우, 연산 처리부(702)는 연산 파라미터들(705)을 이용하여 제1 어플리케션 연산의 처리를 완료할 수 있다. 그리고, 연산 처리부(702)는 제1 어플리케이션 연산의 피드백 정보를 제2 버퍼(707)에 임시 저장할 수 있다.
이상의 도 3 내지 도 7에서, 1)프로그램 제어부와 연산 처리부가 서로 분담하여 어플리케이션 연산을 처리할 수도 있고, 2)프로그램 제어부는 어플리케이션 코드를 실행하고 연산 처리부는 어플리케이션 연산에 필요한 전체 연산을 처리할 수도 있다.
도 8은 일실시예에 따른 프로그램 제어부가 어플리케이션 코드를 실행하고, 연산 처리부가 어플리케이션 연산을 처리하는 동작을 설명하기 위해 제공되는 도면이다.
특히, 도 8은 프로그램 제어부는 6개의 어플리케이션 연산에 필요한 어플리케이션 코드를 실행하고, 연산 처리부는 6개의 어플리케이션 연산을 처리하는 실시예를 설명하기 위한 도면이다.
도 8에서, 통신 채널은 제1 내지 제4 버퍼를 포함하며, 제1 버퍼는 Forward FIFO 버퍼, 제2 버퍼는 Backward FIFO 버퍼, 제3 버퍼는 Forward Quick FIFO 버퍼, 및 제4 버퍼는 Backward Quick FIFO 버퍼인 경우를 가정한다.
그리고, 제4 어플리케이션 연산은 우선 연산 처리가 설정되어 있고, 프로그램 제어부(801)는 제3 어플리케이션 연산의 피드백 정보와 제4 어플리케이션 연산의 피드백 정보를 필요로 함을 연산 처리부(802)와 미리 약속한 것으로 가정한다. 그리고, 제5 어플리케이션 연산은 제4 어플리케이션 연산의 피드백 정보를 필요로 하고, 제6 어플리케이션 연산을 제3 어플리케이션 연산의 피드백 정보를 필요로 함을 가정한다.
도 8을 참고하면, 프로그램 제어부(801)는 제1 어플리케이션 코드를 실행하여 제1 어플리케이션 연산의 처리를 준비할 수 있다. 일례로, 프로그램 제어부(801)는 연산 처리부(802)에서 제1 어플리케이션 연산을 처리하기 위해 필요한 연산 파라미터들을 생성할 수 있다. 예를 들어, 제1 어플리케이션 연산의 처리를 준비 하기 위해 이용되는 연산 파라미터는, 제1 어플리케이션 연산에서 호출될 함수 정보, 인덱스 정보 등을 포함할 수 있다.
그리고, 프로그램 제어부(801)는 제1 어플리케이션 연산을 처리하기 위해 필요한 연산 파라미터들, 제1 어플리케이션 연산 처리에 필요한 데이터, 및 데이터가 저장된 메모리 주소 중 적어도 하나를 포함하는 연산 처리 정보 1을 제1 버퍼(803)에 임시 저장할 수 있다.
그리고, 연산 처리부(802)는 제1 및 제3 버퍼를 확인할 수 있다. 그러면, 연산 처리부(802)는 제1 버퍼(803)에 연산 처리 정보 1이 임시 저장됨을 확인할 수 있다. 그리고, 연산 처리부(802)는 제1 버퍼(803)에서 연산 처리 정보 1을 독출하여 제1 어플리케이션 연산을 처리할 수 있다. 이처럼, 연산 처리 정보 1이 독출됨에 따라, 제1 버퍼(803)는 비워질 수 있다.
이때, 연산 처리 정보 1가 제1 버퍼(803)에 임시 저장된 즉시, 프로그램 제어부(801)는 제2 어플리케이션 코드를 실행하여 제2 어플리케이션 연산의 처리를 준비할 수 있다. 그러면, 프로그램 제어부(801)는 연산 처리 정보 2를 제1 버퍼(804)에 임시 저장할 수 있다. 이어, 연산 처리 정보 2가 제1 버퍼(804)에 임시 저장된 즉시, 프로그램 제어부(801)는 제3 어플리케이션 코드를 실행하여 제3 어플리케이션 연산의 처리를 준비할 수 있다.
그러면, 프로그램 제어부(810)는 연산 처리 정보 3을 제1 버퍼(805)에 임시 저장할 수 있다. 이때, 연산 처리부(802)에서 제1 어플리케이션 연산의 처리를 완료하지 않은 경우, 제1 버퍼(805)는 연산 처리 정보 2 및 연산 처리 정보 3을 임시 저장할 수 있다. 이어, 제1 어플리케이션 연산의 처리가 완료된 경우, 연산 처리부(802)는 제1 버퍼(805)에서 연산 처리 정보 2를 독출하여 제2 어플리케이션 연산을 처리할 수 있다. 그러면, 연산 처리 정보 2는 제1 버퍼(806)에서 비워지고, 연산 처리 정보 3은제1 버퍼(806)에 남아 있을 수 있다.
그리고, 연산 처리 정보 3이 제1 버퍼(805)에 임시 저장된 즉시, 프로그램 제어부(801)는 제4 어플리케이션 연산 코드를 실행하여 제4 어플리케이션 연산의 처리를 준비할 수 있다. 이때, 프로그램 제어부(801)는 제4 어플리케이션 연산에 우선 연산 처리가 설정됨에 따라, 연산 처리 정보 4를 제3 버퍼(807)에 임시 저장할 수 있다.
여기서, 연산 처리 정보 4가 제3 버퍼(807)에 임시 저장된 경우, 연산 처리부(802)는 제2 어플리케이션 연산을 처리하고 있는 중일 수 있다. 그러면, 제1 버퍼(806)는 연산 처리 정보 3을 저장하고, 제3 버퍼(807)는 연산 처리 정보 4를 저장하고 있을 수 있다.
이때, 제5 어플리케이션 연산은 제4 어플리케이션 연산의 피드백 정보를 이용하여 처리될 수 있다. 이에 따라, 프로그램 제어부(801)는 연산 처리부(802)에서 제4 어플리케이션 연산의 처리를 완료할 때까지 기다릴 수 있다. 예를 들어, 프로그램 제어부(801)는 제4 어플리케이션 연산의 피드백 정보가 제4 버퍼(809)에 저장될 때까지 제4 버퍼(809)를 확인하며 기다릴 수 있다.
그리고, 제2 어플리케이션 연산의 처리가 완료된 경우, 연산 처리부(802)는 제1 버퍼(806) 및 제3 버퍼(807)를 확인할 수 있다. 여기서, 제3 버퍼(807)는 우선 연산 처리가 설정된 어플리케이션 연산의 연산 처리 정보를 저장하는 버퍼일 수 있다. 다시 말해, 제3 버퍼는 제1 버퍼에 저장된 연산 처리 정보보다 우선 처리가 필요한 연산 처리 정보를 저장하는 버퍼일 수 있다.
이에 따라, 연산 처리부(802)는 제3 버퍼(807)에서 연산 처리 정보 4를 독출하여 제4 어플리케이션 연산을 처리할 수 있다. 그러면, 제3 버퍼(808)는 비워질 수 있다.
그리고, 연산 처리부(802)는 제4 어플리케이션 연산의 피드백 정보를 제4 버퍼(809)에 임시 저장할 수 있다. 여기서, 제4 버퍼(809)는 우선 연산 처리가 설정된 어플리케이션 연산의 피드백 정보를 저장하는 버퍼일 수 있다. 다시 말해, 제4 버퍼(809)는 다음 어플리케이션 연산의 처리를 위해 프로그램 제어부(801)에서 즉시 확인이 필요한 어플리케이션 연산의 피드백 정보를 저장하는 버퍼일 수 있다.
이때, 제4 어플리케이션 연산의 피드백 정보가 제4 버퍼(809)에 저장된 즉시, 연산 처리부(802)는 제1 버퍼(810)에서 연산 처리 정보 3을 독출하여 제3 어플리케이션 연산을 처할 수 있다.
이때, 연산 처리부(802)에서 제3 어플리케이션 연산 처리를 완료하기 이전에, 프로그램 제어부(801)는 제4 버퍼(809)에서 제4 어플리케이션 연산의 피드백 정보를 독출하여 제5 어플리케이션 연산의 처리를 준비할 수 있다. 그리고, 프로그램 제어부(801)는 연산 처리 정보 5를 제1 버퍼(811)에 임시 저장할 수 있다. 이어, 프로그램 제어부(801)는 제4 버퍼(812)에 제3 어플리케이션의 피드백 정보가 저장될 때까지 기다릴 수 있다.
이때, 제3 어플리케이션 연산의 처리가 완료된 경우, 연산 처리부(802)는 제3 어플리케이션의 피드백 정보를 제4 버퍼(812)에 임시 저장할 수 있다. 여기서, 연산 처리부(802)는 제3 어플리케이션 연산의 피드백 정보를 제2 버퍼(미도시)에 임시 저장할 수도 있다.
그러면, 프로그램 제어부(801)는 제6 어플리케이션 코드를 실행하고, 제4 버퍼(812)에서 제3 어플리케이션의 피드백 정보를 독출하여 제6 어플리케이션 연산의 처리를 준비할 수 있다. 그리고, 프로그램 제어부(801)는 연산 처리 정보 6을 제1 버퍼(813)에 임시 저장할 수 있다.
이때, 연산 처리부(802)에서 제5 어플리케이션 연산을 처리하고 있는 경우, 연산 처리부(802)는 제5 어플리케이션 연산의 처리를 완료한 이후, 연산 처리 정보 6을 이용하여 제6 어플리케이션 연산의 처리를 완료할 수 있다.
도 9는 일실시예에 따른 연산 처리 장치에서 어플리케이션의 실행을 가속화하는 동작을 설명하기 위해 제공되는 도면이다.
도 9에서, 연산 처리 장치는, 하나의 매크로 블록을 처리하는 비디오 동영상 복호화 처리 어플리케이션을 실행하는 경우를 가정한다.
도 9를 참고하면, 프로그램 제어부(901)는 714 사이클(cycle)동안 비디오 동영상 복호화 처리 어플리케이션을 실행하기 위한 어플리케이션 코드 및 어플리케이션 연산을 처리할 수 있다. 그리고, 연산 처리부(902)는 536 사이클 동안 비디오 동영상 복호화 처리 어플리케이션을 실행하기 위한 어플리케이션 연산을 처리할 수 있다.
이때, 프로그램 제어부(901)는 어플리케이션 코드의 실행에 따른 어플리케이션 연산을 연산 처리부(902)와 교차로 처리하지 않고, 동시에 병렬로 연산 처리하여 어플리케이션의 실행을 가속화할 수 있다.
예를 들어, 프로그램 제어부(901)는 102 사이클 동안 어플리케이션 연산을 처리하고, 연산 처리부(902)에서 21 사이클 동안 어플리케이션 연산을 처리할 때까지 기다리지 않고 바로 129 사이클 동안 다른 어플리케이션 연산을 처리할 수 있다.
마찬가지로, 연산 처리부(902)는 21 사이클 동안 어플리케이션 연산을 처리하고, 프로그램 제어부(901)가 102 사이클 동안 어플리케이션 연산을 처리할 때까지 기다리지 않고, 바로 7 사이클 동안 다른 어플리케이션 연산을 처리할 수 있다. 이에 따라, 어플리케이션 연산 처리 시 기다리는 동안 발생하는 지연(delay)이 감소 또는 제거되어 어플리케이션의 실행 시간이 단축될 수 있다.
도 10은 일실시예에 따른 연산 처리 장치가 하나 이상의 프로그램 제어부를 포함하는 구성을 도시한 도면이다.
도 10에 따르면, 연산 처리 장치(1000)는 하나 이상의 프로그램 제어부(1001), 하나 이상의 연산 처리부(1002), 및 통신 채널(1003)을 포함할 수 있다.
일례로, N개의 프로그램 제어부들은 제1 내지 제N 어플리케이션 코드를 서로 나누어 실행하여 제1 내지 제N 어플리케이션 연산의 처리를 준비할 수 있다. 그리고, N개의 프로그램 제어부들은 연산 처리 정보 1 내지 연산 처리 정보 N을 통신 채널에 임시 저장할 수 있다.
그리고, M개의 연산 처리부들은 제1 내지 제N 어플리케이션 연산을 서로 나누어 병렬 처리할 수 있다. 이때, M개의 연산 처리부들은 연산 처리 정보 1 내지 연산 처리 정보 N을 이용하여 제1 내지 제N 어플리케이션 연산을 처리할 수 있다. 여기서, N과 M은 같을 수도 있고, 서로 다를 수도 있다. 다시 말해, 연산 처리부와 프로그램 제어부의 개수가 동일할 수도 있고 상이할 수도 있다.
이때, M개의 연산 처리부들은 필요에 따라 피드백 정보를 통신 채널에 임시 저장할 수 있다. 여기서, 필요에 따라 피드백 정보를 통신 채널에 저장하는 동작은 도 2의 연산 처리부에서 피드백 정보를 통신 채널에 저장하는 동작과 동일하므로, 중복되는 설명은 생략하기로 한다.
다른 예로, N개의 프로그램 제어부들은 제1 내지 제N 어플리케이션 코드를 서로 나누어 실행할 수 있다. 그리고, N개의 프로그램 제어부들은 각각에서 실행하는 어플리케이션 코드에 해당하는 어플리케이션 연산의 일부 연산을 처리할 수 있다. 그리고, N개의 프로그램 제어부들은 처리된 일부 연산의 연산 결과를 포함하는 연산 처리 정보를 통신 채널에 임시 저장할 수 있다.
그러면, M개의 연산 처리부들은 N개의 어플리케이션 연산을 대상으로, N개의 프로그램 제어부들에서 처리된 일부 연산을 제외한 연산을 처리할 수 있다. 이처럼, 어플리케이션 코드와 어플리케이션 연산을 수행하는 프로그램 제어부와 연산 처리부의 개수가 증가할수록 어플리케이션의 실행 시간이 단축하여 효율성이 높아질 수 있다.
도 11은 일실시예에 따른 연산 처리 방법을 도시한 흐름도이다.
도 11의 연산 처리 방법은 도 2의 연산 처리 장치에 의해 수행되며, 연산 처리 장치는 프로그램 제어부 및 연산 처리부를 포함할 수 있다.
도 11을 참고하면, 1101 단계에서, 프로그램 제어부는, 어플리케이션 코드를 실행할 수 있다.
여기서, 어플리케이션 코드는 어플리케이션을 구동하기 위해 연산 처리를 지시하는 명령어일 수 있다. 예를 들어, 어플리케이션 코드는, 조건부 분기 명령어(Conditional Branch Instruction), 재귀 함수(Function Call), 및 분기 명령어(Branch Instruction) 등을 포함할 수 있다.
그리고, 1102 단계에서, 프로그램 제어부는, 어플리케이션 연산에 필요한 연산 처리 정보를 통신 채널에 임시 저장할 수 있다.
여기서, 어플리케이션 연산은 어플리케이션 코드가 실행됨에 따라 어플리케이션을 구동하기 위해 필요한 연산일 수 있다. 그리고, 연산 처리 정보는, 어플리케이션 연산의 처리에 필요한 데이터, 데이터가 저장된 메모리의 주소, 및 연산 파라미터 중 적어도 하나를 포함할 수 있다.
일례로, 프로그램 제어부는, 어플리케이션 코드의 실행에 기초하여 어플리케이션 연산의 처리를 준비할 수 있다. 즉, 프로그램 제어부는, 연산 처리부에서 어플리케이션 연산을 처리하기 위해 필요로 하는 연산 파라미터들을 준비하여 통신 채널에 임시 저장할 수 있다. 예를 들어, 준비 작업을 위해 이용되는 연산 파라미터는, 연산 처리부에서 처리될 어플리케이션 연산에서 호출될 함수 정보, 인덱스 정보 등을 포함할 수 있다.
다른 예로, 프로그램 제어부는, 어플리케이션 코드의 실행에 기초하여 어플리케이션 연산의 전체 연산 중 일부 연산을 처리할 수 있다. 그리고, 프로그램 제어부는, 처리된 일부 연산에 해당하는 연산 파라미터들을 통신 채널에 임시 저장할 수 있다. 예를 들어, 프로그램 제어부에서 일부 연산을 처리한 경우, 통신 채널에 저장된 연산 파라미터는, 처리된 일부 연산의 처리 결과를 포함할 수 있다.
이때, 프로그램 제어부는, 통신 채널의 오버 플로우 존재 여부에 기초하여 연산 처리 정보를 통신 채널에 저장할 수 있다. 예를 들어, 오버 플로우가 존재하는 경우, 프로그램 제어부는, 통신 채널의 저장 공간이 확보될 때까지 기다린 후 연산 처리 정보를 통신 채널에 저장할 수 있다.
이어, 1103 단계에서, 연산 처리 정보를 통신 채널에 저장한 이후, 프로그램 제어부는, 다음 어플리케이션 코드를 실행할 수 있다. 그리고, 프로그램 제어부는, 다음 어플리케이션 연산에 필요한 연산 처리 정보를 통신 채널에 임시 저장할 수 있다. 다시 말해, 프로그램 제어부는, 연산 처리부에서 어플리케이션 연산의 처리를 완료할 때까지 기다리지 않고 다음 어플리케이션 코드를 실행할 수 있다.
예를 들어, 제1 어플리케이션 연산에 필요한 연산 처리 정보 1을 통신 채널에 임시 저장한 이후, 프로그램 제어부는, 제1 어플리케이션 연산의 처리가 완료되기 전에, 연산 처리 장치는, 제2 어플리케이션 연산에 필요한 연산 처리 정보 2를 통신 채널에 임시 저장할 수 있다. 여기서, 제2 어플리케이션 연산은, 제1 어플리케이션 연산 이후에 처리될 연산일 수 있다.
이어, 1104 단계에서, 연산 처리부는, 통신 채널에 연산 처리 정보가 저장되었는지 여부를 확인할 수 있다.
여기서, 통신 채널은, 연산 처리 정보, 및 피드백 정보 중 적어도 하나를 임시 저장하는 저장 공간일 수 있다. 예를 들어, 통신 채널은, 버퍼, 공유 메모리 및 레지스터 중 적어도 하나를 포함할 수 있다.
예를 들어, 프로그램 제어부에서 연산 처리 정보를 통신 채널에 저장한 경우, 연산 처리부는, 통신 채널을 모니터링하여 연산 처리 정보가 저장됨을 확인할 수 있다. 그리고, 연산 처리부는 어플리케이션 연산에 필요한 모든 연산 파라미터들이 통신 채널에 저장되었는지 여부를 확인할 수 있다.
그러면, 1105 단계에서, 연산 처리부는, 통신 채널에서 연산 처리 정보를 독출하여 어플리케이션 연산을 처리할 수 있다.
일례로, 프로그램 제어부에서 어플리케이션 코드를 실행하여 어플리케이션 연산의 처리를 준비만한 경우, 연산 처리부는, 연산 처리 정보를 이용하여 어플리케이션 연산을 100% 처리할 수 있다.
다른 예로, 프로그램 제어부에서 어플리케이션 연산의 일부 연산을 처리한 경우, 연산 처리부는, 연산 처리 정보를 이용하여 일부 연산을 제외한 연산을 처리할 수 있다.
그리고, 연산 처리부는, 어플리케이션 연산을 처리한 결과를 레지스터 파일, 메모리 중 적어도 하나에 저장할 수 있다. 이때, 연산 처리부는, 필요에 따라 어플리케이션 연산을 처리한 결과를 통신 채널을 이용하여 프로그램 제어부로 피드백할 수도 있다.
도 12는 일실시예에 따른 우선 연산 처리가 설정된 어플리케이션 연산을 처리하는 방법을 도시한 흐름도이다.
도 12의 연산 처리 방법은 도 2의 연산 처리 장치에 의해 수행되며, 연산 처리 장치는 프로그램 제어부 및 연산 처리부를 포함할 수 있다.
도 12을 참고하면, 1201 단계에서, 프로그램 제어부는, 어플리케이션 코드를 실행할 수 있다.
이때, 어플리케이션 연산에 우선 연산 처리가 설정되지 않은 경우(1202:NO), 1203 단계에서, 프로그램 제어부는, 우선 연산 처리가 설정되지 않은 어플리케이션 연산의 연산 처리 정보 1를 통신 채널에 임시 저장할 수 있다. 예를 들어, 프로그램 제어부는, Forward FIFO 버퍼에 연산 처리 정보 1을 임시 저장할 수 있다.
그리고, 어플리케이션 연산에 우선 연산 처리가 설정된 경우(1202:YES), 1204 단계에서, 프로그램 제어부는, 우선 연산 처리가 설정된 어플리케이션 연산의 연산 처리 정보 2를 통신 채널에 임시 저장할 수 있다.
예를 들어, 프로그램 제어부는, Forward Quick FIFO 버퍼에 연산 처리 정보 2를 임시 저장할 수 있다. 여기서, Forward Quick FIFO 버퍼는 Forward FIFO 버퍼에 저장된 연산 처리 정보보다 우선적으로 처리를 요구하는 연산을 저장하기 위해 이용될 수 있다.
여기서, 프로그램 제어부와 연산 처리부는 어플리케이션을 실행하기 위해 필요한 어플리케이션 연산 중 우선 연산 처리가 설정된 어플리케이션 연산을 미리 약속할 수 있다.
이때, 미리 약속하지 않은 경우, 프로그램 제어부는, 연산 처리 정보와 함께 우선 연산 플래그를 통신 채널에 임시 저장할 수 있다.
예를 들어, 우선 연산 처리가 필요한 어플리케이션 연산의 연산 처리 정보 2와 우선 연산 처리가 필요하지 않은 어플리케이션 연산의 연산 처리 정보 1이 모두 Forward FIFO 버퍼를 이용하는 경우, 프로그램 제어부는 우선 연산 플래그를 연산 처리 정보 2와 함께 Forward FIFO 버퍼에 저장할 수 있다. 이때, 프로그램 제어부는, 현재 어플리케이션 연산의 처리 결과를 즉시 확인해야 하는 경우에 현재 어플리케이션 연산이 우선 연산 처리가 필요한 연산임을 판단할 수 있다.
이어, 1205 단계에서, 연산 처리부는, 통신 채널을 모니터링하여 통신 채널에 연산 처리 정보가 저장되었는지 여부를 확인할 수 있다.
예를 들어, 연산 처리부는, Forward FIFO 버퍼 및 Forward Quick FIFO 버퍼를 모니터링하여 연산 처리 정보가 저장되었는지 여부를 확인할 수 있다. 이때, 연산 처리부는 Forward FIFO 버퍼 또는 Forward Quick FIFO 버퍼에 어플리케이션 연산에 필요한 모든 연산 파라미터들이 통신 채널에 저장되었는지 여부를 확인할 수 있다.
그리고, 연산 처리 정보 2가 저장됨을 확인한 경우, 1206 단계에서, 연산 처리부는, 통신 채널에서 연산 처리 정보 2를 독출하여 우선 연산 처리가 설정된 어플리케이션 연산을 처리할 수 있다.
예를 들어, 연산 처리부가 연산 처리 정보 1은 Forward FIFO 버퍼에 저장되고, 연산 처리 정보 2는 Forward Quick FIFO 버퍼에 저장됨을 확인한 경우, 연산 처리부는 연산 처리 정보 2에 해당하는 어플리케이션 연산을 연산 처리 정보 1에 해당하는 어플리케이션 연산보다 우선적으로 처리할 수 있다.
이때, 프로그램 제어부가 우선 연산 처리가 설정된 어플리케이션 연산의 처리 결과인 피드백 정보를 필요로 함을 연산 처리부와 미리 약속한 경우, 연산 처리부는, 피드백 정보를 통신 채널에 임시 저장할 수 있다.
예를 들어, 연산 처리부는, Backward FIFO 버퍼 및 Backward Quick FIFO 버퍼 중 적어도 하나에 피드백 정보를 저장할 수 있다. 그러면, 프로그램 제어부는, 통신 채널에서 피드백 정보를 독출하여 다음 어플리케이션 연산 처리에 필요한 연산 처리 정보를 통신 채널에 저장할 수 있다.
이어, 1207 단계에서, 연산 처리부는, 통신 채널에서 연산 처리 정보 1을 독 출하여 어플리케이션 연산을 처리할 수 있다.
예를 들어, 우선 연산 처리가 설정된 어플리케이션 연산의 처리가 완료되면, 연산 처리부는, 우선 연산 처리가 설정되지 않은 어플리케이션의 연산을 처리할 수 있다.
도 13은 일실시예에 따른 피드백 정보의 피드백 필요성을 판단하는 방법을 설명하기 위해 제공되는 흐름도이다.
도 13에서 피드백 필요성을 판단하는 방법은 도 2의 연산 처리 장치에 의해 수행되며, 연산 처리 장치는 프로그램 제어부 및 연산 처리부를 포함할 수 있다.
도 13을 참고하면, 1301 단계에서, 프로그램 제어부는, 어플리케이션 코드를 실행할 수 있다.
그리고, 1302 단계에서, 프로그램 제어부는, 제1 어플리케이션 연산에 필요한 연산 처리 정보 1을 통신 채널에 임시 저장할 수 있다.
이때, 연산 처리부에서 제1 어플리케이션 연산을 처리한 결과인 피드백 정보가 필요한 경우, 1303 단계에서, 프로그램 제어부는, 피드백 플래그를 연산 처리 정보와 함께 통신 채널에 임시 저장할 수 있다. 예를 들어, 프로그램 제어부는, Forward FIFO 버퍼 및 Forward Quick FIFO 버퍼 중 적어도 하나에 연산 처리 정보 1과 피드백 플래그를 저장할 수 있다.
일례로, 제2 어플리케이션 연산을 처리하는데 제1 어플리케이션 연산의 피드백 정보가 필요한 경우, 프로그램 제어부는, 연산 처리 정보 1과 함께 피드백 플래그를 통신 채널에 임시 저장할 수 있다. 이때, 프로그램 제어부와 연산 처리부가 어플리케이션 구동 시 피드백 정보를 필요로 하는 어플리케이션 연산을 미리 약속한 경우, 프로그램 제어부는 피드백 플래그를 통신 채널에 저장하지 않을 수 있다.
이어, 1304 단계에서, 연산 처리 정보 1과 피드백 플래그를 통신 채널에 저장한 이후, 프로그램 제어부는, 제2 어플리케이션 코드를 실행할 수 있다.
그리고, 프로그램 제어부는, 제2 어플리케이션 연산에 필요한 연산 처리 정보 2를 통신 채널에 임시 저장할 수 있다. 다시 말해, 프로그램 제어부는, 연산 처리부에서 제1 어플리케이션 연산의 처리를 완료할 때까지 기다리지 않고 제2 어플리케이션 코드를 실행하여 연산 처리 정보 2를 통신 채널에 임시 저장할 수 있다.
그리고, 1305 단계에서, 연산 처리부는, 통신 채널을 모니터링하여 통신 채널에 연산 처리 정보가 저장되었는지 여부를 확인할 수 있다.
이때, 연산 처리부는, 통신 채널을 모니터링하여 피드백 플래그가 통신 채널에 저장됨을 확인할 수 있다. 그러면, 연산 처리부는, 피드백 플래그에 기초하여 어플리케이션 연산의 피드백 정보가 프로그램 제어부에서 필요함을 판단할 수 있다.
이어, 1306 단계에서, 연산 처리부는, 통신 채널에서 연산 처리 정보 1을 독출하여 제1 어플리케이션 연산을 처리할 수 있다.
그리고, 1307 단계에서, 연산 처리부는, 제1 어플리케이션 연산을 처리한 결과인 피드백 정보를 통신 채널에 임시 저장할 수 있다. 이어, 연산 처리부는, 연산 처리 정보 2를 이용하여 제2 어플리케이션 연산을 처리할 수 있다.
이때, 제1 어플리케이션 연산의 피드백 정보가 통신 채널에 저장된 경우, 1308 단계에서, 프로그램 제어부는, 통신 채널에서 피드백 정보를 독출하여 제3 어플리케이션 연산에 필요한 연산 처리 정보 3을 생성할 수 있다. 그리고, 프로그램 제어부는, 생성된 연산 처리 정보 3을 통신 채널에 임시 저장할 수 있다.
예를 들어, 프로그램 제어부는, 제1 어플리케이션 연산의 피드백 정보를 이용하여 제3 어플리케이션 연산에 필요한 연산 처리 정보 3을 통신 채널에 저장할 수 있다. 그러면, 1309 단계에서, 연산 처리부는, 연산 처리 정보 3을 이용하여 제3 어플리케이션 연산을 처리할 수 있다.
이상의 도 12 및 도 13에서 통신 채널로는 FIFO 버퍼를 이용하는 것으로 설명하였으나, 이는 실시예에 해당하며, 통신 채널로는 공유 메모리 및 레지스터 중 적어도 하나가 이용될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.

Claims (20)

  1. 어플리케이션 코드를 실행하여 어플리케이션 연산에 필요한 연산 처리 정보를 통신 채널에 저장하는 프로그램 제어부; 및
    상기 통신 채널에 저장된 연산 처리 정보를 이용하여 어플리케이션 연산을 처리하는 연산 처리부
    를 포함하고,
    상기 프로그램 제어부는,
    제2 어플리케이션 연산과 관련하여 제1 어플리케이션 연산에 대한 피드백 정보가 요구되는 경우, 피드백 플래그를 상기 제1 어플리케이션 연산에 대한 연산 처리 정보에 대응하여 상기 통신 채널에 저장하고,
    상기 연산 처리부는,
    상기 피드백 플래그가 상기 통신 채널에 저장된 경우, 상기 제1 어플리케이션 연산을 처리한 결과에 대응하는 피드백 정보를 상기 통신 채널에 저장하고,
    상기 프로그램 제어부는,
    상기 통신 채널에 저장된 피드백 정보에 기초하여 상기 제2 어플리케이션 연산을 처리하는 연산 처리 장치.
  2. 제1항에 있어서,
    상기 프로그램 제어부는,
    상기 연산 처리부에서 상기 제1 어플리케이션 연산을 처리 완료하기 전에, 상기 제2 어플리케이션 연산에 필요한 연산 처리 정보를 통신 채널에 저장하고,
    상기 제2 어플리케이션 연산은, 상기 제1 어플리케이션 연산 이후에 처리될 연산인 연산 처리 장치.
  3. 삭제
  4. 삭제
  5. 제1항에 있어서,
    상기 프로그램 제어부는,
    우선 연산 처리가 설정된 어플리케이션 연산의 연산 처리 정보를 통신 채널에 저장하는 연산 처리 장치.
  6. 제1항에 있어서,
    상기 연산 처리부는,
    우선 연산 처리가 설정된 어플리케이션 연산의 피드백(Feed-back) 정보를 통신 채널에 저장하는 연산 처리 장치.
  7. 제1항에 있어서,
    상기 프로그램 제어부는,
    상기 통신 채널의 오버 플로우 존재 여부에 기초하여 상기 연산 처리 정보를 상기 통신 채널에 저장하는 연산 처리 장치.
  8. 제1항에 있어서,
    상기 프로그램 제어부는,
    상기 어플리케이션 연산에 필요한 전체 연산 중 일부 연산을 처리하고,
    상기 연산 처리부는,
    상기 일부 연산을 제외한 연산을 처리하여 상기 어플리케이션 연산의 처리를 완료하는 연산 처리 장치.
  9. 제1항에 있어서,
    상기 연산 처리 정보는,
    상기 어플리케이션 연산 처리에 필요한 데이터, 상기 데이터가 저장된 메모리 주소, 및 연산 파라미터 중 적어도 하나를 포함하는 연산 처리 장치.
  10. 제1항에 있어서,
    상기 통신 채널은,
    버퍼, 공유 메모리 및 레지스터 중 적어도 하나를 포함하는 연산 처리 장치.
  11. 연산 처리 장치에 의해 수행되는 연산 처리 방법에 있어서,
    어플리케이션 코드를 실행하여 어플리케이션 연산에 필요한 연산 처리 정보를 통신 채널에 저장하는 단계; 및
    상기 통신 채널에 저장된 연산 처리 정보를 이용하여 어플리케이션 연산을 처리하는 단계
    를 포함하고,
    상기 저장하는 단계는,
    제2 어플리케이션 연산과 관련하여 제1 어플리케이션 연산에 대한 피드백 정보가 요구되는 경우, 피드백 플래그를 상기 제1 어플리케이션 연산에 대한 연산 처리 정보에 대응하여 상기 통신 채널에 저장하고,
    상기 연산을 처리하는 단계는,
    상기 피드백 플래그가 상기 통신 채널에 저장된 경우, 상기 제1 어플리케이션 연산을 처리한 결과에 대응하는 피드백 정보를 상기 통신 채널에 저장하고,
    상기 통신 채널에 저장된 피드백 정보에 기초하여 상기 제2 어플리케이션 연산을 처리하는 연산 처리 방법.
  12. 제11항에 있어서,
    상기 연산 처리 정보를 통신 채널에 저장하는 단계는,
    상기 통신 채널에 저장된 연산 처리 정보를 이용하여 상기 제1 어플리케이션 연산을 처리 완료하기 전에, 상기 제2 어플리케이션 연산에 필요한 연산 처리 정보를 통신 채널에 저장하고,
    상기 제2 어플리케이션 연산은, 상기 제1 어플리케이션 연산 이후에 처리될 연산인 연산 처리 방법.
  13. 삭제
  14. 삭제
  15. 제11항에 있어서,
    상기 연산 처리 정보를 통신 채널에 저장하는 단계는,
    우선 연산 처리가 설정된 어플리케이션 연산의 연산 처리 정보를 통신 채널에 저장하는 연산 처리 방법.
  16. 제11항에 있어서,
    상기 어플리케이션 연산을 처리하는 단계는,
    우선 연산 처리가 설정된 어플리케이션 연산의 피드백(Feed-back) 정보를 통신 채널에 저장하는 연산 처리 방법.
  17. 제11항에 있어서,
    상기 연산 처리 정보를 통신 채널에 저장하는 단계는,
    상기 통신 채널의 오버 플로우 존재 여부에 기초하여 상기 연산 처리 정보를 상기 통신 채널에 저장하는 연산 처리 방법.
  18. 제11항에 있어서,
    상기 연산 처리 정보를 통신 채널에 저장하는 단계는,
    상기 어플리케이션 연산에 필요한 전체 연산 중 일부 연산을 처리하고,
    상기 어플리케이션 연산을 처리하는 단계는,
    상기 일부 연산을 제외한 연산을 처리하여 상기 어플리케이션 연산의 처리를 완료하는 연산 처리 방법.
  19. 제11항에 있어서,
    상기 통신 채널은,
    버퍼, 공유 메모리 및 레지스터 중 적어도 하나를 포함하는 연산 처리 방법.
  20. 제11항, 제12항 및 제15항 내지 제19항 중 어느 한 항의 방법을 실행하기 위한 프로그램이 기록된 컴퓨터에서 판독 가능한 기록 매체.
KR1020120078847A 2012-07-19 2012-07-19 어플리케이션을 고속으로 처리하는 연산 처리 장치 및 방법 KR101984635B1 (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR1020120078847A KR101984635B1 (ko) 2012-07-19 2012-07-19 어플리케이션을 고속으로 처리하는 연산 처리 장치 및 방법
JP2013148332A JP6433645B2 (ja) 2012-07-19 2013-07-17 アプリケーションを高速に処理する演算処理装置及び方法
US13/945,267 US9471309B2 (en) 2012-07-19 2013-07-18 Arithmetic processing apparatus and method for high speed processing of application
EP13177168.5A EP2687985A3 (en) 2012-07-19 2013-07-19 Arithmetic processing apparatus and method for high speed processing of application
CN201310306144.5A CN103577254B (zh) 2012-07-19 2013-07-19 用于高速处理应用的算术处理设备和方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020120078847A KR101984635B1 (ko) 2012-07-19 2012-07-19 어플리케이션을 고속으로 처리하는 연산 처리 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20140012320A KR20140012320A (ko) 2014-02-03
KR101984635B1 true KR101984635B1 (ko) 2019-05-31

Family

ID=48832784

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020120078847A KR101984635B1 (ko) 2012-07-19 2012-07-19 어플리케이션을 고속으로 처리하는 연산 처리 장치 및 방법

Country Status (5)

Country Link
US (1) US9471309B2 (ko)
EP (1) EP2687985A3 (ko)
JP (1) JP6433645B2 (ko)
KR (1) KR101984635B1 (ko)
CN (1) CN103577254B (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101971173B1 (ko) * 2016-11-23 2019-04-22 주식회사 모르미 병렬 처리부 및 병렬 처리 장치
US10884976B2 (en) 2018-05-22 2021-01-05 Morumi Co., Ltd. Parallel processing unit and device for parallel processing
KR102089450B1 (ko) * 2019-09-19 2020-05-26 한국과학기술정보연구원 데이터이주장치 및 그 동작 방법

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007026095A (ja) * 2005-07-15 2007-02-01 Matsushita Electric Ind Co Ltd 並列演算装置

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04295951A (ja) * 1991-03-25 1992-10-20 Omron Corp マルチプロセッサシステムにおけるデータ通信装置
KR970006413B1 (ko) * 1993-12-29 1997-04-28 한국전기통신공사 퍼지 컴퓨터
US5590323A (en) 1994-05-13 1996-12-31 Lucent Technologies Inc. Optimal parallel processor architecture for real time multitasking
US5983278A (en) * 1996-04-19 1999-11-09 Lucent Technologies Inc. Low-loss, fair bandwidth allocation flow control in a packet switch
US6741294B2 (en) 1997-12-08 2004-05-25 Sony Corporation Digital signal processor and digital signal processing method
US6952827B1 (en) 1998-11-13 2005-10-04 Cray Inc. User program and operating system interface in a multithreaded environment
US6668317B1 (en) 1999-08-31 2003-12-23 Intel Corporation Microengine for parallel processor architecture
US6574725B1 (en) * 1999-11-01 2003-06-03 Advanced Micro Devices, Inc. Method and mechanism for speculatively executing threads of instructions
US7231500B2 (en) 2001-03-22 2007-06-12 Sony Computer Entertainment Inc. External data interface in a computer architecture for broadband networks
US7185094B2 (en) 2001-03-30 2007-02-27 Sandcherry, Inc. Media session framework using a control module to direct and manage application and service servers
GB0407384D0 (en) 2004-03-31 2004-05-05 Ignios Ltd Resource management in a multicore processor
CN101120310B (zh) * 2005-02-14 2010-06-09 皇家飞利浦电子股份有限公司 一种用于并行地处理多个操作数的电子电路
JP4033215B2 (ja) * 2006-01-31 2008-01-16 セイコーエプソン株式会社 マルチプロセッサシステム及びマルチプロセッサシステムの制御方法をコンピュータに実行させるためのプログラム
JP4987882B2 (ja) 2006-02-03 2012-07-25 ラッセル・エイチ・フィッシュ スレッドに最適化されたマルチプロセッサアーキテクチャ
KR101421054B1 (ko) * 2007-08-06 2014-07-18 삼성전자주식회사 버퍼를 이용한 연산 분산 방법 및 이를 이용한 연산 분산시스템
US8310492B2 (en) * 2009-09-03 2012-11-13 Ati Technologies Ulc Hardware-based scheduling of GPU work
KR101292670B1 (ko) * 2009-10-29 2013-08-02 한국전자통신연구원 벡터 프로세싱 장치 및 방법

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007026095A (ja) * 2005-07-15 2007-02-01 Matsushita Electric Ind Co Ltd 並列演算装置

Also Published As

Publication number Publication date
US20140025934A1 (en) 2014-01-23
JP2014021987A (ja) 2014-02-03
JP6433645B2 (ja) 2018-12-05
EP2687985A2 (en) 2014-01-22
EP2687985A3 (en) 2014-05-07
CN103577254A (zh) 2014-02-12
CN103577254B (zh) 2018-11-02
US9471309B2 (en) 2016-10-18
KR20140012320A (ko) 2014-02-03

Similar Documents

Publication Publication Date Title
JP6390021B2 (ja) グラフィック処理ユニットのためのワークロードバッチサブミットメカニズム
US9996386B2 (en) Mid-thread pre-emption with software assisted context switch
US8417918B2 (en) Reconfigurable processor with designated processing elements and reserved portion of register file for interrupt processing
JP2010079622A (ja) マルチコアプロセッサシステム、および、そのタスク制御方法
KR20140122835A (ko) 프로세스 병렬 처리 장치 및 방법
KR102121866B1 (ko) 와이드 데이터 엘리먼트들에 대한 레지스터 쌍을 사용하는 짝수-엘리먼트 및 홀수-엘리먼트 연산들을 가지는 혼합-폭 simd 연산들
KR101984635B1 (ko) 어플리케이션을 고속으로 처리하는 연산 처리 장치 및 방법
JP2010108086A (ja) Cpuエミュレーションシステム、cpuエミュレーション方法及びcpuエミュレーションプログラム
US10289418B2 (en) Cooperative thread array granularity context switch during trap handling
TWI457828B (zh) 執行緒陣列粒化執行的優先權計算
US8656393B2 (en) Multi-core system
CN102542525B (zh) 一种信息处理设备以及信息处理方法
JP6894474B2 (ja) 情報処理方法とプロセッサ
JP5632651B2 (ja) 半導体回路及び設計装置
WO2019157743A1 (zh) 线程处理方法和图形处理器
JP5630798B1 (ja) プロセッサーおよび方法
TWI428833B (zh) 多執行緒處理器及其指令執行及同步方法及其電腦程式產品
JP5788920B2 (ja) ベクトル処理装置およびベクトル処理方法
US9158580B2 (en) Data flows and their interaction with control flows
JP5813484B2 (ja) Vliwプロセッサと命令構造と命令実行方法
US9928045B2 (en) Information processing apparatus, compile method and non-transitory recording medium storing compile program
JP2002318689A (ja) 資源使用サイクルの遅延指定付き命令を実行するvliwプロセッサおよび遅延指定命令の生成方法
JP2010140398A (ja) データ処理装置及びデータ処理方法
CN117131910A (zh) 一种基于risc-v指令集架构拓展的卷积加速器及加速卷积运算的方法
CN116303226A (zh) 粗粒度可重构阵列数据流处理器的高效执行方法及***

Legal Events

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