KR100864890B1 - 데이터 처리장치에서의 소스 레지스터 록킹 - Google Patents

데이터 처리장치에서의 소스 레지스터 록킹 Download PDF

Info

Publication number
KR100864890B1
KR100864890B1 KR1020037013759A KR20037013759A KR100864890B1 KR 100864890 B1 KR100864890 B1 KR 100864890B1 KR 1020037013759 A KR1020037013759 A KR 1020037013759A KR 20037013759 A KR20037013759 A KR 20037013759A KR 100864890 B1 KR100864890 B1 KR 100864890B1
Authority
KR
South Korea
Prior art keywords
instruction
register
pipeline
source
mode
Prior art date
Application number
KR1020037013759A
Other languages
English (en)
Other versions
KR20040005927A (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 KR20040005927A publication Critical patent/KR20040005927A/ko
Application granted granted Critical
Publication of KR100864890B1 publication Critical patent/KR100864890B1/ko

Links

Images

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/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/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)
  • Executing Machine-Instructions (AREA)

Abstract

본 발명은 데이터 처리장치에서의 소스 레지스터를 록킹하는 시스템 및 방법을 제공한다. 이 데이터 처리장치는, 명령으로 이루어진 시퀀스를 실행하는 파이프라인을 갖는 처리부와, 그 시퀀스의 명령을 실행할 경우 상기 처리부가 필요로 하는 소스 데이터를 저장하는 일련의 소스 레지스터들을 구비한다. 록킹장치는, 구성가능한 기준에 의거한 소스 레지스터를 로크하는데 사용되고, 이때의 구성가능한 기준은, 후속 명령에 의한 소정 형태의 액세스를 막기 위해 파이프라인에서의 명령의 실행을 완료하는데 필요로 하는 소스 레지스터를 확실히 록킹하도록 선택되고, 상기 후속 명령은 상기 명령이 필요로 할 때에 그 명령에 관련된 소스 레지스터를 액세스할 수 있는 경우만 그 파이프라인에 들어갈 수 있다. 본 발명에 따르면, 상기 처리부는 제 1 및 제 2 동작모드를 갖는다. 상기 제 1 동작모드에서, 상기 처리부는 명령을 실행하는 동안 1개 이상의 예외 조건을 결정시에 상기 파이프라인형 실행부에 외부 프로세스를 호출하여 그 명령의 실행이 완료 가능해지도록 구성된다. 반면에, 상기 제 2 동작모드에서, 상기 처리부는 상기 1개 이상의 예외 조건이 존재한다고 결정되어도 상기 파이프라인 내의 명령의 실행을 완료하도록 구성된다. 그래서, 록킹장치는 상기 처리부의 동작모드에 의존한 구성가능한 기준을 변경하여, 상기 제 2 동작모드에서 록킹되는 소스 레지스터의 수를 감소시킬 수 있도록 구성된다. 이에 따라서, 제 2 동작모드에서 실행할 경우 상기 처리부의 처리속도를 상당히 향상시킬 수 있다.
데이터 처리장치, 록킹장치, 소스 레지스터, 구성가능한 기준, 처리부

Description

데이터 처리장치에서의 소스 레지스터 록킹{LOCKING SOURCE REGISTERS IN A DATA PROCESSING APPARATUS}
본 발명은 데이터 처리장치에서의 소스 레지스터의 록킹(locking)에 관한 것이다.
명령을 실행하는 하나 또는 그 이상의 파이프라인을 포함하는 프로세서를 제공하는 것은 알려져 있다. 이와 같은 프로세서의 파이프라인 특징으로 인해, 다수의 명령은 임의의 시점에서 실행되고 있는 중이어도 되고, 이것은 적절한 해저드 및 자원 검사 기능을 상기 파이프라인형 프로세서에 제공할 필요성을 일으켰다. 따라서, 일반적으로, 각 명령을 평가한 후 그것을 실행 파이프라인에 내리고, 그 실행 파이프라인에 명령이 내려진 경우 해저드 조건 또는 자원 충돌이 일어나는지를 결정한다. (예를 들면, 파이프라인에서 이미 실행되는 명령에 의해) 여전히 계산되고 있는 그 명령 때문에 아직 사용 불가능한 데이터 항목을 상기 명령이 필요로 하는 경우, 또는 파이프라인에서 이미 또 다른 명령을 여전히 필요로 하고 파이프라인에서 이미 명령을 판독하고 나서야 오버라이트 해야 하는 레지스터로의 액세스를 필요로 하는 경우에, 해저드 조건이 검출될 것이다. 자원 충돌은, 이미 또 다른 실행 명령을 위해 사용되고 있는 명령으로 인해 사용 불가능한 처리장치를 필요로 할 경우 검출될 것이다.
해저드나 자원 검사를 하지 않는 것이 가능한 대신에, 그 해저드 조건과 자원 충돌을 회피하는 작업은 컴파일러/코드 라이터가 하는 것이 가능하다. 그러나, 이로 인해 일반적으로 매우 복잡한 코드가 됨에 따라서, 상기 해저드 및 자원 검사 과정을 실행하는 것은 일반적이다.
상기 해저드 및 자원 검사 기능은, 관련 프로세서와 모든 종속적인 프로세서를 일시 중지(stall)하는 능력을 필요로 한다. 예를 들면, 해저드 조건을 검출하는 코프로세서는, 그 해저드 조건을 검출한 신호를 메인 프로세서에 보내고, 이때 대부분의 경우, 상기 메인 프로세서는 그 코프로세서와 명령 흐름 정합을 유지하기 위해 일시 중지할 것이다. 마찬가지로, 해저드 조건이나 자원 충돌을 검출하는 메인 프로세서는, 그 검출에 따라 모든 코프로세서에게 알려 그들의 파이프라인을 일시 중지시킬 필요도 있다. 이러한 일시 중지(stalling)로 인해 일부분의 코드를 실행할 시간을 결정하는데 불확실하다는 것을 알 수 있을 것이다.
종래의 프로세서는 여러 가지 복잡한 방법을 사용하여 해저드 조건과 자원 충돌을 검출하고, 이렇게 검출된 해저드 조건과 자원 충돌의 성능에 영향을 주는 것을 감소시킨다. 레지스터 재명명은 이러한 기술의 하나로서 사용되기도 하는데, 이때의 이 기술은 추가 레지스터를 구비하여 명령을 위해 소스 레지스터가 이미 실행되었을 때 수반된 레지스터의 기록에 관련된 해저드 조건을 제거한다. 고성능 프로세서에서는, 명령을 프로그램 순으로 내려도 되어, 해저드나 자원 충돌이 없는 명령을 해저드나 자원 충돌을 갖는 명령보다 이전에 실행 가능하게 한다. 이러한 방법으로 사용된 전형적인 기술은, 일부 실행 상태에서 현재 명령의 테이블을 유지하여, 특정 명령에 대해 그 명령을 처리하는 기능부의 가용성과 그 명령이 필요로 하는 오퍼랜드의 가용성에 관해 결정하는 것이다. 이는, 예를 들면 대기 장소(reservation station)를 사용하는 분산방법이나, 예를 들면 재정렬(reorder) 버퍼 기술을 사용하는 중앙 집중 방법으로 달성하여도 된다.
상기 두 가지 기술은 산업계에서 잘 알려져 있다. 당업자가 알 수 있듯이, 영역 및 전력과 복잡성 면에서 이러한 기술의 비용은, 상당히 고가이다.
많은 비용과 상술한 기술의 복잡성을 피하는 또 다른 종래의 기술에서는 스코어보드의 사용을 포함한다. 스코어보드는, 소스 오퍼랜드 또는 저장 동작용 목적지로서 레지스터의 가용성을 추적한다. 이 스코어보드는, 하나는 소스 오퍼랜드 하나는 목적지 오퍼랜드의 개별적인 부분으로 분리되거나, 단일 스코어보드가 소스 및 목적지 오퍼랜드 모두를 위해 유지되어도 된다. 그래서, 상기 스코어보드내의 엔트리는, 그 엔트리와 관련된 레지스터가 후속 명령에 의한 용도로 사용 가능할 경우 클리어된다. 이에 따라서, 스코어보드에서 로크된 것처럼 나타낸 레지스터를 필요로 하는 실행 파이프라인에 내려지는 명령에 의해, 상기 레지스터가 사용 가능할 때까지 대기 또는 일시 중지된다. 스코어보드는, 일반적으로 영역, 전력 및 개발 비용면에서 상술한 기술보다 간단하고 값싸지만, 일반적으로 보다 낮은 성능을 제공한다.
따라서, 데이터 처리장치용 애플리케이션 영역은, 일반적으로 상기 방법 중 어느 하나를 사용하는 것을 요구한다. 데스크탑 컴퓨팅 또는 과학적이거나 사업적인 컴퓨팅과 같은 고성능 애플리케이션일 경우, 필요한 성능을 전달하기 위해 종종 더욱 복잡한 기술을 필요로 한다. CDC6600, IBM360/91, 최근의 IBM, Intel x86 및 Sun SPARC 프로세서와 같은 기계는, 이 더욱 복잡한 기술들을 이용한다. 그러나, 임베디드(embedded) 애플리케이션일 경우, 그 성능은 일반적으로 중요하지 않지만, 그 대신에 상기 프로세서의 칩 면적과 소비전력은, 상기 애플리케이션의 목표를 만족시키는데 충분한 상기 성능만을 요구하면서 보다 중요하다. 이러한 경우에, 프로그램 순서의 명령과 상술한 스코어보드 기술의 사용은, 일반적으로 해저드 조건을 체크하는 기술이 가장 적절하고, 제한된 수, 대표적으로는 1개 또는 2개의 파이프라인 이용은 자원 관리의 복잡성을 감소하는데 도움이 된다.
많은 애플리케이션에서는, 수행된 산술이 오퍼랜드의 범위와 결과값이 잘 알려지도록 하는 것을 특징으로 한다. 그러나, 이것이 불가능한 경우, 연산 결과값이 지원받는 데이터 형태의 범위의 경계 밖에 있는 조건을 일관되고 합리적인 방법으로 산술 처리할 수 있어야 하고, 또는 상기 연산은 결과값이 제한되지 않는(예를 들면, 음의 무한대에 양의 무한대의 가산) 오퍼랜드를 포함한다.
부동 소수점 산술의 예를 생각해보면, "IEEE Standard for Binary Floating-Point Arithmetic", ANSI/IEEE Std 754-1985, The Institute of Electrical and Electronic Engineers, Inc., New York, 10017(이후 IEEE 754 표준이라 함)은, 결과값이 지원받는 데이터 형태의 범위 밖에 있을 경우나, 그 연산의 결과값이 제한되지 않을 경우 명령의 작용을 상술한다. 그 IEEE 754사양을 완전히 실행하기 위해서는, 산술을 필요로 하는 모든 가능한 경우들을 커버하는 것에 의해 하드웨어/영역 및 전력소비의 추가, 및/또는 클록속도의 감소가 생긴다. 상기 IEEE 754 사양은, 숫자나 예외를 정의하고, 이러한 예외는, 무제한된 정밀도로 산술을 수행하거나 결과값을 제한하지 않으면, 그 결과값이 복귀되는 것이 아닌 경우이다. 5가지 형태의 예외, 즉, 무효, 오버플로우, 언더플로우, 나눗셈에서 0으로 나누지 못함(divide-by-zero) 및 부정확함이 IEEE 754사양에 정의되어 있다.
대부분의 임베디드 애플리케이션에서는, 산술이 잘 알려진 것처럼 특징이 있고, IEEE 754 사양의 전체 특징이 일반적으로 요구되는 것이 아니다. 예를 들면, 기준 이하의 지원과 NaN(Not-a-Number: 수가 아님) 처리 지원과 같은 특징은 불필요할 수도 있다. 그러나, 일반적으로 오버플로우 조건을 처리하는 능력과 무한대값을 포함하는 연산은 이점이 있다.
이러한 예외가 상기 파이프라인형 프로세서 내의 명령의 실행시 검출되면, 이 예외들을 제어하기 위해 예외 제어 메카니즘이 종종 호출된다. 이러한 메카니즘이 호출될 경우, 그 예외 제어 메카니즘은, 예외 명령의 소스 오퍼랜드에 그 예외를 처리하기 위해 액세스할 필요도 있다. 따라서, 해저드 조건을 피하기 위해 레지스터를 록킹할 경우, 상술한 스코어보드 기술을 사용하여, 예외가 검출될 실행 파이프라인에서의 지점을 명령이 통과할 때까지 상기와 같은 경우에 소스 레지스터를 로크(lock)하는데 필요한 경우 그 록킹이 행해진다.
GB-A-2,339,312에 상세하게 기재된 종래의 일 프로세서에서, 그 프로세서는 일부 예외적인 경우를 비관적으로 검출하여 처리하도록 구성되는데, 이것은, 명령이 완전히 처리되기 전에 사용 가능한 정보에 의거하여 예외 조건의 존재를 결정한다는 것을 의미한다. 가능한 모든 경우를 확실히 처리하기 위해서, 예외적인 조건이 일어나지 않는 일부의 경우는, 완전히 연산이 처리되어 최종 결정이 이루어질 때까지 그러한 비관적으로 검출하여 처리하는 것으로서 처리된다. 상기 GB-A-2,339,312에 기재된 프로세서에서는, 프로세서 파이프라인의 제 1 실행단계에서 검출을 하여 프로세서의 현재 상태를 최소한으로 지키는데 필요한 정보량을 최소화한다. 상기 명령을 완료하지 않고 예외를 검출하므로, 소스 오퍼랜드는, 예외 제어 메카니즘을 보존하는데 필요하여, 관련된 명령이 예외 검출 지점(여기서는, 파이프라인의 실행 1 단계)을 통과할 때까지 스코어보드에 언로크(unlock)될 수 없다. 그래서, 소프트웨어 루틴을 사용하여, 그 명령의 정확한 배치를 결정하고, IEEE 754 예외 경우에 대한 특수 제어를 포함하는 정확한 응답을 발생하고, 프로그램으로 복귀하거나 사용자 정의 예외 제어기(handler)를 실행한다.
이에 따라서, 요약하면, 예외 제어에 사용된 소프트웨어 루틴은, 명령의 소스 레지스터에 액세스하는데 필요하다. 또한, 소프트웨어 루틴은, 예외적인 명령 후에 일부 사이클 수까지 실행하지 않는다. 따라서, 예외적인 명령의 소스 레지스터를 액세스하는데 필요한 명령은, 예외적인 명령의 실행과 소프트웨어 루틴의 실행 사이에서 내려져 상기 식별된 예외 조건을 처리한다.
그래서, 소스 레지스터들을 오퍼랜드로서 판독하여, 메모리에 저장하거나 새로운 값으로 로드하기 위해서, 실행하고 있는 명령의 소스 레지스터를 액세스하는데 필요한 어떠한 명령도, 상기 실행된 명령이 예외 결정 지점을 통과할 때까지 일반적으로 대기해야 하고, 그래서 소스 레지스터는 스코어보드에 언로크된다(예외가 검출되지 않거나, 상기 관련 소프트웨어 루틴이 필요한 예외 처리를 수행한 후이기 때문임).
따라서, 해당 명령에서의 예외 조건의 존재에 관해 결정하면서 레지스터를 로크하는데 필요한 사항은, 후속 명령들이 상기와 같이 로크된 레지스터에 액세스하는데 필요할 경우, 후속 명령들을 일시 중지시킴으로써 파이프라인 처리 회로의 효율에 상당히 영향을 줄 수 있다.
(발명의 요약)
본 발명의 제 1 국면에 따른 데이터 처리장치는, 명령의 시퀀스를 실행하는 파이프라인을 구비한 처리부와, 상기 처리부가 상기 시퀀스내의 명령을 실행할 때 필요로 하는 소스 데이터를 저장하는 일련의 소스 레지스터와, 구성가능한 기준에 의존하여 상기 소스 레지스터를 록킹하는 록킹 장치로서, 상기 구성가능한 기준은 상기 소스 레지스터가 상기 파이프라인내의 명령의 실행을 완료하기 위해 더 필요로 하는 후속 명령에 의한 소정 형태의 액세스를 방지하기 위해 록킹되도록 선택되고, 상기 후속 명령이 상기 명령에 관련된 상기 소스 레지스터가 상기 명령의 요구에 의해 액세스될 수 있는 경우에만 상기 파이프라인에 들어갈 수 있는 록킹 장치를 구비하는 데이터 처리장치에 있어서, 상기 처리부는 제 1 및 제 2 동작모드를 갖고, 상기 제 1 동작모드에서, 상기 처리부는 명령의 실행 중 1개 이상의 예외 조건이 결정되었을 때에 상기 파이프라인형 실행부에 외부 프로세스를 호출하여 상기 명령의 실행을 완료할 수 있도록 구성되고, 상기 제 2 동작모드에서, 상기 처리부는 상기 1개 이상의 예외 조건이 존재한다고 결정되어도 상기 파이프라인 내의 명령의 실행을 완료하도록 구성되며, 상기 록킹장치는 상기 처리부의 동작모드에 의존하여 상기 구성가능한 기준을 변경하여, 상기 제 2 동작모드에서 록킹되는 소스 레지스터의 수를 감소시킬 수 있도록 구성된다.
본 발명에 의하면, 상기 처리부는 두 개의 동작모드를 갖고, 상기 제 1 동작모드는 1개 이상의 예외 조건의 결정시에 상기 파이프라인형 실행부에 외부 프로세스를 호출하여 상기 명령의 실행이 완료 가능하게 하고, 제 2 동작모드에서는 1개 이상의 예외 조건이 존재하여도 상기 처리부가 파이프라인 내의 명령의 실행을 완료하도록 구성된다. 록킹장치는, 구성가능한 기준에 의존한 소스 레지스터를 로크하는데 사용되고, 이 록킹장치는 제 2 동작모드에서 로크되는 소스 레지스터의 수를 감소시킬 수 있도록 상기 처리부의 동작모드에 의존한 구성가능한 기준을 변경하도록 구성된다.
상기 파이프라인형 실행부에 외부 프로세스가 예외 조건을 검출한 명령의 소스 레지스터에 액세스할 필요가 있을 것 같기 때문에, 제 1 동작모드에서는 그 명령에 대해 예외 조건이 존재하지 않은 것을 결정할 때까지 또는 예외 조건들 중 하나의 검출 후의 상기 파이프라인형 실행부에 외부 프로세스에 의해 소스 레지스터들을 판독할 때까지 상기 록킹장치에 의해 소스 레지스터들을 로크해야 하는 것은 분명하다. 또한, 제 2 동작모드에서, 상기 처리부는 상기 파이프라인형 실행부에 외부 임의의 프로세스를 호출하여 그 예외 조건들 중 임의의 조건을 처리할 필요가 없도록 구성됨에 따라서, 1개 이상의 예외 조건이 존재하는 것을 검출한 후까지 소스 레지스터를 로크할 필요가 없다.
본 발명의 발명자는, 소스 레지스터의 값이 오버라이트되는 것을 막기 위한 2가지 기본 요구사항이 있다는 것을 실현하였다. 첫 번째, 아직 레지스터가 판독되지 않은 명령이 소스 레지스터에 있는 데이터를 필요로 하는 경우 상기 요구사항을 해야 한다. 두 번째로, 아직 실행되지 않은 루틴, 예를 들면 예외 조건을 제어하는데 사용된 외부 프로세스가 소스 레지스터에 있는 데이터를 필요로 하는 경우 상기 요구사항을 해야 한다. 많은 경우에 있어서, 상기 첫 번째 요구사항은 상기 두 번째 요구사항보다 상당히 덜 번거로웠다는 것이 관찰되었다. 소스 레지스터는, 만일 예외 조건이 검출될 경우 소스 레지스터들이 그들을 지정하는 명령에 의해 아직 판독되지 않은 동안에 소스 레지스터를 보호하는데 불필요한 후속 명령을 일시 중지시키는 외부 프로세스에 의한 용도로 유지하기 위해 로크되었다.
본 발명은, 파이프라인형 실행부에 외부 프로세스들을 호출하여 1개 이상의 예외 조건을 처리할 필요성을 제거하는 제 2 동작모드를 제공하고, 상기와 같은 단지 외부 프로세스에 사용 가능하도록 소스 레지스터를 더 이상 로크하지 않게 상기 구성가능한 기준을 상기 록킹장치가 변경 가능하게 함으로써, 상기와 같은 문제점을 크게 해소한다.
바람직한 실시예에서는, 상기 데이터 처리장치가, 상기 시퀀스의 명령의 실행으로부터 생기는 목적지 데이터를 저장하는 일련의 목적지 레지스터를 더 구비하고, 또한 상기 록킹장치가 소정 기준에 의존한 목적지 레지스터를 로크하도록 구성된다.
명령이 목적지 레지스터를 지정할 경우, 그 명령의 실행에 의해 발생된 결과가 목적지 레지스터로 라이트백(writeback)될 때까지 상기 목적지 레지스터가 확실히 로크되고, 목적지 레지스터에 상기 결과를 저장할 때까지 목적지 레지스터가 확실히 판독되지 않거나 기록되는 것이 매우 중요하다. 이러한 요구사항은, 제 1 및 제 2 동작모드 모두에서 명백히 필요하고, 이에 따라서 바람직한 실시예에서는 목적지 레지스터의 록킹을 결정하는데 사용된 소정 기준이, 상기 제 1 및 제 2 동작모드에서와 같다.
바람직한 실시예에서는, 록킹장치가, 상기 로크된 레지스터의 레코드(record)와, 상기 로크된 레지스터의 레코드를 참조하여 후속 명령이 파이프라인에 들어갈 수 있는지의 여부를 결정하는 체크 로직과, 상기 후속 명령에 대해 상기 명령을 갖는 임의의 소스 레지스터가 상기 레코드에 로크되는지의 여부를 결정하고 상기 구성가능한 기준에 응답하는 결정 로직을 구비한다.
따라서, 상기 체크 로직은, 후속 명령에 의해 지정된 소스 레지스터와 선택적인 목적지 레지스터가 이미 상기 로크된 레지스터의 레코드 내에 로크된 것으로서 나타내어졌는지의 여부를 결정하고, 일반적으로 상기 후속 명령은, 임의의 소스 및 목적지 레지스터가 이미 로크된 것처럼 나타내어져 있으면 상기 파이프라인에 들어가지 못하게 된다. 상기 결정 로직은, 상기 후속 명령에 의해 지정된 임의의 소스 레지스터 및 선택적인 목적지 레지스터가 상기 레코드 내에 로크되는지의 여부를 결정하고, 상기 결정 로직이 구성가능한 기준에 응답하므로, 이 결정 로직은, 일반적으로 제 2 동작모드에서 상기 처리부가 동작하고 있을 때 소스 레지스터의 록킹을 덜 필요로 할 것이다.
여러 가지 방법으로 구성가능한 기준을 지정하여도 된다는 것을 알 수 있을 것이다. 그러나, 바람직한 실시예에서, 상기 구성가능한 기준은, 제 1 동작모드에서, 상기 파이프라인에 의해 명령을 실행할 경우, 파이프라인에서의 명령에 의해 소스 레지스터가 판독되기 전에 소스 레지스터들을 오버라이트하는 동안이나 또는 상기 파이프라인에 외부 프로세스에 의해 소스 레지스터를 필요로 하는 동안에, 그 명령이 필요로 하는 소스 레지스터를 상기 록킹장치가 로크하도록 구성되는 반면에, 상기 구성가능한 기준은, 제 2 동작모드에서, 파이프라인에서의 명령에 의해 소스 레지스터가 판독되기 전에 소스 레지스터들을 오버라이트하는 동안만 그 명령이 필요로 하는 소스 레지스터를 상기 록킹장치가 로크하도록 구성된다.
따라서, 제 2 동작모드에서는, 판독 후 기록(write-after-read) 해저드 조건의 가능성을 막도록 소스 레지스터를 로크한다. 따라서, 원하는 상태는, 소스 레지스터로의 기록이 그 소스 레지스터의 판독이 일어난 후 일어나야만 하는("판독 후 기록") 것이고, 그 상태가 되지 않을 경우 판독 후 기록 해저드는 일어난다. 따라서, 제 2 동작모드에서는, 임의의 기간 동안에, 소스 레지스터를 지정하는 명령이 소스 레지스터를 판독하기 전에 그 소스 레지스터를 오버라이트하는 것이 가능할 경우 소스 레지스터를 로크한다. 또한, 제 1 동작모드에서는, 상기와 같은 판독 후 기록 해저드를 막도록 소스 레지스터를 로크하지만, 상기 파이프라인에 외부 프로세스가 소스 레지스터를 더 필요로 하는 동안 추가로 로크한다.
상기 요구사항에 관하여, 본 발명의 바람직한 실시예의 제 2 동작모드에서, 상기 구성가능한 기준은, 상기 록킹장치가 스칼라 명령 또는 소정 값 이하의 반복의 수를 갖는 벡터 명령을 위해 임의의 소스 레지스터를 로크하지 않도록 구성된다. 본 발명의 바람직한 실시예에 따른 구현에 있어서, 본 발명은 스칼라 명령 또는 상대적으로 짧은 벡터 명령(즉, 벡터 명령은 소정 값 이하 또는 소정 값과 같은 반복의 수를 가짐)을 갖는 소스 레지스터와 관계하여 판독 후 기록 해저드가 일어날 가능성이 없게 실현되었다.
바람직한 실시예에서, 상기 소정 값은, 1 사이클 처리율을 갖는 단일 정밀도 벡터 명령 또는 2배 정밀도 벡터 명령에 대해서는 4이고, 2 사이클 처리율을 갖는 2배 정밀도 벡터 명령에 대해서는 2이다.
간단히 말하면, 본 발명의 바람직한 실시예에서의 상기 구성가능한 기준은, 제 2 동작모드에서, 상기 록킹장치가 임의의 2배 정밀도 벡터 명령을 2 사이클 처리율을 갖는 것으로서 처리하도록 한 것이다.
1개 이상의 예외 검출시에 제 1 동작모드에서 호출된 파이프라인에 외부 프로세스는, 다양한 형태를 가져도 된다. 그러나, 상기 파이프라인에 외부 프로세스는, 지원 코드 또는 사용자 인에이블형 예외 제어 루틴인 것이 바람직하다.
이때의 지원 코드는, 본 발명의 바람직한 실시예에서 3개의 기본 기능을 수행한다. 제 1 기능은, 이 지원 코드를 사용하여 하드웨어가 지원하지 않은 명령과 데이터 형태를 처리할 수 있다. 예를 들면, 바람직한 실시예예에서는, 상기 처리부의 아키텍처 사양에 나머지 명령을 제공하지는 않지만, IEEE 754 표준에서는 필요로 한다. 마찬가지로, 상기 처리부의 아키텍처 사양에 10진 데이터 형태도 포함하지 않지만 IEEE 754 표준에서는 필요로 한다. 바람직한 실시예에서는, 상기 처리부가 상기 애플리케이션 코드에 사용 가능한 라이브러리 기능을 실행하므로 상기 두 경우에 필요한 처리를 한다.
상기 바람직한 실시예의 지원코드에 의해 수행된 제 2 기능은, 예를 들어 잠재적인 언더플로우 조건 또는 비정상적인 오퍼랜드와 같은 특정 데이터가 주어지면 하드웨어가 그 명령을 완전히 처리할 수 없는 특정 데이터를 갖는 명령을 처리하는데 있다. 또한, 이러한 경우들 중 일부는 예외가 되기도 하고, 나머지는 비예외적인 결과가 되기도 한다. 상기 명령이 예외가 되고, 사용자 인에이블형 예외 제어 루틴이 그 명령에 대해 인에이블된다면, 상기 지원코드는 아래에 지원 코드가 갖는 제 3 기본 기능으로서 설명된 일부의 전처리를 수행한다. 그 명령이 예외 조건을 발생하지 않거나, 그 발생된 모든 예외 조건이 해당 예외 인에이블 비트 세트를 갖지 않으면, 상기 지원코드는, 상기 계산된 결과를 상기 명령의 목적지 레지스터에 기록하고서 상기 처리부에 의해 실행되는 애플리케이션 코드로 복귀하도록 구성된다.
바람직한 실시예의 지원 코드의 제 3 기본 기능은, 상기 예외 인에이블 비트를 세트하는 예외를 전처리하는데 있다. 그래서, 상기 지원코드는, 바운스(bounce)된 명령에 대한 제 1 엔트리 지점이다. 명령을 바운스하여 상기 지원코드의 제 2 기본 기능이 수행될 수 있게 하는데, 그 이유는 유효 예외가 검출되고 이 예외에 대한 예외 인에이블 비트가 설정되어 있기 때문이다. 상기 데이터가 사용자 인에이블형 예외 제어 루틴을 위해 전제조건을 필요로 하면, 상기 지원 코드는 이 전제조건을 처리할 것이다. 사용자 인에이블형 예외 제어 루틴은, 이 루틴이 상기 애플리케이션 코드로 복귀하도록 선택되면 상기 지원코드에 의해 처리할 것이다.
상기 지원코드의 3가지 기능은, 바람직한 실시예의 제 1 동작모드에 관련된다. 제 2 동작모드에서는, 명령의 실행을 1개 이상의 예외 조건의 존재가 결정되어도 상기 파이프라인 내에서 완료 가능하게 함으로서 상기 지원코드를 사용할 필요가 없다.
상기 처리부의 제 1 및 제 2 동작모드는, 구현에 의존한 다양한 방법으로 구성된다는 것이 분명하다. 그러나, 바람직한 실시예에서, 상기 제 1 동작모드는, IEEE 754에 따르는 동작모드이고, 제 2 동작모드는 소프트웨어 루틴이 상기 1개 이상의 예외 조건을 제어할 필요가 없는 IEEE 754에 따르지 않는 동작모드이다. 바람직한 실시예에서는, 상기 처리부의 제 1 동작모드가, 상기 지원코드의 제공에 의해 IEEE 754 호환을 하는데, 이때 상기 지원코드가, 상기 처리부의 하드웨어가 특정 오퍼랜드를 갖는 명령을 처리할 수 없는 경우에 호출된다. 제 2 동작모드에서는, 일부 애플리케이션에서 불필요한 IEEE 754 표준을 갖는 일부 특징은 IEEE 754 사양에 따라 처리되지 않지만, 대신에 비호환방법으로 처리되어 상기 파이프라인형 실행부에 외부 프로세스를 사용할 필요가 없어진다.
당업자는, 소스 레지스터와 목적지 레지스터의 레코드를 유지할 경우, 록킹 장치를 여러 가지 방법으로 구성한다는 것을 알 수 있을 것이다.
간단히 말하면, 바람직한 실시예에서는, 록킹장치가 소스 레지스터와 목적지 레지스터에 대한 단일 레코드를 유지함에 따라, 2가지 형태의 레지스터 사이에 구별을 짓지 않는다. 그러나, 다른 실시예에서 록킹장치는, 상기 로크된 목적지 레지스터를 기록하는 제 1 레코드와 상기 로크된 소스 레지스터를 기록하는 제 2 레코드를 구비한다.
이와 같은 다른 방법은, 다소 복잡성을 증가시키지만, 그 레지스터가 목적지 레지스터 또는 소스 레지스터인지에 따라, 로크된 레지스터에 방해가 되는 소정 형태의 액세스의 변동을 가능하게 한다. 보다 구체적으로는, 이와 같은 다른 구현에 의하면, 후속 명령이 제 1 레코드에서 로크된 것처럼 나타낸 목적지 레지스터에 임의의 형태로 액세스할 필요가 있으면, 그 후속 명령은, 상기 제 1 레코드로부터 로크가 해제될 때까지 파이프라인에 들어가는 것이 일시 중지되는 반면에, 그 후속 명령이 제 2 레코드에 로크된 한 개 이상의 소스 레지스터에 관한 판독 액세스를 할 필요만 있으면, 그 후속 명령은 관련 로크가 제 2 레코드로부터 해제되기를 기다릴 필요없이 파이프라인에 들어가는 것이 허용되는 것이다. 목적지 레지스터로서 특정 레지스터를 지정하지 않으면, 이미 파이프라인에서 그 레지스터에 저장된 데이터를 임의의 명령으로 변경하지 않을 것이 분명하다. 따라서, 후속 명령이 상기와 같은 레지스터를 안전하게 판독하고, 레지스터를 판독하는 행위가 상기 레지스터에 저장된 값을 변경하지 않으므로, 파이프라인에서의 명령이 이미 로크된 경우라도 소스 레지스터를 기꺼이 판독할 수 있다.
상기 처리부가, 한 개 이상의 예외 조건이 존재하여도 파이프라인 내의 명령의 실행을 완료하도록 구성되는 여러 가지 방식이 있다는 것을, 당업자는 알 것이다. 바람직한 실시예에서의 제 2 동작모드에서, 상기 처리부는, 플러쉬-투-제로(flush-to-zero) 모드를 사용하여, 비정상 범위에 있는 임의의 소스 데이터 또는 결과 데이터를 포지티브 제로로 대체한다. 이러한 동작모드는, 복잡성과, 또한 만족스럽게 이해된 알고리즘에 아무런 또는 매우 적은 산술적 영향으로 비정상적인 데이터 값을 처리하는데 필요한 하드웨어를 제거한다는 것이 확인되었다.
또한, 바람직한 실시예의 제 2 동작모드에서, 상기 처리부는, 디폴트 NaN(수가 아님) 모드를 사용하여, 임의의 소스 데이터가 NaN인 경우 디폴트 NaN을 결과 데이터로서 생성하도록 구성된다. 이와 같은 방법은, IEEE 754 사양에 따라 NaN을 처리하지만, 공동 실행과 일관되지 않는다. 그럼에도 불구하고, 이와 같은 방법은, 부정 산술연산의 표시로서 NaN에 대한 핸들링을 더 제공한다.
더욱이, 바람직한 실시예의 제 2 동작모드에서, 상기 처리부는, 처리부의 하드웨어 내에서, 임의의 오버플로우 예외, 부정확한 예외, 나눗셈에서 0으로 나누지 못하는 예외 또는 무효 예외 조건을 처리하도록 구성된다. 보다 구체적으로는, 바람직한 실시예에서는, 하드웨어에서 오버플로우, 부정확 및 나눗셈에서 0으로 나누지 못하는 예외에 대해 풀 디폴트 처리를 제공한다. 이러한 방법은, IEEE 754 컴플라이언스에 가깝게 제공하고, 포화로 인한 오버플로우 및 특별 처리 상황에 대한 무한대를 사용하는 대부분의 임베디드 애플리케이션에 적합하다는 것이 확인되었다.
본 발명의 제 2 국면에 따른 데이터 처리장치의 동작방법은, 명령의 시퀀스를 실행하는 파이프라인을 포함한 처리부와, 상기 시퀀스내의 명령을 실행할 경우 상기 처리부가 요구하는 소스 데이터를 저장하는 소스 레지스터로 이루어진 세트를 갖고, (i) 구성 가능한 기준에 의존하여 소스 레지스터를 록크하는 록킹장치를 이용하는 단계로서, 상기 파이프라인내의 명령의 실행을 완료하기 위해 더 필요하게 되는 소스 레지스터가, 후속 명령에 의한 소정 형태의 액세스를 방지하기 위해 로크되고, 상기 후속 명령이, 상기 명령에 관련된 상기 소스 레지스터가 상기 명령에 의해 요구되도록 액세스할 수 있는 경우에만 상기 파이프라인에 들어가는 것을 보장하도록 상기 구성 가능한 기준이 선택되는 상기 록킹 장치를 이용하는 단계와, (ii) 상기 처리부에 있어서의 제 1 동작모드 또는 제 2 동작모드를 선택하는 단계로서, 상기 제 1 동작모드에 대해서는, 상기 파이프라인형 처리부는, 명령의 실행중에 1개 이상의 예외 조건이 결정되었을 때, 상기 파이프라인형 실행부의 외부 프로세스를 호출하여, 상기 명령의 실행을 완료할 수 있도록 구성되고, 상기 제 2 동작모드에 대해서는, 상기 파이프라인형 처리부는, 비록 상기 1개 이상의 예외 조건이 결정되어도, 상기 파이프라인내의 명령의 실행을 완료하도록 구성된 선택하는 단계와, (iii) 상기 록킹장치가 상기 처리부의 동작모드에 의존하여 상기 구성가능한 기준을 변경하여, 상기 제 2 동작모드에서 로크되어 있는 소스 레지스터의 수를 감소시키는 단계를 포함한다.
또한, 본 발명을 아래의 첨부도면에 설명된 것과 같은 바람직한 실시예를 참 조하여 일례들로만 설명하겠다:
도 1은 본 발명의 바람직한 실시예에 따른 데이터 처리장치의 소자를 나타낸 블록도,
도 2a는 본 발명의 바람직한 실시예에 따른 도 1의 코프로세서의 소자를 나타낸 블록도,
도 2b는 본 발명의 바람직한 실시예에 따른 코프로세서의 제어 로직 내에 설치된 소자들을 상세하게 나타낸 블록도,
도 3은 본 발명의 바람직한 실시예에 따른 스코어보드 로직의 동작을 나타낸 개략도,
도 4는 본 발명의 바람직한 실시예에 따른 프로세서 코어 및 코프로세서 내의 파이프라인의 기본 흐름을 나타낸 블록도,
도 5a 및 도 5b는 제 2 명령이 목적지로서 상기 제 1 명령의 소스 레지스터를 갖는 경우, 제 1 및 제 2 동작모드에서, 각각 백투백(back-to-back) 산술연산의 실행 시퀀스를 나타낸 도면,
도 6a 및 도 6b는 제 1 및 제 2 동작모드에서, 각각 산술 명령 후 로드 명령의 실행 시퀀스를 나타내고, 그 모드에서 로드 명령이 한 개 이상의 산술 명령을 갖는 소스 레지스터에 기록되어 있는 것을 나타낸 도면,
도 7a 내지 도 7c는 벡터 명령 후 로드 명령의 실행 시퀀스를 나타낸 것으로, 도 7a는 제 1 동작모드를 나타내고, 도 7b 및 도 7c는 제 2 동작모드를 나타낸 도면.
도 8a 및 도 8b는 단일 정밀도 벡터 명령과 2배 정밀도 벡터 명령의 실행 시퀀스를 각각 나타낸 것으로, 이 두 가지 경우에 상기 벡터 명령 후 로드 명령을 수행하고, 소스 레지스터의 록킹을 필요로 하는 조건을 나타낸 도면,
도 9a 내지 도 9f는 소스 레지스터가 제 1 및 제 2 동작모드에서 단일 정밀도 명령과 2배 정밀도 명령일 경우 어떻게 로크되어 클리어되는지를 나타낸 테이블이다.
도 1은 메인 프로세서(24), 부동 소수점 연산(FPU) 코프로세서(26), 캐시 메모리(28), 메인 메모리(30) 및 입/출력 시스템(32)을 구비한 데이터 처리 시스템(22)을 나타낸다. 상기 메인 프로세서(24), 캐시 메모리(28), 메인 메모리(30) 및 입/출력 시스템(32)은, 메인 버스(34)를 통해 연결된다. 코프로세서 버스(36)는, 메인 프로세서(24)를 상기 부동 소수점 연산 코프로세서(26)에 연결시킨다.
동작상, 메인 프로세서(24)(ARM 코어라고도 칭함)는, 캐시 메모리(28), 메인 메모리(30) 및 입/출력 시스템(32)과의 상호작용을 포함하는 일반적인 형태를 갖는 데이터 처리 동작을 제어하는 데이터 처리 명령으로 이루어진 스트림을 실행한다. 상기 데이터 처리 명령으로 이루어진 스트림 내에 코프로세서 명령들이 삽입되어 있다. 상기 메인 프로세서(24)는, 이들 코프로세서 명령을 부설된 코프로세서에 의해 실행되는 형태를 갖는 것으로서 인지한다. 따라서, 메인 프로세서(24)는, 임의의 부설된 코프로세서들에 의해 수신된 곳으로부터 그 코프로세서 버스(36) 상의 이들 코프로세서 명령들을 내린다. 이 경우에, FPU 코프로세서(26)는, 검출하려고 하는 임의의 수신된 코프로세서 명령을 받아들여 실행할 것이다. 이러한 검출은, 코프로세서 번호 필드를 거쳐 코프로세서 명령 내에 있다.
도 2a는 본 발명의 바람직한 실시예에 따른 코프로세서(26) 내에 설치된 소자들을 더욱 상세히 나타낸 블록도이다. 이 코프로세서(26)는, 산술연산을 수행하는 산술 파이프라인부(230)를 구비한다. 레지스터 파일(220)은, 상기 산술 파이프라인부(230)가 실행한 명령용 소스 레지스터 또는 목적지 레지스터로서 지정될 수 있는 다수의 레지스터로 이루어지게 설치된다. 또한, 로드/저장 파이프라인부(210)는, 로드 및/또는 저장 명령을 실행하여 상기 로드 데이터 버스(212) 상에서 수신된 데이터 값들을 상기 레지스터 파일(220)에 로드하거나, 또는 그 레지스터 파일(220)로부터 예를 들면 캐시(28) 또는 메모리(30)와 같은 데이터 처리 시스템 내의 어떤 다른 곳에 저장하기 위한 데이터 값들을 상기 저장 데이터 버스(214) 상에 출력하도록 설치된다. 바람직한 실시예에서는, 레지스터 파일(220)을 거치지 않고 상기 로드/저장 파이프라인부(210)로부터 산술 파이프라인부(230)로 직접 데이터 값들을 전달하기 위해 전방향 경로(216)도 설치한다.
바람직한 실시예에서는, 제어로직(200)에 의해 로드/저장 파이프라인부(210), 레지스터 파일(220) 및 산술 파이프라인부(230) 모두를 제어하고, 이때의 제어로직(200)이, 명령(명령어) 버스(218) 상에 상기 코어(24)로부터 명령을 수신하여, 그 명령들을 해당되는 상기 로드/저장 파이프라인부(210) 또는 산술 파이프라인부(230)에 내리도록 구성된다. 또한, 상기 제어로직(200)은, 로드 명령 실행시에 상기 로드/저장 파이프라인부(210)로부터 수신된 데이터 값들을 어느 레지스터에 넣는지를 레지스터 파일(220)에 나타내고, 저장 명령이 실행되고 있을 경우, 로드/저장 파이프라인부(210)에 출력되는 콘텐트를 갖는 레지스터를 식별한다. 후에 상세히 설명하는 것처럼, 제어로직(200)은, 바운스 및 일시 중지 신호를 필요에 따라 필요로 할 경우 코어(24)에 내리도록 구성되고, 코어(24)로부터 수신된 코어 일시 중지신호에 바로 응답하여 코프로세서(26)의 실행을 일시 중지시킨다.
도 2b에는 바람직한 실시예의 제어로직(200)이 더욱 상세히 도시되어 있다. 이 제어로직(200)은, 코어(24)로부터 신호들을 수신하고 이 코어에 신호들을 내리는 코프로세서 인터페이스(275)를 구비한다. 이러한 코프로세서 인터페이스(275)가 새로운 명령을 수신하면, 명령(명령어) 레지스터(250)로 보낸다. 이로부터, 그 명령은 명령(명령어) 디코더부(260)와 스코어보드 로직(255)에 제공된다. 상기 명령 디코더(260)는, 명령을 디코드하여, 그것을 파이프라인(210, 230)과 인터페이싱하는 파이프라인 제어부(265)로 보내어 그 명령들을 실행한다.
바람직한 실시예의 스코어보드 로직(255)을 도 3을 참조하여 더욱 상세히 설명하겠지만, 기본적으로는 그 명령이 지정한 임의의 레지스터가 이미 스코어보드에 로크되어 있는지의 여부를 상기 수신된 명령에 의거하여 결정하도록 구성되고, 설사 그 임의의 레지스터가 스코어보드에 로크되어 있다고 하여도, 그 레지스터들은 일단 파이프라인에 그 명령이 내려지면 상기 스코어보드에 로크되어 후속 명령이 확실히 사용되지 않게 된다. 상기 명령이 지정한 임의의 레지스터가 스코어보드에 이미 로크되어 있다고 결정되면, 스코어보드 로직(255)은 일시 중지신호를 일시 중지 로직(270)에 내려지도록 구성된다. 이 일시 중지 로직(270)은, 예를 들면 자원 일시 중지신호와 같은 임의의 다른 일시 중지 조건신호들에 따라 상기 일시 중지신호를 수신하여, 그 로직의 입력단에 상기와 같은 임의의 일시 중지신호를 수신하면 최종 일시 중지신호를 발생할 것이다. 바람직한 실시예에서, 이 최종 일시 중지신호는, 코프로세서 인터페이스(275)를 거쳐 프로세서 코어에 출력되어, 그 코프로세서 기능을 해왔던 프로세서 코어에게 상기 명령을 일시 중지시키도록 알린다. 일단 그 명령이 마지막으로 상기 실행 파이프라인에 들어가면(즉, 임의의 로크된 레지스터가 클리어되는 것에 의해 그 명령이 일시 중지되는 것을 수반하면), 스코어보드 로직(255) 내의 스코어보드는 갱신되어 그 명령에 의해 사용하기 위해 로크되는데 필요한 임의의 레지스터를 로크한다.
도 3은 본 발명의 바람직한 실시예의 스코어보드 로직(255)의 상세 블록도이다. 바람직한 실시예에서는, 코프로세서 파이프라인의 이슈(issue) 단계시에 스코어보드 로직을 사용하고, 이때의 코프로세서 파이프라인의 여러 가지 단계에 대해서는 도 4를 참조하여 나중에 상세히 설명하겠다. 코어로부터 코프로세서로 명령이 보내지면, 이 명령이 코프로세서 명령 버스(218) 상에서 코프로세서 페치단계에서 수신되어 레지스터(300) 내에 놓인다. 이때의 코프로세서는, 상기 이슈단계에서 그 명령을 평가하도록 구성되고, 그 명령에 관한 후속 처리에 따른 이와 같은 처리는 도 4를 참조하여 나중에 상세히 설명하겠다. 그러나, 레지스터(300) 내에 저장된 것과 같은 명령은, 특히 스코어보드 처리의 이슈를 처리하면서 경로(305)를 거쳐 로직소자(320, 330)에 전송된다. 상기 로직(330)은, 스코어보드(310)에 있는 로크된 레지스터에 대해 체크할 필요가 있는 레지스터를 결정하도록 구성되어 실행을 파이프라인 내에 명령을 내릴 수 있는지의 여부를 결정한다. 일례로서, 그 명령이 FADDS S0, S1, S2(여기서, S1 및 S2는 소스 레지스터, S0은 목적지 레지스터임)이면, 상기 로직(330)은 레지스터 0, 1 및 2가 체크되어야 되는 것을 결정한다.
바람직한 실시예에서, 도 2a에 도시된 레지스터 파일(220)은, 32개의 레지스터를 구비하고, 상기 로직(330)은 "체크 값" 또는 간단히 CV라고 불리고 각 비트가 사용되어 상기 레지스터가 스코어보드에서 로크되어 있는지의 여부를 결정하도록 해당 레지스터를 체크해야되는지를 식별하는 32-비트 값을 출력하도록 구성된다. 레지스터 S0, S1, S2가 지정된 상기 예로 주어지면, 레지스터 0, 1, 2만을 체크할 필요가 있는 것을 나타내기 위해, CV 중 3개의 최하위 비트는 세트되고, 그 나머지 비트는 세트되지 않는다.
상기 로직 330에 의해 발생된 32-비트 CV는, 경로 335를 거쳐 일시 중지 로직 340에 출력되고, 이 로직 340은 상기 스코어보드(310)로부터 경로 315를 거쳐 그 스코어보드(310)내에 로크된 레지스터들을 식별하는 동일한 32-비트 값을 수신하도록 구성된다. 로직(340)에 의해 이들 2개의 값의 비교결과가 임의의 체크될 레지스터가 스코어보드에 로크된 것을 나타내면, 상기 로직(340)은 경로 345를 거쳐 일시 중지신호를 발생하고서, 상술한 것처럼 최종 신호를 코프로세서 인터페이스(275)에 발생할 때 사용하기 위한 일시 중지 로직(270)에 출력된다. 상기 일시 중지신호가 어서트(assert)되면, 현재의 명령은 파이프라인의 디코드 단계로 진행할 수 없고, 그 일시 중지신호가 디어서트(deassert)되면 디코드 단계로만 진행한다.
상기 로직(320)은, 만약 있다면, 상기 명령이 파이프라인의 디코드 단계로 진행하면 스코어보드(310) 내에 로크된 레지스터들을 상기 레지스터(300)에 저장된 명령으로부터 결정하도록 구성된다. 이 로직(320)은 구성가능한 기준을 사용하여, 만약 있다면, 어느 레지스터가 로크되어 있는지를 결정하고, 이러한 구성가능한 기준은 상기 처리부의 동작모드에 따라 변화된다. 바람직한 실시예에서, 상기 처리부는, 2개의 동작모드를 갖는데, 제 1 동작모드에서 상기 처리부는 한 개 이상의 예외 조건들의 검출시에, 파이프라인형 실행부에 외부 프로세스를 호출하여 그 명령의 실행을 완료시킬 수 있도록 구성되는 반면, 제 2 동작모드에서 상기 처리부는, 그 한 개 이상의 예외 조건들이 존재한다고 결정되어도 파이프라인 내의 그와 같은 명령의 실행을 완료하도록 구성된다.
이 두 개의 동작모드에 적용된 상기 기준은, 나중에 상세히 설명하겠다. 그러나, 당분간, 이때, 제 1 동작모드에서 소스 레지스터 또는 레지스터들 및 목적지 레지스터 또는 레지스터들 모두는 스코어보드에 로크되어야 하는 반면에, 제 2 동작모드에서 소스 레지스터 또는 레지스터들은, 스칼라 명령에 대해 또는, 소스 레지스터(들)를 오버라이트한 후 그들을 명령에 의해 확실히 판독할 수 없을만큼 충분히 짧은 임의의 벡터 명령에 대해 로크되어 있지 않다. 바람직한 실시예에서, 이것은, 4번 이하로 반복을 하는 단일 정밀도 벡터 명령에 대해 또는 2번 이상이 아닌 반복을 하는 2배 정밀도 벡터 명령(모든 2배 정밀도 명령은 바람직한 실시예에서 2개의 사이클 처리율을 갖는다고 한다)에 대해 소스 레지스터가 로크되어 있지않은 것과 같다.
따라서, 목적지 레지스터로서 S0, 소스 레지스터로서 S1 및 S2를 지정하는 가산 명령의 상기 예를 참조하여, 제 1 동작모드에서, 레지스터 0, 1 및 2는 스코어보드(310)에서 로크하는 상기 로직(320)에 의해 모두 식별될 것이다. 또한, 이러한 제 1 동작모드를 여기서는 논-런 패스트(non-RunFast) 동작모드라고 칭한다. 그러나, (여기서 런 패스트 동작모드라고 칭하는) 제 2 동작모드에서, 목적지 레지스터 S0만은 스코어보드(310)에서 로크하는 상기 로직(320)에 의해 식별된다. 상기 로직 330과 마찬가지로, 바람직한 실시예에서, 상기 로직 320은, 상기 명령이 디코드 단계롤 진행하면 스코어보드(310)에 가산되는 레지스터들을 식별하는 스코어보드 값, 또는 간략히 SV라고 불리는 32-비트 값을 출력하도록 구성되고, 이러한 32-비트 SV는 경로 325를 거쳐 레지스터(350)에 출력된다. 그 명령이 디코드 단계로 들어가면, 그 레지스터(350)의 콘텐츠는 경로 355를 거쳐 스코어보드(310)에 가산하기 위해 출력된다.
상술한 FADDS 명령 후에 그 명령 FADDS S5, S1, S6이 오면, 상기 논-런 패스트 모드 또는 런 패스트 모드에서 상기 처리부가 동작하고 있는지의 여부에 따라 동작상 다음의 차이가 생긴다. 논-런 패스트 모드에서, 상기 로직(320)에 의해 출력된 SV신호는, 비트 1, 5, 6을 세트시키는 반면, 데이터 처리부가 런 패스트 모드에서 동작하고 있으면, 비트 5만이 목적지 레지스터 S5를 지정하도록 세트될 것이다. 어느 동작모드가 사용되는 것에 상관없이, 상기 로직(330)에 의해 경로 335를 거쳐 출력된 상기 CV신호는, 비트 1, 5, 6을 세트시킬 것이다. FADDS S0, S1, S2 명령의 연산 결과로서 스코어보드(310)에 로크된 레지스터는, 동작모드가 논-런 패스트 또는 런 패스트 모드인지에 따라 서로 다르고, 그에 따라서 상기 경로 315를 거쳐 상기 일시 중지 로직(340)이 수신한 스코어보드 신호는, 동작모드에 따라 서로 다를 것이다. 보다 구체적으로는, 논-런 패스트 모드에서는 레지스터 S1을 스코어보드(310)에 로크시킬 것이고, 그에 따라서 상기 로직(340)은 명령 FADDS S5, S1, S6의 이슈 단계 동안 일시 중지를 발생할 것이다. 그러나, 데이터 처리부가 런 패스트 모드에서 동작하고 있는 경우, 목적지 레지스터 S0만이 명령 FADDS S0, S1, S2를 실행한 결과로서 스코어보드(310)에 가산될 것이므로, 레지스터 S5, S1 또는 S6 중 어느 것도 임의의 다른 명령으로 인해 스코어보드(310)에 로크되어 있지 않다고 가정하면, 상기 일시 중지 로직(340)에 의해 일시 중지를 발생하지 않을 것이고, 그 대신에 상기 명령 FADDS S5, S1, S6은 디코드 단계로 직접 진행할 수 있으므로써, 명령을 처리하는데 필요한 시간을 줄일 수 있다.
도 4는 본 발명의 바람직한 실시예에서 프로세서 코어 파이프라인과, 코프로세서의 2개의 파이프라인 사이의 상호작용을 나타낸다. 이때, 주목해야 하는 것은, 2개의 코프로세서 파이프라인에 대해서만 필요한 것이 아니라는 것이고, 다른 실시예에서는 그 이상의 파이프라인을 추가하여 서로 다른 명령 세트를 제어하거나 명령의 세트들간의 중첩을 제공할 수 있다는 것이다.
코프로세서(26)는, 코어 파이프라인 뒤에 1개의 단계를 연산하는 7단계 파이프라인을 갖는다. 코어 페치단계(400)로부터 코프로세서 명령 버스(402)를 거쳐 코프로세서 페치단계(405)로 명령을 전송한다. 이러한 코프로세서는, 이슈단계(415)에서 그 명령을 평가한다. 코프로세서(26)가 논-런 패스트 동작모드에서 예외적인 명령을 처리하였지만 그 사실에 관해 상기 코어(24)에 신호를 아직 보내지 않은 경우, 이슈단계(415)에서 경로 419를 거쳐 상기 코어에 바운스 신호를 어서트한다. 그리고, 코어는, 예외적인 명령의 예외 처리를 시작하고 예외처리로부터 복귀시에 바운스를 일으킨 명령을 재시행할 것이다.
상기 코어 페치단계(400)에서는, 명령 버퍼로부터 명령을 판독하고, 그것이 코프로세서 명령이면, 그 명령을 코프로세서 명령 버스(402) 상에서 코프로세서 페치 사이클(405)에 맞추어서 구동시킨다.
상기 코어 이슈단계(410)에서는, 코어가 코프로세서 명령에 대해 동작하지 않는다. 코어 디코드 단계(420)에서는, 코어 관련 일시 중지조건일 경우 코프로세서에 대해 코어 프로세스를 일시 중지시킨다. 예를 들면, 코어가 이전 코어 명령에 관한 일시 중지 조건을 검출하면, 코어는 코프로세서에게 그에 따라 일시 중시할 것을 명령할 필요도 있다. 코어 디코드 사이클(420)로부터 코어가 내린 상기와 같은 신호는, 관련 코프로세서 파이프라인의 디코드 단계, 이슈단계 및 페치단계로 보내질 것이다. 간략함을 기하기 위해서, 이와 같은 신호는 도 4에 도시되어 있지 않다.
코어 실행 단계(430)에서는, 코어가 경로 419, 417을 각각 거쳐 코프로세서로부터 바운스 신호와 일시 중지신호를 수신하고, 만약 그 바운스 신호가 유효 코프로세서 명령에 대해 어서트되면, 예외처리를 개시한다.
코어 메모리 사이클(440)에서는, 코어가 코프로세서 저장 데이터 버스(427)의 코프로세서 저장 데이터를 갖는 로드/저장 파이프라인(490)의 디코드 단계(425)로부터 수신한다. 코어 라이트백 단계(450)에서는, 코어가 로드 데이터를 코프로세서 로드 데이터 버스(452)상의 코프로세서의 로드/저장 파이프라인(490)의 라이트백 단계(455)로 보낸다.
코프로세서 페치단계(405)에서는, 코프로세서가 코프로세서 명령 버스(402) 상의 명령을 수신하여 명령의 디코딩을 시작한다.
코프로세서 이슈단계(415)에서는, 코프로세서가 명령과 스코어보드의 현재 상태를 평가하여, 그 명령이 이슈될 수 있는지를 결정한다. 상기 스코어보드는 레지스터가 사용 불가능한 것을 나타내는 경우, 또는 파이프라인이 비지(busy) 상태이고 현재의 명령이 디코드 단계로 진행할 수 없는 경우, 상기 CP 일시 중지신호는 경로 417을 거쳐 어서트되고 그 명령이 진행되거나 또는 코어에 의해 취소될 때까지 보유된다.
상기 논-런 패스트 동작모드에서, 이전 명령이 산술 파이프라인(495)의 코프로세서 실행 1 단계(465)를 완료하고 예외적이라고 결정되었다면, 코프로세서는 "예외 상태"에 있다고 한다. 결정한 경우 일시 중지되거나 결정 후 코프로세서에 내려진 제어 레지스터를 액세스하지 않는 코프로세서 명령은, "트리거"명령이고 경로 419를 거쳐 상기 이슈단계(415)로부터 CP 바운스 신호가 어서트되게 할 것이다. 이와 같은 바운스 신호가 일단 어서트되면, 코어는 예외 처리를 개시하고 그 예외 처리 후 처리를 재개하는 경우 상기 트리거 명령을 재시행 한다.
일시 중지가 존재하지 않고 코프로세서가 예외 상태에 있지 않은 경우, 스코어보드는 록킹을 필요로 하는 목적지 레지스터(들) 및 임의의 소스 레지스터(들)에 의해 갱신되고, 그 명령은 코프로세서의 관련 파이프라인(490, 495)의 코프로세서 디코드단계로 진행한다.
코프로세서 디코드단계에서는, 코프로세서가 오퍼랜드를 갖는 산술 명령을 파이프라인 또는 그 명령을 처리하는 기능부에 보낸다. 이 명령이 로드 또는 저장 명령이면, 로드/저장 파이프라인(490)에 보낸다. 그 동작이 코프로세서로부터 코어로 데이터를 저장하는 것이면, 코프로세서는 디코드 단계(425)에서 그 저장 데이터를 레지스터 파일로부터 판독하여 그 데이터로 CP 저장 데이터 버스(427)를 구동하는데, 이때 코어의 메모리 단계(440)에서 그 저장 데이터를 수신한다. 그 명령이 로드 동작이면, 코프로세서의 디코드 단계(425)는, 로드/저장 파이프라인(490)의 실행단계(435) 및 메모리 단계(445)를 통해 그 명령을 보낸다.
코프로세서 메모리 단계(445)에서는, 코프로세서가 로드 동작을 라이트백 단계(455)로 보낸다. 코프로세서 라이트백 단계(455)에서는, 경로 452를 거쳐 코어의 라이트백 단계(450)로부터 수신된 로드 데이터를 코프로세서 레지스터 파일에 기록한다.
이제 코프로세서의 산술 파이프라인(495)을 살펴보면, 코프로세서 실행 1 단계(465)에서, 산술 명령은, 상기 명령이 예외일 가능성이 있는지를 결정하기 위해서, 부호, 멱지수 및 분수의 제로 여부를 평가함으로써 처리를 개시한다. 그 명령이 예외일 경우라면, 코프로세서는 런 패스트 모드에 있지 않고, 이러한 예외 검출신호는 경로 467을 거쳐 코프로세서 이슈단계(415)로 보내진다. 그러나, 예외가 검출되지 않은 경우, 그 명령은 상기 실행 2 단계로 보내진다. 이 코프로세서 실행 2 단계와 실행 3 단계에서는, 그 명령을 더 처리한다. 그리고, 코프로세서 실행 4 단계는, 상기 명령을 완료하고, 임의의 조건 코드 또는 예외 상태 비트를 세트하며, 그 결과를 레지스터 파일에 기록하거나 그 결과를 또 다른 기능부로 전송한다.
예외가 결정되지 않을 때 상기 스코어보드로부터 상기 논-런 패스트 모드에서 로크된 레지스터를 클리어될 수 있도록, 소스 레지스터 클리어 버스(469)는 더 이상 로크할 필요가 없는 레지스터에 대한 정보를 상기 E1 단계(465)로부터 다시 이슈단계(415)로 보내질 수 있게 구성된다.
이하, 본 발명의 바람직한 실시예의 각 종 파이프라인들간의 상호작용을 설명한 논-런 패스트 동작모드와 런 패스트 모드를 비교하는 실행 흐름의 예들을 도 5a 내지 도 8b를 참조하여 설명하겠다.
도 5a 및 도 5b는 제 2 명령이 목적지로서 제 1 명령의 소스 레지스터를 갖는 백투백 산술 연산의 실행을 나타낸 것으로, 도 5a는 논-런 패스트 모드에서 해저드일 경우를 나타낸다.
도 5a에서, 부동 소수점 코프로세서 데이터 처리(Floating-point Coprocessor Data Processing: FCDP) 명령 FCDP1은, 사이클 1에서 코프로세서에 내려지고, 소스 레지스터로서 S1 및 S2를, 목적지 레지스터로서 S0을 필요로 한다. 사이클 2에서는, 코프로세서가 레지스터 S0, S1 및 S2를 로크하고, 코어가 FCDP2를 코프로세서에 내린다. FCDP2는 소스 레지스터로서 S3 및 S4를, 목적지 레지스터로서 S1을 필요로 한다. 사이클 3에서는, 이슈단계에서의 FCDP2에 대해 스코어보드를 체크하고 S1에 로크가 발견된다. 이에 따라서, FCDP2는 S1에서 로크가 해제될 때까지 이슈단계에서 일시 중지한다.
상기 로크는, S1을 유지하여, FCDP1이 예외적이고 상기 예외를 처리하기 위한 소프트웨어 루틴을 필요로 하는 경우에 콘텐츠를 오버라이트되지 않게 해야 한다. 사이클 4에서는 FCDP1에 예외 체크를 한다(즉, 실행 1 단계). 이러한 예에서는, FCDP1이 예외적이지 않고, 사이클 4의 끝에서 로크는, S1 및 S2에 대해 스코어보드에서 해제되고 상기 예외 검출신호가 어서트되지 않는다. 다음 사이클, 사이클 5에서는, FCDP2에 의해 디코드 단계로 들어가게 되고, 코프로세서는 S1, S3 및 S4를 로크하여 FCDP2에 의한 사용을 위해 그들을 보호한다. 여기서 알 수 있는 것은, 한 개의 사이클의 일시 중지는, S1이 오버라이트되지 않게 보장하는 것을 요구한다는 것이다.
예외적이지 않은 FCDP1일 경우에, FCDP2는, 디코드단계로 바로 진행할 수 있었다. FCDP1이 S1을 판독한 후 FCDP2는 레지스터를 FCDP2의 결과로 오버라이트할 수 있었기 때문에, 그에 따라 해저드 조건은 존재하지 않았을 것이다. 그래서, 예외 결정이 일어날 때까지 소스 레지스터를 로크할 필요성은, 실제로 예외가 존재하지 않는 경우에는 처리속도에 악영향을 미친다.
도 5b는 소스 레지스터를 재이용 하기 위한 런 패스트 모드에서 해저드 경우를 나타낸다. 도 5b에서는, 런 패스트 모드에서의 해저드 경우를 제외하고는 도 5a의 상황을 반복한다. 오버라이팅에 대해 소프트웨어로 사용하기 위해 소스 레지스터는 더 이상 보호되지 않아야 하고, S1 및 S2는 FCDP1의 이슈단계에서 로크되지 않는다. FCDP2는, FCDP2의 이슈단계에서 레지스터 해저드를 검출하면 일시 중지하고, 1 사이클의 일시 중지가 FCDP2를 처리하는 시간으로부터 제거된다.
도 6a 및 도 6b는 산술 명령 후에 제 1 명령을 갖는 한 개 이상의 소스 레지스터에 로드를 기록하는 로드 명령의 실행을 나타내고, 도 6a는 이전 소스 레지스터의 로드를 위한 논-런 패스트 모드에서의 해저드 경우를 나타낸다.
도 6a에서, FCDP 명령의 뒤에 오는 로드는, 새로운 데이터를 S1에 기록할 것이다. S1의 현재 데이터는, FCDP 명령이 예외일 경우 FCDP 명령과 소프트웨어 루틴에서 사용하기 위해 보호되어야 한다. 이러한 FCDP 명령에 의해 스코어보드 로크가 사이클 2의 FCDP 이슈단계에서 S0, S1 및 S2에 관해 세트된다. 그 로드 명령은, 1 사이클 동안 상기 로크가 FCDP 명령의 실행 1 사이클 후 클리어될 때까지 일시 중지될 것이다. 그리고, 이 로드 명령에 의해, 사이클 8의 라이트백 단계 시작부분에서 새로운 데이터를 S1에 기록할 것이다.
도 6b는 이전 소스 레지스터의 로드용 런 패스트 모드에서의 해저드 경우를 나타낸다. 도 6b에서는, FCDP 명령을 위해 소스 레지스터를 로크하지 않고, 그 로드 명령은 사이클 3의 이슈단계에서는 일시 중지하지 않고, 사이클 4의 디코드단계에서 진행한다. 이 디코드단계에서 FCDP 명령에 의해 그 데이터를 판독한 후, 로드 명령에 의해 사이클 7, 4에서 그 데이터를 S1에 기록한다.
도 7a 내지 도 7c는 길이 4의 단일 정밀도 벡터 명령 실행 후 로드 명령을 실행하는 흐름을 나타낸다. 도 7a에서는 벡터 명령 후에 논-런 패스트 모드에서 소스 레지스터 로드가 수행된다.
도 7a에서, 명령 FCDP는 4번 반복하는 벡터 연산이다. 이때의 4번 반복은 연속적인 형태로 사이클 당 1번 다음과 같이 내려진다:
FCDP S8, S16, S24
FCDP S9, S17, S25
FCDP S10, S18, S26
FCDP S11, S19, S27
FLDMS 명령(단일 정밀도를 의미하는 최종 S를 갖는 배수를 로드)는, 64-비트 버스를 거쳐 단일 사이클에서 S24 및 S25를 로드하고 다음 사이클에서는 S26 및 S27을 로드할 것이다. 논-런 패스트 모드에서 실행하는 FCDP 명령은, 사이클 2의 이슈단계에서 아래의 레지스터들을 로크한다:
S8 - S11
S16 - S19
S24 - S27
FCDP 명령은, 사이클 4(제 1 반복의 실행 1 단계)에서 S16 및 S24, 사이클 5(제 2 반복의 실행 1 단계)에서 S17 및 S25, 사이클 6(제 3 반복의 실행 1 단계)에서 S18 및 S26 및 사이클 7(마지막 반복의 실행 1 단계)에서 S19 및 S27에 대한 스코어보드를 클리어할 것이다. FLDMS 명령은, 전체 4개의 일시 중지 사이클로 주어지는 사이클 7에서 일어나는 스코어보드에서 S24-S27이 클리어될 때까지 일시 중지될 것이다.
도 7b는 동일한 벡터 명령 후 모든 레지스터의 동일한 소스 레지스터 로드를 나타내지만, 이때는 런 패스트 모드이다. 도 7b에서, FCDP 명령에 대한 이슈단계에서는, 목적지 레지스터만을 로크한다(S8-S11). 따라서, 이 FLDMS 명령은, 일시 중지하지 않고 진행하게 되고, 사이클 7에서 제 1의 2개의 레지스터(S24 및 S25)와 사이클 8에서 제 2의 2개의 레지스터(S26 및 S27)에 로드한다. FCDP 명령은, 사이클 3의 디코드 단계에서 S24, 사이클 4의 S25, 사이클 5의 S26 및 사이클 6의 S27을 판독할 것이다. 이에 따라서, FLDMS 명령이 인스톨되지 않았다는 사실에도 불구하고 해저드가 일어나지 않는다.
도 7c는 동일한 벡터 명령 후 런 패스트 모드에서 최종 레지스터의 소스 레지스터 로드를 하는 것을 나타낸다. 따라서, 도 7c에서는, 로드 명령을, 최종 소스 레지스터, S27의 단일 값 로드로 대체한다. 주목할 것은, 새로운 로드 데이터를 사이클 7에서 기록하고, 이때의 사이클은 (S27을 판독하는) 반복 4의 디코드 사이클 보다 나중의 1사이클이므로, 비록 FLDS 명령이 일시 중지되지 않았더라도 해저드는 다시 일어나지 않는다는 것이다.
도 8a 및 도 8b는, 런 패스트 동작모드를 사용하는 경우도 단일 정밀도(SP) 명령 및 2배 정밀도(DP) 명령을 위하여 록킹 소스 레지스터를 필요로 하는 조건을 설명하도록 구성된다.
소스 레지스터를 런 패스트 모드에서 로크하는데 필요한 2가지 경우는:
·4번 보다 큰 반복의 길이를 갖는 단일 정밀도 벡터 명령(또는 단일 사이클 처리율을 갖는 2배 정밀도 벡터 명령)과,
·이 명령이 2번 보다 큰 반복의 길이를 가질 경우, 곱을 포함하는(즉, 2 사이클 처리율을 갖는) 2배 정밀도 벡터 명령이 있다.
바람직한 실시예에서는, 곱을 포함하지 않는(즉, 단일 사이클 처리율을 갖는) 임의의 2배 정밀도 벡터 명령을 로크하는 것이 불필요한데, 그 이유는 바람직한 실시예에서 이와 같은 벡터 명령이, 어쨌든 4번 반복의 최대 길이만을 가질 수 있기 때문이다. 그러나, 일 실시예에서는, 모든 2배 정밀도 벡터 명령이 2 사이클 처리율을 갖는 것으로서 처리되어, 소스 레지스터는 2번 보다 큰 반복의 길이를 갖는 2배 정밀도 벡터 명령이 관찰될 때마다 로크된다. 이러한 동작은 처리를 단순화하기 위해 한다.
도 8a는 로드 명령이 뒤에 오는 길이 7을 갖는 단일 정밀도 벡터 명령을 나타낸다. 이 벡터 명령은, 다시 연속적인 형태로 아래의 연산을 수행한다:
반복 연산
1 FCDP S8, S16, S24
2 FCDP S9, S17, S25
3 FCDP S10, S18, S26
4 FCDP S11, S19, S27
5 FCDP S12, S20, S28
6 FCDP S13, S21, S29
7 FCDP S14, S22, S30
도 8a에서, 길이 7을 갖는 단일 정밀도 벡터 명령은, 제 7 반복을 위해 소스 오퍼랜드 레지스터로서 S30을 필요로 한다. 다음의 S30의 로드는, S30에 대한 로크가 클리어될 때까지 일시 중지되는 것이 요구된다. 런 패스트 모드에서는, 단일 정밀도 연산을 위한 제 4 반복 후와 2배 정밀도 연산을 위한 제 2 반복(바람직한 실시예에서, 모든 2배 정밀도 연산은 곱을 포함하는 것에 상관없이 2사이클 처리율을 갖는 것으로서 처리됨)후 반복적으로 사용된 소스 레지스터에 대해 로크를 세트한다.
도 8a는 단일 정밀도 벡터 명령을 나타내고, 이러한 경우에 로크는, 현재 반복보다 큰 번호로 매겨진 반복 4에 대해 실행 1 사이클에서 클리어된다. 이것은 아래의 표로 나타낸다(여기서, '0'은 로크가 클리어된 것을 나타내고, '1'은 로크가 세트된 것을 나타냄):
[표 1]
Figure 112003039157822-pct00001
상기 표에 나타낸 것처럼, 제 5, 제 6 및 제 7 반복에서 필요로 하는 소스 레지스터만을 로크한다. 따라서, 사이클 2에서는 레지스터 S20, S21, S22, S28, S29 및 S30에 대해 로크를 세트한다. S20 및 S28에 대한 로크는 사이클 4에서 클리어되고(소스 반복 1의 실행 1 단계), S21 및 S29에 대한 로크는 사이클 5에서 클리어되고(반복 2의 실행 1 단계), S22 및 S30에 대한 로크는 사이클 6에서 클리어된다(반복 3의 실행 1 단계). 그러므로, FLDS 명령은, 사이클 6에서 S30에 대해 스코어보드가 클리어될 때까지 3사이클 동안 일시 중지된다. 그래서, FLDS 명령은, 사이클 7에서 디코드 단계로 진행하도록 허용해주고, 사이클 10에서 레지스터 파일에 기록한다. 사이클 9에서 FCDP 명령의 제 7 반복은 S30을 판독하고, 제 7 반복을 위한 소스 데이터를 파손시키지 않는다.
도 8b는 곱을 포함하고, 3번을 반복하는 2배 정밀도 벡터 명령을 나타낸다.
이 벡터 명령은, 연속적인 형태로 다시 아래의 연산을 수행한다:
반복 연산
1 FCDP D4, D8, D12
2 FCDP D5, D9, D13
3 FCDP D6, D10, D14
도 8b에서, 2배 정밀도 벡터는, 곱을 포함하고, 2사이클마다 1개의 연산을 하는 처리율을 갖는다. 그래서 실행 1 단계는, 2사이클에 걸쳐 완료된다. 아래의 표는, 소스 레지스터 록킹을 나타낸다:
[표 2]
Figure 112003039157822-pct00002
위 표에 나타낸 것처럼, 제 3 반복을 위해 필요한 소스 레지스터만이 로크된다. 따라서, 로크는 사이클 2에서 D10 및 D12에 관해 세트되고, 사이클 4에서 클리어된다(곱을 포함하는 연산에 대한 2배 정밀도 로크는, 실행 1단계에서 현재의 반복보다 큰 번호로 매겨진 반복 2에 대해 클리어된다). FLDD 명령(여기서, 최종 D는 2배 정밀도를 의미함)은, 사이클 5에서 디코드 단계로 진행하도록 허용해주고, 사이클 8에서 D14에 기록한다. 제 2 디코드 단계에서 상기 2배정밀도 연산은, 소스 데이터를 판독함에 따라, D14는 사이클 7에서 판독되어, 제 3 반복을 위한 소스 데이터를 파손시키지 않는다.
이하, 논-런 패스트 모드 또는 런 패스트 모드에서 레지스터를 어떻게 로크하고 클리어하는지를 예를 들어 설명하되, 특정 동작모드에서 로크되고 클리어된 레지스터들의 더욱 특정적인 상세 내용을 제공하는 도 9a 내지 도 9f를 참조하여 설명하겠다.
도 9a는 논-런 패스트 동작모드에서 단일 정밀도 소스 레지스터 록킹 및 클리어를 나타낸다. 바람직한 실시예에서는, 단일 정밀도 벡터 명령에 대한 최대 수가 8이고, 논-런 패스트 모드에서는 전체 반복을 위한 소스 레지스터가, 파이프라인의 이슈단계에서 로크된다. 이것을 도 9a의 좌측의 문자 "X"를 사용하여 나타낸다. 그래서, 도 9a의 상부를 따라서 그 행은, 반복 수에 의해 그 반복에 포함된 소스 레지스터를 구분한다. 이를테면, 반복의 수가 5이면, 반복 1 내지 5와 관련된 레지스터는 로크될 것이고, 반복 5로서 구분된 행과 반복 1 내지 5로서 구분된 도 9a의 좌측의 열은 "X"로 나타낸다.
도 7a 내지 도 7c를 참조하여 상술한 것처럼, 특정 반복을 위한 소스 레지스터는, 파이프라인의 실행 1 단계에서 클리어된다. 따라서, 제 1 반복용 소스 레지스터는 사이클 4에서 클리어되고, 제 2 반복용 소스 레지스터는 사이클 5 등에서 클리어되고, 이것은 도 9a의 우측에 도시되어 있다.
도 9b는 도 9a와 같은 포맷을 갖는 표이지만, 런 패스트 모드에서의 단일 정밀도 소스 레지스터 록킹 및 클리어를 나타낸다. 상술한 것처럼, 벡터 명령이 4번 이하의 반복일 경우, 소스 레지스터는 로크될 필요가 없다. 이것은 도 9b의 좌측으로부터 알 수 있고, 이때 소스 레지스터는, 반복 수가 5이상이면 로크되기 시작할 뿐이다. 상기와 마찬가지로, 상기 표의 우측은, 특정 반복을 위한 소스 레지스터가 클리어되는 사이클을 나타낸다. 따라서, 7번 반복을 하는 벡터 명령을 예로 들면, 반복 5의 소스 레지스터에 관한 로크는, 사이클 4에서 클리어되고(즉, 반복 1의 실행 1 단계), 반복 6의 소스 레지스터에 관한 로크는 사이클 5에서 클리어되며, 반복 7의 소스 레지스터에 관한 로크는 사이클 6에서 클리어된다.
도 9c 및 도 9d는 논-런 패스트 모드에서의 2배 정밀도 소스 레지스터 록킹 및 클리어를 나타낸 표로, 도 9c는 단일 사이클 처리율을 갖는 2배 정밀도 벡터 명령에 관련되고, 도 9d는 2사이클 처리율(즉, 곱을 포함하는 벡터 명령)을 갖는 2배 정밀도 벡터 명령에 관련된다. 이 도면들에 도시된 것처럼, 모든 소스 레지스터는, 논-런 패스트 모드에서 로크된다. 단일 사이클 처리율에 의하면, 특정 반복을 위한 소스 레지스터에 관한 로크는, 그 반복이 파이프라인의 E1 단계에 이를 경우 클리어됨에 따라, 반복 1의 소스 레지스터에 관한 로크는 사이클 4에서 클리어되고, 반복 2의 소스 레지스터에 관한 로크는 사이클 5 등에서 클리어된다. 그러나, 2 사이클 처리율에 의하면, 각 반복은 E1 단계에서 2사이클을 소비하고, 그에 따라서, 반복 1의 소스 레지스터에 대한 로크는 단일 사이클 처리율과 마찬가지로 사이클 4에서 클리어되지만, 반복 2의 소스 레지스터에 대한 로크는 사이클 6에서 클리어되고, 반복 3의 소스 레지스터에 대한 로크는 사이클 8 등에서 클리어된다.
도 9e 및 도 9f는, 각각 도 9c 및 도 9d와 동일한 표이지만, 런 패스트 모드에서의 2배 정밀도 소스 레지스터 록킹 및 클리어를 나타낸다. 상술한 것처럼, 반복 수가 2이하인 경우, 소스 레지스터는 로크되지 않는다. 따라서, 도 9e 및 도 9f로부터 알 수 있듯이, 소스 레지스터는, 반복 수가 3 또는 4일 경우만 로크되고, 이 경우들에서 제 3 및 제 4 반복의 소스 레지스터만이 로크된다. 제 1 반복이 E1 단계에 있을 경우 제 3 반복의 소스 레지스터에 관한 로크는 클리어됨에 따라서, 제 3 반복에 대한 로크는 사이클 4에서 클리어된다. 그래서, 단일 사이클 처리율 벡터 명령에 대해서, 반복 4의 소스 레지스터에 관한 로크는 제 5 사이클에서 클리어된다. 그러나, 그 벡터 명령이 2 사이클 처리율을 가짐에 따라서, 반복마다 E1단계에서 2개의 사이클을 소비하는 경우, 반복 4의 소스 레지스터에 관한 로크는, 사이클 6이 되고서야 클리어되고, 이것은 도 9f의 표의 우측부에 도시되어 있다.
이상에 따라서 알 수 있는 것은, 본 발명의 바람직한 실시예에 따르면, IEEE 754 표준의 모든 국면과의 완전한 컴플라이언스가 요구되지 않는 환경들에서도, 상기와 같은 경우에 상기 동작모드를 런 패스트 모드로 전환할 수 있음으로써 처리속도를 상당히 향상시킬 수 있고, 이것에 의해 로크된 소스 레지스터의 수를 감소시킬 수 있으므로, 실행 파이프라인에 들어가기 전에 명령이 일시 중지되어야 하는 경우의 수를 감소시킬 수 있다는 것이다.
여기서는 본 발명의 특정 실시예를 설명하였지만, 본 발명은 이것으로 한정되지 않고, 본 발명의 범위 내에서 여러 가지 변경 및 추가를 할 수도 있다는 것이 명백할 것이다. 예를 들면, 본 실시예를 물리적으로 분리된 코프로세서를 갖는 CPU와 관련하여 설명하였지만, 사실은 이렇게 할 필요는 없다. 예를 들면, 부동 소수점 처리장치를 메인 프로세서 내에 설치하여도 된다. 또한, 상술한 것처럼, 본 발명의 바람직한 실시예에서는 코프로세서가 파이프라인이 2개인 것으로서 도시되어 있지만, 그 이상의 파이프라인이 설치되어도 되고, 각 파이프라인은 서로 다른 명령 세트에 응답하거나 명령 세트들간의 중첩을 제공한다. 또한, 다음의 종속항의 특징을 본 발명의 범위로부터 벗어나지 않고서 독립항의 특징과 여러 가지로 조합할 수 있다.

