(57)【要約】【課題】外部システムに対するアナログ及びデジタル電気インタフェースを有するシングルチップ内蔵マイクロプロセッサを提供する。【解決手段】外部システムに対するアナログ及びデジタル電気インタフェースを備えたシングルチップ内蔵マイクロプロセッサを有する内蔵プロセッサシステム。新しいプロセッサコアは、プロセッサスレッド状態及び他の構成要素へのアクセスをモニタ及び制御するための監視制御と共に、複数の独立式及び従属式同時スレッドのパイプライン化された実行を使用する。このパイプラインは、選択されたパイプライン段階の種類と二重及び三重ポートメモリ技術の使用とを通じてメモリ又は周辺機器アクセス上の争いを選択的に回避することにより、複数スレッドの同時実行を可能にする。単一のプロセッサコアは、単一又は複数スレッドの制御下で、様々な組合せの１つ又は複数のデータストリーム上の１つ又は複数のインストラクションストリームを実行する。【選択図】図１
2004525468.tif 000002
【特許請求の範囲】
【請求項１】
入力／出力アプリケーションのためのプログラム可能シングルチップ内蔵プロセッサシステムであって、
（ａ）多段プロセッサパイプラインにセグメント化された共通実行論理を共有する少なくとも４つの並列で独立したアプリケーションスレッドにより作動可能であり、少なくとも２つの専用状態を有することができるモジュール式マルチビットマルチスレッドプロセッサコアと、
（ｂ）該プロセッサコア内のインストラクションセットを実行するための、該プロセッサコアと係合した論理機構と、
（ｃ）該プロセッサコアの状態を検査し、該プロセッサコアの作動を制御するための、前記プロセッサコアスレッドのうちの少なくとも１つによって制御された監視制御ユニットと、
（ｄ）前記インストラクションセット及び関連データを記憶して実行するためのメモリと、
（ｅ）前記プロセッサコアに出入りする入力／出力信号を伝送するための、該プロセッサコアと係合した周辺アダプタと、
を含むことを特徴とするシステム。
【請求項２】
前記プロセッサパイプラインは、インストラクション取出し論理段階、インストラクション復号化論理段階、マルチポートレジスタ読取り段階、アドレスモード論理段階、算術計算及びアドレス計算段階のための演算論理ユニット、マルチポートメモリ段階、分岐／待機論理段階、及びマルチポートレジスタ書込み段階のうちの少なくとも１つから構成されることを特徴とする請求項１に記載のシステム。
【請求項３】
前記プロセッサコアは、前記共通実行論理及び前記メモリを複製することにより、少なくとも２つのグループの独立スレッドをサポートすることを特徴とする請求項１に記載のシステム。
【請求項４】
特定のワードデータ形式を検出するための、前記インストラクションセットに実装された条件コード機構を更に含むことを特徴とする請求項１に記載のシステム。
【請求項５】
ワードの最下位バイトの値は、それが０から２５５の特定範囲内にあることが条件コードによって検出されることを特徴とする請求項４に記載のシステム。
【請求項６】
前記インストラクションセットは、各スレッドがそのスレッドアイデンティティを判断することを可能にするプロセッサインストラクションを含むことを特徴とする請求項１に記載のシステム。
【請求項７】
前記監視制御ユニットは、個々のマルチスレッドプロセッサの作動を開始、停止、及び変更する目的で、マルチスレッドプロセッサコアの作動状態を検査して解釈することができることを特徴とする請求項１に記載のシステム。
【請求項８】
前記周辺アダプタ及びシステムメモリへのマルチスレッドアクセスを制御するための、前記監視制御ユニットと係合したハードウエアセマフォーベクトルを更に含むことを特徴とする請求項７に記載のシステム。
【請求項９】
前記監視制御ユニットは、入力／出力インストラクションを使用することにより、前記プロセッサコアスレッドの各々によってアクセス及び制御することができることを特徴とする請求項１に記載のシステム。
【請求項１０】
前記制御用プロセッサコアスレッドは、プログラム可能であり、前記プロセッサコアスレッドのいずれかを含むことを特徴とする請求項９に記載のシステム。
【請求項１１】
前記制御用プロセッサコアスレッドは、複数インストラクション複数データ処理オペレーションが前記プロセッサコアスレッドによりサポート可能であるように、全体的なスレッド処理作動方法を再構成することができることを特徴とする請求項９に記載のシステム。
【請求項１２】
前記制御用プロセッサコアスレッドは、単一インストラクション複数データ処理オペレーションが前記プロセッサコアスレッドによりサポート可能であるように、全体的なスレッド処理作動方法を再構成することができることを特徴とする請求項９に記載のシステム。
【請求項１３】
前記制御用プロセッサコアスレッドは、単一インストラクション複数データ処理オペレーション及び複数インストラクション複数データ処理オペレーションが任意数の前記プロセッサコアスレッドにより同時にサポート可能であるように、全体的なスレッド処理作動方法を再構成することができることを特徴とする請求項９に記載のシステム。
【請求項１４】
前記監視制御ユニットは、別のスレッド処理を開始して停止し、単一ステップ及び複数ステップ制御オペレーションモードで状態情報を検査して変更するように第１のスレッド処理によって作動可能であることを特徴とする請求項１に記載のシステム。
【請求項１５】
前記プロセッサコアの前記インストラクションセットの割り当てられていないビットフィールドに埋め込まれたビットパターンの識別を更に含むことを特徴とする請求項１に記載のシステム。
【請求項１６】
前記メモリは、プロセッサコアコードを記憶して実行するための内部メモリと、前記周辺アダプタと係合した外部メモリとを含むことを特徴とする請求項１に記載のシステム。
【請求項１７】
前記監視制御ユニットは、前記プロセッサコアの周辺装置として構成されることを特徴とする請求項１に記載のシステム。
【請求項１８】
前記周辺アダプタは、アナログ及びデジタル処理機能を制御することができることを特徴とする請求項１に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、外部システムに対するアナログ及びデジタル電気インタフェースを有するシングルチップ内蔵マイクロプロセッサに関するものである。更に詳しくは、本発明は、プロセッサスレッド状態及び他の構成要素へのアクセスをモニタ及び制御するための監視制御と共に、複数の独立式又は従属式同時スレッドのパイプライン化した実行のための新しいプロセッサコアに関する。
【背景技術】
【０００２】
「マルチスレッド化」は、システムプログラムの異なる部分（スレッド）を同時に実行するマイクロプロセッサの能力を形成するものである。マルチスレッド化は、ソフトウエア又はハードウエアシステムで達成することができる。単一のプロセッサコアによるマルチスレッド化は、別々のスレッドがセグメント化された時間ウィンドウで実行されるようにプロセッサコアの実行時間を分割することにより、複数の同時のスレッドをパイプライン化することにより、又は、複数のプロセッサを並列に実行することにより達成することができる。マイクロプロセッサは、複数のデータセットに対する単一のインストラクション（ＳＩＭＤ）、及び複数のデータセットに対する複数のインストラクション（ＭＩＭＤ）を実行する能力を有することが好ましい。
【０００３】
内蔵プロセッサの分野は、内蔵プロセッサには、１）低い製造コスト、２）低電力消費量及び低い熱放散、３）厳密なリアルタイムでの多重タスクの実行、及び４）特殊目的周辺機器及び入力／出力周辺機器のチップ上の統合が必要とされるので、非内蔵プロセッサとは実質的に異なる。サーバ及びパーソナルコンピュータ用非内蔵プロセッサでは、処理電力及び処理能力が最大化され、コストが二次的な検討事項として見られる。非内蔵プロセッサにおいては、非内蔵プロセッサが公共電源と直接に接続され、作動中に消費された多量の熱を放散するための外部フィン、ファン、又は冷蔵システムを有するので、電力消費量は、内蔵プロセッサほど重要ではない。非内蔵システムは、一般的に、内蔵プロセッサよりも分散化されたアーキテクチャを有し、更に、様々な他の入力／出力装置、表示装置、及び記憶装置、及び、高速バックプレーン構造体、ローカルエリアネットワーク、及び通信設備を有するシステムに相互接続された中央プロセッサ又はプロセッサのクラスタを有する。非内蔵プロセッサチップの実装は、内蔵プロセッサよりもはるかに複雑であり、一般的に、内蔵プロセッサで通常使用される数十万個のトランジスタに代わって、何百万ものトランジスタが含まれる。
【０００４】
内蔵プロセッサの分野においては、複数の入力／出力インタフェース及び他の内蔵プログラムに使用されるマルチタスキングが一般的である。従来の内蔵プロセッサは、１つのインストラクション又はインストラクションのグループを構成する１つのタスクセグメントを実行する単一のプロセッサを有する。割り込みにより、複数の競合するアプリケーションタスクの全体に亘って利用可能なプロセッサ時間が割り当てられる。各々の新しいタスクは、割り当てられた時間セグメントで実行されるように作成されるので、最終タスクのアプリケーション状態、つまり「コンテキスト」が記憶される。従来のプロセッサシステムのリアルタイムプログラムは、本質的に設計し難く、そのようなシステムの連続的なコンテキストスワッピングに関する要件のために非効率的なものとなっている。
【０００５】
様々なマルチスレッド化プロセッサシステムがこれまで開発されている。フリン他に付与された米国特許第５，９０７，７０２号（１９９９年）において、一次側インストラクションキューの能動スレッドを実行することにより、かつ、その後の実行のために休止スレッドを二次側キューに保持する（１００％のコンテキスト記憶による）ことにより、マルチスレッド化プロセッサにおけるスレッドスイッチ待機時間を減少するためのシリアルスレッド実行システムが説明された。ロイ他に付与された米国特許第６，１３４，６５３号（２０００年）において、連続実行式プログラムスレッド間の素早いコンテキスト切り替えを可能にするために３組の汎用レジスタを有するプロセッサアーキテクチャが説明された。Ｃｈｕｎｇ他に付与された米国特許第５，４０４，４６９号（１９９５年）において、特定のスレッドからのインストラクション全体が、固定された所定のタイムスロットにおいて所定のタイムスロットから成る繰り返しパターンで実行されるように、プロセッサ内の多重機能ユニットが割り当てられる静的インターリーブ技術が説明された。キムラ他に付与された米国特許第５，５４６，５９３号（１９９６年）及び第６，１０５，１２７号（２０００年）において、任意のストリームで任意の時間に実行されるように各スレッドを選択かつ方向付けするために、並列ハードウエア実行ストリーム、及び、制御及び最適化ユニットを使用して複数のインストラクションストリームを同時に実行するためのプロセッサアーキテクチャが説明された。
【０００６】
クロケット他に付与された米国特許第４，６４６，２３６号（１９８７年）及びデービス他に付与された米国特許第５，３５７，６１７号（１９９４年）において、三段階パイプラインが説明された。更に、複数の非パイプライン化プロセッサの全体に亘る複数の同時プログラムスレッドの実行を計画するための様々な手法がこれまで提案されている。ウィルキンソン他に付与された米国特許第６，０９４，７１５号（２０００年）、ウィルキンソン他に付与された米国特許第５，９６６，５２８号（１９９９年）、ウィルキンソン他に付与された米国特許第５，８７８，２４１号（１９９９年）、ウィルキンソン他に付与された米国特許第５，８２８，８９４号（１９９８年）、ウィルキンソン他に付与された米国特許第５，７６１，５２３号（１９９８年）、及びウィルキンソン他に付与された米国特許第５，７５４，８７１号（１９９８年）は、「ＳＩＭＤ」、「ＭＩＭＤ」、又は「ＳＩＭＤ／ＭＩＭＤ」の組合せによる作動に対して設定可能なプロセッサのアレーを説明した。ダップ他に付与された米国特許第５，７３４，９２１号（１９９８年）は、並列アレープロセッサ、又は、「ＳＩＭＤ」、「ＭＩＭＤ」、又は結合「ＳＩＭＤ／ＭＩＭＤ」の作動モードで作動することができる複数のプロセッサを包含するそのようなプロセッサのマトリクスを説明した。
コーンに付与された米国特許第５，２７６，８４７号（１９９４年）によるメモリアドレス、及び、ミヤモト他に付与された米国特許第６，１０１，５６９号（２０００年）に示されているより一般的なシステムリソースについては、種々のハードウエアセマフォーが検討されている。
【０００７】
非内蔵マルチスレッドプロセッサの実行を監視及び制御するための様々な手法がこれまで提案されている。ラーセン他に付与された米国特許第５，８３５，７０５号（１９９８年）において、パフォーマンス・バッファ・オーバーフロー処理などの更なる行動を開始するためにスレッド当たりのイベントを計数し、計数結果に応答して割り込みを発生させる非パイプライン化マルチスレッドプロセッサシステムが説明されている。クリソス他に付与された米国特許第５，９２３，８７２号（１９９９年）及び第６，０００，０４４号（１９９９年）において、多段プロセッサパイプラインにおける詳細状態に関する情報及びインストラクションのサンプルを呈示するための種々のシステムが説明された。採取されたインストラクション当たりのそのような状態に関する情報のプロフィールは、内部プロフィールレジスタに記憶され、その後、割り込み状態又はソフトウエアポーリングに応答して分析されるというものであった。ドーイング他に付与された米国特許第６，０１８，７５９号（２０００年）及びフリン他に付与された米国特許第６，０５２，７０８号（２０００年）において、パフォーマンスモニタリング装置からの結果に基づいて、スレッドスイッチコントローラがプロセッサスレッドを切り替える非パイプライン化マルチスレッドプロセッサシステムが説明された。エマー他に付与された米国特許第６，０７３，１５９号（２０００年）において、同時マルチスレッド実行システム内の複数のスレッドから好ましいスレッドを選択するための技術が説明された。ボルケンハーゲン他に付与された米国特許第６，０７６，１５７号（２０００年）において、独立した実行が可能な種々のインストラクションから成る２つ又はそれ以上のスレッド間で切り替えるためのシステムが説明された。
【０００８】
【特許文献１】
米国特許第５，９０７，７０２号
【特許文献２】
米国特許第６，１３４，６５３号
【特許文献３】
米国特許第５，４０４，４６９号
【特許文献４】
米国特許第５，５４６，５９３号
【特許文献５】
米国特許第６，１０５，１２７号
【特許文献６】
米国特許第４，６４６，２３６号
【特許文献７】
米国特許第５，３５７，６１７号
【特許文献８】
米国特許第６，０９４，７１５号
【特許文献９】
米国特許第５，９６６，５２８号
【特許文献１０】
米国特許第５，８７８，２４１号
【特許文献１１】
米国特許第５，８２８，８９４号
【特許文献１２】
米国特許第５，７６１，５２３号
【特許文献１３】
米国特許第５，７５４，８７１号
【特許文献１４】
米国特許第５，７３４，９２１号
【特許文献１５】
米国特許第５，２７６，８４７号
【特許文献１６】
米国特許第６，１０１，５６９号
【特許文献１７】
米国特許第５，８３５，７０５号
【特許文献１８】
米国特許第５，９２３，８７２号
【特許文献１９】
米国特許第６，０００，０４４号
【特許文献２０】
米国特許第６，０１８，７５９号
【特許文献２１】
米国特許第６，０５２，７０８号
【特許文献２２】
米国特許第６，０７３，１５９号
【特許文献２３】
米国特許第６，０７６，１５７号
【発明の開示】
【発明が解決しようとする課題】
【０００９】
内蔵マイクロプロセッサアプリケーションに対する効率的な作動をもたらす様々な異なるシステムがこれまで提案されているが、強化された作動能力を有するシステムに対する必要性が存在する。
【課題を解決するための手段】
【００１０】
本発明は、入力／出力アプリケーションのためのプログラム可能シングルチップ内蔵プロセッサシステムを提供する。本発明は、プロセッサコアが少なくとも２つの専用状態を有することができるような、多段プロセッサパイプラインにセグメント化された共通実行論理を共有する少なくとも４つの並列の独立アプリケーションスレッドによって作動可能なモジュール式マルチビットマルチスレッドプロセッサコアと、プロセッサコア内のインストラクションセットを実行するためのプロセッサコアと係合した論理機構と、プロセッサコアの状態を検査してプロセッサコアの作動を制御するための、プロセッサコアスレッドのうちの少なくとも１つによって制御された監視制御ユニットと、インストラクションセット及び関連データを記憶して実行するためのメモリと、プロセッサコアに出入りする入力／出力信号を伝送するための、プロセッサコアと係合した周辺アダプタとを含む。
【００１１】
周辺アダプタは、入力／出力信号を様々な処理機能を実行するアナログ及びデジタル周辺機器に、また、プロセッサコアに出入りするレジスタ値を監視制御ユニットに伝送するためのプロセッサコアと係合することができる。すなわち、周辺アダプタは、アナログ及びデジタル処理機能を制御することができる場合がある。
本システムは、プロセッサコア内部のメモリ及び外部メモリの両方をサポートすることが好ましい。外部メモリは、周辺アダプタを通じてアクセスされる。従って、メモリは、プロセッサコアコードを記憶及び実行するための内部メモリ及び周辺アダプタに係合した外部メモリで構成することができる。
【００１２】
本発明は、取り出し、復号化、読取り、アドレッシング、算術計算及びアドレス計算、ポートメモリ、分岐、及び書込みのサブインストラクションレベルのオペレーションの少なくとも１つに各マシンインストラクションを分割する最大８個までのプロセッサパイプライン段階をサポートすることが好ましい。複数のそのようなパイプラインは、共有メモリを有するシステム内で実行されるように構成することができる。
更に、プロセッサパイプラインは、インストラクション取出し論理段階、インストラクション復号化論理段階、マルチポートレジスタ読取り段階、アドレスモード論理段階、算術計算及びアドレス計算段階のための算術計算論理ユニット、マルチポートメモリ段階、分岐／待機論理段階、及びマルチポートレジスタ書込み段階のうちの少なくとも１つで構成されることが好ましい。
【００１３】
本発明は、システムスレッドのオペレーションを様々な方法で操作及び調整する。監視制御ユニットを使用するいかなるスレッドも、所定のプロセッサコアで個々のスレッドオペレーション又は専用状態を開始、停止、又は変更することができる。システムは、各スレッドがマシンインストラクションを実行して特定のデータセットを操作するように、複数のスレッドがマシンインストラクションを実行して単一のデータセットを操作することができるように、又は、スレッドのグループの任意の組合せが特定のデータセット及び別々のデータセットを同時に操作するように構成することができる。ハードウエアセマフォーベクトルを使用して、周辺アダプタを通した様々なシステム周辺機器へのアクセス、及びシステムメモリへのアクセスは、複数のスレッドオペレーション中にシステムスレッドのいずれかによって制御される。
【００１４】
すなわち、プロセッサコアは、共通の実行論理及びメモリを複製することによって２つのグループの独立したスレッドをサポートすることができる。更に、監視制御ユニットは、個々のマルチスレッドプロセッサのオペレーションを開始、停止、及び変更する目的で、マルチスレッドプロセッサコアのオペレーション状態を検査して解釈することができることが好ましい。監視制御ユニットは、別のスレッド処理を開始及び停止し、単一段階及び複数段階の制御オペレーションモードで状態情報を検査及び修正するように第１のスレッド処理によって作動可能とすることができる。システムは、更に、周辺アダプタ及びシステムメモリへのマルチスレッドアクセスを制御するための、監視制御ユニットと係合したハードウエアセマフォーベクトルを更に含むことができる。更に、監視制御ユニットは、プロセッサコアの周辺装置として構成することができる。
更に、監視制御ユニットは、好ましくは、入力／出力インストラクションを使用することによりプロセッサコアスレッドの各々によってアクセス及び制御することができる。制御用プロセッサコアスレッドは、好ましくは、プログラム可能であり、プロセッサコアスレッドのいずれかを含む。
【００１５】
制御用プロセッサコアスレッドは、複数インストラクション複数データ処理オペレーションがプロセッサコアスレッドによってサポート可能であるように、全体的なスレッド処理オペレーション方法を再設定することができる。更に、制御用プロセッサコアスレッドは、単一インストラクション複数データ処理オペレーションが上述のプロセッサコアスレッドによってサポート可能であるように、全体的なスレッド処理オペレーション方法を再設定することができる。最後に、制御用プロセッサコアスレッドは、単一インストラクション複数データ処理オペレーション、及び複数インストラクション複数データ処理オペレーションが任意の数の上述のプロセッサコアスレッドによって同時にサポート可能であるように、全体的なスレッド処理オペレーション方法を再設定することができる。
【００１６】
本発明は、特化されたマシンインストラクションセットをサポートすることが好ましい。特定のインストラクションは、単一バイト値の検出、及び各スレッドがそのスレッド番号を検出することを考慮したものである。インストラクションセットは、更に、上述のプロセッサコアの選択されたインストラクションセットの割り当てられていないビットフィールドに内蔵されたビットパターンを識別する段階をサポートすることができる。換言すると、システムは、プロセッサコアのインストラクションセットの割り当てられていないビットフィールドに内蔵されたビットパターンを識別する段階で更に構成することができる。
【００１７】
本システムは、更に、特定のワードデータ形式を検出するための、上述のインストラクションセットに実装される条件コード機構を含むことができる。更に、ワードの最下位バイトの値が０から２５５の特定の範囲内であることを条件コードによって検出することができる。同様に、インストラクションセットは、各スレッドがそのスレッドアイデンティティを判断することを可能にするプロセッサインストラクションを含むことができる。
ここで、本発明の実施形態を添付図面を参照しながら説明する。
【発明を実施するための最良の形態】
【００１８】
本発明は、プロセッサパイプライン内のマルチスレッドの実行をサンプリング、監視、及び制御するためのプラットフォームを提供する。本発明は、より一般的なシステムリソースを得るために競合する複数の同時スレッドのオペレーションを方向付け及び制限するための強力な機構を提供する。
従来技術による内蔵プロセッサシステムとは対照的に、本発明は、単一プロセッサ／機能的制御ユニットを伴うパイプラインアーキテクチャを使用し、インストラクションは、それを実行するのに複数のプロセッササイクルを必要とし、個々のストリームからの１つのインストラクションは、一般的に各プロセッササイクルで実行される。従来技術によるシステムと異なり、本発明は、特化されたハードウエア及びメモリレジスタを通じてではなく、パイプラインプロセッサスレッドのいずれかを通じて行われるパイプラインプロセッサ内の複数のスレッドの実行をサンプリング、監視、及び制御するための単純なプラットフォームを提供する。また、この監視制御機能は、メモリ、レジスタ、及び周辺装置を含む一組のプログラム定義リソースへのアクセスを制御するためのハードウエアセマフォー機構を組み込むことができる。
【００１９】
複数のスレッドは、パイプラインアーキテクチャ及び共有プロセッサ論理を使用して並列に実行される。パイプラインアーキテクチャを使用することにより、取り出し、復号化、処理、メモリ及び周辺装置へのアクセス、及びマシンインストラクションの記憶という段階が分離され、並列のスレッドが千鳥状にパイプライン内に導入される。パイプライン作動中はいつでも、それぞれの別々のスレッドマシンインストラクションは、プロセッサのサイクル内で「ｎ」個のそのようなスレッドの論理オペレーションが同時に処理されるように、パイプライン内で異なる段階にある。本発明の好ましい実施形態では、８個のクロックサイクルによって単一のマシンインストラクションを処理することができるが（２ワードインストラクションでは１６個）、本発明の効率は、８つのスレッドで更なる処理能力をもたらす。平均すると、１つの完全なマシンインストラクションは、アクティブスレッドの１つのクロックサイクルで完了される。本発明は、非内蔵マイクロプロセッサにある数千万個のトランジスタに代わって、１０万個よりも少ないトランジスタを使用して大幅な処理利得及び監視機能をもたらす。
【００２０】
図１を参照すると、シングルチップ内蔵プロセッサ１０は、中央８スレッドプロセッサコア１２、バッファ付き出力装置１６を有するクロック入力装置１４、主ＲＡＭ１８として図示された様々な内部メモリ構成要素、監視制御ユニット（ＳＣＵ）２０、周辺アダプタ２２、周辺インタフェース装置２４、外部メモリインタフェース２６、及び試験ポート２８を含む入力／出力能力を有する。本システムは、通信アプリケーション用の内蔵装置制御ユニットとしてＲＦトランシーバ３２に接続されたベースバンドプロセッサユニット（ＢＢＵ）３０などの様々な内蔵入力／出力アプリケーションに対して使用される。
【００２１】
図１に示すように、本システムは、アプリケーション専用集積回路（ＡＳＩＣ）として実行される時、プロセッサ１０と特定されるボックス内に含められている。プロセッサ１０内の中央構成要素は、マルチスレッドプロセッサコア１２であり、本発明の１つの好ましい実施形態において、８個の同時プログラムスレッドを実行することができる８段階パイプラインとして図示されている。プロセッサ１０内の全ての要素は、基本タイミング信号をクリスタル３４から受信するマスタクロック１４と同期化されている。マスタクロック１４は、システム構成要素を同期化するために内部的に使用され、潜在的なクロック出力装置１６として別のシステムに対して外部的にバッファに入れられる。内蔵プロセッサ１０と協働するシステムが異なるクロック速度を有するように、第２のクロック入力をバッファ付き出力装置１６に供給することができる。
【００２２】
プロセッサコア１２に接続されているのは、様々な種類のメモリである。８組の８ワードを含む３ポートレジスタＲＡＭモジュール３６は、８個のプロセッサスレッドの各々についてレジスタＲ０からＲ７に対して使用される。ブートＲＯＭメモリ３８は、システムブート画像及びＲＦトランシーバ３２アプリケーション用コード表などの様々なアプリケーション専用の表を含む幾つかの不揮発性プログラム及びデータを記憶することができる。本システムが起動された時、ブートＲＯＭ３８画像が主ＲＡＭ１８にコピーされて実行される。一時的な変数や他の変更可能なパラメータ及びシステムデータも、主ＲＡＭ１８に記憶されている。主ＲＡＭ１８は、２ポートフォーマット構造を有することができる。更なるメモリが必要とされる場合、入力／出力インストラクションを使用して周辺アダプタ２２を通じて外部メモリ４２にアクセスすることができる。
【００２３】
監視制御ユニット（ＳＣＵ）２０は、周辺アダプタ２２を通じてプロセッサコア１２と内部的に協働する専用周辺装置として構成することができる。プロセッサコア１２内の「制御用」スレッドは、周辺アダプタ２２によって監視制御ユニット２０にアクセスする入力／出力インストラクションを出す。スレッドのいずれも、制御用スレッドとして機能することができる。監視制御ユニット２０は、監視制御ユニット２０が監視制御機能を実行する時、プロセッサコア１２の様々な要素にアクセスする。監視制御ユニット２０は、１）各スレッドプロセッサの実行／停止制御、２）各スレッドプロセッサの専用状態への読取／書込のためのアクセス、３）Ｉ／Ｏロックアップ、タイトループなどの異常状態の検出、４）重要リソースのセマフォーベースの管理、及び、５）１６ビットタイマ機能を含む、プロセッサイベント又はシーケンスを計時するためのマスタクロック１４への参照による様々な監視制御機能をサポートする。通常の処理中は、監視制御ユニット２０は、スレッド処理に影響を及ぼすことなく、状態情報をプロセッサパイプラインから読み取る。監視制御ユニット２０は、制御スレッドによって指示された時にのみ、所定のスレッドに対するプログラムの実行に割り込むか又はそれを再指示することになる。
【００２４】
監視制御ユニット２０は、１６ビットセマフォーベクトルを通じてシステムリソースへのアクセスを管理する。セマフォーの各ビットにより、メモリ位置又は範囲、又は、周辺装置アドレス、一式の周辺装置又は周辺装置のグループなどのシステムリソースへのアクセスが管理される。各ビットの意味は、ＲＯＭ３８画像内に設定された定数でプログラマによって定義される。ＲＯＭ３８は、「ＦＬＡＳＨ」型とすることができ、又は、ＲＯＭ３８は、外部メモリからこの情報にアクセスすることができ、従って、セマフォーベクトルのビットの意味をアプリケーションによって変えることができる。スレッドは、対応するビットを「１」に設定することによって所定のシステムリソースを保持する。スレッドがシステムリソースの使用を完了すると、対応するビットを「０」に戻す。セマフォービットは、図５に示す「アップベクトル」レジスタ１０９及び「ダウンベクトル」レジスタ１１０を使用して設定及びクリアされる。
【００２５】
周辺アダプタ２２は、様々な一般的な入力／出力インタフェース装置２４にアクセスし、一般的な入力／出力インタフェース装置２４には、汎用シリアルインタフェース、汎用パラレルデジタル入力／出力インタフェース、アナログ／デジタル変換器、デジタル／アナログ変換器、専用ベースバンドユニット（ＢＢＵ）３０、及び試験ポート２８を挙げることができる。ベースバンドユニット３０は、制御信号及び生シリアルデータがＲＦトランシーバ３２に、又はＲＦトランシーバ３２から伝えられる通信アプリケーションに使用される。ベースバンドユニット３０は、これらの通信を同期化し、ストリーム（ＲＦトランシーバ３２に出入りする）をシリアルからパラレルフォーマット（プロセッサコア１２によって使用される）に変換する。試験ポート２８は、開発及び製造時の試験に使用される。試験ポート２８は、監視制御ユニット２０を使用するスレッドの開始及び停止などの様々な試験機能を実行するプロセッサコア１２上で実行されるプログラムスレッドによってサポートされる。
【００２６】
「ＡＳＩＣ」は、共有メモリモデルを有するマルチスレッドアーキテクチャをサポートする。プロセッサコア１２のためのプログラミングモデルは、８個のスレッドを有する対称マルチプロセッサ（ＳＭＰ）と同等であるが、ハードウエアの複雑性は、入力／出力機能を有する単一の従来のマイクロプロセッサに比するものである。レジスタセットのみが、スレッド間で複製される。プロセッサコア１２のハードウエアコストの大半は、８つのスレッドの全てが分担している。
【００２７】
図２に示すプロセッサコア１２は、複数のスレッドを同時に効率的に処理するために当業技術で公知の同期パイプライン技術を使用する。図示する本発明の一実施形態において、一般的な単一１６ビットインストラクションは、８つの段階による処理で実行される。インストラクションが２つの１６ビットワードから成る場合、２回のパイプライン段階通過が一般的に必要とされる。パイプラインの８つの段階とは、以下のものである。
段階０：インストラクション取出し
段階１：インストラクション復号化
段階２：レジスタ読取り
段階３：アドレスモード
段階４：「ＡＬＵ」オペレーション
段階５：メモリ又はＩ／Ｏサイクル
段階６：分岐／待機
段階７：レジスタ書込み
【００２８】
このパイプライン手法には幾つかの顕著な利点がある。第１に、インストラクション処理は、簡単なエネルギ効率の高いステップに分割される。第２に、パイプライン処理段階は、複数のスレッドが共有することができる。各スレッドは、図３に示すように、並列にしかしパイプライン処理の異なる段階で実行される。図３の縦軸３０は、パイプライン段階を示し、横軸５２は、プロセッサクロック１４のサイクル又は時間に対応する。スレッド当たりの各インストラクションは、実行するのに８クロックサイクル掛かるが、平均すると、パイプラインでは、実行されている８つのスレッドの１つからクロックサイクル当たり１つのインストラクションが完了される。従って、パイプラインアーキテクチャにより、顕著な処理利得が得られる。第３に、パイプラインスレッドの各々は、独立して実行することができることから、リアルタイムの非常に重要なタスクは、確実な実行を保証するために別々のスレッドの専用とすることができる。本発明のこの特徴は、競合するタスク間のクロックサイクルの複雑な分割を証明して確実に実行するのが困難であるこれまでの割込み駆動式マイクロプロセッサよりもはるかに簡単で信頼性が高いものである。
【００２９】
プロセッサクロック１４の各サイクルで、アクティブなインストラクションは、次の段階に進む。段階７の後、シーケンス内の次のインストラクションは、段階０から始まる。図３でわかるように、スレッド０（Ｔ０）は、５４で示すように、サイクル「１」でパイプライン段階０に入る。時間がクロックサイクルを進むにつれて、Ｔ０は、パイプラインの段階０から段階７に移動する。同様に、他のスレッドＴ１からＴ７は、その後のサイクル「１」からサイクル「８」でパイプライン段階０に入り、図３に示すように、Ｔ０が特定の段階から出る時に段階０から段階７に移動する。このハードウエア共有方法の結果は、同時に作動する８点スレッドプロセッサと同等である。
【００３０】
プロセッサコア１２パイプラインは、２ワードインストラクションフォーマットなどの３２ビットインストラクションをサポートする。インストラクションの各ワードは、２ワードインストラクションの処理に１６回のクロックの刻みが必要となるように、８つのパイプライン段階の全てを通過する。これは、図２に見ることができ、線６０は、パイプラインの段階７（７６）の「レジスタ書込み論理」１０８を段階０（６２）の「パイプラインレジスタ＃０」（８０）に結合する。一般に、各スレッドは、プロセッサクロック１４の８回の刻み当たりインストラクションストリームの１ワードを処理する。
【００３１】
各スレッドプロセッサ１２の専用状態は、パイプラインレジスタ＃０から＃７（８０から９４）、又は３ポートＲＡＭ３６モジュール（レジスタ０から７、Ｒ０：Ｒ７）に記憶されている時、１）１６ビットプログラムカウンタ（ＰＣ）レジスタ、２）ビットがｎ、ｚ、ｖ、及びｃと名付けられた４ビット条件コード（ＣＣ）レジスタ、３）１組８つの１６ビット汎用レジスタ（Ｒ０：Ｒ７）、及び、４）各パイプライン段階に必要とされるフラグ、バッファ、及び一時レジスタから成る。物理的には、汎用レジスタは、図１でわかるように３ポートＲＡＭ３６内の６４ワードブロックとして実行することができる。レジスタアドレスは、インストラクションワードからの３ビットレジスタ指定子と共に、スレッドカウンタレジスタから引き出された３ビットスレッド番号（Ｔ０：Ｔ７）の連結によって形成される。単一１６ビットインストラクションは、最大３個までのレジスタオペランドを指定することができる。
【００３２】
インストラクションが図２に示すハードウエアパイプラインを進むにつれて、各スレッドプロセッサの専用状態は、プロセッサパイプラインを通って流れ、レジスタ（Ｒ０：Ｒ７）は、３ポート６４ワードレジスタＲＡＭ３６に記憶され、他の専用値は、パイプラインレジスタ＃０から＃７（８０から９４）に記憶されているパケット構造で記憶される。スレッドパケット構造は、各パイプライン段階で異なり、段階の要件が異なることを反映している。スレッドパケットのサイズは、４５ビットから１０３ビットまで変動する。
【００３３】
図４でわかるように、プロセッサクロック１４の各刻みで２つの１６ビットレジスタが読み取られ、１つの１６ビットレジスタに書き込みを行うことができる（５６）。読取りは段階２（６６）で行われ、一方、任意選択の書込みは段階７（７６）で行われることから、読取りは、常に書込みと異なるスレッドに関係する。各スレッドのレジスタのサブセットは異なるので、単一のクロックの刻み内での書込アクセスと２つの読取アクセスとの間の衝突の可能性はない。
【００３４】
同様に、８つのスレッドの全ては、主ＲＡＭ１８及び完全な周辺装置セットへのアクセスを共有する。一般的に、スレッドは、主ＲＡＭ１８を通じて互いに通信するが、所定のスレッドは、監視制御ユニット２０を使用して別のスレッドの状態を判断したり、変更することができる。段階０（６２）及び段階５（７２）において、２ポート主ＲＡＭ１８は、図４の５８によって示すように、主ＲＡＭ１８内の異なる区域でプログラムを実行する２つの異なるスレッドによってアクセスされる。
【００３５】
パイプライン機構を示す図２を参照すると、様々なパイプライン段階、及び、コアプロセッサ１２パイプラインと相互作用する監視制御ユニット２０及びスレッドカウンタ１０７が図示されている。スレッドカウンタ１０７は、パイプラインの段階０（６２）内への特定スレッドの状態情報の読込みを指示し、０から７まで連続的に計数する。特定スレッドに対するインストラクションは、スレッドカウンタ１０７によって指示されると、段階０（６２）の始めに「パイプラインレジスタ＃０」（８０）を通じてパイプラインに入る。「インストラクション取出し論理」９６は、主ＲＡＭ１８アドレスバスにアクセスし、得られるインストラクションデータが「パイプラインレジスタ＃１」（８２）に記憶される。段階１（６４）において、インストラクションは復号化される。段階２（６６）において、この情報は、この段階で現在アクティブな所定のスレッドに付随するレジスタからデータを検索するために使用される。段階３（６８）において、「アドレスモード論理」１００は、アドレッシング形式を判断し、アドレッシング単一化（様々なマシンインストラクション形式に対する即時、ベース変位、及び、レジスタ・インダイレクト及び絶対アドレッシングフォーマットに関するアドレッシングフィールドを収集する）を実行する。「ＡＬＵ」１０２及び関連論理を包含する段階４（７０）において、「ＡＬＵ」１０２は、オペレーション（アドレス又は算術計算の追加のため）を実行し、早期条件コードを設定し、段階５（７２）のメモリ及び周辺Ｉ／Ｏオペレーションの準備をする。
【００３６】
分岐及びメモリオペレーションに関して、「ＡＬＵ」１０２は、ＰＣ関連又はベース変位のいずれかのアドレス算術計算を実行する。段階５（７２）は、読取又は書込オペレーションを行うために、主ＲＡＭ１８又は周辺装置にアクセスする（「周辺アダプタ論理」１０４を通じて）。段階６（７４）では、分岐インストラクション及び周辺Ｉ／Ｏ待機を実行するために、「分岐／待機」論理１０６が使用される。状況によっては、第１のスレッドは、多くのサイクルに亘って周辺装置２４が応答するのを待つことになる。この「待機」は、適当な監視制御ユニット２０レジスタにアクセスする第２のスレッドにより検出することができる。また、第２のスレッドは、待機の持続時間を判断するために連続的に計数している監視制御ユニット２０レジスタを利用することができる。周辺装置２４が所定の時間内に応答しなかった場合、第２のスレッドは、第１のスレッドが待機ループに捕まっている恐れがあるので第１のスレッドを再度初期化するための措置を講じることができる。段階７（７６）は、任意のレジスタ値を３ポートレジスタＲＡＭモジュール３６に書込む。その後、スレッドパケットの収支は、現在のスレッド用パイプラインに入る次のインストラクションワードのために「パイプラインレジスタ＃０」（８０）にコピーされる。
【００３７】
図２はまた、プロセッサコアスレッドの状態をモニタし、システムリソースへのアクセスを制御し、特定の状況においてはスレッドのオペレーションを制御するために使用される監視制御ユニット２０を示す。監視制御ユニット２０は、図２に示すように、パイプラインハードウエア内の様々な地点で状態情報を選択的に読み取るか又は書き込むことができる。これは、別々の制御プログラムによって作動される特化された制御機構ではなく、プロセッサコア１２のスレッドのいずれかによって一体的に柔軟に制御される。監視制御ユニット２０は、図２において太い矢印１０５で示すように、周辺アダプタ論理１０４を通じて標準的な入力／出力インストラクションを使用する任意のスレッドによってアクセス可能であるように周辺装置として構成される。これらのインストラクション「ｉｎｐ」及び「ｏｕｔｐ」のフォーマットについては後述する。所定のスレッドがスレッド専用の監視制御ユニット２０作動を指示したい時は、まず図５に示すように、ポインタ値を入力／出力アドレス「４」（１１２）に書込まなければならない。ポインタ１１２は、図６に示すように、ビット位置「３」から「５」（１１４）で監視制御ユニット２０によってアクセスされるスレッドを含む。レジスタが監視制御ユニット２０の作動を通じてアクセスされる場合、所望のレジスタの値は、ポインタのビット「０」から「２」（１１６）に含まれている。
【００３８】
様々な監視制御ユニット２０の読取及び書込オペレーションがサポートされる。読取アクセス（「ｉｎｐ」インストラクション）は、読み取られているスレッドの状態に影響を与えない。図５に示すように、レジスタ値（Ｒ０：Ｒ７）、プログラムカウンタ値、条件コード値、ブレークポイント（スレッドがそれ自身に分岐するタイト・ループ）、所定のスレッドに対する条件、所定のスレッドの待機状態（周辺装置が応答するのを待っているスレッド）、セマフォーベクトル値、及び連続的に作動する１６ビットカウンタを読み取ることができる。「ブレークポイント」レジスタ１２４は、スレッドが連続的に分岐しているかどうかを検出する。「待機」レジスタ１２６は、値がすぐには利用可能でない時のような所定のスレッドが周辺機器を待っているかどうかを教える。「時間」レジスタ１３０は、システムクロックサイクル数に関して周辺機器の応答時間を測定するなどの任意の目的のために、相対的な進行時間を計算するのにスレッドによって使用される。慣例により、所定の目標スレッドは、任意の書込アクセス（「ｏｕｔｐ」インストラクション）がその状態値に関して実行される前に「停止される」べきである。制御用スレッドが所定の目標スレッドについてレジスタ、プログラムカウンタ、又は条件コードを変更することを希望した場合、制御スレッドは、図５でわかるように、最初にワードを停止アドレス「３」（１３２）に書込むことによって目標スレッドを「停止」しなければならない。停止ベクトルのビット「０」からビット「７」は、プロセッサコア１２の８つのスレッドに対応する。目標スレッドに対応するビットを１に設定することにより、目標スレッドは、パイプラインを通じた現在のインストラクション実行を完了する。パイプライン論理は、次に、「実行」オペレーションにおけるように、停止ベクトル内の目標スレッドのビットがもう一度制御スレッドによってゼロに設定されるまで、そのスレッドに対する更に別のいかなるインストラクションも読込みを行わない。目標スレッドが停止されると、制御スレッドは、図５に示すように、適当な監視制御ユニット２０の入力／出力アドレス位置に書込み（「ｏｕｔｐ」インストラクション）を実行することにより、目標スレッドの任意のレジスタ値（１３８）、プログラムカウンタ（１３６）、又は条件コード（１３４）に書き込むことができる。この機能は、様々な「ＳＩＭＤ」及び「ＭＩＭＤ」構成（後述）で実行するか又は他の方法で目標スレッド実行フローを修正するためにプロセッサコア１２を再設定する際に有益である。
【００３９】
図５の「書込み」欄に同じく示すように、「アップベクトル」１０９及び「ダウンベクトル」１１０は、監視制御ユニットのハードウエアセマフォーを使用するリソースをそれぞれ確保及び解放するために使用される。セマフォーの値は、どのシステムリソースが別のスレッドにロックされているか否かを確認するために、いつでも所定のスレッド（アドレス５、「セマフォーベクトル」１２８）により読み取ることができる。各スレッドは、「ダウンベクトル」レジスタ１１０を使用して所定のリソースを解除することに、それがそのリソースを用いて行われた時には責任を持つ。
【００４０】
プロセッサコア１２は、様々な処理オペレーションを指示するための「マシン言語」又は「マシンインストラクション」ともいう一組のプログラミングインストラクションをサポートする。このインストラクションセットは、条件コード機構と密接な関係がある。プロセッサコア１２のマシン言語は、図８に示すような１８個のインストラクション、及び、図７に示すような合計６つのアドレスモードから成る。マシンインストラクションは、大きさは１ワード又は２ワードのいずれかである。２ワードインストラクションは、一度に１つのワード部分で実行を完了するためにパイプラインを２回通過しなければならない。図７に示す表は、６つのアドレスモード１４０を説明し、記号の説明１４２を示し、インストラクションサイズ別に適用されるインストラクションフォーマット１４３を与える。１つのインストラクションによってレジスタに書き込まれた結果は、その後のインストラクションのソースオペランドとして利用可能である。本発明のマシン言語によるインストラクションは、高度なオペレーションを構築するために組み合わせて使用することができる。例えば、ビット単位の左回転インストラクションは、ビットによるクリアインストラクションと組み合わせると、シフトして最上位ビット位置を過ぎた時にビットが無視される左シフトオペレーションを与える。
【００４１】
マシンインストラクションセット及び関連のプロセッサレジスタを説明するために、一連の慣例を使用することができる。Ｒ０．．．Ｒ７は、それぞれ、レジスタ「０」からレジスタ「７」と定義される。「Ｒｎ」は、一般的にレジスタを示すために使用され、「ｒｎ」は、特定のレジスタの場合について使用される。「ＰＣ」は、プログラムカウンタである。「ＣＣ」は、条件コードレジスタである。「Ｋ」は、リテラル定数値を示す。１ワードインストラクションフォーマットの場合、「Ｋ」の精度は、４ビットと８ビットとの間に限定される。２ワードインストラクションフォーマットの場合、「Ｋ」は、そのインストラクションの第２のワードのような１６ビットによって指定される。「Ｔ」は、一時レジスタである。「*」は、メモリ内の値に対するポインタである。「＆」は、ＡＮＤ論理オペレーションである。「｜」は、ＯＲ論理オペレーションである。「＾」は、排他的ＯＲ論理オペレーションである。「！  」は、ＮＯＴ論理オペレーションである。「＜＜」は、左シフトオペレーションである。別々のレジスタセット、プログラムカウンタ、及び条件コードレジスタは、各システムスレッドのために保持されている。条件コード（ＣＣ）の「ｎ」、「ｚ」、「ｖ」、及び「ｃ」ビットは、これらを生成したインストラクションに依存して異なる実行内容を有する。加算及び減算の算術計算オペレーションについては、これらの「ＣＣ」ビットは、それぞれ、負、ゼロ、オーバーフロー、及びキャリーを意味する。他のオペレーションについては、「ｃ」ビットは、１から２５５の区間における結果のような「ｃｈａｒａｃｔｅｒ」を意味する。「ｖ」ビットは、通常は結果が奇数であることを示すが、様々な解釈を有する。インストラクションセットの詳細については後で示される。「ｍｓｂ」は、最上位ビットの略である。「ｌｓｂ」は、最下位ビット又はワードが右から左に読み取られる時はビット０の略である。
【００４２】
図８に示して後述するスレッド番号取得インストラクション「ｔｈｒｄ」１４６は、本発明の重要な特徴である。「ｔｒｄ」インストラクション１４６は、アイデンティティ又はスレッド番号を識別するために所定のスレッドによって使用される。図９は、このインストラクションが、監視制御ユニット２０制御レジスタと共に、プロセッサコア１２を「ＳＩＭＤ」構成で、その後は「ＭＩＭＤ」構成で、又はその逆で作動することができる方法の例を示す。このような能力は、プロセッサコア１２作動中の任意の時点で、スレッドプロセッサのいずれか又は全てを「ＳＩＭＤ」又は「ＭＩＭＤ」のいずれかの構成又はモードで柔軟に構成するために使用することができる。プロセッサコア１２がパワーアップ状態から開始された時、プロセッサコア１２によってサポートされた８つのスレッドは、自らのスレッド番号を知らない。図９に示す例においては、プロセッサコア１２は、主ＲＡＭ１８メモリの１６ｋワードを０に初期化するために全てのスレッドを並列に使用する。スレッドゼロは、その後、全ての他のスレッドを停止し、「ＭＩＭＤ」オペレーションにおけるように、独立したデータセット上の８つの別々のプログラムを実行し始めるように他のスレッドのプログラムカウンタ及びレジスタゼロを再度初期化して再び開始する。例示的な定数１５０の上部では、対応する監視制御ユニット２０レジスタが初期化される。同時マルチスレッドオペレーションの始めにおけるセクション「スレッドを初期化する」１５２では、各スレッドは、順次、スレッドゼロから始まるパイプラインに読み込まれる。「ｔｒｄ」インストラクション１４６は、対応するスレッド番号を判断するために各スレッドによって使用される。各スレッドに対するレジスタ２（ｒ２）も、ゼロに設定される。セクション「ＩｎｉｔＭｅｍｏｒｙ」１５４では、各スレッドは、レジスタゼロ（ｒ０）内に位置するアドレスに対してゼロを記憶し、その後、８ワードによってメモリ位置アドレスを増分する。これは、８ワードの連続的なメモリブロックに同時に書き込む８つのスレッドを調整するためには好ましいものである。主ＲＡＭ１８メモリの１６ｋワードが初期化された時、プログラムは、「ＩｎｉｔＭｅｍｏｒｙ」１５４から出る。「スレッドを停止」１５６では、スレッドゼロは、監視制御ユニット２０の停止レジスタ１３２に書き込む。これにより、スレッドゼロに対応するビットにゼロが書き込まれる。他のスレッドには１が書き込まれる。これにより、パイプライン内の現在のインストラクションが完了されると、スレッドゼロ以外の他の全てのスレッドが停止する。セクション「ＩｎｉｔＦｏｒＭＩＭＤ」１５８及び「ＳｅｔＭＩＭＤ」１６０では、スレッドゼロは、「ＭＩＭＤＳｔａｒｔ」セクション１６２に対応させるために、停止されたスレッドのプログラムカウンタ（０から７）を初期化し、異なるメモリアドレスで別々の独立したプログラムセグメントに対応する値を含めるために各スレッドのレジスタゼロを初期化する。所定のインストラクションのアドレスは、図９の最も左の欄内に示されている。この欄１５１から、「ＭＩＭＤＳｔａｒｔ」セクション１６２がアドレス２３で始まることが分かる。「ＳｅｔＭＩＭＤ」セクション１６０の終わりで、スレッドゼロは、監視制御ユニット２０の停止ベクトル１３２を変更することにより、停止されたスレッド０から７を開始する。その後、全てのスレッドは、セクション「ＭＩＭＤＳｔａｒｔ」１６２の始めに実行開始となり、異なるレジスタゼロ値に基づいて、独立して作動する独立プログラムセグメントに分岐する。プログラムセグメントは、従って、「ＭＩＭＤ」及び「ＳＩＭＤ」モードのオペレーションに対するプロセッサコア１２スレッドを構成するために「ｔｒｄ」インストラクション１４６及び監視制御ユニット２０の停止／実行機能を使用することができる方法を示すものである。プロセッサコア１２内のスレッドは、「ＳＩＭＤ」構成で実行されているスレッドもあれば、「ＭＩＭＤ」構成で実行されているスレッドもある混合モードで作動させることができる。
【００４３】
本発明の別の実施形態は、識別ビット情報をアセンブリマシンインストラクション内に埋め込むために、「ｂｒａ」無条件分岐の「ｄｏｎ’ｔ  ｃａｒｅ」フィールドと、後述するサブルーチンインストラクションへの「ｊｓｒ」ジャンプとを使用する。このような「ｄｏｎ’ｔ  ｃａｒｅ」フィールドは、インストラクションセット内の他のインストラクションにも内蔵することができる。「ｄｏｎ’ｔ  ｃａｒｅ」フィールドは、システム又はアセンブラバージョン情報を内蔵するため、又はコピー防止のために使用することができる。これらのインストラクションがプロセッサコア用にマシンアセンブラによってアセンブルされると（テキスト表現からマシン読取可能フォーマットに変換）、コードをマーキングするために、これらのインストラクションの複数の発生を通してバージョン関連又は著作権付き保護ビットパターンを選択的に配信することができる。例えば、「ｂｒａ」インストラクション及び「ｊｓｒ」インストラクションがマシンインストラクションのシーケンス内にある場合、「ｂｒａ」インストラクションによって３つの特定ビットを記憶することができ、また、「ｊｓｒ」インストラクションにより、２つの特定ビットを記憶することができる。従って、５ビット長ビットシーケンス「１０１１０」の場合、「１０１」は、アセンブリ「ｂｒａ」インストラクションで記憶することができ、「１０」は、アセンブリ「ｊｓｒ」インストラクションで記憶することができる。これらのインストラクションに対して発生されたマシンビットパターンを検査することにより、マシンビット表現が認可されたアセンブラによって発生させたものであることを判断することができ、潜在的には、バージョン管理又は他の関連の目的のために、アセンブラ又はシステスに関連する情報を利用することができる。
【００４４】
監視制御ユニット２０の停止／実行機能は、システムスレッドの作動モードを再設定するためばかりでなく、デバッグの目的に有益である。所定のプロセッサスレッド上で実行されるデバッグスレッドアプリケーションによって作動される試験ポート２８を使用して、外部試験システム４０は、一度に１つのインストラクションでマシンインストラクションを通じて他のシステムスレッドを段階的に作動し、各インストラクション段階でこれらの他のスレッドの状態を検査することができる。デバッグスレッドは、現在デバッグの目標にされているスレッドに対して、交互に監視制御ユニット２０停止レジスタ１３２のビットをゼロに設定し、その後に１を設定することにより、他のスレッドを実行して停止する。プロセッサコアパイプラインに現在存在するいかなるインストラクションも、停止制御が達成される前に最初に完了され、これにより、単一ワード及び二重ワードインストラクションの両方に対する単一の段階的制御、及び、インストラクションセットに対する複数の段階的オペレーションが可能になる。
「ｃ」条件コードは、「０」から「２５５」の値を有するワードを効率的に検出する。この機能の１つの用途は、文字などの１バイトのデータ形式の検出である。このような検出は、値の検査のための追加マシンサイクルを費やすことなく行うことができる。
【００４５】
本システムは、本発明の一実施形態においては４つ又はそれ以上（８つを図示）の同時スレッドをサポートするが、本システムは拡張することができる。より直接的に機能をサポートするために更に別のインストラクションを実装することができる。監視制御ユニット２０により、制御可能な同時スレッドの数は、１つのマシンサイクルで１６個のスレッドの全てを開始及び停止する機能を失うことなく最大１６個のスレッドまで増やすことができる。本システムはまた、基本的なデータ処理サイズ、例えば１６ビットワードから３２又はそれ以上の長さのビット単位を調節することにより、より長いワード幅で作動するように設定することができる。複数ワードによる同時アクセスができるように主ＲＡＭ１８メモリを調節し、十分な幅のあるデータバスを供給して複数ワードインストラクションを処理するプロセッサ論理を調節することにより、２ワード又はそれ以上のインストラクションを単一マシンサイクル内で取り出すことができ、また、パイプラインは、８クロックサイクル対１６クロックサイクルで、長さが２ワード又はそれ以上のインストラクションを処理することができる。処理能力を上げるために、各々が独自の専用メモリを有するか又はセマフォーによって制御されたメモリアクセスを有するこのようなシステムの幾つかは、並列に実行することができるであろう。
【００４６】
代表的なマシンインストラクションを以下のように説明することができる。
Ｒ１．．．Ｒ３は、レジスタｒ０からｒ７のいずれかを表す。小文字表現は、実際のマシンインストラクションに使用される。
インストラクション：「ａｄｄ」−２の補数加算
フォーマット１−レジスタ：Ｒ１＝Ｒ２＋Ｒ３
【００４７】
【表１】
2004525468.tif 000003
【００４８】
フォーマット２−即時Ｋ３＝［−１２８：１２７］：Ｒ１＝Ｒ２＋Ｋ３
【００４９】
【表２】
2004525468.tif 000004
【００５０】
フォーマット３−即時Ｒ１＝Ｒ２＋Ｋ３
【００５１】
【表３】
2004525468.tif 000005
【００５２】
【表４】
2004525468.tif 000006
【００５３】
インストラクションフィールド：
Ｒ１：目的地レジスタ用３ビット指定子
Ｒ２：ソースレジスタ用３ビット指定子
Ｒ３：ソースレジスタ用３ビット指定子
Ｋ３：署名付き８ビット又は１６ビットリテラルソース
条件コード：
ｎ：結果が負、即ち、「ｍｓｂ」が１の場合に設定
ｚ：結果がゼロの場合に設定
ｖ：オーバーフローが発生した場合に設定
ｃ：キャリーが発生した場合に設定
説明：
ソースオペランドを加算して結果を目的地レジスタＲ１に書き込む。
例示的インストラクション：
ａｄｄ  ｒ１、ｒ２、ｒ３（フォーマット１）
ａｄｄ  ｒ１、ｒ２、９（フォーマット２及び３）
【００５４】
インストラクション：「ａｎｄ」−ビット単位の「アンド」
フォーマット１−レジスタ：Ｒ１＝Ｒ２＆Ｒ３
【００５５】
【表５】
2004525468.tif 000007
【００５６】
フォーマット２：即時：Ｒ１＝Ｒ２＆Ｋ３
【００５７】
【表６】
2004525468.tif 000008
【００５８】
【表７】
2004525468.tif 000009
【００５９】
インストラクションフィールド：
Ｒ１：目的地レジスタ用３ビット指定子
Ｒ２：ソースレジスタ用３ビット指定子
Ｒ３：ソースレジスタ用３ビット指定子
Ｋ３：１６ビットリテラルソース
条件コード：
ｎ：結果が負、即ち、「ｍｓｂ」が１の場合に設定
ｚ：結果がゼロの場合に設定
ｖ：（Ｒ２｜Ｒ３）！  ＝Ｒ３、又は、代替的に（Ｒ２｜Ｒ３）！  ＝Ｋ３の場合に設定
ｃ：結果が区間［１：２５５］にある場合に設定
説明：
ソースオペランドをビット単位アンドして、結果を目的地レジスタＲ１に書き込む。
例示的インストラクション：
ａｎｄ  ｒ１、ｒ２、ｒ３（フォーマット１）
ａｎｄ  ｒ１、ｒ２、０ｘ０Ｆ（フォーマット２）
【００６０】
インストラクション：「ｂｃ」−条件付き分岐
フォーマット１−ＰＣ相対Ｋ２＝［−１２８：１２７］：ｉｆ（条件（Ｃ１））ＰＣ＝ＰＣ＋Ｋ２
【００６１】
【表８】
2004525468.tif 000010
【００６２】
フォーマット２−ＰＣ相対：ｉｆ（条件（Ｃ１））ＰＣ＝ＰＣ＋Ｋ２
【００６３】
【表９】
2004525468.tif 000011
【００６４】
【表１０】
2004525468.tif 000012
【００６５】
インストラクションフィールド：
Ｃ１：分岐条件用４ビット指定子
Ｋ２：署名付き８ビット又は１６ビットリテラルソース
【００６６】
【表１１】
2004525468.tif 000013
【００６７】
説明：
条件コード（ＣＣ）レジスタのｎ、ｚ、ｖ、及びｃビットを使用して、指定された分岐条件（Ｃ１）を評価する（値については条件コード表を参照）。指定された分岐条件を満足した場合、ソースオペランドをプログラムカウンタ（ＰＣ）レジスタに追加する。そうでない場合は、プログラムカウンタは影響を受けない。
例示的インストラクション：
ｂｃ  ０ｘ２、ｌｏｏｐｂａｃｋ（フォーマット１及び２）
【００６８】
インストラクション：「ｂｉｃ」−ビットクリア
フォーマット１−即時Ｋ３＝［０：１５］：Ｒ１＝Ｒ２＆〜（１＜＜Ｋ３）
【００６９】
【表１２】
2004525468.tif 000014
【００７０】
インストラクションフィールド：
Ｒ１：目的地レジスタ用３ビット指定子
Ｒ２：ソースレジスタ用３ビット指定子
Ｋ３：４ビットリテラルソース
条件コード：
ｎ：結果が負、即ち、「ｍｓｂ」が１の場合に設定
ｚ：結果がゼロの場合に設定
ｖ：選択されたビットがその試験時に１であった場合に設定
ｃ：結果が区間［１：２５５］にある場合に設定
説明：
即時オペランドＫ３を使用してソースオペランドＲ２の単一ビットを選択し、選択されたビットを試験し、選択されたビットをクリアし、その結果を目的地レジスタＲ１に書き込む。Ｒ２のビットは１５：０と付番され、ビット０は最下位ビットである。
例示的インストラクション：
ｂｉｃ  ｒ１、ｒ２、３（フォーマット１）
【００７１】
インストラクション：「ｂｉｓ」−ビット設定
フォーマット１−即時Ｋ３＝［０：１５］：Ｒ１＝Ｒ２｜（１＜＜Ｋ３）
【００７２】
【表１３】
2004525468.tif 000015
【００７３】
インストラクションフィールド：
Ｒ１：目的地レジスタ用３ビット指定子
Ｒ２：ソースレジスタ用３ビット指定子
Ｋ３：４ビットリテラルソース
条件コード：
ｎ：結果が負、即ち、「ｍｓｂ」が１の場合に設定
ｚ：結果がゼロの場合に設定
ｖ：選択されたビットがその試験時に１であった場合に設定
ｃ：結果が区間［１：２５５］にある場合に設定
説明：
即時オペランドＫ３を使用してソースオペランドＲ２の単一ビットを選択し、選択ビットを試験し、選択ビットを設定し、その結果を目的地レジスタＲ１に書き込む。Ｒ２のビットは１５：０と付番され、ビット０は最下位ビットである。
例示的インストラクション：
ｂｉｓ  ｒ１、ｒ２、３（フォーマット１）
【００７４】
インストラクション：「ｂｉｘ」−ビット変更
フォーマット１−即時Ｋ３＝［０：１５］：Ｒ１＝Ｒ２＾（１＜＜Ｋ３）
【００７５】
【表１４】
2004525468.tif 000016
【００７６】
インストラクションフィールド：
Ｒ１：目的地レジスタ用３ビット指定子
Ｒ２：ソースレジスタ用３ビット指定子
Ｋ３：４ビットリテラルソース
条件コード：
ｎ：結果が負、即ち、「ｍｓｂ」が１の場合に設定
ｚ：結果がゼロの場合に設定
ｖ：選択されたビットがその試験時に１であった場合に設定
ｃ：結果が区間［１：２５５］にある場合に設定
説明：
即時オペランドＫ３を使用してソースオペランドＲ２の単一ビットを選択し、選択ビットを試験し、選択ビットを変更し、その結果を目的地レジスタＲ１に書き込む。Ｒ２のビットは１５：０と付番され、ビット０は最下位ビットである。
例示的インストラクション：
ｂｉｘ  ｒ１、ｒ２、３（フォーマット１）
【００７７】
インストラクション：「ｂｒａ」−無条件分岐
フォーマット１−ＰＣ相対Ｋ１＝［−１２８：１２７］：ＰＣ＝ＰＣ＋Ｋ１
【００７８】
【表１５】
2004525468.tif 000017
【００７９】
フォーマット２−ＰＣ相対：ＰＣ＝ＰＣ＋Ｋ１
【００８０】
【表１６】
2004525468.tif 000018
【００８１】
【表１７】
2004525468.tif 000019
【００８２】
インストラクションフィールド：
Ｋ１：署名付き８ビット又は１６ビットリテラルソース
条件コード：
悪影響を受けない。
説明：
ソースオペランドをプログラムカウンタ（ＰＣ）レジスタに追加する。「Ｘ」は、「ｄｏｎ’ｔ  ｃａｒｅ」である。
例示的インストラクション：
ｂｒａ  ｂｒａｎｃｈｓｔａｒｔ１（フォーマット１及び２）
【００８３】
インストラクション：「ｉｎｐ」−周辺装置の入力ポートを読み取る
フォーマット１−即時Ｋ２＝［０：１２７］：ＰＣ＝ＰＣ＋Ｋ１
【００８４】
【表１８】
2004525468.tif 000020
【００８５】
インストラクションフィールド：
Ｒ１：目的地レジスタ用３ビット指定子
Ｋ２：署名なし７ビットリテラルソース
条件コード：
ｎ：結果が負、即ち、「ｍｓｂ」が１の場合に設定
ｚ：結果がゼロの場合に設定
ｖ：結果が奇数、即ち、「ｌｓｂ」が１の場合に設定
ｃ：結果が区間［１：２５５］にある場合に設定
説明：
Ｉ／ＯアドレスＫ２で入力ポートを読み取り、その結果を目的地レジスタＲ１に書き込む。
例示的インストラクション：
ｉｎｐ  ｒｌ、０ｘ００（フォーマット１）
【００８６】
インストラクション：「ｉｏｒ」−ビット単位の包含ＯＲ
フォーマット１−レジスタ：Ｒ１＝Ｒ２｜Ｒ３
【００８７】
【表１９】
2004525468.tif 000021
【００８８】
フォーマット２−即時：Ｒ１＝Ｒ２｜Ｋ３
【００８９】
【表２０】
2004525468.tif 000022
【００９０】
【表２１】
2004525468.tif 000023
【００９１】
インストラクションフィールド：
Ｒ１：目的地レジスタ用３ビット指定子
Ｒ２：ソースレジスタ用３ビット指定子
Ｒ３：ソースレジスタ用３ビット指定子
Ｋ３：１６ビットリテラルソース
条件コード：
ｎ：結果が負、即ち、「ｍｓｂ」が１の場合に設定
ｚ：結果がゼロの場合に設定
ｖ：（Ｒ２及びＲ３）＝＝Ｒ３、又は、代替的に（Ｒ２及びＫ３）＝＝Ｋ３の場合に設定
ｃ：結果が区間［１：２５５］にある場合に設定
説明：
ソースオペランドをビット単位包含ＯＲし、その結果を目的地レジスタＲ１に書き込む。
例示的インストラクション：
ｉｏｒ  ｒ１、ｒ２、ｒ３（フォーマット１）
ｉｏｒ  ｒ１、ｒ２、０ｘ１Ｆ（フォーマット２）
【００９２】
インストラクション：「ｊｓｒ」−サブルーチンにジャンプする
フォーマット１−一時Ｔを有するレジスタ・インダイレクト：Ｔ＝Ｒ２；Ｒ１＝ＰＣ；ＰＣ＝Ｔ
【００９３】
【表２２】
2004525468.tif 000024
【００９４】
フォーマット２−絶対：Ｔ＝Ｋ２；Ｒ１＝ＰＣ；ＰＣ＝Ｔ
【００９５】
【表２３】
2004525468.tif 000025
【００９６】
【表２４】
2004525468.tif 000026
【００９７】
インストラクションフィールド：
Ｒ１：目的地レジスタ用３ビット指定子
Ｒ２：ソースレジスタ用３ビット指定子
Ｋ２：１６ビットリテラルソース
条件コード：
影響を受けない。
説明：
ソースオペランドを一時Ｔに保存し、プログラムカウンタ（ＰＣ）を目的地レジスタＲ１に書き込み、一時Ｔをプログラムカウンタ（ＰＣ）レジスタに書き込む。「Ｘ」は、「ｄｏｎ’ｔ  ｃａｒｅ」である。
例示的インストラクション：
ｊｓｒ  ｒ１、ｒ２（フォーマット１）
ｊｓｒ  ｒ１、ｇｏ＿ａｈｅａｄ（フォーマット２）
【００９８】
インストラクション：「ｌｄ」−ＲＡＭから読み込む
フォーマット１−絶対インデックス付きベース変位、Ｋ３＝［−１２８：１２７］：Ｒ１＝*（Ｒ２＋Ｋ３）
【００９９】
【表２５】
2004525468.tif 000027
【０１００】
フォーマット２−絶対インデックス付きベース変位：Ｒ１＝*（Ｒ２＋Ｋ３）
【０１０１】
【表２６】
2004525468.tif 000028
【０１０２】
【表２７】
2004525468.tif 000029
【０１０３】
フォーマット３−絶対：Ｒ２＝*Ｋ２
【０１０４】
【表２８】
2004525468.tif 000030
【０１０５】
【表２９】
2004525468.tif 000031
【０１０６】
インストラクションフィールド：
Ｒ１：目的地レジスタ用３ビット指定子
Ｒ２：ベースレジスタ用３ビット指定子
Ｋ３：署名付き８ビット又は１６ビット変位
Ｋ２：１６ビット絶対アドレス
条件コード：
ｎ：結果が負、即ち、「ｍｓｂ」が１の場合に設定
ｚ：結果がゼロの場合に設定
ｖ：結果が奇数、即ち、「ｌｓｂ」が１の場合に設定
ｃ：結果が区間［１：２５５］にある場合に設定
説明：
フォーマット１及び２については、ＲＡＭソースのアドレスを形成するためにベースレジスタＲ２及び変位Ｋ３を追加する。フォーマット３については、Ｋ２は、ＲＡＭソースのアドレスである。ＲＡＭソースを読み取り、その結果を目的地レジスタＲ１に書き込む。尚、絶対インデックス付きは、ベース変位と同意語である。
例示的インストラクション：
ｌｄ  ｒ１、ｒ２、０ｘ１Ｆ（フォーマット１及び２）
ｌｄ  ｒ１、０ｘ２Ｆ（フォーマット３）
【０１０７】
インストラクション：「ｍｏｖ」−即時を移動する
フォーマット１−即時、Ｋ２＝［−３２：３１］：Ｒ１＝Ｋ２
【０１０８】
【表３０】
2004525468.tif 000032
【０１０９】
フォーマット２−即時：Ｒ１＝Ｋ２
【０１１０】
【表３１】
2004525468.tif 000033
【０１１１】
【表３２】
2004525468.tif 000034
【０１１２】
インストラクションフィールド：
Ｒ１：目的地レジスタ用３ビット指定子
Ｋ２：署名付き６ビット又は１６ビットリテラルソース
条件コード：
影響を受けない。
説明：
ソース値Ｋ２を目的地レジスタＲ１に書き込む。
例示的インストラクション：
ｍｏｖ  ｒ１、１（フォーマット１及び２）
【０１１３】
インストラクション：「ｏｕｔｐ」−周辺装置の出力ポートに書き込む
フォーマット１−即時、Ｋ２＝［０：１２７］：ｏｕｔｐ（Ｒ１、Ｋ２）
【０１１４】
【表３３】
2004525468.tif 000035
【０１１５】
インストラクションフィールド：
Ｒ１：ソースレジスタ用３ビット指定子
Ｋ２：署名なし７ビットリテラルソース
条件コード：
影響を受けない。
説明：
ソースオペランドＲ１を読み取み、結果をＩ／ＯアドレスＫ２で出力ポートに書き込む。
例示的インストラクション：
ｏｕｔｐ  ｒ１、ＳＣＵｐｃ（フォーマット１）
【０１１６】
インストラクション：「ｒｏｌ」−ビット単位左回転
フォーマット１−レジスタ：Ｒ１＝Ｒ２＜＜Ｒ３
【０１１７】
【表３４】
2004525468.tif 000036
【０１１８】
フォーマット２−即時、Ｋ３＝［０：１５］：Ｒ１＝Ｒ２＜＜Ｋ３
【０１１９】
【表３５】
2004525468.tif 000037
【０１２０】
インストラクションフィールド：
Ｒ１：目的地レジスタ用３ビット指定子
Ｒ２：ソースレジスタ用３ビット指定子
Ｒ３：ソースレジスタ用３ビット指定子
Ｋ３：４ビットリテラルソース
条件コード：
ｎ：結果が負、即ち、「ｍｓｂ」が１の場合に設定
ｚ：結果がゼロの場合に設定
ｖ：結果が奇数、即ち、「ｌｓｂ」が１の場合に設定
ｃ：結果が区間［１：２５５］にある場合に設定
説明：
ソースオペランドＲ２を左にｎ位置だけビット単位回転させ、結果を目的地レジスタＲ１に書き込む。回転量ｎは、１６を法としてＲ３又はＫ３のいずれかにより与えられる。
例示的インストラクション：
ｒｏｌ  ｒ１、ｒ２、ｒ３（フォーマット１）
ｒｏｌ  ｒ１、ｒ２、５（フォーマット２）
【０１２１】
インストラクション：「ｓｔ」−ＲＡＭに記憶する
フォーマット１−絶対インデックス付きベース変位、Ｋ３＝［−１２８：１２７］：*（Ｒ２＋Ｋ３）＝Ｒ１
【０１２２】
【表３６】
2004525468.tif 000038
【０１２３】
フォーマット２−絶対インデックス付きベース変位：*（Ｒ２＋Ｋ３）＝Ｒ１
【０１２４】
【表３７】
2004525468.tif 000039
【０１２５】
【表３８】
2004525468.tif 000040
【０１２６】
フォーマット３−絶対：*Ｋ２＝Ｒ１
【０１２７】
【表３９】
2004525468.tif 000041
【０１２８】
【表４０】
2004525468.tif 000042
【０１２９】
インストラクションフィールド：
Ｒ１：ソースレジスタ用３ビット指定子
Ｒ２：ベースレジスタ用３ビット指定子
Ｋ３：署名付き８ビット又は１６ビット変位
Ｋ２：１６ビット絶対アドレス
条件コード：
影響を受けない。
説明：
フォーマット１及び２については、ＲＡＭ目的地のアドレスを形成するためにベースレジスタＲ２及び変位Ｋ３を追加する。フォーマット３については、Ｋ２はＲＡＭ目的地のアドレスである。ソースレジスタＲ１を読み取り、結果をＲＡＭ目的地に書き込む。
例示的インストラクション：
ｓｔ  ｒ１、ｒ２、０ｘ１１（フォーマット１及び２）
ｓｔ  ｒ１、０ｘ１ＦＦＦ（フォーマット３）
【０１３０】
インストラクション：「ｓｕｂ」−２の補数引算
フォーマット１−レジスタ：Ｒ１＝Ｒ２−Ｒ３
【０１３１】
【表４１】
2004525468.tif 000043
【０１３２】
インストラクションフィールド：
Ｒ１：目的地レジスタ用３ビット指定子
Ｒ２：ソースレジスタ用３ビット指定子
Ｒ３：ソースレジスタ用３ビット指定子
条件コード：
ｎ：結果が負、即ち、「ｍｓｂ」が１の場合に設定
ｚ：結果がゼロの場合に設定
ｖ：オーバーフローが発生した場合に設定
ｃ：キャリーが発生した場合に設定
説明：
ソースオペランドを引算し、Ｒ２−Ｒ３、結果を目的地レジスタＲ１に書き込む。
例示的インストラクション：
ｓｕｂ  ｒ１、ｒ２、ｒ３（フォーマット１）
【０１３３】
インストラクション：「ｔｈｒｄ」−スレッド番号を取得する
フォーマット１−レジスタ：Ｒ１＝ｔｈｒｄ（）
【０１３４】
【表４２】
2004525468.tif 000044
【０１３５】
インストラクションフィールド：
Ｒ１：目的地レジスタ用３ビット指定子
条件コード：
影響を受けない。
説明：
スレッド番号を目的地レジスタＲ１に書き込む。
例示的インストラクション：
ｔｈｒｄ  ｒ１
【０１３６】
インストラクション：「ｘｏｒ」−ビット単位の排他ＯＲ
フォーマット１−レジスタ：Ｒ１＝Ｒ２＾Ｒ３
【０１３７】
【表４３】
2004525468.tif 000045
【０１３８】
フォーマット２−即時：Ｒ１＝Ｒ２＾Ｋ３
【０１３９】
【表４４】
2004525468.tif 000046
【０１４０】
【表４５】
2004525468.tif 000047
【０１４１】
インストラクションフィールド：
Ｒ１：目的地レジスタ用３ビット指定子
Ｒ２：ソースレジスタ用３ビット指定子
Ｒ３：ソースレジスタ用３ビット指定子
Ｋ３：１６ビットリテラルソース
条件コード：
ｎ：結果が負、即ち、「ｍｓｂ」が１の場合に設定
ｚ：結果がゼロの場合に設定
ｖ：（Ｒ２及びＲ３）＝＝Ｒ３、又は、代替的に（Ｒ２及びＫ３）＝＝Ｋ３の場合に設定
ｃ：結果が区間［１：２５５］にある場合に設定
説明：
ソースオペランドをビット単位排他ＯＲし、結果を目的地レジスタＲ１に書き込む。
例示的インストラクション：
ｘｏｒ  ｒ１、ｒ２、ｒ３（フォーマット１）
ｘｏｒ  ｒ１、ｒ２、０ｘ１００Ｆ（フォーマット２）
【０１４２】
本発明は、様々な方法で拡張することができる革新的な多段パイプラインをサポートするマルチスレッドプロセッサコア１２の独特な設計を提供する。条件コード機構により、追加の値試験を必要としない強力な新しい文字検出機構が導入される。スレッドに様々なスレッド構成、初期化、及び他のスレッド関連オペレーションに対してそのアイデンティティを判断させる「ｔｈｒｄ」インストラクション１４６は、マルチスレッド制御の強力なツールを提供する。監視制御ユニット２０は、全てのプロセッサコア１２スレッドによってアクセス可能な周辺機器として構成されるが、ハードウエアセマフォーを使用して極めて柔軟なスレッド状態検査、制御オペレーション、及びリソース制御を提供する。異なるアプリケーションにおいては、個々のスレッドは、「ＳＩＭＤ」又は「ＭＩＭＤ」オペレーションで作動するように構成することができる。監視制御ユニット２０はまた、強力な単一及び複数ステップ試験モードをサポートすることができる。これらの特徴は、内蔵マイクロプロセッサシステムの最先端技術における大きな進歩をもたらす。
【０１４３】
本発明の並列パイプラインアーキテクチャは、本質的に、コンテキストスイッチングのオーバーヘッドなしで、独立プロセッサスレッドの予測可能性を用いて並列入力／出力タスクを実行するので、内蔵プロセッサ用途に対する大きな技術的進歩である。
本発明のハードウエアセマフォーは、複数スレッドを停止、再初期化、及び再開始する能力と組み合わせて使用される。この組合せにより、より一般的なシステムリソースに対して競合する複数の同時スレッドのオペレーションを指示及び制限する極めて強力な機構が得られる。
【０１４４】
本発明は、従来技術システムよりも細かくセグメント化された多段パイプラインを利用する。このパイプラインは、選択されたパイプライン段階の種類と二重及び三重ポートメモリ技術の使用とを通じてメモリ又は周辺機器アクセス上の争いを選択的に回避することにより、複数スレッドの同時実行を可能にする。このパイプラインは、パイプライン段階単位でより細かなレベルの結果検査及び制御を可能にする。
本発明は、単一のパイプライン化プロセッサコアによって実行された時の単一又は複数スレッドの制御下で、複数データストリーム上の複数インストラクションストリーム、又は、様々な組合せのデータストリーム上の単一インストラクションストリームを実行することができる。
【０１４５】
本発明をいくつかの好ましい実施形態に関して説明したが、本発明の範囲から逸脱することなく本明細書の発明概念の通常の範囲に対して変更及び改良を行うことができることは当業者には明らかであろう。本明細書に示した実施形態は、単に発明的概念を例示するものであり、本発明の範囲を限定するように解釈すべきではない。
【図面の簡単な説明】
【０１４６】
【図１】内蔵アプリケーションのためのマルチスレッドプロセッサの概略図である。
【図２】最大８段階までの処理を示すブロック図である。
【図３】プロセッサパイプラインを通じたスレッドの進行を示す図式である。
【図４】スレッドプロセッサの潜在的な作動特性を示す図である。
【図５】読取及び書込オペレーションを受ける最大８個までの監視制御レジスタを示す図である。
【図６】代表的なアクセスポインタを示す図である。
【図７】代表的なアドレスモードを示す図である。
【図８】代表的なマシンインストラクションセットを示す図である。
【図９】「ＳＩＭＤ／ＭＩＭＤ」オペレーションのための代表的なパワーアップコードセグメントを示す図である。
【符号の説明】
【０１４７】
１０  シングルチップ内蔵プロセッサ
１２  中央８スレッドプロセッサコア
１４  クロック入力装置
１６  バッファ付き出力装置
１８  主ＲＡＭ
２０  監視制御ユニット
２２  周辺アダプタ
２４  周辺インタフェース装置
２６  外部メモリインタフェース
２８  試験ポート
【図１】
2004525468.tif 000048
【図２】
2004525468.tif 000049
【図３】
2004525468.tif 000050
【図４】
2004525468.tif 000051
【図５】
2004525468.tif 000052
【図６】
2004525468.tif 000053
【図７】
2004525468.tif 000054
【図８】
2004525468.tif 000055
【図９】
2004525468.tif 000056
【国際公開パンフレット】
2004525468.tif 000057
2004525468.tif 000058
2004525468.tif 000059
2004525468.tif 000060
2004525468.tif 000061
2004525468.tif 000062
2004525468.tif 000063
2004525468.tif 000064
2004525468.tif 000065
2004525468.tif 000066
2004525468.tif 000067
2004525468.tif 000068
2004525468.tif 000069
2004525468.tif 000070
2004525468.tif 000071
2004525468.tif 000072
2004525468.tif 000073
2004525468.tif 000074
2004525468.tif 000075
2004525468.tif 000076
2004525468.tif 000077
2004525468.tif 000078
2004525468.tif 000079
2004525468.tif 000080
2004525468.tif 000081
2004525468.tif 000082
2004525468.tif 000083
2004525468.tif 000084
2004525468.tif 000085
2004525468.tif 000086
2004525468.tif 000087
2004525468.tif 000088
2004525468.tif 000089
2004525468.tif 000090
2004525468.tif 000091
2004525468.tif 000092
2004525468.tif 000093
2004525468.tif 000094
2004525468.tif 000095
2004525468.tif 000096
2004525468.tif 000097
2004525468.tif 000098
2004525468.tif 000099
2004525468.tif 000100
2004525468.tif 000101
2004525468.tif 000102
【国際調査報告】
2004525468.tif 000103
2004525468.tif 000104
2004525468.tif 000105