KR20150002319A - 비대칭형 클러스터 구조의 프로세서 - Google Patents

비대칭형 클러스터 구조의 프로세서 Download PDF

Info

Publication number
KR20150002319A
KR20150002319A KR1020130076018A KR20130076018A KR20150002319A KR 20150002319 A KR20150002319 A KR 20150002319A KR 1020130076018 A KR1020130076018 A KR 1020130076018A KR 20130076018 A KR20130076018 A KR 20130076018A KR 20150002319 A KR20150002319 A KR 20150002319A
Authority
KR
South Korea
Prior art keywords
functional unit
cluster
processor
instruction
register
Prior art date
Application number
KR1020130076018A
Other languages
English (en)
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 KR1020130076018A priority Critical patent/KR20150002319A/ko
Priority to US14/314,282 priority patent/US20150006850A1/en
Publication of KR20150002319A publication Critical patent/KR20150002319A/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
    • 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
    • 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/22Microcontrol or microprogram arrangements
    • G06F9/28Enhancement of operational speed, e.g. by using several microcontrol devices operating in parallel
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)

Abstract

제1 타입 명령어를 처리하는 제1 기능 유닛 및 제1 기능 유닛과 입출력 포트가 연결된 제1 레지스터를 포함하는 제1 클러스터와, 제2 타입 명령어를 처리하는 제2 기능 유닛 및 제2 기능 유닛과 입출력 포트가 연결된 제2 레지스터를 포함하는 제2 클러스터를 포함한 프로세서를 제공함으로써, 프로세서를 다양한 분야에서 효율적으로 사용할 수 있도록 한다.

Description

비대칭형 클러스터 구조의 프로세서{PROCESSOR OF HETEROGENEOUS CLUSTER ARCHITECTURE}
클러스터 구조의 프로세서와 관련된다.
일반적인 프로세서는 명령어 단계의 병렬처리(Instruction-level Parallelism; ILP)를 위하여 동시에 여러 개의 명령어를 처리(Multiple Issue-And-Execute)하는 구조를 채택하고 있다. 프로세서가 동시에 처리할 수 있는 명령어의 수를 늘리기 위해서는 기능 유닛(Functional Unit; FU)의 수를 늘려야 한다. 기능 유닛의 수가 증가하게 되면, 레지스터(Register)로부터 피연산자(Operand)를 전달하기 위한 포트의 수 또한 증가하게 된다. 포트의 수가 증가하게 되면 프로세서의 면적이 늘어나며, 설계 또한 복잡해진다.
이와 같이 기능 유닛의 수로 인한 프로세서의 구조적 문제점을 해결하기 위하여, 프로세서 내부의 기능 유닛을 여러 클러스터로 분할하고, 각 클러스터마다 별도의 레지스터를 사용하는 대칭형 클러스터 구조(Homogeneous Clustered Architecture, Symmetric Clustered Architecture)가 제안되었다.
다양한 명령어를 효율적으로 처리하기 위한 비대칭형 클러스터 구조의 프로세서를 제공한다.
일 양상에 따른 비대칭형 클러스터 구조의 프로세서는 제1 타입 명령어를 실행하는 제1 클러스터와, 제1 타입 명령어 및 제2 타입 명령어를 실행하는 제2 클러스터를 포함한다.
이때, 제1 클러스터는 제1 타입 명령어를 처리하는 제1 기능 유닛 및 제1 기능 유닛과 입출력 포트가 연결된 제1 레지스터를 포함하고, 제2 클러스터는 제1 타입 명령어 및 제2 타입 명령어를 처리하는 제2 기능 유닛 및 제2 기능 유닛과 입출력 포트가 연결된 제2 레지스터를 포함할 수 있다. 여기서, 제1 타입 명령어는 제 2 타입 명령어보다 범용적으로 사용된다.
아울러, 제2 기능 유닛의 출력 포트가 제1 레지스터의 입력 포트에 연결될 수 있고, 제1 기능 유닛의 출력 포트가 제2 레지스터의 입력 포트에 연결될 수 있다.
또한, 제1 레지스터의 출력 포트가 제2 기능 유닛의 입력 포트와 연결될 수 있고, 제2 레지스터의 출력 포트가 제1 기능 유닛의 입력 포트와 연결될 수 있다.
또한, 제1 기능 유닛의 입력 포트가 제1 기능 유닛의 출력 포트에 연결될 수 있고, 제2 기능 유닛의 입력 포트가 제2 기능 유닛의 출력 포트와 연결 될 수 있다.
한편, 제1 클러스터의 제1 타입 명령어 처리시간과 제2 클러스터의 제2 타입 명령어 처리시간이 상이할 수 있다.
또한, 제1 기능 유닛의 제1 타입 명령어 처리시간이 제2 기능 유닛의 제1 타입 명령어의 처리시간보다 빠를 수 있다.
클러스터 구조의 프로세서를 제공함으로써, 하나의 레지스터에 연결된 기능 유닛의 입출력 포트 수가 작아져 프로세서를 구성하는 회로의 복잡도를 낮출 수 있다. 또한, 하나의 레지스터에 연결된 기능 유닛의 입출력 포트 수가 작아짐으로 프로세서의 면적을 줄일 수 있다.
아울러, 기능 유닛이 처리하는 명령어 타입을 기준으로 기능 유닛을 분류하고, 동일한 명령어 타입을 가진 기능 유닛 집합을 하나의 클러스터로 구현함으로써, 프로세서를 다양한 응용 분야에서 재사용 할 수 있다.
또한, 일반적으로 사용되거나 빈번하게 사용되는 제1 타입 명령어는 모든 클러스터에서 처리될 수 있고, 특정 응용분야에서만 사용되거나 드물게 사용되는 제2 타입 명령어는 제2 클러스터에서만 처리할 수 있는 비대칭형 클러스터 구조의 프로세서를 제공함으로써, 한번 설계한 프로세서를 다양한 분야로 포팅(Porting)할 때 개발 시간을 단축시킬 수 있다.
또한, 제2 클러스터에서 특정 응용분야에서 사용되는 명령어를 처리할 수 있게 함으로써 특정 응용분야에서 처리 속도를 향상시킬 수 있다.
한편, 클러스터 사이의 입출력 포트의 연결을 다양한 형태로 구성하여 클러스터 사이에서도 오퍼랜드 포워딩(Operand Fowarding)을 지원하는 프로세서의 설계가 가능하다. 아울러, 각 클러스터에서 처리되는 제1 명령어의 지연시간(Latency)을 다르게 함으로 프로세서의 처리 효율을 향상시킬 수 있다.
도 1은 일 실시예에 따른 프로세서를 포함한 전체 시스템을 나타낸 블록도이다.
도 2는 일 실시예에 따른 프로세서의 구성을 설명하기 위한 블록도이다.
도 3은 프로세서에서 처리 가능한 명령어의 일 예를 나타낸 도면이다.
도 4는 일 실시예에 따른 프로세서에 포함된 클러스터의 구성을 설명하기 위한 블록도이다.
도 5는 일 실시예에 따른 클러스터간 데이터 입출력을 설명하기 위한 도면이다.
도 6는 일 실시예에 따른 클러스터에 포함된 기능 유닛의 구성을 설명하기 위한 블록도이다.
이하, 첨부된 도면을 참조하여 기술되는 실시예를 통하여 발명을 당업자가 용이하게 이해하고 재현할 수 있도록 상세히 기술하기로 한다. 다만, 발명을 설명함에 있어 관련된 공지 기능 또는 구성에 대한 구체적인 설명이 발명 실시예들의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략할 것이다.
본 명세서에서 사용되는 용어들은 실시예에서의 기능을 고려하여 선택된 용어들로서, 그 용어의 의미는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 후술하는 실시예들에서 사용된 용어의 의미는, 본 명세서에 구체적으로 정의된 경우에는 그 정의에 따르며, 구체적인 정의가 없는 경우는 통상의 기술자들이 일반적으로 인식하는 의미로 해석되어야 할 것이다.
아울러, 본 명세서에서 선택적으로 기재된 양상이나 선택적으로 기재된 실시예의 구성들은 비록 도면에서 단일의 통합된 구성으로 도시되었다 하더라도 달리 기재가 없는 한 통상의 기술자에게 기술적으로 모순인 것이 명백하지 않다면 상호간에 자유롭게 조합될 수 있는 것으로 이해하여야 한다.
도 1은 일 실시예에 따른 프로세서를 포함한 전체 시스템을 나타낸 블록도이다.
도 1을 참조하면, 명령어 패치부(10)는 프로세서에서 처리될 명령어를 로딩한다. 명령어 패치부(10)는 프로세서에서 처리될 명령어를 미리 로딩할 수 있다.
명령어 디코딩부(20)는 명령어 패치부(10)에 로딩된 명령어가 프로세서(30)에서 처리될 수 있도록 제어신호를 생성한다. 이를 위해 명령어 디코딩부(20)는 로딩된 명령어를 해석할 수 있다.
프로세서(30)는 클러스터(Cluster)를 기반으로 동시에 다양한 명령어를 병렬 처리할 수 있다. 여기서, 클러스터는 레지스터(Register) 및 그 레지스터를 공유하는 기능 유닛(Functional Unit, FU)의 집합을 말한다. 각 클러스터의 레지스터는 동일 클러스터의 기능 유닛의 입출력 포트와 연결될 수 있다. 클러스터에 포함된 기능 유닛의 집합은 동일한 타입 명령어를 처리할 수 있다. 이와 같이 프로세서(30)의 기능 유닛을 처리 가능한 명령어 타입에 따라 분류하여 동일한 클러스터에 포함될 기능 유닛의 집합을 결정하고, 클러스터 단위로 레지스터를 공유하게 함으로써, 프로세서(30)의 복잡도 및 면적을 줄일 수 있으며, 명령어 처리 속도를 향상시킬 수 있다.
클러스터에 포함된 기능 유닛은 처리할 수 있는 명령어에 따라 구조가 달라진다. 예를 들어, 간단한 산술 연산 명령어를 처리하는 기능 유닛은 비교적 단순한 구조와 작은 면적을 가지게 된다. 그러나, 복잡한 산술 연산 명령어를 처리하는 기능 유닛은 간단한 산술 연산 명령어를 처리하는 기능 유닛보다 상대적으로 복잡한 구조를 가지며, 더 큰 면적을 가지게 될 것이다. 이에 일 실시예에 따른 프로세서(30)는 비대칭적인 클러스터 구조를 가진다. 즉, 상대적으로 빈번하게 사용되는 명령어 또는 범용적으로 사용되는 명령어는 모든 클러스터에서 처리될 수 있으나, 드물게 사용되는 명령어 또는 비범용적인 명령어는 일부 클러스터에서 처리될 수 있는 구조로 프로세서(30)를 설계함으로써, 빈번하게 사용되는 명령어 또는 범용적으로 사용되는 명령어의 처리 효율을 향상시킬 수 있으며, 비범용적인 명령어도 빠르게 처리할 수 있다.
아울러, 비대칭형 클러스터 구조로 설계된 프로세서(30)는 한 번 설계한 프로세서(30)를 쉽게 다른 응용분야로 포팅(Porting)될 수 있다. 즉, 다른 응용분야로 포팅할 때, 빈번하게 사용되는 명령어 또는 범용적으로 사용되는 명령어는 별도의 수정 없이 사용하고, 드물게 사용되거나 특정한 용도로 사용되는 비범용적인 명령어를 처리하는 클러스터만 재설계하면 된다. 따라서, 포팅에 있어서 프로세서의 개발 시간을 단축시킬 수 있다.
이하, 실시 예에 따른 프로세서 구성 및 클러스터의 구성에 대하여 더욱 상세히 설명한다.
도 2는 일 실시예에 따른 프로세서의 구성을 설명하기 위한 블록도이다.
도 2의 프로세서에서 처리되는 명령어는 제1 타입과 제2 타입으로 분류할 수 있다. 사용되는 분야를 기준으로 범용적으로 사용되는 명령어는 제1 타입 명령어로, 특정한 목적으로 사용되는 비범용적인 명령어는 제2 타입 명령어로 분류할 수 있다. 또는, 사용 빈도수를 기준으로 빈번하게 사용되는 명령어는 제1 타입 명령어로, 드물게 사용되는 명령어는 제2 타입 명령어로 분류할 수도 있다. 예를 들어, 산술연산, 비트연산, 비교연산, 이동, 메모리 접근 명령어와 같이 범용적으로 빈번하게 사용되는 명령어는 제1 타입 명령어로, 특정한 응용분야에서만 사용되는 명령어 또는 최대값 연산과 같이 사용빈도가 낮은 명령어는 제2 타입 명령어로 구별할 수 있다. 한편, 제1 타입 명령어와 제2 타입 명령어는 범용성 또는 사용빈도를 기준으로 분류하는 것으로 설명하였으나, 명령어 처리 속도, 명령어 처리를 위한 기능 유닛의 면적, 또는 프로세서의 복잡도와 같은 다양한 기준을 함께 고려하여 분류할 수도 있음을 이해하여야 한다.
도 2를 참조하면, 제1 클러스터(210)는 제1 타입 명령어를 실행할 수 있는 제1 기능 유닛의 집합(213)을 포함한다. 아울러, 제1 클러스터(210)는 제1 레지스터(211)를 더 포함할 수 있다. 이때, 제1 레지스터(211)는 제1 기능 유닛(213)의 입출력 포트와 연결되어 있을 수 있다. 제1 레지스터(211)는 제1 기능 유닛의 입력 포트를 통해 명령어 처리를 위해 필요한 데이터를 출력하여 제1 기능 유닛(213)에 제공할 수 있다. 또한, 제1 레지스터(211)는 제1 기능 유닛의 출력 포트에서 출력된 제1 기능 유닛(213)의 출력을 입력 받아 저장할 수 있다.
제2 클러스터(220)는 제1 타입 명령어뿐만 아니라, 제2 타입 명령어를 실행할 수 있는 제2 기능 유닛(223)의 집합을 포함한다. 아울러, 제2 클러스터(220)는 제2 레지스터(221)를 더 포함할 수 있다. 이때, 제2 레지스터 (221)는 제2 기능 유닛(223)의 입출력 포트와 연결되어 있다. 제2 레지스터(221)는 제2 기능 유닛의 입력 포트를 통해 명령어 처리를 위해 필요한 데이터를 출력하여 제2 기능 유닛(223)에 제공할 수 있다. 또한, 제2 레지스터(221)는 제2 기능 유닛의 출력 포트에서 출력된 제1 기능 유닛(223)으로부터 출력을 입력 받을 수 있다.
이때, 제1 타입 명령어만 처리할 수 있는 제1 클러스터(210) 보다 제1 타입 명령어 및 제2 타입 명령어를 모두 처리할 수 있는 제2 클러스터(220)의 면적이 일반적으로 더 넓을 수 있다. 아울러, 제2 클러스터(220) 회로가 제1 클러스터(210) 회로보다 더 복잡할 수도 있다.
이와 같이 비대칭형 클러스터 구조의 프로세서를 제공함으로써, 프로세서의 효율을 향상시킬 수 있다. 즉, 제1 클러스터(210)는 제1 타입의 명령어 처리에 최적화되어 설계되어 제1 타입 명령어를 빠르게 처리할 수 있다. 또, 제2 클러스터(220)는 제2 타입의 명령어 처리에 최적화 되어 제2 타입 명령어를 빠르게 처리할 수 있을 뿐만 아니라, 필요에 따라 제1 타입 명령어도 처리할 수 있다.
한편, 도 2에서는 프로세서가 제1, 2 클러스터(210, 220)로 구성된 것으로 도시되어 있으나, 이는 설명의 편의를 위한 것으로 프로세서는 더 많은 클러스터를 가질 수 있다. 또한, 프로세서의 기능 유닛이 처리하는 명령어 타입을 더 상세히 분류하여, 클러스터를 더 세분화하여 구성할 수 있다.
도 3은 프로세서에서 처리 가능한 명령어의 일 예를 나타낸 도면이다.
도 3은 제1, 2 클러스터에서 처리 가능한 명령어의 일 예이다. 각 제1 클러스터는 제1 명령어를 처리하며, 제2 클러스터는 제1 명령어뿐만 아니라 2 명령어도 처리할 수 있다.
도 2을 참조하면, 제1 클러스터(210)는 일반적으로 사용되는 명령어 또는 빈번하게 사용되는 제1 명령어를 처리할 수 있으며, 제2 클러스터(220)는 일반적으로 사용되는 명령어 또는 빈번하게 사용되는 제1 명령어뿐만 아니라 특정 응용분야에서 사용되는 명령어 또는 드물게 사용되는 제2 명령어도 처리할 수 있다.
예를 들어 도 2, 3을 참조하면, 제1 클러스터(210)는 덧셈연산 또는 뺄셈연산과 같이 빈번하게 사용되는 산술연산 명령어인 제1 타입 명령어의 처리만 가능한 반면, 제2 클러스터(220)는 덧셈연산 또는 뺄셈연산과 같이 빈번하게 사용되는 산술연산 명령어인 제1 타입 명령어뿐만 아니라 드물게 사용되는 제2 타입 명령어도 처리 가능하다. 예를 들어, 제2 클러스터(220)는 더한 후 오른쪽으로 이동 연산(addshr) 및 더한 후 왼쪽으로 이동 연산(addshl)과 같이 번번하게 사용되지 않은 제2 타입의 명령어도 처리 할 수 있다. 한편, 제2 클러스터(220)에서 처리 가능한 제2 타입 명령어는 제1 타입 명령어와 연관된 것일 수 있다. 이때, 제2 클러스터는 제1 타입 명령어를 처리하기 위한 회로와 제2 타입 명령어를 처리하기 위한 회로를 공유하도록 설계될 수 있다. 즉, 프로세서는 제1 타입 명령어를 처리할 수 있는 제1 클러스터(210)에 최소한의 추가적인 회로를 추가하여 제2 타입 명령어를 제2 클러스터(220)에서만 처리될 수 있도록 설계되어, 대칭형 클러스터 구조에서 발생할 수 있는 하드웨어 면적의 낭비를 막을 수 있다. 예를 들어, 제1 타입 명령어가 덧셈 연산이고, 제2 타입 명령어는 덧셈 이후 자리를 이동 연산인 경우, 제2 클러스터는 덧셈을 위한 회로를 공유하도록 설계될 수 있다.
한편, 제1 클러스터(210)의 제1 타입 명령어 처리 시간과 제2 클러스터(220)의 제2 타입 명령어 처리 시간은 상이할 수 있다. 즉, 제1 타입 명령어만 처리하는 제1 클러스터(210)는 제1 타입 명령어 처리를 위해 최적화된 설계를 가져 비교적 짧은 처리 시간을 가지나, 제1,2 타입 명령어 모두를 처리하는 제2 클러스터(220)는 면적 및 회로의 복잡도를 고려하여 비교적 긴 처리 시간을 가지도록 설계될 수 있다.
도 4는 일 실시예에 따른 프로세서에 포함된 클러스터의 구성을 설명하기 위한 블록도이다.
도 4의 도시된 클러스터는 오퍼랜드 포워딩(Operand forwarding)을 지원할 수 있다. 더 구체적으로, 어느 하나의 기능 유닛의 출력이 레지스터를 거치지 않고 다른 기능 유닛의 입력될 수 있다.
도 4을 참조하면, 클러스터는 레지스터(411), 기능 유닛(413), 다중화기(430)를 포함한다.
레지스터(411)는 일시적으로 명령어 처리를 위해 필요한 데이터를 저장한다. 예를 들어, 레지스터(411)는 명령어 처리를 위한 오퍼랜드, 또는 기능 유닛에서 처리된 중간 처리 결과 등의 데이터 일시적으로 저장할 수 있다. 더 구체적으로, 레지스터(411)는 메모리 또는 캐시로부터 오퍼랜드를 전달받아 저장할 수 있다. 또, 레지스터(411)는 기능 유닛(413)의 출력 포트로부터 데이터를 입력 받아 저장할 수 있다. 레지스터(411)의 출력 포트는 다중화기(430)에 연결되어 있으며, 다중화기(430)의 선택에 따라 레지스터(411)에 저장된 데이터는 기능 유닛(413)에 입력될 수 있다.
다중화기(430)는 기능 유닛(413)에 입력될 데이터를 선택한다. 다중화기(430)는 기능 유닛(413)의 출력, 레지스터(411)의 출력을 선택적으로 기능 유닛(413)에 입력한다. 예를 들어, 다중화기(430a)는 FU #0(413a), FU #1(413b) 및 레지스터(411)로부터 받은 입력 가운데 하나의 입력을 선택하여 출력함으로써, FU #0(413a)에서 입력될 데이터를 선택한다.
기능 유닛(413)은 다중화기(430)로부터 데이터를 입력 받는다. 기능 유닛은 다중화기(430)로부터 입력 받은 데이터를 기반으로 명령어를 처리하여 출력한다. 예를 들어, FU #0(413a)은 레지스터(411)에 저장된 데이터를 입력 받아 이를 기반으로 명령어를 처리할 수 있다. 또한, FU #0(413a)은 FU #1(413b)의 처리 결과를 입력 받아 명령어를 처리할 수도 있다. 또, FU #0(413a)은 FU #0(413a)의 처리 결과를 입력 받아 명령어를 처리할 수도 있다. 이와 같이 기능 유닛(413)의 출력을 레지스터(411)를 거치지 않고 기능 유닛의 입력으로 사용함으로써, 프로세서의 성능 저하를 방지할 수 있다.
도 5는 일 실시예에 따른 클러스터간 데이터 입출력을 설명하기 위한 도면이다.
도 5에 도시된 것과 같이 프로세서는 다이렉트 크로스 포워딩(Direct Cross Forwarding, DCF)을 지원할 수 있다. 여기서, 다이렉트 크로스 포워딩은 클러스터 사이에 직접적인 데이터 교환을 말한다. 즉, 도 2에 도시된 것과 같이 프로세서에 포함된 클러스터들간에 데이터 교환을 위한 경로가 없을 수도 있으나, 필요에 따라 프로세서는 도 5에 도시된 것과 같이 클러스터들간 데이터 교환을 위한 경로를 가지고, 클러스터간 직접적인 데이터 교환을 지원할 수 있다.
도 5(a)은 클러스터간 데이터 교환을 위한 경로를 가진 프로세서의 일 예이다. 프로세서는 특정 클러스터의 레지스터에 저장된 데이터가 다른 클러스터의 기능 유닛에 입력되기 위한 경로를 가진다. 이를 위해, 특정 클러스터에 포함된 레지스터의 출력 포트가 다른 클러스터에 포함된 기능 유닛의 입력 포트와 연결되어 있을 수 있다. 도 5(a)를 참고하면, 특정 클러스터(520a)의 레지스터(521a)의 출력 포트가 다른 클러스터(510a)의 기능 유닛(513a)의 입력 포트와 연결될 수 있다. 이와 같은 클러스터간 연결된 포트를 따라 클러스터간 즉각적인 데이터 교환이 가능하다.
한편, 기능 유닛에 입력되는 데이터의 경로가 다양한 경우, 기능 유닛에서 실행되는 명령어는 기능 유닛에 입력되는 데이터를 선택하기 위한 정보를 더 포함하도록 인코딩될 수 있음을 이해하여 한다.
도 5(b)은 클러스터간 데이터 교환을 위한 경로를 가진 프로세서의 또 다른 예이다. 프로세서는 특정 클러스터의 기능 유닛의 출력이 다른 클러스터의 레지스터에 저장되기 위한 경로를 가진다. 이를 위해, 특정 클러스터에 포함된 기능 유닛의 출력 포트가 다른 클러스터에 포함된 레지스터의 입력 포트와 연결되어 있을 수 있다. 도 5(b)를 참조하면, 특정 클러스터(510b)의 기능 유닛(513c, 513d)의 출력 포트와 다른 클러스터(520b)의 레지스터(521b)의 입력 포트가 연결되어 있다. 아울러, 프로세서는 레지스터(521b)에 저장될 출력을 선택하기 위하여 다중화기(530)를 더 가질 수 있다.
이와 같이 기능 유닛의 출력이 저장되는 경로가 다양한 경우, 기능 유닛에서 출력되는 데이터를 선택하기 위한 정보를 더 포함하도록 명령어가 인코딩되거나, 명령어 별로 특정 레지스터를 사용하도록 설계될 수 있다.
도 6는 일 실시예에 따른 클러스터에 포함된 기능 유닛의 구성을 설명하기 위한 블록도이다.
도 6을 참조하면, 하나의 기능 유닛은 하나 이상의 오퍼레이션 그룹(Operation Group, 610)을 포함할 수 있다. 이때, 하나의 오퍼레이션 그룹(610)은 데이터를 입력 받아 하나 이상의 명령어를 처리할 수 있다. 어떤 오퍼레이션 그룹(610)에서 어떠한 명령어를 처리할 지는 하드웨어 구현에 의하여 달라질 수 있다. 예를 들어, 오퍼레이션 그룹 #0(610a)에서는 덧셈과 뺄셈을 처리할 수 있으며, 오퍼레이션 그룹 #1(610b)에서는 곱셈을 처리할 수 있다. 한편, 오퍼레이션 그룹(610)은 처리할 수 있는 명령어의 종류에 따라 구조, 크기 등이 달라진다.
제1 다중화기(620)는 오퍼레이션 그룹(610)에 입력될 데이터를 선택한다. 예를 들어, 제1 다중화기(620)는 레지스터에 저장된 데이터, 동일한 클러스터의 내의 기능 유닛의 출력 데이터, 다른 클러스터로부터 전달된 데이터 중 하나를 선택하여 출력함으로써, 여러 입력 가운데 오퍼레이션 그룹(610)에 입력될 데이터를 선택한다.
제2 다중화기(630)는 출력을 제어한다. 제2 다중화기(630)는 즉, 복수 개의 오퍼레이션 그룹(610)으로부터 입력 받은 처리 결과 가운데 출력할 처리 결과를 결정한다.
한편, 기능 유닛이 복수 개의 출력 포트를 가지는 경우, 도 6(b)에 도시된 것과 같이 출력될 포트를 선택하기 위하여 복수 개의 제2 다중화기(630a, 630b)를 포함할 수 있다.
이상의 설명은 본 발명의 기술 사상을 예시적으로 설명한 것에 불과한 것으로서, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 발명의 본질적인 특성에서 벗어나지 않는 범위 내에서 다양한 수정, 변경 및 치환이 가능할 것이다. 따라서, 본 발명에 개시된 실시예 및 첨부된 도면들은 본 발명의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 실시예 및 첨부된 도면에 의하여 본 발명의 기술 사상의 범위가 한정되는 것은 아니다. 본 발명의 보호 범위는 아래의 청구범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술 사상은 본 발명의 권리범위에 포함되는 것으로 해석되어야 할 것이다.
10: 명령어 패치부, 20: 명령어 디코딩부,
30: 프로세서, 210, 510: 제1 클러스터,
211, 511: 제1 레지스터, 213, 513: 제1 기능 유닛,
220, 520: 제2 클러스터, 221, 521: 제2 레지스터,
223, 523: 제2 기능 유닛, 411: 레지스터,
413: 기능 유닛, 430, 530: 다중화기,
610: 오퍼레이션 그룹, 620: 제1 다중화기,
630: 제2 다중화기.

Claims (10)

  1. 제1 타입 명령어를 실행하는 제1 클러스터; 및
    상기 제1 타입 명령어 및 제2 타입 명령어를 실행하는 제2 클러스터;
    를 포함하는 비대칭형 클러스터 구조의 프로세서.
  2. 제1항에 있어서,
    상기 제1 클러스터는 상기 제1 타입 명령어를 처리하는 제1 기능 유닛 및 상기 제1 기능 유닛과 입출력 포트가 연결된 제1 레지스터를 포함하고,
    상기 제2 클러스터는 상기 제1 타입 명령어 및 상기 제2 타입 명령어를 처리하는 제2 기능 유닛 및 상기 제2 기능 유닛과 입출력 포트가 연결된 제2 레지스터를 포함하고,
    상기 제1 타입 명령어가 상기 제2 타입 명령어보다 범용적으로 사용되는 비대칭형 클러스터 구조의 프로세서.
  3. 제2항에 있어서,
    상기 제2 기능 유닛의 출력 포트가 상기 제1 레지스터의 입력 포트에 연결된 비대칭형 클러스터 구조의 프로세서.
  4. 제2항에 있어서,
    상기 제1 기능 유닛의 출력 포트가 상기 제2 레지스터의 입력 포트에 연결된 비대칭형 클러스터 구조의 프로세서.
  5. 제2항에 있어서,
    상기 제1 레지스터의 출력 포트가 상기 제2 기능 유닛의 입력 포트와 연결된 비대칭형 클러스터 구조의 프로세서.
  6. 제2항에 있어서,
    상기 제2 레지스터의 출력 포트가 상기 제1 기능 유닛의 입력 포트와 연결된 비대칭형 클러스터 구조의 프로세서.
  7. 제2항에 있어서,
    상기 제1 기능 유닛의 입력 포트가 상기 제1 기능 유닛의 출력 포트에 연결된 비대칭형 클러스터 구조의 프로세서.
  8. 제2항에 있어서,
    상기 제2 기능 유닛의 입력 포트가 상기 제2 기능 유닛의 출력 포트와 연결된 비대칭형 클러스터 구조의 프로세서.
  9. 제1 항에 있어서.
    상기 제1 클러스터의 제1 타입 명령어 처리시간과 제2 클러스터의 제2 타입 명령어 처리시간이 상이한 비대칭형 클러스터 구조의 프로세서.
  10. 제2항에 있어서,
    상기 제1 기능 유닛의 상기 제1 타입 명령어 처리시간이 상기 제2 기능 유닛의 상기 제1 타입 명령어의 처리시간보다 빠른 비대칭형 클러스터 구조의 프로세서.
