KR102149509B1 - 구성 데이터를 압축 및 복원하는 방법 - Google Patents

구성 데이터를 압축 및 복원하는 방법 Download PDF

Info

Publication number
KR102149509B1
KR102149509B1 KR1020140036251A KR20140036251A KR102149509B1 KR 102149509 B1 KR102149509 B1 KR 102149509B1 KR 1020140036251 A KR1020140036251 A KR 1020140036251A KR 20140036251 A KR20140036251 A KR 20140036251A KR 102149509 B1 KR102149509 B1 KR 102149509B1
Authority
KR
South Korea
Prior art keywords
configuration data
combined data
data
cycle
combined
Prior art date
Application number
KR1020140036251A
Other languages
English (en)
Other versions
KR20150112328A (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 KR1020140036251A priority Critical patent/KR102149509B1/ko
Priority to US14/671,377 priority patent/US9344115B2/en
Publication of KR20150112328A publication Critical patent/KR20150112328A/ko
Application granted granted Critical
Publication of KR102149509B1 publication Critical patent/KR102149509B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/60General implementation details not specific to a particular type of compression
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction

Abstract

재구성 가능 프로세서에서 사용되는 구성 데이터를 압축하는 방법에 있어서, 2개 이상의 사이클에서 사용되는 구성 데이터를 결합하여 하나의 결합 데이터를 생성하는 단계; 및 상기 결합 데이터에 포함된 연산들 중에서 상기 2개 이상의 사이클 각각에서 유효한 연산(operation)이 무엇인지를 나타내는 비트 테이블을 생성하는 단계를 포함하는 구성 데이터 압축 방법이 개시된다.

Description

구성 데이터를 압축 및 복원하는 방법{method for compressing and decompressing configuration data}
개시된 실시 예들은 구성 데이터를 압축 및 복원하는 방법에 관한 것이다.
재구성 가능 아키텍처(re-configurable architecture)는 특정한 태스크(specific task)를 수행하기 위하여, 컴퓨팅 디바이스의 하드웨어 구성을 특정한 태스크의 작업 상황에 최적화되도록 변경할 수 있는 아키텍처를 의미한다.
특정한 태스크를 컴퓨팅 디바이스의 고정된 하드웨어들로만 처리한다면, 특정한 태스크의 작업 내용들에 약간의 변경이 있는 경우, 고정된 하드웨어들의 고정된 기능들로 인하여 변경된 작업 내용들을 효율적으로 처리하기 어렵다. 한편, 특정한 태스크를 소프트웨어들로만 처리한다면, 특정한 태스크에서 변경된 작업 내용들에 맞도록 소프트웨어의 동작을 변경하여 처리할 수는 있으나, 하드웨어들을 이용하는 것에 비해 처리 속도가 늦을 수 있다.
재구성 가능 아키텍처는 하드웨어를 이용할 때의 유용성 및 소프트웨어를 이용할 때의 유용성을 모두 만족시킬 수 있도록 구현될 수 있다. 특히, 특정한 태스크가 반복적으로 수행되는 디지털 신호 처리(DSP) 분야 등에서는 이러한 재구성 가능 아키텍처가 많은 주목을 받고 있다.
재구성 가능 아키텍처의 종류로는 여러 가지를 예로 들 수 있는데, 그 중 코어스 그레인 어레이(Coarse-Grained Array, CGA)가 대표적이다. 한편, 최근에는 코어스 그레인 어레이의 일부를 VLIW(very long instruction word) 머신으로 활용할 수 있는 재구성 가능 아키텍처도 등장하게 되었다.
개시된 일 실시 예는 구성 데이터를 압축하고 복원하는 방법을 제공하는데 있다.
일 실시 예에 따른 구성 데이터를 압축하는 방법은 2개 이상의 사이클에서 사용되는 구성 데이터를 결합하여 하나의 결합 데이터를 생성하는 단계; 및 상기 결합 데이터에 포함된 연산들 중에서 상기 2개 이상의 사이클 각각에서 유효한 연산(operation)이 무엇인지를 나타내는 비트 테이블을 생성하는 단계를 포함한다.
일 실시 예에 따른 구성 데이터를 압축하는 장치는 2개 이상의 사이클에서 사용되는 구성 데이터를 결합하여 하나의 결합 데이터를 생성하는 결합 데이터 생성부; 및 상기 결합 데이터에 포함된 연산들 중에서 상기 2개 이상의 사이클 각각에서 유효한 연산이 무엇인지를 나타내는 비트 테이블을 생성하는 비트 테이블 생성부를 포함한다.
일 실시 예에 따른 구성 데이터를 복원하는 방법에 있어서, 2개 이상의 사이클에서 사용되는 구성 데이터를 결합하여 생성된 결합 데이터를 수신하는 단계; 각 사이클에서 유효한 연산을 나타내는 비트 테이블을 수신하고, 상기 비트 테이블에 기초하여 상기 결합 데이터에 포함된 연산들 중에서 각 사이클 마다 유효한 연산만을 포함하는 구성 데이터를 복원하는 단계를 포함한다.
일 실시 예에 따른 구성 데이터를 복원하는 장치는 2개 이상의 사이클에서 사용되는 구성 데이터를 결합하여 생성된 결합 데이터를 수신하는 수신부; 각 사이클에서 유효한 연산을 나타내는 비트 테이블을 수신하고, 상기 비트 테이블에 기초하여 상기 결합 데이터에 포함된 연산들 중에서 각 사이클 마다 유효한 연산만을 포함하는 구성 데이터를 복원하는 복원부를 포함한다.
개시된 일 실시 예에 따른 구성 데이터를 압축하는 방법은 서로 다른 사이클에 대한 구성 데이터들을 하나의 결합 데이터로 압축할 수 있다.
개시된 일 실시 예에 따른 구성 데이터를 압축하는 방법은 결합 데이터에 포함된 연산들 중에서 유효한 연산을 나타내는 비트 테이블을 생성할 수 있다.
개시된 일 실시 예에 따른 구성 데이터를 압축하는 방법은 복수의 결합 데이터들 중에서 각 사이클에 적용되는 결합 데이터가 무엇인지를 나타내는 인덱스를 생성할 수 있다.
개시된 일 실시 예에 따른 구성 데이터를 복원하는 방법은 비트 테이블을 이용하여 결합 데이터로부터 각 사이클에서 유효한 연산만을 포함하는 구성 데이터를 복원할 수 있다.
개시된 일 실시 예에 따른 구성 데이터를 복원하는 방법은 인덱스를 이용하여 복수의 결합데이터들 중에서 각 사이클에 적용되는 결합 데이터를 결정할 수 있다.
도 1은 일 실시 예에 따른 컴파일러 및 재구성 가능 프로세서의 구성도이다.
도 2는 일 실시 예에 따른 구성 데이터 압축 장치를 설명하기 위한 도면이다.
도 3은 또 다른 실시 예에 따른 구성 데이터 압축 장치를 설명하기 위한 도면이다.
도 4는 구성 데이터 복원 장치를 설명하기 위한 구성도이다.
도 5는 결합 데이터 및 비트 테이블을 생성 및 복원하는 것을 설명하기 위한 도면이다.
도 6은 결합 데이터, 비트 테이블 및 인덱스를 생성 및 복원하는 것을 설명하기 위한 도면이다.
도 7은 일 실시 예에 따른 컴파일러의 구성도이다.
도 8은 일 실시 예에 따른 재구성 가능 프로세서의 구성도이다.
도 9는 일 실시 예에 따른 구성 데이터를 압축하는 방법을 나타내는 순서도이다.
도 10은 일 실시 예에 따른 구성 데이터를 복원하는 방법을 나타내는 순서도이다.
본 실시 예들은 다양한 변환을 가할 수 있고 여러 가지 실시 예를 가질 수 있는바, 특정 실시 예들을 도면에 예시하고 상세한 설명에 상세하게 설명하고자 한다. 그러나 이는 특정한 실시 형태에 대해 범위를 한정하려는 것이 아니며, 개시된 사상 및 기술 범위에 포함되는 모든 변환, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 실시 예들을 설명함에 있어서 관련된 공지 기술에 대한 구체적인 설명이 요지를 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다.
제1, 제2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 구성요소들은 용어들에 의해 한정되어서는 안 된다. 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다.
본 출원에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로, 권리범위를 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
이하, 실시 예를 첨부도면을 참조하여 상세히 설명하기로 하며, 첨부 도면을 참조하여 설명함에 있어, 동일하거나 대응하는 구성 요소는 동일한 도면번호를 부여하고 이에 대한 중복되는 설명은 생략하기로 한다.
도 1은 일 실시 예에 따른 컴파일러(20) 및 재구성 가능 프로세서(10)의 구성도이다. 도 1을 참고하면, 재구성 가능 프로세서(10)는 구성 데이터 복원 장치(200) 및 다수의 기능 유닛들(function units, FUs)과 레지스터 파일들을 갖는 프로세서 코어(12)를 포함한다.
컴파일러(20)는 구성 데이터를 압축하여 재구성 가능 프로세서(10)에 전송한다. 컴파일러(20)는 구성 데이터의 용량을 줄이기 위해 복수의 구성 데이터들을 하나의 결합 데이터로 압축한다. 컴파일러(20)가 구성 데이터를 압축하는 방법은 이하 도면에서 상세히 설명한다.
구성 데이터 복원 장치(200)는 압축된 구성 데이터를 복원하여 프로세서 코어(12)로 복원된 구성 데이터를 출력한다. 프로세서 코어(12)는 구성 데이터에 포함된 정보에 기초하여 기능 유닛들에 연산을 할당하고, 기능 유닛들은 각 사이클마다 할당된 연산을 수행한다.
도 1에 도시된 재구성 가능 프로세서(10)에 대해서는 본 실시예의 특징이 흐려지는 것을 방지하기 위하여 본 실시 예와 관련된 구성요소들만이 도시되어 있다. 따라서, 도 1에 도시된 구성요소들 외에 다른 범용적인 구성요소들이 더 포함될 수 있음을 본 실시 예와 관련된 기술분야에서 통상의 기술자라면 이해할 수 있다.
도 2는 일 실시 예에 따른 구성 데이터 압축 장치(100)를 설명하기 위한 도면이다. 도 2를 참조하면, 구성 데이터 압축 장치(100)는 복수의 구성 데이터들을 압축하여 결합 데이터를 생성하고, 구성 데이터의 복원을 위한 비트 테이블을 생성한다.
구성 데이터는 컴파일러(20)에 의해 스케줄링(or 컴파일링)된, 기능 유닛들의 동작 코드(OP code) 또는 기능 유닛들 간의 연결 정보를 포함하는 데이터이며, 재구성 가능 프로세서(10)에서 수행되는 동작들의 처리 스케줄에 관한 정보를 포함한다.
구성 데이터 압축 장치(100)는 결합 데이터 생성부(110) 및 비트 테이블 생성부(120)를 포함한다.
결합 데이터 생성부(110)는 복수의 구성 데이터들을 수신하고, 복수의 구성 데이터들을 결합하여 결합 데이터를 생성한다. 구성 데이터는 특정 기능 유닛에 대하여 NOP(No Operation)을 포함할 수 있다. NOP는 기능 유닛이 아무런 연산을 수행하지 않는 것을 나타낸다.
결합 데이터 생성부(110)는 2개 이상의 사이클에서 스케줄링 된 구성 데이터를 결합하여 하나의 결합 데이터를 생성한다. 사이클은 구성 데이터의 처리 순서 또는 구성 데이터의 처리 시간을 나타낸다.
결합 데이터 생성부(110)는 정해진 규칙에 따라 복수의 구성 데이터들을 결합한다. 예를 들어, 결합 데이터 생성부(110)는 유효한 연산이 동일한 기능 유닛에 배정되지 않은 2개 이상의 구성 데이터들을 결합하여 결합 데이터를 생성한다.
비트 테이블 생성부(120)는 결합 데이터에 포함된 연산들 중에서 각각의 사이클에서 유효한 연산이 무엇인지를 나타내는 비트 테이블을 생성한다. 2개 이상의 구성 데이터들이 결합되어 하나의 결합 데이터가 생성되었으므로, 특정 사이클에서는 결합 데이터에 포함된 연산들 중에 일부 연산만이 유효하다. 따라서, 비트 테이블 생성부(120)는 비트 테이블을 생성하여 각 사이클마다 유효한 연산을 표시한다. 비트 테이블의 실시 예는 도 5 및 6을 통해 상세히 설명한다.
구성 데이터 압축 장치(100)는 결합 데이터 및 비트 테이블을 재구성 가능 프로세서(10)로 출력한다.
도 3은 또 다른 실시 예에 따른 구성 데이터 압축 장치(100)를 설명하기 위한 도면이다. 도 3를 참조하면, 구성 데이터 압축 장치(100)는 인덱스 생성부(130)를 더 포함한다.
인덱스 생성부(130)는 결합 데이터 생성부(110)에 의해 생성된 결합 데이터가 2개 이상인 경우, 각 사이클에서 사용되는 결합 데이터를 식별하기 위한 인덱스를 생성한다.
구성 데이터 압축 장치(100)는 결합 데이터, 비트 테이블 및 인덱스를 재구성 가능 프로세서(10)로 출력한다. 인덱스에 관하여는 도 6을 통하여 상세히 설명한다.
도 4는 구성 데이터 복원 장치(200)를 설명하기 위한 구성도이다. 도 4를 참조하면, 구성 데이터 복원 장치(200)는 수신부(210) 및 복원부(220)를 포함한다.
수신부(210)는 2개 이상의 사이클에서 사용되는 구성 데이터를 결합하여 생성된 결합 데이터를 컴파일러(20)로부터 수신한다. 수신부(210)는 결합 데이터를 복원부(220)로 출력한다. 결합 데이터가 복수인 경우, 수신부(210)는 복원부(220)에서 요청하는 결합 데이터를 출력할 수 있다.
복원부(220)는 각 사이클에서 유효한 연산을 나타내는 비트 테이블을 컴파일러(20)로부터 수신하고, 비트 테이블에 기초하여 결합 데이터에 포함된 연산들 중에서 각 사이클 마다 유효한 연산만을 포함하는 구성 데이터를 복원한다. 복원부(220)는 비트 테이블에 포함된 정보에 기초하여 결합 데이터에 포함된 연산들 중에서 어느 기능 유닛에 배정된 연산이 유효한지를 결정한다. 복원부(220)는 결정에 기초하여 유효한 연산만을 포함하는 구성 데이터를 생성한다.
복원부(220)는 인덱스에 기초하여 결합 데이터를 결정하고, 결정된 결합 데이터를 이용하여 구성 데이터를 복원한다. 복원부(220)는 수신부(210)로부터 수신된 결합 데이터가 2개 이상인 경우, 2개 이상의 결합 데이터 중에서 각 사이클에서 사용되는 결합 데이터를 구분하는 인덱스를 컴파일러(20)로부터 수신한다. 복원부(220)는 인덱스가 나타내는 식별 번호에 따라 2개 이상의 결합 데이터들 중에서 각 사이클에 적용되는 결합 데이터를 결정한다. 복원부(220)는 결정된 결합 데이터에 포함된 연산들 중에서 각 사이클 마다 유효한 연산만을 포함하는 구성 데이터를 복원한다.
복원부(220)는 각 사이클마다 복원된 구성 데이터를 프로세서 코어(12)로 출력한다.
도 5는 결합 데이터 및 비트 테이블을 생성 및 복원하는 것을 설명하기 위한 도면이다. 도 5를 참조하면, 구성 데이터 압축 장치(100)는 3개의 구성 데이터들(제0 내지 제2 구성 데이터들)을 하나의 제0 결합 데이터로 압축한다. 구성 데이터 복원 장치(200)는 하나의 제0 결합 데이터 및 비트 테이블을 이용하여 3개의 구성 데이터들(제0 내지 제2 구성 데이터들)을 복원한다.
컴파일러(20)는 사이클0 내지 사이클2에 제0 내지 제2 구성 데이터들을 스케줄링 한다. 스케줄링 결과, 제0 구성 데이터는 FU0에 대한 유효한 연산 OP1을 포함한다. 제1 구성 데이터는 FU1에 대한 유효한 연산 OP2를 포함한다. 제2 구성 데이터는 FU2에 대한 유효한 연산 OP3을 포함한다.
사이클0에서는 제0 구성 데이터가 프로세서 코어(12)에 적용되고, 사이클1에서는 제1 구성 데이터가 프로세서 코어(12)에 적용되고, 사이클2에서는 제2 구성 데이터가 프로세서 코어(12)에 적용된다.
구성 데이터 압축 장치(100)는 제0 결합 데이터 및 비트 테이블을 생성한다. 제0 결합 데이터는 제0 내지 제2 구성 데이터들이 결합된 데이터이다. 제0 결합 데이터는 FU0에 대한 OP1, FU1에 대한 OP2, FU2에 대한 OP3 및 FU4에 대한 OP4를 포함한다. 제0 내지 제2 구성 데이터들은 동일한 FU에 할당된 연산이 없으므로 하나로 결합될 수 있다.
구성 데이터 압축 장치(100)는 각 사이클마다 결합 데이터에 포함된 연산들 중에서 유효한 연산을 나타내는 비트 테이블을 생성한다.
사이클0의 경우, 비트 테이블에 저장된 데이터가 '100000'이므로, 제0 결합 데이터에서 FU0에 대한 연산만이 유효하다. 사이클1의 경우, 비트 테이블에 저장된 데이터가 '010000'이므로, 제0 결합 데이터에서 FU1에 대한 연산만이 유효하다. 사이클2의 경우, 비트 테이블에 저장된 데이터가 '001010'이므로, 제0 결합 데이터에서 FU2 및 FU4에 대한 연산만이 유효하다.
구성 데이터 압축 장치(100)는 제0 결합 데이터 및 비트 테이블을 구성 데이터 복원 장치(200)로 출력한다. 따라서, 구성 데이터 압축 장치(100)는 제0 내지 제2 구성 데이터들을 모두 구성 데이터 복원 장치(200)로 출력하지 않고, 제0 결합 데이터 및 비트 테이블만을 구성 데이터 복원 장치(200)로 출력할 수 있다.
구성 데이터 복원 장치(200)는 제0 결합 데이터 및 비트 테이블을 이용하여 사이클0 내지 사이클2에 대한 구성 데이터들을 복원한다. 구성 데이터 복원 장치(200)는 비트 테이블에 포함된 데이터를 참조하여 제0 결합 데이터에 포함된 연산 들 중 유효한 연산을 결정한다.
예를 들어, 사이클 2의 경우, 비트 테이블에 저장된 데이터가 '001010'이므로 구성 데이터 복원 장치(200)는 FU2 및 FU4에 대한 연산만을 유효한 연산으로 결정하고, 다른 FU들에 대해서는 NOP를 할당한다. 따라서, 구성 데이터 복원 장치(200)는 FU2에 OP3, FU4에 OP4 및 다른 FU들에는 NOP가 할당된 구성 데이터를 복원할 수 있다.
도 6은 결합 데이터, 비트 테이블 및 인덱스를 생성 및 복원하는 것을 설명하기 위한 도면이다. 도 6을 참조하면, 구성 데이터 압축 장치(100)는 4개의 구성 데이터들(제0 내지 제3 구성 데이터들)을 2개의 결합 데이터들(제0 및 제1 결합 데이터들)로 압축한다. 구성 데이터 복원 장치(200)는 2개의 제0 결합 데이터, 비트 테이블 및 인덱스를 이용하여 4개의 구성 데이터들(제0 내지 제2 구성 데이터들)을 복원한다.
컴파일러(20)는 사이클0 내지 사이클3에 제0 내지 제3 구성 데이터들을 스케줄링 한다. 스케줄링 결과, 제0 구성 데이터는 FU0에 대한 유효한 연산 OP1을 포함한다. 제1 구성 데이터는 FU1에 대한 유효한 연산 OP2를 포함한다. 제2 구성 데이터는 FU0에 대한 유효한 연산 OP3, FU2에 대한 유효한 연산 OP4 및 FU4에 대한 유효한 연산 OP5를 포함한다. 제3 구성 데이터는 FU4에 대한 유효한 연산 OP5를 포함한다.
구성 데이터 압축 장치(100)는 제0 및 제1 결합 데이터들, 비트 테이블 및 인덱스를 생성한다. 제0 결합 데이터는 제0 내지 제1 구성 데이터들이 결합된 데이터이다. 제0 결합 데이터는 FU0에 대한 OP1 및 FU1에 대한 OP2를 포함한다.
제1 결합 데이터는 제2 내지 제3 구성 데이터들이 결합된 데이터이다. 제1 결합 데이터는 FU0에 대한 OP3, FU1에 대한 OP4 및 FU4에 대한 OP5를 포함한다. 제2 구성 데이터와 제0 구성 데이터는 FU0에 대한 연산이 서로 다르므로 결합될 수 없다. 또한, 제2 구성 데이터와 제1 구성 데이터는 FU1에 대한 연산이 서로 다르므로 결합될 수 없다. 따라서, 구성 데이터 압축 장치(100)는 제0 구성 데이터와 제1 구성 데이터를 결합하고, 제2 구성 데이터와 제3 구성 데이터를 결합한다.
구성 데이터 압축 장치(100)는 각 사이클마다 적용되는 결합 데이터를 나타내는 인덱스 및 적용되는 결합 데이터에 포함된 연산들 중에서 유효한 연산을 나타내는 비트 테이블을 생성한다.
사이클0의 경우 제0 결합 데이터에서 FU0에 대한 연산만이 유효하므로, 구성 데이터 압축 장치(100)는 사이클0에 대한 인덱스를 0으로 설정하고 사이클0에 대한 비트 테이블을 '100000'으로 설정한다.
사이클1의 경우 제0 결합 데이터에서 FU1에 대한 연산만이 유효하므로, 구성 데이터 압축 장치(100)는 사이클1에 대한 인덱스를 0으로 설정하고 사이클1에 대한 비트 테이블을 '010000'으로 설정한다.
사이클2의 경우 제1 결합 데이터에서 FU0, FU1 및 FU4에 대한 연산만이 유효하므로, 구성 데이터 압축 장치(100)는 사이클2에 대한 인덱스를 1로 설정하고 사이클2에 대한 비트 테이블을 '110010'으로 설정한다.
사이클3의 경우 제1 결합 데이터에서 FU4에 대한 연산만이 유효하므로, 구성 데이터 압축 장치(100)는 사이클3에 대한 인덱스를 1로 설정하고 사이클3에 대한 비트 테이블을 '000010'으로 설정한다.
따라서, 구성 데이터 압축 장치(100)는 제0 내지 제3 구성 데이터들을 모두 구성 데이터 복원 장치(200)로 출력하지 않고, 제0 내지 제1 결합 데이터들, 비트 테이블 및 인덱스만을 구성 데이터 복원 장치(200)로 출력할 수 있다.
구성 데이터 복원 장치(200)는 제0 내지 제1 결합 데이터들, 비트 테이블 및 인덱스를 이용하여 사이클0 내지 사이클3에 대한 구성 데이터들을 복원한다. 구성 데이터 복원 장치(200)는 인덱스에 따라 각 사이클에 적용되는 결합 데이터를 결정한다. 구성 데이터 복원 장치(200)는 비트 테이블에 포함된 데이터를 참조하여 결정된 결합 데이터에 포함된 연산들 중에서 유효한 연산을 결정하여 구성 데이터를 복원한다.
예를 들어, 사이클 3의 경우 인덱스가 1이고, 비트 테이블에 저장된 데이터가'000010'이므로, 구성 데이터 복원 장치(200)는 제1 결합 데이터를 선택하고, 제1 결합 데이터 중에서 FU4에 대한 연산 OP5만을 유효한 연산으로 결정한다. 구성 데이터 복원 장치(200)는 FU4를 제외한 다른 FU들에 대해서는 NOP를 할당한다. 따라서, 구성 데이터 복원 장치(200)는 사이클3에서 FU4에 OP5연산을 할당하고 다른 FU들에는 NOP가 할당된 구성 데이터를 복원할 수 있다.
도 7은 일 실시 예에 따른 컴파일러(20)의 구성도이다. 도 7을 참고하면, 컴파일러(20)는 스케줄러(22) 및 구성 데이터 압축 장치(100)를 포함한다. 다만, 도 7에 도시된 컴파일러(20)에 대해서는 본 실시예의 특징이 흐려지는 것을 방지하기 위하여 본 실시 예와 관련된 구성요소들만이 도시되어 있다. 따라서, 도 7에 도시된 구성요소들 외에 다른 범용적인 구성요소들이 더 포함될 수 있음을 본 실시 예와 관련된 기술분야에서 통상의 기술자라면 이해할 수 있다.
컴파일러(20)는 주어진 프로그램 코드를 하위레벨 언어로 변환한다. 예를 들면, 컴파일러(20)는 고급언어로 작성된 프로그램 코드를 어셈블리 언어나 기계어로 변환한다. 컴파일러(20)는 변환된 어셈블리 언어나 기계어 언어의 명령어들을 이용하여 기능 유닛들의 동작을 스케줄링 한다. 컴파일러(20)는 작성된 프로그램 코드를 컴파일링하기 위하여, 메모리(미도시)에 저장된 정보를 이용할 수 있다.
컴파일러(20)는 프로그램 코드, 재구성 가능 프로세서의 아키텍처에 관한 정보 및 메모리 사양에 관한 정보 등을 수신한다. 컴파일러(20)는 수신된 정보에 기초하여 구성 데이터를 생성하고, 생성된 구성 데이터를 압축하여 결합 데이터, 비트 테이블 및 인덱스를 재구성 가능 프로세서(10) 또는 구성 데이터 복원 장치(200)로 출력한다.
스케줄러(22)는 기능 유닛의 스케줄을 결정한다. 구체적으로, 스케줄러(22)는 사이클마다 각 기능 유닛에 할당되는 연산을 결정한다. 스케줄러(22)는 결정된 스케줄에 기초하여 각 사이클마다 구성 데이터를 생성한다.
구성 데이터 압축 장치(100)는 복수의 구성 데이터들을 하나의 결합 데이터로 압축한다. 다시 말해서, 구성 데이터 압축 장치(100)는 생성된 구성 데이터들의 수보다 적은 수의 결합 데이터들을 생성한다.
구성 데이터 압축 장치(100)는 결합 데이터에 대한 정보를 나타내는 인덱스 및 비트 테이블을 추가로 생성한다.
도 8은 일 실시 예에 따른 재구성 가능 프로세서(300)의 구성도이다. 도 8을 참고하면, 재구성 가능 프로세서(300)는 결합 데이터 저장부(310), 비트 테이블 저장부(320), 인덱스 저장부(330), 버퍼(340), 디코더(350) 및 재구성 가능 어레이(360)를 포함한다. 포함한다.
재구성 가능 프로세서(300)는 특정한 태스크(task), 인스트럭션(instruction) 또는 오퍼레이션(operation) 등을 수행하기 재구성 가능 어레이(360)의 기능 유닛(361)들의 동작을 재구성할 수 있는 하드웨어를 의미한다. 여기서, 재구성 가능 프로세서(300)에서 처리를 수행하는 기능 유닛(361)들의 구성(configuration)은 컴파일러(20)에 의한 컴필레이션(compilation)에 의해 결정될 수 있다.
재구성 가능 어레이(360)는 복수의 기능 유닛(361)들의 어레이를 포함한다. 재구성 가능 어레이(360)의 기능 유닛(361)은 산술논리연산유닛(arithmetic logic unit, ALU), 곱셈기(multiplier) 또는 로드/스토어 유닛(Load/Store unit) 등을 포함할 수 있으며, 기능 유닛(361)들 간에는 다수의 입출력 경로들이 구비될 수 있다. 또한, 재구성 가능 어레이(360)는 로컬 레지스터 파일(local register file) 등의 다양한 종류의 레지스터 파일들도 포함할 수 있다.
재구성 가능 프로세서(300)는 CGA(coarse grained array) 기반의 프로세서일 수 있다. 구체적으로, 재구성 가능 어레이(360)는 CGRA(coarse grained re-configurable array) 모드를 지원할 수 있다. 재구성 가능 어레이(360)는 CGRA 모드에 따라, 재구성 가능 어레이(360)에 포함된 여러 기능 유닛(361)들을 이용하여 병렬적으로 루프(loop) 연산을 처리할 수 있다.
저장부들(310 내지 330)은 컴파일러(20)로부터 전송된 구성 데이터, 비트 테이블, 인덱스 및 다른 기타의 데이터들을 저장하는 메모리이다. 결합 데이터 저장부(310)는 컴파일러(20) 또는 구성 데이터 압축 장치(100)에 의해 생성된 결합 데이터를 저장한다. 비트 테이블 저장부(320)는 컴파일러(20) 또는 구성 데이터 압축 장치(100)에 의해 생성된 비트 테이블을 저장한다. 인덱스 저장부(330)는 컴파일러(20) 또는 구성 데이터 압축 장치(100)에 의해 생성된 인덱스를 저장한다.
버퍼(340)는 결합 데이터 저장부(310)에 저장된 결합 데이터들 중 일부 또는 전부를 일시적으로 저장할 수 있다. 또한, 버퍼(340)는 디코더(350)의 지시에 따라 결합 데이터에 포함된 연산들 중에서 일부 연산만을 포함하는 구성 데이터를 재구성 가능 어레이(360)로 출력할 수 있다.
디코더(350)는 비트 테이블 저장부(320) 및 인덱스 저장부(330)로부터 수신된 정보를 이용하여 구성 데이터를 복원한다. 디코더(350)는 인덱스 저장부(330)로부터 인덱스를 수신하여, 수신된 인덱스에 해당하는 결합 데이터를 결정한다. 디코더(350)는 비트 테이블 저장부(320)로부터 수신한 비트 테이블에 기초하여 결정된 결합 데이터에 포함된 연산들 중에서 유효한 연산을 결정한다. 디코더(350)는 결정된 결합 데이터 및 결정된 유효한 연산이 재구성 가능 어레이(360)로 출력되도록 버퍼(340)를 제어할 수 있다.
따라서, 재구성 가능 프로세서(300)는 사이클의 수보다 적은 수의 결합 데이터를 이용하여 사이클의 수에 해당하는 구성 데이터를 복원할 수 있다.
도 9는 일 실시 예에 따른 구성 데이터를 압축하는 방법을 나타내는 순서도이다. 도 9를 참조하면, 단계 910에서, 2개 이상의 사이클에서 사용되는 구성 데이터를 결합하여 하나의 결합 데이터를 생성한다.
단계 920에서, 결합 데이터에 포함된 연산들 중에서 2개 이상의 사이클 각각에서 유효한 연산이 무엇인지를 나타내는 비트 테이블을 생성한다.
도 10은 일 실시 예에 따른 구성 데이터를 복원하는 방법을 나타내는 순서도이다. 도 10을 참조하면, 단계 1010에서, 2개 이상의 사이클에서 사용되는 구성 데이터를 결합하여 생성된 결합 데이터를 수신한다.
단계 1020에서, 각 사이클에서 유효한 연산을 나타내는 비트 테이블을 수신하고, 비트 테이블에 기초하여 결합 데이터에 포함된 연산들 중에서 각 사이클 마다 유효한 연산만을 포함하는 구성 데이터를 복원한다.
본 실시 예들에 따른 장치는 프로세서, 프로그램 데이터를 저장하고 실행하는 메모리, 디스크 드라이브와 같은 영구 저장부(permanent storage), 외부 장치와 통신하는 통신 포트, 터치 패널, 키(key), 버튼 등과 같은 사용자 인터페이스 장치 등을 포함할 수 있다. 소프트웨어 모듈 또는 알고리즘으로 구현되는 방법들은 상기 프로세서상에서 실행 가능한 컴퓨터가 읽을 수 있는 코드들 또는 프로그램 명령들로서 컴퓨터가 읽을 수 있는 기록 매체 상에 저장될 수 있다. 여기서 컴퓨터가 읽을 수 있는 기록 매체로 마그네틱 저장 매체(예컨대, ROM(read-only memory), RAM(random-access memory), 플로피 디스크, 하드 디스크 등) 및 광학적 판독 매체(예컨대, 시디롬(CD-ROM), 디브이디(DVD: Digital Versatile Disc)) 등이 있다. 컴퓨터가 읽을 수 있는 기록 매체는 네트워크로 연결된 컴퓨터 시스템들에 분산되어, 분산 방식으로 컴퓨터가 판독 가능한 코드가 저장되고 실행될 수 있다. 매체는 컴퓨터에 의해 판독가능하며, 메모리에 저장되고, 프로세서에서 실행될 수 있다.
본 실시 예는 기능적인 블록 구성들 및 다양한 처리 단계들로 나타내어질 수 있다. 이러한 기능 블록들은 특정 기능들을 실행하는 다양한 개수의 하드웨어 또는/및 소프트웨어 구성들로 구현될 수 있다. 예를 들어, 실시 예는 하나 이상의 마이크로프로세서들의 제어 또는 다른 제어 장치들에 의해서 다양한 기능들을 실행할 수 있는, 메모리, 프로세싱, 로직(logic), 룩 업 테이블(look-up table) 등과 같은 직접 회로 구성들을 채용할 수 있다. 구성 요소들이 소프트웨어 프로그래밍 또는 소프트웨어 요소들로 실행될 수 있는 것과 유사하게, 본 실시 예는 데이터 구조, 프로세스들, 루틴들 또는 다른 프로그래밍 구성들의 조합으로 구현되는 다양한 알고리즘을 포함하여, C, C++, 자바(Java), 어셈블러(assembler) 등과 같은 프로그래밍 또는 스크립팅 언어로 구현될 수 있다. 기능적인 측면들은 하나 이상의 프로세서들에서 실행되는 알고리즘으로 구현될 수 있다. 또한, 본 실시 예는 전자적인 환경 설정, 신호 처리, 및/또는 데이터 처리 등을 위하여 종래 기술을 채용할 수 있다. “매커니즘”, “요소”, “수단”, “구성”과 같은 용어는 넓게 사용될 수 있으며, 기계적이고 물리적인 구성들로서 한정되는 것은 아니다. 상기 용어는 프로세서 등과 연계하여 소프트웨어의 일련의 처리들(routines)의 의미를 포함할 수 있다.
100: 구성 데이터 압축 장치
110: 결합 데이터 생성부
120: 비트 테이블 생성부
200: 구성 데이터 복원 장치
210: 수신부
220: 복원부

Claims (18)

  1. 재구성 가능 프로세서(reconfigurable processor)에서 사용되는 구성 데이터(configuration data)를 압축하는 방법에 있어서,
    유효한 연산이 동일한 기능 유닛에 배정되지 않은 2개 이상의 구성 데이터를 결합하여 2개 이상의 사이클에서 사용되는 하나의 결합 데이터를 생성하는 단계; 및
    상기 결합 데이터에 포함된 연산들 중에서 상기 2개 이상의 사이클 각각에서 유효한 연산(operation)이 무엇인지를 나타내는 비트 테이블을 생성하는 단계를 포함하는 구성 데이터 압축 방법.
  2. 제 1 항에 있어서,
    상기 결합 데이터가 2개 이상인 경우, 각 사이클에서 사용되는 결합 데이터를 식별하기 위한 인덱스를 생성하는 단계를 더 포함하는 구성 데이터 압축 방법.
  3. 삭제
  4. 제 1 항에 있어서,
    상기 재구성 가능 프로세서는 CGA(coarse grained array) 기반의 프로세서인 것을 특징으로 하는 구성 데이터 압축 방법.
  5. 제 1 항에 있어서,
    상기 재구성 가능 프로세서는 복수의 기능 유닛(function unit)들을 포함하며,
    상기 구성 데이터는 각 사이클마다 상기 기능 유닛들에서 수행되는 연산을 포함하는 것을 특징으로 하는 구성 데이터 압축 방법.
  6. 재구성 가능 프로세서에서 사용되는 구성 데이터를 압축하는 장치에 있어서,
    유효한 연산이 동일한 기능 유닛에 배정되지 않은 2개 이상의 구성 데이터를 결합하여 2개 이상의 사이클에서 사용되는 하나의 결합 데이터를 생성하는 결합 데이터 생성부; 및
    상기 결합 데이터에 포함된 연산들 중에서 상기 2개 이상의 사이클 각각에서 유효한 연산이 무엇인지를 나타내는 비트 테이블을 생성하는 비트 테이블 생성부를 포함하는 구성 데이터 압축 장치.
  7. 제 6 항에 있어서,
    상기 결합 데이터가 2개 이상인 경우, 각 사이클에서 사용되는 결합 데이터를 식별하기 위한 인덱스를 생성하는 인덱스 생성부를 더 포함하는 구성 데이터 압축 장치.
  8. 삭제
  9. 제 6 항에 있어서,
    상기 재구성 가능 프로세서는 CGA 기반의 프로세서인 것을 특징으로 하는 구성 데이터 압축 장치.
  10. 제 6 항에 있어서,
    상기 재구성 가능 프로세서는 복수의 기능 유닛(function unit)들을 포함하며,
    상기 구성 데이터는 각 사이클마다 상기 기능 유닛들에서 수행되는 연산을 포함하는 것을 특징으로 하는 구성 데이터 압축 장치.
  11. 재구성 가능 프로세서에서 사용되는 구성 데이터를 복원하는 방법에 있어서,
    유효한 연산이 동일한 기능 유닛에 배정되지 않은 2개 이상의 구성 데이터를 결합하여 생성된 2개 이상의 사이클에서 사용되는 결합 데이터를 수신하는 단계;
    각 사이클에서 유효한 연산을 나타내는 비트 테이블을 수신하고, 상기 비트 테이블에 기초하여 상기 결합 데이터에 포함된 연산들 중에서 각 사이클 마다 유효한 연산만을 포함하는 구성 데이터를 복원하는 단계를 포함하는 구성 데이터 복원 방법.
  12. 제 11 항에 있어서,
    상기 결합 데이터가 2개 이상인 경우, 2개 이상의 결합 데이터 중에서 각 사이클에서 사용되는 결합 데이터를 구분하는 인덱스를 수신하는 단계를 더 포함하는 구성 데이터 복원 방법.
  13. 제 12 항에 있어서, 상기 구성 데이터를 복원하는 단계는,
    상기 2개 이상의 결합 데이터 중에서 각 사이클마다 상기 인덱스에 해당하는 결합 데이터를 결정하고,
    상기 결정된 결합 데이터에 포함된 연산들 중에서 각 사이클 마다 유효한 연산만을 포함하는 구성 데이터를 복원하는 것을 특징으로 하는 구성 데이터 복원 방법.
  14. 제 11 항에 있어서,
    상기 재구성 가능 프로세서는 CGA(coarse grained array) 기반의 프로세서인 것을 특징으로 하는 구성 데이터 복원 방법.
  15. 재구성 가능 프로세서에서 사용되는 구성 데이터를 복원하는 장치에 있어서,
    유효한 연산이 동일한 기능 유닛에 배정되지 않은 2개 이상의 구성 데이터를 결합하여 생성된 2개 이상의 사이클에서 사용되는 결합 데이터를 수신하는 수신부;
    각 사이클에서 유효한 연산을 나타내는 비트 테이블을 수신하고, 상기 비트 테이블에 기초하여 상기 결합 데이터에 포함된 연산들 중에서 각 사이클 마다 유효한 연산만을 포함하는 구성 데이터를 복원하는 복원부를 포함하는 구성 데이터 복원 장치.
  16. 제 15 항에 있어서,
    상기 복원부는 상기 결합 데이터가 2개 이상인 경우, 2개 이상의 결합 데이터 중에서 각 사이클에서 사용되는 결합 데이터를 구분하는 인덱스를 수신하는 것을 특징으로 하는 구성 데이터 복원 장치.
  17. 제 16 항에 있어서,
    상기 복원부는 상기 2개 이상의 결합 데이터 중에서 각 사이클마다 상기 인덱스에 해당하는 결합 데이터를 결정하고,
    상기 결정된 결합 데이터에 포함된 연산들 중에서 각 사이클 마다 유효한 연산만을 포함하는 구성 데이터를 복원하는 것을 특징으로 하는 구성 데이터 복원 장치.
  18. 제 15 항에 있어서,
    상기 재구성 가능 프로세서는 CGA(coarse grained array) 기반의 프로세서인 것을 특징으로 하는 구성 데이터 복원 장치.
KR1020140036251A 2014-03-27 2014-03-27 구성 데이터를 압축 및 복원하는 방법 KR102149509B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020140036251A KR102149509B1 (ko) 2014-03-27 2014-03-27 구성 데이터를 압축 및 복원하는 방법
US14/671,377 US9344115B2 (en) 2014-03-27 2015-03-27 Method of compressing and restoring configuration data

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140036251A KR102149509B1 (ko) 2014-03-27 2014-03-27 구성 데이터를 압축 및 복원하는 방법

Publications (2)

Publication Number Publication Date
KR20150112328A KR20150112328A (ko) 2015-10-07
KR102149509B1 true KR102149509B1 (ko) 2020-08-28

Family

ID=54191787

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140036251A KR102149509B1 (ko) 2014-03-27 2014-03-27 구성 데이터를 압축 및 복원하는 방법

Country Status (2)

Country Link
US (1) US9344115B2 (ko)
KR (1) KR102149509B1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9654107B2 (en) * 2012-04-27 2017-05-16 Semiconductor Energy Laboratory Co., Ltd. Programmable LSI
US9419716B2 (en) * 2013-11-14 2016-08-16 Nicolas Thomas Mathieu Dupont Variable color data transmission
US10028277B2 (en) 2013-11-20 2018-07-17 Cyborg Inc. Variable frequency data transmission
KR102247529B1 (ko) 2016-09-06 2021-05-03 삼성전자주식회사 전자 장치, 재구성 가능 프로세서 및 그 제어 방법들

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1996029646A1 (fr) * 1995-03-17 1996-09-26 Hitachi, Ltd. Processeur
GB2362733B (en) * 2000-05-25 2002-02-27 Siroyan Ltd Processors having compressed instructions.
US7290122B2 (en) * 2003-08-29 2007-10-30 Motorola, Inc. Dataflow graph compression for power reduction in a vector processor
KR100875836B1 (ko) * 2007-03-23 2008-12-24 삼성전자주식회사 병렬 처리 vliw 컴퓨터를 위한 인스트럭션 명령어 압축장치 및 그 방법
KR101738938B1 (ko) 2011-09-08 2017-05-23 삼성전자주식회사 명령어 압축 장치, 명령어 압축 방법 및 컴퓨터로 읽을 수 있는 저장 매체
KR20140005526A (ko) * 2012-07-04 2014-01-15 삼성전자주식회사 재구성 가능 프로세서의 소스 레벨 디버깅 장치 및 방법

Also Published As

Publication number Publication date
US9344115B2 (en) 2016-05-17
US20150280740A1 (en) 2015-10-01
KR20150112328A (ko) 2015-10-07

Similar Documents

Publication Publication Date Title
JP5647859B2 (ja) 乗累算演算を実行するための装置および方法
RU2656730C2 (ru) Процессоры, способы, системы и команды для сложения трех операндов-источников с плавающей запятой
KR101642556B1 (ko) 이진 번역을 수행하기 위한 방법 및 시스템
KR101738640B1 (ko) 트레이스 데이터 압축 장치 및 방법
US10678540B2 (en) Arithmetic operation with shift
KR20170097018A (ko) 벡터 브로드캐스트 및 xorand 로직 명령어를 위한 장치 및 방법
GB2480285A (en) Conditional compare instruction which sets a condition code when it is not executed
KR102149509B1 (ko) 구성 데이터를 압축 및 복원하는 방법
JP6604689B2 (ja) ディペンデンシーを整理し、リビルディングするシステム及び方法
JP2005227942A (ja) プロセッサ及びコンパイラ
US7574583B2 (en) Processing apparatus including dedicated issue slot for loading immediate value, and processing method therefor
JP2017142799A (ja) プロセッサおよび方法
JP2021057004A (ja) 行列演算アクセラレータの命令のための装置、方法、及びシステム
TW200413945A (en) Processing apparatus, processing method and compiler
US20130339689A1 (en) Later stage read port reduction
EP3924812B1 (en) Negative zero control in instruction execution
JP6073392B2 (ja) 命令としてデータ値を評価するシステムおよび方法
CN116860334A (zh) 用于计算两个区块操作数中的半字节的数量积的系统和方法
US8707013B2 (en) On-demand predicate registers
CN113646743A (zh) 用于稀疏矩阵计算的处理器
US20140013312A1 (en) Source level debugging apparatus and method for a reconfigurable processor
KR20150051083A (ko) 재구성 가능 프로세서, 재구성 가능 프로세서의 구성 메모리의 사용을 최적화하는 방법 및 장치
CN107291425B (zh) 合并解决重命名尺寸问题的部分写入结果的系统和方法
KR20150051114A (ko) 재구성 가능 프로세서, 재구성 가능 프로세서의 구성 메모리의 사용을 최적화하는 방법 및 장치
Frolov et al. Declarative, SAT-solver-based Scheduling for an Embedded Architecture with a Flexible Datapath

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