KR20010080367A - 제어 프로그램 제품 및 데이터 처리장치 - Google Patents

제어 프로그램 제품 및 데이터 처리장치 Download PDF

Info

Publication number
KR20010080367A
KR20010080367A KR1020017005453A KR20017005453A KR20010080367A KR 20010080367 A KR20010080367 A KR 20010080367A KR 1020017005453 A KR1020017005453 A KR 1020017005453A KR 20017005453 A KR20017005453 A KR 20017005453A KR 20010080367 A KR20010080367 A KR 20010080367A
Authority
KR
South Korea
Prior art keywords
processing
data
execution
field
processing unit
Prior art date
Application number
KR1020017005453A
Other languages
English (en)
Other versions
KR100491593B1 (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 KR20010080367A publication Critical patent/KR20010080367A/ko
Application granted granted Critical
Publication of KR100491593B1 publication Critical patent/KR100491593B1/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
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • 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/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • 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/30181Instruction operation extension or modification
    • 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
    • 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/3893Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
    • G06F9/3895Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros
    • G06F9/3897Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros with adaptable data path

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)
  • Stored Programmes (AREA)
  • Executing Machine-Instructions (AREA)
  • Debugging And Monitoring (AREA)
  • Communication Control (AREA)
  • Circuits Of Receivers In General (AREA)
  • Image Processing (AREA)
  • Saccharide Compounds (AREA)
  • Eye Examination Apparatus (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)
  • Facsimiles In General (AREA)
  • Vehicle Body Suspensions (AREA)
  • Steering Control In Accordance With Driving Conditions (AREA)
  • Input Circuits Of Receivers And Coupling Of Receivers And Audio Equipment (AREA)

Abstract

데이터 처리장치를 구성하는 적어도 하나의 처리유닛에서 실행되는 연산 또는 다른 데이터 처리내용을 지시하는 실행명령을 기술할 수 있는 제 1 필드와, 실행명령에서 실행되는 연산 또는 다른 데이터 처리가 실행될 수 있는 상태로 처리유닛을 설정하는 준비정보를 기술할 수 있는 제 2 필드를 구비한 명령세트를 준비하고, 제 1 필드에 기술된 실행명령의 내용에 대해 독립된 내용의 준비정보가 제 2 필드에 기술된 명령세트를 포함하는 제어 프로그램을 제공한다. 따라서, 준비정보에 의해, 후속의 실행명령의 실행준비가 가능하게 되어, 예컨대 분기명령에 있어, 분기 수신지를 제 2 필드에 기술하여, 사전에 분기 수신지를 알 수 있는 등, 종래 명령세트로는 해결할 수 없었던 문제를 해결할 수 있다.

Description

제어 프로그램 제품 및 데이터 처리장치{DATA PROCESSOR}
범용적인 처리 및 전용적인 디지탈 데이터의 처리를 행하는 장치로서, 마이크로 프로세서(MPU), 디지탈·시그날 프로세서(DSP)라고 하는 연산 기능을 내장한 프로세서(데이터 처리장치 또는 LSI)가 알려져 있다. 이들의 성능향상에 매우 큰 공헌을 한 아키텍처 요소로는 파이프라인화 기술, 슈퍼파이프라인화 기술, 슈퍼스칼라화 기술, VLIW 기술, 특화형 데이터 패스(data path)(전용 명령) 추가를 들 수 있다. 또한 분기예측이나 레지스터 뱅크, 캐시 기술 등도 이에 해당한다.
논·파이프라인(non-pipeline)과 파이프라인과의 성능차는 명확하다. 기본적으로 동일명령이라면, 파이프라인의 스테이지(stage)만으로 처리량은 확실하게 향상된다. 예를 들어 4 스테이지의 파이프라인에서는 처리량이 4배 이상이 될 수 있고, 8 스테이지의 파이프라인 이라면, 8배라고 하는 계산이 되고, 더욱이 슈퍼파이프라인 기술은 성능을 2배 이상 향상시킬 수 있게 된다. 실제로 프로세서의 진보에 따라 최상경로(critical path)를 세분화할 수 있기 때문에, 동작 주파수의 상한을 크게 개선할 수 있는 효과도 기대할 수 있어, 그 공헌도는 무척이나 지대하다.하지만 분기명령의 지연(페날티,penalty)은 해소되지 아니하고, 슈퍼·파이프라인 방식의 머신이 성공하느냐 마느냐는, 메모리 액세스나 분기에 대응한 멀티 스테이지(multi-stage)의 지연을 컴파일러에 의한 명령 스케쥴링 등에 의해 어디 까지 처리할 수 있는 가에 달려 있다.
다음 슈퍼·스칼라 기술에서, 이는 내부의 데이터 패스(data path)를 고성능화 하고, 프로그램 카운터 근처의 명령을 동시실행하는 것이다. 이 기술은 컴파일러의 최적화 기술의 진보에 의해 지지되고 있으며, 4 명령에서 8 명령 정도의 동시실행이 가능하다. 하지만, 명령자체는 그 직전의 연산결과나 레지스터의 결과를 빈번하게 사용하는 것이 많으며, 최대 성능은 별론으로 하고, 포워딩(forwarding)이나 명령재배치, 아웃 오브 오더(out-of-order), 레지스터 재명명(register renaming) 등의 각종 테크닉을 구사한 경우 동시실행할 수 있는 명령 수는 평균적으로는 상기보다 훨씬 저하될 수 밖에 없다. 특히 조건분기명령 등을 복수 실행하는 것은 불가능하기 때문에 슈퍼·스칼라 기술의 효과는 현저히 낮아진다. 따라서 프로세서의 성능향상으로의 공헌도로서는 평균 2.0 에서 2.5 배 정도라고 여겨진다. 상당히 호환성이 있는 어플리케이션(application)이 만약에 있다고 하더라도, 현실적인 공헌도는 4배 이하라고 생각되어 진다.
VLIW기술이 다음의 기술로서 부상한다. 이는 미리 데이터 패스를 병렬실행할 수 있도록 구성하여 두고, 컴파일러가 이 병렬실행을 향상시키기 위해, 최적화 수행목적의 VLIW명령 코드를 생성한다는 방식으로, 극히 합리적인 방식을 채용하고 있다. 따라서 의해 슈퍼·스칼라와 같이 하나 하나의 명령의 병렬실행 가능성을 체크하는 회로가 필요없기 때문에 병렬실행을 행하는 하드웨어의 실장(實裝)수단으로서는 극히 유망하다고 평가되고 있다. 하지만 분기명령 등을 복수 실행할 수 없는 것은 상술한 바와 같고, 따라서 실제의 성능에 있어서의 공헌도는 3.5 배 ∼ 5 배 정도라고 판단되어진다. 하지만 화상처리나 특수 데이터 처리를 필요로 하는 어플리케이션의 처리를 용도로 하는 프로세서를 생각하면, VLIW도 최적의 해결책이 될 수 없다. 특히 연산결과의 연속처리를 요구하는 용도에서는 범용 레지스터가 데이터를 보유한 상태에서 연산이나 데이터를 처리하기에는 한계가 있기 때문이다. 이는 종래의 파이프라인 기술에서도 마찬가지 이다.
한편, 각종의 매트릭스 계산이나 벡터 계산 등은 전용회로에 의해 이를 실현하는 것이 높은 성능을 얻을 수 있다는 것이 과거의 경험으로부터 잘 알려져 있다. 따라서 현재, 세계 최고 성능을 지향하는 최첨단의 실장기술에서는 VLIW를 베이스로 하여 어플리케이션 목적에 따른 각종의 전용연산회로를 실장하여, 최고 성능을 목표로 한다는 방식이 주류를 이루고 있다.
하지만, VLIW는 프로그램 카운터 근처의 병렬처리 실행효율을 개선하는 기술이고, 예컨대 2 이상의 오브젝트를 동시에 실행하거나, 2 이상의 함수를 실행하기 에는 그다지 유효한 수단이 될 수 없다. 또 각종의 전용연산회로를 실장하는 것은 하드웨어가 증가하는 것이 되고, 한편으로는 소프트웨어의 유연성이 저하되는 것을 의미한다. 게다가, 조건분기를 실행할 때에 발생하는 페날티(penalty)의 문제를 근본적으로 해결하기 어렵다.
따라서, 본 발명에서는 이 종래의 프로세서를 고속화하는 기술과 구별되어지는 시점(視點)에서 상기의 문제를 검토하고, 새로운 해결책을 제공하는 것을 목적으로 하고 있다. 다시 말하면, 파이프라인과 같이 처리량의 향상을 도모함과 동시에 조건분기를 실행할 때의 페날티를 해결할 수 있는 시스템, 즉 제어 프로그램 제품과 이를 실행할 수 있는 데이터 처리장치 및 그 제어방법을 제공하는 것을 목적으로 하고 있다. 또한 복잡한 데이터 처리에 있어서도, 이들의 데이터 처리에 특화된 다양한 전용회로를 사용하지 않고서도, 각 각의 데이터 처리를 유연하게, 그리고 고속으로 실행할 수 있는 제어 프로그램 제품과 이를 실행할 수 있는 데이터 처리 장치 및 그 제어방법을 제공하는 것도 본 발명의 목적이다.
본 발명은 마이크로 코드 등에 의해 기술된 제어 프로그램 제품, 및 그 프로그램을 실행할 수 있는 데이터 처리장치에 관한 것이다.
도 1은 본 발명의 명령세트의 개요를 도시한 것이다.
도 2는 도 1에 도시한 명령세트의 Y필드를 보다 상세하게 설명하는 도면이다.
도 3은 도 1에 도시한 명령세트를 실제적으로 사용한, 간단한 예를 나타내는 도면이다.
도 4는 도 3에 도시한 명령세트에 의해 데이터가 레지스터에 저장되는 것을 나타내는 도면이다.
도 5는 본 발명의 명령세트를 실현할 수 있는 데이터 처리장치의 예를 나타내는 도면이다.
도 6은 종래의 CPU 또는 DSP로 실현할 수 있는 샘플 프로그램이다.
도 7은 본 발명에 따른 제어유닛용 프로그램의 예이다.
도 8은 도 7에 도시한 프로그램을 본 발명에 따른 명령세트의 실행 프로그램으로 컴파일한 예를 나타내는 도면이다.
도 9는 본 발명에 따른 데이터 처리의 또 다른 프로그램의 예이다.
도 10은 도 9의 프로그램에 따라 구성된 데이터 플로우를 나타내는 도면이다.
도 11은 본 발명의 명령세트에 의해 데이터 처리를 실행할 수 있는 데이터 처리장치의 개략적인 구성을 나타내는 것이다.
도 12는 템플리트의 조합을 바꾸어 또 다른 전용회로를 구성하는 모습을 나타내는 것이다.
도 13은 템플리트의 일 예를 나타내는 것이다.
본 출원의 발명자는, 상기와 같은 문제가 논·파이프라인(non-pipeline) 기술에서 지금까지의 기술에 사용되어지고 있는 명령세트의 제약으로부터 상기와 같은 문제가 발생하고 있다는 것을 알아 내었다. 다시 말하면, 프로세서에 있어서의 데이터 처리를 규정하는 프로그램(마이크로 코드, 어셈블리 코드, 기계어 등)의 명령세트(명령 포맷)는 명령조작(실행명령)과 그 명령을 실행할 때에 사용하는 레지스터 등의 환경 또는 인터페이스를 정의하는 오퍼랜드가 조합되어진 니모닉(mnemonic) 코드이다. 따라서 명령세트를 보면, 그에 의해 지시되는 처리의 내용을 완전하게 파악할 수 있지만, 명령세트를 디코드할 때 까지 처리내용에 대해서는 전혀 알 수 없다. 따라서 본 발명에 있어, 명령세트의 구성방법 그 자체를 대폭 변경함으로써, 종래 기술에서는 대응하기 어려웠던 상기의 문제를 능숙하게 해결하고, 데이터 처리장치의 성능을 비약적으로 향상시킬 수 있다.
다시 말하면, 본 발명은 데이터 처리장치를 구성하는 적어도 하나의 처리유닛으로 실행되는 연산 또는 다른 데이터 처리의 내용을 지시하는 실행명령을 기술(기재)할 수 있는 제 1 필드와, 실행명령에서 실행되는 연산 또는 다른 데이터 처리가 실행될 수 있는 상태로 처리유닛을 설정하는 준비정보를 기술(기재)할 수 있는 제 2 필드를 구비한 명령세트를 설계하고, 제 1 의 필드에 기술된 실행명령의 내용에 대하여, 독립한 연산 또는 다른 데이터 처리의 준비정보가 제 2 의 필드에 기술할 수 있도록 하고 있다. 그리고, 본 발명은 이 명령세트를 포함하는 제어 프로그램 제품 또는 제어 프로그램 장치를 제공한다. 이 제어 프로그램은 데이터 처리장치가 판독할 수 있는 적당한 기록매체에 기록하여 제공될 수 있고, 그 제어 프로그램을 컴퓨터 네트워크 또는 그 밖의 통신을 통하여 전송되는 전송매체에 내장하여 제공할 수 있다.
처리유닛은, 데이터 처리장치를 구성하는 적당한 기능적 또는 데이터 패스(data path) 수준으로 분할할 수 있는 단위이며, 제어유닛, 산술연산유닛, 나아가 어느정도 간결한 데이터 패스를 구비하고 템플리트(template)적으로 취급할 수 있는 특정의 데이터 패스를 구비한 처리유닛 또는 데이터 플로우(data flow)처리유닛 등을 포함한다.
또한 본 발명의 데이터 처리장치는 연산 또는 그 밖의 데이터 처리를 실행하는 적어도 하나의 처리유닛과 처리유닛에서 실행하는 연산 또는 다른 데이터 처리의 내용을 지시하는 실행명령을 기술할 수 있는 제 1 필드, 및 실행명령에서 실행되는 연산 또는 다른 데이터 처리가 실행할 수 있는 상태로 처리유닛을 설정하는준비정보를 기술할 수 있는 제 2 필드를 구비하는 명령세트를 페치(fetch)하는 유닛과, 제 1 필드의 실행명령을 디코드하고, 그 실행명령의 연산 또는 다른 데이터 처리를 실행할 수 있도록 미리 설정된 처리유닛에 의해 당해 연산 또는 다른 데이터 처리를 수행하는 제 1 실행제어유닛과, 제 2 필드의 준비정보를 디코드 하고, 제 1 실행제어유닛의 실행내용과 독립하여 처리유닛의 상태를 연산 또는 다른 데이터 처리가 실행될 수 있도록 설정하는 제 2 실행제어유닛을 포함한다.
또한, 본 발명의 연산 또는 다른 데이터 처리를 실행하는 적어도 하나의 처리유닛을 포함하는 데이터 처리장치의 제어방법은, 상기의 제 1 필드 및 제 2 필드를 구비하는 명령세트를 페치하는 공정과, 제 1 필드의 실행명령을 디코드하고, 그 실행명령의 연산 또는 다른 데이터 처리가 실행될 수 있도록 미리 설정된 처리유닛에 의해 당해 연산 또는 다른 데이터 처리를 진행하는 제 1 제어공정과 이 제 1 제어공정과 독립하여, 제 2 필드의 준비정보를 디코드하고, 처리유닛의 상태를 연산 또는 다른 데이터 처리가 실행될 수 있도록 설정하는 제 2 제어공정을 포함한다.
본 발명에 따른 명령세트는 실행명령을 기술하는 제 1 필드와, 이 실행명령과 독립하여, 레지스터의 정보 및 즉치 데이터(immediate data) 등의 준비정보(준비명령)을 기술하는 제 2 필드를 구비하고 있다. 따라서 연산명령 등에 있어, 제 1 필드에 ADD 등의 명령조작이 기술되어지고, 제 2 필드에 레지스터를 특정하는 명령 또는 정보가 기술되어지기 때문에, 일견, 종래 어셈블 코드와 같은 모양의 명령세트가 된다. 하지만 실행명령과 준비정보는 독립되어 있어, 같은 명령세트안에서는 대응하지 않는다. 따라서 이 명령세트에서는 제어유닛 등의 데이터 처리장치의 처리유닛에서 실행되어지는 처리가 특정되지 않는다 라고 하는 특성을 보유한다. 즉, 본 발명에 따른 명령세트는 종래의 니모닉 코드와 큰 차이가 있다. 그리고 종래 하나의 명령세트 안에 기술되어져 있던 명령조작과 그에 대응하는 오퍼랜드를 개별적으로, 독립하여 정의할 수 있도록 함에 따라, 종래의 명령세트로는 실현할 수 없는 처리를 간단히 실행할 수 있다.
먼저, 제 2 필드에 후속의 명령세트의 제 1 필드에 기술된 실행명령을 실행하기 위한 준비명령을 기술할 수가 있다. 따라서 실행명령을 구비한 명령세트가 나타나기 전에 그 실행명령을 실행하기 위한 준비를 행할 수 있다. 다시 말하면, 실행명령에서 실행되는 연산 또는 다른 데이터 처리가 실행가능한 상태로 처리유닛을 설정할 수 있다. 예컨대 어느 명령세트(명령 포맷 또는 명령 레코드)의 제 1 필드에 데이터 처리장치의 어느 제어유닛에 포함되어져 있는 적어도 하나의 산술논리연산유닛을 조작하는 명령을 기술하고, 그에 우선하는 명령세트의 제 2 필드에, 적어도 하나의 산술논리연산유닛에 사용되어지는 소스(source)측 레지스터 또는 수신지측 레지스터라고 하는 산술논리연산유닛의 인터페이스를 정의하는 명령 또는 정보를 기술할 수 있다. 따라서 실행명령이 페치되기 전에 산술논리연산유닛의 레지스터 정보가 디코드 되어지며, 레지스터가 세트되어, 그 후에 페치된 실행명령에 의해 소정의 논리연산이 실행되고, 그 결과가 지정된 레지스터에 유지된다. 수신지측의 레지스터는 실행명령과 함께 제 1 필드에 기술할 수도 있다.
따라서, 본 발명에 따른 명령세트에 있어서, 파이프라인 처리와 동일한 모습으로 데이터 처리를 다단계로 나누어 실행할 수 있으며, 처리량을 향상시킬 수 있다. 또 예컨대, ADD, R0, R1, #1234H라고 하는 명령은, 레지스터 R1과 #01234H를 가산하여 이를 레지스터 R0에 저장한다고 하는 의미가 있지만, 하드웨어 구성상으로는 이전의 명령세트의 실행사이클과 오버랩 시켜서, ADD라고 하는 실행명령을 실행하는 1 클럭 전에 레지스터 R0와 「#01234H」를 산술논리연산유닛인 산술가산기 ADD가 속한 데이터 패스의 입력 레지스터에 판독을 실행해 두면, 고속실행을 시키는 관점에서는 유익한 것이다. 즉 AC특성상으로 순수하게 산술가산을 행할 수 있도록 하기 때문에, 실행주파수특성이 향상된다. 파이프라인 처리에 있어, 파이프라인 단계를 증가시키고, 레지스터 파일에서 판독 사이클 전용으로 1 스테이지(stage) 소비하는 설계방침에 의해, 이 문제를 어느 정도 회피할 수 있다. 하지만 그 결과, 지연은 확실하게 증가하는 것에 비해, 본 발명은 지연을 증가시키지 아니하고 문제를 해결할 수 있다.
그리고, 본 발명의 명령세트는 준비정보를 실행명령에 우선하여 기술할 수 있기 때문에, 조건분기명령 등의 분기명령에서 분기 수신지의 정보를 실행명령에 우선하여 제어유닛에 부여할 수 있다. 다시 말하면, 종래의 니모닉 코드로는 명령세트의 내용은 인간이 한 눈으로 알 수 있지만, 그 명령세트가 나타날 때까지 처리내용을 알 수 없었다. 이에 비해 본 발명에 따른 명령세트는 명령세트의 내용은 한 눈으로 알 수 없지만, 실행명령이 나타나기 전에 그 실행명령에 관련하는 정보를 알 수 있다. 따라서, 실행명령에 우선하여 분기 수신지를 알 수 있기 때문에 그 분기 수신지의 명령세트를 페치할 수 있고, 나아가 분기 수신지의 실행명령에 우선하여 그 준비를 행할 수 있게 된다.
일반적으로, 현재의 CPU/DSP의 대부분이 파이프라인 처리를 후단(시간축이 후방)으로 시프트하는 것으로 처리의 고속화를 도모하는 것에 성공하고 있지만, 프로그램의 분기나 CALL/RET 실행시에는 상기 문제가 표면화 된다. 즉 선행하여 페치 어드레스 정보를 얻을 수 없기 때문에, 본질적으로 페날티가 되고, 원리적으로 이를 해소할 수가 없다. 물론, 분기예측이나 지연된 분기(delayed branch), 고속 분기 버퍼(high-speed branch buffer), 또는 DSP에서 채용되고 있는 고속 루프 처리기술 등은, 이 페날티를 상당히 완화시키는데 성공하고 있지만, 연속분기가 수 없이 발생한다면, 이 문제점이 표면화되고, 근본적인 해결이 될 수 없다는 것은 주지의 사실이다.
또한 후속명령이 필요로 하는 레지스터 정보를 먼저 얻을 수 없기 때문에, 파이프라인 처리를 고속화하기 위한 포워딩(forwarding) 처리나 바이패스(bypass)처리의 복잡함이 증대되어, 종래기술에서 고속화를 도모하려고 하는 그 자체가 막대한 하드웨어 비용의 증가를 초래하는 요인이 된다.
따라서, 종래의 명령세트에서는, 분기 수신지의 어드레스정보는 디코드 후에나 얻을 수 밖에 없고, 조건분기를 실행할 때에 발생하는 페날티를 본질적으로 해결하기 어려운 것에 비해, 본 발명의 명령세트는 분기 수신지의 정보를 사전에 부여할 수 있으므로, 조건분기를 실행할 때의 페날티를 없앨 수 있다. 또한 하드웨어에 여유가 있다면, 분기 수신지의 준비명령을 페치하여, 이것에 이어지는 실행명령을 위한 준비를 행할 수 있다. 분기조건이 맞지 않는 경우는 그 준비가 불필요하게 되는 것일 뿐, 실행시간의 페날티로는 되지 않는다.
게다가, 후속명령이 필요한 레지스터 정보가, 실행명령과 동시에 또는 우선하여 알 수 있기 때문에, 하드웨어 비용을 증대시키지 않고, 고속화를 도모할 수 있다. 즉, 본 발명에 있어, 종래 하드웨어측에서 행해졌던 파이프라인처리의 1 스테이지분의 처리를, 컴파일할 때나 어셈블할 때에 소프트웨어 처리에 의해 미리 정적으로 실현할 수 있다.
본 발명의 데이터 처리장치에 있어서, 준비명령에 근거한 처리를 실행하는 제 2 실행제어필드는, FPGA(Field Programmable Gate Arrays) 와 같이 트랜지스터간의 접속을 변경할 수 있는 아키텍처를 동적으로 제어할 수 있는 것이어도 무방하다. 하지만, FPGA와 같이 하드웨어를 동적으로 변경하기에는 시간이 걸리고, 그 시간을 단축하기 위한 하드웨어가 필요하게 된다. FPGA의 재구성정보를 2면 이상의 RAM에 유지하고, 백 그라운드에서 실행하는 것에 의해, 외형상 짧은 시간에 동적으로 아키텍처를 변경하는 방식도 가능하지만, 만일 수 클럭 이내에 이 재구성을 행할 수 있도록 하기 위해서는 모든 조합의 수의 재구성정보 전부를 저장하는 RAM을 실장할 필요가 있어서, 본질적으로 FPGA의 재구성 시간이 상당히 길어진다는 경제적인 문제를 전혀 해결하지 못하는 것이다. 또 FPGA가 본래 하드웨어의 게이트에 주목한 매핑(mapping)을 좋은 효율로 실현하고자 하기 위해 안고 있는 문제인, 실용상의 AC특성의 열등성은 해결되기 곤란하다.
이에 비해, 본 발명은 준비명령으로서, 처리유닛의 입력 및/또는 출력 인터페이스를 그 처리유닛의 실행시기와 독립하여, 별개로 규정하며, 제 2 실행제어유닛 또는 제 2 제어공정에 있어, 처리유닛의 입력 및/또는 출력 인터페이스를 그 처리유닛의 실행시기와 독립하여, 별개로 설정할 수가 있다. 따라서, 다수의 처리유닛을 구비한 데이터 처리장치는 제 2 실행제어유닛 또는 제 2 제어공정에 있어, 이 들의 처리유닛에 의한 데이터 패스(data path)의 조합을 제어할 수 있게 된다. 다시 말하면, 제 2 필드에 데이터 처리장치에 포함되는 적어도 하나의 산술논리연산유닛 등의 인터페이스를 정의하는 명령을 기재 또는 기술하여, 데이터 플로우(data flow) 지정을 행할 수 있다. 따라서 데이터 패스의 독립성을 높일 수 있고, 결과적으로 데이터 플로우 지정을 별개의 명령 프로그램을 실행하면서 행하거나, 유휴상태에 있는 제어유닛 또는 데이터 처리장치의 내부의 데이터 패스를 외부의 다른 제어유닛 또는 데이터 처리장치에 있어 실행되고 있는 긴급도가 높은 처리를 위한 대여도 용이하게 할 수 있는 구조를 제공할 수 있다.
게다가, 준비명령에 처리유닛의 처리내용 또는 회로구성도 정의하는 정보를 채용하여, 제 2 실행제어유닛 또는 제 2 제어공정에 의해, 처리유닛의 처리내용 또는 회로구성도 정의하여 보다 유연성있게 데이터 패스를 구성할 수 있다.
또한 제 2 실행제어유닛 또는 제 2 제어공정에, 레지스터 정보를 디코드하고, 페치하는 등의 산술논리연산유닛의 인터페이스나, 다른 처리유닛의 인터페이스를 정의하는 스케쥴러로서의 기능을 갖게 하여 데이터 패스의 조합을 관리함으로써, 다양한 데이터 처리에 대응할 수 있다. 예컨대, 어느 일정시간만 매트릭스 계산을 행하고, 그 후에 필터 처리를 행하는 경우는 미리 이들의 처리에 필요한 데이터 처리장치 내부의 처리유닛간의 접속을 지정하고, 시간을 계수하는 계수카운터를 사용함으로써 이를 실현할 수가 있다. 계수 카운터를 별개의 비교회로나 외부 이벤트 검출기로 대체할 경우, 보다 복잡하고 유연성이 있는 스케쥴링처리를 실현할 수 있다.
개개의 처리유닛에 FPGA의 아키텍처를 채용할 수 있다. 하지만, 하드웨어를 동적으로 변경하기에는 시간이 걸리고, 또한 그 시간을 단축하기 위한 하드웨어가 필요하다. 따라서 어플리케이션 실행중에 처리유닛 내부의 하드웨어를 동적으로 제어하는 것은 어렵다. 만일 이를 다수의 RAM 뱅크로 구성하여, 순식간에 교환하는 방식을 취하여도, 수 클럭 ∼ 수십 클럭 단위에서 교환을 실현하기 위해서는 상당수의 뱅크 구성이 필요하게 되고, 기본적으로 FPGA내부의 매크로 셀(macro cell) 하나 하나가 독립하여 프로그램 구성할 수 있는 구조로 해야 함과 동시에, 이 교체 타이밍을 검출하고, 프로그램에 의하는 제어기구를 구비해야할 필요가 있다. 그러나 이와 같은 구성에 대응하기 위한 현재의 FPGA로서는 불충분하고, 또한 적당한 타이밍으로 교환을 지시하기 위한 새로운 명령제어기구가 필요하게 된다.
이를 위해 본 발명은 처리유닛으로서 특정의 내부 데이터 패스를 구비한 회로유닛을 채용하는 것이 바람직하다. 즉 어느 정도 간결한 데이터 패스를 구비한 처리유닛을 템플리트(template)처럼 준비해 두고 그 데이터 패스간의 조합을 지시하여 데이터 플로우형 처리를 수행하는 것과 함께, 준비정보 또는 준비명령에 따라, 처리유닛의 내부 데이터 패스의 일부를 선택하여 처리 유닛의 처리내용을 변경하는 것에 의해, 유연성 있게, 그리고 단기간에 하드웨어를 재구성할 수 있다.
예를 들어, 적당한 논리게이트와 이 논리게이트 및 입출력 인터페이스를 접속하는 내부 데이터 패스를 미리 구비하여 템플리트처럼 사용할 수 있는 특정의 데이터 패스를 구비한 처리유닛, 이하의 설명에 있어서 템플리트라고 칭한다. 이와 같은 처리유닛이라면, 입출력되는 데이터의 순서를 바꾸거나, 논리게이트간의 접속 또는 선택을 바꾸는 것에 의해 처리유닛의 처리내용을 변경할 수 있다. 그리고, 트랜지스터 레벨에서 회로를 재구성하는 FPGA에 비교하면, 미리 준비해둔 내부 데이터 패스의 일부를 선택하는 것만으로 단시간에 처리내용을 변경할 수 있다. 게다가 미리 준비된 내부 데이터 패스를 사용하기 때문에 과잉의 회로 요소는 적고, 트랜지스터의 면적이용률도 높다. 따라서, 실장밀도도 높으며 경제적이다. 또 고속처리에 적합한 데이터 패스를 구축할 수 있어, AC특성도 높다. 따라서 본 발명은 준비명령에 의해 제 2 실행제어유닛 및 제 2 제어공정에 있어, 처리유닛의 내부 데이터 패스의 일부를 선택할 수 있도록 하는 것이 바람직하다.
또한 준비명령를 근거하여 설정된 각 처리유닛의 인터페이스를 유지하는 스케쥴을 관리할 수 있도록, 제 2 실행제어유닛은 처리유닛의 인터페이스를 관리하는 스케쥴로서의 기능을 구비하고 있는 것이 바람직하다.
게다가, 준비정보에 의해, 다수의 처리유닛에 의해 구성된 처리 블럭(block)의 입력 및/또는 출력 인터페이스를 정의할 수 있도록 하는 것이 바람직하다. 다수의 처리유닛의 인터페이스를 하나의 명령으로 변경할 수 있어 다수의 처리유닛에 관련하는 데이터 패스의 변경을 하나의 명령으로 처리 될 수 있다. 따라서 제 2 실행제어유닛 또는 공정에서는 준비정보에 근거하여, 다수의 처리유닛에 의해 구성되는 처리 블록의 입력 및/또는 출력 인터페이스를 변경할 수 있도록 하는 것이 바람직하다.
또한 처리블록의 입력 및/또는 출력 인터페이스를 정의하는 다수의 배치 데이터(configuration data)를 저장한 메모리를 설계하고, 준비정보에 의해 메모리에 저장된 다수의 배치 데이터의 하나를 선택하여, 처리블록의 입력 및/또는 출력 인터페이스를 변경할 수 있도록 하는 것이 바람직하다. 데이터 플로우 지정명령에 따라 배치 데이터를 지정할 수 있도록 하여, 명령자체는 별도의 여분이 필요없이 다수의 처리유닛의 인터페이스 변경을 프로그램에서 제어할 수 있다.
더욱이, 처리유닛으로서 산술논리연산유닛을 구비한 범용처리에 적합한 제 1 제어유닛과, 처리유닛으로서 특정의 데이터 패스를 구비하는 다수의 데이터 플로우 처리유닛을 구비한 전용회로에 적합한 제 2 제어유닛을 설계하여, 네트워크 처리나 화상처리 등의 고속성 및 실시간 처리가 요구되는 것에 적합한 시스템LSI를 제공할 수 있다. 그리고, 본 발명의 명령세트라면, 제 1 필드에, 산술논리연산유닛을 조작하는 실행명령을 기술할 수 있고, 제 2 필드에, 산술논리연산유닛 및 /또는 데이터 플로우 처리유닛의 인터페이스를 정의하는 준비정보가 기술할 수 있어, 상기의 시스템 LSI의 제어에 적합한 프로그램 제품을 제공할 수 있다.
종래, 복잡한 데이터 처리는 전용회로를 준비하고, 그 전용회로를 이용하는 전용명령화 하는 것 밖에 대응방법이 없어 하드웨어 비용이 증가한다. 이에 비해, 본 발명의 명령세트는 실행명령과 독립하여 제 2 필드에 의해 논리연산유닛의 인터페이스 및 그 처리내용을 기술할 수 있기 때문에, 파이프라인 제어나 데이터 패스 제어의 구조를 명령세트의 안에 넣을 수 있다. 따라서 본 발명은 프로그램 카운터 근처의 병렬처리를 실행하는 것만이 아니라, 2 이상의 오브젝트의 동시의사실행(pseudo-execution)이나 2이상의 함수의 동시 의사실행(pseudo-execution)에 유효한 수단을 제공할 수 있다. 즉, 종래의 명령세트로는 2이상의 컨텍스트(context)가 다른 데이터 처리나 알고리즘 등의 있어, 제 각각 떨어진 프로그램 카운터에 근거로 한 처리가 동시에 기동할 수 없었던 것에 비해, 본 발명의 명령세트를 이용하여 데이터 플로우를 적당히 정의하면 프로그램 카운터에 상관하지 않고 처리를 실행할 수 있다.
따라서 본 명령세트를 이용하면, 병렬처리에 있어 미리 어플리케이션 측면에서 보아 성능에 효과적이라 여겨지는 데이터 패스를, 제 2 필드를 이용하여 소프트웨어에서 조합할 수 있게 되고, 이에 의해 실현된 데이터 패스(데이터 플로우)를 필요에 맞게, 또 소프트웨어 명령레벨에서 기동 시킬 수 있다. 이 데이터 패스는 특정목적에 대응한 처리 뿐만 아니라, 일반의 스테이트 머신(state machine)을 기동하는 목적으로 사용 할 수 있어, 극히 자유도(freedom)가 높다.
또한 이 제 2 필드의 정보에 의해, 선행하여 다음 명령의 준비사이클을 간단히 발생시킬 수 있게 할 수 있다. 종래, 이를 레지스터를 사용하지 않을 수 없었지만, 버퍼링을 전제로 한다면, 레지스터 대신에 메모리(싱글 포트/듀얼 포트)나 레지스터 파일을 대용할 수 있다. 다시 말하면, 제 2 필드에 처리유닛 등에 포함된 레지스터 또는 버퍼와 메모리간의 입출력을 지시하는 명령을 기술할 수 있도록하고, 제 2 실행제어유닛 또는 제 2 제어공정에 있어, 레지스터 또는 버퍼와 메모리간의 입출력을 제어하는 기능을 보유하도록 한다면, 실행명령과 독립하여 메모리에 입출력을 행할 수 있다.
이는 하나 하나의 명령 시퀀스의 관련성을 증진시킴과 동시에 하드웨어 자원의 경합을 사전에 회피하는 것에 공헌하는 것이기 때문에, 복수명령의 병렬동시실행이나 외부에서의 인터럽트 요인에 대한 대응을 조기화 할 수 있다. 그리고, 기본적으로 메모리를 레지스터로 간주할 수 있기 때문에, 고속의 태스크 스위치(task switch)를 실현할 수 있다. 더욱이 종래의 퍼스트 페치(first-fetch)의 페날티를 해소하지 못한 캐시 메모리에 대신하여, 프리 로딩(pre-loading)형 고속 버퍼를 채용할 수도 있기 때문에 100%의 히트율을 보증하면서, 전혀 페날티를 발생시키지 않는 고속의 내장시스템도 실현할 수 있다.
다시 말하면, 메모리를 레지스터로 간주하여, 인터럽터 등의 복수의 비동기처리요구에 대해 고속으로 대응할 수 있으며, 복잡한 데이터 처리나 연속 데이터 처리의 대응을 극히 유연하게 행할 수 있다. 또 저장 및 복귀에 시간이 걸리지 아니하므로, 태스크 스위치 등에서의 고속 대응이 극히 간단하다. 그리고, 외부 메모리와 내부 메모리의 액세스 스피드 차이의 영향을 완전히 해소할 수 있기 때문에, 캐시는 퍼스트 페치·페날티 문제를 효율 좋게 해결할 수 있는 이점도 얻을 수 있다. 따라서, CALL/RET나 인터럽트 처리/IRET를 고속으로 처리할 수 있어, 이벤트(event)에 대한 응답환경을 간단히 구축할 수 있고, 이벤트에 의해 데이터 처리성능이 저하되는 것을 방지할 수 있다.
더욱이, 제 1 또는제 2 필드를, VLIW와 같이 다수의 실행명령 또는 준비명령을 기술한 필드로서, 제 1 또는 제 2 실행제어유닛이 제 1 또는 제 2 필드에 기술된 다수의 독립된 실행명령 또는 준비명령을 독립하여 처리할 수 있는 다수의 실행제어부를 구비하도록 한다면, 더욱 더 성능을 향상시킬 수 있다.
그리고, 본 발명에 따른 제어유닛을 코아(core)로서 또는 주변회로로 채용한 데이터 처리장치를 실현하는 것에 의해, 상술한 바와 같은 이점을 활용할 수 있으며, 처리속도가 빠르고, 보다 경제적인 데이터 처리장치를 제공할 수 있다.
이하, 도면을 참조하여 본 발명을 보다 상세하게 설명한다. 도 1에 본 발명에 따른 명령세트(명령 포맷)의 구성을 도시하고 있다. 본 발명에 따른 명령세트(DAP/DNA의 명령세트)(10)는 제 1 필드로서 명령실행기본필드(X필드)(11)라고 불리는 부분과, 제 2 필드로서 다음의 명령실행의 효율화를 도모할 수 있는 차(次)명령실행준비싸이클(추가 필드 또는 Y필드)(12)이라고 불리는 2개의 필드를 구비하고 있다. 명령실행기본필드(X필드)(11)는 가감연산, 논리OR연산, 논리AND연산, 비교 등의 데이터의 연산 및 분기 등의 또 다른 각종의 데이터 처리의 내용을 지정하고, 그 결과가 저장되는 수신지(destination)를 지정한다. 또 X필드(11)는 명령어 크기의 사용효율을 높히기 위해 실제로 실행되어지는 명령의 정보만 포함한다. 한편, 추가 필드(Y필드)(12)는 동일의 명령세트인 X필드(11)의 실행명령과 독립된 명령(정보)을 기술할 수 있어, 예를 들어 다음의 명령에 대한 실행준비 사이클에 할당할 수 있다. 보다 상세하게 명령세트(10)를 설명하면, X필드(11)는 산술논리연산유닛 등의 처리유닛에 대한 명령조작 또는 실행명령(Execution ID)을 기술하는 실행명령필드(15)와, Y필드(12)의 유효/무효 및 Y필드(12)에서 나타내는 준비명령(준비정보)의 타입을 나타내는 필드(타입 필드)(16)와, 수신지의 레지스터를 나타내는 필드(17)를 구비하고 있다. 타입필드(16)의 내용은 Y필드(12)에 관련되어 있으며, X필드(11)의 다른 필드의 내용과 독립하여, 별개로 정의할 수 있음은 상술한 바와 같다.
또, Y필드(12)는 타입필드(16)에 의해 정의된 준비정보가 기술된다. 이 Y타입필드(12)에 기술된 준비정보는 연산 또는 다른 데이터 처리가 실행될 수 있는 상태에 두기 위한 정보이며, 도 2에 구체적으로 몇 개의 예를 도시하고 있다. 우선, 타입필드(16)는 X필드(11)에 포함되어 있지만, 실행명령필드(15)와 독립 또는 무관계하게 기술할 수 있다. 그리고 Y필드(12)에는 어드레스ID(AID)(21)와 그것에 의해 이용목적이 정의되는 어드레스정보(22), 예컨대 어드레스(ADRS), 입출력 어드레스(ADRS.FROM/TO) 등을 기술하는 어드레스정보필드(26)로서 이용할 수 있다. 이 Y필드(12)에 기술된 어드레스 정보는, 레지스터 또는 버퍼와 메모리(레지스터 파일을 포함한다)간의 판독 및 기록에 이용되어져, DMA와 같이 블록전송도 할 수 있는 구성으로 되어 있다. 또한, 입출력(R/W)만이 아니라, 분기명령을 실행한 때의 분기 수신지를 나타내는 어드레스(페치 어드레스, F), 병렬실행할 때의 스타트 어드레스(D) 등의 정보도 어드레스 정보로서 Y필드(12)에 기술할 수 있다.
또한, 레지스터 타입의 명령, 예를 들어 산술연산 또는 그 밖의 논리연산명령(MOVE,메모리 판독/기록 등도 포함한다)에 대해 소스(source)가 되는 레지스터(Reg) 또는 즉치(immediate,imm)를 정의하는 정보(23)도 Y필드(12)에 기술할 수 있다. 즉 Y필드(12)를 이하의 실행명령을 위해 소스를 정의하는 필드(27)로서 이용할 수 있다.
게다가 Y필드(12)에는 산술논리연산유닛(ALU) 또는 다른 처리유닛, 예를 들어 소정의 데이터 패스를 구비한 템플리트의 인터페이스(소스, 수신지) 및 처리내용의 구성을 정의하는 정보(25)도 기술할 수 있다. 즉 Y필드(12)는 재차 바꿀 수 있는(reconfigurable) 데이터 패스 등을, 특정의 데이터처리를 행하기 위해, 그들의 파이프라인(데이터 플로우 또는 데이터 패스)을 정의하기 위한 데이터 플로우 지정 명령(25)을 기술하는 필드(28)로서 이용할 수 있다. 물론, Y필드(12)에는 그 데이터 플로우를 시작 하는 정보 및 종료하는 정보를 기술할 수 있다. 따라서 Y필드(12)를 이용하여, 재차 바꿀 수 있는 데이터 패스를 정의하여 생성된 데이터 플로우에 따라, 코드 램(RAM)에서 코드를 페치하는 프로그램 카운터와 독립된 처리를 행할 수 있다.
도 1 및 도 2에 도시한 명령세트의 포맷은 본 발명에 따른 두 개의 독립한 명령 필드를 구비한 명령세트의 한 예이며, 이것에 한정되지 않는다. 예컨대, X 및 Y 필드안에서의 필드의 위치는 한정되어지는 것이 아니다. 또, 독립한 필드, 예컨대, 타입 필드(16)의 위치는 본 예에 한정되어질 필요 없이, Y필드(12)의 선두에 위치시킬 수 있다. 또, X필드(11)와 Y필드(12)의 순서를 바꿀 수 있다. 본 예에서, 실행명령이 기술된 X필드(11)에 Y필드(12)의 정보를 포함시켜, X필드(11)를 디코드하면 Y필드(12)에 준비정보가 있는가 없는가, 및 그 정보의 종류를 판단할 수 있게 된다.
또한, 이하에서 X필드(11) 및 Y필드(12)에 실행명령 또는 준비명령이 기재 또는 기술된 예를 설명하지만, 이들의 필드에 명령을 기술하지 않고(NOP를 기술) X필드(11) 또는 Y필드(12)만이 의미를 갖는 것과 같은 명령세트도 가능하다. 게다가, X필드(11)에 기술된 실행명령에 따른 레지스터 정보 등의 오퍼랜드를 구비한 준비명령, 다시 말하면, 동일 명령세트(10)의 Y필드(12)에, X필드(11)의 실행명령에 대해 독립되지 않은 준비명령이 동시에 기술된 명령세트도 가능하다. 그리고, 이들의 명령세트를 본 발명의 X필드(11)와 Y필드(12)가 독립적이며, 동일 명령세트내에서 무관계한 명령세트와 혼재하여 프로그랭밍을 할 수 있다. 이하에서, 본 발명을 이해하기 쉽도록 하기 위한 구체적인 예를 기재하고 있지 않다. 그러나 X필드(11)와 Y필드(12)에 기술된 내용이 독립된 명령세트(10)와 X필드와 Y필드에 기술된 내용이 관련되는 명령세트가 혼재된 프로그래밍 제품 또는 프로그램을 기록한 기록매체 등도 본 발명의 범위에 포함된다.
도 3에 본 예의 명령세트(10)의 간단한 예를 나타내고 있다. j-1번째의 명령세트(10)인 T(j-1)는 X필드(11)의 타입필드(16)에, 동일의 명령세트 Y필드(12)에는 32비트의 즉치(immediate)가 기술되어져 있는 것을 나타내고 있다. 그리고 그 명령세트 T(j-1)의 Y필드(12)에는 즉치로서 「#00001234H」가 기재되어져 있다. 다음의 j번째 명령세트 T(j)에는 X필드(11)의 실행명령필드(15)에 MOVE가 기술되어, 수신지 필드(17)에 레지스터 R3가 기재되어 있다. 따라서 이 j번째의 명령세트 T(j)를 페치하면, 제어유닛의 ALU는 전의 명령필드 T(j-1)에 정의되어진 즉치「#00001234H」를 레지스터 R3에 저장한다.
이와 같이, 본 예의 명령세트(10)(이하에서는 j번째의 명령세트(10)을 명령세트T(j)로 나타낸다)는 실행명령이 기술된 명령세트T(j)의 전의 명령세트 T(j-1)에 따라 그 실행명령의 준비가 행하여진다. 따라서 명령세트 T(j)만으로 제어유닛을 구성하는 ALU가 실행하는 처리내용은 알 수 없지만, 2개의 명령세트 T(j-1) 및 T(j)에 따라 ALU가 실행하는 처리내용은 일의적(一義的)으로 결정되어진다. 또 명령세트 T(j-1)의 실행명령필드(15)에, 그 명령세트의 Y필드(12)와 독립적으로 명령세트 T(j-1)의 전의 명령세트의 Y필드(12)에 의해 준비된 처리를 실행하는 명령이 기술되어져 있다. 게다가 명령세트 T(j)의 타입필드(16) 및 Y필드(12)에는 다음의 명령세트의 실행명령필드에 기술되어진 실행명령의 준비를 하는 정보가 기술되어 있다.
본 예에서, 어느 실행명령이 X필드(11)에 기술된 명령세트 T(j)의 직전의 명령세트 T(j-1)의 Y필드(12)에, 그 실행명령의 준비정보(준비명령)가 기술되어져 있다. 다시 말하면 준비명령의 레지스터가 1 클럭의 예로 되어 있지만, 준비정보가 기술되어진 명령세트는 직전의 명령세트에 한정되는 것 만은 아니다. 예를 들어 다수의 ALU를 구비한 제어 유닛의 제어 프로그램, 또는 후술하는 데이터 플로우 제어를 목적으로 하는 준비명령 등이 있다면 직전의 명령세트에 기술되어질 필요가 없다. 준비명령에 따라 세트된 ALU의 상태(환경 또는 인터페이스)또는 템플리트의 구성이 그 준비명령에 대응하는 실행명령을 구비한 명령세트가 페치되어 실행되어질 때 까지 유지되어진다면, 실행명령을 구비한 명령세트(10)의 수 명령전의 명령세트(10)의 Y필드(12)에서 준비명령을 기술할 수 있다.
도 4에, 도 3에 도시한 명령세트에 따라 레지스터로서 기능하는 레지스터 파일 또는 메모리에 값이 저장된 상태를 나타낸다. 프로세서가 j-1번째의 명령세트 T (j-1)를 페치하여, 그 Y필드(12)의 준비명령에 따른 즉치(immediate)「#00001234H」가 프로세서 ALU의 소스측 레지스터 DP0.R에 래치된다. 그리고, 프로세서가 다음의 j번째의 명령세트 T(j)를 페치하고, 그 X필드(11)의 실행명령인 MOVE를 실행하는 사이클에서 버퍼(29b)에 저장 된다. 그 후 메모리 또는 레지스터 파일(29a)의 레지스터 R3의 어드레스에 버퍼(29b)의 값이 저장된다. 따라서, 저장 수신지가 레지스터가 아니고, 메모리일지라도 본 예의 명령세트(10)를 사용하면, 준비정보를 근거로 한 처리를 실행명령보다 우선적으로 수행할 수 있어, 실행명령의 사이클에서 데이터를 로드(load) 또는 저장할 수 있다.
도 5에, 본 예의 명령세트(10)에 따라 처리내용이 기술된 프로그램을 실행할 수 있는 제어유닛(30)을 구비한 프로세서(데이터 처리장치)(38)의 개략적 구성을 나타내고 있다. 본 예의 명령세트(10)를 구비한 마이크로 코드 또는 마이크로 프로그램(18)은 코드 롬(ROM)(39)에 기억되어져 있다. 제어유닛(30)은 코드 롬(39)으로부터 마이크로 프로그램의 명령세트(10)를 프로그램 카운터에 따라 수시로 페치하는 페치유닛(31)과, 페치된 명령세트(10)의 X필드(11)를 디코드하여 ALU(34)의 처리내용을 결정 또는 단정함과 동시에 ALU(34)의 논리연산결과를 수신지 레지스터(34d)를 선택하여, 래치하는 기능을 구비한 제 1 실행제어유닛(32)을 구비하고 있다.
게다가 제어유닛(30)은 페치된 명령세트(10)의 Y필드(12)를 X필드(11)의 타입필드(16)의 정보에 근거하여 디코드하고, 연산처리유닛(ALU)(34)의 소스측의 레지스터(34s)를 선택하는 기능을 구비한 제 2 실행제어유닛(33)을 구비하고 있다. 이 제 2 실행제어유닛(33)은 타입필드(16)의 정보를 제거하고, Y필드(12)의 명령 또는 정보를 X필드(11)의 내용과 독립하여 해석할 수 있다. 제 2 실행명령유닛(33)은 Y필드(12)에 기술된 정보가 데이터 플로우를 정의하는 것이라면, ALU(34)의 소스측 및 수신지측의 선택 또는 설정, 다시 말하면, ALU(34)의 인터페이스를 결정하고, 또한 그 상태를 소정의 블록화 또는 해제의 지시가 있을 때까지 연속적으로 유지하는 기능도 구비하고 있다. 또, Y필드(12)의 정보가 데이터 플로우를 정의하는 경우, 이 제 2 실행제어유닛(33)은 ALU(34)의 처리내용도 결정하고, 그 상태를 소정의 기간동안 유지한다.
따라서, 제 1 실행제어유닛(32)은, X필드(11)의 실행명령을 디코드하고, 그 실행명령의 연산 또는 다른 데이터 처리가 실행될 수 있도록 미리 설정된 처리유닛에 의해 연산 또는 다른 데이터 처리를 진행하는 제 1 제어공정을 수행한다. 한편, 제 2 실행제어유닛(33)은 Y필드(12)의 준비정보를 디코드하고, 제 1 실행제어유닛(32)의 실행내용, 및 제 1 실행제어유닛(32)에서 행하여지는 제 1 제어공정과 독립하여, 처리유닛의 상태를 연산 또는 다른 데이터 처리가 실행될 수 있도록 설정하는 제 2 제어공정을 수행한다.
본 예의 제어유닛(30)은, 상기와 같은 실행제어유닛(32 및 33)과 ALU(34)의 조합을 다수 구비하고 있고, 이에 의해 다양한 처리를 실행할 수 있도록 되어 있다. 따라서, 본 예의 제어유닛(30)을 코어(core) 또는 주변장치로 하여, 화상데이터를 고속으로 처리할 수 있는 DSP, 범용의 디지탈 처리를 고속으로 행할 수 있는 CPU 또는 MPU 등을 구성할 수 있게 된다.
도 6 내지 도 9에, 본 예의 제어유닛(30)으로 실행하는 프로그램의 예를 도시하고 있다. 도 6에 나타낸 샘플 프로그램(41)은 종래의 CPU 또는 DSP로 실행할 수 있도록 작성한 것이다. 이 프로그램은 #START의 어드레스에서 시작하는 테이블로부터 최대값을 검출하고, 최종데이터를 나타내는 #END를 검출하고 종료하는 프로그램이다.
도 7에 기재된 프로그램(42)은 도 6과 동일한 처리를, 본 발명의 명령세트를 실행할 수 있는 제어유닛(30)에 적합하게 프로그램으로 변환한 것으로, 2명령을 하나의 명령세트로 실행할 수 있는 예를 나타내고 있다. 도 7에 나타난 프로그램은 컴파일러를 통해서 본 발명의 명령세트의 실행 프로그램으로 변환되어, 제어유닛(30)에서 실행된다.
도 8에 컴파일된 본 발명의 명령세트(10)을 포함하는 프로그램(43)을 도시하고 있고, 이와 같은 명령세트(10)을 포함하는 프로그램 제품(18)이 ROM(39), RAM 또는 다른 적당한 데이터 처리장치로 판독할 수 있는 기록매체에 기억시켜 제공된다. 또한, 네트워크 환경에서 교환되는 전송매체에 프로그램 제품(43 또는 18)을 내장하여 유통시킬 수 있다. 이 프로그램(43)과 프로그램(42)을 비교하면 알 수 있듯이, 첫 번째의 명령세트(10)의 Y필드(12)에서 두 번째의 명령세트(10)의 실행명령(15)의 준비가 행하여진다. 다시 말하면, 타입 필드(16)에 준비정보로서, 즉치(immediate)가 Y필드(12)에 기술되어져 있는 것을 도시하고 있고, Y필드(12)를디코드한 제 2 실행제어유닛(32)에 의해 즉치(immediate)가 ALU(34)의 소스인 캐시 또는 레지스터에 제공된다. 그리고 두 번째의 명령세트(10)를 실행하는 때에, 그 실행명령을 행할 준비를 마친 ALU(34)대해 실행명령(15)을 내릴 수 있다. 다시 말하면, 수신지 필드(17)에 정의된 레지스터에 대해, 실행명령필드(15)의 M0VE 명령을 간단히 실행하면 되는 것이다.
동일하게, 두 번째의 명령세트(10)의 Y필드(12)에는 다음의 3 번째의 명령세트(10)의 실행명령 필드(15)의 실행명령, MOVE 및 ADD의 준비정보로서, 소스측 레지스터를 설정하는 명령이 기술되어져 있다. 따라서 타입 필드(16)에 레지스터와 즉치(immediate)가 Y필드(12)에 기술되어져 있는 것이 정의되어 있다.
본 예의 프로그램(43)은 3 번째 이하의 명령세트(10)도 상기와 같으며, 3 번째의 명령세트(10)의 타입 필드(16) 및 Y필드(12)에 다음의 4 번째의 명령세트(10)의 실행명령(15)의 준비정보가 기술되어져 있다. 4 번째의 명령세트(10)의 실행명령(15)은 비교처리(CMP)와, 조건분기처리(JCC)이다. 3 번째의 명령세트(10)에서, 그 타입 필드(16)와 Y필드(12)에 의해, 다음의 실행명령(15)에서 비교대상이 되는 레지스터 R1과 #END의 즉치(#FFFFFFFFH)와, 분기 수신지 #LNEXT의 어드레스(#00000500H)가 준비정보로서 기술되어져 있다. 따라서, 4 번째의 명령세트(10)의 실행명령(15)을 실행할 때는, 비교회로로서 동작하는 연산처리유닛(34)에 입력값이 세트되어져 있기 때문에, 그 사이클에서 비교결과를 얻는다. 또, 점프 어드레스가 페치 어드레스 레지스터에 세트되어져 있기 때문에, 실행명령(15)의 조건 분기에서는 비교결과에 따라, 그 사이클에서 전이 어드레스(transition address)의명령세트(10)을 페치할 수가 있다.
4 번째의 명령세트(10)에서, 그 타입 필드(16) 및 Y필드(12)에 의해, 다음의 5 번째의 명령세트(10)의 실행명령(15)인 비교처리(CMP)와 조건분기처리(JCC)의 준비정보로서, 비교하는 레지스터의 정보(R0 및 R1)와, 분기 수신지 #LOOP의 어드레스(#00000496H)가 기술되어져 있다. 따라서, 4 번째의 명령세트와 동일하게, 5 번째의 명령세트(10)를 실행하면, 이미 X필드(11)에 기술된 CMP와 JCC를 연산처리유닛(34)에서 실행하는 인터페이스는 준비되어 있으므로, 그 사이클에서 비교 및 조건분기처리가 실행된다.
그 5 번째의 명령세트(10)의 Y필드(12)에, 다음의 6 번째의 명령세트(10)의 실행명령인 이행처리(MOVE) 및 분기처리(JMP)의 준비정보로서, 소스측 레지스터 정보(R1)와 전이(轉移) 수신지 #LOOP의 어드레스가 기술되어져 있다. 따라서, 6 번째의 명령세트(10)를 실행하면, 그 사이클에서 데이터를 수신지의 레지스터(R0)에 저장하고, 전이(轉移) 수신지 #LOOP의 어드레스에서 명령을 페치할 수가 있다.
이와 같이 본 발명의 명령세트에 의하면, 실행명령과 그 실행명령을 행하기 위한 인터페이스 등을 기술한 준비명령과 분리할 수가 있고, 또한 준비명령을 실행명령에 우선하여 페치되는 명령세트에 기술하여 처리할 수가 있다. 따라서, 각 각의 명령세트에 기술된 실행명령을 행하는 때에는, ALU(34)의 소스측에 데이터가 판독되어져 있기 때문에, 순수하게 산술명령만을 행할 수 있게 된다. 따라서, AC 특성도 좋고, 실행주파수특성이 향상된다. 게다가, 실행명령에 있어 전 후의 차이가 있지만 종래의 파이프라인과 마찬가지로 명령페치, 레지스터 디코드, 처리실행 등을 단계적으로 행할 수 있으며, 처리량도 향상시킬 수 있다.
또 본 예의 프로그램은 두 개의 명령을 하나의 명령에 기술할 수 있도록 되어 있으므로 VLIW와 마찬가지로 프로그램 카운터 근처의 다수 명령을 병렬실행하는 것에 의해 처리속도를 향상시킬 수 있다.
또한 4번째의 명령세트의 실행명령필드(15)에는 각 조건분기가 기술되어져 있어 그 분기 수신지의 어드레스는 이 명령세트에 선행하는 3 번째의 명령세트의 Y필드(12)에 기술되어져 있다. 따라서, 4 번째의 명령세트를 실행하는 시기에, 또는 그것에 우선하여 페치 레지스터에 분기 수신지의 어드레스를 세트하고, 분기조건이 성립한 때에 페날티 없이 분기 수신지의 명령세트를 프리 페치해둘 수 있으며, 분기 목적지의 실행명령을 실행하는 준비를 사전에 조정해 둘 수 있게 된다. 따라서 분기 수신지의 명령이라도 1 클럭의 소비도 없이 실행할 수 있고, 1 클럭 단위로, 처리를 정확하게 정의할 수 있다.
또한, 도 9에는 본 발명의 명령세트(10)의 Y필드(12)를 이용하여 데이터 플로우를 정의하고, 그 데이터 플로우에 의해 상기와 동일한 처리를 행하는, 본 발명의 프로그램(44)을 도시하고 있다. 이 프로그램(44)에 기술된 데이터 플로우 지정명령(25)안의 DFLWI는 데이터 플로우의 초기설정을 행하는 명령이며, DFLWC는 데이터 플로우 (데이터 패스)를 구성하는 연산처리유닛(34)의 접속정보(인터페이스의 정보) 및 처리내용을 정의하는 명령이다. 또, DFLWT는 데이터 플로우의 종료조건을 규정하는 명령이며, 마지막에 상기와 같이 정의된 데이터 플로우에 데이터를 입력하여 처리를 행하는 DFLWS가 기술되어져 있다. 이들의 데이터 플로우 지정명령(25)은 Y필드(12)에 준비정보로서 기술되어져, 제 2 실행제어유닛(33)에서 디코드되어, 처리유닛(34)에서 데이터 처리를 행하기 위한 배치(configurations)가 세트되어 진다.
도 9에 나타낸 본 예의 프로그램(44)을 실행하는 때에, 프로그램의 데이터 플로우 지정에 따라 제 2 실행제어유닛(33)이 제 2 제어공정으로서 처리유닛의 입력 및/또는 출력 인터페이스를 그 처리유닛의 실행시기와 독립하여 설정하고, 처리유닛의 처리내용도 정의하는 처리를 수행한다. 또한 제 2 실행제어유닛(33)은 스케쥴러(36)로서도 기능하며, 제 2 제어공정으로서 각 처리유닛의 인터페이스를 유지하는 스케쥴을 관리한다.
이를 위해 도 10에 나타낸 것과 같이 스케쥴러(36)로서 기능하는 제 2 실행제어유닛(33)에 의해 3개의 연산처리유닛(34)의 인터페이스(입출력)와 그 처리내용이 규정되고, 그 상태 또는 배치(configuration)의 종료조건이 성립할 때 까지 유지 되어 진다. 따라서 이들의 연산처리유닛(34)에 의해 구성되는 데이터 플로우 또는 데이터 패스에 의해, 프로그램 카운터와 독립하여 도 6에 나타낸 처리와 동일한 처리를 차례로 진행한다. 다시 말하면 데이터 플로우 지정을 행하는 것에 의해, 3개의 연산처리유닛(34)에 의해 제어유닛(30)속에 그 처리를 위한 전용회로가 사전에 설계되어진 상태가 되어, 프로그램 카운터의 제어로부터 벗어나 최대치를 획득하는 처리를 실행할 수 있다. 그리고, DP1.SUB로서의 기능을 수행하는 ALU(34)가 DP1.R1과 #END가 동일하게 되어진다고 판단되면, 데이터 플로우가 종료된다.
따라서, 도 9로부터 알 수 있듯이 데이터 플로우를 정의함으로써 분기명령을사용하지 않고 도 6 또는 도 7에 기재된 프로그램을 동일하게 처리할 수 있다. 따라서 범용의 제어유닛(30)이면서도, 전용회로를 구비한 제어유닛과 같이 특정의 처리를 고속으로, 또 효율 좋게 수행할 수 있다.
본 발명의 명령세트 및 제어유닛에 의해, 여러 종류의 처리를 행하는 데이터 플로우 또는 의사(pseudo) 데이터 플로우를 제어유닛에 설계할 수 있다. 이 데이터 플로우들은 템플리트로서, 다른 처리 또는 다른 프로그램에도 적용할 수 있는 것이며, 소프트웨어를 이용하여 수시로 하드웨어를 특정의 데이터 처리에 적합한 구성으로 변경할 수 있고, 이를 다른 프로그램 또는 다른 하드웨어에 있어서도 실현할 수 있는 것을 의미한다. 그리고, 이와 같은 데이터 플로우를 다수로 설정할 수도 있으며, 멀티커맨드 스트림(multi-command stream)을 소프트웨어를 사용하여 제어유닛 안에 정의할 수 있다. 따라서 다수의 처리를 병렬실행하는 것이 극히 간단해지고, 그 실행의 내용을 프로그래밍에 의해 자유롭게 제어할 수 있다.
도 11에 본 예의 X필드(11) 및 Y필드(12)를 구비한 명령세트(10)에 의해 데이터 플로우를 정의할 수 있는 다수의 처리유닛(템플리트)을 구비한 데이터 처리장치의 개략적인 구성을, 시스템 LSI(50)의 이미지로 도시하고 있다. 이 시스템 LSI(50)는 데이터의 처리동작을 행하는 프로세서 영역(51)과 그 프로세서 영역(51)의 처리를 제어하는 프로그램(18)이 저장된 코드 램(52)과 그 밖의 제어정보 또는 처리용의 데이터를 기억하고, 또한 일차적인 워크(work)영역도 되는 데이터 램(53)을 구비하고 있다. 프로세서영역(51)은 프로그램 코드를 페치하는 페치유닛(FU)(55)과, 다목적 처리를 수행하는 범용적인 데이터 처리장치(다목적ALU, 제 1 제어유닛)(56)와, 데이터 플로우 방식으로 데이터를 처리할 수 있는 데이터 플로우 처리유닛(DFU, 제 2 제어유닛)(57)을 구비하고 있다.
본 예의 LSI(50)는 하나의 명령세트(10)에 한 조의 X필드(11) 및 Y필드(12)를 포함하는 프로그램 코드를 디코드하여 처리를 실행하도록 되어 있다. 이를 위해 FU(55)는 페치한 명령세트(10)의 X필드(11)의 명령을 저장할 수 있는 페치 레지스터(FR(X))(61x)와 Y필드(12)의 명령을 저장할 수 있는 페치 레지스터(FR(Y))(61y)를 구비하고 있다. 또 FR(X)(61x)에 래치된 명령을 디코드하는 X디코더(62x)와, FR(Y)(61y)에 래치된 명령을 디코드하는 Y디코더(62y)를 구비하고 있다. 또 이들의 디코더(62x, 62y)의 디코드 결과에 따라 다음의 명령세트의 어드레스가 저장되고, 프로그램 카운터로서 기능하는 레지스터(PC)(63)를 구비하고 있다. 따라서 코드 램(52)에 저장되어 있는 프로그램의 소정의 어드레스로부터 다음의 명령세트를 수시로 페치할 수 있다.
본 예의 LSI(50)에 있어서, X디코더(62x)가 상술한 제 1 실행제어유닛(32)으로서의 기능을 수행한다. 따라서 X디코더(62x)가 명령세트(10)의 X필드(11)에 기술된 실행명령에 근거하여, 본 발명의 제 1 제어공정을 실행한다. 또 Y디코더(62y)가 제 2 실행제어유닛(33)으로서의 기능을 수행한다. 따라서, Y디코더(62y)가 명령세트(10)의 Y필드(12)에 기술된 준비정보에 근거하여, 본 발명의 제 2 제어공정을 실행한다. 다시 말하면, 본 예의 데이터 처리장치의 제어에서, 페치유닛(55)에 있어, 본 발명의 명령세트를 페치하는 공정이 수행되며, X디코더(62x)에 있어, 제 1 필드의 실행명령을 디코드하고, 그 실행명령의 연산 또는 다른 데이터 처리가 실행될수 있도록 미리 설정된 처리유닛에 의해 당해 연산 또는 다른 데이터 처리를 진행하는 제 1 제어공정이 수행되고, Y디코더(62y)에 있어, 제 1 제어공정과 독립하여, 제 2 필드의 준비정보를 디코드하고, 처리유닛의 상태를 연산 또는 다른 데이터처리가 실행될 수 있도록 설정하는 제 2 제어공정이 수행되어진다.
다목적 ALU(56)는 도 5에서 설명한 연산유닛(ALU)(34)과 이 ALU(34)의 입출력의 데이터를 저장하는 레지스터군(35)를 구비하고 있다. FU(55)에서 디코드된 명령이 ALU(34)의 실행명령과 준비명령이라면, X디코더(62x)로 디코드된 신호øx와 Y디코더(62y)에서 디코드된 신호øy는 다목적 ALU(56)에 공급되어지고, 상기에 설명한 바와 같이 ALU(34)에서 처리가 실행되어진다.
DFU(57)는 다양한 처리를 행하는 데이터 플로우 또는 의사 데이터 플로우를 구성하기위해 다수의 템플리트(71)가 배치된 템플리트 영역(72)을 구비하고 있다.각각의 템플리트(71)는 도 9 및 도 10에 근거로 설명한 바와 같이 연산처리유닛(ALU) 등과 같은 특정의 데이터 패스 또는 데이터 플로우로서의 기능을 구비하고 있는 처리유닛(처리회로)이다. 그리고, Y필드(12)에 준비정보로서 기술된 데이터 플로우 지정명령(25)을 Y디코더(62y)가 디코드하고, 그 신호øy에 의해 DFU(57)의 처리유닛인 템플리트(71) 제 각각의 인터페이스와 처리내용을 규정할 수가 있다.
따라서 이들의 템플리트(71)의 접속 및 처리내용을 Y필드(12)에 기술한 데이터 플로우 지정명령(25)에 의해 변경할 수가 있다. 따라서 이들의 템플리트(71)의 조합에 의해 템플리트영역(72)에 특정의 데이터 처리에 적합한 데이터 패스를 프로그램(18)의 데이터 플로우 명령(25)에 따라 유연하게 구성할 수 있게 된다. 따라서, 프로세서(51)안에 특정의 처리를 위한 전용회로가 설계되어지고 그 곳에서의 처리는 프로그램 카운터의 제어로부터 벗어나 실행할 수 있다. 다시 말하면, 데이터 플로우 지정명령(25)에 따라 템플리트(71)의 입출력과 처리내용을 변경할 수 있기 때문에, 본 예의 프로세서(51)는 소프트웨어를 이용하여 하드웨어를 수시로 특정의 데이터 처리에 적합한 구성으로 변경할 수가 있다.
도 12(a)에 나타낸 것 과 같이 본 예의 프로세서(51)의 DFU(57)에서 입력데이터 ø in에 처리를 가하여 출력데이터 øout로 하는 경우, 예를 들어 도 12(b)에 나타낸 것과 같이 템플리트 1-1, 1-2 및 1-3을 직렬로 이어진 데이터 처리를 행할 수 있도록 템플리트(71)의 인터페이스를 데이터 플로우 지정명령(25)에서 설정할 수 있다. 동일하게 템플리트영역(72)의 다른 템플리트(71)에 대해서도 그들의 인터페이스를 세트하여 다수개의 템플리트(71)를 적당하게 조합하여 데이터 패스 또는 데이터 플로우를 구성할 수 있으며, 템플리트영역(72)에 입력데이터 øin 의 처리에 적합한 전용처리유닛 또는 전용데이터 패스(73)를 프로그램에 의해 수시로 다수(多數)개로 구축할 수 있다.
한편, 입력데이터 øin에 대한 처리가 변했을 경우는 도 12(c)에 나타낸 것 과 같이 데이터 플로우 지정명령(25)에 의한 템플리트(71)간의 접속을 변경할 수 있다. 다시말하면, 데이터 플로우 지정명령(25)을 Y디코더(62y)가 디코드하고, 해당하는 템플리트(71)의 인터페이스를 변경할 수 있다. 이와 같은 Y디코더(62y)로서의 제어(제 2 제어공정)에 의해 템플리트 1-1, 2-n 및 m-n을 직렬로 접속하여, 그밖의 다른 처리를 실행하기에 적합한 한 개 또는 다 수의 데이터 패스(73)를 템플리트영역(72)에 구축할 수 있다.
또한, 템플리트(71)를 단독으로, 또는 다수의 템플리트(71)를 조합하여 구성된 처리유닛은 병렬하여 실행되는 다른 처리유닛 또는 다른 프로그램에 할당할 수 있다. 다수의 프로세서(51)가 적당한 패스로 접속되어져 있다면, 다른 프로세서(51)가 주(主)로서 수행하고 있는 데이터 처리를 위해 템플리트(71)를 조합한 트레인((train)데이터 패스))(73)을 구성할 수 있으며, 템플리트(71)라고 하는 데이터 처리자원을 극히 유효하게 활용할 수 있다.
또한 AND나 OR 등의 단순한 논리게이트의 실현을 커버하기 위한 목적의 FPGA와 구별되며, 본 발명에 따른 템플리트(71)는 ALU 등으로서의 기능 또는 논리게이트를 기본적으로 구비한 특정의 데이터 패스를 내부에 실장하는, 보다 높은 레벨에서의 데이터 처리유닛이다. 그리고, 데이터 플로우 지정명령(25)에 의해, 템플리트(71)의 인터페이스를 정의하는, 또는 재정의하여 그들의 조합을 바꾸어 특정의 처리에 적합한 보다 큰 데이타 패스를 구성하고 있다. 또한 데이터 플로우 지정명령(25)에 의해 템플리트(71)에서 실행되는 처리내용을 정의할 수 있지만, 그 때도 템플리트(71)안의 ALU 또는 다른 논리게이트 등의 접속을 변경하여, 템플리트(71)의 내부 데이타 패스의 일부를 선택하는 형태이며, 템플리트(71)에서 실행하는 처리내용을 정의하도록 되어 있다.
따라서, 본 예의 템플리트(71)가 다수로 배치된 DFU(57)의 하드웨어를 특정의 데이터 처리에 적합한 구성으로 변경할 때에는 FPGA와 같이 칩 전체를 또는 한정된 논리블록 단위로 매핑을 다시 할 필요도 없이, 템플리트(71) 또는 템플리트영역(72)에 미리 설계된 데이터 패스를 교체하거나, 그들의 일부를 선택하는 것으로 미리 준비된 ALU 또는 논리게이트를 사용하여 소망의 데이터 패스를 실현할 수 있다. 다시 말하면, 템플리트(71) 내부에는 논리게이트의 연결을 필요한 범위로 재설정하고, 템플리트(71)간에도 연결이 필요한 범위에서 재설정하는 것만으로 무방하다. 따라서 극히 단시간에 클럭 단위로 하드웨어를 특정의 데이터 처리에 적합한 구성으로 변경할 수가 있다.
또한 논리게이트가 내장되어 있지 않은 FPGA는 극히 범용적이나, 특정의 어플리케이션 기능을 실현하는 로직(logic)회로를 형성하기 위해서는 필요 없는 배선도 많아지고, 여분의 신호경로도 짧게 할 수 없다. 따라서, 실행하는 어플리케이션에 특화한 ASIC에 대해 실장면적이 커지고, 또 AC특성도 떨어진다. 따라서 미리 적당한 논리게이트를 내장하고 있는 본 예의 템플리트(71)를 채용한 프로세서(51)에서, FPGA와 같이 매우 불필요한 영역이 발생하는 것을 방지할 수 있고, AC특성도 개선할 수 있다. 따라서, 템플리트(71)를 베이스로 한 본 예의 데이터 처리유닛(57)은 하드웨어를 프로그램으로 변경할 수 있는 재구성이 용이한 처리유닛으로서, FPGA를 채용한 처리장치에 비해 보다 높은 레벨에서 소프트웨어의 유연성과 하드웨어의 고속성을 구비한 데이터 처리장치를 제공할 수 있다.
그리고, 본 예의 템플리트(71)는 적당한 논리게이트를 미리 내장하고 있으므로, 특정의 어플리케이션 처리를 실현하기 위해 필요한 논리게이트를 적당한 실장밀도로 실현할 수 있다. 때문에 템플리트(71)를 사용한 데이터 처리유닛은 경제적이다. 또 FPGA로 데이터 처리장치를 구성한 경우 실장밀도의 저하를 커버하기 위해 논리를 재구성하는 프로그램의 다운로드를 빈번히 수행하는 것을 검토할 필요가 있어, 이를 위한 시간도 처리속도가 저하되는 원인이 된다. 이에 비해 본 예의 템플리트(71)를 사용한 프로세서(51)는 실장밀도가 높기 때문에 그 저하를 커버할 필요성이 감소하고, 실장밀도의 저하를 보상하기 위한 하드웨어를 재구성할 필요가 적어진다. 그리고, 하드웨어의 재구성도 클럭 단위로 제어할 수 있다. 이러한 점에서, FPGA를 베이스로 한 재구성이 용이한 처리장치와 구별되고, 하드웨어를 소프트웨어에 의해 재구축할 수 있는 처리장치이므로, 간단히 실행속도가 빠른 데이터 처리장치를 제공할 수 있다.
게다가, 도 11에 나타낸 DFU(57)는 템플리트영역(72)에 배치된 템플리트(71)의 인터페이스 및 처리내용(이하에서는 배치 데이터(configuration data))을 일괄하여 정의 또는 세트할 수 있는 배치 레지스터(CREG)(75)와, 그 CREG(75)에 세트되는 다수의 배치 데이터 Ci(i는 적당한 정수(integer)를 나타내며, 이하에서도 같다)를 기억한 배치 램(CRAM)(76)을 구비하고 있다. 그리고, 데이터 플로우 지정명령(25)으로서 「DFSET Ci」라고 하는 명령이 준비되어져 있어, Y디코더(62y)가 이 명령을 디코드하면, CRAM(76)에 기억되어져 있는 배치 데이터 Ci 내부로부터 소망의 데이터가 CREG(75)에 로드된다. 그 결과 템플리트영역(72)에 배치된 다수의 템플리트(71)의 배치를 일괄하여 변경할 수 있다. 또는 다수의 템플리트(71)로부터 이루어진 처리 블록 단위로 그 배치를 변경할 수 있다.
또한 DFLWI 또는 DFLWC 라고 한 상기의 데이터 플로우 지정명령(25)을 Y디코더(62y)가 디코드하여 개개의 템플리트(71)의 배치를 설정 또는 변경할 수 있다. 따라서 본 예의 DFU(57)에서는 많은 정보가 필요하게 되는 다수의 템플리트(71)의 배치를 하나의 명령으로 변경할 수 있으며, 명령효율이 높아지고, 또 재구성을 위해 소비되어지는 시간이 단축되어진다.
게다가, 본 예의 DFU(57)는 CRAM(76)에 블록단위로 배치 데이터를 다운로드하는 컨트롤러(77)를 구비하고 있다. 또 데이터 플로우 지정명령(25)으로서 「DFLOAD BCi」가 준비되어 있어, Y디코더(62y)가 이 명령을 디코드하면, 데이터 램(53) 등에 미리 준비되어져 있는 다수의 배치 데이터(78)의 내부로부터, 진행중인 처리 또는 앞으로 발생할 처리를 위한 배치 데이터 Ci를 미리 배치 메모리인 CRAM(76)에 다운로드할 수 있다. 이러한 구성에 의해 CRAM(76)에 소용량이며 고속인 결합(associative)메모리 등을 채용할 수 있으며, 또 단시간에 하드웨어를 유연성있게 변경할 수 있다.
도 13에 템플리트(71)의 하나의 예를 나타내고 있다. 이 템플리트(71)는 DFU(57)에 준비된 데이터 플로우 램(DFRAM)(79)을 통해서 다른 템플리트(71)와 데이터를 교환할 수 있는 구성이어서, I/O 인터페이스(81)를 통하여 다른 템플리트(71)의 처리결과가 입력 캐시(82a ∼ 82d)에 입력되어지고, 처리된 결과는 출력 캐시(83a ∼ 83d)에 출력된다. 이 템플리트(71)는 이들의 입력 캐시(82a ∼ 82d)에 각각 저장된 데이터 A, B, C 및 D 에 대해 이하의 처리를 실행하고, 연산결과는 출력 캐시(83b)에, 비교한 결과는 출력 캐시 (83c)에 저장할 수 있는 데이터 패스(88)를 구비하고 있다. 이 템플리트(71)의 처리결과는 재차 I/O인터페이스(81) 및 DFRAM(79)을 통해 다른 템플리트에 출력된다.
IF A == ?
THEN (C+B)==D
ELSE (C-B)==D · · · (A)
이 템플리트(71)는 독자적인 배치 레지스터(84)를 구비하고 있어, 이 레지스터(84)에 저장된 데이터에 의해 다수의 셀렉터(89)를 제어하고, 제어부(85), 가산기(86), 비교기(87) 등의 논리게이트에 입력되는 신호를 선택할 수 있다. 따라서, 템플리트(71)는 배치 레지스터(84)의 데이터를 변경하여 데이타 패스(88)의 일부를 사용한 처리도 할 수 있으며, 예를 들어 제어부(85)를 사용하지 않고, 이하와 같은 처리를 실행시킬 수 있다.
(B+C)==D
(B-C)==D · · · (B)
또, 동일하게 배치 레지스터(84)의 데이터를 변경하는 것에 의해 이 템플리트(71)는 데이터 패스(88)의 일부를 이용하여, 제어부(85)에 의한 조건판정회로, 가산기(86)를 이용한 가감연산회로, 비교기(87)를 이용한 비교회로로서도 사용할 수 있다. 이들의 논리게이트는 템플리트(71)에 미리 만들어진 전용회로로 구성되어 있기 때문에 회로구성으로서도, 또 처리시간으로서도 허비되는 것이 없다. 그리고, 입력 및 출력 데이터의 배치는 배치 레지스터(84)에 의해 제어되는 인터페이스(81)에 의해 변경할 수 있어 소망의 데이터 처리를 행하는 데이터 플로우의 전부 또는 일부를 본 예의 템플리트(71)로 처리할 수 있다.
이 템플리트(71)는 또한 독자적인 배치 레지스터(84)의 데이터를 상술한 CREG(75)에서의 데이터와, FU(55)의 Y데이터(Y DEC)(62y)중 어느 것을 근거로 하여도 고쳐 쓰기를 할 수 있으며, 그 선택은 Y디코더(62y)에서의 신호에 따라 제어할 수 있다. 다시 말하면, 상술한 바와 같이 템플리트(71)의 배치는 데이터 플로우 지정명령(25)에 근거하여 Y디코더(62y) 또는 이 Y디코더(62y)에서 실행되는 제 2 제어공정에 의해 행해 질 수 있다. 또한 DFSET 명령 등에 의해 CRAM(76)에 기억된 배치 데이터 Ci에 따라, 다른 템플리트와 함께 배치(configuration)를 바꾸어 하드웨어를 변경할 수 있다. 또 데이터 플로우 지정명령에 (25)에 의해 배치 레지스터(84)의 데이터를 설정할 수 있기 때문에 템플리트(71)의 특정의 데이터 패스(88)을 부분적으로 선택하여 사용할 수도 있다.
따라서 템플리트(71)를 개별적으로도, 그룹 또는 블록단위로도 데이터 지정명령(25)에 위해 배치를 바꾸어 프로세서(51)의 데이터 패스를 유연하게 구성할 수 있다.
템플리트(71) 구성은 본 예에 한정 되는 것이 아니고, 다른 데이터 처리를 실현할 수 있도록 논리게이트를 조합시킨 적당한 종류와 수의 템플리트를 준비하여 두고, 이들의 조합을 바꾸거나, 처리내용의 일부를 변경하여 많은 종류의 데이터 처리를, 템플리트(71)를 조합한 데이터 패스에 의해 처리할 수 있다. 다시 말하면, 본 발명에 의하면, 어느정도 간결한 데이터 패스를 몇 종류의 템플리트로서 준비해 두고, 이 데이터 패스간의 조합을 지시하여, 데이터 플로우형 처리에 전담함으로써 보다 고성능화를 도모할 수 있다. 그리고, 템플리트로 대응할 수 없는 처리는 프로세서(51)의 다목적 ALU(56) 기능을 이용하여 실행할 수 있다. 게다가 본 예의 다목적 ALU(56)는 명령세트(10)의 Y필드(12)에 기술된 준비명령에 따라 분기 등에 의해 발생하는 페날티(penalty)를 최소화할 수 있도록 되어 있다. 따라서 본 예의 프로세서(51)를 탑재한 시스템 LSI(50)에 의해 프로그램에서 처리를 기술하는 것과 같이 유연하게 하드웨어를 변경하고, 고속처리 또는 실시간처리를 할 수 있는 고성능 LSI를 제공할 수 있다. 또한 어플리케이션의 변경이나 사양 변경 등에 대해서 유연하게 대응할 수 있어, 사양변경 등에 동반한 처리성능의 저하를 방지할 수 있다.
시스템 LSI(50)를 개발 또는 설계하는 시점에서, 시스템 LSI(50)를 사용하여 실행하는 어플리케이션의 개요가 판명되는 경우에, 그 어플리케이션 처리에 적합한 구성의 템플리트를 중심으로 템플리트영역(72)을 구성할 수 있어, 보다 많은 데이터 처리를 데이터 플로우형 처리로서 실행되고, 처리성능을 향상시킬 수 있다. 범용적인 LSI를 제공하는 경우에는 부동소수점연산, 승제산, 화상처리 등의 범용의 어플리케이션에서 많이 발생하는 처리에 적합한 템플리트를 중심으로 템플리트영역(72)을 구성할 수 있다.
이와 같이 본 발명의 명령세트 및 제어유닛에 의해, 여러 종류의 처리를 행하는 데이터 플로우 또는 의사(pseudo)데이터 플로우를 구비한 LSI를 제공할 수 있어, 소프트웨어를 이용하여 데이터 플로우를 실행하는 하드웨어를 수시로, 특정의 데이터 처리에 적합한 구성으로 변경할 수 있다. 또한 상기에 설명한 템플리트의 조합에 의해 데이터 플로우형 처리를 실행하는 아키텍처, 즉 DFU(57) 또는 템플리트영역(72)은 X필드(11) 및 Y필드(12)를 구비한 명령세트(10)와 독립적으로 제어유닛이나 프로세서에 합체(合體)할 수 있다. 그리고, FPGA보다도 고속으로 처리할 수 있고, 하드웨어의 변경에 걸리는 시간도 짧으며, AC특성도 좋은 데이터 처리장치를 제공할 수 있다.
게다가, 본 예의 DFU(57) 또는 템플리트영역(72)을 종래 범용의 합체 프로세서, 다시 말하면, 니모닉(mnenonic)한 코드로 동작하는 프로세서와 함께 합체하여 시스템 LSI를 구성할 수 있으며, 템플리트(71)로서 대응할 수 없는 처리는 범용의 프로세서로 처리할 수 있다. 하지만 종래의 프로세서로는 분기의 페날티나 연산처리를 위한 레지스터를 준비하기 위한 클럭을 소비하는 등의 문제가 있음은 상술한 바 와 같고, 본 예의 X - Y필드를 구비한 명령세트(10)를 디코드하여, 실행할 수 있는 프로세서(51)와 같은 형태가 바람직하다.
또한 본 예의 프로세서(51) 및 명령세트(10)가 있다면, Y필드(12)를 이용하여, 다른 처리와 병렬되고, DFU(57)의 배치를 데이터 처리 실행전에 설정 또는 변경할 수 있어, 처리효율 및 프로그램 효율의 측면에서 우수하다. 종래의 니모닉(mnemonic)한 명령코드와, 데이터 플로우형 명령코드를 하나의 명령세트에 기술할 수 있어 프로그램 효율을 향상시킬 수 있다. 하지만 본 예의 명령세트(10)의 Y필드(12)의 기능은 데이터 플로우형 명령코드를 기술하는 것만이 아님은 상술한 바와 같다.
또한 본 발명에 따른 프로세서는 Y필드(12)에 의한 실행에 앞서 데이터 패스를 바꿀 수 있다. 이에 비해 종래의 프로세서는 다수의 멀티 프로세서간의 접속방법이 공유메모리 등을 통하는 방법 밖에 존재하지 않았고, 유휴상태의 프로세서가존재하여도, 그 내부의 처리유닛을 외부로부터 이용하는 방법이 없었다. 본 발명에 따른 제어유닛은 적당한 데이터 플로우를 설정하여, 남아 있는 하드웨어를 다른 제어유닛에 의해 사용할 수도 있다.
또한 부차적인 효과로서, 명령실행 시퀀스(sequence)의 효율화와, 내부 데이터 패스의 독립성의 확보와, 자유도(自由度) 또는 유용도(流用度)의 향상에 따라 본 발명에 따른 제어유닛 또는 그것을 이용한 프로세서에서, 실행하는 하드웨어에 여유만 있다면, 전혀 성질이 다른 컨텍스트(context)의 명령 시퀀스를 동시에 공급하여도 아무런 문제없이 실행할 수 있다.
현재, 하드웨어와 소프트웨어의 강조설계(强調設計,cooperate design)에 의한 잇점이 활발하게 논의되고 있지만, 본 발명에 따른 명령세트 및 제어유닛을 채용함으로써, 허용될 수 있는 하드웨어 비용내에서 사용자측이 요구하는 알고리즘이나 데이터 처리를 어떻게 효율좋게 그리고 경제적으로 실현할 것인가 하는 것에 대한 하나의 해법을 줄 수가 있다. 예를 들어 하드웨어 비용을 최소한 억제하면서, 성능향상에 공헌할 수 있는 데이터 패스(데이터 플로우), 즉 과거의 데이터 패스에 관한 구성결과정보인 본 발명에 따른 명령세트(구(舊) DAP/DNA)의 데이터 정보와, 그 후에 추가되는 하드웨어 구성정보 및 데이터 처리를 실행하는 시퀀스 정보로부터 새로운 타입을 조합한 결과, 다시 말하면 새로운 데이터 플로우를 정의하는 소프트웨어를 이끌어 내어, 불필요한 것이 극히 적은 최적의 해법을 제공할 수 있다.
또한 종래 하드웨어구성이 요소화 하기 어렵기 때문에, 그 상호의 조합 자체의 유연성이 없어, 기본적으로 성능을 올리기 위해서는 하나의 새로운 데이터 패스를 추가하는 것 같은 방편이 주류였다. 그리고, 성능향상을 위한 정보축적의 점에 있어서, 실제로 그것을 실현한 결과 필요하게 되는 하드웨어 정보의 추가라는 관점에서도 수치화하기 어렵고, 데이터 베이스(data base)화 하는 것이 곤란했다. 이에 비해 본 발명에 의하면, 어느정도 간결한 데이터 패스를 몇개의 템플리트로 준비해 두고 그 데이터 패스간의 조합을 지시하고, 데이터 플로우형 처리에 지정함으로써 고성능화를 도모할 수 있다. 그리고, 극히 미세한 단위에서도 하드웨어와 소프트웨어간의 협조도 용이하게 추정될 수 있다. 또 하드웨어와 소프트웨어의 서로 교환하는 정보를 축적할 수도 있어, 데이터 패스 조합의 가능성은 처리상태에 대한 공헌도와 밀접하게 연결되어 있다. 따라서 하드웨어와 소프트웨어의 긴밀한 실행성능 데이터나 처리요구에 따른 성능의 비용의 정확한 추측을 축적할 수 있다. 물론, 이들의 데이터 패스는 주요한 처리 또는 범용적인 처리의 실행을 정지시키지 아니하고 실현할 수 있기 때문에 성능요구에 대해서 무엇을 어느 정도, 어떻게 추가하면, 어떠한 결과를 예견할 수 있는가를 순전히 과거에 축적된 본 발명에 따른 명령세트 및 하드웨어의 데이터로부터 예측할 수 있다.
이는 현재 행해지고 있는 설계 비용이나 사양책정비용이 현저하게 저하되는 것만이 아니라, 다음의 새로운 설계에 대해서, 신규로 추가해야만 하는 하드웨어와 소프트웨어의 상호 교환을 필요 최소한으로 완료시킬 수 있는 것에 공헌한다. 또한, 처리상태에 대응하여, 내부의 데이터 패스를 외부로 대여하는 것도 용이하므로, 하드웨어의 자원을 공유할 수 있게 되고, 다수의 본 발명에 따른 모듈(DAP/DNA 모듈)간에서 병렬처리화를 최적화하여, 간결한 하드웨어로서 실현할 수가 있다.
상기에 나타낸 데이터 처리장치 및 명령세트 등은 본 발명의 일례에 불과하고, 예를 들어 데이터 처리장치에는 코드 램 또는 데이터 램 등을 외부의 램 또는 롬으로 하고, 이들에 부가하여 외부의 DRAM 또는 SRAM 등과의 인터페이스를 설계할 수도 있다. 또한 외부의 다른 디바이스(device)와 접속하기 위한 입출력 인터페이스 등, 시스템 LSI 등의 데이터 처리장치로서 공지의 기능을 구비한 데이터 처리장치도 본 발명에 포함된다. 따라서, 본 발명은 이하의 청구의 범위의 기재에 의해 이해 및 파악되며, 이들의 청구의 범위에 포함되는 변형예는 전부 본 발명의 범위에 포함된다.
또한, 본 발명의 명령세트 및 데이터 처리장치에 의해 제공되는 새로운 프로그래밍 환경에서, 상술한 것 이외에도 특수한 명령을 설계할 수 있다. 예켠대, 현재의 프로그램과 별개로, 1 이상의 오브젝트(프로그램)를 동시에 기동하고, 병렬처리를 명령 레벨에서 지원하는 XFORK, 오브젝트(프로그램)간의 동기(同期)를 지정하는 XSYNK, 병렬처리간의 파이프라인 결합을 명령하는 XPIPE, 현재의 오브젝트를 종료하고, 다음의 오브젝트를 기동하는 XSWITCH 등이 예가 될 수 있다.
이상과 같이 설명한 바와 같이 본 발명에 따른 명령세트 및 그를 이용한 프로그래밍 및 그를 실현할 수 있는 데이터 처리장치의 기술은, 종래의 명령세트의 구성방법 그 자체를 대폭 변경하는 것으로, 따라서 종래기술에서는 대응이 어려웠던 상술의 문제점을 손 쉽게 해결하고, 뛰어난 성능향상을 도모할 수 있다.
다시 말하면, 본 발명에 따른 명령세트는, 명령세트의 구성방법을 종래의 명령세트의 구성방법과 전혀 다른 관점에서 바라봄으로써, 종래기술에서는 해결이 극히 어렵다고 여겨지던 수 많은 문제점을 상당히 효율면에서 뛰어나게 해결하고 있다. 실제, 종래기술에서는, 그 명령세트의 구성법과 하드웨어에 의한 명령공급(획득)방법이 극히 획일적이고, 전통적인 선입관에 따라 실현되고 있기 때문에, 본질적인 의미로서의 해결이 멀기만 하고, 그 문제점 전부를 막대하고 복잡한 하드웨어 구성에 의해 해결하고자 하므로, 사회에 공헌해야 할 테크놀리지와 그에 구축되는 각종의 정보처리제품의 개발비용을 막대하게 끌어올리는 원인이 되고 있었다. 따라서 본 발명은 본래 수행되어야 할 어플리케이션의 요구를 우선하여 부여하는 명령세트를 실현함으로써, 단순히 제품성능의 효율화에 머물지 않고, 높은 개발효율과 제품의 품질보증을 얻기 쉬운 수단을 제공할 수 있다.
또한 본 발명에 의해, 성능향상에 공헌할 수 있는 데이터 패스(데이터 플로우)를 템플리트라고 하는 자원과, 그를 사용하는 명령세트라고 하는 자원으로 축적할 수 있다. 게다가 그 후에 추가되는 하드웨어 구성정보 및 데이터 처리를 실행하는 시퀀스정보에 근거하여 수시로 갱신하고, 최적의 해법을 구할 수 있도록 할 수 있다. 따라서, 종래 존재한 어플리케이션간의 자원의 공유화와 하드웨어 자원의 공유화, 및 고성능화에 대응하는 적절한 하드웨어 투자가 보다 바람직한 방향으로 나아가고, 네트워크화 사회를 구축하기 위한 테크노 인프라로서도 크게 공헌할 수 있다.
본 발명의 데이터 처리장치는 여러 종류의 데이터 처리를 실행할 수 있는 프로세서 또는 LSI 등으로서 제공할 수 있으며, 전자소자의 집적회로만이 아니고, 광소자, 나아가 전자소자 및 광소자를 집적한 광집적회로장치에도 적용될 수 있다. 특히 본 발명의 명령세트를 구비한 제어 프로그램 및 데이터 처리장치는 데이터처리를 유연하게, 그리고 고속으로 실행할 수 있기 때문에 네트워크 처리나 화상처리 등의 고속성 및 실시간 성능이 요구되는 데이터 처리장치에 최적인 발명이다.

Claims (39)

  1. 데이터 처리장치를 구성하는 적어도 하나의 처리유닛에서 실행되는 연산 또는 다른 데이터 처리의 내용을 지시하는 실행명령을 기술할 수 있는 제 1 필드와, 상기 실행명령에서 실행되는 연산 또는 다른 데이터 처리가 실행될 수 있는 상태로 상기 처리유닛을 설정하는 준비정보를 기술할 수 있는 제 2 필드를 구비한 명령세트를 포함하는 제어 프로그램 제품으로서,
    상기 제 1 필드에 기술된 상기 실행명령의 내용에 대해 독립된 연산 또는 다른 데이터 처리의 준비정보가 상기 제 2 필드에 기술된 상기 명령세트를 포함하는 제어 프로그램 제품.
  2. 제 1 항에 있어서, 상기 제 2 필드에, 후속의 상기 명령세트의 상기 제 1 필드에 기술된 상기 실행명령을 실행하기 위한 상기 준비정보가 기술된 상기 명령세트를 포함하는 제어 프로그램 제품.
  3. 제 1 항에 있어서, 상기 준비정보에 의해, 상기 처리유닛의 입력 및/또는 출력 인터페이스를, 그 처리유닛의 실행시기와 독립하여 지시할 수 있는 제어 프로그램 제품.
  4. 제 1 항에 있어서, 상기 준비정보에 의해, 상기 처리유닛의 처리내용을 지시할 수 있는 제어 프로그램 제품.
  5. 제 1 항에 있어서, 상기 데이터 처리장치는, 다수의 상기 처리유닛을 구비하고 있고, 상기 준비정보에 의해, 상기 처리유닛에 의한 데이터 패스의 조합을 지시할 수 있는 제어 프로그램 제품.
  6. 제 1 항에 있어서, 상기 처리유닛은, 특정의 내부 데이터 패스를 구비하고 있고, 상기 준비정보에 의해, 상기 내부 데이터 패스의 일부를 선택할 수 있는 제어 프로그램 제품.
  7. 제 1 항에 있어서, 상기 준비정보에 의해, 다수의 상기 처리유닛에 의해 구성되는 처리 블록의 입력 및/또는 출력 인터페이스를 지시할 수 있는 제어 프로그램 제품.
  8. 제 7 항에 있어서, 상기 데이터 처리장치는, 상기 처리블록의 입력 및/또는 출력 인터페이스를 정의하는 다수의 배치 데이터(configuration data)를 저장한 메모리를 포함하고,
    상기 준비정보에 의해, 상기 메모리에 저장된 상기 다수의 배치 데이터의 하나를 선택하고, 상기 처리블록의 입력 및/또는 출력 인터페이스를 변경할 수 있는 프로그램 제품.
  9. 제 1 항에 있어서, 상기 데이터 처리장치는, 상기 처리유닛으로서 산술논리연산유닛을 구비한 제 1 제어유닛과, 상기 처리유닛으로서 특정의 내부 데이터 패스를 구비하는 다수의 데이터 플로우 처리유닛을 구비한 제 2 제어유닛을 포함하고,
    상기 제 1 필드에, 상기 산술논리연산유닛을 조작하는 상기 실행명령이 기술되고, 상기 제 2 필드에, 상기 산술논리연산유닛 및/또는 상기 데이터 플로우 처리유닛의 인터페이스를 정의하는 상기 준비정보가 기술된 상기 명령세트를 포함하는 제어 프로그램 제품.
  10. 제 9 항에 있어서, 상기 준비정보에 의해, 상기 데이터 플로우 처리유닛에 의한 데이터 패스의 조합을 지시할 수 있는 제어 프로그램 제품.
  11. 제 9 항에 있어서, 상기 준비정보에 의해, 상기 내부 데이터 패스의 일부를 선택할 수 있는 제어 프로그램 제품.
  12. 제 1 항에 있어서, 상기 제 2 필드에, 레지스터 또는 버퍼와 메모리간의 입출력을 지시하는 명령이 기술되어 있는 제어 프로그램 제품.
  13. 제 1 항에 있어서, 상기 제 1 및/또는 제 2 필드는, 다수의 상기 실행명령또는 상기 준비정보를 기술할 수 있는 필드를 구비하고 있는 상기 명령세트를 포함하는 제어 프로그램 제품.
  14. 데이터 처리장치를 구성하는 적어도 하나의 처리유닛에서 실행되는 연산 또는 다른 데이터 처리의 내용을 지시하는 실행명령을 기술할 수 있는 제 1 필드와, 상기 실행명령에서 실행되는 연산 또는 다른 데이터 처리가 실행될 수 있는 상태로 상기 처리유닛을 설정하는 준비정보를 기술할 수 있는 제 2 필드를 구비한 명령세트를 포함하는 제어 프로그램이 기록되어져 있는 기록매체로서,
    상기 프로그램은 상기 제 1 필드에 기술된 상기 실행명령의 내용에 대해 독립된 연산 또는 다른 데이터 처리의 상기 준비정보가 제 2 필드에 기술된 상기 명령세트를 포함하는 기록 매체.
  15. 데이터 처리장치를 구성하는 적어도 하나의 처리유닛에서 실행되는 연산 또는 다른 데이터 처리의 내용을 지시하는 실행명령을 기술할 수 있는 제 1 필드와, 상기 실행명령에서 실행되는 연산 또는 다른 데이터 처리가 실행될 수 있는 상태로 상기 처리유닛을 설정하는 준비정보를 기술할 수 있는 제 2 필드를 구비한 명령세트를 포함하는 제어 프로그램이 내장되어 있는 전송매체로서,
    상기 프로그램은 상기 제 1 필드에 기술된 상기 실행명령의 내용에 대해 독립된 연산 또는 다른 데이터 처리의 상기 준비정보가 제 2 필드에 기술된 상기 명령세트를 포함하는 전송매체.
  16. 연산 또는 다른 데이터의 처리를 실행하는 적어도 하나의 처리유닛과,
    상기 처리유닛에서 실행되는 연산 또는 다른 데이터 처리의 내용을 지시하는 실행명령을 기술할 수 있는 제 1 필드, 및 상기 실행명령으로 실행되는 연산 또는 다른 데이터 처리가 실행될 수 있는 상태로 상기 처리유닛을 설정하는 준비정보를 기술할 수 있는 제 2 필드를 구비하는 명령세트를 페치할 수 있는 유닛과,
    상기 제 1 필드의 상기 실행명령을 디코드하고, 그 실행명령의 연산 또는 다른 데이터 처리가 실행될 수 있도록 미리 설정된 상기 처리유닛에 의해 당해 연산 또는 다른 데이터 처리를 진행하는 제 1 실행제어유닛과,
    상기 제 2 필드의 상기 준비정보를 디코드하고, 상기 제 1 실행제어유닛의 실행내용과 독립하여 상기 처리유닛의 상태를 연산 또는 다른 데이터 처리가 실행될 수 있도록 설정하는 제 2 실행제어유닛을 포함하는 데이터 처리장치.
  17. 제 16 항에 있어서, 상기 제 1 또는 제 2 실행제어유닛은, 상기 제 1 또는 제 2 필드에 기술된 다수의 독립된 상기 실행명령 또는 상기 준비정보를 독립하여 처리할 수 있는 다수의 실행제어부를 구비하고 있는 데이터 처리장치.
  18. 제 16 항에 있어서, 상기 제 2 실행제어유닛은, 상기 처리유닛의 입력 및/또는 출력 인터페이스를, 그 처리유닛의 실행시기와 독립하여 설정하는 데이터 처리장치.
  19. 제 16 항에 있어서, 상기 제 2 실행제어유닛은, 상기 처리유닛의 처리내용을 정의하는 데이터 처리장치.
  20. 제 16 항에 있어서, 다수의 상기 처리유닛을 포함하고, 상기 제 2 실행제어유닛은, 이 들의 처리유닛에 의한 데이터 패스의 조합을 제어하는 데이터 처리장치.
  21. 제 16 항에 있어서, 상기 처리유닛은, 특정의 내부 데이터 패스를 구비하고 있는 데이터 처리장치.
  22. 제 16 항에 있어서, 상기 처리유닛은 적어도 하나의 논리게이트와, 이 논리게이트와 입출력 인터페이스를 접속하는 내부 데이터 패스를 구비하고 있는 데이터 처리장치.
  23. 제 21 항에 있어서, 상기 제 2 실행제어유닛은, 상기 준비정보에 의해, 상기 처리유닛의 상기 내부 데이터 패스의 일부를 선택할 수 있는 데이터 처리장치.
  24. 제 16 항에 있어서, 상기 제 2 실행제어유닛은, 상기 준비정보에 의해, 다수의 상기 처리유닛에 의해 구성되는 처리블록의 입력 및/또는 출력 인터페이스를 변경할 수 있는 데이터 처리장치.
  25. 제 24 항에 있어서, 상기 처리블록의 입력 및/또는 출력 인터페이스를 정의하는 다수의 배치 데이터를 저장한 메모리를 포함하고,
    상기 제 2 실행제어유닛은, 상기 준비정보에 의해 상기 메모리에 저장된 상기 다수의 배치 데이터 중 하나를 선택하고, 상기 처리블록의 입력 및/또는 출력 인터페이스를 변경할 수 있는 데이터 처리장치.
  26. 제 16 항에 있어서, 상기 제 2 실행제어유닛은, 상기 처리유닛의 인터페이스를 관리하는 스케쥴러로서의 기능을 구비하고 있는 데이터 처리장치.
  27. 제 16 항에 있어서, 상기 처리유닛으로서 산술논리연산유닛을 구비한 제 1 제어유닛과, 상기 처리유닛으로서 특정의 데이터 패스를 구비하는 다수의 데이터 플로우 처리유닛을 구비한 제 2 제어 프로그램을 포함하고,
    상기 제 1 실행제어유닛은, 상기 산술논리연산유닛을 조작하며,
    상기 제 2 실행제어유닛은, 상기 산술논리연산유닛 및/또는 상기 데이터 플로우 처리유닛의 인터페이스를 설정하는 데이터 처리장치.
  28. 제 27 항에 있어서, 상기 제 2 실행제어유닛은, 상기 데이터 플로우 처리유닛에 의한 데이터 패스의 조합을 제어하는 데이터 처리장치.
  29. 제 27 항에 있어서, 상기 데이터 플로우 유닛은, 특정의 내부 데이터 패스를 구비하고 있고, 상기 제 2 실행제어유닛은, 상기 준비정보에 의해, 상기 데이터 플로우 처리유닛의 상기 내부 데이터 패스의 일부를 선택할 수 있는 데이터 처리장치.
  30. 제 16 항에 있어서, 상기 제 2 실행제어유닛은, 레지스터 또는 버퍼와 메모리간의 입출력을 제어하는 기능을 구비하고 있는 데이터 처리장치.
  31. 연산 또는 다른 데이터 처리를 실행하는 적어도 하나의 처리유닛을 포함하는 데이터 처리장치 제어방법으로서,
    상기 처리유닛에서 실행되는 연산 또는 다른 데이터 처리의 내용을 지시하는 실행명령을 기술할 수 있는 제 1 필드, 및 상기 실행명령에서 실행되는 연산 또는 다른 데이터 처리가 실행될 수 있는 상태로 상기 처리유닛을 설정하는 준비정보를 기술할 수 있는 제 2 필드를 구비하는 명령세트를 페치하는 공정과,
    상기 제 1 필드의 상기 실행명령을 디코드하고, 그 실행명령의 연산 또는 다른 데이터 처리가 실행될 수 있도록 미리 설정된 상기 처리유닛에 의해 당해 연산 또는 다른 데이터처리를 진행하는 제 1 제어공정과,
    이 제 1 제어공정과 독립하여, 상기 제 2 필드의 상기 준비정보를 디코드하고 상기 처리유닛의 상태를 연산 또는 다른 데이터 처리가 실행될 수 있도록 설정하는 제 2 제어공정을 포함하는 데이터 처리장치 제어방법.
  32. 제 31 항에 있어서, 상기 제 2 제어공정에서, 상기 처리유닛의 입력 및/또는 출력 인터페이스를, 그 처리유닛의 실행시기와 독립하여 설정하는 데이터 처리장치 제어방법.
  33. 제 31 항에 있어서, 상기 제 2 제어공정에서, 상기 처리유닛의 처리내용을 정의하는 데이터 처리장치 제어방법.
  34. 제 31 항에 있어서, 상기 데이터 처리장치는, 다수의 상기 처리유닛을 포함하고, 상기 제 2 제어공정에서, 이 들의 처리유닛에 의한 데이터 패스의 조합을 제어하는 데이터 처리장치 제어방법.
  35. 제 31 항에 있어서, 상기 처리유닛은, 특정의 내부 데이터 패스를 구비하고 있고, 상기 제 2 제어공정에서, 상기 처리유닛의 상기 내부 데이터 패스의 일부를 선택할 수 있는 데이터 처리장치 제어방법.
  36. 제 31 항에 있어서, 상기 제 2 제어공정에서, 다수의 상기 처리유닛에 의해 구성되는 처리블록의 입력 및/또는 출력 인터페이스를 변경할 수 있는 데이터 처리장치 제어방법.
  37. 제 31 항에 있어서, 상기 데이터 처리장치는, 상기 처리블록의 입력 및/또는 출력 인터페이스를 정의하는 다수의 배치 데이터를 저장한 메모리를 포함하고,
    상기 제 2 제어공정에서, 상기 메모리에 저장된 상기 다수의 배치 데이터 중 하나를 선택하고, 상기 처리블록의 입력 및/또는 출력 인터페이스를 변경할 수 있는 데이터 처리장치 제어방법.
  38. 제 31 항에 있어서, 상기 제 2 제어공정에서, 상기 처리유닛의 인터페이스를 유지하는 스케쥴을 관리하는 데이터 처리장치 제어방법.
  39. 제 31 항에 있어서, 상기 제 2 제어공정에서, 레지스터 또는 버퍼와 메모리간의 입출력을 제어하는 데이터 처리장치 제어방법.
KR10-2001-7005453A 1999-08-30 2000-08-30 데이터 처리장치 KR100491593B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP24413799 1999-08-30
JP1999-244137 1999-08-30

Publications (2)

Publication Number Publication Date
KR20010080367A true KR20010080367A (ko) 2001-08-22
KR100491593B1 KR100491593B1 (ko) 2005-05-27

Family

ID=17114319

Family Applications (2)

Application Number Title Priority Date Filing Date
KR10-2001-7005452A KR100497078B1 (ko) 1999-08-30 2000-08-30 프로그램 제품 및 데이터 처리장치
KR10-2001-7005453A KR100491593B1 (ko) 1999-08-30 2000-08-30 데이터 처리장치

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR10-2001-7005452A KR100497078B1 (ko) 1999-08-30 2000-08-30 프로그램 제품 및 데이터 처리장치

Country Status (16)

Country Link
US (4) US6826674B1 (ko)
EP (2) EP1134654A4 (ko)
JP (2) JP4234925B2 (ko)
KR (2) KR100497078B1 (ko)
CN (3) CN1145879C (ko)
AT (1) ATE466330T1 (ko)
AU (3) AU782238B2 (ko)
BR (2) BR0013595A (ko)
CA (2) CA2348259A1 (ko)
DE (1) DE60044300D1 (ko)
EA (2) EA004071B1 (ko)
HK (1) HK1047326A1 (ko)
IL (4) IL142676A0 (ko)
NZ (2) NZ516679A (ko)
TW (2) TW504608B (ko)
WO (3) WO2001016717A1 (ko)

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW504608B (en) * 1999-08-30 2002-10-01 Ip Flex Inc Program product and data processing device
JP2003140886A (ja) * 2001-10-31 2003-05-16 Seiko Epson Corp インストラクションセット及びコンパイラ
US7093225B2 (en) 2002-07-17 2006-08-15 Osann Robert Jr FPGA with hybrid interconnect
US7679398B2 (en) * 2002-07-17 2010-03-16 Osann Jr Robert Reprogrammable instruction DSP
JP4002151B2 (ja) * 2002-07-31 2007-10-31 富士通株式会社 情報処理装置
RU2006100275A (ru) * 2003-06-18 2006-07-10 Амбрик, Инк. (Us) Система разработки интегральной схемы
US20070186076A1 (en) * 2003-06-18 2007-08-09 Jones Anthony M Data pipeline transport system
US20050097306A1 (en) * 2003-09-29 2005-05-05 Gajski Daniel D. No-instruction-set-computer processor
DE10360998B4 (de) * 2003-12-23 2008-09-04 Infineon Technologies Ag Schutz von Chips gegen Attacken
US7937557B2 (en) 2004-03-16 2011-05-03 Vns Portfolio Llc System and method for intercommunication between computers in an array
US9047094B2 (en) * 2004-03-31 2015-06-02 Icera Inc. Apparatus and method for separate asymmetric control processing and data path processing in a dual path processor
JP4451733B2 (ja) * 2004-06-30 2010-04-14 富士通マイクロエレクトロニクス株式会社 半導体装置
JP4893309B2 (ja) * 2004-10-28 2012-03-07 富士ゼロックス株式会社 再構成可能な論理回路を有するデータ処理装置
CN100346292C (zh) * 2005-12-02 2007-10-31 浙江大学 多地址空间异步计算等待响应指令的控制方法
JP4795025B2 (ja) * 2006-01-13 2011-10-19 キヤノン株式会社 ダイナミックリコンフィギャラブルデバイス、制御方法、及びプログラム
US7617383B2 (en) * 2006-02-16 2009-11-10 Vns Portfolio Llc Circular register arrays of a computer
US7966481B2 (en) 2006-02-16 2011-06-21 Vns Portfolio Llc Computer system and method for executing port communications without interrupting the receiving computer
US7904615B2 (en) * 2006-02-16 2011-03-08 Vns Portfolio Llc Asynchronous computer communication
JP4410297B2 (ja) * 2006-03-09 2010-02-03 富士通株式会社 リコンフィギャラブル回路
US7555637B2 (en) * 2007-04-27 2009-06-30 Vns Portfolio Llc Multi-port read/write operations based on register bits set for indicating select ports and transfer directions
WO2008142750A1 (ja) * 2007-05-17 2008-11-27 Fujitsu Limited 演算ユニット、プロセッサ及びプロセッサアーキテクチャ
US7752592B2 (en) * 2007-10-10 2010-07-06 International Business Machines Corporation Scheduler design to optimize system performance using configurable acceleration engines
US20100023730A1 (en) * 2008-07-24 2010-01-28 Vns Portfolio Llc Circular Register Arrays of a Computer
US9069918B2 (en) * 2009-06-12 2015-06-30 Cadence Design Systems, Inc. System and method implementing full-rate writes for simulation acceleration
JP5718558B2 (ja) * 2009-09-16 2015-05-13 富士ゼロックス株式会社 画像データ処理装置
TWI563479B (en) * 2009-12-30 2016-12-21 Tatung Co Field emission display
JP5617282B2 (ja) * 2010-03-09 2014-11-05 富士通セミコンダクター株式会社 データ処理システム
JP5580404B2 (ja) * 2010-03-29 2014-08-27 株式会社東芝 半導体装置
GB2483903A (en) * 2010-09-24 2012-03-28 Advanced Risc Mach Ltd Instruction which specifies the type of the next instruction to be executed
US9412022B2 (en) * 2012-09-06 2016-08-09 Leonard Flom Iris identification system and method
US9880842B2 (en) * 2013-03-15 2018-01-30 Intel Corporation Using control flow data structures to direct and track instruction execution
JP6321325B2 (ja) 2013-04-03 2018-05-09 ルネサスエレクトロニクス株式会社 情報処理装置および情報処理方法
US20170083313A1 (en) * 2015-09-22 2017-03-23 Qualcomm Incorporated CONFIGURING COARSE-GRAINED RECONFIGURABLE ARRAYS (CGRAs) FOR DATAFLOW INSTRUCTION BLOCK EXECUTION IN BLOCK-BASED DATAFLOW INSTRUCTION SET ARCHITECTURES (ISAs)
KR102276718B1 (ko) * 2015-11-25 2021-07-13 삼성전자주식회사 Vliw 인터페이스 장치 및 제어 방법
DE102017208818A1 (de) * 2017-05-24 2018-11-29 Wago Verwaltungsgesellschaft Mbh Initialisierung von Datenbusteilnehmern
RU182446U1 (ru) * 2018-03-13 2018-08-17 Федеральное государственное бюджетное образовательное учреждение высшего образования "Казанский государственный энергетический университет" Усовершенствованное устройство проверки однородности нескольких однотипных выборок
CN110209629B (zh) * 2019-07-15 2023-12-15 北京一流科技有限公司 协处理器的数据处理路径中的数据流动加速装置及其方法
CN113760364B (zh) * 2020-06-03 2022-06-17 广东高云半导体科技股份有限公司 逻辑器件的控制器

Family Cites Families (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5626062B2 (ko) 1973-12-12 1981-06-16
JPS61294548A (ja) * 1985-06-21 1986-12-25 Toshiba Corp 機械命令実行装置
US5038386A (en) 1986-08-29 1991-08-06 International Business Machines Corporation Polymorphic mesh network image processing system
JPS6482131A (en) * 1987-09-24 1989-03-28 Mitsubishi Electric Corp Data processor
JPH01156824A (ja) * 1987-12-14 1989-06-20 Hitachi Ltd マイクロプロセッサ
JPH02183332A (ja) 1989-01-10 1990-07-17 Fujitsu Ltd プログラムド制御方式
GB9123271D0 (en) 1991-11-02 1991-12-18 Int Computers Ltd Data processing system
US5452455A (en) * 1992-06-15 1995-09-19 International Business Machines Corporation Asynchronous command support for shared channels for a computer complex having multiple operating systems
JP3684579B2 (ja) 1993-04-27 2005-08-17 富士通株式会社 分散型並列計算機のプロセッサエレメント
US5535406A (en) * 1993-12-29 1996-07-09 Kolchinsky; Alexander Virtual processor module including a reconfigurable programmable matrix
US5551570B1 (en) 1994-02-02 1999-10-05 Tartan Paper Products Decorative packaging system including a method and kit therefor
JPH07253882A (ja) * 1994-03-15 1995-10-03 Hitachi Ltd 命令制御装置
JPH07319692A (ja) 1994-05-25 1995-12-08 Fuji Electric Co Ltd プログラマブルコントローラ
US5617431A (en) * 1994-08-02 1997-04-01 Advanced Micro Devices, Inc. Method and apparatus to reuse existing test patterns to test a single integrated circuit containing previously existing cores
US6128720A (en) * 1994-12-29 2000-10-03 International Business Machines Corporation Distributed processing array with component processors performing customized interpretation of instructions
US6052773A (en) 1995-02-10 2000-04-18 Massachusetts Institute Of Technology DPGA-coupled microprocessors
US5742180A (en) 1995-02-10 1998-04-21 Massachusetts Institute Of Technology Dynamically programmable gate array with multiple contexts
JP2987308B2 (ja) * 1995-04-28 1999-12-06 松下電器産業株式会社 情報処理装置
US5826072A (en) * 1995-11-13 1998-10-20 Oasis Design, Inc. Pipelined digital signal processor and signal processing system employing same
US5956518A (en) 1996-04-11 1999-09-21 Massachusetts Institute Of Technology Intermediate-grain reconfigurable processing device
US5771362A (en) * 1996-05-17 1998-06-23 Advanced Micro Devices, Inc. Processor having a bus interconnect which is dynamically reconfigurable in response to an instruction field
US6023564A (en) * 1996-07-19 2000-02-08 Xilinx, Inc. Data processing system using a flash reconfigurable logic device as a dynamic execution unit for a sequence of instructions
US5805875A (en) * 1996-09-13 1998-09-08 International Computer Science Institute Vector processing system with multi-operation, run-time configurable pipelines
DE19654846A1 (de) * 1996-12-27 1998-07-09 Pact Inf Tech Gmbh Verfahren zum selbständigen dynamischen Umladen von Datenflußprozessoren (DFPs) sowie Bausteinen mit zwei- oder mehrdimensionalen programmierbaren Zellstrukturen (FPGAs, DPGAs, o. dgl.)
JPH10260832A (ja) * 1997-03-18 1998-09-29 Hitachi Ltd 情報処理装置
JP3790607B2 (ja) * 1997-06-16 2006-06-28 松下電器産業株式会社 Vliwプロセッサ
US5970254A (en) * 1997-06-27 1999-10-19 Cooke; Laurence H. Integrated processor and programmable data path chip for reconfigurable computing
US5966534A (en) 1997-06-27 1999-10-12 Cooke; Laurence H. Method for compiling high level programming languages into an integrated processor with reconfigurable logic
JP3414209B2 (ja) 1997-07-30 2003-06-09 松下電器産業株式会社 プロセッサ
JP3449186B2 (ja) * 1997-08-19 2003-09-22 富士通株式会社 パイプラインバイパス機能を有するデータ処理装置
US6282627B1 (en) * 1998-06-29 2001-08-28 Chameleon Systems, Inc. Integrated processor and programmable data path chip for reconfigurable computing
US6647511B1 (en) * 1998-09-17 2003-11-11 Texas Instruments Incorporated Reconfigurable datapath for processor debug functions
JP2000207202A (ja) 1998-10-29 2000-07-28 Pacific Design Kk 制御装置およびデ―タ処理装置
US6181163B1 (en) * 1999-01-21 2001-01-30 Vantis Corporation FPGA integrated circuit having embedded SRAM memory blocks and interconnect channel for broadcasting address and control signals
US6477683B1 (en) * 1999-02-05 2002-11-05 Tensilica, Inc. Automated processor generation system for designing a configurable processor and method for the same
TW504608B (en) * 1999-08-30 2002-10-01 Ip Flex Inc Program product and data processing device

Also Published As

Publication number Publication date
CA2348261C (en) 2006-02-14
AU782238B2 (en) 2005-07-14
NZ516679A (en) 2004-03-26
JP4234925B2 (ja) 2009-03-04
EP1215569A1 (en) 2002-06-19
IL142676A0 (en) 2002-03-10
CN1321271A (zh) 2001-11-07
KR100497078B1 (ko) 2005-06-27
JP3842129B2 (ja) 2006-11-08
KR20010080366A (ko) 2001-08-22
IL142675A (en) 2006-07-05
IL142675A0 (en) 2002-03-10
CN1301459C (zh) 2007-02-21
EP1134654A1 (en) 2001-09-19
US20050240757A1 (en) 2005-10-27
EA004196B1 (ru) 2004-02-26
WO2001016717A8 (fr) 2001-04-12
CN1321270A (zh) 2001-11-07
KR100491593B1 (ko) 2005-05-27
AU776972B2 (en) 2004-09-30
TW495711B (en) 2002-07-21
IL142676A (en) 2006-08-20
WO2001016711A1 (fr) 2001-03-08
CN1532692A (zh) 2004-09-29
EA200200310A1 (ru) 2002-10-31
CN1145879C (zh) 2004-04-14
BR0013594A (pt) 2002-07-16
CA2348259A1 (en) 2001-03-08
EP1215569B1 (en) 2010-04-28
WO2001016717A1 (fr) 2001-03-08
BR0013595A (pt) 2002-07-16
US6904514B1 (en) 2005-06-07
US6826674B1 (en) 2004-11-30
US20050038550A1 (en) 2005-02-17
WO2001016710A1 (fr) 2001-03-08
NZ516680A (en) 2004-01-30
EA004071B1 (ru) 2003-12-25
TW504608B (en) 2002-10-01
HK1047326A1 (zh) 2003-02-14
EA200200309A1 (ru) 2002-08-29
AU6864300A (en) 2001-03-26
ATE466330T1 (de) 2010-05-15
AU6864400A (en) 2001-03-26
EP1215569A4 (en) 2006-08-23
AU6864200A (en) 2001-03-26
CA2348261A1 (en) 2001-03-08
DE60044300D1 (de) 2010-06-10
EP1134654A4 (en) 2006-08-23
CN1148647C (zh) 2004-05-05

Similar Documents

Publication Publication Date Title
KR100491593B1 (ko) 데이터 처리장치
JP6043374B2 (ja) 動的アウトオブオーダプロセッサパイプラインを実装する方法および装置
US11449342B2 (en) Hybrid block-based processor and custom function blocks
US9275002B2 (en) Tile-based processor architecture model for high-efficiency embedded homogeneous multicore platforms
JP2021192257A (ja) プログラム可能な最適化を有するメモリネットワークプロセッサ
US8667252B2 (en) Method and apparatus to adapt the clock rate of a programmable coprocessor for optimal performance and power dissipation
JP2011525008A (ja) リアルタイムデータ処理のための方法&装置
KR20070114690A (ko) 프로세서
JP4800582B2 (ja) 演算処理装置
JP2007317152A (ja) 情報処理装置
JP4560705B2 (ja) データ処理装置の制御方法
JP2004102988A (ja) データ処理装置
Schaffer et al. MTASC: A Multithreaded Associative SIMD Processor
Yoshimura et al. [2009] An Instruction Decomposition Method for Reconfigurable Decoders

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

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20140418

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20150416

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20160418

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20170421

Year of fee payment: 13

FPAY Annual fee payment

Payment date: 20180503

Year of fee payment: 14