(57)【要約】  本発明は、集積化命令シーケンサ、処理エンジンのアレイ及びＩ／Ｏコントローラを有するコンピュータプロセッサに関する。前記命令シーケンサは、ホストからの命令をシーケンスし、これら命令を対応するエンジンに転送し、それらの動作を指令する。Ｉ／Ｏコントローラは、処理エンジンへ及び該エンジンからのＩ／Ｏデータの転送を、命令シーケンサにより制御された処理と並列して制御する。処理エンジン自体は、整数算術及び論理ユニット（ＡＬＵ）、１ビットＡＬＵ、決定ユニット並びにレジスタを用いて構築される。命令シーケンサからの命令は、整数ＡＬＵに対して、１ビットＡＬＵに保存された論理状態及び決定ユニットに保存されたデータに従う整数演算を実行するように指令する。１ビットＡＬＵ及び決定ユニットは、それらの保存された情報を、整数ＡＬＵがその演算を行うのと同じクロック周期で改変することができる。処理エンジンはまた命令及びデータを保存するためのローカルメモリーを含む。【選択図】図１
2009512920.tif 000002
【特許請求の範囲】
【請求項１】
データを処理するための命令をシーケンスし、該シーケンスされた命令を送信するように構成された、命令シーケンスユニットと、
前記シーケンスされた命令に対応する命令を受信するように構成された処理エンジンのアレイと、
を具備し、
前記処理エンジンの前記アレイにおける各処理エンジンが、前記データを受信するように構成されており、
各処理エンジンが、
前記データを記憶するように構成された第１のメモリと、
決定データを記憶するように構成された決定ユニットと、
論理状態を記憶し、前記受信した命令に従って前記論理状態を変更するように構成されたブールユニットと、
整数結果データを発生させるように、前記記憶された決定データ、前記受信した命令及び前記論理状態に従って、前記記憶されたデータに対して条件付きで整数演算を実行するように構成された整数ユニットと、
Ｉ／Ｏデータを記憶するように構成された第２のメモリと、
を有し、
前記ブールユニットは、前記整数ユニットが前記整数演算を実行するときと同一のクロック周期により前記論理状態を変更するように構成された、
コンピュータシステムであって、
さらに、前記Ｉ／Ｏデータを処理エンジンの前記アレイに送信しかつ該Ｉ／Ｏデータを該アレイから受信するように構成されたＩ／Ｏコントローラを具備する、
ことを特徴とするコンピュータシステム。
【請求項２】
処理エンジンの前記アレイ及び前記Ｉ／Ｏコントローラと通信するＩ／Ｏインタフェイスであって、前記処理エンジンの前記第２のメモリに記憶するために前記Ｉ／Ｏデータをフォーマットするように構成されたＩ／Ｏインタフェイス、をさらに具備する、請求項１に記載のコンピュータシステム。
【請求項３】
前記Ｉ／Ｏインタフェイスが、さらに、シャッフルモードにおいて前記第２のメモリにロードするために前記Ｉ／Ｏデータをフォーマットするように構成された、請求項２に記載のコンピュータシステム。
【請求項４】
前記Ｉ／Ｏインタフェイスが、さらに、前記Ｉ／Ｏデータをバイト拡張することにより該Ｉ／Ｏデータをフォーマットするように構成された、請求項２に記載のコンピュータシステム。
【請求項５】
前記Ｉ／Ｏインタフェイスが、前記Ｉ／Ｏデータをワード拡張することにより該Ｉ／Ｏデータをフォーマットするように構成された、請求項２に記載のコンピュータシステム。
【請求項６】
前記Ｉ／Ｏインタフェイスが、直接転送モードにおいて前記第２のメモリにロードするために前記Ｉ／Ｏデータをフォーマットするように構成された、請求項２に記載のコンピュータシステム。
【請求項７】
前記Ｉ／Ｏインタフェイスが、直接転送モードにおいて前記第２のメモリにロードするために前記Ｉ／Ｏデータをフォーマットするように構成された、請求項２に記載のコンピュータシステム。
【請求項８】
処理エンジンの前記アレイ及び前記命令シーケンスユニットと通信し、該命令シーケンスユニットから受信した前記シーケンスされた命令に対応した拡張命令を有する命令セットを記憶するメモリを有するデコーダユニットであって、
前記命令シーケンスユニットから前記シーケンスされた命令を受信し、
前記命令シーケンスユニットから受信した前記シーケンスされた命令に対応した前記拡張命令を前記メモリから検索し、かつ、
処理エンジンの前記アレイに対して前記検索された拡張命令を送信する、
ように構成されたデコーダユニットを、
さらに具備する、請求項１に記載のコンピュータシステム。
【請求項９】
前記メモリがＳＲＡＭメモリである、請求項８に記載のコンピュータシステム。
【請求項１０】
前記シーケンスされたメモリが８ビット命令であり、
前記拡張命令が６４ビットマイクロコード命令である、請求項８に記載のコンピュータシステム。
【請求項１１】
前記決定データが、前記処理エンジンをマークされた処理エンジン及びマークされない処理エンジンとして選択的に指定するデータであり、
前記処理エンジンは、マークされた処理エンジンとして指定されたときには前記整数演算を実行するように構成されており、
前記処理エンジンは、マークされない処理エンジンとして指定されたときには前記整数演算を中断するように構成されている、請求項１に記載のコンピュータシステム。
【請求項１２】
前記処理エンジンが、第１の方向と第２の方向とを有するアレイ内において直列に相互接続され、
前記処理エンジンが、前記第１の方向に沿って前記Ｉ／Ｏデータを連続的にシフトさせるように構成されており、
前記処理エンジンが、前記第２の方向に沿って前記記憶されたデータをシフトさせるように構成され、記憶されシフトされたデータを生成する、請求項１に記載のコンピュータシステム。
【請求項１３】
前記処理エンジンが、さらに、
前記記憶されシフトされたデータに対する前記整数演算のうちの少なくとも１つを実行することにより、算術機能の実行を可能にするように構成されている、請求項１２に記載のコンピュータシステム。
【請求項１４】
前記整数ユニット及び前記ブールユニットが、それぞれの演算を並列に実行するように構成されている、請求項１に記載のコンピュータシステム。
【請求項１５】
前記処理エンジンの各々が、さらに、
前記ブールユニットが第１の論理状態を記憶するときに、前記受信された命令のうちの１つに従って前記記憶されたデータに対して第１の演算を実行し、
前記ブールユニットが第２の論理状態を記憶するときに、前記受信された命令のうちの１つに従って前記記憶されたデータに対して第２の演算を実行する、
ように構成されている、請求項１に記載のコンピュータシステム。
【請求項１６】
前記第１の演算及び前記第２の演算の各々が、前記記憶されたデータを前記処理エンジンのうちの別の処理エンジンに対してシフトさせるシフト演算、又は、算術演算である、請求項１５に記載のコンピュータシステム。
【請求項１７】
前記命令シーケンスユニットが、さらに、前記処理エンジンのうちのいくつかに対してアドレスを発生させるよう命令するように構成され、
前記処理エンジンのうちのいくつかが、さらに、アドレスを発生させ、発生させた該アドレスを前記Ｉ／Ｏコントローラに対して送信するように構成されている、請求項１に記載のコンピュータシステム。
【請求項１８】
行及び列において直列に相互接続された処理エンジンを有して、処理エンジンの行及び処理エンジンの列を形成する処理アレイであって、処理エンジンの前記列において連続的にＩ／ＯデータをシフトさせることによりＩ／Ｏ動作を実行し、処理エンジンの前記行において連続的に計算データをシフトさせ、前記Ｉ／Ｏ動作と並行して前記シフトさせたＩ／Ｏ計算データに対して計算動作を実行する、ように構成された処理アレイと、
命令をシーケンスし、前記処理アレイの前記処理エンジンに対して前記命令を転送して、前記計算動作を制御するように構成された、処理シーケンスユニットと、
前記処理アレイの前記処理エンジンと前記Ｉ／Ｏデータを交換するように構成されたＩ／Ｏコントローラと、
を具備することを特徴とするコンピュータシステム。
【請求項１９】
前記処理エンジンの各々が、さらに、
論理状態を記憶し、前記転送された命令に従って前記論理状態を変更するように構成された論理ユニットと、
決定状態を記憶し、前記転送された命令に従って前記決定状態を変更するように構成された決定ユニットと、
前記決定状態に基づいた整数演算を条件付きで実行するように構成された整数ユニットと、
を具備し、
前記整数演算が、前記論理状態及び前記転送された命令に従って前記シフトされた計算データに対して実行されるものであり、
前記処理エンジンの各々が、さらに、
前記論理ユニット、前記決定ユニット及び前記整数ユニットと通信するレジスタであって、前記シフトされた計算データ及び前記論理状態を受信し、前記シフトされた計算データ及び前記論理状態を前記命令シーケンスユニットに対して送信するように構成されたレジスタと、
該レジスタと通信し、前記シフトされた計算データを記憶するように構成されたローカルメモリと、
を具備する請求項１８に記載のコンピュータシステム。
【請求項２０】
前記決定状態が、前記処理エンジンをマークされた処理エンジン及びマークされない処理エンジンとして選択的に指定する状態であり、
前記整数ユニットが、マークされない処理エンジンとして指定するときには前記整数演算を実行するように構成され、
前記整数ユニットは、マークされた処理エンジンとして指定するときには前記整数演算を中断するように構成される、請求項１９に記載のコンピュータシステム。
【請求項２１】
前記整数ユニットの各々が、さらに、
前記論理状態が第１の論理状態のときに、前記転送された命令のうちの１つに従って、前記シフトされた計算データに対して第１の演算を実行し、
前記論理状態が第２の論理状態のときに、前記転送された命令のうちの１つに従って、前記シフトされた計算データに対して第２の演算を実行する、
ように構成された、請求項１９に記載のコンピュータシステム。
【請求項２２】
前記第１の演算及び前記第２の演算が、前記記憶されたデータを前記処理エンジンのうちの別の処理エンジンに対してシフトさせるシフト演算、又は、算術演算である、請求項２１に記載のコンピュータシステム。
【請求項２３】
前記処理アレイ及び前記Ｉ／Ｏコントローラと通信し、前記処理エンジンの前記ローカルメモリに記憶するために前記Ｉ／Ｏデータをフォーマットするように構成されたＩ／Ｏインタフェイスをさらに具備する、請求項２２に記載のコンピュータシステム。
【請求項２４】
前記Ｉ／Ｏインタフェイスが、さらに、シャッフルモードにおいて前記ローカルメモリにロードするために前記Ｉ／Ｏデータをフォーマットするように構成された、請求項２３に記載のコンピュータシステム。
【請求項２５】
前記Ｉ／Ｏインタフェイスが、さらに、前記Ｉ／Ｏデータを拡張することにより前記Ｉ／Ｏデータをフォーマットするように構成された、請求項２３に記載のコンピュータシステム。
【請求項２６】
前記Ｉ／Ｏインタフェイスが、さらに、前記Ｉ／Ｏデータをワード拡張することにより前記Ｉ／Ｏデータをフォーマットするように構成された、請求項２３に記載のコンピュータシステム。
【請求項２７】
前記Ｉ／Ｏインタフェイスが、直接転送モードにおいて前記ローカルメモリにロードするために前記Ｉ／Ｏデータをフォーマットするように構成された、請求項２３に記載のコンピュータシステム。
【請求項２８】
前記Ｉ／Ｏインタフェイスが、さらに、直接転送モードにおいて前記ローカルメモリにロードするために前記Ｉ／Ｏデータをフォーマットするように構成された、請求項２３に記載のコンピュータシステム。
【請求項２９】
前記処理アレイ及び前記命令シーケンスユニットと通信し、前記命令シーケンスユニットから受信した前記シーケンスされた命令に対応する拡張命令を有する命令セットを記憶するデコーダメモリを有するデコーダユニットであって、
前記命令シーケンスユニットから前記シーケンスされた命令を受信し、前記命令シーケンスユニットから受信した前記シーケンスされた命令に対応する前記拡張命令を、前記デコーダメモリから検索し、処理エンジンの前記アレイに対して前記検索された拡張命令を送信する、ように構成されたデコーダユニット、
をさらに具備する請求項１８に記載のコンピュータシステム。
【請求項３０】
前記デコーダメモリがＳＲＡＮＭメモリである、請求項２９に記載のコンピュータシステム。
【請求項３１】
前記シーケンスされた命令が８ビット命令であり、前記拡張された命令が６４ビットマイクロコード命令である、請求項２９に記載のコンピュータシステム。
【請求項３２】
前記命令シーケンスユニットが、さらに、前記処理エンジンのうちのいくつかに対してアドレスを発生させるよう命令するように構成され、
前記処理エンジンのうちのいくつかが、アドレスを発生させ、該発生させたアドレスを前記Ｉ／Ｏコントローラに対して送信するように構成されている、請求項１８に記載のコンピュータシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般にはコンピュータプロセッサに関する。更に詳細に言えば、本発明は集積化されたプロセッサアレイ、命令シーケンサ及びＩ／Ｏコントローラに関する。
【０００２】
なお、本出願は、米国仮出願第６０／７２９，１７８号の利益を主張するものであり、その開示の全体を全ての目的で本明細書の一部として援用する。
【背景技術】
【０００３】
計算速度についての常に増大する要求によって、より一層速くかつ更に効率的なプロセッサについての強い要望が生じている。特に、プロセッサは、益々、より大きな速度で、計算及び他のデータ処理のような数学的演算を実行することが求められる。また、マルチメディア及び他のアプリケーションは更に大量のデータを記憶するより大きなファイルを用いるので、プロセッサは、益々、より大きなデータを更に高速で転送することが要求される。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
したがって、コンピュータプロセッサの速度及び特性を改善するための継続した努力が存在している。特に、プロセッサがデータを操作する速度及び効率の両方及びプロセッサがＩ／Ｏデータを転送する速度を改善するための努力が存在している。
【課題を解決するための手段】
【０００５】
本発明は、方法、システム及び装置を含む多くの様式で実施することができる。以下に、本発明の種々の実施形態を述べる。
【０００６】
一つの実施形態において、コンピュータシステムは、データを処理するための命令をシーケンスし、該シーケンスされた命令を転送するための命令シーケンスユニットを含んでいる。当該コンピュータシステムはまた、前記シシーケンスされた命令に対応した命令を受信ように構成された処理エンジンのアレイを含んでおり、該アレイの各処理エンジンはデータを受信するように構成される。各処理エンジンは、データを記憶するように構成された第一のメモリと、決定データを記憶するように構成された決定ユニットと、論理状態を記憶し、該論理状態を受信された命令に従って改変するように構成されたブールユニットとを有している。各処理エンジンはまた、記憶された決定データ、受信された命令及び論理状態に従って、記憶されたデータに対して条件的に整数演算を実施して、整数結果データを発生するように構成された整数ユニット、並びにＩ／Ｏデータを記憶するように構成された第二のメモリを有している。ブールユニットは、整数ユニットが整数演算を実施するのと同じクロック周期で、論理状態を改変するように構成される。該コンピュータシステムはまた、Ｉ／Ｏデータを前記処理エンジンのアレイに送信し、かつ該アレイからＩ／Ｏデータを受信するように構成されたＩ／Ｏコントローラを含んでいる。
【０００７】
もう一つの実施形態において、コンピュータシステムは、処理エンジンの行及び処理エンジンの列を形成するように、行及び列で直列に相互接続された処理エンジンを有する処理アレイを具備しており、該処理アレイは、Ｉ／Ｏデータを処理エンジンの列を通して連続的にＩ／ＯデータをシフトさせることによってＩ／Ｏ演算を実行し、計算データを処理エンジンの行を横切って連続的にシフトさせ、また該シフトされた計算データに対して、前記Ｉ／Ｏ演算と並列に計算演算を実行するように構成される。該コンピュータシステムはまた、計算演算を制御するために、命令をシーケンスして該命令を処理アレイの処理エンジンに転送するように構成された、命令シーケンスユニットを含んでいる。それはまた、Ｉ／Ｏデータを、処理アレイの処理エンジンと交換するように構成されたＩ／Ｏコントローラを含んでいる。
【０００８】
本発明の他の側面及び利点は、本発明の原理を一例として示す添付の図面と共に読むことにより、以下の詳細な説明から明らかになるであろう。
【発明を実施するための最良の形態】
【０００９】
本発明のより良い理解のために、添付の図面と共に、以下の詳細な説明を参照すべきである。
これらの図面を通して同じ参照番号は対応する部分を示している。
【００１０】
一つの意味において、本発明は、集積化された命令シーケンサを有するコンピュータプロセッサに関する。命令シーケンサは、ホストからの命令をシーケンスし、これら命令を処理エンジンに転送して、それらの演算を指令する。Ｉ／Ｏコントローラは、前記命令シーケンスによって制御される処理と平行して、処理エンジンとの間でのＩ／Ｏデータの転送を制御する。命令シーケンサからの命令の効率的実行を促進し、かつＩ／ＯコントローラとのＩ／Ｏデータの交換を容易にするために、処理エンジン自身は、整数演算及び論理ユニット（ＡＬＵ）、１ビットＡＬＵ、決定ユニット及びレジスタを用いて構築される。命令シーケンサからの命令は、整数ＡＬＵに対し、１ビットＡＬＵに記憶された論理状態及び決定ユニットに記憶されたデータに従って、整数演算を実行するように指令する。１ビットＡＬＵ及び決定ユニットは、整数ＡＬＵがその演算を行うのと同じクロック周期でそれらの記憶された情報を改変することができ、より迅速かつより効率的な処理を可能にする。該処理エンジンはまた、当該エンジンの間でシフトされるべき命令及びデータを記憶するための、ローカルメモリを含んでいる。
【００１１】
図１は、本発明のプロセッサをブロック図形態で示している。該プロセッサ１００は、命令シーケンサ１０２、処理エンジンのアレイ１０４及びＩ／Ｏコントローラ１０６を含んでいる。命令シーケンサ１０２は、ホスト（図示せず）からタスクを受信して、アレイ１０４による適正な使用のために、各タスクを命令シーケンスに変換する。複数の異なるアプリケーションのサポートを容易にするために、デコーダ１０８、１１０は、命令シーケンサ１０２からの命令をデコード化し、種々のアプリケーションの命令を、アレイ１０４が理解する対応した本来の命令に翻訳することができる。次いで、命令はパイプラインレジスタ１１２に供給され、そこではそれらが連続的にアレイ１０４に供給される。
【００１２】
アレイ１０４はまた、Ｉ／Ｏデータを取扱うように構成される。Ｉ／Ｏコントローラ１０６は、ホスト又は外部メモリからＩ／Ｏデータを受取って、それをＩ／Ｏインタフェイス１１４に転送する。そこでは、該データが、アレイ１０４の個々の処理エンジンにおけるローカルメモリのためにフォーマットされる。以下で更に説明するように、プロセッサ１００は、効率及び速度を最大化するように、Ｉ／Ｏデータを多くの方法で個々の処理エンジンに転送する能力を含んでいる。
【００１３】
処理エンジンが、データをプロセッサの間でシフトさせることを含めて、データに対するそれらの種々の動作を完了したときに、該データはアレイ１０４からシフトされる。Ｉ／ＯデータがＩ／Ｏコントローラ１０６にシフトされる一方、他のデータは、所望であれば加算器１１６を介して、ホストへの転送のために命令シーケンサ１０２へとシフトされる。
【００１４】
上記の説明から分るように、処理エンジンは、Ｉ／Ｏデータの転送及び他のデータに対する演算を同時に行い、プロセッサ１００の速度及び効率に付加する能力を有している。これは、部分的には、アレイ１０４内の処理エンジン自身の構造によって達成される。図２は、アレイ１０４における処理エンジン間の相互接続を示している。この実施形態では、アレイ１０４は、処理エンジンＰＥijの二次元アレイとして構築される。処理エンジンＰＥijは、行及び列において直列に相互接続される。即ち、処理エンジンＰＥijは行及び列において整列され、各処理エンジンＰＥijは、その行及びその隣接列の両方において、その隣接する処理エンジンとデータを交換することができる。各行の最後の処理エンジンは、データを次の行の最初の処理エンジンと交換することができ、逆もまた同様である。同様に、各列の最後の処理エンジンは、データを、同じ列の最初の処理エンジンに転送することができる。したがって、これらの処理エンジンは、Ｉ／Ｏデータ及び他のデータを列方向及び行方向で転送するように構成することができる。
【００１５】
このようにして、Ｉ／Ｏコントローラ１０６は、Ｉ／Ｏデータを（おそらくはＩ／Ｏインターフェー１１４によるフォーマッティングの後に）種々の処理エンジンに転送し、これら処理エンジンは、該Ｉ／Ｏデータを、それらの各列を下流へと連続的に転送する。同時に、命令シーケンサからの命令を伴って種々の処理エンジンの中に挿入されたこのＩ／Ｏデータ又は他のデータは、各処理エンジンにより演算され、行でシフトされることができる。このようにして、アレイ１０４はＩ／Ｏデータを転送すると共に、該データ又は他のデータに対する種々の演算を同時に行うことができる。
【００１６】
このＩ／Ｏデータ及び他の形態のデータの両方を取り扱う能力、並びに両者に対する演算を行う能力は、他のシステムを凌駕する利点を付与する。第一に、データ転送を計算及び他のデータ操作と平行して行うことができるから、より速くかつより効率的な処理を生じる。第二に、プロセッサ１００が、現代のコンピュータによって最も頻繁に見られる計算を取扱うために効果的に最適化されることを可能にする。即ち、多くのコンピュータプロセスが「Ｉ／Ｏ束縛」又は「計算束縛」の何れかであることが分っている。Ｉ／Ｏ束縛のプロセスは、大量のデータを、該データに対する有意な計算動作（例えばマルチメディアファイル再生、ファイル複製、又は大量のデータの他の転送）を行うことなく転送する必要性によって左右される。逆に、計算束縛のプロセスは、計算、例えば図形レンダリング及びシミュレーション等を実行する必要性によって支配される。Ｉ／Ｏデータを転送及び計算するための専用のハードウエアを組込むことによって、プロセッサ１００は、Ｉ／Ｏ束縛のプロセス及び計算束縛のプロセスを、他のプロセッサよりも迅速かつ効率的に取扱う。
【００１７】
プロセッサ１００の一つの側面には、Ｉ／Ｏデータ及び命令を取扱うための専用のＩ／Ｏコントローラ１０６及び命令シーケンサ１０２が含まれるが、処理エンジンＰＥij自身もまた、Ｉ／Ｏ束縛及び計算束縛のプロセスの有利な取扱いに寄与する。図３は、本発明による個々の処理エンジンＰＥijのブロック図を示している。この実施形態において、各処理エンジン３００は、整数ＡＬＵ３０２、１ビットＡＬＵ３０４及び決定ユニット３０６を含んでおり、これらは種々の演算を実行し、又は実行を容易にする。処理エンジン３００はまた、ローカルデータメモリ３０８及びレジスタ３１０を含んでいる。図示のように、整数ＡＬＵ３０２、１ビットＡＬＵ３０４、及び決定ユニット３０６は、相互に並列に動作するように接続される。特に、１ビットＡＬＵ３０４及び決定ユニット３０６は、それらの電流論理状態を整数ＡＬＵ３０２に送信する共に、同じクロック周期でこれらの状態を改変することができる。
【００１８】
動作において、処理エンジン３００は、命令シーケンサ１０２からシーケンスされた命令を受信する。この命令は、整数ＡＬＵ３０２に、並びにレジスタ３１０及びローカルデータメモリ３０８に送られる。該命令はまた、１ビットＡＬＵ３０４及び決定ユニット３０６にも送られる。
【００１９】
計算を要求する命令は、レジスタ３１０及び／又はローカルデータメモリ３０８に対して、処理のためのデータを整数ＡＬＵ３０２に転送するように指令する。図示の実施形態において、該データは、左及び右オペランドとしてレジスタ３０８から整数ＡＬＵ３０２に転送されることができるが、本発明は、ローカルデータメモリ３０８、レジスタ３１０及び整数ＡＬＵ３０２の間での如何なるデータ転送形態をも含むものである。この命令はまた、１ビットＡＬＵ３０４の論理状態をも改変する。この実施形態において、１ビットＡＬＵ３０４は単一のビットを記憶し、その二値論理状態が整数ＡＬＵ３０２によって読取られる。命令シーケンサ３０２からの命令は、整数ＡＬＵ３０２に対して、１ビットＡＬＵ３０４の論理状態を読取り、該論理状態に応じて異なる演算を実行するように指令することができる。例えば、命令は指数ＡＬＵ３０２に対して、その論理状態が二値のうちの「０」であるときには、隣接する処理エンジン３００からのデータにそのデータを加えるように、又はその論理状態が二値のうちの「１」であるときには、隣接する処理エンジン３００のデータからそのデータを差引くように指令することができる。このようにして、１ビットＡＬＵ３４は、２以上の演算を表すための単一の命令を可能にする。また、該命令は、決定ユニット３０６に記憶されている決定状態を変更する。この決定状態は、その命令の実行のために特定のプロセッサが「標識され」、又は「標識されない」で該命令を実行しないように指令されるかを示す。これは、必要に応じて個々の処理エンジン３００が演算を実行するように、又は演算の実行を回避するように、命令シーケンサ１０２が選択的に命令することを可能にする。これは、アレイ１０４が、更に複雑で詳細なプロセスを実行することを可能にする。
【００２０】
なお、ＡＬＵ３０２がその演算を実行するのと同じクロック周期で、１ビットＡＬＵ３０４及び決定ユニット３０６がそれらの状態を変更できるように、整数ＡＬＵ３０２、１ビットＡＬＵ３０４及び決定ユニット３０６は並列に配列されることに留意すべきである。整数ＡＬＵ３０２は、１ビットＡＬＵ３０４及び決定ユニット３０６が先ず更新されるのを待たなければならないのではなく、各クロック周期で新たな演算を実行できるので、これによって各処理エンジン３００の速度が上がる。
【００２１】
ローカルメモリ３０８及びレジスタ３１０は、整数ＡＬＵ３０２が実行する演算のために必要なデータ及び命令を記憶する。レジスタ３１０は、隣接する処理エンジン３００のレジスタと電子的に通信状態にあり（行及び列で）、したがって、隣接する処理エンジン３００との間でのデータの交換を可能にする。ローカルメモリ３０８はレジスタ３１０とデータを交換することができるので、該データは、必要に応じて、記憶のためにレジスタ３１０からローカルデータメモリ３０８にシフトされることができる。次いで、このデータはレジスタによって検索されることができ、また処理のために整数ＡＬＵ３０２に送られるか、或いは、アレイ１０４からの最終的な転送のために隣接する処理エンジン３００のレジスタにシフトされる。
【００２２】
ローカルデータメモリ３０８及びレジスタ３１０は、処理エンジン３００の計算能力の改善を補助することに加えて、Ｉ／Ｏデータの転送をも可能にする。上記のように、Ｉ／Ｏコントローラ１０６、及び／又はＩ／Ｏインタフェイス１１４は、典型的にはデータをレジスタ３１０に転送することによって、Ｉ／Ｏデータを種々の処理エンジン３００の中に配置することができる。もし、このＩ／Ｏデータに関する計算が要求されるならば、それらは上記のようにして行うことができ、またそうでなければ、Ｉ／Ｏデータは列に沿ってアレイ１０４からホストまでシフトダウンすることができる。或いは、それは更なる処理又は転送のために、ローカルデータメモリ３０８にシフトされることができる。
【００２３】
当業者は、本発明が、本発明の種々のメモリ及び命令についての如何なる寸法をも包含することを理解するであろう。しかし、少なくとも一つの実施形態において、処理エンジン３００は、少なくとも２５６個の１６ビット語を保持できるローカルデータメモリ３０８を有している。レジスタ３１０は、整数ＡＬＵ３０２において処理するための整数ベクトルの活性成分を選択するために、少なくとも８個の１６ビット語、並びに８のブールビットを保持することができる。図４は、このような実施形態のベクトル表現（ベクトルは単純にデータの表現である）を示しており、ここでは１０２４の処理エンジン３００がチャートの頂部に沿って示されているのに対して、各エンジン３００の種々のベクトル、レジスタ及びブールビットが側部に沿って走っている。このことから、ベクトル（例えばベクトル＿０００）はデータの１０２４成分ベクトルであり、その各成分は１６ビットの長さであり、かつ一つの処理エンジン３００に送られるから、命令及びデータは処理エンジン３００に送信されるものと考え得ることが分る。同様に、ベクトルブール＿０は単一ビットの１０２４成分ベクトルであり、その各々は処理エンジン３００の１ビットＡＬＵ３０４に送信される。各処理エンジン３００は、図４の列として表されることができ、２５６個の１６ビット語のデータ、８個の１６ビット語のレジスタ情報、及び８個のブールビットを記憶することができる。例えば、処理エンジン「０」は、そのレジスタ３１０におけるレジスタ＿Ｏ〜レジスタ＿７の各々からの最初の１６ビット語を、待ち行列に入れられた命令又は転送されたデータとして、またそのレジスタ３１０又は１ビットＡＬＵ３０２におけるブール＿０〜ブール＿７の各々からの最初のビットを、待ち行列に入れられた論理状態として記憶することができる。
【００２４】
プロセッサ１００の基本的動作を説明してきたが、今度は、特定の利点を導く本発明の一定の顕著な特徴についての、更に詳細な説明に注意を向ける。
【００２５】
＜命令のデコード化＞
最初のこのような特徴は、命令のデコード化に関する。上記で述べたように、命令シーケンサ１０２は、命令をデコード化するためのデコーダ１０８、１１０を含むことができる。これらのデコーダ１０８、１１０は、何れかのアプリケーションの命令組に対応するマイクロコード命令を記憶することができる。次いで、命令シーケンサ１０２は、シーケンスされた命令をデコーダ１０８、１１０に送信し、これらは対応するマイクロコードを検索して、それらをアレイ１０４の処理エンジン３００に送信する。これは、何れかのアプリケーションのための命令に対応するマイクロコードがデコーダ１０８，１１０に記憶され得る限り、プロセッサ１００は、当該アプリケーションと適合できることを可能にする。
【００２６】
幾つかの実施形態において、デコーダ１０８、１１０はＳＲＡＭデコーダであるのが好ましく、これはユーザが記憶された命令組を周期的に更新し、或いは変更することを可能にする。しかし、本発明は、種々のアプリケーションについての命令に対応したマイクロコード命令を記憶するために、如何なる形態のメモリを用いたデコーダ１０８，１１０をも包含するものである。また、時には、一方のデコーダ１０８は整数ＡＬＵ３０２の演算コードを記憶するための専用である一方、他のデコーダ１１０は、ブール演算コードを記憶するための専用であるのが好ましい。当業者は、本発明が二つの別々のデコーダ１０８，１１０を含む実施形態に限定されず、時には、両者に対して独立の変更を可能にするように、整数及びブール演算コードについての別々のデコーダ１０８、１１０を含むのが好ましいことを理解するであろう。加えて、デコーダ１０８、１１０は複数のアプリケーションに対応したマイクロコードを記憶できるので、記憶されたマイクロコードは、ホストから受信された命令よりも長いことが多い。したがって、デコーダ１０８、１１０は、これら受信された命令を効果的に拡張するように働く場合が多い。例えば、ホスト命令は僅か８ビット又は１６ビット命令に過ぎないが、デコーダ１０８，１１０に記憶された拡張されたマイクロコード命令は、６４ビットのマイクロコード命令であることができる（２64の可能な独特の命令を可能にする）。したがって、たとえプロセッサ１００が８ビット又は１６ビット命令のような比較的小さい命令を受信し得るとしても、それは内部的にはより大きい６４ビットで働く可能性がある。
【００２７】
＜データアドレッシング＞
第二の斯かる特徴は、データアドレッシングに関する。Ｉ／Ｏコントローラ１０６、及び／又はＩ／Ｏインタフェイス１１４は、Ｉ／Ｏデータを、何れかの処理エンジン３００に送信することができる。即ち、データは、何れかの任意に選択された処理エンジン３００に送信されることができる。これにより、Ｉ／Ｏデータは、より活動的でなく直ちに該データを取扱うことができる処理エンジン３００に優先的に送られることができるから、アレイ１０４のより効率的な使用が可能になる。
【００２８】
一つの実施形態において、特定の処理エンジン３００の任意な選択は、先ず各処理エンジンに対して、そのローカルメモリ３０８における利用可能なアドレスを、Ｉ／Ｏコントローラ１０６に送信するように命令することによって達成される。このアドレスは如何なるフォーマットであってもよいが、アドレスをベクトルとして送信するのが便利であることが多く、この場合に、ベクトルの各要素は異なる処理エンジン３００を表す。こうして、各要素は、データを保持するために利用可能なローカルデータメモリ３０８の中の位置（もしあれば）によって満たされることができる。ゼロ値は、Ｉ／Ｏデータのために利用可能でない処理エンジンを表すことができる。このようにして、各処理エンジン３００はそのメモリ３０８における位置を送信するように指令され、これらの位置は、各利用可能な処理エンジン３００及び各々の利用可能なメモリ位置の同定を効果的に含むベクトルへと組立てられる。このベクトルは、Ｉ／Ｏデータが何処に転送され得るかを、Ｉ／Ｏコントローラ１０６が迅速に決定することを可能にする。
【００２９】
当業者は、これらのベクトルもまた、プロセッサ１００の外部のメモリに／からのデータの転送に使用できることを理解するであろう。例えば、アレイ１０４は、外部メモリにアクセスする際に使用されるアドレスを含んだベクトルを構築するように指令されることができる。このベクトルは、次いで、外部のメモリに対する／からのデータの転送のために外部メモリの望ましい部分をアドレスするように、Ｉ／Ｏコントローラ１０６を通して転送されることができる。
【００３０】
当業者はまた、これらのベクトルがデータの検索において使用できること、即ち、処理エンジン３００は、それらが記憶しているＩ／Ｏデータのメモリ位置を送信するように指令され得ること、及び、これらの位置は、処理エンジン３００からデータを検索できるアドレスをＩ／Ｏコントローラ１０６に知らせるベクトルに組立てられ得ることを理解するであろう。当業者はまた、命令シーケンサ１０２からの単一の命令が、利用可能な全ての処理エンジン３００の同定を可能にし、またこれら処理エンジンとの間でだけデータを転送させることを可能にするから、このアプローチがプロセッサ１００の全体の効率を増大させることを理解するであろう。
【００３１】
＜データフォーマッティング＞
第三の斯かる特徴は、データフォーマッティングに関する。上記のように、Ｉ／Ｏコントローラ１０６及び／又はＩ／Ｏインタフェイス１１４は、データを、処理エンジン３００のローカルデータメモリ３０８に適合するようにフォーマットすることができる。本発明は、如何なるデータフォーマットをも包含する。例えば、Ｉ／Ｏコントローラ１０６は、シャッフルモード、直接転送モード及び間接転送モードで、データをロード／記憶することができる。Ｉ／Ｏコントローラ１０６はまた、バイト拡張されたロード及びバイト圧縮された記憶、並びにワード拡張されたロード及びワード圧縮された記憶を実行することができる。
【００３２】
上記で述べたデータフォーマットは知られている。しかし、実施例は有益である。シャッフルモードにおいて、ホストからのデータは、偶数語を有する一つのベクトル及び奇数語を有する一つのベクトルの、二つのベクトルに分割される。即ち、ホストが１６バイト語フォーマットでデータを送信し、各処理エンジン３００が１６ビットフォーマットでデータを記憶し、またアレイ１０４が１０２４の処理エンジン３００を含むならば、Ｉ／Ｏコントローラ１０６は、ホストからの２０４８個の成分二倍長ベクトル、即ち、［ｗ０，ｗ１，・・・，ｗ２０４７］を集積でき、ここでの各成分ｗｉは２バイト語である。次いで、Ｉ／コントローラ１０６は、このベクトルを二つの１０２４成分ベクトルに分解する：
ｖ１＝［ｗ０，ｗ２，・・・，ｗ２０４６］
及び
ｖ２＝［ｗ１，ｗ３，・・・，ｗ２０４７］
この二つの１０２４成分ベクトルは、次いで１０２４の処理エンジン３００に送られ、ここでの各２バイト（即ち、１６ビット）成分は既に、レジスタ３１０及びローカルデータメモリ３０８における記憶のためにフォーマットされている。こうして、Ｉ／Ｏコントローラ１０６は、ホストでフォーマットされたデータを二つの１０２４成分ベクトルに分解し、その各成分は、処理エンジン３００のためにフォーマットされたデータを含んでいる。
【００３３】
バイト拡張されたロードのために、Ｉ／Ｏコントローラ１０６は、５１２個の２バイト語［ｗ０，ｗ１，・・・，ｗ５１１］を集積することができ、次いで、これらは１０２４の２バイト語に分割され、各語の最も重要なバイトはゼロに設定される：
｛８’ｂＯ，ｗ０［７：０］｝、｛８’ｂＯ，ｗ０［１５：８］｝、
｛８’ｂ０，ｗ１［７：０］｝、｛８’ｂＯ，ｗ１［１５：８］｝、
・・・・・・
｛８’ｂ０，ｗ５１０［７：０］｝、｛８’ｂＯ，ｗ５１０［１５：８］｝、
｛８’ｂ０，ｗ５１１［７：０］｝、｛８’ｂＯ，ｗ５１１［１５：８］｝、
換言すれば、外部メモリからの各バイトは、最も重要なバイトをゼロにした１６ビット数として記憶される。逆に、バイト圧縮された記憶については、記憶された１６ビット数のベクトルが検索され、ゼロ値の最も重要なバイトが除去されて、再度１０２４個の２バイト語を生じる：｛ｗ０［７：０］，ｗ１［７：０］，・・・，ｗ１０２３［７：０］｝。
【００３４】
ワード拡張されたロードのために、Ｉ／Ｏコントローラ１０６は、５２２個の２バイト語［ｗ０，ｗ１，・・・，ｗ５１１］のベクトルを集積することができ、次いで、これらは１０２４個の２バイト語に変換され、ここでの他の全ての２バイト語はゼロに設定される。この１０２４個の２バイト語は、次いで下記のベクトルとして、アレイ１０４の中にロードされる：
［ｗ０，１６’ｂＯ，ｗ１，１６’ｂＯ，・・・，ｗ５１０，１６’ｂＯ，ｗ５１１，１６’ｂＯ］
逆に、語圧縮された記憶については、全ての他の２バイト語（即ち、ゼロ値の語）が除去されて、もう一度５１２個の２バイト語のベクトルが達成される：［ｗ０，ｗ２，・・・，ｗ１０２０，ｗ１Ｏ２２］。
【００３５】
直接転送モードでは、Ｉ／Ｏコントローラ１０６は特定された増分を使用し、この増分に基づいてデータを処理エンジン３００に転送する。例えば、増分が２であれば、Ｉ／Ｏコントローラ１０６は、そのデータを全ての他の処理エンジン３００に転送する。対照的に、間接転送モードは、上記で述べたデータアドレス技術と同様に、各処理エンジン３００により与えられたアドレスを含んでいる。例えば、各処理エンジン３００は、それがデータを受信するのに十分に利用可能であるかどうかに基づいて、そのアドレスを与えるように指令される。Ｉ／Ｏコントローラは次いで、そのデータを、そこからアドレスを受信した処理エンジン３００に送信する。
【００３６】
＜算術演算＞
データを隣接する処理エンジン３００へ／からシフトさせる各処理エンジンの能力は、コンピュータ演算を実行するためのエンジン３００を選択的にマークする命令シーケンサ１０２の能力と結合されて、計算における大きな柔軟性及び速度を可能にし、遥かに迅速な計算束縛のプロセスを提供する。特に、命令シーケンサ１０２からの単一の命令は、種々の演算を実行するように、アレイ１０４における全ての処理エンジン３００に命令することができ、この場合の異なるエンジン３００は、当該命令により個別に設定された論理状態に従って、異なる演算を実行するように指令され、又は如何なる計算も実行しないように指令される。このようにして、それぞれの個々の命令は、必要に応じてエンジン３００毎に変化し得る「包括的」な一組の演算を制御することができる。例えば、アレイ１０４は、連続的乗算アルゴリズムのような機能を遥かに迅速に実行することができる。乗算は、各ステップにおける２ビットを点検し、適切な付加を決定し、二つの位置シフトを行うプロセスを使用して実行することができる。これは、プロセッサ１００において三つの命令のみ（ｉｎｉｔ＿ｍｕｌｔ、ｍｕｌｔ、ｅｎｄｊｔｎｕｌｔ；各々はプログラム可能なデコーダ１０８及び１１０により発生された特殊なマイクロコードを有する）で達成でき、従って乗算速度を大幅に高めることができる。ここで、２ビットの被乗数は、各サイクルにおいて試験することができる：
｛ｂ（ｉ），ｂ（ｉ−１）｝＝００であれば、この部分的な結果は右に２バイナリー位置だけシフトされる。
｛ｂ（ｉ），ｂ（ｉ−１）｝＝０１であれば、乗数が加えられ、その結果は右に２バイナリー位置だけシフトされる。
｛ｂ（ｉ），ｂ（ｉ−１）｝＝１０であれば、乗数は左に１バイナリ位置だけシフトされ、その結果は右に２バイナリー位置だけシフトされる。
｛ｂ（ｉ），ｂ（ｉ−１）｝＝１１であれば、乗数が差引かれ、その結果は右に２バイナリー位置だけシフトされ、次のクロック周期において乗数が加えられる。
各周期において、結果は二つのレジスタに戻して記憶され、同様に最終結果も一対のレジスタに記憶される。
【００３７】
以上の記述では、説明の目的で、本発明の完全な理解を提供するために特定の命名法を使用した。しかし、当業者には、本発明を実施するために特別な詳細は必要とされないことが明らかであろう。したがって、本発明の特定の実施形態に関する上記の説明は、例示及び説明の目的で提示されるものである。それらは、網羅的であることを意図するものではなく、或いは、本発明を開示された正確な形態に限定するものでもない。上記の教示を考慮して、多くの改変及び変形が可能である。例えば、アレイ１０４は、行及び列の二次元アレイに限定される必要はなく、如何なる様式でも組織できる。また、一定の実施形態においては、ＳＲＡＭデコーダ１０８，１１０及びＩ／Ｏインタフェイス１１４が望ましいかもしれないが、それらは本発明の実施に必要とされるものではない。実施形態は、本発明の原理及びその実際的な応用を最良に説明し、それによって他の当業者が本発明、及び特定の使用に適すると思われる種々の改変を備えた種々の実施形態を最良に利用できるように選択及び説明されたものである。
【図面の簡単な説明】
【００３８】
【図１】図１は、本発明に従って構築されたプロセッサのブロック図を示し、集積化された命令シーケンサ、処理エンジンのアレイ及びＩ／Ｏコントローラを含む。
【図２】図２は、本発明に従って構築された複数の処理エンジン及びそれらの相互接続の更なる詳細を示す。
【図３】図３は、本発明による各処理エンジンのブロック図を示す。
【図４】図４は、図３の処理エンジンにより実行される命令のベクトル表現である。
【図１】
2009512920.tif 000003
【図２】
2009512920.tif 000004
【図３】
2009512920.tif 000005
【図４】
2009512920.tif 000006