(57)【要約】      （修正有）【課題】読取られたメモリ位置にデータを再書込みしてデータを復元する必要があるが、これによるメモリの読取り可能時間の減少、特にＦＲＡＭ（登録商標）における電力の消耗、また、メモリの平均寿命の減少を防ぐ。【解決手段】プロセッサは処理ユニットと、読取り時にデータを消失する型のメモリを具える。この処理ユニットは、読取り後メモリにデータを再生せしめる第１の形式の命令と、読取り後処理ユニットによりデータ再生せしめない第２の形式の命令とを生ぜしめるようにする。コンパイラは、データを読取っている位置で（４２）、その読取りがそのデータの最後の読取りであるかどうかを調べ（４３）、最後の読取りである場合にはデータ再生せしめない第２形式の命令を発生し（４５）、最後の読み出しである場合にはデータ再生せしめる第１形式の命令を発生する（４４）。【選択図】図４
2008217799.tif 000002
【特許請求の範囲】
【請求項１】
読取り時にデータを消失する性質を有する少なくとも１つのメモリ位置を有し、復元回路および復元を指示する信号を受け取る入力端子を含み、前記復元を指示する信号が前記入力端子に存在する場合に読取り後データを復元するようにし、前記復元とは、前記メモリ位置から読み出されたデータと同じ内容のデータを、該読み出しを行ったメモリ位置と同じメモリ位置に書き戻すことを意味することを特徴とするメモリ。
【請求項２】
第１の形式の命令に含まれる復元ビットに応答してデータを復元する復元回路を具えることを特徴とする請求項１記載のメモリ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は処理システム、かかるシステムの処理ユニット、かかる処理システムの命令を発生する方法およびコンパイラに関するものである。
【背景技術】
【０００２】
また、かかる処理システムは、メモリからのデータをロードせしめる命令を実行し得る処理ユニットをも具える。従来、メモリはダイナミックＲＡＭメモリ（ＤＲＡＭ）、またはスタティックＲＡＭメモリ（ＳＲＡＭ）を含み得るが、強誘電ＲＡＭ（ＦＲＡＭ）をも含めることができる。ＤＲＡＭおよび破壊的ＦＲＡＭは読取り破壊メモリである。即ち、データをＤＲＡＭおよびＦＲＡＭから読取る際にこのデータを消失する。メモリがＳＲＡＭであるかのようにＤＲＡＭまたはＦＲＡＭから再びデータを読取るために処理システムでプログラムを実行し得るようにするためには、読取られたメモリ位置にデータを再書込みすることによってデータを復元する必要がある。データを復元することによってメモリを読取り可能とする時間を減少し、特にＦＲＡＭにおいて電力を消耗する。また、データを復元することによってメモリの平均寿命も減少する。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
特に、本発明の目的はデータの復元に費やされる費用を低減せしめるようにした処理システム、かかるシステムの処理ユニット、かかる処理システムの命令を発生する方法およびコンパイラを提供せんとするにある。
【課題を解決するための手段】
【０００４】
本発明処理システムは読取り時にデータを消失する型の少なくとも１つのメモリ位置を有するメモリと；第１の形式および第２の形式の命令を有する処理ユニットと；を具え、この処理ユニットは、各々が実行時にメモリからのデータを読取る処理ユニットによって、この処理ユニットにより読取り後メモリにデータを復元せしめる第１の形式の命令と、読取り後処理ユニットによりデータを復元せしめない第２の形式の命令とを生ぜしめるようにしたことを特徴とする。
【０００５】
また、本発明は読取り時にデータを消失する位置を有するメモリと、このメモリからのデータを読取る第１の形式および第２の形式の命令を有し、第１の形式および第２の形式の命令のそれぞれ実行時にメモリにデータを復元し且つ復元しないようにする処理ユニットとを具える処理システムに対するプログラムの演算を実行する命令を発生する方法において、プログラムの演算がメモリ位置からのデータを読取るかどうかを決め；この演算にプログラムの実行中前記メモリからのデータを読取る他の演算が追従するかどうかを決め；前記演算にかかる他の演算が追従し得る際に第１の形式の命令を発生するとともに前記演算にかかる他の演算が追従し得ない際に第２の形式の命令を発生するステップを具えることを特徴とする。
【０００６】
本発明方法によれば、データをメモリから再び読取る必要のないことがプログラム構体から既知である場合にデータの復元を省略する特定の形式のプログラムを発生させることによってプログラムの実行中数個の復元演算を必要とし得るようにする。これは、例えば、一つのメモリ位置を用いてあるプログラム変数またはこの変数の（サブ）プログラム読取りを記憶する場合に相当し、この（サブ）プログラム読取りは（サブ）プログラムの終了前、または少なくとも変数への書込みが生ずる前でない他の読取りが追従しない。 本発明方法によれば、処理システムによって読取り破壊メモリからのデータを読取る命令の実行が、データが再び必要であるかどうかがプログラム構体から既知であるか否かに従って区別することができるプログラムを実行することができる。
【０００７】
本発明処理システムの一例では、メモリにデータを復元することとデータを復元しないこととの選択の可能性はメモリから読取ったすべての形式の命令に対して可能となるとともに（特に、ＬＯＡＤ命令のように）特定の形式の命令に限定されるものではない。この選択を提供する命令の形式は直接アドレスを有する命令およびレジスタ間接アドレスを有する命令を含むことができる。また、これらはメモリからロードされたデータである論理演算または算術演算を実施するレジスタをロードする命令を含むこともできる。
【発明を実施するための最良の形態】
【０００８】
図１は処理システムの一例を示す。この処理システムはデータメモリ１０、処理ユニット１２および命令メモリ１４を備える。データメモリ１０は読取り破壊メモリ部分１０ａ（例えばＦＲＡＭ）、読取り非破壊メモリ部分１０ｂおよび復元回路１１を具える。処理ユニット１２はアドレス−バス，データ−バスおよび復元信号ラインを経てデータメモリ１０に結合する。また、処理ユニット１２はアドレスバスおよび命令バスを経て命令メモリ１４に接続する。
【０００９】
処理システムの詳細は、例えば発明を損なうことなく、データメモリ１０のアドレスバスおよびデータバスを用いて命令メモリ１４をデータメモリ１０の一部分とすることによって与えられる。さらに、データメモリ１０のすべては読取り破壊メモリ部分１０ａそのものとする代りに、破壊的に読取ることができる。
【００１０】
作動に当たり、処理ユニット１２は命令メモリ１４からの順次の命令を読取る。命令の読取り後、処理ユニット１２によって命令を実行する。
【００１１】
図２は命令Ｉｎの実行の一例のタイミングプランを示す。この例では、処理ユニット１２によって命令Ｉｎを順次の連続ステージで処理する。第１ステージでは、処理ユニット１２によって命令Ｉｎを復号する。命令がデータメモリ１０からの読取りデータを含むことを処理ユニット１２が見いだす場合には、処理ユニット１２は命令Ｉｎからアドレスを取出して命令実行の第２ステージにこの命令を送る。このアドレスに応答してデータメモリ１０はアドレスによりアドレス指定されたメモリ位置からのデータを読取り、このデータをデータバスを経て処理ユニット１２に供給する。命令実行の第３ステージでは、処理ユニット１２によってデータバスからデータを読取る。命令実行の第４ステージでは、どんな機能が命令により含まれても処理ユニット１２によって実行する；例えば、処理ユニット１２によってデータをレジスタにロードし、このデータをレジスタの内容に加える。
【００１２】
読取り破壊メモリセル、例えば、強誘電ＲＡＭセルを含むデータメモリ１０の一部分１０ａからデータが読取られた場合およびデータメモリ１０から再びデータを読取る必要がある場合には、データをデータメモリ１０に復元する必要がある。命令実行の第４のステージ中どんな機能が命令により含まれても処理ユニット１２によって実行する場合にはデータの復元を開始することができる。復元はデータバスを経てアドレス指定されたメモリ位置にデータを書込み戻すことによって実現できるが、この復元は、データメモリ１０で内部的に、即ち、例えばＤＲＡＭおよびＦＲＡＭとして既知の復元回路を用いてバスを経てデータを戻し転送する必要なく、実現するのが好適である。
【００１３】
復元中、復元されるデータメモリ１０の部分は読取ることはできない。その理由は、データメモリ１０への他のアクセスが例えばパイプライン方式で実行される読取り命令Ｉn 後、次の命令Ｉn+1 の実行中に必要となる場合に遅延が生ずるからである（即ち、次の命令Ｉn+1 ＋１n+1 号は、命令Ｉn の実行の第２のステージでメモリをアドレス指定し処理ユニットによって命令Ｉn が実行される場合に次の命令Ｉn+1 に対するデータを容易に読取ることができる際に、開始することができる）。さらに、復元は処理システムが余分の電力を消費すると云うことを意味する。加うるに、あるメモリセルは失敗が予期される前の限定された回数を書込み得るだけである。これがため、データの復元はメモリの平均寿命を減少し得るようになる。
【００１４】
本発明によれば、処理ユニット１２が復元の必要な命令の方向のもとで信号を発生する場合にのみ復元を実行する。読取り破壊メモリ部分１０ａを処理ユニット１２とは別に集積回路に実現する場合には、この集積回路は処理ユニット１２の復元イネーブル出力端子に結合されたイネーブル入力端子を含め、読取り破壊メモリ部分１０ａにプロセッサが復元イネーブル入力端子に復元イネーブル信号を発生する際にのみ作動する復元回路を含めるようにするのが好適である。また、この復元を処理ユニット１２からデータバスを経てデータメモリ１０に書込み戻すことによって達成することもできる。
【００１５】
読取りおよび書込みは例えばマトリックスメモリからのデータの一行（ブロック）を読取り、且つこの行に復元することによってブロック状に実行することができる。この場合には、メモリからのブロックを更に読取ることなく、ブロックから種々のデータアイテムを読取る（キャッシュメモリのような）一時的メモリに保持することができる。ブロックを復元する必要のある場合には、ブロックをマトリックスから読取る必要のある命令のみがブロックを復元すべきことを示す必要がある。
【００１６】
図３はデータの復元が必要であるかどうかを処理ユニット１２に知らせる命令フォーマットの一例を示す。この命令３０は演算符号ＯＰＣ、演算数ＯＰ、および復元ビットＲＢを具える。復元ビットはデータメモリ１０からの読取りデータを含む命令にのみ存在させる必要がある。これらの命令はデータメモリ１０の全てから、即ち、読取り破壊メモリ部分１０ａおよび読取り非破壊メモリ部分１０ｂの双方から読取るために用いることができる。また、読取りを実行する演算符号ＯＰＣを有する全ての命令は復元ビットＰＢを含むのが好適であるが、この読取りビットをある演算符号に限定することもできる。個別の復元ビットを用いる代りに、異なる演算符号を用いて夫々復元を含めるか含めないかの同一の命令の種々の異なる変形を示すことができる。或は又、全ての演算符号に復元ビットＲＢを含めて、この復元ビットＲＢがメモリからの読取りを含まないこれら演算符号ＯＰＣの実行に影響を及ぼさないようにする。
【００１７】
図４は命令メモリ１４内での復元命令を発生するフローチャートを示す。このフローチャートの第１ステップ４０では、実行を行うべき演算を特定するソースプログラムを受ける。この第１ステップ４０では、メモリ位置をソースプログラムの変数に割当ててソースプログラム予備命令のリストに翻訳する。フローチャートの第２ステップ４１によってステップ４２、４３、４４、４５のループを制御する。この第２ステップによって、このループが上記リスト中の全ての予備命令に対して実行されるまで、リスト中の特定の各予備命令に対して一回ループを実行する。
【００１８】
ループの第１ステップ４２では、特定の予備命令が読取り破壊メモリ位置からのデータの読取りを含むかどうかを決めるようにする。データの読取りを含まない場合には、特定の予備命令に相当する物理的または仮想マシン命令を発生し、これによりこのマシン命令を実行する際にデータの復元を必要としないことを知らせるようにしたループの第２ステップ４５を実行する。特定の予備命令が読取り破壊メモリ位置からの読取りを含む場合には、特定の予備命令の実行後の（サブ）プログラムの実行中、且つ（サブ）プログラムの実行終了前、即ち、任意の他のデータがこの（メモリ）位置に書込まれる前にこのメモリ位置からデータを読取り得るかどうかをテストするループの第３ステップ４３を実行する。データを読取り得ない場合には、ループの第２ステップ４５を実行し、データを斯様に読取り得る場合には、特定の予備命令に相当するマシン命令を発生し、これによりこのマシン命令を実行する際にデータの復元を必要とすることを知らせるようにしたループの第４ステップ４４を実行する。ループの第３ステップ４３のテストは完了させる必要はない。即ち、データが上述したように読取り得ないことを確信をもって決め得ない場合には、データが上述したように読取られることが確実でない場合でも、または、良好なテストがデータが上述したように読取り得ないことを示す場合には、データを復元せしめるマシン命令を発生することができる。
【００１９】
復元命令／非復元命令の選択のためのループの第３ステップ４３のテストは予備命令を発生するソースプログラムからの情報を用いることによって改善することができる。メモリ位置は、これら変数に対して用いられるメモリ位置に基づくよりも、むしろプログラム変数およびプログラム構体に基づき“再び読取る”か否かを決めるのが好適である。さらに、変数の適用範囲に関する情報、即ち、メモリ位置が再び読取られるか否かを決める際に用いられるアレイに限定された指標化アドレス指定に関する情報を用いることができる（ローカル適用範囲はベースレジスタにより指向されたデータブロックを用いて実現することができる；この際“再び読取る”条件は含まれる実際のメモリ位置を知ることなく、このデータブロックに対してテストすることができる。アレイはアレイの任意の位置を指標状態で読取る場合には“読取る”をマークすることができる）。
【００２０】
ループの第３ステップ４３のテストは次の予備命令をとり、且つこれに次の処理を適用することによって簡単に実現することができる。
【００２１】
ａ）この予備命令が予備命令のリストにおける最後のものである場合には、復元を必要としないことをレポートする。
ｂ）この予備命令が無条件ジャンプ命令である場合には、ジャンプターゲットに対するこの手続きを繰返し実行する。
ｃ）この予備命令が条件付ジャンプである場合には、次の予備命令およびジャンプターゲットの双方に対する手続きを実行する。何れかの実行が復元の必要性をレポートする場合には、復元が必要であることをレポートし、さもなければ復元が必要でないことをレポートする。
ｄ）この予備命令が特定の予備命令によってアドレス指定された変数に書込まれる場合には、復元が必要でないことをレポートする。
ｅ）この予備命令が特定の予備命令によってアドレス指定された変数から読取られる場合には、復元が必要であることをレポートする。
ｆ）上述した予備命令の何れもがプログラム制御およびメモリ位置の何れにも影響を与える場合には、処理ａ）からのステップを次の予備命令に適用する。
【００２２】
より高度なアルゴリズムを用いて復元が必要かどうかを決める速度を改善することができる。例えば、リストを内部ジャンプターゲットまたはジャンプ命令を含まない予備命令のある“大きさ”（チャンク）に分割することができる。各大きさに対しては読取った破壊メモリの変数テーブルを作成する。
【００２３】
プログラム実行の終了時に終了するある“大きさ”でスタートする。かかる大きさに対しては、表には変数を再び読取らないことを示すエントリを最初に入れる。次いで、チャンクの予備命令により逆方向に作動させる。即ち、
ａ）予備命令が変数からデータを読取る場合にはデータをそれから読取ることを示すこの変数に対するエントリをチェックし、且つこのエントリに従ってマシン命令を発生する。この変数に対するテーブルの変更を“再び読取る”。
ｂ）予備命令によってデータを変数変化に書込む場合にはこの位置に対するエントリは“再び読取らない”。
【００２４】
（条件付）ジャンプで終了するチャンクに対しては変数に対するテーブルエントリは、ジャンプを行い得るチャンクの任意のテーブルがこの変数に対してエントリ“再び読取る”を有する場合には“再び読取る”に初期化するとともに層でない場合には“再び読取らない”に初期化する。次いで、上述したようにチャンクにより逆方向に作動させるようにする。ループの１部分であるチャンクは２回作動させる。即ち、一回目はチャンクの始端に対してテーブルエントリを決めるとともに二回目はマシン命令を発生する。ある演算システムバッファ、例えばＩ／Ｏバッファに対してはこれらバッファが一回だけ読取りを行って復元読取りをしないようにすることを特定することができる。復元ビットＲＢを有する命令を設定するかどうかの情報はプログラマによって与えることもできる。この目的のため、特定の変数をある命令後再び用いないことをプログラマが示す構成によってコンピュータ言語を強化することができる。この情報は図４のフローチャートの第４ステップ４３で用いることができる。勿論アセンブリレベルプログラムにおいて、書込み後メモリ位置にデータを復元するかどうかの決定はプログラマに対して全体的に残すことができる。 図４のフローチャートはコンピュータ読取り可能なメモリに記憶させたコンパイラを用いて実行することができ、汎用コンピュータで、または図１のコンピュータで実行することができる。
【００２５】
データを復元するかどうかの指示はデータを連続時間で読取る命令に直ちに含める必要はない。メモリのデータに復元ビットを含めることができる。この場合には、データを復元する必要があることを示すデータに復元ビットを含める際にのみデータを復元するように復元回路１１を構成する。コンパイラは、どの予備命令がデータをある位置から読取る直前の予備命令であることを決めるとともにこの直前の命令に対してこの位置に対する復元ビットをリセットする命令を発生する。位置を読取る他の命令は復元ビットをセットしたままとする（位置をこれに対する書込み命令後に一度だけ読取る場合には、コンパイラによって書込み命令により復元ビットをリセットする）。
【図面の簡単な説明】
【００２６】
【図１】図１は処理システムを示す。
【図２】図２は命令の実行例のタイミングを示す。
【図３】図３は命令フォーマットの一例を示す。
【図４】図４は命令を発生するフローチャートを示す。
【図１】
2008217799.tif 000003
【図２】
2008217799.tif 000004
【図３】
2008217799.tif 000005
【図４】
2008217799.tif 000006