KR20040082532A - 조건부 명령 실행 방법 및 그 방법을 이용하는 비순차적컴퓨터 시스템 - Google Patents

조건부 명령 실행 방법 및 그 방법을 이용하는 비순차적컴퓨터 시스템 Download PDF

Info

Publication number
KR20040082532A
KR20040082532A KR1020030017103A KR20030017103A KR20040082532A KR 20040082532 A KR20040082532 A KR 20040082532A KR 1020030017103 A KR1020030017103 A KR 1020030017103A KR 20030017103 A KR20030017103 A KR 20030017103A KR 20040082532 A KR20040082532 A KR 20040082532A
Authority
KR
South Korea
Prior art keywords
execution
instruction
instructions
register
conditional
Prior art date
Application number
KR1020030017103A
Other languages
English (en)
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 주식회사 하이닉스반도체
Priority to KR1020030017103A priority Critical patent/KR20040082532A/ko
Publication of KR20040082532A publication Critical patent/KR20040082532A/ko

Links

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/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30058Conditional branch instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30101Special purpose 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)
  • Advance Control (AREA)

Abstract

본 발명은 조건부 비순차적 명령을 실행하는 방법 및 비순차적 컴퓨터 시스템을 개시한다.
본 발명의 조건부 비순차적 명령을 실행하는 방법은 조건부 실행 명령어에 대해서는 해당 명령어를 해석(디코딩)하는 단계에서 그 명령어의 실행 가능성을 미리 예측하여 레지스터 리네이밍을 실시하고, 그 예측이 잘못된 경우 해당 작업들을 복구하는 과정들을 구비하며, 이러한 실행 예측을 통해 미리 리네이밍을 실시함으로써 조건부 실행을 특성으로 하는 명령어 세트 구조를 채택하는 비순차적 컴퓨터 시스템을 구현할 수 있게 된다.

Description

조건부 명령 실행 방법 및 그 방법을 이용하는 비순차적 컴퓨터 시스템{Conditional instructions execution method and computer system using that}
본 발명은 조건부 비순차적 명령을 실행하는 방법 및 그 방법을 이용하는 컴퓨터 시스템에 관한 것으로서, 보다 상세하게는 조건부 실행 명령어들을 다수 포함하는 명령어 세트 구조를 채택한 비순차적 컴퓨터 시스템에서 조건부 실행 명령어의 실행 가능성을 명령어 해석(디코딩) 단계에서 미리 예측한 후 그 예측 결과에 따라 리네이밍을 수행하고 그 예측이 정확하지 않은 경우 실행된 명령들을 복구하는 방법 및 그 시스템에 관한 것이다.
컴퓨터 시스템은 프로그램의 명령어들을 순차적으로 수행하거나 또는 순차적으로 수행하는 것처럼 보여야 한다. 그리고, 이러한 전제하에서 프로그램코딩(coding)이 이루어진다.
명령어들을 순차적으로 수행하는 컴퓨터 시스템을 순차적 컴퓨터 시스템이라고 하며, 비순차적으로 수행하면서 순차적으로 수행하는 효과를 보이는 것을 비순차적 컴퓨터 시스템이라고 한다.
이것을 조금 더 분류하면, 명령어의 수행 시작 즉 명령어 이슈와 명령어의 수행 완료를 순차적으로 하는 시스템, 명렁어 이슈는 순차적으로 하면서 수행 완료를 비순차적으로 하는 시스템, 명령어 이슈와 수행 완료를 비순차적으로 하는 비순차적 시스템으로 나뉘어진다.
비순차적 컴퓨터 시스템에서는 논리적 레지스터를 물리적 레지스터에 동적으로 대응시키는 레지스터 리네이밍이 이루어진다.
그런데, ARM 명령어 세트 구조와 같이 조건부로 실행되는 명령어의 종류와 수가 많은 경우에는 레지스터 리네이밍이 단순하게 이루어지지 않는다.
예컨대, 레지스터 리네이밍 과정에서는 명령어의 논리적 소스 레지스터에 대응되는 물리적 레지스터를 할당해야 한다. 그런데, 이전의 조건부 실행 명령어의 논리적 목적 레지스터의 주소가 리네이밍 할 논리적 소스 레지스터의 주소와 같고 아직 실행이 완료되지 않았다면, 논리적 레지스터를 어떤 물리적 레지스터에 대응시켜야 할 지가 불분명하다. 이때, 논리적 레지스터를 조건부 실행 명령어의 논리적 목적 레지스터에 할당된 물리적 레지스터에 대응시킬 수도 있으나, 만약에 조건부 실행 명령어의 조건이 만족되지 않아서 실행 명령어가 실제로는 실행되지 않는다면, 조건부 실행 명령어 이전에 해당 논리적 레지스터에 결과를 쓰는 명령어에할당된 물리적 레지스터를 레지스터 리네이밍 단계에 있는 논리적 소스 레지스터에 대응시켜야 한다.
즉, 조건부 실행 명령어의 실행 여부에 따라서 데이터 의존성을 지닌 후속 명령어에 대한 레지스터 리네이밍이 달라지는데, 후속 명령어의 레지스터 리네이밍 단계에서 앞선 조건부 명령어의 실행 여부가 확정되지 않았기 때문에, 종래의 레지스터 리네이밍에 의해서는 조건부 실행 명령어들을 다수 포함하고 있는 명령어 세트 구조를 채택하여 비순차적 컴퓨터 시스템을 구현할 수 없다.
따라서, 상술한 문제를 해결하기 위한 본 발명의 목적은 조건부 실행 명령어의 실행 가능성을 미리 예측하여 레지스터 리네이밍을 수행함으로써 조건부 실행 명령어들을 다수 포함하는 명령어 세트 구조를 채택한 비순차적 컴퓨터 시스템에서의 레지스터 리네이밍이 원활하게 수행되도록 하는데 있다.
도 1은 본 발명에 따른 비순차적 컴퓨터 시스템의 구성을 나타내는 구성도.
도 2는 본 발명에 따른 조건부 비순차적 명령들의 실행 방법을 나타내는 순서도.
위와 같은 목적을 달성하기 위한 본 발명의 조건부 비순차적 컴퓨터 시스템은 명령어를 페치하는 페치 유닛; 페치된 명령어를 디코딩하는 명령어 해석기; 디코딩 결과에 따라 해당 명령어가 조건부 실행 명령어인 경우 해당 명령어의 실행 가능성을 예측하는 실행 예측기; 명령어의 실행 예측 결과에 따라 논리적 레지스터를 물리적 레지스터로 리네이밍하는 레지스터 리네이밍 유닛; 리네이밍이 완료된 명령어들을 순차적으로 저장하고 예측이 정확한 것이었는지 여부를 검사하여 정확하지 않은 경우 잘못된 명령어 실행을 복구하는 제 1 버퍼; 리네이밍이 완료된 명령어들을 제공받아 저장하고 저장된 명령어들 중 수행이 준비된 명령어들을 기능 유닛으로 이슈하는 제 2 버퍼 ; 및 이슈된 명령어들을 실행하고 그 결과를 할당된 물리적 레지스터에 기록하는 기능 유닛을 구비한다.
본 발명의 조건부 비순차적 명령어 실행 방법은 페치된 명령어가 조건부 실행 명령어인지 여부를 확인하는 제 1 단계; 명령어가 조건부 실행 명령어인 경우 해당 명령어의 실행 가능성을 예측하는 제 2 단계; 실행 가능한 것으로 예측된 조건부 실행 명령어에 대해 리네이밍을 실시하는 제 3 단계; 예측 결과와 해당 명령어의 실제 실행 상태를 비교하여 예측의 정확성을 검사하는 제 4 단계; 검사 결과, 예측이 잘못된 경우 실행된 조건부 실행 명령어들의 순차적 상태를 복구하는 제 5 단계를 포함한다.
이하, 첨부된 도면들을 참조하여 본 발명의 바람직한 실시예를 상세하게 설명한다.
도 1은 본 발명에 따른 조건부 비순차적 컴퓨터 시스템의 구성을 나타내는 구성도이다.
본 발명의 조건부 비순차적 컴퓨터 시스템은 페치 유닛(10), 명령어 해석기(20), 실행 예측기(30), 레지스터 리네이밍 유닛(40), 리오더 버퍼(50), 명령어 이슈 버퍼(60), 및 기능 유닛(70)을 구비한다.
페치 유닛(10)은 메모리(미도시)로부터 매 사이클마다 인가되는 명령어를 페치(fetch)한다.
명령어 해석기(20)는 페치된 명령어를 디코딩하여 해석한다. 즉, 명령어 해석기(20)는 명령어를 해석하여 명령어의 수행에 필요한 오퍼랜드 코드(Operand Code), 논리적 목적 레지스터 주소, 논리적 소스 레지스터 주소를 알아내고, 해당 명령어가 조건부 실행 명령어인지 아니면 무조건부실행 명령어 인지를 알려주는 조건부 비트 등을 분석한다.
실행 예측기(30)는 명령어 주소 및 조건부 비트를 이용하여 명령어 해석기(20)에서 해석된 명령이 조건부 실행 명령어인 경우 해당 명령어의 실행 가능성을 예측하고, 무조건부 실행 명령어인 경우에는 항상 실행 가능한 것으로 예측한다. 이러한 실행 예측기(30)는 분기 예측기에서 수행되는 예측방법을 사용하여 구현될 수 있다. 즉, 분기 예측기에서 사용되는 것과 같은 로컬(local) 분기 히스토리(history)에 기반을 둔 예측, 글로벌(global) 분기 히스토리에 기반을 둔 예측, 또는 로컬 히스토리와 글로벌 히스토리의 상관관계(correlation)에 기반을 둔 예측을 수행하거나 이 외에 다른 예측방법들을 똑같이 적용하여 조건부 실행 명령어들에 대한 실행 예측을 수행할 수 있다.
레지스터 리네이밍 유닛(40)은 실행 예측기(30)의 예측 결과에 따라 레지스터 리네이밍을 실행한다. 즉, 레지스터 리네이밍 유닛(40)은 실행 예측기(30)에서 실행될 것으로 예측된 실행 명령에 대해서는 논리적 목적 레지스터에 물리적 레지스터를 할당하여 최신의 리네이밍 상태를 변화시키나, 실행되지 않을 것으로 예측된 경우에는 물리적 레지스터를 할당하지 않는다. 이로써, 실행될 것으로 예측되지 않은 경우에는 최신의 리네이밍 상태가 변화하지 않게 된다. 이때, 실행되지 않을 것으로 예측된 명령어들도 레지스터 리네이밍 단계를 거치지만 이 과정에서논리적 소스 레지스터에 대한 리네이밍만 이루어진다. 리네이밍 과정을 마친 명령어들은 리오더 버퍼(50)와 명령어 이슈 버퍼(60)에 저장된다.
리오더 버퍼(50)는 리네이밍 과정을 마친 명령어들, 실행 예측 비트 P, 해당 엔트리의 명령어에 대한 실행 여부 비트 E, 및 실행 완료 비트 W를 저장한다. 그리고, 리오더 버퍼(50)는 실행 예측 비트 P와 실행 여부 비트 E를 검사하여 실행 예측이 제대로 되었는지 여부를 판단하고 잘못 예측된 실행에 대한 복구 작업을 수행한다. 이러한 리오더 버퍼(50)는 선입선출(FIFO) 버퍼로서 작동할 수 있다.
명령어 이슈 버퍼(60)는 리네이밍 과정을 마친 명령어들을 제공받아 저장하고 이 명령어들 중 수행이 준비된 명령어들을 기능 유닛(70)으로 이슈한다.
기능 유닛(70)은 이슈된 명령어들에 따라 레지스터 읽기를 수행하여 오퍼랜드(Operand)를 얻은 후 해당 명령어를 실행한다. 기능 유닛(70)은 명령어의 실행정도에 따라 리오더 버퍼(50)로 실행 여부를 나타내는 실행 여부 비트 E와 실행 완료 여부를 나타내는 실행 완료 비트 W를 셋하여 실행 여부 및 실행 완료 여부를 리오더 버퍼(50)에 알려준다.
도 2는 본 발명에 따른 조건부 비순차적 명령어 실행 방법을 나타내는 순서도이다.
본 발명의 실시예를 설명하기 위해, 본 기술을 적용할 컴퓨터 시스템 구조에 대한 기본적인 규정이 필요하기 때문에 이를 위해 다음과 같은 규정을 둔다. 물론, 이러한 규정은 본 발명의 일 실시예로서 설명되는 것으로, 본 발명이 이러한 규정을 갖는 시스템에 한정되는 것은 아니다.
본 발명의 실시예에서의 컴퓨터 시스템은 파이프라인 구조를 갖는 경우로 가정한다.
본 발명의 파이프라인 구조는 F(명령어 페치), D(명령어 해석), R(레지스터 리네이밍), I(명령어 이슈), RR(소스 레지스터 읽기), E(명령어 실행), W(목적 레지스터 쓰기), C(커미트)의 총 8 단계로 이루어져 있다고 가정한다.
F 단계는 미도시된 프로그램 메모리로부터 페치 유닛(10)으로 명령어가 페치되는 단계이며, D 단계는 실행 예측기(30)에서 페치된 명령어를 해석하여 명령어가 수행할 동작, 소스 레지스터 주소, 목적 레지스터 주소, 실행할 기능 유닛의 종류 등을 분석하는 단계이다. 그리고, D 단계에서 조건부 실행 명령어에 대해서는 실행 예측이 이루어진다. R 단계는 레지스터 리네이밍 유닛(40)에서 모든 명령어의 논리적 소스 레지스터에 대한 리네이밍이 이루어지며, 특히 실행될 것으로 예측된 명령어들에 대해서는 논리적 목적 레지스터에 물리적 레지스터를 할당하는 단계이며, I 단계는 명령어 이슈 버퍼(60)에서 실행 준비된 명령어 등을 기능 유닛(70)들로 이슈하는 단계이다. RR 단계는 이슈된 명령어들이 레지스터 읽기를 수행하여 오퍼랜드를 얻는 단계이고, E 단계는 기능 유닛(70)에서 오퍼랜드를 이용하여 명령어를 실행하는 단계이다. W 단계는 실행된 명령어들이 실행 결과를 기록하는 단계이며, C 단계는 비순차적 시스템에서 순차적 상태를 유지하기 위한 단계로 리오더 버퍼(50)의 최하위 엔트리를 사용해서 해당 명령어까지의 순차적 상태를 변경 및 유지하면서 해당 엔트리를 비우는 단계이다.
도 1 및 도 2를 이용하여 본 발명에 따른 명령어 실행 과정을 전체적으로 설명하면 다음과 같다.
페치 유닛(10)은 프로그램 메모리(미도시)로부터 매 사이클마다 명령어를 제공받아 페치한다(단계 201).
페치 유닛(10)에 페치된 명령어는 명령어 해석기(20)에 의해서 디코딩된다. 즉, 명령어 해석기(20)는 명령어의 수행에 필요한 오피 코드, 논리적 목적 레지스터 주소, 논리적 소스 레지스터 주소, 조건부 실행 명령어인지 아니면 무조건부 실행 명령어인지를 알려주는 조건부 비트 등을 분석한다(단계 202).
명령어에 대한 해석이 완료되면, 명령어 주소와 조건부 비트는 실행 예측기(30)로 전송되고, 논리적 소스 및 목적 레지스터 주소들은 레지스터 리네이밍 유닛(40)으로 전송된다.
실행 예측기(30)는 조건부 비트를 이용하여 해당 명령어가 조건부 명령어 인지 무조건부 명령어인지를 확인한 후(단계 203), 명령어에 수반되는 명령어 주소 및 조건부 비트를 이용하여 조건부 실행 명령에 대하여 그 명령어가 실제 실행이 가능한지를 예측한다(단계 204).
실행 예측기(30)의 실행 예측 방법으로는 분기 예측기에서의 분기 예측 방법과 같이 구현될 수 있다. 즉, 실행 예측기(30)는 로컬 분기 히스토리, 글로벌 분기 히스토리, 로컬 히스토리와 글로벌 히스토리의 상호관계에 기반을 둔 예측 등의 방법을 이용하여 실행 가능성을 예측하게 된다. 물론, 기존에 사용되고 있는 여러 예측방법을 사용할 수 있음은 자명하다. 본 발명은 실행 가능성을 예측하는 방법 그 자체에 특징을 두고 있지 않으며, 상술한 바와 같이 기존에 사용되는 어떠한 분기 예측 방법과 같은 방법으로 실행 가능성을 예측하므로 그러한 예측 방법에 대한 설명은 생략한다. 명령어 해석기(20)에 의한 디코딩 동작과 실행 예측기(30)에 의한 예측 동작은 파이프라인 구조의 D 단계에서 이루어진다.
만일, 단계 203에서 명령어가 무조건부 실행 명령어인 경우 해당 명령어에 대해서는 실행여부를 예측하지 않고 바로 해당 명령어를 실행하기 위해 리네이밍을 수행한다.
조건부 실행 명령에 대한 예측이 완료되면 실행 예측기(30)는 실행 예측 비트 P를 레지스터 리네이밍 유닛(40)로 인가한다.
레지스터 리네이밍 유닛(40)은 실행 예측 결과(단계 205)에 따라 명령어들에 대한 리네이밍을 수행한다(단계 206). 이때, 레지스터 리네이밍 유닛(40)은 모든 명령어들에 대해 리네이밍을 실시하는데, 그 실행 예측 결과에 따라 그 수행 정도에 다소 차이가 발생하게 된다. 즉, 실행될 것으로 예측된 명령어들에 대해서는 논리적 소스 레지스터를 물리적 소스 레지스터로 리네이밍 할 뿐만 아니라, 명령어 해석기(20)로부터 수신한 논리적 목적 레지스터에 새로운 물리적 목적 레지스터를 할당한다(206a). 그러나, 실행될 것으로 예측되지 않은 명령어들에 대해서는 논리적 소스 레지스터만을 물리적 소스 레지스터로 리네이밍 하게 된다(206b).
이때, 실행될 것으로 예측된 것은 논리적 목적 레지스터에 대해서 물리적 레지스터를 할당받아 최신의 리네이밍 상태가 변화되지만, 실행되지 않을 것으로 예측된 것에 대해서는 물리적 목적 레지스터를 할당하지 않으므로 최신의 리네이밍 상태도 변화하지 않게된다.
레지스터 리네이밍 과정을 마친 명령어들은 리오더 버퍼(50)와 명령어 이슈 버퍼(60)에 저장된다. 그리고, 할당받은 물리적 레지스터 주소들이 리오더 버퍼(50)로 인가되고, 물리적 레지스터 주소들과 리오더 버퍼 포인터는 명령어 이슈 버퍼(60)로 인가된다. 또한, 이 과정에서 실행 예측 비트 P도 리오더 버퍼(50)와 명령어 이슈 버퍼(60)에 저장된다.
물리적 목적 레지스터를 할당받지 못한 명령어들도 리오더 버퍼(50)와 명령어 이슈 버퍼(60)에 저장되게 된다.
명령어 이슈 버퍼(60)는 저장된 명령어 중에서 수행이 준비된 명령어들을 기능 유닛(70)으로 이슈(issue)하여 해당 명령어가 실행되도록 한다(단계 207). 기능 유닛(70)은 RR 단계에서 레지스터로에 대한 읽기를 수행하여 오퍼랜드를 얻은 후 E 단계에서 명령어를 실행하고 그 실행 여부를 리오더 버퍼(50)에게 알려준다(단계 208).
이때, 조건부 실행 명령어의 실제 실행 여부를 결정하는 것은 기능 유닛(70)에서의 명령어 실행 과정에서 이루어진다. 즉, 조건부 실행 명령어의 조건 코드와 그 당시의 조건 플래그들을 비교하여 실제 실행 여부를 결정하는 것이다. 그리고, 실행 여부에 대한 정보는 리오더 버퍼(50)로 전달되어 리오더 버퍼(50)의 해당 엔트리의 실행 여부 비트 E를 결정하게 된다. 이때, 주의할 점은 조건부 실행 명령어들에 대해서 기능 유닛(70)이 해당 명령을 수행하고 그 결과를 물리적 레지스터에 기록하는 것은 실제 실행 여부가 아닌 실행 예측에 영향을 받게된다. 이는 실행 예측에 따라 물리적 목적 레지스터의 할당 여부가 결정되기 때문이며, 잘못된예측에 대한 실행을 복구하는 작업은 리오더 버퍼(50)에서 C 단계에서 이루어지므로, 기능 유닛(70)은 잘못 예측된 것을 그대로 수행해도 상관이 없기 때문이다.
기능 유닛(70)은 명령어 실행을 완료하면, 리오더 버퍼(50)의 해당 엔트리에 대한 실행 완료 비트 W를 셋하여 해당 엔트리의 명령어 수행이 완료되었음을 리오더 버퍼(50)에 알려준다(단계 209).
리오더 버퍼(50)는 실행 완료 비트 W가 셋 되어 있으면, 해당 엔트리를 비우면서 해당 명령어에 의한 상태 변화를 순차적 상태에 반영한다. 이러한 과정을 커미트라고 하는데 이러한 과정은 리오더 버퍼(50) 상의 순서, 즉 프로그램 상의 명령어 순서대로 이루어지기 때문에 이러한 과정을 통해 순차적 상태를 변경 및 유지할 수 있는 것이다.
리오더 버퍼(50)는 최하위 엔트리를 커미트하면서 해당 엔트리의 실행 예측 비트 P와 실행 여부 비트 E를 비교한다(단계 210).
비교 결과, 두 비트가 동일하면 실행 예측이 올바르게 이루어진 것이므로 계속해서 정상적으로 명령어들을 수행해 나간다(단계 211).
그러나, 두 비트가 서로 다르면 해당 명령어에 대한 실행 예측이 잘못된 것이므로, 리오더 버퍼(50)의 순차적 상태를 복구하게 된다(단계 212). 어느 한 조건부 실행 명령어가 잘못 예측되어 수행되면, 이 명령어 이후의 다른 명령어들 중 잘못 예측된 명령어에 대한 데이터 의존성을 가지는 것들은 모두 잘못 수행된 것이 된다. 따라서, 잘못 예측된 조건부 실행 명령어 및 그 이후 명령어들에 의한 상태 변화, 즉 그 당시 리오더 버퍼(50)에 존재하였던 엔트리들에 의한 상태 변화는 시스템 상태를 부적절하게 변화시킬 수 있는 것이기 때문에 모두 취소해야 한다. 이를 위해, 리오더 버퍼(50)는 잘못 수행된 모든 엔트리들을 제거(flush)하고, 시스템 마다 다른 순차적 상태 복구 작업을 수행하게 된다.
순차적 상태를 복구한 후에는 잘못 예측된 조건부 실행 명령어부터 다시 페치하여 명령어를 수행한다(단계 213).
이러한 과정은 별도의 시스템 종료 명령이 있을 때까지는 계속해서 반복 진행하게 된다(단계 214).
순차적 상태의 복구 및 재시작은 수십 사이클의 손실을 요구하는 작업이기 때문에 실행 예측의 정확도가 낮을 경우에는 그 손실이 비순차적 명령어 이슈의 장점보다 더 클 수 있으나, 그 정확도가 90% 이상이면 비순차적 이슈에 의한 성능 향상이 그 손실을 보전하고 전체적으로 성능을 향상시킬 수 있다. 현재 분기 예측의 경우 90% 이상의 정확도를 쉽게 얻을 수 있다는 점을 고려하면 실행 예측도 90% 이상의 정확도를 쉽게 구현할 수 있다.
상술한 바와 같이, 본 발명의 실행 예측 방법은 조건부 실행을 특성으로 하는 명령어 세트 구조를 채택하는 비순차적 컴퓨터 시스템의 구현이 가능하도록 해준다.

Claims (10)

  1. 명령어를 페치하는 페치 유닛;
    상기 페치된 명령어를 디코딩하는 명령어 해석기;
    상기 디코딩 결과에 따라 상기 명령어가 조건부 실행 명령어인 경우 해당 명령어의 실행 가능성을 예측하는 실행 예측기;
    상기 명령어가 실행될 것으로 예측되는 경우 논리적 레지스터를 물리적 레지스터로 리네이밍하는 레지스터 리네이밍 유닛;
    상기 리네이밍이 완료된 명령어들을 순차적으로 저장하고, 상기 예측이 정확한 것이었는지 여부를 검사하여 정확하지 않은 경우 상기 잘못된 명령어 실행을 복구하는 제 1 버퍼;
    상기 리네이밍이 완료된 명령어들을 제공받아 저장하고 저장된 명령어들 중 수행이 준비된 명령어들을 기능 유닛으로 이슈하는 제 2 버퍼; 및
    상기 이슈된 명령어들을 실행하고 그 결과를 할당된 물리적 레지스터에 기록하는 기능 유닛을 구비하는 비순차적 컴퓨터 시스템.
  2. 제 1 항에 있어서, 상기 실행 예측기는
    분기 예측에서와 같은 방법으로 실행 가능성을 예측하는 것을 특징으로 하는 비순차적 컴퓨터 시스템.
  3. 제 1 항 또는 제 2 항에 있어서,
    상기 실행 예측기는 예측 결과를 알리는 실행 예측 비트를 생성하고, 상기 기능 유닛은 예측된 실행의 실제 실행 여부를 알리는 실행 여부 비트와 실행의 완료 여부를 알리는 실행 완료 비트를 생성하여 각각 상기 리오더 버퍼로 출력하는 것을 특징으로 하는 비순차적 컴퓨터 시스템.
  4. 제 3 항에 있어서, 상기 제 1 버퍼는
    상기 실행 예측 비트와 상기 실행 여부 비트를 비교하여 예측이 정확한 것이었는지 여부를 검사하는 것을 특징으로 하는 비순차적 컴퓨터 시스템.
  5. 제 4 항에 있어서, 상기 제 1 버퍼는
    잘못 예측된 명령어 및 잘못 예측된 명령어의 실행 결과에 의존하는 다른 명령어들과 그 실행결과를 삭제하는 것을 특징으로 하는 비순차적 컴퓨터 시스템.
  6. 제 1 항에 있어서, 상기 레지스터 리네이밍 유닛은
    실행될 것으로 예측된 조건부 실행 명령어에 대해서는 논리적 목적 레지스터에 물리적 목적 레지스터를 할당하고, 논리적 소스 레지스터에는 실행 예측 결과에 상관없이 기 할당받은 물리적 레지스터로의 리네이밍을 수행하는 것을 특징으로 하는 비순차적 컴퓨터 시스템.
  7. 페치된 명령어가 조건부 실행 명령어인지 여부를 확인하는 제 1 단계;
    상기 명령어가 조건부 실행 명령어인 경우 해당 명령어의 실행 가능성을 예측하는 제 2 단계;
    실행 예측 결과에 따라 명령어에 대해 리네이밍을 실시하는 제 3 단계;
    상기 예측 결과와 해당 조건부 실행 명령어의 실제 실행 상태를 비교하여 예측의 정확성을 검사하는 제 4 단계;
    상기 검사 결과, 예측이 잘못된 경우 실행된 상기 조건부 명령어들의 순차적 상태를 복구하는 제 5 단계를 포함하는 것을 특징으로 하는 조건부 비순차적 명령어 실행 방법.
  8. 제 7 항에 있어서,
    상기 제 2 단계에서 상기 명령어가 무조건부 실행 명령어인 경우에는 무조건 실행 가능한 것으로 예측하는 것을 특징으로 하는 조건부 비순차적 명령어 실행 방법.
  9. 제 7 항에 있어서, 상기 제 3 단계는
    실행 가능한 것으로 예측된 명령어에 대해서만 논리적 목적 레지스터에 물리적 목적 레지스터를 할당하고, 실행 예측과 상관없이 논리적 소스 레지스터는 기 할당받은 물리적 레지스터로 리네이밍되는 것을 특징으로 하는 조건부 비순차적 명령어 실행 방법.
  10. 제 7 항에 있어서, 상기 제 5 단계는
    잘못 예측된 명령어 및 잘못 예측된 명령어의 실행 결과에 의존하는 다른 명령어들과 그 실행결과들을 삭제하고, 잘못 예측된 명령어부터 다시 페치하는 것을 특징으로 하는 조건부 비순차적 명령어 실행 방법.
KR1020030017103A 2003-03-19 2003-03-19 조건부 명령 실행 방법 및 그 방법을 이용하는 비순차적컴퓨터 시스템 KR20040082532A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020030017103A KR20040082532A (ko) 2003-03-19 2003-03-19 조건부 명령 실행 방법 및 그 방법을 이용하는 비순차적컴퓨터 시스템

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020030017103A KR20040082532A (ko) 2003-03-19 2003-03-19 조건부 명령 실행 방법 및 그 방법을 이용하는 비순차적컴퓨터 시스템

Publications (1)

Publication Number Publication Date
KR20040082532A true KR20040082532A (ko) 2004-09-30

Family

ID=37366300

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020030017103A KR20040082532A (ko) 2003-03-19 2003-03-19 조건부 명령 실행 방법 및 그 방법을 이용하는 비순차적컴퓨터 시스템

Country Status (1)

Country Link
KR (1) KR20040082532A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100780306B1 (ko) * 2006-02-27 2007-11-29 후지쯔 가부시끼가이샤 리오더링 장치

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100780306B1 (ko) * 2006-02-27 2007-11-29 후지쯔 가부시끼가이샤 리오더링 장치
US7509482B2 (en) 2006-02-27 2009-03-24 Fujitsu Limited Orderly processing ready entries from non-sequentially stored entries using arrival order matrix reordered upon removal of processed entries

