KR20140126189A - 프로세서의 멀티 실행 모드 지원 장치 및 방법 - Google Patents

프로세서의 멀티 실행 모드 지원 장치 및 방법 Download PDF

Info

Publication number
KR20140126189A
KR20140126189A KR1020130044429A KR20130044429A KR20140126189A KR 20140126189 A KR20140126189 A KR 20140126189A KR 1020130044429 A KR1020130044429 A KR 1020130044429A KR 20130044429 A KR20130044429 A KR 20130044429A KR 20140126189 A KR20140126189 A KR 20140126189A
Authority
KR
South Korea
Prior art keywords
operand
switch
mode
opcode
input
Prior art date
Application number
KR1020130044429A
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 KR1020130044429A priority Critical patent/KR20140126189A/ko
Publication of KR20140126189A publication Critical patent/KR20140126189A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING; 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/30145Instruction analysis, e.g. decoding, instruction word fields

Abstract

멀티 실행 모드 지원 장치 및 방법이 개시된다. 본 발명의 일 양상에 따른 멀티 실행 모드 지원 장치는, 오퍼랜드(operand) 및 오피코드(opcode)를 포함하는 복수의 명령어(instruction)를 수신하여 설정된 실행 모드에 따라 적어도 하나 이상의 명령어를 선택하고, 선택된 명령어에 대한 오피코드를 상기 복수의 기능 유닛에 전달하는 명령어 분배부와, 선택된 명령어를 실행할 수 있도록, 선택된 명령어에 포함된 오퍼랜드를 기반으로 라우팅을 위한 스위치 구성 정보를 생성하는 오퍼랜드 스위치 제어부와, 스위치 구성 정보를 바탕으로 기능 유닛의 출력 또는 레지스터 파일의 출력에서 기능 유닛의 입력 또는 레지스터 파일의 입력으로 라우팅하는 오퍼랜드 스위치를 포함할 수 있다.

Description

프로세서의 멀티 실행 모드 지원 장치 및 방법{Apparatus and Method for supporting multi-mode in processor}

프로세서의 멀티 실행 모드 지원 장치 및 방법에 관한 것이다.

VLIW(Very Long Instruction Word) 프로세서는 다수의 기능 유닛(Function Unit, FU)을 가지며, 다수의 명령어가 조합된 긴 명령어를 한 번에 처리한다. CGRA(Coarse Grain Reconfigurable Array)는 다수의 명령어가 조합된 긴 명령어를 한 번에 처리한다는 점에서 VLIW와 동일하나, 보통 VLIW 보다 더 많은 수의 기능 유닛을 배열(array) 형태로 가지고, VLIW와 달리 기능 유닛끼리 직접적인 연결이 있는 하드웨어로써, 빠른 속도의 연산을 위해 사용된다.

이러한 VLIW와 CGRA는 각 데이터간 의존도(dependency)가 존재하더라고 처리가 가능한 반면, 컴파일시 데이터 처리과정의 모든 스케줄이 완료되기 때문에 컴파일 시간이 길며, 어플리케이션과 컴파일러에 따라서 기능 유닛의 사용 효율(utilization)이 떨어질 수 있다.

SIMT(Single Instruction Multiple Thread)는 다수의 기능 유닛을 가지고 있는 구조이나, 하나의 명령어(instruction)를 다수의 기능 유닛이 사용하는 구조로 보통 각각의 기능 유닛이 개별 쓰레드(thread)를 수행한다. 즉, SIMT는 다수의 기능 유닛이 동일한 명령어 시퀀스(instruction sequence)로 다수의 데이터(또는 쓰레드)를 각각 개별적으로 처리한다.

이러한 SIMT는 동일한 과정으로 많은 데이터를 처리해야 하는 대량 병렬 데이터 처리 어플리케이션(massively parallel data processing application)에 유리하지만, 데이터간 의존도가 존재하는 경우 데이터의 처리가 힘들다.

대용량 데이터 처리(massive data processing)에 유리한 SIMT 방식과 소프트웨어 파이프라인을 활용한 VLIW 또는 CGRA 방식을 모두 지원할 수 있는 멀티 실행 모드 지원 장치 및 방법이 제공된다.

본 발명의 일 양상에 따른 멀티 실행 모드 지원 장치는, 오퍼랜드(operand) 및 오피코드(opcode)를 포함하는 복수의 명령어(instruction)를 수신하여 설정된 실행 모드에 따라 적어도 하나 이상의 명령어를 선택하고, 선택된 명령어에 대한 오피코드를 상기 복수의 기능 유닛에 전달하는 명령어 분배부와, 선택된 명령어를 실행할 수 있도록, 선택된 명령어에 포함된 오퍼랜드를 기반으로 라우팅을 위한 스위치 구성 정보를 생성하는 오퍼랜드 스위치 제어부와, 스위치 구성 정보를 바탕으로 기능 유닛의 출력 또는 레지스터 파일의 출력에서 기능 유닛의 입력 또는 레지스터 파일의 입력으로 라우팅하는 오퍼랜드 스위치를 포함할 수 있다.

여기서, 명령어 분배부는, 설정된 실행 모드가 SIMT 모드인 경우, 프로그램 카운터(Program Counter)의 정보를 기반으로 하나의 명령어를 선택하고, 오퍼랜드 스위치 제어부의 모든 입력 포트에 선택된 명령어에 포함된 오퍼랜드를 각각 전달하고, 모든 기능 유닛에 선택된 명령어에 포함된 오피코드를 각각 전달할 수 있다.

여기서, 명령어 분배부는, 설정된 실행 모드가 VLIW/CGRA 모드인 경우, 수신된 복수의 명령어에 포함된 오퍼랜드 및 오피코드를 기반으로 오퍼랜드 스위치 제어부의 모든 입력 포트에 서로 다른 오퍼랜드를 각각 전달하고, 모든 기능 유닛에 서로 다른 오피코드를 각각 전달할 수 있다.

