JP2008293154A - データ転送制御装置及び電子機器 - Google Patents

データ転送制御装置及び電子機器 Download PDF

Info

Publication number
JP2008293154A
JP2008293154A JP2007136151A JP2007136151A JP2008293154A JP 2008293154 A JP2008293154 A JP 2008293154A JP 2007136151 A JP2007136151 A JP 2007136151A JP 2007136151 A JP2007136151 A JP 2007136151A JP 2008293154 A JP2008293154 A JP 2008293154A
Authority
JP
Japan
Prior art keywords
data
transfer
data transfer
register
fis
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2007136151A
Other languages
English (en)
Inventor
Kuniaki Matsuda
邦昭 松田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Seiko Epson Corp
Original Assignee
Seiko Epson Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Seiko Epson Corp filed Critical Seiko Epson Corp
Priority to JP2007136151A priority Critical patent/JP2008293154A/ja
Publication of JP2008293154A publication Critical patent/JP2008293154A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Bus Control (AREA)

Abstract

【課題】ATAとSATAのバスブリッジ機能を実現しながらATAPIのデータ転送についても適正に実現する。
【解決手段】データ転送制御装置は、PATAバスに接続されるPATAI/F10と、SATAバスに接続されるSATAI/F50と、転送シーケンス制御を行うシーケンスコントローラ30を含む。ホスト2が、DMAビットがDMA設定にされたATAパケットコマンドを発行し、データレジスタにコマンドパケットが設定されたATAPIパケットコマンドを発行した場合に、PATAI/F10は、ホスト2との間でDMAのデータ転送を行い、SATAI/F50は、デバイス4との間でPIOのデータ転送を行う。
【選択図】図1

Description

本発明は、データ転送制御装置及び電子機器に関する。
近年、ストレージデバイス等のシリアルインターフェースとして、シリアルATA(Serial AT Attachment)と呼ばれる規格が脚光を浴びている。このシリアルATAは、パラレルATA(IDE)との間のソフトウェアレベルでの互換性を備えた規格である。そして最初の規格であるシリアルATA Iのデータ転送速度は1.5Gbpsであったが、次の規格であるシリアルATA II Gen2ではデータ転送速度が3.0Gbpsに高速化している。このシリアルATAを用いれば、電子機器が内蔵する回路基板間の配線本数を減らすことができ、電子機器のコンパクト化を図れる。
ところが、電子機器のホスト(ホストデバイス、ホスト基板)は、パラレルATA(以下、適宜、PATAと呼ぶ)のインターフェース(以下、適宜、I/Fと呼ぶ)は備えているが、シリアルATA(以下、適宜、SATAと呼ぶ)のI/Fについては備えていないものが多い。従って、このようPATAI/Fのみを備えた既存のホストに対しては、SATAのデバイスを接続できないという問題がある。
またHDD(ハードディスクドライブ)などのデバイスは、その大部分が、PATAI/FからSATAI/Fに置き換わっており、PATAI/Fを備えるHDDの入手が困難になっている。このため、PATAI/Fのみを備えるホストに対して接続可能なHDDの種類が限定されてしまい、電子機器の内蔵HDDの大容量化等が妨げられるという問題がある。
またCDドライブ、DVDドライブなどのマルチメディア系デバイスのインターフェースとしてATAPI(AT Attachment Packet Interface)がある。このATAPIでは、従来からのATAコマンドの拡張を最小限に抑えるために、パケットコマンドという概念を導入している。このATAPIによれば、HDD用のATA(IDE)コントローラに対して、HDD以外のデバイスも接続できるようになる。従って、PATAとSATAのブリッジ機能をデータ転送制御装置に持たせた場合には、このATAPIのデータ転送についても適正に実現できることが望ましい。
なお特許文献1、2には、SATAとPATAのブリッジICが開示されている。しかしながらこの特許文献1、2は、ブリッジICを使用した回路基板などに関する発明であり、ブリッジICの具体的な構成に関する発明ではない。
また特許文献3には、SATAブリッジを内蔵するHDDが開示されている。しかしながら、この特許文献3のSATAブリッジは、SATA側にホストが接続されPATA側にデバイスが接続されるブリッジであり、PATA側にホストが接続されSATA側にデバイスが接続されるブリッジに関する発明ではない。また特許文献3は、ファームウェアによるプロトコル制御に特徴がある発明であり、回路構成に特徴がある発明ではない。
特開2005−346123号公報 特開2006−121621号公報 特開2006−18428号公報
本発明は、以上のような課題に鑑みてなされたものであり、本発明に係る幾つかの態様によれば、ATAとSATAのバスブリッジ機能を実現しながらATAPIのデータ転送についても適正に実現できる。
本発明は、パラレルATAとシリアルATAのバスブリッジ機能を有するデータ転送制御装置であって、パラレルATAバスに接続され、ホストとの間のインターフェースを行うパラレルATAインターフェースと、シリアルATAバスに接続され、シリアルATAのデバイスとの間のインターフェースを行うシリアルATAインターフェースと、転送シーケンス制御を行うシーケンスコントローラを含み、前記ホストが、DMAビットがDMA設定にされたATAパケットコマンドを発行し、データレジスタにコマンドパケットが設定されたATAPIパケットコマンドを発行した場合に、前記パラレルATAインターフェースは、前記ホストとの間でDMAのデータ転送を行い、前記シリアルATAインターフェースは、前記デバイスとの間でPIOのデータ転送を行うデータ転送制御装置に関係する。
本発明によれば、ホストが、DMA設定のATAパケットコマンドを発行し、その後にコマンドパケットを伝えるためのATAPIパケットコマンドを発行すると、パラレルATAインターフェースは、ホストとの間ではDMAによりデータ転送を行う。一方、シリアルATAインターフェースは、デバイスとの間ではPIOセットアップFISやデータFISを用いたPIOによりデータ転送を行う。このようにPIOによりデータ転送を行えば、各PIO転送のデータバイト数の管理が可能になるため、転送バイト数の整合が取れなくなるなどの事態を防止でき、ATAとSATAのバスブリッジ機能を実現しながらATAPIのデータ転送についても適正に実現できるようになる。
また本発明では、前記パラレルATAインターフェースは、タスクファイル・レジスタを有し、前記シリアルATAインターフェースは、シャドウ・タスクファイル・レジスタを有し、前記シーケンスコントローラは、前記ATAパケットコマンドが発行され、前記DMAビットがDMA設定である場合には、前記DMAビットをPIO設定に書き換え、前記DMAビットがPIO設定に書き換えられたレジスタ値を、前記タスクファイル・レジスタから前記シャドウ・タスクファイル・レジスタに転送してもよい。
このようにDMAビットをPIO設定に書き換えれば、パラレルATA側についてはDMA転送モードに設定してデータ転送を行いながら、シリアルATA側についてはPIO転送モードに設定してデータ転送を行うことが可能になる。
また本発明では、前記シーケンスコントローラは、前記ATAPIパケットコマンドが発行されて前記シリアルATAインターフェースが前記コマンドパケットを含むデータFISを前記デバイスに送信し、前記デバイスからPIOセットアップFISを受信した場合に、総データ転送数を管理しないフリーラン転送を開始してもよい。
このようにフリーラン転送を行えば、総データ転送数のカウント回路が不要になるため、回路の小規模化を図れる。
また本発明では、前記シーケンスコントローラは、データFISを受信した前記デバイスからPIOセットアップFISを受信した場合に、受信したPIOセットアップFISに基づいてデータの転送方向、転送種別を判断して、前記フリーラン転送のシーケンス制御を行ってもよい。
このようにすれば、転送方向、転送種別を設定した適正な転送シーケンス制御を実現できる。
また本発明では、前記シーケンスコントローラは、前記フリーラン転送においては、前記デバイスから受信したPIOセットアップFISに設定された転送カウントに基づいて、各PIO転送の転送バイト数を管理してもよい。
このようにすれば、総データ転送数を管理しないフリーラン転送手法を採用した場合にも、総データ転送数の適合が取れた適正なデータ転送を実現できる。
また本発明では、前記シーケンスコントローラは、前記フリーラン転送の開始後、前記デバイスからレジスタFISを受信した場合に、前記フリーラン転送を終了してもよい。
このようにすれば、受信したFISがレジスタFISであるか否かを判断するだけで、フリーラン転送の終了を判断できるため、回路の簡素化や小規模化を図れる。
また本発明では、前記シーケンスコントローラは、転送方向が、ホストがデバイスのデータをリードするリード方向である場合には、前記デバイスからレジスタFISを受信し前記パラレルATAインターフェースでのデータ転送が完了した後に、前記フリーラン転送を終了してもよい。
このように、パラレルATAインターフェースでのデータ転送が完了した場合に、フリーラン転送を終了するようにすれば、データ転送制御装置にデータが残ってしまう事態を防止できる。
また本発明では、前記シリアルATAインターフェースは、前記デバイスとの間でのPIO転送の転送バイト数がシリアルATAのデータ転送単位のバイト数未満であり、前記デバイスからダミーデータを受信した場合に、前記パラレルATAインターフェース側への前記ダミーデータの出力をマスクしてもよい。
このようにすれば、ダミーデータがホスト側に転送されて誤動作等を招く事態を効果的に防止できる。
また本発明では、前記パラレルATAインターフェースは、タスクファイル・レジスタを有し、前記シリアルATAインターフェースは、シャドウ・タスクファイル・レジスタを有し、前記シーケンスコントローラは、前記パラレルATAインターフェースでのDMAのデータ転送及び前記シリアルATAインターフェースでのPIOのデータ転送が完了した後、ビジービット及びデータリクエストビットがクリアされたレジスタ値を、前記シャドウ・タスクファイル・レジスタから前記タスクファイル・レジスタに転送してもよい。
このようにビジービット及びデータリクエストビットをクリアすれば、タスクファイル・レジスタを介して、総データ転送の終了をホストに伝えることが可能になる。
また本発明は、上記のいずれかに記載のデータ転送制御装置と、前記データ転送制御装置に接続される前記ホストと、前記データ転送制御装置に接続される前記デバイスとを含む電子機器に関係する。
以下、本発明の好適な実施の形態について詳細に説明する。なお以下に説明する本実施形態は特許請求の範囲に記載された本発明の内容を不当に限定するものではなく、本実施形態で説明される構成の全てが本発明の解決手段として必須であるとは限らない。
1.データ転送制御装置の構成
図1に本実施形態のデータ転送制御装置の構成例を示す。このデータ転送制御装置はPATA(Parallel AT Attachment)とSATA(Serial AT Attachment)のバスブリッジ機能を有する。
なお本実施形態のデータ転送制御装置は図1の構成に限定されず、その構成要素の一部(例えばデータバッファ)を省略したり、他の構成要素(例えば外部I/F回路、CPU、タイマ)を追加するなどの種々の変形実施が可能である。例えば本実施形態のデータ転送制御装置は、PATAとSATAのバスブリッジ機能以外にも、PATAとUSB、PATAとSD(Secure Digital)カードインターフェス、PATAとCE−ATAのバスブリッジ機能を実現できるようにしてもよい。
PATAI/F10(パラレルATAインターフェース)は、PATAバス(ATAバス、IDEバス)に接続され、ホスト2(ホストデバイス)との間のインターフェースを行う。具体的にはPATAI/F10は、ホスト2が有するホスト側のPATAI/FにPATAバスを介して接続される。そしてATAで規格化された後述する各種信号によりやり取りを行い、PATA(IDE)のデータ転送を実現する。またPATAI/F10は、データバッファ70を介したSATAI/F50との間のデータ転送制御も行う。このPATAI/F10は、PATAとSATAのブリッジ用に擬似的(仮想的)に設けられたタスクファイル・レジスタ12を含むことができる。
なおホスト2としては、例えばCPU、MPU、DSPなどのプロセッサや、専用制御ICや、これらのプロセッサ又は専用制御ICが実装されたホスト回路基板などが考えられる。またデバイス4としては、ハードディスクドライブ(HDD)、光ディスクドライブ(CD、DVD)、磁気ディスクドライブなどのSATAI/Fを備える各種デバイスが考えられる。
SATAI/F50(シリアルATAインターフェース)は、SATAバス(高速シリアルバス)に接続され、SATAのデバイス4との間のインターフェースを行う。具体的にはSATAI/F50は、デバイス4が有するデバイス側のSATAI/Fに接続され、小振幅の差動信号によりやり取りを行い、SATAのデータ転送を実現する。またSATAI/F50は、データバッファ70を介したPATAI/F10との間のデータ転送制御も行う。このSATAI/F50は、SATA規格のシャドウ・タスクファイル・レジスタ52を含むことができる。
シーケンスコントローラ30は転送のシーケンス制御を行う。具体的には、PATAとSATAのブリッジ機能を実現するために、PATAI/F10、SATAI/F50、データバッファ70の間のデータ転送のシーケンス制御を行ったり、レジスタ値の転送シーケンス制御を行う。
データバッファ70は、ホスト2(PATAI/F)、デバイス4(SATAI/F)の間で転送されるデータのバッファリングを行う。そしてPATA側とSATA側のクロック周波数の差を吸収するための緩衝用のバッファ(FIFO)として機能する。即ちPATA側のクロック周波数が例えば50MHz(或いは60MHz)で、SATA側のクロック周波数が例えば37.5MHzである場合に、データバッファ70を設けることでこのクロック周波数の差を吸収できる。このデータバッファ70は、例えば50MHz(第1の周波数)でデータが入出力されるPATAI/F10側の第1のポートと、例えば37.5MHz(第2の周波数)でデータが入出力されるSATAI/F50側の第2のポートとを有するデュアルポートのメモリ(RAM)などにより実現できる。
図1の構成によれば、ホスト2がPATAI/Fしか備えていない場合にも、SATAI/Fを有するデバイス4をデータ転送制御装置を介してホスト2に接続できる。従って、ホスト2のファームウェア、ソフトウェアとして、既存のPATA(IDE)用のファームウェア、ソフトウェアを使用できる。これにより電子機器の開発期間の短縮化や低コスト化を図れる。またデバイス4として、市場供給量が多い大容量のHDDをホスト2に接続できるようになり、電子機器の内蔵HDDの大容量化を図れる。
またホスト2が搭載される回路基板とデバイス4が搭載される回路基板の間を、シリアルバスであるSATAバスで接続できるため、回路基板間の配線本数を減らすことができ、電子機器のコンパクト化を図れる。
そして実施形態では図1に示すように、ホスト2が、DMAビットがDMA設定にされたATAパケットコマンドを発行し、データレジスタにコマンドパケットが設定されたATAPIパケットコマンドを発行すると、PATAI/F10は、ホスト2との間でDMAのデータ転送を行う。一方、SATAI/F50は、デバイス4との間でPIOのデータ転送を行う。即ちPIOセットアップFISとデータFISを用いたデータ転送を行う。
例えばSATAのデータ転送単位は4バイトであるが、ATAPIでは4バイトでは割り切れないデータのペイロード指定が可能になっている。従って、ATAPIのDMA転送を行った場合に、SATA側の半端なデータについてはダミーデータによりパディングされる。そしてダミーデータがホスト側に転送されてしまうと、転送データの設定バイト数と実転送データの総バイト数の適合性が取れなくなるという問題が生じる。
この点、本実施形態では、ATAPIによるDMA転送の際に、図1に示すようにPATA側では通常どおりDMAのデータ転送を行う一方で、SATA側ではPIOセットアップFISを用いたPIOのデータ転送を行う。このようにすれば、各PIO転送の転送バイト数は、PIOセットアップFISの転送カウント(transfer count)を用いて管理できる。従って、ホスト2側にダミーデータが転送されて転送バイト数の適合性が取れなくなってしまう事態を効果的に防止できる。
2.詳細な構成例
図2にデータ転送制御装置の詳細な構成例を示す。PATAI/F10はタスクファイル・レジスタ(以下、適宜、TFRと呼ぶ)12、転送コントローラ14を含む。ここでTFR12は、PATAとSATAのバスブリッジ用に擬似的に設けられたレジスタである。このTFR12を設けることで、ホスト2は、SATAのデバイス4を、あたかもPATAのデバイスのように扱ってデータのリードやライトを行うことが可能になる。即ちホスト2は、既存のPATA用のファームウェアやソフトウェアを使用して、SATAのデバイス4を制御できるようになる。
転送コントローラ14は、PATA用の信号XCS〜XPDIAGを用いてPATA(IDE)のインターフェースを実現したり、データ転送用の制御信号を用いて、データバッファ70との間のデータ転送を制御する。
データバッファ70は、メモリコントローラ72、FIFOメモリ(FIFORAM)74を含む。メモリコントローラ72は、FIFOメモリ74のデータの書き込み制御や読み出し制御を行う。またPATAI/F10やSATAI/F50との間で、例えばREQ信号やACK信号などの制御信号を用いたデータ転送制御を行う。
SATAI/F50は、シャドウ・タスクファイル・レジスタ(以下、適宜、SFRと呼ぶ)52、トランスポートコントローラ110、リンクコントローラ150、物理層回路200を含む。
トランスポートコントローラ110、リンクコントローラ150、物理層回路200は、各々、SATA規格のトランスポート層、リンク層、物理層の処理を行う回路である。
シャドウ・タスクファイル・レジスタ(SFR)52はSATAで規格化されているレジスタである。即ちSATAでは、従来のPATA(IDE)との間でソフトウェアレベルでの互換性が維持されており、タスクファイル・レジスタが2つ存在することが特徴になっている。即ちホスト(HBA)側のシャドウ・タスクファイル・レジスタ52とデバイス側の本来のタスクファイル・レジスタ5である。
一方、PATAI/F10に設けられたタスクファイル・レジスタ(TFR)12はSATAで規格化されるレジスタではなく、PATAとSATAのブリッジ用に設けられた擬似的なレジスタである。ホスト2は、レジスタ12をPATAのタスクファイル・レジスタとして認識してアクセスし、レジスタ値を書き込んだり、レジスタ値を読み出す。すると本実施形態のデータ転送制御装置が、タスクファイル・レジスタ12のレジスタ値をシャドウ・タスクファイル・レジスタ52に転送したり、シャドウ・タスクファイル・レジスタ52のレジスタ値をタスクファイル・レジスタ12に転送するなどの処理を行う。
このようにすれば、ホスト2が、PATAのタスクファイル・レジスタ12にレジスタ値を書き込むと、そのレジスタ値がSATAのシャドウ・タスクファイル・レジスタ52に転送されて書き込まれ、SATAバスを介してFISによりデバイス4に転送されるようになる。またデバイス4からのFISによりシャドウ・タスクファイル・レジスタ52に書き込まれたレジスタ値が、タスクファイル・レジスタ12に転送されてホスト2に読み出されるようになる。従ってホスト2は、SATAのデバイス4を、あたかもPATAのデバイスのように扱ってデータのリードやライトを行うことが可能になり、PATAとSATAのブリッジ機能を効率良く実現できる。
なおタスクファイル・レジスタ(TFR)12とシャドウ・タスクファイル・レジスタ(SFR)52の間のレジスタ値の転送は次のような手法により実現できる。即ちTFR12のレジスタ群のビット(全ビット)とSFR52のレジスタ群のビット(全ビット)を、シーケンスコントローラ30を介して信号線により接続しておく。そしてレジスタ値の転送を行う場合には、シーケンスコントローラ30が転送トリガ信号を生成し、この転送トリガ信号に基づいて、TFR12のレジスタ値をSFR52に転送したり、SFR52のレジスタ値をTFR12に転送すればよい。
3.PATAI/F
次に、PATAI/F10のデータ転送処理について、図2の構成及び図3(A)〜図4(B)の信号波形を用いて説明する。
XCS[1:0]は、PATAの各レジスタにアクセスするために使用するチップセレクト信号である。DA[2:0]は、データ又はデータポートにアクセスするためのアドレス信号である。DMARQ、XDMACKは、DMA転送に使用される信号である。データ転送の準備が整った時にデバイス側がDMARQをアクティブ(アサート)にし、これに応答して、ホスト側がXDMACKをアクティブにする。
XDIOWは、レジスタ又はデータポートの書き込み時に使用するライト信号である。XDIORは、レジスタ又はデータポートの読み出し時に使用するリード信号である。IORDYは、デバイス側のデータ転送の準備が整っていない時のウェイト信号等に使用される。
INTRQは、デバイス側が、ホスト側に対して割り込みを要求するために使用される信号である。このINTRQがアクティブになった後、ホスト側がデバイス側のTFR12のステータスレジスタの内容を読むと、所定時間後にデバイス側はINTRQを非アクティブ(ネゲート)にする。このINTRQを用いることで、デバイス側は、コマンド処理の終了をホスト側に通知できる。
図3(A)、図3(B)は、PIO(Programmed I/O)リード、PIOライトの信号波形例である。PATAのTFR12のステータスレジスタのリードは図3(A)のPIOリードにより行い、コマンドレジスタへのライトは図3(B)のPIOライトにより行う。例えばホスト2によるATAコマンドの発行は、PIOライトにより実現できる。
図4(A)、図4(B)は、DMAリード、DMAライトの信号波形例である。データ転送の準備ができると、デバイス側(データ転送制御装置)が、DMARQをアクティブにする。そして、それを受けて、ホスト側が、XDMACKをアクティブにして、DMA転送を開始する。その後、XDIOR(リード時)又はXDIOW(ライト時)を使用して、データDD[15:0]のDMA転送を行う。
4.SATAI/F
次にSATAI/F50のデータ転送処理について説明する。図5はSATAの送信側のデータ転送処理の流れを示し、図6は受信側のデータ転送処理の流れを示している。
図5に示すように送信側のトランスポートコントローラ(トランスポート層)では、シャドウ・タスクファイル・レジスタに書き込まれたコマンドやデータポートに入力されたデータによりFISが生成される。ここでFISは、フレームのペイロード部であり、Dword(32ビット)単位で構成される。またフレームは、ホストとデバイスの間で交換される情報ユニットであり、SOF(Start Of Frame)プリミティブと、FISと、FISに対して計算されたCRC(Cyclic Redundancy Check)と、EOF(End Of Frame)プリミティブにより構成される。
送信側のリンクコントローラでは、FISに対するCRCが演算されてFISの最後尾に付加される。そしてFIS及びCRCとスクランブルデータとの排他的論理和(XOR)をとるスクランブル処理が行われる。このようにスクランブルされたFIS及びCRCに対して、8b/10bのエンコードが行われる。ここで8b/10bエンコードは、8ビットのデータを10ビットの伝送キャラクタに変換するデータ伝送符号化のアルゴリズムであり、符号列内の1と0の数を揃え、連続的な伝送を保証する。そして8b/10bエンコード後のFIS及びCRCに対してSOF、EOFなどのプリミティブが付加される。
送信側の物理層回路では、リンクコントローラからのパラレルデータがシリアルデータに変換され、小振幅の差動信号としてSATAバスに送信される。
図6に示すように受信側の物理層回路では、SATAバスを介して受信したシリアルデータがパラレルデータに変換される。
受信側のリンクコントローラでは、FIS及びCRCに付加されたプリミティブに対するデコードが行われる。またFIS及びCRCに対する8b/10bのデコードが行われる。即ち10ビットの伝送キャラクタが8ビットのデータに変換される。次に、スクランブルされたFIS及びCRCとスクランブルデータとの排他的論理和をとるデスクランブル処理が行われる。そしてFISの最後尾に付加されたCRCがチェックされる。
受信側のトランスポートコントローラでは、FISのコマンドがシャドウ・タスクファイル・レジスタに書き込まれ、ステータスや割り込みが出力されると共に、データがデータポートを介して出力される。
なお図7にATAのタスクファイル・レジスタのフォーマット例を示す。タスクファイル・レジスタはコントロールブロックレジスタとコマンドブロックレジスタを有し、チップセレクト信号XCS0、XCS1が、Hレベル(ネゲート)、Lレベル(アサート)である場合にはコントロールブロックレジスタが選択され、Lレベル、Hレベルである場合にはコマンドブロックレジスタが選択される。またコマンドブロックレジスタには、ステータスレジスタ(Status)やATAコマンドレジスタ(ATA Command)が設けられる。
また図8(A)〜図8(D)に、SATAI/F50により送受信されるFISのフォーマット例を示す。図8(A)はホストからデバイスへのレジスタFIS、図8(B)はデバイスからホストへのレジスタFIS、図8(C)はPIOセットアップFIS、図8(D)はDMAアクティベートFISのフォーマットである。
5.ATAPI
次にATAPIのコマンドプロトコルについて説明する。図9(A)に示すようにATAのコマンドプロトコルでは、デバイスセレクションのプロトコルが行われた後、図7に示すタスクファイル・レジスタの各パラメータ(Features、Sector Number、Sector Count等)の設定が行われる。そしてタスクファイル・レジスタのコマンドレジスタを用いてATAコマンドが発行され、タスクファイル・レジスタのデータレジスタを用いてデータが転送される。
一方、ATAPIのコマンドプロトコルでは、デバイスセレクションのプロトコルが行われた後、タスクファイル・レジスタの各パラメータ(Features、Sector Count等)の設定が行われる。そしてタスクファイル・レジスタのコマンドレジスタ(A0h)を用いてATAパケットコマンドが発行される。その後、タスクファイル・レジスタのデータレジスタを用いてATAPIパケットコマンドが発行(転送)される。そしてATAPIパケットコマンドがデバイスに転送された後に、タスクファイル・レジスタのデータレジスタを用いてデータが転送される。
例えば図10(A)にパケットコマンドのパラメータの例を示し、図10(B)にステータスレジスタの例を示す。ホスト2は、ATAPIのデータ転送を行う場合には図10(A)のA1に示すようにA0hのコマンドが設定されたATAパケットコマンドを発行する。またDMAのデータ転送を行う場合にはA2に示すDMAビットを1に設定し、PIOのデータ転送を行う場合にはDMAビットを0に設定する。また転送方向については図10(B)のA3に示すI/Oビットにより知ることができ、コマンドかデータかの区別はA4に示すC/Dビットにより知ることができる。
このようにATAPIでは、タスクファイル・レジスタを用いて転送されるパケットコマンドという概念を導入することで、レジスタマップやハードウェア等の変更を加えずに、ATAPIのデバイスをATA用コントローラに接続することを可能にしている。
6.DMA転送時のSATA側へのPIO転送モード設定
バスブリッジ機能を有するデータ転送制御装置では、ホスト2が指定する転送モードの設定は、デバイス4に対してスルーして伝達されるため、PATA側と同じ転送モードにSATA側の転送モードも設定されるのが一般的である。即ちPATA側がPIO転送モードである場合にはSATA側もPIO転送モードに設定され、PATA側がDMA転送モードである場合にはSATA側もDMA転送モードに設定される。
これに対して本実施形態では図1に示すように、DMAのデータ転送時に、PATA側についてはDMA転送モードに設定する一方で、SATA側についてはPIO転送モードに設定する手法を採用している。このような手法を採用することで、ホスト側にダミーデータが転送されて転送バイト数の適合性が取れなくなってしまう事態等を防止できる。
なお、発行されたATAPIパケットコマンドが特定コマンド(例えばREAD10、READ12、READ CD、READ CD MSF、WRITE10、WRITE12)である場合には、PATA側及びSATA側の両方をDMA転送モードに設定してもよい。
次に本実施形態の手法を、図11、図12の転送シーケンス及び図13(A)〜図16(E)を用いて詳細に説明する。
まず図11のB1及び図13(A)に示すように、ホスト2がATAパケットコマンドを発行する。そしてATAPIのDMA転送を行う場合には、ホスト2が発行するATAパケットコマンドは、図10(A)のA1に示すコマンドコードがA0hに設定され、A2に示すDMAビットが1に設定(DMA設定)されている。
このようなDMA設定のATAパケットコマンドが発行されると、図11のB2に示すようにデータ転送制御装置(シーケンスコントローラ)は、TFR(タスクファイル・レジスタ)12のATAステータスレジスタ(図7のStatus)をD0hに設定する。即ちステータスレジスタのBUSYビットを1にセットし、DRQ(データリクエスト)ビットを0にクリアして、デバイス4側がビジー状態であることを知らせる。
このようにホスト2によりATAパケットコマンドが発行され、そのDMAビットがDMA設定(=1)になっている場合には、図11のB3、図13(B)に示すように、データ転送制御装置(シーケンスコントローラ)は、DMAビットをPIO設定(=0)に書き換える。そしてDMAビットがPIO設定に書き換えられたレジスタ値を、TFR12からSFR52に転送する。
そしてデータ転送制御装置(SATAI/F)は、このようにレジスタ値が設定されたSFR52に基づいて、レジスタFIS(Host to Devicr)を生成して、デバイス4に送信する。即ち図8(A)のFuturesレジスタのDMAビットが0に設定されたレジスタFISをデバイス4に送信する。するとデバイス4は、受信したレジスタFISに基づいてPIOセットアップFISを生成し、データ転送制御装置(SATAI/F)に送信する。
図11のB4、図13(C)に示すように、データ転送制御装置は転送方向、転送種別等の転送シーケンス設定を実行する。そして受信したPIOセットアップFISに基づいて、ATAステータスレジスタを58hに設定するなどのTFR12のレジスタ値の設定処理を行う。即ちBUSYビット(図10(B)のA5)を0、DRQビット(A6)を1、C/Dビット(A4)を1、I/Oビット(A3)を0に設定する。これによりデバイス4側がビジー状態ではないこと、パケットコマンドが要求されていること、転送方向がホスト2からデバイス4への方向であることが、ホスト2に知らされる。
そして図11のB5及び図14(A)に示すように、ホスト2は、データレジスタに12バイトのパケットコマンドが設定されたATAPIパケットコマンドを発行する。すると図11のB6に示すようにデータ転送制御装置(シーケンスコントローラ)はTFR12のATAステータスレジスタをD0hに設定する。即ちBUSYビットを1にセットし、DRQビットを0にクリアする。そして図11のB7に示すように12バイトのパケットコマンドを含むデータFISをデバイス4に送信する。デバイス4は準備が完了すると、データ転送のためのPIOセットアップFISを送信する。
図12のB8に示すようにデータ転送制御装置は、このPIOセットアップFISを受信すると、PIOセットアップFIS(図8(C))の転送方向パラメータDにより、PIOリード(転送方向がリード方向、転送種別がPIO)である事を認識する。そして図12のB9及び図14(B)に示すように、転送方向、転送種別等の転送シーケンス設定を実行し、フリーラン転送を開始する。
このように本実施形態では、データ転送制御装置(シーケンスコントローラ)は、ATAPIパケットコマンドが発行されて(図11のB5)、SATAI/F50がコマンドパケットを含むデータFISをデバイス4に送信し(B7)、デバイス4からPIOセットアップFISを受信した場合に、総データ転送数を管理しないフリーラン転送を開始する(図12のB9)。即ちシーケンスコントローラ30が、転送開始信号(Tran Go)をアクティブにした後、総データ転送数(総セクタ数、DMA転送数)のカウント処理を行わないフリーラン転送を開始する。そしてフリーラン転送を終了する場合には、転送停止信号(Tran Stop)をアクティブにする。
このようなフリーラン転送が開始すると、データ転送制御装置(PATAI/F)は、図12のB10に示すように信号DMARQをアサートする。即ち図4(A)に示すような信号波形のDMA転送用の信号を用いて、図12のB11及び図14(C)に示すようにホスト2との間で通常のDMAのデータ転送を行う。
一方、図12のB12及び図14(C)に示すように、デバイス4との間では、PIOセットアップFIS及びデータFISを用いたPIOのデータ転送を行う。
この場合に、図12のB11、B12に示すフリーラン転送においては、シーケンスコントローラ30は、総データ転送数については管理しない一方で、デバイス4から受信したPIOセットアップFISに設定された転送カウント(図8(C)のTransfer Count)に基づいて、各PIO転送(PIO転送ユニット)の転送バイト数については管理する。このようにすれば、総データ転送数を管理しないフリーラン転送手法を採用した場合にも、適正なデータ転送を実現できる。
そして図12のB13、B14、B15及び図15(A)に示すように、シーケンスコントローラ30は、フリーラン転送の開始後にデバイス4からレジスタFISを受信した場合に、フリーラン転送の終了処理を行う。具体的には、転送方向が、ホスト2がデバイス4のデータをリードする方向(DMAリード)である場合には、B13に示すようにデバイス4からレジスタFISを受信し、B14に示すようにPATAI/F10でのデータ転送が完了した後に、フリーラン転送を終了する。例えば図15(A)に示すように、データバッファ70からの信号FIFORemainにより、データバッファ70に残りデータが無いことが確認され(FIFOエンプティが確認され)、PATAI/F10からの転送完了割り込み信号TRANCMPにより、PATAI/F10でのデータ転送の完了が確認された場合に、フリーラン転送を終了する。つまりデータバッファ70のFIFO及びPATAI/F10内のFIFOの残りデータが無いことが確認された場合に、フリーラン転送を終了する。
なおDMAライトのフリーラン転送では、デバイス4からレジスタFISを受信した場合に、フリーラン転送の終了処理を行う。一方、DMAリードでは、レジスタFISの受信後、PATAバスへのデータ出力が完了した後に、フリーラン転送を終了する。例えばPATAI/F10は、データ転送が完了すると転送完了割り込み信号TRANCMPをシーケンスコントローラ30に出力し、これによりシーケンスコントローラ30は、転送の停止信号を出力して、フリーラン転送を終了する。このようにすればホスト2による適正なDMAリードを実現できる。
PATAI/F10でのDMAのデータ転送及びSATAI/F50でのPIOのデータ転送が完了し、フリーラン転送が終了すると、PATAI/F10は、図12のB16に示すように信号DMARQをネゲートする。そしてシーケンスコントローラ30は、図12のB17及び図15(B)に示すようにATAステータスレジスタが50hに設定されたレジスタ値をSFR52からTFR12に転送する。即ちBUSYビット及びDRQビットが0にクリアされたレジスタ値を、SFR52からTFR12に転送する。これにより、デバイス4側がビジー状態では無いことをホスト2に知らせることができる。
なお本実施形態では、デバイス4との間でのPIOデータ転送の転送バイト数が、SATAのデータ転送単位のバイト数である例えば4バイト未満であり、デバイス4からダミーデータを受信した場合には、SATAI/F50は、PATAI/F10側(データバッファ70)へのダミーデータの出力をマスクする。
例えば図16(A)〜図16(E)では、総データ転送バイト数が128×4+1=513バイトであるデータ転送が行われており、この513バイトは、SATAのデータ転送単位(最小データ転送バイト数)である4バイトでは割り切れない。
この場合に図16(A)〜図16(D)では、デバイス4がデータFISを用いて128バイトずつのデータをSATAI/F50に送信し、SATAI/F50は受信した128バイトのデータをデータバッファ100に出力している。
一方、図16(E)では、デバイス4は、最後の1バイトのデータに対して3バイトのダミーデータをパディングして、SATAI/F50に送信している。この場合にはSATAI/F50は、最後の1バイトのデータのみをデータバッファ70に出力し、3バイトのダミーデータについてはその出力をマスクする。このようにすれば、ダミーデータがホスト2側に転送されて誤動作等を招く事態を防止できる。
7.フリーラン転送
ATAのPIO転送では、各セクタの転送バイト数や総セクタ数(セクタカウント)が設定され、総セクタ数で設定される個数のセクタが転送されると、PIO転送が終了する。またDMA転送では、DMA転送数(DMAデータ転送サイズ)が設定され、DMA転送数分のデータが転送されると、DMA転送が終了する。従って、PIO転送やDMA転送を行うためには、総セクタ数やDMA転送数などの総データ転送数のカウント処理を行うカウント回路が必要になる。
しかしながら、このようなカウント回路を設けると、そのカウント回路の分だけデータ転送制御装置の回路が大規模化する。またカウント回路の動作制御(例えばポインタ制御)が必要になり、データ転送制御装置の回路や処理が繁雑化する。
このような問題を解決するために図14(B)では、総データ転送数を管理しないフリーラン転送手法を採用している。即ちシーケンスコントローラ30は、転送開始信号(Tran Go)をアクティブにした後、総データ転送数(総セクタ数、DMA転送数)のカウント処理を行わないフリーラン転送を開始する。そしてフリーラン転送を終了する場合には、転送停止信号(Tran Stop)をアクティブにする。
このようなフリーラン転送を行えば、総データ転送数のカウント回路が不要になるため、データ転送制御装置の回路の小規模化を図れる。またカウント回路の動作制御(例えばポインタ制御)も不要になるため、データ転送制御装置の回路や処理を簡素化できる。
この場合に、フリーラン転送では総データ転送数のカウント処理が行われないため、フリーラン転送の終了を判断できないという課題がある。
そこで図15(A)では、フリーラン転送の開始後にデータ転送制御装置がデバイス4から受信するFIS(Frame Information Structure)に着目し、この受信FISが、総データ転送の終了を示すFISであると判断した場合に、フリーラン転送の終了処理を行う。具体的には、フリーラン転送を開始した後、デバイス4からレジスタFISを受信した場合に、フリーラン転送が終了したと判断する。このようにすれば、総データ転送数のカウント処理を行わなくも、フリーラン転送の終了を判断できるようになり、データ転送制御装置の小規模化を図りながら適正なデータ転送制御を実現できる。
またブリッジ機能を有するデータ転送制御装置では、ホスト2が発行したコマンド(ATA、ATAPIコマンド)に応じた転送シーケンス制御を行う必要がある。そして転送シーケンス制御の内容をデータ転送制御装置が知るためには、コマンドをデコードする必要があり、そのために、コマンドデコーダやパラメータテーブルが必要になる。即ちホスト2が発行したコマンドをデコードし、転送方向(リード、ライト)や転送種別(PIO、DMA)を判別し、内部転送シーケンスを決定する。
しかしながら、このようなコマンドデコーダを設けると、データ転送制御装置のロジック回路の大規模化やメモリ容量の増加に繋がる。またコマンドのデコードを行うためには、デコードのためのコマンドテーブルを持たなければならないが、データ転送制御装置の開発終了後に、規格において新規コマンドの追加が発生した場合には、データ転送制御装置の回路修正を行わない限り、新規コマンドをサポートできなくなる。例えばATAPIでは、ブルーレイディスクなどの新しい規格の光ディスクドライブが追加されると、パラメータテーブルの変更が必要になる。従って、開発が終了している既存のデータ転送制御装置を使用できず、パラメータテーブル(テーブルメモリ)を変更するための回路修正が必要になり、余分な開発期間や開発コストがかかってしまう。更にベンダーにユニークな特殊コマンドに対しても、対応することが難しい。
この場合にデータ転送制御装置にCPU(処理部)を内蔵させ、パラメータテーブルの変更をファームウェア等の書き換えにより実現すれば、新規コマンドが増えたり、コマンドの内容が変更された場合にも、これに対応できる。
しかしながら、データ転送制御装置にCPUを内蔵させると、CPU上で動作するファームウェアの開発や、CPUの動作確認のためのデバッグツールの開発などが必要になってしまい、開発期間の長期化や高コスト化を招く。
このような問題を解決するための図13(A)等では、ホスト2が発行したコマンドをデコードすることなくデバイス4に転送する。そしてデバイス4から返送されてきたFISの情報に基づいて、発行されたコマンドについての転送シーケンスを制御する。即ちコマンドのデコードを、データ転送制御装置が行うのではなく、SATAのデバイス4に行わせる。そしてデータ転送制御装置は、コマンドをデコードせずに(一部をデコードしてもよい)、デバイス4にそのまま転送し、SATAデバイスの反応を観察することで、自身の転送シーケンスを決定して実行する。このようにすることで、データ転送制御装置の回路の小規模化や開発期間の短縮化を図れる。
なお本実施形態ではATAPIパケットコマンドが特定コマンド(READ10、READ12、READ CD、READ CD MSF、WRITE10、WRITE12)である場合には、PATA側及びSATA側の両方をDMA転送モードに設定してもよい。即ちこの場合には、ATAPIパケットコマンドが上記特定コマンドに該当するか否かだけを知るためのコマンドデコードを行う。このようにすれば、高速なデータ転送速度が要求されるこれらの特定コマンドの発行時に、SATA側は低速なPIO転送モードではなくDMA転送モードに設定されるようになるため、データ転送速度が低下するのを防止できる。
そしてこのようにSATA側もDMA転送モードに設定してDMAリードを行う場合には、フリーラン転送の開始後にデバイス4からデータFISを受信した場合に、フリーラン転送が終了したと判断する。またDMAライトでは、フリーラン転送の開始後にDMAアクティベートFISを受信した場合に、フリーラン転送が終了したと判断する。即ちフリーラン転送開始後に受信したFISが、総データ転送の終了を示すFISであると判断した場合に、フリーラン転送を終了する。
さて、SATAのデータ転送単位は4バイトであるが、ATAPIでは4バイトでは割り切れないデータのペイロード指定が可能になっている。従って、データ転送バイト数が4バイトで割り切れない場合には、デバイス4は、図16(E)で説明したようなダミーデータによるパディング処理を行う。
一方、図14(B)〜図15(A)では、フリーラン転送の開始後、デバイス4から受信したFISの種類を判断して、フリーラン転送の終了処理を行っている。
このような総データ転送数を管理しないフリーラン転送を行った場合に、PIO転送では、PIOセットアップFISに含まれる転送カウントのパラメータに基づき、各PIO転送の転送バイト数を管理できる。従って、このように各PIO転送の転送バイト数を管理することで、余計なダミーデータがホスト2側に転送されてしまう事態を防止できる。
ところが、DMA転送では、デバイス4側からはPIOセットアップFISは送られて来ないため、各DMA転送の転送バイト数を管理できない。従って、ダミーデータも含めてデータ転送が行われることになり、総データ転送数を管理しないフリーラン転送では、余計なダミーデータがホスト2側に転送されてしまうおそれがある。即ち、ホスト2が指定したデータ転送バイト数と実際に転送されるデータ転送バイト数の整合が取れなくなり、誤動作等が生じるおそれがある。
この点、図14(C)では、DMAのフリーラン転送時に、PATA側をDMA転送モードに設定する一方で、SATA側をPIO転送モードに設定している。
このようにすれば、DMA転送であっても、PIOセットアップFISの転送カウントを利用することで、SATA側の各PIO転送の転送バイト数を管理できる。従って例えば図16(E)のように、SATAI/F50が余計なダミーデータの出力をマスクすることなどにより、ホスト2側にダミーデータが転送されないようになる。従って、ATAPIのデータ転送においてフリーラン転送の手法を採用した場合にも、ホスト2が指定したデータ転送バイト数と実際に転送されるデータ転送バイト数の整合を取ることができ、誤動作の発生等を防止できる。
なお図13(B)では、DMAビットを1から0に書き換えてレジスタ値をTFR12からSFR52に転送することで、SATA側をPIO転送モードに設定している。このようにすれば、PATAI/F10には、図4(A)に示すような信号波形を用いてDMA転送を行わせる一方で、SATAI/F50には、実際はDMA転送であるのにもかかわらず、PIOセットアップFISとデータFISを用いたPIO転送を行わせることが可能になる。
また図11、図12ではDMAリードの場合の転送シーケンスを説明したが、DMAライトの場合は、図12のB8においてデータ転送制御装置は、デバイス4からのPIOセットアップFISの転送方向パラメータDにより、PIOライトである事を認識し、B9においてPIOライトの転送シーケンス設定を行う。そしてB11ではDMA転送によりホスト2からデータを受信し、B12ではデータFISを用いたPIO転送によりデバイス4にデータを送信する。そしてB13でデバイス4からレジスタFISを受信すると、B14の処理を行うことなく、B15のフリーラン転送の終了処理を実行し、B16、B17の処理を行うことになる。
8.SATAI/Fの構成
図17にSATAI/F50の構成例を示す。なおSATAI/F50の構成は図17に限定されず、その構成要素の一部を削除したり、他の構成要素を追加するなどの種々の変形実施が可能である。例えば物理層回路200を設けない構成としてもよい。
SATAでは、データは32ビット(4バイト)単位で処理される。この32ビットのデータが、リンクコントローラ150により8b/10bでエンコードされて40ビットのデータになり、物理層回路200に送られる。物理層回路200は、この40ビットのデータをシリアル化してSATAのケーブルに送信する。受信も逆の手順で、シリアルデータが物理層回路200で40ビットのデータに変換され、リンクコントローラ150で32ビットのデータに変換され、トランスポートコントローラ110に送られる。
トランスポートコントローラ110はトランスポート層の制御を行うものである。具体的にはトランスポートコントローラ110は、上位層(アプリケーション層)からFISの送信要求が来た時に、以下の処理を行う。
まずトランスポートコントローラ110は、FISタイプの要件に基づいてFISの内容を収集する。また送信する情報をFISのタイプ毎に定義フォーマットに配置する。次にリンクコントローラ150に対して送信要求を通知する。これによりリンクコントローラ150はX_RDYの送信処理を行う。そして相手ノードからのR_RDYを受信し、リンクコントローラ150から受信のアクノリッジが来ると、トランスポートコントローラ110はFISをリンクコントローラ150に転送する。そして送信FIFO120のフロー管理を行い、必要なフロー制御をリンクコントローラ150に通知する。その後、リンクコントローラ150から送信結果を受信すると、必要に応じて上位層に送信結果を通知する。
トランスポートコントローラ110は、リンクコントローラ150からFISを受信した時には、以下の処理を行う。
トランスポートコントローラ110は、リンクコントローラ150からFISを受信すると、受信したFISのタイプを判別する。そしてFISのタイプに応じた適切なレジスタやFIFOにデータを転送する。そして受信FIFO122のフロー管理を行い、必要なフロー制御をリンクコントローラ150に通知する。その後、リンクコントローラ150及び上位層(アプリケーション層)に受信結果を通知する。
リンクコントローラ150はリンク層の制御を行うものである。具体的にはリンクコントローラ150は、送信時には以下の処理を行う。
まずリンクコントローラ150はトランスポートコントローラ110からのデータ(FIS)を受け取る。そしてFISのCRCを生成し、FISの最後尾に付加する。次にデータのスクランブルを行い、その後、8b/10bのエンコードを行う。そしてSATA通信のプロトコルにしたがったプリミティブ、FISの送信を行う。そして送信結果をトランスポートコントローラ110に通知する。
リンクコントローラ150は受信時には以下の処理を行う。即ちリンクコントローラ150は物理層回路200から、8b/10bエンコードキャラクタを受信する。そして8b/10bエンコードキャラクタをデコードし、デコードしたプリミティブを処理部等に通知する。次にデコードしたFISのデスクランブル処理を行い、CRCをチェックする。そしてトランスポートコントローラ110にデータを渡す。またデコード結果やCRCのチェック結果をトランスポートコントローラ110に通知する。
物理層回路200は物理層を実現するアナログフロントエンド回路である。この物理層回路200は、シリアルデータ(シリアルストリーム)の送受信や、シリアルデータからパラレルデータへの変換や、パラレルデータからシリアルデータへの変換を行う。また8b/10bのK28.5キャラクタの検出や、OOB(Out Of Band)信号の検出と送信を行う。またデバイスステータス(デバイスの有無、転送状態、パワー状態)の提供や、通信制御用のインターフェース(転送レート制御、ループバック)の提供を行う。またオプションでパワーマネージメントも行う。
物理層回路(PHY)200はトランスミッタ(ドライバ)210、レシーバ220、OOB検出回路230などを含む。
トランスミッタ210は、差動信号線(差動信号線ペア)TX+/−を介してシリアルデータ(パケット)の送信を行い、レシーバ220は、差動信号線(差動信号線ペア)RX+/−を介してシリアルデータ(パケット)の受信を行う。TX+/−、RX+/−のSATAバス(広義にはシリアルバス)では、振幅電圧+/−250mVのNRZ差動信号によるシリアルストリーム転送が行われる。
OOB検出回路230はOOB信号の検出処理を行う。このOOB信号は、SATAインターフェースのリセット/初期化、通信の確立や、スピード・ネゴシエーションをつかさどる信号である。
リンクコントローラ150は、リンクステート制御回路160、フレーム生成回路190、フレームデコード回路192を含む。
リンクステート制御回路160は、リンクコントローラ150のステート制御を行う。例えばリセットステート、アイドルステート、送信ステート、受信ステート等のステート間の遷移処理等を行う。
フレーム生成回路190は、トランスポートコントローラ110からの送信データ(FIS)や、リンクステート制御回路160からの送信制御信号などに基づいてフレームの生成処理を行う。具体的には、トランスポートコントローラ110からのFISのCRCを演算したり、スクランブル処理を行ったり、8b/10bエンコード処理を行ったり、プリミティブを生成して付加する処理などを行う。
フレームデコード回路192は、受信したフレームの解析(分解)処理を行い、受信解析信号(パワーダウンリクエスト信号等)をリンクステート制御回路160に出力する。具体的には、FISに付加されたプリミティブを解析したり、8b/10bのデコード処理を行ったり、デスクランブル処理を行ったり、CRCを演算してチェックする処理などを行う。
トランスポートコントローラ110は、割りこみコントローラ118、DMA制御回路119、送信FIFO120、受信FIFO122、FIS生成回路130、FISデコード回路132、トランスポートステート制御回路140を含む。
割り込みコントローラ118は、デバイス4からの受信FIS情報などを知らせるための割り込み信号を生成する。DMA制御回路119は、FISに含まれる送信データや受信データ(コンテンツ・データ)のDMA転送を制御する。送信FIFO120は、DMA制御回路119からの送信データのバッファとなるFIFOである。受信FIFO122は、リンクコントローラ150からの受信データのバッファとなるFIFOである。FIS生成回路130はFISの生成を行う回路であり、FISデコード回路132はFISの解析を行う回路である。トランスポートステート制御回路140は、トランスポートコントローラ110のステート制御を行う。
9.シーケンスコントローラ
図18にシーケンスコントローラ30の構成例を示す。シーケンスコントローラ30はレジスタ更新部32、初期化シーケンス管理部34、パラメータ書き換え部36、DMAモード設定記憶部38、転送制御部40を含む。なおシーケンスコントローラ30の構成は図18に限定されず、その構成要素の一部を削除したり、他の構成要素を追加するなどの種々の変形実施が可能である。
レジスタ更新部32はTFR12(タスクファイル・レジスタ)、SFR52(シャドウ・タスクファイル・レジスタ)のレジスタ値の更新処理を行う。具体的にはTFR12のレジスタ値をSFR52に転送してSFR52のレジスタ値を更新したり、SFR52のレジスタ値をTFR12に転送してTFR12のレジスタ値を更新する。
例えばTFR12にホスト2によりATAコマンドが書き込まれると、PATAI/F10はコマンドライト検出信号をアクティブにする。そしてコマンドライト検出信号がアクティブになると、レジスタ更新部32はTFR12のレジスタ値をSFR52に転送する処理を行う。
またSATAI/F50は、デバイス4から受信したFISをデコードし、デコード結果に基づいて、FISの種類を知らせるための割り込み信号(広義には受信FIS情報)を生成して出力する。レジスタ更新部32は、この割り込み信号に基づいて受信FISの種類を判別して、SFR52からTFR12へのレジスタ値の転送処理などを行って、レジスタ値の更新処理を行う。
初期化シーケンス管理部34は、HRST(ハードリセット)、SRST(ソフトリセット)に伴う初期化シーケンスを管理する。具体的には、マスター、スレーブなどの設定をモニタして、PATAの初期化シーケンスを管理する。
パラメータ書き換え部36は、ホスト2がデバイス4に対してアイデンティファイ・デバイス・コマンドを発行し、デバイス4からデバイス情報のパラメータを受信した場合に、パラメータの書き換え処理を行う。即ち転送速度などのパラメータを自身が対応可能なパラメータに書き換える。
DMAモード設定記憶部38は、ホスト2がセットフューチャー・コマンドを発行した場合に、セットフューチャー・コマンドを解析して、DMA転送のモード設定を記憶する。
転送制御部40はデータ転送制御装置の転送シーケンスを制御するものであり、モニタ部42、制御信号生成部44を含む。モニタ部42は、PATAI/F10からのコマンドライト検出信号や、SATAI/F50からの割り込み信号(受信FIS情報)などの信号をモニタする。そして制御信号生成部44は、モニタ結果に基づいて、転送方向設定信号、転送開始信号、転送停止信号などの制御信号を生成し、PATI/F10、データバッファ70、SATAI/F50に出力して、転送シーケンス制御を実行する。なおデータバッファ70に対しては転送開始信号、転送停止信号は出力せず、転送方向設定信号を出力する。
10.電子機器
図19に本実施形態の電子機器の構成例を示す。この電子機器は、本実施形態で説明したデータ転送制御装置310とホスト302とデバイス304を含む。ホスト302とデータ転送制御装置310はPATAバスを介して接続され、データ転送制御装置310とデバイス304はSATAバスを介して接続される。なお本実施形態の電子機器の構成は図19に限定されず、その構成要素の一部を省略したり、他の構成要素を付加する変形実施が可能である。
同図においてデバイス304は、HDD(ハードディスクドライブ)等のストレージデバイスや、光ディスクドライブ(CD、DVD)等である。
ホスト302は、処理部330(CPU)、ROM340、RAM350、表示部360、操作部370を含むことができる。処理部330(CPU)はデータ転送制御装置310や電子機器の全体制御を行う。なおデータ転送制御装置310を制御する処理部と、電子機器を制御する処理部とを別々に設けてもよい。ROM340は制御プログラムや各種データを記憶する。RAM350は処理部330やデータ転送制御装置310のワーク領域やデータ格納領域として機能する。表示部360は種々の情報をユーザに表示する。操作部370はユーザが電子機器を操作するためのものである。
本実施形態の電子機器によれば、ホスト302がSATAI/Fを有していない場合にも、データ転送制御装置310を介してSATAのデバイス304をホスト302に接続して、あたかもPATAのデバイスのように扱うことが可能になる。
なお、本実施形態を適用できる電子機器としては、カーナビゲーションシステム、車載用オーディオ機器、HDDレコーダ、ビデオカメラ、携帯型音楽プレーヤ、携帯型映像プレーヤ、ゲーム装置、又は携帯型ゲーム装置等の種々のものが考えられる。
なお、上記のように本実施形態について詳細に説明したが、本発明の新規事項および効果から実体的に逸脱しない多くの変形が可能であることは当業者には容易に理解できるであろう。従って、このような変形例はすべて本発明の範囲に含まれるものとする。例えば、明細書又は図面において、少なくとも一度、より広義または同義な異なる用語と共に記載された用語は、明細書又は図面のいかなる箇所においても、その異なる用語に置き換えることができる。またデータ転送制御装置、電子機器の構成、動作も本実施形態で説明したものに限定に限定されず、種々の変形実施が可能である。また本実施形態では、SATAへの本発明の適用例について説明したが、本発明は、SATAと同様の思想に基づく規格や、SATA(SATA I、SATA II、SAS)を発展させた規格等にも適用できる。
本実施形態のデータ転送制御装置の構成例。 本実施形態のデータ転送制御装置の詳細な構成例。 図3(A)、図3(B)はPIOリード、PIOライトの信号波形例。 図4(A)、図4(B)はDMAリード、DMAライトの信号波形例。 SATAの送信側のデータ処理の説明図。 SATAの受信側のデータ処理の説明図。 タスクファイル・レジスタのフォーマット例。 図8(A)〜図8(D)はFISのフォーマット例。 図9(A)、図9(B)はATAやATAPIのコマンドプロトコルの説明図。 図10(A)、図10(B)はパケットコマンドのパラメータやステータスレジスタの例。 本実施形態の手法を説明するための転送シーケンス図。 本実施形態の手法を説明するための転送シーケンス図。 図13(A)〜図13(C)は本実施形態の手法の説明図。 図14(A)〜図14(C)は本実施形態の手法の説明図。 図15(A)、図15(B)は本実施形態の手法の説明図。 図16(A)〜図16(E)はダミーデータの出力のマスク手法の説明図。 SATAI/Fの構成例。 シーケンスコントローラの構成例。 電子機器の構成例。
符号の説明
2 ホスト、4 デバイス、10 PATAI/F、
12 タスクファイル・レジスタ(TFR)、14 転送コントローラ、
30 シーケンスコントローラ、32 レジスタ更新部、34 初期化シーケンス管理部、
36 パラメータ書き換え部、38 DMA転送設定記憶部、40 転送制御部、
42 モニタ部、44 制御信号生成部、50 SATAI/F、
52 シャドウ・タスクファイル・レジスタ(SFR)、70 データバッファ、
72 メモリコントローラ、74 FIFOメモリ、
110 トランスポートコントローラ、118 割りこみコントローラ、
120 送信FIFO、122 受信FIFO、130 FIS生成回路、
132 FISデコード回路、150 リンクコントローラ、
160 リンクステート制御回路、190 フレーム生成回路、
192 フレームデコード回路、200 物理層回路、210 トランスミッタ、
220 レシーバ、230 OOB検出回路

Claims (10)

  1. パラレルATAとシリアルATAのバスブリッジ機能を有するデータ転送制御装置であって、
    パラレルATAバスに接続され、ホストとの間のインターフェースを行うパラレルATAインターフェースと、
    シリアルATAバスに接続され、シリアルATAのデバイスとの間のインターフェースを行うシリアルATAインターフェースと、
    転送シーケンス制御を行うシーケンスコントローラを含み、
    前記ホストが、DMAビットがDMA設定にされたATAパケットコマンドを発行し、データレジスタにコマンドパケットが設定されたATAPIパケットコマンドを発行した場合に、
    前記パラレルATAインターフェースは、
    前記ホストとの間でDMAのデータ転送を行い、
    前記シリアルATAインターフェースは、
    前記デバイスとの間でPIOのデータ転送を行うことを特徴とするデータ転送制御装置。
  2. 請求項1において、
    前記パラレルATAインターフェースは、タスクファイル・レジスタを有し、
    前記シリアルATAインターフェースは、シャドウ・タスクファイル・レジスタを有し、
    前記シーケンスコントローラは、
    前記ATAパケットコマンドが発行され、前記DMAビットがDMA設定である場合には、前記DMAビットをPIO設定に書き換え、前記DMAビットがPIO設定に書き換えられたレジスタ値を、前記タスクファイル・レジスタから前記シャドウ・タスクファイル・レジスタに転送することを特徴とするデータ転送制御装置。
  3. 請求項1又は2において、
    前記シーケンスコントローラは、
    前記ATAPIパケットコマンドが発行されて前記シリアルATAインターフェースが前記コマンドパケットを含むデータFISを前記デバイスに送信し、前記デバイスからPIOセットアップFISを受信した場合に、総データ転送数を管理しないフリーラン転送を開始することを特徴とするデータ転送制御装置。
  4. 請求項3において、
    前記シーケンスコントローラは、
    データFISを受信した前記デバイスからPIOセットアップFISを受信した場合に、受信したPIOセットアップFISに基づいてデータの転送方向、転送種別を判断して、前記フリーラン転送のシーケンス制御を行うことを特徴とするデータ転送制御装置。
  5. 請求項3又は4において、
    前記シーケンスコントローラは、
    前記フリーラン転送においては、前記デバイスから受信したPIOセットアップFISに設定された転送カウントに基づいて、各PIO転送の転送バイト数を管理することを特徴とするデータ転送制御装置。
  6. 請求項3乃至5のいずれかにおいて、
    前記シーケンスコントローラは、
    前記フリーラン転送の開始後、前記デバイスからレジスタFISを受信した場合に、前記フリーラン転送を終了することを特徴とするデータ転送制御装置。
  7. 請求項6において、
    前記シーケンスコントローラは、
    転送方向が、ホストがデバイスのデータをリードするリード方向である場合には、前記デバイスからレジスタFISを受信し前記パラレルATAインターフェースでのデータ転送が完了した後に、前記フリーラン転送を終了することを特徴とするデータ転送制御装置。
  8. 請求項1乃至7のいずれかにおいて、
    前記シリアルATAインターフェースは、
    前記デバイスとの間でのPIO転送の転送バイト数がシリアルATAのデータ転送単位のバイト数未満であり、前記デバイスからダミーデータを受信した場合に、前記パラレルATAインターフェース側への前記ダミーデータの出力をマスクすることを特徴とするデータ転送制御装置。
  9. 請求項1乃至8のいずれかにおいて、
    前記パラレルATAインターフェースは、タスクファイル・レジスタを有し、
    前記シリアルATAインターフェースは、シャドウ・タスクファイル・レジスタを有し、
    前記シーケンスコントローラは、
    前記パラレルATAインターフェースでのDMAのデータ転送及び前記シリアルATAインターフェースでのPIOのデータ転送が完了した後、ビジービット及びデータリクエストビットがクリアされたレジスタ値を、前記シャドウ・タスクファイル・レジスタから前記タスクファイル・レジスタに転送することを特徴とするデータ転送制御装置。
  10. 請求項1乃至9のいずれかに記載のデータ転送制御装置と、
    前記データ転送制御装置に接続される前記ホストと、
    前記データ転送制御装置に接続される前記デバイスと、
    を含むことを特徴とする電子機器。
JP2007136151A 2007-05-23 2007-05-23 データ転送制御装置及び電子機器 Pending JP2008293154A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007136151A JP2008293154A (ja) 2007-05-23 2007-05-23 データ転送制御装置及び電子機器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007136151A JP2008293154A (ja) 2007-05-23 2007-05-23 データ転送制御装置及び電子機器

Publications (1)

Publication Number Publication Date
JP2008293154A true JP2008293154A (ja) 2008-12-04

Family

ID=40167831

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007136151A Pending JP2008293154A (ja) 2007-05-23 2007-05-23 データ転送制御装置及び電子機器

Country Status (1)

Country Link
JP (1) JP2008293154A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010157033A (ja) * 2008-12-26 2010-07-15 Brother Ind Ltd コンピュータシステム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010157033A (ja) * 2008-12-26 2010-07-15 Brother Ind Ltd コンピュータシステム

Similar Documents

Publication Publication Date Title
JP4400650B2 (ja) データ転送制御装置及び電子機器
JP4869065B2 (ja) 仮想周辺コンポーネントインターコネクト多重ファンクション装置
KR101035225B1 (ko) 개량 데이터 전송을 위한 제어기 장치 및 방법
JP3636157B2 (ja) データ転送制御装置、電子機器及びデータ転送制御方法
US8868809B2 (en) Interrupt queuing in a media controller architecture
US7069350B2 (en) Data transfer control system, electronic instrument, and data transfer control method
JP3870717B2 (ja) データ転送制御装置及び電子機器
US20050010702A1 (en) Data transfer control device, electronic instrument, and data transfer control method
JP2004021613A (ja) データ転送制御装置、電子機器及びデータ転送制御方法
JP4434218B2 (ja) データ転送制御装置及び電子機器
US7225288B2 (en) Extended host controller test mode support for use with full-speed USB devices
JP3636158B2 (ja) データ転送制御装置及び電子機器
JP2008242701A (ja) データ転送制御装置及び電子機器
US7428600B2 (en) Data transfer control device, electronic equipment, and data transfer control method
JP2009048444A (ja) Usbデバイスの制御方法、コントローラ及び電子機器
JP3614161B2 (ja) データ転送制御装置、電子機器及びデータ転送制御方法
JP2008293154A (ja) データ転送制御装置及び電子機器
JP2009037479A (ja) データ転送制御装置及び電子機器
JP2008204049A (ja) データ転送制御装置及び電子機器
JP2008204048A (ja) データ転送制御装置及び電子機器
JP2008015856A (ja) データ転送制御装置及び電子機器
JP2008204050A (ja) データ転送制御装置及び電子機器
JP2009037474A (ja) データ転送制御装置及び電子機器
JP2009032011A (ja) データ転送制御装置及び電子機器
JP2009032010A (ja) データ転送制御装置及び電子機器