Claims (16)

  1. 명령의 시퀀스를 실행하는 파이프라인을 구비한 처리부와,
    상기 처리부가 상기 시퀀스내의 명령을 실행할 때 필요로 하는 소스 데이터를 저장하는 일련의 소스 레지스터와,
    구성가능한 기준에 의존하여 상기 소스 레지스터를 록킹하는 록킹 장치로서, 상기 구성가능한 기준은 상기 소스 레지스터가 상기 파이프라인내의 명령의 실행을 완료하기 위해 더 필요로 하는 후속 명령에 의한 소정 형태의 액세스를 방지하기 위해 록킹되도록 선택되고, 상기 후속 명령이 상기 명령에 관련된 상기 소스 레지스터가 상기 명령의 요구에 의해 액세스될 수 있는 경우에만 상기 파이프라인에 들어갈 수 있는 록킹 장치를 구비하는 데이터 처리장치에 있어서,
    상기 처리부는 제 1 및 제 2 동작모드를 갖고,
    상기 제 1 동작모드에서, 상기 처리부는 명령의 실행 중 1개 이상의 예외 조건이 결정되었을 때에 상기 파이프라인형 실행부에 외부 프로세스를 호출하여상기 명령의 실행을 완료할 수 있도록 구성되고,
    상기 제 2 동작모드에서, 상기 처리부는 상기 1개 이상의 예외 조건이 존재한다고 결정되어도 상기 파이프라인내의 명령의 실행을 완료하도록 구성되며,
    상기 록킹장치는 상기 처리부의 동작모드에 의존하여 상기 구성가능한 기준을 변경하여, 상기 제 2 동작모드에서 록킹되는 소스 레지스터의 수를 감소시킬 수 있도록 구성된 것을 특징으로 하는 데이터 처리장치.
  2. 제 1 항에 있어서,
    상기 시퀀스내의 명령의 실행으로부터 생기는 목적지 데이터를 저장하는 일련의 목적지 레지스터를 더 구비하고, 상기 록킹장치가 소정의 기준에 의존한 목적지 레지스터를 로크하도록 구성된 것을 특징으로 하는 데이터 처리장치.
  3. 제 2 항에 있어서,
    목적지 레지스터의 록킹을 결정하기 위해 사용되는 상기 소정의 기준은, 상기 제 1 동작모드 및 상기 제 2 동작모드의 양쪽이 같은 것을 특징으로 하는 데이터 처리 장치
  4. 제 1 항 내지 제3 항 중 어느 한 항에 있어서,
    상기 록킹장치는,
    상기 로크된 레지스터의 레코드와,
    상기 로크된 레지스터의 레코드를 참조하여 상기 후속 명령이 파이프라인에 들어갈 수 있는지의 여부를 결정하는 체크 로직과,
    상기 후속 명령에 대해 상기 명령의 상기 소스 레지스터 중 어느 것이 상기 레코드에 로크되는가를 결정하고, 상기 구성가능한 기준에 응답하는 결정 로직을 구비한 것을 특징으로 하는 데이터 처리장치.
  5. 제 1 항에 있어서,
    상기 구성가능한 기준은, 상기 제 1 동작모드에 있어서는, 명령이 상기기 파이프라인에 의해 실행되어야 할 때, 상기 록킹장치가 그 명령이 필요로 하는 소스 레지스터를, 그러한 소스 레지스터가 상기 파이프라인내의 그 명령에 의해 판독되기 전에, 그러한 소스 레지스터가 아직 오버라이트 되어도 되는 동안, 또는, 소스 레지스터가 상기 파이프라인의 외부 프로세스에 의해 더 필요하게 되는 동안, 로크되도록 구성되고, 한편 상기 제 2 동작모드에 있어서는, 상기 구성 가능한 기준은, 상기 록킹 장치가 그 명령이 필요로 하는 소스 레지스터를, 그러한 소스 레지스터가 상기 파이프라인내의 그 명령에 의해 판독되기 전에, 그러한 소스 레지스터가 아직 오버라이트 되어도 되는 동안만 로크하도록 구성되는 것을 특징으로 하는 데이터 처리 장치.
  6. 제 5 항에 있어서,
    싱기 제 2 동작모드에서, 상기 구성가능한 기준은, 상기 록킹장치가 스칼라 명령을 위해 또는 소정 값 이하의 반복의 수를 갖는 벡터 명령을 위한 소스 레지스터를 로크하지 않도록 구성된 것을 특징으로 하는 데이터 처리장치.
  7. 제 6 항에 있어서,
    상기 소정의 값은, 단일 정밀도 명령, 또는 1 사이클 처리율을 갖는 단일 정밀도 벡터 명령 또는 2배 정밀도 벡터 명령에 대하여 4이고, 상기 소정 값은 2 사이클 처리율을 갖는 2배 정밀도 벡터 명령에 대해서는 2인 것을 특징으로 하는 데이터 처리장치.
  8. 제 7 항에 있어서,
    상기 구성가능한 기준은, 제 2 동작모드에서, 상기 록킹장치가 2배 정밀도 벡터 명령을 2 사이클 처리율을 갖는 것으로 하여 처리하는 것을 특징으로 하는 데이터 처리장치.
  9. 제 1 항 내지 제 3 항 중 어느 한 항에 있어서,
    상기 파이프라인의 상기 외부 프로세스는, 지원 코드 또는 사용자 인에이블형 예외 제어 루틴인 것을 특징으로 하는 데이터 처리장치.
  10. 제 1 항 내지 제 3 항 중 어느 한 항에 있어서,
    상기 제 1 동작모드는 IEEE 754에 따른 동작모드이고, 상기 제 2 동작모드는 소프트웨어 루틴이 상기 1개 이상의 예외 조건을 제어할 필요가 없는 IEEE 754에 따르지 않는 동작모드인 것을 특징으로 하는 데이터 처리장치.
  11. 제 2 항에 있어서,
    상기 록킹장치는, 상기 로크된 목적지 레지스터를 기록하는 제 1 레코드와 상기 로크된 소스 레지스터를 기록하는 제 2 레코드를 구비한 것을 특징으로 하는 데이터 처리장치.
  12. 제 11 항에 있어서,
    상기 제 2 동작모드에서, 상기 후속 명령이 상기 제 1 레코드내에 로크된 것으로 나타낸 목적지 레지스터에 임의의 형태로 액세스할 필요가 있으면, 상기 후속 명령은 상기 제 1 레코드로부터 로크가 해제될 때까지 파이프라인에 들어가는 것이 일시 중지되고, 또한 상기 후속 명령이 제 2 레코드내에 로크된 1개 이상의 소스 레지스터를 판독 액세스할 필요가 있으면, 상기 후속 명령은 관련 로크가 상기 제 2 레코드로부터 해제되기를 기다릴 필요없이 파이프라인에 들어가는 것이 허용되는 것을 특징으로 하는 데이터 처리장치.
  13. 제 1 항 내지 제 3 항 중 어느 한 항에 있어서,
    상기 제 2 동작모드에서, 상기 처리부는, 플러쉬-투-제로 모드를 사용하여, 비정상 범위에 있는 임의의 소스 데이터 또는 결과 데이터를 포지티브 제로로 대체하는 것을 특징으로 하는 데이터 처리장치.
  14. 제 1 항 내지 제 3 항 중 어느 한 항에 있어서,
    상기 제 2 동작모드에서, 상기 처리부는, 디폴트 NaN(수가 아님) 모드를 사용하여, 임의의 소스 데이터가 NaN인 경우 디폴트 NaN을 결과 데이터로서 생성하도록 구성된 것을 특징으로 하는 데이터 처리장치.
  15. 제 1 항 내지 제 3 항 중 어느 한 항에 있어서,
    상기 제 2 동작모드에서, 상기 처리부는, 상기 처리부의 하드웨어내에 있고, 오버플로우, 부정확, 0에 의한 나눗셈 또는 무효인 예외 조건을 처리하도록 구성된 것을 특징으로 하는 데이터 처리 장치.
  16. 데이터 처리장치의 동작방법으로서, 명령의 시퀀스를 실행하는 파이프라인을 포함한 처리부와, 상기 시퀀스내의 명령을 실행할 경우 상기 처리부가 요구하는 소스 데이터를 저장하는 소스 레지스터로 이루어진 세트를 갖고,
    (i) 구성 가능한 기준에 의존하여 소스 레지스터를 록크하는 록킹장치를 이용하는 단계로서, 상기 파이프라인내의 명령의 실행을 완료하기 위해 더 필요하게 되는 소스 레지스터가, 후속 명령에 의한 소정 형태의 액세스를 방지하기 위해 로크되고, 상기 후속 명령이, 상기 명령에 관련된 상기 소스 레지스터가 상기 명령에 의해 요구되도록 액세스할 수 있는 경우에만 상기 파이프라인에 들어가는 것을 보장하도록 상기 구성 가능한 기준이 선택되는 상기 록킹 장치를 이용하는 단계와,
    (ii) 상기 처리부에 있어서의 제 1 동작모드 또는 제 2 동작모드를 선택하는 단계로서, 상기 제 1 동작모드에 대해서는, 상기 파이프라인형 처리부는, 명령의 실행중에 1개 이상의 예외 조건이 결정되었을 때, 상기 파이프라인형 실행부의 외부 프로세스를 호출하여, 상기 명령의 실행을 완료할 수 있도록 구성되고, 상기 제 2 동작모드에 대해서는, 상기 파이프라인형 처리부는, 비록 상기 1개 이상의 예외 조건이 결정되어도, 상기 파이프라인내의 명령의 실행을 완료하도록 구성된 선택하는 단계와,
    (iii) 상기 록킹장치가 상기 처리부의 동작모드에 의존하여 상기 구성가능한 기준을 변경하여, 상기 제 2 동작모드에서 로크되어 있는 소스 레지스터의 수를 감소시키는 단계를 포함한 것을 특징으로 하는 데이터 처리장치의 동작방법.
