KR101783312B1 - 클러스터 간의 통신으로 인한 오버헤드를 최소화하는 장치 및 방법 - Google Patents

클러스터 간의 통신으로 인한 오버헤드를 최소화하는 장치 및 방법 Download PDF

Info

Publication number
KR101783312B1
KR101783312B1 KR1020110119147A KR20110119147A KR101783312B1 KR 101783312 B1 KR101783312 B1 KR 101783312B1 KR 1020110119147 A KR1020110119147 A KR 1020110119147A KR 20110119147 A KR20110119147 A KR 20110119147A KR 101783312 B1 KR101783312 B1 KR 101783312B1
Authority
KR
South Korea
Prior art keywords
instruction
operand
copy
command
executed
Prior art date
Application number
KR1020110119147A
Other languages
English (en)
Other versions
KR20130053632A (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 KR1020110119147A priority Critical patent/KR101783312B1/ko
Priority to US13/546,340 priority patent/US9122474B2/en
Publication of KR20130053632A publication Critical patent/KR20130053632A/ko
Application granted granted Critical
Publication of KR101783312B1 publication Critical patent/KR101783312B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • 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/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • 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
    • 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/3826Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
    • G06F9/3828Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage with global bypass, e.g. between pipelines, between clusters
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

클러스터(Cluster) 간의 값의 복사 또는 이동에 따른 오버헤드를 최소화하는 기술에 관한 것으로, 코드 생성시 mov 명령어 등과 같이 클러스터 간의 값을 이동하거나 복사하는 명령어들이 최소화되도록 함으로써 클러스터 외부의 레지스터 파일에 접근하는 것을 최소화하여 클러스터 구조를 가진 슈퍼스칼라(superscalar)나 VLIW 프로세서 등 모든 프로세서에서 사용되는 코드의 성능을 향상시킬 수 있다.

Description

클러스터 간의 통신으로 인한 오버헤드를 최소화하는 장치 및 방법{APPARATUS AND METHOD FOR MINIMIZING THE OVERHEAD DUE TO THE COMMUNICATION BETWEEN CLUSTERS}
클러스터(Cluster) 간의 값의 복사 또는 이동에 따른 오버헤드를 최소화하는 기술에 관한 것이다.
큰 병렬성을 가진 응용 프로그램에서 병렬성을 최대로 이용하여 프로그램을 실행하는 경우에는 동시에 많은 오퍼랜드(Operand)에 대한 접근이 필요하게 되어 많은 수의 포트(port)와 레지스터(Register)를 가진 레지스터 파일이 필요하게 된다. 그러나, 이러한 레지스터 파일을 구현하는 것은 매우 어렵고 많은 하드웨어 비용이 소요된다. 이를 해결하기 위한 대안으로 클러스터 구조(Clustered Architecture)가 있는데 클러스터 구조는 클러스터 단위마다 독립적인 레지스터 파일을 가지도록 하는 것이다. 따라서, 클러스터 구조는 적은 수의 포트(port)를 가지며 여러 클러스터에 병렬로 명령어들이 들어와 실행될 수 있어 많은 오퍼랜드(Operand)에 대한 접근이 가능해져 간단한 구조의 레지스터 파일로 많은 응용 프로그램을 실행시킬 수 있게 된다. 하지만, 한 클러스터에서 외부의 레지스터 파일에 접근해야 하는 경우, 예를 들어 클러스터 간의 값을 복사하거나 이동하는 명령을 빈번하게 실행하는 경우에는 많은 오버헤드가 발생하게 되고 처리 효율이 떨어지게 된다.
클러스터 구조를 가진 슈퍼스칼라(superscalar)나 VLIW 프로세서 등 모든 프로세서에서 사용되는 코드의 성능을 향상시킬 수 있는 장치와 방법이 제시된다. 컴파일러에서 만들어지는 코드의 성능을 높이기 위해 클러스터 간의 값을 이동하거나 복사하는 명령어들이 최소화되도록 하는 기술이 제시된다.
일 양상에 따르면, 클러스터 간의 통신으로 인한 오버헤드를 최소화하는 장치는 기본 블록(Basic Block) 내의 일반 명령어들에 대해 함께 실행될 복사 명령어의 존재 여부를 내포한 암시적 명령어들을 생성하는 암시적 명령어 생성부와 기본 블록에 암시적 명령어의 실행에 따라 실행될 복사 명령어의 오퍼랜드 값을 제공해주는 오퍼랜드 제공 명령어를 삽입하는 오퍼랜드 제공부를 포함한다.
이때, 암시적 명령어는, 일반 명령어의 오퍼랜드(Operand) 외에 상기 일반 명령어와 함께 실행될 복사 명령어의 존재 여부를 내포할 오퍼랜드를 더 포함한다.
복사 명령어의 존재 여부를 내포할 오퍼랜드는 0 또는 1의 값을 설정함에 따라 각각 복사 명령어의 비존재 또는 존재를 표현하기 위한 1 비트(bit)로 이루어질 수 있다.
복사 명령어는 mov를 포함하는 클러스터 간의 값을 복사하거나 이동하는 명령어이며, 일반 명령어는 add를 포함하는 클러스터 내에서 연산하는 명령어일 수 있다.
추가적인 양상에 따르면, 클러스터 간의 통신으로 인한 오버헤드를 최소화하는 장치는 생성된 암시적 명령어들에 대해 기본 블록을 스케줄링하는 스케줄링부를 더 포함할 수 있다.
한편, 오퍼랜드 제공 명령어는 4개의 오퍼랜드를 가질 수 있으며, 오퍼랜드 제공 명령어는 자신이 실행되면 자신이 가지는 오퍼랜드의 값을 짝을 지어 순차적으로 하드웨어 버퍼에 입력하는 명령어일 수 있다.
또한, 암시적 명령어는 실행될 복사 명령어가 존재하면 상기 하드웨어 버퍼에서 대응되는 오퍼랜드 값을 읽어 그 복사 명령어를 일반 명령어와 함께 실행하는 명령어일 수 있다.
일 양상에 따르면, 클러스터 간의 통신으로 인한 오버헤드를 최소화하는 방법은, 기본 블록(Basic Block) 내의 일반 명령어들에 대해 함께 실행될 복사 명령어의 존재 여부를 내포한 암시적 명령어들을 생성하는 단계와, 기본 블록에 암시적 명령어의 실행에 따라 실행될 복사 명령어의 오퍼랜드 값을 제공해주는 오퍼랜드 제공 명령어를 삽입하는 단계를 포함할 수 있다.
암시적 명령어는 일반 명령어의 오퍼랜드(Operand) 외에 상기 일반 명령어와 함께 실행될 복사 명령어의 존재 여부를 내포할 오퍼랜드를 더 포함할 수 있으며, 복사 명령어의 존재 여부를 내포할 오퍼랜드는, 0 또는 1의 값을 설정함에 따라 각각 복사 명령어의 비존재 또는 존재를 표현하기 위한 1 비트(bit)로 이루어질 수 있다.
추가적인 양상에 따르면, 클러스터 간의 통신으로 인한 오버헤드를 최소화하는 방법은 생성된 암시적 명령어들에 대해 기본 블록을 다시 스케줄링하는 단계를 더 포함할 수 있다.
이때, 복사 명령어는 mov를 포함하는 클러스터 간의 값을 복사하거나 이동하는 명령어이며, 상기 일반 명령어는 add를 포함하는 클러스터 내에서 연산하는 명령어일 수 있다.
오퍼랜드 제공 명령어는 자신이 실행되면 자신이 가지는 오퍼랜드의 값을 짝을 지어 순차적으로 하드웨어 버퍼에 입력하는 명령어일 수 있다.
암시적 명령어는 실행될 복사 명령어가 존재하면 하드웨어 버퍼에서 대응되는 오퍼랜드 값을 읽어 그 복사 명령어를 일반 명령어와 함께 실행하는 명령어일 수 있다.
코드 생성시 mov 명령어 등과 같이 클러스터 간의 값을 이동하거나 복사하는 명령어들이 최소화되도록 함으로써 클러스터 외부의 레지스터 파일에 접근하는 것을 최소화하여 클러스터 구조를 가진 슈퍼스칼라(superscalar)나 VLIW 프로세서 등 모든 프로세서에서 사용되는 코드의 성능을 향상시킬 수 있다.
도 1은 일 실시예에 따른 클러스터 간의 통신으로 인한 오버헤드를 최소화하는 장치의 블록도이다.
도 2는 일 실시예에 따라 mov 명령어를 일반 명령어와 함께 실행되도록 암시적 명령어를 생성하는 예시이다.
도 3은 일 실시예에 따라 기본 블록에 생성되어 있는 암시적 명령어와 오퍼랜드 제공 명령어들의 예이다.
도 4는 프로세서에서 하드웨어 버퍼의 위치의 예이다.
도 5는 일 실시에에 따른 클러스터 간의 통신으로 인한 오버헤드를 최소화하는 방법의 흐름도이다.
도 6은 일 실시예에 따라 암시적 명령어의 생성 후의 스케줄링 결과의 예시이다.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다. 본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
이하, 본 발명의 실시예들에 따른 클러스터 간의 통신으로 인한 오버헤드를 최소화하는 장치 및 방법을 도면들을 참고하여 자세히 설명하도록 한다.
도 1은 일 실시예에 따른 클러스터 간의 통신으로 인한 오버헤드를 최소화하는 장치의 블록도이다. 도 1에 도시된 바와 같이 장치(100)는 암시적 명령어 생성부(110), 스케줄링부(120) 및 오퍼랜드 제공부(130)를 포함한다.
암시적 명령어 생성부(110)는 기본 블록(Basic Block) 내의 일반 명령어들에 대해 함께 실행될 복사 명령어의 존재 여부를 내포한 암시적 명령어들을 생성한다. 여기서, 복사 명령어는 클러스터 간의 값을 복사하거나 이동하는 명령어로서 mov 등의 명령어를 포함한다. 이러한 명령어들은 클러스터 외부의 레지스터 파일에 수시로 접근을 요하므로 애플리케이션 코드 내에 이러한 명령어들이 많이 사용된다면 코드의 성능이 매우 떨어질 수 있다. 일반 명령어는 클러스터 내에서 연산하는 명령어로서 add, mul 등의 명령어를 포함하며, 클러스터 간의 값을 주고 받는 것과는 관계없는 명령어이다. 암시적 명령어는 일반 명령어와 복사 명령어를 병렬로 실행하도록 새롭게 정의된 명령어로서 기본 블록 내의 모든 일반 명령어에 대해 생성될 수 있으며, 각 암시적 명령어는 실행될 복사 명령어의 존재 여부를 내포하고 있다.
암시적 명령어 생성부(110)는 기본 블록 내의 모든 명령어들에 대해 의존성 관계를 고려하여 일반 명령어와 함께 실행될 수 있는 복사 명령어의 짝을 찾아내어 임시 테이블에 저장하고, 그 테이블을 참조하여 모든 일반 명령어들에 대해 함께 실행될 복사 명령어가 있는지를 체크하여 암시적 명령어를 생성한다.
스케줄링부(120)는 생성된 암시적 명령어들에 대해 기본 블록을 다시 스케줄링한다. 암시적 명령어의 생성으로 인해 기본 블록 내의 전체 코드에 대한 수정이 있었으므로 다시 스케줄링을 한다.
오퍼랜드 제공부(130)는 기본 블록 내의 상단부에 암시적 명령어의 실행에 따라 실행될 복사 명령어의 오퍼랜드 값을 제공해주는 오퍼랜드 제공 명령어를 삽입한다. 즉, 암시적 명령어들이 실행될 때 그 암시적 명령어에 실행시킬 복사 명령어가 내포되어 있는 경우 그 복사 명령어의 오퍼랜드 값을 미리 제공해주어야 한다. 따라서, 그 암시적 명령어들이 실행되기 전에 미리 복사 명령어들의 오퍼랜드 값을 제공해 주는 명령어 코드를 기본 블록의 맨 처음부터 차례로 삽입하여 암시적 명령어 실행 전에 복사 명령어의 오퍼랜드 값이 제공되도록 한다.
도 2는 일 실시예에 따라 mov 명령어를 일반 명령어와 함께 실행되도록 암시적 명령어를 생성하는 예시이다. 도 2(a)의 op 명령어는 클러스터 내에서 연산을 하는 일반 명령어를 예시한 것이며, op 명령어는 add, mul 등의 명령어일 수 있다. 일반 명령어 아래에는 클러스터 간의 값을 주고 받는 복사 명령어인 mov가 예시되어 있다. 다른 클러스터의 레지스터 파일에 접근해야 하는 복사 명령어를 실행하면 전체적인 사이클 타임이 늘어나 효율이 떨어지게 된다.
만약, 도 2의 (b)와 같이 일반 명령어인 op 명령어와 함께 mov 명령어를 실행할 수 있다면 처리 효율을 크게 향상시킬 수 있을 것이다. 그러나, 보통의 명령어들은 3개의 오퍼랜드를 가지는데, 만약 도 2의 (b)와 같이 5개의 오퍼랜드를 가지게 될 경우 인코딩 비트(encoding bit)가 모자라게 될 수 있다. 따라서, 본 실시예에 따른 암시적 명령어는 도 2의 (c)와 같이 원래의 일반 명령어(op)외에 함께 실행시킬 복사 명령어의 존재 여부를 내포할 오퍼랜드를 더 포함할 수 있다. 이때, 복사 명령어의 존재 여부를 내포할 오퍼랜드(이하, 'emb'라 한다)는 1 비트만으로 이루어질 수 있다. emb에는 0 또는 1의 값을 세팅함으로써 복사 명령어의 존재 여부를 내포할 수 있는데, 일반 명령어와 함께 실행시킬 복사 명령어가 존재하지 않는 경우 그 emb 값은 0으로 설정하고, 함께 실행시킬 복사 명령어가 존재하면 1로 설정할 수 있다.
도 3은 일 실시예에 따라 기본 블록에 생성되어 있는 암시적 명령어와 오퍼랜드 제공 명령어들의 예이다. 도 4는 프로세서에서 하드웨어 버퍼의 위치의 예이다. 일반적으로 컴파일러에서 애플리케이션 소스 코드에 대해 스케줄링과 레지스터 할당(Register Allocation)을 거친 후 어셈블리 코드가 생성된다. 본 실시예에서는 애플리케이션 소스 코드에 대한 스케줄링과 레지스터 할당이 완료되면 어셈블리 코드 생성 전에 전술한 바와 같은 암시적 명령어의 생성 작업을 수행한다. 암시적 명령어 생성부(110)는 컴파일러에서 레지스터 할당이 완료되면 기본 블록 내의 모든 명령어들에 대해 의존성 관계를 분석하여 일반 명령어들과, 그 일반 명령어들과 함께 실행될 복사 명령어의 짝을 찾아낸다. 이때, 찾아진 일반 명령어와 복사명령어의 짝을 임시 테이블에 저장할 수 있다. 그 다음, 함께 실행될 복사 명령어가 있는 일반 명령어들에 대해 암시적 명령어의 emb 값을 1로 설정하고, 함께 실행될 복사 명령어가 없는 일반 명령어들에 대한 emb 값은 0으로 설정하여 암시적 명령어들을 생성할 수 있다.
도 3에 예시된 첫 번째와 네 번째 암시적 명령어에는 일반 명령어 실행시 함께 실행할 복사 명령어가 있음을 알 수 있다. 프로세서에서 첫 번째와 네 번째의 암시적 명령어를 실행할 때 복사 명령어도 함께 실행하게 된다. 다만, 이 경우 복사 명령어의 오퍼랜드 값이 제공되어야 하므로, 도 3에 도시된 바와 같이 기본 블록의 상단에 그 복사 명령어의 오퍼랜드 값을 제공해 주기 위한 오퍼랜드 제공 명령어를 삽입한다. 이때, 오퍼랜드 제공 명령어는 도 3의 pushmvs와 같이 새롭게 정의된 명령어일 수 있다. 오퍼랜드 제공 명령어는 도 3에 예시된 바와 같이 4개의 오퍼랜드를 가질 수 있으며, 프로세서에서 자신이 실행되면 자신의 오퍼랜드의 값을 두 개씩 짝을 지어 순차적으로 하드웨어 버퍼에 입력한다. 하드웨어 버퍼는 도 4에 도시된 바와 같이 Decompression Pipeline stage에 위치하거나, Decode stage에 위치할 수 있다. 그리고, 암시적 명령어는 자신이 실행될 때 실행시킬 복사 명령어가 존재하면 decode stage나 Decompression pipeline stage에 있는 하드웨어 버퍼에서 대응되는 오퍼랜드 값을 읽어 복사 명령어를 실행하게 된다.
예를 들어, 도 3에서 pushmvs crf[1], drf[2], drf[3], crf[4]의 명령어가 실행되면 crf[1], drf[2]와 drf[3], crf[4]가 하드웨어 버퍼에 입력된다. 그 다음 첫 번째 암시적 명령어가 실행되면 하드웨어 버퍼의 첫 번째 값인 crf[1], drf[2]를 읽어 일반 명령어와 함께 복사 명령어 mov crf[1] <- drf[2]를 실행시킨다. 마찬가지로, 네 번째 암시적 명령어가 실행되면 하드웨어 버퍼에서 두 번째 값인 drf[3], crf[4]를 읽어 일반 명령어와 함께 복사 명령어 mov drf[3] <- drf[4]를 실행시킨다.
도 5는 일 실시에에 따른 클러스터 간의 통신으로 인한 오버헤드를 최소화하는 방법의 흐름도이다. 본 실시예에 따른 클러스터 간의 통신으로 인한 오버헤드를 최소화하기 위한 방법은 컴파일러에서 애플리케이션 코드에 대한 스케줄링과 레지스터 할당(Register Allocation)이 완료된 후 수행되도록 할 수 있다.
도 5를 참조하여 본 실시예에 따른 방법을 설명하면, 먼저, 기본 블록 내의 모든 일반 명령어들에 대해 함께 실행될 복사 명령어의 존재 여부를 내포한 암시적 명령어들을 생성한다(단계 310). 복사 명령어는 클러스터 간의 값을 복사하거나 이동하는 명령어로서 mov를 포함할 수 있다. 일반 명령어는 클러스터 내에서 연산하는 명령어로서 클러스터 간의 값을 주고 받는 것과는 관계없는 명령어이며 add, mul등이 포함될 수 있다.
암시적 명령어는 일반 명령어와 복사 명령어를 병렬로 실행하도록 하는 명령어로서 기본 블록 내의 모든 일반 명령어에 대해 생성될 수 있으며, 각 암시적 명령어는 실행될 복사 명령어의 존재 여부를 내포하고 있다. 이때, 암시적 명령어는 도 2의 (c)에 나타낸 바와 같이 원래의 일반 명령어(op) 외에 함께 실행시킬 복사 명령어의 존재 여부를 내포하기 위한 별도의 오퍼랜드를 더 포함할 수 있다. 한편, 복사 명령어의 존재 여부를 내포할 오퍼랜드인 emb는 1 비트만으로 이루어지도록 할 수 있으며, 실행시킬 복사 명령어가 존재하지 않는 경우 emb 값은 0으로 설정하고, 함께 실행시킬 복사 명령어가 존재하면 1로 설정할 수 있다.
그 다음, 생성된 암시적 명령어들에 대해 기본 블록을 다시 스케줄링한다(단계 320). 일반적으로 컴파일러에서 애플리케이션 소스 코드에 대해 스케줄링과 레지스터 할당(Register Allocation)을 거친 후 어셈블리 코드가 생성된다. 본 실시예에서는 애플리케이션 소스 코드에 대한 스케줄링과 레지스터 할당이 완료되면 어셈블리 코드 생성 전에 전술한 바와 같은 암시적 명령어의 생성 작업을 수행하고 생성된 암시적 명령어들에 대해 다시 스케줄링을 한다. 암시적 명령어 생성 및 스케줄링 결과 도 3의 첫 번째와 네 번째 암시적 명령어는 실행시킬 복사 명령어가 있는 경우로서 emb의 값이 1로 설정되어 있으며, 도 3의 나머지 암시적 명령어들은 함께 실행될 복사 명령어가 없는 경우로서 emb 값이 0으로 설정되어 있음을 알 수 있다.
마지막으로, 기본 블록 내의 상단부에 암시적 명령어의 실행에 따라 실행시킬 복사 명령어의 오퍼랜드 값을 제공해주는 오퍼랜드 제공 명령어를 삽입한다(단계 330). 도 3에 예시된 기본 블록 내의 첫 번째와 네 번째의 암시적 명령어를 실행할 때 복사 명령어도 함께 실행하게 된다. 다만, 이 경우 복사 명령어의 오퍼랜드 값이 미리 제공되어야 하므로, 도 3에 도시된 바와 같이 기본 블록의 상단에 그 복사 명령어의 오퍼랜드 값을 제공해 주기 위한 오퍼랜드 제공 명령어(예: pushmvs)를 삽입한다.
오퍼랜드 제공 명령어는 4개의 오퍼랜드를 가질 수 있으며 프로세서에서 자신이 실행되면 자신의 오퍼랜드의 값을 두 개씩 짝을 지어 순차적으로 하드웨어 버퍼에 입력한다. 그리고, 암시적 명령어는 자신이 실행될 때 실행시킬 복사 명령어가 존재하면 decode stage나 Decompression pipeline stage에 있는 하드웨어 버퍼에서 대응되는 오퍼랜드 값을 읽어 복사 명령어를 실행하게 된다. 예를 들어, 도 3에서 pushmvs crf[1], drf[2], drf[3], crf[4]의 명령어가 실행되면 crf[1], drf[2]와 drf[3], crf[4]가 하드웨어 버퍼에 입력되고, 그 다음 첫 번째 암시적 명령어가 실행되면 하드웨어 버퍼의 첫 번째 값인 crf[1], drf[2]를 읽고, 일반 명령어와 함께 복사 명령어 mov crf[1] <- drf[2]를 실행시킨다. 마찬가지로, 네 번째 암시적 명령어가 실행되면 하드웨어 버퍼에서 두 번째 값인 drf[3], crf[4]를 읽고, 일반 명령어와 함께 복사 명령어 mov drf[3] <- drf[4]를 실행시킨다.
도 6은 일 실시예에 따라 암시적 명령어의 생성 후의 스케줄링 결과의 예시이다. 도 6의 상단에는 4개의 명령어로 이루어진 간단한 의존성 그래프(dependence graph)가 예시되어 있다. 여기에는 하나의 복사 명령어(mov)와 add, mul, add의 3개의 일반 명령어가 있다. 이와 같은 명령어들의 코드를 그대로 스케줄링하면 도 6의 좌하단과 같이 스케줄링 되어 3개의 사이클이 필요하게 된다. 그러나, 본 실시예에 따라 명령어들 간의 의존성 관계를 고려하여 암시적 명령어들을 생성하고 스케줄링을 하면 도 6의 우하단의 그림과 같은 스케줄링이 되어 좌하단의 스케줄링 결과에 비해 한 사이클이 감소 되었음을 알 수 있다. 방대한 양의 애플리케이션 소스코드에 대해 본 실시예에 따른 방법을 적용하면 많은 성능 향상을 기대할 수 있다.
본 발명이 속하는 기술분야의 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구의 범위에 의하여 나타내어지며, 특허청구의 범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
100 : 장치 110 : 암시적 명령어 생성부
120 : 스케줄링부 130 : 오퍼랜드 제공부

Claims (15)

  1. 기본 블록(Basic Block) 내의 일반 명령어들에 대해 함께 실행될 복사 명령어의 존재 여부를 내포한 암시적 명령어들을 생성하는 암시적 명령어 생성부; 및
    상기 기본 블록에 상기 암시적 명령어의 실행에 따라 실행될 복사 명령어의 오퍼랜드(Operand) 값을 제공해주는 오퍼랜드 제공 명령어를 삽입하는 오퍼랜드 제공부;를 포함하는 클러스터 간의 통신으로 인한 오버헤드를 최소화하는 장치.
  2. 제1항에 있어서, 상기 암시적 명령어는,
    일반 명령어의 오퍼랜드 외에 상기 일반 명령어와 함께 실행될 복사 명령어의 존재 여부를 내포할 오퍼랜드를 더 포함하고 있는 것을 특징으로 하는 클러스터 간의 통신으로 인한 오버헤드를 최소화하는 장치.
  3. 제2항에 있어서, 상기 복사 명령어의 존재 여부를 내포할 오퍼랜드는,
    0 또는 1의 값을 설정함에 따라 각각 복사 명령어의 비존재 또는 존재를 표현하기 위한 1 비트(bit)로 이루어지는 것을 특징으로 하는 클러스터 간의 통신으로 인한 오버헤드를 최소화하는 장치.
  4. 제1항에 있어서,
    상기 복사 명령어는 mov를 포함하는 클러스터 간의 값을 복사하거나 이동하는 명령어이며, 상기 일반 명령어는 add를 포함하는 클러스터 내에서 연산하는 명령어인 것을 특징으로 하는 클러스터 간의 통신으로 인한 오버헤드를 최소화하는 장치.
  5. 제1항에 있어서,
    상기 생성된 암시적 명령어들에 대해 상기 기본 블록을 스케줄링하는 스케줄링부;를 더 포함하는 클러스터 간의 통신으로 인한 오버헤드를 최소화하는 장치.
  6. 제1항에 있어서, 상기 오퍼랜드 제공 명령어는,
    4개의 오퍼랜드를 가질 수 있는 것을 특징으로 하는 클러스터 간의 통신으로 인한 오버헤드를 최소화하는 장치.
  7. 제1항에 있어서, 상기 오퍼랜드 제공 명령어는,
    자신이 실행되면 자신의 오퍼랜드의 값을 짝을 지어 순차적으로 하드웨어 버퍼에 입력하는 명령어인 것을 특징으로 하는 클러스터 간의 통신으로 인한 오버헤드를 최소화하는 장치.
  8. 제7항에 있어서, 상기 암시적 명령어는,
    실행될 복사 명령어가 존재하면 상기 하드웨어 버퍼에서 대응되는 오퍼랜드 값을 읽어 그 복사 명령어를 일반 명령어와 함께 실행하는 명령어인 것을 특징으로 하는 클러스터 간의 통신으로 인한 오버헤드를 최소화하는 장치.
  9. 클러스터 간의 통신으로 인한 오버헤드를 최소화하는 장치의 제어 방법에 있어서,
    기본 블록(Basic Block) 내의 일반 명령어들에 대해 함께 실행될 복사 명령어의 존재 여부를 내포한 암시적 명령어들을 생성하는 단계; 및
    상기 기본 블록에 상기 암시적 명령어의 실행에 따라 실행될 복사 명령어의 오퍼랜드 값을 제공해주는 오퍼랜드 제공 명령어를 삽입하는 단계;를 포함하는 방법.
  10. 제9항에 있어서, 상기 암시적 명령어는,
    일반 명령어의 오퍼랜드(Operand) 외에 상기 일반 명령어와 함께 실행될 복사 명령어의 존재 여부를 내포할 오퍼랜드를 더 포함하는, 방법.
  11. 제10항에 있어서, 상기 복사 명령어의 존재 여부를 내포할 오퍼랜드는,
    0 또는 1의 값을 설정함에 따라 각각 복사 명령어의 비존재 또는 존재를 표현하기 위한 1 비트(bit)로 이루어지는, 방법.
  12. 제9항에 있어서,
    상기 생성된 암시적 명령어들에 대해 상기 기본 블록을 다시 스케줄링하는 단계;를 더 포함하는, 방법.
  13. 제9항에 있어서,
    상기 복사 명령어는 mov를 포함하는 클러스터 간의 값을 복사하거나 이동하는 명령어이며, 상기 일반 명령어는 add를 포함하는 클러스터 내에서 연산하는 명령어인, 방법.
  14. 제9항에 있어서, 상기 오퍼랜드 제공 명령어는,
    자신이 실행되면 자신이 가지는 오퍼랜드의 값을 짝을 지어 순차적으로 하드웨어 버퍼에 입력하는 명령어인, 방법.
  15. 제14항에 있어서, 상기 암시적 명령어는,
    실행될 복사 명령어가 존재하면 상기 하드웨어 버퍼에서 대응되는 오퍼랜드 값을 읽어 그 복사 명령어를 일반 명령어와 함께 실행하는 명령어인, 방법.
KR1020110119147A 2011-11-15 2011-11-15 클러스터 간의 통신으로 인한 오버헤드를 최소화하는 장치 및 방법 KR101783312B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020110119147A KR101783312B1 (ko) 2011-11-15 2011-11-15 클러스터 간의 통신으로 인한 오버헤드를 최소화하는 장치 및 방법
US13/546,340 US9122474B2 (en) 2011-11-15 2012-07-11 Apparatus and method for reducing overhead caused by communication between clusters

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020110119147A KR101783312B1 (ko) 2011-11-15 2011-11-15 클러스터 간의 통신으로 인한 오버헤드를 최소화하는 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20130053632A KR20130053632A (ko) 2013-05-24
KR101783312B1 true KR101783312B1 (ko) 2017-10-10

Family

ID=48281786

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020110119147A KR101783312B1 (ko) 2011-11-15 2011-11-15 클러스터 간의 통신으로 인한 오버헤드를 최소화하는 장치 및 방법

Country Status (2)

Country Link
US (1) US9122474B2 (ko)
KR (1) KR101783312B1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8793602B2 (en) 2004-01-15 2014-07-29 The Mathworks, Inc. System and method for scheduling the execution of model components using model events
US10585648B2 (en) * 2016-06-01 2020-03-10 The Mathworks, Inc. Systems and methods for aggregating implicit and explicit event code of executable models

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100236527B1 (ko) * 1996-08-19 1999-12-15 윤종용 벡터 레지스터의 복수 뱅크를 사용한 단일 명령복수 데이터 처 리
KR100822612B1 (ko) * 2001-04-25 2008-04-16 후지쯔 가부시끼가이샤 명령 처리 방법
US20080126762A1 (en) * 2006-11-29 2008-05-29 Kelley Brian H Methods, systems, and apparatus for object invocation across protection domain boundaries

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8127117B2 (en) 2006-05-10 2012-02-28 Qualcomm Incorporated Method and system to combine corresponding half word units from multiple register units within a microprocessor
KR100974939B1 (ko) 2008-09-25 2010-08-10 서경대학교 산학협력단 가변 길이 명령어 셋을 갖는 듀얼 페이즈 심드 프로세서

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100236527B1 (ko) * 1996-08-19 1999-12-15 윤종용 벡터 레지스터의 복수 뱅크를 사용한 단일 명령복수 데이터 처 리
KR100822612B1 (ko) * 2001-04-25 2008-04-16 후지쯔 가부시끼가이샤 명령 처리 방법
US7647473B2 (en) * 2001-04-25 2010-01-12 Fujitsu Limited Instruction processing method for verifying basic instruction arrangement in VLIW instruction for variable length VLIW processor
US20080126762A1 (en) * 2006-11-29 2008-05-29 Kelley Brian H Methods, systems, and apparatus for object invocation across protection domain boundaries

Also Published As

Publication number Publication date
KR20130053632A (ko) 2013-05-24
US20130124825A1 (en) 2013-05-16
US9122474B2 (en) 2015-09-01

Similar Documents

Publication Publication Date Title
CN105389158B (zh) 数据处理系统、编译器、处理器的方法和机器可读介质
US20100070958A1 (en) Program parallelizing method and program parallelizing apparatus
US9086873B2 (en) Methods and apparatus to compile instructions for a vector of instruction pointers processor architecture
Wang et al. Register renaming and scheduling for dynamic execution of predicated code
KR20140126195A (ko) 배치 쓰레드 처리 기반의 프로세서, 그 프로세서를 이용한 배치 쓰레드 처리 방법 및 배치 쓰레드 처리를 위한 코드 생성 장치
US20190079775A1 (en) Data processing
KR101783312B1 (ko) 클러스터 간의 통신으로 인한 오버헤드를 최소화하는 장치 및 방법
CN102265257B (zh) 程序变换装置及程序变换方法
She et al. OpenCL code generation for low energy wide SIMD architectures with explicit datapath
Rajagopalan et al. A retargetable VLIW compiler framework for DSPs with instruction-level parallelism
Whitham et al. Using trace scratchpads to reduce execution times in predictable real-time architectures
Kumar et al. An approach for compiler optimization to exploit instruction level parallelism
Stripf et al. A compiler back-end for reconfigurable, mixed-ISA processors with clustered register files
JP5218129B2 (ja) コンパイル装置およびコンパイルプログラム
Finlayson et al. Improving processor efficiency by statically pipelining instructions
TW518516B (en) Sub-pipelined and pipelined execution in a VLIW
Křoustek et al. Exploitation of scattered context grammars to model VLIW instruction constraints
KR101711388B1 (ko) 파이프라인에서 블럭을 스케줄하는 컴파일 방법 및 장치
Snavely et al. Unscheduling, unpredication, unspeculation: Reverse engineering Itanium executables
WO2024065868A1 (zh) 一种用于图计算并行执行的中间表示方法及装置
Guan et al. The optimizations in dynamic binary translation
Stephenson et al. AZP: Automatic Specialization for Zero Values in Gaming Applications
Sura et al. Using multiple threads to accelerate single thread performance
Davis et al. Scheduling instruction effects for a statically pipelined processor
US10042645B2 (en) Method and apparatus for compiling a program for execution by a plurality of processing units

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
GRNT Written decision to grant