KR101594502B1 - 바이패스 멀티플 인스턴스화 테이블을 갖는 이동 제거 시스템 및 방법 - Google Patents

바이패스 멀티플 인스턴스화 테이블을 갖는 이동 제거 시스템 및 방법 Download PDF

Info

Publication number
KR101594502B1
KR101594502B1 KR1020140029236A KR20140029236A KR101594502B1 KR 101594502 B1 KR101594502 B1 KR 101594502B1 KR 1020140029236 A KR1020140029236 A KR 1020140029236A KR 20140029236 A KR20140029236 A KR 20140029236A KR 101594502 B1 KR101594502 B1 KR 101594502B1
Authority
KR
South Korea
Prior art keywords
data
data structure
register
move
signal
Prior art date
Application number
KR1020140029236A
Other languages
English (en)
Other versions
KR20140113434A (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 KR20140113434A publication Critical patent/KR20140113434A/ko
Application granted granted Critical
Publication of KR101594502B1 publication Critical patent/KR101594502B1/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/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
    • 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/30181Instruction operation extension or modification
    • 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/3824Operand accessing
    • G06F9/3826Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
    • 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

Landscapes

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

Abstract

바이패스 MIT(Multiple Instantiation Table) 로직을 갖는 이동 오퍼레이션 제거 시스템 및 방법이 개시된다. 예시적인 프로세싱 시스템은 복수의 물리적 레지스터 값을 저장하도록 구성되는 제1 데이터 구조, 복수의 포인터를 저장하도록 구성되는 제2 데이터 구조 - 각각의 포인터는 제1 데이터 구조의 엘리먼트를 참조함 -, 복수의 이동 제거 세트를 포함하는 제3 데이터 구조 - 각각의 이동 제거 세트는 복수의 논리적 레지스터를 나타내는 복수의 비트를 포함함 -, 및 제2 데이터 구조의 엘리먼트가 제1 데이터 구조의 엘리먼트를 참조하도록 함으로써 데이터 조작 오퍼레이션을 수행하도록 구성되는 로직을 포함하고, 로직은 제3 데이터 구조의 단일 업데이트를 수행함으로써 2 이상의 데이터 조작 오퍼레이션의 결과를 반영하도록 더 구성된다.

Description

바이패스 멀티플 인스턴스화 테이블을 갖는 이동 제거 시스템 및 방법{SYSTEMS AND METHODS FOR MOVE ELIMINATION WITH BYPASS MULTIPLE INSTANTIATION TABLE}
본 개시물은 일반적으로 컴퓨터 시스템에 관한 것으로, 특히, 컴퓨터 시스템에 의한 데이터 카피 명령(data copying instructions)의 실행 효율의 개선에 관한 것이다.
물리적 레지스터 간의 데이터 카피 오퍼레이션(data copying operations)은 프로세서에 의해 수행되는 오퍼레이션의 큰 부분을 나타낸다. 그러므로, 그 실행의 최적화는 프로세서의 전체 성능을 증가시킬 수 있다.
본 개시물은 제한되지 않지만 예로서 도시되며 도면과 결합하여 고려될 때 다음의 상세한 설명을 참조하여 더 잘 이해될 수 있다.
도 1은 본 개시물의 하나 이상의 양태에 따른 예시적인 컴퓨터 시스템의 하이 레벨 컴포넌트 다이어그램.
도 2는 본 개시물의 하나 이상의 양태에 따른 프로세서의 블록도.
도 3a 내지 3b는 본 개시물의 하나 이상의 양태에 따른 프로세서 마이크로 아키텍쳐의 엘리먼트를 개략적으로 나타내는 도면.
도 4는 본 개시물의 하나 이상의 양태에 따른 도 1의 예시적인 컴퓨터 시스템(100)의 다른 컴포넌트 및 예시적인 프로세서의 몇 개의 양태를 개략적으로 나타내는 도면.
도 5는 본 개시물의 하나 이상의 양태에 따라 레지스터 에일리어싱(aliasing)에 의해 이동 오퍼레이션(move operation)을 실행하는 예를 개략적으로 나타내는 도면.
도 6a 내지 6c는 본 개시물의 하나 이상의 양태에 따라 물리적 레지스터 파일(PRF) 엔트리 트랙킹을 위한 MIT(Multiple Instantiation Table:멀티플 인스턴스화 테이블)의 이용을 개략적으로 나타내는 도면.
도 7a 내지 7c는 본 개시물의 하나 이상의 양태에 따라 MIT 할당 및 예약(reservation) 로직을 개략적으로 나타내는 도면.
도 8a 내지 8c는 본 개시물의 하나 이상의 양태에 따라 MIT 고아 회수(orphan reclamation) 로직을 개략적으로 나타내는 도면.
도 9a 내지 9c, 10a 내지 10c 및 11a 내지 11c는 본 개시물의 하나 이상의 양태에 따라 바이패스 MIT 로직에 의해 구현되는 데이터 조작 오퍼레이션의 몇 개의 예를 개략적으로 나타내는 도면.
도 12는 본 개시물의 하나 이상의 양태에 따라 이동 제거 로직(move elimination logic)을 구현하는 예시적인 회로를 개략적으로 나타내는 도면.
도 13은 본 개시물의 하나 이상의 양태에 따른 예시적인 방법의 흐름도.
도 14는 본 개시물의 하나 이상의 양태에 따른 예시적인 컴퓨터 시스템의 블록도.
바이패스 MIT(Multiple Instantiation Table) 로직에 의한 이동 제거를 구현하는 컴퓨터 시스템 및 관련 기술이 기재된다. 본원에서의 "이동 제거(move elimination)"는 (예를 들어, 레지스터 에일리어스 테이블 내의 엔트리를 변경함으로써) 실행 유닛을 채용하지 않고 레지스터 카피 오퍼레이션을 실행하는 것을 지칭한다.
명령 실행의 효율을 개선하기 위하여, 프로세서는 레지스터 에일리어싱을 구현할 수 있고, 물리적 레지스터 파일(PRF; Physical Register File)라 불리우는 제1 데이터 구조는 물리적 레지스터 값을 저장하는데 채용될 수 있고, 레지스터 에일리어스 테이블(RAT; Register Alias Table)이라 불리우는 제2 데이터 구조는 (예를 들어, R8 또는 AX 등의) 논리적 레지스터 식별자를 PRF에 저장된 값에 맵핑하는 포인터를 저장하는데 채용될 수 있다. 레지스터 에일리어싱은 명령을 실행 유닛에 보내지 않고 에일리어스 테이블 내의 엔트리를 변경함으로써 소정의 명령의 실행을 허용한다. 이러한 명령의 예는 (예를 들어, XOR AX, AX 등의) 레지스터 제로화(zeroing) 명령 및 (MOV 명령 등의) 레지스터 카피 명령을 포함한다. 레지스터 카피 명령은 새로운 값을 생성하지 않기 때문에, 소스 레지스터 포인터는 RAT 내의 목적지 레지스터 포인터로 카피되어, 명령은 실행 유닛 및 다른 PRF 엔트리를 채용할 필요가 없을 수 있다. 이동 명령(move instruction)은 실행 유닛으로 전송되는 스트림으로부터 제거되기 때문에, 이 프로세스는 "이동 제거"라 한다.
상술한 레지스터 에일리어싱 방식에서, PRF 테이블 엔트리의 사용은 새로운 명령에 의해 사용되기 위하여 PRF 엔트리가 릴리즈(release)될 수 있을 때를 결정하기 위하여 트랙킹될 필요가 있을 수 있다. MIT(Multiple Instantiation Table)라 불리우는 제3 데이터 구조는 이하에서 상세히 설명하는 바와 같이 PRF 테이블 엔트리의 사용을 트랙킹하는데 채용될 수 있다.
여기에 기재된 시스템 및 방법은 2이상의 데이터 조작 오퍼레이션에 대한 의존성을 미리 계산하고 단일 MIT 업데이트를 수행하여 2이상의 오퍼레이션의 결과를 반영하여, 이동 제거 오퍼레이션의 타이밍 및 파워 소비 양태를 개선할 수 있다. 상술한 방법 및 시스템의 다양한 양태는 제한없이 예로서 이하에서 상세히 설명한다.
다음의 설명에서, 본 발명의 철저한 이해를 제공하기 위하여, 특정한 타입의 프로세서 및 시스템 구성, 특정한 하드웨어 구조, 특정한 아키텍쳐 및 마이크로 아키텍쳐 세부사항, 특정 레지스터 구성, 특정 명령 타입, 특정 시스템 컴포넌트, 특정 측정/높이, 특정 프로세서 파이프라인 스테이지 및 오퍼레이션 등의 예와 같은 다수의 특정한 세부사항이 기재된다. 그러나, 이들 특정한 세부사항이 본 발명을 실행하는데 반드시 채용될 필요가 없다는 것은 당업자에게 자명하다. 다른 예에서, 특정한 및 대안의 프로세서 아키텍쳐, 기재된 알고리즘에 대한 특정한 로직 회로/코드, 특정한 펌웨어 코드, 특정한 상호접속 오퍼레이션, 특정한 로직 구성, 특정한 제조 기술 및 물질, 특정한 컴파일러 구현, 코드 내의 알고리즘의 특정한 표현, 특정한 파워 다운 및 게이팅(gating) 기술/로직 및 컴퓨터 시스템의 다른 특정한 오퍼레이션 세부사항 등의 공지된 컴포넌트 또는 방법은 본 발명을 불필요하게 모호하게 하는 것을 피하기 위하여 상세히 기재되지 않는다.
다음의 실시예는 프로세서를 참고하여 설명하지만, 다른 실시예가 다른 타입의 집적 회로 및 로직 장치에 적용될 수 있다. 본 발명의 실시예의 유사한 기술 및 사상은 더 높은 파이프라인 스루풋 및 개선된 성능으로부터 이득을 얻을 수 있는 다른 타입의 회로 또는 반도체 장치에 적용될 수 있다. 본 발명의 실시예의 사상은 데이터 조작을 수행하는 임의의 프로세서 또는 머신에 적용될 수 있다. 그러나, 본 발명은 512비트, 256비트, 128비트, 64비트, 32비트 또는 16비트 데이터 오퍼레이션을 수행하는 프로세서 또는 머신에 한정되지 않고 데이터의 조작 또는 관리가 수행되는 임의의 프로세서 및 머신에 적용될 수 있다. 또한, 다음의 설명은 예를 제공하고 첨부된 도면은 설명의 목적으로 다양한 예를 나타낸다. 그러나, 이들 예는 본 발명의 실시예의 모든 가능한 구현예의 배타적 리스트를 제공하기보다는 본 발명의 실시예의 예를 제공하는 것으로 의도됨에 따라 제한적인 의미로 간주되어서는 안된다.
이하의 예는 실행 유닛 및 로직 회로의 컨텍스트에서 명령 핸들링 및 분배를 나타내지만, 본 발명의 다른 실시예는, 머신에 의해 수행될 때 머신이 본 발명의 적어도 하나의 실시예와 일치하는 기능을 수행하도록 하는 머신 판독가능 유형(tangible) 매체 상에 저장된 데이터 또는 명령에 의해 달성될 수 있다. 일 실시예에서, 본 발명의 실시예와 연관된 기능은 머신 실행가능 명령에서 구현된다. 명령은 명령으로 프로그래밍된 범용 또는 특수 목적 프로세서가 본 발명의 단계를 수행하도록 하는데 사용될 수 있다. 본 발명의 실시예는 본 발명의 실시예에 따라 하나 이상의 오퍼레이션을 수행하도록 컴퓨터(또는 다른 전자 장치)를 프로그래밍하는데 사용될 수 있는 명령이 저장된 머신 또는 컴퓨터 판독가능 매체를 포함할 수 있는 컴퓨터 프로그램 제품 또는 소프트웨어로서 제공될 수 있다. 대안으로, 본 발명의 실시예의 오퍼레이션은 오퍼레이션을 수행하는 고정 기능 로직을 포함하는 특정 하드웨어 컴포넌트 또는 프로그래밍된 컴퓨터 컴포넌트 및 고정 기능 하드웨어 컴포넌트의 임의의 조합에 의해 수행될 수 있다.
본 발명의 실시예를 수행하는 로직을 프로그래밍하는데 사용되는 명령은 DRAM, 캐시, 플래시 메모리, 또는 다른 스토리지 등의 시스템 내의 메모리 내에 저장될 수 있다. 또한, 명령은 네트워크를 통해 또는 다른 컴퓨터 판독가능 매체에 의해 분배될 수 있다. 따라서, 머신 판독가능 매체는, 제한되지 않지만, 전기, 광, 음향, 또는 다른 형태의 전파 신호(예를 들어, 반송파, 적외선 신호, 디지털 신호, 등)를 통해 인터넷을 통해 정보의 전송에 사용되는 플로피 디스켓, 광 디스크, 콤팩트 디스크, 리드 온리 메모리(CD-ROM), 및 광자기 디스크, 리드 온리 메모리(ROM), 랜덤 액세스 메모리(RAM), 소거가능 프로그래머블 리드 온리 메모리(EPROM), 전기적으로 소거가능한 프로그래머블 리드 온리 메모리(EEPROM), 자기 또는 광 카드, 플래시 메모리, 또는 유형 머신 판독가능 스토리지 등의 머신(예를 들어, 컴퓨터)에 의해 판독가능한 형태로 정보를 저장 또는 송신하는 임의의 메카니즘을 포함할 수 있다. 따라서, 컴퓨터 판독가능 매체는 머신(예를 들어, 컴퓨터)에 의해 판독가능한 형태로 전자 명령 또는 정보를 저장 또는 송신하기에 적합한 임의의 타입의 유형 머신 판독가능 매체를 포함할 수 있다.
"프로세서"는 명령 인코딩 연산, 논리 또는 I/O 오퍼레이션을 실행할 수 있는 장치를 지칭한다. 일 예에서, 프로세서는 폰 노이만(Von Neumann) 아키텍쳐 모델을 따를 수 있고 산술 논리 유닛(ALU), 제어 유닛, 및 다수의 레지스터를 포함할 수 있다. 다른 양태에 있어서, 프로세서는 하나 이상의 프로세서 코어를 포함할 수 있고, 따라서, 통상적으로 단일 명령 파이프라인을 처리할 수 있는 단일 코어 프로세서 또는 다수의 명령 파이프라인을 동시에 처리할 수 있는 멀티 코어 프로세서일 수 있다. 다른 양태에 있어서, 프로세서는 단일 집적 회로, 2개 이상의 집적 회로로서 구현되거나 (예를 들어, 개별 마이크로프로세서 다이가 단일 집적 회로 패키지에 포함되어, 단일 소켓을 공유하는) 멀티칩 모듈의 컴포넌트일 수 있다.
도 1은 본 개시물의 하나 이상의 양태에 따른 예시적인 컴퓨터 시스템의 하이 레벨 컴포넌트 다이어그램이다. 컴퓨터 시스템(100)은 여기에 기재된 실시예에 따라 데이터를 처리하는 알고리즘을 수행하는 로직을 포함하는 실행 유닛을 채용하는 프로세서(102)를 포함할 수 있다. 시스템(100)은 캘리포니아 산타 클라라의 인텔 코오포레이션으로부터 이용가능한 PENTIUM IIITM, PENTIUM 4TM, XeonTM, Itanium, XScaleTM 및/또는 StrongARMTM 마이크로프로세서에 기초한 프로세싱 시스템을 대표하지만, (다른 마이크로프로세서, 엔지니어링 워크스테이션, 셋탑 박스 등을 갖는 PC를 포함하는) 다른 시스템이 또한 이용될 수 있다. 일 실시예에서, 샘플 시스템(100)은 워싱톤 레드몬드의 마이크로소프트 코오포레이션으로부터 이용가능한 WINDOWSTM 오퍼레이팅 시스템의 버전을 실행하지만, 다른 오퍼레이팅 시스템(예를 들어 UNIX 및 Linux), 임베디드 소프트웨어 및/또는 그래픽 사용자 인터페이스가 또한 사용될 수 있다. 따라서, 본 발명의 실시예는 하드웨어 회로 및 소프트웨어의 임의의 특정한 조합에 한정되지 않는다.
실시예는 컴퓨터 시스템에 한정되지 않는다. 본 발명의 다른 실시예는 핸드헬드 장치 및 임베디드 애플리케이션 등의 다른 장치에 사용될 수 있다. 핸드헬드 장치의 일부 예는 셀룰러 폰, 인터넷 프로토콜 장치, 디지털 카메라, 개인 휴대 단말기(PDA) 및 핸드헬드 PC를 포함한다. 임베디드 애플리케이션은 마이크로 컨트롤러, 디지털 신호 프로세서(DSP), 시스템 온 칩(system on a chip), 네트워크 컴퓨터(NetPC), 셋탑 박스, 네트워크 허브, WAN(wide area network) 스위치, 또는 적어도 하나의 실시예에 따라 하나 이상의 명령을 수행할 수 있는 임의의 다른 시스템을 포함할 수 있다.
도시된 실시예에서, 프로세서(102)는 적어도 하나의 명령을 수행하는 알고리즘을 구현하는 하나 이상의 실행 유닛(108)을 포함한다. 하나의 실시예가 단일 프로세서 데스크탑 또는 서버 시스템의 컨텍스트에서 설명될 수 있지만, 다른 실시예가 멀티프로세서 시스템에 포함될 수 있다. 시스템(100)은 "허브" 시스템 아키텍쳐의 예이다. 컴퓨터 시스템(100)은 데이터 신호를 처리하는 프로세서(102)를 포함한다. 하나의 예시적인 예로서, 프로세서(102)는 예를 들어 CISC(complex instruction set computer) 마이크로프로세서, RISC(reduced instruction set computing) 마이크로프로세서, VLIW(very long instruction word) 마이크로프로세서, 명령 세트의 조합을 구현하는 프로세서, 또는 디지털 신호 프로세서 등의 임의의 다른 프로세서 장치를 포함한다. 프로세서(102)는 시스템(100) 내의 프로세서(102) 및 다른 컴포넌트 사이에서 데이터 신호를 송신하는 프로세서 버스(110)에 연결(couple)된다. 시스템(100)의 엘리먼트(예를 들어, 그래픽 가속기(112), 메모리 제어기 허브(116), 메모리(120), I/O 제어기 허브(124), 무선 트랜시버(126), 플래시 BIOS(128), 네트워크 제어기(134), 오디오 제어기(136), 시리얼 확장 포트(138), I/O 제어기(140) 등)는 본 기술에 익숙한 자에게 잘 알려진 종래의 기능을 수행한다.
일 실시예에서, 프로세서(102)는 레벨 1(L1) 내부 캐시(104)를 포함한다. 아키텍쳐에 따라, 프로세서(102)는 단일 내부 캐시 또는 다수 레벨의 내부 캐시를 가질 수 있다. 다른 실시예는 특정한 구현예 및 요구에 따라 내부 및 외부 캐시의 조합을 포함한다. 레지스터 파일(106)은 정수 레지스터(integer registers), 부동 소수점 레지스터(floating point registers), 벡터 레지스터, 뱅크(banked) 레지스터, 섀도우 레지스터, 체크포인트 레지스터, 상태 레지스터 및 명령 포인터 레지스터를 포함하는 다양한 레지스터에 상이한 타입의 데이터를 저장한다.
정수 및 부동 소수점 오퍼레이션을 수행하는 로직을 포함하는 실행 유닛(108)은 또한 프로세서(102)에 상주한다. 일 실시예에서, 프로세서(102)는, 실행될 때 소정의 매크로명령에 대한 알고리즘을 수행하거나 복잡한 시나리오를 핸들링하는 마이크로코드를 저장하는 마이크로코드(유코드(ucode)) ROM을 포함한다. 여기서, 마이크로코드는 프로세서(102)에 대한 로직 버그/픽스(logic bugs/fixes)를 핸들링하도록 잠재적으로 업데이트될 수 있다. 일 실시예에서, 실행 유닛(108)은 팩형(packed) 명령 세트(109)를 핸들링하는 로직을 포함한다. 명령을 실행하는 연관된 회로와 함께, 범용 프로세서(102)의 명령 세트에 팩형 명령 세트(109)를 포함시킴으로써, 많은 멀티미디어 애플리케이션에 의해 사용되는 오퍼레이션은 범용 프로세서(102) 내의 팩형 데이터를 이용하여 수행될 수 있다. 따라서, 많은 멀티미디어 애플리케이션은 팩형 데이터에 대한 오퍼레이션을 수행하는 프로세서의 데이터 버스의 전체 폭을 이용하여 더 효율적으로 가속화되고 실행된다. 이것은 프로세서의 데이터 버스를 통해 더 작은 데이터 유닛을 전송하여 하나의 데이터 엘리먼트를 이용하여 하나 이상의 오퍼레이션을 한번에 수행할 필요성을 잠재적으로 제거한다.
실행 유닛(108)의 다른 실시예가 또한 마이크로 컨트롤러, 임베디드 프로세서, 그래픽 장치, DSP 및 다른 타입의 로직 회로에 사용될 수 있다. 시스템(100)은 메모리(120)를 포함한다. 메모리(120)는 동적 랜덤 액세스 메모리(DRAM) 장치, 정적 랜덤 액세스 메모리(SRAM) 장치, 플래시 메모리 장치 또는 다른 메모리 장치를 포함한다. 메모리(120)는 프로세서(102)에 의해 실행될 데이터 신호에 의해 표현되는 명령 및/또는 데이터를 저장한다.
시스템 로직 칩(116)은 프로세서 버스(110) 및 메모리(120)에 연결된다. 도시된 실시예의 시스템 로직 칩(116)은 메모리 제어기 허브(MCH)이다. 프로세서(102)는 프로세서 버스(110)를 통해 MCH(116)와 통신할 수 있다. MCH(116)는 그래픽 커맨드, 데이터 및 텍스쳐의 스토리지 및 명령 및 데이터 스토리지를 위해 높은 대역폭 메모리 경로(118)를 메모리(120)에 제공한다. MCH(116)는 프로세서(102), 메모리(120) 및 시스템(100) 내의 다른 컴포넌트 사이에서 데이터 신호를 지향시키고 프로세서 버스(110), 메모리(120) 및 시스템 I/O(122) 사이에서 데이터 신호를 브리지(bridge)한다. 일부 실시예에서, 시스템 로직 칩(116)은 그래픽 제어기(112)에 연결하기 위한 그래픽 포트를 제공할 수 있다. MCH(116)는 메모리 인터페이스(118)를 통해 메모리(120)에 연결된다. 그래픽 카드(112)는 AGP(Accelerated Graphics Port) 상호접속부(114)를 통해 MCH(116)에 연결된다.
시스템(100)은 사유(proprietary) 허브 인터페이스 버스(122)를 이용하여 MCH(116)를 I/O 제어기 허브(ICH)(130)에 연결한다. ICH(130)는 로컬 I/O 버스를 통한 일부 I/O 장치로의 직접 접속을 제공한다. 로컬 I/O 버스는 주변 장치를 메모리(120), 칩셋 및 프로세서(102)에 접속하기 위한 고속 I/O 버스이다. 일부 예는 오디오 제어기, 펌웨어 허브(플래시 BIOS)(128), 무선 트랜시버(126), 데이터 스토리지(124), 사용자 입력 및 키보드 인터페이스를 포함하는 레가시(legacy) I/O 제어기, USB(Universal Serial Bus) 등의 시리얼 확장 포트 및 네트워크 제어기(134)이다. 데이터 스토리지 장치(124)는 하드 디스크 드라이브, 플로피 디스크 드라이브, CD-ROM 장치, 플래시 메모리 장치 또는 다른 대용량 스토리지 장치를 포함할 수 있다.
시스템의 다른 실시예에서, 일 실시예에 따른 명령은 시스템 온 칩과 함께 사용될 수 있다. 시스템 온 칩의 일 실시예는 프로세서 및 메모리를 포함한다. 하나의 이러한 시스템을 위한 메모리는 플래시 메모리이다. 플래시 메모리는 프로세서 및 다른 시스템 컴포넌트와 동일한 다이 상에 위치할 수 있다. 또한, 메모리 제어기 또는 그래픽 제어기 등의 다른 로직 블록이 또한 시스템 온 칩 상에 위치할 수 있다.
도 2는 본 발명의 일 실시예에 따라 명령을 수행하는 로직 회로를 포함하는 프로세서(200)에 대한 마이크로 아키텍쳐의의 블록도이다. 일부 실시예에서, 일 실시예에 따른 명령은, 단정도 정수 및 배정도 정수(single and double precision integer) 및 부동 소수점 데이터 타입 등의 데이터 타입 뿐만 아니라 바이트, 워드, 더블워드, 쿼드워드(quadword) 등의 사이즈를 갖는 데이터 엘리먼트에 대하여 오퍼레이팅(operate)하도록 구현될 수 있다. 일 실시예에서, 순차식(in-order) 프론트 엔드(201)는 실행될 명령을 페치하여 그 명령을 프로세서 파이프라인에서 추후에 이용되도록 준비하는 프로세서(200)의 일부이다. 프론트 엔드(201)는 몇개의 유닛을 포함할 수 있다. 일 실시예에서, 명령 프리페쳐(prefetcher)(226)는 메모리로부터 명령을 페치하고 명령을 명령 디코더(228)로 공급하고, 명령 디코더는 명령을 디코딩 또는 해석한다. 예를 들어, 일 실시예에서, 디코더는 수신된 명령을 머신이 실행할 수 있는 "마이크로-명령" 또는 "마이크로-오퍼레이션"이라 불리우는(또한 마이크로-op(micro-ops) 또는 uop라 불리움) 하나 이상의 오퍼레이션으로 디코딩한다. 다른 실시예에서, 디코더는 명령을 오피코드(opcode) 및 해당 데이터 및 일 실시예에 따라 오퍼레이션을 수행하도록 마이크로 아키텍쳐에 의해 사용되는 제어 필드로 파싱한다. 일 실시예에서, 트레이스 캐시(230)는 디코딩된 uop를 취하여 실행을 위해 uop 큐(234)에서 프로그램 정렬된 시퀀스(program ordered sequence) 또는 트레이스로 어셈블링한다. 트레이스 캐시(230)가 복잡한 명령을 만나면, 마이크로코드 ROM(232)는 오퍼레이션을 완료하는데 필요한 uop를 제공한다.
일부 명령은 단일 마이크로-op로 변환되지만, 다른 명령은 전체 오퍼레이션을 완료하기 위하여 몇 개의 마이크로-op를 필요로 한다. 일 실시예에서, 4보다 많은 마이크로-op가 명령을 완료하는데 필요하면, 디코더(228)는 마이크로코드 ROM(232)에 액세스하여 명령을 수행한다. 일 실시예에서, 명령은 명령 디코더(228)에서 처리될 작은 수의 마이크로 op로 디코딩될 수 있다. 다른 실시예에서, 명령은 마이크로코드 ROM(232) 내에 저장될 수 있고, 다수의 마이크로-op가 오퍼레이션을 달성하는데 필요하다. 트레이스 캐시(230)는 마이크로-코드 ROM(232)로부터의 일 실시예에 따른 하나 이상의 명령을 완료하기 위하여 마이크로-코드 시퀀스를 판독하는 정확한 마이크로-명령 포인터를 결정하는 엔트리 포인트 프로그래머블 로직 어레이(PLA)를 지칭한다. 마이크로코드 ROM(232)가 명령에 대한 마이크로-op의 시퀀싱을 완료한 후에, 머신의 프론트 엔드(201)는 트레이스 캐시(230)로부터의 마이크로-op의 페치를 재개한다.
비순차식(out-of-order) 실행 엔진(203)에서는, 명령이 실행을 위하여 준비된다. 비순차식 실행 로직은, 명령이 파이프라인을 중단하고 실행을 위해 스케줄링됨에 따라 명령의 흐름을 제거(smooth out)하고 재정렬하여 성능을 최적화하는 다수의 버퍼를 갖는다. 할당기 로직은 실행하기 위하여 각 uop가 필요로 하는 머신 버퍼 및 자원을 할당한다. 레지스터 에일리어싱 로직은 논리 레지스터를 레지스터 파일 내의 엔트리 상에 맵핑한다. 할당기는 또한 명령 스케줄러, 즉, 메모리 스케줄러, 고속 스케줄러(202), 저속(slow)/일반 부동 소수점 스케줄러(204) 및 단순 부동 소수점 스케줄러(206)의 앞에서, 메모리 오퍼레이션을 위한 uop 큐 및 넌-메모리 오퍼레이션을 위한 uop 큐 등의 2개의 uop 큐 중의 하나에서 각 uop에 대한 엔트리를 할당한다. uop 스케줄러(202, 204, 206)는 종속 입력 레지스터 오퍼랜드 소스의 준비 및 uop가 자신의 오퍼레이션을 완료하는데 필요한 실행 자원의 이용가능성에 기초하여 uop가 실행할 준비가 된 때를 결정한다. 일 실시예의 고속 스케줄러(202)는 메인 클록 사이클의 각 절반 상에서 스케줄링할 수 있지만, 다른 스케줄러는 메인 프로세서 클록 사이클 마다 한번 스케줄링할 수 있다. 스케줄러는 디스패치(dispatch) 포트에 대하여 중재하여 실행될 uop를 스케줄링한다.
물리적 레지스터 파일(208, 210)은 스케줄러(202, 204, 206) 및 실행 블록(211) 내의 실행 유닛(212, 214, 216, 218, 220, 222, 224) 사이에 있다. 정수 및 부동 소수점 오퍼레이션을 위한 개별 레지스터 파일(208, 210)이 각각 존재한다. 일 실시예의 각각의 레지스터 파일(208, 210)은 또한 레지스터 파일에 아직 기입되지 않은 방금 완료된 결과를 바이패스하거나 새로운 종속 uop로 포워딩할 수 있는 바이패스 네트워크를 포함한다. 정수 레지스터 파일(208) 및 부동 소수점 레지스터 파일(210)은 또한 다른 것과 데이터를 전달할 수 있다. 일 실시예에서, 정수 레지스터 파일(208)은 2개의 개별 레지스터 파일로 분리되고, 하나의 레지스터 파일은 데이터의 하위 32비트에 대한 것이고, 제2 레지스터 파일은 데이터의 상위 32 비트에 대한 것이다. 부동 소수점 명령은 일반적으로 64 내지 128 비트의 폭을 갖는 오퍼랜드를 갖기 때문에, 일 실시예의 부동 소수점 레지스터 파일(210)은 128비트의 폭의 엔트리를 갖는다.
실행 블록(211)은 명령이 실제로 실행되는 실행 유닛(212, 214, 216, 218, 220, 222, 224)을 포함한다. 이 섹션은 마이크로-명령이 실행할 필요가 있는 정수 및 부동 소수점 데이터 오퍼랜드 값을 저장하는 레지스터 파일(208, 210)을 포함한다. 일 실시예의 프로세서(200)는 다수의 실행 유닛, 즉, 어드레스 생성 유닛(AGU)(212), AGU(214), 고속 ALU(216), 고속 ALU(218), 저속 ALU(220), 부동 소수점 ALU(222), 부동 소수점 이동 유닛(224)을 포함한다. 일 실시예에서, 부동 소수점 실행 블록(222, 224)은 부동 소수점, MMX, SIMD 및 SSE 또는 다른 오퍼레이션을 실행한다. 일 실시예의 부동 소수점 ALU(222)는 제산, 제곱근 및 나머지 마이크로-op를 실행하는 64비트×64비트 부동 소수점 디바이더를 포함한다. 본 발명의 실시예에서, 부동 소수점 값을 포함하는 명령은 부동 소수점 하드웨어로 핸들링될 수 있다. 일 실시예에서, ALU 오퍼레이션은 고속 ALU 실행 유닛(216, 218)에게 주어진다. 일 실시예의 고속 ALU(216, 218)는 절반 클록 사이클의 유효 레이턴시를 가지고 고속 오퍼레이션을 실행할 수 있다. 일 실시예에서, 저속 ALU(220)는 승산기, 시프트, 플래그 로직 및 브랜치 처리 등의 긴 레이턴시 타입의 오퍼레이션을 위한 정수 실행 하드웨어를 포함하기 때문에, 가장 복잡한 정수 오퍼레이션은 저속 ALU(220)에게 주어진다. 메모리 로드/저장 오퍼레이션은 AGU(212, 214)에 의해 실행된다. 일 실시예에서, 정수 ALU(216, 218, 220)는 64비트 데이터 오퍼랜드에 대하여 정수 오퍼레이션을 수행하는 컨텍스트에서 기재된다. 다른 실시예에서, ALU(216, 218, 220)는 16, 32, 128, 256 등을 포함하는 다양한 데이터 비트를 지원하도록 구현될 수 있다. 마찬가지로, 부동 소수점 유닛(222, 224)은 다양한 폭의 비트를 갖는 오퍼랜드의 범위를 지원하도록 구현될 수 있다. 일 실시예에서, 부동 소수점 유닛(222, 224)은 SIMD 및 멀티미디어 명령과 결합하여 128비트의 폭의 팩형 데이터 오퍼랜드(operand)에 대하여 오퍼레이팅할 수 있다.
일 실시예에서, uop 스케줄러(202, 204, 206)는 페어런트 로드(parent load)가 실행을 종료하기 전에 종속 오퍼레이션을 디스패치(dispatch)한다. uop가 프로세서(200)에서 추측에 근거하여(speculatively) 스케줄링되고 실행됨에 따라, 프로세서(200)는 또한 메모리 미싱(miss)을 핸들링하는 로직을 포함한다. 데이터 캐시에서 데이터 로드가 미싱(miss)되면, 일시적으로 부정확한 데이터를 갖는 스케줄러를 남긴 파이프라인에서 인 플라이트(in flight) 종속 오퍼레이션이 존재할 수 있다. 리플레이(replay) 메카니즘은 부정확한 데이터를 사용하는 명령을 트랙킹하고 재실행한다. 종속 오퍼레이션은 리플레이되어야 하고 독립적인 오퍼레이션은 완료되도록 허용된다. 프로세서의 일 실시예의 스케줄러 및 리플레이 메카니즘은 또한 텍스트 스트링 비교 오퍼레이션에 대한 명령 시퀀스를 캐치(catch)하도록 설계된다.
용어 "레지스터"는 오퍼랜드를 식별하는 명령의 일부로서 사용되는 온-보드(on-board) 프로세서 스토리지 위치를 지칭할 수 있다. 즉, 레지스터는 (프로그래머의 관점으로부터) 프로세서의 밖으로부터 사용가능한 것일 수 있다. 그러나, 실시예의 레지스터는 특정한 타입의 회로에 대한 의미로 제한되어서는 안된다. 오히려, 실시예의 레지스터는 데이터를 저장하고 제공할 수 있고 여기에 기재된 기능을 수행할 수 있다. 여기에 기재된 레지스터는 전용 물리적 레지스터, 레지스터 에일리어싱을 이용한 동적으로 할당된 물리적 레지스터, 전용 및 동적으로 할당된 물리적 레지스터의 조합 등의 임의의 수의 상이한 기술을 이용한 프로세서 내의 회로에 의해 구현될 수 있다. 일 실시예에서, 정수 레지스터는 32비트 정수 데이터를 저장한다. 일 실시예의 레지스터 파일은 또한 팩형 데이터에 대한 8개의 멀티미디어 SIMD 레지스터를 포함한다. 하기의 설명에서, 레지스터는 캘리포니아 산타 클라라의 인텔 코오포레이션으로부터의 MMXTM 기술로 인에이블되는 마이크로프로세서 내의 64비트의 폭의 MMX 레지스터(이하, 일부 경우에 "mm" 레지스터라 함) 등의 팩형 데이터를 유지하도록 설계된 데이터 레지스터로 이해된다. 정수 및 부동 소수점 형태로 이용가능한 MMX 레지스터는 SIMD 및 SSE 명령을 수반하는 팩형 데이터 엘리먼트로 오퍼레이팅할 수 있다. 마찬가지로, SSE2, SSE3, SSE4 또는 그 이상(일반적으로, "SSEx"라 함)의 기술에 관한 128 비트의 폭의 XMM 레지스터는 또한 이러한 팩형 데이터 오퍼랜드를 유지하는데 사용될 수 있다. 일 실시예에서, 팩형 데이터 및 정수 데이터를 저장하는데 있어서, 레지스터는 2개의 데이터 타입을 구별할 필요가 없다. 일 실시예에서, 정수 및 부동 소수점은 동일한 레지스터 파일 또는 상이한 레지스터 파일에 포함된다. 또한, 일 실시예에서, 부동 소수점 및 정수 데이터가 상이한 레지스터 또는 동일한 레지스터에 저장될 수 있다.
도 3a 내지 3b는 본 개시물의 하나 이상의 양태에 따른 프로세서 마이크로 아키텍쳐의 엘리먼트를 개략적으로 나타내는 도면이다. 도 3a에서, 프로세서 파이프라인(400)은 페치 스테이지(402), 길이 디코드 스테이지(404), 디코드 스테이지(406), 할당 스테이지(408), 재명명 스테이지(410), 스케줄링(또한 디스패치 또는 발행(issue)으로 알려짐) 스테이지(412), 레지스터 판독/메모리 판독 스테이지(414), 실행 스테이지(416), 되기입(write back)/메모리 기입 스테이지(418), 예외 핸들링 스테이지(422) 및 커밋(commit) 스테이지(424)를 포함한다.
도 3b에서, 화살표는 2개 이상의 유닛 간의 연결을 나타내고, 화살표의 방향은 이들 유닛 간의 데이터 흐름 방향을 나타낸다. 도 3b는 실행 엔진 유닛(450)에 연결된 프론트 엔드 유닛(430)을 포함하는 프로세서 코어(490)를 나타내고, 프론트 엔드 유닛 및 실행 엔진 유닛은 메모리 유닛(470)에 연결된다.
코어(490)는 RISC(reduced instruction set computing) 코어, CISC(complex instruction set computing) 코어, VLIW(very long instruction word) 코어 또는 하이브리드 또는 대안의 코어 타입일 수 있다. 다른 옵션으로서, 코어(490)는 예를 들어 네트워크 또는 통신 코어, 압축 엔진, 그래픽 코어 등의 특수 목적 코어일 수 있다.
프론트 엔드 유닛(430)은 명령 캐시 유닛(434)에 연결된 브랜치 예측 유닛(432)을 포함하고, 명령 캐시 유닛은 명령 TLB(translation lookaside buffer)(436)에 연결되고, 명령 TLB는 명령 페치 유닛(438)에 연결되고, 명령 페치 유닛은 디코드 유닛(440)에 연결된다. 디코드 유닛 또는 디코더는 명령을 디코딩하고 출력으로서 본래의 명령으로부터 디코딩되거나 본래의 명령을 반영하거나 본래의 명령으로부터 도출된 하나 이상의 마이크로-오퍼레이션, 마이크로-코드 엔트리 포인트, 마이크로명령, 다른 명령 또는 다른 제어 신호를 생성한다. 디코더는 다양한 상이한 메카니즘을 이용하여 구현될 수 있다. 적절한 메카니즘의 예는, 제한되지 않지만, 룩업 테이블, 하드웨어 구현예, 프로그래머블 로직 어레이(PLA), 마이크로코드 리드 온리 메모리(ROM) 등을 포함한다. 명령 캐시 유닛(434)은 또한 메모리 유닛(470) 내의 레벨 2(L2) 캐시 유닛(476)에 연결된다. 디코드 유닛(440)은 실행 엔진 유닛(450) 내의 재명명/할당기 유닛(452)에 연결된다.
실행 엔진 유닛(450)은 리타이어먼트(retirement) 유닛(454) 및 하나 이상의 스케줄러 유닛(들)(456)의 세트에 연결된 재명명/할당기 유닛(452)을 포함한다. 스케줄러 유닛(들)(456)은 예약 스테이션, 중앙 명령 윈도우 등을 포함하는 임의의 수의 상이한 스케줄러를 나타낸다. 스케줄러 유닛(들)(456)은 물리적 레지스터 파일(들) 유닛(들)(458)에 연결된다. 물리적 레지스터 파일(들) 유닛(458)의 각각은 스칼라 정수, 스칼라 부동 소수점, 팩형 정수, 팩형 부동 소수점, 벡터 정수, 벡터 부동 소수점 등의 하나 이상의 상이한 데이터 타입, 상태(예를 들어 실행될 다음 명령의 어드레스인 명령 포인터) 등을 저장하는 하나 이상의 물리적 레지스터 파일을 나타낸다. 물리적 레지스터 파일(들) 유닛(들)(458)은 리타이어먼트 유닛(454)에 의해 중첩되어(overlapped) 레지스터 에일리어싱 및 비순차식 실행이 (예를 들어, 재정렬 버퍼(들) 및 리타이어먼트 레지스터 파일(들)을 이용하여, 미래 파일(들), 이력 버퍼(들) 및 리타이어먼트 레지스터 파일(들)을 이용하여, 레지스터 맵 및 레지스터의 풀(pool) 등을 이용하여) 구현될 수 있는 다양한 방식을 나타낸다. 일반적으로, 아키텍쳐 레지스터는 프로세서의 밖으로부터 또는 프로그래머의 관점으로부터 볼 수 있다. 레지스터는 임의의 공지된 특정 타입의 회로로 제한되지 않는다. 여기에 기재된 바와 같이 데이터를 저장하고 제공할 수 있는 한, 다양한 다른 타입의 레지스터가 적합하다. 적합한 레지스터의 예는, 제한되지 않지만, 전용 물리적 레지스터, 레지스터 에일리어싱을 이용한 동적으로 할당되는 물리적 레지스터, 전용 및 동적으로 할당되는 물리적 레지스터의 조합 등을 포함한다. 리타이어먼트 유닛(454) 및 물리적 레지스터 파일(들) 유닛(들)(458)은 실행 클러스터(들)(460)에 연결된다. 실행 클러스터(들)(460)는 하나 이상의 실행 유닛(162)의 세트 및 하나 이상의 메모리 액세스 유닛(464)의 세트를 포함한다. 실행 유닛(462)은 다양한 타입의 데이터(예를 들어, 스칼라 부동 소수점, 팩형 정수, 팩형 부동 소수점, 벡터 정수, 벡터 부동 소수점)에 대하여 다양한 오퍼레이션(예를 들어, 시프트, 가산, 감산, 승산)을 수행할 수 있다. 일부의 실시예는 특정 기능 또는 기능 세트에 전용인 다수의 실행 유닛을 포함할 수 있지만, 다른 실시예는 모두 모든 기능을 수행할 수 있는 다수의 실행 유닛 또는 하나의 실행 유닛을 포함할 수 있다. 소정의 실시예가 소정의 타입의 데이터/오퍼레이션에 대한 개별 파이프라인(예를 들어, 각각 자신의 스케줄러 유닛, 물리적 레지스터 파일(들) 유닛 및/또는 실행 클러스터를 갖는 스칼라 정수 파이프라인, 스칼라 부동 소수점/팩형 정수/팩형 부동 소수점/벡터 정수/벡터 부동 소수점 파이프라인 및/또는 메모리 액세스 파이프라인 - 개별 메모리 액세스 파이프라인의 경우, 이 파이프라인의 실행 클러스터가 메모리 액세스 유닛(들)(464)을 갖는 소정의 실시예가 구현된다)을 생성하기 때문에, 스케줄러 유닛(들)(456), 물리적 레지스터 파일(들) 유닛(들)(458) 및 실행 클러스터(들)(460)는 가능하게는 복수인 것으로 도시된다. 개별 파이프라인이 사용되면, 이들 파이프라인 중의 하나 이상은 비순차식 발행/실행일 수 있고 나머지는 순차식 발행/실행일 수 있다.
메모리 액세스 유닛(464)의 세트는 메모리 유닛(470)에 연결되고, 메모리 유닛은 레벨 2(L2) 캐시 유닛(476)에 연결된 데이터 캐시 유닛(474)에 연결된 데이터 TLB 유닛(472)을 포함한다. 하나의 예시적인 실시예에서, 메모리 액세스 유닛(464)은 로드 유닛, 어드레스 저장 유닛(store address unit) 및 데이터 저장 유닛(store data unit)을 포함할 수 있고, 이들 각각은 메모리 유닛(470) 내의 데이터 TLB 유닛(472)에 연결된다. L2 캐시 유닛(476)은 하나 이상의 다른 레벨의 캐시에 연결되어 궁극적으로 메인 메모리에 연결된다.
예로서, 비순차식 발행/실행 코어 아키텍쳐는 다음과 같이 파이프라인(400)을 구현할 수 있다. 명령 페치(438)는 페치 및 길이 디코딩 스테이지(402 및 404)를 수행하고, 디코드 유닛(440)은 디코드 스테이지(406)를 수행하고, 재명명/할당기 유닛(452)은 할당 스테이지(408) 및 재명명 스테이지(410)를 수행하고, 스케줄러 유닛(들)(456)은 스케줄 스테이지(412)를 수행하고, 물리적 레지스터 파일(들) 유닛(들)(458) 및 메모리 유닛(470)은 레지스터 판독/메모리 판독 스테이지(414)를 수행하고, 실행 클러스터(460)는 실행 스테이지(416)를 수행하고, 메모리 유닛(470) 및 물리적 레지스터 파일(들) 유닛(들)(458)은 되기입/메모리 기입 스테이지(418)를 수행하고, 다양한 유닛은 예외 핸들링 스테이지(422)에 포함될 수 있고, 리타이어먼트 유닛(454) 및 물리적 레지스터 파일(들) 유닛(들)(458)은 커밋 스테이지(424)를 수행한다.
코어(490)는 하나 이상의 명령 세트(예를 들어, (새로운 버전과 함께 추가된 일부의 익스텐션(extension)을 갖는) x86 명령 세트), 캘리포니아 서니베일의 MIPS 테크놀로지의 MIPS 명령 세트, (캘리포니아 서니베일의 ARM 홀딩스의 (NEON 등의 추가의 익스텐션을 갖는) ARM 명령 세트를 지원할 수 있다.
소정의 구현예에서, 코어는 (오퍼레이션 또는 스레드(thread)의 2개 이상의 병렬 세트를 실행하는) 멀티스레딩을 지원할 수 있고, 타임 슬라이스 멀티스레딩, 동시 멀티스레딩(단일 물리적 코어는 물리적 코어가 동시에 멀티스레딩되는 스레드의 각각에 대한 논리적 코어를 제공) 또는 그 조합(예를 들어, 인텔® 하이퍼스레딩 기술에서처럼 타임 슬라이스 페칭 및 디코딩 및 동시 멀티스레딩)을 포함하는 다양한 방식으로 지원할 수 있다.
레지스터 에일리어싱은 비순차식 실행의 컨텍스트에서 기재되지만, 레지스터 에일리어싱은 순차식(in-order) 아키텍쳐에서 사용될 수 있음을 이해하도록 한다. 프로세서의 도시된 실시예는 또한 개별 명령 및 데이터 캐시 유닛(434/474) 및 공유 L2 캐시 유닛(476)을 포함하지만, 대안의 실시예는 예를 들어 레벨 1(L1) 내부 캐시 또는 다수 레벨의 내부 캐시 등의 명령 및 데이터에 대한 단일 내부 캐시를 가질 수 있다. 일부의 실시예에서, 시스템은 코어 및/또는 프로세서의 외부에 있는 외부 캐시 및 내부 캐시의 조합을 포함할 수 있다. 대안으로, 모든 캐시는 코어 및/또는 프로세서의 외부에 있을 수 있다.
도 4는 본 개시물의 하나 이상의 양태에 따른 컴퓨터 시스템(100)의 다른 컴포넌트 및 예시적인 프로세서(102)의 블록도이다. 도 4를 참조하면, 프로세서 코어(490)는 코어(490)에 의해 실행될 명령을 페치하는 페치 유닛(438)을 포함할 수 있다. 명령은 메모리(115) 등의 하나 이상의 스토리지 장치 및/또는 데이터 스토리지 장치(124) 등의 다른 메모리 장치로부터 페치될 수 있다. 프로세서 코어(490)는 페치된 명령을 하나 이상의 마이크로-오퍼레이션(μop)으로 디코딩하는 디코드 유닛(440)을 더 포함할 수 있다. 프로세서 코어(490)는 명령이 발행될 준비가 될 때까지, 예를 들어, 디코딩된 명령에 대한 오퍼랜드 값이 이용가능해질 때까지, 디코드 유닛(440)으로부터 수신된 디코딩된 명령을 저장하는 스케줄 유닛(446)을 더 포함할 수 있다. 스케줄 유닛(446)은 실행 유닛(450)으로 디코딩된 명령을 스케줄링 및/또는 발행할 수 있다.
실행 유닛(450)은 하나 이상의 산술 논리 유닛(ALU), 하나 이상의 정수 실행 유닛, 하나 이상의 부동 소수점 실행 유닛, 및/또는 다른 실행 유닛을 포함할 수 있다. 소정의 구현예에서, 실행 유닛(450)은 명령 OOO(out-of-order)를 실행할 수 있다. 프로세서 코어(490)는 커밋후에 실행된 명령을 리타이어(retire)하는 리타이어먼트 유닛(454)을 더 포함할 수 있다.
프로세서 코어(490)는 이하에서 더 상세히 설명하는 바와 같이 데이터 조작 기능을 구현하는 RAT(421), PRF(423), MIT(425) 및 로직(150)을 더 포함할 수 있다. 도 4에서 로직(150)은 코어(490) 내에 있는 것으로 도시되지만, 로직(150)은 컴퓨터 시스템(100) 내의 다른 곳에 제공될 수 있다. 또한, 로직(150) 및/또는 그 컴포넌트의 일부는 복수의 프로세서 코어 사이에서 공유될 수 있다.
상술한 바와 같이, 이동 명령은 RAT에서 소스 레지스터 포인터를 목적지 레지스터 포인터로 카피함으로써 제거될 수 있다. 도 5는 레지스터 에일리어싱에 의한 MOV DX, AX 명령의 실행을 개략적으로 나타내고, PRF 내의 엔트리(X)에 대한 포인터인 논리적 레지스터(AX)에 대한 RAT 엔트리의 내용이 논리적 레지스터(DX)에 대한 RAT 엔트리로 카피된다. 도 5에 의해 도시된 바와 같이, 소정의 구현예에서, PRF는 물리적 레지스터 값의 어레이에 의해 제공될 수 있고, RAT는 PRF에 대한 포인터의 어레이에 의해 제공될 수 있다.
명령이 실행 유닛으로 전송되기 전에, 명령의 결과를 수신하기 위하여 PRF 엔트리가 할당될 수 있다. 다수의 RAT 엔트리가 동일한 PRF 엔트리를 가리킬 수 있으므로, 다수의 RAT 엔트리가 결과적으로 리타이어되는 하나 이상의 명령에 의해 중복 기입(overwritten)되면 PRF 엔트리는 후속의 명령에 의한 사용에 이용가능한 것으로 마크될 수 있다. MIT는 PRF 엔트리가 새로운 명령에 의해 사용되기 위하여 릴리즈될 수 있을 때를 결정하기 위하여 PRF 엔트리에 대한 참조를 트랙킹하는데 채용될 수 있다.
MIT는 트랙킹되는 레지스터를 나타내는 복수의 로우(row)를 갖는 2차원 어레이(예를 들어, 비트 매트릭스)에 의해 제공될 수 있다. 각각의 MIT 칼럼(column)은 세트 비트가 해당 논리적 레지스터가 이동 제거 세트에 참여하는 것을 나타내는 이동 제거 세트를 나타낼 수 있다.
이동 오퍼레이션이 제거되면, 도 6a에 의해 개략적으로 도시된 바와 같이, 이들 논리적 레지스터가 이동 제거 세트의 일부라는 것을 나타내면서 소스 및 목적지 논리적 레지스터에 대응하는 비트가 설정된다. 이동 명령의 소스가 이동 제거 세트에 이미 참여한 논리적 레지스터이면, 도 6b에 개략적으로 도시된 바와 같이, 목적지 논리적 레지스터가 세트에 추가된다. 논리적 레지스터가 다른 명령에 의해 중복 기입되면, 그 레지스터에 대해 설정된 비트가 MIT에서 클리어될 수 있고, 따라서, 도 6c에 개략적으로 도시되는 바와 같이, 이동 제거 세트로부터 논리적 레지스터를 분리한다. 물리적 레지스터에 대한 모든 참조가 하나 이상의 명령에 의해 중복 기입되고 이들 명령이 리타이어되면, 임의의 이동 제거 세트의 일부가 아니거나 이동 제거 세트의 유일한 멤버인 해당 물리적 레지스터는 새로운 명령에 의해 재사용될 수 있다.
소정의 구현예에서, 이동 제거 세트 트랙킹은 uop 할당으로부터 uop 할당까지 수행되고 uop 리타이어먼트에 종속하지 않는다. 즉, 이동 uop의 할당시, 이동 제거 세트가 생성된다. 또한, 논리적 레지스터를 중복 기입하는 uop의 할당시, 논리적 레지스터는 기존의 이동 제거 세트로부터 제거된다. 이동 제거 세트 내의 마지막 논리적 레지스터를 중복 기입하는 uop가 할당되면, 그 중복 기입하는 uop가 후속으로 리타이어될 때 PRF 엔트리는 해방(free)되는 것으로 마크된다. PRF 엔트리를 해방하는 것은 마지막 중복 기입 uop의 uop 리타이어먼트에 종속한다. PRF 엔트리를 해방하는 로직은 MIT 밖에서 수행된다. 그러나, MIT에 의해 구현되는 이동 제거 세트는 마지막 중복 기입 uop를 할당한 후에 즉시 회수되고(reclaimed) 다른 이동 제거 세트를 트랙킹하는데 재사용될 수 있다.
이동 제거 세트가 MIT 칼럼에 의해 제공되기 때문에, N개의 논리적 레지스터 내의 이동 제거의 모든 가능한 조합을 트랙킹하기 위하여, N/2개의 MIT 칼럼이 필요할 수 있다. MIT가 N/2개보다 작은 이동 제거 세트를 갖고 이들이 모두 이용되면, 다음의 이동 명령이 새로운 PRF 엔트리를 소비하는 정상 명령으로서 실행 유닛으로 전송될 수 있다. 어떠한 경우에도, MIT는 명령이 PRF 엔트리를 소비할 필요가 있는지에 대하여 RAT에 시그널링한다.
수퍼스칼라 M-와이드 발행 프로세서(superscalar M-wide issue processor)에서, 사이클당 M개까지의 명령은 데이터 카피 명령일 수 있고, MIT는 단지 발행 명령의 서브세트를 제거하는 충분한 해방 세트(free sets)를 가질 수 있다. 실행 효율을 더 개선하기 위하여, 프로세서는, 이동 명령이 이전부터 존재하거나 새로운 이동 제거 세트에 적절한지를 결정하는 대신, 각각의 이동 명령이 새로운 이동 제거 세트를 요구한다는 것을 상정할 수 있다. 그러므로, 프로세서는 다른 이동 명령을 실행 유닛으로 전송하면서 이용가능한 이동 제거 세트의 수를 이동 명령의 수와 비교하고 이동 제거될 K개의 제1 이동 명령을 선택할 수 있다.
도 7a 내지 7c는 본 개시물의 하나 이상의 양태에 따라 MIT 할당 및 예약 로직을 개략적으로 나타내는 도면이다. 도 7a는 MIT의 초기 상태(사이클 N)를 나타내고, 여기서, 칼럼 1-3은 할당에 대하여 해방된다. 후속으로, 칼럼 1-2는 2개의 이동 오퍼레이션(MOV AX, CX 및 MOV R9, R8)을 실행하기 위하여 예약된다. (N+1) 사이클에서, 도 7b에 의해 개략적으로 도시된 바와 같이, 예약(Reserve) 비트가 설정되고 해방(Free) 비트가 MIT에서 클리어되어 칼럼 1-2의 상술한 할당을 반영한다. 후속으로, 2개의 추가의 이동 제어 기회는 자신을 MIT에게 제시하고, 따라서, MIT 칼럼 3은 제3 이동 오퍼레이션(MOV BX, DX)를 실행하기 위하여 예약되고, MIT(MOV AX, R8)에 이용가능한 이동 제거 세트가 없기 때문에 제4 이동 오퍼레이션은 실행 유닛으로 전송된다. (N+2) 사이클에서, 도 7c에 개략적으로 도시된 바와 같이, 사이클(N)로부터의 예약은 취소되고, 그러므로, 각각의 예약 비트가 클리어된다. MIT는, 칼럼 0으로 병합하고 칼럼 2에서 새로운 세트를 생성하면서, 사이클(N)의 명령으로부터의 결과로 업데이트된다. 빈(Empty) 비트는 MIT 업데이트를 고려하여 재산출되고, 해방 비트는 영향받은 MIT 칼럼에 대하여 빈 비트로부터 예약 비트를 감산함으로써 업데이트된다. 그러므로, 새로운 이동 제거 정보로 업데이트될 MIT 세트에 대한 2-사이클 레이턴시가 존재할 수 있다.
단 하나의 레지스터 맵핑이 이동 제거 세트에 남아 있어서 해당 PRF 엔트리가 단 하나의 나머지 참조를 가지면, MIT 칼럼에 의해 제공되는 이동 제거 세트는 다른 이동 명령으로의 할당을 위해 여전히 이용가능하지 않을 수 있다. 이러한 세트는 단 하나의 레지스터 맵핑을 가지기 때문에 "고아(orphan)" 세트라 할 수 있다. 고아 세트를 클리어하는 일부의 액션없이, 이는 마지막 논리적 레지스터가 중복 기입될 때까지 이용가능하지 않은채 남아 있을 수 있고, 따라서, 가능한 이동 제거의 수를 감소시킨다.
소정의 구현예에서, 프로세서는 MIT 할당 검색의 일부로서 고아 이동 제거 세트를 검출하고 클리어할 수 있다. 이동 제거 세트가 고아 세트로 결정되면, 프로세서는 할당을 위해 세트를 해방하는 다음 사이클에 대한 클리어 신호를 어써트(assert)할 것이다. 그러므로, 고아 세트는 이하에서 더 상세히 설명하는 바와 같이 초기 할당 기입에 대한 2개의 사이클 및 고아 세트를 클리어하기 위한 하나 이상의 사이클을 포함하는 3개 이상의 사이클에서 이용가능해질 수 있다.
도 8a 내지 8c는 본 개시물의 하나 이상의 양태에 따라 MIT 고아 회수(orphan reclamation) 로직 기능의 예를 개략적으로 나타내는 도면이다. 도 8a는 이동 명령 및 새롭게 할당된 이동 제거 세트를 부분적으로 중복 기입하는 후속 명령을 실행하기 전에 MIT 칼럼의 초기 상태(사이클(N)이라 함)를 개략적으로 나타낸다. 도 8b는 사이클(N+2)에서 업데이트된 후의 MIT 칼럼의 상태를 개략적으로 나타낸다. 이 스테이지에서의 MIT 칼럼은 고아 세트이고 이렇게 검출될 수 있다. 도 8c는 고아 회수 후의 MIT 칼럼의 상태를 개략적으로 나타낸다. 그러나, 사이클(N+1) 내의 이동 제거 명령이 AX 레지스터를 자신의 소스로서 이용하면, 이동 제거 세트는 사이클(N+1)로부터의 명령의 결과로 업데이트되기 때문에, 사이클(N+3)에서 고아 회수가 없다는 것에 유의한다.
소정의 구현예에서, 로직(150)은 2개 이상의 데이터 조작 오퍼레이션에 대한 종속성을 미리 계산한 후에 단일 MIT 업데이트를 수행하여 2개 이상의 오퍼레이션의 결과를 반영하여 이동 제거 오퍼레이션의 타이밍 및 파워 소비 양태를 개선할 수 있다. MIT 업데이트는 새로운 이동 제거 세트의 생성, 이동 제거 세트의 변경 또는 고아 이동 제거 세트의 회수를 포함할 수 있다.
직렬화 업데이트 로직과 달리, 로직(150)은 한번 MIT를 업데이트하여 2개 이상의 데이터 조작 오퍼레이션의 결과를 반영한다. 직렬화 업데이트 시퀀스에서 해당 MIT 업데이트에 의해 반영되는 중간(intermediate) MIT 상태는 로직(150)에 의해 수행되지 않는다. 예를 들어, 레지스터가 이동 제거 세트에 추가되고 다음의 오퍼레이션에 의해 중복 기입되면, MIT는 레지스터를 포함하는 이동 제거 세트의 중간 상태를 반영하지 않는다.
2개 이상의 데이터 조작 오퍼레이션에 대한 종속성을 미리 계산하기 위하여, 로직(150)은, 제한되지 않지만, 도 9a 내지 9c에 의해 개략적으로 도시된 바와 같이, 동일한 프로세싱 라인에서 후속의 이동 오퍼레이션의 소스로서 사용되는 목적지 레지스터를 갖는 이동 오퍼레이션, 도 10a 내지 10c에 의해 개략적으로 도시된 바와 같이 소스와 동일한 레지스터를 이용하는 동일한 라인에서의 2개의 이동 오퍼레이션 및 도 11a 내지 11c에 의해 개략적으로 도시된 바와 같이 후속의 이동 오퍼레이션의 소스를 목적지/소스 레지스터로의 중간 기입(intervening write)과 매칭시키는 목적지 레지스터를 갖는 이동 오퍼레이션을 포함하는 몇가지 타입의 이동 오퍼레이션을 검출할 수 있다.
상술한 조합을 검출하기 위하여, 로직(150)은 몇 개의 명령의 소스 및 목적지를 비교하고, 이동 명령이 이동 제거를 위해 선택되었는지를 결정하고, 이동 제거 오퍼레이션의 소스가 이미 존재하는 이동 제거 세트에 존재하는지를 결정하고, 새로운 또는 기존의 이동 제거 세트에 포함되는 임의의 논리적 레지스터가 후속으로 중복 기입되는지를 결정할 수 있다. 결정된 MIT 칼럼 할당 데이터를 고려하여, 로직(150)은 영향받은 MIT 칼럼에 기록될 새로운 데이터를 생성하고 각각의 명령과 연관된 업데이트 데이터로서 새로운 또는 기존의 데이터를 선택하고 하나의 명령으로부터 상술한 소스 및 목적지 비교를 이용하는 다른 명령으로 데이터를 바이패스하고 MIT를 업데이트할 수 있다.
상술한 바와 같이, 이동 제거 로직은 하드웨어 또는 소프트웨어 또는 그 조합으로 구현될 수 있다. 로직(150)을 구현하는 예시적인 회로(800)는 도 12에 개략적으로 도시된다.
회로(800)는 특정 MIT 칼럼(이동 제거 세트) 내의 특정 논리적 레지스터에 대응하는 비트당 로직(Per Bit Logic)(802)을 포함할 수 있다. 회로(800)는 특정 MIT 칼럼(이동 제거 세트)에 대응하는 칼럼당 로직(Per Column Logic)(804)을 더 포함할 수 있다.
회로(800)는 각각의 매트릭스 비트에 대한 MIT의 이전 상태를 반영하는 PreviousData 신호(805), 로우에 매칭하는 논리적 소스를 갖는 프로세싱 라인 내의 각각의 이동 제거 명령을 식별하는 로우당 SourceMatch 신호(810), 하나의 MIT 로우로부터 다른 MIT 로우로(이동 제거 명령 논리적 소스 로우로부터 이동 제거 명령 논리적 목적지 로우로) 데이터를 카피할지를 식별하여 이동 제거 명령으로부터의 목적지 논리적 레지스터를 이전에 존재하는 이동 제거 세트에 추가(또는 모든 다른 이동 제거 세트로부터 분리)하는 프로세싱 라인 명령 당 SelectorCopy 신호(815), 및 MIT 로우로 기입될 프로세싱 라인 명령당 새로운 데이터를 포함하는 AllocationData 신호(820)를 포함하는 몇 개의 입력 신호를 수신할 수 있다. 이 데이터는 모든 이동 제거 세트로부터 MIT 로우에 의해 식별된 논리적 레지스터를 클리어하는 제로이거나 논리적 레지스터를 이동 제거 세트로 할당하는 데이터를 포함할 수 있다. 회로(800)는 상술한 신호를 프로세싱하여 새로운 MIT 데이터 출력 신호(830)를 산출할 수 있다.
CopyData 신호(832)는, 기존의 MIT 데이터를 SourceMatch 신호로 자격을 주어(qualify) 이동 명령의 소스인 논리적 레지스터를 나타내는 MIT 내의 하나의 로우로부터 데이터를 선택함으로써 생성될 수 있다.
SelectorCopy 신호(815)에 의해 제어된 Copy/Set 멀티플렉서(840)는 CopyData 신호 또는 AllocData 신호를 선택할 수 있다. SelectorCopy는 이동 명령의 소스를 나타내는 MIT 로우로부터의 데이터가 이동 명령의 목적지를 나타내는 다른 로우로 기입되어 목적지 레지스터를 기존의 이동 제거 세트에 추가해야 한다는 것을 나타낸다. SelectorCopy 신호는 로직(150)이 이동 제거 명령의 소스가 이미 이동 제거 세트에 참여하였고 논리적 레지스터가 프로세싱 라인에서 이전의 명령에 의해 중복 기입되지 않았다는 것을 결정할 때 설정된다. 이동 제거 세트에 참여하는 것은, SourceMatch 신호(810)를 이용하여 MIT로부터의 로우에 자격을 주고 로우 내의 임의의 비트가 설정되는지를 보기 위해 체크함으로써 결정된다.
인라인 바이패스 멀티플렉스(835)에 대한 제어는 실행 라인 내의 종속성을 계산, 예를 들어, 제1 이동 명령의 목적지를 제2 이동 명령의 소스와 비교할 수 있다. 종속성이 검출되면 이전의 명령에 대한 데이터는 835에서 후속의 명령으로 바이패스될 수 있다. 인라인 바이패스 멀티플렉서(835)의 출력 신호는 업데이트 데이터 멀티플렉서(845)의 입력에 공급될 수 있다. 업데이트 데이터 멀티플렉서(845)의 다른 입력은 MIT 칼럼에 단 하나의 비트 세트가 존재하는지를 나타내는 ClearOrphan 신호(850)에 의해 자격을 얻은 이전 데이터(PreviousData) 신호(805)에 의해 제공될 수 있다. 선택기 업데이트 데이터 신호(825)에 의해 제어된 업데이트 데이터 멀티플렉서(845)는 새로운 MIT 데이터 신호(850)를 출력할 수 있다. 선택기 업데이트 데이터 신호(825)는 우선순위 인코딩되어 마지막 참조로부터 논리적 레지스터로 바이패스된 데이터는 새로운 MIT 데이터 신호(850)로 출력된다.
예를 들어 회로(800)에 의해 구현되는 로직(150)의 기능은 도 9 내지 11의 예를 참조하여 더 설명한다. 도 9a 내지 9c는 예시적인 체인 이동 AX->BX->CX에 의해 제공되는 동일한 프로세싱 라인에서 후속의 이동 오퍼레이션의 소스로서 사용되는 목적지 레지스터를 갖는 이동 오퍼레이션을 개략적으로 나타낸다. 도 9a는 MIT의 초기 상태를 나타낸다. 도 9b는 MIT 할당을 나타내고, 칼럼 0 및 1은 uop0(MOV BX, AX) 및 uop1(MOV CX, BX)에 대하여 각각 할당된다. 오퍼레이션의 소스는 기존 이동 제거 세트의 멤버가 아니기 때문에, 양 uop에 대하여 CopyData 신호(832)는 0이고 SelectorCopy신호(815)는 Copy/Set 멀티플렉서(840)를 통해 인라인 바이패스 멀티플렉서(835)로 양 uop에 대한 AllocData(820)를 전송할 것이다. 도 9c에 도시된 바와 같이, 로직(150)은 제1 이동 오퍼레이션(MOV BX, AX)의 목적지가 제2 이동 오퍼레이션(MOV CX, BX)의 소스와 매칭하는 것을 검출한다. 인라인 바이패스 멀티플렉서(835)는 제2 이동 오퍼레이션(AllocData[Uop1])에 대응하는 데이터보다 오히려 제1 이동 오퍼레이션(AllocData[uop0])에 대응하는 카피/할당 데이터를 선택하여 입력 데이터로서 업데이트 데이터 멀티플렉서(845)에 공급한다. 따라서, UpdateData[Uop0] 및 UpdateData[Uop1]는 동일하다. 업데이트 데이터 멀티플렉스(845)의 출력이 우선순위 인코딩되므로, 논리적 레지스터를 참조하는 마지막 오퍼레이션에 대응하는 바이패스된 데이터는 새로운 MIT 데이터가 된다. 제2 이동 오퍼레이션은 이들 레지스터를 참조하는 마지막 오퍼레이션이기 때문에, 업데이트 데이터 멀티플렉서(845)는 AX에 대한 새로운 데이터로서 제1 이동 오퍼레이션(UpdateData[Uop0])에 대응하는 데이터 및 양 BX 및 CX에 대한 새로운 데이터로서 제2 이동 오퍼레이션(UpdateData[Uop1])에 대응하는 바이패스된 데이터를 선택한다. 그러나, 바이패스 메카니즘 때문에, 동일한 데이터가 3개의 모든 엔트리에 기재된다.
도 10a 내지 10c는 MOV BX, DX; MOV AX, DX의 예에 의해 제공된 소스와 동일한 레지스터를 이용한 하나의 라인에서의 2개의 이동 오퍼레이션을 개략적으로 나타낸다. 도 10a는 MIT의 초기 상태를 나타낸다. 도 10b는 MIT 할당을 나타내고, 칼럼 1 및 2은 uop0(MOV BX, DX) 및 uop1(MOV AX, DX)에 대하여 각각 할당된다. 오퍼레이션의 소스는 기존 이동 제거 세트의 멤버가 아니기 때문에, 양 uop에 대하여 CopyData 신호(832)는 0이고 SelectorCopy 신호(815)는 Copy/Set 멀티플렉서(840)를 통해 인라인 바이패스 멀티플렉서(835)로 양 uop에 대한 AllocData(820)를 전송할 것이다. 도 10c에 도시된 바와 같이, 도 9a 내지 9c의 예와 마찬가지로, 로직(150)은 제1 이동 오퍼레이션에 대하여 카피 또는 할당 데이터를 선택할지를 결정한다. 제2 이동 오퍼레이션을 위하여, 로직(150)은 이동 오퍼레이션이 이전의 이동 제거 오퍼레이션과 소스를 공유하는 것을 결정하고, 따라서, 인라인 바이패스 멀티플렉서(835)는 제2 이동 오퍼레이션(AllocData[Uop1])에 대응하는 데이터보다 오히려 제1 이동 오퍼레이션(AllocData[uop0])에 대응하는 카피/할당 데이터를 선택하여 입력 데이터로서 업데이트 데이터 멀티플렉서(845)에 공급한다. 따라서, UpdateData[uop0] 및 UpdateData[uop1]는 동일하다. 제2 이동 오퍼레이션은 이들 레지스터를 참조하는 마지막 오퍼레이션이기 때문에, 업데이트 데이터 멀티플렉서(845)는 BX에 대한 새로운 데이터(UpdateData[uop0])로서 제1 이동 오퍼레이션에 대응하는 데이터 및 양 DX 및 AX에 대한 새로운 데이터(UpdateData[uop1])로서 제2 이동 오퍼레이션에 대응하는 바이패스된 데이터를 선택한다. 그러나, 바이패스 메카니즘 때문에, 동일한 데이터가 3개의 모든 엔트리에 기재된다.
도 11a 내지 11c는 이동 체인이 이동 제거 레지스터(MOV BX, AX; 중복 기입 BX; MOV DX, BX)로의 중간 기입에 의해 끊어진 라인에서 2개의 이동 명령의 예를 개략적으로 나타낸다. 도 11a는 MIT의 초기 상태를 나타낸다. 도 11b는 MIT 할당을 나타내고, MIT 칼럼 1 및 2은 uop0(MOV BX, AX) 및 uop2(MOV DX, BX)에 대하여 각각 할당된다. 도 11c에 도시된 바와 같이, 도 9a 내지 9c 및 10a 내지 10c의 예와 마찬가지로, 로직(150)은 이동 오퍼레이션의 소스가 이미 기존의 이동 제거 세트의 멤버인지를 결정하고 해당 데이터를 Copy/Set 멀티플렉서(840)로 공급한다. 이 경우, Copy/Set 멀티플렉서(840)는 uop0에 대하여 CopyData[uop0]를 통과하고, uop1에 대하여 AllocData[uop1]를 통과하고, uop2에 대하여 AllocData[uop2]를 통과한다. uop1에 대한 AllocData는 임의의 세트로부터 레지스터를 제거하기 보다는 이동 제거 세트를 생성하지 않기 때문에 모두 제로이다. 로직(150)은 제2 이동 오퍼레이션의 소스가 제1 이동 오퍼레이션의 목적지와 매칭하는 것을 결정하고 중간 오퍼레이션이 레지스터를 중복 기입하는 것을 결정한다. 그러므로, 바이패스 메카니즘은 취소되고, 3개의 이동 오퍼레이션의 결과는 개별 처리된다: AX는 제1 이동 오퍼레이션(CopyData[Uop0] 신호)의 데이터를 수신하고, BX 및 DX는 제2 이동 오퍼레이션(AllocData[Uop2])의 데이터를 수신한다. 업데이트 데이터 멀티플렉서(845)의 입력은 우선순위 인코딩되므로, 제2 이동 오퍼레이션에 대응하는 데이터는 BX에 대한 새로운 데이터가 된다. 따라서, 바이패스 로직 오퍼레이션 때문에, MIT 칼럼 0에 배치하고 칼럼 0으로부터 제거하고 칼럼 2에 배치하는 BX의 중간 업데이트가 이루어지지 않는다.
소정의 구현예에서, 프로세서는 정수 범용 논리적 레지스터(INT:integer general purpose logical register) 및 SSE(Streaming Single Instruction Multiple Data (SIMD) Extensions) 논리적 레지스터 도메인 내의 이동 명령을 제거할 수 있다. SSE 도메인은 또한 SSE의 수퍼세트 도메인인 AVX(Advanced Vector Extensions)에 대한 논리적 레지스터 도메인을 포함할 수 있다. 구현예의 효율을 더 개선하기 위하여, 프로세서는 이동 오퍼레이션에 수반되는 레지스터의 타입과 관계없이 각 이동 오퍼레이션에 대한 SSE 및 INT MIT 내의 이동 제거 세트를 예약할 수 있다. 실제로 수행되는 이동 제거의 수를 잠재적으로 감소시킴에도 불구하고, SSE 이동 오퍼레이션은 INT 명령에 의해 사용되는 INT 이동 제거 세트를 예약할 수 있으므로, 상술한 통일된 예약 메카니즘은 프로세서에 의해 명령 실행의 전체 효율을 더 증가시킬 수 있다.
따라서, 여기에 기재된 바이패스 MIT 설계는, 병렬 계산에 의해 MIT 업데이트에 대한 지연을 감소시키고, 고아 칼럼의 액티브 클리어를 수행하고 통일된 예약 메카니즘을 구현함으로써 프로세서 성능을 개선한다.
도 13은 본 개시물의 하나 이상의 양태에 따라 바이패스 MIT에 의한 예시적인 이동 제거 방법의 흐름도이다. 방법(900)은 하드웨어(예를 들어, 회로, 전용 로직 및/또는 프로그래머블 로직), 소프트웨어(예를 들어, 하드웨어 시뮬레이션을 수행하는 컴퓨터 시스템 상에서 실행가능한 명령) 또는 그 조합을 포함할 수 있는 컴퓨터 시스템에 의해 수행될 수 있다. 방법(method)(900) 및/또는 그 기능(function), 루틴, 서브루틴 또는 오퍼레이션의 각각은 방법을 실행하는 컴퓨터 시스템의 하나 이상의 물리적 프로세서에 의해 수행될 수 있다. 방법(900)의 2 이상의 기능, 루틴, 서브루틴 또는 오퍼레이션은 상술한 순서와 다를 수 있는 순서로 또는 동시에 수행될 수 있다. 일 예에서, 도 13에 도시된 바와 같이, 방법(900)은 도 1의 컴퓨터 시스템(100)에 의해 수행될 수 있다.
도 13을 참조하면, 블록(910)에서, 프로세서는 PRF에 복수의 레지스터 값을 저장할 수 있다.
블록(920)에서, 프로세서는 RAT에 복수의 포인터를 저장할 수 있고, 각각의 RAT 포인터는 PRF 엘리먼트를 참조한다.
블록(930)에서, 프로세서는 MIT에 복수의 이동 제거 세트를 저장할 수 있다. 각각의 이동 제거 세트는 복수의 논리적 레지스터를 나타내는 복수의 비트를 포함할 수 있다.
블록(940)에서, 프로세서는 2개 이상의 데이터 조작 오퍼레이션에 대한 종속성을 미리 계산할 수 있다.
블록(950)에서, 프로세서는 RAT 및/또는 MIT를 업데이트함으로써 2 이상의 데이터 조작 오퍼레이션의 결과를 반영할 수 있다. 상술한 바와 같이, 소정의 구현예에서, 프로세서는 2개 이상의 데이터 조작 오퍼레이션에 대한 종속성을 미리 계산하고, 그 후, 단일 MIT 업데이트를 수행하여 2개 이상의 오퍼레이션의 결과를 반영하여, 이동 제거 오퍼레이션의 타이밍 및 파워 소비 양태를 개선할 수 있다. 블록(950)에 의해 참조된 오퍼레이션을 완료하면, 방법은 종료할 수 있다.
도 14는 본 개시물의 하나 이상의 양태에 따른 예시적인 컴퓨터 시스템의 블록도이다. 도 14에 도시된 바와 같이, 멀티프로세서 시스템(700)은 포인트-투-포인트 상호접속 시스템이고, 포인트-투-포인트 상호접속부(750)를 통해 연결된 제1 프로세서(770) 및 제2 프로세서(780)를 포함한다. 프로세서(770 및 780)의 각각은 위에서 더 상세히 설명하는 바와 같이 트랜잭션 메모리 액세스 오퍼레이션 및/또는 비트랜잭션 메모리 액세스 오퍼레이션을 실행할 수 있는 일부의 버전의 프로세서(102)일 수 있다.
단 2개의 프로세서(770 및 780)를 갖는 것으로 도시되지만, 본 발명의 범위는 이에 한정되지 않는다는 것에 유의한다. 다른 실시예에서, 하나 이상의 추가의 프로세서가 소정의 프로세서에 존재할 수 있다.
프로세서(770 및 780)는 각각 집적된 메모리 제어기 유닛(772 및 782)을 포함하는 것으로 도시된다. 프로세서(770)는 또한 그 버스 제어기 유닛의 일부로서 포인트-투-포인트(P-P) 인터페이스(776 및 778)를 포함하고, 마찬가지로, 제2 프로세서(780)는 P-P 인터페이스(786 및 788)를 포함한다. 프로세서(770, 780)는 P-P 인터페이스 회로(778, 788)를 이용하여 포인트-투-포인트(P-P) 인터페이스(750)를 통해 정보를 교환할 수 있다. 도 14에 도시된 바와 같이, IMC(772 및 782)는 프로세서를 각각의 프로세서에 국부적으로 부착된 메인 메모리의 일부일 수 있는 각각의 메모리, 즉, 메모리(732) 및 메모리(734)에 연결한다.
프로세서(770, 780)는 각각 포인트-투-포인트 인터페이스 회로(776, 794, 786, 798)를 이용하여 개별 P-P 인터페이스(752, 754)를 통해 칩셋(790)과 정보를 교환할 수 있다. 칩셋(790)은 또한 고성능 그래픽 인터페이스(739)를 통해 고성능 그래픽 회로(738)와 정보를 교환할 수 있다.
공유 캐시(미도시)는 P-P 상호접속부를 통해 프로세서와 접속되어 양 프로세서의 밖 또는 어느 하나의 프로세서 내에 포함되어, 프로세서가 저전력 모드가 되면 어느 하나 또는 양 프로세서의 로컬 캐시 정보가 공유 캐시에 저장될 수 있다.
칩셋(790)은 인터페이스(796)를 통해 제1 버스(716)에 연결될 수 있다. 일 실시예에서, 제1 버스(716)는 PCI(Peripheral Component Interconnect) 버스 또는 PCI Express 버스 또는 다른 3세대 I/O 상호접속 버스 등의 버스일 수 있지만, 본 발명의 범위는 이에 한정되지 않는다.
도 14에 도시된 바와 같이, 다양한 I/O 장치(714)는, 제1 버스(716)를 제2 버스(720)에 연결하는 버스 브리지(718)와 함께 제1 버스(716)에 연결될 수 있다. 일 실시예에서, 제2 버스(720)는 LPC(low pin count) 버스일 수 있다. 일 실시예에서, 예를 들어, 키보드 및/또는 마우스(722), 통신 장치(727) 및 디스크 드라이브 또는 명령/코드 및 데이터(730)를 포함할 수 있는 다른 대용량 스토리지 장치 등의 스토리지 유닛(728)을 포함하는 다양한 장치는 제2 버스(720)에 연결될 수 있다. 또한, 오디오 I/O(724)는 제2 버스(720)에 연결될 수 있다. 또한, 다른 아키텍쳐가 가능하다는 것에 유의한다. 예를 들어, 도 14의 포인트-투-포인트 아키텍쳐 대신에, 시스템은 멀티-드롭(multi-drop) 버스 또는 다른 이러한 아키텍쳐를 구현할 수 있다.
다음의 예는 본 개시물의 하나 이상의 양태에 따른 다양한 구현예를 나타낸다.
예 1은 복수의 물리적 레지스터 값을 저장하도록 구성되는 제1 데이터 구조; 복수의 포인터를 저장하도록 구성되는 제2 데이터 구조 - 각각의 포인터는 제1 데이터 구조의 엘리먼트를 참조함 -; 복수의 이동 제거 세트를 포함하는 제3 데이터 구조 - 각각의 이동 제거 세트는 복수의 논리적 레지스터를 나타내는 복수의 비트를 포함함 -; 및 제2 데이터 구조의 엘리먼트가 제1 데이터 구조의 엘리먼트를 참조하도록 함으로써 데이터 조작 오퍼레이션을 수행하도록 구성되는 로직을 포함하고, 로직은 제3 데이터 구조의 단일 업데이트를 수행함으로써 2 이상의 데이터 조작 오퍼레이션의 결과를 반영하도록 더 구성되는 프로세싱 시스템이다.
예 2에서, 예 1의 프로세싱 시스템의 제3 데이터 구조의 업데이트는 이동 제거 세트의 생성, 이동 제거 세트의 변경 또는 이동 제거 세트의 회수(reclaiming) 중의 적어도 하나를 포함할 수 있다.
예 3에서, 예 1의 프로세싱 시스템의 로직은 2 이상의 데이터 조작 오퍼레이션의 종속성을 미리 계산하는 것에 기초하여 제3 데이터 구조를 업데이트하도록 구성될 수 있다.
예 4에서, 예 1의 프로세싱 시스템의 로직은 정수 범용 논리적 레지스터 도메인 내의 제1 이동 제거 세트 또는 SSE(Streaming Single Instruction Multiple Data (SIMD) Extensions) 논리적 레지스터 도메인 내의 제2 이동 제거 세트 중의 적어도 하나를 예약하도록 구성될 수 있다.
예 5에서, 예 1의 프로세싱 시스템의 로직은 제3 데이터 구조의 이전 상태를 반영한 제1 신호, 데이터 조작 오퍼레이션에 대한 소스 논리적 레지스터를 식별하는 제2 신호, 데이터 조작 오퍼레이션에 대한 목적지 논리적 레지스터를 식별하는 제3 신호, 기존의 이동 제거 세트가 적어도 하나의 참조를 포함하는지를 식별하는 제4 신호, 제3 데이터 구조 내의 새로운 이동 제거 세트를 식별하는 제5 신호 및 데이터 조작 오퍼레이션이 이동 제거를 위해 선택되었는지를 식별하는 제6 신호 중의 적어도 하나를 프로세싱함으로써 제3 데이터 구조를 업데이트하는 신호를 출력하도록 구성될 수 있다.
예 6에서, 예 1의 프로세싱 시스템의 로직은 제2 데이터 조작 오퍼레이션의 소스에 매칭하는 목적지 레지스터를 갖는 제1 데이터 조작 오퍼레이션, 소스 레지스터로의 중간 기입에 의해 소스로서 공통 레지스터를 이용하는 2개의 데이터 조작 오퍼레이션, 소스로서 공통 레지스터를 이용하는 2개의 데이터 조작 오퍼레이션, 목적지 레지스터로의 중간 기입에 의해 제2 데이터 조작 오퍼레이션의 소스와 매칭하는 목적지 레지스터를 갖는 제1 데이터 조작 오퍼레이션, 또는 기존의 이동 제거 세트에 의해 참조되고 제2 데이터 조작 오퍼레이션의 소스인 레지스터를 중복 기입하는 제1 데이터 조작 오퍼레이션 중의 적어도 하나를 검출하도록 구성될 수 있다.
예 7은 컴퓨터 시스템에 의해 복수의 물리적 레지스터 값을 제1 데이터 구조에 저장하는 단계; 복수의 포인터를 제2 데이터 구조에 저장하는 단계 - 각각의 포인터는 제1 데이터 구조의 엘리먼트를 참조함 -; 복수의 이동 제거 세트를 제3 데이터 구조에 저장하는 단계 - 각각의 이동 제거 세트는 복수의 논리적 레지스터를 나타내는 복수의 비트를 포함함 -; 제2 데이터 구조의 엘리먼트가 제1 데이터 구조의 엘리먼트를 참조하도록 함으로써 데이터 조작 오퍼레이션을 수행하는 단계; 및 제3 데이터 구조의 단일 업데이트를 수행함으로써 2개 이상의 데이터 조작 오퍼레이션의 결과를 반영하는 단계를 포함하는 데이터 조작 오퍼레이션을 수행하는 방법이다.
예 8에서, 예 7의 방법의 제3 데이터 구조의 업데이트는 이동 제거 세트의 생성, 이동 제거 세트의 변경 또는 이동 제거 세트의 회수(reclaiming) 중의 적어도 하나를 포함할 수 있다.
예 9에서, 예 7의 방법은 정수 범용 논리적 레지스터 도메인 내의 제1 이동 제거 세트 또는 SSE(Streaming Single Instruction Multiple Data (SIMD) Extensions) 논리적 레지스터 도메인 내의 제2 이동 제거 세트 중의 적어도 하나를 예약하는 단계를 더 포함할 수 있다.
예 10에서, 예 7의 방법은 제3 데이터 구조의 이전 상태를 반영한 제1 신호, 데이터 조작 오퍼레이션에 대한 소스 논리적 레지스터를 식별하는 제2 신호, 데이터 조작 오퍼레이션에 대한 목적지 논리적 레지스터를 식별하는 제3 신호, 기존의 이동 제거 세트가 적어도 하나의 참조를 포함하는지를 식별하는 제4 신호, 제3 데이터 구조 내의 새로운 이동 제거 세트를 식별하는 제5 신호 및 데이터 조작 오퍼레이션이 이동 제거를 위해 선택되었는지를 식별하는 제6 신호 중의 적어도 하나를 프로세싱함으로써 제3 데이터 구조를 업데이트하는 신호를 출력하는 단계를 더 포함할 수 있다.
예 11에서, 예 7의 방법은 제2 데이터 조작 오퍼레이션의 소스에 매칭하는 목적지 레지스터를 갖는 제1 데이터 조작 오퍼레이션, 소스 레지스터로의 중간 기입에 의해 소스로서 공통 레지스터를 이용하는 2개의 데이터 조작 오퍼레이션, 소스로서 공통 레지스터를 이용하는 2개의 데이터 조작 오퍼레이션, 목적지 레지스터로의 중간 기입에 의해 제2 데이터 조작 오퍼레이션의 소스와 매칭하는 목적지 레지스터를 갖는 제1 데이터 조작 오퍼레이션, 또는 기존의 이동 제거 세트에 의해 참조되고 제2 데이터 조작 오퍼레이션의 소스인 레지스터를 중복 기입하는 제1 데이터 조작 오퍼레이션 중의 적어도 하나를 검출하는 단계를 더 포함할 수 있다.
예 12에서, 예 7의 방법의 제3 데이터 구조의 업데이트는 2 이상의 데이터 조작 오퍼레이션의 종속성을 미리 계산하는 것에 기초하여 수행될 수 있다.
예 13은 복수의 물리적 레지스터 값을 저장하도록 구성되는 제1 데이터 구조; 복수의 포인터를 저장하도록 구성되는 제2 데이터 구조 - 각각의 포인터는 제1 데이터 구조의 엘리먼트를 참조함 -; 복수의 제1 이동 제거 세트 및 복수의 제2 이동 제거 세트를 포함하는 제3 데이터 구조 - 복수의 제1 이동 제거 세트의 각각의 이동 제거 세트는 복수의 정수 논리적 레지스터를 나타내는 복수의 비트를 포함하고 복수의 제2 이동 제거 세트의 각각의 이동 제거 세트는 복수의 SSE(Streaming Single Instruction Multiple Data (SIMD) Extensions) 논리적 레지스터를 나타내는 복수의 비트를 포함함 -; 및 복수의 제1 이동 제거 세트의 제1 이동 제거 세트 및 복수의 제2 이동 제거 세트의 제2 이동 제거 세트를 예약하도록 구성되는 로직을 포함하고, 로직은 제2 데이터 구조 및 제1 이동 제거 세트 또는 제2 이동 제거 세트 중의 하나를 업데이트함으로써 데이터 조작 오퍼레이션을 수행하도록 더 구성되는 프로세싱 시스템이다.
예 14에서, 예 13의 프로세싱 시스템의 로직은 제3 데이터 구조의 이전 상태를 반영한 제1 신호, 데이터 조작 오퍼레이션에 대한 소스 논리적 레지스터를 식별하는 제2 신호, 데이터 조작 오퍼레이션에 대한 목적지 논리적 레지스터를 식별하는 제3 신호, 기존의 이동 제거 세트가 적어도 하나의 참조를 포함하는지를 식별하는 제4 신호, 제3 데이터 구조 내의 새로운 이동 제거 세트를 식별하는 제5 신호 및 데이터 조작 오퍼레이션이 이동 제거를 위해 선택되었는지를 식별하는 제6 신호 중의 적어도 하나를 프로세싱함으로써 제3 데이터 구조를 업데이트하는 신호를 출력하도록 더 구성될 수 있다.
예 15에서, 예 13의 프로세싱 시스템의 로직은 제2 데이터 조작 오퍼레이션의 소스에 매칭하는 목적지 레지스터를 갖는 제1 데이터 조작 오퍼레이션, 소스 레지스터로의 중간 기입에 의해 소스로서 공통 레지스터를 이용하는 2개의 데이터 조작 오퍼레이션, 소스로서 공통 레지스터를 이용하는 2개의 데이터 조작 오퍼레이션, 목적지 레지스터로의 중간 기입에 의해 제2 데이터 조작 오퍼레이션의 소스와 매칭하는 목적지 레지스터를 갖는 제1 데이터 조작 오퍼레이션, 또는 기존의 이동 제거 세트에 의해 참조되고 제2 데이터 조작 오퍼레이션의 소스인 레지스터를 중복 기입하는 제1 데이터 조작 오퍼레이션 중의 적어도 하나를 검출하도록 더 구성될 수 있다.
예 16에서, 예 13의 프로세싱 시스템의 로직은 2 이상의 데이터 조작 오퍼레이션의 종속성을 미리 계산하고, 제3 데이터 구조의 단일 업데이트를 수행함으로써 2 이상의 데이터 조작 오퍼레이션의 결과를 반영하도록 더 구성될 수 있다.
예 17에서, 예 13의 프로세싱 시스템의 로직은 이동 제거 세트의 생성, 이동 제거 세트의 변경 또는 이동 제거 세트의 회수(reclaiming) 중의 적어도 하나를 수행하도록 더 구성될 수 있다.
예 18은 컴퓨터 시스템에 의해 복수의 물리적 레지스터 값을 제1 데이터 구조에 저장하는 단계; 복수의 포인터를 제2 데이터 구조에 저장하는 단계 - 각각의 포인터는 제1 데이터 구조의 엘리먼트를 참조함 -; 복수의 제1 이동 제거 세트 및 복수의 제2 이동 제거 세트를 제3 데이터 구조에 저장하는 단계 - 복수의 제1 이동 제거 세트의 각각의 이동 제거 세트는 복수의 정수 논리적 레지스터를 나타내는 복수의 비트를 포함하고 복수의 제2 이동 제거 세트의 각각의 이동 제거 세트는 복수의 SSE(Streaming Single Instruction Multiple Data (SIMD) Extensions) 논리적 레지스터를 나타내는 복수의 비트를 포함함 -; 복수의 제1 이동 제거 세트의 제1 이동 제거 세트 및 복수의 제2 이동 제거 세트의 제2 이동 제거 세트를 예약하는 단계; 및 제2 데이터 구조 및 제1 이동 제거 세트 또는 제2 이동 제거 세트 중의 하나를 업데이트함으로써 데이터 조작 오퍼레이션을 수행하는 단계를 포함하는 데이터 조작 오퍼레이션을 수행하는 방법이다.
예 19에서, 예 18의 방법은 제3 데이터 구조의 이전 상태를 반영한 제1 신호, 데이터 조작 오퍼레이션에 대한 소스 논리적 레지스터를 식별하는 제2 신호, 데이터 조작 오퍼레이션에 대한 목적지 논리적 레지스터를 식별하는 제3 신호, 기존의 이동 제거 세트가 적어도 하나의 참조를 포함하는지를 식별하는 제4 신호, 제3 데이터 구조 내의 새로운 이동 제거 세트를 식별하는 제5 신호 및 데이터 조작 오퍼레이션이 이동 제거를 위해 선택되었는지를 식별하는 제6 신호 중의 적어도 하나를 프로세싱함으로써 제3 데이터 구조를 업데이트하는 신호를 출력하는 단계를 더 포함할 수 있다.
예 20에서, 예 18의 방법은 제2 데이터 조작 오퍼레이션의 소스에 매칭하는 목적지 레지스터를 갖는 제1 데이터 조작 오퍼레이션, 소스 레지스터로의 중간 기입에 의해 소스로서 공통 레지스터를 이용하는 2개의 데이터 조작 오퍼레이션, 소스로서 공통 레지스터를 이용하는 2개의 데이터 조작 오퍼레이션, 목적지 레지스터로의 중간 기입에 의해 제2 데이터 조작 오퍼레이션의 소스와 매칭하는 목적지 레지스터를 갖는 제1 데이터 조작 오퍼레이션, 또는 기존의 이동 제거 세트에 의해 참조되고 제2 데이터 조작 오퍼레이션의 소스인 레지스터를 중복 기입하는 제1 데이터 조작 오퍼레이션 중의 적어도 하나를 검출하는 단계를 더 포함할 수 있다.
예 21에서, 예 18의 방법은 2 이상의 데이터 조작 오퍼레이션의 종속성을 미리 계산하는 단계 및 제3 데이터 구조의 단일 업데이트를 수행함으로써 2 이상의 데이터 조작 오퍼레이션의 결과를 반영하는 단계를 더 포함할 수 있다.
예 22에서, 예 18의 방법은 이동 제거 세트의 생성, 이동 제거 세트의 변경 또는 이동 제거 세트의 회수(reclaiming) 중의 적어도 하나를 수행하는 단계를 더 포함할 수 있다.
예 23은 컴퓨터 시스템에 의해 실행될 때, 컴퓨터 시스템이, 컴퓨터 시스템에 의해, 복수의 물리적 레지스터 값을 제1 데이터 구조에 저장하는 단계; 복수의 포인터를 제2 데이터 구조에 저장하는 단계 - 각각의 포인터는 제1 데이터 구조의 엘리먼트를 참조함 -; 복수의 이동 제거 세트를 제3 데이터 구조에 저장하는 단계 - 각각의 이동 제거 세트는 복수의 논리적 레지스터를 나타내는 복수의 비트를 포함함 -; 제2 데이터 구조의 엘리먼트가 제1 데이터 구조의 엘리먼트를 참조하도록 함으로써 데이터 조작 오퍼레이션을 수행하는 단계; 및 제3 데이터 구조의 단일 업데이트를 수행함으로써 2개 이상의 데이터 조작 오퍼레이션의 결과를 반영하는 단계를 포함하는 오퍼레이션을 수행하도록 하는 실행가능한 명령을 포함하는 컴퓨터 판독가능 비일시적 저장 매체이다.
예 24에서, 예 23의 제3 데이터 구조의 업데이트는 이동 제거 세트의 생성, 이동 제거 세트의 변경 또는 이동 제거 세트의 회수(reclaiming) 중의 적어도 하나를 포함할 수 있다.
예 25에서, 예 23의 컴퓨터 판독가능 비일시적 저장 매체 상에 저장된 실행가능한 명령은 또한 컴퓨터 시스템이 2 이상의 데이터 조작 오퍼레이션의 종속성을 미리 계산하는 것에 기초하여 제3 데이터 구조를 업데이트하도록 할 수 있다.
예 26에서, 예 23의 컴퓨터 판독가능 비일시적 저장 매체 상에 저장된 실행가능한 명령은 또한 컴퓨터 시스템이 정수 범용 논리적 레지스터 도메인 내의 제1 이동 제거 세트 또는 SSE(Streaming Single Instruction Multiple Data (SIMD) Extensions) 논리적 레지스터 도메인 내의 제2 이동 제거 세트 중의 적어도 하나를 예약하도록 할 수 있다.
예 27에서, 예 23의 컴퓨터 판독가능 비일시적 저장 매체 상에 저장된 실행가능한 명령은 또한 컴퓨터 시스템이 제3 데이터 구조의 이전 상태를 반영한 제1 신호, 데이터 조작 오퍼레이션에 대한 소스 논리적 레지스터를 식별하는 제2 신호, 데이터 조작 오퍼레이션에 대한 목적지 논리적 레지스터를 식별하는 제3 신호, 기존의 이동 제거 세트가 적어도 하나의 참조를 포함하는지를 식별하는 제4 신호, 제3 데이터 구조 내의 새로운 이동 제거 세트를 식별하는 제5 신호 및 데이터 조작 오퍼레이션이 이동 제거를 위해 선택되었는지를 식별하는 제6 신호 중의 적어도 하나를 프로세싱함으로써 제3 데이터 구조를 업데이트하는 신호를 출력하도록 할 수 있다.
예 28에서, 예 23의 컴퓨터 판독가능 비일시적 저장 매체 상에 저장된 실행가능한 명령은 또한 컴퓨터 시스템이 제2 데이터 조작 오퍼레이션의 소스에 매칭하는 목적지 레지스터를 갖는 제1 데이터 조작 오퍼레이션, 소스 레지스터로의 중간 기입에 의해 소스로서 공통 레지스터를 이용하는 2개의 데이터 조작 오퍼레이션, 소스로서 공통 레지스터를 이용하는 2개의 데이터 조작 오퍼레이션, 목적지 레지스터로의 중간 기입에 의해 제2 데이터 조작 오퍼레이션의 소스와 매칭하는 목적지 레지스터를 갖는 제1 데이터 조작 오퍼레이션, 또는 기존의 이동 제거 세트에 의해 참조되고 제2 데이터 조작 오퍼레이션의 소스인 레지스터를 중복 기입하는 제1 데이터 조작 오퍼레이션 중의 적어도 하나를 검출하도록 할 수 있다.
예 29는 컴퓨터 시스템에 의해 실행될 때, 컴퓨터 시스템이, 복수의 물리적 레지스터 값을 제1 데이터 구조에 저장하는 단계; 복수의 포인터를 제2 데이터 구조에 저장하는 단계 - 각각의 포인터는 제1 데이터 구조의 엘리먼트를 참조함 -; 복수의 제1 이동 제거 세트 및 복수의 제2 이동 제거 세트를 제3 데이터 구조에 저장하는 단계 - 복수의 제1 이동 제거 세트의 각각의 이동 제거 세트는 복수의 정수 논리적 레지스터를 나타내는 복수의 비트를 포함하고 복수의 제2 이동 제거 세트의 각각의 이동 제거 세트는 복수의 SSE(Streaming Single Instruction Multiple Data (SIMD) Extensions) 논리적 레지스터를 나타내는 복수의 비트를 포함함 -; 복수의 제1 이동 제거 세트의 제1 이동 제거 세트 및 복수의 제2 이동 제거 세트의 제2 이동 제거 세트를 예약하는 단계; 및 제2 데이터 구조 및 제1 이동 제거 세트 또는 제2 이동 제거 세트 중의 하나를 업데이트함으로써 데이터 조작 오퍼레이션을 수행하는 단계를 포함하는 오퍼레이션을 수행하도록 하는 실행가능한 명령을 포함하는 컴퓨터 판독가능 비일시적 저장 매체이다.
예 30에서, 예 29의 컴퓨터 판독가능 비일시적 저장 매체 상에 저장된 실행가능한 명령은, 또한 컴퓨터 시스템이 제3 데이터 구조의 이전 상태를 반영한 제1 신호, 데이터 조작 오퍼레이션에 대한 소스 논리적 레지스터를 식별하는 제2 신호, 데이터 조작 오퍼레이션에 대한 목적지 논리적 레지스터를 식별하는 제3 신호, 기존의 이동 제거 세트가 적어도 하나의 참조를 포함하는지를 식별하는 제4 신호, 제3 데이터 구조 내의 새로운 이동 제거 세트를 식별하는 제5 신호 및 데이터 조작 오퍼레이션이 이동 제거를 위해 선택되었는지를 식별하는 제6 신호 중의 적어도 하나를 프로세싱함으로써 제3 데이터 구조를 업데이트하도록 할 수 있다.
예 31에서, 예 29의 컴퓨터 판독가능 비일시적 저장 매체 상에 저장된 실행가능한 명령은, 또한 컴퓨터 시스템이 제2 데이터 조작 오퍼레이션의 소스에 매칭하는 목적지 레지스터를 갖는 제1 데이터 조작 오퍼레이션, 소스 레지스터로의 중간 기입에 의해 소스로서 공통 레지스터를 이용하는 2개의 데이터 조작 오퍼레이션, 소스로서 공통 레지스터를 이용하는 2개의 데이터 조작 오퍼레이션, 목적지 레지스터로의 중간 기입에 의해 제2 데이터 조작 오퍼레이션의 소스와 매칭하는 목적지 레지스터를 갖는 제1 데이터 조작 오퍼레이션, 또는 기존의 이동 제거 세트에 의해 참조되고 제2 데이터 조작 오퍼레이션의 소스인 레지스터를 중복 기입하는 제1 데이터 조작 오퍼레이션 중의 적어도 하나를 검출하도록 할 수 있다.
예 32에서, 예 29의 컴퓨터 판독가능 비일시적 저장 매체 상에 저장된 실행가능한 명령은, 또한 컴퓨터 시스템이 2 이상의 데이터 조작 오퍼레이션의 종속성을 미리 계산하고, 제3 데이터 구조의 단일 업데이트를 수행함으로써 2 이상의 데이터 조작 오퍼레이션의 결과를 반영하도록 할 수 있다.
예 33에서, 예 29의 컴퓨터 판독가능 비일시적 저장 매체 상에 저장된 실행가능한 명령은, 또한 컴퓨터 시스템이 이동 제거 세트의 생성, 이동 제거 세트의 변경 또는 이동 제거 세트의 회수(reclaiming) 중의 적어도 하나를 수행하도록 할 수 있다.
예 34는 메모리 및 메모리에 연결된 프로세싱 시스템을 포함하고, 프로세싱 시스템은 예 7 내지 12 중의 어느 것의 방법을 수행하도록 구성되는 장치이다.
예 34는 메모리 및 메모리에 연결된 프로세싱 시스템을 포함하고, 프로세싱 시스템은 예 18 내지 22 중의 어느 것의 방법을 수행하도록 구성되는 장치이다.
상세한 설명의 일부는 컴퓨터 메모리 내의 데이터 비트에 대한 오퍼레이션의 심볼 표현 및 알고리즘 측면에서 제시된다. 이들 알고리즘 설명 및 표현은 본 기술에 숙련된 다른 기술자에게 자신의 작업의 본질을 가장 효율적으로 전달하기 위하여 데이터 프로세싱 기술에 숙련된 자에 의해 사용되는 수단이다. 알고리즘은 여기서 일반적으로, 원하는 결과를 얻기 위한 자기모순이 없는 일련의 오퍼레이션으로 구상된다. 오퍼레이션은 물리적 양의 물리적 조작을 필요로 하는 것이다. 통상, 필수적인 것은 아니지만, 이들의 양은 저장, 전송, 결합, 비교 및 조작될 수 있는 전기적 또는 자기적 신호의 형태를 취한다. 주로 공통 사용의 이유로 가끔은 비트, 값, 엘리먼트, 심볼, 문자(characters), 용어(terms), 수 등의 신호를 참조하는 것이 편리한 것으로 증명되었다.
그러나, 이들 및 유사한 용어는 모두 적절한 물리적 양과 연관되고 단지 이들 양에 적용되는 편리한 라벨임을 명심해야 한다. 상술한 설명으로부터 명백한 바와 같이 특별히 다르게 표현되지 않으면, 설명 전체에서, "암호화", "암호해독", "저장", "제공", "도출", "얻음", "수신", "인증", "삭제", "실행, "요청", 통신" 등의 용어를 이용한 설명은 컴퓨터 시스템의 레지스터 및 메모리 내의 물리적(예를 들어, 전자) 양으로서 표현되는 데이터를 조작하여 컴퓨터 시스템 메모리 또는 레지스터 또는 다른 이러한 정보 스토리지, 송신 또는 디스플레이 장치 내의 물리적 양으로 유사하게 표현되는 다른 데이터로 변환하는 컴퓨터 시스템 또는 유사한 전자 컴퓨팅 장치의 액션 및 프로세스를 참조한다는 것이 이해될 것이다.
단어 "예" 또는 "예시적인"은 예, 사례 또는 보기로서 의미되도록 사용된다. "예" 또는 "예시적인"과 같은 여기에 기재된 임의의 양태 또는 설계는 반드시 다른 양태 또는 설계보다 더 바람직하거나 유리한 것으로 간주되지 않는다. 오히려, 단어 "예" 또는 "예시적인"의 사용은 개념을 구체적으로 나타내기 위한 것이다. 본 출원에서 사용되는 바와 같이, 용어 "또는"은 배타적 "또는"보다는 포괄적인 "또는"을 의미하는 것으로 의도된다. 즉, 특별히 다르게 지정하지 않거나 컨텍스트로부터 명백하지 않으면, "X는 A 또는 B를 포함한다"는 정상적인 포괄적인 치환 중의 어느 것을 의미하는 것으로 의도된다. 즉, X가 A를 포함하거나, X가 B를 포함하거나, 또는 X가 A 및 B를 포함하면, "X는 A 또는 B를 포함한다"는 상술한 예 중의 어느 것 하에서 만족된다. 또한, 본 출원 및 청구범위에 사용되는 "a" 또는 "an"은 특별히 다르게 지정되지 않거나 단수 형태로 지시되는 컨텍스트로부터 명백하지 않으면 일반적으로 "하나 이상"을 의미하는 것으로 간주되어야 한다. 또한, 도처의 용어 "실시예", "일 실시예", "구현예" 또는 "일 구현예"의 사용은 동일한 실시예 또는 구현예를 의미하는 것으로 기술되지 않는 한, 이를 의미하는 것으로 의도되지 않는다. 또한, 여기에 사용되는 용어 "제1", "제2", "제3", "제4" 등은 상이한 엘리먼트를 구별하기 위한 라벨이며 그 수치 지정에 따라 반드시 순서의 의미를 갖는 것은 아니다.
여기에 기재된 실시예는 여기에 기재된 오퍼레이션을 수행하는 장치에 관한 것일 수 있다. 이 장치는 특별히 필요한 목적을 위해 구성될 수 있거나 컴퓨터에 저장된 컴퓨터 프로그램에 의해 선택적으로 활성화되거나 재구성되는 범용 컴퓨터를 포함할 수 있다. 이러한 컴퓨터 프로그램은, 제한되지 않지만, 플로피 디스크, 광 디스크, CD-ROM 및 광자기 디스크, 리드 온리 메모리(ROM), 랜덤 액세스 메모리(RAM), EPROM, EEPROM, 자기 또는 광 카드, 플래시 메모리, 또는 전자 명령을 저장하기에 적합한 임의의 타입의 매체 등의 비일시적 컴퓨터 판독가능 저장 매체에 저장될 수 있다. 용어 "컴퓨터 판독가능 저장 매체"는 하나 이상의 명령 세트를 저장하는 단일 매체 또는 다수의 매체(예를 들어, 중앙 집중형 또는 분산형 데이터베이스 및/또는 관련 캐시 및 서버)를 포함해야 한다. 따라서, 용어 "컴퓨터 판독가능 매체"는 또한 머신에 의해 실행되는 명령의 세트를 저장, 인코딩 또는 전달할 수 있고 머신이 본 실시예의 방법론 중의 임의의 하나 이상을 수행하도록 하는 임의의 매체를 포함해야 한다. 용어 "컴퓨터 판독가능 저장 매체"는, 제한되지 않지만, 솔리드 스테이트 메모리, 광 매체, 자기 매체, 머신에 의해 실행되는 명령 세트를 저장할 수 있고 머신이 본 실시예의 방법론 중의 임의의 하나 이상을 수행하도록 하는 임의의 매체를 포함해야 한다.
여기에 제시된 알고리즘 및 디스플레이는 임의의 특정 컴퓨터 또는 다른 장치에 본질적으로 관련되지 않는다. 다양한 범용 시스템은 본 사상에 따라 프로그램과 함께 사용되거나 필요한 방법 오퍼레이션을 수행하도록 더 특수화된 장치를 구성하는 것이 편리한 것으로 입증될 수 있다. 이들 다양한 시스템에 대한 필요한 구조는 이하의 설명으로부터 나타날 것이다. 또한, 본 실시예는 임의의 특정한 프로그래밍 언어를 참조하여 설명하지 않는다. 다양한 프로그래밍 언어가 여기에 기재된 실시예의 사상을 구현하는데 사용될 수 있다는 것이 이해될 것이다.
상술한 설명은 몇 개의 실시예의 양호한 이해를 제공하기 위하여 특정한 시스템, 컴포넌트, 방법 등의 예 등의 수많은 특정한 세부사항을 나타낸다. 그러나, 적어도 일부의 실시예는 이들 특정한 세부사항 없이 실행될 수 있음은 당업자에게 자명하다. 다른 예에서, 공지된 컴포넌트 또는 방법은 본 실시예를 불필요하게 모호하게 하는 것을 피하기 위하여 상세히 설명되지 않거나 간단한 블록도 포맷으로 제시된다. 따라서, 상기의 특정한 세부사항은 단지 예시적이다. 특정한 구현예는 이들 예시적인 세부사항으로부터 변형될 수 있고 본 실시예의 범위 내에 여전히 있는 것으로 고려된다.
상기 설명은 예시적인 것으로 제한적이지 않음이 이해될 것이다. 상술한 설명을 읽고 이해하면 많은 다른 실시예가 당업자에게 자명해질 것이다. 그러므로, 본 실시예의 범위는 첨부된 청구범위 및 이러한 청구범위에 의해 자격이 부여되는 그 동등물의 전체 범위를 참조하여 결정되어야 한다.
102: 프로세서
104: 캐시
106: 레지스터 파일
108: 실행 유닛
109: 팩형 명령 세트
110: 프로세서 버스
112: 그래픽/비디오 카드
124: 데이터 스토리지
126: 무선 트랜시버
128: 플래시 BIOS
116: 메모리 제어기 허브
130: I/O 제어기 허브
134: 네트워크 제어기
200: 프로세서
201: 프론트 엔드
226: 명령 프리페쳐
232: 마이크로코드 ROM
234: uop 큐
230: 트레이스 캐시

Claims (20)

  1. 복수의 물리적 레지스터 값을 저장하도록 구성되는 제1 데이터 구조;
    복수의 포인터를 저장하도록 구성되는 제2 데이터 구조 - 각각의 포인터는 상기 제1 데이터 구조의 엘리먼트를 참조함 -;
    복수의 이동 제거 세트(move elimination set)를 포함하는 제3 데이터 구조 - 각각의 이동 제거 세트는 복수의 논리적 레지스터를 나타내는 복수의 비트를 포함함 -; 및
    상기 제2 데이터 구조의 엘리먼트가 상기 제1 데이터 구조의 엘리먼트를 참조하도록 함으로써 데이터 조작 오퍼레이션(data manipulation operation)을 수행하도록 구성되는 로직
    을 포함하고,
    상기 로직은 상기 제3 데이터 구조의 단일 업데이트를 수행함으로써 2 이상의 데이터 조작 오퍼레이션의 결과를 반영하도록 더 구성되는 프로세싱 시스템.
  2. 제1항에 있어서, 상기 제3 데이터 구조의 업데이트는 이동 제거 세트의 생성, 이동 제거 세트의 변경 또는 이동 제거 세트의 회수(reclaiming) 중의 적어도 하나를 포함하는 프로세싱 시스템.
  3. 제1항에 있어서, 상기 로직은 2 이상의 데이터 조작 오퍼레이션의 종속성을 미리 계산하는 것에 기초하여 상기 제3 데이터 구조를 업데이트하도록 구성되는 프로세싱 시스템.
  4. 제1항에 있어서, 상기 로직은 정수 범용 논리적 레지스터(integer general purpose logical register) 도메인 내의 제1 이동 제거 세트 또는 SSE(Streaming Single Instruction Multiple Data (SIMD) Extensions) 논리적 레지스터 도메인 내의 제2 이동 제거 세트 중의 적어도 하나를 예약(reserve)하도록 더 구성되는 프로세싱 시스템.
  5. 제1항에 있어서, 상기 로직은 상기 제3 데이터 구조의 이전 상태를 반영한 제1 신호, 데이터 조작 오퍼레이션에 대한 소스 논리적 레지스터를 식별하는 제2 신호, 데이터 조작 오퍼레이션에 대한 목적지 논리적 레지스터를 식별하는 제3 신호, 기존의 이동 제거 세트가 적어도 하나의 참조를 포함하는지를 식별하는 제4 신호, 상기 제3 데이터 구조 내의 새로운 이동 제거 세트를 식별하는 제5 신호 및 상기 데이터 조작 오퍼레이션이 이동 제거를 위해 선택되었는지를 식별하는 제6 신호 중의 적어도 하나를 프로세싱함으로써 상기 제3 데이터 구조를 업데이트하는 신호를 출력하도록 구성되는 프로세싱 시스템.
  6. 제1항에 있어서, 상기 로직은,
    제2 데이터 조작 오퍼레이션의 소스에 매칭하는 목적지 레지스터를 갖는 제1 데이터 조작 오퍼레이션, 공통 소스 레지스터로의 중간 기입(intervening write)에 의해 상기 공통 소스 레지스터를 이용하는 2개의 데이터 조작 오퍼레이션, 소스로서 공통 레지스터를 이용하는 2개의 데이터 조작 오퍼레이션, 목적지 레지스터로의 중간 기입에 의해 제2 데이터 조작 오퍼레이션의 소스와 매칭하는 상기 목적지 레지스터를 갖는 제1 데이터 조작 오퍼레이션, 또는 기존의 이동 제거 세트에 의해 참조되고 제2 데이터 조작 오퍼레이션의 소스인 레지스터를 중복 기입하는 제1 데이터 조작 오퍼레이션
    중의 적어도 하나를 검출하도록 구성되는 프로세싱 시스템.
  7. 컴퓨터 시스템에 의해 복수의 물리적 레지스터 값을 제1 데이터 구조에 저장하는 단계;
    복수의 포인터를 제2 데이터 구조에 저장하는 단계 - 각각의 포인터는 상기 제1 데이터 구조의 엘리먼트를 참조함 -;
    복수의 이동 제거 세트를 제3 데이터 구조에 저장하는 단계 - 각각의 이동 제거 세트는 복수의 논리적 레지스터를 나타내는 복수의 비트를 포함함 -;
    상기 제2 데이터 구조의 엘리먼트가 상기 제1 데이터 구조의 엘리먼트를 참조하도록 함으로써 데이터 조작 오퍼레이션을 수행하는 단계; 및
    상기 제3 데이터 구조의 단일 업데이트를 수행함으로써 2개 이상의 데이터 조작 오퍼레이션의 결과를 반영하는 단계
    를 포함하는 방법.
  8. 제7항에 있어서, 상기 제3 데이터 구조의 업데이트는 이동 제거 세트의 생성, 이동 제거 세트의 변경 또는 이동 제거 세트의 회수(reclaiming) 중의 적어도 하나를 포함하는 방법.
  9. 제7항에 있어서, 정수 범용 논리적 레지스터 도메인 내의 제1 이동 제거 세트 또는 SSE(Streaming Single Instruction Multiple Data (SIMD) Extensions) 논리적 레지스터 도메인 내의 제2 이동 제거 세트 중의 적어도 하나를 예약하는 단계를 더 포함하는 방법.
  10. 제7항에 있어서, 상기 제3 데이터 구조의 이전 상태를 반영한 제1 신호, 데이터 조작 오퍼레이션에 대한 소스 논리적 레지스터를 식별하는 제2 신호, 데이터 조작 오퍼레이션에 대한 목적지 논리적 레지스터를 식별하는 제3 신호, 기존의 이동 제거 세트가 적어도 하나의 참조를 포함하는지를 식별하는 제4 신호, 상기 제3 데이터 구조 내의 새로운 이동 제거 세트를 식별하는 제5 신호 및 상기 데이터 조작 오퍼레이션이 이동 제거를 위해 선택되었는지를 식별하는 제6 신호 중의 적어도 하나를 프로세싱함으로써 상기 제3 데이터 구조를 업데이트하는 신호를 출력하는 단계를 더 포함하는 방법.
  11. 제7항에 있어서, 제2 데이터 조작 오퍼레이션의 소스에 매칭하는 목적지 레지스터를 갖는 제1 데이터 조작 오퍼레이션, 공통 소스 레지스터로의 중간 기입에 의해 상기 공통 소스 레지스터를 이용하는 2개의 데이터 조작 오퍼레이션, 소스로서 공통 레지스터를 이용하는 2개의 데이터 조작 오퍼레이션, 목적지 레지스터로의 중간 기입에 의해 제2 데이터 조작 오퍼레이션의 소스와 매칭하는 상기 목적지 레지스터를 갖는 제1 데이터 조작 오퍼레이션, 또는 기존의 이동 제거 세트에 의해 참조되고 제2 데이터 조작 오퍼레이션의 소스인 레지스터를 중복 기입하는 제1 데이터 조작 오퍼레이션 중의 적어도 하나를 검출하는 단계를 더 포함하는 방법.
  12. 제7항에 있어서, 상기 제3 데이터 구조의 업데이트는 2 이상의 데이터 조작 오퍼레이션의 종속성을 미리 계산하는 것에 기초하여 수행되는 방법.
  13. 복수의 물리적 레지스터 값을 저장하도록 구성되는 제1 데이터 구조;
    복수의 포인터를 저장하도록 구성되는 제2 데이터 구조 - 각각의 포인터는 상기 제1 데이터 구조의 엘리먼트를 참조함 -;
    복수의 제1 이동 제거 세트 및 복수의 제2 이동 제거 세트를 포함하는 제3 데이터 구조 - 상기 복수의 제1 이동 제거 세트의 각각의 이동 제거 세트는 복수의 정수 논리적 레지스터를 나타내는 복수의 비트를 포함하고, 상기 복수의 제2 이동 제거 세트의 각각의 이동 제거 세트는 복수의 SSE(Streaming Single Instruction Multiple Data (SIMD) Extensions) 논리적 레지스터를 나타내는 복수의 비트를 포함함 -; 및
    상기 복수의 제1 이동 제거 세트의 제1 이동 제거 세트 및 상기 복수의 제2 이동 제거 세트의 제2 이동 제거 세트를 예약하도록 구성되는 로직
    을 포함하고,
    상기 로직은 상기 제2 데이터 구조 및 상기 제1 이동 제거 세트 또는 상기 제2 이동 제거 세트 중의 하나를 업데이트함으로써 데이터 조작 오퍼레이션을 수행하도록 더 구성되는 프로세싱 시스템.
  14. 제13항에 있어서, 상기 로직은 상기 제3 데이터 구조의 이전 상태를 반영한 제1 신호, 데이터 조작 오퍼레이션에 대한 소스 논리적 레지스터를 식별하는 제2 신호, 데이터 조작 오퍼레이션에 대한 목적지 논리적 레지스터를 식별하는 제3 신호, 기존의 이동 제거 세트가 적어도 하나의 참조를 포함하는지를 식별하는 제4 신호, 상기 제3 데이터 구조 내의 새로운 이동 제거 세트를 식별하는 제5 신호 및 상기 데이터 조작 오퍼레이션이 이동 제거를 위해 선택되었는지를 식별하는 제6 신호 중의 적어도 하나를 프로세싱함으로써 상기 제3 데이터 구조를 업데이트하는 신호를 출력하도록 더 구성되는 프로세싱 시스템.
  15. 제13항에 있어서, 상기 로직은,
    제2 데이터 조작 오퍼레이션의 소스에 매칭하는 목적지 레지스터를 갖는 제1 데이터 조작 오퍼레이션, 공통 소스 레지스터로의 중간 기입에 의해 상기 공통 소스 레지스터를 이용하는 2개의 데이터 조작 오퍼레이션, 소스로서 공통 레지스터를 이용하는 2개의 데이터 조작 오퍼레이션, 목적지 레지스터로의 중간 기입에 의해 제2 데이터 조작 오퍼레이션의 소스와 매칭하는 상기 목적지 레지스터를 갖는 제1 데이터 조작 오퍼레이션, 또는 기존의 이동 제거 세트에 의해 참조되고 제2 데이터 조작 오퍼레이션의 소스인 레지스터를 중복 기입하는 제1 데이터 조작 오퍼레이션 중의 적어도 하나
    를 검출하도록 더 구성되는 프로세싱 시스템.
  16. 제13항에 있어서, 상기 로직은
    2 이상의 데이터 조작 오퍼레이션의 종속성을 미리 계산하고,
    상기 제3 데이터 구조의 단일 업데이트를 수행함으로써 상기 2 이상의 데이터 조작 오퍼레이션의 결과를 반영하도록 더 구성되는 프로세싱 시스템.
  17. 제13항에 있어서, 상기 로직은 이동 제거 세트의 생성, 이동 제거 세트의 변경 또는 이동 제거 세트의 회수(reclaiming) 중의 적어도 하나를 수행하도록 더 구성되는 프로세싱 시스템.
  18. 컴퓨터 시스템에 의해 실행될 때, 상기 컴퓨터 시스템이,
    컴퓨터 시스템에 의해, 복수의 물리적 레지스터 값을 제1 데이터 구조에 저장하는 단계;
    복수의 포인터를 제2 데이터 구조에 저장하는 단계 - 각각의 포인터는 상기 제1 데이터 구조의 엘리먼트를 참조함 -;
    복수의 이동 제거 세트를 제3 데이터 구조에 저장하는 단계 - 각각의 이동 제거 세트는 복수의 논리적 레지스터를 나타내는 복수의 비트를 포함함 -;
    상기 제2 데이터 구조의 엘리먼트가 상기 제1 데이터 구조의 엘리먼트를 참조하도록 함으로써 데이터 조작 오퍼레이션을 수행하는 단계; 및
    상기 제3 데이터 구조의 단일 업데이트를 수행함으로써 2개 이상의 데이터 조작 오퍼레이션의 결과를 반영하는 단계
    를 포함하는 오퍼레이션을 수행하도록 하는 실행가능한 명령을 포함하는 컴퓨터 판독가능 비일시적 저장 매체.
  19. 제18항에 있어서, 상기 실행가능한 명령은 또한 상기 컴퓨터 시스템이 정수 범용 논리적 레지스터 도메인 내의 제1 이동 제거 세트 또는 SSE(Streaming Single Instruction Multiple Data (SIMD) Extensions) 논리적 레지스터 도메인 내의 제2 이동 제거 세트 중의 적어도 하나를 예약하도록 하는 컴퓨터 판독가능 비일시적 저장 매체.
  20. 제18항에 있어서, 상기 실행가능한 명령은 또한, 상기 컴퓨터 시스템이 상기 제3 데이터 구조의 이전 상태를 반영한 제1 신호, 데이터 조작 오퍼레이션에 대한 소스 논리적 레지스터를 식별하는 제2 신호, 데이터 조작 오퍼레이션에 대한 목적지 논리적 레지스터를 식별하는 제3 신호, 기존의 이동 제거 세트가 적어도 하나의 참조를 포함하는지를 식별하는 제4 신호, 상기 제3 데이터 구조 내의 새로운 이동 제거 세트를 식별하는 제5 신호 및 상기 데이터 조작 오퍼레이션이 이동 제거를 위해 선택되었는지를 식별하는 제6 신호 중의 적어도 하나를 프로세싱함으로써 상기 제3 데이터 구조를 업데이트하는 신호를 출력하도록 하는 컴퓨터 판독가능 비일시적 저장 매체.
KR1020140029236A 2013-03-15 2014-03-12 바이패스 멀티플 인스턴스화 테이블을 갖는 이동 제거 시스템 및 방법 KR101594502B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/840,462 2013-03-15
US13/840,462 US9256433B2 (en) 2013-03-15 2013-03-15 Systems and methods for move elimination with bypass multiple instantiation table

Publications (2)

Publication Number Publication Date
KR20140113434A KR20140113434A (ko) 2014-09-24
KR101594502B1 true KR101594502B1 (ko) 2016-02-16

Family

ID=51418953

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140029236A KR101594502B1 (ko) 2013-03-15 2014-03-12 바이패스 멀티플 인스턴스화 테이블을 갖는 이동 제거 시스템 및 방법

Country Status (6)

Country Link
US (1) US9256433B2 (ko)
JP (1) JP5758515B2 (ko)
KR (1) KR101594502B1 (ko)
CN (1) CN104049950B (ko)
DE (1) DE102014003799A1 (ko)
GB (1) GB2512471B (ko)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10417001B2 (en) * 2012-12-27 2019-09-17 Intel Corporation Physical register table for eliminating move instructions
US9292288B2 (en) * 2013-04-11 2016-03-22 Intel Corporation Systems and methods for flag tracking in move elimination operations
CN106149284B (zh) * 2015-04-28 2019-04-26 青岛海尔洗衣机有限公司 一种洗衣机故障检测处理方法
US9792147B2 (en) * 2015-07-02 2017-10-17 International Business Machines Corporation Transactional storage accesses supporting differing priority levels
US10261790B2 (en) * 2016-03-31 2019-04-16 Intel Corporation Memory copy instructions, processors, methods, and systems
US10282296B2 (en) * 2016-12-12 2019-05-07 Intel Corporation Zeroing a cache line
US20180203694A1 (en) * 2017-01-16 2018-07-19 Intel Corporation Execution Unit with Selective Instruction Pipeline Bypass
US10275391B2 (en) 2017-01-23 2019-04-30 International Business Machines Corporation Combining of several execution units to compute a single wide scalar result
US10402355B2 (en) * 2017-02-08 2019-09-03 Texas Instruments Incorporated Apparatus and mechanism to bypass PCIe address translation by using alternative routing
US11080048B2 (en) 2017-03-20 2021-08-03 Intel Corporation Systems, methods, and apparatus for tile configuration
WO2019009870A1 (en) 2017-07-01 2019-01-10 Intel Corporation SAVE BACKGROUND TO VARIABLE BACKUP STATUS SIZE
US10884752B2 (en) 2017-11-29 2021-01-05 International Business Machines Corporation Slice-based allocation history buffer
GB2576572B (en) * 2018-08-24 2020-12-30 Advanced Risc Mach Ltd Processing of temporary-register-using instruction
US10949205B2 (en) * 2018-12-20 2021-03-16 International Business Machines Corporation Implementation of execution compression of instructions in slice target register file mapper
US11321344B2 (en) * 2019-09-20 2022-05-03 Sap Se Virtual database tables with updatable logical table pointers

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110208918A1 (en) 2009-12-26 2011-08-25 Shlomo Raikin Move elimination and next page prefetcher
US20120005459A1 (en) 2010-12-28 2012-01-05 Advanced Micro Devices, Inc. Processor having increased performance and energy saving via move elimination

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0337722A (ja) * 1989-07-05 1991-02-19 Nec Corp 情報処理装置
US5838941A (en) 1996-12-30 1998-11-17 Intel Corporation Out-of-order superscalar microprocessor with a renaming device that maps instructions from memory to registers
US6505293B1 (en) * 1999-07-07 2003-01-07 Intel Corporation Register renaming to optimize identical register values
US6553483B1 (en) * 1999-11-29 2003-04-22 Intel Corporation Enhanced virtual renaming scheme and deadlock prevention therefor
KR100385356B1 (ko) * 2000-10-31 2003-05-27 김현수 복합 테이프 전사구
US6957323B2 (en) * 2001-11-14 2005-10-18 Elan Research, Inc. Operand file using pointers and reference counters and a method of use
US7647481B2 (en) * 2005-02-25 2010-01-12 Qualcomm Incorporated Reducing power by shutting down portions of a stacked register file
EP1892619A4 (en) * 2005-05-26 2009-01-28 Nec Corp INFORMATION PROCESSING DEVICE AND COMMANDING METHOD
US20090327661A1 (en) * 2008-06-30 2009-12-31 Zeev Sperber Mechanisms to handle free physical register identifiers for smt out-of-order processors
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
WO2013101323A1 (en) * 2011-12-30 2013-07-04 Intel Corporation Micro-architecture for eliminating mov operations
US9454371B2 (en) * 2011-12-30 2016-09-27 Intel Corporation Micro-architecture for eliminating MOV operations
US8949639B2 (en) 2012-06-29 2015-02-03 Intel Corporation User behavior adaptive sensing scheme for efficient power consumption management
US10417001B2 (en) * 2012-12-27 2019-09-17 Intel Corporation Physical register table for eliminating move instructions

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110208918A1 (en) 2009-12-26 2011-08-25 Shlomo Raikin Move elimination and next page prefetcher
US20120005459A1 (en) 2010-12-28 2012-01-05 Advanced Micro Devices, Inc. Processor having increased performance and energy saving via move elimination

Also Published As

Publication number Publication date
GB201402777D0 (en) 2014-04-02
US20140281432A1 (en) 2014-09-18
US9256433B2 (en) 2016-02-09
DE102014003799A1 (de) 2014-09-18
CN104049950A (zh) 2014-09-17
KR20140113434A (ko) 2014-09-24
GB2512471B (en) 2015-06-03
JP5758515B2 (ja) 2015-08-05
GB2512471A (en) 2014-10-01
JP2014182803A (ja) 2014-09-29
CN104049950B (zh) 2017-04-12

Similar Documents

Publication Publication Date Title
KR101594502B1 (ko) 바이패스 멀티플 인스턴스화 테이블을 갖는 이동 제거 시스템 및 방법
CN106648843B (zh) 用于改善连续的事务性存储器区的吞吐量的系统、方法和装置
KR101655713B1 (ko) 이동 제거 연산들에서의 플래그 트래킹을 위한 시스템들 및 방법들
US9250901B2 (en) Execution context swap between heterogeneous functional hardware units
US9811340B2 (en) Method and apparatus for reconstructing real program order of instructions in multi-strand out-of-order processor
WO2017223006A1 (en) Load-store queue for multiple processor cores
JP6306729B2 (ja) ストアをソート及びリタイアする命令及びロジック
US20150277911A1 (en) Instruction and Logic for a Logical Move in an Out-Of-Order Processor
US10437638B2 (en) Method and apparatus for dynamically balancing task processing while maintaining task order
JP2014182795A (ja) 共有メモリへのアクセスの同期を緩和するプロセッサ、方法及びシステム
CN109791493B (zh) 用于乱序集群化解码中的负载平衡的系统和方法
US10095522B2 (en) Instruction and logic for register based hardware memory renaming
US20160364237A1 (en) Processor logic and method for dispatching instructions from multiple strands
KR101898791B1 (ko) 멀티 스트랜드 비순차 프로세서에서 회수를 위한 명령어들을 식별하는 명령어 및 로직
WO2018005718A1 (en) System and method for out-of-order clustered decoding
EP3757772A1 (en) System, apparatus and method for a hybrid reservation station for a processor

Legal Events

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

Payment date: 20190129

Year of fee payment: 4