KR100305935B1 - 데이타처리시스템및데이타처리시스템의데이타포착방법 - Google Patents

데이타처리시스템및데이타처리시스템의데이타포착방법 Download PDF

Info

Publication number
KR100305935B1
KR100305935B1 KR1019980022438A KR19980022438A KR100305935B1 KR 100305935 B1 KR100305935 B1 KR 100305935B1 KR 1019980022438 A KR1019980022438 A KR 1019980022438A KR 19980022438 A KR19980022438 A KR 19980022438A KR 100305935 B1 KR100305935 B1 KR 100305935B1
Authority
KR
South Korea
Prior art keywords
result
identifier
control signal
history buffer
instruction
Prior art date
Application number
KR1019980022438A
Other languages
English (en)
Other versions
KR19990013425A (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 KR19990013425A publication Critical patent/KR19990013425A/ko
Application granted granted Critical
Publication of KR100305935B1 publication Critical patent/KR100305935B1/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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • 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/3824Operand accessing
    • 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/3824Operand accessing
    • G06F9/383Operand prefetching
    • G06F9/3832Value prediction for operands; operand history buffers
    • 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/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory

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

본 발명의 데이타 처리 시스템은 히스토리 버퍼 내에 저장된 결과 데이타가 올바른 연대 순서를 가지고, 적절한 포인트 때까지 중첩 기록되지 않도록 하는 로직을 포함한다. 또한, 이러한 로직은 히스토리 버퍼가 예기치 않은 지연으로 생성된 결과 데이타를 포착할 수 있도록 한다. 히스토리 버퍼 엔트리는 오래된 결과 데이타를 저장함으로써 구조화 레지스터에 대한 "백업"으로서 작용하고, 디스패치된 인스트럭션에 할당된 고유의 타겟 식별자에 의존하여 결과 데이타가 올바른 연대 순서로 유지되도록 한다. 또한, 구조화 레지스터의 타겟 식별자 필드는 구조화 레지스터를 변경하는 가장 젊은 인스트럭션에 할당된 최근의 타겟 식별자를 보유한다. 또한, 레지스터의 이전의 결과 데이타는 할당된 히스토리 버퍼 엔트리 내에 백업된다. 결과 데이타가 아직 이용할 수 없으면, 레지스터 내의 타겟 식별자는 히스토리 버퍼 엔트리의 타겟 식별자 필드에 저장된다. 결과 데이타 값이 이용가능한 것으로 예상되기 이전의 하나의 타이밍 사이클 동안, 데이타를 생성하는 인스트럭션에 할당된 타겟 식별자는 결과 버스 상에 제공된다. 후속 타이밍 사이클에서 결과 데이타가 지연되면, 히스토리 버퍼 엔트리 또는 데이타가 저장될 준비가 되어있지 않은 레지스터에게 통지하기 위해, 재실행 신호가 결과 버스 상으로 단정된다. 또한, 재실행 신호는 결과 데이타가 사용가능할 때까지 단정된다. 동일한 사이클 동안, 재실행 신호가 부정되고, 결과 데이타는 결과 버스 상으로 제공된다. 단정된 재실행 신호를 제공하는 기능 유닛은 제 1 타겟 식별자를 제공한 후에, 재실행 신호가 부정되기 전에 제 2 타겟 식별자를 제공할 수 있다.

Description

데이타 처리 시스템 및 데이타 처리 시스템의 데이타 포착 방법{DATA PROCESSING SYSTEM AND METHOD FOR CAPTURING HISTORY BUFFER DATA}
본 발명은 데이타 처리 시스템에 관한 것으로, 특히, 파이프라인형 데이타 처리 시스템의 감시 및 포착 메카니즘(monitoring and capturing mechanisms)에 관한 것이다.
현재 데이타 처리 시스템에서 사용되고 있는 고성능의 프로세서는 "수퍼스칼라(superscalar)"로 동작할 수 있고, "파이프라인형"의 구성 소자를 구비할 수 있다. 수퍼스칼라 프로세서는 병렬로 동작하는 다수의 구성 소자를 구비하여 하나의 처리 사이클 동안 다수의 인스트럭션을 처리한다. 파이프라이닝(pipelining)은 인스트럭션들을 여러 스테이지로 처리하여, 파이프라인형 스테이지가 다수의 인스트럭션을 동시에 처리할 수 있도록 하는 방안을 포함한다. 전형적으로, "인스트럭션 인출(instruction fetch)" 스테이지로 지칭되는 첫 번째 스테이지에서, 인스트럭션은 메모리로부터 인출된다. 이어서, "디스패치(dispatch)" 스테이지에서, 인스트럭션은 상이한 제어 비트로 디코딩되며, 이러한 제어 비트는 인스트럭션에 과, 동작을 위한 소스 오퍼랜드(source operands)와, 동작 결과에 대한 목적지 레지스터(destination registers)에 의해 지정되는 기능 유닛(functional unit)의유형을 나타낸다. 디코딩된 인스트럭션은 인스트럭션이 데이타를 기다리는 공급 큐(issue queue) 및, 가용 실행 유닛으로 디스패치된다. 이어서, "공급" 스테이지에서 공급 큐 내의 인스트럭션은 "실행 스테이지"를 구비하는 유닛에 제공된다. 실행 스테이지는 인스트럭션에 의해 지정되는 동작을 처리한다. 인스트럭션에 의해 지정된 동작을 실행하는 방안에서는 하나 이상의 오퍼랜드를 채택하고, 하나 이상의 결과를 생성하는 방안을 포함한다.
"완료(completion)" 스테이지는 인스트럭션의 동시적 수행으로부터 야기되는 프로그램 순서의 문제들(program order issues)을 다루며, 다수의 동시에 실행된 인스트럭션들은 결과를 단일 레지스터 내에 저장할 수 있다. 완료 스테이지에서는 인터럽트된 인스트럭션이 동일한 목적지 레지스터 내에 결과를 저장한 후에 인스트럭션들이 디스패치되는 경우에 야기되는 문제들을 또한 처리한다. 완료 스테이지에서, 인스트럭션은 데이타 값을 저장하기 전에 인터럽트의 가능성이 더 이상 존재하지 않는 시점을 기다리며, 이와 같이 함으로써 결과를 저장할 때 프로그램 순서가 위배되지 않게 된다. 이때, 인스트럭션은 "완료된(complete)" 것으로 간주된다. 결과가 목적지 레지스터에 저장되기 전에 실행 결과를 저장하는 버퍼와, 지정된 검사 포인트(checkpoints)의 내용을 백업하는 버퍼들은 인터럽트가 레지스터의 내용을 이전의 검사 포인트 값으로 복귀시키는 순간에 제공됨에 유의하여야 한다. 특별한 구현에 있어 이들 버퍼의 유형들 중 어느 것도 사용할 수 있다. 완료 시, 실행 버퍼(execution buffer) 및 보유 버퍼(holding buffer)의 결과는 목적지 레지스터에 저장되고, 백업 버퍼는 해제(release)된다.
마이크로아키텍처를 순차적으로(in-order) 디스패치하고, 비순차적으로(out-of-order) 실행하고, 순차적으로(in-order) 완료하는 다수의 최신 수퍼스칼라 중앙 처리 장치들은 레지스터 재명명 방안(register renaming schemes)을 이용하여, 의존적이거나 독립적인 인스트럭션들이 디스패치 순서와는 다른 순서로 실행할 수 있도록 하고 있다. 따라서, 디스패치 순서에서 보다 최근의 인스트럭션이 오래된 인스트럭션보다 먼저 실행될 수 있다. 부가적으로, 몇몇 경우에는 타이밍 사이클 당 보다 유용한 인스트럭션들이 처리될 수 있도록 하고 있다.
최신의 레지스터 재명명 방안에서는 일반적으로 레지스터 오퍼랜드 판독 액세스 경로(register operand read access path)에서 이중 포인터 탐색(double pointer look-up)을 구현하고 있다. 이러한 구현에서는 먼저 레지스터를 액세스하여 차후의 화일의 포인터를 획득한다. 이어서, 차후의 화일 위치를 액세스하여 그 값을 검색한다. 레지스터 오퍼랜드 판독 액세스의 동작은 프로세서의 동작 속도를 제한하는 임계 타이밍 경로(critical timing path)에서 이루어진다. 이중 포인터 탐색에서는 레지스터 오퍼랜드 액세스 수행 시간이 길어지므로, 프로세서가 가장 높은 동작 주파수를 획득할 수 없다. 이러한 장점은 파이프라인의 스테이지의 수가 적은 프로세서에서 더욱 효과가 있다.
전술한 레지스터 재명명 방안에 대한 다른 실시예로는 히스토리 버퍼 방안(history buffer scheme)이 있다. 이러한 히스토리 버퍼 방안에서, 구조화된 레지스터에 대한 최근의 변경은 재명명 방안에 의해 요구된 차후의 화일과는 달리 구조화된 레지스터 내에 항상 유지된다. 따라서, 레지스터 재명명 방안과 관련된이중 포인터 탐색의 문제가 사라지며, 히스토리 버퍼 방안은 파이프라인 스테이지의 수가 적은 프로세서에 대해 매우 적합하다.
따라서, 인스트럭션을 정확하고 효율적으로 실행하는 데이타 처리 시스템 및 방법을 제공하는 것이 필요하다. 또한, 가장 최근에 디스패치된 인스트럭션과 대조적으로, 특정한 레지스터를 타겟팅하는 보다 이전에 디스패치된 인스트럭션에 의해 생성되는 결과의 데이타를 히스토리 버퍼에 저장하는 방법을 제공하는 것이 필요하다. 결과 데이타가 예측할 수 없는 지연 길이로 생성될 가능성이 존재한다.
전술한 요건들은 본 발명에 의해 달성된다. 따라서, 본 발명은 제 1 형태로 데이타 처리 시스템을 제공한다. 데이타 처리 시스템은 제 1 타겟 식별자를 갖는 제 1 인스트럭션을 제공하는 로직 유닛을 포함한다. 제 1 기능 유닛은 로직 유닛에 접속되어 제 1 인스트럭션을 수신한다. 제 1 기능 유닛은 제 1 결과 식별자, 제 1 결과를 제공하고, 제 1 제어 신호를 선택적으로 부정(negate)시킨다. 저장 회로는 로직 유닛에 접속되어 제 1 타겟 식별자를 수신하고, 제 1 기능 유닛에 접속되어 제 1 결과 식별자를 감시한다. 또한, 저장 회로는 제 1 기능 유닛에 접속되어 제 1 제어 신호를 수신한다. 저장 회로는 제 1 결과 식별자가 제공되고 제 1 제어 신호가 제 1 로직 상태일 때 제 1 결과를 저장한다.
또한, 본 발명은 제 2 형태로 데이타 처리 시스템의 데이타 포착 방법을 제공한다. 이러한 데이타 포착 방법은 로직 유닛으로부터 제 1 타겟 식별자를 갖는제 1 인스트럭션을 제공하는 단계와, 제 1 기능 유닛에서 제 1 인스트럭션 및 제 1 타겟 식별자를 수신하는 단계와, 제 1 기능 유닛이 제 1 결과 식별자, 제 1 결과를 제공하여 제 1 제어 신호를 선택적으로 부정할 수 있도록 하는 단계를 포함한다. 또한, 데이타 포착 방법은 제 1 결과 식별자 및 히스토리 버퍼를 수신하는 단계와, 히스토리 버퍼가 제 1 기능 유닛의 출력을 제 1 결과 식별자에 대해 감시할 수 있도록 하는 단계와, 히스토리 버퍼에서 제 1 제어 신호를 수신하는 단계와, 제 1 결과 식별자가 제공되고 제 1 제어 신호가 제 1 로직 상태일 때 히스토리 버퍼가 제 1 결과를 저장할 수 있도록 하는 단계를 포함한다.
또한, 본 발명은 제 3 형태로 머신(machine)에 의해 판독가능하고, 머신에 의해 실행가능한 인스트럭션 프로그램을 명시적으로 내장하여, 데이타 처리 시스템의 데이타를 포착하는 방법을 수행하는 프로그램 저장 장치(program storage device)를 제공한다. 전술한 데이타 처리 시스템의 데이타 포착 방법은, 로직 유닛으로부터의 제 1 타겟 식별자를 구비한 제 1 인스트럭션을 제공하는 단계와, 제 1 기능 유닛에서 제 1 인스트럭션 및 제 1 타겟 식별자를 수신하는 단계와, 제 1 기능 유닛이 제 1 결과 식별자, 제 1 결과를 제공하여 제 1 제어 신호를 선택적으로 부정할 수 있도록 하는 단계를 포함한다. 또한, 데이타 처리 시스템의 데이타 포착 방법의 단계는, 제 1 타겟 식별자를 히스토리 버퍼에 저장하는 단계와, 히스토리 버퍼가 제 1 기능 유닛의 출력을 제 1 결과 식별자에 대해 감시할 수 있도록 하는 단계와, 히스토리 버퍼에서 제 1 제어 신호를 수신하는 단계와, 제 1 결과 식별자가 제공되고 제 1 제어 신호가 제 1 로직 상태일 때 히스토리 버퍼가 제 1 결과를 저장할 수 있도록 하는 단계를 포함한다.
전술한 특징 및 다른 특징과 장점들은 첨부된 도면과 함께 이하의 상세한 설명을 참조하면 더욱 명백하게 이해될 것이다. 본 발명의 도면들은 본 발명의 영역을 한정하고자 의도된 것이 아님에 유의하여야 한다.
본 발명 및 본 발명의 장점들은 첨부된 도면과 함께 이하의 상세한 설명을 참조하면 더욱 명백하게 이해될 것이다.
도 1은 본 발명의 하나의 실시예에 따른 데이타 처리 시스템의 블럭도,
도 2는 본 발명의 하나의 실시예에 따른 파이프라인 프로세서의 블럭도,
도 3a는 본 발명에 따른 히스토리 버퍼의 블럭도,
도 3b는 본 발명의 히스토리 버퍼의 부분을 도시한 블럭도,
도 3c는 본 발명의 히스토리 버퍼의 부분을 도시한 블럭도,
도 3d는 본 발명의 히스토리 버퍼의 부분을 도시한 블럭도,
도 4a는 본 발명의 하나의 실시예에 따른 상태표를 도시한 도면,
도 4b는 도 4a의 상태표의 나머지 부분을 도시한 도면.
도면의 주요 부분에 대한 부호의 설명
100 : 데이타 처리 시스템 114 : 메모리
202 : BIU 204, 206 : I-캐쉬
208 : 로직 유닛 210 : 예약 스테이션
212.0∼ 212.n-1 : 기능 유닛 214 : 히스토리 버퍼 유닛
216 : 레지스터 화일 218 : 완료 유닛
330, 430 : NOR 게이트 510 : 상태 머신
본 발명은 히스토리 버퍼를 효율적으로 이용하여 적절한 시점까지 데이타가 올바른 연대 순서로 저장되고 데이타가 중첩 기록되지 않도록 하는 데이타 처리 시스템을 구현하는 것이다. 본 발명에 있어서, 잠정적으로(speculatively) 실행되는 인스트럭션의 결과에 의해 교체된 오래된 레지스터의 값은 히스토리 버퍼에 연대 순서로 저장된다. 잠정적인 실행이 올바르지 않은 것으로 검출되면, 저장된 값은 프로세서를 잠정적 개시 이전의 상태로 복원하는데 사용된다. 이어서, 복원 동작이 실행되거나 혹은 잠정적인 실행으로부터 복원이 불필요한 것으로 검출되면 저장된 값은 포기될 수 있다. 본 발명의 히스토리 버퍼는 이전의 인스트럭션에 의해 아직 생성되지 않을 수 있는 레지스터 값을 인식함으로써 이 기능을 고유하게 수행하며, 이러한 이전의 인스트럭션은 레지스터 값이 히스토리 버퍼에 저장될 때 레지스터 값을 변경한다. 이 경우, 본 발명은 히스토리 버퍼에서 데이타가 올바른 연대 순서로 포착될 수 있도록 하는 방법을 제공한다.
본 발명의 데이타 처리 시스템은 인스트럭션에 할당되는 고유의 타겟 식별자(TID(target identifier)로 지칭됨)를 이용하여 전술한 기능들을 수행한다. 인스트럭션과 관련된 TID의 값은, 인스트럭션이 완료되어 TID가 재시도(retry)될 때까지 인스트럭션이 라우팅되는 각각의 실행 유닛 및 기능 블럭으로 제공된다. 본 발명에 있어서, 0 또는 1 레지스터를 변경하는 인스트럭션에는 하나의 TID가 할당되고, 2 레지스터를 변경하는 인스트럭션에는 두개의 TID가 할당됨에 유의하여야 한다. 본 발명의 데이타 처리 시스템의 각각의 레지스터는 데이타 필드, TID 필드 및 W 비트를 갖고 있다. 레지스터를 변경하는 가장 최근의 인스트럭션은 인스트럭션에 할당된 TID를 레지스터의 TID 필드에 저장한다. 또한, 데이타가 보류(pending) 중이고 현재 레지스터에 기록될 수 없음을 나타내기 위해 레지스터의 W 비트는 부정된다. 또한, 결과 데이타 값의 완료가 예상되기 이전의 하나의 타이밍 사이클 동안, 인스트럭션을 실행하는 기능 유닛은 인스트럭션에 할당되는 TID를 제공하여 특정한 레지스터를 변경한다. 후속 타이밍 사이클 때 결과 데이타가 지연되면, 구조화된 레지스터에게 데이타가 저장될 준비가 되어 있지 않음을 통지하기 위해 결과의 버스 상에 재실행 신호가 단정된다. 또한, 데이타 값이 레지스터에 저장될 수 있을 때까지 재실행 신호가 단정된다. 동일한 타이밍 사이클 동안에는 재실행 신호가 부정되고, 데이타 유효 신호가 단정되고, 결과 데이타가 결과 버스 상으로 제공된다. 기능 유닛이 재실행 신호를 단정하는 동안, 기능 유닛은 차후의 인스트럭션의 보류 중인 결과 데이타에 대한 하나의 부가적인 결과 TID를 제공할 수 있다. 이 이후에는 동일한 기능 유닛으로부터 부가적인 결과 TID가제공되지 못한다. 두개의 미해결(outstanding) 결과의 TID에 대해, 기능 유닛은 재실행 신호를 부정한 후에 1 사이클 동안 후속 TID를 제공할 수 있다.
전술한 설명은 본 발명의 전체 동작을 개략적으로 기술한 것이다. 그러나, 이하의 설명에서는 본 발명의 구성요소 연결관계에 대한 정보뿐만 아니라 본 발명의 동작을 더욱 상세히 기술할 것이다.
도 1에는 본 발명의 하나의 실시예가 도시되어 있다. 먼저 도 1을 참조하면, 본 발명에 대해 사용되는 데이타 처리 시스템(100)의 하나의 예가 도시되어 있다. 데이타 처리 시스템은 중앙처리장치(CPU)(110)를 구비하고 있다. 본 발명의 히스토리 버퍼(도시되지 않음)는 CPU(110) 내에 포함된다. CPU(110)는 시스템 버스(112)에 의해 다른 여러 구성요소들과 접속된다. ROM(116)은 시스템 버스(112)에 접속되고, 데이타 처리 시스템(100)의 소정의 기본적인 기능을 제어하는 BIOS(basic input/output system)를 포함한다. RAM(114), I/O 어댑터(118) 및 통신 어댑터(134)도 시스템 버스(112)에 또한 접속된다. I/O 어댑터(118)는 디스크 저장 장치(120)와 통신하는 소형 컴퓨터 시스템 인터페이스(small computer system interface: SCSI) 어댑터일 수 있다. 통신 어댑터(134)는 버스(112)를 외부 네트워크와 상호접속하여 데이타 처리 시스템이 다른 시스템과 통신할 수 있게 한다. 또한, I/O 장치가 사용자 인터페이스 어댑터(122) 및 디스플레이 어댑터(136)를 통해 시스템 버스(112)에 접속된다. 키보드(124), 트랙볼(132), 마우스(126) 및 스피커(128)도 모두 사용자 인터페이스 어댑터(122)를 통해 버스(112)에 상호접속된다. 이러한 방식으로, 사용자는 키보드(124), 트랙볼(132) 또는 마우스(126)를 통해 시스템에 입력을 수행할 수 있고, 시스템으로부터의 출력을 스피커(128) 및 디스플레이(138)를 통해 수신할 수 있다. 부가적으로, 도 1에 도시된 여러 구성요소의 기능들을 통합하기 위해 AIX("AIX"는 IBM사의 등록 상표)와 같은 운영체제가 사용될 수 있다.
본 발명의 바람직한 구현에서는 본 발명의 방법(들)을 실행하도록 프로그램된 컴퓨터 시스템 및 컴퓨터 프로그램 제품과 같은 구현을 포함한다. 컴퓨터 시스템의 구현에 따르면, 본 발명의 방법(들)을 실행하는 인스트럭션들의 세트는 전술한 바와 같이 일반적으로 구성된 하나 이상의 컴퓨터 시스템의 RAM(114)에 상주한다. 컴퓨터 시스템에 의해 요구될 때까지, 인스트럭션들의 세트는 다른 컴퓨터 메모리, 예를 들어, (디스크 드라이브(120)에서 주로 사용되는 광 디스크 또는 플로피 디스크와 같은 제거가능한 메모리를 포함할 수 있는) 디스크 드라이브(120)에 컴퓨터 프로그램 제품으로서 저장될 수 있다. 또한, 컴퓨터 프로그램 제품은 다른 컴퓨터 내에 저장될 수 있고, 사용자의 워크스테이션에서 요구될 때 네트워크 또는 인터넷과 같은 외부 네트워크에 의해 또한 전송될 수 있다. 본 기술 분야에 통상의 지식을 가진 자라면, 인스트럭션의 세트의 물리적인 저장에서는 매체가 컴퓨터에 의해 판독가능한 정보를 전달할 수 있도록 저장 매체를 변경할 수도 있음을 이해할 것이다. 이러한 변경은 전기적, 자기적, 화학적 또는 몇몇 다른 물리적인 변경일 수 있다. 본 발명을 인스트럭션, 심볼, 문자 등으로 나타내는 것이 편리하지만, 이들 용어 및 이와 유사한 용어들 모두가 적절한 물리적인 구성요소와 관련됨을 이해하여야 한다.
본 발명은 비교, 유효화, 선택과 같은 용어들 또는 인간의 운영자와 관련될 수 있는 다른 용어들을 나타낼 수 있음에 유의하여야 한다. 그렇지만, 본 발명의 일부를 구성하고 본 명세서에 기술된 다수의 동작의 경우 인간의 동작에 의한 액션은 바람직하지 않다. 기술된 동작들은 대부분 다른 전기 신호들을 생성하기 위해 전기 신호를 처리하는 머신 동작들이다.
도 2는 CPU(110)의 부분을 더욱 상세히 도시한 도면이다. CPU(110)는 버스 인터페이스 유닛(BIU)(202), 인스트럭션 캐쉬(I-캐쉬)(204), 데이타 캐쉬(D-캐쉬)(206), 로직 유닛(208), 예약 스테이션(reservation station)(210), 다수의 기능 유닛(212.0 ∼ 212.n-1), 히스토리 버퍼 유닛(214), 레지스터 화일(216), 멀티플렉서(220), 완료 유닛(218), 메모리(114)를 포함한다. 메모리(114)는 시스템 버스(112)를 통해 BIU(202)와 양방향으로 접속된다. BIU(202)는 I-캐쉬(204)와 접속되고, D-캐쉬(206)와 양방향으로 접속된다. I-캐쉬(204)는 로직 유닛(208)과 접속된다. 로직 유닛(208)은 완료 유닛(218), 레지스터 화일(216), 히스토리 버퍼 유닛(214), 예약 스테이션(210)과 접속된다. 완료 유닛(218)은 다수의 외부 인터럽트와, 정상 종료 신호(normal finish signal) 및 플러쉬 신호(flush signal)를 수신한다. 완료 유닛(218)은 정상 완료/플러쉬 신호를 제공하기 위해 히스토리 버퍼 유닛(214)과 접속된다. 예약 스테이션(210)은 로직 유닛(208) 및 다수의 각각의 기능 유닛(212.0 ∼ 212.n-1)에 접속된다. 히스토리 버퍼 유닛(214)은 멀티플렉서(220)의 제 1 입력에 접속된다. D-캐쉬(206)는 결과 버스(230)를 통해 다수의 기능 유닛(212.0 ∼ 212.n-1) 및 멀티플렉서(220)의 제 2 입력에 접속된다. 각각의 기능 유닛들은 결과 버스(230)를 집단적으로 구성하는 별도의 결과 버스에 대응함에 유의하여야 한다. 결과 버스(230)는 히스토리 버퍼 유닛(214)에 또한 접속된다. 멀티플렉서(220)는 레지스터(Reg) 화일(216)에 접속되어 레지스터 갱신 데이타 버스가 제공되도록 한다. 레지스터 화일(216)은 각각의 히스토리 버퍼 유닛(214) 및 예약 스테이션(210)에 접속되어 레지스터(Reg) 데이타 버스가 제공되도록 한다. 다수의 각각의 기능 유닛들(212.0 ∼ 212.n-1)은 다수의 재실행(Reexec) 신호를 거쳐 히스토리 버퍼 유닛(214)에 접속된다. 예를 들어, 기능 유닛(212.0)은 Reexec 0 신호를 거쳐 히스토리 버퍼 유닛(214)에 접속되고, 기능 유닛(210.n-1)은 Reexec n-1 신호를 거쳐 히스토리 버퍼 유닛(214)에 접속된다. 마찬가지로, 예약 스테이션(210)은 다수의 각각의 기능 유닛(212.0 ∼ 212.n-1)에 접속된다.
도 3a 내지 도 3d는 히스토리 버퍼(214)의 부분을 더욱 상세히 도시한 도면이다. 간결성을 위해, 도 3a 내지 도 3b는 HB(히스토리 버퍼) 엔트리 0(300) 및 HB 엔트리 j(400)만을 상세히 도시한다. 각각의 히스토리 버퍼 엔트리에 대해, (예를 들어, HB 엔트리 0(300)), hb_tid(301), hb_data(302), hb_w(303), hb_v(304) 레지스터가 도시된다.
각각의 히스토리 버퍼 엔트리에 대해, hb_data 레지스터(302, 402)에 대한 입력 소스는, result_data0 내지 result_datan-1로 제각기 명명된 "n" 개의 결과 버스 데이타 신호들을 포함한다. 각각의 결과 버스 데이타 신호는 기능 유닛으로부터 결과 버스(230)를 거쳐 제공된다. 인스트럭션 디스패치 시 해당 특정한 히스토리 버퍼 엔트리에 "백업"되는 현재의 타겟 레지스터 데이타도 또한 입력 소스이다. 현재의 타겟 데이타 레지스터와 통신하는 경로는 도 3b에서 "dispatched_data_for_hb0"로 명명되고, 도 3d에서 "dispatched_data_for_hbj"로 명명된다. 이러한 경로는 완전성을 위해 도시된 것이다. 인스트럭션 디스패치 시에 레지스터 데이타가 저장되는 특정한 히스토리 버퍼 엔트리는 사용되지 않은 히스토리 버퍼 엔트리이다.
각각의 히스토리 버퍼 엔트리에 대해, hb_w 레지스터에 대한 입력 소스는 "n"개의 결과 버스 유효 신호, 즉, result_v0 내지 result_vn-1을 포함한다. 기능 유닛에 의해 소스 지정된 각각의 결과 버스 유효 신호는 대응하는 데이타 신호의 유효성의 자격을 결과 버스(230) 상에 부여한다. hb_w 레지스터(303, 403)에 대한 입력 소스는 인스트럭션 디스패치 시 해당 특정한 히스토리 버퍼 엔트리에 저장되는 현재의 타겟 레지스터 "w" 비트를 또한 포함한다. 현재의 타겟 데이타 레지스터 "w" 비트에 대한 경로는 도 3b에서 "dispatched_w_for_hb0"로 명명되고, 도 3d에서 "dispatched_w_for_hbj"로 명명된다. 이 경로는 완전성을 위해 도시된 것이다. 저장될 "w" 데이타는 사용되지 않은 관련 히스토리 버퍼 엔트리에 사전 할당됨에 유의하여야 한다. hb_data 레지스터의 데이타가 데이타를 생성하는 인스트럭션의 결과를 저장할 때 "w" 비트는 로직 1 값을 가진다. "w" 비트는 결과가 보류중일 때 로직 0 값을 가진다.
hb_data 레지스터(302)(402)에 대한 입력은 멀티플렉서(310)(410)에 의해 선택된다. hb_w 비트 레지스터(303)(403)에 대한 입력은 동일한 선택 제어 신호의세트를 갖는 (311)(411)에 의해 선택된다. 선택 제어 신호는 hb_data0 레지스터(302)에 대한 hb0_take_dispatched_data 선택과, hb_data0 레지스터(302)에 대한 입력으로서의 dispatched_data_for_hb0와, hb_w0 비트 레지스터(303)에 대한 입력으로서의 dispatched_w_for_hb0를 포함한다.
제어 블럭(321)에 의해 생성된 hb0_sel_rb0 신호는 hb_data0 레지스터(302)에 제공될 result_data0 신호와, hb_w0 비트 레지스터(303)에 제공될 result_v0 신호를 선택한다. 마찬가지로, 제어 블럭(322)에 의해 생성된 hb0_sel_rb1 신호는 hb_data0 레지스터(302)에 제공될 result_data 신호와, hb_w0 비트 레지스터(303)에 제공될 result_v1 신호를 선택한다. "n"개의 결과 소스를 취하면, 제어 블럭(323)은 결과 버스 n-1로부터 결과 데이타 및 유효 비트에 대한 선택 신호를 생성한다.
hb 엔트리 j(400)에 대해, hbj_take_dispatched_data 신호는 dispatched_data_for_hbj를 hb_dataj 레지스터(402)에 대한 입력으로서 선택하고, dispatched_w_for_hbj 신호를 hb_wj 비트 레지스터(403)에 대한 입력으로서 선택한다. 멀티플렉서의 다수의 각각의 제어 선택 입력에 대한 hbj_sel_rb0 내지 hbj_sel_rbn-1 신호들은 제각기 제어 블럭(421, 422, 423)에 의해 생성된다. NOR 게이트(330, 430)는 멀티플렉서의 선택 신호를 제각기 수신하여, data_w_hld0 신호 및 data_w_hldj 신호를 생성한다. data_w_hld0 신호 또는 data_w_hldj 신호가 부정되면, NOR 게이트(330) 및 NOR 게이트(430)의 개개의 출력은 레지스터(302, 303 또는 402, 403)의 입력을 제각기 래치하도록 한다.
제어 블럭(321, 421)은 결과 버스 0로부터 입력, 즉, 재실행 신호, TID_V 신호 및 TID 값을 수신한다. 블럭(322, 323) 및 블럭(422, 423)은 제각기 결과 버스 1 및 결과 버스 n-1로부터 입력을 취한다. 제어 블럭(321, 322, 323) 또는 제어 블럭(421, 422, 423)은 hb_tid0(301), hb_w0(303), hb_v0(304)의 출력과, hb_tidj(401), hb_wj(403), hb_vj(404)의 출력을 제각기 수신한다.
제어 블럭은 도 3a에 점선 경계를 갖는 박스에 도시된 바와 같이 동일한 내부 구조를 갖는다. 각각의 블럭은 버퍼(502), 버퍼(504), 버퍼(506), 버퍼(508), 비교기(512), 비교기(514) 및 상태 머신(510)을 포함한다.
제어 블럭(321)에 도시된 바와 같이, 다수의 각각의 제어 블록 내에 표시된 회로에서 Reexec 0 신호는 (도 2의) 다수의 Reexec 신호로부터 상태 머신 0(510)의 제 1 입력에 제공된다. TID_V0 신호는 버퍼(502) 및 상태 머신 0(510)에 제공된다. 마찬가지로, TID0 신호는 버퍼(504)에 제공된다. 버퍼(502)의 출력은 상태 머신 0(510) 및 버퍼(506)에 접속되어 TID_V_D0 신호를 제공한다. 버퍼(504)의 출력은 버퍼(508) 및 비교기(514)에 접속되어 TID_D0 신호를 제공한다. 버퍼(508)는 비교기(512)에 접속되어 TID_DD0 신호를 제공한다. 상태 머신(510)은 버퍼(502, 504)에 접속되어 Hold_D0 신호를 제공한다. 상태 머신 0(510)은 버퍼(506, 508)에 접속되어 Hold_DD0 신호를 제공한다. 비교기(512)의 출력은 상태 머신 0(510)에 접속된다. 비교기(514)의 출력은 상태 머신 0(510)의 입력에 접속된다. TID 레지스터(301)은 비교기(514) 및 비교기(512)에 접속된다. 상태 머신 0(510)은 멀티플렉서(310) 및 멀티플렉서(311)에 접속되어 hb0_sel_rb0 신호를 제공한다.
도 3은 히스토리 버퍼 유닛(214)에서 제 1 엔트리와 임의의 "j"번째 엔트리의 일부만을 도시한 것임에 유의하여야 한다. 또한, 각각의 다른 엔트리들도 도 3a에 도시된 것과 동일한 구성을 갖는다. 히스토리 버퍼(214) 부분에서 부가적인 엔트리의 존재는 히스토리 버퍼의 제 1 엔트리와 히스토리 버퍼의 엔트리 j 사이에서 일련의 점 형태로 표시된다.
전술한 설명은 본 발명의 하나의 실시예를 구현하는데 사용되는 구성요소의 연결관계에 대한 것이다. 이들 각각의 구성요소의 동작에 관한 설명은 차후에 더욱 상세히 기술될 것이다. 이하 본 발명의 구현에 대한 설명에 있어서, "활성 하이(active high)" 및 "활성 로우(active low)"의 로직 신호가 섞일 경우 야기되는 혼란을 방지하기 위해 "단정(assert)" 및 "부정(negate)"이란 용어와 여러 문법적인 형태(grammatical forms)들을 사용한다. "단정"은 로직 신호 또는 레지스터 비트가 활성 또는 논리적으로 참(true)인 상태를 지칭하는데 사용된다. "부정"은 로직 신호 또는 레지스터 비트가 비활성 또는 논리적으로 거짓(false)인 상태를 지칭하는데 사용된다.
본 발명의 신규한 특징들의 명확한 이해를 돕기 위해, 이하의 설명에서는 관련 기술 분야의 당업자에게 명백한 정보 처리 시스템의 전형적인 특징들을 생략하거나 혹은 개략적으로 기술할 것이다. 마찬가지로, 수퍼스칼라 프로세서도 관련 기술 분야의 당업자에게 명백하게 이해하는 것으로 가정한다. 특히, 순차적 디스패치, 비순차적 실행 및 순차적 완료 방안을 수행하는 프로세서도 관련 기술 분야의 당업자에게 명백하게 이해하는 것으로 가정한다.
도 1은 본 발명에 대해 사용되는 데이타 처리 시스템(100)의 하나의 예를 도시한 도면이다. 데이타 처리 시스템은 도 2에 더욱 상세히 예시된 CPU(110)를 포함한다.
CPU(110)의 동작을 상세히 설명하기 전에, CPU(110)가 집적 회로에 의해 성되는 여러 레지스터, 버퍼, 메모리 및 다른 유닛들을 포함함에 유의하여야 한다. 또한, CPU(110)는 RISC(reduced instruction set computer) 기법에 따라 동작한다. 또한, CPU(110)는 몇몇 특징에 있어서 내부 클럭(본 명세서에 상세히 예시되어 있지 않음)과 동기화되는 프로세서 사이클에 따라 인스트럭션을 처리한다. 도 2를 참조하면, CPU(110)는 버스 인터페이스 유닛(BIU)(202)를 포함하고, BIU(202)는 버스(112)에 접속되어 RAM(114)과 같은 메모리 소자와 I-캐쉬(204) 또는 D-캐쉬(206) 사이에 데이타 및 인스트럭션의 전송을 제어함에 유의하여야 한다.
동작 동안, 인스트럭션은 전술한 바와 같이, CPU(110) 내에서 일련의 로직 파이프라인 스테이지로 처리된다. 그러나, 본 발명의 바람직한 실시예로 구현된 바와 같이, 이들 스테이지의 기능들은 함께 병합될 수 있음에 유의하여야 한다. 따라서, 이러한 특정한 스테이지의 분할은 본 명세서에 한정하는 경우 외에는 한정되지 않는다. 실제로, 스테이지들 간의 각각의 구별은 본 발명에서 핵심 사항이 아니기 때문에, 전술한 스테이지들 중 몇몇은 명료한 이해를 돕기 위해 도 2에 단일 로직 유닛(208)으로서 표시된다.
도 2의 로직 유닛(208)은 인출, 분기 처리 인스트럭션 버퍼, 디코드 및 디스패치 유닛을 포함한다. 로직 유닛(208)은 I-캐쉬(204)로부터 인스트럭션을 인출하여 인스트럭션 버퍼에 저장한다. 시퀀스가 조건부 분기 인스트럭션(conditional branch instruction)을 가지면, 이러한 인출 동작은 정상 인스트럭션 시퀀스 또는 예상 시퀀스를 기초로 한다. 예상 시퀀스는 로직 유닛(208) 내의 분기 처리 유닛에 의해 선택된 어드레스에 따라 제공됨에 유의하여야 한다. 또한, 로직 유닛(208)은 인스트럭션을 디코딩하여 원 프로그램 시퀀스로 디스패치한다. 인스트럭션을 디스패치할 때, 디스패치 유닛은 타겟 식별자(TID)를 인스트럭션에 할당한다. TID는 인스트럭션에 대한 고유의 값이며, 이전에 할당된 TID에 대해 순차적으로 할당된다. 따라서, 인스트럭션은 TID에 의해 유일하게 식별되고, 인스트럭션이 디스패치되는 시퀀스는 인스트럭션의 TID들의 비교에 의해 나타난다. TID는 인스트럭션이 완료되고 TID가 재시도될 때까지 할당된 인스트럭션과 관련됨에 유의하여야 한다. 레지스터 화일(216)은 TID 필드, 데이타 필드 및 W 비트를 비교한다. W 비트는 인스트럭션의 실행에 응답하여 기록될 데이타가 존재하는지를 나타낸다.
로직 유닛(208)은 인스트럭션을 예약 스테이션(210)을 거쳐 다수의 기능 유닛들(212.0 ∼ 212.n-1) 중 적절한 기능 유닛에 제공한다. 또한, 인스트럭션이 레지스터를 타겟팅하면, 이 인스트럭션에 대한 데이타의 되기록이 보류 중임을 나타내기 위해 레지스터의W 비트가 리셋된다. 또한, 인스트럭션에 할당된 TID는 데이타가 보류 중인 인스트럭션을 식별하기 위해 레지스터의 TID 필드에 저장된다.
되기록 처리 단계 동안, 다수의 기능 유닛들(212.0 ∼ 212.n-1) 중 하나는 레지스터 포인터를 결과 버스(230)의 사전결정된 부분에 단정한다. 레지스터 포인터는 인스트럭션에 대한 타겟 레지스터 되기록 데이타와, 인스트럭션에 대한 TID와, 결과 데이타 값을 식별한다. 결과 버스(230) 상의 TID가 타겟 레지스터의 TID 필드 내에 저장된 TID와 정합하면, 결과는 이 타겟 레지스터에 되기록된다. 또한, 결과는 히스토리 버퍼 유닛(214)에 의해 결과 버스(230) 상에서 감시될 수 있다. 히스토리 버퍼 유닛(214)에 의해 수행되는 감시에 대한 동작은 다음에 상세히 기술될 것이다. 히스토리 버퍼 유닛(214)에 저장된 결과는 레지스터 데이타 버스(332)를 통해 레지스터(216)에 반환될 수 있다.
인스트럭션을 실행하는 다수의 기능 유닛들(212.0 ∼ 212.n-1) 중 하나는 인스트럭션 완료 시 완료 유닛(218)에게 신호한다. 이어서, 완료 버퍼(218)는 인스트럭션을 재시도한다. 이러한 재시도 프로세스 동안, 완료 유닛(218)은 히스토리 버퍼 유닛(214)에게 인스트럭션이 재시도되었음을 통보한다. 또한, 완료 유닛(218) 또는 로직 유닛(208)은 히스토리 버퍼 유닛(214)에게 예외 원인 인스트럭션(exception-causing instruction) 이후 또는 잘못 예측된 분기 동작 이후에 디스패치된 인스트럭션이 폐기(discard)되고, CPU(110)가 히스토리 버퍼에 백업된 이전의 알려진 상태로 복원되는 예외 조건(exception conditions) 및 오예측 분기(mispredicted branches)에 관한 것을 통보한다.
이하 히스토리 버퍼 유닛(214)에 대해 더욱 상세히 기술하고, 히스토리 버퍼 유닛(214)의 일반적인 설명에 관해서도 기술할 것이다. 히스토리 버퍼 유닛(214)은 히스토리 버퍼 엔트리를 보유하는 다수의 저장 장소를 포함하고 있음에 유의하여야 한다. 인스트럭션은 로직 유닛(208)에 의해 디스패치되고, 히스토리 버퍼 엔트리가 인스트럭션에 의해 타겟팅된 레지스터 파일(216) 내의 각각의 레지스터에대해 생성된다. 본 명세서에서 사용되고 있는 용어에 따르면, 인스트럭션이 레지스터의 내용에 영향을 끼치는 동작을 수행하는 경우, 이 동작은 레지스터를 "타겟팅"하는 것으로 지칭된다. 이 경우, 인스트럭션은 "타겟팅 인스트럭션"으로 지칭되고, 레지스터는 "타겟 레지스터" 또는 "타겟팅된 레지스터"로 지칭된다. 또한, 히스토리 버퍼 엔트리의 생성에 관한 인스트럭션은 특정한 엔트리에 대한 "엔트리 인스트럭션"으로서 지칭됨에 유의하여야 한다. 또한, "현재 엔트리 인스트럭션"은 엔트리 인스트럭션이 본 명세서의 내용에서 현재 해당되는 디스패치 인스트럭션을 나타내고, 가장 최근에 생성된 엔트리 인스트럭션이다.
도 3a 내지 도 3d는 히스토리 버퍼 유닛(214)의 부분을 더욱 상세히 도시한 도면이다. 히스토리 버퍼 유닛(214)의 부분에 있어서, 각각의 히스토리 버퍼 유닛은 데이타 레지스터(302)에 저장되는 데이타 필드와, V 레지스터(304)에 저장되는 유효 비트와, TID 레지스터(301)에 저장되는 TID 필드와, W 레지스터(303)에 저장되는 기록(W) 비트를 포함한다. 유효 비트는 대응하는 히스토리 버퍼 엔트리의 저장 장소가 유효 엔트리를 저장하는지의 여부를 나타내지만, W 비트는 데이타 필드 또는 TID 필드의 유효성을 식별하는 것임에 유의하여야 한다. 또한, 히스토리 버퍼 엔트리는 프로세서를 사전선택된 상태로 복원시키는데 필요한 다른 정보를 또한 포함할 수 있음에 유의하여야 한다. 예를 들어, 이러한 부가적인 정보는 엔트리 인스트럭션 이전 혹은 이를 포함하는 가장 최근에 디스패치된 인터럽트가능한 인스트럭션을 유일하게 식별하기 위한 그룹 식별 필드와, 엔트리 인스트럭션의 타겟인 레지스터를 식별하기 위한 타겟 레지스터와, 엔트리를 인터럽트가능한 지점 이후에생성된 제 1 엔트리로서 식별하기 위한 L 비트를 포함할 수 있다. 그러나, 명료성을 위해 이들 값은 본 명세서에서 더 이상 상세히 기술되지 않을 것이다. 히스토리 버퍼에 관한 또 다른 정보는 1996년 10월 15일에 출원된 "Method and Apparatus for Condensed History Buffer" (Attorney Docket No. AT9-96-115)이란 명칭의 미국 특허 출원 제 08/729,309 호에 개시되어 있으며, 이는 본 명세서에 참조로 인용된다. 또한, 히스토리 버퍼에 관한 또다른 정보는 1996년 10월 15일에 출원된 "Method and Apparatus for Improved Recovery of Processor State Using History Buffer" (Attorney Docket No. AA9-96-009)이란 명칭의 미국 특허 출원 제 08/729,307 호에 개시되어 있으며, 이는 본 명세서에 참조로 인용된다.
이하 도 3a 내지 도 3d의 히스토리 버퍼(214)의 부분의 동작에 관해 더욱 상세히 기술할 것이다. 전술한 바와 같이, 로직 유닛(208)이 특정한 구조화 레지스터의 내용을 변경하는 경우, 히스토리 버퍼(214)의 엔트리는 특정한 구조화 레지스터 내에서 검출된 현재의 값의 사본을 저장한다. 그러나, 인스트럭션은 다수의 인스트럭션들을 병렬로 실행하는 파이프라인형 데이타 프로세서에 의해 실행되기 때문에, 히스토리 버퍼 유닛(214) 내에 저장된 레지스터 값은 특정한 구조화 레지스터를 변경하는 이전의 인스트럭션에 의해 아직 생성되지 않을 가능성이 있다. 이 경우, 인스트럭션에 대응하는 TID는 히스토리 버퍼(214) 내에 저장될 것이다. 그러면, 히스토리 버퍼(214)는 결과 버스(230)를 거쳐 다수의 기능 유닛들(212.0 ∼ 212.n-1) 중 하나에 의해 제공된 결과들을 감시하여, 레지스터 값이 제공되는 때를 판정한다. 이때, 히스토리 버퍼 유닛(214)는 레지스터 값을 포착하여, 이를 적절한 히스토리 버퍼 엔트리 장소에 저장한다. 그러나, 히스토리 버퍼 유닛(214)은 올바른 레지스터 값이 올바른 연대 순서로 포착되도록 조심스럽게 제어되어야 한다. 예를 들어, CPU(110)가 인스트럭션을 비순차적으로 실행하는 경우, 히스토리 버퍼 유닛(214)은 다수의 기능 유닛들(212.0 ∼ 212.n-1) 중 하나에 의해 제공된 레지스터 값을 포착하기 위해 단순한 연대 방안을 따르지 않을 수 있다. 따라서, 다수의 클럭 사이클 동안 레지스터 값이 로컬 메모리로부터 액세스되지 않고 외부 메모리로부터 액세스되어지는 경우, CPU(110)의 파이프라인은 인스트럭션들을 계속 실행하고, 외부 메모리로부터 레지스터 결과가 획득되기 이전에 차후의 인스트럭션의 결과들을 반환할 것이다. 이 경우, 히스토리 버퍼 유닛(214)은 레지스터 결과가 결과 버스(230)에 의해 제공되는 순간을 정확하게 검출해야 한다.
원하는 값이 결과 버스(230) 상에 전송되는 순간을 판정하는 고유의 방법을 구현할 때, 히스토리 버퍼 유닛(214)는 CPU(110)의 특성 동작에 의존한다. 이러한 특성 동작 동안, 타겟 레지스터(들)를 변경하는 인스트럭션은 다수의 기능 유닛들(212.0 ∼ 212.n-1) 중 적절한 하나의 기능 유닛으로 제공된다. 타겟 레지스터에 제공될 결과 데이타가 예상되기 이전의 하나의 타이밍 사이클 때, 레지스터에 대응하는 TID 필드(들)가 결과 버스(230) 상으로 제공된다. 동작 동안, 다수의 각각의 기능 유닛들(212.0 ∼ 212.n-1)은 데이타가 준비되는 사이클을 예상한다. 메모리로부터의 데이타 로딩 동작을 예외로 하면, 이러한 예상 동작은 일반적으로 정확하다. 메모리로부터의 데이타 로딩 동작과 관련된 지연 시간(latency)은 데이타의 메모리 위치에 의해 결정된다.
이어서, 후속 타이밍 사이클에서, 타겟팅된 레지스터에게 이 레지스터에 저장될 데이타가 이용될 수 없음을 통보하기 위해 결과 버스(230) 상에서 재실행(Reexec) 신호가 단정된다. 이어서, 재실행 신호는 타겟팅된 레지스터 내에 저장될 데이타가 이용가능할 때까지 단정된 채로 남는다. 동일한 타이밍 사이클 동안에는 재실행 신호가 부정되고, 결과 데이타는 결과 버스(230) 상으로 제공된다. 현재의 재실행 동작이 이전의 동작의 결과 데이타에 대해 계속 수행되는 동안, 다수의 기능 유닛들(212.0 ∼ 212.n-1) 중 하나는 후속 결과 데이타 값에 대한 TID를 또한 제공할 수 있음에 유의하여야 한다. 다수의 기능 유닛들(212.0 ∼ 212.n-1) 중 하나로부터 재실행되는 미해결 결과가 존재하면, 부가적인 TID는 이러한 방안을 사용함으로써 제공될 수 있으며, 본 발명의 파이프라인형 구조의 성능이 극대화될 수 있다.
백업 사본이 히스토리 버퍼 유닛(214) 내에 저장될 때 데이타가 여전히 생성되지 않았을 때에도, 히스토리 버퍼(214)는 데이타가 올바른 연대 순서로 포착될 수 있도록 CPU(110)의 특성 및 재실행 신호를 이용할 수 있다.
이러한 동작을 수행하기 위해, 히스토리 버퍼 유닛(214)는 결과 버스(230)로부터 다수의 신호들의 세트를 감시한다. 기능 유닛에 의해 소스 지정되는 각각의 신호의 세트는 재실행 신호, TID_V 신호, TID 신호, RD(Result Data) 신호, RV(Result_V) 신호를 포함한다. 이들 신호의 세트는 결과 버스(230)를 통해 전달된 대응하는 RD 신호 상에 제공된 값이 히스토리 버퍼 유닛(214) 내에 저장되어지는 값일 때를 판정하는데 사용된다. 이들 각각의 신호의 세트에 대한 동작을 수행하기 위한 로직은 상태 머신 내에 포함된다. 이러한 상태 머신은 각각의 제어 블록(310∼323) 내에 상태 머신 0(510)을 포함한다. 전술한 신호들 중에서 재실행 신호는 인스트럭션의 실행 이후에 예상 데이타가 아직 사용할 수 없음을 나타내기 위해 제공된다. 또한, 재실행 신호는 전술한 바와 같이, 데이타가 사용될 수 있을 때까지 계속 단정된다. TID_V 신호는 TID 신호의 권한을 부여하는데 제공된다. 또한, 전술한 바와 같이, TID 값은 소정의 인스트럭션에 대응하고, 다른 보류 중인 인스트럭션에 대한 상대적인 인스트럭션의 수명을 나타낸다. RD 신호는 기능 유닛에 의해 결과 버스(230)를 통해 제공된 데이타 값을 나타낸다. 또한, 히스토리 버퍼 유닛(214)에 의해 포착되는 RV 신호는 RD 신호를 통해 제공된 결과가 유효한지를 나타낸다. RV 신호는 RD 값의 권한을 부여한다. 만일 RV 신호가 단정되지 않으면, RD 값은 필요한 데이타를 전송하지 못하고, 소정의 데이타 전송값은 부정된다. 본 발명에 있어서, 히스토리 버퍼 유닛(214)은 무효 데이타를 포착할 수 있지만, 히스토리 버퍼 엔트리의 W 레지스터 내에 포착된 부정 RV 신호는 히스토리 버퍼 엔트리가 여전히 데이타를 요구하고 있음을 나타낸다. 유효 데이타가 사용가능하지면 유효 데이타는 반환(redelivery)된다.
동작 동안, 히스토리 버퍼 유닛(214)은 대응하는 타겟 레지스터에 중첩 기록되고, 레지스터 화일(216)의 다수의 구조화 레지스터 내에 포함될 수 있는 데이타 값의 "백업" 사본을 저장하기 위한 단계들을 실행한다. 동작 동안, 히스토리 버퍼 유닛(214)의 각각의 엔트리의 상태 머신은 관련 TID 값을 저장하는 다수의 래치를 제어한다. 도 3에 도시된 히스토리 버퍼(214)의 부분에 있어서, 각각의 제어 블럭의 제 1 래치는 버퍼(502) 및 버퍼(504)에 의해 형성되고, 제 2 래치는 버퍼(506) 및 버퍼(508)에 의해 형성된다. 1 타이밍 사이클 동안 지연된 데이타 값에 대응하는 TID 값은 TID_D로 지칭된다. 마찬가지로, 2 타이밍 사이클 동안 지연된 데이타 값에 대응하는 TID 값은 TID_DD 값으로 지칭된다. 히스토리 버퍼 유닛(214)의 각각의 엔트리의 상태 머신은 Hold_D 신호와 Hold_DD 신호를 제각기 변경하여 TID_D 값에 대응하는 래치와 TID_DD에 대응하는 래치를 제어한다. 각각의 TID_D 및 TID_DD 신호가 래치들 중 하나에 저장되고 난 이후에, 그 값은 Hold_D 및 Hold_DD 신호가 단정되는 동안 래치 내에 유지된다. 또한, 결과 버스(230)에 의해 제공된 데이타(본 명세서에서 RD 값으로 지칭됨)가 데이타 레지스터 내에 래치되고, RV 값이 히스토리 버퍼 유닛(214)의 히스토리 버퍼 엔트리의 W 레지스터 내에 래치되면, 히스토리 버퍼 유닛(214) 내의 각각의 엔트리에 대한 상태 머신은 hbx_sel_rby 신호(여기서, x는 히스토리 버퍼(214) 내의 히스토리 버퍼 엔트리의 인덱스에 대응하고, y는 결과 버스(230)의 데이타 버스에 대응함)를 단정한다. 주어진 시간에 히스토리 버퍼 엔트리마다 hbx_sel_rby 신호들 중 기껏해야 하나가 단정됨에 유의하여야 한다. 또한, hbx_sel_rby 신호는 NOR 게이트에 제공된다. 따라서, hbx_sel_rby 신호가 단정되면, 단정된 신호는 히스토리 버퍼 엔트리의 데이타 및 W 필드를 저장하는 래치에 대한 보유 신호(hold signal)를 생성하기 위해 반전된다. bhx_xel_rby 신호가 단정되면, 보류 신호가 부정되고, 새로운 RD 값 및 RV 값이 관련 히스토리 버퍼 엔트리의 데이타 레지스터 및 W 레지스터 내에 래치된다. RV 값이 단정되어 W 레지스터 내에 래치되는 경우 데이타 필드는 유효한 것으로 고려됨에 유의하여야 한다. 그러나, W 레지스터가 무효값을 저장하면, 기능 유닛에 의해 데이타가 여전히 생성된다.
히스토리 버퍼 엔트리를 필요로 하는 인스트럭션이 디스패치될 때 히스토리 버퍼 엔트리가 새로 할당되는 경우 HB_Take_Dispatch 신호가 단정됨에 유의하여야 한다. 이 경우, 할당될 히스토리 버퍼 엔트리의 V 비트는 여전히 부정되고, 결과 버스에 대한 모든 감시 기능 및 포착 기능들은 아무런 영향을 받지 않는다. 데이타를 감시하고 포착하는 전술한 또다른 방안은 현재의(점유된) 히스토리 버퍼 엔트리에 의해 수행되고, 생성될 새로운 엔트리는 디스패치 동작으로부터의 데이타만을 수신할 수 있다.
지금까지 히스토리 버퍼(214)의 동작에 관해 기술되었지만, 이제부터 상태 머신의 동작과 특정한 동작의 예가 제공될 것이다. 히스토리 버퍼 엔트리들 중 하나에 대한 상태 머신의 동작 설명 동안, W, V, 및 TID 필드는 히스토리 버퍼의 각각의 엔트리의 상태 머신에 대한 입력으로서 제공됨에 유의하여야 한다. 또한, 두개의 비교기는 상태 머신에 대한 입력을 제공한다. 제 1 비교기는 히스토리 버퍼 엔트리의 TID 필드를 TID_D 값과 비교한다. 다른쪽 비교기는 히스토리 버퍼 엔트리의 TID 필드를 TID_DD 값과 비교한다. TID_D 및 TID_DD는 두개의 보류 중인 결과 데이타 값을 감시하는 자격을 결과 버스 상에 제공한다. 마찬가지로, 히스토리 버퍼 엔트리의 TID 필드가 TID_DD 값에 대응하는 경우, 결과 버스(230)에 의해 제공되는 데이타는 적어도 두개의 타이밍 사이클 동안 지연된 히스토리 버퍼(214) 내에 저장된 결과에 대응한다.
도 4a 및 도 4b에는 히스토리 버퍼 유닛(214) 내의 각각의 엔트리의 상태 머신에 대응하는 상태도가 표 형태로 도시되어 있다. 상태 머신은 상태 S0에서 개시됨에 유의하여야 한다. 유효 TID가 제공되지 않으면, 상태 머신은 상태 S0로 유지한다. 그러나, 결과 버스(230)로부터 유효 TID가 제공되면, 상태 머신은 상태 S0로부터 상태 S1으로 전이된다. 결과 버스(230) 상에 데이타 값으로 제공되는 TID_V 신호가 단정되면, 유효 TID가 제공됨에 유의하여야 한다. 기능 유닛이 결과를 예상하면, 기능 유닛은 연속적인 사이클 동안 TID 및 TID_V를 단정한다.
상태 S1은 최종 타이밍 사이클 동안 결과 버스(230)로부터 유효 TID가 포착되고, 결과 버스를 구동하는 동일한 기능 유닛으로부터 보류 중인 미해결 재실행 동작이 존재하지 않는 상태이거나, 혹은 상태 머신이 상태 S0(레지스터(504 및 508)가유효 TID를 보유하지 않는 경우)일 때 유효 TID가 포착되는 상태이다. 재실행 동작은 다수의 재실행 신호들 중 단정된 신호에 의해 나타난다. 상태 S1에서, 적절한 재실행 신호가 단정되지 않으면, 데이타는 결과 버스(230) 상으로 제공된다. 히스토리 버퍼 엔트리가 유효 엔트리임을 나타내기 위해 (V 레지스터(326)와 같은) V 레지스터 내에 저장된 유효 비트가 단정되고, 유효 데이타가 이 레지스터 내에 저장되어 있지 않음을 나타내기 위해 히스토리 버퍼 엔트리에 대응하는 W 비트가 부정되면, 히스토리 버퍼 엔트리에 대응하는 상태 머신은 대응하는 HB_TID 레지스터 내에 저장된 TID 필드가 제 1 래치 내에 저장된 TID_D 값과 동일할 때 sel_rb 신호를 단정할 것이다. TID_D 값은 이전의 사이클로부터 래치된 TID를 나타냄에 유의하여야 한다.
이어서, 현재의 타이밍 사이클 때 결과 버스(230) 상에 유효 TID가 존재하지 않으면, 히스토리 버퍼 엔트리에 대응하는 상태 머신의 상태는 상태 S0로 변한다. 덧붙여, 결과 버스(230) 상에 또다른 유효 TID가 존재하면, 히스토리 버퍼 엔트리에 대응하는 상태 머신의 상태는 상태 S1로 변한다. 상태 머신의 상태가 S1로부터 S0 또는 S1 중 어느 하나로 변하면, 후속 상태 설정 동안 TID_V_DD 값이 변경되지 않도록 하기 위해 Hold_DD 신호가 단정된다. TID_V_DD 값 및 TID_V_D 값은 상태를 나타내는 2진수임에 유의하여야 한다. TID_V_DD 값은 상태가 S0이거나 혹은 S1 중 어느 하나일 때 부정된다. TID_D가 HB_TID와 동일하지 않으면, 결과의 부정된 hold_0 신호에 의해 TID_D 및 TID_V_D 레지스터는 새로운 입력값으로 중첩 기록된다.
또한, 상태 S1에서, 히스토리 버퍼 엔트리에 대응하는 재실행 신호가 단정되면, TID_D 값으로서 래치된 TID에 대응하는 데이타는 결과 버스(230) 상에 사용되지 못한다. 이 경우, TID_D 값은 TID_DD 값으로서 래치되어진다. 이러한 동작은 후속 동작 동안 결과 버스(230)에 의해 또다른 유효 TID 값이 제공될 가능성이 존재하기 때문에 필요하다. 만일 결과 버스가 다수의 기능 유닛들(212.0 ∼ 212.n-1) 중 하나로부터 또다른 유효 TID 값을 제공하면, TID_V 값이 단정되고, 상태 머신의 상태가 상태 S3로 변경된다. 이어서, TID_V 값이 부정되면, 상태 머신의 상태는 상태 S2로 변경된다.
상태 머신이 상태 S2로 동작하면, 결과 버스(230)를 구동하는 기능 유닛에 하나의 미해결 재실행 동작이 제공된다. 그러나, 상태 머신이 상태 S2로 동작하면, 이전의 타이밍 사이클까지 보류하거나 이 사이클을 포함하는 다른 결과는 존재하지 않는다. 따라서, 결과 버스(230)로부터 재실행 신호가 단정되고, 결과 버스(230) 상에 데이타가 사용될 수 없으면, 상태 머신은 Hold_DD 신호를 단정하여 데이타가 제공될 때까지 TID_DD 값을 보유한다. 차후의 타이밍 사이클 동안 결과 버스(230) 상에 또 다른 TID이 제공되는 것을 나타내기 위해 TID_V 값이 단정되면, 후속 타이밍 사이클 동안 상태 머신은 상태 S3로 변경된다. 그러나, TID_V 값이 부정되면, 상태 머신의 상태는 상태 S2로 된다. 또한, 기능 유닛이 재실행 신호를 부정하면, 데이타는 결과 버스(230) 상에서 사용가능하다. 이어서, 데이타를 필요로 하는 대응하는 히스토리 버퍼 엔트리가 TID_DD 값과 동일한 TID를 가지면, 상태 머신은 출력 sel_rb 신호(예를 들어, 블럭(321)에 대한 hb0_sel_hb0)를 단정한다. 동일한 타이밍 때 TID_V 값이 단정되면, 후속 타이밍 사이클 동안 상태 머신은 상태 S1로 복귀한다. 그렇지 않으면, 상태 머신의 상태는 상태 S0로 변경된다.
상태 S3는 CPU(110)의 나머지 부분에 이미 제공한 TID를 갖는 또다른 결과 뿐만 아니라, 결과 버스를 구동하는 기능 유닛이 현재의 재실행 동작을 가질 때의 시나리오를 나타낸다. 이러한 환경에서, 현재의 타이밍 사이클 동안 다수의 기능 유닛들 중 하나에 대응하는 재실행 신호가 여전히 단정되어 있으면, 상태 머신의 상태는 상태 S3로 유지하고, 결과 버스(230) 상의 결과 데이타는 포착되지 않는다. 이 경우, TID_D 값 및 TID_DD 값을 저장하는 별도의 래치 내에 TID를 각각 보유하기 위해 Hold_D 및 Hold_DD가 단정된다. 만약 재실행 신호가 단정되지 않고, 현재의 타이밍 사이클 동안 유효 TID가 제공되지 않으면, 데이타를 필요로 하는 유효히스토리 버퍼 엔트리는 TID 값을 TID_DD 값과 정합시킬 것이다. 만약 두개의 값이 다른 값과 대응하면, 히스토리 버퍼 엔트리의 HB_Data 레지스터는 결과 버스(230) 상의 데이타를 포착할 것이다. 이 경우, 후속 타이밍 사이클 동안 상태 머신은 상태 S2로 변경된다. 그러나, 재실행 신호가 부정되고, TID_V 값이 단정되면, 불법 동작이 발생되는데, 그 이유는 진행 중인 재실행 동작이 존재하는 경우에 기능 유닛이 하나의 유효 TID만을 제공할 수 있기 때문이다.
상태 머신을 이용하여 각각의 기능 유닛에 의해 제공된 결과 데이타를 감시함으로써, 히스토리 버퍼 엔트리는 대응하는 결과 TID에 의해 식별된 결과 데이타를 정확하게 저장할 수 있다. 또한, 상태 머신은 히스토리 버퍼 엔트리가 결과 데이타의 도착 지연을 수용할 수 있도록 한다. 따라서, 본 발명은 데이타가 정확한 연대 순서로 포착되고 레지스터의 히스토리 값의 왜곡을 방지할 수 있도록 하는 데이타 처리 시스템 및 방법을 구현할 수 있다.
전술한 설명은 본 발명의 하나의 실시예로 제공된 것이다. 그러나, 본 발명은 또 다른 실시예로 구현될 수 있다. 예를 들어, 전술한 바와 같이 제공된 히스토리 버퍼의 구현에 있어서, 히스토리 버퍼는 결과 버스를 감시할 수 있고, TID 값(TID_D 및 TID_DD)을 저장하는 두 개의 버퍼와, TID_V 값(TID_V_D 및 TID_V_DD)를 복원하는 두개의 버퍼를 합체함으로써 기능 유닛으로부터 두개의 보류 중인 반환 데이타 값에 대한 두개의 TID 값을 큐잉할 수 있다. 전술한 바와 같이, 이들 버퍼는 히스토리 버퍼 유닛(214) 외부의 제어 블럭에 저장된다. 덧붙여, 버퍼의 수가 증가될 수 있음에 유의하여야 한다. 만일 본 발명의 또 다른 실시예로 버퍼의 수가 증가되면, 히스토리 버퍼에 의해 수행된 감시 동작 및 포착 동작에서는 보류 중인 반환 데이타에 대해 더많은 TID 값을 처리할 수 있다. 이러한 환경에서, 데이타 머신은 더많은 결과 데이타의 버퍼링을 보상하도록 변경될 수 있다.
본 명세서에 본 발명의 원리가 기술되었지만, 본 기술 분야에 통상의 지식을 가진 자라면, 이러한 설명은 단지 예시적인 것으로 본 발명의 영역으로 한정되지 않음을 이해할 것이다. 따라서, 본 발명은 첨부된 특허청구범위에 의해 본 발명의 정신 및 영역을 벗어나지 않은 범위 내에서 여러가지 변경을 포함할 수 있다.
따라서, 본 발명의 데이타 처리 시스템 및 방법은 레지스터 재명명 방안과 관련된 이중 포인터 탐색의 문제를 제거하고, 파이프라인 스테이지의 수가 적은 프로세서에 대해 매우 적합하면서, 인스트럭션을 정확하고 효율적으로 실행하는 이점이 있다.

Claims (16)

  1. 데이타 처리 시스템에 있어서,
    ① 제 1 타겟 식별자(a first target identifier)를 구비하는 제 1 인스트럭션을 제공하는 로직 유닛(a logic unit)과,
    ② 상기 로직 유닛에 접속되어, 상기 제 1 인스트럭션과 상기 제 1 타겟 식별자를 수신하고, 제 1 결과 식별자와 제 1 결과를 제공하며, 제 1 제어 신호를 선택적으로 부정(negate)하는 제 1 기능 유닛(a first functional unit)과,
    ③ 상기 로직 유닛에 접속되어 상기 제 1 타겟 식별자를 수신하고, 상기 제 1 기능 유닛에 접속되어 상기 제 1 결과 식별자를 감시하며, 상기 제 1 제어 신호를 수신하고, 상기 제 1 결과 식별자가 제공되고 상기 제 1 제어 신호가 제 1 로직 상태(a first logic state)일 때 상기 제 1 결과를 저장하는 히스토리 버퍼(a history buffer)
    를 포함하되,
    상기 제 1 타겟 식별자는 상기 제 1 인스트럭션에 의해 액세스되는 레지스터(a register)를 식별하고,
    상기 제 1 기능 유닛은 상기 제 1 결과가 상기 레지스터 내에 저장하는데 이용될 수 없음을 나타내기 위해 상기 제 1 제어 신호를 제 2 로직 상태(a second logic state)로 배치하는
    데이타 처리 시스템.
  2. 데이타 처리 시스템에 있어서,
    ① 제 1 타겟 식별자를 구비하는 제 1 인스트럭션을 제공하는 로직 유닛과,
    ② 상기 로직 유닛에 접속되어, 상기 제 1 인스트럭션과 상기 제 1 타겟 식별자를 수신하고, 제 1 결과 식별자와 제 1 결과를 제공하며, 제 1 제어 신호를 선택적으로 부정하는 제 1 기능 유닛과,
    ③ 상기 로직 유닛에 접속되어 상기 제 1 타겟 식별자를 수신하고, 상기 제 1 기능 유닛에 접속되어 상기 제 1 결과 식별자를 감시하며, 상기 제 1 제어 신호를 수신하고, 상기 제 1 결과 식별자가 제공되고 상기 제 1 제어 신호가 제 1 로직 상태일 때 상기 제 1 결과를 저장하는 저장 회로(a storage circuit)
    를 포함하되,
    상기 제 1 제어 신호는 상기 제 1 결과가 액세스될 때까지 제 2 로직 상태로 유지하는
    데이타 처리 시스템.
  3. 제 1 항에 있어서,
    ④ 상기 로직 유닛에 접속되어 제 2 인스트럭션과 제 2 타겟 식별자를 수신하고, 제 1 결과 식별자와 제 2 결과를 제공하며, 제 2 제어 신호를 선택적으로 부정하는 제 2 기능 유닛(a second functional unit)을
    더 포함하는 데이타 처리 시스템.
  4. 데이타 처리 시스템에 있어서,
    ① 제 1 타겟 식별자를 구비하는 제 1 인스트럭션을 제공하는 로직 유닛과,
    ② 상기 로직 유닛에 접속되어, 상기 제 1 인스트럭션과 상기 제 1 타겟 식별자를 수신하고, 제 1 결과 식별자와 제 1 결과를 제공하며, 제 1 제어 신호를 선택적으로 부정하는 제 1 기능 유닛과,
    ③ 상기 로직 유닛에 접속되어 상기 제 1 타겟 식별자를 수신하고, 상기 제 1 기능 유닛에 접속되어 상기 제 1 결과 식별자를 감시하며, 상기 제 1 제어 신호를 수신하고, 상기 제 1 결과 식별자가 제공되고 상기 제 1 제어 신호가 제 1 로직 상태일 때 상기 제 1 결과를 저장하는 히스토리 버퍼와,
    ④ 상기 로직 유닛에 접속되어 제 2 인스트럭션과 제 2 타겟 식별자를 수신하고, 제 1 결과 식별자와 제 2 결과를 제공하며, 제 2 제어 신호를 선택적으로 부정하는 제 2 기능 유닛
    을 더 포함하되,
    상기 제 2 기능 유닛은 상기 제 2 제어 신호가 제 2 로직 상태를 유지하는 동안 상기 제 2 결과를 제공하는
    데이타 처리 시스템.
  5. 제 4 항에 있어서,
    상기 히스토리 버퍼는 상기 제 1 결과 및 상기 제 2 결과 모두를 선택적으로 저장하는 데이타 처리 시스템.
  6. 데이타 처리 시스템에 있어서,
    ① 제 1 타겟 식별자를 구비하는 제 1 인스트럭션을 제공하는 로직 유닛과,
    ② 상기 로직 유닛에 접속되어, 상기 제 1 인스트럭션과 상기 제 1 타겟 식별자를 수신하고, 제 1 결과 식별자와 제 1 결과를 제공하며, 제 1 제어 신호를 선택적으로 부정하는 제 1 기능 유닛과,
    ③ 상기 로직 유닛에 접속되어 상기 제 1 타겟 식별자를 수신하고, 상기 제 1 기능 유닛에 접속되어 상기 제 1 결과 식별자를 감시하며, 상기 제 1 제어 신호를 수신하고, 상기 제 1 결과 식별자가 제공되고 상기 제 1 제어 신호가 제 1 로직 상태일 때 상기 제 1 결과를 저장하는 저장 회로
    를 포함하되,
    상기 저장 회로는,
    상기 제 1 결과를 저장하는 래치(a latch)와,
    상기 제 1 제어 신호 및 상기 제 1 결과 식별자를 수신하고, 상기 제 1 결과가 상기 래치에 저장될 때를 나타내는 선택 신호(a select signal)를 선택적으로 생성하는 상태 머신(a state machine)
    을 더 포함하는 데이타 처리 시스템.
  7. 제 6 항에 있어서,
    상기 저장 회로는,
    상기 제 1 기능 유닛에 의해 제공된 데이타 값에 대응하는 상기 제 1 타겟 식별자와 상기 제 1 결과 식별자를 비교하고, 상기 제 1 타겟 식별자가 상기 제 1 결과 식별자에 대응하는 때를 판정하는 비교기(a comparator)
    를 더 포함하는 데이타 처리 시스템.
  8. 제 7 항에 있어서,
    상기 제 1 타겟 식별자가 상기 제 1 결과 식별자에 대응하고, 상기 제 1 제어 신호가 상기 제 1 로직 상태로 있을 때, 상기 상태 머신은 상기 제 1 결과가 상기 래치 내에 저장되어야 함을 나타내는 상기 선택 신호를 선택적으로 생성하는 데이타 처리 시스템.
  9. 데이타 처리 시스템에 있어서,
    ① 제 1 타겟 식별자를 구비하는 제 1 인스트럭션을 제공하는 로직 유닛과,
    ② 상기 로직 유닛에 접속되어, 상기 제 1 인스트럭션과 상기 제 1 타겟 식별자를 수신하고, 제 1 결과 식별자와 제 1 결과를 제공하며, 제 1 제어 신호를 선택적으로 부정하는 제 1 기능 유닛과,
    ③ 상기 로직 유닛에 접속되어 상기 제 1 타겟 식별자를 수신하고, 상기 제 1 기능 유닛에 접속되어 상기 제 1 결과 식별자를 감시하며, 상기 제 1 제어 신호를 수신하고, 상기 제 1 결과 식별자가 제공되고 상기 제 1 제어 신호가 제 1 로직 상태일 때 상기 제 1 결과를 저장하는 히스토리 버퍼
    를 포함하되,
    상기 제 1 제어 신호가 제 2 로직 상태로 있을 때, 예상 타이밍 사이클 동안 상기 제 1 제어 신호는 제 1 결과가 이용될 수 없음을 나타내는
    데이타 처리 시스템.
  10. 데이타 처리 시스템에서 데이타를 포착하는 방법에 있어서,
    ① 로직 유닛으로부터의 제 1 타겟 식별자를 구비하는 제 1 인스트럭션을 제공하는 단계와,
    ② 제 1 기능 유닛에서 상기 제 1 인스트럭션과 상기 제 1 타겟 식별자를 수신하는 단계와,
    ③ 상기 제 1 기능 유닛이 제 1 결과 식별자와 제 1 결과를 제공할 수 있도록 하고, 제 1 제어 신호를 선택적으로 부정할 수 있도록 하는 단계와,
    ④ 히스토리 버퍼에서 상기 제 1 결과 식별자를 수신하는 단계와,
    ⑤ 상기 히스토리 버퍼가 상기 제 1 기능 유닛의 출력을 상기 제 1 결과 식별자에 대해 감시할 수 있도록 하는 단계와,
    ⑥ 상기 히스토리 버퍼에서 상기 제 1 제어 신호를 수신하는 단계와,
    ⑦ 상기 제 1 결과 식별자가 제공되고 상기 제 1 제어 신호가 제 1 로직 상태에 있을 때, 상기 히스토리 버퍼가 상기 제 1 결과를 저장할 수 있도록 하는 단계와,
    ⑧ 상기 제 1 결과가 상기 레지스터 내에 저장하는데 사용될 수 없음을 나타내는 제 2 로직 상태로 상기 제 1 제어 신호를 배치하는 단계
    를 포함하되,
    상기 제 1 결과 식별자는 상기 제 1 인스트럭션에 의해 변경되는 레지스터를 식별하는
    데이타 처리 시스템의 데이타 포착 방법.
  11. 데이타 처리 시스템에서 데이타를 포착하는 방법에 있어서,
    ① 로직 유닛으로부터의 제 1 타겟 식별자를 구비하는 제 1 인스트럭션을 제공하는 단계와,
    ② 제 1 기능 유닛에서 상기 제 1 인스트럭션과 상기 제 1 타겟 식별자를 수신하는 단계와,
    ③ 상기 제 1 기능 유닛이 제 1 결과 식별자와 제 1 결과를 제공할 수 있도록 하고, 제 1 제어 신호를 선택적으로 부정할 수 있도록 하는 단계와,
    ④ 히스토리 버퍼에서 상기 제 1 결과 식별자를 수신하는 단계와,
    ⑤ 상기 히스토리 버퍼가 상기 제 1 기능 유닛의 출력을 상기 제 1 결과 식별자에 대해 감시할 수 있도록 하는 단계와,
    ⑥ 상기 히스토리 버퍼에서 상기 제 1 제어 신호를 수신하는 단계와,
    ⑦ 상기 제 1 결과 식별자가 제공되고 상기 제 1 제어 신호가 제 1 로직 상태에 있을 때, 상기 히스토리 버퍼가 상기 제 1 결과를 저장할 수 있도록 하는 단계
    를 포함하되,
    상기 제 1 제어 신호는 상기 제 1 결과가 사용될 수 있을 때까지 제 2 로직 상태로 유지하는
    데이타 처리 시스템의 데이타 포착 방법.
  12. 제 10 항에 있어서,
    ⑨ 제 2 기능 유닛을 상기 로직 유닛에 접속하여, 제 2 인스트럭션과 제 2 타겟 식별자를 수신하는 단계와,
    ⑩ 상기 제 2 기능 유닛이 제 2 결과 식별자와 제 2 결과를 제공할 수 있도록 하고, 제 2 제어 신호를 선택적으로 부정할 수 있도록 하는 단계
    를 더 포함하는 데이타 처리 시스템의 데이타 포착 방법.
  13. 데이타 처리 시스템에서 데이타를 포착하는 방법에 있어서,
    ① 로직 유닛으로부터의 제 1 타겟 식별자를 구비하는 제 1 인스트럭션을 제공하는 단계와,
    ② 제 1 기능 유닛에서 상기 제 1 인스트럭션과 상기 제 1 타겟 식별자를 수신하는 단계와,
    ③ 상기 제 1 기능 유닛이 제 1 결과 식별자와 제 1 결과를 제공할 수 있도록 하고, 제 1 제어 신호를 선택적으로 부정할 수 있도록 하는 단계와,
    ④ 히스토리 버퍼에서 상기 제 1 결과 식별자를 수신하는 단계와,
    ⑤ 상기 히스토리 버퍼가 상기 제 1 기능 유닛의 출력을 상기 제 1 결과 식별자에 대해 감시할 수 있도록 하는 단계와,
    ⑥ 상기 히스토리 버퍼에서 상기 제 1 제어 신호를 수신하는 단계와,
    ⑦ 상기 제 1 결과 식별자가 제공되고 상기 제 1 제어 신호가 제 1 로직 상태에 있을 때, 상기 히스토리 버퍼가 상기 제 1 결과를 저장할 수 있도록 하는 단계와,
    ⑧ 제 2 기능 유닛을 상기 로직 유닛에 접속하여, 제 2 인스트럭션 및 제 2 타겟 식별자를 수신하는 단계와,
    ⑨ 상기 제 2 기능 유닛이 제 2 결과 식별자, 제 2 결과를 제공할 수 있도록 하고, 제 2 제어 신호를 선택적으로 부정할 수 있도록 하는 단계와,
    ⑩ 상기 제 2 제어 신호가 제 2 로직 상태로 있는 동안, 상기 제 2 기능 유닛이 상기 제 2 결과를 제공할 수 있도록 하는 단계
    를 포함하는 데이타 처리 시스템의 데이타 포착 방법.
  14. 데이타 처리 시스템에서 데이타를 포착하는 방법에 있어서,
    ① 로직 유닛으로부터의 제 1 타겟 식별자를 구비하는 제 1 인스트럭션을 제공하는 단계와,
    ② 제 1 기능 유닛에서 상기 제 1 인스트럭션과 상기 제 1 타겟 식별자를 수신하는 단계와,
    ③ 상기 제 1 기능 유닛이 제 1 결과 식별자와 제 1 결과를 제공할 수 있도록 하고, 제 1 제어 신호를 선택적으로 부정할 수 있도록 하는 단계와,
    ④ 히스토리 버퍼에서 상기 제 1 결과 식별자를 수신하는 단계와,
    ⑤ 상기 히스토리 버퍼가 상기 제 1 기능 유닛의 출력을 상기 제 1 결과 식별자에 대해 감시할 수 있도록 하는 단계와,
    ⑥ 상기 히스토리 버퍼에서 상기 제 1 제어 신호를 수신하는 단계와,
    ⑦ 상기 제 1 결과 식별자가 제공되고 상기 제 1 제어 신호가 제 1 로직 상태에 있을 때, 상기 히스토리 버퍼가 상기 제 1 결과를 저장할 수 있도록 하는 단계와,
    ⑧ 상기 제 1 결과를 래치에 저장하는 단계와,
    ⑨ 상태 머신이 상기 제 1 제어 신호 및 상기 제 1 결과 식별자를 수신할 수 있도록 하고, 상기 제 1 결과가 상기 래치에 저장될 때를 나타내는 선택 신호를 선택적으로 생성할 수 있도록 하는 단계
    를 포함하는 데이타 처리 시스템의 데이타 포착 방법.
  15. 제 14 항에 있어서,
    ⑩ 상기 제 1 기능 유닛에 의해 제공된 데이타에 대응하는 상기 제 1 타겟 식별자와 상기 제 1 결과 식별자를 비교하여, 상기 제 1 타겟 식별자가 상기 제 1 결과 식별자에 대응하는 때를 판정하는 단계
    를 더 포함하는 데이타 처리 시스템의 데이타 포착 방법.
  16. 제 14 항에 있어서,
    ⑪ 상기 제 1 타겟 식별자가 상기 제 1 결과 식별자에 대응하고, 상기 제 1 제어 신호가 상기 제 1 로직 상태로 있을 때, 상기 제 1 결과가 상기 래치 내에 저장되는 때를 나타내는 상기 선택 신호를 선택적으로 생성하는 단계
    를 더 포함하는 데이타 처리 시스템의 데이타 포착 방법.
KR1019980022438A 1997-07-14 1998-06-15 데이타처리시스템및데이타처리시스템의데이타포착방법 KR100305935B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/892,589 1997-07-14
US8/892,589 1997-07-14
US08/892,589 US6070235A (en) 1997-07-14 1997-07-14 Data processing system and method for capturing history buffer data

Publications (2)

Publication Number Publication Date
KR19990013425A KR19990013425A (ko) 1999-02-25
KR100305935B1 true KR100305935B1 (ko) 2001-10-19

Family

ID=25400188

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019980022438A KR100305935B1 (ko) 1997-07-14 1998-06-15 데이타처리시스템및데이타처리시스템의데이타포착방법

Country Status (2)

Country Link
US (1) US6070235A (ko)
KR (1) KR100305935B1 (ko)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5398330A (en) * 1992-03-05 1995-03-14 Seiko Epson Corporation Register file backup queue
US6489971B1 (en) * 1999-12-07 2002-12-03 International Business Machines Corporation Graphical programming environment for deterministic finite state automata
US20020124157A1 (en) * 2001-03-01 2002-09-05 International Business Machines Corporation Method and apparatus for fast operand access stage in a CPU design using a cache-like structure
US6981083B2 (en) * 2002-12-05 2005-12-27 International Business Machines Corporation Processor virtualization mechanism via an enhanced restoration of hard architected states
US7293162B2 (en) * 2002-12-18 2007-11-06 Fujitsu Limited Split data-flow scheduling mechanism
EP1505491A3 (en) * 2003-08-06 2005-03-02 Agilent Technologies Inc Sequencer unit with instruction buffering
US20070186081A1 (en) * 2006-02-06 2007-08-09 Shailender Chaudhry Supporting out-of-order issue in an execute-ahead processor
US20160179828A1 (en) * 2014-12-19 2016-06-23 International Business Machines Corporation Revision management
US9740620B2 (en) * 2015-05-07 2017-08-22 International Business Machines Corporation Distributed history buffer flush and restore handling in a parallel slice design
US10241800B2 (en) 2015-06-16 2019-03-26 International Business Machines Corporation Split-level history buffer in a computer processing unit
US10592422B2 (en) 2017-12-15 2020-03-17 International Business Machines Corporation Data-less history buffer with banked restore ports in a register mapper
US10740140B2 (en) * 2018-11-16 2020-08-11 International Business Machines Corporation Flush-recovery bandwidth in a processor
CN114995884A (zh) * 2022-06-14 2022-09-02 平头哥(上海)半导体技术有限公司 指令退休单元、指令执行单元及相关装置和方法
CN114780464B (zh) * 2022-06-14 2022-09-23 湖南毂梁微电子有限公司 串行数据传输电路及数据传输方法

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5075840A (en) * 1989-01-13 1991-12-24 International Business Machines Corporation Tightly coupled multiprocessor instruction synchronization
US5185872A (en) * 1990-02-28 1993-02-09 Intel Corporation System for executing different cycle instructions by selectively bypassing scoreboard register and canceling the execution of conditionally issued instruction if needed resources are busy
US5261071A (en) * 1991-03-21 1993-11-09 Control Data System, Inc. Dual pipe cache memory with out-of-order issue capability
US5355457A (en) * 1991-05-21 1994-10-11 Motorola, Inc. Data processor for performing simultaneous instruction retirement and backtracking
US5363495A (en) * 1991-08-26 1994-11-08 International Business Machines Corporation Data processing system with multiple execution units capable of executing instructions out of sequence
US5345569A (en) * 1991-09-20 1994-09-06 Advanced Micro Devices, Inc. Apparatus and method for resolving dependencies among a plurality of instructions within a storage device
US5398330A (en) * 1992-03-05 1995-03-14 Seiko Epson Corporation Register file backup queue
US5450560A (en) * 1992-12-21 1995-09-12 Motorola, Inc. Pointer for use with a buffer and method of operation
GB2282473B (en) * 1993-10-02 1998-01-07 Motorola Inc A history buffer system
US5500943A (en) * 1993-11-02 1996-03-19 Motorola, Inc. Data processor with rename buffer and FIFO buffer for in-order instruction completion
US5649136A (en) * 1995-02-14 1997-07-15 Hal Computer Systems, Inc. Processor structure and method for maintaining and restoring precise state at any instruction boundary
US5805906A (en) * 1996-10-15 1998-09-08 International Business Machines Corporation Method and apparatus for writing information to registers in a data processing system using a number of registers for processing instructions
US5872949A (en) * 1996-11-13 1999-02-16 International Business Machines Corp. 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
US5887161A (en) * 1997-03-31 1999-03-23 International Business Machines Corporation Issuing instructions in a processor supporting out-of-order execution

Also Published As

Publication number Publication date
US6070235A (en) 2000-05-30
KR19990013425A (ko) 1999-02-25

Similar Documents

Publication Publication Date Title
US8074060B2 (en) Out-of-order execution microprocessor that selectively initiates instruction retirement early
US5961636A (en) Checkpoint table for selective instruction flushing in a speculative execution unit
US6237081B1 (en) Queuing method and apparatus for facilitating the rejection of sequential instructions in a processor
US7159154B2 (en) Technique for synchronizing faults in a processor having a replay system
KR100335745B1 (ko) 고성능의 추론적인 오정렬 로드 연산
US6442679B1 (en) Apparatus and method for guard outcome prediction
US6543002B1 (en) Recovery from hang condition in a microprocessor
CN100449499C (zh) 在微处理器恢复单元中进行写队列读数据的方法和装置
US6301655B1 (en) Exception processing in asynchronous processor
US10289415B2 (en) Method and apparatus for execution of threads on processing slices using a history buffer for recording architected register data
KR100305935B1 (ko) 데이타처리시스템및데이타처리시스템의데이타포착방법
US7603543B2 (en) Method, apparatus and program product for enhancing performance of an in-order processor with long stalls
US6192461B1 (en) Method and apparatus for facilitating multiple storage instruction completions in a superscalar processor during a single clock cycle
US20170109171A1 (en) Method and apparatus for processing instructions in a microprocessor having a multi-execution slice architecture
US20170109167A1 (en) Method and apparatus for restoring data to a register file of a processing unit
US10545765B2 (en) Multi-level history buffer for transaction memory in a microprocessor
JP3207124B2 (ja) カウント/リンク・レジスタ変更命令の投機実行をサポートする方法及び装置
US6925550B2 (en) Speculative scheduling of instructions with source operand validity bit and rescheduling upon carried over destination operand invalid bit detection
US5996085A (en) Concurrent execution of machine context synchronization operations and non-interruptible instructions
JP3182741B2 (ja) 分散命令完了方法及びプロセッサ
US6898696B1 (en) Method and system for efficiently restoring a processor's execution state following an interrupt caused by an interruptible instruction
US6473850B1 (en) System and method for handling instructions occurring after an ISYNC instruction
US5784606A (en) Method and system in a superscalar data processing system for the efficient handling of exceptions
US5850563A (en) Processor and method for out-of-order completion of floating-point operations during load/store multiple operations
US7844859B2 (en) Method and apparatus for instruction trace registers

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: 20050714

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee