KR20150005062A - 미니-코어를 사용하는 프로세서 - Google Patents

미니-코어를 사용하는 프로세서 Download PDF

Info

Publication number
KR20150005062A
KR20150005062A KR20130078310A KR20130078310A KR20150005062A KR 20150005062 A KR20150005062 A KR 20150005062A KR 20130078310 A KR20130078310 A KR 20130078310A KR 20130078310 A KR20130078310 A KR 20130078310A KR 20150005062 A KR20150005062 A KR 20150005062A
Authority
KR
South Korea
Prior art keywords
vector
mini
data
scalar
core
Prior art date
Application number
KR20130078310A
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 KR20130078310A priority Critical patent/KR20150005062A/ko
Priority to US14/324,302 priority patent/US20150012723A1/en
Publication of KR20150005062A publication Critical patent/KR20150005062A/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
    • 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
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • 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/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • 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/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • 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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

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)
  • Multimedia (AREA)
  • Mathematical Physics (AREA)
  • Advance Control (AREA)

Abstract

미니-코어 및 미니-코어를 사용하는 프로세서가 제공된다. 미니-코어의 기능적 유닛들은 스칼라 도메인 및 벡터 도메인으로 분류된다. 프로세서는 하나 이상의 미니-코어들을 포함한다. 프로세서의 동작 모드에 따라, 미니-코어들의 기능적 유닛들 중 일부 또는 전부의 기능적 유닛들이 동작한다.

Description

미니-코어를 사용하는 프로세서{PROCESSOR USING MINI-CORES}
아래의 실시예들은 프로세서에 관한 것으로, 보다 상세히는 미니-코어를 사용하는 프로세서가 개시된다.
매우 긴 명령어 워드(Very Long Instruction Word; VLIW) 구조 또는 코어스-그레인드 리컨피규어블 어레이(Coarse-Grained Reconfigurable Array; CGRA) 구조의 프로세서는 다수의 기능성 유닛(Functional Unit; FU)들을 사용한다. FU들은 데이터-패스(data-path)에 의해 연결된다.
프로세서 내의 FU들 및 데이터-패스들의 구성 있어서, 무수히 많은 조합이 가능하다. 최대의 성능을 위한 디자인으로서, 모든 FU가 모든 명령어들을 처리할 수 있게 구성될 수 있고, 데이터-패스들이 모든 FU들을 서로 간에 연결하게 구성될 수 있다. 데이터-패스의 비트-넓이(bit-width) 프로세서가 지원하는 벡터(data) 데이터 타입(type) 중 가장 큰 비트-넓이일 수 있다.
일 측면에 있어서, 스칼라 데이터의 연산을 위한 스칼라 도메인부, 벡터 데이터의 연산을 위한 벡터 도메인부 및 상기 스칼라 도메인부 및 상기 벡터 도메인부에 의해 공유되고, 상기 스칼라 도메인부 및 상기 벡터 도메인부 간의 데이터의 전송을 위한 데이터 변환을 처리하는 팩/언팩 기능성 유닛(Functional Unit; FU)을 포함하는 미니-코어가 제공된다.
상기 스칼라 도메인부는, 스칼라 데이터의 연산을 처리하는 스칼라 FU를 포함할 수 있다.
상기 팩/앤팩 FU는 다수의 스칼라 데이터를 상기 벡터 데이터로 변환하고, 상기 벡터 데이터의 특정한 위치에서의 요소를 추출함으로써 상기 스칼라 데이터를 생성할 수 있다.
상기 벡터 도메인부는, 벡터 데이터의 로드 및 스토어를 처리하는 벡터 로드(load; LD)/스토어(store; ST) FU 및 상기 벡터 데이터의 연산을 처리하는 벡터 FU를 포함할 수 있다.
상기 벡터 FU는 복수일 수 있다.
상기 복수의 벡터 FU들은 상기 복수의 벡터 FU들이 처리 가능한 비트-길이보다 더 큰 비트-길이의 벡터 데이터를 처리하기 위해 서로 연결(concatenate)되어 동작할 수 있다.
상기 벡터 도메인부는 상기 벡터 데이터를 저장하는 벡터 메모리를 더 포함할 수 있다.
상기 미니-코어는 스칼라 데이터 채널을 통해 다른 미니-코어로 상기 스칼라 데이터를 전송할 수 있다.
상기 미니-코어는 벡터 데이터 채널을 통해 상기 다른 미니-코어로 상기 벡터 데이터를 전송할 수 있다.
다른 일 측면에 있어서, 벡터 데이터의 연산을 처리하는 복수의 벡터 기능성 유닛(Functional Unit; FU)들을 포함하고, 상기 복수의 벡터 FU들은 상기 복수의 벡터 FU들이 처리 가능한 비트-길이보다 더 큰 비트-길이의 벡터 데이터를 처리하기 위해 서로 연결(concatenate)되어 동작하는 미니-코어가 제공된다.
상기 미니-코어는, 스칼라 데이터의 연산을 위한 스칼라 도메인부, 벡터 데이터의 연산을 위한 벡터 도메인부 및 상기 스칼라 도메인부 및 상기 벡터 도메인부에 의해 공유되고, 상기 스칼라 도메인부 및 상기 벡터 도메인부 간의 데이터의 전송을 위한 데이터 변환을 처리하는 팩/언팩 기능성 유닛(Functional Unit; FU)을 더 포함할 수 있다.
상기 벡터 도메인부는 상기 복수의 벡터 FU들을 포함할 수 있다.
또 다른 일 측면에 있어서, 하나 이상의 미니-코어들을 포함하고, 상기 하나 이상의 미니-코어들 중 제1 미니-코어는, 스칼라 데이터의 연산을 위한 스칼라 도메인부, 벡터 데이터의 연산을 위한 벡터 도메인부 및 상기 스칼라 도메인부 및 상기 벡터 도메인부 간의 데이터의 전송을 위한 데이터 변환을 처리하는 팩/언팩 기능성 유닛(Functional Unit; FU)를 포함하는 프로세서가 제공된다.
상기 프로세서는 상기 프로세서가 처리해야 할 연산 량에 따라 상기 제1 미니-코어의 동작을 중단킬 수 있다.
상기 프로세서는 상기 제1 미니-코어로 공급되는 클록을 차단하거나, 상기 제1 미니-코어의 전원을 차단함으로써 상기 제1 미니-코어의 동작을 중단시킬 수 있다.
상기 프로세서는 상기 하나 이상의 미니-코어들을 복수의 쓰레드들의 각각에게 분할함으로써 상기 복수의 쓰레드들을 동시에 실행할 수 있다.
상기 프로세서는 상기 복수의 쓰레드들의 각각이 요구하는 연산 량에 따라 상기 복수의 쓰레드들의 각각에게 서로 상이한 개수의 미니-코어들을 할당할 수 있다.
상기 프로세서는 매우 긴 명령어 워드(Very Long Instruction Word; VLIW) 모드 및 코어스-그레인드 리콘피규어블 어레이(Coarse-Grained Reconfigurable Array; CGRA)모드에서 동작할 수 있다.
상기 프로세서가 상기 VLIW 모드에서 동작할 때, 상기 프로세서는 상기 하나 이상의 미니-코어들의 FU들 중 스칼라 FU들을 제외한 나머지 FU들의 동작을 중단시킴으로써 절전 모드에서 동작할 수 있다.
상기 프로세서가 상기 CGRA 모드에서 동작할 때, 상기 프로세서는 상기 하나 이상의 미니-코어들의 모든 FU들을 동작시킴으로써 가속 처리를 지원할 수 있다.
상기 프로세서는, 상기 VLIW 모드 및 상기 CGRA 모드 간에서의 데이터의 전송을 위한 중앙 레지스터 파일을 더 포함할 수 있다.
도 1은 일 실시예에 따른 미니-코어의 구조도이다.
도 2는 일 예에 따른 미니-코어 내의 데이터-패스를 설명한다.
도 3은 일 예에 따른 미니-코어의 용이한 확장성을 설명한다.
도 4는 일 예에 따른 저 전력을 위한 미니-코어의 제어를 설명한다.
도 5는 일 예에 따른 멀티-쓰레드 실행을 설명한다.
도 6은 일 실시예에 따른 하나의 미니-코어 내의 복수의 벡터 FU들을 설명한다.
도 7은 일 예에 따른 개별적으로 동작하는 복수의 벡터 FU들을 설명한다.
도 8은 일 예에 따른 서로 간에 연결된 2 개의 벡터 FU들의 동작을 설명한다.
도 9는 일 예에 따른 서로 간에 연결된 4 개의 벡터 FU들의 동작을 설명한다.
도 10은 일 실시예에 따른 프로세서의 구조를 설명한다.
도 11은 일 예에 따른 지역 레지스터 파일을 설명한다.
이하에서, 첨부된 도면을 참조하여 실시예들을 상세하게 설명한다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.
도 1은 일 실시예에 따른 미니-코어의 구조도이다.
미니-코어(100)는 복수 개의 FU를 결합(combine)함으로써 구성된 단위 코어일 수 있다.
미니-코어(100)는 스칼라 도메인부(110) 및 벡터 도메인부(160)를 포함할 수 있다. 스칼라 도메인부(110)는 스칼라 데이터의 연산을 수행할 수 있다. 벡터 도메인부(160)는 벡터 데이터의 연산을 수행할 수 있다.
스칼라 도메인부(110)는 스칼라 데이터의 연산을 위한 FU를 포함할 수 있다. 스칼라 도메인부(110) 스칼라 FU(120) 및 팩(pack)/언팩(pack) FU(150)를 포함할 수 있다. 벡터 도메인부(160)는 벡터 데이터의 연산을 위한 FU를 포함할 수 있다. 벡터 도메인부(160)는 팩/언팩 FU(150), 벡터 로드(load; LD)/스토어(store; ST) FU(170) 및 벡터 FU(180)를 포함할 수 있다. 예컨대, 미니-코어(100)는 스칼라 FU(110), 팩/언팩 FU(150), 벡터 LD/ST FU(170) 및 벡터 FU(180)를 포함할 수 있다. 설명된 FU들의 종류 및 개수는 예시적인 것이다. 스칼라 FU(120), 팩/언팩 FU(150), 벡터 LD/ST FU(170) 및 벡터 FU(180)는 각각 복수일 수 있다.
스칼라 FU(120)는 스칼라 데이터의 연산, 제어에 관련된 코드 또는 명령어를 처리할 수 있다. 제어에 관련된 코드 또는 명령어는, 비교(comparison) 연산 또는 분기(branch) 연산에 관련된 코드 또는 명령어일 수 있다. 또한, 스칼라 FU(120)는 스칼라 데이터의 로드 및 스토어를 처리할 수 있다. 또한, 스칼라 FU(120)는 공통적으로 사용되는 단일-사이클(single-cycle) 명령어들을 처리할 수 있다.
스칼라 데이터는 다수의 데이터가 조합되지 않은, 최소의 연산 단위의 데이터일 수 있다. 일반적으로, 하기의 기본적인 프리미티브(primitive) 데이터 타입은 스칼라 데이터의 타입으로 간주될 수 있다.
1) 불리언(boolean) 데이터 타입
2) 뉴메릭(nuemeric) 타입들 (예컨대, "int", "short int", "float" 및 "double")
3) 케릭터 타입들 (예컨대, "char" 및 "string")
스칼라 FU(120)는 단일한 데이터 타입을 위한 것이기 때문에, 일반적으로 스칼라 FU(120)는 낮은 비트-넓이의 데이터-패스를 요구한다.
벡터 LD/ST FU(170)는 벡터 데이터의 로드 및 스토어를 처리할 수 있다. 벡터 LD/ST FU(170)는 벡터 메모리로부터 데이터를 로드할 수 있고, 벡터 메모리에 데이터를 스토어할 수 있다. 벡터 데이터의 로드 및 스토어는 벡터 LD/ST FU(170)에서만 이루어질 수도 있다.
벡터 FU(180)는 벡터 데이터의 연산을 처리할 수 있다. 벡터 FU(180)는 단일 명령어 다중 데이터(Single Instruction Multiple Data; SIMD)로 벡터 데이터의 연산을 처리할 수 있다. 벡터 데이터의 연산은 벡터 산술(arithmetic), 쉬프트(shift), 곱(multiplication), 비교(comparison) 및 데이터 셔플링(data shuffling)을 포함할 수 있고, 소프트디맵(softdemap)을 위한 몇몇 특별한 명령어들이 후술될 VFU 모드에서 지원될 수 있다.
SIMD는 하나의 명령어를 사용하여 다수의 데이터를 동시에 처리하는 병렬 기법일 수 있다. SIMD는 다수의 연산 장치들이 주로 동일한 연산을 다수의 데이터에 동시에 -용하여 다수의 데이터를 동시에 처리하는 방식일 수 있다. SIMD는 벡터 프로세서에 이용될 수 있다.
벡터 데이터는 동일한 타입의 다수의 스칼라 데이터를 포함하는 데이터일 수 있다. 벡터 데이터는 다수의 스칼라 데이터가 묶여진(merged) 연산 단위의 데이터일 수 있다.
예컨대, 오픈씨엘(OpenCL)에서는, "charn", "ucharn", "shortn", "ushortn", "intn", "longn", "ulongn" 및 "floatn" 등의 벡터 데이터의 타입이 정의되었다. n은 스칼라 데이터의 개수를 나타낸다. n의 값은 2 이상이며, 일반적으로 2, 4, 8 및 16 등이 n의 값으로서 사용된다.
벡터 데이터는 다수의 데이터가 묶여진 것이기 때문에, 벡터 FU(180)는 높은 비트-넓이의 데이터-패스를 요구한다.
벡터 FU(180)는 다수의 데이터를 병렬로 처리하는 유닛이다. 따라서, 벡터 FU(180)의 크기는 다른 FU의 크기에 비해 더 클 수 있고, 미니-코어(100) 내의 영역 중 대부분을 차지할 수 있다.
팩/언팩 FU(150)는 스칼라 도메인부(110) 및 벡터 도메인부(160) 간의 데이터의 전송을 위한 데이터 변환을 처리할 수 있다. 팩/언팩 FU(150)는 스칼라 도메인부(110) 및 벡터 도메인부(160)의 공통의 FU일 수 있다. 또는, 팩/언팩 FU(150)는 스칼라 도메인부(110) 및 벡터 도메인부(160) 사이에서 공유될 수 있다.
팩/언팩 FU(150)는 다수의 스칼라 데이터를 벡터 데이터로 변환할 수 있다. 팩/언팩 FU(150)는 다수의 스칼라 데이터를 묶음으로써 벡터 데이터를 생성할 수 있다. 또는, 팩/언팩 FU(150)는 벡터 데이터의 특정한 위치에 스칼라 데이터를 삽입(insert)함으로써 벡터 데이터를 생성 또는 갱신할 수 있다.
팩/언팩 FU(150)는 벡터 데이터를 하나 또는 다수의 스칼라 데이터로 변환할 수 있다. 팩/언팩 FU(150)는 벡터 데이터를 분할함으로써 다수의 스칼라 데이터를 생성할 수 있다. 또는, 팩/언팩 FU(150)는 벡터 데이터의 특정한 위치 또는 슬롯(slot)에서의 요소를 추출(extract)함으로써 스칼라 데이터를 생성할 수 있다. 벡터 데이터의 요소는 스칼라 데이터일 수 있다.
말하자면, 팩/언팩 FU(150)는 스칼라 도메인 및 벡터 도메인의 중간에 위치할 수 있고, 스칼라 도메인 및 벡터 도메인의 가교의 역할을 할 수 있다. 스칼라 도메인 및 벡터 도메인 간의 데이터의 교환은 가교의 역할을 하는 팩/언팩 FU(150)에 의한 데이터의 형 변환(type conversion)의 이후에 이루어질 수 있다.
상술된 FU들 간의 조합을 통해, 미니-코어(100)는 프로세서에서 처리되어야 하는 모든 명령어들을 처리할 수 있다. 따라서, 프로세서 내에 하나의 미니-코어(100)만이 독립적으로 존재 또는 동작하더라도, 프로세서 또한 동작할 수 있다.
전술된 것처럼, FU는 스칼라 FU(120), 팩/언팩 FU(150), 벡터 LD/ST FU(170) 및 벡터 FU(180)의 핵심 FU들로 분리될 수 있으며, 핵심 FU들이 미니-코어(100)를 구성할 수 있다. 다양한 FU들의 임의의(random) 조합 대신, 미니-코어(100)의 확장을 통해 프로세서 내의 로직이 단순화될 수 있다. 또한, 미니-코어(100)의 확장을 통해, 디자인 공간 탐색(design space exploration; DSE)에 있어서 발생 가능한 디자인의 경우의 개수가 대폭적으로 감소될 수 있다.
도 2는 일 예에 따른 미니-코어 내의 데이터-패스를 설명한다.
스칼라 도메인부(110)의 FU들 간에는 데이터-패스가 존재할 수 있다. 예컨대, 미니-코어(100)는 스칼라 FU(120) 및 팩/언팩 FU(150) 간의 데이터-패스를 포함할 수 있다.
벡터 도메인의 FU(160)의 FU들 간에는 데이터-패스가 존재할 수 있다. 예컨대, 미니-코어(100)는 팩/언팩 FU(150), 벡터 LD/ST FU(170) 및 벡터 FU(180) 중 2 개의 FU들 간의 데이터-패스를 포함할 수 있다.
팩/언팩 FU(150)를 제외하고, 스칼라 도메인부(110) 및 벡터 도메인의 FU(150)를 직접적으로 연결하는 데이터-패스는 존재하지 않을 수 있다. 말하자면, 스칼라 도메인부(110) 및 벡터 도메인의 FU(160) 간의 데이터의 전달은 팩/언팩 FU(150)에서의 형 변환의 후에 수행될 수 있다. 형 변환은 스칼라 데이터의 벡터 데이터로의 변환 및 벡터 데이터의 스칼라 데이터로의 변환을 포함할 수 있다.
동일한 도메인 내의 FU들은 풀(full) 데이터 연결을 가질 수 있다. 데이터-패스의 넓이는 도메인 별로 서로 상이할 수 있다.
예외적으로, 스칼라 FU(120)에서 연산된, 로드 또는 스토어를 위한 메모리 주소의 값은 벡터 LD/ST FU(170)로 전달될 수 있다. 미니-코어(100)는 로드 또는 스토어를 위한 메모리 주소를 스칼라 FU(120)로부터 벡터 LD/ST FU(170)로 전달하기 위한 데이터-패스를 포함할 수 있다. 여기서, 메모리 주소를 전달하기 위한 데이터-패스는 상대적으로 좁은 데이터-패스일 수 있다. 후술될 데이터 전달을 위한 데이터-패스는 상대적으로 넓은 데이터-패스일 수 있다.
미니-코어들 간의 데이터 전달을 의해 두 가지의 타입의 채널들이 존재할 수 있다. 두 가지의 타입의 채널을은 스칼라 데이터 채널 및 벡터 데이터 채널일 수 있다.
미니-코어(100)는 스칼라 데이터 채널을 통해 다른 미니-코어로 스칼라 데이터를 전송할 수 있고, 스칼라 데이터 채널을 통해 다른 미니-코어로부터 스칼라 데이터를 수신할 수 있다. 스칼라 데이터 채널은 스칼라 도메인부(110)의 FU에 연결될 수 있다.
미니-코어(100)는 벡터 데이터 채널을 통해 다른 미니-코어로 벡터 데이터를 전송할 수 있고, 벡터 데이터 채널을 통해 다른 미니-코어로부터 벡터 데이터를 수신할 수 있다. 벡터 데이터 채널은 벡터 도메인의 FU(160)의 FU에 연결될 수 있다.
미니-코어(100)는 다른 미니-코어들 각각과의 스칼라 데이터의 전송을 위해 다른 미니-코어들의 개수만큼의 스칼라 데이터 채널들을 가질 수 있다. 스칼라 데이터 채널들은 다른 미니-코어들에 각각 연결될 수 있다. 또는, 멀티-패스를 위해, 미니-코어(100)는 다른 미니-코어들의 개수 이상의 개수의 스칼라 데이터 채널들을 가질 수 있다. 미니-코어(100)는 복수의 스칼라 데이터 채널들을 통해 하나의 다른 미니-코어와 스칼라 데이터를 교환할 수 있다.
미니-코어(100)는 다른 미니-코어들 각각과의 벡터 데이터의 전송을 위해 다른 미니-코어들의 개수만큼의 벡터 데이터 채널들을 가질 수 있다. 벡터 데이터 채널들은 다른 미니-코어들에 각각 연결될 수 있다. 또는, 멀티-패스를 위해, 미니-코어(100)는 다른 미니-코어들의 개수 이상의 개수의 벡터 데이터 채널들을 가질 수 있다. 미니-코어(100)는 복수의 벡터 데이터 채널들을 통해 하나의 다른 미니-코어와 벡터 데이터를 교환할 수 있다.
상술된 것과 같은 데이터 채널의 구성을 통해, 연결이 요구되지 않는 FU들 간의 데이터-패스가 미니-코어 및 프로세서에서 제외될 수 있다. 말하자면, FU들 간의 데이터-패스 중 불필요한 데이터-패스를 제거함으로써 미니-코어(100) 또는 프로세서 내의 연결을 최소화할 수 있다. 예컨대, 불필요한 데이터 패스는 스칼라 FU(120) 및 벡터 FU(180) 간의 데이터-패스일 수 있다.
미니-코어(100)에게 스칼라 데이터 채널 및 벡터 데이터 채널을 제공함으로써 미니-코어들 간의 데이터의 전송이 단순화될 수 있다.
미니-코어(100)는 벡터 메모리(210)를 더 포함할 수 있다. 벡터 메모리(210)는 벡터 LD/ST FU(170)의 전용의 메모리일 수 있다. 미니-코어(100)는 벡터 LD/ST FU(170)가 벡터 메모리(210)에 접근하기 위해 사용하는 접근 포트(access port)를 더 포함할 수 있다. 접근 포트를 통한 벡터 메모리(210)로의 접근에 의해, 벡터 메모리(210)는 벡터 LD/ST FU(170) 외의 다른 FU들과 공유되지 않을 수 있다. 벡터 메모리(210)를 공유하지 않음으로써 포트의 개수가 감소될 수 있고, 벡터 메모리(210)의 접근에 관련된 접근 로직이 단순화될 수 있다. 포트의 개수의 감소 및 접근 로직의 단순화는 프로세서의 전력 소모 및 미니-코어(100)의 면적(area)의 측면에서 이익이 될 수 있다.
도 3은 일 예에 따른 미니-코어의 용이한 확장성을 설명한다.
프로세서(300)는 하나 이상의 미니-코어들을 포함할 수 있다.
하나 이상의 미니-코어들의 각각은 도 1을 참조하여 전술된 미니-코어(100)일 수 있다. 도 3에서는, 하나 이상의 미니-코어들로서, MC0(310-1), MC1(310-2), MC2(310-3) 및 MCm(310-4)가 도시되었다. MC0(310-1), MC1(310-2), MC2(310-3) 및 MCm(310-4)는 각각 미니-코어(100)일 수 있다. 말하자면, 도 3에서, 프로세서(300)는 m+1 개의 미니-코어들을 포함하는 것으로 도시되었다.
각 미니-코어 내에서, FU들이 도시되었다. 도 3에서는, 각 미니-코어의 FU들이 FU0, FU1 및 FUn으로 표시되었다. 말하자면, 각 미니-코어는 n+1 개의 FU들을 포함할 수 있다. FU들은 각각 스칼라 FU(120), 팩/언팩 FU(150), 벡터 LD/ST FU(170) 및 벡터 FU(180) 중 하나일 수 있다.
또는, 하나 이상의 미니-코어들 중 제1 미니-코어는 도 1을 참조하여 전술된 미니-코어(100)일 수 있다.
도 1을 참조하여 전술된 것과 같이 하나의 미니-코어(100)는 프로세서에서 처리되어야 하는 모든 명령어들을 처리할 수 있다. 프로세서(300) 상에서 어떤 어플리케이션이 실행될 때, 어플리케이션에 의해 요구되는 연산 량은 어플리케이션마다 모두 상이할 수 있다. 프로세서(300)는, 간단한 어플리케이션에 대해서는 한 개의 미니-코어(100)를 사용함으로써 어플리케이션에 의해 요구되는 연산 량에 대응할 수 있다. 또한, 프로세서(300)는, 더 많은 연산 량을 요구하는 어플리케이션에 대해서는 요구되는 연산 량에 맞춰 사용될 미니-코어(100)의 개수를 조절할 수 있다.
효율적으로 구성된 미니-코어들을 확장함으로써, 프로세서(300)의 설계가 용이하게 이루어질 수 있다.
도 4는 일 예에 따른 저 전력을 위한 미니-코어의 제어를 설명한다.
프로세서(300)는 하나 이상의 미니-코어들 중 일부 또는 전부의 미니-코어의 동작을 중단시킬 수 있다. 도 4에서, 미니-코어들 중 1 개의 미니-코어(100)를 제외한 나머지 미니-코어들인 MC1(310-2), MC2(310-2) 및 MCm(310-4)의 동작이 중단된 것으로 도시되었다.
프로세서(300)가 적은 연산 량을 요구하는 어플리케이션을 실행할 경우, 프로세서(300)는 하나 이상의 미니-코어들 중 일부의 동작을 중단시킬 수 있다.
예컨대, 프로세서(300)는, 프로세서(300)가 처리해야 할 연산 량에 따라, 하나 이상의 미니-코어들 중 제1 미니-코어의 동작을 중단시킬 수 있다. 제1 미니-코어는 도 1을 참조하여 전술된 미니-코어(100)일 수 있다. 프로세서(300)는 제1 미니-코어로 공급되는 클록(clock)를 차단함으로써 제1 미니-코어의 동작을 중단시킬 수 있다. 또는, 프로세서(300)는 제1 미니-코어의 전원을 차단함으로써 제1 미니-코어의 동작을 중단시킬 수 있다. 말하자면, 프로세서(300)는 클록 게이팅(clock gating) 또는 파위 게이팅(power gating)을 통해 제1 미니-코어에 의해 소모되는 전력을 감소시킬 수 있다. 상술된 클록 또는 전원의 차단을 통해, 프로세서(300)의 저전력 모드(mode)가 용이하게 구현될 수 있다.
프로세서(300)는 큰 연산 량을 요구하는 어플리케이션을 실행할 경우, 가용한 모든 미니-코어들을 모두 활성화(activate)할 수 있고, 모든 미니-코어들을 사용하여 어플리케이션을 실행할 수 있다.
도 5는 일 예에 따른 멀티-쓰레드 실행을 설명한다.
프로세서(300)는 복수의 쓰레드(thread)들을 실행할 수 있다. 프로세서(300)는 하나 이상의 미니-코어들의 각각을 복수의 쓰레드들 중 하나의 쓰레드에 할당할 수 있다. 프로세서(300)는 하나 이상의 미니-코어들을 복수의 쓰레드들의 각각에게 분할함으로써 복수의 쓰레드들을 동시에 실행할 수 있다.
도 5에서, 하나 이상의 미니-코어들로서, MC0(510-1), MC1(510-2), MC2(510-3) 및 MC3(510-4)가 도시되었다. MC0(510-1), MC1(510-2), MC2(510-3) 및 MC3(510-4)는 각각 미니-코어(100)일 수 있다.
도 5에서, MC0(510-1) 및 MC1(510-2)는 제1 쓰레드에 할당되었고, MC2(510-3) 및 MC3(510-4)는 제2 쓰레드에 할당되었다.
도 5에서는, 각 쓰레드에 동일한 개수의 미니-코어들이 할당되었다. 프로세서(300)는 복수의 쓰레드들의 각각이 요구하는 연산 량에 따라, 복수의 쓰레드들의 각각에게 서로 상이한 개수의 미니-코어들을 할당할 수 있다. 말하자면, 프로세서(300)는 더 큰 연산량을 요구하는 쓰레드에게 더 많은 개수의 미니-코어들을 할등할 수 있다.
또한, 프로세서(300)는 하나 이상의 미니-코어들의 개수만큼의 쓰레드들을 동시에 실행할 수 있고, 쓰레드들 각각에게 하나의 미니-코어를 할당할 수 있다.
도 6은 일 실시예에 따른 하나의 미니-코어 내의 복수의 벡터 FU들을 설명한다.
도 1을 참조하여 전술된 벡터 FU(180)는 복수일 수 있다. 미니-코어(100)는 복수의 벡터 FU들을 포함할 수 있다. 도 6에서, 복수의 벡터 FU들로서, 제1 벡터 FU(610-1), 제2 벡터 FU(610-2), 제3 벡터 FU(610-3), 제4 벡터 FU(610-4) 및 제k 벡터 FU(610-5)가 도시되었다. 제1 벡터 FU(610-1), 제2 벡터 FU(610-2), 제3 벡터 FU(610-3), 제4 벡터 FU(610-4) 및 제k 벡터 FU(610-5)는 각각 벡터 FU(180)일 수 있다.
도 6에서, 복수의 벡터 FU들은 각각 j-비트의 벡터 데이터의 연산을 처리할 수 있다. j는 1 이상의 정수일 수 있다. k는 복수의 벡터 FU들의 개수를 나타낼 수 있다. k는 2 이상의 정수일 수 있다.
복수의 벡터 FU들은 상기 복수의 벡터 FU들이 처리 가능한 비트-길이보다 더 큰 비트-길이의 벡터 데이터를 처리하기 위해 서로 연결(concatenate)되어 동작할 수 있다.
도 7은 일 예에 따른 개별적으로 동작하는 복수의 벡터 FU들을 설명한다.
도 7에서, 복수의 벡터 FU들로서, 제1 벡터 FU(710-1), 제2 벡터 FU(710-2), 제3 벡터 FU(710-3) 및 제4 벡터 FU(710-4)가 도시되었다. 제1 벡터 FU(710-1), 제2 벡터 FU(710-2), 제3 벡터 FU(710-3) 및 제4 벡터 FU(710-4)는 각각 벡터 FU(180)일 수 있다.
4 개의 벡터 FU들은 각각 128-비트의 벡터 데이터의 연산을 처리할 수 있는 것으로 도시되었다. 말하자면, k의 값은 4 이고, j의 값은 128일 수 있다.
도 7에서, 4 개의 128-비트의 복수의 벡터들은 개별적으로 동작할 수 있다.
도 8은 일 예에 따른 서로 간에 연결된 2 개의 벡터 FU들의 동작을 설명한다.
도 8에서, 연결된 제1 벡터 FU(710-1) 및 제2 벡터 FU(710-2)는 마치 하나의 256-비트의 벡터 FU로서 동작할 수 있다. 또한, 연결된 제3 벡터 FU(710-3) 및 제4 벡터 FU(710-4)는 마치 다른 하나의 256-비트의 벡터 FU로서 동작할 수 있다.
도 9는 일 예에 따른 서로 간에 연결된 4 개의 벡터 FU들의 동작을 설명한다.
도 9에서, 서로 간에 연결된 제1 벡터 FU(710-1), 제2 벡터 FU(710-2), 제3 벡터 FU(710-3) 및 제4 벡터 FU(710-4)는 마치 하나의 512-비트의 벡터 FU로서 동작할 수 있다.
도 7 내지 도 9를 참조하여 설명된 것처럼, 프로세서(300)는 복수의 벡터 FU들 동적으로 재구성(reconfigure)함으로써 다양한 비트-넓이의 SIMD 처리를 제공할 수 있다.
프로세서(300)는 복수의 벡터 FU들을 사용함으로써 프로세서 상에서 수행되는 어플리케이션에 따라 복수의 데이터 레벨 병렬(Data Level Parallelism; DLP)들을 제공할 수 있다. 어플리케이션의 특성에 따라, 특정한 어플리케이션을 매우 넓은(wide) SIMD로 처리하는 것은 비효율적일 수 있다. 프로세서(300)는, 넓은 SIMD를 사용하기에 부적합한 어플리케이션에 대해서, 어플리케이션의 처리를 좁은(narrow) 비트-넓이를 갖는 다수의 벡터 FU에 분할할 수 있다.
도 10은 일 실시예에 따른 프로세서의 구조를 설명한다.
도 10의 프로세서(1000)는 도 3을 참조하여 전술된 프로세서(300)에 대응할 수 있다. 프로세서(300)에 대한 설명은 프로세서(1000)에도 적용될 수 있다.
프로세서(1000)는 제어부(1010), 명령어 메모리(instruction memory)(1020), 스칼라 메모리(1030), 중앙 레지스터 파일(central register file)(1040), 복수의 미니-코어들, 복수의 벡터 메모리들 및 구성 메모리(configuration memory)(170)를 포함할 수 있다.
도 10에서, 복수의 미니-코어들로서, MC0(1050-1), MC1(1050-2) 및 MC2(1050-3)이 도시되었다. MC0(1050-1), MC1(1050-2) 및 MC2(1050-3)는 각각 미니-코어(100)일 수 있다. 복수의 벡터 메모리들로서 제1 벡터 메모리(1060-1) 및 제2 벡터 메모리(1060-2)이 도시되었다.
제어부(1010)는 프로세서(1000)의 다른 구성요소들을 제어할 수 있다. 예컨대, 제어부(1010)는 복수의 미니-코어들을 제어할 수 있다. 제어부(1010)는 하나 이상의 미니-코어들 중 일부 또는 전부의 미니-코어의 동작을 중단시킬 수 있다. 제어부(1010)는 미니-코어의 동작, 쓰레드의 실행 및 복수의 벡터 FU들의 연결에 관련하여 전술된 프로세서(300)의 기능을 수행할 수 있다.
명령어 메모리(1020) 및 구성(configuration) 메모리(1070)는 프로세서(1000) 또는 미니-코어가 실행할 명령어들을 저장할 수 있다.
스칼라 메모리(1030)는 스칼라 데이터를 저장할 수 있다.
중앙 레지스터 파일(1040)은 레지스터들을 저장할 수 있다.
프로세서(1000)는 VLIW 모드 및 CGRA 모드에서 동작할 수 있다. VLIW 모드에서, 프로세서(1000)는 스칼라 데이터를 처리하거나, 제어 연산을 수행할 수 있다. CGRA 모드에서, 프로세서는 가속/병렬처리가 요구되는 코드 내의, 루프 등의 연산을 처리할 수 있다. 여기서, 루프는 재귀적(recursive) 루프일 수 있다. 루프 내의 연산은 심한(heavy) 벡터 프로세싱을 요구할 수 있다. 말하자면, 제어에 관련된 명령어들은 VLIW 모드에서만 가용할 수도 있고, 벡터 명령어들은 CGRA 모드에서만 가용할 수도 있다. 이러한 2 개의 모드들 간의 명령어들의 엄격한 분리(strict separation)는 프로세서(1000)의 디자인을 더 단순하게 할 수 있고, 전력 효율을 향상시킬 수 있다.
VLIW 모드에서, 명령어들은 명령어 메모리(1020)로부터 패치(fetch)될 수 있다. 패치된 명령어들은 복수의 미니-코어들의 스칼라 FU들에 의해 실행될 수 있다. CGRA 모드에서, 명령어들은 구성(configuration) 메모리(1070)로부터 패치될 수 있다. 패치된 명령어들은 복수의 미니-코어들의 모든 FU들에 의해 실행될 수 있다.
복수의 미니-코어들의 FU들 중, 스칼라 FU는 VLIW 모드 및 CGRA 모드 양자에서 사용될 수 있다. 말하자면, 스칼라 FU는 VLIW 모드 및 CGRA 모드에서 공유될 수 있다. 프로세서(1000)는 VLIW 모드에서 동작할 때, 프로세서(1000)는 미니-코어들의 FU들 중 3 개의 스칼라 FU들만을 동시에 동작시킬 수 있다.
프로세서(1000)의 동작 모드가 VLIW 모드에서 CGRA 모드로 변환되면, 프로세서(1000)는 복수의 미니-코어들의 모든 FU들을 동작시킬 수 있다. 프로세서(1000)가 CGRA 모드에서 동작할 때, 프로세서(1000)는 복수의 미니-코어들의 모든 FU들을 동작시킴으로써 가속 처리를 지원할 수 있다.
따라서, 프로세서(1000)가 VLIW 모드에서 동작할 때, 프로세서(1000)는 복수의 미니-코어들의 FU들 중 스칼라 FU들을 제외한 불필요한 나머지 FU들의 동작을 중단시킴으로써 절전 모드에서 동작할 수 있다. 여기서, 나머지 FU들은 팩/언팩 FU, 벡터 LD/ST FU 및 벡터 FU를 포함할 수 있다. 2 개의 모드들 간에 요구되는 파라미터들을 공통되는 FU를 통해 전송함으로써, 프로세서(1000)는 빠르게 동작 모드를 전환할 수 있으며, VLIW 모드 및 CGRA 모드 간의 데이터의 복사가 회피될 수 있다.
복수의 미니-코어들의 FU들 중 스칼라 FU들만이 중앙 레지스터 파일(1040)에 대한 접근이 가능할 수 있다. 중앙 레지스터 파일(1040)에 대한 접근을 스칼라 FU들만으로 제한함으로써 광폭의(wide) 레지스터 파일을 배제할 수 있다. 또는, 복수의 미니-코어들은 각각 중앙 레지스터 파일(1040)에 대한 독출(read) 접근을 할 수 있고, 복수의 미니-코어들 중 단지 스칼라 FU들만이 각각 중앙 레지스터 파일(1040)에 대한 기입(write) 접근을 할 수 있을 수 있다.
복수의 미니-코어들의 각각은 복수의 벡터 메모리들 중 하나의 벡터 메모리를 사용할 수 있다. 또는, 복수의 미니-코어들의 각각은 복수의 벡터 메모리들 중 하나의 벡터 메모리를 포함할 수 있다. 도 10에서, MC0(1050-1)는 제1 벡터 메모리(1060-1)를 사용할 수 있다. MC2(1050-3)는 제2 벡터 메모리(1060-2)를 사용할 수 있다.
복수의 미니-코어들의 각각에게 별개의 벡터 메모리를 제공함으로써, 큐(queue)와 같은 벡터 메모리의 공유를 위한 복잡한 구조가 요구되지 않을 수 있다. 말하자면, 미니-코어들 각각에게 개별적으로 제공된 메모리에 의해 메모리 접근 로직이 단순하게 될 수 있다. 복잡한 구조의 배제는 프로세서(1000)의 디자인을 단순하게 할 수 있고, 전력 및 면적에 있어서 프로세서(1000)에게 이득을 줄 수 있다.
도 11은 일 예에 따른 지역 레지스터 파일을 설명한다.
프로세서(1000)는 두 가지 타입들의 레지스터 파일들을 제공할 수 있다. 도 10을 참조하여 전술된 중앙 레지스터 파일(1040)은 주로 VLIW 모드 및 CGRA 모드 간에서의 데이터의 전송을 위해 사용될 수 있다. CGRA 모드의 라이브-인(live-in) 변수들 및 라이브-아웃(live-out) 변수들은 중앙 레지스터 파일(1040) 내에 머무를 수 있다.
미니-코어(100)는 스칼라 FU(120)를 위한 제1 지역 레지스터 파일(Local Register File; LRF)(1110) 및 벡터 FU(180)을 위한 제2 지역 레지스터 파일(1120)을 더 포함할 수 있다. 제1 지역 데이터 레지스터 파일(1110)은 몇몇 싸이클들 후에 스칼라 FU(120)가 스칼라 데이터를 요구할 때, 상기의 스칼라 데이터를 임시로 저장할 수 있다. 제2 지역 데이터 레지스터 파일(1120)는 몇몇 싸이클들 후에 벡터 FU(180)가 벡터 데이터를 요구할 때, 상기의 벡터 데이터를 임시로 저장할 수 있다.
전술된 실시예들에 의해 다수의 FU들의 조합인 미니-코어(100)가 구성될 수 있다. 미니-코어(100)에 의해 FU들 및 FU들의 연결인 데이터-패스의 구조가 최소화될 수 있다. 미니-코어의 개수를 조절함으로써 프로세서는 요구되는 연산량에 쉽게 대응할 수 있는 확장성을 가질 수 있다.
미니-코어(100) 및 프로세서는 DLP를 사용하는 멀티미디어 분야 및 통신 분야에서 널리 사용될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.

