キャッシュメモリ

出典しゅってん: フリー百科ひゃっか事典じてん『ウィキペディア(Wikipedia)』

キャッシュメモリ (cache memory) は、CPUなど処理しょり装置そうちデータ命令めいれいなどの情報じょうほう取得しゅとく/更新こうしんするさいしゅ記憶きおく装置そうちバスなどの遅延ちえんてい帯域たいいき隠蔽いんぺいし、処理しょり装置そうち記憶きおく装置そうち性能せいのうめるためにもちいる高速こうそくしょう容量ようりょうメモリのことである。りゃくしてキャッシュともぶ。コンピュータは以前いぜんから記憶きおく装置そうち伝送でんそう性能せいのう処理しょり装置そうち性能せいのういつけず、この全体ぜんたい性能せいのうたいするボトルネックとされてきた(ノイマンズ・ボトルネック)。そしてムーアの法則ほうそくもとづく処理しょり装置そうち加速度かそくどてき高性能こうせいのうにより現在げんざいではますますこの拡大かくだいされている。キャッシュメモリは、記憶きおく階層かいそう観点かんてんからこれを解消かいしょうしようとするものである。

おもに、しゅ記憶きおく装置そうちとCPUなど処理しょり装置そうちとのあいだ構成こうせいされる。この場合ばあい処理しょり装置そうちアクセスしたいデータやそのアドレス状態じょうたい設定せっていなど属性ぞくせい情報じょうほうコピー保持ほじすることで、本来ほんらいアクセスすべき記憶きおく装置そうちわってデータを入出力にゅうしゅつりょくする。通常つうじょうはキャッシュメモリが自動的じどうてきにデータ保存ほぞんしゅ記憶きおく装置そうち代替だいたいおこなうため、基本きほんてきにCPUのプログラムなど処理しょり装置そうちがわがキャッシュメモリを意識いしきする必要ひつようはない。

キャッシュの一般いっぱんてき概念がいねんキャッシュ (コンピュータシステム)参照さんしょうのこと。

意義いぎ[編集へんしゅう]

データ帯域たいいき[編集へんしゅう]

キャッシュメモリはさい利用りようデータのキャッシングによる実効じっこうデータ帯域たいいき増加ぞうかという意義いぎをもつ。

たとえば SGEMV(単精度たんせいど浮動ふどう小数点しょうすうてん行列ぎょうれつベクトルせき)をかんがえる。2.0 GHzで動作どうさする Haswell CPUのシングルコアはピークに128GB/sのデータアクセスを要求ようきゅうする[1] (8 [FMA/inst.] ÷ 0.5 [CPI=cycle/inst.][2] * 2.0G [Hz=cycle/sec] * 4 [Byte/FP32])。一方いっぽうプロセッサ-メインメモリあいだのレイテンシはすうひゃくサイクルであり、並列へいれつロードをおこなっても高々たかだか5GB/sしかデータをせない[3]。すなわちメモリりつそくでCPU性能せいのうの5%以下いかしかすことができない[4]。もし行列ぎょうれつをキャッシュにせきることが出来できれば、よりレイテンシのちいさいキャッシュメモリからデータを供給きょうきゅうたかいデータ帯域たいいき確保かくほできる。

構成こうせい[編集へんしゅう]

キャッシュメモリの構造こうぞう

キャッシュメモリは、通常つうじょう下位かいレベルの記憶きおく装置そうちよりしょう容量ようりょう高速こうそくスタティックRAMもちいて構成こうせいされる。データ本体ほんたい一部いちぶとそのアドレス、フラグなど属性ぞくせい情報じょうほうのセットを固定こてい容量ようりょうのメモリに格納かくのうする構造こうぞうで、データ格納かくのう構造こうぞうライン入替いれかデータ更新こうしん方式ほうしきキャッシュ階層かいそうなどに多数たすうアーキテクチャ存在そんざいする。以前いぜんはCPUチップの外部がいぶ接続せつぞくされていたが、LSIの集積しゅうせき向上こうじょう要求ようきゅう速度そくど上昇じょうしょうともないCPUチップ内部ないぶまれることが普通ふつうとなった。

