(57)【要約】【課題】電子プロセッサ用のレジスタ転送ユニットを提供する。【解決手段】処理システムは命令プロセッサＩＰ１と、ＩＰ１によって処理されるスレッドコンテキストのようなデータを記憶するためのレジスタファイル３、４と、レジスタファイル３、４、ＩＰ１と接続されたレジスタ転送ユニットＲＴＵ５とを備えている。レジスタファイル３、４は、ＲＴＵ５とＩＰ１により読み出し及び設定が可能な異なる状態をとる。ＩＰ１とＲＴＵ５はレジスタファイル３、４の制御を行い、そのレジスタファイルの状態に反応してその機能を部分的に実行し、また、レジスタファイル３、４を処理後に解除する際に、その状態を設定する。本発明は、ストリームよりも多い数のレジスタファイル３、４が実現され、空きレジスタファイルを少なくとも１つ許容して、データのバックグラウンドロードおよびアンロードを達成するマルチストリームプロセッサに特に適している。【選択図】      図１
2006155646.tif 000002
【特許請求の範囲】
【請求項１】
電子処理システムであって、
少なくとも２つのレジスタファイルと、
前記レジスタファイル内のデータを用いて命令を処理するために前記少なくとも２つのレジスタファイルと接続された命令プロセッサと、
データレポジトリと、
前記少なくとも２つのレジスタファイルおよび前記データレポジトリと接続されたレジスタ転送ユニットとを有し、
前記命令プロセッサと前記レジスタ転送ユニットの両方が、前記レジスタファイルの状態を変更することが可能であり、前記命令プロセッサと前記レジスタ転送ユニットが、前記レジスタファイルの特定状態に従ってのみレジスタファイルを制御する電子処理システム。
【請求項２】
１つのレジスタファイルが、前記レジスタ転送ユニットと前記命令プロセッサによって同時に制御されることがない請求項１に記載の電子処理システム。
【請求項３】
前記レジスタファイルが５つの状態のうちいずれか１つの状態にあり、第１状態はファイルが前記命令プロセッサによって使用中であることを示し、第２状態は前記レジスタファイルが、記憶する有効データを有する前記命令プロセッサによって解除されたことを示し、第３状態は前記レジスタファイルが前記レジスタ転送ユニットの制御下にあることを示し、第４状態は前記レジスタファイルが有効データを持たず使用可能であることを示し、第５状態は前記レジスタファイルに有効データがロードされており、前記命令プロセッサによる処理の準備ができていることを示す請求項１に記載の電子処理システム。
【請求項４】
１つのレジスタファイルが状態１から状態２、そして状態３へ進んで前記レジスタ転送ユニットが前記レジスタファイルから有効データをアンロードし、状態４へ進み、再び状態３へ戻って前記レジスタ転送ユニットが前記レジスタファイルに新規の有効データをロードし、続いて状態５へ進み、最後に再び状態１へ戻る請求項３に記載の電子処理システム。
【請求項５】
あるレジスタファイルが状態１から直接状態４へ進み、次に状態３へ戻って前記レジスタ転送ユニットが新規データをロードし、次に状態５へ進み、再び状態１へ戻る請求項３に記載の電子処理システム。
【請求項６】
レジスタファイルとデータの状態が維持され、前記レジスタ転送ユニットが、レジスタファイル状態とデータ状態の両方に従ってレジスタファイルを制御する請求項３に記載の電子処理システム。
【請求項７】
前記命令プロセッサ、前記第１および第２レジスタファイル、前記レジスタ転送ユニットが全て、単一チップ上の半導体要素として実現される請求項１に記載の電子処理システム。
【請求項８】
前記命令プロセッサ、前記第１および第２レジスタファイル、前記レジスタ転送ユニット、前記データレポジトリが全て、単一チップ上の半導体要素として実現される請求項１に記載の電子処理システム。
【請求項９】
前記処理システムが、複数のハードウェアストリームを備えたマルチストリーミングシステムであり、前記命令プロセッサが複数のストリーム上で実行されている複数のスレッドからの処理命令を同時に処理することが可能であり、アクティブストリームの数よりも少なくとも１つ多い数の多数のレジスタファイルを有し、そのため、前記アクティブストリームの各々につき１つのレジスタファイルを制御しながら、前記命令プロセッサが全ての前記アクティブストリーム内の命令を実行する一方で、１つのレジスタファイルが前記レジスタ転送ユニットによって制御されることが可能である請求項１に記載の電子処理システム。
【請求項１０】
レジスタファイル内に転送されたデータがコンテキストスイッチを構成する請求項３に記載の電子処理システム。
【請求項１１】
前記命令プロセッサにより、あるスレッドコンテキストが特定のレジスタファイル内に記憶され、他の１つまたはそれ以上のレジスタファイル内で複数のコンテキストスイッチが発生しても前記特定のレジスタファイル内に保持される請求項１０に記載の電子処理システム。
【請求項１２】
前記レジスタ転送ユニットが少なくとも１つのインタラプト入力を有し、前記インタラプト入力上のインタラプトに応答して、前記レジスタ転送ユニットが特定のデータをレジスタファイルへロードし、次に、前記命令プロセッサを中断する請求項３に記載の電子処理システム。
【請求項１３】
電子プロセッサ内のレジスタファイルとデータレポジトリ間でデータを転送する方法であって、
（ａ）  命令プロセッサまたはレジスタ転送ユニットのいずれかによって設定可能な独自の状態をレジスタファイルが有するようにするステップと、
（ｂ）  レジスタファイルの特定の第１状態においてのみデータを転送するために、前記レジスタ転送ユニットによって前記レジスタファイルの制御を行うステップと、
（ｃ）  レジスタファイルの特定の第２状態においてのみ前記レジスタファイル内のデータを処理するために、前記命令プロセッサによって前記レジスタファイルの制御を行うステップと、
（ｄ）  前記レジスタ転送ユニットまたは前記命令プロセッサがレジスタファイルの操作を終了する度に、前記レジスタ転送ユニットか前記命令プロセッサのいずれかによってレジスタファイルに状態を設定するステップとを有する方法。
【請求項１４】
前記ステップ（ｂ）と（ｃ）において、個々のレジスタファイルは前記レジスタ転送ユニットと前記命令プロセッサによって同時に制御されることがない請求項１３に記載の方法。
【請求項１５】
前記レジスタファイルが５つの状態のうちいずれか１つの状態にあり、第１状態はファイルが前記命令プロセッサによって使用中であることを示し、第２状態は前記レジスタファイルが、記憶する有効データを有する前記命令プロセッサによって解除されたことを示し、第３状態は前記レジスタファイルが前記レジスタ転送ユニットの制御下にあることを示し、第４状態は前記レジスタファイルが有効データを持たず使用可能であることを示し、第５状態は前記レジスタファイルに有効データがロードされており、前記命令プロセッサによる処理の準備ができていることを示す請求項１３に記載の方法。
【請求項１６】
１つのレジスタファイルが状態１から状態２、そして状態３へ進んで前記レジスタ転送ユニットが前記レジスタファイルから有効データをアンロードし、状態４へ進み、再び状態３へ戻って前記レジスタ転送ユニットが前記レジスタファイルに新規の有効データをロードし、続いて状態５へ進み、最後に再び状態１へ戻る請求項１５に記載の方法。
【請求項１７】
レジスタファイルが状態１から直接状態４へ進み、次に状態３へ進み、そこでレジスタ転送ユニットが新しいデータをロードし、状態５へ進み、再び状態１に戻る請求項１５に記載の方法。
【請求項１８】
レジスタファイルとデータの状態が維持され、前記レジスタ転送ユニットが、レジスタファイル状態とデータ状態の両方に従ってレジスタファイルを制御する請求項１５に記載の方法。
【請求項１９】
前記処理システムが、複数のハードウェアストリームを備えたマルチストリーミングシステムであり、前記命令プロセッサが複数のストリームで実行されている複数のスレッドからの命令を同時に処理することが可能であり、アクティブストリームの数よりも少なくとも１つ多い数の多数のレジスタファイルを有し、そのため、前記アクティブストリームの各々につき１つのレジスタファイルを制御しながら、前記命令プロセッサが全ての前記アクティブストリーム内の命令を実行する一方で、１つのレジスタファイルが前記レジスタ転送ユニットによって制御される請求項１３に記載の方法。
【請求項２０】
命令ストリームよりも多い数のレジスタファイルを備えた電子プロセッサにおけるコンテキストスイッチの方法であって、
（ａ）  命令プロセッサによって第１有効コンテキストを有する第１レジスタファイルの制御を行い、前記第１レジスタファイルの状態を、前記レジスタファイルが前記命令プロセッサの制御下にあることを示す第１状態に設定し、前記第１レジスタファイル内のデータを用いて命令を実行し、
（ｂ）  前記第１レジスタファイルの前記命令プロセッサによる制御を解除し、前記第１レジスタファイルの状態を、前記レジスタファイルが、記憶する有効データを有する前記命令プロセッサにより解除されたことを示す第２状態に設定し、前記命令プロセッサによって第５状態にある第２レジスタファイルの制御を行い、第２レジスタファイルが第２有効コンテキストを有し、前記第２レジスタファイルを、前記第２レジスタファイルが前記命令プロセッサの制御下にあることを示す前記第１状態に設定し、
（ｃ）  レジスタ転送ユニットによって、前記第２状態にある前記第１レジスタファイルの制御を行い、前記レジスタファイルを状態３に設定し、前記第１レジスタファイル内のデータをデータレポジトリへ転送し、前記第１レジスタファイルを、前記レジスタファイルが有効データを持たず、新規のコンテキストに使用可能であることを示す第４状態に設定し、
（ｄ）  前記レジスタ転送ユニットによって、前記第４状態にある前記第１レジスタファイルの制御を行い、前記第１レジスタファイルに第２有効コンテキストをロードし、前記第１レジスタファイルを、前記第１レジスタファイルが、ロードされた有効コンテキストを有し、前記命令プロセッサによって使用される準備ができていることを示す前記５状態に設定することを特長とする方法。
【請求項２１】
ステップ（ａ）において、前記レジスタファイルの制御を行う必須条件として、前記命令プロセッサが第５状態にあるレジスタファイルをチェックする請求項２０に記載の方法。
【請求項２２】
ステップ（ｃ）において、前記レジスタファイルから前記データレポジトリへ有効データの制御および転送を行う必須条件として、前記レジスタ転送ユニットが第２状態にあるレジスタファイルをチェックする請求項２０に記載の方法。
【請求項２３】
ステップ（ｄ）において、前記レジスタファイルに新規の有効コンテキストをロードする必須条件として、前記レジスタ転送ユニットが前記第４状態にあるレジスタファイルをチェックする請求項２０に記載の方法。
【請求項２４】
ステップ（ｄ）において、前記レジスタ転送ユニットにインタラプト信号が送信された結果、前記レジスタ転送ユニットが前記状態４にあるレジスタファイルの制御を行い、前記レジスタファイルにロードされた前記データが前記インタラプト専用のものである請求項２０に記載の方法。
【請求項２５】
計算機であり、
データ入力およびデータ出力装置を有し、
電子メモリを有し、
少なくとも２つのレジスタファイルと、前記レジスタファイル内のデータを用いて命令を処理するための、前記少なくとも２つのレジスタファイルと接続された命令プロセッサと、データレポジトリと、前記少なくとも２つのレジスタファイルと前記データレポジトリと接続されたレジスタ転送ユニットを備えた電子処理システムを有し、
前記命令プロセッサと前記レジスタ転送ユニットの両方が前記レジスタファイルの状態を変更することができ、前記命令プロセッサと前記レジスタユニットが、前記レジスタファイルの特定な状態に従ってのみ、１つのレジスタファイルを制御する計算機。
【請求項２６】
１つのレジスタファイルが、前記レジスタ転送ユニットと前記命令プロセッサの両方によって同時に制御されることがない請求項２５に記載の計算機。
【請求項２７】
前記レジスタファイルが５つの状態のうちいずれか１つの状態にあり、第１状態はファイルが前記命令プロセッサによって使用中であることを示し、第２状態は前記レジスタファイルが、記憶する有効データを有する前記命令プロセッサによって解除されたことを示し、第３状態は前記レジスタファイルが前記レジスタ転送ユニットの制御下にあることを示し、第４状態は前記レジスタファイルが有効データを持たず使用可能であることを示し、第５状態は前記レジスタファイルに有効データがロードされており、前記命令プロセッサによる処理の準備ができていることを示す請求項２５に記載の計算機。
【請求項２８】
１つのレジスタファイルが状態１から状態２、そして状態３へ進んで前記レジスタ転送ユニットが前記レジスタファイルから有効データをアンロードし、状態４へ進み、再び状態３へ戻って前記レジスタ転送ユニットが前記レジスタファイルに新規の有効データをロードし、続いて状態５へ進み、最後に再び状態１へ戻る請求項２７に記載の計算機。
【請求項２９】
あるレジスタファイルが状態１から直接状態４へ進み、次に状態３へ戻って前記レジスタ転送ユニットが新規データをロードし、次に状態５へ進み、再び状態１へ戻る請求項２７に記載の計算機。
【請求項３０】
レジスタファイルとデータの状態が維持され、前記レジスタ転送ユニットが、レジスタファイル状態とデータ状態の両方に従ってレジスタファイルを制御する請求項２５に記載の計算機。
【請求項３１】
前記命令プロセッサ、前記第１および第２レジスタファイル、前記レジスタ転送ユニットが全て、単一チップ上の半導体要素として実現される請求項２５に記載の計算機。
【請求項３２】
前記命令プロセッサ、前記第１および第２レジスタファイル、前記レジスタ転送ユニット、前記データレポジトリが全て、単一チップ上の半導体要素として実現される請求項２５に記載の計算機。
【請求項３３】
前記処理システムが、複数のハードウェアストリームを備えたマルチストリーミングシステムであり、前記命令プロセッサが複数のストリームで実行されている複数のスレッドからの処理命令を同時に処理することが可能であり、アクティブストリームの数よりも少なくとも１つ多い数の多数のレジスタファイルを有し、そのため、前記アクティブストリームの各々につき１つのレジスタファイルを制御しながら、前記命令プロセッサが全ての前記アクティブストリーム内の命令を実行する一方で、１つのレジスタファイルが前記レジスタ転送ユニットによって制御されることが可能である請求項２５に記載の計算機。
【請求項３４】
レジスタファイル内に転送されたデータがコンテキストスイッチを構成する請求項２７に記載の計算機。
【請求項３５】
前記命令プロセッサにより、あるスレッドコンテキストが特定のレジスタファイル内に記憶され、他の１つまたはそれ以上のレジスタファイル内で複数のコンテキストスイッチが発生しても前記特定のレジスタファイル内に留まる請求項３４に記載の計算機。
【請求項３６】
前記データ入力および出力装置が、パケットデータネットワークと接続された特定用途向け集積回路（ＡＳＩＣ）を有し、前記電子メモリがデータキャッシュを有し、前記計算機がデータパケット処理専用のインターネットプロトコル（ＩＰ）ルータである請求項３３に記載の計算機。
【請求項３７】
前記レジスタ転送ユニットが少なくとも１つのインタラプト入力を有し、前記インタラプト入力上のインタラプトに応答して、前記レジスタ転送ユニットが特定のデータをレジスタファイルへロードし、次に、前記命令プロセッサを中断する請求項２７に記載の電子処理システム。
【請求項３８】
インターネットプロトコル（ＩＰ）データルータであって、
データキャッシュと、
前記データキャッシュを介してネットワークへ、またはそこから通信データを読み出すために、前記データパケットネットワークと接続したデータインターフェースと、
マルチストリーミングプロセッサ内のアクティブストリームの数よりも少なくとも１つ多い数のレジスタファイルを有する前記マルチストリーミングプロセッサとを有し、バスによって前記データキャッシュと接続された前記レジスタファイルと、前記バスとは別に前記複数のレジスタファイルと接続された命令プロセッサと、前記レジスタファイルと前記データキャッシュ間でデータを転送するために前記バスを制御可能な１つのレジスタ転送ユニットとを含み、
前記命令プロセッサが、前記レジスタファイルを用いて命令を処理するためにレジスタファイルの制御を行い、前記レジスタ転送ユニットが、前記レジスタファイルと前記データキャッシュ間でデータを転送するためにレジスタファイルの制御を行い、レジスタファイルの制御が、前記命令プロセッサか前記レジスタ転送ユニットのいずれかによって、セットされた前記レジスタファイルの状態に従って行われ、レジスタファイルが、前記レジスタ転送ユニットと前記命令プロセッサによって同時に制御されることはないインターネットプロトコル（ＩＰ）データルータ。
【請求項３９】
任意の個別のレジスタファイルの状態が５つあり、第１状態は前記レジスタファイルが前記命令プロセッサによって制御されていることを示し、第２状態は前記レジスタファイルが有効データを有することを示し、第３状態は前記レジスタファイルが前記レジスタ転送ユニットによって制御されていることを示し、第４状態は前記レジスタファイルがデータを有さず使用可能であることを示し、第５状態は前記レジスタファイルに処理すべきデータがロードされることを示す請求項３８に記載のＩＰデータルータ。
【請求項４０】
前記命令プロセッサによって、状態１にあるレジスタファイルを解除することで、前記命令プロセッサが、前記レジスタファイルに記憶されている有効データの存在に従って、状態を状態２または状態４のいずれかに設定し、前記レジスタ転送ユニットが、状態２にあるレジスタファイルを制御することで、その状態を状態３に設定し、データをアンロードし、前記レジスタファイルの状態を状態４に設定し、前記レジスタ転送ユニットが、状態４にあるレジスタファイルを制御することで、前記レジスタファイルにデータをロードし、その状態を状態５に設定し、前記命令プロセッサが、状態５にあるレジスタファイルの制御を行うことで、その状態を状態１に設定する請求項３９に記載のＩＰデータルータ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、全てのサイズおよび種類のデジタルプロセッサの範囲に関し、特に、このようなプロセッサ用のレジスタファイルへ、またレジスタファイルから情報をロードおよび記憶する装置および方法に関するものである。
【背景技術】
【０００２】
パーソナルコンピュータまたはネットワーク装置で使用されるマイクロプロセッサのような電子プロセッサは、プロセッサの命令が直接作用する値を持ったレジスタを含んでいる。例えば、単純な整数加算命令を実行するためには、２つのレジスタの各々に整数がロードされる。加算命令が２つのレジスタ内の整数に働き、結果の合計を第３のレジスタ内に記憶する。典型的には、次に結果の合計が、別の命令によってメモリの場所に保存される。
【０００３】
典型的なプロセッサはいくつかのレジスタを備えている。いくつかの従来設計では、レジスタは汎用目的の使用に設計されている。これ以外では、計算結果を累積したり、ポインタをメモリアドレスに保持したりといった特定の目的に特別のレジスタが設計される。従来、このようなレジスタ全ての集合がレジスタファイルとして公知である。
【０００４】
１つのプログラムまたはプログラムスレッドが実行を終了し、別のプログラムまたはプログラムスレッドが開始するか、またはインタラプトサービスルーチンが呼び出される際には、コンテキストを変更する必要がある。この変更は、この分野では、コンテキストスイッチとして知られている。コンテキストスイッチが起こると、レジスタ内の最終値を後の使用のために保存することが必要な場合がある。このような値が保存されると、新規スレッドのコンテキストをロードする必要がある。コンテキストは少なくとも、プログラムカウンタにロードされた、そのスレッドの第１命令のメモリ内にあるアドレスと、レジスタの最初の値とによって構成される。コンテキストスイッチの後、プログラムカウンタによって示された新規スレッドの第１命令が、新規の初期レジスタ値で動作しながら、取り出されて実行される。
【０００５】
本開示の目的のために、プロセッサの部分でいくつかの区別が重要である。例えばプロセッサの特性によって、区別する部分が比較的少数であったり、それよりも多かったりしてもよい。プロセッサによっては、高度に１つの機能専用であったり（例えば、組み込みマイクロコントローラ）、取り出しユニット、ロード／記憶ユニット、また、整数ユニット、浮動小数点ユニット、分岐予想ユニットのような命令を実行するための複数の機能ユニットといった複数の機能を備えている。さらにこの分野の用語は、例えば厳密にはプロセッサ、ＣＰＵ、マイクロプロセッサ等というものに対して曖昧に使用されている。
【０００６】
従来の曖昧に適用された用語と不正確な定義に関係なく、本明細書の目的のために明確な区分を行うことができる。プロセッサの中で違いのある部分は、命令ストリームから命令を実行する点である。プロセッサの別の部分がこれを実行することはない。本明細書の目的のために、命令を実行するプロセッサの部分を命令プロセッサ（ＩＰ）と呼ぶ。
【０００７】
従来技術における従来のプロセッサでは、他のあらゆるプログラムと同様に、コンテキストスイッチはＩＰが実行する一連の命令によって行われる。レジスタ値をメインメモリかキャッシュに保存するために、記憶命令がＩＰによって実行され、また、メインメモリかキャッシュから新規レジスタ値を取り出すために、ＩＰによってロード命令が用いられる。典型的には、保存するレジスタ値は数個あり、ロードするレジスタ値はそれよりも多くあるため、ＩＰサイクル内の比較的長い期間を使って多くの命令が要求される。数個のメモリブロックをロードおよび記憶する命令を備えたプロセッサでは、この過程を加速することができるが、やはりかなりのＩＰオーバーヘッドが含まれる。
【０００８】
メモリまたはキャッシュからロードあるいは記憶を行う命令は、典型的に、レジスタコンテンツ上で直接動作する命令よりも実行に長い時間を要し、コンテキストスイッチに必要な時間はこれよりもさらに長い。これら２つの理由のために、コンテキストスイッチはかなり多数のＩＰサイクルを消費する。ＩＰがコンテキストスイッチに従事している間は、古いまたは新規のスレッドに関する有益な計算は実行されない。そのため、コンテキストスイッチは純粋にオーバーヘッドである。コンテキストスイッチングは、別のスレッドを実行する前に完了していなければならない重要なオペレーションであるため、いかなるプログラムもコンテキストスイッチを中断することは許されない。
【０００９】
長い時間ＩＰを完全に使用不可にすることは、システム設計において大きな障害とされてきた。例えばこれにより、インタラプトのタイムリーな処理やリアルタイム入力への応答に障害が生じる。
【００１０】
多くのシステムにおいて、コンテキストスイッチは非常に頻繁に行われるため、処理機能のかなり大きな部分が無駄になってしまっている。例えば、Ｉ／Ｏデバイスを処理するためにインタラプトを使用するパーソナルコンピュータでは、インタラプトサービスルーチンが呼び出される度にコンテキストスイッチが働く。多くの入力に対して迅速に応答することが必要なリアルタイムシステムでは、コンテキストスイッチによる負担が非常に大きい。従来技術で適切に指摘されていないプロセッサ設計において、コンテキストスイッチの欠点は長年に渡って問題とされてきた。
【発明の開示】
【発明が解決しようとする課題】
【００１１】
本発明は、システム設計に極く少数の論理を追加するだけで、この長年に渡って存在する問題の解決方法を提示する。本発明では、新規のレジスタ転送ユニットがＩＰに関係なく、また正常の命令の処理と平行してレジスタ値をロードおよび記憶する。レジスタファイルへの、またレジスタファイルからのデータ転送を行うためにＩＰがロードおよび記憶命令を実行することはない。
【課題を解決するための手段】
【００１２】
本発明の好ましい実施例では、少なくとも２つのレジスタファイルと、前記レジスタファイル内のデータを用いて命令を処理するために前記少なくとも２つのレジスタファイルと接続された命令プロセッサと、データレポジトリと、前記少なくとも２つのレジスタファイルおよび前記データレポジトリと接続されたレジスタ転送ユニットとを備えた電子処理システムが得られる。前記命令プロセッサと前記レジスタ転送ユニットの両方が、前記レジスタファイルの状態を変更することが可能であり、前記命令プロセッサと前記レジスタ転送ユニットが、前記レジスタファイルの特定状態に従ってのみレジスタファイルを制御する。
【００１３】
この実施例では、レジスタファイルが、前記レジスタ転送ユニットと前記命令プロセッサによって同時に制御されることはない。さらにこの実施例では、前記レジスタファイルが５つの状態のうちいずれか１つの状態にあり、第１状態はファイルが前記命令プロセッサによって使用中であることを示し、第２状態は前記レジスタファイルが、記憶する有効データを有する前記命令プロセッサによって解除されたことを示し、第３状態は前記レジスタファイルが前記レジスタ転送ユニットの制御下にあることを示し、第４状態は前記レジスタファイルが有効データを持たず使用可能であることを示し、第５状態は前記レジスタファイルに有効データがロードされており、前記命令プロセッサによる処理の準備ができていることを示す。典型的に、レジスタファイルが状態１から状態２、そして状態３へ進んで前記レジスタ転送ユニットが前記レジスタファイルから有効データをアンロードし、状態４へ進み、再び状態３へ戻って前記レジスタ転送ユニットが前記レジスタファイルに新規の有効データをロードし、続いて状態５へ進み、最後に再び状態１へ戻る。
【００１４】
場合によっては、レジスタファイルが状態１から直接状態４へ進み、次に状態３へ戻って前記レジスタ転送ユニットが新規データをロードし、次に状態５へ進み、再び状態１へ戻る。
【００１５】
また場合によっては、レジスタファイルとデータの状態が維持され、前記レジスタ転送ユニットが、レジスタファイル状態とデータ状態の両方に従ってレジスタファイルを制御することもある。
【００１６】
いくつかの実施例では、命令プロセッサ、前記第１および第２レジスタファイル、前記レジスタ転送ユニットが全て、単一チップ上の半導体要素として実現される。別の実施例では、前記命令プロセッサ、前記第１および第２レジスタファイル、前記レジスタ転送ユニット、前記データレポジトリが全て、単一チップ上の半導体要素として実現される。
【００１７】
いくつかの好ましい実施例では、前記処理システムが、複数のハードウェアストリームを備えたマルチストリーミングシステムであり、前記命令プロセッサが複数のストリームで実行されている複数のスレッドから命令を同時に処理することが可能であり、レジスタファイルの数はアクティブストリームの数よりも少なくとも１つ多く、そのため、前記アクティブストリームの各々につき１つのレジスタファイルを制御しながら、前記命令プロセッサが全ての前記アクティブストリーム内の命令を実行する一方で、１つのレジスタファイルが前記レジスタ転送ユニットによって制御されることが可能である。
【００１８】
多くの実施例において、レジスタファイル内に転送されたデータがコンテキストスイッチを構成する。さらにいくつかの実施例では、前記命令プロセッサにより、あるスレッドコンテキストが特定のレジスタファイル内に記憶され、他の１つまたはそれ以上のレジスタファイル内で複数のコンテキストスイッチが発生しても前記特定のレジスタファイル内に留まる。さらに別の実施例では、前記レジスタ転送ユニットが少なくとも１つのインタラプト入力を有し、前記インタラプト入力のインタラプトに応答して、前記レジスタ転送ユニットが特定のデータをレジスタファイルへロードし、次に、前記命令プロセッサを中断する。
【００１９】
本発明の別の形態では、（ａ）命令プロセッサまたはレジスタ転送ユニットのいずれかによって設定可能な独自の状態を有するレジスタファイルを提供するステップと、（ｂ）レジスタファイルの特定の第１状態においてのみデータを転送するために、前記レジスタ転送ユニットによって前記レジスタファイルの制御を行うステップと、（ｃ）レジスタファイルの特定の第２状態においてのみ前記レジスタファイル内のデータを処理するために、前記命令プロセッサによって前記レジスタファイルの制御を行うステップと、（ｄ）前記レジスタ転送ユニットまたは前記命令プロセッサがレジスタファイルを伴う作業を終了する度に、前記レジスタ転送ユニットか前記命令プロセッサのいずれかによってレジスタファイルに状態を設定するステップとを有する、電子プロセッサ内のレジスタファイルとデータレポジトリ間でデータを転送する方法を提供する。好ましい実施例では、前記ステップ（ｂ）と（ｃ）において、個々のレジスタファイルは前記レジスタ転送ユニットと前記命令プロセッサによって同時に制御されることがない。
【００２０】
同様に好ましい実施例では、前記レジスタファイルが５つの状態のうちいずれか１つの状態にあり、第１状態はファイルが前記命令プロセッサによって使用中であることを示し、第２状態は前記レジスタファイルが、記憶する有効データを有する前記命令プロセッサによって解除されたことを示し、第３状態は前記レジスタファイルが前記レジスタ転送ユニットの制御下にあることを示し、第４状態は前記レジスタファイルが有効データを持たず使用可能であることを示し、第５状態は前記レジスタファイルに有効データがロードされており、前記命令プロセッサによる処理の準備ができていることを示す。典型的に、レジスタファイルが状態１から状態２、そして状態３へ進んで前記レジスタ転送ユニットが前記レジスタファイルから有効データをアンロードし、状態４へ進み、再び状態３へ戻って前記レジスタ転送ユニットが前記レジスタファイルに新規の有効データをロードし、続いて状態５へ進み、最後に再び状態１へ戻る。しかしいくつかの実施例では、レジスタファイルは状態１から直接状態４へ進み、ついで状態３へ戻って、前記レジスタ転送ユニットが新規データをロードし、状態５へ進み、最後に再び状態１へ戻ることもあろう。いくつかの実施例では、レジスタファイルとデータの状態が維持され、前記レジスタ転送ユニットが、レジスタファイル状態とデータ状態の両方に従ってレジスタファイルを制御する。
【００２１】
この方法のいくつかの好ましい実施例では、前記処理システムは、複数のハードウェアストリームを備えたマルチストリーミングシステムであり、前記命令プロセッサが複数のストリームで実行されている複数のスレッドから命令を同時に処理することが可能であり、レジスタファイルの数がアクティブストリームの数よりも少なくとも１つ多く、そのため、前記アクティブストリームの各々につき１つのレジスタファイルを制御しながら、前記命令プロセッサが全ての前記アクティブストリーム内の命令を実行する一方で、１つのレジスタファイルが前記レジスタ転送ユニットによって制御されることが可能である。
【００２２】
本発明のさらに別の形態では、命令ストリームよりも多いレジスタファイルを備えた電子プロセッサにおけるコンテキストスイッチの方法であって、（ａ）命令プロセッサによって第１有効コンテキストを有する第１レジスタファイルの制御を行い、前記第１レジスタファイルに、前記レジスタファイルが前記命令プロセッサの制御下にあることを示す第１状態を設定し、前記第１レジスタファイル内のデータを用いて命令を実行し、（ｂ）前記第１レジスタファイルの前記命令プロセッサによる制御を解除し、前記レジスタファイルの状態を、前記レジスタファイルが、記憶する有効データを有する前記命令プロセッサから解除されたことを示す第２状態を設定し、前記命令プロセッサによって第５状態にある第２レジスタファイルの制御を行い、第２レジスタファイルが第２有効コンテキストを有し、前記第２レジスタファイルを、前記第２レジスタファイルが前記命令プロセッサの制御下にあることを示す前記第１状態に設定し、（ｃ）レジスタ転送ユニットによって、前記第２状態にある前記第１レジスタファイルの制御を行い、前記レジスタファイルを状態３に設定し、前記第１レジスタファイル内のデータをデータレポジトリへ転送し、前記第１レジスタファイルを、前記レジスタファイルが有効データを持たず、新規のコンテキストに使用可能であることを示す第４状態に設定し、（ｄ）前記レジスタ転送ユニットによって、前記第４状態にある前記第１レジスタファイルの制御を行い、前記第１レジスタファイルに第２有効コンテキストをロードし、前記第１レジスタファイルを、前記第１レジスタファイルが、ロードされた有効コンテキストを有し、前記命令プロセッサによって使用される準備ができていることを示す前記５状態に設定する。
【００２３】
いくつかの実施例におけるこの方法では、あるレジスタファイルの制御を行う必須条件として、前記命令プロセッサが第５状態にあるレジスタファイルをチェックし、ステップ（ｃ）において、前記レジスタファイルから前記データレポジトリへ有効データの制御および転送を行う必須条件として、前記レジスタ転送ユニットが第２状態にあるレジスタファイルをチェックする。さらに、ステップステップ（ｄ）において、前記レジスタファイルに新規の有効コンテキストをロードする必須条件として、前記レジスタ転送ユニットが前記第４状態にあるレジスタファイルをチェックする。
【００２４】
ある実施例では、ステップ（ｄ）において、前記レジスタ転送ユニットにインタラプト信号が送信された結果、前記レジスタ転送ユニットが前記状態４にあるレジスタファイルの制御を行い、前記レジスタファイルにロードされた前記データが前記インタラプト専用のものである。
【００２５】
本発明のさらに別の形態では、データ入力およびデータ出力装置を有し、電子メモリを有し、少なくとも２つのレジスタファイルと、前記レジスタファイル内のデータを用いて命令を処理するための、前記少なくとも２つのレジスタファイルと接続された命令プロセッサと、データレポジトリと、前記少なくとも２つのレジスタファイルと前記データレポジトリと接続されたレジスタ転送ユニットとを備えた電子処理システムを有する計算機が得られる。前記命令プロセッサと前記レジスタ転送ユニットの両方が前記レジスタファイルの状態を変更することができ、前記命令プロセッサと前記レジスタユニットが、前記レジスタファイルの特定な状態に従ってのみ、レジスタファイルを制御する。
【００２６】
この計算機では、レジスタファイルが、前記レジスタ転送ユニットと前記命令プロセッサの両方によって同時に制御されることがない。典型的に、この計算機では、前記レジスタファイルが５つの状態のうちいずれか１つの状態にあり、第１状態はファイルが前記命令プロセッサによって使用中であることを示し、第２状態は前記レジスタファイルが、記憶する有効データを有する前記命令プロセッサによって解除されたことを示し、第３状態は前記レジスタファイルが前記レジスタ転送ユニットの制御下にあることを示し、第４状態は前記レジスタファイルが有効データを持たず使用可能であることを示し、第５状態は前記レジスタファイルに有効データがロードされており、前記命令プロセッサによる処理の準備ができていることを示す。典型的に、レジスタファイルが状態１から状態２、そして状態３へ進んで前記レジスタ転送ユニットが前記レジスタファイルから有効データをアンロードし、状態４へ進み、再び状態３へ戻って前記レジスタ転送ユニットが前記レジスタファイルに新規の有効データをロードし、続いて状態５へ進み、最後に再び状態１へ戻る。しかし場合によっては、あるレジスタファイルが状態１から直接状態４へ進み、次に状態３へ戻って前記レジスタ転送ユニットが新規データをロードし、次に状態５へ進み、再び状態１へ戻る。
【００２７】
いくつかの場合においては、レジスタファイルとデータの状態が維持され、前記レジスタ転送ユニットが、レジスタファイル状態とデータ状態の両方に従ってレジスタファイルを制御する。前記命令プロセッサ、前記第１および第２レジスタファイル、前記レジスタ転送ユニットが全て、単一チップ上の半導体要素として実現され、場合によってはチップがデータレポジトリを備えていてもよいこともある。
【００２８】
本計算機のいくつかの好ましい実施例では、前記処理システムが、複数のハードウェアストリームを備えたマルチストリーミングシステムであり、前記命令プロセッサが複数のストリームで実行されている複数のスレッドからの命令を同時に処理することが可能であり、アクティブストリームの数よりも少なくとも１つ多い数の多数のレジスタファイルを有し、そのため、前記アクティブストリームの各々につき１つのレジスタファイルを制御しながら、前記命令プロセッサが全ての前記アクティブストリーム内の命令を実行する一方で、１つのレジスタファイルが前記レジスタ転送ユニットによって制御されることが可能である。
【００２９】
多くの場合、レジスタファイル内に転送されたデータがコンテキストスイッチを構成する。さらに、前記命令プロセッサにより、スレッドコンテキストが特定のレジスタファイル内に記憶され、他の１つまたはそれ以上のレジスタファイル内で複数のコンテキストスイッチが発生しても前記特定のレジスタファイル内に留まる。
【００３０】
マルチストリーミング計算機のいくつかの実施例では、前記データ入力および出力装置が、パケットデータネットワークと接続された特定用途向け集積回路（ＡＳＩＣ）を有し、前記電子メモリがデータキャッシュを有し、前記計算機がデータパケット処理専用のインターネットプロトコル（ＩＰ）ルータである。
【００３１】
別の実施例において、前記レジスタ転送ユニットが少なくとも１つのインタラプト入力を有し、前記インタラプト入力のインタラプトに応答して、前記レジスタ転送ユニットが特定のデータをレジスタファイルへロードし、次に、前記命令プロセッサを中断する。
【００３２】
本発明のさらに別の形態においては、データキャッシュと、前記データキャッシュを介してネットワークへ、またはそこから通信データを読み出すために、前記データパケットネットワークと接続されたデータインターフェースと、マルチストリーミングプロセッサ内のアクティブストリームの数よりも少なくとも１つ多い数のレジスタファイルを有する前記マルチストリーミングプロセッサとを有し、前記レジスタファイルがバスによって前記データキャッシュと接続されており、命令プロセッサが、前記バスとは別に前記複数のレジスタファイルと接続され、レジスタ転送ユニットが、前記レジスタファイルと前記データキャッシュ間でデータを転送するために前記バスを制御できるようになっているインターネットプロトコル（ＩＰ）データルータが得られる。命令プロセッサが、前記レジスタファイルを用いて命令を処理するためにレジスタファイルの制御を行い、前記レジスタ転送ユニットが、前記レジスタファイルと前記データキャッシュ間でデータを転送するためにレジスタファイルの制御を行い、レジスタファイルの制御が、前記命令プロセッサか前記レジスタ転送ユニットのいずれかによって、前記レジスタファイルの状態セットに従って行われ、いかなるレジスタファイルも、前記レジスタ転送ユニットと前記命令プロセッサによって同時に制御されることはない。
【００３３】
本発明の多数の他の実施例におけるように、このデータルータには、任意の個別のレジスタファイルの状態が５つあり、第１状態は前記レジスタファイルが前記命令プロセッサによって制御されていることを示し、第２状態は前記レジスタファイルが記憶する有効データを有する前記命令プロセッサによって解除されたことを示し、第３状態は前記レジスタファイルが前記レジスタ転送ユニットによって制御されていることを示し、第４状態は前記レジスタファイルがデータを有さず使用可能であることを示し、第５状態は前記レジスタファイルに処理すべきデータがロードされることを示す。
【００３４】
データルータのいくつかの実施例においても、前記命令プロセッサによって、状態１にあるレジスタファイルを解除することで、前記命令プロセッサが、前記レジスタファイルに記憶する有効データの存在に従って、状態を状態２または状態４のいずれかに設定し、前記レジスタ転送ユニットが、状態２または状態４のいずれかにあるレジスタファイルを制御することで、その状態を状態３に設定し、獲得時の状態に従ってデータをロードまたはアンロードし、データのアンロード後、レジスタファイルの制御を解除する際に、前記レジスタファイルの状態を状態４に設定し、また、データのロード後、レジスタファイルを解除する際に、状態を５に設定し、前記命令プロセッサが、状態５にあるレジスタファイルの制御を行うことで、その状態を状態１に設定する。
【００３５】
以下の詳細な説明で示唆する本発明の様々な形態と実施例において、プロセッサの通常の作業量のかなりの部分が、１つまたはそれ以上の特有のレジスタ転送ユニットにより実行され、これにより、比較的少ない投資で処理能力の著しい増加が得られるプロセッサが利用可能となる。
【発明を実施するための最良の形態】
【００３６】
（好ましい実施例の説明）
図１は、本発明の好ましい実施例における簡略化したシステムアーキテクチャのブロック線図であり、命令プロセッサ（ＩＰ）１、２つのレジスタファイル３、４、レジスタファイル転送のために追加した構成要素を示している。普通の命令およびデータでは、ＩＰ１はメモリのロード／記憶ユニットを備えており、従来技術にあるようにメモリ２をを使用している。レジスタ転送ユニット（ＲＴＵ）５は新規で特有な機能的要素であり、レジスタファイルとデータソース６のいずれかの間でレジスタ値を送信するための論理を備えている。この例では、レジスタファイルは次に示す５つの基本的な状態を有する。（１）ＩＰにより（ＩＰの制御下で）使用中、（２）記憶する処理済データを有するＩＰによって解除される、（３）ＲＴＵの制御下にある、（４）有効データが無い、（５）処理するデータを含んでいる。
【００３７】
１つまたはそれ以上のサブ状態がある場合もある。本発明の好ましい実施例では、各レジスタファイル用のレジスタファイル状態インジケータが設けられており、このインジケータはフラグとして設定されたビットであってよく、レジスタファイル基本状態と、さらにあらゆるサブ状態を表示することができる。
【００３８】
そのため、レジスタファイルがＲＴＵとＩＰによって同時に制御されることはない。本発明の実施例では、レジスタファイルを制御するユニット（ＩＰまたはＲＴＵ）は、レジスタファイル内のレジスタの内容を変更することができる。従来技術では典型的に、ＩＰのみがレジスタファイル内のレジスタを制御した。
【００３９】
データソース６は、例えば高速なスクラッチパッドメモリ、データキャッシュ、メインメモリ、Ｉ／Ｏデバイスのようなデータの記憶が可能なあらゆる装置を設けることができるが、これらに限定されるものではない。ＩＰ、レジスタファイル、レジスタ転送ユニット、図示された、または図示されていないその他の要素は全て、１つの集積回路の１部分として実現されるか、または２つまたはそれ以上の半導体装置を備えたチップセットとして存在できることが当業者には明白であろう。
【００４０】
図１に示す実施例のシステムは、コンテキストスイッチングを含む複数の目的のために使用することができるが、これに限定されるものではない。例えば図１のシステムに含まれるオペレーションの典型的的なシーケンスを、図２のフローチャートに示す。図２中の左側のカラムは一般的にＩＰによって実行されるオペレーションを、右側には一般的にＲＴＵによって実行されるオペレーションを示す。この例において、「コンテキストスイッチング」という用語は一般的に、レジスタファイルへ、またレジスタファイルからのデータのロードおよびアンロードに含まれるオペレーションを意味するものとして使用される。
【００４１】
この例から、コンテキストスイッチを開始する際には、ＩＰがステップ２０１において、レジスタファイル３内の値で動作する（状態１）古いスレッドを実行中であり、レジスタファイル４は空であり（状態４）、新規データをロードするべくＲＴＵによって使用可能であると仮定する。ステップ２０２では、ＲＴＵは、新規データセットがレジスタファイルにロード可能であることを示す内部または外部イベントに応答し、レジスタファイル４がロード可能であると判断する。古いスレッドが実行を続ける間、ＲＴＵはレジスタファイル４を制御し、これを状態３に設定し、データソース６からレジスタファイル４内へ適切なデータを送信する。これらの値がロードされている最中にも、ＩＰによる古いスレッドの処理が続く。
【００４２】
ステップ２０４で古いスレッドが終了する際には、この例では、ステップ２０３において、ＲＴＵが既に新規データセットをレジスタファイル４内にロードしており、そのレジスタファイルが有効データを含んでおり、命令実行のためにＩＰにより使用可能であることを示す状態フラグを設定している（状態５）。ＩＰは、レジスタファイル３を使用してある時点でオペレーションを終了し、ステップ２０５でレジスタファイル３の制御を開放し、レジスタファイル３が解除されたことを示すフラグを設定する（状態２）。ステップ２０６で、ＩＰは、ＲＴＵでセットされたフラグをチェックすることにより、レジスタファイル４が新規で有効なコンテキストを備えていると判断し、ステップ２０８において、レジスタファイル４を用いて新規のスレッドの処理を開始する。一方で、ステップ２０５でＩＰによって解除されたレジスタファイル３の状態に応答して、ＲＴＵがステップ２０７でレジスタファイル３へのデータの記憶を開始し、状態を状態３に設定する。ステップ２０９でレジスタファイル３の記憶が終了しても、新規スレッドは中断されずに実行を継続する。ステップ２０９でレジスタファイル３の記憶が終了すると、ＲＴＵが、新規データをロードできるようにするために状態を状態４に設定する。その少し後で、ＲＴＵが再び状態４のレジスタファイル３を制御し、状態を状態３に設定し、新規の有効なデータをレジスタファイルにロードする。ＲＴＵは、ローディングが終了すると、レジスタファイル３の状態を、ＩＰ等に使用可能にするために状態５に設定する。
【００４３】
オペレーションのシーケンスではこれ以外にも実行できるオプションがある。例えば、ＩＰによるレジスタファイルの解除過程において、レジスタファイルは記憶する有効データを含んでいても、いなくてもよい。記憶する有効データがある場合には状態２に遷移する。有効データがない場合には、状態４へ直接遷移してよい。さらに、記憶する有効データがある場合、例えばデータをどこに記憶するかといったようにデータの扱いに違いがでる場合がある。この場合は、上述したように１つまたはそれ以上のサブ状態があってよい。また、例えば状態３についても同じことが言える。状態３は一般的に、レジスタファイルがＲＴＵの制御下にあることを示す。また、例えばデータがアンロードあるいはロードされているかどうかを示すサブ状態であってもよい。
【００４４】
この例で述べた過程は、２つのレジスタファイルの役割が反転する場合を除き、次の遷移の実行時に繰り返される。この様に、バックグラウンドにおいてデータのローディングとアンローディングが実行される一方で、フォアグラウンドにおいて命令処理が継続する。ＲＴＵを備えていない従来のＩＰでロードや記憶を行う際に必要な多くの非常に長いロードおよび記憶命令と比較して、ＩＰによる命令はコンテキストの保存やロードを必要としない。
【００４５】
レジスタファイルの状態はオペレーションにとって重要であり、また、好ましい実施例では、各レジスタファイルについての状態インジケータを備えたフラグビットが、レジスタファイル対して状態が変わる各接合点(遷移)において、ＲＴＵとＩＰによって維持あるいは訂正可能（設定可能）である。ある好ましい実施例では、上述したように、レジスタファイルに５つの基本状態があり、場合によっては、追加フラグビットまたはその他の方法で表示されるサブ状態が存在する。当業者は、レジスタファイルの状態を変更および維持する様々な方法があることを理解するであろう。上述した例では、単１のレジスタファイル、例えばレジスタファイル３についての典型的なシーケンスは、上で説明したように、ＩＰによって使用中（制御下）である状態（１）から、ＩＰにより解除され、ＲＴＵが記憶すべき有効データを含んでいる状態（２）、有効データのないＲＴＵの制御下にある状態（３）、有効データのないＲＴＵにより解除され、新規コンテキストのためにＲＴＵにより使用可能である状態（４）へと進み、新規データをロードしているＲＴＵの制御下にある状態（３）へ戻り、再び、ＲＴＵにより新規コンテキストをロードされ、ＩＰにより使用可能である状態（５）へ進み、この後シーケンスが継続する。レジスタファイルに対し、状態変更のシーケンスが同じである必要はない。
【００４６】
上述の説明をさらに進めて、特定の動作についての必要な条件に関して、ＩＰとＲＴＵの観点からこのオペレーションを見ることができる。ＲＴＵの観点から見ると、レジスタファイルからの有効データの記憶を開始するには、オペレーションはＲＴＵ＿Ｏｕｔとされ、記憶すべき有効データを有するＩＰによって解除された、レジスタファイルが必要である。レジスタファイルに新規データをロードするには（ＲＴＵ＿Ｉｎ）、ＲＴＵが次の３つの状態を検証しなければならない。（ａ）レジスタファイルがＩＰによって解除されており、（ｂ）レジスタファイル内には有効データが含まれておらず、（ｃ）有効データがロード可能である。
【００４７】
上述の例では、ＲＴＵは構成可能デバイスまたは論理セットである。つまり、ある方法で動作するべく構成することができ、レジスタファイルの状態変化、処理すべきデータの発生のような特定のイベントの発生によってトリガすることができる。実施例によってはこれ以外のイベント、例えば、ＩＰよりもＲＴＵに対して向けられる外部からの中断が関与してもよい。本発明の実施例によるあるプロセッサ、例えばインタラプトコントローラは、プロセッサ上のＲＴＵ専用のインタラプト信号を作り、次に、状態４にあるレジスタファイルを見て、そのレジスタファイルに、インタラプト専用であるコンテキストをロードし、自身が、ＩＰが新規にロードされたレジスタファイルを使用してインタラプトサービスルーチンへジャンプするのを阻止する。
【００４８】
あるＲＴＵは、一旦構成されたら、その後は１つの構成に従って実行するものであってよい。また別の実施例のあるＲＴＵは、ＩＰによって構成可能であるため、いくつかの使用可能な構成のうちの１つに向けることができる。別の構成においてＲＴＵは、異なる、構成特有のイベントセットに応答して、フラグを設定し、レジスタをロードおよびアンロードできる。ある実施例では、同一または異なる構成を備えたＲＴＵが２つ以上あってもよい。
【００４９】
この例では、２つのレジスタファイルを用いた、比較的単純なシングルストリーミングプロセッサであるとする。この場合、ＩＰが別のアクティブなレジスタ上で動作している際にＲＴＵの制御下にあってよいスペアまたはフローティングレジスタファイルが存在することに留意すること。別の、より洗練された実施例では、プロセッサは、複数のスレッドを同時に処理することが可能なマルチストリーミングプロセッサであってよく、また、処理される命令スレッドの数はアクティブなストリームの数と典型的に一致する。これらの場合、本発明の実施例では、レジスタファイルの数は、あらゆる時点においてアクティブであるストリームの数よりも少なくとも１つ多い。例えば、アクティブなハードウェアを４つ備え、４つのソフトウェアスレッドを同時に実行することが可能なマルチストリーミングプロセッサの場合、本発明の実施例では、少なくとも５つのレジスタファイルが存在し、そのうちの少なくとも１つがＲＴＵへ解除可能であり、ＩＰが４つのアクティブなスレッド内の４つのスレッドの処理を続ける。
【００５０】
そのため、上述したように、例えば複数の命令ストリームをパラレルに実行するために採用されたマルチストリーミングプロセッサのような特定の設計では、常にアクティブであるストリームの数よりもレジスタファイルを１つ多くすることが有益である。２つのレジスタファイルを単に交換する代わりに、有効データがロード可能であると推測して、状態４にある任意の使用可能なレジスタファイルに新規データをロードし、次に、ＲＴＵによってそのレジスタファイルに状態５のフラグが設定される。場合によっては、１つ以上の特別のレジスタファイルが使用可能な場合、古いコンテキストを任意の使用可能なレジスタファイル内に保存することができる。さらに別の実施例では、この特別のレジスタファイルを、頻繁に使用されるコンテキストを即座に使用できるよう保持するために用いることができる。例えば、非常に頻繁に使用されるインタラプトサービスルーチンのような、頻繁且つ間歇的に使用するアプリケーションがある場合、そのコンテキストを特別なレジスタファイルの１つに入れてロックして、ＩＰが別のレジスタファイル上で動作している場合には、コンテキストがその特別なレジスタファイルから除去されないようにすることができる。次に、ロックされたコンテキストはＩＰが即座に使用できるようになり、多くのサイクルを節約することができる。この説明では、「ロックされた」という用語は相対的な意味として用いている。このような実施例では、こうしたレジスタファイルをアンロックし、また、これを別のコンテキストに使用するための過程が典型的にあり、この過程は、ＲＴＵが使用可能な少なくとも１つの構成の１部分である。別の例では、データソース６が比較的遅い場合、複数の特別なレジスタファイルへの転送を、使用前に開始できる。
【００５１】
ある好ましい実施例でも同様に、上述したようにＲＴＵが１つ以上あってもよい。ＲＴＵを１つ以上有することにより、ある設計においてはいくつかの利点が得られる。複数のＲＴＵは、処理をさらに加速するべくパラレルに動作することができる。例えば、ＲＴＵを２つ有するシステムでは、一方がコンテキストおよび／またはデータセットを別のレジスタファイル内にロードしている間に、もう一方をコンテキストおよび／またはデータセットの記憶専用にすることができる。このような場合、本明細書の示唆の利点を得て、正確なオペレーションが構成可能なＲＴＵ用の利用可能な構成の１部分であってよいことが当業者には明白であろう。
【００５２】
本発明の特徴を具現化するシステムの設計目的により、データソース６は、恐らく多くある形態のうちの任意の１つを取れる。任意のデータ記憶方法を使用することができる。最高のシステムパフォーマンスには、例えば１プロセッササイクル中で複数の転送を行うことができる高速スクラッチパッドメモリを使用することが可能である。
【００５３】
ある実施例においては、たとえレジスタ値を記憶するために速度の遅いメモリや、Ｉ／Ｏデバイスを使用しても本発明の利点が得られる。新しいスレッドがアクティブになる十分前に先行してコンテキストスイッチが開始されていれば、古いスレッドが引き続き実行されている一方で、バックグラウンドにおいて転送を完了することができる。このようにして、データソースの速度制限は処理にほとんどまたは全く影響を与えないようにすることができる。
【００５４】
上述したように、本発明の様々な実施例によるＲＴＵは、再構成可能な実体であり、その動作においては任意の１つまたはそれ以上の構成をとる。構成とは、状態マシンのように、事象に応じてＲＴＵが追随する内部設定のことである。場合によってＲＴＵは１つの構成のみに拘束されるため、監視された事象に応じて常に同一の方法で動作する。別の実施例では、ＲＴＵは取り得る構成を１つ以上持ち、これらは、例えば命令プロセッサ、監視された事象の特定の組み合わせ、オフチップからの構成信号によってある方向から他へ構成の方向を変えることができる。ここで重要な点は構成の変更がどのように行われるかではなく（当業者は、これが種々の方法で行われることが理解できるであろう）、ＲＴＵが構成可能であるということである。
【００５５】
本発明の様々な実施例において、事象に応じてＲＴＵによって行われるデータ転送の性質は、現在の構成の１つの機能である。つまり、ＲＴＵは、追随している現在の構成に従って、あるレジスタファイル内のレジスタからメモリ内のある場所へ、またはこの逆に、１つのデータワードを転送することができる。
【００５６】
本質的に本発明は、１つまたはそれ以上のレジスタを使用するあらゆる処理デバイスに使用することができる。例えば、ネットワークルータは、データ通信ネットワークにおいてデータパケットを転送するために使用されるデバイスである。本発明の好ましい実施例ではこのようなルータに、パケット転送、サービス品質のネゴシエーション、ルーチングテーブルの更新のような機能に複数のスレッドを実行する専用のプロセッサを含むことができる。システム内の特別な作業エリアは、様々なタイプのパケットおよびその他のタイプのデータ用のパケットヘッダと負荷を記憶する。
【００５７】
いくつかのネットワークプロトコルとサービスのレベルでは、タイムクリティカルなデータ転送が必要となる。この環境でコンテキストスイッチ中の長い時間、プロセッサが使用不可になることは、リアルタイムな応答に支障をきたしかねない。この問題を解決するには、本発明の示唆にあるように、バックグラウンドでコンテキストスイッチを実行するか、または現在非アクティブなレジスタを転送する。このようなプロセッサ内のレジスタ転送ユニットは、インターネットプロトコル（ＩＰ）、非同期転送モード（ＡＴＭ）のように、ルータを流れる共通データタイプの標準化された内容の知識を以って、一般的に必要とされる転送を扱うように特別に設計することができる。
【００５８】
図３は、インターネットプロトコルルータのようなデータパケットルータの好ましい１実施例の線図である。この実施例では、インターネット（図示せず）のようなデータパケットネットワークに特定用途向け集積回路（ＡＳＩＣ）４０１が接続されている。ＡＳＩＣはネットワークからシリアルデータを受信し、これに応答して、バッファ４０２内のパケットを表すデジタルバイトを送信し、次にバッファが、パス４０６を介してローカルメモリ／キャッシュ４０３へパケットデータを転送する。キャッシュ４０３内にデータパケットが存在することにより、データが処理可能であることを示すフラグ（４０４）が１つまたはそれ以上設定される。
【００５９】
ＩＰ４１３は全ての命令処理について責任があり、好ましい実施例においてＩＰは、複数の命令ストリームからの命令を同時に処理することが可能である。この実施例では、複数のレジスタファイル（ＲＦ）４０８〜４１２が存在する（この場合は５つのＲＦ）。典型的にはには、ストリームよりも少なくとも１つ多いレジスタファイルがあるため、この実施例のプロセッサではストリームの数は４つということになる。ＲＦとキャッシュ４０３は通信パス４０５で接続されている。
【００６０】
この実施例のＲＴＵ４０７は、新規パケットデータをＩＰ４１３によって処理するため、キャッシュ４０３からＲＦ４０８〜４１２へロードし、処理が終わると有効データをＲＦからキャッシュ４０３へ記憶し、データは、接続されたネットワーク上へパケットとしてＲＴＵから再送出される。別の実施例では、レジスタファイルからアンロードされたデータは異なるパスを介してネットワーク上に再送出される。
【００６１】
この実施例では、ＲＦを、命令を実行してデータを処理する場合にはＩＰ４１３によって、また、ＲＦとキャッシュ間でデータを転送する場合にはＲＴＵによって制御することができる。しかし、上述した本発明の別の実施例のように、あらゆる単一のレジスタファイルがＩＰとＲＴＵの両方によって同時に制御されることはない。どちらかというと、ＩＰは、任意のレジスタファイルの制御を行い、例えば、ＩＰまたはＲＴＵのいずれかによる設定が可能な、点線４１５で示す状態フラグに応答して、処理する。ＲＴＵは、任意のレジスタファイルの制御を行い、この実施例でパス４１５で示す状態フラグと、データ状態を示す状態フラグ（４０４）の両方に応答して、データをロードまたはアンロードする。
【００６２】
この実施例では、ＲＦの状態は、上述したように５つの状態を表す状態インジケータ（状態フラグ）で示される。別の実施例では、レジスタファイルの状態を別の形で示すこともできる。別の形とはすなわち次の通りである。（１）ＩＰにより使用中（ＩＰの制御下にある）、（２）記憶するデータを含む、（３）データをロードまたはアンロードするためにＲＴＵの制御下にある、（４）有効データが空であり使用可能、（５）処理準備のできたデータをロード済。
【００６３】
従来のプロセッサと同様に、レジスタファイルが状態１にある際には、ＩＰは全てのレジスタファイルと緊密に結合されている。この結合を線４１６で示す。ＩＰは、ＲＴＵがＲＦ状態フラグを状態（５）に設定して、ＩＰが新規パケットデータを処理できるようになるのに反応してＲＦ（４０８〜４１２）の制御を行い、制御を実行する中で、ＲＦの状態フラグを状態（１）に設定する。１つのＲＦ内のデータ処理を終了すると、ＩＰは制御を解除し（終了し）、状態フラグを状態（２）に設定する。ＲＴＵは、ＲＦの制御を行い、状態を３に設定し、バス４０５を制御して、ＲＦからキャッシュ４０３へ制御接続４１４を介して有効データを転送することにより状態（２）のフラグに応答する。ＲＴＵは、ＲＦのアンロードを終了すると、状態フラグを（４）に設定する。ＲＴＵはこの過程でキャッシュ内のデータにフラグを設定し、他の要素に対してデータの移動を表す（例えば、ネットワーク上のデータパケットとして送信する）。
【００６４】
この実施例では、キャッシュ４０３内に転送された処理されるべきデータによって、ＲＴＵ４０７にアクセス可能なフラグが設定され、また、ＲＴＵ４０７は、状態（４）のＲＦの制御を行い、ＲＦの状態を３に設定し、再びバス４０５の制御を介して、処理する新規データをロードすることにより処理すべき新規データと状態（４）にあるＲＦとに反応する。ＲＦのロード後に、ＲＴＵがフラグを状態（５）に設定するため、ＩＰは、処理する新規データを、その準備ができた時点で認識する。
【００６５】
この方法では、ＲＦがバックグラウンドにおいてパケットデータのロードおよびアンロードを行い、その一方で、ＩＰは、データ切り替え（ロード／アンロード）操作によるオーバーロードがなく、ＲＦ内のデータ処理の重要な作業に利用される。最終的な結果は、ルータの処理能力が著しくアップする。
【００６６】
本発明の精神と範囲を逸脱しない限り、本明細書で述べた本発明の実施例への様々な変更や修正が可能であることが当業者には明白であろう。例えば、説明したレジスタ転送ユニットの論理をケイ素で実現できる方法が多くある。同様に、実現および使用できるレジスタファイルの数と大きさや、レジスタファイルまたはファイルへ、あるいはこれらからデータを転送する方法の許容範囲は広い。さらに当業者は、他の実施例で必要なストリームの数、レジスタファイルの数、レジスタファイル状態の数、状態情報を設定および維持する方法等を含む多数の可能な変形があることが明白であろう。さらに、本発明を単一のチップ、チップセットで実現することが可能であり、また、業界において、本発明の異なる実施例によるプロセッサの用途は非常に多い。本発明は幅広い請求項によってのみ限定されるものである。
【図面の簡単な説明】
【００６７】
【図１】本発明の好ましい実施例における、２つのレジスタファイルを操作するレジスタ転送ユニットの主要構成要素を示すブロック線図
【図２】本発明の好ましい実施例のコンテキストスイッチに含まれる一連のステップを示すフローチャートである。
【図３】本発明の実施例によるＩＰルータの線図である。
【図１】
2006155646.tif 000003
【図２】
2006155646.tif 000004
【図３】
2006155646.tif 000005
【外国語明細書】
2006155646.tif 000006
2006155646.tif 000007
2006155646.tif 000008
2006155646.tif 000009
2006155646.tif 000010
2006155646.tif 000011
2006155646.tif 000012
2006155646.tif 000013
2006155646.tif 000014
2006155646.tif 000015
2006155646.tif 000016
2006155646.tif 000017
2006155646.tif 000018
2006155646.tif 000019
2006155646.tif 000020
2006155646.tif 000021
2006155646.tif 000022
2006155646.tif 000023
2006155646.tif 000024
2006155646.tif 000025
2006155646.tif 000026
2006155646.tif 000027
2006155646.tif 000028
2006155646.tif 000029
2006155646.tif 000030
2006155646.tif 000031
2006155646.tif 000032
2006155646.tif 000033
2006155646.tif 000034
2006155646.tif 000035
2006155646.tif 000036
2006155646.tif 000037