$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%f!<%6!<%W%m%;%9$+$i8+$?$H$-$K%m!<%I!&%9%H%"L?Na$GD>@\;XDj$9$k%"%I%l%9$r(B$BO@M}%"%I%l%9(B(logical adderss) $B$H8F$V$3$H$K$9$k!#(B
- $B%Z!<%8%s%0$r9T$&A0$N%"%I%l%9$r(B$B2>A[%"%I%l%9(B(virtual adderss) $B$H8F$V$3$H$K$9$k!#(B
- $B%Z!<%8%s%0$r9T$C$?8e$N%"%I%l%9$r(B$B $B$H8F$V$3$H$K$9$k!#(B
- $BJ*M}E*$J$BJ*M}%"%I%l%9(B(physical adderss)
$B$H8F$V$3$H$K$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$^$:!"$*$^$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
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
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
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
- $B$3$N2>A[%Z!<%8$,%^%C%W$5$l$F$$$J$$!#(B
- $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$+!"
- $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
- $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
- 31 $B%S%C%H2>A[%"%I%l%96u4V$H(B 31 $B%S%C%HJ*M}%"%I%l%96u4V$r;}$D!#(B
$BJ*M}%"%I%l%9$O8e$K$@$s$@$s3HD%$5$l$?!#(B
- $B%Z!<%8$O:G=i(B 2KB/page $B$@$C$?$,!"8e$K(B 4KB/page $B$K3HD%$5$l$k!#(B
ESA/390 $B0J9_$O(B 4KB/page $B$N$_!#(B
- $B2>A[%"%I%l%9$N(B $B>e0L(B 19 $B%S%C%H$,(B VPN$B!#(B
$B2<0L(B 12 $B%S%C%H$,%Z!<%8Fb$N%*%U%;%C%H$H$J$k!#(B
- TLB $B%_%9;~$N%Z!<%8%F!<%V%k%&%)!<%/(B(page table walk) $B$O%O!<%I%&%'%"$K$h$C$F9T$o$l$k!#(B
- $B%Z!<%8%F!<%V%k$N8!:w$O(B 2 $BCJ3,$G9T$o$l!"(B1$BCJL\$N%F!<%V%k$r(B Segment-Table$B!"(B2$BCJL\$N%F!<%V%k$r(B Page-Table $B$H8F$V!#(B
- $B$^$:%l%8%9%?Cf$K(B Segment Table $B$N0LCV(B(Segment Table Origin) $B$,=q$+$l$F$$$F!"$=$3$r(B Segment-Table $B$H$9$k!#(B
- VPN $B$N>e0L(B m $B%S%C%H$r%$%s%G%C%/%9$H$7$F(B Segment_Table[VPN $B$N>e0L(B m $B%S%C%H(B] $B$r8!:w$9$k$H!"(BPage Table $B$N0LCV(B(Page Table Origin) $B$X$N%]%$%s%?$,F@$i$l$k!#(B
- Page_Table[VPN $B$N2<0L(B 19 - m $B%S%C%H(B] $B$G%Z!<%8%F!<%V%k%(%s%H%j$,F@$i$l$k!#(B
- $B%Z!<%8%F!<%V%k%(%s%H%j$NCf$KJ*M}%a%b%j%Z!<%8HV9f(B(PPN) $B$,=q$+$l$F$$$k!#(B
VPN $B$N6h@Z$j$G$"$k(B m $B$O%W%m%;%C%5Cf$N%3%s%H%m!<%k%l%8%9%?$GD4@02DG=!#(B
- Prefixing $B5!9=(B
- S/370 $B$OJ*M}%"%I%l%9$NDc0L$N%"%I%l%9(B (0$B!A(B511) $B$r!"3d$j9~$_;~$N%W%m%;%C%5>pJs$r=q$-=P$7$N$?$a$J$I$K;HMQ$9$k!#(B
$B$=$N$?$a%^%k%A%W%m%;%C%5$K$3$NDc0L%"%I%l%9$,%P%C%F%#%s%0$9$k!#(B
- $B$3$N%P%C%F%#%s%0$r2sHr$9$k$?$a$K!"K\Ev$NJ*M}%"%I%l%96u4V(B(Absolute Address Space) $B$H%W%m%;%C%5$+$i8+$?>l9g$N5<;wJ*M}%"%I%l%96u4V(B (Real Address Space) $B$HFs=E2=$,$J$5$l$F$$$k!#(B
Absolute Address Space $B$H(B Real Address Space $B$N0c$$$O!":G2<0L$N(B 1 $B%Z!<%8$H%W%m%;%C%5$N(B prefix register $B$,;X$9%Z!<%8$,F~$lBX$o$C$F$_$($k$3$H$G$"$k!#$3$l$,(B prefixing$B!#(B
- Prefixing $B$O(B VA-PA $BJQ49$N8e$N(B Real Address $B$KBP$7$FE,MQ$5$l$k!#(B
- $B2>A[%a%b%j$N5!9=$G$O$J$$$N$@$,!"(B$B%9%H%l!<%8!&%-!<(B (Storage Key) $B$H8F$P$l$k5!9=$,B8:_$9$k!#(B
System/370 $B$OJ*M}%a%b%j$b%Z!<%8J,3d$5$l$F$*$j!"J*M}%Z!<%8Kh$K(B 7 $B%S%C%H$N>pJs$,IU2C$5$l$F$$$k(B($B$3$l$,%9%H%l!<%8!&%-!<(B)$B!#(B
- $B%9%H%l!<%8!&%-!<$O(B 4 $B%S%C%H$N(B ACcess-Controlled (ACC) $B%S%C%H!"(B1 $B%S%C%H$N(B Fetch-Protection (F) $B%S%C%H!"(B1 $B%S%C%H$N(B Reference (R) $B%S%C%H!"(B1 $B%S%C%H$N(B Change (C) $B%S%C%H$r;}$D!#(B
- CPU $BFb$N@)8f%l%8%9%?$N0lIt$K(B 4 $B%S%C%H$N%-!<>pJs$,B8:_$9$k!#(B
$B%a%b%j$X$N=q$-9~$_$,9T$o$l$k:]$K!"(BCPU $B$N%-!<$H%Z!<%8$N(B ACC $B%S%C%H$NHf3S$,9T$o$l!"0lCW$7$J$$$H=q$-9~$_$,$G$-$:%W%m%F%/%7%g%s3d$j9~$_$,H/@8$9$k!#(B
$B$3$l$r(B Key-Controlled Protection $B$H8F$V!#(B
- $B%Z!<%8$K(B F $B%S%C%H$,N)$C$F$$$k>l9g!"%a%b%j$NFI$_9~$_$K$b(B Key-Controlled Protection $B$,$O$?$i$/$h$&$K$J$k!#(B
- $B%a%b%j$X$N%"%/%;%9$,$"$C$?>l9g$K$O(B R $B%S%C%H$K!"%"%/%;%9$,=q$-9~$_$N>l9g$K$O$5$i$K(B C $B%S%C%H$K<+F0E*$K(B 1 $B$,=q$-9~$^$l$k!#(B
- $B%W%m%0%i%`$+$i$O@lMQL?Na$G%9%H%l!<%8!&%-!<$rFI$_=q$-$G$-$k!#(B
$B$D$^$j%9%H%l!<%8!&%-!<$O!"(B3.2 $B@a(B $B$G@bL@$7$?(B Access Rights $B$H(B R/C $B%S%C%H$H(B Key $B$HF1MM$N5!G=$rDs6!$G$-$k!#(B
$B$?$@$7B>$N%"!<%-%F%/%A%c$,(B TLB/MMU $B$K$h$C$F2>A[%"%I%l%96u4V>e$Ge$GTLB $B$N3F%(%s%H%j$O(B Segment Table Origin (20-bit) $B$H(B VPN (20-bit) $B$rAH$_9g$o$;$F!"%a%b%j%"%/%;%9;~$K$O(B CR0 $B$HO@M}%"%I%l%9$NN>J}$r%-!<$K$7$F8!:w$9$k!#(B
$B%W%m%;%9Kh$K(B STO $B$,0[$J$k$N$GJ#?t%W%m%;%9J,$N(B TLB $B%(%s%H%j$,:.:_$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
- i386 $B0J9_$N(B x86$B!"$D$^$j(B IA-32 $B$O(B 32 $B%S%C%H(B CPU $B$G!"(B32 $B%S%C%H$N2>A[%"%I%l%96u4V$H(B 32 $B%S%C%H$NJ*M}%"%I%l%96u4V$rMQ$$$k!#(B
- IA-32 $B$N(B VM $B$O%;%0%a%s%F!<%7%g%s!\%Z!<%8%s%0$H$$$&(B2$BCJ3,%7%9%F%`!#(B
- $B%f!<%6!<%i%s%I$N%a%b%j%"%I%l%9$rO@M}%"%I%l%9$H8F$V!#(B
$BO@M}%"%I%l%9$O(B DS$B!"(BFS$B!"(BGS$B!"(BSS$B!"(BCS $B$H$$$C$?%;%0%a%s%H%l%8%9%?$K$h$k=$>~$r$B%j%K%"%"%I%l%9(B$B$H$J$k!#(B
$B$3$l$,(B x86 $B$N%;%0%a%s%F!<%7%g%s!#(B
- $B%j%K%"%"%I%l%9$O%Z!<%8C10L2>A[%a%b%j$G$"$k%Z!<%8%s%0=hM}$NBP>]$H$J$k!#(B
IA-32 $B$O(B 4KB/page $B$,4pK\$J$N$G2<0L(B 12 $B%S%C%H$,%*%U%;%C%H%"%I%l%9$G!">e0L(B 20 $B%S%C%H$,(B VPN $B$H$J$k!#(B
- TLB $B%_%9;~$N%Z!<%8%F!<%V%k%&%)!<%/$O%O!<%I%&%'%"$,9T$&!#(B
$B$3$N%Z!<%8%F!<%V%k$b(B 2 $BCJ3,!#(B
$B$?$@$7(B 20 $B%S%C%H$N(B VPN $B$O!"(B10$B%S%C%H(B : 10$B%S%C%H$KJ,$1$k$H8GDj$5$l$F$$$k!#(B
$B$^$?%;%0%a%s%H%F!<%V%k$H%Z!<%8%F!<%V%k$NBg$-$5$O(B 4KB $B$H$J$k!#(B
- Pentium $B0J9_$N%W%m%;%C%5$K$O(B$B%Z!<%83HD%%b!<%I(B(Paging Size Extensions; PSE)$B$,$"$j!"(B
$B2>A[%Z!<%8$r(B 4MB/page $B$K9-$2$i$l$k!#(B
$B$3$N>l9g$O%Z!<%8%F!<%V%k$N0lIt$,(B 1 $BCJ3,$K$J$j!">e0L(B 10 $B%S%C%H$,(B VPN $B$G2<0L(B 22 $B%S%C%H$,%*%U%;%C%H$K$J$k!#(B
- Pentium Pro $B0J9_$N%W%m%;%C%5$K$O(B$BJ*M}%"%I%l%93HD%(B(Physical Address Extention; PAE)$B$,$"$j!"J*M}%"%I%l%9$r(B 36 $B%S%C%H(B (64$B%.%,%P%$%H(B) $B$^$G3HD%$G$-$k!#(B
- $B%Z!<%8%s%0JQ49$O(B CR3 $B%l%8%9%?$N;X$9%Z!<%8%F!<%V%k$+$i8!:w$r3+;O$9$k!#(B
$B%?%9%/%9%$%C%A$r9T$&$+(B CR3 $B%l%8%9%?$rJQ99$9$k$H(B ($B4pK\E*$K(B) TLB $B$O%U%i%C%7%e$5$l$k!#(B
x86-64$B!"(BAMD64$B!"(BIntel64$B!"(BIA32m$B!"(BEM64T
- AMD64/EM64T ($B$N%m%s%0%b!<%I(B) $B$O(B 64 $B%S%C%H(B CPU $B$@$,!"2>A[%"%I%l%96u4V$O(B 48 $B%S%C%H$K@)8B$5$l$F$$$k(B($B>e0L(B 16 $B%S%C%H$OM=Ls(B)$B!#(B
$B$3$l$O(B TLB $B%_%9;~$N%Z!<%8%F!<%V%k%&%)!<%/$,%O!<%I%&%'%"$f$($NG{$j!#(B
$BJ*M}%"%I%l%96u4V$O:GBg(B 52 $B%S%C%H(B($B:#8e$N3HD%$N$?$a$NM=Ls%S%C%H$b4^$a$k(B)$B!#(B
- $B4pK\$O(B 4KB/page $B$G(B $B2<0L(B 12 $B%S%C%H$,%*%U%;%C%H%"%I%l%9$K$J$k$N$G!"Cf$N(B 36 $B%S%C%H$,(B VPN $B$K$J$k!#(B
$B%Z!<%8%F!<%V%k%&%)!<%/$N:]$K$O(B 36 $B%S%C%H$N(B VPN $B$r(B 9 $B%S%C%H$E$D(B 4 $B$D$K6h@Z$C$F!"(B4$B%l%Y%k$N%Z!<%8%F!<%V%k$r8!:w$9$k!#(B
- IA-32 $B$N(B PSE $B$HF1MM$NJ}K!$G(B 2MB/page $B$N%b!<%I$,;H$($k!#(B
$B$3$N>l9g$O(B 4 $B%l%Y%k%Z!<%8%F!<%V%k$N:G8e$N0lCJ$,$J$/$J$j!"%Z!<%8%F!<%V%k$N0lIt$,(B 3 $B%l%Y%k$K$J$k!#(B
- AMD64 $B$K$b%;%0%a%s%F!<%7%g%s$O$"$k$N$@$,!"$[$H$s$IL5;k$G$-$k!#(B
- TLB $B$O(B CR3 $B%l%8%9%?$N;X$9%Z!<%8%F!<%V%k$+$i8!:w$r3+;O$9$k!#(B
$B%?%9%/%9%$%C%A$r9T$&$+(B CR3 $B%l%8%9%?$rJQ99$9$k$H(B ($B4pK\E*$K(B) TLB $B$O%U%i%C%7%e$5$l$k!#(B
- CR3 $B%l%8%9%?$NJQ99$G%U%i%C%7%e$NProcess-Context Identifiers(PCIDs) $B$,F3F~$5$l$?!#(B
$B$3$l$O(B SPARC $B$d(B MIPS $B$N%"%I%l%96u4V<1JL;R$HF1MM$N5!9=$G$"$k!#(B
TLB $B$N%(%s%H%j$K(B 12 $B%S%C%H$N%?%0$rKd$a9~$_!"%3%s%F%-%9%H%9%$%C%A$G0JA0$N%W%m%;%9$N(B TLB $B%(%s%H%j$,A4%U%i%C%7%e$5$l$k$3$H$r2sHr$7$F$$$k!#(B
- CR4.PCIDE=1 $B$N>l9g!"(BINVLPG $BL?Na$K$h$C$FL58z2=$5$l$k(B TLB $B%(%s%H%j$O8=:_(B CR3 $B$,A*Br$7$F$$$k(B PCID $B6u4VFb$N$b$N$H$J$k!#(B
- PCID $B5!G=$N$?$a$K(B INVPCID $BL?Na$,DI2C$5$l$?!#(BINVPCID $BL?Na$O;XDj$7$?(B PCID $B$KB0$9$kA4(B TLB $B%(%s%H%j$r%U%i%C%7%e$9$k!"(BG $B%S%C%H$NN)$C$F$$$J$$A4(B TLB $B%(%s%H%j$r%U%i%C%7%e$9$k!"(BG $B%S%C%H$,N)$C$F$$$k$b$N$b4^$a$FA4$F%U%i%C%7%e$9$k$H$$$&5!G=$,;H$($k!#B>$K(B INVPCID $BL?Na$O(B INVLPG $BL?Na$HF1MM$N5!G=$,$"$k!#(B
- CR3 $B%l%8%9%?$rJQ99$9$k>l9g!"(BMOV TO CR3 $B$,(B CR3 $B$N@_DjCM$H$J$k%=!<%9%*%Z%i%s%I$N:G>e0L%S%C%H(B(bit 63) $B$K(B 1 $B$rN)$F$F(B CR3 $B$r@_Dj$7$?>l9g$O(B TLB $B%(%s%H%j$O$$$:$l$bL58z2=$5$l$J$$!#%=!<%9%*%Z%i%s%I$N:G>e0L%S%C%H$K(B 0 $B$rN)$F$?>l9g!"(BCR3 $B$K@Z$jBX$o$kA0$K%=!<%9%*%Z%i%s%I$N(B 0$B!A(B11 $B%S%C%H$N;XDj$9$k(B PCID $B$KB0$9$k(B TLB $B%(%s%H%j$,L58z2=$5$l$k!#$J$*%=!<%9%*%Z%i%s%I$N:G>e0L%S%C%H$r(B 1 $B$K;XDj$7$F(B MOV TO CR3 $B$re0L%S%C%H$O(B 0 $B$N$^$^$H$J$k!#(B
- $B$J$*(B PCIDs $B$O(B Intel64 $B$N(B IA-32e $B$N$_$N5!G=$G!"(B32 $B%S%C%H%b!<%I$G$O;H$($J$$!#(B
- Intel64 $B$N(B IA-32e $B%b!<%I$K$O(B Protection Keys $B$H8F$V%"%/%;%9@)8B$,F3F~$5$l$?!#(B
$B$3$l$O2>A[%Z!<%8$K(B 0$B!A(B15 $B$N%-!
- $B%Z!<%8%F!<%V%k%(%s%H%j$N:G>e0L%S%C%H(B XD(execute-disable) $B$KB3$/(B 4 $B%S%C%H$K(B protection key $B$r@_Dj$9$k!#(B
- PKRU(Protection key rights register for user pages)$B%l%8%9%?$,%"%/%;%92DG=$J%-!<$r@)8f$9$k!#(B
16$B$l(B 2 $B%S%C%H$N@)8f>pJs$r;}$A!"3F%-!<$K%"%/%;%96X;_!&=q$-9~$_6X;_$r@_Dj$G$-$k!#(B
PKRU $B%l%8%9%?$O(B RDPKRU $BL?Na$H(B WRPKRU $BL?Na$GFI$_=q$-$9$k!#(B
- Protection key $B0cH?$G(B #PF $BNc30$,H/@8$7$?>l9g!"%9%?%C%/>e$K@Q$^$l$k%(%i!<%3!<%I$N(B 5 $B%S%C%HL\$,(B PK $B%S%C%H$H$J$k!#(B
Protection-key $B$,860x$G(B #PF $BNc30$,H/@8$7$?>l9g!"(BPK $B%S%C%H$,(B 1 $B$H$J$j(B protection-key violation $B$G$"$k$3$H$,H=L@$9$k!#(B
PowerPC 32 $B%S%C%H(B
- 32 $B%S%C%H(B PowerPC $B$O!"(BIA-32 $B$HF1MM$K%;%0%a%s%F!<%7%g%s!\%Z!<%8%s%0$N(B2$BCJ3,$r9T$&!#(B
$B%W%m%0%i%`Cf$K;HMQ$5$l$k%a%b%j%"%I%l%9$O(B effective address $B$H8F$P$l(B 32$B%S%C%H$@$,!"%;%0%a%s%F!<%7%g%s$rPowerPC $B$N%;%0%a%s%F!<%7%g%s$O!"(Beffective address $B$r(B 16 MB $BKh$K6h@Z$C$F%;%0%a%s%H$H8F$s$G$$$k!#(B
$B$D$^$j(B effective address $B$N>e0L(B4$B%S%C%HKh$KJL%;%0%a%s%H$H$7$F6hJL$5$l$k!#(B
$B$3$N>e0L(B 4 $B%S%C%H$r(B virtual segument ID $B$H8F$V!#(B
$B%W%m%;%C%5Cf$K(B 16 $BK\$N%;%0%a%s%H%l%8%9%?$,$"$j!">e0L(B 24 $B%S%C%H$N%"%I%l%9$rJ];}$7$F$$$k!#(B
char* Segment_Registers[16] /* $B>e0L(B24$B%S%C%H(B */
$B%;%0%a%s%H%l%8%9%?$NCM$H(B effective address $B$N2<0L(B 28 $B%S%C%H$rB-$7$?$b$N$,(B TLB $B$+$i8+$?>l9g$N(B virtual address $B$K$J$k!#(B
$B%;%0%a%s%H%l%8%9%?$NCM$O%W%m%0%i%`Cf$GJQ99$G$-$k$N$G!"(B 24 + 28 $B$G(B 52 $B%S%C%HJ,$N2>A[%"%I%l%96u4V$r;}$C$F$$$k$H9M$($k$3$H$b$G$-$k!#(B
Programming Environments Manual for 32-Bit Implementations of ther PowerPC™ Architecture
- PowerPC $B$O%Z!<%8%s%0$O(B 4KB/page $B$,4pK\!#(B
TLB $B%_%9;~$N%Z!<%8%F!<%V%k%&%)!<%/$O%O!<%I%&%'%"@)8f!#(B
Virtual address $B$N>e0L(B 20 $B%S%C%H$r(B VPN $B$H$7!"%O%C%7%e8!:w$5$l$k%Z!<%8%F!<%V%k$r;}$D!#(B
$B%F!<%V%k$N%5%$%:Ey$OD4@02DG=!#(B
PowerPC 64 $B%S%C%H(B
- 64 $B%S%C%H(B PowerPC $B$G$O(B 64 $B%S%C%H(B effective address $B$H!"%;%0%a%s%F!<%7%g%s$r9T$&$3$H$K$h$j(B 80 $B%S%C%HAjEv$N(B virtual address $B$,;H$($k!#(B
Physical address $B$O(B 62 $B%S%C%H!#(B
- $B%;%0%a%s%F!<%7%g%s$O(B 64 $B%S%C%H$N$&$A>e0L(B 36 $B%S%C%H$G9T$$!"(B52 $B%S%C%HJ,$N(B virtual address $B$N%Y!<%9$r:n$k!#(B
32 $B%S%C%H(B PowerPC $B$N>l9g$K$O(B 4GB $B$r(B 16MB $B$E$D(B 16 $BJ,3d$9$l$P$h$+$C$?$N$@$,!"(B64 $B%S%C%H(B PowerPC $B$G$b(B 16MB $B$GJ,3d$9$k$N$G(B 2^36 (=68,719,476,736) $BJ,3d$K$J$k!#(B
32 $B%S%C%H(B PowerPC $B$H0c$$(B char* Segment_Registers[68,719,476,736]
$B$N$h$&$J%G!<%?9=B$$r:n$l$J$$$N$G!"(BTLB $B$K;w$?(B Segment Lookaside Buffer (SLB) $B$H$$$&5!9=$r@_$1$F(B Effective Segment ID $B$+$i(B Virtual Segment ID $B$X$NJQ49$r%-%c%C%7%e$9$k!#(B
SLB $B$,%_%9$7$?>l9g$O!"%=%U%H%&%'%"E*$KJ*M}%a%b%j$K%;%0%a%s%H>pJs$r8!:w$K9T$/!#(B
IBM PowerPC® Microprocessor Family: The Programming Environments Manual for 64-bit Microporcessors Ver 3.0
- $B%Z!<%8%s%0$N2>A[%Z!<%8%5%$%:$O(B 4KB/page $B$,4pK\$@$,!";EMM>e$O(B 212 $B$+$i(B 228 $B$^$G<+M3$J%Z!<%8%5%$%:$r;H$($k!#(B
$BTLB $B%_%9;~$N%Z!<%8%F!<%V%k%&%)!<%/$O%O!<%I%&%'%"!#(B
SPARC 32 $B%S%C%H(B (SPARC V8)
- SPARC V8 $B$N%W%m%;%C%5$O(B 32 $B%S%C%H$N2>A[%"%I%l%96u4V$H(B 36 $B%S%C%H$NJ*M}%"%I%l%9$r%5%]!<%H$7$F$$$k!#(B
- $B2>A[%Z!<%8%5%$%:$O(B 4KB/page $B8GDj!#(B
20 $B%S%C%H$N(B VPN $B$,(B 24 $B%S%C%H$N(B Pyshical Page Number (PPN) $B$KTLB $B%_%9;~$N%Z!<%8%F!<%V%k%&%)!<%/$O%O!<%I%&%'%"!#(B
- $B%Z!<%8%F!<%V%k$O(B 3 $BCJ3,$G9=@.$5$l(B VPN $B$,>e0L$+$i(B 8 $B%S%C%H(B : 6 $B%S%C%H(B : 6 $B%S%C%H$KJ,3d$5$l$k!#(B
- TLB $B$N3F%(%s%H%j$K(B context indentifier $B$H8F$P$l$k%?%0NN0h$,$"$j!"8!:w;~$K%W%m%;%C%5Cf$N(B context register $B$HHf3S$5$l$k!#(B
$B0lCW$7$J$$%(%s%H%j$O(B VA-PA $BJQ49$G$-$J$$!#(B
$B0lHL$K$O(B OS $B$N%W%m%;%9(B $B$NHV9f$r(B context indentifier $B$H$7$FM?$($k!#(B
SPARC 64 $B%S%C%H(B (SPARC V9)
- SPARC V9 $B$O(B 64 $B%S%C%H$N2>A[%"%I%l%9$H(B 43 $B%S%C%H$NJ*M}%"%I%l%9$r%5%]!<%H$7$F$$$k!#(B
- $B2>A[%Z!<%8%5%$%:$O(B 8KB/page$B!"(B64KB/page$B!"(B512KB/page$B!"(B4MB/page $B$r%5%]!<%H$7$F$$$k$,!"F10l2>A[%a%b%j6u4VFb$G:.:_2DG=!#(B
- TLB $B%_%9;~$N%Z!<%8%F!<%V%k%&%)!<%/$O%=%U%H%&%'%"(B($BSPARC V9 $B$N;EMM$K$O=P$F$3$J$$$,!"(BUltraSPARC $B$K$O(B Translation Storage Buffer (TSB) $B$H8F$P$l$k(B TLB $B%_%9%O%s%I%j%s%0$r=u$1$k%O!<%I%&%'%"5!9=$,B8:_$9$k!#(B
TSB $B$OIQHK$K%_%9$9$k%Z!<%8%F!<%V%k%(%s%H%j$rEPO?$7$F$*$/%-%c%C%7%e!#(B
$B%W%m%;%C%5$O(B TLB $B%_%9$,5/$3$C$?;~$K$^$:(B TSB $BFb$N%G!<%?$r8!:w$9$k!#(B
TSB $B$K8+$D$+$i$J$$>l9g$K(B TLB $B%_%9Nc30$rH/@8$5$;$k!#(B
TSB $B$O(B (VPN, $B%Z!<%8%F!<%V%k%(%s%H%j$X$N%]%$%s%?(B) $B$NAH$rJ];}$7$?%@%$%l%/%H%^%C%W!#(B
- TLB $B$N3F%(%s%H%j(B context indentifier $B$H8F$P$l$k(B 13 $B%S%C%H$N%?%0NN0h$,$"$j!"8!:w;~$K%W%m%;%C%5Cf$N(B context registers $B$HHf3S$5$l$k!#(B
$B%W%m%;%C%5Fb$N(B context register $B$O(B primary $B$H(B secondary $B$N(B2$BK\$,$"$j!"$I$A$i$+$K0lCW$9$l$P$h$$!#0lCW$7$J$1$l$P(B VA-PA $BJQ49$O9T$o$J$$!#(B
PA-RISC 32$B%S%C%H(B (PA-RISC 1.1)
- 32$B%S%C%H$N2>A[%"%I%l%96u4V$H(B 32 $B%S%C%H$NJ*M}%"%I%l%96u4V$r;}$C$F$$$k!#(B
- $B2>A[%Z!<%8$O(B 4KB/page $B$,4pK\$G!"(B32KB/page $B$N%i!<%8%Z!<%8$r;}$C$F$$$k!#(B
- PA-RISC $B$O(B 8 $B$D$N(B Space $B$N35G0$r;}$C$F$$$F!"(BIA-32 $B$d(B PowerPC $B$N%;%0%a%s%H%F!<%7%g%s$N$h$&$K%"%I%l%9$K%2%?$rMz$+$;$k$3$H$,$G$-$k!#(B
$B%2%?$NCM$O(B Space Registers[8] $B$K%;%C%H$5$l$F$$$k!#(B
$B$3$NCf$K:GBg(B 20 $B%S%C%H$N(B Space ID $B$,F~$C$F$$$k!#(B
$B$=$N$?$a2>A[%a%b%j6u4V$r(B 32 + 20 = 52 $B%S%C%HAjEv$^$G9-$2$k$3$H$,$G$-$k!#(B
$B$I$N%"%I%l%9$,$I$N%9%Z!<%9$r;H$&$+$O(B2$Be0L(B 2 $B%S%C%H$K$h$C$F%9%Z!<%9$r7h$a$kJ}K!(B(PowerPC$B$K6a$$(B)$B$G$"$k!#(B
- TLB $B%_%9;~$N%Z!<%8%F!<%V%k%&%)!<%/$O%=%U%H$H%O!<%I$N$I$A$i$G$bNI$$$,(I$(B PA-RISC $B$K$O%O!<%I(B TLB $B$NDj5A$O$J$$!#(B
PA-RISC 64$B%S%C%H(B (PA-RISC 2.0)
- 64$B%S%C%H$N2>A[%"%I%l%96u4V$H(B 64$B%S%C%H$NJ*M}%"%I%l%96u4V(B($B$?$@$7%a%b%j$H$7$F;H$($k$N$O(B 62 $B%S%C%H$^$G(B)$B$r;}$D!#(B
- Space ID $B$N;EAH$_$K$h$C$F(B +32 $B%S%C%H$G(B 96 $B%S%C%HJ,$N(B Global Virtual Adress (GVA) $B$,;H$($k!#(B
- $B%Z!<%8$O(B 4KB/page $B!A(B 64MB/page (4$BG\9o$_(B)$B$K@_Dj2DG=!#(B
- TLB $B%_%9;~$N%Z!<%8%F!<%V%k%&%)!<%/$O%=%U%H$H%O!<%I$N$I$A$i$G$bNI$$$,(I$(B PA-RISC $B;EMM$K$O%O!<%I(B TLB $B$NDj5A$O$J$/!"(B64 $B%S%C%H(B PA-RISC $B%W%m%;%C%5$K$O%O!<%I%Z!<%8%F!<%V%k%&%)!<%+!<$r;}$D$b$N$O$J$$!#(B
MIPS 32 $B%S%C%H(B
- 32 $B%S%C%H$N2>A[%"%I%l%96u4V(B($B%f!<%6!$B%Z!<%8%5%$%:$O(B 4KB $B$@$C$?$h$&$J5$$,$9$k!#(B
- $B%W%m%;%9(B($B%a%b%j6u4V(B)$B$N<1JL$N$?$a$K(B Address Space Identification (ASID) $B$H$$$&(B 8 $B%S%C%H$NCM$,$"$k!#(B
TLB $BFb$+$i%(%s%H%j$rC5$9;~$O(B ASID:VPN $B$NAH$_9g$o$;$G8!:w$r9T$C$F$$$k!#(B
- TLB $B%_%9;~$N%Z!<%8%F!<%V%k%&%)!<%/$O%=%U%H%&%'%"@)8f!#(B
MIPS 64 $B%S%C%H(B
- 44 $B%S%C%H$N2>A[%"%I%l%96u4V$H(B 40 $B%S%C%H$NJ*M}%"%I%l%96u4V$r;}$D(B (R10000 $B0J9_(B)$B!#(B
$B2>A[%"%I%l%9$O(B 64 $B%S%C%HJ,$"$k$,!">e0L(B 5 $B%S%C%H$H2<0L(B 44 $B%S%C%HJ,$,;H$o$l!"Cf4V$N(B 15 $B%S%C%H$OL5;k$5$l$k!#(B
- $B%Z!<%8%5%$%:$O(B 4KB $B!A(B 16MB/page $B$^$G(B 4 $BG\9o$_$G@_Dj$G$-$k!#(B
- TLB $B%_%9;~$N%Z!<%8%F!<%V%k%&%)!<%/$O%=%U%H%&%'%"@)8f!#(B
- $B%W%m%;%9(B($B%a%b%j6u4V(B)$B$N<1JL$N$?$a$K(B Address Space Identification (ASID) $B$H$$$&(B 8 $B%S%C%H$NCM$,$"$k!#(B
TLB $BFb$+$i%(%s%H%j$rC5$9;~$O(B ASID:VPN $B$NAH$_9g$o$;$G8!:w$r9T$C$F$$$k!#(B
Alpha
- 48 $B%S%C%H$N2>A[%"%I%l%96u4V$H(B 44 $B%S%C%H$NJ*M}%"%I%l%96u4V$r;}$C$F$$$k(B (21264)$B!#(B
- 8KB/page $B$,4pK\!#$3$N;~$O(B VPN $B$O(B 31 $B%S%C%H!#(B
- TLB $B%_%9;~$N%Z!<%8%F!<%V%k%&%)!<%/$O%=%U%H%&%'%"@)8f!#(B
- $B%W%m%;%9(B($B%a%b%j6u4V(B)$B$N<1JL$N$?$a$K(B Address Space Number (ASN) $B$H$$$&(B 8 $B%S%C%H$NCM$,$"$k!#(B
TLB $BFb$+$i%(%s%H%j$rC5$9;~$O(B ASN:VPN $B$NAH$_9g$o$;$G8!:w$r9T$C$F$$$k!#(B
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
- 64$B%S%C%H$N2>A[%a%b%j6u4V$H(B 50 $B%S%C%H$NJ*M}%a%b%j6u4V$r;}$C$F$$$k!#(B
- PowerPC $B$N%;%0%a%s%F!<%7%g%s$HF1MM$N(B Virtual Region $B$H8F$P$l$k5!9=$r;}$D!#(B
$B2>A[%"%I%l%9$N>e0L(B 3 $B%S%C%H$,(B Virtual Region Number (VPN) $B$G!"2>A[%a%b%j6u4V$,(B 2^61 $B$G(B 8 $B$D$KJ,3d$5$l$k!#(B
$B%W%m%;%C%5Fb$N(B Region_Register[8] $B$O(B 24 $B%S%C%H$N%2%?$r;}$C$F$$$F!"(BTLB $B$+$i8+$?$H$-$K(B 24 + 61 $B%S%C%H$G(B 85 $B%S%C%H$N2>A[%a%b%j6u4V$K8+$($k!#(B
- $B%Z!<%8%5%$%:$O(B 4KB$B!"(B8KB$B!"(B16KB$B!"(B64KB$B!"(B256KB$B!"(B1MB$B!"(B4MB$B!"(B16MB$B!"(B64MB$B!"(B256MB $B$+$iA*Br2DG=!#(B
TLB $BFb$G<+M3$K:.:_2DG=!#(B
Itanium2 $B$G$O(B 1GB$B!"(B4GB $B$b;HMQ2DG=!#(B
- $B%Z!<%8%F!<%V%k%&%)!<%/$O%=%U%H%&%'%"@)8f!#(B
- $B%Z!<%8%F!<%V%k%&%)!<%/$r%O!<%I%&%'%"$GJd=u$9$k(B Virtual Hash Page Table (VHPT) $B$,%*%W%7%g%s$GB8:_$9$k!#(B
VHPT $B$O(B SPARC $B$N(B TSB $B$HF1MM$N5!9=!#(B
- VHPT $B$O2>A[%a%b%j6u4V$KCV$+$l$k!#(B
1$B%Z!<%8$"$?$j(B32$B%P%$%H$N%(%s%H%j7A<0$r;}$D%m%s%07A<0$H!"(B1$B%Z!<%8$"$?$j(B8$B%P%$%H$N%(%s%H%j7A<0$r;}$D%7%g!<%H7A<0$N(B2$B$B%m%s%07A<0$N>l9g$K$O(B VHPT $B$O%O%C%7%e%F!<%V%k$H$7$F9=@.$5$l!"(BVPN $BCM$r%O%C%7%e2=$7$F8!:w$5$l$k!#(B
$B%m%s%07A<0(B VHPT $B$O(B 2^64 $B$N2>A[%"%I%l%9Fb$K(B1$B8D$@$1B8:_$7!"(BCR8 $B%l%8%9%?$K$h$C$F%"%I%l%9$H%5%$%:$,;XDj$5$l$k!#(B
- $B%7%g!<%H7A<0$N>l9g$K$O2>A[%"%I%l%96u4V$N%j!<%8%g%sKh$KG[CV$5$l$k(B($B0lHLE*$K$O3F%j!<%8%g%s$N$*?,$NItJ,$K(B VHPT $B$rG[CV$9$k(B)$B!#(B
$B%7%g!<%H7A<0(B VHPT $B$O%O%C%7%e%F!<%V%k$G$O$J$/!"%j!<%8%g%sFb$NA4$F$N%Z!<%8$K$D$-(B 8 $B%P%$%H$E$D$N%(%s%H%j$,JB$s$@5pBg$J%j%K%"%Z!<%8%F!<%V%k$H$7$F9=@.$5$l$k!#(B
$B%j!<%8%g%sFb$O0l$D$N%Z!<%8%5%$%:$K8GDj$5$l$k$N$G!"2>A[%"%I%l%9$r%Z!<%8%5%$%:$G3d$C$?$b$N$,%j%K%"%Z!<%8%F!<%V%k$N%$%s%G%C%/%9$H$J$k!#(B
$BNc$($P%j!<%8%g%s$r(B 16KB/page (2^14) $B$G@_Dj$7$?>l9g!"%7%g!<%H7A<0$N(B VHPT $B$O%j!<%8%g%s6u4V$NA4%Z!<%8(B 2^(61-14) $B8D$N%(%s%H%j$r;}$DG[Ns$H$J$k!#(B
- $B%7%g!<%H7A<0$N%(%s%H%j$O(B 8 $B%P%$%H$J$N$G(B 16KB/page $B@_Dj$N>l9g$K$O(B VHPT $B$O(B 2^(61-14+3) = 2^50 $B$K$J$j!"Hs>o$K9-Bg$J%"%I%l%96u4V$r@j$a$k!#(B
$B$?$@$7(B VHPT $B$O2>A[%"%I%l%96u4V>e$KCV$+$l$k$N$G!"$3$NA4NN0h$KJ*M}%a%b%j$rE=$jIU$1$kI,MW$O$J$$!#(B
$B%m!<%I!&%9%H%"L?Na$K$h$k2>A[%a%b%j%"%/%;%9$,(B TLB $B%_%9$r5/$3$7$?>l9g$K(B MMU $B$O$^$:(B VHPT $B$r8!:w$K9T$/$,!"3:Ev$9$k(B VHPT $B%Z!<%8$,(B TLB $B>e$K$J$1$l$P(B VHPT $B>pJs$rFI$a$J$$!#(B
$B$=$3$G(B CPU $B$O(B VHPT $B%_%9%U%)%k%H$rH/@8$5$;!"%=%U%H%&%'%"%O%s%I%i$K$h$C$F(B VHPT $B%Z!<%8$r(B TLB $B$KA^F~$5$;$k!#(B
$B$D$^$j9-Bg$J(B VHPT $BNN0h$N$&$A
- $B$=$NB>$K%-!
- S/370 $B$N(B Key-controlled protection $B$K;w$F$$$F!"(BTLB $B$N%(%s%H%jKh$K(B 24 $B%S%C%H$NJ]8n%-!<$rKd$a9~$`$3$H$,$G$-$k!#(B
($BJL$KB8:_$9$k(B)$BFC8"J]8n$K$h$k%"%/%;%9@)8f$ODc$$FC8"%l%Y%k%b!<%I$G$O9b$$FC8"%l%Y%k$N%Z!<%8$K%"%/%;%9$G$-$J$$$,!"9b$$FC8"%l%Y%k%b!<%I$G$ODc$$FC8"%l%Y%k$N%Z!<%8$K$OL5@)8B$K%"%/%;%9$G$-$F$7$^$&$H$$$&>e2TLB $B$NJ]8n%-!<$O%a%b%j%"%/%;%9$NEY$K(B IA-64 $B%W%m%;%C%5$N(B pk $B%l%8%9%?72$HHf3S$5$l!"(Bpk $B%l%8%9%?72Fb$K0lCW$7$?$b$N$,$"$l$P(B VA-PA $BJQ49$,9T$o$l$k!#(B
$B0lCW$7$?$b$N$,$J$1$l$P(B Key Miss $B%U%)%k%H3d$j9~$_$,H/@8$9$k(B(pk $B%l%8%9%?$,2?8D$"$k$+$O$B$^$?(B pk $B%l%8%9%?$N%?%0@_Dj$r9T$&$3$H$GJ]8n%-!r7o$r2]$9$3$H$,$G$-$k(B($BJ]8n%-!<$rJ#?t%W%m%;%94V$G6&M-$7!"%W%m%;%9(BA$B$OFI$_=q$-<+M3$@$,!"%W%m%;%9(BB$B$OFI$`$3$H$7$+$G$-$J$$$H$$$&>r7o$r$D$1$k$J$I(B)$B!#(B
- $B%j!<%8%g%K%s%0$K$h$k2>A[%"%I%l%9$NA}2CJ,$O!"(BOS $B$K$h$C$F%W%m%;%9<1JL;R$H$7$F;H$o$l$k$3$H$,B?$$!#(B
- $B%G%U%)%k%H$N(B IA-64/Linux $B$O(B VHPT $B$r%7%g!<%H7A<0$G1?MQ$7!"J]8n%-!<$r;HMQ$7$J$$!#(B
IA-64/Windows $B$O(B VHPT $B$r%m%s%07A<0$G1?MQ$7!"J]8n%-!<$b;HMQ$7$F$$$k!#(B