KR20150005062A - 미니-코어를 사용하는 프로세서 - Google Patents
미니-코어를 사용하는 프로세서 Download PDFInfo
- 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
Links
- 239000013598 vector Substances 0.000 claims abstract description 223
- 238000000034 method Methods 0.000 claims description 45
- 230000015654 memory Effects 0.000 claims description 37
- 238000012545 processing Methods 0.000 claims description 16
- 238000006243 chemical reaction Methods 0.000 claims description 12
- 230000005540 biological transmission Effects 0.000 claims description 7
- 230000001133 acceleration Effects 0.000 claims description 4
- 239000000284 extract Substances 0.000 claims 1
- 238000013461 design Methods 0.000 description 6
- 238000012546 transfer Methods 0.000 description 5
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000011112 process operation Methods 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7867—Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30032—Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
- G06F9/30189—Instruction operation extension or modification according to execution mode, e.g. mode flag
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent 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]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3889—Concurrent 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/3891—Concurrent 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
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy 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
아래의 실시예들은 프로세서에 관한 것으로, 보다 상세히는 미니-코어를 사용하는 프로세서가 개시된다.
매우 긴 명령어 워드(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은 일 예에 따른 지역 레지스터 파일을 설명한다.
도 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)
- 스칼라 데이터의 연산을 위한 스칼라 도메인부;
벡터 데이터의 연산을 위한 벡터 도메인부; 및
상기 스칼라 도메인부 및 상기 벡터 도메인부에 의해 공유되고, 상기 스칼라 도메인부 및 상기 벡터 도메인부 간의 데이터의 전송을 위한 데이터 변환을 처리하는 팩/언팩(park/unpack) 기능성 유닛(Functional Unit; FU)
을 포함하는 미니-코어. - 제1항에 있어서,
상기 스칼라 도메인부는,
스칼라 데이터의 연산을 처리하는 스칼라 FU를 포함하는 미니-코어. - 제1항에 있어서,
상기 팩/앤팩 FU는 다수의 스칼라 데이터를 상기 벡터 데이터로 변환하고, 상기 벡터 데이터의 특정한 위치에서의 요소를 추출함으로써 상기 스칼라 데이터를 생성하는 미니-코어. - 제1항에 있어서,
상기 벡터 도메인부는,
벡터 데이터의 로드 및 스토어를 처리하는 벡터 로드(load; LD)/스토어(store; ST) FU; 및
상기 벡터 데이터의 연산을 처리하는 벡터 FU
를 포함하는 미니-코어. - 제4항에 있어서,
상기 벡터 FU는 복수이고,
상기 복수의 벡터 FU들은 상기 복수의 벡터 FU들이 처리 가능한 비트-길이보다 더 큰 비트-길이의 벡터 데이터를 처리하기 위해 서로 연결(concatenate)되어 동작하는 미니-코어. - 제4항에 있어서,
상기 벡터 도메인부는 상기 벡터 데이터를 저장하는 벡터 메모리
를 더 포함하는 미니-코어. - 제1항에 있어서,
상기 미니-코어는 스칼라 데이터 채널을 통해 다른 미니-코어로 상기 스칼라 데이터를 전송하고,
상기 미니-코어는 벡터 데이터 채널을 통해 상기 다른 미니-코어로 상기 벡터 데이터를 전송하는 미니-코어. - 벡터 데이터의 연산을 처리하는 복수의 벡터 기능성 유닛(Functional Unit; FU)들
을 포함하고,
상기 복수의 벡터 FU들은 상기 복수의 벡터 FU들이 처리 가능한 비트-길이보다 더 큰 비트-길이의 벡터 데이터를 처리하기 위해 서로 연결(concatenate)되어 동작하는 미니-코어. - 제8항에 있어서,
상기 미니-코어는,
스칼라 데이터의 연산을 위한 스칼라 도메인부;
벡터 데이터의 연산을 위한 벡터 도메인부; 및
상기 스칼라 도메인부 및 상기 벡터 도메인부에 의해 공유되고, 상기 스칼라 도메인부 및 상기 벡터 도메인부 간의 데이터의 전송을 위한 데이터 변환을 처리하는 팩/언팩 기능성 유닛(Functional Unit; FU)
을 더 포함하고,
상기 벡터 도메인부는 상기 복수의 벡터 FU들을 포함하는 미니-코어. - 하나 이상의 미니-코어들
을 포함하고,
상기 하나 이상의 미니-코어들 중 제1 미니-코어는,
스칼라 데이터의 연산을 위한 스칼라 도메인부;
벡터 데이터의 연산을 위한 벡터 도메인부; 및
상기 스칼라 도메인부 및 상기 벡터 도메인부 간의 데이터의 전송을 위한 데이터 변환을 처리하는 팩/언팩 기능성 유닛(Functional Unit; FU)
를 포함하는 프로세서. - 제10항에 있어서,
상기 프로세서는 상기 프로세서가 처리해야 할 연산 량에 따라 상기 제1 미니-코어의 동작을 중단시키는 프로세서. - 제11항에 있어서,
상기 프로세서는 상기 제1 미니-코어로 공급되는 클록을 차단하거나, 상기 제1 미니-코어의 전원을 차단함으로써 상기 제1 미니-코어의 동작을 중단시키는 프로세서. - 제11항에 있어서,
상기 프로세서는 상기 하나 이상의 미니-코어들을 복수의 쓰레드들의 각각에게 분할함으로써 상기 복수의 쓰레드들을 동시에 실행하는 프로세서. - 제13항에 있어서,
상기 프로세서는 상기 복수의 쓰레드들의 각각이 요구하는 연산 량에 따라 상기 복수의 쓰레드들의 각각에게 서로 상이한 개수의 미니-코어들을 할당하는 프로세서. - 제10항에 있어서,
상기 프로세서는 매우 긴 명령어 워드(Very Long Instruction Word; VLIW) 모드 및 코어스-그레인드 리콘피규어블 어레이(Coarse-Grained Reconfigurable Array; CGRA)모드에서 동작하는 프로세서. - 제15항에 있어서,
상기 프로세서가 상기 VLIW 모드에서 동작할 때, 상기 프로세서는 상기 하나 이상의 미니-코어들의 FU들 중 스칼라 FU들을 제외한 나머지 FU들의 동작을 중단시킴으로써 절전 모드에서 동작하는 프로세서. - 제15항에 있어서,
상기 프로세서가 상기 CGRA 모드에서 동작할 때, 상기 프로세서는 상기 하나 이상의 미니-코어들의 모든 FU들을 동작시킴으로써 가속 처리를 지원하는 프로세서. - 제15항에 있어서,
상기 VLIW 모드 및 상기 CGRA 모드 간에서의 데이터의 전송을 위한 중앙 레지스터 파일
을 더 포함하는, 프로세서.
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)
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)
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)
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 |
-
2013
- 2013-07-04 KR KR20130078310A patent/KR20150005062A/ko not_active Application Discontinuation
-
2014
- 2014-07-07 US US14/324,302 patent/US20150012723A1/en not_active Abandoned
Cited By (4)
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 |