KR20050073484A - 토큰 트리거 방식 멀티스레딩을 위한 방법 및 장치 - Google Patents

토큰 트리거 방식 멀티스레딩을 위한 방법 및 장치 Download PDF

Info

Publication number
KR20050073484A
KR20050073484A KR1020057006030A KR20057006030A KR20050073484A KR 20050073484 A KR20050073484 A KR 20050073484A KR 1020057006030 A KR1020057006030 A KR 1020057006030A KR 20057006030 A KR20057006030 A KR 20057006030A KR 20050073484 A KR20050073484 A KR 20050073484A
Authority
KR
South Korea
Prior art keywords
thread
instruction
processor
threads
register
Prior art date
Application number
KR1020057006030A
Other languages
English (en)
Other versions
KR100991912B1 (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 KR20050073484A publication Critical patent/KR20050073484A/ko
Application granted granted Critical
Publication of KR100991912B1 publication Critical patent/KR100991912B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • 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/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • 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
    • 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

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)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

본 발명은 멀티스레디드 프로세서에서 토큰 트리거 방식 멀티스레딩 기술에 관한 것이다. 상기 멀티스레디드 프로세서의 다수 스레드에 대한 명령어 발생 시퀀스는 상기 각각의 스레드를 하나이상의 레지스터와 관련시킴으로써 제어되며, 이때 상기 하나이상의 레지스터는 하나이상의 명령어를 발생시키도록 다음 스레드를 식별하는 값을 저장하고, 따라서 그리고 상기 저장된 값을 이용하여 상기 명령어 발생 시퀀스를 제어하게 된다. 예를 들어, 상기 멀티스레디드 프로세서의 다수의 하드웨어 스레드 유닛 각각은 상기 하드웨어 스레드 유닛에 의해 업데이트가능한 상응하는 로컬 레지스터를 포함할 수 있고, 상기 하드웨어 스레드 유닛들 중 주어진 하나에 대한 로컬 레지스터는 상기 주어진 하드웨어 스레드 유닛이 하나이상의 명령어를 발생한 후, 하나이상의 명령어를 발생시키도록 다음 스레드를 식별하는 값을 저장한다. 전체 레지스터 배열은 또한 대안으로 사용될 수 있다. 상기 프로세서는 스레드 스톨링에 이르는 차단 상태를 야기하지 않고서, 상기 명령어 발생 시퀀스가 임의의 교차하는 짝수-홀수 스레드 시퀀스에 상응하도록 구성될 수 있다.

Description