Claims (18)

  1. 스칼라 데이터의 연산을 위한 스칼라 도메인부;
    벡터 데이터의 연산을 위한 벡터 도메인부; 및
    상기 스칼라 도메인부 및 상기 벡터 도메인부에 의해 공유되고, 상기 스칼라 도메인부 및 상기 벡터 도메인부 간의 데이터의 전송을 위한 데이터 변환을 처리하는 팩/언팩(park/unpack) 기능성 유닛(Functional Unit; FU)
    을 포함하는 미니-코어.
  2. 제1항에 있어서,
    상기 스칼라 도메인부는,
    스칼라 데이터의 연산을 처리하는 스칼라 FU를 포함하는 미니-코어.
  3. 제1항에 있어서,
    상기 팩/앤팩 FU는 다수의 스칼라 데이터를 상기 벡터 데이터로 변환하고, 상기 벡터 데이터의 특정한 위치에서의 요소를 추출함으로써 상기 스칼라 데이터를 생성하는 미니-코어.
  4. 제1항에 있어서,
    상기 벡터 도메인부는,
    벡터 데이터의 로드 및 스토어를 처리하는 벡터 로드(load; LD)/스토어(store; ST) FU; 및
    상기 벡터 데이터의 연산을 처리하는 벡터 FU
    를 포함하는 미니-코어.
  5. 제4항에 있어서,
    상기 벡터 FU는 복수이고,
    상기 복수의 벡터 FU들은 상기 복수의 벡터 FU들이 처리 가능한 비트-길이보다 더 큰 비트-길이의 벡터 데이터를 처리하기 위해 서로 연결(concatenate)되어 동작하는 미니-코어.
  6. 제4항에 있어서,
    상기 벡터 도메인부는 상기 벡터 데이터를 저장하는 벡터 메모리
    를 더 포함하는 미니-코어.
  7. 제1항에 있어서,
    상기 미니-코어는 스칼라 데이터 채널을 통해 다른 미니-코어로 상기 스칼라 데이터를 전송하고,
    상기 미니-코어는 벡터 데이터 채널을 통해 상기 다른 미니-코어로 상기 벡터 데이터를 전송하는 미니-코어.
  8. 벡터 데이터의 연산을 처리하는 복수의 벡터 기능성 유닛(Functional Unit; FU)들
    을 포함하고,
    상기 복수의 벡터 FU들은 상기 복수의 벡터 FU들이 처리 가능한 비트-길이보다 더 큰 비트-길이의 벡터 데이터를 처리하기 위해 서로 연결(concatenate)되어 동작하는 미니-코어.
  9. 제8항에 있어서,
    상기 미니-코어는,
    스칼라 데이터의 연산을 위한 스칼라 도메인부;
    벡터 데이터의 연산을 위한 벡터 도메인부; 및
    상기 스칼라 도메인부 및 상기 벡터 도메인부에 의해 공유되고, 상기 스칼라 도메인부 및 상기 벡터 도메인부 간의 데이터의 전송을 위한 데이터 변환을 처리하는 팩/언팩 기능성 유닛(Functional Unit; FU)
    을 더 포함하고,
    상기 벡터 도메인부는 상기 복수의 벡터 FU들을 포함하는 미니-코어.
  10. 하나 이상의 미니-코어들
    을 포함하고,
    상기 하나 이상의 미니-코어들 중 제1 미니-코어는,
    스칼라 데이터의 연산을 위한 스칼라 도메인부;
    벡터 데이터의 연산을 위한 벡터 도메인부; 및
    상기 스칼라 도메인부 및 상기 벡터 도메인부 간의 데이터의 전송을 위한 데이터 변환을 처리하는 팩/언팩 기능성 유닛(Functional Unit; FU)
    를 포함하는 프로세서.
  11. 제10항에 있어서,
    상기 프로세서는 상기 프로세서가 처리해야 할 연산 량에 따라 상기 제1 미니-코어의 동작을 중단시키는 프로세서.
  12. 제11항에 있어서,
    상기 프로세서는 상기 제1 미니-코어로 공급되는 클록을 차단하거나, 상기 제1 미니-코어의 전원을 차단함으로써 상기 제1 미니-코어의 동작을 중단시키는 프로세서.
  13. 제11항에 있어서,
    상기 프로세서는 상기 하나 이상의 미니-코어들을 복수의 쓰레드들의 각각에게 분할함으로써 상기 복수의 쓰레드들을 동시에 실행하는 프로세서.
  14. 제13항에 있어서,
    상기 프로세서는 상기 복수의 쓰레드들의 각각이 요구하는 연산 량에 따라 상기 복수의 쓰레드들의 각각에게 서로 상이한 개수의 미니-코어들을 할당하는 프로세서.
  15. 제10항에 있어서,
    상기 프로세서는 매우 긴 명령어 워드(Very Long Instruction Word; VLIW) 모드 및 코어스-그레인드 리콘피규어블 어레이(Coarse-Grained Reconfigurable Array; CGRA)모드에서 동작하는 프로세서.
  16. 제15항에 있어서,
    상기 프로세서가 상기 VLIW 모드에서 동작할 때, 상기 프로세서는 상기 하나 이상의 미니-코어들의 FU들 중 스칼라 FU들을 제외한 나머지 FU들의 동작을 중단시킴으로써 절전 모드에서 동작하는 프로세서.
  17. 제15항에 있어서,
    상기 프로세서가 상기 CGRA 모드에서 동작할 때, 상기 프로세서는 상기 하나 이상의 미니-코어들의 모든 FU들을 동작시킴으로써 가속 처리를 지원하는 프로세서.
  18. 제15항에 있어서,
    상기 VLIW 모드 및 상기 CGRA 모드 간에서의 데이터의 전송을 위한 중앙 레지스터 파일
    을 더 포함하는, 프로세서.
