(57)【特許請求の範囲】
【請求項１】
情報処理データを、スタックメモリ及びワークメモリに領域分割された内部メモリに記憶する内部記憶手段と、
前記内部記憶手段の外部に配設され、前記内部メモリに記憶されたデータを記憶可能な外部記憶手段と、
前記内部記憶手段及び前記外部記憶手段との相互間のデータ移動を行うデータ移動手段と、
前記内部メモリのスタックメモリの使用中領域が第１の閾値を越えた場合には、前記内部記憶手段から前記外部記憶手段へのデータ移動を、前記データ移動手段に指示して制御するデータ移動制御手段と、
前記スタックメモリ領域のデータの一部を前記内部記憶手段の外部に退避して形成された前記スタックメモリに配分された領域の空き領域が第１の閾値を越え、且つ前記ワークメモリの使用中領域が前記スタックメモリ使用中領域に近づいた場合には、当該空き領域にスタックメモリの使用中領域を移動する内部メモリ再編成手段とを備える
情報処理装置。
【請求項２】
請求項１に記載の情報処理装置において、
前記内部記憶手段の外部に配設され、前記内部メモリに記憶されたデータを記憶可能な外部記憶手段と、
前記内部記憶手段及び前記外部記憶手段との相互間のデータ移動を行うデータ移動手段と、
前記内部メモリの複数に分割されたスタックメモリの使用中領域が第２の閾値を越えた場合には、前記内部記憶手段から前記外部記憶手段へのデータ移動を、前記データ移動手段に指示して制御するデータ移動制御手段とを備え、
データ移動制御手段が、前記内部メモリのワークエリアに対する各スタックメモリの割合が小さくなることに応じて前記第２の閾値を小さく設定する
情報処理装置。
【請求項３】
請求項２に記載の情報処理装置において、
前記内部メモリの複数に分割されたスタックメモリに対して、各々のスタックメモリの使用状況に応じた優先度を設定する優先度設定手段を備え、
前記内部メモリ再編成手段が、前記優先度設定手段に設定された前記優先度に基づいて、前記内部メモリの前記領域分割を再編成する
情報処理装置。
【請求項４】
情報処理データを、スタックメモリ及びワークメモリに領域分割された内部メモリに記憶する内部記憶工程と、
前記内部記憶工程の外部に配設され、前記内部メモリに記憶されたデータを記憶可能な外部記憶工程と、
前記内部記憶工程及び前記外部記憶工程との相互間のデータ移動を行うデータ移動工程と、
前記内部メモリのスタックメモリの使用中領域が第１の閾値を越えた場合には、前記内部記憶工程から前記外部記憶工程へのデータ移動を、前記データ移動工程に指示して制御するデータ移動制御工程と、
前記スタックメモリ領域のデータの一部を前記内部記憶工程の外部に退避して形成された前記スタックメモリに配分された領域の空き領域が第１の閾値を越え、且つ前記ワークメモリの使用中領域が前記スタックメモリ使用中領域に近づいた場合には、当該空き領域にスタックメモリの使用中領域を移動する内部メモリ再編成工程とを含む
情報処理方法。
【請求項５】
情報処理データを、スタックメモリ及びワークメモリに領域分割された内部メモリに記憶する内部記憶手段、
前記内部記憶手段の外部に配設され、前記内部メモリに記憶されたデータを記憶可能な外部記憶手段、
前記内部記憶手段及び前記外部記憶手段との相互間のデータ移動を行うデータ移動手段、
前記内部メモリのスタックメモリの使用中領域が第１の閾値を越えた場合には、前記内部記憶手段から前記外部記憶手段へのデータ移動を、前記データ移動手段に指示して制御するデータ移動制御手段、
前記スタックメモリ領域のデータの一部を前記内部記憶手段の外部に退避して形成された前記スタックメモリに配分された領域の空き領域が第１の閾値を越え、且つ前記ワークメモリの使用中領域が前記スタックメモリ使用中領域に近づいた場合には、当該空き領域にスタックメモリの使用中領域を移動する内部メモリ再編成手段としてコンピュータを機能させる
情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリを用いてデータ処理を行う情報処理装置に関して、特に、メモリ使用の効率化により利用可能メモリを拡張できる情報処理装置に関する。
【背景技術】
【０００２】
スタックメモリは、プロセッサ上でプログラムを動作させる際にそのサブルーチン（関数）呼び出しでの引数渡し、関数の呼び出し元アドレスの退避、レジスタ退避などに使用される。一般に、スタックメモリは、ハードウェアレジスタで実現されるスタックポインタを用いた管理を行う。スタックポインタは、スタック領域内で最も後に格納された（もしくは最も新しい）スタックデータの格納アドレスであり、Push及びPopの各操作を行うことで、スタックメモリ上へのデータの格納、および取り出しを実現する。ここで、Pushは、スタックポインタの指す位置にデータを格納しスタックポインタを進める操作であり、Popは、スタックポインタの指す位置からデータを取り出しスタックポインタをPushとは逆の方向に戻す操作である。
【０００３】
一般に、プログラムで使用される関数のネスト数は、プログラムの大規模化に伴い、増加する傾向にあり、多くのスタックメモリ領域が必要とされている。また、組み込みシステム等のリアルタイム処理が必要な装置や高速データ処理が必要なDSP（Digital Signal Processor）に搭載されるソフトウェアは、スタックメモリを内部RAM等の高速メモリデバイス上に実装し、アクセス速度の効率化を図っている。この構成では、スタックメモリは、プロセッサから見た場合の全体メモリ空間の一部として直接見えており、スタックポインタレジスタ（Stack Pointer Register；SPR）は、当該スタックメモリ空間を直接参照する。また、内部RAMのうち、スタックメモリ領域に割り当てた部分以外のメモリ領域は、プロセッサ上で動作するプログラム実行に必要な一時作業用のワークメモリとして利用される。従って、本構成では、ワークメモリサイズを大きく確保しようとするとスタックメモリ領域を縮小しなければならず、大規模なプログラムの場合には、スタックメモリ領域の大半は外部ＲＡＭに配置する必要があるため、push及びpopの操作に時間を要してしまう。
従来の情報処理装置は、古いスタックメモリ内容を外部メモリデバイスへ退避させる技術がある（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開昭５８−１８９８８８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかし、従来の情報処理装置は、スタックメモリに十分に大きな容量を固定長で割り当てるため、ワークメモリサイズが制限されてしまい、プログラム動作時の処理性能が低下するという課題を有する。
【０００６】
本発明は前記課題を解消するためになされたもので、スタックメモリの使用領域を状況に応じて動的に変更することにより、ワークメモリサイズの空き領域を適宜拡張させて処理能力を安定的に維持できる情報処理装置の提供を目的とする。
【課題を解決するための手段】
【０００７】
本願に開示する情報処理装置は、スタックメモリに配分された領域の空き領域が閾値を越えた場合には、当該空き領域の少なくとも一部にスタックメモリの使用中領域を移動し、内部メモリ内のワークメモリとスタックメモリの領域分割を再編成する。
【発明の効果】
【０００８】
本願に開示する情報処理装置は、スタックメモリの空き状況に応じてワークメモリを拡張できることとなり、高速なプログラム動作が実現できる。
【図面の簡単な説明】
【０００９】
【図１】本発明の第１の実施形態に係る情報処理装置のブロック図
【図２】本発明の第１の実施形態に係る情報処理装置のデータ例
【図３】本発明の第１の実施形態に係る情報処理装置の内部RAMの説明図
【図４】本発明の第１の実施形態に係る情報処理装置の外部RAM転送のフローチャート
【図５】本発明の第１の実施形態に係る情報処理装置の内部RAMの領域変更のフローチャート
【図６】本発明の第１の実施形態に係る情報処理装置の内部RAMの領域変更の説明図
【図７】本発明の第２の実施形態に係る情報処理装置の内部RAMの説明図及びデータ例
【図８】本発明の第２の実施形態に係る情報処理装置の内部RAMの領域変更のフローチャート
【図９】本発明の第２の実施形態に係る情報処理装置の内部RAMの領域変更の説明図
【図１０】本発明の第３の実施形態に係る情報処理装置の追加部分のブロック図及びデータ例
【発明を実施するための形態】
【００１０】
発明の実施形態は、情報処理装置、情報処理方法および情報処理プログラムである。ここでは、主に情報処理装置について、以下に実施形態について詳細に説明する。しかしながら、情報処理装置の実施形態の説明は、情報処理方法および情報処理プログラムについても適用できる。
【００１１】
実施形態である情報処理装置は、内部記憶手段と内部メモリ再編手段を備える。内部記憶手段は、情報処理データを、スタックメモリ及びワークメモリに領域分割された内部メモリに記憶する。内部メモリ再編手段は、スタックメモリ領域のデータの一部を前記内部記憶手段の外部に退避して形成されたスタックメモリに配分された領域の空き領域が第１の閾値を越え、且つ前記ワークメモリの使用中領域がスタックメモリ使用中領域に近づいた場合には、空き領域にスタックメモリの使用中領域を移動する。
この実施形態である情報処理装置は、高速なプログラム動作が実現できる。
【００１２】
（第１の実施形態）
以下、第１の実施形態に係る情報処理装置を、図１から図６に基づいて説明する。
この図１は本発明の第１の実施形態に係る情報処理装置のブロック図、図２は本発明の第１の実施形態に係る情報処理装置のデータ例、図３は本発明の第１の実施形態に係る情報処理装置の内部RAMの説明図を示す。また、図４は本発明の第１の実施形態に係る情報処理装置の外部RAM転送のフローチャート、図５は本発明の第１の実施形態に係る情報処理装置の内部RAMの領域変更のフローチャート、図６は本発明の第１の実施形態に係る情報処理装置の内部RAMの領域変更の説明図を示す。
【００１３】
図１において、本実施形態に係る情報処理装置は、内部RAM(Random Access Memory)１と、アドレス変換部２と、内部RAM管理部３と、プロセッサコア４と、外部RAM(Random Access Memory)５と、DMAC(Direct Memory Access Controller)６とを備える。
【００１４】
この内部RAM１は、前記内部記憶手段の一例として、情報処理データを、スタックメモリ１１及びワークメモリ１２に領域分割された内部メモリに記憶する。また、このアドレス変換部２は、アドレス変換手段として、この内部RAM１により記憶されたデータに関して、内部メモリの物理アドレス及びポインタアドレスの相互変換を行う。この内部RAM１上のスタックメモリが移動するため、論理上のスタックメモリアドレスと物理アドレスとの変換を行うプロセッサ１０内のプログラムは、外部メモリ上の論理アドレスを参照してデータ処理を行う。ここで、実際のスタックデータは内部RAM１上にあるため、このアドレス変換部２は、アクセスアドレスの変換を行う。
【００１５】
また、この内部RAM管理部３は、この内部RAM１のスタックメモリ１１上のデータ移動を管理する。また、このプロセッサコア４は、スタックポインタレジスタ（Stack Pointer Register；SPR）４１と、汎用レジスタ４２（R0,R1,,,R15）とを含み、各種プログラムが動作する。このプロセッサコア４は、汎用レジスタ上のデータをメモリ上データから読み込み（ロード）又はメモリ上への書込み（ストア）、格納されたレジスタ上のデータを用いて各種演算を行い、記述言語により処理手順が記載されたソフトウェアプログラムが動作する。
【００１６】
プログラムは一般的に処理単位ごとに関数化（サブルーチン化）されており、このプロセッサコア４は、関数呼び出しの際には、現在までのレジスタの状況などをスタックメモリ１１上に保存し（push操作）、呼び出された側の関数処理の準備を行う。また、このプロセッサコア４は、関数の実行終了時には、保存されたレジスタ情報をスタックメモリ１１から復帰させ（pop操作）、元の呼び出し側親関数を呼び出し直前の状態に戻す。
【００１７】
また、この外部RAM５は、前記外部記憶手段の一例として、このプロセッサ１０の外部に配設され、この内部RAM１が記憶したデータを記憶することができる。特に、この外部RAM５は、この内部RAM１が記憶したスタックメモリ１１を記憶する外部スタックメモリ５１を含む。
【００１８】
また、このDMAC６は、前記データ移動手段の一例として、この内部RAM１及び外部RAM５との相互間のデータ移動をDMA（Direct Memory Access）転送により行うＬＳＩ(Large Scale Integration)である。
【００１９】
また、この内部RAM管理部３は、同図（ｂ）に示すように、内部メモリ再編成部３１と、データ移動制御部３２と、使用状況情報３ａと、閾値情報３ｂとを備える。この使用状況情報３ａは、この内部RAM１の使用状況をアドレス情報として記録する。この使用状況情報３ａは、図２に示すように、ワークメモリ１２の最終使用位置アドレス（DEP）、スタックメモリ１１の最新位置アドレス（SSP）、スタックメモリ１１の最終位置アドレス（SEP）、内部RAM１の最終アドレス（ME）を項目として備える。また、この閾値情報３ｂは、スタックデータ保持サイズ（SKS）、閾値Ｍを備える。この閾値Ｍは、第１の閾値の一例である。
【００２０】
また、この内部メモリ再編成部３１は、この内部RAM１のスタックメモリ１１の空き領域が閾値である前記スタックデータ保持サイズ（SKS）を越えた場合には、この空き領域にスタックメモリ１１の使用中領域を移動するようにこのアドレス変換部２に指示する。このアドレス変換部２は、この指示に基づいて、この内部RAM１内のワークメモリ１２及びスタックメモリ１１の領域分割を再編成する。
【００２１】
また、データ移動制御部３２は、前記内部メモリのスタックメモリ１１の使用中領域が閾値である前記スタックデータ保持サイズ（SKS）を越えた場合には、この内部RAM１からこの外部RAM５へのデータ移動を、このDMAC６に指示して制御する。
【００２２】
また、この内部RAM１は、図３（ａ）に示すように、スタックメモリ１１とワークメモリ１２とに領域分割されている。このスタックメモリ１１の最終位置アドレス（SEP）は、この内部RAM１を、このスタックメモリ１１とワークメモリ１２に領域分割するアドレスである。
【００２３】
このスタックメモリ１１は、スタックメモリ使用中領域１１ａと、スタックメモリ空き領域１１ｂとを備える。スタックメモリ１１の最新位置アドレス（SSP）は、このスタックメモリ１１を、このスタックメモリ使用中領域１１ａとスタックメモリ空き領域１１ｂとに領域分割するアドレスである。また、内部RAM１の最終アドレス（ME）は、内部RAM１の最終位置を示すアドレスであり、このスタックメモリ空き領域１１ｂの末端位置を示す。
【００２４】
また、このワークメモリ１２は、ワークメモリ使用中領域１２ａと、ワークメモリ空き領域１２ｂとを備える。ワークメモリ１２の最終使用位置アドレス（DEP）は、このワークメモリ１２を、このワークメモリ使用中領域１２ａとワークメモリ空き領域１２ｂとに領域分割するアドレスである。
【００２５】
以下、前記構成に基づく本実施形態の情報処理装置の動作について説明する。
前記プロセッサコア４は、図４に示すように、関数呼び出しによりpush操作をプログラム実行し、スタックメモリ１１の最終位置アドレス（SEP）を更新する（Ｓ１）。このＳ１により、前記スタックメモリ１１は、MEを開始点として順次メモリ消費される。ここで、前記データ移動制御部３２は、前記使用状況情報３ａに基づいて、前記スタックメモリ使用中領域１１ａが内部RAMに保存すべきスタックデータの最小サイズSKSより大きいか否かを判断する（Ｓ２）。
【００２６】
前記DMAC６は、このＳ２にて前記スタックメモリ使用中領域１１ａがSKSより大きい場合には、記憶した時刻の最も古いスタックデータから順に前記外部RAM５の外部スタックメモリ５１へ退避する（Ｓ３）。ここで、前記プロセッサコア４は、スタックメモリ１１の最新位置アドレス（SSP）を更新する（Ｓ４）。また、前記DMAC６は、このＳ２にて前記スタックメモリ使用中領域１１ａがSKSより小さい場合には、前記Ｓ３における前記外部RAM５への退避を実行せず、処理を終了する。
【００２７】
本情報処理装置は、図３（ｂ）に示すように、この操作により空き領域Ａが形成されることから、スタックが消費されることに伴い前記スタックメモリ空き領域１１ｂを拡張できることとなり、前記スタックメモリ１１を効率的に使用することができる。
【００２８】
次に、図５に示すように、本情報処理装置は、push操作及びpop操作がさらに進むとともに、SEPが更新される（Ｓ１１）。ここで、前記内部メモリ再編成部３１は、前記使用状況情報３ａに基づいて、前記スタックメモリ空き領域１１ｂが前記SKSより大きいか否かを判断する（Ｓ１２）。前記内部メモリ再編成部３１は、このＳ１２にて前記スタックメモリ空き領域１１ｂが前記SKSより大きい場合には、前記ワークメモリ空き領域１２ｂが閾値Ｍより小さいか否かを判断する（Ｓ１３）。
【００２９】
前記内部メモリ再編成部３１は、前記内部RAM1の前記スタックメモリ使用中領域１１ａに含まれるスタックデータを前記スタックメモリ空き領域１１ｂに内部転送する。（Ｓ１４）。前記内部メモリ再編成部３１は、このＳ１４の内部転送が完了次第、前記アドレス変換部２にこの内部転送に関するアドレス情報を通知するとともに、転送後のアドレス情報を使用状況情報３ａに記憶する（Ｓ１５）。前記プロセッサコア４は、スタックの開始点SSP、終了点SEPを更新する（Ｓ１６）。
【００３０】
また、前記内部メモリ再編成部３１は、このＳ１２で前記スタックメモリ空き領域１１ｂが前記SKSより小さい場合又はこのＳ１３で前記ワークメモリ空き領域１２ｂが閾値Ｍより大きい場合には、このＳ１４及びＳ１５を省略し、このＳ１６へ移動する。このように、本情報処理装置は、図６に示すように、同図（ａ）から同図（ｂ）の状態に内部メモリ領域を変化させる。このように、本情報処理装置は、前記スタックメモリ空き領域１１ｂを減らして前記ワークメモリ空き領域１２ｂの領域を増やすことで、ワークメモリ領域に必要なとして利用できる領域を増やすこととなり、プログラム処理動作時の外部メモリへのアクセス回数を大幅に低減でき、処理性能を維持することができる。
また、本実施形態に係る情報処理装置１０のハードウェア構成は、ＣＰＵ、メモリ、記憶装置、入力装置及び上記各部を接続するバスからなる。
【００３１】
（第２の実施形態）
以下、第２の実施形態に係る情報処理装置を、図７から図９に基づいて説明する。
この図７は本発明の第２の実施形態に係る情報処理装置の内部RAMの説明図、図８はこの図７に記載された情報処理装置のフローチャート、図９はこの図７に記載された情報処理装置の内部RAMの領域変更の説明図を示す。
【００３２】
本実施形態に係る情報処理装置は、第１の実施形態に記載した図１と同様に、内部RAM１と、アドレス変換部２と、内部RAM管理部３と、プロセッサコア４と、外部RAM５と、DMAC６とを備え、さらにこの内部RAM１が、複数のスタックメモリ領域を備えるものである。
【００３３】
この内部RAM１は、図７(a)に示すように、ワークメモリ１２内部に、ワークメモリ使用中領域１２ａと、ワークメモリ空き領域１２ｂとを有している。また、内部RAM1は、前記スタックメモリ１１内部に、ｎ個のスタックメモリ領域（スタックメモリ１１−１、スタックメモリ１１−２、、、スタックメモリ１１−ｋ、スタックメモリ１１−ｎ）を有する。これらｎ個のスタックメモリ領域は、複数のスレッド動作に対応させて使用することができる。また、前記閾値情報３ｂは、同図(ｂ)に示すように、第１の実施形態に追加して、空き領域の候補の判定を行うための閾値であるETHを項目として備える。閾値ETHは、第２の閾値の一例である。
【００３４】
以下、前記構成に基づく本実施形態の情報処理装置の動作について前記第１の実施形態との変更部分に関して説明する。
本情報処理装置は、図８に示すように、前記第１の実施形態を記載した図５と同様に、push操作及びpop操作が進むとともに、SEPが更新される（Ｓ１１）。次に、本情報処理装置は、前記第１の実施形態を記載した図５のＳ１２及びＳ１３に代替して、スタックデータの新たな移動先判定を追加する（Ｓ１００）。また、本情報処理装置は、このＳ１００の後には、前記第１の実施形態を記載した図５と同様に、Ｓ１４、Ｓ１５及びＳ１６の処理を行う。
【００３５】
このＳ１００の移動先判定に関して、図９に従い説明する。
スタックメモリ１１−ｋにおいて、空き領域11a-k-1は、スタックの伸びる側（新しい方）の空き領域、空き領域11a-k-2は、スタックの退避される側（古い方）の空き領域を示す。また、スタックメモリ１１−ｋにおいて、Ｘ−ｋ、Ｚ−ｋは、k番目のスタックデータの操作マージンであり、Ｙ−ｋは、スタックメモリの実使用領域を示す。Ｘはスタックの伸びる側（新しい方）のマージン、Ｚはスタックの退避される側（古い方）のマージンを示す。
【００３６】
前記データ移動制御部３２は、分割されたスタックメモリの隣接する空き領域の合計が閾値ETHより大きい場合に、ワークメモリ１２に最も近いスタックメモリ１１−ｎの新たな移動先と判定する。ここで、前記データ移動制御部３２は、例えば、k番目とk＋１番目のスタックデータの隣接する空き領域の合計である｛11a-k｝＋｛11a-k-1｝が閾値ETHより大きいかを判定する。
【００３７】
また、前記データ移動制御部３２は、この移動先判定を前記使用状況情報３ａに移動先候補情報として蓄積記憶し、前記空き領域の合計が閾値ETHより最も大きいスタックデータ１１−ｎを前記移動先と判定することも可能である。このように、スタックメモリを複数分割して管理することで、分割されたスタックメモリ間のビジー度合いを考慮してスタックメモリ間の空き領域にスタックデータを移動できることとなり、ワークメモリの空き領域を経時的にさらに細かく拡張させることができる。
【００３８】
また、前記DMAC６は、データ退避に関しても、第１の実施形態と同様に、前記図４に記載したＳ３に示すように、スタックメモリ１１の使用中領域がSKSより大きい場合には、記憶した時刻の最も古いスタックデータから順に前記外部RAM５へ退避する。ここで、前記DMAC６は、このスタックメモリ１１が本実施形態では複数分割されていることから、分割された各スタックメモリに対してSKSと比較して、分割されたスタックメモリ単位にデータ退避することができる。
【００３９】
また、前記DMAC６は、このSKSを、前記内部RAM１のワークメモリ１２に対する各スタックメモリの割合が小さくなる（スタックメモリ１１の分割数が増加する）ことに応じて小さい値に設定することができる。このように、前記DMAC６は、各スタックメモリの容量が小さくなるほど早めにデータ退避できることとなり、各スタックメモリのオーバーフローを抑制することができる。また、前記DMAC６は、各スタックメモリの容量が大きくなるほどデータ退避の頻度を抑えることとなり、大容量のスタックメモリに対しては空き領域を内部メモリにて十分に活用することができ、各スタックメモリの容量に応じたメモリ活用ができる。
【００４０】
（第３の実施形態）
本実施形態に係る第３の実施形態は、前記第２の実施形態に対して、複数に分割されたスタックメモリにおける優先度を考慮した処理を追加する。図１０は、本発明の第３の実施形態に係る情報処理装置の追加部分のブロック図及びデータ例を示す。本情報処理装置は、前記図１と同様に、内部RAM１と、アドレス変換部２と、内部RAM管理部３と、プロセッサコア４と、外部RAM５と、DMAC６とを備える。さらに、本情報処理装置は、図１０（ａ）に示すように、さらに優先度設定部３３を内部RAM管理部３に備える。この優先度設定部３３は、内部RAM１の複数に分割されたスタックメモリ１１に対して、各々のスタックメモリ１１の使用状況に応じた優先度を設定する。また、本情報処理装置は、前記第２の実施形態を記載した図８におけるＳ１００の移動先判定に、この優先度を考慮して空き領域を選択する。
【００４１】
前記使用状況情報３ａは、図１０(ｂ)及び(ｃ)に示すように、前記第２の実施形態に追加して、スタック優先度情報及び移動先候補情報をさらに含む。このスタック優先度情報は、各スタックを特定するスタック項目と、各スタックの優先度を１から１６の数値（１：優先度高、１６：優先度低）で示すスタック優先度を備える。また、この移動先候補情報は、移動先候補である候補項目と、各候補項目のスタック移動に関する候補優先度を備える。
【００４２】
前記優先度設定部３３は、例えば、一定期間内の動作頻度の多いスレッドが使用するスタックメモリは、スタック優先度を高く設定する。また、前記優先度設定部３３は、前記移動先候補としての前記ｋ番目のスタックメモリ１１−ｋに関する前記候補優先度を｛16−(k番目のスタック優先度)｝＋｛16−((k+1)番目のスタック優先度)｝により演算する。
【００４３】
本情報処理装置は、この演算により、優先度が低いスタックメモリに対して候補優先度を高くすることから、使用されない傾向のスタックメモリがデータ移動先として選択されることとなり、メモリ使用状況に適合したスタックデータ移動を行うことができる。また、本情報処理装置は、この演算により、push操作及びpop操作が頻繁に行われる可能性が高い優先度が高いスタックメモリの移動を抑えることとなり、内部メモリ全体としてメモリ使用効率を向上させることができる。
【００４４】
なお、前記優先度設定部３３のスタック優先度の設定に関しては、上記の他に、例えば、定期的な動作を行うスレッドが使用するスタックメモリ、演算量が多いスレッドが使用するスタックメモリに対してもスタック優先度を高く設定することができる。このように、様々な観点から使用度合いの高いスレッドが使用するスタックの優先度を高く設定することにより、使用度合いの高いスレッドを外部メモリに退避することを抑制できることとなり、データ退避による処理の遅延を抑制することができる。
【００４５】
また、各スタックメモリの時系列的な処理量を蓄積し、この処理量の推移に基づいた予測により使用度合いの高いスレッドを検出する予測手段を、内部RAM管理部３に備えることもできる。この予測手段により、現時点のみならず将来に使用度合いが高まるスレッドを検出できることとなり、データ退避による処理の遅延をさらに抑制することができる。
【００４６】
［付記］  以上の実施例を含む実施形態に関し、更に以下の付記を開示する。
（付記１）情報処理データを、スタックメモリ及びワークメモリに領域分割された内部メモリに記憶する内部記憶工程と、前記スタックメモリ領域のデータの一部を前記内部記憶工程の外部に退避して形成された前記スタックメモリに配分された領域の空き領域が第１の閾値を越え、且つ前記ワークメモリの使用中領域が前記スタックメモリ使用中領域に近づいた場合には、当該空き領域にスタックメモリの使用中領域を移動する内部メモリ再編成工程とを備える情報処理方法。
【００４７】
（付記２）前記内部記憶工程の外部に配設され、前記内部メモリに記憶されたデータを記憶可能な外部記憶工程と、前記内部記憶工程及び前記外部記憶工程との相互間のデータ移動を行うデータ移動工程と、前記内部メモリのスタックメモリの使用中領域が第１の閾値を越えた場合には、前記内部記憶工程から前記外部記憶工程へのデータ移動を、前記データ移動工程に指示して制御するデータ移動制御工程とを備える付記１記載の情報処理方法。
【００４８】
（付記３）前記内部記憶工程の外部に配設され、前記内部メモリに記憶されたデータを記憶可能な外部記憶工程と、前記内部記憶工程及び前記外部記憶工程との相互間のデータ移動を行うデータ移動工程と、前記内部メモリの複数に分割されたスタックメモリの使用中領域が第２の閾値を越えた場合には、前記内部記憶工程から前記外部記憶工程へのデータ移動を、前記データ移動工程に指示して制御するデータ移動制御工程とを備え、データ移動制御工程が、前記内部メモリのワークエリアに対する各スタックメモリの割合が小さくなることに応じて前記第２の閾値を小さく設定する付記２記載の情報処理方法。
【００４９】
（付記４）前記内部メモリの複数に分割されたスタックメモリに対して、各々のスタックメモリの使用状況に応じた優先度を設定する優先度設定工程を備え、前記内部メモリ再編成工程が、前記優先度設定工程に設定された前記優先度に基づいて、前記内部メモリの前記領域分割を再編成する付記３記載の情報処理方法。
【００５０】
（付記５）情報処理データを、スタックメモリ及びワークメモリに領域分割された内部メモリに記憶する内部記憶手段、前記スタックメモリ領域のデータの一部を前記内部記憶手段の外部に退避して形成された前記スタックメモリに配分された領域の空き領域が第１の閾値を越え、且つ前記ワークメモリの使用中領域が前記スタックメモリ使用中領域に近づいた場合には、当該空き領域にスタックメモリの使用中領域を移動する内部メモリ再編成手段としてコンピュータを機能させる情報処理プログラム。
【００５１】
（付記６）前記内部記憶手段の外部に配設され、前記内部メモリに記憶されたデータを記憶可能な外部記憶手段、前記内部記憶手段及び前記外部記憶手段の相互間のデータ移動を行うデータ移動手段、前記内部メモリのスタックメモリの使用中領域が第１の閾値を越えた場合には、前記内部記憶手段から前記外部記憶手段へのデータ移動を、前記データ移動手段に指示して制御するデータ移動制御手段としてコンピュータを機能させる付記５記載の情報処理プログラム。
【００５２】
（付記７）前記内部記憶手段の外部に配設され、前記内部メモリに記憶されたデータを記憶可能な外部記憶手段、前記内部記憶手段及び前記外部記憶手段の相互間のデータ移動を行うデータ移動手段、前記内部メモリの複数に分割されたスタックメモリの使用中領域が第２の閾値を越えた場合には、前記内部記憶手段から前記外部記憶手段へのデータ移動を、前記データ移動手段に指示して制御するデータ移動制御手段としてコンピュータを機能させ、データ移動制御手段が、前記内部メモリのワークエリアに対する各スタックメモリの割合が小さくなることに応じて前記第２の閾値を小さく設定する付記６記載の情報処理プログラム。
【００５３】
（付記８）前記内部メモリの複数に分割されたスタックメモリに対して、各々のスタックメモリの使用状況に応じた優先度を設定する優先度設定手段としてコンピュータを機能させ、前記内部メモリ再編成手段が、前記優先度設定手段に設定された前記優先度に基づいて、前記内部メモリの前記領域分割を再編成する付記７記載の情報処理プログラム。
【符号の説明】
【００５４】
１  内部RAM
１１  スタックメモリ
１１ａ  スタックメモリ使用中領域
１１ｂ  スタックメモリ空き領域
１２  ワークメモリ
１２ａ  ワークメモリ使用中領域
１２ｂ  ワークメモリ空き領域
２  アドレス変換部
３  内部RAM管理部
３ａ  使用状況情報
３ｂ  閾値情報
３１  内部メモリ再編成部
３２  データ移動制御部
４  プロセッサコア
４１  ＳＰＲ
４２  汎用レジスタ
５  外部RAM
５１  外部スタックデータ
６  DMAC
１０  プロセッサ
【図１】
0005391870.tif 000002
【図２】
0005391870.tif 000003
【図３】
0005391870.tif 000004
【図４】
0005391870.tif 000005
【図５】
0005391870.tif 000006
【図６】
0005391870.tif 000007
【図７】
0005391870.tif 000008
【図８】
0005391870.tif 000009
【図９】
0005391870.tif 000010
【図１０】
0005391870.tif 000011