토큰 트리거 방식 멀티스레딩을 위한 방법 및 장치{METHOD AND APPARATUS FOR TOKEN TRIGGERED MULTITHREADING}
본 발명은 디지털 데이터 프로세서에 관한 것으로, 특히 멀티스레디드 프로세서에서 사용하기 위한 스레딩 기술에 관한 것이다.
멀티스레디드 프로세서는 다수의 개별 명령어 시퀀스 또는 "스레드(threads)"의 동시 실행을 지원하는 프로세서이다. 종래의 스레딩 기술은 가령, M.J.Flynn, "Computer Architecture: Pipelined and Parallel Processor Design," Jones and Bartlett Publishers, 보스턴, 매사추세츠, 1995 및 G.A.Blaauw and Frederick P.Brooks, "Computer Architecture: Concepts and Evolution," Addison-Wesley, Reading, 매사추세츠, 1997에 설명되어 있으며, 둘다 본원에서 참조로 인용된다.
일례로, "배럴 멀티스레딩(barrel multithreading)"으로 알려진 기술은 각각의 스레드가 특정 고정 수의 시퀀스에 따른 명령어를 발생시키도록 한다. 예를 들어, 네 개의 스레드, 즉 Thread0, Thread1, Thread2, 및 Thread3을 갖는 프로세서는 상기 배럴 멀티스레딩에 따라서 상기 스레드들이 고정된 순서로 즉, Thread0, Thread1, Thread2, Thread3, Thread0 등으로 명령어를 발생시키도록 한다.
배럴 멀티스레딩 및 다른 현재의 스레딩 기술에 있어서의 문제는 스레드 명령어의 발생의 임의 시퀀싱이 가능하도록 구성되지 않는다는 것이며, 또는 그렇게 구성되더라도 구현을 위해서는 엄청난 양의 하드웨어를 필요로 한다는 점이다.
현재의 기술은 따라서 유연성이 없으며, 프로세서 동시성(concurrency)에서 원치않는 제한을 일으킬 수 있다. 더욱이, 이러한 기술은 차단 상태 및 스레딩 스톨링(stalling)을 일으킬 수 있어서 프로세서 성능에 악영향을 미친다.
따라서, 멀티스레디드 프로세서에서 사용시 향상된 스레딩 기술을 위한 필요가 존재한다.
도 1은 본 발명이 구현된 예시적 프로세싱 시스템의 블록도이다.
도 2는 도 1의 프로세싱 시스템의 멀티스레디드 프로세서의 보다 상세한 블록도이다.
도 3은 본 발명의 기술에 따라 도 2의 멀티스레디드 프로세서에서 사용하기 에 적합한 토큰 트리거 방식 스레딩의 예이다.
도 4는 본 발명의 기술에 따라 예시적 명령어 함수가 도 2의 멀티스레디드 프로세서에서 파이프라인될 수 있는 방식을 보여준다.
도 5는 도 2의 프로세서의 각 스레드가 사이클 당 하나의 명령어를 발생시키는 단일 발생 파이프라인을 보여준다.
도 6은 도 2의 프로세서의 각 스레드가 사이클 당 두 개의 명령어를 발생시키는 다중 발생 파이프라인을 보여준다.
도 7은 도 2의 프로세서에서 사용하기에 적합하고 본 발명에 따르도록 구성된 하드웨어 스레드 유닛을 보여준다.
도 8은 도 2의 프로세서의 실시예에서 구현된 토큰 트리거 방식 스레등 기술을 보여준다.
본 발명은 멀티스레디드 프로세서에 있어서 토큰 트리거 방식 스레딩 기술을 제공한다.
본 발명의 한 태양에 따르면, 멀티스레디드 프로세서의 다수 스레드에 있어서 명령어 발생 시퀀스는 각각의 스레드를 하나이상의 레지스터와 관련시키도록 제어되며, 이때 상기 하나이상의 레지스터는 하나이상의 명령어를 발생시키도록 다음 스레드를 식별하는 값을 저장하고, 따라서 상기 명령어 발생 시퀀스는 상기 저장된 값을 이용하여 명령어 발생 시퀀스를 제어하게 된다.
전체 레지스터 배열은 또한 대안적으로 사용될 수 있다. 특히, 각 스레드에 액세스 가능한 하나이상의 전체 레지스터가 상기 스레드와 관련될 수 있고, 전체 레지스터의 콘텐츠는 상기 스레드들 중 하나에 의하여 명령어가 발생된 후 상기 명령어 발생 시퀀스에 따라 하나이상의 명령어를 발생하도록 상기 스레드들 중 또 다른 하나를 식별한다.
본 발명에 따른 멀티스레드 프로세서는 스레드 스톨링에 이르게 되는 차단 상태를 일으키지 않고서 상기 명령어 발생 시퀀스가 가령, 스레드들의 임의의 교차하는 짝수-홀수 시퀀스, 다른 임의의 시퀀스에 상응하도록 구성될 수 있다.
본 발명은 예시적인 멀티스레디드 프로세서에서 구현되도록 도시될 것이다. 그러나, 본 발명은 도시된 실시예의 특별한 멀티스레디드 프로세서 구조를 사용할 필요는 없으며, 명령어 파이프라이닝과 결합하여 토큰 트리거 방식의 멀티스레딩의 사용을 통해 향상된 성능을 제공하도록 멀티스레디드 프로세서 용도에서 사용하는 것이 보다 적절하다.
본 발명에 따른 토큰 트리거 방식 스레딩 기술을 구현하는 예시적 프로세싱 시스템(100)은 도 1 및 2와 결합하여 설명될 것이다.
도 1의 프로세싱 시스템은 주 메모리(104)에 연결된 멀티스레디드 프로세서(102)를 포함한다. 상기 멀티스레디드 프로세서(102)는 멀티스레디드 캐시 메모리(110) 및 멀티스레디드 데이터 메모리(112)를 포함한다.
도 2는 상기 멀티스레디드 프로세서(102)의 가능한 하나의 구현예를 상세히 보여주고 있다. 이 실시예에서, 상기 멀티스레디드 프로세서(102)는 멀티스레디드 캐시 메모리(110), 데이터 메모리(112), 캐시 컨트롤러(114), 명령어 디코더(116), 레지스터 파일(118), 및 산술 연산 유닛(ALU)(120)을 포함한다. 상기 멀티스레디드 캐시 메모리(110)는 또한 멀티스레디드 캐시로 일컬어진다.
도 1 및 2에 도시된 특별한 배열은 도해의 목적으로 단순화되어 있고, 도시되지 않은 추가 요소 및 다른 대안 요소는 당업자에게 분명하기 때문에 포함될 수 있다.
멀티스레디드 캐시(110)는 다수의 스레드 캐시(110-1, 110-2,...110-N)를 포함하고, 이때 N은 상기 멀티스레디드 프로세서(102)에 의해 지원된 스레드의 수를 표시한다. 따라서 각각의 스레드는 상기 멀티스레디드 캐시(110) 내에 각각의 스레드와 관련된 상응하는 스레드 캐시를 갖는다. 유사하게, 상기 데이터 메모리(112)는 N개의 데이터 메모리, 즉 112-1, 112-2,...112-N을 포함한다.
상기 멀티스레디드 캐시(110) 내의 각 스레드 캐시는 하나이상의 메모리 위치 세트를 갖는 메모리 어레이를 포함할 수 있다. 주어진 스레드 캐시는 도 7과 결합하여 아래에서 상술될 것이며, 관련된 스레드 식별기를 저장하기 위한 스레드 식별기 레지스터를 추가로 포함할 수 있다.
멀티스레디드 캐시(110)는 상기 캐시 컨트롤러(114)를 통해 주 메모리(104)와 인터페이스한다. 캐시 컨트롤러(114)는 주 메모리(104)로부터의 적절한 명령어가 상기 멀티스레디드 캐시(110)으로 로딩되는 것을 보장한다. 상기 캐시 컨트롤러(114)는 이 실시예에서, 각각의 스레드 캐시 110-1, 110-2,...110-N과 관련된 논리회로 또는 다른 프로세싱 요소와 결합하여 동작하면서, 어소시에이티브 매핑(associative mapping), 다이렉트(direct) 매핑, 또는 세트-어소시에이티브(set-associative) 매핑 등과 같은 어드레스 매핑 기술의 적어도 일부분을 구현한다. 본 발명과 결합하여 사용하기에 적합한 세트-어소시에이티브 매핑 기술은 미국 특허 출원 10/161,774 및 10/161,874에 설명되어 있으며, 둘다 2002년 6월 4일에 출원되었고 본원에서 참조로 인용된다.
일반적으로, 상기 멀티스레디드 캐시(110)는 상기 멀티스레디드 프로세서(102)에 의해 실행될 명령어를 저장하는데 사용되고, 반면 데이터 메모리(112)는 상기 명령어에 의해 동작되는 데이터를 저장한다. 명령어는 종래의 방식으로 명령어의 실행을 제어함에 있어서, 레지스터 파일(118) 및 ALU(120)와 결합하여 동작하는 명령어 디코더(116)에 의해 상기 멀티스레디드 캐시(110)로부터 인출된다. 116, 118, 및 120과 같은 멀티스레디드 프로세서 요소의 동작은 당분야에 공지되어 있기 때문에 본원에서는 추가로 상세히 설명되지 않는다.
상기 데이터 메모리(112)는 주 메모리(104)에 직접 연결되어 있지만, 도면에서는 나타나지 않는다.
메모리(104, 110, 및 112) 중 하나이상은 다중 뱅크 또는 다른 지정된 부분을 포함하도록 각각 구성될 수 있다. 실시예에서, 각각의 뱅크는 하나이상의 메모리 모듈, 또는 단일 메모리의 특정 부분으로 구성되는 것으로 보일 수 있다.
멀티스레디드 프로세서와 관련된 이러함 메모리 및 다른 메모리들의 스레드 방식 뱅킹 기술은 미국 특허 출원 도켓 번호 1007-5 "Method and Apparatus for Thread-Based Memory Access in a Multithreaded Processor"에 설명되어 있다.
본 발명은 도 2에 도시된 특별한 멀티스레디드 프로세서 구조를 필요로 하지는 않는다. 본 발명은 다양한 다른 멀티스레디드 프로세서 구조에서 구현될 수 있다.
도 2에 도시되어 있고 본 발명과 결합하여 사용하기에 적합한 형태의 멀티스레디드 프로세서의 보다 많은 특별한 예는 2001년 12월 20일에 출원되었고 본원에서 참조로 인용되는 미국 가 특허 출원 번호 60/341,289에 설명되어 있다. 미국 가 특허 출원 번호 60/341,289에 설명된 멀티스레디드 프로세서의 실시예는 RISC-방식 제어 코드, 디지털 신호 프로세서(DSP) 코드, 자바 코드 및 네트워크 프로세싱 코드 등을 실행할 수 있다. 상기 프로세서는 SIMD(single instruction multiple data) 벡터 유닛, 리덕션(reduction) 유닛, 및 LIW(long instruction word) 복합 명령어 실행을 포함한다.
본 발명은 한 태양에서, 도 2의 프로세서(102)와 같은 멀티스레디드 프로세서에서 향상된 성능을 제공한다. 특히, 아래에서 설명될 것이지만, 상기 프로세서(102)는 본 발명의 기술에 따라서, 토큰 트리거 방식 스레딩 기술을 이용하며, 이때 상기 토큰 트리거 방식 스레딩 기술은 향상된 프로세서 동시성을 제공하고 스레드 스톨링의 가능성을 줄이기 위하여 명령어 파이프라이닝과 결합하여 동작한다.
도 3은 스레드의 수 N이 8이 되는 프로세서(102)를 구현하기 위한 토큰 트리거 방식 스레딩을 보여준다. 일반적으로, 모든 스레드는 동시에 동작하고, 각 스레드는 상응하는 상기 스레드 캐시(110) 및 데이터 메모리(112)에 액세스한다. 도 3에서, 8개의 스레드는 Thread0, Thread1, Thread2,...Thread7로 표시되고, 링(ring) 형태로 직렬로 상호연결되도록 도시되어 있다. 상기 멀티스레디드 프로세서에서, 주어진 스레드는 일반적으로 하드웨어 및 소프트웨어에 의하여 보여질 수 있다. 주어진 스레드와 관련된 특별한 프로세서 하드웨어는 따라서 본원에서 하드웨어 스레드 유닛 또는 단순히 "콘텍스트(context)"로 일컬어진다.
도 3에 도시된 토큰 트리거 방식 스레딩에 따르면, 모든 하드웨어 스레드 유닛 또는 콘텍스트는 명령어를 동시에 실행하도록 허용되지만, 단지 하나의 콘텍스트만이 상기 프로세서의 특별한 클럭 사이클에서 명령어를 생성할 수 있다. 다시 말해서, 모든 콘텍스트는 동시에 실행하지만, 단지 하나의 콘텍스트만이 특별한 클럭 사이클에서 활성화된다. 따라서, 만일 총 C개의 콘텍스트가 있다면, 모든 콘텍스트로부터 명령어를 생성하기 위해서는 C개의 클럭 사이클이 필요할 것이다. 각각의 클럭 사이클, 상기 콘텍스트 중 하나는 명령어를 발생하고, 명령어를 발생할 다음 스레드는 토큰으로 표시된다.
도 3의 예에서, 상기 토큰은 순차적으로 또는 라운드-로빈 방식으로 배열됨으로써 상기 콘텍스트들은 순차적으로 명령어를 발생시킬 것이다. 그러나, 명령어를 생성할 다음 콘텍스트를 나타내는 토큰은 가령, 교차하는 짝수-홀수 패턴과 같은 다른 패턴을 사용하여 배열될 수 있다. 또한 앞서 언급된 바와 같이, 다른 스레딩 방식이 본 발명과 결합하여 사용될 수 있다. 본 발명에 따른 스레딩 기술의 수많은 예는 도 7 및 8과 결합하여 아래에 설명될 것이다.
도 4는 예시적 명령어 함수가 본 발명에 따라 상기 멀티스레디드 프로세서(102)에서 파이프라인될 수 있는 방식을 보여준다. 본 발명의 실시예에서, 이러한 방식의 파이프라이닝은 앞서 설명된 토큰 트리거 방식 스레딩과 결합하여 사용되는 것이 선호되지만, 본 발명을 구현함에 있어서 파이프라이닝과 스레딩의 수많은 다른 조합이 사용될 수 있다.
도 4의 파이프라인은 도 3의 N=8인 토큰 트리거 방식 스레딩과 결합하여 사용하도록 구성된다. 도 4의 예시적 명령어 함수는 로드/저장(Load/Store)(Ld/St), ALU, 정수곱(I_Mul) 및 벡터곱(V_Mul)을 포함하고, 각각 9개, 6개, 7개 및 8개의 파이프라인 단계를 갖는 것으로 도시되어 있다.
도 4에 도시된 각각의 예시적 명령어 파이프라인은 적어도 명령어 디코드 단계, 레지스터 파일(RF) 읽기 단계, 이동(Xfer) 단계 및 되돌림(WB) 단계를 포함한다. 상기 RF 읽기 단계는 레지스터 파일(가령, 레지스터 파일(118))로부터 읽는 것을 포함하고, 상기 이동 단계는 명령어 결과를 지정된 홀딩 레지스터로 이동하는 것을 포함하며, 상기 WB 단계는 명령어 결과를 메모리 또는 레지스터 파일로 다시 쓰는 것을 포함한다.
상기 Ld/St 파이프라인은 어드레스 생성(Agen) 단계, 내부(Int) 또는 외부(Ext) 결정 단계, 및 세 개의 추가적인 메모리 실행 단계, 즉 Mem0, Mem1, 및 Mem2를 추가로 포함한다. 상기 Ld/St 파이프라인은 따라서 총 네 개의 메모리 실행 단계, 즉 Mem0, Mem1, Mem2 및 WB를 포함한다. 상기 내부 또는 외부 결정 단계는 상기 관련된 메모리 액세스가 내부 또는 외부 메모리인지를 결정하고, 그리고 상기 파이프라인 내의 추가적인 디코드 단계로서 보여질 수 있다. 특정 외부 메모리 액세스를 위해 추가 메모리 실행 단계가 필요할 수 있다. 예를 들어, 만일 외부 메모리 액세스의 WB 단계가 상응하는 스레드가 활성화되는 주기 동안 종료되지 않으면, 상기 스레드는 스톨링(stalling)됨으로써 상기 WB 단계는 상기 스레드가 활성화되는 다음 순간을 종료할 것이다.
ALU 파이프라인은 Exec1 및 Exec2로 표시된 두 개의 실행 단계를 추가로 포함한다.
정수 I_Mul 파이프라인은 Exec1, Exec2 및 Exec3으로 표시된 세 개의 실행 단계를 추가로 포함한다.
상기 벡터 V_Mul 파이프라인은 두 개의 곱셈 단계 MPY1 및 MPY2, 두 개의 덧셈 단계 Add1 및 Add2를 추가로 포함한다.
상기 멀티스레디드 프로세서(102)는 명령어가 특정 콘텍스트로부터 상응하는 파이프라인으로 들어가도록 구성됨으로써 종료를 실행하는 것이 선호된다.
적절히 구성된 파이프라인 및 충분한 수의 스레드를 가짐으로써, 비록 사이클 당 콘텍스트에서 단일 명령어가 발생되더라도 모든 하드웨어 콘텍스트는 동시에 실행될 수 있다. 앞서 언급한 바와 같이, 스레드 및 파이프라인 단계의 특별한 수는 단지 도시의 목적이며, 선호되는 구현예를 반영하는 것은 아니다. 당업자는 본원에서 제공되는 특별한 용도에서 스레드 및 파이프라인 단계의 적절한 수를 결정할 수 있을 것이다.
도 4의 파이프라인의 동작은 도 5 및 6을 참조로 이제 설명될 것이다. 도 5 및 6은 특별한 프로세서 스레드에 의해 발생된 명령어의 시퀀스들을 각각 보여주고, 또한 상기 레지스터 파일(118)의 짝수 부분 또는 홀수 부분이 상응하는 스레드에 의해 이용되는지를 각 명령어에 대해 표시한다. 앞서 언급된 미국 특허 출원 도켓 번호 1007-7 "Method and Apparatus for Register File Port Reduction in a Multithreaded Processor"는 상기 레지스터 파일(118)이 어떻게 짝수 부분 및 홀수 부분으로 분리되는지를 보여주고, 이때 상기 두 부분 중 하나는 스레드 식별기를 이용하여 선택가능하다.
도 5 및 6에서는 설명의 단순성을 위해 스레드의 수 N은 4로 가정하고, 각각의 스레드는 도 3의 토큰 트리거 방식 스레딩의 라운드-로빈 구현예에 따른 명령어를 발생시킨다. 특히, 상기 예에서 각 스레드는 많은 신호 처리 용도에서 일반적인 명령어 시퀀스인 교차하는 로드(Load) 및 벡터 곱셈 명령어를 발생한다. 상기 로드 및 벡터 곱셈 명령어는 도 4의 명령어 함수 파이프라인에 따라 설명되는 바와 같이 구성된다.
도 5에서, 단일 발생 파이프라인의 한 예가 도시되어 있고, 각각의 스레드는 사이클 당 하나의 명령어를 발생한다. 도 5에서, 발생된 명령어에 의해 액세스된 상기 레지스터 파일 부분은 스레드로부터 짝수(e)와 홀수(o) 사이의 스레드로 교차함을 알 수 있다. 이는 인접한 레지스터 되돌림 동작, 가령 Thread4의 제 1 로드 명령어와 Thread1의 벡터 곱셈 명령어의 되돌림 단계와 관련된 동작은 상기 레지스터 파일의 서로 다른 부분들로 향하게 된다. 특히, Thread4의 제 1 로드 명령어는 상기 레지스터 파일의 짝수 부분으로 향하고, 반면 Thread1의 벡터 곱셈 명령어는 상기 레지스터 파일의 홀수 부분으로 향한다. 도면의 다른 명령어들은 유사하게 구성된다.
상기 스레드 식별기는 상기 레지스터 파일의 짝수 부분 또는 홀수 부분이 주어진 스레드에 의해 액세스될 것인지를 선택하는데 사용된다. 예를 들어, 도 5 및 6에서 N=4인 경우에, 상기 스레드 식별기의 최하위 비트(LSB)는 상기 레지스터 파일의 짝수 부분과 홀수 부분 사이를 선택하는데 사용될 수 있다.
도 6은 각각의 프로세서 스레드가 사이클 당 2개의 명령어를 발생시키는 예시적인 다중 발생 파이프라인을 보여준다. 여기서, 단일 스레드는 각 사이클마다 로드 및 벡터 곱셈 명령어를 발생시키고 있다. 사이클 당 다수의 명령어가 발생되기 때문에, 도 5의 예에서는 두 개의 추가 레지스터 파일 읽기 포트가 필요하다. 그러나, 도면에서 알 수 있듯이, 상기 스레드 식별기의 최하위 비트를 바탕으로 결정되는 바와 같이 모든 동시적인 쓰기는 레지스터 파일의 짝수 또는 홀수 부분에 이루어지며, 따라서 필요한 레지스터 파일 쓰기 포트 및 프로세서 전력 소비는 감소된다.
도 5 및 6과 결합하여 보여진 스레드의 특정 수는 실시예에 의존하며, 본 발명은 특정 스레드 수를 사용하는 것에 제한되지 않는다.
도 7은 본 발명에 따른 도 2의 멀티스레디드 프로세서(102)에서 구현될 수 있는 하드웨어 스레드 유닛(702-i)의 하드웨어 세트(700)를 보여주고, 이때 i=1, 2,...N이다. 앞서 언급된 바와 같이, 이러한 하드웨어 스레드 유닛은 본원에서 콘텍스트로 또한 일컬어지며, 그리고 상기 프로세서에서 지원된 각각의 스레드와 관련된 하나의 유닛 또는 콘텍스트가 있다. 상기 하드웨어 스레드 유닛(702) 각각은 스레드 식별기(TID) 레지스터(704) 및 다음 스레드 식별기(NTID) 레지스터(706)를 포함한다. 게다가, 상기 하드웨어 스레드 유닛(702) 각각은 상응하는 스레드 캐시(110) 및 데이터 캐시(112)를 포함할 수 있고, 또는 대안으로 관련된 캐시 컨트롤러(114) 부분이나 다른 프로세서 회로를 포함할 수 있다.
본 발명에 따르면, 상기 각각의 하드웨어 스레드 유닛(702)은 주어진 프로세서 사이클에서 하나이상의 명령어를 발생시킬 수 있다. 상기 TID 레지스터(704)는 주어진 하드웨어 스레드 유닛에서 상응하는 스레드의 스레드 식별기를 저장한다. 주어진 하드웨어 스레드 유닛에서 NTID 레지스터(706)는 주어진 하드웨어 스레드 유닛이 자체 명령어를 발생시킨 후 명령어를 발생시킬 다음 하드웨어 스레드 유닛의 스레드 식별기를 저장한다. 상기 NTID 레지스터(706)는 따라서 본 발명의 토큰 트리거 방식 스레딩 기술과 관련된 토큰을 저장하는 것으로 보여질 수 있다. 상기 토큰은 상기 주어진 하드웨어 스레드 유닛에 의하여 다른 하드웨어 스레드 유닛의 스레드 식별기로 설정될 수 있어서, 상기 토큰 트리거 방식 멀티스레딩 프로세서에서 상당한 유연성을 제공한다.
상응하는 하드웨어 스레드 유닛과 관련되고 개별적으로 프로그램가능한 로컬 레지스터로서 도 7에 도시되어 있지만, 상기 NTID 레지스터는 또한 대안으로 상기 모든 하드웨어 스레드 유닛에 액세스할 수 있는 전체 레지스터로서 구현될 수도 있다. 이 경우, 각각의 하드웨어 스레드 유닛은 상기 전체 NTID 레지스터를 직렬로 증가시킬 필요는 없다. 예를 들어, 상기 하드웨어 스레드 유닛의 외부에 구현된 상태 기계(state machine) 또는 다른 유사한 회로는 원하는 토큰 시퀀스를 제공하기 위해 전체 NTID 레지스터를 프로그램하는데 사용될 수 있다.
도 8은 교차하는 짝수-홀수 패턴에 상응하는 예시적인 토큰 시퀀스를 보여준다. N=8인 토큰 트리거 방식 스레딩 예에서 토큰 시퀀스는 Thread0(T0), Thread3(T3), Thread2(T2), Thread1(T1), Thread6(T6), Thread5(T5), Thread4(T4), Thread7(T7), Thread0(T0) 등이다.
상기 예는 도 7에 도시된 NTID 레지스터를 사용하면 실행 파이프라인에서 어떤 충돌을 일으키지 않음으로써 스레드 스톨링 없이, 짝수-홀수 패턴에서 각각의 콘텍스트가 다른 콘텍스트로 토큰을 허용하는 것을 보여준다. 명령어 파이프라이닝을 갖는 이러한 스레딩 기술의 조합은 차단 상태의 수를 줄여주고, 짝수-홀수 스레드 시퀀스의 임의적 실행을 가능하게 한다.
앞서 언급된 바와 같이, 상기 스레드 식별기 레지스터(704)는 특정 스레드를 식별하기 위해 상기 멀티스레디드 프로세서(102)에서 사용되는 멀티-비트 스레드 식별기를 저장한다. 이러한 스레드 식별기는 당업자에게 공지되어 있듯이 종래의 방식으로 생성될 수 있다.
본원에서 사용되는 상기 용어 "스레드 식별기"는 멀티스레디드 프로세서에서 다수의 스레드 세트 또는 특정 스레드를 식별하기에 적합한 정보를 포함하도록 의도된다. 실시예에 의해서 그리고 제한없이, n-비트 스레드 식별기는 상기 멀티스레디드 프로세서에서 지원된 N=2n 스레드 중 하나를 식별하는데 사용될 수 있다. 본 발명에서 사용하기에 적합한 다양한 스레드 식별기 구조는 당업자에게 분명할 것이다.
앞서 언급된 바와 같이, 본 발명의 토큰 트리거 방식 스레딩 기술은 종래의 기술에 비해 상당한 개선점을 제공한다. 예를 들어, 상기 기술은 스레드 스톨링의 가능성을 상당히 감소시킬 수 있다. 더욱이, 이러한 향상은 프로세서 동시성 또는 프로세서의 성능에 영향을 주지 않으면서 제공된다.

