(57)【要約】  メモリ記憶セルの多レベルアレーを有する半導体回路デバイスを構成しプログラミングするための方法が提供される。この方法は、ステートフルなトランザクション指向のアプリケーションをフローバーチャルマシン（ＦＶＭ）のネットワークとして表現することで開始し、各ＦＶＭは、構成可能なメモリ領域の一部分に関連される。この方法は、多数のＦＶＭを総フローバーチャルマシン（ＡＦＶＭ）へ集合化し、そしてＡＦＶＭをメモリ記憶セルの多レベルアレーの一部分へとマッピングすることを含む。多レベルアレーの多方向アクセス経路は、多数のＦＶＭに基づいて構成され、多レベルアレーの一部分は、多数のＦＶＭに基づいて機能するようにプログラムされる。構造的に再構成可能な回路デバイス、及び回路をデザインする方法も提供される。【選択図】図９
2009505171.tif 000002
【特許請求の範囲】
【請求項１】
ステートフルなトランザクション指向のシステムを指定する方法において、
複数の原始的フローモデルを指定するステップと、
前記複数のフローモデル各々の中に少なくとも１つのフローゲートを画成するステップであって、各フローゲートは、手順コードの非割り込み可能シーケンス、単一のエントリーポイントを含み、そして名前付き同時コールにより呼び出されるようなステップと、
発呼側フローゲートから被呼側フローゲートへのアークを指定するステップと、
前記被呼側フローゲートの各名前付き呼び出しに対して信号を発生するステップと、
前記信号を搬送するチャンネルを画成するステップと、
を備えた方法。
【請求項２】
各フローゲートは、動的に割り当てられるヒープ変数を含まず、且つ終了後状態をもたない、請求項１に記載の方法。
【請求項３】
各フローゲートは、他の原始的フローモジュールの他のフローゲートと同時に実行することができる、請求項１に記載の方法。
【請求項４】
各フローゲートは、他のフローゲート及びそれ自身へ同時にコールを発することができる、請求項１に記載の方法。
【請求項５】
原始的フローモジュール当たり一度に１つのフローゲートしか実行されない、請求項１に記載の方法。
【請求項６】
前記信号は、先入れ先出しベースで被呼側フローゲートへ非同期で配送される、請求項１に記載の方法。
【請求項７】
同じフローモジュール内の同じ行先フローゲート又は異なる行先フローゲートの一方に対して多数のソース側フローゲートにより発生される信号は、非決定論的順序に関連付けられる、請求項１に記載の方法。
【請求項８】
前記信号をクラスへと分類するステップと、
各クラスを異なるチャンネルに指定するステップと、
を更に備えた請求項１に記載の方法。
【請求項９】
前記信号を分類するステップは、前記信号にプライオリティを指定する段階であって、プライオリティの高い信号を有するチャンネルに、より多くのリソースが指定されるようにする段階を含む、請求項１に記載の方法。
【請求項１０】
前記原始的フローモジュールは、オブジェクト指向のフローメソッドを含むオブジェクトである、請求項１に記載の方法。
【請求項１１】
前記オブジェクト指向のフローメソッドは、同じフローモジュール内のフローゲート又はフローメソッドの一方により呼び出される、請求項１０に記載の方法。
【請求項１２】
前記発呼側フローゲートから前記被呼側フローゲートへのタイムドアークを指定するステップと、
タイマーチャンネルにおいてタイマー信号を搬送するステップと、
前記タイマー信号を、他のタイマー信号に対して時間切れする順序で配送するステップと、
を更に備えた請求項１に記載の方法。
【請求項１３】
前記原始的フローモジュール又はハイアラーキー的フローモジュールに一方を別のハイアラーキー的フローモジュールへとカプセル化するステップを更に備え、前記別のハイアラーキー的フローモジュールは、各交差する入アークに対する入力ポート、及び各交差する出アークに対する出力ポートを含む、請求項１に記載の方法。
【請求項１４】
アーク対をコールフォワードアーク及びフォワードアークとして指定するステップを更に備え、前記フォワードアークは、呼び出し時に明確な行先フローゲート名をもたず、そして前記コールフォワードアークは、得られるフォワードアークの行先フローゲートを明確に指定する、請求項１に記載の方法。
【請求項１５】
行先ダイナミックフローゲートを指定するステップを更に備え、前記行先ダイナミックフローゲートは、ソース側フローゲートが、行先フローゲートのための実行コードを供給できるようにする、請求項１に記載の方法。
【請求項１６】
フロートンネルを指定するステップを更に備え、前記フロートンネルは、独立したフローロジックサブデザインとして記述を含み、そして２つ以上のクラスターを伴うより大きなフローロジックデザインに関連付けられ、前記クラスターは、前記フロートンネルを経てルーティングされる特別帰属信号を交換する、請求項１に記載の方法。
【請求項１７】
前記フロートンネルは、基礎となる物理的な通信レイヤのアブストラクトマッピングを可能にする、請求項１６に記載の方法。
【請求項１８】
前記クラスターは、ホストマシンで実行されるドライバソフトウェアを含むユニプロセッササブシステムへマッピングするための逐次コードへコンパイルされる、請求項１に記載の方法。
【請求項１９】
ステートフルなトランザクション指向のアプリケーションをイン・メモリ処理するための構造的に再構成可能な半導体回路デバイスにおいて、
メモリ記憶セル及びロジック回路の多レベルアレーであって、記憶セルは、多数の構成可能なアクセス経路を有し、更に、記憶セルは、読み取り及び書き込みのために同時にアクセスすることができ多レベルアレーと、
データパケットを受け取ることのできる複数の構成可能な、パケット化されたインターフェイスポートであって、前記多レベルアレーにアクセスすることのできるパケット化されたインターフェイスポートと、
前記多レベルアレー内に分布される複数の構成可能な切り替え要素であって、その各々は、前記多数の構成可能なアクセス経路の１つを経て前記記憶セルの多レベルアレー内でデータを移動するように構成された複数の構成可能な切り替え要素と、
前記多レベルアレー内に設けられた複数の構成可能な計算要素であって、その各々は、前記多数の構成可能なアクセス経路を経て前記記憶セルの多レベルアレーの一部分内でデータを変換するように構成された複数の構成可能な計算要素と、
を備えたデバイス。
【請求項２０】
前記多レベルアレー内の欠陥特徴を修理するための冗長特徴のプールを更に備え、高い欠陥密度に関連した多レベルアレーのレベルは、低い欠陥密度に関連したレベルに対して修理に使用可能なより多くの冗長特徴を有する、請求項１９に記載のデバイス。
【請求項２１】
第１又は第２ロジック状態の一方に固定布線された構成及びプログラム状態セルを更に備えた、請求項１９に記載のデバイス。
【請求項２２】
非破壊読み取りを可能にするように前記メモリ記憶セルに結合された読み取りアクセス経路を更に備えた、請求項１９に記載のデバイス。
【請求項２３】
対応するメモリ記憶セルの電荷を増加してソフトエラー弾力性を向上させるために設けられた金属−絶縁体−金属キャパシタを更に備えた、請求項１９に記載のデバイス。
【請求項２４】
電磁干渉（ＥＭＩ）減少装置を更に備え、このＥＭＩ減少装置は、多レベルアレーの部分間のクロック信号が互いにスキューされるようなクロック分布ツリーを含み、前記メモリ記憶セルへの同時アクセスが、そのスキューされたクロックにより異なる読み取り及び書き込みアクセス経路上で行われる、請求項１９に記載のデバイス。
【請求項２５】
インターフェイスポートは、記憶セルへの他のアクセス経路上のクロックとは独立した非同期クロックに基づき前記多レベルアレー内の記憶セルにアクセスできる、請求項１９に記載のデバイス。
【請求項２６】
前記多レベルアレー内のメモリ記憶セルに対するリフレッシュが多数の構成可能なアクセス経路の１つを経て行なわれ、前記多レベルアレーの部分に選択的に適用される、請求項１９に記載のデバイス。
【請求項２７】
複数の列グループに配列された複数のメモリセルを備え、各列グループは、
複数の列と、
独立した多方向の構成可能なアクセスのための複数の外部ビットラインと、
前記外部ビットラインにおける第１、第２及び第３のハイアラーキーレベルと、
を有し、前記第１のハイアラーキーレベルは、複数のメモリセルへの接続を与え、前記第２のハイアラーキーレベルは、中間ビットラインに対し前記列グループの各列へ及び各列からデータをマルチプレクスするための第１スライサーを備え、そして前記第３のハイアラーキーレベルは、前記中間ビットラインに対し多数の外部アクセス経路へ及び外部アクセス経路からデータをマルチプレクスするための第２スライサーを含む、半導体メモリデバイス。
【請求項２８】
前記メモリセルの各々は、
アイソレーショントランジスタのゲートに接続された金属−絶縁体−金属キャパシタ、
入力ビットラインに接続された書き込みのためのトランジスタと、
出力ビットラインに接続された読み取りのためのトランジスタと、
を含む請求項２７に記載のデバイス。
【請求項２９】
前記複数のメモリセルは、製造時にハードロジック０又は１の一方に金属プログラミングするように構成される、請求項２７に記載のデバイス。
【請求項３０】
前記メモリセルは、多チップモジュールパッケージに含まれる、請求項２７に記載のデバイス。
【請求項３１】
ステートフルなトランザクション指向のアプリケーションのためのイン・メモリ計算を遂行する装置において、
記憶セルの多レベルアレーを備え、記憶セルは、複数のアクセスデータ経路の１つから読み取りアクセスするように構成でき、複数のアクセスデータ経路は、複数のアクセスデータ経路の１つから書き込みアクセスするように構成でき、多レベルアレーは、任意のスタートアドレスをもつ論理的区画へと構成でき、そして更に、
複数のアクセスデータ経路を経て前記多レベルアレーと通信する計算要素を備え、この計算要素は、前記複数のアクセスデータ経路を通して前記多レベルアレーへ複数のメモリアクセスを発行するように構成された、装置。
【請求項３２】
前デコードステージを更に備え、この前デコードステージは、固定インストラクション長さのプログラムコードを有する制御記憶コードメモリを含み、前記インストラクション長さのプログラムコードは、制御記憶装置から読み取られて、ｏｐコード、拡張アドレス及びオペランドオフセットを発生するために前デコードされ、前記オペランドオフセットは、複数のアーキテクチャー的ポインタレジスタと加算されて、その後のオペレーションのための物理的アドレスを発生する、請求項３１に記載の装置。
【請求項３３】
前記制御記憶コードメモリは、多レベルアレーへの構成により実現される融通性のある深さを有する、請求項３２に記載の装置。
【請求項３４】
デコード及びフェッチステージを更に備え、このデコード及びフェッチステージは、
デコードされた制御を有するデコード記憶装置であって、記憶セルの多レベルアレーへの構成により実現される融通性のある深さを有するデコード記憶装置と、
インストラクション拡張パラメータを有する拡張記憶装置であって、記憶セルの多レベルアレーへの構成により実現される融通性のある深さを有する拡張記憶装置と、
計算要素アクセス可能なデータ、メッセージ及び状態を有するオペランド記憶装置であって、記憶セルの多レベルアレーへの構成により実現される更に別の区画を有するオペランド記憶装置と、
を含むものである、請求項３１に記載の装置。
【請求項３５】
前記デコード及びフェッチステージ内で、デコード読み取りオペレーションが、変換オペレーションに必要な制御を生成し、オペランドフェッチオペレーションがオペランドを生成し、そして拡張読み取りオペレーションが、アプリケーションの特定インスタンスに必要なマスク及び整列制御を含む制御を生成する、請求項３４に記載の装置。
【請求項３６】
演算論理ユニット（ＡＬＵ）計算ステージを更に備え、このＡＬＵ計算ステージは、多巾演算及び論理オペレーションを含み、更に、プログラムカウンタ及びスタックポインタを含むアーキテクチャー的レジスタを更新すると共に、メモリのオペランド区画への結果を更新するための更新ステージを含む、請求項３１に記載の装置。
【請求項３７】
前記ＡＬＵ計算ステージは、構成可能なメモリルックアップ経路を使用する、請求項３６に記載の装置。
【請求項３８】
前記ＡＬＵ計算ステージは、前記多レベルアレーへの構成により実現される融通性のある深さを有する複数のメモリ区画へのルックアップメモリアクセスオペレーションを遂行する少なくとも１つのパイプラインステージを備え、前記ルックアップメモリアクセスオペレーションのアドレスは、前記ＡＬＵ計算ステージへの１つ以上の入力オペランドにより定義される、請求項３７に記載の装置。
【請求項３９】
バイトに関するパリティコードを使用して単一ビットエラーを検出することによりソフトエラー検出及び修正が行なわれ、そしてバイトに関するパリティコードを再使用する１２８ビットブロックの二次元パリティコードを使用して単一ビットエラーが修正される、請求項３１に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ステートフルなトランザクション指向のシステムを指定する方法、及び半導体デバイスの構造的に構成可能なイン・メモリ処理へ柔軟にマッピングする装置に係る。
【背景技術】
【０００２】
システムオンチップ（ＳＯＣ）の実施は、主として、Ｖｅｒｉｌｏｇ及びＶＨＤＬのようなデザイン言語を使用してレジスタ−転送レベルでデザインを捕捉した後に、その捕捉したデザインを論理的に合成し、そしてその合成したネットリストを物理的なデザインにおいてプレースメントし、ルーティングすることに基づくものである。デザインの生産性を改善するための現在の努力は、Ｃ＋＋、Ｃ、ＳｙｓｔｅｍＣ、及びＳｙｓｔｅｍ  Ｖｅｒｉｌｏｇのようなアルゴリズム性の高いシステムアプローチを経て、より高いアブストラクションレベルでデザインを捕捉することに向けられる。
【０００３】
プロセス技術の進歩につれて、タイミングの終結及び電力消費管理のような物理的デザインの問題が、デザインのサイクルタイムをデザインの捕捉及び検証と同程度に重要なものとした。より高いアブストラクションレベルをデザイン捕捉に使用して取り入れるために現在開発中であり且つ考慮中である方法の進歩は、これらの物理的デザインの問題や製造上の問題に向けられていない。半導体産業では、９０ｎｍ以下のプロセス技術に伴い、物理的デザインの問題が、デザインサイクルタイム及び製品クオリティに著しいコスト的インパクトを与えることが認識されている。
【０００４】
合成されたロジックネットリストをプレースメントしルーティングするためのＣＡＤツールは、ディープサブミクロンプロセス技術の物理的デザイン要求に対処する上で、限られた成功しか得ていない。ディープサブミクロンプロセス技術の完全な効果を得るために、半導体産業は、デザイン捕捉及び検証から物理的デザインを通しての全体的デザインサイクルにわたり生産性を改善すると同時に、製品の製造能力を保証することのできるデザイン方法及びサポートツールをセットで必要としている。又、半導体産業では、ステートフルなトランザクション指向のアプリケーションのＳＯＣ実施は、主として、オンチップメモリの帯域巾と、性能及び電源節約の容量とに依存することが良く知られている。非常に多数のメモリモジュールをプレースメントし及びルーティングすることは、ＳＯＣの物理的デザインにおいて別の重大なボトルネックとなる。
【０００５】
ディープサブミクロンプロセス技術のための進歩したＳＯＣデザイン方法に対する別の重要な要件は、製品開発スケジュール又は製品製造能力に影響せずに、著しい帯域巾及び容量をもつオンチップメモリの一体化を許すことである。高レベルのデザイン捕捉、製品製造能力、及び著しいメモリリソースのサポートは、プロセッサ・イン・メモリの開発における動機付けファクタでもある。プロセッサ・イン・メモリアーキテクチャーは、バーチャルメモリ、グローバルメモリ、動的リソース割り当て、及び動的負荷バランスのような進歩型ソフトウェアプログラミング概念をサポートするための要求により推進される。これらアーキテクチャーのハードウェア及びソフトウェアの複雑さ及びコストは、広範囲なソフトウェアアプリケーションに対して良好な性能を与えるための要求により正当化される。これらのオーバーヘッドにより、実際のシステムでは、現実的な性能及び容量要件を満足するために多数のプロセッサ・イン・メモリチップが要求され、これは、単一のプロセッサ・イン・メモリチップパッケージを組み込むシステム製品開発が存在しないことにより示される。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
従って、プロセッサ・イン・メモリアーキテクチャーにおけるリソース管理を、プログラム構成及びアノテーション、並びにコンパイル時間分析を通して、デザイナーによって完全に制御できるようなコスト効率の良いＳＯＣアプリケーションが更に要望される。又、ハイアラーキーメモリシステムのサポートに起因したソフトウェア及びハードウェアの複雑さにおける全てのコスト及び性能オーバーヘッドを排除することも重要である。これらの所見に基づき、半導体産業では、ステートフルなトランザクション指向のアプリケーションに対するＳＯＣを実施するためのコスト効率の良い方法が要望される。
【課題を解決するための手段】
【０００７】
一般的に述べると、本発明は、ステートフルなトランザクション指向のアプリケーションをイン・メモリ処理するための方法及び装置を提供することによりこれらの要望を満足する。本発明は、プロセス、装置、システム又はデバイスを含む多数の仕方で実施できることが明らかであろう。本発明の幾つかの実施形態を以下に説明する。
【０００８】
一実施形態において、ステートフルなトランザクション指向のシステムを指定する方法が提供される。この方法は、複数の原始的フローモデルを指定するステップと、複数の各フローモデル内に少なくとも１つのフローゲートを画成するステップとを備え、各フローゲートは、手順コードの非割り込み可能シーケンス、単一のエントリーポイントを含み、名前付き同時コールにより呼び出される。発呼側フローゲートから被呼側フローゲートへアークが指定される。被呼フローゲートの各名前付き呼び出しに対して信号が発生され、そしてその信号を搬送するためのチャンネルが画成される。
【０００９】
一実施形態において、メモリ記憶セルの多レベルアレーを有する半導体回路デバイスを構成しプログラミングするための方法が提供される。この方法は、ステートフルなトランザクション指向のアプリケーションをフローバーチャルマシン（ＦＶＭ）のネットワークとして表現することで開始し、各ＦＶＭは、構成可能なメモリ領域の一部分に関連付けられる。この方法は、多数のＦＶＭを総フローバーチャルマシン（ＡＦＶＭ）へ集合化し、そしてＡＦＶＭをメモリ記憶セルの多レベルアレーの一部分へマッピングすることを含む。多レベルアレーの多方向アクセス経路は、多数のＦＶＭに基づいて構成され、そして多レベルアレーの一部分は、多数のＦＶＭに基づいて機能するようにプログラムされる。
【００１０】
別の実施形態において、ステートフルなトランザクション指向のアプリケーションをイン・メモリ処理するための構造的に再構成可能な半導体回路デバイスが提供される。この回路デバイスは、メモリ記憶セル及びロジック回路の多レベルアレーを備えている。記憶セルは、多数の構成可能なアクセス経路を有し、そして読み取り及び書き込みのために同時にアクセスすることができる。又、回路デバイスは、データパケットを受け取ることのできる複数の構成可能な、パケット化されたインターフェイスポートも含む。このパケット化されたインターフェイスポートは、多レベルアレーにアクセスすることができる。多レベルアレー内に分布される複数の構成可能な切り替え要素が含まれる。複数の構成可能な切り替え要素の各々は、多数の構成可能なアクセス経路の１つを経て記憶セルの多レベルアレー内にデータを移動するように構成される。又、回路デバイスは、多レベルアレー内に複数の構成可能な計算要素も備えている。複数の構成可能な計算要素の各々は、多数の構成可能なアクセス経路を経て記憶セルの多レベルアレーの一部分内でデータを変換するように構成される。
【００１１】
更に別の実施形態では、半導体メモリデバイスが提供される。この半導体メモリデバイスは、複数の列グループに配列された複数のメモリセルを備え、各列グループは、複数の列と、独立した多方向の構成可能なアクセスのための複数の外部ビットラインとを有する。更に、列グループは、外部ビットラインに第１、第２及び第３のハイアラーキーレベルを有する。第１のハイアラーキーレベルは、複数のメモリセルへの接続を与える。第２のハイアラーキーレベルは、中間ビットラインに対し列グループの各列へ及び各列からデータをマルチプレクスするための第１スライサーを備えている。第３のハイアラーキーレベルは、中間ビットラインに対し多数の外部アクセス経路へ及び外部アクセス経路からデータをマルチプレクスするための第２スライサーを備えている。
【００１２】
更に別の実施形態では、製造中の回路デバイスの収率を向上させるように回路デバイス及びレイアウトをデザインするための方法が提供される。この方法は、回路デバイスの物理的なデザインを、異なるハイアラーキー的一体化レベルへと仕切るようにして開始する。異なるハイアラーキー的一体化レベルに対する冗長な特徴のプールが提供され、冗長な特徴のプールは、各一体化レベルの欠陥密度に基づいて、異なるハイアラーキー的一体化レベルへと分配される。
【００１３】
別の実施形態では、ステートフルなトランザクション指向のアプリケーションのためのイン・メモリ計算を遂行する装置が提供される。この装置は、記憶セルの多レベルアレーを備えている。記憶セルは、複数のアクセスデータ経路の１つから読み取りアクセスするように構成でき、そして複数のアクセスデータ経路は、複数のアクセスデータ経路の１つから書き込みアクセスするように構成できる。多レベルアレーは、任意のスタートアドレスをもつ論理的区画へと構成できる。又、この装置は、複数のアクセスデータ経路を経て多レベルアレーと通信する計算要素を備えている。計算要素は、複数のアクセスデータ経路を通して多レベルアレーへ複数のメモリアクセスを発行するように構成される。
【００１４】
本発明の他の特徴及び効果は、本発明の原理を例示した添付図面を参照した以下の詳細な説明から明らかとなろう。
【００１５】
本発明は、同じ構造要素が同じ参照番号で示された添付図面を参照した以下の詳細な説明から容易に理解されよう。
【発明を実施するための最良の形態】
【００１６】
本発明は、ステートフルなトランザクション指向のシステムをシリコンで効率的に実施するための構造的に再構成可能なインテリジェントメモリデバイスについて説明する。しかしながら、当業者であれば、本発明は、これら特定の細部の幾つか又は全部を伴わずに実施できることが明らかであろう。他のインスタンスにおいて、本発明を不必要に不明瞭にしないために、良く知られたプロセスオペレーションは、詳細に説明しない。
【００１７】
以下に述べる本発明の実施形態は、ステートフルなトランザクション指向のアプリケーションを捕捉する粒度をデザイナーが選択するのを許す柔軟なデザイン捕捉方法を可能にする方法及び装置を提供する。デザイン努力、実施コスト及び製造能力について経済的に優れたプラットホームにおいてステートフルなトランザクション指向のアプリケーションを実施するための効率的な方法を、以下に詳細に述べる。これら実施形態は、デザインを捕捉し分析するときに、効率的なコンパイラー最適化及びリソース割り当て、効率的なハードウェア実施、並びに正確な性能分析及び予想を許す実行モデルを利用している。デザインのコンパイル、物理的プラットホームへのマッピング、又はシステムオペレーション中のリソース衝突により、著しい不確実性が導入されないことが明らかであろう。リソース要求は、アノテーション又はコンパイラー分析を使用してデザインが捕捉されるときに明確に特定される。ハードウェアリソースの割り当ては、コンパイル時に静的に決定することができる。
【００１８】
本発明の別の態様において、単一レベルのリアルメモリ編成を使用して、アプリケーション開発、コンパイラー最適化、ランタイムシステムサポート、及びハードウェアの複雑さにおいてバーチャルメモリシステムに関連したキャッシングハイアラーキーを管理するコストを排除するための簡単且つ有効なチップアーキテクチャーが提供される。以下に詳細に述べるように、ここに説明する実施形態は、ダイ面積、製品開発サイクル、及び電力消費が経済的である解決策で、将来世代のＳＯＣにおけるメモリ容量及び帯域巾の甚だしい需要を満足する。同時に、これら実施形態は、非常に高い製造能力及び信頼性を伴う進歩型ディープサブミクロン製造プロセスのコスト、性能及び電力消費の利益を受ける。
【００１９】
図１は、本発明の一実施形態によるフローモジュール(FlowModule)の簡単な高レベル概略図である。フローモジュール１００ａないし１００ｄは、本発明の一実施形態によるオブジェクトを表わす。この実施形態では、フローモジュール１００ａないし１００ｄは、大抵はメモリアレーで構成される。フローモジュール１００ａは、フローメソッド(FlowMethod)１０４、状態１０６、及びフローゲート(FlowGate)１１２を含む。信号１０２は、処理されて、フローゲート１１２を経てフローモジュール間で切り替えられる。メッセージとも称される信号１０２は、本発明の一実施形態では、パケットフォーマットである。フローロジック(FlowLogic)アーキテクチャーへの一次入力及び出力も、信号である。アーク１０８は、フローゲート１１２間にデータが流れるときに通るチャンネルを表わす。一実施形態において、アーク１０８は、待ち行列を表わし、そして信号１０２は、アーク１０８を経て送信される。フローモジュール１００は、メモリに割り当てられるコード及びデータを定義するオブジェクトを表わす。図１は、更に、ハイアラーキーフローモジュール１１０内のフローモジュール１００ａ及びフローモジュール１００ｂを示す。これらフローモジュール１００ａ及びフローモジュール１００ｂは、一実施形態では、便宜上、ハイアラーキーフローモジュール１１０内でグループにされる。換言すれば、フローモジュール１００ａ及びフローモジュール１００ｂのグループは、エイリアスと同様である。アーク１０８は、一実施形態では、フォワードアーク(ForwardArc)１０８ａ、コールフォワードアーク(CallForwardArc)１０８ｂ、又はタイムドアーク１０８ｃとして特徴付けられる。これら形式のアークの詳細は、以下で述べる。アーク１０８は、特定用途の形態で生成されることが明らかであろう。フローゲート１１２は、外部信号を通して呼び出され、これは、ファンクションコールに類似している。
【００２０】
更に、図１を参照すれば、原始的フローモジュール、以下、フローモジュール１００ａ−ｄと称される、は、フローゲート１１２、状態１０６、及びフローメソッド１０４を含む同時エンティティである。アーク１０８は、フローゲートから出現し、フローゲートで終了となる。アークは、一度に１つ以上の信号を搬送することができる。フローゲートは、信号インスタンスで呼び出され、即ち信号インスタンスは、特定のフローゲートを呼び出すように狙いが定められる。一実施形態において、信号インスタンスは、小さなメッセージ又は大きなパケット或いはそれらの間の任意のサイズである必要なアーギュメントを搬送するバイトのストリームである。又、信号は、プライオリティクラス属性を搬送してもよい。あるクラス（プライオリティクラス）内の信号は、アークのヘッドにおいてそれらが発生された順序で到着するよう確保される。フローゲート１１２は、それ自身の状態をもたないことが明らかであろう。フローゲート１１２は、それが存在するフローモジュールの状態を変更することができ、そしてフローゲートは、１つ以上の信号を発生し、ひいては、１つ以上のフローゲートを同時に呼び出すことができる。一実施形態では、フローゲート１１２は、通常、短い実行バーストの後に終了する手順コードの分割不能で且つ割り込み不能なシーケンスとして考えることができる。フローロジックは、フローモジュール内の、一度に１つのそして１つだけのフローゲートがアクティブとなることを保証し、そしてフローゲートは、いったんスタートすると、完了することが保証される。ここに使用するフローメソッドは、コードの順次ボディーであり、例えば、フローモジュール内のフローゲートがそれらの最終目標を達成するために使用するＣスタイルのファンクションコールである。ハイアラーキー的フローメソッドは、１つ以上のフローモジュール１００ａ−ｄを含み、そしてフローロジックコードの再使用及びインターフェイス仕様交換を容易にするために主として使用される。タイムドアーク(TimedArc)は、成分信号がタイマーを搬送するアークの特殊なケースである。タイムドアークの成分信号は、タイマーが時間切れしたときにそれに対応するフローゲートを狂った順序で呼び出す。一実施形態では、タイムドアークは、同じフローモジュール内に発生して終了するように特に制限される。フォワードアークは、アーク１０８の別の特殊なケースで、その行先は、コールフォワードアークにより保持された信号によって暗示される。スレッド又はプロセッサの観念は、フローロジックの説明には存在しないことが明らかである。フローロジックは、信号フローの相互作用パイプラインのセットとして考えることができる。
【００２１】
当業者であれば、図１から、フローロジックアーキテクチャーを使用して、任意の数の相互接続されたフローロジックコンポーネントを使用する任意のトランザクション指向のアプリケーションを記述できることが明らかであろう。アイソクロンシステムも、適度なタイミング分解能で記述することができる。フローロジックは、サイクルの精度及び決定論的な振舞いが最重要である慣習的なデジタルロジックシステムデザインを意味するものではないことに注意されたい。フローロジックを使用してデザインされたシステムは、非決定論的であるが、アークにおける遅延とは独立した良く知られた端−端機能的振舞いを有することができる。アークは、特に信号をドロップすることに帰属しない限り、信号をドロップしないように保証される。システムの量的振舞い又は性能振舞いは、遅延（待ち時間）、容量、プライオリティ等を含むアークのパラメータに基づいて変化してもよい。
【００２２】
フローロジックアーキテクチャーは、性能及び量的振舞いの柔軟なデザインスペース探求を許し、その後、その結果を前記構造的に現場で構成可能な半導体デバイスへと柔軟にマッピングすることを許す。とりわけ、アーク１０８に関係したパラメータは、フローロジックを使用するシステムシミュレーション中に双方向的に決定される。このようなシステムの性能振舞いは、シミュレーション中になされるトラフィックパターン仮定と同程度に良好であるに過ぎないことに注意されたい。一実施形態において、ダイナミックフローゲート(DynamicFlowGate)と称されるフローゲートは、ランタイムに動的にロードし、リンクすることができる。一実施形態において、ダイナミックフローゲートは、ランタイムシステム診断及びデバッグの目的を果たすことに制限される。従って、フローロジックシステム及び言語の概略は上述したが、その更なる詳細は、図面を参照して以下に述べる。
【００２３】
図２は、本発明の一実施形態によるフローロジックシステムの別の構造図である。フローモジュール１００ａないし１００ｄは、アーク又はチャンネルのセットを通して相互接続される。図２のこれらアーク又はチャンネルは、本発明の一実施形態により、ランダム読み取りチャンネル１１６、プライオリティクラスチャンネル１１４、又はランダムアクセスチャンネル１１８として分類されてもよい。上述したように、フローモジュールは、主として、メモリ領域で構成され、そしてチャンネル１１４、１１６及び１１８は、これらメモリ領域間で通信するための配線を形成する。異なる形式及び容量のチャンネルが、フローロジック記述からアノテーションを経て双方向に推論されることが明らかである。例えば、信号の形式は、チャンネルのプライオリティクラス、形式及び容量の範囲を決定する属性を保持する。２つのフローモジュール間のアークのセットは、アークが保持する信号形式に基づいて１つ以上のバーチャルチャンネルへとマップする。チャンネルとは、製造者が書き込み、消費者が読み取る方法、並びに同期及びフロー制御を伴う単一方向性メモリ要素と考えることができる。最も簡単なケースでは、チャンネルは、先入れ先出し（ＦＩＦＯ）シリアル待ち行列である。別の実施形態では、チャンネルは、フィルタリング及び分類機能の目的でシリアル書き込み、ランダム読み取りでもよい。更に別の実施形態では、チャンネルは、セマフォアを交換するためのランダム書き込み及びランダム読み取り能力を含んでもよい。
【００２４】
図３は、本発明の一実施形態によるフローモジュールを実行するためのロジックを示す簡単な図である。ここに述べる実施形態は、オブジェクトを取り上げ、それをフローモジュールへ変換し、次いで、このフローモジュールは、フローバーチャルマシン(FlowVirtualMachine)（ＦＶＭ）へ更に変換されることが明らかである。フローバーチャルマシン１００は、フローモジュールの実行モデルを表わす。ＦＶＭ１００は、フローゲートインデックス(FlowGateIndex)１２０を備えている。一実施形態では、信号がフローモジュールにヒットし、フローゲートインデックスを経て、どのフローゲートを実行すべきか決定される。一実施形態では、信号それ自身の中のデータは、ピックアップすべきフローゲートを識別する。スタックメモリ(StackMemory)１２２、コードメモリ(CodeMemory)１２４、状態メモリ(StateMemory)１２６、出力バッファ(OutputBuffer)１２８、及びチャンネルメモリ(ChannelMemory)１３０がＦＶＭ１００に更に含まれる。出力バッファ１２８は、出て行く信号を一時的にステージング(staging)するための比較的小さなメモリエリアである。チャンネルメモリ１３０は、ＦＶＭ１００へのメッセージを受信するために入力側にある。ＦＶＭ１００内のメモリの各部分は、コードメモリ１２４を除いて、フローゲートにより共有され又は集合されることが明らかである。従って、上述したように、信号がフローゲートにヒットしたときには、フローゲートコードを呼び出すためのポインタがある。図３は、現場で構成可能な半導体デバイスへマッピングするのに必要な特性を直接決定するモデルを示すことが明らかである。本発明の好ましい実施形態を説明する目的としては、実行の詳細ではなく、ＦＶＭのアーキテクチャー態様について述べれば充分であろう。ＦＶＭの変数成分は、メモリ区画及びそれらのコンテンツであり、それを変更することで、フローモジュールをそれにマップし、実行することができる。
【００２５】
ＦＶＭにおける論理的メモリ区画のサイズは任意であり、そしてそれら区画は、物理的に独立したアクセス経路を有することに注意されたい。フローゲート及びフローメソッド(FlowMethod)に関係したコードは、リロケーション可能なマシンコードへコンパイルされ、これは、次いで、それに対応するＦＶＭコードメモリの論理的サイズを決定する。フローゲートインデックスは、適切なフローゲート実行のための他のコンテクストデータの中でも、フローゲートコードに対するポインタと共に独特のフローゲート識別子でインデックスされるジャンプテーブルを含む。スタックメモリは、フローゲート実行中に要求される中間状態を記憶するのに使用される。ＦＶＭにはレジスタファイルがない。ＦＶＭの仕事は、スタックマシンと同様である。スタックは、フローゲートがスタートするまでは常に空である。というのは、フローゲートそれ自体は永続的状態をもたず、フローゲートは、保留することが許されないからである。
【００２６】
スタックのサイズ又は深さは、コンパイル時にフローロジックコンパイラーにより決定される。明らかなように、フローロジックプログラミングスタイルは、コンパイル時に深さを予想できないネスト状コール及び反復ファンクションコールをサポートしない。更に、フローロジックには、動的割り当てもごみ収集もない。というのは、メモリ収集割り当てがコンパイル時に固定されるからである。寿命がフローゲートコールに及ぶ一時的変数を除き、状態変数は、全て、コンパイル時に予め割り当てられる。ＦＶＭに対する状態メモリ１２６のサイズは、コンパイル時に分る。出力バッファ１２８及びチャンネルメモリ１３０は、一実施形態では、ランタイムシステムにより管理され、そしてアノテーションのみを経てシステムデザイナーに見えるようになる。出力バッファ１２８は、出て行く信号を一時的にステージングするための小さなメモリエリアである。他方、チャンネルメモリ１３０は、チャンネルをホストし、それに対応するＦＶＭにより必要とされる程度の大きさである。この時点では、これらのメモリは、異なるアクセスデータ経路を有するが、メモリは、全て、構造的に構成可能なイン・メモリ処理アレーにおいて同じリソース形式を使用することを指摘することが有用である。実際に、メモリは、アレーにおいて直接的に割り当てられる唯一のリソースであり、処理要素を含む他の必要なロジックは、このようなメモリリソースに固定される。
【００２７】
図４は、本発明の一実施形態により幾つかのフローモジュールを１つの総構造体へ集合化する能力を示す簡単な図である。ここでは、多数のＦＶＭが集合されて、フロータイル(FlowTile)と称されるものに入れられる。総ＦＶＭ１３２は、個々のＦＶＭと同じ構造的表現、即ちフローゲートインデックス１２０ａ、スタックメモリ１２２ａ、コードメモリ１２４ａ、状態メモリ１２６ａ、出力バッファ１２８ａ、及びチャンネルメモリ１３０ａを含む。モジュールポインタ（ＭＰ）ｘ、ｙ及びｚは、集合化されたフローモジュールの対応する状態メモリエリアをさすポインタである。多数のフローモジュールが一緒に集合化されているので、フローゲートインデックス１２０ａは、ここでは、コードメモリ及び状態メモリをインデックすることが明らかである。多数の同時のフローモジュールを１つの総体へと集合化する能力は、ＦＶＭアーキテクチャーの背後の区別化ファクタであることが明らかであろう。スタックメモリサイズは、個々のＦＶＭのスタックメモリサイズの最大値である。コードメモリ１２４ａは、集合化されたＦＶＭのコードメモリの和である。しかしながら、一実施形態では、コードメモリ１２４ａは、異なるフローモジュール間に共有され、合計サイズは、前記和より小さくなる。同じ形式の多数のフローモジュールが負荷分担のために反復される特定のケースでは、コードメモリ１２４ａは、多数のインスタンス間に共有された単一コードコピー含んでもよい。出力バッファ１２８ａ及びチャンネルメモリ１３０ａのブロックは、アプリケーションに対してほぼ透過的な形態でランタイムシステムにより管理される。
【００２８】
図５は、本発明の一実施形態によるバーチャルプロセッサの対応セットをサポートするフロータイル(FlowTile)を示す高レベル概略図である。この表示において、フロータイルは、総ＦＶＭ１３２ａ、１３２ｂ及び１３２ｃで構成される。ランタイムシステム１３４は、どの信号がどのフローゲートに関連されるか決定するように機能する。従って、カーネルと称されるランタイムシステム１３４は、フロータイル内の信号の流れを整合させる。切り替え要素１３６は、信号をフロータイルへ及びフロータイルから移動するように機能する。一実施形態において、切り替え要素１３６は、送信される種々の信号に対してインターフェイス又はルーターとして考えられる。もちろん、ルーター機能は、ここでは、システムの内部にあるものとして示されているが、別の実施形態では、フロータイルの外部にあってもよい。図５に示すように、多数のＡＦＶＭが、バーチャルプロセッサの対応セットをサポートするフロータイルへマップされる。フロータイルは、ある合計数のメモリリソースユニットを有する物理的エンティティである。ＡＦＶＭにより要求されるリソースの和は、この合計を越えることがない。この制約の中で、メモリユニットは、成分フローモジュールの機能を果たすように柔軟にマップさせることができる。フロータイルは、フロータイル内の信号の流れを整合させる対応ランタイムシステムを有する。上述したように、切り替え要素は、信号を出力バッファからそれに対応するチャンネルメモリへ移動させる役割を果たす。
【００２９】
図６は、本発明の一実施形態によるフローロジックマシン(FlowLogicMachine)のアーキテクチャーを示す高レベル概略図である。ここで、各フロータイル１４０ａないし１４０ｎは、それに対応する切り替え要素１３６ａないし１３６ｎを経てイン・メモリ信号ルーター１４２に接続される。イン・メモリ信号ルーター１４２は、フローロジックマシンがデザインされたチップ内でルーティング機能を遂行することが明らかである。各フロータイル１４０ａないし１４０ｎ内では、信号の整合がランタイムシステム１３４ａないし１３４ｎにより遂行される。フロータイル１４０ａ−ｎは、フローロジックマシン内で信号をルーティングするためにアプリケーション独立のイン・メモリルーター１４２に接続される。メモリルーター１４２は、各フローファイルに関連した切り替え要素１３６ａ−ｎを備えている。一実施形態では、イン・メモリルーター１４２は、信号が、詰まることなく、且つ最小の通過時間で、出力バッファ及びイン・メモリルーター１４２から流れ出すよう確保するに充分なほど、オーバープロビジョニングされる。詰まりが生じる場合は、その詰まりがチャンネルメモリに制限され、これは、フローロジックデザイン表現のレベルにおいて適当に軽減することのできるシステム特性として示される。上述したように、ルーター機能は、外部で遂行することもできる。一実施形態において、ランタイムシステムは、受信側チャンネルが充分なクレジットを有する場合だけ信号が生成されるよう保証し、デッドロック、オーバーラン、等の、悪いケースの振舞いが生じないよう保証する。クレジットベースのフロー制御管理のオーバーヘッドは、充分なチャンネルサイジング属性を与えることによりフローロジックデザイン表現レベルに同調することができる。切り替え要素１３６ａ−ｎは、信号を小さなフロー制御デジット（フリッツ(Flits)）へと更に分割し、端−端待ち時間が信号サイズに不感であるよう保証する。
【００３０】
図７は、本発明の一実施形態によるフローロジックマシン内のデータフローを示す簡単な図である。信号を発信するフロータイルのための出力バッファは、その信号を切り替え要素へ転送し、そこで、大きなメッセージが小さなチャンクに分割され、中間ステージに通される。これらの小さなチャンクは、次いで、チャンネルメモリに累積され、これは、一実施形態では、データを消費するフロータイルにある。出力バッファからの信号は、切り替え要素により独立して読み取られ、そしてフロー制御デジット又はプリミティブであるフリッツへとセグメント化される。
【００３１】
図８は、フロータイルに対する外部装置とインターフェイスするためのアダプタを有するフロータイルを示す簡単な図である。フロータイル１４０は、アダプタ１４４と通信する。アダプタ１４４は、一実施形態によれば、チップ・対・チップ通信のためのインターフェイスを形成することができる。例えば、アダプタ１４４は、装置間でパケットを転送するためのパケットインターフェイスを形成してもよい。アダプタは、インターフェイスがアプリケーション特有となるように設計できることが明らかであろう。一実施形態では、例えば、アレーの周囲において幾つかのフロータイルは、外界、例えば、他のチップとインターフェイスするように構成される。又、外界のインターフェイスは、図８に示すように、アダプタ１４４を経て得られる信号ベースのインターフェイスである。
【００３２】
フローロジックマシンは、それ自体、計算ロジックが固定され分布された複数のフロータイルを実施する構造的に構成可能なメモリユニットのアレーと考えることができる。更なる類似として、ここに述べるフローロジック言語は、ＪＡＶＡ（登録商標）言語と考えられ、一方、フローロジックマシンは、ＪＡＶＡ（登録商標）バーチャルマシンに類似したものである。というのは、フローロジック言語は、オブジェクト指向のプログラミング言語の幾つかの属性を有するからである。当業者であれば、当該リソースの多くは、ある形態又は別の形態のメモリユニットであり、即ちコード、状態、スタック、チャンネル、及びバッファであることが明らかであろう。前記所見により動機付けされて、フローロジックマシンは、メモリリソースとも称されるこれらのメモリユニットを、特定のアプリケーションにより要求されるように構成する能力を発揮するよう設計され、そしてフローロジックの表現は、システム記述を柔軟な仕方で再キャスティングして、ターゲット容量、性能、及び機能を達成する融通性を許す。
【００３３】
図９は、本発明の一実施形態によるフロータイルの計算要素のデータ経路を示す簡単な図である。又、図９は、フロータイルのプロセッサの演算論理ユニット（ＡＬＵ）の処理部分を示すものと考えてもよい。この実施形態では、フロータイルは、４つのバーチャルプロセッサ、即ちパイプラインの４つのステージを含み、それ故、図９には４つのスレッドが示されている。しかしながら、当業者であれば、本発明は、４つのバーチャルプロセッサに限定されるものではないので、任意の数のプロセッサ及びスレッドをリンクできることが明らかであろう。従って、図９の左側において、数字０１、０２、０３、０４及び０１は、処理ステージ内の時間要素のステージを表わす。第１ステージ内で、ブロック１５２、１５４及び１５１により示されたように、インストラクション読み取りが遂行される。読み取りが遂行され、エラー検出が実行される。インストラクションは、ブロック１５６を経て整列され、そしてアドレスは、ブロック１５８を経て発生される。ブロック１５８からのこれらのアドレスは、メモリアクセスのために与えられ、そしてステージ２のブロック１６２、１６４、１６６及び１６８においてデータとして使用される。ステージ２において、ブロック１６０及び１６２により各々示すように、デコードが遂行され、そして拡張読み取りも実行される。オペランドが、３ステージパイプライン１７０へ送られる。図示されたように、オペランドＡ１６６及びオペランドＢ１６８は、エラー検出が行われた後に、レジスタ１７４及び１７６を含むＡＬＵ１７０へ送られる。ステージ３において、ルックアップ機能が遂行される。ここで、ＡＬＵ１７０へのオペランドの１つ以上が取り出され、４つのメモリへのアドレスビットとして使用される。次いで、データが、対応するルックアップテーブル１７２ａないし１７２ｄから読み出される。次いで、ブロック１７８、１８０及び１８２に示すように、サイクルが繰り返される。ＡＬＵ１５０の処理断片内のアーキテクチャーは、メモリ中心のプロセッサであることが明らかであろう。モジュール１５２、１５１、１６０、１６２、１６６、１６８、１７２ａないし１７２ｄのメモリの各々を共有することができる。従って、上述したモジュールの各々に割り当てられるメモリの量を変更することができる。即ち、モジュールに割り当てられるメモリは構成可能で、且つメモリ記憶要素の多レベルアレーへのアクセス経路は多数あり、これに対して慣習的なプロセッサでは、固定サイズメモリへのアクセス経路が若干あるだけである。更に、モジュール１５２、１５１、１６０、１６２、１６６、１６８、１７２ａないし１７２ｄにより表わされるメモリ参照は、慣習的なプロセッサアーキテクチャーが多数の独立したアクセス経路を経てこれらの特徴を組み込むものではないという点で、独特である。
【００３４】
本発明の一実施形態では、図９の計算要素１５０は、フローモジュールの機能を効率的に実施するように適応される。慣習的なプロセッサとは異なり、複数のメモリアクセス経路は、計算要素１５０の一体的部分である。計算ロジックゲート及びレジスタは、図１８を参照して更に説明するように、静的な相補的金属酸化物半導体（ＣＭＯＳ）構造体から生じるサブスレッシュホールド漏洩を最小にするように健全に設計される。組み合せロジック及びレジスタの物理的範囲が最小にされると共に、構成可能なメモリの周囲組織内で効率的に働くように速度一致される。一実施形態では、データ経路が、４つまでの独立した同時のバーチャルプロセッサを動作する４つの段階に分割される。上述したように、本発明は、任意の適当な数のバーチャルプロセッサを組み込むことができるので、４つのバーチャルプロセッサに限定されない。これらバーチャルプロセッサは、ある意味ではハイパースレッドと同様であるが、それらによって使用されるメモリリソースは、完全にばらばらであり、従って、バーチャルプロセッサという語で表わされる。図９は、従来のプロセッサ又はマルチプロセッサに通常存在するキャッシュハイアラーキー、バーチャルメモリ又は共有メモリがないので、計算要素１５０の全データ経路を示している。一実施形態では、バーチャルプロセッサは、多レベルメモリの個別の区分に関連付けられる。或いは又、バーチャルプロセッサは、多レベルメモリアレーの幾つかのオーバーラップ部分を共有してもよい。一実施形態では、バーチャルプロセッサの１つが、スケジューリング、例外ハンドリング、クレジットシェアリング、ネットワークファンクション、等のシステム機能を取り扱う。アクセスデータ経路とも称されるメモリアクセス経路は、次のものを含む。
【００３５】
プログラム読み取り１５２：記憶プログラム制御メモリから制御コードが読み取られる。インストラクションサイズは、一実施形態では、３２ビット巾に固定される。バーチャルプロセッサの各々に対してプログラムカウンタのインスタンスがあり、そしてインストラクションのある部分を使用して、オペランド及びオペランド選択モードが識別される。インストラクションが整列され、オペランドアドレスが発生される。計算要素１５０は、相対的アドレスを発生するのにコンテクストポインタに広範囲に依存する。インストラクションそれ自体におけるアドレスオフセットは、各々が占有するビットフィールドのサイズに基づくダイナミックレンジを有する。
【００３６】
デコード読み取り１６０：これは、プログラムコードを、計算オペレーションを制御する制御状態へデコードするマイクロプログラム読み取りである。ある意味で、計算要素１５０のアーキテクチャーは、マイクロプログラムベースの制御に頼ることにより減少インストラクションセットコンピュータ（ＲＩＳＣ）デザインの原理を定義する。マイクロプログラムデコードは、計算要素１５０の幾つかのインスタンスがマイクロプログラム制御記憶のアプリケーション依存最適化を有するという点で、プログラム可能である。
【００３７】
拡張読み取り１６２：このフィールドは、第２ステップ又はパイプラインステージにおいて制御インストラクションをカスタマイズするのに使用される。特に、拡張読み取り１６２は、トランザクション指向の処理の状況において、ビット操作のために要求されるオペランドマスクを発生する。典型的に、拡張読み取りは、アプリケーション特有のベースで発生されて一次インストラクションにより参照されるテンプレートである。
【００３８】
オペランドＡ＆Ｂ読み取り各々１６６及び１６８：アドレスジェネレータ１５８により発生されたアドレスから２つのオペランドが読み取られる。
【００３９】
ルックアップ［０−３］１７２ａ−ｄ：「メモリ拡張インストラクション」と称されるインストラクションの特殊なクラスを可能にする４つの任意のルックアップメモリ区画がある。これらのインストラクションは、アプリケーションに依存するものであり、従って、ルックアップメモリは、各計算要素１５０に対して任意に構成することができる。これらのインストラクションは、トランザクション指向のアプリケーションに使用されるものの中で、暗号化、認証、ハッシュ、繰り返し冗長チェック、及び乗算のようなアルゴリズムを加速する。オペランドは、４つのルックアップ区画に対するアドレスを発生するのに使用され、そしてそれにより生じる４つのルックアップ出力、各々１２８ビットまで、がＡＬＵ１７０において一緒に合成されて、出力を発生する。
【００４０】
結果書き込み１８２：ＡＬＵ１７０から得られる出力が、結果書き込み１８２のアクセス経路を経てそれに対応するメモリ区画へ書き込まれる。
【００４１】
ＡＬＵ１７０：しばしば、ＡＬＵ１７０の結果を使用して、内部レジスタ又はプログラムの次の制御状態が更新される。分岐予想又は他の形式のインストラクションレベルパラレルエンハンスメント技術はないことに注意されたい。計算要素１５０のアーキテクチャーは、ＲＩＳＣの前提も定義する。コンピュータ要素１５０は、３２ないし１２８ビットデータ経路のどこかで動作する多数の複雑な命令を有し、これらは、ステートフルなトランザクション指向のアプリケーションに対して最適化される。ＡＬＵ１７０は、一実施形態では、３ステージパイプラインユニットである。図９に示すように、これらステージの２つは、メモリアクセスと共用される。インストラクションセットは、図１４を参照して以下で説明する。
【００４２】
本発明の実施形態は、ノイズ誘起エラー及びソフトエラーが大発生するディープ半導体メモリ技術に対処するように特に設計される。ノイズ源は、クロストーク及びカップリングを含む。合理的に設計されたシステムでは、ソフトエラーは、稀ではあるが、不可避である。計算要素１５０は、全ての読み取りアクセス経路１５２及び１７８において単一ビットエラーを検出するが、組み合せロジックを費やしてエラーの修正を行なわない。計算要素１５０は、計算サイクルを犠牲にしてエラーがプログラムで修正される例外モードに入るように設計される。ある意味では、これは、ハードウェア割り込みと同様である。実際に、計算要素１５０は、ここに述べる実施形態では、他の形式又は使用の割り込みをもたない。ここに述べる実施形態では、データがバイトで編成され、各バイトは、それ自身のパリティビットがバイトレベルでエラー検出を可能にする。更に、パリティビットを含む１６バイトのブロックは、ブロックレベルでの単一ビットエラー修正を可能にする９ビットシンドロームにより保護される。
【００４３】
図１０は、本発明の一実施形態によりメモリ区画と図９の計算要素との間の関係を示す簡単な図である。図示されたように、計算要素１５０は、再構成可能なメモリプール１９０を有し、これは、切り替え要素１３６とも通信する。又、計算要素１５０、再構成可能なメモリプール１９０及び切り替え要素１３６は、フロータイルとも称されることが明らかである。再構成可能なメモリプール１９０は、計算要素１５０へアクセス経路を与える構造的に構成可能なメモリ要素のプールを表わす。一実施形態において、メモリ要素、アクセス経路及び計算要素１５０は、ビットが整列され、且つピッチが一致される。これらの要素は、計算要素１５０の各インスタンスに適するようにアプリケーション特有の形態において現場で構成される。切り替え要素１３６及び計算要素１５０には、メモリプール１９０の対応部分が関連付けられ、これらの部分は、再構成することができる。
【００４４】
内蔵シリコンテスト及び修理：半導体デバイスの実質的な部分は、構成可能なメモリプールを含む。他の要素は、デバイスダイの大きな割合を占めないので、潜在的な製造欠陥に対して健全に設計される。メモリプール１９０は、シリコン内でテストされ、そしてアプリケーションとは独立した形態でメモリユニットの欠陥部分を排除するように構成される。一実施形態において、このオペレーションの多くは、パワーアップ時にプログラムで実行される。次いで、メモリプールは、所与のアプリケーションに適するように適当に構成される。又、メモリプールは、常駐する切り替え要素への独立した読み取りアクセス、及び隣接する切り替え要素への独立した書き込みアクセスも与える。上述したように、図１０の切り替え要素１３６は、デバイスのある部分から別の部分へ信号を切り換える役割を果たす。
【００４５】
図１１は、本発明の一実施形態による構造的に構成可能なイン・メモリ処理アレーの環境において図９及び１０の計算要素と図１０の切り替え要素とのトポロジー位置を更に示す図である。又、図１１は、デバイスの基本的フロータイル２００を示す。フロータイル２００ａに詳細に見られるように、計算要素１７０がピッチ一致形態で埋め込まれたメモリアレー上でメモリのページ（Ｐ）へ構成可能なアクセス経路が配列される。
【００４６】
図１２は、本発明の一実施形態による計算要素のアーキテクチャーモデルを示す図である。図示されたように、フローロジックアーキテクチャーに必要とされるほとんどの処理は、オブジェクト指向のもので、且つ小さな動的アドレス範囲に対するものであるから、コンテクストポインタ２１０が含まれる。このコンテクストポインタ２１０は、以下に詳細に述べるように、多数の構成可能なサイズのメモリ区画を指す。
【００４７】
ルックアップメモリ２１２：このメモリ区画は、任意であり、先に示したアクセス経路の１、２又は４を使用することができる。ルックアップメモリ２１２のコンテンツは、通常、構成時に、アプリケーションにより要求されるようにプログラムされる。又、ルックアップメモリ２１２の部分は、製造中に、金属プログラミングすることもできる。
【００４８】
スタックメモリ（コピー０及び１）各々２１４ａ及び２１４ｂ：計算要素の実行モデルは、スタックマシンに類似させることができる。計算要素は、レジスタファイル又はバーチャルメモリの観念をもたない。必要とされる全てのメモリは、一実施形態では、コンパイル時又は個人化処理時に予め割り当てられる。スタックメモリ２１４ａ及び２１４ｂは、フローゲートのランタイム状態の一時的記憶装置として働く。フローロジックのフローゲートは、アプリケーションに必要な最大スタックサイズをコンパイル時に決定できるように指定される。区画は、コンパイラーにより決定された最も深いスタックを収容するに充分なほど大きくされる。フローロジックは、一実施形態において、スタックがオーバーフローしないよう確保するために、反復ファンクションコールの観念をサポートしない。図１３は、フローゲートが実行されてファンクションコールをネスト状にするときのスタックメモリの使用を示す。
【００４９】
オリジナルコピーの鏡像であるスタックメモリの任意の第２コピーがある。この構成は、一実施形態では、スタックのコンテンツをＡＬＵへのいずれかのオペランドとして利用可能とするために使用される。しかしながら、スタックメモリの２つのコピーは、同時に書き込まれる。コンパイラーは、幾つかのケースでは、第２コピーを使用しないように選択されてもよい。しかし、多くの場合、スタックメモリは、実質的に小さいが、スタックに記憶される変数は、頻繁に使用される傾向がある。スタックメモリは、慣習的なＲＩＳＣプロセッサにおけるレジスタファイルに置き換わるものであることが明らかである。
【００５０】
コードメモリ２１８：多くのプログラムコードは、リロケーション可能で且つコンテクスト的であるフローゲートに関係している。コードメモリ区画は、他の区画と同様の任意のサイズに構成することができる。多数のバーチャルプロセッサが、あるコードを必要に応じて共有することができる。コードメモリ２１８の部分、特に、修理時の電力に関係した部分は、装置の製造時に金属プログラミングすることができる。アプリケーション依存コードの残りは、通常、一実施形態では、構成時にプログラミングされる。例外ハンドリングのようなある特殊なケースでは、この区画は、例外に特有の仕方でランタイムにプログラミングすることができる。
【００５１】
拡張メモリ２２０：これは、通常、インストラクションのインスタンスをカスタマイズして、マスク及び整列並びに他の制御／データパラメータをＡＬＵに与えるのに使用される非常に小さな任意の区画である。
【００５２】
状態メモリ２２２：これは、フローモジュールの状態が記憶されそして作用されるメモリ区画である。状態メモリ２２２への全ての割り当ては、コンパイル時に行なわれる。上述したように、フローロジックには、動的なヒープ記憶割り当ても、ごみ収集もない。
【００５３】
出力バッファ２２４：これは、切り替え要素が書き込むが、読み取ることはしない比較的小さな区画である。切り替え要素は、通常、この区画から読み出す。
【００５４】
チャンネルメモリ２２６：これは、通常、ある場合には非常に小さく、他の場合には大きいこともある融通性のある区画である。信号は、切り替え要素によりこの区画へ堆積される。切り替え要素は、この区画へ読み取りアクセスだけを行なう。
【００５５】
図１３は、本発明の一実施形態によるスタックメモリを例示する簡単な図である。上述したように、フローゲートを実行するスレッドは、いかなる時点にもそれら自身の状態をもたない。フローゲート及びそのネスト状のメソッドコールは、コードが実行されているときにスタックメモリを使用する。その結果、スタックが成長する。フローロジックコンパイラーは、いかなる場合にもスタックがその予め割り当てられたサイズを越えて成長しないことを保証する。
【００５６】
図１４は、本発明の一実施形態による計算要素のインストラクションセットアーキテクチャーを示す図である。好ましい実施形態では、アプリケーションの所与のインスタンスに対してインストラクションセットをコンパクトにできるような形態でインストラクションセットをプログラムすることが可能である。当業者であれば、計算要素は、最も頻繁に使用されるインストラクションに対してオペランドアドレスのダイナミックレンジを最小にするためにドメイン特有のポインタに依存することが明らかであろう。しかしながら、あまり頻繁に使用しないインストラクションについては、特定のオペレーションを遂行するために多数のインストラクションを犠牲にして非常に大きなダイナミックレンジが実現される。拡張ポインタ及びそれに対応するプログラム可能な拡張は、整列、シフト及びマスキングに関して、より豊富なコンテクストをインストラクションに与える。拡張は、小さなセットであり且つアプリケーション指向のものとなる傾向がある。
【００５７】
メモリ拡張インストラクションの概念は、ここに述べる実施形態により開示される。図１５は、本発明の一実施形態によるＡＬＵへの拡張としてメモリ拡張インストラクションを更に示す図である。ＡＬＵ１７０は、それ自体、パイプラインである。パイプラインステージに並んでいるのは、ルックアップメモリ(LookupMemory)の４つのインスタンスを通る任意のデータ経路である。これらルックアップメモリへのアドレスは、１つ以上のオペランドから直接的に発生される。これらのメモリ区画は、１２８ビットを各々出力し、これらは、次いで、減少組み合せロジックブロック２５０において合成される。ルックアップテーブルのコンテンツは、それ自体、プログラム可能であり、そしてインストラクションセットを適切にプログラミングすることにより減少アルゴリズムが選択される。減少オペレーションは、とりわけ、ビットに関する排他的オアから、スイズル、及び４方向桁上げセーブ合成まである。有用なオペレーションの幾つかは、単一サイクルハッシュ関数を発生するプリミティブ、繰り返し冗長チェックに使用される多項式除算、進歩型暗号規格（ＡＥＳ）暗号化、認証、等を含む。
【００５８】
本発明の一実施形態において、イン・メモリ処理ダイは、図１６に示すように二次元に沿ってフロータイルをタイル張りすることにより拡張可能な形態で構成される。広帯域巾の単一方向性フロータイル間アクセス経路は、中間メモリをネットワークノードとして伴い、オンチップ相互接続ネットワークデザインにおいて良く知られた異なるネットワークトポロジーをとることができる。ダイ・対・ダイの相互接続に対して広帯域巾の内部メモリ経路を狭帯域巾のインターフェイスへ変換するためにダイの周囲にはアダプタが配置される。個々のフロータイルは、一実施形態では、電磁干渉（ＥＭＩ）を最小にするために相互にスキューしたクロックで動作される。個々のフロータイルを非同期のメソクロノウス(mesochronous)クロックで動作させる能力は、外部インターフェイスがそのネーティブクロックを使用してインターフェイスを行なえるようにすることも明らかであろう。即ち、多レベルアレーの部分と部分との間のクロック分布ツリーは、互いにスキューされる。ここで使用する多レベルアレーの部分とは、「フロータイル」という語と交換可能である。更に、ここに述べる実施形態は、異なる読み取り及び書き込みアクセス経路上でスキューしたクロックによりメモリ記憶セルへの同時アクセスを許す。更に、ここに述べるインターフェイスポートは、記憶セルへの他のアクセス経路上のクロックとは独立した非同期クロックに基づいて多レベルアレー内の記憶セルにアクセスすることができる。図１６のアダプタは、インターフェイスポートを含む。これらインターフェイスポートは、パケット化されたインターフェイスポートと称され、これは、インターフェイスポートがパケットデータをハンドリング／処理できることを意味する。
【００５９】
イン・メモリ処理デバイスは、システム・イン・パッケージ（ＳＩＰ）デバイスを使用して実現され、ここで、イン・メモリ処理アレーダイの１つ以上のインスタンスは、図１７に示すように、基板２５１における１つ以上の小さな相手ダイ２５５とインターフェイスされる。外部インターフェイスは、通常、相手ダイ２５５からのシリアルインターフェイスである。相手ダイ２５５は、一実施形態において、物理的インターフェイス層を含む混合信号ダイである。かなり頻繁に、混合信号相手ダイは、処理技術がイン・メモリ処理アレーより１又は２世代後である。それにより得られるＳＩＰデバイスは、通常、幾つかの関連アプリケーションを実施できるアプリケーションプラットホームである。イン・メモリ処理ダイは、それ自体、一般的なもので、アプリケーション独立である。一実施形態では、相手ダイ２５５は、アナログ回路であるか、又はアナログ部分を有する。
【００６０】
図１８は、本発明の一実施形態によるビットセルの概略図である。当業者に注目すべきことに、金属−絶縁体−金属（ＭＩＭ）キャパシタが記憶要素として働く。この記憶キャパシタは、アイソレーショントランジスタ２６６により読み取りビットラインから明確に分離される。ビットセル２６２ａは、読み取り及び書き込みについて非同期でアクセスできるように設計される。読み取り及び書き込みパルスは、互いに既知の関係をもつ必要がない。読み取り−書き込みの衝突が生じる場合には、より高い論理レベルにおいて解決される。ｐチャンネルトランジスタ２６６及び２６８は、ビットセル２６２ａに対して書き込み及び読み取りを行なうように構成される。当業者であれば、図１８に示すｐチャンネルトランジスタに限定されるものではないことが明らかであろう。というのは、ここに述べる実施形態は、ｎチャンネルトランジスタを組み込んでもよいからである。ＭＩＭキャパシタ２６４は、現在利用可能な進歩型プロセスの幾つかにより許されるように、アクティブなトランジスタの上の層において構成される。これら形式のＭＩＭキャパシタ２６４は、読み取り時にキャパシタをリフレッシュする必要のある高密度のダイナミックランダムアクセスメモリ（ＤＲＡＭ）に慣習的に使用される。ここに示す実施形態では、これらＭＩＭキャパシタ２６４を使用して、低い密度を犠牲にしてデュアルポート独立読み取り／書き込みメモリが実現される。又、記憶ノードは、図１８に示すように、１つの金属マスクプログラミングを使用して論理１又は０に永久的にプログラムすることもできる。ＭＩＭ技術により得られるより大きなキャパシタンス、及びゲート領域のアクティブな拡散エリアから得られる著しく減少されたＳＥＲ（ソフトエラーレート）の断面が、ソフトエラー公差を改善することが明らかであろう。
【００６１】
図１８を更に参照すれば、スイッチ２６５のための接続は、単一のマスクを通して変更することができ、従って、単一マスクを使用して、ビットセルの機能をスイッチできることが明らかであろう。例えば、スイッチ２６５が未接続のままである場合には、慣習的なメモリセルが生成される。しかしながら、スイッチ２６５がＶdd又は接地点に接続された場合には、異なる形式のメモリセルが生成される。本質的に、ここに述べる実施形態は、慣習的なメモリセルにおける多数のマスクではなく単一のマスクへの変更により固定布線を行なえるようにして、メモリセルをレイアウトする技術を可能にする。図１８を参照して述べた実施形態により、デバイスは、金属プログラム可能となる。
【００６２】
図１９は、本発明の一実施形態によるビットライン配列の概略図である。前節で述べたように、潜在的に互いに非同期な別々のデコーダにより読み取り及び書き込みイネーブル制御が生成される。読み取り及び書き込みビットラインは、互いに独立している。ビットラインは、３つのハイアラーキーレベル、即ち内側ビットライン、中間ビットライン及び外側ビットラインを経て編成される。内側ビットライン３００は、ビットセルまで到達する。ビットライン３００は、列に編成される。列は、更に、列グループへとグループ編成される。ビットラインには、列スプライサー３０２が埋め込まれて、より少数の中間ビットライン３０４が実現される。中間ビットライン３０４は、ｗｃｏｎｆｉｇ及びｒｃｏｎｆｉｇ制御ラインで示されたように、構成に基づき、幾つかの外部ビットライン３０６の１つを経てアクセスすることができる。フロータイル内の幾つかのページの外部ビットライン３０６は、更に一緒にバスとなって、最終的なフロータイツビットラインを形成し、フロータイルの周辺にドライバ及びセンス増幅器を伴う。スプライシング回路３０２は、メモリの編成をバスの巾と一致させるように機能する。一実施形態では、スプライシング回路３０２は、単一サイクル動作をサポートするマルチプレクサ・デマルチプレクサである。構成スプライシング回路３０８は、ビットセルアレー３１０を構成するのに使用され、従って、ビットセルアレーは、バッファ又はスタックの一部分となり得る。構成スプライシング回路３０８は、外部バスに結合され、そして構成が終了するときに固定される。スプライシング回路３０２及び３０８は、２つのマルチプレクシングレベルを与え、その一方のレベルは、メモリを構成するためのもので、そしてもう一方のレベルは、メモリの編成を外部バスの巾に一致させるためのものであることが明らかであろう。
【００６３】
メモリビットセル、ページ及びフロータイルは、特に、欠陥に対し半導体デザイン収率を向上させるように設計される。面積主体の回路は、積極的なデザインピッチを使用して設計されたビットセルである。このレベルにおいて収率を改善するために、各ページは、冗長な行を含み、これは、行を欠陥ビットセルに置き換えるのに使用できる。次の一体化レベルでは、ポイント欠陥のおそれを最小にするために、穏やかな幾何学形状が使用される。又、ビットセル修理能力にも関らず欠陥となり得るページを補償するためにフロータイル内に冗長なページもある。外部ビットライン、及びページごとのロジックは、ポイント欠陥に対して健全なものとなるようにオーバーデザインされる。ここに述べる実施形態は、回路デバイスの物理的デザインを、異なるハイアラーキー的一体化レベルへ仕切ることに注意されたい。異なるレベルは、欠陥密度が、高い一体化レベルに比べて比較的高いものである低いレベルを含む。例えば、ビットセルレベルでは、欠陥密度が比較的高く、従って、ここに述べる実施形態は、高い冗長性を与える。というのは、この一体化レベルでは特徴部サイズを最小に保持するのが好ましいからである。しかしながら、ページ一体化のレベルでは、冗長性が緩和され、欠陥弾力性技術を組み込むことができる。一実施形態では、欠陥弾力性技術は、粗い特徴部を使用し、そしてそれら特徴部をより遠く離して冗長性要件を緩和することを含む。当業者に明らかなように、現在入手できるツールは、回路レベルの知識を所有せず、特徴部間の最小間隔基準に焦点を合わせるだけである。ここに述べる実施形態では、ハイアラーキー的であって各レベルにおいてどのルールを適用するか決定するデザイン基準のセットが定義される。即ち、あるレベルでは、冗長性が望まれるが、他のレベルでは、弾力性が好ましく、ここで、弾力性とは、粗い特徴部サイズを使用し、そしてそれら特徴部を更に離間して、そのレベルにおける上々な特徴部の必要性を減少することを指す。従って、ここに述べる実施形態は、全てのレベルにおいて最小間隔に対する判断のみに基づくのではなく、一体化レベルにおいて冗長性・対・弾力性の判断に基づく。
【００６４】
メモリリフレッシュは、対応するアクセスポートの使用を一時的に停止することによりイン・メモリ処理アレーの異なる部分に対して別々に遂行される。あるメモリは、それらが使用されないか、又はそれらが、再書き込み間の平均時間が短いと分っている区画に属する場合には、リフレッシュされなくてもよい。しかしながら、このような場合、ビットが減衰しないよう保証するためにアプリケーションが再書き込み間の時間を監視する。
【００６５】
図２０は、本発明の一実施形態によりメモリ記憶セルの多レベルアレーを有する半導体回路デバイスを構成しそしてプログラミングするための方法オペレーションを示すフローチャートである。この方法は、オペレーション４００で始まり、ここでは、初期のフローロジックソースコードが与えられる。オペレーション４０２では、フローロジックソースコードがパーズされる。判断オペレーション４０４では、例えば、シンタックスエラーのような何らかのエラーがソースコードに存在するかどうか決定される。フローロジックは、一実施形態では、Ｃ＋＋のサブセットをサポートするので、このチェックでシンタックスの問題が露呈されることが明らかである。エラーが生じた場合には、この方法は、オペレーション４００に復帰し、エラーが修正され、そしてこの方法は、上述したように再開する。エラーが検出されない場合には、この方法は、オペレーション４０６へ進み、ここで、フローロジックソースコードは、コードの幾つかがＣ＋＋フォーマットである状態になる。オペレーション４０８において、フローロジックモジュールは、精巧化プロセスを通してインスタンス生成される。ここで、ネットワークの記述を有するソースコードが、フローロジックインスタンスを表わすコードへと変換され、即ちインスタンスのネットワークが提供される。これは、ボックス４１０に示すフローロジックインスタンスソースコードを生じさせる。
【００６６】
更に、図２０を参照すれば、オペレーション４１２において、フローロジックインスタンスは、それに対応するＦＶＭへとコンパイルされる。コンパイルされたＦＶＭは、オペレーション４１４において、コンパイルエラーについてチェックされる。オペレーション４１４において、コンパイルエラーが見つかった場合には、この方法は、オペレーション４００へ復帰し、上述したように繰り返される。コンパイルエラーがない場合には、コンパイルされたＦＶＭがオペレーション４１６において得られる。コンパイルされたＦＶＭは、オペレーション４１８において、シミュレータに入力され、ファンクションシミュレーション及びインストラクションレベルシミュレーションが遂行される。オペレーション４００からのソースコードを使用して、ファンクションレベルのシミュレーションを与える一方、コンパイルされたＦＶＭを使用して、インストラクションレベルシミュレーションを与える。オペレーション４２０では、マッパーが、ＦＶＭをＡＦＶＭへと総計すると共に、ＡＦＶＭをフローレベルアレータイルへマッピングする。ここで、ＡＦＶＭがメモリ記憶セルの多レベルアレーの一部分へマッピングされる。更に、オペレーション４２０において、多レベルアレーの多方向アクセス経路が多数のＦＶＭに基づいて構成される。その後、多レベルアレーの一部分が、多数のＦＶＭに基づいて機能するようにプログラムされる。この方法は、オペレーション４２２で終了となり、フローロジックアレーは、シリコン内チップとして画成される。
【００６７】
フローロジックマシンは、それ自体、計算ロジックが固定され分布された複数のフロータイルを実施する構造的に構成可能なメモリユニットのアレーと考えることができる。当業者であれば、前記当該リソースの多くは、ある形態又は別の形態のメモリユニット、即ちコード、状態、スタック、チャンネル及びバッファであることが容易に分るであろう。前記所見により動機付けされて、フローロジックマシンは、特定のアプリケーションにより要求されるメモリユニットを構成する能力を与えるように設計され、そしてフローロジックの表現は、システム記述を柔軟な仕方で再キャスティングして、ターゲット容量、性能、及び機能を達成する融通性を許す。
【００６８】
フローロジックマシンは、とりわけ、システム診断を助ける新規な特徴を有する。フローゲートは、故意に原子的とされ、いったん始動すると、常に完了に至る。フローロジックマシンの状況においてランタイムインストラクションレベル単一ステップ動作の観念はない。むしろ、フローゲート境界においてステップ動作することができる。フロータイルは、一度に１つのフローゲートを実行するように命令される。外部デバッグコントローラは、フローロジックマシンがフローゲート実行のステップとステップとの間に休止されたときに明確なシステム読み取りコールを発することにより、状態メモリ、チャンネルメモリ、及びＦＶＭの他の区画を観察することができる。デバッグコントローラは、診断の目標を達成するためにダイナミックフローゲートを起動してもよい。フローロジックマシンは、読み取り、書き込み及び構成を目的とする、システムフローゲートと称する内蔵フローゲートを有する。このシステムフローゲートは、アプリケーションとは独立して、デバイスブート時に存在するようになる。これらのシステムフローゲートは、アプリケーション特有のＦＶＭをブーティングするのにも使用される。
【００６９】
又、ここに述べる実施形態は、フローロジックマシンのランタイムデバッグもサポートする。フローロジックランタイムシステムは、特定のデバッグペイロードで信号を送信及び受信することにより外部マシン（ホスト）から制御することができる。ホストは、デバッグコマンドを信号でランタイムシステムへ送信し、又、ランタイムシステムからデータ及び状態情報を信号で受け取る。
【００７０】
次のデバッグ技術がフローロジックマシンによりサポートされる。
ランタイムシステムは、所与の条件で実行を休止（中断）するように命令される。これらの条件は、特定のフローゲートの読み出し、入力信号のコンテンツ、フローゲート呼び出しに関する表現（即ち、所与のフローゲートのｎ番目の呼び出し）、又はランタイムシステムの他の内部状態を含んでもよい。実行を停止する際には、ランタイムシステムは、実行が停止されたことを指示する信号を送信することによりホストに通知する。次いで、ホストは、信号にカプセル化された更に別のインストラクションを送信することによりデバッグプロセスを制御することができる。
ランタイムシステムは、所与の条件まで実行を再開（ステップ）するよう命令される。これは、コンパイルされたコード環境における単一ステップ動作と同様である。この振舞いの幾つかの変形がサポートされ、例えば、「次のフローゲート呼び出しへステップする」、「所与のフローゲートのｎ番目の呼び出しへステップする」、又は「フローゲートが所与のコンテンツを伴う信号を受信するまでステップする」がサポートされる。
ランタイムシステムは、選択された又は全てのフローゲート呼び出しに関する情報を捕捉（トレース）し、そしてこの情報をホストへ通信するよう命令される。通信される情報は、特に、フローゲートの始動、それらの入力信号、及びそれらの出力信号のトレースである。
ランタイムシステムは、タイル内のあるメモリエリアに問合せし、そしてデータをホストシステムへ返送（ダンプ）するように命令される。通信される情報は、ベースポインタ（ＳＰ、ＭＰ、ＩＰ、ＯＰ）の現在位置、メモリ（状態、スタック、入力、出力）のコンテンツ、又はそのメモリのサブレンジ、或いはメモリの現在利用状態である。
診断及びデバッギングをサポートするために、実行可能なフローゲートコードをホストから所与のタイルのランタイムシステムに送信することができる。ランタイムシステムは、このコードをそのプログラムメモリへロードし、そしてそれを実行して、デバッギングセッションをサポートする。これは、フローロジックハードウェアを再指定又は再スタートせずに行うことができる。
【００７１】
当業者であれば、フローロジックは、システム・オン・チップ実施のためのデジタルシステムを記述する一般的な方法でないことに気付くであろう。その注目に値する特質の幾つかは、次のものを含む。
１．デザイン捕捉、検証及び分析のためのアブストラクションのレベルを高める。実施の融通性を許すために、異なるレベルのデザイン表現の間でサイクル精度を維持することが要求されない。
２．デザイン補足のより高いレベルにおいて、任意の組み合せロジック指向のシステムを効率的にサポートすることが必要と思われない。
３．フローロジックを使用して設計されるシステムの性能は、シミュレーションに使用されるワークロードの混合に依存する。
４．フローロジックデザインの機能及び性能は、主として帯域巾に制約のあるネットワークに広がるシステムでは効率的に実施されない。フローロジックは、フリットベースの通信で帯域巾オーバープロビジョンオンチップインテリジェントメモリにおいて実施するのが最適である。
【００７２】
フローロジックは、フローロジックレベルにおける量的振舞いが物理的実施へ変換されるときにその動揺が最小であるという仮定に基づいている。
【００７３】
上述した実施形態は、処理システムデザイン及びアーキテクチャーのためのメモリ中心の解決策と、この独特の処理システムデザインに対する設計、合成、配置及びルーティング技術のためのフローロジック言語とを提供する。フローロジック言語の用語は、理解を容易にするために、あるオブジェクト指向の用語と類似とした。例えば、フローゲートは、ファンクション、手順又はタスクと考えることができ、一方、フローモジュールは、オブジェクト指向のプログラミングにおけるオブジェクトと類似でよい。信号は、メッセージ又はパケットと称されてもよい。これらの類似体は、説明の目的で使用されるが、ここに述べる実施形態とそれに対応する類似体との間には著しい相違があることが明らかであろう。
【００７４】
慣習的なプロセスは、物理的なメモリを処理コアから押し離すためにバーチャルメモリの観念を組み込んでいる。これを行なうために、アキュムレータ、レジスタ及びキャッシュハイアラーキーを導入する。上述した実施形態は、処理コア（１つ又は複数）を物理的コア内に直接合体することも包含する。更に、上述した実施形態におけるデータ経路は、慣習的なプロセッサアーキテクチャー内のデータ経路とは著しく異なる。
【００７５】
本発明は、幾つかの実施形態に関して以上に説明した。当業者であれば、本発明の明細書及びその実施から、本発明の他の実施形態が明らかとなろう。上述した実施形態及び好ましい特徴は、例示に過ぎず、本発明は、特許請求の範囲により限定される。
【００７６】
前記実施形態を銘記した上で、本発明は、コンピュータシステムに記憶されたデータを伴う種々のコンピュータ実施オペレーションを使用できることを理解されたい。これらのオペレーションは、物理量の物理的操作を必要とするものである。通常、必ずしもそうでないが、これらの量は、記憶、転送、合成、比較、及びその他操作することのできる電気信号又は磁気信号の形態をとる。更に、行なわれる操作は、発生、識別、決定又は比較のような用語でしばしば示される。
【００７７】
本発明の一部分を形成するここに述べたオペレーションは、いずれも、有用なマシンオペレーションである。本発明は、これらのオペレーションを遂行するためのデバイス又は装置にも係る。装置は、必要な目的のために特に構成されてもよいし、或いは記憶されたコンピュータプログラムにより選択的にアクチベートされ又は構成される汎用コンピュータでもよい。特に、種々の汎用コンピュータが、ここに示す教示に基づいて書かれたコンピュータプログラムと共に使用されてもよいし、或いは必要なオペレーションを遂行するための更に特殊な装置を構成するのが更に便利である。
【００７８】
又、本発明は、コンピュータ読み取り可能なメディアにおけるコンピュータ読み取り可能なコードとして実施することもできる。コンピュータ読み取り可能なメディアは、コンピュータシステムによりその後に読み取ることのできるデータを記憶できる任意のデータ記憶装置である。コンピュータ読み取り可能なメディアは、例えば、ハードドライブ、ネットワークアタッチ型記憶装置（ＮＡＳ）、リードオンリメモリ、ランダムアクセスメモリ、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、磁気テープ、電磁波キャリア、並びに他の光学的及び非光学的データ記憶装置を含む。又、コンピュータ読み取り可能なメディアは、コンピュータ読み取り可能なコードを分布形態で記憶して実行するように、ネットワーク結合されたコンピュータシステムにわたって分布させることができる。
【００７９】
以上、本発明は、明確に理解するために詳細に説明したが、特許請求の範囲内で、ある程度の変更や修正がなされ得ることが明らかであろう。従って、ここに述べた実施形態は、単なる例示に過ぎず、これに限定されるものではなく、又、本発明は、ここに述べた細部に限定されず、特許請求の範囲及びその等効物の中で変更することができる。特許請求の範囲において、要素及び／又はステップは、特に指示のない限り、特定のオペレーション順序を暗示するものではない。
【図面の簡単な説明】
【００８０】
【図１】本発明の一実施形態によるフローモジュールの簡単な高レベル概略図である。
【図２】本発明の一実施形態によるフローロジックシステムの別の構造図である。
【図３】本発明の一実施形態によるフローモジュールを実行するためのアーキテクチャーを示す簡単な図である。
【図４】本発明の一実施形態により幾つかのフローモジュールを１つの総構造体へ集合化する能力を示す簡単な図である。
【図５】本発明の一実施形態によるバーチャルプロセッサの対応セットをサポートするフロータイルを示す高レベル概略図である。
【図６】本発明の一実施形態によるフローロジックマシンのアーキテクチャーを示す高レベル概略図である。
【図７】本発明の一実施形態によるフローロジックマシン内のデータフローを示す簡単な図である。
【図８】本発明の一実施形態によりフロータイルに対する外部装置とインターフェイスするためのアダプタを有するフロータイルを示す簡単な図である。
【図９】本発明の一実施形態によるフロータイルの計算要素のデータ経路を示す簡単な図である。
【図１０】本発明の一実施形態によりメモリ区画と、図９の計算要素と、切り替え要素との間の関係を示す簡単な図である。
【図１１】本発明の一実施形態による構造的に構成可能なイン・メモリ処理アレーの環境において図９及び１０の計算要素と図１０の切り替え要素とのトポロジー位置を更に示す図である。
【図１２】本発明の一実施形態による計算要素のアーキテクチャーモデルを示す図である。
【図１３】本発明の一実施形態によるスタックメモリを例示する簡単な図である。
【図１４】本発明の一実施形態による計算要素のインストラクションセットアーキテクチャーを示す図である。
【図１５】本発明の一実施形態による演算論理ユニット（ＡＬＵ）への拡張としてメモリ拡張インストラクションを更に示す図である。
【図１６】本発明の一実施形態により２つの次元に沿ってフロータイルをタイル配列することにより拡張可能な形態で構成されたイン・メモリ処理ダイを示す簡単な図である。
【図１７】本発明の一実施形態によりここに述べるデバイスの１つ以上のインスタンスが１つ以上の相手ダイとインターフェイスされるシステム・イン・パッケージ（ＳＩＰ）デバイスを示す簡単な図である。
【図１８】本発明の一実施形態によるビットセルの概略図である。
【図１９】本発明の一実施形態によるビットライン配列の概略図である。
【図２０】本発明の一実施形態によりメモリ記憶セルの多レベルアレーを有する半導体回路デバイスを構成しそしてプログラミングするための方法オペレーションを示すフローチャートである。
【図１】
2009505171.tif 000003
【図２】
2009505171.tif 000004
【図３】
2009505171.tif 000005
【図４】
2009505171.tif 000006
【図５】
2009505171.tif 000007
【図６】
2009505171.tif 000008
【図７】
2009505171.tif 000009
【図８】
2009505171.tif 000010
【図９】
2009505171.tif 000011
【図１０】
2009505171.tif 000012
【図１１】
2009505171.tif 000013
【図１２】
2009505171.tif 000014
【図１３】
2009505171.tif 000015
【図１４】
2009505171.tif 000016
【図１５】
2009505171.tif 000017
【図１６】
2009505171.tif 000018
【図１７】
2009505171.tif 000019
【図１８Ａ】
2009505171.tif 000020
【図１８Ｂ】
2009505171.tif 000021
【図１９】
2009505171.tif 000022
【図２０】
2009505171.tif 000023