(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024030316
(43)【公開日】2024-03-07
(54)【発明の名称】処理装置、処理プログラム、及び処理方法
(51)【国際特許分類】
G06F 13/28 20060101AFI20240229BHJP
G06F 13/24 20060101ALI20240229BHJP
【FI】
G06F13/28 310E
G06F13/28 310J
G06F13/24 310Z
【審査請求】未請求
【請求項の数】5
【出願形態】OL
(21)【出願番号】P 2022133108
(22)【出願日】2022-08-24
(71)【出願人】
【識別番号】000000295
【氏名又は名称】沖電気工業株式会社
(74)【代理人】
【識別番号】100180275
【弁理士】
【氏名又は名称】吉田 倫太郎
(74)【代理人】
【識別番号】100161861
【弁理士】
【氏名又は名称】若林 裕介
(72)【発明者】
【氏名】影岡 秀聡
(72)【発明者】
【氏名】土肥 哲也
(57)【要約】
【課題】 DMA転送完了割り込みがロストした場合でも、正確なメモリアドレスに基づく処理が行うことができる処理装置を提供する。
【解決手段】 本発明は、DMAコントローラによってメモリに転送されたデータを順次処理する処理装置であって、予めメモリ上にDMAコントローラが巡回して使用するデータ転送サイズと同一サイズのバッファが複数割り当てられ、バッファのそれぞれのアドレス情報と、処理装置が現在バッファのいずれを処理したかを示すバッファ処理情報とを管理する管理情報と、DMAコントローラの走行アドレスを取得する走行アドレス取得手段と、DMAコントローラからバッファの各々に転送が完了したタイミングでDMA転送完了を示す割り込みを受けると、取得した走行アドレスと、管理情報とに基づき、当該処理装置が処理すべき未処理のデータが格納されるバッファを特定する管理手段とを有する。
【選択図】
図1
【特許請求の範囲】
【請求項1】
DMAコントローラによってメモリに転送されたデータを順次処理する処理装置であって、
予め前記メモリ上に前記DMAコントローラが巡回して使用するデータ転送サイズと同一サイズのバッファが複数割り当てられ、少なくとも前記バッファのそれぞれのアドレス情報と、当該処理装置が現在前記バッファのいずれを処理したかを示すバッファ処理情報とを管理する管理情報と、
前記DMAコントローラが前記メモリに対して現在アクセスしている走行アドレスを取得する走行アドレス取得手段と、
前記DMAコントローラから前記バッファの各々に転送が完了したタイミングでDMA転送完了を示す割り込みを受けると、前記走行アドレス取得手段で取得した前記走行アドレスと、前記管理情報とに基づき、当該処理装置が処理すべき未処理のデータが格納される前記バッファを特定する管理手段と
を有することを特徴とする処理装置。
【請求項2】
前記管理手段は、前記走行アドレスが前記バッファの巡回使用の順番的に当該処理装置が処理すべきバッファの次のバッファの範囲内のアドレスを示している場合には、割り込みの消失は生じていないと判断し、前記走行アドレスが示すバッファの一つ前のバッファを当該処理装置が処理すべきバッファと判断することを特徴とする請求項1に記載の処理装置。
【請求項3】
前記管理手段は、前記走行アドレスが前記バッファの巡回使用の順番的に当該処理装置が処理すべきバッファの次々回以降のバッファの範囲内のアドレスを示している場合には、割り込みの消失は生じていると判断し、当該処理装置が順番的に次に処理すべきバッファから前記走行アドレスが示すバッファの一つ前のバッファまでのそれぞれの前記バッファを当該処理装置が処理すべきバッファと判断することを特徴とする請求項1又は2に記載の処理装置。
【請求項4】
DMAコントローラによってメモリに転送されたデータを順次処理する処理装置に搭載されるコンピュータを、
予め前記メモリ上に前記DMAコントローラが巡回して使用するデータ転送サイズと同一サイズのバッファが複数割り当てられ、少なくとも前記バッファのそれぞれのアドレス情報と、当該処理装置が現在前記バッファのいずれを処理したかを示すバッファ処理情報とを管理する管理情報と、
前記DMAコントローラが前記メモリに対して現在アクセスしている走行アドレスを取得する走行アドレス取得手段と、
前記DMAコントローラから前記バッファの各々に転送が完了したタイミングでDMA転送完了を示す割り込みを受けると、前記走行アドレス取得手段で取得した前記走行アドレスと、前記管理情報とに基づき、当該処理装置が処理すべき未処理のデータが格納される前記バッファを特定する管理手段と
して機能させることを特徴とする処理プログラム。
【請求項5】
DMAコントローラによってメモリに転送されたデータを順次処理する処理装置に使用する処理方法であって、
当該処理装置は、予め前記メモリ上に前記DMAコントローラが巡回して使用するデータ転送サイズと同一サイズのバッファが複数割り当てられ、少なくとも前記バッファのそれぞれのアドレス情報と、当該処理装置が現在前記バッファのいずれを処理したかを示すバッファ処理情報とを管理する管理情報と、走行アドレス取得ステップと、管理ステップとを備え、
前記走行アドレス取得ステップは、前記DMAコントローラが前記メモリに対して現在アクセスしている走行アドレスを取得し、
前記管理ステップは、前記DMAコントローラから前記バッファの各々に転送が完了したタイミングでDMA転送完了を示す割り込みを受けると、前記走行アドレス取得ステップで取得した前記走行アドレスと、前記管理情報とに基づき、当該処理装置が処理すべき未処理のデータが格納される前記バッファを特定する
ことを特徴とする処理方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、処理装置、処理プログラム、及び処理方法に関し、例えば、DMA(Direct Memory Access)によるデータ転送の監視方法に適用し得る。
【背景技術】
【0002】
DMAは、コンピュータシステム内でのデータ転送方式の1つであり、CPU(Central Processing Unit)を介さずに、専用のコントローラ(DMAコントローラ)の制御により周辺デバイスとメモリ(RAM:Random Access Memory)との間で直接データ転送を行う方式である。
【0003】
DMAコントローラは、DMA転送が完了すると、CPUにDMA転送が完了した旨を示す信号(DMA転送完了割り込み)を通知する。そして、CPUは、DMA転送完了割り込みを契機として、ベクタテーブルに登録したハンドラをコールしてハンドラ内でDMAコントローラが転送したデータ(メモリに書き込まれたデータ)を使用して目的とする処理を行う(非特許文献1を参照)。
【0004】
一般的に、CPUサイドでは、所定のアプリケーション内でメモリのアドレス管理を行っている。例えば、当該アプリケーションは、DMA転送完了の割り込みが発生する度に、メモリアドレス管理をカウントアップし、割り込みの数から対象とするメモリアドレスを導いていた。
【先行技術文献】
【非特許文献】
【0005】
【非特許文献1】“マイコンの基礎-割り込みハンドラ”[2022年7月29日検索],[Online]、INTERNET、<URL: http://mochiuwiki.e2.valueserver.jp/index.php?title=マイコンの基礎_-_割り込みハンドラ>
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、割り込みレイテンシの遅延等によりDMA転送完了割り込みがロストした場合、上述のメモリアドレス管理では、DMA転送完了割り込みの件数からメモリアドレスを算出しているため、正しいメモリアドレスに基づき処理が行えず、データの整合性が保てなくなる問題が生じる。
【0007】
そのため、DMA転送完了割り込みがロストした場合でも、正確なメモリアドレスに基づく処理が行うことができる処理装置、処理プログラム、及び処理方法が望まれている。
【課題を解決するための手段】
【0008】
第1の本発明は、DMAコントローラによってメモリに転送されたデータを順次処理する処理装置であって、(1)予め前記メモリ上に前記DMAコントローラが巡回して使用するデータ転送サイズと同一サイズのバッファが複数割り当てられ、少なくとも前記バッファのそれぞれのアドレス情報と、当該処理装置が現在前記バッファのいずれを処理したかを示すバッファ処理情報とを管理する管理情報と、(2)前記DMAコントローラが前記メモリに対して現在アクセスしている走行アドレスを取得する走行アドレス取得手段と、(3)前記DMAコントローラから前記バッファの各々に転送が完了したタイミングでDMA転送完了を示す割り込みを受けると、前記走行アドレス取得手段で取得した前記走行アドレスと、前記管理情報とに基づき、当該処理装置が処理すべき未処理のデータが格納される前記バッファを特定する管理手段とを有することを特徴とする。
【0009】
第2の本発明の処理プログラムは、DMAコントローラによってメモリに転送されたデータを順次処理する処理装置に搭載されるコンピュータを、(1)予め前記メモリ上に前記DMAコントローラが巡回して使用するデータ転送サイズと同一サイズのバッファが複数割り当てられ、少なくとも前記バッファのそれぞれのアドレス情報と、当該処理装置が現在前記バッファのいずれを処理したかを示すバッファ処理情報とを管理する管理情報と、(2)前記DMAコントローラが前記メモリに対して現在アクセスしている走行アドレスを取得する走行アドレス取得手段と、(3)前記DMAコントローラから前記バッファの各々に転送が完了したタイミングでDMA転送完了を示す割り込みを受けると、前記走行アドレス取得手段で取得した前記走行アドレスと、前記管理情報とに基づき、当該処理装置が処理すべき未処理のデータが格納される前記バッファを特定する管理手段として機能させることを特徴とする。
【0010】
第3の本発明は、DMAコントローラによってメモリに転送されたデータを順次処理する処理装置に使用する処理方法であって、(1)当該処理装置は、予め前記メモリ上に前記DMAコントローラが巡回して使用するデータ転送サイズと同一サイズのバッファが複数割り当てられ、少なくとも前記バッファのそれぞれのアドレス情報と、当該処理装置が現在前記バッファのいずれを処理したかを示すバッファ処理情報とを管理する管理情報と、走行アドレス取得ステップと、管理ステップとを備え、(2)前記走行アドレス取得ステップは、前記DMAコントローラが前記メモリに対して現在アクセスしている走行アドレスを取得し、(3)前記管理ステップは、前記DMAコントローラから前記バッファの各々に転送が完了したタイミングでDMA転送完了を示す割り込みを受けると、前記走行アドレス取得ステップで取得した前記走行アドレスと、前記管理情報とに基づき、当該処理装置が処理すべき未処理のデータが格納される前記バッファを特定することを特徴とする。
【発明の効果】
【0011】
本発明によれば、DMA転送完了割り込みがロストした場合でも、正確なメモリアドレスに基づく処理が行うことができる。
【図面の簡単な説明】
【0012】
【
図1】実施形態に係る情報処理装置の全体構成を示す全体構成図である。
【
図2】実施形態に係るパラメータRAMの一例を示す説明図である。
【
図3】実施形態に係る管理APIの管理データの一例を示す説明図である。
【
図4】実施形態に係るRAM(DMAコントローラを介してデータを一時保存領域する領域)の一例を示す図である。
【
図5】実施形態に係る情報処理装置(制御プログラム)の特徴動作を示すフローチャートである。
【
図6】実施形態に係る情報処理装置(制御プログラム)の特徴動作(
図5の処理)の具体例を示す説明図である。
【発明を実施するための形態】
【0013】
(A)主たる実施形態
以下、本発明による処理装置、処理プログラム、及び処理方法の一実施形態を、図面を参照しながら詳述する。
【0014】
(A-1)実施形態の構成
図1は、実施形態に係る情報処理装置の全体構成を示す全体構成図である。
図1に示すように、情報処理装置1は、ハードウェア構成として、CPU10と、ROM(Read Only Memory)20と、RAM30と、周辺デバイス40と、DMAコントローラ50とを有する。CPU10、ROM20、RAM30、周辺デバイス40、及びDMAコントローラ50は、バスNによって相互に接続される。
【0015】
CPU10は、演算処理装置及び制御装置として機能し、各種プログラムに従って情報処理装置1内の動作全般を制御する。例えば、CPU10が後述するROM20及びRAM30と協働することにより、後述する制御プログラム11が実行される。
【0016】
ROM20は、CPU10が使用するプログラム(後述する制御プログラム11等)を記憶する。
【0017】
RAM30は、CPU10のワーク領域として使用され、ROM20、後述する周辺デバイス40等を介して送受信されるデータの一時保存領域としても使用される。
【0018】
周辺デバイス40は、当該情報処理装置1の周辺機器(内蔵、外付けを問わず)であり、例えば、プリンタ、HDD(Hard Disk Drive)、オーディオデバイス、LAN(Local Area Network)コントローラ等である。
【0019】
DMAコントローラ50は、RAM30と、ROM20及び周辺デバイス40との間のデータの送受信処理(DMA転送)を行う。例えば、DMAコントローラ50は、周辺デバイス40がLANコントローラの場合、蓄えられたネットワークデータを、RAM30の事前に指定されたメモリ領域(後述する
図4のバッファB)の転送先アドレスへDMA転送するための制御を行う。また、DMAコントローラ50は、DMA転送が終了すると、CPU10へ割り込みを用いてDMA転送が終了した旨(DMA転送完了割り込み)を通知する。
【0020】
DMAコントローラ50は、DMA転送を制御するための設定レジスタであるパラメータRAM51を有する。
【0021】
図2は、実施形態に係るパラメータRAMの一例を示す説明図である。
図2(A)に示すように、パラメータRAM51には、各パラメータRAMを識別するパラメータRAM番号と、データの転送元のアドレスを示す「転送元アドレス」と、データの転送先のアドレスを示す「転送先アドレス」と、データの転送サイズを示す「転送サイズ」と、転送完了後継続するパラメータRAM番号を示す「リンク」とが設定される。なお、
図2(A)のパラメータRAM51は、本実施形態の特徴部分を説明し易くするために、簡易的に記載したが、上記以外にも種々様々な項目を追加しても良い。
【0022】
図2(B)は、上述のパラメータRAM51に従ったデータを連続的に転送する際のイメージを示す説明図である。
図2(B)では、3つのパラメータRAM51(51-1~51-3)が示されている。この内、パラメータRAM51-1は、DMAコントローラ50の制御により現在転送を行っている最新の設定内容である。
【0023】
なお、この実施形態では、DMAコントローラ50には、パラメータRAM51-1の転送元アドレス及び転送先アドレスが、DMAコントローラ50がRAM30上を走行しているアドレスにリアルタイムに更新する機構(機能)を備えることを前提とする。また同様に、DMAコントローラ50には、後述する制御プログラム11の管理API13の取得要求に対してパラメータRAM51-1の転送先アドレス(リアルタイムに更新するアドレス)が、返信される機能を備えることを前提とする。
【0024】
DMAコントローラ50は、パラメータRAM51-1に指定(設定)された内容の転送が完了すると、パラメータRAM51-1のリンクに指定した次のパラメータRAM番号に指定した内容(パラメータRAM51-2に指定された内容)に沿って転送を継続する。ここで、転送を継続する際には、パラメータRAM51-2に指定した内容がパラメータRAM51-1にコピーされて、パラメータRAM51-1に従って転送が行われる(同様に、転送が完了すると、次にはパラメータRAM51-3の内容が処理される)。
【0025】
即ち、CPUサイド(制御プログラム11)では、パラメータRAM51-1の転送先アドレスを監視すれば、DMAコントローラ50がRAM30上の何れのアドレスを走行しているか確認することができる。
【0026】
次に、CPU10において実行される制御プログラム11について説明を行う。
【0027】
制御プログラム11は、CPU10、RAM30等のハードウェア資源を利用して、割り込み管理、タスク管理、メモリ管理等を実行するものである。制御プログラム11は、
図1に示すように、ハンドラ12と、管理API13と、タスク14とを有する。
【0028】
ハンドラ12は、CPU10においてDMAコントローラ50等が要求する割り込み(DMA転送完了割り込み等)を検知されたことに基づいてCPU10からコールされると、当該検知された割り込みに応じた処理を実行するものである。この実施形態では、ハンドラ12は、目的処理を行うRAM30上のアドレスを特定するために後述する管理API13をコールする。ハンドラ12は、管理API13を介して処理すべきアドレスを取得すると、タスク14に該当する処理を通知する。
【0029】
管理API13は、上述のパラメータRAM51-1の転送先アドレスを取得し、取得した転送先アドレス(DMAコントローラ50がRAM30へ転送した(書き込んだ)最新のアドレス)と、プログラム側で管理しているアドレス値(後述する未処理バッファカウンタC)とを比較して、プログラム側が処理すべきアドレス(RAM30内の未処理のバッファ)を特定する。
【0030】
管理API13は、RAM30内の処理すべきメモリ領域(バッファB)を示す未処理バッファカウンタCと、DMAコントローラ50がRAM30へ転送するメモリ領域を示す管理データDとを備える。
【0031】
図3は、実施形態に係る管理APIの管理データの一例を示す説明図である。
図3に示すように、管理データDは、DMAコントローラ50からRAM30へ転送するメモリ領域(各バッファB)を示す「バッファ」と、各バッファBの先頭アドレスを示す「先頭アドレス」との項目を有する。
【0032】
なお、この実施形態では、周辺デバイス40等が、DMAコントローラ50を介してデータを一時保存領域する領域がRAM30上に予め定められている。
図4は、実施形態に係るRAM(DMAコントローラを介してデータを一時保存領域する領域)の一例を示す図である。
図4では、RAM30内にデータの一時保存領域として5つのバッファB(B1~B5)が予め割り当てられている。
図4では、1つのバッファBのサイズは256バイトであり、バッファBの数も5個の例が示されているが、これに限定されるものでは無く、バッファBのサイズ及び数は、例えば、システムに応じて適宜設定されるものである。
【0033】
また、この実施形態では、バッファBのサイズは、パラメータRAM51の転送サイズと同一である。即ち、バッファBのサイズは256バイトであれば、各パラメータRAM51の転送サイズは256バイトとなり、DMAコントローラ50は、5つのバッファBをサイクル的に使用して各パラメータRAM51に従った内容でデータ転送を行うことになる。
【0034】
なお、
図3では、各バッファBと、各バッファBの先頭アドレスとを対応付けて管理しているが、これに限定されるものでは無く、各バッファBの管理方法は種々様々な手法を用いることができる。
【0035】
タスク14は、種々様々な処理を行うものであるが、この実施形態では、ハンドラ12に通知されてDMAコントローラ50からRAM30へ転送されたデータに対して何らかの処理を行うタスクを対象とする。タスク14は、ハンドラ12から通知されたRAM30のアドレス(バッファB)まで処理を行うことになる。
【0036】
(A-2)実施形態の動作
次に、以上のような構成を有する実施形態に係る情報処理装置1の動作を説明する。
【0037】
(A-2-1)情報処理装置1の特徴動作
図5は、実施形態に係る情報処理装置(制御プログラム)の特徴動作を示すフローチャートである。
【0038】
<S101>
CPU10(制御プログラム11)は、DMAコントローラ50からのDMA転送完了割り込みを受けて、ハンドラ12をコールする。
【0039】
<S102>
ハンドラ12は、DMAコントローラ50が転送したRAM30のバッファBを特定するために管理API13をコールする。管理API13は、DMAコントローラ50がRAM30上を走行しているアドレスを取得する。具体的に、管理API13は、DMAコントローラ50から走行アドレスがリアルタイムに更新されているパラメータRAM51-1の転送先アドレスを取得する。管理API13は、さらに、未処理バッファカウンタCが示す値(バッファB)を取得する。
【0040】
<S103>
管理API13は、取得した転送先アドレスが、取得した未処理バッファカウンタCが示す値(バッファB)の次のバッファBのアドレスの範囲内を示しているかを確認する。例えば、未処理バッファカウンタCが示す値がバッファB0であれば、次のバッファBは、バッファB1(0x1000_0100~0x1000_01FF)である。
【0041】
<S104>
管理API13は、上述のステップS103の処理で、取得した転送先アドレスが、未処理バッファカウンタCが示す値の次のバッファBのアドレスの範囲内を示している場合(言い換えれば、割り込みロストは発生していない場合)、未処理バッファカウンタCが示すバッファBのアドレスをハンドラ12に返信する。
【0042】
ハンドラ12は、管理API13から返信されたアドレスをタスク14へ通知する(バッファ1つ分の処理を行うよう依頼する)。
【0043】
<S105>
管理API13は、上述のステップS103の処理で、取得した転送先アドレスが、未処理バッファカウンタCが示す値の次のバッファBのアドレスの範囲内を示していない場合(言い換えれば、割り込みロストが発生している場合)、管理データDを参照して、転送先アドレスが示しているアドレスが属するバッファB(B1~B5のいずれか)を特定する。未処理バッファカウンタCが示すバッファと、特定したバッファBの一つ前のバッファBまでの間のバッファが未処理のバッファとなる。
【0044】
<S106>
管理API13は、未処理のバッファBの件数分、各バッファBのアドレス(先頭アドレス)をハンドラ12に返信する。
【0045】
ハンドラ12は、管理API13から返信された各アドレスをタスク14へ通知する(未処理のバッファ分の処理を行うよう依頼する)。
【0046】
<S107>
管理API13は、処理したバッファBの数に応じて、未処理バッファカウンタCの値をカウントアップする。例えば、未処理バッファカウンタCがバッファB1を示して、1件分のバッファBを処理した場合(上述のステップS104のルート)、バッファB1を「バッファB2」とする。一方、n件分のバッファBを処理した場合(上述のステップS106のルート)、バッファB1を「バッファB(1+n)」とする。
【0047】
(A-2-2)特徴処理の具体例
次に、
図5のフローチャートの処理を、具体例を挙げて再度説明を行う。
【0048】
図6は、実施形態に係る情報処理装置の特徴動作(
図5の処理)の具体例を示す説明図である。
【0049】
なお、以下の説明に際して、未処理バッファカウンタCの初期状態は、「バッファB0」であり、管理データDは、
図3に示す通りである事を前提とする。
【0050】
まず、CPU10は、1回目のDMA転送完了割り込みを受けると、ハンドラ12をコールする。ハンドラ12は、DMAコントローラ50が転送したRAM30のバッファBを特定するために管理API13をコールする。管理API13は、DMAコントローラ50(パラメータRAM51-1)の転送先アドレスを取得する。さらに、管理API13は、未処理バッファカウンタCが示す値(バッファB)を取得する。転送先アドレスが、バッファB1の範囲内(0x1000_0100~0x1000_01FF)であれば、管理API13は、正常と判断して、ハンドラ12は、1件分の未処理のバッファB0(0x1000_0000~0x100_00FF)を処理するようタスク14に通知する。
【0051】
タスク14は、バッファBを1件処理したので、CPU10は、未処理バッファカウンタCを、バッファB0からバッファB1へカウントアップする。
【0052】
次に、CPU10は、2回目のDMA転送完了割り込みを受けると、同様に、ハンドラ12をコールする。ハンドラ12は、同様に、DMAコントローラ50が転送したRAM30のバッファBを特定するために管理API13をコールする。管理API13は、DMAコントローラ50(パラメータRAM51-1)の転送先アドレスを取得する。管理API13は、さらに、未処理バッファカウンタCが示す値(バッファB)を取得する。転送先アドレスが、バッファB2の範囲内(0x1000_0200~0x1000_02FF)であれば、管理API13は、正常と判断して、ハンドラ12は、1件分の未処理のバッファB1(0x1000_0100~0x100_01FF)を処理するようタスク14に通知する。
【0053】
CPU10は、バッファBを1件処理したので、未処理バッファカウンタCを、バッファB0からバッファB1へカウントアップする。
【0054】
仮に、転送先アドレスが、バッファB3の範囲内(0x1000_0300~0x100003FF)であれば、管理API13は、バッファB2(0x1000_0200~0x1000_02FF)に対するDMA転送完了割り込みは、ロストしていると判断する。この場合、ハンドラ12は、2件分の未処理のバッファB1(0x1000_0100~0x100_01FF)とバッファB2(0x1000_0200~0x1000_02FF)を処理するようタスク14に通知する。
【0055】
タスク14は、バッファBを2件処理したので、CPU10は、未処理バッファカウンタCを、バッファB1からバッファB3へカウントアップする。
【0056】
図6において図示されないが、CPU10は、次のように順次処理を実行する。
【0057】
CPU10は、n回目(3回目以降)のDMA転送完了割り込みを受けると、同様に、DMAコントローラ50(パラメータRAM51-1)の転送先アドレスを取得する。管理API13は、さらに、未処理バッファカウンタCが示す値(バッファB)を取得する。管理API13は、同様に、DMA転送完了割り込みについて正常と判断すると、ハンドラ12は、同様に、1件分の未処理の転送処理に関わるバッファBを処理するようタスク14に通知する。
【0058】
CPU10は、同様に、バッファBを1件処理したので、未処理バッファカウンタCを、バッファB0からバッファB1へカウントアップする。
【0059】
仮に、管理API13は、同様に、DMA転送完了割り込みについてロストしていると判断すると、ハンドラ12は、同様に、未処理のバッファBを処理するようタスク14に通知する。
【0060】
タスク14は、バッファBを未処理の件数分処理したので、CPU10は、未処理バッファカウンタCを、未処理のバッファBを処理した件数分に基づいてカウントアップする。
【0061】
(A-3)実施形態の効果
本実施形態によれば、以下の効果を奏する。
【0062】
CPU10が実行する制御プログラム11(ハンドラ12及び管理API13)が、DMAコントローラ50が走行しているアドレスを調査することでDMA転送完了割り込みがロストした場合も、タスク14に確実に対象データを処理させる事ができる。
【0063】
例えば、DMA転送完了割り込みから次のDMA転送完了割り込み完了までの間隔が数十マイクロ秒とシビアな設計の場合(即ち、リアルタイムにデータ処理が求められる設計の場合)、レイテンシやオーバヘッドの影響によりハンドラ12内で処理をしている際に割り込みが入りその分はロストする可能性が高くなる。このような設計の際に本実施形態はより効果を発揮する。
【0064】
(B)他の実施形態
上述した実施形態においても種々の変形実施形態を言及したが、以下の変形実施形態にも適用できる。
【0065】
上記実施形態では、DMA転送完了割り込みを契機として、RAM30上の未処理のバッファBのデータを処理する例を示したが、定期的な割り込み(タイマ割り込み)を、DMA転送完了割り込みがロストした場合の割り込みとして利用して、上記実施形態の処理と同様にRAM30上の未処理のバッファBのデータを処理するようにしても良い。
【符号の説明】
【0066】
1…情報処理装置、10…CPU、11…制御プログラム、12…ハンドラ、13…管理API、14…タスク、20…ROM、30…RAM、40…周辺デバイス、50…DMAコントローラ、51(51-1~51-3)…パラメータRAM、…パラメータRAM、51-2…パラメータRAM、…パラメータRAM、B(B0~B3)…バッファ、…バッファ、C…未処理バッファカウンタ、D…管理データ、N…バス。