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

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

Info

Publication number
KR20040005927A
KR20040005927A KR10-2003-7013759A KR20037013759A KR20040005927A KR 20040005927 A KR20040005927 A KR 20040005927A KR 20037013759 A KR20037013759 A KR 20037013759A KR 20040005927 A KR20040005927 A KR 20040005927A
Authority
KR
South Korea
Prior art keywords
instruction
register
pipeline
source
processing unit
Prior art date
Application number
KR10-2003-7013759A
Other languages
English (en)
Other versions
KR100864890B1 (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

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, 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, look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline, 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, 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, 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, look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling

Abstract

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

Description

데이터 처리장치에서의 소스 레지스터 록킹{LOCKING SOURCE REGISTERS IN A DATA PROCESSING APPARATUS}
명령어를 실행하는 하나 또는 그 이상의 파이프라인을 포함하는 프로세서를 제공하는 것은 알려져 있다. 이와 같은 프로세서의 파이프라인 특징으로 인해, 다수의 명령어는 임의의 시점에서 실행되고 있는 중이어도 되고, 이것은 적절한 해저드 및 자원 검사 기능을 상기 파이프라인형 프로세서에 제공할 필요성을 일으켰다. 따라서, 일반적으로, 각 명령어를 평가한 후 그것을 실행 파이프라인에 내려(issue), 그 실행 파이프라인에 그것을 내리는 경우 해저드 조건 또는 자원 충돌이 일어나는지를 판정한다. (예를 들면, 파이프라인에서 이미 실행되는 명령어에 의해) 여전히 계산되고 있는 그 명령어 때문에 아직 사용 불가능한 데이터 항목을 상기 명령어가 필요로 하는 경우, 또는 파이프라인에서 이미 또 다른 명령어를 여전히 필요로 하고 파이프라인에서 이미 명령어를 판독하고 나서야 오버라이트 해야하는 레지스터로의 액세스를 필요로 하는 경우에, 해저드 조건이 검출될 것이다. 자원 충돌은, 이미 또 다른 실행 명령어를 위해 사용되고 있는 명령어로 인해 사용 불가능한 처리장치를 필요로 할 경우 검출될 것이다.
해저드나 자원 검사를 하지 않는 것이 가능한 대신에, 그 해저드 조건과 자원 충돌을 회피하는 작업은 컴파일러/코드 라이터가 하는 것이 가능하다. 그러나, 이로 인해 일반적으로 매우 복잡한 코드가 됨에 따라서, 상기 해저드 및 자원 검사 과정을 실행하는 것은 일반적이다.
상기 해저드 및 자원 검사 기능은, 관련 프로세서와 모든 종속적인 프로세서를 일시 중지(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 국면에 따른 데이터 처리장치는, 명령어로 구성된 시퀀스를 실행하는 파이프라인을 구비한 처리(processing)부와, 상기 시퀀스의 명령어를 실행할 때 상기 처리부가 요구하는 소스 데이터를 저장하는 일련의 소스 레지스터와, 가변구성 표준에 의존한 소스 레지스터를 록킹하는 록킹장치를 구비하고, 상기 가변구성 표준은 후속하는 명령어에 의한 소정 형태의 액세스를 막기 위해 파이프라인에서의 명령어의 실행을 완료하는데 더 필요로 하는 소스 레지스터를 확실히 록킹하도록 선택되고, 상기 후속하는 명령어는 상기 명령어가 필요로 할 때에 그 명령어에 관련된 소스 레지스터를 액세스할 수 있는 경우만 그 파이프라인에 들어갈 수 있고, 상기 처리부는 제 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 사이클 처리율을 갖는 단일 정밀도 벡터 명령어 또는 배정밀도 벡터 명령어에 대해서는 4이고, 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 연산모드에서는 명령어의 실행시에 한 개 이상의 예외 조건의 판정시에, 파이프라인된 처리부를, 파이프라인된 실행부에 부수적인 프로세스를 야기시켜 그 명령어의 실행이 완료될 수 있도록 구성하고, 상기 제 2 연산모드에서는 상기 한 개 이상의 예외 조건의 존재가 판정되어도 상기 파이프라인 내의 명령어의 실행이 완료되도록 상기 파이프라인된 처리부를 구성하는 단계와, (iii) 상기 록킹장치가 상기 처리부의 연산모드에 따라 가변구성 표준을 변경되게 하여, 제 2 연산모드에서 로크되어 있는 소스 레지스터의 수를 감소시키는 단계를 포함한다.
본 발명은 데이터 처리장치에서의 소스 레지스터의 록킹(locking)에 관한 것이다.
또한, 본 발명을 아래의 첨부도면에 설명된 것과 같은 바람직한 실시예를 참조하여 일례들로만 설명하겠다:
도 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는 단일 정밀도 벡터 명령어와 배정밀도 벡터 명령어의 실행 시퀀스를 각각 나타낸 것으로, 이 두 가지 경우에 상기 벡터 명령어 후 로드 명령어를 수행하고, 소스 레지스터의 록킹을 필요로 하는 조건을 나타낸 도면,
도 9a 내지 도 9f는 소스 레지스터가 제 1 및 제 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개의 사이클 처리율을 갖는다고 한다)에 대해 소스 레지스터가 로크되어 있지 않다는 것과 같다.
따라서, 목적지 레지스터로서 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-pointCoprocessor 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) 명령어 및 배정밀도(DP) 명령어용 록킹 소스 레지스터를 필요로 하는 조건을 설명하도록 구성된다.
소스 레지스터를 런 패스트 모드에서 로크하는데 필요한 2가지 경우는:
·4번 보다 큰 반복의 길이를 갖는 단일 정밀도 벡터 명령어(또는 단일 사이클 처리율을 갖는 배정밀도 벡터 명령어)와,
·이 명령어가 2번 보다 큰 반복의 길이를 가질 경우, 곱을 포함하는(즉, 2 사이클 처리율을 갖는) 배정밀도 벡터 명령어가 있다.
바람직한 실시예에서는, 곱을 포함하지 않는(즉, 단일 사이클 처리율을 갖는) 임의의 배정밀도 벡터 명령어를 로크하는 것이 불필요한데, 그 이유는 바람직한 실시예에서 이와 같은 벡터 명령어가, 어쨌든 4번 반복의 최대 길이만을 가질 수 있기 때문이다. 그러나, 일 실시예에서는, 모든 배정밀도 벡터 명령어가 2 사이클 처리율을 갖는 것으로서 처리되어, 소스 레지스터는 2번 보다 큰 반복의 길이를 갖는 배정밀도 벡터 명령어가 관찰될 때마다 로크된다. 이러한 동작은 처리를 단순화하기 위해 한다.
도 8a는 로드 명령어가 뒤에 오는 길이 7을 갖는 단정밀도 벡터 명령어를 나타낸다. 이 벡터 명령어는, 다시 연속적인 형태로 아래의 연산을 수행한다:
반복연산
1FCDP S8, S16, S24
2FCDP S9, S17, S25
3FCDP S10, S18, S26
4FCDP S11, S19, S27
5FCDP S12, S20, S28
6FCDP S13, S21, S29
7FCDP S14, S22, S30
도 8a에서, 길이 7을 갖는 단일 정밀도 벡터 명령어는, 제 7 반복을 위해 소스 오퍼랜드 레지스터로서 S30을 필요로 한다. 다음의 S30의 로드는, S30에 대한 로크가 클리어될 때까지 일시 중지되는 것이 요구된다. 런 패스트 모드에서는, 단일 정밀도 연산을 위한 제 4 반복 후와 배정밀도 연산을 위한 제 2 반복(바람직한 실시예에서, 모든 배정밀도 연산은 곱을 포함하는 것에 상관없이 2사이클 처리율을 갖는 것으로서 처리됨)후 반복적으로 사용된 소스 레지스터에 대해 로크를 세트한다.
도 8a는 단일 정밀도 벡터 명령어를 나타내고, 이러한 경우에 로크는, 현재 반복보다 큰 번호로 매겨진 반복 4에 대해 실행 1 사이클에서 클리어된다. 이것은 아래의 표로 나타낸다(여기서, '0'은 로크가 클리어된 것을 나타내고, '1'은 로크가 세트된 것을 나타냄):
[표 1]
상기 표에 나타낸 것처럼, 제 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번을 반복하는 배정밀도 벡터 명령어를 나타낸다.
이 벡터 명령어는, 연속적인 형태로 다시 아래의 연산을 수행한다:
반복연산
1FCDP D4, D8, D12
2FCDP D5, D9, D13
3FCDP D6, D10, D14
도 8b에서, 배정밀도 벡터는, 곱을 포함하고, 2사이클마다 1개의 연산을 하는 처리율을 갖는다. 그래서 실행 1 단계는, 2사이클에 걸쳐 완료된다. 아래의 표는, 소스 레지스터 록킹을 나타낸다:
[표 2]
위 표에 나타낸 것처럼, 제 3 반복을 위해 필요한 소스 레지스터만이 로크된다. 따라서, 로크는 사이클 2에서 D10 및 D12에 관해 세트되고, 사이클 4에서 클리어된다(곱을 포함하는 연산에 대한 배정밀도 로크는, 실행 1단계에서 현재의 반복보다 큰 번호로 매겨진 반복 2에 대해 클리어된다). FLDD 명령어(여기서, 최종 D는 배정밀도를 의미함)는, 사이클 5에서 디코드단계로 진행하도록 허용해주고, 사이클 8에서 D14에 기록한다. 제 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는 논-런 패스트 모드에서의 배정밀도 소스 레지스터 록킹 및 클리어를 나타낸 표로, 도 9c는 단일 사이클 처리율을 갖는 배정밀도 벡터 명령어에 관련되고, 도 9d는 2사이클 처리율(즉, 곱을 포함하는 벡터 명령어)을 갖는 배정밀도 벡터 명령어에 관련된다. 이 도면들에 도시된 것처럼, 모든 소스 레지스터는, 논-런 패스트 모드에서 로크된다. 단일 사이클 처리율에 의하면, 특정 반복을 위한 소스 레지스터에 관한 로크는, 그 반복이 파이프라인의 E1 단계에 이를 경우 클리어됨에 따라, 반복 1의 소스 레지스터에 관한 로크는 사이클 4에서 클리어되고, 반복 2의 소스 레지스터에 관한 로크는 사이클 5 등에서 클리어된다. 그러나, 2 사이클 처리율에 의하면, 각 반복은 E1 단계에서 2사이클을 소비하고, 그에 따라서, 반복 1의 소스 레지스터에 대한 로크는 단일 사이클 처리율과 마찬가지로 사이클 4에서 클리어되지만, 반복 2의 소스 레지스터에 대한 로크는 사이클 6에서 클리어되고, 반복 3의 소스 레지스터에 대한 로크는 사이클 8 등에서 클리어된다.
도 9e 및 도 9f는, 각각 도 9c 및 도 9d와 동일한 표이지만, 런 패스트 모드에서의 배정밀도 소스 레지스터 록킹 및 클리어를 나타낸다. 상술한 것처럼, 반복 수가 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. 선행하는 청구항 중 어느 한 항에 있어서,
    상기 록킹장치는,
    상기 로크된 레지스터의 레코드와,
    상기 로크된 레지스터의 레코드를 참조하여 후속하는 명령어가 파이프라인에 들어갈 수 있는지의 여부를 판정하는 체크 로직과,
    상기 후속하는 명령어에 대해 상기 명령어를 갖는 임의의 소스 레지스터가 상기 레코드에 로크되는지의 여부를 판정하고 상기 가변구성 표준에 응답하는 판정 로직을 구비한 것을 특징으로 하는 데이터 처리장치.
  5. 선행하는 청구항 중 어느 한 항에 있어서,
    상기 가변구성 표준은, 제 1 연산모드에서, 상기 파이프라인에 의해 명령어를 실행할 경우, 파이프라인에서의 명령어에 의해 소스 레지스터가 판독되기 전에 소스 레지스터들을 오버라이트하는 동안이나 또는 상기 파이프라인에 부수적인 프로세스에 의해 소스 레지스터를 필요로 하는 동안에, 그 명령어가 필요로 하는 소스 레지스터를 상기 록킹장치가 로크하도록 구성되는 반면에, 상기 가변구성 표준은, 제 2 연산모드에서, 파이프라인에서의 명령어에 의해 소스 레지스터가 판독되기 전에 소스 레지스터들을 오버라이트하는 동안만 그 명령어가 필요로 하는 소스 레지스터를 상기 록킹장치가 로크하도록 구성된 것을 특징으로 하는 데이터 처리장치.
  6. 제 5 항에 있어서,
    제 2 연산모드에서, 상기 가변구성 표준은, 상기 록킹장치가 스칼라 명령어용 또는 소정 값 이하의 반복의 수를 갖는 벡터 명령어용 임의의 소스 레지스터를 로크하지 않도록 구성된 것을 특징으로 하는 데이터 처리장치.
  7. 제 6 항에 있어서,
    상기 소정 값은, 1 사이클 처리율을 갖는 단일 정밀도 벡터 명령어 또는 배정밀도 벡터 명령어에 대해서는 4이고, 상기 소정 값은 2 사이클 처리율을 갖는 배정밀도 벡터 명령어에 대해서는 2인 것을 특징으로 하는 데이터 처리장치.
  8. 제 7 항에 있어서,
    상기 가변구성 표준은, 제 2 연산모드에서, 상기 록킹장치가 임의의 배정밀도 벡터 명령어를 2 사이클 처리율을 갖는 것으로서 처리하도록 한 것을 특징으로 하는 데이터 처리장치.
  9. 선행하는 청구항 중 어느 한 항에 있어서,
    상기 파이프라인에 부수적인 프로세스는, 지원 코드 또는 사용자 인에이블형 예외 제어 루틴인 것을 특징으로 하는 데이터 처리장치.
  10. 선행하는 청구항 중 어느 한 항에 있어서,
    상기 제 1 연산모드는 IEEE 754 연산 호환모드이고, 제 2 연산모드는 소프트웨어 루틴이 상기 1개 이상의 예외 조건을 제어할 필요가 없는 IEEE 754 비호환모드인 것을 특징으로 하는 데이터 처리장치.
  11. 청구항 2에 종속하는 선행하는 청구항 중 어느 한 항에 있어서,
    상기 록킹장치는, 상기 로크된 목적지 레지스터를 기록하는 제 1 레코드와 상기 로크된 소스 레지스터를 기록하는 제 2 레코드를 구비한 것을 특징으로 하는 데이터 처리장치.
  12. 제 11 항에 있어서,
    상기 제 2 모드에서, 상기 후속하는 명령어가 제 1 레코드에서 로크된 것처럼 나타낸 목적지 레지스터에 임의의 형태로 액세스할 필요가 있으면, 그 후속하는 명령어는, 상기 제 1 레코드로부터 로크가 해제될 때까지 파이프라인에 들어가는 것이 일시 중지되는 반면에, 그 후속하는 명령어가 제 2 레코드에 로크된 한 개 이상의 소스 레지스터에 관한 판독 액세스를 할 필요만 있으면, 그 후속하는 명령어는 관련 로크가 제 2 레코드로부터 해제되기를 기다릴 필요없이 파이프라인에 들어가는 것이 허용되는 것을 특징으로 하는 데이터 처리장치.
  13. 선행하는 청구항 중 어느 한 항에 있어서,
    제 2 연산모드에서, 상기 처리부는, 플러쉬-투-제로 모드를 사용하여, 비정상 범위에 있는 임의의 소스 데이터 또는 결과 데이터를 포지티브 제로로 대체하는 것을 특징으로 하는 데이터 처리장치.
  14. 선행하는 청구항 중 어느 한 항에 있어서,
    제 2 연산모드에서, 상기 처리부는, 디폴트 NaN(수가 아님) 모드를 사용하여, 임의의 소스 데이터가 NaN인 경우 디폴트 NaN을 결과 데이터로서 생성하도록 구성된 것을 특징으로 하는 데이터 처리장치.
  15. 선행하는 청구항 중 어느 한 항에 있어서,
    제 2 연산모드에서, 상기 처리부는, 처리부의 하드웨어 내에서, 임의의 오버플로우 예외, 부정확한 예외, 나눗셈에서 0으로 나누지 못하는 예외 또는 무효 예외 조건을 처리하도록 구성된 것을 특징으로 하는 데이터 처리장치.
  16. 명령어로 이루어진 시퀀스를 실행하는 파이프라인을 포함한 처리부와, 상기 시퀀스에서의 명령어를 실행할 경우 상기 처리부가 요구하는 소스 데이터를 저장하는 소스 레지스터로 이루어진 세트를 갖고,
    (i) 록킹장치를 사용하여, 후속하는 명령어가 요구하는 것처럼 그 명령어에관련된 소스 레지스터가 액세스될 수 있는 경우 파이프라인에 들어갈 수만 있는 후속하는 명령어에 의해 소정 형태의 액세스를 막기 위해 상기 파이프라인에 있는 명령어의 실행을 완료하는데 필요한 소스 레지스터를 확실히 로크하도록 선택되는 가변구성 표준에 따라 소스 레지스터를 로크하는 단계와,
    (ii) 상기 처리부에 대해 제 1 연산모드 또는 제 2 연산모드를 선택하고, 상기 제 1 연산모드에서는 명령어의 실행시에 한 개 이상의 예외 조건의 판정시에, 파이프라인된 처리부를, 파이프라인된 실행부에 부수적인 프로세스를 야기시켜 그 명령어의 실행이 완료될 수 있도록 구성하고, 상기 제 2 연산모드에서는 상기 한 개 이상의 예외 조건의 존재가 판정되어도 상기 파이프라인 내의 명령어의 실행이 완료되도록 상기 파이프라인된 처리부를 구성하는 단계와,
    (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 true KR20040005927A (ko) 2004-01-16
KR100864890B1 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)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101015202B1 (ko) * 2008-09-25 2011-02-18 퍼멘텍 주식회사 미생물배양기용 온도조절장치
KR20200076915A (ko) * 2018-12-20 2020-06-30 한양대학교 에리카산학협력단 안드로이드 앱 보호를 위한 안티 에뮬레이션 방법 및 장치

Families Citing this family (12)

* 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
WO2003103945A1 (en) * 2002-06-07 2003-12-18 Interface, Inc. Asymmetrical carpet tile design, manufacture and installation
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
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
US9086873B2 (en) 2013-03-15 2015-07-21 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 清华大学 检测处理器的方法、检测装置以及检测系统

Family Cites Families (10)

* 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
DE69901556T2 (de) 1998-05-27 2002-11-21 Advanced Risc Mach Ltd Rückführender registerspeicher
US6282634B1 (en) * 1998-05-27 2001-08-28 Arm Limited Apparatus and method for processing data having a mixed vector/scalar register file
US6282633B1 (en) * 1998-11-13 2001-08-28 Tensilica, Inc. High data density RISC processor
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
JP4160705B2 (ja) 1999-10-15 2008-10-08 富士通株式会社 プロセッサ及びプロセッサシステム

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101015202B1 (ko) * 2008-09-25 2011-02-18 퍼멘텍 주식회사 미생물배양기용 온도조절장치
KR20200076915A (ko) * 2018-12-20 2020-06-30 한양대학교 에리카산학협력단 안드로이드 앱 보호를 위한 안티 에뮬레이션 방법 및 장치

Also Published As

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

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
JP2938426B2 (ja) 順不同ロード命令とストア命令との干渉を検出回復するための方法及び装置
US5500943A (en) Data processor with rename buffer and FIFO buffer for in-order instruction completion
US5887161A (en) Issuing instructions in a processor supporting out-of-order execution
US5694565A (en) Method and device for early deallocation of resources during load/store multiple operations to allow simultaneous dispatch/execution of subsequent instructions
US6393555B1 (en) Rapid execution of FCMOV following FCOMI by storing comparison result in temporary register in floating point unit
US6098167A (en) Apparatus and method for fast unified interrupt recovery and branch recovery in processors supporting out-of-order execution
US5913048A (en) Dispatching instructions in a processor supporting out-of-order execution
KR100864890B1 (ko) 데이터 처리장치에서의 소스 레지스터 록킹
US5546599A (en) Processing system and method of operation for processing dispatched instructions with detected exceptions
EP0753172B1 (en) Processing system and method of operation
US6216222B1 (en) Handling exceptions in a pipelined data processing apparatus
JP2003523574A (ja) 2次リオーダ・バッファ・マイクロプロセッサ
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) カウント/リンク・レジスタ変更命令の投機実行をサポートする方法及び装置
US5768553A (en) Microprocessor using an instruction field to define DSP instructions
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
RU2150738C1 (ru) Система обработки и способ ее функционирования
EP1208424B1 (en) Apparatus and method for reducing register write traffic in processors with exception routines
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

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