KR100343601B1 - 무순서 레지스터 동작용 장치를 구비하는 데이터 처리 시스템 및그 방법 - Google Patents

무순서 레지스터 동작용 장치를 구비하는 데이터 처리 시스템 및그 방법 Download PDF

Info

Publication number
KR100343601B1
KR100343601B1 KR1019990004625A KR19990004625A KR100343601B1 KR 100343601 B1 KR100343601 B1 KR 100343601B1 KR 1019990004625 A KR1019990004625 A KR 1019990004625A KR 19990004625 A KR19990004625 A KR 19990004625A KR 100343601 B1 KR100343601 B1 KR 100343601B1
Authority
KR
South Korea
Prior art keywords
instruction
data
condition register
register
condition
Prior art date
Application number
KR1019990004625A
Other languages
English (en)
Other versions
KR19990072553A (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 KR19990072553A publication Critical patent/KR19990072553A/ko
Application granted granted Critical
Publication of KR100343601B1 publication Critical patent/KR100343601B1/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
    • 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/30094Condition code generation, e.g. Carry, Zero flag
    • 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

Landscapes

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

Abstract

본 발명은 조건 레지스터(condition register; CR) 리네임 장치 및 그 사용 방법에 관한 것이다. 파이프라인형 구조를 가지는 중앙 처리 장치(Central Processing Unit; CPU)에 있어서, CR 오퍼랜드에 대한 논리 연산은 CR 리네임 메커니즘을 사용하여 무순서로 실행될 수 있다. CR 데이터를 갱신하는 모든 인스트럭션은 레지스터 내에 저장된 연관 인스트럭션 식별자(instruction identification; IID)를 가진다. CR 내의 데이터를 사용하는 후속 조건 레지스터 논리(condition register logical; LCR) 인스트럭션은 저장된 IID를 사용하여 저장된 IID에 대응하는 인스트럭션의 실행에 의해 CR 데이터가 갱신된 시점을 결정한다. CR 데이터 값을 갱신하는 인스트럭션의 실행이 종료되면, 대응 실행 유닛의 종료 버스를 스누핑(snooping)하여 갱신된 데이터를 구한다. 이러한 방법을 사용하여, 이들 인스트럭션은 선행(preceding) 인스트럭션이 종료되기 전에 CR 데이터를 구할 수 있다. 인스트럭션 갱신이 종료되기 전에 갱신된 CR 데이터가 다음에 실행될 LCR에 대해 사용가능하기 때문에, 그 결과 LCR 인스트럭션의 직병렬 변환(deserialized) 실행이 구현된다.

Description

무순서 레지스터 동작용 장치를 구비하는 데이터 처리 시스템 및 그 방법{A DATA PROCESSING SYSTEM HAVING AN APPARATUS FOR OUT-OF-ORDER REGISTER OPERATIONS AND METHOD THEREFOR}
본 발명은 일반적으로 데이터 처리 시스템(data processing system)에 관한 것으로, 구체적으로는 데이터를 무순서로 처리하는 데이터 처리 시스템에 관한 것이다.
대량의 인스트럭션을 고속으로 실행하기 위한 컴퓨터가 개발됨에 따라, 이러한 실행 과정을 최적화하기 위한 다양한 형태의 구조(architecture)가 개발되었다. 예를 들어, 축소 명령어 세트 컴퓨터(reduced instruction set computer; RISC) 장치는 이들 인스트럭션을 실행하는 동안 병렬성(parallelism)은 더 크게 하고 사용되는 인스트럭션의 수는 더 작게 함으로써, 종래의 데이터 처리 시스템을 사용하는 경우 얻어지는 연산 결과보다 훨씬 더 빠른 속도로 연산 결과를 얻을 수 있다. 일부 데이터 처리 시스템은 병렬 인스트럭션 실행 능력을 증가시키는 것 이외에도 무순서 인스트럭션 실행을 구현하여, 프로세서의 성능을 증대시킨다. 무순서 인스트럭션 실행은 미해결된 데이터 종속성(dependency)을 가지는 인스트럭션 스트림(instruction stream) 내의 선행 인스트럭션이 실행되기 전에, 어떠한 데이터 종속성도 없이 디스패치(dispatch)된 인스트럭션이 동적으로 실행되도록 하여 프로세서 성능을 증가시킨다. 일부 데이터 처리 시스템에서는, 인스트럭션의 실행이 완료되면, 인스트럭션이 리네임되고 재정렬 버퍼(re-order buffer)라고도 불리는 인스트럭션 순차 목록표(instruction sequencing table)가 인스트럭션의 실행을 재정렬하여 무순서 인스트럭션 실행을 용이하게 하기도 한다.
또한 재정렬 버퍼 장치를 사용하여 추론적 인스트럭션(speculative instruction)을 실행하기도 한다. 그렇게 하면 추론적 인스트럭션 실행을 지원하는 데이터 처리 시스템에 최소한의 하드웨어를 추가하여 무순서 인스트럭션 실행에 적합하게 할 수 있다. 이렇게 추가된 하드웨어에는 인스트럭션이 발행(issue)되어야 하는 시간 및 순서를 결정하는 데 사용되는 발행 논리(issue logic)를 포함한다. 이러한 발행 논리는 매우 복잡할 수 있는데, 이는 인스트럭션이 발행되어야 할 시간을 결정하기 위해서는 실행될 인스트럭션의 종속성 및 파이프라인 상태의 인스트럭션을 검사해야 하기 때문이다. 발행 논리가 적절하게 설계되지 않은 경우, 이러한 발행 논리는 데이터 처리 시스템의 치명적인 요소(critical path)가 될 수 있으며, 인스트럭션이 실행되는 빈도 수를 제한하여 무순서 발행에 의해 달성될 수 있는 성능 이득을 경감시킬 수 있다.
종래의 많은 시스템에서 구현하고 있는 무순서 인스트럭션의 실행에 있어서는, 미해결된 데이터 종속성을 가지는 인스트럭션 스트림 내의 선행 인스트럭션이 실행되기 전에 어떠한 데이터 종속성도 없이 디스패치된 인스트럭션이 동적으로 실행되도록 하여 프로세서 성능을 증가시켜왔다. 예를 들어 소프트웨어에 의해 액세스 가능한 레지스터와 같은 구조화된 장치의 선택된 비트를 리네임하는 레지스터 파일 리네임, 및 인스트럭션 순차 목록표(재정렬 버퍼)는 인스트럭션이 완료되면 인스트럭션 실행을 재정렬함으로써 무순서 실행을 용이하게 한다. 이러한 구조에 대한 더 많은 정보가 R. M. Tomasulo의 "An Efficient Algorithm for Exploiting Multiple Arithmetic Units"(IBM JOURNAL, 1967년 1월, pp. 25-33)에 소개되어 있다. 이러한 장치는 또한 추론적 인스트럭션을 실행하는 데 사용된다는 것에 유의해야 한다. 그러므로 추론적 인스트럭션 실행을 지원하는 시스템 구조는 약간의 오버헤드(overhead) 비용으로 하드웨어를 거의 추가하지 않고도 인스트럭션을 무순서로 실행하기에 적합하게 만들 수 있다. 따라서 레지스터 파일을 리네임함으로써, 추론적 인스트럭션 실행 구조를 변경하지 않고 무순서 실행을 지원할 수 있다.
그러나, 구조화된 레지스터(architected register)를 변경하거나 사용하는 인스트럭션은 이러한 레지스터를 하나만 포함하는 프로세서에서 한번에 하나씩 실행되어야 한다. 이러한 경우에, 인스트럭션 갱신이 완료되고, 또한 구조화된 레지스터가 유효한 경우에만 데이터 종속성이 해결된다. 이러한 인스트럭션으로 대표적인 것으로는 조건 레지스터(condition register; CR)의 내용을 사용하거나 변경하는 논리 연산(logical operation)을 들 수 있다. CR은 정수 실행 조건, 부동 소수점 실행 조건과 같은 프로세서 동작을 보고하는 데이터 값 및 사용자에 의해 지정된(user-defined) 조건 값을 포함한다. 따라서 CR을 갱신하거나 사용할 필요가 있는 하나 이상의 인스트럭션이 존재하는 경우, 이들 인스트럭션은 소프트웨어 프로그램에 따라 순서대로 실행되어야 하며, 이는 프로세서 작동시 병목현상을 야기할 수 있다. 예를 들어, 소스 코드 내의 복합(complex) "IF" 명령문은 다중 조건 레지스터 논리 인스트럭션으로 컴파일(compile)될 수 있다. 종래 기술에 의하면, 이들 다중 조건 레지스터 논리 인스트럭션은 직렬화(serialized)되어야 하는데, 그 이유는 이들 모두가 공통의 구조화된 CR 대해 동작하기 때문이다.
따라서 CR을 갱신하거나 사용해야 하는 각 인스트럭션을 무순서로 실행하도록 하여, 인스트럭션 실행의 병렬성 및 프로세서 성능을 개선시키는 리네임 장치 및 방법이 필요하다.
도 1은 본 발명의 실시예에 따른 데이터 처리 시스템을 도시하는 블록도이다.
도 2는 본 발명의 실시예에 따른 중앙 처리 장치(CPU)를 도시하는 블록도이다.
도 3a 및 3b는 본 발명의 실시예에 따라 구현된 무순서(out-of-order) CR 리네임 메커니즘을 도시하는 블록도이다.
도 4는 본 발명의 실시예에 따른 CR 갱신 실행 방법(update execution method)을 도시하는 순서도이다.
전술한 필요성은 본 발명에 의해 해결된다. 따라서 제1 태양에서는 복수의 인스트럭션과 통신하기 위한 입력 회로를 포함하는 데이터 처리 시스템이 제공된다. 처리 유닛은 복수의 인스트럭션 중 하나 이상에 응답하여 데이터 값들에 대한 논리 연산을 수행한다. 처리 유닛은 논리 연산 오퍼랜드를 변경하는 인스트럭션을 실행하는 하나 이상의 실행 유닛의 출력과 연결된다. 처리 유닛은 또한 상기 오퍼랜드를 변경하는 인스트럭션에 해당하는 인스트럭션 식별자(instruction identifiers; IID)를 제공하는 데이터 저장 장치와 연결된다.
또한 본 발명의 제2 태양에서는 논리 조건 레지스터 처리를 직병렬 변환하기 위한 데이터 처리 메커니즘(data processing mechanism)이 제공된다. 데이터 처리 메커니즘은 하나 이상의 레지스터를 가지는 인스트럭션 스택을 포함하는 큐를 사용하며, 여기서 각 레지스터는 적어도 3개의 필드를 포함한다. 이중 적어도 2개의 필드는 조건 레지스터 데이터 값을 변경하는 인스트럭션에 대응하는 인스트럭션 식별자(IID)를 포함한다. 큐는 또한 조건 레지스터 데이터 값에 대한 논리 연산을 수행하는 논리 회로를 포함한다. 논리 회로는 데이터 저장 장치와 연결되어 있으며, 상기 데이터 저장 장치는 IID를 포함하고 있으며 IID를 논리 회로에 전송한다.
끝으로 본 발명의 제3 태양에서는 논리 조건 레지스터 처리를 직병렬 변환하기 위한 방법이 제공된다. 상기 방법은 제1 조건 레지스터 인스트럭션을 제1 데이터 저장 장치의 제1 데이터 저장 위치에 저장하는 단계를 포함한다. 제2 조건 레지스터 인스트럭션이 LCR의 오퍼랜드에 해당하는 조건 레지스터 필드를 변경하면, 연관된 인스트럭션 식별자(IID)가 제2 데이터 저장 위치에 저장된다.
상기 특징과 기타 다른 특징 및 이점은 첨부된 도면을 참조하여 다음의 상세한 설명을 통해 보다 명확하게 이해될 수 있을 것이다. 그러나 이들 도면에 의해 본 발명이 제한되는 것은 아니다.
본 발명 자체 및 본 발명의 이점을 보다 완전하게 이해하기 위해, 첨부된 도면과 함께 다음의 상세한 설명을 참조한다.
본 발명은 CR을 갱신하거나 사용할 필요가 있는 하나 이상의 논리 인스트럭션이 존재하며, 정수 유닛 인스트럭션의 무순서 실행을 지원하는 CR 리네임 메커니즘을 제공한다. 본 발명은 CR을 갱신하거나 사용할 필요가 있는 논리 인스트럭션이 CR을 변경하는 모든 선행 동작이 완료되기를 기다리지 않고 실행되도록 한다.
본 발명의 동작에 대하여 아래에서 보다 상세하게 설명한다. 상세한 설명을 시작하기 전에, 본 발명에 의한 소자의 연결관계(connectivity)에 대하여 먼저 설명한다.
아래의 설명에서, 구체적인 워드 또는 바이트 길이 등과 같은 여러 가지 구체적인 내용의 상세한 설명을 통해 본 발명에 대한 완전한 이해를 돕는다. 그러나 이러한 구체적인 상세한 설명 없이도 당업자들이 본 발명을 실시할 수 있다는 것은 명확하다. 이러한 구체적 설명을 제외하고는, 본 발명의 내용이 불필요하게 상세히 기술됨으로써 불명료해지는 것을 방지하기 위해, 공지된 회로를 블록도의 형태로 도시한다. 대부분의 경우, 타이밍 고려 등에 관련된 상세한 설명이 본 발명을 완전히 이해하는데 있어서 필요하지 않으며 관련 기술분야의 당업자 기술 수준 범위 내에 속하는 경우 이를 생략한다. 아래에서 도면을 참조하여 설명하며, 일부도면에 있어서 동일한 도면부호는 유사하거나 동일한 구성요소를 나타내며, 도시된 구성요소의 크기가 실제 구성요소의 크기대로 표시되어 있는 것은 아니다.
도 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'(1994)에 기술되어 있으며, 본 발명에 참조되어 본 명세서의 일부를 이룬다. 본 발명의 CR 리네임 메커니즘은 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에 도시된 여러 가지 구성요소의 기능을 조정한다.
본 발명에서는 인간 오퍼레이터(operator)와 관계될 수 있는 비교(comparing), 유효화(validating), 선택(selecting)과 같은 용어 또는 다른 용어들이 사용되고 있으나, 본 명세서에 기술되어 있으며 본 발명의 일부를 구성하는 적어도 다수의 동작에서는 인간 오퍼레이터에 의한 어떠한 동작도 바람직하지 않다는 점에 유의해야 한다. 본 명세서에 기술된 동작은 대부분 기계 동작 처리용 전기 신호(machine operating processing electrical signals)로서 또 다른 전기 신호를 생성한다.
도 2는 CPU(110)에 대하여 상세하게 설명한다. CPU(110)의 일부는 인스트럭션 캐시(instruction cache; I-캐시; 202), 디스패치 유닛(dispatch unit; 204), 분기/시스템 처리 유닛(branch/system processing unit; 205), 고정 소수점 실행 유닛(fixed point execution unit; FXU; 206), 로드/저장 유닛(load/store unit; 208), 부동 소수점 유닛(floating point unit; FPU; 210), 데이터 캐시(datacache; D-cache; 212), 및 버스 인터페이스 유닛(bus interface unit; BIU; 214)을 포함한다. 또한 분기/시스템 처리 유닛(205)은 조건 레지스터(CR)를 포함한다. I-캐시(202)는 디스패치 유닛(204)과 연결되며, 복수의 인스트럭션 내의 제어 정보와 통신한다. 디스패치 유닛(204)은 분기/시스템 처리 유닛(205), FXU(206), 로드/저장 유닛(208), 및 FPU(210)와 각각 연결되며, 복수의 디스패치된 인스트럭션을 제공한다. I-캐시(202)는 BIU(214)와 연결되며, 데이터 및 제어 정보를 통신한다. FXU(206)는 로드/저장 유닛(208)과 연결되며, 데이터 값을 적재하고, 데이터 값을 저장하고, 데이터 값을 전송한다. 로드/저장 유닛(208)은 FPU(210)과 연결되며, 데이터 값을 저장하고 로드 데이터 값을 로드한다. 또한 로드/저장 유닛(208)은 D-캐시(212)와 연결되며 로드/저장 신호 요구, 복수의 데이터 값 및 어드레스 값을 통신한다. D-캐시(212)는 버스 인터페이스 유닛(214)과 연결되며, 데이터 입력 신호, 출력 신호, 및 제어 신호를 통신한다.
도 3a 및 도 3b는 본 발명의 원리에 따른 CR 리네임 메커니즘(300)을 예시한다. CR 리네임 메커니즘은 CPU(110)의 분기/시스템 처리 유닛(205)에서 사용된다. 분기/시스템 처리 유닛(205)으로 입력되는 인스트럭션은 I-캐시(202)로부터 검색(retrieve)되어 디스패치 유닛(204)에 의해 분기 큐(branch queue; 301)에 로드된다. 분기 큐(301)는 인스트럭션 데이터 값을 포함하는 인스트럭션 스택 부분(302)을 포함한다. 분기 큐(301)는 깊이가 소정의 값 M인 FIFO(first-in-first-out) 구조일 수 있다. 인스트럭션 스택(302) 내의 각 엔트리(entry)는 통상적으로 2진 형태인 기계 인스트럭션 데이터 값을 포함한다. 각 인스트럭션은 발행유닛(issue unit; 204)에 의해 할당되며 무순서 인스트럭션을 재정렬하기 위해 종료 유닛(도시되지 않음)에 의해 사용되는 인스트럭션 식별자(instruction identification; IID) 부분을 포함한다. 인스트럭션의 갱신이 완료되는 즉시, 구조화된 레지스터가 갱신된다. 분기/시스템 처리 유닛(205)에 입력되는 인스트럭션은 분기 인스트럭션 및 조건 레지스터(207)의 데이터에 대한 논리 연산을 수행하는 인스트럭션을 포함한다.
조건 레지스터(207)의 데이터 값에 대한 논리 연산을 수행하는 인스트럭션을 조건 레지스터 논리(condition register logical; LCR) 인스트럭션이라 한다. 본 발명의 원리를 사용하는 데이터 처리 시스템의 실시예에 있어서, LCR 인스트럭션은 한 쌍의 소스 오퍼랜드(BA 및 BB) 및 목적지 오퍼랜드(BT)로 구성되는 3개의 오퍼랜드를 가질 수 있으며, 이들 각각의 부호는 조건 레지스터(207) 내의 필드(303a-303c)와 대응한다. 조건 레지스터(207)는 P개의 복수 필드를 포함할 수 있다. 그러나 당업자들은 다른 실시예에서는 LCR 인스트럭션이 소정의 M개의 복수 소스 오퍼랜드 및 소정의 N개의 제2 복수 목적지 오퍼랜드를 사용할 수 있다는 것을 이해할 수 있을 것이다.
디스패치 유닛(204)이 조건 레지스터(207) 내의 데이터를 변경하는 인스트럭션을 실행 유닛(execution unit; XU; 304)으로 발행하면, 상기 인스트럭션의 해당 IID가 조건 레지스터 리네임 버퍼(305)로 보내진다. 조건 레지스터 리네임 버퍼(305)는 복수의 레지스터(306)를 포함할 수 있다. 복수의 레지스터(306)는 P개의 레지스터를 포함할 수 있으며, 여기서 P는 조건 레지스터(207) 내의 데이터 필드 개수와 동등하다. 이러한 실시예에서, 각 레지스터(306)는 조건 레지스터(207) 내의 데이터 필드(303)와 대응한다. 리네임 버퍼(305) 내의 각 레지스터(306)는 복수의 데이터 필드(307)를 추가로 포함한다. 제1 데이터 필드(307a)는 조건 레지스터(207)의 필드(303) 내의 데이터 값을 변경하는 인스트럭션의 IID를 포함한다. 각 데이터 필드(303)는 레지스터(306)와 일치하며, 변경 인스트럭션의 IID는 변경 중인 필드(303)에 대응하는 레지스터(306) 내의 필드(307a)에 로드된다. 대응 필드(303)에 내의 현재 데이터 값은 레지스터(306)의 필드(307b)에 로드된다. 또한 기록 보류 데이터 값(write pending data value)은 각 레지스터(306)의 필드(307c)에 설정된다. 필드(307c) 내의 기록 보류 데이터 값은 1 비트 폭을 가질 수 있다.
LCR 인스트럭션은 레지스터(306)의 필드(307a)에 저장된 IID를 사용하여, 조건 레지스터(207) 내의 데이터 종속성을 해결한다. 디스패치 유닛(204)에 의해 LCR이 발행되어 분기 큐(301)에 로드되면, BA, BB 또는 BT 중 하나 이상을 변경하는 XU(304) 내에 대기 중인 인스트럭션들의 IID가 각각의 3개의 오퍼랜드에 해당하는 필드(308a-308c)에 로드된다. LCR 인스트럭션 데이터 값 자체는 필드(309) 중에서 상기 필드(308a-308c)와 동일한 인스트럭션 스택(302) 내의 필드(309)에 로드된다. LCR 인스트럭션(309)은 수행될 연산을 분기/시스템 논리(310)로 통지하고, 분기/시스템 논리(310)는 적절한 시점에서 인스트럭션을 실행한다.
인스트럭션이 실행됨에 따라, 연속되는 인스트럭션은 인스트럭션 스택(302)의 아래로 이동한다. 필드(308a-308c)의 IID는 LCR 인스트럭션(309)의 인스트럭션 데이터 값과 함께 인스트럭션 스택(302)의 아래로 이동한다. LCR 인스트럭션이 스택의 바닥에 도달하면, 실행될 준비가 완료된다. 그러나 모든 데이터 종속성이 해결될 때까지 인스트럭션은 실행될 수 없다. LCR 인스트럭션은 오퍼랜드 필드(303)의 유효 데이터가 사용가능할 때까지 대기하여야 한다.
분기/시스템 처리 유닛(205)은 실행 유닛 종료 버스를 스누핑(snooping)함으로써 실행 대기중인 LCR 인스트럭션의 데이터 종속성을 해결한다. 종료 버스는 데이터를 XU(304)와 같은 XU로부터 전송한다. 상기 데이터는 조건 코드, 유효성 비트, IID 및 예외(exception)를 포함한다. XU(304)에서 실행 중인 인스트럭션으로 인해 조건 레지스터(207) 내의 필드(303)로의 기록이 보류되면, 다음에 실행될 LCR 인스트럭션은 해당 오퍼랜드 필드(303a-303c)의 유효 데이터가 사용가능할 때까지 대기하여야 한다. 다시 말해 종래 기술에 의하면, 다음에 실행될 LCR 인스트럭션은 실행 유닛(304) 내의 인스트럭션이 종료되고, 그 결과 조건 레지스터(207) 내의 각각의 오퍼랜드 필드(303a-303c)가 갱신될 때까지 대기하여야 한다.
이러한 병목 현상을 완화시키기 위해, 본 발명의 원리에 따른 분기/시스템 처리 유닛(205) 내의 분기/시스템 논리(310)는 XU(304)의 종료 버스를 스누핑한다. 다음에 실행될 LCR 인스트럭션은 오퍼랜드 BA, BB 및 BT 각각에 대한 종속성을 반영하는 필드(308a-308c)에 포함된 IID를 통해 자신의 오퍼랜드 종속성을 분기/시스템 논리(310)에 통지한다. 이들 IID가 오퍼랜드 값을 변경하는 인스트럭션의 식별자임을 상기하여야 한다. 분기/시스템 논리(310)는 IID를 사용하여 대응 인스트럭션의 XU(304) 상의 실행 종료를 스누핑한다. 필드(308a-308c) 내의 하나 이상의 IID에 대응하는 인스트럭션의 IID가 종료 IID 라인(311) 상에 나타나면, 분기/시스템 논리(310)는 대응 인스트럭션이 종료 중이며, 종료 조건 코드 라인(312) 상에서 오퍼랜드 값이 사용가능하다는 것을 인식한다. XU(304)가 종료 유효 라인(313) 상에 유효성 데이터 값을 설정하면, 조건 코드 라인(312) 상의 오퍼랜드 값은 유효 상태가 된다. 종료 조건 코드는 필드(308a-308c)의 필드(314a-314c)에 각각 저장된다. 그리하여 모든 오퍼랜드 데이터 값의 종속성이 해결되면, 인스트럭션 스택(302)의 바닥에 위치하는 LCR 인스트럭션(109)은 실행 유닛(304)에서 실행 중인 인스트럭션이 완료되기를 기다리지 않고 실행될 수 있다. 이러한 방법으로, LCR 인스트럭션은 본 발명의 원리에 따라 분기/시스템 유닛 처리 장치(205)에 의해 직병렬 변환된다.
또한 분기/시스템 논리(310)는 조건 레지스터(207)를 변경하는 인스트럭션의 IID를 필드(308a-308c)에 저장하는 것을 제어한다. LCR 인스트럭션이 디스패치 유닛(204)에 의해 분기 큐(301)로 디스패치되고 인스트럭션 스택(302) 상부의 LCR 인스트럭션(309)에 로드되면, 분기/시스템 논리(310)는 인스트럭션 오퍼랜드에 해당하는 조건 레지스터(207) 내의 필드(303)를 검출한다. 그 후 분기/시스템 논리(310)는 제어 신호를 MUX(315)로 전송한다. MUX(315)는 조건 레지스터(207) 필드를 변경하는 보류 중인 인스트럭션에 대응하는 조건 레지스터 리네임 버퍼(305) 내의 각 IID(307)를 입력으로 수신한다. 제어 신호에 응답하여,MUX(315)는 LCR 인스트럭션 오퍼랜드 BA, BB, 및 BT 필드(308a-308c)를 각각 변경하는 각 XU(304) 내의 보류 인스트럭션의 IID을 선택한다. 그 후 선택된 IID는 분기 큐(301) 내의 필드(308a-308c)에 로드되며, 전술한 바와 같이 인스트럭션 스택(302) 내의 인스트럭션이 실행됨에 따라 LCR 인스트럭션(309)과 함께 스택의 아래로 이동한다.
오퍼랜드 BA, BB, 및 BT를 변경하는 모든 인스트럭션이 종료되면, 조건 레지스터(207) 내의 대응 필드(303a-303c)는 유효 데이터를 가지게 된다. 이러한 경우, 인스트럭션이 종료되면 조건 레지스터(207)의 필드(303a-303c)에 대응하는 필드(307c) 내의 기록 보류 데이터 값은 소거(clear)된다. 그 후 분기/시스템 논리(310)는 LCR 인스트럭션 실행시 조건 레지스터(207) 내의 필드(303a-303c) 내의 오퍼랜드 값을 사용한다.
본 발명의 원리에 따라 무순서 논리 조건 레지스터 인스트럭션 처리 방법을 도시하는 순서도가 도 4에 도시되어 있다. 단계(400)에서 디스패치 유닛(204)에 의해 LCR 인스트럭션이 디스패치되며, 단계(401)에서 인스트럭션이 분기 큐(301)에 로드된다.
단계(402)에서 기록 보류 데이터 값이 필드(307c)에 설정되어 있지 않으면, 각 조건 레지스터 필드(303)에 대해 필드(307b) 내의 조건 레지스터 값이 유효상태가 되며, 단계(403)에서 다음에 실행될 LCR 인스트럭션에 의해 요구되는 데이터 값이 조건 레지스터 리네임 버퍼(305)로부터 판독된다. 그 후 단계(404)에서 LCR 인스트럭션이 실행되며, 단계(405)에서 리네임 버퍼(305)를 조건 레지스터(207)와 매핑한다.
그러나 단계(402)에서 기록 보류 데이터 값이 하나 이상의 필드(307c)에 설정되어 있으면, XU(304) 내의 보류 인스트럭션은 필드(307b) 내의 조건 레지스터 데이터를 무효상태로 만든다. 그 후 단계(406)에서 기록 보류 데이터 값 세트를 가지는 필드(307c)에 대응하는 필드(307a) 내의 IID가 필드(308)에 로드된다. IID는 보류 인스트럭션에 의해 변경될 조건 레지스터(307) 내의 오퍼랜드 필드(303a-303c)에 대응하는 필드(308a-308c)에 로드된다. 전술한 바와 같이, 분기/시스템 논리(310) 및 MUX(313)는 필드(308) 내로 IID를 기록하는 것에 영향을 미친다.
단계(407)에서는, 단계(408)에서 분기 큐(301)에 로드된 IID에 대응하는 종료 중인 인스트럭션의 IID에 대하여 XU(304)의 종료 버스가 스누핑된다. 단계(408)에서, 필드(308)에 저장된 IID에 대응하는 요구된 모든 인스트럭션이 종료될 때까지 스누핑이 계속된다. 그 후 단계(409)에서, 종료 버스로부터 대응 LCR 인스트럭션 오퍼랜드에 대한 조건 레지스터의 조건 코드를 구한다. 그 후 다음에 실행될 LCR 인스트럭션은 필요한 오퍼랜드 값을 가지게 되며, 단계(410)에서 상기 LCR 인스트럭션이 실행된다. 단계(411)에서 조건 레지스터(207)가 리네임 버퍼(305)와 매핑되고, 그 결과 조건 레지스터 리네임 버퍼(305) 내의 필드(307b)는 LCR 인스트럭션의 연산에 의해 갱신된 조건 레지스터 데이터 값을 포함한다.
본 발명 및 본 발명의 장점에 대하여 상세하게 기술하였지만, 첨부되는 특허청구범위에 기술되어 있는 본 발명의 사상과 범위를 벗어나지 않고 본 발명에 대하여 여러 가지 수정, 대체 및 변경을 가할 수 있다는 것을 이해해야 한다.
본 발명의 리네임 장치 및 방법은 CR을 갱신하거나 사용해야 하는 각 인스트럭션을 무순서로 실행할 수 있으며, 그 결과 인스트럭션 실행 병렬성 및 프로세서 성능이 개선된다.

Claims (21)

  1. 무순서 논리 조건 레지스터 처리용 데이터 처리 시스템에 있어서,
    a) 논리 조건 레지스터 동작을 구현하는 복수의 인스트럭션과 통신하기 위한 입력 수단;
    b) 상기 복수의 인스트럭션 중 하나 이상의 인스트럭션을 수신하고, 하나 이상의 실행 유닛 각각의 출력과 연결되어 상기 하나 이상의 실행 유닛으로부터 인스트럭션 오퍼랜드(operand) 값을 수신하며, 복수의 인스트럭션 식별자(IID)를 수신하는 부분을 포함하는 처리 유닛―여기서 복수의 인스트럭션 식별자에 대응하는 실행 유닛 인스트럭션은 하나 이상의 구조화된 레지스터(architected register) 오퍼랜드를 변경함―; 및
    c) 상기 구조화된 레지스터로부터 데이터를 수신하며, 상기 처리 유닛과 연결되어 처리 유닛에 상기 IID를 제공하는 데이터 저장 장치
    를 포함하는 데이터 처리 시스템.
  2. 제1항에 있어서,
    상기 처리 유닛은 상기 하나 이상의 실행 유닛 각각의 출력과 연결된 논리 유닛을 추가로 포함하며,
    상기 복수의 인스트럭션 식별자를 수신하는 부분은 상기 논리 유닛과 연결된 인스트럭션 스택에 포함되어 있는
    데이터 처리 시스템.
  3. 제1항에 있어서,
    상기 처리 유닛은 소정의 깊이를 가지는 인스트럭션 스택을 포함하며,
    상기 복수의 인스트럭션 식별자를 수신하는 부분은 각 인스트럭션 스택 엔트리 내의 복수의 필드로 이루어진 하부세트(subset)를 구성하는
    데이터 처리 시스템.
  4. 제1항에 있어서,
    상기 데이터 저장 장치가 멀티플렉서에 의해 상기 처리 유닛과 연결되는 데이터 처리 시스템.
  5. 제1항에 있어서,
    복수의 구조화된 레지스터 오퍼랜드와 연관된 상기 복수의 인스트럭션 식별자를 수신하는 부분이 조건 코드 데이터 값을 수신하는 부분을 추가로 포함하는 데이터 처리 시스템.
  6. 제1항에 있어서,
    상기 처리 유닛이 상기 하나 이상의 실행 유닛 각각의 출력으로부터의 유효성 데이터 값에 응답하여 상기 출력으로부터 구조화된 레지스터 데이터 값을 수신하는 데이터 처리 시스템.
  7. 제1항에 있어서,
    a) 상기 입력 수단은 디스패처(dispatcher)이며;
    b) 상기 처리 수단은
    ⅰ) 복수의 저장 위치―여기서 각 저장 위치는 적어도 3개의 데이터 필드를 가지며, 이중 적어도 2개의 필드는 인스트럭션 식별자(IID)를 포함하고 조건 코드 데이터 값을 수신하는 하부필드를 포함함―를 가지는 분기 큐(branch queue);
    ⅱ) 상기 분기 큐 및 복수의 실행 유닛 각각의 종료 버스와 연결되어 있으며, 조건 레지스터를 갱신하는 인스트럭션에 대응하는 인스트럭션 식별자(IID)를 수신하는 논리 유닛; 및
    ⅲ) 상기 논리 유닛과 연결되어 있으며, 복수의 데이터 필드를 포함하는 구조화 조건 레지스터
    를 포함하는 분기/시스템 처리 유닛이며;
    c) 상기 데이터 저장 장치는 조건 레지스터 리네임 버퍼―여기서 조건 레지스터 리네임 버퍼는 상기 조건 레지스터를 갱신하는 인스트럭션에 대응하는 IID를 포함하는 제1 데이터 필드, 기록 보류 데이터 값(a write pending data value)을 포함하는 제2 데이터 필드, 조건 코드 데이터 값을 포함하는 제3 데이터 필드를 포함하는 적어도 3개의 데이터 필드를 가지는 복수의 저장 레지스터를 포함함―이며;
    d) 상기 복수의 저장 레지스터는 상기 조건 레지스터 내의 데이터 필드와 적어도 동일한 수 이상의 저장 레지스터를 포함하며;
    e) 상기 IID를 포함하는 데이터 필드가 멀티플렉서(MUX)에 의해 상기 IID를 포함하는 분기 큐의 2개의 데이터 필드와 연결되어 있으며;
    f) 상기 MUX는 상기 논리 회로로부터 제어 신호를 수신하는
    데이터 처리 시스템.
  8. 데이터 프로세서에서 논리 조건 레지스터 처리의 직병렬 변환 메커니즘에 있어서,
    a) 하나 이상의 인스트럭션 레지스터―여기서 각 인스트럭션 레지스터는 인스트럭션 데이터를 포함하는 제1 부분과 제1 및 제2 인스트럭션 식별자를 포함하는 적어도 2개의 부분을 포함하며, 상기 식별자는 조건 레지스터 데이터 값을 변경하는 인스트럭션에 대응됨―를 포함하는 인스트럭션 스택 및 상기 인스트럭션 데이터에 응답하여 조건 레지스터 데이터 값에 대한 논리 연산을 수행하는 논리 회로를 가지는 큐;
    b) 상기 논리 회로와 연결된 조건 레지스터; 및
    c) 하나 이상의 저장 위치―여기서 저장 위치 중 제1 저장 위치는 인스트럭션 식별자를 포함하고, 제2 저장 위치는 조건 레지스터 데이터 값을 포함하며, 상기 제1 및 제2 저장 위치는 상기 논리 회로와 연결됨―를 가지는 데이터 저장 장치
    를 포함하는 직병렬 변환 메커니즘.
  9. 제8항에 있어서,
    상기 논리 회로가 하나 이상의 실행 유닛의 출력 버스와 연결되는 직병렬 변환 메커니즘.
  10. 제8항에 있어서,
    상기 데이터 저장 장치의 각 저장 위치가 상기 조건 레지스터의 데이터 필드에 대응하는 직병렬 변환 메커니즘.
  11. 제8항에 있어서,
    상기 데이터 저장 장치의 각 저장 위치가 제3 저장 위치―여기서 제3 저장 위치는 제3 데이터 값을 포함하고 상기 논리 회로와 연결되어 있으며, 제3 데이터 값은 기록 보류 상태(write pending state)를 표시(denote)함―를 추가로 포함하는 직병렬 변환 메커니즘.
  12. 무순서 논리 조건 레지스터 처리 방법에 있어서,
    제1 조건 레지스터 인스트럭션을 제1 데이터 저장 장치―여기서 제1 데이터 저장 장치는 하나 이상의 데이터 저장 위치를 가지며, 각 저장 위치는 복수의 데이터 저장부를 포함함―의 제1 데이터 저장 위치에 저장하는 단계; 및
    적어도 하나의 제2 조건 레지스터 인스트럭션이 상기 제1 조건 레지스터 인스트럭션의 오퍼랜드에 대응하는 적어도 하나의 조건 레지스터 필드를 변경하는 경우, 상기 제2 조건 레지스터 인스트럭션과 연관된 인스트럭션 식별자를 상기 복수의 데이터 저장부의 적어도 하나의 제2 데이터 저장부에 저장하는 단계
    를 포함하는 무순서 논리 조건 레지스터 처리 방법.
  13. 제12항에 있어서,
    하나 이상의 실행 유닛 각각과 연관된 출력 버스를 스누핑하는 단계; 및
    상기 저장된 하나 이상의 인스트럭션 식별자에 대응하는 인스트럭션 식별자가 상기 버스 상에 출력되면, 출력된 각 식별자에 대응하는 조건 레지스터 데이터 값을 구하는 단계
    를 추가로 포함하는 무순서 논리 조건 레지스터 처리 방법.
  14. 제13항에 있어서,
    상기 적어도 하나의 조건 레지스터 데이터 값을 구하는 단계가 데이터 유효 신호에 응답하여 이루어지는 무순서 논리 조건 레지스터 처리 방법.
  15. 제12항에 있어서,
    상기 인스트럭션 식별자를 저장하는 단계는 제2 데이터 저장 장치 내의 데이터 저장 위치에 포함된 데이터 값에 응답하며,
    상기 제2 데이터 저장 장치는 적어도 하나의 데이터 저장 위치를 가지는
    무순서 논리 조건 레지스터 처리 방법.
  16. 제12항에 있어서,
    제2 데이터 저장 장치의 데이터 저장 위치로부터 상기 제1 조건 레지스터 인스트럭션의 오퍼랜드에 대응하는 적어도 하나의 조건 레지스터 데이터 값을 구하는 단계를 추가로 포함하며,
    상기 제2 데이터 저장 장치가 적어도 하나의 데이터 저장 위치를 가지는
    무순서 논리 조건 레지스터 처리 방법.
  17. 제12항에 있어서,
    상기 인스트럭션 식별자를 저장하는 단계는 제2 데이터 저장 장치의 데이터 저장 위치로부터 상기 인스트럭션 식별자를 구하는 단계를 추가로 포함하며,
    상기 제2 데이터 저장 장치는 적어도 하나의 데이터 저장 위치를 가지는
    무순서 논리 조건 레지스터 처리 방법.
  18. 제15항에 있어서,
    상기 각 데이터 저장 위치는 복수의 데이터 저장부―여기서 복수의 데이터 저장부 중 제1 저장부는 상기 인스트럭션 식별자를 포함함―를 포함하며,
    상기 인스트럭션 식별자를 구하는 단계는 상기 데이터 저장 위치의 제2 저장부에 포함된 데이터 값에 응답하는
    무순서 논리 조건 레지스터 처리 방법.
  19. 제16항에 있어서,
    상기 각 데이터 저장 위치의 제2 저장부에 포함된 데이터 값에 응답하여 하나 이상의 조건 레지스터 데이터 값을 구하는 단계를 추가로 포함하며,
    각 조건 레지스터 데이터 값은 제3 데이터 저장 위치에 포함되어 있는
    무순서 논리 조건 레지스터 처리 방법.
  20. 제12항에 있어서,
    상기 인스트럭션 식별자를 저장하는 단계가, 상기 적어도 하나의 제2 조건 레지스터 인스트럭션이 상기 제1 조건 레지스터 인스트럭션과 본질적으로 동시에 디스패치되면, 디스패치 시점에 상기 적어도 하나의 제2 조건 레지스터 인스트럭션으로부터 인스트럭션 식별자를 구하는 단계를 추가로 포함하는 무순서 논리 조건 레지스터 처리 방법.
  21. 제12항에 있어서,
    a) 하나 이상의 실행 유닛 각각과 연관된 출력 버스를 스누핑하는 단계;
    b) 하나 이상의 상기 저장된 인스트럭션 식별자에 대응하는 인스트럭션 식별자가 상기 버스 상에 출력되면, 데이터 유효 신호에 응답하여 상기 출력된 각 식별자에 대응하는 조건 코드를 구하는 단계; 및
    c) 조건 레지스터 리네임 버퍼―여기서 조건 레지스터 리네임 버퍼는 복수의데이터 레지스터를 구비하며, 각 데이터 레지스터는 적어도 3개의 데이터 저장부를 구비함―의 제2 데이터 저장부 내의 제1 기록 보류 데이터 값에 응답하여, 상기 조건 레지스터 리네임 버퍼의 제1 데이터 레지스터 저장부로부터 상기 제1 조건 레지스터 인스트럭션 오퍼랜드에 대응하는 적어도 하나의 조건 코드를 구하는 단계
    를 추가로 포함하며,
    상기 인스트럭션 식별자를 저장하는 상기 단계는
    ⅰ) 상기 적어도 하나의 제2 조건 레지스터 인스트럭션이 상기 제1 조건 레지스터 인스트럭션과 본질적으로 동시에 디스패치되면, 디스패치 시점에 상기 적어도 하나의 제2 조건 레지스터 인스트럭션으로부터 상기 인스트럭션 식별자를 구하는 단계; 및
    ⅱ) 상기 적어도 하나의 제2 조건 레지스터 인스트럭션이 상기 제1 조건 레지스터 인스트럭션과 본질적으로 동시에 디스패치되지 않으면, 상기 조건 레지스터 리네임 버퍼의 제2 데이터 저장부 내의 제2 기록 보류 데이터 값에 응답하여 제2 데이터 저장 장치의 상기 조건 레지스터 리네임 버퍼의 제3 데이터 저장부로부터 상기 인스트럭션 식별자를 구하는 단계
    를 추가로 포함하는
    무순서 논리 조건 레지스터 처리 방법.
KR1019990004625A 1998-02-17 1999-02-10 무순서 레지스터 동작용 장치를 구비하는 데이터 처리 시스템 및그 방법 KR100343601B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/024,804 US6061785A (en) 1998-02-17 1998-02-17 Data processing system having an apparatus for out-of-order register operations and method therefor
US09/024,804 1998-02-17
US9/024,804 1998-02-17

Publications (2)

Publication Number Publication Date
KR19990072553A KR19990072553A (ko) 1999-09-27
KR100343601B1 true KR100343601B1 (ko) 2002-07-11

Family

ID=21822485

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019990004625A KR100343601B1 (ko) 1998-02-17 1999-02-10 무순서 레지스터 동작용 장치를 구비하는 데이터 처리 시스템 및그 방법

Country Status (3)

Country Link
US (1) US6061785A (ko)
JP (1) JP3600467B2 (ko)
KR (1) KR100343601B1 (ko)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6308260B1 (en) * 1998-09-17 2001-10-23 International Business Machines Corporation Mechanism for self-initiated instruction issuing and method therefor
US6728419B1 (en) * 2000-02-17 2004-04-27 Xerox Corporation Multi-tasking multi-threaded image processing system and method for image capture devices
US6804815B1 (en) * 2000-09-18 2004-10-12 Cisco Technology, Inc. Sequence control mechanism for enabling out of order context processing
JP3816845B2 (ja) 2002-07-05 2006-08-30 富士通株式会社 プロセッサ及び命令制御方法
US7406587B1 (en) * 2002-07-31 2008-07-29 Silicon Graphics, Inc. Method and system for renaming registers in a microprocessor
US7684401B2 (en) 2003-07-21 2010-03-23 Qlogic, Corporation Method and system for using extended fabric features with fibre channel switch elements
US7930377B2 (en) 2004-04-23 2011-04-19 Qlogic, Corporation Method and system for using boot servers in networks
KR100628573B1 (ko) 2004-09-08 2006-09-26 삼성전자주식회사 조건부실행명령어의 비순차적 수행이 가능한 하드웨어장치 및 그 수행방법
US7676611B2 (en) * 2004-10-01 2010-03-09 Qlogic, Corporation Method and system for processing out of orders frames
US7508396B2 (en) 2005-09-28 2009-03-24 Silicon Integrated Systems Corp. Register-collecting mechanism, method for performing the same and pixel processing system employing the same
US20070186081A1 (en) * 2006-02-06 2007-08-09 Shailender Chaudhry Supporting out-of-order issue in an execute-ahead processor
US9436476B2 (en) 2013-03-15 2016-09-06 Soft Machines Inc. Method and apparatus for sorting elements in hardware structures
US9627038B2 (en) 2013-03-15 2017-04-18 Intel Corporation Multiport memory cell having improved density area
US9582322B2 (en) 2013-03-15 2017-02-28 Soft Machines Inc. Method and apparatus to avoid deadlock during instruction scheduling using dynamic port remapping
US20140281116A1 (en) 2013-03-15 2014-09-18 Soft Machines, Inc. Method and Apparatus to Speed up the Load Access and Data Return Speed Path Using Early Lower Address Bits
JP2017516228A (ja) 2014-05-12 2017-06-15 インテル・コーポレーション 自己書き換えコードのハードウェアサポートを提供する方法及び装置
US10055229B2 (en) * 2016-01-21 2018-08-21 Arm Limited Controlling processing of instructions in a processing pipeline

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04270421A (ja) * 1989-12-15 1992-09-25 Hyundai Electron America Inc プロセサアーキテクチャ
KR940009098A (ko) * 1992-10-08 1994-05-16 서승석 석탄재를 이용한 건자재 제조방법
KR940009820A (ko) * 1992-10-30 1994-05-24 윌리엄 티. 엘리스 슈퍼 스칼라 컴퓨터 아키텍춰 및 그 운영 방법
JPH06290045A (ja) * 1993-04-02 1994-10-18 Toshiba Corp 並列演算処理装置の演算エラー検出方式
KR950701101A (ko) * 1992-03-31 1995-02-20 슈퍼스칼라 알아이에스씨(risc) 명령어 스케쥴링
JPH096611A (ja) * 1995-06-07 1997-01-10 Internatl Business Mach Corp <Ibm> データ処理システムにおけるデータをバッファリングする方法およびシステム
JPH1040105A (ja) * 1996-04-16 1998-02-13 Internatl Business Mach Corp <Ibm> リネーム・レジスタを割り付ける方法及びプロセッサ

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100299691B1 (ko) * 1991-07-08 2001-11-22 구사마 사부로 확장가능알아이에스씨마이크로프로세서구조
US5850542A (en) * 1995-09-15 1998-12-15 International Business Machines Corporation Microprocessor instruction hedge-fetching in a multiprediction branch environment
US5828895A (en) * 1995-09-20 1998-10-27 International Business Machines Corporation Methods and system for predecoding instructions in a superscalar data processing system
US5826070A (en) * 1996-08-30 1998-10-20 International Business Machines Corporation Apparatus and method for maintaining status flags and condition codes using a renaming technique in an out of order floating point execution unit
US5805876A (en) * 1996-09-30 1998-09-08 International Business Machines Corporation Method and system for reducing average branch resolution time and effective misprediction penalty in a processor
US5898853A (en) * 1997-06-25 1999-04-27 Sun Microsystems, Inc. Apparatus for enforcing true dependencies in an out-of-order processor
US5838988A (en) * 1997-06-25 1998-11-17 Sun Microsystems, Inc. Computer product for precise architectural update in an out-of-order processor

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04270421A (ja) * 1989-12-15 1992-09-25 Hyundai Electron America Inc プロセサアーキテクチャ
KR950701101A (ko) * 1992-03-31 1995-02-20 슈퍼스칼라 알아이에스씨(risc) 명령어 스케쥴링
KR940009098A (ko) * 1992-10-08 1994-05-16 서승석 석탄재를 이용한 건자재 제조방법
KR940009820A (ko) * 1992-10-30 1994-05-24 윌리엄 티. 엘리스 슈퍼 스칼라 컴퓨터 아키텍춰 및 그 운영 방법
JPH06290045A (ja) * 1993-04-02 1994-10-18 Toshiba Corp 並列演算処理装置の演算エラー検出方式
JPH096611A (ja) * 1995-06-07 1997-01-10 Internatl Business Mach Corp <Ibm> データ処理システムにおけるデータをバッファリングする方法およびシステム
JPH1040105A (ja) * 1996-04-16 1998-02-13 Internatl Business Mach Corp <Ibm> リネーム・レジスタを割り付ける方法及びプロセッサ

