KR101360191B1 - 코어스 그레인 어레이를 공유하는 방법 및 그 방법을이용한 프로세서 - Google Patents

코어스 그레인 어레이를 공유하는 방법 및 그 방법을이용한 프로세서 Download PDF

Info

Publication number
KR101360191B1
KR101360191B1 KR1020070085613A KR20070085613A KR101360191B1 KR 101360191 B1 KR101360191 B1 KR 101360191B1 KR 1020070085613 A KR1020070085613 A KR 1020070085613A KR 20070085613 A KR20070085613 A KR 20070085613A KR 101360191 B1 KR101360191 B1 KR 101360191B1
Authority
KR
South Korea
Prior art keywords
instruction set
processor core
coarse grain
grain array
instructions
Prior art date
Application number
KR1020070085613A
Other languages
English (en)
Other versions
KR20090020952A (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 KR1020070085613A priority Critical patent/KR101360191B1/ko
Priority to US12/032,709 priority patent/US8281107B2/en
Publication of KR20090020952A publication Critical patent/KR20090020952A/ko
Application granted granted Critical
Publication of KR101360191B1 publication Critical patent/KR101360191B1/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
    • 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/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • 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
    • G06F9/3824Operand accessing
    • G06F9/3826Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
    • G06F9/3828Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage with global bypass, e.g. between pipelines, between clusters
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
    • G06F9/3891Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute organised in groups of units sharing resources, e.g. clusters
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3893Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
    • G06F9/3895Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros
    • G06F9/3897Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros with adaptable data path

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)
  • Advance Control (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

코어스 그레인 어레이를 공유하는 방법 및 그 방법을 이용한 프로세서가 제공된다. 본 발명의 프로세서는 제1 인스트럭션 집합을 수행하는 복수의 제1 연산 유닛들을 포함하는 제1 프로세서 코어, 제2 인스트럭션 집합을 수행하는 복수의 제2 연산 유닛들을 포함하는 제2 프로세서 코어, 및 상기 제1 인스트럭션 집합 또는 상기 제2 인스트럭션 집합 중 적어도 하나의 집합의 인스트럭션 중 일부를 상기 제1 프로세서 코어 또는 상기 제2 프로세서 코어에 대신하여 수행하는 복수의 제3 연산 유닛들을 포함하는 코어스 그레인 어레이를 포함하며, 이를 통해 재구성 프로세서 아키텍쳐의 커스토마이징의 자유도를 향상시킬 수 있다.
재구성 프로세서, RP, 코어스 그레인 어레이, CGA

Description

코어스 그레인 어레이를 공유하는 방법 및 그 방법을 이용한 프로세서 {METHOD OF SHARING COARSE GRAINED ARRAY AND PROCESSOR USING THE METHOD}
본 발명은 재구성 프로세서(reconfigurable processor, RP) 아키텍쳐 (architecture)에 관한 것으로, 더욱 상세하게는 코어스 그레인 어레이(CGA: coarse grained array)를 이용하는 멀티 코어(multi-core) 프로세서에 관한 것이다.
종래에는, 어떤 작업을 수행하는 장치는 하드웨어 또는 소프트웨어를 이용하여 구현되었다. 예를 들어, 네트워크 인터페이스를 수행하는 네트워크 콘트롤러가 컴퓨터 칩 상에 구현된 경우, 상기 네트워크 콘트롤러는 공장에서 생산될 때 정의된 네트워크 인터페이스 기능만을 수행하였다. 일단, 공장에서 네트워크 콘트롤러가 생산된 후, 상기 네트워크 콘트롤러의 기능(function)을 바꾸는 것은 불가능하였다. 이것이 하드웨어의 예이다. 또 다른 방법으로는 소프트웨어를 이용하는 방법이 있다. 예를 들어 사용자가 원하는 기능을 수행하는 프로그램을 짜고, 상기 프로그램을 범용 프로세서(general purpose processor)에서 수행시킴으로써, 사용자의 목적이 만족되었다. 소프트웨어에 의한 방법은 하드웨어가 공장에서 생산된 후에도, 소프트웨어만 변경함으로써 새로운 기능을 수행하는 것이 가능하다. 소프트웨어를 이용하는 경우에는 주어진 하드웨어를 이용하여 다양한 기능을 수행할 수 있지만, 하드웨어 구현 방법에 의한 것보다 속도가 떨어지는 단점이 있다.
위와 같은 하드웨어 및 소프트웨어에 의한 방법의 문제점을 극복하기 위하여 제안된 아키텍쳐가 재구성 프로세서 아키텍쳐다. 재구성 프로세서 아키텍쳐는 장치의 제조(device fabrication) 후에도 어떤 문제의 해결을 위하여든지 커스토마이징될 수 있고, 또한 계산의 수행을 위해 공간적으로(spatially) 커스토마이징된 계산을 이용할 수 있다는 특징이 있다.
재구성 프로세서 아키텍쳐는 복수의 인스트럭션을 병렬적으로 처리할 수 있는 매우 긴 명령어(very long instruction word, VLIW) 프로세서 및 코어스 그레인 어레이(coarse grained array, CGA)를 이용하여 구현될 수 있다.
본 명세서에서는, 소량의 추가적인 하드웨어 면적만으로 VLIW 프로세서 및 CGA를 효과적으로 이용함으로써 멀티코어 재구성 프로세서를 구성하고 이를 통해 인스트럭션 수행의 병렬성을 높이는 방법 및 그 방법을 사용하는 프로세서가 제안된다.
본 발명은 재구성 프로세서 아키텍쳐의 장점인 사후 커스토마이징의 자유도를 향상시킨 프로세서를 제안하는 것을 목적으로 한다.
또한, 본 발명은 소량의 추가적인 하드웨어 면적만으로 VLIW 프로세서 및 CGA를 효과적으로 이용함으로써 멀티코어 재구성 프로세서를 구성하고 이를 통해 인스트럭션 수행의 병렬성을 높이는 방법 및 그 방법을 사용하는 프로세서를 제안하는 것을 목적으로 한다.
또한, 본 발명은 멀티 코어 프로세서 구조의 프로세서 코어들 간의 병렬성을 높이는 방법 및 그 방법을 사용하는 프로세서를 제안하는 것을 목적으로 한다.
상기와 같은 본 발명의 목적을 달성하기 위하여, 본 발명의 프로세서는 제1 인스트럭션 집합을 수행하는 복수의 제1 연산 유닛들을 포함하는 제1 프로세서 코어, 제2 인스트럭션 집합을 수행하는 복수의 제2 연산 유닛들을 포함하는 제2 프로세서 코어, 및 상기 제1 인스트럭션 집합 또는 상기 제2 인스트럭션 집합 중 적어도 하나의 집합의 인스트럭션 중 일부를 상기 제1 프로세서 코어 또는 상기 제2 프로세서 코어에 대신하여 수행하는 복수의 제3 연산 유닛들을 포함하는 코어스 그레인 어레이를 포함하는 것을 특징으로 한다.
또한, 본 발명의 또 다른 측면에 따른 코어스 그레인 어레이 공유 방법은 제1 프로세서 코어에서 수행될 제1 인스트럭션 집합이 설정 조건을 만족하는지 판 단하여 제1 판단 신호를 생성하는 단계, 제2 프로세서 코어에서 수행될 제2 인스트럭션 집합이 설정 조건을 만족하는지 판단하여 제2 판단 신호를 생성하는 단계, 상기 제1 판단 신호 및 상기 제2 판단 신호에 기초하여 상기 제1 인스트럭션 집합 또는 상기 제2 인스트럭션 집합 중 적어도 하나의 집합의 인스트럭션 중 일부를 코어스 그레인 어레이로 전달하는 단계를 포함하는 것을 특징으로 한다.
본 발명에 따르면 재구성 프로세서 아키텍쳐의 장점인 사후 커스토마이징의 자유도를 향상시킨 프로세서의 구현이 가능하다.
또한, 본 발명은 소량의 추가적인 하드웨어 면적만으로 VLIW 프로세서 및 CGA를 효과적으로 이용함으로써 멀티코어 재구성 프로세서를 구성하고 이를 통해 인스트럭션 수행의 병렬성을 높이는 프로세서의 구현이 가능하다.
또한, 본 발명에 따르면 멀티 코어 프로세서 구조의 프로세서 코어들 간의 병렬성을 높이는 방법 및 그 방법을 사용하는 프로세서의 구현이 가능하다.
이하에서, 본 발명에 따른 바람직한 실시예를 첨부된 도면을 참조하여 상세하게 설명한다. 그러나, 본 발명이 실시예들에 의해 제한되거나 한정되는 것은 아니다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.
재구성 프로세서(reconfigurable processor, RP) 아키텍쳐는 1개의 프로세서 및 복수 개의 연산 유닛들의 어레이를 포함한다. 이 때, 복수 개의 연산 유닛들의 어레이를 코어스 그레인 어레이(coarse grained array, CGA)라 한다.
재구성 프로세서 아키텍쳐에 사용되는 프로세서는 매우 긴 명령어(very long instruction word, VLIW) 프로세서인 경우가 있다.
VLIW 프로세서는 복수의 인스트럭션들을 동시에 수행하기 위한 복수의 연산 유닛들을 포함하고, 입력된 복수의 인스트럭션들 각각을 복수의 연산 유닛들 각각에 분배하여 병렬적으로 수행한다. 이 같은 병렬적인 인스트럭션 수행 과정을 통해, 전체 인스트럭션 수행 시간이 크게 단축될 수 있다.
하나의 VLIW 프로세서에서 동시에 수행될 수 있는 인스트럭션들의 개수는 상기 하나의 VLIW 프로세서에 포함되는 복수의 연산 유닛들의 개수에 의하여 결정된다.
본 발명의 일 실시예에 따른 프로세서는 복수의 프로세서 코어를 포함하는 재구성 프로세서 아키텍쳐를 이용한다.
프로세서 제조(manufacturing) 기술의 발전 속도가 둔화됨에 따라, 단일 프로세서 코어의 성능의 발전 속도 또한 둔화되었다. 이처럼 단일 프로세서 코어의 성능이 한계에 도달함에 따라, 단일 프로세서 코어 만으로는 사용자가 원하는 성능을 이끌어내지 못하는 경우가 생기게 되었다.
보다 향상된 성능의 프로세서를 필요로 하는 경우에, 복수의 프로세서 코어들을 이용하는 멀티 코어(multi-core) 프로세서 구조가 사용된다.
본 발명의 일 실시예에 따른 프로세서는, 소량의 추가적인 하드웨어 면적만으로 VLIW 프로세서 및 CGA를 효과적으로 이용함으로써 멀티코어 재구성 프로세서를 구성하고 이를 통해 성능을 최대화하는 것이 가능하다.
도 1은 본 발명의 일 실시예에 따른 프로세서(100)를 나타낸 블록도이다.
도 1을 참조하면, 프로세서(100)는 제1 프로세서 코어(110), 제2 프로세서 코어(120) 및 코어스 그레인 어레이(130)(coarse grained array, CGA)를 포함한다.
제1 프로세서 코어(110)는 제1 인스트럭션 집합을 수행하는 복수의 제1 연산 유닛(functional unit, FU)들을 포함한다.
제2 프로세서 코어(120)는 제2 인스트럭션 집합을 수행하는 복수의 제2 연산 유닛(functional, FU)들을 포함한다.
코어스 그레인 어레이(130)는 상기 제1 인스트럭션 집합 또는 상기 제2 인스트럭션 집합 중 적어도 하나의 집합의 인스트럭션 중 일부를 상기 제1 프로세서 코어 또는 상기 제2 프로세서 코어에 대신하여 수행하는 복수의 제3 연산 유닛들을 포함한다.
코어스 그레인 어레이(130)가 포함하는 복수의 제3 연산 유닛들은 제1 프로세서 코어(110)가 수행하도록 할당된 제1 인스트럭션 집합의 인스트럭션 중 일부를 제1 프로세서 코어(110)에 대신하여 수행할 수 있다.
코어스 그레인 어레이(130)가 포함하는 복수의 제3 연산 유닛들은 제2 프로세서 코어(120)가 수행하도록 할당된 제2 인스트럭션 집합의 인스트럭션 중 일부를 제2 프로세서 코어(120)에 대신하여 수행할 수 있다.
코어스 그레인 어레이(130)가 포함하는 복수의 제3 연산 유닛들은 제1 프로세서 코어(110) 또는 제2 프로세서 코어(120)가 수행해야 할 역할의 일부를 대신함으로써, 프로세서(100)의 전체 인스트럭션 수행 시간을 단축한다.
코어스 그레인 어레이(130)가 포함하는 복수의 제3 연산 유닛들은, 제1 프로세서 코어(110)의 역할을 대신할 수도 있고, 제2 프로세서 코어(120)의 역할을 대신할 수도 있다. 다른 관점에서 본다면, 제1 프로세서 코어(110) 및 제2 프로세서 코어(120)는 하나의 코어스 그레인 어레이(130)를 공유하는 것으로 볼 수 있다.
이처럼 제1 프로세서 코어(110) 및 제2 프로세서 코어(120)가 코어스 그레인 어레이(130)를 공유함으로써, 프로세서(100)의 인스트럭션 수행의 병렬성을 향상시키고, 프로세서(100)의 전체 인스트럭션 수행 시간을 단축한다.
인스트럭션들로 이루어진 전체 프로그램 코드(total program code)에서, 컨트롤 인텐시브(control intensive)한 - 분기(branch) 또는 조건문(conditional sentence) 등이 집약적인(intensive) - 부분은 제1 프로세서 코어(110) 또는 제2 프로세서 코어(120)가 수행하고, 데이터 인텐시브(data intensive)한 부분은 코어스 그레인 어레이(130)가 수행하는 역할 분담에 따라, 프로세서(100)의 전체 수행 시간이 단축된다.
예를 들어, 데이터 크런치 어플리케이션(data crunch application)에서, 컨트롤 인텐시브한 부분(control intensive part)과 루프 부분(loop part)이 전체 프로그램 코드 수행 시간에서 차지하는 비율이 2 대 8인 경우에는, 일반적인 프로세서에서는, 하나의 프로세서 코어가 수행하는 인스트럭션들보다 하나의 코어스 그레인 어레이가 수행하는 인스트럭션들이 많다. 그러나 본 발명의 프로세서(100)는, 컴파일러 또는 하드웨어의 도움을 받아 루프 부분을 가속화(accelerate)하면, 제1 프로세서 코어(110) 및 제2 프로세서 코어(120)가 수행하는 인스트럭션들의 수 가 코어스 그레인 어레이(130)가 수행하는 인스트럭션들의 수보다 많다.
이처럼 보다 많은 인스트럭션들이 제1 프로세서 코어(110) 및 제2 프로세서 코어(120)에서 수행되기 때문에, 코어스 그레인 어레이(130)를 제1 프로세서 코어(110) 및 제2 프로세서 코어(120)가 공유(share)하는 구성이 가능하다.
제1 프로세서 코어(110) 및 제2 프로세서 코어(120)가 코어스 그레인 어레이(130)를 공유함으로써, 제1 프로세서 코어(110) 및 제2 프로세서 코어(120)각각이 별개의 코어스 그레인 어레이를 가지는 구성에 비하여 회로 구성 상의 면적이 크게 감소될 수 있다.
실시예에 따라, 제1 프로세서 코어(110) 및 제2 프로세서 코어(120)는 코어스 그레인 어레이(130)를 시간적 공유(time sharing)하는 구성이 가능하다.
도 2는 도 1의 제1 프로세서 코어(110)를 나타낸 블록도이다.
도 2를 참조하면, 제1 프로세서 코어(110)는 제1 레지스터 파일(register file, RF)(210), 복수의 연산 유닛(functional unit, FU)들(220, 230, 240, 250)을 포함한다.
복수의 연산 유닛들(220, 230, 240, 250)은 제1 연산 유닛들을 구성한다.
제1 레지스터 파일(210)은 제1 연산 유닛들의 연산 결과를 저장한다.
제1 연산 유닛들을 구성하는 복수의 연산 유닛들(220, 230, 240, 250)은 제1 프로세서 코어(110)에서 수행되는 제1 인스트럭션 집합에 포함되는 인스트럭션들을 수행한다.
실시예에 따라, 제1 프로세서 코어(110)는 VLIW 프로세서 코어일 수 있다. 이 때, 제1 인스트럭션 집합에 포함되는 인스트럭션들이 복수의 연산 유닛들(220, 230, 240, 250) 각각에 할당되는 과정은 일반적인 VLIW 프로세서 코어에서의 인스트럭션 할당 과정에 따를 수 있다.
실시예에 따라, 제1 레지스터 파일(210)은 코어스 그레인 어레이(130)에서 수행된 제1 인스트럭션 집합 중 일부 인스트럭션의 최종 연산 결과를 더 저장할 수 있다.
제2 프로세서 코어(120)의 구성은 본 명세서 상에 도시되지 않았으나, 제1 프로세서 코어(110)의 구성과 유사하게 구현될 수 있다.
제2 프로세서 코어(120)는 제2 레지스터 파일 및 복수의 제2 연산 유닛들을 포함할 수 있다. 제2 레지스터 파일은 제2 연산 유닛들의 연산 결과를 저장한다.
실시예에 따라, 제2 프로세서 코어(120)는 VLIW 프로세서 코어일 수 있다. 이 때, 제2 인스트럭션 집합에 포함되는 인스트럭션들이 제2 프로세서 코어(120) 내의 제2 연산 유닛들 각각에 할당되는 과정은 일반적인 VLIW 프로세서 코어에서의 인스트럭션 할당 과정에 따를 수 있다.
실시예에 따라, 제2 레지스터 파일은 코어스 그레인 어레이(130)에서 수행된 제2 인스트럭션 집합 중 일부 인스트럭션의 최종 연산 결과를 더 저장할 수 있다.
도 3은 도 1의 코어스 그레인 어레이(130)를 도시하는 도면이다.
도 3을 참조하면, 코어스 그레인 어레이(130)는 복수의 제3 연산 유닛 들(310, 320, 330, 340, 350, 360, 370, 380)을 포함한다.
도 3에 도시된 바와 같이, 코어스 그레인 어레이(130) 내의 제3 연산 유닛들(310, 320, 330, 340, 350, 360, 370, 380)은 데이터 경로를 경유하여 서로 연결된다.
상기 데이터 경로를 경유하여, 연산 유닛 4(310), 연산 유닛 5(320), 연산 유닛 6(330) 또는 연산 유닛 7(340)의 연산 결과는 연산 유닛 8(350), 연산 유닛 9(360), 연산 유닛 10(370) 또는 연산 유닛 11(380)로 전달될 수 있다.
실시예에 따라, 코어스 그레인 어레이(130) 내의 제3 연산 유닛들(310, 320, 330, 340, 350, 360, 370, 380) 간의 연결에 관한 구성 정보(configuration information)는 코어스 그레인 어레이(130) 외부의 구성 메모리(configuration memory)에 저장될 수 있다.
실시예에 따라, 코어스 그레인 어레이(130)는 선입 선출(first in first out, FIFO) 메모리를 더 포함할 수 있다. 코어스 그레인 어레이(130) 내의 선입 선출 메모리는 제1 프로세서 코어(110) 및 제2 프로세서 코어(120) 간에 데이터 동기화(data synchronization)가 이루어지도록 한다.
실시예에 따라, 제1 프로세서 코어(110) 및 제2 프로세서 코어(120) 간의 데이터 동기화를 획득하기 위해, 코어스 그레인 어레이(130) 내의 선입 선출 메모리는 제1 프로세서 코어(110)로부터 전달된 데이터를 제1 지연 시간만큼 지연시켜 제2 프로세서 코어(120)로 전달하고, 제2 프로세서 코어(120)로부터 전달된 데이터를 제2 지연 시간만큼 지연시켜 제1 프로세서 코어(110)로 전달할 수 있다.
선입 선출 메모리에 의해 제1 프로세서 코어(110) 및 제2 프로세서 코어(120) 간에 데이터 동기화가 이루어지면, 프로세서(100)는 쓰레드 레벨 병렬성(thread-level parallelism)을 달성할 수 있다.
도 4는 본 발명의 다른 실시예에 따른 프로세서(400)를 나타낸 도면이다.
도 4를 참조하면, 프로세서(400)는 제1 프로세서 코어(410), 제2 프로세서 코어(420), 코어스 그레인 어레이(430), 제1 코어 간(inter-core) 레지스터(register)(440) 및 제2 코어 간(inter-core) 레지스터(450)를 포함한다.
제1 프로세서 코어(410)는 제1 레지스터 파일 및 복수의 제1 연산 유닛들을 포함한다. 복수의 제1 연산 유닛들은 연산 유닛 0 내지 연산 유닛 3으로 구성되며, 복수의 제1 연산 유닛들 각각은 제1 레지스터 파일과 연결된다. 복수의 제1 연산 유닛들 각각이 수행한 인스트럭션의 결과 값은 제1 레지스터 파일로 전달되어, 제1 레지스터 파일에 저장된다.
제2 프로세서 코어(420)는 제2 레지스터 파일 및 복수의 제2 연산 유닛들을 포함한다. 복수의 제2 연산 유닛들은 연산 유닛 12 내지 연산 유닛 15로 구성되며, 복수의 제2 연산 유닛들 각각은 제2 레지스터 파일과 연결된다. 복수의 제2 연산 유닛들 각각이 수행한 인스트럭션의 결과 값은 제2 레지스터 파일로 전달되어, 제2 레지스터 파일에 저장된다.
제1 프로세서 코어(410)에서 수행될 제1 인스트럭션 집합이 인스트럭션 0000 내지 1111로 구성되고, 이 중 인스트럭션 0100 내지 0111이 코어스 그레인 어레이(430)에서 수행되는 경우를 가정한다.
인스트럭션 0000은 연산 유닛 0, 인스트럭션 0001은 연산 유닛 1, 인스트럭션 0010은 연산 유닛 2, 인스트럭션 0011은 연산 유닛 3에서 수행된다.
인스트럭션 0000 내지 0011이 수행된 후, 다음에 수행될 인스트럭션 0100 내지 0111이 코어스 그레인 어레이(430)에서 수행되어야 하기 때문에, 인스트럭션 0000 내지 0011의 수행 결과 값은 제1 레지스터 파일로 전달되지 않고, 코어스 그레인 어레이(430)로 전달된다. 다시 말하면, 연산 유닛 0은 인스트럭션 0000을 수행한 결과 값을 제1 레지스터 파일로 전달하지 않고, 코어스 그레인 어레이(430)로 전달한다. 연산 유닛 1 내지 연산 유닛 3도 각각 인스트럭션 0001 내지 0011을 수행한 결과 값을 제1 레지스터 파일로 전달하지 않고, 코어스 그레인 어레이(430)로 전달한다.
코어스 그레인 어레이(430)에서 수행된 인스트럭션 0100 내지 0111의 결과 값은 제1 프로세서 코어(410) 내의 제1 레지스터 파일로 전달되어, 제1 레지스터 파일에 저장된다. 제1 레지스터 파일에 저장된 인스트럭션 0100 내지 0111의 결과 값은, 제1 프로세서 코어(410)가 인스트럭션 1000 내지 1111을 수행하는 과정 중에 이용된다.
제1 코어 간 레지스터(inter-core register)(440)는 제1 프로세서 코어(410)로부터 전달된 데이터를 임시 저장하고, 임시 저장된 데이터를 제2 프로세서 코어(420)로 전달한다.
제2 코어 간 레지스터(450)는 제2 프로세서 코어(420)로부터 전달된 데이터를 임시 저장하고, 임시 저장된 데이터를 제1 프로세서 코어(410)로 전달한다.
제1 프로세서 코어(410)에서 수행된 인스트럭션의 결과 값이 제2 프로세서 코어(420)의 인스트럭션 수행 과정 중에 이용되는 경우가 있다. 반대로, 제2 프로세서 코어(420)에서 수행된 인스트럭션의 결과 값이 제1 프로세서 코어(410)의 인스트럭션 수행 과정 중에 이용되는 경우가 있다. 제1 코어 간 레지스터(440) 및 제2 코어 간 레지스터(450)는 제1 프로세서 코어(410) 및 제2 프로세서 코어(420) 상호간에 데이터를 전달한다.
도 5는 본 발명의 또 다른 실시예에 따른 프로세서가 포함하는 제1 프로세서 코어(500)를 도시하는 도면이다.
도 5를 참조하면, 제1 프로세서 코어(500)는 레지스터 파일(register file, RF)(510), 연산 유닛 0(520), 연산 유닛 1(530), 연산 유닛 2(540), 연산 유닛 3(550)을 포함한다.
레지스터 파일(510)은 연산 유닛 0 내지 3(520 내지 550)에서 수행된 인스트럭션의 결과 값을 저장한다.
제1 프로세서 코어(500)는 다중화기(multiplexer, MUX)들(521, 531, 541, 551) 및 레지스터(register)(522, 532, 542, 552)를 포함한다.
다중화기(521)는 제2 프로세서 코어 또는 코어스 그레인 어레이로부터 전달된 데이터 및 레지스터 파일(510)에 저장된 데이터 중 어느 하나를 선택하고, 선택된 데이터를 레지스터(522)에 전달한다.
레지스터(522)는 전달된 데이터를 임시 저장하고, 저장된 데이터를 연산 유닛 0(520)으로 전달한다.
다중화기(531)는 제2 프로세서 코어 또는 코어스 그레인 어레이로부터 전달된 데이터 및 레지스터 파일(510)에 저장된 데이터 중 어느 하나를 선택하고, 선택된 데이터를 레지스터(532)에 전달한다.
레지스터(532)는 전달된 데이터를 임시 저장하고, 저장된 데이터를 연산 유닛 1(530)으로 전달한다.
도 6은 본 발명의 또 다른 실시예에 따른 프로세서(600)를 도시하는 도면이다.
도 6을 참조하면, 프로세서(600)는 제1 프로세서 코어(610), 제2 프로세서 코어(620), 코어스 그레인 어레이(630), 구성 메모리(configuration memory)(640) 및 연산 유닛 제어부(functional unit controller)(650)를 포함한다.
제1 프로세서 코어(610)는 제1 인스트럭션 집합을 수행하는 복수의 제1 연산 유닛들을 포함한다. 제2 프로세서 코어(620)는 제2 인스트럭션 집합을 수행하는 복수의 제2 연산 유닛들을 포함한다.
코어스 그레인 어레이(630)는 제1 인스트럭션 집합 중 일부 또는 제2 인스트럭션 집합 중 일부의 인스트럭션을 제1 프로세서 코어(610) 또는 제2 프로세서 코어(620)에 대신하여 수행한다.
코어스 그레인 어레이(630)는 인스트럭션을 수행할 복수의 제3 연산 유닛들을 포함한다.
구성 메모리(configuration memory)(640)는 코어스 그레인 어레이(630) 내의 제3 연산 유닛들 간의 연결에 관한 구성 정보(configuration information)를 저 장한다.
구성 메모리(640)는 코어스 그레인 어레이(630) 내의 제3 연산 유닛들이 제1 인스트럭션 집합 또는 제2 인스트럭션 집합의 인스트럭션 중 일부를 수행하기에 최적화된 구성 정보를 저장한다.
연산 유닛 제어부(650)는 제1 인스트럭션 집합 또는 제2 인스트럭션 집합의 인스트럭션 중 일부를 코어스 그레인 어레이(630) 내의 제3 연산 유닛들에 할당한다.
연산 유닛 제어부(650)는 제1 프로세서 코어(610) 내의 제1 연산 유닛들 또는 제2 프로세서 코어(620) 내의 제2 연산 유닛들의 사용량 정보(usage information)에 기초하여 코어스 그레인 어레이(630) 내의 제3 연산 유닛들의 할당을 결정한다.
연산 유닛 제어부(650)는 제1 프로세서 코어(610)로부터 제1 연산 유닛들의 사용량 정보를 수신한다.
연산 유닛 제어부(650)는 제2 프로세서 코어(620)로부터 제2 연산 유닛들의 사용량 정보를 수신한다.
연산 유닛 제어부(650)는 구성 메모리(640)에 저당된 코어스 그레인 어레이(630)의 구성 정보(configuration information)를 참고하여 코어스 그레인 어레이(630) 내의 제3 연산 유닛들의 할당을 결정한다.
실시예에 따라, 프로세서(600)는 코어스 그레인 어레이(630)가 수행한 인스트럭션의 연산 결과 값을 저장하는 임시 메모리를 더 포함할 수 있다.
도 7은 본 발명의 일 실시예에 따른 프로세서(700)의 일 동작 상태를 도시하는 도면이다.
도 7을 참조하면, 프로세서(700)는 제1 프로세서 코어(710), 제2 프로세서 코어(720) 및 코어스 그레인 어레이(730)를 포함한다. 제1 프로세서 코어(710), 제2 프로세서 코어(720) 및 코어스 그레인 어레이(730)의 동작은 도 1을 참조하여 설명한 바와 같다.
도 7에 도시된 동작 상태는 제1 프로세서 코어(710)에서 수행되는 제1 인스트럭션 집합의 인스트럭션 중 일부를 코어스 그레인 어레이(730)에서 제1 프로세서 코어(710)에 대신하여 수행하는 동작 상태이다.
점선 블록(740) 내에 포함된 제1 프로세서 코어(710) 및 코어스 그레인 어레이(730)는 제1 인스트럭션 집합의 인스트럭션을 상호 협력하여 수행하고 있음이 도시되고 있다.
도 8은 본 발명의 일 실시예에 따른 프로세서(800)의 코어스 그레인 어레이 공유 동작을 도시하는 도면이다.
도 8을 참조하면, 프로세서(800)는 제1 프로세서 코어(810), 제2 프로세서 코어(820) 및 코어스 그레인 어레이(830)를 포함한다. 제1 프로세서 코어(810), 제2 프로세서 코어(820) 및 코어스 그레인 어레이(830)의 동작은 도 1을 참조하여 설명한 바와 같다.
점선 블록(840) 내에 포함된 제1 프로세서 코어(810) 및 코어스 그레인 어레이(830)는 제1 시간 구간 동안 상호 협력하여 제1 인스트럭션 집합의 인스트럭션 을 수행한다.
점선 블록(850) 내에 포함된 제2 프로세서 코어(820) 및 코어스 그레인 어레이(830)는 제2 시간 구간 동안 상호 협력하여 제2 인스트럭션 집합의 인스트럭션을 수행한다.
실시예에 따라, 제1 프로세서 코어(810) 및 제2 프로세서 코어(820)는 각각 유니 클러스터(uni-clustered) VLIW 프로세서 코어일 수 있다. 만일 제1 프로세서 코어(810) 및 제2 프로세서 코어(820) 각각이 N개씩의 연산 유닛들을 포함한다면, 프로세서(800)는 듀얼 N 이슈 VLIW 프로세서 코어를 이용하는 재구성 프로세서(reconfigurable processor with a dual N-issue VLIW processor core)로 동작할 수 있다.
실시예에 따라, 제1 프로세서 코어(810) 및 제2 프로세서 코어(820)는, 하나의 클러스터로서 인스트럭션을 수행할 수 있다. 만일 제1 프로세서 코어(810) 및 제2 프로세서 코어(820) 각각이 N개씩의 연산 유닛들을 포함한다면, 프로세서(800)는 2N 이슈 VLIW 프로세서 코어를 이용하는 재구성 프로세서(reconfigurable processor with a 2N-issue VLIW processor core)로 동작할 수 있다.
이 때, 제1 인스트럭션 집합 및 제2 인스트럭션 집합은 각각 하나의 인스트럭션 집합의 일부일 수 있다. 프로세서(800)는 상기 하나의 인스트럭션 집합을 제1 인스트럭션 집합 및 제2 인스트럭션 집합으로 분할하고, 제1 인스트럭션 집합은 제1 프로세서 코어(810)에, 제2 인스트럭션 집합은 제2 프로세서 코어(820)에 할당할 수 있다.
도 9는 본 발명의 일 실시예에 따른 프로세서(900)의 코어스 그레인 어레이 공유 동작의 다른 실시예를 도시하는 도면이다.
도 9를 참조하면, 프로세서(900)는 제1 프로세서 코어(910), 제2 프로세서 코어(920) 및 코어스 그레인 어레이(930)를 포함한다. 제1 프로세서 코어(910), 제2 프로세서 코어(920) 및 코어스 그레인 어레이(930)의 동작은 도 1을 참조하여 설명한 바와 같다.
점선 블록(940) 내에 포함된 코어스 그레인 어레이(930) 내의 연산 유닛 0, 연산 유닛 1, 연산 유닛 2, 연산 유닛 3은 배타적으로 제1 인스트럭션 집합을 수행하도록 할당된다.
점선 블록(940) 내에 포함된 제1 프로세서 코어(910) 및 코어스 그레인 어레이(930)의 연산 유닛 0 내지 3은 상호 협력하여 제1 인스트럭션 집합의 인스트럭션을 수행한다.
점선 블록(950) 내에 포함된 코어스 그레인 어레이(930) 내의 연산 유닛 4, 연산 유닛 5, 연산 유닛 6, 연산 유닛 7은 배타적으로 제2 인스트럭션 집합을 수행하도록 할당된다.
점선 블록(950) 내에 포함된 제2 프로세서 코어(920) 및 코어스 그레인 어레이(930)의 연산 유닛 4 내지 7은 상호 협력하여 제2 인스트럭션 집합의 인스트럭션을 수행한다.
동일한 시간 구간 동안, 제1 인스트럭션 집합 및 제2 인스트럭션 집합은 코어스 그레인 어레이(930)에서 수행된다. 이 때, 코어스 그레인 어레이(930) 내의 연산 유닛 0 내지 3은 제1 인스트럭션 집합을 위해 배타적으로 할당된다. 코어스 그레인 어레이(930) 내의 연산 유닛 4 내지 7은 제2 인스트럭션 집합을 위해 배타적으로 할당된다.
도 10은 본 발명의 또 다른 실시예에 따른 프로세서(1000)를 도시하는 도면이다.
도 10을 참조하면, 프로세서(1000)는 제1 프로세서 코어(1010), 제2 프로세서 코어(1020), 제3 프로세서 코어(1030), 제4 프로세서 코어(1040) 및 코어스 그레인 어레이(1050)를 포함한다.
제1 프로세서 코어(1010)는 연산 유닛 0 내지 3 및 제1 레지스터 파일을 포함한다. 연산 유닛 0 내지 3은 제1 인스트럭션 집합을 수행한다. 제1 레지스터 파일은 연산 유닛 0 내지 3이 인스트럭션을 수행한 결과 값을 저장한다.
제2 프로세서 코어(1020)는 연산 유닛 12 내지 15 및 제2 레지스터 파일을 포함한다. 연산 유닛 12 내지 15는 제2 인스트럭션 집합을 수행한다. 제2 레지스터 파일은 연산 유닛 12 내지 15가 인스트럭션을 수행한 결과 값을 저장한다.
제3 프로세서 코어(1030)는 연산 유닛 16 내지 19 및 제3 레지스터 파일을 포함한다. 연산 유닛 16 내지 19는 제3 인스트럭션 집합을 수행한다. 제3 레지스터 파일은 연산 유닛 16 내지 19가 인스트럭션을 수행한 결과 값을 저장한다.
제4 프로세서 코어(1040)는 연산 유닛 20 내지 23 및 제4 레지스터 파일을 포함한다. 연산 유닛 20 내지 23은 제4 인스트럭션 집합을 수행한다. 제4 레지스 터 파일은 연산 유닛 20 내지 23가 인스트럭션을 수행한 결과 값을 저장한다.
코어스 그레인 어레이(1050)는 연산 유닛 4 내지 11을 포함한다. 코어스 그레인 어레이(1050)는 제1 프로세서 코어(1010)에 대신하여 제1 인스트럭션 집합 중 일부 인스트럭션을 수행할 수 있다. 코어스 그레인 어레이(1050)는 제2 프로세서 코어(1020) 또는 제3 프로세서 코어(1030)에 대신하여 제2 인스트럭션 집합 또는 제3 인스트럭션 집합 중 일부 인스트럭션을 수행할 수 있다. 코어스 그레인 어레이(1050)는 제4 프로세서 코어(1040)에 대신하여 제4 인스트럭션 집합 중 일부 인스트럭션을 수행할 수 있다.
코어스 그레인 어레이(1050)는 동일한 시간 구간 동안, 제1 인스트럭션 집합 및 제4 인스트럭션 집합 중 일부 인스트럭션을 제1 프로세서 코어(1010) 및 제4 프로세서 코어(1040)에 대신하여 수행할 수도 있다.
실시예에 따라, 제1 프로세서 코어(1010) 및 제2 프로세서 코어(1020)는 하나의 클러스터를 형성하여, 인스트럭션을 수행할 수 있다. 이 때, 제1 프로세서 코어(1010) 및 제2 프로세서 코어(1020)는 하나의 8 이슈 VLIW 프로세서 코어(8-issue VLIW processor core)처럼 동작할 수 있다.
실시예에 따라, 제3 프로세서 코어(1030) 및 제4 프로세서 코어(1040)는 각각 하나의 유니 클러스터 프로세서 코어(uni-clustered processor core)로 동작할 수 있다.
도 11은 본 발명의 또 다른 실시예에 따른 프로세서(1100)를 도시하는 도면이다.
도 11을 참조하면, 프로세서(1100)는 제1 프로세서 코어(1110), 제2 프로세서 코어(1120) 및 코어스 그레인 어레이(1130)를 포함한다.
제1 프로세서 코어(1110)는 연산 유닛 A1(1112), 연산 유닛 A2, ...., 연산 유닛 AN(1113) 및 제1 레지스터 파일(1111)을 포함한다. 연산 유닛 A1(1112), 연산 유닛 A2, ...., 연산 유닛 AN(1113)은 제1 인스트럭션 집합을 수행한다. 제1 레지스터 파일(1111)은 연산 유닛 A1(1112), 연산 유닛 A2, ...., 연산 유닛 AN(1113)이 인스트럭션을 수행한 결과 값을 저장한다.
제2 프로세서 코어(1120)는 연산 유닛 B1(1122), 연산 유닛 B2, ...., 연산 유닛 BN(1123) 및 제2 레지스터 파일(1121)을 포함한다. 연산 유닛 B1(1122), 연산 유닛 B2, ...., 연산 유닛 BN(1123)은 제2 인스트럭션 집합을 수행한다. 제2 레지스터 파일(1121)은 연산 유닛 B1(1122), 연산 유닛 B2, ...., 연산 유닛 BN(1123)이 인스트럭션을 수행한 결과 값을 저장한다.
코어스 그레인 어레이(1130)는 M x N 어레이의 연산 유닛들을 포함한다. 코어스 그레인 어레이(1130)는 제1 프로세서 코어(1110) 또는 제2 프로세서 코어(1120)에 대신하여 제1 인스트럭션 집합 또는 제2 인스트럭션 집합 중 일부 인스트럭션을 수행할 수 있다.
코어스 그레인 어레이(1130) 내의 M x N 어레이의 연산 유닛들은 다음과 같이 구성된다.
연산 유닛 11(1131), 연산 유닛 12, ...., 연산 유닛 1N(1132)이 M x N 어레이의 첫번째 행을 구성한다.
연산 유닛 21, 연산 유닛 22, ...., 연산 유닛 2N이 M x N 어레이의 두번째 행을 구성한다.
연산 유닛 M1(1133), 연산 유닛 M2, ...., 연산 유닛 MN(1134)이 M x N 어레이의 M번째 행을 구성한다.
도 12는 본 발명의 일 실시예에 따른 코어스 그레인 어레이 공유 방법을 도시하는 동작 흐름도이다.
도 12를 참조하면, 코어스 그레인 어레이 공유 방법은 제1 프로세서 코어에서 수행될 제1 인스트럭션 집합이 설정 조건을 만족하는지 판단한다(S1210).
코어스 그레인 어레이 공유 방법은 단계(S1210)의 판단 결과에 따라 제1 판단 신호를 생성한다(S1230).
코어스 그레인 어레이 공유 방법은 제2 프로세서 코어에서 수행될 제2 인스트럭션 집합이 설정 조건을 만족하는지 판단한다(S1220).
코어스 그레인 어레이 공유 방법은 단계(S1220)의 판단 결과에 따라 제2 판단 신호를 생성한다(S1240).
코어스 그레인 어레이 공유 방법은 제1 판단 신호 및 제2 판단 신호에 기초하여 제1 인스트럭션 집합 또는 제2 인스트럭션 집합 중 적어도 하나의 집합의 인스트럭션 중 일부를 코어스 그레인 어레이로 전달한다(S1250).
실시예에 따라, 코어스 그레인 어레이 공유 방법은 제1 프로세서 코어로부터 전달된 제1 인스트럭션 집합의 결과 데이터를 제1 지연 시간만큼 지연시켜 상기 제2 프로세서 코어로 전달할 수 있다. 이 때, 코어스 그레인 어레이 공유 방법은 제2 프로세서 코어로부터 전달된 제2 인스트럭션 집합의 결과 데이터를 제2 지연 시간만큼 지연시켜 제1 프로세서 코어로 전달할 수 있다.
실시예에 따라, 코어스 그레인 어레이 공유 방법은 코어스 그레인 어레이가 수행한 연산의 결과 값을 임시로 저장할 수 있다.
실시예에 따라, 코어스 그레인 어레이 공유 방법은 하나의 인스트럭션 집합을 분할하여 상기 제1 인스트럭션 집합 및 상기 제2 인스트럭션 집합을 생성할 수 있다.
실시예에 따라, 코어스 그레인 어레이 공유 방법은 코어스 그레인 어레이에서 수행된 제1 인스트럭션 집합의 최종 연산 결과를 제1 프로세서 코어 내의 제1 레지스터 파일에 저장할 수 있다. 이 때, 코어스 그레인 어레이 공유 방법은 코어스 그레인 어레이에서 수행된 제2 인스트럭션 집합의 최종 연산 결과를 제2 프로세서 코어 내의 제2 레지스터 파일에 저장할 수 있다.
도 13은 도 12의 단계(S1250)를 상세하게 도시하는 동작 흐름도이다.
도 13을 참조하면, 코어스 그레인 어레이 공유 방법은 구성 메모리로부터 상기 코어스 그레인 어레이의 구성 정보를 수신한다(S1310).
코어스 그레인 어레이 공유 방법은 제1 프로세서 코어로부터 상기 제1 프로세서 코어 내의 제1 연산 유닛들의 사용량 정보를 수신한다(S1320).
코어스 그레인 어레이 공유 방법은 제2 프로세서 코어로부터 상기 제2 프로세서 코어 내의 제2 연산 유닛들의 사용량 정보를 수신한다(S1330).
코어스 그레인 어레이 공유 방법은 코어스 그레인 어레이로 전달할 인스트 럭션을 결정한다(S1340).
단계(S1340)는 구성 메모리로부터 수신한 구성 정보에 기초하여 제1 인스트럭션 집합 또는 제2 인스트럭션 집합 중 어느 집합의 인스트럭션을 상기 코어스 그레인 어레이로 전달할지 결정한다.
단계(S1340)는 제1 연산 유닛들의 사용량 정보 및 제2 연산 유닛들의 사용량 정보에 기초하여 제1 인스트럭션 집합 또는 제2 인스트럭션 집합 중 어느 집합의 인스트럭션을 상기 코어스 그레인 어레이로 전달할지 결정한다.
코어스 그레인 어레이 공유 방법은 결정된 인스트럭션을 코어스 그레인 어레이로 전달한다(S1350).
실시예에 따라, 코어스 그레인 어레이 공유 방법은 코어스 그레인 어레이 내의 제3 연산 유닛들의 일부에는 배타적으로 제1 인스트럭션 집합이 수행되도록 전달할 수 있다.
본 발명에 따른 코어스 그레인 어레이 공유 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 본 발명은 비록 한정된 실시예와 도면에 의해 설명되었으나, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상의 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다.
그러므로, 본 발명의 범위는 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.
도 1은 본 발명의 일 실시예에 따른 프로세서(100)를 나타낸 블록도이다.
도 2는 도 1의 제1 프로세서 코어(110)를 나타낸 블록도이다.
도 3은 도 1의 코어스 그레인 어레이(130)를 도시하는 도면이다.
도 4는 본 발명의 다른 실시예에 따른 프로세서(400)를 나타낸 도면이다.
도 5는 본 발명의 또 다른 실시예에 따른 프로세서가 포함하는 제1 프로세서 코어(500)를 도시하는 도면이다.
도 6은 본 발명의 또 다른 실시예에 따른 프로세서(600)를 도시하는 도면이다.
도 7은 본 발명의 일 실시예에 따른 프로세서(700)의 일 동작 상태를 도시하는 도면이다.
도 8은 본 발명의 일 실시예에 따른 프로세서(800)의 코어스 그레인 어레이 공유 동작을 도시하는 도면이다.
도 9는 본 발명의 일 실시예에 따른 프로세서(900)의 코어스 그레인 어레이 공유 동작의 다른 실시예를 도시하는 도면이다.
도 10은 본 발명의 또 다른 실시예에 따른 프로세서(1000)를 도시하는 도면이다.
도 11은 본 발명의 또 다른 실시예에 따른 프로세서(1100)를 도시하는 도면이다.
도 12는 본 발명의 일 실시예에 따른 코어스 그레인 어레이 공유 방법을 도 시하는 동작 흐름도이다.
도 13은 도 12의 단계(S1250)를 상세하게 도시하는 동작 흐름도이다.
<도면의 주요 부분에 대한 부호의 설명>
110: 제1 프로세서 코어 120: 제2 프로세서 코어
130: 코어스 그레인 어레이

Claims (28)

  1. 제1 인스트럭션 집합의 인스트럭션의 일부를 수행하는 복수의 제1 연산 유닛들을 포함하는 제1 프로세서 코어;
    제2 인스트럭션 집합의 인스트럭션의 일부를 수행하는 복수의 제2 연산 유닛들을 포함하는 제2 프로세서 코어; 및
    상기 제1 인스트럭션 집합 또는 상기 제2 인스트럭션 집합 중 적어도 하나의 집합의 인스트럭션 중 다른 일부를 상기 제1 프로세서 코어 또는 상기 제2 프로세서 코어에 대신하여 수행하는 복수의 제3 연산 유닛들을 포함하는 코어스 그레인 어레이
    를 포함하고,
    상기 복수의 제3 연산 유닛들은 상기 제1 인스트럭션 집합 또는 상기 제2 인스트럭션 집합 중 적어도 하나의 집합의 인스트럭션 중 상기 다른 일부를 상기 제1 인스트럭션 집합 또는 상기 제2 인스트럭션 집합 중 적어도 하나의 인스트럭션의 상기 일부를 실행하는 상기 복수의 제1 연산 유닛들 또는 상기 복수의 제2 연산 유닛들 중 적어도 하나와 병렬로 수행하고,
    상기 제1 인스트럭션 집합의 인스트럭션은 적어도 하나의 제3 연산 유닛 및 적어도 하나의 제1 연산 유닛에 의해 수행되는 것이 가능하고,
    상기 제2 인스트럭션 집합의 인스트럭션은 적어도 하나의 제3 연산 유닛 및 적어도 하나의 제2 연산 유닛에 의해 수행되는 것이 가능한 프로세서.
  2. 제1항에 있어서,
    상기 코어스 그레인 어레이는 선입 선출 메모리를 더 포함하고,
    상기 선입 선출 메모리는 상기 제1 프로세서 코어 및 상기 제2 프로세서 코어 간에 데이터 동기화가 이루어지도록 하는 것을 특징으로 하는 프로세서.
  3. 제2항에 있어서,
    상기 선입 선출 메모리는
    상기 제1 프로세서 코어로부터 전달된 데이터를 제1 지연 시간만큼 지연시 켜 상기 제2 프로세서 코어로 전달하고, 상기 제2 프로세서 코어로부터 전달된 데이터를 제2 지연 시간만큼 지연시켜 상기 제1 프로세서 코어로 전달하는 것을 특징으로 하는 프로세서.
  4. 제1항에 있어서,
    상기 코어스 그레인 어레이 내의 상기 제3 연산 유닛들 간의 연결에 관한 구성 정보를 저장하는 구성 메모리를 더 포함하는 것을 특징으로 하는 프로세서.
  5. 제4항에 있어서,
    상기 구성 메모리는
    상기 제1 인스트럭션 집합 또는 상기 제2 인스트럭션 집합의 인스트럭션 중 상기 다른 일부가 상기 코어스 그레인 어레이에서 수행될 수 있도록 하는 구성 정보를 저장하는 것을 특징으로 하는 프로세서.
  6. 제1항에 있어서,
    상기 제1 인스트럭션 집합 또는 상기 제2 인스트럭션 집합의 인스트럭션 중 상기 다른 일부를 상기 제3 연산 유닛들에 할당하는 연산 유닛 제어부를 더 포함하는 것을 특징으로 하는 프로세서.
  7. 제6항에 있어서,
    상기 연산 유닛 제어부는
    상기 제1 연산 유닛들 또는 상기 제2 연산 유닛들의 사용량 정보에 기초하여 상기 제3 연산 유닛들의 할당을 결정하는 것을 특징으로 하는 프로세서.
  8. 제7항에 있어서,
    상기 연산 유닛 제어부는
    상기 제1 프로세서로부터 상기 제1 연산 유닛들의 사용량 정보를 수신하고, 상기 제2 프로세서로부터 상기 제2 연산 유닛들의 사용량 정보를 수신하는 것을 특징으로 하는 프로세서.
  9. 제6항에 있어서,
    상기 코어스 그레인 어레이 내의 상기 제3 연산 유닛들 간의 연결에 관한 구성 정보를 저장하는 구성 메모리를 더 포함하고,
    상기 연산 유닛 제어부는
    상기 구성 메모리에 저장된 상기 구성 정보를 참고하여 상기 제3 연산 유닛들의 할당을 결정하는 것을 특징으로 하는 프로세서.
  10. 제1항에 있어서,
    상기 코어스 그레인 어레이가 수행한 연산의 결과 값을 저장하는 임시 메모리를 더 포함하는 것을 특징으로 하는 프로세서.
  11. 제1항에 있어서,
    상기 제3 연산 유닛들의 일부는 배타적으로 상기 제1 인스트럭션 집합을 수행하도록 할당되는 것을 특징으로 하는 프로세서.
  12. 제1항에 있어서,
    상기 제1 프로세서 코어 및 상기 제2 프로세서 코어는, 하나의 클러스터로서 인스트럭션을 수행하는 것을 특징으로 하는 프로세서.
  13. 제12항에 있어서,
    상기 제1 인스트럭션 집합 및 상기 제2 인스트럭션 집합은 각각 하나의 인스트럭션 집합의 일부인 것을 특징으로 하는 프로세서.
  14. 제1항에 있어서,
    상기 제1 프로세서 코어 또는 상기 제2 프로세서 코어는 VLIW(very long instruction word; 매우 긴 명령어) 프로세서 코어인 것을 특징으로 하는 프로세서.
  15. 제1항에 있어서,
    상기 제1 프로세서 코어는 상기 제1 연산 유닛들의 연산 결과를 저장하는 제1 레지스터 파일을 포함하고,
    상기 제2 프로세서 코어는 상기 제2 연산 유닛들의 연산 결과를 저장하는 제2 레지스터 파일을 포함하는 것을 특징으로 하는 프로세서.
  16. 제15항에 있어서,
    상기 제1 레지스터 파일은 상기 코어스 그레인 어레이에서 수행된 상기 제1 인스트럭션 집합의 인스트럭션의 최종 연산 결과를 더 저장하고, 상기 제2 레지스터 파일은 상기 코어스 그레인 어레이에서 수행된 상기 제2 인스트럭션 집합의 인스트럭션의 최종 연산 결과를 더 저장하는 것을 특징으로 하는 프로세서.
  17. 복수의 제3 연산 유닛들을 포함하는 코어스 그레인 어레이 공유 방법에 있어서,
    제1 프로세서 코어에서 수행될 제1 인스트럭션 집합의 인스트럭션들의 일부가 설정 조건을 만족하는지 판단하여 제1 판단 신호를 생성하는 단계;
    제2 프로세서 코어에서 수행될 제2 인스트럭션 집합의 인스트럭션들의 일부가 설정 조건을 만족하는지 판단하여 제2 판단 신호를 생성하는 단계; 및
    상기 제1 판단 신호 및 상기 제2 판단 신호에 기초하여 상기 제1 인스트럭션 집합 또는 상기 제2 인스트럭션 집합 중 적어도 하나의 집합의 인스트럭션 중 다른 일부를 코어스 그레인 어레이로 전달하는 단계
    를 포함하고,
    상기 복수의 제3 연산 유닛들은 상기 제1 인스트럭션 집합 또는 상기 제2 인스트럭션 집합 중 적어도 하나의 집합의 인스트럭션 중 상기 다른 일부를 상기 제1 인스트럭션 집합 또는 상기 제2 인스트럭션 집합 중 적어도 하나의 인스트럭션의 상기 일부를 실행하는 복수의 제1 연산 유닛들 또는 복수의 제2 연산 유닛들 중 적어도 하나와 병렬로 수행하고,
    상기 제1 인스트럭션 집합의 인스트럭션은 적어도 하나의 제3 연산 유닛 및 적어도 하나의 제1 유닛에 의해 수행되는 것이 가능하고,
    상기 제2 인스트럭션 집합의 인스트럭션은 적어도 하나의 제3 연산 유닛 및 적어도 하나의 제2 유닛에 의해 수행되는 것이 가능한 코어스 그레인 어레이 공유 방법.
  18. 제17항에 있어서,
    상기 제1 프로세서 코어로부터 전달된 상기 제1 인스트럭션 집합의 결과 데이터를 제1 지연 시간만큼 지연시켜 상기 제2 프로세서 코어로 전달하는 단계; 및
    상기 제2 프로세서 코어로부터 전달된 상기 제2 인스트럭션 집합의 결과 데이터를 제2 지연 시간만큼 지연시켜 상기 제1 프로세서 코어로 전달하는 단계
    를 더 포함하는 것을 특징으로 하는 코어스 그레인 어레이 공유 방법.
  19. 제17항에 있어서,
    상기 인스트럭션 중 상기 다른 일부를 코어스 그레인 어레이로 전달하는 단계는
    구성 메모리로부터 상기 코어스 그레인 어레이의 구성 정보를 수신하여 상기 제1 인스트럭션 집합 또는 상기 제2 인스트럭션 집합 중 어느 집합의 인스트럭션을 상기 코어스 그레인 어레이로 전달할지 결정하는 단계
    를 포함하는 것을 특징으로 하는 코어스 그레인 어레이 공유 방법.
  20. 제19항에 있어서,
    상기 인스트럭션 중 상기 다른 일부를 코어스 그레인 어레이로 전달하는 단계는
    상기 결정된 인스트럭션을 상기 코어스 그레인 어레이로 전달하는 단계
    를 더 포함하는 것을 특징으로 하는 코어스 그레인 어레이 공유 방법.
  21. 제17항에 있어서,
    상기 인스트럭션 중 상기 다른 일부를 코어스 그레인 어레이로 전달하는 단계는
    상기 제1 프로세서 코어로부터 상기 제1 프로세서 코어 내의 제1 연산 유닛들의 사용량 정보를 수신하는 단계;
    상기 제2 프로세서 코어로부터 상기 제2 프로세서 코어 내의 제2 연산 유닛들의 사용량 정보를 수신하는 단계;
    상기 제1 연산 유닛들의 사용량 정보 및 상기 제2 연산 유닛들의 사용량 정보에 기초하여 상기 제1 인스트럭션 집합 또는 상기 제2 인스트럭션 집합 중 어느 집합의 인스트럭션을 상기 코어스 그레인 어레이로 전달할지 결정하는 단계
    를 포함하는 것을 특징으로 하는 코어스 그레인 어레이 공유 방법.
  22. 제21항에 있어서,
    상기 인스트럭션 중 상기 다른 일부를 코어스 그레인 어레이로 전달하는 단계는
    상기 결정된 인스트럭션을 상기 코어스 그레인 어레이로 전달하는 단계
    를 포함하는 것을 특징으로 하는 코어스 그레인 어레이 공유 방법.
  23. 제17항에 있어서,
    상기 코어스 그레인 어레이가 수행한 연산의 결과 값을 임시로 저장하는 단계
    를 더 포함하는 코어스 그레인 어레이 공유 방법.
  24. 제17항에 있어서,
    상기 인스트럭션 중 상기 다른 일부를 코어스 그레인 어레이로 전달하는 단계는
    상기 코어스 그레인 어레이 내의 제3 연산 유닛들의 일부에는 배타적으로 상기 제1 인스트럭션 집합이 수행되도록 전달하는 것을 특징으로 하는 코어스 그레인 어레이 공유 방법.
  25. 제17항에 있어서,
    하나의 인스트럭션 집합을 분할하여 상기 제1 인스트럭션 집합 및 상기 제2 인스트럭션 집합을 생성하는 단계
    를 더 포함하는 것을 특징으로 하는 코어스 그레인 어레이 공유 방법.
  26. 제17항에 있어서,
    상기 코어스 그레인 어레이에서 수행된 상기 제1 인스트럭션 집합의 최종 연산 결과를 상기 제1 프로세서 코어 내의 제1 레지스터 파일에 저장하는 단계; 및
    상기 코어스 그레인 어레이에서 수행된 상기 제2 인스트럭션 집합의 최종 연산 결과를 상기 제2 프로세서 코어 내의 제2 레지스터 파일에 저장하는 단계
    를 더 포함하는 것을 특징으로 하는 코어스 그레인 어레이 공유 방법.
  27. 제17항 내지 제26항 중 어느 한 항의 방법을 수행하기 위한 프로그램이 기록되어 있는 것을 특징으로 하는 컴퓨터에서 판독 가능한 기록 매체.
  28. 제1 인스트럭션 집합의 인스트럭션의 일부를 수행하는 복수의 제1 연산 유닛들을 포함하는 제1 프로세서 코어;
    제2 인스트럭션 집합의 인스트럭션의 일부를 수행하는 복수의 제2 연산 유닛들을 포함하는 제2 프로세서 코어;
    상기 제1 인스트럭션 집합 또는 상기 제2 인스트럭션 집합 중 적어도 하나의 집합의 인스트럭션들의 다른 일부를 상기 제1 프로세서 코어 또는 상기 제2 프로세서 코어에 대신하여 수행하는 복수의 제3 연산 유닛들을 포함하는 코어스 그레인 어레이; 및
    상기 제1 연산 유닛들 또는 상기 제2 연산 유닛들 중 적어도 하나의 사용량 정보에 기초하여 상기 제1 인스트럭션 집합 및 상기 제2 인스트럭션 집합의 인스트럭션을 상기 코어스 그레인 어레이의 상기 복수의 제3 연산 유닛들에 할당하는 것을 결정하는 연산 유닛 제어부
    를 포함하고,
    상기 복수의 제3 연산 유닛들은 상기 제1 인스트럭션 집합 또는 상기 제2 인스트럭션 집합 중 적어도 하나의 집합의 인스트럭션들의 상기 다른 일부를 상기 제1 인스트럭션 집합 또는 상기 제2 인스트럭션 집합 중 적어도 하나의 집합의 인스트럭션들의 상기 일부를 실행하는 상기 복수의 제1 연산 유닛들 또는 상기 복수의 제2 연산 유닛들 중 적어도 하나와 병렬로 수행하는 프로세서.
KR1020070085613A 2007-08-24 2007-08-24 코어스 그레인 어레이를 공유하는 방법 및 그 방법을이용한 프로세서 KR101360191B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020070085613A KR101360191B1 (ko) 2007-08-24 2007-08-24 코어스 그레인 어레이를 공유하는 방법 및 그 방법을이용한 프로세서
US12/032,709 US8281107B2 (en) 2007-08-24 2008-02-18 Method of sharing coarse grained array and processor using the method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020070085613A KR101360191B1 (ko) 2007-08-24 2007-08-24 코어스 그레인 어레이를 공유하는 방법 및 그 방법을이용한 프로세서

Publications (2)

Publication Number Publication Date
KR20090020952A KR20090020952A (ko) 2009-02-27
KR101360191B1 true KR101360191B1 (ko) 2014-02-07

Family

ID=40383237

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020070085613A KR101360191B1 (ko) 2007-08-24 2007-08-24 코어스 그레인 어레이를 공유하는 방법 및 그 방법을이용한 프로세서

Country Status (2)

Country Link
US (1) US8281107B2 (ko)
KR (1) KR101360191B1 (ko)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101581882B1 (ko) * 2009-04-20 2015-12-31 삼성전자주식회사 재구성 가능한 프로세서 및 그 재구성 방법
KR101636377B1 (ko) 2009-10-23 2016-07-06 삼성전자주식회사 재구성 프로세서, 재구성 제어 장치 및 방법, 그리고, 스레드 모델링 방법
KR101076869B1 (ko) 2010-03-16 2011-10-25 광운대학교 산학협력단 코어스 그레인 재구성 어레이에서의 메모리 중심 통신 장치
CN102446157B (zh) * 2010-10-12 2013-09-18 无锡江南计算技术研究所 基于阵列结构的处理器核心的通信方法及通信装置
CN102799560A (zh) * 2012-09-07 2012-11-28 上海交通大学 一种基于片上网络的动态可重构子网划分方法及系统
US9582287B2 (en) * 2012-09-27 2017-02-28 Intel Corporation Processor having multiple cores, shared core extension logic, and shared core extension utilization instructions
KR102032895B1 (ko) * 2013-01-28 2019-11-08 삼성전자주식회사 기능 유닛들 간의 기능 로직 공유 장치, 방법 및 재구성 가능 프로세서
KR20150002319A (ko) * 2013-06-28 2015-01-07 삼성전자주식회사 비대칭형 클러스터 구조의 프로세서
KR102130813B1 (ko) * 2013-10-08 2020-07-06 삼성전자주식회사 재구성 가능 프로세서 및 재구성 가능 프로세서를 동작하는 방법
JP6973122B2 (ja) * 2018-01-26 2021-11-24 トヨタ自動車株式会社 車載ネットワークシステム

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6725354B1 (en) * 2000-06-15 2004-04-20 International Business Machines Corporation Shared execution unit in a dual core processor
US20070150711A1 (en) * 2005-12-28 2007-06-28 Samsung Electronics Co., Ltd. Apparatus and method of exception handling for reconfigurable architecture

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6725354B1 (en) * 2000-06-15 2004-04-20 International Business Machines Corporation Shared execution unit in a dual core processor
US20070150711A1 (en) * 2005-12-28 2007-06-28 Samsung Electronics Co., Ltd. Apparatus and method of exception handling for reconfigurable architecture

Also Published As

Publication number Publication date
US8281107B2 (en) 2012-10-02
US20090055626A1 (en) 2009-02-26
KR20090020952A (ko) 2009-02-27

Similar Documents

Publication Publication Date Title
KR101360191B1 (ko) 코어스 그레인 어레이를 공유하는 방법 및 그 방법을이용한 프로세서
US20210271519A1 (en) Quiesce reconfigurable data processor
EP2441013B1 (en) Shared resource multi-thread processor array
US9323716B2 (en) Hierarchical reconfigurable computer architecture
US7840914B1 (en) Distributing computations in a parallel processing environment
JP2010108153A (ja) スケジューラ、プロセッサシステム、プログラム生成方法およびプログラム生成用プログラム
CN107273205B (zh) 用于在计算机处理器中调度指令的方法和系统
US10942745B2 (en) Fast multi-width instruction issue in parallel slice processor
KR20130105182A (ko) 미니 코어 기반의 재구성가능 프로세서, 이를 위한 스케줄 장치 및 방법
US20180212894A1 (en) Fork transfer of data between multiple agents within a reconfigurable fabric
US8171259B2 (en) Multi-cluster dynamic reconfigurable circuit for context valid processing of data by clearing received data with added context change indicative signal
JP2013206095A (ja) データ処理装置及びデータ処理装置の制御方法
CN112379928B (zh) 指令调度方法以及包括指令调度单元的处理器
US20040236929A1 (en) Logic circuit and program for executing thereon
JP4743581B2 (ja) データ処理システムおよびその制御方法
JP7331482B2 (ja) 演算処理装置、及び情報処理装置
US7590831B2 (en) Loop accelerator and data processing system having the same
JP2011501306A (ja) データをバックアップおよび復元するための構造および方法
US20080162870A1 (en) Virtual Cluster Architecture And Method
WO2023234867A2 (en) Reconfigurable computing architecture
Jung et al. Optimal processor interface for CGRA-based accelerators implemented on FPGAs
Shehan et al. Enhancing the Grid Alu processor for a better exploitation of the functional units

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
FPAY Annual fee payment

Payment date: 20170119

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20180119

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20190116

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20200120

Year of fee payment: 7