$B2>A[%a%b%jJ}<0$NJ,N`(B

$B:n@.F|!'(B2006.03.30
$B=$@5F|!'(B2016.10.17

$B99?75-O?(B
(2006.03.30) 2006/3/10 $B$H(B2006/3/11 $B$NF|5-$NFbMF$r85$K:n@.!#(B
(2006.04.07) SPARC 32 $B%S%C%H%W%m%;%C%5$N%Z!<%8%F!<%V%k9=@.$r=$@5!#(B
(2006.05.25) 3.2$B@a%Z!<%8%F!<%V%k%(%s%H%j$rDI2C!#(B
(2012.05.29) PowerPC $B$N%;%0%a%s%H%5%$%:$N8m$j$N=$@5$H?^$NDI2C!#(B
(2016.10.17) Intel64 $B$N(B Process-Context Identifiers(PCIDs) $B$H(B Protection Keys $B$N@bL@$rDI2C!#$^$?(B TLB $B%(%s%H%j$NL58z2=$H(B ARM $B$N>pJs$bDI2C!#%?%$%]$N=$@5!#(B


1. $B$O$8$a$K(B

$B2>A[%a%b%jJ}<0(B (Virtual Memory System) $B$O!"%O!<%I%G%#%9%/$r%a%b%j$NB`HrNN0h$H$7$F;H$&$3$H$G!"Ek:\%a%b%jNL$h$j$bB?$/$N%a%b%j$,$"$k$h$&$K8+$;$+$1$k5;=Q$@!#(B $B$3$N5!9=$NMemory Management Unit (MMU) $B$,Cf?4E*$JLr3d$r2L$?$9!#(B

$B$3$N%I%-%e%a%s%H$O2>A[%a%b%j$N652J=qE*$J2r@b$O>J$-!"3F%^%$%/%m%W%m%;%C%5$N(B MMU $B$,$I$N$h$&$JFCD'$r;}$C$F$$$k$+$r2r@b$9$k!#(B

2. $B2>A[%a%b%j$NA4BNA|$H%Z!<%8%s%00J30$N5!9=(B

$B2>A[%a%b%j$NCf?4E*$J;E;v$O!"!V2>A[%"%I%l%9!W$r!VJ*M}%"%I%l%9!W$KJQ49$9$k$3$H$K$"$k!#(B $B$3$N=hM}$N$3$H$r(B$B%Z!<%8%s%0(B(paging)$B$H8F$V$N$@$,!"3F%"!<%-%F%/%A%c$O%Z!<%8%s%05!9=$N<~$j$KImB0E*$J=hM}$r$$$m$$$m9T$C$F$$$k!#(B $B2>A[%a%b%jJ}<0$O$3$NImB0J*$K$h$C$F!"J,N`$9$k$3$H$,$G$-$k!#(B

$B$H$j$"$($:ImB05!9=$N2r@b$N$?$a$K!"$3$NJ8=q$G$O0J2<$N$h$&$KMQ8l$rDj5A$9$k!#(B

$B%m!<%I!&%9%H%"L?Na$+$iJ*M}%a%b%j$^$G0J2<$N?^$N$h$&$JJQ497PO)$r$?$I$k!#(B $B%"!<%-%F%/%A%c$K$h$C$F%Z!<%8%s%0$NA08e$K$*$^$1$,$D$/$3$H$K$J$k!#(B

$B%

$B$^$:!"$*$^$15!9=$K$D$$$F8+$F$*$3$&!#(B

2.1 $B;vA0=hM}(B

System/370$B!"(BSPARC$B!"(BMIPS$B!"(BAlpha $B$N$h$&$J%"!<%-%F%/%A%c$G$OO@M}%"%I%l%9!a2>A[%"%I%l%9$H$J$k!#(B $B$7$+$7(B IA-32$B!"(BAMD64$B!"(BPowerPC$B!"(BPA-RISC$B!"(BIA-64 $B$G$OO@M}%"%I%l%9$+$i2>A[%"%I%l%9$X$NJQ49$r9T$&5!9=$,F~$k!#(B

$B$3$NJQ49$O(B IA-16 (8086) $B$N$3$H$r;W$$=P$9$HJ,$+$j$d$9$$!#(B IA-16 $B$GD>@\9T$($k%a%b%j%"%I%l%C%7%s%0$O(B 16 $B%S%C%H$@$C$?(B($B$3$l$,O@M}%"%I%l%9$KAjEv(B)$B!#(B $BJL$K%;%0%a%s%H%l%8%9%?$H8F$P$l$k(B 16 $B%S%C%HI}$N%l%8%9%?72$,$"$j!"%a%b%j%"%/%;%9$O%;%0%a%s%H%l%8%9%?$N$I$l$+$K$h$C$F=$>~$5$l$F($B%;%0%a%s%H%l%8%9%?(B) $B!_(B 16 + ($B%*%U%;%C%H%"%I%l%9(B) $B$K$h$C$F9g@.$5$l$F$$$?$N$G!"O@M}%"%I%l%9$N@)8B(B(16$B%S%C%H(B)$B$r1[$($F(B 20 $B%S%C%HI}$N%a%b%j$^$G%"%/%;%92DG=$K$J$C$F$$$?!#(B

8086 $B$N%;%0%a%s%F!<%7%g%s(B

PowerPC($B%;%0%a%s%F!<%7%g%s(B) $B$d(B IA-64($B%j!<%8%g%s(B)$B$O!"(BIA-16 $B$N%;%0%a%s%F!<%7%g%s$HF1$8$h$&$J;E3]$1$GO@M}%"%I%l%9$h$j$bBg$-$J2>A[%"%I%l%9$r;HMQ2DG=$K$9$k!#(B IA-64 $B$G$O(B 64 $B%S%C%HO@M}%"%I%l%96u4V$r(B 2^61 $BKh$K(B 8 $BJ,3d$7!"J,3d$5$l$?%a%b%jBS$K(B 24 $B%S%C%HCM(B << 61 $B$N%j!<%8%g%sCM$,B-$5$l!"2>A[%"%I%l%9$O(B 85 $B%S%C%H$H$7$F07$($k!#(B

PowerPC $B$b(B (32 $B%S%C%H(B PowerPC$B!"(B64 $B%S%C%H(B PowerPC $B$H$b$K(B) $BO@M}%"%I%l%96u4V$,(B 16MB $B$4$H$KJ,3d$5$l!">e0L%S%C%H$,3HD%$5$l$k!#(B $B7k2L(B 32$B%S%C%H(B PowerPC $B$J$i2>A[%"%I%l%9$,(B 52 $B%S%C%H$K3HD%$5$l!"(B64 $B%S%C%H(B PowerPC $B$J$i2>A[%"%I%l%9$,(B 80 $B%S%C%H$K3HD%$5$l$k!#(B

PA-RISC $B$O(B Spacing $B$H$$$&5!9=$r;}$A!"(BIA-16/IA-32 $B$N$h$&$JL?Na$r=$>~$9$k%;%0%a%s%F!<%7%g%s$H!"(BIA-64 $B$N$h$&$JO@M}%"%I%l%96u4V$rJ,3d$9$k%;%0%a%s%F!<%7%g%s$NN>J}$rAH$_9g$o$;$F$$$k!#(B

IA-32 $B$N%;%0%a%s%F!<%7%g%s$O(B IA-16 $B$r7Q>5$7$F$$$k$,!"DL>o$O(B $B%;%0%a%s%H%l%8%9%?$H%*%U%;%C%H%"%I%l%9$rC1=c2C;;$9$k;EAH$_$K$J$C$F$$$k$?$a!"O@M}%"%I%l%9$N%5%$%:!a2>A[%"%I%l%9$N%5%$%:$H$J$k!#(B $B$?$@$7(B FS $B%;%0%a%s%H=$>~$H(B GS $B%;%0%a%s%H=$>~$@$1$O!"%Y!<%9%"%I%l%9$N2C;;$,9T$J$o$l$k!#(B

2.2 $B;v8e=hM}(B

$B$[$H$s$I$N%W%m%;%C%5$O

S/370 $B$O3d$j9~$_$,H/@8$7$?;~$NH/@8M}M3$d%W%m%0%i%`%+%&%s%?CM$NJ]B8$r!"

$B$3$N;EMM$O%^%k%A%W%m%;%C%54D6-$GLdBj$K$J$k!#(B $B3F%W%m%;%C%5$K8GM-$N>pJs$,F1$8WFM$7$F$7$^$&$+$i$@!#(B

S/370 $B$O(B 4K $B%P%$%H$N%Z!<%8$r;}$D$N$@$,!">WFM2sHr$9$k$?$a$K

S/370 $B$N(B prefixing

3. $B%Z!<%8%s%0(B

$B2>A[%a%b%j$NCf3K$K$J$k%Z!<%8%s%0$O!"8GDj%5%$%:$N%Z!<%8$rC10L$K2>A[%"%I%l%9$+$iJ*M}%"%I%l%9$NJQ49$r9T$&!#(B $B%Z!<%8%5%$%:$,(B p $B%S%C%H$N>l9g!"2>A[%"%I%l%9(B m $B%S%C%H$N>e0L(B m - p $B%S%C%H$,(B$B2>A[%Z!<%8HV9f(B (Virtual Page Number; VPN) $B$H$J$j!"l9g$K$O>e0L(B n - p $B%S%C%H$,(B Physical Page Number (PPN) $B$^$?$O(BPage Frame Number (PFN) $B$H$J$k!#(B $B%Z!<%8%s%0$O(B VPN $B$+$i(B PPN $B$X$NJQ49$r9T$$!"%Z!<%8Fb$N%*%U%;%C%H%"%I%l%9$O$=$N$^$^E,MQ$5$l$k!#(B

$B%Z!<%8%s%0(B

VPN $B$+$i(B PPN $B$X$NJQ49I=(B($B%Z!<%8%F!<%V%k(B)$B$OJ*M}%a%b%j>e$KG[CV$5$l$k$,!"(BMMU $BFb$N(B Translation Look-aside Buffer(TLB) $B$,%Z!<%8%F!<%V%k$N%-%c%C%7%e$r9T$$!"%a%b%j%"%/%;%9$NEY$K(B TLB $B$,JQ49$r9T$&!#(B

3.1 $B%Z!<%8%&%)!<%/(B

TLB $B$N%(%s%H%j?t$O(B 30 $B!A(B 1,000$BDxEY$N$?$a!"(BTLB $B%_%9$OIQHK$K5/$3$C$F$$$k(B $B!#(BTLB $B%_%9$,5/$-$?>l9g!"%Z!<%8%F!<%V%k$+$i3:Ev$9$k%(%s%H%j$rFI$_9~$`I,MW$,$"$k$,!"$=$N:]$N=hM}$r%=%U%H%&%'%"$G9T$&$b$N$H!"(BMMU $BFb$N%O!<%I%&%'%"$G9T$&$b$N$N(B2$B

$B%O!<%I%&%'%"$K$h$k%Z!<%8%&%)!<%/(B

$B%O!<%I%&%'%"$K$h$k%Z!<%8%F!<%V%k%&%)!<%/$O!"%W%m%;%C%5$K$h$C$F%Z!<%8%F!<%V%k$N9=@.J}K!$,7h$^$C$F$$$F!"(BTLB $B%_%9$,5/$3$k$H(B MMU $B$,<+F0$Ge$K$"$k%Z!<%8%F!<%V%k$r8!:w$73:Ev$9$k%(%s%H%j$rC5$9!#(B $B%Z!<%8%F!<%V%k$N9=@.J}K!$O!"$@$$$?$$(B2$B

  • 2$BCJ$+$i(B4$BCJ$N3,AX%F!<%V%kJ}<0(B
  • $B%O%C%7%e%F!<%V%kJ}<0(B

$B%Z!<%8%F!<%V%k$N9=@.$,%"!<%-%F%/%A%c$K$h$C$F7h$^$C$F$7$^$&$N$G<+M3EY$,$J$$$,!"%=%U%H%&%'%"$K$h$k%Z!<%8%&%)!<%/$h$j$b9bB.$G$"$k!#(B

$B%=%U%H%&%'%"$K$h$k%Z!<%8%&%)!<%/(B

$B%=%U%H%&%'%"@)8f$N%Z!<%8%F!<%V%k%&%)!<%+!<$O!"(BTLB $B%_%9;~$KNc30%O%s%I%i$K=hM}$,0\$j!"%O%s%I%i$NCf$G@lMQL?Na$J$I$r;H$C$F(B TLB $B%(%s%H%j$rA^F~$9$k!#(B $B$=$N$?$a%=%U%H%&%'%"$K$h$k%Z!<%8%&%)!<%+!<$O!"%Z!<%8%F!<%V%k$N9=B$$r<+M3$K7h$a$i$l$k!#(B $B6KC<$J>l9g$K$O%Z!<%8%F!<%V%k$r@EE*$K:n$i$J$$$3$H$b2DG=!#(B $B$^$?%Z!<%8%5%$%:$,<+M3$K:.:_$G$-$k%W%m%;%C%5$,B?$$!#(B

$B$?$@$7=hM}<+BN$O%O!<%I%&%'%"$K$h$k%Z!<%8%&%)!<%/$HHf$Y$FDcB.$G$"$k!#(B $B$=$N$?$a%=%U%H%&%'%"$K$h$k%Z!<%8%&%)!<%/$r:NMQ$7$F$$$k(B CPU $B$K$$$OJd=u%O!<%I%&%'%"$r;}$D$b$N$,$"$k!#(B UltraSPARC $B$d(B IA-64 $B$O%O%C%7%e%F!<%V%k7A<0$NJd=u%Z!<%8%F!<%V%k$r%a%b%j>e$KG[CV$7!"(BTLB $B%_%9$O$^$:%O!<%I%&%'%"$,%O%C%7%e%F!<%V%k$r8!:w$7$F!"(B $B$=$l$G$b%(%s%H%j$,8+$D$+$i$J$$>l9g$N$_%Z!<%8%F!<%V%k$N8!:w$r%=%U%H%&%'%"E*$K9T$&!#(B

3.2 $B%Z!<%8%F!<%V%k%(%s%H%j(B

$B%Z!<%8%F!<%V%k%&%)!<%/$N7k2L!"2>A[%Z!<%8$KBP1~$9$k(B$B%Z!<%8%F!<%V%k%(%s%H%j(B (Page Table Entry ; PTE)$B$r8+$D$1$k$3$H$,$G$-$k!#(B $B%Z!<%8%F!<%V%k%(%s%H%j$O%"!<%-%F%/%A%c$K$h$C$F7h$^$k(B 4 $B!A(B 16 $B%P%$%H$N%G!<%?9=B$$G$"$k!#(B 32 $B%S%C%H%"!<%-%F%/%A%c$G$O(B 2 $B%P%$%H$+(B 4 $B%P%$%H!"(B64 $B%S%C%H%"!<%-%F%/%A%c$G$O(B 4 $B%P%$%H$+(B 8 $B%P%$%H$K$J$C$F$$$k!#(B

PTE $B$N%U%#!<%k%I$NFbMF$O!"0J2<$N$h$&$J%U%#!<%k%I$,BeI=E*$@!#(B

$BL58z(B Invalid (I) $B%S%C%H(B ($B$=$N5U$K(B $BM-8z(B Valid $B%S%C%H!"B8:_(B Present $B%S%C%H(B)
$B$3$N(B PTE $B$,L58z$G$"$k$3$H$r<($9%S%C%HB0@-(B ($B$"$k$$$OM-8z$G$"$k$3$H$r<($9%S%C%H(B)$B!#(B I $B%S%C%H$,(B 1 $B$N>l9g$O!"(BPTE $B$N;D$j$N%S%C%H%U%#!<%k%I$,L5;k$5$l$k%"!<%-%F%/%A%c$,B?$$!#(B
OS $B$O(B I $B%S%C%H$,(B 1 $B$N>l9g$O!"(B
  1. $B$3$N2>A[%Z!<%8$,%^%C%W$5$l$F$$$J$$!#(B
  2. $B$3$N2>A[%Z!<%8$NFbMF$,%G%#%9%/$K=q$-=P$5$l$F$$$k(B($B%Z!<%8!&%"%&%H$5$l$?(B)$B!#(B
$B$NFs$D$N0UL#$r$b$?$;$k>l9g$,B?$$!#(B $BL5;k$5$l$?;D$j$N%S%C%H%U%#!<%k%I$r;H$C$F!"%9%o%C%W%G%#%9%/$N$I$N0LCV$K=q$-=P$5$l$?$+$r5-O?$7$?$j$9$k!#(B
Physical Page Number (PPN) $B$"$k$$$O(B Real Page Number (RPN)
$B2>A[%Z!<%8$rJQ49$9$k VPN $B$r(B PPN $B$KJQ49$9$k$N$,%Z!<%8%s%0$NLr3d$G$"$k$+$i!"$b$C$H$b=EMW$J%U%#!<%k%I$@!#(B
$BFC8"%l%Y%k(B Privilege Level (PL)
$B%Z!<%8$NFC8"%l%Y%k$r$"$i$o$9%U%#!<%k%I!#(B
$B$3$NFC8"$h$j$bDc$$FC8"$N(B CPU $B$,%"%/%;%9$9$k$H!"FC8"0cH?Nc30$d$=$l$KN`$9$k(B CPU $B3d$j9~$_$,5/$-$k!#(B
PL $B%U%#!<%k%I$O!"(B1 $B%S%C%H$G(B User $B%Z!<%8$H(B Supervisor $B%Z!<%8$r$"$i$o$9%"!<%-%F%/%A%c$d!"?t%S%C%H$r;H$C$F(B PL0 $B!A(B PL3 $B$0$i$$$^$G@_Dj$G$-$k%"!<%-%F%/%A%c$J$I?'!9$"$k!#(B
$B%"%/%;%98"(B Access Rights
$B?t%S%C%H$r;H$C$F%Z!<%8$N%"%/%;%9B0@-$r$"$i$o$9!#(B
$B$U$D$&FI$_9~$_(B(RD)$B!&=q$-9~$_(B(WR)$B!&mprotect(2) $B$O$3$N5!G=$GH?1G$5$l!"0cH?$9$k$H%"%/%;%98"8BNc30$d$=$l$KN`$9$k(B CPU $B3d$j9~$_$,5/$-$k!#(B

$B%"!<%-%F%/%A%c$K$h$C$F$O!"(BRD$B!&(BWR$B!&(BEX $B$,$=$l$>$lFHN)$7$F;XDj$G$-$k$b$N!"(B(No eXecute $BF3F~0JA0$N(B) IA-32 $B$N$h$&$K
$BFC$BFC8">:3J%Z!<%8(B$B$H$$$&%Q%?!<%s$,$"$k!#(B $BFC8">:3J%Z!<%8Fb$N%3!<%I$ODcFC8";~$G$b:3J$9$k!#(B OS $B$O$3$N%Z!<%8$r%7%9%F%`%3!<%k$NF~$j8}$r
$B%"%/%;%9(B Access (A) $B%S%C%H(B/$B%@!<%F%#(B Dirty (D) $B%S%C%H(B ($B$"$k$$$O;2>H(B Reference (R) $B%S%C%H(B/$BJQ99(B Change (C)$B%S%C%H(B)
$B$3$N%Z!<%8$K$J$s$i$+$N%a%b%j%"%/%;%9$,@.8y$9$k$H(B A $B%S%C%H$K(B 1 $B$,N)$A!"=q$-9~$_$,@.8y$9$k$H(B D $B%S%C%H$K(B 1 $B$,N)$D!#(B $B%S%C%H$,$$$C$?$s(B 1 $B$K$J$k$H!"L@<(E*$K%<%m%/%j%"$5$l$k$^$G$O$=$N$^$^$K$J$k!#(B

$B$3$N(B A/D $B%S%C%H$OJ*M}%a%b%j$,ITB-$7$?;~$K!"%Z!<%8%"%&%H$9$k%Z!<%8$rA*$V$?$a$K;H$o$l$k!#(B $B%Z!<%8%"%&%H$9$k%Z!<%8$O!V:G8e$N;2>H$+$i:G$b;~4V$,7P2a$7$F$$$k%Z!<%8!W$rA*$S$?$$$N$@$,!";~9o4IM}$r$^$8$a$K9T$&$N$O%*!<%P!<%X%C%I$,Bg$-$$!#(B $BDj4|E*$K(B A/D $B%S%C%H$r%/%j%"$7$FH$,$J$$%Z!<%8!W$rBg;(GD$KC5$7$F$$$k!#(B

3.1$B@a(B$B$G=R$Y$?%Z!<%8%&%)!<%/$r%O!<%I%&%'%"$G9T$&%"!<%-%F%/%A%c$O(B PTE $B$r(B A/D $B%S%C%H$r<+F0E*$K%*%s$K$7$F$/$l$k$,!"%Z!<%8$N2r7h$r%=%U%H%&%'%"$K$h$k%"!<%-%F%/%A%c$O!"(BA/D $B%S%C%H$rN)$F$k$N$b%=%U%H@)8f$N>l9g$,B?$$!#(B
$B%Z!<%8%5%$%:(B Page Size
$B%Z!<%8$NBg$-$5$r$"$i$o$9?t%S%C%H$N%U%#!<%k%I!#(B
$B%Z!<%8%5%$%:$,8GDj$J%"!<%-%F%/%A%c$G$OB8:_$7$J$$!#(B
$B%a%b%jB0@-(B
$B%a%b%j$NB0@-$r;XDj$9$k!#(B $BDL>o%b!<%I0J30$K!"%a%b%j$N=g=x@-$r4K$a$k%Z!<%8!"%-%c%C%7%e$7$J$$!&%i%$%H%9%k!<$9$k%Z!<%8$J$I$r;XDj2DG=$K$J$k!#(B
$B%0%m!<%P%k(B Global (G) $B%S%C%H(B
3.3 $B@a(B $B$G@bL@$9$k$,(B IA-32 $B$d(B x86-64 $B$G$O%W%m%;%9%9%$%C%A$,5/$-$k;~$K(B TLB $B$r%U%i%C%7%e$9$kI,MW$,$"$k(B($B$?$@$7(B Intel64 $B$O(B PCIDs $B$r;H$&$H!"%W%m%;%9%9%$%C%A$NEY$N(B TLB $B%U%i%C%7%e$r2sHr$G$-$k(B)$B!#(B
$B$7$+$7%W%m%;%94V$G6&M-$J%Z!<%8(B($BNc$($P(B IA-32/Linux $B$O(B 3 GB $B0J>e$N%+!<%M%kNN0h$O!"A4$F$N%W%m%;%9$GF10l$N%^%C%W$,$5$l$F$$$k(B)$B$bB8:_$7!"$=$N%(%s%H%j$O(B TLB $B$+$i%U%i%C%7%e$5$l$FM_$7$/$J$$!#(B G $B%S%C%H$O$3$N(B PTE $B$r(B TLB $B>e$K%T%s$7$F$*$$$F!"%W%m%;%9%9%$%C%A;~$J$I$N(B TLB $B$N0l@F2rJ|$G$O%U%i%C%7%e$7$J$$$GM_$7$$$H$$$&$3$H$r;X<($9$k%S%C%H!#(B

SPARC V9 $B$d(B PowerPC $B7O$K$O!"0UL#$,>/$70c$&$,;w$?$h$&$JB0@-%S%C%H$,$"$k!#(B
S/370 $B$K$O(B PTE $B$G$O$J$/!"%;%0%a%s%H%F!<%V%k%(%s%H%j$K(B Common Segment Bit $B$,$"$j!"A4$F$N2>A[%a%b%j6u4V$G6&DL$J%a%b%jNN0h$r<($9$3$H$,;XDj$G$-$?!#(B
Key$B!"(BAccess ID$B!"(BContext
Key (IA-64)$B!"(BAccess ID (PA-RISC 2.0)$B!"(BSPARC (Context) $B$O(B PTE $BCf$K$"$k%-!<>pJs$G!"(BCPU $BFb$K$"$k%-!<$H%^%C%A$7$J$1$l$P%"%/%;%9$G$-$:Nc30$H$J$k!#(B
Intel64 $B$b(B Protection Keys $B$,F3F~$5$l$?!#(B
$B$=$NB>(B
$B%"!<%-%F%/%A%c$K$h$C$F$O$5$i$KFC
$B%(%s%G%#%"%s5UE>%S%C%H(B
SPARC V9 $B$O%S%C%0!&%(%s%G%#%"%s$H%j%H%k!&%(%s%G%#%"%s$NN>J}$,;H$(!"(BCPU $B$N@)8f%l%8%9%?%S%C%H$G$I$A$i$+$rA*Br2DG=$@!#(B $B$5$i$K2>A[%Z!<%8C10L$G$N@_Dj$b2DG=$G!"$3$N%S%C%H$,N)$C$F$$$k%Z!<%8$O%(%s%G%#%"%s$,H?E>$7$F%"%/%;%9$5$l$k!#(B
$B>r7oJ,4tM=B,(B(predication method for branching)
PA-RISC 2.0 $B$KB8:_$9$kB0@-%S%C%H$G!"$3$N%S%C%H$K$h$C$F%Z!<%8Fb$NL?Na$N>r7oJ,4tM=B,$NM-8z!&L58z$r@Z$jBX$($i$l$k!#(B
Speculative Load$B!"(BNon-faulting load
IA-64$B!"(BSPARC V9$B!"(Bx86-64 $B$J$I$KB8:_$9$k!"Ej5!%m!<%I!"%N%s!&%U%)%k%H!&%m!<%IMQ!#(B
$B%G%P%C%0MQ(B
PA-RISC 2.0 $B$KB8:_$9$kB0@-%S%C%H$G!"%G!<%?%"%/%;%9;~(B/$B%a%b%j=q$-9~$_$K%G%P%C%0%H%i%C%W$,H/@8$9$k!#(B
$B%=%U%H%&%'%"MQ$NM=Ls%S%C%H(B
OS $B$,FH<+$NMQES$K;H$($k$h$&$K;D$7$F$"$k%S%C%H!#(B

3.3 $B%^%k%A%?%9%/(BOS $B$G$N%W%m%;%9$N@Z$jBX$((B

$B%W%j%(%s%F%#%V%^%k%A%?%9%/(B OS $B$G$O!"J#?t$N%W%m%;%9$,%?%$%`%9%i%$%9$G@Z$jBX$o$j$J$,$i=hM}$r?J$a$F$$$k!#(B $BF10l$NO@M}%"%I%l%9$G$b%W%m%;%9$,JQ$o$l$P0[$J$k

$B$=$N$?$a%^%k%A%?%9%/(B OS $B$G$O!"%W%m%;%9$NO@M}%"%I%l%9$,C1=c$K2>A[%"%I%l%9$KJQ49$5$l$k$H(B TLB $BFb$G%(%s%H%j$N>WFM$,5/$-$F%a%b%jJ]8n$KL7=b$,H/@8$9$k!#(B $B$3$NL7=b$r2sHr$9$kJ}K!$O!"0J2<$N(B 3 $B

$B%W%m%;%9%9%$%C%AKh$K(B TLB $B$r%U%i%C%7%e$9$k(B
$B%W%m%;%9%9%$%C%A;~$K(B TLB $B$r%U%i%C%7%e$9$k$3$H$G!"2>A[%"%I%l%9$N>WFM$r2r7h$7$F$$$k!#(B $B$3$NJ}K!$O(B TLB $B%(%s%H%j$rL5BL$K%Q!<%8$9$k2DG=@-$,9b$/8zN($,0-$$!#(B
Segment Table Origin(STO)
$B%W%m%;%9$N%Z!<%8%F!<%V%k9=B$$OJ*M}%"%I%l%96u4VCf$G$=$l$>$lJL$N%"%I%l%9$r;}$C$F$$$k!#(B $B$=$N$?$a%Z!<%8%F!<%V%k9=B$$N@hF,%"%I%l%9$r(B TLB $B%(%s%H%jCf$KKd$a9~$`$N$,9gM}E*$G$"$k!#(B
System/370 $B$O(B 2 $BCJ$N%Z!<%8%F!<%V%k9=B$$r;}$A!"(B1 $BCJL\$r%;%0%a%s%H%F!<%V%k(B(Segment Table)$B$H8F$V!#(B $B$=$7$F(B Segment Table $B$N%"%I%l%9$r(B Segment Table Origin(STO) $B$H8F$V!#(B System/370 $B$O@)8f%l%8%9%?$N(B CR0 $B$K(B STO $B$r%;%C%H$9$k$3$H$G%W%m%;%96u4V(B($B$KAjEv$9$k$b$N(B)$B$r@Z$jBX$($k$,!"(BTLB $B%(%s%H%j$K$O(B STO $B$,5-O?$5$l$k$N$G0[$J$k%W%m%;%96u4V$NF10l$N2>A[%Z!<%8$,(B TLB $BCf$G>WFM$9$k$3$H$O$J$$!#(B
$B$?$@$7(B System/370 $B$O(B 4 KB/page $B$G(B 31 $B%S%C%H%"%I%l%96u4V$r;}$D$N$G!"(BTLB $B%(%s%H%j$O2>A[%Z!<%8$N%?%0(B 19 $B%S%C%H(B + STO $B$N%?%0(B 19 $B%S%C%H$H$+$J$jBg$-$/$J$C$F$7$^$&!#(B
$B%"%I%l%96u4V<1JL;R(B(ASI)
TLB $B$N%(%s%H%j$K(B Virtual Page Number (VPN) $B0J30$K%a%b%j<1JL;R$rKd$a9~$`!#(B TLB $B$O(B VPN + ASI $B$r;H$C$F8!:w$r9T$&$N$G!"%W%m%;%9Kh$K0[$J$k(B ASI $B$rM?$($l$P>WFM$7$J$$!#(B ASI $B$O%"%I%l%96u4V(B/$B%3%s%F%-%9%H$r<1JL$G$-$k<+M3$JHV9f$rA^F~$9$k!#(B Intel64 $B$K$O(B$B%W%m%;%9%3%s%F%-%9%H<1JL;R(B(Process-context identifiers; PCIDs)$B$H$$$&L>A0$GF3F~$5$l$?!#(B
ASI $B$O(B 12 $B%S%C%HA08e$G(B STO $B$h$j$b%S%C%H?t$,>/$J$$$3$H$,B?$$!#(B
Single Address Space
$B%7%9%F%`(B(OS)$BFb$K2>A[%"%I%l%96u4V$r0l$D$@$1MQ0U$9$k$h$&$J2>A[%a%b%j$N;H$$J}$r(B SAS (Single Address Space) $B$H8F$V(B ($B5U$K(B OS $BFb$KJ#?t$N%a%b%j6u4V$,$"$k$h$&$J$b$N$r(BMAS (Multiple Address Space) $B$H8F$V(B)$B!#(B SAS $B$N>l9g$K$O(B TLB $B$N>WFM$OH/@8$7$J$$!#(B
SAS $B$@$H%W%m%;%9Kh$N%a%b%jJ]8n$r$I$&$9$k$N$+$H$$$&5?Ld$,M/$/$,!"(B2.1 $B@a(B $B$G=R$Y$?$h$&$K%W%m%;%C%5$NCf$K$OO@M}%"%I%l%9$h$j$bBg$-$J2>A[%"%I%l%9$r;}$D%"!<%-%F%/%A%c$,$"$k!#(B $B$3$N$h$&$J%"!<%-%F%/%A%c$G$O(B OS $B$K0l$D$@$15pBg$J2>A[%"%I%l%96u4V$rMQ0U$7$F!"%W%m%;%9Kh$NO@M}%"%I%l%9$r$=$NCf$K%^%C%W$7$F$7$^$&$H$$$&9=@.J}K!$,A[%"%I%l%9$K%^%C%W$5$l$k$N$G(B TLB $B%(%s%H%j$N>WFM$O@8$8$J$$!#(B

$B3FJ}<0$N%a%j%C%H!&%G%a%j%C%H$r=R$Y$k$J$i!"(BTLB $B%U%i%C%7%e$OB>$NJ}<0$KHf$Y$F@-G=$,0-$$!#(B ASI$B!"(BSTO$B!"(BSAS $B$rHf$Y$?>l9g!"(BOS $B$,2?@i!A2?K|$H$$$&%W%m%;%9$r@8@.$5$;$k$H(B ASI $B$N%S%C%HI}$OF1;~Av9T$9$k%W%m%;%9?t$r%+%P!<$9$k$N$K==J,$G$J$$$?$a!"%W%m%;%9$H(B ASI $B$N%^%C%T%s%0$K9)IW$,I,MW$H$J$k!#(B STO $B$H(B SAS $B$O(B ASI $B$h$j$b%S%C%HI}$,Bg$-$$$?$a$K$h$jB?$/$N%W%m%;%9?t$r%+%P!<$G$-$k!#(B $B5U@bE*$K$O9=B$E*$K(B STO $B$d(B SAS $B$,Ds6!$9$k%S%C%HI}$,(B OS $B$GF0:n$9$k:GBg%W%m%;%9?t$r5,Dj$9$k$3$H$K$J$k!#(B

$B%"!<%-%F%/%A%c$4$H$NJ}<0$O(B $BI=(B1 $B$N%W%m%;%9@ZBX$NMs$K$^$H$a$F$*$/!#(B

3.4 TLB $B%(%s%H%j$NL58z2=(B

$B%W%m%;%9Fb$N%a%b%j6u4V$O(B mmap() $B$d(B mprotect() $B$N$h$&$J%7%9%F%`%3!<%k$K$h$C$F2TF/Cf$KJQ99$rpJs$,(B TLB $B$K:\$C$F$$$k>l9g!"3:Ev$9$k(B TLB $B%(%s%H%j$rL58z2=$9$kI,MW$,$"$k!#(B

$B>&6H%3%s%T%e!<%?%7%9%F%`$H$7$F2>A[%a%b%jJ}<0$r:G=i$KF3F~$7$?(B System/370 $B$O(B Invalidate Page Table Entry(IPTE) $B$H$$$&L?Na$rF3F~$7$?!#(B IPTE $BL?Na$Oe(B($Be(B)$B$N%Z!<%8%F!<%V%k%(%s%H%j$r;XDj$9$k$H!"$=$N%Z!<%8%F!<%V%k%(%s%H%j$+$i@8$8$?(B TLB $B%(%s%H%j$rL58z2=$9$kL?Na$G$"$k!#(B $BB>$N%"!<%-%F%/%A%c$N(B TLB $B%(%s%H%j$NL58z2=L?Na$OO@M}(B/$B2>A[%"%I%l%9$r;XDj$9$k!#(B

System/370 $B$N(B IPTE $BL?Na$O!"(BIPTE $BL?Na$r

PowerPC $B$K$O(B IPTE $B$HF1MM$KB>$N%W%m%;%C%5$N;XDj$N(B TLB $B%(%s%H%j$rL58z2=$9$k(B TLB Invalidate Entry(tlbie) $BL?Na$,$"$k!#(B $B$?$@$7(B tlbie $BL?Na$OB>$N%W%m%;%C%5$,(B TLB $B%(%s%H%j$rL58z2=$9$k$N$rBT$?$:$K=*N;$9$k!#(B $BB>$N(B CPU $B$,(B TLB $B%(%s%H%j$rL58z2=$7$?$3$H$r8!::$9$k$K$O(B TLB Synchronize(tlbsync) $BL?Na$r;H$&!#(B tlbsync $BL?Na$,40N;$9$k$H!"@h9T$9$k(B tlbie $BL?Na$,=P$7$?(B TLB $B%(%s%H%j$NL58z2=$O40N;$7$?$3$H$,J]>Z$5$l$k!#(B

IA-32 $B$d(B x86-64 $B$K$O(B Invalidate TLB Entries (INVLPG) $BL?Na$,$"$k!#(B INVLPG $BL?Na$O$3$NL?Na$r$N(B CPU $B$K$O1F6A$rM?$($J$$!#(B $B%^%k%A%9%l%C%I%W%m%;%9$N%a%b%j6u4V$rJQ99$7$F$$$k>l9g$K$O!"%Z!<%8%F!<%V%k9=B$BN$rJQ99$7$?1F6A$O(B SMP $B%7%9%F%`9=@.Fb$NA4(B CPU $B$+$i(B TLB $B%(%s%H%j$rL58z2=$9$kI,MW$,$"$k!#(B IA-32 $B$d(B x86-64 $B$OL?Na%l%Y%k$G$O$3$l$rJ]>Z$9$k5!9=$,$J$/!"(BInter-Processor Interruption(IPI) $B$N$h$&$J(B CPU $B4VDL?.$r;H$$$J$,$i%=%U%HE*$KA4(B CPU $B$r%+%P!<$9$kI,MW$,$"$k!#(B

$B%"!<%-%F%/%A%c$4$H$NJ}<0$O(B $BI=(B1 $B$N(B TLB $B%(%s%H%jL58z2=$NMs$K$^$H$a$F$*$/!#(B

3.5 $B%-%c%C%7%e$N5-O?$9$k%"%I%l%9(B

TLB $B$H$O>/$7N%$l$k$,!"%a%b%j%-%c%C%7%e$b%"%I%l%9$r5-O?$7$F$$$k!#(B $B$3$N%-%c%C%7%eFb$N%"%I%l%9$,2>A[%"%I%l%9$G5-O?$5$l$k$+!"

  1. $B2>A[%"%I%l%9$G5-O?$7$F$$$k>l9g!"O@M}%"%I%l%9"*2>A[%"%I%l%9$NJQ49$r9T$&$@$1$G%-%c%C%7%e$N8!:w$,2DG=$K$J$k!#(B $B$=$N$?$aHs>o$K9bB.$K=hM}$G$-$k!#(B $B$?$@$7F10lJ*M}%a%b%j$,J#?t$N2>A[%"%I%l%9$K%^%C%W$5$l$k%(%$%j%"%9$NLdBj$d!"(B3.3 $B@a(B $B$G=R$Y$?%W%m%;%9@Z$jBX$($K$h$k(B TLB $B=hM}$X$NBP1~$,I,MW$K$J$k!#(B
  2. $Bl9g!"(B $B%(%$%j%"%9$d%W%m%;%9@Z$jBX$($K$h$kL7=b$OH/@8$7$J$$!#(B $B$?$@$7%-%c%C%7%e8!:w$r9T$&A0$K%Z!<%8%s%0JQ49$K$h$k%"%I%l%9JQ49$,I,MW$J$N$G!"3F%m!<%I!&%9%H%"=hM}$,DcB.$K$J$k!#(B

$B8=:_$N%W%m%;%C%5$O!"9bB.$J%"%/%;%9$,I,MW$J(B L1 $B%-%c%C%7%e$G$O!"2>A[%"%I%l%9$G5-O?$r9T$&$b$N$,B?$$!#(B $B%-%c%C%7%e$H(B TLB $B$OO"F0$7$F$*$j!"(BTLB $B%(%s%H%j$,:o=|$5$l$k$H%-%c%C%7%e$b%Q!<%8$5$l$k$H$$$C$?=hM}$r9T$$!"L7=b$rKI$$$G$$$k!#(B

L2 $B0J9_$NHf3SE*BgMFNL$N%-%c%C%7%e$O!"2>A[%"%I%l%9$G5-O?$9$k$b$N$HJ}%?%$%W$,B8:_$9$k!#(B

4. $B%"!<%-%F%/%A%cJL$N>\:Y(B

$B$3$3$+$i$O%"!<%-%F%/%A%cKh$N2>A[%a%b%j$N>\:Y$rNs5s$9$k!#(B

$BI=(B1: $B%"!<%-%F%/%A%cKh$N2>A[%a%b%jJ}<0$NFCD'(B
$B%"!<%-%F%/%A%c(B CPU $BO@M}(B $B2>A[(B $BJ*M}(B TLB walker $B%Z!<%8%5%$%:(B $B%W%m%;%9@ZBX(B TLB$B%(%s%H%jL58z2=(B $BHw9M(B
System/370 XA $B0JA0(B 32 24 24 Hard 2KB STO IPTE ($B%0%m!<%P%k(B)  
System/370 XA $B0J9_(B 32 31 31 Hard 4KB  
IA-32 i486$B0JA0(B 32 32 32(?) Hard 4KB TLB$B%U%i%C%7%e(B INVLPG ($B%m!<%+%k(B)  
IA-32 Pentium 32 32 32 Hard 4KB$B!"(B4MB(?)  
IA-32 Pentium Pro 32 32 36 Hard 4KB$B!"(B4MB  
AMD64/Intel64   64 48 52 Hard 4KB$B!"(B2MB$B!"(B1GB TLB$B%U%i%C%7%e(B
ASI(*)
ASI $B$,;H$($k$N$O(B PCIDs $BF3F~0J9_(B
PowerPC 32-bit MPC750 32 52 32 Hard 4KB SAS tlbie ($B%0%m!<%P%k(B)  
PowerPC 64-bit PowerPC 970 64 80 62 Hard 4KB$B!"(B16MB SAS tlbie ($B%0%m!<%P%k(B)
tlbiel ($B%m!<%+%k(B)
$B;EMM>e$O%Z!<%8%5%$%:$r(B 212$B!A(B228 $B%P%$%H$KJQ99$G$-$k$,!"K\Ev$K$H$l$k%Z!<%8%5%$%:$O(B CPU $B$N
SPARC 32-bit   32 32 36 Hard 4KB ASI ?  
SPARC 64-bit UltraSPARC III 64 64 43 Soft + Support Hard 8KB$B!"(B64KB$B!"(B512KB$B!"(B4MB ASI ?  
PA-RISC 32-bit   32 52 32 Soft 4KB$B!"(B32KB SAS PDTLB$B!"(B PITLB ($B%0%m!<%P%k(B)
PDTLBE$B!"(BPITLBE ($B%m!<%+%k(B)
 
PA-RISC 64-bit   32 96 62 Soft 4KB$B!A(B64MB (4$BG\9o$_(B) SAS  
MIPS 32-bit R3000 32 32 ? Soft ? ASI ?  
MIPS 64-bit R12000 64 44 40 Soft 4KB$B!A(B16MB (4$BG\9o$_(B) ASI ?  
Alpha 21264 64 48 44 Soft 8KB ASI PAL_tbi (?)  
IA-64 Itanium2 64 85 50 Soft + Support Hard 4KB$B!A(B256MB(4$BG\9o$_(B) + 8KB SAS ptc.l ($B%m!<%+%k(B)
ptc.g$B!"(Bptc.ga ($B%0%m!<%P%k(B)
ptc.e ($B%m!<%+%k(B)
 
ARM 32-bit (AArch32)   32 32 32 Hard 4KB$B!"(B64KB ASI ? $B%*%W%7%g%s$GJ*M}%a%b%j$r(B 40 $B%S%C%H$K3HD%$G$-$k$,%Z!<%8%5%$%:$,(B 16MB $B$K$J$k!#(B
ARM 64-bit (AArch64)   64(56) 48 48 Hard 4KB$B!"(B16KB$B!"(B64KB ASI ? $BO@M}%"%I%l%9$N>e0L(B 8 $B%S%C%H$,%?%0$K$J$C$F$$$k!#(B

$B0J2<$N@bL@$G$O3F%"!<%-%F%/%A%cKh$NMQ8l$r;H$&$N$G(B 2.$B$GDj5A$7$?MQ8l$H$O

IBM System/370

System/370 $B$O2>A[%a%b%j5!9=$rHw$($?:G=i$N>&6H%3%s%T%e!<%?%7%9%F%`$G$"$k!#(B

ESA/370 $B$K$O(B dual address space facility $B$,DI2C$5$l(B primary space mode $B0J30$K$b$&0ll=j$,0c$&E@$r=|$/$H!"$I$N%b!<%I$bBg:9$,$J$$!#(B

x86$B!"(BIA-32

x86-64$B!"(BAMD64$B!"(BIntel64$B!"(BIA32m$B!"(BEM64T

PowerPC 32 $B%S%C%H(B

PowerPC 64 $B%S%C%H(B

SPARC 32 $B%S%C%H(B (SPARC V8)

SPARC 64 $B%S%C%H(B (SPARC V9)

PA-RISC 32$B%S%C%H(B (PA-RISC 1.1)

PA-RISC 64$B%S%C%H(B (PA-RISC 2.0)

MIPS 32 $B%S%C%H(B

MIPS 64 $B%S%C%H(B

Alpha

IA-64$B!"(BIPF

IA-64 $B%"!<%-%F%/%A%c$O!"Hs>o$KB?:L$J2>A[%a%b%j5!9=$r;}$C$F$$$k!#(B

$B%3%a%s%H(B

$B%3%a%s%H$r=q$-9~$`(B

TOP    $B7G<(HD(B    $BLa$k(B
Written by NAKAMURA Minoru, Email: nminoru atmark nminoru dot jp, Twitter:@nminoru_jp