KR20100126442A - 실행 유닛 내의 데이터 전달을 위한 시스템 및 방법 - Google Patents

실행 유닛 내의 데이터 전달을 위한 시스템 및 방법 Download PDF

Info

Publication number
KR20100126442A
KR20100126442A KR1020107021442A KR20107021442A KR20100126442A KR 20100126442 A KR20100126442 A KR 20100126442A KR 1020107021442 A KR1020107021442 A KR 1020107021442A KR 20107021442 A KR20107021442 A KR 20107021442A KR 20100126442 A KR20100126442 A KR 20100126442A
Authority
KR
South Korea
Prior art keywords
address
data
memory
execution
read
Prior art date
Application number
KR1020107021442A
Other languages
English (en)
Other versions
KR101221512B1 (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 KR20100126442A publication Critical patent/KR20100126442A/ko
Application granted granted Critical
Publication of KR101221512B1 publication Critical patent/KR101221512B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • 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/3824Operand accessing
    • 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/3824Operand accessing
    • G06F9/3826Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
    • G06F9/3828Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage with global bypass, e.g. between pipelines, between clusters
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units

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)
  • Memory System Of A Hierarchy Structure (AREA)
  • Advance Control (AREA)

Abstract

실시예에서, 실행 유닛의 후 기록 스테이지 동안, 다수의 실행 유닛들을 포함하는 인터리빙되는 멀티-스레드(IMT) 프로세서 내의 실행 파이프라인에서 제 1 명령의 실행으로부터 레지스터 파일에 기록될 결과와 관련되는 기록 식별자와 제 2 명령과 관련되는 판독 식별자를 비교하는 단계를 포함하는, 방법이 개시된다. 상기 기록 식별자가 상기 판독 식별자와 매칭하면, 상기 방법은 후속하는 판독 스테이지에서 상기 실행 유닛에 의한 이용을 위해 상기 실행 유닛의 로컬 메모리에 상기 결과를 저장하는 단계를 더 포함한다.

Description

실행 유닛 내의 데이터 전달을 위한 시스템 및 방법{SYSTEM AND METHOD OF DATA FORWARDING WITHIN AN EXECUTION UNIT}
본 개시물은 일반적으로 실행 유닛에서의 데이터 전달의 시스템 및 방법에 관한 것이다.
종래의 프로세서들에서, 명령의 실행은 몇몇 스테이지들을 필요로 할 수 있다. 프로그램 시퀀스 내에서, 데이터-의존(data-dependent) 명령들은 제 1 명령이 상기 스테이지들 각각을 통해 프로세싱되고 제 1 명령으로부터의 결과를 이용하는 제 2 명령을 실행하기 전에 레지스터에 결과가 기록되도록 하는 시간을 허용하기 위해 통상적으로 분리된다. 본 예시에서, 몇몇 데이터-독립 명령들은 결과가 후속 명령의 실행에 필요하기 전에 생성되고 저장되도록 하는 시간을 허용하기 위해 명령들의 시퀀스 내의 데이터-의존 명령들을 분리하기 위해 이용될 수 있다. 데이터-의존 명령들을 분리하기 위해 데이터-독립 명령들의 이용을 통해, 파이프라인 스톨(stall)은 프로세서 파이프라인이 용량에서 또는 그 근처에서 동작하게 함으로써 감소될 수 있다.
현대의 컴파일러들은 시퀀스 밖에서 명령들을 실행함으로써 실행 파이프라인 유닛 스톨들을 감소시키려고 한다. 특히, 실행될 준비가 된 명령들 및/또는 데이터 독립 명령들은 아직 준비되지 않은 명령들(즉, 다른 실행 중인 명령으로부터 결정되지 않은 데이터에 의존적일 수 있는 명령들)의 앞에 위치한다. 통상적으로, 컴파일러 애플리케이션은 이러한 데이터 의존 명령들을 인식하기 위해 이용될 수 있고, 데이터-의존 명령들을 프로그램 시퀀스 내의 대응하는 데이터-생성 명령들로부터 분리함으로써 파이프라인 스톨들을 감소시키기 위해 프로그램 시퀀스 내의 명령들을 조직할 수 있다.
특정 실시예에서, 실행 유닛의 후 기록 스테이지 동안, 다수의 실행 유닛들을 포함하는 인터리빙되는 멀티-스레드(IMT) 프로세서 내의 실행 파이프라인에서 제 1 명령의 실행으로부터 레지스터 파일에 기록될 결과와 관련되는 기록 식별자와 제 2 명령과 관련되는 판독 식별자를 비교하는 단계를 포함하는 방법이 개시된다. 상기 기록 식별자가 상기 판독 식별자와 매칭하면, 상기 방법은 후속하는 판독 스테이지에서 상기 실행 유닛에 의한 이용을 위해 상기 실행 유닛의 로컬 메모리에 상기 결과를 저장하는 단계를 더 포함한다.
다른 특정한 실시예에서, 제 1 패킷의 명령들과 관련되는 제 1 어드레스로부터 제 2 패킷의 명령들과 관련되는 제 2 어드레스를 결정하는 단계를 포함하는 방법이 개시된다. 제 2 어드레스를 결정하는 단계가 멀티-웨이 캐시와 관련되는 캐시 라인의 경계를 초과하였는지를 결정하기 위해 데이터 유닛의 가산기의 캐리 비트가 검사된다. 경계를 초과하지 않으면, 이전의 태그 어레이 룩업 동작으로부터 결정되었던 상기 제 1 어드레스와 관련되는 변환 색인 버퍼(TLB) 룩업 데이터 및 태그 어레이 데이터를 이용하여 제 2 어드레스로부터 데이터를 리트리브하기 위해 상기 멀티-웨이 캐시가 액세스된다.
또 다른 특정 실시예에서, 하나 이상의 데이터 값들을 저장하기 위한 로컬 메모리를 가지는 상기 실행 유닛을 포함하는 멀티-스레드 프로세서가 개시된다. 상기 실행 유닛은 판독 피연산자와 관련되는 판독 어드레스가 이전의 후 기록 동작과 관련되는 후 기록 어드레스와 매칭하는지를 결정하도록 적응되는 로직 회로를 더 포함한다. 상기 로직 회로는 상기 판독 어드레스가 상기 후 기록 어드레스와 매칭하면 상기 로컬 메모리에 상기 하나 이상의 데이터 값들을 저장하도록 적응된다.
또 다른 특정 실시예에서, 다수의 실행 유닛들을 포함하는 인터리빙되는 멀티-스레드(IMT) 프로세서 내의 실행 파이프라인에서 제 1 패킷의 명령들의 실행으로부터 레지스터 파일에 기록될 결과와 관련되는 기록 식별자와 제 2 패킷의 명령들과 관련되는 판독 식별자를 비교하기 위한 수단을 포함하는 프로세서가 개시된다. 상기 프로세서는 상기 기록 식별자가 상기 판독 식별자와 매칭하면, 상기 제 2 패킷의 명령들의 실행 시 이용을 위해 실행 유닛에서 로컬하게 상기 결과를 선택적으로 저장하기 위한 수단을 더 포함한다.
데이터 전달 로직 및 로컬 메모리를 포함하는 프로세서의 실시예에 의해 제공되는 특정 이점은 제 1 명령의 실행으로부터의 결과가 로컬하게 저장될 수 있고, 레지스터 판독 파일 동작을 수행하지 않고, 제 2 명령을 실행하는데 이용될 수 있다는 점에서 제공된다. 레지스터 판독 파일 동작들을 선택적으로 스킵함으로써, 레지스터 파일 전력 소모가 감소될 수 있다.
다른 특정 이점은 제 2 명령의 제 2 어드레스가 제 1 명령의 제 1 어드레스와 동일한 캐시 라인과 관련될 때 태그 어레이 룩업 동작들이 선택적으로 스킵될 수 있다는 점에서 제공된다. 본 예시에서, 제 2 어드레스에 대한 태그 어레이 룩업 동작은 스킵될 수 있고 제 1 어드레스와 관련되는 이전의 룩업 동작으로부터 결정되는 태그 어레이 정보가 재이용될 수 있다. 태그 어레이 룩업 동작들을 선택적으로 스킵함으로써, 전체적인 전력 소모가 감소될 수 있다.
또 다른 특정 이점은 데이터를 선택적으로 전달하고 태그 어레이 룩업 및 TLB 룩업 동작들을 선택적으로 스킵하기 위해 동일한 로직 회로가 이용될 수 있다는 점에서 제공된다. 부가적으로, 패킷들의 명령들을 배열하여 데이터를 전달(즉, 인트라-슬롯 전달)하기 위한, 태그 어레이 정보를 재이용(즉, 태그 어레이 룩업 동작을 스킵)하기 위한 그리고 TLB 룩업 동작들을 선택적으로 스킵하기 위한 기회들을 생성하기 위해 어셈블러 또는 컴파일러가 이용될 수 있다. 이러한 데이터의 전달 및 태그 룩업 및/또는 TLB 룩업 동작들의 선택적인 스킵은 전체적인 판독 동작들의 수를 감소시켜서, 전체적인 전력 소모를 감소시킬 수 있다.
본 개시물의 다른 양상들, 이점들 및 특징들이 다음의 섹션들: 도면의 간단한 설명, 발명을 실시하기 위한 구체적인 내용 및 특허청구범위를 포함하는, 전체 명세서의 개관 후에 명백해질 것이다.
도 1은 데이터를 전달하도록 적응되는 실행 유닛을 포함하는 시스템의 특정 예시적인 실시예의 블록도이다;
도 2는 데이터를 전달하도록 적응되는 실행 유닛의 특정 예시적인 실시예의 블록도이다;
도 3은 데이터 전달 로직 회로 및 태그 어레이 룩업/변환 색인 버퍼(TLB) 룩업 스킵 로직 회로를 가지는 공유 제어 유닛을 포함하는 시스템의 특정 실시예의 블록도이다;
도 4는 데이터를 선택적으로 전달하고 태그 어레이 룩업 및 변환 색인 버퍼(TLB) 동작들을 선택적으로 스킵하도록 적응되는 프로그램어블 로직 회로(PLC)를 포함하는 프로세서의 특정 실시예의 블록도이다;
도 5는 데이터를 전달하도록 적응되는 실행 파이프라인 내의 프로세스들의 예시적인 실시예의 타이밍 다이어그램이다;
도 6은 실행 파이프라인 내의 전달 로직 회로의 특정 예시적인 예시의 다이어그램이다;
도 7은 태그 어레이 룩업 동작을 스킵하도록 적응되는 실행 파이프라인 내의 프로세스들의 예시적인 실시예의 타이밍 다이어그램이다;
도 8은 선택적으로 데이터를 전달하고 태그 어레이 룩업 또는 변환 색인 버퍼(TLB) 룩업 동작을 선택적으로 스킵하도록 적응되는 시스템의 특정 예시적인 실시예의 블록도이다;
도 9는 실행 유닛 내에서 데이터를 전달하는 방법의 특정 예시적인 실시예의 흐름도이다;
도 10은 태그 어레이 룩업 동작을 선택적으로 스킵하는 방법의 특정 예시적인 실시예의 흐름도이다;
도 11은 태그 어레이 룩업 동작 및/또는 변환 색인 버퍼(TLB) 룩업 동작을 선택적으로 스킵하는 방법의 특정 예시적인 실시예의 흐름도이다; 그리고
도 12는 전달 로직 회로 및 룩업 스킵 로직 회로를 가지는 실행 유닛을 포함하는 통신 디바이스의 특정 예시적인 실시예의 블록도이다.
도 1은 전달(forward) 로직 회로 및 로컬(local) 메모리를 구비하는 적어도 하나의 실행 유닛을 포함하는 프로세싱 시스템(100)의 특정 예시적인 실시예의 블록도이다. 프로세싱 시스템(100)은 버스 인터페이스(104)를 통해 명령 캐시(106) 및 데이터 캐시(112)와 통신하도록 적응되는 메모리(102)를 포함한다. 명령 캐시(106)는 버스(110)에 의해 시퀀서(sequencer; 114)에 커플링된다. 부가적으로, 시퀀서(114)는 인터럽트 레지스터로부터 수신될 수 있는, 일반 인터럽트들(general interrupts; 116)과 같은, 인터럽트들을 수신하도록 적응된다. 또한 시퀀서(114)는 슈퍼바이저(supervisor) 제어 레지스터들(132) 및 글로벌(global) 제어 레지스터들(134)에 커플링된다.
특정 실시예에서, 명령 캐시(106)는 복수의 현재 명령 레지스터(current instruction register)들을 통해 시퀀서(114)에 커플링되는데, 이는 버스(110)에 커플링되고 프로세싱 시스템(100)의 특정 스레드(thread)들과 관련될 수 있다. 특정 실시예에서, 프로세싱 시스템(100)은 6 개의 스레드들을 포함하는 인터리빙(interleaving)되는 멀티-스레드 프로세서(multi-threaded processor)이다.
시퀀서(114)는 제 1 명령 실행 유닛(118), 제 2 명령 실행 유닛(120), 제 3 명령 실행 유닛(122) 및 제 4 명령 실행 유닛(124)에 커플링된다. 각각의 명령 실행 유닛(118, 120, 122 및 124)은 제 2 버스(128)를 통해 범용 레지스터 파일(general register file; 126)에 커플링될 수 있다. 범용 레지스터 파일(126)은 또한 제 3 버스(130)를 통해 시퀀서(114), 데이터 캐시(112) 및 메모리(102)에 커플링될 수 있다. 슈퍼바이저 제어 레지스터들(132) 및 글로벌 제어 레지스터들(134)은 인터럽트들을 수용할 것인지를 결정하고 명령들의 실행을 제어하기 위해 시퀀서(114) 내의 제어 로직에 의해 액세스될 수 있는 비트들을 저장할 수 있다.
제 1 실행 유닛(118)은 전달 로직 회로(136) 및 로컬 메모리(138)를 포함한다. 제 2 실행 유닛(120)은 전달 로직 회로(140) 및 로컬 메모리(142)를 포함한다. 제 3 실행 유닛(122)은 전달 로직 회로(144) 및 로컬 메모리(146)를 포함한다. 제 4 실행 유닛(124)은 전달 로직 회로(148) 및 로컬 메모리(150)를 포함한다. 각각의 실행 유닛들(118, 120, 122 및 124)은 전달 로직(즉, 각각의 전달 로직(136, 140, 144 및 148))을 포함하는 것으로 표시되는 반면, 특정 실시예들에서, 전달 로직(136)과 같은, 전달 로직은 실행 유닛들(120, 122 및 124)과 같은, 다른 실행 유닛들에 의해 공유될 수 있음을 이해해야 한다. 예를 들어, 특정 실시예에서, 실행 유닛(118)은 전달 로직(136) 및 로컬 메모리(138)를 포함할 수 있고, 다른 실행 유닛들(120, 122 및 124)은 로컬 메모리들(142, 146 및 150)을 포함하고 전달 로직(136)을 공유할 수 있다. 특정 실시예에서, 하나 이상의 실행 유닛들(118, 120, 120 및 124)은 로컬 메모리를 공유할 수 있다. 예를 들어, 실행 유닛들(118 및 120)이 로컬 메모리(138)를 공유할 수 있는 한편, 실행 유닛들(122 및 124)은 로컬 메모리(146)를 공유할 수 있다. 다른 특정 실시예에서, 전달 로직(136)는 실행 유닛(118)의 외부에 있을 수 있고, 도 4에서 도시되는 제어 유닛(406) 및 실행 유닛들(408, 410, 412 및 414)에 관하여 도시되는 바와 같이, 실행 유닛들(118, 120, 122 및 124)과 통신할 수 있다.
특정 실시예에서, 프로세싱 시스템(100)은 실행 유닛들(118, 120, 122 및 124)에 의해 실행가능한 제 1 패킷의 명령들을 수신하고 제 1 패킷의 명령들로부터의 결과에 의존하는 제 2 패킷의 명령들을 수신하도록 적응된다. 제 1 패킷의 명령들은 4 개의 명령들을 포함할 수 있는데, 이는 실행 유닛들(118, 120, 122 및 124)에 제공될 수 있다. 실행 유닛들(118, 120, 122 및 124)은 디코딩 스테이지, 레지스터 파일 액세스 스테이지, 다수의 실행 스테이지들 및 후 기록(write back) 스테이지를 포함하는 복수의 스테이지들을 통해 제 1 패킷의 명령들로부터 명령들을 프로세싱할 수 있다. 후 기록 스테이지에서, 실행 유닛(118)의 전달 로직(136)은 제 2 패킷의 명령들의 판독 어드레스가 제 1 패킷의 명령들의 후 기록 어드레스와 매칭(matching)한다고 결정할 수 있고, 상기 데이터를 범용 레지스터 파일(126)에 후 기록하고 메모리(138)에 로컬하게 상기 데이터를 저장할 수 있다. 대안적인 실시예에서, 실행 유닛(118)은 각 명령에 대한 판독 어드레스 및 후 기록 어드레스를 결정하기 위해 각각 수신되는 패킷의 명령들 중 적어도 일부의 명령들을 디코딩할 수 있다. 전달 로직 회로(136)는 제 2 패킷의 어드레스와 제 1 패킷의 명령들의 후 기록 어드레스를 비교하고, (즉, 각각의 로컬 메모리(142, 146 또는 150)에 상기 데이터를 저장하기 위해 데이터 전달 제어 신호를 다른 실행 유닛(예를 들어, 명령 실행 유닛들(120, 122 및 124))에 전송하도록 적응된다. 데이터는 제 2 (후속) 패킷의 명령들로부터의 명령을 실행하는데 이용하기 위해 메모리(138, 142, 146 또는 150)로부터 리트리브될 수 있다.
특정 실시예에서, 전달 로직 회로(136)는 제 2 패킷의 명령들 중의 명령이 제 1 패킷의 명령들로부터의 결과를 이용하는지를 검출할 수 있다. 특히, 제 1 명령은 제 2 명령이 데이터를 판독하는 동일한 위치에 데이터를 기록한다. 본 예시에서, 전달 로직 회로(136)는 제 1 패킷의 명령들 내의 명령의 결과가 제 2 패킷의 명령들 내의 명령에 의해 이용되는지를 결정하도록 적응된다. 예시적이고, 비-제한적인 예시들로서, 전달 로직 회로(136)는 명령 캐시(106) 또는 시퀀서(114)를 통해 장래의 명령들에 액세스하는 제어 로직 회로(도시되지 않음)로부터 신호를 수신할 수 있거나; 또는 전달 로직 회로(136)는 어셈블러, 컴파일러, 시퀀서(114) 또는 다른 회로에 의해 세팅될 수 있는 제 1 패킷에서 지정되는 비트과 같은 전달 지시자를 검출할 수 있거나; 또는 전달 로직 회로(136)는 명령 타입에 응답하여 적어도 부분적으로 명령의 결과의 이용을 예측할 수 있다. 다른 실시예에서, 전달 로직 회로(136)는 후속 명령들에 의한 이용을 위해 모든 명령 결과들을 로컬하게 저장하기 위한 제 1 모드에서 동작하거나, 어떠한 명령 결과들도 저장하지 않는 제 2 모드에서 동작하도록 구성가능할 수 있다. 전달 로직 회로(136)는 실행 유닛(118)으로 하여금 버스(128)를 통해 범용 레지스터 파일(126)에 결과를 기록할 뿐만 아니라 로컬 메모리(138)에 실행의 결과를 저장하게 한다. 제 2 패킷의 명령들 중 데이터 의존 명령이 실행 유닛(118)에 제공되면, 전달 로직 회로(136)는 실행 유닛(118)으로 하여금 레지스터 판독 동작을 스킵(skip)하고 로컬 메모리(138)에 저장되는 결과를 액세스하여, 제 2 패킷의 명령들 중 상기 명령을 실행하는 데 있어 상기 결과를 이용하게 한다. 그러므로, 실행 유닛(118)은 전달 로직 회로(136)를 이용하여 범용 레지스터 파일(126)에 대한 다수의 판독 동작들을 감소시킨다.
데이터 의존 명령들이 프로그램 시퀀스 내의 인접 패킷들에서 정렬되도록 패킷들의 명령들을 컴파일함으로써, 컴파일되는 애플리케이션은 실행 유닛들(118, 120, 122 및 124)의 전달 로직 회로(136, 140, 144 및 148)의 이용을 통해 전력 절감을 증진시킬 수 있다. 이전의 명령에 의해 생성되는 데이터는 인접 패킷에 대한 레지스터 판독을 수행하지 않고 인접 패킷에 의해 이용되기 위해, 버퍼, 래치 또는 플립-플롭, 로컬 레지스터 또는 다른 메모리 엘리먼트와 같은, 로컬 메모리(138, 142, 146 또는 150)에 저장될 수 있다. 인접하지 않은 패킷들 사이에서 데이터가 전달될 수 있는 예시적인 실시예에서, 로컬 메모리(138, 142, 146 또는 150)는 하나 이상의 중간 패킷들이 프로세싱되는 동안 데이터의 일시적인 로컬 저장을 위해 하나 이상의 레지스터들을 포함할 수 있다. 특히, 인접 패킷들의 명령들에서 데이터 의존 명령을 정렬함으로써, 컴파일러는 데이터 전달의 가능성을 증가시키고, 이를 통해 스킵되는 판독 명령들의 수를 증가시키고 전체적인 전력 소모를 줄인다.
특정 예시에서, 실행 유닛(118)은 패킷의 명령들로부터 다음 패킷의 명령들로 피연산자들(및/또는 데이터)을 전달하기 위해 전달 로직 회로(136)를 포함한다. 이러한 데이터 전달은 레지스터 판독 파일 동작들의 전체적인 수를 감소시키고 전체적인 레지스터 파일 전력 소모를 감소시킨다. 하나의 데이터-의존 쌍의 명령 패킷들의 예시가 하기 표 1에서 제공된다.
표 1 : 데이터 전달 예시.
// 제 1 패킷의 명령들
{
R7:6 = VALIGNB(R9:8, R7:6, #2)
R15:14 += VDMPY(R13:12, R7:6):≪l :sat
Rl = R21
R3 = ADD(RO, #8)
}
// 제 2 패킷의 명령들
{
Rl 5:14 = VASRW(Rl5:14, #3)// 스케일링 출력
R17:16 += VDMPY(R13:12, R7:6):≪l :sat
RlO = MEMW(Rl ++#4)// 로드(load) 계수들
}
본 예시에서, 제 1 패킷의 명령들과 관련되는 VALIGNB 명령의 실행 시 실행 유닛에 의해 생성되는 레지스터 쌍 R7:6에 저장되는 값이 제 2 패킷과 관련되는 VDMPY 명령의 실행 시 실행 유닛에 이용되는 점을 제외하면, 상기 실행되는 특정 명령들은 본 개시물과 관련되지 않는다. 특정 예시에서, 어셈블러 또는 컴파일러는 VALIGNB 및 후속 VDMPY 모두가 실행 유닛(118)과 같은, 동일한 실행 슬롯에서 실행되도록 명령들을 배열할 수 있다. 부가적으로, 어셈블러 또는 컴파일러는 프로그램 시퀀스 내의 제 1 명령 패킷의 바로 뒤를 잇도록 제 2 명령 패킷을 배열할 수 있다.
도 2는 전달 로직 회로(220) 및 메모리(222)를 가지는 실행 유닛(202)을 포함하는 시스템(200)의 일부의 블록도이다. 시스템(200)은 실행 유닛(202)의 외부에 존재하고 다수의 메모리 위치들(208, 210, 212, 214, 216 및 218)을 가지는 메모리 디바이스(204)를 포함한다. 각각의 메모리 위치들(208, 210, 212, 214, 216 및 218)은 버스(206)를 통해 실행 유닛(202)에 액세스 가능한 메모리 어드레스와 관련될 수 있다. 일반적으로, 메모리 위치들(208, 210, 212, 214, 216 및 218)은 버스 트레이스의 상이한 길이들에 의해 실행 유닛(202)으로부터 분리된다. 부가적으로, 메모리(204) 내의 특정 메모리 위치들로의 실행 유닛(202)에 의한 각각의 액세스는 전력을 소모한다. 일반적으로, 실행 유닛(202)은 명령을 수신하고, 상기 명령을 디코딩하고, 메모리(204)의 레지스터 파일을 액세스하여 데이터를 리트리브하고, 상기 리트리브되는 데이터를 이용하여 상기 명령을 실행하고, 메모리(204)에 데이터를 후 기록하도록 적응된다.
실행 유닛(202)은 전달 로직 회로(202) 및 로컬 메모리(222)를 포함한다. 전달 로직 회로(220)는 특정 명령의 실행에 의해 생성되는 데이터가 프로그램 시퀀스에서의 다음 명령을 실행하는데 이용될 수 있는 인스턴스들을 검출하도록 적응된다. 이러한 인스턴스에서, 실행 유닛(202)은 제 1 명령의 실행으로부터의 결과를 로컬 메모리(222)에 저장하기 위해 전달 로직(220)을 이용하도록 적응된다. 실행 유닛(202)은 레지스터 파일 판독 동작 또는 메모리 판독 동작을 스킵하고 다음 명령의 실행 동안 로컬 메모리(222)에 저장되는 데이터를 이용함으로써, 메모리 판독 동작을 회피하고 전력을 보존할 수 있다. 일반적으로, 모든 메모리 액세스들을 감소시킴으로써, 전력을 낭비하는, 메모리 판독 동작들의 선택적인 회피를 통해 전력 소모를 보존할 수 있다.
도 3은 데이터 전달 로직 회로(306) 및 룩업(lookup) 스킵 로직 회로(308)를 가지는 공유 제어 유닛(304)을 포함하는 시스템(300)의 블록도이다. 시스템(300)은 공유 제어 유닛(304)에 커플링되는 명령 캐시(302)를 포함한다. 공유 제어 유닛(304)은 서비스 유닛(314), 메모리 유닛(316) 및 데이터 유닛(318)에 커플링된다. 공유 제어 유닛(304)은 또한 명령 유닛(310)과 통신하는, 소스 레지스터 파일(312)에 커플링된다. 또한 명령 유닛(310) 및 데이터 유닛(318)은 멀티-웨이(multi-way) 캐시 메모리와 같은, 메모리(324)에 커플링되는, 버스 유닛(322)을 통해 통신한다. 서비스 유닛(314), 메모리 유닛(316) 및 데이터 유닛(318)은 목적지 레지스터 파일(320)에 커플링된다.
특정 예시적인 실시예에서, 시스템(300)은 이는 결과를 생성하기 위해 데이터 유닛(318)에 의해 실행될 수 있는, 패킷의 명령들을 수신한다. 공유 제어 유닛(304)은 상기 결과가 후속 패킷의 명령들에 의해 이용될 수 있는지를 결정하기 위해 데이터 전달 로직 회로(306)를 이용하도록 적응된다. 공유 제어 유닛(304)은 후속 레지스터 판독 파일 동작을 스킵하기 위해 서비스 유닛(314), 메모리 유닛(316) 및 데이터 유닛(318)과 통신하도록 적응된다. 부가적으로, 공유 제어 유닛(304)은 데이터 유닛(314)이 도 2에서 도시되는 메모리(222) 또는 도 1에서 도시되는 로컬 메모리(138, 142, 146 및 150)와 같은, 로컬 메모리에 상기 결과를 저장하도록 지시하기 위해 데이터 유닛(314)과 통신하도록 적응된다. 또한 공유 제어 유닛(304)은 후속 명령 패킷의 실행 시에 로컬하게 저장되는 데이터를 이용하기 위해 서비스 유닛(314), 메모리 유닛(316) 및 데이터 유닛(318)을 제어하도록 적응된다. 특정 실시예에서, 서비스 유닛(314), 메모리 유닛(316) 및 데이터 유닛(318)은 도 1에서 도시되는 실행 유닛들(118, 120, 122 및 124)에 의해 수행되는 동작들과 유사한 프로세싱 동작들을 협력하여 수행한다.
다른 특정 실시예에서, 제 1 명령과 관련되는 제 1 메모리 어드레스가 제 2 명령과 관련되는 제 2 메모리 어드레스와 메모리 내의 동일한 캐시 라인 내에 존재할 때와 같이, 태그 어레이 룩업 동작을 스킵할지를 결정하기 위해 공유 제어 유닛(304)은 룩업 스킵 로직 회로(308)를 이용하도록 적응된다. 특정 예시에서, 시스템(300)은 "자동-증가 어드레스" 모드에서 동작하고 있을 수 있는데, 여기서 데이터 유닛(318)은 제 1 메모리 어드레스를 결정하고 상기 제 1 메모리 어드레스에 기초하여 제 2 메모리 어드레스를 계산할 수 있다. 예를 들어, 데이터 유닛(318)이 제 1 메모리 어드레스(A)를 결정하고 제 2 메모리 어드레스(A+8)를 계산할 수 있다. 이러한 특정 예시에서, 데이터 유닛(318)은 제 1 패킷의 명령들과 관련되는 적어도 하나의 명령을 수신한다. 데이터 유닛(318)은 상기 명령과 관련되는 메모리 어드레스를 결정하고 제 2 메모리 어드레스를 계산하도록 적응된다.
특정 예시에서, 메모리 어드레스는 n-웨이 캐시 메모리 내의 물리 메모리 어드레스와 관련되는 가상 메모리 어드레스일 수 있다. 본 예시에서, 데이터 유닛(318)은 물리 메모리 어드레스를 결정하기 위해 변환 색인 버퍼(TLB) 룩업 동작을 수행함으로써 가상 대 물리 어드레스 변환을 수행할 수 있다. 데이터 유닛(318)은 물리 메모리 어드레스와 관련되는 데이터 어레이 내의 웨이를 식별하는 태그 데이터를 식별하기 위해 태그 어레이 룩업 동작을 수행할 수 있다. 데이터 유닛(318)은 n-웨이 캐시 메모리로부터 데이터를 리트리브하기 위해 태그 데이터 및 물리 메모리 어드레스 정보를 이용할 수 있다. (멀티-웨이 캐시와 관련되는 웨이를 포함하는) 태그 데이터는 제 2 메모리 어드레스와 함께 로컬 메모리에 저장될 수 있다. 제 2 메모리 어드레스가 데이터 유닛(318)에 의한 이용을 위해 리트리브되면, 데이터 유닛(318)은 제 2 메모리 어드레스 및 제 1 메모리 어드레스가 동일한 캐시 라인 내에 존재하는지를 결정할 수 있다. 제 1 및 제 2 메모리 어드레스들이 n-웨이 캐시 메모리 내의 동일한 캐시 라인과 관련되면, 룩업 스킵 로직 회로(308)는 데이터 유닛(318)이 후속 태그 어레이 룩업 동작을 스킵하고 제 2 메모리 어드레스와 관련되는 n-웨이 캐시 메모리에서 데이터에 액세스하기 위해 제 1 메모리 어드레스로부터의 웨이를 이용하게 지시하도록 적응된다. 제 1 및 제 2 메모리 어드레스들이 n-웨이 캐시 메모리 내의 상이한 캐시 라인들과 관련되면, 룩업 스킵 로직 회로(308)는 변환 색인 버퍼(TLB) 룩업 동작을 수행하지 않고 태그 어레이 룩업 동작을 수행하도록 데이터 유닛(318)에게 지시하도록 적응된다. 데이터 유닛(318)이 제 2 메모리 어드레스가 페이지 경계를 초과(즉, 페이지 크기를 초과한다고)하였다고 결정하면, 룩업 스킵 로직 회로(308)는 제 2 메모리 어드레스와 관련되는 태그 데이터 및 물리 어드레스를 결정하기 위해 데이터 유닛(318)이 TLB 룩업 동작 및 태그 어레이 룩업 동작을 수행하게 지시한다.
특정 예시에서, n-웨이 캐시 메모리의 페이지는 캐시 라인 보다 큰 크기를 가질 수 있다. 예를 들어, 캐시 라인은 32 바이트들을 포함할 수 있고 페이지는 약 4096 비트들(약 5kb)일 수 있다. 본 예시에서, 예를 들어, 자동-증가 어드레스가 8 바이트들만큼 증가한다면, (캐시 라인들이 순차적인 동작들에서 액세스되고 있다고 가정하면) 태그 어레이 데이터는 자동-증가 어드레스 계산이 다음 캐시 라인으로 진행하기 전에 세 번 재이용될 수 있으며, 제 1 TLB 룩업 동작으로부터의 페이지 변환은 다른 TLB 룩업 동작이 수행될 필요가 있기 전에 여러 번(즉, 약 511 번) 재이용될 수 있다.
특히, 후속 명령에 의해 액세스되는 메모리 어드레스가 이전의 메모리 액세스와 동일한 캐시 라인과 관련되면, 이전의 태그 어레이 룩업 동작에서 획득되는 태그 어레이는 후속 메모리 어드레스들에 대해 재이용됨으로써, 후속 태그 어레이 룩업 동작을 피할 수 있다. 다른 특정 예시에서, 페이지 경계가 초과될 때만 TLB 룩업 동작들을 선택적으로 수행함으로써, 전체적인 전력 소모는 TLB를 액세스하는 횟수를 줄임으로써 감소될 수 있다.
도 4는 프로세서 시스템(400)의 블록도이다. 프로세서 시스템(400)은 제어 유닛(406)에 커플링되는, 명령 유닛(402) 및 인터럽트 레지스터들(404)을 포함한다. 제어 유닛(406)은 복수의 실행 유닛들(408, 410, 412 및 414)에 커플링된다. 각각의 실행 유닛들(408, 410, 412 및 414)은 로컬 메모리(426, 428, 430 및 432)를 각각 포함할 수 있다.
제어 유닛(406)은 디코더(416), 제어 레지스터 파일들(418), 범용 레지스터 파일들(420), 프로그램어블 로직 컨트롤러(PLC) 회로(422) 및 인-실리콘 디버거(IDSB) 회로(424)를 포함한다. ISDB 회로(424)는 프로세싱 시스템(400)이 동작하는 동안 소프트웨어를 디버깅하기 위해 이용될 수 있는 JTAG(joint test action group) 기반 하드웨어 디버거를 제공한다. 특정 실시예에서, ISDB 회로(424)는 스레드들의 개별적인 디버깅을 지원하여, 스레드 실행의 일시중지(suspension)을 허용하고, 제어 레지스터 파일들(418) 및 범용 레지스터 파일들(420)을 포함하는, 데이터 메모리 및 명령의 관측(observation) 및 교대(alternation)를 허용한다.
특정 예시적인 실시예에서, 디코더(416)는 명령들을 수신하고 디코딩한다. 디코더(416)는 디코딩되는 명령들과 관련되는 데이터를 PLC 회로(422)에 통신하는데, 이는 제 1 명령 패킷이 후속 명령 패킷들에서의 제 2 명령 패킷에 의해 이용될 결과를 생성할 때를 검출하기 위한 로직을 포함할 수 있다. 순차적인 명령 패킷들 사이의 이러한 데이터 의존성의 검출 시, PLC 회로(422)는 각각의 로컬 메모리(426, 428, 430 또는 432)에 결과를 저장하기 위해 데이터-생성(data-generating) 명령을 실행하고 있는 실행 유닛들(408, 410, 412 및 414) 중 적어도 하나에 대한 제어 신호를 생성하도록 적응된다. 실행 유닛이 후속 명령의 실행 시 로컬하게 저장되는 데이터(즉, 로컬 메모리(426)에 저장되는 데이터)를 이용할 수 있도록, PLC(422)는 데이터-의존 명령을 후속 명령 패킷으로부터 선택되는 실행 유닛(예를 들어, 실행 유닛(408))으로 라우팅하기 위해 범용 레지스터 파일들(420) 및 디코더(416)를 제어하도록 적응된다. 본 예시에서, PLC(422)는 또한 결과가 로컬하게 저장될 때 상기 결과를 리트리브하기 위해 실행 유닛(408)이 (범용 레지스터 파일들(420)과 같은) 메모리를 액세스하는 것을 방지하기 위해 실행 유닛(408) 및 버스(434)를 제어할 수 있다.
특정 예시에서, 실행 유닛(408)은 제어 유닛(406)으로부터 데이터 생성 명령을 수신하고, 상기 명령을 실행하고, 범용 레지스터 파일들(420)에 상기 결과를 후 기록할 수 있다. 실행 유닛(408)은 또한 제어 유닛(406)의 PLC(422)로부터 수신되는 제어 신호에 응답하여 로컬 메모리(426)에 결과를 저장할 수 있다. 실행 유닛(408)은 로컬 메모리(426)로부터의 저장되는 결과를 이용하는 제어 유닛(406)으로부터 다음 명령을 수신할 수 있다. 실행 유닛(408)은 저장되는 결과를 리트리브하고 상기 리트리브되는 결과를 이용하여 다음 명령을 실행하기 위해 로컬 메모리(426)에 액세스할 수 있다. 이러한 특정 예시에서, 실행 유닛(408)은 범용 레지스터 파일(420)로부터 결과를 재판독하지 않고 다음 명령을 실행함으로써, 레지스터 판독 파일 동작을 스킵하고 전력을 보존할 수 있다.
다른 특정 실시예에서, 제어 유닛(406)은 태그 어레이 룩업 동작으로부터 결정되는 태그 어레이 데이터를 선택적으로 재이용하도록 적응된다. 예를 들어, 제 2 어드레스가 자동-증가 특징을 이용하여 제 1 어드레스로부터 계산되면, PLC(422)는 제 2 어드레스가 제 1 어드레스와 상이한 캐시 라인과 관련될 때를 결정하기 위해 캐리 비트(carry bit)를 검사할 수 있다. 예를 들어, 캐시 라인의 폭이 32 바이트들이면, 제 2 어드레스의 제 5 비트는 캐리 비트를 나타낸다. 캐리 비트가 변화하면, 제 2 어드레스는 캐시 메모리 내의 다음 캐시 라인과 관련된다. 일반적으로, PLC(422)는 캐리 비트가 제 2 어드레스는 제 1 명령과 상이한 캐시 라인과 관련됨을 나타낼 때까지 이전의 태그 어레이 룩업 동작으로부터 태그 어레이 데이터를 재이용하도록 실행 유닛들(408, 410, 412 및 414)에게 지시한다. 본 예시에서, PLC(422)는 실행 유닛들(408, 410, 412 및 414)로 하여금 변환 색인 버퍼(TLB) 룩업 동작을 수행하지 않고 새로운 태그 어레이 룩업 동작을 수행하게 한다.
또 다른 특정 실시예에서, 제어 유닛(406)은 변환 색인 버퍼(TLB) 룩업 동작을 선택적으로 수행하도록 적응된다. 특히, PLC(422)는 페이지 경계를 초과하였음을 계산되는 메모리 어드레스가 나타낼 때를 결정하기 위해 제 2 메모리 어드레스의 계산으로부터 캐리 비트를 검사할 수 있다. 예를 들어, 메모리 어레이의 페이지 크기가 약 4096 비트들(즉, 4kb)이면, 제 2 메모리 어드레스의 제 11 비트가 캐리 비트를 나타낼 수 있다. 따라서, 제 2 메모리 어드레스의 제 11 비트가 변화하면, 페이지 경계가 초과되고 PLC(422)는 실행 유닛들 중 하나(408, 410, 412 또는 414)로 하여금 TLB 룩업 동작을 개시하게 하는데, 이는 태그 어레이 룩업 동작이 뒤를 이을 수 있다. 본 예시에서, 태그 어레이 룩업 동작들은 TLB 룩업 동작들보다 더 빈번히 발생할 수 있다. PLC(422)는 태그 어레이 룩업 동작 및 TLB 룩업 동작 중 하나 또는 모두를 선택적으로 스킵하도록 적응됨으로써, 전체적인 전력 소모를 줄일 수 있다.
도 5는 데이터 전달 로직을 포함하는 실행 유닛의 명령 사이클(500)의 특정 예시의 다이어그램이다. 일반적으로, 명령 사이클(500)은 특정 스레드의 관점에서 실행 유닛의 다수의 스테이지들을 나타낸다. 실행 유닛은 일반적으로 후 기록 스테이지(502), 디코딩 스테이지(504), 레지스터 판독 스테이지(506), 하나 이상의 실행 스테이지들(508, 510 및 512) 및 제 2 후 기록 스테이지(514)를 포함하는 하나 이상의 스테이지들 동안 데이터 및 명령들을 프로세싱한다. 명령 사이클(500)은 하나의 후 기록 스테이지(후 기록 스테이지(514))만을 포함하고, 그리고나서 실행 사이클이 디코딩 스테이지(504)에서 시작하면서, 반복된다는 점을 이해해야 한다. 후 기록 스테이지(502)가 논의를 위해 도시된다.
일반적으로, 후 기록 스테이지(502)에서, 이전에 실행되는 명령으로부터의 결과가 516에서, 범용 레지스터 파일과 같은, 레지스터에 후 기록된다. (1 내지 4 개의 명령들 중 하나를 포함할 수 있는) 다음 패킷의 명령들이 수신되고 수신되는 패킷의 판독 식별자가 518에서, 레지스터에 기록되었던 기록 결과와 관련되는 기록 식별자와 비교된다. 판독 식별자 및 기록 식별자가 매칭하면, 기록 결과는 (520에서) 실행 유닛에 로컬하게 저장될 뿐만 아니라, 516에서 레지스터에 후 기록된다. 본 예시에서, (506에서) 레지스터 판독이 스킵될 수 있으며, 실행 유닛에 로컬하게 저장되는 데이터가 522에서, 재이용될 수 있다. 524에서, 명령은 실행 유닛에 로컬하게 저장되는 데이터 또는 레지스터 판독 단계(506) 동안 판독되는 데이터 중 적어도 하나를 이용하여 실행된다. 그러므로, (518에서) 판독 식별자 및 기록 식별자가 매칭할 때, (506에서) 레지스터 판독 스테이지가 스킵되고, 로컬하게 저장되는 데이터가 이용됨으로써, 데이터 전달을 가능하게 할 수 있다.
특정 예시적인 실시예에서, 도 5에서 도시되는, 실행 유닛 스테이지들(504, 506, 508, 510, 512 및 514)은 인터리빙되는 멀티스레드 프로세서 내의 실행 유닛의 사이클들을 나타낸다. 부가적으로, 후 기록 스테이지(502)는 이전의 명령의 실행 사이클의 최종 스테이지를 나타낸다. 판독 파일 스테이지(506)에서 레지스터 판독 파일 동작을 수행하지 않고, 이전의 명령으로부터의 데이터가 (522에서) 실행 유닛의 로컬 메모리로부터 리트리브될 수 있고, 524에서(즉, 하나 이상의 실행 스테이지들(508, 510 및 512) 동안), 다음의 명령과 함께 프로세싱될 수 있다. 특정 예시적인 실시예에서, 각각의 스테이지들(504, 516, 508, 510, 512 및 514)은 특정 동작들이 수행되는 클록 사이클들을 나타낼 수 있다.
도 6은 프로세서의 실행 유닛 내의 데이터 전달 로직(600)의 특정 예시적인 실시예의 블록도이다. 본 예시에서, 데이터 전달 로직(600)은 후 기록 스테이지(602), 디코딩 스테이지(604) 및 판독 레지스터 파일 스테이지(606)의 관점에서 도시된다. 예시적인 실시예에서, 데이터 전달 로직(600)은 레지스터 파일의 대표적인 레지스터들 "S" 및 "T"를 이용하여 판독 및 기록 동작들을 프로세싱할 수 있는, 대표적인 슬롯 2와 같은, 다수의 슬롯들 중 단일 프로세싱 슬롯을 나타낸다.
후 기록 스테이지(602)에 관하여, 전달 로직(600)은 비교기들(608 및 610), 논리 OR 게이트(611), 인버터들(614 및 616), 논리 AND 게이트들(618 및 620) 및 레지스터 파일(612)을 포함한다. 전달 로직(600)은 또한 전달 인에이블 플립-플롭 회로(636) 및 전달 데이터 플립-플롭 회로(638)를 포함한다. 비교기(608)는 다음 패킷 레지스터 "S"(Rs) 판독 식별자 정보(622) 및 현재 패킷 기록 식별자 정보(624)를 입력으로서 수신하며, 인버터(614)의 입력에 커플링되는 출력을 제공한다. 인버터(614)의 출력은 논리 AND 게이트(618)의 제 1 입력에 커플링되며, 논리 AND 게이트(618)의 제 2 입력은 슬롯 2 레지스터 "S" 판독 인에이블(s2RsRdEn) 입력(632)에 커플링된다. 논리 AND 게이트(618)는 또한 레지스터 파일(612)의 슬롯 2 레지스터에 커플링되는 출력을 포함한다. 비교기(610)는 (다음 패킷 판독 식별자 정보(622)와 동일할 수 있는) 다음 패킷 레지스터 "T"(Rt) 판독 식별자 정보(626) 및 현재 패킷 기록 식별자 정보(628)를 수신하고, 인버터(616)를 통해 논리 AND 게이트(620)의 입력에 커플링되는, 출력을 제공한다. 논리 AND 게이트(620)는 또한 슬롯 2 레지스터 "T" 판독 인에이블(s2RtRdEn) 입력(634)을 제 2 입력에서 수신하고, 레지스터 파일(612)의 슬롯 2 레지스터에 커플링되는 출력을 제공한다. 비교기들(608 및 610)의 출력들은 또한 전달 인에이블 플립-플롭(636)에 대한 입력들 및 논리 OR 게이트(611)에 대한 입력들로서 제공된다. 전달 데이터 플립-플롭(638)에 대한 인에이블 입력을 제공하는 전달 데이터 플립-플롭(638)은 또한 실행 유닛 데이터 후 기록(630)으로부터 데이터를 수신한다.
전달 로직(600)의 디코딩 스테이지(504)에서, 전달 인에이블 플립-플롭(636)의 출력은 제 2 전달 인에이블 플립-플롭(640)의 입력 및 제 2 전달 데이터 플립-플롭(642)의 인에이블 입력으로서 제공된다. 전달 데이터 플립-플롭(638)은 제 2 전달 데이터 플립-플롭(642)에 데이터 입력을 제공한다.
판독 레지스터 파일 스테이지(606)에서, 제 2 전달 인에이블 플립-플롭(640)은 제 1 다중화기(644)의 선택 입력 및 제 2 다중화기(646)의 선택 입력으로 전달 인에이블 신호를 제공한다. 제 1 다중화기(644)는 제 1 입력에서 전달되는 데이터를 수신하고 제 2 입력에서 레지스터 (S) 데이터를 수신하여 다음 패킷의 명령들의 실행 시 이용하기 위한 전달되는 데이터 또는 레지스터 (S) 데이터를 전달하는 출력(648)을 제공한다. 제 2 다중화기(646)는 제 1 입력에서 전달되는 데이터를 수신하고 제 2 입력에서 레지스터 (T) 데이터를 수신하여 다음 패킷의 명령들의 실행 시 이용하기 위한 전달되는 데이터 또는 레지스터 (T) 데이터를 전달하는 출력(650)을 제공한다.
일반적으로, 비교기(608)는 다음 패킷 판독 식별자 정보(622) 및 현재 패킷 기록 식별자 정보(624)를 수신하도록 적응된다. 비교기(610)는 다음 패킷 판독 식별자 정보(626) 및 현재 패킷 기록 식별자 정보(628)를 수신하도록 적응된다. 다음 패킷 판독 식별자들(622 및 626) 중 하나가 현재 패킷 기록 식별자들(624 및 628) 중 하나와 매칭하면, 상기 매칭을 식별하는 비교기(예를 들어, 비교기들(608 및 610) 중 하나)는 출력으로서 논리 1 값을 제공하여, 전달 데이터 플립-플롭(638)을 인에이블하고 각각의 인버터(614 또는 616) 및 각각의 논리 AND 게이트(618 또는 620)를 통해 대응하는 레지스터 판독 인에이블을 중지한다.
특정 예시적인 실시예에서, 다음 패킷 판독 식별자(622)가 현재 패킷 기록 식별자 정보(624)와 매칭하면, 비교기(608)는 전달 데이터 플립-플롭(638)에 대한 입력으로서 논리 고(high) 출력을 제공한다. 인버터(614)는 논리 고 출력을 반전하고 논리 저(low) 값을 논리 AND 게이트(618)에 입력으로 제공하여, 레지스터 파일(612)로의 슬롯 2 레지스터 (S) 판독 인에이블을 디스에이블 한다. 전달 데이터 플립-플롭(638)은 후 기록 입력(630)을 통해 실행 유닛으로부터 데이터를 수신하고 상기 데이터를 저장한다. 디코딩 스테이지(604) 동안, 데이터는 제 2 전달 데이터 플립-플롭(642)으로 전달된다. 전달되는 데이터는 제 1 다중화기(644) 및 제 2 다중화기(646)에 제공되며, 제 2 전달 인에이블 플립-플롭(640)으로부터의 출력에 기초하여 제 1 출력(648) 및 제 2 출력(650) 중 하나로 선택적으로 제공된다. 제 2 전달 데이터 플립-플롭(642)으로부터 전달되는 데이터 또는 레지스터 데이터 중 하나를 선택하기 위해 제 2 전달 인에이블 플립-플롭(640)은 제 1 다중화기(644)로 비교기(608)의 출력을 제공하고, 제 2 다중화기(646)로 비교기(610)의 출력을 제공한다.
전달 로직(600)은 판독/기록 식별자 매칭에 기초하여 레지스터 판독 동작들을 선택적으로 인에이블하도록 적응된다. 또한 전달 로직(600)은 후속 명령의 재이용을 위해 메모리 어드레스와 관련되는 (웨이 정보와 같은) 태그 어레이 데이터를 선택적으로 캐싱하기 위해 이용될 수 있다. 특정 예시에서, 전달 로직(600) 또는 유사한 로직은 계산되는 어드레스가 다음 캐시 라인과 관련될 때(즉, 태그 어레이 룩업 동작을 발생시키고 변환 색인 버퍼(TLB) 룩업 동작을 스킵함)를 결정하기 위해 계산되는 어드레스와 관련되는 캐리 비트를 검사하도록 적응될 수 있다. 다른 특정 예시에서, 전달 로직 또는 유사한 로직이 계산되는 어드레스가 페이지 경계를 초과할 때(즉, 변환 색인 버퍼(TLB) 룩업 동작 및 태그 어레이 룩업 동작을 발생시킴)를 결정하기 위해 계산되는 어드레스와 관련되는 캐리 비트를 검사하도록 적응될 수 있다. 전달 로직(600) 또는 유사한 로직이 태그 어레이 데이터가 여전히 유효(즉, 제 1 및 제 2 메모리 어드레스의 캐시 라인이 동일)하다고 결정하면, 태그 어레이 데이터는 TLB 룩업 동작 및/또는 태그 어레이 룩업 동작을 수행하지 않고, 제 2 메모리 위치를 액세스할 때 이용하기 위해 전달 데이터 플립 플롭들(638 및 642)과 같은, 데이터 래치에서 래칭(latching)될 수 있다.
도 7은 데이터 전달 로직을 포함하고 선택적으로 룩업 동작을 스킵하도록 적응되는 실행 유닛의 명령 사이클(700)의 특정 예시의 다이어그램이다. 명령 사이클(700)은 일반적으로 후 기록 스테이지(702), 디코딩 스테이지(704), 레지스터 판독 스테이지(706), 하나 이상의 실행 스테이지들(708, 710 및 712) 및 제 2 후 기록 스테이지(714)를 포함하는, 다수의 스테이지들을 포함한다. 명령 사이클(700)은 하나의 후 기록 스테이지(후 기록 스테이지(714))만을 포함하고, 그리고나서 실행 사이클이 디코딩 스테이지(704)에서 시작하면서, 반복된다는 점을 이해해야 한다. 후 기록 스테이지(702)가 논의를 위해 도시된다.
일반적으로, 이전 명령의 실행의 (실행 스테이지(708)와 같은) 실행 스테이지에서, 제 1 메모리 어드레스 및 제 2 메모리 어드레스가 계산될 수 있으며, 제 2 메모리 어드레스는 (도 1에서 도시되는 로컬 메모리(138)와 같은) 로컬 메모리에 저장될 수 있다. 후 기록 스테이지(702) 동안, 이전에 실행된 명령으로부터의 결과가 716에서, 범용 레지스터 파일과 같은, 레지스터 또는 캐시 어드레스에 후 기록된다. 제 2 메모리 어드레스는 718에서, 로컬 메모리로부터 리트리브될 수 있다. 제 2 메모리 어드레스와 관련되는 하나 이상의 캐리 비트들의 값이 상기 하나 이상의 캐리 비트들이 720에서, 자동-증가 동작으로 인해 캐리되는 값을 나타내는지를 결정하기 위해 검사된다. 하나 이상의 캐리 비트들 중 제 1 캐리 비트의 값이 제 1 메모리 어드레스와 상이한 캐시 라인과 관련되는 제 2 메모리 어드레스를 나타내지 않으면, 722에서, 변환 색인 버퍼(TLB) 룩업 동작 및 태그 어레이 룩업 동작은 스킵되고 이전의 태그 어레이 값이 메모리로부터 데이터를 리트리브하기 위해 이용된다. 제 2 메모리 어드레스가 이전의 메모리 어드레스와 동일한 페이지 내의 상이한 캐시 라인과 관련될 때와 같이, 하나 이상의 캐리 비트들 중 제 1 캐리 비트의 값이 캐리되는 값을 나타내고 하나 이상의 캐리 비트들 중 제 2 캐리 비트가 캐리되는 값을 나타내지 않으면, 724에서, TLB 룩업 동작은 스킵되지만, 태그 어레이 룩업 동작은 메모리로부터 데이터를 리트리브하기 위한 태그 어레이 값을 리트리브하기 위해 수행된다. 하나 이상의 캐리 비트들 각각이 캐리 값을 나타내면, 726에서 표시되는 바와 같이, TLB 룩업 동작 및 태그 어레이 룩업 동작이 수행된다.
특정 예시에서, 태그 어레이 룩업 동작이 스킵될 수 있으며 이전의 태그 어레이 룩업 동작으로부터 결정되는 태그 어레이 데이터가 메모리 내의 어드레스에 액세스하기 위해 이용될 수 있다. 특히, 태그 어레이 데이터는 태그 어레이 데이터를 룩업하지 않고 TLB 룩업 동작을 수행하지 않고 메모리 어드레스를 액세스하기 위해 이용될 수 있다.
특정 예시적인 실시예에서, 도 7에서 도시되는, 스테이지들(704, 706, 708, 710, 712 및 714)은 인터리빙되는 멀티스레드 프로세서 내의 실행 유닛의 스테이지들을 나타낼 수 있다. 부가적으로, 특정 실시예에서, 스테이지들(704, 706, 708, 710, 712 및 714)은 클록 사이클들을 나타낼 수 있다.
도 8은 각각 로컬 메모리(809 및 811)를 이용하여 실행 유닛들(808 및 810) 내의 데이터를 선택적으로 데이터를 전달하기 위한 제어 유닛(806)을 가지는 회로 디바이스(820)를 포함하는 시스템(800)의 특정 예시적인 실시예의 블록도이다. 제어 유닛(806)은 또한 태그 어레이(826) 또는 변환 색인 버퍼(TLB) 유닛(862)과 관련되는 룩업 동작을 선택적으로 스킵하도록 적응된다. 특정 예시에서, 제어 유닛(806)은 계산되는 어드레스가 이전에 계산된 어드레스와 동일한 캐시 라인 또는 동일한 페이지 내일 때 이전의 룩업 동작으로부터 태그 어레이 정보 및/또는 변환 색인 버퍼(TLB) 정보를 전달함으로써 태그 어레이(826)에서의 룩업 동작, TLB 유닛(862)에서의 룩업 동작 또는 이들의 조합을 스킵할 수 있다.
일반적으로, 회로 디바이스(802)는 제어 유닛(806), 버스 유닛(812), 조인트 변환 색인 버퍼(TLB) 유닛(813)과 통신하는, 데이터 유닛(804)을 포함한다. 버스 유닛(812)은 레벨 2 TCM(tightly coupled memory)/캐시 메모리(858)와 통신한다. 제어 유닛(806)은 또한 제 1 실행 유닛(808), 제 2 실행 유닛(810), 명령 유닛(814) 및 인-실리콘 디버거(ISDB) 유닛(818)과 통신한다. 명령 유닛(814)은 조인트 TLB 유닛(813) 및 ISDB 유닛(818)과 통신한다. 회로 디바이스(802)는 또한 임베디드 트레이스 유닛(EU; 820) 및 메모리 내장 자체 시험(BIST) 또는 테스트 용이화(DFT) 유닛(822)을 포함한다. ISDB 유닛(818), EU(820) 및 메모리 BIST 유닛(822)은 회로 디바이스(802)에서 동작하는 소프트웨어를 테스트하고 디버깅하기 위한 수단을 제공한다.
제어 유닛(806)은 레지스터 파일들(836 및 838), 제어 로직 회로(840), 인터럽트 제어 회로(842), 제어 레지스터들(844) 및 명령 디코더(848)를 포함한다. 일반적으로, 제어 유닛(806)은 스레드들을 스케줄링하고 명령 유닛(IU; 814)으로부터 명령들을 요청하며, 이들을 디코딩하여 세 개의 실행 유닛들(데이터 유닛(804)(실행 슬롯들 1 및 0(각각 830 및 832)), 실행 유닛(808) 및 실행 유닛(810))로 이슈(issue)한다. 명령 유닛(814)은 명령 변환 색인 버퍼(ITLB; 864), 명령 어드레스 생성 유닛(866), 명령 제어 레지스터들(868), 명령 패킷 정렬 회로(870) 및 명령 캐시(872)를 포함한다. 명령 유닛(IU; 814)은 메인 메모리 또는 명령 캐시(872)로부터 명령들을 패치하고 상기 패치되는 명령들을 제어 유닛(806)에 제공하는 것을 담당하는 프로세서 파이프라인의 프론트 엔드일 수 있다.
데이터 유닛(804)은 캐시가능한 데이터를 포함하는 데이터 어레이(824)를 포함한다. 특정 실시예에서, 데이터 어레이(824)는 16-서브-어레이 메모리 뱅크들에서 배열되는 멀티-웨이 데이터 어레이일 수 있으며, 각 뱅크는 16 개의 웨이들의 16 개의 세트들을 포함한다. 상기 서브-어레이 내의 각 메모리 위치는 더블 워드 또는 8 바이트들의 데이터를 저장하도록 적응될 수 있다. 특정 예시에서, 서브-어레이는 256 개의 더블 워드들(즉, 16 × 16 더블 워드들)을 포함할 수 있다. 데이터 유닛(804)은 또한 데이터 어레이(824)와 관련되는 물리 태그들을 저장하기 위해 태그 어레이(826)를 포함한다. 특정 실시예에서, 태그 어레이(826)는 정적 랜덤 액세스 메모리(SRAM)이다. 또한 데이터 유닛(804)은 캐시 라인과 관련되는 상태를 저장하도록 적응되는 상태(state) 어레이(828)를 포함한다. 특정 예시에서, 상태 어레이(828)는 캐시 미스 이벤트에 응답하여 대체를 위해 캐시 웨이를 공급한다. 데이터 유닛(804)은 또한 일반적으로 동작들의 로딩 및 저장을 수행하는, 실행 유닛(슬롯 1)(830) 및 실행 유닛(슬롯 0)(832)을 포함한다. 데이터 유닛(804)은 데이터 유닛(804)의 동작을 제어하기 위해 제어 회로(834)를 포함한다.
일반적으로, 데이터 유닛(804)은 실행 유닛들(830 및 832)에서의 실행을 위한 명령들을 수신하기 위해 제어 유닛(806)과 통신한다. 데이터 유닛(804)은 또한 버스 서비스 요청들을 위해 버스 유닛(812)과 통신하고 조인트 TLB-메인 메모리 유닛 변환들을 위해 조인트 TLB 유닛(813)과 통신한다.
버스 유닛(812)은 버스 큐 유닛(850), 레벨 2 태그 어레이(854), 비동기 선입선출(first-in first-out; FIFO) 유닛들(852) 및 레벨 2 인터페이스(856)를 포함한다. 레벨 2 인터페이스(856)는 레벨 2 TCM/캐시(858)와 통신한다. 조인트 TLB 유닛(813)은 제어 레지스터들(860) 및 64 개의 엔트리들(862)을 포함하는 조인트 TLB 테이블을 포함한다.
특정 예시적인 실시예에서, 제어 유닛(806)은 제 1 패킷의 명령들 및 제 2 패킷의 명령들을 수신한다. 제어 유닛(806)은 실행을 위해 제 1 패킷의 명령들로부터 실행 유닛(808)으로 명령을 제공할 수 있다. 실행 유닛(808)은 제 1 패킷의 명령들로부터 제 1 명령을 실행하고 제 1 명령과 관련되는 제 1 어드레스를 결정할 수 있다. 특정 예시에서, 실행 유닛(808)은 제 1 명령에 기초하여 제 1 가상 어드레스를 계산하고 상기 제 1 가상 어드레스에 기초하여(즉, 자동-증가 특징을 통해) 제 2 가상 어드레스를 계산할 수 있다. 실행 유닛(808)은 TLB 유닛(813)을 통한 변환 색인 버퍼(TLB) 룩업 동작을 수행하기 위해 제어 유닛(808)을 통해 데이터 유닛(804)과 통신할 수 있다. 데이터 유닛(804)은 TLB 유닛(813)과 통신함으로써 TLB 룩업 동작을 제어할 수 있고 데이터 어레이(824)와 같은, 멀티-웨이 메모리 내의 웨이를 결정하기 위해 태그 어레이(826)를 통해 태그 어레이 룩업 동작을 수행할 수도 있다. TLB 페이지 변환 정보 및 태그 어레이 데이터는 제어 유닛(806)을 통해 실행 유닛(808)에 제공될 수 있다. 제어 유닛(806)은 메모리(809)에 태그 어레이 정보 및/또는 TLB 페이지 변환 정보를 저장하도록 실행 유닛(808)에 지시할 수 있다. 실행 유닛(808)은 태그 어레이 정보에 기초하여 메모리 위치로부터 데이터를 리트리브할 수 있다.
특정 예시에서, 제 2 가상 어드레스가 제 1 가상 어드레스와 동일한 캐시 라인과 관련되면, 실행 유닛(808)은 태그 어레이 룩업 동작 및 TLB 페이지 변환을 수행하지 않고, 데이터 어레이(824)와 같은, 물리 메모리에 직접 액세스하기 위해 메모리(809)로부터 상기 저장되는 태그 어레이 정보를 이용할 수 있다. 특정 실시예에서, 제어 유닛(806)에서의 제어 로직 회로(840)는 상기 저장되는 태그 어레이 정보를 이용하도록 실행 유닛(808)에 지시할 수 있다. 제 2 가상 어드레스가 제 1 가상 어드레스와 상이한 캐시 라인과 관련되면, 실행 유닛(808)은 TLB 룩업 동작을 수행하지 않고(즉, 가상 대 물리 페이지 변환을 수행하지 않고) 제 2 가상 어드레스와 관련되는 태그 정보를 결정하기 위한 태그 어레이 룩업 동작을 수행하기 위해 제어 유닛(806)을 통해 데이터 유닛(804)과 통신할 수 있다.
특정 예시적인 실시예에서, 실행 유닛들(808 및 810)은 도 3에서 도시되는 룩업 스킵 로직 회로(308)와 같은, 태그 어레이 룩업 및/또는 TLB 룩업 동작을 스킵할 때를 결정하기 위한 메모리 어레이 룩업 스킵 로직 회로를 포함한다. 다른 특정 예시적인 실시예에서, 제어 로직 회로(840)는 태그 어레이 룩업, TLB 룩업 또는 이들의 임의의 조합을 선택적으로 스킵하기 위해 실행 유닛들(808 및 810)을 제어할 수 있다. 부가적으로, 실행 유닛들(808 및 810)은 도 1에서 도시되는 전달 로직 회로(136)와 같은, 데이터 전달 로직 회로들을 포함할 수 있다. 특정 예시적인 실시예에서, 제어 로직 회로(840)는 후속 명령의 실행 시 이용하기 위해, 실행 유닛들(808 및 810)을 제어하여 메모리(809 및 811)에 데이터를 각각 저장함으로써 제 1 명령으로부터 제 2 명령으로 데이터를 선택적으로 전달하도록 적응된다.
도 9는 데이터 전달의 방법의 특정 예시적인 실시예의 블록도이다. 902에서, 실행 유닛의 후 기록 스테이지 동안, 레지스터 파일에 기록될 데이터와 관련되는 기록 식별자는 다수의 실행 유닛들을 포함하는 인터리빙되는 멀티-스레드 프로세서 내의 실행 파이프 라인의 후속 판독 스테이지의 판독 식별자와 비교된다. 904로 진행하여, 기록 식별자가 판독 식별자와 매칭하지 않으면, 상기 방법은 906으로 진행하고, 제 1 패킷의 명령들의 실행으로부터 발생되는 데이터는 실행 유닛 내에 로컬하게 상기 데이터를 저장하지 않고 레지스터 파일에서의 위치에 기록된다. 대안적으로, 904에서 기록 식별자가 판독 식별자와 매칭하면, 상기 방법은 908로 진행하고, 데이터는 레지스터 파일에 기록되고 후속 판독 스테이지에서 실행 유닛에 의한 이용을 위해 실행 유닛에서 로컬하게 저장된다. 910으로 진행하여, 상기 방법은 로컬 저장 위치 또는 레지스터 파일 위치로부터 데이터를 리트리브하는 단계를 포함한다. 912로 이동하여, 상기 방법은 상기 리트리브되는 데이터를 이용하여 후속 판독 스테이지를 실행하는 단계를 포함한다. 특정 예시에서, 상기 방법은 실행 유닛에 로컬하게 저장되는 데이터를 이용하여 실행 유닛에서 패킷의 명령들을 실행하는 단계를 포함한다. 상기 방법은 914에서 종료한다.
특정 예시에서, 상기 방법은 기록 식별자가 판독 식별자와 매칭하는지를 결정하기 위해 데이터에 포함되는 하나의 상의 제로-값 비트들을 식별하는 단계를 포함한다. 제로-값 비트들에 기초하여, 상기 방법은 하나 이상의 제로-값 비트들과 관련되는 실행 유닛 내의 데이터 경로들에 대한 전력을 감소시키기 위한 지시자를 생성하는 단계를 포함할 수 있다. 다른 특정 예시에서, 상기 방법은 데이터 유닛과 관련되는 멀티-웨이 캐시의 캐시 라인 어드레스를 기록 식별자와 관련되는 캐시 라인 어드레스와 비교하는 단계 및 기록 식별자와 관련되는 캐시 라인 어드레스가 데이터 유닛과 관련되는 캐시 라인 어드레스와 매칭하면 변환 색인 버퍼(TLB) 태그를 판독하지 않고 멀티-웨이 캐시로부터 데이터를 리트리브하는 단계를 포함한다.
도 10은 태그 어레이 룩업 동작을 선택적으로 스킵하는 방법의 특정 예시적인 실시예의 블록도이다. 1002에서, 제 2 메모리 어드레스는 자동-증가 특징을 이용하여 제 1 메모리 어드레스로부터 계산된다. 1004로 진행하여, 제 2 메모리 어드레스와 관련되는 제 1 캐리 비트가 검사된다. 예시적인 실시예에서, 제 2 어드레스가 제 1 어드레스와 동일한 캐시라인 내에 존재하는지를 결정하기 위해, 캐리 비트는 캐시 라인의 크기와 관련되는 어드레스 비트이다. 예를 들어, 하위-차수(lower-order) 비트들 0000, 0001, ... 0111을 가지는 연속적인 어드레스들이 단일 캐시 라인 내에 존재하지만, 하위-차수 비트들 1000을 가지는 다음의 연속적인 어드레스는 상이한 캐시 라인에 존재하는 경우, 0에서 1로 변화하는 비트(즉, 제 4 최하위 어드레스 비트)가 1004에서 검사되는 캐리 비트이다. 상기 예시에 계속해서, 제 2 어드레스가 제 1 어드레스를 자동 증가시킴으로써 생성될 때, 제 4 최하위 어드레스 비트가 값들을 변경하면, 캐리 값을 나타낸다. 1006에서, 제 1 캐리 비트가 캐리 값을 나타내면, 상기 방법은 1008로 진행하여 태그 어레이 룩업 동작이 제 2 메모리 어드레스와 관련되는 태그 어레이 정보를 리트리브하기 위해 수행된다. 1010로 진행하여, 태그 어레이 정보는 로컬 메모리에 저장된다. 1012로 이동하여, 데이터는 태그 어레이 정보를 이용하여 캐시 메모리로부터 리트리브된다.
1006으로 돌아가서, 제 1 캐리 비트가 캐리 값을 나타내지 않으면, 상기 방법은 1014로 진행하여, 태그 어레이 정보가 제 1 메모리 어드레스와 관련되는 룩업 동작과 같은, 이전의 태그 어레이 룩업 동작 동안 식별되었던, 로컬 메모리로부터 태그 어레이 정보가 리트리브된다. 상기 방법은 1016에서 종료된다.
도 11은 태그 어레이 룩업 동작, 변환 색인 버퍼(TLB) 룩업 동작 또는 이들의 조합을 선택적으로 스킵(바이패스)하는 방법의 특정 예시적인 실시예의 흐름도이다. 1102에서, TLB 룩업 동작은 가상 메모리 어드레스를 물리 메모리 어드레스로 변환하기 위해 수행된다. 1104로 계속하여, 태그 어레이 룩업 동작은 물리 어드레스와 관련되는 태그 정보를 결정하기 위해 수행된다. 1106으로 진행하여, 태그 어레이 정보는 로컬 메모리에 저장된다. 1108로 진행하여, 자동-증가 특징을 이용하여 제 1 메모리 어드레스로부터 계산되는 제 2 메모리 어드레스가 수신된다. 특정 예시에서, 제 2 메모리 어드레스는 제 1 메모리 어드레스를 증가시킴으로써 제 1 메모리 어드레스로부터 계산될 수 있다. 1110으로 계속해서, 제 2 메모리 어드레스와 관련되는 캐시 라인 캐리 비트가 캐리 값(즉, 캐리 비트의 값)을 식별하기 위해 검사된다. 특정 예시에서, 캐리 비트가 예를 들어, 32-비트 캐시와 관련되는 제 5 어드레스 비트일 수 있다. 1112에서, 캐시 라인 캐리 비트가 캐리 값을 나타내지 않으면, 상기 방법은 1114로 진행하여 로컬 메모리에 저장되는 태그 정보가 리트리브된다. 1116으로 계속하여, 상기 리트리브되는 태그 정보에 기초하여 메모리에서 데이터가 제 2 메모리 어드레스로부터 리트리브된다. 1112로 돌아가서, 캐시 라인 캐리 비트가 캐리 값을 나타내면, 상기 방법은 1118로 진행하여 페이지 경계 캐리 비트가 캐리 값을 식별하기 위해 검사된다. 1120에서, 페이지 경계 캐리 비트가 캐리 값을 나타내면, 상기 방법은 1102로 돌아가서 메모리 어드레스를 물리 어드레스로 변환하기 위해 TLB 룩업 동작이 수행된다. 1120으로 돌아가서, 페이지 경계 비트가 캐리 값을 나타내지 않으면, 상기 방법은 1104로 돌아가서, TLB 룩업 동작을 수행하지 않고, 물리 어드레스와 관련되는 태그 정보를 결정하기 위해 태그 어레이 룩업 동작이 수행된다.
도 12는 레지스터 판독 동작들 및/또는 변환 색인 버퍼(TLB) 동작들을 선택적으로 스킵하기 위한 로직 회로를 포함하는 프로세서를 포함하는 대표적인 무선 통신 디바이스(1200)의 블록도이다. 무선 통신 디바이스(1200)는 하나 이상의 실행 유닛들(1268)과 통신하는 데이터 전달/룩업 스킵 로직 회로(1264)를 포함하는 디지털 신호 프로세서(DSP; 1210)를 포함할 수 있다. 하나 이상의 실행 유닛들(1268) 각각은 로컬 메모리(1270)를 포함한다. 데이터 전달/룩업 스킵 로직 회로(1264)는 후속 패킷의 명령들에 의한 이용을 위해 로컬 메모리(1270)에 로컬하게 데이터를 저장함으로써 데이터를 전달하기 위해 실행 유닛(1268)을 제어하도록 동작가능하다. 무선 통신 디바이스(1200)는 또한 DSP(1210)에 액세스가능한 메모리(1232)를 포함한다. 또한 데이터 전달/룩업 스킵 로직 회로(1264)는 (상이한 메모리 어드레스와 관련되는 이전의 태그 어레이 룩업 동작으로부터) 이전에 결정된 태그 어레이 정보를 이용하여 변환 색인 버퍼(TLB) 룩업 동작 및 태그 어레이 룩업 동작 모두를 스킵하기 위해 실행 유닛(1268)을 제어하도록 적응된다. 이전에 결정된 태그 어레이 정보는 다른 태그 어레이 룩업 동작을 수행하지 않고, 메모리(1232)와 같은, 메모리에 액세스하기 위해 이용될 수 있다. 다른 특정 실시예에서, 이전의 TLB 룩업 동작으로부터 결정되는 제 1 메모리 어드레스에 대한 페이지 변환 정보는 도 1 내지 도 11과 관련하여 설명되는 바와 같이, 다른 TLB 룩업 동작을 수행하지 않고 태그 어레이 룩업 동작을 수행하기 위해 이용될 수 있다. 특정 실시예에서, 데이터 전달 및/또는 TLB 룩업 스킵 로직 회로(1264)는 데이터 전달 기능, 태그 어레이 룩업 스킵 기능, TLB 룩업 스킵 기능 또는 이들의 임의의 조합을 제공할 수 있다.
특정 실시예에서, 무선 통신 디바이스(1200)는 데이터 전달 회로 및 룩업 스킵 로직 회로 모두를 포함할 수 있다. 다른 특정 실시예에서, 무선 통신 디바이스(1200)는 데이터 전달 회로만을 포함할 수 있다. 또 다른 특정 실시예에서, 룩업 스킵 로직 회로가 포함될 수 있다. 또 다른 특정 실시예에서, 데이터를 전달할지를 결정하도록 적응되는 로직 회로는 또한 태그 어레이 룩업 동작, TLB 룩업 동작 또는 이들의 임의의 조합을 스킵할지를 결정하기 위해 이용될 수 있다.
도 12는 또한 디지털 신호 프로세서(1210) 및 디스플레이(1228)에 커플링되는 디스플레이 컨트롤러(1226)를 도시한다. 코더/디코더(CODEC; 1234)는 또한 디지털 신호 프로세서(1210)에 커플링될 수 있다. 스피커(1236) 및 마이크로폰(1238)은 CODEC(1234)에 커플링될 수 있다.
도 12는 또한 무선 컨트롤러(1240)가 디지털 신호 프로세서(1210) 및 무선 안테나(1242)에 커플링될 수 있음을 나타낸다. 특정 실시예에서, 입력 디바이스(1230) 및 전력 장치(power supply; 1244)는 온-칩 시스템(1222)에 커플링된다. 게다가, 특정 실시예에서, 도 12에서 도시되는 바와 같이, 디스플레이(1228), 입력 디바이스(1230), 스피커(1236), 마이크로폰(1238), 무선 안테나(1242) 및 전원 장치(1244)가 온-칩 시스템(1222) 외부에 있을 수 있다. 그러나, 각각은 온-칩 시스템(1222)의 컴포넌트에 커플링된다.
데이터 전달 및/또는 TLB 룩업 스킵 로직 회로(1264), 하나 이상의 실행 유닛들(1268) 및 로컬 메모리(1270)가 디지털 신호 프로세서(1210)의 개별적인 컴포넌트들로서 도시되는 반면, 데이터 전달 및/또는 TLB 룩업 스킵 로직 회로(1264), 하나 이상의 실행 유닛들(1268) 및 로컬 메모리(1270)가 무선 컨트롤러(1240), CODEC(1234), 디스플레이 컨트롤러(1226), 범용 프로세서와 같은 다른 프로세싱 컴포넌트들(도시되지 않음) 또는 이들의 임의의 조합과 같은, 다른 프로세싱 컴포넌트들로 통합될 수 있음을 이해해야 한다.
당업자는 여기에 개시되는 실시예들과 관련하여 설명되는 다양한 예시적인 논리 블록들, 구성들, 모듈들, 회로들 및 알고리즘 단계들이 전자 하드웨어, 컴퓨터 소프트웨어 또는 이들 모두의 조합들로서 구현될 수 있음을 추가적으로 인식할 수 있다. 하드웨어 및 소프트웨어의 이러한 상호 호환성을 명확히 설명하기 위해, 다양한 예시적인 컴포넌트들, 블록들, 구성들, 모듈들, 회로들 및 단계들이 이들의 기능성과 관련하여 일반적으로 상기 설명되었다. 이러한 기능성이 하드웨어 또는 소프트웨어로서 구현되는지 여부는 특정 애플리케이션 및 전체 시스템 상에 대하여 부과되는 설계 제약들에 의존한다. 당업자는 각각의 특정 애플리케이션에 대하여 다양한 방식들로 상기 설명되는 기능성을 구현할 수 있으나, 이러한 구현 결정들은 본 발명의 범위의 이탈을 야기하는 것으로 해석되어서는 아니 된다.
여기에서 개시되는 실시예들과 관련하여 설명되는 방법 또는 알고리즘의 단계들은 하드웨어로 직접 구현되거나, 프로세서에 의해 실행되는 소프트웨어 모듈로 구현되거나 또는 이 둘의 조합에 의해 구현될 수 있다. 소프트웨어 모듈은 RAM 메모리, 플래시 메모리, ROM 메모리, PROM 메모리, EPROM 메모리, EEPROM 메모리, 레지스터들, 하드 디스크, 이동식 디스크, CD-ROM, 또는 당해 기술분야에 공지된 다른 임의의 형태의 저장 매체에 상주할 수 있다. 프로세서가 저장 매체로부터 정보를 판독하고, 저장 매체에 정보를 기록할 수 있도록, 예시적인 저장 매체가 프로세서에 커플링될 수 있다. 대안적으로, 저장 매체는 프로세서의 구성요소일 수 있다. 프로세서 및 저장 매체는 ASIC에 상주할 수 있다. ASIC은 컴퓨팅 디바이스 또는 사용자 단말에 상주할 수 있다. 대안적으로, 프로세서 및 저장 매체는 컴퓨팅 디바이스 또는 사용자 단말 내의 이산 컴포넌트들로서 상주할 수 있다.
개시되는 실시예들에 대한 앞의 설명은 당업자가 개시되는 실시예들을 이용하거나 또는 실시할 수 있도록 제공된다. 이러한 실시예들에 대한 다양한 수정들은 당업자에게 용이하게 명백할 것이며, 여기서 정의되는 일반적인 원리들은 본 개시물의 사상 또는 범위로부터 이탈하지 않고 다른 실시예들에 적용될 수 있다. 그러므로, 본 개시물은 여기에 도시되는 실시예들로 제한되는 것으로 의도되지 않으며 다음의 청구항들에 의해 정의되는 원리들 및 신규한 특징들과 일관되는 가능하면 최광의의 범위에서 해석되어야 한다.

Claims (25)

  1. 실행 유닛의 후 기록(write back) 스테이지 동안, 다수의 실행 유닛들을 포함하는 인터리빙되는 멀티-스레드(interleaved multi-threaded; IMT) 프로세서 내의 실행 파이프라인에서 제 1 명령의 실행으로부터 레지스터 파일에 기록될 결과와 관련되는 기록 식별자와 제 2 명령과 관련되는 판독 식별자를 비교하는 단계; 및
    상기 기록 식별자가 상기 판독 식별자와 매칭(matching)하면, 후속하는 판독 스테이지에서 상기 실행 유닛에 의한 이용을 위해 상기 실행 유닛의 로컬 메모리에 상기 결과를 저장하는 단계
    를 포함하는, 방법.
  2. 제 1 항에 있어서,
    상기 기록 식별자가 상기 판독 식별자와 매칭하지 않으면, 상기 방법은 상기 로컬 메모리에 상기 결과를 저장하지 않고 상기 레지스터 파일에 상기 결과를 기록하는 단계를 포함하는,
    방법.
  3. 제 1 항에 있어서,
    상기 로컬 메모리에 저장되는 상기 결과를 이용하여 상기 실행 유닛에서 패킷의 명령들을 실행하는 단계를 더 포함하는,
    방법.
  4. 제 1 항에 있어서,
    상기 기록 식별자에 포함되는 하나 이상의 제로(zero)-값 비트들을 식별하는 단계; 및
    상기 하나 이상의 제로-값 비트들과 관련되는 상기 실행 유닛 내의 데이터 경로들에 대한 전력을 감소시키기 위한 지시자를 생성하는 단계를 더 포함하는,
    방법.
  5. 제 1 항에 있어서,
    상기 기록 식별자가 상기 판독 식별자와 매칭하면 데이터 전달 인에이블(enable) 출력 지시자를 생성하는 단계; 및
    상기 데이터 전달 인에이블 출력 지시자에 응답하여 상기 레지스터 파일의 슬롯을 선택적으로 디스에이블(disable)하는 단계를 더 포함하는,
    방법.
  6. 제 5 항에 있어서,
    상기 데이터 전달 인에이블 출력 지시자와 관련되는 선택 신호를 생성하는 단계; 및
    상기 제 2 명령의 실행 시 이용을 위해 상기 레지스터 파일로부터의 출력 또는 상기 로컬 메모리로부터의 상기 결과 중 하나를 상기 실행 유닛에 선택적으로 제공하는 단계를 더 포함하는,
    방법.
  7. 제 1 항에 있어서,
    상기 제 1 명령의 제 1 메모리 어드레스 및 상기 제 2 명령의 제 2 메모리 어드레스가 캐시 라인과 관련되는지를 결정하기 위해 상기 제 1 메모리 어드레스로부터 계산되는 상기 제 2 메모리 어드레스의 캐리 비트를 검사하는 단계; 및
    상기 제 2 메모리 어드레스와 관련되는 제 2 캐시 라인 어드레스가 상기 제 1 메모리 어드레스와 관련되는 제 1 캐시 라인 어드레스와 매칭하면, 태그 어레이 룩업 동작을 수행하지 않고 멀티-웨이(way) 캐시로부터 데이터를 리트리브(retrieve)하는 단계
    방법.
  8. 제 1 패킷의 명령들과 관련되는 제 1 어드레스로부터 제 2 패킷의 명령들과 관련되는 제 2 어드레스를 결정하는 단계;
    상기 제 2 어드레스를 결정하는 단계가 멀티-웨이 캐시와 관련되는 캐시 라인의 경계를 초과하였는지를 결정하기 위해 데이터 유닛의 가산기(adder)의 캐리 비트를 검사하는 단계; 및
    상기 경계를 초과하지 않으면, 이전의 태그 어레이 룩업 동작으로부터 결정되었던 상기 제 1 어드레스와 관련되는 변환 색인 버퍼(TLB) 룩업 데이터 및 태그 어레이 데이터를 이용하여 상기 제 2 어드레스로부터 데이터를 리트리브하기 위해 상기 멀티-웨이 캐시를 액세스하는 단계
    를 포함하는, 방법.
  9. 제 8 항에 있어서,
    캐시 라인 경계를 초과하면, 상기 방법은 변환 색인 버퍼(TLB) 룩업 동작을 수행하지 않고 상기 제 2 명령과 관련되는 태그 어레이 정보를 결정하기 위해 태그 어레이 룩업 동작을 수행하는 단계를 더 포함하는,
    방법.
  10. 제 9 항에 있어서,
    상기 태그 어레이 정보를 이용하여 상기 멀티-웨이 캐시로부터 데이터를 판독하는 단계를 더 포함하는,
    방법.
  11. 제 8 항에 있어서,
    상기 제 1 어드레스는 제 1 메모리 판독 어드레스를 포함하고,
    상기 제 2 어드레스는 제 2 메모리 판독 어드레스를 포함하는,
    방법.
  12. 제 8 항에 있어서,
    상기 제 1 패킷의 명령들의 실행으로부터 결정되는 결과와 관련되는 제 1 기록 어드레스와 상기 제 2 어드레스를 비교하는 단계; 및
    상기 제 1 기록 어드레스가 상기 제 2 어드레스와 매칭하면, 상기 제 2 패킷의 명령들의 실행 시 이용을 위해 실행 유닛 내의 로컬 메모리에 상기 결과를 저장하는 단계를 더 포함하는,
    방법.
  13. 제 12 항에 있어서,
    상기 로컬 메모리로부터 상기 결과를 리트리브하는 단계; 및
    상기 리트리브되는 결과를 이용하여 상기 제 2 패킷의 명령들을 실행하는 단계를 더 포함하는,
    방법.
  14. 제 8 항에 있어서,
    페이지 경계를 초과하면, 상기 방법은,
    상기 제 2 어드레스를 상기 멀티-웨이 캐시와 관련되는 물리 어드레스로 변환하기 위해 변환 색인 버퍼(TLB) 룩업 동작을 수행하는 단계;
    태그 정보를 결정하기 위해 태그 어레이 룩업 동작을 수행하는 단계; 및
    상기 태그 정보 및 상기 물리 어드레스에 기초하여 메모리에 액세스하는 단계를 더 포함하는,
    방법.
  15. 제 8 항에 있어서,
    상기 제 2 어드레스는 상대적인 어드레싱(addressing)을 이용하여 상기 제 1 어드레스로부터 결정되는,
    방법.
  16. 멀티-스레드 프로세서로서,
    실행 유닛을 포함하고,
    상기 실행 유닛은,
    하나 이상의 데이터 값들을 저장하기 위한 로컬 메모리; 및
    판독 피연산자와 관련되는 판독 어드레스가 이전의 후 기록 동작과 관련되는 후 기록 어드레스와 매칭하는지를 결정하도록 적응되는 로직 회로를 포함하며,
    상기 로직 회로는 상기 판독 어드레스가 상기 후 기록 어드레스와 매칭하면 상기 로컬 메모리에 상기 하나 이상의 데이터 값들을 저장하도록 적응되는,
    멀티-스레드 프로세서.
  17. 제 16 항에 있어서,
    상기 로직 회로는 상기 실행 유닛 외부의 메모리의 메모리 위치로부터 데이터를 판독하도록 적응되며,
    상기 메모리 위치는 상기 판독 어드레스가 상기 후 기록 어드레스와 매칭하지 않을 때 상기 판독 어드레스에 대응하는,
    멀티-스레드 프로세서.
  18. 제 16 항에 있어서,
    상기 실행 유닛은 후 기록 스테이지, 디코딩 스테이지 및 판독 레지스터 파일 스테이지를 포함하는 복수의 실행 스테이지들을 포함하는,
    멀티-스레드 프로세서.
  19. 제 18 항에 있어서,
    상기 로직 회로는 하나 이상의 비교기들을 포함하며,
    상기 하나 이상의 비교기들은 판독 어드레스 정보를 기록 어드레스 정보와 비교하여 데이터 전달을 선택적으로 인에이블하기 위한 결과를 생성하도록 적응되는,
    멀티-스레드 프로세서.
  20. 제 16 항에 있어서,
    상기 로컬 메모리는 상기 실행 유닛 내의 하나 이상의 데이터 래치(latch)들을 포함하는,
    멀티-스레드 프로세서.
  21. 제 20 항에 있어서,
    상기 하나 이상의 데이터 래치들은 데이터 전달을 선택적으로 인에이블 하기 위해 데이터 전달 로직 회로에 의해 선택적으로 활성화되는,
    멀티-스레드 프로세서.
  22. 제 16 항에 있어서,
    명령과 관련되는 판독 어드레스의 적어도 일부가 이전의 명령과 관련되는 판독 어드레스의 일부와 매칭하면, 태그 어레이 룩업 동작을 수행하지 않고 멀티-웨이 캐시 메모리 내의 메모리 어드레스를 결정하도록 적응되는 제 2 로직 회로를 더 포함하는,
    멀티-스레드 프로세서.
  23. 프로세서로서,
    다수의 실행 유닛들을 포함하는 인터리빙되는 멀티-스레드(IMT) 프로세서 내의 실행 파이프라인에서 제 1 패킷의 명령들의 실행으로부터 레지스터 파일에 기록될 결과와 관련되는 기록 식별자와 제 2 패킷의 명령들과 관련되는 판독 식별자를 비교하기 위한 수단; 및
    상기 기록 식별자가 상기 판독 식별자와 매칭하면, 상기 제 2 패킷의 명령들의 실행 시 이용을 위해 실행 유닛에서 로컬하게 상기 결과를 선택적으로 저장하기 위한 수단
    을 포함하는, 프로세서.
  24. 제 23 항에 있어서,
    상기 제 1 패킷의 명령들과 관련되는 제 1 어드레스로부터 상기 제 2 패킷의 명령들과 관련되는 제 2 어드레스를 결정하기 위한 수단;
    상기 제 2 어드레스를 결정하는 것은 멀티-웨이 캐시와 관련되는 캐시 라인 경계를 초과하였는지를 결정하기 위해 데이터 유닛의 가산기의 캐리 비트를 검사하기 위한 수단; 및
    변환 색인 버퍼(TLB) 또는 태그 어레이에 액세스하지 않고 상기 제 1 어드레스와 관련되는 로컬하게 저장되는 웨이 데이터 및 물리 어드레스 데이터를 이용하여 상기 멀티-웨이 캐시와 관련되는 물리 어드레스로 가상 어드레스를 변환하기 위한 수단을 더 포함하는,
    프로세서.
  25. 제 23 항에 있어서,
    상기 제 1 패킷의 명령들의 실행으로부터 레지스터 파일에 기록될 결과와 관련되는 기록 식별자와 제 2 패킷의 명령들과 관련되는 판독 식별자를 비교하기 위한 수단은,
    상기 기록 식별자 및 상기 판독 식별자를 수신하고, 상기 기록 식별자 및 상기 판독 식별자가 매칭하는지를 나타내는 제 1 출력을 제공하도록 적응되는 제 1 비교기;
    상기 기록 식별자 및 제 2 판독 식별자를 수신하고, 상기 기록 식별자 및 상기 제 2 판독 식별자가 매칭하는지를 나타내는 제 2 출력을 제공하도록 적응되는 제 2 비교기; 및
    상기 제 1 출력 및 상기 제 2 출력에 기초하여 상기 제 2 패킷의 명령들의 실행 시 이용을 위해 상기 실행 유닛으로 로컬하게 저장되는 데이터 또는 레지스터 데이터 중 하나를 선택적으로 제공하도록 적응되는 로직 회로를 포함하는,
    프로세서.
KR1020107021442A 2008-02-26 2009-02-03 실행 유닛 내의 데이터 전달을 위한 시스템 및 방법 KR101221512B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/037,300 2008-02-26
US12/037,300 US8145874B2 (en) 2008-02-26 2008-02-26 System and method of data forwarding within an execution unit
PCT/US2009/032919 WO2009108462A1 (en) 2008-02-26 2009-02-03 System and method of data forwarding within an execution unit

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020127019685A Division KR101183651B1 (ko) 2008-02-26 2009-02-03 실행 유닛 내의 데이터 전달을 위한 시스템 및 방법

Publications (2)

Publication Number Publication Date
KR20100126442A true KR20100126442A (ko) 2010-12-01
KR101221512B1 KR101221512B1 (ko) 2013-01-15

Family

ID=40382851

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020127019685A KR101183651B1 (ko) 2008-02-26 2009-02-03 실행 유닛 내의 데이터 전달을 위한 시스템 및 방법
KR1020107021442A KR101221512B1 (ko) 2008-02-26 2009-02-03 실행 유닛 내의 데이터 전달을 위한 시스템 및 방법

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020127019685A KR101183651B1 (ko) 2008-02-26 2009-02-03 실행 유닛 내의 데이터 전달을 위한 시스템 및 방법

Country Status (7)

Country Link
US (1) US8145874B2 (ko)
EP (1) EP2263149A1 (ko)
JP (2) JP2011513843A (ko)
KR (2) KR101183651B1 (ko)
CN (2) CN103365627B (ko)
TW (1) TW200943176A (ko)
WO (1) WO2009108462A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9207922B2 (en) 2013-01-28 2015-12-08 Samsung Electronics Co., Ltd. Compiling method and apparatus for scheduling block in pipeline

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102009011644A1 (de) * 2009-03-04 2010-09-16 Siemens Aktiengesellschaft Verfahren und Programmprodukt zum Ermöglichen eines Auffindens von Datensätzen
US8285968B2 (en) 2009-09-29 2012-10-09 International Business Machines Corporation Performing memory accesses while omitting unnecessary address translations
JP5600517B2 (ja) 2010-08-18 2014-10-01 キヤノン株式会社 情報処理装置、情報処理方法、およびプログラム
US8572628B2 (en) * 2010-12-02 2013-10-29 International Business Machines Corporation Inter-thread data communications in a computer processor
US8561070B2 (en) 2010-12-02 2013-10-15 International Business Machines Corporation Creating a thread of execution in a computer processor without operating system intervention
US20130179642A1 (en) * 2012-01-10 2013-07-11 Qualcomm Incorporated Non-Allocating Memory Access with Physical Address
US9348775B2 (en) 2012-03-16 2016-05-24 Analog Devices, Inc. Out-of-order execution of bus transactions
US9804969B2 (en) * 2012-12-20 2017-10-31 Qualcomm Incorporated Speculative addressing using a virtual address-to-physical address page crossing buffer
US9317289B2 (en) * 2012-12-28 2016-04-19 Telefonaktiebolaget L M Ericsson (Publ) Acknowledgement forwarding
US9367468B2 (en) * 2013-01-15 2016-06-14 Qualcomm Incorporated Data cache way prediction
US9519944B2 (en) * 2014-09-02 2016-12-13 Apple Inc. Pipeline dependency resolution
CN104317555B (zh) * 2014-10-15 2017-03-15 中国航天科技集团公司第九研究院第七七一研究所 Simd处理器中写合并和写撤销的处理装置和方法
US20160170770A1 (en) * 2014-12-12 2016-06-16 Qualcomm Incorporated Providing early instruction execution in an out-of-order (ooo) processor, and related apparatuses, methods, and computer-readable media
US11061682B2 (en) * 2014-12-15 2021-07-13 Hyperion Core, Inc. Advanced processor architecture
US9898296B2 (en) 2016-01-08 2018-02-20 International Business Machines Corporation Selective suppression of instruction translation lookaside buffer (ITLB) access
US9354885B1 (en) 2016-01-08 2016-05-31 International Business Machines Corporation Selective suppression of instruction cache-related directory access
US10372452B2 (en) * 2017-03-14 2019-08-06 Samsung Electronics Co., Ltd. Memory load to load fusing
CN108628639B (zh) * 2017-03-21 2021-02-12 华为技术有限公司 处理器和指令调度方法

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5730177A (en) * 1980-07-30 1982-02-18 Fujitsu Ltd Address converter
JPS6386033A (ja) * 1986-09-30 1988-04-16 Fujitsu Ltd パイプライン処理方式
US5222240A (en) * 1990-02-14 1993-06-22 Intel Corporation Method and apparatus for delaying writing back the results of instructions to a processor
US5590345A (en) * 1990-11-13 1996-12-31 International Business Machines Corporation Advanced parallel array processor(APAP)
TW233354B (en) * 1994-03-04 1994-11-01 Motorola Inc Data processor with memory cache and method of operation
US5751983A (en) * 1995-10-03 1998-05-12 Abramson; Jeffrey M. Out-of-order processor with a memory subsystem which handles speculatively dispatched load operations
JP3745450B2 (ja) * 1996-05-13 2006-02-15 株式会社ルネサステクノロジ 並列処理プロセッサ
TW357318B (en) * 1997-03-18 1999-05-01 Ind Tech Res Inst Branching forecast and reading device for unspecified command length extra-purity pipeline processor
US6301653B1 (en) 1998-10-14 2001-10-09 Conexant Systems, Inc. Processor containing data path units with forwarding paths between two data path units and a unique configuration or register blocks
JP3798563B2 (ja) * 1999-01-06 2006-07-19 株式会社東芝 命令キャッシュメモリ
US6343359B1 (en) * 1999-05-18 2002-01-29 Ip-First, L.L.C. Result forwarding cache
WO2001042927A1 (fr) * 1999-12-09 2001-06-14 Fujitsu Limited Dispositif d'acces memoire et methode utilisant une table d'historique des traductions d'adresses
US6615340B1 (en) * 2000-03-22 2003-09-02 Wilmot, Ii Richard Byron Extended operand management indicator structure and method
KR100351504B1 (ko) * 2000-06-05 2002-09-05 삼성전자 주식회사 캐쉬 메모리, 그의 전력 소비 절감 방법 그리고 캐쉬메모리를 구비하는 데이터 처리 시스템
US6678815B1 (en) * 2000-06-27 2004-01-13 Intel Corporation Apparatus and method for reducing power consumption due to cache and TLB accesses in a processor front-end
EP1199629A1 (en) * 2000-10-17 2002-04-24 STMicroelectronics S.r.l. Processor architecture with variable-stage pipeline
US6571318B1 (en) * 2001-03-02 2003-05-27 Advanced Micro Devices, Inc. Stride based prefetcher with confidence counter and dynamic prefetch-ahead mechanism
EP1361518B1 (en) * 2002-05-10 2013-08-07 Texas Instruments Incorporated Reducing TAG-RAM accesses and accelerating cache operation during cache miss
US20040034759A1 (en) * 2002-08-16 2004-02-19 Lexra, Inc. Multi-threaded pipeline with context issue rules
US7185182B2 (en) * 2003-02-04 2007-02-27 Via Technologies, Inc. Pipelined microprocessor, apparatus, and method for generating early instruction results
TWI259659B (en) * 2005-05-13 2006-08-01 Ind Tech Res Inst Pipelined datapath with dynamically reconfigurable pipeline stages
US20060277425A1 (en) * 2005-06-07 2006-12-07 Renno Erik K System and method for power saving in pipelined microprocessors
US20070005933A1 (en) * 2005-06-29 2007-01-04 Kopec Brian J Preventing multiple translation lookaside buffer accesses for a same page in memory
US7725687B2 (en) * 2006-06-27 2010-05-25 Texas Instruments Incorporated Register file bypass with optional results storage and separate predication register file in a VLIW processor

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9207922B2 (en) 2013-01-28 2015-12-08 Samsung Electronics Co., Ltd. Compiling method and apparatus for scheduling block in pipeline

Also Published As

Publication number Publication date
TW200943176A (en) 2009-10-16
JP2013239183A (ja) 2013-11-28
US20090216993A1 (en) 2009-08-27
KR101183651B1 (ko) 2012-09-17
JP2011513843A (ja) 2011-04-28
WO2009108462A1 (en) 2009-09-03
US8145874B2 (en) 2012-03-27
CN103365627A (zh) 2013-10-23
CN102089742A (zh) 2011-06-08
EP2263149A1 (en) 2010-12-22
JP5661863B2 (ja) 2015-01-28
KR101221512B1 (ko) 2013-01-15
CN103365627B (zh) 2016-08-10

Similar Documents

Publication Publication Date Title
KR101183651B1 (ko) 실행 유닛 내의 데이터 전달을 위한 시스템 및 방법
JP5335887B2 (ja) アドレスに基づく条件付きデバッグ命令を認証するデバッグ方法、制御方法、およびデバッグ装置
JP6011194B2 (ja) 演算処理装置及び演算処理装置の制御方法
KR100900364B1 (ko) 인스트럭션 실행 디바이스, 인스트럭션 실행 방법 및 컴퓨터 판독가능 메모리 매체
US9390011B2 (en) Zero cycle clock invalidate operation
JP2015534188A (ja) ユーザレベルのスレッディングのために即時のコンテキスト切り替えを可能とする新規の命令および高度に効率的なマイクロアーキテクチャ
US20090276608A1 (en) Micro processor, method for encoding bit vector, and method for generating bit vector
JP4996654B2 (ja) プロセッサ
US10740105B2 (en) Processor subroutine cache
US8539209B2 (en) Microprocessor that performs a two-pass breakpoint check for a cache line-crossing load/store operation
US7805590B2 (en) Coprocessor receiving target address to process a function and to send data transfer instructions to main processor for execution to preserve cache coherence
US7979681B2 (en) System and method of selectively accessing a register file
JP4243271B2 (ja) データ処理装置およびデータ処理方法
KR100977687B1 (ko) 기지의 프로세서 상태에 기초하여 cam 리네이밍레지스터 파일 내의 비교기를 선택적으로 인에이블링하는절전 방법 및 장치
JP5902208B2 (ja) データ処理装置
US9582286B2 (en) Register file management for operations using a single physical register for both source and result
US8996923B2 (en) Apparatus and method to obtain information regarding suppressed faults
CN113853584A (zh) 可变延时指令
CN111475010B (zh) 管线式处理器及节电方法
US6772318B1 (en) Bypass control circuit
JP2006139564A (ja) プロセッサのレジスタ制御方法およびプロセッサ

Legal Events

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

Payment date: 20151230

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20161229

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20171228

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20181227

Year of fee payment: 7