(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024069145
(43)【公開日】2024-05-21
(54)【発明の名称】設定可能なメモリシステムおよびそのメモリ管理方法
(51)【国際特許分類】
G06F 12/02 20060101AFI20240514BHJP
【FI】
G06F12/02 520B
【審査請求】有
【請求項の数】20
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2023173940
(22)【出願日】2023-10-05
(31)【優先権主張番号】17/984,189
(32)【優先日】2022-11-09
(33)【優先権主張国・地域又は機関】US
(71)【出願人】
【識別番号】514143840
【氏名又は名称】晶心科技股▲ふん▼有限公司
【氏名又は名称原語表記】ANDES TECHNOLOGY CORPORATION
(74)【代理人】
【識別番号】100204490
【弁理士】
【氏名又は名称】三上 葉子
(72)【発明者】
【氏名】沈 智明
(72)【発明者】
【氏名】黄 正顏
【テーマコード(参考)】
5B160
【Fターム(参考)】
5B160AA12
5B160AA17
(57)【要約】 (修正有)
【課題】設定可能なメモリシステムおよびメモリ管理方法を提供する。
【解決手段】設定可能なメモリシステム100は、インターフェース層104、オーバーレイアプリケーション層106およびメモリ再配置可能層108を含む。インターフェース層は、メモリ属性およびメモリセキュリティを管理する。オーバーレイアプリケーション層は、オーバーレイ例外の発生をチェックする。メモリ再配置可能層は、第1メモリ空間内にある複数の常駐サービスプログラム、第2メモリ空間内にあるオーバーレイ物理領域および第3メモリ空間内にアプリケーションプロセスを有する複数のオーバーレイ仮想領域を有する。オーバーレイ仮想領域のうちの1つのアプリケーションプロセスは、インターフェース層の物理メモリ属性(PMA)モジュールによって実行されるように決定され、プロセッサ110によってオーバーレイ仮想領域からオーバーレイ物理領域にコピーされる。
【選択図】
図1
【特許請求の範囲】
【請求項1】
物理メモリ属性(PMA)モジュールおよび物理メモリ保護(PMP)モジュールを有し、複数のメモリ属性およびメモリセキュリティを管理するインターフェース層と、
前記インターフェース層に結合され、例外ハンドラープロセスを実行して、オーバーレイ例外が発生したかどうかをチェックするオーバーレイアプリケーション層と、
前記インターフェース層および前記オーバーレイアプリケーション層に結合され、第1メモリ空間内にある複数の常駐サービスプログラム、第2メモリ空間内にあるオーバーレイ物理領域、および第3メモリ空間内に対応するアプリケーションプロセスを有する複数のオーバーレイ仮想領域を有するメモリ再配置可能層と、
を含み、複数のオーバーレイ仮想領域のうちの1つの前記対応するアプリケーションプロセスが、前記PMAモジュールによって実行されるように決定され、プロセッサによって前記オーバーレイ仮想領域から前記オーバーレイ物理領域にコピーされる設定可能なメモリシステム。
【請求項2】
前記複数のオーバーレイ仮想領域の各前記アドレスを変換することが、オーバーレイ管理システムによって事前に設定された固定ハードワイヤ接続に基づいて決定される請求項1に記載のメモリシステム。
【請求項3】
前記複数のオーバーレイ仮想領域の各前記アドレスが、アドレスレジスタに保存されたアドレス情報に基づいて決定され、前記アドレス情報が、前記アプリケーションプロセスが実行中のときにオーバーレイ再配置プロセスによって調整される請求項1に記載のメモリシステム。
【請求項4】
前記第1メモリ空間のメモリサイズ、前記第2メモリ空間のメモリサイズ、および前記第3メモリ空間のメモリサイズが、オーバーレイ管理システムに基づいて決定される請求項1に記載のメモリシステム。
【請求項5】
前記第1メモリ空間のメモリサイズ、前記第2メモリ空間のメモリサイズ、および前記第3メモリ空間のメモリサイズが、対応するメモリサイズレジスタに保存された対応するメモリサイズ情報に基づいて決定され、前記メモリサイズ情報が、前記アプリケーションプロセスが実行中のときにオーバーレイ再配置プロセスによって調整される請求項1に記載のメモリシステム。
【請求項6】
前記メモリ再配置可能層の設定可能なメモリサイズが、2K+L*(オーバーレイサイズ)であり、前記設定可能なメモリサイズが、前記メモリ再配置可能層のアドレス可能なメモリサイズより小さいか、それに等しい請求項1に記載のメモリシステム。
【請求項7】
前記オーバーレイ物理領域および前記複数のオーバーレイ仮想領域を含むオーバーレイ空間の最大数が、(2K-1)*2L+1である請求項1に記載のメモリシステム。
【請求項8】
前記システムによって実際に使用されるオーバーレイ空間の数が、前記インターフェース層およびユーザーインターフェースを介して、前記オーバーレイアプリケーション層によって制御および決定される請求項7に記載のメモリシステム。
【請求項9】
前記複数の常駐サービスプロセスのサイズが、(2L-1)*(オーバーレイサイズ)である請求項1に記載のメモリシステム。
【請求項10】
前記システムによって実際に使用される前記オーバーレイサイズが、システム要件に応じて、前記PMAモジュール、前記PMPモジュール、または組み込み型PMPモジュールによってフレキシブルに制御される請求項9に記載のメモリシステム。
【請求項11】
オーバーレイ管理システムが、前記プロセッサのローカルメモリ空間、SRAM空間、およびメインメモリ空間において実施される請求項1に記載のメモリシステム。
【請求項12】
前記オーバーレイ物理領域が、命令メモリまたはデータメモリのいずれかに適用される請求項1に記載のメモリシステム。
【請求項13】
前記メモリシステムが、キャッシュの操作メカニズムに影響されず、前記メモリシステムが、独立して実施されるか、またはキャッシュとともに実施されるかのいずれかである請求項1に記載のメモリシステム。
【請求項14】
前記メモリシステムが、前記プロセッサの単一の特権モードまたは前記プロセッサの複数の特権モードを使用して、特権命令を実行する請求項1に記載のメモリシステム。
【請求項15】
前記インターフェース層が、RISC-V/ARMアーキテクチャの前記PMAモジュール、前記PMPモジュール、または組み込み型PMPモジュールの設定およびアドレスレジスタを使用し、前記インターフェース層が、RISC-V/ARMアーキテクチャのトラップおよび例外メカニズムを使用する請求項1に記載のメモリシステム。
【請求項16】
RISC-Vの前記PMAモジュールが、メモリタイプ属性(MTYP)を使用して、メモリ領域のキャッシュ可能性および冪等性を定義し、前記MTYPのタイプ15が、命令アクセスフォルト、ロードアクセスフォルト、およびストアアクセスフォルトを含む所定の命令セットによってオーバーレイスワッピングをトリガーするように設計されたエンプティーホールとして定義された請求項15に記載のメモリシステム。
【請求項17】
前記アプリケーション層が、前記例外ハンドラープロセスにおける前記オーバーレイ例外に関連する複数の管理アプリケーションプログラミングインターフェース(API)を実施する請求項1に記載のメモリシステム。
【請求項18】
前記例外ハンドラープロセスがオーバーレイスワッピングを実行するように決定したとき、前記プロセッサが、前記オーバーレイ仮想領域の前記アプリケーションプロセスを更新して、更新されたアプリケーションプロセスを前記オーバーレイ物理領域に移動するように前記メモリシステムのダイレクトメモリアクセス(DMA)コントローラを制御するか、または前記プロセッサが、前記オーバーレイ仮想領域の前記アプリケーションプロセスを直接更新して、更新されたアプリケーションプロセスを前記オーバーレイ物理領域に移動する請求項1に記載のメモリシステム。
【請求項19】
第1オーバーレイ領域を第2オーバーレイ領域に切り替える際に、インターフェース層に第1信号を提供し、前記インターフェース層が、物理メモリ属性(PMA)モジュールおよび物理メモリ保護(PMP)モジュールを含み、複数のメモリ属性およびメモリセキュリティを管理する責任があることと、
オーバーレイアプリケーション層にシフトすることと、
前記アプリケーション層の例外ハンドラープロセスを実行して、オーバーレイ例外が発生したかどうかをチェックすることと、
メモリ再配置可能層における前記第2オーバーレイ領域の第1アドレスを前記第2オーバーレイ領域の第2アドレスに変換することと、
プロセッサによって、前記メモリ再配置可能層の複数のオーバーレイ仮想領域のうちの1つから前記メモリ再配置可能層のオーバーレイ物理領域に前記第2オーバーレイ領域のアプリケーションプロセスをコピーすることと、
前記PMAモジュールによって前記第2オーバーレイ領域を実行するように決定することと、
を含み、前記オーバーレイ物理領域が、一度に1つのオーバーレイ仮想領域から前記アプリケーションプロセスを受け取るメモリ管理方法。
【請求項20】
前記第1アドレスを前記第2アドレスに変換することが、オーバーレイ管理システムによって事前に設定された固定ハードワイヤ接続に基づいて、またはアドレスレジスタに保存されたアドレス情報に基づいて決定され、前記アドレス情報が、前記アプリケーションプロセスが実行中のときにオーバーレイ再配置プロセスによって調整される請求項19に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、メモリシステムに関連するものであり、さらに、設定可能なメモリシステムおよびそのメモリ管理方法に関するものである。
【背景技術】
【0002】
近年、高性能なプロセッサを備えた電子機器が人々の生活に必要になっている。プロセッサの効率を向上させるためには、設定可能なメモリをプロセッサに用いる必要がある。
【0003】
プロセッサシステムにおいて、少量のデータに迅速にアクセスするために、従来技術のプロセッサは、ランダムアクセスメモリの大量のオーバーレイ領域(overlay region)を使用する。ランダムアクセスメモリのアイドリングオーバーレイ領域は、メモリ空間を無駄にするだけでなく、望ましくないメモリコストを発生させる。一方、不要なプログラムやプロセスをランダムアクセスメモリのオーバーレイ領域に保存することによって、メモリのアクセス速度を低下させることにもなる。
【0004】
プログラミング設計に対して柔軟性および利便性の性能優位性を提供し、電力およびメモリコストの消費が少ない設定可能なメモリシステムを備えたプロセッサが必要である。
【発明の概要】
【発明が解決しようとする課題】
【0005】
本発明は、プロセッサおよび設定可能なメモリシステムおよびメモリアドレスを再配置することによってメモリに柔軟性を与える方法に関するものである。
【0006】
高速スタティック・ランダム・アクセス・メモリ(static random-access memory, SRAM)は、多大なコストがかかるが、本発明の設定可能なメモリ方法を使用することによって、SRAMのオーバーレイ領域を1つだけ確保すればよい。プロセッサまたはメモリシステムが実行中のとき、選択されたオーバーレイ領域のコードは、例えば、エラーコードオーバーレイアプリケーション(error code overlay application)などのユーザーの要求に応じて、読み取り専用メモリ(read only memory, ROM)の複数のオーバーレイ領域からSRAMの対応するオーバーレイ領域にコピーすることができる。
【課題を解決するための手段】
【0007】
本発明は、インターフェース層、オーバーレイアプリケーション層、およびメモリ再配置可能層を含む設定可能なメモリシステムを提供する。インターフェース層は、物理メモリ属性(physical memory attribute, PMA)モジュールおよび物理メモリ保護(physical memory protection, PMP)モジュールを有する。インターフェース層は、メモリ属性およびメモリセキュリティを管理する。オーバーレイアプリケーション層は、インターフェース層に結合され、例外ハンドラープロセスを実行して、オーバーレイ例外(overlay exception)が発生したかどうかをチェックする。メモリ再配置可能層は、インターフェース層およびオーバーレイアプリケーション層に結合され、第1メモリ空間内にある複数の常駐サービスプログラム、第2メモリ空間内にあるオーバーレイ物理領域、および第3メモリ空間内にアプリケーションプロセスを有する複数のオーバーレイ仮想領域を有する。オーバーレイ仮想領域のうちの1つのアプリケーションプロセスは、PMAモジュールによって実行されるように決定され、プロセッサによってオーバーレイ仮想領域からオーバーレイ物理領域にコピーされる。
【0008】
本発明は、メモリ管理方法を提供する。メモリ管理方法は、第1オーバーレイ領域を第2オーバーレイ領域に切り替える際にインターフェース層に第1信号を提供することと、オーバーレイアプリケーション層にシフトすることと、アプリケーション層の例外ハンドラープロセスを実行して、オーバーレイ例外(overlay exception)が発生したかどうかをチェックすることと、メモリ再配置可能層における第2オーバーレイ領域の第1アドレスをメモリ再配置可能層における第2オーバーレイ領域の第2アドレスに変換することと、プロセッサによってメモリ再配置可能層の複数のオーバーレイ仮想領域の1つからメモリ再配置可能層のオーバーレイ物理領域に第2オーバーレイ領域のアプリケーションプロセスをコピーすることと、PMAモジュールによって第2オーバーレイ領域を実行するように決定することと、を含む。インターフェース層は、物理メモリ属性(PMA)モジュールおよび物理メモリ保護(PMP)モジュールを含む。インターフェース層は、複数のメモリ属性およびメモリセキュリティを管理する責任がある。オーバーレイ物理領域は、一度に1つのオーバーレイ仮想領域からアプリケーションプロセスを受け取る。
【発明の効果】
【0009】
以上のように、本発明は、メモリ空間設定に関するコードの書き込みにかかる多大な時間コストを削減するための設定可能なメモリシステムおよびメモリ管理方法を提供する。
【0010】
上記およびその他の特徴および本発明の利点を理解しやすくするために、以下、図面と併せたいくつかの実施形態について詳しく説明する。
【図面の簡単な説明】
【0011】
添付の図面は、本発明の原理をさらに理解するために含まれており、本明細書に組み込まれ、かつその一部を構成するものである。図面は、本発明の実施形態を例示しており、説明とともに、本発明の原理を説明する役割を果たしている。
【0012】
【
図1】本発明の1つの実施形態に係る設定可能なメモリシステムのブロック図を示したものである。
【
図2】本発明の1つの実施形態に係るメモリマッピング層の概略図を示したものである。
【
図3】本発明の1つの実施形態に係るメモリマッピング層の別の概略図を示したものである。
【
図4】本発明の1つの実施形態に係るPMA、例外ハンドラー、およびアドレス変換ハードウェアを用いたオーバーレイスワッピングプロセスの概略図を示したものである。
【
図5】本発明の実施形態に係る元のプログラムおよびメモリ管理方法によるプログラム削減の概略図を示したものである。
【
図6】本発明の実施形態に係る例外ハンドラーのプログラムの概略図を示したものである。
【
図7】本発明の1つの実施形態に係るメモリ管理方法のフローチャートを示したものである。
【発明を実施するための形態】
【0013】
以下の開示は、提供される主題の異なる特徴を実施するための多くの異なる実施形態または例を提供する。本発明を単純化するために、構成要素および配置の具体例を以下に記載する。これらはもちろん単なる例であり、限定することを意図しない。例えば、以下の説明における第1の特徴の上または第2の特徴の上への形成は、第1および第2の特徴が直接接触するように形成される実施形態を含み、また、第1と第2の特徴は直接接触せずに、追加の特徴が第1の特徴と第2の特徴との間に形成されるような実施形態も含み得る。さらに、本発明は、様々な例において参照番号および/または文字を繰り返すことがある。この繰り返しは、単純さと明瞭さの目的のためであって、それ自体は、議論された様々な実施形態間および/または構成間の関係を指示するものではない。
【0014】
さらに、「下に」、「下方に」、「下位に」、「上方に」、「上位に」などの空間的に相対的な用語は、図に示されるような1つの要素または特徴の別の要素または特徴に対する関係を記載するために、説明を容易にするためにここでは使用され得る。空間的に相対的な用語は、図に示されている方向に加えて、使用中または動作中の装置の異なる向きを包含することを意図している。装置は他の方向を向いていてもよく(90度または他の方向に回転される)、本明細書で使用される空間的に相対的な記述は、それに応じて同様に解釈され得る。特に明記されていない限り、「取り付けられた」、「固定された」、「接続された」、および「相互接続された」などの用語は、構造が介在する構造を介して直接または間接的に互いに固定されている、または取り付けられている関係を指し、また、移動可能な、または強固な取り付けまたは関係も指す。
【0015】
さらに、「第1」、「第2」、「第3」、「第4」などの用語は、図に示されるような1つの要素または特徴の別の要素または特徴に対する関係を記載するために、説明を容易にするためにここでは使用され、存在の順序または説明の文脈に応じて交互に使用してもよい。
【0016】
図1は、本発明の1つの実施形態に係る設定可能なメモリシステムのブロック図を示したものである。
【0017】
図1を参照すると、設定可能なメモリシステムは、データ層102、インターフェース層104、オーバーレイアプリケーション層106、メモリ再配置可能層(memory relocatable layer)108、およびプロセッサ110を含む。
【0018】
本発明のいくつかの実施形態に基づくと、データ層102は、複数のオーバーレイ領域(図示せず)を含み、各オーバーレイ領域は、対応するアプリケーションプロセスまたはプログラムを含む。いくつかの実施形態において、データ層102は、データベース、アプリケーションプログラムライブラリなどであってもよい。
【0019】
本発明のいくつかの実施形態に基づくと、例えば、インターフェース層104は、オーバーレイハードウェアソフトウェアインターフェース(hardware software interface, HSI)、プログラマーのビューインターフェース(programmers’ view interface)、またはユーザーインターフェースであってもよい。インターフェース層104は、物理メモリ属性(PMA)モジュールまたは物理メモリ保護(PMP)モジュールを含む。インターフェース層104は、メモリ属性およびメモリセキュリティを管理または制御することができる。いくつかの実施形態において、インターフェース層104は、物理メモリ管理を行う責任がある。いくつかの実施形態において、インターフェース層104は、独立したハードウェアおよびソフトウェアインターフェースである。いくつかの実施形態において、インターフェース層104は、制御レジスタおよびステータスレジスタのインターフェースプロトコルを設定する責任があり、制御レジスタおよびステータスレジスタは、対応するソフトウェアによって使用することができる。
【0020】
本発明のいくつかの実施形態に基づくと、完全なシステムに用いる物理メモリマップは、さまざまなアドレス範囲を含み、メモリ領域に対応するもの、メモリマップ制御レジスタに対応するもの、およびアドレス空間のエンプティーホール(empty hole)に対応するものがある。いくつかのメモリ領域は、読み取り、書き込み、または実行をサポートしない可能性があり、サブワード(subword)またはサブブロック(subblock)へのアクセスをサポートしないもの、アトミック操作(atomic operation)をサポートしないもの、キャッシュの一貫性をサポートしないか、または異なるメモリモデルを有するものがある。同様に、メモリマップ制御レジスタは、サポートされたアクセス幅、アトミック操作に対するサポート、および読み取りおよび書き込みアクセスが関連する副作用を有するかどうかによって異なる。RISC-V(reduced instruction set computer)システムでは、機械の物理アドレス空間の各領域のこれらの特性および機能は、PMAと呼ばれる。
【0021】
メモリ位置は、それに関連するさまざまな属性を有することができ、基本的には、デバイス領域とメモリ領域の2つのタイプのいずれかに分類される。メモリ領域は、キャッシュ可能な(cacheable)位置であっても、またはキャッシュ不可能な(non-cacheable)位置であってもよいが、デバイス領域は、これらの位置へのアクセスが副作用を引き起こす可能性のあるキャッシュ不可能な位置である。
【0022】
いくつかの実施形態において、PMAモジュールには、スタティックPMA(static PMA)とプログラム可能なPMA(programmable PMA)の2つのメカニズムがある。いくつかの実施形態において、スタティックPMAについては、デバイス領域設定オプションを介して少なくとも16個のデバイス領域をプロセッサに静的に設定することができる。しかしながら、デバイス領域の数は、これに限定されない。いくつかの実施形態において、PMAモジュールは、プログラム可能であり、ランタイム(run time)中にメモリ属性を動的に調整することを可能にする。いくつかの実施形態において、それは、コントロール・ステータス・レジスタ(control and status register, CSR)レジスタとして実施された設定可能な数のPMAエントリ(PMA entry)を含み、興味のあるメモリ位置の属性を制御する。これらのエントリの設定が静的なデバイス領域設定と競合する場合、PMAエントリは、より高い優先度を有する。いくつかの実施形態において、PMAエントリは、静的に優先される(statically prioritized)。アクセスの物理アドレス(physical address, PA)のいずれかに一致する最も小さい番号のPMAエントリによって、属性タイプが決定される。アドレスに一致するPMAエントリがない場合、属性タイプは、静的に設定されたPMAによって決定される。
【0023】
本発明のいくつかの実施形態に基づくと、PMAは、基礎となるハードウェアの固有の特性であり、システム操作中にほとんど変更されない。PMAは、実行コンテキスト(execution context)によって変化しない。一部のメモリ領域のPMAは、例えば、オンチップROMの場合、チップ設計時(chip design time)に固定される。他には、例えば、オフチップバスにどの他のチップが接続されているかによって、ボード設計時(board design time)に固定される。オフチップバスは、すべての電源サイクルにおいて変更可能な(コールドプラグ可能な(cold pluggable))、またはシステムが動作している間に動的に変更可能な(ホットプラグ可能な(hot pluggable))デバイスをサポートすることもできる。一部のデバイスは、ランタイムにおいて設定可能であり、異なるPMAを暗示する異なる用途をサポートする。例えば、オンチップスクラッチパッドRAM(on-chip scratchpad RAM)を1つのエンドアプリケーション中の1つのコアによってプライベートキャッシュする(cached privately)、または別のエンドアプリケーションにおいて共有された非キャッシュメモリとしてアクセスすることが可能である。
【0024】
いくつかの実施形態において、一部の操作は、すべての物理メモリアドレスでサポートされないため、ほとんどのシステムは、物理アドレスがわかった後、実行パイプライン(execution pipeline)の後半で少なくとも一部のPMAをハードウェアにおいて動的にチェックするように要求し、かつ一部の操作は、設定可能なPMA属性の現在の設定を知るように要求する。多くの他のシステムは、一部のPMAを仮想メモリページテーブル(virtual memory page table)に指定し、トランスレーション・ルックアサイド・バッファ(translation lookaside buffer, TLB)を使用して、これらの特性をパイプラインに通知するが、このアプローチは、プラットフォーム固有の情報を仮想化層に導入するため、各物理メモリ領域の各ページテーブルエントリ(page-table entry)において属性が正しく初期化されていない限り、システムエラーを引き起こす可能性がある。さらに、利用可能なページサイズは、物理メモリ空間において属性を指定するには最適でない可能性があるため、アドレス空間の断片化(address-space fragmentation)および高価なTLBエントリの非効率的な使用を引き起こす。
【0025】
いくつかの実施形態において、RISC-Vアーキテクチャについて説明すると、PMAの規格およびチェックは、個別のハードウェア構造(PMAチェッカー)に分離されている。多くの場合、各物理アドレス領域に対する属性は、システム設計時において既にわかっているため、PMAチェッカーにハードワイヤ(hardwire)することができる。属性がランタイムで設定可能な場合、プラットフォーム固有のメモリマップ制御レジスタを提供して、プラットフォーム上の各領域に適した粒度(granularity)でこれらの属性を指定することができる(例えば、キャッシュ可能な用途と非キャッシュ可能な用途の間でフレキシブルに分割することのできるオンチップSRAMに対して)。PMAは、仮想メモリから物理メモリに変換したアクセスを含む物理メモリへの任意のアクセスに対してチェックされる。
【0026】
いくつかの実施形態において、プロセッサ110は、PMAチェックに失敗した物理メモリアクセスをトラップ(trap)するようにサポートすることができる。いくつかの実施形態において、正確にトラップされたPMA違反は、仮想メモリページフォルト例外(page-fault exception)とは異なるロード、保存、または命令フェッチアクセス例外として現れる。
【0027】
本発明のいくつかの実施形態に基づくと、PMAは、特定のデバイスに正しくアクセスするために、またはDMAモジュールのようなメモリにアクセスする他のハードウェアコンポーネントを正しく設定するために、ソフトウェアによって読み取り可能でなければならない。いくつかの実施形態において、PMAは、所定の物理プラットフォームの組織(physical platform’s organization)と密接に結びついており、ソフトウェアがプラットフォームのPMA値を学習する手段でもある。いくつかの実施形態において、設定文字列(configuration string)は、オンチップデバイスに対してPMAをエンコードすることができ、接続されたデバイスPMAを動的に問い合わせる(dynamically interrogated)ことのできるオフチップバスのオンチップコントローラを記述することもできる。
【0028】
いくつかの実施形態において、メモリシステム100のマシンモードコードは、PMAを抽出し、より高レベルの権限の少ないソフトウェアに情報を提示する。
【0029】
いくつかの実施形態において、設定可能なメモリシステム100は、PMAの動的な再設定(dynamic reconfiguration)をサポートする。メモリシステム100は、メモリシステム100を正しく再設定できるマシンモードドライバーにリクエストを渡すことにより、属性を設定するためのインターフェースを提供する。例えば、マシンモードに対して一部のメモリ領域(またはオーバーレイ領域)のキャッシュ可能性属性を切り替えること(例えば、キャッシュフラッシュ)が可能になる。
【0030】
本発明のいくつかの実施形態に基づくと、オーバーレイアプリケーション層106は、インターフェース層に結合される。オーバーレイアプリケーション層106は、オーバーレイ例外が発生したかどうかをチェックする例外ハンドラープロセスを実行することができる。いくつかの実施形態において、オーバーレイアプリケーション層106は、オーバーレイトラップハンドラー(overlay trap handler)に関連する管理APIを実施することができる。いくつかの実施形態において、例外ハンドラープロセスは、ソフトウェアコードで構成される。いくつかの実施形態において、例外ハンドラープロセスは、システム異常がオーバーレイスワッピング(overlay swapping)によって引き起こされたか(つまり、システム異常(system anomaly)が2つのプログラム間の切り替え時に発生したか)どうかを判断するために使用される検出ソフトウェアを含む。
【0031】
本発明のいくつかの実施形態に基づくと、設定可能なメモリシステムは、メモリタイプ属性(memory type attribute, MTYP)命令(4ビット、[5:2])を使用して、メモリ領域のキャッシュ可能性および冪等性(idempotency)を定義する。いくつかの実施形態において、PMAの値が「15」(つまり、エンプティーホール領域)として設定されたとき、MTYPは、オーバーレイ領域のスワッピングをトリガーすることができる。つまり、PMAの値が「15」として設定されたとき、PMAは、オーバーレイスワッピングアプリケーションおよびメモリアドレスの属性設定を実行することができる。詳しく説明すると、1つのオーバーレイ領域の現在実行中のプロセス(またはプログラム)が別のオーバーレイ領域の次のプロセスにシフトすると、PMAの「15」領域は、オーバーレイ領域のスワッピングのリクエスト信号によってトリガーされる。その後、現在実行中のプロセスは、例外ハンドラー領域にジャンプするが、例外ハンドラー領域に組み込まれた検出ソフトウェアは、フォルトメッセージを発行して、例外状態をチェックし、次のプロセスがROMからRAM(例えば、SRAMまたはダイナミック・ランダム・アクセス・メモリ(dynamic random access memory, DRAM))に更新されるかどうかを判断する。例えば、PMAが命令フェッチプロセス中に「15」領域に入る(つまり、次のプロセスが命令メモリオーバーレイ内にある)とき、例外ハンドラー領域内の検出ソフトウェアは、命令アクセスフォルトを発行する。別の例では、PMAがロード命令アクセスプロセス中に「15」領域に入る(つまり、次のプロセスがデータメモリオーバーレイ内にある)とき、検出ソフトウェアは、ロードアクセスフォルト(load access fault)を発行する。一方、PMAがストア命令アクセスプロセス中に「15」領域に入る(つまり、次のプロセスがデータメモリオーバーレイ内にある)とき、検出ソフトウェアは、ストアアクセスフォルト(store access fault)を発行する。
【0032】
本発明のいくつかの実施形態に基づくと、メモリ再配置可能層108は、インターフェース層104、オーバーレイアプリケーション層106、およびプロセッサ110に結合される。
【0033】
いくつかの実施形態において、プロセッサ110は、クライアントコンピューティングシステムおよび/または特定のユースケースの計算要件に基づいて、中央処理装置(central processing unit, CPU)、アプリケーションプロセッサ、ハードウェアアクセラレータ、および/またはリモートクラスタ(remote cluster)であってもよい。
【0034】
いくつかの実施形態において、プロセッサ110は、深層ニューラルネットワークの実際の実施において重要な役割を果たす汎用グラフィックス処理ユニット(general-purpose graphic processing unit, GPGPU)などの並列プロセッサであってもよい。SIMT(single instruction, multiple thread)アーキテクチャを有する並列グラフィックスプロセッサは、グラフィックスパイプライン内の並列処理量を最大化するように設計される。SIMTアーキテクチャでは、並列スレッドのグループが可能な限り同期的にプログラム命令の実行を試みることにより、処理効率を向上させる。
【0035】
いくつかの実施形態において、プロセッサ110は、グラフィックスプロセッサであってもよい。グラフィックスプロセッサは、通常、パイプライン処理などの処理技術を実施して、グラフィックスパイプラインのさまざまな部分にわたり可能な限り多くのグラフィックスデータを並行して処理することを試みる。SIMTアーキテクチャを有する並列グラフィックスプロセッサは、グラフィックスパイプライン内の並列処理量を最大化するように設計される。SIMTアーキテクチャでは、並列スレッドのグループが可能な限り同期的にプログラム命令の実行を試みることにより、処理効率を向上させる。
【0036】
いくつかの実施形態において、プロセッサ110は、マイクロプロセッサおよび関連する命令設定アーキテクチャであってもよく、プロセッサや他の処理ロジックによって実行されたときにロード操作、保存操作、ロジック操作、数学操作、または他の機能操作を実行する。特に、本発明は、セキュアエンクレーブ(secure enclaves)におけるページング(paging)を中断および再開するための命令およびロジックに関連する。
【0037】
いくつかの実施形態において、プロセッサ110は、デジタル信号プロセッサ(digital signal processor, DSP)であってもよい。いくつかの実施形態において、DSPは、ダイレクトメモリアクセス(direct memory access, DMA)エンジンおよび2つのワーキングメモリとペアになっているため、1つのメモリ内のデータに対するプロセッサ実行は、他のメモリへの/からのDMA転送と重ね合わせることができる。高性能プロセッサは、単一のワーキングメモリによって提供することのできる帯域幅よりも多くの帯域幅を必要とする。追加の帯域幅は、追加のワーキングメモリによって供給することができる。与えられたワーキングメモリが任意の時点でプロセッサまたはDMAのいずれかによってのみ使用されることを確保し、プロセッサとDMAエンジンの間を通るデータのフロー制御を提供するためには、同期メカニズムが必要である。
【0038】
いくつかの実施形態において、プロセッサ110は、DMAであってもよい。DMAは、CPUのクロックサイクルを使用せずに、外部メモリからプロセッサ内部メモリへの大量のデータ転送、およびその逆を行う。いくつかの実施形態において、DMAは、スケーラブルであり、CPUを遅らせることなく巨大な帯域幅を処理するのに適している。DMA中にCPUがアイドル状態にならないようにするために、処理をパイプライン化してスタッガード(staggered)するため、DMAが現在のブロックの参照データをフェッチしている間に、動き補償(motion compensation)を利用可能な早期のブロックまたはデータ上で実行する。いくつかの実施形態において、割り込みサービスルーチン(interrupt service routine, ISR)下で必要に応じて複数のDMAを設定してもよい。
【0039】
本発明のいくつかの実施形態に基づくと、メモリ再配置可能層108は、第1メモリ空間、第2メモリ空間、および第3メモリ空間を含む。第1メモリ空間は、いくつかの常駐サービスプログラム、汎用プログラム(または一般プログラム)、または一般的に使用されるプログラムを含む。第2メモリ空間は、オーバーレイ物理領域を含む。第3メモリ空間は、複数のオーバーレイ仮想領域を含み、各オーバーレイ仮想領域は、対応するアプリケーションプロセス(プログラム)またはアプリケーションファイルを有し、例えば、メディアプログラム、ビデオプログラム、オーディオプログラム、または画像ファイルなどを有する。本実施形態において、オーバーレイ物理領域は、再配置可能である。つまり、オーバーレイ管理システムによって、オーバーレイ仮想領域のメモリアドレスをオーバーレイ物理領域の同じメモリアドレスに再配置(またはマッピング)することができる。いくつかの実施形態において、オーバーレイ管理システムは、ハードウェアシステムである。例えば、オーバーレイ仮想領域のメモリアドレスは、オーバーレイ物理領域の対応する1つのメモリアドレスにハードワイヤされる。したがって、これらのハードワイヤを介して、各オーバーレイ仮想領域内のアプリケーションプロセスをプロセッサ110によって直接オーバーレイ物理領域に移動または更新することができる。いくつかの実施形態において、オーバーレイ仮想領域の対応するアプリケーションプロセスは、PMAモジュールによって実行されるように決定される。いくつかの実施形態において、選択されたオーバーレイ仮想領域の受け入れられたアプリケーションプロセスの内容は、プロセッサ110によってオーバーレイ仮想領域からオーバーレイ物理領域にコピーすることができる。
【0040】
図2は、本発明の1つの実施形態に係るメモリマッピングレイヤーの概略図を示したものである。
【0041】
図2を参照すると、メモリ再配置可能層(またはメモリマッピング層)200は、仮想メモリアドレス領域(virtual memory address domain, VMA)202およびロードメモリアドレス領域(load memory address domain, LMA)204を含む。本発明のいくつかの実施形態に基づくと、VMA領域202は、発行されたアドレス空間210を含む。本発明のいくつかの実施形態に基づくと、LMA領域204は、受け入れられたアドレス空間212を含む。いくつかの実施形態において、読み取り専用メモリ(ROM)をVMA領域202に適用してもよい。いくつかの実施形態において、ランダムアクセスメモリ(RAM)をLMA領域204に適用してもよい。例えば、スタティックRAM(SRAM)またはダイナミックRAM(DRAM)をLMA領域204に適用する。言い換えると、LMA領域204は、ハードウェアによって構築され、VMA領域202は、ソフトウェアによって見えるメモリ空間である。いくつかの実施形態において、発行されたアドレス空間210は、第1オーバーレイ領域OVL1から最後のオーバーレイ領域OVLnまでの複数のオーバーレイ仮想領域OVLおよび一般的に使用される仮想メモリ領域VCOMを含む。いくつかの実施形態において、オーバーレイ領域OVL1のアドレス(またはアドレス番号)から最後のオーバーレイ領域OVLnのアドレスは、連続的である。いくつかの実施形態において、オーバーレイ領域OVL1のアドレスから最後のオーバーレイ領域OVLnのアドレスは、非連続的である。いくつかの実施形態において、オーバーレイ領域OVL1のアドレスから最後のオーバーレイ領域OVLnのアドレスは、システムハードウェアまたはシステムソフトウェアによって予め定められる、または予定される。いくつかの実施形態において、オーバーレイ領域OVL1のアドレスから最後のオーバーレイ領域OVLnのアドレスは、ランダムに分布する。
【0042】
いくつかの実施形態において、一般的に使用される仮想メモリ領域VCOMは、メモリ常駐プログラム、常駐サービスプログラム、汎用プログラム(または一般プログラム)、特定のアプリケーションプログラム、または一般的に使用されるプログラムを含む。例えば、メモリ常駐プログラムは、実行後もコンピュータのメモリに留まり、連続して実行する能力を有する。いくつかの実施形態において、一般的に使用される仮想メモリ領域VCOMのアドレスは、連続的である。いくつかの実施形態において、一般的に使用される仮想メモリ領域VCOMのアドレスは、非連続的である。いくつかの実施形態において、一般的に使用される仮想メモリ領域VCOMのアドレスは、システムハードウェアまたはシステムソフトウェアによって予め定められる、または予定される。いくつかの実施形態において、一般的に使用される仮想メモリ領域VCOMのアドレスは、ランダムに分布する。いくつかの実施形態において、一般的に使用される仮想メモリ領域VCOM内の内容は、オーバーレイ仮想領域OVLに使用すること、または移動することが許可されていない。言い換えると、一般的に使用される仮想メモリ領域VCOMとオーバーレイ仮想領域OVLは、相互に排他的である。
【0043】
本発明のいくつかの実施形態に基づくと、受け入れられたアドレス空間212は、一般的に使用される物理メモリ領域PCOMおよびオーバーレイ物理領域208を含む。いくつかの実施形態において、受け入れられたアドレス空間212は、1つのオーバーレイ物理領域208のみを含む。いくつかの実施形態において、オーバーレイ仮想領域OVLのメモリアドレスは、オーバーレイ管理システムによってオーバーレイ物理領域208の同じメモリアドレスに再配置(またはマッピング)206することができる。いくつかの実施形態において、オーバーレイ管理システムは、ハードウェアシステムである。例えば、オーバーレイ仮想領域OVLのメモリアドレスは、オーバーレイ物理領域208の対応するメモリアドレスにハードワイヤされる。したがって、これらのハードワイヤを介して、各オーバーレイ仮想領域OVL内のアプリケーションプロセスを直接オーバーレイ物理領域208に移動または更新することができる。いくつかの実施形態において、オーバーレイ仮想領域OVLの対応するアプリケーションプロセスは、PMAモジュールによって実行されるように決定される。いくつかの実施形態において、PMAモジュールは、オーバーレイ仮想領域OVLのどのアプリケーションプロセスをオーバーレイ物理領域208に移動できるかを決定する。いくつかの実施形態において、選択されたオーバーレイ仮想領域OVLの(PMAモジュールによって決定された)受け入れられたアプリケーションプロセスの内容は、プロセッサ、DMA、またはプロセッサとDMAの両方によってオーバーレイ仮想領域OVLからオーバーレイ物理領域208にコピーすることができる。
【0044】
本発明のいくつかの実施形態に基づくと、各オーバーレイ仮想領域OVLのそれぞれのオーバーレイサイズ(overlay size)は、オーバーレイ物理領域208のオーバーレイサイズと等しい。いくつかの実施形態において、各オーバーレイサイズは、4KBまたは16KBであってもよい。いくつかの実施形態において、オーバーレイサイズは、限定されない。いくつかの実施形態において、オーバーレイ仮想領域OVLのそれぞれのオーバーレイサイズは、一般的に使用される仮想メモリ領域VCOMのそれぞれ、および一般的に使用される物理メモリ領域PCOMのそれぞれのサイズと同じであってもよい。代替の実施形態において、オーバーレイ仮想領域OVLのそれぞれのオーバーレイサイズは、一般的に使用される仮想メモリ領域VCOMのそれぞれ、および一般的に使用される物理メモリ領域PCOMのそれぞれのサイズと異なっていてもよい。いくつかの実施形態において、一般的に使用される仮想メモリ領域VCOMの内容は、オーバーレイ物理領域208に移動することはできないが、対応する一般的に使用される物理メモリ領域PCOMにのみ移動する。いくつかの実施形態において、一般的に使用される物理メモリ領域PCOMのアドレス順序は、再配置(またはマッピング)プロセス206の後、一般的に使用される仮想メモリ領域VCOMのアドレス順序と同じでない可能性がある。
【0045】
いくつかの実施形態において、受け入れられたアドレス空間212のメモリサイズは、SRAMのハードウェア接続数(またはハードワイヤ数)の実際の数に関連する。いくつかの実施形態において、受け入れられたアドレス空間212は、M個のメモリブロックを含み、Mは、正の整数であり、各メモリブロックのサイズは、1つのオーバーレイサイズと等しい。つまり、受け入れられたアドレス空間212のメモリサイズは、M*(オーバーレイサイズ)である。いくつかの実施形態において、発行されたアドレス空間210は、M*N個のメモリブロックを含み、Nは、正の整数である。例えば、受け入れられたアドレス空間212は、「16個のオーバーレイサイズ」であり、発行されたアドレス空間210は、(16個のオーバーレイサイズ)*8である。注意すべきこととして、一般的に使用される仮想メモリ領域VCOMと一般的に使用される物理メモリ領域PCOMのメモリブロック数は、同じ(すなわち、15個のオーバーレイサイズ)であり、メモリマッピング206の後に変更されない。したがって、オーバーレイ仮想領域OVLのメモリブロック数は、113(または16*8-15)個のオーバーレイサイズである。
【0046】
図3は、本発明の1つの実施形態に係るメモリマッピングの別の概略図を示したものである。
【0047】
図2および
図3を参照すると、本発明のいくつかの実施形態に基づくと、メモリ再配置層(またはメモリマッピング層)300は、受け入れられたアドレス空間312および発行されたアドレス空間310を含む。本発明のいくつかの実施形態に基づくと、受け入れられたアドレス空間312は、一般的に使用される物理メモリ領域PCOMおよび1つのオーバーレイ物理領域308(overlay physical region)を含む。いくつかの実施形態において、一般的に使用される物理メモリ領域PCOMの内容は、サービスルーチンプロセスに関連する。いくつかの実施形態において、オーバーレイ物理領域308は、ハードオーバーレイ識別子(hard overlay identity, HOI)領域である。いくつかの実施形態において、発行されたアドレス空間310は、ハードオーバーレイクローン(hard overlay clone, HOC)領域である。つまり、発行されたアドレス空間310は、ハードウェアによって構築することができる。例えば、発行されたアドレス空間310(またはオーバーレイ仮想領域)は、ハードウェアオーバーレイ設計によって構築される。言い換えると、発行されたアドレス空間310(またはオーバーレイ仮想領域)のアクティブオーバーレイ領域(active overlay region)AOVLの選択されたアドレスを変換して306、オーバーレイ物理領域308のアドレスを一致させることは、オーバーレイ管理システムによって事前に設定された固定ハードワイヤ接続に基づいて決定される。例えば、ハードワイヤ接続は、ピン、ハードワイヤ、またはセレクタを使用することができ、メモリアドレスの変換は、ハードウェアパラメータHOIselを介して制御することができる。いくつかの実施形態において、アクティブオーバーレイ領域AOVLは、ソフトウェアによって処理または決定される。いくつかの実施形態において、発行されたアドレス空間310は、読み取り専用メモリ(ROM)に適用されてもよい。いくつかの実施形態において、受け入れられたアドレス空間312は、ランダムアクセスメモリに適用されてもよい。例えば、受け入れられたアドレス空間312は、SRAMまたはDRAMに適用されてもよい。
【0048】
いくつかの実施形態において、受け入れられたアドレス空間312は、ハードウェアシステムによって構築される。発行されたアドレス空間310は、ソフトウェアによって見えるメモリ空間である。例えば、受け入れられたアドレス空間312は、ハードウェアの物理メモリ空間である。いくつかの実施形態において、受け入れられたアドレス空間312および発行されたアドレス空間310のメモリアドレスは、下位4ビット([3:0])パラメータL(すなわち、0000、0001、0010、0011、…、1111)および上位3ビット([6:4])パラメータK(すなわち、000、001、010、011、…、111)を介してオーバーレイ管理システムによって決定される。本実施形態において、KおよびLは、負でない数(すなわち、K=3、L=4)である。つまり、メモリアドレスは、7ビット長(2進数または二進法で表される)であってもよい。例えば、マッチしたオーバーレイ物理領域308のアドレスは、0000110である。下位4ビットパラメータLは、オーバーレイ物理領域308および一般的に使用される物理メモリ領域PCOMの再配置可能なメモリアドレスを表わすために使用することができる。上位3ビットパラメータKは、ハードウェアによってクローン化された複数の発行されたアドレス空間310を表わすために使用することができる。この場合、ソフトウェアによって見える発行されたアドレス空間310の数は、「8」(または23)である。注意すべきこととして、クローン化されたメモリ空間は、一般的に使用される物理メモリ領域PCOMおよびオーバーレイ物理領域308を含まない。さらに、メモリ再配置可能層の発行されたアドレス空間310および受け入れられたアドレス空間312を含む設定可能なメモリサイズは、(オーバーレイサイズ)*2K+Lである。設定可能なメモリサイズは、メモリ再配置可能層300のアドレス可能な(addressable)メモリサイズより小さいか、それに等しい。いくつかの実施形態において、オーバーレイ物理領域308および発行されたアドレス空間310(オーバーレイ仮想領域)を含むオーバーレイ空間の最大数は、(2K-1)*2L+1である。本実施形態において、例えば、KおよびLは、負でない数(すなわち、K=3、L=4)であるため、オーバーレイ空間の最大数は、「113」(または113個のオーバーレイ)である。一般的に使用される物理メモリ領域PCOMの数は、(2L-1)、つまり、15個のオーバーレイである。言い換えると、常駐サービスプロセスのサイズは、(2L-1)*(オーバーレイサイズ)である。注意すべきこととして、システムによって実際に使用されるオーバーレイ空間の数は、インタフェース層およびユーザインタフェースを介してオーバーレイアプリケーション層によって制御および決定される。例えば、システムによって実際に使用されるオーバーレイサイズは、システム要件に応じて、PMAモジュール、PMPモジュール、または組み込み型PMPモジュールによってフレキシブルに制御される。いくつかの実施形態において、発行されたアドレス空間310(オーバーレイ仮想領域)は、オーバーレイ管理システム(ハードウェアシステムまたはソフトウェアシステム)によって容易にエミュレート(emulate)および制御される。いくつかの実施形態において、オーバーレイ管理システムは、プロセッサ(CPUローカルメモリ(CPU local memory))、分散ロックマネージャー(distributed lock manager, DLM)、システム高性能SRAM領域およびシステム主記憶体(DRAM)空間のローカルメモリ空間内において実施することができる。
【0049】
いくつかの実施形態において、オーバーレイ管理システムは、ハードウェアパラメータHOIselを使用して、ハードウェア命令を使用することによりメモリアドレスを変換および選択することができる。例えば、ハードウェア命令「OvPindex=((OvVindex[6:4]==3’b0)?OvVindex[3:0]:HOIsel[3:0]);」は、ハードワイヤ接続を制御して、アクティブオーバーレイ領域AOVLの内容をオーバーレイ物理領域308(またはハードオーバーレイ識別子(HOI)領域)の選択されたアドレスにどのように移動するかを決定するために使用される。例えば、ハードウェア命令「HOIsel[3:0]」は、受け入れられたアドレス空間312から16個の領域(アドレス)のうちの1つを決定し、アクティブオーバーレイ領域AOVLからの内容をオーバーレイ物理領域308に更新するために使用される。つまり、「OvPindex」の内容が更新される。ハードウェア命令「(OvVindex[6:4]==3’b0)」は、発行されたアドレス空間310(オーバーレイ仮想領域)のうちの1つが、受け入れられたアドレス空間312にマッピングする、または切り替えることができるというオーバーレイ(メモリ)スワッピング要件を満たしているか(すなわち、対応するパラメータKが「000」であるか)どうかを決定するために使用される。PMAによってオーバーレイ(メモリ)スワッピング要件が許可されていない場合、物理メモリ空間「OvPindex」は更新されず、仮想メモリ空間「OvVindex[3:0]」の元のメモリアドレスで維持される。
【0050】
いくつかの実施形態において、一般的に使用される物理メモリ領域PCOMは、メモリ常駐プログラム、常駐サービスプログラム、汎用プログラム(または一般的なプログラム)、特定のアプリケーションプログラム、または一般的に使用されるプログラムを含む。例えば、メモリ常駐プログラムは、実行後もコンピュータのメモリに留まり、連続して実行する能力を有する。いくつかの実施形態において、一般的に使用される物理メモリ領域PCOMのアドレスは、連続的である。いくつかの実施形態において、一般的に使用される物理メモリ領域PCOMのアドレスは、非連続的である。いくつかの実施形態において、一般的に使用される物理メモリ領域PCOMのアドレスは、システムハードウェアまたはシステムソフトウェアによって予め定められる、または予定される。いくつかの実施形態において、一般的に使用される物理メモリ領域PCOMのアドレスは、ランダムに分布する。いくつかの実施形態において、一般的に使用される物理メモリ領域PCOM内の内容は、アクティブオーバーレイ領域AOVLに使用すること、または移動することが許可されていない。つまり、一般的に使用される物理メモリ領域PCOMとアクティブオーバーレイ領域AOVLは、相互に排他的である。
【0051】
本発明のいくつかの実施形態に基づくと、受け入れられたアドレス空間312は、一般的に使用される物理メモリ領域PCOMおよびオーバーレイ物理領域308を含む。いくつかの実施形態において、受け入れられたアドレス空間312は、1つのオーバーレイ物理領域308のみを含む。いくつかの実施形態において、オーバーレイ管理システムにより、予め定められたメモリアドレスにオーバーレイ物理領域308を再配置(またはマッピング)306することができる。いくつかの実施形態において、オーバーレイ管理システムは、ハードウェアシステムである。例えば、アクティブオーバーレイ領域AOVLのメモリアドレスは、オーバーレイ物理領域308の対応するメモリアドレスにハードワイヤされる。したがって、これらのハードワイヤを介して、選択された発行されたアドレス空間310(例えば、アクティブオーバーレイ領域AOVL)のアプリケーションプロセスを直接オーバーレイ物理領域308に移動または更新することができる。いくつかの実施形態において、アクティブオーバーレイ領域AOVLの対応するアプリケーションプロセスは、PMAモジュールによって実行されるように決定される。いくつかの実施形態において、PMAモジュールは、アクティブオーバーレイ領域AOVLのどのアプリケーションプロセスをオーバーレイ物理領域308に移動できるかを決定する。いくつかの実施形態において、選択されたアクティブオーバーレイ領域AOVLの(PMAモジュールによって決定された)受け入れられたアプリケーションプロセスの内容は、プロセッサ、DMA、またはプロセッサとDMAの両方によって、アクティブオーバーレイ領域AOVLからオーバーレイ物理領域308にコピーすることができる。
【0052】
いくつかの実施形態において、発行されたアドレス空間310の各アドレスは、アドレスレジスタに保存されたアドレス情報に基づいて決定される。アドレス情報は、アプリケーションプロセスが実行中のときにオーバーレイ再配置(変換)プロセスによって調整される。
【0053】
本発明のいくつかの実施形態に基づくと、発行されたアドレス空間310のそれぞれのオーバーレイサイズは、オーバーレイ物理領域308のオーバーレイサイズと等しい。いくつかの実施形態において、各オーバーレイサイズは、4KB、16KB、または5MBであってもよい。いくつかの実施形態において、オーバーレイサイズは、これに限定されない。いくつかの実施形態において、発行されたアドレス空間310のそれぞれのオーバーレイサイズは、一般的に使用される物理メモリ領域PCOMの各サイズと同じであってもよい。代替の実施形態において、発行されたアドレス空間310のそれぞれのオーバーレイサイズは、一般的に使用される物理メモリ領域PCOMの各サイズと異なっていてもよい。いくつかの実施形態において、発行されたアドレス空間310の内容は、オーバーレイ物理領域308に移動することはできないが、対応する一般的に使用される物理メモリ領域PCOMのみに移動することができる。いくつかの実施形態において、一般的に使用される物理メモリ領域PCOMのアドレス順序は、再配置(またはマッピング、変換)プロセス306の後の発行されたアドレス空間310のアドレス順序と同じでない可能性がある。
【0054】
図4は、本発明の1つの実施形態に係るPMA、例外ハンドラー、およびアドレス変換ハードウェアを備えたオーバーレイスワッピングプロセスの概略図を示したものである。
【0055】
図4を参照すると、本発明のいくつかの実施形態に基づくと、オーバーレイスワッピングプロセスアーキテクチャ400は、データ層402、オーバーレイアプリケーション層412、およびメモリ再配置可能層408を含む。
【0056】
本発明のいくつかの実施形態に基づくと、データ層402は、複数のオーバーレイ領域OVL0、OVL1、OVL2、OVL3を含むことができる。オーバーレイの数は、これに限定されない。
【0057】
本発明のいくつかの実施形態に基づくと、オーバーレイアプリケーション層412は、例外ハンドラープログラム(ソフトウェア)を含む。いくつかの実施形態において、例外ハンドラープログラムは、情報信号(すなわち、第1信号S1)を受信した後にオーバーレイ例外が発生したかどうかをチェックするために使用される。オーバーレイ例外は、オーバーレイ領域を切り替えるときに発生する。例えば、第1オーバーレイ領域OVL1が第2オーバーレイ領域OVL2に切り替えられようとしているとき、データ層は、情報信号を発行して、PMAモジュール410をトリガーする。PMAモジュールがトリガーされると、実行プロセスがオーバーレイアプリケーション層412にシフトして、例外ハンドラープログラムを実行する。
【0058】
本発明のいくつかの実施形態に基づくと、例外ハンドラープログラムは、2つの判断コマンド「mcause=0x1」および「全オーバーレイ領域内のmepc」を実行して、例外をチェックする。判断コマンド「mcause=0x1」は、「命令アクセスフォルト(instruction access fault)」を意味し、このような例外がオーバーレイスワッピングによって引き起こされたシステム異常であるかどうかを決定するために使用される。判断コマンド「全オーバーレイ領域内のmepc」は、「障害命令(faulting instruction)」を意味し、切り替えたいオーバーレイ領域が「mepc」命令を有するかどうかをチェックするために使用される。
【0059】
本実施形態において、「mcause」命令のCSRアドレスは、0x342であり、「mepc」命令のCSRアドレスは、0x341である。いくつかの実施形態において、「mcause」は、機械原因レジスタ(machine cause register)であってもよい。「mcause」レジスタは、XLENビットリード/ライトレジスタ(XLEN-bit read-write register)である。トラップ(trap)がMモードに入ったとき、「mcause」は、トラップを引き起こしたイベントを示すコードで書き込まれる。それ以外の場合、「mcause」がこの実施形態によって書き込まれることはないが、ソフトウェアによって明確に書き込まれる可能性がある。「mcause」レジスタの割り込みビットは、トラップが割り込みによって引き起こされた場合に設定される。例外コードフィールドは、最後の例外を識別するコードを含む。
【0060】
いくつかの実施形態において、「mepc」は、マシン例外プログラムカウンタであってもよい。「mepc」は、XLENビットリード/ライトレジスタである。mepcの下位ビット(mepc[0])は、常にゼロである。16ビット命令アライメントを有する命令セット拡張をサポートしない実施形態において、下位2ビット(mepc[1:0])は、常にゼロである。いくつかの実施形態において、「mepc」は、WARL(write any values, reads legal value)レジスタであり、すべての有効な物理アドレスおよび仮想アドレスを保持することができるものでなければならない。すべての可能な無効アドレスを保持できなくてもよい。一部の無効アドレスパターンを「mepc」に書き込む前に、上記の実施形態は、これらを他の無効アドレスに変換することができる。トラップがMモードに入ったとき、「mepc」は、例外に直面した命令の仮想アドレスで書き込まれる。それ以外の場合、「mepc」が上記の実施形態によって書き込まれることはないが、ソフトウェアによって明確に書き込まれる可能性がある。いくつかの実施形態において、「mepc」は、これらのイベントが発生したときにトラップおよび/またはノンマスカブル割り込み(non-maskable interrupt, NMI)に直面した命令の仮想アドレスで書き込まれたレジスタであってもよい。
【0061】
RISC-V特権アーキテクチャ(privileged architecture)に基づくと、トラップは、割り込みまたは例外によって引き起こされる正常命令実行の制御フロー変化である。割り込みは、外部ソースによって開始されるが、例外は、命令実行の副産物として生成される。トラップが発生したとき、プロセッサは、現在の命令フローの処理を停止し、割り込みを無効化し、後で再開するための十分な状態を保存し、トラップハンドラーの実行を開始する。
【0062】
本発明のいくつかの実施形態に基づくと、割り込みは、ローカルであっても、外部であってもよい。外部割り込みは、プラットフォームレベル割り込みコントローラ(platform level interrupt controller, PLIC)によって外部的に仲裁されるグローバルな割り込みであり、選択された外部割り込みは、残りのローカル割り込みと一緒に仲裁されてトラップを取得する。
【0063】
本発明のいくつかの実施形態に基づくと、例外または割り込みは、正確であっても、不正確であってもよい。正確な例外(precise exception)を引き起こす命令およびそのプログラム順序におけるすべての後続の命令は、正確な例外がトリガーされたときにアーキテクチャ状態に影響を与えない。さらに、これらの正確な例外を引き起こすイベントは、起因命令(causing instruction)に正確に帰属しなければならない。「mcause」レジスタの値は、正確な例外の場合にはゼロより大きくなる。これらの基準を満たしていない例外は、不正確にしかならず、代わりに、ローカル割り込み(「mcause」<0)として配信される。つまり、標準のRISC-V特権アーキテクチャの例外は、正確な例外に対してのみトリガーされ、ローカル割り込みは、不正確な例外に対してトリガーされる。
【0064】
本発明のいくつかの実施形態に基づくと、正確な例外に対し、「mepc」は、障害命令のPCである。不正確な例外に対し、「mepc」は、割り込まれた命令を指している。例外の正確さに関係なく、「mtval」は、メモリ操作に関連する例外の有効なエラー情報を記録する。本発明のいくつかの実施形態に基づくと、トラップが発生したとき、「mepc」は、例外をジャンプする前の現在のプログラムカウンターに設定される。いくつかの実施形態において、「mepc」レジスタは、NMIを取得したときに、次の命令のアドレスで書き込まれる。いくつかの実施形態において、NMIは、ハードウェアエラー状態を処理するためのものであり、非再開可能(non-resumable)とみなされる。これらは、NMI入力信号を介してトリガーされる。
【0065】
いくつかの実施形態において、例外ハンドラーがオーバーレイスワッピング要求を受け入れたとき、PMAが実行されて、第2オーバーレイ領域OVL2の内容をRAM404に移動または更新することができ、オーバーレイ領域OVL0、OVL1、およびOVL3を閉じる。例えば、アドレス変換プロセス406を介して、第2オーバーレイ領域OVL2をCPUまたはDMAによって物理DRAMまたはSRAMにコピーおよび移動することができる。アドレス変換プロセス406は、上述した実施形態を参照することによって容易に理解することができるため、ここでは繰り返し説明しない。いくつかの実施形態において、CPUスケジュールがビジー状態のとき、DMAによってオーバーレイ領域OVL2を移動することができ、それ以外の場合は、CPUによって第2オーバーレイ領域OVL2を直接移動する。
【0066】
いくつかの実施形態において、メモリシステムは、「mret」命令を実行して、RAM404にジャンプし、第2オーバーレイ領域OVL2のアプリケーションプログラムを実行する。
【0067】
図5は、本発明の実施形態に係る元のプログラムおよびメモリ管理方法によるプログラム削減の概略図を示したものである。
【0068】
図5を参照すると、本発明の実施形態に基づくメモリ管理方法を使用することによって、受け入れられたオーバーレイ領域のパラメータ「OverlayLoad」および対応するアドレス(例えば、gdata2=0x12345678)を毎回設定する必要はない。言い換えると、ハードウェア接続のアドレス変換設定は、メモリ空間構成に関するコードの書き込みにかかる相当の時間を削減する。
【0069】
図6は、本発明の実施形態に係る例外ハンドラーのプログラムの概略図を示したものである。
【0070】
図6を参照すると、本発明のいくつかの実施形態に基づくと、設定可能なメモリシステムは、ループ制御ランダムスワッピングプログラム(loop control random swapping program)を実行して、出力結果をテストする。メモリシステムがトラップにジャンプしたとき、それは、メモリシステムが例外ハンドラーエリアに入ることを意味する。したがって、メモリシステムは、PMAモジュールによってトリガーされ、関連するパラメータ「mcause」および「mepc」の実行結果を表示する。例えば、未処理トラップが、mcause=0x1、mepc=0x10000を示したとき、その後、overlay0関数に入る。別の例において、未処理トラップがmcause=0x1、mepc=0x11000を示したとき、その後、overlay1関数に切り替えられたoverlay0関数に入る。さらに別の例において、未処理トラップがmcause=0x1、mepc=0x13000を示したとき、その後、overlay3関数に切り替えられたoverlay1関数に入る。注意すべきこととして、スイッチングイベントが発生していない場合、「mcause」および「mepc」の関連メッセージは、存在しない。他の例については、上述した実施形態を参照することによって容易に理解することができるため、ここでは繰り返し説明しない。
【0071】
図7は、本発明の1つの実施形態に係るメモリ管理方法のフローチャート700を示したものである。
【0072】
図7を参照すると、ステップS710において、第1オーバーレイ領域を第2オーバーレイ領域に切り替える際に、データ層がインターフェース層に第1信号を提供する。
【0073】
ステップS720において、メモリシステムの現在のプロセスがオーバーレイアプリケーション層にシフトする。
【0074】
ステップS730において、メモリシステムがアプリケーション層の例外ハンドラープロセスを実行し、オーバーレイ例外が発生したかどうかをチェックする。
【0075】
ステップS740において、オーバーレイ管理システムが仮想オーバーレイ領域内の受け入れられたオーバーレイ領域の第1アドレスを物理オーバーレイ領域内の第2オーバーレイ領域の変換アドレスに変換する。
【0076】
ステップS750において、プロセッサ(CPUまたはDMA)が再配置可能層のオーバーレイ仮想空間のうちの1つから再配置可能層のオーバーレイ物理空間に受け入れられたオーバーレイ領域のアプリケーションプロセスをコピーする。
【0077】
ステップS760において、PMAモジュールがプログラムされ、受け入れられたオーバーレイ領域を実行するように決定する。
【0078】
本発明のいくつかの実施形態に基づくと、本発明は、インターフェース層、オーバーレイアプリケーション層、およびメモリ再配置可能層を含む設定可能なメモリシステムを提供する。インターフェース層は、物理メモリ属性モジュールおよび物理メモリ保護モジュールを有する。インターフェース層は、メモリ属性およびメモリセキュリティを管理する。オーバーレイアプリケーション層は、インターフェース層に結合され、例外ハンドラープロセスを実行して、オーバーレイ例外が発生したかどうかをチェックする。メモリ再配置可能層は、インターフェース層およびオーバーレイアプリケーション層に結合され、第1メモリ空間内にある複数の常駐サービスプログラム、第2メモリ空間内にあるオーバーレイ物理領域、および第3メモリ空間内にアプリケーションプロセスを有する複数のオーバーレイ仮想領域を有する。オーバーレイ仮想領域のうちの1つのアプリケーションプロセスは、PMAモジュールによって実行されるように決定され、プロセッサによってオーバーレイ仮想領域からオーバーレイ物理領域にコピーされる。
【0079】
いくつかの実施形態において、複数のオーバーレイ仮想領域の各アドレスを変換することは、オーバーレイ管理システムによって事前に設定された固定ハードワイヤ接続に基づいて決定される。
【0080】
いくつかの実施形態において、複数のオーバーレイ仮想領域の各アドレスは、アドレスレジスタに保存されたアドレス情報に基づいて決定され、アドレス情報は、アプリケーションプロセスが実行中のときにオーバーレイ再配置プロセスによって調整される。
【0081】
いくつかの実施形態において、第1メモリ空間のメモリサイズ、第2メモリ空間のメモリサイズ、および第3メモリ空間のメモリサイズは、オーバーレイ管理システムに基づいて決定される。
【0082】
いくつかの実施形態において、第1メモリ空間のメモリサイズ、第2メモリ空間のメモリサイズ、および第3メモリ空間のメモリサイズは、対応するメモリサイズレジスタに保存された対応するメモリサイズ情報に基づいて決定され、メモリサイズ情報は、アプリケーションプロセスが実行中のときにオーバーレイ再配置プロセスによって調整される。
【0083】
いくつかの実施形態において、メモリ再配置可能層の設定可能なメモリサイズは、2K+L*(オーバーレイサイズ)であり、設定可能なメモリサイズは、メモリ再配置可能層のアドレス指定可能なメモリサイズより小さいか、それに等しい。
【0084】
いくつかの実施形態において、オーバーレイ物理領域および複数のオーバーレイ仮想領域を含むオーバーレイ空間の最大数は、(2K-1)*2L+1である。
【0085】
いくつかの実施形態において、システムが実際に使用するオーバーレイ空間の数は、インターフェース層およびユーザーインターフェースを介して、オーバーレイアプリケーション層によって制御および決定される。
【0086】
いくつかの実施形態において、複数の常駐サービスプロセスのサイズは、(2L-1) *(オーバーレイサイズ)である。
【0087】
いくつかの実施形態において、システムによって実際に使用されるオーバーレイサイズは、システム要件に基づいて、PMAモジュール、PMPモジュール、または組み込み型PMPモジュールによってフレキシブルに制御される。
【0088】
いくつかの実施形態において、メモリシステムは、プロセッサのローカルメモリ空間、SRAM空間、およびメインメモリ空間において実施される。
【0089】
いくつかの実施形態において、オーバーレイ物理領域は、命令メモリまたはデータメモリのいずれかに適用される。
【0090】
いくつかの実施形態において、メモリシステムは、キャッシュの操作メカニズムに影響されず、メモリシステムは、独立して実施されるか、またはキャッシュとともに実施されるかのいずれかである。
【0091】
いくつかの実施形態において、メモリシステムは、プロセッサの単一の特権モードまたはプロセッサの複数の特権モードを使用して、特権命令を実行する。
【0092】
いくつかの実施形態において、インターフェース層は、RISC-VアーキテクチャのPMAモジュール、PMPモジュール、または組み込み型PMPモジュールの設定およびアドレスレジスタを使用し、インターフェース層は、RISC-Vアーキテクチャのトラップおよび例外メカニズム(trap and exception mechanism)を使用する。
【0093】
代替の実施形態において、インターフェース層は、ARMアーキテクチャのPMAモジュール、PMPモジュール、または組み込み型PMPモジュールの設定およびアドレスレジスタを使用し、インターフェース層は、ARMアーキテクチャのトラップおよび例外メカニズムを使用する。
【0094】
いくつかの実施形態において、RISC-VのPMAモジュールは、メモリタイプ属性(MTYP)を使用して、メモリ領域のキャッシュ可能性および冪等性を定義し、MTYPのタイプ15は、命令アクセスフォルト、ロードアクセスフォルト、およびストアアクセスフォルトを含む所定の命令セットによってオーバーレイスワッピングをトリガーするように設計されたエンプティーホールとして定義される。
【0095】
いくつかの実施形態において、アプリケーション層は、例外ハンドラープロセスにおいてオーバーレイ例外に関連する複数の管理アプリケーションプログラミングインターフェース(API)を実施する。
【0096】
いくつかの実施形態において、例外ハンドラープロセスがオーバーレイスワッピングを実行するように判断したとき、プロセッサは、オーバーレイ仮想領域のアプリケーションプロセスを更新して、更新されたアプリケーションプロセスをオーバーレイ物理領域に移動するようにメモリシステムのダイレクトメモリアクセス(DMA)コントローラを制御するか、またはプロセッサは、オーバーレイ仮想領域のアプリケーションプロセスを直接更新して、更新されたアプリケーションプロセスをオーバーレイ物理領域に移動する。
【0097】
本発明の別の実施形態に基づくと、本発明は、メモリ管理方法を提供する。メモリ管理方法は、第1オーバーレイ領域を第2オーバーレイ領域に切り替える際にインターフェース層に第1信号を提供することと、オーバーレイアプリケーション層にシフトすることと、アプリケーション層の例外ハンドラープロセスを実行して、オーバーレイ例外が発生したかどうかをチェックすることと、メモリ再配置可能層における第2オーバーレイ領域の第1アドレスを第2アドレスに変換することと、プロセッサによってメモリ再配置可能層の複数のオーバーレイ仮想領域のうちの1つからメモリ再配置可能層のオーバーレイ物理領域に第2オーバーレイ領域のアプリケーションプロセスをコピーすることと、PMAモジュールによって第2オーバーレイ領域を実行するように決定することと、を含む。インターフェース層は、物理メモリ属性(PMA)モジュールおよび物理メモリ保護(PMP)モジュールを含む。インターフェース層は、複数のメモリ属性およびメモリセキュリティを管理する責任がある。オーバーレイ物理領域は、一度に1つのオーバーレイサイズを収容する。オーバーレイ物理領域は、一度に1つのオーバーレイ仮想領域からアプリケーションプロセスを受け取る。
【0098】
いくつかの実施形態において、第1アドレスを第2アドレスに変換することは、オーバーレイ管理システムによって事前に設定された固定ハードワイヤ接続に基づいて、またはアドレスレジスタに保存されたアドレス情報に基づいて決定され、アドレス情報は、アプリケーションプロセスが実行中のときにオーバーレイ再配置プロセスによって調整される。
【0099】
本分野において通常の知識を有する者であれば、本発明の範囲または精神から逸脱せずに、開示された実施形態に対してさまざまな修正および変更が可能であることが理解されよう。これを考慮して、本発明は、以下の特許請求の範囲およびそれらの同等物の範囲内にある修正および変更を包含することが意図されている。
【0100】
当業者が本発明の態様をよりよく理解することができるように、上記の内容は、いくつかの実施形態の特徴を概説したものである。当業者は、本明細書に導入された実施形態の同じ目的を実行し、および/または同じ利点を達成するための他のプロセスおよび構造を設計または修正するための基礎として、本発明を容易に使用できることを理解されたい。当業者は、また、そのような同等の構成が本発明の精神および範囲から逸脱しないこと、およびそれらが本発明の精神および範囲から逸脱することなく本明細書中の様々な変更、置換、および改変をなし得ることを理解すべきである。
【産業上の利用可能性】
【0101】
本発明の設定可能なメモリシステムおよびメモリシステム方法は、システムオンチップ(SOC)設計およびプロセッサのメモリシステム設計に適用することができる。
【符号の説明】
【0102】
100 メモリシステム
102、402 データ層
104 インターフェース層
106、412 オーバーレイアプリケーション層
108、200、300、408 メモリ再配置可能層
110 プロセッサ
202 仮想メモリアドレス領域(VMA)
204 ロードメモリアドレス領域(LMA)
206、306 メモリマッピング/再配置(またはマッピング、変換)プロセス
208、308 オーバーレイ物理領域
210、310 発行されたアドレス空間
212、312 受け入れられたアドレス空間
400 オーバーレイスワッピングプロセスアーキテクチャ
404 RAM
406 アドレス変換プロセス
410 PMAモジュール
700 フローチャート
AOVL アクティブオーバーレイ領域
K 上位4ビットパラメータ
L 下位4ビットパラメータ
OVL、OVL0、OVL1、OVL2、OVL3、OVLn オーバーレイ仮想領域
PCOM 物理メモリ領域
S1 第1信号
S710~S760 ステップ
【外国語明細書】