JP2002525945A - コンフィグレーション可能なハードウェアブロック - Google Patents

コンフィグレーション可能なハードウェアブロック

Info

Publication number
JP2002525945A
JP2002525945A JP2000571362A JP2000571362A JP2002525945A JP 2002525945 A JP2002525945 A JP 2002525945A JP 2000571362 A JP2000571362 A JP 2000571362A JP 2000571362 A JP2000571362 A JP 2000571362A JP 2002525945 A JP2002525945 A JP 2002525945A
Authority
JP
Japan
Prior art keywords
hardware block
configurable
hardware
signal
unit
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.)
Pending
Application number
JP2000571362A
Other languages
English (en)
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 JP2002525945A publication Critical patent/JP2002525945A/ja
Pending legal-status Critical Current

Links

Classifications

    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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

Abstract

(57)【要約】 本発明はコンフィグレーション可能なハードウェアブロックに関する。このハードウェアブロックはそのコンフィグレーションに依存して記憶装置に格納されているデータを読み出し、読み出されたデータを算術的および/または論理的に処理し、処理結果を表すデータを前記記憶装置に書き込むように設計されている。本発明によるハードウェアブロックの特徴は、これが外部のハードウェアと相互作用し合えるようになることである。これによりフレキシブルかつ汎用的に利用可能なハードウェアブロックが得られる。

Description

【発明の詳細な説明】
【0001】 本発明は、請求項1の上位概念に記載の装置すなわちコンフィグレーション可
能なハードウェアブロックに関する。このハードウェアブロックはそのコンフィ
グレーションに依存して記憶装置に格納されているデータを読み出し、読み出さ
れたデータを算術的および/または論理的に処理し、処理結果を表すデータを前
記記憶装置に書き込むように設計されている。
【0002】 コンフィグレーション可能なハードウェアブロック(Hardware-Block)は、以
前から多数の実施形態として知られている。それらの実施形態として挙げられる
のはたとえば、PAL(programmable array logic)、GAL(Generic array
logic)などいわゆるフィールドプログラミング可能なロジックコンポーネント
である。
【0003】 コンフィグレーション可能なハードウェアブロックをプログラム制御されるユ
ニットにおいて使用することもでき、これをいわゆる>S<puterにおいて
使用することが知られている。
【0004】 マイクロプロセッサ、マイクロコントローラなどプログラム制御されるユニッ
トは最近までほとんどもっぱら、周知のフォン・ノイマン・モデルに従って構想
されていた。たしかに(たとえばハーバードモデルなどにおいては)別個のコー
ド記憶領域とデータ記憶領域を設けてそれから離れてはいるが、命令の実行(そ
れに付随するアクションもしくはオペレーション)自体は現在のところ依然とし
てほとんどもっぱら単純にシーケンシャルに行われている。
【0005】 命令をシーケンシャルに実行することで、命令を処理することのできる最大レ
ートが制約される。
【0006】 いわゆるRISCプロセッサによって格別高いレートを実現することができる
。RISCプロセッサは短縮された命令セットを有しておりこれによって、実行
すべき命令を通例はデコーディングして実行するマイクロプログラムを固定的に
配線されたハードウェアに置き換えることができる。そしてこのことで、きわめ
て高速かつ効率的に動作する命令パイプラインおよび命令実行ユニットを実現す
ることができ、その結果、平均すればプロセッササイクルごとに1つの命令まで
実行させることができる。しかし依然としてシーケンシャルな処理やシーケンシ
ャルな結果が存在することから、RISCプロセッサといえでもプロセッササイ
クルごとに1つよりも多くの命令を実行することはできない。
【0007】 プロセッササイクルごとに1つよりも多くの命令を実行できるプログラム制御
ユニットは、すでに挙げた>S<puterである。この種の>S<puter
についてはたとえば EP 0 825 540 A1 に記載されている。
【0008】 図3には>S<puterの基本構造が示されており、これについて次にこの
図を参照しながら説明する。
【0009】 念のためここで述べておくと、>S<puter殊にその命令実行部は部分的
にしか(本出願で詳しく考察するコンフィグレーション可能なハードウェアブロ
ックにとって重要なことについてだけしか)描かれていないし説明しない。
【0010】 図3に示されている>S<puterはプリデコードユニット(predecode un
it)1、命令バッファ(instruction buffer)2、デコード・リネーム&ロード
ユニット(decode, rename & load unit)3、s−パラダイムユニット(s-unit
)4、データキャッシュ(data cache)5、ならびにメモリインタフェース(me
mory interface)6を有しており、ここでsユニット4は、ストラクチャプログ
ラミングバッファ(programmable structure)41、プログラミング可能なスト
ラクチャを備えたファンクションユニット(functional unit with programmabl
e structure)42、整数/アドレス命令バッファ(integer/address instructi
on buffer)43、およびレジスタブロック(integer register file)44から
成る。
【0011】 >S<puterの特殊性は殊にそのsユニット4にあり、さらに詳しくいえ
ばそのファンクションユニット42にある。ファンクションユニット42は構造
化可能なハードウェアであって、これは>S<puterにより実行すべき命令
または命令列に基づき、それらの命令または命令列によってまえもって定められ
たアクションまたはオペレーションを実行できるよう、ダイナミックにコンフィ
グレーション可能である。
【0012】 >S<puterにより実行すべき命令(より正確にはそれらを表すコードデ
ータ)は、図示されていないメモリからメモリインタフェース6を介してプリデ
コードユニット1へ到達し、そこにおいてプリデコーディングされる。その際、
コードデータにたとえばデコード・リネーム&ロードユニットにおける後続のデ
コーディングを軽減する情報を付加することができる。ついでコードデータは命
令バッファ2を介してデコード・リネーム&ロードユニット3に到達し、そこに
おいてコードデータにより表される命令の実行が前処理される。この前処理には
コードデータのデコーディング、ファンクションユニット42のコンフィグレー
ションもしくは構造化、整数レジスタファイル44の初期化もしくは管理、なら
びに要求に従いコンフィグレーションされたファンクションユニット42のスタ
ートが含まれる。
【0013】 ファンクションユニット42の構造化ないしはコンフィグレーションは、所望
のコンフィグレーションにより表されるコンフィグレーションデータを使用する
ことで行われ、それらのデータはデコード・リネーム&ロードユニット3により
プログラミング可能なストラクチャバッファ41に書き込まれる。所望のコンフ
ィグレーションを表すそれらのコンフィグレーションデータは、デコード・リネ
ーム&ロードユニット3においてクリエートされる。しかしそれらのデータを、
すでに符号化されたかたちでコードデータに含めてもよい。
【0014】 ファンクションユニット42は、データをレジスタファイル44および/また
はデータキャッシュ5から読み出し、読み出されたデータを算術的および/また
は論理的に処理し、処理結果を表すデータをレジスタファイル44および/また
はデータキャッシュ5へ書き込むように設計されている。したがってこれは(フ
ァンクションユニット42は)、請求項1の上位概念に記載のコンフィグレーシ
ョン可能なハードウェアブロックである。
【0015】 レジスタファイル44を適切に初期化しファンクションユニット42を適切に
コンフィグレーションすることで、ファンクションユニット42の動作によりア
クションないしはオペレーションが実施され、それらはレジスタファイル44お
よびファンクションユニット42のコンフィグレーションの基礎を成した命令の
実行により行うことができる。
【0016】 相応にコンフィグレーションされたハードウェア(ファンクションユニット4
2)が命令実行により引き起こすべきアクションの実施は周知のように、慣用の
プログラム制御されるユニットの「通常の」算術論理ユニット(ALU)におけ
る命令実行よりも非常に高速である。このことは殊にハードウェア(ファンクシ
ョンユニット42)が、その動作により複数の相前後する命令(あるいは複数の
命令を含む1つのマクロ命令)の実行に相応する結果が達成できるよう、コンフ
ィグレーションされているときにあてはまる。
【0017】 >S<puter構造、機能ならびに動作の詳細については、前述の EP 0 82
5 540 A1 を参照されたい。
【0018】 念のため記しておくと、>S<puterにより実施すべき命令により引き起
こすべきすべてのアクションをファンクションユニット42により実行できるわ
けではない。たとえばプログラムシーケンス制御ないしはコントロールフロー制
御に用いられる命令実例としては分岐命令、ジャンプ命令、ノーオペレーション
命令、ウェイト命令、ストップ命令などのような命令は通常、慣用のやり方で実
行される。
【0019】 それにもかかわらず、ファンクションユニット42などのようなコンフィグレ
ーション可能なハードウェアブロックを使用することによって一般に、実行すべ
き命令によって引き起こすことのできるアクションの単位時間あたりの個数を、
慣用のプログラム制御されるユニットよりも多くすることができ、つまりプロセ
ッササイクルごとに1つよりも多くの命令を実行できるようになる。
【0020】 しかしながら、実行可能なアクションの単位時間あたりの個数を既述の形式の
ハードウェアブロックを設けることによっても高めることのできない用途もある
【0021】 したがって本発明の課題は、請求項1の上位概念に記載のハードウェアブロッ
クにおいて、従来よりもフレキシブルおよび/または汎用的に使用できるように
することである。
【0022】 本発明によればこの課題は、請求項1の特徴部分に記載の構成により解決され
る。
【0023】 本発明によれば、ハードウェアブロックを外部のハードウェアと相互に作用し
合えるようになる。
【0024】 これによりハードウェアブロックの性能が高まりその可用性が拡がる。これに
よりハードウェアブロックは、このような形式の慣用のハードウェアブロックよ
りもいっそうフレキシブルかつ汎用的に使用することができる。
【0025】 従属請求項、以下の説明ならびに図面には本発明の有利な実施形態が示されて
いる。次に、図面を参照しながら実施例に基づき本発明について詳しく説明する
【0026】 図1には、以下で詳しく説明するハードウェアブロックの基本構造が示されて
いる。
【0027】 図2には、ある特定の用途のために構造化された状態における図1によるハー
ドウェアブロックが示されている。
【0028】 図3には、>S<puterの基本構造が示されている。
【0029】 以下で詳しく説明するハードウェアブロックはコンフィグレーション可能なハ
ードウェアブロックであり、これは次のように設計されている。すなわちこのハ
ードウェアブロックはそのコンフィグレーションに依存して、記憶装置内に格納
されているデータを読み出し、読み出されたデータを算術的および/または論理
的に処理し、処理結果を表すデータを記憶装置に書き込む。さらにこのハードウ
ェアブロックは自立的に外部のハードウェアと相互に作用し合えるようになり、
これによりこのハードウェアブロックを、プログラム制御されるユニット(たと
えば>S<puterのファンクションユニットなど)あるいはその他の機構内
においても独立した(上位または下位のユニットがなくてもよい)ユニット内に
おいても、フレキシブルかつ汎用的に使用することができ、したがってこのブロ
ックのことを以下ではUCB(Universal Configurable Block)と称する。
【0030】 UCBデータを読み出したりUCBデータを書き込んだりする記憶装置を、U
CB内部またはUCB外部に設けることができる。以下で考察する実施例では記
憶装置は、図3に示されている>S<puterのレジスタファイル44により
形成される。
【0031】 記憶装置に対するUCBの書き込みアクセスおよび読み出しアクセスは、有利
にはクロック制御により実行される。UCB自体は、記憶装置の出力側と入力側
との間にある非同期の回路網である。UCBの各コンポーネントは非同期で互い
に結合されている。
【0032】 記憶装置は、有利にはUCBの外部からその稼働前に初期化可能である。なお
、UCBが記憶装置の初期化自体を指令したり実行したりすることも考えられる
。UCBの基本構造が図1に示されている。
【0033】 図示されているUCBは1つまたは複数の算術ユニットAU1,AU2、第1
のタイプの1つまたは複数の比較ユニットCUA、第1のタイプの1つまたは複
数のマルチプレクサMUXA1,MUXA2,MUXA3、第2のタイプの1つ
または複数のマルチプレクサMUXB,1つまたは複数のデマルチプレクサDE
MUX,1つまたは複数のクロック発生ユニットTGU、ならびに1つまたは複
数のシグナリングユニットSUを有している。なお、この実施例ではシグナリン
グユニットSUには、第1のタイプのマルチプレクサMUXA4と第2のタイプ
の比較ユニットCUBが含まれている。
【0034】 算術ユニットAU1,AU2はこの実施例では2つの入力端子、1つの出力端
子および1つの制御端子を有している。算術ユニットAU1,AU2は、それら
の入力端子を介して入力された入力信号を算術的および/または論理的に処理す
る役割を受けもつ。算術ユニットAU1,AU2によりにより実行可能なオペレ
ーションは、固定的にまえもって定めておくこともできるし、あるいは個々に設
定可能(コンフィグレーション可能)であってもよい。それらのオペレーション
にはたとえば、加算、減算、乗算、除算などの算術演算、AND結合、OR結合
、反転、補数形成等の論理結合、算術的および論理的シフト演算やデータ転送(
出力端子への入力信号のスイッチング)が含まれる。算術ユニットAU1,AU
2は、マイクロプロセッサやマイクロコントローラなど慣用のプログラム制御さ
れるユニットの算術/論理ユニット(ALU)と同一のものとみなすことができ
る。それらによって実行可能なオペレーションは制約されているので、算術ユニ
ットAU1,AU2の構造を比較的簡単なものとしておくことができる。算術ユ
ニットAU1,AU2の制御端子を介して、該当する算術ユニットがそのユニッ
トにより実行されるべきオペレーションを実行しているか否かを判定することが
できる。これにより、特定の条件の存在に依存して実行される命令を実践に移す
ことができる。この条件をたとえば特定のフラグの状態とすることができる。こ
の場合、フラグがセットされているならば、該当する算術ユニットが担うタスク
(たとえば加算)が実行され、そうでなければ実行されない(あるいはこの逆)
。以下では「条件付き命令」と称するこのような命令によって、取り扱いにくい
条件付きジャンプ命令をなくすることができる。これについてはあとでもっと詳
しく説明する。
【0035】 第1のタイプの比較ユニットCUAは、この実施例では2つの入力端子と1つ
の出力端子を有している。比較ユニットCUAは、入力端子に加わる信号または
データに対し比較演算を実施する役割を受けもつ。比較ユニットCUAにより実
行可能なオペレーションは固定的にまえもって定めておいてもよいし、あるいは
個々に設定可能(コンフィグレーション可能)にしてもよい。それらのオペレー
ションにはたとえば、大きい、大きい/等しい/小さい、小さい/等しい、等し
い、等しくないことについての比較や、真(TRUE)偽(FALSE)のチェ
ックなどが含まれる。比較ユニットCUAの出力端子は、以下で詳しく説明する
ようにデマルチプレクサDEMUXを介して算術ユニットAU1,AU2の制御
端子と接続されている。つまり算術ユニットAU1,AU2がそれらにより実行
されるべきオペレーションを実行するか否かは、比較ユニットCUAにおいて実
行される演算の結果に依存する。
【0036】 第1のタイプのマルチプレクサMUXA1,MUXA2,MUXA3,MUX
A4、第2のタイプのマルチプレクサMUXB、デマルチプレクサDEMUXは
、データソースおよび/または信号ソースならびにデータおよび/または信号の
宛先を選択するために用いられる。詳しくは以下のために用いられる。すなわち
、 −マルチプレクサMUXA1は、算術ユニットAU1の入力端子に供給されるデ
ータおよび/または信号のソースを選択するために用いられる(考えられるデー
タソースおよび/または信号ソースはこの実施例ではレジスタファイル44なら
びに他の算術ユニット)。
【0037】 −マルチプレクサMUXA2は、算術ユニットAU2の入力端子に供給されるデ
ータおよび/または信号のソースを選択するために用いられる(考えられるデー
タソースおよび/または信号ソースはこの実施例ではレジスタファイル44なら
びに他の算術ユニット)、 −マルチプレクサMUXA3は、比較ユニットCUAの入力端子に供給されるデ
ータおよび/または信号のソースを選択するために用いられる(考えられるデー
タソースおよび/または信号ソースはこの実施例ではレジスタファイル44なら
びに算術ユニット)、 −マルチプレクサMUXA4は、比較ユニットCUBの入力端子に供給されるデ
ータおよび/または信号のソースを選択するために用いられる(考えられるデー
タソースおよび/または信号ソースはこの実施例ではレジスタファイル44なら
びに算術ユニット)、 −マルチプレクサMUXBは、レジスタファイルに供給されるデータおよび/ま
たは信号のソースを選択するために用いられる(考えられるデータソースおよび
/または信号ソースはこの実施例では算術ユニット、レジスタファイル自身およ
びこの実施例ではいわゆるロード/ストアパイプラインLPL、SPLを介した
外部のハードウェア)、 −マルチプレクサDEMUXは、比較ユニットCUAから送出されるデータおよ
び/または信号の宛先を選択するために用いられる(考えられるデータの宛先お
よび/または信号の宛先はこの実施例では算術ユニット)。
【0038】 第1のタイプのマルチプレクサは複数の入力端子と2つの出力端子を有してお
り、第2のタイプのマルチプレクサは複数の入力端子と1つの出力端子を、また
、デマルチプレクサは1つの入力端子と複数の出力端子を有している。
【0039】 マルチプレクサとデマルチプレクサは図1には示されていない制御端子を有し
ており、それらの制御端子を介してどの入力データおよび/または入力信号をど
の出力端子へ通すのかを設定することができる。制御端子の個数は、種々の割り
当てコンビネーションの必要数に依存する。32個の入力端子と2つの出力端子
であれば、任意の入力端子に加わる信号および/またはデータを任意の出力端子
に通すことができるようにする目的で、たとえば10個の制御端子が必要である
。図3による>S<puter内のファンクションユニット42としてUCBを
使用した場合、有利には制御信号端子はプログラミング可能なストラクチャバッ
ファ41と接続されており、したがってそれらに書き込まれたコンフィグレーシ
ョンデータを実質的にそのままマルチプレクサ制御に利用できる。プログラミン
グ可能なストラクチャバッファ41内に格納されているコンフィグレーションデ
ータには有利には、算術ユニットAU1,AU2、比較ユニットCUA,CUB
、クロック発生ユニットTGUおよび/またはシグナリングユニットSUの個々
の機能を定めるためのコンフィグレーションデータも含まれている。
【0040】 算術ユニットAU1,AU2、第1のタイプの比較ユニットCUA、第1のタ
イプのマルチプレクサMUXA1,MUXA2,MUXA3、第2のタイプのマ
ルチプレクサMUXB、ならびにデマルチプレクサDEMUXによってUCBは
、記憶装置内(レジスタファイル44内)に格納されているデータを読み出し、
読み出されたデータを算術的および/または論理的に処理し、処理の結果を表す
データを記憶装置(レジスタファイル44)に書き込むことができるようになる
【0041】 最初に述べたようにUCBはさらに、自立的に外部のハードウェアと相互に作
用し合えるようになる。この実施例では相互作用は以下の通りである。すなわち
、 −UCBは記憶装置に対し、特定の結果に対し応答して外部のハードウェアから
供給されるデータを引き継ぐよう指令可能、 −UCBはデータおよび/または信号を外部のハードウェアへ送出可能。
【0042】 外部のハードウェアはこの実施例では、別のUCBおよび/または上位あるい
は下位の制御装置および/またはUCBを含むシステムにおけるその他のコンポ
ーネント(たとえばセンサ、A/Dコンバータ、D/Aコンバータ、タイマ、割
込コントローラ、制御すべき装置など)から成る。
【0043】 UCBと外部のハードウェアとの相互作用は基本的に(しかし図2に示されて
いるように限定されるわけではないが)、少なくとも1つのクロック発生ユニッ
トTGUおよび少なくとも1つのシグナリングユニットSUによって行われる。
【0044】 少なくとも1つのクロック発生ユニットTGUおよび少なくとも1つのシグナ
リングユニットSUは、外部のハードウェアに対するインタフェースを成してい
る。あとになってもっとよくわかるように、UCBはこれによって自立的に(上
位の制御装置が間に介在することなく)外部のハードウェアと相互に作用し合え
るようになる。
【0045】 クロック発生ユニットTGUは、UCBの内部および/または外部からの信号
および/またはデータに基づき、周期的または非周期的なクロック信号を生成す
る役割を受けもつ。入力信号はこの実施例では、UCBを含むシステムの周期的
なマスタクロックMCLKと、UCBと共働すべき外部のハードウェアコンポー
ネントのイネーブル信号ENABLEである。しかしながら基本的に、任意の個
数の任意のソースから到来する入力信号をクロック信号発生に利用することがで
きる。フレキシビリティを高めるため、クロック発生ユニットTGUの入力側に
マルチプレクサを前置接続することができ、このようにすればクロック発生ユニ
ットに供給された入力信号を、可能性のある多数の入力信号からアプリケーショ
ン固有に選択することができる。クロック発生ユニットTGUから発せられたク
ロック信号CLKはこの実施例の場合、レジスタファイル44から成る記憶装置
のためのクロック信号として用いられる。レジスタファイルはこの場合、データ
の書き込みおよび/またはデータの読み出しがクロック信号のクロックで実行さ
れるように設計されている。これにより以下のことが可能となる。すなわち、 −外部のハードウェアから(たとえばA/Dコンバータから)直接、または間接
的に(たとえば既述のロード/ストア・パイプラインLPL,SPLを介して)
供給されるデータを、クロック発生ユニットから発せられるクロック信号のタイ
ミングで、つまり精確に規定された時点で(たとえばA/Dコンバータの変換終
了をシグナリングする信号ADC_READYに応じて)、レジスタファイル4
4へ供給することができる、および/または、 −レジスタファイル44内に格納されたデータを直接、または間接的に(たとえ
ばロード/ストア・パイプラインLPL,SPLを介して)外部のハードウェア
へ(たとえば図3による>S<puterにおけるデータキャッシュ5のような
外部のメモリへ)送出することができる。
【0046】 シグナリングユニットSUはこの実施例では第1のタイプのマルチプレクサM
UX4と第2のタイプの比較ユニットCUBから成る。このユニットは、UCB
の内部および/または外部から到来する信号に基づき、1つまたは複数の特定の
状態または結果をシグナリングする信号(以下ではと称する)を発生する役割を
受けもっている。図1に示されているUCBの場合、ただ1つの通報信号だけが
生成される。この1つの通報信号は比較ユニットCUBの出力信号であって、こ
れは比較ユニットCUBに入力側で前置接続されているマルチプレクサMUX4
の2つの出力信号を比較する。マルチプレクサMUXA4が設けられていること
により通報信号発生の基礎を成す信号をアプリケーション固有に、そのために使
用可能な多数の信号の中から選択することができる。通報信号発生の基礎を成す
信号にはこの実施例の場合、たとえば算術ユニットAU2の出力信号とレジスタ
ファイル44の出力信号が含まれている。付加的にまたは択一的に、通報信号発
生の基礎として他の任意の信号を用いることができる。
【0047】 シグナリングユニットにより生成される通報信号は、外部のハードウェアに対
し特定の状態または結果をシグナリングする目的で使われる。これによりたとえ
ばREADY信号により、UCBが実施すべきオペレーションの実行終了を通報
することができる。UCBが実施すべきオペレーションが、繰り返し行うべきル
ープの実行中に実施しなければならないオペレーションであるならば、実行すべ
きループの終了もこの通報信号によってシグナリングすることができる。つまり
比較ユニットCUBはたとえば、UCBにより実施すべきオペレーションが実行
すべきループに対応する回数にわたり実行されたときにシグナリングを行うルー
プカウンタとして用いることもできる。さらにたとえばこの通報信号を、割込リ
クエストとして用いることもできる。
【0048】 比較ユニットCUBはその他の点では第1のタイプの比較ユニットCUAにか
なり対応しており、相違点といえば実質的に、出力信号のレベルの標準設定をF
ALSEとしておくことができること、出力信号のレベルの標準設定を有利には
アプリケーション固有に設定できることぐらいである。
【0049】 図1に示されておりそれを参照して説明したUCBは、基礎を成す構造を説明
するために想定されたものにすぎない。実際には算術ユニット、比較ユニット、
マルチプレクサ、デマルチプレクサは、さらに場合によってはクロック発生ユニ
ットやシグナリングユニットも、図1に示した実施例の場合よりもかなり多くの
個数で設けられる。UCBに対し有利には、あとで詳しく説明するいわゆるハイ
パーブロック(Hyperbolock)により行うことのできるすべてのオペレーション
を一度にプログラミングすることができる。
【0050】 UCB内に設けられているデータ経路および/または信号経路を個々の線また
はバスによって形成することができ、その際、UCBの個々のコンポーネントあ
るいはバスシステムにおいて、どのくらいの本数のバスラインをおよび/または
どのバスラインを考慮すべきかをコンフィグレーションできると有利であること
がわかった。
【0051】 既述の形式のUCBは、慣用のコンフィグレーション可能なハードウェアブロ
ック(フィールドプログラミング可能なロジック)よりも多くの点で有利である
ことがわかった。
【0052】 最初の利点は、データの結合を行うUCBのユニットが複合的なオペレーショ
ンを実施できることである。つまり少なくとも部分的にDNF(乗法標準形)に
基づくまたはテーブル指向の論理結合の放棄が行われ、算術ユニット(AU)ご
とに1つあるいはそれどころか複数の算術論理結合を実現することができる。
【0053】 しかもUCB(その算術ユニット)において実施可能なオペレーションは、た
とえばFPGA(field programmable gate array)の場合のよりも広範囲にわ
たっている(大ざっばにブロックされている)。このことで個々の算術ユニット
により実行可能なオペレーションが高速、簡単かつ確実に、プログラム制御され
るユニットのための命令またはアルゴリズムによりもたらされるべきアクション
と一致するようになる。そしてこれによって、プログラム制御されるユニットに
おいて実行すべきプログラムまたはプログラム部分を最低限の手間でコンフィグ
レーションデータに変換することができ、このコンフィグレーションデータによ
ってUCBはその動作の結果として、該当するプログラムまたはプログラム部分
の実行によりもたらされるべきアクションが生じるようにコンフィグレーション
される。
【0054】 最初に述べたようにUCBが優れている点は、自立的に外部のハードウェアと
共働できることであり、その際にたとえば計算を行うユニットとのコネクション
にあたり、外部のハードウェアとの結合を少なくとも部分的にいわゆるロード/
ストア・パイプラインを介して行うと有利であることがわかった。
【0055】 さらに有利には、UCBの同期合わせを行う素子つまり記憶装置(この実施例
ではレジスタファイル44)が、外部のハードウェアに対するコネクションをも
っている。
【0056】 図1の実施形態によるハードウェアブロックは命令または命令列に基づきコン
フィグレーション可能であり、そのようにすると有利である。命令または命令列
をハードウェアブロックストラクチャに変換すると、そのようにコンフィグレー
ションされたハードウェアブロックをシーケンシャルな命令列の実行ユニットと
して利用できる。ハードウェアブロックコンフィグレーションのこのような形態
を、以下ではストラクチャ手続プログラミング(struktur-prozedurale Program
iierung)と称する。
【0057】 ストラクチャ手続プログラミングの出発点を、たとえばC,C++などのよう
な高レベル言語で記述されたプログラムとすることができる。このプログラムは
コンパイラによりコンパイルされ、それにより得られたコードが(有利にはハイ
パーブロックごとに)ストラクチャ情報に変換され、それに基づきコンフィグレ
ーションすべきハードウェアをコンフィグレーションすることができる。ハイパ
ーブロックとは何かについては、あとで詳しく説明する。
【0058】 当然ながら、ストラクチャ手続プログラミングのための出発点をアセンブラで
記述したプログラムとしてもよいし、他のプログラムであってもよい。プログラ
ミングの種類や形式(関数型、インペラティブ、オブジェクト指向...)につ
いても何ら制約を受けるものではない。
【0059】 有利であると判明したのは、ストラクチャ情報に変換すべきコードつまりコン
パイラまたは他のやり方で生成された機械語命令が実質的にもっぱら5つの機械
語命令タイプだけをもつようにすることであり、つまり無条件命令、条件命令、
述語命令、Loopxx命令、Intxx命令だけをもつようにすることである
。この場合、一般的に、ただ1つのエントリポイントとただ1つのイグジットポ
イントだけをもつ非常に長い(非常に多い命令を含む)命令ブロックを形成する
ことができる。ただ1つのエントリポイントとただ1つのイグジットポイントし
かもたないできるかぎり長い命令ブロックを生成できるということは、とても重
要なことである。それというのも、同じ命令ブロックに属する命令、しかも1つ
の単位として(複数の命令がまとめられたマイクロ命令として)取り扱うことの
できる命令は、1つの共通のハードウェアブロックストラクチャに変換され、一
度に実行できるからである。それぞれ厳密に1つのそのような単位をハードウェ
アブロックのコンフィグレーションの基礎とすれば(そしてそのようにコンフィ
グレーションできるようにするためにハードウェアブロックが十分な大きさであ
れば)、プログラムの実行に必要とされる再コンフィグレーションまたはハード
ウェアブロックの再コンフィグレーションの個数を、最低限に抑えることができ
る。目下生成が優遇されており既述の命令グループによって形成も可能な命令ブ
ロックは、先に挙げたハイパーブロックである。
【0060】 ハイパーブロックが優れている点は殊に、あとで詳しく説明するいわゆるif
コンバージョンを用いることで条件付きジャンプ命令が排除されることである。
【0061】 ハイパーブロックに対する他の詳細な点、そのほかの命令ブロックならびにそ
れらに関連するテーマに関しては、 − Wen-Mei, W. Hwu 等による "Compiler Technology for Future Microprocess
ors", Invited Papaer in Proceedings of the IEEE, Vol. 83 (12), 12. 1995,
Special Issue on Microprocessors, p. 1625-1640 - Henk Neefs, Jan van Campenhout : "A Microarchitecture for a Fixed Leng
th Block Structured Instruction Set Architecture", Proceedings of the Ei
ghth IASTED International Conference on Parallel and Distributed Computi
ng and Systems, p. 38-42, IASTED/ACTA Press, 1996 - Richard H. Littin, J.A. David McWha, Murray W. Pearson, John G. Cleary
: "Block Based Execution and Task Level Parallelism", in: John Morris (
Ed.), "Computer Architecture 98", Proceedings of the 3rd Australasian Co
mputer Architecture Conference, ACAC' 98, Perth, 2-3 2. 1998, Australian
Computer Science Communications, Vol. 20, No. 4, p. 57 - 66, Springer,
Singapore を参照されたい。
【0062】 すでに触れたようにハードウェアブロックは有利には、それらのコンフィグレ
ーションをハイパーブロック方式で行うことができ、つまりできるならば常にハ
イパーブロック全体を対応するハードウェアブロックストラクチャに変換できる
ように設計されている。
【0063】 既述の無条件命令は、データをある記憶領域から別の記憶領域へ(あるレジス
タから別のレジスタへ)コピーすることも含めて、データを無条件で処理する命
令である。これらの命令を以下ではノーマル命令と称する。これらの命令は、新
たな値に対する各データ間の算術的および論理的結合と、レジスタ内容のコピー
のためのいわゆるMove命令を有している。これらの命令の一般的なフォーマ
ットは次の通りである:<ニーモニック><ターゲットレジスタ>、<ソースレ
ジスタ1>、<ソースレジスタ2>。この種の命令を実行するため、ハードウェ
アブロックの算術ユニットが必要とされる。
【0064】 条件付き命令は、特定の条件(コンディション)が存在したときにデータを処
理する命令である。これらの命令により実行すべきアクションもしくはオペレー
ションは、ノーマル命令により実行可能なアクションもしくはオペレーションと
合致するが、該当するアクションの実行はまえもって定められた条件に依存する
。条件が満たされると命令により指定された膜ションが実行され、条件が満たさ
れていなければ実行されない(このとき該当命令はNOP命令のようになる)。
これらの命令を以下ではコンディショナル命令と称する。これらの命令の一般的
なフォーマットは次の通りである:<ニーモニック>p <ターゲットレジスタ
>、<ソースレジスタ1>、<ソースレジスタ2> <p−フラグ>、この場合
、ニーモニックの終わりのpは命令の実行が条件に依存している合図であり、所
定のフラグ(pフラグ)の特定の状態により条件が定義される。この種の命令に
より指定されるアクションを実行するために、ハードウェアブロックの算術ユニ
ットが必要とされる。また、条件チェックのため比較ユニットが必要とされ、比
較ユニットの出力側には算術ユニットの制御入力側が接続されている。
【0065】 述語命令は、条件付き命令で用いられる条件フラグ(pフラグ)の状態を決め
る命令である。この決定はプログラム進行中、2つのデータの比較に基づき行わ
れる。これらの命令を以下ではpxx命令と称する。この命令の一般的なフォー
マットは次の通りである:pxx<ソースレジスタ1>、<ソースレジスタ2>
、<pフラグ>。ここでxxは実行すべき比較オペレーションを指定するもので
あり、gt(より大きい)、ge(より大きいか等しい)、eq(等しい)、n
e(等しくない)、le(小さいか等しい)またはlt(より小さい)によって
補うことができる。pxx命令は通常の分岐命令と同等のものであり、いわゆる
ifコンバージョンの使用によりそれを補うために用いられる(これについては
先に挙げた Wen-Mei W. Hwu 等による論文を参照されたい)。
【0066】 Loopxx命令は、1つのハイパーブロックの終わりにおいてループ反復に
用いられる命令である。これによれば、命令中で指定されている条件が満たされ
ているならば、該当するハイパーブロックの冒頭にジャンプして戻るよう指示さ
れる。条件が満たされていないならば、シグナリングユニットSUにより行われ
るべきREADY信号の生成が指示される。この条件は比較演算の所定の結果に
より規定される。これらの命令の一般的なフォーマットは次の通りである:lo
opxx<ソースレジスタ1>、<ソースレジスタ2>、ここでxxは実行すべ
き比較演算を指定するものである。
【0067】 Intxx命令は、外部のハードウェアに送出すべき信号を生成するための命
令である。これはループxx命令の一般化を成すものである。つまりこれによれ
ば、任意の動機から任意の意味内容を有する信号を、UCBを含むシステムにお
ける任意の外部のコンポーネントに送出することができる。これらの命令の一般
的なフォーマットは次の通りである:intxx<ソースレジスタ1>、<ソー
スレジスタ2>、<int_Signal>、ここでxxは実行すべき比較演算
を指定するものであり、”int_Signal”は(シグナリングユニットS
U)を生成して送出すべき通報信号を指定するものである。
【0068】 UCBは、先に挙げて説明した命令タイプにより指定されているオペレーショ
ンを実行することができることで、著しく多種多様に使用可能なコンポーネント
が得られる。これにより多くのプログラムまたはプログラム部分を、完全にUC
Bにより実行可能である。この場合、UCBを程度の差こそあれプログラム制御
されるユニットに完全に見合ったものとして利用することができ、あるいはそれ
がプログラム制御されるユニットの構成部分であったり、それらのユニットと共
働する場合には、それらの性能を格段に高めることができる。
【0069】 次に、命令をどのようにして対応するUCBストラクチャに変換できるのか(
シーケンシャルな命令ストリームからどのようにしてUCBのセルコンフィグレ
ーションが行われるのか)について、念のため手短に説明しておく。ここでは変
換の基本原理だけしか説明しないつもりであるので、以下の説明をノーマル命令
、条件付き命令およびpxx命令の変換に絞る。他の命令厳密にいえばLoop
xx命令とIntxx命令は場合によっては特別な処理を必要とするけれども、
以下の説明を知っていれば困難なことにはならない。
【0070】 UCB厳密にいえばそのサブユニット(算術ユニット、比較ユニット、マルチ
プレクサ、デマルチプレクサ...)および各サブユニット間の接続は、この実
施例では所望のコンフィグレーションを表すコンフィグレーションデータ(コン
フィグレーションビット)によりコンフィグレーションされる。したがってあと
で説明する変換方法の役割は、(有利には規定どおりにまえもって占有された)
コンフィグレーションビットもしくはそれを含むビットストリームを、UCBコ
ンフィグレーションの基礎を成す命令または命令列に基づき生成あるいは修正す
ることである。
【0071】 殊にUCBのサブユニットがコンフィグレーション可能であるならば、この(
物理的な)サブユニットに論理ユニットつまり仮想ユニットが割り当てられ、こ
こで仮想ユニットは物理的なサブユニットの種々の機能が表される。物理的なサ
ブユニットである「第1の算術ユニットAU1」に対し、それがコンフィグレー
ション可能であるかぎり、たとえば仮想ユニットである加算器、減算器などを割
り当てることができる。1つの仮想ユニットは正確に1つの物理的サブユニット
に割り当てられるが、1つの物理的なサブユニットに複数の仮想ユニットを割り
当てることができる。すての仮想ユニットは有利には1つのテーブルまたはリス
トにおいて管理される。個々のエントリには仮想ユニットに対する情報のほかに
、どの物理的なサブユニットに個々の仮想ユニットが割り当てられているのか、
仮想ユニットにより表されているファンクションを付与する目的で、どのコンフ
ィグレーションビットを介してどのようにその物理的なサブユニットを必要に応
じてコンフィグレーションする必要があるのか、に関する情報も含まれている。
【0072】 UCB構造化情報への命令の変換は、実質的に3つのステップで行われる。
【0073】 第1のステップにおいてまずはじめに、どのタイプの仮想ユニット(加算器、
減算器、乗算器...)が変換すべき命令を実行するために必要とされるのか、
およびそのような仮想ユニットがまだ利用できるかが求められる。必要とされる
タイプの仮想ユニットがまだ空いているならば、それらがまたはそれらのうちの
1つが該当する命令を実行するために選択される。その後、コンフィグレーショ
ンまたはその準備処理と、選択された仮想ユニットに割り当てられている物理的
なサブユニットの予約が行われる。コンフィグレーションのためには単に、該当
する物理的なサブユニットに割り当てられているコンフィグレーションビットが
セットまたはリセットされるだけである。このことによっても困難はもたらされ
ない。それというのも、どの物理的なサブユニットに選択された仮想ユニットが
割り当てられているのか、どのコンフィグレーションビットを介してどのように
その物理的なサブユニットを必要に応じてコンフィグレーションすべきであるの
かに関する情報は、仮想ユニットによっていっしょに管理されるからである。選
択された仮想ユニットに割り当てられている物理的なサブユニットの予約は、該
当する物理的なサブアブユニットを何重にも用いることができてしまうのを避け
るために必要である。この実施例ではこのことは、特定の目的で物理的なサブユ
ニットが付与されるごとに、該当する物理的なサブユニットに割り当てられるす
べての仮想ユニットを封鎖することで実現される。
【0074】 pxx命令においてUCBの構造に応じて、pフラグに依存して1つの比較ユ
ニット全体を選択する必要のある場合もある。
【0075】 条件付き命令において、特定の命令が特定のフラグによってのみ可能なとき、
つまり条件付き命令についてサブ命令セット内で完全な直交性が存在していない
とき、pフラグは仮想的/物理的ユニットの選択に対してのみ影響が及ぼされる
【0076】 UCBコンフィグレーションの第2のステップにおいて、選択された物理的サ
ブユニットに前置接続されたおよび/または後置接続されたマルチプレクサがコ
ンフィグレーションされる。この目的は、データソースおよび/または信号ソー
スならびにデータ宛先および/または信号宛先を、変換すべき命令の決定に従い
設定するためである。マルチプレクサおよび変換すべき命令のフォーマットは、
理想的には次のように互いに整合されている。すなわち、データソースおよび/
または信号ソースならびにデータ宛先および/または信号宛先を決定する命令の
部分を、マルチプレクサのコンフィグレーションを行うコンフィグレーションビ
ットとしてそのまま引き継ぐことができるようにされている。どのような理由か
らにしろ常にこれが不可能であったりあるいは望ましくないならば、マルチプレ
クサのコンフィグレーションを行うコンフィグレーションビットを、たとえば次
のようなテーブルから取り出すことができる。すなわちこのテーブルには、デー
タソースおよび/または信号ソースとデータ宛先および/または信号宛先を決定
する命令部分と、マルチプレクサのコンフィグレーションを行うコンフィグレー
ションビットとの対応関係が格納されている。特定のデータソースおよび/また
は信号ソースおよび/または特定のデータ宛先および/または信号宛先への接続
を確立するために必要とされるコンフィグレーションは、有利にはすべてのマル
チプレクサについて同じである。
【0077】 実行すべきオペレーションの基礎となるデータが少なくとも部分的に命令コー
ド中に含まれている定数から成るときには、特別な処理が必要とされる。この場
合、 −空いている(定数)レジスタを探し、 −そのレジスタをデータソースおよび/または信号ソースとして用い、 −命令コード中に含まれている定数をUCBの稼働前、選択されたレジスタに書
き込む必要がある。
【0078】 該当する定数がすでに(定数)レジスタに格納されているか否かを事前にチェ
ックするよう構成できる。その際、すでに定数を含む(定数)レジスタが存在し
ていることが判明したならば、すでに存在しているその(定数)レジスタをデー
タソースおよび/または信号ソースとして用いることができる。
【0079】 さらに述べておくと、変換すべき命令は種々異なる多数のデータソースおよび
/または信号ソースならびにデータ宛先および/または信号宛先を有している。
【0080】 なお、データ宛先および/または信号宛先として用いられるレジスタは占有さ
れたものとしてマーキングされる。なぜならば1つのハイパーブロック内では2
回目の占有は許可されておらず、スーパースカラアーキテクチャにおいて知られ
ているテクノロジーのいわゆる(ランタイム)レジスタ・リネーミングによりそ
れを避けなければならないからである。
【0081】 (すべての命令に共通する)この第2のステップ後、個々の命令タイプのため
に特別なサブステップが挿入される。それらのサブステップは個々の特殊性から
生じるものである。
【0082】 殊に条件付き命令の場合、条件の存在をチェックする比較ユニットを確認する
必要があり、その出力信号をそれに属するデマルチプレクサを介して、演算を実
行する算術ユニットへスイッチングしなければならない。さらにその際、どのよ
うな種類の条件であるのかを考慮する必要がある。
【0083】 条件付きMove命令であればこれに加えて、命令が実行されないときにはタ
ーゲットレジスタの内容が変えられないよう配慮しなければならない。
【0084】 UCBコンフィグレーションの第2のステップの後にそれを終了させてUCB
をスタートさせてもよいのであるが、以下で述べるステップ実行後にはじめてそ
れを行うのがよい。
【0085】 UCBコンフィグレーションにおけるこの第3のステップでは、いわゆるデー
タフォワーディング(data forwarding)が実現される。これによればデータソ
ースおよび/または信号ソースとして単に命令中に示されているデータソースお
よび/または信号ソースがそのまま用いられるのではなく、可能であれば、該当
するデータソースおよび/または信号ソースを個々のハイパーブロック内に事前
に記述すべきであった物理的なサブユニットが用いられる。これは2通りの観点
で有利であると判明した。すなわち一方では、場合によっては僅かなレジスタし
か必要とされないためであり(命令中でで示されるデータソースおよび/または
信号ソースがそのようなものとして用いられなければ、それらを記述する必要は
なく、場合によってはまったく省略できる)、他方では、必要とされるデータを
それを生成するサブユニット(たとえば算術ユニット)から取ってくる場合、そ
れを最初にレジスタに書き込みそこから取ってこなければならないときよりも早
く利用できる。データフォワーディングはすべての命令において使用することが
でき、平均して格段に有利であることがわかった。
【0086】 次に、UCBの使用についての実例について説明する。
【0087】 この実例は、データのアナログ/ディジタル変換であり、詳しくいえば以下の
通りである。
【0088】 −8bitの変換幅をもつA/Dコンバータがタイマにより始動される、 −A/D変換の結果が12bitのカウントマークとともに記憶される、 −A/D変換の結果が所定の限界値を上回ることおよび下回ることについて監視
され、その際、結果が限界値を上回ったときまたは下回ったとき、特定のルーチ
ンに分岐することになる。
【0089】 −2048の測定後にこの過程が中止される。
【0090】 このような適用事例は、純粋なソフトウェアによる解法であるとかなりの手間
を必要とする。典型的なA/Dコンバータ(たとえばマイクロコントローラに集
積されたA/Dコンバータ)は通例、結果を自発的に供給することはないので、
つまりいわゆるフラッシュコンバータ(Flasch-Wandler)として動作し数msの
範囲の変換時間をもつので、アプリケーションの仕様を精確に実行する場合には
以下の手段のうち1つの手段をとらなければならない。すなわち、 1)タイマにより割り込みがトリガされる。割り込みサービスルーチンによりA
/D変換が開始され、その後、終了する。A/Dコンバータは変換終了時にも割
り込みをトリガする。それに基づき実行される割り込みサービスルーチンにより
A/D変換結果が読み出されて処理される。
【0091】 2)タイマにより割り込みがトリガされる。それに基づき実行される割り込みサ
ービスルーチンにおいてA/D変換が開始され、変換終了を待ち、ついで(変換
終了後)A/D変換結果が読み出されて処理される。
【0092】 変換時間が割り込み待ち時間よりも短ければ、2番目のバリエーションのほう
がよい。そうでなければ1番目のバリエーションのほうが有利である。しかしな
がら、いずれにせよ「通常の」マイクロプロセッサあるいはマイクロコントロー
ラにおいて実行されるのであれば、一般には次の第3のバリエーションが最も好
適である。
【0093】 3)タイマにより割り込みがトリガされる。それに基づき実行される割り込みサ
ービスルーチンにおいて直前のA/D変換結果が読み出され、次のA/D変換が
開始され、読み出されたA/D変換結果が評価される。
【0094】 とはいえこの場合、A/D変換結果の読み出しならびに評価は通例、本来可能
であるよりもあとで行われる。
【0095】 A/D変換結果の読み出し、評価ならびに記憶を1つのUCBによって片づけ
ようとするならば、有利には以下のCプログラムに従いそれをコンフィグレーシ
ョンすることになる。あとになればさらにいっそうよく理解できるようになるが
、これによって最低限の手間とUCBを含むシステムの最小限の負荷でA/D変
換終了後ただちに始まるA/D変換結果の読み出し、評価ならびに記憶を実行す
ることができる。以下のCプログラムにおいて新しいキーワードである "hardwa
re_thread" が用いられる。もちろん他のどのような名前でもよいがこのキーワ
ードによって、Cプログラムのコンパイルを行うコンパイラに対し、該当するプ
ログラムまたは該当するプログラムセクションは、生成されるコードがUCBに
おいてできりかぎり効率的に実行可能であるようコンパイルせよ、という合図が
送られる。しかしこのようなキーワードを必ず使わなければならないわけではな
い。コンパイラ自体がもともと、コンパイルすべきプログラムがUCBにおいて
実行できるよう、そのプログラムをコンパイルできるように構成されていてもよ
い。
【0096】
【外1】
【0097】 このソースコードは、先に挙げた命令タイプを使用すれば以下のようなアセン
ブラコードに変換することができる:
【0098】
【外2】
【0099】 この場合、最初の6つの命令はレジスタの初期化に係わり、あとの(ラベルL
0からの)命令は、上述のCプログラムにより行われるべきアクションの実行に
係わる。
【0100】 たしかにアセンブラコード中には、ADC_READY信号が存在していると
きのみループを実行してよい、という条件が欠けているけれども、このアセンブ
ラプログラムのUCBストラクチャへの変換ならびにUCBによる実行において
は、慣用のマイクロプロセッサまたはマイクロコントローラにおいてCプログラ
ムを「通常どおり」コンパイルしてそれを実行したときと同じ結果が得られる。
つまりアセンブラコードに欠けている条件はいわば、UCBのクロック発生ユニ
ットTGUへ供給されるイネーブル信号ENABLEによっても実現可能なトリ
ガリングを成している。
【0101】 行うべきアクションを実行するUCBストラクチャへアセンブラコードを変換
すると、図2に示されているようなUCBストラクチャが得られる。
【0102】 図2に示されているUCBは、加算器としてコンフィグレーションされた4つ
の算術ユニットAU1,AU2,AU3,AU4と、クロック発生ユニットTG
Uと、3つの比較ユニットCUB1,CUB2,CUB3を含むシグナリングユ
ニットSUとを有している。この図からわかるようにこのUCBストラクチャは
、図1に示した一般的なUCBストラクチャをベースとしており、この場合には
実際の適用事例に対する整合がなされているにすぎない。図2それ自体で、UC
Bにおける各サブユニットの結線ならびにそれらの入出力信号がわかるので、こ
れ以上の説明は不要である。コンフィグレーションされたUCBが上述のアセン
ブラコード(前述のCプログラム)により規定されていることを正確に実行する
ことは、容易に理解できる。
【0103】 このようにコンフィグレーションされたUCBによれば、片づけるべき課題を
完全に自立的に(上位または下位の制御装置の負担なく)かつ慣用のマイクロプ
ロセッサまたはマイクロコントローラよりも格段に高速に実行可能であることは
自明である。また、UCBの使用についてこれまで説明してきた実例に限定され
るものではないことも自明である。当然ながら、UCBを無数の他の目的で使用
することができる。その他の可能な利用法として殊に際立っているのは、チップ
テストでの利用あるいは暗号や識別の用途である。UCBを用いることでこのよ
うな役割を非常にわずかな手間で、それと同時に格別フレキシブルに実現できる
【0104】 ここで言及したチップテストとはたとえば、テストすべき集積回路に収容され
たテストモジュールを用いて行われるようなチップテストのことであって、つま
りたとえば、セルフテストにおけるメモリ・ビルド(Memory Build in Selftest
, MBIST)、リニア・フィードバック・シフトレジスタ(Linear Feedback Shift
Register, LFSR)、マルチプル・インプット・シグネーチャレジスタ(Multipl
e Input Signature Register, MISR)、セルフリペアにおけるメモリ・ビルド(
Memory Build in Self Repair, MBISR)、(たとえばアナログ/ディジタルコン
バータにおける)アナログBIST、オンチップ・モニタ(On Chip Monitore
たとえば IDDQ のための電流測定モニタ)などである。この場合、テストすべき
集積回路は任意の集積回路とすることができ、たとえばマイクロプロセッサ、マ
イクロコントローラ、メモリコンポーネント、A/Dコンバータなどとすること
ができる。テストすべきチップに専用のテストモジュールを設ける必要のある上
述のテスト手法ならびにその他のテスト手法は、そのようなテストモジュールを
テストすべきチップに集積するために(チップ面積の拡大、製造価格の増加等)
ただならぬ手間がかかることから、現在のところまだそれほど普及していない。
この場合、UCBを用いればチップテスト実行にあたっての困難を取り除くこと
ができる。つまりチップテスト実行のために用いられるUCB(チップテストモ
ジュールとして用いられるUCB)は、チップテストの前および/または後に他
の役割を担うことができ、たとえばシリアルインタフェースおよび/またはパラ
レルインタフェースとしてコンフィグレーションすることができる。このように
すれば、テストすべきチップに専用のチップセットモジュールを設けることなく
、上述のチップテストあるいはその他のチップテストを実施することができる。
UCBの適切な形成と選定にあたり、チップテストは何ら制約を受けない。チッ
プテストに関するUCBの機能を、専用のチップセットモジュールの機能と完全
に一致させることができる。しかもUCBを用いたチップテストは一般に、専用
のチップテストモジュールを用いたチップテストよりも高速に実施することがで
きる。その理由は、専用のチップテストモジュールはスペースやコスト上の理由
からできるかぎり簡単な構造をもっており、それによりチップテストを時として
最大限の速さで実行することができないからである。チップテストを実行するた
めに用いられるUCBはこれとは違う。UCBはもともと汎用的な利用のために
設計されており、そのため一般に特別な形成を行わなくても委ねられた役割にそ
のつど最適に整合させることができる。UCBにより基本的に任意のアナログ回
路、同期ディジタル回路および非同期ディジタル回路を実現することができる。
しかもチップテストのためにUCBを使用することは、このようにすればいつで
も問題なくテスト手法を変更できることから有利であることがわかった。たとえ
ば、テスト手法におけるエラーをなくしたりテスト手法を最新のレベルにする目
的で、変更が必要になる可能性がある。なお、チップテストのために用いられる
UCB自体は、たとえばいわゆるスキャンテストによってテストすることができ
る。スタティックRAM用のMBISTコントローラを1つのUCBによって実
現した実際のテストがすでに実施されている。そしてその結果は傑出したもので
あった。
【0105】 UCBにより実現される回路をいつでも問題なく変更できるということから、
UCBは暗号や識別の用途のためにも有用なものとなっている。つまりこれによ
り、必要とされる識別データの変更および/または(たとえばハッカーによる攻
撃後に)必要とされる暗号コード変更を、単にUCBの再コンフィグレーション
によって実施することができ、つまりきわめて簡単なやり方で実施できる。エン
ドユーザのところにあるスマートカード、Mitfare (自動料金徴収機構) また
は盗難阻止機構を取り替える必要がない。
【0106】 暗号や識別の用途のためにUCBを利用することのさらに別の利点は、たとえ
ばいわゆるFPGAなどのような他のコンフィグレーション可能なハードウェア
よりも高速かついっそう頻繁にUCBをプログラミングしなおすことができるこ
とである。しかもUCBはFPGAよりも小さくかつ面積効率もよい。
【0107】 また、当然ながらUCBを他の用途のために使用することもでき、その際、用
途の種類とは無関係にUCBを含む装置の様々な動作フェーズにおいて種々の機
能を満たすことができる。この場合、各機能をコンフィグレーションデータもし
くはコンフィグレーションデータ列の相応の決定により、最低限の煩雑さでユー
ザの個々の要求に整合させることができる。したがってたとえば、任意に多くの
実例のうち1つだけを挙げるとすれば、UCBを含むチップのスイッチオン後に
UCBがチップテストモジュールとして用いられ、その後、つまりチップの「通
常の」動作中は選択的にシリアルインタフェースまたはインテリジェントパラレ
ルインタフェースとして用いられるように構成することができる。
【0108】 UCBの実際の使用にあたり有利であると判明したのは、UCBが一時的なデ
ータの中間記憶を利用できるようにすることである。このため有利にはUCB内
部にメモリたとえば書き込み/読み出しメモリ(RAM)が設けられている。こ
のメモリは有利にはランダムアアクセスメモリまたはスタックメモリとして構成
されており、それを含むUCBからのみアクセスできればよいものである。もち
ろん必要に応じて、UCBを含むシステムにおける他のコンポーネントがそのメ
モリにアクセスできるように構成してもよい。
【0109】 たとえばVHDLなどのような回路記述言語を用いて、UCBの合成を行うこ
とができる。UCBの所望のコンフィグレーションのためのコンフィグレーショ
ンデータをたとえばアセンブラプログラム、Cプログラムまたは(VHDLなど
の回路記述言語でもなされる)回路記述に基づき生成することができる。
【0110】 これまで説明してきたハードウェアブロック(UCB)は、それにもかかわら
ず数多くの観点で有利であることがわかった。これは考察した形式の慣用のハー
ドウェアブロックにおいて該当するよりも高性能でいっそうフレキシブルかつ汎
用的に使うことができる。
【図面の簡単な説明】
【図1】 ハードウェアブロックの基本構造を示す図である。
【図2】 ある特定の用途のために構造化された状態における図1によるハードウェアブ
ロックを示す図である。
【図3】 >S<puterの基本構造を示す図である。
【符号の説明】
1 プリデコードユニット 2 命令バッファ 3 デコード・リネーム&ロードユニット 4 sユニット 5 データキャッシュ 6 メモリインタフェース 41 プログラミング可能なストラクチャバッファ 42 プログラミング可能なストラクチャをもつファンクションユニット 43 整数/アドレス命令バッファ 44 整数レジスタファイル Aux 算術ユニット CUA 第1のタイプの比較ユニット CUBx 第2のタイプの比較ユニット DEMUX デマルチプレクサ MUXAx 第1のタイプのマルチプレクサ MUXB 第2のタイプのマルチプレクサ TGU クロック発生ユニット SU シグナリングユニット MCLK マスタクロック ENABLE イネーブル信号 ADC_READY A/Dコンバータのレディ信号 CLK TGUが発生するクロック信号 READY ハードウェアブロックのレディ信号 INT1 ハードウェアブロックの割り込みリクエスト1 INT2 ハードウェアブロックの割り込みリクエスト2 LPL ロードパイプライン SPL ストアパイプライン A アドレス D データ
───────────────────────────────────────────────────── フロントページの続き (72)発明者 クリスティアン ジーマース ドイツ連邦共和国 ヒルデスハイム ザン クト−ゴーデハルト シュトラーセ 18 Fターム(参考) 5B076 EB02 5J042 AA10 BA04 CA00 CA17 CA18 CA19 CA20 CA22 CA23 DA04

Claims (25)

    【特許請求の範囲】
  1. 【請求項1】 コンフィグレーション可能なハードウェアブロックにおいて
    、該ハードウェアブロックはそのコンフィグレーションに依存して記憶装置(4
    4)に格納されているデータを読み出し、読み出されたデータを算術的および/
    または論理的に処理し、処理結果を表すデータを前記記憶装置に書き込むように
    設計されていて、 該ハードウェアブロックは外部のハードウェアと相互に作用し合うことを特徴
    とする、 コンフィグレーション可能なハードウェアブロック。
  2. 【請求項2】 外部のハードウェアとの相互作用において、前記記憶装置(
    44)は特定の結果に応答して外部のハードウェアから供給されたデータを受け
    入れるよう指示される、請求項1記載のコンフィグレーション可能なハードウェ
    アブロック。
  3. 【請求項3】 外部のハードウェアとの相互作用において、データおよび/
    または信号が外部のハードウェアへ送出される、請求項1または2記載のコンフ
    ィグレーション可能なハードウェアブロック。
  4. 【請求項4】 前記外部のハードウェアは、別のコンフィグレーション可能
    なハードウェアブロックおよび/または上位または下位の制御装置および/また
    はコンフィグレーション可能なハードウェアブロックを含むシステムにおけるそ
    の他のユニットから成る、請求項1から3のいずれか1項記載のコンフィグレー
    ション可能なハードウェアブロック。
  5. 【請求項5】 前記外部のハードウェアに送出されるデータおよび/または
    信号は、特定の状態または結果を通報するデータおよび/または信号である、請
    求項3または4記載のコンフィグレーション可能なハードウェアブロック。
  6. 【請求項6】 前記記憶装置(44)のためのクロック信号(CLK)を発
    生させるクロック発生ユニット(TGU)が設けられている、請求項1から5の
    いずれか1項記載のコンフィグレーション可能なハードウェアブロック。
  7. 【請求項7】 前記クロック発生ユニット(TGU)はクロック信号(CL
    K)を、1つまたは複数の周期的または非周期的な信号(MCLK,ENABL
    KE;MCLK,ADC_READ)に依存して生成し、該信号は少なくとも部
    分的に外部のハードウェアから到来する、請求項6記載のコンフィグレーション
    可能なハードウェアブロック。
  8. 【請求項8】 外部のハードウェアのために通報信号(READY,INT
    1,INT2)を生成するシグナリングユニット(SU)が設けられている、請
    求項1から7のいずれか1項記載のコンフィグレーション可能なハードウェアブ
    ロック。
  9. 【請求項9】 前記通報信号(READY,INT1,INT2)により、
    コンフィグレーション可能なハードウェアブロックにおけるまえもって定められ
    た状態および/または結果がシグナリングされる、請求項8記載のコンフィグレ
    ーション可能なハードウェアブロック。
  10. 【請求項10】 前記シグナリングユニット(SU)は、該ユニットから発
    せられる通報信号(READY,INT1,INT2)により、ハードウェアブ
    ロック内で繰り返し実行されるオペレーションまたはオペレーション列が所望の
    回数だけ実施されたことがシグナリングされるよう設計されている、請求項8ま
    たは9記載のコンフィグレーション可能なハードウェアブロック。
  11. 【請求項11】 前記シグナリングユニット(SU)は、プログラミング制
    御されるユニットのための割り込みリクエストとして使用可能な通報信号(RE
    ADY,INT1,INT2)を必要に応じて発生するように設計されている、
    請求項8から10のいずれか1項記載のコンフィグレーション可能なハードウェ
    アブロック。
  12. 【請求項12】 前記通報信号(READY,INT1,INT2)は、少
    なくとも1つの比較ユニット(CUB;CUB1,CUB2,CUB3)の出力
    信号である、請求項8から11のいずれか1項記載のコンフィグレーション可能
    なハードウェアブロック。
  13. 【請求項13】 前記比較ユニット(CUB;CUB1,CUB2,CUB
    3)は少なくとも部分的にコンフィグレーション可能な比較ユニットであり、該
    比較ユニットは入力された信号に対し、選択可能な比較演算および/または真お
    よび/または偽についてのチェックを行う、請求項12記載のコンフィグレーシ
    ョン可能なハードウェアブロック。
  14. 【請求項14】 前記の選択可能な比較演算には、より大きい、大きい/等
    しい、等しい、等しくない、より小さい、および/または小さい/等しいという
    比較を含む、請求項13記載のコンフィグレーション可能なハードウェアブロッ
    ク。
  15. 【請求項15】 前記比較ユニット(CUB;CUB1,CUB2,CUB
    3)に対し少なくとも部分的に入力側にマルチプレクサ(MUXA4)が前置接
    続されており、該マルチプレクサにより、どの信号を比較ユニットへ入力信号と
    して供給するのかが決定される、請求項12から14のいずれか1項記載のコン
    フィグレーション可能なハードウェアブロック。
  16. 【請求項16】 コンフィグレーション可能なハードウェアブロックは機能
    的にコンフィグレーション可能なサブユニット(AUx,CUx,DEMUX,
    MUXx)および/またはコンフィグレーション可能なデータ経路および/また
    は信号経路を有する、請求項1から15のいずれか1項記載のコンフィグレーシ
    ョン可能なハードウェアブロック。
  17. 【請求項17】 外部のハードウェアに対するコンフィグレーション可能な
    データ経路および/または信号経路が設けられているかあるいは形成可能である
    、請求項16記載のコンフィグレーション可能なハードウェアブロック。
  18. 【請求項18】 前記記憶装置(44)は多数のレジスタを含むレジスタブ
    ロックである、請求項1から17のいずれか1項記載のコンフィグレーション可
    能なハードウェアブロック。
  19. 【請求項19】 前記ハードウェアブロックは命令または命令列に基づきコ
    ンフィグレーション可能であり、該命令または命令列により所定のオペレーショ
    ンまたはオペレーション列を実行可能である、請求項1から18のいずれか1項
    記載のコンフィグレーション可能なハードウェアブロック。
  20. 【請求項20】 前記ハードウェアブロックは、そのコンフィグレーション
    をハイパーブロック方式で行えるように構成されている、請求項19記載のコン
    フィグレーション可能なハードウェアブロック。
  21. 【請求項21】 前記ハードウェアブロックは、専用回路の代替として使用
    できるように構成されておりコンフィグレーション可能である、請求項1から2
    0のいずれか1項記載のコンフィグレーション可能なハードウェアブロック。
  22. 【請求項22】 前記ハードウェアブロックは、種々の専用回路の代替とし
    て使用できるように構成されておりコンフィグレーション可能である、請求項1
    から21のいずれか1項記載のコンフィグレーション可能なハードウェアブロッ
    ク。
  23. 【請求項23】 前記ハードウェアブロックは、該ブロックを含む集積回路
    をテストするために用いられる、請求項21または22記載のコンフィグレーシ
    ョン可能なハードウェアブロック。
  24. 【請求項24】 前記ハードウェアブロックは暗号および/または識別の用
    途に用いられる、請求項21から23のいずれか1項記載のコンフィグレーショ
    ン可能なハードウェアブロック。
  25. 【請求項25】 前記ハードウェアブロックは中間結果を格納するためのメ
    モリを有する、請求項1から24のいずれか1項記載のコンフィグレーション可
    能なハードウェアブロック。
JP2000571362A 1998-09-23 1999-09-10 コンフィグレーション可能なハードウェアブロック Pending JP2002525945A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
DE19843663.7 1998-09-23
DE19843663A DE19843663A1 (de) 1998-09-23 1998-09-23 Konfigurierbarer Hardware-Block
PCT/DE1999/002891 WO2000017772A2 (de) 1998-09-23 1999-09-10 Konfigurierbarer hardware-block

Publications (1)

Publication Number Publication Date
JP2002525945A true JP2002525945A (ja) 2002-08-13

Family

ID=7881996

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000571362A Pending JP2002525945A (ja) 1998-09-23 1999-09-10 コンフィグレーション可能なハードウェアブロック

Country Status (7)

Country Link
US (1) US7028162B2 (ja)
EP (1) EP1116129B1 (ja)
JP (1) JP2002525945A (ja)
KR (1) KR20010075322A (ja)
CN (1) CN1321276A (ja)
DE (2) DE19843663A1 (ja)
WO (1) WO2000017772A2 (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7757069B2 (en) * 2005-03-31 2010-07-13 The Board Of Regents Of The University Of Oklahoma Configuration steering for a reconfigurable superscalar processor
CN101685389B (zh) * 2008-09-28 2012-10-24 北京大学深圳研究生院 一种处理器
US20110231634A1 (en) * 2010-03-22 2011-09-22 Fishel Liran System and method for grouping alternative possibilities in an unknown instruction path
CN102298516B (zh) * 2011-09-20 2013-11-20 北京航天自动控制研究所 一种plc梯形图硬件处理器
US9378055B1 (en) 2012-08-22 2016-06-28 Societal Innovations Ipco Limited Configurable platform architecture and method for use thereof
KR102238650B1 (ko) * 2014-04-30 2021-04-09 삼성전자주식회사 저장 장치, 상기 저장 장치를 포함하는 컴퓨팅 시스템 및 상기 저장 장치의 동작 방법
US10154095B2 (en) 2014-05-21 2018-12-11 N.Io Innovation, Llc System and method for aggregating and acting on signals from one or more remote sources in real time using a configurable platform instance
AU2015263042B2 (en) 2014-05-21 2018-08-09 N.Io Innovation, Llc System and method for fully configurable real time processing
US9891893B2 (en) 2014-05-21 2018-02-13 N.Io Innovation, Llc System and method for a development environment for building services for a platform instance
WO2016151398A1 (en) * 2015-03-23 2016-09-29 Societal Innovations Ipco Limited System and method for configuring a platform instance at runtime

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4760518A (en) * 1986-02-28 1988-07-26 Scientific Computer Systems Corporation Bi-directional databus system for supporting superposition of vector and scalar operations in a computer
US5452231A (en) * 1988-10-05 1995-09-19 Quickturn Design Systems, Inc. Hierarchically connected reconfigurable logic assembly
US5377129A (en) * 1990-07-12 1994-12-27 Massachusetts Institute Of Technology Particle interaction processing system
US5765011A (en) * 1990-11-13 1998-06-09 International Business Machines Corporation Parallel processing system having a synchronous SIMD processing with processing elements emulating SIMD operation using individual instruction streams
US5361373A (en) * 1992-12-11 1994-11-01 Gilson Kent L Integrated circuit computing device comprising a dynamically configurable gate array having a microprocessor and reconfigurable instruction execution means and method therefor
JPH0736858A (ja) * 1993-07-21 1995-02-07 Hitachi Ltd 信号処理プロセッサ
US6152613A (en) * 1994-07-08 2000-11-28 California Institute Of Technology Circuit implementations for asynchronous processors
US6077315A (en) * 1995-04-17 2000-06-20 Ricoh Company Ltd. Compiling system and method for partially reconfigurable computing
US5794062A (en) 1995-04-17 1998-08-11 Ricoh Company Ltd. System and method for dynamically reconfigurable computing using a processing unit having changeable internal hardware organization
US5592488A (en) * 1995-06-07 1997-01-07 Micron Technology, Inc. Method and apparatus for pipelined multiplexing employing analog delays for a multiport interface
GB2304438A (en) * 1995-08-17 1997-03-19 Kenneth Austin Re-configurable application specific device
US5603047A (en) * 1995-10-06 1997-02-11 Lsi Logic Corporation Superscalar microprocessor architecture
US5784636A (en) * 1996-05-28 1998-07-21 National Semiconductor Corporation Reconfigurable computer architecture for use in signal processing applications
US6023742A (en) * 1996-07-18 2000-02-08 University Of Washington Reconfigurable computing architecture for providing pipelined data paths
DE19634031A1 (de) * 1996-08-23 1998-02-26 Siemens Ag Prozessor mit Pipelining-Aufbau
US6381692B1 (en) * 1997-07-16 2002-04-30 California Institute Of Technology Pipelined asynchronous processing
US6163836A (en) * 1997-08-01 2000-12-19 Micron Technology, Inc. Processor with programmable addressing modes

Also Published As

Publication number Publication date
DE19843663A1 (de) 2000-03-30
CN1321276A (zh) 2001-11-07
DE59914378D1 (de) 2007-07-26
US20020013891A1 (en) 2002-01-31
EP1116129B1 (de) 2007-06-13
US7028162B2 (en) 2006-04-11
EP1116129A2 (de) 2001-07-18
WO2000017772A2 (de) 2000-03-30
KR20010075322A (ko) 2001-08-09
WO2000017772A3 (de) 2000-07-27

Similar Documents

Publication Publication Date Title
US10942737B2 (en) Method, device and system for control signalling in a data path module of a data stream processing engine
US6775766B2 (en) Methods and apparatus to dynamically reconfigure the instruction pipeline of an indirect very long instruction word scalable processor
US7293159B2 (en) Coupling GP processor with reserved instruction interface via coprocessor port with operation data flow to application specific ISA processor with translation pre-decoder
US9405552B2 (en) Method, device and system for controlling execution of an instruction sequence in a data stream accelerator
WO1990014629A2 (en) Parallel multithreaded data processing system
WO2001016717A1 (fr) Unite de commande et support d'enregistrement
JP2002525945A (ja) コンフィグレーション可能なハードウェアブロック
JP3706397B2 (ja) データ駆動型情報処理装置
US7472257B2 (en) Rerouting VLIW instructions to accommodate execution units deactivated upon detection by dispatch units of dedicated instruction alerting multiple successive removed NOPs
US6070218A (en) Interrupt capture and hold mechanism
EP1502182B1 (en) Automatic task distribution in scalable processors
US7823033B2 (en) Data processing with configurable registers
JP2004334429A (ja) 論理回路及びその論理回路上で実行するプログラム
KR101154077B1 (ko) 시간 고정형 프로세서 및 그의 제어 방법
JP2004503872A (ja) 共同利用コンピュータシステム
US20090055632A1 (en) Emulation Scheme for Programmable Pipeline Fabric
EP3017363B1 (en) System and method for an asynchronous processor with pipelined arithmetic and logic unit
US9830154B2 (en) Method, apparatus and system for data stream processing with a programmable accelerator
US9495316B2 (en) System and method for an asynchronous processor with a hierarchical token system
Siemers et al. Reconfigurable computing based on universal configurable blocks-a new approach for supporting performance-and realtime-dominated applications
US20060271610A1 (en) Digital signal processor having reconfigurable data paths
JP2002287956A (ja) マイクロコンピュータ
Libby et al. An Embedded Implementation of the Microsoft Common Language Infrastructure
Chalk et al. Reduced instruction set computers
Brandolese et al. Discrete-event modeling and simulation of superscalar microprocessor architectures

Legal Events

Date Code Title Description
A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20040310