KR20090101061A - 프로세서 및 정보 처리 장치 - Google Patents

프로세서 및 정보 처리 장치 Download PDF

Info

Publication number
KR20090101061A
KR20090101061A KR1020080114556A KR20080114556A KR20090101061A KR 20090101061 A KR20090101061 A KR 20090101061A KR 1020080114556 A KR1020080114556 A KR 1020080114556A KR 20080114556 A KR20080114556 A KR 20080114556A KR 20090101061 A KR20090101061 A KR 20090101061A
Authority
KR
South Korea
Prior art keywords
floating point
store
instruction
data
conditional
Prior art date
Application number
KR1020080114556A
Other languages
English (en)
Other versions
KR101016257B1 (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 KR20090101061A publication Critical patent/KR20090101061A/ko
Application granted granted Critical
Publication of KR101016257B1 publication Critical patent/KR101016257B1/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
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30021Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
    • 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/30094Condition code generation, e.g. Carry, Zero flag
    • 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/30098Register arrangements
    • G06F9/30101Special purpose registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3826Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • 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
    • 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/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • G06F9/38585Result writeback, i.e. updating the architectural state or memory with result invalidation, e.g. nullification
    • 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/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computing Systems (AREA)
  • Nonlinear Science (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

본 발명은 컨디션 코드의 수에 의한 제한을 받지 않고 조건부 스토어 명령을 실행할 수 있는 프로세서를 제공하는 것을 목적으로 한다.
조건 데이터를 부동 소수점 레지스터에 저장하고, 그 조건 데이터에 기초하여 스토어 데이터를 캐시에 스토어할지 아닐지를 판정하는 조건부 부동 소수점 스토어 명령을 연산부가 실행한다.

Description

프로세서 및 정보 처리 장치{PROCESSOR AND INFORMATION PROCESSING APPARATUS}
본 발명은 프로세서 및 정보 처리 장치에 관한 것이다.
프로세서에 있어서, 컴파일러가 프로그램의 처리 성능을 향상시키는 수법으로, 소프트웨어 파이프라이닝(software pipelining)이 있다. 도 15에 소프트웨어 파이프라이닝의 개념도를 나타낸다. 예를 들어 프로그램 소스에서 의존 관계가 있는 처리 A가 기술되어 있는 경우에, 하드웨어가 그대로 처리하면 각 명령간에 의존 관계가 있기 때문에, 처리 A가 순서대로 처리되어 버려, 성능이 나오지 않는 경우가 있다. 이런 경우, 컴파일러가 처리 A와는 의존 관계가 없는 그 후에 실행되는 처리 B를, 처리 A의 명령열 사이에 삽입하도록 컴파일시에 명령열의 나열법을 최적화한다. 이에 따라 하드웨어는 처리 A와 처리 B를 병렬로 행하는 것이 가능해진다. 이 최적화를 소프트웨어 파이프라이닝이라 한다.
프로그램에서 if문과 같은 조건문이 있는 경우, 조건에 따라 명령을 실행할지 아닐지가 나뉘는 것을 실현하는 수단으로서 대략 2가지를 생각할 수 있다. 그 중의 하나는, 도 16에 나타낸 바와 같이, 조건 분기 명령에 의해 조건의 진위에 따 라 명령 분기함으로써 실행하는 명령열을 전환하는 수단이다. 그러나 도 16에 나타낸 바와 같이, 조건 분기에 따라 실행할지 아닐지가 결정되는 명령열은 상기 소프트웨어 파이프라이닝의 대상이 될 수 없다.
조건에 따라 명령을 실행할지 아닐지가 나뉘는 것을 실현하는 또 하나의 수단으로서, 조건의 진위에 따라 레지스터 사이를 이동하는 조건부 레지스터 이동 명령이나, 레지스터로부터 메모리에 기록하는 조건부 스토어(store) 명령을 이용하는 것이 있다. 이들은 소프트웨어 파이프라이닝을 행하기 위한 수단이 될 수 있다. 이들 명령은 결과를 갱신할지 아닐지를 조건의 진위에 따라 판정한다. 즉 명령열로서는 조건에 관계없이 동일한 것이기 때문에, 이들 명령을 이용하면 조건문이 있는 곳에서도 소프트웨어 파이프라이닝을 사용하는 것이 가능하다(도 17 및 도 18 참조).
또, 명령 세트에 따라서는, 조건부 레지스터 이동 명령만 정의되고, 조건부 스토어 명령이 정의되지 않은 것이 있다. 이러한 프로세서에 있어서, 하나의 프로그램을 하나의 코어나 스레드(thread)로 처리하는 경우는, 조건부 스토어 명령 대신 다음과같이 처리한다. 우선, 레지스터에 메모리 데이터를 로드한다. 그 후 레지스터를 갱신할지 아닐지는 조건부 레지스터 이동 명령을 사용하여 행하고, 스토어 명령을 사용하여 그 레지스터를 메모리에 스토어한다. 만약 프로그램의 동작으로서, 메모리를 갱신하지 않는 경우는, 일단 레지스터에 로드한 동일한 데이터를 다시 한번 메모리에 재기록하는 것이다. 도 19에 조건부 이동 명령으로 조건부 스토어 명령의 대용으로 한 경우의 플로우를 나타낸다.
최근, 하나의 프로그램을 복수의 코어로 병렬로 처리(스레드 병렬)하는 고속화의 수법이 있다. 이 때 메모리 상의 데이터를 공유하는 경우가 있다. 이 복수의 코어를 사용한 스레드 병렬시에는, 조건부 스토어를 상기와 같은 조건부 레지스터 이동 명령으로 대용할 수는 없다.
도 20의 구체예를 참조하여 그 이유를 설명한다.
도 20에 있어서, 예를 들어 조건이 거짓인 것을 코어 0에서 실행하고, 조건이 참인 것을 코어 1에서 실행하여, 어느 한쪽의 코어가 메모리를 갱신하는 것으로 한다. 이 경우에, 각 코어가 일단 자신의 레지스터에 메모리로부터 데이터를 로드하여, 코어 1이 먼저 새로운 데이터를 메모리에 스토어한 후, 코어 0은 로드한 데이터와 동일한 것을 다시 메모리에 스토어하면, 메모리 상에서는 오래된 데이터가 되어 버린다. 그 결과, 잘못된 처리가 된다.
도 20에 나타낸 문제는, 일단 코어가 레지스터에 로드해 버리면, 다른 코어와의 데이터의 공유성이 없어지기 때문에 발생한다. 즉 메모리 데이터를 공유하면서 고속화를 행하는 스레드 병렬이 불가능해지는 경우가 발생하는 것이다. 이 문제는 조건부 스토어에 의해 해결될 수 있다.
조건부 스토어 명령이 있으면, 도 21에 나타낸 바와 같이, 레지스터에 로드하지 않고, 조건이 참인 코어 1은 조건부 스토어로 새로운 데이터를 스토어하고, 조건이 거짓인 코어 0은 조건부 스토어로 스토어하지 않기 때문에, 새로운 데이터를 메모리 상에 반영할 수 있다.
단, 조건부 스토어에 해당하는 명령이 정의되어 있는 경우도, 부동 소수점 레지스터와는 상이한 마스크 전용의 레지스터를 설정하고 있는 명령 세트가 있다. 이 경우는, 마스크 기능이 있는 스토어를 사용하여 상기 스레드 병렬이 가능해지지만, 마스크 레지스터의 의존 관계를 검출해야 하고, 그것을 위한 하드웨어도 커져 버린다. 모든 프로그램에 있어서 마스크를 필요로 하는 것은 아니기 때문에, 이 하드웨어의 증대는 반드시 가격 대 성능비가 좋은 것은 아니다.
조건부 명령에서는, 예를 들어 SPARC-V9(SPARC은 등록 상표)에 있어서는, 조건 데이터로서 정수용 컨디션 코드 ICC, XCC나, 부동 소수점용 컨디션 코드 fcc0, fcc1, fcc2, fcc3을 사용한다. 예를 들어 부동 소수점의 조건으로 조건부 명령을 실행할 때에는, 독립 조건이 fcc0, fcc1, fcc2, fcc3 4개밖에 없기 때문에, 예를 들어 5개 이상의 조건을 사용한 조건부 처리를 행할 수 없다. 이 조건을 유지할 수 있는 수가 제한되는 것도, 컴파일러에 의한 병렬화의 저해 요인이 되고 있다. 도 22에 컨디션 코드가 최대 2개일 때의 예를 나타낸다.
또 최근 스칼라 프로세서에 있어서 고성능화를 위해 채택되고 있는 복수의 레지스터의 데이터를 하나의 명령의 입력 데이터의 벡터 요소로서 병렬 처리를 행하는 SIMD(Single Instruction Multiple Data) 확장 처리라는 것이 있다. 조건부 명령의 SIMD 처리를 정의할 때에는, 각 요소에 관해 각각 조건을 참조하여 행하는 조건부 SIMD 명령이 필요하다. 그것을 위해서는, 조건을 저장하는 조건 코드, 또는 마스크 레지스터도 요소마다 대응하도록 새롭게 SIMD에 대응하여 확장해야 한다.
이상과 같이, 종래의 프로세서의 조건부 명령에서는 컨디션 코드의 수로 조건 처리의 수가 제한된다는 문제가 있었다.
따라서 본 발명의 과제는, 조건부 명령에서의 컨디션 코드의 수에 의한 제한을 받지 않고 스토어 명령을 실행할 수 있는 프로세서를 제공하는 것이다. 또, 그 프로세서는 가능한 한 비용을 억제하여 실현할 것이 요구된다.
또한, 상기 과제로 하는 프로세서에 대응하여, 스칼라 프로세서에 있어서 고성능화를 위해 채택되고 있는 SIMD 명령에 관해서도, 조건부 명령의 SIMD 처리를 정의하는 것이 요구된다.
이 프로세서는, 조건 데이터를 부동 소수점 레지스터에 저장하고, 그 조건 데이터에 기초하여, 스토어 데이터를 메모리에 스토어할지 아닐지를 판정하는 조건부 부동 소수점 스토어 명령을 연산부가 실행한다. 또, 이 프로세서는, 부동 소수점 레지스터가 SIMD 구성에서 사용될 때, SIMD의 각 요소의 부동 소수점 레지스터에 조건 데이터를 저장하고, 그 조건 데이터에 기초하여, SIMD 스토어의 각 요소의 데이터를 스토어할지 아닐지를 판정하는 조건부 부동 소수점 스토어 명령을 연산부가 실행한다.
개시하는 프로세서는, 컨디션 코드의 수에 제한되지 않고 조건 처리를 실행 하는 것이 가능하다. 또, 통상의 부동 소수점 연산시에 사용하는 판독 포트로 조건 데이터를 판독할 수 있고, 의존 관계의 검출도 부동 소수점 레지스터의 의존 관계 검출 회로를 사용할 수 있게 된다. 따라서, 하드웨어 비용을 억제하여 조건부 부동 소수점 스토어 명령을 실현할 수 있다.
이하, 도면을 참조하여 본 발명의 실시형태에 관해 설명한다. 본 발명의 실시형태로서 실시예를 이하에 설명하지만, 본 발명은 지금부터 설명하는 실시예에 한정되지 않고, 그 요지를 일탈하지 않는 범위에서 다양하게 응용이 가능한 것은 물론이다.
우선, 본 발명의 실시예의 개요를 설명한다.
본 실시예의 프로세서는, 서버 등의 정보 처리 장치에 설치된다. 정보 처리 장치에는, 각종 입출력 장치, 메모리, 디스크 장치 등의 장치가 프로세서와 버스를 통해 접속된다.
본 실시예의 프로세서는, 조건부 스토어 명령을 행할 때의 조건 데이터를 부동 소수점 레지스터에 저장한다. 조건 데이터를 생성하기 위한 부동 소수점 비교 연산 명령을 새롭게 정의하여, 그 결과(진위)를 부동 소수점 레지스터에 저장한다. 또, 복수의 조건의 AND나 OR을 수행하는 경우에도 대응하기 때문에, 조건 데이터를 저장하는 부동 소수점 레지스터 간의 AND, OR, XOR, NOT와 같은 비트 논리 연산 명령도 정의한다.
본 실시예의 프로세서는, 부동 소수점 레지스터에 저장되어 있는, 상기 부동 소수점 비교 연산 명령 또는 논리 연산 명령의 결과인 진위의 값에 기초하여 조건부 스토어 처리를 행한다. 이와 같이, 조건부 스토어 명령의 조건 데이터를 부동 소수점 레지스터에 저장하고, 그 부동 소수점 레지스터에 저장된 조건 데이터의 값(진위)에 기초하여 부동 소수점 스토어를 처리하는 명령을, 조건부 부동 소수점 스토어 명령으로 부르기로 한다.
마스크 레지스터와 같은 전용 레지스터를 준비하여 조건 데이터를 저장하는 명령 아키텍쳐의 경우는, 마스크 레지스터 간의 비교 연산 명령, 논리 연산 명령을 정의하고, 하드웨어로는, 부동 소수점 레지스터와는 별도로 마스크 레지스터용 레지스터 파일이나, 마스크 레지스터 전용의 의존 관계를 검출하는 회로가 필요해진다. 그러나, 본 실시예에서는, 부동 소수점 비교 연산 명령이나 부동 소수점 논리 연산 명령의 결과인 진위의 값을 부동 소수점 레지스터에 저장하므로, 부동 소수점 레지스터를 이용하는 것이 가능하고, 이에 따라 부동 소수점 데이터의 의존 관계 검출 회로를 사용할 수 있다. 즉, 새로운 하드웨어를 필요로 하지 않는다는 효과가 있다.
도 1에, 조건부 부동 소수점 스토어 명령시의 본 실시예의 프로세서의 동작의 개략을 나타낸다.
스토어 데이터는, 부동 소수점 레지스터(11)의 제1 피연산자(도 1의 「피연산자 0」에 대응)로부터 판독되어, 스토어 데이터 레지스터(14)에 저장된다. 또, 조건 데이터는, 부동 소수점 레지스터(11)의 제2 피연산자(도 1의 「피연산자 1」에 대응)로부터 판독된다. 연산기(13)에서는, 명령 제어부(12)로부터 보내지는 연 산 부호를 참조하여, 조건부 스토어 명령이면, 조건 데이터에 기초하여 스토어 인에이블 신호를 생성한다. 생성된 스토어 인에이블 신호는 스토어 인에이블 레지스터(15)에 저장된다. 캐시부(16)에서는, 스토어 인에이블 레지스터(15)의 값에 기초하여 스토어 데이터 레지스터(14)에 저장된 데이터가 저장된다.
스토어 명령에서는, 메모리 어드레스와 스토어 데이터를 캐시 메모리에 송출한다. 스토어 데이터를 부동 소수점 레지스터(11)로부터 판독하기 위해서는, 판독 포트가 하나 필요하다. 과학기술 계산에서 사용되는 부동 소수점 곱합 연산에서는 3개의 레지스터 데이터를 소스로 하기 때문에, 하나의 연산 파이프에 대해, 레지스터 파일은 3개의 판독 포트를 사용할 수 있는 구성이 되어 있다(도 23의 부동 소수점 레지스터와 연산기의 구성을 참조). 따라서, 실시예의 조건부 부동 소수점 스토어 명령에서는, 이 연산 파이프의 판독 포트를 2개 이용하여, 스토어 데이터와 동시에 조건 데이터를 판독한다. 이와 같이 이미 있는 부동 소수점 레지스터(11)의 3개의 판독 포트를 이용하는 것이 가능하여, 새로운 하드웨어를 필요로 하지 않는다.
또한, 부동 소수점 레지스터(11)를 SIMD 확장하는 명령 사양으로 한 경우에, 조건부 부동 소수점 스토어 명령을 처리하는 프로세서의 동작을 설명하는 도면을 도 2에 나타낸다.
이 경우도, 조건을 저장하는 레지스터, 즉 부동 소수점 레지스터(11)도 동시에 SIMD 확장되게 된다. 도 2는 SIMD의 요소가 2 요소인 경우를 나타내는 것이며, 각 요소의 구성은 도 1의 구성과 동일하다. 단, SIMD 조건부 스토어 명령의 경우, 명령 제어부(12)로부터 보내지는 연산 부호(operation code)는 각 요소의 연산기( 13-0, 13-1, … 13-N)에 각각 입력되게 된다.
SIMD의 각 요소에 대해 연산 파이프가 있고, 각각에 레지스터 파일의 판독 포트가 3개 준비된다(도 24의 SIMD 부동 소수점 레지스터와 연산기의 구성을 참조). 각각의 연산 파이프의 판독 포트를 2개 이용하고, 스토어 데이터와 동시에 조건 데이터를 판독하는 것은 도 1과 동일하다.
도 1 및 도 2에 나타낸 바와 같이, 본 실시예에서는, 부동 소수점 레지스터에 저장되어 있는 조건 데이터에 기초하여 스토어 처리를 행한다. 이와 같이 부동 소수점 레지스터에 조건 데이터를 저장하기 때문에, 본 실시예에서는 조건 코드의 수에 제한되지 않고, 조건부 스토어 명령을 실행할 수 있다. 특히, 부동 소수점 레지스터 영역을 확장하여, 많은 개수의 부동 소수점 레지스터를 구비하는 프로세서에서는, 보다 많은 조건을 사용하여 조건부 명령을 행하는 것이 가능해진다.
다음으로 도 3에 나타내는 프로세서를 참조하여, 본 실시예에 관해 더욱 상세히 설명한다.
프로세서는, 1차 명령 캐시(33), 2차 캐시/메모리부(34), 1차 데이터 캐시(32), 명령 디코드부(35), 연산 처리부(36), 어드레스 생성부(37), 커미트 제어(commitment control)부(38), 로드 처리부(39), 스토어 처리부(40), 고정 소수점 레지스터(31), 부동 소수점 레지스터(30)를 구비한다.
명령 디코드부(35)는 1차 명령 캐시(33) 등으로부터 판독한 명령을 디코드한다. 연산 처리부(36)는 연산 처리를 행하는 연산기 등으로 구성된다. 어드레스 생 성부(37)는 디코드된 명령으로부터 액세스할 어드레스를 생성한다. 로드 처리부(39)는 로드 명령을, 스토어 처리부(40)는 스토어 명령을 각각 처리하는 회로이다. 커미트 제어부(38)는 레지스터 갱신, 메모리 갱신을 제어한다.
본 실시예에서는, 조건부 부동 소수점 스토어 명령으로서, 참 조건일 때 스토어를 행하는 참 조건 부동 소수점 스토어 명령과, 거짓 조건일 때 스토어를 행하는 거짓 조건 부동 소수점 스토어 명령을 정의한다.
도 4에, 조건부 부동 소수점 스토어 명령의 명령 포맷을 나타낸다. 도 4의 예에서는, 조건부 부동 소수점 스토어 명령은, 명령 종류를 나타내는 연산 부호부(OPCODE[7:0])와, 메모리 어드레스 생성을 위한 고정 소수점 레지스터 어드레스를 지정하는 RS1(RS1[4:0]), 즉치(immediate) 지시 비트(I[0]), 부호 확장부 즉치 필드(SIGNED-IMMOP[7:0]), 스토어 데이터가 되는 부동 소수점 레지스터를 지정하는 RD 필드(RD[4:0]), 조건 데이터를 저장하는 부동 소수점 레지스터를 지정하는 RS2 필드([4:0])로 이루어진다.
메모리 어드레스는 즉치 지시 비트 I[0]=1일 때,
메모리 어드레스=RS1 데이터+부호 확장 IMM (8비트 즉치<<2)
로 구해진다.
또, 부동 소수점 스토어 데이터는 RD가 나타내는 부동 소수점 레지스터의 값이다.
또, 조건 데이터는 RS2가 나타내는 부동 소수점 레지스터의 최상위 비트, 즉 부호 비트이다.
이와 같이, 조건부 부동 소수점 스토어 명령으로 피연산자 2(RS2)의 레지스터를 조건 레지스터에 할당하기 때문에, 스토어하는 메모리 어드레스의 지정 방법은, 피연산자 1과 즉치 필드의 합으로 한다. 조건부 부동 소수점 스토어 명령은 스토어 데이터를, 단정밀도(single-precision) 부동 소수점 길이의 4바이트와, 배정밀도(double-precision) 부동 소수점 데이터 길이의 8바이트로 한정할 수 있기 때문에, 명령 연산 부호의 즉치 필드를 2비트 시프트하여 사용하도록 정의한다. 이에 따라 베이스 어드레스 RS 레지스터와 즉치 필드에 의한 디스프레스먼트(displacement)의 가산으로 광역 메모리 어드레스의 지정을 가능하게 한다.
다음으로, 도 5, 도 6, 도 7을 참조하여, 본 실시예에서의 조건 데이터를 생성하기 위한 부동 소수점 비교 연산 명령 및 부동 소수점 비트 논리 연산 명령의 정의를 나타낸다.
우선, 부동 소수점 비교 연산 명령으로서, fcompgt 명령, fcompge 명령, fcomplt 명령, fcomple 명령, fcompeq 명령, fcompne 명령을 정의한다. 이들 부동 소수점 연산 명령은 2개의 부동 소수점 레지스터치를 비교하여, 진위를 부동 소수점 레지스터에 반환하는 명령이다.
fcompgt 명령은 RS1>RS2이며 RD의 최상위 비트에 1을 응답한다.
fcompge 명령은 RS1≥RS2이며 RD의 최상위 비트에 1을 응답한다.
fcomplt 명령은 RS1<RS2이며 RD의 최상위 비트에 1을 응답한다.
fcomple 명령은 RS1≤RS2이며 RD의 최상위 비트에 1을 응답한다.
fcompeq 명령은 RS1=RS2이며 RD의 최상위 비트에 1을 응답한다.
fcompne 명령은 RS1≠RS2이며 RD의 최상위 비트에 1을 응답한다.
도 5에 부동 소수점 비교 연산 명령의 포맷을 나타낸다. 도 5에 나타낸 부동 소수점 비교 연산 명령은, 연산 부호부(OPCODE[7:0])와, RS1 필드(RS1[4:0])와, 부호 확장부 즉치 필드(SIGNED-IMMOP[8:0])와, RD 필드(RD[4:0])와, RS2 필드([4:0])를 가지며, 연산 부호(OPCODE 필드와 SUB-OPECODE 필드)로 fcompgt 명령이나 fcompge 명령 등의 종류를 구별한다. 도 6에, 부동 소수점 비교 연산 명령 처리를 설명하는 도면을 나타낸다. 부동 소수점 비교 연산기(63)는, 부동 소수점 레지스터(61)로부터의 피연산자 0(RS1) 및 피연산자 1(RS2)의 값을 비교하고, 결과를 연산 결과 레지스터(64)에 저장하여 RD에 기록한다. 본 실시예에서는, 피연산자의 비교 결과가 참일 때에는, RD의 최상위 비트를 포함한 모든 비트를 1로 셋팅하고, 거짓일 때에는 RD의 최상위 비트를 포함한 모든 비트를 0으로 셋팅하는 구성으로 한다.
또한 if문의 조건이 복수의 비교의 AND나 OR 등 복수개 있는 경우는, 상기에서 얻은 조건 데이터의 비트의 AND, OR, NOT, XOR이 필요해진다. 이 때문에 RS1의 데이터와 RS2의 데이터의 비트를 논리 연산하고, 결과를 RD에 기록하는 부동 소수점 비트 논리 연산 명령 fand 명령, for 명령, fnot 명령, fxor 명령을 정의한다. 부동 소수점 비트 논리 연산 명령의 명령 포맷은 도 5와 동일하다. 도 7에 부동 소수점 비트 논리 연산 명령 처리를 설명하는 도면을 나타낸다. 부동 소수점 비트 논리 연산기(73)는, 피연산자 0(RS1) 및 피연산자 1(RS2)의 값을 비교하고, 결과를 연산 결과 레지스터(74)에 저장하여 RD에 기록한다. 부동 소수점 비교 연산 명령과 마찬가지로, 피연산자의 비교 결과가 참일 때에는, RD의 최상위 비트를 포함한 모든 비트를 1로 셋팅하고, 거짓일 때에는 RD의 최상위 비트를 포함함 모든 비트를 0으로 셋팅하는 구성이다.
상술한 부동 소수점 비교 연산 명령, 부동 소수점 비트 논리 연산 명령은, 배정밀도 부동 소수점(8바이트)과 단정밀도 부동 소수점(4바이트)에 관해 각각 정의한다. 연산 부호로 단정밀도 부동 소수점 명령인지 배정밀도 부동 소수점 명령인지를 구별한다.
이상, 본 실시예에서의 명령 포맷, 부동 소수점 비교 연산 명령, 부동 소수점 논리 연산 명령의 정의에 관해 설명했다. 다음으로 스토어 처리에 관해 상세히 설명한다.
우선, 조건부가 아닌 부동 소수점 스토어 명령에 관해 설명한다. 조건부가 아닌 부동 소수점 스토어 명령을 비조건부 부동 소수점 스토어 명령으로 부르기로 한다. 비조건부 부동 소수점 스토어 명령의 명령 포맷을 도 8에 나타낸다.
명령 포맷은, 우선 스토어 명령인 것을 나타내는 연산 부호부(OPCODE[70])를 갖는다. 또, 메모리 어드레스를 계산하기 위해, 즉치 피연산자를 사용할지 아닐지를 나타내는 즉치 지정 비트(I[0])를 구비한다. I[0]=0일 때에는 고정 소수점 레지스터 어드레스를 지정하기 위한 RS1과 RS2의 가산 결과를 메모리 어드레스로 한다. 이 경우, 스토어 명령에는 8비트의 공백 필드가 존재한다. I[0]=1일 때에는 RS1과 부호 확장부 즉치 필드(SIGNED-IMMOP) 13비트와의 가산 결과를 메모리 어드레스로 한다. 또한 스토어 데이터가 되는 부동 소수점 레지스터를 지정하는 RD 필드로 이 루어진다.
도 9에 스토어 명령의 처리의 설명을 나타낸다.
우선, 명령 디코드부(93)에서 명령이 디코드되고, 그 결과가 메모리 어드레스 생성 파이프라인(94)을 통해 1차 데이터 캐시(98) 내의 스토어 버퍼(95)의 연산 부호 필드에 저장된다.
비조건부 부동 소수점 스토어 명령에서는, RS1과 RS2, 또는 RS1과 부호 확장부 즉치 필드 13비트와의 합을 생성하는 어드레스 생성 파이프라인(94)을 통해, 스토어하는 메모리 어드레스를 스토어 명령을 제어하는 캐시부(98)에 보낸다. 메모리 어드레스는, 1차 데이터 캐시부(98) 내의 스토어 버퍼(95)의 메모리 어드레스 필드에 저장된다. 조건 데이터는, 부동 소수점 레지스터(91)로부터 부동 소수점 연산기 파이프라인(92)을 통해 1차 데이터 캐시부(98) 내의 스토어 버퍼(95)의 스토어 인에이블 필드에 저장된다. 스토어하는 부동 소수점 데이터는 부동 소수점 연산기 파이프라인(92)을 통해 캐시부(98)에 보내진다. 조건부 부동 소수점 스토어 명령에서는, RS1과 부호 확장부 즉치 필드 8비트와의 합을 생성하는 어드레스 생성 연산 파이프라인(94)을 통해, 스토어하는 메모리 어드레스를 스토어 명령을 제어하는 캐시부(98)에 보낸다. 조건부 부동 소수점 스토어 명령에서는 스토어 데이터가 부동 소수점 데이터이기 때문에, 단정밀도 부동 소수점 데이터의 4바이트나 배정밀도 부동 소수점 데이터의 8바이트의 데이터로 데이터 길이를 한정할 수 있다. 도 10에 나타낸 바와 같이, 명령 디코드의 결과, 명령이 조건부 부동 소수점 스토어 명령이라고 판별된 경우, 명령 연산 부호의 부호 확장부 즉치 필드를 2비트 좌측 시프트(도 10 의 「'SSSS'IMMOP[6:0]'00'」)하여 사용하도록 정의함으로써, 상위 메모리 어드레스의 지정을 가능하게 한다. 부호 확장부 즉치 필드의 시프트는, 명령 디코드의 시점에서 조건부 부동 소수점 스토어 명령인 것을 판별했을 때, 도 10의 「SIGNED-IMMOP[7:0]」→「'S'IMMOP[6:0]」→「'SSSS'IMMOP[6:0]'00'」와 같이 2비트 좌측 시프트를 행한다. 부호 확장부 즉치 필드의 최상위 비트 S는 부호 비트로서, RS1와 가산될 때 부호 확장이 이루어진다.
또, 스토어하는 부동 소수점 데이터와, 부동 소수점 레지스터에 있는 조건 데이터는 다음과 같은 방식으로 캐시부(98)에 송출된다. 부동 소수점 연산기는, 입력 레지스터로서 3소스 피연산자의 판독 포트가 있다(도 23 참조). 비조건부 부동 소수점 스토어 명령에서는, 제1 피연산자의 판독 포트를 사용하여, 스토어 데이터를 부동 소수점 레지스터(91)로부터 판독하고, 일단 연산기[부동 소수점 연산기 파이프라인(92)]를 통해 캐시부(98)에 송출한다. 조건부 부동 소수점 스토어의 경우는, 조건을 저장하는 부동 소수점 레지스터를 제2 피연산자로부터 판독한다. 연산기에서는, 명령 디코드부(93)로부터 받은 명령의 연산 부호를 참조하여, 명령이 참 조건부 부동 소수점 스토어이면 제2 피연산자의 최상위 비트가 1일 때 스토어 인에이블 신호를 1로 하여, 스토어 데이터와 동일한 사이클로 캐시부(98)에 송출한다. 명령의 연산 부호가 거짓 조건부 부동 소수점 스토어이면, 제2 피연산자의 최상위 비트가 0일 때, 스토어 인에이블 신호를 1로 하여, 역시 스토어 데이터와 동일한 사이클로 캐시부(98)에 송출한다. 도 11에, 참 조건부 부동 소수점 스토어 명령 또는 거짓 조건부 부동 소수점 스토어 명령에 대해 스토어 인에이블 신호를 생성하는 회로를 나타낸다. 도 11의 회로는 도 9의 부동 소수점 연산 파이프(92)에 포함되는 회로이다.
도 11에 있어서, 연산 부호 해독 회로(110)에 의해 해독된 연산 부호가 출력된다. 참 조건부 스토어 명령의 경우에는 AND 회로(111)에 출력되고, 또 거짓 조건부 스토어 명령의 경우에는 AND 회로(112)에 출력된다. 또, 조건 데이터(제2 피연산자의 최상위 비트)는 AND 회로(111)에는 그대로 입력되고, 또 AND 회로(112)에는 반전하여 입력된다. 그리고 AND 회로(111 또는 112)의 결과가 OR 회로(113)에 입력되어, 스토어 인에이블 신호가 생성된다. 이와 같이, 연산 부호와 제2 피연산자의 최상위 비트에 의해 스토어 인에이블 신호가 생성된다.
또, 도 12에 SIMD 조건부 부동 소수점 스토어 명령의 처리의 설명을 나타낸다. SIMD 조건부 부동 소수점 스토어 명령일 때에는, 각 요소에 대응한 연산 파이프가 스토어 데이터와 스토어 인에이블 신호를 동시에 캐시부(98)에 송출한다.
도 13에 일반적인 부동 소수점 데이터의 포맷을 나타낸다. 단정밀도 부동 소수점 데이터의 데이터 포맷은, [31]에서 부호를, [30:23]에 지수(exponent)를, [22:0]에 가수(mantissa)를 나타내는 구성으로 되어 있다. 또, 배정밀도 부동 소수점 데이터의 데이터 포맷은, [63]에서 부호를, [62:52]에 지수를, [51:0]에 가수를 나타내는 구성으로 되어 있다. 조건 데이터를 부동 소수점 레지스터의 최상위 비트, 즉 도 13에 나타낸 부호 비트로 함으로써, 어떤 부동 소수점 데이터가 포지티브인지 네거티브인지의 여부만이 조건인 경우는, 비교 연산 명령을 실행하지 않고, 그 데이터를 저장하는 레지스터 그 자체를 조건 데이터로서 사용하여 조건부 부동 소수점 스토어 명령을 실행하는 것이 가능하다.
도 9의 캐시부(98)의 스토어 버퍼(95)는, 어드레스 파이프로부터 어드레스나 연산 부호 등 필요한 정보를 수취하고, 또 스토어 데이터의 파이프라인으로부터 스토어 데이터와 스토어 인에이블 신호를 수취한다. 또, 도 12에 나타낸 바와 같이, SIMD 조건부 부동 소수점 스토어 명령일 때에는, 캐시부(98)의 스토어 버퍼(95)는 각 요소에 대해 스토어 데이터와 스토어 인에이블 신호를 수취한다.
한편, 도 9 및 도 12에 있어서, 커미트 제어부(96)는, 캐시부(98)로부터 그 메모리 어드레스에 대해 트랩 등이 없는 것의 보고「처리 완료 통지」를 받고, 또한 연산기(92)로부터 스토어 데이터를 캐시부(98)에 송출한 것의 보고를 수취하여, 프로그램 순서에 따라 명령 확정(커미트)을 행한다. 커미트시에는, 비조건부 스토어 명령과 마찬가지로 스토어 커미트라는 스토어 데이터를 캐시에 기록하는 지시 신호를 스토어 버퍼(95)에 보낸다. 커미트 제어부(96)에서는, 비조건부 스토어 명령인지 조건부 스토어 명령인지, 또는 SIMD인지 아닌지를 구별하지 않는다.
도 9의 스토어 버퍼(95)에서는, 스토어 커미트를 수취했을 때, 대응하는 요청이 조건부 스토어 명령이면, 스토어 인에이블 신호의 유무를 참조하여, 스토어 인에이블이 "1"일 때, 유지하고 있는 스토어 데이터를 캐시에 스토어한다. 비조건부 스토어 명령이면, 스토어 인에이블 신호에 관계없이, 유지하고 있는 스토어 데이터를 캐시에 스토어한다.
또, 도 12의 스토어 버퍼(95)에서는, 스토어 커미트를 수취한 포트의 요청이 SIMD일 때, 조건부 스토어 명령이면, 각각의 요소의 스토어 인에이블 신호의 유무 를 참조하여, 스토어 인에이블이 "1"인 요소의 스토어 데이터를 캐시에 스토어한다. 비조건부 스토어 명령이면, 각각의 요소의 스토어 인에이블 신호에 관계없이, 유지하고 있는 스토어 데이터를 캐시에 스토어한다.
다음으로 스토어 명령 처리에서의, 스토어 데이터의 바이패스 처리에 관해 설명한다.
비조건부 스토어에서는, 스토어 명령과 동일한 어드레스에 대한 후속의 로드 요청을 수취했을 때, 스토어 버퍼에서 어드레스를 비교한다. 어드레스가 일치하지 않는 경우는, 1차 데이터 캐시로부터 데이터를 판독하여 레지스터부에 응답하고, 어드레스가 일치한 경우는 스토어 데이터를 캐시부에 기록하기 전에 스토어 데이터를 유지하는 스토어 데이터 버퍼로부터 바이패스하여, 로드 데이터를 레지스터부에 응답한다.
그러나, 조건부 스토어에 관해서는, 그 데이터를 캐시에 기록할지 아닌지가 스토어 인에이블 비트에 따라 상이하다. 로드 어드레스가 조건부 스토어와 일치한 경우에, 스토어 데이터 및 스토어 인에이블 신호가 스토어 데이터 버퍼에 셋팅될 때까지 대기하고, 이들이 셋팅된 후, 스토어 인에이블이 "1"일 때에는, 스토어 데이터를 바이패스하며, 스토어 인에이블이 "0"일 때에는 스토어 데이터를 바이패스하지 않고, 캐시부로부터 데이터를 판독하여 레지스터부에 응답한다.
도 14에 스토어 데이터의 바이패스 처리에 관한 흐름을 나타낸다.
우선, S1에서, 스토어 버퍼의 메모리 어드레스를 후속의 로드 요청 어드레스와 비교하여, 일치하는 경우에는 S2로 진행한다. 일치하지 않는 경우에는 S5로 진 행하여, 1차 데이터 캐시의 데이터를 로드 데이터로서 응답한다.
S2에서, 스토어 버퍼의 연산 부호가 조건부 스토어 명령인지 아닌지를 판단한다. 연산 부호가 조건부 스토어 명령이면(Yes) S3으로 진행하고, 연산 부호가 비조건부 스토어 명령이면(No) S4로 진행하여, 스토어 버퍼의 데이터를 로드 데이터로서 바이패스한다. S2로부터 S3으로 진행한 경우, 스토어 버퍼의 스토어 인에이블이 "1"인지 아닌지를 판단하여, 1이면(Yes) S4로 진행하고 스토어 버퍼의 데이터를 로드 데이터로서 바이패스한다. 스토어 인에이블이 "1"이 아니면(No) S5로 진행하여 바이패스하지 않고 1차 데이터 캐시의 데이터를 로드 데이터로서 응답한다.
SIMD 조건부 스토어에 관해서는, SIMD 요소마다 그 데이터를 캐시에 기록하는지 아닌지가 스토어 인에이블에 따라 상이하다. 그 때문에, 후속의 로드 요청과 SIMD 조건부 스토어의 어드레스가 일치한 경우에, 스토어 데이터 및 스토어 인에이블 신호가 스토어 데이터 버퍼에 셋팅될 때까지 대기하고, 이들이 셋팅된 후, 해당하는 요소에 대해 스토어 인에이블이 "1"일 때에는 스토어 데이터를 바이패스하고, 스토어 인에이블이 "0"일 때에는 스토어 데이터의 바이패스를 행하지 않고, 캐시부로부터 데이터를 판독하여 레지스터부에 응답한다. SIMD 조건부 스토어의 흐름은 도 14와 동일하기 때문에 여기서는 생략한다.
이상 본 발명의 실시예에 관해 설명했지만, 상술한 조건부 부동 소수점 스토어 명령, 부동 소수점 비교 연산 명령, 부동 소수점 논리 연산 명령, 각각의 SIMD 명령에 대해서는, 배정밀도 부동 소수점 및 단정밀도 부동 소수점 쌍방에 대해 정의하여 처리하는 것으로 한다.
이상, 본 발명의 실시예에 관해 상세히 설명했지만, 상술한 프로세서는 조건 데이터를 부동 소수점 레지스터에 저장하고, 그 조건 데이터에 기초하여 스토어 데이터를 캐시에 스토어할지 아닐지를 판정하는 조건부 부동 소수점 스토어 명령을 연산부가 실행하는 것이다. 즉, 조건부 부동 소수점 스토어 명령에 관해, 조건 데이터를 저장하기 위한 전용 마스크 레지스터를 설치하지 않고, 부동 소수점 레지스터에 조건 데이터를 저장하도록 명령을 정의했다. 이에 따라, 통상의 부동 소수점 연산시에 사용하는 판독 포트로 조건 데이터를 판독할 수 있으며, 의존 관계의 검출도 부동 소수점 레지스터의 의존 관계 검출 회로를 사용하는 것이 가능해지고, 하드웨어의 관점에서 볼 때 저비용으로 조건부 부동 소수점 스토어 명령의 실장이 가능하다. 또, 조건 데이터를 부동 소수점 레지스터에 저장하기 때문에, 조건 데이터의 수도 컨디션 코드의 수의 제한을 받지 않고 한층 더 컴파일러의 최적화가 가능해진다. 또, 부동 소수점 레지스터의 SIMD 확장이 이루어짐으로써, 조건부 부동 소수점 스토어 명령의 SIMD화도 용이하게 이루어질 수 있다.
조건부 스토어 명령에 관해서는, 프로그램에 의해 고정 소수점 데이터의 조건에 따라 고정 소수점 데이터나 부동 소수점 데이터를 스토어할지 아닐지를 판단하는 것, 또는 부동 소수점 데이터의 조건에 따라 고정 소수점 데이터를 스토어할지 아닐지를 판단하는 것도 있다. 그러나, 과학기술 계산분야에서 사용되는 슈퍼컴퓨터 등에서는 부동 소수점 데이터를 취급하는 것이 많아, 상술한 본 발명에 의해 하드웨어의 회로량과 컴파일러에 의한 최적화의 관점에서 큰 효과를 얻을 수 있다고 생각한다.
도 1은 조건부 부동 소수점 스토어 명령시의 프로세서의 동작을 설명하는 도면이다.
도 2는 SIMD 조건부 부동 소수점 스토어 명령시의 프로세서의 동작을 설명하는 도면이다.
도 3은 프로세서의 구성(개략)을 나타내는 도면이다.
도 4는 조건부 부동 소수점 스토어 명령 포맷을 나타내는 도면이다.
도 5는 부동 소수점 비교 연산 명령 및 부동 소수점 비트 논리 연산 명령의 포맷을 나타내는 도면이다.
도 6은 부동 소수점 비교 연산 명령의 처리를 설명하는 도면이다.
도 7은 부동 소수점 비트 논리 연산 명령의 처리를 설명하는 도면이다.
도 8은 비조건부 부동 소수점 스토어 명령 포맷을 나타내는 도면이다.
도 9는 스토어 처리를 설명하는 도면이다.
도 10은 조건부 부동 소수점 스토어 명령의 즉치 필드의 처리를 설명하는 도면이다.
도 11은 스토어 인에이블 신호의 생성 회로를 나타내는 도면이다.
도 12는 SIMD 스토어 처리를 설명하는 도면이다.
도 13은 부동 소수점 데이터 포맷을 나타내는 도면이다.
도 14는 스토어 데이터의 바이패스 처리의 흐름을 나타내는 도면이다.
도 15는 소프트웨어 파이프라이닝의 개념도를 나타내는 도면이다.
도 16은 조건 분기 명령이 있을 때의 소프트웨어 파이프라이닝의 개념도를 나타내는 도면이다.
도 17은 조건 분기 명령과 조건부 명령을 설명하는 도면이다.
도 18은 조건부 명령이 있을 때의 소프트웨어 파이프라이닝의 개념도를 나타내는 도면이다.
도 19는 조건부 이동 명령으로 조건부 스토어 명령를 대용했을 때의 플로우를 나타내는 도면이다.
도 20은 멀티 코어로 병렬 처리를 할 때, 조건부 이동 명령으로 조건부 스토어 명령을 대용할 때 발생하는 문제점을 설명하는 도면이다.
도 21은 조건부 스토어 명령을 설명하는 도면이다.
도 22는 조건 데이터가 최대 2개일 때의 조건부 명령에 의한 소프트웨어 파이프라이닝 개념도를 나타내는 도면이다.
도 23은 부동 소수점 레지스터와 연산기의 구성을 나타내는 도면이다.
도 24는 SIMD 부동 소수점 레지스터와 연산기의 구성을 나타내는 도면이다.
(부호의 설명)
11 : 부동 소수점 레지스터 12 : 명령 제어부
13 : 연산기 14 : 스토어 데이터 레지스터
15 : 스토어 인에이블 레지스터 16 : 캐시부
30 : 부동 소수점 레지스터 31 : 고정 소수점 레지스터
32 : 1차 데이터 캐시 33 : 1차 명령 캐시
34 : 2차 캐시/메모리부 35 : 명령 디코드부
36 : 연산 처리부 37 : 어드레스 생성부
38 : 커미트 제어부 39 : 로드 처리부
40 : 스토어 처리부 61 : 부동 소수점 레지스터
62 : 명령 제어부 63 : 부동 소수점 비교 연산기
64 : 연산 결과 레지스터 71 : 부동 소수점 레지스터
72 : 명령 제어부 73 : 부동 소수점 비트 논리 연산기
74 : 연산 결과 레지스터 91 : 부동 소수점 레지스터
92 : 부동 소수점 연산 파이프 93 : 명령 디코드부
94 : 메모리 어드레스 생성 파이프 95 : 스토어 버퍼
96 : 커미트 제어부 97 : 1차 데이터 캐시
98 : 캐시부 110 : 연산 부호 해독 회로
111 : AND 회로 112 : AND 회로
113 : OR 회로

Claims (11)

  1. 조건 데이터를 저장하는 부동 소수점 레지스터와,
    상기 부동 소수점 레지스터에 저장된 조건 데이터에 기초하여, 스토어 데이터를 메모리에 저장할지 아닐지를 판정하는 조건부 부동 소수점 스토어 명령을 실행하는 연산부
    를 구비하는 것을 특징으로 하는 프로세서.
  2. 제1항에 있어서, 상기 부동 소수점 레지스터의 최상위 비트에 상기 조건 데이터를 저장하는 것을 특징으로 하는 프로세서.
  3. 제2항에 있어서, 상기 연산부는 2개의 부동 소수점 레지스터의 값을 비교하여, 그 진위의 결과를 조건 데이터로서 부동 소수점 레지스터의 최상위 비트에 저장하는 부동 소수점 비교 연산 명령을 실행하는 것을 특징으로 하는 프로세서.
  4. 제2항에 있어서, 상기 연산부는 복수의 상기 조건 데이터 간의 비트 논리 연산 명령을 실행하는 것을 특징으로 하는 프로세서.
  5. 제1항 내지 제4항 중 어느 한 항에 있어서, 상기 조건부 부동 소수점 스토어 명령은, 조건 데이터가 참일 때 메모리에 기록하는 참 조건부 부동 소수점 스토어 명령, 또는 조건 데이터가 거짓일 때 메모리에 기록하는 거짓 조건부 부동 소수점 스토어 명령 중 어느 하나인 것을 특징으로 하는 프로세서.
  6. 제1항에 있어서, 상기 부동 소수점 레지스터의 즉치(immediate) 필드를 수 비트 시프트하여 즉치 데이터를 생성하고, 그 즉치 데이터를 사용하여 어드레스를 생성하는 어드레스 생성부를 더 구비하는 것을 특징으로 하는 프로세서.
  7. 제1항에 있어서, 명령을 확정하는 커미트 제어부를 더 구비하고,
    상기 조건부 부동 소수점 스토어 명령이 그 커미트 제어부에 의해 커미트되기 전에, 프로그램 상 후속의 로드 명령이 동일한 메모리 어드레스에 발행된 경우, 스토어 조건이 성립할 때에는 스토어 데이터를 로드 데이터로서 레지스터부에 응답하고, 스토어 조건이 성립하지 않을 때에는 캐시부로부터 로드 데이터를 레지스터에 응답하는 것을 특징으로 하는 프로세서.
  8. SIMD 구성의 부동 소수점 레지스터를 구비하는 프로세서로서,
    조건 데이터를 저장하는, 상기 SIMD의 각 요소의 부동 소수점 레지스터와,
    상기 부동 소수점 레지스터에 저장된 조건 데이터에 기초하여, 각 요소의 스토어 데이터를 메모리에 저장할지 아닐지를 판정하는 조건부 부동 소수점 스토어 명령을 실행하는 연산부
    를 구비하는 것을 특징으로 하는 프로세서.
  9. 프로세서에서 조건부 스토어 명령을 실행하기 위한 방법으로서,
    조건 데이터를 부동 소수점 레지스터에 저장하는 단계와,
    상기 부동 소수점 레지스터에 저장된 조건 데이터에 기초하여 스토어 데이터를 메모리에 스토어할지 아닐지를 판정하는 단계
    를 포함하는 것을 특징으로 하는 방법.
  10. SIMD 구성의 부동 소수점 레지스터를 구비하는 프로세서에서 조건부 스토어 명령을 실행하기 위한 방법으로서,
    조건 데이터를 상기 SIMD의 각 요소의 부동 소수점 레지스터에 저장하는 단계와,
    상기 부동 소수점 레지스터에 저장된 조건 데이터에 기초하여, 각 요소의 스토어 데이터를 메모리에 저장할지 아닐지를 판정하는 단계
    를 포함하는 것을 특징으로 하는 방법.
  11. 프로세서를 갖는 정보 처리 장치에 있어서,
    상기 프로세서는,
    조건 데이터를 저장하는 부동 소수점 레지스터와,
    상기 부동 소수점 레지스터에 저장된 조건 데이터에 기초하여, 스토어 데이터를 메모리에 저장할지 아닐지를 판정하는 조건부 부동 소수점 스토어 명령을 실행하는 연산부
    를 구비하는 것을 특징으로 하는 정보 처리 장치.
KR1020080114556A 2008-03-21 2008-11-18 프로세서 및 정보 처리 장치 KR101016257B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JPJP-P-2008-073433 2008-03-21
JP2008073433A JP5326314B2 (ja) 2008-03-21 2008-03-21 プロセサおよび情報処理装置

Publications (2)

Publication Number Publication Date
KR20090101061A true KR20090101061A (ko) 2009-09-24
KR101016257B1 KR101016257B1 (ko) 2011-02-25

Family

ID=40193707

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020080114556A KR101016257B1 (ko) 2008-03-21 2008-11-18 프로세서 및 정보 처리 장치

Country Status (5)

Country Link
US (1) US7945766B2 (ko)
EP (1) EP2104032B1 (ko)
JP (1) JP5326314B2 (ko)
KR (1) KR101016257B1 (ko)
CN (1) CN101539852B (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150008484A (ko) * 2012-05-16 2015-01-22 퀄컴 인코포레이티드 명령 프로세싱 회로들, 및 관련 프로세서 시스템들, 방법들 및 컴퓨터―판독 가능 매체들에서 반대 컨디션들을 갖는 조건부 기록 명령들의 융합

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8418154B2 (en) * 2009-02-10 2013-04-09 International Business Machines Corporation Fast vector masking algorithm for conditional data selection in SIMD architectures
KR101949417B1 (ko) 2011-12-02 2019-02-20 삼성전자주식회사 프로세서, 명령어 생성 장치 및 방법
US9459864B2 (en) * 2012-03-15 2016-10-04 International Business Machines Corporation Vector string range compare
US9038042B2 (en) * 2012-06-29 2015-05-19 Analog Devices, Inc. Staged loop instructions
JP6435980B2 (ja) * 2015-04-27 2018-12-12 富士通株式会社 並列計算機、スレッド再割当判定方法及びスレッド再割当判定プログラム
CN107301031B (zh) * 2017-06-15 2020-08-04 西安微电子技术研究所 一种规格化浮点数据筛选电路

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0185215B1 (en) 1984-11-21 1993-09-22 Harris Corporation Forth-like language microprocessor
JPH01106174A (ja) * 1987-10-20 1989-04-24 Fujitsu Ltd 演算パイプライン制御方式
US5442289A (en) 1989-07-31 1995-08-15 Biomagnetic Technologies, Inc. Biomagnetometer having flexible sensor
EP0871108B1 (en) 1991-03-11 2000-09-13 MIPS Technologies, Inc. Backward-compatible computer architecture with extended word size and address space
EP0815507B1 (en) 1995-02-14 2013-06-12 Fujitsu Limited Structure and method for high-performance speculative execution processor providing special features
US6112019A (en) * 1995-06-12 2000-08-29 Georgia Tech Research Corp. Distributed instruction queue
US5889984A (en) * 1996-08-19 1999-03-30 Intel Corporation Floating point and integer condition compatibility for conditional branches and conditional moves
JP3547585B2 (ja) * 1997-05-14 2004-07-28 三菱電機株式会社 条件実行命令を有するマイクロプロセッサ
JPH1173314A (ja) 1997-06-20 1999-03-16 Sony Corp マイクロプロセッサ
JP3570188B2 (ja) 1997-12-25 2004-09-29 富士通株式会社 可変長符号処理機構を有するデータ処理装置
US6671762B1 (en) 1997-12-29 2003-12-30 Stmicroelectronics, Inc. System and method of saving and restoring registers in a data processing system
US6049860A (en) * 1998-02-19 2000-04-11 International Business Machines Corporation Pipelined floating point stores
US6353883B1 (en) * 1998-08-04 2002-03-05 Intel Corporation Method and apparatus for performing predicate prediction
US6742111B2 (en) 1998-08-31 2004-05-25 Stmicroelectronics, Inc. Reservation stations to increase instruction level parallelism
US6714197B1 (en) * 1999-07-30 2004-03-30 Mips Technologies, Inc. Processor having an arithmetic extension of an instruction set architecture
US6393555B1 (en) * 1999-08-05 2002-05-21 Advanced Micro Devices, Inc. Rapid execution of FCMOV following FCOMI by storing comparison result in temporary register in floating point unit
US6513109B1 (en) * 1999-08-31 2003-01-28 International Business Machines Corporation Method and apparatus for implementing execution predicates in a computer processing system
US6425074B1 (en) * 1999-09-10 2002-07-23 Advanced Micro Devices, Inc. Method and apparatus for rapid execution of FCOM and FSTSW
US6687789B1 (en) 2000-01-03 2004-02-03 Advanced Micro Devices, Inc. Cache which provides partial tags from non-predicted ways to direct search if way prediction misses
WO2001067273A2 (en) * 2000-03-08 2001-09-13 Sun Microsystems, Inc. Vliw computer processing architecture with on-chip dynamic ram
JP2002082800A (ja) * 2000-09-06 2002-03-22 Sanyo Electric Co Ltd プログラム実行装置及び方法
US20030196076A1 (en) 2001-07-02 2003-10-16 Globespan Virata Incorporated Communications system using rings architecture
US7143126B2 (en) * 2003-06-26 2006-11-28 International Business Machines Corporation Method and apparatus for implementing power of two floating point estimation
JP3705367B2 (ja) * 2004-05-24 2005-10-12 株式会社日立製作所 命令処理方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150008484A (ko) * 2012-05-16 2015-01-22 퀄컴 인코포레이티드 명령 프로세싱 회로들, 및 관련 프로세서 시스템들, 방법들 및 컴퓨터―판독 가능 매체들에서 반대 컨디션들을 갖는 조건부 기록 명령들의 융합

Also Published As

Publication number Publication date
EP2104032B1 (en) 2012-01-11
EP2104032A1 (en) 2009-09-23
CN101539852B (zh) 2013-01-23
JP2009230338A (ja) 2009-10-08
JP5326314B2 (ja) 2013-10-30
CN101539852A (zh) 2009-09-23
US20090240927A1 (en) 2009-09-24
US7945766B2 (en) 2011-05-17
KR101016257B1 (ko) 2011-02-25

Similar Documents

Publication Publication Date Title
KR102413832B1 (ko) 벡터 곱셈 덧셈 명령
KR100900364B1 (ko) 인스트럭션 실행 디바이스, 인스트럭션 실행 방법 및 컴퓨터 판독가능 메모리 매체
CN101965554B (zh) 选择性地提交已执行指令的结果的系统和方法
US9575753B2 (en) SIMD compare instruction using permute logic for distributed register files
KR100571322B1 (ko) 파이프라인식 프로세서에서의 예외 취급 방법, 장치 및시스템
KR102256188B1 (ko) 데이터 처리장치 및 벡터 오퍼랜드를 처리하는 방법
KR101016257B1 (ko) 프로세서 및 정보 처리 장치
CN107851019B (zh) 用于执行叠接操作的设备和方法
KR20100032441A (ko) 조건부 명령을 비조건부 명령 및 선택 명령으로 확장하기 위한 방법 및 시스템
JP2834292B2 (ja) データ・プロセッサ
JPH09311786A (ja) データ処理装置
JP3449186B2 (ja) パイプラインバイパス機能を有するデータ処理装置
US9965275B2 (en) Element size increasing instruction
KR20060029614A (ko) 오퍼랜드 의존성으로 인한 기능 정지를 감소시키는 방법 및데이터 프로세서
KR100986375B1 (ko) 피연산자의 빠른 조건부 선택
US11803388B2 (en) Apparatus and method for predicting source operand values and optimized processing of instructions
CN115576608A (zh) 处理器核、处理器、芯片、控制设备和指令融合方法
US7406587B1 (en) Method and system for renaming registers in a microprocessor
JP4771079B2 (ja) Vliw型プロセッサ
US6079011A (en) Apparatus for executing a load instruction or exchange instruction in parallel with other instructions in a dual pipelined processor
US10331449B2 (en) Encoding instructions identifying first and second architectural register numbers
US20230315446A1 (en) Arithmetic processing apparatus and method for arithmetic processing
JPH1196001A (ja) プログラム実行装置及びプログラム変換方法

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
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: 20140117

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20150119

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20160119

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20170119

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20180118

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20190116

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20200115

Year of fee payment: 10