JP6476655B2 - データ転送制御装置 - Google Patents

データ転送制御装置 Download PDF

Info

Publication number
JP6476655B2
JP6476655B2 JP2014172064A JP2014172064A JP6476655B2 JP 6476655 B2 JP6476655 B2 JP 6476655B2 JP 2014172064 A JP2014172064 A JP 2014172064A JP 2014172064 A JP2014172064 A JP 2014172064A JP 6476655 B2 JP6476655 B2 JP 6476655B2
Authority
JP
Japan
Prior art keywords
data
module
dmac
storage device
dma controller
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.)
Expired - Fee Related
Application number
JP2014172064A
Other languages
English (en)
Other versions
JP2016045899A (ja
Inventor
嵯峨 嘉孝
嘉孝 嵯峨
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.)
Ricoh Co Ltd
Original Assignee
Ricoh Co Ltd
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 Ricoh Co Ltd filed Critical Ricoh Co Ltd
Priority to JP2014172064A priority Critical patent/JP6476655B2/ja
Priority to US14/823,613 priority patent/US9875199B2/en
Publication of JP2016045899A publication Critical patent/JP2016045899A/ja
Application granted granted Critical
Publication of JP6476655B2 publication Critical patent/JP6476655B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Bus Control (AREA)

Description

本発明は、データ転送制御装置に関する。
近年、PC(Personal Computer)や画像形成装置等の情報処理装置と、その情報処理装置に接続されて使用される周辺I/O(Input/Output)デバイスとの間におけるデータ通信の高速化や、データ処理の高速化のために、バスに接続されたFIFO(First In First Out)を介してデータのやり取りを行う構成が提案されている(例えば、特許文献1を参照)。また、CPU(Central Proccessing Unit)を介さずに、周辺I/Oデバイスとメモリ間、若しくは、周辺I/Oデバイス同士の間で、直接データ転送を行なうために、機能モジュール毎にマスター型のDMAC(Direct Memory Access Controller:DMAコントローラ)を備える構成が提案されている。
周辺I/Oデバイスには、例えば、HDD(Hard Disc Drive)やSSD(Solid State Drive)、USB(Universal Serial Bus)メモリ、SD(Secure Digital)メモリカード、PCIe(Peripheral Components Interconnect Express)をインタフェースとして接続される拡張カード等が挙げられる。また、データ処理には、例えば、画像処理、データ圧縮処理、データ伸長処理、データ暗号化処理、データ復号処理などが挙げられる。
上記のようなDMAコントローラは通常、モジュールに内蔵されて使用されるが、そのDMAコントローラ(以下、「内蔵DMAコントローラ」とする)に備えられていない独自の機能を使用したい場合、その機能を備える独自のDMAコントローラ(以下、「独自DMAコントローラ」とする)を併存して使用する必要がある。
そうした場合、内蔵DMAコントローラ及び独自DMAコントローラは共にマスターとして動作するため、両者間でデータ転送を行うためには、スレーブであるメモリを介する必要がある。このとき、一方のDMAコントローラが一旦、転送対象のデータを全てメモリに書き込み、その後に、もう一方のDMAコントローラが上記メモリから転送順にデータを読み出すといった制御が必要になる。そのため、メモリアクセス回数やメモリ使用量の浪費になり、非効率な制御となってしまう。尚、このような問題は、モジュールに内蔵されたDMAコントローラの他に、所定のモジュールに対応して構成されたDMAコントローラについても同様に起こり得る問題である。
本発明は、このような課題を解決するためになされたものであり、所定のモジュールに対応して構成されたDMAコントローラと所定の機能を実現するために構成されたDMAコントローラとを併用する場合において効率的な制御を実現することを目的とする。
上記課題を解決するために、本発明の一態様は、異なるモジュール間でのデータ転送を制御するデータ転送制御装置であって、所定のモジュールに対応して構成されたモジュール対応DMAコントローラと、前記モジュール対応DMAコントローラとは異なる機能を実現する機能対応DMAコントローラと、前記データ転送のためのデータバスに接続され、当該データバスを介して入力された順にデータを出力する一時記憶装置と、を備え、前記モジュール対応DMAコントローラは、前記所定のモジュールから取得したデータを取得した順に前記一時記憶装置に入力し、前記一時記憶装置は、前記モジュール対応DMAコントローラにより入力された前記所定のモジュールから取得されたデータを入力された順に前記機能対応DMAコントローラに出力し、若しくは、前記機能対応DMAコントローラは、前記所定のモジュールに転送するべきデータを前記一時記憶装置に入力し、前記一時記憶装置は、前記機能対応DMAコントローラにより入力された前記所定のモジュールに転送するべきデータを入力された順に前記モジュール対応DMAコントローラに出力し、前記モジュール対応DMAコントローラは、前記一時記憶装置から出力された前記所定のモジュールに転送するべきデータを出力された順に前記所定のモジュールに転送し、前記一時記憶装置は、データの入力用と出力用からなる二つのインターフェースを介して前記データバスに接続されていて、当該データバスに接続されているマスターインターフェースを備えた前記所定のモジュールからアクセスすることができ、前記インターフェースのうち出力用であるデータ送信用スレーブインターフェースは、当該一時記憶装置に記憶されているデータを、前記所定のモジュールのうち、受信機能を備えたマスターインターフェースを備えるモジュールに対して出力するインターフェースであり、前記インターフェースのうちの入力用であるデータ受信用スレーブインターフェースは、当該一時記憶装置に記憶されているデータを、前記所定のモジュールのうち、送信機能を備えたマスターインターフェースを備えるモジュールから入力するインターフェースである、ことを特徴とする。
本発明によれば、所定のモジュールに対応して構成されたDMAコントローラと所定の機能を実現するために構成されたDMAコントローラとを併用する場合において効率的な制御を実現することができる。
本発明の実施形態に係る画像形成装置のハードウェア構成を模式的に示すブロック図である。 本発明の実施形態に係る情報処理装置におけるメモリのデータ構造を模式的に示す図である。 本発明の実施形態に係る画像記憶領域に記憶されている2次元画像データの画素情報とメモリアドレスとの関係を示す図である。 本発明の実施形態に係る独自仕様DMACが2次元DMA転送によりメモリから画像データをリードする際のディスクリプタ設定を説明するための図である。 本発明の実施形態に係る独自仕様DMACが2次元DMA転送によりメモリに画像データをライトする際のディスクリプタ設定を説明するための図である。 本発明の実施形態に係る情報処理装置において、独自仕様DMACと規格準拠DMACとがFIFOを介して行うデータ転送に先だってその準備を行う際の処理を説明するためのシーケンス図である。 本発明の実施形態に係る情報処理装置において、独自仕様DMACと規格準拠DMACとがFIFOを介してメモリから画像データをリードしてHDDにライトする際の処理を説明するためのシーケンス図である。 本発明の実施形態に係る情報処理装置において、独自仕様DMACと規格準拠DMACとがFIFOを介してメモリから画像データをリードしてHDDにライトする際の処理を説明するためのシーケンス図である。 本発明の実施形態に係る情報処理装置において、独自仕様DMACと規格準拠DMACとがFIFOを介してメモリから画像データをリードしてHDDにライトする際の処理を説明するためのシーケンス図である。 本発明の実施形態に係る情報処理装置において、独自仕様DMACと規格準拠DMACとがFIFOを介してHDDから画像データをリードしてメモリにライトする際の処理を説明するためのシーケンス図である。 本発明の実施形態に係る情報処理装置において、独自仕様DMACと規格準拠DMACとがFIFOを介してHDDから画像データをリードしてメモリにライトする際の処理を説明するためのシーケンス図である。 本発明の実施形態に係る情報処理装置において、独自仕様DMACと規格準拠DMACとがFIFOを介してHDDから画像データをリードしてメモリにライトする際の処理を説明するためのシーケンス図である。
以下、図面を参照して、本発明の実施形態を詳細に説明する。本実施形態においては、データ転送制御装置として、規格で仕様が規定されていない独自仕様DMAC(Direct Memory Access Controler:DMAコントローラ)と、規格で仕様が規定されている規格準拠DMACとが、FIFO(First In First Out)を介して、メモリとHDD(Hard Disc Drive)との間でデータ転送を行うPC(Personal Cmputer)や画像形成装置等の情報処理装置を例として説明する。
この独自仕様DMACと規格準拠DMACとは機能が異なり、独自仕様DMACは、規格準拠DMACにはない、2次元DMA転送機能やディスクリプタチェイン等の機能を備える。即ち、本実施形態においては、規格準拠DMACがモジュール対応DMACとして機能し、独自仕様DMACが機能対応DMACとして機能する。このように構成された情報処理装置1において、本実施形態に係る要旨の一つは、規格準拠DMACと独自仕様DMACとを併用する場合において効率的な制御を実現することにある。
まず、本実施形態に係る情報処理装置1のハードウェア構成について図1を参照して説明する。図1は、本実施形態に係る情報処理装置1のハードウェア構成を模式的に示すブロック図である。
図1に示すように、本実施形態に係る情報処理装置1は、独自仕様DMAC10、FIFO20、SATA(Serial Advanced Technology Attachment)制御部30、メモリ40、CPU(Central Processing Unit)50、HDD60、高速バス71、低速バス72、アドレス制御部80を備える。
FIFO20は、先に記憶したデータから順番にデータを取り出すことができる一時記憶装置で、データ入力用とデータ出力用の2つのスレーブインターフェースで高速バス71に接続されており、バスに接続されているマスターインターフェースを備えた任意のモジュールからアクセスすることができる。
FIFO20は、独自仕様DMAC10が出力する制御信号である疑似応答要求のアサートを検知すると、疑似応答を開始する。FIFO20は、疑似応答時、マスターインターフェースから送信要求があった場合には、FIFO20の状態に関わらず、即ち、空であっても、疑似データを送信する。一方、FIFO20は、疑似応答時、マスターインターフェースから受信要求があった場合には、FIFO20の状態に関わらず、即ち、満杯の状態であっても、データを受信し、受信したデータを記憶することなく破棄する。
ここで、本実施形態に係るFIFO20がこのように、疑似応答時、マスターインターフェースから送信要求があった場合、空でも疑似データを送信し、マスターインターフェースから受信要求があった場合、満杯でもデータを受信する理由について説明する。
HDD60等のストレージデバイスはセクター単位でのアクセスが必要であるため、規格準拠DMAC31のデータ転送量がセクタサイズの整数倍である。これに対し、独自仕様DMAC10のデータ転送サイズは1画素単位で設定可能である。そのため、規格準拠DMACと独自DMACとの間でデータ転送量の差が発生する。従って、本実施形態に係る情報処理装置1は、このときに上述したような疑似応答を実行することで、データ転送を正常に完了させるようになっている。
即ち、情報処理装置は、仮に疑似応答を実行しない場合、FIFO20に対するデータの送信要求に対して、FIFO20にデータが入力されるのを待ち続けることになる。また、情報処理装置は、仮に疑似応答を実行しない場合、FIFO20に対する受信要求に対して、FIFO20に空きができるまで待ち続けることになる。そこで、本実施形態に係る情報処理装置1、上述したような疑似応答を実行することでデータ転送を正常に完了させるようになっている。本実施形態に係る情報処理装置1は、このことを要旨の一つとしている。
データ送信用スレーブインターフェース21は、FIFO20に記憶してあるデータを、受信機能を備えた任意のマスターインターフェースへ送信する。受信機能を備えたマスターインターフェースを持つモジュールは、送信用スレーブインターフェース21に割り当てられたアドレスに対してリード動作を実行することで、FIFO20に記憶してあるデータを取得することができる。
データ受信用スレーブインターフェース22は、送信機能を備えた任意のマスターインターフェースから送信されたデータを受信する。このとき受信されたデータはFIFO20に記憶される。送信機能を備えたマスターインターフェースを持つモジュールは、受信用スレーブインターフェース22に割り当てられたアドレスに対してライト動作を実行することで、FIFO20へのデータ入力を実施することができる。
スレーブインターフェース21及び22は、データバス幅128bitで高速バス71に接続される。また、FIFO20の記憶容量は、8バースト動作×2回分=8×128bit×2=2048bit=256Byteとする。ここで、8バースト動作の転送サイズ(8×128bit)は、FIFO20を最も高い頻度で使用するSATA制御部30内部の規格準拠DMAC31の1回のバースト転送サイズである。FIFO20は、このように構成されることで、FIFO20にデータがライトされる速度と、FIFO20からデータがリードされる速度が同等である場合に、最小限の記憶容量でデータ転送速度を維持することが可能となる。
高速バス71は、任意のマスターインターフェースを備えたモジュールと、任意のスレーブインターフェースを備えたモジュール間のデータ転送を仲介する。この高速バス71に接続された複数組のマスターモジュール/スレーブモジュール間のデータ転送は、並行して実行され得る。本実施形態に係る高速バス71の帯域は、数GByte/Sの帯域が想定されている。
低速バス72は、各機能モジュールの設定情報等の高速な転送を必要としないデータの送受信で使用され、任意のマスターインターフェースを備えたモジュールと、任意のスレーブインターフェースを備えたモジュール間のデータ転送を仲介する。この高速バス71に接続された1組のマスターモジュール/スレーブモジュール間でデータ転送中である場合には、他のマスターモジュール/スレーブモジュール間でデータ転送を実行することはできない。本実施例では、数十MByte/Sの帯域を想定している。
CPU50は、各機能モジュールの動作を設定し、システムのメイン制御を実行する。また、CPU50は、データ送受信用のマスターインターフェース51を通して、バスに接続された任意のスレーブインターフェースを持つモジュールにアクセスすることができる。CPU50は、各スレーブインターフェースには、スレーブモジュールの仕様に応じたアドレス範囲、または、特定アドレス値が割り当てられており、このアドレスを指定することで、所望のスレーブモジュールにアクセスすることができる。
独自仕様DMAC10は、規格で仕様が規定されていない独自に設計・開発され、若しくは、独自に調達されたDMACである。この独自仕様DMAC10は、データ入力用のマスターインターフェース12とデータ出力用のマスターインターフェース13とで高速バス71に接続されており、バスに接続されているスレーブインターフェースを備えた任意のモジュールに対してアクセスすることができる。
また、独自仕様DMAC10は、データ送信用のマスターインターフェース12を通して、任意の受信用スレーブインターフェースを持つモジュールにライトすることができる。また、独自仕様DMAC10は、データ受信用のマスターインターフェース13を通して、任意の送信用スレーブインターフェースを持つモジュールからデータをリードすることができる。
また、独自仕様DMAC10は、2次元DMA転送機能を備えており、メモリ40とHDD60との間で、2次元画像として記憶しされている2次元画像データを転送する際、その全てを転送するのではなく、選択された特定の矩形領域のみを転送することができる。この2次元DMA転送機能の詳細については、図3〜図5にて説明する。
また、独自仕様DMAC10は、データ転送が完了すると、疑似応答要求をアサートすることで、FIFO20に対して疑似応答を要求する。独自仕様DMAC10のディスクリプタアドレス等の各種設定は、低速バス72に接続されたデータ送受信用スレーブインターフェース11を通してCPU50により設定される。
メモリ40は、HDD60からリードしたCPU50の動作プログラムを記憶し、若しくは、CPU50の処理したデータを記憶する等、各機能モジュールの作業領域として使用される主記憶装置である。データ送受信用のスレーブインターフェース41には、メモリ40の容量に応じたアドレス範囲が割り当てられており、バスに接続された任意のマスターインターフェースを持つモジュールは、このアドレスを指定することで、メモリ40にアクセスすることができる。
SATA制御部30は、データ送受信用のマスター型の規格準拠DMAC31が内蔵されている。また、SATA制御部30は、SATA規格に準拠したデバイスを制御するためのSATAホストコントローラ機能を備え、HDD60へのデータライト/データリードを実行する。SATAのコマンド設定や、HDD60のステータス情報の取得は、低速バス72に接続された送受信用のスレーブインターフェース32を通して、CPU50により実行される。
規格準拠DMAC31は、規格で仕様が規定されたDMACである。この規格準拠DMAC31は、マスターインターフェース33を通して高速バス71に接続され、スレーブインターフェースを持つ任意のモジュールにアクセスすることができる。規格準拠DMAC31のリード対象スレーブモジュール、ライト対象スレーブモジュール、転送データサイズ等の各種設定は、スレーブインターフェース32を通してCPU50により設定される。
アドレス制御部80は、規格準拠DMAC31がFIFO20にアクセスする場合には、アドレスを固定することで、インクリメントしないようにする。
HDD60は、SATA規格に準拠したストレージデバイスで、OS(Operating System)、アプリケーションプログラム等を記憶し、また、処理データの一時待避領域等に使用される。
次に、本実施形態に係る情報処理装置1におけるメモリ40のデータ構造について、図2を参照して説明する。図2は、本実施形態に係る情報処理装置1におけるメモリ40のデータ構造を模式的に示す図である。
図2に示すように、本実施形態に係る情報処理装置1において、メモリ40は、独自仕様DMAC制御レジスタ領域100、FIFO(出力)領域210、FIFO(入力)領域220、SATA制御レジスタ領域300、規格準拠DMAC制御レジスタ領域310、メモリ領域400、システム制御レジスタ領域500を含む。
システム制御レジスタ領域500は、CPU50の動作モード等を設定する領域で、アドレス0x0008_0000〜0x0010_0FFFが割り当てられている。
SATA制御レジスタ領域300は、送受信用スレーブインターフェース32を通してマスターモジュールがアクセスできる領域で、アドレス0x0010_1000〜0x0010_1FFFが割り当てられている。
規格準拠DMAC制御レジスタ領域310は、送受信用スレーブインターフェース32を通してマスターモジュールがアクセスできる領域で、アドレス0x0010_2000〜0x0010_2FFFが割り当てられている。
独自仕様DMAC制御レジスタ領域100は、送受信用スレーブインターフェース11を通してマスターモジュールがアクセスできる領域で、アドレス0x0010_3000〜0x0010_3FFFが割り当てられている。
FIFO(入力)領域220は、受信用スレーブインターフェース22を通してマスターモジュールがアクセスできる領域で、アドレス0x0020_0000が割り当てられている。
FIFO(出力)領域210は、送信用スレーブインターフェース21を通してマスターモジュールがアクセスできる領域で、アドレス0x0020_1000が割り当てられている。
メモリ領域400は、送受信用スレーブインターフェース41を通してマスターモジュールがアクセスできる領域で、アドレス0x8000_0000〜0xFFFF_FFFFが割り当てられている。
本実施例では、メモリ領域400は、画像記憶領域410、独自仕様DMACディスクリプタ(1)記憶領域420、独自仕様DMACディスクリプタ(2)記憶領域430、規格準拠DMACディスクリプタ記憶領域440を含む。
画像記憶領域410は、横n画素×縦m画素の2次元画像を記憶する。独自仕様DMACディスクリプタ(1)記憶領域420、及び、独自仕様DMACディスクリプタ(2)記憶領域430は、CPU50が独自仕様DMAC10の動作パラメータを記述する領域である。
このように、独自仕様DMACディスクリプタ(1)記憶領域420、及び、独自仕様DMACディスクリプタ(2)記憶領域430がチェインされている構成が、規格準拠DMAC31にはない、独自仕様DMAC10のみが備えるディスクリプタチェイン機能を実現するための構成である。尚、本実施例では、独自仕様DMACディスクリプタ記憶領域は、2段チェインされているが、同様のディスクリプタが追加作成されることにより、3段以上のチェインも可能になる。
規格準拠DMACディスクリプタ記憶領域440は、CPU50が規格準拠DMAC31の動作パラメータを記述する領域である。
次に、本実施形態に係る情報処理装置1における2次元DMA転送機能について、図3〜図5を参照して説明する。図3は、本実施形態に係る画像記憶領域410に記憶されている2次元画像データの画素情報とメモリアドレスとの関係を示す図である。図4は、本実施形態に係る独自仕様DMAC10が2次元DMA転送によりメモリ40から画像データをリードする際のディスクリプタ設定を説明するための図である。図5は、本実施形態に係る独自仕様DMAC10が2次元DMA転送によりメモリ40に画像データをライトする際のディスクリプタ設定を説明するための図である。
尚、図4及び図5の内容は、CPU50若しくは独自仕様DMAC10により設定される。即ち、本実施形態においては、CPU50若しくは独自仕様DMAC10がアドレス設定部及び転送パラメータ設定部として機能する。
図3に示すように、本実施形態に係る画像記憶領域410は、アドレス範囲0xC000_0000〜0xC000_0000+m*n−1に、横n画素×縦m画素の2次元画像データを記憶している。
本実施形態に係る画像記憶領域410は、1画素あたりのデータサイズを8bit(1Byte)とし、1アドレスあたり8bit(1Byte)=1画素のデータを記憶することができるものとする。
図3の一マスは、1画素に相当し、各画素に記述されている数値は、画素情報を記憶しているメモリアドレスのオフセットを示している。例えば、記載が「0」のマスならば、アドレス0xC000_0000に対応し、n−1ならば、アドレス0xC000_0000+(n−1)に対応する。
独自仕様DMAC10の2次元DMA転送機能で転送する矩形領域を、4つのオフセットアドレスX1、Y1、X2、Y2で定義すると、図3の太線で囲まれた領域が、転送対象の矩形領域となる。
このように選択された矩形領域について、独自仕様DMAC10は、アドレスY1*n+X1、Y1*n+X1+1・・・の順番にアクセスしていき、アドレスY1*n+X2のアクセス後は、(Y1+1)*n+X1、(Y1+1)*n+X1+1・・・の順番でアクセスする。そして、独自仕様DMAC10は、アドレス(Y1+1)*n+X2のアクセス後は、(Y1+2)*n+X1、(Y1+2)*n+X1+1・・・の順番でアクセスし、以後、同様の動作を繰り返す。独自仕様DMAC10は、アドレスY2*n+X2へのアクセスが終了すると、転送完了となる。
また、図4に示すように、本実施形態に係る独自仕様DMAC10が2次元DMA転送によりメモリ40から画像データをリードする際、CPU50により、独自仕様DMACディスクリプタ(1)記憶領域420及び独自仕様DMACディスクリプタ(2)記憶領域430にディスクリプタが作成される。このとき、独自仕様DMACディスクリプタ(1)記憶領域420には、アドレス0x8000_1000〜の40Byte分のディスクリプタが作成され、独自仕様DMACディスクリプタ(2)記憶領域430には、アドレス0x8000_1040〜の40Byte分のディスクリプタが作成される。尚、このディスクリプタ設定は、上記のアドレスの他、任意の空きメモリアドレスに作成可能である。
独自仕様DMACディスクリプタ(1)記憶領域420には、DMAC起動後、最初に動作する転送パラメータが設定される。独自仕様DMACディスクリプタ(2)記憶領域430には、独自仕様DMACディスクリプタ(1)記憶領域420に設定された動作が終了した後に動作する転送パラメータが設定される。本実施例では、独自仕様DMACディスクリプタ記憶領域は、図2に示したように、2段チェインされている例について説明するが、独自仕様DMACディスクリプタ(2)記憶領域430に設定された動作が終了した後に動作する転送パラメータがさらに設定されることで、3段以上のチェインも可能になる。この転送パラメータには、データ転送の際に動作する動作内容が記述されている。
転送モード設定4201には、メモリアクセスの方向が設定され、メモリ40から画像データをリードされる場合にはメモリリード方向に設定される。
次ディスクリプタアドレス421には、独自仕様DMACディスクリプタ(1)記憶領域420に設定された動作が終了した後に、次に実行するディスクリプタが存在する場合には、そのディスクリプタの記憶アドレスが設定される。本実施例では、この次ディスクリプタアドレス421には、独自仕様DMACディスクリプタ(2)記憶領域430の開始アドレス0x8000_1040が設定される。
データ転送元アドレス422には、メモリ40から画像データがリードされる場合には、転送対象画像を含む2次元画像データの記憶開始アドレスが設定される。本実施例では、このデータ転送元アドレス422には0xC000_0000が設定される。
データ転送先アドレス423には、メモリ40から画像データがリードされる場合には、FIFO20のデータ受信用スレーブインターフェース22のアドレスが設定される。本実施例では、このデータ転送先アドレス423には0x0020_0000が設定される。
横方向画像切り出し開始オフセットアドレス424には、2次元DMA転送時の転送対象となる矩形領域の横方向の開始位置が位置情報として指定される。本実施例では、この横方向画像切り出し開始オフセットアドレス424にはX1が指定される。この横方向画像切り出し開始オフセットアドレス424にオフセットアドレスとしてX1が指定された場合には、横方向にX1−1番目の画素が転送対象領域の開始画素となる。
縦方向画像切り出し開始オフセットアドレス425には、2次元DMA転送時の転送対象となる矩形領域の縦方向の開始位置が位置情報として指定される。本実施例では、この縦方向画像切り出し開始オフセットアドレス425にはY1が指定される。この縦方向画像切り出し開始オフセットアドレス425にオフセットアドレスとしてY1が指定された場合には、縦方向にY1−1番目の画素が転送対象領域の開始画素となる。
横方向画像切り出し終了オフセットアドレス426には、2次元DMA転送時の転送対象となる矩形領域の横方向の終了位置が位置情報として指定される。本実施例では、この横方向画像切り出し終了オフセットアドレス426にはX2が指定される。この横方向画像切り出し終了オフセットアドレス426にオフセットアドレスとしてX2が指定された場合には、横方向にX2−1番目の画素が転送対象領域の終了画素となる。
縦方向画像切り出し終了オフセットアドレス427には、2次元DMA転送時の転送対象となる矩形領域の縦方向の終了位置が位置情報として指定される。本実施例では、この縦方向画像切り出し終了オフセットアドレス427にはY2が指定される。この縦方向画像切り出し終了オフセットアドレス427にオフセットアドレスとしてY2が指定された場合には、縦方向にY2−1番目の画素が転送対象領域の終了画素となる。
横方向画像サイズ428には、転送対象画像を含む2次元画像データの横方向のページサイズが画素単位で設定される。本実施例では、この横方向画像サイズ428にはnが設定される。縦方向画像サイズ429には、転送対象画像を含む2次元画像データの縦方向のページサイズが画素単位で設定される。本実施例では、この縦方向画像サイズ429にはmが設定される。
転送モード設定4301には、メモリアクセスの方向が設定され、メモリ40から画像データがリードされる場合にはメモリリード方向に設定される。
次ディスクリプタアドレス431には、独自仕様DMACディスクリプタ(2)記憶領域430に設定された動作が終了した後に、次に実行するディスクリプタが存在する場合には、そのディスクリプタの記憶アドレスが設定される。本実施例では、独自仕様DMACディスクリプタ(2)記憶領域430が最後の転送となるため、次ディスクリプタアドレス431には0x0000_0000が設定される。独自仕様DMAC10は、次ディスクリプタアドレスが0x0000_0000の場合には、次の転送を実行しない仕様となっている。
データ転送元アドレス432には、メモリ40から画像データがリードされる場合には、転送対象画像を含む2次元画像データの記憶開始アドレスが設定される。本実施例では、このデータ転送元アドレス432には0xC000_0000が設定される。
データ転送先アドレス433には、FIFO20のデータ受信用スレーブインターフェース22のアドレスが設定される。本実施例では、このデータ転送先アドレス433には0x0020_0000が設定される。
横方向画像切り出し開始オフセットアドレス434には、2次元DMA転送時の転送対象となる矩形領域の横方向の開始位置が位置情報として指定される。本実施例では、この横方向画像切り出し開始オフセットアドレス434にはX3が指定される。この横方向画像切り出し開始オフセットアドレス434にオフセットアドレスとしてX3が指定され場合には、横方向にX3−1番目の画素が転送対象領域の開始画素となる。
縦方向画像切り出し開始オフセットアドレス435には、2次元DMA転送時の転送対象となる矩形領域の縦方向の開始位置が位置情報として指定される。本実施例では、この縦方向画像切り出し開始オフセットアドレス435にはY3が指定される。この縦方向画像切り出し開始オフセットアドレス435にオフセットアドレスとしてY3が指定された場合には、縦方向にY3−1番目の画素が転送対象領域の開始画素となる。
横方向画像切り出し終了オフセットアドレス436には、2次元DMA転送時の転送対象となる矩形領域の横方向の終了位置が位置情報として指定される。本実施例では、この横方向画像切り出し終了オフセットアドレス436にはX4が指定される。この横方向画像切り出し終了オフセットアドレス436にオフセットアドレスとしてX4が指定された場合には、横方向にX4−1番目の画素が転送対象領域の終了画素となる。
縦方向画像切り出し終了オフセットアドレス437には、2次元DMA転送時の転送対象となる矩形領域の縦方向の終了位置が位置情報として指定される。本実施例では、この縦方向画像切り出し終了オフセットアドレス437にはY4が指定される。この縦方向画像切り出し終了オフセットアドレス437にオフセットアドレスとしてY4が指定された場合には、縦方向にY4−1番目の画素が転送対象領域の終了画素となる。
横方向画像サイズ438には、転送対象画像を含む2次元画像データの横方向のページサイズが画素単位で設定される。本実施例では、この横方向画像サイズ438にはnが設定される。縦方向画像サイズ439には、転送対象画像を含む2次元画像データの縦方向のページサイズが画素単位で設定される。本実施例では、この縦方向画像サイズ439にはmが設定される。
また、図5に示すように、本実施形態に係る独自仕様DMAC10が2次元DMA転送によりメモリ40へ画像データをライトする際とリードする際とでは、転送モード設定4201及び転送モード設定4301、データ転送元アドレス422及び423、データ転送先アドレス423及び433が異なる。
転送モード設定4201には、メモリアクセスの方向が設定され、メモリ40へ画像データをライトする場合にはメモリライト方向に設定される。
次ディスクリプタアドレス421には、独自仕様DMACディスクリプタ(1)記憶領域420に設定された動作が終了した後に、次に実行するディスクリプタが存在する場合には、そのディスクリプタの記憶アドレスを設定する。本実施例では、この次ディスクリプタアドレス421には、独自仕様DMACディスクリプタ(2)記憶領域430の開始アドレス0x8000_1040が設定される。
データ転送元アドレス422には、メモリ40へ画像データがライトされる場合には、FIFO20のデータ送信用スレーブインターフェース21のアドレスが設定される。本実施例では、このデータ転送元アドレス422には0x0020_1000が設定される。
データ転送先のアドレス423には、メモリ40へ画像データがライトされる場合には、転送対象画像を含む2次元画像データの記憶開始アドレスが設定される。本実施例では、データ転送先のアドレス423には0xC000_0000が設定される。
横方向画像切り出し開始オフセットアドレス424には、2次元DMA転送時の転送対象となる矩形領域の横方向の開始位置が指定される。本実施例では、この横方向画像切り出し開始オフセットアドレス424にはX1が指定される。この横方向画像切り出し開始オフセットアドレス424にオフセットアドレスとしてX1が指定された場合には、横方向にX1−1番目の画素が転送対象領域の開始画素となる。
縦方向画像切り出し開始オフセットアドレス425には、2次元DMA転送時の転送対象となる矩形領域の縦方向の開始位置が指定される。本実施例では、この縦方向画像切り出し開始オフセットアドレス425にはY1が指定される。この縦方向画像切り出し開始オフセットアドレス425にオフセットアドレスとしてY1が指定された場合には、縦方向にY1−1番目の画素が転送対象領域の開始画素となる。
横方向画像切り出し終了オフセットアドレス426には、2次元DMA転送時の転送対象となる矩形領域の横方向の終了位置が指定される。本実施例では、この横方向画像切り出し終了オフセットアドレス426にはX2が指定される。この横方向画像切り出し終了オフセットアドレス426にオフセットアドレスとしてX2が指定された場合には、横方向にX2−1番目の画素が転送対象領域の終了画素となる。
縦方向画像切り出し終了オフセットアドレス427には、2次元DMA転送時の転送対象となる矩形領域の縦方向の終了位置を指定する。本実施例では、この縦方向画像切り出し終了オフセットアドレス427にはY2が指定される。この縦方向画像切り出し終了オフセットアドレス427にオフセットアドレスとしてY2が指定された場合には、縦方向にY2−1番目の画素が転送対象領域の終了画素となる。
横方向画像サイズ428には、転送対象画像を含む2次元画像データの横方向のページサイズが画素単位で設定される。本実施例では、この横方向画像サイズ428にはnが設定される。縦方向画像サイズ429には、転送対象画像を含む2次元画像データの縦方向のページサイズが画素単位で設定される。本実施例では、この縦方向画像サイズ429にはmが設定される。
転送モード設定4301には、メモリアクセスの方向が設定され、メモリ40へ画像データがライトされる場合にはメモリライト方向に設定される。
次ディスクリプタアドレス431には、独自仕様DMACディスクリプタ(2)記憶領域430に設定された動作が終了した後に、次に実行するディスクリプタが存在する場合には、そのディスクリプタの記憶アドレスが設定される。本実施例では、独自仕様DMACディスクリプタ(2)記憶領域430が最後の転送となるため、この次ディスクリプタアドレス431には0x0000_0000が設定される。独自仕様DMAC10は、次ディスクリプタアドレスが0x0000_0000の場合には、次の転送を実行しない仕様となっている。
データ転送元アドレス432には、メモリ40に画像データがライトされる場合には、FIFO20のデータ送信用スレーブインターフェース21のアドレスが設定される。本実施例では、このデータ転送元アドレス432には0x0020_1000が設定される。
データ転送先のアドレス433には、メモリ40に画像データがライトされる場合には、転送対象画像を含む2次元画像データの記憶開始アドレスが設定される。本実施例では、このデータ転送先のアドレス433には0xC000_0000が設定される。
横方向画像切り出し開始オフセットアドレス434には、2次元DMA転送時の転送対象となる矩形領域の横方向の開始位置が指定される。本実施例では、この横方向画像切り出し開始オフセットアドレス434にはX3が指定される。この横方向画像切り出し開始オフセットアドレス434にオフセットアドレスとしてX3が指定され場合には、横方向にX3−1番目の画素が転送対象領域の開始画素となる。
縦方向画像切り出し開始オフセットアドレス435には、2次元DMA転送時の転送対象となる矩形領域の縦方向の開始位置が指定される。本実施例では、この縦方向画像切り出し開始オフセットアドレス435にはY3が指定される。この縦方向画像切り出し開始オフセットアドレス435にオフセットアドレスとしてY3が指定された場合には、縦方向にY3−1番目の画素が転送対象領域の開始画素となる。
横方向画像切り出し終了オフセットアドレス436には、2次元DMA転送時の転送対象となる矩形領域の横方向の終了位置が指定される。本実施例では、この横方向画像切り出し終了オフセットアドレス436にはX4が指定される。この横方向画像切り出し終了オフセットアドレス436にオフセットアドレスとしてX4が指定された場合には、横方向にX4−1番目の画素が転送対象領域の終了画素となる。
縦方向画像切り出し終了オフセットアドレス437には、2次元DMA転送時の転送対象となる矩形領域の縦方向の終了位置が指定される。本実施例では、この縦方向画像切り出し終了オフセットアドレス437にはY4が指定される。この縦方向画像切り出し終了オフセットアドレス437にオフセットアドレスとしてY4が指定された場合には、縦方向にY4−1番目の画素が転送対象領域の終了画素となる。
横方向画像サイズ438には、転送対象画像を含む2次元画像データの横方向のページサイズが画素単位で設定される。本実施例では、この横方向画像サイズ438にはnが設定される。縦方向画像サイズ439には、転送対象画像を含む2次元画像データの縦方向のページサイズが画素単位で設定される。本実施例では、この縦方向画像サイズ439にはmが設定される。
次に、本実施形態に係る情報処理装置1において、独自仕様DMAC10と規格準拠DMAC31とがFIFO20を介して行うデータ転送に先だってその準備を行う際の処理について、図6を参照して説明する。図6は、本実施形態に係る情報処理装置1において、独自仕様DMAC10と規格準拠DMAC31とがFIFO20を介して行うデータ転送に先だってその準備を行う際の処理を説明するためのシーケンス図である。
図6に示すように、本実施形態に係る情報処理装置1において、独自仕様DMAC10と規格準拠DMAC31とがFIFO20を介して行うデータ転送に先だってその準備を行う際にはまず、CPU50は、独自仕様DMAC10に対して、動作パラメータを記述するためのディスクリプタ(1)用の記憶アドレス(本実施例では、0x8000_1000)を通知し、割り込みマスク等の設定を実行する(S601)。
そして、CPU50は、独自仕様DMAC10に通知したディスクリプタ(1)用の記憶アドレスにディスクリプタ(1)を作成する(S602)。このとき、CPU50が作成するディスクリプタ(1)の内容は、メモリ40から画像データがリードされる場合には、図4を参照して説明した内容となる。また、このとき、CPU50が作成するディスクリプタ(1)の内容は、メモリ40へ画像データがライトされる場合には、図5を参照して説明した内容となる。
CPU50は、ディスクリプタ(1)の作成後、アドレス0x8000_1040にディスクリプタ(2)を作成する(S603)。このとき、CPU50が作成するディスクリプタ(2)の内容は、メモリ40から画像データがリードされる場合には、図4を参照して説明した内容となる。また、このとき、CPU50が作成するディスクリプタ(2)の内容は、メモリ40へ画像データがライトされる場合には、図5を参照して説明した内容となる。
そして、CPU50は、例えば、AHCI(Advanced Host Controller Interface)規格で定められた設定等、規格準拠DMAC31の設定を実行するし、規格準拠DMAC31が参照するそれらのディスクリプタの内容を作成する(S604)。
次に、CPU50は、例えば、AHCI規格で定められた設定等、SATA制御部30の設定を実行する(S605)。そして、CPU50は、独自仕様DMAC10を起動する(S606)。起動した独自仕様DMAC10は、独自仕様DMACディスクリプタ(1)記憶領域420(本実施例では、0x8000_1000)にアクセスし、転送パラメータを取得して、取得した転送パラメータからリードアドレス若しくはライトアドレスを算出する(S607)。
そしてCPU50は、規格準拠DMAC31を起動する(S608)。起動した規格準拠DMAC31は、規格準拠DMACディスクリプタ記憶領域440(本実施例では、0x8001_0000)にアクセスし、転送パラメータを取得する(S609)。規格準拠DMAC31は、取得した転送パラメータに従い、SATA制御部30に対してSATAコマンド発行を指令し(S610)、HDD60に対してSATAコマンドを発行させる(S611)。
このようにして、本実施形態に係る情報処理装置1は、独自仕様DMAC10と規格準拠DMAC31とがFIFO20を介して行うデータ転送の準備を完了する。
次に、本実施形態に係る情報処理装置1において、独自仕様DMAC10と規格準拠DMAC31とがFIFO20を介してメモリ40から画像データをリードしてHDD60にライトする際の処理について、図7〜図9を参照して説明する。図7〜図9は、本実施形態に係る情報処理装置1において、独自仕様DMAC10と規格準拠DMAC31とがFIFO20を介してメモリ40から画像データをリードしてHDD60にライトする際の処理を説明するためのシーケンス図である。尚、図7〜図9は、図6におけるデータ転送の準備が終了した直後からの処理について示している。
本実施形態に係る情報処理装置1において、独自仕様DMAC10と規格準拠DMAC31とがFIFO20を介してメモリ40から画像データをリードしてHDD60にライトする際にはまず、SATAコマンドを発行したSATA制御部30は、データ受信可能な状態である場合、即ち、内部バッファに空きがある場合、規格準拠DMAC31に対してデータのライトを要求する(S701)。
SATA制御部30からライト要求を受けた規格準拠DMAC31は、データ受信可能な状態である場合、即ち、内部バッファに空きがある場合、FIFO20に対してリードを要求する(S702)。規格準拠DMAC31からリード要求を受けたFIFO20は、データ受信可能な状態である場合、即ち、内部バッファに空きがある場合、独自仕様DMAC10に対してデータのライトを要求する(S703)。
FIFO20からライト要求を受けた独自仕様DMAC10は、データ受信可能な状態である場合、即ち、内部バッファに空きがある場合、メモリ40に対してリードを要求する(S704)。独自仕様DMAC10からリード要求を受けたメモリ40は、独自仕様DMAC10にデータを転送する(S705)。
メモリ40からデータを受信した独自仕様DMAC10は、そのデータをFIFO20に転送する(S706)。独自仕様DMAC10からデータを受信したFIFO20は、そのデータを規格準拠DMAC31に転送する(S707)。FIFO20からデータを受信した規格準拠DMAC31は、そのデータをSATA制御部30に転送する(S708)。規格準拠DMAC31からデータを受信したSATA制御部30は、HDD60がデータ受信可能な状態である場合、そのデータをHDD60にライトする(S709)。
このとき、本実施例では、データバス幅が128bitであるため、ディスクリプタ(1)に関する1回目の転送では、メモリ40上のアドレス0xC000_0000+Y1*n+X1〜0xC000_0000+Y1*n+X1+15に記憶されている128bit分の画像データがリードされる。同様に、2回目の転送では、メモリ40上のアドレス0xC000_0000+Y1*n+X1+16〜0xC000_0000+Y1*n+X1+31に記憶されている128bit分の画像データがリードされる。尚、2回目以降のリードアドレスは、独自仕様DMAC10がS607において取得した転送パラメータから算出されたリードアドレスと前回のリードアドレスとから算出される。
そして、S701〜S709と同様の処理が繰り返し行われ、独自仕様DMACディスクリプタ(1)記憶領域420(本実施例では、0x8000_1000)に設定されている全てのデータ転送が終了すると、次に、独自仕様DMAC10は、独自仕様DMACディスクリプタ(2)記憶領域430(本実施例では、0x8000_1040)にアクセスし、転送パラメータを取得して、取得した転送パラメータからリードアドレスを算出する(S710)。このように、本実施形態に係る情報処理装置1は、規格準拠DMAC31にはない、独自仕様DMAC10のみが備えるディスクリプタチェイン機能を使用することが可能となっている。
そして、本実施形態に係る情報処理装置1は、S701〜S709と同様の処理を繰り返し行う。このとき、本実施例では、データバス幅が128bitであるため、ディスクリプタ(2)に関する1回目の転送では、アドレス0xC000_0000+Y3*n+X3〜0xC000_0000+Y3*n+X3+15に記憶されている128bit分の画像データが転送される。
同様に、2回目の転送では、アドレス0xC000_0000+Y3*n+X3+16〜0xC000_0000+Y3*n+X3+31に記憶されている128bit分の画像データが転送される。尚、2回目以降のリードアドレスは、独自仕様DMAC10がS710において取得した転送パラメータから算出されたリードアドレスと前回のリードアドレスとから算出される。このように、本実施形態に係る情報処理装置1は、規格準拠DMAC31にはない、独自仕様DMAC10のみが備える2次元DMA転送機能を使用することが可能となっている。
尚、図7に示す例では、規格準拠DMAC31がリード要求を発行した後に、独自仕様DMAC10がリード要求を発行しているが、独自仕様DMAC10の方が先にリード要求を発行することも可能である。また、独自仕様DMAC10及び規格準拠DMAC31は、発行したリード要求に対するデータを受信する前に、次のリード要求を発行することが可能である。
図8に示すように、独自仕様DMAC10は、独自仕様DMACディスクリプタ(2)記憶領域430(本実施例では、0x8000_1040)に設定されている全てのデータをFIFO20に転送すると(S801)、CPU50に対して転送が完了したことを通知すると共に(S802)、FIFO20に対して疑似応答を要求する(S803)。
独自仕様DMAC10から疑似応答要求を受けたFIFO20は、以降、SATA制御部30から規格準拠DMAC31に対するライト要求に対し(S804)、規格準拠DMAC31からリード要求を受けると(S805)、規格準拠DMAC31に疑似データを転送する(S806)。
FIFO20から疑似データを受信した規格準拠DMAC31は、その疑似データをSATA制御部30に転送する(S807)。規格準拠DMAC31から疑似データを受信したSATA制御部30は、その疑似データをHDD60にライトする(S808)。
ここで、独自仕様DMACが全てのデータをFIFO20に転送するとFIFO20に対して疑似応答を要求し、以降、FIFO20が疑似データを転送する理由について説明する。
独自仕様DMAC10が2次元DMA転送機能で転送することができるデータ転送サイズは、図3を参照して説明したように、特定の矩形領域であって1Byte刻みで設定可能であるが、規格準拠DMAC31が転送することができるデータ転送サイズは、セクタサイズ刻み(本実施例では、512Byte刻み)である。即ち、独自仕様DMAC10のデータ転送サイズの最小単位は、1Byteであり、規格準拠DMAC31のデータ転送サイズの最小単位は、512Byteである。
そのため、FIFO20には、規格準拠DMAC31のデータ転送サイズに満たないデータが最後に残ることになり、そのデータも規格準拠DMAC31により転送されてしまうと、FIFO20は空となってしまう。
例えば、メモリ40からHDD60へ600Byte分のデータが転送される場合、512Byte分のデータが転送されると、FIFO20には、残りの88Byte(600Byte−512Byte)分のデータが最後に残ることになり、その88Byte分のデータも規格準拠DMAC31により転送されてしまうと、FIFO20は空となってしまう。しかし、このとき、規格準拠DMAC31は、424Byte(512Byte−88Byte)分のデータを転送しなければならない状態となっている。
ところが、FIFO20が空になってしまうと、FIFO20は、規格準拠DMAC31からリード要求があっても規格準拠DMAC31にデータを転送することができなくなってしまう。その結果、規格準拠DMAC31は、FIFO20からのデータの転送を待ち続けてしまい、いつまでたっても処理が終了しなくなってしまう。
そこで、本実施形態に係る情報処理装置1においては、FIFO20は、独自仕様DMAC10から疑似応答要求を受けると、内部バッファが空になっても、規格準拠DMAC31のデータ転送サイズに達するまで、規格準拠DMAC31に疑似データを転送し続けるように構成されている。そのため、規格準拠DMAC31は、滞りなくデータ転送を続けることが可能となる。
本実施形態に係る情報処理装置1は、このように構成されることで、規格準拠DMAC31にはない、2次元DMA転送機能やディスクリプタチェイン等、独自仕様DMAC10が備える機能を容易に使用することが可能となる。
そして、本実施形態に係る情報処理装置1は、S804〜S808と同様の処理を繰り返し行う。その結果、図9に示すように、SATA制御部30は、規格準拠DMAC31に対して最後のライトを要求する(S901)。SATA制御部30から最後のライト要求を受けた規格準拠DMAC31は、FIFO20に対して最後のリードを要求する(S902)。
規格準拠DMAC31から最後のリード要求を受けたFIFO20は、規格準拠DMAC31に最後の疑似データを転送する(S903)。FIFO20から最後の疑似データを受信した規格準拠DMAC31は、その最後の疑似データをSATA制御部30に転送する(S904)。規格準拠DMAC31から最後の疑似データを受信したSATA制御部30は、その最後の疑似データをHDD60にライトする(S905)。
このとき、SATA制御部30に最後の疑似データを転送した規格準拠DMAC31は、CPU50に対して転送が完了したことを通知する(S906)。規格準拠DMAC31から転送完了通知を受けたCPU50は、独自仕様DMAC10に対して疑似応答解除を指令する(S907)。疑似応答解除要求を受けた独自仕様DMAC10は、FIFO20に対して疑似応答解除を要求する(S908)。
本実施形態に係る情報処理装置1においては、このようにして、独自仕様DMAC10と規格準拠DMAC31とがFIFO20を介してメモリ40から画像データをリードしてHDD60にライトする。
次に、本実施形態に係る情報処理装置1において、独自仕様DMAC10と規格準拠DMAC31とがFIFO20を介してHDD60から画像データをリードしてメモリ40にライトする際の処理について、図10〜図12を参照して説明する。図10〜図12は、本実施形態に係る情報処理装置1において、独自仕様DMAC10と規格準拠DMAC31とがFIFO20を介してHDD60から画像データをリードしてメモリ40にライトする際の処理を説明するためのシーケンス図である。尚、図10〜図12は、図6におけるデータ転送の準備が終了した直後からの処理について示している。
本実施形態に係る情報処理装置1において、独自仕様DMAC10と規格準拠DMAC31とがFIFO20を介してHDD60から画像データをリードしてメモリ40にライトする際にはまず、メモリ40は、データ受信可能な状態である場合、即ち、内部バッファに空きがある場合、独自仕様DMAC10に対してデータのライトを要求する(S1001)。
メモリ40からライト要求を受けた独自仕様DMAC10は、データ受信可能な状態である場合、即ち、内部バッファに空きがある場合、FIFO20に対してリードを要求する(S1002)。独自仕様DMAC10からリード要求を受けたFIFO20は、データ受信可能な状態である場合、即ち、内部バッファに空きがある場合、規格準拠DMAC31に対してデータのライトを要求する(S1003)。
FIFO20からライト要求を受けた規格準拠DMAC31は、データ受信可能な状態である場合、即ち、内部バッファに空きがある場合、SATA制御部30に対してリードを要求する(S1004)。規格準拠DMAC31からリード要求を受けたSATA制御部30は、データ受信可能な状態である場合、即ち、内部バッファに空きがある場合、HDD60からデータをリードし(S1005)、規格準拠DMAC31にそのデータを転送する(S1006)。
SATA制御部30からデータを受信した規格準拠DMAC31は、そのデータをFIFO20に転送する(S1007)。規格準拠DMAC31からデータを受信したFIFO20は、そのデータを独自仕様DMAC10に転送する(S1008)。FIFO20からデータを受信した独自仕様DMAC10は、そのデータをメモリ40にライトする(S1009)。
このとき、本実施例では、データバス幅が128bitであるため、ディスクリプタ(1)に関する1回目の転送では、メモリ40上のアドレス0xC000_0000+Y1*n+X1〜0xC000_0000+Y1*n+X1+15に128bit分の画像データがライトされる。同様に、2回目の転送では、メモリ40上のアドレス0xC000_0000+Y1*n+X1+16〜0xC000_0000+Y1*n+X1+31に128bit分の画像データがライトされる。尚、2回目以降のライトアドレスは、独自仕様DMAC10がS607において取得した転送パラメータから算出されたライトアドレスと前回のライトアドレスとから算出される。
そして、S1001〜S1009と同様の処理が繰り返し行われ、独自仕様DMACディスクリプタ(1)記憶領域420(本実施例では、0x8000_1000)に設定されている全てのデータ転送が終了すると、次に、独自仕様DMAC10は、独自仕様DMACディスクリプタ(2)記憶領域430(本実施例では、0x8000_1040)にアクセスし、転送パラメータを取得して、取得した転送パラメータからライトアドレスを算出する(S1010)。このように、本実施形態に係る情報処理装置1は、規格準拠DMAC31にはない、独自仕様DMAC10のみが備えるディスクリプタチェイン機能を使用することが可能となっている。
そして、本実施形態に係る情報処理装置1は、S1001〜S1009と同様の処理を繰り返し行う。このとき、本実施例では、データバス幅が128bitであるため、ディスクリプタ(2)に関する1回目の転送では、アドレス0xC000_0000+Y3*n+X3〜0xC000_0000+Y3*n+X3+15に記憶されている128bit分の画像データが転送される。
同様に、2回目の転送では、アドレス0xC000_0000+Y3*n+X3+16〜0xC000_0000+Y3*n+X3+31に記憶されている128bit分の画像データが転送される。尚、2回目以降のリードアドレスは、独自仕様DMAC10がS710において取得した転送パラメータから算出されたリードアドレスと前回のリードアドレスとから算出される。このように、本実施形態に係る情報処理装置1は、規格準拠DMAC31にはない、独自仕様DMAC10のみが備える2次元DMA転送機能を使用することが可能となっている。
尚、図10に示す例では、独自仕様DMAC10がリード要求を発行した後に、規格準拠DMAC31がリード要求を発行しているが、規格準拠DMAC31の方が先にリード要求を発行することも可能である。また、独自仕様DMAC10及び規格準拠DMAC31は、発行したリード要求に対するデータを受信する前に、次のリード要求を発行することが可能である。
図11に示すように、独自仕様DMAC10は、独自仕様DMACディスクリプタ(2)記憶領域430(本実施例では、0x8000_1040)に設定されている全てのデータをメモリ40にライトすると(S1101)、CPU50に対して転送が完了したことを通知すると共に(S1102)、FIFO20に対して疑似応答を要求する(S1103)。
独自仕様DMAC10から疑似応答要求を受けたFIFO20は、以降、規格準拠DMAC31に対するライト要求に対してデータが転送されてくると(S1104〜S1108)、そのデータを破棄する(S1109)。
ここで、独自仕様DMACが全てのデータをメモリ40にライトするとFIFO20に対して疑似応答を要求し、以降、FIFO20が受信したデータを破棄する理由について説明する。
上述したように、独自仕様DMAC10のデータ転送サイズの最小単位と規格準拠DMAC31のデータ転送サイズの最小単位とは異なり、独自仕様DMAC10のデータ転送サイズの最小単位の方が小さい。
そのため、独自仕様DMAC10は、転送するべきデータを全てメモリ40へライトすると、それ以上のデータをFIFO20からリードする必要がなくなるが、それ以上のデータが規格準拠DMAC31によりFIFO20へライトされてしまうと、FIFO20は満杯となってしまう。
例えば、HDD60からメモリ40へ600Byte分のデータが転送される場合、その600Byte分のデータ全てがメモリ40にライトされると、それ以上のデータはFIFO20からリードされなくなるが、規格準拠DMAC31により412Byte(512Byte−(600Byte−512Byte))分のデータがさらにFIFO20へライトされ続け、ついには、FIFO20は満杯となってしまう。
ところが、FIFO20が満杯になってしまうと、FIFO20は、規格準拠DMAC31にライトを要求することができなくなってしまう。その結果、規格準拠DMAC31は、FIFO20からのライト要求を待ち続けてしまい、いつまでたっても処理が終了しなくなってしまう。
そこで、本実施形態に係る情報処理装置1においては、FIFO20は、独自仕様DMAC10から疑似応答要求を受けると、内部バッファが満杯になっても、規格準拠DMAC31のデータ転送サイズに達するまで、規格準拠DMAC31にライトを要求し続け、それ以降受信したデータについては破棄するように構成されている。そのため、規格準拠DMAC31は、滞りなくデータ転送を続けることが可能となる。
本実施形態に係る情報処理装置1は、このように構成されることで、規格準拠DMAC31にはない、2次元DMA転送機能やディスクリプタチェイン等、独自仕様DMAC10が備える機能を容易に使用することが可能となる。
そして、本実施形態に係る情報処理装置1は、S1104〜S809と同様の処理を繰り返し行う。その結果、図12に示すように、FIFO20は、規格準拠DMAC31に対して最後のライトを要求する(S1201)。FIFO20から最後のライト要求を受けた規格準拠DMAC31は、SATA制御部30に対して最後のリードを要求する(S1202)。
規格準拠DMAC31から最後のリード要求を受けたSATA制御部30は、HDD60から最後のデータをリードし(S1203)、規格準拠DMAC31にその最後のデータを転送する(S1204)。SATA制御部30から最後のデータを受信した規格準拠DMAC31は、その最後のデータをFIFO20に転送する(S1205)。規格準拠DMAC31から最後のデータを受信したFIFO20は、その最後のデータを破棄する(S1206)。
このとき、FIFO20に最後のデータを転送した規格準拠DMAC31は、CPU50に対して転送が完了したことを通知する(S1207)。規格準拠DMAC31から転送完了通知を受けたCPU50は、独自仕様DMAC10に対して疑似応答解除を指令する(S1208)。疑似応答解除要求を受けた独自仕様DMAC10は、FIFO20に対して疑似応答解除を要求する(S1209)。
本実施形態に係る情報処理装置1においては、このようにして、独自仕様DMAC10と規格準拠DMAC31とがFIFO20を介してHDD60から画像データをリードしてメモリ40にライトする。
尚、本実施形態においては、メモリ40とHDD60との間でのデータ転送について説明したが、情報処理装置1に接続された異なる入出力装置間でのデータ転送についても同様に適用可能である。
1 情報処理装置
10 独自仕様DMAC
11 データ送受信用スレーブインターフェース
12 マスターインターフェース
13 マスターインターフェース
32 スレーブインターフェース
33 マスターインターフェース
20 FIFO
21 データ送信用スレーブインターフェース
22 データ受信用スレーブインターフェース
30 SATA制御部
31 規格準拠DMAC
40 メモリ
41 スレーブインターフェース
50 CPU
51 マスターインターフェース
60 HDD
71 高速バス
72 低速バス
80 アドレス制御部
特開2003−337805号公報

Claims (9)

  1. 異なるモジュール間でのデータ転送を制御するデータ転送制御装置であって、
    所定のモジュールに対応して構成されたモジュール対応DMAコントローラと、
    前記モジュール対応DMAコントローラとは異なる機能を実現する機能対応DMAコントローラと、
    前記データ転送のためのデータバスに接続され、当該データバスを介して入力された順にデータを出力する一時記憶装置と、を備え、
    前記モジュール対応DMAコントローラは、前記所定のモジュールから取得したデータを取得した順に前記一時記憶装置に入力し、
    前記一時記憶装置は、前記モジュール対応DMAコントローラにより入力された前記所定のモジュールから取得されたデータを入力された順に前記機能対応DMAコントローラに出力し、若しくは、
    前記機能対応DMAコントローラは、前記所定のモジュールに転送するべきデータを前記一時記憶装置に入力し、
    前記一時記憶装置は、前記機能対応DMAコントローラにより入力された前記所定のモジュールに転送するべきデータを入力された順に前記モジュール対応DMAコントローラに出力し、
    前記モジュール対応DMAコントローラは、前記一時記憶装置から出力された前記所定のモジュールに転送するべきデータを出力された順に前記所定のモジュールに転送し、
    前記一時記憶装置は、データの入力用と出力用からなる二つのインターフェースを介して前記データバスに接続されていて、当該データバスに接続されているマスターインターフェースを備えた前記所定のモジュールからアクセスすることができ、
    前記インターフェースのうち出力用であるデータ送信用スレーブインターフェースは、当該一時記憶装置に記憶されているデータを、前記所定のモジュールのうち、受信機能を備えたマスターインターフェースを備えるモジュールに対して出力するインターフェースであり、
    前記インターフェースのうちの入力用であるデータ受信用スレーブインターフェースは、当該一時記憶装置に記憶されているデータを、前記所定のモジュールのうち、送信機能を備えたマスターインターフェースを備えるモジュールから入力するインターフェースである、
    ことを特徴とするデータ転送制御装置。
  2. 前記機能対応DMAコントローラは、前記モジュール対応DMAコントローラよりもデータ転送サイズの最小単位が小さく、
    前記機能対応DMAコントローラが前記一時記憶装置に前記所定のモジュールに転送するべきデータを入力し、前記モジュール対応DMAコントローラが前記一時記憶装置から出力された前記所定のモジュールに転送するべきデータを前記所定のモジュールに転送する際に、前記一時記憶装置の記憶領域が空になった場合、前記一時記憶装置は、前記モジュール対応DMAコントローラに対して疑似データを出力することを特徴とする請求項1に記載のデータ転送制御装置。
  3. 前記機能対応DMAコントローラは、前記モジュール対応DMAコントローラよりもデータ転送サイズの最小単位が小さく、
    前記モジュール対応DMAコントローラが前記一時記憶装置に前記所定のモジュールから取得されたデータを入力し、前記一時記憶装置が前記機能対応DMAコントローラに前記所定のモジュールから取得されたデータを出力する際に、前記一時記憶装置の記憶領域が満杯になった場合、前記一時記憶装置は、前記モジュール対応DMAコントローラから入力されたデータを破棄することを特徴とする請求項1又は2に記載のデータ転送制御装置。
  4. 前記機能対応DMAコントローラは、
    前記モジュール対応DMAコントローラが前記一時記憶装置に前記所定のモジュールから取得されたデータを入力し、前記一時記憶装置が前記機能対応DMAコントローラに前記所定のモジュールから取得されたデータを出力する際に、前記一時記憶装置の記憶領域が満杯になった場合、前記一時記憶装置に前記モジュール対応DMAコントローラから入力されたデータを破棄させ、
    前記機能対応DMAコントローラが前記一時記憶装置に前記所定のモジュールに転送するべきデータを入力し、前記モジュール対応DMAコントローラが前記一時記憶装置から出力された前記所定のモジュールに転送するべきデータを前記所定のモジュールに転送する際に、前記一時記憶装置の記憶領域が空になった場合、前記一時記憶装置に前記モュール対応DMAコントローラに対して疑似データを出力させることを特徴とする請求項2又は3に記載のデータ転送制御装置。
  5. データの出力先となる主記憶装置にデータを書き込む際の書き込み先のアドレス、若しくは、データの入力元となる主記憶装置からデータを読み出す際の読み出し元のアドレスを設定するアドレス設定部を備えることを特徴とする請求項1乃至4いずれか項に記載のデータ転送制御装置。
  6. 前記アドレス設定部は、2次元画像データのうち特定の矩形領域に対応する画像データが主記憶装置と他の装置との間で転送される際、前記2次元画像データの横方向の画素数、前記2次元画像データの縦方向の画素数、前記2次元画像データにおける前記画像データのうち最初に転送される画素の前記2次元画像データにおける横方向の位置情報、前記2次元画像データにおける前記画像データのうち最初に転送される画素の前記2次元画像データにおける縦方向の位置情報、前記2次元画像データにおける前記画像データのうち最後に転送される画素の前記2次元画像データにおける横方向の位置情報、前記2次元画像データにおける前記画像データのうち最後に転送される画素の前記2次元画像データにおける縦方向の位置情報に基づいて、前記画像データの出力先となる主記憶装置に前記画像データを書き込む際の書き込み先のアドレス、若しくは、前記画像データの入力元となる主記憶装置から前記画像データを読み出す際の読み出し元のアドレスを算出することを特徴とする請求項に記載のデータ転送制御装置。
  7. 前記アドレス設定部は、前記機能対応DMAコントローラであることを特徴とする請求項5又は6に記載のデータ転送制御装置。
  8. 前記データ転送の動作内容に関する転送パラメータを設定する転送パラメータ設定部を備え、
    前記転送パラメータ設定部は、複数回にわたって連続して制御されるデータ転送毎に、次に制御されるデータ転送の動作内容に関する転送パラメータの設定先のアドレスを、前記転送パラメータとして設定することを特徴とする請求項1乃至7いずれか項に記載のデータ転送制御装置。
  9. 前記一時記憶装置の記憶容量は、前記モジュール対応DMAコントローラの1回のバースト転送サイズの2倍であることを特徴とする請求項1乃至8いずれか項に記載のデータ転送制御装置。
JP2014172064A 2014-08-26 2014-08-26 データ転送制御装置 Expired - Fee Related JP6476655B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2014172064A JP6476655B2 (ja) 2014-08-26 2014-08-26 データ転送制御装置
US14/823,613 US9875199B2 (en) 2014-08-26 2015-08-11 Data transfer control apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014172064A JP6476655B2 (ja) 2014-08-26 2014-08-26 データ転送制御装置

Publications (2)

Publication Number Publication Date
JP2016045899A JP2016045899A (ja) 2016-04-04
JP6476655B2 true JP6476655B2 (ja) 2019-03-06

Family

ID=55402665

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014172064A Expired - Fee Related JP6476655B2 (ja) 2014-08-26 2014-08-26 データ転送制御装置

Country Status (2)

Country Link
US (1) US9875199B2 (ja)
JP (1) JP6476655B2 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10877669B1 (en) * 2011-06-30 2020-12-29 Amazon Technologies, Inc. System and method for providing a committed throughput level in a data store
JP6551150B2 (ja) 2015-10-23 2019-07-31 株式会社リコー 画像処理装置、画像形成装置、及び画像処理方法
CN110134621B (zh) * 2018-02-09 2023-12-19 北京忆芯科技有限公司 通过环回数据通路提供cmb
US11074007B2 (en) 2018-08-08 2021-07-27 Micron Technology, Inc. Optimize information requests to a memory system
US10969994B2 (en) * 2018-08-08 2021-04-06 Micron Technology, Inc. Throttle response signals from a memory system

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5937634U (ja) * 1982-08-30 1984-03-09 横河電機株式会社 Dma制御装置
US6145032A (en) * 1998-09-21 2000-11-07 International Business Machines Corporation System for recirculation of communication transactions in data processing in the event of communication stall
CN1260629C (zh) * 2001-11-28 2006-06-21 希旺科技股份有限公司 具有动态存储器配置的电子周边卡
JP4108371B2 (ja) 2002-05-20 2008-06-25 三菱電機株式会社 マルチプロセッサシステム
JP2004127093A (ja) * 2002-10-04 2004-04-22 Sony Corp 画像処理装置および画像処理方法
JP2006209552A (ja) * 2005-01-28 2006-08-10 Sharp Corp 転送装置、画像転送システム、転送装置の制御方法、転送装置の制御プログラム、および転送装置の制御プログラムが記録された記録媒体
JP2005190496A (ja) * 2005-02-14 2005-07-14 Sony Computer Entertainment Inc データ転送方法及び装置
US20080313363A1 (en) * 2006-02-20 2008-12-18 Freescale Semiconductor, Inc. Method and Device for Exchanging Data Using a Virtual Fifo Data Structure
US8572297B2 (en) * 2007-04-17 2013-10-29 Cypress Semiconductor Corporation Programmable system-on-chip hub
US20100115172A1 (en) * 2008-11-04 2010-05-06 Mosaid Technologies Incorporated Bridge device having a virtual page buffer
JP2012073745A (ja) * 2010-09-28 2012-04-12 Fujitsu Semiconductor Ltd Dmaシステム
US10025735B2 (en) * 2013-01-31 2018-07-17 Seagate Technology Llc Decoupled locking DMA architecture
US9229855B2 (en) * 2013-11-12 2016-01-05 Skyera, Llc Apparatus and method for routing information in a non-volatile memory-based storage device
US9092362B1 (en) * 2014-03-13 2015-07-28 NXGN Data, Inc. Programmable data write management system and method for operating the same in a solid state drive
WO2015150758A1 (en) * 2014-03-31 2015-10-08 British Telecommunications Public Limited Company Data communication

Also Published As

Publication number Publication date
US9875199B2 (en) 2018-01-23
US20160062927A1 (en) 2016-03-03
JP2016045899A (ja) 2016-04-04

Similar Documents

Publication Publication Date Title
JP6476655B2 (ja) データ転送制御装置
US9557922B2 (en) System and method for peer-to-peer PCIe storage transfers
US9696942B2 (en) Accessing remote storage devices using a local bus protocol
US9727503B2 (en) Storage system and server
CN114443529B (zh) 内存直接访问架构、系统、方法、电子设备和介质
TWI516945B (zh) 可並行資料修改之方法及直接記憶體存取控制器
US9152825B2 (en) Using storage controller bus interfaces to secure data transfer between storage devices and hosts
JP5273072B2 (ja) データ処理装置、データ入出力装置およびデータ入出力方法
US20160266827A1 (en) Memory controller, memory device, data transfer system, data transfer method, and computer program product
WO2018040622A1 (zh) 信息处理方法和装置
US10185676B2 (en) Direct memory access controller and system for accessing channel buffer
JP5209535B2 (ja) Usbホストコントローラ及びusbホストコントローラの制御方法
CN100527104C (zh) 硬盘驱动器控制器及搭载它的系统
US20170257518A1 (en) Data processing apparatus, method for controlling data processing apparatus, and storage medium
US10733127B2 (en) Data transmission apparatus and data transmission method
JP2014179066A (ja) ストレージ制御装置、ストレージシステム、およびストレージ制御方法
TW202341347A (zh) 多功能裝置、操作其的方法及用於其的物品
JP2010026592A (ja) メモリデバイスおよびメモリデバイス制御装置
WO2021093249A1 (zh) 外部设备访问计算机内存的方法
JP6825263B2 (ja) ストレージ制御装置、およびストレージシステム
KR102438319B1 (ko) 공통 메모리 인터페이스 장치 및 방법
JP4509461B2 (ja) データ処理装置、データ入出力装置およびデータ入出力方法
JP6394006B2 (ja) データ処理装置及びデータ転送方法
US11137921B2 (en) Data storage device and system
CN110462598B (zh) 信息处理装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170808

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180531

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180605

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180801

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20190108

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190121

R151 Written notification of patent or utility model registration

Ref document number: 6476655

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

LAPS Cancellation because of no payment of annual fees