KR102032895B1 - 기능 유닛들 간의 기능 로직 공유 장치, 방법 및 재구성 가능 프로세서 - Google Patents

기능 유닛들 간의 기능 로직 공유 장치, 방법 및 재구성 가능 프로세서 Download PDF

Info

Publication number
KR102032895B1
KR102032895B1 KR1020130009327A KR20130009327A KR102032895B1 KR 102032895 B1 KR102032895 B1 KR 102032895B1 KR 1020130009327 A KR1020130009327 A KR 1020130009327A KR 20130009327 A KR20130009327 A KR 20130009327A KR 102032895 B1 KR102032895 B1 KR 102032895B1
Authority
KR
South Korea
Prior art keywords
functional
logic
unit
data
functional units
Prior art date
Application number
KR1020130009327A
Other languages
English (en)
Other versions
KR20140096587A (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 KR1020130009327A priority Critical patent/KR102032895B1/ko
Priority to US14/160,756 priority patent/US9753769B2/en
Priority to CN201410043018.XA priority patent/CN103970714B/zh
Priority to EP14152782.0A priority patent/EP2759927B1/en
Publication of KR20140096587A publication Critical patent/KR20140096587A/ko
Application granted granted Critical
Publication of KR102032895B1 publication Critical patent/KR102032895B1/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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 or look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • 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)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Logic Circuits (AREA)
  • Advance Control (AREA)
  • Stored Programmes (AREA)

Abstract

복수의 기능 유닛들이 적어도 하나의 기능 로직을 공유하도록 하는 장치에 관한 것이다. 일 실시예에 따른 기능 로직 공유 장치는 하나 이상의 기능 로직을 공유할 둘 이상의 기능 유닛으로부터 전달된 데이터가 저장되는 저장부 및 저장부에 저장된 데이터를 스케쥴링 규칙에 기초하여 기능 로직으로 전달하는 중재부를 포함할 수 있다. 본 실시예에 따르면 회로 크기를 크게 증가시키지 않으면서도 지원가능한 기능 유닛의 수를 늘릴 수 있으며, 이로 인해 라우팅 및 통신 경로와 그에 필요한 리소스 사용을 감소시킬 수 있다.

Description

기능 유닛들 간의 기능 로직 공유 장치, 방법 및 재구성 가능 프로세서{APPARATUS AND METHOD FOR SHARING FUNCTIONAL LOGIC BETWEEN FUNCTIONAL UNITS, AND RECONFIGURABLE PROCESSOR}
복수의 기능 유닛들이 적어도 하나의 기능 로직을 공유하도록 하는 장치 및 방법에 관한 것이다.
재구성 가능 프로세서(Reconfigurable processor)는 일반적으로 다수의 기능 유닛(Functional Unit)들을 포함하고 그 다수의 기능 유닛들은 보통 상호 독립적으로 주어진 입력에 따라 연산을 수행하고 출력을 내는 것이 일반적이다. 그러나, 어떤 연산의 경우에는 큰 하드웨어 기능 로직(function logic)을 필요로 하며 이는 다이 크기, 전력 소모량 등의 측면에서 여러 기능 유닛에 해당 연산을 넣는 것을 어렵게 한다. 소수의 기능 유닛에 특정 연산을 할당하는 경우 한 기능 유닛은 한 번에 하나의 연산을 받아 동작하게 되므로, 해당 연산이 많은 응용의 경우 처리 성능에 제약이 발생하고, 주어진 연산을 처리하기 위해 그 연산을 처리할 수 있는 기능 유닛까지 입력을 전달하고 결과를 받아오는 회로 상의 라우팅 또는 별도의 통신이 필요하나 해당 연산이 할당된 기능 유닛의 수가 적으면 입출력 값을 멀리 전달해야 하는 경우가 많이 발생하여 라우팅 리소스의 효율이 떨어지고 성능이 하락할 수 있다. 또한, 라우팅이 늘어날 수록 리소스 점유율이 올라가 스케줄링이 어려워진다.
하나 이상의 재구성 가능 프로세세에 포함된 기능 유닛이 하나 이상의 기능 로직을 공유할 수 있도록 함으로써 라우팅 또는 통신 경로를 단축시켜 성능을 향상시킬 수 있는 장치 및 방법이 제시된다.
일 양상에 따르면 기능 로직 공유 장치는 하나 이상의 기능 로직을 공유할 둘 이상의 기능 유닛으로부터 전달된 데이터가 저장되는 저장부 및 저장부에 저장된 데이터를 스케쥴링 규칙에 기초하여 기능 로직으로 전달하는 중재부를 포함할 수 있다.
또한, 기능 로직 공유 장치는 중재부에 의해 전달된 데이터를 이용하여 기능 로직이 처리한 결과를 데이터를 저장부로 전달한 기능 유닛에 전달하는 출력부를 더 포함할 수 있다.
출력부는 기능 로직에서 처리된 결과가 임시로 저장되는 버퍼를 포함할 수 있다.
출력부는 기능 로직의 처리 결과를 버퍼에 일정 시간 저장한 후에 기능 유닛으로 전달할 수 있다.
이때, 둘 이상의 기능 유닛은 하나 이상의 재구성 가능 프로세서에 포함된 기능 유닛일 수 있다.
또한, 둘 이상의 기능 유닛은 하나의 재구성 가능 프로세서에서 둘 이상의 스레드(thread) 또는 태스크(task)를 동시에 처리하도록 설계된 둘 이상의 기능 유닛 그룹에 각각 포함된 기능 유닛일 수 있다.
저장부는 둘 이상의 기능 유닛에 대응되어 각 기능 유닛에서 기능 로직으로 전달될 데이터를 저장하는 둘 이상의 큐(Queue)를 포함할 수 있다.
저장부는 기능 로직을 공유할 하나 이상의 하드웨어 장치에서 기능 로직으로 전달될 데이터가 저장되는 하나 이상의 큐를 더 포함할 수 있다.
이때, 하나 이상의 기능 로직은 동일한 연산을 수행할 수 있다.
일 양상에 따르면, 재구성 가능 프로세서는 복수의 기능 유닛, 복수의 기능 유닛 중에서 하나 이상의 기능 로직을 공유하도록 연결된 둘 이상의 기능 유닛으로부터 데이터가 각각 입력되는 둘 이상의 큐, 둘 이상의 큐에 입력된 데이터를 스케쥴링 규칙에 기초하여 기능 로직으로 전달하는 중재부 및 중재부에 의해 전달된 데이터를 이용하여 기능 로직이 처리한 결과를 전달된 데이터를 큐에 입력한 기능 유닛에 전달하는 출력부를 포함할 수 있다.
출력부는 기능 로직에서 처리된 결과가 임시로 저장되는 버퍼를 포함하고, 그 기능 로직의 처리 결과를 스케쥴링 규칙에 기초하여 버퍼에 일정 시간 저장한 후에 기능 유닛으로 전달할 수 있다.
복수의 기능 유닛은 둘 이상의 스레드 또는 태스크를 동시에 처리하도록 둘 이상의 기능 유닛 그룹으로 설계되고, 둘 이상의 기능 유닛은 상기 둘 이상의 기능 유닛 그룹에 각각 포함될 수 있다.
일 양상에 따르면, 기능 로직 공유 방법은 하나 이상의 기능 로직을 공유할 둘 이상의 기능 유닛으로부터 입력된 데이터를 대응되는 둘 이상의 큐에 각각 저장하는 단계 및 큐에 저장된 데이터를 스케쥴링 규칙에 기초하여 기능 로직으로 전달하는 단계를 포함할 수 있다.
또한, 전달된 데이터를 이용하여 기능 로직이 처리한 결과를 데이터를 큐에 입력한 기능 유닛에 전달하는 단계를 더 포함할 수 있다.
기능 유닛에 전달하는 단계는 기능 로직의 처리 결과를 버퍼에 일정 시간 저장하는 단계를 포함할 수 있다.
이때, 둘 이상의 기능 유닛은 하나 이상의 재구성 가능 프로세서에 포함된 기능 유닛일 수 있다.
또한, 둘 이상의 기능 유닛은 하나의 재구성 가능 프로세서에서 둘 이상의 스레드(thread) 또는 태스크(task)를 동시에 처리하도록 설계된 둘 이상의 기능 유닛 그룹에 각각 포함된 기능 유닛일 수 있다.
이때, 하나 이상의 기능 로직은 동일한 연산을 수행할 수 있다.
하나 이상의 재구성 가능 프로세세에 포함된 기능 유닛이 하나 이상의 기능 로직을 공유할 수 있도록 함으로써 라우팅 또는 통신 경로를 단축시켜 성능을 향상시킬 수 있다.
도 1은 일 실시예에 따른 기능 로직 공유 장치의 블록도이다.
도 2는 일 실시예에 따른 기능 로직 공유 장치의 적용례이다.
도 3은 다른 실시예에 따른 기능 로직 공유 장치의 적용례이다.
도 4는 또 다른 실시예에 따른 기능 로직 공유 장치의 적용례이다.
도 5는 또 다른 실시예에 따른 기능 로직 공유 장치의 적용례이다.
도 6은 일 실시예에 따른 재구성 가능 프로세서의 블록도이다.
도 7은 일 실시예에 따른 기능 로직 공유 방법의 흐름도이다.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다. 기재된 기술의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
이하, 기능 유닛들 간의 기능 로직 공유 장치, 방법 및 재구성 가능 프로세서의 실시예들을 도면들을 참고하여 자세히 설명하도록 한다.
도 1은 일 실시예에 따른 기능 로직 공유 장치의 블록도이다. 일반적으로 재구성 가능 프로세서(Reconfigurable processor) 설계시 다이 크기의 제약 등으로 인해 특정 연산을 수행할 수 있는 기능 로직(function logic)을 정해진 개수 이내로만 삽입할 수 있다. 일 실시예에 따른 기능 로직 공유 장치(100)는 도 1에 도시된 바와 같이 하나 이상의 기능 유닛(FU 0, FU 1)이 특정 연산을 처리하는 기능 로직(140)을 공유하도록 함으로써 공유를 위한 약간의 오버헤드만으로 해당 연산을 지원하는 기능 유닛의 수를 증가시킬 수 있도록 한다.
도 1을 참조하면, 기능 로직 공유 장치(100)는 저장부(110), 중재부(120) 및 출력부(130)를 포함한다.
저장부(110)는 기능 로직(140)을 공유할 둘 이상의 기능 유닛(FU 0, FU 1)으로부터 기능 로직(140)에서 처리될 데이터를 저장한다. 이때, 저장부(110)는 둘 이상의 기능 유닛(FU 0, FU 1)에 대응되도록 둘 이상의 큐를 포함할 수 있으며, 각 기능 유닛(FU 0, FU 1)에서 입력되는 데이터는 대응되는 큐에 저장될 수 있다.
중재부(120)는 저장부(110)에 입력된 각 기능 유닛(FU 0, FU 1)의 데이터를 스케쥴링 규칙에 따라 공유할 기능 로직(140)으로 전달하여 처리되도록 한다. 이때, 스케쥴링 규칙은 각 기능 로직(140)에서 전달된 데이터를 공유 기능 로직(140)에 전달하는 순서 정보 등이 포함될 수 있다. 중재부(120)는 각 큐에 입력된 데이터들을 전달 순서에 따라 기능 로직(140)에 전달할 수 있다.
또한, 일 예에 따르면 공유할 기능 로직(140)은 둘 이상이 될 수 있으며, 둘 이상의 기능 로직(140)을 공유하도록 설계된 경우 각 기능 로직(140)은 동일한 연산을 처리하는 기능 로직(140)일 수 있다. 동일한 연산을 처리하는 둘 이상의 기능 로직(140)을 공유하도록 설계하는 경우 중재부(120)가 각 큐에 입력된 데이터들을 어느 하나의 기능 로직(140)에 전달하여 처리하도록 할 때보다 신속한 처리가 가능해진다.
한편, 일 실시예에 따르면 특정 연산을 처리할 기능 로직(140)은 도 1에 도시된 바와 같이 기능 로직 공유 장치(100)의 외부의 하드웨어에 삽입되어 중재부(120) 및 출력부(130)와 연결될 수 있다. 또한, 다른 실시예에 따르면 기능 로직은 기능 로직 공유 장치(100)의 일 구성으로 설계되는 것도 가능하다.
출력부(130)는 기능 로직(140)에서 중재부(120)에 의해 전달된 데이터를 이용하여 처리한 결과를 그 데이터를 저장부(110)에 저장한 기능 유닛으로 전달한다. 예를 들어, 중재부(120)가 스케쥴링 규칙에 따라 어느 하나의 기능 유닛(FU 0)에서 저장된 데이터를 기능 로직(140)에 전달한 경우 그 데이터를 이용하여 기능 로직(140)이 처리한 결과를 다시 그 기능 유신(FU 0)에 돌려 준다.
출력부(130)는 그 기능 로직(140)에서 처리한 결과를 임시로 저장하는 버퍼(미도시)를 포함할 수 있다. 출력부(130)는 기능 로직(140)에서 처리 결과가 출력되면 스케쥴링 규칙을 기초로 일정 시간 대기한 후 해당하는 기능 유닛으로 전달할지를 판단하고, 일정 시간 대기가 필요한 경우 그 처리 결과를 버퍼에 저장할 수 있다. 그 후, 일정 시간이 경과하면 그 버퍼에 저장된 처리 결과를 해당하는 기능 유닛에 전달할 수 있다.
출력부(130)로부터 처리 결과를 전달받은 기능 유닛은 다음 연산의 처리를 위해 그 전달받은 처리 결과를 활용할 수 있다. 또는 그 처리 결과를 레지스터 파일로 전달하거나 다른 기능 유닛으로 전달하여 그 기능 유닛에서 다른 연산의 처리에 활용하도록 할 수 있다.
한편, 일 실시예에 따른 기능 로직 공유 장치(100)는 재구성 가능 프로세서의 외부에 배치되어 하나 이상의 재구성 가능 프로세서, 하드웨어 등이 기능 로직을 공유하도록 설계될 수 있다. 또한, 필요에 따라 재구성 가능 프로세서를 구성하는 일 모듈이 되도록 설계되는 것도 가능하다.
도 2는 일 실시예에 따른 기능 로직 공유 장치의 적용례이다.
도 2에 도시된 바와 같이, 일 실시예에 따르면 하나의 재구성 가능 프로세서(20)가 기능 로직 공유 장치(200)를 통해 하나의 기능 로직을 공유하도록 설계될 수 있다. 즉, 하나의 재구성 가능 프로세서(20)에 포함된 둘 이상의 기능 유닛(FU 0,1, FU 2,3)은 하나의 기능 로직(240)을 공유하도록 기능 로직 공유 장치(200)의 저장부(210)와 출력부(230)에 연결될 수 있다.
저장부(210)는 기능 로직(240)을 공유하는 각 기능 유닛(FU 0,1, FU 2,3)으로부터 전달된 데이터를 저장하는 둘 이상의 큐(Q1, Q2)를 포함할 수 있다. 저장부(210)는 각 기능 유닛(FU 0,1, FU 2,3)으로부터 전달되는 데이터를 각각 대응되는 큐(Q1, Q2)에 저장한다. 각 기능 유닛(FU 0,1, FU 2,3)에서 전달된 데이터는 중재부(220)에 의해 선택되어 기능 로직(240)에 전달될 때까지 대응되는 큐(Q1, Q2)에 입력되어 대기한다.
중재부(220)는 멀티 플렉서(Multiplexer)일 수 있으며, 각 큐(Q1, Q2)에 대기 중인 데이터 중에서 스케쥴링 규칙에 따라 다음 처리될 데이터를 결정할 수 있다. 그리고, 그 결정된 데이터를 기능 로직(240)에 전달할 수 있다.
기능 로직(240)은 중재부(220)에 의해 데이터가 입력되면 그 데이터를 이용하여 정해진 연산을 수행하고 그 처리 결과를 출력한다.
출력부(230)는 기능 로직(240)에서 처리 결과가 출력되면 그 처리 결과를 해당하는 기능 유닛, 즉 중재부(220)에 의해 기능 로직(240)으로 전달된 데이터를 큐에 입력한 기능 유닛으로 전달한다.
이때, 출력부(230)는 도 2에 도시되지 않았지만 버퍼를 포함할 수 있으며, 처리 결과가 일정 시간 경과 후에 해당하는 기능 유닛으로 전달되어야 하는 경우 그 처리 결과를 버퍼에 임시 저장할 수 있다.
도 2에 도시된 바와 같이, 하나의 재구성 가능 프로세서(20)의 기능 유닛 FU 0,0에서 기능 로직(240)의 입력이 만들어진다고 할 때 FU 2, 3 를 거쳐 기능 로직으로 전달하는 경우보다 FU 0,0에 가까이에 위치한 FU 0,1를 통해 바로 기능 로직으로 전달하여 처리되도록 하는 것이 전달 시간 및 통신 자원 면에서 더 효과적이다.
이와 같이, 도 2에 도시된 바를 참조하면, 일 실시예에 따른 기능 로직 공유 장치(200)는 하나의 재구성 가능 프로세서(20)과는 별도의 하드웨어 장치로서 설계될 수 있다. 또한, 다른 실시예에 따르면, 기능 로직 공유 장치(200)는 하나의 재구성 가능 프로세서(20)에 일 구성 모듈로서 포함되도록 설계되는 것이 가능하다.
도 3 및 도 4는 다른 실시예에 따른 기능 로직 공유 장치의 적용례이다.
도 3에 도시된 바와 같이, 다른 실시예에 따르면 둘 이상의 재구성 가능 프로세서(31,32), 별도의 연산을 처리하는 하드웨어(33) 등이 기능 로직 공유 장치(300)를 통해 하나의 기능 로직(340)을 공유하도록 설계되는 것이 가능하다. 본 실시예에 따른 기능 로직 공유 장치(300)는 다수의 재구성 가능 프로세서(31,32) 또는 별도의 연산을 처리하는 하드웨어(33) 등이 기능 로직(240)을 공유할 수 있도록 별도의 독립된 하드웨어로서 설계될 수 있다.
기능 로직 공유 장치(300)는 저장부(310), 중재부(320) 및 출력부(330)를 포함할 수 있다. 기능 로직 공유 장치(300)의 각 구성은 앞에서 설명한 바와 같이 해석될 수 있으므로, 이하, 자세한 설명은 생략한다.
또한, 도 4에 도시된 바와 같이, 다른 실시예에 따르면 복수의 기능 유닛(FU 0 ~ FU 4)이 기능 로직 공유 장치(400)를 통해 둘 이상의 기능 로직(440a, 440b)을 공유하도록 설계될 수도 있다. 이때, 복수의 기능 유닛(FU 0 ~ FU 4)은 하나의 재구성 가능 프로세서에 포함되거나, 또는 둘 이상의 재구성 가능 프로세서에 각각 포함될 수 있다. 또한, 둘 이상의 기능 로직(440a, 440b)은 동일한 연산을 처리하는 기능 로직일 수 있다.
이와 같이, 동일한 연산을 처리하는 둘 이상의 기능 로직(440a, 440b)이 하드웨어에 삽입 가능한 경우 그 둘 이상의 기능 로직(440a, 440b)을 모두 공유하여 연산을 처리하도록 하면 저장부(410)의 각 큐에 입력된 데이터의 대기 시간이 줄어든다. 즉, 저장부(410)의 각 큐에 입력된 데이터는 중재부(420)에 의해 둘 이상의 기능 로직(440a,440b)에 전달되어 처리되고 신속하게 처리된 결과는 출력부(430)에 의해 해당하는 기능 유닛에 전달하므로, 하나의 기능 로직에서 처리할 때보다 처리 성능이 향상될 수 있다.
도 5는 또 다른 실시예에 따른 기능 로직 공유 장치의 적용례이다.
도 5를 참조하면, 하나의 재구성 가능 프로세서(50)는 둘 이상의 스레드(thread) 또는 태스크(task)를 동시에 처리할 수 있도록 둘 이상의 기능 유닛 그룹(51,52)을 포함할 수 있다. 이때, 어느 하나의 스레드 또는 태스크를 처리하는 기능 유닛 그룹(51)과 동시에 다른 스레드 또는 태스크를 처리하는 기능 유닛 그룹(52)은 모두 특정 연산을 처리하는 기능 로직(540)에서 처리된 결과를 필요로 할 수 있다. 이 경우, 각 기능 유닛 그룹(51,52)에 속한 특정 기능 유닛(FU 0,1, FU 2,3)을 기능 로직 공유 장치(500)에 연결하여 기능 로직(540)을 공유하도록 할 수 있다.
본 실시예에 따른 기능 로직 공유 장치(500)는 저장부(510), 중재부(520) 및 출력부(530)를 포함할 수 있다. 기능 로직 공유 장치(500)의 각 구성은 전술한 실시예에 따라 해석될 수 있으므로, 이하 자세한 설명은 생략하기로 한다.
일반적인 재구성 가능 프로세서는 한 번에 하나의 태스크나 스레드를 구동하도록 하는 것이 일반적이다. 이는 특정 연산을 처리하는 기능 유닛이 하나뿐이거나 소수인 경우와 같이 리소스의 제약에 의해 여러 태스크나 스레드를 처리하기 어렵기 때문이다. 그러나, 본 실시예에 따르면 명령 수준의 병렬성이 낮은 태스크들 또는 작은 크기의 기능 유닛 그룹에서의 스케쥴링이 쉽거나 유리한 태스크들을 선정하여 동시에 처리하는 것이 가능해진다. 또한, 하드웨어 비용이 높은 연산들을 기능 유닛 그룹들 각각에 만들어 넣지 않고도 하나 또는 소수의 기능 유닛에만 만들어 공유하는 것이 가능하게 되어 전체적인 비용을 절감할 수 있게 된다.
도 6은 일 실시예에 따른 재구성 가능 프로세서의 블록도이다.
도 1 내지 도 5를 참조하여 다양한 실시예에 따른 기능 로직 공유 장치의 적용례를 설명하였다. 기능 로직 공유 장치는 하나 이상의 재구성 가능 프로세서와는 별도의 하드웨어로서 설계될 수 있으나, 일 실시예에 따르면 도 6에 도시된 바와 같이 어느 하나의 재구성 가능 프로세서에 포함되는 구성으로 설계될 수 있다.
도 6을 참조하면, 일 실시예에 따른 재구성 가능 프로세서는 복수의 기능 유닛(61), 둘 이상의 큐(62), 중재부(63) 및 출력부(64)를 포함할 수 있다.
도 2를 참조하여 전술한 바에서도 알 수 있듯이, 재구성 가능 프로세서(60)는 특정 연산을 처리하는 기능 로직(65)를 공유하여 연산을 처리하도록 복수의 기능 유닛(61) 중에서 적어도 둘 이상의 기능 유닛이 그 기능 로직(65)을 공유하도록 미리 설계될 수 있다.
재구성 가능 프로세서(60)의 특정 기능 유닛(61) 또는 기능 로직에 연결된 기능 유닛은 그 기능 로직(65)에서 특정 연산의 처리가 필요한 경우 그 기능 로직(65)의 입력이 되는 데이터를 연결된 기능 유닛을 통해 큐(62)에 전달할 수 있다.
큐(62)에 전달되어 저장된 데이터는 중재부(63)에 의해 선택되어 기능 로직(65)으로 전달되어 처리된다. 기능 로직(65)은 전달된 데이터를 이용하여 연산을 수행하여 처리 결과를 출력한다.
출력부(64)는 기능 로직(65)의 처리 결과를 원래의 기능 유닛(61)으로 전달한다. 이때, 출력부(64)는 도시되지 않았지만 임시의 버퍼를 포함할 수 있고, 기능 로직(65)의 처리 결과는 일정 시간 그 임시 버퍼에 저장된 후 기능 유닛(61)에 전달될 수 있다.
한편, 재구성 가능 프로세서(60)는 복수의 기능 유닛(61)을 도 5를 참조하여 설명한 바와 같이, 둘 이상의 스레드 또는 태스크를 동시에 처리할 수 있도록 둘 이상의 기능 유닛 그룹으로 나누어질 수 있으며, 각 기능 유닛 그룹에 속한 기능 유닛을 기능 로직(61)에 연결하여 동시에 둘 이상의 스레드를 처리하도록 할 수 있다.
도 7은 일 실시예에 따른 기능 로직 공유 방법의 흐름도이다.
도 7을 참조하여, 도 1의 실시예에 따른 기능 로직 공유 장치(100)를 통해 기능 로직을 공유하는 방법을 설명한다.
먼저, 기능 로직 공유 장치(100)는 둘 이상의 기능 유닛 또는 하드웨어 장치에서 입력된 데이터를 대응되는 둘 이상의 큐에 저장한다(단계 710). 이때, 둘 이상의 기능 유닛은 하나의 재구성 가능 프로세서에 속한 기능 유닛일 수 있다. 또는 둘 이상의 재구성 가능 프로세서에 각각 포함된 기능 유닛일 수 있다. 또는, 둘 이상의 기능 유닛은 하나의 재구성 가능 프로세서에서 둘 이상의 스레드 또는 태스크를 동시에 처리하도록 둘 이상의 기능 유닛 그룹으로 나누어진 경우 각 기능 유닛 그룹에 속한 기능 유닛일 수 있다.
그 다음, 각 큐에 저장된 데이터를 스케쥴링 규칙에 기초하여 특정 연산을 처리할 기능 로직으로 전달한다(단계 720). 스케쥴링 규칙은 각 기능 유닛에서 입력된 데이터의 처리 순서 정보를 포함할 수 있다. 기능 로직은 하나 이상일 수 있으며, 둘 이상의 기능 로직을 공유하도록 설계하는 경우 각 기능 로직은 동일한 연산을 수행할 수 있다. 동일한 연산을 수행하는 둘 이상의 기능 로직을 공유하여 특정 연산을 처리함으로써 보다 신속한 처리가 가능해진다.
그 다음, 기능 로직의 처리 결과를 해당하는 기능 유닛으로 전달한다(단계 730). 한편, 기능 로직의 처리 결과는 임시의 버퍼에 일정 시간 저장된 후에 기능 유닛(61)에 전달될 수도 있다.
한편, 본 실시 예들은 컴퓨터로 읽을 수 있는 기록 매체에 컴퓨터가 읽을 수 있는 코드로 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록 매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록 장치를 포함한다.
컴퓨터가 읽을 수 있는 기록 매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피디스크, 광 데이터 저장장치 등이 있으며, 또한 캐리어 웨이브(예를 들어 인터넷을 통한 전송)의 형태로 구현하는 것을 포함한다. 또한, 컴퓨터가 읽을 수 있는 기록 매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산 방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다. 그리고 본 실시예들을 구현하기 위한 기능적인(functional) 프로그램, 코드 및 코드 세그먼트들은 본 발명이 속하는 기술 분야의 프로그래머들에 의하여 용이하게 추론될 수 있다.
본 개시가 속하는 기술분야의 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
100 200 300 400 500: 기능 로직 공유 장치
110 210 310 410 510: 저장부
120 220 320 420 520: 중재부
130 230 330 430 530: 출력부
20 31 32 50 60: 재구성 가능 프로세서

