KR100942668B1 - 멀티스레딩된 프로세서 및 이를 포함하는 프로세서 시스템 - Google Patents

멀티스레딩된 프로세서 및 이를 포함하는 프로세서 시스템 Download PDF

Info

Publication number
KR100942668B1
KR100942668B1 KR1020047009704A KR20047009704A KR100942668B1 KR 100942668 B1 KR100942668 B1 KR 100942668B1 KR 1020047009704 A KR1020047009704 A KR 1020047009704A KR 20047009704 A KR20047009704 A KR 20047009704A KR 100942668 B1 KR100942668 B1 KR 100942668B1
Authority
KR
South Korea
Prior art keywords
processor
instruction
vector
multithreaded
unit
Prior art date
Application number
KR1020047009704A
Other languages
English (en)
Other versions
KR20040077860A (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 KR20040077860A publication Critical patent/KR20040077860A/ko
Application granted granted Critical
Publication of KR100942668B1 publication Critical patent/KR100942668B1/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, 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, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3814Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
    • 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/30181Instruction operation extension or modification
    • 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, look ahead
    • G06F9/3802Instruction prefetching
    • 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, 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, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional 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, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline, 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, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent instruction execution, e.g. pipeline, 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)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Mathematical Physics (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

멀티스레딩된 프로세서는 검색된 명령들을 디코딩하여 검색된 명령들의 적어도 서브-세트의 각각에 대해 명령 형태를 결정하기 위한 명령 디코더와, 상기 명령 디코더에 결합되어 정수형 명령들을 처리하기 위한 정수 유닛과, 상기 명령 디코더에 결합되고 벡터형 명령들을 처리하기 위한 벡터 유닛을 포함한다. 감소 유닛은 벡터 유닛과 바람직하게 연관되어 벡터 유닛에서 처리된 병렬 데이터 요소들을 수신한다. 프로세서는 적어도 제어 코드, 디지털 신호 프로세서(DSP) 코드, 자바 코드 및 네트워크 처리 코드를 수행하도록 구성될 수 있고, 그로 인해, 콘버전스 디바이스에서 매우 적당하게 이용될 수 있다. 프로세서는 명령 파이프라이닝과 함께 토큰 트리거링된 스레딩을 이용하도록 바람직하게 구성된다.
명령 파이프라이닝, 토큰 트리거링된 스레딩, 디지털 신호 프로세서(DSP) 코드

Description

멀티스레딩된 프로세서 및 이를 포함하는 프로세서 시스템{Multithreaded processor with efficient processing for convergence device application}
본 발명은 발명의 명칭이 "멀티스레딩된 프로세서를 위한 방법 및 장치(Method and Apparatus for Multithreaded Processor)"인 2001년 12월 20일자 미국 임시 출원 일련번호 제 60/341,289 호의 우선권을 주장하며, 이는 본 명세서에 참고 문헌으로 포함된다.
본 발명은 대리인 문서번호 제 1007-5 호인 발명의 명칭이 "멀티스레딩된 프로세서에서 스레드-기반 메모리 액세스를 위한 방법 및 장치(Method and Apparatus for Thread-Based Memory Access in a Multithreaded Processor)"와, 출원 대리인 문서번호 제 1007-7 호인 발명의 명칭이 "멀티스레딩된 프로세서에서 레지스터 파일 포트 감소를 위한 방법 및 장치(Method and Apparatus for Register File Port Reduction in a Multithreaded Processor)"와, 대리인 문서번호 제 1007-8 호인 발명의 명칭이 "토큰 트리거링된 멀티스레딩을 위한 방법 및 장치(Method and Apparatus for Token Triggered Multithreading)"의 미국 특허 출원들에 기재된 발명에 관한 것으로서, 이들 모두는 본 명세서에 참고 문헌으로 포함된다.
본 발명은 일반적으로 디지털 데이터 프로세서들에 관한 것으로, 특히, 멀 티스레딩된 프로세서들에 관한 것이다.
멀티스레딩된 프로세서들은 다수의 별도 명령 시퀀스들 또는 "스레드들(threads)"의 동시 실행을 지원하는 프로세서들이다. 종래의 스레딩 기술들은 예를 들어, M. J. Flynn의 "컴퓨터 아키텍처: 파이프라인 및 병렬 프로세서 디자인(Pipelined and Parallel Processor Design)"과, 1995넌 보스톤, MA, Jones 및 Bartlett Publishers 및, 1997년 매사추세츠, G.A.Blaauw 및 Frederick P. Brooks, Addison-Wesley, Reading, "컴퓨터 아키텍처: Concepts and Evolution"에 기재되어 있고, 이들은 본 명세서에 참고 문헌으로 포함된다.
현존하는 멀티스레딩된 프로세서들은, 여러 다른 매체를 통해 통신되는 보이스, 데이터, 오디오, 비디오 및, 다른 정보를 처리하도록 구성된 디바이스들을 포함할 수 있는 컨버전스 디바이스들에 이용하기에 일반적으로 최적화되어 있지 않다. 이와 같은 디바이스들은, 신호 처리 동작들과 연관된 디지털 신호 프로세서(DSP) 코드와 자바 또는 다른 객체-지향 프로그래밍 언어로 기록된 고-레벨 프로그램 어플리케이션 코드를 포함하는 코드의 다수의 상이한 형태들의 실행을 통상적으로 필요하게 될 것이다. 이러한 형태의 컨버전스 디바이스의 특정 예는 3GPP 기술 명세들 TS 25.1xx에 기재된 3세대 파트너십 프로젝트(3GPP) 광대역 CDMA와 같은 최근에 개발된 고속 CDMA 통신 시스템의 무선 모바일 유닛이며, 이는 본 명세서에 참고 문헌으로 포함되어 있다.
따라서, 컨버전스 디바이스에 이용하기에 특히 적당한 개선된 멀티스레딩된 프로세서의 필요성이 존재한다.
본 발명은, 예시적인 실시예에서, RISC-기반 제어 코드들, DSP 코드, 자바 코드 및 네트워크 처리 코드를 효과적으로 실행할 수 있고, 그로 인해 3GPP WCDMA 모바일 유닛 또는 다른 컨버전스 디바이스에 이용하기에 특히 적당한 개선된 멀티스레딩된 프로세서를 제공한다.
본 발명의 한 관점에 따라, 멀티스레딩된 프로세서는 검색된 명령들을 디코딩하여 검색된 명령들 각각에 대한 명령 형태를 결정하기 위한 명령 디코더와, 명령 디코더에 결합되고 정수형 명령들을 처리하기 위한 정수 유닛과, 명령 디코더에 결합되고 벡터형 명령들을 처리하기 위한 벡터 유닛을 포함한다. 감소 유닛은 벡터 유닛과 바람직하게 연관되어 벡터 유닛에서 처리된 병렬 데이터 요소들을 수신한다. 감소 유닛은 병렬 데이터 요소들로부터 직렬 출력을 발생한다. 프로세서는 명령 파이프라이닝과 함께 토큰 트리거링된 스레딩을 이용하도록 바람직하게 구성된다.
도 1은 본 발명에 따른 멀티스레딩된 프로세서의 예시적인 실시예의 블록도.
도 2는 도 1의 멀티스레딩된 프로세서를 포함하는 처리 시스템의 하나의 가능한 구현을 설명하는 블록도.
본 발명은 전형적인 멀티스레딩된 프로세서 및 대응하는 처리 시스템과 함께 본 명세서에서 설명할 것이다. 그러나, 본 발명은 예시적인 실시예의 특정 멀티스레딩된 프로세서 및 처리 시스템 구성들의 이용을 필요로 하지 않고, 개선된 프로세서 성능을 제공하는 것이 바람직한 어떤 멀티스레딩된 프로세서 또는 정보 처리 시스템에 이용하기에 보다 일반적으로 적합한 것임을 알 수 있다. 부가적으로, 컨버전스 디바이스들에 이용하는데 특히 적당하다할 지라도, 본 발명의 멀티스레딩된 프로세서는 디바이스들의 다른 형태들에 이용될 수 있다.
아래에 보다 상세히 설명하는 것처럼, 본 발명에 따른 멀티스레딩된 프로세서의 예시적인 실시예에서는 RISC-기반 제어 코드, 디지털 신호 프로세서(DSP) 코드, 자바 코드 및 네트워크 처리 코드를 실행할 수 있다. 프로세서는 단일 명령 다중 데이터(SIMD) 벡터 유닛, 감소 유닛 및, 긴 명령 워드(LIW) 복합 명령 실행을 포함한다.
도 1은 본 발명에 따른 멀티스레딩된 프로세서(102)를 도시한다. 멀티스레딩된 프로세서(102)는 특히 멀티스레딩된 캐시 메모리(110), 멀티스레딩된 데이터 메모리(112), 명령 디코더(116), 레지스터 파일(118) 및, 메모리 관리 유닛(MMU)(120)을 포함한다. 멀티스레딩된 캐시 메모리(110)는 또한 본 명세서에서 멀티스레딩된 캐시라고도 칭한다.
멀티스레딩된 캐시(110)는 다수의 스레드 캐시들(110-1, 110-2,... 110-N)을 포함하는데, 여기서, N은 멀티스레딩된 프로세서(102)에 의해 지원된 스레드들의 수를 일반적으로 나타내고, 본 특정 예에서는 N=4로 주어진다. 물론, 당업자가 쉽게 알 수 있는 것처럼, N의 다른 값들이 사용될 수 있다.
따라서, 각 스레드는 멀티스레딩된 캐시(110)와 연관된 대응하는 스레드 캐시를 가진다. 유사하게, 데이터 메모리(112)는 도시된 바와 같이 데이터 메모리들(112-1, 112-2, ... 112-N)로 표시된 N개의 별개의 데이터 메모리 인스턴스들을 포함한다.
프로세서(102)는, 제목이 "토큰 트리거링된 멀티스레딩을 위한 방법 및 장치(Method and Apparatus for Token Triggered Multithreading)"인 상기 인용된 미국 특허 출원 대리인 문서 번호 제 1007-8호에 개시된 것과 같이, 토큰 트리거된 멀티스레딩(toke triggered multithreading)을 구현할 수 있다. 토큰 트리거된 멀티스레딩은 통상적으로, 프로세서의 복수의 스레드들 각각에 상이한 토큰들을 할당한다. 예를 들면, 토큰 트리거된 스레딩은, 후속 클록 사이클에 대한 명령을 발행하도록 허용될 프로세서의 스레드들 중 특정 하나의 스레드를, 현재의 프로세서 클록 사이클과 관련하여 식별하기 위해 토큰을 이용할 수 있다. 다른 형태들의 스레딩도 또한 또는 대안적으로 사용될 수 있다.
멀티스레딩된 캐시(110) 내의 스레드 캐시들 각각은 하나 이상의 메모리 위치 세트들을 가지는 메모리 어레이를 포함할 수 있다. 소정 스레드 캐시는 연관된 스레드 식별자를 저장하기 위한 스레드 식별자 레지스터를 더 포함할 수 있다.
멀티스레딩된 캐시(110)는 MMU(120)를 통해 프로세서(102)의 외부에 있는 메인 메모리(도시되지 않음)와 인터페이싱한다. MMU(120)는 캐시(110)와 마찬가지로, 프로세서에 의해 지원되는 N개의 스레드들 각각에 대한 별도의 인스턴스를 포함한다. MMU(120)는 메인 메모리로부터의 적절한 명령들이 멀티스레딩된 캐시(110)에 로딩되는 것을 보장한다. 캐시 제어기를 포함하거나 아니면 연관된 MMU(120)은 완전한 연관 맵핑, 직접 맵핑 또는 집합-연관 맵핑(set-associative mapping)과 같은 어드레스 맵핑 기술의 적어도 일부를 구현할 수 있다. 본 발명에 관련하여 사용하기에 적절한 예시적인 집합-연관 맵핑 기술들은, 모두 2002년 6월 4일에 출원되고 본 출원에 공동 양도되었으며 본 명세서에 참조문헌으로서 포함된 미국 특허 출원 일련 번호 제 10/161,774호 및 제 10/161,874호에 개시되어 있다.
또한, 데이터 메모리(112)는 통상적으로 위에서 언급된 외부 메인 메모리에 직접 접속되지만, 이러한 접속은 도면에 명시적으로 도시되지 않았다. 또한 데이터 메모리(112)는 데이터 버퍼(130)와 연관된다.
멀티스레딩된 캐시(110), 데이터 메모리(112), 또는 멀티스레딩된 프로세서와 연관된 다른 메모리들의 스레드 기반 뱅킹(thread-based banking)을 위한 기술들은 제목이 "멀티스레딩된 프로세서에서 스레드-기반 메모리 액세스를 위한 방법 및 장치(Method and Apparatus for Thread-Based Memory Access in a Multithreaded Processor)"인 상기 인용된 미국 특허 출원 대리인 문서 번호 제 1007-5호에 개시되어 있다.
일반적으로, 데이터 메모리(112)가 명령들에 의해 동작되는 데이터를 저장하는 반면, 멀티스레딩된 캐시(110)는 멀티스레딩된 프로세서(102)에 의해 실행되는 명령들을 저장하기 위해 사용된다. 명령들은 명령 디코더에 의해 멀티스레딩된 캐시(110)로부터 페치되어 디코딩된다. 명령 형태들에 의존하여, 명령 디코더(116)는 이하에 기술되는 바와 같이, 소정 명령 또는 연관된 정보를 프로세서 내의 다양한 다른 유닛들에 포워딩할 수 있다.
프로세서(102)는, 본 예에서 제어 레지스터들(CR들; 134), 링크 레지스터들(LR들; 136) 및 카운터 레지스터들(CTR들; 138)을 포함하는 보조 레지스터들의 세트(132)를 더 포함할 수 있다. 이들 보조 레지스터들은 페치(fetch)되는 명령들의 위치를 수정함으로써 프로그램 제어 흐름을 도와준다. 도면에 예시된 바와 같이, 예시적 실시예에서의 스레드들 각각과 연관된 보조 레지스터들(134, 136 및 138) 각각의 한 인스턴스가 존재한다.
프로세서(102) 내의 다른 레지스터들은 브랜치 레지스터(140) 및 프로그램 카운터(PC) 레지스터들(142)을 포함한다. 보조 레지스터들(134, 136 및 138)과 마찬가지로, 프로그램 카운터 레지스터들(142)은 스레드들 각각에 대해 하나의 인스턴스를 포함한다. 브랜치 레지스터(140)는 명령 디코더(116)로부터 명령들을 수신하고, 프로그램 카운터 레지스터들(142)과 함께 입력을 ADD 블록(144)에 제공한다. 요소들(140, 142 및 144)은 프로세서(102)의 브랜치 유닛을 집합적으로 포함한다. 브랜치 유닛은 프로세서에 의해 구현된 명령 파이프라인(instruction pipeline)에서 명령들의 페치를 제어한다.
레지스터 파일(118)은 정수 결과들의 일시적 저장을 제공한다. 명령 디코더(116)로부터 정수 명령 큐(IQ)(150)에 전송된 명령들은 디코딩되고, 적절한 하드웨어 스레드 유닛은 스레드들 각각에 대한 별도의 인스턴스를 포함하는 것으로 도시된 오프셋 유닛(152)의 사용을 통하여 선택된다. 오프셋 유닛(152)은 명확한 비트들을 기록 파일 어드레스들에 삽입하여 독립적 스레드 데이터가 손당되지 않게 한다. 소정 스레드에 대해, 이들 명확한 비트들은 예를 들어, 대응하는 스레드 식별자를 포함할 수 있다.
상기 도면에서 도시된 바와 같이, 레지스터 파일(118)은 입력 레지스터들(RA 및 RB)에 결합되고, 이들의 출력들은 ADD 블록(154)에 결합된다. 입력 레지스터들(RA 및 RB)은 명령 파이프라이닝을 구현하는데 사용된다. ADD 블록(154)의 출력은 데이터 메모리(112)에 결합된다.
레지스터 파일(118), 정수 명령 큐(150), 오프셋 유닛(152), 요소들(RA 및 RB), 및 부가 요소(154)는 본 발명에 따른 전형적인 정수 유닛을 집합적으로 포함한다.
레지스터 파일(118)과 같은 레지스터 파일에 대한 스레드-기반 액세스의 기술들은 명칭이"멀티스레딩된 프로세서에서 레지스터 파일 포트 감소를 위한 방법 및 장치(Method and Apparatus for Register File Port Reduction in a Multithreaded Processor)"이며, 상기 인용된 미국 특허 출원 대리인 번호 제 1007-7 호에 기술되었다.
프로세서(102)에서 실행할 수 있는 명령 형태들은 브랜치, 로드, 스토어, 정수 및 벡터/SIMD 명령 형태들을 포함한다. 주어진 명령이 브랜치, 로드, 스토어, 정수를 지정하지 않는다면, 벡터/SIMD 명령이다. 다른 명령 형태들이 또는 대안적으로 이용될 수 있다. 이러한 정수와 벡터/SIMD 명령 형태들은 각각 정수 및 벡터 형태들로서 본원에 흔히 칭하는 것들의 예들이다.
벡터 IQ(156)은 명령 디코더(116)로부터 포워딩된 벡터/SIMD 명령을 수신한다. 스레드들 각각에 대한 별도의 인스턴스를 포함하는 것으로 도시된 대응하는 오프셋 유닛(158)은 독립적인 스레드 데이터가 손상되지 않았음을 보장하기 위해 적절한 비트들을 삽입하도록 작동한다.
프로세서(102)의 벡터 유닛(160)은 N개의 별개의 병렬 부분들로 분리되고, 유사하게 분할된 벡터 파일(162)을 포함한다. 벡터 파일(162)은 전자가 벡터/SIMD 명령 형태들에 대해 작동하는 것을 제외하면, 레지스터 파일(118)과 실질적으로 동일한 목적을 위해 작동한다.
벡터 유닛(162)은 연관된 벡터 명령 큐(156), 오프셋 유닛(158), 벡터 파일(162) 및 산술 및 저장 요소들을 예시적으로 포함한다.
벡터 유닛(160)의 동작은 다음과 같다. 분수 또는 정수 데이터 형태로서 인코딩된 소정의 벡터/SIMD 데이터 블록은 벡터 파일(162)로부터 판독되고, 구조적으로 볼 수 있는 레지스터(VRABC)에 저장된다. 이로부터, 흐름은 벡터/SIMD 데이터의 병렬 동시 곱셈을 수행하는 MPY 블록들을 통해 진행된다. 이들 결과들은 구조적으로 볼 수 있는 레지스터들(PABC)에 저장된다. 그 후, ADD 유닛들은 부가적인 산술 작동을 수행하여, 그 결과를 누산기(ACC) 레지스터들에 저장한다. 여기로부터, 데이터는 결과들이 감소 유닛(164)을 통해 진행되며, 여기서 병렬로 합산되지만 직렬 시멘틱(semantics)을 생성한다. 직렬 시멘틱은 벡터 유닛(160)에서 병렬로 계산된 4개의 포화된 값들이 직렬로 대신 계산되면 생성되는 것과 대체로 동일한 출력을 제공한다. 또한, 이와 같은 출력은 직렬 출력으로도 칭한다. 결과적으로 감소된 합은 SAT로 표시된 포화 레지스터에 배치된다.
감소 유닛(164)과 벡터 유닛(160)의 다른 부분들은 엔 야다브, 엠, 슐츠와 제이 그로슨어 의 "병렬 포화 분수 계산 유닛" pp172-179 에 기술된 것과 유사한 기술의 이용하여 구현될 것이다.
예시적인 실시예에서 벡터 유닛(160)의 부분으로 도시되었지만. 감소 유닛(164)은 별도의 요소로서 구현될 수 있다.
프로세서(102)는 파이프라인된 명령 처리를 이용하는 것이 바람직하다. 예를 들어, 프로세서(102)는 각각의 스레드가 프로세서 클럭 사이클 당 하나의 명령을 발행하는 명령 파이프라인을 사용할 수 있다. 다른 예로서, 명령 파이프라인은 각각의 스레드가 프로세서 클럭 사이클 당 다수의 명령들을 발생하도록 구성될 수 있다. 보다 구체적으로, 충분한 수의 스레드와 적당한 파이프라이닝에 의해, 프로세서의 각각의 스레드는 어떤 스레드들도 스톨링(stalling)하지 않으면서, 소정의 프로세서 클럭 사이클에서 로드 명령 및 벡터 곱 명령 모두를 발행할 수 있다.
유리하게는, 도1에서 도시된 프로세서(102)는 RISC-기반 제어 코드, DSP 코드, 자바 코드 및 네트워크 처리 코드를 포함하는 다양한 서로 다른 형태의 명령 코드를 효율적으로 실행할 수 있다. 그러므로, 프로세서(102)는 3GPP WCDMA 모바일 유닛과 같은 컨버젼스 디바이스의 구현에 특히 적합하다.
도 2는 프로세서(102)가 구현될 수 있는 예시 처리 시스템(200)을 도시한다. 처리 시스템(200)은 예를 들어, 위에서 언급한 3GPP WCDMA 모바일 유닛과 같은 컨버전스 디바이스의 요소로서 보여질 수 있다.
더욱 구체적으로, 본 실시예에서의 처리 시스템(200)은 보이스, 데이터, 오디오, 비디오 및 다양한 다른 매체를 통해 통신되는 다른 정보의 처리뿐 아니라 WCDMA 및 GSM(Grobal System for Mobile communicaton) 무선 통신을 지원하도록 구성된다.
처리 시스템(200)은 DSP 펌웨어(202)와 마이크로프로세서(204)를 포함한다. DSP 펌웨어(202)는 202-1 및 202-2로 표시된 제 1 및 제 2 인스턴스들을 포함하는 것으로 도시된다. DSP 펌웨어는 연관된 내부 메모리(206)에 결합된다. 마이크로프로세서(204)는 관련된 내부 메모리(208)에 결합된다. 메모리들이 처리 시스템(200)의 내부에 있다는 점에서 그 메모리들(206, 208)을 "내부(internal)"라고도 칭하며, 이 두 메모리들은 공통 메모리의 일부를 나타낼 수 있다. DSP 펌웨어(202) 및 마이크로프로세서(204)는 또한 도시되지 않은 하나 이상의 외부 메모리들과 각각 통신할 수 있다.
DSP 펌웨어(202) 및 마이크로프로세서(204) 둘 다는 도 1에 도시된 바와 같이 구성된 단일 멀티스레딩된 프로세서를 사용하여 구현되는 것이 바람직하다. 다른 구성들, 예를 들어 다중 프로세서들에 기초한 구성들도 사용될 수 있다.
DSP 펌웨어(202)의 제 1 인스턴스(202-1)는 예시적으로 GSM 채널 등화기, GSM 채널 코더, GSM 버스트 빌더, GSM 채널 디코더, GSM 보이스 디코더, GSM 보이스 인코더, GSM 송신기, 암호화/복호화(ciphering/deciphering), 타이밍 제어, WCDMA 송신기, 필터링, 이득 및 주파수 제어, WCDMA 검색기, 레이크 수신기(Rake receiver) 채널 인코더, WCDMA 보이스 디코더, WCDMA 보이스 인코더, 채널 디코더를 포함하는 복수의 처리 요소들을 포함한다. 다른 요소들은 WMA(Windows® Media Audio), 리얼 미디어, JPEG(Joint Photographic Experts Group)/JPEG2000, MP3(Moving Picture Experts Group Layer-3 Audio), AAC(Advanced Audio Coding) 및 MIDI(Musical Instrument Digital Interface)를 포함한다. 이러한 요소들의 동작은 당 분야에 잘 알려진 것이므로 본 명세서에서 보다 상세히 기술하지 않는다.
DSP 펌웨어(202)의 제 2 인스턴스(202-2)는 유사하게 구성될 수 있으며, 또는 처리 시스템(200)에서 다른 통신 기능들을 다른 방법으로 지원하는데 적합한 다른 처리 요소들을 포함할 수 있다.
마이크로프로세서(204)는 예시적으로 도시된 바와 같이 MMI(man-machine interface), MPEG4(Moving Picture Experts Group 4), 프로토콜 스택, SMS/MMS(Short Message Service/Messaging Management system), 및 실시간 운영 체계(OS) 요소들을 포함하는 복수의 처리 요소들을 포함한다.
처리 시스템(200)은 DSP 펌웨어(202), 마이크로프로세서(204) 및 시스템 요소들(212) 사이에 결합된 통신 버스(210)를 더 포함한다. 유사하게, 통신 버스(214)는 DSP 펌웨어(202) 및 시스템 요소들(216)간에 결합된다.
시스템 요소들(212)은 디지털 카메라, 비디오 카메라, 범용 직렬 버스(USB), 범용 비동기 수신기/송신기들(UARTS), SCSI 병렬 인터페이스(SPI), 지능 인터페이스 제어기(I2C), 범용 I/O(GPIO), 보안 식별 모듈/범용 가입자 식별 모듈(SIM/USIM), 외부 메모리 I/O, 키패드, LCD, 인터럽트 제어기, 및 직접 메모리 액세스(DMA) 제어기를 포함한다.
시스템 요소들(216)은 수신기 I/O, 송신기 I/O, 및 블루투스 I/O를 포함한다.
도면에 도시된 다른 시스템 요소들은 입력/출력(I/O)(218), 시스템 클럭 및 제어(220), 및 전원 관리(222)를 포함한다.
시스템 요소들(212, 216, 218, 220 및 222)의 동작은 당 분야에서 잘 알려진 것이므로 이러한 요소들은 더 이상 설명되지 않는다.
위에서 언급된 바와 같이, DSP 펌웨어(202) 및 마이크로프로세서(204)에 연관된 기능들은 모두 멀티스레딩된 프로세서(102)와 같은 단일 멀티스레딩된 프로세서 상에서 실행될 수 있다. 멀티스레딩된 프로세서(102)는 따라서 DSP 펌웨어(202) 및 마이크로프로세서(204)의 처리 요소들에 연관된 코드뿐만 아니라 시스템 요소들(212, 216, 218, 220 및 222)에 연관된 코드를 실행하기 위해 사용될 수 있다.
처리 시스템(200)의 마이크로프로세서(204)는 고레벨 어플리케이션들과 연관된 코드를 실행시키기 위해 사용될 수 있다.
DSP 펌웨어(202)와 연관된 처리 요소들은 소프트웨어 컴파일 사용에 구현될 수 있다. 유익하게, 소프트웨어 컴파일은 고레벨 프로그래밍 언어들의 효율적인 번역을 가능하게 한다.
본 발명은 도 1 및 도 2에 각각 도시된 특정 멀티스레딩된 프로세서 및 처리 시스템 구조들을 요구하지 않는다는 것이 강조되어야 한다. 앞서 언급된 바와 같이, 본 발명은 다양한 범주의 다른 멀티스레딩된 프로세서 및 처리 시스템 구조들에서 구현될 수 있다.
또한, 도 1 및 도 2에 도시된 특정 장치들은 설명의 명확성을 위해 단순화되었으며, 명확하게 도시되지 않은 부가적인 또는 대안적인 요소들이 포함될 수 있다는 것이 인식된다.
본 발명의 위에서 설명된 실시예들은 따라서 단지 도시하는 것으로 의도되며, 첨부된 청구항들의 범주 내의 다양한 대안의 실시예들이 당업자에 의해 명백하게 될 것이다.

Claims (20)

  1. 멀티스레딩된 프로세서(multithreaded processor)에 있어서,
    검색된 명령들을 디코딩하여 상기 검색된 명령들의 적어도 서브세트의 각각에 대한 명령 형태를 결정하기 위한 명령 디코더;
    상기 명령 디코더에 결합되고 상기 명령 디코더로부터 수신된 정수형 명령들을 처리하기 위한 정수 유닛;
    상기 명령 디코더에 결합되고 상기 명령 디코더로부터 수신된 벡터형 명령들을 처리하기 위한 벡터 유닛; 및
    상기 벡터 유닛과 연관되고 상기 벡터 유닛에서 처리된 병렬 데이터 요소들을 수신하며, 상기 병렬 데이터 요소들로부터 직렬 출력을 발생하는 감소 유닛을 포함하는, 멀티스레딩된 프로세서.
  2. 삭제
  3. 제 1 항에 있어서, 상기 명령들은 상기 멀티스레딩된 프로세서의 멀티스레딩된 캐시 메모리로부터 상기 명령 디코더에 의해 검색되고, 상기 멀티스레딩된 캐시 메모리는 상기 프로세서의 복수의 스레드들 각각에 대한 스레드 캐시를 포함하는, 멀티스레딩된 프로세서.
  4. 제 1 항에 있어서, 상기 정수 유닛은 상기 명령 디코더의 출력에 결합된 입력을 갖는 정수 명령 큐와, 상기 정수 명령 큐의 출력에 결합된 입력을 갖는 레지스터 파일과, 상기 레지스터 파일의 입력에 결합된 출력을 갖는 오프셋 유닛과, 상기 레지스터 파일의 출력에 결합된 적어도 하나의 입력을 갖는 부가 요소를 더 포함하는, 멀티스레딩된 프로세서.
  5. 제 4 항에 있어서, 상기 오프셋 유닛은 상기 프로세서에 의해 지원된 복수의 스레드들의 각각에 대한 개별 인스턴스(separate instance)를 포함하는, 멀티스레딩된 프로세서.
  6. 제 1 항에 있어서, 상기 벡터 유닛은 상기 명령 디코더의 출력에 결합된 입력을 갖는 벡터 명령 큐와, 상기 벡터 명령 큐의 출력에 결합된 입력을 갖는 벡터 파일과, 상기 벡터 파일의 입력에 결합된 출력을 갖는 오프셋 유닛과, 상기 벡터 파일의 출력에 결합된 입력을 갖는 적어도 하나의 산술 요소를 더 포함하는, 멀티스레딩된 프로세서.
  7. 제 6 항에 있어서, 상기 오프셋 유닛은 상기 프로세서에 의해 지원된 복수의 스레드들의 각각에 대한 개별 인스턴스를 포함하는, 멀티스레딩된 프로세서.
  8. 제 1 항에 있어서, 상기 프로세서는 적어도 브랜치, 로드, 스토어(store), 정수 및 벡터 명령 형태들을 지원하도록 구성된, 멀티스레딩된 프로세서.
  9. 제 8 항에 있어서, 상기 벡터 명령 형태는 단일 명령 다중 데이터 명령 형태를 포함하는, 멀티스레딩된 프로세서.
  10. 제 1 항에 있어서, 상기 벡터 유닛은 복수의 병렬 브랜치들을 포함하고, 상기 병렬 브랜치들 각각은 상기 프로세서의 특정 스레드에 대응하는, 멀티스레딩된 프로세서.
  11. 제 10 항에 있어서, 상기 병렬 브랜치들 각각은 벡터 파일의 일부, 승산기, 가산기 및 누산기의 직렬 조합을 포함하는, 멀티스레딩된 프로세서.
  12. 제 1 항에 있어서, 상기 프로세서는 적어도 제어 코드, 디지털 신호 프로세서(DSP) 코드, 자바 코드 및 네트워크 처리 코드를 실행하도록 구성된, 멀티스레딩된 프로세서.
  13. 제 1 항에 있어서, 상기 프로세서는 토큰 트리거링된 스레딩(token triggered threading)을 이용하도록 구성된, 멀티스레딩된 프로세서.
  14. 멀티스레딩된 프로세서에 있어서,
    검색된 명령들을 디코딩하여 상기 검색된 명령들의 적어도 서브-세트의 각각에 대한 명령 형태를 결정하기 위한 명령 디코더;
    상기 명령 디코더에 결합되고 상기 명령 디코더로부터 수신된 정수형 명령들을 처리하기 위한 정수 유닛; 및
    상기 명령 디코더에 결합되고 상기 명령 디코더로부터 수신된 벡터형 명령들을 처리하기 위한 벡터 유닛을 포함하고,
    상기 프로세서는 토큰 트리거링된 스레딩을 이용하도록 구성되고,
    상기 토큰 트리거링된 스레딩은 후속 클럭 사이클에 대한 명령을 발행하도록 허용하게 될 상기 프로세서의 복수의 스레드들 중 특정 하나를, 현재의 프로세서 클럭 사이클과 관련하여 식별하기 위해 토큰을 이용하는, 멀티스레딩된 프로세서.
  15. 제 13 항에 있어서, 상기 토큰 트리거링된 스레딩은 상기 프로세서의 복수의 스레드들 각각에 상이한 토큰들을 할당하는, 멀티스레딩된 프로세서.
  16. 제 1 항에 있어서, 상기 프로세서는 파이프라인된 명령 처리(pipelined instruction processing)를 위해 구성된, 멀티스레딩된 프로세서.
  17. 제 16 항에 있어서, 상기 프로세서는 각각의 스레드가 프로세서 클럭 사이클당 하나의 명령을 발행하는 명령 파이프라인을 이용하는, 멀티스레딩된 프로세서.
  18. 제 16 항에 있어서, 상기 프로세서는 각각의 스레드가 프로세서 클럭 사이클 당 다수의 명령들을 발행하는 명령 파이프라인을 이용하는, 멀티스레딩된 프로세서.
  19. 제 18 항에 있어서, 상기 프로세서의 복수의 스레드들 각각은 상기 복수의 스레드들 중 어느 하나도 스톨링(stalling)하지 않으면서, 복수의 프로세서 클럭 사이클들 각각에서 로드 명령 및 벡터 곱 명령 모두를 발행하는, 멀티스레딩된 프로세서.
  20. 프로세서 시스템에 있어서,
    멀티스레딩된 프로세서; 및
    상기 멀티스레딩된 프로세서와 연관된 메모리를 포함하고,
    상기 멀티스레딩된 프로세서는,
    검색된 명령들을 디코딩하여 상기 검색된 명령들의 적어도 서브세트의 각각에 대한 명령 형태를 결정하기 위한 명령 디코더;
    상기 명령 디코더에 결합되고 상기 명령 디코더로부터 수신된 정수형 명령들을 처리하기 위한 정수 유닛;
    상기 명령 디코더에 결합되고 상기 명령 디코더로부터 수신된 벡터형 명령들을 처리하기 위한 벡터 유닛; 및
    상기 벡터 유닛과 연관되고 상기 벡터 유닛에서 처리된 병렬 데이터 요소들을 수신하며, 상기 병렬 데이터 요소들로부터 직렬 출력을 발생하는 감소 유닛을 포함하는, 프로세서 시스템.
KR1020047009704A 2001-12-20 2002-12-11 멀티스레딩된 프로세서 및 이를 포함하는 프로세서 시스템 KR100942668B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US34128901P 2001-12-20 2001-12-20
US60/341,289 2001-12-20
US10/269,372 US6968445B2 (en) 2001-12-20 2002-10-11 Multithreaded processor with efficient processing for convergence device applications
US10/269,372 2002-10-11
PCT/US2002/039667 WO2003054714A1 (en) 2001-12-20 2002-12-11 Multithreaded processor with efficient processing for convergence device applications

Publications (2)

Publication Number Publication Date
KR20040077860A KR20040077860A (ko) 2004-09-07
KR100942668B1 true KR100942668B1 (ko) 2010-02-17

Family

ID=26953660

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020047009704A KR100942668B1 (ko) 2001-12-20 2002-12-11 멀티스레딩된 프로세서 및 이를 포함하는 프로세서 시스템

Country Status (6)

Country Link
US (1) US6968445B2 (ko)
EP (4) EP1468367A4 (ko)
JP (1) JP2005514678A (ko)
KR (1) KR100942668B1 (ko)
AU (1) AU2002364154A1 (ko)
WO (1) WO2003054714A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101279343B1 (ko) 2005-09-13 2013-07-04 프리스케일 세미컨덕터, 인크. 멀티-스레딩된 프로세서 구조

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE10206830B4 (de) * 2002-02-18 2004-10-14 Systemonic Ag Verfahren und Anordnung zur Zusammenführung von Daten aus parallelen Datenpfaden
US7360220B2 (en) * 2002-10-31 2008-04-15 Intel Corporation Methods and apparatus for multi-threading using differently coded software segments to perform an algorithm
KR101005718B1 (ko) 2003-05-09 2011-01-10 샌드브리지 테크놀로지스, 인코포레이티드 포화와 함께 또는 포화 없이 다중 오퍼랜드들의 누산을 위한 프로세서 감소 유닛
TW200518070A (en) 2003-10-10 2005-06-01 Matsushita Electric Ind Co Ltd Recording medium, reproduction device, program, and reproduction method
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
US7349938B2 (en) * 2004-03-05 2008-03-25 Sandbridge Technologies, Inc. Arithmetic circuit with balanced logic levels for low-power operation
US20050243059A1 (en) * 2004-03-16 2005-11-03 Morris Martin G High-reliability computer interface for wireless input devices
US7475222B2 (en) * 2004-04-07 2009-01-06 Sandbridge Technologies, Inc. Multi-threaded processor having compound instruction and operation formats
US8074051B2 (en) * 2004-04-07 2011-12-06 Aspen Acquisition Corporation Multithreaded processor with multiple concurrent pipelines per thread
US7797363B2 (en) * 2004-04-07 2010-09-14 Sandbridge Technologies, Inc. Processor having parallel vector multiply and reduce operations with sequential semantics
US7302554B2 (en) * 2004-04-22 2007-11-27 Sony Computer Entertainment Inc. Methods and apparatus for multi-processor pipeline parallelism
US7672409B2 (en) * 2004-07-23 2010-03-02 Sandbridge Technologies, Inc. Base station software for multi-user detection uplinks and downlinks and method thereof
TW200625097A (en) * 2004-11-17 2006-07-16 Sandbridge Technologies Inc Data file storing multiple date types with controlled data access
GB2437836B (en) * 2005-02-25 2009-01-14 Clearspeed Technology Plc Microprocessor architectures
US8024549B2 (en) * 2005-03-04 2011-09-20 Mtekvision Co., Ltd. Two-dimensional processor array of processing elements
DE102005030055B4 (de) 2005-06-27 2007-04-12 Webasto Ag Fahrzeugdach mit einem oberhalb des Daches verschiebbaren Dachteil
US7631171B2 (en) * 2005-12-19 2009-12-08 Sun Microsystems, Inc. Method and apparatus for supporting vector operations on a multi-threaded microprocessor
JP2009523292A (ja) * 2006-01-10 2009-06-18 ブライトスケール インコーポレイテッド 並列処理システムにおけるマルチメディア・データ処理をスケジューリングするための方法及び装置
EP1858261A1 (de) * 2006-05-16 2007-11-21 Ascom (Schweiz) AG Echtzeitübertragung von Videodaten
WO2008027567A2 (en) * 2006-09-01 2008-03-06 Brightscale, Inc. Integral parallel machine
US8819099B2 (en) * 2006-09-26 2014-08-26 Qualcomm Incorporated 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
CN100465941C (zh) * 2007-10-30 2009-03-04 中国传媒大学 一种基于dsp的并行计算装置及系统
EP2210171A1 (en) * 2007-11-05 2010-07-28 Sandbridge Technologies, Inc. Method of encoding register instruction fields
EP2250539A1 (en) * 2008-01-30 2010-11-17 Sandbridge Technologies, Inc. Method for enabling multi-processor synchronization
KR20100133964A (ko) * 2008-03-13 2010-12-22 아스펜 액퀴지션 코포레이션 유효 어레이를 비활성화함으로써 전력을 절약하기 위한 방법
US20090276448A1 (en) * 2008-04-30 2009-11-05 International Business Machines Corporation Parallel transformation of files
JP2011530744A (ja) 2008-08-06 2011-12-22 アスペン・アクイジション・コーポレーション 停止可能および再始動可能dmaエンジン
JP6020091B2 (ja) 2012-11-27 2016-11-02 富士通株式会社 演算処理装置の制御プログラム、演算処理装置の制御方法および演算処理装置
US9870340B2 (en) 2015-03-30 2018-01-16 International Business Machines Corporation Multithreading in vector processors
CN114528022A (zh) * 2015-04-24 2022-05-24 优创半导体科技有限公司 实现虚拟地址的预转换的计算机处理器
US10891991B2 (en) * 2018-11-26 2021-01-12 Gsi Technology Inc. Massively parallel, associative multiplier accumulator

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6205519B1 (en) * 1998-05-27 2001-03-20 Hewlett Packard Company Cache management for a multi-threaded processor
US6292822B1 (en) * 1998-05-13 2001-09-18 Microsoft Corporation Dynamic load balancing among processors in a parallel computer
US6298438B1 (en) * 1996-12-02 2001-10-02 Advanced Micro Devices, Inc. System and method for conditional moving an operand from a source register to destination register
US6314511B2 (en) * 1997-04-03 2001-11-06 University Of Washington Mechanism for freeing registers on processors that perform dynamic out-of-order execution of instructions using renaming registers

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69131228T2 (de) * 1990-08-23 1999-09-23 Cray Research Inc Doppelebenenablauffolgeplanung von prozessen
JPH05204656A (ja) * 1991-11-30 1993-08-13 Toshiba Corp スレッド固有データ保持方法
US5875464A (en) * 1991-12-10 1999-02-23 International Business Machines Corporation Computer system with private and shared partitions in cache
US5444853A (en) * 1992-03-31 1995-08-22 Seiko Epson Corporation System and method for transferring data between a plurality of virtual FIFO's and a peripheral via a hardware FIFO and selectively updating control information associated with the virtual FIFO's
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
US5822560A (en) * 1996-05-23 1998-10-13 Advanced Micro Devices, Inc. Apparatus for efficient instruction execution via variable issue and variable control vectors per issue
US5933627A (en) * 1996-07-01 1999-08-03 Sun Microsystems Thread switch on blocked load or store using instruction thread field
US5778243A (en) * 1996-07-03 1998-07-07 International Business Machines Corporation Multi-threaded cell for a memory
US5974538A (en) * 1997-02-21 1999-10-26 Wilmot, Ii; Richard Byron Method and apparatus for annotating operands in a computer system with source instruction identifiers
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
US6282585B1 (en) * 1999-03-22 2001-08-28 Agere Systems Guardian Corp. Cooperative interconnection for reducing port pressure in clustered microprocessors
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
GB2394815B (en) * 1999-04-09 2004-08-25 Clearspeed Technology Ltd Parallel data processing systems
US6351808B1 (en) * 1999-05-11 2002-02-26 Sun Microsystems, Inc. Vertically and horizontally threaded processor with multidimensional storage for storing thread data
US6449719B1 (en) * 1999-11-09 2002-09-10 Widevine Technologies, Inc. Process and streaming server for encrypting a data stream

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6298438B1 (en) * 1996-12-02 2001-10-02 Advanced Micro Devices, Inc. System and method for conditional moving an operand from a source register to destination register
US6314511B2 (en) * 1997-04-03 2001-11-06 University Of Washington Mechanism for freeing registers on processors that perform dynamic out-of-order execution of instructions using renaming registers
US6292822B1 (en) * 1998-05-13 2001-09-18 Microsoft Corporation Dynamic load balancing among processors in a parallel computer
US6205519B1 (en) * 1998-05-27 2001-03-20 Hewlett Packard Company Cache management for a multi-threaded processor

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101279343B1 (ko) 2005-09-13 2013-07-04 프리스케일 세미컨덕터, 인크. 멀티-스레딩된 프로세서 구조

Also Published As

Publication number Publication date
EP2261815A2 (en) 2010-12-15
US20030120901A1 (en) 2003-06-26
WO2003054714A1 (en) 2003-07-03
EP2261815A3 (en) 2011-06-15
US6968445B2 (en) 2005-11-22
EP2261814A3 (en) 2011-06-15
AU2002364154A1 (en) 2003-07-09
EP2259190A2 (en) 2010-12-08
EP2259190A3 (en) 2011-06-15
EP1468367A1 (en) 2004-10-20
KR20040077860A (ko) 2004-09-07
EP1468367A4 (en) 2008-02-13
JP2005514678A (ja) 2005-05-19
EP2261814A2 (en) 2010-12-15

Similar Documents

Publication Publication Date Title
KR100942668B1 (ko) 멀티스레딩된 프로세서 및 이를 포함하는 프로세서 시스템
US6418527B1 (en) Data processor instruction system for grouping instructions with or without a common prefix and data processing system that uses two or more instruction grouping methods
RU2656730C2 (ru) Процессоры, способы, системы и команды для сложения трех операндов-источников с плавающей запятой
JP4485198B2 (ja) Javaアクセラレータを備えたプロセッサシステム
US8379032B2 (en) System and method of mapping shader variables into physical registers
JP2011209904A (ja) 命令フェッチ装置、および、プロセッサ
US20120284489A1 (en) Methods and Apparatus for Constant Extension in a Processor
US20150227373A1 (en) Stop bits and predication for enhanced instruction stream control
JPH11224195A (ja) マルチプルリターンサイトを実現するための方法及び装置
US7043625B2 (en) Method and apparatus for adding user-defined execution units to a processor using configurable long instruction word (CLIW)
EP2577464B1 (en) System and method to evaluate a data value as an instruction
JP2011209905A (ja) 命令フェッチ装置、プロセッサ、および、プログラムカウンタ加算制御方法
CN111459546B (zh) 一种实现操作数位宽可变的装置及方法
CN112256633A (zh) 一种指令驱动的商用密码专用处理器系统
EP2542963B1 (en) System and method of processing hierarchical very long instruction packets
KR20070118705A (ko) 레지스터 파일에 액세스하기 위해 프리디케이트 값을이용하는 시스템 및 방법
US8583897B2 (en) Register file with circuitry for setting register entries to a predetermined value
CN100359506C (zh) 能够高效处理汇聚设备应用的多线程处理器
US9021238B2 (en) System for accessing a register file using an address retrieved from the register file
JP2011209903A (ja) 命令フェッチ装置、プロセッサ、プログラム変換装置、および、プログラム変換方法
CN117055959A (zh) 一种基于环形队列的可重构取指系统
JP4418509B2 (ja) Javaアクセラレータを備えたプロセッサシステム
JPH05250156A (ja) Riscプロセッサ
JP2011209902A (ja) 命令フェッチ装置、命令パケット生成装置、プロセッサ、および、命令フェッチ方法

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: 20100402

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20140129

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20150129

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20151230

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20161229

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20171228

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20190107

Year of fee payment: 10