キャッシュ階層かいそう[編集へんしゅう]

記憶きおく階層かいそうをもつキャッシュメモリをマルチレベルキャッシュえい: multi level caches)という[5]。CPUとメモリの性能せいのう拡大かくだいマルチスレッドなどアクセス範囲はんい拡大かくだい対応たいおうするために導入どうにゅうされる。CPUにちかがわからL1キャッシュ(レベル1)、L2キャッシュ(レベル2)とばれ[6]2013ねん時点じてんではL4キャッシュまでCPUに内蔵ないぞうするれい存在そんざいする。CPUから一番いちばんとおいキャッシュメモリのことをLLC(Last Level Cache)とこともある。

データ格納かくのう構造こうぞう[編集へんしゅう]

キャッシュメモリはデータをライン(ブロック)とぶある程度ていどまとまった単位たんい管理かんりする(たとえばIntel Pentium 4の8kByte L1キャッシュはラインサイズ64Byte)が、データのアクセス要求ようきゅうがあったときにそのデータがキャッシュに存在そんざいしているか、あるならどのラインかなどを瞬時しゅんじ(おおくの場合ばあい1サイクルのスループット)に検索けんさくする必要ひつようがある。そのためデータ格納かくのうアドレスの一部いちぶ具体ぐたいてきにはライン単位たんいアドレスの下位かいすうビット(エントリアドレス)によりある程度ていど格納かくのう位置いち限定げんていすることで検索けんさく速度そくどたかめる。かくラインにはライン単位たんいアドレスの上位じょういビット、すなわちフレームアドレスを格納かくのうしておき、キャッシュ検索けんさくには検索けんさくアドレスのフレームアドレスと、キャッシュない格納かくのうされている検索けんさくエントリアドレス位置いち(エントリアドレスをデコードしラインが1つ選択せんたくされる)に対応たいおうしたフレームアドレスとを比較ひかくすることでキャッシュのヒットを検出けんしゅつする。このフレームアドレス格納かくのうバッファが(ちゅう)タグである。複数ふくすうセットのタグをてばおなじエントリアドレスでも複数ふくすうデータの格納かくのうおこなうことが可能かのうとなる。このタグのセットすう(ウエイ)を連想れんそうぶ。データ格納かくのう構造こうぞう相違そうい連想れんそう相違そういでもある。

メモリ位置いちがキャッシュの場所ばしょ特定とくていするれい
ダイレクトマップ方式ほうしき (Direct Mapped)
1くみのタグにより構成こうせい連想れんそう1)されるデータ格納かくのう構造こうぞう。アドレスにより一意いちい配置はいちまるため、タグの構造こうぞう非常ひじょう単純たんじゅん。だが、どういちエントリにことなるフレームアドレスが転送てんそうされるとかならずラインのえが発生はっせいする。ラインのえが頻発ひんぱつしスループットがちることをキャッシュスラッシングというが、この状態じょうたいこりやすくヒットりつ方式ほうしきくらたかくない。
セットアソシアティブ方式ほうしき (Set Associative)
複数ふくすうのタグにより構成こうせい(連想れんそう2以上いじょう)されるデータ格納かくのう構造こうぞうどういちエントリにことなるフレームアドレスのデータを複数ふくすう格納かくのうすることができる。連想れんそうがるほどキャッシュヒットりつ上昇じょうしょうするが製造せいぞう困難こんなんになっていくため、システムによりバランスのよい実装じっそうことなる。nのタグにより構成こうせいされた場合ばあい、nウエイセットアソシアティブ方式ほうしきぶ。最近さいきんはCAM (連想れんそうメモリ:Content Addressable Memory)がタグとして使つかわれし、32など非常ひじょうたか連想れんそう実装じっそうできるようになってきた。ダイレクトマップ方式ほうしき下記かきのフルアソシアティブ方式ほうしきはこの方式ほうしき特殊とくしゅ場合ばあいである。
フルアソシアティブ方式ほうしき (Fully Associative)
エントリアドレスによるけはなく、すべてのラインが検索けんさく対象たいしょうとなる構造こうぞうしたがって連想れんそうはラインすうふんとなる。キャッシュスラッシングはこりがたくヒットりつもっとすぐれているが、実装じっそうコストや複雑ふくざつめんから通常つうじょうもちいられることはない。

ライン入替いれか方式ほうしき (Refill)[編集へんしゅう]

ラインの入替いれかえ(リフィル)は該当がいとうエントリのぜんラインにデータが格納かくのうされてなおどういちエントリ新規しんきフレームアドレスが入力にゅうりょくされてキャッシュミスした(ヒットしなかった)場合ばあい発生はっせいする。その場合ばあいどのラインを掃出はきだして新規しんきアドレスと入替いれかえるかのアルゴリズムによってキャッシュのヒットりつ変動へんどうする。代表だいひょうてきなアルゴリズムをしるす。

ラウンドロビン (Round Robin)
リフィル対象たいしょうとなるラインを順番じゅんばん交代こうたいさせる方法ほうほうかくラインのアクセス頻度ひんどかかわらず順番じゅんばんにリフィルをおこなうため、あまりヒットりつたかくない。
LRU (Least Recently Used)
もっとふるくアクセスされたラインをリフィルする方法ほうほう時間じかんてき局所きょくしょせいかんがみれば、過去かこもっともアクセスのなかったラインは将来しょうらいにわたってもアクセスされる可能かのうせいすくないとえる。したがってこの方法ほうほうはヒットりつがかなりたか方法ほうほうとしてよく採用さいようされている。ただしかくラインごとにアクセスじゅん履歴りれきちアクセスがあるたび頻繁ひんぱん履歴りれき入替いれかえるため、複雑ふくざつ構成こうせいとなりアクセス性能せいのう影響えいきょう場合ばあいがある。
ランダム (Random)
リフィルラインの選択せんたくをランダムにおこな方式ほうしきかくラインごとにリフィルよう機構きこう必要ひつようがなくなるため構成こうせい簡易かんいになる。ヒットりつはラウンドロビンよりはいとされる。

データ更新こうしん方式ほうしき (Replacement policy)[編集へんしゅう]

ライトスルー方式ほうしき
ライトバック方式ほうしき

CPUキャッシュは命令めいれいキャッシュとデータキャッシュの2種類しゅるい搭載とうさいされている場合ばあいおおい。命令めいれいキャッシュはプログラムという静的せいてきなデータをあつかうのでデータ更新こうしん存在そんざいしないが、データキャッシュはメモリへのライト動作どうさがあるためデータ更新こうしん存在そんざいする。更新こうしんされたデータはいずれかのタイミングで下位かいレベルのメモリにも反映はんえいされる必要ひつようがあり、そのタイミングの相違そういにより2つのアルゴリズムが存在そんざいする。

ライトスルー方式ほうしき (Write Through Algorithm)
CPUがメモリみをおこなったら、キャッシュにストアすると同時どうじ下位かいレベルのメモリにももど方式ほうしきかなら下位かいレベルのバスが活性かっせいするため、バスの競合きょうごう下位かいレベルのひくいスループットにりつそくされるなどの制約せいやくはあるが、単純たんじゅん構成こうせい実現じつげんでき、またデータのコヒーレンシをたもつことが容易よういである。出力しゅつりょくだんにライトバッファをもうけることにより、単一たんいつCPUであればライトバック方式ほうしきくら遜色そんしょくのない性能せいのう期待きたいできる。そのためCPUのL1キャッシュなどに実装じっそうされる場合ばあいおおい。
ライトバック方式ほうしき (Write Back Algorithm)
CPUがメモリみをおこなっても、条件じょうけんととのわないかぎりキャッシュにまりメモリへのもどしをおこなわない方式ほうしきもど条件じょうけん対象たいしょうエントリにウエイすう以上いじょうのフレームアドレスのリード/ライトがおこなわれる、のバスマスタが対象たいしょうエントリが保持ほじしているアドレスにたいしアクセスをおこなったときにコヒーレンシをたもつためにおこなうなどがある。ライトスルー方式ほうしきたい下位かいレベルのバスが競合きょうごうこしにくく、マルチCPU構成こうせいくため、記憶きおく階層かいそうどういちレベルに複数ふくすうのキャッシュが接続せつぞくされているようなL2キャッシュに実装じっそうされる。ライトミスに2つのアプローチがある。ひとつは、Write allocate であり、もうひとつが No-write allocate である。
  • Write allocate は fetch on write ともばれる。ライトミスしたアドレスをふくむラインがキャッシュにロードされたのち、ライトが実行じっこうされる。このアプローチでは、ライトミスとリードミスは同様どうよう動作どうさとなる。
  • No-write allocate は write-no-allocate または write around とばれる。ライトミスしたアドレスのデータはキャッシュにロードされず、データは 下位かい記憶きおく階層かいそうまれる。このアプローチでは、データロードは、リードミスにのみ発生はっせいする。

キャッシュコヒーレンシ (Cache Coherency)[編集へんしゅう]

マルチCPU/キャッシュ構成こうせいなど複数ふくすうのバスマスタが存在そんざいし、各々おのおのがデータ更新こうしんおこなった場合ばあいでも最新さいしんただしいデータにアクセスできるようたもつべきデータの一貫いっかんせいのことをキャッシュコヒーレンシもしくはキャッシュコンシステンシ (Cache Consistency) という。データ更新こうしん上記じょうきライトバック方式ほうしきもちいた場合ばあいなど、キャッシュに更新こうしんされたデータが滞留たいりゅうしてしゅ記憶きおく装置そうちなど下位かいレベルのメモリには最新さいしんのデータが存在そんざいしない可能かのうせいがある。このとき複数ふくすうのCPUが同一どういつ記憶きおく領域りょういき参照さんしょう更新こうしんしようとすると、データの整合せいごうこりただしい結果けっかられないため、これを解決かいけつしどのCPUもかなら最新さいしんのデータにアクセスできるようにする必要ひつようがある。このための代表だいひょうてきなアルゴリズムにスヌープ方式ほうしきやディレクトリ方式ほうしき共有きょうゆうキャッシュがある。

スヌープ方式ほうしき (Cache Snooping)
キャッシュコヒーレンシのアルゴリズムにおいて、とくかくキャッシュ自身じしん搭載とうさいされる方法ほうほうとしてスヌープ方式ほうしきスヌープキャッシュ)がある。これは各々おのおののキャッシュが自身じしんCPUのキャッシュのライン更新こうしん状態じょうたい把握はあく管理かんりし、のキャッシュと更新こうしん状態じょうたい情報じょうほう交換こうかんすることで、どのキャッシュに最新さいしんのデータが存在そんざいするかをり、かくキャッシュが必要ひつようなときに最新さいしんのデータを取得しゅとくできるように自身じしん状態じょうたい変更へんこうしたりラインのパージをおこなう。この情報じょうほう交換こうかん共通きょうつうのデータバスをかいしておこなわれるため、情報じょうほう通知つうち実際じっさいのデータ転送てんそうとの順序じゅんじょたもたれ、破綻はたんこすことはない。ぎゃく共通きょうつうバスをたない分散ぶんさんがたメモリシステムにはもちいることが困難こんなんなどの制約せいやくもある。このプロトコルとして下記かきのものがられている。
無効むこうがたプロトコル (Invalidate Protocol)
複数ふくすうのキャッシュから参照さんしょうがあるアドレスにたいしあるキャッシュが更新こうしんおこな場合ばあい、そのアドレスはダーティであるとして参照さんしょうちゅうぜんキャッシュの該当がいとうラインを無効むこうする。これにより更新こうしんされたラインがありながらのキャッシュでふるいデータをキャッシングしている状態じょうたいがなくなり、コヒーレンシがたもたれる。MESI(Illinoisプロトコル)、MOSI(Berkeleyプロトコル)などがある。
更新こうしんがたプロトコル (Update Protocol)
複数ふくすうのキャッシュが参照さんしょうしているアドレスにたいしてデータ更新こうしんおこなうときはライトスルーがたとなり、単独たんどくでアクセスしている場合ばあいはライトバックがたとなるような制御せいぎょおこなうことで更新こうしんデータをわたらせコヒーレンシをたもつ。MEI(Fireflyプロトコル)、MOES(DRAGONプロトコル)などがある。
ディレクトリ方式ほうしき (Directory-based Protocol)
スヌープ方式ほうしきことなり、メモリの一貫いっかんせいをディレクトリと専用せんよう領域りょういきにて一元いちげん管理かんりする方式ほうしき。この領域りょういき実装じっそうじょうかくメモリ領域りょういき分散ぶんさんしてよく、分散ぶんさんメモリがたシステムにてきしている。
共有きょうゆうキャッシュ (Shared Cache)
1つのキャッシュにたい複数ふくすうのCPUが参照さんしょうできるような構成こうせいつキャッシュ。1チップに集積しゅうせきされた複数ふくすうのCPUをあつかうなど限定げんていてき場面ばめんではキャッシュコヒーレンシを根本こんぽんてき解決かいけつするが、キャッシュ自体じたい構造こうぞう非常ひじょう複雑ふくざつとなる、もしくは性能せいのう低下ていか要因よういんとなり、おおくのCPUを接続せつぞくすることはより困難こんなんとなる。

その機構きこう[編集へんしゅう]

プリフェッチ (Pre-fetch)
CPUが専用せんよう命令めいれいなどによりあらかじめデータをキャッシュにんでおく動作どうさ。データのながれがある程度ていど予測よそくできるような特定とくていのソフトウエアアルゴリズムは、さきんじてプリフェッチをおこなうことで実際じっさいにデータが必要ひつよう場面ばめん余分よぶんなレイテンシがかかることなくスムーズに処理しょりおこなうことができる。たとえばストリーミング処理しょりのようなデータのながれや処理しょりりょうなどが単純たんじゅん予測よそくしやすい処理しょりなどは、プリフェッチをおこなうことで大幅おおはば性能せいのう向上こうじょうする場合ばあいがある。

目的もくてきべつ分類ぶんるい[編集へんしゅう]

命令めいれいキャッシュ
プログラムなどCPUの命令めいれい格納かくのうするキャッシュ。命令めいれい静的せいてきなデータなため、えが発生はっせいせず(x86をのぞ最近さいきんのCPUは命令めいれい自己じこえなどには対応たいおうしていない場合ばあいおおい)コヒーレンシをたも必要ひつようがないと想定そうていし、CPUからの入力にゅうりょくはアドレスのみでデータ更新こうしんユニットなどをはぶいている。
データキャッシュ
CPUが処理しょりするデータを格納かくのうするキャッシュ。上述じょうじゅつ構成こうせいをフルサポートしている場合ばあいおおい。命令めいれいキャッシュとデータキャッシュが分離ぶんりされ、命令めいれいバスとデータバスの2種類しゅるいのバスがCPUに接続せつぞくされているCPUをハーバードアーキテクチャう。現在げんざいのCPUはハーバードアーキテクチャが主流しゅりゅうである。
実行じっこうトレースキャッシュ
インテルのPentium 4などは、インストラクション・セット・アーキテクチャ(ISA)はCISCであるが、内部ないぶRISCてきなマイクロ命令めいれい変換へんかん実行じっこうするアーキテクチャとなっている。単純たんじゅん命令めいれいキャッシュとことなり、変換へんかんみのマイクロ命令めいれいさい利用りようすれば命令めいれいデコーダの使用しよう頻度ひんどらすことができる。Pentium 4ではL1命令めいれいキャッシュのわりにやく12000命令めいれい格納かくのうできる8 ウェイ・セット・アソシエイティブの実行じっこうトレースキャッシュが搭載とうさいされている。
トランスレーションキャッシュ
x86(PentiumなどにもちいられているISA)の互換ごかんCPUメーカであるトランスメタが、そのコア技術ぎじゅつとして開発かいはつしたコードモーフィングソフトウェア(CMS)ようしゅ記憶きおく装置そうちじょう確保かくほしている領域りょういきCrusoeで16メガバイトの容量ようりょうがある。CMSはx86命令めいれい動的どうてきにCPUコアのネイティブ命令めいれい変換へんかんし、変換へんかん命令めいれい実行じっこうさせる機構きこうだが、このネイティブ命令めいれい変換へんかんしたプログラムを格納かくのうするキャッシュとしてもちいる。
スタックトップキャッシュ
コールスタックをハードウェアで実装じっそうしたアーキテクチャでは、スタックトップのすうバイトからすうじゅうバイトにアクセスが集中しゅうちゅうする。この部分ぶぶんをキャッシュするのがスタックトップキャッシュである。ISAからは存在そんざいづけない実装じっそうトランスピュータなど)と、積極せっきょくてきにレジスタとして使用しようできる実装じっそうAMD Am29000など)がある。後者こうしゃ概念がいねん発展はってんさせたものがレジスタ・ウィンドウである。

ソフトウェアへの影響えいきょう[編集へんしゅう]

コヒーレンシの明示めいじてき制御せいぎょ必要ひつようとなるような場合ばあいのぞき、キャッシュメモリの存在そんざいはソフトウェアの挙動きょどうたいしては透過とうかてきである。一方いっぽう性能せいのうめんではキャッシュメモリの存在そんざい仕様しよう意識いしきすることにより向上こうじょうはかれることがられている。

Solaris 2.4カーネルにて採用さいようされたスラブアロケーション英語えいごばんでは、構造こうぞうたい特定とくていのメンバにアクセスが集中しゅうちゅうする傾向けいこう利用りようし、かくスラブにてオブジェクト領域りょういき先頭せんとうことなるスラブ先頭せんとうからのオフセットをあたえることにより、キャッシュラインない頻繁ひんぱんにアクセスされる位置いち分散ぶんさんさせている。[7]当時とうじサン販売はんばいしていた製品せいひんではメモリインターリーブあわせてキャッシュラインないをさらに複数ふくすうのメモリバスに分割ぶんかつしててていた。このためキャッシュラインないでアクセスが頻繁ひんぱん箇所かしょ特定とくてい位置いち集中しゅうちゅうするとキャッシュラインだけでなくメモリバスの負荷ふか分散ぶんさんされなくなってしまうことが問題もんだいとなっており、スラブアロケーションはその解決かいけつさくとして使用しようされた。

同一どういつのキャッシュラインない頻繁ひんぱん更新こうしんされるデータとほとんど更新こうしんされないデータが共存きょうぞんしていると、システム全体ぜんたいではメインメモリへのもどしが必要ひつようなキャッシュラインすうえてしまう。両者りょうしゃがキャッシュラインじょう分離ぶんりされるようにデータを配置はいちすると、もどしが必要ひつようなキャッシュラインのかずらして効率こうりつげることができる。LinuxカーネルFreeBSDなど、GNU ldないしはその互換ごかんリンカをビルドにもちいているOSでは、ほとんど更新こうしんされないデータをELFのある特定とくていのセクションに定義ていぎすることにより、そのようなデータだけをあつめたうえでキャッシュライン境界きょうかい整列せいれつさせている。なお、上記じょうきのセクションにたいしてそのようなアドレス配置はいち実際じっさいにさせているのは、カーネルのリンク使用しようするリンカスクリプトである。[8][9]

脚注きゃくちゅう[編集へんしゅう]

  1. ^ "to sustain Haswell’s CPU peak (e.g., 16 multiply-adds per cycle), a core must access 16 matrix elements (= 64 bytes) per cycle, all from memory ... assuming 2.0GHz processor, it requires memory bandwidth of: ≈ 64 × 2.0 GHz = 128 GB/s" 田浦たのうら. (2016). What You Must Know about Memory, Caches, and Shared Memory. 並列へいれつ分散ぶんさんプログラミング, 東京とうきょう大学だいがく.
  2. ^ "__m256 _mm256_fmadd_ps ... Throughput (CPI) ... Haswell ... 0.5" Intel Intrinsics Guide. 2022-04-03閲覧えつらん.
  3. ^ "A simple memcpy experiment ... 4.575611 GB/sec ... an almost proportional improvement up to 10 lists" 田浦たのうら. (2016). What You Must Know about Memory, Caches, and Shared Memory. 並列へいれつ分散ぶんさんプログラミング, 東京とうきょう大学だいがく.
  4. ^ "it requires memory bandwidth ... ≈ 20× more than it provides" 田浦たのうら. (2016). What You Must Know about Memory, Caches, and Shared Memory. 並列へいれつ分散ぶんさんプログラミング, 東京とうきょう大学だいがく.
  5. ^ "multi level caches ... recent processors have multiple levels of caches" 田浦たのうら. (2018). What You Must Know about Memory, Caches, and Shared Memory. 並列へいれつ分散ぶんさんプログラミング, 東京とうきょう大学だいがく.
  6. ^ "multiple levels of caches (L1, L2, . . . )" 田浦たのうら. (2018). What You Must Know about Memory, Caches, and Shared Memory. 並列へいれつ分散ぶんさんプログラミング, 東京とうきょう大学だいがく.
  7. ^ Bonwick, Jeff (6 June 1994). "The Slab Allocator: An Object-Caching Kernel". USENIX Summer 1994 Technical Conference. USENIX.
  8. ^ Torvalds, Linus. “arch/x86/kernel/vmlinux.lds.S at master”. GitHub. 2024ねん5がつ26にち閲覧えつらん Linux カーネル、x86のリンカスクリプト。セクション.data..read_mostly該当がいとう、マクロREAD_MOSTLY_DATA()もちいて間接かんせつてき定義ていぎ
  9. ^ The FreeBSD Project. “sys/conf/ldscript.amd64 at main”. GitHub. 2024ねん5がつ26にち閲覧えつらん FreeBSD カーネル、amd64のリンカスクリプト。セクション.data.read_mostly該当がいとう

参考さんこう文献ぶんけん[編集へんしゅう]

  • ヘネシー, ジョン・L、パターソン, デイビッド・A ちょ富田とみたしん冶 / 村上むらかみかずあきら / 新實にいみ治男はるお やく『コンピュータ・アーキテクチャ 設計せっけい実現じつげん評価ひょうか定量ていりょうてきアプローチ』日経にっけいBPしゃ、1993ねん5がつISBN 4-8222-7152-8 
  • ヘネシー, ジョン・L、パターソン, デイビッド・A ちょ成田なりた光彰みつあき やく『コンピュータの構成こうせい設計せっけい ハードウエアとソフトウエアのインタフェース』 じょうだい2はん)、日経にっけいBPしゃ、1999ねん5がつISBN 4-8222-8056-X 
  • ヘネシー, ジョン・L、パターソン, デイビッド・A ちょ成田なりた光彰みつあき やく『コンピュータの構成こうせい設計せっけい ハードウエアとソフトウエアのインタフェース』 だい2はん)、日経にっけいBPしゃ、1999ねん5がつISBN 4-8222-8057-8 
  • 中森なかもり, あきら『マイクロプロセッサ・アーキテクチャ入門にゅうもん RISCプロセッサの基礎きそから最新さいしんプロセッサのしくみまで』CQ出版しゅっぱんしゃ〈TECHI Vol.20〉、2004ねん4がつISBN 4-7898-3331-3 
  • インテル株式会社かぶしきがいしゃ『IA-32 インテル アーキテクチャ ソフトウェア・デベロッパーズ・マニュアル』。 

関連かんれん項目こうもく[編集へんしゅう]