KR0122528B1 - 슈퍼스칼라 프로세서 시스템에서 중간 기억 버퍼의 할당을 인덱스하기 위한 방법 및 시스템 - Google Patents

슈퍼스칼라 프로세서 시스템에서 중간 기억 버퍼의 할당을 인덱스하기 위한 방법 및 시스템

Info

Publication number
KR0122528B1
KR0122528B1 KR1019930028551A KR930028551A KR0122528B1 KR 0122528 B1 KR0122528 B1 KR 0122528B1 KR 1019930028551 A KR1019930028551 A KR 1019930028551A KR 930028551 A KR930028551 A KR 930028551A KR 0122528 B1 KR0122528 B1 KR 0122528B1
Authority
KR
South Korea
Prior art keywords
general purpose
purpose registers
buffers
buffer index
buffer
Prior art date
Application number
KR1019930028551A
Other languages
English (en)
Other versions
KR940018757A (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 KR940018757A publication Critical patent/KR940018757A/ko
Application granted granted Critical
Publication of KR0122528B1 publication Critical patent/KR0122528B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming

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)
  • Memory System Of A Hierarchy Structure (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

본 발명의 방법 및 시스템은 복수개의 중간 기억 버퍼, 복수개의 범용 레지스터 및 기억 버퍼 인덱스부를 갖는 슈퍼스칼라 프로세서 시스템에서 향상된 디스패치 효율을 제공한다. 디스패치 버퍼로부터 복수개의 실행 유니트로 복수의 스칼라 명령어가 동시에 디스패치될 수도 있다. 복수개의 각 스칼라 명령어는 일반적으로 한 개 이상의 소오스 오퍼런드와 한 개 이상의 목적지 오퍼런드를 포함한다. 복수의 스칼라 명령어 중 선택된 명령어 내의 목적지 오퍼런드에 복수개의 중간 기억 버퍼 중 특정한 버퍼가 할당된다. 복수개의 중간 기억 버퍼 중 특정한 버퍼와 복수개의 범용 레지스터 중 지정된 레지스터간의 관계는, 디스패치되는 명령어가 디스패치부에서 애플리케이션 프로그램 시이퀀스의 다른 명령어에 의해 교체될 때 기억 버퍼 인덱스부에 기억된다. 복수개의 스칼라 명령어 중 선택된 명령어의 실행 결과는 선택된 명령어가 실행될 때 중간 기억 버퍼 중 특정한 버퍼에 기억된다. 상기 기억 버퍼 인덱스부는, 기억 버퍼가 특정한 범용 레지스터를 위해 할당되는 시간과 기억 버퍼로부터 범용 레지스터로 실행 결과가 이동되는 시간 사이에 디스패치되는 명령어를 위한 소오스 오퍼런드로서 기억 버퍼를 사용하여야 하는가를 판단하는데 사용된다.

Description

수퍼스칼라 프로세서 시스템에서 중간 기억 버퍼의 할당을 인덱스하기 위한 방법 및 시스템
제1도는 본 발명의 방법 및 시스템을 구현하는데 이용될 수 있는 슈퍼스칼라 프로세서 시스템의 하이 레벨 블럭도.
제2도는 본 발명의 방법 및 시스템을 구현하는데 이용될 수 있는 제1도 슈퍼스칼라 프로세서 시스템의 명령어 디스패치 회로에 대한 세부 블럭도.
제3도는 본 발명의 방법 및 시스템에 따른 제1도의 슈퍼스칼라 프로세서 시스템 내의 중간 기억 버퍼를 나타내는 하이 레벨 블럭도.
제4도는 본 발명의 방법 및 시스템을 구현하는데 이용될 수 있는 제3도의 슈퍼스칼라 프로세서 시스템 내의 기억 버퍼 인덱스부에 대한 회화 표현도.
제5도는 본발명의 방법 및 시스템을 구현하는데 이용될 수 있는 제 3도의 슈퍼스칼라 프로세서 시스템내의 대체가능한 기억버퍼 인덱스부에 대한 회화 표현도.
* 도면의 주요부분에 대한 부호의 설명
10 : 슈퍼칼라 데이타 처리 시스템 18 : 메모리
20 : 캐쉬/메모리 인터페이스 22 : 명령어 디스패치부
24, 24a, 24b, 24c, 32, 34 : 실행 유니트 28, 30 : 적재/기억 유니트
36 : 분기 실행 유니트 40 : 부동 소수점 중간 기억 버퍼
42 : 고정 소수점 중간 기억 버퍼 44 : 부동 소수점 범용 레지스터
46 : 고정 소수점 범용 레지스터 48 : 완료 버퍼
58 : 기억 버퍼 인덱스부 60 : 중간 기억 버퍼
62 : 범용 레지스터 64 : 버스
74 : 비교 유니트
본 발명은 총체적으로 향상된 데이타 처리 시스템 특히, 슈퍼스칼라 프로세서 시스템에서 명령어 디스패치 효율을 향상시키기 위한 방법 및 시스템에 관한 것이다. 더욱이, 본 발명은 슈퍼스칼라 프로세서 시스템에서 중간 기억 버퍼의 할당을 인덱스하기 위한 방법 및 시스템에 관한 것이다.
최첨단의 데이타 처리 시스템의 설계가들은 이와 같은 시스템의 성능을 향상시키려고 끊임없이 시도하고 있다. 데이타 처리의 효율을 향상시키기 위한 한가지 기술은 사이클 시간을 짧게 하며 명령어당 사이클(CPI) 비율을 낮게 하는 것이다. 데이타 처리 시스템을 향상시키는데 상기 기술을 적용한 한가지 보기 좋은 예는 IBM(주)의 RISC 시스템/6000(RS/6000) 컴퓨터이다. 상기 RS/6000시스템은 멀티유저의 상업용 환경은 물론 주로 수치를 처리하는 엔지니어링 및 과학적인 애플리케이션에서 훌륭하게 수행되도록 설계되어 있다. 상기 RS/6000 프로세서는 복수의 명령어가 지시되어 동시에 실행된다는 것을 의미하는 슈퍼스칼라 구현체를 이용한다.
이와 같이 복수의 명령을 동시에 발하고 실행하는 데에는 높은 명령어 대역(a ahigh instruction bandwidth)과 병행으로 실행할 수 있는 독립적인 기능을 갖는 유니트를 필요로 한다. 상기 RS/6000 시스템은 이와 같은 것을 자연스럽게 파이프라인되어 있으며, 개별적으로 분기(separate branch)하는 고정 소수점 및 부동 소수점 처리 유니트를 이용함으로써 달성한다. 이와 같은 시스템에서 파이프라인되어 있는 프로세서의 특성을 고려하면, 후속하는 명령어를 디스패치하기 전에 후속 명령어를 실행하는데 필요한 특정한 명령어로 인한 결과가 확실히 얻어질 수 있도록 주의하여야 한다. 이와 같은 소위 데이타 종속 위험성(data dependency hazards)이 일어나지 않게 하는 확실한 한 가지 기술은 선행하는 모든 명령어가 디스패치될 때까지 특정한 명령어의 디스패치를 제한하는 것이다. 비록 이와 같은 기술이 데이타 종속 위험성을 확실히 일어나지 않게 할 지라도, 이와 같은 기술을 이용하는데 부딪치는 성능상의 손실은 매우 크다.
결국, 오늘날의 슈퍼스칼라 데이타 처리 시스템은 종종 소위, 데이타 종속 인터록 회로(data dependency interlock circuit)를 이용한다. 이와 같은 회로는 명령을 올바르게 실행하는데 필요한 선행하는 명령으로 인한 결과가 얻어질 때까지 명령이 디스패치되지 않도록 보장하는 명령어 디스패치 회로와 관련하여 동작하는 논리를 포함하고 있다. 데이타 종속 인터록 회로를 구현하는데 필요한 논리의 크기는 각 명령어 내의 소오스 오퍼런드 수와 직접 비례한다. 소오스 오퍼런드는 명령어를 실행하는데 이용하기 위해, 레지스터 화일 내의 오퍼런드를 액세스하는데 이용되는 명령어 내의 필드이다.
비록 데이타 종속 인터록 회로로서 상술된 성능상의 중대한 손실없이 데이타 종속 위험성을 회피할 수 있을지라도, 많은 수의 소오스 및 목적지 오퍼런드를 포함하고 있는 명령어를 위한 데이타 종속 인터록을 설계하고 구현하는 것이 상당히 복잡해지게 된다. 독립적이며 실행가능(independent and executable)한 것일 수 있는 다음에 오는 명령어가 디스패치되어 실행될 디스패치부로 들어가는 것을 막는 상기 종속 인터록은 종속적인 명령어를 디스패치하는 것을 금지한다.
복수의 명령어를 단일 프로세서 사이클(a single processor cycle)에서 동시에 실행함에 따라 일어나는 상기 데이타 종속 위험성은 또한 공지된 레지스터 리네이밍(register renaming)이라는 방법을 이용함으로써 해결되고 있다. 레지스터 리네이밍이란, 명령으로 인한 최종 결과가 레지스터 화일에 놓이기 전에 다음에 오는 명령어에 의해 잠재적으로 사용되기 위한 레지스터에 특정 명령의 결과를 일시적으로 위치시키는데 사용되는 기술이다. 레지스터 리네이밍은 논리 레지스터에 지정되는 특정한 물리 레지스터를 식별하기 위해 레지스터 화일 어레이에 잉여의 장소와 포인터 배열을 제공함으로써 총체적으로 수행된다. 또한, 취할 수 있는 종래기술의 해결방법은 복수의 레지스터 화일 어레이를 이용하여 데이타를 위한 또는 예외 상태의 경우에 백업하기 위해 이전의 결과를 저장하기 위한 많은 판독 포트를 제공하는 것이다. 비록 이와 같은 기술이 달리 순차적 실행이 필요하지 않을 복수의 명령을 동시에 디스패치하고 실행할 수 있는 능력을 제공할지라도, 이와 같은 명령을 이용하는 유니트를 실행하기 위해 명령을 디스패치하는 데에는 문제가 존재한다. 명령어를 실행하기 위해 일시적 레지스터가 필요한 데이타를 포함하고 있을 때를 판단하기 위해 디스패치 유니트 또는 실행 유니트가 조사표 또는 포인터 전체에 대한 복잡한 판독을 수행하여야 하기 때문에, 실행하기 위해 명령어가 특정 데이타 또는 오퍼런드를 이용할 필요성 때문에 단일 프로세서 사이클 내에서 명령어 및 연관된 데이타를 실행 유니트로 대스패치하는 것이 불가능하게 된다.
더욱이, 어떤 시스템은 단일 프로세서 사이클 동안 한 번 이상 레지스터를 리네이밍할 수도 있다. 결국 레지스터 리네이밍을 위해 조사표를 이용하는 시스템에 있어서는 특정한 레지스터에 대해 가장 최근에 할당된 리네임 버퍼를 판단할 수 있도록 하기 위해 대량의 조사표(a massive lookup table)가 필요할 수도 있다.
그래서 데이타 또는 오퍼런드를 명령어와 함께 신속하게 디스패치시킴으로써 단일 프로세서 사이클 내에서 슈퍼스칼라 프로세서 시스템안에 명령어 디스패치를 가능케하는 방법 및 시스템의 필요성이 존재함은 명백하다.
그래서 본 발명의 한 가지 목적은 향상된 데이타 처리 시스템을 제공하는 것이다.
본 발명의 다른 목적은 슈퍼스칼라 프로세서 시스템에서 명령어 디스패치 효율을 향상시키기 위한 향상된 방법 및 시스템을 제공하는 것이다.
본 발명의 다른 목적은 슈퍼스칼라 프로세서 시스템에서 중간기억 버퍼의 할당을 인덱스하기 위한 방법 및 시스템을 제공하는 것이다.
상기 목적들은 이제부터 서술되는 바와 같이 달성된다. 본 발명의 방법 및 시스템은 복수개의 중간 기억 버퍼, 복수개의 범용 레지스터 및 기억 버퍼 인덱스부를 갖는 슈퍼스칼라 프로세서 시스템에서 향상된 명령어 디스패치 효율을 제공한다. 디스패치 버퍼로부터 복수개의 실행 유니트로 복수의 스칼라 명령어가 동시에 디스패치될 수도 있다. 복수개의 각 스칼라 명령어는 일반적으로 적어도 한 개의 소오스 오퍼런드와 한 개의 목적지 오퍼런드를 포함한다. 복수의 스칼라 명령어 중 선택된 명령어 내의 목적지 오퍼런드에 복수개의 중간 기억 버퍼 중 특정한 버퍼가 할당된다. 복수개의 중간 기억 버퍼 중 특정한 버퍼와 복수개의 범용 레지스터 중 지정된 레지스터간의 관계는, 디스패치되는 명령어가 디스패치부에서 애플리케이션 프로그램 시이퀀스의 다른 명령어에 의해 교체될 때 기억 버퍼 인덱스부에 기억된다. 복수개의 스칼라 명령어 중 선택된 명령어의 실행 결과는 선택된 명령어가 실행될 때 중간 기억 버퍼 중 특정한 버퍼에 기억된다. 상기 기억 버퍼 인덱스부는, 기억 버퍼가 특정한 범용 레지스터를 위해 할당되는 시간과 기억 버퍼로부터 범용 레지스터로 실행 결과가 이동되는 시간 사이에 디스패치되는 명령어를 위한 소오스 오퍼런드로서 기억 버퍼를 사용하여야 하는가를 판단하는데 사용된다.
본 발명의 부가적인 목적, 특징 및 장점은 물론 상기 사항은 다음의 상세한 설명에서 보다 명확해질 것이다.
본 발명의 신규한 특징으로 간주되는 특성은 첨부하는 특허청구범위에 서술되어 있다. 그러나, 본 발명의 바람직한 실시 방법, 부가적인 목적 및 장점은 첨부하는 도면과 관련하여 예시적인 실시예에 대한 다음의 상세한 설명을 참조하면 보다 잘 이해할 수 있을 것이다.
지금부터 도면 특히 제1도를 참조하면, 본 발명의 방법 및 시스템을 구현하는데 이용될 수 있는 슈퍼스칼라 데이타 처리 시스템(10)의 하이 레벨 블럭도가 도시되어 있다. 예시된 바와 같이, 데이타 처리 시스템(10)은 데이타, 명령 및 그와 유사한 것을 기억시키는데 사용될 수 있는 메모리(18)를 구비한다. 메모리(18)내에 기억된 데이타 또는 명령은 바람직하게 본 기술 분야에 공지된 방법으로 캐쉬/메모리 인터페이스(20)를 이용하여 액세스된다. 캐쉬 메모리 시스템의 크기와 그 이용은 데이타 처리 기술 분야에 잘 공지되어 있기 때문에 본 발명에서는 서술되지 않는다. 그러나, 본 기술 분야의 숙련자는 오늘날 연관 캐쉬 기법을 이용함으로써 캐쉬/메모리 인터페이스(20) 내에 일시적으로 기억된 데이타를 이용하여 높은 확율로 메모리를 액세스할 수 있다는 것을 알 수 있을 것이다.
캐쉬/메모리 인터페이스(20)에서 나오는 명령은 전형적으로 복수개의 대기장소를 바람직하게 구비하는 명령어 디스패치부(22)로 적재된다. 슈퍼스칼라 데이타 처리 시스템의 전형적인 실시예에서, 각 명령어 디스패치부의 각 장소는 두개와 여덟개의 명령어 사이에 포함될 수 있으며, 그리하여 얼마나 많은 유효한 명령이 캐쉬/메모리 인터페이스(20)을 통과하고 명령어 디스패치부(22) 안에 얼마나 많은 공간이 이용가능한가에 따라 소정의 사이클에서 최대 여덟개의 명령이 명령어 디스패치부(22)에 적재될 수 있다.
이와 같은 슈퍼스칼라 데이타 처리 시스템에 정형적인 바와 같이, 명령을 실행 유니트(24)로 디스패치하는 데에는 명령어 디스패치부(22)가 이용된다. 제1도에 도시된 바와 같이, 데이타 처리 시스템(10)은 설계에 따라 한개 이상의 부동 소수점 유니트, 고정 소수점 유니트, 적재/기억 유니트 및 분기 프로세서 유니트를 구비할 수 있다. 그리하여, 명령어 디스패치부(22)는 한개의 명령을 각 실행 유니트로 단일 사이클 동안 복수의 명령을 디스패치할 수 있다. 실행 유니트에는 설계에 따라 단일 사이클 동안 한개 이상의 명령을 단일 실행 유니트로 디스패치할 수 있는 할당부(reservation stations)를 구비할 수 있다. 그리하여, 슈퍼스칼라 프로세서에서 복수의 실행 유니트 각각은 단일 사이클에서 복수의 명령을 수신할 수 있다. 부가적으로, 멀티프로세서 시스템에서 명령은 복수개의 프로세서와 연관된 복수개의 실행 유니트(24)로 디스패치될 수 있다.
지금부터 제2도와 관련하여, 본 발명의 방법 및 시스템을 구현하는데 이용될 수 있는 제1도의 슈퍼스칼라 데이타 처리 시스템의 명령어 디스패치 회로에 대한 세부 블럭도가 도시되어 있다. 예시된 바와 같이, 캐쉬/메모리 인터페이스(20)에서 나오는 명령은 전형적으로 애플리케이션에 따라 지정된 순차적 순서로 그룹으로서 명령어 디스패치부(22)로 적재된다. 그리하여, 기회있을 때마다 실행 유니트(24) 내의 한개 이상의 실행 유니트로 디스패치하기 위해, 설계에 따라 일단의 두개, 네개 또는 여덟개의 명령어가 캐쉬/메모리 인터페이스(20)로부터 명령어 디스패치부(22)로 적재된다. 제2도의 실시예에 도시된 바와 같이, 이와 같은 실행 유니트는 복수개의 적재/기억 유니트(28과 30), 복수의 고정 소수점 실행 유니트(32와 34) 및 분기 실행 유니트(36)를 구비할 수 있다. 물론, 상술된 바와 같이, 설계에 따라 데이타 처리 시스템(10) 안에 서로 다른 유형을 갖는 보다 많거나 또는 적은 수의 실행 유니트가 포함될 수 있다.
이하에 도시된 유형과 같은 슈퍼스칼라 처리 시스템에 전형적인 바와 같이, 또한 복수개의 범용 레지스터가 또한 제공된다. 제2도의 실시예에서는, 두개 그룹의 범용 레지스터가 제공되어 있다. 즉 부동 소수점 범용 레지스터(44)와 고정 소수점 범용 레지스터(46)이다. 그리하여, 제2도에 도시된 실행 유니트 내에서 복수명령의 실행 결과는 전형적으로 다음에 이용하기 위해 선정된 범용 레지스터 안에 기억된다. 본 발명의 중요한 특징에 따르면, 또한 복수개의 중간 기억 버퍼가 제공되어 있다. 즉, 부동 소수점 중간 기억 버퍼(40)와 고정 소수점 중간 기억 버퍼(42)이다. 이하에 보다 상세히 서술되는 바와 같이, 각 실행 유니트는 독립적인 버스를 거쳐 각 중간 기억 버퍼에 접속되어 있다. 그리하여, 실행 유니트에 필요하거나 또는 실행 유니트 안에서 명령을 실행함으로써 생성된 데이타는 독립적인 버스에 위치되어, 다른 실행 유니트로서 이용하거나 또는 다음에 범용 레지스터로 전달되기 위해 지정된 중간 기억 버퍼 안에 기억된다.
상기 방법에서, 통상적으로 레지스터 리네이밍 방법과 연관되어 있는 복잡한 조사표(lookup tables)를 유지할 필요가 없으며, 목적지 오퍼런드에 대한 기억장소로서 즉시 이용될 수 있도록 중간 기억 버퍼가 효율적으로 지정되며, 데이타의 장소가 리네임된 레지스터 화일 안에서 결정될 필요가 없기 때문에 명령이 단일 프로세서 사이클 안에서 디스패치될 수 있다. 부가적으로, 애플리케이션에 따라 지정된 순차적 순서로 범용 레지스터 안에서 차후에 어셈블하기 위해 명령의 출력이 중간 기억 버퍼에 일시적으로 기억됨으로써 비순차적 방법으로 명령어가 실행될 수 있다.
도시된 바와 같이, 고정 소수점 실행 유니트 각각은 독자적인 버스를 경유하여 고정 소수점 중간 기억 버퍼(42)에 결합되어 있는 반면에, 부동 소수점 실행 유니트는 독립적인 버스를 경유하여 부동 소수점 중간 기억 버퍼(40)에 접속되어 있다. 본 기술 분야의 숙련자는 알 수 있듯이 고정 소수점 및 부동 소수점 데이타 모두를 적재하여 기억하여야 하기 때문에 적재/기억 유니트(28과 30)는 반드시 부동 소수점 중간 기억 버퍼(40)와 고정 소수점 중간 기억 버퍼(42)에 접속되어 있다.
본 발명의 다른 중요한 특징에 따르면, 완료 버퍼(a completion buffer)(48)가 제공되는데, 완료 버퍼(48)는 실행 유니트(24) 안에서 실행되고 있는 복수의 스칼라 명령의 종료를 추적한다. 상술된 바와 같이, 명령의 실행 결과는 연관된 중간 기억 버퍼에 각각 일시적으로 기억되며, 명령 또는 일단의 명령이 성공적으로 종료되었다는 것을 가리키게 되면 애플리케이션에 따라 명시된 순차적 순서로 이와 같이 종료된 명령어 데이타의 결과를 연관된 범용 레지스터로 전달하는 것을 초기화하는데 완료 버퍼(48)가 이용될 수도 있다. 부가적으로, 예외 상황이 일어날 경우에는, 완료 버퍼(48)는 예외 상황이 일어나기 전에 종료한 임의 명령어의 실행 결과를 기억시키도록 초기화시키며, 명령어 디스패치부(22)를 제어하여 예외 상황이 일어난 지점에서 프로세스를 다시 시작함으로써 효율적인 방법으로 손상되거나 유효하지 않은 데이타를 유효한 출력으로 교체시키거나 또는 특수한 예외 상황을 위한 어플리케이션에 따른 프로그램에 의해 지정된 바대로 새로운 명령어의 시이퀀스를 초기화시킨다.
지금부터 제3도와 관련하여, 본 발명의 방법 및 시스템에 따라 제1도의 슈퍼스칼라 프로세서 시스템 안에서 중간 기억 버퍼의 이용을 도시하는 하이 레벨 블럭도가 도시되어 있다. 명령어 디스패치부(22)에 의해 액세스될 수 있는 기억 버퍼 인덱스부(58)가 제공된다. 이하에 보다 상세히 서술되는 바와 같이, 기억 버퍼 인덱스부(58)는 복수개의 중간 기억 버퍼(60)와 연속하는 명령어를 실행하는 동안 이용하기 위한 지정된 범용 레지스터(62)간의 관계를 가리키는 것을 기억하여 유지하는데 이용된다.
복수개의 중간 기억 버퍼(60)는 바람직하게 복수개의 독립적인 버스(64)에 접속되어 있다. 바람직한 실시예에서, 각각의 중간 기억 버퍼가 각 버스에 접속되어 있기 때문에 독자적인 버스(64)의 수는 중간 기억 버퍼(60)의 수와 같다. 각각의 중간 기억 버퍼(60)에는 대응하는 독자적인 버스(64)로부터의 데이타가 기억될 수 있다. 본 기술 분야의 숙련자는 이용된 버스의 수는 설계에 따라 다를 수 있다는 것을 알 것이다.
복수개의 실행 유니트(24a, 24b, 24c)는 복수개의 독립적인 각 버스(64)에 접속되어 있다. 바람직한 실시예에서, 실행 유니트(24a, 24b, 24c)는 부동 소수점 실행 유니트, 복수개의 적재/기억 유니트, 복수개의 고정 소수점 실행 유니트 및 분기 실행 유니트를 구비할 수도 있다. 그러나, 본 기술 분야의 숙련자는 설계에 따라 실행 유니트의 유형 및 그 수가 변할 수도 있다는 것을 알 것이다.
또한 복수개의 각 실행 유니트(24a, 24b, 24c)는 독자적인 각 버스(64)로부터 판독하며 그리고 그것에 기록할 수 있다. 결과적으로, 복수개의 각 실행 유니트(24a, 24b, 24c)는 복수의 독자적인 버스(64)를 경유하여 복수의 각 중간 기억 버퍼(60)에 접속되어 있다. 그리하여, 실행 유니트 내에서 명령의 실행에 의해 데이타가 생성될 때, 실행 유니트는 데이타가 일시적으로 기억될 수 있으며 상기 데이타에 대한 목적지로서 명시되는 지정된 중간 기억 버퍼에 대응하는 버스에 상기 데이타를 위치시킬 수 있다. 이와 동시에, 상기 실행유니트는 유효 비트를 적절한 상태로 세팅시킴으로서 버스상의 데이타가 유효하다는 것을 가리킨다. 상기 방법에서, 비록 데이타가 버스상에 존재하며 지정된 중간 기억 버퍼 안에 데이타가 기억될 때 또는 그 전일지라도, 그 데이타를 필요로 하는 임의의 다른 실행 유니트는 상기 버스로부터 데이타를 검색할 수도 있다. 그리하여, 독립적인 버스를 제공함으로써 오는 한 가지 장점은 버퍼에 데이타를 기억한 다음 버퍼로부터 상기 데이타를 액세스할 필요가 없다는 것이다. 버스로부터 데이타를 직접 검색함으로써 프로세서 시스템의 동작 속도를 크게 향상시킬 수 있을 것이다.
더욱이 제3도와 관련하여, 복수개의 독립적인 버스(64) 각각은 범용 레지스터(62)에 결합되어 있다는 것을 알 수 있을 것이다. 명령어가 실행 유니트에 디스패치되려 할 때, 지정된 중간 기억 버퍼와 선정된 범용 레지스터간의 관계는 바람직하게 기억 버퍼 인덱스부(58) 안에 기억된다. 다른 실행 유니트에 의해 실행 결과가 필요할 때에는 기억 버퍼 인덱스부(58) 안의 정보를 이용함으로써 그 결과의 전달이 수행될 수 있다. 이하에 보다 상세히 서술되는 바와 같이, 기억 버퍼 인덱스부(58) 안에 기억된 정보는 범용 레지스터 명칭을 이용하여 액세스되는 지정된 중간 기억 버퍼에 대한 식별자 또는 지정된 중간 기억 버퍼의 명칭과 함께 액세스되는 범용 레지스터의 식별자일 수도 있다.
이와 같이, 범용 레지스터 화일을 리네이밍할 필요없이 디스패치될 명령어 내의 각 목적지 오퍼런드에 대한 기억장소로서 중간 기억 버퍼가 즉시 할당될 수 있기 때문에 전형적으로 레지스터 리네이밍 방법과 연관되어 있는 복잡한 조사표를 유지할 필요가 없다. 더욱이, 각 명령어의 실행 결과가 중간 기억 버퍼(60)에 일시적으로 기억되어 기억 버퍼 인덱스부(58) 내의 정보 및 완료 버퍼(48)(제2도 참조)의 내용을 이용함으로써 연속하는 명령에 의해 후속적으로 이용될 수 있기 때문에 기억 버퍼 인덱스부(58)는 비순차적으로 명령어의 실행을 가능케 한다.
제4도는 본 발명의 방법 및 시스템을 구현하는데 이용될 수 있는 제3도의 슈퍼스칼라 프로세스 시스템내의 기억 버퍼 인덱스부에 대한 회화 표현도이다. 기억 버퍼 인덱스부(58)는 0-r로 번호가 매겨져 있는 복수개의 엔트리를 구비한다. R은 슈퍼스칼라 프로세서 시스템의 범용 레지스터 수와 같다. 상술된 바와 같이, 이전에 실행 유니트로 디스패치된 명령어가 디스패치부에서 후속하는 애플리케이션 프로그램에 특정한 명령어로 교체될 때, 디스패치된 명령어 내의 목적지 오포런드와 지정된 중간 기억 버퍼간의 관계는 기억 버퍼 인덱스부(58)에 기억된다. 본 실시예에서, 지정된 중간 기억 버퍼에 대한 식별자는 선택된 범용 레지스터에 대응하는 엔트리에 기억된다.
예를 들어, 범용 레지스터 0에 대응하는 엔트리 위치 0에서, 중간 기억 버퍼 3에 대한 식별자가 기억되어 있다. 추가적으로, 범용 레지스터 r에 대응하는 엔트리 위치 r에서, 중간 기억 버퍼 2에 대한 식별자가 기억되어 있다. 그리하여, 중간 기억 버퍼 3으로부터 다른 실행 유니트로 실행 결과가 전달될 때, 그 전달은 기억 버퍼 인덱스부(58)의 엔트리 9을 이용함으로써 수행된다.
제5도는 본 발명의 방법 및 시스템을 구현하는데 이용될 수 있는 슈퍼스칼라 프로세서 시스템 내의 대체 가능한 기억 버퍼 인덱스부에 대한 회화 표현도이다. 기억 버퍼 인덱스부(58)는 0-r이 번호가 매겨진 복수개의 엔트리를 구비한다. N은 슈퍼스칼라 프로세서 시스템이 중간 기억 버퍼의 수와 같다. 명령어가 실행 유니트에 디스패치될 때, 선택된 범용 레지스터에 대한 식별자는 실행 결과가 기억될 지정된 중간 기억 버퍼에 대응하는 엔트리에 기억된다.
예를 들어, 중간 기억 버퍼 0에 대응하는 엔트리 위치 0에서, 범용 레지스터(25)에 대한 식별자가 기억되어 있다. 추가적으로, 중간 기억 버퍼 2에 대응하는 엔트리 위치 2에서, 범용 레지스터 2에 대한 식별자가 기억되어 있다. 그리하여, 중간 기억 버퍼 0으로부터 대체가능한 실행 유니트로 실행 결과가 전달될 때, 그 전달은 기억 버퍼 인덱스부(58)의 엔트리 0을 이용함으로써 수행된다.
상기 내용을 참조하면, 당업자는 출원인이 슈퍼스칼라 프로세서 시스템에서 중간 기억 버퍼의 할당을 인덱스하기 위한 방법 및 시스템을 제공하고 있다는 것을 알 수 있을 것이다. 애플리케이션에서 특정된 순서로 범용 레지스터에 그 결과가 기억될 때까지 실행 결과가 중간 기억 버퍼에 일시적으로 기억되기 때문에 대량의 연관 조사표의 필요성이 제거된다.
비록 본 발명이 바람직한 실시예와 관련하여 특정하게 도시되고 서술되었지만, 본 기술 분야의 숙련자는 본 발명의 정신과 범위를 벗어나지 않고 형태 및 세부 사항에 있어서 여러가지 변화가 있을 수도 있다는 것을 알 수 있을 것이다.

Claims (6)

  1. 복수개의 스칼라 명령어를 디스패치 버퍼(dispatch buffer)로부터 복수개의 실행 유니트(execution units)로 한 싸이클 동안에 동시에 디스패치할 수 있는 슈퍼스칼라 프로세서 시스템의 명령어 디스패치 효율 향상 방법에 있어서-상기 복수개의 스칼라 명령어 각각이 한 개 이상의 소오스 오퍼런드(source operand)와 한 개 이상의 오퍼런드(destination operand)를 포함하고, 상기 복수개의 스칼라 명령어의 실행 결과가 복수개의 범용 레지스터(general purpose registers)에 기억됨-, 1: 복수개의 중간 기억 버퍼(intermediate storage buffers) 중 특정한 버퍼를 상기 복수개의 스칼라 명령어 각각 내의 목적지 오퍼런드에 할당하는 단계, 2: 상기 복수개의 중간 기억 버퍼 각각과 상기 복수개의 범용 레지스터 중 지정된 레지스터간의 관계를 기억 버퍼 인덱스부(storage buffer index)에 기억시키는 단계, 3: 상기 복수개의 스칼라 명령어 각각의 실행 결과를 상기 복수개의 중간 기억 버퍼 중 할당된 버퍼에 일시적으로 기억시키는 단계, 4: 상기 실행 결과를 상기 복수개의 중간 기억 버퍼 중 특정한 버퍼로부터 상기 복수개의 범용 레지스터 중 지정된 레지스터로 전달하기 이전에, 상기 기억 버퍼 인덱스부를 이용하여 상기 복수개의 스칼라 명령어 중 다른(alternate) 명령어를 실행하는데 이용하기 위해 상기 복수개의 중간 기억 버퍼 중 특정한 버퍼로부터 상기 복수개의 실행 유니트 중 다른 실행 유니트로 상기 실행 결과를 전달하는 단계를 포함하는 슈퍼스칼라 프로세서 시스템의 명령어 디스패치 효율 향상 방법.
  2. 제1항에 있어서, 상기 복수개의 중간 기억 버퍼 각각과 상기 복수개의 범용 레지스터 중 지정된 레지스터간의 관계를 기억 버퍼 인덱스부에 기억시키는 상기 단계는 1: 상기 복수개의 중간 기억 버퍼 각각에 대한 식별자를 상기 기억 버퍼 인덱스부에 기억시키는 단계와, 2: 복수개의 범용 레지스터 각각에 대한 식별자를 이용하여 상기 기억 버퍼 인덱스부로부터 상기 복수개의 중간 기억 버퍼 각각에 대한 상기 식별자를 액세스(access) 하는 단계를 포함하는 슈퍼스칼라 프로세서 시스템의 명령어 디스패치 효율 향상 방법.
  3. 제1항에 있어서, 상기 복수개의 중간 기억 버퍼 각각과 상기 복수개의 범용 레지스터 중 지정된 레지스터간의 관계를 기억 버퍼 인덱스부에 기억시키는 상기 단계는 1: 상기 복수개의 범용 레지스터 중 상기 지정된 레지스터에 대한 식별자를 상기 기억 버퍼 인덱스부에 기억시키는 단계와, 2: 상기 복수개의 중간 기억 버퍼 각각에 대한 식별자를 이용하여 상기 기억 버퍼 인덱스부로부터 상기 복수개의 범용 레지스터 중 상기 지정된 레지스터에 대한 상기 식별자를 액세스하는 단계를 포함하는 슈퍼스칼라 프로세서 시스템의 명령어 디스패치 효율 향상 방법.
  4. 복수개의 스칼라 명령어를 디스패치 버퍼(despatch buffer)로부터 복수개의 실행 유니트(execution units)로 한 싸이클 동안에 동시에 디스패치할 수 있는 슈퍼스칼라 프로세서 시스템의 명령어 디스패치 효율 향상 시스템에 있어서-상기 복수개의 스칼라 명령어 각각이 한 개 이상의 소오스 오퍼런드(source poerand)와 한 개 이상의 목적지 오퍼런드(destination operand)를 포함하고, 상기 복수개의 스칼라 명령어의 실행 결과가 복수개의 범용 레지스터(general purpose registers)에 기억됨-, 1: 복수개의 중간 기억 버퍼(intermediate storage buffers) 중 특정한 버퍼를 상기 복수개의 스칼라 명령어 각각 내의 목적지 오퍼런드에 할당하기 위한 수단, 2: 상기 복수개의 중간 기억 버퍼 각각과 상기 복수개의 범용 레지스터 중 지정된 레지스터간의 관계를 기억 버퍼 인덱스부(storge buffer index)에 기억시키기 위한 수단, 3: 상기 복수개의 스칼라 명령어 각각의 실행 결과를 상기 복수개의 중간 기억 버퍼 중 할당된 버퍼에 일시적으로 기억시키기 위한 수단, 4: 상기 실행 결과를 상기 복수개의 중간 기억 버퍼 중 특정한 버퍼로부터 상기 복수개의 범용 레지스터 중 지정된 레지스터로 전달하기 이전에, 상기 기억 버퍼 인덱스부를 이용하여 상기 복수개의 스칼라 명령어 중 다른(alternate) 명령어를 실행하는 데 이용하기 위해 상기 복수개의 중간 기억 버퍼 중 특정한 버퍼로부터 상기 복수개의 실행 유니트 중 다른 실행 유니트로 상기 실행 결과를 전달하기 위한 수단을 포함하는 슈퍼스칼라 프로세서 시스템의 명령어 디스패치 효율 향상 시스템.
  5. 제4항에 있어서, 상기 복수개의 중간 기억 버퍼 각각과 상기 복수개의 범용 레지스터 중 지정된 레지스터간의 관계를 기억 버퍼 인덱스부에 기억시키기 위한 상기 수단은 1: 상기 복수개의 중간 기억 버퍼 각각에 대한 식별자를 상기 기억 버퍼 인덱스부에 기억시키기 위한 수단과, 2: 복수개의 범용 레지스터 각각에 대한 식별자를 이용하여 상기 기억 버퍼 인덱스부로부터 상기 복수개의 중간 기억 버퍼 각각에 대한 상기 식별자를 액세스(Access)하기 위한 수단을 포함하는 슈퍼스칼라 프로세서 시스템의 명령어 디스패치 효율 향상 시스템.
  6. 제4항에 있어서, 상기 복수개의 중간 기억 버퍼 각각과 상기 복수개의 범용 레지스터 중 지정된 레지스터간의 관계를 기억 버퍼 인덱스부에 기억시키기 위한 상기 수단은 1: 상기 복수개의 범용 레지스터 중 상기 지정된 레지스터에 대한 식별자를 상기 기억 버퍼 인덱스부에 기억시키기 위한 수단과, 2: 상기 복수개의 중간 기억 버퍼 각각에 대한 식별자를 이용하여 상기 기억 버퍼 인덱스부로부터 상기 복수개의 범용 레지스터 중 상기 지정된 레지스터에 대한 상기 식별자를 액세스하기 위한 수단을 포함하는 슈퍼스칼라 프로세서 시스템의 명령어 디스패치 효율 향상 시스템.
KR1019930028551A 1993-01-08 1993-12-20 슈퍼스칼라 프로세서 시스템에서 중간 기억 버퍼의 할당을 인덱스하기 위한 방법 및 시스템 KR0122528B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US187293A 1993-01-08 1993-01-08
US08/001,872 1993-01-08
US8/001,872 1993-01-08

Publications (2)

Publication Number Publication Date
KR940018757A KR940018757A (ko) 1994-08-18
KR0122528B1 true KR0122528B1 (ko) 1997-11-20

Family

ID=21698213

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019930028551A KR0122528B1 (ko) 1993-01-08 1993-12-20 슈퍼스칼라 프로세서 시스템에서 중간 기억 버퍼의 할당을 인덱스하기 위한 방법 및 시스템

Country Status (9)

Country Link
US (1) US5491829A (ko)
EP (1) EP0605868B1 (ko)
JP (1) JP2777535B2 (ko)
KR (1) KR0122528B1 (ko)
CN (1) CN1042863C (ko)
AT (1) ATE173100T1 (ko)
CA (1) CA2112995A1 (ko)
DE (1) DE69321929T2 (ko)
TW (1) TW230807B (ko)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW242673B (ko) * 1993-08-18 1995-03-11 Ibm
US6378062B1 (en) * 1994-01-04 2002-04-23 Intel Corporation Method and apparatus for performing a store operation
BR9509845A (pt) 1994-12-02 1997-12-30 Intel Corp Microprocessador com operação de compactação de elementos de operação compósitos
FR2731094B1 (fr) * 1995-02-23 1997-04-30 Dufal Frederic Procede et dispositif de commande simultanee des etats de controle des unites d'execution d'un processeur programmable
JP2636789B2 (ja) * 1995-03-31 1997-07-30 日本電気株式会社 マイクロプロセッサ
US5974240A (en) * 1995-06-07 1999-10-26 International Business Machines Corporation Method and system for buffering condition code data in a data processing system having out-of-order and speculative instruction execution
US5875294A (en) 1995-06-30 1999-02-23 International Business Machines Corporation Method and system for halting processor execution in response to an enumerated occurrence of a selected combination of internal states
US5949971A (en) * 1995-10-02 1999-09-07 International Business Machines Corporation Method and system for performance monitoring through identification of frequency and length of time of execution of serialization instructions in a processing system
US5764970A (en) * 1995-11-20 1998-06-09 International Business Machines Corporation Method and apparatus for supporting speculative branch and link/branch on count instructions
US5852726A (en) * 1995-12-19 1998-12-22 Intel Corporation Method and apparatus for executing two types of instructions that specify registers of a shared logical register file in a stack and a non-stack referenced manner
US6792523B1 (en) 1995-12-19 2004-09-14 Intel Corporation Processor with instructions that operate on different data types stored in the same single logical register file
US5940859A (en) 1995-12-19 1999-08-17 Intel Corporation Emptying packed data state during execution of packed data instructions
US5701508A (en) 1995-12-19 1997-12-23 Intel Corporation Executing different instructions that cause different data type operations to be performed on single logical register file
US5845149A (en) * 1996-04-10 1998-12-01 Allen Bradley Company, Llc Industrial controller with I/O mapping table for linking software addresses to physical network addresses
US6298435B1 (en) * 1996-04-16 2001-10-02 International Business Machines Corporation Methods and apparatus for exploiting virtual buffers to increase instruction parallelism in a pipelined processor
US5805907A (en) * 1996-10-04 1998-09-08 International Business Machines Corporation System and method for reducing power consumption in an electronic circuit
US5870616A (en) * 1996-10-04 1999-02-09 International Business Machines Corporation System and method for reducing power consumption in an electronic circuit
US5765017A (en) * 1997-01-13 1998-06-09 International Business Machines Corporation Method and system in a data processing system for efficient management of an indication of a status of each of multiple registers
US5974538A (en) * 1997-02-21 1999-10-26 Wilmot, Ii; Richard Byron Method and apparatus for annotating operands in a computer system with source instruction identifiers
US5875326A (en) * 1997-04-25 1999-02-23 International Business Machines Corporation Data processing system and method for completing out-of-order instructions
JP2001092657A (ja) * 1999-09-22 2001-04-06 Toshiba Corp 中央演算装置、コンパイル方法、及びコンパイルプログラムを記録した記録媒体
US7039060B2 (en) * 2001-03-07 2006-05-02 Mips Tech Inc System and method for extracting fields from packets having fields spread over more than one register
US6826704B1 (en) * 2001-03-08 2004-11-30 Advanced Micro Devices, Inc. Microprocessor employing a performance throttling mechanism for power management
US7330988B2 (en) * 2004-06-30 2008-02-12 Sun Microsystems, Inc. Method and apparatus for power throttling in a multi-thread processor

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS581246A (ja) * 1981-06-26 1983-01-06 Fujitsu Ltd 命令処理順序制御方式
JPS58178464A (ja) * 1982-04-14 1983-10-19 Hitachi Ltd 並列演算処理装置
US4594660A (en) * 1982-10-13 1986-06-10 Honeywell Information Systems Inc. Collector
US5067069A (en) * 1989-02-03 1991-11-19 Digital Equipment Corporation Control of multiple functional units with parallel operation in a microcoded execution unit
JP3153906B2 (ja) * 1989-02-24 2001-04-09 アドヴァンスド マイクロ デヴァイセス インコーポレイテッド コンピュータの分散型パイプライン制御装置及び方法
JP2825906B2 (ja) * 1990-02-01 1998-11-18 株式会社日立製作所 計算機システム
US5237694A (en) * 1991-05-30 1993-08-17 Advanced Micro Devices, Inc. Processing system and method including lock buffer for controlling exclusive critical problem accesses by each processor
US5345569A (en) * 1991-09-20 1994-09-06 Advanced Micro Devices, Inc. Apparatus and method for resolving dependencies among a plurality of instructions within a storage device
US5416913A (en) * 1992-07-27 1995-05-16 Intel Corporation Method and apparatus for dependency checking in a multi-pipelined microprocessor
US5367650A (en) * 1992-07-31 1994-11-22 Intel Corporation Method and apparauts for parallel exchange operation in a pipelined processor

Also Published As

Publication number Publication date
CN1042863C (zh) 1999-04-07
JPH06242955A (ja) 1994-09-02
JP2777535B2 (ja) 1998-07-16
KR940018757A (ko) 1994-08-18
DE69321929T2 (de) 1999-07-01
EP0605868B1 (en) 1998-11-04
ATE173100T1 (de) 1998-11-15
TW230807B (ko) 1994-09-21
EP0605868A1 (en) 1994-07-13
CN1092189A (zh) 1994-09-14
CA2112995A1 (en) 1994-07-09
DE69321929D1 (de) 1998-12-10
US5491829A (en) 1996-02-13

Similar Documents

Publication Publication Date Title
KR0122528B1 (ko) 슈퍼스칼라 프로세서 시스템에서 중간 기억 버퍼의 할당을 인덱스하기 위한 방법 및 시스템
KR0122529B1 (ko) 슈퍼스칼라 프로세서 시스템에서 복수의 명령어를 단일 사이클 동안 디스패치하기 위한 방법 및 장치
KR0124812B1 (ko) 독립적으로 액세스되는 중간 기억 장치를 이용하는 슈퍼스칼라 프로세서 시스템의 명령어 디스패치를 향상시키기 위한 시스템 및 그 방법
KR100234646B1 (ko) 다중 인스트럭션 실행 방법 및 수퍼스칼라 마이크로프로세서
EP0849665B1 (en) System and method for register renaming
JP2698033B2 (ja) 順不同の命令実行を可能にするコンピュータ・システム及びその操作方法
EP0638183B1 (en) A system and method for retiring instructions in a superscalar microprocessor
US3718912A (en) Instruction execution unit
WO1994016385A1 (en) System and method for assigning tags to instructions to control instruction execution
KR0122527B1 (ko) 슈퍼스칼라 프로세서 시스템에서 비순차적 명령어의 디스패치 및 실행을 위한 방법 및 시스템
US6108771A (en) Register renaming with a pool of physical registers
KR100431975B1 (ko) 분기에의한중단이없는파이프라인방식의마이크로프로세서를위한다중명령디스패치시스템
JP2742375B2 (ja) スーパースカラ・プロセッサにおける命令処理の選択的逐次化の方法およびシステム
US5765017A (en) Method and system in a data processing system for efficient management of an indication of a status of each of multiple registers
JP3045964B2 (ja) スーパスカラ・プロセッサのリネーム・バッファを効率よく使用する方法及び装置
AU627152B2 (en) Apparatus and method for using lockout for synchronization of access to main memory signal groups in a multiprocessor data processing system
US20020144091A1 (en) Method and apparatus for dynamic register management in a processor
EP0605873A1 (en) Method and system for tracking scalar instructions within a superscalar processor system
EP0495162A2 (en) Storage management

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

Year of fee payment: 6

LAPS Lapse due to unpaid annual fee