KR101962250B1 - 재구성가능 아키텍처를 위한 스케줄러 및 스케줄링 방법 - Google Patents
재구성가능 아키텍처를 위한 스케줄러 및 스케줄링 방법 Download PDFInfo
- Publication number
- KR101962250B1 KR101962250B1 KR1020130023492A KR20130023492A KR101962250B1 KR 101962250 B1 KR101962250 B1 KR 101962250B1 KR 1020130023492 A KR1020130023492 A KR 1020130023492A KR 20130023492 A KR20130023492 A KR 20130023492A KR 101962250 B1 KR101962250 B1 KR 101962250B1
- Authority
- KR
- South Korea
- Prior art keywords
- path
- instruction
- unit
- path information
- direct path
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7867—Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
- G06F15/7885—Runtime interface, e.g. data exchange, runtime control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
재구성가능 아키텍처를 위한 스케줄러 및 스케줄링 방법이 개시된다. 본 발명의 스케줄러는, 미리 정의된 아키텍처 조건을 만족하는 재구성가능 어레이(Reconfigurable Array)의 아키텍처 정보를 기반으로 기능 유닛 간의 디렉트 패스(direct path) 정보 및 인디렉트 패스(indirect path) 정보를 추출하는 경로 정보 추출부와, 재구성가능 어레이에서 실행될 명령어에 관한 데이터 플로우 그래프(Data Flow Graph, DFG)에서 명령어를 선택하는 명령어 선택부와, 선택된 명령어를 추출된 디렉트 패스(direct path) 정보 및 인디렉트 패스(indirect path) 정보를 기반으로 스케줄링하는 스케줄링부를 포함할 수 있다.
Description
재구성가능 아키텍처를 위한 스케줄러 및 스케줄링 방법에 관한 것이다.
통상적으로, 재구성가능 아키텍처(Reconfigurable Architecture)란 어떠한 작업을 수행하기 위한 컴퓨팅 장치의 하드웨어적 구성을 각각의 작업에 최적화되도록 변경할 수 있는 아키텍처를 의미한다.
어떠한 작업을 하드웨어적으로만 처리하면 고정된 하드웨어의 기능으로 인해 작업 내용에 약간의 변경이 가해지면 이를 효율적으로 처리하기가 어렵다. 또한, 어떠한 작업을 소프트웨어적으로만 처리하면 그 작업 내용에 맞도록 소프트웨어를 변경하여 처리하는 것이 가능하지만 하드웨어적 처리에 비해 속도가 늦다. 재구성가능 아키텍처는 이러한 하드웨어/소프트웨어의 장점을 모두 만족시킬 수가 있다.
그러나, 재구성가능 아키텍처는 구조적인 자원을 절감하고, 최적화의 많은 부분을 컴파일러에 위임함으로써 면적, 전력 등 하드웨어적인 면에서 이득을 취할 수는 있지만, 컴파일 알고리즘의 복잡도가 높아 컴파일 시간이 상당히 길어지게 된다. 특히, 컴파일 시간이 길어짐으로써 ASIC과 같은 하드웨어 로직 대신 프로세서를 사용함으로써 얻을 수 있는 유연성(flexibility)라는 장점을 잃어버리게 된다.
미리 정의된 재구성가능 아키텍처에서 정해진 규칙에 따라 디렉트(direct)/인디렉트(indirect) 라우팅 경로(routing path)만을 검색하여, 라우팅을 수행함으로써, 컴파일 시간을 줄이면서 성능 저하를 최소화할 수 있는 재구성가능 아키텍처를 위한 스케줄러 및 스케줄링 방법이 제공된다.
본 발명의 일 양상에 따른 재구성가능 아키텍처를 위한 스케줄러는, 미리 정의된 아키텍처 조건을 만족하는 재구성가능 어레이(Reconfigurable Array)의 아키텍처 정보를 기반으로 기능 유닛 간의 디렉트 패스(direct path) 정보 및 인디렉트 패스(indirect path) 정보를 추출하는 경로 정보 추출부와, 재구성가능 어레이에서 실행될 명령어에 관한 데이터 플로우 그래프(Data Flow Graph, DFG)에서 명령어를 선택하는 명령어 선택부와, 선택된 명령어를 추출된 디렉트 패스(direct path) 정보 및 인디렉트 패스(indirect path) 정보를 기반으로 스케줄링하는 스케줄링부를 포함할 수 있다.
여기서, 재구성가능 어레이(Reconfigurable Array)는 코어스 그레인 재구성가능 어레이(Coarse Grained Reconfigurable Array)일 수 있다.
여기서, 미리 정의된 아키텍처 조건은 재구성가능 어레이(Reconfigurable Array)에 포함된 모든 두 기능 유닛 사이에는 적어도 하나 이상의 인디렉트 패스(indirect path)가 존재할 것 또는 재구성가능 어레이(Reconfigurable Array)에 포함된 임의의 두 기능 유닛 사이에는 디렉트 패스(direct path)가 존재할 수 있을 것 중 적어도 하나를 만족하는 것일 수 있다.
여기서, 스케줄링부는, 선택된 명령어가 배치(placement)될 수 있는 기능 유닛 및 스케줄 시간을 검색하는 배치 영역 검색부와, 검색된 기능 유닛 및 스케줄 시간에 상기 선택된 명령어를 배치하는 명령어 배치부와, 배치된 명령어와 이와 데이터 의존관계에 있는 명령어와의 라우팅 경로를 디렉트 패스 정보 및 인디렉트 패스 정보를 기반으로 검색하는 라우팅 경로 검색부와, 검색된 라우팅 경로상에 존재하는 노드의 점유상태를 확인하여 라우팅 경로의 유효성을 판단하는 유효성 판단부를 포함할 수 있다.
여기서, 라우팅 경로 검색부는, 데이터 의존 관계에 있는 두 명령어가 각각 배치되어 있는 두 기능 유닛 사이의 디렉트 패스를 디렉트 패스 정보를 기반으로 검색하고, 디렉트 패스가 검색되지 않는 경우, 인디렉트 패스 정보를 기반으로 두 기능 유닛 사이의 인디렉트 패스를 검색할 수 있다.
여기서, 유효성 판단부는, 검색된 라우팅 경로의 출발지 노드 또는 목적지 노드 각각에 대하여 전속(exclusive) 연결된 노드가 존재하는 경우, 검색된 라우팅 경로 상의 노드 중에서 이를 제외한 노드의 점유상태를 확인함으로써 검색된 라우팅 경로의 유효성을 판단할 수 있다.
본 발명의 다른 양상에 따른 재구성가능 아키텍처를 위한 스케줄링 방법은, 미리 정의된 아키텍처 조건을 만족하는 재구성가능 어레이(Reconfigurable Array)의 아키텍처 정보를 기반으로 기능 유닛 간의 디렉트 패스(direct path) 정보 및 인디렉트 패스(indirect path) 정보를 추출하는 단계와, 재구성가능 어레이에서 실행될 명령어에 관한 데이터 플로우 그래프(Data Flow Graph, DFG)에서 명령어를 선택하는 단계와, 선택된 명령어를 추출된 디렉트 패스(direct path) 정보 및 인디렉트 패스(indirect path) 정보를 기반으로 스케줄링하는 단계를 포함할 수 있다.
여기서, 재구성가능 어레이(Reconfigurable Array)는 코어스 그레인 재구성가능 어레이(Coarse Grained Reconfigurable Array)일 수 있다.
여기서, 미리 정의된 아키텍처 조건은 재구성가능 어레이(Reconfigurable Array)에 포함된 모든 두 기능 유닛 사이에는 적어도 하나 이상의 인디렉트 패스가 존재할 것 또는 재구성가능 어레이(Reconfigurable Array)에 포함된 임의의 두 기능 유닛 사이에는 디렉트 패스가 존재할 수 있을 것 중 적어도 하나를 만족하는 것일 수 있다.
여기서, 스케줄링하는 단계는, 선택된 명령어가 배치(placement)될 수 있는 기능 유닛 및 스케줄 시간을 검색하는 단계와, 검색된 기능 유닛 및 스케줄 시간에 선택된 명령어를 배치하는 단계와, 배치된 명령어와 이와 데이터 의존관계에 있는 명령어와의 라우팅 경로를 디렉트 패스 정보 및 인디렉트 패스 정보를 기반으로 검색하는 단계와, 검색된 라우팅 경로상의 노드의 점유상태를 확인하여 검색된 라우팅 경로의 유효성을 판단하는 단계를 포함할 수 있다.
여기서, 라우팅 경로를 검색하는 단계는, 디렉트 패스 정보를 기반으로 두 명령어가 각각 배치되어 있는 두 기능 유닛 사이의 디렉트 패스를 검색하는 단계와, 디렉트 패스를 검색한 결과, 디렉트 패스가 검색되지 않는 경우, 인디렉트 패스 정보를 기반으로 두 기능 유닛 사이의 인디렉트 패스를 검색하는 단계를 포함할 수 있다.
여기서, 라우팅 경로의 유효성을 판단하는 단계는, 검색된 라우팅 경로의 출발지 노드 또는 목적지 노드 각각에 대하여 전속(exclusive) 연결된 노드가 존재하는 경우, 검색된 라우팅 경로 상의 노드 중에서 이를 제외한 노드의 점유상태를 확인함으로써 검색된 라우팅 경로의 유효성을 판단할 수 있다.
미리 정의된 재구성가능 아키텍처에서 정해진 규칙에 따라 디렉트(direct)/인디렉트(indirect) 라우팅 경로(routing path)만을 검색하여, 라우팅을 수행함으로써, 컴파일 시간을 줄이면서 성능 저하를 최소화할 수 있다.
또한, 컴파일 시간을 줄임으로써, 어플리케이션 개발 및 아키텍처 탐색 시간을 줄이고, 생산성을 향상 시킬 수 있다.
도 1은 본 발명의 일 실시 예에 따른 코어스 그레인 재구성가능 아키텍처(Coarse Grained Reconfigurable Architecture, CGRA)의 구조를 개략적으로 도시한 도면이다.
도 2는 본 발명의 일 실시 예에 따른 재구성가능 아키텍처를 위한 스케줄러의 구성도이다.
도 3은 본 발명의 일 실시 예에 따른 재구성가능 아키텍처를 위한 스케줄링 방법을 도시한 흐름도이다.
도 4는 도 3의 스케줄링 과정(330)의 상세 흐름도이다.
도 2는 본 발명의 일 실시 예에 따른 재구성가능 아키텍처를 위한 스케줄러의 구성도이다.
도 3은 본 발명의 일 실시 예에 따른 재구성가능 아키텍처를 위한 스케줄링 방법을 도시한 흐름도이다.
도 4는 도 3의 스케줄링 과정(330)의 상세 흐름도이다.
이하, 첨부된 도면을 참조하여 본 발명의 일 실시 예를 상세하게 설명한다. 본 발명을 설명함에 있어 관련된 공지 기능 또는 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략할 것이다. 또한, 후술되는 용어들은 본 발명에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로, 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다.
한편, 본 발명에서 설명되는 디렉트 패스(direct path)는 두 개의 기능 유닛(FU1, FU2)에 대하여, FU1에서 FU2로 가는 최단 라우팅 경로가 다른 기능 유닛, 지역 레지스터 파일(Local Register File, LRF)을 거치지 않고 오직 멀티플렉서(multiplexer) 또는 래치(latch) 등과 같은 트랜지션 노드(transition node)만을 거치는 경로를 의미하며, 인디렉트 패스(indirect path)는 FU1에서 지역 레지스터 파일(LRF)을 거쳐 FU1로 가는 라우팅 경로 중 FU1->LRF, LRF-> FU2의 각 경로가 최단 라우팅 경로가 되는 경로를 의미한다.
도 1은 본 발명의 일 실시 예에 따른 코어스 그레인 재구성가능 아키텍처(Coarse Grained Reconfigurable Architecture, CGRA)를 개략적으로 도시한 도면이다.
도 1을 참조하면, 본 발명의 일 실시 예에 따른 코어스 그레인 재구성 아키텍처는 재구성가능 어레이(100) 및 제어 메모리(150)를 포함할 수 있다.
재구성가능 어레이(100)는 복수의 FU 클러스터(110a 내지 110d), 광역 레지스터 파일(120) 및 광역 연결부(130)를 포함할 수 있고, 이때, 각 FU 클러스터(예를 들어, 110a)는 복수의 기능 유닛(111a 내지 111d), 지역 레지스터 파일(113) 및 지역 연결부(112)를 포함할 수 있다.
기능 유닛(111a 내지 111d) 각각은 특정한 명령어을 실행할 수 있다. 여기서, 명령어란 오퍼레이션(operation) 또는 인스트럭션(instruction)을 의미할 수 있다.
지역 레지스터 파일(113)은 각 FU 클러스터(예를 들어, 110a)의 지역 레지스터들의 집합으로, 각 FU 클러스터(예를 들어, 110a)에 포함된 기능 유닛(111a 내지 111d))에서 사용되는 데이터를 임시 저장할 수 있다.
지역 연결부(112)는 기능 유닛(111a 내지 111d)간의 경로를 설정하기 위한 트랜지션 노드(transition node)로서, 멀티플렉서(multiplexer) 또는 래치(latch) 등으로 구성될 수 있다.
광역 레지스터 파일(120)은 광역 레지스터들의 집합으로, 각 FU 클러스터(110a 내지 110d)에서 사용되는 데이터를 임시 저장할 수 있다.
광역 연결부(130)는 각 FU 클러스터 간의 경로(또는 각 기능 유닛 간의 경로)를 설정하기 위한 트랜지션 노드(transition node)로서, 멀티플렉서(multiplexer) 또는 래치(latch) 등으로 구성될 수 있다.
한편, 도 1의 예에서 재구성가능 어레이로 코어스 그레인 어레이(Coarse Grained Array)를 도시하였으나, 이에 한정되는 것은 아니다.
제어 메모리(150)는 특정 프로그램에 대한 명령어 또는 구성 데이터를 저장할 수 있다. 여기서 구성 데이터는 재구성가능 어레이(100)의 각 구성부의 연결 상태에 관한 정보를 말하며, 예컨대, 제어 메모리(150)에 저장된 구성 데이터에 따라 재구성 가능 어레이(100)의 구성이 변경되는 것이 가능하다.
또한, 본 발명의 일 실시 예에 따른 코어스 그레인 재구성가능 아키텍처(Coarse Grained Reconfigurable Architecture, CGRA)는 다음과 같은 조건을 만족할 것을 전제한다.
첫째, CGRA 상에 존재하는 모든 두 기능 유닛 사이에는 하나 이상의 인디렉트 패스가 존재하여야 한다.
둘째, CGRA 상에 존재하는 임의의 두 기능 유닛 사이에는 디렉트 패스가 존재할 수 있다.
셋째, 하나의 FU 클러스터 내에 존재하는 모든 기능 유닛은 해당 FU 클러스터 내의 모든 지역 레지스터 파일에 대해 직접적인 연결(direct connection)을 가진다. 그러나 해당 연결들은 공유하는 아키텍처 요소(예를 들어, 지역 레지스터 파일의 읽기/쓰기 포트)를 포함할 수 있으며, 이 경우 여러 기능 유닛이 동시에 접근하지 못하게 될 수도 있다.
한편, 도 1은 4개의 FU 클러스터를 포함하며, 각 FU 클러스터는 4개의 기능 유닛을 포함하는 것으로 도시하고 있으나, 이는 일 예일 뿐, 이에 한정되는 것은 아니다.
이하, 재구성가능 어레이 또는 재구성가능 아키텍처는 상술한 아케텍처 조건을 만족하는 것을 전제한다.
도 2는 본 발명의 일 실시 예에 따른 재구성가능 아키텍처를 위한 스케줄러의 구성도이다.
도 2를 참조하면, 본 발명의 일 실시 예에 따른 스케줄러(200)는 분석부(210), 경로 정보 추출부(220), 명령어 선택부(230) 및 스케줄링부(240)를 포함할 수 있다. 소스 어플리케이션은 전처리 단계에서 중간 코드(Intermediate code)로 변경된다. 이때, 중간 코드는 컴파일러가 소스 어플리케이션을 읽어서 이를 파싱하여 최적화하기 좋은 형태로 만든 코드를 의미한다.
분석부(210)는 중간 코드에 대한 여러가지 최적화 방법을 수행하기 위하여 소스 어플리케이션에 대한 중간 코드들을 분석할 수 있다.
분석부(210)는 재구성가능 어레이(100) 상에 할당될 명령어들과 그 명령어들 간의 데이터 의존도(data dependency)을 보여주는 데이터 플로우 그래프(data flow graph)를 생성할 수 있다. 예를 들면, 분석부(210)는 재구성가능 어레이(100) 내의 기능 유닛들에 할당될 명령어들 각각을 하나의 노드(node)로 나타내고, 명령어들 간의 데이터 의존도(data dependency)를 노드 간의 에지(edge)로 나타내어 데이터 플로우 그래프를 생성할 수 있다.
분석부(210)는 재구성가능 어레이에 존재하는 기능 유닛들과 그들간의 연결(connectivity)을 보여주는 아키텍처 그래프(Architecture Graph)를 생성할 수 있다. 예를 들면, 분석부(210)는 재구성가능 어레이(100) 내의 기능 유닛들 각각을 하나의 노드로 나타내고, 기능 유닛들 간의 연결(connectivity)을 노드 간의 에지로 나타내어 아키텍처 그래프(Architecture Graph)를 생성할 수 있다.
경로 정보 추출부(220)는 분석부(210)에서 생성한 아키텍처 그래프를 기반으로 기능 유닛 간의 디렉트 패스(direct path) 정보 및 인디렉트 패스(indirect path) 정보를 추출할 수 있다.
명령어 선택부(230)는 분석부(210)에서 생성한 데이터 플로우 그래프에서 명령어의 실행 순서 또는 의존 관계를 분석하여 우선 순위를 결정하고 이에 따라 명령어를 선택할 수 있다. 예를 들어, 명령어 선택부(230)는 우선 순위가 높은 순서대로, 명령어를 선택할 수 있다.
스케줄링부(240)는 어떤 연산 유닛이 어떤 선택된 명령어를 수행할지 결정할 수 있다. 이때, 스케줄링부(240)는 경로 정보 추출부(220)에서 추출된 디렉트 패스(direct path) 정보 및 인디렉트 패스(indirect path) 정보를 기반으로 명령어 선택부(230)에서 선택된 명령어를 스케줄링할 수 있다.
이를 위해, 스케줄링부(240)는 배치 영역 검색부(241), 명령어 배치부(242), 라우팅 경로 검색부(243) 및 유효성 판단부(244)를 포함할 수 있다.
배치 영역 검색부(241)는 명령어 선택부(230)에서 선택된 명령어가 배치(placement)될 수 있는 기능 유닛 및 스케줄 시간을 검색할 수 있다. 예를 들어, 배치 영역 검색부(241)는 선택된 명령어를 처리할 수 있는 기능 유닛을 탐색할 수 있고, 탐색된 기능 유닛에 해당 명령어가 스케줄될 수 있는 스케줄 시간을 탐색할 수 있다. 이때, 선택된 명령어가 배치될 수 있는 기능 유닛 및 스케줄 시간을 검색할 수 없는 경우, 스케줄링부(240)의 스케줄링은 실패한 것으로 간주된다.
명령어 배치부(242)는 배치 영역 검색부(241)에서 검색된 기능 유닛 및 스케줄 시간에 해당 명령어를 배치(placement)할 수 있다. 예를 들어, 검색된 기능 유닛 및 스케줄 시간을 <기능 유닛, 스케줄 시간>의 순서쌍으로 표현하면, 명령어 배치부(242)는 검색된 <기능 유닛, 스케줄 시간> 중에서 임의의 <기능 유닛, 스케줄 시간>을 선택하여 해당 명령어를 배치(placement)할 수 있다.
라우팅 경로 검색부(243)는 배치된 명령어(또는 해당 명령어에 대응되는 노드)에 연결된 모든 에지들의 라우팅을 수행하기 위하여, 배치된 명령어(또는 해당 명령어에 대응되는 노드)와 이와 데이터 의존관계에 있는 명령어(또는 전임(predecessor) 노드)와의 라우팅 경로를 경로 정보 추출부(220)에서 추출한 디렉트 패스 정보 및 인디렉트 패스 정보를 이용하여 검색할 수 있다.
예를 들어, 명령어2가 명령어1에 의존하며, 명령어1은 <FU1, t0>에 스케줄링되어 있고, 명령어2는 <FU2, t2>에 배치되어 있다고 가정하면, 라우팅 경로 검색부(243)는 라우팅 경로로서 FU1과 FU2사이의 디렉트 패스를 먼저 검색하고, 디렉트 패스가 검색되지 않는 경우, FU1과 FU2사이의 인디렉트 패스를 검색할 수 있다. 즉, 라우팅 경로 검색부(243)는 디렉트 패스가 존재하지 않는 경우에만 인디렉트 패스를 검색할 수 있다.
유효성 판단부(244)는 라우팅 경로 검색부(243)에서 검색된 라우팅 경로의 특정 노드만을 확인함으로써 해당 라우팅 경로의 유효성(validity)을 판단할 수 있다. 예를 들어, 검색된 라우팅 경로 중 하나의 출발지 노드 또는 목적지 노드 각각에 대하여 전속(exclusive) 연결된 노드(또는 엔티티)가 존재하는 경우, 해당 라우팅 경로 상의 노드(또는 엔티티) 중에서 이를 제외한 노드(또는 엔티티)의 점유상태를 확인함으로써 해당 라우팅 경로의 유효성을 판단할 수 있다. 즉, 라우팅 경로가 FU1->A->B->C->FU2 이고, A는 FU1에, C는 FU2에 각각 전속 연결된 노드(또는 엔티티)라고 가정하면, 유효성 판단부(244)는 노드 B의 점유 상태만을 확인함으로써, 해당 라우팅 경로의 유효성을 판단할 수 있다. 이때, 노드 B가 비어있으면 해당 라우팅 경로가 유효하다고 판단하여 해당 명령어에 대한 스케줄링을 완료하고, 노드 B가 비어있지 않으면, 해당 라우팅 경로는 유효하지 않다고 판단할 수 있다.
한편, 검색된 라우팅 경로 모두가 유효하지 않다고 판단한 경우, 명령어 배치부(242)는 배치 영역 검색부(241)에서 검색된 기능 유닛 및 스케줄 시간 중에서 다른 기능 유닛 및 스케줄 시간에 해당 명령어를 배치(placement)함으로써, 스케줄링부(240)는 다시 해당 명령어(또는 해당 명령어에 대응되는 노드)에 연결된 모든 에지에 대한 라우팅을 수행한다.
한편, 배치 영역 검색부(241)에서 검색된 모든 기능 유닛 및 스케줄 시간에 대하여 유효한 라우팅 경로를 설정할 수 없으면, 스케줄링부(240)의 스케줄링은 실패한 것으로 간주된다.
한편, 본 실시 예에 있어서, 분석부(210)는 스케줄러(200)의 내부에 포함되는 것으로 설명하고 있으나, 필수적인 것은 아니며, 스케줄러(200) 외부에 존재하는 것도 가능하다.
도 3은 본 발명의 일 실시 예에 따른 재구성가능 아키텍처를 위한 스케줄링 방법을 도시한 흐름도이다.
도 3을 참조하면, 본 발명의 일 실시 예에 따른 재구성가능 아키텍처를 위한 스케줄링 방법은, 먼저, 재구성가능 어레이의 아키텍처 정보를 기반으로 재구성가능 어레이 내에 존재하는 기능 유닛 간의 디렉트 패스(direct path) 정보 및 인디렉트 패스(indirect path) 정보를 추출한다(310).
그 후, 재구성가능 어레이에서 실행될 명령어에 관한 데이터 플로우 그래프(Data Flow Graph, DFG)에서 명령어를 선택한다(320).
그 후, 선택된 명령어를 디렉트 패스 정보 및 인디렉트 패스 정보를 기반으로 스케줄링한다(330).
그 후, 선택된 명령어의 스케줄링이 성공하였는지를 판단하고(340), 선택된 명령어의 스케줄링이 성공한 경우는 데이터 플로우 그래프 상에 존재하는 모든 명령어에 대한 스케줄링이 수행되었는지를 판단한다(350). 단계 350의 판단 결과 모든 명령어에 대한 스케줄링이 수행된 경우는 스케줄링을 종료하고, 그렇지 않은 경우는 단계 320으로 돌아가 데이터 플로우 그래프에서 스케줄링이 수행되지 않은 명령어를 선택한다.
한편, 단계 340의 판단 결과, 선택된 명령어의 스케줄링이 실패한 경우는, 스케줄링 실패로 간주한다(360).
도 4는 도 3의 스케줄링 과정(330)의 상세 흐름도이다.
도 4를 참조하면, 스케줄링 과정(330)은, 먼저, 선택된 명령어가 배치될 수 있는 기능 유닛 및 스케줄 시간을 검색하여, 선택된 명령어를 배치할 수 있는 기능 유닛 및 스케줄 시간이 존재하는 지 여부를 판단한다(410). 예를 들어, 기능 유닛 및 스케줄 시간을 <기능 유닛, 스케줄 시간>의 순서쌍으로 표현하면, 선택된 명령어가 배치될 수 있는 <기능 유닛, 스케줄 시간>을 검색할 수 있다.
그 후, 단계 410의 판단 결과, 선택된 명령어를 배치할 수 있는 기능 유닛 및 스케줄 시간이 존재하는 경우, 검색된 기능 유닛 및 스케줄 시간에 선택된 명령어를 배치한다(420). 예를 들어, 검색된 <기능 유닛, 스케줄 시간> 중에서 임의의 <기능 유닛, 스케줄 시간>을 선택하여 해당 명령어를 배치(placement)할 수 있다.
그 후, 배치된 명령어와 이와 데이터 의존관계에 있는 명령어와의 디렉트 패스를 검색하여, 디렉트 패스가 존재하는 지를 판단한다(430). 예를 들어, 명령어1은 명령어2의 전임(predecessor) 명령어이고, 명령어1은 <FU1, t0>에 스케줄링되어 있고, 명령어2는 <FU2, t2>에 배치되어 있다고 가정하면, FU1과 FU2사이의 디렉트 패스를 검색할 수 있다. 이 경우, 단계 310에서 추출한 디렉트 패스 정보를 이용할 수 있다.
단계 430의 판단 결과, 디렉트 패스가 존재하는 경우, 검색된 디렉트 패스를 라우팅 경로로 하여, 라우팅 경로의 유효성을 판단한다(440). 이때, 라우팅 경로의 특정 노드만을 확인함으로써 해당 라우팅 경로의 유효성(validity)을 판단할 수 있다. 예를 들어, 라우팅 경로의 출발지 노드 또는 목적지 노드 각각에 대하여 전속(exclusive) 연결된 노드가 존재하는 경우, 해당 라우팅 경로 상의 노드 중에서 이를 제외한 노드의 점유상태를 확인함으로써 해당 라우팅 경로의 유효성을 판단할 수 있다. 즉, 라우팅 경로가 FU1->A->B->C->FU2 이고, A는 FU1에, C는 FU2에 각각 전속 연결된 노드라고 가정하면, 노드 B의 점유 상태만을 확인함으로써, 해당 라우팅 경로의 유효성을 판단할 수 있다. 이때, 노드 B가 비어있으면 해당 라우팅 경로가 유효하다고 판단하고, 노드 B가 비어있지 않으면 해당 라우팅 경로는 유효하지 않다고 판단할 수 있다.
단계 440의 판단 결과, 라우팅 경로가 유효한 경우, 선택된 명령어에 대한 스케줄링을 성공하였다고 판단하고(450), 라우팅 경로가 유효하지 않은 경우, 단계 410으로 돌아가, 선택된 명령어를 배치할 수 있는 기능 유닛 및 스케줄 시간이 존재하는 지 여부를 다시 판단한다.
한편, 단계 410의 판단 결과, 선택된 명령어를 배치할 수 있는 기능 유닛 및 스케줄 시간이 존재하지 않는 경우, 선택된 명령어의 스케줄링이 실패하였다고 판단한다(460)
한편, 단계 430의 판단 결과, 디렉트 패스가 존재하지 않는 경우, 배치된 명령어와 이와 데이터 의존관계에 있는 명령어와의 인디렉트 패스를 검색한다(435). 예를 들어, 상기의 예와 같이, 명령어1은 명령어2의 전임(predecessor) 명령어이고, 명령어1은 <FU1, t0>에 스케줄링되어 있고, 명령어2는 <FU2, t2>에 배치되어 있다고 가정하면, FU1과 FU2사이의 인디렉트 패스를 검색할 수 있다. 이 경우, 단계 310에서 추출한 인디렉트 패스 정보를 이용할 수 있다. 이때, 단계 440의 라우팅 경로의 유효성 판단은 검색된 인디렉트 패스를 라우팅 경로로 하여 판단하게 된다.
한편, 본 발명에 따른 일 실시 예에 따른 라우팅 경로 검색 과정(430, 435) 및 라우팅 경로 유효성 판단 과정(440)을 의사 코드(pseudo code)로 작성하면 다음과 같다.
이때, checkpoints는 각 라우팅 경로의 유효성을 판단하기 위해 검사하는 특정 노드를 의미한다.
본 발명의 일 양상은 컴퓨터로 읽을 수 있는 기록 매체에 컴퓨터가 읽을 수 있는 코드로서 구현될 수 있다. 상기의 프로그램을 구현하는 코드들 및 코드 세그먼트들은 당해 분야의 컴퓨터 프로그래머에 의하여 용이하게 추론될 수 있다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록 장치를 포함할 수 있다. 컴퓨터가 읽을 수 있는 기록 매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피 디스크, 광 디스크 등을 포함할 수 있다. 또한, 컴퓨터가 읽을 수 있는 기록 매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산 방식으로 컴퓨터가 읽을 수 있는 코드로 작성되고 실행될 수 있다.
이제까지 본 발명에 대하여 그 바람직한 실시 예들을 중심으로 살펴보았다. 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명이 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 따라서, 본 발명의 범위는 전술한 실시 예에 한정되지 않고 특허 청구범위에 기재된 내용과 동등한 범위 내에 있는 다양한 실시 형태가 포함되도록 해석되어야 할 것이다.
200: 스케줄러, 210: 분석부,
220: 경로 정보 추출부, 230: 명령어 선택부,
240: 스케줄링부, 241: 배치 영역 검색부,
242: 명령어 배치부, 243: 라우팅 경로 검색부,
244: 유효성 판단부.
220: 경로 정보 추출부, 230: 명령어 선택부,
240: 스케줄링부, 241: 배치 영역 검색부,
242: 명령어 배치부, 243: 라우팅 경로 검색부,
244: 유효성 판단부.
Claims (12)
- 미리 정의된 아키텍처 조건을 만족하는 재구성가능 어레이(Reconfigurable Array)의 아키텍처 정보에 기초하여 기능 유닛 간의 디렉트 패스(direct path) 정보 및 인디렉트 패스(indirect path) 정보를 획득하는 경로 정보 획득부;
상기 재구성가능 어레이에서 실행될 명령어에 관한 데이터 플로우 그래프(Data Flow Graph, DFG)에서 명령어를 선택하는 명령어 선택부; 및
상기 선택된 명령어를 상기 획득된 디렉트 패스(direct path) 정보 및 인디렉트 패스(indirect path) 정보에 기초하여 스케줄링하는 스케줄링부;를 포함하며,
상기 스케줄링부는,
상기 디렉트 패스 정보에 기초하여 상기 선택된 명령어 및 상기 선택된 명령어와 의존 관계에 있는 명령어가 각각 배치된 두 기능 유닛 사이의 디렉트 패스를 검색하고, 상기 디렉트 패스가 검색되지 않는 경우, 상기 인디렉트 패스 정보에 기초하여 상기 두 기능 유닛 사이의 인디렉트 패스를 검색하는 재구성가능 아키텍처를 위한 스케줄러. - 제 1항에 있어서,
상기 재구성가능 어레이(Reconfigurable Array)는 코어스 그레인 재구성가능 어레이(Coarse Grained Reconfigurable Array)인 재구성가능 아키텍처를 위한 스케줄러. - 제 1항에 있어서,
상기 미리 정의된 아키텍처 조건은 재구성가능 어레이(Reconfigurable Array)에 포함된 모든 두 기능 유닛 사이에는 적어도 하나 이상의 인디렉트 패스(indirect path)가 존재할 것 또는 재구성가능 어레이(Reconfigurable Array)에 포함된 임의의 두 기능 유닛 사이에는 디렉트 패스(direct path)가 존재할 수 있을 것 중 적어도 하나를 만족하는 재구성가능 아키텍처를 위한 스케줄러. - 제 1항에 있어서,
상기 스케줄링부는,
상기 선택된 명령어가 배치(placement)될 수 있는 기능 유닛 및 스케줄 시간을 검색하는 배치 영역 검색부;
상기 검색된 기능 유닛 및 스케줄 시간에 상기 선택된 명령어를 배치하는 명령어 배치부;
상기 배치된 명령어와 이와 데이터 의존관계에 있는 명령어와의 라우팅 경로를 상기 디렉트 패스 정보 및 인디렉트 패스 정보에 기초하여 검색하는 라우팅 경로 검색부;
상기 검색된 라우팅 경로상에 존재하는 노드의 점유상태를 확인하여 라우팅 경로의 유효성을 판단하는 유효성 판단부; 를 포함하는 재구성가능 아키텍처를 위한 스케줄러. - 삭제
- 제 4항에 있어서,
상기 유효성 판단부는, 상기 검색된 라우팅 경로의 출발지 노드 또는 목적지 노드 각각에 대하여 전속(exclusive) 연결된 노드가 존재하는 경우, 상기 검색된 라우팅 경로 상의 노드 중에서 이를 제외한 노드의 점유상태를 확인함으로써 상기 검색된 라우팅 경로의 유효성을 판단하는 재구성가능 아키텍처를 위한 스케줄러. - 미리 정의된 아키텍처 조건을 만족하는 재구성가능 어레이(Reconfigurable Array)의 아키텍처 정보에 기초하여 기능 유닛 간의 디렉트 패스(direct path) 정보 및 인디렉트 패스(indirect path) 정보를 획득하는 단계;
상기 재구성가능 어레이에서 실행될 명령어에 관한 데이터 플로우 그래프(Data Flow Graph, DFG)에서 명령어를 선택하는 단계;
상기 선택된 명령어를 상기 획득된 디렉트 패스(direct path) 정보 및 인디렉트 패스(indirect path) 정보에 기초하여 스케줄링하는 단계; 를 포함하며,
상기 스케줄링하는 단계는,
상기 디렉트 패스 정보에 기초하여 상기 선택된 명령어 및 상기 선택된 명령어와 의존 관계에 있는 명령어가 각각 배치된 두 기능 유닛 사이의 디렉트 패스를 검색하는 단계; 및
상기 디렉트 패스가 검색되지 않는 경우, 상기 인디렉트 패스 정보에 기초하여 상기 두 기능 유닛 사이의 인디렉트 패스를 검색하는 단계;를 포함하는 재구성가능 아키텍처를 위한 스케줄링 방법. - 제 7항에 있어서,
상기 재구성가능 어레이(Reconfigurable Array)는 코어스 그레인 재구성가능 어레이(Coarse Grained Reconfigurable Array)인 재구성가능 아키텍처를 위한 스케줄링 방법. - 제 7항에 있어서,
상기 미리 정의된 아키텍처 조건은 재구성가능 어레이(Reconfigurable Array)에 포함된 모든 두 기능 유닛 사이에는 적어도 하나 이상의 인디렉트 패스가 존재할 것 또는 재구성가능 어레이(Reconfigurable Array)에 포함된 임의의 두 기능 유닛 사이에는 디렉트 패스가 존재할 수 있을 것 중 적어도 하나를 만족하는 재구성가능 아키텍처를 위한 스케줄링 방법. - 제 7항에 있어서,
상기 스케줄링하는 단계는,
상기 선택된 명령어가 배치(placement)될 수 있는 기능 유닛 및 스케줄 시간을 검색하는 단계;
상기 검색된 기능 유닛 및 스케줄 시간에 상기 선택된 명령어를 배치하는 단계;
상기 배치된 명령어와 이와 데이터 의존관계에 있는 명령어와의 라우팅 경로를 상기 디렉트 패스 정보 및 인디렉트 패스 정보에 기초하여 검색하는 단계;
상기 검색된 라우팅 경로상의 노드의 점유상태를 확인하여 상기 검색된 라우팅 경로의 유효성을 판단하는 단계; 를 포함하는 재구성가능 아키텍처를 위한 스케줄링 방법. - 삭제
- 제 10항에 있어서,
상기 라우팅 경로의 유효성을 판단하는 단계는, 상기 검색된 라우팅 경로의 출발지 노드 또는 목적지 노드 각각에 대하여 전속(exclusive) 연결된 노드가 존재하는 경우, 상기 검색된 라우팅 경로 상의 노드 중에서 이를 제외한 노드의 점유상태를 확인함으로써 상기 검색된 라우팅 경로의 유효성을 판단하는 재구성가능 아키텍처를 위한 스케줄링 방법.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020130023492A KR101962250B1 (ko) | 2013-03-05 | 2013-03-05 | 재구성가능 아키텍처를 위한 스케줄러 및 스케줄링 방법 |
US14/197,591 US9311270B2 (en) | 2013-03-05 | 2014-03-05 | Scheduler and scheduling method for reconfigurable architecture |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020130023492A KR101962250B1 (ko) | 2013-03-05 | 2013-03-05 | 재구성가능 아키텍처를 위한 스케줄러 및 스케줄링 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20140109146A KR20140109146A (ko) | 2014-09-15 |
KR101962250B1 true KR101962250B1 (ko) | 2019-03-26 |
Family
ID=51489570
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020130023492A KR101962250B1 (ko) | 2013-03-05 | 2013-03-05 | 재구성가능 아키텍처를 위한 스케줄러 및 스케줄링 방법 |
Country Status (2)
Country | Link |
---|---|
US (1) | US9311270B2 (ko) |
KR (1) | KR101962250B1 (ko) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108363615B (zh) * | 2017-09-18 | 2019-05-14 | 清华大学 | 用于可重构处理***的任务分配方法和*** |
CN109669682B (zh) * | 2018-12-18 | 2021-04-02 | 上海交通大学 | 基于通用可重构处理器dbss和mbss的映射方法 |
US11900156B2 (en) | 2019-09-24 | 2024-02-13 | Speedata Ltd. | Inter-thread communication in multi-threaded reconfigurable coarse-grain arrays |
US11354157B2 (en) * | 2020-04-28 | 2022-06-07 | Speedata Ltd. | Handling multiple graphs, contexts and programs in a coarse-grain reconfigurable array processor |
WO2023004347A1 (en) * | 2021-07-20 | 2023-01-26 | The Regents Of The University Of California | Run-time configurable architectures |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004086656A (ja) | 2002-08-28 | 2004-03-18 | Sony Corp | 情報処理装置、その情報処理方法 |
US20090063443A1 (en) * | 2007-08-27 | 2009-03-05 | Arimilli Lakshminarayana B | System and Method for Dynamically Supporting Indirect Routing Within a Multi-Tiered Full-Graph Interconnect Architecture |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7249242B2 (en) * | 2002-10-28 | 2007-07-24 | Nvidia Corporation | Input pipeline registers for a node in an adaptive computing engine |
US8281297B2 (en) * | 2003-02-05 | 2012-10-02 | Arizona Board Of Regents | Reconfigurable processing |
WO2006114642A1 (en) * | 2005-04-28 | 2006-11-02 | The University Court Of The University Of Edinburgh | Reconfigurable instruction cell array |
GB0605349D0 (en) * | 2006-03-17 | 2006-04-26 | Imec Inter Uni Micro Electr | Reconfigurable multi-processing coarse-grain array |
KR101553655B1 (ko) | 2009-01-19 | 2015-09-17 | 삼성전자 주식회사 | 재구성가능 프로세서에 대한 명령어 스케줄링 장치 및 방법 |
KR101515568B1 (ko) * | 2009-02-03 | 2015-04-28 | 삼성전자 주식회사 | 재구성 가능 어레이의 스케줄러, 스케줄링 방법 및 이를 이용한 컴퓨팅 장치 |
KR101647817B1 (ko) * | 2010-03-31 | 2016-08-24 | 삼성전자주식회사 | 재구성 가능한 프로세서의 시뮬레이션 장치 및 방법 |
KR101270763B1 (ko) | 2011-02-21 | 2013-06-03 | 서울대학교산학협력단 | 재구성형 프로세싱 어레이 구조 생성 방법 |
-
2013
- 2013-03-05 KR KR1020130023492A patent/KR101962250B1/ko active IP Right Grant
-
2014
- 2014-03-05 US US14/197,591 patent/US9311270B2/en not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004086656A (ja) | 2002-08-28 | 2004-03-18 | Sony Corp | 情報処理装置、その情報処理方法 |
US20090063443A1 (en) * | 2007-08-27 | 2009-03-05 | Arimilli Lakshminarayana B | System and Method for Dynamically Supporting Indirect Routing Within a Multi-Tiered Full-Graph Interconnect Architecture |
Also Published As
Publication number | Publication date |
---|---|
KR20140109146A (ko) | 2014-09-15 |
US20140259020A1 (en) | 2014-09-11 |
US9311270B2 (en) | 2016-04-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7533375B2 (en) | Program parallelization device, program parallelization method, and program parallelization program | |
US9244883B2 (en) | Reconfigurable processor and method of reconfiguring the same | |
US8296746B2 (en) | Optimum code generation method and compiler device for multiprocessor | |
JP3901180B2 (ja) | プログラム並列化装置及びその方法並びにプログラム | |
KR101962250B1 (ko) | 재구성가능 아키텍처를 위한 스케줄러 및 스케줄링 방법 | |
US9152389B2 (en) | Trace generating unit, system, and program of the same | |
KR101738640B1 (ko) | 트레이스 데이터 압축 장치 및 방법 | |
US20100070958A1 (en) | Program parallelizing method and program parallelizing apparatus | |
US11966785B2 (en) | Hardware resource configuration for processing system | |
US8997071B2 (en) | Optimized division of work among processors in a heterogeneous processing system | |
US8869129B2 (en) | Apparatus and method for scheduling instruction | |
KR20140029480A (ko) | 이종 코어를 위한 자동 커널 마이그레이션 | |
GB2415812A (en) | Compiler for producing an optimised parallel program using execution cycles between fork source and destination points | |
KR102013582B1 (ko) | 혼합 모드 프로그램의 소스 코드 오류 위치 검출 장치 및 방법 | |
Tan et al. | Multithreaded pipeline synthesis for data-parallel kernels | |
JPWO2008120367A1 (ja) | 並列化プログラム生成方法、並列化プログラム生成装置、及び並列化プログラム生成プログラム | |
US9354850B2 (en) | Method and apparatus for instruction scheduling using software pipelining | |
US20120089813A1 (en) | Computing apparatus based on reconfigurable architecture and memory dependence correction method thereof | |
US11262989B2 (en) | Automatic generation of efficient vector code with low overhead in a time-efficient manner independent of vector width | |
US9141357B2 (en) | Computer-readable recording medium, compiling method, and information processing apparatus | |
US20020112148A1 (en) | System and method for executing predicated code out of order | |
KR20150040663A (ko) | 소프트웨어 파이프라이닝을 이용한 명령어 스케줄링 방법 및 장치 | |
US6637026B1 (en) | Instruction reducing predicate copy | |
KR101910934B1 (ko) | 루프의 프롤로그 또는 에필로그의 비유효 연산을 처리하는 장치 및 방법 | |
Liu et al. | Polyhedral-based pipelining of imperfectly-nested loop for CGRAs |
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 |