KR1020037013759A 2001-05-21 2002-02-11 데이터 처리장치에서의 소스 레지스터 록킹 KR100864890B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/860,777 US6842849B2 (en) 2001-05-21 2001-05-21 Locking source registers in a data processing apparatus
US09/860,777 2001-05-21
PCT/GB2002/000593 WO2002095575A1 (en) 2001-05-21 2002-02-11 Locking source registers in a data processing apparatus

Publications (2)

Publication Number Publication Date
KR20040005927A KR20040005927A (ko) 2004-01-16
KR100864890B1 true KR100864890B1 (ko) 2008-10-22

Family

ID=25333994

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020037013759A KR100864890B1 (ko) 2001-05-21 2002-02-11 데이터 처리장치에서의 소스 레지스터 록킹

Country Status (12)

Country Link
US (1) US6842849B2 (ko)
EP (1) EP1389312B1 (ko)
JP (1) JP3793155B2 (ko)
KR (1) KR100864890B1 (ko)
CN (1) CN1260647C (ko)
DE (1) DE60222765D1 (ko)
GB (1) GB2375855B (ko)
IL (2) IL155298A0 (ko)
MY (1) MY126211A (ko)
RU (1) RU2282235C2 (ko)
TW (1) TWI220960B (ko)
WO (1) WO2002095575A1 (ko)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080184017A1 (en) * 1999-04-09 2008-07-31 Dave Stuttard Parallel data processing apparatus
CA2488757C (en) * 2002-06-07 2012-07-24 Interface, Inc. Method of producing carpet tiles
US7430652B2 (en) * 2003-03-28 2008-09-30 Tarari, Inc. Devices for performing multiple independent hardware acceleration operations and methods for performing same
JP2005309229A (ja) * 2004-04-23 2005-11-04 Matsushita Electric Ind Co Ltd 情報処理装置
DE102005037216A1 (de) * 2005-08-08 2007-02-15 Robert Bosch Gmbh Verfahren und Vorrichtung zur Steuerung eines Rechnersystems
US20080208863A1 (en) * 2007-02-28 2008-08-28 Microsoft Corporation Compound Item Locking Technologies
US8117578B2 (en) * 2007-12-28 2012-02-14 Nec Corporation Static hazard detection device, static hazard detection method, and recording medium
KR101015202B1 (ko) * 2008-09-25 2011-02-18 퍼멘텍 주식회사 미생물배양기용 온도조절장치
US8255674B2 (en) * 2009-01-28 2012-08-28 International Business Machines Corporation Implied storage operation decode using redundant target address detection
US9529596B2 (en) * 2011-07-01 2016-12-27 Intel Corporation Method and apparatus for scheduling instructions in a multi-strand out of order processor with instruction synchronization bits and scoreboard bits
WO2014142704A1 (en) 2013-03-15 2014-09-18 Intel Corporation Methods and apparatus to compile instructions for a vector of instruction pointers processor architecture
US11132203B2 (en) * 2014-08-14 2021-09-28 Texas Instruments Incorporated System and method for synchronizing instruction execution between a central processor and a coprocessor
CN108509791B (zh) * 2018-02-09 2021-06-04 清华大学 检测处理器的方法、检测装置以及检测系统
KR102225838B1 (ko) * 2018-12-20 2021-03-09 한양대학교 에리카산학협력단 안드로이드 앱 보호를 위한 안티 에뮬레이션 방법 및 장치

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1093053A2 (en) 1999-10-15 2001-04-18 Fujitsu Limited Processor system with coprocessor
KR20010043772A (ko) * 1998-05-27 2001-05-25 맥케이 데이비드 니겔 혼합 벡터/스칼라 레지스터 파일
KR20010092736A (ko) * 1998-11-13 2001-10-26 추후기재 데이터 밀도가 높은 risc 프로세서
EP1080421B1 (en) 1998-05-27 2002-05-22 ARM Limited Recirculating register file

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5787465A (en) * 1994-07-01 1998-07-28 Digital Equipment Corporation Destination indexed miss status holding registers
US5749095A (en) * 1996-07-01 1998-05-05 Sun Microsystems, Inc. Multiprocessing system configured to perform efficient write operations
US6216222B1 (en) 1998-05-14 2001-04-10 Arm Limited Handling exceptions in a pipelined data processing apparatus
US6304963B1 (en) 1998-05-14 2001-10-16 Arm Limited Handling exceptions occuring during processing of vector instructions
US6317821B1 (en) 1998-05-18 2001-11-13 Lucent Technologies Inc. Virtual single-cycle execution in pipelined processors
US6675292B2 (en) * 1999-08-13 2004-01-06 Sun Microsystems, Inc. Exception handling for SIMD floating point-instructions using a floating point status register to report exceptions

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20010043772A (ko) * 1998-05-27 2001-05-25 맥케이 데이비드 니겔 혼합 벡터/스칼라 레지스터 파일
EP1080421B1 (en) 1998-05-27 2002-05-22 ARM Limited Recirculating register file
KR20010092736A (ko) * 1998-11-13 2001-10-26 추후기재 데이터 밀도가 높은 risc 프로세서
EP1093053A2 (en) 1999-10-15 2001-04-18 Fujitsu Limited Processor system with coprocessor

Also Published As

Publication number Publication date
IL155298A (en) 2007-12-03
EP1389312A1 (en) 2004-02-18
US6842849B2 (en) 2005-01-11
GB0202642D0 (en) 2002-03-20
GB2375855A (en) 2002-11-27
JP3793155B2 (ja) 2006-07-05
TWI220960B (en) 2004-09-11
EP1389312B1 (en) 2007-10-03
CN1511281A (zh) 2004-07-07
CN1260647C (zh) 2006-06-21
RU2282235C2 (ru) 2006-08-20
US20030033506A1 (en) 2003-02-13
KR20040005927A (ko) 2004-01-16
GB2375855B (en) 2004-11-10
DE60222765D1 (de) 2007-11-15
IL155298A0 (en) 2003-11-23
MY126211A (en) 2006-09-29
JP2004520657A (ja) 2004-07-08
WO2002095575A1 (en) 2002-11-28

Similar Documents

Publication Publication Date Title
JP2597811B2 (ja) データ処理システム
US6105129A (en) Converting register data from a first format type to a second format type if a second type instruction consumes data produced by a first type instruction
JP3093639B2 (ja) プロセッサ内の資源割当て追跡方法及びそのシステム
US5611063A (en) Method for executing speculative load instructions in high-performance processors
EP0762270B1 (en) Microprocessor with load/store operation to/from multiple registers
US6304963B1 (en) Handling exceptions occuring during processing of vector instructions
US6098167A (en) Apparatus and method for fast unified interrupt recovery and branch recovery in processors supporting out-of-order execution
JPH10269080A (ja) 順不同ロード命令とストア命令との干渉を検出回復するための方法及び装置
KR100864890B1 (ko) 데이터 처리장치에서의 소스 레지스터 록킹
JP3689369B2 (ja) 2次リオーダ・バッファ・マイクロプロセッサ
EP0753172B1 (en) Processing system and method of operation
US6216222B1 (en) Handling exceptions in a pipelined data processing apparatus
US6021488A (en) Data processing system having an apparatus for tracking a status of an out-of-order operation and method thereof
US5727177A (en) Reorder buffer circuit accommodating special instructions operating on odd-width results
JP3207124B2 (ja) カウント/リンク・レジスタ変更命令の投機実行をサポートする方法及び装置
US5875326A (en) Data processing system and method for completing out-of-order instructions
JP2742375B2 (ja) スーパースカラ・プロセッサにおける命令処理の選択的逐次化の方法およびシステム
US6658555B1 (en) Determining successful completion of an instruction by comparing the number of pending instruction cycles with a number based on the number of stages in the pipeline
US5850563A (en) Processor and method for out-of-order completion of floating-point operations during load/store multiple operations
US5784606A (en) Method and system in a superscalar data processing system for the efficient handling of exceptions
US6266761B1 (en) Method and system in an information processing system for efficient maintenance of copies of values stored within registers
Changwatchai et al. Optimizing instruction execution in the powerpc 603e superscalar microprocessor
JPH0756735A (ja) 並列演算処理装置
JPH0277840A (ja) データ処理装置

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20120924

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20130926

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20140923

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20150918

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20160921

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20170919

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20180918

Year of fee payment: 11