IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ カシオ計算機株式会社の特許一覧

特許7448059メモリ制御装置、メモリ制御方法及び制御プログラム
<>
  • 特許-メモリ制御装置、メモリ制御方法及び制御プログラム 図1
  • 特許-メモリ制御装置、メモリ制御方法及び制御プログラム 図2
  • 特許-メモリ制御装置、メモリ制御方法及び制御プログラム 図3
  • 特許-メモリ制御装置、メモリ制御方法及び制御プログラム 図4
  • 特許-メモリ制御装置、メモリ制御方法及び制御プログラム 図5
  • 特許-メモリ制御装置、メモリ制御方法及び制御プログラム 図6
  • 特許-メモリ制御装置、メモリ制御方法及び制御プログラム 図7
  • 特許-メモリ制御装置、メモリ制御方法及び制御プログラム 図8
  • 特許-メモリ制御装置、メモリ制御方法及び制御プログラム 図9
  • 特許-メモリ制御装置、メモリ制御方法及び制御プログラム 図10
  • 特許-メモリ制御装置、メモリ制御方法及び制御プログラム 図11
  • 特許-メモリ制御装置、メモリ制御方法及び制御プログラム 図12
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-03-04
(45)【発行日】2024-03-12
(54)【発明の名称】メモリ制御装置、メモリ制御方法及び制御プログラム
(51)【国際特許分類】
   G06F 12/02 20060101AFI20240305BHJP
【FI】
G06F12/02 510A
G06F12/02 530E
【請求項の数】 5
(21)【出願番号】P 2023035684
(22)【出願日】2023-03-08
(62)【分割の表示】P 2019041990の分割
【原出願日】2019-03-07
(65)【公開番号】P2023060282
(43)【公開日】2023-04-27
【審査請求日】2023-03-20
(73)【特許権者】
【識別番号】000001443
【氏名又は名称】カシオ計算機株式会社
(74)【代理人】
【識別番号】100096699
【弁理士】
【氏名又は名称】鹿嶋 英實
(74)【代理人】
【識別番号】100171882
【弁理士】
【氏名又は名称】北庄 麗絵子
(72)【発明者】
【氏名】飯島 純
(72)【発明者】
【氏名】林 哲也
【審査官】後藤 彰
(56)【参考文献】
【文献】特開平7-325669(JP,A)
【文献】特開平3-92941(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/02
(57)【特許請求の範囲】
【請求項1】
プログラムの実行に伴って発生する要求に基づいて、メモリ部にデータを記憶するための領域を動的に確保する制御を行うメモリ制御装置であって、
前記プログラムによりデータ記憶用の領域の割り当てが要求される毎に、前記プログラムにより要求されているデータサイズ以上で且つ基本容量の(指数nは0以上の整数)倍となる最小のデータサイズの記憶領域を、単位ブロック領域として設定するブロック領域設定手段と、
前記メモリ部の先頭アドレスから順に、前記単位ブロック領域毎に当該単位ブロック領域が空状態か否かを判定し、最初に空状態と判定された単位ブロック領域を前記プログラムにより割り当てが要求されたデータ記憶用の領域として確保する領域確保手段と、
を備えることを特徴とするメモリ制御装置。
【請求項2】
前記領域確保手段は、前記プログラムにより割り当てが要求されたデータ記憶用の領域として確保した前記単位ブロック領域内において、前記メモリ部の先頭アドレス側から詰めて前記データ記憶用の領域を確保する、
ことを特徴とする請求項1に記載のメモリ制御装置。
【請求項3】
前記領域確保手段は、前記メモリ部において全ての単位ブロック領域が空状態でないと判定した場合には、すでに確保されているデータ記憶用の領域を、前記基本容量を単位とした空状態に基づいて他のアドレス位置に変更する、
ことを特徴とする請求項1または2に記載のメモリ制御装置。
【請求項4】
プログラムの実行に伴って発生する要求に基づいて、メモリ部にデータを記憶するための領域を動的に確保する制御を行うメモリ制御装置が実行するメモリ制御方法であって、
前記プログラムによりデータ記憶用の領域の割り当てが要求される毎に、前記プログラムにより要求されているデータサイズ以上で且つ基本容量の2 (指数nは0以上の整数)倍となる最小のデータサイズの記憶領域を、単位ブロック領域として設定するブロック領域設定処理と、
前記メモリ部の先頭アドレスから順に、前記単位ブロック領域毎に当該単位ブロック領域が空状態か否かを判定し、最初に空状態と判定された単位ブロック領域を前記プログラムにより割り当てが要求されたデータ記憶用の領域として確保する領域確保処理と、
を含むことを特徴とするメモリ制御方法。
【請求項5】
プログラムの実行に伴って発生する要求に基づいて、メモリ部にデータを記憶するための領域を動的に確保する制御を行うメモリ制御装置のコンピュータを、
前記プログラムによりデータ記憶用の領域の割り当てが要求される毎に、前記プログラムにより要求されているデータサイズ以上で且つ基本容量の2 (指数nは0以上の整数)倍となる最小のデータサイズの記憶領域を、単位ブロック領域として設定するブロック領域設定手段、
前記メモリ部の先頭アドレスから順に、前記単位ブロック領域毎に当該単位ブロック領域が空状態か否かを判定し、最初に空状態と判定された単位ブロック領域を前記プログラムにより割り当てが要求されたデータ記憶用の領域として確保する領域確保手段、
として機能させること特徴とする制御プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明はメモリ制御装置、メモリ制御方法及び制御プログラムに関する。
【背景技術】
【0002】
従来、プログラムの実行時に使用するメモリ領域を、動的な手法により確保するメモリの制御方法が種々知られている。例えば、C言語を用いたプログラムにおいては、動的なメモリ確保のために用意されたヒープ領域から、malloc関数を用いてプログラムの実行に必要な任意のサイズのメモリブロックを確保し、そのメモリブロックにアクセスして、演算処理やデータの保存等に使用していた。そして、メモリブロックの確保が不要になった場合には、free関数を用いて当該メモリブロックを解放することにより、他の用途で再利用できるようにしていた。このようなメモリの制御方法については、例えば特許文献1に一般的な説明や適用例が記載されている。
【先行技術文献】
【特許文献】
【0003】
【文献】特開2005-322007号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
上述したようなメモリ領域の管理は、メモリを効率的に使用できる反面、その処理の煩雑さから、コンピュータシステムへの負担が増大するという問題を有していた。
【0005】
そこで、本発明は、簡易な処理によりシステムへの負担を軽減しつつ、効率的にメモリ領域を管理することができるメモリ制御装置、メモリ制御方法及び制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【0006】
本発明に係るメモリ制御装置は、プログラムの実行に伴って発生する要求に基づいて、メモリ部にデータを記憶するための領域を動的に確保する制御を行うメモリ制御装置であって、前記プログラムによりデータ記憶用の領域の割り当てが要求される毎に、前記プログラムにより要求されているデータサイズ以上で且つ基本容量の(指数nは0以上の整数)倍となる最小のデータサイズの記憶領域を、単位ブロック領域として設定するブロック領域設定手段と、前記メモリ部の先頭アドレスから順に、前記単位ブロック領域毎に当該単位ブロック領域が空状態か否かを判定し、最初に空状態と判定された単位ブロック領域を前記プログラムにより割り当てが要求されたデータ記憶用の領域として確保する領域確保手段と、を備えることを特徴とする。
また、本発明に係るメモリ制御方法は、プログラムの実行に伴って発生する要求に基づいて、メモリ部にデータを記憶するための領域を動的に確保する制御を行うメモリ制御装置が実行するメモリ制御方法であって、前記プログラムによりデータ記憶用の領域の割り当てが要求される毎に、前記プログラムにより要求されているデータサイズ以上で且つ基本容量の2 (指数nは0以上の整数)倍となる最小のデータサイズの記憶領域を、単位ブロック領域として設定するブロック領域設定処理と、前記メモリ部の先頭アドレスから順に、前記単位ブロック領域毎に当該単位ブロック領域が空状態か否かを判定し、最初に空状態と判定された単位ブロック領域を前記プログラムにより割り当てが要求されたデータ記憶用の領域として確保する領域確保処理と、を含むことを特徴とする。
また、本発明に係る制御プログラムは、プログラムの実行に伴って発生する要求に基づいて、メモリ部にデータを記憶するための領域を動的に確保する制御を行うメモリ制御装置のコンピュータを、前記プログラムによりデータ記憶用の領域の割り当てが要求される毎に、前記プログラムにより要求されているデータサイズ以上で且つ基本容量の2 (指数nは0以上の整数)倍となる最小のデータサイズの記憶領域を、単位ブロック領域として設定するブロック領域設定手段、前記メモリ部の先頭アドレスから順に、前記単位ブロック領域毎に当該単位ブロック領域が空状態か否かを判定し、最初に空状態と判定された単位ブロック領域を前記プログラムにより割り当てが要求されたデータ記憶用の領域として確保する領域確保手段、として機能させること特徴とする。
【発明の効果】
【0007】
本発明によれば、簡易な処理によりシステムへの負担を軽減しつつ、効率的にメモリ領域を管理することができる。
【図面の簡単な説明】
【0008】
図1】本発明に係るメモリ制御装置が適用されるコンピュータシステムの一例を示す概略ブロック図である。
図2】一実施形態に係るメモリ制御装置において実行されるメモリ制御方法(メモリ領域取得処理)の一例を示すフローチャートである。
図3】一実施形態に係るメモリ制御方法におけるメモリ領域取得処理を説明するための概略図である。
図4】一実施形態に係るメモリ制御方法に適用されるメモリ領域移動処理の一例を示すフローチャートである。
図5】一実施形態に係るメモリ制御方法に適用されるメモリ領域移動処理を説明するための概略図である。
図6】比較例におけるメモリ制御方法の一例を示す図(その1)である。
図7】比較例におけるメモリ制御方法の一例を示す図(その2)である。
図8】比較例におけるメモリ制御方法の一例を示す図(その3)である。
図9】比較例におけるメモリ制御方法の一例を示す図(その4)である。
図10】一実施形態に係るメモリ制御方法の作用効果を示す説明図(その1)である。
図11】一実施形態に係るメモリ制御方法の作用効果を示す説明図(その2)である。
図12】一実施形態に係るメモリ制御方法の作用効果を示す説明図(その3)である。
【発明を実施するための形態】
【0009】
以下、本発明に係るメモリ制御装置、メモリ制御方法及びそのプログラムについて、実施形態を示して詳しく説明する。なお、以下の説明では、本発明に係るメモリ制御装置を汎用のコンピュータシステムに適用した場合について説明する。
【0010】
<メモリ制御装置>
図1は、本発明に係るメモリ制御装置が適用されるコンピュータシステムの一例を示す概略ブロック図である。
【0011】
本発明に係るメモリ制御装置は、例えば図1に示すように、概略、CPUやMPU等の演算処理部10と、データ記憶用の領域が動的に確保されるメモリ管理領域32が設定されたメモリ部30と、演算処理部10からの指示に基づいてメモリ部30のメモリ管理領域32における領域の割当ての状態を管理するメモリ制御装置20と、を有している。
【0012】
演算処理部10は、プログラムを実行することにより発生する割当て要求に基づいて、メモリ制御装置20に対して、メモリ部30において記憶領域を動的に確保する処理を実行させる指示を行う。メモリ制御装置20は、演算処理部10からの指示に基づいて、メモリ部30に対して、所定のアルゴリズムに従って、プログラムの要求するデータサイズに応じた所定の記憶容量の領域を、当該領域を単位として規定されるアドレス位置を始点とする空き領域から確保する処理を実行する。
【0013】
メモリ部30は、プログラムを実行することにより生成される、或いは、コンピュータシステムの内外から取得したデータを、メモリ制御装置20によりメモリ管理領域32に確保された記憶領域に記憶(又は、一時保存)する。メモリ管理領域32の具体的な構成については、後述する。なお、メモリ部30は、メモリ管理領域32に加え、コンピュータシステム全体を制御するオペレーションシステムや、演算処理部10において実行されるプログラムを記憶する領域を有するものであってもよい。
【0014】
<メモリ制御方法>
次に、本実施形態に係るメモリ制御装置における制御方法(メモリ制御方法)について図面を参照して説明する。ここで、本実施形態に係るメモリ制御方法は、メモリ制御装置20において所定のアルゴリズムに基づく制御プログラムを実行することにより実現される。
【0015】
図2は、本実施形態に係るメモリ制御装置において実行されるメモリ制御方法(メモリ領域取得処理)の一例を示すフローチャートであり、図3は、本実施形態に係るメモリ制御方法におけるメモリ領域取得処理を説明するための概略図である。図4は、本実施形態に係るメモリ制御方法に適用されるメモリ領域移動処理の一例を示すフローチャートであり、図5は、本実施形態に係るメモリ制御方法に適用されるメモリ領域移動処理を説明するための概略図である。
【0016】
本実施形態に係るメモリ制御方法は、概略、メインルーチンであるメモリ領域取得処理と、メモリ領域取得処理における特定の条件下で実行されるサブルーチンであるメモリ領域移動処理と、を有している。
【0017】
(メモリ領域取得処理)
メモリ領域取得処理においては、例えば図2のフローチャートに示すように、まず、演算処理部10において所定のプログラムを実行することにより、データ記憶用の領域の割当て要求が発生すると、メモリ制御装置20は、要求されているデータサイズに基づいて、メモリ部30のメモリ管理領域32に確保するBANKの数を算出する(ステップS102)。具体的には、メモリ制御装置20は、演算処理部10から割当て要求を受け取ると、要求されているデータサイズ以上であって、かつ、基本容量の2のべき乗(2;指数n=0、1、2、3、4、・・・)倍となる最小のデータサイズに対応するBANK(メモリバンク)の数を算出する。
【0018】
ここで、本願明細書において、「BANK」は、例えば画像データ等を記憶するための基本容量を有する記憶領域を規定するものであって、本実施形態では、要求されているデータサイズに応じて算出され、アドレス(又は、BLOCK番号)が連続する2個の「BANK」で1つの「BLOCK」(メモリブロック;単位ブロック領域)を形成する。すなわち、1BLOCKは、要求されているデータサイズに応じて、1(=2)、2(=2)、4(=2)、8(=2)、・・・個のBANKにより形成されることになる。ここで、例えば1BANKの記憶容量(基本容量)を1MBに設定した場合には、1BLOCKの記憶容量は、それぞれ1MB、2MB、4MB、8MB、・・・に設定される。したがって、例えば、要求されているデータサイズが7MBの場合には、7MB以上であって、かつ、基本容量(1MB)の2倍となる最小のデータサイズ(8MB)に対応する8(8MB÷1MB=2)個のBANKにより1BLOCKが形成される。
【0019】
次いで、メモリ制御装置20は、算出されたBANK数を用いて、メモリ管理領域32に設定されるBLOCKの総数を算出する(ステップS104)。具体的には、メモリ制御装置20は、メモリ管理領域32を形成する全BANK数を、上記のステップS102において算出されたBANK数で除算することにより、メモリ管理領域32に設定されるBLOCKの総数mmaxを算出する。例えばメモリ管理領域32が16個のBANKにより形成されている場合、1BLOCKが1(=2)個のBANKで形成されている場合には16BLOCKが設定され、1BLOCKが2(=2)個のBANKで形成されている場合には8BLOCKが設定される。また、1BLOCKが4(=2)個のBANKで形成されている場合には4BLOCKが設定され、1BLOCKが8(=2)個のBANKで形成されている場合には2BLOCKが設定される。
【0020】
次いで、メモリ制御装置20は、メモリ管理領域32に設定された各BLOCKについて、プログラムの割当て要求に対する状態(Status)を取得する(ステップS106)。ここでは、メモリ制御装置20は、メモリ管理領域32に設定されたBLOCK単位で、各BANKがプログラムからの割当て要求に対して、割当ての対象となっていない「Empty」(空き状態)、又は、割当ての対象となって確保されているものの、現時点では使用されていない「Reserve」(予約状態)、又は、プログラムにより実際に使用されている「Use」(使用状態)のいずれの状態に設定されているかを検出する。この検出結果は、状態情報として取得される。
【0021】
次いで、メモリ制御装置20は、取得した状態情報に基づいて、BLOCK内の全てのBANKがEmpty(空き状態)に設定されているか否かを判定する(ステップS108)。ここでは、メモリ制御装置20は、上記のステップS104において算出された総数mmaxのBLOCKのうちのm番目(mは1~mmaxの整数、初期値m=1)のBLOCKについて、当該BLOCK内の各BANKがEmpty(空き状態)に設定されているか否かを判定する空き状態判定処理を実行する。この空き状態判定処理は、メモリ管理領域32に設定された先頭のアドレス(又は、BLOCK番号)の1番目のBLOCKから実行され、後述するステップS112、S114により、BLOCKの順番を規定する変数mが順次加算されて(m←m+1)、総数であるmmax番目のBLOCKまで繰り返し実行される。
【0022】
上記のステップS108において、判定結果がYesの場合には、メモリ制御装置20は、当該BLOCK内の全てのBANK(要求データサイズ以上で最小の2個のBANK全て)をデータ記憶用に確保して、各BANKの状態情報を、Empty(空き状態)からReserve(予約状態)に変更するとともに(ステップS110)、各BANKのIDを更新して、メモリ領域取得処理を終了する。
【0023】
ここで、2個のBANKにより形成されるBLOCK単位で、データ記憶用のBANKを確保する手法について、図面を参照して説明する。ここでは、例えば図3に示すように、メモリ管理領域32に16個の画像データ記憶用のBANK(「IMAGE BANK 000 /ID=00000000」~「IMAGE BANK 015/ID=00000015」)がアドレス(又は、BLOCK番号)順に設定され、当該メモリ管理領域32に対して、1BLOCKを形成するBANKの数が1(=2)、2(=2)、4(=2)、8(=2)の順で変化した場合における、記憶領域の確保手法について説明する。
【0024】
まず、メモリ管理領域32が初期化された状態では、図3(a)に示すように、全てのBANK(IMAGE BANK 000~IMAGE BANK 015)がEmpty(空き状態;図中では枠内背景を白抜きで表示)に設定される。そして、プログラムが実行されることにより記憶領域の割当て要求が発生すると、メモリ制御装置20は、演算処理部10から要求されているデータサイズが1BANK分以下の場合には、上記のステップS102によりBANK数を1(=2)と算出して1BLOCK=1BANK(プログラムにおけるデータの参照関係に基づいて相互に関連付けられて連結されたBANKの個数;Num of Chain=1)に設定する。そして、メモリ制御装置20は、図3(b)に示すように、メモリ管理領域32の先頭からアドレス(又は、BLOCK番号)の小さい順に、BLOCK単位(=1BANK単位)で記憶領域を確保する。ここでは、メモリ管理領域32の全てのBANK(IMAGE BANK 000~IMAGE BANK 015)がEmpty(空き状態)に設定されているので、先頭のアドレス(又は、BLOCK番号)の1BLOCK目を形成する1番目のBANK(IMAGE BANK 000)が確保されて、Reserve(予約状態;図中では枠内背景をハーフトーンで表示)に変更されるとともにIDが更新される(「ID=00000000」→「ID=00000016」)。
【0025】
次いで、要求されているデータサイズが1BANK分よりも大きく2BANK分以下の場合には、メモリ制御装置20は、上記のステップS102によりBANK数を2(=2)と算出して1BLOCK=2BANK(相互に関連付けられて連結されたBANKの個数;Num of Chain=2)に設定する。そして、メモリ制御装置20は、図3(c)に示すように、メモリ管理領域32の先頭からアドレス(又は、BLOCK番号)の小さい順に、BLOCK単位(=2BANK単位)で記憶領域を確保する。ここでは、メモリ管理領域32のBANK(IMAGE BANK 000~IMAGE BANK 015)のうち、1BLOCK目を形成する1番目のBANK(IMAGE BANK 000)がすでに確保されて、プログラムにより使用されている状態であるUse(使用状態;図中では枠内背景をハッチングで表示)に設定されている。そのため、メモリ制御装置20は、メモリ管理領域32の先頭のアドレス(又は、BLOCK番号)から2BLOCK目の3番目及び4番目のBANK(IMAGE BANK 002、IMAGE BANK 003)を確保して、Reserve(予約状態;図中ハーフトーンで表示)に変更するとともにIDを更新する(「ID=00000002」→「ID=00000017」、「ID=00000003」→「ID=00000018」)。
【0026】
次いで、要求されているデータサイズが2BANK分よりも大きく4BANK分以下の場合には、メモリ制御装置20は、BANK数を4(=2)と算出して1BLOCK=4BANK(相互に関連付けられて連結されたBANKの個数;Num of Chain=4)に設定する。そして、メモリ制御装置20は、図3(d)に示すように、メモリ管理領域32の先頭のアドレス(又は、BLOCK番号)からBLOCK単位(=4BANK単位)で記憶領域を確保する。ここでは、メモリ管理領域32の1BLOCK目を形成する1番目、3番目、4番目のBANK(IMAGE BANK 000、IMAGE BANK 002、IMAGE BANK 003)がすでにプログラムにより使用されている状態であるUse(使用状態;図中ハッチングで表示)に設定されている。そのため、メモリ制御装置20は、メモリ管理領域32の先頭のアドレス(又は、BLOCK番号)から2BLOCK目の5番目~8番目のBANK(IMAGE BANK 004~IMAGE BANK 007)を確保して、Reserve(予約状態;図中ハーフトーンで表示)に変更するとともにIDを更新する(「ID=00000004」→「ID=00000019」、・・・「ID=00000007」→「ID=00000022」)。
【0027】
次いで、要求されているデータサイズが4BANK分よりも大きく8BANK分以下の場合には、メモリ制御装置20は、BANK数を8(=2)と算出して1BLOCK=8BANK(相互に関連付けられて連結されたBANKの個数;Num of Chain=8)に設定する。そして、メモリ制御装置20は、図3(e)に示すように、メモリ管理領域32の先頭のアドレス(又は、BLOCK番号)からBLOCK単位(=8BANK単位)で記憶領域を確保する。ここでは、メモリ管理領域32の1BLOCK目を形成する1番目、3番目~8番目のBANK(IMAGE BANK 000、IMAGE BANK 002~IMAGE BANK 007)がすでにプログラムにより使用されている状態であるUse(使用状態;図中ハッチングで表示)に設定されている。そのため、メモリ制御装置20は、メモリ管理領域32の先頭のアドレス(又は、BLOCK番号)から2BLOCK目の9番目~16番目のBANK(IMAGE BANK 008~IMAGE BANK 015)を確保して、Reserve(予約状態;図中ハーフトーンで表示)に変更するとともにIDを更新する(「ID=00000008」→「ID=00000023」、・・・「ID=0000015」→「ID=00000030」)。
【0028】
一方、上記のステップS108において、判定結果がNoの場合には、メモリ制御装置20は、次の順番のBLOCKを空き状態判定処理の対象とするように設定する(ステップS112)。具体的には、メモリ制御装置20は、空き状態判定処理の対象となるBLOCKの順番を規定する変数mを1加算して(m←m+1)、次の順番のBLOCKを処理対象に設定する。このとき、メモリ制御装置20は、メモリ管理領域32に設定されたBLOCKの総数分の空き状態判定処理がすでに完了しているか否かを判定する(ステップS114)。具体的には、メモリ制御装置20は、ステップS112において設定された次の順番のBLOCKを規定する変数mが、BLOCKの総数mmaxを越えている場合には、すでに全てのBLOCKの空き状態判定処理が完了しているものと判定する。
【0029】
上記のステップS114において、判定結果がNoの場合には、メモリ制御装置20は、全てのBLOCKについて空き状態判定処理が完了していないと判定して、ステップS108に戻って、次の順番(m番目)のBLOCKについて、当該BLOCK内の全てのBANKがEmpty(空き状態)に設定されているか否かを再度判定する。
【0030】
このように、ステップS108~S114の一連の処理を繰り返し実行することにより、メモリ管理領域32に設定された全てのBLOCKについて、先頭のアドレス(又は、BLOCK番号)から順にBLOCK単位で各BANKの空き状態が確認され、全てのBANKがEmpty(空き状態)に設定され、かつ、アドレス(又は、BLOCK番号)が小さいBLOCKから順に、割当て要求に応じた記憶領域として確保する処理が実行された後、メモリ領域取得処理が終了する。
【0031】
一方、上記のステップS114において、判定結果がYesの場合には、メモリ制御装置20は、全てのBLOCKについて空き状態判定処理がすでに完了していて、BLOCK内の全てのBANKがEmpty(空き状態)に設定されている次のBLOCKは存在しないと判定する。すなわち、メモリ制御装置20は、BLOCK単位では、ステップS102で算出した、要求されているデータサイズ以上の記憶領域に対応するBANK数を有するBLOCKがメモリ管理領域32内に存在しないと判定する。
【0032】
そして、メモリ制御装置20は、メモリ管理領域32内に、ステップS102で算出した2個のBANK数分の空き領域が存在するか否かを判定する(ステップS116)。すなわち、2個の連続するBANKにより形成されるBLOCKの設定に関わらず、メモリ管理領域32全体において、要求されているデータサイズ分以上の空き領域に対応する数(2個)のBANKが存在するか否かを判定する。ここで、空き領域として判定されるBANKは、プログラムにより使用中ではなく、かつ、メモリ管理領域32内で移動が可能な記憶領域であって、メモリ管理領域32内に散在するものである。
【0033】
上記のステップS116において、判定結果がYesの場合には、メモリ制御装置20は、後述するメモリ領域移動処理(ステップS202~S220)を実行し(ステップS118)、処理終了後に、メモリ領域取得処理を終了する。一方、ステップS116において、判定結果がNoの場合には、メモリ制御装置20は、現時点ではメモリ管理領域32内に要求されているデータサイズに応じた記憶領域を確保できないと判定して(ステップS120)、メモリ領域取得処理を終了する。ここで、メモリ制御装置20は、現在実行中のプログラムによる処理が進んで、Use(使用状態)に設定されていたBANKが解放されてEmpty(空き状態)に変更された場合には、上記の一連のメモリ領域取得処理(後述するメモリ領域移動処理を含む)を再度実行する。
【0034】
(メモリ領域移動処理)
上述したメモリ領域取得処理のステップS116において、メモリ管理領域32内にプログラムで要求されているデータサイズ分以上の空き領域に対応する数のBANKを有するBLOCK(2個の連続するBANKにより形成されるBLOCK)は存在しないが、メモリ管理領域32内に対応する数のBANKが散在すると判定された場合(判定結果がYesの場合)には、メモリ制御装置20は、次のようなメモリ領域移動処理を実行する。
【0035】
メモリ領域移動処理においては、例えば図4のフローチャートに示すように、メモリ制御装置20は、まず、移動元となるBANKを有するBLOCKを選定するための移動元選定処理を実行した後、選定されたBLOCKの移動先を選定して移動させるための移動先選定・移動処理を実行する。
【0036】
移動元選定処理においては、メモリ制御装置20は、まず、BLOCK内の全てのBANKがEmpty(空き状態)又はReserve(予約状態)に設定されているか否かを判定する(ステップS202)。ここでは、メモリ制御装置20は、上述したメモリ領域取得処理のステップS106において取得した状態情報に基づいて、各BLOCKについて、Empty(空き状態)に設定されているBANK数、Reserve(予約状態)に設定されているBANK数、及び、プログラムにおけるデータの参照関係に基づいて相互に関連付けられて連結されたBANKの個数(Num of Chain)を調べてBANK数情報として取得する。次いで、メモリ制御装置20は、m番目(mは1~mmaxの整数、初期値m=1)のBLOCKについて、当該BLOCK内の各BANKがEmpty(空き状態)又はReserve(予約状態)のいずれかに設定されているか否かを判定する。これにより、BLOCK内にUse(使用状態)に設定されたBANKが含まれていないか否かが判定される。ここで、本実施形態においては、Use(使用状態)に設定されたBANKを有するBLOCKは、メモリ領域移動処理における移動対象とはならない。また、後述する処理により移動対象となるBLOCKであっても、当該BLOCK内のEmpty(空き状態)に設定されたBANKも移動対象とはならない。
【0037】
上記のステップS202において、判定結果がYesの場合には、メモリ制御装置20は、当該BLOCKがEmpty(空き状態)又はReserve(予約状態)に設定されたBANKのみで形成されている(すなわち、Use(使用状態)に設定されたBANKが含まれていない)と判定する。そして、メモリ制御装置20は、ステップS202において取得したBANK数情報に基づいて、当該BLOCKのEmpty(空き状態)に設定されたBANKの数が、先に選定された暫定移動の対象となるBLOCKにおけるEmpty(空き状態)に設定されたBANKの数よりも多いか否かを判定する(ステップS204)。なお、後述するように、当該ステップが最初に実行される際は、この判定結果はYesとなり、後述するステップS206において、当該BLOCKが暫定移動の対象となるBLOCKとして更新される。
【0038】
上記のステップS204において、判定結果がYesの場合には、メモリ制御装置20は、当該BLOCKを暫定移動の対象となるBLOCKとして更新する(ステップS206)。すなわち、メモリ制御装置20は、BLOCK内のEmpty(空き状態)に設定されたBANKの数がより多く、相対的に移動対象となるBANKの数が少ないBLOCKを移動元に選定するように、暫定移動の対象となるBLOCKを順次更新する。これらのステップS202~S206において実行される一連の判定処理は、メモリ管理領域32に設定された先頭のアドレス(又は、BLOCK番号)を有する1番目のBLOCKから実行され、後述するステップS208、S210により、総数であるmmax番目のBLOCKまで順次繰り返し実行される。
【0039】
ここで、ステップS204、S206において、暫定移動の対象となるBLOCKとは、移動元となるBLOCKを選定するための中間段階として暫定的に選定されるBLOCKのことであって、初期状態では暫定移動の対象となるBLOCKにおけるEmpty(空き状態)に設定されたBANKの数は例えば「0」に設定されて、ステップS204の条件を満たす(判定結果がYesとなる)最初のBLOCKが選定される。以降、ステップS202の条件を満たすBLOCKについて、ステップS204において、先に選定された暫定移動の対象となるBLOCKにおけるEmpty(空き状態)に設定されたBANKの数との比較処理が行われて、Empty(空き状態)に設定されたBANKの数が多いBLOCKが暫定移動の対象となるBLOCKとして選定される。
【0040】
一方、上記のステップS202又はS204において、判定結果がNoの場合、或いは、ステップS206において暫定移動の対象となっているBLOCKを更新した後には、メモリ制御装置20は、次の順番のBLOCKをステップS202~S206の一連の判定処理の対象とするように、BLOCKの順番を規定する変数mを設定(m←m+1)する(ステップS208)。このとき、メモリ制御装置20は、ステップS208において設定された次の順番のBLOCKを規定する変数mとBLOCKの総数mmaxとを比較することにより、BLOCKの総数分の判定処理がすでに完了しているか否かを判定する(ステップS210)。
【0041】
上記のステップS210において、判定結果がNoの場合には、メモリ制御装置20は、全てのBLOCKについて判定処理が完了していないと判定して、ステップS202に戻って、次の順番(m番目)のBLOCKについて、当該BLOCK内の全てのBANKがEmpty(空き状態)又はReserve(予約状態)のいずれかに設定されているか否かを再度判定する。
【0042】
一方、上記のステップS210において、判定結果がYesの場合には、メモリ制御装置20は、全てのBLOCKについて判定処理がすでに完了していると判定し、上記のステップS206において暫定移動の対象として最後に更新されたBLOCKを、移動元となるBANKを有するBLOCKとして確定する(ステップS212)。
【0043】
このように、ステップS202~S210の一連の処理を繰り返し実行することにより、メモリ管理領域32に設定された全てのBLOCKについて、先頭のアドレス(又は、BLOCK番号)から順にBLOCK内の各BANKの状態が確認され、全てのBANKがEmpty(空き状態)又はReserve(予約状態)に設定され、かつ、Empty(空き状態)に設定されたBANKの数が最も多いBLOCKが、移動元のBLOCKとして選定される。
【0044】
次いで、移動先選定・移動処理においては、メモリ制御装置20は、演算処理部10により実行されるプログラムにおけるデータの参照関係に基づいて、メモリ管理領域32内で相互に関連付けられて連結されたBANK群(Chain BANK)を単位として、空き状態に設定されたBLOCKを検出する(ステップS214)。このとき、メモリ制御装置20は、検出されたBLOCKのうちのアドレス(又は、BLOCK番号)の小さい方を優先して、移動先となるBANKを有するBLOCKとして選定する。ここで、メモリ制御装置20は、メモリ管理領域32内の空き状態に設定されたBLOCKを検出しているので、移動元のBLOCK内の各BANKのアドレスと、移動先となるBLOCKのBANKのアドレスとが重なる(重複する)ことはない。
【0045】
次いで、メモリ制御装置20は、上記のステップS214により選定された移動先BLOCKに、上述した移動元選定処理により確定した移動元BLOCKの各BANKを移動させる(ステップS216)。その後、メモリ制御装置20は、移動元BLOCK内に移動対象となっている他のBANKがあるか否かを判定し(ステップS218)、判定結果がYesの場合には、ステップS214に戻って、BANK群(Chain BANK)単位で各BLOCKの空き状態を再度検出して、移動対象となっている他のBANKの移動先となるBLOCKを選定する。
【0046】
このように、ステップS214~S218の一連の処理を繰り返し実行することにより、特定のBANK群(Chain BANK)単位で移動先のBLOCKが選定されて、移動元BLOCK内の移動対象となっている全てのBANKを順次移動させる処理が実行される。
【0047】
一方、上記のステップS218において、判定結果がNoの場合には、メモリ制御装置20は、移動元BLOCK内の移動対象となっている全てのBANKの移動が完了したと判定して、移動元BLOCK内の各BANKの状態情報を、移動先においてReserve(予約状態)に変更するとともに(ステップS220)、移動元及び移動先の各BANKのIDを更新して、メモリ領域移動処理を終了する。
【0048】
ここで、プログラムで要求されているデータサイズ分以上の空き領域に対応する数のBANKを有するBLOCKがメモリ管理領域32に存在しない場合において、上述したメモリ領域移動処理を適用してBLOCKを形成するBANKを移動することにより、データ記憶用のBANKを確保する手法について、図面を参照して説明する。ここでは、例えば図5に示すように、メモリ管理領域32に16個の画像データ記憶用のBANK(IMAGE BANK 000~IMAGE BANK 015)がアドレス(又は、BLOCK番号)順に設定されている場合において、特定のBANK群(Chain BANK)単位で移動先を探して記憶領域を確保する手法について説明する。
【0049】
まず、プログラムが実行されてメモリ管理領域32に対する割当て要求が繰り返されることにより、例えば図5(a)に示すように、記憶領域が確保された状態(便宜的に「現時点状態」と記す)において、新たに4(=2)BANK分のデータサイズを有する記憶領域の確保を要求された場合を想定する。ここで、要求されているデータサイズは4BANK分であるので、1BLOCKは4(=2)BANKに設定され、16個のBANKを有するメモリ管理領域32には、4BLOCK(BLOCK0~BLOCK3)が設定される。
【0050】
そして、現時点状態では、例えば図5(a)に示すように、BLOCK0では4個のBANKのうち、3BANKがEmpty(空き状態)に設定され、BLOCK1では2BANKがEmpty(空き状態)に設定され、BLOCK3では1BANKがEmpty(空き状態)に設定されている。また、BLOCK2ではEmpty(空き状態)に設定されたBANKは存在しない。このような現時点状態においては、各BLOCKを形成する4BANK全てがEmpty(空き状態)に設定されているBLOCKは存在しないため、要求されているデータサイズに応じた記憶領域を確保することはできない。
【0051】
そこで、上述したメモリ領域移動処理において説明したように、メモリ制御装置20は、まず、移動元となるBLOCKを選定する。具体的には、メモリ制御装置20は、各BLOCK(BLOCK0~BLOCK3)について、Empty(空き状態)に設定されているBANK数、Reserve(予約状態)に設定されているBANK数、及び、プログラムにおけるデータの参照関係に基づいて相互に関連付けられて連結されたBANKの個数(Num of Chain)を調べてBANK数情報として取得する。そして、本実施形態においては、このBANK数情報に基づいて、Use(使用状態)に設定されたBANKを有するBLOCKを移動対象から除外し、その他のBLOCKのうちでEmpty(空き状態)に設定されたBANKの数が多いBLOCKを移動対象とする手法により、図5(a)に示すBLOCK3が移動元として選定される。
【0052】
次いで、メモリ制御装置20は、移動先となるBLOCKを選定する。具体的には、メモリ制御装置20は、移動元であるBLOCK3を形成する各BANK(IMAGE BANK 012~IMAGE BANK 015)について、上記のBANK数情報に基づいて、相互に関連付けられて連結されたBANK群(Chain BANK)として、IMAGE BANK 012とIMAGE BANK 013の2BANKにより形成される1BLOCK(Num of Chain=2)を検出する。そして、メモリ制御装置20は、移動先を選定する際に、メモリ管理領域32の先頭からアドレス(又は、BLOCK番号)の小さい順に、2(=2)BANKを単位として規定される(すなわち、2BANKごとの)アドレス位置(又は、BLOCK番号位置)における空き領域を探す。これにより、メモリ制御装置20は、図5(b)に示すBLOCK0を移動先として選定して、図5(a)に示した移動元のBLOCK3を形成する2BANK(IMAGE BANK 012、IMAGE BANK 013)を、BLOCK0内のIMAGE BANK 002、IMAGE BANK 003に移動させる(図中、丸数字の「1」)。
【0053】
ここで、BLOCK0を形成する4BANK(IMAGE BANK 000~IMAGE BANK 003)のうちの先頭のアドレス(又は、BLOCK番号)のBANK(IMAGE BANK 000)はUse(使用状態)に設定されているため、このBANKを含む2BANK(IMAGE BANK 000、IMAGE BANK 001)を移動先から除外する。そして、2BANKを単位とする次のアドレス位置(又は、BLOCK番号位置)に存在する空き状態の2BANK(IMAGE BANK 002、IMAGE BANK 003)を対象にして、移動元のBLOCK3の2BANK(IMAGE BANK 012、IMAGE BANK 013)を移動させる。このとき、メモリ制御装置20は、移動元のBLOCK3の2BANK(IMAGE BANK 012、IMAGE BANK 013)のIDを更新するとともに(「ID=00000023」→「ID=00000026」、「ID=00000024」→「ID=00000027」)、移動先のBLOCK0の2BANK(IMAGE BANK 002、IMAGE BANK 003)のIDを更新する(「ID=00000002」→「ID=00000023」、「ID=00000003」→「ID=00000024」)。
【0054】
次いで、メモリ制御装置20は、移動元のBLOCK3に移動対象となっている他のBANKがあるか否かを判定し、IMAGE BANK 014についても上記と同様の処理を実行する。ここで、IMAGE BANK 014は、上記のBANK数情報に基づいて、1BANKにより形成される1BLOCK(Num of Chain=1)として検出される。この場合には、メモリ制御装置20は、移動先を選定する際に、メモリ管理領域32の先頭からアドレス(又は、BLOCK番号)の小さい順に、検出された1(=2)BANKを単位とする(すなわち、1BANKごとの)アドレス位置(又は、BLOCK番号位置)における空き領域を探す。これにより、メモリ制御装置20は、図5(c)に示すBLOCK0を移動先として選定して、図5(a)又は(b)に示した移動元のBLOCK3を形成する1BANK(IMAGE BANK 014)を、BLOCK0内のIMAGE BANK 001に移動させる(図中、丸数字の「2」)。
【0055】
ここで、上述したように、BLOCK0の4BANKのうちの先頭のアドレス(又は、BLOCK番号)のBANK(IMAGE BANK 000)はUse(使用状態)に設定されているため移動先から除外し、1BANKを単位とする次のアドレス位置(又は、BLOCK番号位置)に存在する空き状態の1BANK(IMAGE BANK 001)を対象にして、移動元のBLOCK3の1BANK(IMAGE BANK 014)を移動させる。このとき、メモリ制御装置20は、移動元のBLOCK3の1BANK(IMAGE BANK 014)のIDを更新するとともに(「ID=00000025」→「ID=00000028」)、移動先のBLOCK0の1BANK(IMAGE BANK 001)のIDを更新する(「ID=00000001」→「ID=00000025」)。
【0056】
次いで、メモリ制御装置20は、図5(c)に示すように、上述した一連のメモリ領域移動処理において移動元であったBLOCK3について、移動対象となった3BANK(IMAGE BANK 012~IMAGE BANK 014)に設定されている状態情報を消去(クリア)して解放し、BLOCK3内の4BANK(IMAGE BANK 012~IMAGE BANK 015)の全てをEmpty(空き状態)に設定する。ここで、各BANKに設定されている状態情報の更新は、移動処理に伴って各BANKのIDを更新する際に同時に実行してもよい。
【0057】
そして、メモリ制御装置20は、図5(d)に示すように、BLOCK3内の4BANK(IMAGE BANK 012~IMAGE BANK 015)を1BLOCK(Num of Chain=4)に設定して、プログラムで要求されている4BANK分のデータサイズに応じた記憶領域として確保する(図中、丸数字の「3」)。このとき、メモリ制御装置20は、確保した4BANK(IMAGE BANK 012~IMAGE BANK 015)をReserve(予約状態)に設定するとともにIDを更新する(「ID=00000026」→「ID=00000029」、「ID=00000027」→「ID=00000030」、「ID=00000028」→「ID=00000031」、「ID=00000015」→「ID=00000032」)。
【0058】
このように、本実施形態においては、プログラムの実行に伴って要求されているデータサイズ以上を有する2個の基本容量の記憶領域(BANK)を、メモリ管理領域の先頭アドレスから2個の記憶領域(BANK)を有するブロック領域(BLOCK)を単位として規定されるアドレス位置を始点とする(又は、2個の記憶領域(BANK)を有するBLOCK番号位置の)空き領域から確保するメモリ制御方法を有している。これにより、要求されたデータサイズに対応する記憶領域を、複雑なアドレス計算を行うことなく、簡易な手法を用いて短時間で確保することができる。また、メモリ管理領域内に要求されたデータサイズに応じた空き領域を生成する際に、2個の記憶領域(BANK)を単位とするアドレス位置を始点とする(又は、BLOCK番号位置の)空き領域に移動させるメモリ制御方法を有している。これにより、空き状態の記憶領域を少ない移動回数で集約して、要求されたデータサイズに対応する記憶領域を生成して確保することができる。したがって、プログラムの実行に伴って発生する割当て要求に対して、システムへの負担を軽減しつつ、効率的にメモリ領域を管理することができるので、処理性能(処理速度等)の向上や消費電力の削減を図ることができる。
【0059】
また、本実施形態は、演算処理部において実行されるプログラムによる割当て要求に基づいて、メモリ制御装置がメモリ部のメモリ管理領域を制御する汎用のコンピュータシステムに適用することができるので、上述したメモリ制御方法を有する制御プログラムをメモリ制御装置に組み込むことにより、システムへの負担を軽減しつつ、効率的にメモリ領域を管理することができる。
【0060】
<作用効果の検証>
次に、上述した本実施形態における作用効果について、比較例を示して具体的に説明する。ここでは、比較例として、要求されたデータサイズに応じたBANKを、メモリ管理領域の先頭からアドレスの小さい順に一義的に確保するとともに、メモリ管理領域内に要求されたデータサイズに応じた空き領域を生成する際にも、BANKの移動先をアドレスの小さい順に一義的に設定する手法の一例を示し、本実施形態との違いに基づいて本実施形態の作用効果の優位性について説明する。
【0061】
図6図9は、比較例におけるメモリ制御方法の一例を示す図であり、図10図12は、本実施形態に係るメモリ制御方法の作用効果を示す説明図である。ここでは、撮像機器のイメージセンサにより取得される撮影データの画像処理において、例えば、RAW(生)データであるBayerデータ(撮影データ)を、輝度色素系の色情報であるYUVデータに変換し、さらにJPEGデータに変換して出力する一連の処理に並行して、撮影を随時行ってBayerデータを順次取得する場合について説明する。
【0062】
比較例におけるメモリ制御方法においては、図6(a)に示すように、16個の画像データ記憶用のBANK(IMAGE BANK 1~IMAGE BANK 16)がアドレス順(又は、BLOCK番号順)に設定されたメモリ管理領域において、まず、初期化により全てのBANK(IMAGE BANK 1~IMAGE BANK 16)がEmpty(空き状態)に設定される。次いで、図6(b)~(e)に示すように、メモリ管理領域の先頭からアドレス(又は、BLOCK番号)が小さい順に、Bayer1、YUV(1)、Bayer2、Develop YUV(1)、Bayer3、JPEG(1)の各データを記憶する記憶領域に対応するBANKが確保される。具体的には、Bayer1は、撮像機器から取得されるBayerデータであって、2BANK分のデータサイズを有し、メモリ管理領域のIMAGE BANK 1、IMAGE BANK 2が確保される。YUV(1)は、画像処理によりBayer1から変換されるYUVデータであって、4BANK分のデータサイズを有し、IMAGE BANK 3~IMAGE BANK 6が確保される。Bayer2は、撮像機器から取得されるBayerデータであって、2BANK分のデータサイズを有し、IMAGE BANK 7、IMAGE BANK 8が確保される。Develop YUV(1)は、画像処理によりYUV(1)から変換される現像用のYUVデータであって、4BANK分のデータサイズを有し、IMAGE BANK 9~IMAGE BANK 12が確保される。Bayer3は、撮像機器から取得されるBayerデータであって、2BANK分のデータサイズを有し、IMAGE BANK 13、IMAGE BANK 14が確保される。JPEG(1)は、画像処理によりDevelop YUV(1)から変換されるJPEGデータであって、1BANK分のデータサイズを有し、IMAGE BANK 15が確保される。
【0063】
ここで、図6(d)、(e)に示すように、プログラムによる画像処理が完了して不要になったデータ(Bayer1、YUV(1))は、順次消去されて当該BANK(IMAGE BANK 1~IMAGE BANK 6)が解放されるとともにEmpty(空き状態)に設定され、アドレス(又は、BLOCK番号)が小さい順に、新たに撮像機器から取得されたBayerデータ(Bayer4)の記憶用に確保される(IMAGE BANK 1、IMAGE BANK 2)。以下同様に、図7図9に示すように、アドレスが小さい順に一義的に、撮像機器から取得されるBayerデータ、及び、画像処理により生成される各データ(YUVデータ、現像用YUVデータ、JPEGデータ)を記憶するためのBANKの確保、及び、不要になったデータの消去、BANKの解放を繰り返す。
【0064】
なお、図6図9では、2BANK分のデータサイズを有するBayerデータとして、Bayer1~Bayer8までを取得する際に、メモリ管理領域において確保されるBANKの割当ての状態を示している。また、図6図9において、「Capt Bayer」はBayerデータの取得処理を示し、「Bayer to YUV」はBayerデータからYUVデータへの変換処理を示し、「YUV to Develop YUV」はYUVデータから現像用のYUVデータへの変換処理を示し、「Develop YUV to JPEG」は現像用のYUVデータからJPEGデータへの変換処理を示し、「Move Bayer」はBayerデータの移動処理を示す。
【0065】
このようなメモリ制御方法において、例えば図7(a)、(b)又は、図8(a)~(d)、図9(a)に示すように、メモリ管理領域の大半のBANKが確保されて、空き領域が不足した状態になると、プログラムで要求されているデータサイズに応じた記憶領域を確保することができなくなり、新たなBayerデータの取得や画像処理が滞ることになる。このような場合には、BANKを移動させて空き領域を集約する処理が必要になるが、確保するBANKの位置やBANKの移動先を、アドレスの小さい順に一義的に設定する比較例の手法においては、要求されているデータサイズに対応した数の連続するBANKを確保するために複数回(例えば図8(a)~(d)、図9(a)に示した4回)の移動処理を必要とすることになる。そのため、これらのBANKの移動処理の間、データの取得や各種の変換処理の実行が不可能となり、システムの処理性能(特に、処理速度)が大幅に低下することになる。
【0066】
これに対して、本実施形態においては、要求されているデータサイズ以上を有する2個のBANKを、先頭アドレスから2個のBANK(=1BLOCK)を単位とするアドレス位置を始点とする(又は、BLOCK番号位置の)空き領域から確保し、また、要求されたデータサイズに応じた空き領域を生成する際に、2個のBANK(=1BLOCK)を単位とするアドレス位置を始点とする(又は、BLOCK番号位置の)空き領域に移動させるメモリ制御方法を有している。これにより、例えば図10図12に示すように、比較例と同等のBayerデータ(Bayer1~Bayer8)の取得や、各種の変換処理を含む画像処理を実行した場合であっても、比較例に示した場合よりも簡易な手法を用いて少ない回数(例えば図12(a)、(b)に示した1回)の移動処理により、要求されているデータサイズに対応した数の連続するBANKを確保することができ、迅速に次のデータの取得や各種の変換処理を実行することができる。したがって、本実施形態によれば、プログラムの実行に伴って発生する割当て要求に対して、システムへの負担を軽減しつつ、効率的にメモリ領域を管理することができるので、処理性能(処理速度等)の向上や消費電力の削減を図ることができる。
【0067】
なお、上述した実施形態においては、本発明に係るメモリ制御装置及びメモリ制御方法を、デジタルカメラ等の撮像機器に適用してイメージセンサから取得した撮影データに所定の画像処理を施す場合について説明したが、本発明はこれに限定されるものではない。本発明は、例えば各種のセンサ機器により長時間かつ継続的に取得されるデータサイズの異なるセンサデータや、処理内容や状況に応じてデータサイズが異なる各種のデータを、限られた容量のメモリ空間内で効率的に管理する際に適するものである。したがって、本発明は、例えば様々なモノをインターネットに接続させて並列的に制御や管理、情報の収集等を行うIoT(Internet of Things;モノのインターネット)の分野や、そのような分野を含む幅広い範囲で良好に適用することができる。
【0068】
以上、本発明のいくつかの実施形態について説明したが、本発明は、上述した実施形態に限定されるものではなく、特許請求の範囲に記載された発明とその均等の範囲を含むものである。
以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
【0069】
(付記)
[1]
プログラムの実行に伴って発生する要求に基づいて、メモリ部にデータを記憶するための領域を動的に確保する制御を行うメモリ制御装置であって、
前記プログラムにより要求されているデータのサイズに応じた2(指数nは0以上の整数)個の基本容量を有する記憶領域を、単位ブロック領域として設定するブロック領域設定手段と、
前記メモリ部の先頭アドレスから順に、前記単位ブロック領域を単位として規定されるアドレス位置における前記2個の記憶領域の空き状態に応じて、前記単位ブロック領域を単位として前記要求されているデータを記憶するための領域を確保する領域確保手段と、
を備えることを特徴とするメモリ制御装置。
【0070】
[2]
前記メモリ部の前記アドレス位置に前記2個の空き状態の記憶領域がない場合に、前記単位ブロック領域ごとの前記記憶領域の空き状態、及び、前記プログラムにおける前記データの参照関係に基づいて、前記メモリ部にすでに確保されている前記2個の記憶領域を、前記メモリ部の先頭アドレスから順に、前記2個の記憶領域を単位として規定され、かつ、前記アドレス位置とは重ならない新たなアドレス位置に移動させる領域移動手段を、更に備えることを特徴とする[1]に記載のメモリ制御装置。
【0071】
[3]
プログラムの実行に伴って発生する要求に基づいて、メモリ部にデータを記憶するための領域を動的に確保する制御を行うメモリ制御装置であって、
前記プログラムにより要求されているデータのサイズに応じた2(指数nは0以上の整数)個の基本容量を有する記憶領域を、単位ブロック領域として設定するブロック領域設定手段と、
前記メモリ部において前記単位ブロック領域を単位として規定されるアドレス位置における前記2個の記憶領域の空き状態、及び、前記プログラムにおける前記データの参照関係に基づいて、前記メモリ部にすでに確保されている前記2個の記憶領域を、前記メモリ部の先頭アドレスから順に、前記2個の記憶領域を単位として規定され、かつ、前記アドレス位置とは重ならない新たなアドレス位置に移動させる領域移動手段と、
を備えることを特徴とするメモリ制御装置。
【0072】
[4]
プログラムの実行に伴って発生する要求に基づいて、メモリ部にデータを記憶するための領域を動的に確保する制御を行うメモリ制御方法であって、
前記プログラムにより要求されているデータのサイズに応じた2(指数nは0以上の整数)個の基本容量を有する記憶領域を、単位ブロック領域として設定し、
前記メモリ部の先頭アドレスから順に、前記単位ブロック領域を単位として規定されるアドレス位置における前記2個の記憶領域の空き状態に応じて、前記単位ブロック領域を単位として前記要求されているデータを記憶するための領域を確保する、
ことを特徴とするメモリ制御方法。
【0073】
[5]
前記メモリ部の前記アドレス位置に前記2個の空き状態の記憶領域がない場合に、前記単位ブロック領域ごとの前記記憶領域の空き状態、及び、前記プログラムにおける前記データの参照関係に基づいて、前記メモリ部にすでに確保されている前記2個の記憶領域を、前記メモリ部の先頭アドレスから順に、前記2個の記憶領域を単位として規定され、かつ、前記アドレス位置とは重ならない新たなアドレス位置に移動させる、
ことを特徴とする[4]に記載のメモリ制御方法。
【0074】
[6]
プログラムの実行に伴って発生する要求に基づいて、メモリ部にデータを記憶するための領域を動的に確保する制御を行うメモリ制御方法であって、
前記プログラムにより要求されているデータのサイズに応じた2(指数nは0以上の整数)個の基本容量を有する記憶領域を、単位ブロック領域として設定し、
前記メモリ部において前記単位ブロック領域を単位として規定されるアドレス位置における前記2個の記憶領域の空き状態、及び、前記プログラムにおける前記データの参照関係に基づいて、前記メモリ部にすでに確保されている前記2個の記憶領域を、前記メモリ部の先頭アドレスから順に、前記2個の記憶領域を単位として規定され、かつ、前記アドレス位置とは重ならない新たなアドレス位置に移動させる、
ことを特徴とするメモリ制御方法。
【0075】
[7]
プログラムの実行に伴って発生する要求に基づいて、メモリ部にデータを記憶するための領域を動的に確保する制御を行うメモリ制御装置の制御プログラムであって、
前記メモリ制御装置を、
前記プログラムにより要求されているデータのサイズに応じた2(指数nは0以上の整数)個の基本容量を有する記憶領域を、単位ブロック領域として設定するブロック領域設定手段、
前記メモリ部の先頭アドレスから順に、前記単位ブロック領域を単位として規定されるアドレス位置における前記2個の記憶領域の空き状態に応じて、前記単位ブロック領域を単位として前記要求されているデータを記憶するための領域を確保する領域確保手段、
として機能させることを特徴とする制御プログラム。
【0076】
[8]
前記メモリ制御装置を、
前記メモリ部の前記アドレス位置に前記2個の空き状態の記憶領域がない場合に、前記単位ブロック領域ごとの前記記憶領域の空き状態、及び、前記プログラムにおける前記データの参照関係に基づいて、前記メモリ部にすでに確保されている前記2個の記憶領域を、前記メモリ部の先頭アドレスから順に、前記2個の記憶領域を単位として規定され、かつ、前記アドレス位置とは重ならない新たなアドレス位置に移動させる領域移動手段、
として機能させることを特徴とする[7]に記載の制御プログラム。
【0077】
[9]
プログラムの実行に伴って発生する要求に基づいて、メモリ部にデータを記憶するための領域を動的に確保する制御を行うメモリ制御装置の制御プログラムであって、
前記メモリ制御装置を、
前記プログラムにより要求されているデータのサイズに応じた2(指数nは0以上の整数)個の基本容量を有する記憶領域を、単位ブロック領域として設定するブロック領域設定手段、
前記メモリ部において前記単位ブロック領域を単位として規定されるアドレス位置における前記2個の記憶領域の空き状態、及び、前記プログラムにおける前記データの参照関係に基づいて、前記メモリ部にすでに確保されている前記2個の記憶領域を、前記メモリ部の先頭アドレスから順に、前記2個の記憶領域を単位として規定され、かつ、前記アドレス位置とは重ならない新たなアドレス位置に移動させる領域移動手段、
として機能させることを特徴とする制御プログラム。
【符号の説明】
【0078】
10 演算処理部
20 メモリ制御装置(ブロック領域設定手段、領域確保手段、領域移動手段)
30 メモリ部
32 メモリ管理領域(メモリ領域)
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12