KR19990072270A - 무순서동작시예외를트래킹하는장치를구비하는데이터처리시스템및그방법 - Google Patents

무순서동작시예외를트래킹하는장치를구비하는데이터처리시스템및그방법 Download PDF

Info

Publication number
KR19990072270A
KR19990072270A KR1019990001064A KR19990001064A KR19990072270A KR 19990072270 A KR19990072270 A KR 19990072270A KR 1019990001064 A KR1019990001064 A KR 1019990001064A KR 19990001064 A KR19990001064 A KR 19990001064A KR 19990072270 A KR19990072270 A KR 19990072270A
Authority
KR
South Korea
Prior art keywords
xer
data
instruction
iid
data storage
Prior art date
Application number
KR1019990001064A
Other languages
English (en)
Other versions
KR100335746B1 (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 KR19990072270A publication Critical patent/KR19990072270A/ko
Application granted granted Critical
Publication of KR100335746B1 publication Critical patent/KR100335746B1/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
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • 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
    • 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

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

본 발명은 정수 예외 레지스터(integer exception register; XER)를 리네임(rename)하기 위한 장치 및 그 방법에 관한 것이다. 파이프라인 구조를 가지는 중앙 처리 장치(CPU)에서, XER을 사용하거나 갱신(update)하는 정수 인스트럭션을 XER 리네임 메커니즘을 사용하여 무순서(out-of-order)로 실행할 수 있다. XER을 갱신하는 모든 인스트럭션은 레지스터 내에 저장된 연관된 인스트럭션 식별자(instruction identifier; IID)를 가진다. XER 내의 데이터를 사용하는 후속 인스트럭션은 저장된 IID를 사용하여, 저장된 IID에 대응하는 인스트럭션을 실행하여 XER 데이터가 갱신된 시간을 결정한다. XER 데이터를 갱신하는 각 인스트럭션이 실행되면, 상기 데이터가 XER 리네임 버퍼에 저장된다. 그 후 XER 데이터를 사용하는 인스트럭션은 리네임 버퍼로부터 갱신된 유효 XER 데이터를 구한다. 이러한 방법에 의해 이들 인스트럭션은 선행 인스트럭션의 처리가 종료되기 전에 유효 XER 데이터를 구할 수 있다. 저장된 IID로부터 파생된 인덱스를 사용하여 버퍼에 인덱스함으로써, XER 데이터가 XER 리네임 버퍼로부터 검색된다. 갱신된 XER 데이터는 인스트럭션 갱신이 종료되기 전에 리네임 버퍼에서 이용 가능하기 때문에, XER 데이터를 사용하거나 갱신하는 인스트럭션을 무순서로 실행할 수 있다.

Description

무순서 동작시 예외를 트래킹하는 장치를 구비하는 데이터 처리 시스템 및 그 방법 {A DATA PROCESSING SYSTEM HAVING AN APPARATUS FOR EXCEPTION TRACKING DURING OUT-OF-ORDER OPERATION AND METHOD THEREFOR}
본 발명은 일반적으로 데이터 처리 시스템에 관한 것으로, 구체적으로는 무순서 실행(out-of-order execution)을 수행하는 데이터 처리 시스템에 관한 것이다.
대량의 인스트럭션을 고속으로 실행하기 위한 컴퓨터가 개발됨에 따라, 이러한 실행 과정을 최적화하기 위한 다양한 형태의 아키텍처(architecture)가 개발되었다. 예를 들어, 축소 명령 세트 컴퓨터(reduced instruction set computer; RISC) 장치는 인스트럭션 실행시 병렬성(parallelism)은 더 크면서 인스트럭션의 수는 더 작게 사용하여, 종래 더 많은 수의 데이터 처리 시스템을 사용하여 얻어지는 연산 결과보다 훨씬 빠른 속도로 연산 결과를 얻을 수 있다. 일부 데이터 처리 시스템은 인스트럭션의 병렬 처리 능력을 증가시키는 것 이외에도 인스트럭션을 무순서로 처리하여, 프로세서의 성능을 증대시킨다. 인스트럭션을 무순서로 실행함으로써, 아직 해결되지 않은 데이터 종속성을 가지는 인스트럭션 스트림(instruction stream) 내의 선행 인스트럭션이 실행되기 전에 어떠한 데이터 종속성 없이 디스패치(dispatch)된 인스트럭션이 동적으로 실행되도록 하여 프로세서 성능을 증가시킨다. 일부 데이터 처리 시스템에서는, 인스트럭션의 실행이 종료되면 인스트럭션을 리네임하고, 재정렬화 버퍼(re-order buffer)라고 불리는 인스트럭션 순차 목록표(instruction sequencing table)에서 재정렬화 인스트럭션을 실행하여 인스트럭션의 무순서 실행을 용이하게 한다.
또한 추론적(speculative) 인스트럭션을 실행하는데 재정렬화 버퍼 장치가 사용된다. 그러므로 추론적 인스트럭션 실행을 지원하는 데이터 처리 시스템은 비교적 소형인 하드웨어를 추가하여 인스트럭션을 무순서로 실행하기에 적합하다. 이렇게 추가된 하드웨어의 일부는 명령이 발행(issue)되어야 하는 시간 및 순서를 결정하기 위해 사용되는 논리(logic)를 포함한다. 이러한 발행 논리는 매우 복잡할 수 있으며, 이는 인스트럭션이 실행될 파이프라인 상태의 종속성 및 인스트럭션을 검사하여 명령이 발행되어야 할 시간을 결정해야 하기 때문이다. 발행 논리가 적절하게 설계되지 않은 경우에는, 이러한 발행 논리가 데이터 처리 시스템의 중요한 경로가 될 수 있으며, 인스트럭션을 실행하는 빈도 수를 제한하기 때문에 무순서 발행에 의해 달성될 수 있는 성능 이득이 무시될 수 있다.
종래 기술 시스템에서는 많은 경우에, 인스트럭션을 무순서 실행함으로써 아직 해결되지 않은 데이터 종속성을 가지는 인스트럭션 스트림 내의 선행 인스트럭션이 실행되기 전에 어떠한 데이터 종속성도 없이 디스패치된 인스트럭션이 동적으로 실행되도록 하여 프로세서 성능을 증가시켜왔다. 예를 들어 소프트웨어에 의해 액세스 가능하며, 구조화된 장치의 선택된 비트를 리네임하는 레지스터 파일 리네임, 및 인스트럭션 순차 목록표(재정렬화 버퍼)는 인스트럭션의 종료 시점에서 재정렬화 인스트럭션을 실행함으로써 무순서 실행을 용이하게 한다. 이러한 구조에 대한 더 많은 정보를 원한다면, R. M. Tomasulo의 "An Efficient Algorithm for Exploiting Multiple Arithmetic Units"(IBM JOURNAL, Jan. 1967. pp. 25-33)를 참조하라. 또한 이러한 장치를 사용하여 추론적 인스트럭션이 실행되도록 한다는 것에 유의해야 한다. 그러므로 추론적 인스트럭션 실행을 지원하는 시스템 아키텍처는 비교적 "소형"인 하드웨어 및 얼마간의 오버헤드(overhead) 비용을 추가함으로써 인스트럭션을 무순서로 실행하기에 적합할 수 있다. 따라서 레지스터 파일을 리네임함으로써, 추론적 인스트럭션 실행 구조를 변경하지 않고 인스트럭션의 무순서 실행을 지원할 수 있다.
구조화 정수 예외 레지스터(integer exception register; XER)를 변경하거나 사용하는 인스트럭션은 단지 하나의 정수 예외 레지스터를 포함하는 프로세서에서 한번에 하나씩 실행되어야 한다. 이러한 경우에, 인스트럭션 갱신이 종료되고 그 후 구조화된 레지스터가 유효한 경우에만 데이터 종속성이 해결된다. 이러한 인스트럭션으로서 대표적인 것으로 XER의 내용을 사용하거나 변경하는 고정 소수점 인스트럭션(fixed point instruction)이 있다. XER은 정수 인스트럭션 실행을 보고하고 조건 지정하는 데이터 값을 포함한다. 그러므로 XER을 갱신하거나 사용할 필요가 있는 하나 이상의 인스트럭션이 존재하는 경우, 이들 인스트럭션은 소프트웨어 프로그램에 따라 순서대로 실행되어야 하며, 이는 고정 소수점 연산시 병목현상을 야기할 수 있다. 위에서 기술한 방법은 XER을 갱신하거나 사용하는 인스트럭션을 무순서로 실행하기에 적합하지 않거나 간단하게 변경될 수 없다. XER이 스틱(sticky) 상태 데이터 값을 포함하기 때문에, 종래의 리네임 방법에서는 XER을 사용하거나 갱신하는 인스트럭션을 무순서로 실행할 수 없었다. 스틱 상태 데이터는 실행 중인 인스트럭션에 의해 설정되고 소프트웨어에 의해 재설정될 때까지 유지되는 데이터 값이다. 따라서 XER을 갱신하거나 사용하는데 필요한 각 인스트럭션이 무순서로 실행되도록 하여, 그 결과 인스트럭션 실행 병렬성 및 프로세서 성능을 향상시키는 리네임 장치 및 방법이 필요하다.
위에서 기술한 필요성은 본 발명에 의해 해결된다. 따라서 제1 태양에서는 데이터 프로세서에서 인스트럭션 실행의 병렬성을 증가시키는 방법이 제공된다. 본 발명에 의한 방법은 인스트럭션 식별자(instruction identifier; IDD)를 제1 데이터 저장 버퍼에 기록하는 단계를 포함한다. 인스트럭션 식별자에 대응하는 인스트럭션이 그 실행을 종료하면, 이에 따라 생성된 하나 이상의 실행 조건 데이터 값(execution condition data value)이 제2 데이터 저장 버퍼에 기록된다. 한 세트의 실행 조건 데이터 값은 다음 인스트럭션에 응답하여, 제1 데이터 저장 버퍼에 저장된 인스트럭션 식별자를 사용하여 제2 데이터 저장 버퍼로부터 검색(retrieve)된다.
또한 본 발명의 제2 태양에서는 인스트럭션 실행의 병렬성을 증가시키는 데이터 처리 장치가 제공된다. 데이터 처리 장치는 인스트럭션 식별자를 포함하는 제1 데이터 저장 버퍼를 포함한다. 제1 데이터 저장 버퍼에 액세스하기 위한 회로는 제1 데이터 저장 버퍼 및 하나 이상의 실행 조건 데이터 값 세트를 포함하는 제2 데이터 저장 버퍼와 연결되며, 상기 실행 조건 데이터 값은 각각 선행 인스트럭션 식별자와 연관된 인스트럭션에 응답하여 생성된다. 제2 데이터 저장 버퍼, 및 제1 데이터 저장 버퍼에 액세스하기 위한 회로와 연결된 회로는 제2 데이터 저장 버퍼로부터 실행 조건 데이터 값 세트 중 하나를 검색한다.
최종적으로 본 발명의 제3 태양에서는 복수의 인스트럭션과 통신하기 위한 입력 회로를 포함하는 데이터 처리 시스템이 제공된다. 조건 논리 회로는 하나 이상의 복수 인스트럭션에 응답하여 하나 이상의 조건 예외 값(condition exception value)을 생성시킨다. 리네임 논리는 조건 논리 회로와 연결된 회로이며, 여기서 리네임 논리 회로는 하나 이상의 실행 예외 값(execution exception value) 세트를 포함하는 데이터 저장 버퍼를 포함한다. 또한 데이터 처리 시스템은 리네임 논리 회로와 연결된 예외 레지스터를 포함하며, 여기서 예외 레지스터는 제1 데이터 저장 버퍼에 포함된 하나 이상의 예외 조건 값 세트를 수신한다.
상기 특징과 기타 다른 특징 및 이점은 첨부된 도면을 참조하여 다음의 상세한 설명을 통해 보다 명확하게 이해할 수 있을 것이다. 그러나 이들 도면에 의해 본 발명이 제한되는 것은 아니다.
도 1은 본 발명의 일 실시예에 따른 데이터 처리 시스템을 예시하는 블록도이다.
도 2는 본 발명의 실시예에 따른 중앙 처리 장치를 예시하는 블록도이다.
도 3은 본 발명의 실시예에 따라 구현된 무순서 XER 리네임 장치를 예시하는 블록도이다.
도 4는 본 발명의 실시예에 따른 XER 갱신 실행 방법을 예시하는 순서도이다.
도 5는 본 발명의 실시예에 따른 무순서 XER 사용을 예시하는 순서도이다.
본 발명은 XER을 갱신하거나 사용할 필요가 있는 하나 이상의 인스트럭션이 존재하는 정수 단위 인스트럭션의 무순서 실행을 지원하는 XER 리네임 메커니즘을 제공한다. 본 발명은 XER을 갱신하거나 사용할 필요가 있는 모든 인스트럭션이 동시에 실행되도록 한다.
본 발명의 동작에 대하여 아래에서 보다 상세하게 기술한다. 그러나 설명을 시작하기 전에, 본 발명에 의한 소자의 연결 관계에 대하여 기술한다.
아래의 설명에서, 특정 단어 또는 바이트 길이 등과 같은 여러 가지 구체적인 내용의 상세한 설명을 통해 본 발명에 대한 완전한 이해를 돕는다. 그러나 당업자들은 이러한 구체적인 상세한 설명 없이 본 발명이 실시될 수 있다는 것을 이해할 수 있을 것이다. 다른 경우에, 공지된 회로에 대하여 불필요하게 상세히 기술함으로써 본 발명의 내용이 불명료해지는 것을 방지하기 위해 블록도의 형태로 도시되어 있다. 대부분의 경우, 타이밍 고려 등에 관련된 상세한 설명은 이러한 상세한 설명이 본 발명을 완전히 이해하는데 있어서 불필요하고 관련 기술분야의 당업자에게 익숙하고 꼭 필요하지 않은 범위 내에서 생략되어 있다. 아래에서 도면을 참조하여 설명하며, 다수의 도면에 있어서 동일한 참조부호는 유사하거나 동일한 구성요소를 나타내며, 도시된 구성요소의 크기가 실제 구성요소의 크기를 표시하는 것은 아니다.
도 1을 참조하면, 본 발명에서 사용될 수 있는 데이터 처리 시스템(100)의 실시예가 도시된다. 본 발명에 의한 시스템은 Cathy May 등의 "The PowerPC Architecture: A Specification for a New Family of Risk (RISC) Processors"(2nd ed., 1994)에 따른 PowerPC 마이크로프로세서("PowerPC"는 IBM사의 등록상표임)와 같은 중앙 처리 장치(central processing unit; CPU, 110)를 구비하며, 상기 참조 문헌은 본 발명에 참조되어 본 명세서의 일부를 이룬다. PowerPC 마이크로프로세서의 보다 구체적인 구현에 대한 설명은 IBM사의 "PowerPC 604 Risk Microprocessor User's Manual"(1964)에 기술되어 있으며, 상기 참조문헌은 명세서의 일부를 이룬다. 본 발명의 XER 리네임 메커니즘이 CPU(110)에 포함되어 있다. CPU(110)는 시스템 버스(112)에 의해 여러 가지 다른 구성요소와 연결되어 있다. ROM(read only memory; 116)는 시스템 버스(112)와 연결되어 있으며, 데이터 처리 시스템(100)의 특정 기본적인 기능을 제어하는 기본 입/출력 시스템(basic input/output system; BIOS)을 포함한다. 또한 RAM(random access memory; 114), I/O 어댑터(118) 및 통신용 어댑터(134)가 시스템 버스(112)와 연결된다. I/O 어댑터(118)는 디스크 저장 장치(120)와 통신하는 소형 컴퓨터 시스템 인터페이스(small computer system interface; SCSI)용 어댑터일 수 있다. 통신용 어댑터(134)가 버스(112)를 통해 외부의 네트워크와 연결되어 있기 때문에, 데이터 처리 시스템은 이러한 다른 시스템과 통신할 수 있다. 또한 I/O 장치는 사용자 인터페이스용 어댑터(122) 및 디스플레이용 어댑터(136)를 통해 시스템 버스(112)와 연결된다. 키보드(124), 트랙 볼(track ball; 132), 마우스(126), 및 스피커(128)는 모두 사용자 인터페이스용 어댑터(122)를 통해 버스(112)와 연결된다. 디스플레이 모니터(138)는 디스플레이용 어댑터(136)를 통해 시스템 버스(112)와 연결된다. 사용자는 키보드(124), 트랙 볼(132), 또는 마우스(126)를 통해 시스템에 입력할 수 있으며, 스피커(128) 및 디스플레이(138)를 통해 시스템으로부터의 출력을 수신할 수 있다. 추가적으로 AIX("AIX"는 IBM사의 등록상표임)와 같은 운영 체제(operating system)를 사용하여 도 1에 도시된 여러 가지 구성요소의 기능을 조정한다. 본 발명에서는 비교, 유효화(validating), 선택 또는 조작원과 연관될 수 있는 다른 용어와 같은 용어들에 대하여 기술하고 있다는 것에 유의해야 한다. 그러나 본 발명의 일부를 이루며 기술된 동작 중 적어도 다수의 동작에 있어서, 오퍼레이터에 의한 어떠한 행동도 결코 바람직하지 않다. 여기에서 기술된 동작은 대부분 다른 전기 신호를 생성하기 위한 기계의 동작 처리 전기 신호(machine operating processing electrical signals)이다.
도 2는 CPU(110)에 대하여 상세하게 설명한다. CPU(110)의 일부는 인스트럭션 캐시(instruction cache; I-캐시; 202), 인스트럭션 유닛/분기 유닛(instruction unit/branch unit; 204), 고정 소수점 실행 유닛(fixed point execution unit; FXU; 206), 로드/저장 유닛(load/store unit; 208), 부동 소수점 유닛(floating point unit; FPU; 210), 데이터 캐시(data cache; D-캐시; 212), 및 도 1의 버스(112)와 인터페이스하는 버스 인터페이스 유닛(bus interface unit; BIU; 214)을 포함한다. I-캐시(202)는 인스트럭션 유닛/분기 유닛(204)과 연결되어, 복수의 인스트럭션 내의 제어 정보와 통신한다. 인스트럭션 유닛/분기 유닛(204)은 FXU(206), 로드/저장 유닛(208), 및 FPU(210)와 각각 연결되어 복수의 디스패치된 인스트럭션을 제공한다. I-캐시(202)는 버스 인터페이스 유닛(214)과 연결되어 데이터를 통신하고 정보를 제어한다. FXU(206)는 로드/저장 유닛(208)과 연결되어 적재 데이터 값, 저장 데이터 값, 및 전송 데이터 값을 교환한다. 로드/저장 유닛(208)은 FPU(210)과 연결되어, 저장 데이터 값, 및 로드 데이터 값을 교환한다. 또한 로드/저장 유닛(208)은 D-캐시(212)와 연결되어 로드/저장 신호, 복수의 데이터 값 및 어드레스 값을 요구한다. D-캐시(212)는 버스 인터페이스 유닛(214)과 연결되어 데이터를 입력 신호와 출력 신호 및, 제어 신호와 통신한다.
도 3은 본 발명의 원리에 따른 XER 리네임 메커니즘(300)을 예시한다. XER 리네임 메커니즘은 FXU(206)과 일체로 형성된다. FXU(206)를 향하는 인스트럭션은 I-캐시(202)로부터 검색되어 실행/분기 유닛(204)에 의해 인스트럭션 큐(instruction queue; 301)에 로드된다. 인스트럭션 큐(301)는 FXU(206)에 의해 수행될 하나의 정수 인스트럭션 스택을 포함한다. 인스트럭션 큐(301)의 깊이는 소정의 값인 M이 될 수 있다. 인스트럭션 큐(301) 내의 각 엔트리(entry)는 통상 2진 형태로 된 기계 인스트럭션 부분(302)을 포함한다. 각 인스트럭션은 발행 유닛(204)에 의해 할당된 인스트럭션 식별화(instruction identification; IID) 유닛을 포함한다. 인스트럭션이 실행과 동시에 XER을 갱신하면, 상기 XER의 IID가 인스트럭션 큐 엔트리의 다른 부분인 IID 필드(303)에 포함된다. IID는 또한 XER 상태 레지스터(304)에 저장된다. IID는 XER 상태 레지스터(304) 내의 XER IID 필드(305)에 저장된다. 인스트럭션이 XER을 갱신하지 않으면, XER IID(303) 및 XER IID(305)는 XER을 갱신한 최종 선행 인스트럭션의 IID를 포함한다. XER 상태 레지스터(304)는 또한 유효화 필드(validity field)인 유효 플래그(valid flag; 306)를 포함한다. 유효 플래그(306)의 폭은 1비트가 될 수 있다. 따라서 설명의 편의를 위해 유효 플래그(306)를 유효화 비트(306)라 부르기도 한다. 그러나 본 발명의 원리에 따라, 대안적인 실시예에서의 유효 플래그(306)의 폭은 소정의 비트 수인 M이 될 수 있다. 이러한 필드에 대해서는 이하에서 보다 상세하게 기술한다.
CPU(110)는 파이프라인 방식으로 동작한다. 다중 인스트럭션은 실행 유닛/분기 유닛(204)에 의해 I-캐시(202)로부터 FXU 유닛(206)과 같은 실행 유닛으로 디스패치된다. 실행 유닛이 파이프라인화된 인스트럭션 버퍼를 관리하기 때문에, 인스트럭션의 모든 오퍼랜드가 유효화되는 즉시 인스트럭션이 전송되어 실행된다. 인스트럭션 큐(301)는 이러한 파이프라인형 큐(queue)이다. 실행을 위한 다음 인스트럭션이 멀티플렉서(MUX; 307)로 전송된다. 동시에 이러한 인스트럭션에 대응하는 XER IID가 MUX(308)로 전송된다. 또한 MUX(307, 308)는 발행 유닛(204)으로부터 인스트럭션 및 대응 IID를 각각 수신한다. 인스트럭션 큐(301)가 비어있는 상태이면, MUX(307)는 분기 유닛(204)으로부터의 인스트럭션을 선택하고, MUX(308)는 최종 인스트럭션의 통과된 IID를 선택하여 통과된 인스트럭션일 수 있는 XER을 변경한다. 인스트럭션 선택 논리(309)는 MUX(307, 308)를 제어한다.
실행을 위해 선택된 인스트럭션은 MUX(307)을 통과하여, 디코드 논리/오퍼랜드 레지스터(decode logic/operand register; 310)로 전송된다. 그 후 디코딩된 인스트럭션 및 오퍼랜드는 고정 소수점 실행 엔진(311)으로 전송된다. 또한 현재 실행 중인 인스트럭션이 요구하는 모든 XER 데이터는 XER 데이터 레지스터(319)로부터 고정 소수점 실행 엔진(311)으로 전송된다. 고정 소수점 실행 엔진(311)으로부터 출력된 정수 데이터는 로드/저장 유닛(208)으로 전송되고 또한 디코드 논리/오퍼랜드 레지스터(310)로 되돌아간다.
실행 중인 인스트럭션에 의해 요구되는 XER 데이터는 몇 개의 소스 중 하나의 소스로부터 파생될 수 있다. XER 선택 논리(312)는 MUX(308)로부터 IID를 수신하고, 고정 소수점 실행 엔진(311)으로부터 종료용 인스트럭션의 IID를 수신한다. XER 선택 논리(312)는 제어 신호를 MUX(313)로 출력한다. XER 데이터를 선택하여 고정 소수점 실행 엔진(310)으로 전송하기 위한 XER 선택 논리(312) 및 MUX(313)의 동작에 대해서는 이하에서 상세하게 기술한다.
MUX(313)은 다수의 소스로부터 XER 데이터를 수신한다. 인스트럭션 큐(301)는 XER 데이터 필드(314)를 포함한다. 인스트럭션이 인스트럭션 큐(301)에 로드되는 경우, 이러한 인스트럭션에 의해 XER이 갱신되면 인스트럭션 큐(301)는 고정 소수점 실행 엔진(311)으로부터 그 당시의 종료용 인스트럭션의 XER 데이터를 수신한다. 현재 실행 중인 인스트럭션에 의해 XER이 갱신되지 않으면, 요구된 XER 데이터에 대하여 XER 리네임 버퍼(315)를 조사한다. 이것은 종료 IID 버퍼(316)를 사용하는 내용 주소화 메모리(content addressable memory; CAM)에 의해 구현된다. 종료 IID 버퍼(316)는 XER 데이터 값을 변경한 종료된 인스트럭션의 IID를 포함한다. XER 리네임 버퍼(315) 내로 판독된 CAM은 CAM 논리(317)에 의해 구현된다.
실행될 준비가 되어 있는 다음번 대기 인스트럭션(queued instruction)은 XER 데이터(314) 내의 상기 XER 데이터를 가져온다. 또한 MUX(313)는 XER 리네임 버퍼(315)로부터 XER 데이터를 수신한다. 각 인스트럭션이 실행을 종료하면, 고정 소수점 실행 엔진(311)은 종료용 인스트럭션에 의해 갱신된 XER 데이터를 XER 리네임 버퍼(315)로 전송한다. 또한 XER 데이터는 인스트럭션 큐(301)로 전송되며, 상기 인스트럭션 큐(301) 내의 XER 데이터 필드(314)는 상기 인스트럭션을 수신한다. 해당 인스트럭션의 IID는 종료 IID 버퍼(316)에 저장된다. 종료 IID 버퍼(316)와 XER 리네임 버퍼(315)의 깊이는 동일할 수 있으며, 그 값은 소정의 값인 N이 될 수 있다. 종료된 인스트럭션에 대응하는 XER 데이터 및 상기 인스트럭션에 대한 IID가 XER 리네임 버퍼(315) 및 종료 IID 버퍼(316) 내의 동일한 상대적 위치에 각각 저장된다. 인스트럭션이 종료되면, 상기 인스트럭션과 연관된 XER 데이터가 XER(318)로 전송된다. 또한 XER 레지스터(318)는 XER 데이터를 MUX(313)로 제공한다. 미처리된 인스트럭션에 의해 요구되는 XER 데이터에 영향을 미치는 최종 인스트럭션이 MUX(307)의 입력단에서 종료되면, XER 레지스터(318)의 상태가 유효하며 상기 미처리 인스트럭션에 의해 사용가능하게 된다. MUX(313)는 XER 선택 논리(312)로부터의 출력에 응답하여 하나의 입력 소스로부터 XER 데이터를 출력한다. 선택 논리(312)는 종료용 IID를 MUX(308)를 통해 수신된 XER IID와 비교하여, XER 데이터 소스를 선택한다. 선택 논리(312)는 XER 데이터의 종속성을 해결하기 위해, 다음 인스트럭션이 고정 소수점 엔진(311)의 출력을 스누핑하도록 해주는 것이 효과적이다. 이러한 방법을 통해 본 발명의 원리에 따른 XER 리네임 메커니즘은 유효 XER 데이터가 리네임 버퍼에 나타날 때까지 인스트럭션이 큐에서 대기해야 하는 필요성을 줄여준다. 더욱이 XER(318)이 유효 데이터를 가지면, 유효화 비트(306)는 이러한 데이터를 선택하도록 선택 논리(312)에 통지한다. 상기 데이터는 고정 소수점 엔진(311) 내의 현재 실행 중인 인스트럭션을 사용할 수 있는 XER 데이터 레지스터(319)로 래치(latch)된다.
실행/분기 유닛(204)은 2개의 인스트럭션을 각 인스트럭션 사이클로 발행할 수 있다. 따라서 FXU(206)는 2개의 인스트럭션을 각 사이클에서 회수하며, 그리하여 2개의 고정 소수점 엔진(311a, 311b)이 XER 리네임 메커니즘(300)에 포함된다. 이와 마찬가지로 MUX(307a, 308a)는 MUX(307b, 308b) 내에, 인스트럭션 선택 논리(309a)는 인스트럭션 선택 논리(309b) 내에, 디코드 논리 오퍼랜드 레지스터(310b)는 디코드 논리/오퍼랜드 레지스터(310b) 내에서 복제(duplicated)된다. MUX(313a) 및 MUX(313b)는 고정 소수점 엔진(311a, 311b)으로부터 XER 데이터를 수신한다. 유사한 원리로 XER 선택 논리(312a)는 고정 소수점 엔진(311a) 및 엔진(311b)으로부터 종료용 IID를 수신하고, XER 선택 논리(312b)는 고정 소수점 엔진(311a) 및 엔진(311b)으로부터 종료용 IID를 수신한다. 이와 유사한 원리로, XER 리네임 버퍼(315)는 고정 소수점 엔진(311)으로부터 XER 데이터를 수신한다.
도 4를 참조함으로써 XER 리네임 메커니즘(300)의 동작을 보다 잘 이해할 수 있을 것이다. 도 4는 XER 리네임 메커니즘(300)의 동작을 순서도의 형태로 예시한다. 단계(400)에서 고정 소수점 실행 유닛(206)으로 인스트럭션이 디스패치되면, 단계(401)에서 고정 소수점 실행 유닛(206)은 XER을 변경하고, 단계(402)에서 상기 XER의 IID가 XER 상태 레지스터(304) 내의 XER IID(305)에 기록된다. 동시에 유효 플래그(306)가 턴온된다. 단계(403)에서 인스트럭션이 아직 실행될 준비가 되어 있지 않으면, 단계(404)에서 상기 인스트럭션은 인스트럭션 큐(301)로 기록된다. 단계(403)에서 인스트럭션이 실행될 준비가 되어 있으면, 단계(405)에서 상기 인스트럭션은 고정 소수점 실행 엔진(311)으로 전송된다. 단계(406)에서 인스트럭션은 실행될 준비가 될 때까지 인스트럭션 큐(301)에 보관된다. 인스트럭션이 실행될 준비가 되면, 상기 인스트럭션은 고정 소수점 실행 엔진(311)으로 전송되어 단계(405)의 과정을 실행한다. 인스트럭션의 실행이 종료되면, 단계(407)에서 그 결과로 발생된 XER 데이터가 XER 리네임 버퍼(315)에 기록되고, 인스트럭션의 IID가 종료 IID 버퍼(316)에 기록된다. 동시에 실행될 준비가 되어 있는 다음 인스트럭션의 XER 데이터는 인스트럭션 큐(301) 내의 XER 데이터 필드(314)에 기록된다. 그러나 인스트럭션 큐(301)는 비어 있을 수 있으며, 실행될 다음 인스트럭션은 MUX(307)를 통과할 수 있다. 이러한 인스트럭션은 XER 데이터를 사용할 수 있으며, 이에 대하여 아래에서 기술한다. 단계(408)에서 인스트럭션이 종료되면, XER 데이터는 XER 리네임 버퍼(315)로부터 판독되어 구조화된 XER(318)에 기록된다.
그럼에도 불구하고 XER 데이터를 갱신하지 않는 인스트럭션이 XER 데이터를 사용할 수 있다. XER 데이터를 사용하는 인스트럭션에 대한 XER 리네임 메커니즘(300)의 동작이 순서도의 형태로 예시된 도 5를 참조하여 설명한다. 단계(500)에서, XER 데이터를 갱신하지도 사용하지도 않는 인스트럭션은 단계(501)에서 XER 리네임 과정을 거치지 않고 실행된다. 그렇지 않으면, 단계(502)에서 XER 데이터를 갱신하기 위해, 인스트럭션은 XER 리네임 레지스터(304)를 판독하여 최종 선행 인스트럭션의 IID를 구하며, 또한 유효화 비트(307)의 값을 검색한다. 단계(503)에서, XER 데이터가 리네임 버퍼(315)에 존재하지 않으면, 다시 말해 유효화 비트(307)가 오프되면, 구조화된 XER(318) 내의 XER 데이터가 유효화 되고 인스트럭션은 리네임 버퍼(315)로부터의 XER 데이터를 검색하지 않는다. 단계(504)에서 구조화된 XER(318)로부터 XER 데이터가 판독된다. 이것은 유효화 비트(306)를 선택 논리(312)에 제공함으로써 구현된다.
그러나 단계(503)에서 유효화 비트(306)가 설정되면, 단계(505)에서 CAM 판독이 이루어진다. 단계(502)에서 검색된 XER IID를 사용하여 종료 IID 버퍼(316)에서 CAM 판독이 이루어진다. IID가 종료 IID 버퍼(316) 내에 있으면, 단계(506)에서 상기 IID의 상관 어드레스(relative address)를 사용하여 XER 리네임 버퍼(315) 내의 대응 XER 데이터에 액세스한다. 단계(505)에서 CAM 판독 과정 중에 종료 IID 버퍼(316) 내에서 XER IID가 발견되지 않으면, 단계(507)에서 단계(502)에서 검색된 XER IID가 현재 종료용 인스트럭션의 IID인지를 결정하기 위해 테스트된다. 이러한 동작은 XER 선택 논리(312)에 의해 구현될 수 있다. 단계(502)에서 검색된 XER IID가 종료된 IID인 경우에는, 단계(508)에서 MUX(313)를 통해 고정 소수점 실행 엔진(311)으로부터의 XER 데이터를 사용한다. 단계(509)에서 인스트럭션이 실행될 준비가 되어 있으면, 단계(510)에서 XER 데이터는 다음 실행 사이클에서 사용되기 위하여 래치된다.
그렇지 않으면, 단계(511)에서 인스트럭션이 인스트럭션 큐(301)에 기록된다. 단계(512)에서 단계(504), (506) 또는 (508) 중 임의의 단계로부터 XER 데이터가 사용 가능한 경우, 단계(513)에서 상기 XER 데이터가 인스트럭션 큐(301) 내의 필드(314)에 기록된다. 그렇지 않으면, 단계(514)에서 XER 선택 논리(312)를 사용하여 들어오는 종료된 IID와 인스트럭션 큐(301) 내의 XER IID(303)를 비교한다. 매칭이 이루어지지 않으면, 과정은 단계(512)로 되돌아간다. 그러나 단계(514)에서 매칭이 이루어지면 단계(515)에서 종료중인 IID에 종속되는 인스트럭션이 실행될 준비가 되고, 그 후 단계(510)에서 XER 데이터가 래치되어 다음 실행 사이클에서 사용된다. 그리고 나서 단계(517)에서 인스트럭션이 실행된다. 그러나 단계(515)에서 인스트럭션이 실행될 준비가 되어 있지 않고 단계(516)에서 XER 데이터가 인스트럭션 큐에 기록되어 있지 않으면, 단계(513)에서 XER 데이터가 인스트럭션 큐에 기록된다. 단계(516)에서 XER 데이터가 인스트럭션 큐에 기록되어 있으면, 단계(516)의 과정은 단계(515)에서 인스트럭션이 실행될 준비가 될 때까지 반복된다.
본 발명 및 본 발명의 장점에 대하여 상세하게 기술하였지만, 첨부되는 특허청구범위에 기술되어 있는 본 발명의 사상과 범위를 벗어나지 않고 본 발명에 대하여 여러 가지 수정, 대체 및 변경을 가할 수 있다는 것을 이해해야 한다.
본 발명에 따라 데이터 프로세서의 인스트럭션 실행 병렬성을 증가시키는 방법 및 데이터 처리 장치가 제공되며, 복수의 인스트럭션과 통신하기 위한 입력 회로를 포함하는 데이터 처리 시스템이 제공된다.

Claims (38)

  1. 데이터 프로세서에서 인스트럭션 실행 병렬성을 증가시키는 방법에 있어서,
    a) 인스트럭션 식별자를 제1 데이터 기억 장치에 기록하는 단계;
    b) 상기 인스트럭션 식별자에 대응하는 인스트럭션의 실행이 종료되면 하나 이상의 실행 조건 데이터 값을 하나 이상의 기억 위치를 가지는 제2 데이터 기억 장치에 기록하는 단계; 및
    c) 상기 인스트럭션 식별자를 사용하여 상기 하나 이상의 실행 조건 데이터 값을 구하는 단계
    를 포함하는 인스트럭션 실행 병렬성 증가 방법.
  2. 제1항에 있어서,
    상기 인스트럭션의 실행이 종료되는 즉시, 상기 조건 데이터 값을 제3 데이터 기억 장치에 기록하는 단계를 추가로 포함하는 인스트럭션 실행 병렬성 증가 방법.
  3. 제1항에 있어서,
    상기 인스트럭션 식별자를 하나 이상의 기억 위치를 가지는 제4 데이터 기억 장치에 기록하는 단계를 추가로 포함하는 인스트럭션 실행 병렬성 증가 방법.
  4. 제1항에 있어서,
    상기 제1 데이터 기억 장치에서 하나 이상의 유효화 비트(validity bit)를 설정하는 단계를 추가로 포함하는 인스트럭션 실행 병렬성 증가 방법.
  5. 제1항에 있어서,
    상기 실행 조건 데이터 값을 인스트럭션 큐 및 데이터 멀티플렉서(data multiplexer)로 라우팅(routing)하는 단계를 추가로 포함하는 인스트럭션 실행 병렬성 증가 방법.
  6. 제1항에 있어서,
    상기 인스트럭션 식별자를 사용하여 상기 하나 이상의 실행 조건 데이터 값을 구하는 단계가
    a) 상기 인스트럭션 식별자를 상기 제4 데이터 기억 장치에 미리 저장된 복수의 각 인스트럭션 식별자와 비교하는 단계; 및
    b) 매칭이 이루어지는 경우에는 구해진 인덱스 값을 사용하여 상기 제2 데이터 기억 장치 내로 인덱스하는 단계
    를 추가로 포함하는 인스트럭션 실행 병렬성 증가 방법.
  7. 제6항에 있어서,
    상기 하나 이상의 실행 조건 데이터 값을 구하는 단계가 상기 제1 데이터 기억 장치 내의 적어도 하나의 유효화 비트 데이터 값에 응답하여 구조화된 레지스터로부터 상기 하나 이상의 실행 조건 데이터 값을 구하는 단계를 추가로 포함하는 인스트럭션 실행 병렬성 증가 방법.
  8. 제1항에 있어서,
    상기 제1 데이터 기억 장치가 정수 예외 레지스터(integer exception register; XER) 상태 레지스터이며,
    상기 XER 상태 레지스터가 복수의 데이터 저장 필드를 가지는
    인스트럭션 실행 병렬성 증가 방법.
  9. 제1항에 있어서,
    상기 제2 데이터 기억 장치가 XER 데이터 버퍼인 인스트럭션 실행 병렬성 증가 방법.
  10. 제2항에 있어서,
    상기 제3 데이터 기억 장치가 종료된 인스트럭션 식별자(instruction identifier; IID) 버퍼인 인스트럭션 실행 병렬성 증가 방법.
  11. 제3항에 있어서,
    상기 제4 데이터 기억 장치가 정수 예외 레지스터(XER)인 인스트럭션 실행 병렬성 증가 방법.
  12. 제1항에 있어서,
    IID를 제1 데이터 기억 장치에 기록하는 상기 단계는
    i) 인스트럭션에 의해 정수 예외 레지스터(XER) 데이터 값이 변경되는 경우, 상기 인스트럭션에 대응하는 IID를 XER 상태 레지스터의 제1 데이터 저장 필드에 기록하는 단계; 및
    ii) 유효화 데이터 값을 상기 XER 상태 레지스터의 제2 데이터 기억 필드에 설정하는 단계
    를 추가로 포함하고,
    상기 하나 이상의 실행 데이터 값을 기록하는 단계는
    i) 상기 인스트럭션의 실행이 종료된 후, 적어도 하나의 XER 데이터 값을 XER 리네임 버퍼 내의 기억 위치에 기록하는 단계; 및
    ii) 상기 IID를 종료 IID 버퍼 내의 해당 기억 위치에 기록하는 단계
    를 추가로 포함하며,
    상기 하나 이상의 실행 조건 데이터 값을 구하는 단계는
    i) 인스트럭션이 상기 XER에서 하나 이상의 데이터 값을 사용하는 경우, 상기 XER 상태 레지스터로부터 IID를 구하는 단계;
    ii) 상기 XER 상태 레지스터에 상기 유효화 데이터 값이 설정되지 않은 경우, 상기 XER로부터 상기 하나 이상의 데이터 값을 구하는 단계;
    iii) 상기 XER 리네임 버퍼 내의 XER 데이터 값을 액세스하기 위해, 상기 XER 상태 레지스터로부터의 상기 IID 데이터, 및 상기 종료 IID 버퍼 내의 IID 데이터를 사용하여 내용 주소화 메모리(content addressable memory; CAM) 판독을 수행하는 단계; 및
    iv) 상기 종료 IID 버퍼의 IID가 상기 XER 상태 레지스터의 IID 데이터와 일치하지 않는 경우, 하나 이상의 XER 데이터 값에 대하여 적어도 하나의 고정 소수점 실행 엔진으로부터 종료 버스를 스누핑하기 위해 상기 XER 상태 레지스터로부터 상기 IID 데이터를 사용하는 단계
    를 추가로 포함하는
    인스트럭션 실행 병렬성 증가 방법.
  13. 인스트럭션 실행 병렬성을 증가시키기 위한 데이터 처리 장치에 있어서,
    a) 인스트럭션 식별자(IID)를 포함하는 제1 데이터 기억 장치;
    b) 하나 이상의 실행 조건 데이터 값 세트를 포함하는 제2 데이터 기억 장치; 및
    c) 상기 제1 및 상기 제2 데이터 기억 장치와 연결되어 있으며, 상기 IID를 사용하여 한 세트의 실행 조건 데이터 값을 구하는 회로
    를 포함하는 데이터 처리 장치.
  14. 제13항에 있어서,
    상기 제1 및 제2 데이터 기억 장치와 연결된 상기 회로는 제3 데이터 기억 장치를 추가로 포함하며,
    상기 제3 데이터 기억 장치는 상기 IID에 대응하는 인스트럭션의 실행이 종료된 후 상기 IID를 수신하는
    데이터 처리 장치.
  15. 제13항에 있어서,
    상기 제1 및 상기 제2 데이터 기억 장치와 연결된 상기 회로는 상기 제1 데이터 기억 장치와 연결된 적어도 하나의 인스트럭션 큐를 추가로 포함하고,
    상기 인스트럭션 큐는 하나 이상의 엔트리를 구비하며,
    각 엔트리는 인스트럭션 데이터를 수신하기 위한 제1 부분, 및 한 세트의 실행 조건 데이터 값의 하나 이상의 요소를 변경하는 인스트럭션에 대응하는 IID를 수신하는 제2 부분을 포함하는
    데이터 처리 장치.
  16. 제13항에 있어서,
    상기 제1 및 상기 제2 데이터 기억 장치와 연결된 상기 회로가 한 세트의 실행 조건 값의 하나 이상의 요소를 변경하는 인스트럭션에 대응하는 IID를 선택하기 위한 회로를 추가로 포함하는 데이터 처리 장치.
  17. 제16항에 있어서,
    IID를 선택하기 위한 상기 회로가 멀티플렉서(MUX)인 데이터 처리 장치.
  18. 제13항에 있어서,
    상기 한 세트의 실행 조건 데이터 값을 구하기 위한 회로가 복수의 세트의 실행 조건 데이터 값으로부터 한 세트의 실행 조건 데이터 값을 선택하기 위한 회로를 추가로 포함하는 데이터 처리 장치.
  19. 제18항에 있어서,
    상기 하나의 세트의 실행 조건 데이터 값을 선택하기 위한 회로가
    a) 복수의 IID 및 하나 이상의 유효화 비트를 수신하기 위한 적어도 하나의 선택 논리 회로―여기서 복수의 IID 중 제1 IID는 상기 제1 데이터 기억 장치로부터 나오며, 복수의 IID 중 제2 IID는 실행 장치로부터 나옴―; 및
    b) 상기 적어도 하나의 선택 논리 회로 및 상기 제2 데이터 기억 장치와 연결되어 있는 적어도 하나의 멀티플렉서―여기서 멀티플렉서는 상기 복수의 실행 조건 데이터 값 세트를 수신하여 상기 적어도 하나의 선택 논리 회로의 상기 출력 상의 데이터에 응답하여 선택함―
    를 추가로 포함하는 데이터 처리 장치.
  20. 제13항에 있어서,
    상기 제1 및 상기 제2 데이터 기억 장치와 연결된 상기 회로는 적어도 하나의 실행 장치를 포함하며,
    상기 적어도 하나의 실행 장치는 상기 제2 데이터 기억 장치와 연결된 출력을 가지는
    데이터 처리 장치.
  21. 제14항에 있어서,
    하나의 실행 조건 데이터 값 세트를 구하기 위한 상기 회로는 상기 제2 및 제3 데이터 기억 장치와 연결된 내용 주소화 메모리 논리를 추가로 포함하며,
    상기 제2 데이터 저장 버퍼에 액세스하기 위한 어드레스는 상기 제3 데이터 기억 장치의 내용을 참조하여 얻어지는
    데이터 처리 장치.
  22. 제13항에 있어서,
    상기 제1 데이터 기억 장치가 정수 예외 레지스터(XER) 상태 레지스터인 데이터 처리 장치.
  23. 제13항에 있어서,
    상기 제2 데이터 기억 장치가 XER 리네임 버퍼인 데이터 처리 장치.
  24. 제13항에 있어서,
    상기 실행 조건 데이터 값이 XER 데이터 값인 데이터 처리 장치.
  25. 제13항에 있어서,
    상기 제1 데이터 기억 장치는 정수 예외 레지스터(XER) 상태 레지스터―여기서 XER 상태 레지스터는 적어도 3개의 필드를 포함하며, 제1 필드는 XER 인스트럭션 식별자(IID)를 포함하고, 제2 필드는 유효화 데이터 값을 포함하며, 제3 필드는 XER 데이터를 포함함―를 추가로 포함하며,
    상기 제2 데이터 기억 장치는 적어도 하나의 기억 위치―여기서 각 기억 위치는 복수의 XER 데이터 값을 포함함―를 포함하는 XER 리네임 버퍼를 추가로 포함하며,
    상기 제1 및 제2 데이터 기억 장치와 연결된 상기 회로는
    i) 실행이 종료된 인스트럭션의 IID를 포함하는 적어도 하나의 기억 위치―여기서 각 기억 위치는 상기 XER 리네임 버퍼의 기억 위치와 일치함―를 포함하는 종료 IID 버퍼;
    ii) 상기 XER 상태 레지스터, 상기 종료 IID 버퍼, 및 상기 XER 리네임 버퍼와 연결된 내용 주소화 메모리(CAM) 논리―여기서 CAM 논리는 상기 XER 상태 레지스터 내의 XER IID를 사용하여 상기 XER 리네임 버퍼로 어드레스함―;
    iii) 상기 XER 상태 레지스터와 상기 XER 상태 레지스터 내의 XER IID에 대응하는 XER IID를 수신하는 XER IID 필드, 및 XER 데이터를 포함하는 제3 필드와 연결되어 있으며, 인스트럭션 데이터 필드를 가지는 인스트럭션 큐;
    iv) 상기 인스트럭션 큐로부터 인스트럭션 데이터를 수신하는 제1 멀티플렉서(MUX) 및 상기 인스트럭션 큐 및 상기 인스트럭션 디스패처(dispatcher)로부터 XER IID 데이터를 수신하는 제2 멀티플렉서(MUX);
    v) 상기 제1 및 제2 MUX와 연결되어 있으며 상기 MUX를 제어하는 인스트럭션 선택 논리―여기서 인스트럭션 선택 논리는 상기 인스트럭션 큐와 추가로 연결되며, 상기 제1 및 제2 MUX는 비어 있는 인스트럭션 큐에 응답하여 제어됨―;
    vi) 상기 제2 MUX의 출력과 연결되어 있으며 XER IID 값을 수신하는 XER 선택 논리;
    vii) 상기 XER 선택 논리의 출력과 연결되어 있으며, 상기 XER 선택 논리의 출력에 의해 제어되며, 상기 XER 리네임 버퍼 및 상기 인스트럭션 큐 내의 상기 XER 데이터 필드로부터 XER 데이터를 수신하는 제3 MUX;
    viii) 종료된 IID 데이터―여기서 종료된 IID 데이터는 상기 XER 선택 논리로 입력됨―를 상기 종료 IID 버퍼로 출력하고, XER 데이터를 상기 XER 리네임 버퍼, 상기 XER 리네임 버퍼 및 상기 제3 MUX로 출력하는 적어도 하나의 고정 소수점 엔진;
    ix) 상기 XER 리네임 버퍼로부터 XER 데이터를 수신하며, 상기 제3 MUX로 데이터를 출력하는 구조화된 XER; 및
    x) 상기 제3 MUX의 출력단과 연결된 입력단, 및 상기 적어도 하나의 고정 소수점 실행 엔진의 입력단과 연결된 출력단을 구비하는 XER 데이터 레지스터―여기서 XER 데이터 레지스터는 상기 고정 소수점 실행 엔진 내에서 실행되는 인스트럭션이 사용하도록 상기 제3 MUX로부터 수신된 XER 데이터를 래치함―
    를 추가로 포함하는
    데이터 처리 장치.
  26. a) 복수의 인스트럭션과 통신하는 입력 수단;
    b) 상기 복수의 인스트럭션 중 하나 이상의 인스트럭션에 응답하여 하나 이상의 실행 조건 값 세트를 생성하는 조건 논리 회로;
    c) 상기 조건 논리 회로와 연결된 리네임 논리 회로―여기서 리네임 논리 회로는
    i) 하나 이상의 실행 조건 값 세트를 포함하는 제1 데이터 기억 장치; 및
    ii) 상기 입력 수단과 연결되어 있으며 상기 상태 레지스터가 복수의 인스트럭션 중 하나의 인스트럭션에 대응하는 인스트럭션 식별자(IID)를 포함하는 예외 레지스터 상태 레지스터
    를 추가로 포함함―; 및
    d) 상기 리네임 논리 회로와 연결된 예외 레지스터―여기서 예외 레지스터는 하나 이상의 실행 조건 값 세트 중 하나의 실행 조건 값 세트를 수신함―
    을 포함하는 데이터 처리 시스템.
  27. 제26항에 있어서,
    상기 조건 논리 회로가 실행 엔진을 포함하는 데이터 처리 시스템.
  28. 제26항에 있어서,
    상기 리네임 논리 회로가 상기 복수의 인스트럭션의 서브세트 및 조건 논리 회로에 대한 통신 인스트럭션을 포함하며, 상기 조건 논리 회로와 연결되는 인스트럭션 큐를 추가로 포함하는 데이터 처리 시스템.
  29. 제26항에 있어서,
    상기 조건 논리 회로가 상기 하나 이상의 실행 조건 값 세트 중 첫 번째 세트 값을 수신하고 이에 응답하여 상기 하나 이상의 실행 조건 값 세트 중 두 번째 세트 값을 생성하는 회로를 추가로 포함하는 데이터 처리 시스템.
  30. 제26항에 있어서,
    상기 리네임 논리 회로는 제2 데이터 기억 장치를 추가로 포함하고,
    상기 제2 기억 장치는 하나 이상의 종료된 인스트럭션과 연관된 하나 이상의 IID를 포함하며,
    각 인스트럭션은 상기 제1 데이터 기억 장치에서 설정된 해당 실행 조건 값을 생성하는
    데이터 처리 시스템.
  31. 제26항에 있어서,
    상기 리네임 논리 회로가 상기 제1 데이터 기억 장치로부터 한 세트의 실행 조건 값을 선택하는 회로를 추가로 포함하는 데이터 처리 시스템.
  32. 제31항에 있어서,
    상기 제1 데이터 기억 장치로부터 한 세트의 실행 조건 값을 선택하기 위한 상기 회로가 상기 제1 및 제2 데이터 기억 장치와 연결된 내용 주소화 메모리 논리를 포함하는 데이터 처리 시스템.
  33. 제26항에 있어서,
    상기 리네임 논리 회로가 상기 제1 데이터 기억 장치 내의 제1 세트의 실행 조건 값 및 상기 조건 논리에 의해 생성된 제2 세트의 실행 조건 값으로부터 한 세트의 실행 조건 값을 선택하기 위한 회로를 추가로 포함하는 데이터 처리 시스템.
  34. 제26항에 있어서,
    상기 예외 레지스터가 구조화된 정수 예외 레지스터(XER)인 데이터 처리 시스템.
  35. 제26항에 있어서,
    상기 조건 논리가 적어도 하나의 고정 소수점 실행 엔진을 추가로 포함하는 데이터 처리 시스템.
  36. 제26항에 있어서,
    상기 예외 레지스터 상태 레지스터는 XER 상태 레지스터이며,
    상기 제1 데이터 기억 장치는 XER 리네임 버퍼인
    데이터 처리 시스템.
  37. 제26항에 있어서,
    복수의 인스트럭션과 통신하는 상기 입력 수단이 인스트럭션 디스패처인 데이터 처리 시스템.
  38. 제37항에 있어서,
    상기 예외 레지스터 상태 레지스터는 XER IID를 포함하는 제1 필드, 유효화 데이터 값을 포함하는 제2 필드, XER 데이터를 포함하는 제3 필드를 구비하는 XER 상태 레지스터이고,
    상기 제1 데이터 기억 장치는 복수의 XER 데이터 값을 포함하는 적어도 하나의 기억 위치를 포함하는 XER 리네임 버퍼이며,
    상기 조건 논리 회로는 적어도 하나의 고정 소수점 실행 엔진을 추가로 포함하고,
    상기 예외 레지스터는 XER이고,
    상기 리네임 논리 회로는
    i) 실행이 종료된 인스트럭션의 IID를 포함하는 적어도 하나의 기억 위치―여기서 각 기억 위치는 상기 XER 리네임 버퍼의 기억 위치와 일치함―를 포함하는 종료 IID 버퍼;
    ii) 상기 XER 상태 레지스터, 상기 종료 IID 버퍼, 및 상기 XER 리네임 버퍼와 연결된 내용 주소화 메모리(CAM) 논리―여기서 CAM 논리는 상기 XER 상태 레지스터 내의 XER IID를 사용하여 상기 XER 리네임 버퍼로 어드레스함―;
    iii) 상기 XER 상태 레지스터와 상기 XER 상태 레지스터 내의 XER IID에 대응하는 XER IID를 수신하는 XER IID 필드, 및 XER 데이터를 포함하는 제3 필드와 연결되어 있으며, 인스트럭션 데이터 필드를 가지는 인스트럭션 큐;
    iv) 상기 인스트럭션 큐로부터 인스트럭션 데이터를 수신하는 제1 멀티플렉서(MUX) 및 상기 인스트럭션 큐 및 상기 인스트럭션 디스패처(dispatcher)로부터 XER IID 데이터를 수신하는 제2 멀티플렉서(MUX);
    v) 상기 제1 및 제2 MUX와 연결되어 있으며 상기 MUX를 제어하는 인스트럭션 선택 논리―여기서 인스트럭션 선택 논리는 상기 인스트럭션 큐와 추가로 연결되며, 상기 제1 및 제2 MUX는 비어 있는 인스트럭션 큐에 응답하여 제어됨―;
    vi) 상기 제2 MUX의 출력과 연결되어 있으며 XER IID 값을 수신하는 XER 선택 논리;
    vii) 상기 XER 선택 논리의 출력과 연결되어 있으며, 상기 XER 선택 논리의 출력에 의해 제어되며, 상기 XER 리네임 버퍼 및 상기 인스트럭션 큐 내의 상기 XER 데이터 필드로부터 XER 데이터를 수신하는 제3 MUX; 및
    viii) 상기 제3 MUX의 출력단과 연결된 입력단, 및 상기 적어도 하나의 고정 소수점 실행 엔진의 입력단과 연결된 출력단을 구비하는 XER 데이터 레지스터
    를 추가로 포함하고,
    상기 XER 데이터 레지스터는 상기 고정 소수점 실행 엔진 내에서 실행되는 인스트럭션이 사용하도록 상기 제3 MUX로부터 수신된 XER 데이터를 래치하고,
    상기 고정 소수점 엔진은 종료된 IID 데이터를 상기 종료 IID 버퍼에 출력하고, XER 데이터를 상기 XER 리네임 버퍼, 상기 XER 리네임 버퍼 및 상기 제3 MUX로 출력하고,
    상기 종료된 IID 데이터는 상기 XER 선택 논리로 입력되고,
    상기 XER는 상기 XER 리네임 버퍼로부터 XER 데이터를 수신하고, 상기 XER는 상기 제3 MUX로 데이터를 출력하는
    데이터 처리 시스템.