Claims (16)

  1. 멀티스레디드 프로세서의 다수의 스레드에 대하여 명령어 발생 시퀀스를 제어하는 방법에 있어서, 상기 방법은
    - 각각의 스레드를 하나이상의 레지스터에 관련시키고, 이때 상기 레지스터는 하나이상의 명령어를 발생시키도록 다음 스레드를 식별하는 값을 저장하며,
    - 상기 명령어 발생 시퀀스를 제어하기 위해 상기 저장된 값을 이용하는
    단계들을 포함하는 것을 특징으로 하는 명령어 발생 시퀀스 제어 방법.
  2. 제 1 항에 있어서, 이때 상기 관련시키는 단계는 상기 멀티스레디드 프로세서의 다수의 하드웨어 스레드 유닛 각각을 상기 하드웨어 스레드 유닛에 의해 업데이트가능한 상응하는 로컬 레지스터와 관련시키는 단계를 추가로 포함하고,
    상기 하드웨어 스레드 유닛 중 주어진 하나에 대한 로컬 레지스터는 상기 주어진 하드웨어 스레드 유닛이 하나이상의 명령어를 발생한 후 하나이상의 명령어를 발생하도록 다음 스레드를 식별하는 값을 저장하는 것을 특징으로 하는 명령어 발생 시퀀스 제어 방법.
  3. 제 1 항에 있어서, 이때 상기 관련시키는 단계는 상기 다수의 레지스터를 상기 다수의 하드웨어 스레드 유닛 각각에 관련시키는 단계를 추가로 포함하고,
    상기 다수의 레지스터는 상기 각각의 하드웨어 스레드 유닛에 대하여 스레드 식별기 레지스터 및 다음 스레드 식별기 레지스터를 포함하며, 이때 상기 스레드 식별기 레지스터는 상응하는 하드웨어 스레드 유닛의 스레드 식별기를 저장하고, 상기 다음 스레드 식별기 레지스터는 하나이상의 명령어를 발생시키도록 상기 하드웨어 스레드 유닛 중 다음 유닛을 지정하는 다음 스레드 식별기를 저장하는
    것을 특징으로 하는 명령어 발생 시퀀스 제어 방법.
  4. 제 1 항에 있어서, 이때 상기 관련시키는 단계는 상기 각각의 스레드를 상기 각각의 스레드에 액세스 가능한 하나이상의 전체 레지스터와 관련시키는 단계를 추가로 포함하고,
    상기 전체 레지스터의 콘텐츠는 상기 스레드 중 주어진 하나에 의하여 명령어가 발생된 후, 상기 명령어 발생 시퀀스에 따라 하나이상의 명령어를 발생하도록 상기 스레드 중 또 다른 하나를 식별하는
    것을 특징으로 하는 명령어 발생 시퀀스 제어 방법.
  5. 제 1 항에 있어서, 이때 상기 관련시키는 단계 및 상기 이용 단계는 스레드 스톨링에 이르는 차단 상태를 도입하지 않으면서, 상기 명령어 발생 시퀀스가 임의의 교차하는 짝수-홀수 스레드 시퀀스에 상응하도록 구성되는
    것을 특징으로 하는 명령어 발생 시퀀스 제어 방법.
  6. 제 1 항에 있어서, 이때 상기 하나이상의 레지스터는 2n 개의 스레드 중에서 주어진 하나의 유일한 식별기를 저장하기에 적합한 n-비트 레지스터를 포함하는 것을 특징으로 하는 명령어 발생 시퀀스 제어 방법.
  7. 제 1 항에 있어서, 이때 상기 하나이상의 레지스터는 상기 멀티스레디드 프로세서의 특정 스레드에 상응하는 스레드 캐시와 관련되는 것을 특징으로 하는 명령어 발생 시퀀스 제어 방법.
  8. 제 1 항에 있어서, 이때 상기 하나이상의 레지스터에 저장된 값은 토큰 트리거 방식 스레딩과 관련된 토큰을 포함하는 것을 특징으로 하는 명령어 발생 시퀀스 제어 방법.
  9. 제 8 항에 있어서, 이때 상기 토큰 트리거 방식 스레딩은 현재의 프로세서 클럭 사이클과 관련하여, 후속 클럭 사이클에 대한 명령어를 발생시키도록 상기 다수의 스레드 중 특별한 하나를 식별하기 위해 토큰을 이용하는 것을 특징으로 하는 명령어 발생 시퀀스 제어 방법.
  10. 제 8 항에 있어서, 이때 상기 토큰 트리거 방식 스레딩은 서로 다른 토큰을 상기 멀티스레디드 프로세서의 다수의 스레드 각각에 할당하는 것을 특징으로 하는 명령어 발생 시퀀스 제어 방법.
  11. 제 1 항에 있어서, 이때 상기 멀티스레디드 프로세서는 파이프라인 방식 명령어 프로세싱에 대하여 구성되는 것을 특징으로 하는 명령어 발생 시퀀스 제어 방법.
  12. 제 11 항에 있어서, 이때 상기 멀티스레디드 프로세서는 각각의 스레드가 프로세서 클럭 사이클 당 단일 명령어를 발생시키는 명령어 파이프라인을 이용하는 것을 특징으로 하는 명령어 발생 시퀀스 제어 방법.
  13. 제 11 항에 있어서, 이때 상기 멀티스레디드 프로세서는 각각의 스레드가 프로세서 클럭 사이클 당 다중 명령어를 발생시키는 명령어 파이프라인을 이용하는 것을 특징으로 하는 명령어 발생 시퀀스 제어 방법.
  14. 제 13 항에 있어서, 이때 상기 다수의 스레드 각각은 상기 다수의 스레드를 스톨링하지 않고서 상응하는 다수의 프로세서 클럭 사이클 각각에서 로드 명령어 및 벡터 곱셈 명령어 둘다를 발생시키는 것을 특징으로 하는 명령어 발생 시퀀스 제어 방법.
  15. 다수의 하드웨어 스레드 유닛을 포함하는 멀티스레디드 프로세서에 있어서, 상기 멀티스레디드 프로세서는 상기 멀티스레디드 프로세서의 다수의 상응하는 스레드에 대한 명령어 발생 시퀀스를 제어하도록 구성되고, 이때 상기 프로세서 내에는 하나이상의 명령어를 발생시키기 위하여 다음 스레드를 식별하는 값을 저장하도록 상기 각각의 스레드와 관련된 하나이상의 레지스터가 있으며, 상기 저장된 값은 상기 프로세서의 명령어 발생 시퀀스를 제어하도록 이용되는 것을 특징으로 하는 것을 특징으로 하는 멀티스레디드 프로세서.
  16. 기계-판독형 저장 매체를 포함하는 제조물에 있어서, 상기 기계-판독형 저장 매체는 멀티스레디드 프로세서의 다수의 스레드에 대한 명령어 발생 시퀀스를 제어하기 위해 상기 기계-판독형 저장 매체 상에 프로그램 코드를 구현하고, 이때 상기 프로그램 코드는 상기 프로세서에 의해 실행시
    - 상기 각각의 스레드를 하나이상의 명령어를 발생시키기 위해 다음 스레드를 식별하는 값을 저장하는 하나이상의 레지스터와 관련시키고, 그리고
    - 상기 명령어 발생 시퀀스를 제어하기 위해 상기 저장된 값을 이용하는
    단계들을 구현하는 것을 특징으로 하는 기계-판독형 저장 매체를 포함하는 제조물.
