KR102010317B1 - 재명명 테이블 재구성을 위한 리오더-버퍼를 기초로 하는 동적 체크포인팅 - Google Patents

재명명 테이블 재구성을 위한 리오더-버퍼를 기초로 하는 동적 체크포인팅 Download PDF

Info

Publication number
KR102010317B1
KR102010317B1 KR1020130160343A KR20130160343A KR102010317B1 KR 102010317 B1 KR102010317 B1 KR 102010317B1 KR 1020130160343 A KR1020130160343 A KR 1020130160343A KR 20130160343 A KR20130160343 A KR 20130160343A KR 102010317 B1 KR102010317 B1 KR 102010317B1
Authority
KR
South Korea
Prior art keywords
rename
check
data
order buffer
entries
Prior art date
Application number
KR1020130160343A
Other languages
English (en)
Other versions
KR20140113305A (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
Priority claimed from US13/831,488 external-priority patent/US9448799B2/en
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Publication of KR20140113305A publication Critical patent/KR20140113305A/ko
Application granted granted Critical
Publication of KR102010317B1 publication Critical patent/KR102010317B1/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/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/30098Register arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3856Reordering of instructions, e.g. using queues or age tags
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3863Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers

Landscapes

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

Abstract

본 발명은 전자기기들의 동작을 제어하는 마이크로 프로세서에 관한 것이다. 본 발명의 실시 예에 따른 마이크로 프로세서는 재명명 데이터(rename data)를 저장하기 위한 재명명 테이블; 디스페처(dispatcher); 및 상기 디스페처로부터 수신된 재명명 데이터를 저장하기 위한 체크-포인트 테이블(CPT: Check Point Table)을 포함하며, 상기 재명명 테이블이 플러시(flush)되면, 상기 재명명 테이블은 상기 CPT에 저장된 상기 재명명 데이터를 이용하여 재구성(rebuild)된다. 본 발명에 따르면 마이크로 프로세서의 동작속도가 향상될 수 있다.

Description

재명명 테이블 재구성을 위한 리오더-버퍼를 기초로 하는 동적 체크포인팅{REORDER-BUFFER-BASED DYNAMIC CHECKPOINTING FOR RENAME TABLE REBUILDING}
본 발명은 반도체 장치에 관한 것으로, 좀더 구체적으로는 전자기기들의 동작을 제어하는 마이크로 프로세서에 관한 것이다.
마이크로 프로세서(microprocessor)는 중앙처리장치(CPU)라고도 하며, 실행 명령어들(executing instructions)에 의하여 동작한다. 일부의 명령어들은 브랜칭 포인트들(branching points)을 발생시키는데, 이는 실행(execution)의 경로(path)에 우선하여 선택될 수 있는 것을 의미한다. 만약 어떠한 경로가 선택될 것인지에 대한 정확한 추론적 예측(speculative prediction)이 가능하고, 해당 경로를 따라 명령어를 미리 실행한다면, 마이크로 프로세서는 향상된 속도를 가질 수 있다. 이러한 중앙처리장치(CPU)는 비순차적(out-of-order) CPU로 알려져 있다. 그러나 속도 향상의 효과는 예측이 잘못되어 복구가 필요할 때 소멸된다.
비순처적 CPU의 직면과제는 쓰기-후-쓰기(Write After Write, WAW), 쓰기-후-읽기(Write-After-Read)와 같은 위험 요소(hazard)이다. 이러한 해저드들은 레지스터 재명명(register renaming)에 의하여 방지될 수 있으며, 이는 재명명드 소스(renamed source)와 목적지 레지스터(destination register)를 지속적으로 파악하는 재명명 테이블(rename table)의 도움을 받아 실행된다.
그러나 재명명(renaming)의 문제는 잘못 예측된 브랜치 명령어(branch instruction)가 존재할 때마다, 재명명 테이블은 완전히 플러시(flush)되어야 한다는 것이다. 플러시(flushing)는 브랜치들이 비순차적으로 실행되어, 잘못 예측된 브랜치 명령어보다 오래된 명령들이 대기할 수 있기 때문에 문제가 된다. 이러한 오래된 명령들을 위한 재명명 정보(rename information)는 재명명 테이블에 재구성(rebuild)되어야 한다.
이러한 경우에 문제는 지연(delay)이다. 재구성 과정에서 재명명 로직(rename logic)은 재명명을 위하여 파이프(pipe)의 프론트 엔드(front end)가 새로운 명령어들을 전송하는 것을 정지시켜야 한다. 이러한 정지는 지연을 야기하며, 이는 잘못 예측된 브랜치의 패널티(penalty)에 해당한다. 이러한 패널티는 재구성 지연(rebuild latency) 뿐만 아니라 리디렉션 지연(redirection latency)와 파이프의 프론트엔드의 깊이(depth)에 의존한다.
상기 정지 동작을 감소시키기 위하여, 재명명 파이프라인(rename pipeline)의 일부로써, 디스패치 단계(dispatch stage)에 이전에 수행되는 체크-포인팅 전략(check-pointing scheme)이 제안되었다. 이러한 전략에서, 각 브랜치 명령어들은 새로운 체크-포인트 윈도우(check-point window)를 시작한다. 이러한 접근은 기계에서 허락되어 진행중인(in-flight) 브랜치들이 존재하여 많은 체크-포인트들이 요구됨에 따라, 공간적인 관점에서 비싸다.
본 발명의 목적은 동작 속도가 향상되며 제작 비용이 절약된 마이크로 프로세서를 제공하는데 있다.
본 발명의 실시 예에 따른 마이크로 프로세서는 재명명 데이터(rename data)를 저장하기 위한 재명명 테이블; 디스페처(dispatcher); 및 상기 디스페처로부터 수신된 재명명 데이터를 저장하기 위한 체크-포인트 테이블(CPT: Check Point Table)을 포함하며, 상기 재명명 테이블이 플러시(flush)되면, 상기 재명명 테이블은 상기 CPT에 저장된 상기 재명명 데이터를 이용하여 재구성(rebuild)된다.
실시 예로써, 상기 재명명 테이블은 오직 상기 CPT에 저장된 재명명 데이터만을 이용하여 재구성된다.
실시 예로써,예측 오류를 감지하기 위한 브랜치 실행 로직(branch execution logic)을 더 포함하며, 상기 예측 오류가 감지된 것에 응답하여, 상기 재명명 테이블은 플러시된다.
실시 예로써,클럭 사이클들을 정의하는 펄스들을 출력하는 클럭(clock)을 더 포함하며, 상기 재명명 테이블은 상기 클럭 사이클들 중 하나의 사이클 내에서 재구성된다.
실시 예로써, 리-오더 버퍼(ROB: Re-Order Buffer) 엔트리들 및 ROB 엔트리들 중 가변 가능한 하나의 ROB 엔트리를 가리키는 리타이어 포인터(Retire Pointer)를 포함하며, 상기 ROB 엔트리들의 그룹은 ROB 체크포인트 윈도우로 정의되며,상기 ROB 체크포인트 윈도우는, 상기 ROB 체크포인트 윈도우가 상기 리타이어 포인터가 가리키는 상기 ROB 엔트리에 기초하여 정의되는 동적 관계에 따라 상기 CPT에 매핑되며, 상기 재명명 테이블은 상기 동작 관계 측면에서 허락되는 경우에만 상기 CPT에 저장된 상기 재명명 데이터를 이용하여 재구성된다.
본 발명의 실시 예에 따른 마이크로 프로세서의 동작방법은 micro-ops에 따라 재명명 데이터를 발생하는 단계; 상기 재명명 데이터를 재명명 테이블에 저장하는 단계; 디스패처가 상기 micro-ops 중 어느 하나를 실행 유닛에 디스패치(dispatch)하는 단계; 상기 디스패처가 상기 재명명 데이터를 저장하기 위하여 체크-포인트 테이블(CPT: check-point table)에 전송하는 단계; 및상기 재명명 테이블이 플러시되는 경우에, 상기 재명명 테이블은 상기 CPT에 저장된 상기 재명명 데이터를 상기 CPT로부터 상기 재명명 테이블로 복사함으로써 재구성된다.
실시 예로써, 예측 오류를 감지하는 단계를 더 포함하며, 상기 재명명 테이블은 상기 예측 오류의 감지에 응답하여 플러시된다.
본 발명의 실시 예에 따른 마이크로 프로세서는 명령어를 micro-ops로 디코딩하는 디코더; 상기 micro-ops를 실행하는 실행 유닛; 상기 micro-ops에 따라 재명명 데이터를 생성하는 재명명기(renamer); 재명명 테이블; 상기 재명명 데이터의 체크-포인트된 버전(check-pointed version)을 저장하는 체크-포인트 테이블(CPT: check-point table); 및 상기 micro-ops로부터 생성된 리-오더 버퍼 데이터(ROB data: Re-order buffer data)를 저장하는 ROB 엔트리들 및 상기 ROB 엔트리들 중 가변가능한 하나의 엔트리를 가리키는 리타이어 포인터(Retire Pointer)를 갖는 리-오더 버퍼(ROB)를 포함하며, 상기 재명명 테이블은 상기 재명명 데이터가 재명명 테이블로부터 플러시되는 방식으로 상기 재명명 데이터를 저장하며, 상기 ROB 데이터는 재구성 재명명 데이터(rebuild rename data)를 포함하며, 상기 ROB 엔트리들의 그룹은 ROB 체크포인트 윈도우로 정의되고, 상기 ROB 체크포인트 윈도우는, 상기 ROB 체크포인트 윈도우가 상기 리타이어 포인터가 가리키는 ROB 엔트리에 기초하여 정의되는 동적 관계에 따라 상기 CPT에 매핑되며, 상기 동적 관계 측면에서 허락되는 경우에 상기 재명명 데이터의 상기 체크 포인트된 버전이 상기 CPT로부터 상기 재명명 테이블로 복사되는 것 및 상기 재구성 재명명 데이터의 적어도 일 부분이 상기 ROB로부터 상기 재명명 테이블로 복사되는 것에 의하여, 상기 재명명 테이블에 저장된 재명명 데이터가 상기 재명명 테이블로부터 플러시됨에 따라 상기 플러시된 재명명 데이터가 상기 재명명 테이블에 저장될 수 있다.
실시 예로써, 상기 micro-ops 를 상기 실행 유닛으로 디스패칭하는 디스패처를 더 포함하며, 상기 CPT는 상기 디스패처로부터 상기 재명명 데이터의 상기 체크 포인트된 버전을 수신한다.
실시 예로써, 상기 micro-ops 의 실행에 있어서 예측 오류를 감지하기 위한 브랜치 수행 로직을 더 포함하며, 상기 예측 오류가 감지된 것에 응답하여, 상기 재명명 테이블은 플러시된다.
실시 예로써, 클럭 사이클들을 정의하는 펄스들을 출력하는 클럭을 더 포함하며, 상기 재명명 데이터의 상기 체크 포인트된 버전이 상기 클럭 사이클들 중 하나의 사이클 내에 상기 CPT로부터 상기 재명명 테이블로 복사된다.
본 발명의 실시 예에 따른 마이크로 프로세서의 동작방법은 령어를 micro-ops로 디코딩하는 단계; 상기 micro-ops를 실행하는 단계; 상기 micro-ops에 따라 재명명 데이터를 생성하는 단계; 상기 재명명 데이터가 재명명 테이블로부터 플러시되는 방식으로 상기 재명명 데이터를 재명명 테이블에 저장하는 단계; 상기 재명명 데이터의 체크-포인트된 버전(check-pointed version)을 체크-포인트 테이블(CPT: check-point table)에 저장하는 단계; 및 상기 micro-ops로부터 생성된 ROB 데이터(ROB data: Re-order buffer data)를 상기 ROB(Re-order buffer)의 ROB 엔트리들(ROB entries: Re-order buffer entries)에 저장하는 단계를 포함하며, 상기 ROB 데이터는 재구성 재명명 데이터 및 상기 ROB 엔트리들 중 가변가능한 하나의 엔트리를 가리키는 리타이어 포인터(Retire Pointer)를 갖고, 상기 ROB 엔트리들의 그룹은 ROB 체크포인트 윈도우로 정의되고, 상기 ROB 체크포인트 윈도우는, 상기 ROB 체크포인트 윈도우가 상기 리타이어 포인터가 가리키는 ROB 엔트리에 기초하여 정의되는 동적 관계에 따라 상기 CPT에 매핑되며, 상기 재명명 테이블에 저장된 재명명 데이터가 상기 재명명 테이블로부터 플러시되는 경우에 상기 플러시된 재명명 데이터가 상기 재명명 테이블에 재저장되는 것은, 상기 동적 관계 측면에서 허락되는 경우에 상기 재명명 데이터의 상기 체크 포인트된 버전이 상기 CPT로부터 상기 재명명 테이블로 복사되는 것 및 상기 재구성 재명명 데이터의 적어도 일 부분이 상기 ROB로부터 상기 재명명 테이블로 복사되는 것에 의하여 수행된다.
실시 예로써, 디스패처를 통하여 상기 디코더로부터 수행을 위한 상기 micro-ops를 수신하며, 상기 CPT는 상기 디스패처로부터 상기 재명명 데이터의 상기 체크 포인트된 버전을 수신한다.
실시 예로써, 상기 micro-ops 의 실행에 있어서 예측 오류를 감지하는 단계를 더 포함하며, 상기 예측 오류가 감지된 것에 응답하여, 상기 재명명 데이터는 상기 재명명 테이블로부터 플러시된다.
실시 예로써, 클럭 사이클들을 정의하는 펄스들을 출력되는 단계를 더 포함하며, 상기 재명명 데이터의 상기 체크 포인트된 버전이 상기 클럭사이클들 중 하나의 사이클 내에, 상기 CPT로부터 상기 재명명 테이블로 복사된다.
본 발명의 실시 예에 따른 마이크로 프로세서는 micro-ops에 따라 재명명 데이터를 생성하는 재명명기(renamer); 상기 재명명 데이터를 저장하는 재명명 테이블; 상기 micro-ops로부터 생성된 ROB 데이터(Re-order buffer data)를 저장하는 리-오더 버퍼(ROB:Re-order buffer); 및 상기 재명명 데이터의 체크-포인트된 버전(check-pointed version)을 저장하는 하나의 체크-포인트 테이블(CPT: check-point table)를 포함하며, 상기 재명명 데이터의 체크-포인트된 버전이 상기 CPT로부터 상기 재명명 테이블로 복사되지만 상기 재구성 재명명 데이터의 어떤 부분도 상기 ROB로부터 상기 재명명 테이블로 복사되지 않는 것에 의하여, 상기 재명명 테이블에 저장된 재명명 데이터가 상기 재명명 테이블로부터 플러시되는 경우에 상기 플러시된 재명명 데이터가 재저장된다.
실시 예로써, 상기 micro-ops를 상기 실행 유닛으로 디스패칭하는 디스패처를 더 포함하며, 상기 CPT는 상기 디스패처로부터 상기 재명명 데이터의 상기 체크 포인트된 버전을 수신한다.
실시 예로써, 상기 micro-ops 의 실행에 있어서 예측 오류를 감지하기 위한 브랜치 수행 로직을 더 포함하며, 상기 예측 오류가 감지된 것에 응답하여, 상기 재명명 테이블은 재구성된다.
실시 예로써, 클럭 사이클들을 정의하는 펄스들을 출력하는 클럭을 더 포함하며, 상기 재명명 데이터의 상기 체크 포인트된 버전이 상기 클럭 사이클들 중 하나의 사이클 내에, 상기 CPT로부터 상기 재명명 테이블로 복사된다.
본 발명의 실시 예에 따른 마이크로 프로세서의 동작방법은 micro-ops에 따라 재명명 데이터를 생성하는 단계; 상기 재명명 데이터를 재명명 테이블에 저장하는 단계; 상기 micro-ops로부터 생성된 ROB 데이터(Re-order buffer data)를 리-오더 버퍼(ROB:Re-order buffer)에 저장하는 단계; 및 상기 재명명 데이터의 체크-포인트된 버전(check-pointed version)을 하나의 체크-포인트 테이블(CPT: check-point table)에 저장하는 단계를 포함하며, 상기 ROB 데이터는 재구성 재명명 데이터를 포함하고, 상기 재명명 테이블에 저장된 재명명 데이터가 상기 재명명 테이블로부터 플러시되는 경우에, 상기 재명명 데이터의 체크-포인트된 버전이 상기 CPT로부터 상기 재명명 테이블로 복사되지만 상기 재구성 재명명 데이터의 어떤 부분도 상기 ROB로부터 상기 재명명 테이블로 복사되지 않는 것에 의하여, 상기 플러시된 재명명 데이터가 재저장된다.
실시 예로써, 상기 micro-ops 의 실행에 있어서 예측 오류를 감지하는 단계를 더 포함하며, 상기 예측 오류가 감지된 것에 응답하여, 상기 재명명 테이블은 재구성된다.
본 발명의 실시 예에 따른 전자기기는 버스; 상기 버스에 연결된 통신 네트워크에 데이터를 전송하고 상기 통신 네트워크로부터 데이터를 수신하도록 구성된 인터페이스; 상기 버스에 연결된 입출력 장치; 상기 버스에 연결되고, 상기 입출력 장치를 통해 접근 가능한 사용자 데이터 또는 명령어들을 저장하도록 구성된 메모리; 및 상기 버스와 연결되고 상기 명령어들을 이용하도록 구성되는 컨트롤러를 포함하며; 상기 컨트롤러는 적어도 하나의 마이크로 프로세서를 포함하며, 상기 적어도 하나의 마이크로 프로세서는 재명명 데이터(rename data)를 저장하기 위한 재명명 테이블; 디스페처(dispatcher); 및상기 디스페처로부터 수신된 재명명 데이터를 저장하기 위한 체크-포인트 테이블(CPT: Check Point Table)을 포함하며, 상기 재명명 테이블이 플러시(flush)되면, 상기 재명명 테이블은 상기 CPT에 저장된 상기 재명명 데이터를 이용하여 재구성(rebuild)된다.
실시 예로써, 상기 인터페이스는 무선이며, 상기 통신 네트워크도 무선이다.
실시 예로써,상기 재명명 테이블은 상기 CPT 에 저장된 상기 재명명 데이터만을 이용하여 재구성된다.
실시 예로써, 예측 오류를 감지하기 위한 브랜치 수행 로직을 더 포함하며, 상기 예측 오류가 감지된 것에 응답하여, 상기 재명명 테이블은 플러시된다.
실시 예로써, 클럭 사이클들을 정의하는 펄스들을 출력하는 클럭을 더 포함하며, 상기 재명명 테이블은 상기 클럭 사이클들 중 하나의 사이클 내에서 재구성된다.
실시 예로써, 리-오더 버퍼 엔트리들(ROB 엔트리들: Re-Order Buffer entries) 및 ROB 엔트리들 중 가변 가능한 하나의 ROB 엔트리를 가리키는 리타이어 포인터(Retire Pointer)를 포함하며, 상기 ROB 엔트리들의 그룹은 ROB 체크포인트 윈도우로 정의되며, 상기 ROB 체크포인트 윈도우는, 상기 ROB 체크포인트 윈도우가 상기 리타이어 포인터가 가리키는 상기 ROB 엔트리에 기초하여 정의되는 동적 관계에 따라 상기 CPT에 매핑되며, 상기 재명명 테이블은 상기 동작 관계 측면에서 허락되는 경우에만 상기 CPT에 저장된 상기 재명명 데이터를 이용하여 재구성된다.
본 발명에 따른 마이크로 프로세서는 향상된 동작 속도를 제공할 수 있다.
도 1은 실시예에 따라 만들어진 마이크로 프로세서의 구성요소를 나타내는 다이어그램이다.
도 2A 및 도 2B는 재명명 테이블이 플러시되는 동안에 ROB 및 CPT에 대한 서로 다른 시나리오를 설명하기 위한 도면이다.
도 3A, 도 3B, 도 3C는 실시 예들에 따라 만들어진 샘플 마이크로 프로세서에 대한 샘플 시퀀스를 설명하기 위한 도면이다.
도 4는 도 3에서 설명된 재명명 테이블을 재구성하기 위한 시간 펄스들을 보여주는 타이밍도이다.
도 5는 본 발명으로부터의 유리한 결과가 없는 제1샘플 시나리에 대한, 도 3C의 구성요소들의 다이어그램이다.
도 6은 제2 샘플 시나리오를 위한 도 3C의 구성요소를 보여주는 다이어그램이다.
도 7은 제3 샘플 시나리오를 위한 도 3C의 구성요소를 보여주는 다이어그램이다.
도 8은 본 발명의 기술적 사상의 실시 예에 따른 반도체 장치와 함께 동작하는 시스템을 포함하는 전자기기를 보여주는 도면이다.
도 9는 본 발명의 실시 예에 따른 방법을 설명하기 위한 순서도이다.
상술한 바와 같이, 본 개시는 마이크로 프로세서, 장치 및 방법에 관련된 것이다. 실시예들은 이하에서 보다 자세하게 서술된다.
도 1은 실시예에 따라 만들어진 마이크로 프로세서(110) 의 구성요소를 나타내는 다이어그램이다. 마이크로 프로세서(110)는 명령어들을 수신하고 이 명령어들을 micro-ops로 알려진 micro-명령어(micro-operation)로 디코딩하는 디코더(120)를 포함한다.
마이크로프로세서(110)는 또한 micro-ops를 실행하는 하나 또는 그 이상의 실행 유닛을 포함한다. 도 1 에서, 세 개의 실행 유닛, 즉, 실행 유닛(A 151), 실행 유닛(B 152), 실행 유닛(C 153)이 도시되어 있다. 다만, 각 실행 유닛들의 숫자는 예시적인 것이며, 본 발명의 기술적 사상은 이에 한정되지는 않는다.
디코더(120)와 유닛들(151, 152, 153)은 파이프의 부분으로서, 이 파이프는 부가적인 구성요소들을 포함한다. 이러한 부가적인 구성요소 중 하나는, 궁극적으로 micro-ops를 실행 유닛들로 디스패칭하도록 제공되는 디스패처(140)이다. 도 1의 예에서, 디스패칭(dispatching)은 세개의 스케쥴러, 즉, 스케줄러들(A-141, B-142 및 C-143) 중 하나에 앞서서 이뤄진다. 스케쥴러들은 micro-ops를 실행 유닛들(151, 152, 153)로 전송한다. 이 실행 유닛들은 물리적 레지스터 파일(PRF:Physical Register File, 150) 로부터 소스를 읽고, micro-ops를 실행한다. 한편, 상술한 내용의 파이프의 구조는 일 실시 예에 불과할 뿐이며, 당업자는 다른 구조들이 가능하다는 것이 이해될 것이다.
마이크로 프로세서(110)는 재명명기(renamer,130)를 부가적으로 포함하며, 이 재명명기는 디코더(120)로부터 micro-ops를 수신한다. 재명명기(130)는 micro-ops에 따라 재명명 데이터를 생성한다.
마이크로 프로세서(110)는 나아가 재명명 테이블(136)을 포함한다. 재명명 테이블(136)은 재명명 데이터를 저장하며, 화살표 방향(135)에 띠라 재명명기(130)로부터 수신한다.
마이크로 프로세서(110)는 리-오더 버퍼(ROB:Re-Order Buffer, 160)를 포함한다. ROB(160)는 도 1 에 개별적으로 개시되어 있지 않은 ROB 엔트리들을 포함한다. 이하에서 상술하겠지만, 각 ROB(160)는 ROB 엔트리들 중 가변적인 하나의 엔트리를 가리키는 리타이어 포인터(Retire Pointer)와 플러시 포인터(Flush Ponter)를 포함한다. ROB(160)는 순환될 수도(circular) 있고 순환되지 않을 수도 있다. ROB 엔트리들은 micro-ops로부터 생성된 ROB 데이터(162)를 저장하기 위함이다. 일부 실시 예에서, 각 ROB 엔트리들은 하나의 micro-op를 저장하지만, 다른 실시 예에서 더 많은 micro-ops들이 하나의 ROB 엔트리에 저장될 수 있다. ROB 데이터(162)는 바람직하게는 재명명 테이블(136)에 저장된 재명명 데이터에 상응하는 재구성 재명명 데이터(182)를 포함한다. 도 1 의 실시 예에서 ROB 데이터(162)는 디스패처(140)로부터 수신된다.
마이크로 프로세서(110)는 적어도 하나의 체크-포인트 테이블(CPT:Check-Point table, 170)을 더 포함한다. 도 1에 자세히 도시되지는 않았으나 CPT(170)는 재명명 테이블(136)과 그 넓이가 같다. CPT(170)는 도 1 에 개별적으로는 도시되지 않은 CPT 엔트리들을 가진다. CPT엔트리들의 개수는 재명명 테이블(136) 의 개수와 같으며, 이는 CPT 가 재명명 테이블(136)과 같은 깊이를 가진다는 것을 의미한다. CPT 엔트리들의 수는 CPT 깊이(depth)를 정의한다. CPT 엔트리들은 재명명 테이블(136)에 저장된 재명명 데이터의 체크 포인트된 버전(check-pointed version, 180)을 저장하기 위함이다. 재명명 데이터의 체크 포인트된 버전(180)은 재명명 데이터를 생성하는 임의의 버전이거나, 재명명 데이터 그 자체 일 수 있으며, 이러한 경우에, 재명명 데이터는 CPT(170) 에 저장되기 때문에, 체크 포인트된 재명명 데이터(check-pointed rename data, 180)이라고 불린다. 도 1의 실시 예에서, 재명명 데이터의 체크 포인트된 버전(180)은 디스패처(140)로부터 수신된다.
이하에서 더 자세히 설명될 바와 같이, ROB 체크 포인트 윈도우는, ROB 체크포인트 윈도우가 리타이어 포인터가 가리키는 ROB 엔트리에 기초하여 정의되는 동적 관계(dynamic relationship, 187)에 따라 CPT에 매핑(mapping)된다. 리타이어 포인터는 일반적으로 서로 다른 시간에 서로 다른 ROB 엔트리를 가리키기 때문에, 동적 관계(187)는 가변적이 된다. 따라서, ROB 엔트리가 새로운 micro-ops에 할당되면, 선택된 CPT 엔트리 또한 micro-ops가 목적지를 가지는 경우에 micro-ops에 대한 목적지 재명명 정보(destination rename information)로 업데이트된다.
상술한 바와 같이, 재명명 테이블(136)은 플러시 되며, 보다 정확하게 이는 재명명 테이블에 저장된 재명명 데이터가 플러시 됨을 의미한다. 도 1의 실시 예에서, 마이크로 프로세서(110)는 브랜치 실행 로직(157)을 포함한다. 로직(157)은, 플래그(190)로 도시된 micro-ops의 실행 중의 예측오류를 감지할 수 있다. 재명명 테이블(136)은 예측오류(190)의 감지에 응답하여 플러시 될 수 있다.
재명명 테이블(136)이 플러시 되면, 이 후 재구성될 수 있다. 재구성을 위하여, 마이크로 프로세서 (110)는 리타이어 체크 포인트 데이터(retire check-point data)를 저장하는 리타이어 테이블(138)을 포함할 수 있다. 리타이어 체크 포인트 데이터는 재구성의 시작 과정으로서 화살표(139)에 따라 재명명 테이블(136)로 복사될 수 있다.
재구성을 위하여, 플러시된 재명명 데이터는, 리타이어 테이블로부터의 초기 복사에 추가적으로, 데이터의 두 개의 데이터 소스(data of sources)로부터 재명명 테이블(136)로 재저장될 수 있다. 처음으로, 재명명 데이터의 체크 포인트된 버전(180)은 화살표(175)에 따라 다량 유입(mass importation)의 형태로 CPT(170)로부터 재명명 테이블(136)로 복사될 수 있다. 다량 유입은, 이하에서 설명될 바와 같이, 동적 관계(187)에 측면에서 허락되는 경우 동시에 일어나는 복사로 구현될 수 있다. 둘째로, ROB 데이터(162) 내의 재구성 재명명 데이터(182)의 적어도 한 부분은, 화살표(165)에 따라 ROB(160)로부터 재명명 테이블(136)로 복사되며, 이것은 “walking the ROB”로도 알려진 프로세스이다.
이제 실행 동작이 좀더 자세히 설명된다. 도 2A 및 2B는 도 1의 마이크로 프로세서(110)에서 사용될 수 있는 ROB(260) 및 CPT(270)를 보여주는 도면이다. ROB(260)와 CPT(270)의 크기 및 기능적 관계는 프로세스 시간을 절약하기 위하여 화살표(175)의 복사 동작과 화살표(165)의 복사 동작이 동시에 일어난다는 바람직한 재구성의 관점에서 선택된 것이며, 본 발명의 실시 예는 이에 한정되지 않음이 이해될 것이다.
본 실시 예에 있어서, ROB(260)는 0에서 95로 명명된 96개의 엔트리들을 가진다. 다만 이는 예시적인 것이며, ROB(260)는 ROB 엔트리들은 임의의 개수를 가질 수 있다. 나아가, ROB 체크포인트 윈도우는 ROB 엔트리들의 그룹으로 정의될 수 있다. 해당 그룹은 최적화된 임의의 숫자일 수 있다. 상기 그룹을 위한 바람직한 숫자는 ROB 깊이의 약 절반에 해당하는 크기이며, 이 경우에는 48개의 ROB 엔트리들일 것이다. 이하에서 자세히 설명될 바와 같이, 최적의 ROB 체크포인트보다 지나치게 큰 ROB 체크포인트 윈도우는 CPT가 차이를 만들어낼 수 있을 만큼 충분한 시간을 갖지 못하게 하며, 반면에 최적의 ROB 체크포인트보다 지나치게 작은 ROB 체크포인트 윈도우는 CPT가 충분한 시간을 갖게 하지만 데이터를 재명명 하는 데에는 충분하지 못하다. 두 경우에 있어서, 만약 그룹의 크기가 최적의 것과 지나치게 차이가 있다면, 이는 이하에서 살펴볼 바와 같이, ROB로 하여금 필요로 하는 것보다 더욱 많은 시간을 워킹(walk)하게 한다.
도 2A 및 도 2B에는, 재명명 테이블이 플러시되는 동안에 ROB(260) 및 CPT(270)에 대한 서로 다른 시나리오가 도시되어 있다. ROB 체크포인트 윈도우의 각 시간은 48개의 ROB 엔트리들의 다른 그룹들에 스팬(span)될 것이다. 나아가, ROB 재구성 윈도우(ROB rebuild window)의 각 시간은 서로 다른 이벤트의 재명명 테이블의 플러싱(flushing)이 서로 다른 시간들에 의하여 정의될 때, 일반적으로 서로 다른 숫자의 ROB 엔트리들을 가진다.
좀더 구체적으로, 도 2A에서, ROB 체크포인트 윈도우는 ROB 엔트리(20)의 리타이어 포인터에서 시작하는 것으로 정의되며, ROB 엔트리(67)까지 포함한다. 나아가, ROB 재구성 윈도우(263A)가 정의되며, 이는 20부터 56까지의 30개의 ROB 엔트리들을 포함한다. 따라서, 56 엔트리 이후의 57 엔트리는 플러시 포인터에 의하여 가리켜지는 엔트리이다. 이러한 37개의 엔트리들은 재구성 재명명 데이터(282A)를 포함하는 ROB 데이터(262A)를 저장한다. CPT(270)은 체크-포인트된 재명명 데이터(280A)를 저장한다.
더욱이, 도 2B에서, ROB 체크포인트 윈도우는 ROB 엔트리(40)의 리타이어 포인터에서 시작하는 것으로 정의되며, ROB 엔트리(87)까지 포함한다. 나아가, ROB 재구성 윈도우(263B)가 정의되며, 이는 40부터 66까지의 27개의 ROB 엔트리들을 포함한다. 이러한 27개의 엔트리들은 재구성 재명명 데이터(282B)를 포함하는 ROB 데이터(262B)를 저장한다. CPT(270)은 체크-포인트된 재명명 데이터(280B)를 저장한다.
동적 관계(dynamic relationship, 287)는 ROB의 동작 방법, 좀더 구체적으로는 ROB 체크포인트 윈도우가 CPT에 매핑되는 방법에 관한 것이다. 매핑(mapping)은 연계(association)이라고 칭해질 수도 있다. 동적 관계(287)는 그것이 변화하기 때문에 '동적(dynamic)'이라 칭해지며, 이는 ROB 체크포인트 윈도우가 리타이어 포인터가 가리키는 ROB 엔트리에 기초하여 정의되기 때문이다. 즉, 도 2A 및 도2B에서, ROB 체크포인트 윈도우는 서로 다른 양상으로 정의된다.
재구성을 위하여, 소정의 요소(element)가 그것이 저장된 ROB 엔트리 또는 그것이 저장된 CPT(270)로부터 재명명 테이블에 재저장된다고 가정된다. 만약 CPT로부터의 복사가 허용된다면, 속도가 향상될 수 있다.
동적 관계(287)는 CPT(270)로부터의 재명명 및 이에 대하여 ROB(260)로부터의 재명명에 대한 부분에 관계된다. CPT(270)로부터의 복사 동작은 동적 관계(287)의 측면에서 허여된 경우에 발생할 것이다. 허여되는 시간에 관한 실시 예들은 이하에서 좀더 자세히 설명될 것이다.
실시 예들에 따라 만들어진 샘플 마이크로 프로세서(310)에 대한 샘플 시퀀스를 설명하기 위해, 도 3A, 도 3B, 도 3C가 연달아 사용된다. 마이크로 프로세서(310)는 디코더(320), 재명명기(330), 재명명 테이블(336), 리타이어 테이블(338), 디스패처(340), 스케쥴러(341, 342, 343), PRF(350), 실행 유닛들 (351, 352, 353), 브랜치 실행 로직(357) 및 ROB(360)를 포함하며, 이는 도 1 의 유사한 구성요소를 참조하여 설명될 수 있다. ROB(360)는 ROB 데이터(162)와 유사한 ROB 데이터(362)를 저장할 수 있다. ROB 데이터(362)는 재구성 재명명 데이터(182)와 유사한 재구성 재명명 데이터(382)를 포함한다.
또한, 마이크로 프로세서(310)는 ROB(360)와 동적 관계를 가지는 CPT(370)를 포함한다. CPT(370)와 ROB(360)는 도1, 도 2A, 도 2B의 관계(187)와 동일한 동적 관계를 가질 수 있다. CPT(370)는 동적 관계에 따라 체크 포인트된 재명명 데이터 (380)를 저장한다.
도 3A에서, 마이크로 프로세서(310)는 정상적으로 동작한다. 명령어는 파이프를 통해 디코더(320)에서 수신되고, 실행 유닛들(351, 352, 353)에서 실행된다.
도 3B에서, 플래그(390)로 도시된 예측오류가 감지된다. 그 결과, 재명명 테이블(336)은 플러시되고 코멘트(392)에 의해 나타내어진다.
도 3C에서, 코멘트(393)에 의해 나타내어지는 것과 같이, 재명명 테이블(336)은 재구성된다. 그 결과, 코멘트(391)가 나타내는 것과 같이 파이프의 프론트 엔드에서 정지가 발생한다.
재구성은 다음과 같이 수행된다. 첫째, 리타이어 체크포인트가 화살표(339)에 따라 리타이어 테이블(338)로부터 복사된다. 재구성은 두 개의 다른 소스들로부터 오는 데이터에 의해 수행된다. 체크-포인트된 재명명 데이터(380)는 적용 가능한 동적 관계의 관점에서 허락되는 경우 화살표 (375)에 따라 복사된다. 그리고, 재명명 데이터(382)는 화살표(365)에 따라 ROB(360)를 워킹(walking)함에 의해 복사된다. 그러나, 일부 특별한 경우에는 이하의 샘플 시나리오에 개시될 바와 같이, 두 개의 소스들 중 하나의 소스는 관여하지 않을 수 있다.
마이크로 프로세서(310)는 일반적으로, 도시되지 않은 클럭을 포함한다. 클럭은 클럭 싸이클들을 정의하는 펄스들을 출력한다. 클럭 싸이클들은 본 발명의 이점을 측정하는 좋은 방법이다. 실시 예들이 이하에서 서술된다.
도 4는 도 3에서 설명된 재명명 테이블을 재구성하기 위한 시간 펄스들을 보여주는 타이밍도이다. 하나의 펄스로 표현된 클럭 사이클들(412)은 N 사이클들의 그룹(415)을 포함한다. 숫자 N은 이하에서 좀더 자세히 설명된다.
도 4에서는 예측 오류를 감지하고 이후의 패널티(penalties)가 설명된다. 펄스(492)는 코멘트(392)에 대한 재명명 테이블(336)의 플러싱(flushing)에 대응한다. 연장된 정지 펄스(491)는 코멘트(391)에 대한 파이프(pipe)가 정지된 시간에 대응한다. 펄스(491)의 지속은 예측 오류에 대한 시간 패널티 및 이후의 마이크로 프로세서의 동작 성능 감소와 관련된다. 펄스(491)과 사이클들의 그룹(415)에서 만약 N이 크다면 패널티는 더욱 크다. 펄스(493A)과 펄스(493B)는 코멘트(393)에 대응하여 각각 재구성의 시작과 끝을 가리킨다.
일반적으로, 재명명 사이크들(436)은 사이클(439), 사이클(475), N개의 사이클들의 그룹(465)을 포함한다. 사이클(439)은 동작(339) 수행 시 리타이어 체크포인트(retire checkpoint)를 복사하기 위한 것이다. 사이클(475)은 화살표(375)에 따라 CPT로부터 동시에 복사하기 위한 것이다. N개의 사이클들의 그룹(465)은 화살표(365)에 따라 ROB를 워킹(walking)하기 위한 것이다. 사이클들의 그룹(415)과 유사하게, 사이클(465)은 하나의 펄스로 도시 되어 있다. 다만 이는 예시적인 것이며, 사이클들의 그룹(415)과 사이클(465)은 N 값을 가질 수도 있다. 화살표(339, 375, 365)는 이해의 편의를 돕기 위하여 도4에서 적절한 위치에서 반복되고 있다.
그러나, 구체적으로, 재명명 사이클들(436)은 매번 포함되지 않는다. 어느 것이 포함되고 어느 것이 포함되지 않는지에 관한 문제는 예측 오류가 감지되고, 이후 재명명 테이플이 플러시 되는 시점에 정의되는 시나리오에 따라 달려있다. 구체적인 동작의 시나리오는 도 4를 참조하여 설명될 것이다.
처음으로, 시나리오들을 이해하기 위하여, ROB 재구성 윈도우는 재명명 테이블이 플러시 될 때 정의된다고 인식되어야 한다. ROB 재구성 윈도우는, 도 2A 및 도2B에서 설명된 바와 같이, 리타이어 포인터로부터 시작하고 플러시 포인터가 하나 선행하는 데서 종료하는 ROB 엔트리들을 갖는다. ROB 재구성 윈도우 내의 ROB 엔트리들은 재명명 테이블에 재저장될 필요가 있다고 정의되며, 재저장은 CPT로부터의 동시의 복사 동작 또는 ROB를 워킹(walking)하는 것 중 어느 하나에 의하여 수행된다. 각 경우에 있어서, ROB로부터 재명명 테이블로 복사되는 재구성 재명명 데이터의 부분은 ROB 재구성 윈도우 내에 속한다.
시나리오들은, 재명명 테이블이 플러시 될 때마다 ROB 재구성 윈도우는 일반적으로 서로 다른 ROB 엔트리들의 세트를 포함하다는 점에서 차이가 있다. 서로 다른 시나리오들은, ROB 재구성 윈도우가 이전에 언급된 ROB 체크포인트 윈도우의 깊이와 관련하여 어떻게 서로 다른 크기들을 가지는 것에 대하여 설명할 것이다. 또한 이하의 시나리오들의 일 측면은 CPT 테이블이 동시에 재명명 테이블로 복사되는 것이 허여되는 지 또는 ROB를 워킹(walking)하는 것에 의하여 동일한 내용이 복사되는 것인 지를 판단하는 것과 연관된다.
이러한 시나리오들의 다양한 예들이 설명될 것이다. 시나리오의 설명을 위하여, ROB(360)과 CPT(370)이 도 2A 및 도 2B에서 도시된 것과 유사하게 사용된다고 가정된다. 나아가, 관계(287)과 유사하며 ROB 체크포인트(CP) 윈도우와 CPT(370)를 보여주는 괄호에 의하여 가리켜지는 동적 관계(587)가 적용된다.
도 5는 본 발명으로부터의 유리한 결과가 없는 제1샘플 시나리에 대한, 도 3C의 구성요소들의 다이어그램이다. ROB(360)에서 체크포인트 윈도우는 리타이어 포인터가 나타내는 ROB 엔트리 20에서 시작하여, ROB 엔트리 67에서 종료한다. 더하여, 화살표가 가리키는 ROB 재구성 윈도우(563)는 리타이어 포인터가 나타내는 ROB 엔트리 20에서 시작하여, 플러시 포인터가 나타내는 ROB 엔트리 57보다 하나 작은 ROB 엔트리 36에서 종료한다.ROB 재구성 윈도우(563) 내의 ROB 데이터(562)는, CPT(370)로부터의 동시 복사 또는 직접적으로 ROB(360)를 워킹하는 것에 의해 재명명 테이블(336)로 재저장되는 재구성 재명명 데이터(582)를 포함한다.
이 실시 예에서, ROB 재구성 윈도우(563)는 ROB 체크포인트 윈도우보다 작다. 따라서, ROB 재구성 윈도우(563)는 모두, ROB 엔트리들 0에서 47로 이루어진 ROB 체크포인트 윈도우 내에 있다. 따라서 ROB 엔트리들 57에서 67까지의 콘텐츠들은 플러시 되며, 따라서 CPT(370)에 저장된 체크 포인트된 재명명 데이터(580)는 CPT (370)이 재명명 테이블(336)로 복사될 것이기 때문에, 재구성 프로세스의 일부로서 재명명 테이블로 복사되지 않을 것이다. 이에, 체크-포인트된 재명명 데이터(581)는 도면에서 줄로 그어진 것과 같이 도시 된다. 따라서, 코멘트(567)에 대하여, 모든 ROB 엔트리들 20 내지 56내의 재구성 재명명 데이터(582)는 화살표(565)에 따라, 즉, ROB(360)를 워킹하는 것에 의해서 재저장될 것이다.
다시 말해서, 도 5의 CPT는 재구성을 위해 사용될 수 없으며, 따라서, 본 발명은 도 5의 시나리오에서는 이점을 제공하지 않는다. 도 5의 시나리오에 대해 도 4 를 간략하게 참조하면, 재명명 사이클(475)이 포함되며, 숫자 N은 최대 m일 수 있으며, 여기서 m은 이러한 시나리오 하에서 ROB(360)가 워킹 될 수 있는 가장 많은 단계의 수를 나타낸다. 정지 펄스(491)의 기간은 본 발명이 없는 상태에서는 줄어들지 않는다. 이러한 것은 나머지 시나리오 예들에서는 적용되지 않는다.
도 6은 제2 샘플 시나리오를 위한 도 3C의 구성요소를 보여주는 다이어그램이다. ROB(360)에서, 체크포인트 윈도우는 리타이어 포인터에 의하여 가리켜지는 ROB 엔트리(20)로부터 시적하여 ROB 엔트리(67)에서 끝이 난다. 나아가, ROB(360) 내의 ROB 재구성 윈도우(663)는 20에서 76까지의 ROB 엔트리들에 걸쳐 있다. 본 실시 예에 있어서, ROB 데이터(662)는, 재명명 테이블(336)에 재저장되는 재구성 재명명 데이터의 일 부분들(682A, 682B)을 포함한다. 재구성 재명명 데이터를 ROB(360) 내의 소정 부분들(682A, 682B)로 분할한 것이 ROB 체크포인트의 경계에서 발생한 것임이 이해될 것이다. 실제, 20에서 67의 ROB 엔트리들은 CPT(370)에 저장된 체크-포인트된 재명명 데이터 부분(680)에 매핑되며, 68에서 76의 ROB 엔트리들은 CPT(370)에 매핑되지 않는다.
체크-포인트된 재명명 데이터 부분(680)은 사용가능하며, 코멘트(677)에 대하여, 화살표(675)에 따라 재저장될 것이다. 따라서, 재구성 재명명 데이터 부분(682A)은 필요 없게 되어, 도시된 바와 같이 도면에서 줄로 그어질 것이다. 그러나, 부분(682B)는 CPT를 거쳐 효과적으로 복사될 수 없으며, 코멘트(667)에 대한 68에서 76의 ROB 엔트리들 내의 재구성 재명명 데이터 부분(682B)은 ROB(360)를 워킹(walking)하는 것에 의하여 화살표(675)를 따라 재저장될 것이다. 도 4를 참조하면, 화살표(675)를 따라 재저장하는 것은 하나의 클럭 펄스(475) 내에서 발생할 수 있다. N은 m보다 작고 0보다 크며, 정지 펄스(491)의 지속 기간은 본 발명에 의하여 감소될 것이다. 도 6의 시나리오에서의 재구성은 도 5에 비하여 더욱 많은 데이터를 복수하는 것을 요구하는 것처럼 보이나, 본 발명의 기술적 사상에 따르면 보다 적은 시간이 소요된다.
도 7은 제3 샘플 시나리오를 위한 도 3C의 구성요소를 보여주는 다이어그램이다. ROB(360)에서, 체크포인트 윈도우는 리타이어 포인터에 의하여 가리켜지는 20의 ROB 엔트리로부터 시작하여 67의 ROB 엔트리에서 종료된다. 나아가, ROB 재구성 윈도우(763)는 20에서 67의 ROB 엔트리들에 걸쳐 있다. 본 실시 예에 있어서, ROB 재구성 윈도우(763)는 ROB 체크포인트 윈도우와 완정히 동일하다. 이는 소정 주파수에서 통계적으로 발생하는 특수한 경우에 해당한다. ROB 데이터(762)는 재구성 재명명 데이터(782)를 포함한다.
체크-포인트된 재명명 데이터 부분(780)은 사용가능하며, 코멘트(777)에 대하여, 화살표(775)에 따라 재저장될 것이다. 더욱이, 코멘트(767) 당, 본 시나리오에서는 ROB(360)을 워킹(walking) 시키는 것이 없으며, 재구성 재명명 데이터는 ROB(360)으로부터 재명명 테이블(336)로 복사되지 않을 것이다. 따라서, 재구성 재명명 데이터 부분(682A)은 필요 없게 되어, 도시된 바와 같이 도면에서 줄로 그어질 것이다. 도 4를 참조하면, 화살표(775)를 따라 재저장하는 것은 하나의 클럭 펄스(475) 내에서 발생할 수 있다. N은 0일 것이며, 펄스들(415, 465)의 그룹은 존재하지 않는다. 정지 펄스(491)의 지속 기간은 본 발명에 의하여 최소화될 것이다.
도 8은 본 발명의 기술적 사상의 실시 예에 따른 반도체 장치와 함께 동작하는 시스템(800)을 포함하는 전자기기를 보여주는 도면이다. 시스템(800)은 PDA(personal digital assistant), 랩탑 컴퓨터, 모바일 컴퓨터, 웹 태블릿, 무선폰, 핸드폰, 디지털 음악 재생기, 유선 또는 무선 전기 장치, 또는 적어도 상기의 기기들 중 두 개를 포함하는 복합 전자 장치 내에서 사용될 수 있다. 시스템(800)은 컨트럴로(810), 키패드(keypad), 키보드(keyboard), 디스플레이와 같은 입출력 장치(820), 메모리 장치(830), 버스(850)를 통하여 상호 통신을 하는 인터페이스(840)를 포함할 것이다. 컨트롤러(810)는, 예를 들어, 본 발명의 실시 예에 따라 제조된 적어도 하나의 마이크로 프로세서, 디지털 신호 프로세서, 마이크로 컨트롤러 같은 것들을 포함할 것이다. 메모리 장치(830)는 컨트롤러(810)에 의하여 사용되는 명령어 및/또는 입출력 장치를 거쳐 접근 가능한 사용자 데이터를 저장할 것이다. 전자기기(800)는 통신 네트워크를 통하여 데이터를 전송하거나 수신하는 사용자 인터페이스(840)를 사용할 것이다. 전송 동작은, 예를 들어, 케이블, USB 인터페이스와 같은 유선을 거칠 수 있다. 다른 예로, 통신 네트워크는 무선일 수 있으며, 인터페이스(840)는 무선일 수 있고, 예를 들어, 안테나, 무선 송수신기 같은 것들일 수 있다. 전자 시스템(800)은 CDMA, GSM, NADC, E-TDMA, WCDMA, CDMA2000, Wi-Fi, Muni Wi-Fi, Bluetooth, DECT, Wireless USB, Flash-OFDM, IEEE 802.20, GPRS, iBurst, WiBro, WiMAX, WiMAX-Advanced, UMTS-TDD, HSPA, EVDO, LTEAdvanced, MMDS 와 같은 통신 시스템의 통신 인터페이스 프로토콜 내에서 사용될 수 있다.
도 9는 본 발명의 실시 예에 따른 방법을 설명하기 위한 순서도(900)이다. 순서도(900)의 방법은 상술한 실시 예들, 마이크로 프로세서, 전자 장치들에 의하여 실현될 수 있다.
910 단계에 따르면, 명령어가 micro-ops로 디코딩 된다. 다음의 920 단계에 따르면, 재명명 데이터가 micro-ops에 의하여 발생한다. 다음의 930 단계에 따르면, 재명명 데이터가 재명명 테이블에 저장된다.
다음의 940 단계에 따르면, 재명명 데이터의 체크-포인트된 버전이 CPT에 저장된다. 다른 단계 950에 따르면, micro-ops로부터 발생된 ROB 데이터가 ROB에 저장된다. ROB 데이터는 필요한 경우, 궁극적으로 재명명 테이블을 재구성하기 위하여 사용되는 재구성 재명명 데이터를 포함할 수 있다. ROB는 CPT와 동적 관계를 유지한다. 960 단계에 다르면, micro-ops가 실행된다.
다음의 970 단계에 따르면, 재명명 테이블이 플러시 되었는지의 여부가 판단된다. 다시 말하면, 재명명 데이터는 재명명 테이블로부터 플러시 된다. 만약 NO라면, 상기 910 단계가 재개된다. 일 실시 예에 있어서, 재명명 테이블은 상술한 바와 같이 예측 오류를 감지하는 것에 응답하여 플러시 된다.
만약 재명명 테이블이 플러시 되었다면, 이 후 980 단계에 따라, 재명명 데이터가 재명명 테이블에 재저장된다. 즉, 재명명 테이블이 재구성된다. 980 단계는 982 단계 및 984 중 적어도 하나를 포함한다. 980 단계에서, ROB 엔트리들의 ROB 재구성 윈도우는 재명명 테이블이 플러시 될 때 정의될 수 있다. ROB 재구성 윈도우 내의 이러한 ROB 엔트리들의 재구성 재명명 데이터는 982 단계에 의하여 또는 984 단계에 의하여 재명명 테이블에 재저장된다.
982 단계에 따라, 재명명 데이터의 체크-포인트된 버전은, 만약 950 단계의 관계에 의하여 허여된다면, CPT로부터 재명명 테이블로 복사된다. 일 실시 예에 있어서, 재명명 데이터의 체크-포인트된 버전은 하나의 클럭 사이클 내에서 복사될 것이다.
984 단계에 따라, 재구성 재명명 데이터는 ROB로부터 재명명 테이블로 복사된다. 바람직하게는, 이는 982 단계에 의하여 커버되지 않는 나머지 것들에 대하여 수행되고, ROB를 워킹(walking)함으로써 수행된다.
한편, 상술한 동작의 순서는 예시적인 것이며, 본 발명의 기술적 사상은 이에 한정되지 않는다. 예를 들어, 상술한 방법의 순서는 고정된 것이 아니며, 본 발명의 기술적 사상의 다른 실시 예에 따라 서로 다른 순서에 의하여 수행될 수 있다. 나아가, 일 실시 예에서, 새로운 단계가 추가될 수 있으며, 각 단계는 수정되거나 삭제될 수 도 있다.
한편, 본 발명의 기술분야의 통상의 지식을 가진 자는 상술한 발명에 기초하여 본 발명을 실현할 수 있을 것이다. 구체적 사항들이 전반적인 이해를 돕기 위하여 제공되었으나, 잘 알려진 구성요소 또는 사항들은 본 발명의 기술적 사상을 보다 명확하게 설명하기 위하여 생략되었다.
상술한 바와 같이, 본 발명의 기술적 사상은 하나 또는 그 이상의 실시 예들을 포함하나, 상기의 실시 예들에 한정되는 것은 아니다. 예를 들어, 발명의 실시 예들은 상술한 설명과 같이 실현될 수 도 있으나 현재의 기술 또는 미래의 기술과 융합되어 다소 다르게 구현될 수도 있다.
micro-ops: micro-operation
PRF: 물리적 레지스터 파일
renamer: 재명명기
rename tabel: 재명명 테이블
ROB: 리-오더 버퍼
CPT: 체크 포인트 테이블
dispatcher: 디스패처
brach execution logic: 브랜치 실행 로직

Claims (27)

  1. 마이크로 프로세서에 있어서,
    명령어를 micro-동작들로 디코딩하는 디코더;
    상기 micro-동작들을 실행하는 실행 유닛;
    상기 micro-동작들에 따라 재명명 데이터(rename data)를 생성하는 재명명기(renamer);
    상기 재명명 데이터를 저장하는 재명명 테이블(rename table), 단 상기 재명명 테이블은 상기 재명명 테이블로부터 상기 재명명 데이터를 플러시하도록 구성되고;
    상기 micro-동작들로부터 생성된 리-오더 버퍼 데이터를 저장하는 리-오더 버퍼 엔트리들 및 상기 리-오더 버퍼 엔트리들 중 가변적인 하나를 가리키는 리타이어 포인터를 포함하는 리-오더 버퍼, 단 상기 리-오더 버퍼 데이터는 재구성 재명명 데이터를 포함하고; 및
    체크-포인트 엔트리들을 포함하는 체크-포인트 테이블을 포함하되,
    상기 체크 포인트 엔트리들 각각은 상기 재명명 데이터의 체크-포인트된 버전을 저장하도록 구성되고, 상기 체크 포인트 엔트리들 각각은 상기 리-오더 버퍼 내의 연속 값 시퀀스로 상기 리-오더 버퍼 엔트리들 각각의 숫자와 동적으로 연관되고, 상기 체크 포인트 테이블은 체크포인트 이벤트가 발생한 경우, 상기 리타이어 포인터에 의해 지칭된 리-오더 엔트리 버퍼 숫자를 기반으로 동적으로 판별되고,
    상기 체크포인트 이벤트에서 상기 리타이어 포인터 및 상기 체크-포인트 테이블의 크기는 리-오더 버퍼 체크포인트 윈도우를 정의하고,
    상기 재명명 테이블에 저장된 재명명 데이터가 상기 재명명 테이블로부터 플러시된 경우, 상기 플러시된 재명명 데이터는:
    리-오더 버퍼 재구성 윈도우가 상기 리-오더 버퍼 체크포인트 윈도우의 종단을 포함하는 경우, 상기 체크-포인트 테이블로부터 상기 재명명 테이블로 복사된 상기 재명명 데이터의 상기 체크-포인트된 버전, 및
    리-오더 버퍼 재구성 윈도우가 상기 리-오더 버퍼 체크 포인트 윈도우보다 큰 경우, 상기 재명명 테이블로부터 상기 리-오더 버퍼로 복사된 상기 리-오더 버퍼 재구성 윈도우의 상기 재구성 재명명 데이터의 적어도 일부에 의해 상기 재명명 테이블로 재저장되는 마이크로 프로세서.
  2. 제 1 항에 있어서,
    상기 실행 유닛으로 상기 micro-동작들을 디스패치하는 디스패쳐를 더 포함하고,
    상기 체크-포인트 테이블은 상기 디스패쳐로부터 상기 재명명 데이터의 상기 체크-포인트된 버전을 수신하는 마이크로 프로세서.
  3. 제 1 항에 있어서,
    상기 micro-동작들을 실행하는 도중에 예측 오류(misprediction)를 검출하는 브랜치 실행 로직을 더 포함하고,
    상기 예측 오류가 검출된 것에 응답하여 상기 재명명 데이터가 상기 재명명 테이블로부터 플러시되는 마이크로 프로세서.
  4. 제 1 항에 있어서,
    클럭 사이클들을 정의하는 펄스들을 출력하는 클럭(clock)을 더 포함하고,
    상기 클럭 사이클들 중 하나에서 상기 재명명 데이터의 상기 체크-포인트된 버전이 상기 체크-포인트 테이블로부터 상기 재명명 테이블로 복사되는 마이크로 프로세서.
  5. 제 1 항에 있어서,
    상기 리-오더 버퍼는 플러시 포인터와 연관된 리-오더 버퍼 엔트리에서 종료하는 것으로 정의되는 리-오더 버퍼 재구성 윈도우를 포함하는 마이크로 프로세서.
  6. 제 1 항에 있어서,
    상기 체크-포인트 테이블은 상기 리-오더 버퍼에 의해 구성된 리-오더 버퍼 엔트리들의 개수보다 1/2만큼의 체크-포인트 엔트리들을 포함하는 마이크로 프로세서.
  7. micro-동작들에 따라 재명명 데이터를 생성하는 재명명기;
    상기 재명명 데이터를 저장하는 재명명 테이블;
    상기 micro-동작들로부터 생성된 리-오더 버퍼 데이터를 저장하는 리-오더 버퍼; 및
    복수의 체크-포인트 엔트리들에 상기 재명명 데이터의 체크-포인트된 버전을 저장하는 체크-포인트 테이블을 포함하고,
    상기 리-오더 버퍼 데이터는 리-오더 버퍼 엔트리들에 저장된 재구성 재명명 데이터를 포함하고,
    상기 복수의 체크-포인트 엔트리들 각각은 상기 리-오더 버퍼에서 연속 값 시퀀스로 상기 리-오더 버퍼 엔트리들 각각의 숫자에 동적으로 연관되고,
    상기 체크-포인트 테이블은 체크포인트 이벤트가 발생한 경우, 리타이어 포인터에 의해 지칭된 리-오더 버퍼 엔트리 숫자를 기반으로 동적으로 판별되고,
    상기 재명명 테이블에 저장된 재명명 데이터가 상기 재명명 테이블로부터 플러시된 경우, 상기 플러시된 재명명 데이터는:
    상기 동적 연관에 의해 허용되는 경우, 상기 체크-포인트 테이블로부터 상기 재명명 테이블로 복사된 상기 재명명 데이터의 상기 체크-포인트된 버전에 의해,
    단, 상기 플러시된 데이터가 상기 체크-포인트 테이블에 의해 전부 재저장된 경우, 상기 리-오더 버퍼로부터 상기 재명명 테이블로 복사된 상기 재구성 재명명 데이터의 적어도 일부 없이 재저장되는 마이크로 프로세서.
  8. 제 7 항에 있어서,
    상기 micro-동작들을 실행 유닛으로 디스패치하는 디스패쳐를 더 포함하고,
    상기 체크-포인트 테이블은 상기 디스패쳐로부터 상기 재명명 데이터의 상기 체크-포인트된 버전을 수신하는 마이크로 프로세서.
  9. 제 7 항에 있어서,
    상기 micro-동작들의 실행에서, 예측 오류(misprediction)를 검출하는 브랜치 실행 유닛을 더 포함하고,
    상기 재명명 테이블은 상기 예측 오류가 검출된 것에 응답하여 재구성되는 마이크로 프로세서.
  10. 제 7 항에 있어서,
    클럭 사이클들을 정의하는 펄스들을 출력하는 클럭(clock)을 더 포함하고,
    상기 재명명 데이터의 체크-포인트된 버전은 상기 클럭 사이클들 중 하나에서, 상기 체크-포인트 테이블로부터 상기 재명명 테이블로 복사되는 마이크로 프로세서.
  11. 제 7 항에 있어서,
    상기 리-오더 버퍼는 적어도 하나의 리-오더 버퍼 엔트리를 포함하는 리-오더 버퍼 재구성 윈도우를 포함하고;
    상기 체크-포인트 테이블의 상기 재명명 데이터의 상기 체크-포인트된 버전은, 상기 체크-포인트 테이블의 마지막 체크-포인트 엔트리가 상기 리-오더 버퍼 재구성 윈도우에 포함된 리-오더 버퍼 엔트리와 연관된 경우에, 상기 재명명 테이블로 복사되는 것이 허용되는 마이크로 프로세서.
  12. 제 7 항에 있어서,
    상기 플러시된 데이터가 상기 체크-포인트 테이블에 의해 재저장되지 않은 경우, 상기 리-오더 버퍼로부터 상기 재구성 재명명 데이터의 일부를 재저장함으로써, 상기 플러시된 재명명 데이터가 재저장되는 마이크로 프로세서.
  13. 장치에 있어서,
    복수의 재명명된 레지스터들과 연관된 재명명 데이터를 저장하도록 구성된 재명명 테이블;
    리-오더 버퍼; 및
    체크-포인트 테이블을 포함하고,
    상기 리-오더 버퍼는:
    각각이 리-오더 버퍼 데이터의 적어도 일 부분을 저장하도록 구성된 복수의 리-오더 버퍼 엔트리들; 및
    리오더 버퍼 체크포인트 윈도우를 정의하고, micro-동작들의 리타이어로서 새로운 리-오더 버퍼 엔트리를 가리키는 리-오더 버퍼 엔트리를 가리키는 리타이어 포인터를 포함하고,
    상기 체크-포인트 테이블은 체크-포인트 엔트리들을 포함하고, 상기 재명명 데이터의 체크-포인트된 버전을 저장하도록 구성되고,
    상기 체크-포인트 엔트리들 각각은 상기 리-오더 버퍼 엔트리들의 일부 중 대응하는 하나와 동적으로 연관되고,
    상기 체크-포인트 엔트리들 각각은 상기 리-오더 버퍼에서 연속 값 시퀀스로 상기 리-오더 버퍼 엔트리들 각각의 숫자와 동적으로 연관되고,
    상기 체크-포인트 테이블은 체크포인트 이벤트가 발생한 경우, 리타이어 포인터에 의해 지시되는 리-오더 버퍼 엔트리 숫자를 기반으로 동적으로 판별되고,
    상기 재명명 테이블에 저장된 재명명 데이터가 상기 재명명 테이블로부터 플러시된 경우, 상기 플러시된 재명명 데이터는:
    상기 체크-포인트 엔트리들 및 상기 리-오더 버퍼 엔트리들 사이의 동적 연관에 의해 허용되는 경우, 상기 체크-포인트 테이블로부터 상기 재명명 테이블로 복사된 상기 재명명 데이터의 상기 체크-포인트된 버전, 및
    상기 체크-포인트 엔트리들 및 상기 리-오더 버퍼 엔트리들 사이의 상기 동적 연관 관계에 의해 요구되는 경우, 상기 리-오더 버퍼로부터 재구성된 상기 재명명 데이터의 적어도 일부에 의해 상기 재명명 테이블로 재저장되는 장치.
  14. 제 13 항에 있어서,
    상기 리-오더 버퍼는 적어도 하나의 리-오더 버퍼 엔트리를 포함하고, 플러시 포인트와 연관된 리-오더 버퍼 엔트리에서 종단으로서 정의되는 리-오더 버퍼 재구성 윈도우를 포함하고,
    상기 체크-포인트 테이블의 마지막 체크-포인트 엔트리가 상기 리-오더 버퍼 재구성 윈도우 내에 포함된 리-오더 버퍼 테이블과 연관된 경우, 체크-포인트 테이블의 상기 재명명 데이터의 상기 체크-포인트된 버전이 상기 재명명 테이블로 복사되도록 허용되는 장치.
  15. 제 13 항에 있어서,
    상기 체크-포인트 테이블로부터 상기 재명명 테이블로 상기 재명명 데이터의 상기 체크-포인트된 버전을 복사하는 것은 하나의 클럭 사이클에서 수행되고,
    상기 리-오더 버퍼로부터 상기 재명명 테이블로 상기 재명명 데이터의 적어도 일부를 복사하는 것은 복수의 클럭 사이클들에서 수행되는 장치.
  16. 제 13 항에 있어서,
    상기 플러시된 재명명 데이터가 복구될 때 상기 리타이어 포인터에 의해 지칭된 현재 리-오더 버퍼 엔트리는, 체크포인트 이벤트가 발생할 때 상기 리타이어 포인터에 의해 지칭된 이전 리-오더 버퍼 엔트리와 동일하지 않은 장치.
  17. 제 13 항에 있어서,
    상기 체크-포인트 테이블로부터 상기 재명명 테이블로 상기 재명명 데이터를 복사하는 것은 상기 리오더 버퍼 체크포인트 윈도우의 시작이 리오더 버퍼 재구성 윈도우의 시작을 초과하는지와 무관하게, 상기 리오더 버퍼 체크포인트 윈도우의 종단이 상기 리오더 버퍼 재구성 윈도우의 종단을 초과하거나 같은 경우에 허용되는 장치.
  18. 제 13 항에 있어서,
    상기 체크-포인트 테이블은 상기 리-오더 버퍼에 의해 구성되는 리-오더 버퍼 엔트리들의 개수보다 더 적은 체크-포인트 엔트리들을 포함하는 장치.
  19. 제 18 항에 있어서,
    상기 체크-포인트 테이블은 상기 리-오더 버퍼에 의해 구성되는 리-오더 버퍼 엔트리들의 개수보다 1/2만큼의 체크-포인트 엔트리들을 포함하는 장치.
  20. 제 13 항에 있어서,
    상기 체크-포인트 테이블로부터 상기 재명명 테이블로 상기 재명명 데이터의 상기 체크-포인트된 버전을 복사하는 것은 고정된 개수의 하나 또는 그 이상의 클럭 사이클들 내에서 수행되고,
    상기 리-오더 버퍼로부터 상기 재명명 데이터의 적어도 일부를 재구성하는 것은 가변적인 개수의 클럭 사이클들 내에서 수행되는 장치.
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
  26. 삭제
  27. 삭제
KR1020130160343A 2013-03-14 2013-12-20 재명명 테이블 재구성을 위한 리오더-버퍼를 기초로 하는 동적 체크포인팅 KR102010317B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/831,488 2013-03-14
US13/831,488 US9448799B2 (en) 2013-03-14 2013-03-14 Reorder-buffer-based dynamic checkpointing for rename table rebuilding

Publications (2)

Publication Number Publication Date
KR20140113305A KR20140113305A (ko) 2014-09-24
KR102010317B1 true KR102010317B1 (ko) 2019-08-13

Family

ID=51419101

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130160343A KR102010317B1 (ko) 2013-03-14 2013-12-20 재명명 테이블 재구성을 위한 리오더-버퍼를 기초로 하는 동적 체크포인팅

Country Status (4)

Country Link
JP (1) JP6399772B2 (ko)
KR (1) KR102010317B1 (ko)
CN (1) CN104050027B (ko)
DE (1) DE102014103183A1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9448799B2 (en) * 2013-03-14 2016-09-20 Samsung Electronics Co., Ltd. Reorder-buffer-based dynamic checkpointing for rename table rebuilding

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5630149A (en) 1993-10-18 1997-05-13 Cyrix Corporation Pipelined processor with register renaming hardware to accommodate multiple size registers
US6629233B1 (en) 2000-02-17 2003-09-30 International Business Machines Corporation Secondary reorder buffer microprocessor
US7747841B2 (en) 2005-09-26 2010-06-29 Cornell Research Foundation, Inc. Method and apparatus for early load retirement in a processor system
US20120079488A1 (en) 2010-09-25 2012-03-29 Phillips James E Execute at commit state update instructions, apparatus, methods, and systems

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0815507B1 (en) * 1995-02-14 2013-06-12 Fujitsu Limited Structure and method for high-performance speculative execution processor providing special features
JP2000285082A (ja) * 1999-03-31 2000-10-13 Toshiba Corp 中央演算装置及びコンパイル方法
US6742112B1 (en) * 1999-12-29 2004-05-25 Intel Corporation Lookahead register value tracking
US20060149931A1 (en) * 2004-12-28 2006-07-06 Akkary Haitham Runahead execution in a central processing unit
US20070043934A1 (en) * 2005-08-22 2007-02-22 Intel Corporation Early misprediction recovery through periodic checkpoints
US7809926B2 (en) * 2006-11-03 2010-10-05 Cornell Research Foundation, Inc. Systems and methods for reconfiguring on-chip multiprocessors
KR101292439B1 (ko) * 2008-11-24 2013-08-05 인텔 코포레이션 순차적 프로그램을 다수의 스레드로 분해하고 이 스레드를 실행하며 순차적 실행을 재구성하는 장치, 방법 및 머신-판독가능 저장 매체

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5630149A (en) 1993-10-18 1997-05-13 Cyrix Corporation Pipelined processor with register renaming hardware to accommodate multiple size registers
US6629233B1 (en) 2000-02-17 2003-09-30 International Business Machines Corporation Secondary reorder buffer microprocessor
US7747841B2 (en) 2005-09-26 2010-06-29 Cornell Research Foundation, Inc. Method and apparatus for early load retirement in a processor system
US20120079488A1 (en) 2010-09-25 2012-03-29 Phillips James E Execute at commit state update instructions, apparatus, methods, and systems

Also Published As

Publication number Publication date
CN104050027A (zh) 2014-09-17
KR20140113305A (ko) 2014-09-24
JP2014179096A (ja) 2014-09-25
DE102014103183A1 (de) 2014-09-18
JP6399772B2 (ja) 2018-10-03
CN104050027B (zh) 2018-11-27
DE102014103183A8 (de) 2014-11-13

Similar Documents

Publication Publication Date Title
TWI470547B (zh) 非循序執行微處理器及其操作方法
US20160055004A1 (en) Method and apparatus for non-speculative fetch and execution of control-dependent blocks
JP5904993B2 (ja) マルチスレッド・コードをデバッグする方法、システム、及びコンピュータ・プログラム
TW201823970A (zh) 可靠度提升系統和方法
CN108139908B (zh) 移动前缀指令
KR102021957B1 (ko) 재명명 테이블 재구성을 위한 리오더-버퍼를 기초로 하는 정적 체크포인팅
TWI416407B (zh) 執行複數快速條件分支指令的方法以及相關之微處理器以及電腦程式產品
CN100377078C (zh) 修正管线作业微处理器中分支指令预测错误的装置
US8856496B2 (en) Microprocessor that fuses load-alu-store and JCC macroinstructions
US8954797B2 (en) Reconfigurable recovery modes in high availability processors
JP2011086289A (ja) レジスタ状態の保存および復元
US9354886B2 (en) Maintaining the integrity of an execution return address stack
KR20170097633A (ko) 융합된 단일 사이클 증가-비교-점프를 수행하기 위한 명령어 및 로직
CN101002169A (zh) 微处理器架构
KR20190038989A (ko) 나누기와 곱하기-빼기 연산들을 병합하기 위한 시스템 및 방법
US11663011B2 (en) System and method of VLIW instruction processing using reduced-width VLIW processor
US9594564B2 (en) Arithmetic processing device and control method of arithmetic processing device
KR102010317B1 (ko) 재명명 테이블 재구성을 위한 리오더-버퍼를 기초로 하는 동적 체크포인팅
Lim et al. LARECD: Low area overhead and reliable error correction DMR architecture
US20240264839A1 (en) Macro-Op Fusion for Pipelined Architectures
US20230028929A1 (en) Execution elision of intermediate instruction by processor
Yao et al. A minimal roll-back based recovery scheme for fault toleration in pipeline processors
US20160026401A1 (en) Updating of shadow registers in n:1 clock domain
JPH0764803A (ja) プロセッサ

Legal Events

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