KR20110019751A - 분기 예측에 이용하기 위한 다중-모드 레지스터 파일 - Google Patents

분기 예측에 이용하기 위한 다중-모드 레지스터 파일 Download PDF

Info

Publication number
KR20110019751A
KR20110019751A KR1020107028749A KR20107028749A KR20110019751A KR 20110019751 A KR20110019751 A KR 20110019751A KR 1020107028749 A KR1020107028749 A KR 1020107028749A KR 20107028749 A KR20107028749 A KR 20107028749A KR 20110019751 A KR20110019751 A KR 20110019751A
Authority
KR
South Korea
Prior art keywords
mode
register file
branch
mode register
register
Prior art date
Application number
KR1020107028749A
Other languages
English (en)
Other versions
KR101302611B1 (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 KR20110019751A publication Critical patent/KR20110019751A/ko
Application granted granted Critical
Publication of KR101302611B1 publication Critical patent/KR101302611B1/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
    • 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
    • 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/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • 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/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • G06F9/3806Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
    • 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/3842Speculative instruction execution
    • G06F9/3844Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables

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

Abstract

멀티-스레드 시스템의 각 스레드에 대한 다중-모드 레지스터 파일이 제시된다. 일 실시예에서, 다중-모드 레지스터 파일은 제 1 모드에서 스레드에 대한 피연산자를 포함한다. 다중-모드 레지스터 파일은 제 2 모드에서 피연산자를 대체하는 분기 예측 정보를 더 포함한다.

Description

분기 예측에 이용하기 위한 다중-모드 레지스터 파일{MULTI-MODE REGISTER FILE FOR USE IN BRANCH PREDICTION}
여기서 개시되는 발명의 개념들의 실시예들은 일반적으로 데이터 프로세싱 시스템들의 분야에 관한 것이다. 더 구체적으로는, 여기서 개시되는 발명의 개념들의 실시예들은 다중-모드 레지스터 파일에 관한 것이다.
프로세서 내에서 명령을 프로세싱하기 위해, 프로세싱의 스테이지들은 (명령을 얻기 위한) 페치, (명령을 연산 및 피연산자들, 예를 들어, 피연산자 A 더하기 피연산자 B로 분해하기 위한) 디코딩, 레지스터 파일로부터 피연산자들을 리트리브, 명령을 실행, 결과(예를 들어, 피연산자 A 더하기 피연산자 B의 합)를 후기록하는 것을 포함할 수 있다. 파이프라이닝 이전에는, 프로세서가 다음 명령을 진행하기에 앞서 하나의 명령에 대한 모든 스테이지들을 실행했을 것이다. 계산 속도를 증가시키기 위해, 명령을 프로세싱하는 상이한 스테이지들을 분리하기 위해 프로세서들 내에서 파이프라인들이 구현되었다. 그러므로, 명령을 프로세싱하는 하나의 스테이지는 후속 명령을 프로세싱하는 다른 스테이지가 동일한 클록 사이클 동안 실행되는 동안, 실행될 수 있다. 예를 들어, 제 1 명령이 제 1 클록 사이클 동안 디코딩될 때, 제 2 명령은 제 1 클록 사이클 동안 페치될 수 있다. 그리고나서, 제 2 클록 사이클 동안 제 1 명령을 위해 피연산자들이 레지스터 파일로부터 리트리브되고 있으면, 제 2 클록 사이클 동안 제 2 명령이 디코딩되고, 제 3 명령은 페치될 수 있다. 파이프라이닝을 통한 다수의 명령들의 동시 프로세싱은 프로세서의 계산 속도를 증가시킬 수 있다.
분기(branch) 명령은 프로세서가 프로그램 내의 상이한 위치에서 명령의 계산을 시작하도록 지시할 수 있다. 예를 들어, 분기 명령인 제 5 명령은 프로세서가 제 20 명령의 프로세싱을 시작하도록 건너뛰게 할 수 있다. 파이프라이닝을 이용할지라도, 프로세서는 분기 명령을 실행하기 전에, 후속 명령들(예를 들어, 명령들 6, 7 및 8)의 리트리브 및 디코딩을 시작할 수 있다. 그러므로, 분기가 이루어지면, 프로세싱 중인 명령들은 제거되고 분기되는 새로운 명령이 프로세싱된다. 프로세싱될 필요가 없는 명령들을 프로세싱하는 것은 시간을 소모하고, 그러므로 프로세싱 속도에 영향을 준다. 게다가, 잘못 추측된 명령들은 에너지 또한 낭비한다.
그 결과, 프로세서가 분기 명령 후에 어떠한 명령이 페치되어야 하는지를 예측(즉, 분기가 이루어져야 하는지 여부를 결정)하기 위해 프로세서는 분기 예측 로직을 포함할 수 있다. 분기 예측 로직은 생략된 분기(missed branch)로 인해 프로세서가 명령을 부정확하게 페치하는 횟수를 감소시킨다. 분기 예측 로직은 분기 이력 테이블(branch history table) 및/또는 분기 목표 캐시(branch target cache)를 포함할 수 있다. 분기 이력 테이블은 예측될 각각의 분기 명령에 대한 분기 이력의 몇몇 변화를 저장한다. 분기 이력은 분기 명령의 각각의 실행에 대해 분기가 이루어지는지 여부의 기록이다. 분기 이력 테이블은 n×2 비트 테이블일 수 있으며, 여기서 n 개의 행들 각각은 프로그램의 상이한 분기 명령에 대응하고, n 개의 행들 각각에 대한 2 개의 비트들이 상기 행에 대응하는 분기 명령에 대해 분기할지 여부를 예측하기 위해 프로세서에 의해 이용된다. 더 많은 행들은 더 많은 분기 명령들이 예측될 수 있음을 의미한다. 두 개의 비트들은 1-1과 같을 때 분기를 예측하는 것을 의미할 수 있으며, 0-0은 분기하지 않음을 예측하는 것을 의미할 수 있고, 1-0 또는 0-1은 불확실함을 의미할 수 있는, 카운터로서 동작할 수 있다. 상기 비트들은 예측될 각각의 분기 명령에 대한 분기 이력을 관측함으로써 조절된다. 분기가 이루어지면, 카운터는 (1-1에 도달할 때까지) 증가한다. 분기가 이루어지지 않으면, 카운터는 (0-0에 도달할 때까지) 감소한다.
분기 목표 캐시는 예측될 분기 명령에 대한 목적지를 저장한다. 일 실시예에서, 분기 목표 캐시는 분기 목표 캐시의 레지스터들 또는 행들의 수(예를 들어, 분기 목표 당 하나의 행 또는 레지스터)와 동일한 수의 분기 명령들에 대한 목적지를 저장할 수 있다. 분기 목표 캐시는 분기 명령에 대해 분기에 의해 지시되는 명령의 어드레스를 저장할 수 있다. 분기 이력 테이블 및/또는 분기 목표 캐시를 프로세서 내에 포함하는 것의 한가지 문제점은 분기 이력 테이블 및 분기 목표 캐시가 부가적인 로직이고, 그래서 프로세서에 의한 전력 소비 영역을 증가시킨다는 점이다.
실시예에서, 다중-모드 레지스터 파일이 제시된다. 다중-모드 레지스터 파일은 제 1 모드 동안 피 연산자를 포함한다. 다중-모드 레지스터 파일은 제 2 모드에서 피연산자를 대체하는 보조 정보를 더 포함한다.
여기서 개시되는 하나 이상의 실시예들의 이점들은 분기 예측 로직을 포함하기 위한 회로에 대한 최소 크기의 증가 및 전력 절감을 포함할 수 있다.
이러한 예시적인 실시예는 여기서 개시되는 발명의 개념들을 제한 또는 한정하기 위해서가 아니라, 상기 발명의 개념들의 이해를 돕기 위한 예시를 제공하기 위해 제시된다. 본 개시물의 다른 양상들, 이점들 및 특징들이 다음의 섹션들을 포함하는, 전체 명세서의 개관 이후에 명백해질 것이다: 도면의 간단한 설명, 상세한 설명 및 특허청구범위.
여기서 개시되는 본 발명의 개념들의 이러한 그리고 다른 특징들, 양상들 및 이점들이 다음의 상세한 설명이 첨부 도면들에 관련하여 판독될 때 더 잘 이해된다.
도 1은 분기 예측을 구현하기 위한 프로세서 내의 예시적인 회로를 도시하는 개략도이다.
도 2는 도 1의 개략도의 예시적인 레지스터 파일 유닛을 도시하는 개략도이다.
도 3은 도 1의 개략도의 예시적인 레지스터 파일 유닛을 도시하는 대안적인 개략도이다.
도 4는 제 1 모드에서의 이용 또는 제 2 모드에서의 이용을 위한 도 3의 개략도의 레지스터 파일들의 예시적인 분리를 도시하는 개략도이다.
도 5는 하나의 다중-모드 레지스터 파일에 정보를 저장하기 위한 예시적인 방법을 도시하는 흐름도이다.
도 6은 다중-모드 레지스터 파일들 각각의 모드에 의존하는 복수의 다중-모드 레지스터 파일들에 정보를 저장하기 위한 예시적인 방법을 도시하는 흐름도이다.
도 7은 다중-모드 레지스터 파일을 포함할 수 있는 디지털 신호 프로세서를 통합하는 예시적인 휴대용 통신 디바이스를 도시하는 일반도이다.
도 8은 다중-모드 레지스터 파일을 포함할 수 있는 디지털 신호 프로세서를 통합하는 예시적인 셀룰러 전화를 도시하는 일반도이다.
도 9는 다중-모드 레지스터 파일을 포함할 수 있는 디지털 신호 프로세서를 통합하는 예시적인 무선 인터넷 프로토콜 전화를 도시하는 일반도이다.
도 10은 다중-모드 레지스터 파일을 포함할 수 있는 디지털 신호 프로세서를 통합하는 예시적인 휴대용 디지털 보조기를 도시하는 일반도이다.
도 11은 다중-모드 레지스터 파일을 포함할 수 있는 디지털 신호 프로세서를 통합하는 예시적인 오디오 파일 플레이어를 도시하는 일반도이다.
다음의 기재에서, 설명을 위해, 여기서 개시되는 발명의 개념들의 완전한 이해를 제공하기 위해 다수의 특정한 세부 사항들이 제시된다. 그러나, 여기서 개시되는 발명의 개념들이 이러한 특정한 세부사항들 없이도 실시될 수 있다는 것이 당업자에게 명백할 것이다. 다른 예시들에서, 여기서 개시되는 발명의 개념들의 기본적인 원리들을 불명료하게 하는 것을 피하기 위해 공지된 구조들 및 디바이스들이 블록도로 도시된다.
여기서 개시되는 발명의 개념들의 실시예들은 분기 예측에 이용하기 위한 다중-모드 레지스터 파일에 관한 것이다. 프로세서의 각각의 스레드(thread)는 자신의 레지스터 파일을 가질 수 있다. 예를 들어, 6 스레드 프로세서는 6 개의 레지스터 파일들을 가질 수 있다. 스레드의 실행 동안, 레지스터 파일은 스레드를 위해 프로세서에 의해 회수되는 피연산자들을 저장한다. 예를 들어, 명령/연산 "피연산자 A 더하기 피연산자 B"의 경우, 레지스터 파일은 이후의 리트리브를 위해 그 합을 저장할 수 있다.
멀티스레드 아키텍처들에서, 모든 스레드들이 한번에 실행될 수 있는 것은 아니다. 예를 들어, 오디오 파일을 청취하는 것은 하나의 스레드로 하여금 동작하게 할 수 있지만, 다른 스레드들은 요구되지 않을 수 있다. 그러므로, 일 실시예에서, 비활성 스레드들과 관련되는 레지스터 파일들이 분기 예측 정보과 같은, 개별적인 활성 스레드에 대응하지 않는 보조 정보를 저장하기 위해 이용될 수 있다. 분기 예측 정보는 명령들의 활성 스트림들에 대한 분기들을 예측하기 위해 프로세서에 의해 이용될 수 있다. 그 결과, 멀티스레드 아키텍처의 레지스터 파일은 제 1 모드에서 개별적인 스레드에 대한 피연산자들을 저장하고 있을 수 있거나, 제 2 모드에서 분기 예측 정보와 같은, 보조 정보를 저장하고 있을 수 있다.
분기 예측 정보는 분기 이력 테이블 및/또는 분기 목표 캐시를 포함할 수 있다. 다중-모드 레지스터 파일이 제 2 모드이고 분기 예측 정보를 저장하고 있을 때, 상기 레지스터 파일은 활성 스레드에 대한 분기 이력 테이블 및 분기 목표 캐시 중 하나 또는 상기 둘 모두를 저장할 수 있다. 그 결과, 레지스터 파일에 저장되는 테이블(들)은 레지스터 파일과 관련되지 않은 활성 스레드들 내의 분기들을 예측하기 위해 이용된다. 제 2 모드의 레지스터 파일에 대응하는 스레드가 다시 활성이 되면(즉, 스레드의 명령들이 프로세서에 의해 실행되어야 하면), 상기 레지스터 파일은 새로운 활성 스레드에 대한 피연산자들을 저장하기 위해 제 2 모드에서 제 1 모드로 전환된다. 일 실시예에서, 레지스터 파일이 제 1 모드로 전환하면, 상기 레지스터 파일 내에 저장되는 임의의 보조 정보는 멀티스레드 아키텍처에서 현재 비활성인 스레드들을 위한 하나 이상의 레지스터 파일로 전달될 수 있다. 다른 실시예에서, 레지스터 파일 내에 저장되는 보조 정보의 일부 또는 전부가 소실될 수 있다. 분기 예측 정보의 소실은 프로세서로 하여금 분기 예측 정보를 리컴파일(recompile)하게 할 수 있는 한편, 프로세서가 이러한 정보를 리컴파일하면 분기 예측의 정확성이 보장된다.
멀티스레드 아키텍처의 모든 스레드들이 활성이면, 모든 레지스터 파일들은 제 1 모드에서 각각의 스레드들의 피연산자들을 저장하고 있다. 그 결과, 어떠한 레지스터 파일들도 분기 예측 정보를 저장하기 위해 제 2 모드에 있지 않기 때문에, 분기 예측은 수행되지 않을 수 있다. 한편, 다수의 스레드들이 비활성일 수 있으며, 비활성 스레드들을 위한 모든 레지스터 파일들이 분기 정보를 저장하기 위해 필요하지는 않을 수 있다. 그러므로, 프로세서는 어떠한 레지스터 파일들이 (예를 들어, 분기 예측 정보를 저장하기 위해) 제 2 모드에 있어야 하는지를 우선순위화하기 위한 로직을 포함할 수 있다. 또한, 프로세서는 어떠한 스레드들이 명령 스트림을 실행하고 어떠한 스레드들이 비활성이어야 하는지를 결정하기 위한 로직을 포함함으로써, 다수의 스레드들 중에서 명령 실행을 우선순위화할 수 있다.
도 1 내지 도 4의 개략도들은 분기 예측을 구현하기 위한 프로세서 내의 예시적인 회로의 실시예들을 도시한다. 도 1의 개략도는 분기 예측을 위한 프로세서(100) 내의 예시적인 회로를 도시한다. 도 2의 개략도는 도 1의 개략도의 예시적인 레지스터 파일 유닛(102)을 도시하며, 레지스터 파일 유닛(102)은 다수의 레지스터 파일들을 포함한다. 도 3의 개략도는 다수의 레지스터 파일들 및 이들의 레지스터 파일 레지스터들을 포함하는 도 1의 개략도의 예시적인 레지스터 파일 유닛(102)을 도시한다. 도 4의 개략도는 제 1 모드에서의 이용 또는 제 2 모드에서의 이용을 위한 도 3의 레지스터 파일 유닛(102)의 레지스터 파일들의 예시적인 분리를 도시한다.
프로세서(100)(도 1)는 분기들을 예측하기 위한 분기 예측 로직을 포함할 수 있는데, 분기 예측 정보(104)는 레지스터 파일 유닛(102)에 저장된다. 상기 로직은 프로세서(100)에 포함되는 다른 동작 회로에 부가될 수 있다. 상기 언급한 바와 같이, 분기 예측 정보(104)는 분기 이력 테이블 및 분기 목표 캐시 중 하나 또는 모두일 수 있다. 다른 실시예에서, 분기 예측 정보는 프로세서가 분기 예측을 시도하게 하는 임의의 정보일 수 있다. 도 1에서, 분기 예측 정보(104)는 분기 목표 캐시일 수 있다. 레지스터 파일 유닛(102)은 레지스터 파일 유닛(102)으로부터 데이터를 판독하기 위한 판독 포트(106), 레지스터 파일 유닛(102)에 데이터를 기록하기 위한 데이터 기록 포트(108) 및 액세스(판독 또는 기록)될 레지스터 파일 유닛(102)의 특정 어드레스를 식별하기 위한 어드레스 버스(110)를 포함한다. 도시되는 바와 같이, 레지스터 파일 유닛(102)은 제어 로직(112)에 연결될 수 있다.
일 실시예에서, 제어 로직(112)은 명령 파이프라인(114)으로부터 명령들을 프로세싱할 때 분기 명령이 발견되는지와 발견되는 명령에 대해 분기기 예측되어야 하는지를 결정한다. 일 실시예에서, 분기 명령은 파이프라인 내의 명령의 디코딩 동안 결정된다. 분기가 발견되는지를 결정할 때, 제어 로직(112)은 발견되는 명령의 어드레스가 분기 명령의 알려진 어드레스와 매칭하는지를 결정할 수 있다. 일 실시예에서, 발견되는 명령의 어드레스는 명령의 프로그램 카운터(116)로부터 풀링(pulling)될 수 있다. 알려진 분기 명령들의 어드레스들은 분기 예측 정보(104) 또는 별개의 목록으로부터 액세스될 수 있다. 발견되는 명령의 어드레스가 분기 명령의 어드레스와 매칭하면, 제어 로직(112)은 발견되는 명령이 분기 명령이라고 가정한다.
그리고나서 프로세서(100)는 분기 이력 정보(104)에 액세스함으로써 분기의 목적지를 결정할 수 있다. 일 실시예에서, 프로세서(100)는 예측 정보(118)를 위해 레지스터 파일 유닛(102)에 액세스하기 위해 어드레스 버스(110) 상에서 전송될 분기 명령에 대한 어드레스를 프로그램 카운터(116)로부터 생성한다. 분기 예측 정보(104)가 (분기의 목표 어드레스를 포함하는) 분기 액세스 테이블을 포함하기 때문에, 분기 예측 정보(118)는 발견되는 분기 명령에 대한 목표 어드레스를 포함한다. 분기가 이루어져야 한다면, 예측 정보(118)로부터의 목표 어드레스가 분기하는데 이용된다.
다중화기(120)는 분기가 이루어져야 하는지를 결정할 수 있는데, 여기서 다중화기(120)에 대한 제어 입력은 분기 이력 정보일 수 있다. 다중화기(120)에 대한 하나의 입력은 예측 정보(118)로부터의 목표 어드레스일 수 있다. 일 실시예에서, 분기가 이루어지지 않아야 한다면, 다중화기가 분기 예측(124) 상으로 논리 0을 출력하도록, 다중화기로의 다른 입력은 논리 0(예를 들어, 그라운드)이다. 다른 실시예에서, 분기가 이루어지지 않아야 한다면, 다중화기(120)는 분기 예측(124) 상으로 높은 임피던스 신호를 출력하도록 구성된다.
도 1의 개략도에서, 분기 이력 정보가 프로그램 카운터(116)에 저장될 수 있다. 예를 들어, (분기 이력 테이블에 대해 상기 기재되는 바와 같이) 발견되는 분기에 대한 2-비트 분기 이력이 프로그램 카운터(116)에 저장될 수 있다. 그 결과, 회로는 분기가 이루어져야 하는지 여부를 분기 예측(124) 상으로 출력하는 다중화기(120)를 제어하기 위해, 프로그램 카운터(116)로부터 제어(122) 상으로 분기 이력 정보를 출력할 수 있다. 예를 들어, 프로그램 카운터 내의 분기 이력의 두 개의 비트들이 1-1이면, 제어(122)는 분기한다는 예측을 분기 예측(124) 상에 출력하기 위해 다중화기(120)를 스위칭하기 위한 신호를 포함한다.
분기가 이루어져야 한다면(예를 들어, 분기 이력이 1-1이면), 일 실시예에서, 제어 로직(112)으로 피드백하기 위해 목표 어드레스가 분기 예측(124)으로 전송된다. 그리고나서 제어 로직(112)은 상기 신호로부터 분기가 이루어져야 한다고 결정하고 스트림을 목표 어드레스에 위치하는 명령으로 건너띄게 한다. 다른 실시예에서, 제어 로직(112)이 분기가 이루어져야 한다고 결정하기 위해 분기 예측(124)을 통해 논리 1이 제어 로직(112)으로 전송될 수 있다. 분기가 이루어지지 않아야 한다면(예를 들어, 분기 이력이 0-0과 같음), 논리 0 또는 높은 임피던스가 분기 예측(124)을 통해 제어 로직(112)에 의해 수신될 수 있다. 그리고나서 제어 로직은 분기하는 것이 아니라, 스트림이 분기 명령 이후의 명령을 프로세싱하도록 진행되어야 한다고 상기 신호로부터 결정할 수 있다.
다른 실시예에서, 그리고 상기 언급되는 바와 같이, 분기 이력은 분기 이력 테이블로서 레지스터 파일 유닛(102)에 저장될 수 있다. 따라서, 다중화기(120)의 출력을 제어하기 위해, 레지스터 파일 유닛(102) 내의 분기 이력 테이블은 데이터 판독 포트(106)로부터 제어(122)로 선택적으로 출력할 수 있다. 일 실시예에서, 분기 명령에 대한 분기 이력 및 목표 어드레스는 하나의 레지스터에 저장될 수 있으며, 그러므로 분기 이력 테이블 정보 및 분기 목표 캐시 정보를 결합할 수 있다.
도 2를 참조하면, 레지스터 파일 유닛(102)은 다수의 레지스터 파일들(203 내지 214)을 포함하는 저장소(202)를 포함할 수 있다. 도시되는 실시예에서, 6 개의 레지스터 파일들이 도시되며, 프로세서는 6 스레드 아키텍처일 수 있다. 다른 실시예들에서, 레지스터 파일들의 수는 1 보다 큰 임의의 수(예를 들어, 2)일 수 있으며, 레지스터 파일들 중 적어도 하나는 제 1 모드일 수 있고, 레지스터 파일들 중 적어도 하나는 제 2 모드일 수 있다. 레지스터 파일들(204 내지 214) 각각은 6-스레드 아키텍처 프로세서의 각각의 스레드와 관련된다. 예를 들어, 레지스터 파일 1(204)은 프로세서의 제 1 스레드와 관련될 수 있다. 레지스터 파일들(204 내지 214)은 버스(216)를 통해 상호접속될 수 있다. 그러므로, 제 2 모드의 레지스터 파일들에 대한 분기 예측 정보는 제 2 모드의 레지스터 파일들 사이에서 분리될 수 있다. 다른 실시예에서, 레지스터 파일들의 일부는 단일 모드(오직 피연산자들을 저장)일 수 있는 반면, 나머지 레지스터 파일들은 다중-모드 레지스터 파일들일 수 있다.
다시 도 2를 참조하면, 저장소(202)는 페치 유닛(218) 및 후기록 유닛(220)에 접속된다. 페치 유닛(218)은 레지스터 파일들(204 내지 214) 중 하나의 레지스터 값에 액세스하고 페치하기 위해 어드레스(222)를 저장소(202)에 전송한다. 액세스되는 값은 레지스터 파일 유닛(102)으로부터 값을 출력하는, 레지스터 파일들 데이터 인터페이스(224)에 전송된다. 후기록 유닛(220)은 데이터가 기록되고 저장되어야 하는 저장소(202) 내의 레지스터에 대한 어드레스(222)를 전송한다. 일 실시예에서, 페치 유닛(218) 및 후기록 유닛(220)은 제 1 모드의 레지스터 파일들로부터/레지스터 파일들로 피연산자들을 액세스할 수 있고, 제 2 모드의 레지스터 파일들로부터/레지스터 파일들로 보조 정보(예를 들어, 분기 예측 정보)를 액세스할 수 있다.
도 3을 참조하면, 레지스터 파일 유닛(102)은 레지스터 파일 레지스터들(302 내지 312)을 (예를 들어, 저장소(202) 내에) 더 포함할 수 있다. 일 실시예에서, 각각의 레지스터 파일 레지스터(302 내지 312)는 레지스터 파일(204 내지 214)과 관련된다. 예를 들어, RF1 레지스터(302)는 레지스터 파일 1(204)과 관련되고, RF2 레지스터(304)는 레지스터 파일 2(206)과 관련된다, 등등. 레지스터 파일 레지스터들(302 내지 312)은 레지스터를 언제 제 2 모드로 전환할지에 관한 우선순위 정보, 레지스터가 언제 제 1 모드에 있어야 하는지에 관한 우선순위 정보 또는 대응하는 레지스터가 어떠한 스레드에 관련되는지에 관한 정보를 포함하는, 각각의 레지스터들(204 내지 214)에 관한 정보를 포함할 수 있다. 예를 들어, RF1 레지스터(302)는 레지스터 파일 1(204)이 스레드 0과 관련되고, 레지스터 파일 1(204)이 피연산자들을 저장하기 위해 제 1 모드에 있어야 하는 제 1 레지스터이고 그리고/또는 레지스터 파일 1(204)이 보조 정보를 저장하기 위해 제 2 모드에서 있어야 하는 마지막 레지스터라는, 정보를 포함할 수 있다. 다른 실시예에서, 레지스터 파일 레지스터는 대응하는 레지스터가 제 1 모드인지 또는 제 2 모드인지에 관한 정보를 포함할 수 있다.
일 실시예에서, 각각의 레지스터(204 내지 214)에 대한 레지스터 파일 레지스터(302 내지 312)는 각각의 레지스터 파일이 언제 제 1 모드에 있어야 하고, 각각의 레지스터 파일이 언제 제 2 모드로 전환되어야 하는지의 우선순위에 관한 정보를 포함하기 때문에, 프로세서(100)는 어떠한 레지스터 파일들이 제 1 모드에 있고, 어떠한 레지스터 파일들이 제 2 모드에 있는지를 제어하기 위해 상기 정보를 이용할 수 있다. 예를 들어, 프로세서는 버스(214)를 통해 레지스터 파일 레지스터들(302 내지 312)을 제어함으로써 레지스터 파일을 제 1 모드로부터 제 2 모드로/제 2 모드로부터 제 1 모드로 전환할 수 있다.
도 4의 도면은 레지스터 파일들(204 내지 208)이 제 1 모드이고, 레지스터 파일들(210 내지 214)이 제 2 모드인 일 예시를 도시한다. 상기 제시되는 바와 같이, 레지스터 파일 레지스터들(302 내지 312)은 언제 레지스터 파일들(204 내지 214)이 제 1 모드에 있어야 하는지의 우선순위 정보를 포함할 수 있다. 예를 들어, 우선순위 정보는 레지스터 파일 1(204)이 제 1 모드에 있어야 하는 제 1 레지스터 파일이고(즉, 관련되는 스레드가 처음 명령들을 실행함), 레지스터 파일 2(206)는 제 1 모드에 있어야 하는 제 2 레지스터 파일이고(즉, 관련되는 스레드가 두 번째로 명령들을 실행함), 레지스터 파일 3(208)은 제 1 모드에 있어야 하는 제 3 레지스터 파일이고(즉, 관련되는 스레드가 세 번째로 명령들을 실행함), 레지스터 파일 4(210)는 제 1 모드에 있어야 하는 제 4 레지스터 파일이고(즉, 관련되는 스레드가 네 번째로 명령들을 실행함), 레지스터 파일 5(212)는 제 1 모드에 있어야 하는 제 5 레지스터 파일이고(즉, 관련되는 스레드가 다섯 번째로 명령들을 실행함), 레지스터 파일 6(212)은 제 1 모드에 있어야 하는 제 6 레지스터 파일(즉, 관련되는 스레드가 여섯 번째로 명령들을 실행함)이라는 점일 수 있다. 그러므로, 5 개의 스레드들이 명령들을 실행해야 한다면, 레지스터 파일들(204 내지 212)은 제 1 모드이어야 하고 (예를 들어, 각각의 스레드들에 대한 피연산자들을 저장), 레지스터 파일 6(214)은 제 1 모드일 필요가 없다.
또한 상기 기재되는 바와 같이, 레지스터 파일 레지스터들(302 내지 312)은 레지스터 파일들(204 내지 214)이 언제 제 2 모드에 있어야 하는지의 우선순위 정보를 포함할 수 있다. 예를 들어, 우선 순위 정보는 레지스터 파일 1(204)이 (예를 들어, 활성 스레드들에 대한 분기 예측 정보를 저장하기 위해) 제 2 모드에 있어야 하는 제 6 및 마지막 레지스터 파일이고, 레지스터 파일 2(206)는 제 2 모드에 있어야 하는 제 5 및 마지막 다음의 레지스터 파일이고, 레지스터 파일 3(208)은 제 2 모드에 있어야 하는 제 4 레지스터 파일이고, 레지스터 파일 4(210)는 제 2 모드에 있어야 하는 제 3 레지스터 파일이고, 레지스터 파일 5(212)는 제 2 모드에 있어야 하는 제 2 및 제 1 다음의 레지스터 파일이고, 레지스터 파일 6(212)은 제 2 모드에 있어야 하는 제 1 레지스터 파일이라는 점일 수 있다. 그러므로, 두 개의 스레드들이 명령들을 실행하고 있으면, 레지스터 파일들(208 내지 214)은 제 2 모드에 있도록 이용가능하다. 두 개의 레지스터 파일들이 제 2 모드에 있어야 한다면, 레지스터 파일들(212 내지 214)은 제 2 모드이다. 일 실시예에서, 레지스터 파일이 제 1 모드인지 (즉, 각각의 스레드가 활성이고/명령들을 실행하고 있는지) 여부는 레지스터 파일이 제 2 모드로 전환해야 하는지에 우선한다.
다시 도 4를 참조하면, 본 예시에서, 세 개의 스레드들이 활성이어야 하고 세 개의 레지스터 파일들이 제 2 모드에 있어야 한다. 그러므로, 레지스터 파일들(204 내지 208)은 활성 스레드들에 대한 피연산자들을 저장하는 제 1 모드이다. 레지스터 파일들(210 내지 214)은 예를 들어, 세 개의 스레드들을 위한 분기 예측 정보를 저장하기 위한 제 2 모드이다. 일 실시예에서, 분기 예측 정보는 제 2 모드의 모든 저장소(402)에서 분리되거나 확산될 수 있다. 그러므로, 더 많은 레지스터 파일들(204 내지 214)이 제 2 모드인 경우, 더 많은 저장소가 분기 예측 정보를 저장하기 위해 존재하며, 이는 더 많은 분기 명령들의 예측을 허용하기 위해 분기 이력 테이블 및 분기 목표 캐시가 더 커지게 (예를 들어, 각 테이블의 더 많은 행들) 한다.
도 5는 도 1 내지 도 3 중 하나의 다중-모드 레지스터 파일에 정보를 저장하기 위한 예시적인 방법(500)을 도시하는 흐름도이다. 502에서 시작해서, 프로세서(100)는 다중-모드 레지스터 파일(예를 들어, 도 3의 레지스터 파일 1(204))이 제 1 모드인지를 결정한다. 레지스터 파일 1(204)이 제 1 모드인지를 결정하는 일 실시예에서, 프로세서(100)는 레지스터 파일 1(204)과 관련되고 레지스터 파일 1(204)이 어떠한 모드인지에 관한 정보를 포함할 수 있는, RF1 레지스터(302)에 액세스한다. 다른 실시예에서, 프로세서(100)는 레지스터 파일 1(204)이 제 1 모드인지를 결정하기 위해 RF1 레지스터(302)의 우선순위 정보 및 활성 스레드들의 수를 검사할 수 있다. 다른 실시예에서, 프로세서(100)는 레지스터 파일 1(204)에 대한 각각의 스레드(예를 들어, 스레드 0)를 결정하고 각각의 스레드가 활성인지를 결정할 수 있다. 레지스터 파일 1(204)이 제 1 모드이면, 레지스터 파일 1(204)에 대한 각각의 스레드는 활성이고 레지스터 파일 1(204)은 504에서 후기록 유닛(220)(도 3)으로부터 피연산자를 수신할 수 있다. 피연산자를 수신하면, 레지스터 파일은 후기록 유닛(220)에 의해 식별되는 레지스터 위치에 상기 피연산자를 저장할 수 있다(506).
프로세서(100)가 502에서 레지스터 파일이 제 1 모드가 아니라고 결정하면, 프로세서는 508에서 다중-모드 레지스터 파일 1(204)이 제 2 모드인지를 결정할 수 있다. 일 실시예에서, 프로세서(100)는 레지스터 파일 1(204)이 제 1 모드가 아니면 레지스터 파일 1(204)은 제 2 모드라고 가정할 수 있다. 다른 실시예에서, 레지스터 파일 1(204)은 비활성이고, 그래서 제 1 또는 제 2 모드가 아닐 수 있다. 그러므로, 프로세서(100)가 레지스터 파일 1(204)이 제 2 모드가 아니라고 결정하면, 레지스터 파일 1(204)은 제 1 모드 또는 제 2 모드 어느 쪽도 아니며, 그때에는 정보를 받아들일 수 없다. 다중-모드 레지스터 파일이 제 2 모드이면, 레지스터 파일 1(204)은 510에서 후기록 유닛(220)(도 3)으로부터 보조 정보(예를 들어, 분기 예측 정보)를 수신한다. 보조 정보를 수신하면, 레지스터 파일 1(204)은 후기록 유닛(220)에 의해 식별되는 레지스터 위치에 보조 정보를 저장할 수 있다(506).
도 6의 흐름도는 다중-모드 레지스터 파일들(204 내지 214) 각각의 모드에 의존하는 도 1 내지 도 3의 레지스터 파일 유닛(102)의 복수의 다중-모드 레지스터 파일들(204 내지 214)에 정보를 저장하기 위한 예시적인 방법(600)을 도시한다. 602에서 시작해서, 프로세서(100)는 레지스터 파일 유닛(102) 중 어떠한 다중-모드 레지스터 파일들(204 내지 214)이 제 1 모드인지를 결정한다. 일 실시예에서, 프로세서(100)는 어떠한 스레드들이 활성이며, 레지스터 파일 레지스터들(302 내지 312)로부터, 어떠한 레지스터 파일들(204 내지 214)이 상기 활성 스레드들과 관련되는지를 결정한다. 다른 실시예에서, 프로세서(100)는 레지스터 파일이 제 1 모드인지에 관한 정보를 관련되는 레지스터 파일 레지스터로부터 판독할 수 있다.
어떠한 레지스터 파일들(204 내지 214)이 제 1 모드인지를 결정하면, 프로세서(100)는 604에서 어떠한 레지스터 파일들(204 내지 214)이 제 2 모드인지를 결정할 수 있다. 일 실시예에서, 프로세서(100)는 레지스터 파일이 제 2 모드인지를 결정하기 위해 제 1 모드가 아닌 레지스터 파일들(204 내지 214)의 각각의 레지스터 파일 레지스터들(302 내지 312)을 판독할 수 있다. 다른 실시예에서, 프로세서(100)는 제 1 모드가 아닌 모든 레지스터들(204 내지 214)이 제 2 모드라고 가정한다. 다른 실시예에서, 프로세서(100)는 제 2 모드에 있어야 하는 레지스터 파일들(204 내지 214)의 수를 결정하고 레지스터 파일들(204 내지 214)의 각각의 레지스터 파일 레지스터들(302 내지 312)로부터 제 2 모드에 대한 우선순위 정보를 판독한다.
606으로 진행하여, 프로세서(100)는 제 1 모드의 레지스터 파일들(204 내지 214)로 피연산자들을 전송한다. 예를 들어, 스레드 0이 실행되는 명령으로부터 발생하는 피연산자를 포함하면, 프로세서(100)는 저장되어야 하는 레지스터 파일 1(204)(도 3)로 상기 피연산자를 전송한다. 그리고나서 피연산자들은 608에서 제 1 모드의 수신 레지스터 파일들(204 내지 214)에 의해 저장될 수 있다.
610으로 진행하여, 프로세서(100)는 제 2 모드의 레지스터 파일들(204 내지 214)로 보조 정보를 전송한다. 예를 들어, 프로세서(100)는 최근에 실행된 분기 명령에 관한 분기 예측 정보를 전송할 수 있는데, 이는 이후에 동일한 분기를 예측하는데 이용될 수 있다. 일 실시예에서, 프로세서(100)는 제 2 모드의 어떠한 레지스터 파일들(204 내지 214)이 보조 정보의 어떠한 부분을 저장해야 하는지를 결정한다. 예를 들어, 도 4를 다시 참조하면, 프로세서(100)는 레지스터 파일들(210 내지 212)이 분기 목표 캐시를 저장하고 레지스터 파일 6(214)이 명령 스트림들을 실행하기 위해 분기 이력 테이블을 저장해야 한다고 결정할 수 있다. 도 6을 다시 참조하면, 그 후 보조 정보는 612에서 제 2 모드의 수신 레지스터 파일들(204 내지 214)에 의해 저장된다.
상기 기재되는 특징들을 포함하는 예시적인 디바이스들
다중-모드 레지스터 파일들은 디지털 신호 프로세서들과 같은, 레지스터 파일들을 포함하는 임의의 프로세서들에 포함될 수 있다. 도 7 내지 도 11의 일반도들은 분기 명령들을 실행하는 분기들을 예측하는데 이용되기 위해, 예를 들어 제 1 모드에서 피연산자들을 저장하고 제 2 모드에서 분기 예측 정보를 저장하기 위한 다중-모드 레지스터 파일들을 통합할 수 있는 예시적인 디바이스들을 도시한다.
도 7은 휴대용 통신 디바이스(700)의 예시적인 실시예를 도시하는 도면이다. 도 7의 일반도에서 도시되는 바와 같이, 휴대용 통신 디바이스는 디지털 신호 프로세서(DSP; 704)를 포함하는 온-칩 시스템(702)을 포함한다. 도 7의 일반도는 또한 디지털 신호 프로세서(704) 및 디스플레이(708)에 연결되는 디스플레이 제어기(706)를 도시한다. 게다가, 입력 디바이스(710)가 DSP(704)에 연결된다. 도시되는 바와 같이, 메모리(712)가 DSP(704)에 연결된다. 부가적으로, 코더/디코더(CODEC; 714)가 DSP(704)에 연결될 수 있다. 스피커(716) 및 마이크로폰(718)이 CODEC(714)에 연결될 수 있다.
도 7의 일반도는 디지털 신호 프로세서(704) 및 무선 안테나(722)에 연결되는 무선 제어기(720)를 추가적으로 도시한다. 특정 실시예에서, 전원 장치(724)가 온-칩 시스템(702)에 연결된다. 게다가, 특정 실시예에서, 도 7에서 도시되는 바와 같이, 디스플레이(708), 입력 디바이스(710), 스피커(716), 마이크로폰(718), 무선 안테나(722) 및 전원 장치(724)는 온-칩 시스템(720)의 외부에 존재한다. 그러나, 각각은 온-칩 시스템(702)의 컴포넌트에 연결된다.
특정 실시예에서, DSP(704)는 예를 들어, 레지스터 파일이 제 1 모드가 아닐 때 (활성 스레드에 대한 피연산자들을 저장하는 것이 아니라) 분기 예측 정보를 저장하기 위해, 하나 이상의 다중-모드 레지스터 파일들(726)을 포함한다. 예를 들어, 분기 명령이 프로세서(704)에 의해 발견되고, 다중-모드 레지스터(726)가 분기 예측 정보를 저장하면, 프로세서(704)는 다중-모드 레지스터 파일(726) 내의 분기 예측 정보를 이용하여 분기가 일어나는 것으로 또는 일어나지 않는 것으로 예측되는지를 결정한다. 그리고나서 프로세서(704)는 분기 예측으로부터 예측되는 다음의 명령의 프로세싱을 시작한다.
도 8은 셀룰러 전화(800)의 예시적인 실시예를 도시하는 도면이다. 도시되는 바와 같이, 셀룰러 전화(800)는 함께 연결되는 디지털 기저대역 프로세서(804) 및 아날로그 기저대역 프로세서(806)를 포함하는 온-칩 시스템(802)을 포함한다. 특정 실시예에서, 디지털 기저대역 프로세서(804)는 디지털 신호 프로세서이다. 도 8의 일반도에서 도시되는 바와 같이, 디스플레이 제어기(808) 및 터치스크린 제어기(810)는 디지털 기저대역 프로세서(804)에 연결된다. 차례로, 온-칩 시스템(820) 외부의 터치스크린 디스플레이(812)가 디스플레이 제어기(808) 및 터치스크린 제어기(810)에 연결된다.
도 7의 일반도는 비디오 인코더(814), 예를 들어 PAL(phase alternating line) 인코더, SECAM(sequential couleur a memoire) 인코더 또는 NTSC(national television system(s) committee) 인코더가 디지털 기저대역 프로세서에 연결되는 점을 추가적으로 도시한다. 뿐만 아니라, 비디오 증폭기(816)가 비디오 인코더(814) 및 터치스크린 디스플레이(812)에 연결된다. 또한, 비디오 포트(818)가 비디오 증폭기(816)에 연결된다. 도 8의 일반도에서 도시되는 바와 같이, 범용 직렬 버스(USB) 제어기(820)가 디지털 기저대역 프로세서(804)에 연결된다. 또한, USB 포트(822)가 USB 제어기(820)에 연결된다. 메모리(824) 및 가입자 식별 모듈(SIM) 카드(826)가 또한 디지털 기저대역 프로세서(804)에 연결될 수 있다. 뿐만 아니라, 도 8의 일반도에 도시되는 바와 같이, 디지털 카메라(828)가 디지털 기저대역 프로세서(804)에 연결될 수 있다. 예시적인 실시예에서, 디지털 카메라(828)는 전하 결합 소자(CCD) 카메라 또는 상보성 금속 산화막 반도체(CMOS) 카메라이다.
도 8의 일반도에서 추가적으로 도시되는 바와 같이, 스테레오 오디오 CODEC(830)이 아날로그 기저대역 프로세서(806)에 연결될 수 있다. 게다가, 오디오 증폭기(832)가 스테레오 오디오 CODEC(830)에 연결될 수 있다. 예시적인 실시예에서, 제 1 스테레오 스피커(834) 및 제 2 스테레오 스피커(836)가 오디오 증폭기(832)에 연결된다. 마이크로폰 증폭기(838)가 또한 스테레오 오디오 CODEC(830)에 연결될 수 있다. 부가적으로, 마이크로폰(840)이 마이크로폰 증폭기(838)에 연결될 수 있다. 특정 실시예에서, 주파수 변조(FM) 무선 튜너(842)가 스테레오 오디오 CODEC(830)에 연결될 수 있다. 또한, FM 안테나(844)가 FM 무선 튜너(842)에 연결된다. 뿐만 아니라, 스테레오 헤드폰들(846)이 스테레오 오디오 CODEC에 연결될 수 있다.
도 8의 일반도는 무선 주파수(RF) 트랜시버(848)가 아날로그 기저대역 프로세서(806)에 연결될 수 있음을 추가적으로 도시한다. RF 스위치(850)는 RF 트랜시버(848) 및 RF 안테나(852)에 연결될 수 있다. 키패드(854)는 아날로그 기저대역 프로세서(806)에 연결될 수 있다. 뿐만 아니라, 진동 디바이스(858)가 아날로그 기저대역 프로세서(806)에 연결될 수 있다. 도 8의 일반도는 또한 전원 장치(860)가 온-칩 시스템(802)에 연결될 수 있음을 도시한다. 특정 실시예에서, 전원 장치(860)는 셀룰러 전화(800)의 다양한 컴포넌트들에 전력을 제공하는 직류 전류(DC) 전원 장치이다. 뿐만 아니라, 특정 실시예에서, 전원 장치는 교류 전류(AC)로부터 AC 전력 소스에 연결되는 DC 변환기로 유도되는 재충전가능한 DC 배터리 또는 DC 전원 장치이다.
도 8의 일반도에서 도시되는 바와 같이, 터치스크린 디스플레이(812), 비디오 포트(818), USB 포트(822), 카메라(828), 제 1 스테레오 스피커(834), 제 2 스테레오 스피커(836), 마이크로폰(840), FM 안테나(844), 스테레오 헤드폰들(846), RF 스위치(850), RF 안테나(852), 키패드(854), 진동기(858) 및 전원 장치(860)는 온-칩 시스템(820)의 외부에 존재할 수 있다. 특정 실시예에서, 디지털 기저대역 프로세서(804)는 예를 들어, 레지스터 파일(862)이 제 1 모드가 아닐 때 (활성 스레드에 대한 피연산자들을 저장하는 것이 아니라) 분기 예측 정보를 저장하기 위해 하나 이상의 다중-모드 레지스터 파일들(862)을 포함할 수 있다.
도 9는 무선 인터넷 프로토콜(IP) 전화(900)의 예시적인 실시예를 도시하는 도면이다. 도시되는 바와 같이, 무선 IP 전화(900)는 디지털 신호 프로세서(DSP;904)를 포함하는 온-칩 시스템(902)을 포함한다. 디스플레이 제어기(906)가 DSP(904)에 연결될 수 있고 디스플레이(908)가 디스플레이 제어기(906)에 연결된다. 예시적인 실시예에서, 디스플레이(908)는 액정 표시 장치(LCD)이다. 도 9는 키패드(910)가 DSP(904)에 연결될 수 있음을 추가적으로 도시한다.
플래시 메모리(912)는 DSP(904)에 연결될 수 있다. 동기식 동적 랜덤 액세스 메모리(SDRAM;914), 정적 랜덤 액세스 메모리(SRAM;916) 및 전기적 삭제가능한 프로그램어블 판독 전용 메모리(EEPROM;918)가 DSP(904)에 또한 연결될 수 있다. 도 9의 일반도는 또한 발광 다이오드(LED;920)가 DSP(904)에 연결될 수 있음을 도시한다. 부가적으로, 특정 실시예에서, 음성 CODEC(922)이 DSP(904)에 연결될 수 있다. 증폭기(924)가 음성 CODEC(922)에 연결될 수 있고, 모노 스피커(926)가 증폭기(924)에 연결될 수 있다. 도 9의 일반도는 음성 CODEC(922)에 연결되는 모도 헤드셋(928)을 추가적으로 도시한다. 특정 실시예에서, 모노 헤드셋(928)은 마이크로폰을 포함한다.
무선 로컬 영역 네트워크(WLAN) 기저대역 프로세서(930)가 DSP(904)에 연결될 수 있다. RF 트랜시버(932)가 WLAN 기저대역 프로세서(930)에 연결될 수 있고 RF 안테나(934)가 RF 트랜시버(932)에 연결될 수 있다. 특정 실시예에서, 블루투스 제어기(936)가 또한 DSP(904)에 연결될 수 있고 블루투스 안테나(938)가 제어기(936)에 연결될 수 있다. 도 9의 일반도는 또한 USB 포트(940)가 또한 DSP(904)에 연결될 수 있음을 도시한다. 게다가, 전원 장치(942)가 온-칩 시스템(902)에 연결될 수 있고, 무선 IP 전화(900)의 다양한 컴포넌트들에 전력을 제공한다.
도 9의 일반도에서 도시되는 바와 같이, 디스플레이(908), 키패드(910), LED(920), 모노 스피커(926), 모노 헤드셋(928), RF 안테나(934), 블루투스 안테나(938), USB 포트(940) 및 전원 장치(942)가 온-칩 시스템(902)의 외부에 존재할 수 있고, 온-칩 시스템(902)의 하나 이상의 컴포넌트들에 연결될 수 있다. 특정 실시예에서, DSP(904)는 예를 들어, 레지스터 파일(960)이 제 1 모드가 아닐 때 (활성 스레드에 대한 피연산자들을 저장하는 것이 아니라) 분기 예측 정보를 저장하기 위해, 하나 이상의 다중-모드 레지스터 파일들(960)을 포함할 수 있다.
도 10은 휴대용 디지털 보조기(PDA;900)의 예시적인 실시예를 도시하는 도면이다. 도시되는 바와 같이, PDA(1000)는 디지털 신호 프로세서(DSP;1004)를 포함하는 온-칩 시스템(1002)을 포함한다. 터치스크린 제어기(1006) 및 디스플레이 제어기(1008)는 DSP(1004)에 연결된다. 뿐만 아니라, 터치스크린 디스플레이(1010)는 터치스크린 제어기(1006) 및 디스플레이 제어기(1008)에 연결된다. 도 10의 일반도는 또한 키패드(1012)가 DSP(1004)에 연결될 수 있음을 나타낸다.
특정 실시예에서, 스테레오 오디오 CODEC(1026)이 DSP(1004)에 연결될 수 있다. 제 1 스테레오 증폭기(1028)가 스테레오 오디오 CODEC(1026)에 연결될 수 있고, 제 1 스테레오 스피커(1030)가 제 1 스테레오 증폭기(1028)에 연결될 수 있다. 부가적으로, 마이크로폰 증폭기(1032)는 스테레오 오디오 CODEC(1026)에 연결될 수 있고 마이크로폰(1034)은 마이크로폰 증폭기(1032)에 연결될 수 있다. 도 10의 일반도는 제 2 스테레오 증폭기(1036)가 스테레오 오디오 CODEC(1026)에 연결될 수 있고 제 2 스테레오 스피커(1038)가 제 2 스테레오 증폭기(1036)에 연결될 수 있음을 추가적으로 도시한다. 특정 실시예에서, 스테레오 헤드폰들(1040)은 또한 스테레오 오디오 CODEC(1026)에 연결될 수 있다.
또한 도 10의 일반도는 802.11 제어기(1042)가 DSP(1004)에 연결될 수 있고, 802.11 안테나(1044)가 802.11 제어기(1042)에 연결될 수 있음을 도시한다. 게다가, 블루투스 제어기(1046)는 DSP(1004)에 연결될 수 있고 블루투스 안테나(1048)는 블루투스 제어기(1046)에 연결될 수 있다. USB 제어기(1050)는 DSP(1004)에 연결될 수 있고 UBS 포트(1052)는 USB 제어기(1050)에 연결될 수 있다. 부가적으로, 스마트 카드(1053), 예를 들어, 멀티미디어 카드(MMC) 또는 보안 디지털 카드(SD)가 DSP(1004)에 연결될 수 있다. 뿐만 아니라, 전원 장치(1056)가 온-칩 시스템(1002)에 연결될 수 있고, PDA(1000)의 다양한 컴포넌트들에 전력을 제공할 수 있다.
도 10의 일반도에서 도시되는 바와 같이, 디스플레이(1010), 키패드(1012), IrDA 포트(1022), 디지털 카메라(1024), 제 1 스테레오 스피커(1030), 마이크로폰(1034), 제 2 스테레오 스피커(1038), 스테레오 헤드폰들(1040), 802.11 안테나(1044), 블루투스 안테나(1048), USB 포트(1052) 및 전원 장치(1050)가 온-칩 시스템(1002)의 외부에 존재할 수 있고 온-칩 시스템 상의 하나 이상의 컴포넌트들에 연결될 수 있다. 특정 실시예에서, DSP(1004)는 예를 들어, 레지스터 파일(1060)이 제 1 모드가 아닐 때 (활성 스레드에 대한 피연산자들을 저장하는 것이 아니라) 분기 예측 정보를 저장하기 위해, 하나 이상의 다중-모드 파일들(1060)을 포함할 수 있다.
도 11은 오디오 파일 플레이어(예를 들어, MP3 플레이어)(1100)의 예시적인 실시예를 도시하는 도면이다. 도시되는 바와 같이, 오디오 파일 플레이어(1100)는 디지털 신호 프로세서(DPS;1104)를 포함하는 온-칩 시스템(1102)을 포함한다. 디지플레이 제어기(1106)는 DSP(1104)에 연결될 수 있고 디스플레이(1108)는 디스플레이 제어기(1106)에 연결된다. 예시적인 실시예에서, 디스플레이(1108)는 액정 표시 장치(LCD)이다. 키패드(1110)가 DSP(1104)에 연결될 수 있다.
도 11의 일반도에서 추가적으로 도시되는 바와 같이, 플래시 메모리(1112) 및 판독 전용 메모리(ROM; 1114)가 DSP(1104)에 연결될 수 있다. 부가적으로, 특정 실시예에서, 오디오 CODEC(1116)이 DPS(1104)에 연결될 수 있다. 증폭기(1118)가 오디오 CODEC(1116)에 연결될 수 있고 모도 스피커(1120)가 증폭기(1118)에 연결될 수 있다. 도 11의 일반도는 마이크로폰 입력(1122) 및 스테레오 입력(1124)이 오디오 CODEC(1116)에 연결될 수도 있음을 추가적으로 나타낸다. 특정 실시예에서, 스테레오 헤드폰들(1126)은 또한 오디오 CODEC(1116)에 연결될 수 있다.
USB 포트(1128) 및 스마트 카드(1130)는 DSP(1104)에 연결될 수 있다. 부가적으로, 전원 장치(1132)는 온-칩 시스템(1102)에 연결될 수 있고, 오디오 파일 플레이어(1100)의 다양한 컴포넌트들에 전력을 제공할 수 있다.
도 11의 일반도에서 도시되는 바와 같이, 디스플레이(1108), 키패드(1110), 모노 스피커(1120), 마이크로폰 입력(1122), 스테레오 입력(1124), 스테레오 헤드폰들(1126), USB 포트(1128) 및 전원 장치(1132)가 온-칩 시스템(1102) 외부에 존재하고 온-칩 시스템(1102) 상의 하나 이상의 컴포넌트들에 연결된다. 특정 실시예에서, 디지털 신호 프로세서(1104)는 예를 들어, 레지스터 파일(1160)이 제 1 모드가 아닐 때 (활성 스레드에 대한 피연산자들을 저장하는 것이 아니라) 분기 예측 정보를 저장하기 위해, 하나 이상의 다중-모드 레지스터 파일들(1160)을 포함할 수 있다.
일반
여기서 개시되는 발명의 개념들의 실시예들의 전술한 설명은 오로지 예시와 설명을 위해 제시되었으며, 여기서 개시되는 발명의 개념들을 개시되는 정확한 형태들로 제한하려는 의도는 아니다. 여기서 개시되는 발명의 개념들의 범위 또는 사상으로부터 이탈하지 않으면서 수많은 수정들 및 개조들이 당업자에게 명백하다.

Claims (21)

  1. 다중-모드 레지스터 파일로서,
    제 1 모드에서 저장되는 피연산자; 및
    보조 정보를 포함하고,
    상기 보조 정보는 제 2 모드에서 상기 피연산자를 대체하는,
    다중-모드 레지스터 파일.
  2. 제 1 항에 있어서,
    상기 보조 정보는 분기(branch) 예측 정보인,
    다중-모드 레지스터 파일.
  3. 제 2 항에 있어서,
    상기 분기 예측 정보는 분기 목표 캐시(branch target cache); 및 분기 이력 테이블(branch history table)을 포함하는,
    다중-모드 레지스터 파일.
  4. 제 2 항에 있어서,
    상기 레지스터 파일은 멀티스레드 아키텍처(multithread architecture)의 복수의 레지스터 파일들 내에 있는,
    다중-모드 레지스터 파일.
  5. 제 4 항에 있어서,
    상기 피연산자는 상기 멀티스레드 아키텍처에 의해 실행될 연산들의 파이프라인 동작으로부터 나온 것인,
    다중-모드 레지스터 파일.
  6. 제 5 항에 있어서,
    상기 멀티스레드 아키텍처는:
    상기 다중-모드 레지스터 파일이 상기 제 1 모드에 있는지를 결정하고;
    상기 다중-모드 레지스터 파일이 상기 제 1 모드에 있지 않다고 결정했다면, 상기 다중 모드 레지스터 파일이 상기 제 2 모드에 있는지를 결정하도록 구성되는,
    다중-모드 레지스터 파일.
  7. 제 4 항에 있어서,
    상기 복수의 레지스터 파일들 각각은 다중-모드 레지스터 파일인,
    다중-모드 레지스터 파일.
  8. 제 7 항에 있어서,
    상기 멀티스레드 아키텍처는 상기 제 2 모드에 진입하기 위한 상기 레지스터 파일들의 우선순위를 결정하도록 구성되는,
    다중-모드 레지스터 파일.
  9. 제 8 항에 있어서,
    상기 복수의 레지스터 파일들은 상기 제 2 모드의 복수의 레지스터 파일들 사이에서 상기 분기 예측 정보를 분할하도록 구성되는,
    다중-모드 레지스터 파일.
  10. 제 1 모드 동안 다중-모드 레지스터 파일에 의해 피연산자를 저장하는 단계; 및
    제 2 모드에서 상기 다중-모드 레지스터 파일에 의해 상기 피연산자를 보조 정보로 대체하는 단계;
    를 포함하는, 방법.
  11. 제 10 항에 있어서,
    상기 보조 정보는 분기 예측 정보인,
    방법.
  12. 제 11 항에 있어서,
    상기 분기 예측 정보는 분기 목표 캐시; 및 분기 이력 테이블을 포함하는,
    방법.
  13. 제 11 항에 있어서,
    상기 다중-모드 레지스터 파일이 상기 제 1 모드에 있는지를 결정하는 단계; 및
    상기 다중-모드 레지스터 파일은 상기 제 1 모드에 있지 않다고 결정했다면, 상기 다중 모드 레지스터 파일이 상기 제 2 모드에 있는지를 결정하는 단계를 더 포함하는,
    방법.
  14. 제 11 항에 있어서,
    상기 레지스터 파일은 멀티스레드 아키텍처의 복수의 다중-모드 레지스터 파일들 내에 있는,
    방법.
  15. 제 14 항에 있어서,
    상기 복수의 레지스터 파일들 각각이 상기 제 1 모드에 있는지를 결정하는 단계; 및
    각각의 레지스터 파일이 상기 제 2 모드에 있다면, 상기 복수의 레지스터 파일들 각각이 상기 제 1 모드에 있지 않다고 결정하는 단계를 더 포함하는,
    방법.
  16. 제 15 항에 있어서,
    상기 제 2 모드의 복수의 레지스터 파일들 사이에서 상기 분기 예측 정보를 분할하는 단계를 더 포함하는,
    방법.
  17. 다중-모드 레지스터 파일로서,
    제 1 모드 동안 피연산자를 저장하기 위한 수단; 및
    제 2 모드에서 상기 피연산자를 보조 정보로 대체하기 위한 수단
    을 포함하는, 다중-모드 레지스터 파일.
  18. 제 17 항에 있어서,
    상기 보조 정보는 분기 예측 정보인,
    다중-모드 레지스터 파일.
  19. 제 18 항에 있어서,
    상기 다중-모드 레지스터 파일이 상기 제 1 모드에 있는지를 결정하기 위한 수단; 및
    상기 다중-모드 레지스터 파일이 상기 제 1 모드에 있지 않다고 결정했다면, 상기 다중-모드 레지스터 파일이 상기 제 2 모드에 있는지를 결정하기 위한 수단을 더 포함하는,
    다중-모드 레지스터 파일.
  20. 제 19 항에 있어서,
    상기 제 2 모드에 진입하기 위한 복수의 다중-모드 레지스터 파일들 각각에 대한 우선순위를 결정하기 위한 수단을 더 포함하고,
    상기 다중-모드 레지스터 파일은 상기 복수의 다중-모드 레지스터 파일들 중 하나인,
    다중-모드 레지스터 파일.
  21. 멀티-스레드 시스템으로서,
    상기 멀티-스레드 시스템의 각각의 스레드에 대한 다중-모드 레지스터 파일 ― 상기 다중-모드 레지스터 파일은 제 1 모드에서 상기 스레드에 대한 피연산자를 저장하고, 제 2 모드에서 상이한 스레드에 대한 분기 이력 테이블을 저장하도록 구성됨 ― ; 및
    상기 다중-모드 레지스터 파일이 상기 제 1 모드 또는 상기 제 2 모드에 있는지를 결정하기 위한 각 다중-모드 레지스터 파일에 대한 다중-모드 레지스터 파일 레지스터
KR1020107028749A 2008-05-21 2009-05-08 분기 예측에 이용하기 위한 다중-모드 레지스터 파일 KR101302611B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/124,357 US8639913B2 (en) 2008-05-21 2008-05-21 Multi-mode register file for use in branch prediction
US12/124,357 2008-05-21
PCT/US2009/043331 WO2009142928A1 (en) 2008-05-21 2009-05-08 Multi-mode register file for use in branch prediction

Publications (2)

Publication Number Publication Date
KR20110019751A true KR20110019751A (ko) 2011-02-28
KR101302611B1 KR101302611B1 (ko) 2013-09-02

Family

ID=40908655

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020107028749A KR101302611B1 (ko) 2008-05-21 2009-05-08 분기 예측에 이용하기 위한 다중-모드 레지스터 파일

Country Status (7)

Country Link
US (1) US8639913B2 (ko)
EP (1) EP2304551B1 (ko)
JP (1) JP5280521B2 (ko)
KR (1) KR101302611B1 (ko)
CN (1) CN102037443B (ko)
TW (1) TW201013524A (ko)
WO (1) WO2009142928A1 (ko)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9582275B2 (en) 2011-05-31 2017-02-28 Intel Corporation Method and apparatus for obtaining a call stack to an event of interest and analyzing the same
US20140365749A1 (en) * 2011-12-29 2014-12-11 Venkateswara R. Madduri Using a single table to store speculative results and architectural results
GB201300608D0 (en) * 2013-01-14 2013-02-27 Imagination Tech Ltd Indirect branch prediction
GB2533415B (en) * 2014-12-19 2022-01-19 Advanced Risc Mach Ltd Apparatus with at least one resource having thread mode and transaction mode, and method
US9507598B1 (en) * 2015-12-15 2016-11-29 International Business Machines Corporation Auxiliary branch prediction with usefulness tracking
CN105653472A (zh) * 2015-12-31 2016-06-08 北京中科晶上科技有限公司 缓存辅助的向量寄存器堆的缓冲方法
US10884745B2 (en) 2017-08-18 2021-01-05 International Business Machines Corporation Providing a predicted target address to multiple locations based on detecting an affiliated relationship
US10884746B2 (en) 2017-08-18 2021-01-05 International Business Machines Corporation Determining and predicting affiliated registers based on dynamic runtime control flow analysis
US10534609B2 (en) 2017-08-18 2020-01-14 International Business Machines Corporation Code-specific affiliated register prediction
US10884747B2 (en) 2017-08-18 2021-01-05 International Business Machines Corporation Prediction of an affiliated register
US11150908B2 (en) 2017-08-18 2021-10-19 International Business Machines Corporation Dynamic fusion of derived value creation and prediction of derived values in a subroutine branch sequence
US10908911B2 (en) 2017-08-18 2021-02-02 International Business Machines Corporation Predicting and storing a predicted target address in a plurality of selected locations
US10719328B2 (en) 2017-08-18 2020-07-21 International Business Machines Corporation Determining and predicting derived values used in register-indirect branching
US11150904B2 (en) 2017-08-18 2021-10-19 International Business Machines Corporation Concurrent prediction of branch addresses and update of register contents
US11061575B2 (en) 2017-09-19 2021-07-13 International Business Machines Corporation Read-only table of contents register
US10896030B2 (en) 2017-09-19 2021-01-19 International Business Machines Corporation Code generation relating to providing table of contents pointer values
US10620955B2 (en) 2017-09-19 2020-04-14 International Business Machines Corporation Predicting a table of contents pointer value responsive to branching to a subroutine
US10713050B2 (en) 2017-09-19 2020-07-14 International Business Machines Corporation Replacing Table of Contents (TOC)-setting instructions in code with TOC predicting instructions
US10884929B2 (en) 2017-09-19 2021-01-05 International Business Machines Corporation Set table of contents (TOC) register instruction
US10725918B2 (en) 2017-09-19 2020-07-28 International Business Machines Corporation Table of contents cache entry having a pointer for a range of addresses
US10705973B2 (en) 2017-09-19 2020-07-07 International Business Machines Corporation Initializing a data structure for use in predicting table of contents pointer values

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4829422A (en) * 1987-04-02 1989-05-09 Stellar Computer, Inc. Control of multiple processors executing in parallel regions
US5210831A (en) * 1989-10-30 1993-05-11 International Business Machines Corporation Methods and apparatus for insulating a branch prediction mechanism from data dependent branch table updates that result from variable test operand locations
JP3776449B2 (ja) * 1992-12-23 2006-05-17 セントル エレクトロニク オルロジェール ソシエテ アノニム マルチタスク低電力制御装置
US5950012A (en) * 1996-03-08 1999-09-07 Texas Instruments Incorporated Single chip microprocessor circuits, systems, and methods for self-loading patch micro-operation codes and patch microinstruction codes
US6092175A (en) * 1998-04-02 2000-07-18 University Of Washington Shared register storage mechanisms for multithreaded computer systems with out-of-order execution
US6357016B1 (en) * 1999-12-09 2002-03-12 Intel Corporation Method and apparatus for disabling a clock signal within a multithreaded processor
US7017073B2 (en) * 2001-02-28 2006-03-21 International Business Machines Corporation Method and apparatus for fault-tolerance via dual thread crosschecking
US20020194461A1 (en) * 2001-05-04 2002-12-19 Ip First Llc Speculative branch target address cache
US6954846B2 (en) * 2001-08-07 2005-10-11 Sun Microsystems, Inc. Microprocessor and method for giving each thread exclusive access to one register file in a multi-threading mode and for giving an active thread access to multiple register files in a single thread mode
US6981113B2 (en) * 2003-04-21 2005-12-27 Intel Corporation Storage registers for a processor pipeline
US7120784B2 (en) 2003-04-28 2006-10-10 International Business Machines Corporation Thread-specific branch prediction by logically splitting branch history tables and predicted target address cache in a simultaneous multithreading processing environment
JP2005284749A (ja) * 2004-03-30 2005-10-13 Kyushu Univ 並列処理コンピュータ
US7278012B2 (en) * 2005-06-02 2007-10-02 Qualcomm Incorporated Method and apparatus for efficiently accessing first and second branch history tables to predict branch instructions
US7877587B2 (en) * 2006-06-09 2011-01-25 Arm Limited Branch prediction within a multithreaded processor
US7454596B2 (en) * 2006-06-29 2008-11-18 Intel Corporation Method and apparatus for partitioned pipelined fetching of multiple execution threads
US7760576B2 (en) * 2007-11-08 2010-07-20 Qualcomm Incorporated Systems and methods for low power, high yield memory

Also Published As

Publication number Publication date
JP5280521B2 (ja) 2013-09-04
KR101302611B1 (ko) 2013-09-02
JP2011521382A (ja) 2011-07-21
US20090292906A1 (en) 2009-11-26
TW201013524A (en) 2010-04-01
EP2304551A1 (en) 2011-04-06
EP2304551B1 (en) 2017-03-29
CN102037443B (zh) 2014-07-09
US8639913B2 (en) 2014-01-28
WO2009142928A1 (en) 2009-11-26
CN102037443A (zh) 2011-04-27

Similar Documents

Publication Publication Date Title
KR101302611B1 (ko) 분기 예측에 이용하기 위한 다중-모드 레지스터 파일
KR101132484B1 (ko) 다중-스테이지 데이터 프로세싱 파이프라인에서 명령들을 실행하는 시스템 및 방법
US9235418B2 (en) Register files for a digital signal processor operating in an interleaved multi-threaded environment
US7584233B2 (en) System and method of counting leading zeros and counting leading ones in a digital signal processor
US20060230253A1 (en) Unified non-partitioned register files for a digital signal processor operating in an interleaved multi-threaded environment
JP5722389B2 (ja) キャッシュライン置換のためのシステムおよび方法
KR20080005589A (ko) 멀티-스레드 프로세서에서 프로그램 스레드들을 실행하는시스템 및 방법
KR20130051999A (ko) 인스트럭션 페치 유닛을 전원 차단하여 프로세서에서의 전력 소모를 저감하는 방법 및 장치
JP2005514678A (ja) 集中デバイス・アプリケーション用の効果的な処理を備えたマルチスレッド・プロセッサ
US9715392B2 (en) Multiple clustered very long instruction word processing core
EP2256948A2 (en) Arithmethic logic and shifting device for use in a processor
US7849466B2 (en) Controlling execution mode of program threads by applying a mask to a control register in a multi-threaded processor
KR101239272B1 (ko) 하드웨어 프리페치 어드레스 및 산술 연산 값을 계산하기 위한 듀얼 함수 가산기
KR20070118705A (ko) 레지스터 파일에 액세스하기 위해 프리디케이트 값을이용하는 시스템 및 방법

Legal Events

Date Code Title Description
A201 Request for examination
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: 20170629

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20180628

Year of fee payment: 6