KR101295569B1 - 쓰레드 당 다중의 동시적 파이프라인을 갖는 멀티쓰레드 프로세서 - Google Patents

쓰레드 당 다중의 동시적 파이프라인을 갖는 멀티쓰레드 프로세서 Download PDF

Info

Publication number
KR101295569B1
KR101295569B1 KR1020127022422A KR20127022422A KR101295569B1 KR 101295569 B1 KR101295569 B1 KR 101295569B1 KR 1020127022422 A KR1020127022422 A KR 1020127022422A KR 20127022422 A KR20127022422 A KR 20127022422A KR 101295569 B1 KR101295569 B1 KR 101295569B1
Authority
KR
South Korea
Prior art keywords
instruction
register file
multithreaded processor
instructions
thread
Prior art date
Application number
KR1020127022422A
Other languages
English (en)
Other versions
KR20120114380A (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 아스펜 액퀴지션 코포레이션
Publication of KR20120114380A publication Critical patent/KR20120114380A/ko
Application granted granted Critical
Publication of KR101295569B1 publication Critical patent/KR101295569B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • 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/30098Register arrangements
    • G06F9/30101Special purpose registers
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30123Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
    • 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/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/3893Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Computer Hardware Design (AREA)
  • Advance Control (AREA)
  • Image Processing (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Debugging And Monitoring (AREA)

Abstract

멀티쓰레드 프로세서는 다수의 하드웨어 쓰레드 유니트, 수신된 명령들을 디코딩하도록 쓰레드 유니트에 결합되는 명령 디코더, 및 디코딩된 명령들을 실행하는 다수의 실행 유니트를 포함한다. 멀티쓰레드 프로세서는 하드웨어 쓰레드 유니트들 각각의 하나와 관련된 쓰레드들에 대한 명령 발행 시퀀스를 제어하도록 구성된다. 주어진 프로세서 클록 주기에 따라, 쓰레드들 중 지정된 하나의 쓰레드만이 하나 이상의 명령을 발행하도록 허용되나, 지정된 쓰레드는 명령 발행 시퀀스에 따라 다수의 클록 주기에 대해 가변하는 명령을 발행하도록 허용된다. 명령은 쓰레드들 중 적어도 선택된 하나의 쓰레드가 다중의 동시적 명령 파이프라인을 지원하도록 허용하는 방식으로 파이프라이닝된다.

Description

쓰레드 당 다중의 동시적 파이프라인을 갖는 멀티쓰레드 프로세서{MULTITHREADED PROCESSOR WITH MULTIPLE CONCURRENT PIPELINES PER THREAD}
본 출원은 2004년 4월 7일자로 "Processor Pipeline with Multithreaded Support"란 명칭으로 출원된 미국 가출원번호 No. 60/560,199호의 우선권을 청구하며, 상기 문헌은 본 명세서에서 참조된다.
또한 본 출원은 2004년 5월 7일자로 "Processor Reduction Unit for Accumulation of Multiple Operands With or Without Saturation"이란 명칭으로 출원된 미국 특허 출원번호 No. 10/841,261호에 관한 것으로, 상기 문헌은 본 명세세서에서 참조된다.
본 발명은 디지털 데이터 프로세서 분야에 관한 것으로, 특히 디지털 신호 프로세서(DSP) 또는 다른 형태의 디지털 데이터 프로세서에서 이용되는 멀티쓰레딩(multithreading) 및 파이프라이닝(pipelining) 기술에 관한 것이다.
파이프라이닝은 공지된 프로세서 구현 기술로, 실행시 다중 명령들이 오버랩된다. 종래의 파이프라이닝 기술은 예를 들어, 존 엘. 헨네시 및 다비드 에이. 패터슨의 "Computer Architecture: A Quantitative Approach"(Third Edition, Morgan Kaufmann Publishers, Inc. San Francisco, CA, 2003)에 개시되어 있다.
도 1a는 임의의 오버랩 없이 2개의 명령의 실행을 수반하는 예를 나타낸다. 상기 예에서, 2개의 명령은 정수 덧셈 명령(addi r0, r2, 8) 및 정수 곱셈 명령(muli r8, r3, 4)이다. 제 1 명령(addi)은 레지스터 r2 및 즉치값(immediate value) 8의 콘텐츠 덧셈을 수행하고 상기 결과를 레지스터 r0에 저장한다. 간단성 및 명료성을 위해 명령들 각각은 페치(fetch)(IF), 판독(RD), 실행(EX) 및 라이트백(write back)(WB)의 명령으로 표시된 동일한 4개의 파이프라인 스테이지를 포함한다고 가정한다.
제 1 스테이지(IF)에서 명령들이 메모리로부터 페치되고 디코딩된다. 제 2 스테이지(RD)에서, 피연산자(operand)가 레지스터 파일로부터 판독된다. 제 3 스테이지(EX)에서, 덧셈이 수행된다. 마지막으로, 제 4 스테이지(WB)에서, 상기 결과가 로케이션 r0에서 레지스터 파일로 라이트백된다. addi 명령이 완료되면, 다음 명령(muli)이 시작된다. muli 명령은 레지스터 r3 및 즉치값 4의 콘텐츠 덧셈을 수행하고, 상기 결과를 레지스터 r8에 저장한다.
도 1b는 동일한 2개의 명령들이 종래의 파이프라이닝 기술을 이용하여 어떻게 오버랩되는지를 나타낸다. 일반적으로 각각의 파이프라인 스테이지(IF, RD, EX 및 WB)는 클록 바운더리(clock boundary) 상에서 수행된다. 제 2 명령(muli)은 추가의 하드웨어를 요구하지 않고 제 2 클록 주기에서 시작될 수 있다. IF, RD, EX 및 WB 스테이지와 관련된 하드웨어는 2개의 명령 사이에서 공유되지만, 하나의 명령의 스테이지는 다른 스테이지의 명령과 관련하여 시간에 따라 이동한다.
도 2는 파이프라인 실시에서 야기될 수 있는 복잡성을 나타낸다. 본 실시예에서, muli 명령은 레지스터 r0의 콘텐츠를 피연산자로서 요구하여, addi 명령이 계산되고 덧셈 연산의 결과가 r0에 라이트백될 때까지 r0를 판독할 수 없다. muli 명령의 프로세싱은 addi 명령의 시작에 이어 다음 클록 주기에서 시작될 수 있지만, 이러한 프로세스는 addi 명령의 실행 및 라이트백 스테이지들이 완료되도록 지연 및 대기되어야 한다. muli 명령의 공(empty) 주기는 피연산자가 이용가능해지도록 대기되어야 하며, 이는 통상적으로 파이프라인에서 "버블(bubbles)"이라 칭한다.
단일-쓰레드(single-threaded) 프로세서에서, 파이프라인 버블을 감소시키는 지시(command) 방법은 바이패싱(bypassing)으로 공지되어 있으며, WB 스테이지에서 레지스터 파일로 계산된 값을 라이트백하는 대신, 상기 결과는 상기 결과를 필요로 하는 프로세스 실행 유니트로 직접 전송한다. 이는 깊게 파이프라이닝된 머신에서 버블을 감소시키기는 하지만 제거하지는 않는다. 또한, 이는 디펜던시 검사(dependency checking) 및 바이패스 하드웨어가 요구되며, 이는 과도한 프로세서 비용 및 복잡성을 증가시킨다.
또한, 멀티쓰레딩의 사용을 통해 파이프라인 지연을 감소시킬 수 있다. 멀티쓰레드 프로세서는 다중의 불연속 명령 시퀀스 또는 "쓰레드(thread)"의 동시적 실행을 지원하는 프로세서이다. 종래의 쓰레딩 기술은 예를 들어, 엠.제이 플라인의 "Computer Architecture:Pipelined and Parallel Processor Design"(Jones and Bartlett Publishers, Boston, MA, 1995) 및 지.에이. 블라우 및 프레데릭 피. 브룩스의 "Computer Architecture:Concepts and Evolution"(Addison-Wesley, Reading, Massachusetts, 1997)에 개시되어 있으며, 상기 문헌들은 본 명세서에서 참조된다.
그러나 일반적으로 이들 및 다른 종래의 방안들은 쓰레드 당 다중의 동시적 파이프라인 또는 이들이 파이프라인 이동을 지원하는 것을 허용하지 않는다.
따라서, 멀티쓰레드 디지털 데이터 프로세서에 개선된 파이프라이닝을 제공할 수 있는 기술이 요구된다.
예시적 실시예에서 본 발명은 바람직하게 쓰레드 당 다중의 동시적 파이프라인을 허용하고 파이프라인 이동을 지원하는 멀티쓰레드 프로세서를 제공한다.
본 발명의 일 면에 따라, 멀티쓰레드 프로세서는 다수의 하드웨어 쓰레드 유니트, 수신된 명령들을 디코딩하도록 쓰레드 유니트에 결합된 명령 디코더, 및 디코딩된 명령들을 수행하는 다수의 실행 유니트를 포함한다. 멀티쓰레드 프로세서는 하드웨어 쓰레드 유니트들 각각의 하나와 관련된 쓰레드들에 대한 명령 발행 시퀀스를 제어하도록 구성된다. 주어진 프로세서 클록 주기에서, 단지 지정된 쓰레드들 중 하나가 하나 이상의 명령을 발행하도록 허용되나, 명령을 발행하도록 허용된 지정된 쓰레드는 명령 발행 시퀀스에 따라 다수의 클록 주기에서 가변한다. 다중의 동시적 명령 파이프라인들을 지원하도록 선택된 쓰레드들 중 적어도 하나를 허용하는 방식으로 명령이 파이프라이닝된다.
도시된 실시예에서, 명령 발행 시퀀스는 토큰 트리거(token triggered) 쓰레딩 방안을 이용하여 결정된다. 보다 상세하게, 프로세서가 N개의 쓰레드들을 지원하는 구조에서, N개의 연속적인 프로세서 클록 주기 시퀀스에 대해 N개의 쓰레드들 각각은 N개의 연속적 프로세서 클록 주기들 중 대응하는 하나에만 명령을 발행하도록 허용된다.
도시된 실시예는 쓰레드들 각각이 프로세서 클록 주기들 중 해당하는 하나에 3개의 명령을 발행하도록 허용한다. 적어도 5개의 개별 명령 파이프라인들이 쓰레드들 중 상이한 하나에 대해 연속적으로 실행될 수 있도록, 명령이 파이프라이닝된다.
도시된 실시예에서 파이프라이닝된 명령들은 로드(load)/스토어(store) 명령, 산술(arithmetic) 로직 유니트 명령, 정수 곱셈 명령, 벡터 곱셈 명령, 및 벡터 곱셈 명령 및 차감 명령을 포함한다.
본 발명의 또 다른 면에 따라, 벡터 곱셈 및 차감 명령은 프로세서 쓰레드의 전체 개수보다 큰 수의 스테이지를 사용하여 파이프라이닝된다. 예를 들어, 벡터 곱셈 및 차감 명령은, 명령 디코드 스테이지를 포함하여 적어도 11개의 스테이지, 벡터 레지스터 파일 판독 스테이지, 적어도 2개의 곱셈 스테이지, 적어도 2개의 덧셈 스테이지, 누산기 판독 스테이지, 다수의 감소 스테이지, 및 누산기 라이트백 스테이지를 포함할 수 있다. 누산기 판독 스테이지는 덧셈 스테이지와 같은 다른 스테이지와 조합될 수 있다. 각각의 벡터 곱셈 및 차감 명령에 대한 파이프라인은 다수의 파이프라인 스테이지에 의해 서로에 대해 이동할 수 있다.
예시적 실시예의 본 발명은 종래의 기술을 능가하는 상당한 장점을 제공한다. 예를 들어, 종래의 방안을 사용하여 달성할 수 있는 것보다 높은 고도의 동시성이 제공된다. 또한, 디펜던시 검사 및 바이패스 하드웨어의 요구가 소거되며, 이는 계산 결과가 동일한 쓰레드로부터 다음 명령에 의해 이들이 요구되기 이전에 적절한 레지스터 파일로 라이트백되는 것이 보증되기 때문이다. 또한, 상기 기술은 프로세서 전력 소모 제한을 보조한다.
도 1a 및 도 1b는 종래의 방식을 이용한 명령 수행의 예를 나타내는 도면,
도 2는 종래의 프로세서 파이프라인에서 지연이 발생될 수 있는 방법을 나타내는 도면,
도 3은 본 발명의 실시예에서 멀티쓰레드 파이프라인 프로세서의 파이프라인의 예를 나타내는 도면,
도 4는 본 발명이 실시될 수 있는 멀티쓰레드 프로세서의 예를 나타내는 도면,
도 5는 본 발명의 실시예에서 이용될 수 있는 예시적인 토큰 트리거 멀티쓰레딩 방안을 나타내는 도면,
도 6은 본 발명의 실시예의 예시적 파이프라인의 수를 나타내는 도면,
도 7은 본 발명의 일 실시예에 따라, 발행 주기 보다 긴 계산 주기를 허용하도록 파이프라인들이 이동할 수 있는 방법을 나타내는 도면,
본 발명은 예시적인 멀티쓰레드 프로세서의 콘텐츠로 설명된다. 그러나 본 발명은 도시된 특정한 구조를 요구하는 것이 아니며 다른 형태의 디지털 데이터 프로세서 및 관련된 프로세싱 회로를 이용하여 실시될 수 있다.
본 명세서에서 개시되는 주어진 프로세서는 하나 이상의 집적회로 형태로 구현될 수 있다.
예시적인 실시예의 본 발명은 멀티쓰레드 프로세서에서 이용하기에 적합한 파이프라이닝 기술을 제공한다. 이 기술로, 다중 쓰레드로부터의 다중 명령들이 효과적인 방식으로 동시적으로 수행될 수 있다. 하기에 보다 상세히 설명되는 바와 같이, 예시적 실시예는 가변 길이 실행 파이프라인, 스태거형(staggered) 실행, 및 회전형 개시 실행을 이용하여, 저전력 동작을 유지하면서 동시적 실행을 제공한다. 예시적 실시예는 종래의 방식을 사용하여 달성될 수 있는 것보다 높은 정도의 동시성(concurrency)을 제공한다.
도 3은 파이프라이닝 실행을 통해 도입되는 "버블들"을 제거하는 멀티쓰레드 파이프라인의 예를 나타낸다. 본 명세서의 이전 실시예에서 처럼, 본 실시예에 대한 설명의 간단성 및 명료성을 위해, 발행된 명령들 각각은 IF, RD, EX 및 WB의 4개의 동일한 파이프라인 스테이지를 포함한다고 가정한다. 또한, 3개의 쓰레드, 및 3개의 하드웨어 쓰레드 유니트 또는 순차적인 방식으로 "콘텍스트(contexts)" 발행 명령이 있다고 가정한다. 멀티쓰레드 프로세서의 통상적인 구현에 있어, 일반적으로 제시된 쓰레드는 하드웨어 및 소프트웨어와 관련하여 관찰될 수 있다. 선택된 쓰레드와 관련된 특정 프로세서 하드웨어는 본 명세서에서 하드웨어 쓰레드 유니트 또는 간단히 "콘텍스트"로서 특정하게 간주된다.
본 실시예에서, 정수 덧셈 명령(addi r0, r2, 8)은 제 1 클록 주기에 대한 콘텍스트들 중 제 1 콘텍스트에 의해 초기에 발행된다. 다른 두 개의 콘텍스트들은 각각의 순차적 클록 주기에 대한 명령을 발행한다. 명령을 발행하기 위해 각각의 콘텍스트에 대해 전체 3개의 클록 주기가 소요된다. 제 4 클록 주기에서, 제 1 콘텍스트는 또 다른 명령, 즉, 정수 곱셈 명령(muli r8, r0, 4)을 발행한다.
특히, 주기 1에서, 쓰레드 1의 IF 스테이지는 addi 명령을 수행한다. 주기 2에서, 쓰레드 2의 IF 스테이지가 실행되면서 동시에 쓰레드 1의 RD 스테이지가 실행된다. 주기 3에서, 쓰레드 3의 IF 스테이지가 실행되고, 쓰레드 2의 RD 스테이지가 실행되고, 쓰레드 1의 EX 스테이지가 실행된다. 주기 4에서, muli 명령의 쓰레드 1의 IF 스테이지는 addi 명령의 WB 스테이지와 동시적으로 실행된다. 동시적으로, 쓰레드 2의 EX 스테이지가 실행되고 쓰레드 3의 RD 스테이지가 실행된다.
본 실시예에서 알 수 있듯이, 동일 및 상이한 쓰레드들로부터의 다중 명령들이 오버랩되고 동시적으로 수행된다. 또한, addi 명령의 결과가 muli 명령에 의해 요구되더라도 파이프라인에서는 버블이 형성되지 않는다. 도 3의 예는 적절하게 구성된 파이프라인 및 충분한 개수의 쓰레드들을 이용함으로써, 주기 당 콘텍스트 당 단일의 명령만이 발행되더라도 모든 하드웨어 콘텍스트들이 동시적으로 실행될 수 있다는 것을 나타낸다. 특정 개수의 쓰레드들 및 파이프라인 스테이지는 단지 도시를 위한 것으로, 바람직한 구현을 반영하는 것은 아니다. 당업자들은 본 명세서에 제공되는 설명으로 특정 분야에 대한 적절한 개수의 쓰레드들 및 파이프라인 스테이지를 쉽게 결정할 수 있을 것이다.
앞서 개시된 바와 같이, 본 발명은 멀티쓰레드 프로세서에서 바람직하게 구현될 수 있다. 본 발명이 구현될 수 있는 보다 특정한 멀티쓰레드 프로세서의 예는 공동으로 양도되었으며 2002년 10월 11일자로 "Multithreaded Processor With Efficient Processing For Convergence Device Application"란 명칭으로 출원된 미국 특허 출원 번호 No. 10/269,372호에 개시되었으며, 이는 본 명세서에서 참조된다. 이러한 멀티쓰레드 프로세서는 RISC-기반 제어 코드, DSP 코드, 자바 코드 및 네트워크 프로세싱 코드를 실행하도록 구성될 수 있다. 이는 단일 명령 다중 데이터(SIMD) 벡터 프로세싱 유니트, 차감(reduction) 유니트, 및 긴 명령어(LIW) 합성 명령 실행을 포함한다. 본 실시예의 멀티쓰레드 프로세서를 이용하기에 적합한 쓰레딩 및 파이프라이닝 기술의 예는 공동 양도되었으며 2002년 10월 11일자로 "Method and Apparatus for Token Triggered Multithreading"이란 명칭으로 출원된 미국 특허 출원 No. 10/269,245호에 개시되었으며, 상기 문헌은 본 명세서에서 참조된다.
본 발명은 또다른 멀티쓰레드 프로세스, 또는 일반적인 다른 형태의 디지털 데이터 프로세서에서 실행될 수 있다. 이러한 또 다른 프로세서는 도 4를 참조로 개시된다.
도 4는 차감 유니트(402) 및 누산기 레지스터 파일(406)이 통합되는 멀티쓰레드 프로세서(400)의 예를 나타낸다. 일반적으로 프로세서(400)는 미국 특허 출원 번호 No. 10/269,372호에 개시된 것과 유사하나, 상기 언급된 미국 특허 출원 번호 No. 10/841,261호에 개시된 것처럼 구성된 차감 유니트(402) 및 누산기 레지스터 파일(406)이 통합된다.
멀티쓰레드 프로세서(400)는 다른 엘리먼트들 중에서도, 멀티쓰레드 캐쉬 메모리(410), 멀티쓰레드 데이터 메모리(412), 명령 버퍼(414), 명령 디코더(416), 레지스터 파일(418), 및 메모리 관리 유니트(MMU)(420)를 포함한다. 멀티쓰레드 캐쉬(410)는 다수의 쓰레드 캐쉬(410-1, 410-2,...,410-N)를 포함하며, 여기서 N은 일반적으로 멀티쓰레드 프로세서(400)에 의해 지원되는 쓰레드의 개수를 나타내며, 특정 실시예에서 N=4로 주어진다. 물론, 당업자들이 쉽게 이용할 수 있는 다른 값의 N이 사용될 수 있다.
따라서 각각의 쓰레드는 멀티쓰레드 캐쉬(410)에서 그와 관련되는 해당 쓰레드 캐쉬를 포함한다. 유사하게, 데이터 메모리(412)는 도시된 바와 같이 데이터 메모리(412-1, 412-2,...,412-N)로 표시되는 N개의 불연속 데이터 메모리를 포함한다.
멀티쓰레드 캐쉬(410)는 MMU(420)를 통해 프로세서(400) 외부의 메인 메모리(미도시)와 접속된다. 캐쉬(410)와 같은 MMU(420)는 프로세서에 의해 지원되는 N개의 쓰레드들 각각에 대한 개별 인스턴스(separate instance)를 포함한다. MMU(420)는 메인 메모리로부터의 적절한 명령이 멀티쓰레드 캐쉬(410)로 로드되게 한다.
통상적으로 데이터 메모리(412)는 상기 언급된 외부 메인 메모리와 직접 접속되지만, 이러한 접속이 도면에는 명확히 도시하지 않는다. 또한, 데이터 버퍼(430)가 데이터 메모리(412)와 관련된다.
일반적으로, 멀티쓰레드 캐쉬(410)는 멀티쓰레드 프로세서(400)에 의해 실행되는 명령들을 저장하는데 이용되는 반면, 데이터 메모리(412)는 상기 명령들에 의해 연산되는 데이터를 저장한다. 명령들은 명령 디코더(416)에 의해 멀티쓰레드 캐쉬(410)로부터 페치되고 디코딩된다. 명령 형태에 따라, 명령 디코더(416)는, 하기에 개시되는 바와 같이, 프로세서 내의 다양한 다른 유니트들로 선택된 명령 또는 관련된 정보를 전송할 수 있다.
프로세서(400)는 분기 명령 큐(IQ)(440) 및 프로그램 카운터(PC) 레지스터(442)를 포함한다. 프로그램 카운터 레지스터(442)는 각각의 쓰레드에 대해 한개의 인스턴스를 포함한다. 분기 명령 큐(440)는 명령 디코더(416)로부터 명령들을 수신하고 프로그램 카운터 레지스터(442)와 관련하여 예시적으로 캐리어-전파 가산기(CPA)를 포함하는 가산기 블럭(444)에 입력된다. 엘리먼트들(440, 442, 444)은 총괄적으로 프로세서(400)의 분기 유니트를 포함한다. 도면에는 도시되지 않았지만, 프로세서(400)에 보조 레지스터들이 포함될 수도 있다.
레지스터 파일(418)은 정수 결과의 일시적 저장을 제공한다. 명령 디코더(416)로부터 정수 명령 큐(IQ)(450)로 전송된 명령들은 디코딩되고 적절한 하드웨어 쓰레드 유니트는 각각의 쓰레드에 대한 개별 인스턴스를 포함하는 것으로 도시된 오프셋 유니트(452)의 사용을 통해 선택된다. 오프셋 유니트(452)는 독립적인 쓰레드 데이터가 손상되지 않도록 레지스터 파일 어드레스로 명시적(explicit) 비트를 삽입한다. 선택된 쓰레드에 대해, 이들 명시적 비트는 예를 들어, 해당 쓰레드 식별자를 포함할 수 있다.
도면에 도시된 것처럼, 레지스터 파일(418)은 입력 레지스터(RA, RB)에 결합되고, 출력들은 가산기를 포함할 수 있는 산술 로직 유니트(ALU) 블록(454)에 결합된다. 입력 레지스터(RA, RB)는 구현 명령 파이프라이닝에 이용된다. ALU 블록(454)의 출력은 데이터 메모리(412)에 결합된다.
레지스터 파일(418), 정수 명령 큐(450), 오프셋 유니트(452), 엘리먼트들(RA, RB) 및 ALU 블록(454)은 총체적으로 예시적 정수 유니트를 포함한다.
프로세서(400)에서 실행가능한 형태의 명령은 분기, 로드, 스토어, 정수 및 벡터/SIM 명령 형태를 포함한다. 선택된 명령이 분기, 로드, 스토어 또는 정수 연산으로 특정화되지 않는다면, 이는 벡터/SIMD 명령이다. 다른 형태의 명령이 선택적으로 사용될 수도 있다. 정수 및 벡터/SIMD 명령 형태는 본 명세서에서 각각 정수 및 벡터 명령 형태로서 간주되는 것들의 일례이다.
벡터 IQ(456)는 명령 디코더(416)로부터 전송된 벡터/SIMD 명령을 수신한다. 각각의 쓰레드에 대한 개별 인스턴스를 포함하는 것으로 도시된 해당 오프셋 유니트(458)는 독립적 쓰레드 데이터가 손상되지 않도록 적절한 비트를 삽입하는 역할을 한다.
프로세서(400)의 벡터 유니트(460)는 N개의 개별적 평행부들로 분리되며, 유사하게 분할된 벡터 파일(462)을 포함한다. 벡터 파일(462)은 VROO에서 VR31로 표시된 32개의 레지스터를 포함한다. 벡터 파일(462)은 앞서 벡터/SIMD 명령 형태로 연산되는 것을 제외하고 레지스터 파일(418)로서 실질적으로 동일한 목적을 수행한다.
벡터 유니트(460)는 예시적으로 벡터 명령 큐(456), 오프셋 유니트(458), 벡터 파일(462), 및 이와 관련된 산술 및 스토어 엘리먼트들을 포함한다.
벡터 유니트(460)의 연산은 다음과 같다. 소수(fractional) 또는 정수 데이터 형태중 하나로 인코드되는 벡터/SIMD 블럭이 벡터 파일(462)로부터 판독되어 구조적으로(architecturally) 가시적인 레지스터(VRA, VRB, VRC)에 저장된다. 이로인해, 벡터/SIMD 데이터의 병렬적인 동시적 곱셈을 수행하는 곱셈기 (multiplier, MPY)를 통해 흐름이 처리된다. 캐리 스킵 가산기(carry skip adder, CSA) 및 CSA들을 포함하는 가산기 유니트가 추가적 산술 연산을 수행할 수 있다. 예를 들어, 당업자들에게 공지된 바와 같이, CSA들 중 하나 이상은 벡터 레지스터 파일로부터의 누적값에 가산되는데 사용되며, CPA들 중 하나 이상은 곱셈 연산의 완료를 위해 최종 가산을 수행하는데 이용된다. 계산 결과는 결과 레지스터(464)에 저장되며, 입력 피연산자로서 차감 유니트(402)에 제공된다. 차감 유니트(402)는 처리된 덧셈 결과가 각각의 연산이 연속적으로 실행될 경우 얻어질 수 있는 것과 동일한 방식으로 입력 피연산자를 합산한다. 차감된 합이 추가의 프로세싱을 위해 누산기 레지스터 파일(406)에 저장된다.
벡터 점 곱(vector dot product)을 수행하는 동안, MPY 블럭은 병렬로 4 곱셈을 수행하며, CSA 및 CPA 유니트는 추가 연산을 수행하거나 또는 결과 레지스터(464)의 저장기에 곱셈 결과를 단순히 통과하며, 차감 유니트(402)는 누산기 레지스터 파일(406)에 저장된 누적값과 함께 곱셈 결과를 합산한다. 차감 유니트에 의해 생성된 결과는 다음 반복(iteration)에 사용되도록 누산기 레지스터 파일에 저장된다.
본 실시예에서 누산기 레지스터 파일(406)은 ACC00 내지 ACC15로 표시된 전체 16개의 누산기 레지스터를 포함한다.
멀티쓰레드 프로세서(400)는 공동으로 양도되었으며 2002년 10월 11일자로 "Method and Apparatus for register File Port Reduction in Multithreaded Processor"란 명칭으로 출원된 미국 특허 출원 번호 10/269,373호의 쓰레드-기반 액세스를 위한 기술에 이용될 수 있으며, 상기 문헌은 본 명세서에서 참조된다.
멀티쓰레드 프로세서(400)는 상기 미국 특허 출원 번호 10/841,261호에 개시된 것처럼 벡터 점 곱 및 다른 형태의 병렬 벡터 곱 및 차감 연산 수행시 바람직하게 이용된다.
본 발명의 예시적 실시예는 토큰 트리거 쓰레딩으로 공지된 방식을 이용한다. 토큰 트리거 쓰레딩은 상기 미국 특허 출원 번호 10/269,245호로, 지금은 등록된 미국 특허 No. 6,842,848호에 개시된다. 통상적으로 토큰 트리거 쓰레딩은 멀티쓰레드 프로세서의 다수의 쓰레드들 각각에 상이한 토큰들을 할당한다. 예를 들어, 토큰 트리거 쓰레딩은 순차적 클록 주기에 대한 명령을 발행하도록 허용되는 프로세서 쓰레드 중 특정한 하나를 전류 클록 주기와 관련하여 식별하는데 토큰을 이용할 수 있다.
도 5는 쓰레드 수인 N이 8개인 멀티쓰레드 프로세서의 구현을 위한 토큰 트리거 쓰레딩의 예를 나타낸다. 일반적으로 모든 쓰레드는 동시적으로 연산되며, 쓰레드 캐쉬(110) 및 데이터 메모리(112)의 해당 인스턴스를 각각 액세스한다. 도 5에 도시된 것처럼, 8개의 쓰레드는 쓰레드 0, 쓰레드 1, 쓰레드 2, ..., 쓰레드 7로 표시되며, 링 형태로 일련 상호접속되는 것으로 도시된다.
도 5에 도시된 토큰 트리거 쓰레딩에 따라, 모든 하드웨어 쓰레드 유니트들 또는 콘텍스트들은 동시적으로 명령들을 수행하도록 허용되나, 단지 하나의 콘텍스트만이 프로세서의 특정 클록 주기에서 명령을 발행할 수 있다. 다른 말로, 모든 콘텍스트는 동시적으로 실행되나 단지 하나의 콘텍스트만이 특정 클록에서 활성화된다. 따라서, 전체 C 콘텍스트가 제공되는 경우, 모든 콘텍스트로부터 명령이 발행되도록 C 클록 주기가 요구된다. 콘텍스트들 중 하나의 각각의 클록 주기는 명령을 발행하고, 명령을 발행하는 다음 쓰레드는 토큰으로 표시된다.
도 5의 실시예에서, 토큰은 순차적으로 또는 라운드-로빈(round-robin) 방식으로 배열되어 콘텍스트들이 명령을 순차적으로 발행한다. 그러나 명령을 발행하도록 다음 콘텍스트를 표시하는 토큰은 교번식 짝수-홀수 패턴과 같이, 다른 패턴을 이용하여 배열될 수 있다. 또한, 앞서 언급된 바와 같이, 다른 형태의 쓰레딩이 본 발명과 관련하여 이용될 수 있다.
토큰 트리거 쓰레딩이 예시적 실시예에서 사용되었지만, 본 발명은 이런 특정한 형태의 멀티쓰레딩을 요구하지 않으며, 다른 형태의 멀티쓰레딩 기술이 이용될 수 있다.
도 6은 본 발명에 따른 멀티쓰레드 프로세서(400)에서 예시적인 명령 함수가 파이프라이닝되는 방식을 나타낸다. 본 발명의 예시적 실시예에서, 이러한 형태의 파이프라이닝은 앞서 개시된 토큰 트리거 쓰레딩과 관련하여 바람직하게 이용되나, 파이프라이닝 및 쓰레딩의 다양한 다른 조합도 본 발명을 구현하는데 이용될 수 있다.
도면은 로드/스토어(Ld/St), 산술 로직 유니트(ALU), 정수 곱셈(I_Mul), 벡터 곱셈(V_Mul), 및 벡터 곱셈 및 차감(V_Mul Reduce) 명령들에 대한 예시적인 파이프라인을 나타낸다. 이러한 구현에서, 3개에 이르는 파이프라인이 동시에 개시되어 모두 5개가 다양한 상태(phases)로 동시적으로 수행될 수 있다.
Ld/St 파이프라인은 스테이지 0 내지 스테이지 8로 표시된 9개의 스테이지를 포함한다. 제 1 스테이지인 스테이지 0(Inst Dec)에서 명령이 페치되고 디코딩된다. 상기 스테이지는 모두 5개의 파이프라인과 공통되며 큐 명령이 루팅될 것을 결정한다. 스테이지 1(RF Read)에서, 레지스터 파일 피연산자가 판독된다. 이는 로드 또는 스토어 연산에 대한 기본 어드레스를 형성한다. 스토어 명령의 경우, 저장될 데이터가 판독된다. 스테이지 2(Agen)에서, 임의의 즉치값이 어드레스에 부가되어 전체 어드레스가 생성된다. 스테이지 3(Xfer)에서, 계산된 어드레스는 메모리 서브시스템으로 전송된다. 스테이지 4(Int/Ext)에서는 메모리 어드레스가 내부 메모리 또는 외부 메모리에 대한 것인지 여부에 대한 결정이 이루어진다. 스테이지 5-7(Mem0, Mem1, Mem2)에서, 상기 값은 메모리로부터 판독되거나 또는 메모리에 기록된다. 스테이지 8(WB)에서, 로드 명령에 대한 메모리로부터의 판독되는 값은 레지스터 파일에 기록된다.
ALU 파이프라인은 스테이지 0 내지 스테이지 6으로 표시된 7개의 스테이지를 갖는다. Ld/St 파이프라인에서 처럼, 제 1 스테이지인 스테이지 0(Inst Dec)는 모든 명령을 페치하고 디코딩된다. 스테이지 1(Wait)에서, 대기 주기가 삽입된다. 이는 Ld/St 및 ALU 하드웨어가 동일한 레지스터 파일 판독 포트를 공유하도록 할 수 있다. 다음 스테이지인 스테이지 2(RF Read)에서, 산술 함수에 대한 피연산자가 레지스터 파일로부터 판독된다. 다음 스테이지 3 및 4(Exec 1, Exec 2)는 산술 결과(예를 들어, 가산, 비교, 이동 등)를 계산한다. 스테이지 5(Xfer)에서, 상기 결과는 레지스터 파일로 전송된다. 스테이지 6(WB)에서, 상기 결과는 레지스터 파일로 라이트백된다.
I_Mul 파이프라인은 이들이 공통의 구조적(architected) 리소스가 공유됨에 따라, ALU 파이프라인과 유사하다. 도면은 파이프라인 스테이지가 I_Mul 파이프라인의 부가적인 실행 스테이지(Exec 3)를 제외하고 동일한 것을 나타낸다. 따라서, 부가 주기는 결과의 곱셈 계산에 이용될 수 있다.
V_Mul 파이프라인은 앞서 개시된 ALU 및 I_Mul 파이프라인들과 상이한 산술 리소스를 이용한다. 따라서, 리소스 충돌없이 이들 명령이 동시적으로 수행될 수 있다. 스테이지 0(Inst Dec)은 모든 명령을 따르며 교정 파이프라인으로 디코딩된 명령의 루팅이 이루어지게 한다. 스테이지 1(VRF Read)에서 펙터 레지스터 파일 피연산자가 판독된다. 스테이지 2-5(MPY1, MPY2, Add1, Add2)는 멀티-엘리먼트 벡터 산술을 수행한다. 2개의 가산 스테이지는 캐리-세이브(carry-save) 포맷으로부터의 곱셈 결과들을 2개의 보수 포맷(complement)으로 전환하도록 제공된다. 부가적으로, 벡터만이 단순 연산을 요구하는 경우, 이는 가산 스테이지에서 수행될 수 있다. 스테이지 6(Xfer)에서, 상기 결과들은 벡터 레지스터 파일로 재전송되고, 스테이지 7(WB)에서, 상기 결과들이 라이트백된다.
V_Mul 차감 파이프라인은 추가 차감 연산이 수행된다는 것을 제외하고 V_Mul 파이프라인과 유사하다. 차감은 누산기 피연산자와 함께 4 벡터 엘리먼트 곱을 수행하여 이들이 단일 스칼라 엘리먼트로 차감된다. 통상적으로 이는 누산기로부터의 모든 곱의 차감 또는 누산기로의 모든 곱 가산을 수반하지만, 다른 조합도 가능하다. V_Mul 및 V_Mul 차감 파이프라인은 스테이지 5까지 동일하다. 스테이지 5(Add2, ACC, Read)에서, 추가 아키텍쳐 누산기 레지스터 파일이 판독된다. 이 값은 벡터 엘리먼트들과 산술적으로 조합되며 단일 스칼라로 차감된다. 4 스테이지(Reduce 1, Reduce 2, Reduce 3, Reduce 4)는 이러한 차감을 거쳐 스카라 값이 스테이지 10(ACC WB)의 누산기 레지스터 파일(즉, 벡터 레지스터 파일로부터의 상이한 아키텍쳐 공간)로 다시 라이트백된다.
단일 쓰레드가 도 2의 각각의 주기에 대해 명령을 발행하면, 파이프라인에 버블들이 도입된다. 그러나 도 3에 도시된 간략화된 경우에서 처럼, 단지 하나의 형태의 파이프라인이 존재하면, 예시적인 실시예에서, 버블을 방지하도록 모두 5개의 파이프라인이 삽입되고 멀티쓰레딩된다. 각각의 하드웨어 쓰레드 유니트는 도 5에 도시된 토큰 트리거 쓰레딩에 따라 3개의 명령을 발행한다. 이는 쓰레드가 지연되지 않게 하고 모든 쓰레드가 교착(deadlock) 되지 않고 완료되게 한다.
앞서 언급한 바와 같이, 이러한 구현에 있어, 모두 5개의 프로세서 파이프라인이 다중의 하드웨어 쓰레드 유니트로부터의 명령에 따라 동시적으로 활성화될 수 있다. 이는 파이프라인의 잠재적 버블들을 다른 쓰레드 유니트로부터의 작업으로 채우게 된다.
V_Mul 차감 파이프라인의 백-투-백(back-to-back) 차감 연산이 버블을 야기시키지 않는 V_Mul 파이프라인으로부터의 위치로 제공된 V_Mul 차감 파이프라인이 이동하게 한다는 것을 주지해야 한다. V_Mul 차감 파이프라인이 다수의 하드웨어 쓰레드 유니트(본 구현예에서는 8개)의 기간 보다 길기 때문에, 이러한 이동은 파이프라인 버블을 유도할 수 있다. 다른 말로, 파이프라인의 계산 주기(V_Mul Reduce)에 대해서는 11개의 클록 주기)는 발행 주기(각각의 쓰레드가 8개의 클록 주기마다 발행됨) 보다 길다. V_Mul 파이프라인 계산으로부터 누산기 레지스터 파일 판독 상태가 이동하기 때문에, 실제로 이러한 현상을 발생하지 않는다.
도 7은 발행 주기 보다 긴 계산 주기가 허용되도록, 서로에 대해 다중의 V_Mul 차감 파이프라인이 이동하는 방식을 나타낸다. 도면은 제 1 V_Mul 차감 명령의 주기 5 로부터 개시된다는 것을 주지하라. 이러한 구현예에 8개의 쓰레드 유니트가 제공되기 때문에, 다음 V_Mul 차감 명령이 주기 8에 발행된다. 도면에 도시된 바와 같이, 누산기 레지스터 파일이 주기 10에서 라이트백된다. 그러나 피연산자는 주기 13까지 제 2 명령에 의해 판독되지 않는다. 제 1 V_Mul 차감 파이프라인으로부터의 위치로 이동됨에 따라 제 2 V_Mul 차감 파이프라인이 고려될 수 있다. 이는 파이프라인에 버블을 야기시키지 않고 실행 상태를 연장시킬 수 있게 한다.
상기 바람직하게 개시된 예시적 실시예는 쓰레드 당 다중의 동시적 파이프라인을 허용하며 깊은 멀티쓰레드 파이프라인에서의 파이프라인 이동을 위해 제공된다. 또한, 디펜던시 검사 및 바이패스 하드웨어의 필요성이 소거되며, 이는 이들이 동일한 쓰레드로부터 다음 명령에 의해 요구되기 이전에 레지스터 파일에 라이트백되는 것이 보증되기 때문이다.
특히 도면에 도시된 프로세서, 멀티쓰레딩, 파이프라이닝 및 이동 구조는 단지 예시적인 것으로, 당업자들은 도시된 것에 제한되지 않고 추가 또는 선택적 엘리먼트들을 구현할 수 있을 것이다.
또한, 본 발명은 도4에 도시된 특정한 멀티쓰레드 프로세서 구성을 필요로하지 않는다는 것을 주목해야 한다. 본 발명은 광범위하고 다양한 다른 멀티쓰레드 프로세서 구성에서도 구현될 수 있다.
상기 개시된 본 발명은 단지 설명을 위해 도시된 것으로, 당업자들은 첨부되는 특허청구범위내의 범주에서 다양한 선택적 실시예들을 구현할 수 있을 것이다. 예를 들어, 도 4에 도시된 하드웨어 쓰레드 유니트, 명령 디코더 및 실행 유니트의 특정한 구성은 다른 실시예로 변형될 수 있으며, 본 발명은 임의의 특정한 형태 및 이러한 형태의 엘리먼트로 제한되지 않는다. 또한, 앞서 주목한 바와 같이, 파이프라이 구성, 쓰레딩 형태 및 명령 포맷은 제시된 분야의 특정 요구조건을 수용하도록 변형될 수 있다.

Claims (23)

  1. 멀티쓰레드(multithreaded) 프로세서로서,
    각각이 메모리 유니트를 포함하는 다수의 하드웨어 쓰레드 유니트들;
    상기 다수의 하드웨어 쓰레드 유니트들에 결합되는 명령 디코더;
    상기 명령 디코더에 응답하는 다수의 실행 유니트들;
    다수의 제 1 레지스터들을 포함하는 제 1 레지스터 파일 ― 상기 제 1 레지스터 파일은 상기 다수의 실행 유니트들 각각 및 상기 메모리 유니트에 결합되고, 상기 제 1 레지스터 파일은 제 1 프로그램 쓰레드의 프로그램 명령의 실행을 지원하고, 상기 제 1 레지스터 파일은 제 1 데이터 오퍼랜드(operand) 및 제 1 어드레스 오퍼랜드를 포함함 ― ; 및
    다수의 제 2 레지스터들을 포함하는 제 2 레지스터 파일 ― 상기 제 2 레지스터 파일은 상기 다수의 실행 유니트들 각각 및 상기 메모리 유니트에 결합되고, 상기 제 2 레지스터 파일은 제 2 프로그램 쓰레드의 프로그램 명령의 실행을 지원하고, 상기 제 2 레지스터 파일은 제 2 데이터 오퍼랜드 및 제 2 어드레스 오퍼랜드를 포함함 ― 을 포함하고,
    상기 제 1 레지스터 파일 및 상기 제 2 레지스터 파일은 상기 레지스터 파일 내의 엔트리의 어드레스 및 쓰레드 식별자(identifier)에 기초하여 액세스되는,
    멀티쓰레드 프로세서.
  2. 제 1 항에 있어서,
    상기 멀티쓰레드 프로세서는 VLIW(very long instruction word) 명령들을 디코딩하도록 구성될 수 있는,
    멀티쓰레드 프로세서.
  3. 제 1 항에 있어서,
    상기 멀티쓰레드 프로세서는 슈퍼스칼라(superscalar) 명령들을 실행하도록 구성될 수 있는,
    멀티쓰레드 프로세서.
  4. 제 1 항에 있어서,
    상기 제 1 프로그램 쓰레드 및 상기 제 2 프로그램 쓰레드의 프로그램 명령들은 상기 메모리 내에 저장되는,
    멀티쓰레드 프로세서.
  5. 제 4 항에 있어서,
    상기 다수의 실행 유니트들 중 적어도 하나는,
    데이터 로드 명령 실행 유니트이며,
    상기 제 1 레지스터 파일 및 상기 제 2 레지스터 파일로부터 데이터를 리트리브(retrieve)하는 인터페이스를 포함하는,
    멀티쓰레드 프로세서.
  6. 제 1 항에 있어서,
    상기 멀티쓰레드 프로세서는 상기 하드웨어 쓰레드 유니트들 중 각각의 유니트들과 관련된 상기 제 1 프로그램 쓰레드 및 상기 제 2 프로그램 쓰레드에 대한 명령 발행 시퀀스를 제어하도록 구성되며,
    프로세서 클록 주기(cycle)에 대해, 상기 제 1 프로그램 쓰레드 및 상기 제 2 프로그램 쓰레드 중 하나는 하나 이상의 명령들을 발행하도록 허용되고, 상기 명령들을 발행하도록 허용되는 쓰레드는 상기 명령 발행 시퀀스에 따라 다수의 클록 주기들에 걸쳐 변화하며; 그리고
    상기 명령들은 상기 제 1 프로그램 쓰레드 및 상기 제 2 프로그램 쓰레드 중 하나가 다중의 동시적 명령 파이프라인들을 지원하는 것을 허용하도록 파이프라이닝되는,
    멀티쓰레드 프로세서.
  7. 제 6 항에 있어서,
    상기 파이프라이닝된 명령들은,
    로드/스토어 명령, 산술 로직 유니트 명령, 정수 곱셈 명령, 벡터 곱셈 명령, 및 벡터 곱셈 및 차감 명령을 포함하는,
    멀티쓰레드 프로세서.
  8. 제 7 항에 있어서,
    상기 산술 로직 유니트 명령은 명령 디코드 스테이지와 그의 레지스터 파일 판독 스테이지 사이에 대기 스테이지를 포함하는 파이프라인을 갖고,
    상기 대기 스테이지는 상기 로드/스토어 명령 및 상기 산술 로직 유니트 명령이 레지스터 파일 판독 포트들의 세트를 공유하도록 허용하는,
    멀티쓰레드 프로세서.
  9. 제 7 항에 있어서,
    상기 정수 곱셈 명령은 명령 디코드 스테이지와 그의 레지스터 파일 판독 스테이지 사이에 대기 스테이지를 포함하는 파이프라인을 갖고,
    상기 대기 스테이지는 상기 정수 곱셈 명령과 상기 로드/스토어 명령이 레지스터 파일 판독 포트들의 세트를 공유하도록 허용하는,
    멀티쓰레드 프로세서.
  10. 제 7 항에 있어서,
    상기 벡터 곱셈 명령은,
    상기 산술 로직 유니트 명령 및 상기 정수 곱셈 명령과는 상이한 실행 유니트 리소스들의 세트를 이용하며, 상기 명령들 중 하나와 동시적으로 실행할 수 있는,
    멀티쓰레드 프로세서.
  11. 제 7 항에 있어서,
    상기 벡터 곱셈 및 차감 명령은,
    상기 프로세서의 쓰레드들의 전체 개수를 초과하는 개수의 스테이지들을 이용하여 파이프라이닝되는,
    멀티쓰레드 프로세서.
  12. 제 6 항에 있어서,
    상기 명령 발행 시퀀스는 토큰 트리거 쓰레딩(token triggered threading)을 이용하여 결정되는,
    멀티쓰레드 프로세서.
  13. 제 7 항에 있어서,
    상기 벡터 곱셈 및 차감 명령은,
    명령 디코드 스테이지, 벡터 레지스터 파일 판독 스테이지, 적어도 2개의 곱셈 스테이지들, 적어도 2개의 가산 스테이지들, 누산기 판독 스테이지, 다수의 차감 스테이지들 및 누산기 라이트백(writeback) 스테이지를 포함하는,
    멀티쓰레드 프로세서.
  14. 제 13 항에 있어서,
    상기 누산기 판독 스테이지는 상기 가산 스테이지들 중 하나와 조합되는,
    멀티쓰레드 프로세서.
  15. 제 1 항에 있어서,
    제 1 벡터 곱셈 및 차감 명령과 제 2 벡터 곱셈 및 차감 명령에 대한 파이프라인들은,
    다수의 파이프라인 스테이지들에 의해 서로에 대해 이동되는,
    멀티쓰레드 프로세서.
  16. 제 6 항에 있어서,
    상기 파이프라이닝된 명령들은,
    상기 멀티쓰레드 프로세서의 명령 발행 주기 보다 긴 계산 주기를 갖는 파이프라인을 포함하는 벡터 곱셈 및 차감 명령을 포함하는,
    멀티쓰레드 프로세서.
  17. 제 1 항에 있어서,
    상기 다수의 제 1 레지스터들 및 상기 다수의 제 2 레지스터들 각각은,
    상기 제 1 프로그램 쓰레드 및 상기 제 2 프로그램 쓰레드에 의해 액세스가능한,
    멀티쓰레드 프로세서.
  18. 멀티쓰레드 프로세서를 동작시키는 방법으로서,
    멀티쓰레드 명령 캐쉬(cache)로부터 상기 멀티쓰레드 프로세서의 쓰레드에 대한 명령을 페칭(fetching)하는 단계;
    상기 명령 캐쉬와 관련된 레지스터 파일을 상기 쓰레드에 대한 쓰레드 식별자를 통해 액세스하는 단계 ― 상기 레지스터 파일은 데이터 오퍼랜드 및 어드레스 오퍼랜드를 포함하고, 상기 레지스터 파일은 상기 레지스터 파일 내의 엔트리의 어드레스 및 쓰레드 식별자에 기초하여 액세스됨 ― ; 및
    상기 레지스터 파일로부터 상기 명령과 관련된 오퍼랜드를 리트리브하는 단계를 포함하는,
    멀티쓰레드 프로세서를 동작시키는 방법.
  19. 제 18 항에 있어서,
    실행 유니트 내에서 상기 명령과 관련된 하나 이상의 오퍼랜드들을 이용하여 상기 명령을 실행하는 단계를 더 포함하는,
    멀티쓰레드 프로세서를 동작시키는 방법.
  20. 제 19 항에 있어서,
    상기 실행 유니트에서의 상기 명령의 실행 결과를 상기 명령과 관련된 상기 레지스터 파일에 기록하는 단계를 더 포함하는,
    멀티쓰레드 프로세서를 동작시키는 방법.
  21. 제 18 항에 있어서,
    상기 리트리브된 오퍼랜드는 데이터 오퍼랜드인,
    멀티쓰레드 프로세서를 동작시키는 방법.
  22. 제 18 항에 있어서,
    상기 리트리브된 오퍼랜드는 어드레스 오퍼랜드인,
    멀티쓰레드 프로세서를 동작시키는 방법.
  23. 멀티쓰레드 프로세서로서,
    멀티쓰레드 명령 캐쉬로부터 상기 멀티쓰레드 프로세서의 쓰레드에 대한 명령을 페칭하기 위한 수단;
    상기 명령 캐쉬와 관련된 레지스터 파일을 상기 쓰레드에 대한 쓰레드 식별자를 통해 액세스하기 위한 수단 ― 상기 레지스터 파일은 데이터 오퍼랜드 및 어드레스 오퍼랜드를 포함하고, 상기 레지스터 파일은 상기 레지스터 파일 내의 엔트리의 어드레스 및 쓰레드 식별자에 기초하여 액세스됨 ― ; 및
    상기 레지스터 파일로부터 제 1 명령과 관련된 오퍼랜드를 리트리브하기 위한 수단을 포함하는,
    멀티쓰레드 프로세서.
KR1020127022422A 2004-04-07 2005-04-07 쓰레드 당 다중의 동시적 파이프라인을 갖는 멀티쓰레드 프로세서 KR101295569B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US56019904P 2004-04-07 2004-04-07
US60/560,199 2004-04-07
US11/096,917 US8074051B2 (en) 2004-04-07 2005-04-01 Multithreaded processor with multiple concurrent pipelines per thread
US11/096,917 2005-04-01
PCT/US2005/011614 WO2005101221A1 (en) 2004-04-07 2005-04-07 Multithreaded processor with multiple concurrent pipelines per thread

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020067022996A Division KR101253549B1 (ko) 2004-04-07 2005-04-07 쓰레드 당 다중의 동시적 파이프라인을 갖는 멀티쓰레드프로세서

Publications (2)

Publication Number Publication Date
KR20120114380A KR20120114380A (ko) 2012-10-16
KR101295569B1 true KR101295569B1 (ko) 2013-08-12

Family

ID=35150180

Family Applications (4)

Application Number Title Priority Date Filing Date
KR1020127022423A KR101236396B1 (ko) 2004-04-07 2005-04-07 쓰레드 당 다중의 동시적 파이프라인을 갖는 멀티쓰레드 프로세서
KR1020067022996A KR101253549B1 (ko) 2004-04-07 2005-04-07 쓰레드 당 다중의 동시적 파이프라인을 갖는 멀티쓰레드프로세서
KR1020127022422A KR101295569B1 (ko) 2004-04-07 2005-04-07 쓰레드 당 다중의 동시적 파이프라인을 갖는 멀티쓰레드 프로세서
KR1020127022421A KR101303119B1 (ko) 2004-04-07 2005-04-07 쓰레드 당 다중의 동시적 파이프라인을 갖는 멀티쓰레드 프로세서

Family Applications Before (2)

Application Number Title Priority Date Filing Date
KR1020127022423A KR101236396B1 (ko) 2004-04-07 2005-04-07 쓰레드 당 다중의 동시적 파이프라인을 갖는 멀티쓰레드 프로세서
KR1020067022996A KR101253549B1 (ko) 2004-04-07 2005-04-07 쓰레드 당 다중의 동시적 파이프라인을 갖는 멀티쓰레드프로세서

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020127022421A KR101303119B1 (ko) 2004-04-07 2005-04-07 쓰레드 당 다중의 동시적 파이프라인을 갖는 멀티쓰레드 프로세서

Country Status (6)

Country Link
US (5) US8074051B2 (ko)
EP (4) EP2339456A3 (ko)
JP (1) JP2007533007A (ko)
KR (4) KR101236396B1 (ko)
TW (1) TW200604940A (ko)
WO (1) WO2005101221A1 (ko)

Families Citing this family (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8074051B2 (en) * 2004-04-07 2011-12-06 Aspen Acquisition Corporation Multithreaded processor with multiple concurrent pipelines per thread
TW200625097A (en) * 2004-11-17 2006-07-16 Sandbridge Technologies Inc Data file storing multiple date types with controlled data access
US8195922B2 (en) 2005-03-18 2012-06-05 Marvell World Trade, Ltd. System for dynamically allocating processing time to multiple threads
US7933405B2 (en) * 2005-04-08 2011-04-26 Icera Inc. Data access and permute unit
US8099448B2 (en) 2005-11-02 2012-01-17 Qualcomm Incorporated Arithmetic logic and shifting device for use in a processor
US7398329B2 (en) * 2005-11-04 2008-07-08 Sun Microsystems, Inc. Pipelined I/O execution
US20080071851A1 (en) * 2006-09-20 2008-03-20 Ronen Zohar Instruction and logic for performing a dot-product operation
US8819099B2 (en) * 2006-09-26 2014-08-26 Qualcomm Incorporated Software implementation of matrix inversion in a wireless communication system
EP2080104A4 (en) * 2006-11-10 2010-01-06 Sandbridge Technologies Inc METHOD AND SYSTEM FOR PARALLELING PIPE-LINE CALCULATIONS
KR100888675B1 (ko) * 2007-02-15 2009-03-13 고려대학교 산학협력단 임베디드 코어에서 멀티 쓰레드 실행을 위해 확장된프로세서 및 임베디드 코어에서 멀티 쓰레드 실행 방법
EP2210171A1 (en) * 2007-11-05 2010-07-28 Sandbridge Technologies, Inc. Method of encoding register instruction fields
CN101290589B (zh) * 2007-12-27 2010-06-16 华为技术有限公司 一种并发指令操作方法和装置
WO2009097444A1 (en) * 2008-01-30 2009-08-06 Sandbridge Technologies, Inc. Method for enabling multi-processor synchronization
EP2245529A1 (en) * 2008-02-18 2010-11-03 Sandbridge Technologies, Inc. Method to accelerate null-terminated string operations
KR20100133964A (ko) * 2008-03-13 2010-12-22 아스펜 액퀴지션 코포레이션 유효 어레이를 비활성화함으로써 전력을 절약하기 위한 방법
JP2011530744A (ja) 2008-08-06 2011-12-22 アスペン・アクイジション・コーポレーション 停止可能および再始動可能dmaエンジン
KR101041777B1 (ko) * 2009-06-08 2011-06-17 엠텍비젼 주식회사 멀티 스레드 처리 방법 및 이를 사용하는 프로세서 디바이스
US20110107061A1 (en) * 2009-10-30 2011-05-05 Warren David A Performance of first and second macros while data is moving through hardware pipeline
US9325352B2 (en) * 2009-12-30 2016-04-26 Intel Deutschland Gmbh Control architectures for RF transceivers
JP5533330B2 (ja) * 2010-06-23 2014-06-25 富士ゼロックス株式会社 データ処理装置
JP2012048399A (ja) * 2010-08-25 2012-03-08 Panasonic Corp スレッド調停システム、プロセッサ、映像記録再生装置、およびスレッド調停方法
CN102495726B (zh) * 2011-11-15 2015-05-20 无锡德思普科技有限公司 机会多线程方法及处理器
WO2013080289A1 (ja) * 2011-11-28 2013-06-06 富士通株式会社 信号処理装置及び信号処理方法
KR101869325B1 (ko) * 2011-12-13 2018-06-21 한국전자통신연구원 이종 멀티코어 환경에서의 코어 배정 장치
JP5819184B2 (ja) * 2011-12-28 2015-11-18 富士通株式会社 情報処理装置及び情報処理装置の制御方法
JP5751181B2 (ja) * 2012-01-24 2015-07-22 富士通セミコンダクター株式会社 命令制御回路、プロセッサ、及び命令制御方法
US9588766B2 (en) * 2012-09-28 2017-03-07 Intel Corporation Accelerated interlane vector reduction instructions
US9430384B2 (en) * 2013-03-31 2016-08-30 Intel Corporation Instructions and logic to provide advanced paging capabilities for secure enclave page caches
US11210098B2 (en) * 2013-07-15 2021-12-28 Texas Instruments Incorporated Variable latency instructions
CN104460934A (zh) * 2013-09-13 2015-03-25 华为终端有限公司 多cpu调度方法及装置
US9766895B2 (en) * 2014-02-06 2017-09-19 Optimum Semiconductor Technologies, Inc. Opportunity multithreading in a multithreaded processor with instruction chaining capability
US9558000B2 (en) 2014-02-06 2017-01-31 Optimum Semiconductor Technologies, Inc. Multithreading using an ordered list of hardware contexts
US9766894B2 (en) 2014-02-06 2017-09-19 Optimum Semiconductor Technologies, Inc. Method and apparatus for enabling a processor to generate pipeline control signals
US9558002B2 (en) * 2014-09-30 2017-01-31 Imagination Techologies Limited Variable length execution pipeline
KR102332523B1 (ko) 2014-12-24 2021-11-29 삼성전자주식회사 연산 처리 장치 및 방법
KR20160108754A (ko) 2015-03-06 2016-09-20 주식회사 에이디칩스 파이프라인 구조의 프로세서에서의 무조건 분기 명령어 처리 방법
US9870340B2 (en) * 2015-03-30 2018-01-16 International Business Machines Corporation Multithreading in vector processors
CN107977192A (zh) * 2016-10-21 2018-05-01 超威半导体公司 用于执行低功率和低延时多精度计算的方法和系统
KR101856487B1 (ko) 2017-03-03 2018-06-19 주식회사 티맥스데이터 파싱을 처리하기 위한 컴퓨팅 장치
CN108628639B (zh) 2017-03-21 2021-02-12 华为技术有限公司 处理器和指令调度方法
US20200310799A1 (en) * 2019-03-27 2020-10-01 Mediatek Inc. Compiler-Allocated Special Registers That Resolve Data Hazards With Reduced Hardware Complexity
US11294672B2 (en) 2019-08-22 2022-04-05 Apple Inc. Routing circuitry for permutation of single-instruction multiple-data operands
US11132198B2 (en) 2019-08-29 2021-09-28 International Business Machines Corporation Instruction handling for accumulation of register results in a microprocessor
US11256518B2 (en) 2019-10-09 2022-02-22 Apple Inc. Datapath circuitry for math operations using SIMD pipelines
US11126439B2 (en) 2019-11-15 2021-09-21 Apple Inc. SIMD operand permutation with selection from among multiple registers
US11855831B1 (en) 2022-06-10 2023-12-26 T-Mobile Usa, Inc. Enabling an operator to resolve an issue associated with a 5G wireless telecommunication network using AR glasses

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6092175A (en) * 1998-04-02 2000-07-18 University Of Washington Shared register storage mechanisms for multithreaded computer systems with out-of-order execution

Family Cites Families (60)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4001692A (en) * 1975-07-07 1977-01-04 Barry Research Corporation Time diversity data transmission apparatus
JPH0640301B2 (ja) * 1983-09-22 1994-05-25 ソニー株式会社 並列乗算回路
US4769779A (en) * 1985-12-16 1988-09-06 Texas Instruments Incorporated Systolic complex multiplier
US5241635A (en) 1988-11-18 1993-08-31 Massachusetts Institute Of Technology Tagged token data processing system with operand matching in activation frames
KR920003494B1 (ko) * 1989-06-20 1992-05-01 삼성전자 주식회사 디지탈 신호처리 시스템에서의 실시간 2's 콤플리멘트코드 숫자의 승산방법 및 회로
US5404469A (en) * 1992-02-25 1995-04-04 Industrial Technology Research Institute Multi-threaded microprocessor architecture utilizing static interleaving
US5706459A (en) * 1994-01-06 1998-01-06 Fujitsu Limited Processor having a variable number of stages in a pipeline
US5613114A (en) * 1994-04-15 1997-03-18 Apple Computer, Inc System and method for custom context switching
US5812811A (en) * 1995-02-03 1998-09-22 International Business Machines Corporation Executing speculative parallel instructions threads with forking and inter-thread communication
JP2798121B2 (ja) * 1995-08-04 1998-09-17 日本電気株式会社 データ処理装置
US6385634B1 (en) * 1995-08-31 2002-05-07 Intel Corporation Method for performing multiply-add operations on packed data
JP3510729B2 (ja) 1996-02-29 2004-03-29 三洋電機株式会社 命令実行方法および命令実行装置
US5933627A (en) * 1996-07-01 1999-08-03 Sun Microsystems Thread switch on blocked load or store using instruction thread field
KR100291383B1 (ko) * 1996-11-18 2001-09-17 윤종용 디지털신호처리를위한명령을지원하는모듈계산장치및방법
US6088788A (en) 1996-12-27 2000-07-11 International Business Machines Corporation Background completion of instruction and associated fetch request in a multithread processor
US6073159A (en) 1996-12-31 2000-06-06 Compaq Computer Corporation Thread properties attribute vector based thread selection in multithreading processor
US5907702A (en) * 1997-03-28 1999-05-25 International Business Machines Corporation Method and apparatus for decreasing thread switch latency in a multithread processor
US5958041A (en) * 1997-06-26 1999-09-28 Sun Microsystems, Inc. Latency prediction in a pipelined microarchitecture
US5889689A (en) * 1997-09-08 1999-03-30 Lucent Technologies Inc. Hierarchical carry-select, three-input saturation
US6530014B2 (en) * 1997-09-08 2003-03-04 Agere Systems Inc. Near-orthogonal dual-MAC instruction set architecture with minimal encoding bits
US6377619B1 (en) * 1997-09-26 2002-04-23 Agere Systems Guardian Corp. Filter structure and method
US5864703A (en) * 1997-10-09 1999-01-26 Mips Technologies, Inc. Method for providing extended precision in SIMD vector arithmetic operations
US6212544B1 (en) * 1997-10-23 2001-04-03 International Business Machines Corporation Altering thread priorities in a multithreaded processor
US6697935B1 (en) * 1997-10-23 2004-02-24 International Business Machines Corporation Method and apparatus for selecting thread switch events in a multithreaded processor
US6161166A (en) * 1997-11-10 2000-12-12 International Business Machines Corporation Instruction cache for multithreaded processor
US5991785A (en) 1997-11-13 1999-11-23 Lucent Technologies Inc. Determining an extremum value and its index in an array using a dual-accumulation processor
US6182105B1 (en) * 1998-08-27 2001-01-30 Lucent Technologies Inc. Multiple-operand addition with intermediate saturation
JP2000322235A (ja) * 1999-05-07 2000-11-24 Sony Corp 情報処理装置
US6606704B1 (en) * 1999-08-31 2003-08-12 Intel Corporation Parallel multithreaded processor with plural microengines executing multiple threads each microengine having loadable microcode
US6526430B1 (en) 1999-10-04 2003-02-25 Texas Instruments Incorporated Reconfigurable SIMD coprocessor architecture for sum of absolute differences and symmetric filtering (scalable MAC engine for image processing)
US7120783B2 (en) 1999-12-22 2006-10-10 Ubicom, Inc. System and method for reading and writing a thread state in a multithreaded central processing unit
US6359579B1 (en) 2000-02-17 2002-03-19 Advanced Micro Devices, Inc. Digital logic correction circuit for a pipeline analog to digital (A/D) converter
US6557022B1 (en) * 2000-02-26 2003-04-29 Qualcomm, Incorporated Digital signal processor with coupled multiply-accumulate units
US6694425B1 (en) 2000-05-04 2004-02-17 International Business Machines Corporation Selective flush of shared and other pipeline stages in a multithread processor
US6898694B2 (en) 2001-06-28 2005-05-24 Intel Corporation High instruction fetch bandwidth in multithread processor using temporary instruction cache to deliver portion of cache line in subsequent clock cycle
US7487505B2 (en) 2001-08-27 2009-02-03 Intel Corporation Multithreaded microprocessor with register allocation based on number of active threads
US6968445B2 (en) * 2001-12-20 2005-11-22 Sandbridge Technologies, Inc. Multithreaded processor with efficient processing for convergence device applications
US6973471B2 (en) * 2002-02-22 2005-12-06 Freescale Semiconductor, Inc. Method and apparatus for implementing signed multiplication of operands having differing bit widths without sign extension of the multiplicand
US6990557B2 (en) 2002-06-04 2006-01-24 Sandbridge Technologies, Inc. Method and apparatus for multithreaded cache with cache eviction based on thread identifier
US6912623B2 (en) 2002-06-04 2005-06-28 Sandbridge Technologies, Inc. Method and apparatus for multithreaded cache with simplified implementation of cache replacement policy
GB2389433B (en) 2002-06-08 2005-08-31 Motorola Inc Bit exactness support in dual-mac architecture
US6842848B2 (en) * 2002-10-11 2005-01-11 Sandbridge Technologies, Inc. Method and apparatus for token triggered multithreading
US6904511B2 (en) * 2002-10-11 2005-06-07 Sandbridge Technologies, Inc. Method and apparatus for register file port reduction in a multithreaded processor
US6925643B2 (en) * 2002-10-11 2005-08-02 Sandbridge Technologies, Inc. Method and apparatus for thread-based memory access in a multithreaded processor
US6971103B2 (en) 2002-10-15 2005-11-29 Sandbridge Technologies, Inc. Inter-thread communications using shared interrupt register
KR101005718B1 (ko) * 2003-05-09 2011-01-10 샌드브리지 테크놀로지스, 인코포레이티드 포화와 함께 또는 포화 없이 다중 오퍼랜드들의 누산을 위한 프로세서 감소 유닛
US7428567B2 (en) 2003-07-23 2008-09-23 Sandbridge Technologies, Inc. Arithmetic unit for addition or subtraction with preliminary saturation detection
US7251737B2 (en) 2003-10-31 2007-07-31 Sandbridge Technologies, Inc. Convergence device with dynamic program throttling that replaces noncritical programs with alternate capacity programs based on power indicator
US7360064B1 (en) * 2003-12-10 2008-04-15 Cisco Technology, Inc. Thread interleaving in a multithreaded embedded processor
US7873815B2 (en) * 2004-03-04 2011-01-18 Qualcomm Incorporated Digital signal processors with configurable dual-MAC and dual-ALU
US7475222B2 (en) 2004-04-07 2009-01-06 Sandbridge Technologies, Inc. Multi-threaded processor having compound instruction and operation formats
US7797363B2 (en) 2004-04-07 2010-09-14 Sandbridge Technologies, Inc. Processor having parallel vector multiply and reduce operations with sequential semantics
US8074051B2 (en) 2004-04-07 2011-12-06 Aspen Acquisition Corporation Multithreaded processor with multiple concurrent pipelines per thread
TW200625097A (en) 2004-11-17 2006-07-16 Sandbridge Technologies Inc Data file storing multiple date types with controlled data access
EP2080104A4 (en) 2006-11-10 2010-01-06 Sandbridge Technologies Inc METHOD AND SYSTEM FOR PARALLELING PIPE-LINE CALCULATIONS
EP2183732A1 (en) 2007-08-31 2010-05-12 Sandbridge Technologies, Inc. Method, apparatus, and architecture for automated interaction between subscribers and entities
EP2210171A1 (en) 2007-11-05 2010-07-28 Sandbridge Technologies, Inc. Method of encoding register instruction fields
WO2009097444A1 (en) 2008-01-30 2009-08-06 Sandbridge Technologies, Inc. Method for enabling multi-processor synchronization
EP2245529A1 (en) 2008-02-18 2010-11-03 Sandbridge Technologies, Inc. Method to accelerate null-terminated string operations
KR20100133964A (ko) 2008-03-13 2010-12-22 아스펜 액퀴지션 코포레이션 유효 어레이를 비활성화함으로써 전력을 절약하기 위한 방법

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6092175A (en) * 1998-04-02 2000-07-18 University Of Washington Shared register storage mechanisms for multithreaded computer systems with out-of-order execution

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
A fine-grain multithreading superscalar architecture, Loikkanen, M. et al. IN: the 1996 conference on Parallel Architectures and Compilation Techniques, 페이지 163-168 (1996) *
A fine-grain multithreading superscalar architecture, Loikkanen, M. et al. IN: the 1996 conference on Parallel Architectures and Compilation Techniques, 페이지 163-168 (1996)*

Also Published As

Publication number Publication date
US8959315B2 (en) 2015-02-17
EP2339455A2 (en) 2011-06-29
EP1741033A1 (en) 2007-01-10
US20100199075A1 (en) 2010-08-05
EP2339456A3 (en) 2011-08-24
KR101303119B1 (ko) 2013-09-06
KR20070011434A (ko) 2007-01-24
KR20120115553A (ko) 2012-10-18
EP1741033A4 (en) 2008-07-09
US8892849B2 (en) 2014-11-18
US8074051B2 (en) 2011-12-06
KR101253549B1 (ko) 2013-04-11
EP2339457A3 (en) 2011-08-31
US20120096243A1 (en) 2012-04-19
KR101236396B1 (ko) 2013-02-22
US20100122068A1 (en) 2010-05-13
JP2007533007A (ja) 2007-11-15
KR20120114380A (ko) 2012-10-16
US20060095729A1 (en) 2006-05-04
KR20120114379A (ko) 2012-10-16
EP2339455A3 (en) 2011-08-24
US8762688B2 (en) 2014-06-24
WO2005101221A1 (en) 2005-10-27
EP2339457A2 (en) 2011-06-29
TW200604940A (en) 2006-02-01
US8918627B2 (en) 2014-12-23
EP2339456A2 (en) 2011-06-29
US20100199073A1 (en) 2010-08-05

Similar Documents

Publication Publication Date Title
KR101295569B1 (ko) 쓰레드 당 다중의 동시적 파이프라인을 갖는 멀티쓰레드 프로세서
US6842848B2 (en) Method and apparatus for token triggered multithreading
JP4187720B2 (ja) マルチスレッド・プロセッサにおけるレジスタ・ファイルのポートを削減するための方法および装置
JP2918631B2 (ja) デコーダ
EP1550032B1 (en) Method and apparatus for thread-based memory access in a multithreaded processor
US20060095717A1 (en) Processor having compound instruction and operation formats
WO1997024661A1 (en) Apparatus for concurrent processing of pipelined instructions having register dependencies
CN101322111A (zh) 每个线程具有多个并发流水线的多线程处理器
JP2003526155A (ja) 配列境界をチェックする能力を有する処理アーキテクチャ
US6092184A (en) Parallel processing of pipelined instructions having register dependencies
WO2012061416A1 (en) Methods and apparatus for a read, merge, and write register file
JP2861234B2 (ja) 命令処理装置
EXE et al. DEC I EXEI~ mM I WB

Legal Events

Date Code Title Description
A107 Divisional application of patent
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20160629

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20180628

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20190624

Year of fee payment: 7