JP2005275473A - メモリコントロールアダプタ - Google Patents
メモリコントロールアダプタ Download PDFInfo
- Publication number
- JP2005275473A JP2005275473A JP2004083685A JP2004083685A JP2005275473A JP 2005275473 A JP2005275473 A JP 2005275473A JP 2004083685 A JP2004083685 A JP 2004083685A JP 2004083685 A JP2004083685 A JP 2004083685A JP 2005275473 A JP2005275473 A JP 2005275473A
- Authority
- JP
- Japan
- Prior art keywords
- buffer
- read
- data
- control
- storage device
- 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
Links
Images
Landscapes
- Bus Control (AREA)
- Information Transfer Systems (AREA)
Abstract
【課題】 アクセスレイテンシの増加を抑制することが可能なメモリコントロールアダプタを提供することを目的とする。
【解決手段】 アップロード方向のダイレクトメモリアクセス開始の際、CPUがバッファメモリ14のどの位置からデータを取り出すか指定する、リードポインタレジスタを設定する。このリードポイントレジスタの設定は、PCIバスからI/F変換/解析部22を介してレジスタ群16に設定されるが、この時、I/F変換/解析部22によってバッファ制御部24にも格納する。そして、リードポインタレジスタに基づいて、バッファメモリ14からリードバッファ26にデータを先読みし、その後、CPUからコントロールレジスタがレジスタ群に設定されたところで、リードバッファ26からインタフェースコントローラ12にデータを渡す。
【選択図】 図1
【解決手段】 アップロード方向のダイレクトメモリアクセス開始の際、CPUがバッファメモリ14のどの位置からデータを取り出すか指定する、リードポインタレジスタを設定する。このリードポイントレジスタの設定は、PCIバスからI/F変換/解析部22を介してレジスタ群16に設定されるが、この時、I/F変換/解析部22によってバッファ制御部24にも格納する。そして、リードポインタレジスタに基づいて、バッファメモリ14からリードバッファ26にデータを先読みし、その後、CPUからコントロールレジスタがレジスタ群に設定されたところで、リードバッファ26からインタフェースコントローラ12にデータを渡す。
【選択図】 図1
Description
本発明は、メモリコントロールアダプタにかかり、特に、CPU(Central Processing Unit)等の中央処理装置、CPUに接続される外部装置、及びメモリバッファ等の外部記憶装置等のそれぞれに対するインタフェース機能を備えたインタフェースコントローラとCPU間に接続され、外部記憶装置が接続されるメモリコントロールアダプタに関する。
一般的に、DRAM等のメモリへのデータ書き込みやデータ読み出しは、非特許文献1に記載のように、DRAMコントローラ等のインタフェースコントローラで行われるようになっている。
インタフェースコントローラは、それを制御するCPUのバスに直接接続されることが多かった。例として、MC68030を用いたシステムの一例を図6に示す。
図6のインタフェースコントローラ(IFC)42は、ダイレクトメモリアクセス(DMA)等の機能を備えた外部装置40のインタフェースコントローラであり、インタフェースコントローラ42にはバッファメモリ(例えばSRAM:Static Random Access MemoryやDRAM:Dynamic Random Access Memory等)14が接続され、ダイレクトメモリアクセスを行ったデータの一次保管などに使用される。
インタフェースコントローラ42のCPUインタフェースは、MC68030のCPUバスプロトコルに準拠しており、MC68030バスにて直接制御される。
CPU44は、インタフェースコントローラ42内のレジスタ設定にて、バッファメモリ内のアドレスにデータを格納するかを指定し、ダイレクトメモリアクセスの制御を行う。また、バッファメモリに格納されたデータは、インタフェースコントローラ42のCPUインタフェースを経由して読み出しや書き込みを行う。
近年では、CPUバスの高速化に伴い、CPUバスに直接ターゲットデバイスを接続できるシステムは少なくなり、図7に示すような、ホストPCIブリッジ(Host-PCI Bridge)46を経由して、PCIバスインタフェースでターゲットデバイスを接続するシステムが一般的となってきている。図7は、ホストPCIブリッジを経由して、PCIインタフェースでターゲットデバイスを接続するシステムにおいて、CPU44としてMPC750を用いた一例を示す。
この場合、インタフェースコントローラ42とPCIバス間にPCIアダプタ(PCIADP)48を接続して、インタフェース変換を行う。但し、このような構成は部品点数が多くなり、実装やコスト面で不利となるため、最終的にはインタフェースコントローラ42をPCIアダプタ48が吸収できるように、バッファメモリ14はPCIアダプタ48の方に接続するような場合がある。
また、PCIアダプタ48にバッファメモリ14を接続することにより、PICバスからPCIアダプタ48を経由して、インタフェースコントローラ42を経由せずに直接バッファメモリへアクセスすることも可能となるため、バッファメモリへのアクセスが高速化が可能となる。
特に、PCIアダプタ48のような即席の設計が必要なハードウエアは、ほとんどの場合FPGA(Field Programmable Gate Array)で設計されるため、基板を作り替えずにFPGAのデータを書き換えることによって、インタフェースコントローラ42の機能をPCIアダプタ48に統合するよう設計するのが一般的である。
大島 篤著 「見てわかるパソコン解体新書」、第1版、ソフトバンクパブリッシング株式会社、2000年7月20日、p52−53
大島 篤著 「見てわかるパソコン解体新書」、第1版、ソフトバンクパブリッシング株式会社、2000年7月20日、p52−53
ところで、PCIアダプタ48にバッファメモリ14を接続した場合、CPUからのバッファメモリへのアクセスの最も簡単な構成は、インタフェースコントローラ42からのアドレス及びデータを、図8に示すように、PCIアダプタを単純にスルーする形となる。しかしながら、間に挟まるバスバッファにより、信号の遅延が増加し、リード及びライトのアクセスレイテンシの増加を招く、という問題がある。
また、単純にスルーするだけではなく、アドレス及びデータをPCIアダプタ48の内部にて、フリップフロップ(Flip-Flop)で一段受けて、中継する構成をとることもできるが、この場合でも、ライトのアクセスレイテンシの増加は抑えられるものの、リードのアクセスレイテンシの増加を抑えることができない、という問題がある。
このように、インタフェースコントローラとバッファメモリの間にPCIアダプタを挟む場合には、一般的にはインタフェースコントローラからバッファメモリへのリードアクセスレイテンシが増加する。あるいはインタフェースコントローラが、バッファメモリへのアクセス速度の調整ができない仕様の場合には、このリードアクセスレイテンシの増加は致命的となる。
本発明は、上記問題を解決すべく成されたもので、アクセスレイテンシの増加を抑制することが可能なメモリコントロールアダプタを提供することを目的とする。
上記目的を達成するために請求項1に記載の発明は、各種データ処理を行う中央処理装置、外部接続される外部装置、及びデータを格納する外部記憶装置のそれぞれに対するインタフェース機能備えたインタフェースコントローラと前記中央処理装置間に接続され、前記外部記憶装置が接続されたメモリコントロールアダプタであって、前記外部記憶装置から読み出したデータを一時保管するリードバッファと、前記外部記憶装置から前記リードバッファへのデータ格納及び読み出しを制御するバッファ制御部と、前記中央処理装置から前記インタフェースに送出される情報に対する制御を行う制御手段と、を備え、前記制御手段が、前記中央処理装置から前記インタフェースコントローラに送出される、前記外部記憶装置に格納されたデータの読み出すアドレスを表すリード情報を取得し、前記バッファ制御手段が、前記リード情報に基づいて前記外部記憶装置から前記リードバッファにデータを先読みするように制御し、前記リード情報の送出後に前記中央処理装置から前記インタフェースコントローラを介して送出される、前記外部記憶装置からのデータ読み出し開始を表すコントロール情報に基づいて、前記リードバッファから前記インタフェースコントローラにデータ転送することを特徴としている。
請求項1に記載の発明によれば、メモリコントロールアダプタは、メモリバッファ等の外部記憶装置から読み出したデータを一時保管するリードバッファと、リードバッファへのデータ格納及び読み出しを制御するバッファ制御部と、CPU等の中央処理装置からインタフェースコントローラに送出される情報に対する制御を行う制御手段と、を備えている。
そして、インタフェースコントローラに中央処理装置から設定されるリードポインタレジスタ等のリード情報が制御手段によって取得される。
また、バッファ制御手段によって、取得されたリード情報に基づいてバッファメモリからリードバッファに読み出し対象のデータが先読みされるように制御される。
そして、インタフェースコントローラにリード情報の送出後にCPUから設定されるコントロールレジスタ等のコントロール情報に基づいて、リードバッファに格納されたデータがインタフェースコントローラにデータ転送される。
すなわち、転送対象のデータが予めリードバッファに格納されるので、インタフェースコントローラに外部記憶装置が直接接続されているようにデータ転送を行うことができる。従って、外部記憶装置からのデータリード時のアクセスレイテンシ増加を抑制することができる。
例えば、請求項2に記載の発明のように、外部記憶装置に格納されたデータの外部装置への転送を行う際に、制御手段がリード情報を取得して、バッファ制御手段がリード情報に基づいてリードバッファにデータを先読みするように制御し、コントロール情報に基づいてリードバッファからインタフェースコントローラを介して外部装置へデータ転送するようにしてもよいし、請求項3に記載の発明のように、中央処理装置が外部記憶装置に格納されたデータの読み出しを行う際に、制御手段がリード情報を取得して、バッファ制御手段がリード情報に基づいてリードバッファにデータを先読みするように制御し、コントロール情報に基づいてリードバッファからインタフェースコントローラを介して中央処理装置にデータ転送するようにしてもよい。
また、中央処理装置が外部記憶装置に格納されたデータの読み出しを行う際には、請求項4に記載の発明のように、制御手段がリード情報及びコントロール情報を取得して、バッファ制御手段がリード情報に基づいて外部記憶装置に格納されたデータを読み出し、コントロール情報に基づいて中央処理装置に直接データ転送するようにしてもよい。すなわち、インタフェースコントローラを介在しないでデータ転送を行うようにしてもよく、これによっても、外部記憶装置からのデータリード時のアクセスレイテンシ増加を抑制することができる。
なお、制御手段は、請求項5に記載の発明のように、リードバッファへのデータ格納が完了するまで、コントロール情報のインタフェースコントローラへの送出を遅延することで、リードバッファへのデータ格納完了とリードバッファに格納されたデータの読み出し開始との同期を取ることができ、アクセス速度の違いによって発生する問題を解消することができる。
また、メモリコントロールアダプタは、請求項6に記載の発明のように、外部記憶装置に格納するデータを一時格納するライトバッファと、外部記憶装置からデータを読み出す際に、ライトバッファに転送対象のデータが格納されているか否かを判定する判定手段を更に備えて、判定手段によって転送対象のデータがライトバッファに格納されていると判定された場合に、バッファ制御手段がライトバッファに格納された転送対象のデータをリードバッファに書き込むように制御するようにしてもよい。これによってダウンロード直後等のように未だライトバッファにデータが残っている状態で、アップロード等のデータ読み出しが行われた時でも直ぐに外部記憶装置からデータを読み出すことができ、アクセスレイテンシ増加を抑制することができる。
以上説明したように本発明によれば、メモリコントロールアダプタにリードバッファを設けて先読みするように制御することで、アクセスレイテンシの増加を抑制することができる、という効果がある。
以下、図面を参照して本発明の実施の形態の一例を詳細に説明する。
図1は、本発明の実施の形態に係わるメモリコントロールアダプタとしてのPCIアダプタ及びインタフェースコントローラの構成を示すブロック図である。
PCIアダプタ(PCIADP)10及びインタフェースコントローラ(IFC)12は、図7にしたように、CPU44に接続されたホストPCIブリッジ46を介してPCIバスに接続されている。なお、ホストPCIブリッジ46には、ROM43及びRAM45も接続されている。
インタフェースコントローラ12は、後段に接続されるダイレクトメモリアクセス機能等を備えた外部装置40のインタフェースコントローラとして機能し、インタフェースコントローラ12とPCIバスの間にCPUバスを介してPCIアダプタ10が接続され、PCIアダプタ10にメモリバッファ14が接続されている。
インタフェースコントローラ12は、CPU44に対するレジスタ群16を有する。レジスタ群16は、例えば、ダウンロード方向のダイレクトメモリアクセスの際に、バッファメモリ14のどの場所にデータを格納するかを指定するライトポインタレジスタ、バッファメモリ14のどの場所からデータを読み出すかを指定するリードポイントレジスタ、及びダイレクトメモリアクセスの開始や転送方向を指定するコマンドレジスタ等が設定される。
また、インタフェースコントローラ12は、I/F制御部18及びダイレクトメモリアクセス(DMA)制御部20を備えており、I/F制御部18は、後段に接続される外部装置40からのダイレクトメモリアクセス要求に対して、DMA制御部20を制御することによりPCIアダプタ10に接続されたメモリバッファ14へのダイレクトメモリアクセスを制御するようになっている。
なお、インタフェースコントローラ12は、CPUバスからのバッファメモリ14へのアクセス時には、メモリまたはFiFo(First in First out)ポートのように機能する。
PCIアダプタ10は、インタフェース(I/F)変換/解析部22、バッファ制御部24、リードバッファ26、及びライトバッファ28を備えている。
I/F変換/解析部22は、CPU44からインタフェースコントローラ12のレジスタ群16へ設定される、バッファメモリ14の読み出しアドレスを指定するリードポインタレジスタの設定、バッファメモリ14の書き込みアドレスを指定するライトポイントレジスタの設定、及びバッファメモリ14からの読み出し開始及び書き込み開始等を表すコントロールレジスタの設定等を行うと共に、バッファ制御部24の制御等を行う。
バッファ制御部24は、CPU44やDMA制御部20からのバッファメモリ14へのアクセス要求に応じてバッファメモリ14へのデータ書き込みやデータ読込みを行う。この時、バッファ制御部24は、リードバッファ26やライトバッファ28を利用してバッファメモリ14へのデータ書き込みやデータ読込みを行うようになっている。
リードバッファ26は、バッファメモリ14からデータを読み出す際に、リートポインタレジスタの値に対応するデータを一時格納し、ライトバッファ28は、バッファメモリ14にデータを書き込みを行う際に、ライトポインタレジスタの値に書き込むデータを一時格納する。なお、リードバッファ26は、空きができるごとに随時データを先読みするものとする。
例えば、リードバッファ24は、バッファ制御部24の制御によってリードポイントレジスタの値のデータを先読みして格納し、インタフェースコントローラ12のDMA制御部20からバッファメモリ14に読み出し要求がなされたとき、すなわち、CPU44からコントロールレジスタがレジスタ群16に設定されたときに、リードバッファ14に格納したデータを出力する。
また、ライトバッファ28は、コンパレータ機能を備えており、バッファメモリ14へのダウロードが行われた直後にアップロードを行う際に、リードバッファ26が読み出すアドレスのデータが、ライトバッファ28に未だ格納された状態が否かを判定するようになっている。なお、ライトバッファ28のコンパレータ機能は、リードバッファ26側に設けるようにしてもよいし、バッファ制御部24に設けるようにしてもよい。
続いて、上述のように構成されたPCIアダプタ及びインタフェースコントローラの動作について説明する。
図2は、PCIアダプタ10及びインタフェースコントローラ12の動作の流れの一例を示すフローチャートである。
ステップ100では、I/F変換/解析部22によってCPU44からメモリバッファ14へアクセスがなされたか否か判定される。該判定は、CPU44からPCIバスを介してバッファメモリ14からのデータの読込みが指示されたか否かをI/F変換/解析部22が判定することによってなされ、該判定が否定された場合にはステップ102へ移行する。
ステップ102では、アップロードが指示されたか否か判定される。該判定は、I/F変換/解析部22によってCバッファメモリ14に格納されたデータのアップロードがCPU44によって指示されたか、またはバッファメモリ14へデータを格納するダウンロードがCPU44によって指示されたか否かを判定することによってなされ、アップロードが指示された場合に判定が肯定され、ダウンロードが指示された場合に判定が否定される。そして、該判定が肯定された場合には、ステップ104へ移行する。
ステップ104では、CPU44からインタフェースコントローラ12のレジスタ群16に設定されるリードポインタレジスタ設定がI/F変換/解析部22によってバッファ制御部24にも格納され、ステップ106へ移行する。
ステップ106では、バッファ制御部24によって、リードポインタレジスタ設定のアドレスに対応するデータが先読みされ、リードバッファ26に格納される。
次にステップ108では、ダウンロード直後のアップロードか否か判定され、該判定が否定された場合には、ステップ110へ移行する。
ステップ110では、CPU44からレジスタ群16にコントロールレジスタ設定がなされたか否かI/F変換/解析部22によって判定され、該判定が肯定されるまで待機してステップ112へ移行する。
ステップ112では、CPU44から設定されるレジスタ群16へのコントロールレジスタの設定がI/F変換/解析部22によって待機(遅延)され、ステップ114へ移行して、リードバッファ26への格納完了がバッファ制御部24によって監視されて、リードバッファ26へのデータの格納が完了したところで、ステップ114の判定が肯定され、ステップ116へ移行する。
そして、ステップ116では、I/F変換/解析部22によってレジスタ群16へのコントロールレジスタの設定が行われ、ステップ118へ移行する。
ステップ118では、コントロールレジスタ設定がインタフェースコントローラ12のレジスタ群16に設定されることにより、リードバッファ26からのデータの読み出しが開始され、リードバッファ26に格納された先読みされたデータがDMA制御部20の制御によってインタフェースコントローラ12の後段に接続された外部装置40にアップロードされる。
すなわち、アップロード方向のダイレクトメモリアクセスが開始されると、CPU44によって、バッファメモリ14のどの位置からデータを取り出すか指定する、リードポインタレジスタが設定される。この時、リードポインタレジスタの設定は、PCIバスからI/F変換/解析部22を介してインタフェースコントローラ12のレジスタ群16に書き込まれるが、この値はI/F変換/解析部22によって、PCIアダプタ10のバッファ制御部24にも格納され、バッファ制御部24は、リードポインタレジスタへの書き込み値を元にバッファメモリ14からデータを先読みして、リードバッファ26に格納する。
その後、CPU44がダイレクトメモリアクセスを起動するコントロールレジスタを設定すると、ダイレクトメモリアクセスが起動してDMA制御部20の制御によってリードポインタレジスタで指定されるバッファメモリのデータをPCIアダプタ10に対して読み取りにくるが、この時には既に指定の値がリードバッファ26に格納されているため、PCIアダプタ10は即座にデータをインタフェースコントローラ12に渡すことができる。従って、インタフェースコントローラ12とバッファメモリ14の間にPCIアダプタ10を挟むことによる遅延を解消することができる。
また、インタフェースコントローラ12がリードバッファ26からデータを受け取る際には、CPU44からのコントロールレジスタの設定によってダイレクトメモリアクセスが起動開始されてリードバッファ26からDMA制御部20がデータを受け取ってI/F制御部18を介して後段の外部装置40にデータのアップロードが行われるが、この時、リードバッファ26にデータの格納が完了するまで、PCIアダプタ10によってインタフェースコントローラ12のレジスタ群16へのコントロールレジスタの設定が遅延されるので、リードバッファ26へのデータ格納完了とインタフェースコントローラ12のデータ受け取りを同期させることができ、アクセス速度の違いによって発生する問題を解消することができる。
一方、ステップ102の判定が否定、すなわち、ダウンロードがCPU44によって指示された場合には、ステップ120へ移行して、CPU44によってレジスタ群16に設定されるライトポインタレジスタをDMA制御部20からバッファ制御部24が受け取り、ステップ122へ移行して、ダウンロードしたデータがDMA制御部20を介してライトバッファ28に格納される。
そして、ステップ124では、ライトバッファ28にデータの格納が完了したか否かを待ってステップ126へ移行し、ダウンロード終了通知がDMA制御部20になされることで、ダウンロードを終了する。そして、ステップ128へ移行して、バッファ制御部24が受け取ったライトポインタレジスタに対応するバッファメモリ14のアドレスにライトバッファ28に格納したデータが順次格納される。
また、ステップ104の判定が肯定された場合、すなわち、ダウンロード直後のアップロードがCPU44によって指示された場合には、ステップ130へ移行して、ライトバッファ28にダウンロードしたデータがあるか否か判定される。該判定は、ライトバッファ28のコンパレータ機能により、リードバッファ26に格納された先頭アドレスポインタと末尾アドレスポインタを比較することで、リードバッファ26に読み出すデータがライトバッファ28にまだ格納された状態か否かを判定することによってなされる。すなわち、ライトバッファ28にリードバッファ26に読み出す先頭アドレスポインタと末尾アドレスポインタの範囲内のデータがあるか否かを判定し、該判定が否定された場合には、上述のステップ110へ移行して上述の処理が行われる。
ステップ130の判定が肯定された場合、すなわち、ダウンロードするデータが未だライトバッファ28に格納された状態では、ステップ132へ移行して、バッファメモリ14のデータのコヒーレンシを維持するために、サブアップロード処理が行われる。
ここで、上述のバッファメモリ14のデータのコヒーレンシを指示するために行われるサブアップロード処理について詳細に説明する。図3は、サブアップロード処理の流れの一例を示すフローチャートである。
ステップ200では、リードポインタレジスタに対応するデータがライトバッファ28からリードバッファ26に上書きされるようにバッファ制御部24によって制御される。
続いて、ステップ202では、CPU44からレジスタ群16にコントロールレジスタ設定がなされたか否かI/F変換/解析部22によって判定され、該判定が肯定されるまで待機してステップ204へ移行する。
ステップ204では、CPU44から設定されるレジスタ群16へのコントロールレジスタの設定がI/F変換/解析部22によって待機され、ステップ206へ移行して、リードバッファ26への格納完了がバッファ制御部24によって監視されて、リードバッファ26へのデータの格納が完了したところで、ステップ206の判定が肯定され、ステップ208へ移行する。
そして、ステップ208では、I/F変換/解析部22によってレジスタ群16へのコントロールレジスタの設定が行われ、ステップ210へ移行する。
ステップ210では、コントロールレジスタ設定がインタフェースコントローラ12のレジスタ群16に設定されることにより、リードバッファ26からのデータの読み出しが開始され、リードバッファ26に格納された先読みされたデータがDMA制御部20の制御によってインタフェースコントローラ12の後段に接続された外部装置40にアップロードされる。
すなわち、ダウンロード直後にアップロードが指示された場合に、ライトバッファ28にアップロード対象のデータがまだ残っている場合には、ライトバッファ28のデータをリードバッファ26に上書きするようにしているので、ダウンロード直後にまだライトバッファ28にアップロードに対応するデータが格納されていてもアップロードを直ぐに行うことが可能となり、リードアクセスレイテンシ増加を解消することができると共に、バッファメモリ14のデータのコヒーレンシを維持することができる。
ここで、図1のフローチャートに戻って説明する。
ステップ100の判定が肯定、すなわち、CPU44からメモリバッファ14へアクセスが行われた場合(CPU44からメモリバッファ14に格納されたデータの読み出しが行われた場合)には、ステップ134へ移行して、CPUアクセス処理が行われる。
ここで、CPUアクセス処理について詳細に説明する。図4は、CPUアクセス処理の流れの一例を示すフローチャートである。
ステップ300では、I/F変換/解析部22によってCPU44からのリードポインタレジスタがバッファ制御部24に設定される。
そして、ステップ302では、バッファ制御部24に設定されたリードポインタレジスタに対応するデータがバッファ制御部24によって読み出され、I/F変換/解析部22を介してCPU44に出力される。
すなわち、インタフェースコントローラ12を介さずに、CPU44からバッファメモリ14へアクセスすることができ、高速に処理を行うことができる。
図5は、CPUアクセス処理の変形例の一例を示すフローチャートである。図4では、インタフェースコントローラ12を介さずにPCIアダプタ10から直接バッファメモリ14にアクセスするようにしたが、変形例では、インタフェースコントローラ12を介してCPU44からバッファメモリ14にアクセスする場合を示す。
ステップ350では、CPU44からI/F変換/解析部22を介してレジスタ群16にリードポインタレジスタが設定され、ステップ352へ移行する。
ステップ352では、CPU44からインタフェースコントローラ12のレジスタ群16に設定されるリードポインタレジスタ設定がI/F変換/解析部22によってバッファ制御部24にも格納され、ステップ354へ移行する。
ステップ354では、バッファ制御部24によって、リードポインタレジスタ設定のアドレスに対応するデータが先読みされ、リードバッファ26に格納される。
次に、ステップ356では、CPU44からレジスタ群16にコントロールレジスタ設定がなされたか否かI/F変換/解析部22によって判定され、該判定が肯定されるまで待機してステップ358へ移行する。
ステップ358では、CPU44から設定されるレジスタ群16へのコントロールレジスタの設定がI/F変換/解析部22によって待機(遅延)され、ステップ360へ移行して、リードバッファ26への格納完了がバッファ制御部24によって監視されて、リードバッファ26へのデータの格納が完了したところで、ステップ360の判定が肯定され、ステップ362へ移行する。
ステップ362では、I/F変換/解析部22によってレジスタ群16へのコントロールレジスタの設定が行われ、ステップ364へ移行する。
そして、ステップ364では、コントロールレジスタ設定がインタフェースコントローラ12のレジスタ群16に設定されることにより、リードバッファ26からのデータの読み出しが開始され、リードバッファ26に格納された先読みされたデータがDMA制御部24の制御によってCPU44に送出される。
すなわち、上述したインタフェースコントローラ12の後段に接続された外部装置40にアップロードするとき(ステップ104〜118)のように、CPU44からのアクセスについても処理することもでき、これによってもリードアクセスレイテンシ増加を解消することができる。
以上説明したように、本実施形態によれば、PCIアダプタ10にリードバッファ26を設けて、データの先読みを行うようにバッファ制御すると共に、リードバッファ26にデータが格納された時点で読み出しするようにバッファ制御することで、汎用バス(PCIバス)接続するPCIアダプタ10を設計し、インタフェースコントローラ12に接続されていたバッファメモリ14をPCIアダプタ10側に接続する際に発生する、メモリアクセスレイテンシ増加やアクセス速度制限の問題を解消することができる。
10 PCIアダプタ
12 インタフェースコントローラ
14 バッファメモリ
22 I/F変換/解析部
24 バッファ制御部
26 リードバッファ
28 ライトバッファ
12 インタフェースコントローラ
14 バッファメモリ
22 I/F変換/解析部
24 バッファ制御部
26 リードバッファ
28 ライトバッファ
Claims (6)
- 各種データ処理を行う中央処理装置、外部接続される外部装置、及びデータを格納する外部記憶装置のそれぞれに対するインタフェース機能備えたインタフェースコントローラと前記中央処理装置間に接続され、前記外部記憶装置が接続されたメモリコントロールアダプタであって、
前記外部記憶装置から読み出したデータを一時保管するリードバッファと、
前記外部記憶装置から前記リードバッファへのデータ格納及び読み出しを制御するバッファ制御部と、
前記中央処理装置から前記インタフェースに送出される情報に対する制御を行う制御手段と、
を備え、
前記制御手段が、前記中央処理装置から前記インタフェースコントローラに送出される、前記外部記憶装置に格納されたデータの読み出すアドレスを表すリード情報を取得し、
前記バッファ制御手段が、前記リード情報に基づいて前記外部記憶装置から前記リードバッファにデータを先読みするように制御し、前記リード情報の送出後に前記中央処理装置から前記インタフェースコントローラを介して送出される、前記外部記憶装置からのデータ読み出し開始を表すコントロール情報に基づいて、前記リードバッファから前記インタフェースコントローラにデータ転送することを特徴とするメモリコントロールアダプタ。 - 外部記憶装置に格納されたデータの外部装置への転送を行う際に、前記制御手段が前記リード情報を取得し、前記バッファ制御手段が前記リード情報に基づいて前記リードバッファにデータを先読みするように制御して、前記コントロール情報に基づいて前記リードバッファから前記インタフェースコントローラを介して外部装置へデータ転送することを特徴とする請求項1に記載のメモリコントロールアダプタ。
- 前記中央処理装置が外部記憶装置に格納されたデータの読み出しを行う際に、前記制御手段が前記リード情報を取得し、前記バッファ制御手段が前記リード情報に基づいて前記リードバッファにデータを先読みするように制御して、前記コントロール情報に基づいて前記リードバッファから前記インタフェースコントローラを介して前記中央処理装置にデータ転送することを特徴とする請求項1又は請求項2に記載のメモリコントロールアダプタ。
- 前記中央処理装置が外部記憶装置に格納されたデータの読み出しを行う際に、前記制御手段が前記リード情報及び前記コントロール情報を取得し、前記バッファ制御手段が前記リード情報に基づいて前記外部記憶装置に格納されたデータを読み出して、前記コントロール情報に基づいて前記中央処理装置に直接データ転送することを特徴とする請求項1又は請求項2に記載のメモリコントロールアダプタ。
- 前記制御手段は、前記リードバッファへのデータ格納が完了するまで、前記コントロール情報の前記インタフェースコントローラへの送出を遅延することを特徴とする請求項1乃至請求項3の何れか1項に記載のメモリコントロールアダプタ。
- 前記外部記憶装置に格納するデータを一時格納するライトバッファと、前記外部記憶装置からデータを読み出す際に、前記ライトバッファに転送対象のデータが格納されているか判定する判定手段と、を更に備え、前記判定手段によって転送対象のデータが格納されていると判定された場合に、前記バッファ制御部が前記ライトバッファに格納されたデータを前記リードバッファに書き込むように制御することを特徴とする請求項1乃至請求項5の何れか1項に記載のメモリコントロールアダプタ。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004083685A JP2005275473A (ja) | 2004-03-22 | 2004-03-22 | メモリコントロールアダプタ |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004083685A JP2005275473A (ja) | 2004-03-22 | 2004-03-22 | メモリコントロールアダプタ |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2005275473A true JP2005275473A (ja) | 2005-10-06 |
Family
ID=35175127
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004083685A Pending JP2005275473A (ja) | 2004-03-22 | 2004-03-22 | メモリコントロールアダプタ |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2005275473A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2015512097A (ja) * | 2012-02-15 | 2015-04-23 | シリコン イメージ,インコーポレイテッド | 複数のブリッジ要素を介する装置間の通信ブリッジ |
CN109154916A (zh) * | 2016-08-22 | 2019-01-04 | 惠普发展公司,有限责任合伙企业 | 连接的设备的信息 |
-
2004
- 2004-03-22 JP JP2004083685A patent/JP2005275473A/ja active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2015512097A (ja) * | 2012-02-15 | 2015-04-23 | シリコン イメージ,インコーポレイテッド | 複数のブリッジ要素を介する装置間の通信ブリッジ |
CN109154916A (zh) * | 2016-08-22 | 2019-01-04 | 惠普发展公司,有限责任合伙企业 | 连接的设备的信息 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9021146B2 (en) | High priority command queue for peripheral component | |
US8396994B1 (en) | Command queue for peripheral component | |
US6782463B2 (en) | Shared memory array | |
US9904622B2 (en) | Control method for non-volatile memory and associated computer system | |
JP2010146084A (ja) | キャッシュメモリ制御部を備えるデータ処理装置 | |
US10095640B2 (en) | Multi mode address spaces for PC to device transfer optimization | |
US9128924B2 (en) | Method and apparatus for wireless broadband systems direct data transfer | |
JP2005275473A (ja) | メモリコントロールアダプタ | |
US6829692B2 (en) | System and method for providing data to multi-function memory | |
JP2011070259A (ja) | データ転送装置及びデータ転送方法 | |
JP4431492B2 (ja) | 複数のコヒーレンシー・グラニュールをサポートするデータ転送ユニット | |
JP2005235199A (ja) | Cpuとfifoとの間のバーストモードデータ転送のための方法及び装置 | |
JP6381270B2 (ja) | 情報処理装置、情報処理方法、システム | |
WO2016070431A1 (zh) | 内存访问方法、装置和计算机设备 | |
JP2009059155A (ja) | Usbホストコントローラ装置 | |
JP4560398B2 (ja) | データ処理回路 | |
JP2001229074A (ja) | メモリ制御装置と情報処理装置及びメモリ制御チップ | |
KR20150034493A (ko) | 캐시를 이용한 데이터 복사 방법 및 그 장치 | |
JP2019200592A (ja) | メモリ制御回路、出力回路、メモリ制御回路の制御方法および出力回路の制御方法 | |
JP2004240520A (ja) | ノンキャッシュ領域内高速メモリアクセス方法 | |
JP2004280677A (ja) | バス制御装置及びそのデータアクセス制御方法 | |
JP2002334053A (ja) | データ転送制御装置 | |
JP2005128931A (ja) | Dma転送装置 | |
JP2003271547A (ja) | データ転送装置 | |
JP2002073413A (ja) | メモリアクセス装置 |