(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-08-13
(45)【発行日】2024-08-21
(54)【発明の名称】半導体装置
(51)【国際特許分類】
G06F 12/1027 20160101AFI20240814BHJP
G06F 12/1036 20160101ALI20240814BHJP
【FI】
G06F12/1027 115
G06F12/1036 100
(21)【出願番号】P 2020103134
(22)【出願日】2020-06-15
【審査請求日】2023-03-09
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110003649
【氏名又は名称】弁理士法人真田特許事務所
(74)【代理人】
【識別番号】100092978
【氏名又は名称】真田 有
(74)【代理人】
【識別番号】100189201
【氏名又は名称】横田 功
(72)【発明者】
【氏名】平本 新哉
【審査官】田中 啓介
(56)【参考文献】
【文献】特表2013-546104(JP,A)
【文献】特表2019-506670(JP,A)
【文献】特開平05-241965(JP,A)
【文献】米国特許出願公開第2015/0095610(US,A1)
【文献】米国特許出願公開第2018/0293183(US,A1)
【文献】米国特許出願公開第2020/0117613(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F12/08-12/128
(57)【特許請求の範囲】
【請求項1】
アドレス変換を複数のアドレス変換テーブルを用いて行なう半導体装置であって、
前記アドレス変換のステージにおける最後段で利用したアドレス変換テーブルの情報に対してキャッシュ制御を行ない、他のアドレス変換テーブルの情報に対してはキャッシュ制御を行なわ
ず、
前記他のアドレス変換テーブルの情報又は前記最後段で利用したアドレス変換テーブルの情報は、Context Descriptorのアドレス変換を行なうためのStage2 Table、又は、Stage1 Table/Pageのアドレス変換を行なうためのStage2 Tableである場合に、用途が設定情報の取得である、
半導体装置。
【請求項2】
前記他のアドレス変換テーブルの情報は、主記憶装置からの取得対象の情報がテーブルで
ある、
請求項1に記載の半導体装置。
【請求項3】
前記最後段で利用したアドレス変換テーブルの情報は、主記憶装置からの取得対象の情報がページで
ある、
請求項1又は2に記載の半導体装置
。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、半導体装置に関する。
【背景技術】
【0002】
仮想アドレスを物理アドレスに変換する際には、複数のステージにおけるアドレス変換が実施されるケースがある。
【0003】
図1は、多ステージにおけるアドレス変換を例示する図である。
【0004】
図1に示す例では、Hypervisor上でGuest OSを動作させるために、Stage1においてGuest OSが仮想アドレス(VA)を中間物理アドレス(IPA)に変換し、Stage2においてHypervisorが中間物理アドレスを物理アドレス(PA)に変換する。
【0005】
各ステージの変換において、アドレス変換テーブルが複数のレベルで構成されてもよい。
【0006】
図2は、複数レベルのアドレス変換テーブルを例示する図である。
【0007】
図2には、3Levelの変換テーブル構成例が示されている。Level1のTableエントリ601(Table1)及びLevel2のTableエントリ602(Table2)には、次のLevelの変換テーブルのベースアドレスが格納されている。このベースアドレスに変換対象の仮想アドレス又は中間物理アドレスのオフセットを加算器604で加算した値が、各レベルで変換に用いるエントリのアドレスである。また、変換結果の中間物理アドレス又は物理アドレスは、Level3のPage1エントリ603に格納されているアドレスとオフセットとを加算器604で加算した値である。
【0008】
アドレス変換装置は、各レベルのTable/Pageエントリ601~603を主記憶装置から取得して変換を行なう。アドレス変換装置は、変換対象のVA及びIPAとベースアドレスとから、最初のレベルのエントリ601のアドレスを計算して主記憶装置から取得する。アドレス変換装置は、取得したエントリがTableであれば、次レベルのアドレスを計算して主記憶装置から取得する。また、アドレス変換装置は、取得したエントリがPageであれば、変換後のアドレスを返す。エントリがTableかPageかの区別は、エントリ中に格納されているフラグで区別されてよい。
【0009】
一般的に、アドレス変換装置は、変換処理を高速に行なうため、Table, Pageを内部にキャッシュしている。特に、複数レベルのアドレス変換においては、Table(Table1,2)がキャッシュされる。例えば、Page1をTranslation Look-aside Buffer(TLB)でキャッシュしていなくても、Table2をキャッシュしていれば、Table2に基づき一回の主記憶フェッチでPage1が取得される。
【先行技術文献】
【特許文献】
【0010】
【文献】特開2019-212167号公報
【文献】特開2007-233615号公報
【発明の概要】
【発明が解決しようとする課題】
【0011】
しかしながら、複数ステージでのアドレス変換では、各ステージにアドレス変換の回数に偏りがあるため、キャッシュにも偏りが生じる可能性がある。
図2に示す例において偏りが生じる原因は、Stage1のTable, Pageの取得自体にStage2変換が行なわれるためである。例えば、
図2に示す例において、Stage1の場合に、変換テーブルのベースアドレスと、各LevelのTable, Pageエントリに格納されている次Levelアドレスとを設定するのはGuest OSであり、設定するアドレスは中間アドレスである。そのため、実際にこれらのエントリを主記憶装置から取得するためには、中間物理アドレスから物理アドレスへのStage2変換が行なわれる。
【0012】
図3は、Stage1 Level1テーブルのStage2変換を例示する図である。
【0013】
Stage1の各Levelを主記憶装置から取得するためには、Stage2変換が実行される。各Stage及び各Levelで使用されたTable, Pageをキャッシュする場合には、Stage1における1つのエントリ605に対し、Stage2では変換のレベル数(
図3に示す例では3つ)だけエントリ601~603が用意されることになる。これにより、キャッシュ構成に偏りが生じ、キャッシュの利用効率が低下するおそれがある。例えば、Stage1, 2で同じキャッシュRandom Access Memory(RAM)を共有している場合は、Stage2のキャッシュでRAMが埋まってしまい、Stage1のキャッシュミスが頻繁に起きることが想定される。
【0014】
このようなキャッシュ構成の偏りは、各ステージが複数レベルのアドレス変換テーブルで構成されている際により顕著に起きるが、1レベルの構成でも起こり得る。
【0015】
1つの側面では、アドレス変換を複数のアドレス変換テーブルを用いて行なう際に、キャッシュの利用効率の低下を防ぐことを目的とする。
【課題を解決するための手段】
【0016】
1つの側面では、半導体装置は、アドレス変換を複数のアドレス変換テーブルを用いて行なう半導体装置であって、前記アドレス変換のステージにおける最後段で利用したアドレス変換テーブルの情報に対してキャッシュ制御を行ない、他のアドレス変換テーブルの情報に対してはキャッシュ制御を行なわず、前記他のアドレス変換テーブルの情報又は前記最後段で利用したアドレス変換テーブルの情報は、Context Descriptorのアドレス変換を行なうためのStage2 Table、又は、Stage1 Table/Pageのアドレス変換を行なうためのStage2 Tableである場合に、用途が設定情報の取得である。
【発明の効果】
【0017】
1つの側面では、アドレス変換を複数のアドレス変換テーブルを用いて行なう際に、キャッシュの利用効率の低下を防ぐことができる。
【図面の簡単な説明】
【0018】
【
図1】多ステージにおけるアドレス変換を例示する図である。
【
図2】複数レベルのアドレス変換テーブルを例示する図である。
【
図3】Stage1 Level1テーブルのStage2変換を例示する図である。
【
図4】実施形態の一例におけるアドレス変換処理を説明する図である。
【
図5】実施形態の一例におけるアドレス変換システムの構成例を模式的に示すブロック図である。
【
図6】実施形態の一例におけるアドレス変換処理をフローチャートである。
【発明を実施するための形態】
【0019】
〔A〕実施形態
以下、図面を参照して一実施の形態を説明する。ただし、以下に示す実施形態はあくまでも例示に過ぎず、実施形態で明示しない種々の変形例や技術の適用を排除する意図はない。すなわち、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。また、各図は、図中に示す構成要素のみを備えるという趣旨ではなく、他の機能等を含むことができる。
【0020】
以下、図中において、同一の各符号は同様の部分を示しているので、その説明は省略する。
【0021】
図4は、実施形態の一例におけるアドレス変換処理を説明する図である。
【0022】
図4に示すアドレス変換処理では、変換テーブルのベースアドレスとIPAのオフセット#1とが、加算器104において加算されて、PAとしてのLevel1 Tableアドレスが出力される。
【0023】
Stage2変換において、PAのオフセットと変換テーブルのベースアドレスとが、各Level Tableのエントリ101~103に入力される。Level1のTableエントリ101(Table1)には変換テーブルのベースアドレスとPAのオフセット#1とが入力され、Level2のベースアドレスが出力される。Level2のTableエントリ102(Table2)にはLevel2のベースアドレスとPAのオフセット#2とが入力され、Level3のベースアドレスが出力される。Level3のTableエントリ103(Page1)にはLevel3のベースアドレスとPAのオフセット#3とが入力され、Stage2における変換結果が出力される。
【0024】
Level3のTableエントリ103の出力と、PAのオフセット#4とが、加算器104において加算されて、PAとしてのLevel1 Tableアドレスが出力される。
【0025】
Stage1変換において、Level1のTableエントリ105(Table1)には、PAとしてのLevel1 Tableアドレスが入力される。
【0026】
図4に例示するStage2変換において、符号A1に示すように、Table1, Table2はキャッシュされず、Page1に限ってキャッシュされる。また、符号A2に示すように、Stage1変換におけるデータサイズは小さいため、Table1がキャッシュされる。そして、IPA上でStage1 Table1の近くのTableエントリ105のアドレス変換では、Stage2 Page1にヒットすることが期待できる。
【0027】
Stage2で変換するアドレス種類が設定情報の場合には、キャッシュするエントリを制限する方法は上述した例に限定されない。例えば、アドレス種類がデータの場合にはアドレス上で近くのTable, Pageもまとめてプリキャッシュしてもよいが、アドレス種類が設定情報の場合にはプリキャッシュを行なわなくてもよい。
【0028】
図5は、実施形態の一例におけるアドレス変換システム1の構成例を模式的に示すブロック図である。
【0029】
アドレス変換システム1は、Central Processing Unit(CPU)11,メモリ部12及びアドレス変換装置13を備える。
【0030】
CPU11は、種々の制御や演算を行なう処理装置であり、メモリ部12に格納されたOSやプログラムを実行することにより、種々の機能を実現する。CPU11は、CPU Core/IO装置と称されてもよい。
【0031】
アドレス変換システム1全体の動作を制御するための装置は、CPU11に限定されず、例えば、MPUやDSP,ASIC,PLD,FPGAのいずれか1つであってもよい。また、アドレス変換システム1全体の動作を制御するための装置は、CPU,MPU,DSP,ASIC,PLD及びFPGAのうちの2種類以上の組み合わせであってもよい。なお、MPUはMicro Processing Unitの略称であり、DSPはDigital Signal Processorの略称であり、ASICはApplication Specific Integrated Circuitの略称である。また、PLDはProgrammable Logic Deviceの略称であり、FPGAはField Programmable Gate Arrayの略称である。
【0032】
メモリ部12は、主記憶装置の一例であり、例示的に、Read Only Memory(ROM)及びRandom Access Memory(RAM)などである。RAMは、例えばDynamic RAM(DRAM)であってよい。メモリ部12のROMには、Basic Input/Output System(BIOS)等のプログラムが書き込まれてよい。メモリ部12のソフトウェアプログラムは、CPU11に適宜に読み込まれて実行されてよい。また、メモリ部12のRAMは、一時記録メモリあるいはワーキングメモリとして利用されてよい。
【0033】
アドレス変換装置13は、半導体装置の一例であり、制御部131及びキャッシュ保持部132として機能する。
【0034】
制御部131は、CPU11からアドレス変換要求を受け取り、CPU11へアドレス変換応答を返す。
【0035】
制御部131は、メモリ部12へPage/Table取得要求及び設定情報取得要求を発行し、メモリ部12からPage/Table取得応答及び設定情報応答を受け取る。
【0036】
キャッシュ保持部132は、制御部131からのキャッシュ検索に応じて、制御部131へ検索応答を返す。また、キャッシュ保持部132は、制御部131からのキャッシュ登録を受け付ける。制御部131は、変換対象となるアドレスの種類に応じて、キャッシュ保持部132にキャッシュを登録するかしないかを選択する。
【0037】
ARMアーキテクチャで規定された手順では、変換要求されたアドレスのStage1, 2変換のPage/Table以外でも、Stage2 Table/Page取得が行なわれる。例えば、アドレス変換を行なう場合には設定情報の取得が行なわれ、一部の設定情報(例えば、Context Descriptor)を取得する場合にはStage2のアドレス変換が行なわれる。また、
図4を用いて上述したように、Stage1 Table/Page取得にもStage2のアドレス変換が行なわれる。このため、制御部131は、設定情報取得のためのStage2 Table/Pageのアドレスも計算し、キャッシュ検索を行なう。
【0038】
制御部131は、アドレス変換のステージにおける最後段で利用したアドレス変換テーブル(別言すれば、
図4のエントリ103,105)の情報に対してキャッシュ制御を行ない、他のアドレス変換テーブル(別言すれば、
図4のエントリ101,102)の情報に対してはキャッシュ制御を行なわない。
【0039】
他のアドレス変換テーブルの情報は、メモリ部12からの取得対象の情報がテーブルであり、かつ、用途が設定情報の取得であってよい。最後段で利用したアドレス変換テーブルの情報は、メモリ部12からの取得対象の情報がページであり、かつ、用途が設定情報の取得であってよい。また、最後段で利用したアドレス変換テーブルの情報は、メモリ部12からの取得対象の情報がテーブルであり、かつ、用途が設定情報の取得でなくてよい。
【0040】
なお、用途が設定情報の取得である場合とは、例えば、Context Descriptorのアドレス変換を行なうためのStage2 Table、又は、Stage1 Table/Pageのアドレス変換を行なうためのStage2 Tableである。また、キャッシュ検索の対象がTableかPageかの区別は、取得したエントリのフラグに基づいて行なわれてよい。
【0041】
〔A-2〕動作
実施形態の一例におけるアドレス変換処理を、
図6に示すフローチャート(ステップS1~S12)に従って説明する。
【0042】
制御部131は、CPU11からアドレス変換要求を受信する(ステップS1)。
【0043】
制御部131は、例えばARMアーキテクチャで規定された手順に基づき、取得するStage1, 2Table/Pageのアドレスを計算し、キャッシュ検索を行なう(ステップS2)。
【0044】
制御部131は、アドレスを計算したTable/PageがキャッシュにHitしたかを判定する(ステップS3)。
【0045】
Table/PageがキャッシュにHitした場合には(ステップS3のYESルート参照)、処理はステップS11へ進む。
【0046】
一方、Table/PageがキャッシュにHitしなかった場合には(ステップS3のNOルート参照)、制御部131は、メモリ部12に対してPage/Table取得要求を行なう(ステップS4)。
【0047】
制御部131は、メモリ部12からPage/Table応答を受信する(ステップS5)。
【0048】
制御部131は、キャッシュ検索の対象がTableであり、かつ、用途が設定情報取得であるかを判定する(ステップS6)。
【0049】
キャッシュ検索の対象がTableであり、かつ、用途が設定情報取得である場合には(ステップS6のYESルート参照)、制御部131は、キャッシュ登録は行なわれずPage/Table応答の内容を一時的に保持する(ステップS7)。そして、処理はステップS11へ進む。
【0050】
一方、キャッシュ検索の対象がTableでなく、又は、用途が設定情報取得でない場合には(ステップS6のNOルート参照)、制御部131は、キャッシュ検索の対象がPageであり、かつ、用途が設定情報取得であるかを判定する(ステップS8)。
【0051】
キャッシュ検索の対象がPageであり、かつ、用途が設定情報取得である場合には(ステップS8のYESルート参照)、制御部131は、キャッシュ保持部132にPage/Table応答の内容をキャッシュ登録して、アドレス変換結果に基づきメモリ部12から設定情報取得を行なう(ステップS9)。そして、処理はステップS11へ進む。
【0052】
キャッシュ検索の対象がPageでなく、又は、用途が設定情報取得でない場合には(ステップS8のNOルート参照)、制御部131は、キャッシュ保持部132にPage/Table応答の内容をキャッシュ登録する(ステップS10)。そして、処理はステップS11へ進む。
【0053】
制御部131は、変換に必要な全てのPage/Tableを取得したかを判定する(ステップS11)。
【0054】
変換に必要なPage/Tableのうち取得していないPage/Tableがある場合には(ステップS11のNOルート参照)、処理はステップS2へ戻る。
【0055】
一方、変換に必要な全てのPage/Tableを取得した場合には(ステップS11のYESルート参照)、制御部131は、CPU11に対してアドレス変換応答を送信する(ステップS12)。そして、アドレス変換処理は終了する。
【0056】
〔A-3〕効果
上述した実施形態の一例におけるアドレス変換装置13によれば、例えば、以下の作用効果を奏することができる。
【0057】
制御部131は、アドレス変換のステージにおける最後段で利用したアドレス変換テーブルの情報に対してキャッシュ制御を行ない、他のアドレス変換テーブルの情報に対してはキャッシュ制御を行なわない。
【0058】
これにより、アドレス変換を複数のアドレス変換テーブルを用いて行なう際に、キャッシュの利用効率の低下を防ぐことができる。具体的には、ステージ間のキャッシュ比率の偏りを防ぐことができる。例えば、
図4に示したようにStage 1 Page/Tableのアドレス変換のために3levelのStage2変換が行なわれる場合に、すべてのアドレス変換テーブルの情報に対してキャッシュ制御が行なわれると仮定する。この場合には、1つのStage1 Page/Table取得の度に3つのStage2 Page/Tableをキャッシュすることになる。一方、上述した実施形態の一例のように、ステージにおける最後段のアドレス変換テーブルの情報に限ってキャッシュ制御を行なえば、1つのStage2 Pageに限ってキャッシュすればよい。Stage1 Page/Tableのデータサイズは小さいため、アドレスが近いStage1 Page/TableはStage2 Pageにヒットする。Stage2 Tableはキャッシュしても使われないと予想されるため、Stage2 Pageに限ってキャッシュして、不要なStage2 Tableをキャッシュしないことでキャッシュの利用効率を向上させることができる。
【0059】
他のアドレス変換テーブルの情報は、メモリ部12からの取得対象の情報がテーブルであり、かつ、用途が設定情報の取得である。これにより、このようなアドレス変換テーブルの情報についてのキャッシュ制御を抑止することができる。
【0060】
最後段で利用したアドレス変換テーブルの情報は、メモリ部12からの取得対象の情報がページであり、かつ、用途が設定情報の取得である。また、最後段で利用したアドレス変換テーブルの情報は、メモリ部12からの取得対象の情報がテーブルであり、かつ、用途が設定情報の取得でない。これにより、これらのようなアドレス変換テーブルの情報についてのキャッシュ制御を適切に実施できる。
【0061】
〔B〕その他
開示の技術は上述した実施形態に限定されるものではなく、本実施形態の趣旨を逸脱しない範囲で種々変形して実施することができる。本実施形態の各構成及び各処理は、必要に応じて取捨選択することができ、あるいは適宜組み合わせてもよい。
【符号の説明】
【0062】
1 :アドレス変換システム
11 :CPU
12 :メモリ部
13 :アドレス変換装置
131 :制御部
132 :キャッシュ保持部
101~103,105,601~603,605:エントリ
104,604:加算器