JPH11249894A - 処理デバイスに命令ストリームを供給する方法及び装置 - Google Patents

処理デバイスに命令ストリームを供給する方法及び装置

Info

Publication number
JPH11249894A
JPH11249894A JP10357686A JP35768698A JPH11249894A JP H11249894 A JPH11249894 A JP H11249894A JP 10357686 A JP10357686 A JP 10357686A JP 35768698 A JP35768698 A JP 35768698A JP H11249894 A JPH11249894 A JP H11249894A
Authority
JP
Japan
Prior art keywords
instruction
input
bit
circuit
bits
Prior art date
Legal status (The legal status 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 status listed.)
Granted
Application number
JP10357686A
Other languages
English (en)
Other versions
JP3762841B2 (ja
Inventor
Anthony Stansfield
アンソニー・スタンスフィールド
Alan David Marshall
アラン・デイヴィッド・マーシャル
Jean Vuillemin
ジャン・ビュレミ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
HP Inc
Original Assignee
Hewlett Packard Co
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 Hewlett Packard Co filed Critical Hewlett Packard Co
Publication of JPH11249894A publication Critical patent/JPH11249894A/ja
Application granted granted Critical
Publication of JP3762841B2 publication Critical patent/JP3762841B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • 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/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/527Multiplying only in serial-parallel fashion, i.e. one operand being entered serially and the other in parallel
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • 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/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/53Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel
    • 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/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/533Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even
    • G06F7/5334Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even by using multiple bit scanning, i.e. by decoding groups of successive multiplier bits in order to select an appropriate precalculated multiple of the multiplicand as a partial product
    • G06F7/5336Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even by using multiple bit scanning, i.e. by decoding groups of successive multiplier bits in order to select an appropriate precalculated multiple of the multiplicand as a partial product overlapped, i.e. with successive bitgroups sharing one or more bits being recoded into signed digit representation, e.g. using the Modified Booth Algorithm
    • G06F7/5338Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even by using multiple bit scanning, i.e. by decoding groups of successive multiplier bits in order to select an appropriate precalculated multiple of the multiplicand as a partial product overlapped, i.e. with successive bitgroups sharing one or more bits being recoded into signed digit representation, e.g. using the Modified Booth Algorithm each bitgroup having two new bits, e.g. 2nd order MBA
    • 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/3017Runtime instruction translation, e.g. macros
    • G06F9/30174Runtime instruction translation, e.g. macros for non-native instruction set, e.g. Javabyte, legacy code
    • 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/3017Runtime instruction translation, e.g. macros
    • G06F9/30178Runtime instruction translation, e.g. macros of compressed or encrypted instructions
    • 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
    • G06F9/30185Instruction operation extension or modification according to one or more bits in the instruction, e.g. prefix, sub-opcode

Abstract

(57)【要約】 【課題】処理テ゛ハ゛イスに命令ストリームを供給するための回路
を提供する。 【解決手段】回路の実施形態は、RISC CPUに使用するの
に適しているが、一方、他の実施形態は、フィールト゛フ゜ロク゛ラ
マフ゛ルアレイにおいて使用される小さな処理テ゛ハ゛イスのよう
な、他の処理テ゛ハ゛イスに使用することもできる。この回路
は、第1の命令値のセットを供給する外部の命令ストリームを受
信すると共に、第2の命令値のセットを含むメモリを備えてい
る。複数の出力部が、処理テ゛ハ゛イス3に命令ストリーム13、14を
供給する。この回路は、選択手段11に、第1及び第2の命
令値のセットからのヒ゛ットを、処理テ゛ハ゛イスへのそれぞれの命
令ストリームに割り当てるようにさせる制御入力12をマスクの形
式で備えている。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、処理デバイス(ま
たは処理装置)に対する命令ストリームの供給に関す
る。好ましい実施形態では、本発明は、処理デバイスに
利用することができる命令ストリームを拡張し、それに
よって命令サイズを縮小することを可能にする方法に関
する。
【0002】
【従来の技術】一般に、プログラマブル(プログラム可
能な)デバイスは、命令のストリームによって制御され
る演算を行う。このようなストリームは、一般に、命令
ストリームと呼ばれる。こういったプログラマブルデバ
イスは、複数のマイクロプロセッサを含むが、それに限
定されるものではない。ストリーム内の各命令は、典型
的には、予め決められた長さのビットのパターンであ
り、これは命令語と呼ばれる。ビットの各パターンは、
符号化されたものであり、それは、プログラマブルデバ
イスに対する特定の命令を表している。大抵のプログラ
マブルデバイスでは、1サイクル規準で動作を制御す
る。通常はそうであるが、ある種のフィールドプログラ
マブルゲートアレイ(FPGA)のように、1サイクル
規準で制御されることには意味が無いプログラマブルデ
バイスがある。後述する例では1サイクル単位の制御を
示すが、本発明のいくつかの実施形態では、フィールド
プログラマブルデバイスが特別に関係がある。
【0003】命令の符号化は、いくつかの要素を均等に
満たしたものである。第1に、デバイスのプログラマが
豊富な機能を利用することができるように、多くの異な
る演算を符号化する必要がある。第2に、命令の復号化
が容易である必要がある。すなわち、比較的小さい回路
が、外部命令を必要な内部制御信号に変換する必要があ
る。これら2つの要因により、各命令語のビット数が多
くなる。しかしながら、第3の要因は、一般に、各命令
語のビットの数を小さくする必要があるということであ
る。そうでなければ、必要とされる広いデータチャネル
に適応するために、多くの時間と回路空間を消費するこ
とになる。
【0004】満足に命令を処理するにあたりこれらの引
張り合いが特に明らかである領域は、RISC(Reduced In
struction Set Computer:縮小命令セットコンピュー
タ)プロセッサの設計にある。1980年代半ばまで普及し
ていたCISC(Complex Instruction Set Computer:複雑
命令セットコンピュータ)の命令セットとは異なり、RI
SCは、簡略化した命令セットを処理する限定された複数
の命令セットを使用する。一般に、CISCデザインでは、
各々の有効な結果に対して命令を指定する必要があると
考えられている。速度を上昇させ(個々の処理ユニット
は、限定された命令を処理しているために簡単にするこ
とができるため)、コストを削減する(RISCデザイン
は、一般に、同等のCISCデザインより必要なトランジス
タの数が少ないため)ために、一般のマイクロプロセッ
サの設計は、RISCの設計に移行してきている。しかしな
がら、RISCにはCISCにある命令選択の豊富さが欠けてい
るため、RISCプロセッサのために書かれたコードは、CI
SCプロセッサのために書かれたコードよりかなり長くな
る傾向がある。この点に関して、RISCプロセッサはCISC
プロセッサに対して欠点を有している。
【0005】このような欠点は、命令サイズが小さい豊
富な命令セットを与えることで、事前に十分に除去する
ことができる。命令サイズを縮小することは、それによ
って命令経路のためのメモリからプロセッサへの全体の
帯域幅が縮小され、プログラムを格納するためのメモリ
量も縮小することができる(特に、組み込みアプリケー
ションにおいて重要である)ため、有利である。命令サ
イズを縮小する方法の一つとして、例えば、World Wide
Webサイトhttp://www.devcom.com/riscm/Pro+Peripher
als/ArchExt/Thumb/Flyer/、及び米国特許第5568646号
に示されているような拡張RISCマシンリミテッド(Adva
nced RISC Machines Limited:ARM)の「Thumb」アーキ
テクチャがある。ARMプロセッサは、32ビットのプロ
セッサであり、32ビットの命令セットを備えている。Th
umb命令セットは、この32ビット命令セットにおいて
最も使用される命令の一揃いからなり、それは16ビット
形式に圧縮されている。これら16ビット命令は、プロセ
ッサにおいて32ビットコードに復元される。このソリュ
ーション(解決策)によって、32ビットのプロセッサに
対して16ビットの命令経路を使用することが可能になる
が、命令パイプラインが余計に複雑になる。さらに、こ
のソリューションは、命令セットの選択された命令グル
ープへの縮小に依存する。
【0006】
【発明が解決しようとする課題】従って、処理デバイス
に対する命令の供給を最適化する他の方法を見つける必
要があり、それによって、命令サイズを縮小すると同時
に、豊富な機能性と復号化の容易性を達成することがで
きる。
【0007】
【課題を解決するための手段】このため、本発明は、処
理デバイスに命令ストリームを供給する回路を提供する
ものであって、第1の命令値のセットを供給するために
外部命令ストリームを受信する入力部と、第2の命令値
のセットを含むように構成されたメモリと、処理デバイ
スに出力命令ストリームを供給するための複数の出力部
と、制御入力部と、上記制御入力部により、複数の出力
部間に第1の命令値のセットと第2の命令値のセットを振
り分けるように構成された選択手段とを具備する。
【0008】ここで、「処理デバイス」という用語は、
命令を受け入れて情報処理機能を実行することができる
任意の処理要素に対して基本的に使用され、明らかに、
CPUのような要素を含むが、フィールドプログラマブル
アレイ内の処理要素をも含む。そのような構造について
の本発明の適用例を、以下に示す。
【0009】第2の命令のセットを使用することによっ
て、外部命令ストリームにおいて与えられたワード長で
利用可能な命令セットの機能を向上させることが可能と
なる。有利なことには、命令語の「伸長(拡張)」が可
能となり、そのため、出力命令ストリームが全体として
外部命令ストリームより多くのビットを含むようにな
る。代替的には、ビットを命令ストリームから転用し
て、処理デバイスの周辺回路を駆動することができ、そ
れによって、それ自身で、命令セットを効果的に伸長す
ることができる。この周辺回路は、複数の機能の範囲で
使用することができ、その一例として、処理デバイスへ
のデータ入力を許可又は禁止する機能がある。
【0010】好ましい構成では、選択手段は、第1の命
令値のセットと第2の命令値のセットとの間でビット単
位の値を選択し、値の各選択について、第1の命令値の
セット及び第2の命令値のセットからの1ビットを、複数
の出力の1つに割り当て、他方の第1の命令値のセット
と第2の命令値のセットからの対応するビットを、複数
の出力の他の1つに割り当てる。この構成において、第
2の命令値のセットは、変数で与えることができるが、
有利な実施形態では、一つ又は複数の定数(例えば、外
部命令ストリームの開始前の、おそらくは、構成可能な
又は再構成可能なデバイスの場合におけるデバイス構成
時に定義された値)として与えられる。
【0011】より大きい回路内での利用率を向上させ得
る更に有益な特徴は、外部命令ストリームからの命令又
は第2の命令値のセットからの命令の供給のいずれかを
禁止する手段を使用することである。これらの特徴によ
り、デバイスの機能のいずれかを「無視」することによ
り、プログラミングの困難性を低減することができる。
【0012】このアプローチは、命令とデータの両方に
対して同じデータ経路幅を有するプロセッサデバイスで
あって、レジスタの使用を命令機能から独立して指定す
る(RISCプロセッサの場合、一般的であるが)ようなプ
ロセッサデバイスを使用する場合に効果的であるが、ま
た、同様な問題が存在する他の形態のプロセッサ設計に
おいても明らかな利点がある。本発明の適用例として、
RISC設計に関してのみでなく、複数のプロセッサ要素を
備えたフィールドプログラマブルデバイスの設計に関し
ても述べる。
【0013】本発明の適用例に対するフィールドプログ
ラマブルデバイスの特に適した形態は、複数の処理デバ
イスが構成可能な配線ネットワークによって互いに接続
されており、処理デバイスが、複数のALU、特に比較
的小さいALU(たとえば4ビットALU)である(又
はそれらを含むものである)ことにある。
【0014】本発明の特有の実施形態について、以下
に、例を用いて添付図面を参照して説明する。
【0015】
【発明の実施の形態】まず、本発明を用いるプログラマ
ブルシステムの主な要素を、従来技術のプログラマブル
システムと対比させる。そのような従来技術のプログラ
マブルシステムの要素を、図1に示す。命令は、命令ス
トリーム1により、制御中のデバイスに対して外部のメ
モリ(図示せず)から供給され、命令ストリーム内の別
々の命令の要素(例えば、命令語のビット)で表される
命令値のセットは、命令復号器2によって復号され、制
御中のデバイス3に意味のある復号済み命令6として出
力される。制御中のデバイス3は、例えば、RISCプロセ
ッサとしてもよい。従って、復号済み命令6は、制御中
のデバイス3へ供給され、また、デバイス3は、受信デ
ータ4を受信して、それが使用する復号済み命令6及び
受信データ4からデータ出力5を供給する。
【0016】図2は、本発明の一実施形態を用いるプロ
グラマブルシステムの構成要素を示す。このシステムの
大部分の外観は図1に示すものと同じである(それらの
図において同じ参照番号を用いている)が、命令復号器
2への命令の供給が異なっている。命令は、従来と同様
に命令ストリーム1で供給されるが、選択手段11を介
して供給される命令の出所が追加されている。ここで、
選択手段11は、命令サイズを効果的に伸長するように
構成することができるため、命令伸長要素と呼ぶ。命令
伸長要素11への制御入力は、後述するように、命令マ
スク12によって供給される。命令伸長要素11は、J
及びKという2つの出力を有しており、これらは命令復
号器2に対して2つの命令ストリーム13,14を供給
する。命令伸長要素11が3つ以上の出力、つまりは3
つ以上の命令ストリームを利用する他の実施形態は、本
発明の他の実施形態の適用例として容易に提供すること
ができる。
【0017】命令マスク12は、第1及び第2の命令値の
セットをJ出力とK出力との間でどのように振り分ける
かを決定する。この機能を実行する基本的な回路(第2
の命令値のセットの可能な出所をも示す)を、図3に示
す。図3に示す回路は、命令入力1の1ビットを操作す
るために必要な回路である。基本的な回路に必須なのは
1組のマルチプレクサ43,44である。各マルチプレ
クサ43,44に対する制御入力は、命令入力1の関連
したビットに適した命令マスク12の値によって与えら
れる。外部入力は、第1のマルチプレクサ43の「1」
入力と、第2のマルチプレクサ44の「0」入力とに供
給される。第1のマルチプレクサ43の出力は、命令伸
長要素11のK出力であり、第2のマルチプレクサ44
の出力は、命令伸長要素11のJ出力である。従って、
この実施形態では、外部命令入力の各ビットの経路は、
命令伸長要素11のJ又はK出力のいずれかに定められ
ている。
【0018】各マルチプレクサへの他の入力によって、
J出力とK出力のうち、外部命令ストリーム1からの関
連したビットによって出力値が与えられないのがどちら
であるかの情報が与えられる。すなわち、命令マスク値
が1である場合、第2のマルチプレクサ44への「1」
入力によって、J出力に出力値が与えられ、命令マスク
値が0である場合、第1のマルチプレクサ43への
「0」入力によって、K出力に出力値が与えられる。こ
こでは、これら追加のマルチプレクサ入力41,42
は、双方とも定数値で供給される(しかし、より複雑な
実施形態では、これらは変数とするか、もしくはデータ
依存とすることができる)。第1のマルチプレクサへの
「0」入力41は、第1の定数C1によって供給され、第
2のマルチプレクサへの「1」入力42は、第2の定数C
2によって供給される。
【0019】図3に示す構成では、nビットの外部入力
1とnビットの命令マスク12とが供給されているが、
その結果は2nビットの命令値となり、そのうちのnビ
ットがK出力によって供給され、nビットがJ出力によ
って供給される。命令マスク12は、効果的に、外部命
令ストリーム内のビットをビット単位でJ又はKのいず
れかに送るように機能する。
【0020】明らかに、利用可能なビット数を自由に増
加させることはできない。所定のマスク値について、J
及びK出力においてあり得る値のサブセットだけを、外
部の値を変化させることによって簡単に供給することが
できる。しかしながら、実際的な多くの場合において、
命令の符号化をしかるべく配置することが容易にできる
ことが分かっている。具体的な例を以下に示す。
【0021】この基本的なメカニズムを拡張したもの
を、図4及び図5に示す。図4及び図5の回路の要素
は、概して図3の要素と同じであるが、各場合におい
て、イネーブル入力51及び追加の論理ゲート52,5
3が設けられている。図4及び図5に示す回路によっ
て、単一ビットのイネーブル信号51により外部命令入
力1と命令マスク12をそれぞれ禁止するオプションを
加えることができる。回路を主入力のいずれか一方によ
り完全に制御することができるメカニズムを供給する動
作を、かなり簡略化することができるため、このような
拡張は望ましいものである。
【0022】図2に示す基本的なメカニズムには、2つ
の主な代替バージョンがある。これらは、命令マスク1
2の設定方法によって異なる。これは図6に示すように
構成することができ、ここでは、マスク値は、外部命令
ストリーム1に命令が与えられるほど頻繁ではないが、
外部的に設定される。この状態の一例は、再構成可能な
回路内にあり、ここでは命令マスク設定命令21を、デ
バイスの動作中に与えられる構成又は再構成情報の一部
として、供給することができる。例2は、図2のメカニ
ズムのこのバージョンを示しており、以下でさらに説明
する。他の代替バージョンは、図7に示すものであり、
ここでは、マスク設定信号22が制御中のデバイス3自
体によって供給される。この制御形式は、通常のプロセ
ッサ環境におけるより複雑なプロセッサ、すなわち、RI
SC CPUのような、例1に更に説明する構成に適してい
る。
【0023】ここで、本発明の2つの詳細な適用例をそ
れぞれのコンテキストに対して以下に示す。
【0024】例1:RISCアーキテクチャ RISCプロセッサ設計の重要な特徴は、比較的単純な命令
の符号化を使用することである。典型的には、すべての
命令は同じサイズであり、とのビットを特定の目的(例
えば、レジスタ指定子、即値定数、演算指定子等)に使
用することができるかに関する非常に限定されたフォー
マットに従う。この方式の利点は、命令を復号するのに
必要なロジックを簡単にすることができ、それによって
小さくかつ高速なプロセッサを構成し得ることである。
一方、対応する不利な点は、多くの命令が厳密に必要な
大きさよりも大きくなることであり、例えば、関連した
2オペランド命令を命令セットに適合させることができ
ないため、2オペランド命令を、3オペランド命令として
1つの入力を複製して符号化する必要がある。また、典
型的なサイズではなく、必要とされる可能な限り大きな
サイズに応じて、即値定数又は分岐オフセット値のため
のスペースを割り当てる必要がある。
【0025】個々の命令が必要以上に大きい場合、プロ
グラム全体が必要以上に大きくなる。上述したように、
この結果、メモリからプロセッサへのより高い帯域幅が
必要となり、メモリサイズが全体のシステムコストに影
響を与える場合ある。
【0026】本発明の実施形態による命令マスキング
は、命令のサイズを縮小するのに用いることができ、そ
れによって、命令セットを豊富に持つという利点を保持
しながら、これらの不利な点が発生しなくなる。このア
プローチの適用例を示すために、これをDLXアーキテク
チャのコンテキストにおいて述べる。DLXは、「Compute
rArchitecture, A Quantitative Approach」、J.L. Hen
nessy & D.A.Patterson,p160〜166及びAppendix E 199
0, Morgan Kaufmann Publishers, Inc. San Mateo, CA,
USA ISBN 1-55860-069-8に述べられている簡略化した
汎用RISCプロセッサである。DLXプロセッサの命令フォ
ーマットを以下に示す。
【0027】
【表1】
【0028】Iタイプ命令は、オペランドとしてのレジ
スタを1つ持っており、他のレジスタは一般に即値定数
である。Rタイプ命令は2つのレジスタオペランドを持
っている。Rs1及びRs2は送信元のレジスタ指定子
であり、Rdは宛先のレジスタ指定子である。命令の基
本タイプは3つともすべて、32ビット長であり、6ビ
ットの重要な演算コードは最上位ビットにある。レジス
タ指定子は、一般に命令内の同じ位置にあり、常に5ビ
ット長である。
【0029】ここで、このプロセッサに対する本発明の
一実施形態の適用例を示す。本発明の一実施形態を適用
した結果、この場合には、命令毎のビットの数が21に
減るが、マスキングメカニズムを使用してこれを42に
伸長する。使用する回路は、図5に示すものであり、C
2=0、C1=0である。制御信号の出所については後述
する。伸長された42ビット内の命令ビットの可能なレ
イアウトを、以下の表2の3つの命令フォーマットのそ
れぞれについて示す。
【0030】
【表2】
【0031】表2の具体的な特徴及び図5に示す回路の
適用例について、さらに下記する。内部のマスク値12
は、R0プロセッサレジスタから取り出される。このレ
ジスタは、DLXにおいて、この特別な制御目的に適した
選択を可能にするため、(他の多くのRISCプロセッサに
おける同等のレジスタと同様に)ある「魔法のような
(magic)」特性を有している。このレジスタは特別な
特性を有しているので、本目的に適した特性をそれに与
えるためにわずかな変更を加えることは、簡単なことで
ある。これらの適した特性は以下の通りである。
【0032】Iタイプ命令におけるR0からの読出し
は、すべて0に戻る。これによって、式Rx=R0+定
数の演算がRx=0+定数となるため、定数のロードが
可能になる。Rタイプ命令におけるR0への書込みは、
まったく起こらない。全ての状態フラグの設定を含む残
りの命令は、普通に発生し、レジスタファイルへの最後
の再書込み(write back)のみが阻止される。これによ
って、比較演算を安価に実施することができる(A>B
は、R0=B−Aとして、「負の」フラグをチェックす
ることによって実施することができる)。この結果、R
0はIタイプ命令によってのみ書込むことができ、Rタ
イプ命令によってのみ読み出すことができる。
【0033】Iタイプ命令において、Rs1aとRs1
bとは、互いにORをとることにより、Rs1レジスタ
指定子を形成する。これにより、より柔軟に、命令定数
とレジスタ指定子との間にビットを割り当てることがで
きる。例えば、5ビットまでの長さの定数は、Rs1a
をレジスタ指定子として使用し、K4...K0を定数とし
て使用することができ、一方、より大きい定数は、Rs
1bをレジスタ指定子として使用し、K9...K5を定数
として使用することができる。
【0034】ここで、演算コード拡張(opcode extensi
on)フィールドは、11ビットではなく21ビットから
なる。これによって、伸長済みのセットにおいてビット
位置をより柔軟に割り当てることができ、そのため、レ
ジスタ指定子と演算コード拡張の間でビットを交換する
必要が特に制限されない。
【0035】分岐オフセットフィールドは、4つの領域
に分割され、K20...K16,K9...K0,J20...J16
9...J0という30ビット量に再構成される。短い分
岐は、Jビットのみで表すことができる。より長い分岐
は、Kビットが必要であるが、非常に長い分岐のすべて
を単純に表すことができるとは限らない。
【0036】命令が21ビット長であるため、3つの命
令を1ビット残して64ビットのグループに適合させる
ことができる。この余分のビットを制御信号51として
使用することにより、マスクをオンとすべきかオフとす
べきかを決定することは、適切である。このため、3つ
の命令群は、同じ制御値を共用しなければならないが、
実際にはこれは重要な制限ではなく、命令の順序を再度
付け直すことによって、プログラムの正確性を保ちつ
つ、このような種類の制約を満たすようにする方法が知
られている。3つの命令を64ビットに適合させること
により、分岐先のアラインメントを制限することにもな
る。命令をフェッチするのに使用するワードアドレス
は、64ビットメモリアクセスにおいてどちらの32ビ
ット命令を使用すべきかを指定することができるが、提
案された方式において3つの命令のいずれを使用すべき
かを指定するための追加のメモリアドレスビットは無
い。簡単な解決法は、3つの命令のうちの最初の命令に
のみ分岐することであるが、アドレスビットを操作する
ためのより複雑な他の方法もまた可能である。
【0037】レジスタの初期化について、演算コード0
00000(2進数)を有する命令は、入力の一方を、
他方が0である時に伝えるIタイプの命令(例えばAd
d、XOR、OR等)である。これは、R0の値を、以
下の表3に示す命令シーケンスを使用して容易に設定す
ることができるということを意味する。
【0038】
【表3】
【0039】命令モードは、2つのキャラクタで表す。
1つめは、命令がI、R又はJタイプのいずれであるか
を示し、2つめは、制御信号の状態を示す(M:マスク
がアクティブである、N:マスクがアクティブでない、
X:関係無し)。これらの命令の重要なものは、一般に
タイプINであるが、実際には、マスクは多くの場合不
都合無くアクティブにすることができる。
【0040】上記技術の変形例を使用して、いずれかの
レジスタに16ビット値をロードすることができる。R
0が0000FFFF(16進数)である場合、命令の
21ビットは(5ビットのレジスタ番号)(16ビット
の定数値)のように解釈される。この方式で、31の汎
用レジスタすべてを、レジスタ毎に1命令と4つの追加
の命令(開始時に1回と終了時に1回、R0を初期化す
る2つの命令が2組)によって設定することができる。
35×2/3の32ビットワード、すなわち23 1/
3ワードの総計は、圧縮されていない場合に必要な31
ワードと比較して有利であり、25%の節約となる。
【0041】プログラム例:単一ループ 以下のプログラム(以下の全てのプログラム例と同様、
Cで書かれている)は、単一ループを表している。
【0042】 このループについての命令シーケンスを、以下の表4に
示す。
【0043】
【表4】
【0044】この命令方式についてのレジスタ配置を、
以下の表5に示す。
【0045】
【表5】
【0046】命令は、表4において、64ビット境界に
適合する3つの命令群の中に示されている。ループ本体
は、11の命令が必要であり、それらは、従来の形式の
11ワードに比較して、8×32ビットワードに収ま
る。従って、分岐先の正確なアラインメントを保証する
ための余分なNOP命令が必要であるにも関わらず、全
体としてサイズを27%節約することができる。
【0047】例2:CHESSアーキテクチャ CHESSは、データ経路集中型(datapath-intensiv
e)アプリケーションのためのフィールドプログラマブ
ルアレイ構造である。CHESSアーキテクチャは、以
下の出願に記載されており、それらはすべて本出願に参
照によって組み込まれている。この出願は、米国を指定
した1998年1月28日に提出された国際特許出願第
GB98/00248号と、1997年12月17日に
提出された欧州特許出願第97310220.5号及び
その対応米国出願である。アーキテクチャ全体のレイア
ウトは、本例では重要ではないが、本発明の目的のため
に、CHESSは、各ALUを各入出力を介して他のA
LUに接続することができるように経路スイッチを有す
る4ビットのALUのアレイからなっていると考えるこ
とができる。
【0048】図8は、CHESSの4ビットALUの入
力及び出力を示す。各ALUは、A,B及びI入力への
3つの4ビット入力経路32,33,34と、ALUの
出力Fを運ぶ1つの4ビット出力経路37とを有してい
る。これら入出力経路は、経路スイッチに接続されてい
る。また、桁上げ(carry)信号のための1ビットの入
力経路35と1ビットの出力経路36が設けられてお
り、それ自体経路スイッチのネットワークを有してい
る。これらは、それぞれALUの入力Cinと出力Cout
とに接続されている。
【0049】A及びBはデータ入力であり、FはA及び
B入力から導出されるデータ出力である。ALUは、表
6において下記するようにA及びBの算術及び論理機能
を生成することができる。また、桁上げ入出力の効果も
示されている。一般に、これらを、桁上げ連鎖(carry
chain)を生成するために使用して、ALUをより広い
ワードの並列計算に使用することができるが、これら
は、比較機能にも使用することができる。
【0050】
【表6】
【0051】I入力は、命令入力である。その機能は、
ALUの可能な機能のうちいずれを実際に実行するかを
選択することである。CHESSにおいて、I入力は、
A,B入力及びF出力と同じ幅のものが選択される。す
なわち、4ビットである。このことは、以下の理由から
大きな利点である。すなわち、これによって、ひとつの
ALUのI入力を他のALUのF出力で駆動することが
でき(上述した欧州特許出願第97310220.5号
に記載されているように、命令を動的に与えることがで
き)、経路ネットワークのみが、A、B又はI入力に対
する経路であるかどうかに関係なく、1つのタイプのデ
ータを桁上げすればよいからである。これは、命令の数
に厳しい制約を与える。すなわち、4ビットのI入力
は、最大でも16の命令であることを意味している。し
かしながら、表6は21より多くの入力を示している。
4ビットの命令入力で十分な命令セットを供給するとい
う問題は、本発明の一実施形態による命令マスク方式を
用いることによって、解決することができる。
【0052】外部I入力は、図4に示す回路を使用する
ことにより、8ビット(4×Jビット及び4×Kビッ
ト)に伸長することができる。マスク値12及び制御信
号51は、両方とも、フィールドプログラマブルアレイ
の初期構成の一部として内部レジスタに格納される。こ
こで、定数は、C1=1及びC2=0のように選択され
る。このように選択した結果、制御信号51が外部命令
入力Iを禁止すると、Jは格納されたマスク値に従うと
いうことになる。これにより、I入力に定数値を必要と
することなく、従ってIに定数値を供給する経路ネット
ワークの必要を無くして、ALUの機能を定数演算に対
して設定することができる。
【0053】構成例1:入力イネーブルとして使用する
Kビット この例では、4ビットALUに対する主命令を決定する
ためにJビットを使用するが、周辺回路を制御するた
め、特にAおよびB入力を許可するためにKビットを使
用する。これによって、構成例1に含まれる適用例に示
すように、命令セットを効果的に伸長することができ
る。
【0054】必要な構成を得るために、J及びKビット
に以下の機能を割り当てる。
【0055】4つのJビットを、表7(以下を参照)に
示す16の機能のうち1つを選択するために使用する。
0及びK2を、A入力に対する入力イネーブルを与える
ために使用する。ここで、K0及びK2が両方ともローで
ある場合、入力はオンとなり、そうでない場合はオフと
なる(表7においてA=0000に相当する)。K1
びK3をB入力に対する入力イネーブルを与えるために
使用する。ここで、K1及びK3が両方ともローである場
合、入力はオンとなり、そうでない場合はオフとなる。
【0056】
【表7】
【0057】この命令セットの選択は、命令セットを有
効に追加した結果、命令マスク値の特定の値が選択され
るように慎重になされている。例えば、マスク値が00
11である場合、J1及びJ0は両方とも1でなければな
らないが、AおよびB入力は両方ともオフにすることが
できる。有効な命令セット(外部命令ストリームから認
識される命令セット)を表8に示す。
【0058】
【表8】
【0059】「入力が両方とも禁止」である列に示す値
は、すべて算術演算において有効な定数である。ある場
合に結果として生じる定数値1111は、2の補数計算
において−1を示すが、これはしばしば必要な値であ
る。
【0060】代わりに、マスク値が1100である場
合、A及びB入力の両方とも再びオフとすることができ
るが、この場合、J3及びJ2は両方とも1であり、命
令セットは表9に示すものとなる。
【0061】
【表9】
【0062】0101のマスク値を使用する場合、更に
有効な命令セットを得ることができる。このマスク値を
用いると、Aをオフにする2つの方法がある。その有効
な命令セットを表10に示す。
【0063】
【表10】
【0064】従って、Kビットを使用してA,B入力を
許可することにより有効な命令セットを変更するための
命令マスクを使用するので、ALU31によって(I入
力で受信されるものに関して)認識されるのと同じ命令
セットについて、さまざまな種類の異なる命令セット
を、外部命令ストリーム1で認識することができるとい
うことがわかる。基本的な命令セットを慎重に選択する
ことにより(Jビットの組合わせのうちのどれをどの命
令に割り当てるかに関して)、これらの異なる有効な命
令セットを工夫して、特定の機能として使用するために
特に有効なものとすることができる。このため、フィー
ルドプログラマブルアレイの構成において、所定のプロ
セッサ要素についてのマスク値を、そのプロセッサ要素
に対して利用可能な命令が、実行する必要のある(1つ
又は複数の)演算に特に適したセットとなるように選択
することができる。
【0065】このことは、その全てが構成例1、及び表
7から表10に示す命令セットに関連する一連の適用例
によって最も良く示される。なお、表7における命令の
選択は、例示的なものであることを強調しておく。すな
わち、当業者は、この明細書の開示内容から、貴重で有
効な命令セットを生成する他の選択を考案する方法を十
分に認識するであろう。
【0066】適用例としての回路を、図9に示す。この
回路は、2つのALUを有している。1つはALU10
4であり、これは0000のマスク値を有し、従って、
表7に示す有効な命令セットを有している。もう1つは
ALU103であり、これは0011のマスク値を有
し、従って表8に示す有効な命令セットを有している。
この回路は、4つの入力によって制御される。これら
は、ALU103及びALU104それぞれへの外部命
令入力108,109と、回路と共に使用するメモリ1
02(CHESSアーキテクチャにおいて、このメモリ
は、欧州特許出願第97310220.5号に記載され
ているようにユーザプレーンメモリ(user plane memor
y)に変換されるスイッチメモリによって構成すること
ができる)へのアドレス入力110及び読出し/書込み
入力111である。また、3つのレジスタ、すなわちレ
ジスタ1(105)、レジスタ2(106)、及びC
outレジスタ107が設けられており、これらもまた、
CHESSアーキテクチャの構成要素から容易に供給す
ることができる。以下の例において、明確には示してい
ないが、メモリ102に対する書込みはすべてレジスタ
1(105)に書込まれるようになっている。
【0067】応用例1:ビット計数 以下のビット計数プログラム(これも後のすべてのプロ
グラムと同様にCで書かれている) は、以下の表11に示す入力シーケンスに従って実現す
ることができる。表11は、命令値、及び結果として生
じるレジスタ値を示している。
【0068】
【表11】
【0069】変数Qは、第1のALUが実行する比較演
算の結果を表す。この値は、当然0又は1である。従っ
て、計数値がインクリメントされるかインクリメントさ
れないかは、比較の結果による。
【0070】応用例2:パターン照合 以下のコードは、いくつかのパターンに対して入力値を
比較し、合致した数を記録する演算を示す。
【0071】 このコードは、図9に示す回路により、以下の表12に
示す入力シーケンスによって達成することができる。
【0072】
【表12】
【0073】以前と同様に、変数Qは比較演算の結果を
表すために使用される。また、計数の変数値は、各比較
の後でQだけ再度インクリメントされ、合致した数を表
す。
【0074】構成例2:Kビットが即値定数を与える 本構成例は、KビットのいくつかがA及びB入力につい
ての入力許可機能を与えるという点で、構成例1と類似
している。しかしながら、この場合は、すべてのKビッ
トをその目的に使用するのではなく、代わりに他のビッ
トを、即値定数を供給するために使用する。利用可能な
命令タイプの範囲は、第1の構成例より制限されている
が、即値定数を供給するメカニズムはいくつかの適用例
についてのプログラミングを直接的にかなり簡略化す
る。
【0075】この場合、J及びKビットに以下のように
機能を割り当てる。
【0076】4つのJビットは、表7に設定されている
ように16の命令の1つを選択する。K0はA入力につ
いて入力許可を与えるために使用される。K0がローで
ある場合、入力はオンとなり、他の場合には、A入力は
定数値K3200となる。K1は、B入力について入力許
可を与えるために使用する。K1がローである場合、入
力はオンとなり、他の場合はB入力はオフとなる(値0
000に設定されるのと同じである)。
【0077】命令マスクが1111に設定された場合、
Jビットはすべて1に設定され、ALUは常に命令A+
B+Cinを実行しなければならない。追加すべき値の選
択は、以下の表13に示すように、Kビットによって決
定される。
【0078】
【表13】
【0079】言い換えると、利用可能な命令セットは、
以下の通りである。
【0080】A+B、A、B+定数0,4,8,12のいずれ
か、定数0,4,8,12のいずれか(もしくは、Cin
によって与えられる可能性を含み、0,1,4,5,
8,9,12,13からのいずれかの定数)。
【0081】応用例3:ヒストグラム化 以下のコードにより、入力をその上位の2ビットの可能
な値と突き合わせてチェックし、チェックの結果に応じ
てカウンタをインクリメントすることによって、ヒスト
グラムを生成することができる。
【0082】 if ((z & 12) == 12) count 3 ++; if ((z & 12) == 8) count 2 ++; if ((z & 12) == 4) count 1 ++; if ((z & 12) == 0) count 0 ++; 図9に示す回路は、Kビットが構成例2で示した機能を
有するように構成されており、上記コードを実行するた
めに使用することができる。図9に示す場合ともう1つ
違いがある。すなわち、ALU103は、0011でな
く1111のマスク値を有するように構成されている。
従って、このALUは、表13に示す命令セットを有し
ている。このコードを実行するのに必要な入力シーケン
スを、以下の表14に示す。
【0083】
【表14】
【0084】このように、各ビット単位の比較の後、C
outは内部変数Qに設定される。この内部変数Qは、テ
スト中の入力の最初の2ビットが比較値と等しい場合は
値0を有し、等しくない場合は値1を有する。Cout
これらの値は、次の演算で反転する。その結果、テスト
中の入力の最初の2ビットと一致する比較値に対する適
切なカウンタがインクリメントされる。
【0085】構成例3:最下位ビットでの加算/減算操
作 本発明による命令マスク回路の異なる表現を図10に示
す。このゲートの組合わせは、図4に示すものと論理的
には同様である。この場合、外部命令ストリームからの
ビットは入力301で受信され、構成RAM303の単
一ビットが外部命令入力を許可するために使用される。
命令マスク値は、4ビット制御レジスタ313によって
与えられ、マスク回路自体はORゲート311及びAN
Dゲート312から構成される。ORゲート311の出
力は、ALUのI入力に対する関連した命令ビット(こ
の明細書を通して一貫してJiとして示す)であり、A
NDゲート312の出力は、以前と同様にALUの他の
部分に供給するために利用可能なKiビットとして供給
される。入力イネーブルビット303がローである場
合、出力Kiはすべてローであり、ビットスライスのた
めの命令ビットJiは4ビット制御レジスタ313に従
う。入力イネーブルビット303がハイであり、制御レ
ジスタ313のビットがローである場合、外部入力Ii
は命令ビットJiに対して関連する出力に経路が定めら
れ、関連したKiはローに設定される。入力イネーブル
ビット303がハイであり制御レジスタ313のビット
がハイである場合、外部入力Iiは関連したKiに経路が
定められ、命令ビットJiに対して関連した出力はハイ
に設定される。
【0086】命令マスクにより、他の回路をALUに同
期して制御することができる。実際の場合は、ALUの
加算と減算のスワッピングである。これが実行される
と、桁上げ連鎖の最下位ビットに与えられる定数を、減
算では1、加算では0に設定する必要がしばしばある。
マスク回路を提供することにより、図11に示すよう
に、周辺回路を制御するために入力を追加する必要がな
く、これを実現することができる。
【0087】この例では、ALUに関して、表7に示す
命令セットと異なる命令セットについて考える。命令セ
ットの完全な詳細はこの例では重要ではない。ADDに
必要なJビットが0011であり、SUBに必要なJビ
ットが1111であるということを示すことで十分であ
る。制御レジスタ313が保持する命令マスク値が00
11に設定された場合、このことは、外部命令ストリー
ムビット(Iiと称する)のうち、I3及びI2はJ3及び
2にそれぞれ結合するが、I1及びI0はK1及びK0
結合するという効果を有する。J1及びJ0は、両方とも
1の値に固定される。これによって、最下位ビットを操
作するように適合されたADD_LSB及びSUB_L
SBコードを含むADD及びSUBの命令コードの伸長
したセットが得られる。この機能コードのセットを実現
するための外部命令Iについて結果として得られるコー
ドは、以下の通りである。
【0088】 I入力ADD命令コード 0000 I入力ADD_LSB命令コード 0001 I入力SUB命令コード 1100 I入力SUB_LSB命令コード 1111 ALU命令コードJは、ADDとADD_LSBの両方
について同じ(0011)であるが、ADDではCin
ビットスライスのためのCinとなるように単純に伝搬さ
れる一方、ADD_LSBではビットスライスのための
inの値は常に0である。SUB命令の場合も同様であ
り、SUB_LSBについて、ビットスライスのための
inの値は常に1である。
【0089】従って、周辺回路が動的な命令入力によっ
て制御されるため、同時に使用することができるALU
命令の組合せは、制限される。しかしながら、制限され
た数の場合のみをカバーすればよいため、これによって
実際的な困難は生じない。例えば、上述した場合では、
ADD命令とSUB命令の間に2つの共通したビットが
必要である。この場合は、ビットJ1とJ0は両方とも1
の値を有している。
【0090】以下においては、本発明の種々の構成要件
の組み合わせからなる例示的な実施態様を示す。
【0091】1.処理デバイスに命令ストリームを供給
するための回路であって、第1の命令値のセットを供給
するために外部命令ストリームを受信する入力部と、第
2の命令値のセットを含むように構成されたメモリと、
前記処理デバイスに出力命令ストリームを供給するため
の複数の出力部と、制御入力部と、前記制御入力部によ
り、前記複数の出力部間に前記第1の命令値のセットと
前記第2の命令値のセットと分配するように構成された
選択手段とからなる回路。
【0092】2.前記出力命令ストリームは、全体とし
て前記外部命令ストリームより多くのビットを含むこと
からなる上項1の回路。
【0093】3.前記選択手段は、前記第1の命令値の
セットと前記第2の命令値のセットとの間でビット毎に
値を選択するものであって、ここで、値の各選択につい
て、前記第1の命令値のセット及び前記第2の命令値の
セットのいずれかからの1ビットは、前記複数の出力部
の1つに送られ、他方の前記第1の命令値のセット及び
前記第2の命令値のセットからの対応する1ビットは、
前記複数の出力部の他方に送られることからなる上項1
又は2の回路。
【0094】4.前記制御入力部は、前記外部命令スト
リームと同数のビットを有する値を供給し、前記ビット
毎の値の選択を、前記外部命令ストリームの等しく重要
なビットに対応する前記制御入力値のビットに関連して
行うことからなる上項3の回路。
【0095】5.前記複数の出力部の1つは、前記処理
デバイスに命令入力を供給し、一方、前記複数の出力部
の他方は、前記処理デバイスの周辺回路に入力を供給す
ることからなる上項3又は4の回路。
【0096】6.前記周辺回路は、前記処理デバイスへ
の1つ又は複数のデータ入力を許可又は禁止するための
回路を備えることからなる上項5の回路。
【0097】7.前記周辺回路は、前記処理デバイスへ
の1つ又は複数のデータ入力に対して、演算定数を供給
するための回路を備えることからなる上項5又は6の回
路。
【0098】8.前記回路は、命令とデータの両方につ
いて同じデータ経路幅を有し、レジスタの使用が命令機
能から独立して指定される処理デバイス、と共に使用さ
れるように構成されていることからなる上項1乃至7の
いずれの回路。
【0099】9.前記選択手段への前記第1の命令値の
セットの供給を禁止する手段が供給され、それによって
前記処理デバイスが前記第2の命令値のセットに従って
制御されることからなる上項1乃至8のいずれかの回
路。
【0100】10.前記選択手段への前記第2の命令値
のセットの供給を禁止する手段が供給され、それによっ
て前記処理デバイスが前記第1の命令値のセットに従っ
て制御されることからなる上項1乃至9のいずれかの回
路。
【0101】11.前記処理デバイスは、単一の集積回
路における複数の処理ユニットの1つであることからな
る上項1乃至10のいずれかの回路。
【0102】12.複数の処理デバイスと、前記複数の
処理デバイスのうちの1つ又は複数のための、上項1乃
至11のいずれかの回路とからなる集積回路。
【0103】13.前記複数の処理デバイスは、構成可
能な配線ネットワークにより互いに接続されていること
からなる上項12の集積回路。
【0104】14.前記処理デバイスは、フィールドプ
ログラマブルアレイ内の処理要素であることからなる上
項12又は13の集積回路。
【0105】15.前記処理デバイスは、複数のALU
であることからなる上項14の集積回路。
【0106】16.前記処理デバイスは、複数の4ビッ
トALUであり、命令及びデータに4ビット幅が必要で
あることからなる上項15の集積回路。
【0107】
【発明の効果】上述した複数の実施例から分かるよう
に、本発明の実施形態による命令マスク方式を使用し
て、意図した目的に関する命令セットを十分豊富に持つ
ことと、復号化を容易に行うことの両方を維持しつつ、
命令語内の少数のビットの利点を組み合わせることがで
きる。これらの利点は、命令マスクを使用して有効な命
令セットを調整し、命令語長を効果的に伸長することに
より、あるいはビットを周辺回路に転用することによっ
て、意図した1つ又は一群の目的に特に適合するように
することができる。これらのオプションのそれぞれによ
って、残りの命令セットに制約を与えることとなるが、
この制約は基本的な命令セットを好適に選択することに
よって比較的容易に遵守することができるということが
一般的に理解される。
【図面の簡単な説明】
【図1】従来のプログラマブルシステムの命令及びデー
タの流れを示す図である。
【図2】本発明の一実施形態を用いたプログラマブルシ
ステムの命令及びデータの流れを示す図である。
【図3】本発明の実施形態に使用する選択回路を示す図
である。
【図4】入力を禁止することができるように変更した図
3に示す選択回路を示す図である。
【図5】入力を禁止することができるように変更した図
3の選択回路を示す図である。
【図6】第2の命令セットの出所を示すために変更した
図2の命令の流れを示す図である。
【図7】第2の命令セットの出所を示すために変更した
図2の命令の流れを示す図である。
【図8】本発明の実施形態が使用することのできるフィ
ールドプログラマブル演算アレイの基本的な処理デバイ
スを示す図である。
【図9】図8に示す基本的な処理デバイスを備えたフィ
ールドプログラマブル演算アレイにおける本発明の一実
施形態の適用例を示す図である。
【図10】図8に示す基本的な処理デバイスを備えたフ
ィールドプログラマブル演算アレイに使用するよう構成
された本発明の別の実施形態による命令マスク回路を示
す図である。
【図11】図10に示す命令マスク回路によって実現さ
れるビットの転用を利用した桁上げ入出力経路を示す図
である。
【符号の説明】
1 命令ストリーム 2 命令復号器 3 デバイス 4 受信データ 5 出力データ 6 復号済み命令 11 選択手段 12 命令マスク 13、14 命令ストリーム
フロントページの続き (72)発明者 アラン・デイヴィッド・マーシャル イギリス国ブリストル・ビーエス1・4ア ールジェイ,マーシャンツ・ランディン グ,トリン・ヒルズ(番地表示なし) (72)発明者 ジャン・ビュレミ フランス国75116−パリ,リュ・ドゥ・ ラ・トゥール・76

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】処理デバイスに命令ストリームを供給する
    ための回路であって、 第1の命令値のセットを供給するために外部命令ストリ
    ームを受信する入力部と、 第2の命令値のセットを含むように構成されたメモリ
    と、 前記処理デバイスに出力命令ストリームを供給するため
    の複数の出力部と、 制御入力部と、 前記制御入力部により前記複数の出力部間に、前記第1
    の命令値のセットと前記第2の命令値のセットを分配す
    るように構成された選択手段とからなる回路。
JP35768698A 1997-12-17 1998-12-16 処理デバイスに命令ストリームを供給する方法及び装置 Expired - Fee Related JP3762841B2 (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
EP97310220 1997-12-17
GB97310220.5 1998-06-02
GB98304528.7 1998-06-09
EP98304528 1998-06-09

Publications (2)

Publication Number Publication Date
JPH11249894A true JPH11249894A (ja) 1999-09-17
JP3762841B2 JP3762841B2 (ja) 2006-04-05

Family

ID=26147746

Family Applications (1)

Application Number Title Priority Date Filing Date
JP35768698A Expired - Fee Related JP3762841B2 (ja) 1997-12-17 1998-12-16 処理デバイスに命令ストリームを供給する方法及び装置

Country Status (3)

Country Link
US (2) US6523107B1 (ja)
JP (1) JP3762841B2 (ja)
DE (1) DE69841256D1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016527650A (ja) * 2013-08-06 2016-09-08 インテル・コーポレーション ベクトルポピュレーションカウント機能性を提供する方法、装置、命令、およびロジック
JP2016529617A (ja) * 2013-08-06 2016-09-23 インテル・コーポレーション ゲノム配列決定および配列比較のためのポピュレーションカウント機能性を提供する方法、装置、命令、およびロジック

Families Citing this family (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2002029600A2 (de) * 2000-10-06 2002-04-11 Pact Informationstechnologie Gmbh Zellenarordnung mit segmentierterwischenzellstruktur
US7266725B2 (en) * 2001-09-03 2007-09-04 Pact Xpp Technologies Ag Method for debugging reconfigurable architectures
DE19651075A1 (de) 1996-12-09 1998-06-10 Pact Inf Tech Gmbh Einheit zur Verarbeitung von numerischen und logischen Operationen, zum Einsatz in Prozessoren (CPU's), Mehrrechnersystemen, Datenflußprozessoren (DFP's), digitalen Signal Prozessoren (DSP's) oder dergleichen
DE19654595A1 (de) * 1996-12-20 1998-07-02 Pact Inf Tech Gmbh I0- und Speicherbussystem für DFPs sowie Bausteinen mit zwei- oder mehrdimensionaler programmierbaren Zellstrukturen
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.)
EP1329816B1 (de) * 1996-12-27 2011-06-22 Richter, Thomas Verfahren zum selbständigen dynamischen Umladen von Datenflussprozessoren (DFPs) sowie Bausteinen mit zwei- oder mehrdimensionalen programmierbaren Zellstrukturen (FPGAs, DPGAs, o.dgl.)
US6542998B1 (en) 1997-02-08 2003-04-01 Pact Gmbh Method of self-synchronization of configurable elements of a programmable module
US8686549B2 (en) 2001-09-03 2014-04-01 Martin Vorbach Reconfigurable elements
DE19861088A1 (de) * 1997-12-22 2000-02-10 Pact Inf Tech Gmbh Verfahren zur Reparatur von integrierten Schaltkreisen
WO2002013000A2 (de) * 2000-06-13 2002-02-14 Pact Informationstechnologie Gmbh Pipeline ct-protokolle und -kommunikation
AU5805300A (en) 1999-06-10 2001-01-02 Pact Informationstechnologie Gmbh Sequence partitioning in cell structures
US8058899B2 (en) * 2000-10-06 2011-11-15 Martin Vorbach Logic cell array and bus system
US7581076B2 (en) * 2001-03-05 2009-08-25 Pact Xpp Technologies Ag Methods and devices for treating and/or processing data
US20070299993A1 (en) * 2001-03-05 2007-12-27 Pact Xpp Technologies Ag Method and Device for Treating and Processing Data
US9037807B2 (en) * 2001-03-05 2015-05-19 Pact Xpp Technologies Ag Processor arrangement on a chip including data processing, memory, and interface elements
US20090210653A1 (en) * 2001-03-05 2009-08-20 Pact Xpp Technologies Ag Method and device for treating and processing data
US7844796B2 (en) * 2001-03-05 2010-11-30 Martin Vorbach Data processing device and method
US20090300262A1 (en) * 2001-03-05 2009-12-03 Martin Vorbach Methods and devices for treating and/or processing data
US7444531B2 (en) * 2001-03-05 2008-10-28 Pact Xpp Technologies Ag Methods and devices for treating and processing data
EP2224330B1 (de) * 2001-06-20 2012-05-09 Krass, Maren Verfahren und gerät zum partitionieren von grossen rechnerprogrammen
US7996827B2 (en) 2001-08-16 2011-08-09 Martin Vorbach Method for the translation of programs for reconfigurable architectures
US7434191B2 (en) * 2001-09-03 2008-10-07 Pact Xpp Technologies Ag Router
US8686475B2 (en) 2001-09-19 2014-04-01 Pact Xpp Technologies Ag Reconfigurable elements
US7577822B2 (en) * 2001-12-14 2009-08-18 Pact Xpp Technologies Ag Parallel task operation in processor and reconfigurable coprocessor configured based on information in link list including termination information for synchronization
WO2003060747A2 (de) * 2002-01-19 2003-07-24 Pact Xpp Technologies Ag Reconfigurierbarer prozessor
US8127061B2 (en) * 2002-02-18 2012-02-28 Martin Vorbach Bus systems and reconfiguration methods
US8914590B2 (en) * 2002-08-07 2014-12-16 Pact Xpp Technologies Ag Data processing method and device
US20060075211A1 (en) * 2002-03-21 2006-04-06 Martin Vorbach Method and device for data processing
US20110238948A1 (en) * 2002-08-07 2011-09-29 Martin Vorbach Method and device for coupling a data processing unit and a data processing array
AU2003286131A1 (en) 2002-08-07 2004-03-19 Pact Xpp Technologies Ag Method and device for processing data
US7657861B2 (en) * 2002-08-07 2010-02-02 Pact Xpp Technologies Ag Method and device for processing data
WO2004038599A1 (de) 2002-09-06 2004-05-06 Pact Xpp Technologies Ag Rekonfigurierbare sequenzerstruktur
JP4700611B2 (ja) * 2003-08-28 2011-06-15 ペーアーツェーテー イクスペーペー テクノロジーズ アクチエンゲゼルシャフト データ処理装置およびデータ処理方法
US7725691B2 (en) * 2005-01-28 2010-05-25 Analog Devices, Inc. Method and apparatus for accelerating processing of a non-sequential instruction stream on a processor with multiple compute units
EP1849095B1 (en) * 2005-02-07 2013-01-02 Richter, Thomas Low latency massive parallel data processing device
US20070038984A1 (en) * 2005-08-12 2007-02-15 Gschwind Michael K Methods for generating code for an architecture encoding an extended register specification
EP1974265A1 (de) 2006-01-18 2008-10-01 PACT XPP Technologies AG Hardwaredefinitionsverfahren

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4236204A (en) 1978-03-13 1980-11-25 Motorola, Inc. Instruction set modifier register
US4698751A (en) 1984-07-13 1987-10-06 Ford Aerospace & Communications Corporation Systolic array for solving cyclic loop dependent algorithms
US4847759A (en) * 1985-03-18 1989-07-11 International Business Machines Corp. Register selection mechanism and organization of an instruction prefetch buffer
US4714994A (en) * 1985-04-30 1987-12-22 International Business Machines Corp. Instruction prefetch buffer control
US4775952A (en) 1986-05-29 1988-10-04 General Electric Company Parallel processing system apparatus
US4766566A (en) * 1986-08-18 1988-08-23 International Business Machines Corp. Performance enhancement scheme for a RISC type VLSI processor using dual execution units for parallel instruction processing
US5983328A (en) * 1987-03-13 1999-11-09 Texas Instruments Incorporated Data processing device with time-multiplexed memory bus
US5617574A (en) * 1989-05-04 1997-04-01 Texas Instruments Incorporated Devices, systems and methods for conditional instructions
US5233539A (en) 1989-08-15 1993-08-03 Advanced Micro Devices, Inc. Programmable gate array with improved interconnect structure, input/output structure and configurable logic block
US5204556A (en) 1991-05-06 1993-04-20 Lattice Semiconductor Corporation Programmable interconnect structure for logic blocks
US5291431A (en) 1991-06-03 1994-03-01 General Electric Company Array multiplier adapted for tiled layout by silicon compiler
WO1993008523A2 (en) 1991-10-21 1993-04-29 Thomson Consumer Electronics S.A. 1-bit adder and multiplier containing a 1-bit adder
US5208491A (en) 1992-01-07 1993-05-04 Washington Research Foundation Field programmable gate array
US5498975A (en) 1992-11-19 1996-03-12 Altera Corporation Implementation of redundancy on a programmable logic device
US5457644A (en) 1993-08-20 1995-10-10 Actel Corporation Field programmable digital signal processing array integrated circuit
US5537627A (en) * 1993-09-08 1996-07-16 Hilevel Technology, Inc. Microprogrammable processor capable of accessing unused portions of control store as fast data memory
JPH07146781A (ja) 1993-11-19 1995-06-06 Sony Corp プロセツサ
JP3547446B2 (ja) 1994-02-15 2004-07-28 ジリンクス,インコーポレーテッド フィールドプログラマブルゲートアレーのタイル型構造
US5586277A (en) * 1994-03-01 1996-12-17 Intel Corporation Method for parallel steering of fixed length fields containing a variable length instruction from an instruction buffer to parallel decoders
GB2289354B (en) 1994-05-03 1997-08-27 Advanced Risc Mach Ltd Multiple instruction set mapping
US5426379A (en) 1994-07-29 1995-06-20 Xilinx, Inc. Field programmable gate array with built-in bitstream data expansion
JPH08185320A (ja) * 1994-12-28 1996-07-16 Mitsubishi Electric Corp 半導体集積回路
US5680597A (en) * 1995-01-26 1997-10-21 International Business Machines Corporation System with flexible local control for modifying same instruction partially in different processor of a SIMD computer system to execute dissimilar sequences of instructions
US5493239A (en) 1995-01-31 1996-02-20 Motorola, Inc. Circuit and method of configuring a field programmable gate array
US5659785A (en) 1995-02-10 1997-08-19 International Business Machines Corporation Array processor communication architecture with broadcast processor instructions
US5583450A (en) 1995-08-18 1996-12-10 Xilinx, Inc. Sequencer for a time multiplexed programmable logic device
US5754459A (en) 1996-02-08 1998-05-19 Xilinx, Inc. Multiplier circuit design for a programmable logic device
GB9611994D0 (en) 1996-06-07 1996-08-07 Systolix Ltd A field programmable processor
KR100212142B1 (ko) * 1996-09-12 1999-08-02 윤종용 매크로 명령기능을 가진 동기식 반도체 메모리장치와 매크로 명령의 저장 및 실행방법
US5805477A (en) 1996-09-26 1998-09-08 Hewlett-Packard Company Arithmetic cell for field programmable devices
US5974437A (en) 1996-12-02 1999-10-26 Synopsys, Inc. Fast array multiplier
US5835746A (en) * 1997-04-21 1998-11-10 Motorola, Inc. Method and apparatus for fetching and issuing dual-word or multiple instructions in a data processing system
JP3123977B2 (ja) 1998-06-04 2001-01-15 日本電気株式会社 プログラマブル機能ブロック

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016527650A (ja) * 2013-08-06 2016-09-08 インテル・コーポレーション ベクトルポピュレーションカウント機能性を提供する方法、装置、命令、およびロジック
JP2016529617A (ja) * 2013-08-06 2016-09-23 インテル・コーポレーション ゲノム配列決定および配列比較のためのポピュレーションカウント機能性を提供する方法、装置、命令、およびロジック
US10223120B2 (en) 2013-08-06 2019-03-05 Intel Corporation Methods, apparatus, instructions and logic to provide population count functionality for genome sequencing and alignment
JP2019050039A (ja) * 2013-08-06 2019-03-28 インテル・コーポレーション ゲノム配列決定および配列比較のためのポピュレーションカウント機能性を提供する方法、装置、命令、およびロジック
US10678546B2 (en) 2013-08-06 2020-06-09 Intel Corporation Methods, apparatus, instructions and logic to provide population count functionality for genome sequencing and alignment

Also Published As

Publication number Publication date
US6820188B2 (en) 2004-11-16
JP3762841B2 (ja) 2006-04-05
DE69841256D1 (de) 2009-12-10
US20030188138A1 (en) 2003-10-02
US6523107B1 (en) 2003-02-18

Similar Documents

Publication Publication Date Title
JP3762841B2 (ja) 処理デバイスに命令ストリームを供給する方法及び装置
US6816961B2 (en) Processing architecture having field swapping capability
US9672033B2 (en) Methods and apparatus for transforming, loading, and executing super-set instructions
US5922066A (en) Multifunction data aligner in wide data width processor
US7028170B2 (en) Processing architecture having a compare capability
US5991531A (en) Scalable width vector processor architecture for efficient emulation
US7558942B1 (en) Memory mapped register file and method for accessing the same
CN106055308B (zh) 用于低能加速器处理器架构的设备
KR100462951B1 (ko) Risc 구조를 갖는 8 비트 마이크로콘트롤러
US20020198606A1 (en) Data processing system and control method
KR100465388B1 (ko) Risc 구조의 8비트 마이크로 제어기
CN108139911B (zh) 在vliw处理器的同一执行包中使用有条件扩展槽的指令的有条件执行规格
EP0982655A2 (en) Data processing unit and method for executing instructions of variable lengths
US20020032710A1 (en) Processing architecture having a matrix-transpose capability
US20200249955A1 (en) Pair merge execution units for microinstructions
EP1680735A2 (en) Apparatus and method that accomodate multiple instruction sets and multiple decode modes
US6542989B2 (en) Single instruction having op code and stack control field
US6408320B1 (en) Instruction set architecture with versatile adder carry control
US7340591B1 (en) Providing parallel operand functions using register file and extra path storage
JP2538053B2 (ja) 制御装置
US7024540B2 (en) Methods and apparatus for establishing port priority functions in a VLIW processor
US20040024992A1 (en) Decoding method for a multi-length-mode instruction set
JP3451921B2 (ja) プロセッサ
US20210096871A1 (en) Merge execution unit for microinstructions
US6564312B1 (en) Data processor comprising an arithmetic logic unit

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20040309

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20050502

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050531

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20050809

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20050812

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20051031

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20051220

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20060116

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090120

Year of fee payment: 3

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090120

Year of fee payment: 3

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090120

Year of fee payment: 3

R370 Written measure of declining of transfer procedure

Free format text: JAPANESE INTERMEDIATE CODE: R370

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090120

Year of fee payment: 3

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090120

Year of fee payment: 3

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090120

Year of fee payment: 3

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090120

Year of fee payment: 3

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090120

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100120

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110120

Year of fee payment: 5

LAPS Cancellation because of no payment of annual fees