(57)【要約】【課題】デッドロック現象を未然に回避することが可能なメモリ、電子機器及び、メモリの制御方法を提供することを目的とする。【解決手段】ホストコンピュータ１４のアプリケーションプログラムが設定した、メモリ６に対するデータ転送を停止する上限となるデータ転送停止位置に相当するデータ量をメモリ６のバッファメモリアレイ６ａに記憶された現記憶済データ量が上回る場合、バッファメモリコントローラ６ｂはバッファメモリアレイ６ａからのデータ読み出しを停止し、タイマー回路８のトリガーによって所定時間後にデータ読み出しを再開する装置を以ってして課題の解決に当る。【選択図】　図２
2004022046.tif 000002
【特許請求の範囲】
【請求項１】
ホスト装置からデータの転送を受け、当該データを記憶するメモリであって、
前記データを記憶するバッファメモリアレイと、
前記バッファメモリアレイに記憶された前記データの現記憶量値を前記ホスト装置へと通知するデータ記憶量通知手段と、
前記データ記憶量通知手段による前記現記憶量値の前記ホスト装置への通知の結果に基づき、当該ホスト装置が前記データの転送を停止したときから所定時間経過した後に、前記バッファメモリアレイに記憶された前記データを出力する時限データ出力手段とを具備したことを特徴とするメモリ。
【請求項２】
前記時限データ出力手段が前記データを出力したときの前記バッファメモリアレイに記憶された前記データの現記憶量値を記憶する現記憶量値記憶手段と、
前記データ記憶量通知手段による前記現記憶量値の前記ホスト装置への通知の結果に基づき、前記ホスト装置が前記データの転送を停止したとき、前記バッファメモリアレイに記憶された前記データの現記憶量値と、前記現記憶量値記憶手段に記憶された前記現記憶量値に基づく閾値とを比較する比較手段と、
前記比較手段の比較結果、前記データの現記憶量値が、前記現記憶量値記憶手段に記憶された前記現記憶量値に基づく閾値を越えた場合は、前記バッファメモリアレイに記憶された前記データを出力するデータ強制出力手段とを具備したことを特徴とする請求項１記載のメモリ。
【請求項３】
ホスト装置から転送されるデータを記憶し、メモリに対する前記データの記憶量が第１の所定値を越えた場合、前記データの転送を停止する当該ホスト装置に用いられ、
バッファメモリアレイと、
前記バッファメモリアレイにおける前記データの入出力を制御するメモリコントローラであって、
前記データの記憶量が第２の所定値に達した場合、前記バッファメモリアレイから前記データを読み出して出力するデータ出力開始手段と、
前記第２の所定値を前記第１の所定値よりも小さな値に設定し、前記バッファメモリアレイに記憶された前記データの出力を行うデータ出力制御手段を有するメモリコントローラとを具備したことを特徴とするメモリ。
【請求項４】
ホスト装置からデータの転送を受け、当該データを記憶するメモリを有する電子機器であって、
前記データを記憶するバッファメモリアレイと、
前記バッファメモリアレイに記憶された前記データの現記憶量値を前記ホスト装置へと通知するデータ記憶量通知手段と、
前記データ記憶量通知手段による前記現記憶量値の前記ホスト装置への通知に基づき、当該ホスト装置が、前記記憶量値と所定値とを比較し、その比較結果に基づいて前記データの転送を停止したときから所定時間経過した後に、前記バッファメモリアレイに記憶された前記データを出力する時限データ出力手段とを具備したことを特徴とする電子機器。
【請求項５】
前記時限データ出力手段が前記データを出力したときの前記バッファメモリアレイに記憶された前記データの現記憶量値を記憶する現記憶量値記憶手段と、
前記データ記憶量通知手段による前記現記憶量値の前記ホスト装置への通知の結果に基づき、前記ホスト装置が前記データの転送を停止したとき、前記バッファメモリアレイに記憶された前記データの現記憶量値と、前記現記憶量値記憶手段に記憶された前記現記憶量値に基づく閾値とを比較する比較手段と、
前記比較手段の比較結果、前記データの現記憶量値が、前記現記憶量値記憶手段に記憶された前記現記憶量値に基づく閾値を越えた場合は、前記バッファメモリアレイに記憶された前記データを出力するデータ強制出力手段とを具備したことを特徴とする請求項４記載の電子機器。
【請求項６】
メモリから現状のデータの記憶量を得て、当該記憶量が第１の所定値を越えた場合、前記データの転送を停止するホスト装置から転送されるデータが入力される電子機器であって、
バッファメモリアレイにおけるデータの入出力するメモリにおいて、
前記データの記憶量が第２の所定値に達した場合、前記バッファメモリアレイからデータを読み出して出力するデータ出力開始手段と、
前記第２の所定値を前記第１の所定値よりも小さな値に設定し、前記バッファメモリアレイに記憶された前記データの出力を行うデータ出力制御手段を有するメモリとを具備したことを特徴とする電子機器。
【請求項７】
ホスト装置からデータの転送を受け、当該データをバッファメモリアレイに記憶するメモリの制御方法であって、
前記バッファメモリアレイに記憶された前記データの現記憶量値をホスト装置へと通知するデータ記憶量通知ステップと、
前記データ記憶量通知ステップにおける前記現記憶量値の前記ホスト装置への通知の結果に基づき、当該ホスト装置が前記データの転送を停止したときから所定時間経過した後に前記バッファメモリアレイに記憶された前記データを出力する時限データ出力ステップとを具備したことを特徴とするメモリの制御方法。
【請求項８】
前記時限データ出力ステップにおいて、前記データが出力されたときの前記バッファメモリアレイに記憶された前記データの現記憶量値を記憶する現記憶量値記憶ステップと、
前記データ記憶量通知ステップによる前記現記憶量値の前記ホスト装置への通知の結果に基づき、前記ホスト装置が前記データの転送を停止したとき、前記メモリアレイに記憶された前記データの現記憶量値と、前記現記憶量値記憶手段に記憶された前記現記憶量値に基づく閾値とを比較する比較ステップと、
前記比較ステップの比較結果、前記データの現記憶量値が、前記現記憶量値記憶手段に記憶された前記現記憶量値に基づく閾値を越えた場合は、前記メモリアレイに記憶されたデータを出力するデータ強制出力ステップとを具備したことを特徴とする請求項７記載のメモリ制御方法。
【請求項９】
メモリから現状のデータの記憶量を得て、当該記憶量が第１の所定値を越えた場合、データの転送を停止するホスト装置から転送されるデータを記憶するバッファッメモリアレイを有するメモリの制御方法であって、
前記バッファメモリアレイにおけるデータの入出力を制御するステップであって、
前記データの記憶量が第２の所定値に達した場合、前記バッファアメモリレイからデータを読み出して出力するデータ出力開始ステップと、
前記第２の所定値を前記第１の所定値よりも小さな値に設定し、前記バッファメモリアレイに記憶されたデータの出力を行うデータ出力制御ステップとを具備したことを特徴とするメモリの制御方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はパーソナルコンピュータ等のホスト装置に用いられる周辺機器に用いられるメモリ、このメモリを搭載した電子機器及び、メモリの制御方法に関し、とりわけ、バッファに対するホスト装置側と、周辺装置側におけるデータの入出力条件に起因するデッドロック現象を回避するシステムに属する。
【０００２】
【従来の技術】
本発明の従来の技術として、特開２００１−２９０６０５号公報（公開日：平成１３年１０月１９日）に開示の光ディスク記録システムがある。
【０００３】
本システムにおいては、ホストコンピュータがタイマーで設定した時間間隔で光ディスク記録装置におけるバッファメモリの空きブロック数を知り、必要なブロック数のみの記録データを転送する。
【０００４】
本システムによれば、バッファメモリが空きになることが未然に防止でき、書き込みデータの連続性を保証することができるというものである。
【０００５】
しかしながら、本システムにおいてはホスト装置側のアプリケーションプログラムが設定するメモリに対するデータの書き込み条件と、周辺装置側のメモリに対するデータの読み出し条件によって生じるデッドロック現象を回避することができない。
【０００６】
このデッドロック現象は、アプリケーションプログラムがメモリに”所定の値”までデータが書き込まれている場合、周辺装置側へのデータ転送を停止する条件が設定され、この読み出し条件が、アプリケーションプログラムが設定した”所定の値”よりも高いデータの書き込み量に設定されている場合に生じる。
【０００７】
このように、アプリケーションプログラム側のメモリに対する書き込み条件と、周辺装置側のメモリに対するデータの読み出し条件が考慮されていない従来のシステムにおいてはデッドロック現象を未然に回避することができない。
【０００８】
ホストコンピュータに用いられるアプリケーションプログラム側における周辺装置側のメモリに対する書き込み条件は今のところコンピュータシステムの分野では規定が存在しない。
【０００９】
特に、ホストコンピュータと周辺装置の製造業者が異なる場合、これらを組み合わせたシステムにおいては、デッドロック現象の発生の可能性が高い。
【００１０】
【発明が解決しようとする課題】
本発明は上記問題を鑑みて、デッドロック現象を未然に回避することが可能なメモリ、このメモリを搭載した電子機器及び、メモリの制御方法を提供することを目的とする。
【００１１】
【課題を解決するための手段】
上記課題を解決するために本発明のメモリは、
ホスト装置からデータの転送を受け、当該データを記憶するメモリであって、
前記データを記憶するバッファメモリアレイと、
前記バッファメモリアレイに記憶された前記データの現記憶量値を前記ホスト装置へと通知するデータ記憶量通知手段と、
前記データ記憶量通知手段による前記現記憶量値の前記ホスト装置への通知の結果に基づき、当該ホスト装置が前記データの転送を停止したときから所定時間経過した後に、前記バッファメモリアレイに記憶された前記データを出力する時限データ出力手段とを具備したことを特徴とする。
【００１２】
上記課題を解決するために本発明の電子機器は、
ホスト装置からデータの転送を受け、当該データを記憶するメモリを有する電子機器であって、
前記データを記憶するバッファメモリアレイと、
前記バッファメモリアレイに記憶された前記データの現記憶量値を前記ホスト装置へと通知するデータ記憶量通知手段と、
前記データ記憶量通知手段による前記現記憶量値の前記ホスト装置への通知に基づき、当該ホスト装置が、前記記憶量値と所定値とを比較し、その比較結果に基づいて前記データの転送を停止したときから所定時間経過した後に、前記バッファメモリアレイに記憶された前記データを出力する時限データ出力手段とを具備したことを特徴とする。
【００１３】
上記課題を解決するために本発明のメモリの制御方法は、
ホスト装置からデータの転送を受け、当該データをバッファメモリアレイに記憶するメモリの制御方法であって、
前記バッファメモリアレイに記憶された前記データの現記憶量値をホスト装置へと通知するデータ記憶量通知ステップと、
前記データ記憶量通知ステップにおける前記現記憶量値の前記ホスト装置への通知の結果に基づき、当該ホスト装置が前記データの転送を停止したときから所定時間経過した後に前記バッファメモリアレイに記憶された前記データを出力する時限データ出力ステップとを具備したことを特徴とする。
【００１４】
【発明の実施の形態】
本発明の実施の形態について説明するために、図１〜図５を用いて説明する。
【００１５】
図１は本発明の実施の形態における周辺装置である光ディスク記録再生装置と、ホスト装置であるホストコンピュータのブロック図である。
【００１６】
図１に示される光ディスク記録再生装置（ドライブ）１は、装置内のシステム全体を統括制御せしめるシステム制御部２と、光ディスクの回転を制御するディスク駆動制御部３と、システム制御部２を動作させるシステムプログラムが格納されたＲＯＭ（リードオンリーメモリ）４と、システム制御部の動作時にシステムプログラムの命令やデータを一時記憶するＲＡＭ（ランダムアクセスメモリ）５と、システムにおいてデータをバッファリングするためのバッファメモリ６とを有している。
【００１７】
更に光学式ピックアップ１２の発する光ビームを光ディスクの信号記録面に対して相対的に移動させるためのピックアップ制御部７と、システムに対して所定時間後にトリガーとなるパルスを出力するタイマー回路８と、データの入出力を制御するインターフェース制御部（以下、Ｉ／Ｆ制御部）９と、光ディスクを載置するためのターンテーブル１１を回転させるためのモータ１０と、光学式ピックアップ１２が光ディスクから得た再生信号に基づく訂正復号処理する信号処理部１３とからなる。
【００１８】
光ディスク記録再生装置１のＩ／Ｆ制御部９はホストコンピュータ１４のインターフェース制御部（以下、Ｉ／Ｆ制御部）１６と接続されている。
【００１９】
ホストコンピュータ１４は、システムの統括制御を行うＣＰＵ（セントラルプロセッシングユニット）１５と、補助記憶装置であるＨＤＤドライブ（ハードディスク駆動装置）１７と、ＣＰＵ１５の動作時にプログラムあるいはデータの一時記憶を担当するメモリ１８とからなる。
【００２０】
次に本発明のバッファメモリ６の構造について説明するために、図２を用いる。
【００２１】
図２はバッファメモリ６及び周辺の接続ブロックを示すブロック図である。
【００２２】
バッファメモリ６はホストコンピュータ１４から転送されるデータを記憶するメモリである。
【００２３】
バッファメモリ６はメモリ素子をグループ化したバッファメモリを複数個集めたバッファメモリアレイ６ａとバッファアレイ６ａに対するデータの入出力制御するためのメモリコントローラ６ｂからなる。
【００２４】
ひとつのバッファは１０Ｋｂｙｔｅの記憶容量を持ち、バッファメモリ６の総記憶容量は、１０×１３Ｋｂｙｔｅの計１３０Ｋｂｙｔｅとなっている。
【００２５】
メモリコントローラ６ｂはバッファメモリアレイ６ａにおけるデータの入出力を制御する。
【００２６】
バッファメモリアレイ６ａには、ホストコンピュータ１４のＣＰＵ１５、Ｉ／Ｆ制御部１６から、光ディスク記録再生装置１のＩ／Ｆ制御部９経由でデータが転送される。
【００２７】
バッファメモリアレイ６ａに転送され、一時記憶されたデータは、メモリコントローラ６ｂの制御によって、後段の信号処理部１３へと読み出される。
【００２８】
メモリコントローラ６ｂは、バッファメモリアレイ６ａに書き込まれたデータを後段、信号処理部１３へ転送開始するためのデータ量を定義する読み出し開始位置Ｙを示すデータをレジスタ６１ｂに設定する。
【００２９】
具体的に読み出し開始位置Ｙはデータ量をバッファの番号で指定するものである。
【００３０】
例えば、Ｙの値が２であるとすると、１０×１２Ｋｂｙｔｅの計１２０Ｋｂｙｔｅまでバッファメモリアレイ６ａにデータが記憶された場合にメモリコントローラ６ｂがバッファメモリアレイ６ａからデータを読み出す制御を行うことを意味する。
【００３１】
読み出し開始位置Ｙはメモリコントローラ６ｂによって、変更することができる。
【００３２】
変更の手順は、新しい読み出し開始位置Ｙ’をレジスタ６３ｂに設定し、その後、読み出し開始位置Ｙが設定されたレジスタ６１ｂを消去する処理を行うことによって実行される。
【００３３】
また、その逆の処理として、レジスタ６１ｂに新しい読み出し開始位置Ｙを設定し、その後、読み出し開始位置Ｙ’の記憶されたレジスタ６３ｂを消去することによって実行される。
【００３４】
また、メモリコントローラ６ｂはバッファメモリアレイ６ａの現在のデータ記憶量を監視し、そのデータ量をバッファ数のデータに置換してその現記憶済位置Ｃとしてレジスタ６２ｂに設定する。
【００３５】
このレジスタ６２ｂに設定された現記録済位置Ｃのデータは、ホストコンピュータ１４においてアプリケーションプログラムが実行されているときに、リクエスト命令によって、ホストコンピュータ１４へと転送される。
【００３６】
また、メモリコントローラ６ｂは、バッファメモリアレイ６ａに書き込まれたデータが減少し、アンダーフローの発生を防止するためにデータの読み出しを停止する読み出し停止位置Ｘをバッファの数のデータで定義してレジスタ６４ｂに設定する。
【００３７】
メモリコントローラ６ｂは、このようにレジスタ６１ｂに設定したデータによって、バッファメモリアレイ６ａのデータの入出力を制御する。
【００３８】
メモリコントローラ６ｂは、通常、システム制御部２の出力するコマンドにて動作する。
【００３９】
ただし、レジスタ６２ｂに設定された現記録済位置Ｃのデータをホストコンピュータ１４のリクエストコマンドを発した場合は、システム制御部２経由でこのコマンドを受信し、ホストコンピュータ１４のリクエストに従って、現記録済位置Ｃのデータをホストコンピュータ１４へと転送する。
【００４０】
次に、ホストコンピュータ１４と光ディスク記録再生装置１との間でデータの送受信を行う場合の光ディスク記録再生装置１の動作について説明するために、図３〜図５を用いて説明する。
【００４１】
図３は、本発明における第１の実施の形態における光ディスク記録再生装置１の第１の動作を示すフローチャートである。
【００４２】
図３のフローチャートはステップＳ１〜ステップＳ１４の計１４ステップからなる。
【００４３】
本フローチャートにおいて、ステップＳ１は本フローチャートの開始ステップである。
【００４４】
ステップＳ２はホストコンピュータ１４からバッファメモリ６に対するデータ転送が開始され継続される処理が行なわれるステップである。
【００４５】
ステップＳ３はホストコンピュータ１４が、ドライブ即ち光ディスク記録再生装置１内のバッファメモリアレイ６ａにおける記憶済みのデータ量をリクエストしたか否かを判定するステップである。
【００４６】
具体的には、ホストコンピュータ１４から光ディスク記録再生装置１に対してリクエストコマンドが発せらたか否かでリクエストの有無を判定する。
【００４７】
ホストコンピュータ１４からのリクエストコマンドが無い場合（ＮＯ）は、ステップＳ３における待機状態が継続するように処理はフィードバックされる。
【００４８】
ここで、ホストコンピュータ１４からのリクエストコマンドが有った場合（ＹＥＳ）は次段のステップＳ４へと処理は移行する。
【００４９】
ステップＳ４においては、光ディスク記録再生装置１が、ホストコンピュータ１４へ、バッファメモリアレイ６ａの現記録済位置Ｃを通知する処理を行う。
【００５０】
即ち、光ディスク記録再生装置１のバッファメモリ６のメモリコントローラ６ｂが自身のレジスタ６２ｂから現記録済位置Ｃをホストコンピュータ１４に対して転送する。
【００５１】
ステップＳ４の終了後、処理はステップＳ５の判定ステップへと移行する。
【００５２】
ステップＳ５は、ホストコンピュータ１４が、実行中のアプリケーションプログラムによって設定されるホスト側データ転送停止位置Ｚのデータ量に比較して、現記憶済位置Ｃのデータ量が多いか否かを判定する判定ステップである。
【００５３】
ホスト側データ転送停止位置Ｚのデータ量は、アプリケーションプログラムが独自に設定したデータ転送量の制限値である。
【００５４】
例えば、光ディスク記録再生装置１に対して、データ転送を行い光ディスク２０にデータを記憶する場合、光ディスク記録再生装置１側に転送されるデータ量が多過ぎると、転送されたデータが光ディスク２０に記録できない可能性がある。
【００５５】
これを回避するために、アプリケーションプログラム自ら、バッファメモリ６に対するデータ転送を停止する制限値として転送停止位置Ｚを設定している。
【００５６】
ＣＰＵ１５は、光ディスク記録再生装置１が転送したバッファメモリ
アレイ６ａの現記録済位置Ｃのデータとこの転送停止位置Ｚを比較して判定処理を行う。
【００５７】
このステップにおいて、現記録済位置Ｃのデータが、転送停止位置Ｚの示すデータ量を超える場合（ＹＥＳ）、処理はステップＳ６へと移行し、また、現記録済位置Ｃのデータが、転送停止位置Ｚの示すデータ量を超えない場合（ＮＯ）、処理はステップＳ２へと再度移行する。
【００５８】
現記録済位置Ｃのデータが、転送停止位置Ｚの示すデータ量を超える場合、ステップＳ６に示される処理の如く、ホストコンピュータ１４はバッファメモリ６に対するデータの転送を停止し、また、現記録済位置Ｃのデータが、転送停止位置Ｚの示すデータ量を超えない場合、ステップＳ２における処理の通り、ホストコンピュータ１４はデータの転送を継続する。
【００５９】
ステップＳ２の終了後は、再び、ステップＳ３〜ステップＳ５の処理が実行される。
【００６０】
即ち、ホストコンピュータ１４は、現記録済位置Ｃのデータが、転送停止位置Ｚの示すデータ量を超えない場合、データの転送を継続しながら、常に、光ディスク記憶装置１からバッファメモリ６の記憶状態を取得し、アプリケーションプログラムが設定したホスト側データ転送停止位置Ｚと比較する処理を行うものである。
【００６１】
このような手順で、処理を実行するとアプリケーションプログラムの設定した転送停止位置Ｚを越えないように光ディスク記録装置のバッファメモリ６にデータを転送することができる。
【００６２】
また、このとき、図２に示される光ディスク記録再生装置１のシステム制御部２からはタイマー回路８にスタートパルスを発し、計時動作を開始する。
【００６３】
この計時動作は所定時間経過後に終了し、これに同期して所定時間経過を示す時限データがシステム制御部２に対して転送される。
【００６４】
ステップＳ６の終了後、処理はステップＳ７へと移行する。ステップＳ７は、メモリコントローラ６ｂの制御によりバッファメモリアレイ６ａに記憶されたデータを読み出して、後段の信号処理部１３へと転送する処理が行なわれる。
【００６５】
ステップＳ７の終了後、処理はステップＳ８の判定処理ステップへと移行する。
【００６６】
ステップＳ８では、現記憶済位置Ｃのデータ量がホスト側データ転送停止位置Ｚのデータ量よりも小さくなったか否かの判定が、光ディスク記録再生装置１から得られた現記憶済位置Ｃのデータ量を得たホストコンピュータ１４にて行われる。
【００６７】
ここで、現記憶済位置Ｃのデータ量がホスト側データ転送停止位置Ｚのデータ量よりも小さくなった場合（ＹＥＳ）、次段のステップＳ９へと処理は移行し、現記憶済位置Ｃのデータ量がホスト側データ転送停止位置Ｚのデータ量よりも小さくなっていない場合（ＮＯ）、次段のステップＳ７へと処理は再び移行する。
【００６８】
ステップＳ９は、現記憶済位置Ｃのデータ量がホスト側データ転送停止位置Ｚのデータ量よりも小さくなった場合に、ホストコンピュータ１４が光ディスク記録再生装置１へのデータ転送を再開する処理である。
【００６９】
つまり、この時点では、アプリケーションプログラムが光ディスク記録装置１に転送したデータを光ディスク２０に記録できない可能性が高いと想定したデータ量を、現在バッファメモリアレイ６ａに記憶されているデータ量が下回っている状態である。
【００７０】
よって、ホストコンピュータ１４から光ディスク記録装置１に対してデータを転送しても問題が発生しない。
【００７１】
これに対して、現記憶済位置Ｃのデータ量がホスト側データ転送停止位置Ｚのデータ量よりも小さくなっていない場合（ＮＯ）、ホストコンピュータ１４から光ディスク記録装置１に対してデータを転送しても問題が発生する可能性がある。
【００７２】
よって、ホストコンピュータ１４からのデータ転送を停止した状態で、バッファメモリ６からデータが読み出され、現記憶済位置Ｃのデータ量がホスト側データ転送停止位置Ｚのデータ量よりも小さくなるまで、ホストコンピュータ１４は待機する。
【００７３】
このように、バッファメモリ６のホスト側データ転送停止位置Ｚのデータ量を常に監視し、バッファメモリアレイ６ａに記憶済みのデータ量が現記憶済位置Ｃのデータ量を下回った段階で、ホストコンピュータ１４からのデータ転送を確実に再開することができる。
【００７４】
ステップＳ９においてホストコンピュータ１４がデータ転送を再開した後、処理はステップＳ１０へと移行する。
【００７５】
ステップＳ１０は、バッファメモリ６のメモリコントローラ６ｂのレジスタ６１ｂに設定された読み出し開始位置Ｙのデータを下回った状態で、バッファメモリアレイ６ａに記憶されたデータが全て読み出されて、メモリコントローラ６ｂがデータの転送を停止する処理を行うステップである。
【００７６】
ステップＳ９において、ホストコンピュータ１４からのデータの転送は再開しているのだが、一度、バッファメモリアレイ６ａに記憶されたデータが読み出し開始位置Ｙによって示されるデータ量を下回ってしまった場合、このデータ量までバッファメモリアレイ６ａにデータが再度記憶されるまでバッファメモリアレイ６ａからのデータ読み出しは再開されない。
【００７７】
また、ステップＳ９において、ホストコンピュータ１４からのデータ転送が再開されているので、バッファメモリアレイ６ａに記憶されるデータは、データの読み出しが再開されない状態で、順次、バッファメモリアレイ６ａに記憶されていく。
【００７８】
このとき、バッファメモリアレイ６ａに記憶されるデータはやがて、アプリケーションプログラムの設定した転送停止位置Ｚのデータ量に達し、ホストコンピュータ１４からのデータ転送も再び停止してしまう。
【００７９】
即ち、このときデッドロック現象が生じるのである。
【００８０】
しかしながら、ステップＳ１０に続く、ステップＳ１１及び、ステップＳ１２はこのデッドロック現象を回避する策を講じている。
【００８１】
具体的には、ステップＳ６におけるホストからのデータ転送停止時から、所定時間経過したか否かを判定し、データ転送停止時から、所定時間経過の場合（ＹＥＳ）、処理はステップＳ１１へと移行して、バッファメモリアレイ６ａに記憶されたデータを強制的に信号処理部１３への読み出し動作を再開する。
【００８２】
ここで、データ転送停止時から、所定時間経過していない場合（ＮＯ）、はステップＳ１１を繰り返す待機処理となる。
【００８３】
ステップＳ１１における判定処理は、タイマー回路８から出力される時限データの転送をシステム制御部２が受けることによって行われる。
【００８４】
ステップＳ１２においてバッファメモリアレイ６ａからのデータの読み出しが再開された後は、処理はステップＳ１３へと移行する。
【００８５】
本ステップＳ１３は、ステップＳ１２におけるバッファからのデータ読み出し再開が実行されたときのバッファメモリアレイ６ａの現記録済位置Ｃを、Ｃ’としてメモリコントローラ６ｂが内蔵メモリに記憶する処理を行う。
【００８６】
このときのＣ’は、後述する第２の実施の形態において用いられる。
【００８７】
以上のように、第１の実施の形態による光ディスク記録再生装置１の動作によれば、ホストコンピュータ１４において実行中のアプリケーションプログラムが設定したホスト側データ転送停止位置Ｚに基づくデータ量にバッファメモリアレイ６ａの現記憶済位置が示すデータ量に到達し、データ転送が停止した時点から所定時間後にバッファメモリアレイ６ａからデータを強制的に読み出しするので、未然にデッドロック現象を防止することができる。
【００８８】
次に本発明における第２の実施の形態について図４のフローチャートを用いて説明する。
【００８９】
図４は光ディスク記録再生装置１の第２の動作を示すフローチャートである。
【００９０】
図４のフローチャートはステップＳ１５〜ステップＳ２７の計１３ステップからなる。
【００９１】
本フローチャートにおいて、ステップＳ１５は本フローチャートの開始ステップである。
【００９２】
ステップＳ１６はホストコンピュータ１４からデータ転送が開始され継続される処理が行なわれるステップである。
【００９３】
ステップＳ１７はホストコンピュータ１４が、ドライブ即ち光ディスク記録再生装置１内のバッファメモリアレイ６ａにおける記憶済みのデータ量をリクエストしたか否かを判定するステップである。
【００９４】
具体的には、ホストコンピュータ１４から光ディスク記録再生装置１に対してリクエストコマンドが発せらたか否かでリクエストの有無を判定する。
【００９５】
ホストコンピュータ１４からのリクエストコマンドが無い場合（ＮＯ）では、ステップＳ１７において待機状態が継続するように処理はフィードバックされる。
【００９６】
ここで、ホストコンピュータ１４からのリクエストコマンドが有った場合（ＹＥＳ）は次段のステップＳ１８へと処理は移行する。
【００９７】
ステップＳ１８においては、光ディスク記録再生装置１がホストコンピュータ１４へバッファメモリアレイ６ａの現記録済位置Ｃを通知する処理を行う。
【００９８】
即ち、光ディスク記録再生装置１のバッファメモリ６のメモリコントローラ６ｂが自身のレジスタ６２ｂから現記録済位置Ｃをホストコンピュータ１４に対して転送する。
【００９９】
ステップＳ１８の終了後、処理はステップＳ１９の判定ステップへと移行する。
【０１００】
ステップＳ１９は、ホストコンピュータ１４が、実行中のアプリケーションプログラムによって設定されるホスト側データ転送停止位置Ｚのデータ量に比較して、現記憶済位置Ｃのデータ量が多いか否かを判定する判定ステップである。
【０１０１】
ホスト側データ転送停止位置Ｚのデータ量は、アプリケーションプログラムが独自に設定したデータ転送の制限値である。
【０１０２】
例えば、光ディスク記録再生装置１に対して、データ転送を行い光ディスク２０に対してデータを記憶する場合、光ディスク記録再生装置１側に転送されるデータ量が多過ぎると、転送されたデータが光ディスク２０に記録できない可能性がある。
【０１０３】
これを回避するために、アプリケーションプログラム自らこの問題を回避するために制限値として転送停止位置Ｚを設定している。
【０１０４】
ＣＰＵ１５は、光ディスク記録再生装置１が転送した現記録済位置Ｃのデータとこの転送停止位置Ｚを比較して判定処理を行う。
【０１０５】
このステップにおいて、現記録済位置Ｃのデータが、転送停止位置Ｚの示すデータ量を超える場合（ＹＥＳ）、処理はステップＳ２０へと移行し、また、現記録済位置Ｃのデータが、転送停止位置Ｚの示すデータ量を超えない場合（ＮＯ）、処理はステップＳ１６へと再度移行する。
【０１０６】
現記録済位置Ｃのデータが、転送停止位置Ｚの示すデータ量を超える場合、ステップＳ２０に示される処理の如く、ホストコンピュータ１４はデータの転送を停止し、また、現記録済位置Ｃのデータが、転送停止位置Ｚの示すデータ量を超えない場合、ステップＳ１６に示される処理の如く、ホストコンピュータ１４はデータの転送を継続する。
【０１０７】
ステップＳ１６の終了後は、再び、ステップＳ１７〜ステップＳ１９の処理が実行される。
【０１０８】
即ち、ホストコンピュータ１４は、現記録済位置Ｃのデータが、転送停止位置Ｚの示すデータ量を超えない場合、データの転送を継続しながら、常に、光ディスク記憶装置１からバッファメモリ６の記憶状態を取得し、アプリケーションプログラムが設定したホスト側データ転送停止位置Ｚと比較する処理を行う。
【０１０９】
このような手順で、処理を実行するとアプリケーションプログラムの設定した転送停止位置Ｚを越えないように光ディスク記録装置のバッファメモリ６にデータを転送することができる。
【０１１０】
ステップＳ２０の終了後、処理はステップＳ２１へと移行する。ステップＳ２１では、メモリコントローラ６ｂの制御によりバッファメモリアレイ６ａに記憶されたデータを読み出して、後段の信号処理部１３へと転送する処理が行なわれる。
【０１１１】
ステップＳ２１の終了後、処理はステップＳ２２の判定処理ステップへと移行する。
【０１１２】
ステップＳ２２は、現記憶済位置Ｃのデータ量がホスト側データ転送停止位置Ｚのデータ量よりも小さくなったか否かの判定が、光ディスク記録再生装置１から得られた現記憶済位置Ｃのデータ量を得たホストコンピュータ１４にて行われる。
【０１１３】
ここで、現記憶済位置Ｃのデータ量がホスト側データ転送停止位置Ｚのデータ量よりも小さくなった場合（ＹＥＳ）、次段のステップＳ２３へと処理は移行し、現記憶済位置Ｃのデータ量がホスト側データ転送停止位置Ｚのデータ量よりも小さくなっていない場合（ＮＯ）、ステップＳ２１へと処理は再び移行する。
【０１１４】
ステップＳ２３は、現記憶済位置Ｃのデータ量がホスト側データ転送停止位置Ｚのデータ量よりも小さくなった場合に、ホストコンピュータ１４が光ディスク記録再生装置１へのデータ転送を再開する処理である。
【０１１５】
つまり、この時点では、アプリケーションプログラムが、光ディスク記録装置１に転送したデータを光ディスク２０に記録できない可能性が低いと想定したデータ量を、現在バッファメモリアレイ６ａに記憶されているデータ量が下回っている状態である。
【０１１６】
よって、ホストコンピュータ１４から光ディスク記録装置１に対してデータを転送しても問題が発生しない。
【０１１７】
これに対して、現記憶済位置Ｃのデータ量がホスト側データ転送停止位置Ｚのデータ量よりも小さくなっていない場合（ＮＯ）、ホストコンピュータ１４から光ディスク記録装置１に対してデータを転送しても問題が発生する可能性がある。
【０１１８】
よって、ホストコンピュータ１４からのデータ転送を停止した状態で、バッファメモリ６からデータが読み出され、現記憶済位置Ｃのデータ量がホスト側データ転送停止位置Ｚのデータ量よりも小さくなるまでホストコンピュータ１４は待機する。
【０１１９】
このように、バッファメモリ６のホスト側データ転送停止位置Ｚのデータ量を常に監視し、バッファメモリアレイ６ａに記憶済みのデータ量が現記憶済位置Ｃのデータ量を下回った段階で、ホストコンピュータ１４からのデータ転送を確実に再開することができる。
【０１２０】
ステップＳ２３においてホストコンピュータ１４がデータ転送を再開した後、処理はステップＳ１０へと移行する。
【０１２１】
ステップＳ２４は、バッファメモリ６のメモリコントローラ６ｂのレジスタ６１ｂに設定された読み出し開始位置Ｙのデータを下回った状態で、バッファメモリアレイ６ａに記憶されたデータが全て読み出されて、メモリコントローラ６ｂがデータの転送を停止する処理を行うステップである。
【０１２２】
ここで、一度、バッファメモリアレイ６ａに記憶されたデータが読み出し開始位置Ｙによって示されるデータ量を下回ってしまうと、バッファメモリアレイ６ａからのデータ読み出しが再開されず、デッドロック現象が生じることは前述の通りである。
【０１２３】
そこで、本実施の形態においてはデッドロック現象の回避のためにステップＳ２５にて策を講じている。
【０１２４】
ステップＳ２５は、バッファメモリアレイ６ａの現記録位置Ｃと、第１の実施の形態における動作のステップＳ１３において、メモリコントローラ６ｂが内蔵メモリに記憶したバッファ数の値Ｃ’から１バッファ分の値を差し引いた標本化記憶済位置Ｃ’−１を閾値として、この閾値よりも現記録位置Ｃの値が大きくなった否かを判定するステップである。
【０１２５】
メモリコントローラ６ｂが内蔵メモリに記憶したバッファ数の値Ｃ’は、前回バッファメモリアレイ６ａからデータが強制的に読み出されたときの現記録済データ量であるので、前回ステップＳ１３において判定されたタイミングを表すものである。
【０１２６】
ステップＳ２５において、このＣ’から１バッファ分の値を差し引いたＣ’−１を比較対象とすることは、前回よりも迅速なタイミングで判定処理が行えることを意味する。
【０１２７】
本ステップにおいて、標本化記憶済位置Ｃ’−１よりも現記録位置Ｃの値が大きくなった場合（ＹＥＳ）、次段のステップＳ２６へと処理は移行し、また、標本化記憶済位置Ｃ’−１よりも現記録位置Ｃの値が大きくなっていない場合（ＮＯ）ステップＳ２５の処理を繰り返す待機状態となる。
【０１２８】
ステップＳ２６は、前段のステップで予め記憶された標本化記憶済位置Ｃ’−１よりもバッファ現記録位置Ｃの値が大きくなった場合に、バッファからのデータ読み出しを強制的に再開し、後段の信号処理部１３へと転送する処理である。
【０１２９】
尚、ステップＳ２５において、現記録済位置Ｃと標本化記憶済位置Ｃ’−１を比較したが、現記録済位置Ｃの比較対照としてはＣ’を用いても差し支えない。
【０１３０】
このようにして、ステップＳ２６の処理終了後、処理はステップＳ２７の終了ステップへと移行する。
【０１３１】
このように本発明による第２の実施の形態においては、ホストデータ転送停止から所定時間後におけるバッファメモリ６の現記憶済みデータ量を記憶し、ホストコンピュータ１４からのデータ転送が停止した後、
この値あるいはこの値よりも小さな値に基づいて、バッファメモリアレイ６ａからのデータ読み出しを強制的に再開するようにしたので第１の実施の形態よりも迅速にデッドロック現象を回避することができる。
【０１３２】
次に本発明における第３の実施の形態について説明するために図５を用いる。
【０１３３】
図５は光ディスク記録再生装置１の第３の動作を示すフローチャート。
【０１３４】
図５のフローチャートはステップＳ２８〜ステップＳ４１の１５ステップからなる。
【０１３５】
ステップＳ２８は本フローチャートの開始ステップである。
【０１３６】
ステップＳ２９はホストコンピュータ１４からデータ転送が開始され継続される処理が行なわれるステップである。
【０１３７】
ステップＳ３０はホストコンピュータ１４が、ドライブ即ち光ディスク記録再生装置１内のバッファメモリアレイ６ａにおける記憶済みのデータ量をリクエストしたか否かを判定するステップである。
【０１３８】
具体的には、ホストコンピュータ１４から光ディスク記録再生装置１に対してリクエストコマンドが発せらたか否かでリクエストの有無を判定する。
【０１３９】
ホストコンピュータ１４からのリクエストコマンドが無い場合（ＮＯ）では、ステップＳ３０において待機状態が継続するように処理はフィードバックされる。
【０１４０】
ステップＳ３０において、ホストコンピュータ１４がドライブである光ディスク記録装置１のバッファメモリ６の記憶状態をリクエストした場合（ＹＥＳ）、処理は次段のステップＳ３１へと移行する。
【０１４１】
ステップＳ３１では、光ディスク記録再生装置１が、ホストコンピュータ１４にて動作しているアプリケーションプログラムが設定したデータ転送停止位置Ｚのデータを取得する。
【０１４２】
ステップＳ３２は、光ディスク記録再生装置１内の、バッファメモリ６のバッファメモリコントローラ６ｂが設定している、データを出力する基準となる読み出し開始位置Ｙのデータを、取得したデータ転送停止位置Ｚのデータよりも小さい値の新しい読み出し開始位置Ｙ’に変更する処理を行う。
【０１４３】
新しい読み出し開始位置Ｙ’の値は、メモリコントローラ６ｂ内のレジスタ６３ｂに記憶される。
【０１４４】
ステップＳ３２の終了後、処理はステップＳ３３へと移行する。
【０１４５】
ステップＳ３３においては、ホストコンピュータ１４から光ディスク記録再生装置１に対してデータが転送される。転送されたデータはバッファメモリ６のバッファメモリアレイ６ａに順次記憶される。
【０１４６】
続いて、ステップＳ３４においては、バッファメモリアレイ６ａに記憶されたデータが順次読み出されて、信号処理部１３へと転送される。
【０１４７】
ステップＳ３４の処理終了後は、ステップＳ３５へと処理は移行する。
【０１４８】
ステップＳ３５はホストコンピュータ１４が光ディスク記録再生装置から取得した現記憶位置Ｃの値がホスト側のデータ転送停止位置Ｚの値よりも小さいか否かが判定される。
【０１４９】
本ステップにおいて、現記憶位置Ｃの値がホスト側のデータ転送停止位置Ｚの値よりも小さい場合（ＹＥＳ）、ホストコンピュータ１４において動作中のアプリケーションプログラムはバッファメモリ６に対してデータの転送が可能であると想定しているので、処理はステップＳ３３へと再び移行し、更にステップＳ３３及び、ステップＳ３４の処理が繰り返される。
【０１５０】
このように、バッファメモリ６に対するホストコンピュータ１４からのデータの転送が続くと、バッファメモリアレイ６ａに記憶されるデータ量は増加し、やがて、ホスト側のデータ転送停止位置Ｚの値に達する。
【０１５１】
本ステップにおいて、現記憶位置Ｃの値がホスト側のデータ転送停止位置Ｚの値よりも小さくない場合（ＮＯ）、処理は次段のステップＳ３６へと移行する。
【０１５２】
ステップＳ３６においては、ホストコンピュータ１４がバッファメモリアレイ６ａに記憶されるデータを現状よりも増加させないために、バッファメモリ６に対するデータの転送を停止する処理を行う。
【０１５３】
ステップＳ３６の終了後、処理はステップＳ３７へと移行する。
【０１５４】
ステップＳ３７においては、バッファメモリアレイ６ａからのデータの読み出しが継続して行われる。
【０１５５】
また、次段のステップＳ３８においては、現在記録済位置Ｃの値が、メモリコントローラ６ｂのレジスタ６３ｂに新たに設定した読み出し開始位置Ｙ’よりも小さく且つ、現在記録済位置Ｃの値がホスト側のデータ転送停止位置Ｚよりも小さい状態か否かが判定される。
【０１５６】
ステップＳ３８の判定ステップの結果、上記の２つの判定条件が同時に成立した場合（ＹＥＳ）、処理は後段ステップＳ３９へと移行し、また、上記の２つの判定条件が同時に成立しない場合（ＮＯ）、処理はステップＳ３７に再度移行して、ステップＳ３７、ステップＳ３８の処理が再び実行される。
【０１５７】
ステップＳ３９は上記の２つの判定条件が同時に成立した場合に、ホストコンピュータ１４からバッファメモリ６へのデータ転送を再開あるいは継続する処理である。
【０１５８】
そしてステップＳ３９の終了後、処理はステップＳ４０へと移行する。
【０１５９】
ステップＳ４０は、現在記録済位置Ｃの値が、新しいドライブ側データ読み出し開始位置Ｙ’よりも大きいか否かが判定される。
【０１６０】
本ステップＳ４０において、現在記録済位置Ｃの値が、新しいドライブ側データ読み出し開始位置Ｙ’よりも大きい場合（ＹＥＳ）、処理はステップＳ４１へと移行する。
【０１６１】
また、現在記録済位置Ｃの値が、新しいドライブ側データ読み出し開始位置Ｙ’よりも大きくない場合（ＮＯ）、処理は再度ステップＳ３９へと移行して、ホストコンピュータ１４からのデータ転送が継続される。
【０１６２】
ステップＳ４１は、バッファメモリコントローラ６ｂがバッファメモリアレイ６ａに記憶されたデータを信号処理部１３へと読み出す処理を再開するステップである。
【０１６３】
ステップＳ４１の終了後、処理はステップＳ４２へと移行して終了する。
【０１６４】
以上のように本実施の形態においては、バッファメモリ６のバッファメモリアレイ６ａに記憶されたデータの読み出しを開始するための基準となる読み出し開始位置Ｙを、ホストコンピュータ１４にて動作するアプリケーションプログラムガ設定した、光ディスク記録装置側の動作が正常に実行しうるレベルにデータを転送するための基準値であるデータ転送停止位置Ｚよりも、低くい読み出し開始位置Ｙ’の値に変更することができる。
【０１６５】
即ち、バッファメモリ６のバッファメモリアレイ６ａに対するデータの記憶状態に関わらず、ホストコンピュータ１４からのデータ転送動作あるいはバッファメモリアレイ６ａからのデータ読み出し動作のいずれかが連続して行われ、システムにおいてデータの流れが滞ることがない。
【０１６６】
よって、従来のシステムにおいて発生していたデッドロック現象を完全に防止することができる。
【０１６７】
【発明の効果】
本発明によれば、デッドロック現象を未然に回避することが可能なメモリ、このメモリを搭載した電子機器及び、メモリの制御方法を提供することができる。
【図面の簡単な説明】
【図１】光ディスク記録再生装置１とホストコンピュータ１４のブロック図。
【図２】バッファメモリ６及び周辺の接続ブロックを示すブロック図。
【図３】光ディスク記録再生装置１の第１の動作を示すフローチャート。
【図４】光ディスク記録再生装置１の第２の動作を示すフローチャート。
【図５】光ディスク記録再生装置１の第３の動作を示すフローチャート。
【符号の説明】
１…　…光ディスク記録再生装置
２…　…システム制御部
３…　…ディスク駆動制御部
４…　…ＲＯＭ
５…　…ＲＡＭ
６…　…バッファメモリ
６ａ…　…バッファメモリアレイ
６ｂ…　…メモリコントローラ
６１ｂ，６２ｂ，６３ｂ，６４ｂ…　…レジスタ
７…　…ピックアップ駆動制御部
８…　…タイマー回路
９…　…Ｉ／Ｆ制御部
１０…　…モータ
１１…　…ターンテーブル
１２…　…光学式ピックアップ
１３…　…信号処理部
１４…　…ホストコンピュータ
１５…　…ＣＰＵ
１６…　…Ｉ／Ｆ制御部
１７…　…ＨＤＤドライブ
【図１】
2004022046.tif 000003
【図２】
2004022046.tif 000004
【図３】
2004022046.tif 000005
【図４】
2004022046.tif 000006
【図５】
2004022046.tif 000007