KR101154628B1 - 확장형 명령의 구성 명령들 사이에 중간 결과들을 포워딩하는 레지스터 리네이밍 시스템의 사용 - Google Patents

확장형 명령의 구성 명령들 사이에 중간 결과들을 포워딩하는 레지스터 리네이밍 시스템의 사용 Download PDF

Info

Publication number
KR101154628B1
KR101154628B1 KR1020097016741A KR20097016741A KR101154628B1 KR 101154628 B1 KR101154628 B1 KR 101154628B1 KR 1020097016741 A KR1020097016741 A KR 1020097016741A KR 20097016741 A KR20097016741 A KR 20097016741A KR 101154628 B1 KR101154628 B1 KR 101154628B1
Authority
KR
South Korea
Prior art keywords
configuration command
configuration
physical register
intermediate result
instruction
Prior art date
Application number
KR1020097016741A
Other languages
English (en)
Other versions
KR20090100448A (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 KR20090100448A publication Critical patent/KR20090100448A/ko
Application granted granted Critical
Publication of KR101154628B1 publication Critical patent/KR101154628B1/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
    • 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/3017Runtime instruction translation, e.g. macros
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming
    • 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/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3856Reordering of instructions, e.g. using queues or age tags
    • 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/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Electrotherapy Devices (AREA)
  • Organic Low-Molecular-Weight Compounds And Preparation Thereof (AREA)

Abstract

레지스터 리네이밍 자원들 및 제어 로직을 이용하여 확장형 명령의 구성 명령들 사이에서 중간 결과들이 전달된다. 제 1 구성 명령은 중간 결과들을 생성하며 구성 명령 리네임 테이블에 PRN을 할당하며, 중간 결과들을 식별된 물리적 레지스터에 기록한다. 제 2 구성 명령은 구성 명령 리네임 테이블에서의 검사를 수행하고 물리적 레지스터들로부터 중간 결과를 판독한다. 구성 명령 리네임 로직은 파이프라인을 통해 구성 명령들을 추적하며, 구성 명령 리네임 테이블 엔트리를 삭제하고 제 2 구성 명령이 중간 결과를 판독할 때 PRN을 프리 리스트로 복귀시킨다.

Description

확장형 명령의 구성 명령들 사이에 중간 결과들을 포워딩하는 레지스터 리네이밍 시스템의 사용{USE OF REGISTER RENAMING SYSTEM FOR FORWARDING INTERMEDIATE RESULTS BETWEEN CONSTITUENT INSTRUCTIONS OF AN EXPANDED INSTRUCTION}
[0001] 본 발명은 전반적으로 프로세서들에 관한 것으로, 특히 부분적 결과들(partial results)을 전달하는 확장형 명령들(expanded instructions)을 실행시키기 위해 현재의 레지스터 리네이밍 자원들을 이용하는 시스템 및 방법에 관한 것이다.
[0002] 프로세서 명령들은 메모리로부터 얻어진 데이터로 작동되며 메모리에 이들의 결과들을 기록한다. 현대의 프로세서는 상위 레벨에서, 약간 빠르고, 값비싼 메모리 엘리먼트들, 이를 테면 레지스터들을 포함하는 계층형 메모리 구조를 이용한다. 다음, 메모리 계층(memory hierarchy)은 하위 레벨에서는 계속 느리지만 비용면에서 보다 효율적인 메모리 기술들, 이를 테면 각각 캐시 메모리들(SRAM), 솔리드-스테이트(solid-state) 메인 메모리(DRAM) 및 디스크들(자성 또는 광학 매체)을 포함한다. 이를 테면 휴대용 전자 디바이스들과 같은 애플리케이션들에 대해, 종종 DRAM은 메모리 계층의 최저 레벨이다.
[0003] 대부분의 프로세서 명령 세트 아키텍쳐들(ISA)은 메모리로 그리고 메모리로부터의 명령들 사이에 데이터를 전달하는데 이용되는 구조화된 레지스터들인 범용성 레지스터들(GPRs)의 세트를 포함한다. 데이터를 통해 논리 연산 및 산술 연산을 수행하는 명령들은 특정된 GPR들로부터 이들의 피연산자들(operands)을 판독하고, 특정 GPR들로 이들 결과들을 기록한다. 유사하게, 메모리 액세스 명령들은 메모리에 저장될 데이터를 GPR들로부터 판독하고, 메모리로부터 로딩되는 데이터를 GPR들에 기록한다. 컴파일러(compiler)는 적절한 결과들이 계산되도록, 각각의 명령에 소스 및 타겟 GPR 식별자들을 할당하고, 명령들을 배열한다(order). 즉, 명령들은 특정된 GPR들에 결과들을 저장하도록 초기(earlier) 명령들을 지시하고, 추가의 프로세싱을 위한 연산자들을 얻기 위해 상기 GPR들을 판독하도록 나중(later) 명령들을 지시함으로써 정확한 결과들을 보장하는 "프로그램 순서(program order)"로 배열된다. GPR 식별자들은 로직 라벨들(이를 테면 r0 - r15)이다.
[0004] 일부 현대식 프로세서는 "확장형(expanded)" 명령들, 즉 하나 이상의 산술 또는 논리 연산을 수행하는 명령들을 지원한다. 예를 들어, 명령 ADD r1 , r2, r3 LSL r4은 식 r1 = r2 + (r3 << [r4])을 수행한다, 즉 r4에 저장된 양 만큼 레지스터 r3의 값이 좌측-이동하고(left-shift), 이러한 결과가 r2의 값에 더해지고, 이러한 합이 레지스터 r1에 저장된다. 덧셈기(adder)가 전체 사이클 시간을 요구하는 프로세서에서, 이러한 확장형 명령은 2개의 개별적인 복합 명령들, 즉 r3에서 값을 좌측-이동시켜 중간 결과를 생성하는 이동(shift) 명령, 및 r2의 값에 중간 결과를 더하고 이러한 합을 r1에 저장하는 가산 명령으로서 구현될 수 있다. 일부 프로세서들, 즉 연산자 포워딩(forwarding)을 지원하고 프로그램 순서로 확장형 명령들만을 실행하는 프로세서에서, 이동 명령으로부터 가산 명령으로 중간 결과들의 전달은 간단하다(straightforward). 그러나, 일반적으로는 특히 순서외 명령 실행을 지원하는 슈퍼스칼라(superscalar) 프로세서들에서는, 추가의 자원들, 이를 테면 구조화되지 않은(non-architected) "스크래치(scratch)" 레지스터들 및 복합 제어 로직이 확장형 명령의 구성 명령들 사이에 중간 결과들의 포워딩을 쉽게 구현할 수 있는 프로세서에 부가되어야 한다.
[0005] 본 발명에 개시되고 청구되는 하나 이상의 실시예들에 따라, 확장형 명령의 구성 명령들 사이에 중간 결과들의 전달(passing)은 레지스터 리네이밍 자원들 및 제어 로직을 사용하여 수행된다. 제 1 구성 명령은 중간 결과들을 생성하고 구성 명령 리네임 테이블에 PRN을 할당하고, 중간 결과들을 물리적 레지스터에 기록한다. 제 2 구성 명령은 구성 명령 리네임 테이블에서 검사(look up)를 수행하고 물리적 레지스터로부터 중간 결과들을 판독한다. 구성 명령 리네임 로직은 파이프라인을 통해 구성 명령들을 추적하고 구성 명령 리네임 테이블 엔트리를 삭제하고 제 2 구성 명령이 중간 결과들을 판독할 때 PRN을 프리 리스트로 복원시킨다.
[0006] 일 실시예는 리네임 테이블(rename table), 프리 리스트(free list) 및 구성(constituent) 명령 리네임 테이블을 갖는 시스템에서 확장형 명령을 실행하는 방법에 관한 것이다. 상기 제 1 구성 명령의 식별자를 상기 구성 명령 리네임 테이블 내의 물리적 레지스터와 연관된 물리적 레지스터 번호(physical register number)에 맵핑함으로써 상기 물리적 레지스터 번호가 상기 제 1 구성 명령에 할당되는데, 상기 제 1 구성 명령은 중간 결과를 생성합니다. 상기 할당된 물리적 레지스터 번호는 상기 제 2 구성 명령과 연관되는데, 상기 제 2 구성 명령은 상기 중간 결과를 수신합니다.
[0007] 또 다른 실시예는 프로세서에 관한 것이다. 프로세서는 리네임 테이블; 프리 리스트; 구성 명령 리네임 테이블; 확장형 명령을 제 1 구성 명령 및 제 2 구성 명령으로 변환함으로써 상기 확장형 명령을 실행하도록 동작하는 명령 실행 파이프라인 ? 상기 제 1 구성 명령은 중간 결과를 생성하고, 상기 제 2 구성 명령은 상기 중간 결과를 수신함 ?; 상기 제 1 구성 명령에 의해 생성된 상기 중간 결과를 저장하기 위한 물리적 레지스터 ? 상기 물리적 레지스터는 연관된 물리적 레지스터 번호를 가짐 ?; 및 상기 구성 명령 리네임 테이블에서 상기 제 1 구성 명령의 식별자를 상기 물리적 레지스터 번호에 맵핑하고 상기 물리적 레지스터 번호를 상기 제 2 구성 명령과 연관시킴으로써 상기 물리적 레지스터 번호를 상기 제 1 구성 명령에 할당하기 위한 리네임 로직 ? 상기 제 2 구성 명령은 상기 중간 결과를 수신함 ?을 포함한다.
[0008] 도 1은 확장형 명령의 구성 명령들 사이에 전달되는 중간 결과를 실행하도록 레지스터 리네이밍 자원들을 이용하는 프로세서의 기능 블럭도이다.
[0009] 도 2는 도 1의 프로세서의 파이프라인의 기능 블럭도이다.
[0010] 도 3은 확장형 명령을 실행하는 방법의 흐름도이다.
[0011] 도 1은 확장형 명령에 의해 생성된 구성 명령들 사이에 중간 결과들의 전달을 추적하기 위해 레지스터 리네이밍 자원들을 이용하는 로직을 갖는 프로세서(10)의 기능 블록도를 나타낸다. 프로세서(10)는 제어 로직(14)에 따라 명령 실행 파이프라인(12)의 명령들을 실행한다. 파이프라인(12)는 다수의 평행한 하위(lower) 파이프라인들(12a, 12b)을 가지는 슈퍼스칼라(superscalar) 디자인일 수 있다. 파이프라인(12)은 파이프 스테이지들로 조직되는(organized) 다양한 레지스터들 또는 래치들(16), 및 연산 논리 유니트들(ALU)(미도시)과 같은 논리 및 계산 회로들을 포함한다. 범용 레지스터(GPR) 파일(18)은 메모리 계층의 상부를 포함하는 레지스터들을 제공한다. 본 발명에 개시된 것처럼, GPR 파일(18)은 레지스터 리네이밍 자원들의 사용으로 확장형 명령들의 구성 명령들 사이에 중간 결과들이 효율적이고 신뢰성있게 포워딩되도록, 리네이밍 테이블(RT)(20), 프리 리스트(22), 및 구성 명령 리네이밍 테이블(CITR)(24)을 포함할 수 있다.
[0012] 파이프라인(12)은 명령 캐시(I-캐시 또는 I$)(26)로부터 명령들을 패치하고 메모리 어드레싱 및 허용들(permissions)은 명령-측 변환 색인 버퍼(Instruction-side Translation Lookaside Buffer;ITLB)(28)에 의해 관리된다. 데이터는 데이터 캐시(D-캐시 또는 D$)(30)로부터 액세스되며, 메모리 어드레싱 및 허용들은 메인 변환 색인 버퍼(TLB)(32)에 의해 관리된다. 다양한 실시예들에서, ITLB(28)은 TLB(32) 일부의 카피(copy)를 포함할 수 있다. 대안적으로, ITLB(28) 및 TLB(32)는 통합될 수 있다. 유사하게, 프로세서(10)의 다양한 실시예들에서, I-캐시(26) 및 D-캐시(30)는 통합되거나 또는 일체화될 수 있다.
[0013] I-캐시(28) 및/또는 D-캐시(30)에서의 누락들(misses)은 메모리 인터페이스(36)의 제어하에, 메인(오프-칩) 메모리(34)에 대한 액세스를 야기시킨다(도 시되지 않았지만, 다른 캐시들이 프로세서(10)와 메인 메모리(34) 사이에 삽입될 수 있다). 프로세서(10)는 다양한 주변 장치들(40, 42)에 대한 액세스를 제어하는 입/출력(I/O) 인터페이스(38)를 포함할 수 있다. 당업자들은 프로세서(10)에 대한 다양한 변형이 가능하다는 것을 인식할 수 있을 것이다. 예를 들어, 프로세서(10)는 I 캐시(26) 및 D 캐시(30) 중 어느 하나 또는 I 캐시(26) 및 D 캐시(30) 둘 다에 대한 제 2-레벨(L2) 캐시를 포함할 수 있다. 또한, 프로세서(10)에서 개시되는 하나 이상의 기능 블록들은 특정 실시예에서 생략될 수 있다.
[0014] 다수의 현대 프로세서들(10)은 다수의 파이프라인들(12a, 12b)을 완전히 이용하고 전체 성능을 개선시키기 위해 "순서외(out of order)" 명령들, 즉 명령의 프로그램 순서와는 다른 명령들을 실행한다. 순서외 명령 실행은 "해저드들(hazards)"로 공지된 명령들 간의 다양한 관련성들(dependencies)을 생성한다. 데이터 해저드들은 명령들의 재배열(reordering)이 액세스 순서를 상기 관련성에 수반되는 연산자로 변화시킬 때 발생된다. 데이터 해저드들은 기록 후 판독(RaW), 기록 후 기록(WaW), 및 판독 후 기록(WaR)의 3가지 타입들로 분류될 수 있다. 판독 후 판독(RaR)의 경우는 데이터 해저드가 아니라는 것이 주목된다; 판독들은 임의의 순서로 수행될 수 있다. 또한, RaW와 같은 데이터 해저드들은 명령들이 재배열되지 않을 때 발생되나, 이들의 결과들이 재기록되거나 또는 포워딩에 대한 준비가 될 때까지 단지 특정 스테이지에서 유지될 필요가 있다.
[0015] 순서외 명령 실행을 지원하는 프로세서들(10)의 데이터 해저드들을 처리하기 위한 공지된 시스템에는 레지스터 리네이밍이 있다. 레지스터 리네이밍 시스템에서, 각각이 물리적 레지스터 번호(PRN)를 가지는 물리적 레지스터들의 풀(pool) 또는 많은(large) 세트는 논리적 레지스터 번호들(LRNs)을 물리적 레지스터들에 동적으로 할당함으로써 관리된다. LRN들은 예를 들어, 논리적 GPR 식별자들(r0, r1, r2, ...)을 포함할 수 있다. 물리적 레지스터들의 번호는 LRN 또는 구조화된(architected) GPR들의 번호보다 크다. 리네이밍 테이블(RT)(20)은 LRN들과 PRN들 간의 동적 맵핑을 유지하고, 이용가능한 PRN들은 프리 리스트(22)에 유지된다.
[0016] 도 2는 파이프 라인 및 다양한 레지스터 리네이밍 자원들의 기능 블록도를 상세히 나타낸다. 파이프라인(12)의 페치(fetch) 스테이지(50)는 명령 캐시(26)로부터 명령들을 페치한다. 명령들은 디코드 스테이지(52)에서 디코딩되고 이슈(issue) 버퍼(54)에 기입될 수 있다. 명령들은 이슈 버퍼(54)로부터 파이프라인(12a, 12b)으로 발행된다. 리네임 로직(56)은 명령들의 레지스터 액세스 특징들을 검사하며, 필요에 따라 리네임 테이블(20) 및 프리 리스트(22)를 통해, 명령과 연관된 LRN들(이를 테면 GPR 식별자들)을 PRN들로 전환한다. 레지스터를 기록하는 명령들에 대해, 새로운 물리적 레지스터는 프리 리스트(22)로부터 선택되며, 새로운 LRN-대-PRN 맵핑은 리네임 테이블(20)에 기입된다. 이는 LRN을 사용되는 않는 PRN으로 맵핑하여, 연관된 물리적 레지스터에 대해 기록이 지시된다(즉, LRN이 "리네임된다(renamed)"). 레지스터 액세스 파이프 스테이지(58a, 58b)의 레지스터를 판독하는 명령들은 리네임 테이블(20) 검사를 통해 이들의 LRN을 PRN으로 전환한다. PRN은 파이프라인(12a, 12b)을 통해 이들의 보유기간(tenure) 동안 레지스터-판독 명령과 연관되게 유지된다.
[0017] 레지스터-기록 명령들은 동일한 LRN에 기록된 이전의 값들은 "변형(corrupt)"시키지 않는다; 새로운, 사용되지 않은 PRN(LRN이 새로운 PRN으로 리네이밍되는 것처럼)에 대한 기록이 지시된다. 프로그램 순서에 따라 기록 명령을 따르는 명령들은 기록된 값을 얻기 위해, 동일한 PRN에 대해 지시된다. 프로그램 순서에서 기록 명령 이전의 명령들은 리네임 테이블(20)에 의해 (리네이밍 동작 이전에) 상이한 물리적 레지스터로 맵핑되며 물리적 레지스터에 대한 액세스를 지속할 수 있다. 따라서, 제시된 LRN을 기록하는 명령들은 LRN(WaR)로부터 이전 값을 판독하거나 이전 결과를 LRN(WaW)로 기록하는 명령들을 미리 실행할 수 있다.
[0018] 레지스터-기록 명령이 파이프 스테이지(60a, 60b)에서의 실행을 위임할 때, ?즉 명령이 프로그램 순서에 따라 이를 앞서는 임의의 명령 또는 이것 중 어느 것도 확인하지 못할 때는 예외가 발생한다 ?, 할당된 PRN은 관련 구조화된 GPR이 된다. 명령은 재기록 파이프 스테이지(62a, 62b)(이후 기록 버퍼(64a, 64b))에서 이들의 결과를 상기 PRN에 기록한다. 이때, 다른 PRN들에 대해 동일한 LRN(GPR 식별자)의 임의의 이전(older) 리네이밍은 리네임 테이블(20)로부터 제거된다. 모든 명령들이 GPR 완료 실행(complete execution)을 판독할 때, PRN은 또 다른 리네임 연산(rename operation)에 대해 이용가능한 자원으로서, 프리 리스트(22)로 복귀된다. 인-플라이트(in-flight) 리네임 로직(66)은 실행을 위한 명령 커미트(instructions commit)로서 파이프라인(12)을 모니터링하고, 적절한 제어 신호들을 리네임 테이블(20) 및 프리 리스트(22)로 전송함으로써 이러한 기능들을 수행한다.
[0019] 하나 이상의 실시예들에 따라, 레지스터 리네임 시스템은 확장된(expanded) 명령들로부터 생성된 구성(constituent) 명령들 사이에서 중간 결과들의 포워딩을 제공하는데 이용된다. 확장형 명령이 파이프 스테이지(52)에서 디코딩될 때, 2개 이상의 구성 명령들이 생성되고 명령 발행 버퍼(54)로 전달될 수 있다. 구성 명령들은 하나 이상의 중간 결과들을 생성하고, 연산자들로서 중간 결과들을 수신하도록 플래깅될 수 있다(flagged). 리네임 로직(56)은 구성 명령들을 검사하고, 프리 리스트(22)로부터의 하나 이상의 PRN들을 중간 결과들을 생성하는 구성 명령들에 할당한다. 부가적으로 리네임 로직(56)은 중간 결과를 생성하는 구성 명령을 식별하는 인디케이터(indicator)를 할당된 PRN에 맵핑하는 엔트리(entry)를 구성 명령 리네임 테이블(24)에서 생성한다. 리네임 로직(56)은 중간 결과들을 생성하는 구성 명령을 식별하는 인디케이터와 중간 결과들을 수신하는 구성 명령들을 추가로 태깅한다(tags).
[0020] 중간 결과들을 수신하는 구성 명령들이 레지스터 액세스 파이프 스테이지(58a, 58b)에 도달할 때, 명령들은 이들의 중간 결과들을 보유하는 레지스터를 식별하는 PRN을 검색하기 위해 구성 명령 리네임 테이블(24)을 액세스한다. 중간 결과들을 수신하는 구성 명령들이 파이프 스테이지(60a, 60b)에서의 실행을 위임할 때, 구성 명령 리네임 로직(68)은 구성 명령 리네임 테이블(24)로부터 관련 엔트리를 제거하고 PRN을 프리 리스트(22)로 복귀시킨다. 구성 명령 리네임 테이블(24)이 독립적 기능 엔티티(independent functional entity)로서 도 2에 도시되었지만, 일부 실시예들에서, 기능은 리네임 테이블(20)에 포함될 수 있다는 것이 주목된다. 이러한 경우, 중간 결과들을 생성하고 수신하는 확장형 명령들의 구성 명령들은 레지스터 리네이밍의 특정 경우로써, 리네이밍되는 LRN보다는 명령 식별자를 이용하여 처리된다. 또 다른 실시예에서, 확장형 명령들에 전용되는 개별 프리 리스트(22) 및 물리적 레지스터의 개별 풀(pool)로, 구성 명령 레지스터 리네이밍은 레지스터 리네이밍과 구별될 수 있다.
[0021] 도 3은 확장형 명령을 실행하는 방법을 나타낸다. 확장형 명령은 2개 이상의 개별적으로 실행가능한 구성 명령들로 변환된다(블록 100). 중간 결과를 생성하는 제 1 구성 명령이 PRN에 할당된다(블록 102). 일 실시예에서, PRN은 레지스터 리네이밍 풀로부터 선택된다. 할당된 PRN은 중간 결과를 수신하는 제 2 구성 명령과 연관된다(블록 104). 연관(association)은 레지스터 리네이밍 시스템의 리네임 테이블(20) 또는 구성 명령 리네임 테이블(24)의 엔트리를 통해 이루어질 수 있다.
[0022] 다음 제 1 구성 명령이 실행되고(블록 106), 생성되는 중간 결과는 할당된 PRN에 의해 식별되는 레지스터에 저장된다. 제 2 구성 명령이 실행되고, 할당된 PRN에 의해 식별된 레지스터로부터 중간 결과가 검색된다(블록 108). 당업자들은 블록 106 및 블록 108이 중간 결과들을 물리적 레지스터에 실제적으로 기록하지 않고도, 명령들을 식별하기 위해 할당된 PRN을 이용하여, 연산자 포워딩에 의해 구현될 수 있다는 것을 인식할 것이다.
[0023] 제 2 구성 명령이 중간 결과를 수신한 후에, PRN은 이를 테면, 구성 명령 리네임 테이블(24)(또는 레지스터 리네임 테이블(20))로부터의 관련 엔트리를 제거함으로써 제 2 구성 명령으로부터 분리된다(블록 110). 다음 PRN은 이를 테면 PRN을 프리 리스트(22)로 복귀시킴으로써, 레지스터 리네이밍 풀로 복귀된다(블록 112). PRN은 제 2 구성 명령으로부터 분리되어 제 2 구성 명령이 실행되는 동안, 또는 임의의 이후 시간에서 중간 결과를 판독하자마자 프리 리스트(22)로 복귀될 수 있다.
[0024] 본 발명에 개시된 것처럼, 제시되는 레지스터 리네이밍 시스템들의 자원들 및 방법들을 이용함으로써, 확장형 명령들은 구성 명령들 사이에 중간 결과들의 전달(passing)을 실행하기 위한 광범위한 부가적 프로세서 자원들 및 로직의 요구 없이, 2개 이상의 구성 명령들을 실행할 수 있다. 비록 본 발명에서는 단일의 중간 결과를 전달하는 2개의 구성 명령들에 대해 개시하고 있지만, 당업자들은 본 발명이 이러한 실시예에 제한되지 않는다는 것을 쉽게 인식할 것이다. 일반적으로, 다수의(a large number) 구성 명령들은 임의의 확장형 명령으로부터 생성될 수 있으며, 구성 명령들은 본 발명에 개시된 것처럼, 레지스터 리네이밍 시스템을 이용하여, 이들 사이에 다수의 중간 결과들을 전달할 수 있다.
[0025] 물론, 본 발명은 본 발명의 본질적인 특징들을 이탈하지 않고 본 발명에 특정하게 개시된 것과는 다른 방식으로 실행될 수 있다. 본 발명의 실시예들은 제한되지 않고 예시적인 것으로 모든 면들을 고려할 수 있고, 첨부되는 청구항들의 의미 및 등가적 범주내에서의 모든 변화들을 고려할 수 있다.

Claims (19)

  1. 리네임 테이블(rename table), 프리 리스트(free list) 및 구성(constituent) 명령 리네임 테이블을 갖는 시스템에서 확장형 명령(expanded instruction)을 실행하는 방법으로서,
    상기 확장형 명령을, 제 1 구성 명령 및 제 2 구성 명령을 포함하는 다수의 개별적으로 실행가능한 구성 명령들로 변환하는 단계;
    상기 제 1 구성 명령의 식별자를 상기 구성 명령 리네임 테이블 내의 물리적 레지스터와 연관된 물리적 레지스터 번호(physical register number)에 맵핑함으로써 상기 물리적 레지스터 번호를 상기 제 1 구성 명령에 할당하는 단계 ? 상기 제 1 구성 명령은 중간 결과를 생성함 ?; 및
    상기 할당된 물리적 레지스터 번호를 상기 제 2 구성 명령과 연관시키는 단계 ? 상기 제 2 구성 명령은 상기 중간 결과를 수신함 ? 를 포함하는, 확장형 명령을 실행하는 방법.
  2. 제 1 항에 있어서,
    상기 중간 결과를 생성하기 위해 상기 제 1 구성 명령을 실행하는 단계를 더 포함하는, 확장형 명령을 실행하는 방법.
  3. 제 2 항에 있어서,
    상기 중간 결과를 상기 물리적 레지스터에 저장하지 않고 상기 중간 결과를 상기 제 2 구성 명령의 피연산자(operand)로서 포워딩(forward)하기 위해서 상기 할당된 물리적 레지스터 번호를 사용하는 단계를 더 포함하는, 확장형 명령을 실행하는 방법.
  4. 제 3 항에 있어서,
    상기 물리적 레지스터 번호를 상기 제 1 구성 명령에 할당하는 단계는 상기 제 1 구성 명령의 식별자를 상기 물리적 레지스터 번호에 맵핑하는 엔트리(entry)를 구성 명령 리네임 테이블 내에서 생성하는 단계를 포함하고,
    상기 구성 명령 리네임 테이블 내에서 검사(lookup)를 수행하지 않고 상기 제 2 구성 명령에 의해 상기 중간 결과를 수신하는 단계를 더 포함하는, 확장형 명령을 실행하는 방법.
  5. 제 2 항에 있어서,
    상기 중간 결과를 상기 물리적 레지스터에 저장하는 단계를 더 포함하는, 확장형 명령을 실행하는 방법.
  6. 제 5 항에 있어서,
    상기 제 2 구성 명령을 실행하는 단계를 더 포함하고,
    상기 제 2 구성 명령을 실행하는 단계는 상기 물리적 레지스터로부터 상기 중간 결과를 검색하는 단계를 포함하는, 확장형 명령을 실행하는 방법.
  7. 제 1 항에 있어서,
    상기 물리적 레지스터 번호를 상기 제 1 구성 명령에 할당하는 단계는 상기 제 1 구성 명령의 식별자를 상기 물리적 레지스터 번호에 맵핑하는 엔트리를 구성 명령 리네임 테이블 내에서 생성하는 단계를 포함하는, 확장형 명령을 실행하는 방법.
  8. 제 7 항에 있어서,
    상기 물리적 레지스터 번호는 이용가능한 물리적 레지스터들의 리스트로부터 선택되는, 확장형 명령을 실행하는 방법.
  9. 제 1 항에 있어서,
    상기 제 2 구성 명령을 실행하는 단계를 더 포함하고,
    상기 제 2 구성 명령을 실행하는 단계는 상기 제 1 구성 명령의 식별자를 사용하여 구성 명령 리네임 테이블에서 검사를 수행하는 단계를 더 포함하는, 확장형 명령을 실행하는 방법.
  10. 제 1 항에 있어서,
    상기 제 2 구성 명령이 상기 중간 결과를 판독한 이후에, 상기 제 1 구성 명령으로의 할당으로부터 상기 물리적 레지스터 번호를 해제(release)하는 단계를 더 포함하는, 확장형 명령을 실행하는 방법.
  11. 제 10 항에 있어서, 상기 물리적 레지스터 번호를 해제하는 단계는 상기 물리적 레지스터 번호를 이용가능한 물리적 레지스터들의 리스트에 추가하는 단계를 포함하는, 확장형 명령을 실행하는 방법.
  12. 제 1 항에 있어서,
    상기 할당된 물리적 레지스터 번호를 상기 제 2 구성 명령과 연관시키는 단계는 상기 제 2 구성 명령을 상기 제 1 구성 명령의 식별자와 태깅(tagging)하는 단계를 포함하는, 확장형 명령을 실행하는 방법.
  13. 프로세서로서,
    리네임 테이블;
    프리 리스트;
    구성 명령 리네임 테이블;
    확장형 명령을 제 1 구성 명령 및 제 2 구성 명령으로 변환함으로써 상기 확장형 명령을 실행하도록 동작하는 명령 실행 파이프라인 ? 상기 제 1 구성 명령은 중간 결과를 생성하고, 상기 제 2 구성 명령은 상기 중간 결과를 수신함 ?;
    상기 제 1 구성 명령에 의해 생성된 상기 중간 결과를 저장하기 위한 물리적 레지스터 ? 상기 물리적 레지스터는 연관된 물리적 레지스터 번호를 가짐 ?; 및
    상기 구성 명령 리네임 테이블에서 상기 제 1 구성 명령의 식별자를 상기 물리적 레지스터 번호에 맵핑하고 상기 물리적 레지스터 번호를 상기 제 2 구성 명령과 연관시킴으로써 상기 물리적 레지스터 번호를 상기 제 1 구성 명령에 할당하기 위한 리네임 로직 ? 상기 제 2 구성 명령은 상기 중간 결과를 수신함 ?을 포함하는, 프로세서.
  14. 제 13 항에 있어서, 상기 제 2 구성 명령이 상기 중간 결과를 수신한 이후에 상기 물리적 레지스터 번호를 상기 프리 리스트에 복귀(return)시키도록 제어 로직이 동작하는, 프로세서.
  15. 제 13 항에 있어서, 상기 구성 명령 리네임 테이블의 구성 명령 리네임 테이블 엔트리가 상기 제 1 구성 명령과 연관된 제 1 구성 명령 식별자를 상기 물리적 레지스터 번호에 맵핑시키는, 프로세서.
  16. 제 13 항에 있어서, 상기 제 1 구성 명령은 상기 중간 결과를 상기 물리적 레지스터에 기록하는, 프로세서.
  17. 제 13 항에 있어서, 상기 제 2 구성 명령은 상기 물리적 레지스터로부터 상기 중간 결과를 판독하는, 프로세서.
  18. 제 15 항에 있어서, 상기 제 2 구성 명령은 상기 제 1 구성 명령의 식별자를 사용한 상기 구성 명령 리네임 테이블에서의 구성 명령 리네임 테이블 검사를 통해 상기 물리적 레지스터 번호를 검색하는, 프로세서.
  19. 제 15 항에 있어서, 상기 구성 명령 리네임 테이블 엔트리는 상기 제 2 구성 명령이 상기 중간 결과를 수신한 이후에 상기 구성 명령 리네임 테이블로부터 제거되는, 프로세서.
KR1020097016741A 2007-01-24 2008-01-24 확장형 명령의 구성 명령들 사이에 중간 결과들을 포워딩하는 레지스터 리네이밍 시스템의 사용 KR101154628B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/626,424 US7669039B2 (en) 2007-01-24 2007-01-24 Use of register renaming system for forwarding intermediate results between constituent instructions of an expanded instruction
US11/626,424 2007-01-24

Publications (2)

Publication Number Publication Date
KR20090100448A KR20090100448A (ko) 2009-09-23
KR101154628B1 true KR101154628B1 (ko) 2012-06-08

Family

ID=39323615

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020097016741A KR101154628B1 (ko) 2007-01-24 2008-01-24 확장형 명령의 구성 명령들 사이에 중간 결과들을 포워딩하는 레지스터 리네이밍 시스템의 사용

Country Status (13)

Country Link
US (1) US7669039B2 (ko)
EP (1) EP2126689B8 (ko)
JP (1) JP5275253B2 (ko)
KR (1) KR101154628B1 (ko)
CN (1) CN101601008B (ko)
AT (1) ATE481676T1 (ko)
BR (1) BRPI0806737B1 (ko)
CA (1) CA2674872C (ko)
DE (1) DE602008002568D1 (ko)
ES (1) ES2352586T3 (ko)
MX (1) MX2009007939A (ko)
RU (1) RU2431887C2 (ko)
WO (1) WO2008092037A1 (ko)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9697002B2 (en) 2011-10-03 2017-07-04 International Business Machines Corporation Computer instructions for activating and deactivating operands
US9690583B2 (en) 2011-10-03 2017-06-27 International Business Machines Corporation Exploiting an architected list-use operand indication in a computer system operand resource pool
US9513915B2 (en) * 2012-03-28 2016-12-06 International Business Machines Corporation Instruction merging optimization
US9395988B2 (en) * 2013-03-08 2016-07-19 Samsung Electronics Co., Ltd. Micro-ops including packed source and destination fields
US10565670B2 (en) 2016-09-30 2020-02-18 Intel Corporation Graphics processor register renaming mechanism
CN111506347B (zh) * 2020-03-27 2023-05-26 上海赛昉科技有限公司 一种基于指令写后读相关假设的重命名的方法
CN112416434B (zh) * 2020-12-03 2023-02-17 海光信息技术股份有限公司 物理寄存器分配方法、物理寄存器分配装置和电子设备
CN114168197B (zh) * 2021-12-09 2023-05-23 海光信息技术股份有限公司 指令执行方法、处理器以及电子装置
CN116662006B (zh) * 2023-06-06 2024-02-23 北京市合芯数字科技有限公司 多线程处理器重命名资源管理方法、系统、装置及介质

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5627985A (en) * 1994-01-04 1997-05-06 Intel Corporation Speculative and committed resource files in an out-of-order processor
US5586278A (en) * 1994-03-01 1996-12-17 Intel Corporation Method and apparatus for state recovery following branch misprediction in an out-of-order microprocessor
US5771366A (en) * 1995-06-09 1998-06-23 International Business Machines Corporation Method and system for interchanging operands during complex instruction execution in a data processing system
US5758117A (en) * 1995-12-14 1998-05-26 International Business Machines Corporation Method and system for efficiently utilizing rename buffers to reduce dispatch unit stalls in a superscalar processor
US6279102B1 (en) * 1997-12-31 2001-08-21 Intel Corporation Method and apparatus employing a single table for renaming more than one class of register
US6212619B1 (en) * 1998-05-11 2001-04-03 International Business Machines Corporation System and method for high-speed register renaming by counting
US7055021B2 (en) * 2002-02-05 2006-05-30 Sun Microsystems, Inc. Out-of-order processor that reduces mis-speculation using a replay scoreboard
US7185182B2 (en) * 2003-02-04 2007-02-27 Via Technologies, Inc. Pipelined microprocessor, apparatus, and method for generating early instruction results
US7219218B2 (en) * 2003-03-31 2007-05-15 Sun Microsystems, Inc. Vector technique for addressing helper instruction groups associated with complex instructions
JP3752493B2 (ja) * 2003-03-31 2006-03-08 東芝マイクロエレクトロニクス株式会社 レジスタ・リネーミング機能を有するプロセッサ
US7373486B2 (en) * 2005-08-29 2008-05-13 P.A. Semi, Inc. Partially decoded register renamer

Also Published As

Publication number Publication date
CN101601008B (zh) 2013-05-08
ES2352586T3 (es) 2011-02-21
CN101601008A (zh) 2009-12-09
EP2126689B1 (en) 2010-09-15
CA2674872C (en) 2013-06-25
DE602008002568D1 (de) 2010-10-28
WO2008092037A1 (en) 2008-07-31
BRPI0806737B1 (pt) 2023-11-28
CA2674872A1 (en) 2008-07-31
RU2431887C2 (ru) 2011-10-20
US20080177987A1 (en) 2008-07-24
US7669039B2 (en) 2010-02-23
ATE481676T1 (de) 2010-10-15
EP2126689A1 (en) 2009-12-02
JP2010517180A (ja) 2010-05-20
RU2009131714A (ru) 2011-02-27
EP2126689B8 (en) 2010-12-29
KR20090100448A (ko) 2009-09-23
MX2009007939A (es) 2009-08-07
BRPI0806737A2 (pt) 2011-09-13
BRPI0806737A8 (pt) 2018-04-10
JP5275253B2 (ja) 2013-08-28

Similar Documents

Publication Publication Date Title
JP6009608B2 (ja) 条件付き命令が無条件で出力を提供するシステム及び方法
KR101154628B1 (ko) 확장형 명령의 구성 명령들 사이에 중간 결과들을 포워딩하는 레지스터 리네이밍 시스템의 사용
TWI507980B (zh) 最佳化暫存器初始化操作
US7711929B2 (en) Method and system for tracking instruction dependency in an out-of-order processor
JP5866259B2 (ja) 誤予測された分岐のためにフラッシュするセグメント化パイプライン
US7660971B2 (en) Method and system for dependency tracking and flush recovery for an out-of-order microprocessor
US9454371B2 (en) Micro-architecture for eliminating MOV operations
US20070033385A1 (en) Call return stack way prediction repair
US10942743B2 (en) Splitting load hit store table for out-of-order processor
KR100572040B1 (ko) 명령들의 퇴거시 물리적인 레지스터들을 선택적으로 자유화하도록 구성된 프로세서
US7783692B1 (en) Fast flag generation
WO2013101323A1 (en) Micro-architecture for eliminating mov operations

Legal Events

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

Payment date: 20160330

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20170330

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20180329

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20190327

Year of fee payment: 8