JP2008015856A - データ転送制御装置及び電子機器 - Google Patents
データ転送制御装置及び電子機器 Download PDFInfo
- Publication number
- JP2008015856A JP2008015856A JP2006187523A JP2006187523A JP2008015856A JP 2008015856 A JP2008015856 A JP 2008015856A JP 2006187523 A JP2006187523 A JP 2006187523A JP 2006187523 A JP2006187523 A JP 2006187523A JP 2008015856 A JP2008015856 A JP 2008015856A
- Authority
- JP
- Japan
- Prior art keywords
- data
- transmission data
- host
- circuit
- error
- 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.)
- Withdrawn
Links
Images
Landscapes
- Information Transfer Systems (AREA)
- Communication Control (AREA)
Abstract
【課題】シリアルATAによるデータ転送を高速化する。
【解決手段】相手デバイスから所定のデータ単位で送信される送信データを受信する受信回路と、送信データをチェックし送信データにエラーがないか検出するエラー検出回路と、送信データを格納するFIFO回路と、FIFO回路に格納された送信データをアドレスポインタに基づいて後段装置へ転送する制御を行なう制御回路と、からなるデータ転送制御装置において、データ転送制御装置は、送信データを受信後、エラー検出回路がエラーを検出しなかった場合、アドレスポインタを所定のデータ単位分インクリメントし、次の送信データを受信し、エラー検出回路がエラーを検出した場合、後段装置へのデータ転送を中止し、エラー通知を相手デバイスに送信し、アドレスポインタを所定のデータ単位分デクリメントし、次の送信データを受信する。
【選択図】図8
【解決手段】相手デバイスから所定のデータ単位で送信される送信データを受信する受信回路と、送信データをチェックし送信データにエラーがないか検出するエラー検出回路と、送信データを格納するFIFO回路と、FIFO回路に格納された送信データをアドレスポインタに基づいて後段装置へ転送する制御を行なう制御回路と、からなるデータ転送制御装置において、データ転送制御装置は、送信データを受信後、エラー検出回路がエラーを検出しなかった場合、アドレスポインタを所定のデータ単位分インクリメントし、次の送信データを受信し、エラー検出回路がエラーを検出した場合、後段装置へのデータ転送を中止し、エラー通知を相手デバイスに送信し、アドレスポインタを所定のデータ単位分デクリメントし、次の送信データを受信する。
【選択図】図8
Description
本発明は、データ転送制御装置及び電子機器に関する。
近年、ストレージデバイス等のシリアルインターフェースとして、シリアルATA(Serial AT Attachment)と呼ばれる規格が脚光を浴びている。このシリアルATAは、従来のパラレルATAであるIDE(Integrated Drive Electronics)との間のソフトウェアレベルでの互換性を備えた規格である。そして最初の規格であるシリアルATA Iのデータ転送速度は1.5Gbpsであったが、次の規格であるシリアルATA IIではデータ転送速度が3.0Gbpsに高速化している。またシリアルATA IIでは外部接続についても定義されている。
このシリアルATAでは、規格上、ファイルは8KB単位に分割され、分割単位毎に、FIS(Frame Information Structure、フレーム情報構造)と、FISの内容に基づいて計算されるCRC(Cyclic Redundancy Check、巡回冗長検査)コードが1つずつ付加された後、シリアルATAバスを介して相手デバイスに送信される。相手デバイスは、CRCコードに基づいてFIS毎にエラーチェックを行い、エラーが検出されると、後段(たとえばハードディスク)への転送を中止し、送信元へR_ERR通知(受信エラー通知)を返す。
送信元(ホスト)は、R_ERR通知を受けると、再びファイルの最初から8KB単位のデータに分割し、シリアルATAバスを介して相手に送信する。すなわち、ファイルの途中からのリトライができない。シリアルATA規格においては、8KB毎にFISに付加されたCRCエラーチェックを行っているのにもかかわらず、エラーが検出された場合のシリアルATAバス上のデータ転送がファイルの最初から再開せざるを得ず、転送効率が悪くなっていた。
この問題を解決するために、例えば特許文献1には、IEEE1394規格のデータ転送制御装置に関して、第1のコマンドパケットの処理中に上層のデバイスに、データ転送オペレーションにより要求されるデータ転送を中断させるエラーが発生した場合に、エラーステータスを相手ノードに転送するステータス転送手段と、エラーステータスを受けた相手ノードからデータ転送オペレーション要求のための第2のコマンドパケットが転送されてきた場合に、第1のコマンドパケットの内容と第2のコマンドパケットの内容とを比較するコマンド比較処理、又は第1のコマンドパケットにより転送要求された転送データの先頭アドレスである第1のアドレスと第2のコマンドパケットにより転送要求された転送データの先頭アドレスとを比較するアドレス比較処理を行う比較手段と、第1、第2のアドレスが同一であると判断された場合に、エラーの発生により中断したデータ転送を該エラー発生時点のデータ転送の続きから再開する再開手段とを含むデータ転送制御装置が開示されている。すなわち、エラー前後で重複して転送されたデータに対して、重複を解消して後段に転送する発明が開示されている。特許文献2、3、4にも同様の発明が開示されている。
しかしながら、特許文献1〜4では、受信するデータそのものの重複を減じたり、解消したりする発明は、開示されていない。また、シリアルATAで規格されているFISを用いたデータ再開に関する発明は、開示されていない。
本発明は、このような事情に鑑みてなされたものであり、エラー後のデータ再開の効率化を実現できるデータ転送制御装置及びこれを含む電子機器を提供することを目的とするものである。
上記課題を解決するために、本発明のデータ転送制御装置では、相手デバイスから所定のデータ単位で送信される送信データを受信する受信回路と、前記送信データをチェックし前記送信データにエラーがないか検出するエラー検出回路と、前記送信データを格納するFIFO回路と、前記FIFO回路に格納された前記送信データをアドレスポインタに基づいて後段装置へ転送する制御を行う制御回路と、からなるデータ転送制御装置において、前記データ転送制御装置は、前記送信データを受信後、前記エラー検出回路がエラーを検出しなかった場合、前記アドレスポインタを前記所定のデータ単位分インクリメントし、次の前記送信データを受信し、前記エラー検出回路がエラーを検出した場合、前記後段装置へのデータ転送を中止し、エラー通知を前記相手デバイスに送信し、前記アドレスポインタを所定のデータ単位分デクリメントし、次の前記送信データを受信することを要旨とする。
また、本発明のデータ転送制御装置では、後段装置からアドレスポインタに基づいて送信データを抽出する制御回路と、前記送信データを格納するFIFO回路と、相手デバイスに所定のデータ単位で前記送信データを送信する送信回路と、からなるデータ転送制御装置において、前記データ転送制御装置は、前記送信データを送信後、前記相手デバイスから前記送信データに対するエラー検出通知が送られてこない場合、前記アドレスポインタを前記所定のデータ単位分インクリメントし、次の前記送信データを送信し、前記相手デバイスから前記送信データに対するエラー検出通知が送られてきた場合、前記相手デバイスへのデータ送信を中止し、前記アドレスポインタを所定のデータ単位分デクリメントし、次の前記送信データを送信する。
また、本発明のデータ転送制御装置では、相手ホストから所定のデータ単位で送信される送信データを受信する受信回路と、前記送信データをチェックし前記送信データにエラーがないか検出するエラー検出回路と、前記送信データを格納するFIFO回路と、前記FIFO回路に格納された前記送信データをアドレスポインタに基づいて後段デバイスへ転送する制御を行う制御回路と、からなるデータ転送制御装置において、前記データ転送制御装置は、前記送信データを受信後、前記エラー検出回路がエラーを検出しなかった場合、前記アドレスポインタを前記所定のデータ単位分インクリメントし、次の前記送信データを受信し、前記エラー検出回路がエラーを検出した場合、前記後段装置へのデータ転送を中止し、エラー通知を前記相手ホストに送信し、前記アドレスポインタを所定のデータ単位分デクリメントし、次の前記送信データを受信する。
また、本発明のデータ転送制御装置では、後段デバイスからアドレスポインタに基づいて送信データを抽出する制御回路と、前記送信データを格納するFIFO回路と、相手ホストに所定のデータ単位で前記送信データを送信する送信回路と、からなるデータ転送制御装置において、前記データ転送制御装置は、前記送信データを送信後、前記相手ホストから前記送信データに対するエラー検出通知が送られてこない場合、前記アドレスポインタを前記所定のデータ単位分インクリメントし、次の前記送信データを送信し、前記相手ホストから前記送信データに対するエラー検出通知が送られてきた場合、前記相手デバイスへのデータ送信を中止し、前記アドレスポインタを所定のデータ単位分デクリメントし、次の前記送信データを送信する。
また、本発明のデータ転送制御装置では、前記所定のデータ単位は、シリアルATA規格で定めるフレーム単位である。
以上に述べた構成によれば、ホストとデバイス間でデータを転送中にデータエラーが発生した場合でも、ホストとデバイスのそれぞれがエラーが発生した直前のアドレスポインタに戻しデータの転送を再開できるので、従来のようにエラーが発生する度にデータの先頭から転送をやり直す場合に比べても格段に転送効率を向上させることができる。また、ホストとデバイスが自らアドレスポインタを戻すことができるので、制御ソフトウェアを介す必要がなく、転送効率を向上させることもできる。
また本発明は、上記のいずれかのデータ転送制御装置を含む電子機器に関する。
以下、本発明を具体化した実施形態について図面に従って説明する。なお以下に説明する本実施形態は、特許請求の範囲に記載された本発明の内容を不当に限定するものではなく、本実施形態で説明される構成の全てが本発明の解決手段として必須であるとは限らない。
(第1実施形態)
(第1実施形態)
<データ転送制御装置の構成>
まず、第1実施形態に係るデータ転送制御装置の構成について、図1を参照して説明する。図1は、本発明の第1実施形態に係るデータ転送制御装置の構成を示すブロック図である。図1に示すように、データ転送制御装置1は、ホスト10と、デバイス20と、シリアルATAケーブル30と、から構成されている。
まず、第1実施形態に係るデータ転送制御装置の構成について、図1を参照して説明する。図1は、本発明の第1実施形態に係るデータ転送制御装置の構成を示すブロック図である。図1に示すように、データ転送制御装置1は、ホスト10と、デバイス20と、シリアルATAケーブル30と、から構成されている。
ホスト10とデバイス20は、各々シリアルATAの層構造を構成する、アプリケーション層100と、トランスポート層200と、リンク層300と、物理層400と、から構成されている。
次に、シリアルATA(以下、SATA)の層構造について図2及び図3を参照して説明する。図2は、ホストのシリアルATAの層構造を示すブロック図である。また、図3は、デバイスのシリアルATAの層構造を示すブロック図である。
<物理層>
物理層400では、物理層コントローラ401によりホスト10とデバイス20との間のシリアル通信や、シリアルデータからパラレルデータへの変換やパラレルデータからシリアルデータへの変換などが行われる。具体的には、ビット列をシリアル・ビット化するパラレル/シリアル変換回路402と、フルスイングのシリアル信号を小振幅の差動信号Tx+/Tx−として転送するトランスミッタ回路403と、小振幅の差動信号Rx+/Rx−をフルスイングのシリアル信号に変換するレシーバ回路404と、シリアル信号をパラレル信号に変換するシリアル/パラレル変換回路405と、を含む。
物理層400では、物理層コントローラ401によりホスト10とデバイス20との間のシリアル通信や、シリアルデータからパラレルデータへの変換やパラレルデータからシリアルデータへの変換などが行われる。具体的には、ビット列をシリアル・ビット化するパラレル/シリアル変換回路402と、フルスイングのシリアル信号を小振幅の差動信号Tx+/Tx−として転送するトランスミッタ回路403と、小振幅の差動信号Rx+/Rx−をフルスイングのシリアル信号に変換するレシーバ回路404と、シリアル信号をパラレル信号に変換するシリアル/パラレル変換回路405と、を含む。
差動信号Tx+/Tx−、差動信号Rx+/Rx−のSATAバス(広義にはシリアルバス)では、振幅電圧±250mVのNRZ(Non Retrun to Zero)差動信号によるシリアルストリーム転送が行われる。転送レートとしては1.5Gbps(SATA IIでは3.0Gbps)が用意され、シリアルストリームからデータが抽出される。またSSC(Spread Spectrum Clocking、スペクトラム拡散クロック)やトランスミッタ・レシーバのインピーダンス測定も行われる。
<シリアルATAケーブル>
シリアルATAケーブル30は、7芯であり、差動信号Tx+/Tx−のペアはトランスミッタ回路403に割り当てられ、差動信号Rx+/Rx−のペアはレシーバ回路404に割り当てられる。上り信号は、デバイス20側のTx+/Tx−からホスト10(HBA:Host Bus Adaptor)側のRx+/Rx−に送られ、下り信号は、ホスト10側のTx+/Tx−からデバイス20側のRx+/Rx−に送られる。SATAは半二重のみの仕様になっており、データは一方向のみしか通信できない。従ってTx+/Tx−で通信を行っている最中に、バックチャネルとしてRx+/Rx−で相手ノードからのプロトコル通信を行うことができ、フロー制御に有効利用できる。
シリアルATAケーブル30は、7芯であり、差動信号Tx+/Tx−のペアはトランスミッタ回路403に割り当てられ、差動信号Rx+/Rx−のペアはレシーバ回路404に割り当てられる。上り信号は、デバイス20側のTx+/Tx−からホスト10(HBA:Host Bus Adaptor)側のRx+/Rx−に送られ、下り信号は、ホスト10側のTx+/Tx−からデバイス20側のRx+/Rx−に送られる。SATAは半二重のみの仕様になっており、データは一方向のみしか通信できない。従ってTx+/Tx−で通信を行っている最中に、バックチャネルとしてRx+/Rx−で相手ノードからのプロトコル通信を行うことができ、フロー制御に有効利用できる。
<リンク層>
リンク層300では、リンク層コントローラ301により物理層400とのデータの送受信や、シリアルインターフェースプロトコルの制御や、トランスポート層200との間でのアプリケーションデータ(ユーザデータ)の送受信が行われる。具体的には、フレーム転送のための伝送路のアービトレーションやフロー制御が行われ、CRC挿入/CRCチェック、スクランブル/デスクランブル処理、プリミティブ挿入/プリミティブデコード、FIS(Frame Information Structure)や制御コードをシリアル伝送に適したビット列に変換する8b/10bエンコード、などが行われる。
リンク層300では、リンク層コントローラ301により物理層400とのデータの送受信や、シリアルインターフェースプロトコルの制御や、トランスポート層200との間でのアプリケーションデータ(ユーザデータ)の送受信が行われる。具体的には、フレーム転送のための伝送路のアービトレーションやフロー制御が行われ、CRC挿入/CRCチェック、スクランブル/デスクランブル処理、プリミティブ挿入/プリミティブデコード、FIS(Frame Information Structure)や制御コードをシリアル伝送に適したビット列に変換する8b/10bエンコード、などが行われる。
処理の流れは、SATAバスに送信する場合は、トランスポート層から受信したデータに対し、CRC挿入回路302でCRC挿入が行われ、スクランブル回路303でスクランブル処理が行われ、プリミティブ挿入回路304でプリミティブ挿入が行われ、8b/10bエンコーダ305で8b/10bエンコードが行われ、物理層400に転送される。
また、SATAバスから受信する場合は、物理層400から受信したデータに対し、10b/8bデコーダ306で10b/8bデコード処理が行われ、プリミティブデコーダ307でプリミティブデコード処理が行われ、デスクランブル回路308でデスクランブルが行われ、エラー検出回路であるCRCチェック回路309でCRCチェックが行われ、トランスポート層200に転送される。
<トランスポート層>
トランスポート層200は、トランスポート層コントローラ201と、ホスト10側のシャドウ・タスクファイルレジスタ(シャドウTFR、Shadow Task File Register)202、デバイス20側のデバイス・タスクファイルレジスタ(デバイスTFR、Device Task File Register)212と、FIFO回路である送信用のFIS用FIFO203とデータ用FIFO204、およびFIS用FIFO203とデータ用FIFO204用の選択回路(マルチプレクサ)205と、受信用のFIS用FIFO206とデータ用FIFO207、およびFIS用FIFO206とデータ用FIFO207用の選択回路(マルチプレクサ)208と、を含む。
トランスポート層200は、トランスポート層コントローラ201と、ホスト10側のシャドウ・タスクファイルレジスタ(シャドウTFR、Shadow Task File Register)202、デバイス20側のデバイス・タスクファイルレジスタ(デバイスTFR、Device Task File Register)212と、FIFO回路である送信用のFIS用FIFO203とデータ用FIFO204、およびFIS用FIFO203とデータ用FIFO204用の選択回路(マルチプレクサ)205と、受信用のFIS用FIFO206とデータ用FIFO207、およびFIS用FIFO206とデータ用FIFO207用の選択回路(マルチプレクサ)208と、を含む。
ここで、従来のパラレルATA(IDE)におけるタスクファイルレジスタについて説明する。従来のパラレルATA(IDE)では、制御レジスタである全てのタスクファイルレジスタはCPU(広義には処理部)のアドレス空間にマッピングされる。CPU上のソフトウェアは、このタスクファイルレジスタをリード/ライトしてデバイスを制御する。このタスクファイルレジスタはデバイス側のファームウェアからも同時に参照される。
SATAでは、従来のパラレルATA(IDE)との間でソフトウェアレベルでの互換性が維持されている。そしてSATAでは、上述のタスクファイルレジスタが2つ存在することが特徴になっている。即ちホスト10側に存在するシャドウTFR202とデバイス20側の従来のタスクファイルレジスタであるデバイスTFR212である。ホスト10側のCPU上のソフトウェアからはシャドウTFR202のみが直接アクセス可能となっており、デバイス20側のファームウェアからはデバイスTFR212のみが直接アクセス可能となっている。この2つのTFRは、コマンド発行時と完了時に2種類のRegister FISによりお互いにコピーされる。なおSATAでは従来のパラレルATA(IDE)をエミュレートするために8個のフレーム(FIS)が定義されている。
<アプリケーション層>
アプリケーション層100は、パラレルATA(IDE)規格のホストバスアダプタ(HBA:Host Bus Adaptor)と同じインターフェースを通してトランスポート層200にアクセスする。レジスタアクセスなどはパラレルATA(IDE)規格のコマンドプロトコルとソフトウェアレベルで互換性を有している。トランスポート層200は、リンク層300と送受信するデータをパラレルATA(IDE)規格のコマンドプロトコル動作に変換する。ホスト10側のアプリケーション層100は、メインメモリ102とのアクセスを制御する制御回路であるDMAC(Direct Memory Access Controller)110を含み、デバイス20側のアプリケーション層100は、ハードディスク104とのアクセスを制御する制御回路であるHDC(Hard Disk Controller)120を含む。
アプリケーション層100は、パラレルATA(IDE)規格のホストバスアダプタ(HBA:Host Bus Adaptor)と同じインターフェースを通してトランスポート層200にアクセスする。レジスタアクセスなどはパラレルATA(IDE)規格のコマンドプロトコルとソフトウェアレベルで互換性を有している。トランスポート層200は、リンク層300と送受信するデータをパラレルATA(IDE)規格のコマンドプロトコル動作に変換する。ホスト10側のアプリケーション層100は、メインメモリ102とのアクセスを制御する制御回路であるDMAC(Direct Memory Access Controller)110を含み、デバイス20側のアプリケーション層100は、ハードディスク104とのアクセスを制御する制御回路であるHDC(Hard Disk Controller)120を含む。
<DMACの構成>
次に、DMACの構成について図4を参照して説明する。図4は、DMACの構成を示すブロック図である。
次に、DMACの構成について図4を参照して説明する。図4は、DMACの構成を示すブロック図である。
図4に示すように、DMAC110は、コントローラ112、アドレスポインタ113、アドレスインクリメント回路114、アドレスデクリメント回路115、DMAカウンタ116、バス制御回路117を含む。
データ転送の際に、リンク層300のCRCチェック回路309からエラー検出信号R_ERRが送信されなかった場合、アドレスインクリメント回路114がFISの8KB分のアドレスポインタ113をインクリメントし、インクリメントされたアドレスポインタ113に基づいてメインメモリ102にアドレス信号を出力する。また、データ信号は、バス制御回路117を介して、メインメモリ102−トランスポート層200間で転送される。また、後段で生成され、または、用いられる制御信号も同様に、バス制御回路117を介して、メインメモリ102−トランスポート層200間で転送される。なお、デバイス20側であれば、メインメモリがハードディスクとなる。
一方、データ転送の際に、エラー検出信号R_ERRが送信された場合、バス制御回路117を介したメインメモリ102−トランスポート層200間のデータ転送は中止される。また、アドレスインクリメント回路114がアドレスポインタ113のインクリメントを中止する。あるいは、アドレスインクリメント回路114がインクリメントしたアドレスポインタ113を、アドレスデクリメント回路115によりFISの8KB分デクリメントする構成としても良い。このような構成とすることで、次にエラーから復帰した場合、エラー発生時のFIS分のアドレスポインタ113が進まず、データの連続性を確保することができる。
<HDCの構成>
次に、HDCの構成について図5を参照して説明する。図5は、HDCの構成を示すブロック図である。
次に、HDCの構成について図5を参照して説明する。図5は、HDCの構成を示すブロック図である。
図5に示すように、HDC120は、コントローラ112、アドレスポインタ113、アドレスインクリメント回路114、アドレスデクリメント回路115、HDカウンタ126、バス制御回路117を含む。
データ転送の際に、リンク層300のCRCチェック回路309からエラー検出信号R_ERRが送信されなかった場合、アドレスインクリメント回路114がFISの8KB分のアドレスポインタ113をインクリメントし、インクリメントされたアドレスポインタ113に基づいてハードディスク104にアドレス信号を出力する。また、データ信号は、バス制御回路117を介して、ハードディスク104−トランスポート層200間で転送される。また、後段で生成され、または、用いられる制御信号も同様に、バス制御回路117を介して、ハードディスク104−トランスポート層200間で転送される。
一方、データ転送の際に、エラー検出信号R_ERRが送信された場合、バス制御回路117を介したハードディスク104−トランスポート層200間のデータ転送は中止される。また、アドレスインクリメント回路114がアドレスポインタ113のインクリメントを中止する。あるいは、アドレスインクリメント回路114がインクリメントしたアドレスポインタ113を、アドレスデクリメント回路115によりFISの8KB分デクリメントする構成としても良い。このような構成とすることで、次にエラーから復帰した場合、エラー発生時のFIS分のアドレスポインタ113が進まず、データの連続性を確保することができる。
<ホストからデバイスへのデータ送信>
次に、ホストからデバイスへのデータ送信について図6を参照して説明する。図6は、ホストからデバイスへのデータ送信を説明するブロック図である。
次に、ホストからデバイスへのデータ送信について図6を参照して説明する。図6は、ホストからデバイスへのデータ送信を説明するブロック図である。
図6に示すように、ホスト10からデバイス20にFISの8KB単位のデータの転送を開始する際、ホスト10のアドレスポインタは、h0の位置に置かれ、デバイス20のアドレスポインタは、d0の位置に置かれる。Data1〜Data5が正常に転送された時点で、ホスト10のアドレスポインタは、h5の位置に置かれ、デバイス20のアドレスポインタは、d5の位置に置かれる。次にホスト10からデバイス20にData6を転送をした際、デバイス20で受信したData6にエラーが検出されると、デバイス20からホスト10にエラー検出信号R_ERRが通知され、この時点で、ホスト10のアドレスポインタは、h6の位置に置かれ、デバイス20のアドレスポインタは、d6の位置に置かれる。
従来のデータ転送制御装置1では、ホスト10のアドレスポインタをh0の位置に戻し、デバイス20のアドレスポインタをd0の位置に戻してから、データの再送信を行っていたために、正常に転送できたData1〜Data5も再送信しなければならなくなり、エラーが検出されるたびに無駄な時間を費やしていた。
本発明においては、エラー検出信号R_ERRが通知されると、ホスト10、デバイス20のそれぞれがアドレスポインタの位置をFISの8KB分戻すように動作する。つまり、ホスト10のアドレスポインタをh6からh5に戻し、デバイス20のアドレスポインタをd6からd5に戻す。
<従来のデバイスからホストへのデータ送信>
次に、従来のデバイスからホストへのデータ送信について図7を参照して説明する。図7は、従来のデバイスからホストへのデータ送信を説明するフローチャート図である。
次に、従来のデバイスからホストへのデータ送信について図7を参照して説明する。図7は、従来のデバイスからホストへのデータ送信を説明するフローチャート図である。
まず、ステップS102では、ホスト10のCPUは、ホスト10のシャドウTFR202のステータスレジスタをチェックし、実行中でないか確認を行う。
次に、ステップS110では、ホスト10のCPUは、ホスト10に対しDMAC起動要求コマンドを送信する。ステップS112では、ホスト10は、DMAC起動要求コマンドを受けて、DMAC110を起動する。
次に、ステップS120では、ホスト10のCPUは、ホスト10のシャドウTFR202にデバイス20からホスト10にデータを送信するためのコマンドを発行する。ステップS122では、ホスト10は、シャドウTFR202に書き込まれたコマンドをデバイス20のデバイスTFR212に送信する。ステップS124では、デバイス20は、コマンドを受信しデバイスTFR212に書き込む。
次に、ステップS134では、デバイス20は、HDC120のアドレスポインタ113を設定し、ハードディスク104に記憶されたデータをFIS単位分(8KB)毎に分割してホスト10に送信する。ステップ132では、ホスト10は、データを受信する。また、ステップS144では、デバイス20は、送信すべきデータが終わり(EOF)であるか判定し、終わりの場合、送信を終了し、終わりでない場合、ステップS134に移行する。
次に、ステップS142では、ホスト10は、CRCチェック回路309で受信したデータにエラーがないか検出し、エラーがあった場合は、ステップS162に移行し、エラーがなかった場合は、ステップS152に移行する。
次に、ステップS162では、ホスト10は、エラー検出信号R_ERRを通知する。一方、ステップS152では、受信したデータをDMAC110に転送する。ステップS164では、デバイス20は、エラー検出信号R_ERRにより、データの送信を中止する。また、S160では、ホスト10のCPUは、割り込みを監視し、ステップS170では、ホスト10のCPUは、エラー検出信号R_ERRの割り込みを検知した場合、ステップS102に移行し、エラーを感知しない場合、ステップS160に移行する。
以上説明したように、従来のデバイス20からホスト10へのデータ送信では、ホスト10のCPUは、エラー検出信号R_ERRを検出すると、DMAC起動要求(S110)、コマンド発行(S120)を行ってしまうため、アドレスポインタ113は、初期位置に戻ってしまい、データの転送を最初からやり直すように動作していた。
<本発明のデバイスからホストへのデータ送信>
次に、本発明のデバイスからホストへのデータ送信について図8を参照して説明する。図8は、本発明のデバイスからホストへのデータ送信を説明するフローチャート図である。
次に、本発明のデバイスからホストへのデータ送信について図8を参照して説明する。図8は、本発明のデバイスからホストへのデータ送信を説明するフローチャート図である。
まず、ステップS202では、ホスト10のCPUは、ホスト10のシャドウTFR202のステータスレジスタをチェックし、実行中でないか確認を行う。
次に、ステップS210では、ホスト10のCPUは、ホスト10に対しDMAC起動要求コマンドを送信する。ステップS212では、ホスト10は、DMAC起動要求コマンドを受けて、DMAC110を起動する。
次に、ステップS220では、ホスト10のCPUは、ホスト10のシャドウTFR202にデバイス20からホスト10にデータを送信するためのコマンドを発行する。ステップS222では、ホスト10は、シャドウTFR202に書き込まれたコマンドをデバイス20のデバイスTFR212に送信する。ステップS224では、デバイス20は、コマンドを受信しデバイスTFR212に書き込む。
次に、ステップS234では、デバイス20は、HDC120のアドレスポインタ113を設定し、ハードディスク104に記憶されたデータをFIS単位分(8KB)毎に分割してホスト10に送信する。ステップ232では、ホスト10は、データを受信する。また、ステップS244では、デバイス20は、送信すべきデータが終わり(EOF)であるか判定し、終わりの場合、送信を終了し、終わりでない場合、ステップS234に移行する。
次に、ステップS242では、ホスト10は、CRCチェック回路309で受信したデータにエラーがないか検出し、エラーがあった場合は、ステップS262に移行し、エラーがなかった場合は、ステップS252に移行する。
次に、ステップS262では、ホスト10は、エラー検出信号R_ERRを通知し、ステップS272に移行する。一方、ステップS252では、受信したデータをDMAC110に転送する。ステップS264では、デバイス20は、エラー検出信号R_ERRにより、データの送信を中止し、ステップS274に移行する。
次に、ステップS272では、ホスト10は、DMAC110のアドレスポインタ113をFIS単位分戻し、ステップS234に移行する。また、ステップS274では、デバイス20は、HDC120のアドレスポインタ113をFIS単位分戻し、ステップS234に移行する。
以上説明したように、本発明のデバイス20からホスト10へのデータ送信では、エラー検出信号R_ERRが通知された時点で、ホスト10とデバイス20がそれぞれアドレスポインタ113をFIS単位分戻し、データ送信を再開するように動作する。
<従来のホストからデバイスへのデータ送信>
次に、従来のホストからデバイスへのデータ送信について図9を参照して説明する。図9は、従来のホストからデバイスへのデータ送信を説明するフローチャート図である。
次に、従来のホストからデバイスへのデータ送信について図9を参照して説明する。図9は、従来のホストからデバイスへのデータ送信を説明するフローチャート図である。
まず、ステップS302では、ホスト10のCPUは、ホスト10のシャドウTFR202のステータスレジスタをチェックし、実行中でないか確認を行う。
次に、ステップS310では、ホスト10のCPUは、ホスト10に対しDMAC起動要求コマンドを送信する。ステップS312では、ホスト10は、DMAC起動要求コマンドを受けて、DMAC110を起動する。
次に、ステップS320では、ホスト10のCPUは、ホスト10のシャドウTFR202にホスト10からデバイス20にデータを送信するためのコマンドを発行する。ステップS322では、ホスト10は、シャドウTFR202に書き込まれたコマンドをデバイス20のデバイスTFR212に送信する。ステップS324では、デバイス20は、コマンドを受信しデバイスTFR212に書き込む。
次に、ステップS326では、デバイス20は、受信準備ができたことをホスト10に通知し、ステップS332に移行する。
次に、ステップS332では、ホスト10は、DMAC110のアドレスポインタ113を設定し、メインメモリ102に記憶されたデータをFIS単位分(8KB)毎に分割してデバイス20に送信する。ステップ334では、デバイス20は、データを受信する。また、ステップS342では、ホスト10は、送信すべきデータが終わり(EOF)であるか判定し、終わりの場合、送信を終了し、終わりでない場合、ステップS332に移行する。
次に、ステップS344では、デバイス20は、CRCチェック回路309で受信したデータにエラーがないか検出し、エラーがあった場合は、ステップS364に移行し、エラーがなかった場合は、ステップS352に移行する。
次に、ステップS364では、デバイス20は、エラー検出信号R_ERRを通知する。一方、ステップS352では、受信したデータをHDC120に転送する。ステップS362では、ホスト10は、エラー検出信号R_ERRにより、データの送信を中止する。また、S360では、ホスト10のCPUは、割り込みを監視し、ステップS370では、ホスト10のCPUは、エラー検出信号R_ERRの割り込みを検知した場合、ステップS302に移行し、エラーを感知しない場合、ステップS360に移行する。
以上説明したように、従来のホスト10からデバイス20へのデータ送信では、ホスト10のCPUは、エラー検出信号R_ERRを検出すると、DMAC起動要求(S310)、コマンド発行(S320)を行ってしまうため、アドレスポインタ113は、初期位置に戻ってしまい、データの転送を最初からやり直すように動作していた。
<本発明のホストからデバイスへのデータ送信>
次に、本発明のホストからデバイスへのデータ送信について図10を参照して説明する。図10は、本発明のホストからデバイスへのデータ送信を説明するフローチャート図である。
次に、本発明のホストからデバイスへのデータ送信について図10を参照して説明する。図10は、本発明のホストからデバイスへのデータ送信を説明するフローチャート図である。
まず、ステップS402では、ホスト10のCPUは、ホスト10のシャドウTFR202のステータスレジスタをチェックし、実行中でないか確認を行う。
次に、ステップS410では、ホスト10のCPUは、ホスト10に対しDMAC起動要求コマンドを送信する。ステップS412では、ホスト10は、DMAC起動要求コマンドを受けて、DMAC110を起動する。
次に、ステップS420では、ホスト10のCPUは、ホスト10のシャドウTFR202にホスト10からデバイス20にデータを送信するためのコマンドを発行する。ステップS422では、ホスト10は、シャドウTFR202に書き込まれたコマンドをデバイス20のデバイスTFR212に送信する。ステップS424では、デバイス20は、コマンドを受信しデバイスTFR212に書き込む。
次に、ステップS426では、デバイス20は、受信準備ができたことをホスト10に通知し、ステップS432に移行する。
次に、ステップS432では、ホスト10は、DMAC110のアドレスポインタ113を設定し、メインメモリ102に記憶されたデータをFIS単位分(8KB)毎に分割してデバイス20に送信する。ステップ434では、デバイス20は、データを受信する。また、ステップS442では、ホスト10は、送信すべきデータが終わり(EOF)であるか判定し、終わりの場合、送信を終了し、終わりでない場合、ステップS432に移行する。
次に、ステップS444では、デバイス20は、CRCチェック回路309で受信したデータにエラーがないか検出し、エラーがあった場合は、ステップS464に移行し、エラーがなかった場合は、ステップS452に移行する。
次に、ステップS464では、デバイス20は、エラー検出信号R_ERRを通知し、ステップS474に移行する。一方、ステップS452では、受信したデータをHDC120に転送する。ステップS462では、ホスト10は、エラー検出信号R_ERRにより、データの送信を中止し、ステップS472に移行する。
次に、ステップS472では、ホスト10は、DMAC110のアドレスポインタ113をFIS単位分戻し、ステップS432に移行する。また、ステップS474では、デバイス20は、HDC120のアドレスポインタ113をFIS単位分戻し、ステップS432に移行する。
以上説明したように、本発明のホスト10からデバイス20へのデータ送信では、エラー検出信号R_ERRが通知された時点で、ホスト10とデバイス20がそれぞれアドレスポインタ113をFIS単位分戻し、データ送信を再開するように動作する。
以上に述べた前記実施形態によれば、以下の効果が得られる。
本実施形態では、ホストとデバイス間でデータを転送中にデータエラーが発生した場合でも、ホストとデバイスのそれぞれがエラーが発生した直前のアドレスポインタに戻しデータの転送を再開できるので、従来のようにエラーが発生する度にデータの先頭から転送をやり直す場合に比べても格段に転送効率を向上させることができる。また、ホストとデバイスが自らアドレスポインタを戻すことができるので、制御ソフトウェアを介す必要がなく、転送効率を向上させることもできる。
1…データ転送制御装置、10…ホスト、20…デバイス、30…シリアルATAケーブル、100…アプリケーション層、102…メインメモリ、104…ハードディスク、110…DMAC、112…コントローラ、113…アドレスポインタ、114…アドレスインクリメント回路、115…アドレスデクリメント回路、116…DMAカウンタ、117…バス制御回路、120…HDC、126…HDカウンタ、200…トランスポート層、201…トランスポート層コントローラ、202…シャドウTFR、203…FIS用FIFO、204…データ用FIFO、206…FIS用FIFO、207…データ用FIFO、212…デバイスTFR、300…リンク層、301…リンク層コントローラ、302…CRC挿入回路、303…スクランブル回路、304…プリミティブ挿入回路、305…8b/10bエンコーダ、306…10b/8bデコーダ、307…プリミティブデコーダ、308…デスクランブル回路、309…CRCチェック回路、400…物理層、401…物理層コントローラ、402…パラレル/シリアル変換回路、403…トランスミッタ回路、404…レシーバ回路、405…シリアル/パラレル変換回路。
Claims (6)
- 相手デバイスから所定のデータ単位で送信される送信データを受信する受信回路と、
前記送信データをチェックし前記送信データにエラーがないか検出するエラー検出回路と、
前記送信データを格納するFIFO回路と、
前記FIFO回路に格納された前記送信データをアドレスポインタに基づいて後段装置へ転送する制御を行う制御回路と、
からなるデータ転送制御装置において、
前記データ転送制御装置は、前記送信データを受信後、
前記エラー検出回路がエラーを検出しなかった場合、前記アドレスポインタを前記所定のデータ単位分インクリメントし、次の前記送信データを受信し、
前記エラー検出回路がエラーを検出した場合、前記後段装置へのデータ転送を中止し、エラー通知を前記相手デバイスに送信し、前記アドレスポインタを所定のデータ単位分デクリメントし、次の前記送信データを受信する、
ことを特徴とするデータ転送制御装置。 - 後段装置からアドレスポインタに基づいて送信データを抽出する制御回路と、
前記送信データを格納するFIFO回路と、
相手デバイスに所定のデータ単位で前記送信データを送信する送信回路と、
からなるデータ転送制御装置において、
前記データ転送制御装置は、前記送信データを送信後、
前記相手デバイスから前記送信データに対するエラー検出通知が送られてこない場合、前記アドレスポインタを前記所定のデータ単位分インクリメントし、次の前記送信データを送信し、
前記相手デバイスから前記送信データに対するエラー検出通知が送られてきた場合、前記相手デバイスへのデータ送信を中止し、前記アドレスポインタを所定のデータ単位分デクリメントし、次の前記送信データを送信する、
ことを特徴とするデータ転送制御装置。 - 相手ホストから所定のデータ単位で送信される送信データを受信する受信回路と、
前記送信データをチェックし前記送信データにエラーがないか検出するエラー検出回路と、
前記送信データを格納するFIFO回路と、
前記FIFO回路に格納された前記送信データをアドレスポインタに基づいて後段デバイスへ転送する制御を行う制御回路と、
からなるデータ転送制御装置において、
前記データ転送制御装置は、前記送信データを受信後、
前記エラー検出回路がエラーを検出しなかった場合、前記アドレスポインタを前記所定のデータ単位分インクリメントし、次の前記送信データを受信し、
前記エラー検出回路がエラーを検出した場合、前記後段装置へのデータ転送を中止し、エラー通知を前記相手ホストに送信し、前記アドレスポインタを所定のデータ単位分デクリメントし、次の前記送信データを受信する、
ことを特徴とするデータ転送制御装置。 - 後段デバイスからアドレスポインタに基づいて送信データを抽出する制御回路と、
前記送信データを格納するFIFO回路と、
相手ホストに所定のデータ単位で前記送信データを送信する送信回路と、
からなるデータ転送制御装置において、
前記データ転送制御装置は、前記送信データを送信後、
前記相手ホストから前記送信データに対するエラー検出通知が送られてこない場合、前記アドレスポインタを前記所定のデータ単位分インクリメントし、次の前記送信データを送信し、
前記相手ホストから前記送信データに対するエラー検出通知が送られてきた場合、前記相手デバイスへのデータ送信を中止し、前記アドレスポインタを所定のデータ単位分デクリメントし、次の前記送信データを送信する、
ことを特徴とするデータ転送制御装置。 - 請求項1から4のいずれか一項に記載のデータ転送制御装置において、前記所定のデータ単位は、シリアルATA規格で定めるフレーム単位である、ことを特徴とするデータ転送制御装置。
- 請求項1から5のいずれか一項に記載のデータ転送制御装置を含むことを特徴とする電子機器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006187523A JP2008015856A (ja) | 2006-07-07 | 2006-07-07 | データ転送制御装置及び電子機器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006187523A JP2008015856A (ja) | 2006-07-07 | 2006-07-07 | データ転送制御装置及び電子機器 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2008015856A true JP2008015856A (ja) | 2008-01-24 |
Family
ID=39072794
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006187523A Withdrawn JP2008015856A (ja) | 2006-07-07 | 2006-07-07 | データ転送制御装置及び電子機器 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2008015856A (ja) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8041846B2 (en) | 2008-08-25 | 2011-10-18 | Seiko Epson Corporation | Apparatus with reduced latency for master and slave storage devices |
JP2011248977A (ja) * | 2010-05-28 | 2011-12-08 | Toshiba Corp | インタフェース装置及びデコードデータ有効判定方法ならびに記録装置 |
KR20150079883A (ko) * | 2012-12-28 | 2015-07-08 | 인텔 코포레이션 | 라이브 에러 복구 |
JP2017054174A (ja) * | 2015-09-07 | 2017-03-16 | Necプラットフォームズ株式会社 | 受信装置、受信方法、及び、転送装置 |
-
2006
- 2006-07-07 JP JP2006187523A patent/JP2008015856A/ja not_active Withdrawn
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8041846B2 (en) | 2008-08-25 | 2011-10-18 | Seiko Epson Corporation | Apparatus with reduced latency for master and slave storage devices |
JP2011248977A (ja) * | 2010-05-28 | 2011-12-08 | Toshiba Corp | インタフェース装置及びデコードデータ有効判定方法ならびに記録装置 |
KR20150079883A (ko) * | 2012-12-28 | 2015-07-08 | 인텔 코포레이션 | 라이브 에러 복구 |
CN104823167A (zh) * | 2012-12-28 | 2015-08-05 | 英特尔公司 | 现场错误恢复 |
KR101702292B1 (ko) * | 2012-12-28 | 2017-02-06 | 인텔 코포레이션 | 라이브 에러 복구 |
US10019300B2 (en) | 2012-12-28 | 2018-07-10 | Intel Corporation | Live error recovery |
CN104823167B (zh) * | 2012-12-28 | 2018-11-16 | 英特尔公司 | 现场错误恢复 |
US10691520B2 (en) | 2012-12-28 | 2020-06-23 | Intel Corporation | Live error recovery |
JP2017054174A (ja) * | 2015-09-07 | 2017-03-16 | Necプラットフォームズ株式会社 | 受信装置、受信方法、及び、転送装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10884965B2 (en) | PCI express tunneling over a multi-protocol I/O interconnect | |
US11561920B2 (en) | Interface for bridging out-of-band information from a downstream communication link to an upstream communication link | |
US10180927B2 (en) | Device, system and method for communication with heterogeneous physical layers | |
EP3822803A1 (en) | Phy recalibration using a message bus interface | |
US6609167B1 (en) | Host and device serial communication protocols and communication packet formats | |
US20180285227A1 (en) | Adjustable retimer buffer | |
US6636922B1 (en) | Methods and apparatus for implementing a host side advanced serial protocol | |
US7583600B1 (en) | Schedule prediction for data link layer packets | |
US7424565B2 (en) | Method and apparatus for providing efficient output buffering and bus speed matching | |
US9875206B2 (en) | Methods and devices for extending USB 3.0-compliant communication | |
US20100183004A1 (en) | System and method for dual mode communication between devices in a network | |
US9575917B1 (en) | Protocol for digital audio-video interface | |
US8010860B2 (en) | Method and architecture to prevent corrupt data propagation from a PCI express retry buffer | |
JPWO2008053858A1 (ja) | インタフェース装置及び電子装置 | |
JP2019047146A (ja) | 電子機器および電力管理方法 | |
US20080294801A1 (en) | Data transfer control device and electronic instrument | |
US10474604B2 (en) | Transmitting universal serial bus (USB) data over alternate mode connection | |
JP2008015856A (ja) | データ転送制御装置及び電子機器 | |
JP4434218B2 (ja) | データ転送制御装置及び電子機器 | |
WO2015099676A1 (en) | Input output data alignment | |
JP2008017250A (ja) | データ転送制御装置及び電子機器 | |
TW202241110A (zh) | PCIe介面和介面系統 | |
TW202310594A (zh) | 用於互連協定的錯誤處理的方法、控制器以及儲存裝置 | |
US10176135B2 (en) | Multi-packet processing with ordering rule enforcement | |
JP2009037474A (ja) | データ転送制御装置及び電子機器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Application deemed to be withdrawn because no request for examination was validly filed |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20091006 |