Similar Documents

Publication Publication Date Title
US6079014A (en) Processor that redirects an instruction fetch pipeline immediately upon detection of a mispredicted branch while committing prior instructions to an architectural state
US8069336B2 (en) Transitioning from instruction cache to trace cache on label boundaries
KR102659813B1 (ko) 레지스터 리네이밍을 사용한 무브 명령어 처리
US5687338A (en) Method and apparatus for maintaining a macro instruction for refetching in a pipelined processor
US7269715B2 (en) Instruction grouping history on fetch-side dispatch group formation
US6247106B1 (en) Processor configured to map logical register numbers to physical register numbers using virtual register numbers
US5463745A (en) Methods and apparatus for determining the next instruction pointer in an out-of-order execution computer system
JP3093629B2 (ja) 命令シーケンスを実行するための方法および装置
US5627985A (en) Speculative and committed resource files in an out-of-order processor
US6119223A (en) Map unit having rapid misprediction recovery
US5949995A (en) Programmable branch prediction system and method for inserting prediction operation which is independent of execution of program code
JP3919802B2 (ja) プロセッサ、およびプロセッサにおいて命令演算をスケジューリングするための方法
US7155599B2 (en) Method and apparatus for a register renaming structure
US5987600A (en) Exception handling in a processor that performs speculative out-of-order instruction execution
JPH0644071A (ja) 一サイクルレジスタマッピング
US10007521B1 (en) Banked physical register data flow architecture in out-of-order processors
US5740393A (en) Instruction pointer limits in processor that performs speculative out-of-order instruction execution
US9652246B1 (en) Banked physical register data flow architecture in out-of-order processors
US5872949A (en) Apparatus and method for managing data flow dependencies arising from out-of-order execution, by an execution unit, of an instruction series input from an instruction source
US6393546B1 (en) Physical rename register for efficiently storing floating point, integer, condition code, and multimedia values
US6230262B1 (en) Processor configured to selectively free physical registers upon retirement of instructions
US7434004B1 (en) Prefetch prediction
US11061677B1 (en) Recovering register mapping state of a flushed instruction employing a snapshot of another register mapping state and traversing reorder buffer (ROB) entries in a processor
US6959377B2 (en) Method and system for managing registers
US10235169B2 (en) Implementing a received add program counter immediate shift (ADDPCIS) instruction using a micro-coded or cracked sequence

Legal Events

Date Code Title Description
N231 Notification of change of applicant
WITB Written withdrawal of application