説明

データ転送装置及びデータ転送方法。

【課題】ダイレクトメモリアクセス転送方式でデータ転送を行うデータ転送装置において、配置される設定値記憶部およびスケジューラの数が設定値の数に応じて増大することを抑止すること。
【解決手段】データ転送の転送元メモリアドレスと転送先メモリアドレスとの組み合わせを有する設定値を記憶する設定値記憶部を備えるデータ転送装置が、外部の記憶部に記憶される設定値を設定値記憶部へ転送し、設定値記憶部に記憶される設定値に従って、組み合わせとなっている転送元メモリアドレスから転送先メモリアドレスへ、ダイレクトメモリアクセスによってデータを転送する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ダイレクトメモリアクセスによってデータの転送を行うデータ転送装置及びそのデータ転送方法に関する。
【背景技術】
【0002】
従来、CPU(Central Processing Unit)に負荷を与えることなくデータ転送を行うダイレクトメモリアクセス(DMA:Direct Memory Access)転送方式が提案されている(例えば特許文献1を参照)。ダイレクトメモリアクセス転送方式では、ダイレクトメモリアクセスコントローラ(DMAC:DMA Controller)が、CPUの処理を介することなく、データ転送の処理内容を示す設定値に従ってメモリ間のデータ転送を行う。
【0003】
図8は、従来のDMACの構成を表す機能ブロック図である。DMAC200は、起動パルスカウンタ201、ローカルカウンタ202、複数の設定値記憶部203、複数のスケジューラ204、転送部205を備え、起動パルス発生部100から起動パルスを受けて動作する。
【0004】
まず、従来のDMAC200の各機能部について説明する。起動パルスカウンタ201は、起動パルス発生部100から発生する起動パルスをDMAC200が受信した回数を計数する。ローカルカウンタ202は、DMAC200が起動パルスを受信したことを契機として、起動パルスの周期よりも短い周期でカウントを開始し、各カウント値(ローカルカウント値)を表す信号を出力する。設定値記憶部203は、複数のデータ転送の処理内容(転送元メモリアドレス及び転送先メモリアドレス)を示す設定値を、ローカルカウント値と対応付けて記憶する。スケジューラ204は、設定値記憶部203毎に配置され、対応する設定値記憶部203に記憶される設定値に従って、データ転送を転送部205に指示する。転送部205は、スケジューラ204の指示に従って、DMA転送方式によるデータ転送を行う。
【0005】
次に、従来のDMAC200の動作について説明する。図9は、従来のDMACの動作の概略を表す概略図である。DMAC200が起動パルス発生部100から起動パルスを受信すると、DMAC200の起動パルスカウンタ201は起動パルスの受信回数を計数し、その数を表す信号を各スケジューラ204に送信する。また、起動パルス発生部100から起動パルスを受けると、ローカルカウンタ202は各スケジューラ204へのローカルカウント値の送信を開始する。各スケジューラ204は、起動パルスの受信回数に従って、自身が動作するタイミングであるか否か判断する。自装置が動作するタイミングであると判断したスケジューラ204は、対応する設定値記憶部203から、ローカルカウント値に対応するデータ転送の処理内容を読み出し、転送部205にデータ転送を指示する。図9の場合、まずデータ転送A・B・Cを指示するスケジューラ204が、自装置が動作するタイミングであると判断する。そして、このスケジューラ204が、受信したローカルカウント値に対応する、データ転送Aの処理内容、データ転送Bの処理内容、データ転送Cの処理内容を順に設定値記憶部203から読み出し、転送部205へそれぞれの処理内容に応じたデータ転送の指示を行う。次に起動パルスが受信された際には、データ転送D・E・Fを指示するスケジューラ204が、自装置が動作するタイミングであると判断し、同様に処理を行う。
【特許文献1】特開2007−310735号公報
【発明の開示】
【発明が解決しようとする課題】
【0006】
従来のDMAC200は、DMAC200の動作に必要な設定値の数と同数の設定値記憶部203及びスケジューラ204を備えなければならなかった。例えば、図9の場合、データ転送A・B・Cを表す設定値に対応する設定値記憶部203及びスケジューラ204と、データ転送D・E・Fを表す設定値に対応する設定値記憶部203及びスケジューラ204とが必要となる。したがって、従来は、DMAC200に設定される設定値の数に応じて、DMAC200に配置される設定値記憶部203及びスケジューラ204の数が増大してしまうという問題があった。
【0007】
上記事情に鑑み、本発明は、ダイレクトメモリアクセス転送方式でデータ転送を行うデータ転送装置において、配置される設定値記憶部およびスケジューラの数が設定値の数に応じて増大することを抑止可能とするデータ転送装置及びデータ転送方法を提供することを目的としている。
【課題を解決するための手段】
【0008】
[1]上記の課題を解決するため、本発明の一態様によるデータ転送装置は、データ転送の転送元メモリアドレスと転送先メモリアドレスとの組み合わせを有する設定値を記憶する設定値記憶部と、外部の記憶部に記憶される前記設定値を前記設定値記憶部へ転送する設定値転送部と、前記設定値記憶部に記憶される設定値に従って、組み合わせとなっている前記転送元メモリアドレスから転送先メモリアドレスへ、ダイレクトメモリアクセスによってデータを転送する転送部と、を備える。
【0009】
[2]また、本発明の一態様は、上記のデータ転送装置において、前記設定値記憶部に記憶される前記設定値は複数の前記組み合わせを有し、前記設定値記憶部に記憶される前記設定値は、前記外部の記憶部が前記設定値を記憶しているメモリアドレスと、前記設定値記憶部が前記設定値を記憶するメモリアドレスとを、それぞれ転送元メモリアドレスと転送先メモリアドレスとする組み合わせを有し、前記設定値転送部は、前記外部の記憶部が前記設定値を記憶しているメモリアドレスと、前記設定値記憶部が前記設定値を記憶するメモリアドレスとを、それぞれ転送元メモリアドレスと転送先メモリアドレスとする組み合わせ以外の全ての組み合わせについて前記転送部がデータを転送した後に、前記設定値記憶部に記憶される前記設定値に従って、ダイレクトメモリアクセスによって前記外部の記憶部から前記設定値記憶部へ設定値のデータを転送する、ことを特徴とする。
【0010】
[3]また、本発明の一態様は、上記のデータ転送装置において、前記設定値記憶部は当該データ転送装置のスレーブとして機能することを特徴とする。
【0011】
[4]また、本発明の一態様は、上述した設定値記憶部を備えるデータ転送装置が行うデータ転送方法として特定されても良い。
【発明の効果】
【0012】
本発明により、ダイレクトメモリアクセス転送方式でデータ転送を行うデータ転送装置において、配置される設定値記憶部およびスケジューラの数が設定値の数に応じて増大することを抑止することが可能となる。
【発明を実施するための最良の形態】
【0013】
図1は、DMAC(本発明における「データ転送装置」に相当)の機能構成を表す機能ブロック図である。図示するように、DMAC3は起動パルス発生部1と外部メモリ2とに接続される。
起動パルス発生部1は、定期的に起動パルスを発生する。
外部メモリ2(本発明における「外部の記憶部」に相当)は、DMAC3とは異なるデバイスとして構成され、データバスに接続され、設定値を記憶する。外部メモリ2は、例えばDMAC3が搭載されるコンピュータシステムにおけるメインメモリや補助記憶装置を用いて実現される。
【0014】
DMAC3は、設定値記憶部31、ローカルカウンタ32、スケジューラ33、スケジュール書換部34、転送部35を備える。
設定値記憶部31は、DMAC3の外部のデータバスに接続され、スケジュール書換部34のスレーブとして動作し、スケジュール書換部34からデータの書き換えを受ける。また、設定値記憶部31は、複数のデータ転送情報(本発明における「組み合わせ」に相当)を含む設定値を一つ記憶する。各データ転送情報は、データ転送元のメモリアドレス(転送元アドレス)と、データ転送先のメモリアドレス(転送先アドレス)と、転送されるデータ量(データ量)とを有する。
【0015】
ローカルカウンタ32は、起動パルス発生部1から起動パルスを受信すると、起動パルスよりも短い周期でカウントを開始し、累積されたカウント値(ローカルカウント値)を表す信号を、カウントを行う度に出力する。
スケジューラ33は、ローカルカウンタ32によって出力されるローカルカウント値に応じたデータ転送情報を設定値記憶部31から読み出し、読み出されたデータ転送情報に従ってスケジュール書換部34及び転送部35にデータ転送の指示を行う。
【0016】
スケジュール書換部(本発明における「設定値転送部」に相当)34は、DMAC3の外部のデータバスに接続され、スケジューラ33の指示に従って、DMA転送方式によって、即ちCPUの処理を介さずに、外部メモリ2に記憶される設定値を設定値記憶部31へ転送する。
【0017】
転送部35は、DMAC3の外部のデータバスに接続され、スケジューラ33の指示に従って、DMA転送方式によって、即ちCPUの処理を介さずに、データバスに接続される装置間でのデータ転送を制御する。
【0018】
図2は、外部メモリ2が記憶するデータの概略を表す概略図である。外部メモリ2は、DMAC2のスケジュール書換部34がアクセス可能なメモリ領域に、複数の設定値を記憶する。
【0019】
図3は、設定値の内容の概略を表す概略図である。設定値は、ローカルカウント値と、転送元アドレスと、転送先アドレスと、データ量と、を対応付けたデータ転送情報を複数有する。例えば、図3の場合、ローカルカウント値1、転送元アドレスS_A、転送先アドレスD_A、データ量A_Aの組み合わせが一つのデータ転送情報を表し、設定値は四つのデータ転送情報を有する。
【0020】
設定値の各項目の具体的な内容について説明する。ローカルカウント値は、ローカルカウンタ32から出力されるカウンタ値に対応し、各データ転送情報に従ったデータ転送が実行されるタイミングを示す。転送元アドレスは、スケジュール書換部34及び転送部35が行うデータ転送の転送元のメモリアドレスを示す。転送先アドレスは、スケジュール書換部34及び転送部35が行うデータ転送の転送先のメモリアドレスを示す。データ量は、スケジュール書換部34及び転送部35が行うデータ転送において転送されるデータ量を示す。例えば、図3の設定値が設定値記憶部31に記憶される場合、ローカルカウンタ32がローカルカウント値“1”を出力すると、スケジューラ33は転送部35へデータ転送の指示を行い、この指示に従って転送部35はメモリアドレスS_AからメモリアドレスD_Aへデータ量A_Aのデータ転送を行う。
【0021】
一つの設定値に含まれる複数のデータ転送情報のうち、最後に実行されるデータ転送情報(即ちローカルカウント値が最大のデータ転送情報)は、スケジュール書換部34によって実行されるデータ転送の内容を表す。このようなデータ転送情報では、転送元アドレスは外部メモリ2において設定値が記憶されるメモリアドレスを示し、転送先アドレスは設定値記憶部31において設定値が記憶されるメモリアドレスを示し、データ量は設定値のデータ量を示す。図3の場合、S_X1は外部メモリ2が設定値を記憶しているメモリアドレスを示し、D_X1は設定値記憶部31のメモリアドレスを示す。
【0022】
図4は、DMAC3の動作例を表すフローチャートである。図5は、DMAC3の動作の概略を表す概略図である。以下、図4及び図5を用いて、設定値記憶部31が図3に示される設定値を記憶している場合のDMAC3の動作について説明する。
【0023】
まず、起動パルス発生部1から起動パルスを受信するまでDMAC3は待機する(ステップS01−NO)。DMAC3は、起動パルス発生部1から起動パルスを受信すると(ステップS01−YES)、ローカルカウンタ32は、定期的にローカルカウント値を表す信号を出力する(ステップS02)。
【0024】
その後、スケジューラ33は、ローカルカウンタ32によって出力されたローカルカウント値に対応するデータ転送情報を設定値記憶部31から読み出す。まず、ローカルカウンタ32からローカルカウント値1を表す信号が出力されると、スケジューラ33は、ローカルカウント値1に対応するデータ転送情報を設定値記憶部31から読み出す。具体的には、スケジューラ33は、転送元アドレスS_A、転送先アドレスD_A、データ量A_Aを読み出す。なお、ローカルカウント値に対応するデータ伝送情報が設定値記憶部31に記憶されていない場合には、スケジューラ33は次のローカルカウント値を表す信号が出力されるまで待機する。
【0025】
次に、スケジューラ33は、読み出されたデータ転送情報の転送先が設定値記憶部31であるか否か判断する(ステップS04)。具体的には、スケジューラ33は、設定値記憶部31が設定値のデータを格納するメモリアドレス(以下、「設定値格納メモリアドレス」という。)を予め記憶し、読み出されたデータ転送情報の転送先のメモリアドレスが設定値格納メモリアドレスである場合には、読み出されたデータ転送情報の転送先が設定値記憶部31であると判断する。逆に、スケジューラ33は、読み出されたデータ転送情報の転送先のメモリアドレスが設定値格納メモリアドレスでない場合には、読み出されたデータ転送情報の転送先が設定値記憶部31ではないと判断する。本説明においては、設定値格納メモリアドレスがD_X1である場合について説明する。この場合、上述したように読み出された転送先アドレスはD_AであってD_X1ではないため、転送先は設定値記憶部31ではない。
【0026】
読み出されたデータ転送情報の転送先が設定値記憶部31ではない場合は(ステップS04−NO)、スケジューラ33は読み出されたデータ転送情報に従って転送部35にデータ転送の指示を行う(ステップS05)。転送部35は、スケジューラ33によって読み出されたデータ転送情報に従って、転送元アドレスから転送先アドレスへDMAによるデータの転送を行う(ステップS06)。具体的には、転送部35は、メモリアドレスS_AからA_A分のデータ量のデータをメモリアドレスD_Aへ転送する(図5の矩形Aに相当)。その後、転送部35は、ローカルカウント値が3、5のタイミングで、それぞれデータ転送を行う(図5の矩形B、Cに相当)。
【0027】
その後、ローカルカウント値が7のタイミングで、スケジューラ33は、転送元アドレスS_X1、転送先アドレスD_X1、データ量A_X1を読み出す。この場合、読み出された転送先アドレスは設定値格納メモリアドレスであり、データ転送情報の転送先が設定値記憶部31である。読み出されたデータ転送情報の転送先が設定値記憶部31である場合は(ステップS04−YES)、スケジューラ33は読み出されたデータ転送情報に従ってスケジュール書換部34にデータ転送の指示を行う(ステップS07)。スケジュール書換部34は、スケジューラ33によって読み出されたデータ転送情報に従って、外部メモリ2内の転送元アドレスから設定値記憶部31内の転送先アドレスへ、設定値を表すデータを、DMAによりデータ転送し、設定値記憶部31に記憶される設定値の内容を書き換える(ステップS08)。具体的には、スケジュール書換部34は、外部メモリ2内のメモリアドレスS_X1から、A_X1分のデータ量の設定値のデータを、設定値記憶部31内のメモリアドレスD_Aへ転送する(図5の矩形X1に相当)。
【0028】
その後、DMAC3は待機状態となり、再び起動パルス発生部1から起動パルスを受信すると(ステップS01−YES)、ステップS08の処理によって書き換えられた新たな設定値に従ってステップS02以降の処理を行う(図5の矩形D、E、F、X2に相当)。
【0029】
このように構成されたDMAC3では、設定値記憶部31が記憶する設定値が、スケジュール書換部34によって、外部メモリ2に記憶されている他の設定値に書き換えられる。そのため、DMAC3が複数の設定値を必要とする場合であっても、DMAC3は全ての設定値を設定値記憶部31に記憶しておく必要が無い。即ち、一つの設定値を設定値記憶部31が記憶し、残る他の設定値を外部メモリ2に記憶させ、スケジュール書換部34が設定値記憶部31に記憶される設定値を外部メモリ2に記憶される設定値に書き換えることによって、DMAC3内で保持する設定値の数を削減することが可能となる。したがって、従来のように複数の設定値毎に複数の設定値記憶部31及びスケジューラ33をDMAC3に配置する必要が無く、DMAC3に配置される設定値記憶部31及びスケジューラ33の数が増大することを抑止することが可能となる。
【0030】
また、このように構成されたDMAC3では、起動パルスの受信回数を計数する起動パルスカウンタを備える必要が無いため、DMAC3の回路面積の縮小化や回路構成の簡易化を図ることが可能となる。
【0031】
<変形例>
図6は、DMAC3の変形例の機能ブロックを表す図である。上述した説明では、設定値記憶部31はデータバスを介して設定値のデータを受信するが、設定値記憶部31はデータバスに接続されず、スケジュール書換部34から設定値のデータを直接受信しても良い。即ち、スケジュール書換部34は、データバスを介して外部メモリ2から設定値記憶部31へ設定値のデータを転送するのではなく、外部メモリ2から設定値のデータを読み出し、読み出したデータをDMAC3内のバスを通じて設定値記憶部31に書き込むように構成されても良い。
【0032】
図7は、DMAC3の他の変形例の機能ブロックを表す図である。上述した説明では、DMAC3はスケジュール書換部34を備え、スケジュール書換部34が外部メモリ2と設定値記憶部31との間のデータ転送を行い、設定値記憶部31に記憶される設定値を書き換えるが、スケジュール書換部34の処理を転送部35が行うように構成されても良い。この場合、スケジューラ33は、図4のフローチャートにおけるステップS04の判断処理を行うことなく、全てのデータ転送情報に関して転送部35に対しデータ転送を指示する。また、転送部35は、データ転送の指示に従いDMA転送を行う。そして、データ転送情報の転送元アドレスが外部メモリ2であって転送先アドレスが設定値記憶部31である場合には、転送部35は、このデータ転送情報に従って、外部メモリ2の転送元アドレスから設定記憶部31の転送先アドレスへ設定値のデータをDMA転送する。
【0033】
また、設定値記憶部31は、初期値として、外部メモリ2が最初に実行されるべきデータ転送の内容を示す設定値を記憶しているメモリアドレスを転送元アドレスとし、設定値記憶部31のメモリアドレスを転送先アドレスとした設定値を固定的にROM(Read Only Memory)に記憶しても良い。その場合、スケジューラ33は、最初に動作する際には、このROMから設定値を読み出す。また、設定値記憶部31は、初期値として、外部のプロセッサ(例えばCPU)から、動的に設定値を書き込まれても良い。
【0034】
以上、この発明の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
【図面の簡単な説明】
【0035】
【図1】ダイレクトメモリアクセスコントローラの機能構成を表す機能ブロック図である。
【図2】外部メモリが記憶するデータの概略を表す概略図である。
【図3】設定値の内容の概略を表す概略図である。
【図4】ダイレクトメモリアクセスコントローラの動作例を表すフローチャートである。
【図5】ダイレクトメモリアクセスコントローラの動作の概略を表す概略図である。
【図6】ダイレクトメモリアクセスコントローラの変形例の機能構成を表す機能ブロック図である。
【図7】ダイレクトメモリアクセスコントローラの変形例の機能構成を表す機能ブロック図である。
【図8】従来技術におけるダイレクトメモリアクセスコントローラの機能構成を表す機能ブロック図である。
【図9】従来技術におけるダイレクトメモリアクセスコントローラの動作の概略を表す概略図である。
【符号の説明】
【0036】
1…起動パルス発生部, 2…外部メモリ, 3…DMAC(データ転送装置), 31…設定値記憶部(設定値記憶部), 32…ローカルカウンタ, 33…スケジューラ, 34…スケジュール書換部(設定値転送部), 35…転送部

【特許請求の範囲】
【請求項1】
データ転送の転送元メモリアドレスと転送先メモリアドレスとの組み合わせを有する設定値を記憶する設定値記憶部と、
外部の記憶部に記憶される前記設定値を前記設定値記憶部へ転送する設定値転送部と、
前記設定値記憶部に記憶される設定値に従って、組み合わせとなっている前記転送元メモリアドレスから転送先メモリアドレスへ、ダイレクトメモリアクセスによってデータを転送する転送部と、
を備えるデータ転送装置。
【請求項2】
前記設定値記憶部に記憶される前記設定値は複数の前記組み合わせを有し、
前記設定値記憶部に記憶される前記設定値は、前記外部の記憶部が前記設定値を記憶しているメモリアドレスと、前記設定値記憶部が前記設定値を記憶するメモリアドレスとを、それぞれ転送元メモリアドレスと転送先メモリアドレスとする組み合わせを有し、
前記設定値転送部は、前記外部の記憶部が前記設定値を記憶しているメモリアドレスと、前記設定値記憶部が前記設定値を記憶するメモリアドレスとを、それぞれ転送元メモリアドレスと転送先メモリアドレスとする組み合わせ以外の全ての組み合わせについて前記転送部がデータを転送した後に、前記設定値記憶部に記憶される前記設定値に従って、ダイレクトメモリアクセスによって前記外部の記憶部から前記設定値記憶部へ設定値のデータを転送する、
請求項1に記載のデータ転送装置。
【請求項3】
前記設定値記憶部は当該データ転送装置のスレーブとして機能する、請求項1又は2に記載のデータ転送装置。
【請求項4】
データ転送の転送元メモリアドレスと転送先メモリアドレスとの組み合わせを有する設定値を記憶する設定値記憶部を備えるデータ転送装置が、外部の記憶部に記憶される前記設定値を前記設定値記憶部へ転送するステップと、
前記データ転送装置が、前記設定値記憶部に記憶される設定値に従って、組み合わせとなっている前記転送元メモリアドレスから転送先メモリアドレスへ、ダイレクトメモリアクセスによってデータを転送するステップと、
を含むデータ転送方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate


【公開番号】特開2010−26762(P2010−26762A)
【公開日】平成22年2月4日(2010.2.4)
【国際特許分類】
【出願番号】特願2008−187041(P2008−187041)
【出願日】平成20年7月18日(2008.7.18)
【出願人】(000004330)日本無線株式会社 (1,186)
【Fターム(参考)】