KR20000005685A - 분산인스트럭션완료로직 - Google Patents

분산인스트럭션완료로직 Download PDF

Info

Publication number
KR20000005685A
KR20000005685A KR1019990018034A KR19990018034A KR20000005685A KR 20000005685 A KR20000005685 A KR 20000005685A KR 1019990018034 A KR1019990018034 A KR 1019990018034A KR 19990018034 A KR19990018034 A KR 19990018034A KR 20000005685 A KR20000005685 A KR 20000005685A
Authority
KR
South Korea
Prior art keywords
instruction
completion
older
unit
central
Prior art date
Application number
KR1019990018034A
Other languages
English (en)
Inventor
구엔둥컥
Original Assignee
포만 제프리 엘
인터내셔널 비지네스 머신즈 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 포만 제프리 엘, 인터내셔널 비지네스 머신즈 코포레이션 filed Critical 포만 제프리 엘
Publication of KR20000005685A publication Critical patent/KR20000005685A/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/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative 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/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

본 발명은 분산 인스트럭션 완료 로직(distributed instruction completion logic)에 관한 것이다. 수퍼스칼라 프로세서(superscalar processor) 내의 각 실행 유닛(execution unit)은 디스패치(dispatch)되었으나 아직 완료되지 않은 인스트럭션 모두의 상태에 대한 사본(copy)을 포함하는 관련 완료 테이블(completion table)을 구비한다. 중앙 완료 테이블(central completion table)은 디스패치 유닛 및 각 실행 유닛에 의한 보고에 따라, 디스패치된 인스트럭션 모두의 상태를 유지한다. 실행 유닛은 특정 형태의 인스트럭션을 퇴거(retire)시킬 책임이 있는 완료 테이블로 종료 신호(finish signal)를 전송한다. 중앙 완료 테이블은 인터럽트 발생 가능성이 있는 인스트럭션과 인스트럭션 수행 결과 동일 레지스터를 목표로 지정할 수 있는 인스트럭션을 퇴거시킨다. 실행 유닛에 관련된 완료 테이블은 나머지 인스트럭션을 퇴거시키며, 실행 유닛은 중앙 완료 테이블 및 각 실행 유닛으로 인스트럭션의 상태를 전송한다. 이로 인해 중앙 완료 테이블에 의해 퇴거되는 인스트럭션의 수가 감소되므로 매 클록 주기 당 퇴거되는 인스트럭션의 수가 증가한다.

Description

분산 인스트럭션 완료 로직 {DISTRIBUTED INSTRUCTION COMPLETION LOGIC}
본 발명은 수퍼스칼라 프로세서(superscalar processor)에 관한 것으로, 구체적으로는 매 주기 당 완료되는 인스트럭션의 수를 증가시키는 수퍼스칼라 프로세서에 관한 것이다. 보다 구체적으로, 본 발명은 수퍼스칼라 프로세서의 인스트럭션 완료 방식(instruction completion scheme) 및 완료 유닛(completion unit)을 개선하는 것에 관한 것이다.
마이크로프로세서("프로세서")가 매 클록 주기(clock cycle) 마다 다중 인스트럭션(multiple instruction)을 완료할 수 있는 경우에 수퍼스칼라로 분류된다. 수퍼스칼라 프로세서는 매 클록 주기 당 보다 많은 다중 인스트럭션을 완료하도록 프로세서 내에서 다중 병렬 처리 유닛(multiple parallel processing unit)을 이용하는 구조를 갖는다. 통상적으로, 이러한 처리 유닛은 병렬로 동작하는 다중 실행 유닛(multiple execution unit), 실행 유닛으로 인스트럭션 및 데이터를 전송하는 디스패치 유닛(dispatch unit), "완료 테이블(completion table)"을 포함하여 인스트럭션을 추적하고(tracking) 퇴거시키는(retiring) 완료 유닛과 실행 유닛을 위해 인스트럭션을 예비 적재하는(preloading) 리네임 버퍼(rename buffer)(리네임 레지스터(register))를 포함한다. 이러한 완료 테이블의 추적 및 퇴거 특징에 의해 인스트럭션이 무순서(out of order)로 완료될 수 있다.
다중 병렬 처리 유닛을 사용하는 경우에 효율 및 속도를 위하여 인스트럭션이 "파이프라인될(pipelined)" 필요가 있다. 파이프라인화(pipelining)는 실행 유닛이 인스트럭션을 기다리지 않도록, 즉 첫 번째 인스트럭션이 완료되기 전에 실행 유닛이 두 번째 인스트럭션을 실행하기 시작하도록 인스트럭션을 인출하고(fetching) 디코드하는(decoding) 방법이다. 또한, 현재 구조에서는 (다른 분기 경로(branch path)의 인스트럭션을 실행하는) 추론적인 실행(speculativeexecution)과 프로세서의 성능을 향상시키기 위한 분기 예측(branch prediction)을 사용한다. 분기 예측은 인스트럭션이 분기하여 다음 번에 실행될 방향을 예측하는데 사용되며 이것은 통상적으로 90 퍼센트 정도 정확하다.
도 4는 수퍼스칼라 프로세서에서 인스트럭션의 흐름을 간략하게 예시하는 블록도이다. 다중 인스트럭션은 인출기(fetcher; 402)에 의해 인스트럭션 캐쉬(instruction cache)로부터 검색되어 분기 처리 유닛(branch processing unit; 404)이나 인스트럭션 큐(instruction queue; 406) 중 어느 하나에 놓여진다. 인스트럭션 큐(406)에 들어간 후, 인스트럭션은 디스패치 유닛(408)에 의해 여러 실행 유닛으로 유출된다. 디스패치 비율(dispatch rate)은 여럿 가운데서도 특히 실행 유닛의 사용 중 상태(busy status), 리네임 버퍼의 사용 가능성(availability)(예시되지 않음), 완료 테이블 버퍼의 사용 가능성에 좌우된다. 현재의 프로세서에서 인스트럭션 완료 로직(completion logic)은 프로세서 내의 단일 유닛인 완료 유닛에서 수행된다. 완료 유닛(418)은 인스트럭션의 무순서 실행을 허용하면서 디스패치로부터의 인스트럭션이 실행되어 종료(finish)될 때까지 추적한다. 인스트럭션의 상태는 실행 유닛(410, 412, 414, 416)이 인스트럭션을 완료하는 경우에 상기 실행 유니트에 의해 완료 테이블(418)로 전송된다. 그 후, 완료 유닛은 인스트럭션을 완료하거나 퇴거시킨 후, 구조화 레지스터(architected register) 내에 종료 데이터를 라이트백(write-back)시킬 수 있도록 나머지 실행 유닛으로 완료 신호를 전송한다.
그러나, 완료 유닛에 의해 매 주기마다 완료 또는 퇴거될 수 있는 인스트럭션의 수가 고정되어 있으며, 이것이 인스트럭션 디스패치 로직에서 병목현상(bottleneck)이 될 수 있는 제한 요소이다. 모든 인스트럭션은 완료 유닛(418)에 의해 추적되고 완료되며 특정 구조화 레지스터에 맡겨진다. 완료 유닛(418)이 정지하는 경우에 프로세서(400)의 효율 및 속도가 떨어질 수 있는 하나의 이유로는 실행 유닛(410, 412, 414, 416)이 완료 유닛(418) 내의 해당 인스트럭션 상태를 갱신하도록 종료 신호를 전송할 수 없다는 것이다. 완료 유닛(418)의 큐가 가득차서 종료 신호가 전송될 수 없기 때문에 실행 유닛(410, 412, 414, 416)이 정지한다. 리네임 버퍼(도시되지 않음)가 인스트럭션을 실행 유닛(410, 412, 414, 416)으로 현재 전송할 수 없기 때문에 백업(backup)이 계속된다. 디스패치 유닛(408)은 리네임 버퍼가 가득차서 추가 인스트럭션이 들어갈 자리가 없다고 결정한다. 따라서, 리네임 버퍼에 사용 가능한 공간이 없는 경우에 디스패치 유닛(408)은 인스트럭션을 디스패치하지 않으며, 그 결과로 프로세서가 정지된다.
완료 유닛(418)의 병목현상에 대한 두 번째 이유로는 완료 유닛(418)이 다중 인스트럭션을 동시에 퇴거시킬 수 있더라도 프로그램 순서대로 인스트럭션을 퇴거시켜야 한다는 것이다. 완료 테이블(418)의 항목(entry) 0(인스트럭션의 첫 번째 퇴거 위치)에 있는 인스트럭션이 아직 실행 중이어서 퇴거될 수 없는 경우, 인스트럭션 완료가 정지될 수 있다.
매 클록 주기마다 다중 인스트럭션을 실행할 수 있는 프로세서의 속도는 프로세서의 완료 테이블이 인스트럭션을 완료하거나 퇴거시키는 능력에 의해 제한된다.
따라서, 종래의 완료 유닛에 의해 제기되는 병목현상을 제거하는 방식으로 인스트럭션을 완료하는 방법 및 장치를 제공하는 것이 바람직하다. 또한, 매 주기 당 보다 많은 인스트럭션을 완료하는 것이 바람직하다. 또한, 인스트럭션을 퇴거시켜서 완료 테이블의 효율을 개선하는 것이 바람직하다.
따라서, 본 발명의 목적은 매 주기마다 보다 많은 인스트럭션을 완료시켜서 프로세서의 성능을 개선하는 것이다.
본 발명의 다른 목적은 종래의 완료 유닛에 의해 발생되는 인스트럭션 완료시의 병목현상을 제거하는 것이다.
본 발명의 또 다른 목적은 인스트럭션을 퇴거시켜서 완료 테이블의 효율을 개선하는 방법 및 장치를 제공하는 것이다.
도 1a는 본 발명의 바람직한 실시예가 구현되는 데이터 처리 시스템(data processing system)의 프로세서와 관련 부분에 대한 고수준(high level) 블록도.
도 1b는 본 발명의 바람직한 실시예에 따른 다중 실행 유닛(multiple execution unit) 및 다중 완료 테이블(multiple completion table)을 구비하는 데이터 프로세서(data processor)의 고수준 블록도.
도 2는 본 발명의 바람직한 실시예에 따른 중앙 완료 테이블 인스트럭션 큐(central completion table instruction queue)를 예시한 도면.
도 3은 본 발명의 바람직한 실시예에 따른 분산 완료 로직(distributed completion logic)의 방법을 예시하는 고수준 순서도.
도 4는 수퍼스칼라 프로세서(superscalar processor) 내의 완료 유닛을 통한 인스트럭션 흐름을 예시하는 고수준의 도면.
전술한 목적은 이하 기술되는 바와 같이 수행된다. 수퍼스칼라 프로세서 내의 각 실행 유닛은 디스패치되었으나 완료되지 않은 인스트럭션 모두의 상태에 대한 사본(copy)을 포함하는 관련 완료 테이블을 갖는다. 중앙 완료 테이블(central completion table)은 디스패치 유닛 및 개별 실행 유닛에 의한 보고에 따라 디스패치된 인스트럭션 모두의 상태를 유지한다. 실행 유닛은 특정 형태의 인스트럭션을 퇴거시킬 책임이 있는 완료 테이블로 종료 신호를 전송한다. 중앙 완료 테이블은 인터럽트의 원인이 될 수 있는 인스트럭션과 인스트럭션 수행 결과 동일 레지스터를 목표로 지정할 수도 있는 인스트럭션을 퇴거시킨다. 실행 유닛에 관련된 완료테이블은 나머지 인스트럭션을 퇴거시키고, 실행 유닛은 인스트럭션 상태를 중앙 완료 테이블과 각 실행 유닛으로 전송한다. 이로 인해 매 클록 주기 당 퇴거되는 인스트럭션의 수가 증가되어 중앙 완료 테이블에 의해 퇴거되는 인스트럭션의 수가 감소된다.
본 발명의 추가적인 목적, 특징, 및 이점은 물론 상기한 목적, 특징, 및 이점은 이하의 상세한 설명으로부터 명백히 이해될 수 있다.
본 발명의 신규한 특징은 첨부된 특허청구범위에 기술되어 있다. 그러나, 본 발명의 바람직한 사용 모드, 추가적인 목적 및 이점과 본 발명 자체는 첨부된 도면과 함께 실시예에 대한 이하의 상세한 설명을 참조함으로써 가장 양호하게 이해될 것이다.
이하, 도면을 참조하여 설명하면, 본 발명의 바람직한 실시예가 구현될 수 있는 데이터 처리 시스템의 프로세서 및 관련 부분에 대한 블록도가 도 1에 도시된다. 프로세서(100)는 미합중국 뉴욕주 아몽크(Armonk)에 있는 IBM사로부터 입수 가능한 PowerPCTM프로세서와 같은 단일 집적 회로 수퍼스칼라 프로세서이다. 따라서, 프로세서(100)는 레지스터(register), 버퍼(buffer), 메모리, 기타 부분과 같은 여러 유닛을 포함하며, 이러한 유닛 모두는 집적 회로로 형성된다. 또한, 프로세서(100)는 축소 명령 세트 컴퓨터(reduced instruction set computing; RISC) 기술에 따라 동작한다.
프로세서(100)는 제1 수준(L1)의 인스트럭션 캐쉬(I Cache; 102) 및 데이터캐쉬(D Cache; 104)를 포함하며, 각 캐쉬는 관련 메모리 관리 유닛(memory management unit)인 I MMU(106)와 D MMU(108)를 갖는다. 도 1에 되시되는 바와 같이, 프로세서(100)는 버스 인터페이스 유닛(bus interface unit; 114)을 통하여 시스템 어드레스 버스(system address bus; 110) 및 시스템 데이터 버스(system data bus; 112)에 연결된다. 인스트럭션은 버스 인터페이스 유닛(114)을 통하여 시스템 메모리(예시되지 않음)로부터 프로세서(100)로 검색되어 인스트럭션 캐쉬(102)에 저장되지만, 버스 인터페이스 유닛(114)을 통하여 검색된 데이터는 데이터 캐쉬(104)에 저장된다. 인스트럭션은 필요에 따라 인스트럭션 유닛(116)에 의해 인스트럭션 캐쉬(102)로부터 인출되며, 인스트럭션 유닛(116)은 인스트럭션 인출 로직, 인스트럭션 분기 예측 로직, 인스트럭션 큐, 디스패치 유닛을 포함한다.
인스트럭션 유닛(116) 내의 디스패치 유닛은 시스템 유닛(system unit; 118), 정수 유닛(integer unit; 120), 부동 소수점 유닛(floating point unit; 122)이나 로드/저장 유닛(load/store unit; 124)과 같은 실행 유닛으로 인스트럭션을 적절하게 디스패치한다. 시스템 유닛(118)은 조건 레지스터(condition register)의 논리 인스트럭션(logical instruction), 특정 레지스터의 전송 인스트럭션(transfer instruction), 기타 시스템 인스트럭션을 실행한다. 정수 또는 "고정 소수점(fixed-point) 유닛(120)은 정수나 범용 레지스터(general purpose register; GPR File)(126) 내의 결과로부터 피연산자(operand)를 검색하거나 저장하여 정수에 대한 더하기, 빼기, 곱하기, 나누기, 자리이동(shift)이나 회전(rotate) 연산을 수행한다. 부동 소수점 유닛(122)은 부동 소수점레지스터(FPR File; 128) 내의 결과로부터 피연산자를 검색하거나 저장하여 단일 정밀도(single precision) 및/또는 이중 정밀도(double precision) 곱하기/더하기 연산을 수행한다.
로드/저장 유닛(124)은 필요에 따라 데이터 캐쉬(104)로부터 정수 또는 부동 소수점 레지스터(126, 128)로 인스트럭션 피연산자를 로드하고, 정수나 부동 소수점 레지스터(126 또는 128)로부터 데이터 캐쉬(104)로 전송 가능한 경우에 인스트럭션 결과를 저장한다. 로드 및 저장 큐(130)는 데이터 캐쉬(104)와 정수나 부동 소수점 레지스터(126 또는 128) 사이의 전송을 위해 사용된다. 재정렬 버퍼(reorder buffer)를 포함하는 완료 유닛(132)은 무순서 인스트럭션 처리를 지원하기 위해 인스트럭션 유닛(116)과 함께 동작하고, 또한 인스트럭션 결과에 대해 특정 레지스터와 충돌하지 않도록 정수 및 부동 소수점 레지스터(126, 128) 내의 리네임 버퍼와 연결하여 동작한다. 공통 온칩 프로세서(common on-chip processor; COP) 및 결합 테스트 동작 그룹(join test action group; JTAG) 유닛(134)은 경계 주사 상호접속 테스트(boundary scan interconnect test)를 수행하기 위해 시스템으로 직렬 인터페이스(serial interface)를 제공한다.
도 1에 도시된 구조는 단지 본 발명을 예시하고 설명하기 위한 목적으로 제공되는 것이며, 어떤 구조적인 제한을 의미하고자 하는 것은 아니다. 당업자는 본 발명에 대한 많은 변형이 가능하다는 것을 이해할 것이다. 예를 들어, 프로세서(100)는 처리량(processing throughput)을 증가시키기 위해 다중 정수 및 부동 소수점 유닛을 포함할 수 있다. 이러한 모든 변형은 본 발명의 사상 및 범위내에 있다.
이하, 도 1b를 참조하여 본 발명의 바람직한 실시예에 따른 다중 실행 유닛 및 다중 완료 테이블을 구비하는 프로세서의 고수준(high level) 블록도가 예시된다. 중앙 완료 테이블(132)은 모든 인스트럭션의 퇴거(retirement)를 제어한다. 중앙 완료 테이블(132)은 출력을 제한하기 위해 고정된 수의 퇴거 위치를 갖는 인스트럭션 큐를 구비한다. 본 발명에서, 추가 완료 테이블이 프로세서에 추가되며, 각 실행 유닛은 중앙 완료 테이블(132)에 의해 완료되지 않은 인스트럭션을 완료시키기 위해 인스트럭션 완료 테이블을 갖는다.
각 실행 유닛은 자체 형태의 인스트럭션을 완료시킬 책임이 있다. 실행 유닛은 완료 정보를 기타 실행 유닛과 중앙 완료 테이블로 동보통신(broadcast)한다. 병렬로 동작하는 다중 완료 테이블은 보다 고속으로 인스트럭션을 완료할 수 있다. 중앙 완료 테이블(132)에 의해 처리되는 인스트럭션의 수를 감소시킴으로써 완료 속도가 증가되고 중앙 완료 테이블(132)의 큐가 더 빨리 비워지며; 완료 속도가 증가됨으로써 완료 테이블의 큐가 더 빨리 비워지며; 이에 의해 리네임 버퍼가 또한 더 빨리 해제되므로 매 주기 당 인스트럭션의 디스패치 비율이 더 높아진다.
프로세서의 주요 구성요소 동작이 도 1a에 기술되어 있다. 도 1b에서 프로세서의 동작은 완료 테이블(136, 138, 140, 142)이 추가되는 것을 제외하고는 도 1a에서의 프로세서 동작과 기본적으로 동일하다. 정수 유닛(120), 로드/저장 유닛(124), 부동 소수점 유닛(122), 시스템 유닛(118)과 같은 각 실행 유닛은 관련된 완료 테이블을 갖는다. 리네임 버퍼(126, 128)가 열려 있는 경우, 인스트럭션은 인스트럭션 유닛(116)으로부터 전송되어 부동 소수점 유닛(122)과 같은 실행 유닛에 의해 수신된다. 각 실행 유닛, 이 경우에 부동 소수점 유닛(122)은 인스트럭션의 형태를 판단하고, 인스트럭션을 종료한 후 종료 정보를 중앙 완료 테이블(132)과 부동 소수점 유닛(122)에 관련된 완료 테이블(140)로 전송한다. 중앙 완료 테이블(132) 또는 완료 테이블(140)은 인스트럭션의 형태에 따라 인스트럭션을 특정 구조화 레지스터로 퇴거시킨다.
중앙 완료 테이블(132) 내의 인스트럭션 완료 큐는 통상적으로 중앙 완료 테이블(132)에 의해 퇴거되는 인스트럭션을 실행 유닛의 완료 테이블(136, 138, 140, 142)로 전송함으로써 덜 혼잡해진다. 중앙 완료 테이블(132)에서의 이러한 인스트럭션 수의 감소로 인해 전체 처리량이 더 향상된다.
이하 도 2를 참조하면, 본 발명의 바람직한 실시예에 따른 중앙 완료 테이블의 인스트럭션 큐(200)가 예시된다. 중앙 완료 테이블의 인스트럭션 큐(200)는 머신에서의 인스트럭션 모두의 상태를 유지하는데 사용된다. 인스트럭션은 서로에 대해 무순서로 완료될 수 있으며, 인터럽트의 원인이 될 수 있는 이전의 인스트럭션이 프로세서의 파이프라인 내에 있는 경우에 인스트럭션이 완료되어서는 안된다. 디스패치 유닛이 완료 테이블의 인스트럭션 큐(200)에서 인터럽트를 발생할 수 있는 항목에 해당하는 인스트럭션에 대해 "인터럽트 발생 가능 비트(interruptible bit)"를 적용함으로써 인스트럭션이 무순서로 완료되는 것을 방지할 수 있다.
본 발명에서, 중앙 완료 테이블의 인스트럭션 큐(200)에 대한 스누핑이 더 오래된 임의의 인스트럭션의 인터럽트 발생 가능 비트(206)가 턴온되었는지를 판단할 수 있도록 스누프 로직(snoop logic; 202)이 참조번호 204와 같은 인입(incoming) 인스트럭션에 응용된다.
인입 인스트럭션(204)은 여럿 가운데서도 특히 인스트럭션 처리 방법, 인스트럭션 완료 시기, 및 큐 내에 관련된 인스트럭션이 있는지의 여부를 결정하는 다수의 부분(part)을 구비한다. 본 발명에서 중요한 인스트럭션의 부분은 도 2에 예시된다. 예를 들어, ID(208)는 인스트럭션의 식별자(identifier)로 큐 내에서 특정 인스트럭션을 구별할 수 있도록 한다. 본체(body) 또는 인스트럭션은 예시된 테이블에서 "인스트럭션"이라는 표제(heading)로 확인된다. "Int."(206)는 인스트럭션이 수행되는 중에 인터럽트를 발생할 수 있는 더 오래된 인스트럭션을 확인하도록, 종료된 인스트럭션 내에 포함되는 "인터럽트 발생 가능" 비트이다. 프로세서는 인스트럭션을 서로에 대해 무순서로 완료할 수 있을 것이며, 또한 인터럽트 발생 가능 비트를 사용함으로써 프로그램 순서를 계속 유지할 수 있다.
분기 보류 비트(branch pending bit; BP)(214)는 인스트럭션이 미해결 분기 경로(unresolved branch path) 내에 있다는 것을 나타낸다. 분기가 해결되는 경우에 이러한 BP 비트는 인스트럭션이 더 이상 추론적이지 않다는 것을 나타내도록 턴오프(turn off)된다. TC(218)는 디스패치 유닛이 중앙 완료 테이블을 스누프하여 동일한 레지스터를 목표로 지정하는 더 오래된 인스트럭션이 있는지를 판단한 후에 디스패치 유닛에 의해 놓여지는 비트이다. TC 비트(218)가 온(on)인 경우, 더 오래된 인스트럭션은 중앙 완료 테이블에 의해 완료되어야 한다. 대기 비트(wait bit; 216)는 인스트럭션(208)과 같이 인터럽트를 발생할 수 있는 인스트럭션이 검출되는 경우에 턴온되는 입력 인스트럭션 내의 비트이다. 그 후, 입력 인스트럭션(204)의 대기 비트(216)를 턴온함으로써 인스트럭션 ID(208)가 입력 인스트럭션(204)의 대기 ID(wait ID; 212) 내로 래치(latch)된다. 인터럽트를 발생할 수 있는 더 오래된 인스트럭션 ID(208)가 완료되는 경우, 이러한 완료 동작은 인스트럭션(204)에 의해 간단히 스누프된다. 인스트럭션 ID(208)가 인스트럭션(204)의 대기 ID(212)와 비교된 후 두 ID가 일치하면 인스트럭션(204)의 대기 비트(216)가 턴오프된다. 그 후, 인스트럭션(204)이 완료될 준비가 되면 완료될 수 있다.
입력 인스트럭션(204)은 인터럽트 발생 가능한 인스트럭션 ID, 즉 이 경우에는 인스트럭션(208)에 대해 중앙 완료 테이블 인스트럭션 큐(200)를 간단히 스누프한다. 더 오래된 인스트럭션(208)이 완료되는 경우, 인스트럭션(208)의 ID(210)가 완료 큐 내에 있는 인스트럭션(204)의 대기 ID(212)와 비교된다. 비교 결과 이들이 일치하면, 대기 비트(216)가 턴오프되고, 인스트럭션(204)은 완료될 수 있다.
도 3을 참조하면, 본 발명의 바람직한 실시예에 따른 분산 완료 로직의 프로세스를 예시하는 고수준의 순서도가 도시된다. 실행 유닛으로 인스트럭션을 전송하는 디스패치 유닛을 도시하는 단계(300)에서 프로세스가 시작된다. 디스패치 유닛이 실행 유닛으로 인스트럭션을 전송하는 동시에, 프로세스는 실행 유닛으로의 인스트럭션 디스패치를 나타내는 신호가 중앙 완료 유닛으로 전송되는 것을 도시하는 단계(302)로 진행한다. 프로세스는 실행 유닛이 자신의 지역 완료 테이블(local completion table)에 인스트럭션 상태를 기록하는 것에 대해 예시하는 단계(304)로 계속 진행된다.
그 후, 프로세스는 실행 유닛이 수신된 인스트럭션을 실행하는 것에 대해 도시하는 단계(306)로 진행한다. 그 후, 프로세스는 실행 유닛이 인스트럭션을 종료하는 것에 대해 예시하는 단계(308)로 진행한다. 다음에, 프로세스는 실행 유닛이 중앙 완료 테이블로 종료 신호를 전송하는 것에 대해 예시하는 단계(310)로 진행한다. 이 단계(310)에서 중앙 완료 테이블 내의 인스트럭션 상태가 갱신된다. 동시에, 프로세스는 종료 신호가 실행 유닛의 완료 테이블로도 전송되는 것에 대해 예시하는 단계(312)로 진행한다. 프로세스는 실행 유닛이 인스트럭션의 종료 결과를 자신의 완료 테이블에 기록하는 것에 대해 예시하는 단계(313)로 계속 진행된다.
다음에, 프로세스는 실행 유닛이 실행된 인스트럭션의 형태를 판단하기 위해 관련 완료 테이블을 검사하는 것에 대해 도시하는 단계(314)로 진행한다. 그 후, 프로세스는 인스트럭션의 형태를 판단하기 위해 실행 유닛이 수행하는 세가지 검사 중 하나를 예시하는 단계(316)로 진행한다. 단계(316)에서 인스트럭션이 추론 경로(speculative path) 내에 있는지의 여부를 판단하는 검사에 대해 예시된다. 인스트럭션이 추론 경로 내에 있는 경우, 프로세스는 단계(317)로 진행하며, 여기서 추론 경로가 해결될 때까지 실행 유닛이 대기하는 것에 대해 도시된다. 그 후, 프로세스는 추론 경로가 해결될 때까지 단계(316)를 계속 반복한다.
인스트럭션이 추론 경로 내에 있지 않은 경우, 프로세스는 완료되지 않았으나 (로드나 저장 인스트럭션과 같이) 인터럽트를 발생할 수 있는 더 오래된 인스트럭션이 완료 테이블 내에 있는지의 여부를 실행 유닛이 검사하는 것에 대해 도시하는 단계(318)로 진행한다. 인터럽트를 발생할 수 있는 더 오래된 인스트럭션이 실행 유닛의 완료 테이블 내에 있는 경우, 프로세스는 중앙 완료 테이블이 종료된 인스트럭션을 완료(퇴거)시키는 것에 대해 예시하는 단계(322)로 진행한다. 중앙 완료 테이블은 완료된 인스트럭션을 목표 어드레스(target address)로 넘겨서 인스트럭션을 비우거나(clear out), 인터럽트 또는 분기 예측 오류에 기인하는 인스트럭션을 버린다(discard). 중앙 완료 테이블은 인스트럭션을 완료한 후 프로세서 내에 있는 완료 테이블 모두를 갱신하도록 실행 유닛으로 완료 정보를 동보통신한다. 종료된 인스트럭션을 완료한 후, 프로세스는 중앙 완료 테이블이 완료 정보를 사용하여 실행 유닛의 개별 완료 테이블을 갱신하는 것에 대해 도시하는 단계(324)로 진행한다. 더 오래된 인스트럭션이 인터럽트를 발생하지 않을 경우, 프로세스는 더 오래된 인스트럭션이 상기 인스트럭션과 동일한 목표 레지스터(target register)를 가지는지의 여부를 실행 유닛이 검사하는 것에 대해 예시하는 단계(320)로 진행한다. 더 오래된 인스트럭션이 상기 인스트럭션과 동일한 목표 레지스터를 가지는 경우, 프로세스는 상기 기술된 단계(322, 324)로 진행한다.
다음에, 프로세스는 실행 유닛이 자신의 완료 테이블 및 중앙 완료 테이블을 포함하는 기타 완료 테이블 모두를 갱신하는 것에 대해 예시하는 단계(326)로 진행한다.
그 후, 프로세스는 실행 유닛이 인스트럭션을 완료하는 것에 대해 예시하는 단계(328)로 진행한다. 또한, 실행 유닛은 기타 실행 유닛 모두 및 중앙 완료 테이블로 완료 데이터를 전송한다. 인스트럭션이 실행 유닛의 완료 테이블에 의해퇴거될 수 있는 경우, 상기 실행 유닛이 이 인스트럭션을 완료한다. 그 후, 프로세스는 실행 유닛이 적절한 구조화 레지스터를 갱신하며 상기 인스트럭션과 관련된 리네임 버퍼 모두를 해제시키는 것에 대해 도시하는 단계(330)로 진행한다.
프로세스는 중앙 완료 테이블과 실행 유닛의 개별 완료 테이블 사이에 인스트럭션을 분할한다. 각 완료 테이블은 디스패치될 때 각 인스트럭션에 대한 분기 보류 비트를 포함함으로써 다른 분기 경로로부터의 인스트럭션을 처리할 수 있다. 분기 보류 비트가 턴온 상태인 경우에는 인스트럭션이 미해결 분기 경로 내에 있다는 것을 나타낸다. 분기가 해결되는 경우, 이 분기 보류 비트는 인스트럭션이 더 이상 추론적이지 않다는 것을 나타내도록 턴오프된다. 특정 인스트럭션이 완료되도록 중앙 완료 테이블보다는 오히려 지역 완료 테이블로 전송됨으로써 중앙 완료 테이블이 추적하고 퇴거시키는 인스트럭션의 수가 감소된다. 이로 인해 중앙 완료 테이블 내 인스트럭션 큐 상의 자유 공간이 증가되므로 인스트럭션 진행 속도가 증가된다.
요약하면, 프로세서 내에 있는 종래의 완료 유닛에 의해 금지될 수 있는 인스트럭션의 흐름이 본 발명의 분산 완료 방식 및 다중 완료 테이블에 의해 개선된다. 병렬로 동작하는 다중 완료 테이블로 인해 인스트럭션이 보다 고속으로 완료된다. 각 실행 유닛은 자신의 형태에 해당하는 인스트럭션을 완료하며 기타 실행 유닛 및 중앙 완료 테이블로 완료 정보를 동보통신한다. 중앙 완료 테이블에 의해 처리되는 인스트럭션의 수가 감소되므로 완료율(completion rate)이 증가된다. 인스트럭션을 완료하는 비율이 증가되므로 중앙 완료 테이블의 큐가 보다 빨리 비워진다. 중앙 완료 테이블의 큐가 보다 빠른 속도로 비워지므로 매 주기 당 인스트럭션의 디스패치 비율이 보다 향상된다.
본 발명이 바람직한 실시예를 참조하여 특별히 예시 및 기술되었으나, 형태와 세부 사항에 있어 본 발명의 본질 및 범위를 벗어남이 없이 본 발명의 다양한 변화가 가능하다는 것은 당업자에 의해 쉽게 이해될 수 있다.
본 발명에 따른 분산 인스트럭션 완료 로직에서는 매 주기마다 완료되는 인스트럭션의 수를 증가시켜서 프로세서의 성능을 개선하며, 종래의 완료 유닛에 의해 발생되는 인스트럭션 완료에서의 병목 현상을 제거할 수 있다.

Claims (28)

  1. 수퍼스칼라 프로세서(superscalar processor)에서 인스트럭션을 완료하는 방법에 있어서,
    a) 인스트럭션을 실행 유닛(execution unit)으로 디스패치(dispatch)하는 단계;
    b) 상기 인스트럭션의 상태를 상기 실행 유닛과 관련된 완료 테이블(completion table)에 기록하는 단계;
    c) 상기 인스트럭션의 상태를 중앙 완료 테이블(central completion table)에 기록하는 단계; 및
    d) 인스트럭션 완료 신호를 상기 실행 유닛과 관련된 완료 테이블로 전송하는 단계
    를 포함하는 인스트럭션 완료 방법.
  2. 제1항에 있어서,
    상기 인스트럭션을 종료하고 상기 중앙 완료 테이블로 종료 신호(finishing signal)를 전송하는 단계; 및
    상기 종료 신호를 상기 실행 유닛과 관련된 완료 테이블로 전송하는 단계
    를 추가로 포함하는 인스트럭션 완료 방법.
  3. 제1항에 있어서,
    상기한 인스트럭션을 실행 유닛으로 디스패치하는 단계는
    a) 턴온 상태인 관련 인터럽트 발생 가능 비트(interruptible bit)를 구비하는 더 오래된 임의의 인스트럭션에 대해 중앙 완료 테이블 내의 인스트럭션 큐를 스누프(snoop)하는 단계;
    b) 상기 인스트럭션의 대기 비트(wait bit)를 턴온하는 단계; 및
    c) 인터럽트 발생 가능 비트를 구비하는 상기 더 오래된 임의의 인스트럭션의 ID를 갖도록 상기 인스트럭션의 대기 ID를 래치(latch)하는 단계
    를 추가로 포함하는 인스트럭션 완료 방법.
  4. 제3항에 있어서,
    상기한 턴온 상태인 관련 인터럽트 발생 가능 비트를 구비하는 더 오래된 임의의 인스트럭션에 대해 상기 중앙 완료 테이블 내의 인스트럭션 큐를 스누프하는 단계가 상기 더 오래된 인스트럭션이 인터럽트 발생 가능성이 있는지의 여부를 판단하는 단계를 추가로 포함하는 인스트럭션 완료 방법.
  5. 제3항에 있어서,
    상기 인스트럭션보다 더 오래된 인스트럭션의 완료에 응답하여,
    a) 상기 인스트럭션의 대기 ID와 상기 더 오래된 임의의 인스트럭션의 ID를 비교하는 단계;
    b) 상기 인스트럭션의 대기 ID가 상기 더 오래된 임의의 인스트럭션의 ID와 일치하는 경우 상기 대기 비트를 턴오프하는 단계; 및
    c) 상기 인스트럭션을 완료하는 단계
    를 추가로 포함하는 인스트럭션 완료 방법.
  6. 제5항에 있어서,
    상기한 실행 유닛으로 인스트럭션을 디스패치하는 단계가 상기 인스트럭션이 추론적인 경로(speculative path) 내에 있는지의 여부를 판단하는 단계를 추가로 포함하는 인스트럭션 완료 방법.
  7. 제6항에 있어서,
    상기 인스트럭션이 추론적인 경로 내에 있는지를 판단하는 단계; 및
    상기 중앙 완료 테이블로 상기 종료 신호를 전송하는 단계
    를 추가로 포함하는 인스트럭션 완료 방법.
  8. 제6항에 있어서,
    더 오래된 제2의 인스트럭션이 상기 인스트럭션과 동일한 레지스터(register)를 목표로 지정할 수 있는지의 여부를 판단하는 단계를 추가로 포함하는 인스트럭션 완료 방법.
  9. 제8항에 있어서,
    상기 실행 유닛과 관련된 완료 테이블에 종료 데이터(finish data)를 기록하는 단계를 추가로 포함하는 인스트럭션 완료 방법.
  10. 제9항에 있어서,
    상기 실행 유닛과 관련된 완료 테이블을 갱신하는 단계를 추가로 포함하는 인스트럭션 완료 방법.
  11. 제10항에 있어서,
    상기 인스트럭션을 완료하는 단계; 및
    모든 실행 유닛 및 상기 중앙 완료 유닛으로 완료 데이터를 전송하는 단계
    를 추가로 포함하는 인스트럭션 완료 방법.
  12. 제11항에 있어서,
    상기 더 오래된 임의의 인스트럭션이 인터럽트를 발생할 수 있는지를 판단하는 단계; 및
    상기 더 오래된 인스트럭션과 관련된 제2의 종료 신호를 상기 중앙 완료 유닛으로 전송하는 단계
    를 추가로 포함하는 인스트럭션 완료 방법.
  13. 제12항에 있어서,
    더 오래된 제2의 인스트럭션이 상기 인스트럭션과 동일한 레지스터를 목표로 지정할 수 있는지를 판단하는 단계; 및
    상기 다른 더 오래된 인스트럭션과 관련된 종료 신호를 상기 중앙 완료 유닛으로 전송하는 단계
    를 추가로 포함하는 인스트럭션 완료 방법.
  14. 제13항에 있어서,
    상기 인스트럭션 또는 상기 더 오래된 인스트럭션 또는 상기 더 오래된 제2의 인스트럭션을 완료하는 단계; 및
    상기 실행 유닛과 관련된 완료 테이블 및 상기 중앙 완료 테이블을 갱신하는 단계
    를 추가로 포함하는 인스트럭션 완료 방법.
  15. 프로세서에 있어서,
    a) 인스트럭션 유닛;
    b) 복수의 실행 유닛;
    c) 복수의 완료 테이블;
    d) 중앙 완료 테이블;
    e) 인스트럭션을 디스패치하는 명령(command) 수신에 응답하여 상기 인스트럭션 유닛으로부터 실행을 위한 상기 복수의 실행 유닛 중 하나로 상기 인스트럭션을 디스패치하는 수단;
    f) 상기 복수의 실행 유닛 중 하나와 관련된 상기 복수의 완료 테이블 중 하나에 상기 인스트럭션의 상태를 기록하는 수단;
    g) 상기 중앙 완료 테이블에 상기 인스트럭션의 상태를 기록하는 수단; 및
    h) 상기 복수의 실행 유닛 중 하나와 관련된 상기 복수의 완료 테이블 중 하나로 인스트럭션 완료 신호를 전송하는 수단
    을 포함하는 프로세서.
  16. 제15항에 있어서,
    a) 상기 인스트럭션을 종료하고 상기 중앙 완료 테이블로 종료 신호를 전송하는 수단;
    b) 상기 복수의 실행 유닛 중 하나와 관련된 상기 복수의 완료 테이블 중 하나로 상기 종료 신호를 전송하는 수단; 및
    c) 상기 복수의 실행 유닛 중 하나와 관련된 상기 복수의 완료 테이블 중 하나를 검사하는 수단
    을 추가로 포함하는 프로세서.
  17. 제16항에 있어서,
    a) 턴온 상태인 관련 인터럽트 발생 가능 비트(interruptible bit)를 구비하는 더 오래된 임의의 인스트럭션에 대해 상기 중앙 완료 테이블 내의 인스트럭션 큐(queue)를 스누프(snoop)하는 수단;
    b) 상기 인스트럭션의 대기 비트(wait bit)를 턴온하는 수단; 및
    c) 인터럽트 발생 가능 비트를 구비하는 상기 더 오래된 임의의 인스트럭션의 대기 ID를 갖도록 인스트럭션 ID를 래치(latch)하는 수단
    을 추가로 포함하는 프로세서.
  18. 제17항에 있어서,
    상기 인스트럭션보다 더 오래된 임의의 인스트럭션의 완료에 응답하고,
    a) 상기 인스트럭션 ID와 상기 더 오래된 임의의 인스트럭션의 대기 ID를 비교하는 수단;
    b) 상기 인스트럭션 ID가 상기 더 오래된 임의의 인스트럭션의 대기 ID와 일치하는 경우 상기 대기 비트를 턴오프하는 수단; 및
    c) 상기 인스트럭션을 완료하는 수단
    을 추가로 포함하는 프로세서.
  19. 제18항에 있어서,
    상기 인스트럭션이 추론적인 경로(speculative path) 내에 있는지의 여부를 판단하는 수단을 추가로 포함하는 프로세서.
  20. 제19항에 있어서,
    상기 더 오래된 임의의 인스트럭션이 인터럽트를 발생할 수 있는지의 여부를 판단하는 수단을 추가로 포함하는 프로세서.
  21. 제20항에 있어서,
    더 오래된 제2의 인스트럭션이 상기 인스트럭션과 동일한 레지스터를 목표로 지정할 수 있는지의 여부를 판단하는 수단을 추가로 포함하는 프로세서.
  22. 제21항에 있어서,
    상기 복수의 실행 유닛 중 하나와 관련된 상기 복수의 완료 테이블 중 하나에 종료 데이터를 기록하는 수단을 추가로 포함하는 프로세서.
  23. 제22항에 있어서,
    상기 복수의 실행 유닛 중 하나와 관련된 상기 복수의 완료 테이블 중 하나를 갱신하는 수단을 추가로 포함하는 프로세서.
  24. 제23항에 있어서,
    상기 인스트럭션을 완료하는 수단; 및
    모든 실행 유닛 및 상기 중앙 완료 테이블로 완료 데이터를 전송하는 수단
    을 추가로 포함하는 프로세서.
  25. 제24항에 있어서,
    상기 인스트럭션이 추론적인 경로 내에 있는지의 여부를 판단하는 상기 수단이 상기 중앙 완료 유닛으로 상기 종료 신호를 전송하는 수단을 추가로 포함하는 프로세서.
  26. 제25항에 있어서,
    상기 더 오래된 인스트럭션이 인터럽트를 발생할 수 있는지를 판단하는 상기 수단이 상기 더 오래된 인스트럭션과 관련된 제2의 종료 신호를 상기 중앙 완료 유닛으로 전송하는 수단을 추가로 포함하는 프로세서.
  27. 제26항에 있어서,
    상기 더 오래된 다른 인스트럭션이 상기 인스트럭션과 동일한 레지스터를 목표로 지정할 수 있는지를 판단하는 상기 수단이 상기 더 오래된 제2의 인스트럭션과 관련된 종료 신호를 상기 중앙 완료 유닛으로 전송하는 수단을 추가로 포함하는 프로세서.
  28. 제27항에 있어서,
    a) 상기 인스트럭션 또는 상기 더 오래된 임의의 인스트럭션 또는 상기 더 오래된 임의의 인스트럭션을 완료하는 수단; 및
    b) 상기 복수의 실행 유닛 중 하나와 관련된 상기 복수의 완료 테이블 중 하나 및 상기 중앙 완료 테이블을 갱신하는 수단
    을 추가로 포함하는 프로세서.
KR1019990018034A 1998-06-01 1999-05-19 분산인스트럭션완료로직 KR20000005685A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/087,886 US6134645A (en) 1998-06-01 1998-06-01 Instruction completion logic distributed among execution units for improving completion efficiency
US09/087,886 1998-06-01

Publications (1)

Publication Number Publication Date
KR20000005685A true KR20000005685A (ko) 2000-01-25

Family

ID=22207854

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019990018034A KR20000005685A (ko) 1998-06-01 1999-05-19 분산인스트럭션완료로직

Country Status (7)

Country Link
US (1) US6134645A (ko)
EP (1) EP0962857A3 (ko)
JP (1) JP3182741B2 (ko)
KR (1) KR20000005685A (ko)
CN (1) CN1124546C (ko)
CA (1) CA2271533C (ko)
TW (1) TW493140B (ko)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3469469B2 (ja) 1998-07-07 2003-11-25 富士通株式会社 情報処理装置
US7472258B2 (en) * 2003-04-21 2008-12-30 International Business Machines Corporation Dynamically shared group completion table between multiple threads
US7278011B2 (en) * 2004-04-08 2007-10-02 International Business Machines Corporation Completion table configured to track a larger number of outstanding instructions without increasing the size of the completion table
JP4499123B2 (ja) * 2007-02-23 2010-07-07 富士通株式会社 受付制御方法及び受付制御システム
EP2738681A4 (en) * 2011-07-27 2014-07-30 Fujitsu Ltd ELECTRONIC DEVICE, METHOD FOR ACCESSING THIS DEVICE AND PROGRAM THEREFOR
CN102722341B (zh) * 2012-05-17 2014-12-24 杭州中天微系统有限公司 存储载入单元投机执行控制装置
WO2014036085A1 (en) 2012-08-31 2014-03-06 Dolby Laboratories Licensing Corporation Reflected sound rendering for object-based audio
US9384002B2 (en) 2012-11-16 2016-07-05 International Business Machines Corporation Speculative finish of instruction execution in a processor core
US10346165B2 (en) * 2014-04-25 2019-07-09 Avago Technologies International Sales Pte. Limited Resource locking for load store scheduling in a VLIW processor
US10423423B2 (en) 2015-09-29 2019-09-24 International Business Machines Corporation Efficiently managing speculative finish tracking and error handling for load instructions
US10761856B2 (en) * 2018-07-19 2020-09-01 International Business Machines Corporation Instruction completion table containing entries that share instruction tags

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4318173A (en) * 1980-02-05 1982-03-02 The Bendix Corporation Scheduler for a multiple computer system
US5388219A (en) * 1992-03-02 1995-02-07 International Business Machines Corporation Efficient channel and control unit for host computer
US5481683A (en) * 1992-10-30 1996-01-02 International Business Machines Corporation Super scalar computer architecture using remand and recycled general purpose register to manage out-of-order execution of instructions
TW295646B (ko) * 1995-01-25 1997-01-11 Ibm
US5802340A (en) * 1995-08-22 1998-09-01 International Business Machines Corporation Method and system of executing speculative store instructions in a parallel processing computer system
US5758117A (en) * 1995-12-14 1998-05-26 International Business Machines Corporation Method and system for efficiently utilizing rename buffers to reduce dispatch unit stalls in a superscalar processor
US5841999A (en) * 1996-04-17 1998-11-24 International Business Machines Corporation Information handling system having a register remap structure using a content addressable table
US5764971A (en) * 1996-12-11 1998-06-09 Industrial Technology Research Institute Method and apparatus for implementing precise interrupts in a pipelined data processing system
US5913048A (en) * 1997-03-31 1999-06-15 International Business Machines Corporation Dispatching instructions in a processor supporting out-of-order execution
US5887161A (en) * 1997-03-31 1999-03-23 International Business Machines Corporation Issuing instructions in a processor supporting out-of-order execution
US5875326A (en) * 1997-04-25 1999-02-23 International Business Machines Corporation Data processing system and method for completing out-of-order instructions

Also Published As

Publication number Publication date
JP3182741B2 (ja) 2001-07-03
CN1237732A (zh) 1999-12-08
JP2000020307A (ja) 2000-01-21
CA2271533C (en) 2001-12-04
EP0962857A2 (en) 1999-12-08
CA2271533A1 (en) 1999-12-01
US6134645A (en) 2000-10-17
CN1124546C (zh) 2003-10-15
EP0962857A3 (en) 2001-01-03
TW493140B (en) 2002-07-01

Similar Documents

Publication Publication Date Title
US6728866B1 (en) Partitioned issue queue and allocation strategy
US5611063A (en) Method for executing speculative load instructions in high-performance processors
US5742782A (en) Processing apparatus for executing a plurality of VLIW threads in parallel
JP4578042B2 (ja) 接近して結合される多重プロセッサのための高速マルチスレッディング
US20060101241A1 (en) Instruction group formation and mechanism for SMT dispatch
US5931957A (en) Support for out-of-order execution of loads and stores in a processor
US7877580B2 (en) Branch lookahead prefetch for microprocessors
US6651163B1 (en) Exception handling with reduced overhead in a multithreaded multiprocessing system
JP4829541B2 (ja) マルチレベル・レジスタ・ファイルを有するディジタル・データ処理装置
US6389512B1 (en) Microprocessor configured to detect updates to instructions outstanding within an instruction processing pipeline and computer system including same
US6721874B1 (en) Method and system for dynamically shared completion table supporting multiple threads in a processing system
US7809933B2 (en) System and method for optimizing branch logic for handling hard to predict indirect branches
US7603497B2 (en) Method and apparatus to launch write queue read data in a microprocessor recovery unit
US7603543B2 (en) Method, apparatus and program product for enhancing performance of an in-order processor with long stalls
US7194603B2 (en) SMT flush arbitration
US7254693B2 (en) Selectively prohibiting speculative execution of conditional branch type based on instruction bit
US10545765B2 (en) Multi-level history buffer for transaction memory in a microprocessor
KR20000005685A (ko) 분산인스트럭션완료로직
US5996085A (en) Concurrent execution of machine context synchronization operations and non-interruptible instructions
JP3207124B2 (ja) カウント/リンク・レジスタ変更命令の投機実行をサポートする方法及び装置
US6266767B1 (en) Apparatus and method for facilitating out-of-order execution of load instructions
US5802340A (en) Method and system of executing speculative store instructions in a parallel processing computer system
KR19990013425A (ko) 데이타 처리 시스템과, 데이타 처리 시스템의 데이타 포착 방법과, 프로그램 저장 장치
KR20010077997A (ko) 단일 사이클 파이프라인 기능 정지를 발생하기 위한파이프라인 프로세서 시스템 및 방법
US20040148493A1 (en) Apparatus, system and method for quickly determining an oldest instruction in a non-moving instruction queue

Legal Events

Date Code Title Description
A201 Request for examination
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
J201 Request for trial against refusal decision
AMND Amendment
B601 Maintenance of original decision after re-examination before a trial
J301 Trial decision

Free format text: TRIAL DECISION FOR APPEAL AGAINST DECISION TO DECLINE REFUSAL REQUESTED 20020528

Effective date: 20040228