(57)【特許請求の範囲】
【請求項１】
ＤＲＡＭのメモリセルアレイと、前記ＤＲＡＭのメモリセルアレイの各ロー毎にリフレッシュの実行の有無を設定するフラグと、前記ＤＲＡＭのメモリセルアレイに対するリフレッシュを制御するＤＲＡＭコントローラと、を有する半導体回路において、
複数のデータが同一のロー上で重ならないようにデータ間の組み合わせでデータを記憶するローの数が少なくなるようにコンパイラ又はオペレーティング・システムでメモリ割り当てを行う最適化処理により記憶したデータを前記ＤＲＡＭのローに配置してフラグを設定し、前記フラグが設定されたローに対してリフレッシュを行うことを特徴とする半導体回路の制御方法。
【請求項２】
ＤＲＡＭのメモリセルアレイと、前記ＤＲＡＭのメモリセルアレイの各ロー毎にリフレッシュの実行の有無を設定するフラグと、前記ＤＲＡＭのメモリセルアレイに対するリフレッシュを制御するＤＲＡＭコントローラと、を有する半導体回路において、
任意のデータについての最初の書き込みから最後の読み出しまでの生存期間がオーバーラップまたは近接しているデータ同士をコンパイラ又はオペレーティング・システムでメモリ割り当てを行う最適化処理により前記ＤＲＡＭの同一のローに配置して、データが最初に書き込まれてから最後に読み出されるまでの間だけ前記ローをリフレッシュすることを特徴とする半導体回路の制御方法。
【請求項３】
ＤＲＡＭのメモリセルアレイと、前記ＤＲＡＭのメモリセルアレイの各ロー毎のデータ保持時間を記憶するデータ保持時間記憶テーブルと、前記ＤＲＡＭのメモリセルアレイの各ロー毎にリフレッシュの実行の有無を設定するフラグと、前記ＤＲＡＭのメモリセルアレイに対するリフレッシュを制御するＤＲＡＭコントローラと、を有する半導体回路において、
前記ＤＲＡＭを使用するアプリケーションが必要とするメモリ容量を求め、予め求めた前記ＤＲＡＭの各ロー毎のデータ保持時間を記憶したテーブルを参照してデータ保持時間の長いローから順にコンパイラ又はオペレーティング・システムでメモリ割り当てを行う最適化処理により前記ＤＲＡＭにデータを記憶させ、データを記憶している前記ローの中の最もデータ保持時間の短いローに合わせてリフレッシュの周期を設定することを特徴とする半導体回路の制御方法。
【請求項４】
前記ＤＲＡＭにデータ記憶する際に、データの重要度に応じてデータを所定のローに配置することを特徴とする請求項第３項記載の半導体回路の制御方法。
【請求項５】
半導体回路の温度を検出し、温度に応じてＤＲＡＭに対するリフレッシュの周期を設定することを特徴とする請求項第１、２、３または４項に記載の半導体回路の制御方法。
【請求項６】
ＤＲＡＭのメモリセルアレイと、前記ＤＲＡＭのメモリセルアレイの各ロー毎にリフレッシュの実行の有無を設定するフラグと、前記ＤＲＡＭのメモリセルアレイに対するリフレッシュを制御するＤＲＡＭコントローラと、を有する半導体回路において、
複数のデータが同一のロー上で重ならないようにデータ間の組み合わせでデータを記憶するローの数が少なくなるようにコンパイラ又はオペレーティング・システムでメモリ割り当てを行う最適化処理により記憶したデータを前記ＤＲＡＭのローに配置する手段と、前記データを記憶した前記各ローに対してリフレッシュを行う手段とを備えたことを特徴とする半導体回路。
【請求項７】
ＤＲＡＭのメモリセルアレイと、前記ＤＲＡＭのメモリセルアレイの各ロー毎にリフレッシュの実行の有無を設定するフラグと、前記ＤＲＡＭのメモリセルアレイに対するリフレッシュを制御するＤＲＡＭコントローラと、を有する半導体回路において、
任意のデータについての最初の書き込みから最後の読み出しまでの生存期間がオーバーラップまたは近接しているデータ同士をコンパイラ又はオペレーティング・システムでメモリ割り当てを行う最適化処理により前記ＤＲＡＭの同一のローに配置する手段と、データが最初に書き込まれてから最後に読み出されるまでの間だけ前記ローをリフレッシュする手段とを備えたことを特徴とする半導体回路。
【請求項８】
ＤＲＡＭのメモリセルアレイと、前記ＤＲＡＭのメモリセルアレイの各ロー毎にリフレッシュの実行の有無を設定するフラグと、前記ＤＲＡＭのメモリセルアレイに対するリフレッシュを制御するＤＲＡＭコントローラと、を有する半導体回路において、
前記ＤＲＡＭを使用するアプリケーションが必要とするメモリ容量を求め、予め求めた前記ＤＲＡＭの各ロー毎のデータ保持時間を記憶したテーブルを参照してデータ保持時間の長いローから順にコンパイラ又はオペレーティング・システムでメモリ割り当てを行う最適化処理により前記ＤＲＡＭにデータを記憶させる手段と、データを記憶している前記ローの中の最もデータ保持時間の短いローに合わせてリフレッシュの周期を設定する手段とを備えたことを特徴とする半導体回路。
【請求項９】
前記ＤＲＡＭに記憶する際に、データの重要度に応じてデータを所定のローに配置する手段を備えたことを特徴とする請求項第７項記載の半導体回路。
【請求項１０】
半導体回路の温度を検出し、温度に応じてＤＲＡＭに対するリフレッシュの周期を設定する手段を備えたことを特徴とする請求項第６，７，８または９項に記載の半導体回路。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、半導体回路及びその制御方法に関し、特に、ＤＲＡＭのリフレッシュの間隔を長くできるようにした半導体回路及びその制御方法に関するものである。
【０００２】
【従来の技術】
半導体の高集積化に伴い、プロセッサやメモリ、その他の回路を１チップに集積することが可能になってきた。また、プロセッサ等のロジックとＤＲＡＭ（Ｄｙｎａｍｉｃ  ＲＡＭ）とを１チップに混載可能なプロセスの技術が進歩し、メモリとしてＤＲＡＭを実装することが可能になってきた。
【０００３】
ＤＲＡＭの記憶素子(メモリセル)はコンデンサで作られており、個々の記憶素子(メモリセル)が小さく、ＳＲＡＭ（Ｓｔａｔｉｃ  ＲＡＭ）を実装するのに対してチップの面積を大幅に削減できる長所を持つ一方で、データとして記憶している電荷が、時間が経過するにつれて放電し、データが失われる短所がある。そこで、記憶を保持する作業が必要になる。一般にＤＲＡＭの各メモリセルはマトリクス状に配置されており、各メモリセルに記憶しているデータを、ロー(行)毎に一斉に読み出してセンスアンプで検出し、その値を読み出したメモリセルに書き込む、一連の動作をリフレッシュと呼ぶ。
【０００４】
また、リフレッシュ動作中は、ＤＲＡＭ外部からの読み出し／書き込みを行うことはできない。このリフレッシュの制御は、ＤＲＡＭ外部から読み出し／書き込みが可能な通常動作モードではＤＲＡＭ外部のＤＲＡＭコントローラが行い、バッテリバックアップ時などのデータ保持モードではＤＲＡＭ内部のリフレッシュ制御回路が行う。このデータ保持モードでは、ＤＲＡＭ外部からの読み出し／書き込みは受け付けられない。
【０００５】
ここで、ロジックとメモリとを混載することで新たに問題が生じる。
それは、従来ロジックとメモリとが別個であったためＤＲＡＭ単体としての発熱は小さかったものが、１チップ化することによりチップ単体の消費電力がロジックとメモリの総和となり、チップの発熱が大きくなる点である。例えば、周囲温度が２５°Ｃから７０°Ｃに上昇するとＤＲＡＭのメモリセルに蓄えた電荷のリーク電流が３０倍になるために、リフレッシュも１／３０の時間間隔で行う必要がある（伊藤、”超ＬＳＩメモリ”、培風館）。汎用ＤＲＡＭを用いるシステムでは、最悪の動作環境条件を想定して、短い周期でリフレッシュを行うために、通常の温度では過剰な頻度でリフレッシュを行っている。
【０００６】
また、ＤＲＡＭ内の各メモリセルのデータ保持時間の間には大きなバラツキがあり、個々のＤＲＡＭに含まれるデータ保持時間の短いメモリセルの数は非常に少ない（岩田他、”超低保持電流ＤＲＡＭを実現するための回路技術”、電子情報通信学会技術報告、ＩＣＤ９５−５０）にも関わらず、リフレッシュは全てのローに対し同じ周期で行われている。これは、データ保持時間の実力が小さいメモリセルを含まない、多くのローに対して過剰な頻度のリフレッシュを行うことになる。
【０００７】
さらに、保持しているデータがロジックにとって必要であるか否かに関わらず、全てのローがリフレッシュの対象となっている。しかし、必要なデータのみを記憶出来れば良く、不要なデータに対するリフレッシュを行う必要もない。
【０００８】
このようにリフレッシュを過剰に行うことは、電力を無駄に消費する問題を引き起こす。
そこで、リフレッシュの回数を削減する手段が検討されている。汎用ＤＲＡＭのデータ保持モードにおいて低消費電力化を図る技術として、温度に応じたリフレッシュ周期でセルフリフレッシュを行う手法１（特開平６−２１５５６１号）がある。また汎用ＤＲＡＭの通常動作モードで低消費電力化を図る技術として、メモリ領域毎に存在するフラグにより、電源の供給やリフレッシュ動作の有無を制御する手法２（特開平５−３２４１４０号公報、米国特許第５４６９５５９号明細書）などがある。
【０００９】
【発明が解決しようとする課題】
しかしながら、上述した手法１は、通常動作モード時ではＤＲＡＭ内で最短のデータ保持時間を持つメモリセルにリフレッシュの周期を合わせるため、通常動作モードでは消費電力の問題が解決されない。また、手法２はデータ保持時間のバラツキには対応していない。
【００１０】
さらに重要な点は、ＤＲＡＭ／ロジック混載ＬＳＩでは、ＤＲＡＭとロジックとを１チップ上で高メモリバンド幅で結合することで、ロジック部の処理性能を飛躍的に向上させる狙いを持つことである。このようなＬＳＩにおいて、リフレッシュと、ロジックが行うＤＲＡＭアクセスとが競合することで、ＤＲＡＭアクセスに要する時間が長くなるためにロジックの処理能力が抑制される問題を解決することは、低消費電力化と並ぶ重要な課題である。
【００１１】
本発明の第１の目的は、半導体回路、特にＤＲＡＭとロジックとを混載したＬＳＩにおいて、必要なデータを記憶しているローのみをリフレッシュすることでリフレッシュの回数を削減し、低消費電力化と、リフレッシュとＤＲＡＭアクセスとの競合によるアクセス時間増大が原因となるロジックの性能低下の抑制を両立することである。
【００１２】
本発明の第２の目的は、データの重要度に応じてデータを記憶するローを決定することにより、リフレッシュ周期を過度に短くすることなく重要なデータの保持を確実に行うことができるようにすることである。
【００１３】
本発明の第３の目的は、温度に応じた適切な周期でリフレッシュを行い、低消費電力化とロジックの処理性能低下の抑制を両立することである。
【００１４】
【課題を解決するための手段】
前記第１の目的を達成するため、本発明は、ＤＲＡＭのメモリセルアレイと、前記ＤＲＡＭのメモリセルアレイの各ロー毎にリフレッシュの実行の有無を設定するフラグと、前記ＤＲＡＭのメモリセルアレイに対するリフレッシュを制御するＤＲＡＭコントローラと、を有する半導体回路の制御方法において、複数のデータが同一のロー上で重ならないようにデータ間の組み合わせでデータを記憶するローの数が少なくなるようにコンパイラ又はオペレーティング・システムでメモリ割り当てを行う最適化処理により記憶したデータを前記ＤＲＡＭのローに配置してフラグを設定し、前記フラグが設定されたローに対してリフレッシュを行うことを特徴とする。
【００１５】
前記第１の目的を達成するための他の方法は、ＤＲＡＭのメモリセルアレイと、前記ＤＲＡＭのメモリセルアレイの各ロー毎にリフレッシュの実行の有無を設定するフラグと、前記ＤＲＡＭのメモリセルアレイに対するリフレッシュを制御するＤＲＡＭコントローラと、を有する半導体回路の制御方法において、任意のデータについての最初の書き込みから最後の読み出しまでの生存期間がオーバーラップまたは近接しているデータ同士をコンパイラ又はオペレーティング・システムでメモリ割り当てを行う最適化処理により前記ＤＲＡＭの同一のローに配置して、データが最初に書き込まれてから最後に読み出されるまでの間だけ前記ローをリフレッシュすることを特徴とする。
【００１６】
前記第１および第２の目的を達成するための方法は、ＤＲＡＭのメモリセルアレイと、前記ＤＲＡＭのメモリセルアレイの各ロー毎のデータ保持時間を記憶するデータ保持時間記憶テーブルと、前記ＤＲＡＭのメモリセルアレイの各ロー毎にリフレッシュの実行の有無を設定するフラグと、前記ＤＲＡＭのメモリセルアレイに対するリフレッシュを制御するＤＲＡＭコントローラと、を有する半導体回路の制御方法において、前記ＤＲＡＭを使用するアプリケーションが必要とするメモリ容量を求め、予め求めた前記ＤＲＡＭの各ロー毎のデータ保持時間を記憶したテーブルを参照してデータ保持時間の長いローから順にコンパイラ又はオペレーティング・システムでメモリ割り当てを行う最適化処理により前記ＤＲＡＭにデータを記憶させ、データを記憶している前記ローの中の最もデータ保持時間の短いローに合わせてリフレッシュの周期を設定することを特徴とする。
【００１７】
この方法において、前記ＤＲＡＭにデータ記憶する際に、データの重要度に応じてデータを所定のローに配置することができる。
【００１８】
前記第３の目的を達成するための方法は、前記の各方法において、半導体回路の温度を検出し、温度に応じてＤＲＡＭに対するリフレッシュの周期を設定することを特徴とする。
【００１９】
前記第１の目的を達成するための半導体回路は、ＤＲＡＭのメモリセルアレイと、前記ＤＲＡＭのメモリセルアレイの各ロー毎にリフレッシュの実行の有無を設定するフラグと、前記ＤＲＡＭのメモリセルアレイに対するリフレッシュを制御するＤＲＡＭコントローラと、を有する半導体回路において、複数のデータが同一のロー上で重ならないようにデータ間の組み合わせでデータを記憶するローの数が少なくなるようにコンパイラ又はオペレーティング・システムでメモリ割り当てを行う最適化処理により記憶したデータを前記ＤＲＡＭのローに配置する手段と、前記データを記憶した前記各ローに対してリフレッシュを行う手段とを備えたことを特徴とする。
【００２０】
前記第１の目的を達成するための他の半導体回路は、ＤＲＡＭのメモリセルアレイと、前記ＤＲＡＭのメモリセルアレイの各ロー毎にリフレッシュの実行の有無を設定するフラグと、前記ＤＲＡＭのメモリセルアレイに対するリフレッシュを制御するＤＲＡＭコントローラと、を有する半導体回路において、任意のデータについての最初の書き込みから最後の読み出しまでの生存期間がオーバーラップまたは近接しているデータ同士をコンパイラ又はオペレーティング・システムでメモリ割り当てを行う最適化処理により前記ＤＲＡＭの同一のローに配置する手段と、データが最初に書き込まれてから最後に読み出されるまでの間だけ前記ローをリフレッシュする手段とを備えたことを特徴とする。
【００２１】
前記第１および第２の目的を達成するための他の半導体回路は、ＤＲＡＭのメモリセルアレイと、前記ＤＲＡＭのメモリセルアレイの各ロー毎にリフレッシュの実行の有無を設定するフラグと、前記ＤＲＡＭのメモリセルアレイに対するリフレッシュを制御するＤＲＡＭコントローラと、を有する半導体回路において、前記ＤＲＡＭを使用するアプリケーションが必要とするメモリ容量を求め、予め求めた前記ＤＲＡＭの各ロー毎のデータ保持時間を記憶したテーブルを参照してデータ保持時間の長いローから順にコンパイラ又はオペレーティング・システムでメモリ割り当てを行う最適化処理により前記ＤＲＡＭにデータを記憶させる手段と、データを記憶している前記ローの中の最もデータ保持時間の短いローに合わせてリフレッシュの周期を設定する手段とを備えたことを特徴とする。
【００２２】
この半導体回路において、前記ＤＲＡＭに記憶する際に、データの重要度に応じてデータを所定のローに配置する手段を備えることができる。
【００２３】
前記第３の目的を達成するための半導体回路は、前記各半導体回路において、半導体回路の温度を検出し、温度に応じてＤＲＡＭに対するリフレッシュの周期を設定する手段を備えたことを特徴とする。
【００２４】
【発明の実施の形態】
図１は、本発明の半導体回路が適用された情報処理装置全体の構成を示すブロック図である。バス２を介して、プロセッサ１、ＲＯＭ３、主記憶ユニット４、温度検出手段５、Ｉ／Ｏ（入出力インターフェース）６等が接続している。主記憶ユニット４には、データを格納するためのＤＲＡＭ７、ＤＲＡＭ７に対する書き込み及び読み出しの制御を行うＤＲＡＭコントローラ８、ＤＲＡＭ７の各ローにおけるデータ保持時間を記憶するデータ保持時間記憶手段９が含まれている。ここで、ロジック部３３は論理回路等の非メモリ回路を指し、その中には、前記プロセッサ１やＩ／Ｏ６等が含まれる。
【００２５】
図２は、図１に示す主記憶ユニット４の内部構成を示すブロックである。主記憶ユニット４内のＤＲＡＭコントローラ８には、ＤＲＡＭ７の行アドレスを発生する行アドレス発生手段１０、行アドレスを発生するタイミングを決定するためのタイマ１１、ＤＲＡＭ７の中でリフレッシュを行う対象となる行を設定する行フラグ記憶部１２を備えている。このＤＲＡＭ７は、インターフェース（ｉ／ｆ）１３を介してバス２に接続されている。
ＤＲＡＭコントローラ８は、ＤＲＡＭ／ロジック混載ＬＳＩではチップ内に１つ実装され、ＤＲＡＭの動作モードに依らず、常にリフレッシュ等の制御を行う。
【００２６】
従来のロジックとＤＲＡＭとがプリント基板上で結合されたシステムでは、ＤＲＡＭの外部と内部に別個にリフレッシュを行う回路が存在し、ＤＲＡＭの動作モード（通常動作モード／スリープモード）に応じて、それぞれの稼働する時期が異なる点が、ＤＲＡＭ／ロジック混載ＬＳＩにおけるＤＲＡＭコントローラとの差異である。
【００２７】
この、ＤＲＡＭコントローラ８の構成要素であるタイマ１１が所定の時間を計時する毎に、行アドレス発生手段１０は出力するローのアドレスを更新する。行フラグ１２はＤＲＡＭの各ローに対応したフラグを持っており、タイマ１１が所定の時間を計時する毎に、ＤＲＡＭコントローラ８は行アドレス発生手段１０が指すローに対応するフラグの値を参照して、そのフラグの値がリフレッシュを行うように設定されている時に限りリフレッシュを実行し、そうでない場合は何も行わない。
【００２８】
この、ＤＲＡＭコントローラ８は、バス２を介して行われるＤＲＡＭへのアクセスとリフレッシュとの競合を調停する機能も持つ。なお、プロセッサ１と主記憶ユニット４内のＤＲＡＭ７とがバス２を介さずに接続する経路を持っても良い。この場合は、この経路によるＤＲＡＭへのアクセスとリフレッシュとの競合の調停もＤＲＡＭコントローラ８が行う。
【００２９】
図３は、ＤＲＡＭ７の内部構成を示すブロック図である。書き込み・読み出しを制御する制御信号が供給される制御信号線１４、（Ａ＋Ｂ）ビットのアドレス信号が供給されるアドレス線１５、及び、データが供給されるデータ線１６が入出力インターフェース１７に接続される。（Ａ＋Ｂ）ビットのアドレスは、入出力インターフェース１７において、Ａビットの行アドレス（ローアドレス）とＢビットの列アドレス（カラムアドレス）に分離され、Ａビットの行アドレスは行デコーダ１８に供給され、Ｂビットの列アドレスは列デコーダ１９に供給される。メモリセル２４はワード線２１とビット線２３の交点付近に配置される。行デコーダ１８の出力は、メモリセル・アレイ２０中の選択されたワード線２１に供給され、選択された行のメモリセルのデータは２Ｂ本のビット線２３に出力され、さらに、センスアンプ２２で増幅されて、列デコーダ１９で選択されたビット線上のデータが主記憶ユニット４の外部に出力される。
【００３０】
なお、ここまでの説明では、列アドレスの持つ空間の大きさとビット線の数とが一致しており、一度にアクセスできるデータの最小サイズは１ビットである。一度にアクセスできるデータのサイズは、予め定められた値か、制御信号１４中に含まれるサイズ指定のための信号によってアクセスの度に定められた値の、いずれでも良い。また、列アドレスの持つ空間の大きさがビット線の数より少なくても良い。この場合、一度にアクセスできるデータの最小サイズは、ビット線の数を列アドレスの持つ空間の大きさで割った値である。
【００３１】
【実施例】
次に上述した半導体回路におけるいくつかの制御方法について説明する。
【００３２】
［第１実施例］
まず、本発明における制御方法の基本的な考え方について従来の制御方法と対比しながら説明する。
図４（ａ）は、データ配置の最適化を行わない場合のデータの記憶位置とローの関係を示している。図４（ａ）において、丸印で示された位置はデータが書き込まれた位置を示し、長円は個々のデータのまとまりを示す。
図４（ａ）は、アドレス空間中におけるデータの割り当て位置を無作為に決定した場合の例を示す。この例では、連続する５本のローにそれぞれデータが書き込まれている。
【００３３】
ここで本実施例においては、ＤＲＡＭに対するデータの配置に着目する。各ローにおけるデータのメモリセルへの配置に関して、ビット線２３の方向から見てデータの重なり状態を調べると、図４（ａ）に示す例においては、ロー２１ａとロー２１ｂとロー２１ｃでデータの重なりがなく、ロー２１ｄとロー２１ｅでデータの重なりがない。
【００３４】
そこで、図４（ｂ）に示すように、複数のデータが同一のロー上で重ならないようにしながら、データを記憶するローの数を削減するようにデータの配置を決定する。ローの数を最小化することを目的とし、各ローに割り当てるデータ間の組み合わせを決定する方法は、組み合わせ最適化問題として解くことができる。図４（ｂ）においては、データを割り当てるロー２１ａ、２１ｄを太線で示し、データを割り当てないロー２１ｂ，２１ｃ，２１ｅを細線で示す。
このようにデータの配置を行った後に、リフレッシュの実行を制御する設定をロー毎に行う。
【００３５】
行フラグ１２の各フィールドはＤＲＡＭの各ローに対応しており、ＤＲＡＭコントローラ８は、行フラグ１２に設定されたフラグの値によってロー毎にリフレッシュを行うか否かを判断し、リフレッシュを行うようにフラグが設定されたローに対してリフレッシュの制御を行う。行フラグ１２の各フラグは１ビット（オン／オフ）で実現することができる。
【００３６】
このデータ配置の決定方法は、コンパイラが行う方法とオペレーティング・システムが行う方法とがある。
前者のコンパイラが行う方法としては、図５に示すように、コンパイラの一機能であるメモリ割り当て手段４１において、中間表記４２に対してメモリ割り当ての最適化処理を行う。メモリの構造としての、ローの数と、ロー当たりのメモリセル数とを制約として、実際にデータを割り付けるローの数を最小とするように、データ間の組み合わせの最適化処理を行い、個々のデータの相対アドレスを決定する。さらに、データを記憶させるローに対応するフラグの設定を行うオペレーションを挿入し、中間表記４３を出力する。この中間表記４３は、コンパイル処理の最後の過程で命令列に変換される。実際にフラグの設定を行う方法としては、アクセスしたローのフラグを自動的にセット／リセットする命令を用いる方法や、即値命令やデータ転送命令で値を設定する方法などがある。
【００３７】
一方、後者のオペレーティング・システムが行う方法としては、図６に示すように、アドレス変換手段４４において、仮想アドレス４５で表現されたページを物理アドレス４６にマッピングする際に、メモリの構造としての、ローの数と、ロー当たりのメモリセル数とを制約として、ページすなわちデータを配置するローの数が最小になるようにページの配置を決定する。行フラグ１２の設定は、実際にデータをマッピングするローのフラグを設定するように、前述したフラグを設定する命令、即値命令またはデータ転送命令等をアドレス変換手段４３に組み込むことで実現できる。
【００３８】
このようにしてデータの配置を行った後に、データを配置しているローに対してのみリフレッシュを行うことで、不必要なリフレッシュの実行を削減し、消費電力の削減と、リフレッシュとメモリアクセスとの競合によるメモリアクセス時間の増大を防ぐことができる。
【００３９】
なお、これらのコンパイラやオペレーティング・システムが動作する場所は、メモリの構造を知ることが可能である限り、この半導体回路の内部でも外部でも良い。
【００４０】
［第２実施例］
次に、データの生存期間、すなわち、任意の変数についての最初の書き込みから最後の読み出しまでの期間に着目してデータの配置を決定する制御方法について説明する。
【００４１】
図７（ａ）は、ＤＲＡＭに記憶する各データＡ〜Ｈの生存期間を示すグラフである。
図７（ｂ）に示すようにデータの生存期間を考慮せずにマッピングすると、生存期間が離れたデータ同士が同一のローに割り当てられる場合が発生する。
図７（ｃ）は、図７（ａ）の各データの生存期間をロー毎に整理した図である。例えば、ローＲ１はデータＢ、Ｃ、Ｆを記憶しているので、データＢ、Ｃ、Ｆの少なくとも一つのデータが生存している期間中はローＲ１を常にリフレッシュする必要がある。
【００４２】
そこで本実施例においては、図７（ｄ）に示すように、各データＡ〜Ｈの生存期間に着目して、生存期間がオーバーラップまたは近接しているデータ同士を同一のローに配置してＤＲＡＭに記憶させる。各ロー毎の、生存しているデータを記憶している期間の総和を最小化することを目的とし、各ローに割り当てるデータ間の組み合わせを決定する方法は、組み合わせ最適化問題として解くことができる。
【００４３】
図７（ｄ）に示す例においては、データＡ，ＣをローＲ０に、データＢ，ＤをローＲ１に、データＦ，ＧをローＲ２に、データＥをローＲ３に配置している。
図７（ｅ）は、各データＡ〜Ｈの書き込み位置を変更した後のロー毎のデータの生存期間を示すグラフである。
このように、生存期間がオーバーラップまたは近接しているデータ同士を同一のローに割り当てた後に、リフレッシュの実行を制御する設定をロー毎に行う。
【００４４】
行フラグ１２の各フィールドはＤＲＡＭの各ローに対応しており、ＤＲＡＭコントローラ８は、リフレッシュを行うようにフラグが設定された期間に限り、該当するローに対するリフレッシュの制御を行う。行フラグ１２の各フラグは１ビット（オン／オフ）で実現することができる。
【００４５】
このデータ配置の決定方法は、コンパイラが行う方法とオペレーティング・システムが行う方法とがある。
前者のコンパイラが行う方法としては、図８に示すように、コンパイラの一機能であるメモリ割り当て手段４７において、中間表記４８に対してメモリ割り当ての最適化処理を行う。メモリ割り当て手段４７が、中間表記４９である流れグラフを基に個々のデータの生存期間を求める。次に、メモリの構造としての、ローの数と、ロー当たりのメモリセル数とを制約として、少なくとも一つのデータが生存している各ロー毎の生存期間の、全てのローにおける総和を最短化するように、データ間の組み合わせの最適化処理を行い、個々のデータの相対アドレスを決定する。さらに、データの生存期間の開始時に、データを記憶させるローのフラグをセットするオペレーションを挿入し、データの生存期間の終了時に、データを記憶していたローのフラグをリセットするオペレーションを挿入して、中間表記４９を出力する。この中間表記４９は、コンパイル処理の最後の過程で命令列に変換される。実際にフラグの設定を行う方法としては、アクセスしたローのフラグを自動的にセット／リセットする命令を用いる方法や、即値命令やデータ転送命令で値を設定する方法などがある。
【００４６】
一方、後者のオペレーティング・システムが行う方法としては、図９に示すように、アドレス変換手段５０において、仮想アドレス５１で表現されたページを物理アドレス５２にマッピングする際に、メモリの構造としての、ローの数と、ロー当たりのメモリセル数とを制約として、少なくとも一つのページが生存している各ロー毎の生存期間の、全てのローについての総和を最短化するようにページの配置を決定する。各ページの生存期間は、各ページに内包するデータが一つでも生存している期間で与えられ、コンパイラが各ページにデータを割り当てる際に、個々のデータの生存期間を解析することで求めることができる。さらに、ページを物理メモリ上に配置する時にフラグをセットし、物理メモリを解放する時にフラグをリセットするように、第１実施例で前述したフラグをセットする命令、即値命令、データ転送命令等をアドレス変換手段５０に組み込むことで実現できる。
【００４７】
このようにしてデータの配置を行った後に、データを記憶しているローを、データが生存している期間だけリフレッシュすることで、不必要なリフレッシュの実行を削減し、消費電力の削減と、リフレッシュとメモリアクセスとの競合によるメモリアクセス時間の増大を防ぐことができる。
【００４８】
なお、以上の第２実施例に示すような、時間領域で最適化する方法を、前記第１実施例の、空間領域で最適化する方法に併用することもできる。
なお、これらのコンパイラやオペレーティング・システムが動作する場所は、メモリの構造を知ることが可能である限り、この半導体回路の内部でも外部でも良い。
【００４９】
［第３実施例］
次に、ＤＲＡＭのロー毎のデータ保持時間に着目して、データの配置を決定する制御方法について説明する。
この例においては、図１０に模式的に示すように、ＤＲＡＭ７の複数のローＲ０〜Ｒ７の各ロー毎にデータ保持時間ｔｒ０〜ｔｒ７を記憶するデータ保持時間記憶テーブル９ａを設けている。
【００５０】
記憶テーブル９ａは、図１に示されるデータ保持時間記憶手段９に対応するものであり、ＰＲＯＭ、ＥＰＲＯＭ、ＦＬＡＳＨメモリ、ＦＰＧＡ等の書き込み可能なデバイスにより実現することができる。テーブル９ａには、各ロー毎に、各ローに含まれる全メモリセルの中で最もデータ保持時間が短いメモリセルのデータ保持時間を記憶する。
【００５１】
データ保持時間の測定はＤＲＡＭのテスト時に行う。この測定結果を記憶テーブル９ａに記憶させる。なお、データ保持時間記憶テーブル９ａに記憶させる情報は、時間そのものでも、時間をランク分けしコード化した値でも良い。
ランク分けした場合にはテーブルのサイズが減るという利点がある。
【００５２】
このような主記憶ユニット４にデータを記憶させるに際して、記憶テーブル９ａに記憶されているロー毎のデータ保持時間を参照し、データ保持時間が長いローから順にデータを記憶させるようにする。次に、実際にデータを記憶させたローの中で最も短いデータ保持時間に合わせてリフレッシュ周期をタイマ１１に設定する。
このようにタイマ１１の設定を行うとともに、リフレッシュの実行を制御する設定をロー毎に行う。
【００５３】
行フラグ１２の各フィールドはＤＲＡＭの各ローに対応しており、ＤＲＡＭコントローラ８は、行フラグ１２に設定されたフラグの値によってロー毎にリフレッシュを行うか否かを判断し、リフレッシュを行うようにフラグが設定されたローに対してリフレッシュの制御を行う。行フラグ１２の各フラグは１ビット（オン／オフ）で実現することができる。
【００５４】
このデータ配置の決定方法は、コンパイラが行う方法とオペレーティング・システムが行う方法とがある。
前者のコンパイラが行う方法としては、図１１に示すように、コンパイラの一機能であるメモリ割り当て手段５３において、中間表記５４に対してメモリ割り当ての最適化処理を行う。データのメモリ割り付けを行う際に記憶テーブル９ａに保持した値を参照し、メモリの構造としての、ローの数と、ロー当たりのメモリセル数とを制約として、データ保持時間の長いローに対応する物理アドレスを優先的にデータ割り付けの対象とする。次に、最後に割り付けの対象となったローのデータ保持時間を参照して、タイマ８に設定するリフレッシュ周期を決定する。最後に、実際のデータを記憶させるローのフラグをセットするオペレーションと、リフレッシュ周期を設定するオペレーションとを含む中間表記５５を出力する。この中間表記５５は、コンパイル処理の最後の過程で命令列に変換される。実際にフラグおよびリフレッシュ周期の設定を行う方法としては、アクセスしたローのフラグを自動的にセット／リセットする命令を用いる方法や、即値命令やデータ転送命令で値を設定する方法などがある。
【００５５】
一方、後者のオペレーティング・システムが行う方法としては、図１２に示すように、アドレス変換手段５６において、仮想アドレス５７で表現されたページを物理アドレス５８にマッピングする際に、メモリの構造としての、ローの数と、ロー当たりのメモリセル数とを制約として、ページすなわちデータを配置する対象としてデータ保持時間の長いローに優先的に割り付ける。次に、最後に割り付けの対象となったローのデータ保持時間を参照して、タイマ８にリフレッシュ周期を設定することで実現できる。フラグおよびリフレッシュ周期の設定は、第１実施例で前述したフラグをセットする命令、即値命令、データ転送命令等をアドレス変換手段５６に組み込むことで実現できる。
【００５６】
このように、データ保持時時間の長いローから優先的に使用することでリフレッシュの回数を削減し、消費電力の削減と、リフレッシュとメモリアクセスとの競合によるメモリアクセス時間の増大を防ぐことができる。
【００５７】
なお、以上の第３実施例に示すような、ロー毎のデータ保持時間に着目して、データの配置を決定する方法を、前記第１実施例の、空間領域で最適化する方法、第２実施例の、時間領域で最適化する方法に併用することもできる。
なお、これらのコンパイラやオペレーティング・システムが動作する場所は、メモリの構造を知ることが可能である限り、この半導体回路の内部でも外部でも良い。
【００５８】
［第４実施例］
ＤＲＡＭにデータを記憶させる際に、データの重要度に応じてデータの配置を決定する方法について説明する。
たとえば、ＤＲＡＭに記憶させるデータとしては、通信パケットのような誤り訂正が可能なデータと、誤り訂正が不可能なデータとがある。
また、数値演算や制御用のデータのような値の誤りが許されないデータと、画像／音声データのような若干の値の誤りがあっても重大な不都合を引き起こすことがないデータとがある。
【００５９】
そこで、データの重要度に応じて記憶させるローを決定する。すなわち、誤り訂正が可能なデータや、値の誤りが許容されるデータをデータ保持時間が短いローに割り当てる。また、誤り訂正が不可能なデータや、値の誤りが許されないデータをデータ保持時間が長いローに割り当てる。このように、データの重要度に応じてデータを配置し、リフレッシュの周期を適度に長くすることで、リフレッシュの頻度を低下させることができる。
【００６０】
このデータの重要度に応じた配置の決定は、図１３に示すように、データの重要度を示す機能を持つ中間表記６０に対応したコンパイラによって実現できる。データの重要度は、例えば、重要度を示す型を設けるなどの手段で、プログラム中に記述できる。図１３に示すコンパイラのメモリ割り当て手段５９は、データ保持時間記憶手段９に記憶したロー毎のデータ保持時間を参照しながら、中間表記６０に対してデータの重要度に応じたデータの配置を行い、個々のデータの物理アドレスを決定し、中間表記６１を出力する。この中間表記６１は、コンパイル処理の最後の過程で命令列に変換される。
なお、このコンパイラが動作する場所は、メモリの構造を知ることが可能である限り、この半導体回路の内部でも外部でも良い。
【００６１】
［第５実施例］
通常のＤＲＡＭの特性として、各ローにおけるデータ保持時間は固定されたものではなく温度により変化する。すなわち、先に説明したように、温度が低下するとデータ保持時間が長くなる。一般に、汎用ＤＲＡＭのリフレッシュの間隔は最悪の動作条件を想定して、すなわち、高温の状態を想定して非常に短く設定される。しかしながら、常温ではデータ保持時間の実力値が長くなるために、高温時に合わせたリフレッシュの周期は、常温時のデータ保持時間の実力値に対して非常に短いものとなり、過剰にリフレッシュを行うことになる。
【００６２】
これにより、必要以上に電力を消費するだけでなく、リフレッシュとメモリアクセスとが競合する頻度が高くなるためにメモリアクセスの平均時間が長くなり、ＤＲＡＭ７と混載したロジック部３３の性能が抑制される。
【００６３】
そこで、図１４に示す実施例においては、ＤＲＡＭ７とロジック部３３とが混載された半導体回路の内部に温度検出手段５を設けて半導体回路の温度を検出し、温度に応じてＤＲＡＭコントローラ８のタイマレジスタ８ａを制御することにより、リフレッシュの周期を適切に設定する。
【００６４】
温度検出手段５は、実際にデータを記憶させるメモリセルと同じ温度特性を持つメモリセルのリーク電流をモニタする方法や、リングオシレータを用いる方法などで実現することができる（伊藤、”超ＬＳＩメモリ”、１９９４年、培風館）。
【００６５】
このように、温度を検出してリフレッシュの周期を設定しリフレッシュの頻度を削減することで、ＤＲＡＭ／ロジック混載ＬＳＩにおいて、不必要なリフレッシュの実行を削減し、消費電力の削減と、リフレッシュとメモリアクセスとの競合によるメモリアクセス時間の増大の抑制を両立することができる。
【００６６】
なお、以上の第５実施例に示すような、温度を検出してリフレッシュ周期を設定する方法を、前記第１実施例の、空間領域で最適化する方法、第２実施例の、時間領域で最適化する方法、第３及び第４実施例の、データ保持時間によりデータの配置を決定する方法に併用することもできる。
【００６７】
【発明の効果】
本発明によれば、下記の効果を奏する。
（１）必要なデータを記憶しているローのみをリフレッシュすることでリフレッシュの回数が減少するので、低消費電力化と、リフレッシュとＤＲＡＭアクセスとの競合が原因となるロジックの処理性能低下の抑制とが可能となる。
（２）記憶するデータの重要度に応じて書き込むローを設定するのでリフレッシュ周期を過度に短くする必要がなくなり、低消費電力化と、リフレッシュとＤＲＡＭアクセスとの競合が原因となるロジックの処理性能低下の抑制とが可能となる。
（３）温度に応じてリフレッシュの周期を設定するので、リフレッシュの周期を過度に短くする必要がなくなり、低消費電力化と、リフレッシュとＤＲＡＭアクセスとの競合が原因となるロジックの処理性能低下の抑制とが可能となる。
【図面の簡単な説明】
【図１】  本発明の半導体回路が適用された情報処理装置全体の構成を示すブロック図である。
【図２】  図１に示す主記憶ユニット４の内部構成を示すブロックである。
【図３】  ＤＲＡＭ７の内部構成を示すブロック図である。
【図４】  （ａ）は最適化前のデータの記憶位置とローの関係を示し、（ｂ）は最適化後のデータの記憶位置とローの関係を示している。
【図５】  第１実施例において、コンパイラでメモリ割り当てを行う場合の原理的な機能図である。
【図６】  第１実施例において、オペレーティングシステムでメモリ割り当てを行う場合の原理的な機能図である。
【図７】  第２実施例を説明するための図であり、（ａ）はＤＲＡＭにおける各データの生存期間を示すグラフ、（ｂ）はデータの生存期間を考慮せずに配置した場合を示す説明図、（ｃ）はロー毎のデータの生存期間を示すグラフ、（ｄ）は生存期間が近いデータ同士を同一のローに配置してＤＲＡＭに記憶させた場合を示す説明図、（ｅ）は各データＡ〜Ｈの配置を最適化した後のロー毎のデータの生存期間を示すグラフである。
【図８】  第２実施例において、コンパイラでメモリ割り当てを行う場合の原理的な機能図である。
【図９】  第２実施例において、オペレーティングシステムでメモリ割り当てを行う場合の原理的な機能図である。
【図１０】  第３実施例において、データ保持時間記憶テーブルを設けた実施例のブロック図である。
【図１１】  第３実施例において、コンパイラでメモリ割り当てを行う場合の原理的な機能図である。
【図１２】  第３実施例において、オペレーティングシステムでメモリ割り当てを行う場合の原理的な機能図である。
【図１３】  第４実施例において、コンパイラでメモリ割り当てを行う場合の原理的な機能図である。
【図１４】  温度検出手段とリフレッシュの周期を制御する手段を設けた第５実施例のブロック図である。
【符号の説明】
１  プロセッサ、２  バス、３  ＲＯＭ、４  主記憶ユニット、５  温度検出手段、６  Ｉ／Ｏ（入出力インターフェース）、７  ＤＲＡＭ、８  ＤＲＡＭ、８ａ  タイマレジスタ、９  データ保持時間記憶手段、９ａ  記憶テーブル、１０行アドレス発生手段、１１  タイマ、１２  行フラグ記憶部、１３  インターフェース（ｉ／ｆ）、１４  制御信号線、１５  アドレス線、１６  データ線、１７  入出力インターフェース、１８  行デコーダ、１９  列デコーダ、２０  メモリセル・アレイ、２１  ワード線、２１ａ〜２１ｅ、２２  センスアンプ、２３  ビット線、３３  ロジック部、４１  メモリ割り当て手段、４２，４３  中間表記、４４  アドレス変換手段、４５  仮想アドレス、４６  物理アドレス、４７  メモリ割り当て手段、４８，４９  中間表記、５０  アドレス変換手段、５１  仮想アドレス、５２  物理アドレス、５３  メモリ割り当て手段、５４，５５  中間表記、５６  アドレス変換手段、５７  仮想アドレス、５８  物理アドレス、５９  メモリ割り当て手段、６０，６１  中間表記
【図１】
0004246812.tif 000002
【図２】
0004246812.tif 000003
【図３】
0004246812.tif 000004
【図４】
0004246812.tif 000005
【図５】
0004246812.tif 000006
【図６】
0004246812.tif 000007
【図７】
0004246812.tif 000008
【図８】
0004246812.tif 000009
【図９】
0004246812.tif 000010
【図１０】
0004246812.tif 000011
【図１１】
0004246812.tif 000012
【図１２】
0004246812.tif 000013
【図１３】
0004246812.tif 000014
【図１４】
0004246812.tif 000015