KR20140097651A - 멀티 모드 지원 프로세서 및 그 프로세서에서 멀티 모드를 지원하는 방법 - Google Patents

멀티 모드 지원 프로세서 및 그 프로세서에서 멀티 모드를 지원하는 방법 Download PDF

Info

Publication number
KR20140097651A
KR20140097651A KR1020130009326A KR20130009326A KR20140097651A KR 20140097651 A KR20140097651 A KR 20140097651A KR 1020130009326 A KR1020130009326 A KR 1020130009326A KR 20130009326 A KR20130009326 A KR 20130009326A KR 20140097651 A KR20140097651 A KR 20140097651A
Authority
KR
South Korea
Prior art keywords
end unit
unit
processing element
processing
instruction
Prior art date
Application number
KR1020130009326A
Other languages
English (en)
Other versions
KR101603752B1 (ko
Inventor
웅 서
조연곤
류수정
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020130009326A priority Critical patent/KR101603752B1/ko
Priority to US14/165,881 priority patent/US10120833B2/en
Priority to JP2014013823A priority patent/JP6400296B2/ja
Priority to CN201410042215.XA priority patent/CN103970511B/zh
Publication of KR20140097651A publication Critical patent/KR20140097651A/ko
Priority to US14/606,240 priority patent/US20150143081A1/en
Application granted granted Critical
Publication of KR101603752B1 publication Critical patent/KR101603752B1/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/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8007Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
    • G06F15/8015One dimensional arrays, e.g. rings, linear arrays, buses
    • 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/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30058Conditional branch instructions
    • 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/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • 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

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)
  • Computing Systems (AREA)
  • Multimedia (AREA)
  • Advance Control (AREA)
  • Multi Processors (AREA)

Abstract

멀티 모드를 지원하는 프로세서에 관한 것으로, 일 실시예에 따른 프로세서는 둘 이상의 프론트 엔드 유닛과 그 프론트 엔드 유닛보다 더 많은 수로 이루어지는 프로세싱 엘리먼트 및 조건 분기에 의해 쓰레드 발산(thread divergence)이 발생하면 둘 이상의 현재 활성화된 프론트 엔드 유닛을 이용하여 프로세싱 엘리먼트가 명령어를 처리하도록 하고, 그렇지 않으면 하나의 활성화된 프론트 엔드 유닛을 이용하여 명령어를 처리하도록 하도록 제어 정보를 설정하는 제어 유닛을 포함할 수 있다.

Description

멀티 모드 지원 프로세서 및 그 프로세서에서 멀티 모드를 지원하는 방법{MULTI MODE SUPPORTING PROCESSOR AND METHOD USING THE PROCESSOR}
SIMD 및 MIMD 모드를 지원하는 프로세서 및 그 프로세서에서 멀티 모드를 지원하는 방법과 관련된다.
SIMD(Single Instruction Multiple Data) 구조에 기반한 프로세서는 모든 프로세싱 엘리먼트(Processing Element)가 인스트럭션 페치(Instruction Fetch) 및 디코드(Decode) 기능을 담당하는 하나의 프론트 엔드 유닛(Front End Unit)을 사용하여 명령어를 공유함으로써 하드웨어 자원을 최소화하고 데이터 병렬 처리에 의한 성능 향상을 최대화한다. 하지만, 조건 분기가 발생할 경우 각 조건 분기문을 순차적으로 수행하게 되어 주어진 자원을 효율적으로 사용할 수 없게 된다. 반면에, MIDM(Multiple Instruction Multiple Data) 구조에 기반한 프로세서는 모든 프로세싱 엘리먼트가 독립적인 프론트 엔드 유닛을 가지고 동작함으로써 독립적인 쓰레드(thread)를 동시에 처리하기 때문에 빠른 연산 처리가 가능하고 조건 분기문 처리에 적합하지만, 독립적인 프론트 엔드 유닛으로 인하여 하드웨어가 복잡해지고 크기가 증가하며 비용이 증가하는 문제가 있다.
프로세싱 엘리먼트의 확장성을 고려하여 제한된 프론트 엔드 유닛을 사용하고 조건 분기문이 발생하면 동적으로 SIMD 및 MIDM 모드로 동작하도록 할 수 있는 장치 및 방법에 제시된다.
일 양상에 따르면, 프로세서는 둘 이상의 프론트 엔드 유닛, 프론트 엔드 유닛보다 더 많은 수의 프로세싱 엘리먼트 및 조건 분기에 의해 쓰레드 발산(thread divergence)이 발생하면 둘 이상의 현재 활성화된 프론트 엔드 유닛을 이용하여 프로세싱 엘리먼트가 명령어를 처리하도록 하고, 그렇지 않으면 하나의 활성화된 프론트 엔드 유닛을 이용하여 명령어를 처리하도록 하도록 제어 정보를 설정하는 제어 유닛을 포함할 수 있다.
또한, 프로세서는 제어 정보를 기초로 현재 활성화된 프론트 엔드 유닛의 명령어를 처리할 프로세싱 엘리먼트를 판단하여 명령어를 해당하는 프로세싱 엘리먼트에 전달하는 인터커넥션 유닛을 더 포함할 수 있다.
제어 유닛은 각 프론트 엔드 유닛에 대응되어 각 프론트 엔드 유닛에 대한 제어 정보를 저장하는 둘 이상의 레지스터를 포함할 수 있다.
제어 정보는 각 프론트 엔드 유닛에 대한 프로세싱 엘리먼트 할당 정보를 포함할 수 있다.
각 레지스터는 대응되는 프론트 엔드 유닛에 대한 프로세싱 엘리먼트 할당 정보를 저장하기 위한 전체 프로세싱 엘리먼트 수만큼의 비트 영역을 포함할 수 있다.
제어 유닛은 현재 활성화된 프론트 엔드 유닛에 의해 검출된 조건 분기 명령어를 처리한 프로세싱 엘리먼트로부터 처리 결과를 수신하여 쓰레드 발산 여부를 판단하고, 쓰레드 발산이 발생한 것으로 판단되면 활성화되어 있지 않은 프론트 엔드 유닛 중의 어느 하나를 추가로 활성화할 수 있다.
제어 유닛은 추가로 활성화된 프론트 엔드 유닛에 프로세싱 엘리먼트의 일부를 할당하여 그 할당 정보를 추가로 활성화된 프론트 엔드 유닛에 대응하는 레지스터에 저장할 수 있다.
제어 유닛은 현재 활성화된 프론트 엔드 유닛과 추가로 활성화된 프론트 엔드 유닛에 의해 조건 분기문의 처리가 모두 종료하면, 추가로 활성화된 프론트 엔드 유닛을 비활성화하고, 그 추가로 활성화된 프론트 엔드 유닛에 할당되어 있던 프로세싱 엘리먼트를 현재 활성화된 프론트 엔드 유닛에 할당되도록 제어 정보를 설정할 수 있다.
일 양상에 따르면, 현재 활성화된 프론트 엔드 유닛이 조건 분기 명령어를 검출하는 단계, 제어 유닛이 검출된 조건 분기 명령어에 의해 쓰레드 발산(thread divergence)이 발생하였는지 판단하는 단계, 제어 유닛이 판단 결과 쓰레드 발산이 발생하였으면 비활성화되어 있는 프론트 엔드 유닛 중의 어느 하나를 추가로 활성화하는 단계 및 제어 유닛이 활성화된 프론트 엔드 유닛을 이용하여 프로세싱 엘리먼트가 명령어를 처리하도록 제어 정보를 설정하는 단계를 포함할 수 있다.
이때, 프로세서의 프론트 엔드 유닛은 적어도 둘 이상이며, 프로세싱 엘리먼트는 상기 프론트 엔드 유닛보다 더 많은 수로 이루어질 수 있다.
쓰레드 발산 발생 여부를 판단하는 단계는 제어 유닛이 조건 분기 명령어를 처리한 프로세싱 엘리먼트로부터 처리 결과를 수신하고, 그 수신된 처리 결과를 기초로 쓰레드 발산이 발생하였는지를 판단할 수 있다.
제어 유닛은 각 프론트 엔드 유닛에 대응되어 각 프론트 엔드 유닛에 대한 제어 정보를 저장하는 둘 이상의 레지스터를 포함할 수 있다.
제어 정보는 각 프론트 엔드 유닛에 대한 프로세싱 엘리먼트의 할당 정보를 포함할 수 있다.
각 레지스터는 대응되는 프론트 엔드 유닛에 대한 프로세싱 엘리먼트의 할당 정보를 저장하기 위한 프로세싱 엘리먼트 수만큼의 비트 영역을 포함할 수 있다.
제어 정보 설정 단계는 추가로 활성화된 프론트 엔드 유닛에 대응되는 레지스터의 비트 영역에서 추가로 활성화된 프론트 엔드 유닛에 할당된 프로세싱 엘리먼트에 대응되는 비트값을 설정할 수 있다.
또한, 멀티 모드 지원 방법은 제어 유닛이 현재 활성화된 프론트 엔드 유닛과 추가로 활성화된 프론트 엔드 유닛에 의해 처리되는 조건 분기가 모두 종료하는지 판단하는 단계, 판단 결과 조건 분기가 모두 종료하면 추가로 활성화된 프론트 엔드 유닛을 비활성화하는 단계 및 추가로 활성화된 프론트 엔드 유닛에 할당되어 있던 프로세싱 엘리먼트를 상기 현재 활성화된 프론트 엔드 유닛에 할당되도록 제어 정보를 설정하는 단계를 포함할 수 있다.
제한된 프론트 엔드 유닛을 사용하여 조건 분기문 발생시 동적으로 SIMD 및 MIDM 모드로 동작하도록 할 수 있도록 함으로써 프로세싱 엘리먼트의 확장성을 고려할 수 있고, SIMD 모드의 데이터 병렬화 처리 및 MIMD 모드의 조건 분기문 처리를 효율적으로 수행할 수 있다.
도 1은 일 실시예에 따른 프로세서를 도시한 것이다.
도 2는 일반적인 프로세서에서 조건 분기문 처리를 설명하기 위한 예이다.
도 3은 일 실시예에 따른 프로세서에서 조건 분기문 처리를 설명하기 위한 예이다.
도 4는 일 실시예에 따른 프로세서에서 멀티 모드 지원 방법의 흐름도이다.
기타 실시예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다. 기재된 기술의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
이하, 증강 현실을 활용한 프로세서 및 그 프로세서에서 멀티 모드를 지원하는 방법의 일 실시예를 도면들을 참고하여 자세히 설명하도록 한다.
도 1은 일 실시예에 따른 프로세서를 도시한 것이다.
도 1을 참조하면, 프로세서(100)는 프론트 엔드 유닛(120), 인터커넥션 유닛(130), 프로세싱 엘리먼트(140) 및 제어 유닛(150)을 포함한다.
프론트 엔드 유닛(120)은 적어도 둘 이상(FEU_0 ~ FEU_M-1)이며 향후 프로세서(100)의 확장성을 고려하여 적절한 수로 구성된다. 프론트 엔드 유닛(120)은 인스트럭션 캐시(110)로부터 명령어를 페치(Fetch)하고 디코드(decode)하는 기능을 수행한다.
프로세싱 엘리먼트(140)는 프론트 엔드 유닛(120)에서 출력된 명령어를 처리하는 기능을 수행하며 적어도 둘 이상(PE_0 ~ PE_M-1)으로 구성된다. 이때, 프로세싱 엘리먼트(140)는 프론트 엔드 유닛(120)보다는 더 많은 수로 이루어질 수 있다. 복수의 프로세싱 엘리먼트(140)는 상황에 따라 하나의 프론트 엔드 유닛(120)을 통해 명령어를 처리하거나 또는 둘 이상의 프론트 엔드 유닛(120)을 통해 명령어를 처리할 수 있다.
제어 유닛(150)은 상황에 따라 인스트럭션 캐시(110)로부터 명령어를 페치하고 디코드할 프론트 엔드 유닛(120)과, 그 프론트 엔드 유닛(120)을 이용하여 명령어를 처리할 프로세싱 엘리먼트(140)를 동적으로 결정할 수 있다.
즉, 제어 유닛(150)은 조건 분기문에 의한 쓰레드 발산(thread divergence)이 발생하기 전이거나, 모든 조건 분기문이 종료한 경우에는 하나의 프론트 엔드 유닛(120)만을 활성화하여 모든 프로세싱 엘리먼트(140)가 그 현재 활성화된 프론트 엔드 유닛(120)을 이용하여 명령어를 처리하는 SIMD 모드로 동작할 수 있도록 제어 정보를 설정할 수 있다. 이때, 하나의 프론트 엔드 유닛(120)은 미리 설정될 수 있으며, 예를 들어, FEU_0을 활성화하여 명령어를 처리하도록 제어 정보를 설정할 수 있다.
만약, 현재 활성화된 프론트 엔드 유닛(120)에 의해 조건 분기 명령어가 검출되고 그 조건 분기문에 의해 쓰레드 발산이 발생하면 활성화되어 있지 않은 사용 가능한 프론트 엔드 유닛(120)에서 어느 하나의 프론트 엔드 유닛(120)을 추가로 활성화하고, 프로세싱 엘리먼트(140)가 둘 이상의 활성화된 프론트 엔드 유닛(120)을 이용하여 명령어를 처리하는 MIMD모드로 동작하도록 제어 정보를 설정할 수 있다. 제어 유닛(150)은 현재 활성화된 프론트 엔드 유닛(120)에 의해 검출된 조건 분기 명령어를 처리한 프로세싱 엘리먼트(140)로부터 그 처리 결과를 수신하여 쓰레드 발산 여부를 판단할 수 있고, 그 판단 결과에 따라 프론트 엔드 유닛(120)의 추가 활성화 여부를 판단할 수 있다.
제어 유닛(120)은 프론트 엔드 유닛(120)이 추가로 활성화되면 현재 활성화된 프론트 엔드 유닛(120)에 할당되어 있거나 어느 프론트 엔드 유닛(120)에도 할당되어 있지 않은 프로세싱 엘리먼트(140) 중의 일부를 그 추가로 활성화된 프론트 엔드 유닛(120)에 할당되도록 제어 정보를 설정할 수 있다.
인터커넥션 유닛(130)은 제어 유닛(150)에 의해 설정된 제어 정보를 이용하여 현재 활성화된 프론트 엔드 유닛(120)의 명령어를 처리할 프로세싱 엘리먼트(140)를 판단하고, 그 명령어를 판단된 프로세싱 엘리먼트(140)에 전달한다.
도 2는 일반적인 프로세서에서 조건 분기문 처리를 설명하기 위한 예이다. 도 3은 일 실시예에 따른 프로세서에서 조건 분기문 처리를 설명하기 위한 예이다. 도 1 내지 도 3을 참조하여, 일 실시예에 따른 멀티 모드를 지원하는 프로세서에 대해 좀 더 상세히 설명한다.
도 2의 좌측은 하나의 프론트 엔드 유닛을 이용하여 8개의 프로세싱 엘리먼트가 명령어를 처리하는 SIMD 모드를 도시한 것이다. 조건 분기문이 발생하기 전(라인 0 ~ 7)과, 모든 조건 분기문이 종료한 이후(라인 100~)의 명령어는 8개의 프로세싱 엘리먼트(0~7)가 데이터를 병렬로 처리함으로써 매우 효과적인 처리 성능을 얻을 수 있다. 반면에, 조건 분기문이 발생한 이후(라인 8 ~ 99)에는 일부의 프로세싱 엘리먼트들이 순차적으로 명령어를 처리함으로써 오히려 처리 성능이 저하된다.
도 2의 우측은 8 개의 프론트 엔드 유닛(FEU 0 ~ FEU 7)과 8개의 프로세싱 엘리먼트(0 ~ 7)를 이용하여 명령어를 처리하는 것을 예시한 것으로서, 8 개의 프론트 엔드 유닛(FEU 0 ~ FEU 7)을 통해 각 조건 분기문에 의한 명령어를 처리함으로써 신속한 조건 분기문의 처리가 가능해진다. 하지만, MIMD는 독립적인 프론트 엔드 유닛이 필요하여 프로세서 설계의 복잡도 및 크기가 증가하게 된다. 이러한 제약으로 인해, 일반적인 SIMD 구조의 프로세서에 비해 적은 프로세싱 엘리먼트를 가질 수밖에 없다.
도 3은 4개의 프론트 엔드 유닛(FEU 0 ~ FEU 3)과 8개의 프로세싱 엘리먼트(0 ~ 7)로 구성된 프로세서(100)에서 명령어를 처리하는 것을 예시한 것이다. 8개의 프로세싱 엘리먼트(0~8)는 조건 분기문이 검출되기 전(라인 0~ 7)까지 FEU 0만을 활성화하여 명령어를 처리한다. FEU 0이 라인 8의 조건 분기 명령어(if(c.0==c.1))를 인스트럭션 캐시(110)로부터 페치하면, 프로세싱 엘리먼트 0이 그 조건 분기 명령어(if(c.0==c.1))를 처리하고, FEU 0에서 다음 라인 9의 조건 분기문 명령어(if(d.0==d.1))를 페치하면 이를 처리한다. 이때, 쓰레드 발산이 발생하면 다음 사용 가능한 프론트 엔드 유닛(FEU 1 ~ FEU3) 중에서 FEU 1을 활성화하고 FEU 1을 이용하여 프로세싱 엘리먼트 1이 그 조건 분기 명령어(if(d.0==d.1))와 짝을 이루는 조건 분기 명령어(else) 이하를 처리하도록 한다.
이와 같은 방식으로, FEU 0이 페치한 조건 분기 명령어(if(c.0==c.1))의 처리 결과 쓰레드 발산이 발생하면 FEU 2를 활성화하고, FEU 2를 통해 조건 분기 명령어(if(c.0==c.1))와 짝을 이루는 조건 분기 명령어(else if(c.0==c.2)) 이하를 프로세싱 엘리먼트 2,3,7이 처리하도록 한다. FEU 2를 통해 처리한 조건 분기 명령어(else if(c.0==c.2))에 의해 쓰레드 발산이 발생하면 FEU3을 활성화하고, FEU 3을 통해 그 조건 분기 명령어(else if(c.0==c.2))와 짝을 이루는 조건 분기 명령어(else)이하를 프로세싱 엘리먼트 4, 5, 6 이 처리하도록 한다.
도 3에 예시된 바와 같이, 일 실시예에 의한 프로세서(100)에 따르면, 조건 분기에 의한 쓰레드 발산 여부에 따라 프론트 엔드 유닛(120)을 동적으로 활성화하여 명령어를 처리할 수 있도록 함으로써 데이터 병렬 처리 및 조건 분기문의 처리에 효과적으로 이루어질 수 있다.
추가적인 양상에 따르면, 도 1에 도시된 바와 같이 제어 유닛(150)은 둘 이상의 레지스터(160)를 포함할 수 있다. 각 레지스터(160)는 프론트 엔드 유닛(120)과 동일한 수로 이루어져 각 프론트 엔드 유닛(FEU_0 ~ FEU_M-1)에 대응되며, 각 프론트 엔드 유닛(120)에 대해 설정된 제어 정보를 저장할 수 있다.
제어 정보는 각 프론트 엔드 유닛에 대한 프로세싱 엘리먼트 할당 정보, 점유 PC(Program Counter) 정보, 비점유 PC 정보, 복귀 PC 정보 및 분기 FEU 정보를 포함할 수 있다. 이때, 점유 PC 정보는 조건 분기 명령어에 포함된 PC 정보를 이용하여 계산된 값으로서, 현재 PC와 조건 분기가 참(True)인 경우 점프할 상대 위치를 나타내는 상대 타겟 PC를 더한 값일 수 있다. 비점유 PC 정보는 현재 PC의 다음 PC를 의미하며, 복귀 PC 정보는 복귀 명령어(reconversion instruction)에 포함된 조건 분기가 종료되면 복귀할 상대 위치를 나타내는 상대 복귀 PC 정보를 이용하여 계산된 값으로서, 현재 PC에 그 상대 복귀 PC를 더한 값일 수 있다. 또한, 분기 FEU 정보는 조건 분기 명령어에 의해 쓰레드 발산이 발생한 경우 각 쓰레드를 처리하는 프론트 엔드 유닛(120)에 대한 정보로서, 조건 분기를 처리하는 프론트 엔드 유닛(120)들 간의 패런트(parent)와 차일드(child) 관계를 나타낼 수 있다.
도 1에 도시된 바를 참조하면, 각 프론트 엔드 유닛(120)에 대응되는 제어 유닛(150)의 각 레지스터(160)는 위의 제어 정보들을 저장하기 위해 대응되는 하나 이상의 영역(161~165)로 이루어질 수 있다. 이때, 각 프론트 엔드 유닛(120)에 대한 프로세싱 엘리먼트(140) 할당 정보를 저장하기 위한 영역(161)은 전체 프로세싱 엘리먼트(140)의 수만큼의 비트 영역(V0~VN-1)으로 이루어질 수 있다. 그 영역(161)의 각 비트(V0~VN-1)는 각 프로세싱 엘리먼트(140)에 정적으로 매핑되어 각 비트값의 설정에 따라 매핑되는 프로세싱 엘리먼트(140)의 할당 여부를 나타낼 수 있다. 예를 들어, 프로세싱 엘리먼트 PE_0부터 PE_N-1은 차례대로 비트 V0부터 VN-1에 매핑되며, 제어 유닛(150)은 프론트 엔드 유닛(120)에 할당된 프로세싱 엘리먼트(120)는 매핑되는 비트를 '1'로 설정하고, 그렇지 않은 비트는 '0'으로 설정할 수 있다.
최초에 프로세서(100)를 SIMD 모드로 동작하도록 하나의 프론트 엔드 유닛(120) 예컨대, FEU 0가 미리 설정되어 있으면, 제어 유닛(150)은 그 FEU 0을 활성화한다. 제어 유닛(150)은 프로세싱 엘리먼트(140) 할당 정보를 저장하기 위한 레지스터(160)의 비트 영역(V0~VN-1)에서 그 활성화된 현재 프론트 엔드 유닛 FEU 0의 명령어를 처리할 하나 이상의 프로세싱 엘리먼트(140)와 매핑되는 비트의 값을 '1'로 설정한다.
현재 활성화된 프론트 엔드 유닛 FEU 0이 인스트럭션 캐시(110)로부터 명령어를 페치하고 디코드하는 과정에서 조건 분기 명령어를 검출하면 그 조건 분기 명령어에 포함된 PC 정보를 기초로 점유 PC 정보와 비점유 PC 정보를 제어 유닛(150)에 전송한다. 제어 유닛(150)은 현재 활성화된 프론트 엔드 유닛 FEU 0으로부터 점유 PC 정보와 비점유 PC 정보를 수신하면 그 FEU 0에 대응되는 레지스터(160)의 점유 PC 정보 저장 영역(162)과 비점유 PC 정보 저장 영역(163)에 저장한다.
인터커넥션 유닛(130)은 레지스터(160)에 저장된 제어 정보를 참조하여 현재 활성화된 프론트 엔드 유닛 FEU 0에 할당된 프로세싱 엘리먼트(140)를 판단하여, 그 현재 활성화된 프론트 엔드 유닛 FEU 0으로부터 출력되는 명령어를 프로세싱 엘리먼트(140)에 전달한다.
인터커넥션 유닛(130)으로부터 조건 분기 명령어를 수신한 프로세싱 엘리먼트(140)는 그 조건 분기 명령어를 처리하여 그 처리 결과(참 또는 거짓)를 제어 유닛(150)에 전송한다.
제어 유닛(150)은 그 처리 결과를 기초로 쓰레드 발산 발생 여부를 판단할 수 있다. 예를 들어, 처리 결과가 참(True)인 경우 쓰레드 발산이 발생하지 않은 것으로 판단하고, 현재 활성화된 프론트 엔드 유닛 FEU 0에 할당된 프로세싱 엘리먼트(140)가 점유 PC 위치로 이동하여 FEU 0을 통해 계속해서 명령어를 처리하도록 할 수 있다.
처리 결과가 거짓(False)인 경우 쓰레드 발산이 발생한 것으로 판단하고, 제어 유닛(150)은 새로운 프론트 엔드 유닛 FEU 1을 활성화하고, 현재 활성화된 프론트 엔드 유닛 FEU 0와 추가로 활성화된 프론트 엔드 유닛 FEU 1에 대응되는 레지스터의 비트 영역을 업데이트하여 프로세싱 엘리먼트(140)를 각각 할당한다.
또한, 제어 유닛(150)은 추가로 활성화된 프론트 엔드 유닛 FEU 1에 대응되는 레지스터(160)의 점유 PC 정보 저장 영역(162)에 현재 프론트 엔드 유닛 FEU 0으로부터 수신한 비점유 PC 정보를 저장하여, 프로세싱 엘리먼트(140)가 비점유 PC에 위치로 이동하여 FEU 1을 통해 명령어를 처리하도록 할 수 있다.
또한, 제어 유닛(150)은 현재 활성화된 프론트 엔드 유닛 FEU 0의 분기 FEU 정보에 차일드 FEU로서 FEU 1을 설정하여 레지스터의 분기 FEU 정보 저장 영역(165)에 저장하고, 추가로 활성화된 프론트 엔드 유닛 FEU 1의 분기 FEU 정보에 패런트 FEU로서 FEU 0을 설정하여 레지스터(160)의 분기 FEU 정보 저장 영역(165)에 저장할 수 있다.
현재 활성화된 프론트 엔드 유닛 FEU 0 또는 추가로 활성화된 프론트 엔드 유닛 FEU 1이 복귀 명령어를 검출하면, 복귀 명령어를 검출한 프론트 엔드 유닛이 그 복귀 명령어에 포함된 PC 정보를 기초한 복귀 PC 정보를 제어 유닛(150)에 전송하면 제어 유닛(150)은 그 복귀 명령어를 검출한 프론트 엔드 유닛에 대응되는 레지스터의 복귀 PC 정보 저장 영역에 수신한 복귀 PC 정보를 저장한다. 또한, 제어 유닛(150)은 그 복귀 명령어를 검출한 프론트 엔드 유닛의 분기 FEU 정보를 이용하여 짝을 이루는 프론트 엔드 유닛을 결정하고, 그 짝을 이루는 프론트 엔드 유닛에 의한 조건 분기문 처리가 종료할 때까지 대기할 수 있다.
제어 유닛(150)은 짝을 이루는 프론트 엔드 유닛이 복귀 명령어를 검출하여 조건 분기가 종료하는 경우 추가로 활성화된 차일드 프론트 엔드 유닛 FEU 1을 비활성화한다. 그리고, FEU 1에 대응하는 레지스터의 비트 영역과 FEU 0에 대응하는 레지스터의 비트 영역을 논리 합(logical 'or')하여 FEU 1에 할당되어 있던 프로세싱 엘리먼트(140)를 FEU 0에 할당되도록 제어 정보를 설정할 수 있다.
도 4는 일 실시예에 따른 프로세서에서 멀티 모드 지원 방법의 흐름도이다.
도 4를 참조하여, 도 1의 실시예에 따른 프로세서(100)에서 동적으로 멀티 모드를 지원하는 방법을 설명한다.
먼저, 프로세서(100)의 현재 활성화된 프론트 엔드 유닛(120)이 인스트럭션 캐시(110)로부터 명령어를 페치하고 디코드하는 과정에서 조건 분기 명령어를 검출하면 그 조건 분기 명령어에 포함된 PC 정보를 기초로 점유 PC 정보와 비점유 PC 정보를 제어 유닛(150)에 전송한다((단계 410). 이때, 현재 활성화된 프론트 엔드 유닛(120)은 최초에는 미리 설정된 어느 하나의 프론트 엔드 유닛이 되며, 이하 단계를 수행하는 과정에서 프론트 엔드 유닛이 추가로 활성화되면 그 활성화된 모든 프론트 엔드 유닛을 의미한다.
그 다음, 현재 활성화된 프론트 엔드 유닛(120)에 할당된 프로세싱 엘리먼트(140)가 인터커넥션 유닛(130)으로부터 조건 분기 명령어를 전달받아 처리하고 그 처리 결과(참 또는 거짓)를 제어 유닛(150)에 전송한다(단계 420). 인터커넥션 유닛(130)은 레지스터(160)에 저장된 제어 정보를 기초로 그 현재 활성화된 프론트 엔드 유닛(120)으로부터 출력되는 명령어를 전달할 프로세싱 엘리먼트(140)를 판단할 수 있다.
그 다음, 제어 유닛(150)은 현재 활성화된 프론트 엔드 유닛(120)으로부터 점유 PC 정보와 비점유 PC 정보를 수신하면 그 현재 활성화된 프론트 엔드 유닛(120)에 대응되는 레지스터(160)의 점유 PC 정보 저장 영역(162)과 비점유 PC 정보 저장 영역(163)에 저장하고, 프로세싱 엘리먼트(140)로부터 처리 결과를 수신하여 쓰레드 발산이 발생하였는지를 판단할 수 있다(단계 430).
판단 결과 쓰레드 발산이 발생하지 않은 경우 예를 들어, 처리 결과가 참(True)인 경우, 현재 활성화된 프론트 엔드 유닛(120)에 할당된 프로세싱 엘리먼트(140)가 점유 PC 위치로 이동하여 그 현재 활성화된 프론트 엔드 유닛(20)을 통해 계속해서 다음 명령어를 처리하도록 할 수 있다(단계 490).
만약, 판단 결과 쓰레드 발산이 발생한 경우, 예컨대, 처리 결과가 거짓(False)인 경우, 제어 유닛(150)은 현재 활성화되어 있지 않은 프론트 엔드 유닛 중에서 어느 하나를 추가로 활성화한다(단계 440). 이때, 프로세서(100)를 구성하는 모든 프론트 엔드 유닛(120)이 활성화되어 있는 상태인 경우에는 더 이상 가용한 프론트 엔드 유닛(120)이 존재하지 않기 때문에 그 조건 분기 명령어를 검출한 현재 활성화된 프론트 엔드 유닛(120)을 이용하여 순차적으로 명령어를 처리하도록 할 수 있다.
그 다음, 현재 활성화된 프론트 엔드 유닛(120)과 추가로 활성화된 프론트 엔드 유닛(120)에 대하여 제어 정보를 업데이트하거나 설정한다(단계 450). 예를 들어, 각 프론트 엔드 유닛(120)에 대응되는 레지스터(160)의 비트 영역을 업데이트하여 각 프론트 엔드 유닛(120)에 프로세싱 엘리먼트(140)를 할당할 수 있다. 또한, 추가로 활성화된 프론트 엔드 유닛(120)의 점유 PC 정보로서 현재 활성화된 프론트 엔드 유닛(120)으로부터 수신한 비점유 PC 정보를 저장하여, 프로세싱 엘리먼트(140)가 비점유 PC에 위치로 이동하여 통해 명령어를 처리하도록 할 수 있다. 또한, 제어 유닛(150)은 현재 활성화된 프론트 엔드 유닛(120)의 분기 FEU 정보에 차일드 FEU로서 추가로 활성화된 프론트 엔드 유닛(120)을 설정하여 레지스터의 분기 FEU 정보 저장 영역(165)에 저장하고, 추가로 활성화된 프론트 엔드 유닛(120)의 분기 FEU 정보에 패런트 FEU로서 현재 활성화된 프론트 엔드 유닛(120)을 설정하여 레지스터(160)의 분기 FEU 정보 저장 영역(165)에 저장할 수 있다.
그 다음, 현재 활성화된 프론트 엔드 유닛(120) 또는 추가로 활성화된 프론트 엔드 유닛(120)이 복귀 명령어를 검출하여 복귀 PC 정보를 제어 유닛(150)에 전송하면 제어 유닛(150)은 그 복귀 명령어를 검출한 프론트 엔드 유닛(120)의 분기 FEU 정보를 이용하여 짝을 이루는 프론트 엔드 유닛(120)을 결정하고, 그 짝을 이루는 프론트 엔드 유닛(120)에 의한 조건 분기문 처리가 종료할 때까지 대기할 수 있다(단계 460). 또한, 제어 유닛(150)은 그 복귀 명령어를 검출한 프론트 엔드 유닛(120)에 대응되는 레지스터(160)의 복귀 PC 정보 저장 영역(164)에 수신한 복귀 PC 정보를 저장한다.
그 다음, 제어 유닛(150)은 짝을 이루는 프론트 엔드 유닛(120)이 복귀 명령어를 검출하여 모든 조건 분기가 종료하는 경우 추가로 활성화된 프론트 엔드 유닛(120)을 비활성화한다(단계 470).
그 다음, 단계 470에서 비활성화된 프론트 엔드 유닛(120)에 대응하는 레지스터의 비트 영역과 현재 활성화된 프론트 엔드 유닛(120)에 대응하는 레지스터의 비트 영역을 논리 합(logical 'or')하여 비활성화된 프론트 엔드 유닛에 할당되어 있던 프로세싱 엘리먼트(140)를 현재 활성화된 프론트 엔드 유닛에 할당되도록 제어 정보를 설정할 수 있다(단계 480).
그 다음, 현재 활성화된 프론트 엔드 유닛(120)을 이용하여 계속해서 다음 명령어를 처리하도록 한다(단계 490). 즉, 현재 활성화된 프론트 엔드 유닛(120)은 계속하여 인스트럭션 캐시(110)로부터 다음 처리할 명령어를 페치하고 단계 410이하는 반복 수행될 수 있다.
한편, 본 실시 예들은 컴퓨터로 읽을 수 있는 기록 매체에 컴퓨터가 읽을 수 있는 코드로 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록 매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록 장치를 포함한다.
컴퓨터가 읽을 수 있는 기록 매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피디스크, 광 데이터 저장장치 등이 있으며, 또한 캐리어 웨이브(예를 들어 인터넷을 통한 전송)의 형태로 구현하는 것을 포함한다. 또한, 컴퓨터가 읽을 수 있는 기록 매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산 방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다. 그리고 본 실시예들을 구현하기 위한 기능적인(functional) 프로그램, 코드 및 코드 세그먼트들은 본 발명이 속하는 기술 분야의 프로그래머들에 의하여 용이하게 추론될 수 있다.
본 개시가 속하는 기술분야의 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.
100: 프로세서 110: 인스트럭션 캐시
120: 프론트 엔드 유닛 130: 인터커넥션 유닛
140: 프로세싱 엘리먼트 150: 제어 유닛
160: 레지스터

Claims (16)

  1. 둘 이상의 프론트 엔드 유닛;
    상기 프론트 엔드 유닛보다 더 많은 수의 프로세싱 엘리먼트; 및
    조건 분기에 의해 쓰레드 발산(thread divergence)이 발생하면 둘 이상의 현재 활성화된 프론트 엔드 유닛을 이용하여 상기 프로세싱 엘리먼트가 명령어를 처리하도록 하고, 그렇지 않으면 하나의 활성화된 프론트 엔드 유닛을 이용하여 명령어를 처리하도록 하도록 제어 정보를 설정하는 제어 유닛;을 포함하는 프로세서.
  2. 제1항에 있어서,
    상기 제어 정보를 기초로 상기 현재 활성화된 프론트 엔드 유닛의 명령어를 처리할 프로세싱 엘리먼트를 판단하여 상기 명령어를 해당하는 프로세싱 엘리먼트에 전달하는 인터커넥션 유닛;을 더 포함하는 프로세서.
  3. 제1항에 있어서, 상기 제어 유닛은
    상기 각 프론트 엔드 유닛에 대응되어 각 프론트 엔드 유닛에 대한 제어 정보를 저장하는 둘 이상의 레지스터를 포함하는 프로세서.
  4. 제3항에 있어서, 상기 제어 정보는
    상기 각 프론트 엔드 유닛에 대한 프로세싱 엘리먼트 할당 정보를 포함하는 프로세서.
  5. 제4항에 있어서, 상기 각 레지스터는
    대응되는 프론트 엔드 유닛에 대한 프로세싱 엘리먼트 할당 정보를 저장하기 위한 전체 프로세싱 엘리먼트 수만큼의 비트 영역을 포함하는 프로세서.
  6. 제1항에 있어서, 상기 제어 유닛은,
    상기 현재 활성화된 프론트 엔드 유닛에 의해 검출된 조건 분기 명령어를 처리한 프로세싱 엘리먼트로부터 처리 결과를 수신하여 쓰레드 발산 여부를 판단하고, 쓰레드 발산이 발생한 것으로 판단되면 활성화되어 있지 않은 프론트 엔드 유닛 중의 어느 하나를 추가로 활성화하는 프로세서.
  7. 제6항에 있어서, 상기 제어 유닛은
    상기 추가로 활성화된 프론트 엔드 유닛에 상기 프로세싱 엘리먼트의 일부를 할당하여 그 할당 정보를 상기 추가로 활성화된 프론트 엔드 유닛에 대응하는 레지스터에 저장하는 프로세서.
  8. 제6항에 있어서, 상기 제어 유닛은
    상기 현재 활성화된 프론트 엔드 유닛과 상기 추가로 활성화된 프론트 엔드 유닛에 의해 조건 분기문의 처리가 모두 종료하면, 상기 추가로 활성화된 프론트 엔드 유닛을 비활성화하고, 그 추가로 활성화된 프론트 엔드 유닛에 할당되어 있던 프로세싱 엘리먼트를 상기 현재 활성화된 프론트 엔드 유닛에 할당되도록 제어 정보를 설정하는 프로세서.
  9. 현재 활성화된 프론트 엔드 유닛이 조건 분기 명령어를 검출하는 단계;
    제어 유닛이 상기 검출된 조건 분기 명령어에 의해 쓰레드 발산(thread divergence)이 발생하였는지 판단하는 단계;
    제어 유닛이 상기 판단 결과 쓰레드 발산이 발생하였으면 비활성화되어 있는 프론트 엔드 유닛 중의 어느 하나를 추가로 활성화하는 단계; 및
    제어 유닛이 상기 활성화된 프론트 엔드 유닛을 이용하여 프로세싱 엘리먼트가 명령어를 처리하도록 제어 정보를 설정하는 단계;를 포함하는 멀티 모드 지원 방법.
  10. 제9항에 있어서,
    상기 프로세서의 프론트 엔드 유닛은 적어도 둘 이상이며, 상기 프로세싱 엘리먼트는 상기 프론트 엔드 유닛보다 더 많은 수로 이루어진 멀티 모드 지원 방법.
  11. 제9항에 있어서, 상기 쓰레드 발산 발생 여부를 판단하는 단계는
    상기 제어 유닛이 상기 조건 분기 명령어를 처리한 프로세싱 엘리먼트로부터 처리 결과를 수신하고, 그 수신된 처리 결과를 기초로 쓰레드 발산이 발생하였는지를 판단하는 멀티 모드 지원 방법.
  12. 제9항에 있어서, 상기 제어 유닛은
    상기 각 프론트 엔드 유닛에 대응되어 각 프론트 엔드 유닛에 대한 제어 정보를 저장하는 둘 이상의 레지스터를 포함하는 멀티 모드 지원 방법.
  13. 제12항에 있어서, 상기 제어 정보는
    상기 각 프론트 엔드 유닛에 대한 프로세싱 엘리먼트의 할당 정보를 포함하는 멀티 모드 지원 방법.
  14. 제13항에 있어서, 상기 각 레지스터는
    대응되는 프론트 엔드 유닛에 대한 프로세싱 엘리먼트의 할당 정보를 저장하기 위한 프로세싱 엘리먼트 수만큼의 비트 영역을 포함하는 멀티 모드 지원 방법.
  15. 제14항에 있어서, 상기 제어 정보 설정 단계는
    상기 추가로 활성화된 프론트 엔드 유닛에 대응되는 레지스터의 비트 영역에서 상기 추가로 활성화된 프론트 엔드 유닛에 할당된 프로세싱 엘리먼트에 대응되는 비트값을 설정하는 멀티 모드 지원 방법.
  16. 제9항에 있어서,
    제어 유닛이 상기 현재 활성화된 프론트 엔드 유닛과 추가로 활성화된 프론트 엔드 유닛에 의해 처리되는 조건 분기가 모두 종료하는지 판단하는 단계;
    상기 판단 결과 조건 분기가 모두 종료하면 상기 추가로 활성화된 프론트 엔드 유닛을 비활성화하는 단계; 및
    상기 추가로 활성화된 프론트 엔드 유닛에 할당되어 있던 프로세싱 엘리먼트를 상기 현재 활성화된 프론트 엔드 유닛에 할당되도록 제어 정보를 설정하는 단계;를 포함하는 멀티 모드 지원 방법.

KR1020130009326A 2013-01-28 2013-01-28 멀티 모드 지원 프로세서 및 그 프로세서에서 멀티 모드를 지원하는 방법 KR101603752B1 (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR1020130009326A KR101603752B1 (ko) 2013-01-28 2013-01-28 멀티 모드 지원 프로세서 및 그 프로세서에서 멀티 모드를 지원하는 방법
US14/165,881 US10120833B2 (en) 2013-01-28 2014-01-28 Processor and method for dynamically allocating processing elements to front end units using a plurality of registers
JP2014013823A JP6400296B2 (ja) 2013-01-28 2014-01-28 マルチモード支援プロセッサ及びマルチモードを支援する処理方法
CN201410042215.XA CN103970511B (zh) 2013-01-28 2014-01-28 能够支持多模式的处理器及其多模式支持方法
US14/606,240 US20150143081A1 (en) 2013-01-28 2015-01-27 Processor capable of supporting multimode and multimode supporting method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020130009326A KR101603752B1 (ko) 2013-01-28 2013-01-28 멀티 모드 지원 프로세서 및 그 프로세서에서 멀티 모드를 지원하는 방법

Publications (2)

Publication Number Publication Date
KR20140097651A true KR20140097651A (ko) 2014-08-07
KR101603752B1 KR101603752B1 (ko) 2016-03-28

Family

ID=51224349

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130009326A KR101603752B1 (ko) 2013-01-28 2013-01-28 멀티 모드 지원 프로세서 및 그 프로세서에서 멀티 모드를 지원하는 방법

Country Status (4)

Country Link
US (2) US10120833B2 (ko)
JP (1) JP6400296B2 (ko)
KR (1) KR101603752B1 (ko)
CN (1) CN103970511B (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170099858A (ko) * 2014-12-24 2017-09-01 인텔 코포레이션 아날로그 프론트엔드를 위한 저전력 컨텍스트 인식 제어

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170365237A1 (en) * 2010-06-17 2017-12-21 Thincl, Inc. Processing a Plurality of Threads of a Single Instruction Multiple Data Group
US10133572B2 (en) * 2014-05-02 2018-11-20 Qualcomm Incorporated Techniques for serialized execution in a SIMD processing system
US10996959B2 (en) * 2015-01-08 2021-05-04 Technion Research And Development Foundation Ltd. Hybrid processor
CN111712793B (zh) * 2018-02-14 2023-10-20 华为技术有限公司 线程处理方法和图形处理器
CN111930428B (zh) * 2020-09-27 2021-01-15 南京芯瞳半导体技术有限公司 一种条件分支指令的融合方法、装置及计算机存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US7353369B1 (en) * 2005-07-13 2008-04-01 Nvidia Corporation System and method for managing divergent threads in a SIMD architecture
KR20080083342A (ko) * 2006-08-23 2008-09-17 닛본 덴끼 가부시끼가이샤 혼합 모드 병렬 프로세서 시스템 및 방법과 혼합 모드 병렬 프로세서 프로그램이 기록되어 있는 컴퓨터 판독가능 기록매체
US7594095B1 (en) * 2005-11-29 2009-09-22 Nvidia Corporation Multithreaded SIMD parallel processor with launching of groups of threads

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5212777A (en) * 1989-11-17 1993-05-18 Texas Instruments Incorporated Multi-processor reconfigurable in single instruction multiple data (SIMD) and multiple instruction multiple data (MIMD) modes and method of operation
JP3604029B2 (ja) 1999-01-12 2004-12-22 日本電気株式会社 マルチスレッドプロセッサ
US6643763B1 (en) * 2000-02-28 2003-11-04 International Business Machines Corporation Register pipe for multi-processing engine environment
US7472390B2 (en) 2003-10-01 2008-12-30 Intel Corporation Method and apparatus to enable execution of a thread in a multi-threaded computer system
US7324112B1 (en) * 2004-04-12 2008-01-29 Nvidia Corporation System and method for processing divergent samples in a programmable graphics processing unit
US20050289329A1 (en) * 2004-06-29 2005-12-29 Dwyer Michael K Conditional instruction for a single instruction, multiple data execution engine
US7418576B1 (en) 2004-11-17 2008-08-26 Nvidia Corporation Prioritized issuing of operation dedicated execution unit tagged instructions from multiple different type threads performing different set of operations
US8381203B1 (en) * 2006-11-03 2013-02-19 Nvidia Corporation Insertion of multithreaded execution synchronization points in a software program
US8677106B2 (en) * 2009-09-24 2014-03-18 Nvidia Corporation Unanimous branch instructions in a parallel thread processor
US8959319B2 (en) * 2010-12-13 2015-02-17 Advanced Micro Devices, Inc. Executing first instructions for smaller set of SIMD threads diverging upon conditional branch instruction
US9606808B2 (en) * 2012-01-11 2017-03-28 Nvidia Corporation Method and system for resolving thread divergences

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US7353369B1 (en) * 2005-07-13 2008-04-01 Nvidia Corporation System and method for managing divergent threads in a SIMD architecture
US7594095B1 (en) * 2005-11-29 2009-09-22 Nvidia Corporation Multithreaded SIMD parallel processor with launching of groups of threads
KR20080083342A (ko) * 2006-08-23 2008-09-17 닛본 덴끼 가부시끼가이샤 혼합 모드 병렬 프로세서 시스템 및 방법과 혼합 모드 병렬 프로세서 프로그램이 기록되어 있는 컴퓨터 판독가능 기록매체

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20170099858A (ko) * 2014-12-24 2017-09-01 인텔 코포레이션 아날로그 프론트엔드를 위한 저전력 컨텍스트 인식 제어

Also Published As

Publication number Publication date
CN103970511B (zh) 2018-06-05
US10120833B2 (en) 2018-11-06
US20150143081A1 (en) 2015-05-21
US20140215193A1 (en) 2014-07-31
CN103970511A (zh) 2014-08-06
JP2014146335A (ja) 2014-08-14
JP6400296B2 (ja) 2018-10-03
KR101603752B1 (ko) 2016-03-28

Similar Documents

Publication Publication Date Title
KR101603752B1 (ko) 멀티 모드 지원 프로세서 및 그 프로세서에서 멀티 모드를 지원하는 방법
KR102333341B1 (ko) 마이크로프로세서 시스템에서의 예외 처리
US7577826B2 (en) Stall prediction thread management
US10318307B2 (en) Scalarization of vector processing
KR102177871B1 (ko) 멀티 쓰레딩을 지원하기 위한 연산 유닛, 이를 포함하는 프로세서 및 프로세서의 동작 방법
US9164769B2 (en) Analyzing data flow graph to detect data for copying from central register file to local register file used in different execution modes in reconfigurable processing array
US10223115B2 (en) Data read-write scheduler and reservation station for vector operations
US9021233B2 (en) Interleaving data accesses issued in response to vector access instructions
US8417918B2 (en) Reconfigurable processor with designated processing elements and reserved portion of register file for interrupt processing
KR20150019349A (ko) 다중 쓰레드 실행 프로세서 및 이의 동작 방법
KR102379894B1 (ko) 벡터 연산들 수행시의 어드레스 충돌 관리 장치 및 방법
KR20140131472A (ko) 상수 저장 레지스터를 구비하는 재구성 가능 프로세서
CN112395010A (zh) 实现工作负载的静态映射的乱序流水线执行的方法和装置
JP2017102919A (ja) 命令を処理するための複数の実行ユニットを備えるプロセッサ、プロセッサを使用して命令を処理するための方法、およびプロセッサの設計プロセスにおいて使用される設計構造
JP2014225263A (ja) プロセッシング装置及びプロセッシング方法
US9569273B2 (en) Apparatus and method for controlling execution of a single thread by multiple processors
US20160139955A1 (en) Quiesce handling in multithreaded environments
US20150143378A1 (en) Multi-thread processing apparatus and method for sequentially processing threads
CN114153500A (zh) 指令调度方法、指令调度装置、处理器及存储介质
JP2004529405A (ja) 依存性を決定するためのコンテンツ・アドレス指定可能メモリを実装したスーパースケーラ・プロセッサ
US20200034195A1 (en) Network-related performance for gpus
US20140331025A1 (en) Reconfigurable processor and operation method thereof
CN112559403A (zh) 一种处理器及其中的中断控制器
US10437596B2 (en) Processor with a full instruction set decoder and a partial instruction set decoder
KR102365167B1 (ko) 멀티 쓰레드 프로세서 및 제어 방법

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant