KR20090045744A - 프로세서 및 인스트럭션 프로세싱 방법 - Google Patents

프로세서 및 인스트럭션 프로세싱 방법 Download PDF

Info

Publication number
KR20090045744A
KR20090045744A KR1020070111717A KR20070111717A KR20090045744A KR 20090045744 A KR20090045744 A KR 20090045744A KR 1020070111717 A KR1020070111717 A KR 1020070111717A KR 20070111717 A KR20070111717 A KR 20070111717A KR 20090045744 A KR20090045744 A KR 20090045744A
Authority
KR
South Korea
Prior art keywords
configuration
groups
instructions
configuration memory
setting
Prior art date
Application number
KR1020070111717A
Other languages
English (en)
Other versions
KR101273469B1 (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 KR1020070111717A priority Critical patent/KR101273469B1/ko
Publication of KR20090045744A publication Critical patent/KR20090045744A/ko
Application granted granted Critical
Publication of KR101273469B1 publication Critical patent/KR101273469B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • 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, look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline, look ahead using instruction pipelines

Abstract

프로세서 및 인스트럭션 프로세싱 방법이 제공된다. 본 발명의 인스트럭션 프로세싱 방법은 CGA에서 실행되는 인스트럭션들을 포함하는 복수의 구성 그룹들을 설정하는 단계, 상기 설정된 구성 그룹들 중에서 하나 이상의 구성 그룹을 선택하는 단계, 상기 선택된 하나 이상의 구성 그룹의 상기 구성 메모리 내에서의 배치를 결정하는 단계, 및 상기 결정된 배치에 따라 상기 선택된 구성 그룹의 인스트럭션들과 관련된 정보를 상기 구성 메모리에 저장하는 단계를 포함하는 것을 특징으로 하며, 이를 통해 ILP를 최대화할 수 있다.
CGA, 재구성 프로세서, 구성 메모리

Description

프로세서 및 인스트럭션 프로세싱 방법 {PROCESSOR AND INSTRUCTION PROCESSING METHOD}
본 발명은 재구성 프로세서(reconfigurable processor, RP) 아키텍쳐 (architecture)에 관한 것으로, 더욱 상세하게는 코어스 그레인 어레이(CGA: coarse grained array)를 이용하는 프로세서 및 그 프로세서에서의 인스트럭션 프로세싱 방법에 관한 것이다.
종래에는, 어떤 작업을 실행하는 장치는 하드웨어 또는 소프트웨어를 이용하여 구현되었다. 예를 들어, 네트워크 인터페이스를 실행하는 네트워크 콘트롤러가 컴퓨터 칩 상에 구현된 경우, 상기 네트워크 콘트롤러는 공장에서 생산될 때 정의된 네트워크 인터페이스 기능만을 실행하였다. 일단, 공장에서 네트워크 콘트롤러가 생산된 후, 상기 네트워크 콘트롤러의 기능(function)을 바꾸는 것은 불가능하였다. 이것이 하드웨어의 예이다. 또 다른 방법으로는 소프트웨어를 이용하는 방법이 있다. 예를 들어 사용자가 원하는 기능을 실행하는 프로그램을 짜고, 상기 프로그램을 범용 프로세서(general purpose processor)에서 실행시킴으로써, 사용자의 목적이 만족되었다. 소프트웨어에 의한 방법은 하드웨어가 공장에서 생산된 후에도, 소프트웨어만 변경함으로써 새로운 기능을 실행하는 것이 가능하다. 소프트웨어를 이용하는 경우에는 주어진 하드웨어를 이용하여 다양한 기능을 실행할 수 있지만, 하드웨어 구현 방법에 의한 것보다 속도가 떨어지는 단점이 있다.
위와 같은 하드웨어 및 소프트웨어에 의한 방법의 문제점을 극복하기 위하여 제안된 아키텍쳐가 재구성 프로세서 아키텍쳐다. 재구성 프로세서 아키텍쳐는 장치의 제조(device fabrication) 후에도 어떤 문제의 해결을 위하여든지 커스토마이징될 수 있고, 또한 계산의 실행을 위해 공간적으로(spatially) 커스토마이징된 계산을 이용할 수 있다는 특징이 있다.
재구성 프로세서 아키텍쳐는 복수의 인스트럭션을 병렬적으로 처리할 수 있는 프로세서 코어(processor core) 및 코어스 그레인 어레이(coarse grained array, CGA)를 이용하여 구현될 수 있다.
본 명세서에서는, CGA에서 실행되는 인스트럭션을 적절히 할당하여 인스트럭션 프로세싱 시간을 단축하는 프로세싱 방법 및 그 방법을 이용하는 프로세서 구조가 제안된다.
본 발명은 상술한 바와 같은 종래기술의 문제점을 해결하기 위해 안출된 것으로서, CGA에서 실행(execute)되는 인스트럭션을 적절히 할당하여 인스트럭션 프로세싱 시간을 단축하는 프로세싱 방법 및 그 방법을 이용하는 프로세서 구조를 제공한다.
또한, 본 발명은 CGA에서 실행되는 인스트럭션에 대한 정보를 저장하는 구성 메모리(configuration memory)의 크기를 줄인다.
또한, 본 발명은 주어진 구성 메모리에 대하여 인스트럭션 레벨 병렬성을 최대화하는 방법을 제공한다.
본 발명의 일측에 따른 프로세서는 프로세서 코어, 상기 프로세서 코어에서 실행되는 인스트럭션들 중 일부를 상기 프로세서 코어에 대신하여 실행하는 코어스 그레인 어레이 및 상기 코어스 그레인 어레이에서 실행되는 인스트럭션들과 관련된 정보를 저장하는 구성 메모리를 포함하고, 상기 코어스 그레인 어레이에서 실행되는 인스트럭션들을 포함하는 복수의 구성 그룹들이 설정되고, 상기 설정된 구성 그룹들 중에서 하나 이상의 구성 그룹이 선택되고, 상기 구성 메모리는 상기 선택된 구성 그룹의 인스트럭션들과 관련된 정보를 저장하는 것을 특징으로 한다.
본 발명의 다른 일측에 따른 인스트럭션 프로세싱 방법은 프로세서 코어, 코어스 그레인 어레이 및 상기 코어스 그레인 어레이에서 실행되는 인스트럭션들과 관련되는 정보를 저장하는 구성 메모리를 포함하는 프로세서의 인스트럭션 프로세싱 방법이고, 상기 코어스 그레인 어레이에서 실행되는 인스트럭션들을 포함하는 복수의 구성 그룹들을 설정하는 단계, 상기 설정된 구성 그룹들 중에서 하나 이상의 구성 그룹을 선택하는 단계, 상기 선택된 하나 이상의 구성 그룹의 상기 구성 메모리 내에서의 배치를 결정하는 단계, 및 상기 결정된 배치에 따라 상기 선택된 구성 그룹의 인스트럭션들과 관련된 정보를 상기 구성 메모리에 저장하는 단계를 포함하는 것을 특징으로 한다.
이하에서, 본 발명에 따른 바람직한 실시예를 첨부된 도면을 참조하여 상세하게 설명한다. 그러나, 본 발명이 실시예들에 의해 제한되거나 한정되는 것은 아니다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.
도 1은 본 발명의 일 실시예에 따른 프로세서(100)를 나타낸 도면이다.
도 1을 참조하면, 프로세서(100)는 프로세서 코어(processor core)(110), 코어스 그레인 어레이(coarse grained array, CGA)(120) 및 구성 메모리(configuration memory)(130)를 포함한다.
CGA(120)는 프로세서 코어(110)에서 실행되는 인스트럭션들 중 일부를 프로세서 코어(110)에 대신하여 실행(execute)한다.
구성 메모리(130)는 CGA(120)에서 실행되는 인스트럭션들과 관련된 정보를 저장한다.
프로세서(100)는 CGA(120)에서 실행되는 인스트럭션들을 포함하는 복수의 구성 그룹(configuration group)들을 설정하고, 상기 설정된 구성 그룹들 중에서 하나 이상의 구성 그룹을 선택한다. 이 때 구성 메모리(130)는 상기 선택된 구성 그 룹의 인스트럭션들과 관련된 정보를 저장한다.
실시예에 따라서는, 프로세서(100)의 상기 동작은 컴파일러(compiler)에 의해 미리 실행될 수 있다.
CGA(120)가 프로세서 코어(110)에서 실행되는 인스트럭션들 중 일부를 프로세서 코어(110)에 대신하여 실행하는 과정을 보다 상세히 설명한다.
프로세서(100)는 실행될 인스트럭션의 특성에 따라 실행될 인스트럭션이 제1 인스트럭션인지 제2 인스트럭션인지 결정한다.
실행될 인스트럭션이 제1 인스트럭션이면 프로세서(100)는 제1 활동 모드를 개시한다.
실행될 인스트럭션이 제2 인스트럭션이면 프로세서(100)는 제2 활동 모드를 개시한다.
프로세서 코어(110)는 제1 활동 모드 동안 제1 인스트럭션을 실행한다.
CGA(120)는 제1 활동 모드 동안에는 동작하지 않는다.
CGA(120)는 제2 활동 모드 동안 제2 인스트럭션을 실행한다.
프로세서 코어(110)는 제2 활동 모드 동안에는 동작하지 않는다.
CGA(120)는 제2 활동 모드 동안 구성 메모리(130)로부터 구성 정보를 수신한다.
CGA(120)는 구성 메모리(130)로부터 구성 정보를 수신하고, 수신된 구성 정보를 이용하여 제2 인스트럭션을 실행한다.
프로세서 코어(110)는 레지스터 파일(도시되지 않음), 연산 유닛들(도시되지 않음)을 포함할 수 있다.
연산 유닛들 각각은 제1 활동 모드 동안 제1 인스트럭션을 실행하고, 실행한 연산 결과를 레지스터 파일에 저장한다. 연산 유닛들 각각은 연산 결과를 연산 유닛들 상호간에 전달할 수 있다.
제1 인스트럭션은 한 클럭 주기 동안 실행되는 4개의 인스트럭션들을 포함할 수 있다.
4개의 인스트럭션들 중 어느 인스트럭션을 연산 유닛들 중 어느 연산 유닛에 할당할 것인지는 컴파일러의 스케줄링에 의해 결정될 수 있다.
컴파일러는 스케줄링을 실행함으로써, 연산 유닛들의 특성을 고려하여 4개의 인스트럭션들 중 어느 인스트럭션을 연산 유닛들 중 어느 연산 유닛에 할당할 것인지를 결정한다.
프로세서 코어(110)가 4개의 연산 유닛들을 포함하는 경우, 한 클럭 주기 동안 최대 4개의 인스트럭션들을 병렬적으로 실행할 수 있다.
실시예에 따라서는, 프로세서 코어(110)는 매우 긴 명령어(very long instruction word, VLIW) 구조를 가질 수 있다.
프로세서(100)는 구성 그룹들의 크기가 구성 메모리(130)의 크기보다 크지 않도록 구성 그룹들을 설정할 수 있다.
실시예에 따라서는, 컴파일러는 구성 그룹들의 크기가 구성 메모리(130)의 크기보다 크지 않도록 구성 그룹들을 설정할 수 있다.
프로세서(100)는 설정된 구성 그룹들에 공통된 인스트럭션들이 구성 메모 리(130) 내의 동일한 위치에 저장되도록 선택된 구성 그룹들의 배치(placement)를 결정할 수 있다.
실시예에 따라서는, 컴파일러는 설정된 구성 그룹들에 공통된 인스트럭션들이 구성 메모리(130) 내의 동일한 위치에 저장되도록 선택된 구성 그룹들의 배치(placement)를 결정할 수 있다.
프로세서(100)는 프로세서 코어(110)에서 실행되는 인스트럭션들이 관련되는 루프(loop)의 계층 레벨(hierarchy level)에 기초하여 구성 그룹들을 설정할 수 있다.
실시예에 따라서는, 컴파일러는 프로세서 코어(110)에서 실행되는 인스트럭션들이 관련되는 루프(loop)의 계층 레벨(hierarchy level)에 기초하여 구성 그룹들을 설정할 수 있다.
프로세서(100)에서 인스트럭션들이 실행되는 과정은 아래와 같다. 먼저 인스트럭션들로 이루어진 응용 프로그램에서 인스트럭션 레벨 병렬성(instruction level parallelism, ILP)을 가지는 루프를 선택하고, 프로세서(100)에서 실행할 수 있는 형태의 구성 정보(configuration)를 생성한다. 프로세서(100)는, 실행되어야 하는 루프의 configuration을 구성 메모리(130)로부터 수신하여, CGA(120)에서 실행되기에 적합한 형태로 변환한다.
프로세서(100)에서 실행되는 인스트럭션들의 ILP를 최대한으로 이용하기 위해서 software 적인 pipelining 기법이 이용된다. 이 때, 전체 실행 시간에 중요한 영향을 미치는 루프(loop)들을 효과적으로 선택하고, 선택된 루프들을 CGA(120) 에서 실행하면, 전체 실행 시간을 단축할 수 있다. 이 때, CGA(120)에서 동시에 보다 많은 루프들을 실행할 수 있으면, 전체 실행 시간을 보다 단축할 것으로 기대된다.
그러나, 구성 메모리(130)는, CGA(130)에서 실행되기에 적합한 형태로 변환된 인스트럭션들의 정보를 저장한다. 상기 저장되는 정보는 CGA(130)에서 실행되기에 적합한 형태로 변환되었기 때문에 압축되어 있지 않고, 보다 많은 저장 공간을 요구한다.
따라서, 동시에 CGA(120)가 많은 수의 루프들을 실행하기 위해서는 구성 메모리(130)의 크기가 매우 커야 하고, 구성 메모리(130)의 크기가 크면 프로세서(100)의 하드웨어 면적이 커지는 문제점이 있다.
따라서, 주어진 구성 메모리(130)의 크기에 대응하여 동시에 CGA(120)에서 실행될 루프들을 선택하는 알고리즘(algorithm) 및 선택된 루프들을 실행하는 알고리즘이 필요하고, 본 명세서에서는 상기의 알고리즘들이 제안된다.
본 발명은 구성 메모리(130)를 동적으로 관리하기 위한 알고리즘으로서, 주어진 구성 메모리(130)의 크기에 대응하여, 프로그램을 정적으로 분석하여 얻어진 결과를 이용하여 프로그램의 변환을 실행한다.
본 발명의 알고리즘은 하기와 같은 과정을 포함한다.
(a) 프로그램을 계층 영역 그래프(Hierarchical Acyclic Region Graph, HARG)로 표현한다.
(b) HARG의 각 노드(node)의 커버리지(coverage)를 계산한다.
(c) 계산된 커버리지 및 HARG를 이용하여 최적의 구성 그룹(configuration group)들을 탐색한다.
(d) 탐색된 구성 그룹들에 포함되는 구성 정보(configuration)의 배치(placement)를 결정한다.
(e) 프로그램을 CGA(120)에서 실행되기에 적합한 형태로 변환한다.
도 2는 본 발명의 일 실시예에 따른 계층 영역 그래프(HARG)를 도시하는 도면이다.
도 2를 참조하면, main 함수(210)는 foo 함수(220), main_0 루프(230) 및 main_1 루프(240)를 호출한다.
foo 함수(220)는 프로세서 코어(110)에서 실행되고, main_1 루프(240)는 CGA(120)에서 실행된다.
main_0 루프(230)는 bar 함수(250)를 호출하고, bar 함수(250)는 bar_1 루프(260)를 호출한다.
bar_1 루프(260)는 CGA(120)에서 실행된다.
bar 함수(250)는 bar_1 루프(260)의 실행 결과를 이용하여 프로세서 코어(110)에서 실행된다.
main 함수(210), foo 함수(220), main_0 루프(230), main_1 루프(240), bar 함수(250) 및 bar_1 루프(260)를 HARG의 노드(node)라고 한다.
컴파일러는 각 노드의 커버리지(coverage)를 계산한다. 각 노드의 커버리지는, 각 노드의 하위 계층에 포함되고, CGA(120)에서 실행되는 루프에 대응하는 노 드들의 정보이다.
각 노드의 커버리지로부터, 각 노드에 대응하는 루프 또는 함수가 CGA(120)에서 실행될 경우, 구성 메모리(130)에 저장되어야 할 구성 정보(configuration)의 크기가 얻어질 수 있다.
컴파일러는 각 노드에 대응하는 configuration의 크기 및 구성 메모리(130)의 크기에 기초하여 구성 그룹을 설정한다. 구성 그룹은 동시에 구성 메모리(130)에 저장되는 configuration들의 집합이다.
본 실시예에서는, main_1 루프(240)에 대응하는 configuration은 3이고, bar_1 루프(260)에 대응하는 configuration은 5라고 가정한다.
컴파일러는 main 함수(210)의 커버리지에 대응하는 configuration의 크기를 계산한다.
main 함수(210)는 main_1 루프(240) 및 bar_1 루프(260)를 모두 포함하기 때문에, main 함수(210)에 대응하는 configuration의 크기는 8이다.
만일 구성 메모리(130)의 크기가 8보다 작지 않다면 구성 메모리(130)는 main 함수(210)에 대응하는 configuration을 동시에 저장할 수 있다.
이 때, 컴파일러는 main 함수(210)를 구성 그룹으로 설정한다.
만일 구성 메모리(130)의 크기가 8보다 작고, 5보다 크거나 같다면 구성 메모리(130)는 main 함수(210)에 대응하는 configuration을 동시에 저장할 수 없다.
이 때, 컴파일러는 main 함수(210)의 하위 계층의 노드를 탐색하고, 탐색된 노드들에 대하여 configuration의 크기를 계산한다.
foo 함수(220)는 CGA(120)에서 실행될 루프를 포함하지 않으므로, foo 함수(220)의 configuration의 크기는 0이다.
main_0 루프(230)는 bar_1 루프(260)를 포함하므로, main_0 루프(230)의 configuration의 크기는 5이다.
main_1 루프(240)의 configuration의 크기는 가정한 바와 같이 3이다.
구성 메모리(130)의 크기가 8보다 작고, 5보다 크거나 같은 경우, CGA(120)는 main_1 루프(240) 또는 bar_1 루프(260) 중 어느 하나를 실행할 수 있다.
이 때, 컴파일러는 foo 함수(220), main_0 루프(230) 및 main_1 루프(240) 각각을 구성 그룹으로 설정한다.
컴파일러는, 실행되는 인스트럭션의 추이에 따라, 설정된 구성 그룹 중 어느 하나를 선택하고, 선택된 구성 그룹에 대응하는 configuration이 구성 메모리(130)에 저장되도록 스케줄링한다.
구성 메모리(130) 내의 위치는 각각 CGA(120) 내의 특정 연산 유닛에 대응한다. 실시예에 따라서는, 특정 연산 유닛은 특정 종류의 연산만을 실행할 수 있는 경우도 있다. 이 경우, 컴파일러는 configuration을 구성 메모리(130)에 저장하기 전에 configuration의 배치(placement)를 미리 결정해야 한다.
실시예에 따라서는, 컴파일러는 configuration들 간의 간섭(interference)을 나타내는 간섭 그래프를 생성하고, 생성된 간섭 그래프에 기초하여 configuration들의 placement를 결정할 수 있다.
본 실시예에서는, configuration들이 element A, B, C, D, E, F 중 적어도 하나로부터 이루어진다고 가정한다.
예를 들어, main 함수가 foo 함수, bar 함수, zen 함수를 호출하고, foo 함수는 element A, B, C를 포함한다고 가정한다. 이 때, bar 함수는 element B, C, D를 포함하고, zen 함수는 element A, E, F를 포함한다고 가정한다.
컴파일러는 foo 함수, bar 함수, zen 함수 각각을 구성 그룹으로 설정한다.
도 3은 본 발명의 일 실시예에 따른 간섭 그래프를 도시하는 도면이다.
도 3을 참조하면, 노드 A는 노드 F, E, B, C 와 직접 연결되고, 노드 B는 노드 A, C, D와 직접 연결된다.
직접 연결되는 노드들은 동시에 실행되어야 할 관계에 있는 configuration element 들에 대응한다.
foo 함수는 element A, B, C를 포함하므로, element A, B, C는 동시에 CGA(120)에서 실행되어야 한다. 따라서, 간섭 그래프에서 노드 A, B, C는 각각 직접 연결된다.
bar 함수는 element B, C, D를 포함한다. 간섭 그래프에서 노드 B, C, D는 각각 직접 연결된다.
zen 함수는 element A, E, F를 포함한다. 간섭 그래프에서 노드 A, E, F는 각각 직접 연결된다.
컴파일러는 가장 많은 element와 직접 연결되는 노드를 검출하고, 검출된 노드의 placement를 가장 먼저 결정한다.
도 3을 참조하면, 노드 A가 가장 많은 4개의 노드들과 직접 연결되므로, 컴 파일러는 configuration A의 placement를 가장 먼저 결정한다.
컴파일러는 foo 함수, bar 함수, zen 함수 중 어느 함수가 CGA(120)에서 실행되더라도, configuration A의 구성 메모리(130) 상의 위치는 동일하도록 placement를 결정한다.
도 4는 본 발명의 일 실시예에 따른 인스트럭션 프로세싱 방법을 나타내는 동작 흐름도이다.
인스트럭션 프로세싱 방법은 프로세서(100)에서 실행된다.
도 4를 참조하면, 인스트럭션 프로세싱 방법은 CGA(120)에서 실행되는 인스트럭션들을 포함하는 복수의 구성 그룹들을 설정한다(S410).
인스트럭션 프로세싱 방법은 설정된 구성 그룹들 중에서 하나 이상의 구성 그룹을 선택한다(S420).
인스트럭션 프로세싱 방법은 선택된 하나 이상의 구성 그룹의 구성 메모리(130) 내에서의 배치(placement)를 결정한다(S430).
인스트럭션 프로세싱 방법은 결정된 배치에 따라 선택된 구성 그룹의 인스트럭션들과 관련된 정보를 구성 메모리(130)에 저장한다(S440).
단계(S410)는 구성 그룹들의 크기가 구성 메모리(130)의 크기보다 크지 않도록 구성 그룹들을 설정할 수 있다.
단계(S430)는 설정된 구성 그룹들에 공통된 인스트럭션들이 구성 메모리(130)의 동일한 위치에 저장되도록 선택된 구성 그룹의 배치를 결정할 수 있다.
단계(S440)는 인스트럭션들을 CGA(120)에서 실행되기에 적합한 형태로 변환 할 수 있다.
도 5는 단계(S410)의 일 예를 더욱 상세히 나타낸 동작 흐름도이다.
도 5를 참조하면, 단계(S410)는 프로세서 코어(110)에서 실행되는 인스트럭션들의 루프를 검출한다(S510).
단계(S410)는 검출된 루프 각각을 노드로 설정한다(S520).
단계(S410)는 검출된 루프 각각의 관계에 따라 설정된 노드 각각을 연결하는 에지(edge)를 설정한다(S530).
단계(S410)는 노드 각각이 요구하는 저장 공간을 계산한다(S540).
단계(S410)는 계산된 저장 공간의 크기 및 구성 메모리(130)의 크기에 기초하여 노드 각각으로부터 구성 그룹들을 설정한다(S550).
도 6은 단계(S410)의 다른 예를 더욱 상세히 나타낸 동작 흐름도이다.
도 6을 참조하면, 단계(S410)는 프로세서 코어(110)에서 실행되는 인스트럭션들의 루프를 검출한다(S610).
단계(S410)는 검출된 루프 각각을 노드로 설정한다(S620).
단계(S410)는 기준 계층 레벨(reference hierarchy level)을 설정한다(S630).
단계(S410)는 설정된 노드들 중 설정된 기준 계층 레벨에 대응하는 노드들을 선택한다(S640).
단계(S410)는 선택된 노드들 각각이 요구하는 저장 공간을 계산한다(S650).
단계(S410)는 계산된 저장 공간 각각을 구성 메모리(130)의 크기와 비교한 다(S650).
단계(S410)는 계산된 저장 공간 각각이 구성 메모리(130)의 크기보다 크지 않은 경우, 선택된 노드들을 구성 그룹들로 설정한다(S660).
단계(S410)는 계산된 저장 공간 중 적어도 하나가 구성 메모리(130)의 크기보다 큰 경우, 단계(S630)를 다시 실행한다. 이 때, 단계(S630)는 기준 계층 레벨을 조정하고, 단계(S640)는 조정된 기준 계층 레벨에 따라 새로운 노드들을 선택한다.
도 7은 본 발명의 프로세서(100)에서 실행되는 인스트럭션 프로세싱 방법의 다른 예를 도시하는 동작 흐름도이다.
도 7을 참조하면, 인스트럭션 프로세싱 방법은 계층 영역 그래프(hierarchical acyclic region graph, HARG)를 생성한다(S710).
인스트럭션 프로세싱 방법은 HARG 상에서 CGA 커버리지를 계산한다(S720). 이 때, CGA 커버리지는 HARG 상의 노드 각각에 대응하는 configuration의 크기이고, configuration은 CGA(120)에서 실행되는 인스트럭션들과 관련되는 정보이다.
인스트럭션 프로세싱 방법은 CGA 루프를 그룹핑한다(S730). 이 때, CGA 루프는 CGA(120)에서 실행되는 루프를 말하며, HARG 상의 노드들 중 일부에 대응한다.
인스트럭션 프로세싱 방법은 CGA 루프의 배치를 결정한다(S740). 이 때, CGA 루프의 배치는 CGA 루프의 configuration이 구성 메모리(130)에 저장되는 위치를 말한다.
인스트럭션 프로세싱 방법은 프로그램을 변환한다(S750). 단계(S750)는 인스트럭션들(program)을 CGA(120)에서 실행되기에 적합한 형태로 변환한다.
본 발명에 따른 인스트럭션 프로세싱 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 본 발명은 비록 한정된 실시예와 도면에 의해 설명되었으나, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상의 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다.
그러므로, 본 발명의 범위는 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.
도 1은 본 발명의 일 실시예에 따른 프로세서(100)를 나타낸 도면이다.
도 2는 본 발명의 일 실시예에 따른 계층 영역 그래프(HARG)를 도시하는 도면이다.
도 3은 본 발명의 일 실시예에 따른 간섭 그래프를 도시하는 도면이다.
도 4는 본 발명의 일 실시예에 따른 인스트럭션 프로세싱 방법을 나타내는 동작 흐름도이다.
도 5는 단계(S410)의 일 예를 더욱 상세히 나타낸 동작 흐름도이다.
도 6은 단계(S410)의 다른 예를 더욱 상세히 나타낸 동작 흐름도이다.
도 7은 본 발명의 프로세서(100)에서 실행되는 인스트럭션 프로세싱 방법의 다른 예를 도시하는 동작 흐름도이다.
<도면의 주요 부분에 대한 부호의 설명>
110: 프로세서 코어
120: 코어스 그레인 어레이
130: 구성 메모리

Claims (11)

  1. 프로세서 코어;
    상기 프로세서 코어에서 실행되는 인스트럭션들 중 일부를 상기 프로세서 코어에 대신하여 실행하는 코어스 그레인 어레이; 및
    상기 코어스 그레인 어레이에서 실행되는 인스트럭션들과 관련된 정보를 저장하는 구성 메모리
    를 포함하고,
    상기 코어스 그레인 어레이에서 실행되는 인스트럭션들을 포함하는 복수의 구성 그룹들이 설정되고, 상기 설정된 구성 그룹들 중에서 하나 이상의 구성 그룹이 선택되고,
    상기 구성 메모리는 상기 선택된 구성 그룹의 인스트럭션들과 관련된 정보를 저장하는 것을 특징으로 하는 프로세서.
  2. 제1항에 있어서,
    상기 구성 그룹들의 크기가 상기 구성 메모리의 크기보다 크지 않도록 설정되는 것을 특징으로 하는 프로세서.
  3. 제1항에 있어서,
    상기 구성 메모리는
    상기 설정된 구성 그룹들에 공통된 인스트럭션들이 상기 구성 메모리의 동일한 위치에 저장되도록 상기 선택된 구성 그룹들의 배치를 결정하는 것을 특징으로 하는 프로세서.
  4. 제1항에 있어서,
    상기 구성 그룹들은
    상기 프로세서 코어에서 실행되는 인스트럭션들이 관련되는 루프의 계층 레벨에 기초하여 설정되는 것을 특징으로 하는 프로세서.
  5. 프로세서 코어, 코어스 그레인 어레이 및 상기 코어스 그레인 어레이에서 실행되는 인스트럭션들과 관련되는 정보를 저장하는 구성 메모리를 포함하는 프로세서의 인스트럭션 프로세싱 방법에 있어서,
    상기 코어스 그레인 어레이에서 실행되는 인스트럭션들을 포함하는 복수의 구성 그룹들을 설정하는 단계;
    상기 설정된 구성 그룹들 중에서 하나 이상의 구성 그룹을 선택하는 단계;
    상기 선택된 하나 이상의 구성 그룹의 상기 구성 메모리 내에서의 배치를 결정하는 단계; 및
    상기 결정된 배치에 따라 상기 선택된 구성 그룹의 인스트럭션들과 관련된 정보를 상기 구성 메모리에 저장하는 단계
    를 포함하는 것을 특징으로 하는 인스트럭션 프로세싱 방법.
  6. 제5항에 있어서,
    상기 복수의 구성 그룹들을 설정하는 단계는
    상기 구성 그룹들의 크기가 상기 구성 메모리의 크기보다 크지 않도록 상기 구성 그룹들을 설정하는 것을 특징으로 하는 인스트럭션 프로세싱 방법.
  7. 제5항에 있어서,
    상기 선택된 하나 이상의 구성 그룹의 상기 구성 메모리 내에서의 배치를 결정하는 단계는
    상기 설정된 구성 그룹들에 공통된 인스트럭션들이 상기 구성 메모리의 동일한 위치에 저장되도록 상기 선택된 구성 그룹의 배치를 결정하는 것을 특징으로 하는 인스트럭션 프로세싱 방법.
  8. 제5항에 있어서,
    상기 복수의 구성 그룹들을 설정하는 단계는
    상기 프로세서 코어에서 실행되는 인스트럭션들의 루프를 검출하여 검출된 루프 각각을 노드로 설정하는 단계;
    상기 검출된 루프 각각의 관계에 따라 상기 설정된 노드 각각을 연결하는 에지를 설정하는 단계;
    상기 노드 각각이 요구하는 저장 공간을 계산하는 단계; 및
    상기 계산된 저장 공간의 크기 및 상기 구성 메모리의 크기에 기초하여 상기 노드 각각으로부터 상기 구성 그룹을 설정하는 단계
    를 포함하는 것을 특징으로 하는 인스트럭션 프로세싱 방법.
  9. 제5항에 있어서,
    상기 복수의 구성 그룹들을 설정하는 단계는
    상기 프로세서 코어에서 실행되는 인스트럭션들의 루프를 검출하여 검출된 루프 각각을 노드로 설정하는 단계;
    기준 계층 레벨을 설정하는 단계;
    상기 설정된 노드들 중 상기 설정된 기준 계층 레벨에 대응하는 노드들을 선택하는 단계;
    상기 선택된 노드들 각각이 요구하는 저장 공간을 계산하는 단계;
    상기 계산된 저장 공간 각각이 상기 구성 메모리의 크기보다 크지 않은 경우 상기 선택된 노드들을 상기 구성 그룹들로 설정하는 단계
    상기 계산된 저장 공간 중 적어도 하나가 상기 구성 메모리의 크기보다 큰 경우 상기 기준 계층 레벨을 조정하는 단계; 및
    상기 조정된 기준 계층 레벨에 따라 새로운 노드들을 선택하는 단계
    를 포함하는 것을 특징으로 하는 인스트럭션 프로세싱 방법.
  10. 제5항에 있어서,
    상기 선택된 구성 그룹의 인스트럭션들과 관련된 정보를 상기 구성 메모리에 저장하는 단계는
    상기 인스트럭션들을 상기 코어스 그레인 어레이에서 실행되기에 적합한 형태로 변환하는 단계
    를 포함하는 것을 특징으로 하는 인스트럭션 프로세싱 방법.
  11. 제5항 내지 제10항 중 어느 한 항의 방법을 실행하기 위한 프로그램이 기록되어 있는 것을 특징으로 하는 컴퓨터에서 판독 가능한 기록 매체.
KR1020070111717A 2007-11-02 2007-11-02 프로세서 및 인스트럭션 프로세싱 방법 KR101273469B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020070111717A KR101273469B1 (ko) 2007-11-02 2007-11-02 프로세서 및 인스트럭션 프로세싱 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020070111717A KR101273469B1 (ko) 2007-11-02 2007-11-02 프로세서 및 인스트럭션 프로세싱 방법

Publications (2)

Publication Number Publication Date
KR20090045744A true KR20090045744A (ko) 2009-05-08
KR101273469B1 KR101273469B1 (ko) 2013-06-14

Family

ID=40855796

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020070111717A KR101273469B1 (ko) 2007-11-02 2007-11-02 프로세서 및 인스트럭션 프로세싱 방법

Country Status (1)

Country Link
KR (1) KR101273469B1 (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20140102581A (ko) * 2012-07-19 2014-08-22 삼성전자주식회사 재구성 프로세서에서 충돌 해결을 가속화하기 위한 방법 및 시스템
US9063735B2 (en) 2010-10-19 2015-06-23 Samsung Electronics Co., Ltd. Reconfigurable processor and method for processing loop having memory dependency
US9535833B2 (en) 2013-11-01 2017-01-03 Samsung Electronics Co., Ltd. Reconfigurable processor and method for optimizing configuration memory
US9632978B2 (en) 2012-03-16 2017-04-25 Samsung Electronics Co., Ltd. Reconfigurable processor based on mini-cores, schedule apparatus, and method thereof

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100731976B1 (ko) * 2005-06-30 2007-06-25 전자부품연구원 재구성 가능 프로세서의 효율적인 재구성 방법

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9063735B2 (en) 2010-10-19 2015-06-23 Samsung Electronics Co., Ltd. Reconfigurable processor and method for processing loop having memory dependency
US9632978B2 (en) 2012-03-16 2017-04-25 Samsung Electronics Co., Ltd. Reconfigurable processor based on mini-cores, schedule apparatus, and method thereof
KR20140102581A (ko) * 2012-07-19 2014-08-22 삼성전자주식회사 재구성 프로세서에서 충돌 해결을 가속화하기 위한 방법 및 시스템
US9535833B2 (en) 2013-11-01 2017-01-03 Samsung Electronics Co., Ltd. Reconfigurable processor and method for optimizing configuration memory
US9697119B2 (en) 2013-11-01 2017-07-04 Samsung Electronics Co., Ltd. Optimizing configuration memory by sequentially mapping the generated configuration data into fields having different sizes by determining regular encoding is not possible
US9727460B2 (en) 2013-11-01 2017-08-08 Samsung Electronics Co., Ltd. Selecting a memory mapping scheme by determining a number of functional units activated in each cycle of a loop based on analyzing parallelism of a loop
US9734058B2 (en) 2013-11-01 2017-08-15 Samsung Electronics Co., Ltd. Optimizing configuration memory by sequentially mapping the generated configuration data by determining regular encoding is possible and functional units are the same in adjacent cycles

Also Published As

Publication number Publication date
KR101273469B1 (ko) 2013-06-14

Similar Documents

Publication Publication Date Title
US11620286B2 (en) Continuous cloud-scale query optimization and processing
US9244883B2 (en) Reconfigurable processor and method of reconfiguring the same
KR101335001B1 (ko) 프로세서 및 인스트럭션 스케줄링 방법
US9164769B2 (en) Analyzing data flow graph to detect data for copying from central register file to local register file used in different execution modes in reconfigurable processing array
US8898390B2 (en) Scheduling workloads based on cache asymmetry
KR101273469B1 (ko) 프로세서 및 인스트럭션 프로세싱 방법
US8869129B2 (en) Apparatus and method for scheduling instruction
US8166321B2 (en) Method and apparatus to adapt the clock rate of a programmable coprocessor for optimal performance and power dissipation
Roy et al. Energy-efficient primary/backup scheduling techniques for heterogeneous multicore systems
JP5910499B2 (ja) 拡張性評価装置、拡張性評価方法および拡張性評価プログラム
KR101962250B1 (ko) 재구성가능 아키텍처를 위한 스케줄러 및 스케줄링 방법
US8196146B2 (en) Information processing apparatus, parallel processing optimization method, and program
CN113157043B (zh) 基于强化学习的异构多核处理器动态电压调节方法及系统
US11269646B2 (en) Instruction scheduling patterns on decoupled systems
Quan et al. An iterative multi-application mapping algorithm for heterogeneous mpsocs
US8095806B2 (en) Method of power simulation and power simulator
JP5278538B2 (ja) コンパイルシステム、コンパイル方法およびコンパイルプログラム
Chen et al. Reducing memory access conflicts with loop transformation and data reuse on coarse-grained reconfigurable architecture
Jiashu et al. A design flow for partially reconfigurable heterogeneous multi-processor platforms
Sudarsan et al. Design and performance of a scheduling framework for resizable parallel applications
KR101910934B1 (ko) 루프의 프롤로그 또는 에필로그의 비유효 연산을 처리하는 장치 및 방법
KR101894752B1 (ko) 가상 아키텍쳐 생성 장치, 런타임 시스템, 멀티 코어 시스템 및 그 동작 방법
Dimitroulakos et al. Design space exploration of an optimized compiler approach for a generic reconfigurable array architecture
JP3795055B1 (ja) 値予測装置、マルチプロセッサシステムおよび値予測方法
JP4788902B2 (ja) コンパイル最適化方法およびコンパイラ

Legal Events

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

Payment date: 20160518

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20170522

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20180518

Year of fee payment: 6