여기서, 명령어 분배부는, 설정된 실행 모드가 통합 모드인 경우, 수신된 복수의 명령어 중 일부 명령어를 선택하고, 선택된 일부 명령어에 포함된 오퍼랜드 및 오피코드를 기반으로 오퍼랜드 스위치 제어부의 일부 입력 포트에는 동일한 오퍼랜드를, 나머지 입력 포트에 서로 다른 오퍼랜드를 각각 전달하고, 일부 기능 유닛에는 동일한 오피코드를, 나머지 기능 유닛에는 서로 다른 오피코드를 각각 전달할 수 있다.

여기서, 오퍼랜드 스위치 제어부는 오퍼랜드의 논리 주소를 물리 주소로 변환할 수 있다.

여기서, 오퍼랜드 스위치는 레지스터 파일 출력에서 레지스터 파일 입력으로, 레지스터 파일 출력에서 기능 유닛 입력으로, 기능 유닛 출력에서 레지스터 파일 입력으로, 기능 유닛 출력에서 기능 유닛 입력으로 라우팅해 줄 수 있도록 구성될 수 있다.

여기서, 오퍼랜드 스위치는 하나 이상의 스위치 스테이지로 구성될 수 있다.

여기서, 스위치 구성 정보는 하나 이상의 스위치 스테이지에 대응하여 하나 이상의 스위치 스테이지 구성 정보로 구성될 수 있다.

여기서, 스위치 스테이지 구성 정보 각각은 해당 스위치 스테이지에 파이프라인(pipeline)으로 순차적으로 입력될 수 있다.

본 발명의 다른 양상에 따른 멀티 실행 모드 지원 방법은, 수신된 복수의 명령어(instruction) 중에서 설정된 실행 모드에 따라 하나 이상의 명령어를 선택하는 단계와, 선택된 명령어에 포함된 오피코드를 복수의 기능 유닛에 전달하는 단계와, 선택된 명령어를 실행할 수 있도록, 선택된 명령어에 포함된 오퍼랜드를 기반으로 라우팅을 위한 스위치 구성 정보를 생성하는 단계와, 스위치 구성 정보를 바탕으로 기능 유닛의 출력 또는 레지스터 파일의 출력에서 기능 유닛의 입력 또는 레지스터 파일의 입력으로 라우팅하는 단계를 포함할 수 있다.

여기서, 선택하는 단계는, 설정된 실행 모드가 SIMT 모드인 경우, 프로그램 카운터(Program Counter)의 정보를 기반으로 하나의 명령어를 선택하고, 전달하는 단계는, 선택된 명령어에 포함된 오피코드를 기반으로 각 기능 유닛에 동일한 오피코드를 전달할 수 있다.

여기서, 선택하는 단계는, 설정된 실행 모드가 VLIW/CGRA 모드인 경우, 수신된 복수의 명령어를 전부 선택하고, 전달하는 단계는, 선택된 복수의 명령어에 포함된 오피코드를 기반으로 각 기능 유닛에 서로 다른 오피코드를 전달할 수 있다.

여기서, 선택하는 단계는, 설정된 실행 모드가 통합 모드인 경우, 수신된 복수의 명령어 중 일부 명령어를 선택하고, 전달하는 단계는, 선택된 일부 명령어에 포함된 오피코드를 기반으로 상기 복수의 기능 유닛 중 일부 기능 유닛에는 서로 다른 오피코드를 전달하고, 나머지 기능 유닛에는 동일한 오피코드를 전달할 수 있다.

여기서, 생성하는 단계는, 선택된 명령어에 포함된 오퍼랜드의 논리 주소를 물리 주소로 변환하고, 이를 바탕으로 스위치 구성 정보를 생성할 수 있다.

SIMT 방식과 VLIW 또는 CGRA 방식을 모두 지원함으로써, 단일 프로세서에서 다양한 특성의 어플리케이션을 효과적으로 처리할 수 있다.

하나의 어플리케이션 내에 다양한 특성의 테이터 처리를 효과적으로 지원할 수 있다.

SoC(System On Chip) 내의 두 개의 프로세서를 하나로 통합하여 비용 및 소비전력을 줄일 수 있다.

도 1은 본 발명의 일 실시 예에 따른 멀티 실행 모드 지원 장치의 구성도이다.
도 2는 도 1의 명령어 분배부(110)의 상세 구성도이다.
도 3은 도 1의 오퍼랜드 스위치(130)의 예를 도시한 도면이다.
도 4a는 본 발명의 일 실시 예에 따른 스위치 구성 정보의 예를 도시한 도면이다.
도 4b는 스위치 스테이지 구성 정보가 스위치 스테이지로 입력되는 순서를 설명하기 위한 도면이다.
도 5는 본 발명의 일 실시 예에 따른 멀티 실행 모드 지원 방법을 도시한 흐름도이다.

이하, 첨부된 도면을 참조하여 본 발명의 일 실시 예를 상세하게 설명한다. 본 발명을 설명함에 있어 관련된 공지 기능 또는 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략할 것이다. 또한, 후술되는 용어들은 본 발명에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로, 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다.

도 1은 본 발명의 일 실시 예에 따른 멀티 실행 모드 지원 장치의 구성도이다. 이때, 도 1은 레지스터 파일 및 8개의 기능 유닛(Function Unit, FU)을 이용하는 예를 도시하나, 이에 한정되는 것은 아니며, 시스템의 성능 또는 발명의 용도에 따라 기능 유닛의 갯수는 변경될 수 있다.

도 1을 참조하면, 멀티 실행 모드 지원 장치(100)는 명령어 분배부(110), 오퍼랜드 스위치 제어부(120) 및 오퍼랜드 스위치(130)를 포함할 수 있다.

명령어 분배부(110)는 복수의 명령어(instruction)을 수신하여, 설정된 실행 모드에 따라 수신된 복수의 명령어 중 하나 이상의 명령어를 선택하고, 선택된 명령어에 포함된 오퍼랜드(operand)를 오퍼랜드 스위치 제어부(120)에 전달하고, 선택된 명령어에 포함된 오피코드(opcode)를 기능 유닛(Function Unit, FU)에 전달할 수 있다.

