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

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

▶ レッドパイン シグナルズ インコーポレイティドの特許一覧

特許7194314プロセッサの消費電力を削減するためのフラッシュとRAMの割り当てのシステムと方法
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-12-13
(45)【発行日】2022-12-21
(54)【発明の名称】プロセッサの消費電力を削減するためのフラッシュとRAMの割り当てのシステムと方法
(51)【国際特許分類】
   G06F 12/02 20060101AFI20221214BHJP
   G06F 12/06 20060101ALI20221214BHJP
   G06F 12/00 20060101ALI20221214BHJP
【FI】
G06F12/02 520A
G06F12/06 515K
G06F12/06 522B
G06F12/00 560B
G06F12/00 550E
【請求項の数】 16
(21)【出願番号】P 2022516149
(86)(22)【出願日】2020-09-11
(65)【公表番号】
(43)【公表日】2022-08-26
(86)【国際出願番号】 US2020050590
(87)【国際公開番号】W WO2021051025
(87)【国際公開日】2021-03-18
【審査請求日】2022-05-10
(31)【優先権主張番号】62/899,084
(32)【優先日】2019-09-11
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】16/992,098
(32)【優先日】2020-08-13
(33)【優先権主張国・地域又は機関】US
【早期審査対象出願】
(73)【特許権者】
【識別番号】522096695
【氏名又は名称】レッドパイン シグナルズ インコーポレイティド
(74)【代理人】
【識別番号】100099759
【弁理士】
【氏名又は名称】青木 篤
(74)【代理人】
【識別番号】100123582
【弁理士】
【氏名又は名称】三橋 真二
(74)【代理人】
【識別番号】100092624
【弁理士】
【氏名又は名称】鶴田 準一
(74)【代理人】
【識別番号】100114018
【弁理士】
【氏名又は名称】南山 知広
(74)【代理人】
【識別番号】100153729
【弁理士】
【氏名又は名称】森本 有一
(72)【発明者】
【氏名】スッバ レディ カラム
(72)【発明者】
【氏名】パーサ サラシー ムラリ
(72)【発明者】
【氏名】ベンカタ シバ プラサド プラガム
(72)【発明者】
【氏名】アヌシャ ビヤニ
(72)【発明者】
【氏名】ベンカテシュ バンジャムリ
(72)【発明者】
【氏名】シャハブディン モハメッド
(72)【発明者】
【氏名】ラフル クマー グラム
(72)【発明者】
【氏名】アクヒル ソニ
【審査官】後藤 彰
(56)【参考文献】
【文献】国際公開第2009/028106(WO,A1)
【文献】特表2010-514017(JP,A)
【文献】特開2001-025053(JP,A)
【文献】特開2000-293433(JP,A)
【文献】米国特許出願公開第2016/0300064(US,A1)
【文献】米国特許出願公開第2010/0146256(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/00 - 12/06
(57)【特許請求の範囲】
【請求項1】
中央処理装置(CPU)と、
ブートコード、固定コード、およびポータブルコードセグメントを含むフラッシュ読み取り専用メモリ(ROM)と、
一時的RAMメモリ用に割り当てられた領域、呼び出し可能関数用に割り当てられた領域、関数ポインタテーブル、および省電力コードを備えたランダムアクセスメモリ(RAM)と、を備え、
前記RAM領域は、フラッシュROMポータブルコードセグメントからコピーされた少なくとも1つの関数を持つ呼び出し可能関数に割り当てられ、
前記関数ポインタテーブルは、前記フラッシュROMポータブルコードセグメント、または呼び出し可能関数に割り当てられた前記RAM領域であって前記フラッシュROMポータブルコードセグメントからコピーされた少なくとも1つの関数を有する前記RAM領域のいずれかへのポインタを含み、
前記省電力コードは、割り当て比率を形成するために、呼び出し可能関数に割り当てられた前記RAM領域のサイズの合計RAMサイズに対する比率を定期的に調べるように前記CPUに指示し、
前記割り当て比率が第1のしきい値を超えている場合には、
フラッシュROMポータブルコードセグメントからコピーされた少なくとも1つのRAM領域呼び出し可能関数を識別し、
前記識別されたフラッシュROMポータブルコードセグメントをポイントするように、前記関数ポインタテーブル内の関連するポインタを更新し、
前記少なくとも1つのRAM領域呼び出し可能関数によって使用されている対応するRAM領域の割り当てを解除し、前記割り当て解除された対応するRAM領域を前記一時的RAMメモリに割り当て、
前記割り当て比率が第2のしきい値を下回っている場合には、
一時的RAMメモリのセグメントの割り当てを解除し、
一時的RAMメモリの前記割り当て解除されたセグメントをRAM呼び出し可能関数メモリの領域に割り当て、
少なくとも1つのポータブルコードセグメントを前記フラッシュROMから前記RAMの前記呼び出し可能関数領域にコピーし、
前記フラッシュROMから前記RAMの前記呼び出し可能関数領域にコピーされた前記ポータブルコードセグメントへ呼び出しが向くように、前記関数ポインタテーブル内のポインタを更新する、省電力プロセッサ。
【請求項2】
前記第1のしきい値が40%から60%の範囲内である、請求項1に記載の省電力プロセッサ
【請求項3】
前記第2のしきい値が20%から50%の範囲内である、請求項1に記載の省電力プロセッサ
【請求項4】
前記第1のしきい値または前記第2のしきい値が定期的に更新される、請求項1に記載の省電力プロセッサ
【請求項5】
ポータブルコードモジュールを含むフラッシュ読み取り専用メモリ(ROM)に結合された中央処理装置(CPU)で動作する方法であって、前記CPUはランダムアクセスメモリ(RAM)にも結合されており、
前記CPUは、フラッシュROMの領域からコードを実行し、実行可能な省電力コードをフラッシュROMの領域からRAMの領域にコピーし、その後、前記CPUは前記省電力コードをRAMの前記領域から実行し、
前記CPUは、ポータブルコードモジュールをフラッシュROMの領域からRAMの領域にコピーし、
前記CPUは、各ポータブルコードモジュールをフラッシュROMの領域から実行するかRAMの領域から実行するかを示すRAMの領域内のポインタを初期化し、
前記CPUは、受信パケットと送信パケットのために、一時的RAMメモリを前記RAM内に割り当て、
前記CPUは、RAMサイズ全体に対する使用中の前記一時的RAMメモリのサイズの比率を定期的に調べ、
前記比率が第1のしきい値より大きい場合には、
ポータブルコードモジュールに使用される前記RAMの領域の割り当てを解除し、前記フラッシュROM内の対応するポータブルコードモジュールをポイントするように関連するポインタを更新し、前記割り当て解除されたポータブルコードモジュールに使用されたRAMの領域を一時的RAMメモリに割り当て、
前記比率が第2のしきい値未満の場合には、
ポータブルコードモジュールにRAMの領域を割り当て、ポータブルコードモジュールをRAMの前記割り当てられた領域にコピーし、RAMの前記割り当てられた領域内の対応するポータブルコードモジュールをポイントするように前記ポインタを更新する、方法。
【請求項6】
前記第1のしきい値が40%から60%の範囲内である、請求項5に記載の方法。
【請求項7】
前記第2のしきい値が20%から40%の範囲内である、請求項5に記載の方法。
【請求項8】
前記第2のしきい値が前記第1のしきい値よりも小さい、請求項5に記載の方法。
【請求項9】
前記RAMの領域が特別プールを含む、請求項5に記載の方法。
【請求項10】
前記特別プールが、制御パケットのためのパケットメモリ、またはUser Datagram Protocol(UDP)パケットとして使用される、請求項9に記載の方法。
【請求項11】
ランダムアクセスメモリ(RAM)と、
フラッシュ読み取り専用メモリ(ROM)と、
前記RAMおよび前記フラッシュROMに結合された中央処理装置(CPU)であって、CPUチップROMを有するCPUと、を備え、
前記フラッシュROMは、
エントリポイントアドレスを持つ実行可能なポータブルコードモジュールと、
実行可能な固定コードモジュールと、
省電力コードを含むブートコードと、を含み、
前記RAMは、省電力コード領域、呼び出し可能ポータブルコードモジュール領域、関数ポインタテーブル領域、および一時的RAMメモリ領域を有し、
前記CPUは、前記CPUチップROMからブートコードを実行し、前記フラッシュROMから前記RAM内の前記省電力コード領域に省電力コードをコピーするように動作し、
前記CPUは、前記RAM内のスペースを前記一時的RAMメモリ領域に割り当て、前記CPUは、前記フラッシュROMから前記RAMの前記呼び出し可能ポータブルコードモジュール領域にポータブルコードモジュールセグメントをコピーし、前記CPUは、前記フラッシュROM内のポータブルコードモジュールセグメントまたは前記RAMのポータブルコードモジュール領域内の対応するポータブルコードモジュールセグメントのいずれかにポイントするために前記関数ポインタテーブル領域を初期化するように動作し、
前記CPUは、RAMから前記省電力コードを実行するように動作し、
前記CPUは、前記関数ポインタテーブル内の対応するポインタに示されるよう、前記フラッシュROMまたは前記RAMの少なくとも1つから実行された前記ポータブルコードモジュールを実行するように動作し、
前記CPUは、省電力コードによって使用される一時的RAMメモリのサイズに、呼び出し可能ポータブルコードのサイズと、関数ポインタテーブルのサイズと、一時的RAMメモリのサイズとを加えたサイズを、RAMサイズ全体で除算した比率に基づいて、定期的に使用率を計算するように動作し、
前記CPUは、RAMから一時的RAMメモリの割り当てを解除し、前記割り当て解除された一時的RAMの少なくとも一部を前記RAM内のポータブルコードモジュールに割り当て、前記対応するポータブルコードモジュールを前記フラッシュROMから前記RAMにコピーし、前記使用率が第1のしきい値を下回ったときに、前記RAM内の前記対応するポータブルコードモジュールをポイントするように前記関数ポインタテーブルを更新するように動作する、システム。
【請求項12】
前記CPUは、前記関数ポインタテーブルを、前記フラッシュROM内の前記ポータブルコードモジュールを参照するように変更し、関連するポータブルコードモジュールを前記RAMから割り当て解除し、前記使用率が第2のしきい値を超えたときに、前記関連するポータブルコードモジュールメモリを前記一時的RAMメモリ領域に割り当てるように動作する、請求項11に記載のシステム。
【請求項13】
前記第1のしきい値が40%から60%の範囲内である、請求項11に記載のシステム
【請求項14】
前記第2のしきい値が20%から50%の範囲内である、請求項12に記載のシステム
【請求項15】
前記CPUは、前記一時的RAMメモリを前記RAMから割り当て解除し、前記割り当て解除された一時的RAMメモリスペースの少なくとも一部を前記RAM内の前記ポータブルコードモジュールに割り当て、前記対応するポータブルコードモジュールを前記フラッシュROMから前記RAMにコピーし、前記使用率が第1のしきい値を下回った場合は、前記関数ポインタテーブル内のポインタが前記RAM内の対応するポータブルコードモジュールをポイントするようにアップデートし、
前記CPUは、関数ポインタテーブル内のポインタを、前記フラッシュROM内のポータブルコードモジュールを参照するように変更し、前記関連するポータブルコードモジュールを前記RAMから割り当て解除し、前記使用率が第2のしきい値を超えた場合は、前記関連するポータブルコードモジュールメモリを前記一時的RAMメモリに割り当て、
前記第1のしきい値が前記第2のしきい値よりも大きい、請求項11に記載のシステム
【請求項16】
ポータブルコードモジュールセグメント、固定実行可能コード、およびブートコードを含むように編成されたフラッシュメモリと、
前記フラッシュメモリ内の前記ポータブルコードモジュールセグメントまたは前記RAM内の対応するコードモジュールセグメントへのポインタエントリと共に関数ポインタテーブルを含むランダムアクセスメモリ(RAM)と、
中央処理装置(CPU)が実行可能コード命令を実行して、前記RAMから実行される実行可能コードのサイズのRAMサイズ全体に対する比率を測定することに基づいてコード使用率を決定するポインタ割り当てコントローラであって、現時点で前記フラッシュメモリから実行されている前記RAMから実行するための第1のポータブルコードモジュールと、現時点で前記RAMから実行されている前記フラッシュメモリから実行するための第2のポータブルコードモジュールとを識別するポインタ割り当てコントローラと、
前記ポインタ割り当てコントローラは、前記第2のポータブルコードモジュールに関連付けられた関数ポインタテーブルエントリを、前記関連付けられたフラッシュメモリポータブルコードモジュールをポイントするように変更し、前記第1のポータブルコードモジュールを前記フラッシュメモリから前記RAMの前記セグメントにコピーし、前記コード使用率がしきい値を下回った場合は、前記第1のポータブルコードモジュールに関連付けられた前記関数ポインタテーブルを前記RAMの関連セグメントをポイントするように変更する、
実行可能コード命令の動的割り当てのための装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、2019年9月11日に出願された米国仮特許出願62/899084号の優先権を主張するものである。
【0002】
本発明は、概して、通信システムにおける電力消費を低減するための方法に関する。特に、本発明は、電力消費を最小化するためのランダムアクセスメモリ(RAM)内およびフラッシュメモリ内のデータの管理に関する。
【背景技術】
【0003】
マイクロコントローラやマイクロプロセッサには通常、一時データと実行可能命令を格納するためのランダムアクセスメモリ(RAM)が設けられる。現在の低電力またはバッテリ駆動のモノのインターネット(IоT)と、中央処理装置(CPU)を備えた組み込みシステムでは、最適な電力消費とより高いスループット性能との間にトレードオフが存在する。最適な電力消費とネットワークスループットを備えたCPUの場合、RAMメモリには、送信および受信パケットキューのためのパケットバッファや、省電力の実行可能コードおよびデータメモリなど、動的または一時的なサイズ要件を持つデータ構造が含まれている必要がある。組み込みシステムオンチップ(SOC)環境では、消費電力を削減するために、RAMは、上記の格納要件を満たす最小サイズになるように意図的に選択される。マイクロコントローラまたはマイクロプロセッサの消費電力は、RAMのシステムによる要求もしくは使用が少なくなると減少するため、通信アプリケーションのためのネットワークスループットなど、一時的RAMメモリの格納要件を必要とするタスクの性能を落とすことなく、消費電力をさらに削減することが望まれる。本発明の別の例では、フラッシュメモリまたはRAMのいずれかからコードを実行する際の柔軟性を提供することが望まれるので、ソフトウェアプロセスの性能は、プロセッサ命令の実行のためのフラッシュ対RAMの動的割り当てによる電力消費の削減または性能の向上のために最適化される。さらに、RAMの使用に関連する消費電力を削減または最小化することが望まれる。
【0004】
本発明の第1の目的は、RAMに記憶されたデータの一時的な要件を有するシステムにおける電力消費を低減するための装置であり、当該装置は、ポータブルコードモジュールセグメント、固定実行可能コード、およびブートコードを含むように編成されたフラッシュメモリを有する装置である。
【0005】
本発明の第2の目的は、データがRAMに格納される際の電力消費を低減するためのチップ上のプロセッサシステム(SOC)のための方法であり、内部RAMと外部フラッシュROMに結合された中央処理装置(CPU)を有するSOC上で動作する方法であって、
フラッシュメモリ内の実行可能コードを、ポータブルコードモジュールセグメント、固定コード、およびブートコードの少なくとも1つとして配置し、
前記CPUは、起動時に、省電力コードをRAMに配置するチップROMからブートコードを実行し、RAM内の関数ポインタテーブルを初期化して、特定のポータブルコードモジュールセグメントをフラッシュROMの場所から実行するかRAMの場所から実行するかを表示し、前記省電力コードは、現在の一時的RAMメモリの使用率(パケットバッファ使用率など)を合計RAMサイズで割った使用率を定期的に決定することで、
前記使用率がしきい値を超えた場合、フラッシュROM内の対応するポータブルコードモジュールをポイントするように関数ポインタテーブルエントリを更新し、その後、RAMからポータブルコードモジュールセグメントの割り当てを解除し、それらの割り当て解除されたセグメントをパケットバッファなどの一時的RAMに割り当て、
前記使用率がしきい値を下回った場合、ポータブルコードモジュールセグメントをRAMに移動し、関数ポインタテーブルを更新して、RAMからポータブルコードモジュールセグメントを実行する、方法である。
【0006】
本発明の第3の目的は、実行可能コード命令の動的割り当てのための装置であって、
ポータブルコードモジュールセグメント、固定実行可能コード、およびブートコードを含むように編成されたフラッシュメモリと、
フラッシュメモリ内の前記コードモジュールセグメントまたはRAM内の対応するコードモジュールセグメントへのポインタエントリを含む関数ポインタテーブルを含むランダムアクセスメモリ(RAM)と、
現時点でフラッシュメモリから実行されている第1のポータブルコードモジュールをRAMから実行するために識別し、現時点でRAMから実行されている第2目のポータブルコードモジュールをフラッシュから実行するために認識するコード使用率を、CPU実行に基づいて決定するためのポインタ割り当てコントローラと、を備え、
前記ポインタ割り当てコントローラは、前記第2のポータブルコードモジュールに関連付けられた関数ポインタテーブルエントリを、前記関連付けられたフラッシュメモリポータブルコードモジュールをポイントするように変更し、前記第1のポータブルコードモジュールをフラッシュメモリからRAMのセグメントにコピーし、前記第1のポータブルコードモジュールに関連付けられた前記関数ポインタテーブルを、RAMの前記関連セグメントをポイントするように変更する、装置である。
【0007】
本発明の第4の目的は、実行可能コード命令の動的割り当てのための装置であって、
ポータブルコードモジュールセグメント、固定実行可能コード、およびブートコードを含むように編成されたフラッシュメモリと、
フラッシュメモリ内の前記コードモジュールセグメントまたはRAM内の対応するコードモジュールセグメントへのポインタエントリを含む関数ポインタテーブルを含むランダムアクセスメモリ(RAM)と、
現時点でRAMから実行されているポータブルコードモジュールをフラッシュから実行するために認識するコード使用率を、CPU実行に基づいて決定するためのポインタ割り当てプロセスと、
前記ポータブルコードモジュールに関連付けられた関数ポインタテーブルエントリを、前記関連付けられたフラッシュメモリポータブルコードモジュールをポイントするように変更するポインタ割り当てプロセスと、を備えた装置である。
【発明の概要】
【0008】
ランダムアクセスメモリ(RAM)とフラッシュ読み取り専用メモリ(ROM)を備え、消費電力を削減するシステムであって、
RAMおよびフラッシュROMに結合されたCPUを有し、
前記フラッシュROMは、
エントリポイントアドレスを持つポータブルコードモジュールと、
固定コードモジュールと、
省電力コードを含むブートコードと、をそれぞれ備え、
前記RAMは、
省電力コード領域と、
呼び出し可能なポータブルコードモジュール領域と、
関数ポインタテーブル領域と、
パケットバッファなどの一時的RAMメモリ領域と、を備え、
電源投入の初期化時に、前記CPUはチップROMからブートコードを実行し、前記フラッシュメモリから前記RAM省電力コード領域に省電力コードをコピーし、その後、RAM内のスペースを前記一時的RAMメモリ領域に割り当て、ポータブルコードモジュールセグメントをフラッシュROMから前記RAM呼び出し可能ポータブルコードモジュール領域にコピーし、フラッシュROM内のポータブルコードモジュールセグメントまたはRAM内のポータブルコードモジュールセグメントのいずれかをポイントするように前記関数ポインタテーブル領域を初期化し、その後、前記関数ポインタテーブルに従って、フラッシュROMまたはRAMにより実行されたポータブルコードモジュールを用いて、前記省電力コードを好ましくはRAMから実行する。前記省電力コードは、RAM全体に対する使用中の一時的RAMメモリのサイズの使用率を定期的に形成する。前記使用率が50%などのしきい値を下回ると、前記省電力コードは一時的RAMメモリをRAMから割り当て解除し、この一時的RAMメモリをRAM内のポータブルコードモジュールに割り当て、対応するポータブルコードモジュールをROMからRAMにコピーし、RAM内の前記対応するポータブルコードモジュールをポイントするように前記関数ポインタテーブルを更新する。前記使用率が50%などのしきい値を超えると、前記省電力コードは前記関数ポインタテーブルを、フラッシュROM内のポータブルコードモジュールを参照するように変更し、前記関連するポータブルコードモジュールをRAMから割り当て解除して、この関連するポータブルコードモジュールを一時的RAMメモリの一部として割り当てる。
【0009】
本発明の他の実施形態は、ランダムアクセスメモリ(RAM)とフラッシュ読み取り専用メモリ(ROM)を備え、消費電力を削減するシステムであって、
RAMおよびフラッシュROMに結合されたCPUを有し、
前記フラッシュROMは、
エントリポイントアドレスを持つポータブルコードモジュールと、
固定コードモジュールと、
省電力コードを含むブートコードと、をそれぞれ備え、
前記RAMは、
省電力コード領域と、
呼び出し可能なポータブルコードモジュール領域と、
関数ポインタテーブル領域と、
パケットバッファなどの一時的RAMメモリ領域と、を備え、
電源投入の初期化時に、前記CPUはチップROMからブートコードを実行し、前記フラッシュメモリから前記RAM省電力コード領域に省電力コードをコピーし、RAMから実行されるコード最適化プロセスを開始し、これにより、フラッシュROMから実行されるポータブルコードモジュールが、関連するしきい値よりも頻繁に呼び出されることが検出されると、前記ポータブルコードモジュールはRAMのポータブルコード領域にコピーされ、RAMの前記ファンクションポインタテーブル領域は、前記ポータブルコードモジュールの関連付けられたエントリポイントで更新され、RAMから実行されるポータブルコードモジュールが関連付けられたしきい値よりも少ない頻度で呼び出されたことが検出されると、RAMのファンクションポインタテーブル領域が更新され、フラッシュROM内の前記対応するポータブルコードモジュールをポイントする、システムである。
【図面の簡単な説明】
【0010】
図1図1は、外部フラッシュメモリを備えたプロセッサSOCを示すブロック線図である。
図2A-2C】図2Aは、フラッシュメモリの割り当ての一例を示す図である。図2Bは、小さい数のパケットバッファを使用したランダムアクセスメモリの一例を示す図である。図2Cは、大きな数のパケットバッファを使用したランダムアクセスメモリの一例を示す図である。
図3図3は、本発明の動作を示すフローチャートである。
【発明を実施するための形態】
【0011】
図1は、本発明のプロセスのブロック図を示し、図2Aは、フラッシュメモリ120およびランダムアクセスメモリ108の例示的な空間割り当てを示している。本発明は、実行される関数がフラッシュROMまたはRAMのどちらにあるかを示す関数ポインタテーブルを使用して、システムRAMとフラッシュROMとの間で実行可能な関数を動的に割り当てるためのシステムおよび方法を提供する。本発明の実施例では、概して、一時的RAMメモリへのRAMの割り当てが説明される。一時的RAMメモリの具体例としては、送信バッファと受信バッファを維持するネットワークデバイスのパケットバッファメモリが含まれ、これらは、受信バッファデータの読取り時と処理時には受信バッファでは不要であり、送信バッファのデータは、送信されたデータが確認され、再送信の必要がなくなった後は不要である。一時的RAMメモリは、メモリの割り当てと割り当て解除に使用されるものであってもよく、例えば、Cプログラミング言語では「malloc()」や「free()」であり、もしくはC++、C♯、Java(登録商標)などのオブジェクト指向プログラミング言語では「new」や「delete」である。ネットワークアプリケーションのための関数ポインタテーブルと一時的RAMメモリの割り当ては、アクティブに使用されているパケットバッファメモリが占めるRAMの割合など、ネットワークスタック/アプリケーションメトリックに基づいて動的に実行されるものであってもよい。このようにして、RAM108は、以下に示す使用率の関係に基づいて動的に共有される。
【0012】
1)RAM230は一時的RAMメモリ(パケットバッファ228として示す)に使用され、パケットバッファはTCP送信バッファおよびTCP受信バッファなどの長い永続バッファを含み、送信バッファは受信ピアによる送信パケットの確認待ちに保持され、受信バッファは全ての順序どおりのパケットが送信ピアから受信されるまで保持される。UDP送信バッファおよびUDP受信バッファ(関連付けられたピアによって確認されない)などの短い永続性バッファ、または即座に処理され得る制御フレームバッファは、短期間の永続性のために「特別なプール」の一部であってもよい。
【0013】
2)他の全てのRAM使用率は、省電力(動作)コードおよびデータ220に必要なRAM230、フラッシュメモリ202からコピーされた呼び出し可能関数224、および省電力コード220によって呼び出された特定の関数を呼び出し可能関数224領域もしくはポータブルコードモジュール202領域から実行する必要があるかどうかを示す関数ポインタテーブル226を含む。
【0014】
一般的な適用としては、一時的RAMメモリパケットバッファメモリなどの一時的RAMメモリ要件の増加によって、一時的RAMメモリへのRAM割り当てが増加し、この場合、パケットストレージ要件は、バーストで発生するネットワークトラフィックの性質と、ネットワークの状態によって決定される。例えば、一時的RAMメモリ送信バッファは、格納されている関連パケットが受信ステーションまたはアクセスポイント(AP)によって受信されたことが確認されるまで、割り当てが解除されない場合がある。一時的RAMメモリネットワークトラフィックの受信バッファは、ブロック確認応答のすべてのパケットが受信されるまで割り当て解除されないものであってもよく、または、受信バッファがTCP/IPトラフィックに使用される場合、受信パケットは、順序どおりのパケットが送信されバッファが解放されるまで保持される。トラフィックのバーストが大きい場合、または送信パケットバッファもしくは受信パケットバッファの要件が増加した場合は、パケットバッファのRAM要件を増やす必要がある。逆に、ネットワークが穏やかな場合、RAM要件は、フラッシュROMからコピーされたポータブルコードモジュールセグメント間のRAMの割り当てを管理する「省電力コード220」として示された運用コードを格納するために必要な最小値に低下する。さらに、処理および転送のスループットの高いトラフィックがある場合、CPUは省電力モードに入る機会が少なくなる。
【0015】
省電力装置と方法の一例を図1に示す。プロセッサシステムオンチップ(SOC)100は、例えばシリアルペリフェラルインタフェース(SPI)バスによってフラッシュ読み取り専用メモリ(ROM)120に接続するインタフェース118と、ホストインタフェース112を動作可能とするインタフェース110とを含むものであってもよく、これらは共にCPU106に接続される。CPU106は、RAM108に結合され、オプションで、起動のための基本的な命令を含むチップブートロム104、ならびにCPUレジスタ102にも結合される。他の関数は、通常、プロセッサ100内に存在し、これらは例示の目的でのみ示される。省電力方法は次のように動作する。
【0016】
1)起動および初期化時に、デバイスは、基本インタフェース110および118の初期化を実行するチップブートロム104から起動され、RAM108にコピーされたフラッシュROM120のブートコードセクションから起動コードを検索し、その後、CPUは、省電力コードをRAMから直接実行する。フラッシュROM120の構成は図2Aの208に示され、RAM108の構成は初期化後または軽度のワイヤレストラフィック中については図2Bの230に示され、また、一時的RAMメモリの要求時、すなわち、追加のパケットバッファの割り当て、フラッシュROM120から直接実行するためのポータブルコードモジュールの割り当て解除、またはその他の一時的RAMメモリ要件を必要とする重度のワイヤレストラフィック中については図2Cに示されている。ブートコード206は、通常はRAM230/231のセグメント220に最初にコピーされて、その後実行される省電力コードを含むものであってもよく、省電力コードは、RAM224にコピーされたフラッシュROM120の関連するポータブルコードモジュール202へのポインタを含むように初期化される関数ポインタテーブル226にそれぞれ向けられた様々な関数への呼び出しを含む。あるいは、省電力コードはフラッシュROM120から実行され、RAM108またはフラッシュROM120のいずれかに配置されたポータブルコードモジュールのために関数ポインタテーブル226を使用するものであってもよい。まず、図2Bに示されるように、パケットバッファ228の使用率が非常に小さいときは、パケットバッファ228のサイズは非常に小さいものであってもよく、未使用のスペースは、図2Bのポータブルコードモジュール224としてRAMにコピーされたポータブルコードモジュール202で満たされるものであってもよく、関数ポインタテーブル226は、省電力コードからの関数呼び出しを、RAM108にコピーされたポータブルコードモジュール224に向けるように更新される。このようにして、RAM108から実行されるポータブルコードモジュールは、フラッシュROM120から実行される場合よりもはるかに速く実行され、それにより、より高い性能を提供する。パケットバッファが着信受信パケットとして割り当てられ、発信送信パケットがパケットバッファ領域228に格納される一時的RAMメモリ要件の場合、RAMパケットバッファ割り当てサイズ228は、図2Cに示されるように増大し、以前にRAM108から実行されたポータブルコードモジュール224は、パケットバッファ228の使用のために割り当て解除および再割り当てされ、関数ポインタテーブル226は、パケットバッファ228に必要なRAMの割合に基づいて、関連するフラッシュメモリ208ポータブルコードモジュール関数をポイントするように書き直されたポータブルコードモジュールへの参照をポイントする。
【0017】
省電力コード220は、利用可能な割り当て可能なRAM236と比較したパケットバッファ228の使用率と割り当てを監視し、割り当て可能なRAM236に対するパケットバッファ228の使用率などの一時的RAMメモリの需要の比率が、ネットワークスループットのために、RAM使用率の50%などの第1のしきい値を超えた場合、1つまたは複数のポータブルコードモジュールセグメントがRAMから割り当て解除されることによってRAM呼び出し可能関数スペース224が段階的に減少し、対応するコードセグメントそれぞれの関数ポインタテーブル226エントリが、割り当て解除前にフラッシュROM208をポイントするように更新されるため、コードの実行が中断されない。割り当て解除は、まず関数ポインタテーブル226に更新された関数ポインタを書き込み、次にRAMからの不完全なコード実行が完了するまで一定時間待機するか、もしくは関連するルーチンに読み取り可能フラグを設定させることによって実行を開始し、またフラグをクリアして実行完了する。その後、割り当て解除されたポータブルコードモジュールによって以前に使用されたRAMは、パケットバッファ228のサイズを増加させるために再割り当てされる。
【0018】
逆に、利用可能な割り当て可能な合計RAM236に対するRAMパケットバッファ割り当て228の比率が40%などの第2のしきい値を下回り、未使用のパケットバッファRAMが再割り当てに利用可能である場合、ポータブルコードモジュールセグメント202はROM202からコピーされ、RAM224の割り当て解除されたパケットバッファ領域に書き込まれ、それぞれの関連するポータブルコードモジュール呼び出しの関数ポインタテーブル226エントリは、フラッシュメモリ208のアドレスから関連する呼び出し可能関数224のRAM230のアドレスへのポータブルコードモジュールへの呼び出しをポイントするように更新される。省電力コード220は、最適には連続したコードブロックであるが、フラッシュROM202からコピーされたポータブルコードモジュールセグメントはサイズが小さく、また各ポータブルコードセグメントは、関数ポインタテーブル226に独自のポインタを持っているため、他のポータブルコードモジュールセグメントからRAMの非連続位置に配置できる。
【0019】
本発明の一例では、呼び出し可能関数224は、図2に示されるように、パケットバッファ228とは別の1ブロックのRAMであるが、本発明の別の例では、パケットバッファ228は、隣接するRAM空間にあるか、または呼び出し可能な関数224によって割り当てられた空間と結合した連結リストを備える。この例では、パケットバッファのサイズは、連結リストの記述子(それぞれが始点ノード、次ノード、およびサイズを備えていてもよい)によって決定され、呼び出し可能な関数の割り当て領域は、関数ポインタテーブル226の一部であるか、または関数ポインタテーブル226とは別であってもよい個別の割り当てテーブルに保持されるものであってもよい。
【0020】
本発明の一例では、RAM割り当ての方法は、図3に概説される一連のステップとして動作し、パケットバッファの例として示されているが、実行可能コード用もしくは動的データ用である一時的RAMメモリ要件を有する他のアプリケーションに一般化されるものであってもよい。ステップ302で、CPUはチップブートロム120から起動し、省電力コードをフラッシュROM120からRAM108にコピーし、RAM108の関数ポインタテーブル226を初期化し、RAM108から省電力コード220を実行する。ステップ302におけるRAM内の一時的RAMメモリプール228(パケットバッファプール228など)およびポータブルコードモジュール224のためのRAMの初期割り当ては、それぞれ、70%および30%のオーダーとなり得る。
【0021】
ステップ303において、新しい受信パケットが到着したとき、または送信される新しいパケットが作成されたときなど、新しく増加した一時的RAMメモリが必要になると、パケットバッファ割り当て要求は追加のパケットバッファサイズ228を作成し、逆に、送信パケットが送信されて確認され、または受信されたパケットが処理のために削除されると、パケットバッファの割り当てが解除される。
【0022】
ステップ304は、合計RAMに対するパケットバッファの比率が60%などの第1のしきい値を超えているかどうかを決定するためにテストし、もし超えていた場合、ステップ306が実行され、関数ポインタテーブル226が更新されて、関連するポータブルコードモジュールセグメントをフラッシュメモリ202内のコードセグメントコードに向け、関連する呼び出し可能関数のためのRAM224は割り当て解除され、解放された前記RAMはパケットバッファRAM228に割り当てられる。本発明の代替の実施形態では、一時的RAMメモリ割り当て要求が、制御パケット、管理パケット、またはUDPパケットのためにパケットメモリによって使用される場合、制御パケット、管理パケット、およびUDPパケットには、確認や保存の必要がなく、省電力コードの処理に渡されるだけであるため、永続メモリ要件が短いことから、必要な一時的RAMメモリパケットバッファRAMは、特別な一時的RAM領域(図示されないが、230の一部)から割り当てられる。パケットバッファメモリ割り当て要求などの一時的RAMメモリ割り当てがTCPデータパケットに対するものである場合、メモリ割り当てはパケットバッファメモリプール228からとなり、本発明の代替の実施形態では、追加の一時的RAMメモリパケットバッファRAM228が利用できない場合、パケットバッファ要求は、RAM108の特別なメモリプール(図示せず)から割り当てられるものであってもよい。追加の一時的RAMメモリパケットバッファRAM228の割り当てと、RAMから実行可能なポータブルコードモジュールRAM224の減少は、図2Bの230から図2Cの231への移行として示される。
【0023】
ステップ308は、利用可能な割り当て可能なRAM236の合計に対する一時的RAMメモリ228またはパケットバッファ228のサイズの比率が50%などの第2のしきい値を下回るかどうかをテストし、その場合、省電力コードは、ポータブルコードモジュールセグメント202をフラッシュROM208からRAM内の呼び出し可能な関数224に段階的にコピーし、関数ポインタテーブル226を更新して、これらの関数への呼び出しが関連するRAMの場所から実行されるようにする。ステップ310は、図2Cから図2Bへのメモリ割り当ての変化を示す。一時的RAMメモリパケットバッファの割り当て解除とポータブル呼び出し可能関数としての再割り当て、およびROMからRAMへの関数のコピーが完了した後、関数ポインタテーブル226が更新される。
【0024】
ステップ310の後、ステップ303の割り当ておよび割り当て解除がステップ306および310で以前に実行され完了した場合は、プロセスは、それぞれの反復により任意の遅れを伴いながら、ステップ303、またはステップ304を繰り返す。このようにして、RAM108のサイズは、パケットバッファと関数ポインタテーブルおよび省電力コードをサポートするために必要な最小値に縮小されるものとなり、それにより、静的RAM割り当てを維持するか、またはROMもしくはフラッシュから排他的にコードモジュールを実行するといった従来技術の方法よりも電力を節約するものとなる。
【0025】
提示された例は例示的なものであり、本発明の範囲を限定することを意図するものではないことを理解されたい。第1および第2のしきい値は、xの桁によって変化する可能性があり、その結果、しきい値は、公称サイズxよりも桁違いに大きい(10倍)または小さい(10分の1)範囲内であってもよい。あるいは、しきい値は、与えられたおおよその公称サイズ、おおよそ4倍または4分の1の範囲であってもよい。本発明の一例では、第1のしきい値は40%から60%の範囲にあり、第2のしきい値は20%から40%の範囲にある。本発明の別の例では、第2のしきい値は第1のしきい値よりも小さい。
図1
図2A-2C】
図3