KR20170076564A - 레지스터 리네이밍을 사용한 무브 명령어 처리 - Google Patents

레지스터 리네이밍을 사용한 무브 명령어 처리 Download PDF

Info

Publication number
KR20170076564A
KR20170076564A KR1020160171207A KR20160171207A KR20170076564A KR 20170076564 A KR20170076564 A KR 20170076564A KR 1020160171207 A KR1020160171207 A KR 1020160171207A KR 20160171207 A KR20160171207 A KR 20160171207A KR 20170076564 A KR20170076564 A KR 20170076564A
Authority
KR
South Korea
Prior art keywords
register
move
logical
physical
registers
Prior art date
Application number
KR1020160171207A
Other languages
English (en)
Other versions
KR102659813B1 (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 KR20170076564A publication Critical patent/KR20170076564A/ko
Application granted granted Critical
Publication of KR102659813B1 publication Critical patent/KR102659813B1/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/30098Register arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • 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

Abstract

장치는, 처리회로와, 레지스터 리네임 회로와, 원시 논리 레지스터와 목적지 논리 레지스터를 지정하는 무브 명령어를 처리하기 위한 제1 무브 처리기술과 제2 무브 처리기술 중 한쪽을 선택하는 제어회로를 갖는다. 상기 제1 무브 처리기술에서는, 상기 레지스터 리네임 회로가, 상기 무브 명령어의 목적지 논리 레지스터를 상기 원시 논리 레지스터와 같은 물리 레지스터에 매핑한다. 상기 제2 무브 처리기술에서는, 상기 처리회로가, 상기 원시 논리 레지스터에 대응한 물리 레지스터로부터 판독된 데이터 값을 상기 목적지 논리 레지스터에 대응한 다른 물리 레지스터에 기록한다. 상기 제2 무브 처리기술은, 상기 무브 명령어가 상기 제1 무브 처리기술에 따라 처리된 이전의 무브 명령어로서 상기 원시 및 목적지 논리 레지스터 중 한쪽과 같은 원시 논리 레지스터를 지정하고, 상기 이전의 무브 명령어의 처리시에 그 레지스터에 사용된 레지스터 매핑이 여전히 현재 레지스터 매핑일 때, 선택된다.

Description

레지스터 리네이밍을 사용한 무브 명령어 처리{HANDLING MOVE INSTRUCTIONS USING REGISTER RENAMING}
본 기술은 데이터 처리 분야에 관한 것이다.
데이터 처리장치는, 명령어들이 지정한 논리 레지스터들을 하드웨어에 설치된 물리 레지스터들에 매핑하는 레지스터 리네이밍을 지원할 수도 있다. 예를 들면, 이것은, 연속적인 명령어들의 목적지 논리 레지스터들을 다른 물리 레지스터들에 매핑하여서 동일한 논리 레지스터에 기록하는 그 연속적인 명령어들간의 종속성을 제거하여서 성능을 향상시키는데 유용할 수 있다. 이것은, 레지스터 리네이밍을 사용하여 명령어들간의 데이터 의존성 위험을 제거하는 것에 의해 자유도를 증가시켜 명령어들이 성능을 향상시키기 위해 실행되는 순서를 변경하는 비순차 프로세서에서 특히 유용하다.
적어도 일부의 예들은,
명령어들에 응답하여 데이터 처리를 실행하는 처리회로;
상기 명령어들에 의해 지정된 논리 레지스터들을 하드웨어에 설치된 물리 레지스터들에 매핑하는 레지스터 리네임 회로;
원시 논리 레지스터와 목적지 논리 레지스터를 지정하는 무브 명령어를 처리하기 위한 제1 무브 처리기술과 제2 무브 처리기술 중 한쪽을 선택하는 제어회로를 구비한 장치를 제공하고,
상기 제1 무브 처리기술에서는, 상기 무브 명령어에 응답하여 상기 레지스터 리네임 회로가, 상기 목적지 논리 레지스터를 상기 원시 논리 레지스터와 같은 물리 레지스터에 매핑하도록 구성되고,
상기 제2 무브 처리기술에서는, 상기 무브 명령어에 응답하여 상기 처리회로가, 상기 원시 논리 레지스터에 대응한 물리 레지스터로부터 판독된 데이터 값을 상기 목적지 논리 레지스터에 대응한 다른 물리 레지스터에 기록하도록 구성되고,
상기 제어회로는, 상기 무브 명령어의 상기 원시 논리 레지스터가 상기 제1 무브 처리기술에 따라 처리된 이전의(earlier) 무브 명령어의 상기 원시 및 목적지 논리 레지스터 중 한쪽과 같고 상기 원시 및 목적지 논리 레지스터 중 상기 한쪽에 대한 현재의 레지스터 매핑이 상기 이전의 무브 명령어의 처리시에 상기 원시 및 목적지 논리 레지스터 중 상기 한쪽에 사용된 레지스터 매핑과 같을 때, 상기 제2 무브 처리기술을 선택하도록 구성된다.
적어도 일부의 예들은,
명령어들에 응답하여 데이터 처리를 실행하는 수단;
상기 명령어들에 의해 지정된 논리 레지스터들을 하드웨어에 설치된 물리 레지스터들에 매핑하는 수단; 및
원시 논리 레지스터와 목적지 논리 레지스터를 지정하는 무브 명령어를 처리하기 위한 제1 무브 처리기술과 제2 무브 처리기술 중 한쪽을 선택하는 수단을 구비한 장치를 제공하고,
상기 제1 무브 처리기술에서는, 상기 무브 명령어에 응답하여 상기 매핑 수단이, 상기 목적지 논리 레지스터를 상기 원시 논리 레지스터와 같은 물리 레지스터에 매핑하도록 구성되고,
상기 제2 무브 처리기술에서는, 상기 무브 명령어에 응답하여 상기 데이터 처리 실행수단이, 상기 원시 논리 레지스터에 대응한 물리 레지스터로부터 판독된 데이터 값을 상기 목적지 논리 레지스터에 대응한 다른 물리 레지스터에 기록하도록 구성되고,
상기 선택 수단은, 상기 무브 명령어의 상기 원시 논리 레지스터가 상기 제1 무브 처리기술에 따라 처리된 이전의 무브 명령어의 상기 원시 및 목적지 논리 레지스터 중 한쪽과 같고 상기 원시 및 목적지 논리 레지스터 중 상기 한쪽에 대한 현재의 레지스터 매핑이 상기 이전의 무브 명령어의 처리시에 상기 원시 및 목적지 논리 레지스터 중 상기 한쪽에 사용된 레지스터 매핑과 같을 때, 상기 제2 무브 처리기술을 선택하도록 구성된다.
적어도 일부의 예들은,
원시 논리 레지스터와 목적지 논리 레지스터를 지정하는 무브 명령어를 처리하기 위한 제1 무브 처리기술과 제2 무브 처리기술 중 한쪽을 선택하는 단계;
상기 제1 무브 처리기술이 선택될 때, 상기 목적지 논리 레지스터를 상기 원시 논리 레지스터와 같은 물리 레지스터에 매핑하는 단계; 및
상기 제2 무브 처리기술이 선택될 때, 상기 원시 논리 레지스터에 대응한 물리 레지스터로부터 데이터 값을 판독하여, 상기 목적지 논리 레지스터에 대응한 다른 물리 레지스터에 기록하는 단계를 포함하는 데이터 처리방법을 제공하고,
상기 무브 명령어의 상기 원시 논리 레지스터가 상기 제1 무브 처리기술에 따라 처리된 이전의 무브 명령어의 상기 원시 및 목적지 논리 레지스터 중 한쪽과 같고, 상기 원시 및 목적지 논리 레지스터 중 상기 한쪽에 대한 현재의 레지스터 매핑이, 상기 이전의 무브 명령어의 처리시에 상기 원시 및 목적지 논리 레지스터 중 상기 한쪽에 사용된 레지스터 매핑과 같을 때, 상기 제2 무브 처리기술을 선택한다.
본 기술의 또 다른 측면들, 특징들 및 이점들은, 첨부도면과 함께 읽혀질 이하의 예들의 설명으로부터 명백할 것이다.
도 1은 레지스터 리네임 회로를 갖는 데이터 처리장치의 일례를 개략적으로 나타내고,
도 2a는 무브 명령어를 처리하는 제1 무브 처리기술의 일례를 나타내고,
도 2b는 상기 무브 명령어를 처리하는 제2 무브 처리기술의 일례를 나타내고,
도 3은 제1 무브 명령어에 대한 제1 무브 처리기술을 사용하고, 상기 무브 명령어의 상기 원시 또는 목적지 논리 레지스터에 종속된 이후의 무브 명령어에 대한 제2 무브 처리기술을 사용하는 일례를 나타내고,
도 4는 상기 제1 무브 처리기술에 따라 무브 명령어의 처리에 계속되어서 2개의 다른 물리 레지스터에 매핑된 물리 레지스터가 다른 논리 레지스터에 재할당 가능할 때를 결정하는 일례를 나타내고,
도 5는 무브 명령어 처리 방법을 나타내는 흐름도이고,
도 6은 물리 레지스터를 재할당 가능할 때를 결정하는 방법을 나타내고,
도 7은 주어진 물리 레지스터에 대한 상태 천이를 나타내는 상태도이고,
도 8은 추론적 및 구조적 리네임 테이블을 사용하여 레지스터 리네임 회로의 제2 실시예를 나타내고,
도 9는 도 8의 실시예를 사용하여 무브 명령어들을 처리하는 일례를 나타내고,
도 10은 상기 제2 실시예에서 무브 명령어들을 처리하는 방법을 나타내고,
도 11은 명령어가 위임될 때 상기 구조적 리네임 테이블을 갱신하는 방법을 나타내고,
도 12는 플러시(flush) 이벤트에 응답하는 방법을 나타내고,
도 13은 상기 제2 실시예에서 물리 레지스터를 재할당 가능할 때를 결정하는 방법을 나타내고,
도 14는 제2 실시예에서 주어진 물리 레지스터에 대한 상태 천이를 나타내는 상태도다.
이하, 일부의 구체적인 예들을 설명한다. 본 발명은 이들의 예들에 한정되지 않는다는 것을 알 것이다.
원시 논리 레지스터와 목적지 논리 레지스터를 지정하는 무브 명령어가 제공되어도 된다. 레지스터 리네이밍을 지원하지 않는 시스템의 경우, 그 무브 명령어에 응답하여, 처리회로는, 하나의 레지스터로부터 데이터 값을 판독하여 다른 레지스터에 기록할 것이다. 그렇지만, 레지스터 리네이밍이 지원될 때, 상기 무브 명령어는, 상기 무브 명령어의 목적지 논리 레지스터를 간단히 현재 상기 원시 논리 레지스터에 매핑된 동일한 물리 레지스터에 재매핑하여서 리네임 스테이지에서 보다 빨리 처리될 수 있다. 상기 레지스터 리네임 회로를 사용한 무브 명령어의 처리는, 먼저 상기 무브 명령어를 실제로 상기 처리회로에 발송할 필요를 없애서 그 밖의 명령어를 위한 처리 슬롯들을 확보하여서 성능을 향상시키는데 도움이 될 수 있고, 또한 상기 무브 명령어의 목적지 논리 레지스터를 판독하는 이후의 명령어들이 상기 무브 명령어의 상기 원시 논리 레지스터에 기록하는 오래된 명령어에 종속되어지는 것이 효과적이기 때문에, 그 이후의 명령어들은 이들의 오퍼랜드들이 이용 가능해질 정도로 오래 기다릴 필요가 없어서, 성능을 향상시킨다.
일반적으로, 주어진 무브 명령어가 실제로 상기 처리회로에 의해 처리되는 경우보다 상기 주어진 무브 명령어가 상기 리네임 스테이지에서 빨리 처리될 수 있으므로, 항상 상기 리네이밍 기술을 사용하여 상기 무브 명령어를 처리하는 것이 바람직할 것이라는 것을 예상할 것이다. 그렇지만, 상기 리네임 회로에서 목적지 논리 레지스터를 상기 원시 논리 레지스터와 같은 물리 레지스터에 재매핑하여서 무브 명령어를 처리할 때, 이것이 다수의 논리 레지스터에서 전부 동일한 물리 레지스터에 매핑되게 되기 때문에 일부 문제가 생길 수도 있다. 이것은, 주어진 물리 레지스터가 임의의 진행중 명령어들에 의해 더 이상 요구되지 않을 때를 결정하기가 보다 어려울 수 있고 다른 논리 레지스터에 재할당될 수 있다. 주어진 프로그램은, 각각 이전의 무브 명령어의 결과에 의존하는 무브 명령어의 체인을 포함하여도 된다. 예를 들면, 하나의 무브 명령어는, 데이터를 논리 레지스터 A로부터 논리 레지스터 B에 이동시키고 나서, 다른 무브 명령어가 데이터를 논리 레지스터 B로부터 논리 레지스터 C에 이동시키고 나서, 다른 무브 명령어가 데이터를 논리 레지스터 C로부터 논리 레지스터 D에 이동시키는 등을 행할 수도 있다. 상기 체인에서 이들 무브 명령어 각각이 상기 리네이밍 기술을 사용하여 처리되는 경우, 동일한 물리 레지스터에 전부 매핑되는 논리 레지스터가 많아질 수 있고 이에 따라 물리 레지스터 비할당을 복잡하게 할 수도 있다. 이를 해결하는 접근법은, 논리 레지스터가 물리 레지스터에 매핑될 때마다 증가되고 그 매핑이 더 이상 요구되지 않을 때 감소되는, 물리 레지스터 당 다수의 카운터를 제공하는 방법이다. 그 카운터가 0에 도달할 때, 상기 물리 레지스터는 다른 논리 레지스터에 재할당되어도 된다. 그렇지만, 이것은 전형적인 하이 엔드(high-end) 비순차 처리 파이프라인이 160-180개의 물리 레지스터만큼 많이 가질 수도 있기 때문에 비교적 값비싼 해결책이고, 이들 각각에는 그 자신의 멀티비트 카운터를 제공하는 것에 의해, 물리 레지스터 당 회로를 제공하여 상기 카운터를 증감하고 그 카운터와 제로를 비교하여 물리 레지스터를 재할당 가능할 때를 결정하는 것과 아울러, 기억될 필요가 있는 추가의 상태 데이터의 양이 많아질 수 있다.
대신에, 장치에는, 무브 명령어를 처리하기 위한 제1 무브 처리기술과 제2 무브 처리기술 중 한쪽을 선택하는 제어회로가 구비되어도 된다. 상기 제1 무브 처리기술에서는, 상기 무브 명령어에 응답하여, 상기 레지스터 리네임 회로가, 상기 목적지 논리 레지스터를 원시 논리 레지스터와 같은 물리 레지스터에 매핑한다. 상기 제2 무브 처리기술에서는, 상기 무브 명령어에 응답하여, 상기 처리회로가, 상기 원시 논리 레지스터에 대응한 물리 레지스터로부터 판독된 데이터 값을 상기 목적지 논리 레지스터에 대응한 다른 물리 레지스터에 기록한다. 상기 제어회로는, 상기 무브 명령어의 상기 원시 논리 레지스터가 상기 제1 무브 처리기술에 따라 처리된 이전의 무브 명령어의 상기 원시 및 목적지 논리 레지스터 중 한쪽과 같고, 상기 이전의 무브 명령어를 처리할 때 상기 원시 및 목적지 논리 레지스터 중 상기 한쪽에 사용된 레지스터 매핑이 여전히 현재의 레지스터 매핑일 때, 상기 제2 무브 처리기술을 선택하여도 된다.
일부의 경우에 관한 상기 제2 무브 처리기술의 선택은 그 제2 무브 처리기술이 일반적으로 상기 제1 무브 처리기술보다 느릴 수도 있기 때문에 성능에 해를 끼칠 것이라고 예상할 것이다. 그러나, 실제로, 발명자들이 관찰한 것은, 종속적 무브 명령어의 체인이 있을 때, 상기 체인에서의 제2 무브 명령어와 상기 체인에서의 이후의 임의의 무브 명령어들은 임계 경로상에서 자주 일어나지 않는다는 것이다. 처리의 임계 경로(성능을 제한하는 경로)상에서 관찰된 대부분의 무브는 그것에 종속하는 이후의 무브를 갖지 않는다. 이 때문에, 체인의 제1 무브 명령어가 제1 무브 처리기술에 따라 처리되지만 이후의 연쇄 무브는 제2 무브 처리기술에 따라 처리되는 경우, 상기 제1 무브 처리기술을 사용하여 무브 명령어들을 처리하는 많은 성능상 이점을 달성할 수 있다는 것이 보여졌다. 따라서, 상기 무브 명령어의 상기 원시 논리 레지스터가 상기 제1 무브 처리기술에 따라 처리된 이전의 무브 명령어의 상기 원시 또는 목적지 논리 레지스터 중 한쪽과 같고, 상기 원시 및 목적지 논리 레지스터 중 상기 한쪽에 대한 레지스터 매핑이 여전히 현재의 레지스터 매핑일 때, 상기 제2 무브 처리기술을 선택함으로써, 이것에 의해, 동일한 물리 레지스터에 매핑된 다수의 논리 레지스터를 추적하기 위해 복잡한 회로가 필요하지 않아 회로 면적과 소비 전력을 절감하지만, 반직관적으로 이것은 성능의 손실이 상당하지 않게 된다.
일부의 예들에서, 상기 제1 무브 처리기술은, 상기 무브 명령어의 원시가 상기 이전의 무브 명령어의 원시 또는 목적지와 일치하고 상기 이전의 무브 명령어의 원시 또는 목적지 중 한쪽에 대한 현재의 레지스터 매핑이 여전히 현재의 레지스터 매핑일 때, 상술한 조건이외의 경우에 선택되어도 된다. 한편, 상술한 조건이외의 일부의 경우에 상기 제2 무브 처리기술을 선택하는 것도 가능하다.
주어진 무브 명령어를 처리하는 방법을 결정하는 점에 있어서, 상기 이전의 무브 명령어의 상기 원시 또는 목적지 논리 레지스터에 대한 현재의 레지스터 매핑이 상기 이전의 무브 명령어를 처리할 때 사용된 레지스터 매핑과 같을 때, 이것은, 반드시 상기 이전의 무브 명령어를 처리한 후 그 논리 레지스터에 대한 레지스터 매핑으로 변경이 없었다는 것을 의미하지 않는다는 것을 주목한다. 이것이 종종 사실일 경우가 있지만, 명령어들의 추론적 리네이밍을 지원하는 시스템에서는, 다른 명령어를 추론적으로 리네이밍해서 관련 논리 레지스터에 사용된 레지스터 매핑을 변경하여도 되는 것이 가능하다. 그 후에 다른 명령어를 실행하지 않아야 것(예를 들면, 분기가 잘못 예측되어 있을 수도 있는 것)을 검출한 경우, 파이프라인은 출력되어버려도 되고, 그 논리 레지스터에 대한 레지스터 매핑은 상기 이전의 무브 명령어를 처리할 때 가졌던 상기 이전의 레지스터 매핑으로 복원되어도 된다.
상기 제1 무브 처리기술에서는, 무브 명령어에 응답하여, 상기 레지스터 리네임 회로는, 목적지 논리 레지스터를 원시 논리 레지스터와 같은 물리 레지스터에 매핑한다. 상기 제어회로는, 제1 무브 처리기술을 사용할 때 상기 무브 명령어를 상기 처리회로에 발송하는 것을 억제하여도 된다.
한편, 제2 무브 처리기술에 대해서, 상기 레지스터 리네임 회로는, 상기 무브 명령어의 목적지 논리 레지스터를, 현재 상기 원시 논리 레지스터에 매핑된 제1 물리 레지스터와는 다른 제2 물리 레지스터에 매핑하여도 된다. 그리고, 상기 무브 명령어는, 상기 제1 물리 레지스터로부터 데이터 값을 판독하여 제2 물리 레지스터에 기록하기 위해, 상기 처리회로에 의해 발송 및 실행되어도 된다.
주어진 논리 레지스터가, 상기 이전의 무브 명령어를 처리할 때 사용된 상기 레지스터 매핑이 여전히 현재의 레지스터 매핑인 이전의 무브 명령어의 원시 또는 목적지이었는지를 추적하는 하나의 방식은, 상기 논리 레지스터들 중 하나에 각각 대응하는 다수의 제어 플래그를 제공하는 방식이다. 예를 들면, 각 제어 플래그는, 물리 레지스터 매핑에 대한 대응한 논리 레지스터와 함께 리네임 테이블에 기억되어도 된다. 상기 제어회로는, 처리될 새로운 무브 명령어의 상기 원시 논리 레지스터에 대응한 제어 플래그에 근거하여 상기 제1 무브 처리기술과 제2 무브 처리기술 사이에서 선택하여도 된다. 각 제어 플래그는 제1 값과 제2 값을 취할 수 있다. 상기 제어회로는, 무브 명령어의 상기 원시 논리 레지스터와 상기 목적지 논리 레지스터 양쪽에 대응한 제어 플래그들을, 상기 제1 무브 처리기술을 이용하여 그 무브 명령어를 처리할 때의 제1 값으로 설정한다. 상기 레지스터 리네임 회로가 주어진 논리 레지스터를 상기 제1 무브 처리기술을 사용하여 처리된 무브 명령어이외의 명령어를 위한 다른 물리 레지스터에 재매핑할 때, 상기 제어 플래그는 제2 값으로 설정된다. 무브 명령어에 접할 때, 상기 제어회로는 그 무브 명령어의 상기 원시 논리 레지스터에 대응하는 제어 플래그를 확인한다. 상기 제어 플래그가 제1 값을 가질 때, 제2 무브 처리기술은 그 무브 명령어를 위해 선택된다. 상기 제어 플래그가 제2 값을 가질 때, 제1 무브 처리기술이 선택된다. 상기 제1 값은 1에 해당하고 제2 값은 0에 해당하거나 이와는 반대이어도 된다.
이러한 접근법은, 동일한 물리 레지스터에 매핑될 수 있는 논리 레지스터의 최대 수를 2로 제한하여, 일반적으로 하드웨어로 제공된 물리 레지스터들이 있는 것보다 상기 프로세서에 의해 지원된 구조에서 훨씬 적으므로, 논리 레지스터 당 제어 플래그를 제공하는 것이 멀티비트 카운터와 물리 레지스터 당 연관 제어 로직을 제공하는 상술한 대안의 기술보다 더 면적 효율적이기 때문에, 물리 레지스터 재할당을 제어하는 부담은 감소될 수 있다.
상기 장치는, 상기 레지스터 리네임 회로에 의해 다른 논리 레지스터에 재할당되게 어느 물리 레지스터들이 이용 가능한지를 제어하는 레지스터 보류(reserving)회로를 가질 수도 있다. 일부의 시스템에서, 상기 레지스터 보류회로는 상기 레지스터 리네임 회로와 분리된다고 생각될 수 있고, 그 밖의 예들에서는 상기 레지스터 보류회로는 상기 레지스터 리네임 회로 자체의 일부일 수 있다. 일반적으로, 상기 레지스터 보류회로는, (물리 레지스터에서의 값이 이후의 명령어가 요구하는 현재의 구조적 상태를 나타내기 때문에, 또는 물리 레지스터가 오추론이 있는 경우 복원될 필요가 있을 수도 있는 이전의 구조적 상태를 유지하기 때문에) 이후의 명령어가 물리 레지스터에 기억된 값을 요구할 가능성이 있을 수 있는 경우 물리 레지스터들이 재할당되는 것을 예방하기 위해 물리 레지스터들을 보류할 수도 있다.
물리 레지스터 재할당을 제어하는 방식이 많이 있다-일부의 접근법에 의해 물리 레지스터들을 성능을 향상시키기 위해 보다 빨리 복구시킬 수 있고, 그 밖의 접근법은 더 보수적이지만 면적과 전력을 절감하는데 덜 복잡한 제어회로를 요구한다. 일반적으로, 상기 레지스터 보류회로는, 논리 레지스터와 물리 레지스터간에 레지스터 매핑마다, 물리 레지스터를 재할당하는 재할당 조건이 만족되는지를 판정하기도 한다. 예를 들면, 상기 재할당 조건은, 대응한 논리 레지스터를 판독 또는 기록하는 이후의 명령어들을 관찰하는 것에 기초하여도 된다. 제1 예에서, 상기 재할당 조건은, 동일한 논리 레지스터에 기록하는 보다 새로운 명령어가 위임되어 있고, 상기 보다 새로운 명령어보다 오래된 실행될 진행중 명령어들이 없을 때, 만족될 수 있었다. 제2 예에서, 상기 레지스터 보류회로는, 진행중 명령어들에 의해 판독될 논리 레지스터들을 추적할 수도 있고, 또 동일한 논리 레지스터에 대응하게 실행될 보다 많은 진행중 명령어들이 없고 목적지 레지스터와 같은 논리 레지스터를 지정하는 보다 새로운 명령어가 위임하도록 보장될 때 주어진 논리 대 물리 레지스터 매핑에 대해 상기 재할당 조건이 만족된다고 판정할 수도 있다. 제2 접근법이 제1 접근법과 비교하여 성능을 향상시키는 것은, 재할당을 위해 주어진 물리 레지스터를 보다 빨리 이용 가능하게 하기 때문이다(실제로 상기 물리 레지스터를 판독하는 리네이밍 명령어들이 없는 경우, 보다 새로운 명령어가 실제로 위임하기 위해 기다릴 필요가 없다). 한편, 제1 접근법은, 재할당 조건이 상기 진행중 명령어들의 상대적 수명에 근거하여 간단히 평가될 수 있기 때문에 회로에 구현하는데 보다 효율적일 수도 있고, 추적될 각 명령어에 의해 판독된 상기 레지스터들을 요구하지 않는다. 따라서, 사용된 특별한 재할당 조건은, 면적과 성능간에 트레이드 오프이어도 된다.
어떤 타입의 재할당 조건이 사용되는가에 상관없이, 상기 제1 무브 처리기술에 따른 무브 명령어의 처리 후에, 상기 레지스터 보류회로는, 상기 무브 명령어의 상기 원시 논리 레지스터와 목적지 논리 레지스터에 양쪽에 대해 재할당 조건이 만족될 때까지 상기 무브 명령어의 상기 원시 및 목적지 논리 레지스터에 매핑된 물리 레지스터가 재할당을 위해 이용 가능해지는 것을 예방할 수도 있다. 상술한 것처럼 상기 제1 및 제2 무브 처리기술 사이에서 선택함으로써, 주어진 물리 레지스터가 없는 것은, 3개이상의 레지스터의 체인 대신에, 2개의 다른 논리 레지스터에 대한 재할당 조건의 추적을 요구할 뿐이다. 이에 따라, 상기 레지스터 보류회로를 면적과 소비전력면에서 보다 효율적으로 구현한다.
예를 들면, 상기 원시 및 목적지 논리 레지스터 매핑 양쪽이 재할당 조건을 만족시키는지를 추적하는 방식의 하나는, 물리 레지스터마다 다수의 레지스터 상태들 중 하나를 가리키는 물리 레지스터마다 레지스터 상태 정보를 유지하는 방식일 수도 있다. 상기 레지스터 상태들은, 적어도 이용 가능 상태, 보류 상태, 및 거의 이용 가능 상태를 포함하여도 된다. 일부의 시스템에서는, (예를 들면, 재할당으로부터 물리 레지스터를 보호할 필요도 있는 그 밖의 상황들이 있는 경우) 이들 3개의 상태보다 많이 있을 수도 있다.
주어진 논리 레지스터가 새로운 물리 레지스터에 매핑될 때, 그 새로운 물리 레지스터는 대응한 레지스터 상태 정보가 상기 이용 가능한 상태를 가리키는 물리 레지스터들중에서 선택되어도 된다. 상기 보류상태나 거의 이용 가능 상태에서의 물리 레지스터들은, 상기 새로운 물리 레지스터로서 선택할 자격이 없다. 새로운 물리 레지스터가 선택되고 주어진 논리 레지스터에 매핑될 때, 상기 선택된 물리 레지스터의 대응한 레지스터 상태 정보는 상기 보류 상태를 가리키는데 갱신된다. 이것은, 그 물리 레지스터가 상기 이용 가능 상태로 되돌아갈 때까지 다른 논리 레지스터에 매핑되는 것을 예방한다.
상기 제1 무브 처리기술에 따른 무브 명령어의 처리 후에, 상기 무브 명령어의 상기 원시 및 목적지 논리 레지스터 양쪽에 매핑된 상기 주어진 물리 레지스터는 초기에 상기 보류 상태에 있다(상기 물리 레지스터는, 이전의 명령어에 응답하여 상기 무브 명령어의 상기 원시 논리 레지스터에 이전에 할당되었을 때 상기 보류 상태로 이미 천이되었을 것이다). 상기 재할당 조건이, 상기 주어진 물리 레지스터와, 상기 원시 논리 레지스터와 목적지 논리 레지스터 중 어느 한쪽간의 상기 레지스터 매핑에 대해 만족된다고 판정되고, 상기 주어진 물리 레지스터에 대한 레지스터 상태 정보가 상기 보류 상태를 가리킬 때, 상기 주어진 물리 레지스터에 대한 상기 레지스터 상태 정보는 상기 거의 이용 가능 상태를 가리키는데 갱신되어서, 그 물리 레지스터는 아직 재할당을 위해 이용 가능해지지 않는다(상기 무브 명령어의 상기 원시 및 목적지 논리 레지스터의 다른 쪽이 아직 상기 재할당 조건을 만족시키지 않기 때문이다). 상기 원시 및 목적지 논리 레지스터 중 한쪽과 상기 주어진 물리 레지스터간에 상기 레지스터 매핑에 대해 상기 재할당 조건이 만족된다고 검출되고, 그 주어진 물리 레지스터에 대한 레지스터 상태 정보가 상기 거의 이용 가능 상태를 가리킬 때, 상기 레지스터 상태 정보는 그 주어진 물리 레지스터가 상기 이용 가능 상태를 가리키도록 갱신된다. 이 시점에서 상기 물리 레지스터는 한번 더 다른 논리 레지스터에 재매핑하는데 이용 가능해진다. 이 때문에, 상기 제1 무브 처리기술에 따라 처리된 상기 무브 명령어에 대한 상기 원시 및 목적지 레지스터 매핑 양쪽은, 대응한 물리 레지스터가 재할당될 수 있기 전에 재할당 조건을 만족시킬 필요가 있다.
일부의 시스템에서, 상기 레지스터 리네임 회로는, 단일의 리네임 테이블을 사용하여 논리 레지스터들과 물리 레지스터들 사이에서 레지스터 매핑을 추적할 수도 있다.
그렇지만, 그 밖의 예들에서는, 상기 리네임 테이블을, 추론적으로 리네임된 명령어들에 응답하여 갱신된 레지스터 매핑들을 식별하기 위한 추론적 리네임 테이블과, 위임된 명령어들에 응답하여 갱신된 레지스터 매핑들을 식별하기 위한 구조적 리네임 테이블로 분할하는 것이 유용할 수 있다. 이것은, 명령어들이 실제로 실행되어야 하는지를 알려지기도 전에 추론적 명령어들의 실행을 지원하는데 유용할 수 있다. 상기 추론적 리네임 테이블은 (예를 들면, 발송 시간에) 추론적으로 갱신될 수 있고, 그 추론이 정확할 경우, 상기 추론적 리네임 테이블에서 상기 레지스터 매핑들은 유효하다. 상기 구조적 리네임 테이블은 일단 그 명령어들이 위임되면 갱신될 수 있고, 이것은 정확히 실행되도록 보장되는 명령어들에 대해 최신의 레지스터 매핑들을 나타낸다. 오추론(예를 들면, 분기 오예측 또는 부정확한 데이터 프리페칭(prefetching))이 있을 경우, 상기 구조적 리네임 테이블은, 상기 오추론이 일어나기 전에 이전의 점으로부터 처리가 재개되는 것을 가능하게 상기 추론적 리네임 테이블에 대한 이전의 레지스터 매핑들을 복원하는데 사용될 수 있다.
이러한 시스템에서, 상기 제어회로는 상기 추론적 리네임 테이블에 근거하여 상기 제1 또는 제2 무브 처리기술을 사용할지를 선택하여도 되고, 상기 레지스터 보류회로는 상기 구조적 리네임 테이블에 근거하여 물리 레지스터들이 재할당될 수 있는지를 제어하여도 된다. 이것은, 상기 구조적 리네임 테이블로부터의 매핑이 오추론에 계속되어서 상기 추론적 리네임 테이블에 복원될 때 물리 레지스터들이 그래도 필요할 경우 그 물리 레지스터들이 재할당되지 않도록 보장한다. 보다 구체적으로, 상기 제어회로는, 무브 명령어의 상기 원시 논리 레지스터가 상기 제1 무브 처리기술에 따라 처리된 이전의 무브 명령어의 상기 원시 및 목적지 논리 레지스터 중 한쪽과 같고, 상기 이전의 무브 명령어의 상기 원시 및 목적지 논리 레지스터 중 상기 한쪽에 대한 상기 추론적 리네임 테이블에서의 현재의 레지스터 매핑이 그 이전의 무브 명령어를 처리할 때 사용된 레지스터 매핑과 같을 때, 상기 제2 무브 처리기술을 선택하여도 된다. 상기 레지스터 보류회로는, 상기 무브 명령어의 상기 원시 및 목적지 레지스터 양쪽에 대한 레지스터 매핑이 상기 구조적 리네임 테이블에서 겹쳐 써질 때까지 주어진 무브 명령어의 상기 원시 및 목적지 논리 레지스터에 매핑된 물리 레지스터가 재할당을 위해 이용 가능해지는 것을 예방할 수도 있다.
상기 추론적 및 구조적 리네임 테이블과 아울러, 트랜스퍼 버퍼는, 상기 추론적 리네임 테이블에서 갱신되어 있지만 대응한 명령어들이 위임될 때 상기 구조적 리네임 테이블에서 갱신되는 레지스터 매핑들을 지정하는 하나 이상의 레지스터 매핑 엔트리들을 저장하도록 제공되어도 된다. 상기 트랜스퍼 버퍼는, 회로내에서 구현하기 위해 상기 구조적 리네임 테이블의 갱신을 보다 간단하게 할 수 있고, 또한 플러시(flush)가 있고 상기 구조적 리네임 테이블로부터의 매핑들이 상기 추론적 리네임 테이블로 복원되는 경우 상기 트랜스퍼 버퍼로부터의 일부의 레지스터 매핑들을 사용하여 상기 플러시 이벤트가 일어난 점까지 상기 추론적 리네임 테이블을 재구성하는데 사용될 수 있다.
상기 추론적 리네임 테이블과, 상기 트랜스퍼 버퍼와, 상기 구조적 리네임 테이블의 각 엔트리는, 대응한 레지스터 매핑이 상기 제1 무브 처리기술에 따라 처리된 무브 명령어의 원시 또는 목적지 논리 레지스터에 대응하는지를 가리키는 대응한 제어 플래그를 갖기도 한다. 이들 제어 플래그는, 상기 제어 플래그들을 제1 및 제2 값으로 설정하는 상술한 기술을 사용하여 상기 추론적 리네임 테이블과 트랜스퍼 버퍼에서 갱신될 수 있다. 상기 트랜스퍼 버퍼로부터의 엔트리가 대응한 명령어를 위임할 때 상기 구조적 리네임 테이블에 기록될 때, 대응한 제어 플래그도 상기 보류 상태로부터 상기 거의 이용 가능 상태를 거쳐 상기 이용 가능 상태로의 천이를 어느 엔트리가 필요로 하고, 상기 제1 무브 처리기술에 따라 처리된 상기 무브 명령어들 중 하나에 관련되지 않은 경우 상기 이용 가능 상태로 어느 엔트리가 직접 천이하는지를 상기 구조적 리네임 테이블로부터 판정하도록 상기 구조적 리네임 테이블에 기록되어도 된다.
일부의 경우에, 주어진 무브 명령어를 처리하는 방법을 선택하는 상술한 제어회로는, 상기 리네임 회로 자체와 분리되어도 된다. 예를 들면, 명령어 디코더는, 상기 리네임 테이블에 액세스하여도 되고, 이것을 사용하여 상기 제1 무브 처리기술이나 제2 무브 처리기술에 따라 처리되는 명령어들인 무브 명령어들을 태깅하고 나서, 상기 레지스터 리네임 회로는, 상기 제1 기술을 사용하여 상기 무브 자체를 행하거나 상기 제2 기술을 사용하여 처리하기 위한 상기 처리회로에 상기 명령어를 발송해야 하는지를 판정하기 위해 단지 상기 태그를 판독하여도 된다.
그렇지만, 그 밖의 예들에서, 상기 제어회로는, 상기 레지스터 리네임 회로 자체이어도 된다. 상기 리네임 회로가, 주어진 무브 명령어를 처리하는 방법을 결정하는 것이 보다 쉬울 수도 있다는 것은, 이전의 무브에 대한 레지스터 매핑이 여전히 현재의 레지스터 매핑인지를 판정하는데 사용될 수도 있는 상기 리네임 테이블을 제어할 수도 있기 때문이다.
도 1은 데이터 처리장치(2)에서 처리 파이프라인의 일부를 개략적으로 나타낸 것이다. 상기 파이프라인은, 페치(fetch) 스테이지(4), 디코드 스테이지(6), 리네임 스테이지(8), 발송 스테이지(9), 발행 스테이지(10), 실행 스테이지(12) 및 라이트백(write back) 스테이지(14)로 이루어진 다수의 스테이지를 구비한다. 처리될 명령어들은 스테이지별로 이동하고, 하나의 명령어는 상기 파이프라인의 하나의 스테이지에서 진행중이여도 되고, 다른 명령어는 다른 스테이지에서 진행중이다. 이것은 가능한 파이프라인의 일례일 뿐이고 그 밖의 예들은 그 밖의 스테이지들이나 구성을 가질 수도 있다는 것을 알 것이다.
상기 페치 스테이지(4)는, 명령어 캐시 또는 메모리로부터 프로그램 명령어들을 불러온다. 상기 디코드 스테이지(6)는, 그 불러온 명령어들을 디코딩하여, 처리를 위해 상기 파이프라인의 나머지 부분에 보내지는 디코딩된 명령어들을 발생한다. 일부의 명령어들의 경우, 메모리로부터 불러온 단일의 명령어는, 상기 파이프라인에 전해준 단일의 디코딩된 명령어로 디코딩되어도 된다. 그러나, 그 밖의 보다 복잡한 명령어들의 경우, 단일의 불러온 명령어는 "마이크로 연산들"으로서 알려진 다중 디코딩된 명령어로 디코딩되어도 된다. 예를 들면, 실행될 일련의 연산들을 기동하기 위한 명령어(이를테면, 로드(load) 다중 명령어)는, 상기 연산들 중 하나에 각각 대응한 개개의 마이크로 오퍼레이션으로 디코딩될 수도 있다. 이 때문에, 상기 파이프라인의 나중의 스테이지 8, 9, 10, 12, 14에서 보여진 것과 같은 "명령어들"은 메모리로부터 불러온 명령어들과 달라도 되고, "명령어"란, 마이크로 연산을 포함하는 것으로서 해석되어야 한다.
상기 장치(2)는, 데이터 값들을 기억하는데 이용 가능한 다수의 물리 레지스터(20)를 갖는다. 레지스터 리네이밍 스테이지(8)는, 상기 디코딩된 명령어들이 지정한 논리 레지스터 지정자들을 물리 레지스터들(20) 중 하나를 식별하는 물리 레지스터 지정자들에 상기 디코딩된 명령어들(또는 마이크로 연산들)이 매핑하는 레지스터 리네이밍을 행한다. 명령어 세트 아키텍처는 프로그래머에게 보일 수 있는 (구조적 레지스터들로서도 알려진) 특정한 수의 논리 레지스터를 지원할 수도 있다. 예를 들면, 명령어 인코딩에서 4 또는 5비트 레지스터 필드는, 16 또는 32개의 상이한 논리 레지스터 지정자들 중 하나를 지정할 수도 있다. 그러나, 동일한 논리 레지스터 지정자를 지정하는 명령어들간의 위험을 해결할 수 있거나 명령어들의 비순차 또는 병렬 처리를 허가하기 위해서는, 대다수의 물리 레지스터들이 제공되어도 되고, 상기 레지스터 리네임 스테이지(8)는 상기 디코딩된 명령어들에서 논리 레지스터 지정자들을 대응한 물리 레지스터들에 매핑할 수도 있다.
이하, 물리 레지스터 지정자들을 지정하는 리네임된 명령어들은, 상기 발송 스테이지(9)에 보내진다. 이 발송 스테이지(9)는, 그 명령어들을 실행 대기하면서 대기 행렬로 만드는 발행 큐(10)에 발송한다. 상기 발행 큐에는 명령어들의 오퍼랜드들이 이용 가능할 때까지 명령어들이 남아 있고, 이 시점에서 상기 명령어는 실행을 위해 실행 스테이지(12)에 발행된다. 명령어들은, 상기 페치 스테이지(4)에 의해 불려와진 원래의 프로그램 순서와 다른 순서로 실행을 위해 발행되어도 된다. 예를 들면, 하나의 명령어는 오퍼랜드들이 아직 이용 가능하지 않기 때문에 일시 중지되지만, 이용 가능한 오퍼랜드들을 갖는 나중의 명령어는 먼저 발행되어도 된다. 상기 발송 스테이지(9)는, 상기 발행 큐(10)가 가득 찬 경우에도 명령어들이 상기 리네임 스테이지(8)를 떠날 수 있게 하는 버퍼를 제공하여, 그 밖의 명령어들의 리네이밍이 계속되게 한다. 그 밖의 예들에서, 상기 발송 스테이지(9)가 생략될 수 있어, 상기 리네임 스테이지(8)는 효과적으로 발송 스테이지로서도 작용하지만, 이 경우에 리네이밍은 상기 발행 큐(10)가 가득차질 때 일시 중지되어도 된다.
상기 실행 스테이지(12)는, 명령어들에 응답하여 처리 연산들을 실행하기 위한 각종 처리 유닛을 구비하여도 된다. 예를 들면, 상기 처리 유닛들은, 산술 또는 논리 연산들을 행하는 산술/논리유닛(ALU)과, 메모리로부터 데이터 값을 로딩하여 물리 레지스터에 배치하는 로드 연산들이나, 물리 레지스터에 현재 기억된 데이터 값을 메모리에 기억시키는 기억 연산들을 행하는 로드/스토어 유닛과, 다수의 데이터 요소들로 이루어진 데이터 값들에 관해 벡터 연산들을 행하는 벡터 처리 유닛과, 부동소수점 값들에 관해 연산들을 행하는 부동소수점 회로와, 또는 임의의 다른 형태의 처리 회로를 구비할 수도 있다. 일부의 경우, 상기 실행 스테이지(12)는, 다른 종류의 명령어들을 처리하기 위한 다수의 병렬 실행 파이프라인을 구비할 수도 있다.
상기 실행 스테이지(12)에서 상기 명령어의 실행을 완료하면, 그 명령어는, 라이트 백 스테이지(14)에 보내져, 그 명령어의 결과를 이 라이트 백 스테이지에서 물리 레지스터(20)에 기록한다. 그 밖의 예들에서, 상기 레지스터 라이트백은, 별도의 파이프라인 스테이지이라기보다는, 상기 실행 스테이지(12) 자체의 일부로서 보여질 수도 있다.
도 1에 도시된 예에서, 데이터 값들이 판독될 하나 이상의 물리 레지스터들을 지정하는 리네이밍된 명령어들에 대해서, 그 물리 레지스터의 판독은 상기 실행 스테이지(12)에서 일어난다. 그러나, 그 밖의 실시예들은, 도 1에 점선으로 도시된 것처럼, 상기 명령어가 상기 발행 큐(10)에서 진행중인 동안 물리 레지스터들(20)을 판독할 수도 있다. 상기 발행 스테이지(10), 실행 스테이지(12) 및 라이트백 스테이지(14)는, 전체적으로, 명령어들에 응답하여, 물리 레지스터들(20)로부터 데이터를 판독하는 것과 그 레지스터들(20)에 데이터를 기록하는 것으로 이루어진 데이터 처리를 행하는 처리 회로로서 보여질 수도 있다.
레지스터 보류회로(30)는, 논리 레지스터에 매핑하기 위해 물리 레지스터들 중 어느 물리 레지스터를 상기 리네임 스테이지(8)에 의해 선택 가능한지를 제어하도록 구성된다. 상기 레지스터 보류회로는, 상기 리네임 스테이지(8)에, 물리 레지스터가 선택을 위해 이용 가능하거나 이용 불가능(보류됨)한지의 표시를 제공하여도 된다. 레지스터에 기록하는 명령어를 상기 디코드 스테이지(6)로부터 수신할 때, 상기 리네임 스테이지(8)는, 상기 명령어를 위한 목적지 레지스터로서 지정된 논리 레지스터에 대한 새로운 레지스터 매핑을 발생한다. 상기 리네임 스테이지(8)는, 상기 레지스터 보류회로(30)에 의해 이용 가능한 것으로서 나타내어진 물리 레지스터를 선택하고, 그 선택된 물리 레지스터에 대해 논리적인 목적지를 매핑하는 리네임 엔트리를 포함하도록 리네임 테이블(32)을 갱신한다.
상기 파이프라인에서 처리할 수도 있는 하나의 타입의 명령어는, 원시 논리 레지스터와 목적지 논리 레지스터를 지정하는 무브 명령어이고, 상기 파이프라인을 기동하여, 상기 원시 논리 레지스터와 같은 데이터 값을 갖도록 상기 목적지 논리 레지스터를 갱신하기 위한 명령어다. 실제로, 명령어의 실행은 일 레지스터로부터 다른 레지스터에 데이터 값을 이동중이라는 인상을 주지만, 상기 파이프라인은, 상기 리네임 스테이지(8)에서 단지 리네임 테이블(34)을 갱신하여서 동일한 결과를 얻을 수 있기 때문에, 실제로 레지스터간에 임의의 데이터 값들을 전달할 필요가 없다.
예를 들면, 도 2a에 도시된 제1 무브 처리기술에서는, 원시 논리 레지스터 R5와 목적지 논리 레지스터 R10을 지정하는 무브 명령어를 수신할 수도 있다. R5는 주어진 물리 레지스터 P71에 매핑되어도 되고, R10은 도 2의 좌측부분에 도시된 것처럼 주어진 물리 레지스터 P46에 매핑되어도 된다. 도 2의 우측부분에 도시된 것처럼, 목적지 논리 레지스터 R5를 이미 원시 논리 레지스터 R5에 매핑된 동일한 물리 레지스터 P71에 매핑하기 위해 상기 리네임 테이블(34)을 갱신함으로써, 논리 레지스터 R10을 참조하는 이후의 명령어들은, 물리 레지스터 P71내의 데이터 값을 액세스하여서, 이전에 논리 레지스터 R5와 관련된 값, 즉 마치 그 데이터 값이 하드웨어로 레지스터간에 실제로 전달되었던 것과 같은 동일한 결과를 수신한다. 이 접근법은 몇몇의 이점들이 있다. 먼저, 실제로 상기 리네임 스테이지(8)를 지나 임의의 스테이지들에 상기 무브 명령어를 발송할 필요가 없어, 그 밖의 명령어들의 처리의 속도 향상에 도움을 줄 수 있는 예를 들면 상기 실행 스테이지(12)에서 명령어 처리 슬롯들을 없앤다. 또한, 논리 레지스터 R10내의 값에 종속하는 이후의 명령어, 이를테면, 도 2의 우측부분에 도시된 가산 명령어가 있는 경우, 상기 리네임 스테이지(8)에서 상기 무브 명령어를 처리하는 것은, 상기 가산 명령어가 상기 무브 명령어 자체라기보다는 레지스터 R5내의 데이터를 생성하는 이전의 명령어(예를 들면, 로드)에 종속할 뿐이라는 것을 의미한다. 상기 무브 목적지 레지스터의 소비자가 무브 명령어 자체라기보다는 무브 원시 레지스터의 생산자에 종속되게 함으로써, 성능을 향상시킬 수 있다. 성능 향상 가능한 아이디어를 얻기 위해서는, Speclnt2006 벤치마크에서의 명령어들의 3%정도와 SpecFP2000 벤치마크에서의 1%정도는, 상기 리네이밍 기술을 사용하여 가속될 수 있는 무브들이다. 리네임에서 이들 무브들을 처리하는 것에 의해, Speclnt2006 벤치마크에서 성능 향상은 1.1%가 되고, SpecFP2000 벤치마크에서는 1.4%가 되며, Coremark 벤치마크에서는 3.6%가 될 수 있다.
도 2b에 도시된 것처럼, 상기 파이프라인(2)은, 상기 실행 스테이지(12)에서 상기 무브 명령어를 발송 및 실행하는 제2 무브 처리기술도 지원한다. 이 경우에, 상기 리네임 스테이지(8)에서 상기 무브 명령어를 접할 때, 상기 리네임 스테이지(8)는, 상기 무브 명령어의 목적지 논리 레지스터 R10을, 현재 상기 무브 원시 논리 레지스터 R5에 매핑된 제1 물리 레지스터(예를 들면, P71)와 다른 제2 물리 레지스터(예를 들면, P95)에 매핑한다. 상기 무브 명령어가 상기 실행 스테이지(12)에 도달하면, 상기 실행 스테이지는 물리 레지스터 P71로부터 데이터 값을 판독하고, 상기 라이트백 스테이지(14)는 상기 무브 명령어의 목적지 논리 레지스터 R10에 대응한 물리 레지스터 P95에 판독된 데이터 값을 기록한다.
상기 리네임 스테이지(8)는 도 2a에 도시된 제1 무브 처리기술과 도 2b에 도시된 제2 무브 처리기술 사이에서 선택한다. 도 2a에 도시된 상기 제1 기술이 보다 빠르므로, 항상 이 기술을 선택해야 한다고 생각할 수도 있다. 그렇지만, 이에 따라, 레지스터 보류회로(30)에 복잡성이 가산될 수 있는 것은, 많은 논리 레지스터가 동일한 물리 레지스터에 매핑될 수도 있기 때문이고, 이에 따라 물리 레지스터가 다른 논리 레지스터에 언제 재할당될 수 있는지를 판정하기가 보다 어렵다.
본 출원에서 기술된 접근법은, 상대적으로 하이엔드 비순차 프로세서에서 일어나긴 하지만 종속적 무브들의 체인들이 상기 임계 경로상에서 자주 일어나지 않는다는 관찰을 이용한다. 상기 임계 경로상에서 관찰된 대부분의 무브들은, 그것에 종속하는 이후의 무브를 갖지 않는다. 예를 들면, 종속적 무브들의 체인들이 가속되는 것이 예방되는 경우(단지 상기 체인에서의 제1 무브는 제1 무브 처리기술을 사용하여 가속될 뿐이고, 상기 체인에서 이후의 무브들은 제2 무브 처리기술을 사용한다), Speclnt2006에서 상기 무브들의 40%정도는 제2 무브 처리기술을 사용하지만, 성능 기회는 단지 ∼0.2%(1.1%범위 밖)이다. 심지어 보다 극적으로, Coremark에서 상기 무브들의 50%정도는 제2 무브 처리기술을 사용하지만, 상기 성능 기회 손실은 0%(3.6%범위 밖)다. 추가로, 한 번에 아직 처리되지 않은 무브들이 많이 있지만(예를 들면, 일반적인 한 번에 8배까지), 그럴 경우 그 무브들은 전형적으로 서로 독립적이다. 한 번에 제1 무브 처리기술을 사용하여 처리된 하나의 무브에 한정하는 것은 너무 금지적이어서, 우리의 접근법은 제1 무브 처리기술을 동시에 사용하기 위해 각각 다수의 독립적 무브들을 고려한다.
도 3은 (제1 및 제2 무브 처리기술 중 어느 쪽을 사용할지를 제어하기 위해 제어회로로서 작용하는) 상기 리네임 회로(8)에서 취한 상기 접근법을 나타낸다. 도 1에 도시된 것처럼, 상기 리네임 테이블(34)의 각 엔트리에는, 그 엔트리가 상기 제1 무브 처리기술을 사용하여 처리된 무브 명령어에 대응하는지를 가리키는 제어 플래그(36)(복제 플래그 또는 DUP 플래그라고도 알려짐)가 구비되어 있다. 리네임 시간에 제1 무브를 접할 때, 상기 논리적 원시 및 목적지 양쪽이 리네임 테이블에서 "복제"(또는 DUP)로서 표시되어 있는 것은, 이들 양쪽이 동일한 물리 레지스터를 포함하기 때문이다. 위임된 DUP 엔트리(상기 무브의 원시나 목적지 중 한쪽)에 대응한 물리 레지스터가 퇴거될 때, 상기 물리 레지스터는 "거의 비할당된"(거의 이용 가능) 상태에 들어간다. 이 시점에서, 그 물리 레지스터는, 나머지 DUP 엔트리의 퇴거시에 대기하고 나서, "완전 비할당된"(이용 가능) 상태로 천이한 후, 여기서 재사용되어도 된다. 상기 원시 논리 레지스터가 상기 리네임 테이블에 DUP로서 표시된 엔트리에 해당하는 경우에 다른 무브를 접하면, 제1 무브 처리기술을 사용할 자격이 없는데, 이는 (조사하기 위해 비할당된 리네임을 위한 유일한 상태 천이들의 수를 위반하는) 주어진 물리 레지스터에 매핑된 논리 레지스터가 2개보다 많아질 것이기 때문이다. 이 접근법에서는, 많은 독립적 무브들이 서로 독립적인 경우, 서로 아무것도 중첩하지 않는 논리 레지스터의 쌍들(최적화된 무브의 원시와 목적지)을 DUP로서 표시함으로써 한 번에 많은 독립적 무브들을 최적화할 수도 있다.
도 3 및 도 4는 물리 레지스터의 무브 명령어 레지스터 매핑들과 재할당을 추적하는 접근법의 일례를 도시한 것이다. 도 3은 무브 명령어들을 접할 때 리네임 테이블(34)이 어떻게 갱신되는지를 도시한 것이다. 도 3의 좌측부분에 도시된 것처럼, 초기에, 상기 리네임 테이블(34)은 물리 레지스터 P71 및 P46에 각각 매핑된 논리 레지스터 R5 및 R10을 갖고, 상기 DUP 플래그(36)는 양쪽의 엔트리에 대해 0이다. 도 3의 좌측으로부터 두 번째 도면에 도시된 것처럼, 데이터 값을 논리 레지스터 R5로부터 논리 레지스터 R10으로 이동하기 위한 제1 무브 명령어가 수신되면, 상기 리네임 스테이지(8)는 상기 원시 레지스터 R5에 관련된 DUP플래그(36)를 확인하고 그것이 0인 것을 참조한다. 이 레지스터가 복제로서 표시되지 않으므로, 상기 무브는 제1 무브 처리기술을 사용하여 처리될 자격이 있어서, 그것의 목적지 레지스터 R10은 상기 원시 논리 레지스터 R5와 같은 물리 레지스터 P71에 재매핑되고, R5와 R10의 엔트리들 양쪽은 DUP로서 표시된다.
도 3의 세 번째 도면에 도시된 것처럼, 논리 레지스터 R5 또는 논리 레지스터 R10 중 한쪽이 원시 레지스터를 갖는 상기 리네임 스테이지(8)에서 다른 무브 명령어를 접할 때, 상기 제2 무브 처리기술은, 레지스터 R5 및 R10이 DUP로서 표시되기 때문에 선택된다. 따라서, 그 이후의 무브의 목적지 레지스터 R15는 상기 무브의 원시 레지스터 R10 또는 R5에 다른 물리 레지스터 P59에 매핑되고, 논리 레지스터 R15에 대한 레지스터 매핑은 DUP로서 표시되어 있지 않다.
그리고, 도 4의 우측 도면에 도시된 것처럼, 각각 원시 및 목적지로서 논리 레지스터 R15, R20을 지정하는 다른 무브 명령어가 수신된다. 상기 원시 레지스터 R15는 DUP로서 표시되 않으므로, 이 무브는 도 2a의 제1 무브 처리기술을 사용하여 마음대로 최적화되어도 된다. 이 때문에, 상기 목적지 레지스터 R20은 논리 레지스터 P15와 같은 물리 레지스터 P59에 매핑되고, 논리 레지스터 R15와 R20 양쪽은 DUP로서 표시된다. 따라서, 도 3에 도시된 것처럼, 동일한 논리 레지스터를 참조하지 않는 독립적 무브 명령어가 2개이상 있을 때, 이들 무브 각각은 (이후의 독립적 무브는 2개보다 많은 논리 레지스터에 의해 동일한 물리 레지스터에 매핑시키지 않을 것이므로) 도 2a에 도시된 접근법을 선택함으로써 가속될 수 있다. 그러나, 종속적 무브가 있을 때, 그 무브는 실행을 위해 발송되어 동일한 물리 레지스터에 매핑된 아주 많은 논리 레지스터를 추적할 필요가 없다.
도 4는 도 3의 예에 따라 무브들을 처리한 후 상기 레지스터 보류회로를 사용하여 어느 물리 레지스터를 재할당할 수 있는지를 제어하기 위한 일례를 도시한 것이다. 도 4의 좌측부분에 도시된 것처럼, DUP로서 표시된 논리 레지스터 R5, R10 중 한쪽이 재할당 조건에 만족할 때(예를 들면, 리네임 테이블(34)에서의 그 리네이밍 엔트리가 겹쳐 써질 때), 대응한 물리 레지스터 P71은 보류 상태("No")로부터 상기 거의 이용 가능 상태("Almost")로 천이한다. 도 4의 우측부분에 도시된 것처럼, 다른 DUP 논리 레지스터 R10이 상기 재할당 조건을 만족할 때, 프리(free) 리스트(32)는 상기 거의(almost) 가능 상태로부터 이용 가능 상태("Yes")로 물리 레지스터 P71을 천이하기 위해 상기 레지스터 보류회로(30)에 의해 갱신되고, 이 시점에서 상기 물리 레지스터 P71은 다른 논리 레지스터에 대해 매핑하기 위해 다시 선택하는데 이용 가능하다. 도 4의 예에서, 재할당 조건은, 다른 물리 레지스터에 대해 상기 DUP 논리 레지스터를 재매핑하기 위해 상기 리네임 테이블(34)을 갱신할 때 충족되지만, 다른 접근법은, 물리 레지스터 P71을 판독하는 상기 파이프라인에서 진행중인 실제의 명령어들을 추적하고, 또 상기 파이프라인에서 물리 레지스터 P71의 소비자들이 남아 있지 않고 논리레지스터 R5 또는 R10을 겹쳐 쓰는 최신의 명령어가 위임하기 위해 보장될 때 대응한 논리 레지스터가 재할당 조건을 만족한다고 판정하는 방법이다.
도 5는 무브 명령어들의 처리방법을 도시한 것이다. 단계 50에서는, (RA가 물리 레지스터 PX에 현재 매핑되어 있는, 원시/목적지 논리 레지스터 RA, RB를 지정하는) 무브 명령어를 접하고 있는지를 상기 리네임 스테이지(8)에서 판정한다. 현재의 명령어가 무브 명령어가 아닐 경우, 그것은 종래의 기술들에 따라 일부의 다른 방식으로 처리된다. 무브 명령어를 접할 때, 단계 52에서는, 상기 리네임 스테이지(8)는, DUP 플래그(36)가 원시 논리 레지스터 RA에 대응한 리네임 테이블 엔트리에 대해 1로 설정되는지를 판정한다. DUP가 논리 레지스터 RA에 대해서는 0일 경우, 제1 무브 처리기술이 선택되고, 단계 54에서는, 상기 리네임 스테이지(8)는, 상기 목적지 논리 레지스터 RB를 이미 상기 원시 논리 레지스터 RA에 매핑된 동일한 물리 레지스터 PX에 매핑하기 위해 상기 리네임 테이블(34)을 갱신한다. 단계 56에서는, 상기 리네임 스테이지(8)는 DUP 플래그(36)를 논리 레지스터 RA와 RB 양쪽에 대해 1로 설정한다. 단계 58에서는, 상기 리네임 스테이지(8)는, 상기 무브 명령어가 상기 파이프라인의 임의의 이후의 스테이지들에 의해 처리될 필요가 없도록 상기 무브 명령어의 발송을 억제한다. 이제, 상기 무브 명령어는 완료한다. 상술한 것처럼, 처리하는 임계 경로상에서 접한 대부분의 무브 명령어들은, 체인의 제1 무브 명령어이고, 임의의 선행하는 무브 명령어에 독립적이어서, 제1 무브 처리기술을 사용하여 보다 빨리 처리될 수 있다.
한편, 단계 52에서 상기 DUP 플래그(36)가 논리 레지스터 RA에 대해 0일 경우, 제2 무브 처리기술이 사용되고, 단계 60에서는 상기 리네임 스테이지(8)는, 상기 레지스터 보류회로(30)가 나타낸 물리 레지스터들 PY 중 하나를 상기 이용 가능 상태에 있는 것으로서 선택한다. 일부의 경우에, 상기 레지스터 보류회로(30)는 이용 가능한 상기 물리 레지스터들 전부의 표시를 리네임 스테이지(8)에 제공할 수 있고, 상기 리네임 스테이지(8)는 이들 이용 가능한 물리 레지스터들 중 하나를 선택할 수 있다. 그 밖의 실시예에서, 상기 레지스터 보류회로(30)는, PY 자체를 선택하여도 되고, 상기 리네임 스테이지(8)에 물리 레지스터가 상기 선택된 레지스터 PY인 표시를 간단히 제공하여도 된다. 어느 쪽이든, 다수의 물리 레지스터가 이용 가능할 때, 임의의 원하는 선택 알고리즘이나 정책은, 어느 레지스터를 PY로서 사용할지를 선택하는데 사용될 수 있다. 예를 들면, 상기 선택 정책은 여러 사람이 돌려 가며 쓸 수 있고, 최소로 최근 사용될 수 있거나 무작위일 수 있다.
단계 62에서는, 상기 리네임 스테이지(8)는, 상기 무브 명령어의 목적지 논리 레지스터 RB를 새롭게 선택된 물리 레지스터 PY(상기 무브 명령어의 상기 원시 레지스터 RA에 매핑된 물리 레지스터 PX에 대해 다른 물리 레지스터 PY)에 재매핑하기 위해 상기 리네임 테이블(34)을 갱신한다. 상기 리네임 스테이지(8)는, 이 엔트리가 상기 제1 무브 처리기술을 사용하여 처리된 무브 명령어에 대응하지 않는 것을 나타내기 위해, 논리 레지스터 RB에 대응한 리네임 테이블 엔트리에 대해서 상기 DUP 플래그(36)를 0으로 설정한다. 단계 64에서는, 상기 리네임 스테이지(8)는 상기 무브 명령어를 상기 명령어를 발송하는 발송 스테이지(9)에 보낸다. 상기 무브 명령어가 상기 실행 스테이지에 도달하면, 단계 66에서는, 물리 레지스터 PX로부터 데이터 값을 판독하도록 상기 무브 명령어를 실행하고, 상기 라이트백 스테이지(14)는 그 판독된 데이터 값을 다시 물리 레지스터 PY에 기록한다.
도 6은 어느 레지스터가 상기 레지스터 보류회로(30)에 의해 재할당하기 위해 이용 가능한지를 제어하는 방법을 도시한 것이다. 단계 70에서는, 상기 레지스터 보류회로(30)는, 재할당 조건이 주어진 논리 레지스터 RM과 주어진 물리 레지스터 PZ간의 매핑을 위해 충족되는 것을 검출한다. 예를 들면, 상기 재할당 조건은, PZ에 대해 다른 물리 레지스터를 지정하기 위해 주어진 명령어에 응답하여 상기 리네임 스테이지(8)에 의해 논리 레지스터 RM에 대응한 리네임 테이블 엔트리가 갱신되고, 실행될 상기 주어진 명령어보다 오래된 명령어들이 없을 경우(이 문맥에서 "오래된 명령어"란, 상기 페치 스테이지(4)에 의해 메모리로부터 명령어들을 불러오는 프로그램 순서에 있어서 앞선 명령어를 말한다) 충족될 수 있다. 논리 레지스터 RM의 재매핑을 기동하는 상기 주어진 명령어는, 상기 제2 무브 처리기술에 따라 처리된 무브 명령어일 수 있거나, 무브 명령어가 아닌 다른 타입의 명령어일 수 있다.
상기 재할당 조건이 충족될 때, 단계 72에서, 상기 레지스터 보류회로(30)는 상기 DUP 플래그가 1인지를 검출한다. 1이 아닐 경우, 상기 동일한 물리 레지스터를 가리키는 다른 리네임 테이블 엔트리가 존재할 수 없어, 단계 74에서 상기 물리 레지스터 PZ는 프리 리스트(32)에서 보류상태로부터 이용 가능 상태로 천이한다. DUP가 1이었을 경우, 단계 76에서, 상기 레지스터 보류회로(30)는, 상기 물리 레지스터 PZ가 무슨 상태에 있었는지를 판정하기 위해 상기 프리 리스트(32)를 확인한다. 물리 레지스터 PZ가 상기 보류 상태에 있을 경우, 이것은, 그 물리 레지스터를 가리키는 또 다른 리네임 테이블 엔트리가 있어서, 그 물리 레지스터PZ가 아직 이용 가능할 수 없고, 대신에 단계 78에서 물리 레지스터 PZ가 보류상태로부터 거의 이용 가능상태로 천이한다는 것을 의미한다. 단계 76에서 물리 레지스터 PZ가 이미 거의 이용 가능상태에 있다고 판정된 경우, 이것은, 동일한 물리 레지스터에 대응한 다른 엔트리가 이미 갱신되어 있고, 즉, 이것은 PZ를 가리키는 최종 엔트리이어서, 단계 80에서 물리 레지스터 PZ는 거의 이용 가능 상태로부터 이용 가능 상태로 천이한다. 단계 78 또는 단계 80 어느 한쪽 후에, 단계 82에서는, 상기 논리 레지스터 RM에 대해 DUP 플래그를 0으로 설정한다.
도 7은 주어진 물리 레지스터 PZ에 대해 상태 천이를 요약한 상태도를 도시한 것이다. PZ는 (제1 무브 처리기술을 사용하여 처리된 무브의 목적지에 PZ가 매핑될 때 이외의) 주어진 논리 레지스터 RM에 매핑하기 위해 선택될 때 이용 가능 상태(100)로부터 보류 상태(102)로 천이하고, 이 시점에서 상기 논리 레지스터 RM에 대해 DUP 플래그가 0으로 설정된다. PZ는, RM으로부터 PZ에 매핑하는 것이 상기 재할당 조건을 충족하고 논리 레지스터 RM에 대해 DUP 플래그가 여전히 0일 때 상기 보류상태(102)로부터 이용 가능 상태(100)로 천이한다. 물리 레지스터 PZ가 보류상태(102)에 있는 동안 RM을 그것의 원시 레지스터로서 지정하는 무브 명령어가 제1 무브 처리기술을 사용하여 상기 리네임 스테이지에서 처리되는 경우, 물리 레지스터 PZ는 보류상태에 그대로 있지만, RM에 대해 DUP 플래그는 1로 설정된다(이 시점에서 PZ도 상기 무브의 목적지인 다른 논리 레지스터 RN에 매핑될 것이다). 물리 레지스터 PZ는, RM을 PZ에 또는 RN을 PZ에 매핑하는 것 중 하나가 재할당 조건을 충족하고 그 매핑에 대해 DUP플래그가 1일 때 보류상태(102)로부터 거의 이용 가능 상태(104)로 천이한다. 물리 레지스터 PZ는, RM을 PZ에 또는 RN을 PZ에 매핑하는 것 중 나머지가 재할당 조건을 충족하고 그 매핑에 대해 DUP 플래그가 1일 때 거의 가능 상태(104)로부터 이용 가능 상태(100)로 천이한다.
도 8은 상기 리네임 테이블(34)에 대한 보다 상세한 실시예를 도시한 것으로, 이 리네임 테이블은 추론적 리네임 테이블(SRT)(120)과 구조적 리네임 테이블(ART)(122)로 분할된다. 상기 SRT(120)는 (대응한 명령어가 실행해야 하는지가 알려지기 전에) 리네임 시간 또는 발송 시간에 추론적으로 갱신되고, 상기 ART(122)는 (충분한 이전의 명령어들이 위임된 명령어가 실행해야 하는 것을 보장하도록 평가되어 있을 때) 위임 시간에 갱신된다. 상기 파이프라인에 전해준 추론적 명령어들은, 상기 SRT(120)로부터 레지스터 매핑들을 사용한다. 목적지 레지스터들이 위임될 때, (레지스터 FIFO 124에 대기행렬을 만든) 상기 논리 및 물리 레지스터 포인터는 그 포인터들로 상기 ART(122)를 새롭게 설계된 상태로 갱신하는데 사용된다. 엔트리들이 이 처리에 의해 상기 ART(122)로부터 퇴거되므로, 이것은 상기 레지스터 보류회로(30)에 의해 상기 퇴거된 물리 레지스터의 비할당을 기동한다. 플러시 상에서, 상기 ART(122)는 상기 SRT(120)에 복원되고, 상기 SRT의 어떠한 리빌딩도 상기 레지스터 FIFO(12)를 사용하여 상기 플러시 포인트까지 (필요한 경우) 행해진다.
예를 들면, 상기 FIFO(124)는, 기록 포인터와 위임 포인터를 사용하여 관리된 원형 버퍼로서 작용한다. 명령어의 이름이 바뀔 때, 그것의 리네이밍 매핑(들)은 상기 기록 포인터가 가리킨 상기 FIFO의 위치로 푸시(push)된다. 대응한 명령어는, 상기 파이프라인(2)의 나머지에 전달될 때 상기 기록 포인터의 현재의 값으로 태깅되어, 상기 파이프라인에서의 명령어들과 상기 FIFO(124)에서의 엔트리들간의 관련성이 식별되게 하여도 된다. 상기 위임 포인터는, 가장 오래된 비위임된 명령어를 나타낸다. 상기 위임 포인터에 대응한 태그를 갖는 명령어를 위임할 때, 상기 위임 포인터는 다음의 가장 오래된 비위임 명령어의 태그에 대응하게 갱신되고, 지금 상기 위임 포인터 뒤에 있는 임의의 FIFO 엔트리들은 상기 FIFO로부터 팝핑되어 상기 ART(122)에 기록된다. 상기 기록 포인터나 상기 위임 포인터가 상기 버퍼의 일단에 도달하면, 상기 기록 포인터나 위임 포인터에 대한 계속되는 증가는 상기 버퍼의 타단에 이동시켜서, 명령어들이 이름이 바뀌고 위임됨에 따라서, 상기 기록 및 위임 포인터는 상기 버퍼를 돌고 돌아 서로 추적한다.
도 9에 도시된 것처럼, 상술한 무브 처리 접근법이 별개의 추론적 및 구조적 리네임 테이블(120, 122)을 갖는 실시예에 적용될 때, 상기 SRT, ART 및 레지스터 FIFO(트랜스퍼 버퍼라고도 함)는, 제1 무브 처리기술을 사용하여 처리된 무브에 대해 DUP 비트들을 갖도록 갱신된다. 무브 원시들 및 목적지들은 상기 SRT(120)에 질문하고 나서 이 SRT가 제1 무브 처리기술을 사용하여 가속될 수 있는지를 판정한다(그것은 상기 원시 또는 목적지 논리 레지스터가 상기 SRT(120)에 설정된 DUP 비트를 가질 경우 가속화될 수 없다). 2개의 엔트리는, 가속된 무브에 대해 상기 레지스터 FIFO에서 할당되어 있다(상기 원시 및 목적지에 대해 각각, 각각이 DUP로서 표시됨). 가속된 무브가 위임할 때, 상기 원시와 상기 목적지 양쪽은, 상기 레지스터 FIFO의 2개의 대응한 엔트리를 사용하여 상기 ART에서 DUP로서 표시된다. 제1 DUP 엔트리가 상기 ART로부터 퇴거될 때, 관련된 물리 레지스터는 "거의 이용 상태"로서 표시되고, 동일한 물리 레지스터에 대한 제2 DUP 엔트리의 퇴거는 최종 천이에 의해 "완전 비할당되게" 한다(이용 가능). 플러시 상에서, 가속된 무브가 상기 SRT를 재구성/복원시킬 필요가 있을 경우, 상기 레지스터 FIFO가 사용된다. 여기서, 최적화된 무브에 대응한 엔트리 양쪽(원시 및 목적지)은, 그들의 DUP 비트들과 함께 상기 SRT 엔트리들을 기록하는데 사용된다.
도 10은 별개의 SRT(120)와 ART(122)를 갖는 상기 실시예들에서 무브 명령어들에 대한 레지스터 리네이밍을 행하는 방법을 도시한 것이다. 단계 50 내지 66은, 상기 DUP 플래그를 확인하고 상기 리네임 테이블을 갱신하는 것에 관련된 단계(52, 54, 56, 62)가 상기 SRT(120)를 사용하여 행해지는 것을 제외하고는, 도 5의 대응한 단계들과 같다. 또한, 제1 무브 처리기술에서는, 2개의 엔트리가 상기 FIFO 버퍼(124)에 푸시되는 추가의 단계(130)가 있고, 하나의 엔트리는 원시 논리 레지스터 RA를 물리 레지스터 PX(DUP 비트가 1로 설정됨)에 매핑하고, 나머지 엔트리는 목적지 논리 레지스터 RB를 DUP 플래그가 다시 1로 설정된 동일한 물리 레지스터 PX에 매핑한다. 한편, 제2 무브 처리기술에서는, 상기 DUP 비트가 0으로 설정된 물리 레지스터 PY에 논리 레지스터 RB를 매핑하는 FIFO(124)에 단일의 엔트리를 푸시하는 추가의 단계 132가 있다. 그렇지 않은 경우, 도 10의 방법은 도 5와 같다.
도 11은 명령어가 위임될 때 상기 리네임 스테이지에 의해 행해진 방법을 도시한 것이다. 단계 140에서 위임되는 명령어에 응답하여, 단계 142에서, (상기 FIFO 124의 위임된 명령어 태그와 위임 포인터를 사용하여 식별된) 대응한 FIFO 엔트리들은, FIFO(124)로부터 판독되고 그들의 FIFO 엔트리들에서 지정한 논리 레지스터들에 대응한 ART의 위치들에 기록된다. 또한, 그들 FIFO 엔트리들의 DUP 플래그는 ART(122)에 전달된다. 단계 144에서, 상기 위임 포인터는, 다음의 가장 오래된 비위임 명령어와 관련된 FIFO 엔트리를 가리키도록 증가된다. 이때, 이 다음에 가장 오래된 비위임 명령어와 관련된 FIFO 엔트리는, 이후 최신의 명령어에 응답하여 갱신될 수 있었으므로 상기 SRT(120)에 더 이상 지정되지 않아도 된다. 효과적으로, 상기 FIFO(124)는 이윽고 다른 점에서 상기 SRT(120)의 콘텐츠의 일련의 스냅샷을 제공한다.
도 12는 플러시 이벤트나 오추론(예를 들면, 분기 오예측이나 데이터 프리페칭 오류)을 처리하는 방법을 도시한 것이다. 단계 150에서 일어나는 플러시 이벤트에 응답하여, 단계 512에서, 상기 ART(122)로부터의 엔트리 전부가 SRT(120)에 복원된다. 따라서, 논리 레지스터들은, 실행이 정확하다고 알려진 실행의 최종 위임 포인트에서의 상기 레지스터 상태 데이터를 나타내는 물리 레지스터에 매핑된다. 오래된 상태가 보다 큰 물리 레지스터 파일에 보존되어 있고 상기 ART에 근거하여 상기 SRT를 갱신하여서 간단히 액세스될 수 있기 때문에 레지스터들 사이에서 상태를 전환할 필요가 없다. 단계 154에서, 상기 SRT(120)는 상기 트랜스퍼 버퍼(124)로부터 상기 플러시 포인트까지 FIFO 엔트리들(예를 들면, 상기 플러시의 원인이 된 명령어와 관련된 FIFO 태그를 지연하는 어드레스들을 갖는 FIFO 엔트리들)을 상기 SRT(120)에 기록함으로써 재구성된다. 그 후, 단계 156에서, 상기 FIFO는 클리어된다.
도 13은 상기 레지스터 보류회로(30)를 사용하여 레지스터 재할당을 제어하는 방법을 도시한 것이다. 도 13은, 단계 70에서 상기 재할당 조건이 상기 ART(122)에 근거하여 평가되고, 마찬가지로 단계 72에서 상기 관련 DUP 플래그가 논리 레지스터 RM에 대응한 ART 엔트리의 DUP 플래그인 것을 제외하고는 도 6과 같다. 또한, 도 6의 단계 82는, DUP 플래그가 0인 버퍼(124)로부터 대응한 FIFO 엔트리와 ART 엔트리를 겹쳐 쓸 때에 상기 DUP 플래그가 본질적으로 설정되어도 되기 때문에 도 13에서 생략되어 있다.
도 14는 SRT와 ART를 사용하여 상기 실시예에 대한 도 7과 대응한 상태도를 도시한 것이다. 도 14는, SRT(120)에서 리매핑이 있을 때 이용 가능 상태(100)로부터 보류상태(102)로의 천이가 일어나고, 나머지가 보류상태(102)로부터 이용 가능상태(100)로, 보류상태(102)로부터 거의 이용 가능상태(104)로 및 거의 이용 가능상태(104)로부터 이용 가능 상태(100)로의 천이는 재할당 조건이 상기 ART(122)에서 주어진 매핑에 대해 충족될 때 일어난다는 것을 제외하고는 도 7과 같다. 상술한 SRT(120), ART(122) 및 FIFO(124)는 추론적 리네이밍을 처리하는 단지 일례이고, 그 밖의 기술들이 사용될 수 있다는 것을 알 것이다. 또한, 상술한 예들이 리네임 테이블 엔트리들 자체에서 DUP 플래그들(36)을 기억하지만, 상기 리네임 테이블과 별개의 이들을 기억하는 것이 가능할 것이다.
상기 이용 가능 상태, 보류상태 및 거의 이용 가능 상태를 나타내기 위해서, 상기 프리 리스트(32)의 각 엔트리는 대응한 물리 레지스터의 상태를 나타내기 위한 적어도 2개의 비트를 갖는다. 물리 레지스터를 이용 가능 상태 또는 보류 상태로서 나타내는 (본 기술의 부재시에) 시스템에서, 물리 레지스터 당 추가의 비트가 필요할 수도 있다. 그렇지만, 이것은, 멀티비트 카운터와 상술한 것처럼 물리 레지스터 당 대응한 비교/제어 로직을 제공하는 대안의 기술보다 훨씬 적은 부담일 것이다. 실제로, 상기 프리 리스트(32)는, (예를 들면, 물리 레지스터가 재할당으로부터 보호될 필요가 있는 다른 조건이 있을 경우) 물리 레지스터마다 그 밖의 타입의 레지스터 상태를 이미 나타낼 수도 있고, 이미 사용되지 않고 있는 중인 레지스터 상태의 일부의 여분의 인코딩들이 있을 수도 있다. 그럴 경우, 여분의 인코딩들 중 하나는 상기 거의 이용 가능 상태(104)를 가리키기 위해 할당될 수 있고, 이 경우에, 상기 거의 이용 가능한 상태를 추가하면 자유 리스트(32)에서 물리 레지스터당 추가의 비트를 필요로 하지 않는다.
도 1의 예가 주어진 무브 명령어를 처리하는 방법을 결정하는 제어회로로서 작용하는 리네임 스테이지(8)를 도시한 것이지만, 별개의 제어회로를 제공하는 것도 가능하다. 예를 들면, 디코드 스테이지(6)는 리네임 스테이지(8)가 무브 명령어들을 처리하는 방법을 제어하기 위해 무브 명령어들을 태깅할 수 있었다.
다른 예들은,
명령어들에 응답하여 데이터 처리를 실행하는 수단;
상기 명령어들에 의해 지정된 논리 레지스터들을 하드웨어에 설치된 물리 레지스터들에 매핑하는 수단; 및
원시 논리 레지스터와 목적지 논리 레지스터를 지정하는 무브 명령어를 처리하기 위한 제1 무브 처리기술과 제2 무브 처리기술 중 한쪽을 선택하는 수단을 구비한 장치를 제공하고,
상기 제1 무브 처리기술에서는, 상기 무브 명령어에 응답하여 상기 매핑하는 수단이, 상기 목적지 논리 레지스터를 상기 원시 논리 레지스터와 같은 물리 레지스터에 매핑하도록 구성되고,
상기 제2 무브 처리기술에서는, 상기 무브 명령어에 응답하여 상기 데이터를 처리하는 수단이, 상기 원시 논리 레지스터에 대응한 물리 레지스터로부터 판독된 데이터 값을 상기 목적지 논리 레지스터에 대응한 다른 물리 레지스터에 기록하도록 구성되고,
상기 선택 수단은, 상기 무브 명령어의 상기 원시 논리 레지스터가 상기 제1 무브 처리기술에 따라 처리된 이전의 무브 명령어의 상기 원시 및 목적지 논리 레지스터 중 한쪽과 같고, 상기 원시 및 목적지 논리 레지스터 중 상기 한쪽에 대한 현재의 레지스터 매핑이 상기 이전의 무브 명령어의 처리시에 상기 원시 및 목적지 논리 레지스터 중 상기 한쪽에 사용된 레지스터 매핑과 같을 때, 상기 제2 무브 처리기술을 선택하도록 구성된다.
본 출원에서, "...하도록 구성된"의 단어는, 장치의 요소가 정의된 연산을 실시할 수 있는 구성을 갖는다는 것을 의미하는데 사용된다. 본 문맥에서, "구성"은, 하드웨어 또는 소프트웨어의 상호연결의 배치 또는 방식을 의미한다. 예를 들면, 상기 장치는 상기 정의된 연산을 제공하는 전용 하드웨어를 가져도 되거나, 프로세서 또는 다른 처리 디바이스는 그 기능을 행하도록 프로그래밍되어도 된다. "하도록 구성된"은, 상기 장치 요소들이 임의의 방식으로 상기 정의된 연산을 제공하기 위해서 변경될 필요가 있다는 것을 암시하지는 않는다.
여기에서는 본 발명의 실시예들을 첨부도면을 참조하여 상세히 설명하였지만, 본 발명은 이들의 구체적인 실시예들에 한정되지 않고, 첨부된 청구항에서 기재된 것과 같은 본 발명의 범위와 사상을 벗어나지 않고 당업자가 여러 가지로 변경 및 변형을 할 수 있다는 것을 알 것이다.

Claims (20)

  1. 명령어들에 응답하여 데이터 처리를 실행하는 처리회로;
    상기 명령어들에 의해 지정된 논리 레지스터들을 하드웨어에 설치된 물리 레지스터들에 매핑하는 레지스터 리네임 회로;
    원시 논리 레지스터와 목적지 논리 레지스터를 지정하는 무브 명령어를 처리하기 위한 제1 무브 처리기술과 제2 무브 처리기술 중 한쪽을 선택하는 제어회로를 구비한, 장치로서,
    상기 제1 무브 처리기술에서는, 상기 무브 명령어에 응답하여 상기 레지스터 리네임 회로가, 상기 목적지 논리 레지스터를 상기 원시 논리 레지스터와 같은 물리 레지스터에 매핑하도록 구성되고,
    상기 제2 무브 처리기술에서는, 상기 무브 명령어에 응답하여 상기 처리회로가, 상기 원시 논리 레지스터에 대응한 물리 레지스터로부터 판독된 데이터 값을 상기 목적지 논리 레지스터에 대응한 다른 물리 레지스터에 기록하도록 구성되고,
    상기 제어회로는, 상기 무브 명령어의 상기 원시 논리 레지스터가 상기 제1 무브 처리기술에 따라 처리된 이전의 무브 명령어의 상기 원시 및 목적지 논리 레지스터 중 한쪽과 같고, 상기 원시 및 목적지 논리 레지스터 중 상기 한쪽에 대한 현재의 레지스터 매핑이 상기 이전의 무브 명령어의 처리시에 상기 원시 및 목적지 논리 레지스터 중 상기 한쪽에 사용된 레지스터 매핑과 같을 때, 상기 제2 무브 처리기술을 선택하도록 구성된, 장치.
  2. 제 1 항에 있어서,
    상기 제2 무브 처리기술에서, 상기 레지스터 리네임 회로는, 상기 무브 명령어의 목적지 논리 레지스터를, 현재 상기 원시 논리 레지스터에 매핑된 제1 물리 레지스터와는 다른 제2 물리 레지스터에 매핑하도록 구성된, 장치.
  3. 제 1 항에 있어서,
    상기 논리 레지스터들 중 하나에 각각 대응하는 복수의 제어 플래그를 포함하고,
    상기 제어회로는, 상기 무브 명령어의 상기 원시 논리 레지스터에 대응한 제어 플래그에 따라 상기 제1 무브 처리기술과 상기 제2 무브 처리기술 중 상기 하나를 선택하도록 구성된, 장치.
  4. 제 3 항에 있어서,
    상기 제1 무브 처리기술이 상기 무브 명령어를 처리하는데 선택될 때, 상기 제어회로는 상기 무브 명령어의 상기 원시 및 목적지 논리 레지스터 양쪽에 대응한 제어 플래그들을 제1 값으로 설정하도록 구성된, 장치.
  5. 제 4 항에 있어서,
    상기 제어회로는, 상기 무브 명령어의 상기 원시 논리 레지스터에 대응한 제어 플래그가 상기 제1 값을 가질 때 상기 무브 명령어를 처리하기 위한 상기 제2 무브 처리기술을 선택하도록 구성된, 장치.
  6. 제 4 항에 있어서,
    상기 제1 무브 처리기술에 따라 처리된 무브 명령어이외의 명령어에 응답하여 논리 레지스터를 다른 물리 레지스터에 재매핑하는 상기 레지스터 리네임 회로에 응답하여, 상기 제어회로는 대응한 제어 플래그를 제2 값으로 설정하도록 구성된, 장치.
  7. 제 1 항에 있어서,
    논리 레지스터와 물리 레지스터간에 레지스터 매핑마다, 상기 물리 레지스터를 다른 논리 레지스터에 재할당하는 재할당 조건이 충족되는지를 판정하는 레지스터 보류회로를 구비한, 장치.
  8. 제 7 항에 있어서,
    상기 제1 무브 처리기술에 따른 무브 명령어의 처리 후에, 상기 레지스터 보류회로는, 상기 원시 논리 레지스터에 대응한 레지스터 매핑과 상기 목적지 논리 레지스터에 대응한 레지스터 매핑 양쪽에 대해 재할당 조건이 만족될 때까지 상기 무브 명령어의 상기 원시 및 목적지 논리 레지스터에 매핑된 물리 레지스터가 재할당되는데 이용 가능해지는 것을 예방하도록 구성된, 장치.
  9. 제 7 항에 있어서,
    상기 레지스터 보류회로는 물리 레지스터마다 레지스터 상태 정보를 유지하도록 구성되고, 상기 레지스터 상태 정보는 대응한 물리 레지스터에 대한 복수의 레지스터 상태 중 하나를 가리키고, 상기 복수의 레지스터 상태는 적어도 이용 가능 상태, 보류 상태, 및 거의 이용 가능 상태를 포함하는, 장치.
  10. 제 9 항에 있어서,
    주어진 논리 레지스터를 새로운 물리 레지스터에 재매핑할 때, 상기 레지스터 리네임 회로는 대응한 레지스터 상태 정보가 상기 이용 가능한 상태를 가리키는 선택된 물리 레지스터에 상기 주어진 논리 레지스터를 매핑하도록 구성되고, 상기 레지스터 보류회로는 상기 선택된 물리 레지스터가 보류 상태를 가리키기 위해 대응한 레지스터 상태 정보를 갱신하도록 구성된, 장치.
  11. 제 9 항에 있어서,
    상기 원시 및 목적지 논리 레지스터가 주어진 물리 레지스터에 매핑되는 상기 제1 무브 처리기술에 따른 무브 명령어의 처리 후에,
    재할당 조건이 상기 원시 및 목적지 논리 레지스터 중 한쪽과 상기 주어진 물리 레지스터간의 레지스터 매핑에 충족되는 것을 검출한 것에 응답하여, 주어진 물리 레지스터에 대한 상기 레지스터 상태 정보가 보류상태를 가리킬 때, 상기 레지스터 보류회로는 상기 주어진 물리 레지스터가 거의 이용 가능 상태를 가리키기 위해 상기 레지스터 상태 정보를 갱신하도록 구성된, 장치.
  12. 제 9 항에 있어서,
    상기 원시 및 목적지 논리 레지스터가 주어진 물리 레지스터에 매핑되는 상기 제1 무브 처리기술에 따른 무브 명령어의 처리 후에,
    재할당 조건이 상기 원시 및 목적지 논리 레지스터 중 한쪽과 상기 주어진 물리 레지스터간의 레지스터 매핑에 충족되는 것을 검출한 것에 응답하여, 주어진 물리 레지스터에 대한 상기 레지스터 상태 정보가 거의 이용 가능 상태를 가리킬 때, 상기 레지스터 보류회로는 상기 주어진 물리 레지스터가 이용 가능 상태를 가리키기 위해 상기 레지스터 상태 정보를 갱신하도록 구성된, 장치.
  13. 제 1 항에 있어서,
    추론적으로 리네임된 명령어들에 응답하여 갱신된 레지스터 매핑들을 식별하기 위한 추론적 리네임 테이블; 및
    위임된 명령어들에 응답하여 갱신된 레지스터 매핑들을 식별하기 위한 구조적 리네임 테이블을 포함하는, 장치.
  14. 제 13 항에 있어서,
    상기 제어회로는, 상기 무브 명령어의 상기 원시 논리 레지스터가 상기 제1 무브 처리기술에 따라 처리된 상기 이전의 무브 명령어의 상기 원시 및 목적지 논리 레지스터 중 상기 한쪽과 같고, 상기 원시 및 목적지 논리 레지스터 중 상기 한쪽에 대해 상기 추론적 리네임 테이블에 의해 지정된 현재의 레지스터 매핑이 상기 이전의 무브 명령어의 처리시에 상기 원시 및 목적지 논리 레지스터 중 상기 한쪽에 사용된 레지스터 매핑과 같을 때, 상기 제2 무브 처리기술을 선택하도록 구성된, 장치.
  15. 제 13 항에 있어서,
    상기 레지스터 리네임 회로에 의해 다른 논리 레지스터에 재할당되게 어느 물리 레지스터들이 이용 가능한지를 제어하는 레지스터 보류회로를 구비하고,
    상기 제1 무브 처리기술에 따른 무브 명령어의 처리 후에, 상기 레지스터 보류회로는, 상기 무브 명령어의 상기 원시 및 목적지 레지스터 양쪽에 대한 레지스터 매핑들이 상기 구조적 리네임 테이블에서 겹쳐 써질 때까지 상기 무브 명령어의 상기 원시 및 목적지 논리 레지스터에 매핑된 물리 레지스터가 재할당되는데 이용 가능해지는 것을 예방하도록 구성된, 장치.
  16. 제 13 항에 있어서,
    대응한 명령어들이 위임될 때 구조적 리네임 테이블에서 갱신될 상기 추론적 리네임 테이블에서 갱신된 레지스터 매핑들을 지정하는 하나 이상의 레지스터 매핑 엔트리들을 기억하는 트랜스퍼 버퍼를 구비하는, 장치.
  17. 제 16 항에 있어서,
    상기 추론적 리네임 테이블, 상기 트랜스퍼 버퍼 및 상기 구조적 리네임 테이블의 각 엔트리는, 대응한 레지스터 매핑이 상기 제1 무브 처리기술에 따라 처리된 무브 명령어의 상기 원시 및 목적지 논리 레지스터 중 한쪽에 대응하는지를 가리키는 대응한 제어 플래그를 갖는, 장치.
  18. 제 1 항에 있어서,
    상기 제어회로가 상기 레지스터 리네임 회로를 구비하는, 장치.
  19. 명령어들에 응답하여 데이터 처리를 실행하는 수단;
    상기 명령어들에 의해 지정된 논리 레지스터들을 하드웨어에 설치된 물리 레지스터들에 매핑하는 수단; 및
    원시 논리 레지스터와 목적지 논리 레지스터를 지정하는 무브 명령어를 처리하기 위한 제1 무브 처리기술과 제2 무브 처리기술 중 한쪽을 선택하는 수단을 구비한, 장치로서,
    상기 제1 무브 처리기술에서는, 상기 무브 명령어에 응답하여 상기 매핑 수단이, 상기 목적지 논리 레지스터를 상기 원시 논리 레지스터와 같은 물리 레지스터에 매핑하도록 구성되고,
    상기 제2 무브 처리기술에서는, 상기 무브 명령어에 응답하여 상기 데이터 처리 실행수단이, 상기 원시 논리 레지스터에 대응한 물리 레지스터로부터 판독된 데이터 값을 상기 목적지 논리 레지스터에 대응한 다른 물리 레지스터에 기록하도록 구성되고,
    상기 선택 수단은, 상기 무브 명령어의 상기 원시 논리 레지스터가 상기 제1 무브 처리기술에 따라 처리된 이전의 무브 명령어의 상기 원시 및 목적지 논리 레지스터 중 한쪽과 같고, 상기 원시 및 목적지 논리 레지스터 중 상기 한쪽에 대한 현재의 레지스터 매핑이 상기 이전의 무브 명령어의 처리시에 상기 원시 및 목적지 논리 레지스터 중 상기 한쪽에 사용된 레지스터 매핑과 같을 때, 상기 제2 무브 처리기술을 선택하도록 구성된, 장치.
  20. 원시 논리 레지스터와 목적지 논리 레지스터를 지정하는 무브 명령어를 처리하기 위한 제1 무브 처리기술과 제2 무브 처리기술 중 한쪽을 선택하는 단계;
    상기 제1 무브 처리기술이 선택될 때, 상기 목적지 논리 레지스터를 상기 원시 논리 레지스터와 같은 물리 레지스터에 매핑하는 단계; 및
    상기 제2 무브 처리기술이 선택될 때, 상기 원시 논리 레지스터에 대응한 물리 레지스터로부터 데이터 값을 판독하여, 상기 목적지 논리 레지스터에 대응한 다른 물리 레지스터에 기록하는 단계를 포함하는 데이터 처리방법으로서,
    상기 무브 명령어의 상기 원시 논리 레지스터가 상기 제1 무브 처리기술에 따라 처리된 이전의 무브 명령어의 상기 원시 및 목적지 논리 레지스터 중 한쪽과 같고, 상기 원시 및 목적지 논리 레지스터 중 상기 한쪽에 대한 현재의 레지스터 매핑이, 상기 이전의 무브 명령어의 처리시에 상기 원시 및 목적지 논리 레지스터 중 상기 한쪽에 사용된 레지스터 매핑과 같을 때, 상기 제2 무브 처리기술을 선택하는, 데이터 처리방법.
KR1020160171207A 2015-12-24 2016-12-15 레지스터 리네이밍을 사용한 무브 명령어 처리 KR102659813B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/757,576 US10528355B2 (en) 2015-12-24 2015-12-24 Handling move instructions via register renaming or writing to a different physical register using control flags
US14/757,576 2015-12-24

Publications (2)

Publication Number Publication Date
KR20170076564A true KR20170076564A (ko) 2017-07-04
KR102659813B1 KR102659813B1 (ko) 2024-04-23

Family

ID=56297487

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160171207A KR102659813B1 (ko) 2015-12-24 2016-12-15 레지스터 리네이밍을 사용한 무브 명령어 처리

Country Status (4)

Country Link
US (1) US10528355B2 (ko)
KR (1) KR102659813B1 (ko)
CN (1) CN106990941B (ko)
GB (1) GB2545761B (ko)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11150904B2 (en) * 2017-08-18 2021-10-19 International Business Machines Corporation Concurrent prediction of branch addresses and update of register contents
US10838729B1 (en) * 2018-03-21 2020-11-17 Apple Inc. System and method for predicting memory dependence when a source register of a push instruction matches the destination register of a pop instruction
US11194578B2 (en) 2018-05-23 2021-12-07 International Business Machines Corporation Fused overloaded register file read to enable 2-cycle move from condition register instruction in a microprocessor
GB2576572B (en) * 2018-08-24 2020-12-30 Advanced Risc Mach Ltd Processing of temporary-register-using instruction
US11204773B2 (en) 2018-09-07 2021-12-21 Arm Limited Storing a processing state based on confidence in a predicted branch outcome and a number of recent state changes
US10949205B2 (en) 2018-12-20 2021-03-16 International Business Machines Corporation Implementation of execution compression of instructions in slice target register file mapper
CN111638911A (zh) * 2019-03-01 2020-09-08 阿里巴巴集团控股有限公司 一种处理器、指令执行设备及方法
US10977038B2 (en) * 2019-06-19 2021-04-13 Arm Limited Checkpointing speculative register mappings
US10896041B1 (en) 2019-09-25 2021-01-19 Microsoft Technology Licensing, Llc Enabling early execution of move-immediate instructions having variable immediate value sizes in processor-based devices
US11119772B2 (en) 2019-12-06 2021-09-14 International Business Machines Corporation Check pointing of accumulator register results in a microprocessor
US11294683B2 (en) * 2020-03-30 2022-04-05 SiFive, Inc. Duplicate detection for register renaming
CN111857830B (zh) * 2020-06-05 2023-09-22 上海赛昉科技有限公司 一种提前转发指令数据的通路设计方法、系统及存储介质
CN112286577B (zh) * 2020-10-30 2022-12-06 上海兆芯集成电路有限公司 处理器及其操作方法
CN113254079B (zh) * 2021-06-28 2021-10-01 广东省新一代通信与网络创新研究院 一种用于实现自增指令的方法及系统
CN114116009B (zh) * 2022-01-26 2022-04-22 广东省新一代通信与网络创新研究院 一种用于处理器的寄存器重命名方法及系统
US11907723B2 (en) * 2022-03-21 2024-02-20 Arm Limited Operation elimination
CN116501385B (zh) * 2022-12-16 2024-04-09 海光信息技术股份有限公司 指令处理方法、处理器、芯片及计算机设备
CN116339830B (zh) * 2023-05-26 2023-08-15 北京开源芯片研究院 一种寄存器管理方法、装置、电子设备及可读存储介质
CN116954722B (zh) * 2023-09-21 2024-01-16 北京数渡信息科技有限公司 一种寄存器间数据转移的方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130275720A1 (en) * 2012-04-16 2013-10-17 James B. Keller Zero cycle move
US20140068230A1 (en) * 2011-12-30 2014-03-06 Venkateswara Madduri Micro-architecture for eliminating mov operations

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6405304B1 (en) * 1998-08-24 2002-06-11 Compaq Information Technologies Group, L.P. Method for mapping instructions using a set of valid and invalid logical to physical register assignments indicated by bits of a valid vector together with a logical register list
US6505293B1 (en) * 1999-07-07 2003-01-07 Intel Corporation Register renaming to optimize identical register values
US20050066151A1 (en) * 2003-09-19 2005-03-24 Sailesh Kottapalli Method and apparatus for handling predicated instructions in an out-of-order processor
US7360063B2 (en) * 2006-03-02 2008-04-15 International Business Machines Corporation Method for SIMD-oriented management of register maps for map-based indirect register-file access
US7363469B2 (en) * 2006-03-28 2008-04-22 International Business Machines Corporation Method and system for on-demand scratch register renaming
CN100524208C (zh) * 2006-10-26 2009-08-05 中国科学院计算技术研究所 对状态寄存器进行重命名的方法和使用该方法的处理器
US8914617B2 (en) * 2009-12-26 2014-12-16 Intel Corporation Tracking mechanism coupled to retirement in reorder buffer for indicating sharing logical registers of physical register in record indexed by logical register
US8661230B2 (en) * 2011-04-15 2014-02-25 International Business Machines Corporation Allocation of counters from a pool of counters to track mappings of logical registers to physical registers for mapper based instruction executions
US9430243B2 (en) * 2012-04-30 2016-08-30 Apple Inc. Optimizing register initialization operations
US10417001B2 (en) * 2012-12-27 2019-09-17 Intel Corporation Physical register table for eliminating move instructions
US9710272B2 (en) * 2014-04-25 2017-07-18 Avago Technologies General Ip (Singapore) Pte. Ltd. Computer processor with generation renaming
US11068271B2 (en) * 2014-07-28 2021-07-20 Apple Inc. Zero cycle move using free list counts

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140068230A1 (en) * 2011-12-30 2014-03-06 Venkateswara Madduri Micro-architecture for eliminating mov operations
US20130275720A1 (en) * 2012-04-16 2013-10-17 James B. Keller Zero cycle move

Also Published As

Publication number Publication date
GB2545761A (en) 2017-06-28
US10528355B2 (en) 2020-01-07
GB201608221D0 (en) 2016-06-22
US20170185410A1 (en) 2017-06-29
KR102659813B1 (ko) 2024-04-23
GB2545761B (en) 2018-02-14
CN106990941A (zh) 2017-07-28
CN106990941B (zh) 2022-01-25

Similar Documents

Publication Publication Date Title
KR102659813B1 (ko) 레지스터 리네이밍을 사용한 무브 명령어 처리
JP6009608B2 (ja) 条件付き命令が無条件で出力を提供するシステム及び方法
KR100586058B1 (ko) 재명명 태그들을 교환함으로써 이동이 이루어지는 레지스터 재명명
US6256727B1 (en) Method and system for fetching noncontiguous instructions in a single clock cycle
JP3824006B2 (ja) スーパースケーラマイクロプロセサ
US7376817B2 (en) Partial load/store forward prediction
JP6143872B2 (ja) 装置、方法、およびシステム
US6141747A (en) System for store to load forwarding of individual bytes from separate store buffer entries to form a single load word
US7624253B2 (en) Determining register availability for register renaming
US6594754B1 (en) Mapping destination logical register to physical register storing immediate or renamed source register of move instruction and using mapping counters
GB2538764A (en) Register renaming
US20070033385A1 (en) Call return stack way prediction repair
GB2538766A (en) Register renaming
US20140068230A1 (en) Micro-architecture for eliminating mov operations
US6266763B1 (en) Physical rename register for efficiently storing floating point, integer, condition code, and multimedia values
US9223577B2 (en) Processing multi-destination instruction in pipeline by splitting for single destination operations stage and merging for opcode execution operations stage
KR100572040B1 (ko) 명령들의 퇴거시 물리적인 레지스터들을 선택적으로 자유화하도록 구성된 프로세서
US7197630B1 (en) Method and system for changing the executable status of an operation following a branch misprediction without refetching the operation
JP3138259B2 (ja) カウントによる高速レジスタ・リネームのためのシステムおよび方法
US20020144091A1 (en) Method and apparatus for dynamic register management in a processor
WO2013101323A1 (en) Micro-architecture for eliminating mov operations
CN114616545A (zh) 用于线程存储的阴影锁存器配置的寄存器文件中的阴影锁存器

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