일 실시 예에 따르면, 멀티 실행 모드 지원 장치(100)는 SIMT(Single Instruction Multiple Thread) 모드, VLIW(Very Long Instruction Word)/CGRA(Coarse Grain Reconfigurable Array) 모드 및 통합 모드를 지원할 수 있다.

SIMT 모드일 경우, 명령어 분배부(110)는 프로그램 카운터(Program Counter, PC)의 정보를 기반으로 복수의 명령어 중 하나의 명령어를 선택하고, 선택된 명령어에 포함된 오퍼랜드를 오퍼랜드 스위치 제어부(120)의 모든 입력 포트에 전달하고, 선택된 명령어에 포함된 오피코드를 모든 기능 유닛에 전달할 수 있다. 즉, SIMT 모드에서, 명령어 분배부(110)는 오퍼랜드 스위치 제어부(120)의 모든 입력 포트에 동일한 오퍼랜드를 전달하고, 모든 기능 유닛에 동일한 오피코드를 전달할 수 있다.

VLIW/CGRA 모드일 경우, 명령어 분배부(110)는 수신된 복수 명령어에 포함된 오퍼랜드 및 오피크드를 기반으로 오퍼랜드 스위치 제어부(120)의 입력포트 각각에 서로 다른 오퍼랜드를 전달하고, 기능 유닛 각각에 서로 다른 오피코드를 전달할 수 있다.

통합 모드는 SIMT 모드와 VLIW/CGRA 모드가 통합된 모드로, 통합 모드일 경우, 명령어 분배부(110)는 수신된 복수 명령어 중에서 일부 명령어를 선택하고, 선택된 일부 명령어에 포함된 오퍼랜드를 오퍼랜드 스위치 제어부(120)의 입력포트에 적절히 분산하여 전달하고, 선택된 일부 명령어에 포함된 오피코드를 해당 기능 유닛에 적절히 분산하여 전달할 수 있다. 즉, 통합 모드에서, 명령어 분배부(110)는 선택된 일부 명령어에 포함된 오퍼랜드 및 오피코드를 기반으로 오퍼랜드 스위치 제어부(120)의 일부 입력포트에는 동일한 오퍼랜드를, 나머지 입력포트 각각에는 서로 다른 오퍼랜드를 전달하고, 일부 기능 유닛에는 동일한 오피코드를, 나머지 기능 유닛 각각에는 서로 다른 오피코드를 전달할 수 있다. 이때, 동일한 오퍼랜드(또는 동일한 오피코드)가 전달되는 오퍼랜드 스위치 제어부(120)의 입력포트(또는 기능 유닛)의 개수는 발명의 목적 및 시스템의 성능에 따라 다양하게 설정될 수 있다.

오퍼랜드 스위치 제어부(120)는 명령어 분배부(110)로부터 오퍼랜드를 수신하고, 수신된 오퍼랜드를 이용하여 각각의 기능 유닛 또는 레지스터가 접근하고자 하는 기능 유닛 또는 레지스터에 접근할 수 있도록 오퍼랜드의 논리 주소(logical address)를 물리 주소(physical address)로 변환하고, 오퍼랜드 스위치(130)의 스위치 구성 정보를 생성할 수 있다. 이 경우, 오퍼랜드 스위치 제어부(120)는 SIMT 모드인지, VLIW/CGEA 모드인지, 또는 통합 모드인지를 구분하기 위해 모드 신호를 외부로부터 수신할 수 있다.

SIMT 모드일 경우, 모든 기능 유닛이 동일한 명령어를 사용하기 때문에 오퍼랜드 스위치 제어부(120)의 각 입력 포트로 전달되는 오퍼랜드는 모두 같다. 따라서, 동일한 논리 주소 공간(logical address space)을 가진다. 그러나, 레지스터 파일은 각각의 기능 유닛(또는 쓰레드)별로 분할하여 사용하므로, 오퍼랜드 스위치 제어부(120)의 각 입력 포트로 전달되는 각 오퍼랜드는 각기 다른 물리 주소 공간(physical address space)을 가지며, 각각의 기능 유닛은 서로 다른 물리 주소 공간의 레지스터에 엑세스할 수 있게 된다. 즉, 전체 레지스터 파일을 동작하고 있는 기능 유닛(또는 쓰레드)의 개수로 분할하여 기능 유닛(또는 쓰레드)마다 서로 다른 레지스터가 할당되며, 각각의 기능 유닛(또는 쓰레드)는 자신이 할당 받은 레지스터를 자신의 로컬 레지스터로 사용한다. 이때, 오퍼랜드 스위치 제어부(120)는 하나의 오퍼랜드를 수신하여 각각의 기능 유닛이 자신이 수신한 오피코드와 관련된 오퍼랜드에 해당하는 로컬 레지스터에 엑세스할 수 있도록 각 기능 유닛에 대응한 각 오퍼랜드의 논리 주소를 물리 주소로 변환하고, 이를 바탕으로 스위치 구성 정보를 생성한다.

반면에, VLIW/CGRA 모드일 경우, 모든 기능 유닛이 서로 다른 명령어를 사용하기 때문에 오퍼랜드 스위치 제어부(120)의 각 입력 포트로 전달되는 오퍼랜드는 서로 다르며, 오퍼랜드 각각의 논리 주소 공간과 물리 주소 공간은 동일하다. 따라서, 각각의 기능 유닛은 자유롭게 오퍼랜드를 가질 수 있고, 오퍼랜드 스위치 제어부(120)는 개별 오퍼랜드를 수신하여 각 기능 유닛이 해당하는 타겟에 엑세스할 수 있도록 스위치 구성 정보를 생성한다. 이 경우, 같은 주소 공간을 사용하기 때문에, 오퍼랜드가 같으면 같은 타겟에 접근하게 된다.

또한, 통합 모드일 경우, SIMT 모드에 대응되는 일부 오퍼랜드의 경우는 논리 주소 공간과 물리 주소 공간은 동일하지 않으나, VLIW/CGRA 모드에 대응되는 나머지 오퍼랜드의 경우는 논리 주소 공간과 물리 주소 공간은 동일하다. 따라서, 오퍼랜드 스위치 제어부(120)는 SIMT 모드 및 VLIW/CGRA 모드를 결합하여, 이에 따른 기능을 수행하게 된다.

즉, 오퍼랜드 스위치 제어부(120)는 오퍼랜드의 논리 주소를 물리 주소로 변환하고 이를 바탕으로 스위치 구성 정보를 생성함으로써, SIMT 모드의 경우는 모든 기능 유닛이 같은 논리 주소 공간으로 타겟을 엑세스하도록 하고(논리 주소 공간은 같으나 물리 주소 공간은 서로 다름), VLIW/CGRA 모드의 경우는 모든 기능 유닛이 각기 개별 논리 주소 공간으로 타겟을 엑세스하도록 하고, 통합 모드의 경우는 다수의 기능 유닛이 소수의 논리 주소 공간으로 타겟을 엑세스하도록 할 수 있다.

오퍼랜드 스위치(130)는 오퍼랜드 스위치 제어부(120)에서 생성된 스위치 구성 정보를 기반으로 명령어 분배부(110)에서 선택된 명령어를 수행할 수 있도록 기능 유닛 또는 레지스터를 기능 유닛 또는 레지스터와 라우팅할 수 있다. 예를 들어, 오퍼랜드 스위치(130)는 스위치 구성 정보를 기반으로 레지스터 파일의 출력을 기능 유닛의 입력으로 라우팅해 줄 수 있고, 기능 유닛의 출력을 레지스터 파일의 입력으로 라우팅해 줄 수 있고, 기능 유닛의 출력을 기능 유닛의 입력으로 라우팅해 줄 수 있고, 레지스터 파일의 출력을 레지스터 파일의 입력으로 라우팅해 줄 수도 있다.

일 실시 예에 따르면, 오퍼랜드 스위치(130)는 다수의 스위치 스테이지(switch stage)로 구성될 수 있으며, 각각의 스위치 스테이지는 플립플롭(flip-flop) 등의 저장 장치를 포함할 수 있다. 이에 관한 자세한 설명은 도 3을 참조하여 후술하기로 한다.

도 2는 도 1의 명령어 분배부(110)의 상세 구성도이다. 도 2의 예에서, 오퍼랜드 스위치 제어부(120)의 입력 포트와 연산을 수행하는 기능 유닛이 각각 8개인 것으로 가정하고, 하나의 명령어에는 하나의 오퍼랜드 및 하나의 오피코드가 각각 포함된다고 가정한다.

도 2를 참조하면, 명령어 분배부(110)는 16개의 2*1 멀티플렉서(251 내지 258, 261 내지 268) 및 2개의 8*1 멀티플렉서(230, 240)를 포함할 수 있다. 명령어 분배부(110)는 8개의 명령어를 수신하여 수신된 8개의 명령어를 오퍼랜드 세트(210) 및 오피코드 세트(220)로 나눈다. 오퍼랜드 세트(210)의 오퍼랜드(211 내지 218) 오퍼랜드 스위치 제어부(120)의 입력 포트와 연결되는 2*1 멀티플렉서(251 내지 258)의 입력으로 전달되는 한편, 230230211 내지 218 , PC특정 명령어에 대한 오퍼랜드를 선택하여 8개의 2*1 멀티플렉서(251 내지 258)의 입력으로 전달한다. 8개의 2*1 멀티플렉서(251 내지 258) 각각은 설정된 실행 모드에 따라 출력을 결정하고, 각 출력을 오퍼랜드 스위치 제어부(120)의 입력 포트로 전달한다.

또한, 오피코드 세트(220)의 8개의 오피코드(221 내지 228) 각각은 8개의 기능 유닛과 각각 연결되는 8개의 2*1 멀티플렉서(261 내지 268)의 입력으로 각각 전달되는 한편, 8*1 멀티플렉서(240)의 입력으로도 전달된다. 8*1 멀티플렉서(240)는 8개의 오피코드(221 내지 228)를 입력 받아 프로그램 카운터(program counter)의 정보를 바탕으로 특정 오피코드를 8개의 2*1 멀티플렉서(261 내지 268)의 입력으로 전달한다. 8개의 2*1 멀티플렉서(261 내지 268) 각각은 설정된 실행 모드에 따라 출력을 결정하고, 각 출력을 각 기능 유닛으로 전달한다.

SIMT 모드일 경우, 2*1 멀티플렉서(251 내지 258) 각각은 8*1 멀티플렉서(230)로부터 입력된 오퍼랜드를 출력으로 결정하고, 각 출력을 오퍼랜드 스위치 제어부(120)의 8개의 입력 포트로 전달한다. 또한, 2*1 멀티플렉서(261 내지 268) 각각은 8*1 멀티플렉서(240)로부터 입력된 오피코드를 출력으로 결정하고, 각 출력을 각 기능 유닛으로 전달한다. 즉, 오퍼랜드 스위치 제어부(120)의 8개의 입력 포트에는 동일한 오퍼랜드가 전달되고, 각 기능 유닛에는 동일한 오피코드가 전달된다.

VLIW/CGRA 모드일 경우, 2*1 멀티플렉서(251 내지 258) 각각은 오퍼랜드 세트(210)로부터 직접 입력된 오퍼랜드를 출력으로 결정하고, 각 출력을 오퍼랜드 스위치 제어부(120)의 8개의 입력 포트로 전달한다. 또한, 2*1 멀티플렉서(261 내지 268) 각각은 오피코드 세트(220)로부터 직접 입력된 오피코드를 출력으로 결정하고, 각 출력을 각 기능 유닛으로 전달한다. 즉, 오퍼랜드 스위치 제어부(120)의 8개의 입력 포트 각각에는 서로 다른 오퍼랜드가 전달되고, 각 기능 유닛에는 서로 다른 오피코드가 전달된다.

통합 모드일 경우, 2*1 멀티플렉서(251 내지 258) 중 일부는 오퍼랜드 세트(210)로부터 직접 입력된 오퍼랜드를 출력으로 결정하고, 나머지는 8*1 멀티플렉서(230)로부터 입력된 오퍼랜드를 출력으로 결정한다. 결정된 각 출력은 오퍼랜드 스위치 제어부(120)의 8개의 입력 포트에 전달된다. 또한, 2*1 멀티플렉서(261 내지 268) 중 일부는 오피코드 세트(220)로부터 직접 입력된 오피코드를 출력으로 결정하고, 나머지는 8*1 멀티플렉서(240)로부터 입력된 오피코드를 출력으로 결정한다. 결정된 각 출력은 각 기능 유닛에 전달된다. 즉, 오퍼랜드 스위치 제어부(120)의 8개의 입력 포트 중 일부에는 서로 다른 오퍼랜드가 전달되고, 나머지에는 동일한 오퍼랜드가 전달된다. 이와 동일하게, 8개의 기능 유닛 중 일부에는 서로 다른 오피코드가 전달되고, 나머지에는 동일한 오피코드가 전달된다.

한편, 오퍼랜드 세트(210)로부터 직접 입력된 오퍼랜드를 출력으로 결정하는 2*1 멀티플렉서의 개수 및 오피코드 세트(220)로부터 직접 입력된 오피코드를 출력으로 결정하는 2*1 멀티플렉서의 개수는 시스템의 성능 또는 발명의 목적에 따라 다양하게 설정될 수 있다.

도 3은 도 1의 오퍼랜드 스위치(130)의 예를 도시한 도면이다.

도 3은 오퍼랜드 스위치(130)가 3개의 스위치 스테이지로 구성되는 예를 도시하나, 이에 한정되는 것은 아니며, 시스템의 성능 또는 발명의 목적에 따라 다양한 개수의 스위치 스테이지로 구성되는 것도 가능하다.

도 3을 참조하면, 오퍼랜드 스위치(130)는 스위치 스테이지 1, 스위치 스테이지 2 및 스위치 스테이지 3을 포함할 수 있다. 각각의 스위치 스테이지는 플립플롭(flip-flop) 등의 저장 장치를 포함할 수 있다.

오퍼랜드 스위치(130)는 스위치 구성 정보를 바탕으로 레지스터 파일의 출력을 레지스터 파일의 입력으로 라우팅하거나, 레지스터 파일의 출력을 기능 유닛의 입력으로 라우팅하거나, 기능 유닛의 출력을 레지스터 파일의 입력으로 라우팅하거나, 기능 유닛의 출력을 기능 유닛의 입력으로 라우팅하는 것이 가능하다.

기능 유닛의 출력을 기능 유닛의 입력으로 라우팅하는 경우, 레지스터 파일을 거치지 않고 기능 유닛 간의 연결을 구성할 수 있기 때문에 VLIW/CGRA 모드에서 오퍼레이션 간의 데이터 전달 오버헤드(overhead)를 줄이는데 활용될 수 있다. 또한, 레지스터 파일의 출력을 레지스터 파일의 입력으로 라우팅하는 경우, 기능 유닛을 거치지 않고 "move" 오퍼레이션을 수행할 수 있으므로 VLIW/CGRA 성능 향상에 활용할 수 있다.

도 4a는 본 발명의 일 실시 예에 따른 스위치 구성 정보의 예를 도시한 도면이고, 도 4b는 스위치 스테이지 구성 정보가 스위치 스테이지로 입력되는 순서를 설명하기 위한 도면이다. 이때, 도 4a 및 도 4b를 설명함에 있어, 도 3의 예와 같이 오퍼랜드 스위치(130)가 3개의 스위치 스테이지로 구성된다고 가정한다.

도 4a를 참조하면, 오퍼랜드 스위치(130)가 3개의 스위치 스테이지로 구성되어 있는 경우, 각 스위치 스테이지의 구성 정보는 별개로 구성될 수 있고, 이 경우, 스위치 구성 정보(SC)는 스위치 스테이지 1의 구성 정보(SSC1), 스위치 스테이지 2의 구성 정보(SSC2) 및 스위치 스테이지 3의 구성 정보(SSC3)을 포함할 수 있다.

이하, 도 3, 도 4a 및 도 4b를 참조하여, 각 스위치 스테이지의 구성 정보가 각 스위치 스테이지에 입력되는 방법을 설명한다.

시간이 t1일 때, 오퍼랜드 스위치 제어부(120)에서 최초 생성된 스위치 구성 정보(SC1)에 포함된 스위치 스테이지 1의 구성 정보(SC1-SSC1)는 스위치 스테이지 1에 입력된다.

그 후, 시간이 t2일 때, 오퍼랜드 스위치 제어부(120)에서 두 번째로 생성된 스위치 구성 정보(SC2)에 포함된 스위치 스테이지 1의 구성 정보는(SC2-SSC1)는 스위치 스테이지 1에 입력되고, 이와 동시에, 최초 생성된 스위치 구성 정보(SC1)에 포함된 스위치 스테이지 2의 구성 정보(SC1-SSC2)는 스위치 스테이지 2에 입력된다.

그 후, 시간이 t3일 때, 오퍼랜드 스위치 제어부(120)에서 세 번째로 생성된 스위치 구성 정보(SC3)에 포함된 스위치 스테이지 1의 구성 정보는(SC3-SSC1)는 스위치 스테이지 1에 입력된다. 이와 동시에, 두 번째로 생성된 스위치 구성 정보(SC2)에 포함된 스위치 스테이지 2의 구성 정보(SC2-SSC2)는 스위치 스테이지 2에 입력되고, 최초 생성된 스위치 구성 정보(SC1)에 포함된 스위치 스테이지 3의 구성 정보(SC1-SSC3)는 스위치 스테이지 3에 입력된다.

이러한 방법으로, 각 스위치 스테이지의 구성 정보(SSC)는 각 스위치 스테이지에 파이프라인으로 순차적으로 입력될 수 있다.

도 5는 본 발명의 일 실시 예에 따른 멀티 실행 모드 지원 방법을 도시한 흐름도이다.

도 5를 참조하면, 본 발명의 일 실시 예에 따른 멀티 실행 모드 지원 방법은, 먼저, 설정된 실행 모드의 종류를 판단한다(510).

단계 510의 판단 결과, 설정된 실행 모드가 SIMT 모드인 경우, 프로그램 카운터 정보를 바탕으로 수신된 복수의 명령어 중 하나를 선택하고(522), 선택된 명령어에 포함된 오피코드를 각 기능 유닛에 전달한다(532). 즉, SIMT 모드에서는 각 기능 유닛에 동일한 오피코드가 전달된다.

단계 510의 판단 결과, 설정된 실행 모드가 VLIW/CGRA 모드인 경우, 수신된 복수의 명령어 전부를 선택하고(524), 선택된 명령어에 포함된 오피코드를 기반으로 서로 다른 오피코드를 각 기능 유닛에 전달한다(534).

단계 510의 판단 결과, 설정된 실행 모드가 통합모드인 경우, 수신된 복수의 명령어 중 일부 명령어를 선택하고(526), 선택된 일부 명령어에 포함된 오피코드를 기반으로 일부 기능 유닛에는 서로 다른 오피코드를 전달하고, 나머지 기능 유닛에는 동일한 오피코드를 전달한다(536). 이때, 서로 다른 오피코드를 전달하는 기능 유닛의 갯수는 시스템의 성능 또는 발명의 목적에 따라 다양하게 변경 가능하다.

그 후, 단계 522, 단계 524, 또는 단계 526에서 선택된 명령어를 실행할 수 있도록, 선택된 명령어에 포함된 오퍼랜드를 기반으로 라우팅을 위한 스위치 구성 정보를 생성한다(540).

예를 들어, 선택된 오퍼랜드의 논리 주소를 물리 주소로 변환하고, 이를 바탕으로 스위치 구성 정보를 생성할 수 있다.

SIMT 모드일 경우, 모든 기능 유닛이 동일한 명령어를 사용하기 때문에 각 기능 유닛이 수신한 오피코드에 대응하는 오퍼랜드는 동일한 논리 주소 공간(logical address space)을 가진다. 그러나, 레지스터 파일은 각각의 기능 유닛(또는 쓰레드)별로 분할하여 사용하므로, 각 기능 유닛이 수신한 오피코드에 대응하는 각 오퍼랜드는 각기 다른 물리 주소 공간(physical address space)을 가진다. 즉, 논리 주소 공간과 물리 주소 공간은 동일하지 아니하다.

반면에, VLIW/CGRA 모드일 경우, 모든 기능 유닛이 서로 다른 명령어를 사용하기 때문에 각 기능 유닛이 수신한 오피코드에 대응하는 오퍼랜드는 서로 다르며, 오퍼랜드 각각의 논리 주소 공간과 물리 주소 공간은 동일하다.

또한, 통합 모드일 경우, SIMT 모드에 대응되는 일부 오퍼랜드의 경우는 논리 주소 공간과 물리 주소 공간은 동일하지 않으나, VLIW/CGRA 모드에 대응되는 나머지 오퍼랜드의 경우는 논리 주소 공간과 물리 주소 공간은 동일하게 된다.

따라서, VLIW/CGRA 모드의 경우는 변론하고, SIMT 모드 및 통합 모드의 경우는 논리 주소 공간을 물리 주소 공간으로 변환시켜 줄 필요가 있다.

그 후, 생성된 스위치 구성 정보를 바탕으로 단계 522, 단계 524 또는 단계 526에서 선택된 명령어를 실행할 수 있도록, 기능 유닛 또는 레지스터 파일을 기능 유닛 또는 레지스터 파일과 라우팅을 한다(550).

본 발명의 일 실시 예는 컴퓨터로 읽을 수 있는 기록 매체에 컴퓨터가 읽을 수 있는 코드로서 구현될 수 있다. 상기의 프로그램을 구현하는 코드들 및 코드 세그먼트들은 당해 분야의 컴퓨터 프로그래머에 의하여 용이하게 추론될 수 있다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록 장치를 포함할 수 있다. 컴퓨터가 읽을 수 있는 기록 매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피 디스크, 광 디스크 등을 포함할 수 있다. 또한, 컴퓨터가 읽을 수 있는 기록 매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산 방식으로 컴퓨터가 읽을 수 있는 코드로 작성되고 실행될 수 있다.

이제까지 본 발명에 대하여 그 바람직한 실시 예들을 중심으로 살펴보았다. 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명이 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 따라서, 본 발명의 범위는 전술한 실시 예에 한정되지 않고 특허 청구범위에 기재된 내용과 동등한 범위 내에 있는 다양한 실시 형태가 포함되도록 해석되어야 할 것이다.

100: 멀티 실행 모드 지원 장치, 110: 명령어 분배부,
120: 오퍼랜드 스위치 제어부, 130: 오퍼랜드 스위치.

Claims (14)

  1. 레지스터 파일 및 복수의 기능 유닛을 포함하는 프로세서의 멀티 실행 모드 지원 장치에 있어서,
    오퍼랜드(operand) 및 오피코드(opcode)를 포함하는 복수의 명령어(instruction)를 수신하여 설정된 실행 모드에 따라 적어도 하나 이상의 명령어를 선택하고, 선택된 명령어에 대한 오피코드를 상기 복수의 기능 유닛에 전달하는 명령어 분배부;
    상기 선택된 명령어를 실행할 수 있도록, 상기 선택된 명령어에 포함된 오퍼랜드를 기반으로 라우팅을 위한 스위치 구성 정보를 생성하는 오퍼랜드 스위치 제어부; 및
    상기 스위치 구성 정보를 바탕으로 기능 유닛의 출력 또는 레지스터 파일의 출력에서 기능 유닛의 입력 또는 레지스터 파일의 입력으로 라우팅하는 오퍼랜드 스위치; 를 포함하는 멀티 실행 모드 지원 장치.
  2. 제 1항에 있어서,
    상기 명령어 분배부는, 설정된 실행 모드가 SIMT 모드인 경우, 프로그램 카운터(Program Counter)의 정보를 기반으로 하나의 명령어를 선택하고, 상기 오퍼랜드 스위치 제어부의 모든 입력 포트에 상기 선택된 명령어에 포함된 오퍼랜드를 각각 전달하고, 모든 기능 유닛에 상기 선택된 명령어에 포함된 오피코드를 각각 전달하는 멀티 실행 모드 지원 장치.
  3. 제 1항에 있어서,
    상기 명령어 분배부는, 설정된 실행 모드가 VLIW/CGRA 모드인 경우, 수신된 복수의 명령어에 포함된 오퍼랜드 및 오피코드를 기반으로 상기 오퍼랜드 스위치 제어부의 모든 입력 포트에 서로 다른 오퍼랜드를 각각 전달하고, 모든 기능 유닛에 서로 다른 오피코드를 각각 전달하는 멀티 실행 모드 지원 장치.
  4. 제 1항에 있어서,
    상기 명령어 분배부는, 설정된 실행 모드가 통합 모드인 경우, 수신된 복수의 명령어 중 일부 명령어를 선택하고, 선택된 일부 명령어에 포함된 오퍼랜드 및 오피코드를 기반으로 오퍼랜드 스위치 제어부의 일부 입력 포트에는 동일 오퍼랜드를, 나머지 입력 포트에 서로 다른 오퍼랜드를 각각 전달하고, 일부 기능 유닛에는 동일 오피코드를, 나머지 기능 유닛에는 서로 다른 오피코드를 각각 전달하는 멀티 실행 모드 지원 장치.
  5. 제 1항에 있어서,
    상기 오퍼랜드 스위치 제어부는 오퍼랜드의 논리 주소를 물리 주소로 변환하는 멀티 실행 모드 지원 장치.
  6. 제 1항에 있어서,
    상기 오퍼랜드 스위치는 레지스터 파일 출력에서 레지스터 파일 입력으로, 레지스터 파일 출력에서 기능 유닛 입력으로, 기능 유닛 출력에서 레지스터 파일 입력으로, 기능 유닛 출력에서 기능 유닛 입력으로 라우팅해 줄 수 있도록 구성된 멀티 실행 모드 지원 장치.
  7. 제 1항에 있어서,
    상기 오퍼랜드 스위치는 하나 이상의 스위치 스테이지로 구성되는 멀티 실행 모드 지원 장치.
  8. 제 7항에 있어서,
    상기 스위치 구성 정보는 상기 하나 이상의 스위치 스테이지에 대응하여 하나 이상의 스위치 스테이지 구성 정보로 구성되는 멀티 실행 모드 지원 장치.
  9. 제 8항에 있어서,
    스위치 스테이지 구성 정보 각각은 해당 스위치 스테이지에 파이프라인(pipeline)으로 순차적으로 입력되는 멀티 실행 모드 지원 장치.
  10. 레지스터 파일 및 복수의 기능 유닛을 포함하는 프로세서의 멀티 실행 모드 지원 방법에 있어서,
    수신된 복수의 명령어(instruction) 중에서 설정된 실행 모드에 따라 하나 이상의 명령어를 선택하는 단계;
    상기 선택된 명령어에 포함된 오피코드를 상기 복수의 기능 유닛에 전달하는 단계;
    상기 선택된 명령어를 실행할 수 있도록, 상기 선택된 명령어에 포함된 오퍼랜드를 기반으로 라우팅을 위한 스위치 구성 정보를 생성하는 단계; 및
    상기 스위치 구성 정보를 바탕으로 기능 유닛의 출력 또는 레지스터 파일의 출력에서 기능 유닛의 입력 또는 레지스터 파일의 입력으로 라우팅하는 단계; 를 포함하는 멀티 실행 모드 지원 방법.
  11. 제 10항에 있어서,
    상기 선택하는 단계는, 설정된 실행 모드가 SIMT 모드인 경우, 프로그램 카운터(Program Counter)의 정보를 기반으로 하나의 명령어를 선택하고,
    상기 전달하는 단계는, 상기 선택된 명령어에 포함된 오피코드를 기반으로 각 기능 유닛에 동일한 오피코드를 전달하는 멀티 실행 모드 지원 방법.
  12. 제 10항에 있어서,
    상기 선택하는 단계는, 설정된 실행 모드가 VLIW/CGRA 모드인 경우, 상기 수신된 복수의 명령어를 전부 선택하고,
    상기 전달하는 단계는, 상기 선택된 복수의 명령어에 포함된 오피코드를 기반으로 각 기능 유닛에 서로 다른 오피코드를 전달하는 멀티 실행 모드 지원 방법.
  13. 제 10항에 있어서,
    상기 선택하는 단계는, 설정된 실행 모드가 통합 모드인 경우, 상기 수신된 복수의 명령어 중 일부 명령어를 선택하고,
    상기 전달하는 단계는, 상기 선택된 둘 이상의 명령어에 포함된 오피코드를 기반으로 상기 복수의 기능 유닛 중 일부 기능 유닛에는 서로 다른 오피코드를 전달하고, 나머지 기능 유닛에는 동일한 오피코드를 전달하는 멀티 실행 모드 지원 방법.
  14. 제 10항에 있어서,
    상기 생성하는 단계는, 상기 선택된 명령어에 포함된 오퍼랜드의 논리 주소를 물리 주소로 변환하고, 이를 바탕으로 스위치 구성 정보를 생성하는 멀티 실행 모드 지원 방법.
KR1020130044429A 2013-04-22 2013-04-22 프로세서의 멀티 실행 모드 지원 장치 및 방법 KR20140126189A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020130044429A KR20140126189A (ko) 2013-04-22 2013-04-22 프로세서의 멀티 실행 모드 지원 장치 및 방법

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
KR1020130044429A KR20140126189A (ko) 2013-04-22 2013-04-22 프로세서의 멀티 실행 모드 지원 장치 및 방법
EP14165438.4A EP2796990A3 (en) 2013-04-22 2014-04-22 Apparatus and method for supporting multi-modes of processor
CN201410163684.7A CN104111912A (zh) 2013-04-22 2014-04-22 用于支持处理器的多模式的设备和方法
JP2014088264A JP2014216020A (ja) 2013-04-22 2014-04-22 プロセッサのマルチ実行モード支援装置及び方法
US14/258,622 US20140317388A1 (en) 2013-04-22 2014-04-22 Apparatus and method for supporting multi-modes of processor

Publications (1)

Publication Number Publication Date
KR20140126189A true KR20140126189A (ko) 2014-10-30

Family

ID=50513771

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130044429A KR20140126189A (ko) 2013-04-22 2013-04-22 프로세서의 멀티 실행 모드 지원 장치 및 방법

Country Status (5)

Country Link
US (1) US20140317388A1 (ko)
EP (1) EP2796990A3 (ko)
JP (1) JP2014216020A (ko)
KR (1) KR20140126189A (ko)
CN (1) CN104111912A (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106149284B (zh) * 2015-04-28 2019-04-26 青岛海尔洗衣机有限公司 一种洗衣机故障检测处理方法
US9977677B2 (en) * 2016-04-07 2018-05-22 International Business Machines Corporation Execution slice with supplemental instruction port for an instruction using a source operand from another instruction port

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH103389A (ja) * 1996-06-14 1998-01-06 Oki Electric Ind Co Ltd 並列計算機
US6272616B1 (en) * 1998-06-17 2001-08-07 Agere Systems Guardian Corp. Method and apparatus for executing multiple instruction streams in a digital processor with multiple data paths
US7013353B2 (en) * 2001-03-30 2006-03-14 Intel Corporation Host-fabric adapter having an efficient multi-tasking pipelined instruction execution micro-controller subsystem
US7788465B2 (en) * 2002-12-30 2010-08-31 Silicon Hive B.V. Processing system including a reconfigurable channel infrastructure comprising a control chain with combination elements for each processing element and a programmable switch between each pair of neighboring processing elements for efficient clustering of processing elements
US7949856B2 (en) * 2004-03-31 2011-05-24 Icera Inc. Method and apparatus for separate control processing and data path processing in a dual path processor with a shared load/store unit
US7793074B1 (en) * 2006-04-14 2010-09-07 Tilera Corporation Directing data in a parallel processing environment
US7730280B2 (en) * 2006-06-15 2010-06-01 Vicore Technologies, Inc. Methods and apparatus for independent processor node operations in a SIMD array processor
US8751211B2 (en) * 2008-03-27 2014-06-10 Rocketick Technologies Ltd. Simulation using parallel processors
TWI414994B (zh) * 2009-09-24 2013-11-11 Ind Tech Res Inst 可重組態處理裝置及其系統
US20120278591A1 (en) * 2011-04-27 2012-11-01 Advanced Micro Devices, Inc. Crossbar switch module having data movement instruction processor module and methods for implementing the same

Also Published As

Publication number Publication date
CN104111912A (zh) 2014-10-22
JP2014216020A (ja) 2014-11-17
EP2796990A2 (en) 2014-10-29
US20140317388A1 (en) 2014-10-23
EP2796990A3 (en) 2015-01-07

Similar Documents

Publication Publication Date Title
US10416999B2 (en) Processors, methods, and systems with a configurable spatial accelerator
US10380063B2 (en) Processors, methods, and systems with a configurable spatial accelerator having a sequencer dataflow operator
US10469397B2 (en) Processors and methods with configurable network-based dataflow operator circuits
US9665372B2 (en) Parallel slice processor with dynamic instruction stream mapping
DE102018005172A1 (de) Prozessoren, verfahren und systeme mit einem konfigurierbaren räumlichen beschleuniger
EP2710467B1 (en) Automatic kernel migration for heterogeneous cores
US10467183B2 (en) Processors and methods for pipelined runtime services in a spatial array
KR101839544B1 (ko) 이종 코어의 자동 부하 균형
US20190004955A1 (en) Processors, methods, and systems for a configurable spatial accelerator with memory system performance, power reduction, and atomics support features
US20190101952A1 (en) Processors and methods for configurable clock gating in a spatial array
US10083039B2 (en) Reconfigurable processor with load-store slices supporting reorder and controlling access to cache slices
US20190004945A1 (en) Processors, methods, and systems for a configurable spatial accelerator with transactional and replay features
US10025594B2 (en) Parallel data processing apparatus, system, and method
US10445098B2 (en) Processors and methods for privileged configuration in a spatial array
US20190004878A1 (en) Processors, methods, and systems for a configurable spatial accelerator with security, power reduction, and performace features
US9158575B2 (en) Multithreaded processor array with heterogeneous function blocks communicating tokens via self-routing switch fabrics
US9424045B2 (en) Data processing apparatus and method for controlling use of an issue queue to represent an instruction suitable for execution by a wide operand execution unit
US9092215B2 (en) Mapping between registers used by multiple instruction sets
US10133581B2 (en) Linkable issue queue parallel execution slice for a processor
US9965274B2 (en) Computer processor employing bypass network using result tags for routing result operands
KR101710116B1 (ko) 프로세서, 메모리 관리 장치 및 방법
JP4999183B2 (ja) 並列スレッド・コンピューティングの仮想のアーキテクチャ及び命令セット
US9135003B2 (en) Reconfigurable processor and reconfigurable processing method of vector operation using vector lane configuration information
DE112015004983T5 (de) Parallel-Slice-Prozessor mit einer Lade-Speicher-Umlaufwarteschlange für eine schnelle Freigabe von Einträgen in einer Ausgabewarteschlange
JP5762440B2 (ja) 高効率の埋め込み型均一マルチコアプラットフォーム用のタイルベースのプロセッサアーキテクチャーモデル

Legal Events

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