KR1020057006030A 2002-10-11 2003-10-09 토큰 트리거 방식 멀티스레딩을 위한 방법 및 장치 KR100991912B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/269,245 2002-10-11
US10/269,245 US6842848B2 (en) 2002-10-11 2002-10-11 Method and apparatus for token triggered multithreading

Publications (2)

Publication Number Publication Date
KR20050073484A true KR20050073484A (ko) 2005-07-13
KR100991912B1 KR100991912B1 (ko) 2010-11-04

Family

ID=32068734

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020057006030A KR100991912B1 (ko) 2002-10-11 2003-10-09 토큰 트리거 방식 멀티스레딩을 위한 방법 및 장치

Country Status (7)

Country Link
US (1) US6842848B2 (ko)
EP (2) EP2650778B1 (ko)
JP (1) JP2006502505A (ko)
KR (1) KR100991912B1 (ko)
CN (1) CN100428282C (ko)
AU (1) AU2003282487A1 (ko)
WO (1) WO2004034340A2 (ko)

Families Citing this family (48)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2290525A3 (en) * 2003-05-09 2011-04-20 Aspen Acquisition Corporation Processor reduction unit for accumulation of multiple operands with or without saturation
US8074051B2 (en) * 2004-04-07 2011-12-06 Aspen Acquisition Corporation Multithreaded processor with multiple concurrent pipelines per thread
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
TW200625097A (en) * 2004-11-17 2006-07-16 Sandbridge Technologies Inc Data file storing multiple date types with controlled data access
US20070223599A1 (en) * 2005-07-25 2007-09-27 Sysair, Inc., A Delaware Corporation Cellular PC modem architecture and method of operation
US20070156928A1 (en) * 2005-12-30 2007-07-05 Makaram Raghunandan Token passing scheme for multithreaded multiprocessor system
WO2008070250A2 (en) * 2006-09-26 2008-06-12 Sandbridge Technologies Inc. Software implementation of matrix inversion in a wireless communication system
US9110726B2 (en) * 2006-11-10 2015-08-18 Qualcomm Incorporated Method and system for parallelization of pipelined computations
WO2008155799A1 (ja) * 2007-06-20 2008-12-24 Fujitsu Limited 命令実行制御装置及び命令実行制御方法
US20100241834A1 (en) * 2007-11-05 2010-09-23 Sandbridge Technologies, Inc. Method of encoding using instruction field overloading
EP2232367A4 (en) * 2007-12-12 2011-03-09 Univ Washington DETERMINIST MULTIPLE PROCESSING
EP2250539A1 (en) * 2008-01-30 2010-11-17 Sandbridge Technologies, Inc. Method for enabling multi-processor synchronization
WO2009105332A1 (en) * 2008-02-18 2009-08-27 Sandbridge Technologies, Inc. Method to accelerate null-terminated string operations
WO2009114691A2 (en) * 2008-03-13 2009-09-17 Sandbridge Technologies, Inc. Method for achieving power savings by disabling a valid array
KR20110050665A (ko) 2008-08-06 2011-05-16 아스펜 액퀴지션 코포레이션 정지가능하고 재시작가능한 dma 엔진
CN102495726B (zh) * 2011-11-15 2015-05-20 无锡德思普科技有限公司 机会多线程方法及处理器
CN107545066B (zh) * 2011-12-08 2021-01-15 甲骨文国际公司 用于在易失性存储器内保持关系型数据的列向量的技术
US9342314B2 (en) 2011-12-08 2016-05-17 Oracle International Corporation Efficient hardware instructions for single instruction multiple data processors
US10534606B2 (en) 2011-12-08 2020-01-14 Oracle International Corporation Run-length encoding decompression
US9792117B2 (en) 2011-12-08 2017-10-17 Oracle International Corporation Loading values from a value vector into subregisters of a single instruction multiple data register
US9697174B2 (en) 2011-12-08 2017-07-04 Oracle International Corporation Efficient hardware instructions for processing bit vectors for single instruction multiple data processors
GB2499277B (en) * 2012-08-30 2014-04-02 Imagination Tech Ltd Global register protection in a multi-threaded processor
US9292569B2 (en) 2012-10-02 2016-03-22 Oracle International Corporation Semi-join acceleration
CN103150149B (zh) * 2013-03-26 2015-11-25 华为技术有限公司 处理数据库重做数据的方法和装置
US10318305B2 (en) 2013-09-06 2019-06-11 Huawei Technologies Co., Ltd. System and method for an asynchronous processor with pepelined arithmetic and logic unit
US11113054B2 (en) 2013-09-10 2021-09-07 Oracle International Corporation Efficient hardware instructions for single instruction multiple data processors: fast fixed-length value compression
US9378232B2 (en) 2013-09-21 2016-06-28 Oracle International Corporation Framework for numa affinitized parallel query on in-memory objects within the RDBMS
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
US9766895B2 (en) * 2014-02-06 2017-09-19 Optimum Semiconductor Technologies, Inc. Opportunity multithreading in a multithreaded processor with instruction chaining capability
WO2015155894A1 (ja) 2014-04-11 2015-10-15 株式会社Murakumo プロセッサーおよび方法
US10180841B2 (en) 2014-12-22 2019-01-15 Centipede Semi Ltd. Early termination of segment monitoring in run-time code parallelization
US10296350B2 (en) * 2015-03-31 2019-05-21 Centipede Semi Ltd. Parallelized execution of instruction sequences
US10296346B2 (en) * 2015-03-31 2019-05-21 Centipede Semi Ltd. Parallelized execution of instruction sequences based on pre-monitoring
US10025822B2 (en) 2015-05-29 2018-07-17 Oracle International Corporation Optimizing execution plans for in-memory-aware joins
US9990308B2 (en) 2015-08-31 2018-06-05 Oracle International Corporation Selective data compression for in-memory databases
US10055358B2 (en) 2016-03-18 2018-08-21 Oracle International Corporation Run length encoding aware direct memory access filtering engine for scratchpad enabled multicore processors
US10061714B2 (en) 2016-03-18 2018-08-28 Oracle International Corporation Tuple encoding aware direct memory access engine for scratchpad enabled multicore processors
US10402425B2 (en) 2016-03-18 2019-09-03 Oracle International Corporation Tuple encoding aware direct memory access engine for scratchpad enabled multi-core processors
US10061832B2 (en) 2016-11-28 2018-08-28 Oracle International Corporation Database tuple-encoding-aware data partitioning in a direct memory access engine
US10599488B2 (en) 2016-06-29 2020-03-24 Oracle International Corporation Multi-purpose events for notification and sequence control in multi-core processor systems
US10380058B2 (en) 2016-09-06 2019-08-13 Oracle International Corporation Processor core to coprocessor interface with FIFO semantics
US10783102B2 (en) 2016-10-11 2020-09-22 Oracle International Corporation Dynamically configurable high performance database-aware hash engine
US10459859B2 (en) 2016-11-28 2019-10-29 Oracle International Corporation Multicast copy ring for database direct memory access filtering engine
US10176114B2 (en) 2016-11-28 2019-01-08 Oracle International Corporation Row identification number generation in database direct memory access engine
US10725947B2 (en) 2016-11-29 2020-07-28 Oracle International Corporation Bit vector gather row count calculation and handling in direct memory access engine
WO2023249637A1 (en) * 2022-06-24 2023-12-28 Zeku, Inc. Apparatus and method to implement a token-based processing scheme for virtual dataplane threads

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5339415A (en) * 1990-06-11 1994-08-16 Cray Research, Inc. Dual level scheduling of processes to multiple parallel regions of a multi-threaded program on a tightly coupled multiprocessor computer system
US5404469A (en) * 1992-02-25 1995-04-04 Industrial Technology Research Institute Multi-threaded microprocessor architecture utilizing static interleaving
US5613114A (en) * 1994-04-15 1997-03-18 Apple Computer, Inc System and method for custom context switching
US6128720A (en) 1994-12-29 2000-10-03 International Business Machines Corporation Distributed processing array with component processors performing customized interpretation of instructions
US5682491A (en) 1994-12-29 1997-10-28 International Business Machines Corporation Selective processing and routing of results among processors controlled by decoding instructions using mask value derived from instruction tag and processor identifier
US5649135A (en) 1995-01-17 1997-07-15 International Business Machines Corporation Parallel processing system and method using surrogate instructions
US5659785A (en) 1995-02-10 1997-08-19 International Business Machines Corporation Array processor communication architecture with broadcast processor instructions
US5742840A (en) * 1995-08-16 1998-04-21 Microunity Systems Engineering, Inc. General purpose, multiple precision parallel operation, programmable media processor
US5933627A (en) * 1996-07-01 1999-08-03 Sun Microsystems Thread switch on blocked load or store using instruction thread field
US5799182A (en) * 1997-01-21 1998-08-25 Ford Motor Company Multiple thread micro-sequencer apparatus and method with a single processor
US6151683A (en) * 1997-03-31 2000-11-21 Sun Microsystems, Inc. Rebuilding computer states remotely
US6298431B1 (en) * 1997-12-31 2001-10-02 Intel Corporation Banked shadowed register file
US6079010A (en) 1998-03-31 2000-06-20 Lucent Technologies Inc. Multiple machine view execution in a computer system
US6317821B1 (en) 1998-05-18 2001-11-13 Lucent Technologies Inc. Virtual single-cycle execution in pipelined processors
US6260189B1 (en) 1998-09-14 2001-07-10 Lucent Technologies Inc. Compiler-controlled dynamic instruction dispatch in pipelined processors
US6256725B1 (en) 1998-12-04 2001-07-03 Agere Systems Guardian Corp. Shared datapath processor utilizing stack-based and register-based storage spaces
US6341338B1 (en) * 1999-02-04 2002-01-22 Sun Microsystems, Inc. Protocol for coordinating the distribution of shared memory
US6269437B1 (en) 1999-03-22 2001-07-31 Agere Systems Guardian Corp. Duplicator interconnection methods and apparatus for reducing port pressure in a clustered processor
US6230251B1 (en) 1999-03-22 2001-05-08 Agere Systems Guardian Corp. File replication methods and apparatus for reducing port pressure in a clustered processor
US6282585B1 (en) 1999-03-22 2001-08-28 Agere Systems Guardian Corp. Cooperative interconnection for reducing port pressure in clustered microprocessors
JP4693326B2 (ja) * 1999-12-22 2011-06-01 ウビコム インコーポレイテッド 組込み型プロセッサにおいてゼロタイムコンテクストスイッチを用いて命令レベルをマルチスレッド化するシステムおよび方法