KR20130078310A 2013-07-04 2013-07-04 미니-코어를 사용하는 프로세서 KR20150005062A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR20130078310A KR20150005062A (ko) 2013-07-04 2013-07-04 미니-코어를 사용하는 프로세서
US14/324,302 US20150012723A1 (en) 2013-07-04 2014-07-07 Processor using mini-cores

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR20130078310A KR20150005062A (ko) 2013-07-04 2013-07-04 미니-코어를 사용하는 프로세서

Publications (1)

Publication Number Publication Date
KR20150005062A true KR20150005062A (ko) 2015-01-14

Family

ID=52133623

Family Applications (1)

Application Number Title Priority Date Filing Date
KR20130078310A KR20150005062A (ko) 2013-07-04 2013-07-04 미니-코어를 사용하는 프로세서

Country Status (2)

Country Link
US (1) US20150012723A1 (ko)
KR (1) KR20150005062A (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180100551A (ko) * 2016-01-20 2018-09-11 캠브리콘 테크놀로지스 코퍼레이션 리미티드 행렬 연산 장치 및 방법
KR20190073593A (ko) * 2016-01-20 2019-06-26 캠브리콘 테크놀로지스 코퍼레이션 리미티드 벡터 계산 장치
US11734383B2 (en) 2016-01-20 2023-08-22 Cambricon Technologies Corporation Limited Vector and matrix computing device

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102423377B1 (ko) 2013-08-05 2022-07-25 트위스트 바이오사이언스 코포레이션 드 노보 합성된 유전자 라이브러리
CA2975852A1 (en) 2015-02-04 2016-08-11 Twist Bioscience Corporation Methods and devices for de novo oligonucleic acid assembly
WO2016126987A1 (en) 2015-02-04 2016-08-11 Twist Bioscience Corporation Compositions and methods for synthetic gene assembly
WO2016172377A1 (en) 2015-04-21 2016-10-27 Twist Bioscience Corporation Devices and methods for oligonucleic acid library synthesis
CN108368482A (zh) 2015-09-18 2018-08-03 特韦斯特生物科学公司 寡核酸变体文库及其合成
KR20180058772A (ko) 2015-09-22 2018-06-01 트위스트 바이오사이언스 코포레이션 핵산 합성을 위한 가요성 기판
CN108603307A (zh) 2015-12-01 2018-09-28 特韦斯特生物科学公司 功能化表面及其制备
US10007519B2 (en) * 2015-12-22 2018-06-26 Intel IP Corporation Instructions and logic for vector bit field compression and expansion
JP6854340B2 (ja) 2016-08-22 2021-04-07 ツイスト バイオサイエンス コーポレーション デノボ合成された核酸ライブラリ
KR102217487B1 (ko) 2016-09-21 2021-02-23 트위스트 바이오사이언스 코포레이션 핵산 기반 데이터 저장
EA201991262A1 (ru) 2016-12-16 2020-04-07 Твист Байосайенс Корпорейшн Библиотеки вариантов иммунологического синапса и их синтез
EP3586255A4 (en) 2017-02-22 2021-03-31 Twist Bioscience Corporation NUCLEIC ACID-BASED DATA STORAGE
WO2018170169A1 (en) 2017-03-15 2018-09-20 Twist Bioscience Corporation Variant libraries of the immunological synapse and synthesis thereof
WO2018231864A1 (en) 2017-06-12 2018-12-20 Twist Bioscience Corporation Methods for seamless nucleic acid assembly
CA3066744A1 (en) 2017-06-12 2018-12-20 Twist Bioscience Corporation Methods for seamless nucleic acid assembly
CA3075505A1 (en) 2017-09-11 2019-03-14 Twist Bioscience Corporation Gpcr binding proteins and synthesis thereof
GB2583590A (en) 2017-10-20 2020-11-04 Twist Bioscience Corp Heated nanowells for polynucleotide synthesis
JP7191448B2 (ja) 2018-01-04 2022-12-19 ツイスト バイオサイエンス コーポレーション Dnaベースのデジタル情報ストレージ
AU2019270243A1 (en) 2018-05-18 2021-01-07 Twist Bioscience Corporation Polynucleotides, reagents, and methods for nucleic acid hybridization
WO2020176678A1 (en) 2019-02-26 2020-09-03 Twist Bioscience Corporation Variant nucleic acid libraries for glp1 receptor
SG11202109283UA (en) 2019-02-26 2021-09-29 Twist Bioscience Corp Variant nucleic acid libraries for antibody optimization
CN114729342A (zh) 2019-06-21 2022-07-08 特韦斯特生物科学公司 基于条形码的核酸序列装配

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6496902B1 (en) * 1998-12-31 2002-12-17 Cray Inc. Vector and scalar data cache for a vector multiprocessor
US7840954B2 (en) * 2005-11-29 2010-11-23 International Business Machines Corporation Compilation for a SIMD RISC processor
US8255884B2 (en) * 2008-06-06 2012-08-28 International Business Machines Corporation Optimized scalar promotion with load and splat SIMD instructions

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20180100551A (ko) * 2016-01-20 2018-09-11 캠브리콘 테크놀로지스 코퍼레이션 리미티드 행렬 연산 장치 및 방법
KR20190073593A (ko) * 2016-01-20 2019-06-26 캠브리콘 테크놀로지스 코퍼레이션 리미티드 벡터 계산 장치
KR20200058562A (ko) * 2016-01-20 2020-05-27 캠브리콘 테크놀로지스 코퍼레이션 리미티드 벡터 계산 장치
US11734383B2 (en) 2016-01-20 2023-08-22 Cambricon Technologies Corporation Limited Vector and matrix computing device

Also Published As

Publication number Publication date
US20150012723A1 (en) 2015-01-08

Similar Documents

Publication Publication Date Title
KR20150005062A (ko) 미니-코어를 사용하는 프로세서
CN109074261B (zh) 用于乱序块isa处理器的增量调度器
Kapasi et al. The Imagine stream processor
US20230106990A1 (en) Executing multiple programs simultaneously on a processor core
US20170083318A1 (en) Configuring modes of processor operation
US10713059B2 (en) Heterogeneous graphics processing unit for scheduling thread groups for execution on variable width SIMD units
US7904702B2 (en) Compound instructions in a multi-threaded processor
US20140181477A1 (en) Compressing Execution Cycles For Divergent Execution In A Single Instruction Multiple Data (SIMD) Processor
GB2493607A (en) Eliminating redundant instruction processing in an SIMT processor
JP2018519602A (ja) 連続ブロックの並列実行を有するブロックベースアーキテクチャ
WO2015114305A1 (en) A data processing apparatus and method for executing a vector scan instruction
Park et al. Libra: Tailoring simd execution using heterogeneous hardware and dynamic configurability
KR20140131472A (ko) 상수 저장 레지스터를 구비하는 재구성 가능 프로세서
US20140317626A1 (en) Processor for batch thread processing, batch thread processing method using the same, and code generation apparatus for batch thread processing
US20140317388A1 (en) Apparatus and method for supporting multi-modes of processor
US11726912B2 (en) Coupling wide memory interface to wide write back paths
US9569211B2 (en) Predication in a vector processor
KR101912427B1 (ko) 재구성가능 프로세서 및 재구성가능 프로세서의 미니 코어
Schulte et al. A low-power multithreaded processor for baseband communication systems
KR20130131789A (ko) 미니코어 기반의 재구성 가능 프로세서 및 그 재구성 가능 프로세서를 이용한 유연한 다중 데이터 처리 방법
Karlsson et al. epuma: A processor architecture for future dsp
Ge et al. A vector coprocessor architecture for embedded systems
US20230176872A1 (en) Arithmetic processing device and arithmetic processing method
US20080162870A1 (en) Virtual Cluster Architecture And Method
US20210042111A1 (en) Efficient encoding of high fanout communications

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid