KR19980079722A - 데이타 처리 시스템 및 무질서 명령을 완성하기 위한 방법 - Google Patents

데이타 처리 시스템 및 무질서 명령을 완성하기 위한 방법 Download PDF

Info

Publication number
KR19980079722A
KR19980079722A KR1019980004482A KR19980004482A KR19980079722A KR 19980079722 A KR19980079722 A KR 19980079722A KR 1019980004482 A KR1019980004482 A KR 1019980004482A KR 19980004482 A KR19980004482 A KR 19980004482A KR 19980079722 A KR19980079722 A KR 19980079722A
Authority
KR
South Korea
Prior art keywords
target identification
data processing
processing system
signal
value
Prior art date
Application number
KR1019980004482A
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 KR19980079722A publication Critical patent/KR19980079722A/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/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
    • 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)

Abstract

파이프라인식 데이타 처리 시스템의 동작시, 인터럽트 가능 명령 테이블이 추측 실행을 유발할 수 있는 명령들과 관련된 목표 식별자들을 저장하는 데 사용된다. 인터럽트 가능 명령 테이블의 동작시, 이 테이블이 임의의 명령을 포함하고 있는 경우, 완료 명령 버퍼 엔트리 포인터로서 참조되는 포인터가 인터럽트 가능 명령 테이블의 최하부를 지시한다. 인터럽트 가능 명령 테이블의 최하부에 있는 엔트리가 완료될 다음 명령이다. 이 엔트리는 비추측 인터럽트 불가능 TID로서 참조되는 목표 식별자를 포함하며, 이전에 실행된 모든 명령들을 위해 유지된 자원들을 해제하는 데 사용될 수 있다. 데이타 처리 시스템은 순서 판정이 유지되는 것을 보장하기 위해 비추측 인터럽트 불가능 TID의 값을 판정하며 정확한 추측 실행점을 제공한다.

Description

데이타 처리 시스템 및 무질서 명령을 완성하기 위한 방법
본 발명은 파이프라인식 데이타 프로세서에 관한 것으로서, 특히 명령들의 무질서 실행 및 추측 실행을 수행하는 파이프라인식 데이타 프로세서에 관한 것이다.
데이타 처리 시스템의 점진적인 발달에 따라, 고성능에 대한 요구가 증가되고 있다. 오늘날, 많은 데이타 처리 시스템은 성능을 개선하기 위하여 파이프라인식 프로세서를 포함한다. 파이프라인식 프로세서는 다수의 명령을 동시 및 중복 방식으로 처리한다. 파이프라인 제어의 추가에 따라 개별 명령의 실행 시간이 다소 증가하지만, 파이프라인식 프로세서는 상기 방식을 사용함으로써 더 많은 수의 명령을 처리할 수 있다. 통상, 파이프라인식 프로세서는 하나의 명령을 실행하기 위하여 6개의 단계를 포함한다. 이러한 6개의 단계는 명령 인출, 명령 디코딩, 데이타 메모리 어드레스 생성, 프로세서 상주 오퍼랜드 인출, 명령 실행 및 결과 기록을 포함한다.
통상적으로, 파이프라인 내의 모든 단계는 동시에 처리되어야 한다. 결과적으로, 파이프라인에서 명령을 한 단계 하향 이동시키는 데 필요한 시간은 가장 느린 파이프 단계에 의해 결정되었다. 따라서, 이러한 통상의 파이프라인 프로세서에 있어서, 프로세서의 처리량은 가장 느린 파이프 단계에 의해 결정되고 제한된다. 이러한 한계를 보상하기 위하여, 현재 구현된 파이프라인식 프로세서는 더 빠른 파이프 단계들을 사용하거나 기능 단위들이 이들 자신의 속도로 독립적으로 실행하는 것을 허용하였다.
그러나, 기능 단위들이 그 자신의 속도로 독립적으로 처리하는 것을 허용함으로써 각종의 파이프라인 장애가 발생한다. 장해가 발생하는 경우, 위반 명령 및 다음 명령들이 제거되고 재인출된다. 이러한 무질서 실행을 이용하는 파이프라인식 프로세서의 일례는 인텔사로부터 입수할 수 있는 펜티엄프로(상표명) 프로세서이다. 펜티엄프로는 인텔사의 상표임에 유의한다. 펜티엄프로 마이크로프로세서는 메모리 판독 동작이 몇몇 기록 동작에 앞서 재배열되는 것을 허용한다. 이러한 재배열 동작을 수행하기 위하여, 펜티엄프로 프로세서의 중앙 처리 장치은 기록 동작 근처에서 판독 동작을 재배열하지만, 이러한 재배열은 프로그램 관점에서 관측할 수 없다. 펜티엄프로에 관한 정보를 위해, 1995년 4월판 바이트 매거진의 42-58쪽에 게재된 톰 알. 할펠의 인텔사의 ∼를 참조하라.
또한, IBM 마이크로일렉트로닉스사로부터 입수할 수 있는 파워 PC(상표명) 604 RISC 마이크로프로세서도 무질서 명령 실행을 수행한다. 파워 PC 604 내의 할당 논리는 명령의 할당시 이를 적절한 실행 유닛으로 할당한다. 파워 PC는 IBM사의 상표라는 점에 유의해야 한다. 각각의 명령에 대해 특수 완료 버퍼 내의 재배열 엔트리가 할당되며, 할당 큐 내의 명령들 사이에서 종속성 검사가 수행된다. 실행된 명령들은 완료 유닛에서 회수된다. 완료 유닛은 할당된 명령들을 저장하는 것 외에 적절한 방식으로 레지스터 파일들과 제어 레지스터들을 갱신한다. 또한, 완료 유닛은 순차적인 프로그래밍을 보장하며, 하나의 명령에 앞선 모든 명령이 완료되고 상기 하나의 명령이 실행을 완료하였을 때 상기 하나의 명령을 완료 버퍼로부터 회수한다. 따라서, 완료 유닛은 재배열 또는 완료 버퍼와 더불어 무질서 방식으로 실행되는 명령들이 최초 제공되었던 순서와 동일한 순서로 회수되는 것을 보장한다. 파워 PC 604 및 펜티엄 프로 마이크로 프로세서 솔루션들 모두는 더 전통적인 파이프라인식 구현들보다 큰 장점들을 제공하는 반면, 파워 PC 604에서의 완료 버퍼 사용과 인텔 펜티엄 프로에서의 재배열 버퍼의 사용은 최초 프로그램 순서의 추적을 유지하기 위해 특정 테이블 또는 메모리 기억 위치를 필요로 하며 결과들이 순서대로 완료될 것을 요구한다. 이러한 엄밀한 순서는 데이타 프로세서의 동일한 자원을 액세스하는 명령들이 최초 순서로 정확히 실행되어 정확한 결과가 얻어지는 것을 보장하기 위해 요구된다. 따라서, 이러한 구현은 재배열 동작을 수행하기 위해 별도의 테이블의 사용을 필요로 하며, 또한 순서대로 명령들을 완료하도록 제한된다. 별도의 테이블의 사용은 추가적인 회로 면적 부담을 요구하며, 따라서 데이타 프로세서와 관련된 비용을 증가시킨다.
최초 프로그램 순서를 추적하기 위해 완료 버퍼를 사용하는 것 외에, 완료 버퍼들은 대개, 하나의 명령이 완료된 때 어느 자원이 해제되어야 하는가를 지시하는 완료 포인터를 갖추고 있다. 전술한 바와 같이, 할당된 명령은 상당한 시간 동안 실행될 수 없다. 그 동안, 프로그램 시퀀스에서 후에 발견되는 명령들이 실행될 수 있다. 완료 버퍼는 할당된 모든 명령을 추적하고 명령들은 무질서하게 실행되기 때문에, 완료 버퍼는 많은 명령을 저장해야 할 수도 있다. 싸이클 시간 및 면적 요구를 만족시킬 만큼 큰 완료 버퍼의 설계는 아무래도 어렵다.
따라서, 대형 완료 버퍼와 관련된 복잡성을 감소시켜 유연성을 더욱 크게 하고 데이타 처리 시스템 내의 자원들을 더 양호하게 사용할 수 있는 메카니즘이 요구된다.
전술한 요구는 본 발명에 의해 충족된다. 따라서, 본 발명의 첫 번째 형태로 데이타 처리 시스템이 제공된다. 이 데이타 처리 시스템은 복수의 목표 식별값을 생성하기 위한 목표 식별 회로와 복수의 목표 식별값의 제1 부분을 선택적으로 저장하기 위한 메모리를 포함한다. 복수의 목표 식별값 각각은 하나의 명령에 대응한다. 데이타 처리 시스템은 또한 메모리 내의 선정된 기억 위치를 선택적으로 지시하는 완료 명령 포인터와 메모리가 복수의 목표 식별값의 어느 것도 저장하고 있지 않을 때의 공백 메모리 신호를 제공하기 위한 완료 제어 회로를 포함한다. 투영 회로가 완료 명령 포인터를 수신하기 위해 완료 제어 회로에 접속된다. 투영 회로는 완료 명령 포인터를 평가하여 투영된 목표 식별값 및 투영된 목표 식별 유효값을 생성한다. 선택 생성 회로가 공백 메모리 신호를 수신하기 위해 완료 제어 회로에 접속되며 투영된 목표 식별값을 수신하기 위해 투영 회로에 접속된다. 선택 회로는 제1 선택 신호를 생성한다. 선택자가 제1 선택 신호를 수신하기 위해 선택 생성 회로에 접속되고 투영된 목표 식별값을 수신하기 위해 투영 회로에 접속되며 복수의 목표 식별값 중 미리 선택된 하나를 수신하기 위해 목표 식별 회로에 접속된다. 선택자는 복수의 목표 식별값 중 미리 선택된 하나와 투영 목표 식별값 중 하나를 인터럽트 불가능한 목표 식별값으로서 제공한다.
또한, 본 발명의 두 번째 형태로 데이타 처리 시스템이 제공된다. 이 데이타 처리 시스템은 데이타 처리 시스템에서 실행되고 있는 복수의 명령 중 일부에 대응하는 복수의 정보값의 일부를 선택적으로 저장하기 위한 메모리와 현행 타이밍 싸이클 동안에 실행될 복수의 명령 중 투영된 하나를 지시하도록 투영된 정보값을 제공하기 위한 투영 회로를 포함한다. 데이타 처리 시스템은 또한 복수의 정보값 중 미리 선택된 하나를 생성하기 위한 식별 생성 회로와 선택 회로를 포함한다. 선택 회로는 투영된 정보값과 복수의 정보값 중 미리 선택된 하나 중 하나를 데이타 처리 시스템에서 실행될 다음 명령에 대응하는 인터럽트 불가능한 정보값으로서 선택적으로 제공한다. 선택 회로는 투영된 정보값을 수신하기 위해 투영 회로에 접속되며 복수의 정보값 중 미리 선택된 하나를 수신하기 위해 식별 생성 회로에 접속된다.
또한, 본 발명의 제3 형태로서 데이타 처리 시스템에서 명령을 완료하기 위한 방법이 제공된다. 이 방법은 복수의 목표 식별값을 생성하는 단계와 복수의 목표 식별값 중 제1 부분을 선택적으로 저장하는 단계를 포함한다. 복수의 목표 식별값 각각은 하나의 명령에 대응한다. 메모리 내의 선정된 기억 위치를 선택적으로 지시하는 완료 명령 포인터와 메모리가 복수의 목표 식별값 중 어느 것도 저장하고 있지 않을 때의 공백 메모리 신호가 제공된다. 이 방법은 또한 완료 명령 포인터를 평가하여 투영된 목표 식별값과 투영된 목표 식별 유효값을 생성하는 단계, 공백 메모리 신호 및 투영된 목표 식별값에 응답하여 제1 선택 신호를 생성하는 단계, 및 복수의 목표 식별값 중 미리 선택된 하나와 투영된 목표 식별값 중 하나를 인터럽트 불가능한 목표 식별값으로서 제공하는 단계를 포함한다.
상기 특징 및 다른 특징들, 및 장점들은 첨부된 도면과 관련하여 이루어진 아래의 상세한 설명으로부터 더욱 명백히 이해될 것이다. 도면들은 본 발명의 유일한 형태를 나타내는 것으로 의도된 것이 아니라는 점에 유의하는 것이 중요하다.
도 1은 본 발명의 일 실시예에 따른 데이타 처리 시스템의 블록도.
도 2는 본 발명의 일 실시예에 따른 파이프라인식 데이타 프로세서의 블록도.
도 3은 본 발명의 일 실시예에 따른 인터럽트 가능 명령 테이블의 일부를 나타내는 블록도.
도 4는 본 발명의 일 실시예에 따른 완료 제어 논리 회로의 일부를 나타내는 블록도.
도 5는 본 발명의 일 실시예에 따른 목표 식별 생성 회로의 일부를 나타내는 블록도.
도 6은 본 발명의 일 실시예에 따른 점유 뱅크 판정 회로의 일부를 나타내는 블록도.
도 7은 도 4의 선택 회로의 일부를 나타내는 논리도.
* 도면의 주요부분에 대한 부호의 설명
100 : 데이타 처리 시스템 110 : 중앙 처리 장치
112 : 시스템 버스 114 : RAM
116 : ROM 118 : I/O 어댑터
120 : 디스크 드라이브 122 : 사용자 인터페이스 어댑터
124 : 키보드 126 : 마우스
128 : 스피커 132 : 트랙볼
134 : 통신 어댑터 136 : 디스플레이 어댑터
138 : 디스플레이 모니터 202 : 명령 인출 유닛
204 : 명령 캐시 206 : 명령 큐
208 : 명령 디코드 회로 210 : 상태 레지스터 유닛
214 : 분기 유닛 216 : 메모리 서브시스템
218 : 제2 레벨 캐시 220 : 버스 인터페이스 유닛
222 : 명령 할당 유닛 224 : 목표 식별 회로
226 : 범용 레지스터 228 : 히스토리 버퍼
230 : 예비 실행 유닛 232 : 저장/복합 예비 실행 큐 유닛
234 : 상태 레지스터 큐 236 : 인터럽트 조작 메카니즘
237 : 완료 제어 논리 회로
238 : 인터럽트 가능 명령 테이블 회로
240 : 그룹 식별 회로 242 : 부동 소수점 유닛
244 : 부동 소수점 유닛0 246 : 부동 소수점 큐
248 : 부동 소수점 유닛 1 250 : 명령 실행 유닛
252, 254, 256, 258 : 고정 소수점 실행 유닛
260 : 저장/복합 실행 유닛 262 : 메모리 관리 유닛
264 : L0 적재 유닛 402 : TID 투영 회로
404, 408, 410 : 래치 406 : 선택 회로
412 : 멀티플렉서 502 : 점유 뱅크 판정 회로
504, 510, 514, 520, 530, 714, 716 : AND 게이트
506, 528, 706 : OR 게이트
508, 524, 526, 704, 708, 710, 712 : 인버터
512 : NOR 게이트
702 : 비반전 버퍼
이제, 본 발명 및 그 장점들의 더욱 완전한 이해를 위해, 첨부된 도면과 관련하여 행해지는 아래의 상세한 설명이 참조된다.
파이프라인식 수퍼스칼라 데이타 프로세서는 성능을 향상시키기 위해 종종 추측 실행 기술을 이용한다. 데이타 프로세서가 추측적으로 명령을 실행하는 경우, 데이타 프로세서는 추측 결과를 제거하기 위한 메카니즘을 갖추어야 한다. 또한, 데이타 프로세서의 마이크로 아키텍쳐는 소정 명령들이 데이타 프로세서에서의 실행 및 완료 시점들과 특수한 관계를 갖는 것을 요구할 수 있다. 상기 이유 및 다른 많은 이유 때문에 데이타 프로세서에서 순서 판정은 매우 중요할 수 있다.
본 발명에 있어서, 각각의 명령에는 목표 식별자로 참조되는 독특한 식별자가 할당된다. 목표 식별자들(TID)은 명령들 사이에 프로그램 순서가 보장되고 TID를 사용하여 프로그램 순서가 결정될 수 있는 방식으로 할당된다. TID는 2개의 뱅크로 분할될 수 있으며 하나의 뱅크 안으로 시도된 엔트리에 의해 명령 할당이 중지될 수 있다는 점에 유의하는 것이 중요하다. 본 발명에 있어서, 2개의 뱅크는 그 안에 저장된 식별자의 최상위 비트에 의해 지시된다. 제1 뱅크는 뱅크 0으로 참조되며, 제2 뱅크는 뱅크 1로 참조된다. 식별자 할당 논리는 뱅크 0 또는 뱅크 1이 가장 새로운 뱅크인가를 지시하는 글로벌 신호를 본 발명이 구현된 데이타 프로세서의 잔여부에 공급한다. 가장 새로운 뱅크는 명령 실행 또는 취소를 통해 가장 최근에 모든 할당이 소거된 뱅크라는 점에 유의해야 한다. 또한, 식별자 할당 논리는 완전히 소거되지 않은 식별자 뱅크로의 제1 식별자 할당을 유발하는 임의의 명령의 할당을 금지시킨다.
하나의 명령에 의해 수정된 자원들은 그 명령에 할당된 제1 TID에 의해 식별된다는 점에 유의해야 한다. 또한, 예외를 유발하거나 추측 실행 경로를 생성하는 각각의 명령은 인터럽트 가능 명령 테이블에 배치된 대응 TID를 갖게 된다. 추측 실행을 허용하는 명령들은 분기 조작에 대한 예측 결과와 같은 제어 흐름 예측, 또는 비트 플래그와 같은 데이타 흐름 예측을 수반할 수 있다는 점에 유의해야 한다.
인터럽트 가능 명령 테이블의 조작시, 이 테이블이 임의의 명령을 포함하는 경우, 완료 명령 버퍼 엔트리 포인터로 참조되는 하나의 포인터가 인터럽트 가능 명령 테이블의 최하부를 지시한다. 인터럽트 가능 명령 테이블의 최하부에 위치한 엔트리가 완료될 다음 명령이다. 완료될 다음 명령에 앞서 할당된 모든 명령은 완료되었으며 이러한 이전 명령들을 위해 유지된 자원들은 해제되어야 한다는 점에 유의해야 한다. 따라서, 완료될 다음 명령과 관련된 TID는 모든 이전 명령을 위해 유지된 자원들을 해제하기 위해 사용될 수 있다. 이전 명령들을 위해 유지된 자원들을 해제하는 목적을 가진 TID는 비추측 인터럽트 불가능 TID(NSNI-TID)로 참조된다. 본 발명은 NSNI-TID를 생성하기 위한 방법을 제공한다.
예컨대, 엄밀한 타이밍 요건으로 인해, 인터럽트 가능 명령 테이블 내의 최하부 엔트리와 관련된 TID는 타이밍 싸이클에서 충분히 일찍 판정될 수 없다. 따라서, 최하부 엔트리의 예측은 NSNI-TID를 형성하기 위해 사용되어야 한다. 또한, 종종 인터럽트 가능 명령 테이블은 공백이며, 자원들은 가능한 한 빨리 해제되어야 한다는 점에 유의해야 한다. 이 경우, NSNI-TID는 인터럽트 가능 명령 테이블의 최하부에 있는 명령과 관련된 바로 그 TID보다 더 복잡하다.
인터럽트 가능 명령 테이블이 공백일 때, 본 발명의 데이타 처리 시스템에 의해 수행되는 추측 실행은 존재하지 않는다. 달리 말하면, 인터럽트를 발생시키거나 실행 경로를 변경할 수 있는 미해결 명령들이 존재하지 않기 때문에, 모든 실행 명령은 지정 경로 상에 있어야 한다. 이러한 상황에서 데이타 처리 시스템의 완료 시점을 반영하는, 스마트 TID로 참조되는, 특수 TID가 존재한다. TID 순서 판정은 TID 뱅크 할당에 의존하기 때문에, 스마트 TID는 아래의 방식으로 제어된다:
1. 새로운 TID 뱅크 안으로의 엔트리 때문에 명령 할당이 인터록되지 않은 경우, 스마트 TID는 할당될 다음 TID이며,
2. 새로운 TID 뱅크 안으로의 엔트리 때문에 명령 할당이 인터록되는 경우, 스마트 TID는 할당된 최종 TID이다.
본 발명은 NSNI-TID를 정확히 계산함으로써 순서 판정이 유지되는 것을 보장하며, 현대의 무질서 파이프라인식 데이타 처리 시스템의 대부분의 실행 유닛에 의해 요구되는 진정한 추측 실행점을 제공한다. 지금까지 본 발명의 동작에 대한 전반적인 설명이 제공되었지만, 아래의 설명은 본 발명의 동작에 대한 더 상세한 설명은 물론, 본 발명의 구성 요소들간의 결합성에 관한 더 상세한 정보를 제공한다.
결합성에 대한 설명
본 발명의 일 실시예가 도 1에 도시되어 있다. 먼저, 도 1을 참조하면, 본 발명을 위해 사용될 수 있는 데이타 처리 시스템(100)의 일례가 도시되어 있다. 이 시스템은 파이프라인식 중앙 처리 장치(CPU)(110)를 갖추고 있다. 본 발명의 히스토리 버퍼는 CPU(110) 안에 포함되어 있다. 파이프라인식 CPU(110)는 시스템 버스(112)에 의해 여러 다른 요소들에 결합되어 있다. 리드 온리 메모리(ROM)(116)가 시스템 버스(112)에 결합되어 있으며 데이타 처리 시스템(100)의 몇몇 기본 기능을 제어하는 기본 입출력 시스템(BIOS)을 포함하고 있다. 랜덤 액세스 메모리(RAM)(114), I/O 어댑터(118) 및 통신 어댑터(134) 또한 시스템 버스(112)에 결합되어 있다. I/O 어댑터(118)는 디스크 기억 장치(120)와 통신하는 소형 컴퓨터 시스템 인터페이스(SCSI)일 수 있다. 통신 어댑터(134)는 데이타 처리 시스템이 다른 데이타 처리 시스템들과 통신할 수 있도록 하는 외부망과 버스(112)를 상호 접속시킨다. 입출력 장치들 또한 사용자 인터페이스 어댑터(122)와 디스플레이 어댑터(136)를 통해 시스템 버스(112)에 접속되어 있다. 키보드(124), 트랙볼(132), 마우스(126) 및 스피커(128) 모두는 사용자 인터페이스 어댑터(122)를 통해 버스(112)에 상호 접속되어 있다. 디스플레이 모니터(138)가 디스플레이 어댑터(136)를 통해 시스템 버스(112)에 접속되어 있다. 이러한 방식으로, 사용자는 키보드(124), 트랙볼(132) 또는 마우스(126)를 통해 시스템으로 입력하고 스피커(128)와 디스플레이(138)를 통해 시스템으로부터 출력을 수신할 수 있다. 또한, 도 1에 도시된 각종 구성 요소들의 기능들을 통합하기 위해 AIX(AIX는 IBM사의 상표)와 같은 운영 체제가 사용된다.
본 발명의 바람직한 구현은 본 명세서에 설명된 방법 또는 방법들을 실행하도록 프로그래밍된 컴퓨터 시스템, 및 컴퓨터 프로그램물과 같은 구현을 포함한다. 컴퓨터 시스템 구현에 따르면, 상기 방법 또는 방법들을 실행하기 위한 명령 세트들은 전반적으로 전술한 바와 같이 구성된 하나 이상의 컴퓨터 시스템의 랜덤 액세스 메모리(114) 내에 상주한다. 명령 세트들은 컴퓨터 시스템에 의해 요구될 때까지 예컨대 디스크 드라이브(120) 내의 다른 컴퓨터 메모리(이것은 디스크 드라이브(120) 내에서의 최종 사용을 위한 광 디스크 또는 플로피 디스크와 같은 제거 가능한 메모리를 포함할 수 있다) 내에 컴퓨터 프로그램물로서 저장될 수 있다. 또한, 컴퓨터 프로그램물도 다른 컴퓨터에 저장되어, 필요한 경우 망에 의해, 또는 인터넷과 같은 외부망에 의해 사용자의 워크 스테이션으로 전송될 수 있다. 본 기술 분야에 숙련된 자는 명령 세트들의 물리적 저장은 저장 매체를 물리적으로 변화시켜 매체가 컴퓨터 판독 가능 정보를 지니도록 한다는 것을 알 것이다. 이러한 변화는 전기적, 자기적, 화학적 또는 몇몇 다른 물리적 변화일 수 있다. 명령, 심볼, 문자 등으로써 본 발명을 설명하는 것이 편리하지만, 이들 및 이와 유사한 용어들 모두가 적절한 물리적 요소들과 연관되어야 한다는 것을 기억해야 한다.
본 발명은 비교, 검사, 선택, 또는 인간 조작자와 연관될 수 있는 다른 용어들과 같은 용어들을 설명한다는 점에 유의해야 한다. 그러나, 본 발명의 일부를 구성하는, 본 명세서에 설명된 적어도 많은 동작들에 대해, 인간 조작자에 의한 어떠한 조작도 바람직하지 않다. 설명된 동작들은 대부분 전기 신호를 처리하여 다른 전기 신호를 생성하는 기계 조작이다.
본 발명의 일 실시예가 도 2에 도시되어 있다. 도 2는 본 발명의 일 실시예에 따른 파이프라인식 CPU(110)의 블록도를 제공하고 있다. 파이프라인식 CPU(110)는 명령 인출 유닛(IFU)(202), 메모리 서브시스템(MSS)(216), 명령 할당 유닛(IDU)(222), 부동 소수점 유닛(FPU)(242), 및 명령 실행 유닛(IEU)(250)을 포함한다. IFU(202)는 명령 캐시(204), 명령 큐(IQ)(206), 명령 디코드(Idecode) 회로(208), 상태 레지스터 유닛(210), 및 분기(BR) 유닛(214)을 포함한다. 메모리 서브시스템(216)은 제2 레벨(L2) 캐시(218) 및 버스 인터페이스 유닛(BIU)(220)을 포함한다. 부동 소수점 유닛(242)은 부동 소수점 유닛 0(FP0)(244), 부동 소수점 큐(FPQ)(246) 및 부동 소수점 유닛 1(FP1)(248)을 포함한다. IEU(250)는 복수의 고정 소수점 실행 유닛, Ex0E(252), Ex0L(254), Ex1E(256) 및 Ex1L(258)을 포함한다. 또한, IEU(250)는 저장/복합 실행 유닛(260), L0 적재(데이타 캐시) 유닛(264), 및 메모리 관리 유닛(MMU)(262)을 포함한다.
IDU(222)는 목표 식별(TID) 회로(224), 복수의 범용 레지스터(GPR)(226), 히스토리 버퍼(228), 예비 실행(PEQ) 유닛(230), 저장/복합 예비 실행 큐(SPQ) 유닛(232), 및 상태 레지스터 큐(CRQ)(234)를 포함한다. 또한, IDU(222)는 인터럽트 조작 메카니즘(236), 인터럽트 가능 명령 테이블(IIT) 회로(238), 및 그룹 식별(GID) 회로(240)를 포함한다. IDU(222)는 또한 완료 제어 논리 회로(237)를 포함한다.
도 4는 완료 제어 논리(237)의 일부를 더 상세히 나타내고 있다. 완료 제어 논리 회로(237)는 최하부 TID 투영 회로(402), 래치(404), 선택 회로(406), 래치(408), 래치(410), 및 멀티플렉서(412)를 포함한다. 최하부 TID 투영 회로(402)에 완료 명령 버퍼 포인터 신호가 공급된다. 최하부 TID 투영 회로(402)는 투영된 최하부 TID 신호를 공급하기 위해 래치(410)에 결합된다. 최하부 TID 투영 회로(402)는 또한 지연된 투영 유효 신호를 공급하기 위해 선택 회로(406)에 결합된다. 스마트 TID 신호가 래치(408) 및 멀티플렉서(412)의 포트 0 입력에 결합된다. 래치(408)는 지연된 스마트 TID 신호를 공급하기 위해 멀티플렉서(412)에 결합된다. 래치(410)는 지연된 투영 최하부 TID 신호를 공급하기 위해 멀티플렉서(412)에 결합된다. IIT 공백 신호가 선택 회로(406) 및 래치(404)에 공급된다. 래치(404)는 선택 회로(406)에 지연된 IIT 공백 신호를 공급한다. 선택 회로(406)는 복수의 선택 제어 신호(S0, S1, S2)를 공급하기 위해 멀티플렉서(412)에 결합된다. 멀티플렉서(412)는 NSNI-TID 신호를 공급한다.
도 5는 도 2의 TID 생성 회로(224)의 일부를 더 상세히 나타내고 있다. TID 생성 회로(224)는 점유 뱅크 판정 회로(502), AND 게이트(504), OR 게이트(506), 인버터(508), AND 게이트(510), NOR 게이트(512), AND 게이트(514), 증분기(516), 레지스터(518), AND 게이트(520), 레지스터(522), 인버터(524), 인버터(526), OR 게이트(528), 및 AND 게이트(530)를 포함한다. 점유 뱅크 판정 회로(502)는 AND 게이트(504)의 제1 입력에 뱅크 0 점유 신호를 공급한다. 다음 TID(0) 신호가 인버터(508) 및 AND 게이트(510)의 제1 입력에 결합된다. 인버터(508)의 출력이 AND 게이트(504)의 제2 입력에 결합된다. 또한, 점유 뱅크 판정 회로(502)는 뱅크 1 점유 신호를 공급하기 위해 AND 게이트(510)의 제2 입력에 결합된다. AND 게이트(504)의 출력이 OR 게이트(506)의 제1 입력에 결합된다. AND 게이트(510)의 출력이 OR 게이트(506)의 제2 입력에 결합된다. OR 게이트(506)의 출력이 AND 게이트(514)의 제1 입력에 결합된다. 다음 TID(1) 비트가 NOR 게이트(512)의 제1 입력에 공급되고, 다음 TID(2) 비트가 NOR 게이트(512)의 제2 입력에 공급되며, 다음 TID(3) 비트가 NOR 게이트(512)의 제3 입력에 공급되고, 다음 TID(4) 비트가 NOR 게이트(512)의 제4 입력에 공급되며, 다음 TID(5) 비트가 NOR 게이트(512)의 제5 입력에 공급된다. 다음 TID(1-5) 비트들 각각은 동일한 TID 값으로부터 하나의 비트를 나타낸다는 점에 유의해야 한다. NOR 게이트(512)의 출력이 AND 게이트(514)의 제2 입력에 결합된다. AND 게이트(514)의 출력이 홀드 TID 신호를 공급한다.
또한, 뱅크 0 점유 신호는 AND 게이트(520)의 제1 입력에 공급된다. 유사하게, 뱅크 1 점유 신호는 인버터(526)의 입력에 공급된다. 인버터(526)의 출력이 AND 게이트(530)의 제1 입력에 결합된다. 레지스터(522)는 TID 뱅크 신호를 공급하기 위해 AND 게이트(520)의 제2 입력 및 인버터(524)의 입력에 결합된다. AND 게이트(520)의 출력이 OR 게이트(528)의 제1 입력에 결합된다. 인버터(524)의 출력이 AND 게이트(530)의 제2 입력에 결합된다. AND 게이트(530)의 출력이 OR 게이트(528)의 제2 입력에 결합된다. OR 게이트(528)는 다음 TID 뱅크 신호를 공급한다. OR 게이트(528)의 출력이 레지스터(522)의 입력에 결합된다.
도 6은 점유 뱅크 판정 회로(502)의 일부를 더 상세히 나타내고 있다. 점유 뱅크 판정 회로(502)의 일부는 TID 할당 어레이(602), OR 게이트(604) 및 OR 게이트(606)를 포함한다. 비트들(0-31) 각각에 대해 C, D 및 L로 레이블이 붙여진 제어 신호들이 OR 게이트(606)의 입력에 공급된다. OR 게이트(606)는 뱅크 0 점유 신호를 공급한다. 유사하게, 비트들(32-73)에 대해 C, D 및 L로 레이블이 붙여진 제어 신호들이 OR 게이트(604)에 입력으로서 공급된다. OR 게이트(604)의 출력이 뱅크 1 점유 신호를 공급한다.
도 7은 도 4의 선택 회로(406)의 일부를 나타낸다. 선택 회로(406)는 비반전 버퍼(702), 인버터(704), OR 게이트(706), 인버터(708), 인버터(710), 인버터(712) 및 AND 게이트(716)를 포함한다. IIT 공백 신호가 비반전 버퍼(702) 및 인버터들(704, 712)의 입력에 공급된다. 비반전 버퍼(702)의 출력이 S0 신호를 공급한다. 인버터(704)의 출력이 AND 게이트(714)의 제1 입력에 결합된다. 인버터(712)의 출력이 AND 게이트(716)의 제1 입력에 결합된다. 지연된 IIT 공백 신호가 OR 게이트(706)의 제1 입력 및 인버터(710)의 입력에 공급된다. 인버터(710)의 출력이 AND 게이트(716)의 제2 입력에 결합된다. 지연된 투영 최하부 유효 신호가 AND 게이트(716)의 제3 입력 및 인버터(708)의 입력에 공급된다. 인버터(708)의 출력이 OR 게이트(706)의 제2 입력에 결합된다. OR 게이트(706)의 출력이 AND 게이트(714)의 제2 입력에 결합된다. AND 게이트(714)의 출력이 S1 신호를 공급한다. 또한, AND 게이트(716)의 출력이 S2 신호를 공급한다.
전술한 설명은 본 발명의 일 실시예를 구현하는 데 사용된 요소들의 결합성에 관한 설명을 제공한다. 이 요소들 각각의 동작에 대한 설명이 다음에 더 상세히 제공될 것이다. 본 발명의 구현에 대한 아래의 설명에서 용어 표명과 부정 및 이들의 다양한 문법적 형태는 액티브 하이 및 액티브 로우 논리 신호들을 처리할 때 혼란을 피하기 위해 사용된다. 표명은 논리 신호 또는 레지스터 비트의 액티브 또는 논리적 참 상태로의 렌더링을 참조하기 위해 사용된다. 부정은 논리 신호 또는 레지스터 비트의 인액티브 또는 논리적 거짓 상태로의 렌더링을 참조하기 위해 사용된다. 또한, 하나의 값 앞의 % 심볼은 그 값이 2진 표기된 것을 나타낸다.
동작에 대한 설명
도 1은 본 발명의 일 실시예를 구현할 수 있는 범용의 데이타 처리 시스템을 제공한다.
도 2를 참조하면, 파이프라인 프로세서(210)를 동작시키기 위한 명령들은 명령 캐시(204) 또는 다른 명령 소스(이것은 본 명세서에서 상세히 설명되지 않음)로부터 액세스된다. 명령들은 명령 큐(206)에 저장되어, Idecode 회로(208)에 의해 디코딩될 때까지 그 안에 유지된다. 조건부의 미분해 분기가 예측될 때, 이러한 분기 명령들은 BRQ(214)에 제공되어 분기 실행 유닛(본 명세서에서는 상세히 설명되지 않음)에 의한 차후의 처리를 위해 저장된다. 명령들은 인출되어 디코딩된 후 IDU(222)에 제공된다. 명령들을 수신하자마자 TID 생성 회로(224)에 의해 목표 식별자들(TID)이 생성된다. TID들은 명령들 자체와 동일한 순서로 IDU(222)에 제공된 명령들 각각에 대해 정의된다.
파이프라인식 CPU(110)에서는 유한수의 TID들이 명령들에 할당되어 사용될 수 있다는 점에 유의해야 한다. 본 명세서에 설명되는 본 발명의 일 실시예에 있어서, 사용 가능한 TID의 수는 2개의 뱅크로 분할된다. 제1 뱅크의 TID들이 할당된 후, IDU(222)는 제2 뱅크로부터 TID들을 할당하기 시작한다. 제2 뱅크의 최종 TID가 할당된 때, 본 발명은 제1 뱅크 안에 저장된 모든 TID 값들이 사용 가능한 때에 제1 뱅크의 TID들을 액세스하기 위한 방법을 구현하게 된다. 그러나, TID들이 TID 값들의 최종 뱅크 내에 여전히 미해결 상태로 있을 때, 최종 TID 뱅크와 새로운 TID 뱅크의 상대 연령은 정확한 명령 순서를 보장하도록 유지되어야 한다는 점에 유의해야 한다. 본 발명에서는 TID 값들의 뱅크 0이 TID 값들의 뱅크 1보다 더 오래된 명령을 나타내는 때를 지시하기 위해 뱅크 비트가 사용된다.
TID들의 값은 IDU(222)에 의해 할당된다. IDU(222)의 요소들 각각의 간단한 설명이 다음에 더 상세히 제공될 것이다. IDU(222)는 IQ(206)로부터 명령들을 할당한다. IDU(222)는 명령들을 디코딩하여 이들을 Ex0E(252), Ex0L(254), Ex1E(256) 또는 Ex1L(258)과 같은 적절한 실행 유닛 및 PEQ(230)에 의해 표시된 명령들의 예비 실행 큐를 향해 전송한다. 또한, IDU(222)는 각 명령에 TID들을 할당하며 히스토리 버퍼(228)와 인터럽트 가능 명령 테이블(IIT)(238) 내에 소정 레지스터들의 히스토리를 유지한다. 히스토리 버퍼(228)와 인터럽트 가능 명령 테이블(238) 내의 TID들 및 히스토리 정보는 명령 흐름의 적절한 순차적 일관성을 유지하고 파이프라인식 CPU(110)에서 인터럽트, 잘못 예측된 분기, 적재 및 저장 오배열 등이 발생한 때 정확한 시스템 상태를 재구성하는 것을 돕기 위해 사용된다.
인터럽트 가능 명령 테이블(228)은 파이프라인식 CPU(110)에 의해 실행된 모든 인터럽트 가능 명령에 대응하는 TID 값들을 저장함으로써 시스템 상태의 재구성에 도움이 된다. TID는 명령의 목표 구성 설비를 식별하기 위해 사용되는 독특한 명령 테그로서 더 특정하게 표시될 수 있다는 점에 유의해야 한다. TID 값은 오퍼랜드 종속성 또는 자원 할당 딜레마를 해결하고 명령 순서를 유지하기 위해 사용될 수 있다는 점에 유의해야 한다. 전술한 바와 같이, 명령들이 할당되고 디코딩될 때 모든 명령에 TID가 할당되며, 명령이 완료되고 데이타가 구성 설비에 도달한 때 해제된다.
IDU(222)는 명령의 실행을 스케쥴링한다는 점에도 유의해야 한다. 예비 실행 큐(PEQ 230)는 오퍼랜드 종속성 또는 자원 할당 딜레마와 같은 인터록이 해결되고 명령들이 적절한 실행 유닛으로 발행될 때까지 사용된다. IDU(222)는 3 세트의 상기 예비 실행 큐를 포함한다. 첫째, 고정 소수점 예비 실행 큐(PEQ 230)가 모든 적재 고정 소수점 연산 명령을 받아들인다. 둘째, 상태 레지스터 예비 실행 큐(CRQ 234)가 상태 레지스터(CRU 210 안에 포함됨)의 변경을 수반하는 명령들을 수신하여 비교한다. 또한, 저장 예비 실행 큐(SPQ 232)는 모든 저장 명령과 승산, 제산 및 특수 목적 레지스터 액세스와 같은 복합 명령들을 수신한다.
파이프라인식 CPU(110)에 의해 실행되는 각각의 명령은 TID를 할당받아야 하기 때문에, TID의 생성 및 그러한 할당을 구현하기 위한 메카니즘이 다음에 더 상세히 설명될 것이다. TID 값을 생성하기 위하여, 초기의 TID가 %000000의 2진값을 가진 것으로 가정한다. 할당된 TID 값들은 반드시 %000000의 값으로 시작되지는 않지만, 파이프라인식 CPU(110)의 설계자가 원하는 임의의 시작 어드레스에서 초기화될 수 있다는 점에 유의해야 한다. TID들이 순차적으로 할당될 때, 17의 값을 할당받은 TID가 19 또는 25의 값들을 할당받은 TID보다 더 오래된 것으로 나타나게 된다. 모든 명령이 뱅크 0으로 참조되는 한 뱅크 내의 TID들을 할당받았어야 하는 순간에, 명령들은 뱅크 1로 참조되는 다른 뱅크로부터 TID들을 할당받는다. 뱅크 1 내의 최종 번호를 가진 TID가 할당되어 뱅크 1로부터 할당받을 추가적인 TID가 존재하는 않을 때, 파이프라인식 CPU(110)는 뱅크 0 내의 할당된 TID들을 재사용하여야 한다. 이제 뱅크 1로부터 할당된 TID들이 새롭게 해제된 뱅크 0으로부터 할당된 TID들보다 더 오래된 것임을 표시하기 위한 메카니즘이 구현된다.
TID들이 설명되었으므로, 본 발명에서 이들이 사용되는 방법이 다음에 설명된다. 이제, 인터럽트 가능 명령 테이블을 더 상세히 나타내는 도 3을 참조한다. 인터럽트 가능 명령 테이블(238)은 명령들의 순서화에 도움이 되는 선입 선출(FIFO) 큐이라는 점에 유의해야 한다. 인터럽트 가능 명령 테이블 내의 각 엔트리는 인터럽트될 수 있는 명령에 대응하는 TID 값과 엔트리에 대응하는 유효 비트를 포함한다. 유효 비트는 엔트리가 정말 유효하여 인터럽트 및 소거 동작을 수행하는 데 사용될 수 있는가를 지시한다. 또한, 인터럽트 가능 명령 테이블은 완료 명령 버퍼 엔트리 버퍼도 포함한다는 점에 유의해야 한다. 전술한 바와 같이, 완료 명령 버퍼 엔트리 포인터는 인터럽트 명령 테이블이 임의의 명령을 포함하고 있는 경우 인터럽트 가능 명령 테이블의 최하부를 지시한다. 또한, 인터럽트 명령 테이블의 최하부에 있는 엔트리는 완료될 다음 명령을 지시한다. 완료될 다음 명령 이전에 할당된 모든 명령은 완료되었으며 이들을 위해 유지된 자원들은 해제되어야 한다는 점에 유의해야 한다. 따라서, 몇몇 상황에서는, 완료 명령 버퍼 엔트리 포인터가 이전 명령들을 유지된 자원들을 해제하기 위해 후에 사용되는 TID를 지시하는 데 사용될 수 있기 때문에, NSNI-TID는 완료 명령 버퍼 엔트리 포인터에 대응할 수 있다. 그러나, 인터럽트 가능 명령 테이블의 최하부 엔트리는 타이밍 싸이클에서 항상 충분히 일찍 판정될 수 있는 것은 아니기 때문에, 본 발명은 어느 엔트리가 인터럽트 가능 명령 테이블의 최하부 엔트리가 될 것인가를 예측하는 예측 회로를 구현한다.
종종 인터럽트 가능 명령 테이블이 파이프라인식 CPU(110)에 의해 수행되고 있는 추측 실행이 존재하지 않는다는 것을 지시하는 공백 상태라는 사실로 인해 NSNI-TID의 판정도 복잡하다는 점에도 유의해야 한다. 이 상황에서, 자원들은 가능한 한 빨리 해제되어야 하며, 따라서 NSNI-TID는 완료 명령 버퍼 엔트리 포인터와 연관된 TID보다 더 복잡하게 된다.
인터럽트 가능 명령 테이블이 TID 값들은 전혀 저장하고 있지 않을 때, 추측 실행은 존재하지 않게 된다. 이 상황에서, 스마트 TID로 참조되는 특수 TID가 데이타 처리 시스템의 완료점을 반영한다. TID 순서 판정은 TID 뱅크 할당에 의존하기 때문에, 스마트 TID는 전술한 방식으로 제어된다. 이 방식에서, 스마트 TID는 새로운 TID 뱅크 안으로의 엔트리로 인해 할당이 인터록되지 않을 때 할당될 다음 TID이다. 또한, 스마트 TID는 새로운 TID 뱅크 안으로의 엔트리로 인해 할당이 인터록될 때 할당된 최종 TID이다. TID의 할당은 도 5와 6을 참조하여 더 상세히 설명될 것이다.
도 4는 NSNI-TID를 생성하는 완료 제어 논리(237)의 일부를 나타낸다. 선행 싸이클 동안의 스마트 TID와 스마트 TID 값은 모두 도 4의 멀티플렉서(412)에 공급된다. 또한, 완료 명령 버퍼 포인터는 최하부 TID 투영 회로(402)에 제공된다. 최하부 TID 투영 회로(402)는 주어진 시간 싸이클에 완료될 인터럽트 가능 명령 테이블의 최하부 엔트리로부터 시작하는 연속적인 명령들의 수를 결정함으로써 투영된 최하부 TID 값을 생성한다. 이 수는 주어진 시간 싸이클에서 늦게 알려진다는 점에 유의해야 한다. 이 수는 다음에 완료될 인터럽트 가능 명령 테이블(238) 내의 엔트리와 연관된 TID를 선택하는 데 사용될 수 있다. 예컨대, IIT(238) 내의 최하부 엔트리가 #5이고, 3개의 인터럽트 가능 명령이 완료된 경우, 엔트리 #8(5+3)의 TID는 투영된 최하부 TID 값이어야 한다. 선택된 TID는 다음 타이밍 싸이클 동안 지연된 투영 최하부 TID 신호를 생성하기 위해 타이밍 싸이클의 종점에서 래치된다. 투영된 최하부 TID는 래치(410)로 공급된다. 또한, 지연된 투영 최하부 TID 신호에 대응하는 유효 비트가 투영된 최하부 유효 지연 신호로서 선택 회로(406)에 제공된다. 이 유효 비트는 최하부 TID 투영 회로(402)에 의해 생성된 투영된 최하부 TID 값이 인터럽트 가능 명령 테이블(IIT)(238) 내의 점유된 엔트리와 연관되어 있는가를 지시한다. 연관되어 있지 않은 경우, 투영된 최하부 TID 값은 유효하지 않으며 NSNI-TID 값을 결정하는 데 사용될 수 없다. 그러나, 실제 논리는 다음에 설명될 것이다.
또한, 완료 제어 논리(237) 내의 회로(본 명세서에는 상세히 설명되지 않음)로부터 선택 회로에 IIT 공백 신호가 공급된다. IIT 공백 신호는 인터럽트 가능 명령 테이블(238)이 인터럽트 가능 명령들과 관련된 유효 엔트리를 전혀 갖지 않는 때를 지시한다. 또한, IIT 공백 신호는 1 타이밍 싸이클 동안 404 안에 래치된다. 래치(404)의 출력이 선택 회로(406)에 지연된 IIT 공백 신호를 공급한다. 선택 회로(406)는 IIT 공백, IIT 공백 지연 및 투영된 최하부 유효 지연 값들을 S0, S1 및 S2로 각각 참조되는 선택 신호들을 생성하는 데 사용한다. S0 신호는 IIT 공백 신호에 대응한다. 따라서, IIT 공백 신호가 표명될 때 S0 공백 신호가 표명되며, IIT 공백 신호가 부정될 때 S0 신호가 부정된다. 선택 회로(406)에 의해 제공된 S1 선택 신호는 IIT 공백 신호, IIT 공백 지연 신호 및 투영된 최하부 유효 지연 신호의 논리 조합에 의해 생성된다. S1 신호를 생성하는 데 필요한 논리 관계식은 다음과 같다:
S1=AND (IIT 공백 지연 OR)
선택 회로(406)는 S0 및 S1 신호들 외에, 투영된 최하부 TID 지연 신호를 NSNI-TID 값으로 선택하기 위해 S2 선택 신호를 공급한다. S2 신호는 아래의 논리 관계식에 의해 생성된다:
S2=ANDAND 투영된 최하부 유효 지연
따라서, 투영된 최하부 유효 지연 신호, IIT 공백 신호 및 IIT 공백 지연 신호를 수신하자마자, 선택 회로(406)는 스마트 TID 값, 스마트 TID 지연 값 및 투영된 최하부 TID 지연 값 중 하나를 NSNI-TID로서 각각 선택하기 위해 S0, S1 및 S2 신호를 공급한다.
S0, S1 및 S2 선택 신호의 값들은 많은 다른 상황에서 정확한 NSNI-TID를 제공하도록 결정된다. 첫 번째 상황에서, 인터럽트 가능 명령 테이블은 공백이고, 따라서 S0 신호는 표명된 것으로 가정한다. 인터럽트 가능 명령 테이블(238)은 공백이기 때문에, 할당될 다음 명령이 수용되며, 스마트 TID 이전에 할당된 TID들로써 유지된 자원들은 해제되어야 한다. IIT(238)가 공백인 경우, 추측 실행은 존재하지 않는다. 전술한 바와 같이, IIT(238)는 추측 실행을 유발할 수 있는 모든 명령의 TID를 저장한다. 추측 실행이 존재하지 않는 경우, 모든 실행 결과가 수용될 수 있다. 이러한 첫 번째 경우에 있어서, NSNI-TID는 스마트 TID와 동일하다. 스마트 TID의 값은 전에 더 상세히 설명되었음에 유의해야 한다.
두 번째 경우에, 인터럽트 가능 명령 테이블(238)은 최종 타이밍 싸이클 상에서 공백이었지만, 현재의 타이밍 싸이클 동안에는 공백이 아니며, 따라서 S1 신호가 표명된 것으로 가정한다. 이 상황에서, 인터럽트 가능 명령 테이블(238)이 공백이었기 때문에, 최하부 TID 투영 회로(402)는 최종 타이밍 싸이클에서 최하부 TID가 무엇인가를 예측할 수 없다. 그러나, 현재의 타이밍 싸이클 동안에는 인터럽트 가능 명령 테이블(238)이 공백이 아니기 때문에, 명령 버퍼 엔트리 포인터를 완료함으로써 지시되는 최하부 인터럽트 가능 명령 테이블(238)에 있는 명령은 최종 타이밍 싸이클로부터 스마트 TID와 동일하거나 그 다음의 것인 TID를 할당받았음이 확실하다. 따라서, NSNI-TID는 스마트 TID 지연값과 동일하다. 이 상황에서, 최종 타이밍 싸이클 동안 인터럽트 가능 명령들만이 할당되었다. 지연된 스마트 TID는 최종 타이밍 싸이클 동안에 할당된 첫 번째 명령의 TID이다. 따라서, 어느 인터럽트 가능 명령보다 오래되거나 동일한 연령을 가지는 것이 보장된다.
세 번째 경우에, 인터럽트 가능 명령 테이블(238)은 최종 타이밍 싸이클 동안 공백이 아니었고 현재의 타이밍 싸이클 동안에도 공백이 아니며, 투영된 최하부 TID 신호는 최종 타이밍 싸이클 동안 유효하지 않았고, 따라서 S1 신호는 표명된 것으로 가정한다. 투영된 최하부 TID는 최종 타이밍 싸이클 동안 유효하지 않았기 때문에, 이것은 인터럽트 가능 명령 테이블(238) 내의 모든 명령이 최종 타이밍 싸이클 동안 완료되었음을 의미한다. 또한, 인터럽트 가능 명령 테이블(238)은 공백이 아니기 때문에, 최종 타이밍 싸이클 동안에 새로운 명령이 인터럽트 가능 명령 테이블(238) 안으로 입력되었음이 확실하다. 이 새로운 명령은 최종 싸이클로부터 스마트 TID와 동일하거나 그 다음 것인 TID를 할당받았음이 확실하다. 따라서, S1 선택 신호는 표명되며 NSNI-TID는 스마트 TID 지연 값이다.
최하부 엔트리는 주어진 싸이클에서 완료된 명령의 수를 계산한 후 완료 버퍼 포인터로부터 그 명령 수를 감산함으로써 결정되므로 완료될 최종 명령 이후의 엔트리인 점에 유의해야 한다. 완료될 최종 명령 외에, 인터럽트 가능 명령 테이블(238) 안에 완료될 더 많은 명령들이 존재하는 경우, 추가적인 명령들은 완료될 최종 명령을 위한 엔트리에 이어지는(즉, 최하부 엔트리에서 시작하는) 버퍼 엔트리들 내에 있게 되며 유효 상태를 갖게 될 것이다. 그러나, 인터럽트 가능 명령 테이블(238) 내에 완료될 추가적인 명령인 존재하지 않는 경우, 명령들의 상태는 유효하지 않게 된다.
그 다음, S2 신호가 표명되는 네 번째 경우로, 투영된 최하부 유효 지연 신호는 인터럽트 가능 명령 테이블(238) 내의 모든 명령이 최종 타이밍 싸이클 동안 완료되지 않았음을 지시하도록 표명되는 것으로 가정한다. 이것은 IIT(238)가 최종 타이밍 싸이클 동안 공백이 아니었으며 현재의 타이밍 싸이클에서 공백이 아님을 의미한다. 이 경우, 최종 타이밍 싸이클 동안에 계산된 투영된 최하부 TID는 현재 싸이클 동안 인터럽트 가능 명령 테이블(238)의 최하부에 있는 TID가 된다. 따라서, S2 선택 신호는 표명되며, NSNI-TID 신호는 투영된 최하부 TID 지연 값이다.
S0, S1 및 S2 신호를 생성하는 선택 회로(406)의 일 실시예를 설명하기 위한 논리 구현이 도 7에 도시되어 있다.
도 5는 TID 생성 회로(224)를 더 상세히 나타낸다. 동작시, 초기의 TID가 레지스터(518)에 저장된다. 레지스터(518)는 이 TID를 다음 TID(0:5) 신호로서, TID 생성 회로(224) 내부의 논리 회로는 물론 IDU(222)의 잔여부에 공급한다. 이 다음 TID(0:5) 값의 사용은 다음에 상세히 설명될 것이다. 그러나, 그 설명에 앞서, TID 생성 회로(224) 내의 다음 TID(0:5) 값의 사용이 설명될 것이다. 전술한 바와 같이, TID 생성 회로(224)는 뱅크 0으로부터 할당된 TID들이 뱅크 1로부터 할당된 TID들보다 더 오래되었거나 더 새로운 때를 지시하는 뱅크 비트를 생성한다. 도 5에서, 뱅크 비트는 TID 뱅크로 표시되어 있다. TID 뱅크 신호를 생성하기 위하여, 점유 뱅크 판정 회로(502)는 AND 게이트(520)에 뱅크 0 점유 신호를 공급한다. 유사하게, 점유 뱅크 판정 회로(502)는 인버터(526)에 뱅크 1 점유 신호를 공급한다. 뱅크 1 점유 신호는 반전되어 AND 게이트(530)에 공급된다. 또한, 레지스터(522)는 뱅크 0으로부터 할당된 TID들이 뱅크 1로부터 할당된 TID들보다 더 오래되었거나 더 새로운 때를 지시하는 TID 뱅크 값을 저장한다. 다음 TID 뱅크는 뱅크 비트의 미래 값을 나타내므로 TID 뱅크와 다르다는 점에 유의해야 한다. 뱅크 0 점유 신호는 뱅크 0 안의 모든 TID가 해제되었고 명령 실행 동안에 더 이상 사용되고 있지 않다는 것을 지시한다. 유사하게, 뱅크 1 점유 신호는 뱅크 1 내의 모든 TID가 해제되었다는 것을 지시한다. TID 뱅크 신호, 뱅크 0 점유 신호 및 뱅크 1 점유 신호를 논리적으로 조합함으로써, 다음 TID 뱅크 신호가 생성된다.
다음 뱅크 신호와 TID 뱅크 신호를 생성하는 것 외에, TID 생성 회로(224)는 홀드 TID 신호를 생성한다. 홀드 TID 신호는 NOR 게이트(512)의 다음 TID 값의 하위 5 비트를 제공함으로써 생성된다. 이러한 구성을 사용함으로써, 다음 TID 값의 하위 5 비트가 논리 0의 값을 가질 때, NOR 게이트(512)의 출력은 논리 1의 값이 된다. 뱅크 0 또는 뱅크 1이 각각 액세스되었다는 것을 지시하기 위하여 액세스되는 다음 TID가 번호 0 또는 번호 32인 때, TID 값의 하위 5비트는 논리 0의 값이 된다. 또한, 파이프라인식 CPU(110)는, 입력되어야 하고 TID들을 할당받아야 하는 뱅크가 비어 있으며 그 뱅크와 관련된 모든 TID 및 명령이 그 뱅크가 사용될 수 있기 전에 회수되었는지를 판정해야 한다. 점유 뱅크 판정 회로(502)는 뱅크 0 및 뱅크 1이 점유되는 때를 판정하기 위한 신호들을 생성한다. 다음 TID(0)가 반전되고, 뱅크 0이 후속 TID 할당 동작시 액세스될 수 있는가를 지시하기 위해 뱅크 0 점유 신호와 논리곱된다. 유사하게, 다음 TID(0) 값은 TID들이 뱅크 1로부터 할당될 수 있는가를 판정하기 위해 뱅크 1 점유 신호와 논리곱된다. 따라서, 뱅크 0 또는 뱅크 1 중 적절한 하나가 점유되지 않고, TID들이 새로운 뱅크로부터 할당되어야 하는 경우, AND 게이트(514)에 의해 수행된 논리 기능에 따라 홀드 TID 신호가 변경된다.
도 6에 점유 뱅크 판정 회로(502)가 더 상세히 도시되어 있다. 점유 뱅크 판정 회로(502)는 파이프라인식 CPU(110)의 동작시 할당된 각 TID에 대응하는 복수의 제어 비트를 저장하는 TID 할당 어레이를 포함한다. TID 할당 어레이(602) 내의 각 TID 엔트리는 데이타(D) 비트, 완료(C) 비트 및 CR 논리(L) 비트를 포함한다. D, C 및 L 비트들 각각은 실행될 명령에 따른 할당시에 설정된다. D 비트는 명령으로부터 하나의 결과를 얻을 수 있는지의 여부를 지시한다. 파이프라인식 CPU(110) 내의 실행 유닛들로부터 결과 버스상에 하나의 결과가 제공될 때, 비트는 재설정되거나 부정된다. 이와 반대로, 명령이 파이프라인식 CPU(110) 내의 다른 구성 요소들로 전파된 결과 버스상에 결과를 제공하지 못하는 경우, D 비트는 표명되지 않는다. 또한, C 비트는 명령이 완료되었는가를 지시한다. 명령이 완료되었을 때까지 TID가 재사용될 수 없기 때문에, 이 비트는 TID 뱅크가 후속 사용을 위해 해제될 수 있는가를 판정하기 위해 분석되어야 한다. 따라서, 명령이 인터럽트 가능한 경우, C 비트는 표명된다. 역으로, TID가 할당되는 명령이 인터럽트 가능하지 않은 경우, C 비트는 부정된다. 또한, L 비트는 TID가 할당되는 명령이 상태 레지스터를 변경하는지를 지시하는 데 사용된다. 제1 뱅크 내에 저장된 32 TID들 각각을 위한 3 비트 중 어느 하나가 표명되는 경우, OR 게이트(606)는 뱅크 0 점유 신호를 표명한다. 유사하게, 뱅크 1 내의 32 TID들 각각에 관련된 3 비트 중 어느 하나가 표명되는 경우, OR 게이트(604)는 뱅크 1 점유 신호를 표명한다.
뱅크 0 점유 및 뱅크 1 점유 신호들 각각은 도 5의 TID 생성 회로(224)의 일부 내의 적절한 논리 게이트에 제공된다.
본 명세서에 설명된 방법 및 데이타 처리 시스템은 파이프라인식 데이타 프로세서 내의 자원들을 해제하는 데 사용될 수 있는 비추측 인터럽트 불능 TID를 판정하기 위한 효과적인 방법을 구현한다. 그러나, 본 명세서에서 설명된 본 발명의 실시예는 일례로서 제공된 것이라는 사실을 관련 기술의 전문가들은 이해해야 한다. 추가적인 구현들도 존재한다. 예컨대, 완료 제어 논리 회로(237)를 구현하기 위해 사용된 논리 회로 및 특히 선택 회로(406)는 동일한 기능을 수행하는 다수의 기술을 사용하여 구현될 수 있다. 또한, 본 발명의 회로들 각각을 구현하기 위해 사용된 논리는 파이프라인식 CPU(110)의 설계자에 따라서는 논리 참 또는 논리 거짓일 수 있다.
본 명세서에 본 발명의 원리들이 설명되었지만, 그 설명은 단지 예시적인 것일 뿐, 본 발명의 영역을 제한하는 것이 아니라는 사실을 당해 기술 분야의 전문가들은 명백히 이해해야 한다. 따라서, 첨부된 특허 청구 범위에 의해, 본 발명의 사상 및 영역 내에 있는 발명의 모든 변형을 포함하는 것으로 의도된다.

Claims (29)

  1. 데이타 처리 시스템에 있어서, 복수의 목표 식별값을 생성하기 위한 목표 식별 회로, 상기 복수의 목표 식별값의 제1 부분을 선택적으로 저장하기 위한 메모리-상기 복수의 목표 식별값 각각은 하나의 명령에 대응함ㅡ , 상기 메모리 내의 선정된 저장 위치를 선택적으로 지시하는 완료 명령 포인터, 및 상기 메모리에 상기 복수의 목표 식별값 중 어느 것도 저장되어 있지 않은 때의 공백 메모리 신호를 공급하기 위한 완료 제어 회로, 상기 완료 명령 포인터를 수신하기 위해 상기 완료 제어 회로에 결합된 투영 회로-상기 투영 회로는 상기 완료 명령 포인터를 평가하여 투영된 목표 식별값 및 투영된 목표 식별 유효값을 생성함-, 상기 공백 메모리 신호를 수신하기 위해 상기 완료 제어 회로에 결합되고, 상기 투영된 목표 식별값을 수신하기 위해 상기 투영 회로에 결합된 선택 생성 회로-상기 선택 생성 회로는 제1 선택 신호를 생성함- 및 상기 제1 선택 신호를 수신하기 위해 상기 선택 생성 회로에 결합되고, 상기 투영된 목표 식별값을 수신하기 위해 상기 투영 회로에 결합되며, 상기 복수의 목표 식별값 중 미리 선택된 하나를 수신하기 위해 상기 목표 식별 회로에 결합된 선택기-상기 선택기는 상기 복수의 목표 식별값 중 미리 선택된 하나와 상기 투영된 목표 식별값 중 하나를 인터럽트 불가능 목표 식별값으로서 제공함-를 포함하는 데이타 처리 시스템.
  2. 제1항에 있어서, 상기 명령은 인터럽트가 가능한 데이타 처리 시스템.
  3. 제1항에 있어서, 상기 메모리는 선입 선출 큐인 데이타 처리 시스템.
  4. 제1항에 있어서, 상기 인터럽트 불가능 목표 식별값은 상기 데이타 처리 시스템에 의해 완료될 다음 명령을 지시하는 데이타 처리 시스템.
  5. 제4항에 있어서, 상기 다음 명령 이전에 실행된 복수의 명령이 완료된 데이타 처리 시스템.
  6. 제5항에 있어서, 상기 복수의 명령에 의해 사용된 복수의 자원이 상기 다음 명령이 완료된 때에 해제(release)되는 데이타 처리 시스템.
  7. 제1항에 있어서, 상기 복수의 목표 식별값 중 미리 선택된 하나는 상기 목표 식별 회로에 의해 할당될 다음 목표 식별자와 상기 목표 식별 회로에 의해 할당될 최종 목표 식별자 중 하나를 지시하는 데이타 처리 시스템.
  8. 제1항에 있어서, 상기 선택 생성 회로는 상기 투영된 목표 식별값과 상기 공백 메모리 신호를 선택적으로 논리적으로 조합하여 상기 제1 선택 신호를 생성하는 데이타 처리 시스템.
  9. 제1항에 있어서, 상기 공백 메모리 신호를 수신하고, 선정된 시간 동안 상기 공백 메모리 신호를 저장하며, 지연된 공백 메모리 신호를 제공하기 위한 래치를 더 포함하는 데이타 처리 시스템.
  10. 제9항에 있어서, 상기 선택 생성 회로는 상기 투영된 목표 식별 유효값, 상기 공백 메모리 신호 및 상기 지연된 공백 메모리 신호를 논리적으로 조합하여 상기 제1 선택 신호, 제2 선택 신호 및 제3 선택 신호를 생성하는 데이타 처리 시스템.
  11. 제10항에 있어서, 상기 제1 선택 신호는 제1 논리 상태에 있을 때 상기 복수의 목표 식별값 중 미리 선택된 하나를 상기 인터럽트 불가능 목표 식별값으로서 선택하고, 상기 제2 선택 신호는 제2 논리 상태에 있을 때 상기 복수의 목표 식별값 중 지연된, 미리 선택된 하나를 상기 인터럽트 불가능 목표 식별값으로서 선택하며, 상기 제3 선택 신호는 제3 논리 상태에 있을 때 지연된, 투영된 목표 식별값을 상기 인터럽트 불가능 목표 식별값으로서 선택하는 데이타 처리 시스템.
  12. 데이타 처리 시스템에 있어서, 상기 데이타 처리 시스템에서 실행되고 있는 복수의 명령의 일부에 대응하는 복수의 정보값의 일부를 선택적으로 저장하기 위한 메모리, 다음 타이밍 싸이클 동안 실행될 상기 복수의 명령 중 투영된 하나를 지시하기 위해 투영된 정보값을 제공하기 위한 투영 회로, 상기 복수의 정보값 중 미리 선택된 하나를 생성하기 위한 식별 생성 회로 및 상기 투영된 정보값과 상기 복수의 정보값 중 미리 선택된 하나 중 하나를 상기 데이타 처리 시스템에서 완료될 다음 명령에 대응하는 인터럽트 불가능 정보값으로서 선택적으로 제공하기 위한 선택 회로-상기 선택 회로는 상기 투영된 정보값을 수신하기 위해 상기 투영 회로에 결합되고 상기 복수의 정보값 중 미리 선택된 하나를 수신하기 위해 상기 식별 생성 회로에 결합됨-를 포함하는 데이타 처리 시스템.
  13. 제12항에 있어서, 상기 메모리 내의 선정된 저장 위치를 선택적으로 지시하는 완료 명령 포인터 및 상기 메모리 내에 상기 복수의 명령값의 일부 중 어느 것도 저장되어 있지 않음을 나타내는 공백 메모리 신호를 공급하기 위한 완료 제어 회로를 더 포함하는 데이타 처리 시스템.
  14. 제13항에 있어서, 상기 선택 회로는 상기 공백 메모리 신호를 수신하기 위해 상기 완료 제어 회로에 결합되고, 투영된 정보 유효값을 수신하기 위해 상기 투영 회로에 결합된 선택 생성 회로-상기 선택 생성 회로는 제1 선택 신호를 생성함- 및 상기 제1 선택 신호를 수신하기 위해 상기 선택 생성 회로에 결합되고, 상기 투영된 정보값을 수신하기 위해 상기 투영 회로에 결합되며, 상기 복수의 정보값 중 미리 선택된 하나를 수신하기 위해 상기 식별 생성 회로에 결합된 선택기-상기 선택기는 상기 투영된 정보값과 상기 복수의 정보값 중 미리 선택된 하나 중 하나를 상기 인터럽트 불가능 정보값으로서 제공함-를 더 포함하는 데이타 처리 시스템.
  15. 제12항에 있어서, 상기 복수의 명령 중 일부는 인터럽트가 가능한 명령인 데이타 처리 시스템.
  16. 제12항에 있어서, 상기 메모리는 선입 선출 큐인 데이타 처리 시스템.
  17. 제12항에 있어서, 상기 다음 명령 이전에 실행된 상기 복수의 명령 중 일부가 완료된 데이타 처리 시스템.
  18. 제17항에 있어서, 상기 다음 명령이 완료된 때, 상기 복수의 명령 중 일부에 의해 사용된 복수의 자원이 해제되는 데이타 처리 시스템.
  19. 데이타 처리 시스템에서 명령들을 완료하기 위한 방법에 있어서, 복수의 목표 식별값을 생성하는 단계;
    상기 복수의 목표 식별값의 제1 부분을 선택적으로 저장하는 단계-상기 복수의 목표 식별값 각각은 하나의 명령에 대응함-, 상기 메모리 내의 선정된 저장 위치를 선택적으로 지시하는 완료 명령 포인터 및 상기 메모리 내에 상기 복수의 목표 식별값 중 어느 것도 저장되어 있지 않은 때의 공백 메모리 신호를 공급하는 단계, 상기 완료 명령 포인터를 평가하여 투영된 목표 식별값 및 투영된 목표 식별 유효값을 생성하는 단계, 상기 공백 메모리 신호 및 상기 투영된 목표 식별 유효값에 응답하여 제1 선택 신호를 생성하는 단계 및 상기 복수의 목표 식별값 중 미리 선택된 하나와 상기 투영된 목표 식별값 중 하나를 인터럽트 불가능 목표 식별값으로서 제공하는 단계를 포함하는 데이타 처리 시스템 명령 완료 방법.
  20. 제19항에 있어서, 상기 명령은 인터럽트가 가능한 데이타 처리 시스템 명령 완료 방법.
  21. 제19항에 있어서, 상기 메모리는 선입 선출 큐인 데이타 처리 시스템 명령 완료 방법.
  22. 제19항에 있어서, 상기 인터럽트 불가능 목표 식별값은 상기 데이타 처리 시스템에 의해 실행될 다음 명령을 지시하는 데이타 처리 시스템 명령 완료 방법.
  23. 제19항에 있어서, 상기 복수의 목표 식별값 중 미리 선택된 하나는 목표 식별 생성 회로에 의해 할당될 다음 목표 식별자와 상기 목표 식별 생성 회로에 의해 할당될 최종 목표 식별자 중 하나를 지시하는 데이타 처리 시스템 명령 완료 방법.
  24. 제19항에 있어서, 상기 제1 선택 신호를 생성하기 위하여 상기 투영된 목표 식별 유효값과 상기 공백 메모리 신호를 선택적으로 논리적으로 조합하는 단계를 더 포함하는 데이타 처리 시스템 명령 완료 방법.
  25. 제19항에 있어서, 상기 공백 메모리 신호를 수신하는 단계, 선정된 시간 동안 상기 공백 메모리 신호를 래치에 저장하는 단계 및 지연된 공백 메모리 신호를 공급하는 단계를 더 포함하는 데이타 처리 시스템 명령 완료 방법.
  26. 제25항에 있어서, 상기 투영된 목표 식별 유효값, 상기 공백 메모리 신호 및 상기 지연된 공백 메모리 신호를 논리적으로 조합하여 상기 제1 선택 신호, 제2 선택 신호 및 제3 선택 신호를 생성하는 단계를 더 포함하는 데이타 처리 시스템 명령 완료 방법.
  27. 제26항에 있어서, 상기 제1 선택 신호가 제1 논리 상태에 있을 때, 상기 복수의 목표 식별값 중 미리 선택된 하나를 상기 인터럽트 불가능 목표 식별값으로서 선택하는 단계, 상기 제2 선택 신호가 제2 논리 상태에 있을 때, 상기 복수의 목표 식별값 중 지연된, 미리 선택된 하나를 상기 인터럽트 불가능 목표 식별값으로서 선택하는 단계 및 상기 제3 선택 신호가 제3 논리 상태에 있을 때, 지연된, 투영된 목표 식별값을 상기 인터럽트 불가능 목표 식별값으로서 선택하는 단계를 더 포함하는 데이타 처리 시스템 명령 완료 방법.
  28. 데이타 처리 동작이 주기적으로 수행되는 데이타 프로세서에서의 데이타 처리 방법에 있어서, 명령들을 순차적으로 할당하는 단계, 상기 명령들 중 인터럽트가 가능한 명령들에 대해, 그 명령들의 표시를 버퍼의 엔트리들 내에 대응 순서로 저장하는 단계, 상기 버퍼 엔트리에 대한 상태를 유지하여 관련 명령이 완료되었는지의 여부를 지시하는 단계 및 일정한 싸이클 동안, 완료될 다음 명령을 식별하는 단계-상기 식별 단계는 상기 버퍼가 비어 있고 선행 싸이클에서 비어 있었는지의 여부, 및 상기 버퍼의 예측된 최하부 엔트리가 유효한지의 여부에 응답하여 이루어지며, 따라서 자원들은 상기 식별된 명령에 응답하여 해제될 수 있음-를 포함하는 데이타 처리 방법.
  29. 제28항에 있어서, 포인터를 유지하여, 상기 버퍼 엔트리들 중 어느 엔트리가 상기 인터럽트 가능 명령들 중 가장 최근에 완료된 명령에 대한 것인가를 지시하는 단계 및 상기 포인터 및 상기 일정 싸이클 동안에 완료된 명령 수에 응답하여 상기 최하부 엔트리를 예측하는 단계를 더 포함하는 데이타 처리 방법.
KR1019980004482A 1997-04-25 1998-02-14 데이타 처리 시스템 및 무질서 명령을 완성하기 위한 방법 KR19980079722A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/840,919 US5875326A (en) 1997-04-25 1997-04-25 Data processing system and method for completing out-of-order instructions
US8/840,919 1997-04-25

Publications (1)

Publication Number Publication Date
KR19980079722A true KR19980079722A (ko) 1998-11-25

Family

ID=25283577

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019980004482A KR19980079722A (ko) 1997-04-25 1998-02-14 데이타 처리 시스템 및 무질서 명령을 완성하기 위한 방법

Country Status (5)

Country Link
US (1) US5875326A (ko)
KR (1) KR19980079722A (ko)
BR (1) BR9801432A (ko)
MX (1) MX9802611A (ko)
SG (1) SG66457A1 (ko)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6085263A (en) * 1997-10-24 2000-07-04 Compaq Computer Corp. Method and apparatus for employing commit-signals and prefetching to maintain inter-reference ordering in a high-performance I/O processor
US5974524A (en) * 1997-10-28 1999-10-26 International Business Machines Corporation Method and apparatus for reducing the number of rename registers in a processor supporting out-of-order execution
US6134645A (en) * 1998-06-01 2000-10-17 International Business Machines Corporation Instruction completion logic distributed among execution units for improving completion efficiency
SE9901146D0 (sv) 1998-11-16 1999-03-29 Ericsson Telefon Ab L M A processing system and method
SE9901145D0 (sv) 1998-11-16 1999-03-29 Ericsson Telefon Ab L M A processing system and method
SE9902373D0 (sv) * 1998-11-16 1999-06-22 Ericsson Telefon Ab L M A processing system and method
US6543002B1 (en) * 1999-11-04 2003-04-01 International Business Machines Corporation Recovery from hang condition in a microprocessor
US7478276B2 (en) * 2005-02-10 2009-01-13 International Business Machines Corporation Method for checkpointing instruction groups with out-of-order floating point instructions in a multi-threaded processor
US7467325B2 (en) * 2005-02-10 2008-12-16 International Business Machines Corporation Processor instruction retry recovery
US7409589B2 (en) * 2005-05-27 2008-08-05 International Business Machines Corporation Method and apparatus for reducing number of cycles required to checkpoint instructions in a multi-threaded processor
US9672045B2 (en) 2014-09-30 2017-06-06 International Business Machines Corporation Checkpoints for a simultaneous multithreading processor

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR0122528B1 (ko) * 1993-01-08 1997-11-20 윌리엄 티.엘리스 슈퍼스칼라 프로세서 시스템에서 중간 기억 버퍼의 할당을 인덱스하기 위한 방법 및 시스템
US5590351A (en) * 1994-01-21 1996-12-31 Advanced Micro Devices, Inc. Superscalar execution unit for sequential instruction pointer updates and segment limit checks
TW260765B (ko) * 1994-03-31 1995-10-21 Ibm
US5559976A (en) * 1994-03-31 1996-09-24 International Business Machines Corporation System for instruction completion independent of result write-back responsive to both exception free completion of execution and completion of all logically prior instructions
US5708788A (en) * 1995-03-03 1998-01-13 Fujitsu, Ltd. Method for adjusting fetch program counter in response to the number of instructions fetched and issued

Also Published As

Publication number Publication date
MX9802611A (es) 1998-11-29
BR9801432A (pt) 1999-06-01
US5875326A (en) 1999-02-23
SG66457A1 (en) 1999-07-20

Similar Documents

Publication Publication Date Title
US6728866B1 (en) Partitioned issue queue and allocation strategy
US7650486B2 (en) Dynamic recalculation of resource vector at issue queue for steering of dependent instructions
US6131157A (en) System and method for retiring approximately simultaneously a group of instructions in a superscalar microprocessor
US6141747A (en) System for store to load forwarding of individual bytes from separate store buffer entries to form a single load word
EP0636256B1 (en) Superscalar risc processor instruction scheduling
CN100357884C (zh) 用于处理指令的方法、处理器以及系统
US5809268A (en) Method and system for tracking resource allocation within a processor
US5826055A (en) System and method for retiring instructions in a superscalar microprocessor
US5778210A (en) Method and apparatus for recovering the state of a speculatively scheduled operation in a processor which cannot be executed at the speculated time
EP0679988B1 (en) Range finding circuits
EP0762270A2 (en) Microprocessor with load/store operation to/from multiple registers
US5805849A (en) Data processing system and method for using an unique identifier to maintain an age relationship between executing instructions
JPH10301778A (ja) レジスタの名前変更を管理する方法および装置
KR19980079722A (ko) 데이타 처리 시스템 및 무질서 명령을 완성하기 위한 방법
US6871343B1 (en) Central processing apparatus and a compile method
EP0518420A2 (en) Computer system for concurrent processing of multiple out-of-order instructions
US7143267B2 (en) Partitioning prefetch registers to prevent at least in part inconsistent prefetch information from being stored in a prefetch register of a multithreading processor
US7302553B2 (en) Apparatus, system and method for quickly determining an oldest instruction in a non-moving instruction queue
US11507379B2 (en) Managing load and store instructions for memory barrier handling
US7529913B2 (en) Late allocation of registers
US5765017A (en) Method and system in a data processing system for efficient management of an indication of a status of each of multiple registers
KR100305487B1 (ko) 특정유형의인스트럭션을동시에처리할수있는방법및데이터프로세싱시스템
US5805916A (en) Method and apparatus for dynamic allocation of registers for intermediate floating-point results
US7783692B1 (en) Fast flag generation
CN117742796B (zh) 指令唤醒方法、装置以及设备

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
NORF Unpaid initial registration fee