(57)【特許請求の範囲】
【請求項１】
ＦＩＦＯ方式のバッファレジスタ群を有し、データ入出力の転送ビット数が異なり、入出力ポインタに従って当該データ入出力を制御するバッファメモリと、
前記入出力ポインタ制御を実行し、前記バッファメモリに入力されたデータを前記出力転送ビット数毎に順次出力させて、所定のビット数分のデータ転送の終了後に、異なる前記入出力ポインタを所定の条件に従ってジャンプさせて、当該ジャンプ先の入出力ポインタに従って次回からのデータ転送を開始させる制御手段と
を具備したことを特徴とするバッファ装置。
【請求項２】
前記制御手段は、前記ジャンプ先の入出力ポインタとして、前記転送ビット数の最小公倍数でかつ前記バッファメモリの容量以下の値を設定することを特徴とする請求項１に記載のバッファ装置。
【請求項３】
前記バッファメモリのデータ入力転送ビット数をＸとし、かつデータ出力転送ビット数をＸとは異なるＹとし、さらに、入力ポインタを“Ａ＊Ｘ”及び出力ポインタを“Ｂ＊Ｙ”（但し、Ａ，Ｂは０，１，２…）と表現した場合に、
前記制御手段は、入力ポインタ“Ａ＊Ｘ”のデータ入力と，出力ポインタ“Ｂ＊Ｙ”のデータ出力によるデータ転送が終了した時点で、「Ａ＊Ｘ＞Ｂ＊Ｙ」の条件で、前記入出力転送数Ｘ，Ｙの最小公倍数でかつ前記バッファメモリの容量以下の値に前記ジャンプ先の入出力ポインタを設定して、次回からのデータ転送を開始させることを特徴とする請求項１に記載のバッファ装置。
【請求項４】
ディスク媒体上から読出されたデータ信号を処理するデータチャネルから所定の転送ビット数（Ｘ）のデータを入力して保持し、当該入力転送ビット数（Ｘ）とは異なる出力転送ビット数（Ｙ）に変換してデータを出力するＦＩＦＯ方式のバッファ装置を有するディスクコントローラであって、
前記バッファ装置は、
所定の容量のメモリレジスタ群を有し、入出力ポインタに従って当該データ入出力を制御するバッファメモリと、
前記入出力ポインタ制御を実行し、前記バッファメモリに入力されたデータを前記出力転送ビット数（Ｙ）毎に順次出力させて、セクタ単位のビット数分のデータ転送の終了後に、異なる前記入出力ポインタを所定の条件に従ってジャンプさせて、当該ジャンプ先の入出力ポインタに従って次回からのデータ転送を開始させるバッファ制御手段と
を具備したことを特徴とするディスクコントローラ。
【請求項５】
前記バッファメモリから出力された前記セクタ単位のデータを格納し、ホストシステムに転送するためのセクタバッファ手段をさらに備えている特徴とする請求項４に記載のディスクコントローラ。
【請求項６】
前記バッファ制御手段は、前記ジャンプ先の入出力ポインタとして、前記転送ビット数（Ｘ，Ｙ）の最小公倍数でかつ前記バッファメモリの容量以下の値を設定することを特徴とする請求項４に記載のディスクコントローラ。
【請求項７】
前記バッファメモリの入力転送ビット数をＸとし、かつ出力転送ビット数をＸとは異なるＹとし、さらに、入力ポインタを“Ａ＊Ｘ”及び出力ポインタを“Ｂ＊Ｙ”（但し、Ａ，Ｂは０，１，２…）と表現した場合に、
前記バッファ制御手段は、入力ポインタ“Ａ＊Ｘ”のデータ入力と，出力ポインタ“Ｂ＊Ｙ”のデータ出力によるデータ転送が終了した時点で、「Ａ＊Ｘ＞Ｂ＊Ｙ」の条件で、前記入出力転送数Ｘ，Ｙの最小公倍数でかつ前記バッファメモリの容量以下の値に前記ジャンプ先の入出力ポインタを設定して、次回からのデータ転送を開始させることを特徴とする請求項４に記載のディスクコントローラ。
【請求項８】
前記バッファ装置は、前記データチャネルから転送された２０ビットのデータを入力して保持し、６４ビットの転送ビット数に変換してデータを出力するＦＩＦＯ方式のバッファ装置を有するディスクコントローラであって、
前記バッファ装置は、
９６０ビットの容量を有するメモリレジスタ群を有し、入出力ポインタに従って当該データ入出力を制御するバッファメモリと、
前記入出力ポインタ制御を実行し、前記バッファメモリに入力されたデータを６４ビット毎に順次出力させて、４０９６ビット分のデータ転送の終了後に、当該転送終了時点での異なる前記入出力ポインタを前記２０ビット及び６４ビットの最小公倍数でかつ前記バッファメモリの容量９６０ビット以下の値に前記ジャンプ先の入出力ポインタを設定して、次回からのデータ転送を開始させるバッファ制御手段と
を具備したことを特徴とする請求項４に記載のディスクコントローラ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、一般的にはＦＩＦＯ（First-In First-Out）方式のバッファ装置に関し、特に、ディスクコントローラなどに使用されるＦＩＦＯ方式のバッファ装置の制御方法に関する。
【０００２】
【従来の技術】
従来、例えばディスクドライブでは、ディスク媒体上に記録されているデータは、ヘッドにより読出されてリード／ライトチャネル（データチャネル）で信号処理される。データチャネルは、通常では、８ビットのディジタルデータに再生して、ディスクコントローラ（ＨＤＣ）に転送する。
【０００３】
ディスクコントローラは、転送されたデータをセクタ単位で、ＤＲＡＭから構成されるセクタバッファに一時的に格納する。さらに、ディスクコントローラは、セクタバッファからホストシステムにデータを転送する。
【０００４】
ディスクコントローラは、データチャネルとの間でデータの入出力を行なうためのＦＩＦＯ方式のバッファ装置を有する。このバッファ装置は、通常では入出力ポインタを操作して、データチャネルからの８ビットのデータを入力すると共に、当該入力転送ビット数とは異なる６４ビットの転送ビット数でデータを出力する。要するに、ディスクコントローラは、入出力転送ビット数の異なるＦＩＦＯ方式のバッファ装置を使用している。
【０００５】
ところで、データチャネルの中には、データ転送効率を向上させるために、１０ビットのデータを出力するチャネルが開発されている。このようなデータチャネルの仕様変更に伴なって、ディスクコントローラは、１０ビットのデータを入力して、６４ビットのデータを出力するＦＩＦＯ方式のバッファ装置を使用することになる。バッファ装置の出力転送ビット数は変更しないため、バッファ装置とセクタバッファとを接続するメモリバスはそのまま使用可能である。
【０００６】
しかしながら、入力ビット数が１０ビットに変更になると、バッファ装置の入出力ポインタ制御が異なる。具体的には、セクタ単位のデータ（５１２バイト、即ち４０９６ビット）の転送を終了した時点で、入出力ポインタの値（アドレス）は異なっている。このため、次回以降のデータ転送（バッファ装置からのデータ出力）を行なう場合に、入出力ポインタを調整する必要がある。
【０００７】
従来においても、異なる入出力データ幅を有するＦＩＦＯメモリ装置において、ポインタを調整する機能を備えた装置が提案されている（例えば、特許文献１を参照）。
【０００８】
【特許文献１】
特開２０００−８９９３２号公報（段落番号０００５，図１）
【０００９】
【発明が解決しようとする課題】
入出力転送ビット数の異なるＦＩＦＯ方式のバッファ装置では、２回目以降のデータ転送開始時に、入出力ポインタの値を調整して両者のポインタを整合させる必要がある。しかしながら、単に不整合を無くすために、例えば転送データ数の少ない方（例えば出力ポインタ）を、転送データ数の多い方（例えば入力ポインタ）に合わせる方法では、デコード数の増大（ロジック回路量の増大化）を招くなどの問題がある。
【００１０】
そこで、本発明の目的は、ＦＩＦＯ方式のバッファ装置において、入出力ポインタの整合性を維持して、確実なデータ転送を実現することにある。
【００１１】
【課題を解決するための手段】
本発明の観点は、入出力転送ビット数の異なるＦＩＦＯ方式のバッファ装置において、所定単位（例えばセクタ単位）のデータ転送終了後に、入出力ポインタを所定の条件に従ってジャンプさせて調整することにより、次回のデータ転送を開始させるポインタ制御機能を備えたバッファ装置に関する。
【００１２】
本発明の観点に従ったバッファ装置は、ＦＩＦＯ方式のバッファレジスタ群を有し、データ入出力の転送ビット数が異なり、入出力ポインタに従って当該データ入出力を制御するバッファメモリと、前記入出力ポインタ制御を実行し、前記バッファメモリに入力されたデータを前記出力転送ビット数毎に順次出力させて、所定のビット数分のデータ転送の終了後に、異なる前記入出力ポインタを所定の条件に従ってジャンプさせて、当該ジャンプ先の入出力ポインタに従って次回からのデータ転送を開始させる制御手段とを備えたものである。
【００１３】
このような構成のバッファ装置を、例えばディスクドライブのディスクコントローラに適用すれば、入出力転送ビット数の異なるデータチャネルとホストシステムとの間でのデータ転送を確実に行なうことができる。
【００１４】
【発明の実施の形態】
以下図面を参照して、本発明の実施の形態を説明する。
【００１５】
（バッファ装置とディスクコントローラの構成）
本実施形態は、ディスクコントローラに使用されるＦＩＦＯ方式のバッファ装置を想定している。以下、図１、図２及び図３を参照して、バッファ装置、ディスクコントローラ及びディスクドライブの構成を説明する。
【００１６】
まず、ディスクドライブ１０は、概略的には図１に示すように、ディスク媒体１１と、ヘッド１２と、ヘッドアンプ１３と、リード／ライト（Ｒ／Ｗ）チャネル（データチャネル）１４と、ディスクコントローラ（ＨＤＣ）１６とを有する。
【００１７】
ディスク媒体１１は、ヘッド１２によりライトされるデータを記録する記録媒体である。ヘッド１２は、ディスク媒体１１からリードしたデータ信号（アナログ信号）を出力する。ヘッドアンプ１３は、ヘッド２から出力されたデータ信号（ＡＳ）を増幅して、データチャネル１４に送出する。データチャネル１４は、ヘッド２から出力されたデータ信号を再生処理して、例えば１０ビットのディジタルデータ（以下ディスクデータＤＤとする）を出力する。なお、データチャネル１４は、ホストシステム２０から転送される記録データを処理して、ヘッド１２に供給するためのライト信号に変換する機能（ライトチャネル）も含む。但し、本実施形態は、データチャネル１４のデータ再生処理を実行するリードチャネルの機能について説明する。
【００１８】
ディスクコントローラ１６は、ドライブ１０とホストシステム２０との間で、データ転送を実行するインターフェースを構成している。本実施形態では、ディスクコントローラ１６は、データチャネル１４から出力されるディスクデータＤＤを入力し、通常では１６ビットのホストデータに変換してホストシステム２０に転送する。なお、ディスクコントローラ１６は、前述したように、ホストシステム２０から転送される記録データを受信して、データチャネル１４に転送する機能も有する。
【００１９】
本実施形態に関係する要素として、ディスクコントローラ１６は、図２に示すように、データ転送制御を実行するためのセクタバッファと呼ぶＤＲＡＭ１６０と、データチャネル１４から転送されるデータを入力するためのＦＩＦＯ方式のバッファ装置１６１と、ＤＲＡＭ１６０に格納されたデータをホストシステム２０に転送するためのＦＩＦＯ方式のバッファ装置１６２とを有する。ＤＲＡＭ１６０及び各バッファ装置１６１，１６２は、それぞれ６４ビットのメモリバス１６３により接続されている。
【００２０】
本実施形態は、特に、ディスクコントローラ１６に含まれる入力側のバッファ装置１６１を想定する。ここで、図１に示すように、実際上では、データチャネル１４から出力される１０ビットのディスクデータＤＤは、バッファ回路１５により２０ビットのデータに変換されて、ディスクコントローラ１６に転送される。
【００２１】
（バッファ装置の構成）
本実施形態のＦＩＦＯ方式のバッファ装置１６１は、図３に示すように、通常では、４ビットのレジスタ群から構成されるバッファメモリ部３００と、バッファ入出力を制御するコントローラ３０１とを含む。バッファメモリ部３００は、例えば９６０ビットの容量（１２８バイトでもよい）を有し、２０ビット単位で入力されるディスクデータＤＤを保持する。コントローラ３０１は、バッファメモリ部３００の入出力ポインタを制御し、６４ビット単位でバッファメモリ部３００に保持されたデータを出力する。
【００２２】
ここで、本実施形態のバッファ装置１６１は、１回の転送で、ディスクドライブ１０のアクセス単位である４０９６ビットのディスクデータ（１セクタ分の５１２バイトのデータに相当）をＤＲＡＭ１６０に出力する。なお、バッファ装置１６１は、１回の転送で、４ビット分が“０”を含む４１００ビットのディスクデータＤＤを入力する。
【００２３】
（バッファ制御動作）
以下主として図４から図７を参照して、本実施形態のバッファ装置１６１のデータ転送動作である入出力制御を説明する。
【００２４】
まず、一般的には、バッファ装置１６１のコントローラ３０１は、図５（Ｂ）に示すように、バッファメモリ部３００の入力側ポインタ（ｂ＊Ｙ）、及び出力側ポインタ（ａ＊Ｘ）を制御することにより、バッファ装置１６１のデータ入出力を制御する。ここで、「＊」は乗算を意味する。
【００２５】
ここで、図５（Ａ）に示すように、バッファ装置１６１では、容量がＣビット、入力転送ビット数（入力データ幅）がＹ、出力転送ビット数（出力データ幅）がＸとした場合に、１回目の転送により、入力データ（ｂ＊Ｙ）ビット及び出力データ（ａ＊Ｘ）ビットのデータ転送が終了する。この転送終了時点で、図５（Ｂ）に示すように、入力側ポインタ（ｂ＊Ｙ）と出力側ポインタ（ａ＊Ｘ）とは異なるポインタ値を示すことになる。この状態で、２回目のデータ転送を開始すると、入出力データにはずれが発生するため、確実なデータ転送ができなくなる。
【００２６】
図４（Ａ），（Ｂ）は、図３に示す仕様のバッファ装置１６１において、コントローラ３０１が入出力ポインタ制御を実行した場合に、入力側ポインタ（ｂ＊Ｙ）及び出力側ポインタ（ａ＊Ｘ）の遷移を示すものである。
【００２７】
まず、図４（Ａ）に示すように、１回目のデータ転送が終了した時点で、入力側ポインタ（ｂ＊Ｙ）と出力側ポインタ（ａ＊Ｘ）は、それぞれポインタ値２６０と、ポインタ値２５６を示している。即ち、１回目の転送動作での入力転送としては、メモリ３００の容量である９６０ビット分の４倍の入力データと、２６０ビット分の入力データとを合計した４１００ビットのデータが転送されている。従って、この終了時点で、２０ビット単位で制御される入力側ポインタ（ｂ＊Ｙ）は、ポインタ値２６０を示している。一方、１回目の転送動作での出力転送としては、メモリ３００の容量である９６０ビット分の４倍の出力データと、２５６ビット分の出力データとを合計した４０９６ビットのデータが転送されている。従って、この終了時点で、６４ビット単位で制御される出力側ポインタ（ａ＊Ｘ）は、ポインタ値２５６を示している。
【００２８】
図４（Ａ）に示すように、コントローラ３０１は、転送データ数の少ない出力側ポインタ（２５６）を、転送データ数の多い入力側ポインタ（２６０）に合わせる調整を実行する。これにより、２回目のデータ転送を開始すれば、正常にデータ転送を終了することができる。
【００２９】
しかしながら、このようなポインタ制御では、１回目のデータ転送ではポインタ値は入力側ａの倍数となり、２回目のデータ転送からは出力側ｂの倍数に変化する。このため、出力側ポインタは、ａ，ｂ両方の倍数を取るため、結果的にデコード数が増大する。このため、コントローラ３０１でのポインタのデコードを実行するロジック回路量が増大化する。
【００３０】
そこで、本実施形態では、図４（Ｂ）に示すように、コントローラ３０１は、１回目のデータ転送が終了時点で、入出力側の双方のポインタ値を、所定の条件を満たすポインタ値（ここではアドレス３２０）にジャンプさせる。そして、コントローラ３０１は、それらのジャンプ先の入出力ポインタから、２回目のデータ転送を開始する。
【００３１】
所定の条件とは、入出力転送ビット数（入出力データ幅）の最小公倍数で、かつこの値の倍数でバッファメモリ部３００の容量（個々では９６０ビット）以下の値である。この場合、当該条件に合致するジャンプ先としては、０，３２０，６４０が候補となる。コントローラ３０１は、これらの複数の候補から、転送終了時点のポインタ値から最も近傍でかつ進行方向のポインタ値（３２０）を選択する。
【００３２】
以下図６および図７のフローチャートを参照して、図３に示す仕様のバッファ装置１６１において、コントローラ３０１による入出力ポインタ制御を説明する。
【００３３】
まず、１回目のデータ転送が開始されると、データチャネル１４から出力されたディスクデータＤＤの２０ビット分の入力データが転送されて、バッファ装置１６１に入力される（ステップＳ１，Ｓ２）。
【００３４】
なお、図６および図７のフローチャートにおいて、入力Ｐ及び出力Ｐは、入力側ポインタ値及び出力側ポインタ値を示し、図４（Ｂ）に示すポインタ遷移結果に対応している。
【００３５】
バッファ装置１６１に８０ビット分の入力データが転送されると、出力側ポインタ値は６４に変化し、６４ビット単位のデータ出力が実行される（ステップＳ３〜Ｓ５）。さらに、バッファ装置１６１に６０ビット分の入力データが転送されると、入力側ポインタ値は１４０に変化し、出力側ポインタ値は１２８に変化する（ステップＳ６，Ｓ７）。
【００３６】
以後同様にして、２０ビット単位の入力データが順次転送されて、その入力順に６４ビット単位の出力データが順次転送される。ここで、バッファメモリ部３００の容量９６０ビット分まで転送されると、入力側ポインタ値は９４０に変化し、出力側ポインタ値は８９６に変化する（ステップＳ８）。そして、６４ビット単位の出力データが転送されると、入力側ポインタ値及び出力側ポインタ値は、それぞれ０に戻る（ステップＳ９，Ｓ１０）。
【００３７】
そして、４１００ビット分の入力データが転送されると、１回目のデータ転送が終了となり、図４（Ｂ）に示すように、入力側ポインタ値及び出力側ポインタ値は、それぞれ２６０，２５６に変化する（ステップＳ１１，Ｓ１２）。なお、バッファ装置１６１からは、４０９６ビット分の出力データの転送が終了となる（ステップＳ１３）。
【００３８】
以上のようにして、バッファ装置１６１は、データチャネル１４から出力される１セクタ分のデータ（５１２バイト）を入力して、かつＤＲＡＭ１６０に対して出力する１回目の転送を終了する。
【００３９】
次に、コントローラ３０１は、図７に示すように、１回目の転送終了時点での入力側ポインタ値（２６０）及び出力側ポインタ値（２５６）を、前述の条件に合致するポインタ値（３２０）までジャンプさせる（ステップＳ２１，Ｓ２２）。この状態から、２回目のデータ転送が開始されると、データチャネル１４から出力されたディスクデータＤＤの２０ビット分の入力データが転送されて、バッファ装置１６１に入力される（ステップＳ２３）。入力側ポインタ値は、図４（Ｂ）に示すように、３２０から３４０に変化する（ステップＳ２４）。以後は、１回目の転送動作と同様に２回目のデータ転送動作が実行される。
【００４０】
即ち、バッファ装置１６１に８０ビット分の入力データが転送されると、出力側ポインタ値は３８４に変化し、６４ビット単位のデータ出力が実行される（ステップＳ２５〜Ｓ２７）。さらに、２０ビット単位の入力データが順次転送されて、その入力順に６４ビット単位の出力データが順次転送される。
【００４１】
ここで、バッファメモリ部３００の容量９６０ビット分まで転送されると、入力側ポインタ値は９４０に変化し、出力側ポインタ値は８９６に変化する（ステップＳ２８）。そして、６４ビット単位の出力データが転送されると、入力側ポインタ値及び出力側ポインタ値は、それぞれ０に戻る（ステップＳ２９，Ｓ３０）。
【００４２】
そして、４１００ビット分の入力データが転送されると、２回目のデータ転送が終了となり、入力側ポインタ値及び出力側ポインタ値は、それぞれ５８０，５７６に変化する（ステップＳ３１，Ｓ３２）。バッファ装置１６１からは、４０９６ビット分の出力データの転送が終了となる（ステップＳ３３）。
【００４３】
以上要するに本実施形態は、入出力データ転送ビット数（入出力データ幅）が異なる場合に、１回目の転送終了時点で、入力側ポインタ値及び出力側ポインタ値を、前述の条件に合致するポインタ値までジャンプさせる。そして、この状態から、２回目のデータ転送を開始することにより、正常にデータ転送動作を終了することができる。この場合、特に、出力側ポインタのデコードは、０，６４，１２８，１９６，…，８３２，８９６のように、６４ビットおきの最小にすることができる。従って、結果としてコントローラ３０１でのデコード数を最小限にして、当該デコードを実現するロジック回路量を最小限にすることが可能となる。
【００４４】
なお、本実施形態は、ディスクコントローラ１６での入力側バッファ装置１６１を想定したが、当然ながら、入出力転送ビット数が異なる出力側バッファ装置１６２にも適用できる。また、適用分野としてディスクドライブ１０のディスクコントローラ１６を想定したが、バッファ装置の入出力転送ビット数の仕様が同様であれば、他の適用分野でもよい。
【００４５】
【発明の効果】
以上詳述したように本発明によれば、ＦＩＦＯ方式のバッファ装置において、入出力ポインタの整合性を維持して、確実なデータ転送を実現することができる。
【図面の簡単な説明】
【図１】  本発明の実施形態に関するディスクドライブの要部を示すブロック図。
【図２】  本実施形態に関するディスクコントローラの要部を示すブロック図。
【図３】  本実施形態に関するＦＩＦＯ方式のバッファ装置の構成を示すブロック図。
【図４】  本実施形態に関するバッファ装置でのポインタ遷移を示す図。
【図５】  本実施形態に関するバッファ装置のポインタ制御を説明するための図。
【図６】  本実施形態に関するバッファ装置の制御動作を説明するためのフローチャート。
【図７】  本実施形態に関するバッファ装置の制御動作を説明するためのフローチャート。
【符号の説明】
１０…ディスクドライブ、１１…ディスク媒体、１２…ヘッド、
１３…ヘッドアンプ、１４…データチャネル（リード／ライトチャネル）、
１５…バッファ回路、１６…ディスクコントローラ（ＨＤＣ）、
２０…ホストシステム、１６０…セクタバッファ（ＤＲＡＭ）、
１６１，１６２…ＦＩＦＯ方式のバッファ装置、１６３…メモリバス、
３００…バッファメモリ部、３０１…コントローラ。
【図１】
0003665636.tif 000002
【図２】
0003665636.tif 000003
【図３】
0003665636.tif 000004
【図４】
0003665636.tif 000005
【図５】
0003665636.tif 000006
【図６】
0003665636.tif 000007
【図７】
0003665636.tif 000008