(57)【要約】      （修正有）【課題】消費電力をより低下させるメモリ割り当て方法を提供する。【解決手段】異なる容量のメモリマクロで構成されるメモリ２０１〜２０３と、前記メモリマクロ２０１〜２０３のうち、容量が他の前記メモリマクロ２０２、２０３に比べて小さい前記メモリマクロ２０１に、書き込み、および／または、読み出しの頻度の高いデータを格納する半導体装置を含み、前記メモリマクロに接続されるデータ処理装置は、書き込み、および／または、読み出しの頻度が高いデータを、前記特定メモリマクロ２０１へ優先的に割り当てるようにコーディングされた高水準言語プログラムから最終的に変換された機械語命令列を実行する。【選択図】図１
2012008747.tif 000002
【特許請求の範囲】
【請求項１】
異なる容量のメモリマクロで構成されるメモリと、前記メモリマクロのうち容量が他の前記メモリマクロに比べて小さく、書き込み、および／または、読み出しの頻度の高いデータを格納する特定の前記メモリマクロと、
を含むことを特徴とする集積装置。
【請求項２】
レジスタファイルで構成される前記特定のメモリマクロを含むことを特徴とする請求項１記載の集積装置。
【請求項３】
共有前段ラッチ群、および、後段ラッチ群を含む共有型レジスタファイルで構成される前記特定のメモリマクロを含むことを特徴とする請求項１、または、２記載の集積装置。
【請求項４】
読み出し、および／または、書き込みのアクセス頻度が高いデータを、前記特定のメモリマクロへ優先的に書き込む処理を行うデータ処理装置を含むことを特徴とする請求項１、２、または、３記載の集積装置。
【請求項５】
読み出し、および／または、書き込みのアクセス頻度が高いデータを、前記特定のメモリマクロへ割り付けるようにコーディングされた高水準言語プログラムから最終的に変換された機械語命令列を実行する前記データ処理装置を含むことを特徴とする請求項４記載の集積装置。
【請求項６】
読み出し、および／または、書き込みのアクセス頻度が高いデータを、前記特定のメモリマクロへ割り付けるようにコーディングされたアセンブリ言語コードから最終的に変換された機械語命令列を実行する前記データ処理装置を含むことを特徴とする請求項４記載の集積装置。
【請求項７】
前記メモリのアクセス頻度を解析し、読み出し、および／または、書き込みのアクセス頻度が高いデータを、前記特定のメモリマクロへ割り付けるコンパイラにより作成されたアセンブリ言語コードから最終的に変換された機械語命令列を実行する前記データ処理装置を含むことを特徴とする請求項４記載の集積装置。
【請求項８】
動作中に、アクセスされる前記メモリのアドレスの解析し、アクセス頻度が高いデータのアドレスを前記特定のメモリマクロのアドレスに割り当てるハードウェアを含むことを特徴とする請求項４記載の集積装置。
【請求項９】
異なる容量のメモリマクロで構成されるメモリ内の前記メモリマクロのうち容量が他の前記メモリマクロに比べて小さい特定の前記メモリマクロに、書き込み、および／または、読み出しの頻度の高いデータを格納することを特徴とするメモリ割り当て方法。
【請求項１０】
異なる容量のメモリマクロで構成されるメモリ内の前記メモリマクロのうち容量が他の前記メモリマクロに比べて小さい特定の前記メモリマクロに、書き込み、および／または、読み出しの頻度の高いデータを格納させるようコンパイルすることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、集積装置、メモリ割り当て方法、および、プログラムに関する。
【背景技術】
【０００２】
メモリマクロを分割する技術の一例が特許文献１に記載されている。図１９は、特許文献１記載の技術の構成を示すブロック図である。図１９を参照すると、特許文献１の技術は、データ処理装置２Ａ、メモリバンク３Ａ−０、メモリバンク３Ａ−１、メモリバンク３Ａ−２、および、メモリバンク３Ａ−３を有する。メモリバンク３Ａ−０（メモリマクロ）〜メモリバンク３Ａ−３（メモリマクロ）は、すべて、同容量である。
【０００３】
データ処理装置２Ａとの配線長の短さは、メモリバンク３Ａ−０、メモリバンク３Ａ−１、メモリバンク３Ａ−２、メモリバンク３Ａ−３の順である。消費電力は、配線長に比例する。アクセス回数の多いデータは、消費電力の少ないメモリバンク３Ａ−０、または、メモリバンク３Ａ−１に配置される。
【０００４】
アクセス回数の少ないデータは、消費電力の多いメモリバンク３Ａ−２、または、メモリバンク３Ａ−３に配置される。これにより、特許文献１の技術は、低消費電力を図っている。
【０００５】
特許文献２記載の技術は、ＤＲＡＭ（Dynamic Random Access Memory）のページ長を設定することにより、消費電力の低減を図る技術である。
【０００６】
特許文献３記載の技術は、複数に分割されたメモリセルアレイに関する技術である。
【０００７】
特許文献４記載の技術は、メモリマットの記憶容量を必要に応じて切り替える技術である。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００９−７１０７０号公報
【特許文献２】特開２０００−１６３９５２号公報
【特許文献３】特開２００２−３２４３９５号公報
【特許文献４】特開平１１−１１０９６３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
上述した特許文献１〜４の技術においては、メモリを異なる容量に分割していないので、消費電力の低下が少ないという問題点があった。本発明の目的は、上記問題点を解決する集積装置を提供することである。
【課題を解決するための手段】
【００１０】
本発明の集積装置は、異なる容量のメモリマクロで構成されるメモリと、前記メモリマクロのうち容量が他のメモリマクロに比べて小さく、書き込み、および／または、読み出しの頻度の高いデータを格納する特定の前記メモリマクロと、
を含む。
【００１１】
本発明のメモリ割り当て方法は、異なる容量のメモリマクロで構成されるメモリ内の前記メモリマクロのうち容量が他の前記メモリマクロに比べて小さい特定の前記メモリマクロに、書き込み、および／または、読み出しの頻度の高いデータを格納する。
【００１２】
本発明のプログラムは、異なる容量のメモリマクロで構成されるメモリ内の前記メモリマクロのうち容量が他の前記メモリマクロに比べて小さい特定の前記メモリマクロに、書き込み、および／または、読み出しの頻度の高いデータを格納させるようコンパイルする。
【発明の効果】
【００１３】
本発明は、消費電力の低下の多い集積装置を実現できるという効果を持つ。
【図面の簡単な説明】
【００１４】
【図１】本発明の第１の実施の形態の構成を示すブロック図である。
【図２】本発明の第２の実施の形態の構成を示すブロック図である。
【図３】本発明の第３の実施の形態の構成を示すブロック図である。
【図４】メモリのアドレス空間を示す説明図である。
【図５】メモリマクロの構成を示すブロック図である。
【図６】Ｃ言語で記述されたプログラムの１例を示す説明図である。
【図７】図６に示される配列を示す説明図である。
【図８】メモリアドレスの割り付け技術の一例を示す説明図である。
【図９】メモリアドレスの割り付け技術の他の一例を示す説明図である。
【図１０】メモリアドレスの割り付け技術の他の一例を示す説明図である。
【図１１】アドレスの解析、変換のハードウェア構成を示すブロック図である。
【図１２】メモリマクロの構成、面積比、消費電力比の関係を示す説明図である。
【図１３】本発明の第４の実施の形態の構成を示すブロック図である。
【図１４】図１３のレジスタファイル２５０の詳細ブロック図である。
【図１５】メモリマクロの分割構成、面積比、消費電力比の関係を示す説明図である。
【図１６】本発明の第５の実施の形態の構成を示すブロック図である。
【図１７】図１６のラッチ共有型レジスタファイル２５２の詳細ブロック図である。
【図１８】メモリマクロの分割構成、面積比、消費電力比の関係を示す説明図である。
【図１９】特許文献１記載の技術の構成を示すブロック図である。
【発明を実施するための形態】
【００１５】
次に本発明の第１の実施の形態について図面を参照にして詳細に説明する。
【００１６】
図１は、本発明の第１の実施の形態の構成を示すブロック図である。第１の実施の形態の集積装置１００は、メモリ２００を含む。メモリ２００は、異なる容量のメモリマクロ２０１、メモリマクロ２０２、メモリマクロ２０３を含む。メモリマクロ２０１〜メモリマクロ２０３が存在するとしたが、メモリマクロの個数に限定はない。
【００１７】
（メモリマクロ２０１の容量）＜（メモリマクロ２０２の容量）＜（メモリマクロ２０３の容量）である。
【００１８】
メモリマクロの容量が減少すると、メモリマクロの消費電力が減少する。その理由は、ハードウェア量（たとえば、トランジスタの数）が減少するからである。
【００１９】
すなわち、（メモリマクロ２０１の消費電力）＜（メモリマクロ２０２の消費電力）＜（メモリマクロ２０３の消費電力）である。データは、データ処理装置によってメモリマクロ２０１、２０２、２０３に書き込まれる。また、メモリマクロ２０１、２０２、２０３に書き込まれたデータは、前記データ処理装置によって読み出される。
【００２０】
小容量メモリマクロ２０１は、書き込み（更新）、および／または、読み出し（参照）の頻度の高いデータを格納する。前記データ処理装置が、メモリマクロ２０１へ書き込み、および／または、読み出しの頻度の高いデータを書き込む。したがって、メモリマクロ２０１は、メモリ２００内のメモリマクロのうち容量が他のメモリマクロに比べて小さく、書き込み、および／または、読み出しの頻度の高いデータを格納する特定のメモリマクロである。
【００２１】
また、メモリマクロ２０１の代わりにメモリマクロ２０２が、書き込み（更新）、および／または、読み出し（参照）の頻度の高いデータを格納してもよい。
【００２２】
たとえば、画像処理を行う半導体集積回路では、オンチップメモリには画像データと画像の演算処理で生成される中間データが保存される。このうち画像データは、フィルタ処理や色変換処理といった画像処理のタスクが開始される時にメモリから読み出されて、タスクが終了する時にメモリへ書き込まれる。
【００２３】
一方、中間データはタスク実行中の演算処理のたびに頻繁に読み出しと書き込み更新が行われる。また、中間データ用に必要とされるメモリ容量は画像データ容量に比べて１／１０程度と小さい。メモリマクロ２０１、または、メモリマクロ２０２が、読み出し（参照）、および／または、書き込み（更新）の頻度の高い中間データを格納することが可能である。
【００２４】
次に、第１の実施の形態の効果につい説明する。
【００２５】
第１の実施の形態は、メモリを異なる容量のメモリマクロで構成し、小容量メモリマクロが、書き込み、および／または、読み出しの頻度の高いデータを格納する。したがって、消費電力の低下が多いという効果がある。たとえば、特許文献１に比べると、消費電力の低下の効果は大きい。
【００２６】
次に、本発明の第２の実施の形態について図面を参照して詳細に説明する。
【００２７】
図２は、本発明の第２の実施の形態の構成を示すブロック図である。第２の実施の形態の集積装置１０１は、データ処理装置３００、および、メモリ２００を含む。モリ２００は、異なる容量のメモリマクロ２０１、メモリマクロ２０２、メモリマクロ２０３を含む。データ処理装置３００は、たとえば、プロセッサ、ＣＰＵ、または、演算装置である。
【００２８】
メモリ２００は、第１の実施の形態のメモリ２００と同一である。データ処理装置３００は、読み出し（参照）、および／または、書き込み（更新）のアクセス頻度が高いデータを、小容量のメモリマクロ２０１（または、メモリマクロ２０２）へ優先的に書き込む処理を行う。
【００２９】
次に、第２の実施の形態の効果について説明する。
【００３０】
第２の実施の形態は、第１の実施の形態にデータ処理装置３００を追加する構成であり、データ処理装置３００が、アクセス頻度が高いデータを、小容量のメモリマクロへ優先的に書き込む処理を行う。
【００３１】
したがって、消費電力の低下が多いという効果がある。たとえば、特許文献１に比べると、消費電力の低下の効果は大きい。
したがって、第１の実施の形態と同一の効果がある。
【００３２】
次に、本発明の第３の実施の形態について図面を参照して詳細に説明する。
【００３３】
図３は、本発明の第３の実施の形態の構成を示すブロック図である。
【００３４】
図３を参照すると、集積装置１０２は、演算装置４００、および、演算装置４００に接続されるメモリ２１０を複数組含む。
【００３５】
第３の実施の形態の集積装置１０２は、たとえば、画像処理を行うＳＩＭＤ（Single Instruction Multiple Data）装置である。
【００３６】
ＳＩＭＤ装置は、１命令で複数のデータを複数の演算装置４００（プロセッシングエレメント：ＰＥ）で同時に処理する。画像処理は画素単位で同じ命令の処理をすることが多いためＳＩＭＤ装置は、有効である。アプリケーションの例としては  カメラ、プリンタ、グラフィクス処理等がある。
【００３７】
演算装置４００は、第２の実施の形態のデータ処理装置３００の１種である。メモリ２１０は、第１の実施の形態のメモリ２００と同様に、容量の異なるメモリマクロを含む。すなわち、メモリ２１０は、メモリマクロ２１１、メモリマクロ２１２、メモリマクロ２１３、メモリマクロ２１４、メモリマクロ２１５を含む。さらに、メモリ２１０は、セレクタ２１８を含む。
【００３８】
メモリ２１０は、たとえば、３２［ビット］のＳＲＡＭ（Static Random Access Memory）で構成される。また、１［ワード］＝４［Ｂ］＝３２［ビット］である。１度にアクセス可能な単位は、１［ワード］である。メモリ２１０の容量は、１０２４［ワード］＝４［ＫＢ］（＝４０９６［Ｂ］）である。
【００３９】
メモリマクロ２１１、メモリマクロ２１２、および、メモリマクロ２１３の容量は、それぞれ、２５６［ワード］＝１［ＫＢ］（＝１０２４［Ｂ］）である。メモリマクロ２１４は、２２４［ワード］＝８９６［Ｂ］である。メモリマクロ２１５は、３２［ワード］＝１２８［Ｂ］である。
【００４０】
図４は、メモリ２１０のアドレス空間を示す説明図である。図４は、詳細には、メモリ全体のアドレス空間と各メモリマクロの物理的なアドレス空間との対応を示す。
【００４１】
図５は、ＳＲＡＭであるメモリマクロ２１１〜メモリマクロ２１５の構成を示すブロックである。図５は、メモリマクロ２１１のみの内部構造を示しているが、メモリマクロ２１２、および、メモリマクロ２１３も同一の内部構成である。また、メモリマクロ２１４、および、メモリマクロ２１５も、ワード数以外の構成は、同一である。
【００４２】
図５を参照すると、メモリマクロ２１１は、メモリセルアレイ５０１、アドレスデコーダ５０２、ワード線ドライバ５０３、制御部５０４、センスアンプ５０５、ライトバッファ５０６、および、リードバッファ５０７を含む。
【００４３】
制御部５０４は、コマンド、アドレス、および、クロックを入力し、制御信号を作成する。アドレスデコーダ５０２は、制御部５０４からアドレスを入力し、アドレスをデコードし、アドレスに該当するワードを示すデコード信号をオンにする。ワード線ドライバ５０３は、オンであるデコード信号に対応するワード線をオンにする。
【００４４】
ライトバッファ５０６は、制御部５０４からの書き込み制御信号がオンであると、書き込みデータを取り込み、センスアンプ５０５に出力する。センスアンプ５０５は、ライトバッファ５０６からの書き込みデータを入力し、メモリセルアレイ５０１に出力する。メモリセルアレイ５０１は、制御部５０４からの書き込み制御信号がオンであると、オンになっているワード線に対応するメモリセルに書き込みデータを書き込む。
【００４５】
メモリセルアレイ５０１は、制御部５０４からの書き込み制御信号がオンでないと、オンになっているワード線に対応するメモリセルから読み出しデータをセンスアンプ５０５に出力する。センスアンプ５０５は、メモリセルアレイ５０１からの読み出しデータをリードバッファ５０７に出力する。
【００４６】
リードバッファ５０７は、制御部５０４からの読み出し制御信号がオンであると、メモリセルアレイ５０１からの読み出しデータを取り込み、セレクタ２１８に出力する。セレクタ２１８は、アドレスに対応するメモリマクロ２１１〜メモリマクロ２１５からの読み出しデータを選択し、出力する。
【００４７】
アドレスは、０〜１０２３であり図４に示される２進数１０［ビット］の信号である。メモリ全体のアドレス（２進数）の上位２［ビット］が‘００’の場合、メモリマクロ２１１へのアドレスである。上位２［ビット］が‘０１’の場合、メモリマクロ２１２へのアドレスである。上位２［ビット］が‘１０’の場合、メモリマクロ２１３へのアドレスである。
【００４８】
上位５［ビット］が‘１１０００’〜‘１１１１０’の場合、メモリマクロ２１４へのアドレスである。上位５［ビット］が‘１１１１１’の場合、メモリマクロ２１５へのアドレスである。制御部５０４がアドレスの判別を行う。
【００４９】
制御部５０４が、自メモリマクロへのアドレスと判別した場合のみ、後段にあるすべての回路が活性化され、書き込み、あるいは、読み出し動作が行われる。その際、メモリマクロ内のアドレスは図４に記載された通りである。また、メモリマクロからの読み出しデータは、アドレスに該当するメモリマクロからの読み出しデータがセレクタ２１８で選択されてメモリ２１０の外部に出力される。
【００５０】
カメラのエンジンの画像処理においては、画像データのような大容量でアクセス頻度の低いものと、一時的にスタックされるスタック用データ（中間処理データ）のような小容量でアクセス頻度の高いものとがある。演算装置４００は、スタック用データ（中間処理データ）を小容量（１２８［Ｂ］）のメモリマクロ２１５に書き込むおよび、メモリマクロ２１５から読み出す処理を行う。
【００５１】
次に、メモリアクセス頻度に応じたメモリアドレスの割り付け技術について、図面を参照して説明する。
【００５２】
キャッシュを備えていないＳＩＭＤ装置においては、メモリは、プログラムでメモリアドレス管理が可能なスクラッチパッドメモリである。したがって、プログラム（たとえば、Ｃ言語での）の作成時に、プログラム作成者が、書き込み、および／または、読み出しの頻度の高いデータを小容量のメモリマクロに割り付けるコーディングを行う。
【００５３】
図６は、Ｃ言語で記述されたプログラムの１例を示す説明図である。また、図７は、図６に示される配列を示す説明図である。
【００５４】
図７において、右側に、実際にデータを入れる二次元配列である５行１６列分すなわち８０個の（double）型のデータ格納場所を示す。さらに、中央に、サイズ５の（double*）型のベクトルを示す。左側に、（double**）型の変数を示す。
【００５５】
図６、図７において、memmacroは、memmacro[0]という変数が存在している番地を指す。また、memmacro[0]はmemmacro[0][0]の、memmacro[1]はmemmacro[1][0]の、memmacro[2]はmemmacro[2][0]の存在している番地を指す。また、memmacro[3]はmemmacro[3][0]の、memmacro[4]はmemmacro[4][0]の存在している番地を指す。
【００５６】
プログラム作成者は、それぞれ、memmacro[0][0]〜[0][16]、memmacro[1][0]〜[1][16]、memmacro[2][0]〜[2][16]の格納場所が、メモリマクロ２１１、メモリマクロ２１２、メモリマクロ２１３に対応するとしてコーディングを行う。また、プログラム作成者は、それぞれ、memmacro[3][0]〜[3][16]、memmacro[4][0]〜[4][16]のデータ格納場所が、メモリマクロ２１４、メモリマクロ２１５に対応するとしてコーディングを行う。
【００５７】
プログラム作成者は、memmacro[4][0]〜[4][16]を、たとえば、メモリアクセ頻度が高いスタック用データを格納する場所として扱うように、「タスクのプログラム本体」の部分にコーディングする。図６のfree命令はメモリ配列として確保したものを開放する命令である。
【００５８】
図８は、メモリアドレスの割り付け技術の一例を示す説明図である。次に、図８に示すように、コンパイラ８０１は、プログラム８００上の事前に定められた特定の表記を小容量のメモリマクロ２１５に対応させ、アセンブリ言語コード８０３を作成する。
【００５９】
たとえば、コンパイラ８０１は、このＣ言語で記述されたプログラム８００をハードウェア動作の命令記述であるアセンブリ言語コード８０３にコンパイルする際に、memmacro[4][0]〜[4][16]を、自動的に、メモリマクロ２１５に対応させる。コンパイラ８０１は、memmacro[4][0]〜[4][16]という特定の変数の表記を読み取って、小容量のメモリマクロ２１５に対応させる。
【００６０】
また、プログラム作成者が、コメントを記述し、コンパイラ８０１が、コメントに対応する変数をメモリマクロ２１５に対応させる方式も可能である。
【００６１】
すなわち、図４のような、メモリ全体のアドレス空間においては、コンパイラ８０１は、９９２〜１０２３番地にmemmacro[4][0]〜[4][16]を対応させる。以上は、高水準言語（たとえば、Ｃ言語）でのプログラム作成時に、プログラム作成者が意識的に小容量のメモリマクロ２１５に対応するアドレスを指定する技術である。
【００６２】
図９は、メモリアドレスの割り付け技術の他の一例を示す説明図である。図９に示すように、プログラム作成者が、アセンブリ言語コード８０３を作成時に、メモリのアドレスを、意識的に小容量のメモリマクロ２１５のアドレスに対応させる割り付け技術もある。
【００６３】
これは、プログラム作成者がアクセス頻度を調べて、かつ、アセンブリ言語コード８０３上に、直接、メモリマクロのアドレスをメモリマクロの容量（消費電力）を考慮して記述する技術である。
【００６４】
図４に示すアドレス空間の場合、レジスタＲにあるメモリアクセス頻度の高いデータを１２８［Ｂ」のメモリマクロ２１５（メモリ容量最小）へ保存することをプログラム作成者が明示的に記述する。たとえば、プログラム作成者はアセンブリ言語で、「ＬＤ （１１１１１０００１１） Ｒ」と記述する。
【００６５】
ここで、ＬＤはデータ転送の命令を表し、Ｒレジスタの値をメモリのアドレス１１１１１０００１１番地へデータを転送する動作を表す。アドレス１１１１１０００１１は、小容量の１２８［Ｂ］のメモリマクロ２１５のアドレス空間１１１１１０００００〜１１１１１１１１１１内のアドレスとなっている。
【００６６】
図１０は、メモリアドレスの割り付け技術の他の一例を示す説明図である。また、図１０に示すように、コンパイラ８０１が、プログラム８００からアセンブリ言語コード８０３へのコンパイル時に、メモリのアクセス頻度を解析して、アクセス頻度の高いデータのアドレスを小容量のメモリマクロ２１５のアドレスに自動生成する割り付け技術がある。
【００６７】
コンパイラ８０１は、たとえば、プログラム８００に記述された配列a[n]に入っているデータが、演算等の命令で何回使われるかを、プログラム８００から数え上げることにより、アクセス頻度の解析を行う。
【００６８】
また、ハードウェアが、動作中に、アクセスされるメモリのアドレスの解析し、メモリアクセス頻度が高いデータのアドレスを小容量のメモリマクロ２１５のアドレスを割り当てる割り付け技術がある。図１１は、アドレスの解析、変換のハードウェア構成を示すブロック図である。
【００６９】
図１１を参照すると、メモリ２１０のメモリアドレス空間が、サイズ１２８［Ｂ］のブロックに分割されている。また、カウンタ６０１、および、アドレス変換部６０２が設けられている。カウンタ６０１は、メモリ２１０のアドレスの上位５ビットを入力し、各ブロックのアクセス回数を累積し、累積値をアドレス変換部６０２に出力する。
【００７０】
アドレス変換部６０２は、累積値が大きいアドレスに対応するブロックに入っているデータはアクセス頻度が高いデータとみなす。アドレス変換部６０２は、アクセス頻度が高いとみなしたデータに対するブロックのアドレスを小容量のメモリマクロ２１５のアドレスに変換する。
【００７１】
これにより、アクセス頻度が高いデータが、動作中のメモリアクセス回数が進むにつれて小容量のメモリマクロ２１５へ格納されるようになる。
【００７２】
アセンブリ言語コードは、最終的には、機械語命令列に変換され、演算装置４００で実行される。
【００７３】
以上の割り付け技術は、第１、および、第２の実施の形態にも適用可能である。
【００７４】
以上の説明では、メモリマクロをＳＲＡＭとしたが、ＳＲＡＭに限定されるわけではない。たとえば、メモリマクロは、ＤＲＡＭでもよい。ＤＲＡＭは回路面積が小さいので、より大容量のメモリを搭載できる。また、メモリマクロは、フラッシュメモリ、ＭＲＡＭ（Magneto resistive Random Access Memory）、または、ＲｅＲＡＭ（Resistance Random Access Memory）といった不揮発メモリでもよい。
【００７５】
また、以上の説明では、メモリを５つに分割したが、分割数、および、それぞれのメモリマクロの容量に制限はない。
【００７６】
また、ＳＩＭＤ装置のメモリという制限はない。通常のＣＰＵ（Central Processing Unit）、または、マルチコアＣＰＵのメモリが可能である。また、異なる機能の専用ハードウェアを複数備えたＳｏＣ（System on a Chip）用のメモリとしても良い。また、メモリと、演算装置（データ処理装置）とが、同一チップ上に構成されるという制限はない。
【００７７】
次に、第３の実施の形態の効果について図面を参照して説明する。
【００７８】
図１２は、メモリマクロの構成、面積比、消費電力比の関係を示す説明図である。また、図１２は、メモリマクロが１個の４［ＫＢ］ＳＲＡＭで構成される場合を‘１’とした面積比、消費電力比を示す。
【００７９】
４［ＫＢ］ＳＲＡＭを‘１’としたメモリマクロ単体の消費電力比は、それぞれ、‘０．４１’（１［ＫＢ］）、‘０．４０’（８９６［Ｂ］）、‘０．３６’（５１２［Ｂ］）、‘０．３２’（１２８［Ｂ］）であると仮定する。
【００８０】
ここで、スタック用データのアクセス頻度を、メモリアクセスの６０［％］と仮定すると、メモリ２１０全体の消費電力比は、以下のようである。メモリ２１０が４個の１［ＫＢ］ＳＲＡＭで構成される場合、面積比、消費電力比は、それぞれ、‘１．２７’、‘０．４１’である。メモリ２１０が８個の５１２［Ｂ］ＳＲＡＭで構成される場合、面積比、消費電力比は、それぞれ、‘１．７６’、‘０．３６’である。
【００８１】
メモリ２１０が、３個の１［ＫＢ］ＳＲＡＭ、１個の８９６［Ｂ］ＳＲＡＭ、および、１個の１２８［Ｂ］ＳＲＡＭで構成される場合、面積比、消費電力比は、それぞれ、‘１．４０’、‘０．３５’である。消費電力比の計算式は、０．４１×０．３＋０．４０×０．１＋０．３２×０．６＝０．３５である。
【００８２】
第３の実施の形態は、メモリを異なる容量のメモリマクロで構成し、小容量メモリマクロが、書き込み、および／または、読み出しの頻度の高いデータを格納する。したがって、消費電力の低下が大きいという効果がある。
【００８３】
次に、本発明の第４の実施の形態について図面を参照して詳細に説明する。
【００８４】
通常ＳＲＡＭを使ったメモリマクロは容量が小さいほど消費電力は小さい。しかし、ある程度まで小さくなるとビットごとに設けられているセンスアンプの電力が支配的になるために電力は低下しない。そこで、さらに小さいメモリマクロを構成するために、Ｆ／Ｆを使ったレジスタファイルが有効である。
【００８５】
図１３は、本発明の第４の実施の形態の構成を示すブロック図である。図１３を参照すると、第４の実施の形態は、第３の実施の形態の小容量のメモリマクロ２１５を、レジスタファイル２５０で構成したものである。
【００８６】
レジスタファイル２５０は、制御部２６０、３２個のレジスタ２７０、および、セレクタ２５５を含む。図１４は、図１３のレジスタファイル２５０の詳細ブロック図である。図１４を参照すると、各レジスタ２７０は、１［ワード］＝３２［ビット］のＦ／Ｆ（Flip Flop；フリップ・フロップ）を含む。
【００８７】
制御部２６０は、書き込みデータをどのレジスタ２７０に書き込むのかを制御する。すなわち、制御部２６０は、アドレスに基づいてクロックをゲーティングする。つまり、書き込みされるレジスタ２７０のみのクロックが活性化し、書き込みが発生しないレジスタ２７０のクロックは活性化しない。また、制御部２６０は、読み出しの際には、アドレスに対応するレジスタ２７０のみを選択させるように、セレクタ２５５を制御する。
【００８８】
また、第１、および、第２の実施の形態のメモリにも、レジスタファイルを適用可能である。
【００８９】
次に、第４の実施の形態の効果について図面を参照して説明する。図１５は、メモリマクロの分割構成、面積比、消費電力比の関係を示す説明図である。レジスタファイル２５０の消費電力比は、０．０９５であると仮定する。第３の実施の形態の面積比、消費電力比は、それぞれ、‘１．４０’、‘０．３５’であり、第４の実施の形態の消費電力比は、それぞれ、‘１．５９’、‘０．２２’である。
【００９０】
消費電力比の計算式は、０．４１×０．３＋０．４０×０．１＋０．０９５×０．６＝０．２２である。
【００９１】
第４の実施の形態は、メモリを異なる容量のメモリマクロで構成し、小容量メモリマクロが、書き込み、および／または、読み出しの頻度の高いデータを格納する。さらに、第４の実施の形態は、小容量メモリマクロをレジスタファイルで構成する。したがって、第４の実施の形態は、第３の実施の形態よりも、消費電力が低下するという効果がある。
【００９２】
次に、本発明の第５の実施の形態について図面を参照して説明する。
【００９３】
図１６は、本発明の第５の実施の形態の構成を示すブロック図である。図１６を参照すると、第５の実施の形態は、第４の実施の形態のレジスタファイル２５０をラッチ共有型レジスタファイル２５２（レジスタの前段のラッチを共有する）とする構成である。ラッチ共有型レジスタファイル２５２は、制御部２６０、共有前段ラッチ群２８０、３２個の後段ラッチ群２９０を含む。制御部２６０は、共有前段ラッチ群２８０、後段ラッチ群２９０にクロックを供給する。
【００９４】
図１７は、図１６のラッチ共有型レジスタファイル２５２の詳細ブロック図である。図１７を参照すると、ラッチ共有型レジスタファイル２５２は、１個の共有前段ラッチ群２８０（３２［ビット］）、および、３２個の後段ラッチ群２９０を含む。
【００９５】
共有前段ラッチ群２８０は、Ｌｏｗスルー（クロックがＬｏｗの間、入力を取り込む）タイプである。後段ラッチ群２９０は、Ｈｉｇｈスルー（クロックがＨｉｇｈの間、入力を取り込む）タイプである。
【００９６】
次に、第５の実施の形態の効果について図面を参照して説明する。
【００９７】
図１８は、メモリマクロの分割構成、面積比、消費電力比の関係を示す説明図である。第５の実施の形態のラッチ共有型レジスタファイル２５２の消費電力比は、０．０６２であると仮定する。第４の実施の形態の面積比、消費電力比は、それぞれ、‘１．５９’、‘０．２２’であり、第５の実施の形態の消費電力比は、それぞれ、‘１．５２’、‘０．２０’である。
【００９８】
消費電力比の計算式は、０．４１×０．３＋０．４０×０．１＋０．０６２×０．６＝０．２０である。
【００９９】
第５の実施の形態は、メモリを異なる容量のメモリマクロで構成し、小容量メモリマクロが、書き込み、および／または、読み出しの頻度の高いデータを格納する。さらに、第５の実施の形態は、小容量メモリマクロをレジスタの前段のラッチを共有するレジスタファイルで構成する。
【０１００】
したがって、第５の実施の形態は、第４の実施の形態よりも、消費電力が低下するという効果がある。
【０１０１】
上記の実施の形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
（付記１）
異なる容量のメモリマクロで構成されるメモリ内の前記メモリマクロのうち、容量が他の前記メモリマクロに比べて小さくレジスタファイルで構成される特定の前記メモリマクロに、書き込み、および／または、読み出しの頻度の高いデータを格納することを特徴とするメモリ割り当て方法。
【０１０２】
（付記２）
共有前段ラッチ群、および、後段ラッチ群を含む共有型レジスタファイルで構成される前記特定のメモリマクロに、書き込み、および／または、読み出しの頻度の高いデータを格納することを特徴とする付記１記載のメモリ割り当て方法。
【０１０３】
（付記３）
読み出し、および／または、書き込みのアクセス頻度が高いデータを、前記特定のメモリマクロへ優先的に書き込む処理をデータ処理装置に実行させることを特徴とする付記１、または、２記載のメモリ割り当て方法。
【０１０４】
（付記４）
前記データ処理装置に、読み出し、および／または、書き込みのアクセス頻度が高いデータを、前記特定のメモリマクロへ割り付けるようにコーディングされた高水準言語プログラムから最終的に変換された機械語命令列を実行させることを特徴とする付記３記載のメモリ割り当て方法。
【０１０５】
（付記５）
前記データ処理装置に、読み出し、および／または、書き込みのアクセス頻度が高いデータを、前記特定のメモリマクロへ割り付けるようにコーディングされたアセンブリ言語コードから最終的に変換された機械語命令列を実行させることを特徴とする付記３記載のメモリ割り当て方法。
【０１０６】
（付記６）
前記データ処理装置に、前記メモリのアクセス頻度を解析し、読み出し、および／または、書き込みのアクセス頻度が高いデータを、前記特定のメモリマクロへ割り付けるコンパイラにより作成されたアセンブリ言語コードから最終的に変換された機械語命令列を実行させることを特徴とする付記３記載のメモリ割り当て方法。
【０１０７】
（付記７）
ハードウェアに、動作中にアクセスされる前記メモリのアドレスの解析し、アクセス頻度が高いデータのアドレスを前記特定のメモリマクロのアドレスに割り当てる処理を実行させることを特徴とする付記３記載のメモリ割り当て方法。
【０１０８】
（付記８）
プログラムからアセンブリ言語コードへのコンパイル時に、メモリのアクセス頻度を解析して、アクセス頻度の高いデータのアドレスを、異なる容量のメモリマクロで構成されるメモリ内の前記メモリマクロのうち、容量が他の前記メモリマクロに比べて小さい特定の前記メモリマクロのアドレスに自動生成するコンパイラプログラム。
【符号の説明】
【０１０９】
１００    集積装置
１０１    集積装置
１０２    集積装置
２００    メモリ
２０１    メモリマクロ
２０２    メモリマクロ
２０３    メモリマクロ
２１０    メモリ
２１１    メモリマクロ
２１２    メモリマクロ
２１３    メモリマクロ
２１４    メモリマクロ
２１５    メモリマクロ
２１８    セレクタ
２５０    レジスタファイル
２５２    ラッチ共有型レジスタファイル
２５５    セレクタ
２６０    制御部
２７０    レジスタ
２８０    共有前段ラッチ群
２９０    後段ラッチ群
３００    データ処理装置
４００    演算装置
５０１    メモリセルアレイ
５０２    アドレスデコーダ
５０３    ワード線ドライバ
５０４    制御部
５０５    センスアンプ
５０６    ライトバッファ
５０７    リードバッファ
８００    プログラム
８０１    コンパイラ
８０３    アセンブリ言語コード
２Ａ    データ処理装置
３Ａ−０    メモリバンク
３Ａ−１    メモリバンク
３Ａ−２    メモリバンク
３Ａ−３    メモリバンク
【図１】
2012008747.tif 000003
【図２】
2012008747.tif 000004
【図３】
2012008747.tif 000005
【図４】
2012008747.tif 000006
【図５】
2012008747.tif 000007
【図６】
2012008747.tif 000008
【図７】
2012008747.tif 000009
【図８】
2012008747.tif 000010
【図９】
2012008747.tif 000011
【図１０】
2012008747.tif 000012
【図１１】
2012008747.tif 000013
【図１２】
2012008747.tif 000014
【図１３】
2012008747.tif 000015
【図１４】
2012008747.tif 000016
【図１５】
2012008747.tif 000017
【図１６】
2012008747.tif 000018
【図１７】
2012008747.tif 000019
【図１８】
2012008747.tif 000020
【図１９】
2012008747.tif 000021