KR1020130076018A 2013-06-28 2013-06-28 비대칭형 클러스터 구조의 프로세서 KR20150002319A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020130076018A KR20150002319A (ko) 2013-06-28 2013-06-28 비대칭형 클러스터 구조의 프로세서
US14/314,282 US20150006850A1 (en) 2013-06-28 2014-06-25 Processor with heterogeneous clustered architecture

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020130076018A KR20150002319A (ko) 2013-06-28 2013-06-28 비대칭형 클러스터 구조의 프로세서

Publications (1)

Publication Number Publication Date
KR20150002319A true KR20150002319A (ko) 2015-01-07

Family

ID=52116845

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130076018A KR20150002319A (ko) 2013-06-28 2013-06-28 비대칭형 클러스터 구조의 프로세서

Country Status (2)

Country Link
US (1) US20150006850A1 (ko)
KR (1) KR20150002319A (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11572852B2 (en) * 2015-01-12 2023-02-07 Briggs & Stratton, Llc Low pressure gaseous fuel injection system

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6182203B1 (en) * 1997-01-24 2001-01-30 Texas Instruments Incorporated Microprocessor
US6629232B1 (en) * 1999-11-05 2003-09-30 Intel Corporation Copied register files for data processors having many execution units
US6757819B1 (en) * 2000-02-18 2004-06-29 Texas Instruments Incorporated Microprocessor with instructions for shifting data responsive to a signed count value
US20070239970A1 (en) * 2006-04-06 2007-10-11 I-Tao Liao Apparatus For Cooperative Sharing Of Operand Access Port Of A Banked Register File
US7669041B2 (en) * 2006-10-06 2010-02-23 Stream Processors, Inc. Instruction-parallel processor with zero-performance-overhead operand copy
KR101360191B1 (ko) * 2007-08-24 2014-02-07 삼성전자주식회사 코어스 그레인 어레이를 공유하는 방법 및 그 방법을이용한 프로세서
JP5834997B2 (ja) * 2012-02-23 2015-12-24 株式会社ソシオネクスト ベクトルプロセッサ、ベクトルプロセッサの処理方法
US9632825B2 (en) * 2013-03-15 2017-04-25 Intel Corporation Method and apparatus for efficient scheduling for asymmetrical execution units

Also Published As

Publication number Publication date
US20150006850A1 (en) 2015-01-01

Similar Documents

Publication Publication Date Title
US9760373B2 (en) Functional unit having tree structure to support vector sorting algorithm and other algorithms
US9778911B2 (en) Reducing power consumption in a fused multiply-add (FMA) unit of a processor
KR100464406B1 (ko) 가변길이 vliw 명령어를 위한 디스패치 장치 및 방법
US9207995B2 (en) Mechanism to speed-up multithreaded execution by register file write port reallocation
EP3353674A1 (en) CONFIGURING COARSE-GRAINED RECONFIGURABLE ARRAYS (CGRAs) FOR DATAFLOW INSTRUCTION BLOCK EXECUTION IN BLOCK-BASED DATAFLOW INSTRUCTION SET ARCHITECTURES (ISAs)
US20140317388A1 (en) Apparatus and method for supporting multi-modes of processor
CN107273205B (zh) 用于在计算机处理器中调度指令的方法和系统
EP1124181A1 (en) Data processing apparatus
US20140317626A1 (en) Processor for batch thread processing, batch thread processing method using the same, and code generation apparatus for batch thread processing
US20120221834A1 (en) Processor architecture
US20220214884A1 (en) Issuing instructions based on resource conflict constraints in microprocessor
US10120693B2 (en) Fast multi-width instruction issue in parallel slice processor
US20160103680A1 (en) Arithmetic circuit and control method for arithmetic circuit
KR101912427B1 (ko) 재구성가능 프로세서 및 재구성가능 프로세서의 미니 코어
KR20150002319A (ko) 비대칭형 클러스터 구조의 프로세서
US7287151B2 (en) Communication path to each part of distributed register file from functional units in addition to partial communication network
KR100722770B1 (ko) 조건실행을 지원하는 재구성 가능한 프로세싱 요소의배열구조
KR20130131789A (ko) 미니코어 기반의 재구성 가능 프로세서 및 그 재구성 가능 프로세서를 이용한 유연한 다중 데이터 처리 방법
US9798547B2 (en) VLIW processor including a state register for inter-slot data transfer and extended bits operations
US20090282223A1 (en) Data processing circuit
KR100861073B1 (ko) 적응형 파이프라인을 적용한 병렬 처리 프로세서 구조
JP2014164659A (ja) プロセッサ
US8677099B2 (en) Reconfigurable processor with predicate signal activated operation configuration memory and separate routing configuration memory
US20090292908A1 (en) Method and arrangements for multipath instruction processing
WO2021014017A1 (en) A reconfigurable architecture, for example a coarse-grained reconfigurable architecture as well as a corresponding method of operating such a reconfigurable architecture

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application