Also Published As

Publication number Publication date
JP3600467B2 (ja) 2004-12-15
KR19990072553A (ko) 1999-09-27
US6061785A (en) 2000-05-09
JPH11296371A (ja) 1999-10-29

Similar Documents

Publication Publication Date Title
KR100343601B1 (ko) 무순서 레지스터 동작용 장치를 구비하는 데이터 처리 시스템 및그 방법
US6944744B2 (en) Apparatus and method for independently schedulable functional units with issue lock mechanism in a processor
KR100335745B1 (ko) 고성능의 추론적인 오정렬 로드 연산
US5941981A (en) System for using a data history table to select among multiple data prefetch algorithms
US5845323A (en) Way prediction structure for predicting the way of a cache in which an access hits, thereby speeding cache access time
US6247106B1 (en) Processor configured to map logical register numbers to physical register numbers using virtual register numbers
US6202130B1 (en) Data processing system for processing vector data and method therefor
US5682493A (en) Scoreboard table for a counterflow pipeline processor with instruction packages and result packages
US6192465B1 (en) Using multiple decoders and a reorder queue to decode instructions out of order
US6742111B2 (en) Reservation stations to increase instruction level parallelism
US6684323B2 (en) Virtual condition codes
US6128721A (en) Temporary pipeline register file for a superpipelined superscalar processor
KR100698493B1 (ko) 좁은 피연산자들에서 계산을 수행하는 방법 및 장치
US6260134B1 (en) Fixed shift amount variable length instruction stream pre-decoding for start byte determination based on prefix indicating length vector presuming potential start byte
US6088781A (en) Stride instruction for fetching data separated by a stride amount
US5805849A (en) Data processing system and method for using an unique identifier to maintain an age relationship between executing instructions
US6247117B1 (en) Apparatus and method for using checking instructions in a floating-point execution unit
KR100335746B1 (ko) 무순서 동작시 예외를 트래킹하는 장치를 구비하는 데이터 처리 시스템및 그 방법
US6393546B1 (en) Physical rename register for efficiently storing floating point, integer, condition code, and multimedia values
US6405303B1 (en) Massively parallel decoding and execution of variable-length instructions
US6230262B1 (en) Processor configured to selectively free physical registers upon retirement of instructions
KR100523706B1 (ko) 단일 사이클 파이프라인 스톨을 발생하기 위한 파이프라인 프로세서 시스템 및 방법
US20040199749A1 (en) Method and apparatus to limit register file read ports in an out-of-order, multi-stranded processor
US6442677B1 (en) Apparatus and method for superforwarding load operands in a microprocessor
US20050273577A1 (en) Microprocessor with integrated high speed memory

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

Year of fee payment: 6

LAPS Lapse due to unpaid annual fee