(57)【要約】【課題】ダイレクトメモリアクセス転送方式でデータ転送を行うデータ転送装置において、配置される設定値記憶部およびスケジューラの数が設定値の数に応じて増大することを抑止すること。【解決手段】データ転送の転送元メモリアドレスと転送先メモリアドレスとの組み合わせを有する設定値を記憶する設定値記憶部を備えるデータ転送装置が、外部の記憶部に記憶される設定値を設定値記憶部へ転送し、設定値記憶部に記憶される設定値に従って、組み合わせとなっている転送元メモリアドレスから転送先メモリアドレスへ、ダイレクトメモリアクセスによってデータを転送する。【選択図】図１
2010026762.tif 000002
【特許請求の範囲】
【請求項１】
データ転送の転送元メモリアドレスと転送先メモリアドレスとの組み合わせを有する設定値を記憶する設定値記憶部と、
外部の記憶部に記憶される前記設定値を前記設定値記憶部へ転送する設定値転送部と、
前記設定値記憶部に記憶される設定値に従って、組み合わせとなっている前記転送元メモリアドレスから転送先メモリアドレスへ、ダイレクトメモリアクセスによってデータを転送する転送部と、
を備えるデータ転送装置。
【請求項２】
前記設定値記憶部に記憶される前記設定値は複数の前記組み合わせを有し、
前記設定値記憶部に記憶される前記設定値は、前記外部の記憶部が前記設定値を記憶しているメモリアドレスと、前記設定値記憶部が前記設定値を記憶するメモリアドレスとを、それぞれ転送元メモリアドレスと転送先メモリアドレスとする組み合わせを有し、
前記設定値転送部は、前記外部の記憶部が前記設定値を記憶しているメモリアドレスと、前記設定値記憶部が前記設定値を記憶するメモリアドレスとを、それぞれ転送元メモリアドレスと転送先メモリアドレスとする組み合わせ以外の全ての組み合わせについて前記転送部がデータを転送した後に、前記設定値記憶部に記憶される前記設定値に従って、ダイレクトメモリアクセスによって前記外部の記憶部から前記設定値記憶部へ設定値のデータを転送する、
請求項１に記載のデータ転送装置。
【請求項３】
前記設定値記憶部は当該データ転送装置のスレーブとして機能する、請求項１又は２に記載のデータ転送装置。
【請求項４】
データ転送の転送元メモリアドレスと転送先メモリアドレスとの組み合わせを有する設定値を記憶する設定値記憶部を備えるデータ転送装置が、外部の記憶部に記憶される前記設定値を前記設定値記憶部へ転送するステップと、
前記データ転送装置が、前記設定値記憶部に記憶される設定値に従って、組み合わせとなっている前記転送元メモリアドレスから転送先メモリアドレスへ、ダイレクトメモリアクセスによってデータを転送するステップと、
を含むデータ転送方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ダイレクトメモリアクセスによってデータの転送を行うデータ転送装置及びそのデータ転送方法に関する。
【背景技術】
【０００２】
従来、ＣＰＵ（Central Processing Unit）に負荷を与えることなくデータ転送を行うダイレクトメモリアクセス（ＤＭＡ：Direct Memory Access）転送方式が提案されている（例えば特許文献１を参照）。ダイレクトメモリアクセス転送方式では、ダイレクトメモリアクセスコントローラ（ＤＭＡＣ：DMA Controller）が、ＣＰＵの処理を介することなく、データ転送の処理内容を示す設定値に従ってメモリ間のデータ転送を行う。
【０００３】
図８は、従来のＤＭＡＣの構成を表す機能ブロック図である。ＤＭＡＣ２００は、起動パルスカウンタ２０１、ローカルカウンタ２０２、複数の設定値記憶部２０３、複数のスケジューラ２０４、転送部２０５を備え、起動パルス発生部１００から起動パルスを受けて動作する。
【０００４】
まず、従来のＤＭＡＣ２００の各機能部について説明する。起動パルスカウンタ２０１は、起動パルス発生部１００から発生する起動パルスをＤＭＡＣ２００が受信した回数を計数する。ローカルカウンタ２０２は、ＤＭＡＣ２００が起動パルスを受信したことを契機として、起動パルスの周期よりも短い周期でカウントを開始し、各カウント値（ローカルカウント値）を表す信号を出力する。設定値記憶部２０３は、複数のデータ転送の処理内容（転送元メモリアドレス及び転送先メモリアドレス）を示す設定値を、ローカルカウント値と対応付けて記憶する。スケジューラ２０４は、設定値記憶部２０３毎に配置され、対応する設定値記憶部２０３に記憶される設定値に従って、データ転送を転送部２０５に指示する。転送部２０５は、スケジューラ２０４の指示に従って、ＤＭＡ転送方式によるデータ転送を行う。
【０００５】
次に、従来のＤＭＡＣ２００の動作について説明する。図９は、従来のＤＭＡＣの動作の概略を表す概略図である。ＤＭＡＣ２００が起動パルス発生部１００から起動パルスを受信すると、ＤＭＡＣ２００の起動パルスカウンタ２０１は起動パルスの受信回数を計数し、その数を表す信号を各スケジューラ２０４に送信する。また、起動パルス発生部１００から起動パルスを受けると、ローカルカウンタ２０２は各スケジューラ２０４へのローカルカウント値の送信を開始する。各スケジューラ２０４は、起動パルスの受信回数に従って、自身が動作するタイミングであるか否か判断する。自装置が動作するタイミングであると判断したスケジューラ２０４は、対応する設定値記憶部２０３から、ローカルカウント値に対応するデータ転送の処理内容を読み出し、転送部２０５にデータ転送を指示する。図９の場合、まずデータ転送Ａ・Ｂ・Ｃを指示するスケジューラ２０４が、自装置が動作するタイミングであると判断する。そして、このスケジューラ２０４が、受信したローカルカウント値に対応する、データ転送Ａの処理内容、データ転送Ｂの処理内容、データ転送Ｃの処理内容を順に設定値記憶部２０３から読み出し、転送部２０５へそれぞれの処理内容に応じたデータ転送の指示を行う。次に起動パルスが受信された際には、データ転送Ｄ・Ｅ・Ｆを指示するスケジューラ２０４が、自装置が動作するタイミングであると判断し、同様に処理を行う。
【特許文献１】特開２００７−３１０７３５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
従来のＤＭＡＣ２００は、ＤＭＡＣ２００の動作に必要な設定値の数と同数の設定値記憶部２０３及びスケジューラ２０４を備えなければならなかった。例えば、図９の場合、データ転送Ａ・Ｂ・Ｃを表す設定値に対応する設定値記憶部２０３及びスケジューラ２０４と、データ転送Ｄ・Ｅ・Ｆを表す設定値に対応する設定値記憶部２０３及びスケジューラ２０４とが必要となる。したがって、従来は、ＤＭＡＣ２００に設定される設定値の数に応じて、ＤＭＡＣ２００に配置される設定値記憶部２０３及びスケジューラ２０４の数が増大してしまうという問題があった。
【０００７】
上記事情に鑑み、本発明は、ダイレクトメモリアクセス転送方式でデータ転送を行うデータ転送装置において、配置される設定値記憶部およびスケジューラの数が設定値の数に応じて増大することを抑止可能とするデータ転送装置及びデータ転送方法を提供することを目的としている。
【課題を解決するための手段】
【０００８】
［１］上記の課題を解決するため、本発明の一態様によるデータ転送装置は、データ転送の転送元メモリアドレスと転送先メモリアドレスとの組み合わせを有する設定値を記憶する設定値記憶部と、外部の記憶部に記憶される前記設定値を前記設定値記憶部へ転送する設定値転送部と、前記設定値記憶部に記憶される設定値に従って、組み合わせとなっている前記転送元メモリアドレスから転送先メモリアドレスへ、ダイレクトメモリアクセスによってデータを転送する転送部と、を備える。
【０００９】
［２］また、本発明の一態様は、上記のデータ転送装置において、前記設定値記憶部に記憶される前記設定値は複数の前記組み合わせを有し、前記設定値記憶部に記憶される前記設定値は、前記外部の記憶部が前記設定値を記憶しているメモリアドレスと、前記設定値記憶部が前記設定値を記憶するメモリアドレスとを、それぞれ転送元メモリアドレスと転送先メモリアドレスとする組み合わせを有し、前記設定値転送部は、前記外部の記憶部が前記設定値を記憶しているメモリアドレスと、前記設定値記憶部が前記設定値を記憶するメモリアドレスとを、それぞれ転送元メモリアドレスと転送先メモリアドレスとする組み合わせ以外の全ての組み合わせについて前記転送部がデータを転送した後に、前記設定値記憶部に記憶される前記設定値に従って、ダイレクトメモリアクセスによって前記外部の記憶部から前記設定値記憶部へ設定値のデータを転送する、ことを特徴とする。
【００１０】
［３］また、本発明の一態様は、上記のデータ転送装置において、前記設定値記憶部は当該データ転送装置のスレーブとして機能することを特徴とする。
【００１１】
［４］また、本発明の一態様は、上述した設定値記憶部を備えるデータ転送装置が行うデータ転送方法として特定されても良い。
【発明の効果】
【００１２】
本発明により、ダイレクトメモリアクセス転送方式でデータ転送を行うデータ転送装置において、配置される設定値記憶部およびスケジューラの数が設定値の数に応じて増大することを抑止することが可能となる。
【発明を実施するための最良の形態】
【００１３】
図１は、ＤＭＡＣ（本発明における「データ転送装置」に相当）の機能構成を表す機能ブロック図である。図示するように、ＤＭＡＣ３は起動パルス発生部１と外部メモリ２とに接続される。
起動パルス発生部１は、定期的に起動パルスを発生する。
外部メモリ２（本発明における「外部の記憶部」に相当）は、ＤＭＡＣ３とは異なるデバイスとして構成され、データバスに接続され、設定値を記憶する。外部メモリ２は、例えばＤＭＡＣ３が搭載されるコンピュータシステムにおけるメインメモリや補助記憶装置を用いて実現される。
【００１４】
ＤＭＡＣ３は、設定値記憶部３１、ローカルカウンタ３２、スケジューラ３３、スケジュール書換部３４、転送部３５を備える。
設定値記憶部３１は、ＤＭＡＣ３の外部のデータバスに接続され、スケジュール書換部３４のスレーブとして動作し、スケジュール書換部３４からデータの書き換えを受ける。また、設定値記憶部３１は、複数のデータ転送情報（本発明における「組み合わせ」に相当）を含む設定値を一つ記憶する。各データ転送情報は、データ転送元のメモリアドレス（転送元アドレス）と、データ転送先のメモリアドレス（転送先アドレス）と、転送されるデータ量（データ量）とを有する。
【００１５】
ローカルカウンタ３２は、起動パルス発生部１から起動パルスを受信すると、起動パルスよりも短い周期でカウントを開始し、累積されたカウント値（ローカルカウント値）を表す信号を、カウントを行う度に出力する。
スケジューラ３３は、ローカルカウンタ３２によって出力されるローカルカウント値に応じたデータ転送情報を設定値記憶部３１から読み出し、読み出されたデータ転送情報に従ってスケジュール書換部３４及び転送部３５にデータ転送の指示を行う。
【００１６】
スケジュール書換部（本発明における「設定値転送部」に相当）３４は、ＤＭＡＣ３の外部のデータバスに接続され、スケジューラ３３の指示に従って、ＤＭＡ転送方式によって、即ちＣＰＵの処理を介さずに、外部メモリ２に記憶される設定値を設定値記憶部３１へ転送する。
【００１７】
転送部３５は、ＤＭＡＣ３の外部のデータバスに接続され、スケジューラ３３の指示に従って、ＤＭＡ転送方式によって、即ちＣＰＵの処理を介さずに、データバスに接続される装置間でのデータ転送を制御する。
【００１８】
図２は、外部メモリ２が記憶するデータの概略を表す概略図である。外部メモリ２は、ＤＭＡＣ２のスケジュール書換部３４がアクセス可能なメモリ領域に、複数の設定値を記憶する。
【００１９】
図３は、設定値の内容の概略を表す概略図である。設定値は、ローカルカウント値と、転送元アドレスと、転送先アドレスと、データ量と、を対応付けたデータ転送情報を複数有する。例えば、図３の場合、ローカルカウント値１、転送元アドレスＳ＿Ａ、転送先アドレスＤ＿Ａ、データ量Ａ＿Ａの組み合わせが一つのデータ転送情報を表し、設定値は四つのデータ転送情報を有する。
【００２０】
設定値の各項目の具体的な内容について説明する。ローカルカウント値は、ローカルカウンタ３２から出力されるカウンタ値に対応し、各データ転送情報に従ったデータ転送が実行されるタイミングを示す。転送元アドレスは、スケジュール書換部３４及び転送部３５が行うデータ転送の転送元のメモリアドレスを示す。転送先アドレスは、スケジュール書換部３４及び転送部３５が行うデータ転送の転送先のメモリアドレスを示す。データ量は、スケジュール書換部３４及び転送部３５が行うデータ転送において転送されるデータ量を示す。例えば、図３の設定値が設定値記憶部３１に記憶される場合、ローカルカウンタ３２がローカルカウント値“１”を出力すると、スケジューラ３３は転送部３５へデータ転送の指示を行い、この指示に従って転送部３５はメモリアドレスＳ＿ＡからメモリアドレスＤ＿Ａへデータ量Ａ＿Ａのデータ転送を行う。
【００２１】
一つの設定値に含まれる複数のデータ転送情報のうち、最後に実行されるデータ転送情報（即ちローカルカウント値が最大のデータ転送情報）は、スケジュール書換部３４によって実行されるデータ転送の内容を表す。このようなデータ転送情報では、転送元アドレスは外部メモリ２において設定値が記憶されるメモリアドレスを示し、転送先アドレスは設定値記憶部３１において設定値が記憶されるメモリアドレスを示し、データ量は設定値のデータ量を示す。図３の場合、Ｓ＿Ｘ１は外部メモリ２が設定値を記憶しているメモリアドレスを示し、Ｄ＿Ｘ１は設定値記憶部３１のメモリアドレスを示す。
【００２２】
図４は、ＤＭＡＣ３の動作例を表すフローチャートである。図５は、ＤＭＡＣ３の動作の概略を表す概略図である。以下、図４及び図５を用いて、設定値記憶部３１が図３に示される設定値を記憶している場合のＤＭＡＣ３の動作について説明する。
【００２３】
まず、起動パルス発生部１から起動パルスを受信するまでＤＭＡＣ３は待機する（ステップＳ０１−ＮＯ）。ＤＭＡＣ３は、起動パルス発生部１から起動パルスを受信すると（ステップＳ０１−ＹＥＳ）、ローカルカウンタ３２は、定期的にローカルカウント値を表す信号を出力する（ステップＳ０２）。
【００２４】
その後、スケジューラ３３は、ローカルカウンタ３２によって出力されたローカルカウント値に対応するデータ転送情報を設定値記憶部３１から読み出す。まず、ローカルカウンタ３２からローカルカウント値１を表す信号が出力されると、スケジューラ３３は、ローカルカウント値１に対応するデータ転送情報を設定値記憶部３１から読み出す。具体的には、スケジューラ３３は、転送元アドレスＳ＿Ａ、転送先アドレスＤ＿Ａ、データ量Ａ＿Ａを読み出す。なお、ローカルカウント値に対応するデータ伝送情報が設定値記憶部３１に記憶されていない場合には、スケジューラ３３は次のローカルカウント値を表す信号が出力されるまで待機する。
【００２５】
次に、スケジューラ３３は、読み出されたデータ転送情報の転送先が設定値記憶部３１であるか否か判断する（ステップＳ０４）。具体的には、スケジューラ３３は、設定値記憶部３１が設定値のデータを格納するメモリアドレス（以下、「設定値格納メモリアドレス」という。）を予め記憶し、読み出されたデータ転送情報の転送先のメモリアドレスが設定値格納メモリアドレスである場合には、読み出されたデータ転送情報の転送先が設定値記憶部３１であると判断する。逆に、スケジューラ３３は、読み出されたデータ転送情報の転送先のメモリアドレスが設定値格納メモリアドレスでない場合には、読み出されたデータ転送情報の転送先が設定値記憶部３１ではないと判断する。本説明においては、設定値格納メモリアドレスがＤ＿Ｘ１である場合について説明する。この場合、上述したように読み出された転送先アドレスはＤ＿ＡであってＤ＿Ｘ１ではないため、転送先は設定値記憶部３１ではない。
【００２６】
読み出されたデータ転送情報の転送先が設定値記憶部３１ではない場合は（ステップＳ０４−ＮＯ）、スケジューラ３３は読み出されたデータ転送情報に従って転送部３５にデータ転送の指示を行う（ステップＳ０５）。転送部３５は、スケジューラ３３によって読み出されたデータ転送情報に従って、転送元アドレスから転送先アドレスへＤＭＡによるデータの転送を行う（ステップＳ０６）。具体的には、転送部３５は、メモリアドレスＳ＿ＡからＡ＿Ａ分のデータ量のデータをメモリアドレスＤ＿Ａへ転送する（図５の矩形Ａに相当）。その後、転送部３５は、ローカルカウント値が３、５のタイミングで、それぞれデータ転送を行う（図５の矩形Ｂ、Ｃに相当）。
【００２７】
その後、ローカルカウント値が７のタイミングで、スケジューラ３３は、転送元アドレスＳ＿Ｘ１、転送先アドレスＤ＿Ｘ１、データ量Ａ＿Ｘ１を読み出す。この場合、読み出された転送先アドレスは設定値格納メモリアドレスであり、データ転送情報の転送先が設定値記憶部３１である。読み出されたデータ転送情報の転送先が設定値記憶部３１である場合は（ステップＳ０４−ＹＥＳ）、スケジューラ３３は読み出されたデータ転送情報に従ってスケジュール書換部３４にデータ転送の指示を行う（ステップＳ０７）。スケジュール書換部３４は、スケジューラ３３によって読み出されたデータ転送情報に従って、外部メモリ２内の転送元アドレスから設定値記憶部３１内の転送先アドレスへ、設定値を表すデータを、ＤＭＡによりデータ転送し、設定値記憶部３１に記憶される設定値の内容を書き換える（ステップＳ０８）。具体的には、スケジュール書換部３４は、外部メモリ２内のメモリアドレスＳ＿Ｘ１から、Ａ＿Ｘ１分のデータ量の設定値のデータを、設定値記憶部３１内のメモリアドレスＤ＿Ａへ転送する（図５の矩形Ｘ１に相当）。
【００２８】
その後、ＤＭＡＣ３は待機状態となり、再び起動パルス発生部１から起動パルスを受信すると（ステップＳ０１−ＹＥＳ）、ステップＳ０８の処理によって書き換えられた新たな設定値に従ってステップＳ０２以降の処理を行う（図５の矩形Ｄ、Ｅ、Ｆ、Ｘ２に相当）。
【００２９】
このように構成されたＤＭＡＣ３では、設定値記憶部３１が記憶する設定値が、スケジュール書換部３４によって、外部メモリ２に記憶されている他の設定値に書き換えられる。そのため、ＤＭＡＣ３が複数の設定値を必要とする場合であっても、ＤＭＡＣ３は全ての設定値を設定値記憶部３１に記憶しておく必要が無い。即ち、一つの設定値を設定値記憶部３１が記憶し、残る他の設定値を外部メモリ２に記憶させ、スケジュール書換部３４が設定値記憶部３１に記憶される設定値を外部メモリ２に記憶される設定値に書き換えることによって、ＤＭＡＣ３内で保持する設定値の数を削減することが可能となる。したがって、従来のように複数の設定値毎に複数の設定値記憶部３１及びスケジューラ３３をＤＭＡＣ３に配置する必要が無く、ＤＭＡＣ３に配置される設定値記憶部３１及びスケジューラ３３の数が増大することを抑止することが可能となる。
【００３０】
また、このように構成されたＤＭＡＣ３では、起動パルスの受信回数を計数する起動パルスカウンタを備える必要が無いため、ＤＭＡＣ３の回路面積の縮小化や回路構成の簡易化を図ることが可能となる。
【００３１】
＜変形例＞
図６は、ＤＭＡＣ３の変形例の機能ブロックを表す図である。上述した説明では、設定値記憶部３１はデータバスを介して設定値のデータを受信するが、設定値記憶部３１はデータバスに接続されず、スケジュール書換部３４から設定値のデータを直接受信しても良い。即ち、スケジュール書換部３４は、データバスを介して外部メモリ２から設定値記憶部３１へ設定値のデータを転送するのではなく、外部メモリ２から設定値のデータを読み出し、読み出したデータをＤＭＡＣ３内のバスを通じて設定値記憶部３１に書き込むように構成されても良い。
【００３２】
図７は、ＤＭＡＣ３の他の変形例の機能ブロックを表す図である。上述した説明では、ＤＭＡＣ３はスケジュール書換部３４を備え、スケジュール書換部３４が外部メモリ２と設定値記憶部３１との間のデータ転送を行い、設定値記憶部３１に記憶される設定値を書き換えるが、スケジュール書換部３４の処理を転送部３５が行うように構成されても良い。この場合、スケジューラ３３は、図４のフローチャートにおけるステップＳ０４の判断処理を行うことなく、全てのデータ転送情報に関して転送部３５に対しデータ転送を指示する。また、転送部３５は、データ転送の指示に従いＤＭＡ転送を行う。そして、データ転送情報の転送元アドレスが外部メモリ２であって転送先アドレスが設定値記憶部３１である場合には、転送部３５は、このデータ転送情報に従って、外部メモリ２の転送元アドレスから設定記憶部３１の転送先アドレスへ設定値のデータをＤＭＡ転送する。
【００３３】
また、設定値記憶部３１は、初期値として、外部メモリ２が最初に実行されるべきデータ転送の内容を示す設定値を記憶しているメモリアドレスを転送元アドレスとし、設定値記憶部３１のメモリアドレスを転送先アドレスとした設定値を固定的にＲＯＭ（Read Only Memory）に記憶しても良い。その場合、スケジューラ３３は、最初に動作する際には、このＲＯＭから設定値を読み出す。また、設定値記憶部３１は、初期値として、外部のプロセッサ（例えばＣＰＵ）から、動的に設定値を書き込まれても良い。
【００３４】
以上、この発明の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
【図面の簡単な説明】
【００３５】
【図１】ダイレクトメモリアクセスコントローラの機能構成を表す機能ブロック図である。
【図２】外部メモリが記憶するデータの概略を表す概略図である。
【図３】設定値の内容の概略を表す概略図である。
【図４】ダイレクトメモリアクセスコントローラの動作例を表すフローチャートである。
【図５】ダイレクトメモリアクセスコントローラの動作の概略を表す概略図である。
【図６】ダイレクトメモリアクセスコントローラの変形例の機能構成を表す機能ブロック図である。
【図７】ダイレクトメモリアクセスコントローラの変形例の機能構成を表す機能ブロック図である。
【図８】従来技術におけるダイレクトメモリアクセスコントローラの機能構成を表す機能ブロック図である。
【図９】従来技術におけるダイレクトメモリアクセスコントローラの動作の概略を表す概略図である。
【符号の説明】
【００３６】
１…起動パルス発生部，  ２…外部メモリ，  ３…ＤＭＡＣ（データ転送装置），  ３１…設定値記憶部（設定値記憶部），  ３２…ローカルカウンタ，  ３３…スケジューラ，  ３４…スケジュール書換部（設定値転送部），  ３５…転送部
【図１】
2010026762.tif 000003
【図２】
2010026762.tif 000004
【図３】
2010026762.tif 000005
【図４】
2010026762.tif 000006
【図５】
2010026762.tif 000007
【図６】
2010026762.tif 000008
【図７】
2010026762.tif 000009
【図８】
2010026762.tif 000010
【図９】
2010026762.tif 000011