(57)【要約】【課題】リアルタイムな信号処理及び更新のためのマイクロプロセッサ技術【解決手段】発明は、様々なプログラムアプリケーションのためのソフトウェア計算命令に適応するための柔軟なデータパイプライン構造であって、プロセッサに予めロードされたアプリケーションプログラム内の命令シーケンスに基づいて順番及び長さをクロックサイクルごとの速さで変化させる内部パイプラインステージを伴うプログラマブル埋め込みプロセッサを有するデータパイプライン構造にあり、プロセッサは、上記命令に応じて複数の数学的実行ユニットとメモリユニットとを選択的に且つ柔軟に相互に接続するデータスイッチマトリックスを含み、実行ユニットは、マルチビットの算術演算及び論理演算を異なる精度で且つマルチレベル階層型アーキテクチャ構造で実施するように設定可能である。【選択図】図３
2011522317.tif 000002
【特許請求の範囲】
【請求項１】
様々なアプリケーションプログラムのためのソフトウェア計算命令に適応するための柔軟なデータパイプライン構造であって、
プロセッサに予めロードされたアプリケーションプログラム内の命令シーケンスに基づいてクロックサイクルごとの速さで順番及び長さを変化させる内部パイプラインステージを伴うプログラマブル埋め込みプロセッサを有し、
プロセッサは、前記命令に応じて複数の数学的実行ユニットとメモリユニットとを選択的に且つ柔軟に相互に接続するデータスイッチマトリックスを含み、
実行ユニットは、マルチビット算術演算及び論理演算を異なる精度で且つマルチレベル階層型アーキテクチャ構造で実施するように設定可能であるデータパイプライン構造。
【請求項２】
請求項１に記載のデータパイプライン構造であって、
スイッチマトリックスは、２つのユニット間の任意の許容接続によるフルアクセススイッチングを可能にするデータパイプライン構造。
【請求項３】
請求項２に記載のデータパイプライン構造であって、
数学的実行ユニットは、実行時に、８ビット、１６ビット、３２ビット、及び／又は８ビットのその他の倍数の、算術演算及び論理演算を実施するようにプログラムされ、実施される演算に応じて、実行ユニット内部の論理回路は、命令シーケンスに基づいて、クロックサイクルごとに、並列演算を実施するために独立したユニットに分割されるか、又は直列演算を実施するために接続したユニットとして用意されるか、又はより大規模な演算を階層型構造で実施するために統合されて（１つ又は複数の）更に大きなユニットに形成されるか、のいずれかであるように設定されるデータパイプライン構造。
【請求項４】
請求項３に記載のデータパイプライン構造であって、
各実行ユニットは、合計で２n個の８×８ＡＬＵ及び／又は８×８乗算器を含み、各８×８ＡＬＵ又は８×８乗算器は、その機能性を制御する対応する制御レジスタを有し、実行ユニット全体が一レベルずつ重なるように構成され、ｎが偶数であるときは（８×２n/2）×（８×２n/2）個のユニットを、ｎが奇数であるときは（８×２(n-1)/2）×（８×２(n+1)/2）個のユニットを形成するべく合計で（ｎ＋１）のレベルを有するように、各８×１６ユニットは、２つの８×８ＡＬＵ又は８×８乗算器を、８×８乗算結果に基づいて８×１６乗算結果を計算するための専用の回路ブロックによって相互に接続することによって形成され、各１６×１６ユニットは、２つの８×１６ユニットを、８×１６乗算結果に基づいて１６×１６乗算結果を計算するための専用の回路ブロックによって相互に接続することによって形成されるデータパイプライン構造。
【請求項５】
請求項４に記載のデータパイプライン構造であって、
８×８ＡＬＵは、１つのクロックサイクル内で以下の２つの機能：
●  結果を左又は右に０〜７ビットシフト又は回転される、加算演算、減算演算、又は論理演算であって、各層が、
○層１：演算無し
○  層２：加算演算、減算演算、ビット単位の論理演算、又は設定に応じて演算無し
○  層３：左に１ビットシフト、又は設定に応じて演算無し
○  層４：左に２ビットシフト、又は設定に応じて演算無し
○  層５：左に４ビットシフト、又は設定に応じて演算無し
○  層６：右に１ビットシフト、又は設定に応じて演算無し
○  層７：右に２ビットシフト、又は設定に応じて演算無し
○  層８：右に４ビットシフト、又は設定に応じて演算無し
を実施する、演算、並びに
●  ８ビット×８ビット乗算であって、各層が、
○  層１：８ビット入力と１ビット入力とのビット単位の論理ＡＮＤ
○  層２〜８の各層：８ビット入力と１ビット入力とのビット単位の論理ＡＮＤに、８ビットの加算が続き、更に１ビットの右が続き、これらは全て、８ビット×８ビット乗算における繰り返しステップの１つを完了させること、
を実施する、演算、
のうちの１つを実施するようにプログラムされた８層の回路系を含むデータパイプライン構造。
【請求項６】
請求項４に記載のデータパイプライン構造であって、
各実行ユニットは、シフト又は回転を実施するための階層型構造を用い、シフト又は回転のための構造全体が一レベルずつ重なるように構成され、ｎ個の８×８ＡＬＵを伴う８ｎビットのシフタを形成するように、８×１６ＡＬＵにおける各１６ビットシフト／回転構造は、８×８ＡＬＵにおける２つの８ビットシフト／回転構造を追加のマルチプレクサによって相互に接続することによって形成され、１６×１６ＡＬＵにおける各３２ビットシフト／回転構造は、８×１６ＡＬＵにおける２つの１６ビットシフト／回転構造を追加のマルチプレクサによって相互に接続することによって形成されるデータパイプライン構造。
【請求項７】
請求項４に記載のデータパイプライン構造であって、
実行ユニット全体は、複数の階層レベルを含み、一レベルにある各ユニットは、下のレベルにある２つのサブユニットと追加の回路系とによって構成されるデータパイプライン構造。
【請求項８】
アプリケーションプログラム内の命令シーケンスに基づいてクロックサイクルごとの速さで順番及び長さを変化させる内部パイプラインステージを伴うプログラマブル埋め込みプロセッサであって、
前記命令に応じて複数の数学的実行ユニットとメモリユニットとを選択的に且つ柔軟に相互に接続するデータスイッチマトリックスも併せて有し、
実行ユニットは、マルチビット算術演算及び論理演算を異なる精度で且つマルチレベル階層型アーキテクチャ構造で実施するように設定可能であるプロセッサ。
【請求項９】
請求項８に記載のプロセッサであって、
スイッチマトリックスは、２つのユニット間の任意の許容接続によるフルアクセススイッチングを可能にするプロセッサ。
【請求項１０】
請求項８に記載のプロセッサ構造であって、
数学的実行ユニットは、実行時に、８ビット、１６ビット、３２ビット、及び／又は８ビットのその他の倍数の、算術演算及び論理演算を実施するようにプログラムされ、実施される演算に応じて、実行ユニット内部の論理回路は、命令シーケンスに基づいて、クロックサイクルごとに、並列演算を実施するために独立したユニットに分割されるか、又は直列演算を実施するために接続したユニットとして用意されるか、又はより大規模な演算を階層型構造で実施するために統合されて（１つ又は複数の）更に大きなユニットに形成されるか、のいずれかであるように設定されるプロセッサ構造。
【請求項１１】
請求項１０に記載のプロセッサ構造であって、
各実行ユニットは、合計で２n個の８×８ＡＬＵ及び／又は８×８乗算器を含み、各８×８ＡＬＵ又は８×８乗算器は、その機能性を制御する対応する制御レジスタを有し、前記実行ユニット全体が一レベルずつ重なるように構成され、ｎが偶数であるときは（８×２n/2）×（８×２n/2）個のユニットを、ｎが奇数であるときは（８×２(n-1)/2）×（８×２(n+1)/2）個のユニットを形成するべく合計で（ｎ＋１）のレベルを有するように、各８×１６ユニットは、２つの８×８ＡＬＵ又は８×８乗算器を、８×８乗算結果に基づいて８×１６乗算結果を計算するための専用の回路ブロックによって相互に接続することによって形成され、各１６×１６ユニットは、２つの８×１６ユニットを、８×１６乗算結果に基づいて１６×１６乗算結果を計算するための専用の回路ブロックによって相互に接続することによって形成されるプロセッサ構造。
【請求項１２】
請求項１１に記載のプロセッサ構造であって、
８×８ＡＬＵは、１つのクロックサイクル内で以下の２つの機能：
●  結果を左又は右に０〜７ビットシフト又は回転される、加算演算、減算演算、又は論理演算であって、各層が、
○  層１：演算無し
○  層２：加算演算、減算演算、ビット単位の論理演算、又は設定に応じて演算無し
○  層３：左に１ビットシフト、又は設定に応じて演算無し
○  層４：左に２ビットシフト、又は設定に応じて演算無し
○  層５：左に４ビットシフト、又は設定に応じて演算無し
○  層６：右に１ビットシフト、又は設定に応じて演算無し
○  層７：右に２ビットシフト、又は設定に応じて演算無し
○  層８：右に４ビットシフト、又は設定に応じて演算無し
を実施する、演算、並びに
●  ８ビット×８ビット乗算であって、各層が、
○  層１：８ビット入力と１ビット入力とのビット単位の論理ＡＮＤ
○  層２〜８の各層：８ビット入力と１ビット入力とのビット単位の論理ＡＮＤに、８ビットの加算が続き、更に１ビットの右が続き、これらは全て、８ビット×８ビット乗算における繰り返しステップの１つを完了させること、
を実施する、演算、
のうちの１つを実施するようにプログラムされた８層の回路系を含むプロセッサ構造。
【請求項１３】
請求項１１に記載のプロセッサ構造であって、
各実行ユニットは、シフト又は回転を実施するための階層型構造を用い、シフト又は回転のための構造全体が一レベルずつ重なるように構成され、ｎ個の８×８ＡＬＵを伴う８ｎビットのシフタを形成するように、８×１６ＡＬＵにおける各１６ビットシフト／回転構造は、８×８ＡＬＵにおける２つの８ビットシフト／回転構造を追加のマルチプレクサによって相互に接続することによって形成され、１６×１６ＡＬＵにおける各３２ビットシフト／回転構造は、８×１６ＡＬＵにおける２つの１６ビットシフト／回転構造を追加のマルチプレクサによって相互に接続することによって形成されるプロセッサ構造。
【請求項１４】
請求項１１に記載のデータプロセッサ構造であって、
実行ユニット全体は、複数の階層レベルを含み、一レベルにある各ユニットは、下のレベルにある２つのサブユニットと追加の回路系とによって構成される、データプロセッサ構造。
【請求項１５】
様々なアプリケーションプログラムのためのソフトウェアアルゴリズムに適応する柔軟なデータパイプライン方法であって、
プロセッサに予めロードされたアプリケーションプログラム内の命令シーケンスに基づいてクロックサイクルごとの速さで順番及び長さを変化させる内部パイプラインステージを伴うプログラマブル埋め込みプロセッサをプログラムすることと、
前記命令に応じて複数の数学的実行ユニットとメモリユニットとを相互に接続するために選択的に且つ柔軟にマトリックススイッチングすることと、
マルチビット算術演算及び論理演算を異なる精度で実施するように実行ユニットを設定することと、
所望のメモリアドレッシングモードで且つマルチレベル階層方式でメモリ読み出し及びメモリ書き込みを実施するようにメモリユニットを設定することと、
を備える方法。
【請求項１６】
請求項１５に記載の方法であって、
スイッチングは、２つのユニット間の任意の許容接続によるフルアクセススイッチングを可能にする方法。
【請求項１７】
請求項１５に記載の方法であって、
数学的実行ユニットは、実行時に、８ビット、１６ビット、３２ビット、及び／又は８ビットのその他の倍数の、算術演算及び論理演算を実施するようにプログラムされ、実施される演算に応じて、実行ユニット内部の論理回路は、命令シーケンスに基づいて、クロックサイクルごとに、並列演算を実施するために独立したユニットに分割されるか、又は直列演算を実施するために接続したユニットとして用意されるか、又はより大規模な演算を階層型構造で実施するために統合されて（１つ又は複数の）更に大きなユニットに形成されるか、のいずれかであるように設定される方法。
【請求項１８】
請求項１７に記載の方法であって、
各実行ユニットは、合計で２n個の８×８ＡＬＵ及び／又は８×８乗算器を含み、各８×８ＡＬＵ又は８×８乗算器は、その機能性を制御する対応する制御レジスタを有し、前記実行ユニット全体が一レベルずつ重なるように構成され、ｎが偶数であるときは（８×２n/2）×（８×２n/2）個のユニットを、ｎが奇数であるときは（８×２(n-1)/2）×（８×２(n+1)/2）個のユニットを形成するべく合計で（ｎ＋１）のレベルを有するように、各８×１６ユニットは、２つの８×８ＡＬＵ又は８×８乗算器を、８×８乗算結果に基づいて８×１６乗算結果を計算するための専用の回路ブロックによって相互に接続することによって形成され、各１６×１６ユニットは、２つの８×１６ユニットを、８×１６乗算結果に基づいて１６×１６乗算結果を計算するための専用の回路ブロックによって相互に接続することによって形成される方法。
【請求項１９】
請求項１８に記載の方法であって、
８×８ＡＬＵは、１つのクロックサイクル内で以下の２つの機能：
●  結果を左又は右に０〜７ビットシフト又は回転される、加算演算、減算演算、又は論理演算であって、各層が、
○  層１：演算無し
○  層２：加算演算、減算演算、ビット単位の論理演算、又は設定に応じて演算無し
○  層３：左に１ビットシフト、又は設定に応じて演算無し
○  層４：左に２ビットシフト、又は設定に応じて演算無し
○  層５：左に４ビットシフト、又は設定に応じて演算無し
○  層６：右に１ビットシフト、又は設定に応じて演算無し
○  層７：右に２ビットシフト、又は設定に応じて演算無し
○  層８：右に４ビットシフト、又は設定に応じて演算無し
を実施する、演算、並びに
●  ８ビット×８ビット乗算であって、各層が、
○  層１：８ビット入力と１ビット入力とのビット単位の論理ＡＮＤ
○  層２〜８の各層：８ビット入力と１ビット入力とのビット単位の論理ＡＮＤに、８ビットの加算が続き、更に１ビットの右が続き、これらは全て、８ビット×８ビット乗算における繰り返しステップの１つを完了させること、
を実施する演算、
のうちの１つを実施するようにプログラムされた８層の回路系を含む方法。
【請求項２０】
請求項１８に記載の方法であって、
各実行ユニットは、シフト又は回転を実施するための階層型構造を用い、シフト又は回転のための構造全体が一レベルずつ重なるように構成され、ｎ個の８×８ＡＬＵを伴う８ｎビットのシフタを形成するように、８×１６ＡＬＵにおける各１６ビットシフト／回転構造は、８×８ＡＬＵにおける２つの８ビットシフト／回転構造を追加のマルチプレクサによって相互に接続することによって形成され、１６×１６ＡＬＵにおける各３２ビットシフト／回転構造は、８×１６ＡＬＵにおける２つの１６ビットシフト／回転構造を追加のマルチプレクサによって相互に接続することによって形成される方法。
【請求項２１】
請求項１８に記載の方法であって、
実行ユニット全体は、複数の階層レベルを含み、一レベルにある各ユニットは、下のレベルにある２つのサブユニットと追加の回路系とによって構成される方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、全体として、リアルタイムな信号処理及び更新のためのマイクロプロセッサ技術に関し、より詳細には、同時係属米国特許出願第１１／９７３，１８４号に記載されるようなスイッチ制御式のプログラマブルプロセッサ設定と柔軟なパイプライン及び並列処理とによるリアルタイムな信号処理に限定的ではないがとりわけ適している、プログラマブルマイクロプロセッサコア動作及び構造に関する。本発明は、異なる（マルチビット）精度で異なる算術演算、計算演算、及び論理演算を実施するために発明のプログラムを新規の階層型構造で有する計算実行ユニット（ＥＵ）における特定の改良に大きく関係する。
【背景技術】
【０００２】
上記同時係属出願に説明されるように、複数のプログラムアプリケーションを一デバイス（携帯電話機など）内に集約させるためのシステムは、そのような一デバイス内において複数の異なるリアルタイム信号処理技術及び制御処理能力を扱う必要があり、上記同時係属出願の新規のプログラマブルマイクロプロセッサコア及び柔軟なパイプライン信号処理アーキテクチャに役立つ。これらは、全体として、様々なアプリケーションの実質あらゆるタイプのソフトウェアアルゴリズムセットに適応することができる柔軟なデータパイプラインアーキテクチャを伴うものとして説明されてよく、該アーキテクチャは、対応するプロセッサ設定を確立する様々なアプリケーション命令シーケンスに応じて順番及びサイズを機能要素間のスイッチング接続を通じて可変である再設定可能なパイプラインステージを伴うプログラマブルプロセッサを有し、多様な個々のアプリケーションに特に適合しており、機能要素は、並列で且つ柔軟な動的な方式でスイッチングマトリックスを通じて通信する。
【０００３】
本発明は、実行ユニットの、好ましいマルチレベル階層型アーキテクチャ、及びそれを含むパイプラインステージに取り組む。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明の目的は、したがって、以下で説明される現行の及び前世代のマイクロプロセッサにおけるパイプライン動作の限界に影響されず、尚且つ上記同時係属特許出願の柔軟なプログラマブルデータパイプラインアーキテクチャの動作に限定的ではないがとりわけ特に適している、改良された新規の設定可能マイクロプロセッサ技術及び構造を提供することにある。
【０００５】
本発明の更なる目的は、改良された新規の柔軟なデータパイプラインアーキテクチャ及びプログラマブルプロセッサを提供することにあり、該プロセッサは、対応するプロセッサ設定を確立している様々なアプリケーション命令シーケンスに応じて再設定可能なパイプラインステージを伴い、様々なアプリケーションにおける異なるタイプの一般的動作に特別に適合するように機能要素間のスイッチング接続を伴い、機能要素は、好ましくは、動作中にリアルタイムで各命令セットに適応して設定されるスイッチによって、並列で且つ柔軟な動的な方式で通信する。
【０００６】
以下で、その他の及び更なる目的が説明され、添付の特許請求の範囲において、更に詳細に扱われる。
次に、添付の図面との関連で発明の説明が行われる。
【図面の簡単な説明】
【０００７】
【図１】図２Ａ、２Ｂ、及び２Ｃに例示する実行ユニットの計算ステージを使用する、先行技術としての現在プロセッサコアアーキテクチャを示した機能ブロック図である。
【図２Ａ】データ幅（すなわち精度）を固定された固定数のパイプラインステージとして実行ユニットの計算ステージを例示する説明図である。
【図２Ｂ】データ幅（すなわち精度）を固定された固定数のパイプラインステージとして実行ユニットの計算ステージを例示する説明図である。
【図２Ｃ】データ幅（すなわち精度）を固定された固定数のパイプラインステージとして実行ユニットの計算ステージを例示する説明図である。
【図３】上記同時係属出願に記載されるような、アプリケーションプログラムのヴァリエーションに基づいて幅、長さ、及び形状を可変である設定可能なデータパイプラインを伴う一般的コアアーキテクチャの説明図である。
【図４】本発明の新規な階層型実行ユニット概念の概略ブロック図である。
【図５】発明の実行ユニットのマルチレベル（ここでは３レベルとして示される）実装形態を示す説明図である。
【図６】Ｎ×Ｎ実行ユニットの接続によるＮ×２Ｎユニットの形成及び後者の接続による２Ｎ×２Ｎユニットの形成をそれぞれ示したブロック回路図である。
【図７】Ｎ×Ｎ実行ユニットの接続によるＮ×２Ｎユニットの形成及び後者の接続による２Ｎ×２Ｎユニットの形成をそれぞれ示したブロック回路図である。
【図８】現在時点での典型的なプロセッサ内における８×８ＡＬＵの構造を示した説明図である。
【図９】本発明にしたがった８×８ＡＬＵの構造を図８に示した現在の構造と対照的に示した説明図である。
【図１０】回転機能付きの従来の８ビット及び１６ビットバレルシフタを示す説明図である。
【図１１】回転機能付きの従来の８ビット及び１６ビットバレルシフタを示す説明図である。
【図１２】本発明の８ビットシフト／回転構造を従来の１６ビットバレルシフタと対照的に示す説明図である。
【図１３】本発明の８ビットシフト／回転構造を従来の１６ビットバレルシフタと対照的に示す説明図である。
【図１４】発明の、２つのｎビットシフト＆回転構造の接続による２ｎビットシフト／回転構造の形成を示した説明図である。
【発明を実施するための形態】
【０００８】
広範な新規のコアマイクロプロセッサの観点から見ると、発明は、様々なプログラムアプリケーションのためのソフトウェア計算命令に適応するための柔軟なデータパイプライン構造であって、様々なプログラムアプリケーション命令に応じて順番及び長さを変化させる再設定可能なパイプラインステージを伴うプログラマブル埋め込みプロセッサを有するデータパイプライン構造であり、プロセッサは、上記命令に応じて複数の数学的実行ユニットとメモリユニットとを選択的に且つ柔軟に相互に接続するデータスイッチマトリックスを含み、実行ユニットは、マルチビット算術演算及び論理回路演算を異なる精度で且つマルチレベル階層型アーキテクチャ構造で実施するようにプログラム可能である。
【０００９】
プログラマブルプロセッサ全体及び柔軟なパイプラインシステムアーキテクチャ全体の観点から見ると、発明は、８ビット、１６ビット、及び／又は３２ビットの算術演算及び論理回路演算を実施するようにクロックサイクルごとに数学的実行ユニットが設定されるプロセッサ構造を採用し、実施される演算に応じて、実行ユニット内部の論理回路は、並列演算を実施するために独立したユニットに分割されるか、又は直列演算を実施するために接続したユニットとして用意されるか、又はより大規模な演算を階層型構造で実施するために統合されて（１つ又は複数の）更に大きなユニットに形成されるか、のいずれかであるようにプログラムされる。
【００１０】
以下で、発明の好ましい設計及び最良の実施形態が詳述される。
固定のパイプラインステージ及び固定のデータ幅（すなわち精度）を使用する、前述された典型的な先行技術の及び現在使用されている既存のプロセッサアーキテクチャの例が、図１に示されている。そして、そこで使用される３つの典型的な計算ステージの例が、それぞれ図２Ａ、図２Ｂ、及び図２Ｃに示されている。
【００１１】
先に言及された図３について、図３には、上記同時係属出願と同じ一般的なシステムが示されており、該システムは、実行ユニット（ＥＵ、図３の２）と、メモリユニット（ＭＵ、図３の４）と、スイッチマトリックスユニット（図３の３）とで形成され、長さ、幅、及び形状を可変である、柔軟なデータパイプラインと、該データパイプラインの制御メカニズムを管理するための制御ユニット（図３の１）と、を伴うプロセッサを実装している。
【００１２】
上記同時係属出願に記載され、これらの目的のために本発明で使用される、プロセッサコアアーキテクチャは、関わりのある異なるタイプの計算ニーズに合わせて最適化されえる高度に設定可能な内部構造を有する。これらは、設定可能な数のパイプラインステージと、異なるパイプラインステージ間の相互接続と、逐次及び並列の両方の異なるタイプの計算を実施するようにセットアップすることができる設定可能な計算実行ユニット（ＥＵ）と、スイッチマトリックスユニットを通したメモリユニット（ＭＵ）と実行ユニット（ＥＵ）との間の設定可能な相互接続とを含み、設定可能なメモリユニットは、メモリバンク内のデータへの異なるアクセス方法を提供するようにセットアップされる。上記同時係属出願及び本明細書で教示されるプロセッサコアは、基本的に、３つの要素、すなわち上で言及された実行ユニット（ＥＵ、図３の２）と、メモリユニット（ＭＵ、図４の４）と、スイッチマトリックスユニット（図３の３）とで構成され、新規の柔軟なプロセッサコアアーキテクチャを達成するために、メモリユニットから実行ユニットへの柔軟な相互接続が提供される。
【００１３】
本発明は、主に、今日の現マイクロプロセッサと異なり高度に設定可能に作成された、このような実行ユニットＥＵアーキテクチャに関係する。これは、８ビット、１６ビット、又は３２ビットの算術演算及び論理演算を実施するように設定することができ、実施される演算に応じて、実行ユニット内部の論理回路は、並列演算を実施するために独立したユニットに分割される、又は直列演算を実施するために接続したユニットとして用意される、又はより大規模な計算演算を実施するために統合されて更に大きなユニットに形成されるか、のいずれかであることができる。本発明にしたがうと、これらの実行ユニット論理回路は、階層型構造に構成され、ハードウェアの可用性及び入出力の制約に左右される。発明の実行ユニットは、異なる精度（すなわち８ビット、１６ビット、及び３２ビット）で異なる算術演算、計算演算、及び論理演算を実施するようにプログラムすることができる。これは、プロセッサが固定幅の計算精度を有する従来および現時点のマイクロプロセッサ動作と大きく異なる。これは、例えば、３２ビットプロセッサ、１６ビットプロセッサ、又は８ビットプロセッサのいずれかである。高精度プロセッサ内部のハードウェアは、低精度の計算を実施するようにプログラムされたときは、十分に活用されない。例えば、３２ビットプロセッサにおける高ビット計算のためのハードウェアは、８ビット計算が実施されているときは使用されない。本発明の実行ユニットのアーキテクチャは、更に、所定の実行ユニットによる高精度計算と、同じハードウェアによる多数の異なる低精度計算との間でユーザが切り替えを行うことを可能にする。例えば、３２×３２乗算は、実際に、同じハードウェアからの同様のハードウェア利用による１６の８×８ビット演算を有することができ、デバイスは、両方の計算に再利用することができる。これは、３２ビットの入力を８ビットのチャンクに分け、作業を小部分に分割し、次いで１つ又は複数のステップにおける中間結果を組み合わせて最終結果を得ることによってなされえる。
【００１４】
パイプラインを始めから終わりまでロードするのに十分な計算をアプリケーションプログラム内に想定すると、これらの計算が何度か実施されたときに、多数の低精度計算（例えば１６の８×８）のスループットと、一度の高精度計算（例えば一度の３２×３２）のスループットとは同じである。現在のマイクロプロセッサは、特定の精度の計算のみに適応して設計されるので、これは、先行技術のマイクロプロセッサ動作に勝る重大な利点だと考えられる。
【００１５】
現在のプロセッサにおけるパイプラインは、実際、パイプライン内において固定数の実行ステージを用いる。一方で、本発明のプロセッサでは、実行ユニット内部に、そのユニットに対してユーザが何を選択するかに応じて可変数のステージがある。本発明は、実行ユニット内部のパイプラインステージを、パイプライン内部のデータパスの幅を８ビット、１６ビット、又は３２ビットのように可変にしてセットアップする。パイプラインの形状も、可変にされる。それは、現在のマイクロプロセッサ構造とは対照的に、実行ユニット内部で幾つのステージが使用されるかに応じて大幅に異なる方式で実行ユニット内部を横断し、一方の隅からどこか中間を経て反対側の隅に至ることができる。このようにすると、データは、本発明の動作において、ハードウェア容量の限界に達するまで実行ユニットの外側から実行ユニット内へ供給され、実行ユニット内部において並列に又は直列に多くの計算機能を実施し、出力として実行ユニットから出て、何であれ所望される総合的なユーザ柔軟性を数学的計算の単位で可能にする。これは、固定数の実行ステージにおいて１つ又は複数の固定精度計算を行うことによって最適化される既存及び現在のマイクロプロセッサ実行ユニットと対照的である。
【００１６】
本発明におけるデータパイプラインが可能にする計算結果に匹敵する結果をこのような現在のマイクロプロセッサが達成しようとすると、実際、入力データのブロックに対する並列又は直列の演算のために何度もパイプラインを横断する必要があった。実行ユニットを横断するたびに、１つの命令が必要とされるので、現在のマイクロプロセッサは、実行ユニットへの対応する複数の命令に応じて何度もパイプラインを横断することによって、実行ユニットに対する多量のデータの出入りを必要とする。
【００１７】
本発明では、しかしながら、入力データに対する並列又は直列のいずれかの演算のために、ひとたび特定の形状、データ幅、及びステージ数の実行ユニットがセットアップされると、その入力データのブロック全体に対する計算が全て終了するまで、これ以上新しい命令を送信する必要がないので、この問題は、本発明では存在しない。そして、新しい演算を行うには、構造を、すなわちデータ幅、形状、及びステージ数を変更することができる。これまでは、多くの異なる命令によってパイプラインステージを何度も通ることによって行う必要があったことが、本発明では、全ての入力データに対して実施される数学的な演算又は方程式に対応するたった１つの特定のパイプライン構造と１つの小さな命令シーケンスとによってなすことができる。これは、全計算に入る及び全計算を通るデータ、並びに終わりに出てくるデータの、どちらの観点からも大幅に効率的であるので、複数の横断が不要になる。
【００１８】
より詳細には、現在のマイクロプロセッサが、クロックサイクルごとに新しい命令を実行ユニットに供給する必要があるのに対し、本発明では、命令は、多くの異なるクロックサイクルにわたって実行ユニット内にとどまり、データのみが入って繰り返しを続ける。本発明は、したがって、極めて柔軟なアーキテクチャを形成し、高度に設定可能な実行ユニットをプロセッサコア内に提供する。プロセッサコアは、実行ユニット内部の論理回路によって、異なる精度の算術演算及び論理演算を実施可能であることができ、実行ユニット内の論理回路は、並列演算を実施するために独立したユニットに分割されるか、又は直列演算を実施するために接続したユニットとして用意されるか、又はこの新規の階層型構造によって、大規模な演算を実施するために統合されて大きなユニットに形成されるかのいずれかである。
【００１９】
このプロセッサは、上記同時係属出願で説明されるように、図３に数学的実行ユニットＥＸ1−ＥＸN（例えば、乗算器、加算器、シフタ、又はパイプライン乗算器）として示された、現ＲＩＳＣプロセッサなどで使用されるのと同じ計算的演算を実施することができる機能要素と、図３にＭＵ1−ＭＵNとして示された、関連の論理回路を伴うデータメモリバンクなどの前述のメモリユニットと、を有してよい。発明のプログラマブルプロセッサ内のこれらの要素は、パイプラインステージを固定されたプロセッサである従前のＲＩＳＣプロセッサとは根本的に異なる方式で、互いと通信する。その結果、このような従前のプロセッサ（図１、２Ａ、２Ｂ、及び２Ｃ）機能ユニットは、上記同時係属出願及び本発明の柔軟なパイプランとプログラマブルプロセッサとが持つ先述の利点と異なり、効率的に利用されないうえに益々複雑で高価になる。
【００２０】
同様の機能ユニットを一列に並べてパイプラインにする（図２Ａ、２Ｂ、及び２Ｃ）代わりに、本発明は、図３のスイッチマトリックスユニット３を用いることによって、特定のソフトウェアアプリケーション命令シーケンスに求められる特定のタスクに適応するように機能ユニットを接続する又はそのようなタスクに合わせて機能ユニットを設定する柔軟性を提供する。交差接続スイッチ３は、更に、異なるアプリケーションの異なるソフトウェアアルゴリズムにしたがって、一方の側の実行ユニットＥＸ1−ＥＸN（図３の２）ともう一方の側のメモリユニットＭＵ1−ＭＵN（図３の４）とを接続し、異なる構造に動的に設定する。
【００２１】
特定の命令シーケンス及びハードウェア可用性に基づく任意の特定の所定プログラムのためのコンパイラは、上記の同時係属出願で説明されるように、適切な時間シーケンスでマシン命令を生成してハードウェアユニットＥＸ及びＭＵを設定し、それらへのＤＭＡ（直接メモリアクセス）及びそれらの間の接続を提供する。
【００２２】
次に、本発明の好ましい形態における実行ユニットの全体アーキテクチャに言及すると、実行ユニットは、前述の階層型構造を有するものとして例示される。すなわち、制御ユニットは、階層形式でのアクセス制御論理及びプログラムＲＡＭを通じて実行ユニットを制御する。頻繁に使用される制御設定は、ストレージデバイスからプログラムＲＡＭ（図４）にロードすることができ、すると、制御ユニットは、１つのコマンド（すなわちＲＡＭロケーションｘにおける開始実行）を使用して、実行ユニットにおけるプログラム実行の開始を制御することができる。
【００２３】
本出願の図４における例示的な実行ユニットＥＵ基本構成ブロックは、８×８ＡＬＵ及び８×８乗算器である。各８×８ＡＬＵ（又は乗算器）は、その機能性を制御する対応する制御論理を有する。各８×１６ユニットは、２つの８×８ＡＬＵ又は２つの８×８乗算器を、８×８乗算結果に基づいて８×１６乗算結果を計算するための専用の回路ブロックによって相互に接続することによって形成される。同様に、各１６×１６ユニットは、２つの８×１６ユニットを、８×１６乗算結果に基づいて１６×１６乗算結果を計算するための専用の回路ブロックによって相互に接続することによって形成される。このように、本発明の実行ユニット全体は、一レベルずつ重なるように構成される。
【００２４】
図４の実行ユニットは、５つの異なる階層レベル、すなわちレベル１にある８×８ユニット、レベル２にある８×１６ユニット、レベル３にある１６×１６ユニット、レベル４にある１６×３２ユニット、及びレベル５にある３２×３２ユニットなどで見ることができる。一レベルにある各ユニットは、下のレベルにある２つのサブユニットに何らかの追加の回路系を伴って構成され、各ユニットは、ユニットの動作及びそのサブユニットの接続を設定するために、関連の制御レジスタの使用を有する。
【００２５】
上で論じられた図１及び図２Ａ〜２Ｃに示された現在の典型的プロセッサにおける計算ステージとは対照的に、図５は、本発明による高度に設定可能な実行ユニットを、３レベル実装形態の場合について示している。ただし、階層型構造アーキテクチャは、数多くのレベル（例えば４、５、６、７…）の実行ユニットを構成するために使用することができる。図５は、一般化された、２Ｎ×２Ｎ実行ユニットの３レベル実装形態を例示している。
【００２６】
更には、Ｎ×２Ｎ実行ユニットの出力が、２つのＮ×Ｎ実行ユニットの出力又はＮ×２Ｎ追加計算論理の出力のいずれかに接続可能であること、２Ｎ×２Ｎ実行ユニットの出力も、２つのＮ×２Ｎ実行ユニットの出力又は２Ｎ×２Ｎ追加計算論理の出力のいずれかに接続可能であること、及び破線の楕円で記された１’が、２Ｎ×２Ｎの乗算を実施するようにユニットを設定されたときのデータパイプラインステージを例示していることが、観察されるべきである。
【００２７】
Ｎ×２Ｎ実行ユニット及び２Ｎ×２Ｎ実行ユニットを形成する：
図６及び図７は、本発明にしたがって、２つのＮ×Ｎユニットをどのように接続してＮ×２Ｎユニットを形成するか、及び２つのＮ×２Ｎユニットをどのように接続して２Ｎ×２Ｎユニットを形成するかをそれぞれ示している。これらの方法は、一度に一レベルずつ階層型実行ユニットを構成するために、繰り返し使用することができる。（２つの８×８⇒８×１６、２つの８×１６⇒１６×１６、２つの１６×１６⇒１６×３２、２つの１６×３２⇒３２×３２など。）
【００２８】
以下の表１、２、３、及び４は、
●  より少ない高精度計算、又はより多い低精度計算を実施すること、及び
●  一方のユニットの出力を他方のユニットの入力に接続して直列計算用のデータパイプラインを形成すること、
を本発明が可能であるように実行ユニットを設定するための、図６及び図７の構造による適切な入力スイッチネットワークモード及び出力スイッチネットワークモードの動作を説明するために提示される。このように、本発明の、実行ユニット内部のデータパイプラインは、異なる長さ、幅、及び形状を有するように設定することができる。
【００２９】
【表１】
2011522317.tif 000003
【００３０】
【表２】
2011522317.tif 000004
【００３１】
【表３】
2011522317.tif 000005
【００３２】
【表４】
2011522317.tif 000006
【００３３】
８×８ＡＬＵ構造
図８は、現在時点で典型的なプロセッサにおける８×８ＡＬＵの構造であって、乗算用及び加算用に別々のハードウェアを有し、加算が実施された場合にのみ可能な結果シフトを伴う構造を示している。これに対し、図９は、本発明による８×８ＡＬＵの構造を示しており、ハードウェアは、ハードウェア利用を向上させるためにいずれの機能にも使用されるように、どちらかの機能に合わせて設定可能である。発明によるこの８×８ＡＬＵにおける層構造の機能性は、表５に説明されている。
【００３４】
【表５】
2011522317.tif 000007
【００３５】
現在のバレルタイプのビットシフト：
図１０及び図１１の流れ図は、それぞれ、回転付きの従来のバレルシフタの構造を示している。８ビットシフタが、３つの右層及び３つの左層の８ビット多重化を有する（図１０）一方で、１６ビットシフタは、４つの右層及び４つの左層の１６ビット多重化を有する（図１１）ので、現在のプロセッサでは、もし８ビット及び１６ビットの両方のシフトが求められる場合、別々のハードウェアブロックが必要である。
【００３６】
発明の新規のビットシフト：
従前の処理と異なり、発明は、更に、より高ビットのシフト／回転構造を作成するために、８ビットのシフト／回転構造を統合して１６ビットの構造を形成すること、及び１６ビットのシフト／回転構造を統合して３２ビットの構造を形成することなどを提供する。これらの構造は、所望のアプリケーションプログラムに基づいて低ビットのシフト／回転又は高ビットのシフト／回転のいずれかを実施するようにも設定することができる。
【００３７】
このような新規の構造の作成には、３つのステップが伴われる。
●  ステップ１：モジュールの出力としてビットをシフトアウトされる、図１２に示されるような従来のバレルシフト（シフトのみ、回転無し）を使用する。
●  ステップ２：図１３に示されるような８ビットのシフト／回転構造を作成する。
●  ステップ３：２つの８ビットのシフト／回転構造を接続し、図１４に示されるような１６ビットのシフト／回転構造を形成する。このような方法を繰り返し使用し、より高ビットのシフト／回転構造を形成する。
【００３８】
発明の、例示的で且つ好ましいデータパイプライン構造は、合計で２n個の８×８ＡＬＵ及び／又は８×８乗算器を含む実行ユニットを伴い、各８×８ＡＬＵ又は８×８乗算器は、その機能性を制御する対応する制御レジスタを有する。実行ユニット全体が一レベルずつ重なるように構成され、ｎが偶数であるときは（８×２n/2）×（８×２n/2）個のユニットを、ｎが奇数であるときは（８×２(n-1)/2）×（８×２(n+1)/2）個のユニットを形成するべく合計で（ｎ＋１）のレベルを有するように、各８×１６ユニットは、２つの８×８ＡＬＵ又は８×８乗算器を、８×８乗算結果に基づいて８×１６乗算結果を計算するための専用の回路ブロックによって相互に接続することによって形成され、各１６×１６ユニットは、２つの８×１６ユニットを、８×１６乗算結果に基づいて１６×１６乗算結果を計算するための専用の回路ブロックによって相互に接続することによって形成される。
【００３９】
８×８ＡＬＵ構造は、１つのクロックサイクル内で以下の２つの機能：
●  結果を左又は右に０〜７ビットシフト又は回転される、加算演算、減算演算、又は論理演算であって、各層が、
○  層１：演算無し
○  層２：加算演算、減算演算、ビット単位の論理演算、又は設定に応じて演算無し
○  層３：左に１ビットシフト、又は設定に応じて演算無し
○  層４：左に２ビットシフト、又は設定に応じて演算無し
○  層５：左に４ビットシフト、又は設定に応じて演算無し
○  層６：右に１ビットシフト、又は設定に応じて演算無し
○  層７：右に２ビットシフト、又は設定に応じて演算無し
○  層８：右に４ビットシフト、又は設定に応じて演算無し
を実施する、演算、並びに
●  ８ビット×８ビット乗算であって、各層が、
○  層１：８ビット入力と１ビット入力とのビット単位の論理ＡＮＤ
○  層２〜８の各層：８ビット入力と１ビット入力とのビット単位の論理ＡＮＤに、８ビットの加算が続き、更に１ビットの右が続き、これらは全て、８ビット×８ビット乗算における繰り返しステップの１つを完了させること、
を実施する、演算、
のうちの１つを実施するようにプログラムされた８層の回路系を含む。
【００４０】
このデータパイプライン構造では、各実行ユニットは、シフトまた他は回転を実施するための階層型構造を用いる（図１３及び図１４）。そして、シフト又は回転のための構造全体が一レベルずつ重なるように構成され、ｎ個の８×８ＡＬＵを伴う８ｎビットのシフタを形成するように、８×１６ＡＬＵにおける各１６ビットシフト／回転構造は、８×８ＡＬＵにおける２つの８ビットシフト／回転構造を追加のマルチプレクサによって相互に接続することによって形成され、１６×１６ＡＬＵにおける各３２ビットシフト／回転構造は、８×１６ＡＬＵにおける２つの１６ビットシフト／回転構造を追加のマルチプレクサによって相互に接続することによって形成される。
【００４１】
当業者ならば、更なる変更形態に想到すると考えられ、このような変更形態は、添付の特許請求の範囲に定められた発明の趣旨及び範囲に入ると見なされる。
【図１】
2011522317.tif 000008
【図２Ａ】
2011522317.tif 000009
【図２Ｂ】
2011522317.tif 000010
【図２Ｃ】
2011522317.tif 000011
【図３】
2011522317.tif 000012
【図４】
2011522317.tif 000013
【図５】
2011522317.tif 000014
【図６】
2011522317.tif 000015
【図７】
2011522317.tif 000016
【図８】
2011522317.tif 000017
【図９】
2011522317.tif 000018
【図１０】
2011522317.tif 000019
【図１１】
2011522317.tif 000020
【図１２】
2011522317.tif 000021
【図１３】
2011522317.tif 000022
【図１４】
2011522317.tif 000023
【国際調査報告】
2011522317.tif 000024
2011522317.tif 000025
2011522317.tif 000026