Also Published As

Publication number Publication date
EP2650778B1 (en) 2017-07-19
KR100991912B1 (ko) 2010-11-04
CN100428282C (zh) 2008-10-22
WO2004034340A2 (en) 2004-04-22
EP2650778A1 (en) 2013-10-16
EP1550089B1 (en) 2016-11-23
AU2003282487A1 (en) 2004-05-04
EP1550089A2 (en) 2005-07-06
JP2006502505A (ja) 2006-01-19
AU2003282487A8 (en) 2004-05-04
CN1711563A (zh) 2005-12-21
US6842848B2 (en) 2005-01-11
WO2004034340A3 (en) 2004-08-26
EP1550089A4 (en) 2007-06-06
US20040073781A1 (en) 2004-04-15

Similar Documents

Publication Publication Date Title
KR100991912B1 (ko) 토큰 트리거 방식 멀티스레딩을 위한 방법 및 장치
JP4187720B2 (ja) マルチスレッド・プロセッサにおけるレジスタ・ファイルのポートを削減するための方法および装置
KR100980536B1 (ko) 멀티스레디드 프로세서에서 스레드-방식 메모리 액세스를위한 방법 및 장치
KR101303119B1 (ko) 쓰레드 당 다중의 동시적 파이프라인을 갖는 멀티쓰레드 프로세서
US5203002A (en) System with a multiport memory and N processing units for concurrently/individually executing 2N-multi-instruction-words at first/second transitions of a single clock cycle
US5513366A (en) Method and system for dynamically reconfiguring a register file in a vector processor
US20090144502A1 (en) Meta-Architecture Defined Programmable Instruction Fetch Functions Supporting Assembled Variable Length Instruction Processors
US20240004666A1 (en) Floating-point supportive pipeline for emulated shared memory architectures

Legal Events

Date Code Title Description
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: 20130927

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20140929

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20150930

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20160929

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20170929

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20180928

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20190924

Year of fee payment: 10