Claims (18)

  1. 하나 이상의 기능 로직을 공유할 둘 이상의 기능 유닛으로부터 전달된 데이터가 저장되는 저장부; 및
    상기 저장부에 저장된 데이터를 스케쥴링 규칙에 기초하여 상기 기능 로직으로 전달하는 중재부;를 포함하고,
    상기 하나 이상의 기능 로직 각각은 적어도 두 개의 기능 유닛들로부터 수신된 각 데이터에 대하여 동일한 연산을 수행하는 기능 로직 공유 장치.
  2. 제1항에 있어서,
    상기 중재부에 의해 전달된 데이터를 이용하여 상기 기능 로직이 처리한 결과를 상기 데이터를 저장부로 전달한 기능 유닛에 전달하는 출력부;를 더 포함하는 기능 로직 공유 장치.
  3. 제2항에 있어서, 상기 출력부는
    상기 기능 로직에서 처리된 결과가 임시로 저장되는 버퍼;를 포함하는 기능 로직 공유 장치.
  4. 제3항에 있어서, 상기 출력부는
    상기 기능 로직의 처리 결과를 상기 버퍼에 일정 시간 저장한 후에 상기 기능 유닛으로 전달하는 기능 로직 공유 장치.
  5. 제1항에 있어서, 상기 둘 이상의 기능 유닛은
    하나 이상의 재구성 가능 프로세서에 포함된 기능 유닛인 기능 로직 공유 장치.
  6. 제1항에 있어서, 상기 둘 이상의 기능 유닛은
    하나의 재구성 가능 프로세서에서 둘 이상의 스레드(thread) 또는 태스크(task)를 동시에 처리하도록 설계된 둘 이상의 기능 유닛 그룹에 각각 포함된 기능 로직 공유 장치.
  7. 제1항에 있어서, 상기 저장부는
    상기 둘 이상의 기능 유닛에 대응되어 각 기능 유닛에서 상기 기능 로직으로 전달될 데이터를 저장하는 둘 이상의 큐(Queue);를 포함하는 기능 로직 공유 장치.
  8. 제7항에 있어서, 상기 저장부는
    상기 기능 로직을 공유할 하나 이상의 하드웨어 장치에서 상기 기능 로직으로 전달될 데이터가 저장되는 하나 이상의 큐;를 더 포함하는 기능 로직 공유 장치.
  9. 삭제
  10. 복수의 기능 유닛;
    상기 복수의 기능 유닛 중에서 하나 이상의 기능 로직을 공유하도록 연결된 둘 이상의 기능 유닛으로부터 데이터가 각각 입력되는 둘 이상의 큐;
    상기 둘 이상의 큐에 입력된 데이터를 스케쥴링 규칙에 기초하여 상기 기능 로직으로 전달하는 중재부; 및
    상기 중재부에 의해 전달된 데이터를 이용하여 상기 기능 로직이 처리한 결과를 상기 전달된 데이터를 큐에 입력한 기능 유닛에 전달하는 출력부;를 포함하고,
    상기 하나 이상의 기능 로직 각각은 적어도 두 개의 기능 유닛들로부터 수신된 각 데이터에 대하여 동일한 연산을 수행하는 재구성 가능 프로세서.
  11. 제10항에 있어서, 상기 출력부는
    상기 기능 로직에서 처리된 결과가 임시로 저장되는 버퍼를 포함하고, 상기 기능 로직의 처리 결과를 스케쥴링 규칙에 기초하여 상기 버퍼에 일정 시간 저장한 후에 상기 기능 유닛으로 전달하는 재구성 가능 프로세서.
  12. 제10항에 있어서,
    상기 복수의 기능 유닛은 둘 이상의 스레드 또는 태스크를 동시에 처리하도록 둘 이상의 기능 유닛 그룹으로 설계되고,
    상기 둘 이상의 기능 유닛은 상기 둘 이상의 기능 유닛 그룹에 각각 포함되는 재구성 가능 프로세서.
  13. 기능 로직 공유 장치가,
    하나 이상의 기능 로직을 공유할 둘 이상의 기능 유닛으로부터 입력된 데이터를 대응되는 둘 이상의 큐에 각각 저장하는 단계; 및
    상기 큐에 저장된 데이터를 스케쥴링 규칙에 기초하여 상기 기능 로직으로 전달하는 단계;를 포함하고,
    상기 하나 이상의 기능 로직 각각은 적어도 두 개의 기능 유닛들로부터 수신된 각 데이터에 대하여 동일한 연산을 수행하는 기능 로직 공유 방법.
  14. 제13항에 있어서,
    상기 기능 로직 공유 장치가,
    상기 전달된 데이터를 이용하여 상기 기능 로직이 처리한 결과를 상기 데이터를 큐에 입력한 기능 유닛에 전달하는 단계;를 더 포함하는 기능 로직 공유 방법.
  15. 제14항에 있어서, 상기 기능 유닛에 전달하는 단계는
    상기 기능 로직의 처리 결과를 버퍼에 일정 시간 저장하는 단계;를 포함하는 기능 로직 공유 방법.
  16. 제13항에 있어서, 상기 둘 이상의 기능 유닛은
    하나 이상의 재구성 가능 프로세서에 포함된 기능 유닛인 기능 로직 공유 방법.
  17. 제13항에 있어서, 상기 둘 이상의 기능 유닛은
    하나의 재구성 가능 프로세서에서 둘 이상의 스레드(thread) 또는 태스크(task)를 동시에 처리하도록 설계된 둘 이상의 기능 유닛 그룹에 각각 포함된 기능 로직 공유 방법.
  18. 삭제
KR1020130009327A 2013-01-28 2013-01-28 기능 유닛들 간의 기능 로직 공유 장치, 방법 및 재구성 가능 프로세서 KR102032895B1 (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR1020130009327A KR102032895B1 (ko) 2013-01-28 2013-01-28 기능 유닛들 간의 기능 로직 공유 장치, 방법 및 재구성 가능 프로세서
US14/160,756 US9753769B2 (en) 2013-01-28 2014-01-22 Apparatus and method for sharing function logic between functional units, and reconfigurable processor thereof
CN201410043018.XA CN103970714B (zh) 2013-01-28 2014-01-23 用于共享功能逻辑的设备和方法及其可重配置处理器
EP14152782.0A EP2759927B1 (en) 2013-01-28 2014-01-28 Apparatus and method for sharing function logic between functional units, and reconfigurable processor thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020130009327A KR102032895B1 (ko) 2013-01-28 2013-01-28 기능 유닛들 간의 기능 로직 공유 장치, 방법 및 재구성 가능 프로세서

Publications (2)

Publication Number Publication Date
KR20140096587A KR20140096587A (ko) 2014-08-06
KR102032895B1 true KR102032895B1 (ko) 2019-11-08

Family

ID=50028827

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130009327A KR102032895B1 (ko) 2013-01-28 2013-01-28 기능 유닛들 간의 기능 로직 공유 장치, 방법 및 재구성 가능 프로세서

Country Status (4)

Country Link
US (1) US9753769B2 (ko)
EP (1) EP2759927B1 (ko)
KR (1) KR102032895B1 (ko)
CN (1) CN103970714B (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3182277A4 (en) * 2014-09-09 2018-09-19 Huawei Technologies Co. Ltd. Processor
US10659396B2 (en) * 2015-08-02 2020-05-19 Wave Computing, Inc. Joining data within a reconfigurable fabric
KR102593320B1 (ko) 2016-09-26 2023-10-25 삼성전자주식회사 전자 장치, 프로세서 및 그 제어 방법
CN112834819B (zh) * 2021-01-04 2024-04-02 杭州万高科技股份有限公司 一种用于电能计量芯片的数字信号处理装置及方法
US11675588B2 (en) * 2021-08-20 2023-06-13 Micron Technology, Inc. Tile-based result buffering in memory-compute systems

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006252440A (ja) 2005-03-14 2006-09-21 Fujitsu Ltd 再構成可能演算処理装置
JP2007172569A (ja) 2005-11-28 2007-07-05 Fujitsu Ltd 演算処理装置、演算処理装置の内部構成決定方法および演算処理システム

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5109356A (en) * 1990-05-29 1992-04-28 Environmental Research Institute Of Michigan Apparatus for computation of discrete Fourier transform using array parallel processor
US5838165A (en) 1996-08-21 1998-11-17 Chatter; Mukesh High performance self modifying on-the-fly alterable logic FPGA, architecture and method
US7047534B2 (en) * 2000-03-17 2006-05-16 Microsoft Corporation Simplified device drivers for hardware devices of a computer system
US6725354B1 (en) 2000-06-15 2004-04-20 International Business Machines Corporation Shared execution unit in a dual core processor
US7126214B2 (en) 2001-12-05 2006-10-24 Arbor Company Llp Reconfigurable processor module comprising hybrid stacked integrated circuit die elements
US6627985B2 (en) 2001-12-05 2003-09-30 Arbor Company Llp Reconfigurable processor module comprising hybrid stacked integrated circuit die elements
GB0224023D0 (en) 2002-10-16 2002-11-27 Roysmith Graeme Reconfigurable integrated circuit
US7299339B2 (en) 2004-08-30 2007-11-20 The Boeing Company Super-reconfigurable fabric architecture (SURFA): a multi-FPGA parallel processing architecture for COTS hybrid computing framework
EP1836601A2 (en) 2004-11-30 2007-09-26 Tokyo Electron Limited Dynamically reconfigurable processor
TW200617703A (en) 2004-11-30 2006-06-01 Tokyo Electron Ltd Dynamically reconfigurable processor
KR100722770B1 (ko) 2005-01-31 2007-05-30 재단법인서울대학교산학협력재단 조건실행을 지원하는 재구성 가능한 프로세싱 요소의배열구조
US20100005274A1 (en) 2006-12-11 2010-01-07 Nxp, B.V. Virtual functional units for vliw processors
KR101360191B1 (ko) * 2007-08-24 2014-02-07 삼성전자주식회사 코어스 그레인 어레이를 공유하는 방법 및 그 방법을이용한 프로세서
KR101390974B1 (ko) 2008-01-30 2014-05-02 삼성전자주식회사 다중 모드를 제공하는 재구성 가능한 장치 및 방법
JP5069325B2 (ja) * 2010-03-11 2012-11-07 株式会社豊田中央研究所 タスク実行制御装置及びプログラム
KR101738941B1 (ko) * 2010-03-23 2017-05-24 삼성전자주식회사 재구성 가능 어레이 및 재구성 가능 어레이의 제어 방법
CN102279801B (zh) * 2010-06-09 2014-12-17 晨星软件研发(深圳)有限公司 存储器共享系统及方法
JP6234660B2 (ja) * 2012-04-27 2017-11-22 富士通株式会社 動画像復号装置
US8910167B2 (en) * 2012-07-20 2014-12-09 oneZero Financial Systems, LLC Parallel processing system

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006252440A (ja) 2005-03-14 2006-09-21 Fujitsu Ltd 再構成可能演算処理装置
JP2007172569A (ja) 2005-11-28 2007-07-05 Fujitsu Ltd 演算処理装置、演算処理装置の内部構成決定方法および演算処理システム

Also Published As

Publication number Publication date
EP2759927B1 (en) 2016-10-26
US9753769B2 (en) 2017-09-05
CN103970714A (zh) 2014-08-06
US20140215476A1 (en) 2014-07-31
EP2759927A1 (en) 2014-07-30
KR20140096587A (ko) 2014-08-06
CN103970714B (zh) 2018-07-06

Similar Documents

Publication Publication Date Title
US11119768B2 (en) Conditional branching control for a multi-threaded, self-scheduling reconfigurable computing fabric
US10990392B2 (en) Efficient loop execution for a multi-threaded, self-scheduling reconfigurable computing fabric
US11288074B2 (en) Loop execution control for a multi-threaded, self-scheduling reconfigurable computing fabric using a reenter queue
US10705878B2 (en) Task allocating method and system capable of improving computational efficiency of a reconfigurable processing system
US10733019B2 (en) Apparatus and method for data processing
US20190303346A1 (en) Loop Thread Order Execution Control of a Multi-Threaded, Self-Scheduling Reconfigurable Computing Fabric
US8250164B2 (en) Query performance data on parallel computer system having compute nodes
JP5245722B2 (ja) スケジューラ、プロセッサシステム、プログラム生成装置およびプログラム生成用プログラム
US8806498B2 (en) Method and system for resolving dependency among the enqueued works and/or finished works and scheduling the dependency-resolved works
KR102032895B1 (ko) 기능 유닛들 간의 기능 로직 공유 장치, 방법 및 재구성 가능 프로세서
EP3458959B1 (en) Reconfigurable distributed processing
US20120079133A1 (en) Routing Data Communications Packets In A Parallel Computer
US10656911B2 (en) Power control for a dataflow processor
CN101124569A (zh) 微处理器结构
US10659396B2 (en) Joining data within a reconfigurable fabric
US20180212894A1 (en) Fork transfer of data between multiple agents within a reconfigurable fabric
US11301255B2 (en) Method, apparatus, device, and storage medium for performing processing task
US10374981B1 (en) Data transfer circuitry given multiple source elements
May Communicating process architecture for multicores
US11915041B1 (en) Method and system for sequencing artificial intelligence (AI) jobs for execution at AI accelerators
US20170168873A1 (en) Method, device, and system for deciding on a distribution path of a task
US20170039148A1 (en) Methods and systems for handling interrupt requests
US20240184624A1 (en) Method and system for sequencing artificial intelligence (ai) jobs for execution at ai accelerators
CN109240978B (zh) 一种搭建加速平台的fpga系统、设备及加速平台
CN104104593A (zh) 一种基于多节点网络报文传输的请求响应管理机制

Legal Events

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