(57)【特許請求の範囲】
【請求項１】
デバイスへリードコマンドを発行する処理装置と、
データを格納するメモリと、
前記処理装置、前記メモリ、および前記デバイスと接続するスイッチングコントローラと、
を備え、
前記スイッチングコントローラは、
前記処理装置から発行された前記リードコマンドを検出するコマンド検出回路と、
前記リードコマンドを加工し、前記デバイスに加工されたリードコマンドを出力するコマンド加工回路と、
前記リードコマンドで指定されたデータの内の少なくとも一部のデータを要求するリードリクエストを生成し、前記リードリクエストを前記メモリに送信する先読みリクエスト発行回路と、を備え、
前記コマンド加工回路は、前記一部のデータを読み出す先読み処理を実行したことを示す先読み実行情報を前記リードコマンドに記述し、
前記メモリから前記一部のデータを受信し、前記一部のデータを前記デバイスに送信する
ことを特徴とする情報処理装置。
【請求項２】
前記先読み処理を実行するか否か判定する第１の先読み処理判定回路をさらに備え、
前記リードコマンドは、前記一部のデータを読み出す先読み処理を実行するか否かを示す先読み指示情報を含み、
前記コマンド検出回路は、前記先読み指示情報に基づいて、前記先読み処理を実行するか否か判定し、
前記コマンド検出回路により前記先読み処理を実行すると判定された場合、前記第１の先読み処理判定回路は、前記スイッチングコントローラの状態に基づいて、前記先読み処理を実行するか否か判定し、
前記第１の先読み処理判定回路により前記先読み処理を実行すると判定された場合、前記コマンド加工回路は、前記一部のデータを読み出す先読み処理を実行したことを示す先読み実行情報を前記リードコマンドに記述することを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記スイッチングコントローラは、
前記第１の先読み処理判定回路が前記先読み処理を実行すると判定した場合、前記加工されたリードコマンドを出力し、前記第１の先読み処理判定回路が前記先読み処理を実行しないと判定した場合、前記リードコマンドを出力するセレクタをさらに備えることを特徴とする請求項２記載の情報処理装置。
【請求項４】
前記情報処理装置は前記デバイスを更に備え、
前記デバイスは、
受信したリードコマンドをチェックし、前記一部のデータを要求する先読み処理が実行されたか否か判定する第２の先読み処理判定回路と、
前記先読み処理が実行されたと判定された場合、前記受信したリードコマンドで指定されたデータの内の前記一部のデータ以外のデータを要求する他のリードリクエストを生成し、前記他のリードリクエストを前記スイッチングコントローラに送信するリクエスト発行回路と、
を備えることを特徴とする請求項１乃至３のいずれか１項に記載の情報処理装置。
【請求項５】
デバイスへリードコマンドを発行する処理装置と、データを格納するメモリと、前記処理装置、前記メモリ、および前記デバイスと接続するスイッチングコントローラと、を備える情報処理装置が実行する制御方法であって、
前記処理装置から発行された前記リードコマンドを検出し、
前記リードコマンドで指定されたデータの内の少なくとも一部のデータを読み出す先読み処理を実行したことを示す先読み実行情報を前記リードコマンドに記述することで前記リードコマンドを加工し、
加工されたリードコマンドを前記デバイスに出力し、
前記リードコマンドで指定されたデータの内の少なくとも一部のデータを要求するリードリクエストを生成し、
前記リードリクエストを前記メモリに送信し、
前記メモリから前記一部のデータを受信し、
前記一部のデータを前記デバイスに送信する
ことを特徴とする制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置および情報処理装置の制御方法に関する。
【背景技術】
【０００２】
図１は、従来の読み出し処理の流れを示す図である。
図２は、従来の読み出し処理のシーケンス図である。
従来のシステム１１は、中央処理装置（Central Processing Unit（ＣＰＵ））１２、メモリ１４、スイッチングコントローラ１３、およびデバイス１５を備える。
【０００３】
ＣＰＵ１２、メモリ１４、およびデバイス１５は、スイッチングコントローラ１３と接続している。
ここで、サイクル０でＣＰＵ１２がアドレス（ＡＤＤＲ）０からアドレス２までのリードコマンド（デバイスがメモリからデータを読み出す処理要求）を発行して、デバイス１５が最初のリードデータを受信するまでの処理の流れについて述べる。尚、処理が１ステップ実行されるごとに、サイクルは１サイクル進むとする。
【０００４】
ＣＰＵ１２は、デバイス１５に向けてアドレス０からアドレス２までのリードコマンドを発行し（ステップＳ１）、スイッチングコントローラ１３は、リードコマンドをデバイス１５に中継する（ステップＳ２）。
【０００５】
デバイス１５は、メモリ１４に対するアドレス０のリードリクエストを発行し（ステップＳ３）、スイッチングコントローラ１３は、リードリクエストをメモリ１４に中継する（ステップＳ４）。尚、アドレス１および２に対するデータの読み出しについての説明は省略する。
【０００６】
メモリ１４は、アドレス０のデータをリードデータとしてデバイス１５に応答し（ステップＳ５）、リードデータはスイッチングコントローラ１３に転送される。
スイッチングコントローラ１３は、リードデータをデバイス１５に中継し（ステップＳ６）、デバイス１５はリードデータを受信する。
【０００７】
図２に示すように、サイクル０でリードコマンドが発行されると、サイクル６でデバイス１５にアドレス０のリードデータが到着している。
すなわち、従来の読み出し処理では、ＣＰＵ１２がリードコマンドを発行して、デバイス１５が最初のリードデータを受信するまでに要するサイクル（First Read Latency）は、６サイクルである。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００２−１６９７６８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
従来の読み出し処理では、ＣＰＵがリードコマンドを発行してからデバイスがリードデータを受信するまでに、リードコマンド、リードリクエスト、またはリードデータは６つのパスを経由しており、レイテンシが高くなっていた。
【００１０】
特に高帯域を確保する為にシリアル化されたインタフェース（I/F）では、シリアル/パラレル変換部におけるレイテンシが非常に高い為、コマンドやデータが多くのパスを通過するとレイテンシの高さが顕著に性能悪化として表れ、問題となっていた。
【００１１】
１つの側面では、本発明は、読み出し処理におけるレイテンシを低くすることを目的とする。
【課題を解決するための手段】
【００１２】
実施の形態の情報処理装置は、デバイスへリードコマンドを発行する処理装置と、データを格納するメモリと、前記処理装置、前記メモリ、および前記デバイスと接続するスイッチングコントローラと、を備える
前記スイッチングコントローラは、コマンド検出回路、コマンド加工回路、セレクタ、および先読みリクエスト発行回路を備える。
【００１３】
コマンド検出回路は、前記処理装置から発行された前記リードコマンドを検出する。
コマンド加工回路は、前記リードコマンドを加工し、前記デバイスに加工されたリードコマンドを出力する。
【００１４】
先読みリクエスト発行回路は、前記リードコマンドで指定されたデータの内の少なくとも一部のデータを要求するリードリクエストを生成し、前記リードリクエストを前記メモリに送信する。
前記コマンド加工回路は、前記一部のデータを読み出す先読み処理を実行したことを示す先読み実行情報を前記リードコマンドに記述する。
【００１５】
前記スイッチングコントローラは、前記メモリから前記一部のデータを受信し、前記一部のデータを前記デバイスに送信する。
【発明の効果】
【００１６】
実施の形態の情報処理装置によれば、読み出し処理におけるレイテンシを低くすることである。
【図面の簡単な説明】
【００１７】
【図１】従来の読み出し処理の流れを示す図である。
【図２】従来の読み出し処理のシーケンス図である。
【図３】第１の実施の形態に係るシステムの構成図である。
【図４】第１の実施の形態に係る読み出し処理のフローチャートである。
【図５】第１の実施の形態に係る読み出し処理の流れを示す図である。
【図６】第１の実施の形態に係る読み出し処理のシーケンス図である。
【図７】第２の実施の形態に係るシステムの構成図である。
【図８】第２の実施の形態に係るリードコマンドの形式を示す図である。
【図９】第２の実施の形態に係る加工リードコマンドの形式を示す図である。
【図１０】第２の実施の形態に係る読み出し処理のフローチャートである。
【図１１】従来の読み出し処理のシーケンス図である。
【図１２】第２の実施の形態に係る読み出し処理（一部を先読み）のシーケンス図である。
【図１３】第２の実施の形態に係る読み出し処理（全部を先読み）のシーケンス図である。
【図１４】第３の実施の形態に係るシステムの構成図である。
【図１５】第３の実施の形態に係るリードコマンドの形式を示す図である。
【図１６】第３の実施の形態に係る読み出し処理のフローチャートである。
【図１７】第４の実施の形態に係るシステムの構成図である。
【図１８】第４の実施の形態に係るリードコマンドの形式を示す図である。
【図１９】第４の実施の形態に係る読み出し処理のフローチャートである。
【図２０】第４の実施の形態に係るシステムの第１の変形例の構成図である。
【図２１】第４の実施の形態に係るシステムの第２の変形例の構成図である。
【図２２】第４の実施の形態に係るシステムの第３の変形例の構成図である。
【発明を実施するための形態】
【００１８】
以下、図面を参照しながら実施の形態について説明する。
（第１の実施の形態）
図３は、第１の実施の形態に係るシステムの構成図である。
【００１９】
システム１０１は、パーソナルコンピュータ（ＰＣ）２０１およびデバイス３０１を備える。
ＰＣ２０１とデバイス３０１は、例えば、シリアルインタフェースによって接続されている。
【００２０】
ＰＣ２０１は、情報処理装置の一例である。
ＰＣ２０１は、中央処理装置（Central Processing Unit（ＣＰＵ））２０２、メモリ２０３、およびスイッチングコントローラ２０４を備える。
【００２１】
ＣＰＵ２０２は、各種処理を行うプロセッサである。ＣＰＵ２０２は、デバイス３０１がメモリ２０３からデータを読み出す処理要求であるリードコマンド等のコマンドを発行する。
【００２２】
メモリ２０３は、データを一時的に格納する記憶装置である。メモリ２０３は、例えば、Random Access Memory（ＲＡＭ）である。メモリ２０３は、リードリクエストを受信すると、該リードリクエストで指定されるデータをスイッチングコントローラ２０４に送信する。
【００２３】
スイッチングコントローラ２０４は、ＣＰＵ２０２、メモリ２０３、およびデバイス３０１間を相互接続し、ルーティング制御を行う回路である。
スイッチングコントローラ２０４は、コマンド検出回路２１１、コマンド加工回路２２１、先読みリクエスト発行回路２３１、およびセレクタ２４１、２４２を備える。
【００２４】
コマンド検出回路２１１は、ＣＰＵ２０２から受信したコマンドをチェックし、リードコマンドを検出する。リードコマンドを検出した場合、コマンド検出回路２１１は、リードコマンドをコマンド加工回路２２１および先読みリクエスト発行回路２３１に出力する。
【００２５】
コマンド加工回路２２１は、リードコマンドを加工し、加工されたリードコマンド（加工リードコマンド）をセレクタ２４１に出力する。
先読みリクエスト発行回路２３１は、リードコマンドで指定されたデータの少なくとも一部を要求する（読み出す）リードリクエストを出力する。
【００２６】
セレクタ２４１は、ＣＰＵ２０１から受信したコマンドまたはコマンド加工回路２２１から出力された加工リードコマンドをデバイス３０１に出力する。
セレクタ２４２は、先読みリクエスト発行回路２３１またはデバイス３０１から受信したリ−ドリクエストをメモリ２０３に出力する。
【００２７】
デバイス３０１は、ＰＣ２０１からコマンドを受信し、ＰＣ２０１へのリードリクエストの送信やＰＣ２０１からデータの受信を行う。
デバイス３０１は、データを格納する装置であり、例えば、磁気ディスク装置（ハードディスクドライブ）や半導体記憶装置などである。
【００２８】
デバイス３０１は、先読み判定回路３１１およびリクエスト発行回路３２１を備える。
先読み判定回路３１１は、受信したリードコマンドをチェックし、ＰＣ２０１で先読み処理が行われているか否か判定し、判定結果をリクエスト発行回路３２１に出力する。先読み処理は、リードコマンドで指定されたデータの少なくとも一部を読み出す処理である。
【００２９】
リクエスト発行回路３２１は、リードコマンドを受信し、先読み判定回路３１１の判定結果に応じたリードリクエストを作成し、リードリクエストをセレクタ２４２に出力する。
【００３０】
図４は、第１の実施の形態に係る読み出し処理のフローチャートである。
ステップＳ５０１において、ＣＰＵ２０２は、コマンドを発行する。ここで、ＣＰＵ２０２は、コマンドとしてリードコマンドを発行したとする。
【００３１】
ステップＳ５０２において、コマンド検出回路２１１は、受信したコマンドをチェックし、受信したコマンドがリードコマンドであることを検出する。コマンド検出回路２１１は、受信したリードコマンドをコマンド加工回路２２１および先読みリクエスト発行回路２３１に出力する。
【００３２】
ステップＳ５０３において、先読みリクエスト発行回路２３１は、リードコマンドで指定されているデータの内の先読み分のデータを要求する先読みリードリクエストをセレクタ２４２に出力する。セレクタ２４２は、受信した先読みリードリクエストをメモリ２０３に出力する。メモリ２０３は、先読みリードリクエストで要求されている先読み分のデータをスイッチングコンローラ２０４にリードデータとして出力し、スイッチングコンローラ２０４は受信したリードデータをデバイス３０１に出力する。尚、先読みするデータのサイズは予め設定されているものとする。
【００３３】
ステップＳ５０４において、コマンド加工回路２２１は、リードコマンドを加工し、加工されたリードコマンドをセレクタ２４１に出力する。加工されたリードコマンドには先読み処理が実施されたことを示す情報が付加されている。セレクタ２４１は、加工されたリードコマンドをデバイス３０１に出力する。
【００３４】
ステップＳ５０５において、先読み判定回路３１１は、受信したリードコマンドをチェックし、先読み処理が行われているか否か判定し、判定結果をリクエスト発行回路３２１に出力する。先読み処理が行われている場合、制御はステップＳ５０６に進み、先読み処理が行われていない場合、制御はステップＳ５０７に進む。
【００３５】
ステップＳ５０６において、リクエスト発行回路３２１は、メモリ２０３へのリードコマンドで指定されているデータの内の先読み分のデータを除いたデータを要求するリードリクエストを生成し、リードリクエストをセレクタ２４２に出力する。
【００３６】
ステップＳ５０７において、リクエスト発行回路３２１は、メモリ２０３へのリードコマンドで指定されているデータを要求するリードリクエストを生成し、リードリクエストをセレクタ２４２に出力する。
【００３７】
ステップＳ５０６またはＳ５０７の後、セレクタ２４２は、受信したリードリクエストをメモリ２０３に出力する。そして、スイッチングコントローラ２０４は、リードリクエストで要求したリードデータをメモリ２０３から受信し、デバイス３０１に転送する。
【００３８】
図５は、第１の実施の形態に係る読み出し処理の流れを示す図である。
図６は、第１の実施の形態に係る読み出し処理のシーケンス図である。
ここで、サイクル０でＣＰＵ２０２がアドレス（ＡＤＤＲ）０からアドレス２までのデータを読み出すリードコマンドを発行して、デバイス３０１がアドレス０のリードデータを受信するまでの処理の流れについて述べる。尚、処理が１ステップ実行されるごとに、サイクルは１サイクル進むとする。また、アドレス１および２に対するデータの読み出しについての説明は省略する。
【００３９】
ＣＰＵ２０２は、デバイス３０１に向けてアドレス０からアドレス２までのリードコマンドを発行し（ステップＳ１１）、リードコマンドはスイッチングコントローラ２０４に到着する。
【００４０】
スイッチングコントローラ２０４は、リードコマンドを検出し、先読み分のリードリクエストを生成し、リードコマンドに先読み処理が実施されたことを示す情報を付加する加工を行う。ここでは、先読み分としてアドレス０が設定されるとする。そして、スイッチングコントローラ２０４は、アドレス０に対するリードリクエストをメモリ２０３に出力し、さらに加工されたリードコマンドをデバイス３０１に出力する（ステップＳ１２）。
【００４１】
メモリ２０３は、アドレス０のデータをリードデータとしてスイッチングコントローラ２０４に出力する（ステップＳ１３）。
スイッチングコントローラ２０４は、リードデータをデバイス３０１に中継し（ステップＳ１４）、デバイス３０１はリードデータを受信する。
【００４２】
図６に示すように、サイクル０でリードコマンドが発行されると、サイクル４でデバイス３０１にリードデータが到着している。
すなわち、第１の実施の形態の読み出し処理では、ＣＰＵ２０２がリードコマンドを発行して、デバイス３０１が最初のリードデータを受信するまで要するサイクル（First Read Latency）は、４サイクルである。
【００４３】
図２の従来の読み出し処理と比較すると、第１の実施の形態の読み出し処理では、ＣＰＵがリードコマンドを発行してから最初のリードデータを受信するまでのサイクルが２サイクル減っている。
すなわち、第１の実施の形態に係るシステムによれば、読み出し処理におけるレイテンシを低くすることができる。
【００４４】
（第２の実施の形態）
図７は、第２の実施の形態に係るシステムの構成図である。
システム１１０１は、ＰＣ１２０１およびデバイス１３０１を備える。
ＰＣ１２０１とデバイス１３０１は、例えば、シリアルインタフェースによって接続されている。
【００４５】
ＰＣ１２０１は、情報処理装置の一例である。
ＰＣ１２０１は、ＣＰＵ１２０２、メモリ１２０３、およびスイッチングコントローラ１２０４を備える。
【００４６】
ＣＰＵ１２０２およびメモリ１２０３は、第１の実施の形態のＣＰＵ２０２およびメモリ２０３とそれぞれ同様の機能を有するため、説明は省略する。
スイッチングコントローラ１２０４は、ＣＰＵ１２０２、メモリ１２０３、およびデバイス１３０１間を相互接続し、ルーティング制御を行う回路である。
【００４７】
スイッチングコントローラ１２０４は、コマンド検出回路１２１１、コマンド加工回路１２２１、先読みリクエスト発行回路１２３１、およびセレクタ１２４１、１２４２を備える。
【００４８】
コマンド検出回路１２１１は、ＣＰＵ１２０２から受信したコマンドをチェックし、リードコマンドを検出する。リードコマンドを検出した場合、コマンド検出回路１２１１は、リードコマンドを検出したことを示す検出信号をコマンド加工回路１２２１、先読みリクエスト発行回路１２３１、およびセレクタ１２４１に出力する。
【００４９】
コマンド加工回路１２２１は、コマンド検出回路１２１１からの検出信号に応じて、リードコマンドを加工し、加工されたリードコマンド（加工リードコマンド）をセレクタ１２４１に出力する。
【００５０】
ここで、リードコマンドおよび加工リードコマンドの形式について説明する。
図８は、第２の実施の形態に係るリードコマンドの形式を示す図である。
リードコマンド１２５１は、オペコード（ＯＰＣ）、アドレス（ＡＤ）、レングス（ＬＥ）、およびリザーブ（Ｒ）を含む。
【００５１】
オペコードは、コマンドの種類を示す。例えば、コマンドがリードコマンドである場合、オペコードとしてリードコマンドであることを示す情報が記述されている。
アドレスは、読み出し開始アドレスを示す。
【００５２】
レングスは、読み出すデータの長さを示す。
リザーブは、未使用の空きフィールドである。
また、ＯＰＣ、ＡＤ、およびＬＥが記述されるフィールドをそれぞれＯＰＣフィールド、ＡＤフィールド、およびＬＥフィールドと呼ぶ。
【００５３】
図９は、第２の実施の形態に係る加工リードコマンドの形式を示す図である。
加工リードコマンド１２５２は、オペコード（ＯＰＣ）、アドレス（ＡＤ）、レングス（ＬＥ）、Pre read Act（ＰＡ）、およびリザーブ（Ｒ）を含む。
【００５４】
オペコード、アドレス、レングス、およびリザーブは、上述のリードコマンドと同様であるので説明は省略する。
Pre read Actは、先読み処理が実行されたか否かを示すフラグである。例えば、Pre read Actに１が記述されている場合、先読み処理が実行されたこと示す。
【００５５】
また、ＰＡが記述されるフィールドをＰＡフィールドと呼ぶ。
コマンド加工回路１２２１は、コマンド検出回路１２１１から検出信号を受信すると、リードコマンド１２５１のレングスフィールドの後ろにＰＡフィールドを付加し、ＰＡフィールドに１を記述する。ＰＡフィールドに１が記述されたリードコマンドが加工リードコマンド１２５２となる。
【００５６】
そして、コマンド加工回路１２２１は、加工リードコマンド１２５２をセレクタ１２４１に出力する。
先読みリクエスト発行回路１２３１は、リードコマンドで指定されたデータの少なくとも一部を要求するリードリクエストを出力する。
【００５７】
先読みリクエスト発行回路１２３１は、読み出しアドレスレジスタ１２３２およびリードリクエスト生成回路１２３３を備える。
読み出しアドレスレジスタ１２３２は、リードコマンド１２５１のＡＤフィールドの値を格納する。
【００５８】
リードリクエスト生成回路１２３３は、読み出しアドレスレジスタ１２３２に格納された値から先読み分のデータまでを要求するリードリクエストを生成し、セレクタ１２４２に出力する。尚、先読み分のデータの長さは予め設定されているものとする。
【００５９】
セレクタ１２４１は、コマンド検出回路１２１１からの検出信号に応じて、ＣＰＵ１２０１から受信したコマンドまたはコマンド加工回路１２２１からの加工リードコマンドのいずれかをデバイス１３０１に出力する。
【００６０】
セレクタ１２４２は、先読みリクエスト発行回路１２３１またはデバイス１３０１から受信したリ−ドリクエストをメモリ１２０３に出力する。
デバイス１３０１は、ＰＣ１２０１からコマンドを受信し、ＰＣ１２０１へのリクエストの送信やＰＣ１２０１からデータの受信を行う。
【００６１】
デバイス１３０１は、データを格納する装置であり、例えば、磁気ディスク装置（ハードディスクドライブ）や半導体記憶装置などである。
デバイス１３０１は、先読み判定回路１３１１、リクエスト発行回路１３２１、およびデータ受信回路１３３１を備える。
【００６２】
先読み判定回路１３１１は、受信したリードコマンドをチェックし、先読み処理が行われているか否か判定し、判定結果をリクエスト発行回路１３２１に出力する。先読み処理が行われているか否かの判定は、受信したリードコマンドのＰＡフィールドの値に基づいて判定される。先読み判定回路１３１１は、例えば、受信したリードコマンドのＰＡフィールドに１が記述されている場合は、先読み処理が行われていると判定する。また、先読み判定回路１３１１は、受信したリードコマンドにＰＡフィールドが無い場合は、先読み処理が行われていないと判定する。
【００６３】
リクエスト発行回路１３２１は、リードコマンドを受信し、先読み判定回路１３１１の判定結果に応じたリードリクエストを作成し、リードリクエストをセレクタ１２４２に出力する。
【００６４】
リクエスト発行回路１３２１は、第１のレジスタ１３２２、第２のレジスタ１３２３、セレクタ１３２４、およびリードリクエスト生成回路１３２５を備える。
第１のレジスタ１３２２は、読み出しアドレスレジスタおよび読み出し長レジスタを備える。
【００６５】
第１のレジスタ１３２２の読み出しアドレスレジスタは、受信したリードコマンドのＡＤフィールドの値を格納する。
第１のレジスタ１３２２の読み出し長レジスタは、受信したリードコマンドのＬＥフィールドの値を格納する。
【００６６】
第２のレジスタ１３２３は、読み出しアドレスレジスタおよび読み出し長レジスタを備える。
第２のレジスタ１３２３の読み出しアドレスレジスタは、受信したリードコマンドのＡＤフィールドの値に先読み分のデータの長さを加算した値を格納する。
【００６７】
第２のレジスタ１３２３の読み出し長レジスタは、受信したリードコマンドのＬＥフィールドの値から先読み分のデータの長さを減算した値を格納する。
尚、先読み分のデータの長さは予め設定されているものとする。また、設定されている先読み分のデータの長さは、スイッチングコントローラ１２０４とデバイス１３０１において、同じ値である。
【００６８】
セレクタ１３２４は、先読み判定回路１３１１の判定結果に応じて、第１のレジスタ１３２２または第２のレジスタ１３２３のいずれかの格納データをリードリクエスト生成回路１３２５に出力する。
【００６９】
詳細には、セレクタ１３２４は、判定結果が「先読みが行われている」である場合、第２のレジスタ１３２３の格納データをリードリクエスト生成回路１３２５に出力し、判定結果が「先読みが行われていない」である場合、第１のレジスタ１３２２の格納データをリードリクエスト生成回路１３２５に出力する。
【００７０】
リードリクエスト生成回路１３２５は、セレクタ１３２４の出力に基づいて、リードリクエストを生成する。
データ受信回路１３３１は、スイッチングコントローラ１２０４からリードデータを受信する。
【００７１】
図１０は、第２の実施の形態に係る読み出し処理のフローチャートである。
ステップＳ１５０１において、ＣＰＵ１２０２は、コマンドを発行する。ここで、ＣＰＵ１２０２は、コマンドとしてリードコマンドを発行したとする。
【００７２】
ステップＳ１５０２において、コマンド検出回路１２１１は、受信したコマンドをチェックし、受信したコマンドがリードコマンドであることを検出する。コマンド検出回路１２１１は、リードコマンドを検出したことを示す検出信号をコマンド加工回路１２２１、先読みリクエスト発行回路１２３１、およびセレクタ１２４１に出力する。
【００７３】
ステップＳ１５０３において、先読みリクエスト発行回路１２３１は、リードコマンドのＡＤフィールドの値（ＡＤ）を読み出しアドレスレジスタ１２３２に格納する。リードリクエスト生成回路１２３３は、検出信号を受信すると、読み出しアドレスレジスタ１２３２に格納された値を読み出し開始アドレスとし、読み出し開始アドレスから先読み分のデータまでを要求するリードリクエストを生成し、リードリクエストをセレクタ１２４２に出力する。セレクタ１２４２は、受信したリードリクエストをメモリ１２０３に出力する。スイッチングコントローラ１２０４は、先読み分のリードリクエストに対応するリードデータをメモリ１２０３から受信し、データ受信回路１３３１に転送する。
【００７４】
ステップＳ１５０４において、コマンド加工回路１２２１は、検出信号を受信すると、リードコマンドを加工する。詳細には、コマンド加工回路１２２１は、リードコマンドにＰＡフィールドを追加し、ＰＡフィールドに“１”を記述する。コマンド加工回路１２２１は、加工されたリードコマンド（加工リードコマンド）をセレクタ１２４１に出力する。セレクタ１２４１は、検出信号を受信すると、加工リードコマンドをデバイス１３０１に出力する。
【００７５】
ステップＳ１５０５において、先読み判定回路１３１１は、受信したリードコマンドのＰＡフィールドの値に基づいて、先読み処理が行われているか否か判定し、判定結果をリクエスト発行回路１３２１に出力する。尚、先読み判定回路１３１１は、リードコマンドのＰＡフィールドの値が１の場合、先読み処理が行われていると判定し、ＰＡフィールドの値が１でない場合、先読み処理が行われていないと判定する。
【００７６】
ＰＡフィールドに“１”が記述されている（すなわち、先読み処理が行われている）場合、制御はステップＳ１５０６に進み、ＰＡフィールドに“１”が記述されていない（すなわち、先読み処理が行われていない）場合、制御はステップＳ１５０７に進む。
【００７７】
ステップＳ１５０６において、リクエスト発行回路１３２１は、第１のレジスタ１３２２の読み出しアドレスレジスタおよび読み出し長レジスタに、受信したリードコマンドのＡＤフィールドの値（ＡＤ）およびＬＥフィールドの値（ＬＥ）をそれぞれ格納する。
【００７８】
リクエスト発行回路１３２１は、第２のレジスタ１３２３の読み出しアドレスレジスタおよび読み出し長レジスタに、受信したリードコマンドのＡＤフィールドの値（ＡＤ）に先読み分のデータの長さを加算した値およびＬＥフィールドの値（ＬＥ）から先読み分のデータの長さを減算した値をそれぞれ格納する。
【００７９】
セレクタ１３２４は、第２のレジスタ１３２３の読み出しアドレスレジスタおよび読み出し長レジスタに格納されているデータ、すなわちＡＤに先読み分のデータの長さを加算した値およびＬＥから先読み分のデータの長さを減算した値をリードリクエスト生成回路１３２５に出力する。
【００８０】
リードリクエスト生成回路１３２５は、読み出し開始アドレスをＡＤに先読み分のデータの長さを加算した値、読み出しデータ長をＬＥから先読み分のデータの長さを減算した値とするリードリクエストを生成し、リードリクエストをセレクタ１２４２に出力する。
【００８１】
尚、ＬＥから先読み分のデータの長さを減算した値が０である場合は、リードリクエスト生成回路１３２５は、リードリクエストの生成を行わない。
ステップＳ１５０７において、リクエスト発行回路１３２１は、第１のレジスタ１３２２の読み出しアドレスレジスタおよび読み出し長レジスタに、受信したリードコマンドのＡＤフィールドの値（ＡＤ）およびＬＥフィールドの値（ＬＥ）をそれぞれ格納する。
【００８２】
リクエスト発行回路１３２１は、第２のレジスタ１３２３の読み出しアドレスレジスタおよび読み出し長レジスタに、受信したリードコマンドのＡＤフィールドの値（ＡＤ）に先読み分のデータの長さを加算した値およびＬＥフィールドの値（ＬＥ）から先読み分のデータの長さを減算した値をそれぞれ格納する。
【００８３】
セレクタ１３２４は、第１のレジスタ１３２２の読み出しアドレスレジスタおよび読み出し長レジスタに格納されているデータ、すなわちＡＤおよびＬＥをリードリクエスト生成回路１３２５に出力する。
【００８４】
リードリクエスト生成回路１３２５は、読み出し開始アドレスをＡＤ、読み出しデータ長をＬＥとするリードリクエストを生成し、リードリクエストをセレクタ１２４２に出力する。
【００８５】
ステップＳ１５０６またはＳ１５０７の後、セレクタ１２４２は、受信したリードリクエストをメモリ１２０３に出力する。そして、スイッチングコントローラ１２０４は、リードリクエストで要求したリードデータをメモリ１２０３から受信し、データ受信回路１３３１に転送する。
【００８６】
ここで、第２の実施の形態の読み出し処理の効果を示すために、従来の読み出し処理を行った場合と第２の実施の形態の読み出し処理を行った場合のシーケンス図を説明する。
以下のシーケンス図において、ＡＤフィールドにADDR0、ＬＥフィールドに４が記述されたリードコマンドがＣＰＵから発行されている。すなわち、ADDR0からADDR3までのデータを読み出す処理について述べる。
また、読み出し処理においては、１レングスごとのリードリクエストを生成するものとする。
【００８７】
図１１は、従来の読み出し処理のシーケンス図である。
先ず、ＣＰＵからリードコマンドが発行され（サイクル０）、スイッチングコントローラを経由し（サイクル１）、デバイスに到着する（サイクル２）。
サイクル２〜５において、デバイスからADDR0〜ADDR3を要求するリードリクエストがそれぞれ発行される。
【００８８】
ADDR0〜ADDR3を要求するリードリクエストはスイッチングコントローラを経由し（サイクル３〜６）、メモリにそれぞれ到着する（サイクル４〜７）。
サイクル４〜７において、メモリからADDR0〜ADDR3のデータがそれぞれ送信される。
【００８９】
ADDR0〜ADDR3のデータは、スイッチングコントローラを経由し（サイクル５〜８）、メモリにそれぞれ到着する（サイクル６〜９）。
従来の読み出し処理では、デバイスが最初のデータ（すなわち、ADDR0のデータ）を受信するまで６サイクルを要し、全てのデータを受信するまでに９サイクルを要している。
【００９０】
図１２は、第２の実施の形態に係る読み出し処理（一部を先読み）のシーケンス図である。
図１２においては、先読み処理で２レングス分（ADDR0とADDR1）のデータを先読みするものとする。
【００９１】
先ず、ＣＰＵからリードコマンドが発行され（サイクル０）、スイッチングコントローラを経由し（サイクル１）、デバイスに到着する（サイクル２）。
サイクル１〜２において、スイッチングコントローラからADDR0〜ADDR1を要求するリードリクエスト（先読みリードリクエスト）がそれぞれ発行される。
【００９２】
サイクル２〜３において、デバイスからADDR2〜ADDR3を要求するリードリクエストがそれぞれ発行される。
ADDR2〜ADDR3を要求するリードリクエストはスイッチングコントローラを経由し（サイクル３〜４）、メモリにそれぞれ到着する（サイクル４〜５）。
【００９３】
サイクル２〜５において、メモリからADDR0〜ADDR3のデータがそれぞれ送信される。
ADDR0〜ADDR3のデータは、スイッチングコントローラを経由し（サイクル３〜６）、メモリにそれぞれ到着する（サイクル４〜７）。
【００９４】
第２の実施に係る一部を先読みする読み出し処理では、デバイスが最初のデータ（すなわち、ADDR0のデータ）を受信するまで４サイクルを要し、全てのデータを受信するまでに７サイクルを要している。
すなわち、第２の実施に係る全部を先読みする読み出し処理では、従来の読み出し処理と比較して、レイテンシを低下することが出来る。
【００９５】
図１３は、第２の実施の形態に係る読み出し処理（全部を先読み）のシーケンス図である。
図１３においては、先読み処理で全て（ADDR0〜ADDR3）のデータを先読みするものとする。
【００９６】
先ず、ＣＰＵからリードコマンドが発行され（サイクル０）、リードコマンドはスイッチングコントローラに到着する（サイクル１）。
リードコマンドは、先読み処理が実行されたことを示す情報が付加され、デバイスに送信される（サイクル１）。
【００９７】
サイクル１〜４において、スイッチングコントローラからADDR0〜ADDR3を要求するリードリクエスト（先読みリードリクエスト）がそれぞれ発行される。
サイクル２〜５において、メモリからADDR0〜ADDR3のデータがそれぞれ送信される。
ADDR0〜ADDR3のデータは、スイッチングコントローラを経由し（サイクル３〜６）、メモリにそれぞれ到着する（サイクル４〜７）。
【００９８】
第２の実施に係る全部を先読みする読み出し処理では、デバイスが最初のデータ（すなわち、ADDR0のデータ）を受信するまで４サイクルを要し、全てのデータを受信するまでに７サイクルを要している。
【００９９】
すなわち、第２の実施に係る全部を先読みする読み出し処理では、従来の読み出し処理と比較して、レイテンシを低下することが出来る。
また、図１３に示した全てのデータを先読みする場合と、図１２に示す一部のデータを先読みする場合では、両方とも全てのデータを受信するまでに７サイクルを要しており、全てのデータを受信するまでに要するサイクルに差はない。
【０１００】
しかしながら、一部のデータを先読みする場合の方が読み出し回数を制御する回路等の資源を少なくすることが出来るというメリットがある。
以上に示すように、第２の実施の形態の読み出し処理によれば、従来の読み出し処理に比べて、レイテンシを低下させることが出来る。
【０１０１】
（第３の実施の形態）
第２の実施の形態ではコマンドがリードコマンドである場合には、常に先読み処理を実施していたが、第３の実施の形態ではＣＰＵから発行されるリードコマンドに先読み処理を実行するか否かを示すフラグを含めることにより、先読み処理の実施を制御する形態について説明する。
【０１０２】
図１４は、第３の実施の形態に係るシステムの構成図である。
システム２１０１は、ＰＣ２２０１およびデバイス２３０１を備える。
ＰＣ２２０１とデバイス２３０１は、例えば、シリアルインタフェースによって接続されている。
【０１０３】
ＰＣ２２０１は、情報処理装置の一例である。
ＰＣ２２０１は、ＣＰＵ２２０２、メモリ２２０３、およびスイッチングコントローラ２２０４を備える。
【０１０４】
ＣＰＵ２２０２およびメモリ２２０３は、第１の実施の形態のＣＰＵ２０２およびメモリ２０３とそれぞれ同様の機能を有するため、説明は省略する。
スイッチングコントローラ２２０４は、ＣＰＵ２２０２、メモリ２２０３、およびデバイス２３０１間を相互接続し、ルーティング制御を行う回路である。
【０１０５】
スイッチングコントローラ２２０４は、コマンド検出回路２２１１、先読みリクエスト発行回路２２３１、およびセレクタ２２４２を備える。
コマンド検出回路２２１１は、ＣＰＵ２２０２から受信したコマンドをチェックし、リードコマンドを検出する。リードコマンドを検出した場合、コマンド検出回路２２１１は、ＰＲフィールドの値に基づいて、先読み処理を実施するか否か判定し、判定結果を先読みリクエスト発行回路２２３１に出力する。尚、コマンド検出回路２２１１は、リードコマンドのＰＲフィールドの値が１の場合、先読み処理を実施すると判定する。
【０１０６】
ここで、リードコマンドの形式について説明する。
図１５は、第３の実施の形態に係るリードコマンドの形式を示す図である。
リードコマンド２２５１は、オペコード（ＯＰＣ）、アドレス（ＡＤ）、レングス（ＬＥ）、およびPre Read（ＲＲ）を含む。
【０１０７】
オペコードは、コマンドの種類を示す。例えば、コマンドがリードコマンドである場合、オペコードとしてリードコマンドであることを示す情報が記述されている。
アドレスは、読み出し開始アドレスを示す。
【０１０８】
レングスは、読み出すデータの長さを示す。
Pre Readは、先読み処理を実行することを示すフラグである。例えば、Pre Readに１が記述されている場合、先読みを実行すること示す。
【０１０９】
また、ＯＰＣ、ＡＤ、ＬＥ、ＰＲが記述されるフィールドをそれぞれＯＰＣフィールド、ＡＤフィールド、ＬＥフィールド、およびＰＲフィールドと呼ぶ。
先読みリクエスト発行回路２２３１は、リードコマンドで指定されたデータの少なくとも一部を要求するリードリクエストを出力する。
【０１１０】
先読みリクエスト発行回路２２３１は、読み出しアドレスレジスタ２２３２およびリードリクエスト生成回路２２３３を備える。
読み出しアドレスレジスタ２２３２は、リードコマンド２２５１のＡＤフィールドの値を格納する。
【０１１１】
リードリクエスト生成回路２２３３は、コマンド検出回路２２１１から判定結果を受信する。リードリクエスト生成回路２２３３は、判定結果が先読み処理を実施するである場合、読み出しアドレスレジスタ２２３２に格納された値から先読み分のデータまでを要求するリードリクエストを生成し、セレクタ２２４２に出力する。尚、先読み分のデータの長さは予め設定されているものとする。
【０１１２】
セレクタ２２４２は、先読みリクエスト発行回路２２３１またはデバイス２３０１から受信したリ−ドリクエストをメモリ２２０３に出力する。
デバイス２３０１は、ＰＣ２２０１からコマンドを受信し、ＰＣ２２０１へのリクエストの送信やＰＣ２２０１からデータの受信を行う。
【０１１３】
デバイス２３０１は、データを格納する装置であり、例えば、磁気ディスク装置（ハードディスクドライブ）や半導体記憶装置などである。
デバイス２３０１は、先読み判定回路２３１１、リクエスト発行回路２３２１、およびデータ受信回路２３３１を備える。
【０１１４】
先読み判定回路２３１１は、受信したリードコマンドをチェックし、先読み処理が行われているか否か判定し、判定結果をリクエスト発行回路２３２１に出力する。先読み処理が行われているか否かの判定は、受信したリードコマンドのＰＲフィールドの値に基づいて判定される。先読み判定回路２３１１は、例えば、受信したリードコマンドのＰＲフィールドに１が記述されている場合は、先読み処理が行われていると判定する。また、先読み判定回路２３１１は、受信したリードコマンドのＰＲフィールドに０が記述されている場合は、先読み処理が行われていないと判定する。
【０１１５】
リクエスト発行回路２３２１は、リードコマンドを受信し、先読み判定回路２３１１の判定結果に応じたリードリクエストを作成し、リードリクエストをセレクタ２２４２に出力する。
リクエスト発行回路２３２１は、第１のレジスタ２３２２、第２のレジスタ２３２３、セレクタ２３２４、およびリードリクエスト生成回路２３２５を備える。
【０１１６】
第１のレジスタ２３２２、第２のレジスタ２３２３、セレクタ２３２４、およびリードリクエスト生成回路２３２５は、第２の実施の形態の第１のレジスタ１３２２、第２のレジスタ１３２３、セレクタ１３２４、およびリードリクエスト生成回路１３２５とそれぞれ同様の機能を有するため説明は省略する。
データ受信回路２３３１は、スイッチングコントローラ２２０４からリードデータを受信する。
【０１１７】
図１６は、第３の実施の形態に係る読み出し処理のフローチャートである。
ステップＳ２５０１において、ＣＰＵ２２０２は、コマンドを発行する。ここで、ＣＰＵ２２０２は、コマンドとしてリードコマンドを発行したとする。
ステップＳ２５０２において、コマンド検出回路２２１１は、受信したコマンドをチェックし、受信したコマンドがリードコマンドであることを検出する。
【０１１８】
ステップＳ２５０３において、コマンド検出回路２２１１は、受信したリードコマンドのＰＲフィールドの値に基づいて、先読み処理を実施するか否か判定し、判定結果を先読みリクエスト発行回路２２３１に出力する。尚、コマンド検出回路２２１１は、リードコマンドのＰＲフィールドの値が１の場合、先読み処理を実施すると判定し、ＰＲフィールドの値が１でない場合、先読み処理を実施しないと判定する。
【０１１９】
ＰＲフィールドの値が１である場合、制御はステップＳ２５０４に進み、ＰＲフィールドの値が１でない場合、制御はステップＳ２５０５に進む。
ステップＳ２５０４において、先読みリクエスト発行回路２２３１は、リードコマンドのＡＤフィールドの値（ＡＤ）を読み出しアドレスレジスタ２２３２に格納する。リードリクエスト生成回路２２３３は、読み出しアドレスレジスタ２２３２に格納された値を読み出し開始アドレスとし、読み出し開始アドレスから先読み分のデータまでを要求するリードリクエストを生成し、リードリクエストをセレクタ２２４２に出力する。セレクタ２２４２は、受信したリードリクエストをメモリ２２０３に出力する。スイッチングコントローラ２２０４は、先読み分のリードリクエストに対応するリードデータをメモリ２２０３から受信し、データ受信回路２３３１に転送する。
【０１２０】
ステップＳ２５０５において、スイッチングコントローラ２２０４は、受信したリードコマンドをデバイス２３０１に送信する。
ステップＳ２５０６において、先読み判定回路２３１１は、受信したリードコマンドのＰＲフィールドの値に基づいて、先読み処理が行われているか否か判定し、判定結果をリクエスト発行回路２３２１に出力する。尚、先読み判定回路２３１１は、リードコマンドのＰＲフィールドの値が１の場合、先読み処理が行われていると判定し、ＰＲフィールドの値が１でない場合、先読み処理が行われていないと判定する。
【０１２１】
ＰＲフィールドに“１”が記述されている（すなわち、先読み処理が行われている）場合、制御はステップＳ２５０７に進み、ＰＲフィールドに“１”が記述されていない（すなわち、先読み処理が行われていない）場合、制御はステップＳ２５０８に進む。
【０１２２】
ステップＳ２５０７において、リクエスト発行回路２３２１は、第１のレジスタ２３２２の読み出しアドレスレジスタおよび読み出し長レジスタに、受信したリードコマンドのＡＤフィールドの値（ＡＤ）およびＬＥフィールドの値（ＬＥ）をそれぞれ格納する。
【０１２３】
リクエスト発行回路２３２１は、第２のレジスタ２３２３の読み出しアドレスレジスタおよび読み出し長レジスタに、受信したリードコマンドのＡＤフィールドの値（ＡＤ）に先読み分のデータの長さを加算した値およびＬＥフィールドの値（ＬＥ）から先読み分のデータの長さを減算した値をそれぞれ格納する。
【０１２４】
セレクタ２３２４は、第２のレジスタ２３２３の読み出しアドレスレジスタおよび読み出し長レジスタに格納されているデータ、すなわちＡＤに先読み分のデータの長さを加算した値およびＬＥから先読み分のデータの長さを減算した値をリードリクエスト生成回路２３２５に出力する。
【０１２５】
リードリクエスト生成回路２３２５は、読み出し開始アドレスをＡＤに先読み分のデータの長さを加算した値、読み出しデータ長をＬＥから先読み分のデータの長さを減算した値とするリードリクエストを生成し、リードリクエストをセレクタ２２４２に出力する。
【０１２６】
尚、ＬＥから先読み分のデータの長さを減算した値が０である場合は、リードコマンドで指定されているデータに対するリードリクエストが全てスイッチングコントローラ２２０４で生成済みであること示しているので、リードリクエスト生成回路２３２５は、リードリクエストの生成を行わない。
【０１２７】
ステップＳ２５０８において、リクエスト発行回路２３２１は、第１のレジスタ２３２２の読み出しアドレスレジスタおよび読み出し長レジスタに、受信したリードコマンドのＡＤフィールドの値（ＡＤ）およびＬＥフィールドの値（ＬＥ）をそれぞれ格納する。
【０１２８】
リクエスト発行回路２３２１は、第２のレジスタ２３２３の読み出しアドレスレジスタおよび読み出し長レジスタに、受信したリードコマンドのＡＤフィールドの値（ＡＤ）に先読み分のデータの長さを加算した値およびＬＥフィールドの値（ＬＥ）から先読み分のデータの長さを減算した値をそれぞれ格納する。
【０１２９】
セレクタ２３２４は、第１のレジスタ２３２２の読み出しアドレスレジスタおよび読み出し長レジスタに格納されているデータ、すなわちＡＤおよびＬＥをリードリクエスト生成回路２３２５に出力する。
【０１３０】
リードリクエスト生成回路２３２５は、読み出し開始アドレスをＡＤ、読み出しデータ長をＬＥとするリードリクエストを生成し、リードリクエストをセレクタ２２４２に出力する。
【０１３１】
ステップＳ２５０７またはＳ２５０８の後、セレクタ２２４２は、受信したリードリクエストをメモリ２２０３に出力する。そして、スイッチングコントローラ２２０４は、リードリクエストで要求したリードデータをメモリ２２０３から受信し、データ受信回路２３３１に転送する。
【０１３２】
第３の実施の形態の読み出し処理によれば、従来の読み出し処理に比べて、レイテンシを低下させることが出来る。
第３の実施の形態の読み出し処理によれば、リードコマンドに制御情報（Pre Read）を含めることにより、読み出し処理の実行を制御することが出来る。
【０１３３】
（第４の実施の形態）
上述の第２および第３の実施の形態では、先読み分のデータ長は、予め設定されていたが、第４の実施の形態ではＣＰＵから発行されるリードコマンドに先読み分のデータ長の情報を含める形態について説明する。
【０１３４】
また、第３の実施の形態では、リードコマンドに含まれる先読み処理を実行するか否かを示すフラグに応じて、先読み処理を実施していたが、第４の実施の形態では、さらに先読みリクエスト発行回路等の状態に応じて、先読み処理を実施するか否か判定する。
【０１３５】
図１７は、第４の実施の形態に係るシステムの構成図である。
システム３１０１は、ＰＣ３２０１およびデバイス３３０１を備える。
ＰＣ３２０１とデバイス３３０１は、例えば、シリアルインタフェースによって接続されている。
【０１３６】
ＰＣ３２０１は、情報処理装置の一例である。
ＰＣ３２０１は、ＣＰＵ３２０２、メモリ３２０３、およびスイッチングコントローラ３２０４を備える。
【０１３７】
ＣＰＵ３２０２およびメモリ３２０３は、第１の実施の形態のＣＰＵ２０２およびメモリ２０３とそれぞれ同様の機能を有するため、説明は省略する。
スイッチングコントローラ３２０４は、ＣＰＵ３２０２、メモリ３２０３、およびデバイス３３０１間を相互接続し、ルーティング制御を行う回路である。
【０１３８】
スイッチングコントローラ３２０４は、コマンド検出回路３２１１、先読み判定回路３２１２、コマンド加工回路３２２１、先読みリクエスト発行回路３２３１、およびセレクタ３２４１、３２４２を備える。
【０１３９】
コマンド検出回路３２１１は、ＣＰＵ３２０２から受信したコマンドをチェックし、リードコマンドを検出する。リードコマンドを検出した場合、コマンド検出回路３２１１は、ＰＲフィールドの値に基づいて、先読み処理を実施するか否か判定し、判定結果を先読み判定回路３２１２に出力する。尚、コマンド検出回路３２１１は、リードコマンドのＰＲフィールドの値が１の場合、先読み処理を実施すると判定する。
【０１４０】
ここで、リードコマンドの形式について説明する。
図１８は、第４の実施の形態に係るリードコマンドの形式を示す図である。
リードコマンド３２５１は、オペコード（ＯＰＣ）、アドレス（ＡＤ）、レングス（ＬＥ）、Pre Read（ＲＲ）、Pre read Length（ＰＬ）、およびPre read Act（ＰＡ）を含む。
【０１４１】
オペコードは、コマンドの種類を示す。例えば、コマンドがリードコマンドである場合、オペコードとしてリードコマンドであることを示す情報が記述されている。
アドレスは、読み出し開始アドレスを示す。
【０１４２】
レングスは、読み出すデータの長さを示す。
Pre Readは、先読み処理を実行することを示すフラグである。例えば、Pre Readに１が記述されている場合、先読みを実行すること示す。
【０１４３】
Pre read Lengthは、先読み処理において読み出すデータの長さを示す。
Pre read Actは、先読み処理が実行されたか否かを示すフラグである。例えば、Pre read Actに１が記述されている場合、先読み処理が実行されたこと示す。
【０１４４】
また、ＯＰＣ、ＡＤ、ＬＥ、ＰＲ、ＰＬ、およびＰＡが記述されるフィールドをそれぞれＯＰＣフィールド、ＡＤフィールド、ＬＥフィールド、ＰＲフィールド、ＰＬフィールド、およびＰＡフィールドと呼ぶ。
【０１４５】
先読み判定回路３２１２は、コマンド検出回路３２１１から判定結果を受信し、判定結果が「先読み処理を実施する」である場合、先読みを実施するか否か判定する。先読み判定回路３２１２は、スイッチングコントローラ３２０４の状態（例えば、先読みリクエスト発行回路３２３１の状態や各回路のエラーの有無など）に基づいて、先読み処理を実施するか否か判定する。尚、判定方法の例については後述する。
【０１４６】
コマンド加工回路３２２１は、先読み判定回路３２１２からの判定結果が「先読み処理を実施する」である場合、受信したリードコマンドを加工する。詳細には、コマンド加工回路３２２１は、リードコマンドのＰＡフィールドに１を記述する。そして、コマンド加工回路３２２１は、加工されたリードコマンド（加工リードコマンド）をセレクタ３２４１に出力する。
【０１４７】
先読みリクエスト発行回路３２３１は、リードコマンドで指定されたデータの少なくとも一部を要求するリードリクエストを出力する。
先読みリクエスト発行回路３２３１は、読み出しアドレスレジスタ３２３２、読み出し長レジスタ３２３４、およびリードリクエスト生成回路３２３３を備える。
【０１４８】
読み出しアドレスレジスタ３２３２は、リードコマンド３２５１のＡＤフィールドの値を格納する。
読み出し長レジスタ３２３４は、リードコマンド３２５１のＰＬフィールドの値を格納する。
【０１４９】
リードリクエスト生成回路３２３３は、読み出しアドレスレジスタ３２３２に格納された値から読み出し長レジスタ３２３４に格納された値までのデータを要求するリードリクエストを生成し、セレクタ３２４２に出力する。
【０１５０】
セレクタ３２４１は、先読み判定回路３２１２からの判定結果に応じて、ＣＰＵ３２０１から受信したコマンドまたはコマンド加工回路３２２１から出力されたリードコマンド（加工されたリードコマンド）のいずれかをデバイス３３０１に出力する。詳細には、セレクタ３２４１は、先読み判定回路３２１２からの判定結果が「先読み処理を実施する」である場合、コマンド加工回路３２２１から出力された加工リードコマンドを出力し、先読み判定回路３２１２からの判定結果が「先読み処理を実施しない」である場合、ＣＰＵ３２０１から受信したコマンドを出力する。
【０１５１】
セレクタ３２４２は、先読みリクエスト発行回路３２３１またはデバイス３３０１から受信したリ−ドリクエストをメモリ３２０３に出力する。
デバイス３３０１は、ＰＣ３２０１からコマンドを受信し、ＰＣ３２０１へのリクエストの送信やＰＣ３２０１からデータの受信を行う。
【０１５２】
デバイス３３０１は、データを格納する装置であり、例えば、磁気ディスク装置（ハードディスクドライブ）や半導体記憶装置などである。
デバイス３３０１は、先読み判定回路３３１１、リクエスト発行回路３３２１、およびデータ受信回路３３３１を備える。
【０１５３】
先読み判定回路３３１１は、第２の実施の形態の先読み判定回路１３１１と同様の機能を有するため、説明は省略する。
リクエスト発行回路３３２１は、リードコマンドを受信し、先読み判定回路３３１１の判定結果に応じたリードリクエストを作成し、リードリクエストをセレクタ３２４２に出力する。
【０１５４】
リクエスト発行回路３３２１は、第１のレジスタ３３２２、第２のレジスタ３３２３、セレクタ３３２４、およびリードリクエスト生成回路３３２５を備える。
第１のレジスタ３３２２は、読み出しアドレスレジスタおよび読み出し長レジスタを備える。
【０１５５】
第１のレジスタ３３２２の読み出しアドレスレジスタは、受信したリードコマンドのＡＤフィールドの値を格納する。
第１のレジスタ３３２２の読み出し長レジスタは、受信したリードコマンドのＬＥフィールドの値を格納する。
【０１５６】
第２のレジスタ３１３２３は、読み出しアドレスレジスタおよび読み出し長レジスタを備える。
第２のレジスタ３３２３の読み出しアドレスレジスタは、受信したリードコマンドのＡＤフィールドの値にＰＬフィールドの値を加算した値を格納する。
【０１５７】
第２のレジスタ３３２３の読み出し長レジスタは、受信したリードコマンドのＬＥフィールドの値からＰＬフィールドの値を減算した値を格納する。
セレクタ３３２４は、先読み判定回路３３１１の判定結果に応じて、第１のレジスタ３３２２または第２のレジスタ３３２３のいずれかの格納データをリードリクエスト生成回路３３２５に出力する。
【０１５８】
詳細には、セレクタ３３２４は、判定結果が「先読み処理が行われている」である場合、第２のレジスタ３３２３の格納データをリードリクエスト生成回路３３２５に出力し、判定結果が「先読み処理が行われていない」である場合、第１のレジスタ３３２２の格納データをリードリクエスト生成回路３３２５に出力する。
【０１５９】
リードリクエスト生成回路３３２５は、セレクタ３３２４の出力に基づいて、リードリクエストを生成する。
データ受信回路３３３１は、スイッチングコントローラ３２０４からリードデータを受信する。
【０１６０】
図１９は、第４の実施の形態に係る読み出し処理のフローチャートである。
ステップＳ３５０１において、ＣＰＵ３２０２は、コマンドを発行する。ここで、ＣＰＵ３２０２は、コマンドとしてリードコマンドを発行したとする。
【０１６１】
ステップＳ３５０２において、コマンド検出回路３２１１は、受信したコマンドをチェックし、受信したコマンドがリードコマンドであることを検出する。
ステップＳ３５０３において、コマンド検出回路３２１１は、受信したリードコマンドのＰＲフィールドの値に基づいて、先読み処理を実施するか否か判定し、判定結果を先読み判定回路３２１２に出力する。尚、コマンド検出回路３２１１は、リードコマンドのＰＲフィールドの値が１の場合、先読み処理を実施すると判定し、ＰＲフィールドの値が１でない場合、先読み処理を実施しないと判定する。
【０１６２】
ＰＲフィールドの値が１である場合、制御はステップＳ３５０４に進み、ＰＲフィールドの値が１でない場合、制御はステップＳ３５０７に進む。
ステップＳ３５０３において、先読み判定回路３２１２は、スイッチングコントローラ３２０４の状態に基づいて、先読み処理を実行するか否か判定する。先読み判定回路３２１２は、判定結果を先読みリクエスト発行回路３２３１、コマンド加工回路３２２１、およびセレクタ３２４１に出力する。
【０１６３】
先読み処理を実行すると判定された場合、制御はステップＳ３５０５に進み、先読み処理を実行しないと判定された場合、制御はステップＳ３５０７に進む。
ステップＳ３５０５において、先読みリクエスト発行回路３２３１は、リードコマンドのＡＤフィールドの値（ＡＤ）を読み出しアドレスレジスタ３２３２に格納し、リードコマンドのＰＬフィールドの値（ＰＬ）を読み出し長レジスタ３２３４に格納する。
【０１６４】
リードリクエスト生成回路３２３３は、読み出しアドレスレジスタ３２３２に格納された値を読み出し開始アドレスとし、読み出し開始アドレスから読み出し長レジスタ３２３４に格納された値までのデータを要求するリードリクエスト（先読み分のリードリクエスト）を生成し、リードリクエストをセレクタ３２４２に出力する。
【０１６５】
セレクタ３２４２は、受信したリードリクエストをメモリ３２０３に出力する。スイッチングコントローラ３２０４は、先読み分のリードリクエストに対応するリードデータをメモリ３２０３から受信し、データ受信回路３３３１に転送する。
【０１６６】
ステップＳ３５０６において、コマンド加工回路３２２１は、リードコマンドを加工する。詳細には、コマンド加工回路３２２１は、リードコマンドのＰＡフィールドに“１”を記述する。コマンド加工回路３２２１は、加工されたリードコマンド（加工リードコマンド）をセレクタ３２４１に出力する。セレクタ３２４１は、加工リードコマンドをデバイス３３０１に出力する。
【０１６７】
ステップＳ３５０７において、セレクタ３２４１は、ＣＰＵ３２０２か受信したリードコマンドをデバイス３３０１に出力する。
ステップＳ３５０８において、先読み判定回路３３１１は、受信したリードコマンドのＰＡフィールドの値に基づいて、先読み処理が行われているか否か判定し、判定結果をリクエスト発行回路３３２１に出力する。尚、先読み判定回路３３１１は、リードコマンドのＰＡフィールドの値が１の場合、先読み処理が行われていると判定し、ＰＡフィールドの値が１でない場合、先読み処理が行われていないと判定する。
【０１６８】
ＰＡフィールドに“１”が記述されている（すなわち、先読み処理が行われている）場合、制御はステップＳ３５０９に進み、ＰＡフィールドに“１”が記述されていない（すなわち、先読み処理が行われていない）場合、制御はステップＳ３５１０に進む。
【０１６９】
ステップＳ３５０９において、リクエスト発行回路３３２１は、第１のレジスタ３３２２の読み出しアドレスレジスタおよび読み出し長レジスタに、受信したリードコマンドのＡＤフィールドの値（ＡＤ）およびＬＥフィールドの値（ＬＥ）をそれぞれ格納する。
【０１７０】
リクエスト発行回路３３２１は、第２のレジスタ３３２３の読み出しアドレスレジスタおよび読み出し長レジスタに、受信したリードコマンドのＡＤフィールドの値（ＡＤ）にＰＬフィールドの値（ＰＬ）を加算した値（ＡＤ＋ＰＬ）およびＬＥフィールドの値（ＬＥ）からＰＬフィールドの値（ＰＬ）を減算した値（ＬＥ−ＰＬ）をそれぞれ格納する。
【０１７１】
セレクタ３３２４は、第２のレジスタ３３２３の読み出しアドレスレジスタおよび読み出し長レジスタに格納されているデータ、すなわちＡＤ＋ＰＬおよびＬＥ−ＰＬをリードリクエスト生成回路３３２５に出力する。
【０１７２】
リードリクエスト生成回路３３２５は、読み出し開始アドレスをＡＤ＋ＰＬ、読み出しデータ長をＬＥ−ＰＬとするリードリクエストを生成し、リードリクエストをセレクタ３２４２に出力する。
【０１７３】
尚、ＬＥ−ＰＬが０である場合は、リードコマンドで指定されているデータに対するリードリクエストが全てスイッチングコントローラ３２０４で生成済みであること示しているので、リードリクエスト生成回路３３２５は、リードリクエストの生成を行わない。
【０１７４】
ステップＳ３５１０において、リクエスト発行回路３３２１は、第１のレジスタ３３２２の読み出しアドレスレジスタおよび読み出し長レジスタに、受信したリードコマンドのＡＤフィールドの値（ＡＤ）およびＬＥフィールドの値（ＬＥ）をそれぞれ格納する。
【０１７５】
リクエスト発行回路３３２１は、第２のレジスタ３３２３の読み出しアドレスレジスタおよび読み出し長レジスタに、受信したリードコマンドのＡＤフィールドの値（ＡＤ）にＰＬフィールドの値（ＰＬ）を加算した値（ＡＤ＋ＰＬ）およびＬＥフィールドの値（ＬＥ）からＰＬフィールドの値（ＰＬ）を減算した値（ＬＥ−ＰＬ）をそれぞれ格納する。
【０１７６】
セレクタ３３２４は、第１のレジスタ３３２２の読み出しアドレスレジスタおよび読み出し長レジスタに格納されているデータ、すなわちＡＤおよびＬＥをリードリクエスト生成回路３３２５に出力する。
【０１７７】
リードリクエスト生成回路３３２５は、読み出し開始アドレスをＡＤ、読み出しデータ長をＬＥとするリードリクエストを生成し、リードリクエストをセレクタ３２４２に出力する。
【０１７８】
ステップＳ３５０９またはＳ３５１０の後、セレクタ３２４２は、受信したリードリクエストをメモリ３２０３に出力する。そして、スイッチングコントローラ３２０４は、リードリクエストで要求したリードデータをメモリ３２０３から受信し、データ受信回路３３３１に転送する。
【０１７９】
第４の実施の形態の読み出し処理によれば、従来の読み出し処理に比べて、レイテンシを低下させることが出来る。
第４の実施の形態の読み出し処理によれば、リードコマンドにより、先読み分のデータ長を制御することが出来る。
【０１８０】
第４の実施の形態の読み出し処理によれば、スイッチングコントローラの状態に基づいて、読み出し処理の実行を制御することが出来る。
次に、先読み判定回路３２１２における先読み処理の実行の判定方法の例について説明する。
【０１８１】
先読み処理の実行の判定方法について、以下の３つの例を説明する。
（１）先読みリクエスト発行回路の状態に基づく判定
図２０は、第４の実施の形態に係るシステムの第１の変形例の構成図である。
【０１８２】
第１の変形例に係る先読みリクエスト発行回路３２３１は、先読みリクエスト発行回路３２３１の状態を示す状態信号を先読み判定回路３２１２に出力する。詳細には、先読みリクエスト発行回路３２３１は、先読みリクエスト発行回路３２３１が先読み処理を実行中の場合や読み出しアドレスレジスタ３２３２および読み出し長レジスタ３２３４の空き領域が少ない場合など、新たな先読み処理をすぐに実行できない場合、ＢＵＳＹ状態を示す状態信号を出力する。
【０１８３】
先読み判定回路３２１２は、状態信号に基づいて、先読み処理を実施するか否か判定する。詳細には、先読み判定回路３２１２は、状態信号がＢＵＳＹ状態を示している場合は、先読み処理を実施しないと判定する。
【０１８４】
例えば、先読みリクエスト発行回路３２３１が別の先読み処理を行っているため、新たな先読み処理をすぐに実行できない場合がある。
その場合、現在処理中の先読み処理が終了するまで、新たな先読み処理の実行を待っていると、レイテンシが余計に掛かってしまう。
【０１８５】
したがって、上述の状態信号に基づく判定を行うことにより、レイテンシが余計に掛かってしまうという問題を回避できる。
【０１８６】
（２）制御レジスタに基づく判定
図２１は、第４の実施の形態に係るシステムの第２の変形例の構成図である。
第２の変形例に係るスイッチングコントローラ３２０４は、制御レジスタ３２６１をさらに備える。
【０１８７】
制御レジスタ３２６１には、先読み処理を実施するか否かを示す制御情報が格納される。制御情報は、ＣＰＵ３２０２からの制御信号により書き込まれる。
【０１８８】
先読み判定回路３２１２は、制御レジスタ３２６１に格納された制御情報を参照し、制御情報に基づいて、先読み処理を実施するか否か判定する。
例えば、ＰＣが複数のスイッチングコントローラを備え、複数のスイッチングコントロが多段で接続されているシステムがあるとする。
【０１８９】
該システムおいて、システムの性能を考慮して、特定の経路（すなわち、特定のスイッチングコントローラ）のみを先読み処理を実施しないように制限したいとする。
その場合に、特定のスイッチングコントローラの制御レジスタに読みを実施しないことを示す制御情報を書き込む。それにより、特定の経路（すなわち、特定のスイッチングコントローラ）のみを先読み処理を実施しないようにすることが出来る。
【０１９０】
このように、第２の変形例に係るスイッチングコントローラを用いることで、先読み処理の実施するまたは実施しないスイッチングコントローラを自由に設定することができる。
【０１９１】
（３）エラーチェックに基づく判定
図２２は、第４の実施の形態に係るシステムの第３の変形例の構成図である。
第３の変形例に係るスイッチングコントローラ３２０４は、エラーチェック回路３２７１−ｉ（ｉ＝１〜３）をさらに備える。
【０１９２】
エラーチェック回路３２７１−１は、コマンド検出回路３２１１の動作およびコマンド検出回路３２１１の出力データにエラーがあるか否かチェックする。エラーチェック回路３２７１−１は、エラーを検出すると、エラー検出信号を先読み判定回路３２１２に出力する。
【０１９３】
エラーチェック回路３２７１−２は、コマンド加工回路３２２１の動作およびコマンド加工回路３２２１の出力データにエラーがあるか否かチェックする。エラーチェック回路３２７１−２は、エラーを検出すると、エラー検出信号を先読み判定回路３２１２に出力する。
【０１９４】
エラーチェック回路３２７１−３は、先読みリクエスト発行回路３２３１の動作および先読みリクエスト発行回路３２３１の出力データにエラーがあるか否かチェックする。エラーチェック回路３２７１−３は、エラーを検出すると、エラー検出信号を先読み判定回路３２１２に出力する。
【０１９５】
先読み判定回路３２１２は、エラーチェック回路３２７１−１〜３２７１−３のいずれかからエラー検出信号を受信した場合、先読み処理を実施しないと判定する。
アルファ線や素材の劣化等の影響により、スイッチングコントローラの各回路の動作や出力データにエラーが発生する場合がある。
【０１９６】
第３の変形例において、スイッチングコントローラ３０２４は、先読み処理に関連する回路（コマンド検出回路、コマンド加工回路、および先読みリクエスト発行回路）の動作または出力データにエラーが検出された場合には、先読み処理を実施せず、通常の処理を行う。
【０１９７】
このように、エラーチェックに基づく先読み処理の実施の判定を行うことにより、システムの信頼性が向上する。
第３の変形例は、例えば高信頼性を要求される基幹系システムにおいて好適である。
【０１９８】
尚、上述の各実施の形態において、デバイスはＰＣに接続されているが、デバイスをＰＣ内に設置し、ＰＣがデバイスを備える構成にしても良い。
【０１９９】
以上の第１〜第４の実施の形態に関し、さらに以下の付記を開示する。
（付記１）
デバイスへリードコマンドを発行する処理装置と、
データを格納するメモリと、
前記処理装置、前記メモリ、および前記デバイスと接続するスイッチングコントローラと、
を備え、
前記スイッチングコントローラは、
前記処理装置から発行された前記リードコマンドを検出するコマンド検出回路と、
前記リードコマンドを加工し、加工されたリードコマンドを出力するコマンド加工回路と、
前記リードコマンドで指定されたデータの内の少なくとも一部のデータを要求するリードリクエストを生成し、前記リードリクエストを前記メモリに送信する先読みリクエスト発行回路と、を備え、
前記メモリから前記一部のデータを受信し、前記一部のデータを前記デバイスに送信する
ことを特徴とする情報処理装置。
（付記２）
前記コマンド加工回路は、前記一部のデータを読み出す先読み処理を実行したことを示す先読み実行情報を前記リードコマンドに記述することを特徴とする付記１記載の情報処理装置。
（付記３）
前記先読み処理を実行するか否か判定する第１の先読み処理判定回路をさらに備え、
前記リードコマンドは、前記一部のデータを読み出す先読み処理を実行するか否かを示す先読み指示情報を含み、
前記コマンド検出回路は、前記先読み指示情報に基づいて、前記先読み処理を実行するか否か判定し、
前記コマンド検出回路により前記先読み処理を実行すると判定された場合、前記第１の先読み処理判定回路は、前記スイッチングコントローラの状態に基づいて、前記先読み処理を実行するか否か判定し、
前記第１の先読み処理判定回路により前記先読み処理を実行すると判定された場合、前記コマンド加工回路は、前記一部のデータを読み出す先読み処理を実行したことを示す先読み実行情報を前記リードコマンドに記述することを特徴とする付記１または２記載の情報処理装置。
（付記４）
前記第１の先読み処理判定回路は、先読みリクエスト発行回路の状態に基づいて、前記先読み処理を実行するか否か判定する付記３記載の情報処理装置。
（付記５）
前記スイッチングコントローラは、前記先読み処理を実行するか否か示す制御情報を格納する制御レジスタをさらに備え、
前記第１の先読み処理判定回路は、前記制御情報に基づいて、前記先読み処理を実行するか否か判定する付記３記載の情報処理装置。
（付記６）
前記スイッチングコントローラは、前記コマンド検出回路、前記コマンド加工回路、または前記リクエスト発行回路の動作または出力データのエラーを検出するエラーチェック回路をさらに備え、
前記第１の先読み処理判定回路は、前記エラーチェック回路の検出結果に基づいて、前記先読み処理を実行するか否か判定する付記３記載の情報処理装置。
（付記７）
前記スイッチングコントローラは、
前記第１の先読み処理判定回路が前記先読み処理を実行すると判定した場合、前記加工されたリードコマンドを出力し、前記第１の先読み処理判定回路が前記先読み処理を実行しないと判定した場合、前記リードコマンドを出力するセレクタをさらに備えることを特徴とする付記３乃至６のいずれか１項に記載の情報処理装置。
（付記８）
前記情報処理装置は前記デバイスをさらに備え、
前記デバイスは、
受信したリードコマンドをチェックし、前記一部のデータを要求する先読み処理が実行されたか否か判定する第２の先読み処理判定回路と、
前記先読み処理が実行されたと判定された場合、前記受信したリードコマンドで指定されたデータの内の前記一部のデータ以外のデータを要求する他のリードリクエストを生成し、前記他のリードリクエストを前記スイッチングコントローラに送信するリクエスト発行回路と、
を備えることを特徴とする付記１乃至７のいずれか１項に記載の情報処理装置。
（付記９）
デバイスへリードコマンドを発行する処理装置と、データを格納するメモリと、前記処理装置、前記メモリ、および前記デバイスと接続するスイッチングコントローラと、を備える情報処理装置が実行する制御方法であって、
前記処理装置から発行された前記リードコマンドを検出し、
前記リードコマンドを加工し、
加工されたリードコマンドを前記デバイスに出力し、
前記リードコマンドで指定されたデータの内の少なくとも一部のデータを要求するリードリクエストを生成し、
前記リードリクエストを前記メモリに送信し、
前記メモリから前記一部のデータを受信し、
前記一部のデータを前記デバイスに送信する
ことを特徴とする制御方法。
（付記１０）
前記情報処理装置は、前記デバイスをさらに備え、
前記デバイスは、
受信したリードコマンドをチェックし、
前記一部のデータを要求する先読み処理が実行されたか否か判定し、
前記先読み処理が実行されたと判定された場合、前記受信したリードコマンドで指定されたデータの内の前記一部のデータ以外のデータを要求する他のリードリクエストを生成し、
前記他のリードリクエストを前記スイッチングコントローラに送信する
ことを特徴とする付記９記載の制御方法。
【符号の説明】
【０２００】
１１    システム
１２    ＣＰＵ
１３    スイッチングコントローラ
１４    メモリ
１５    デバイス
１０１    システム
２０１    ＰＣ
２０２    ＣＰＵ
２０３    メモリ
２０４    スイッチングコントローラ
２１１    コマンド検出回路
２２１    コマンド加工回路
２３１    先読みリクエスト発行回路
２４１、２４２    セレクタ
３０１    デバイス
３１１    先読み判定回路
３２１    リクエスト発行回路
１１０１    システム
１２０１    ＰＣ
１２０２    ＣＰＵ
１２０３    メモリ
１２０４    スイッチングコントローラ
１２１１    コマンド検出回路
１２２１    コマンド加工回路
１２３１    先読みリクエスト発行回路
１２３２    読み出しアドレスレジスタ
１２３３    リードリクエスト生成回路
１２４１、１２４２    セレクタ
１２５１    リードコマンド
１２５２    加工リードコマンド
１３０１    デバイス
１３１１    先読み判定回路
１３２１    リクエスト発行回路
１３２２、１３２３    レジスタ
１３２４  セレクタ
１３２５  リードリクエスト生成回路
１３３１  データ受信回路
２１０１    システム
２２０１    ＰＣ
２２０２    ＣＰＵ
２２０３    メモリ
２２０４    スイッチングコントローラ
２２１１    コマンド検出回路
２２３１    先読みリクエスト発行回路
２２３２    読み出しアドレスレジスタ
２２３３    リードリクエスト生成回路
２２４２    セレクタ
２２５１    リードコマンド
２３０１    デバイス
２３１１    先読み判定回路
２３２１    リクエスト発行回路
２３２２、２３２３    レジスタ
２３２４  セレクタ
２３２５  リードリクエスト生成回路
２３３１  データ受信回路
３１０１    システム
３２０１    ＰＣ
３２０２    ＣＰＵ
３２０３    メモリ
３２０４    スイッチングコントローラ
３２１１    コマンド検出回路
３２１２    先読み判定回路
３２３１    先読みリクエスト発行回路
３２３２    読み出しアドレスレジスタ
３２３３    リードリクエスト生成回路
３２３４    読み出し長レジスタ
３２４１、３２４２    セレクタ
３２５１    リードコマンド
３２６１    制御レジスタ
３２７１    エラーチェック回路
３３０１    デバイス
３３１１    先読み判定回路
３３２１    リクエスト発行回路
３３２２、３３２３    レジスタ
３３２４  セレクタ
３３２５  リードリクエスト生成回路
３３３１  データ受信回路
【図１】
0005887970.tif 000002
【図３】
0005887970.tif 000003
【図４】
0005887970.tif 000004
【図５】
0005887970.tif 000005
【図７】
0005887970.tif 000006
【図８】
0005887970.tif 000007
【図９】
0005887970.tif 000008
【図１０】
0005887970.tif 000009
【図１４】
0005887970.tif 000010
【図１５】
0005887970.tif 000011
【図１６】
0005887970.tif 000012
【図１７】
0005887970.tif 000013
【図１８】
0005887970.tif 000014
【図１９】
0005887970.tif 000015
【図２０】
0005887970.tif 000016
【図２１】
0005887970.tif 000017
【図２２】
0005887970.tif 000018
【図２】
0005887970.tif 000019
【図６】
0005887970.tif 000020
【図１１】
0005887970.tif 000021
【図１２】
0005887970.tif 000022
【図１３】
0005887970.tif 000023