KR1019990001064A 1998-02-13 1999-01-15 무순서 동작시 예외를 트래킹하는 장치를 구비하는 데이터 처리 시스템및 그 방법 KR100335746B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/023,891 1998-02-13
US09/023,891 US6128722A (en) 1998-02-13 1998-02-13 Data processing system having an apparatus for exception tracking during out-of-order operation and method therefor
US9/023,891 1998-02-13

Publications (2)

Publication Number Publication Date
KR19990072270A true KR19990072270A (ko) 1999-09-27
KR100335746B1 KR100335746B1 (ko) 2002-05-08

Family

ID=21817785

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019990001064A KR100335746B1 (ko) 1998-02-13 1999-01-15 무순서 동작시 예외를 트래킹하는 장치를 구비하는 데이터 처리 시스템및 그 방법

Country Status (7)

Country Link
US (1) US6128722A (ko)
EP (1) EP0936541A2 (ko)
JP (1) JP3160259B2 (ko)
KR (1) KR100335746B1 (ko)
CN (1) CN1171144C (ko)
CA (1) CA2261084C (ko)
TW (1) TW444179B (ko)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6216222B1 (en) * 1998-05-14 2001-04-10 Arm Limited Handling exceptions in a pipelined data processing apparatus
JP3320358B2 (ja) * 1998-06-18 2002-09-03 インターナショナル・ビジネス・マシーンズ・コーポレーション コンパイル方法、例外処理方法、及びコンピュータ
US6345356B1 (en) * 1999-07-16 2002-02-05 International Business Machines Corporation Method and apparatus for software-based dispatch stall mechanism for scoreboarded IOPs
US6442675B1 (en) 1999-07-29 2002-08-27 International Business Machines Corporation Compressed string and multiple generation engine
CN100447737C (zh) * 2001-09-27 2008-12-31 中国科学院计算技术研究所 指令流水线中实现访存精确例外的处理方法
US7437541B2 (en) * 2004-07-08 2008-10-14 International Business Machiens Corporation Atomically updating 64 bit fields in the 32 bit AIX kernel
US10067766B2 (en) 2015-02-26 2018-09-04 International Business Machines Corporation History buffer with hybrid entry support for multiple-field registers
US9971604B2 (en) * 2015-02-26 2018-05-15 International Business Machines Corporation History buffer for multiple-field registers
US9996353B2 (en) 2015-02-26 2018-06-12 International Business Machines Corporation Universal history buffer to support multiple register types
US10108423B2 (en) * 2015-03-25 2018-10-23 International Business Machines Corporation History buffer with single snoop tag for multiple-field registers
GB2541400B (en) * 2015-08-17 2017-11-15 Advanced Risc Mach Ltd Tracing of exception handling events
CN110647361B (zh) * 2019-09-09 2021-08-27 中国人民解放军国防科技大学 一种空闲物理寄存器的获取方法和装置
CN111508617B (zh) * 2020-07-01 2020-09-25 智博云信息科技(广州)有限公司 疫情数据维护方法、装置、计算机设备和可读存储介质

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5778219A (en) * 1990-12-14 1998-07-07 Hewlett-Packard Company Method and system for propagating exception status in data registers and for detecting exceptions from speculative operations with non-speculative operations
US5632023A (en) * 1994-06-01 1997-05-20 Advanced Micro Devices, Inc. Superscalar microprocessor including flag operand renaming and forwarding apparatus
US5659721A (en) * 1995-02-14 1997-08-19 Hal Computer Systems, Inc. Processor structure and method for checkpointing instructions to maintain precise state

Also Published As

Publication number Publication date
JP3160259B2 (ja) 2001-04-25
EP0936541A2 (en) 1999-08-18
CN1171144C (zh) 2004-10-13
KR100335746B1 (ko) 2002-05-08
JPH11296369A (ja) 1999-10-29
CA2261084C (en) 2001-12-04
US6128722A (en) 2000-10-03
CN1226027A (zh) 1999-08-18
TW444179B (en) 2001-07-01
CA2261084A1 (en) 1999-08-13

Similar Documents

Publication Publication Date Title
US8793433B2 (en) Digital data processing apparatus having multi-level register file
KR100335745B1 (ko) 고성능의 추론적인 오정렬 로드 연산
US6247124B1 (en) Branch prediction entry with target line index calculated using relative position of second operation of two step branch operation in a line of instructions
EP1116103B1 (en) Mechanism for store-to-load forwarding
US5692167A (en) Method for verifying the correct processing of pipelined instructions including branch instructions and self-modifying code in a microprocessor
US4679140A (en) Data processor with control of the significant bit lengths of general purpose registers
KR100343601B1 (ko) 무순서 레지스터 동작용 장치를 구비하는 데이터 처리 시스템 및그 방법
JP2002521761A (ja) 仮想レジスタ番号を用いて論理レジスタ番号を物理レジスタ番号にマッピングするように構成されるプロセッサ
US6128721A (en) Temporary pipeline register file for a superpipelined superscalar processor
KR100335746B1 (ko) 무순서 동작시 예외를 트래킹하는 장치를 구비하는 데이터 처리 시스템및 그 방법
JPH0334024A (ja) 分岐予測の方法とそのための装置
US5805849A (en) Data processing system and method for using an unique identifier to maintain an age relationship between executing instructions
US6292845B1 (en) Processing unit having independent execution units for parallel execution of instructions of different category with instructions having specific bits indicating instruction size and category respectively
US5872989A (en) Processor having a register configuration suited for parallel execution control of loop processing
US6871343B1 (en) Central processing apparatus and a compile method
JP2002521762A (ja) 命令のリタイアメント時に物理レジスタを選択的に自由にするよう構成されたプロセッサ
US20040199749A1 (en) Method and apparatus to limit register file read ports in an out-of-order, multi-stranded processor
US20050273577A1 (en) Microprocessor with integrated high speed memory
KR100974401B1 (ko) 주소 레지스터의 내용을 스와핑하기 위한 방법 및 장치
JP2020095345A (ja) 演算処理装置、メモリ装置、及び演算処理装置の制御方法
JP2916605B2 (ja) コンピュータ用プロセツサ
US6185674B1 (en) Method and apparatus for reconstructing the address of the next instruction to be completed in a pipelined processor
JPH08263289A (ja) 複数命令流パイプライン計算機
US6704855B1 (en) Method and apparatus for reducing encoding needs and ports to shared resources in a processor
JP2904624B2 (ja) 並列演算処理装置

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

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee