KR102042780B1 - 패킹된 소스 및 목적지 필드들을 포함하는 마이크로-오퍼레이션 - Google Patents

패킹된 소스 및 목적지 필드들을 포함하는 마이크로-오퍼레이션 Download PDF

Info

Publication number
KR102042780B1
KR102042780B1 KR1020130125470A KR20130125470A KR102042780B1 KR 102042780 B1 KR102042780 B1 KR 102042780B1 KR 1020130125470 A KR1020130125470 A KR 1020130125470A KR 20130125470 A KR20130125470 A KR 20130125470A KR 102042780 B1 KR102042780 B1 KR 102042780B1
Authority
KR
South Korea
Prior art keywords
packed
registers
register
source
destination
Prior art date
Application number
KR1020130125470A
Other languages
English (en)
Other versions
KR20140110705A (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 KR20140110705A publication Critical patent/KR20140110705A/ko
Application granted granted Critical
Publication of KR102042780B1 publication Critical patent/KR102042780B1/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/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/22Microcontrol or microprogram 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • 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
    • 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)
  • Mathematical Physics (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)

Abstract

마이크로프로세서에서 레지스터 재명명 이전에 레지스터 패킹을 수행하는 방법 및 장치가 제공된다. 본 발명의 실시 예에 따른 방법은, 하나 또는 그 이상의 명령들로부터 디코딩되는 복수의 마이크로-오퍼레이션들을 수신하는 단계, 마이크로-오퍼레이션들에 포함된 복수의 레지스터들을 복수의 패킹된 레지스터들을 포함하는 패킹된 레지스터 구조로 패킹하는 단계, 그리고 패킹된 레지스터들을 레지스터 재명명을 위해 전송하는 단계로 구성된다. 마이크로-오퍼레이션들에 포함되고, 유효한 소스 또는 목적지 데이터를 갖지 않는 레지스터는 패킹된 레지스터 구조로 패킹되지 않는다.

Description

패킹된 소스 및 목적지 필드들을 포함하는 마이크로-오퍼레이션{MICRO-OPS INCLUDING PACKED SOURCE AND DESTINATION FIELDS}
본 발명의 실시 예들에 따른 방법들 및 장치들은 레지스터 재명명 단계 이전에 마이크로프로세서에서 실행되는 마이크로-오퍼레이션들에서 소스 레지스터 필드들(source register fields) 및 목적지 레지스터 필드들(destination register fields)을 패킹(packing)하는 것에 관한 것이다.
현대의 마이크로프로세서들은, 일반적으로 매크로 명령(macro iunstructions)과 같은 고레벨 명령들을, 내부에 제공되는 디코더들에서 저레벨의 하드웨어에 의해 실행 가능한 마이크로-오퍼레이션들로 분해 또는 번역하여, 데이터 처리의 효율성을 향상시킨다. 디코딩된 마이크로-오퍼레이션들의 수 및 포맷(format)은 고레벨 명령 셋 구조(high-level instruction set architecture) 및 내부 마이크로프로세서 구조에 의존한다.
마이크로-오퍼레이션은 일반적으로 둘 또는 세 개의 소스 오퍼랜드들(operands) 및 하나 또는 두 개의 목적지 오퍼랜드들(operands)을 갖는다. 소스 오퍼랜드들은 소스 데이터를 저장하는 레지스터들을 식별하기 위해 사용된다. 목적지 오퍼랜드들은, 마이크로-오퍼레이션의 연산이 수행된 후에 마이크로-오퍼레이션의 연산 결과가 기입될 레지스터들을 식별하기 위해 사용된다.
특정한 마이크로-오퍼레이션의 소스 및 목적지 레지스터들의 수는, 실행되는 명령의 타입에 의존한다. 예를 들어, 더하기(ADD) 명령은 두 개의 소스 오퍼랜드들 및 하나의 목적지 오퍼랜드를 갖는다. 누적곱(multiply-accumulate) 명령은 세 개의 소스 오퍼랜드들 및 하나 또는 그 이상의 목적지 오퍼랜드들을 갖는다. 분기(branch) 명령은 간접 분기 어드레스(indirect branch address)를 특정하는 하나의 소스 오퍼랜드만을 갖고, 목적지 오퍼랜드를 갖지 않는다. 마이크로-오퍼레이션들이 디코딩되더 출력된 후, 마이크로-오퍼레이션들은 재명명기(renamer)로 전송되고, 재명명기에서 마이크로-오퍼레이션들이 스케줄(schedule)되고 실행되기 전에 마이크로-오퍼레이션들의 레지스터들이 재명명된다. 레지스터 재명명(register renaming)은 읽기 후 쓰기(write-after-read)와 같은 데이터 위험을 방지하기 위해 통상적으로 사용되는 기술이다. 읽기 후 쓰기는 마이크로-오퍼레이션들의 비순차 실행(our-of-order execution)에서 위험을 초래할 수 있다. 재명명 프로세스는 각 레지스터에 대해 재명명 테이블을 체크하는 동작, 다른 또는 추가적인 물리 레지스터들을 할당하여 마이크로-오퍼레이션들의 목적지 레지스터들을 대체하는 동작, 그리고 마이크로-오퍼레이션들 사이의 의존성에 대한 데이터를 기록하는 동작을 포함한다. 재명명된 마이크로-오퍼레이션들은 스케줄러 및 실행부로 전송된다. 실행된 마이크로-오퍼레이션들은 목적지 레지스터 그리고/또는 메모리 또는 스토리지(storage)의 캐시(cache)로 전송된다.
레지스터 재명명은 고속 마이크로프로세서 디자인에서, 시간 및 동작 성능의 병목(bottleneck)이다. 소스 및 목적지 레지스터들의 수가 증가할 때, 이러한 한계는 더 심각해진다. 전체적인 동작 성능을 향상시키기 위하여, 재명명기의 재명명 포트들의 수를 증가시키지 않으면서 사이클 당 재명명되는 마이크로-오퍼레이션들의 수를 최대화하는 것이 도움이 된다.
본 발명은 재명명 프로세스와 연관된 상술된 문제점을 해결하기 위한 것으로, 본 발명의 목적은 재명명기의 재명명 포트들의 수를 증가시키지 않으면서 사이클 당 재명명되는 마이크로-오퍼레이션들의 수를 증가시키는 방법 및 장치를 제공하는 데에 있다.
본 발명의 실시 예에 따른 명령 처리 방법은, 하나 또는 그 이상의 명령들로부터 디코딩되는 복수의 마이크로-오퍼레이션들을 수신하는 단계; 상기 마이크로-오퍼레이션들에 포함된 복수의 레지스터들을 복수의 패킹된 레지스터들을 포함하는 패킹된 레지스터 구조로 패킹하는 단계; 그리고 상기 패킹된 레지스터들을 레지스터 재명명을 위해 전송하는 단계를 포함하고, 상기 마이크로-오퍼레이션들에 포함되고, 유효한 소스 또는 목적지 데이터를 갖지 않는 레지스터는 상기 패킹된 레지스터 구조로 패킹되지 않는다.
실시 예로서, 상기 패킹된 레지스터들을 재명명하는 단계를 더 포함하고, 상기 재명명하는 단계는, 상기 패킹된 레지스터들이 레지스터 재명명을 위해 읽혀지고 쓰여지는 재명명 포트들을 갖는 재명명기를 사용하여 수행되고, 상기 재명명 포트들의 수는, 상기 마이크로-오퍼레이션들이 하나의 사이클에 오퍼랜드들(operands)로 갖도록 허용되는 전채 레지스터들의 수보다 적도록 설정된다.
실시 예로서, 상기 패킹된 레지스터 구조로 패킹되는 상기 레지스터들 각각은 상기 전체 레지스터들 중에서 선택되는 미리 정해진 레지스터들 중에서 선택된다.
실시 예로서, 상기 패킹될 레지스터들 각각은 상기 미리 정해진 레지스터들에 대한 유효성 정보 및 나이 정보에 기반하여 선택된다.
실시 예로서, 상기 패킹된 레지스터 구조는 상기 패킹된 레지스터 구조로 패킹되는 상기 레지스터들 각각에 대한 특성 정보를 더 포함한다.
실시 예로서, 상기 특성 정보는, 상기 레지스터들 각각이 유효한 소스 또는 목적지 정보를 갖는지에 대한 정보; 상기 레지스터들 각각의 식별자; 그리고 상기 마이크로-오퍼레이션들 중 상기 레지스터들 각각을 포함하는 마이크로-오퍼레이션의 식별자 중 적어도 하나를 포함한다.
실시 예로서, 상기 마이크로-오퍼레이션의 식별자는, 상기 마이크로-오퍼레이션을 디코딩한 디코더에 대한 정보를 포함한다.
실시 예로서, 상기 특성 정보는 상기 레지스터들 각각에 대한 나이 정보를 더 포함한다.
실시 예로서, 상기 패킹된 레지스터들의 수가 미리 정해진 수보다 큰지 판별하는 단계를 더 포함하고, 상기 패킹된 레지스터들의 수가 상기 미리 정해진 수보다 크지 않으면, 상기 패킹된 레지스터들은 현재의 사이클에 레지스터 재명명을 위해 전송되고, 상기 패킹된 레지스터들의 수가 상기 미리 정해진 수보다 큰 것으로 판별되면, 상기 복수의 마이크로-오퍼레이션들 중 하나 또는 그 이상의 마이크로-오퍼레이션들에 포함된 하나 또는 그 이상의 레지스터들이 후속 사이클에 레지스터 재명명을 위해 전송된다.
실시 예로서, 상기 미리 정해진 수는, 상기 마이크로-오퍼레이션들이 오퍼랜드들로 갖도록 허용된 전체 레지스터들의 수보다 적다.
실시 예로서, 상기 하나 또는 그 이상의 마이크로-오퍼레이션들은, 상기 복수의 마이크로-오퍼레이션들의 나이들에 기반하여 상기 복수의 마이크로-오퍼레이션들 중에서 선택된다.
실시 예로서, 상기 복수의 레지스터들은 적어도 하나의 소스 레지스터 및 적어도 하나의 목적지 레지스터를 포함하고, 상기 패킹된 레지스터 구조는, 상기 적어도 하나의 소스 레지스터를 패킹함으로써 생성된 적어도 하나의 패킹된 소스 레지스터를 포함하는 패킹된 소스 구조; 그리고 상기 적어도 하나의 목적지 레지스터를 패킹함으로써 생성된 적어도 하나의 패킹된 목적지 레지스터를 포함하는 패킹된 목적지 구조를 포함한다.
실시 예로서, 상기 패킹된 소스 구조는, 상기 적어도 하나의 패킹된 소스 레지스터가 유래된 소스 레지스터에 대한 소스 특성 정보를 더 포함하고, 상기 패킹된 목적지 구조는, 상기 적어도 하나의 패킹된 목적지 레지스터가 유래된 목적지 레지스터에 대한 목적지 특성 정보를 더 포함한다.
실시 예로서, 상기 소스 특성 정보는, 상기 소스 레지스터의 식별자; 그리고 상기 마이크로-오퍼레이션들 중 상기 소스 레지스터를 포함하는 마이크로-오퍼레이션의 식별자 중 적어도 하나를 포함하고, 상기 목적지 특성 정보는, 상기 목적지 레지스터가 유효한 목적지 정보를 갖는지에 대한 정보; 상기 목적지 레지스터의 식별지; 그리고 상기 마이크로-오퍼레이션들 중 상기 목적지 레지스터를 포함하는 마이크로-오퍼레이션의 식별자를 포함한다.
실시 예로서, 상기 소스 특성 정보 및 상기 목적지 특성 정보 중 적어도 하나는 상기 소스 레지스터 및 상기 목적지 레지스터에 대한 나이 정보를 포함한다.
본 발명의 실시 예에 따른 명령 처리 장치는, 하나 또는 그 이상의 명령들로부터 디코딩되는 복수의 마이크로-오퍼레이션들을 수신하고, 상기 마이크로-오퍼레이션들에 포함된 복수의 레지스터들을 복수의 패킹된 레지스터들을 포함하는 패킹된 레지스터 구조로 패킹하고, 그리고 상기 패킹된 레지스터들을 레지스터 재명명을 위해 전송하도록 구성되는 패킹기를 포함하고, 상기 마이크로-오퍼레이션들에 포함되고, 유효한 소스 또는 목적지 데이터를 갖지 않는 레지스터는 상기 패킹된 레지스터 구조로 패킹되지 않는다.
실시 예로서, 상기 패킹된 레지스터들이 재명명을 위해 읽혀지고 쓰여지는 복수의 재명명 포트들을 포함하는 재명명기를 더 포함하고, 상기 재명명 포트들의 수는, 상기 마이크로-오퍼레이션들이 하나의 사이클에 오퍼랜드들로 갖도록 허용된 전체 소스 레지스터들의 수보다 적게 설정된다.
실시 예로서, 상기 전체 레지스터들로부터 선택되는 미리 정해진 레지스터들 중 상기 패킹된 레지스터 구조로 패킹되는 레지스터들을 각각 선택하는 복수의 멀티플렉서들을 더 포함한다.
실시 예로서, 상기 패킹되는 레지스터들 각각은, 상기 미리 정해진 레지스터들에 대한 유효성 정보 및 나이 정보에 기반하여 선택된다.
실시 예로서, 상기 패킹된 레지스터 구조는, 상기 패킹된 레지스터 구조로 패킹되는 상기 레지스터들 각각에 대한 특성 정보를 더 포함한다.
실시 예로서, 상기 특성 정보는, 상기 레지스터들 각각이 유효한 소스 또는 목적지 정보를 갖는지에 대한 정보; 상기 레지스터들 각각의 식별자; 그리고 상기 마이크로-오퍼레이션들 중 상기 레지스터들 각각을 포함하는 마이크로-오퍼레이션의 식별자 중 적어도 하나를 포함한다.
실시 예로서, 상기 마이크로-오퍼레이션의 식별자는 상기 마이크로-오퍼레이션을 디코딩한 디코더에 대한 정보를 포함한다.
실시 예로서, 상기 특성 정보는 상기 레지스터들 각각에 대한 나이 정보를 더 포함한다.
실시 예로서, 상기 패킹된 레지스터들의 수가 미리 정해진 수보다 큰지 판별하는 컨트롤러를 더 포함하고, 상기 패킹된 레지스터들의 수가 상기 미리 정해진 수보다 크지 않으면, 상기 컨트롤러는 상기 패킹된 레지스터들을 현재의 사이클에 레지스터 재명명을 위해 전송하도록 상기 패킹기를 제어하고, 상기 패킹된 레지스터들의 수가 상기 미리 정해진 수보다 큰 것으로 판별되면, 상기 컨트롤러는 상기 복수의 마이크로-오퍼레이션들 중 하나 또는 그 이상의 마이크로-오퍼레이션들에 포함된 하나 또는 그 이상의 레지스터들이 후속 사이클에 레지스터 재명명을 위해 전송하도록 상기 패킹기를 제어한다.
실시 예로서, 상기 미리 정해진 수는, 사익 마이크로-오퍼레이션이 오퍼랜드들로 갖도록 허용된 전체 레지스터들의 수보다 적다.
실시 예로서, 상기 컨트롤러는, 상기 복수의 마이크로-오퍼레이션들의 나이들에 기반하여 상기 복수의 마이크로-오퍼레이션들 중 하나 또는 그 이상의 마이크로-오퍼레이션들을 선택하도록 상기 패킹기를 제어한다.
실시 예로서, 상기 복수의 레지스터들은 적어도 하나의 소스 레지스터 및 적어도 하나의 목적지 레지스터를 포함하고, 상기 패킹된 레지스터 구조는, 상기 적어도 하나의 소스 레지스터를 패킹함으로써 생성된 적어도 하나의 패킹된 소스 레지스터를 포함하는 패킹된 소스 구조; 그리고 상기 적어도 하나의 목적지 레지스터를 패킹함으로써 생성된 적어도 하나의 패킹된 목적지 레지스터를 포함하는 패킹된 목적지 구조를 포함한다.
실시 예로서, 상기 패킹된 소스 구조는, 상기 적어도 하나의 패킹된 소스 레지스터가 유래된 소스 레지스터에 대한 소스 특성 정보를 더 포함하고, 상기 패킹된 목적지 구조는, 상기 적어도 하나의 패킹된 목적지 레지스터가 유래된 목적지 레지스터에 대한 목적지 특성 정보를 더 포함한다.
실시 예로서, 상기 소스 특성 정보는, 상기 소스 레지스터의 식별자; 그리고 상기 마이크로-오퍼레이션들 중 상기 소스 레지스터를 포함하는 마이크로-오퍼레이션의 식별자 중 적어도 하나를 포함하고, 상기 목적지 특성 정보는, 상기 목적지 레지스터가 유효한 목적지 정보를 갖는지에 대한 정보; 상기 목적지 레지스터의 식별지; 그리고 상기 마이크로-오퍼레이션들 중 상기 목적지 레지스터를 포함하는 마이크로-오퍼레이션의 식별자를 포함한다.
실시 예로서, 상기 소스 특성 정보 및 상기 목적지 특성 정보 중 적어도 하나는 상기 소스 레지스터 및 상기 목적지 레지스터에 대한 나이 정보를 포함한다.
상술된 본 발명의 실시 예들에 따르면, 재명명 이전에 소스 레지스터들 및 목적지 레지스터들을 패킹된 레지스터 구조로 패킹하는 패킹기를 구비한 마이크로프로세서는, 재명명 포트들의 수를 증가시키지 않고 더 많은 마이크로-오퍼레이션들을 처리하여 처리 시간에 영향을 준다. 동시에, 소스 레지스터들 및 목적지 레지스터들의 수를 제한함으로써 또는 패킹된 레지스터 구조로 패킹되는 미리 정해진 소스 레지스터들 및 목적지 레지스터들을 지정함으로써, 마이크로-오퍼레이션들을 처리하는 추가적인 효율성이 달성된다.
도 1은 본 발명의 실시 예에 따른 마이크로프로세서의 일부를 보여준다.
도 2는 본 발명의 실시 예에 따라 소스 레지스터들 및 목적지 레지스터들을 패킹된 레지스터 구조로 패킹하도록 구성되는 마이크로프로세서의 일부를 보여준다.
도 3은 본 발명의 실시 예에 따라 소스 레지스터들 및 목적지 레지스터들의 패킹 시에 멀티플렉서들을 사용하는 마이크로프로세서의 일부를 보여준다.
도 4는 본 발명의 실시 예에 따른 레지스터 패킹의 흐름도이다.
본 발명의 실시 예들이, 첨부된 도면들을 참조하여, 해당 기술 분야에 통상적인 기술을 가진 사람들(이하, 당업자)에게 쉽게 이해될 수 있도록 상세하게 설명된다. 본 발명의 기술적 사상은 여기에 게시된 실시 예들에 한정되지 않고, 다양한 형태로 응용될 수 있다. 잘 알려진 부분들에 대한 상세한 설명은 간결한 설명을 위하여 생략될 수 있다. 유사한 참조 번호들은 유사한 구성 요소들을 참조할 수 있다.
사전 고려 사항(preliminary consideration)으로서, 마이크로프로세서의 동작 성능을 향상시키기 위하여, 사이클 당 재명명되는 레지스터들을 포함하는 마이크로-오퍼레이션들의 수를 감소시키거나 디코딩 폭을 감소시키는 방법, 마이크로-오퍼레이션들의 소스 및 목적지 필드들의 수를 감소시키는 방법, 레지스터들을 재명명하는 추가 사이클을 사용하는 방법, 전력 및 디자인 복잡도에 영향을 주는 타이밍에 부합하는 커스텀(custom) 재명명 회로를 제조하는 방법 등이 제안될 수 있다. 그러나, 이러한 방법들은 소스 레지스터들 및 목적지 레지스터들의 최악의 경우의 수에 맞추어 재명명기의 재명명 포트들의 사이즈롤 결정하는 구성을 포함하며, 이는 마이크로프로세서의 타이밍 또는 구조적 동작 성능에 영향을 줄 수 있다.
레지스터 재명명의 관점에서 마이크로프로세서의 전체적인 동작 성능을 최적화하기 위하여, 이하의 실시 예들에서 설명되는 바와 같이, 재명명 포트들의 수를 증가시키지 않으면서 사이클 당 소스 레지스터들 및 목적지 레지스터들의 최적의 수를 갖는 재명명기를 제공함으로써, 사이클 당 재명명되는 마이크로-오퍼레이션들의 수를 최대화하는 것이 고려된다.
도 1은 본 발명의 실시 예에 따른, 복수의 디코더들(0, 1, 2) 및 재명명기(100)를 포함하는 마이크로프로세서(10)의 일부를 보여준다. 도 1에 도시된 바와 같이, 디코더들은 메모리 또는 캐시(미도시)로부터 수신되는 하나 또는 그 이상의 명령들(미도시)을 디코딩함으로써 마이크로-오퍼레이션들을 생성한다. 재명명기(100)는 재명명 로직을 이용하여 마이크로-오퍼레이션들의 소스 레지스터들 그리고/또는 목적지 레지스터들을 재명명한다. 마이크로프로세서(100는 3의 디코딩 폭을 갖는다. 디코딩 폭은 하나의 사이클에 디코딩되는 마이크로-오퍼레이션들의 수를 가리킨다. 재명명기(100)는 마이크로-오퍼레이션들의 소스 레지스터 필드들 및 목표 레지스터 필드들의 총 수에 대응하는 18개의 재명명 포트들을 가질 수 있다. 즉, 마이크로프로세서(10)의 마이크로-오퍼레이션들의 포맷은 네 개의 소스 레지스터들(A, B, C, D) 및 두 개의 목적지 레지스터들(A, B)을 지원하며, 한 사이클에 생성되는 레지스터들의 총 수는 12개의 소스 레지스터들 및 6개의 목적지 레지스터들일 수 있다. 이러한 디코더 및 재명명기 구조는 재명명기(100)가 재명명을 수행하는 18 개의 재명명 포트들을 가질 것을 필요로 할 수 있다.
도 2는 본 발명의 실시 예에 따른, 복수의 디코더들(0, 1, 2), 패킹기(200), 재명명기(300), 그리고 컨트롤러(400)를 포함하는 마이크로프로세서(20)의 일부를 보여준다. 마이크로프로세서(20)의 디코더들(0, 1, 2) 및 재명명기(300)는 도 1의 마이크로프로세서(10)의 디코더들(0, 1, 2) 및 재명명기(100)와 유사할 수 있다. 그러나, 본 발명의 실시 예에 따른 마이크로프로세서(20)는, 레지스터들이 재명명되기 전에, 디코더들(0, 1, 2)에 의해 디코딩된 마이크로-오퍼레이션들의 소스 레지스터 필드들 및 목적지 레지스터 필드들을 패킹(packing)하도록 구성된다. 여기에서, 마이크로-오퍼레이션들의 소스 레지스터 필드들의 패킹 및 목적지 레지스터 필드들의 패킹은 각각 소스 레지스터들의 패킹 및 목적지 레지스터들의 패킹으로도 참조될 수 있다. 패킹기(200)는, 레지스터들이 재명명기(300)에서 재명명되기 전에, 디코더들(0, 1, 2)에 의해 디코딩된 마이크로-오퍼레이션들의 소스 레지스터들 및 목적지 레지스터들을 패킹된 소스 구조(210) 및 패킹된 목적지 구조(220)로 각각 패킹하도록 구성된다. 패킹된 소스 구조(210) 및 패킹된 목적지 구조(220)는 이하에서 패킹된 레지스터 구조로 포괄적으로 참조될 수 있다. 컨트롤러(400)는 후술되는 바와 같이 적어도 패킹기(200)의 출력 동작을 제어하도록 구성된다. 여기에서, 패킹된 레지스터 구조로 패킹되는 소스 레지스터들 및 목적지 레지스터들 각각은 유효한 소스 또는 목적지 데이터를 갖는 레지스터일 수 있다. 즉, 마이크로-오퍼레이션들에 포함되고 유효한 소스 또는 목적지 데이터를 갖지 않는 레지스터는 패킹된 레지스터 구조로 패킹되지 않는다.
본 발명의 실시 예들에서, 도 2에 도시된 마이크로프로세서(200)는, 도 1에 도시된 마이크로프로세서(10)와 마찬가지로 디코더들(0, 1, 2)로 3의 디코딩 폭을 갖고, 각 사이클에서 매크로 명령들과 같은 복잡한 명령들을 마이크로-오퍼레이션들로 디코딩한다. 또한, 각 디코더의 마이크로-오퍼레이션 포맷은, 도 1에 도시된 마이크로프로세서(10)와 같이, 네 개의 소스 레지스터들(A, B, C, D) 및 두 개의 목적지 레지스터들(A, B)을 지원한다. 레지스터들(A, B, C, D)은 물리 레지스터들과 대응하는 마이크로-오퍼레이션들에서 식별되는 구조 레지스터들로 참조되고, 구조 레지스터들은 재명명기(300)의 재명명에 의해 물리 레지스터들과 사상(mapping)된다. 본 발명의 실시 예에서 사이클 당 세 개의 마이크로-오퍼레이션들이 디코딩되므로, 총 12개의 소스 레지스터들 및 6개의 목적지 레지스터들이 한 사이클 구간에 세 개의 디코더들(0, 1, 2)에 의해 생성될 수 있다. 본 발명의 실시 예에서, 패킹된 소스 구조(210)는 최대 8개의 패킹된 소스 레지스터들을 수용하는 8개의 엔트리들을 갖고, 패킹된 목적지 구조(220)는 최대 3개의 패킹된 목적지 레지스터들을 수용하는 3개의 엔트리들을 갖는다.
도 2에서, 재명명기(300)에서 재명명이 수행되기 전에, 8개의 소스 레지스터들 및 3개의 목적지 레지스터들이 패킹된 레지스터로 패킹된다. 더 상세하게는, 3개의 마이크로-오퍼레이션들의 8개의 소스 레지스터들(A, B, C, D, B, A, C, D)이 패킹되어, 8개의 패킹된 소스 레지스터들의 8개의 엔트리들(패킹된 소스 0 내지 패킹된 소스 7)을 갖는 패킹된 소스 구조(210)를 형성한다. 마찬가지로, 세 개의 마이크로-오퍼레이션들의 세 개의 목적지 레지스터들(A, B, A)은 패킹되어, 3개의 패킹된 목적지 레지스터들의 3개의 엔트리들(패킹된 목적지 0 내지 패킹된 목적지 2)을 갖는 패킹된 목적지 구조(220)를 형성한다. 패킹된 레지스터 구조로 패킹된 소스 레지스터들 및 목적지 레지스터들은 각각 마이크로-오퍼레이션들의 소스 필드들 및 목적지 필드들로부터 제공된다. 소스 레지스터들 및 목적지 레지스터들의 패킹은 동시에 또는 서로 다른 타이밍에 수행될 수 있다.
마이크로-오퍼레이션들의 패킹된 소스 레지스터들 및 패킹된 목적지 레지스터들의 총 수가 재명명 포트들의 미리 정해진 수 이내이면, 본 발명의 실시 예에 따라, 패킹된 소스 레지스터들 및 패킹된 목적지 레지스터들은 컨트롤러(400)의 제어 하에 동일한 사이클에 재명명기(300)로 전송되어 재명명된다. 여기에서, 포트들의 미리 정해진 수는 시스템에서 허용되는 재명명 포트들의 최대 수일 수 있다. 패킹된 소스 레지스터들 및 패킹된 목적지 레지스터들의 수가 재명명 포트들의 미리 정해진 수보다 많으면, 본 발명의 실시 에에 따라, 디코더들(0, 1, 2)로부터 수신된 마이크로-오퍼레이션들 중 하나 또는 그 이상의 마이크로-오퍼레이션들이 후속 사이클에 재명명기(300)로 전송되어 재명명될 수 있다. 후속 사이클에 재명명기(300)로 전송되는 마이크로-오퍼레이션들은 마이크로-오퍼레이션들의 나이(age)에 따라 선택될 수 있다.
도 2에 도시된 바와 같이, 본 발명의 실시 예에 따라 시스템이 허용하는 소스 레지스터들 및 목적지 레지스터들의 재명명 포트들의 최대 수는 각각 8 및 3으로 정해질 수 있다. 8 및 3의 수들은, 소스 레지스터들 및 목적지 레지스터들의 최대 수, 즉 하나의 사이클 구간에 세 개의 디코더들(0, 1, 2)에 의해 생성될 수 있는 수인 12 및 6보다 적을 수 있다. 하나의 사이클에 세 개의 디코더들(0, 1, 2)에 의해 생성될 수 있는 소스 레지스터들 및 목적지 레지스터들의 최대 수는, 디코더들(0, 1, 2)의 디코딩 폭에 의해 허용되는 소스 필드들 및 목적지 필드들의 수와 동일할 수 있다.
도 2에서, 디코더(0)에 의해 디코딩되는 첫 번째 마이크로-오퍼레이션은 오퍼랜드들로서 4개의 소스 레지스터들 및 2개의 목적지 레지스터들을 갖다. 두 번째 마이크로-오퍼레이션은 오퍼랜드들로서 하나의 소스 레지스터를 갖고, 목적지 레지스터를 갖지 않는다. 세 번째 마이크로-오퍼레이션은 오퍼랜드들로서 세 개의 소스 레지스터들 및 하나의 목적지 레지스터를 갖는다. 세 개의 디코더들(0, 1, 2)로부터의 패킹된 소스 레지스터들의 총 수는 8이고, 패킹된 목적지 레지스터들의 총 수는 3이며, 이는 시스템에서 허용되는 재명명 포트들의 최대수와 동일하다. 따라서, 패킹된 소스 레지스터들 및 패킹된 목적지 레지스터들은 하나의 사이클에 재명명기(300)로 전송되어 재명명될 수 있다. 이러한 방식으로, 각 사이클에 재명명기(300)로 전송되는 소스 레지스터들 및 목적지 레지스터들의 수들이 최적화된다.
본 발명의 실시 예에 따르면, 복수의 비트들이 패킹된 소스 구조(210) 및 패킹된 목적지 구조(220)에 추가되어, 도 2에 도시된 바와 같이, 패킹된 소스 구조(210) 및 패킹된 목적지 구조(220)의 엔트리들로 각각 수신되는 패킹된 소스 레지스터의 특성 및 패킹된 목적지 레지스터의 특성을 가리킨다. 특성 비트들은, 후술되는 바와 같이, 유효성 비트들, 디코더 식별자(ID) 비트들, 소스 식별자(ID) 비트들, 나이 마스크(age mask) 비트들 등을 포함할 수 있다. 따라서, 도 2에 도시된 바와 같이, 각 패킹된 소스 레지스터의 특성들은 하나의 유효성 비트, 하나의 디코더 ID 비트, 하나의 소스 ID 비트 및 나이 마스크 벡터(age mask vector)를 위한 복수의 비트들로 표현된다. 또한, 도 2는 각 패킹된 목적지 레지스터의 특성들은 나이 마스크 벡터 비트 없이, 하나의 유효성 비트, 하나의 디코더 ID 비트 및 하나의 목적지 비트로 표현되는 것을 보여준다. 이하에서, 특성 비트들의 기능들이 설명된다.
패킹된 소스 레지스터들의 유효성 비트들 각각은, 패킹된 소스 레지스터가 유래한 소스 레지스터가 유효한지 또는 무효한 지(예를 들어, '1'은 유효이고 '0'은 무효)를 가리킨다. 도 2를 참조하면, 패킹된 소스 구조(210)의 8개의 엔트리들의 각 유효성 비트는 유효한 것으로 표시되어 있다. 이는, 패킹된 소스 레지스터에 대응하고 마이크로-오퍼레이션에 포함된 각 소스 레지스터가 유효한 소스 데이터를 저장하고 있음을 나타낸다. 마찬가지로, 패킹된 목적지 레지스터들의 유효성 비트들 각각은, 패킹된 목적지 레지스터가 유래한 목적지 레지스터가 유효한지 또는 무효한지를 가리킨다. 도 2를 참조하면, 패킹된 레지스터 구조(220)의 3개의 엔트리들의 각 유효성 비트는 유효한 것으로 표시되어 있다. 이는, 패킹된 목적지 레지스터에 대응하고 마이크로-오퍼레이션에 포함된 각 목적지 레지스터가 유효한 데이터를 저장하고 있음을 나타낸다.
디코더 ID 비트들은 각각 패킹된 레지스터들이 유래한 디코더들을 식별하도록 제공된다. 도 2에서, 첫 네 개의 패킹된 소스 레지스터들 각각의 디코더 ID는 '0'이고, 패킹된 소스 레지스터들의 첫 네 개의 엔트리들은 디코더(0)로부터 유래하였음을 나타낸다. 마찬가지로, 패킹된 목적지 레지스터들의 디코더 ID 비트들은 각각 패킹된 목적지 레지스터들의 기원을 식별하도록 제공된다. 다른 실시 예로서, 디코더 ID 비트들은 각각 마이크로-오퍼레이션들의 ID들을 가리키고, 패킹된 소스 구조(210) 또는 패킹된 목적지 구조(220)로 각각 패킹된 소스 레지스터들 또는 목적지 레지스터들에 사용될 수 있다.
패킹된 소스 레지스터들의 소스 레지스터 ID 비트들은 패킹된 소스 레지스터들이 각각 유래한 소스 레지스터들을 식별하도록 제공된다. 도 2에서, 첫 네 개의 패킹된 소스 레지스터들의 소스 레지스터 ID들은 각각 A, B, C, D이고, 디코더에서 소스 레지스터들의 ID들이 각각 A, B, C, D임을 가리킨다. 마찬가지로, 목적지 레지스터 ID 비트들은 패킹된 목적지 레지스터들이 유래하는 목적지 레지스터들을 식별하도록 제공된다.
나이 마스크 벡터를 위한 복수의 비트들은 패킹된 소스 레지스터들 각각에 제공된다. 각 나이 마스크 벡터의 비트들의 수는 패킹된 목적지 레지스터들의 수에 대응하고, 나이 마스크 멕터의 각 비트는, 패킹된 목적지 구조(220)의 패킹된 목적지 레지스터들 각각에 대한 패킹된 소스 구조(210)의 대응하는 패킹된 소스 레지스터의 나이 특성을 가리킬 수 있다. 즉, 나이 마스크 벡터들은 패킹된 목적지 레지스터들에 대한 패킹된 소스 레지스터들의 나이들을 추적할 수 있다. 나이 마스크 벡터의 각 비트는 패킹된 목적지 레지스터에 대한 패킹된 소스 레지스터의 나이를 고려하여 설정될 수 있다. 패킹된 소스 레지스터가 비트 위치에 대응하는 패킹된 목적지 레지스터보다 젊을 때(또는 늙을 때), 비트가 '1' (또는 '0')으로 설정될 수 있다. 나이 마스크 벡터는 재명명기(300)의 재명명 로직에 의해 사용되어, 그룹간(inter-group) 소스-목적지 의존성(source-to-destination dependency)을 계산할 수 있다. 예를 들어, 패킹된 소스 구조(210)의 첫 번째 패킹된 소스 레지스터(A)의 나이 마스크 벡터는 '000'이며, 패킹된 목적지 구조(220)에 세 개의 패킹된 목적지 레지스터들이 존재하고 그리고 각 패킹된 목적지 레지스터가 첫 번째 패킹된 소스 레지스터보다 어림(younger)을 나타낸다. 도 2에서, 나이 마스크 벡터들은 패킹된 소스 구조(210)에만 포함된다. 그러나, 본 발명의 실시 예에 따르면, 나이 마스크 벡터는 패킹된 소스 구조(210) 대신에 패킹된 목적지 구조(220)에 포함되어, 패킹된 소스 레지스터들에 대한 패킹된 목적지 레지스터들의 나이들을 가리킬 수 있다. 또한, 본 발명의 실시 예에 따르면, 나이 마스크 벡터들은 패킹된 소스 구조(210) 및 패킹된 목적지 구조(220) 모두에 포함될 수 있다.
상술된 특성 비트들은 유효성 비트들, 디코더 ID 비트들, 소스 레지스터 ID 비트들, 그리고 나이 마스크 벡터 비트들에 한정되지 않는다. 본 발명의 실시 예에 따르면, 추가적인 비트들이 도 2의 패킹된 레지스터 구조에 추가되어, 패킹된 레지스터들의 다른 특성들을 가리킬 수 있다. 예를 들어, 소스 레지스터들 및 목적지 레지스터들에 저장된 물리 레지스터들의 ID들이 도 2의 패킹된 레지스터 구조에 추가될 수 있다.
본 발명의 실시 예에 따른 재명명 전 패킹(packing-before-renaming) 접근법을 이용하여 재명명기(300)로 전송되는 소스 레지스터들 및 목적지 레지스터들의 수들의 최적화는, 하나의 사이클에 더 많은 마이크로-오퍼레이션들이 재명명되도록 함으로써, 더 뛰어난 효율성 및 더 높은 구조 성능을 초래한다.
도 3은 본 발명의 실시 예에 따른, 도 2의 마이크로프로세서(20)와 동일한 구조에 복수의 멀티플렉서들(MUX, A~K)을 포함하는 마이크로프로세서(30)의 일부를 보여준다. 도 3에서, 패킹 소스 구조(210)에 결합된 디코더들(0~2)은 패킹된 목적지 구조(220)에 결합된 디코더들(0~2)과 동일한 디코더들이며, 간결한 설명을 위하여 별도로 표시되어 있다. 도 3에서, 재명명기(300) 및 컨트롤러(400)는 간결한 설명을 위하여 생략되어 있다. 본 발명의 실시 예에서, 8개의 소스 패킹 MUX (A~H)가 각각 패킹될 소스 레지스터들을 선택하도록 사용되고, 3개의 목적지 패킹 MUX (I~K)가 각각 패킹될 목적지 레지스터들을 선택하도록 사용된다. 더 상세하게는, 레지스터 패킹을 위하여, 8개의 소스 패킹 MUX (A~H) 각각은, 하나의 사이클 구간에 3개의 디코더들(0, 1, 2)에 의해 생성되는 전체 소스 레지스터들 중 미리 정해진 수 까지의 소스 레지스터들을 수신하고, 수신된 레지스터들 중 하나를 선택하여 패킹된 소스 구조(210)의 엔트리를 형성하도록 구성된다. 3개의 목적지 패킹 MUX (I~K) 각각은, 하나의 사이클 구간에 세 개의 디코더들(0, 1, 2)에 의해 생성되는 전체 목적지 레지스터들 중 미리 정해진 수 까지의 목적지 레지스터들을 수신하고, 수신된 레지스터들 중 하나를 선택하여 패킹된 목적지 구조(220)의 엔트리를 형성하도록 구성된다. 더 상세하게는, 각 MUX는 디코더들(0~2) 중 두 개에 결합되어 정해진 수 까지의 레지스터들을 수신하고, 수신된 레지스터들 중 하나의 레지스터를 선택하여 다른 MUX에 의해 선택되는 레지스터들과 함께 패킹되도록 출력할 수 있다.
본 발명의 다른 실시 예에 따르면, 패킹 MUX (A~K) 각각은 4개의 레지스터들(A~D) 중 특정한 레지스터들에만 할당될 수 있다(미도시). 예를 들어, 소스 패킹 MUX (A)는 각 디코더의 소스 레지스터들(A, B)에만 할당되어 소스 레지스터들(A, B)만을 수신하여 선택하고, 소스 패킹 MUX (B)는 소스 레지스터들(C, D)에만 할당될 수 있다. 본 발명의 다른 실시 예에 따르면, 각 패킹 MUX (A~K) 각각은 디코더들(0~2) 중 특정한 디코더에만 할당될 수 있다(미도시). 예를 들어,소스 패킹 MUX (A)는 디코더(0)에 의해 사용되는 소스 레지스터들만을 수신하도록 구성될 수 있다.
도 3에서, 소스 레지스터들의 패킹 및 목적지 레지스터들의 패킹은 동시에 병렬적으로 수행되어, 발생 가능한 MUX 지연을 최소화할 수 있다.
도 3에서, 각 MUX에 입력되는 레지스터들의 수는 상술된 바와 같이 한정된다. 도 3은 12개의 소스 레지스터들 및 6개의 목적지 레지스터들을 8개의 패킹된 소스 레지스터들(패킹된 소스 0 내지 패킹된 소스 7) 및 3개의 패킹된 목적지 레지스터들(패킹된 목적지 0 내지 패킹된 목적지 2)로 패킹하는 스킴을 구체적으로 보여준다. 도 3에 도시된 바와 같이, 소스 패킹 MUX (A~H) 각각은 소스 레지스터들의 수를 12 내지 1에서 5 내지 1로 감소시키며, 이는 패킹 소스 레지스터들을 위한 각 MUX가 5개의 패킹되지 않은 소스 레지스터들을 수신하고, 5개의 패킹되지 않은 소스 레지스터들 중 하나를 선택하여 패킹된 소스 구조(210)의 엔트리를 형성함을 나타낸다. 마찬가지로, 목적지 MUX (I~K) 각각은 목적지 레지스터들의 수를 6 내지 1에서 4 내지 1로 감소시키며, 이는 패킹 목적지 레지스터들을 위한 각 MUX가 4개의 패킹되지 않은 목적지 레지스터들을 수신하고, 4개의 패킹되지 않은 목적지 레지스터들 중 하나를 선택하여 패킹된 목적지 구조(220)의 엔트리를 형성함을 나타낸다. 패킹된 소스 구조(210) 및 패킹된 목적지 구조(220)의 스킴은, 구조적 성능의 저하 없이, 패킹 MUX에서의 선택 시간을 감소시킬 수 있다.
본 발명의 실시 예에 따르면, 패킹 MUX (A~K) 각각은 패킹될 소스 레지스터 또는 목적지 레지스터의 선택에 우선 순위 로직(prioritization logic)을 적용할 수 있다. 예를 들어, 소스 패킹 MUX (B)는 디코더(0)로부터 3개의 소스 레지스터들(B, C, D) 및 디코더(1)로부터의 2개의 소스 레지스터들(A, B)로 구성된 5개의 소스 레지스터들의 입력을 수신할 수 있다. 우선 순위 로직을 이용하여, 소스 패킹 MUX (B)는 5개의 소스 레지스터들 중 하나를 선택하고, 선택된 소스 레지스터를 패킹을 위해 출력할 수 있다. 우선 순위 로직은, 패킹 MUX (A~K) 각각에 입력되는 소스 레지스터들 및 목적지 레지스터들에 대한 유효성 wdj보 및 나이 정보 중 적어도 하나에 기반하여 설정될 수 있다.
패킹 MUX (B)의 선택을 위한 예시적인 우선 순위 로직은 다음과 같다.
(a) 디코더(0)의 소스 레지스터(B)를 선택 = 디코더(0)의 소스 레지스터(B)가 유효 & 디코더(0)의 소스 레지스터(A)가 유효
(b) 디코더(0)의 소스 레지스터(C)를 선택 = 디코더(0)의 소스 레지스터(C)가 유효 & 디코더(0)의 소스 레지스터(A) 및 디코더(0)의 소스 레지스터(B) 중 정확히 하나가 유효
(c) 디코더(0)의 소스 레지스터(D)를 선택 = 디코더(0)의 소스 레지스터(D)가 유효 & 디코더(0)의 소스 레지스터(A), 디코더(0)의 소스 레지스터(B) 및 디코더(0)의 소스 레지스터(C) 중 정확히 하나가 유효
(d) 디코더(1)의 소스 레지스터(A)를 선택 = 디코더(1)의 소스 레지스터(A)가 유효 & 디코더(0)의 소스 레지스터(A), 디코더(0)의 소스 레지스터(B), 디코더(0)의 소스 레지스터(C) 및 디코더(0)의 소스 레지스터(D) 중 정확히 하나가 유효
(e) 디코더(1)의 소스 레지스터(B)를 선택 = 디코더(1)의 소스 레지스터(B)가 유효 & ((디코더(0)의 소스 레지스터(A)가 무효 & 디코더(0)의 소스 레지스터(B), 디코더(0)의 소스 레지스터(C), 디코더(0)의 소스 레지스터(D) 및 디코더(1)의 소스 레지스터(A) 중 정확히 하나가 유효) | (디코더(0)의 소스 레지스터(A)가 유효 & 디코더(0)의 소스 레지스터(B), 디코더(0)의 소스 레지스터(C), 디코더(0)의 소스 레지스터(D) 및 디코더(1)의 소스 레지스터(A) 모두가 무효))
마이크로-오퍼레이션들의 소스 레지스터들 및 목적지 레지스터들 중 어느 것이 패킹된 소스 구조(210) 및 패킹된 목적지 구조(210)로 패킹되는지 사전에 결정함으로써, 도 2에 도시된 특성 비트들의 양이 감소되고, 마이크로-오퍼레이션들의 파이프라에서 언패킹(unpacking) 동작의 속도가 증가될 수 있다.
도 4는 본 발명의 실시 예에 따라, 마이크로프로세서에서 레지스터 재명명 이전의 레지스터 패킹을 보여주는 흐름도이다.
도 4에 도시된 바와 같이, 100 동작에서, 마이크로프로세서의 하나 또는 그 이상의 디코더들에서 복잡한 명령이 마이크로-오퍼레이션들로 디코딩된다. 200 동작에서, 디코딩된 마이크로-오퍼레이션들의 소스 레지스터들 및 목적지 레지스터들이 각각 패킹된 소스 구조 및 패킹된 목적지 구조로 패킹기에 의해 패킹되어 패킹된 레지스터 구조를 형성한다. 여기에서, 소스 레지스터들 및 목적지 레지스터들 각각은 유효한 소스 또는 목적지 정보를 갖는 레지스터일 수 있다.
200 동작은, 하나의 사이클 구간에 디코더들에 의해 생성될 수 있는 전체 소스 레지스터들 중 마이크로-오퍼레이션들의 미리 정해진 수의 소스 레지스터들이 다중화되어(multiplexed), 하나의 레지스터가 다른 패킹 MUX에 의해 선택되는 레지스터들과 함께 패킹되기 위해 출력되는 추가 동작(210)을 포함할 수 있다.
200 동작은, 복수의 비트들이 패킹된 소스 구조 및 패킹된 목적지 구조에 추가되어, 패킹된 소스 구조 및 패킹된 목적지 구조의 각 엔트리들로 수신되는 패킹된 소스 레지스터들의 특성들 및 패킹된 목적지 레지스터들의 특성들을 가라키는 추가 동작(220)을 포함할 수 있다. 이러한 특성 비트들은, 도 2에 도시된 바와 같이, 패킹된 소스 구조(210) 및 패킹된 목적지 구조(220)의 각 엔트리들로 수신되는 패킹된 소스 레지스터들 및 패킹된 목적지 레지스터들의 특성들을 가리킬 수 있다. 특성 비트들은 유효성 비트들, 디코더 ID 비트들, 소스 ID 비트들, 나이 마스크 벡터 비트들 등을 포함할 수 있으나, 이들에 한정되지 않는다. 패킹된 소스 구조 및 패킹된 목적지 구오의 각 엔트리의 특성들은 하나의 유효성 비트, 하나의 디코더 ID 비트, 하나의 소스 ID 비트 그리고/또는 복수의 나이 마스크 벡터 비트들로 표현될 수 있다. 상술된 특성 비트들은 유효성 비트들, 디코더 ID 비트들, 소스 ID 비트들, 그리고 나이 마스크 벡터 비트들로 한정되지 않는다. 추가 비트들이 패킹된 레지스터 구조에 추가되어, 패킹된 레지스터들의 다른 특성들을 가리킬 수 있다. 소스 레지스터들 및 목적지 레지스ㅌ어들에 저장된 물리 레지스터들의 ID를 가리키는 추가 비트가 추가될 수 있다.
300 동작에서, 패킹된 소스 레지스터들 및 패킹된 목적지 레지스터들의 수가 재명명기에 제공되는 재명명 포트들의 미리 정해진 수보다 많은지 판별된다. 패킹된 레지스터들의 수가 미리 정해진 수와 같거나 그보다 적은 것으로 판별되면, 패킹된 소스 레지스터들 및 패킹된 목적지 레지스터들은 재명명기의 동일한 사이클에 재명명기로 전송된다.
반면, 패킹된 레지스터들의 수가 미리 정해진 수보다 큰 것으로 판별되면, 디코더들로부터 수신된 마이크로-오퍼레이션들 중 하나 또는 그 이상의 선택된 마이크로-오퍼레이션의 하나 또는 그 이상의 패킹된 소스 레지스터들 및 패킹된 목적지 레지스터들이 후속 사이클에 재명명기로 전송되고, 하나 또는 그 이상의 마이크로-오퍼레이션들의 패킹된 래지스터들이 재명명될 수 있다. 재명명 포트들의 미리 정해진 수는, 시스템에서 허용되는 재명명 포트들의 최대 수일 수 있다.
400 동작에서, 재명명기로 전송되는 패킹된 레지스터들은 재명명되고, 스케줄 및 실행을 위해 전송될 수 있다.
상술된 본 발명의 실시 예들에 따르면, 재명명 이전에 소스 레지스터들 및 목적지 레지스터들을 패킹된 레지스터 구조로 패킹하는 패킹기를 구비한 마이크로프로세서는, 재명명 포트들의 수를 증가시키지 않고 더 많은 마이크로-오퍼레이션들을 처리하여 처리 시간에 영향을 준다. 동시에, 소스 레지스터들 및 목적지 레지스터들의 수를 제한함으로써 또는 패킹된 레지스터 구조로 패킹되는 미리 정해진 소스 레지스터들 및 목적지 레지스터들을 지정함으로써, 마이크로-오퍼레이션들을 처리하는 추가적인 효율성이 달성된다.
상술된 실시 예들은 예시적인 것이며, 본 발명의 기술적 사상을 한정하지 않는다. 예를 들어, 패킹된 구조 뿐 아니라 패킹되지 않은 구조의 소스 레지스터들 및 목적지 레지스터들의 수는 임의의 수일 수 있다. 또한, 디코더들 및 패킹 MUX의 수는 임의의 수일 수 있다. 또한, 당업자가 용이하게 이해할 수 있는 바와 같이, 도면의 소스 및 목적지는 각각 소스 레지스터들 및 목적지 레지스터들의 의미를 포함한다. 또한, 본 발명의 다양한 실시 예들에 따른 프로세서들은, 마이크로프로세서, 중앙 처리 장치(CPU), 그래픽 프로세서(GPU), 멀티코어 프로세서를 포함하는 데이터 프로세싱 유닛과 같은 임의의 타입의 프로세서들일 수 있다. 게시된 실시 예들 및 이들의 변경, 최적화, 추가 및 개선은 본 발명의 범위에 속한다.
상술된 실시 예들에서, 디코더, 패킹기, 재명명기, 패킹 MUX, 컨트롤러 등과 같은 마이크로프로세서들(20, 30)의 구성 요소들을 설명하기 위해 사용된 용어들은, 소프트웨어 또는 특성한 동작을 수행하는 집적 회로와 같은 하드웨어를 가리킬 수 있으나, 이들로 한정되지는 않는다. 이러한 구성 요소들에 제공되는 기능들은 더 적은 수의 구성 요소들 또는 하나의 구성 요소에 결합되거나, 또는 추가 구성 요소들에 분산될 수 있다. 또한, 이러한 구성 요소들은 통신 시스템에서 하나 또는 그 이상의 연산을 수행하도록 구현될 수 있다.
당업자는 본 발명의 기술적 사상으로부터 멀어지거나 분리되지 않고, 본 발명의 형태 및 상세한 구성을 변경 및 응용할 수 있음이 이해될 것이다. 따라서, 본 발명의 범위는 실시 예들의 상세한 설명에 의해 한정되지 않고, 첨부된 청구 범위들 및 본 발명의 기술적 사상에 포함되는 다양한 변경들에 의해 정해져야 한다.
20; 프로세서
200; 패킹기
210; 패킹된 소스 레지스터 구조
220; 패킹된 목적지 레지스터 구조
300; 재명명기
400; 컨트롤러

Claims (32)

  1. 명령 처리 방법에 있어서:
    하나 또는 그 이상의 명령들로부터 디코딩되는 복수의 마이크로-오퍼레이션들을 수신하는 단계;
    재명명기의 재명명 포트들의 미리 정해진 수에 기반하여 상기 마이크로-오퍼레이션들에 포함된 복수의 레지스터들을 복수의 패킹된 레지스터들을 포함하는 패킹된 레지스터 구조로 패킹하는 단계; 그리고
    상기 패킹된 레지스터들을 상기 레지스터 재명명을 위해 상기 재명명기로 전송하는 단계를 포함하고,
    상기 패킹된 레지스터들은 레지스터 재명명을 위해 상기 재명명기를 통해 읽혀지거나 쓰여지는 명령 처리 방법.
  2. 제 1 항에 있어서,
    상기 패킹된 레지스터 구조로 패킹된 상기 레지스터들의 각각은 유효한 소스 데이터 또는 유효한 목적지 데이터를 포함하는 명령 처리 방법.
  3. 제 1 항에 있어서,
    상기 패킹된 레지스터들을 재명명하는 단계를 더 포함하고,
    상기 재명명 포트들의 상기 미리 정해진 수는, 상기 마이크로-오퍼레이션들이 하나의 사이클에 오퍼랜드들(operands)로 갖도록 허용되는 전체 레지스터들의 수보다 적도록 설정되는 명령 처리 방법.
  4. 제 3 항에 있어서,
    상기 패킹된 레지스터 구조로 패킹되는 상기 레지스터들 각각은 상기 전체 레지스터들 중에서 선택되는 미리 정해진 레지스터들 중에서 선택되는 명령 처리 방법.
  5. 제 4 항에 있어서,
    패킹될 레지스터들 각각은 상기 미리 정해진 레지스터들에 대한 유효성 정보 및 나이 정보에 기반하여 선택되는 명령 처리 방법.
  6. 제 1 항에 있어서,
    상기 패킹된 레지스터 구조는 상기 패킹된 레지스터 구조로 패킹되는 상기 레지스터들 각각에 대한 특성 정보를 더 포함하는 명령 처리 방법.
  7. 제 6 항에 있어서,
    상기 특성 정보는,
    상기 레지스터들 각각이 유효한 소스 또는 목적지 정보를 갖는지에 대한 정보;
    상기 레지스터들 각각의 식별자; 그리고
    상기 마이크로-오퍼레이션들 중 상기 레지스터들 각각을 포함하는 마이크로-오퍼레이션의 식별자 중 적어도 하나를 포함하는 명령 처리 방법.
  8. 제 7 항에 있어서,
    상기 마이크로-오퍼레이션의 식별자는, 상기 마이크로-오퍼레이션을 디코딩한 디코더에 대한 정보를 포함하는 명령 처리 방법.
  9. 제 7 항에 있어서,
    상기 특성 정보는 상기 레지스터들 각각에 대한 나이 정보를 더 포함하는 명령 처리 방법.
  10. 제 1 항에 있어서,
    상기 패킹된 레지스터들의 수가 상기 재명명 포트들의 상기 미리 정해진 수보다 큰지 판별하는 단계를 더 포함하고,
    상기 패킹된 레지스터들의 수가 상기 미리 정해진 수보다 크지 않으면, 상기 패킹된 레지스터들은 현재의 사이클에 레지스터 재명명을 위해 전송되고,
    상기 패킹된 레지스터들의 수가 상기 미리 정해진 수보다 큰 것으로 판별되면, 상기 복수의 마이크로-오퍼레이션들 중 하나 또는 그 이상의 마이크로-오퍼레이션들에 포함된 하나 또는 그 이상의 레지스터들이 후속 사이클에 레지스터 재명명을 위해 전송되는 명령 처리 방법.
  11. 제 10 항에 있어서,
    상기 미리 정해진 수는, 상기 마이크로-오퍼레이션들이 오퍼랜드들로 갖도록 허용된 전체 레지스터들의 수보다 적은 명령 처리 방법.
  12. 제 11 항에 있어서,
    상기 하나 또는 그 이상의 마이크로-오퍼레이션들은, 상기 복수의 마이크로-오퍼레이션들의 나이들에 기반하여 상기 복수의 마이크로-오퍼레이션들 중에서 선택되는 명령 처리 방법.
  13. 제 1 항에 있어서,
    상기 복수의 레지스터들은 적어도 하나의 소스 레지스터 및 적어도 하나의 목적지 레지스터를 포함하고,
    상기 패킹된 레지스터 구조는,
    상기 적어도 하나의 소스 레지스터를 패킹함으로써 생성된 적어도 하나의 패킹된 소스 레지스터를 포함하는 패킹된 소스 구조; 그리고
    상기 적어도 하나의 목적지 레지스터를 패킹함으로써 생성된 적어도 하나의 패킹된 목적지 레지스터를 포함하는 패킹된 목적지 구조를 포함하는 명령 처리 방법.
  14. '제 13 항에 있어서,
    상기 패킹된 소스 구조는, 상기 적어도 하나의 패킹된 소스 레지스터가 유래된 소스 레지스터에 대한 소스 특성 정보를 더 포함하고,
    상기 패킹된 목적지 구조는, 상기 적어도 하나의 패킹된 목적지 레지스터가 유래된 목적지 레지스터에 대한 목적지 특성 정보를 더 포함하는 명령 처리 방법.
  15. 제 14 항에 있어서,
    상기 소스 특성 정보는,
    상기 소스 레지스터의 식별자; 그리고
    상기 마이크로-오퍼레이션들 중 상기 소스 레지스터를 포함하는 마이크로-오퍼레이션의 식별자 중 적어도 하나를 포함하고,
    상기 목적지 특성 정보는,
    상기 목적지 레지스터가 유효한 목적지 정보를 갖는지에 대한 정보;
    상기 목적지 레지스터의 식별지; 그리고
    상기 마이크로-오퍼레이션들 중 상기 목적지 레지스터를 포함하는 마이크로-오퍼레이션의 식별자를 포함하는 명령 처리 방법.
  16. 제 15 항에 있어서,
    상기 소스 특성 정보 및 상기 목적지 특성 정보 중 적어도 하나는 상기 소스 레지스터 및 상기 목적지 레지스터에 대한 나이 정보를 포함하는 명령 처리 방법.
  17. 명령 처리 장치에 있어서:
    하나 또는 그 이상의 명령들로부터 디코딩되는 복수의 마이크로-오퍼레이션들을 수신하고;
    재명명기의 재명명 포트들의 미리 정해진 수에 기반하여 상기 마이크로-오퍼레이션들에 포함된 복수의 레지스터들을 복수의 패킹된 레지스터들을 포함하는 패킹된 레지스터 구조로 패킹하고; 그리고
    상기 패킹된 레지스터들을 레지스터 재명명을 위해 전송하는 것을 수행하는 패킹기를 구현하도록 구성되는 적어도 하나의 마이크로프로세서를 포함하고,
    상기 패킹된 레지스터들은 레지스터 재명명을 위해 상기 재명명기를 통해 읽혀지거나 쓰여지는 명령 처리 장치.
  18. ◈청구항 18은(는) 설정등록료 납부시 포기되었습니다.◈
    제 17 항에 있어서,
    상기 패킹된 레지스터 구조로 패킹된 상기 레지스터들의 각각은 유효한 소스 데이터 또는 유효한 목적지 데이터를 포함하는 명령 처리 장치.
  19. ◈청구항 19은(는) 설정등록료 납부시 포기되었습니다.◈
    제 17 항에 있어서,
    상기 재명명 포트들의 상기 미리 정해진 수는, 상기 마이크로-오퍼레이션들이 하나의 사이클에 오퍼랜드들로 갖도록 허용된 전체 소스 레지스터들의 수보다 적게 설정되는 명령 처리 장치.
  20. 제 19 항에 있어서,
    상기 마이크로프로세서는 상기 전체 소스 레지스터들로부터 선택되는 미리 정해진 레지스터들 중 상기 패킹된 레지스터 구조로 패킹되는 레지스터들을 각각 선택하는 복수의 멀티플렉서들을 구현하도록 더 구성되는 명령 처리 장치.
  21. ◈청구항 21은(는) 설정등록료 납부시 포기되었습니다.◈
    제 20 항에 있어서,
    상기 패킹되는 레지스터들 각각은, 상기 미리 정해진 레지스터들에 대한 유효성 정보 및 나이 정보에 기반하여 선택되는 명령 처리 장치.
  22. ◈청구항 22은(는) 설정등록료 납부시 포기되었습니다.◈
    제 17 항에 있어서,
    상기 패킹된 레지스터 구조는, 상기 패킹된 레지스터 구조로 패킹되는 상기 레지스터들 각각에 대한 특성 정보를 더 포함하는 명령 처리 장치.
  23. ◈청구항 23은(는) 설정등록료 납부시 포기되었습니다.◈
    제 22 항에 있어서,
    상기 특성 정보는,
    상기 레지스터들 각각이 유효한 소스 또는 목적지 정보를 갖는지에 대한 정보;
    상기 레지스터들 각각의 식별자; 그리고
    상기 마이크로-오퍼레이션들 중 상기 레지스터들 각각을 포함하는 마이크로-오퍼레이션의 식별자 중 적어도 하나를 포함하는 명령 처리 장치.
  24. ◈청구항 24은(는) 설정등록료 납부시 포기되었습니다.◈
    제 23 항에 있어서,
    상기 마이크로-오퍼레이션의 식별자는 상기 마이크로-오퍼레이션을 디코딩한 디코더에 대한 정보를 포함하는 명령 처리 장치.
  25. ◈청구항 25은(는) 설정등록료 납부시 포기되었습니다.◈
    제 24 항에 있어서,
    상기 특성 정보는 상기 레지스터들 각각에 대한 나이 정보를 더 포함하는 명령 처리 장치.
  26. 제 17 항에 있어서,
    상기 마이크로프로세서는 상기 패킹된 레지스터들의 수가 상기 재명명 포트들의 상기 미리 정해진 수보다 큰지 판별하는 컨트롤러를 구현하도록 더 구성되고,
    상기 패킹된 레지스터들의 수가 상기 미리 정해진 수보다 크지 않으면, 상기 컨트롤러는 상기 패킹된 레지스터들을 현재의 사이클에 레지스터 재명명을 위해 전송하도록 상기 패킹기를 제어하고,
    상기 패킹된 레지스터들의 수가 상기 미리 정해진 수보다 큰 것으로 판별되면, 상기 컨트롤러는 상기 복수의 마이크로-오퍼레이션들 중 하나 또는 그 이상의 마이크로-오퍼레이션들에 포함된 하나 또는 그 이상의 레지스터들이 후속 사이클에 레지스터 재명명을 위해 전송하도록 상기 패킹기를 제어하는 명령 처리 장치.
  27. ◈청구항 27은(는) 설정등록료 납부시 포기되었습니다.◈
    제 26 항에 있어서,
    상기 미리 정해진 수는, 사익 마이크로-오퍼레이션이 오퍼랜드들로 갖도록 허용된 전체 레지스터들의 수보다 적은 명령 처리 장치.
  28. 제 27 항에 있어서,
    상기 컨트롤러는, 상기 복수의 마이크로-오퍼레이션들의 나이들에 기반하여 상기 복수의 마이크로-오퍼레이션들 중 하나 또는 그 이상의 마이크로-오퍼레이션들을 선택하도록 상기 패킹기를 제어하는 명령 처리 장치.
  29. ◈청구항 29은(는) 설정등록료 납부시 포기되었습니다.◈
    제 17 항에 있어서,
    상기 복수의 레지스터들은 적어도 하나의 소스 레지스터 및 적어도 하나의 목적지 레지스터를 포함하고,
    상기 패킹된 레지스터 구조는,
    상기 적어도 하나의 소스 레지스터를 패킹함으로써 생성된 적어도 하나의 패킹된 소스 레지스터를 포함하는 패킹된 소스 구조; 그리고
    상기 적어도 하나의 목적지 레지스터를 패킹함으로써 생성된 적어도 하나의 패킹된 목적지 레지스터를 포함하는 패킹된 목적지 구조를 포함하는 명령 처리 장치.
  30. ◈청구항 30은(는) 설정등록료 납부시 포기되었습니다.◈
    제 29 항에 있어서,
    상기 패킹된 소스 구조는, 상기 적어도 하나의 패킹된 소스 레지스터가 유래된 소스 레지스터에 대한 소스 특성 정보를 더 포함하고,
    상기 패킹된 목적지 구조는, 상기 적어도 하나의 패킹된 목적지 레지스터가 유래된 목적지 레지스터에 대한 목적지 특성 정보를 더 포함하는 명령 처리 장치.
  31. ◈청구항 31은(는) 설정등록료 납부시 포기되었습니다.◈
    제 30 항에 있어서,
    상기 소스 특성 정보는,
    상기 소스 레지스터의 식별자; 그리고
    상기 마이크로-오퍼레이션들 중 상기 소스 레지스터를 포함하는 마이크로-오퍼레이션의 식별자 중 적어도 하나를 포함하고,
    상기 목적지 특성 정보는,
    상기 목적지 레지스터가 유효한 목적지 정보를 갖는지에 대한 정보;
    상기 목적지 레지스터의 식별지; 그리고
    상기 마이크로-오퍼레이션들 중 상기 목적지 레지스터를 포함하는 마이크로-오퍼레이션의 식별자를 포함하는 명령 처리 장치.
  32. ◈청구항 32은(는) 설정등록료 납부시 포기되었습니다.◈
    제 31 항에 있어서,
    상기 소스 특성 정보 및 상기 목적지 특성 정보 중 적어도 하나는 상기 소스 레지스터 및 상기 목적지 레지스터에 대한 나이 정보를 포함하는 명령 처리 장치.
KR1020130125470A 2013-03-08 2013-10-21 패킹된 소스 및 목적지 필드들을 포함하는 마이크로-오퍼레이션 KR102042780B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/790,661 2013-03-08
US13/790,661 US9395988B2 (en) 2013-03-08 2013-03-08 Micro-ops including packed source and destination fields

Publications (2)

Publication Number Publication Date
KR20140110705A KR20140110705A (ko) 2014-09-17
KR102042780B1 true KR102042780B1 (ko) 2019-11-27

Family

ID=51385697

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130125470A KR102042780B1 (ko) 2013-03-08 2013-10-21 패킹된 소스 및 목적지 필드들을 포함하는 마이크로-오퍼레이션

Country Status (5)

Country Link
US (1) US9395988B2 (ko)
JP (1) JP6347629B2 (ko)
KR (1) KR102042780B1 (ko)
CN (1) CN104035748B (ko)
DE (1) DE102014102614A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11237974B2 (en) * 2019-08-27 2022-02-01 Arm Limited Operation cache compression

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5452426A (en) * 1994-01-04 1995-09-19 Intel Corporation Coordinating speculative and committed state register source data and immediate source data in a processor
US5699536A (en) * 1995-04-13 1997-12-16 International Business Machines Corporation Computer processing system employing dynamic instruction formatting
US7395298B2 (en) 1995-08-31 2008-07-01 Intel Corporation Method and apparatus for performing multiply-add operations on packed data
US6192464B1 (en) 1997-12-31 2001-02-20 Intel Corporation Method and apparatus for decoding one or more instructions after renaming destination registers
US6041404A (en) 1998-03-31 2000-03-21 Intel Corporation Dual function system and method for shuffling packed data elements
US6122656A (en) * 1998-07-31 2000-09-19 Advanced Micro Devices, Inc. Processor configured to map logical register numbers to physical register numbers using virtual register numbers
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
GB2352536A (en) 1999-07-21 2001-01-31 Element 14 Ltd Conditional instruction execution
US6748521B1 (en) 2000-02-18 2004-06-08 Texas Instruments Incorporated Microprocessor with instruction for saturating and packing data
US20030105945A1 (en) 2001-11-01 2003-06-05 Bops, Inc. Methods and apparatus for a bit rake instruction
US6567902B1 (en) 2000-08-15 2003-05-20 Juniper Networks. Inc. Systems and methods for packing data into a destination register
JP3501761B2 (ja) * 2001-01-30 2004-03-02 株式会社半導体理工学研究センター 大規模データパス・アーキテクチャの実行機構
US7155601B2 (en) 2001-02-14 2006-12-26 Intel Corporation Multi-element operand sub-portion shuffle instruction execution
JP3763518B2 (ja) * 2001-05-29 2006-04-05 インターナショナル・ビジネス・マシーンズ・コーポレーション コンパイラ、そのコンパイル方法およびプログラム
US7685212B2 (en) * 2001-10-29 2010-03-23 Intel Corporation Fast full search motion estimation with SIMD merge instruction
US20040268093A1 (en) * 2003-06-26 2004-12-30 Samra Nicholas G Cross-thread register sharing technique
JP4283131B2 (ja) * 2004-02-12 2009-06-24 パナソニック株式会社 プロセッサ及びコンパイル方法
US7555514B2 (en) 2006-02-13 2009-06-30 Atmel Corportation Packed add-subtract operation in a microprocessor
US20080077772A1 (en) 2006-09-22 2008-03-27 Ronen Zohar Method and apparatus for performing select operations
US8078846B2 (en) * 2006-09-29 2011-12-13 Mips Technologies, Inc. Conditional move instruction formed into one decoded instruction to be graduated and another decoded instruction to be invalidated
US7669039B2 (en) * 2007-01-24 2010-02-23 Qualcomm Incorporated Use of register renaming system for forwarding intermediate results between constituent instructions of an expanded instruction
JP4996945B2 (ja) * 2007-02-28 2012-08-08 公立大学法人広島市立大学 データ処理装置、データ処理方法
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
US8355028B2 (en) * 2007-07-30 2013-01-15 Qualcomm Incorporated Scheme for varying packing and linking in graphics systems
CN101447911B (zh) * 2007-11-27 2010-12-15 上海高性能集成电路设计中心 一种通过分布控制扩展访存队列容量的装置
US8335912B2 (en) * 2009-04-22 2012-12-18 Oracle America, Inc. Logical map table for detecting dependency conditions between instructions having varying width operand values

Also Published As

Publication number Publication date
JP2014175005A (ja) 2014-09-22
CN104035748A (zh) 2014-09-10
US9395988B2 (en) 2016-07-19
US20140258687A1 (en) 2014-09-11
JP6347629B2 (ja) 2018-06-27
KR20140110705A (ko) 2014-09-17
DE102014102614A1 (de) 2014-09-11
CN104035748B (zh) 2018-03-09

Similar Documents

Publication Publication Date Title
US10338927B2 (en) Method and apparatus for implementing a dynamic out-of-order processor pipeline
KR101703743B1 (ko) 가속된 레인 간 벡터 감축 명령어들
US7937561B2 (en) Merge microinstruction for minimizing source dependencies in out-of-order execution microprocessor with variable data size macroarchitecture
US9424045B2 (en) Data processing apparatus and method for controlling use of an issue queue to represent an instruction suitable for execution by a wide operand execution unit
US9239735B2 (en) Compiler-control method for load speculation in a statically scheduled microprocessor
US20220261245A1 (en) Predication methods for vector processors
JP6373425B2 (ja) 複数のビットを左にシフトし、複数の1を複数の下位ビットにプルインするための命令
JP5758515B2 (ja) バイパスマルチプルインスタンス化テーブルを用いた移動除去のためのシステム及び方法
KR20150038058A (ko) 판독 및 기입 마스크들에 의해 제어되는 벡터 이동 명령어
US6862676B1 (en) Superscalar processor having content addressable memory structures for determining dependencies
US20220035635A1 (en) Processor with multiple execution pipelines
US9563432B2 (en) Dynamic configuration of processing pipeline based on determined type of fetched instruction
KR102042780B1 (ko) 패킹된 소스 및 목적지 필드들을 포함하는 마이크로-오퍼레이션
US8560811B2 (en) Lane crossing instruction selecting operand data bits conveyed from register via direct path and lane crossing path for execution
CN114327635A (zh) 用于处理器的非对称执行端口和分配宽度的可缩放端口绑定的方法、系统和装置
US20140365751A1 (en) Operand generation in at least one processing pipeline
JP2000132391A (ja) 分岐予測機構
CN117591176A (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