KR20140113307A - 벡터 레지스터 파일의 동적 재명명 기반의 레지스터 재구성 - Google Patents

벡터 레지스터 파일의 동적 재명명 기반의 레지스터 재구성 Download PDF

Info

Publication number
KR20140113307A
KR20140113307A KR1020130160351A KR20130160351A KR20140113307A KR 20140113307 A KR20140113307 A KR 20140113307A KR 1020130160351 A KR1020130160351 A KR 1020130160351A KR 20130160351 A KR20130160351 A KR 20130160351A KR 20140113307 A KR20140113307 A KR 20140113307A
Authority
KR
South Korea
Prior art keywords
register
micro
registers
information
fragmented
Prior art date
Application number
KR1020130160351A
Other languages
English (en)
Other versions
KR101952209B1 (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 KR20140113307A publication Critical patent/KR20140113307A/ko
Application granted granted Critical
Publication of KR101952209B1 publication Critical patent/KR101952209B1/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 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30112Register structure comprising data of variable length
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

내로우-투-와이드 의존성을 갖는 명령의 소스 레지스터에 대한 조각 정보를 가리키는 복수의 필드들을 갖는 재명명 테이블을 사용하여 레지스터 파일을 재구성하는 방법 및 장치가 제공된다.

Description

벡터 레지스터 파일의 동적 재명명 기반의 레지스터 재구성{DYNAMIC RENAME BASED REGISTER RECONFIGURATION OF A VECTOR REGISTER FILE}
본 발명의 실시 예들에 따른 방법들 및 장치들은 프로세서에서 레지스터 파일의 조각(fracture)을 판별하고, 조각을 수정하여 레지스터 파일을 재구성하는 것에 관한 것이다.
예를 들어, 도 1a에 도시된 바와 같이, ARM v7 프로세서(ARM v7은 영국 캠브리지의 ARM 사의 상표(trademark)임)의 Aarch32 레이아웃의 벡터 레지스터 파일(Vector Registor File, VRF)의 구조 레지스터들(architectural registers)의 레이아웃은, 소스 및 목적지 레지스터들 사이에 잠재적인 내로우-투-와이드(narrow-to-wide) 의존성을 제공하도록 구성된다. 내로우-투-와이드 의존성은, 큰 사이즈의 값을 읽는 것이 복수의 작은 사이즈의 레지스터들을 읽는 것을 초래하는 현상을 가리킨다. 예를 들어, 쿼드 워드(quad word)의 생성자(producer)가 복수의 싱글 워드들(single words) 또는 더블 워드들(double words)을 생성하는 경우, 쿼드 워드(quad word)의 읽기는 복수의 싱글 레지스터들(single registers) 또는 더블 레지스터들(double registers)의 읽기를 초래할 수 있다. 마찬가지로, 더블 워드의 읽기는 두 개의 싱글 레지스터들의 읽기를 초래할 수 있다.
도 1a에 도시된 바와 같이, 32비트 레지스터 레이아웃(ARM v7 프로세서의 Aarch32 레이아웃)에서, 쿼드 레지스터(예를 들어, Q15)는 두 개의 더블 레지스터들(예를 들어, D31 및 D32)과 사상(map)되고, 더블 레지스터(예를 들어, D15)는 두 개의 싱글 레지스터들(예를 들어, S31 및 S30)돠 사상(map)된다. 도 1b에 도시된 바와 같이, 64비트 레지스터 레이아웃(ARM v8 프로세서의 Aarch64 레이아웃)에서, 각 엔트리(Q0, Q1, Q2, Q3)는 사이즈에 관계 없이 싱글 레지스터에 사상(map)된다.
상술된 예들에서, 하나의 쿼드 레지스터 소스와 연관된 명령(instruction)은 네 개의 싱글 레지스터 소스들 또는 싱글 레지스터 소스들 및 더블 레지스터 소스들의 조합을 필요로 할 수 있다. 따라서, 명령에 복수의 쿼드 레지스터 소스들이 존재하면, 요구되는 실제 레지스터 소스들의 수는 훨씬 더 클 수 있다. 따라서, 명령 처리에 요구되는 전력 및 시간 소모가 무시될 수 없다.
내로우-투-와이드 의존성을 사용하는 것은 면적 및 전력 면에서 고비용을 요구할 수 있으며, 병목 현상을 초래할 수 있다. 또한, 큰 사이즈의 값(예를 들어, 쿼드 워드 값)을 읽는 것이 복수의 더 작은 사이즈의 레지스터들을 읽는 것을 필요로 할 때, 큰 사이즈의 소스는 조각화되고, 프로세서의 면적 및 전력 소모는 악화될 수 있다. 예를 들어, 구조으로 식별된(specified) 생성 명령들이 전체 구조 레지스터들의 일부만 기입하고, 이러한 명령들이 마이크로구조(microarchitecture)에 의해 식별되어 고유한 물리 레지스터에 결과를 기입하므로, 조각화가 발생할 수 있다. 이로 인해, 구조 레지스터의 값은 복수의 물리 레지스터들에 걸쳐 흩어질 수 있으며, 따라서 '조각'은 구조 레지스터 소스의 콘텐츠가 복수의 물리 레지스터들에 흩어져 있음을 가리킬 수 있다.
본 발명의 목적은 상술된 내로우-투-와이드 의존성의 문제를 해결하는 데에 있다.
본 발명의 실시 예에 따른 레지스터 파일을 재구성하는 방법은, 재명명 테이블을 제공하는 단계; 그리고 상기 재명명 테이블에 명령의 소스 레지스터에 대한 조각 정보를 기록하는 단계를 포함하고, 상기 조각 정보는 상기 소스 레지스터의 적어도 하나의 생성자에 대한 정보를 포함한다.
실시 예로서, 상기 소스 레지스터는 상기 명령의 구조 소스 레지스터이고, 상기 방법은 상기 조각 정보로부터 상기 구조 소스 레지스터가 조각난지를 판별하는 단계를 더 포함하고, 상기 구조 소스 레지스터의 콘텐츠가 복수의 물리 레지스터들에 흩어져 있을 때, 상기 구조 소스 레지스터는 조각난 것으로 판별된다.
실시 예로서, 상기 조각 정보는 상기 구조 소스 레지스터의 타입을 가리키는 구조 소스 태그의 제 1 정보 및 상기 구조 소스 레지스터가 조각난지를 가리키는 상기 구조 소스 태그의 제 2 정보로부터 도출된다.
실시 예로서, 상기 제 1 정보는 상기 구조 소스 레지스터의 타입이 싱글, 더블 또는 쿼드 중 어느 하나임을 가리키고, 상기 제 2 정보는 상기 적어도 하나의 생성자가 싱글, 더블 또는 쿼드임을 가리킨다.
실시 예로서, 상기 구조 소스 레지스터가 조각난 것으로 판별되면, 적어도 하나의 수정 마이크로-오퍼레이션을 생성하는 단계; 그리고 상기 레지스터 파일에서, 둘 또는 그 이상의 생성자들의 둘 또는 그 이상의 레지스터들을 읽고, 읽어진 결과를 상기 둘 또는 그 이상의 생성자들의 레지스터들 각각의 사이즈보다 큰 사이즈를 갖는 레지스터에 기입함으로써, 상기 조각을 수정하도록 상기 수정 마이크로-오퍼레이션을 실행하는 단계를 더 포함한다.
실시 예로서, 상기 수정 마이크로-오퍼레이션을 재명명하는 단계를 더 포함한다.
실시 예로서, 상기 제 1 정보 및 상기 제 2 정보에 기반하여, 상기 적어도 하나의 수정 마이크로-오퍼레이션의 수를 판별하는 단계를 더 포함한다.
실시 예로서, 상기 마이크로-오퍼레이션의 상기 구조 소스 레지스터가 조각난 것으로 판별되면, 재명명 및 실행을 위한 스케줄이 되지 않은 마이크로-오퍼레이션을 중지(stall)하는 단계를 더 포함한다.
실시 예로서, 상기 마이크로-오퍼레이션의 상기 구조 소스 레지스터가 조각난 것으로 판별되면, 상기 레지스터 파일에서, 둘 또는 그 이상의 생성자들의 둘 또는 그 이상의 레지스터들을 읽고, 읽어진 결과를 상기 둘 또는 그 이상의 생성자들의 레지스터들 각각의 사이즈보다 큰 사이즈를 갖는 레지스터에 기입함으로써, 상기 조각을 수정하는 단계를 더 포함한다.
실시 예로서, 상기 마이크로-오퍼레이션이 조각난 것으로 판별되면, 재명명 및 실행을 위해 스케줄되지 않은 마이크로-오퍼레이션을 중지하는 단계를 더 포함한다.
실시 예로서, 상기 마이크로-오퍼레이션의 상기 구조 소스 레지스터가 조각난 것으로 판별되면, 상기 레지스터 파일에서, 둘 또는 그 이상의 생성자들의 둘 또는 그 이상의 레지스터들을 읽고, 읽어진 결과를 상기 둘 또는 그 이상의 생성자들의 레지스터들 각각의 사이즈보다 큰 사이즈를 갖는 레지스터에 기입함으로써, 상기 조각을 수정하는 단계를 더 포함한다.
본 발명의 실시 예에 따른 명령 처리 장치는 재명명 테이블을 제공하는 재명명기를 포함하고, 상기 재명명기는 상기 재명명 테이블에 명령의 소스 레지스터에 대한 조각 정보를 기록하고, 그리고 상기 조각 정보는 상기 소스 레지스터의 적어조 하나의 생성자에 대한 정보를 포함한다.
실시 예로서, 상기 소스 레지스터는 상기 명령의 구조 소스 레지스터이고, 상기 명령 처리 장치는 상기 조각 정보로부터 상기 구조 소스 레지스터가 조각난지를 판별하도록 구성되는 조각 판별기를 더 포함하고, 상기 구조 소스 레지스터의 콘텐츠가 복수의 물리 레지스터들에 흩어져 있을 때, 상기 구조 소스 레지스터는 조각난 것으로 판별된다.
실시 예로서, 상기 조각 정보는, 상기 구조 소스 레지스터의 타입을 가리키는 구조 소스 태그의 제 1 정보 및 상기 구조 소스 레지스터가 조각난지를 가리키는 상기 구조 소스 태그의 제 2 정보로부터 도출된다.
실시 예로서, 상기 제 1 정보는 상기 구조 소스 레지스터의 타입이 싱글, 더블 또는 쿼드 중 하나임을 가리키고, 상기 제 2 정보는 상기 적어도 하나의 생성자가 싱글, 더블 또는 쿼드임을 가리킨다.
실시 예로서, 상기 구조 소스 레지스터가 조각난 것으로 판별되면 적어도 하나의 수정 마이크로-오퍼레이션을 생성하고, 그리고 상기 레지스터 파일에서, 둘 또는 그 이상의 생성자들의 둘 또는 그 이상의 레지스터들을 읽고, 읽어진 결과를 상기 둘 또는 그 이상의 생성자들의 레지스터들 각각의 사이즈보다 큰 사이즈를 갖는 레지스터에 기입함으로써, 조각을 수정하도록 상기 수정 마이크로-오퍼레이션을 실행하도록 구성되는 수정 스테이트 머신을 더 포함한다.
실시 예로서, 상기 재명명기는 상기 수정 마이크로-오퍼레이션을 재명명한다.
실시 예로서, 상기 수정 스테이트 머신은 상기 제 1 정보 및 상기 제 2 정보에 기반하여 상기 적어도 하나의 수정 마이크로-오퍼레이션의 수를 결정한다.
실시 예로서, 상기 마이크로-오퍼레이션의 상기 구조 소스 레지스터가 조각난 것으로 판별되면, 재명명 및 실행을 위해 스케줄되지 않은 마이크로-오퍼레이션을 중지하는 수정 스테이트 머신을 더 포함한다.
실시 예로서, 상기 마이크로-오퍼레이션의 상기 구조 소스 레지스터가 조각난 것으로 판별되면, 상기 수정 스테이트 머신은 상기 레지스터 파일에서, 둘 또는 그 이상의 생성자들의 둘 또는 그 이상의 레지스터들을 읽고, 읽어진 결과를 상기 둘 또는 그 이상의 생성자들의 레지스터들 각각의 사이즈보다 큰 사이즈를 갖는 레지스터에 기입함으로써, 상기 조각을 수정한다.
실시 예로서, 상기 마이크로-오퍼레이션의 상기 구조 소스 레지스터가 조각난 것으로 판별되면, 재명명 및 실행을 위해 스케줄되지 않은 마이크로-오퍼레이션을 중지하는 수정 스테이트 머신을 더 포함한다.
실시 예로서, 상기 마이크로-오퍼레이션의 상기 구조 소스 레지스터가 조각난 것으로 판별되면, 상기 수정 스테이트 머신은 상기 레지스터 파일에서, 둘 또는 그 이상의 생성자들의 둘 또는 그 이상의 레지스터들을 읽고, 읽어진 결과를 상기 둘 또는 그 이상의 생성자들의 레지스터들 각각의 사이즈보다 큰 사이즈를 갖는 레지스터에 기입함으로써, 상기 조각을 수정한다.
상술된 예시적인 재명명 및 수정 스킴은, 레지스터 병합을 필요로 하는 모든 조각난 소스들에서, 동시에 스케줄러에 복수의 물리 소스 태그들을 저장할 필요성을 제거한다. 또한, 이 스킴은 레지스터 병합을 수행하기 위해 재명명기 및 물리 레지스터 파일의 추가적인 읽기 포트의 필요성을 유발하지 않는다. 상술된 실시 예들은 면적 및 전력 면에서 효율적인 스테이트 머신을 이용하여 레지트서 병합을 위한 수정 마이크로-오퍼레이션들을 검출 및 실행한다. 또한, 상술된 실시 예들은 내로우-투-와이드 의존성을 갖지 않는 명령들에 영향을 주지 않으므로, 동작 성능 면에서 더 효율적이다.
도 1a는 32비트 레지스터 레이아웃(ARM v7 프로세서의 Aarch32 레이아웃)을 보여준다.
도 1b는 64비트 레지스터 레이아웃(ARM v8 프로세서의 Aarch64 레이아웃)을 보여준다.
도 2는 본 발명의 실시 예에 따른 프로세서의 일부를 보여주는 블록도이다.
도 3a는 본 발명의 실시 예에 따른 ARM v7 프로세서의 Aarch32 레이아웃의 재명명 테이블의 엔트리를 보여준다.
도 3b는 본 발명의 실시 예에 따른 재명명 테이블의 갱신된 필드들을 보여준다.
도 3c는 본 발명의 실시 예에 따른 재명명 테이블에서 쿼드 목적지 레지스터들에 요구되는 필드들을 보여준다.
도 3d는 본 발명의 실시 예에 따른 ARM v7 프로세서의 Aarch32 레이아웃을 위한 재명명 테이블의 모든 재명명 테이블 엔트리들 및 필드 정보의 사이즈를 보여준다.
도 4a 내지 도 4e는 본 발명의 실시 예에 따라 조각을 판별하고 조각의 수정을 개시하는 시퀀스를 보여준다.
도 5a 내지 도 5는 본 발명의 실시 예에 따른, 도 4a 내지 도 4e에 도시된 시퀀스에서 결정된 조각을 수정하는 시퀀스를 보여준다.
도 6은 본 발명의 실시 예에 따라 레지스터 조각을 결정하고 수정 마이크로-오퍼레이션을 생성하는 시퀀스를 보여준다.
도 7은 본 발명의 실시 예에 따른, 명령 파이프라인 다이어그램에서의 수정 프로세스의 흐름을 보여준다.
본 발명의 실시 예들이, 첨부된 도면들을 참조하여, 해당 기술 분야에 통상적인 기술을 가진 사람들(이하, 당업자)에게 쉽게 이해될 수 있도록 상세하게 설명된다. 본 발명의 기술적 사상은 여기에 게시된 실시 예들에 한정되지 않고, 다양한 형태로 응용될 수 있다. 잘 알려진 부분들에 대한 상세한 설명은 간결한 설명을 위하여 생략될 수 있다. 유사한 참조 번호들은 유사한 구성 요소들을 참조할 수 있다.
도 1a에 도시된 바와 같이, 구조 레이아웃에서 조각난 레지스터 소스들을 초래하는 내로우-투-와이드(narrow-to-wide, NTW) 의존성은 다양한 방법들을 이용하여 다뤄질 수 있다. 예를 들어, 조각난 원본 구조 소스는 복수의 물리 레지스터 소스들에 분산될 수 있고, 또는 읽기-수정-쓰기(read-modify-write) 방법이 사용되어 레지스터 머지(register merge)가 수행될 수 있다. 이러한 방법들은 모두 문제점을 갖는다. 소스 분산 방법은 소스들의 수의 증가를 초래하여, 더 많은 소스 태그를 저장할 필요성을 초래하고 그리고 잠재적으로 더 많은 레지스터 파일 읽기 포트들 및 재명명 테이블 읽기 포트들의 필요성을 초래할 수 있다. 읽기-수정-쓰기(read-modify-write) 방법은 동작 성능을 저하시키고, 전력 소모를 증가시킬 수 있다.
도 2는 본 발명의 실시 예에 따른 프로세서(10)의 일부를 보여주는 블록도이다. 프로세서(10)는 메모리 또는 캐시(미도시)로부터 페치(fetch)되는 명령들을 처리하는 디코더(100), 재명명기(200), 그리고 스케줄러(300)를 포함한다. 재명명기(200)는 재명명 테이블(210), 조각 판별기(220), 그리고 수정 스테이트 머신(230)을 포함한다. 도 2에 도시된 구조는 멀티-코어 프로세서를 포함하는 다양한 형태의 프로세서 또는 데이터 프로세싱 유닛에 적용될 수 있다.
도 2에서, 디코더(100)는 메모리(미도시)로부터 페치된 명령들을 하위 레벨의 마이크로-오퍼레이션(micro-operation) 또는 명령들로 디코딩한다. 따라서, 명령들의 흐름은 마이크로-오퍼레이션의 흐름으로 사상(map)된다. 디코딩된 마이크로-오퍼레이션 필드들은 수행할 동작(예를 들어, 더하기(add), 곱하기(multiply), 로드(load), 저장(store) 등)을 명시하는 오퍼레이션 코드, 데이터가 유지되고 있는 구조 레지스터 어드레스를 가리키는 소스 오퍼랜드(source operand), 그리고 데이터가 처리되어 전달될 구조 레지스터 어드레스를 가리키는 목적지 오퍼랜드(destination operand)를 포함할 수 있다. 디코딩된 마이크로-오퍼레이션은 재명명 인터페이스(150)를 통해 재명명기(200)로 전달된다. 재명명기(200)에서, 마이크로-오퍼레이션의 구조 레지스터들은, 스케줄러(300)로 전송되어 실행 일정이 결정되기 전에, 재명명되고 의존성이 체크된다. 재명명기(200)는 레지스터 파일 내에서, 마이크로-오퍼레이션의 레지스터들에 대한 정보가 저장된 재명명 테이블(210)을 이용하여, 구조 레지스터들을 물리적 레지스터들로 재명명하도록 구성된다. 재명명 테이블(210)은 본 실시 예에 따른 재명명기(200) 내에 포함되는 것으로 도시되어 있다. 그러나, 재명명 테이블(210)은 프로세서(10)의 다른 부분에 저장될 수 있다. 레지스터 재명명(register renaming)은 읽기 후 쓰기(write-after-read)를 회피하기 위해 수행되고, 읽기 후 쓰기 데이터는 마이크로-오퍼레이션의 비순차 실행(out-of-order execution)에서 위험을 초래할 수 있다. 구조 레지스터들은 프로세서의 구조의 프로그래머의 관점의 명령에서 식별되는 레지스터들일 수 있다.
재명명기(200)에서, 조각 판별기(220)는, 마이크로-오퍼레이션의 구조 소스 레지스터들이 조각화되어 있는지 그리고 디코더로부터 수신되는 소스 타입 정보 및 재명명 테이블(210)로부터의 조각 정보를 분석함으로써 수정되어야 할 필요가 있는지를 판별하도록 제공될 수 있다. 큰 사이즈의 소스 값의 마이크로-오퍼레이션에서, 마이크로-오퍼레이션의 생성자가 적은 사이즈(예를 들어, 싱글 사이즈)의 레지스터들이면, 큰 사이즈의 소스 값은 물리적 레지스터 파일에서 조각난 것으로 여겨진다. 예를 들어, 쿼드 값의 생성자가 싱글 또는 더블 소스들이어서 콘텐츠가 복수의 물리 레지스터들에 분산된 경우, 소스 값은 물리적 레지스터 파일에서 조각난다. 수정 스테이트 머신(230)은, 레지스터 파일의 구조 레지스터 소스에 조각이 존재할 때, 수정 마이크로-오퍼레이션을 이용하여 조각 판별기(220)에 의해 판별된 조각을 수정한다. 조각 판별기(220) 및 수정 스테이트 머신(230)의 상세한 동작들은 후술된다.
도 3a는, 도 1a에 도시된 ARM v7 프로세서(10)의 Aarch32 레이아웃에서, 본 발명의 실시 예에 따른 레지스터(Q0, D0, D1, S0, S1, S2, S3)와 연관된 재명명 테이블의 엔트리를 보여준다. 여기에 게시되는 재명명 테이블은, 도 2에 도시된 프로세서(10)의 재명명기(200)에서 사용되는 재명명 테이블(210)과 동일할 수 있다. 따라서, 이하에서, 재명명 테이블은 재명명 테이블(210)과 동일한 것으로 여겨진다. 재명명 테이블은 도 3b 내지 도 3d를 참조하여 더 상세하게 설명된다. 재명명기(200)는 디코더(100)로부터 디코딩된 마이크로-오퍼레이션의 각 목적지 레지스터를 재명명하고, 그리고 목적지 레지스터의 사이즈에 관계 없이 물리 레지스터 파일(PRF, Physical Register File)에서 각 목적지 레지스터에 새로운 엔트리를 할당한다. 도 3a에서, PRF 엔트리는 128비트폭(bit wide)이고, 재명명 테이블은 네 개의 싱글 레지스터 엔트리 필드들(S0 엔트리# 내지 S3 엔트리#)을 할당한다. 각 엔트리 필드는 32비트 사이즈를 가질 수 있다. 레지스터 엔트리들의 결과는 PRF 엔트리에서 항상 우측에 정렬된다. 이러한 재명명 테이블 엔트리 구조는 ARM v8 프로세서의 Aarch64 레이아웃에서 명백하게(clearly) 동작하고, 재명명 테이블에 저장된 정보의 소수의 추가 비트들을 통해 ARM v7 프로세서의 Aarch32 레이아웃에서도 동작할 수 있다. ARM v7 프로세서의 Aarch32 레이아웃 및 ARM v8 프로세서의 Aarch64 레이아웃은 단지 예시적일 뿐이며, 재명명 테이블 엔트리 구조는 유사한 레이아웃들의 다른 구조들에 적용될 수 있다. 추가 비트들은 세 개의 유효(Valid) 정보 필드들 및 세 개의 레인(Lane) 정보 필드들로 저장될 수 있다. 유효 정보 필드들과 같은 정보 필드들은, 마지막 쓰기가 싱글(32), 더블(64) 또는 쿼드(128) 워드에 의한 것인지를 저장할 수 있다. 레인 정보 필드들은 읽어진 레인 정보, 즉 데이터가 레지스터들로부터 읽어질 때 데이터가 어떻게 정렬되어야 하는지를 저장할 수 있다. 유효 정보 필드들에 저장된 정보와 같은 재명명 테이블에 저장된 정보는, 후술되는 바와 같이, 레지스터 파일에 조각이 존재하는지를 가리키는 조각 정보로 참조될 수 있다.
도 3b는 본 발명의 실시 예에 따라 레지스터들(S0~S3)이 재명명될 때, 재명명 테이블의 어떤 필드들이 갱신되는지 보여준다. 싱글 레지스터들(S0~S3) 중 하나 또는 그 이상이 하나 또는 그 이상의 물리 레지스터 파일 엔트리 번호들(PRF 엔트리#)에 사상(map)됨에 따라, 대응하는 정보 필드가 갱신될 수 있다.
도 3c는 본 발명의 실시 예에 따른 재명명 테이블에서 쿼드 목적지 레지스터들에서 요구되는 필드들을 보여준다. 재명명 테이블에서, 모든 엔트리들이 모든 정보 필드들을 저장할 필요는 없다. 도 1a에 도시된 바와 같이, AEM v7 프로세서의 Aarch32 레이아웃에서, 쿼드 레지스터들(Q0-Q15)은 더블 레지스터들에 사상된다. 그러나, 이들중 절반에서만, 즉 Q0 내지 Q7에서만, 각 더블 레지스터는 두 개의 싱글 레지스터들로 사상된다. 따라서, 본 발명의 실시 예에 따르 ARM v7 프로세서의 Aarch32 레이아웃을 이용하여 재명명 테이블을 사상하기 위해, 싱글 레지스터들은 D0-D15/Q0-Q7로 사상될 필요만 있고, 더블 레지스터들은 Q0-Q15, Q16로 사상될 필요만 있으며, Q16-Q31은 존재하지 않는다.
도 3d는 본 발명의 실시 예에 따른 ARM v7 프로세서의 Aarch32 레이아웃의 재명명 테이블의 모든 재명명 테이블 엔트리들 및 필드 정보의 사이즈를 보여준다. 도 3d에서, 제 0 테이블 엔트리(엔트리 0)는 도 3a 내지 도 3c에 도시된 테이블 엔트리에 대응한다. 싱글, 더블 또는 쿼드 레지스터 각각은 도 3b의 PRF 엔트리#에 대응하는 물리 레지스터 태그(Rtag)에 사상된다. 제 0 내지 제 7 재명명 테이블 엔트리(엔트리0 내지 엔트리7)에 대응하는 레지스터들에서, 쿼드 레지스터는 각각 두 개의 싱글 레지스터들에 사상되는 두 개의 더블 레지스터들에 사상된다. 각 유효 정보는 1 비트의 사이즈를 갖는다. S1과 같은 하나의 레인 정보는 1비트의 사이즈를 갖고, S2 및 S7과와 같은 두 개의 레인 정보는 2 비트의 사이즈를 갖는다. 제 8 내지 제 15 재명명 테이블 엔트리들(엔트리 8 내지 엔트리 15)에 대응하는 레지스터들에서, 쿼드 레지스터는 두 개의 더블 레지스터들에 사상된다. 이러한 재명명 테이블 엔트리들 각각에서, 두 개의 더블 레지스터들 중 D1과 같은 하나의 레지스터만이 1 비트 레인 정보를 갖는다. 제 16 내지 제 31 재명명 테이블 엔트리(엔트리 16 내지 엔트리 31)에 대응하는 레지스터들에서, 조각 정보 비트는 존재하지 않는다.
도 4a 내지 도 4e는 본 발명의 실시 예에 따라, 도 2의 프로세서(10)에서 구조 레지스터 소스에서 조각을 판별하고 구조 레지스터 소스 조각의 수정을 개시하는 시퀀스(sequence)를 보여준다. Rtag (32)에 사상된 싱글 레지스터(S0)를 쓰기 위한 첫 번째 마이크로-오퍼레이션(uOP0)이 재명명될 때, 도 4a에 도시된 바와 같이, 재명명기(200)는 재명명 테이블의 제 0 엔트리(엔트리 0)에서, Rtag (32)의 정보를 기록하고 상이한 정보 필드들을 갱신한다. 이후에, Rtag (33)에 사상된 싱글 레지스터(S1)의 쓰기를 위한 두 번째 마이크로-오퍼레이션(uOP1)이 입력될 때, 도 4b에 도시된 바와 같이, 재명명기(200)는 재명명 테이블의 동일한 엔트리(엔트리 0)에서, Rtag (33)의 정보를 기록하고 정보 필드 또한 갱신한다. 마찬가지로, Rtag (34) 및 Rtag (35)에 사상된 싱글 레지스터들(S2, S3)의 쓰기를 위한 세 번째 마이크로-오퍼레이션(uOP2) 및 네 번째 마이크로-오퍼레이션(uOP3)이 각각 입력될 때, 도 4c 및 도 4d에 도시된 바와 같이, 재명명기(200)는 재명명 테이블의 동일한 엔트리(엔트리 0)에서, 이 정보를 기록하고 정보 필드들을 갱신한다. 재명명기(200)가 레지스터들(S2, S3)에 대한 정보를 기록한 후에, 디코더로부터 쿼드 소스 레지스터(Q0)의 읽기를 위한 다섯 번째 마이크로-오퍼레이션(uOP4)이 입력될 때, Q0, D1, D0 비트들이 무효이므로 조각 판별기(220)에 의해 레지스터들이 조각난 것으로 판별된다. 즉, 도 4e에 도시된 바와 같이, 쿼드 소스 데이터는 복수의 PRF 엔트리들에 존재한다.
디코더로부터 재명명기(200)로 다섯 번째 마이크로-오퍼레이션(uOP4)이 수신된 때에, 조각 판별기(201)가 구조 소스 레지스터들에서 조각이 있음을 판별하면, 마이크로-오퍼레이션(uOP4)은 재명명기(200)에서 수용되지 않고, 디코더(100)로부터 재명명 인터페이스(150)로의 전송은 지연된다. 동시에, 수정 스테이트 머신(202)이 활성화되어, 하나 또는 그 이상의 수정 마이크로-오퍼레이션을 이용하여 구조 소스 레지스터가 수정된다.
도 5a 내지 도 5d는 본 발명의 실시 예에 따라, 도 4a 내지 도 4e에 도시된 시퀀스에서 결정된 조각을 수정하는 순서를 보여준다. 도 5a 내지 도 5d에서, 마이크로-오퍼레이션들(uOP1, uOP2, uOP3)은 조각난 구조 소스 레지스터들을 병합(merge)하기 위해 사용되는 수정 마이크로-오퍼레이션들이다. 첫 번째 수정 마이크로-오퍼레이션(uOP1)은, 도 5a에 도시된 바와 같이, 두 개의 싱글 레지스터들(S0 (Rtag32) 및 S1 (Rtag33))을 읽고, 결과를 PRF 엔트리 36 (Rtag36)의 더블 레지스터에 기입하고, 그리고 D0 유효 정보를 1로 갱신한다. 이 방법으로, 도 개의 상이한 PRF 엔트리들로부터의 조각난 두 개의 싱글 레지스터들은 동일한 엔트리로 병합된다. 도 5b에 도시된 바와 같이, 두 번째 수정 마이크로-오퍼레이션(uOP2)은 S2 및 S3를 읽고, 결과를 PRF 엔트리 37 (Rtag37)을 갖는 다른 더블 레지스터에 기입하고, 그리고 D1 유효 정보를 갱신한다. 도 5c에 도시된 바와 같이, 세 번째 수정 마이크로-오퍼레이션(uOP3)은 두 개의 더블 레지스터들(D0, D1)을 읽고, 결과를 PRF 엔트리 38 (Rtag 38)의 쿼드 레지스터에 기입하고, 그리고 Q0 유효 정보를 1로 갱신한다. 이 때, 하나의 구조 레지스터 소스에 대한 수정이 완료된다. 프로세스는 조각난 마이크로-오퍼레이션의 모든 구조 레지스터 소스들이 수정될 때까지 반복될 수 있다. 조각난 마이크로-오퍼레이션의 수정이 완료되면, 수정 스테이트 머신(230)은 디코더 지연을 중지한다. 도 5d에 도시된 바와 같이, 수정을 유발한 원본 마이크로-오퍼레이션(도 4e의 uOP4)은 재명명기(200)로 전송될 수 있다.
도 5a 내지 도 5d를 참조하여 상술된 수정 프로세스에서, 수정 마이크로-오퍼레이션들은, 통상적인 마이크오-오퍼레이션들이 재명명기(200)에서 사용하는 재명명 테이블의 읽기 포트들과 동일한 읽기 포트들을 사용한다. 따라서, 수정 마이크로-오퍼레이션들을 위한 추가적인 읽기 포트들이 요구되지 않는다.
도 6은 본 발명의 실시 예에 따라 구조 소스 레지스터 조각을 판별하고, 도 2의 조각 판별기(220) 및 수정 스테이트 머신(230)에서 수정 마이크로-오퍼레이션이 생성되는 시퀀스를 보여준다.
한 사이클에서 모든 마이크로-오퍼레이션들의 레지스터 태그들(Rtags)이 재명명된 후, 조각 판별기(220)는 마이크로-오퍼레이션이 레지스터 병합을 수행하기 위한 수정을 필요로 하는지 판별한다. 더 상세하게는, 도 6에 도시된 바와 같이, 조각 판별기(220)는 마이크로-오퍼레이션이 재명명기(200)에 전달될 때 재명명 테이블(210)로부터 조각 정보를 수신하도(S10), 디코더로부터 마이크로-오퍼레이션의 구조 소스 레지스터들의 타입(예를 들어, 싱글, 더블 또는 쿼드)에 대한 정보를 수신한다(S20). 조각 정보는 재명명 테이블에 저장된 소스 레지스터들(Q0, D1, 그리고/또는 D0)에 대한 유효성 정보를 포함한다. 수신된 정보에 기반하여, 조각 판별기(220)는 구조 소스 레지스터들이 조각나 있는지 판별한다. 즉, 조각 판별기(220)는 구조 소스 레지스터들의 수정이 필요한지 판별한다(S30). 마이크로-오퍼레이션의 구조 소스 레지스터가 복수의 PRF 엔트리들에 존재하는 것으로 마크(mark)되어 있으면, 조각 판별기(220)는 마이크로-오퍼레이션의 구조 소스 레지스터가 조각나있고 수정이 필요한 것으로 판별한다(S40).
구조 소스 레지스터들이 조각난 것으로 판별되어, 구조 소스 레지스터들의 마이크로-오퍼레이션은 수정을 필요로 하면(S40), 조각 판별기(220)는 조각난 마이크로-오퍼레이션의 재명명 인터페이스(150) 및 젊은 마이크로-오퍼레이션들(younger uOP)을 지연한다(S50). 그러나, 동일한 사이클에서 늙은 마이크로-오퍼레이션들(older uOP)은 재명명이 수행되는 동안 처리되는 것이 허용될 수 있다. 여기에서, 젊은 마이크로-오퍼레이션들은 프로그램 순서(program order)에서 젊은, 즉 생성된 후 상대적으로 짧은 시간이 경과한 마이크로-오퍼레이션들을 의미한다. 늙은 마이크로-오퍼레이션들은 프로그램 순서(program order)에서 늘ㅂ은, 즉 생성된 후 상대적으로 긴 시간이 경과한 마이크로-오퍼레이션들을 의미한다.
S40 단계에서 마이크로-오퍼레이션이 수정을 필요로 하는 것이 판별된 후, 수정 스테이트 머신(230)은 재명명 테이블로부터 조각 정보, 즉 소스 유효 정보를 수신하고(S60), 디코더(100)로부터 마이크로-오퍼레이션의 소스 레지스터들의 타입들(싱글, 더블 또는 쿼드)에 대한 정보를 수신하고(S70), 그리고 디코더(100)로부터 소스 레지스터들의 구조 태그들을 수신한다(S80). 수신된 정보를 이용하여, 수정 스테이트 머신(230)은 각 조각난 마이크로-오퍼레이션에서 요구되는 수정 마이크로-오퍼레이션의 수를 판별하고, 필요한 수의 수정 마이크로-오퍼레이션을 생성하여 소스 레지스터들의 조각을 수정한다 (S90). 상술된 바와 같이, 수정은 상이한 물리 레지스터 파일 엔트리 수들을 갖는 작은 사이즈의 레지스터들을 병함함으로써, 그리고 레지스터들의 데이터를 다른 레지스터 파일 엔트리 수를 갖는 더 큰 사이즈의 레지스터에 기입함으로써 수행된다. 예를 들어, 소스 레지스터가 두 개의 더블 레지스터들에 의해 만들어진 쿼드인 경우, 두 개의 더블 레지스터들은 병합되고 그 결과가 쿼드 레지스터에 기입될 수 있다. 두 개의 싱글 레지스터들로 만들어진 더블 소스 레지스터의 경우, 두 개의 싱글 레지스터들이 병합되고 그 결과가 더블 레지스터에 기입될 수 있다. 수정 마이크로-오퍼레이션들이 생성되면, 이러한 수정 마이크로-오퍼레이션들이 재명명 테이블에 전송되어, 수정 스테이트 머신(230)에 의해 조각이 수정된다 (S100). 조각난 마이크로-오퍼레이션의 수정이 완료되면, 디코딩의 지연이 제거되고, 디코더는 원래의 마이크로-오퍼레이션(조각난 마이크로-오퍼레이션이었지만 더이상 조각나지 않은 마이크로-오퍼레이션)을 다시 수행한다. 수정 마이크로-오퍼레이션은 재명명기로 성공적으로 전송된다. 필요한 수정 마이크로-오퍼레이션의 수를 판별 및 생성하는 것은 모든 수정 마이크로-오퍼레이션들이 생성되고 재명명될 때까지 반복된다(S110). 이러한 수정 마이크로-오퍼레이션들은 정상 레지스터 재명명 프로세스로 수행된다. 조각난 마이크로-오퍼레이션의 수정이 완료되면, 디코딩의 지연이 제거된다(S120). 여기에 게시된 반복적인 수정 메커니즘은 수정 스킴이 어떻게 수행되는지를 보여주는 예시적인 것이며, 다른 메커니즘이 채용될 수 있다.
본 발명의 실시 예에 따른 수정 마이크로-오퍼레이션들은 작은 사이즈의 레지스터들을 읽고 큰 사이즈의 레지스터에 쓰는 도우미 명령들이다. 예를 들어, 수정 마이크로-오퍼레이션들은 두 개의 싱글 레지스터들을 읽고 하나의 더블 레지스터를 쓰거나, 또는 두 개의 더블 레지스터들을 읽고 하나의 쿼드 레지스터를 쓸 수 있다.
필요한 수정 마이크로-오퍼레이션들의 수는 소스 레지스터가 쿼드 또는 더블인지에 따라 그리고 소스 데이터의 생성자가 쿼드, 더블 또는 싱글인지에 따라 결정된다. 예를 들어, 도 3b에 도시된 재명명 테이블에서, 소스 레지스터가 쿼드(Q0)이고 두 개의 생성자 더블들(D1, D0)이 모두 유효하면, D0 및 D1을 모두 읽고 쿼드 레지스터에 기입하기 위한 하나의 수정 마이크로-오퍼레이션이 필요하다. 소스 레지스터들(D0, D1) 중 하나가 무효하면, 두 개의 수정 마이크로-오퍼레이션들이 필요하다. 즉, 첫 번째 수정 마이크로-오퍼레이션은 두 개의 생성자 싱글들(S0, S1)을 읽고 더블 레지스터에 기입하기 위해 필요하고, 두 번째 수정 마이크로-오퍼레이션은 새로 생성된 더블 레지스터 및 기존의 유효한 더블 레지스터를 읽고 최종 쿼드 레지스터에 기입하기 위해 필요하다. D0 및 D1이 모두 무효하면, 세 개의 수정 마이크로-오퍼레이션들이 필요하다. 즉, 첫 번째 마이크로-오퍼레이션은 두 개의 하위의 싱글 레지스터들을 읽어 더블 레지스터에 쓰고, 두 번째 수정 마이크로-오퍼레이션은 두 개의 상위의 싱글 레지스터들을 읽어 다른 하나의 더블 레지스터에 쓰고, 세 번째 수정 마이크로-오퍼레이션은 두 개의 더블 레지스터들을 읽어 최종 쿼드 레지스터에 기입한다. 소스 레지스터가 더블 레지스터이면, 두 개의 싱글 레지스터들을 읽어 더블 레지스터에 기입하는 하나의 수정 마이크로-오퍼레이션이 필요하다. 수정 스테이트 머신(230)은 필요한 수의 수정 마이크로-오퍼레이션들을 생성하여 수정을 수행할 수 있다.
도 7은 본 발명의 실시 예에 따른 명령 파이프라인 다이어그램 상의 수정 프로세서 흐름을 보여준다. 도 6에 도시된 바와 같이, 네 개의 마이크로-오퍼레이션들(uOP0, uOP1, uOP2, uOP3)이 재명명기(200)에 전송된다. 사이클 내에서 uOP0가 가장 늙은 마이크로-오퍼레이션이고, uOP3가 가장 어린 마이크로-오퍼레이션이다. 각 마이크로-오퍼레이션의 소스 레지스터들의 조각 정보가 재명명 테이블이 기록된다. 재명명 테이블 및 마이크로-오퍼레이션들의 소스 타입들을 비교함으로써, 조각 판별기(230)에 의해 조각 수정의 필요성이 판별된다. uOP0가 재명명기(200)에 도달할 때, 조각 판별기(230)가 소스 레지스터에 수정을 유발하는 조각이 없는 것으로 판별하면, uOP0는 재명명을 위해 전송된다. 두 번째 마이크로-오퍼레이션(uOP1)은 수정이 필요한 것으로 판별된다. 디코더는 지연(또는 중지)되고, 수정 프로세스가 시작된다.
수정 스테이트 머신(230)은 조각난 마이크로-오퍼레이션에 필요한 수정 마이크로-오퍼레이션들의 수를 판별하고, 필요한 수의 수정 마이크로-오퍼레이션들을 생성한다. 도 7의 예에서, uOP1을 수정하기 위해 필요한 수정 마이크로-오퍼레이션들의 수는 세 개 이다. 생성된 수정 마이크로-오퍼레이션들(FxOP1a, FxOP1b, FxOP1c)은 작은 사이즈의 레지스터들을 병합하여 큰 사이스의 레지스터에 기입하는 것을 돕는다. uOP1의 수정 마이크로-오퍼레이션들이 생성됨에 따라, 수정 마이크로-오퍼레이션들(FxOP1a, FxOP1b, FxOP1c)이 전송(dispatch)되고, 디코더(100)의 지연(또는 중지)가 제거된다.
uOP1의 수정을 종료한 후, 디코더의 지연(또는 중지)는 제거되고, 디코더는 uOP1, uOP2, uOP3를 실행한다. uOP1은 성공적으로 재명명된다. 세 번째 마이크로-오퍼레이션(uOP2)은 수정이 필요한 것으로 판별되고, 디코더(100)는 다시 지연(또는 중지)된다. 마찬가지로, 수정 스테이트 머신(230)은 uOP2를 수정하기 위해 필요한 수의 수정 마이크로-오퍼레이션들을 생성하고, 또다른 수정 프로세스가 시작된다. 네 번째 마이크로-오퍼레이션(uOP3) 또른 유사한 프로세스로 수정된다. 도 7에 도시된 바와 같이, 수정 프로세스는 파이프라인 프로세스이다.
마이크로-오퍼레이션의 소스 레지스터들 각각에서 수정 스킴이 필요할 수 있다. 마이크로-오퍼레이션에 세 개의 소스들이 존재하면, 최대 아홉 개의 수정 마이크로-오퍼레이션들이 마이크로-오퍼레이션의 조각을 수정하기 위해 필요할 수 있다. 본 발명의 실시 예에 따르면, 아홉 개의 수정 마이크로-오퍼레이션들 중, 사이클 당 네 개의 수정 마이크로-오퍼레이션들이 재명명/전송(dispatch)될 수 있다. 후속 마이크로-오퍼레이션들의 재명명은 수정 마이크로-오퍼레이션들이 실행(insert)될 때까지 지연(또는 중지)된다. 복수의 마이크로-오퍼레이션들이 동일 사이클에서 수정을 필요로하면, 마이크로-오퍼레이션들을 수정하는 순서는 마이크로-오퍼레이션들의 상대적인 나이에 따라 결졍될 수 있다.
상술된 예시적인 재명명 및 수정 스킴은, 레지스터 병합을 필요로 하는 모든 조각난 소스들에서, 동시에 스케줄러에 복수의 물리 소스 태그들을 저장할 필요성을 제거한다. 또한, 이 스킴은 레지스터 병합을 수행하기 위해 재명명기 및 물리 레지스터 파일의 추가적인 읽기 포트의 필요성을 유발하지 않는다. 상술된 실시 예들은 면적 및 전력 면에서 효율적인 스테이트 머신을 이용하여 레지트서 병합을 위한 수정 마이크로-오퍼레이션들을 검출 및 실행한다. 또한, 상술된 실시 예들은 내로우-투-와이드 의존성을 갖지 않는 명령들에 영향을 주지 않으므로, 동작 성능 면에서 더 효율적이다.
상술된 실시 예들은 예시적인 것이며 본 발명의 기술적 사상을 한정하지 않는다. 예를 들어, 물리 레지스터의 예시적인 128 비트의 사이즈는 256, 64 또는 32비트와 같은 다른 사이즈일 수 있다. 싱글 레지스터는 4, 16, 64비트와 같은 어떠한 사이즈도 가질 수 있으며, 따라서 더블 레지스터는 8, 32, 64, 128 비트와 같은 어떠한 사이즈도 가질 수 있다. 또한, 실시 예들에서 설명된 사이클 당 마이크로-오퍼레이션들의 수는 임의의 수일 수 있다. 재명명 테이블(210), 조각 판별기(220) 및 수정 스테이트 머신(230)은 구조으로 재명명기(200)에 포함되지 않을 수 있으며, 도 2의 프로세서(10)의 별도의 구성 요소로 구현될 수 있다.
본 발명의 기술적 사상은 한정되지 않으며, 내로우-투-와이드 의존성을 갖는 모든 타입의 구조 레지스터들에 적용될 수 있다. 상술된 그리고 상술되지 않은 다양한 응용, 최적화, 추가 및 개선은 본 발명의 기술적 사상의 범위에 속한다. 따라서, 본 발명의 범위는 실시 예들의 상세한 설명에 의해 한정되지 않고, 첨부된 청구 범위들 및 본 발명의 기술적 사상에 포함되는 다양한 변경들에 의해 정해져야 한다.
10; 프로세서
100; 디코더
200; 재명명기
210; 재명명 테이블
220; 조각 판별기
230; 수정 스테이트 머신
300; 스케줄러

Claims (22)

  1. 레지스터 파일을 재구성하는 방법에 있어서:
    재명명 테이블을 제공하는 단계; 그리고
    상기 재명명 테이블에 명령의 소스 레지스터에 대한 조각 정보를 기록하는 단계를 포함하고,
    상기 조각 정보는 상기 소스 레지스터의 적어도 하나의 생성자에 대한 정보를 포함하는 방법.
  2. 제 1 항에 있어서,
    상기 소스 레지스터는 상기 명령의 구조 소스 레지스터이고,
    상기 방법은 상기 조각 정보로부터 상기 구조 소스 레지스터가 조각난지를 판별하는 단계를 더 포함하고,
    상기 구조 소스 레지스터의 콘텐츠가 복수의 물리 레지스터들에 흩어져 있을 때, 상기 구조 소스 레지스터는 조각난 것으로 판별되는 방법.
  3. 제 2 항에 있어서,
    상기 조각 정보는 상기 구조 소스 레지스터의 타입을 가리키는 구조 소스 태그의 제 1 정보 및 상기 구조 소스 레지스터가 조각난지를 가리키는 상기 구조 소스 태그의 제 2 정보로부터 도출되는 방법.
  4. 제 3 항에 있어서,
    상기 제 1 정보는 상기 구조 소스 레지스터의 타입이 싱글, 더블 또는 쿼드 중 어느 하나임을 가리키고,
    상기 제 2 정보는 상기 적어도 하나의 생성자가 싱글, 더블 또는 쿼드임을 가리키는 방법.
  5. 제 3 항에 있어서,
    상기 구조 소스 레지스터가 조각난 것으로 판별되면, 적어도 하나의 수정 마이크로-오퍼레이션을 생성하는 단계; 그리고
    상기 레지스터 파일에서, 둘 또는 그 이상의 생성자들의 둘 또는 그 이상의 레지스터들을 읽고, 읽어진 결과를 상기 둘 또는 그 이상의 생성자들의 레지스터들 각각의 사이즈보다 큰 사이즈를 갖는 레지스터에 기입함으로써, 상기 조각을 수정하도록 상기 수정 마이크로-오퍼레이션을 실행하는 단계를 더 포함하는 방법.
  6. 제 5 항에 있어서,
    상기 수정 마이크로-오퍼레이션을 재명명하는 단계를 더 포함하는 방법.
  7. 제 5 항에 있어서,
    상기 제 1 정보 및 상기 제 2 정보에 기반하여, 상기 적어도 하나의 수정 마이크로-오퍼레이션의 수를 판별하는 단계를 더 포함하는 방법.
  8. 제 3 항에 있어서,
    상기 마이크로-오퍼레이션의 상기 구조 소스 레지스터가 조각난 것으로 판별되면, 재명명 및 실행을 위한 스케줄이 되지 않은 마이크로-오퍼레이션을 중지(stall)하는 단계를 더 포함하는 방법.
  9. 제 8 항에 있어서,
    상기 마이크로-오퍼레이션의 상기 구조 소스 레지스터가 조각난 것으로 판별되면, 상기 레지스터 파일에서, 둘 또는 그 이상의 생성자들의 둘 또는 그 이상의 레지스터들을 읽고, 읽어진 결과를 상기 둘 또는 그 이상의 생성자들의 레지스터들 각각의 사이즈보다 큰 사이즈를 갖는 레지스터에 기입함으로써, 상기 조각을 수정하는 단계를 더 포함하는 방법.
  10. 제 2 항에 있어서,
    상기 마이크로-오퍼레이션이 조각난 것으로 판별되면, 재명명 및 실행을 위해 스케줄되지 않은 마이크로-오퍼레이션을 중지하는 단계를 더 포함하는 방법.
  11. 제 10 항에 있어서,
    상기 마이크로-오퍼레이션의 상기 구조 소스 레지스터가 조각난 것으로 판별되면, 상기 레지스터 파일에서, 둘 또는 그 이상의 생성자들의 둘 또는 그 이상의 레지스터들을 읽고, 읽어진 결과를 상기 둘 또는 그 이상의 생성자들의 레지스터들 각각의 사이즈보다 큰 사이즈를 갖는 레지스터에 기입함으로써, 상기 조각을 수정하는 단계를 더 포함하는 방법.
  12. 재명명 테이블을 제공하는 재명명기를 포함하고,
    상기 재명명기는 상기 재명명 테이블에 명령의 소스 레지스터에 대한 조각 정보를 기록하고, 그리고
    상기 조각 정보는 상기 소스 레지스터의 적어조 하나의 생성자에 대한 정보를 포함하는 명령 처리 장치.
  13. 제 12 항에 있어서,
    상기 소스 레지스터는 상기 명령의 구조 소스 레지스터이고,
    상기 명령 처리 장치는 상기 조각 정보로부터 상기 구조 소스 레지스터가 조각난지를 판별하도록 구성되는 조각 판별기를 더 포함하고,
    상기 구조 소스 레지스터의 콘텐츠가 복수의 물리 레지스터들에 흩어져 있을 때, 상기 구조 소스 레지스터는 조각난 것으로 판별되는 명령 처리 장치.
  14. 제 13 항에 있어서,
    상기 조각 정보는, 상기 구조 소스 레지스터의 타입을 가리키는 구조 소스 태그의 제 1 정보 및 상기 구조 소스 레지스터가 조각난지를 가리키는 상기 구조 소스 태그의 제 2 정보로부터 도출되는 명령 처리 장치.
  15. 제 14 항에 있어서,
    상기 제 1 정보는 상기 구조 소스 레지스터의 타입이 싱글, 더블 또는 쿼드 중 하나임을 가리키고,
    상기 제 2 정보는 상기 적어도 하나의 생성자가 싱글, 더블 또는 쿼드임을 가리키는 명령 처리 장치.
  16. 제 14 항에 있어서,
    상기 구조 소스 레지스터가 조각난 것으로 판별되면 적어도 하나의 수정 마이크로-오퍼레이션을 생성하고, 그리고 상기 레지스터 파일에서, 둘 또는 그 이상의 생성자들의 둘 또는 그 이상의 레지스터들을 읽고, 읽어진 결과를 상기 둘 또는 그 이상의 생성자들의 레지스터들 각각의 사이즈보다 큰 사이즈를 갖는 레지스터에 기입함으로써, 조각을 수정하도록 상기 수정 마이크로-오퍼레이션을 실행하도록 구성되는 수정 스테이트 머신을 더 포함하는 명령 처리 장치.
  17. 제 16 항에 있어서,
    상기 재명명기는 상기 수정 마이크로-오퍼레이션을 재명명하는 명령 처리 장치.
  18. 제 16 항에 있어서,
    상기 수정 스테이트 머신은 상기 제 1 정보 및 상기 제 2 정보에 기반하여 상기 적어도 하나의 수정 마이크로-오퍼레이션의 수를 결정하는 명령 처리 장치.
  19. 제 14 항에 있어서,
    상기 마이크로-오퍼레이션의 상기 구조 소스 레지스터가 조각난 것으로 판별되면, 재명명 및 실행을 위해 스케줄되지 않은 마이크로-오퍼레이션을 중지하는 수정 스테이트 머신을 더 포함하는 명령 처리 장치.
  20. 제 19 항에 있어서,
    상기 마이크로-오퍼레이션의 상기 구조 소스 레지스터가 조각난 것으로 판별되면, 상기 수정 스테이트 머신은 상기 레지스터 파일에서, 둘 또는 그 이상의 생성자들의 둘 또는 그 이상의 레지스터들을 읽고, 읽어진 결과를 상기 둘 또는 그 이상의 생성자들의 레지스터들 각각의 사이즈보다 큰 사이즈를 갖는 레지스터에 기입함으로써, 상기 조각을 수정하는 명령 처리 장치.
  21. 제 13 항에 있어서,
    상기 마이크로-오퍼레이션의 상기 구조 소스 레지스터가 조각난 것으로 판별되면, 재명명 및 실행을 위해 스케줄되지 않은 마이크로-오퍼레이션을 중지하는 수정 스테이트 머신을 더 포함하는 명령 처리 장치.
  22. 제 21 항에 있어서,
    상기 마이크로-오퍼레이션의 상기 구조 소스 레지스터가 조각난 것으로 판별되면, 상기 수정 스테이트 머신은 상기 레지스터 파일에서, 둘 또는 그 이상의 생성자들의 둘 또는 그 이상의 레지스터들을 읽고, 읽어진 결과를 상기 둘 또는 그 이상의 생성자들의 레지스터들 각각의 사이즈보다 큰 사이즈를 갖는 레지스터에 기입함으로써, 상기 조각을 수정하는 명령 처리 장치.
KR1020130160351A 2013-03-15 2013-12-20 벡터 레지스터 파일의 동적 재명명 기반의 레지스터 재구성 KR101952209B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/837,213 US9588770B2 (en) 2013-03-15 2013-03-15 Dynamic rename based register reconfiguration of a vector register file
US13/837,213 2013-03-15

Publications (2)

Publication Number Publication Date
KR20140113307A true KR20140113307A (ko) 2014-09-24
KR101952209B1 KR101952209B1 (ko) 2019-04-22

Family

ID=51419102

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130160351A KR101952209B1 (ko) 2013-03-15 2013-12-20 벡터 레지스터 파일의 동적 재명명 기반의 레지스터 재구성

Country Status (5)

Country Link
US (1) US9588770B2 (ko)
JP (1) JP6196176B2 (ko)
KR (1) KR101952209B1 (ko)
CN (1) CN104049947B (ko)
DE (1) DE102014103184A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020123170A1 (en) * 2018-12-13 2020-06-18 Advanced Micro Devices, Inc. Merged data path for triangle and box intersection test in ray tracing

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11429393B2 (en) * 2015-11-11 2022-08-30 Arm Limited Apparatus and method for supporting out-of-order program execution of instructions
CN106095393B (zh) 2016-06-22 2019-04-30 上海兆芯集成电路有限公司 在回退阶段期间合并部分写结果的系统和方法
CN107291425B (zh) * 2017-06-23 2020-11-24 上海兆芯集成电路有限公司 合并解决重命名尺寸问题的部分写入结果的系统和方法
US11256509B2 (en) * 2017-12-07 2022-02-22 International Business Machines Corporation Instruction fusion after register rename
US10747538B2 (en) 2018-12-21 2020-08-18 Intel Corporation Method and apparatus to re-configure MDIO registers on an ethernet device

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030217249A1 (en) * 2002-05-20 2003-11-20 The Regents Of The University Of Michigan Method and apparatus for virtual register renaming to implement an out-of-order processor
US20100205409A1 (en) * 2009-02-04 2010-08-12 Stmicroelectronics (Beijing) R&D Co. Ltd. Novel register renaming system using multi-bank physical register mapping table and method thereof
US7809932B1 (en) * 2004-03-22 2010-10-05 Altera Corporation Methods and apparatus for adapting pipeline stage latency based on instruction type
JP2011018120A (ja) * 2009-07-07 2011-01-27 Nec Computertechno Ltd 情報処理装置及びベクトル型情報処理装置
US20120124337A1 (en) * 2010-11-16 2012-05-17 Arm Limited Size mis-match hazard detection
US20120151182A1 (en) * 2010-12-09 2012-06-14 Tomasz Madajczak Performing Function Calls Using Single Instruction Multiple Data (SIMD) Registers

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5481683A (en) 1992-10-30 1996-01-02 International Business Machines Corporation Super scalar computer architecture using remand and recycled general purpose register to manage out-of-order execution of instructions
US5628021A (en) * 1992-12-31 1997-05-06 Seiko Epson Corporation System and method for assigning tags to control instruction processing in a superscalar processor
US6609189B1 (en) 1998-03-12 2003-08-19 Yale University Cycle segmented prefix circuits
US20080077782A1 (en) 2006-09-26 2008-03-27 Arm Limited Restoring a register renaming table within a processor following an exception
US7765384B2 (en) * 2007-04-18 2010-07-27 International Business Machines Corporation Universal register rename mechanism for targets of different instruction types in a microprocessor
US7725439B2 (en) 2007-08-03 2010-05-25 International Business Machines Corporation Handling column renaming as part of schema evolution in a data archiving tool
US8250346B2 (en) 2009-06-04 2012-08-21 Arm Limited Register renaming of a partially updated data granule
TWI389026B (zh) 2009-06-08 2013-03-11 Rdc Semiconductor Co Ltd 暫存器更名表的回復方法與回復系統
US20110238962A1 (en) 2010-03-23 2011-09-29 International Business Machines Corporation Register Checkpointing for Speculative Modes of Execution in Out-of-Order Processors

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030217249A1 (en) * 2002-05-20 2003-11-20 The Regents Of The University Of Michigan Method and apparatus for virtual register renaming to implement an out-of-order processor
US7809932B1 (en) * 2004-03-22 2010-10-05 Altera Corporation Methods and apparatus for adapting pipeline stage latency based on instruction type
US20100205409A1 (en) * 2009-02-04 2010-08-12 Stmicroelectronics (Beijing) R&D Co. Ltd. Novel register renaming system using multi-bank physical register mapping table and method thereof
JP2011018120A (ja) * 2009-07-07 2011-01-27 Nec Computertechno Ltd 情報処理装置及びベクトル型情報処理装置
US20120124337A1 (en) * 2010-11-16 2012-05-17 Arm Limited Size mis-match hazard detection
US20120151182A1 (en) * 2010-12-09 2012-06-14 Tomasz Madajczak Performing Function Calls Using Single Instruction Multiple Data (SIMD) Registers

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020123170A1 (en) * 2018-12-13 2020-06-18 Advanced Micro Devices, Inc. Merged data path for triangle and box intersection test in ray tracing
US11276223B2 (en) 2018-12-13 2022-03-15 Advanced Micro Devices, Inc. Merged data path for triangle and box intersection test in ray tracing

Also Published As

Publication number Publication date
KR101952209B1 (ko) 2019-04-22
CN104049947B (zh) 2018-03-09
JP2014182830A (ja) 2014-09-29
CN104049947A (zh) 2014-09-17
US9588770B2 (en) 2017-03-07
JP6196176B2 (ja) 2017-09-13
DE102014103184A1 (de) 2014-09-18
US20140281415A1 (en) 2014-09-18

Similar Documents

Publication Publication Date Title
US10534616B2 (en) Load-hit-load detection in an out-of-order processor
CN106648843B (zh) 用于改善连续的事务性存储器区的吞吐量的系统、方法和装置
US9250901B2 (en) Execution context swap between heterogeneous functional hardware units
US10417002B2 (en) Hazard detection of out-of-order execution of load and store instructions in processors without using real addresses
KR101952209B1 (ko) 벡터 레지스터 파일의 동적 재명명 기반의 레지스터 재구성
US20190012175A1 (en) Speeding Up Younger Store Instruction Execution After a Sync Instruction
US9256433B2 (en) Systems and methods for move elimination with bypass multiple instantiation table
KR101655713B1 (ko) 이동 제거 연산들에서의 플래그 트래킹을 위한 시스템들 및 방법들
US20100332805A1 (en) Remapping source Registers to aid instruction scheduling within a processor
US20120060016A1 (en) Vector Loads from Scattered Memory Locations
TWI733760B (zh) 記憶體複製指令、處理器、方法及系統
US9652234B2 (en) Instruction and logic to control transfer in a partial binary translation system
US9454371B2 (en) Micro-architecture for eliminating MOV operations
US11068271B2 (en) Zero cycle move using free list counts
US20140304477A1 (en) Object liveness tracking for use in processing device cache
KR102161682B1 (ko) 이미디에이트 핸들링 및 플래그 핸들링을 위한 프로세서 및 방법
US10579384B2 (en) Effective address based instruction fetch unit for out of order processors
US10387162B2 (en) Effective address table with multiple taken branch handling for out-of-order processors

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant