(57)【要約】【課題】本実施形態では、ダイレクトメモリメモリアクセス制御（DMAC）の機能アップ、融通性を実現する。【解決手段】実施形態によれば、ディスクリプタテーブルを複数格納しているディスクリプタテーブルメモリを有する。前記ディスクリプタテーブルは、複数のディスクリプタ側アドレスの記述領域を有するとともに、所定のディスクリプタ側アドレスの代わりにレジスタに記述されているレジスタ側アドレスを使用するか否かを示すオプション情報の記述領域を有する。レジスタは、前記レジスタ側アドレスの格納領域を有する。そして、ダイレクトメモリアクセス制御部は、シーケンスに応じて指定されるディスクリプタテーブルの記述内容を読み取り、前記オプション情報の内容に応じて、前記ディスクリプタ側アドレスの領域またはレジスタ側アドレスの領域のいずれかのアドレスを用いる。【選択図】図１
2012014436.tif 000002
【特許請求の範囲】
【請求項１】
複数のディスクリプタ側アドレスの記述領域と、所定のディスクリプタ側アドレスの代わりにレジスタに記述されているレジスタ側アドレスを使用するか否かを示すオプション情報の記述領域を有するディスクリプタテーブルを複数格納しているディスクリプタテーブルメモリと、
前記レジスタ側アドレスの格納領域を有するレジスタと、
シーケンスに応じて指定されるディスクリプタテーブルの前記オプション情報の内容に応じて、前記ディスクリプタ側アドレスの領域またはレジスタ側アドレスの領域のいずれかのアドレスを用いるダイレクトメモリアクセス制御部（１１）を有するダイレクトメモリアクセス制御装置。
【請求項２】
前記レジスタ側のアドレスは、前記ダイレクトメモリアクセス制御部により、書き換え可能である請求項1記載のダイレクトメモリアクセス制御装置。
【請求項３】
前記オプション情報は、前記レジスタ側アドレスの格納領域に関する命令であり、新たなレジスタ側アドレスの格納を指示する命令、又は、格納されているレジスタ側アドレスの使用を指示する命令のいずれかである請求項２記載のダイレクトメモリアクセス制御装置。
【請求項４】
前記複数のディスクリプタ側アドレスの記述領域は、次のディスクリプタテーブルを読み出すための次アドレスの記述領域と、前記レジスタ側アドレスの格納領域へ格納されるジャンプアドレスの記述領域を有し、
前記オプション情報の内容は前記レジスタ側アドレスを使用するのか、または前記ジャンプアドレスを前記レジスタに記述するのかいずれかを示している請求項２記載のダイレクトメモリアクセス制御装置。
【請求項５】
前記ジャンプアドレスは、サブルーチンに移行するためのアドレスである請求項４記載のダイレクトメモリアクセス制御装置。
【請求項６】
前記サブルーチンの最後に読み取られるディスクリプタテーブルのオプション情報は、前記レジスタ側アドレスを使用することを指令する情報である請求項５記載のダイレクトメモリアクセス制御装置。
【請求項７】
ディスクリプタテーブルを複数格納しているディスクリプタテーブルメモリと、レジスタと、シーケンスに応じて指定されるディスクリプタテーブルの記述内容を読み取り、メモリ制御のために少なくとも使用アドレスを決定するダイレクトメモリアクセス制御部を用いるダイレクトメモリアクセス制御方法において、
前記レジスタにはレジスタ側アドレスの格納領域を設け、
前記ディスクリプタテーブルには複数のディスクリプタ側アドレスの記述領域とオプション情報の記述領域を設け、
前記ダイレクトメモリアクセス制御部が前記オプション情報の内容に応じて、前記ディスクリプタ側アドレスの領域またはレジスタ側アドレスの領域のいずれかのアドレスを前記使用アドレスとして決定するダイレクトメモリアクセス制御方法。
【請求項８】
前記ダイレクトメモリアクセス制御部が前記レジスタ側のアドレスを書き換える請求項７記載のダイレクトメモリアクセス制御方法。
【請求項９】
前記オプション情報は、前記レジスタ側アドレスの格納領域に関する命令であり、新たなレジスタ側アドレスの格納を指示するか、又は、格納されているレジスタ側アドレスの使用を指示する請求項８記載のダイレクトメモリアクセス制御方法。
【請求項１０】
前記複数のディスクリプタ側アドレスの記述領域は、次のディスクリプタテーブルを読み出すための次アドレスの記述領域と、前記レジスタ側アドレスの格納領域へ格納されるジャンプアドレスの記述領域を有し、
前記オプション情報の内容は前記レジスタ側アドレスを使用するのか、または前記ジャンプアドレスを前記レジスタに記述するのかいずれかを示している請求項９記載のダイレクトメモリアクセス制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態はダイレクトメモリアクセス制御装置及び方法に関する。
【背景技術】
【０００２】
半導体メモリをアクセスしてデータ処理を行う高速データ処理装置においては、ダイレクトメモリアクセス（Direct Memory Access ：DMA）制御装置が利用される。DMA制御装置は、メモリとメモリの間、またはメモリと入出力デバイスの間のデータ転送を独自のシーケンス処理により実行する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開2005−275538号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
DMA制御装置の動作の一例を述べると次のような動作を実行している。ディスクリプタテーブルに記述されているアドレス及びデータを読み取り、読み取ったデータを、他のメモリの当該アドレスへ転送する。あるいはディスクリプタテーブルに記述されているアドレスを読み取り、このアドレスを利用して他のメモリからデータを取得する。次のディスクリプタテーブルを読出し、その記述内容を参照する。
【０００５】
しかし近年では、メモリ素子の大容量化、高速化などの発展とともに情報処理が複雑化している。このためにダイレクトメモリメモリアクセス制御（DMAC）に関してもその機能アップ、融通性が要望されている。
【０００６】
そこで本実施形態では、ダイレクトメモリメモリアクセス制御（DMAC）の機能アップ、融通性を実現するダイレクトメモリアクセス制御装置及び方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本実施形態によれば、ディスクリプタテーブルを複数格納しているディスクリプタテーブルメモリを有する。前記ディスクリプタテーブルは、複数のディスクリプタ側アドレスの記述領域と、所定のディスクリプタ側アドレスの代わりにレジスタに記述されているレジスタ側アドレスを使用するか否かを示すオプション情報の記述領域を有する。レジスタは、前記レジスタ側アドレスの格納領域を有する。そして、ダイレクトメモリアクセス制御部は、シーケンスに応じて指定されるディスクリプタテーブルの記述内容を読み取り、前記オプション情報の内容に応じて、前記ディスクリプタ側アドレスの領域またはレジスタ側アドレスの領域のいずれかのアドレスを用いる。
【図面の簡単な説明】
【０００８】
【図１】一実施形態を示すブロック図である。
【図２】図２の（A）,(B)及び（C）は図１の装置の各種動作形態を示すブロック図である。
【図３】他の実施形態を示すブロック図である。
【図４】さらに別の実施形態を示すブロック図である。
【図５】図4の装置で利用されるディスクリプタテーブルの例を示す図である。
【図６】図４の装置の動作例を示す図である。
【発明を実施するための形態】
【０００９】
以下、実施の形態について、図面を参照して説明する。図１において、１０１は内部バスであり、バスインターフェース（バスI/F）１８を介して外部バス（システムバスと称しても良い）１０２に接続されている。
【００１０】
バス１０１には、ダイレクトメモリアクセスコントローラ（DMACと称する）１１が接続されている。バス１０１には、ディスクリプタテーブルメモリ１２も接続されている。ディスクリプタテーブルメモリ１２には、複数のディスクリプタテーブルが保存されており、この複数のディスクリプタテーブルは、DMAC１１の動作シーケンスに影響を及ぼす。また、バス１０１には、レジスタ１３が接続されている。レジスタ１３は、複数のレジスタを含む。複数のレジスタは次ディスクリプタアドレス指定レジスタ１３１、ディスティネーション指定レジスタ１３２、ソースアドレス指定レジスタ１３３、レングスレジスタ１３４である。ここでは代表的なものを示したが、さらに別のレジスタが含まれても良い。このレジスタ１３内に記述されているアドレスを後で説明するディスクリプタ側アドレスと区別するためにレジスタ側アドレスと称する。
【００１１】
またバス１０１には、ワークメモリ１４、バスマスター１５、演算器１６、１７、バスインターフェース１８、バスアービタ１９などが接続されている。バスインターフェース１８は、バス１０１を外部バス１０２に接続している。外部バス１０２には、システムを統括する中央演算処理装置（CPU）１０３が接続されている。
【００１２】
ワークメモリ１４は演算処理途中で生じるような一時的なデータを格納するのに利用される。バスマスター１５は、バス１０１のバスサイクルを制御し、バス上に接続された各ブロックのデータフローの管理を行っている。演算器１６，１７は、四則演算、論理演算、暗号演算、ハッシュ演算などを実施する際に利用される。バスアービタ１９は、バス１０１、１０１上のデータフローの衝突が生じないように、CPUやバスマスター間の調停を行う。
【００１３】
ディスクリプタテーブルのフォーマット２００は、次ディスクリプタアドレス、ディスティネーション、ソースアドレス、レングス、演算モードの各情報を含む。ディスクリプタテーブルに記述されているアドレスをレジスタ側アドレスと区別するためにディスクリプタ側アドレスと称する。
【００１４】
次ディスクリプタアドレスの領域２１１Aには、オプション情報の領域２１１Bが付加されている。ディスティネーションの領域２１２Aには、オプション情報の領域２１２Bが付加されている。ソースアドレス領域２１３Aには、オプション情報の領域２１３Bが付加されている。またレングスの領域２１４Aにも、オプション情報の領域２１４Bが付加されている。オプション情報は、例えば“１”又は“０”であり、“１”が記述されているときは、レジスタ１３内の対応する情報が用いられることを指示しており、“０”が記述されているときは、ディスクリプタテーブル内の対応する情報が用いられることを指示している。領域２１５は、演算モードを指定する領域である。
【００１５】
なお、上記オプション情報が、“１”の場合、レジスタ１３内の対応する情報が用いられるので、ディスクリプタテーブルの対応する情報は記述されていないか、または、一定の内容たとえば0hが記述さていることがある。また逆にオプション情報が、“０”の場合、ディスクリプタテーブル内の対応する情報が用いられるので、レジスタ１３内の対応する情報は記述されていないか、または、一定の内容たとえば0hが記述さていることがある。
【００１６】
図２（A）乃至図２（C）には、上記した装置の動作形態をそれぞれ示している。まずDMAC１１は、CPU１０３からの指令を受けると、ディスクリプタテーブルメモリ１２に格納されているディスクリプタテーブル内の記述情報に基づいて動作を実行する。複数のディスクリプタは、予めコーディングされており、次ディスクリプタアドレスにより、その読み取り処理される順序も決まる。
【００１７】
図２（A）の実行状態は、次に使用するディスクリプタテーブルの次ディスクリプタアドレスが決まるときの状態である。次ディスクリプタアドレスは、読み取ったディスクリプタテーブルに記述されているが、もし、対応するオプション情報が“１”になっていた場合、選択器１６１により、レジスタ１３１内の次ディスクリプタアドレス指定レジスタ１３１内のアドレスが採用される。逆にこのオプション情報が“０”になっていた場合、選択器１６１により、読み取ったディスクリプタテーブル内の次ディスクリプタアドレスが採用される。
【００１８】
図２（B）の実行状態は、データを格納するディスティネーションのアドレスが決まるときの状態である。ディスティネーションのアドレスも、読み取ったディスクリプタテーブルに記述されているが、もし、対応するオプション情報が“１”になっていた場合、選択器１６１により、レジスタ１３内のディスティネーション指定レジスタ１３２内のアドレスが採用される。逆にこのオプション情報が“０”になっていた場合、選択器１６１により、読み取ったディスクリプタ内のアドレスが採用される。
【００１９】
図２（C）の実行状態は、データをメモリから読み取るときのソースアドレスを指定するときの状態である。ソースアドレスも、読み取ったディスクリプタテーブルに記述されているが、もし、対応するオプション情報が“１”になっていた場合、選択器１６１により、レジスタ１３内のソースアドレス指定レジスタ１３３内のアドレスが採用される。逆にこのオプション情報が“０”になっていた場合、選択器１６１により、読み取ったディスクリプタテーブル内のアドレスが採用される。このときは、データのレングス（転送数と称してもよい）を表すレングス情報も出力される。レングス情報は、バスのビット数、或いは1回の転送バイトに応じてきまる転送数の情報と記してもよい。
【００２０】
このレングス情報についても、読み取ったディスクリプタテーブルに記述されているが、もし、対応するオプション情報が“１”になっていた場合、選択器１７１により、レジスタ１３内のレングスレジスタ１３４内のレングス情報が採用される。逆にこのオプション情報が“０”になっていた場合、選択器１７１により、読み取ったディスクリプタ内のレングス情報が採用される。
【００２１】
本実施形態を用いた動作例について説明する。CPU１０３は演算処理を行うデータをシステムメモリ１０４上に配置する。CPU１０３は、演算処理を行うデータのシステムメモリ１０４上のソースアドレス、処理後のデータを格納するシステムメモリ１０４上のディスティネーションアドレス、レングス、動作モードなどをDMAC１１に指定してDMAC１１を起動する。DMAC１１は指定された動作モードに応じたディスクリプタテーブルを読み出し、ディスクリプタテーブルの内容に応じて順次処理を行う。
【００２２】
複数の演算処理を行う動作モードが指定された場合、例えば、
1)システムメモリ１０４からデータをリードし、演算器１を用いて演算処理を行い、処理後のデータをワークメモリ１４に格納する。
【００２３】
2)ワークメモリ１４に格納したデータをリードし、演算器２を用いて演算処理を行い、処理後のデータをシステムメモリ１０４に格納する。
【００２４】
という処理をDMAC１１が行うようにディスクリプタテーブルが用意される場合を例として説明する。
【００２５】
第一のディスクリプタテーブルはCPU１０３から指定されたシステムメモリ１０４上のソースアドレスをソースアドレス指定レジスタに設定するためのディスクリプタテーブルである。
【００２６】
第二のディスクリプタテーブルは前記1)の動作を実施するためのディスクリプタテーブルである。このとき、ディスクリプタテーブルのソースアドレスのオプション情報に”１”、ディスクリプタテーブルのディスティネーションアドレスのオプション情報に”０”、ディスティネーションアドレスにはワークメモリ１４上のアドレスが書かれているものを用意する。これにより、システムメモリ１０４から読み出されたデータが、演算器１で演算処理（演算内容は演算モードで指定）され、処理後のデータがワークメモリ１４に格納される。
【００２７】
第三のディスクリプタテーブルはCPU１０３から指定されたシステムメモリ１０４上のディスティネーションアドレスをディスティネーションアドレス指定レジスタに設定するためのディスクリプタテーブルである。
【００２８】
第四のディスクリプタテーブルは前記2)の動作を実施するためのディスクリプタテーブルである。このとき、ディスクリプタテーブルのソースアドレスのオプション情報に”０”ソースアドレスにはワークメモリ１４上のアドレス（第二のディスクリプタテーブルのディスティネーションアドレスと同じアドレス）、ディスクリプタテーブルのディスティネーションアドレスのオプション情報に”１”が書かれているものを用意する。
【００２９】
これにより、先に演算してワークメモリ１４に格納したデータが読み出され、演算器２を用いて演算処理され、処理後のデータがシステムメモリ１０４に格納される。
【００３０】
CPU１０３から指定されるシステムメモリ１０４上のソースアドレスやシステムメモリ上のディスティネーションアドレスがどこに指定されるかはソフトウェアに依存するが、本実施形態において前記第一から第四のディスクリプタテーブルを順次実行することにより、CPU１０３から指定されるシステム上の任意のアドレスに対応して前記1)、2)の動作を行うことが可能となる。
【００３１】
図３はさらに別の実施形態である。この装置は上記した開示範囲に限定されるものではなく、使用するアドレスを演算により生成してもよい。
【００３２】
例えばディスティネーション指定レジスタ１２３の出力アドレスと、ディスクリプタテーブルに記述されているアドレスとが、演算器１６で加算された後、選択器１６１に入力されるようにしてもよい。そして選択器１６１では、加算器１６又はディスクリプタからのアドレスのいずれか一方が、オプション情報の内容に応じて選択され、そして出力される。
【００３３】
上記したように、DMA装置が処理シーケンスに基づいて動作するとき、レジスタ１３の内容（アドレス）を選択的に利用できる仕組みを構成している。この結果、ダイレクトメモリメモリアクセス制御（DMAC）の機能アップ、融通性を実現することができる。機能アップの面からは、レジスタ１３の内容（アドレス）を使用できるようにしたことで、ディスクリプタテーブルに記述された決まりきった内容ではなく、種々のデータ処理を実施させることができる。またレジスタ１３内の各種レジスタにアドレスを記述することができるため、記録・読出しのためのメモリ或いはメモリ容量が増設された場合も対応することができ、融通性がある。またアドレスにより指定されるデータ内容も、アクセスするメモリ増設や変更により変更することができる。
【００３４】
またDMAC１１は、ディスクリプタテーブルを実行している途中、演算モードのコマンドあるいはオプション情報を拡張することにより、レジスタ１３内に記述されているアドレスを修正変更することも可能である。あるいは、レジスタ１３内のレジスタに内部バス上でのアドレスを割り当て、DMAC１１が内部バスを介してレジスタ１３にアクセスすることで、レジスタ１３内に記述されているアドレスを修正変更することも可能である。
【００３５】
図４は、さらに別に実施の形態である。図1に示した実施の形態のブロックに対応するブロックには同一符号を付している。
【００３６】
この実施形態ではDMCA１１の内部がさらに詳しく示されている。またレジスタ１３の内部にはアドレス指定ポインタ用レジスタ１３５が増設されている。
【００３７】
図５には装置が利用するディスクリプタテーブルのフォーマットの他の例を示している。このディスクリプタテーブルは、コマンド領域５１０、オプション情報領域５１１、第1、第２のソースアドレス領域５１２、レングス領域５１３、ディスティネーションアドレス領域５１４、第1、第２の次ディスクリプタアドレス領域５１５を含む。ここで第1の次ディスクリプタアドレス領域Nextは、次アドレス用として利用され、第２の次ディスクリプタアドレス領域Jampは、ジャンプアドレス用として利用される。
【００３８】
オプション情報領域５１１には、コマンドが記述され、ポインタ更新指令と、ポインタ使用指令がある。ポインタ更新指令が記述されている場合は、ジャンプアドレス領域Jampに記載されているアドレスを、レジスタ１３のアドレス指定ポインタに記述しなさいと言う命令である。これに対して、ポインタ使用指令が記述されている場合は、レジスタ１３のアドレス指定ポインタに記述されているアドレスを次アドレスとして使用しなさいという命令である。このオプション情報の領域５１１に記述されるコマンドと、第1、第２の次ディスクリプタアドレス（次アドレス、ジャンプアドレス）の利用例は、後でも説明する。
【００３９】
図５において、図１のディスクリプタテーブルのフォーマットと一部が異なる部分と、共通する部分を説明する。まず共通する部分はレングス、ディスティネーションアドレスである。ソースアドレスは、第1、第２のソースアドレス領域５１２を有するが、図１のソースアドレスの領域と同じと理解してもよい。図５の場合、ソースアドレスを２つ示した例を示している。四則演算機能を使ってA+Bの加算を行う場合は、この２つのソースアドレスが利用されて、AとBのアドレスが設定される。
【００４０】
次アドレス及びジャンプアドレスを記述した領域５１５と、オプション情報を記述した領域５１１は、本実施形態の特徴的な部分である。コマンドの領域５１０は、図１の演算モードの記述領域に相当する。
【００４１】
図４に戻り説明する。DMAC11は、内部バス１０１上のマスターユニットであり、ディスクリプタテーブルメモリ１２は内部バス１０１上のスレーブユニットである。外部バス１０２よりディスクリプタテーブル１２の起動要求があると、DMAC１１は指定された開始アドレスから開始フォーマットに応じて動作を開始する。まずDMAC１１は、ディスクリプタテーブルメモリ１２をアクセスする。選択された最初のディスクリプタテーブルは、ディスクリプタテーブルメモリ１２から読み出され、バス１０１、インターフェース１１４を介して、ディスクリプタテーブルフェッチモジュール１１１でフェッチされる。
【００４２】
フェッチされたディスクリプタテーブルには、処理命令を示すコマンド（コマンド領域５１０）、ディスクリプタテーブルのオプション情報（オプション情報領域５１１）、転送元であるソースアドレス(第1、第２のソースアドレス領域５１２)、転送データのデータ長(レングス領域５１３)、転送先を示すディスティネーションアドレス(ディスティネーションアドレス領域５１４)、次にフェッチするディスクリプタテーブルの開始アドレス(次アドレス領域、ジャンプアドレス領域)が含まれている。
【００４３】
指定されたコマンドは、ディスリプタテーブルデコード処理モジュール１１２で解析される。解析結果は、ディスクリプタテーブル実行モジュール１１３に転送され、このディスクリプタテーブル実行モジュール１１３が解析結果に応答して情報処理を実行する。
【００４４】
ソースアドレスで指定されたデータは、  内部バス１０１を介して取得される。取得されたデータの演算処理が必要な場合は、DMAC１１と内部バス１０１を介してやり取りを行える演算器１６又は１７が利用され演算処理が実行され、結果が内部バス１０１を介してディスティネーションアドレスへ出力される。この時、転送元データや転送先データは内部バス１０１に接続されたワークメモリ１４やバススレーブ、もしくは外部バスインターフェース１８を介した外部バス１０２を利用して、転送や保存が行われる。
【００４５】
1つのディスクリプタテーブル処理が終了すると、次のディスクリプタテーブルのフェッチへ移行する。通常は予め内部に保存した開始アドレス(Next Address)を用いる（図１の実施形態）が、本実施形態では、ディスクリプタテーブル処理の結果により、次アドレス(Next Address)とジャンプアドレス（Jump Address）を選択される。以降同様に処理実行とフェッチを繰り返し、最終ディスクリプタテーブルの処理が終了したら、DMA制御回路は起動したチェイン処理を終了する。
【００４６】
図６を参照しながら本実施形態の特徴的な動作を説明する。図６の左側にスタートからディスクリプタテーブルA,B,C,D,サブルーチン（ディスクリプタテーブルL,M,N）、ディスクリプタテーブルE,F,G,H,I,J、エンドまでのステップを示している。さらに各ステップが実行される順序を矢印で示している。また図６の右側には、ディスクリプタテーブルB,N,Fの内容を示している。
【００４７】
また、オプション情報として用意されたコマンドに応答して、レジスタ１３内のアドレス指定ポインタが利用される様子を示している。
【００４８】
外部バス１０２よりディスクリプタテーブルの起動要求があると、DMAC１１は、例えば最初ディスクリプタテーブルAから処理を順次行っていく。テーブルBの処理が終了するとサブルーチンへ移動することになる。
【００４９】
テーブルBのオプション情報の領域B５１１にはポインタ更新が指定されている。この場合、DMAC11は、ジャンプアドレスの領域に書かれたアドレス（テーブルCを指定している）をレジスタ１３のアドレス指定ポインタに保存する。またテーブルBは、次アドレスとしてテーブルLを指定している。
【００５０】
したがって、テーブルBに関する処理が終了すると、テーブルLに関する処理に移行し、サブルーチンの処理が開始される。サブルーチンでは、テーブルL,Mに関する処理が行われ、テーブルNが終了テーブルである。テーブルNに記述されている内容は、図６の右側に示されている。このテーブルNのオプション情報領域N511には、フィールドには次にフェッチするテーブルはポインタを使用するように指定がされている。このためDMAC１１は、アドレス指定ポインタに保存されているアドレスを用いる。このアドレスは、テーブルBの処理が行われているときに記述されたものであり、テーブルCのアドレスが記述されている。
【００５１】
したがって、今度は、テーブルCの記述内容がフェッチされる。次にテーブルC,D,E,Fに関する処理が進む。テーブルFでは、図６の右側に示すようにオプション情報領域F511にポインタを更新しなさいというコマンドが記述されている。このときは、DMAC11は、ジャンプアドレスの領域に書かれたアドレス（テーブルIを指定している）をレジスタ１３のアドレス指定ポインタに保存する。またテーブルFは、次アドレスとしてテーブルLを指定している。
【００５２】
この結果、処理はテーブルLに関する処理に移行する。そして、サブルーチンが再度実行され、サブルーチン内のテーブルL〜Nは同じものを使用する。次にテーブルNに関する処理を実行しているとき、テーブルNでは、オプション情報としてポインタを使用しなさいというコマンドが記述されているので、次にフェッチするテーブルはテーブルIとなる。
【００５３】
テーブルI、テーブルJを順次処理を行いDMA制御回路は起動したチェイン処理を終了する。
【００５４】
上記したように本実施形態では、サブルーチン内のテーブル(テーブルL〜N)は同一であるにも関わらず、サブルールチンから次に行う処理を種々設定することが可能である。つまりサブルーチンの処理の次に行う処理を種々分岐させることを可能とする。
【００５５】
通常のディスクリプタテーブルで処理をした場合、テーブルNの後にどこから移動してきたのか判定を行い、その結果から次にフェッチすべきアドレスを決定することが考えられる。しかしこれではサブルーチンを読み出す元の数分のディスクリプタテーブルを必要とした上、順次チェックを行うことになるため処理段数も増加することになる。しかし本実施形態によると、アドレス指定ポインタと、ポインタ更新命令、ポインタ使用命令を活用することにより、高速で簡単に種々のディスクリプタテーブルへジャンプすることが可能となる。
【００５６】
上記したようにDMACが利用するディスクリプタテーブルは、1つのテーブルの中に様々な情報を入れることで高機能なテーブルを作ることができる。これにより装置の処理の効率を向上させることができると共に、ディスクリプタテーブルをチェインさせることで複雑な処理を行うことができる。しかし、これによりディスクリプタテーブル自体の容量を増加させる場合があるため、チェインの圧縮が要求される。
【００５７】
そこで、チェインによる次のディスクリプタテーブルの開始位置の指定に（次アドレスとして）固定アドレス若しくはアドレス指定ポインタを用いる手法を取り入れることで、ディスクリプタテーブルのサブルーチンへの移行及びサブルーチンからメインルーチンへの復帰を容易にすることを可能としている。これによりディスクリプタテーブルの容量増大を防ぐことができ内蔵メモリの規模縮小が行え、また、ディスクリプタテーブルに基づく処理のステップ数の増大を防ぐことができ、システムとしての処理速度向上を行える。
【００５８】
また、サブルーチンへの移行とメインルーチンへの復帰はディスクリプタテーブルにより制御が可能であるため、DMA制御回路にはサブルーチンを実現するためのスタックへのプッシュ（push）処理やポップ（pop）処理を必要とせず、回路の規模を増大させることなく実現が可能となる。
【００５９】
いくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００６０】
１１・・・ダイレクトメモリアクセスコントローラ（DMAC）、１２・・・ディスクリプタテーブルメモリ、１３・・・レジスタ、１４・・・ワークメモリ、１５・・・バスマスター、１６，１７・・・演算器、１８・・・バスインターフェース、１９・・・バスアービタ、１０１，１０２・・・バス、１０３・・・中央演算処理装置（CPU）、
１１１・・・ディスクリプタテーブルフェッチモジュール、１１２・・・ディスリプタテーブルデコード処理モジュール、１１３・・・ディスクリプタテーブル実行モジュール、１１４・・・インターフェース、１３１・・・次ディスクリプタアドレス指定レジスタ、１３２・・・ディスティネーション指定レジスタ、１３３・・・ソースアドレス指定レジスタ、１３４・・・レングスレジスタ、１６１，１７１・・・選択器、５０１・・・コマンド領域、５１１・・・オプション情報領域、５１２・・・第1、第２のソースアドレス領域、５１３・・・レングス領域、５１４・・・ディスティネーションアドレス領域、５１４・・・第1、第２の次ディスクリプタアドレス領域、
【図１】
2012014436.tif 000003
【図２】
2012014436.tif 000004
【図３】
2012014436.tif 000005
【図４】
2012014436.tif 000006
【図５】
2012014436.tif 000007
【図６】
2012014436.tif 000008