-- ·|­û / µù¥U -- ¡@
¡@±b¸¹¡G
¡@±K½X¡G
¡@ | µù¥U | §Ñ°O±K½X
10/8 ·s®Ñ¨ì¡I 10/1 ·s®Ñ¨ì¡I 9/24 ·s®Ñ¨ì¡I 9/18 ·s®Ñ¨ì¡I
ÁʮѬyµ{¡EQ & A¡E¯¸°È¯d¨¥ª©¡E«ÈªA«H½c
¢x 3ds Max¢x Maya¢x Rhino¢x After Effects¢x SketchUp¢x ZBrush¢x Painter¢x Unity¢x
¢x PhotoShop¢x AutoCad¢x MasterCam¢x SolidWorks¢x Creo¢x UG¢x Revit¢x Nuke¢x
¢x C#¢x C¢x C++¢x Java¢x ¹CÀ¸µ{¦¡¢x Linux¢x ´O¤J¦¡¢x PLC¢x FPGA¢x Matlab¢x
¢x Àb«È¢x ¸ê®Æ®w¢x ·j¯Á¤ÞÀº¢x ¼v¹³³B²z¢x Fluent¢x VR+AR¢x ANSYS¢x ²`«×¾Ç²ß¢x
¢x ³æ´¹¤ù¢x AVR¢x OpenGL¢x Arduino¢x Raspberry Pi¢x ¹q¸ô³]­p¢x Cadence¢x Protel¢x
¢x Hadoop¢x Python¢x Stm32¢x Cortex¢x Labview¢x ¤â¾÷µ{¦¡¢x Android¢x iPhone¢x
¥i¬d®Ñ¦W,§@ªÌ,ISBN,3dwoo®Ñ¸¹
¸Ô²Ó®ÑÄy¤ÀÃþ

RISC-VÅé¨tµ²ºc½sµ{»P¹ê½î

( ²Åé ¦r)
§@ªÌ¡G©b¶]§aLinuxªÀ°ÏÃþ§O¡G1. -> ¹q¸£²Õ´»PÅé¨tµ²ºc -> ³æ´¹¤ù -> RISC-V
ĶªÌ¡G
¥Xª©ªÀ¡G¤H¥Á¶l¹q¥Xª©ªÀRISC-VÅé¨tµ²ºc½sµ{»P¹ê½î 3dWoo®Ñ¸¹¡G 56215
¸ß°Ý®ÑÄy½Ð»¡¥X¦¹®Ñ¸¹¡I

¡i¦³®w¦s¡j
NT°â»ù¡G 650 ¤¸

¥Xª©¤é¡G2/1/2023
­¶¼Æ¡G464
¥úºÐ¼Æ¡G0
¯¸ªø±ÀÂË¡G
¦L¨ê¡G¶Â¥Õ¦L¨ê»y¨t¡G ( ²Åé ª© )
¥[¤JÁʪ«¨® ¢x¥[¨ì§Úªº³Ì·R
(½Ð¥ýµn¤J·|­û)
ISBN¡G9787115603609
§@ªÌ§Ç¡@|¡@ĶªÌ§Ç¡@|¡@«e¨¥¡@|¡@¤º®e²¤¶¡@|¡@¥Ø¿ý¡@|¡@§Ç
(²Åé®Ñ¤W©Ò­z¤§¤U¸ü³sµ²¯Ó®É¶O¥\, ®¤¤£¾A¥Î¦b¥xÆW, ­YŪªÌ»Ý­n½Ð¦Û¦æ¹Á¸Õ, ®¤¤£«OÃÒ)
§@ªÌ§Ç¡G

ĶªÌ§Ç¡G

«e¨¥¡G

¤º®e²¤¶¡G

¥»®Ñ¦®¦b¤¶²ÐRISC-VÅé¨tµ²ºcªº³]­p©M¹ê²{¡C¥»®Ñ­º¥ý¤¶²ÐRISC-VÅé¨tµ²ºcªº°ò¦ª¾ÃÑ¡B¹êÅçÀô¹Ò·f«Ø¡B±`¥Î«ü¥O¡B¨ç¼Æ½Õ¥Î³W­S»P´Ì¡AµM¦ZÁ¿­zGNU¶×½s¾¹¡BÃì±µ¾¹¡BÃì±µ¸}¥»©MGCC¤º´O¶×½s¥N½X¡A±µµÛ°Q½×RISC-VÅé¨tµ²ºc¤¤ªº²§±`³B²z¡B¤¤Â_¡B¤º¦sºÞ²z¡B°ª³t½w¦s¡B½w¦s¤@­P©Ê¡BTLBºÞ²z¡B­ì¤l¾Þ§@¡B¤º¦s«Ì»Ù«ü¥O¡A³Ì¦ZÄÄ­zRSIC-VÅé¨tµ²ºc¤¤ªºÀ£ÁY«ü¥OÂX®i¡BµêÀÀ¤ÆÂX®iµ¥¡C
¥»®Ñ¤£¶È¾A¦X³n¥ó¶}µo¤H­û¾\Ū¡AÁÙ¥i¥H§@¬°­pºâ¾÷¬ÛÃö±M·~©M¬ÛÃö°ö°V¾÷ºcªº±Ð§÷¡C
¥Ø¿ý¡G

²Ä 1³¹¡@RISC-VÅé¨tµ²ºc°ò¦ª¾ÃÑ 1
1.1¡@RISC-V¤¶²Ð 1
1.1.1¡@RISC-V«ü¥O¶°ÀuÂI 1
1.1.2¡@RISC-V«ü¥O¶°ÂX®i 2
1.1.3¡@RISC-V°Ó·~¤Æµo®i 2
1.2¡@RISC-VÅé¨tµ²ºc¤¶²Ð 3
1.2.1¡@RISC-VÅé¨tµ²ºc 3
1.2.2¡@ªö¥ÎRISC-VÅé¨tµ²ºcªº±`¨£³B²z¾¹ 3
1.2.3¡@RISC-VÅé¨tµ²ºc¤¤ªº°ò¥»·§©À 4
1.2.4¡@SBIªA°È 5
1.3¡@RISC-V±H¦s¾¹ 6
1.3.1¡@³q¥Î±H¦s¾¹ 6
1.3.2¡@¨t²Î±H¦s¾¹ 7
1.3.3¡@U¼Ò¦¡¤Uªº¨t²Î±H¦s¾¹ 8
1.3.4¡@S¼Ò¦¡¤Uªº¨t²Î±H¦s¾¹ 9
1.3.5¡@M¼Ò¦¡¤Uªº¨t²Î±H¦s¾¹ 11
1.4¡@­»¤s³B²z¾¹¤¶²Ð 15
1.4.1¡@­»¤s³B²z¾¹Åé¨tµ²ºc 15
1.4.2¡@­»¤s³B²z¾¹ªº«eºÝ¤l¨t²Î 16
1.4.3¡@­»¤s³B²z¾¹ªº¦ZºÝ¤l¨t²Î 18
1.4.4¡@­»¤s³B²z¾¹ªº³X¦s¤l¨t²Î 20
1.4.5¡@­»¤s³B²z¾¹ªºL2/L3°ª³t½w¦s 25

²Ä 2³¹¡@·f«ØRISC-V¹êÅçÀô¹Ò 29
2.1¡@¹êÅ祭»O 29
2.1.1¡@QEMU 29
2.1.2¡@NEMU 30
2.2¡@·f«Ø¹êÅçÀô¹Ò 31
2.2.1¡@¹êÅç2-1¡G¿é¥X¡§Welcome RISC-V!¡¨ 31
2.2.2¡@¹êÅç2-2¡G³æ¨B½Õ¸ÕBenOS©MMySBI 32
2.3¡@BenOS©MMySBI°ò¦¹êÅç¥N½X¸ÑªR 34
2.3.1¡@MySBI°ò¦¥N½X¤ÀªR 34
2.3.2¡@BenOS°ò¦¥N½X¤ÀªR 37
2.3.3¡@¦X¦}BenOS©MMySBI 41
2.4¡@QEMU + RISC-V + Linux¹êÅ祭»O 41


²Ä3³¹¡@°ò¦«ü¥O¶° 44
3.1¡@RISC-V«ü¥O¶°¤¶²Ð 44
3.2¡@RISC-V«ü¥O½s½X®æ¦¡ 45
3.3¡@¥[¸ü»P¦sÀx«ü¥O 46
3.4¡@PC¬Û¹ï´M§} 49
3.5¡@²¾¦ì¾Þ§@ 53
3.6¡@¦ì¾Þ§@«ü¥O 55
3.7¡@ºâ³N«ü¥O 56
3.8¡@¤ñ¸û«ü¥O 57
3.9¡@µL±ø¥ó¸õÂà«ü¥O 58
3.10¡@±ø¥ó¸õÂà«ü¥O 59
3.11¡@CSR«ü¥O 61
3.12¡@´M§}­S³ò 62
3.13¡@³´¨À¡G¬°¤°¤\ret¤§¦Z´N¶i¤J¦º´`Àô 62
3.14¡@¹êÅç 64
3.14.1¡@¹êÅç3-1¡G¼ô±x¥[¸ü«ü¥O 64
3.14.2¡@¹êÅç3-2¡GPC¬Û¹ï¦a§}´M§} 64
3.14.3¡@¹êÅç3-3¡Gmemcpy()¨ç¼Æªº¹ê²{ 65
3.14.4¡@¹êÅç3-4¡Gmemset()¨ç¼Æªº¹ê²{ 65
3.14.5¡@¹êÅç3-5¡G±ø¥ó¸õÂà«ü¥O1 65
3.14.6¡@¹êÅç3-6¡G±ø¥ó¸õÂà«ü¥O2 66
3.14.7¡@¹êÅç3-7¡G¤l¨ç¼Æ¸õÂà 66
3.14.8¡@¹êÅç3-8¡G¦b¶×½s¤¤¹ê²{¦ê¤f¿é¥X¥\¯à 66

²Ä4³¹¡@¨ç¼Æ½Õ¥Î³W­S»P´Ì 67
4.1¡@¨ç¼Æ½Õ¥Î³W­S 67
4.2¡@¤J´Ì»P¥X´Ì 70
4.3¡@RISC-V´Ìªº¥¬§½ 72
4.3.1¡@¤£¨Ï¥ÎFPªº´Ì¥¬§½ 72
4.3.2¡@¨Ï¥ÎFPªº´Ì¥¬§½ 74
4.3.3¡@´Ì¦^·¹ 76
4.4¡@¹êÅç 78
4.4.1¡@¹êÅç4-1¡GÆ[¹î´Ì¥¬§½ 78
4.4.2¡@¹êÅç4-2¡GÆ[¹î´Ì¦^·¹ 78

²Ä5³¹¡@GNU¶×½s¾¹ 79
5.1¡@½sĶ¬yµ{»PELF¤å¥ó 79
5.2¡@¤@­Ó²³æªº¶×½sµ{§Ç 82
5.3¡@¶×½s»yªk 84
5.3.1¡@ª`ÄÀ 84
5.3.2¡@²Å¸¹ 84
5.4¡@±`¥Îªº°°«ü¥O 85
5.4.1¡@¹ï»ô°°«ü¥O 85
5.4.2¡@¼Æ¾Ú©w¸q°°«ü¥O 86
5.4.3¡@»P¨ç¼Æ¬ÛÃöªº°°«ü¥O 87
5.4.4¡@»P¬q¬ÛÃöªº°°«ü¥O 87
5.4.5¡@»P§»¬ÛÃöªº°°«ü¥O 89
5.4.6¡@»P¤å¥ó¬ÛÃöªº°°«ü¥O 91
5.5¡@RISC-V¨Ì¿à¯S©Ê 91
5.5.1¡@RISC-V¯S¦³ªº©R¥O¦æ¿ï¶µ 91
5.5.2¡@RISC-V¯S¦³ªº°°«ü¥O 92
5.6¡@¹êÅç 92
5.6.1¡@¹êÅç5-1¡G¶×½s»y¨¥½m²ß¡X¬d§ä³Ì¤j¼Æ 92
5.6.2¡@¹êÅç5-2¡G¶×½s»y¨¥½m²ß¡X³q¹LC»y¨¥½Õ¥Î¶×½s¨ç¼Æ 92
5.6.3¡@¹êÅç5-3¡G¶×½s»y¨¥½m²ß¡X³q¹L¶×½s»y¨¥½Õ¥ÎC¨ç¼Æ 92
5.6.4¡@¹êÅç5-4¡G¨Ï¥Î¶×½s°°¾Þ§@¹ê²{¤@±iªí 92
5.6.5¡@¹êÅç5-5¡G¶×½s§»ªº¨Ï¥Î 93

²Ä6³¹¡@Ãì±µ¾¹»PÃì±µ¸}¥» 94
6.1¡@Ãì±µ¾¹ 94
6.2¡@Ãì±µ¸}¥» 95
6.2.1¡@¤@­Ó²³æªºÃì±µµ{§Ç 95
6.2.2¡@³]¸m¤J¤fÂI 96
6.2.3¡@°ò¥»·§©À 97
6.2.4¡@²Å¸¹½á­È»P¤Þ¥Î 97
6.2.5¡@·í«e¦ì¸m­p¼Æ¾¹ 98
6.2.6¡@SECTIONS©R¥O 99
6.2.7¡@±`¥Îªº¤º¸m¨ç¼Æ 101
6.3¡@¥[¸ü­«©w¦ì 103
6.3.1¡@BenOS­«©w¦ì 103
6.3.2¡@OpenSBI©MLinux¤º®Ö­«©w¦ì 105
6.4¡@Ãì±µ­«©w¦ì»PÃì±µ¾¹ªQ¦¢Àu¤Æ 108
6.4.1¡@Ãì±µ­«©w¦ì 108
6.4.2¡@¨ç¼Æ¸õÂàÀu¤Æ 112
6.4.3¡@²Å¸¹¦a§}³X°ÝÀu¤Æ 114
6.5¡@¹êÅç 116
6.5.1¡@¹êÅç6-1¡G¤ÀªRÃì±µ¸}¥» 116
6.5.2¡@¹êÅç6-2¡G¿é¥X¨C­Ó¬qªº¤º¦s¥¬§½ 116
6.5.3¡@¹êÅç6-3¡G¥[¸ü¦a§}¤£µ¥¤_¹B¦æ¦a§} 117
6.5.4¡@¹êÅç6-4¡G³]¸mÃì±µ¦a§} 117
6.5.5¡@¹êÅç6-5¡GÃì±µ¾¹ªQ¦¢Àu¤Æ1 117
6.5.6¡@¹êÅç6-6¡GÃì±µ¾¹ªQ¦¢Àu¤Æ2 117
6.5.7¡@¹êÅç6-7¡G¤ÀªRLinux 5.15¤º®ÖªºÃì±µ¸}¥» 117


²Ä7³¹¡@¤º´O¶×½s¥N½X 118
7.1¡@¤º´O¶×½s¥N½X°ò¥»¥Îªk 118
7.1.1¡@°ò¦¤º´O¶×½s¥N½X 118
7.1.2¡@ÂX®i¤º´O¶×½s¥N½X 118
7.1.3¡@¤º´O¶×½s¥N½X­×¹¢²Å 120
7.1.4¡@¨Ï¥Î¶×½s²Å¸¹¦W¦r 121
7.1.5¡@¤º´O¶×½s¥N½X»P§»µ²¦X 122
7.1.6¡@¨Ï¥Îgoto­×¹¢µü 122
7.1.7¡@¤pµ² 123
7.2¡@®×¨Ò¤ÀªR 124
7.3¡@ª`·N¨Æ¶µ 128
7.4¡@¹êÅç 128
7.4.1¡@¹êÅç7-1¡G¹ê²{²³æªºmemcpy()¨ç¼Æ 128
7.4.2¡@¹êÅç7-2¡G¨Ï¥Î¶×½s²Å¸¹¦W¼g¤º´O¶×½s¥N½X 128
7.4.3¡@¹êÅç7-3¡G¨Ï¥Î¤º´O¶×½s¥N½X§¹µ½memset()¨ç¼Æ 129
7.4.4¡@¹êÅç7-4¡G¨Ï¥Î¤º´O¶×½s¥N½X»P§»ªºµ²¦X 129
7.4.5¡@¹êÅç7-5¡G¹ê²{Ū©M¼g¨t²Î±H¦s¾¹ªº§» 129
7.4.6¡@¹êÅç7-6¡Ggoto¼ÒªOªº¤º´O¶×½s¥N½X 129


²Ä8³¹¡@²§±`³B²z 130
8.1¡@²§±`³B²z°ò¥»·§©À 130
8.1.1¡@²§±`Ãþ«¬ 130
8.1.2¡@¦P¨B²§±`©M²§¨B²§±` 131
8.1.3¡@²§±`¤J¤f©Mªð¦^ 131
8.1.4¡@²§±`ªð¦^¦a§} 132
8.1.5¡@²§±`ªð¦^ªº³B²z¾¹¼Ò¦¡ 133
8.1.6¡@´Ìªº¿ï¾Ü 133
8.2¡@»PM¼Ò¦¡¬ÛÃöªº²§±`±H¦s¾¹ 133
8.2.1¡@mstatus±H¦s¾¹ 134
8.2.2¡@mtvec±H¦s¾¹ 134
8.2.3¡@mcause±H¦s¾¹ 135
8.2.4¡@mie±H¦s¾¹ 135
8.2.5¡@mtval±H¦s¾¹ 136
8.2.6¡@mip±H¦s¾¹ 136
8.2.7¡@mideleg©Mmedeleg±H¦s¾¹ 136
8.2.8¡@¤¤Â_°t¸m 137
8.3¡@»PS¼Ò¦¡¬ÛÃöªº²§±`±H¦s¾¹ 137
8.3.1¡@sstatus±H¦s¾¹ 137
8.3.2¡@sie±H¦s¾¹ 137
8.3.3¡@sip±H¦s¾¹ 138
8.3.4¡@scause±H¦s¾¹ 138
8.3.5¡@stvec±H¦s¾¹ 138
8.3.6¡@stval±H¦s¾¹ 139
8.4¡@²§±`¤W¤U¤å 139
8.4.1¡@«O¦s²§±`¤W¤U¤å 141
8.4.2¡@«ì´_²§±`¤W¤U¤å 141
8.5¡@®×¨Ò¤ÀªR8-1¡G¹ê²{SBI¨t²Î½Õ¥Î 142
8.5.1¡@½Õ¥ÎECALL«ü¥O 142
8.5.2¡@¹ê²{SBI¨t²Î½Õ¥Î 143
8.6¡@®×¨Ò¤ÀªR8-2¡GBenOSªº²§±`³B²z 148
8.6.1¡@³]¸m²§±`¦V¶qªí 148
8.6.2¡@«O¦s©M«ì´_²§±`¤W¤U¤å 149
8.6.3¡@²§±`³B²z 151
8.6.4¡@©e¦«¤¤Â_©M²§±` 153
8.6.5¡@IJµo²§±` 153
8.7¡@¹êÅç 154
8.7.1¡@¹êÅç8-1¡G¦bSBI¤¤¹ê²{¦ê¤f¿é¤J¥\¯à 154
8.7.2¡@¹êÅç8-2¡G¦bBenOS¤¤Ä²µo«Dªk«ü¥O²§±` 155
8.7.3¡@¹êÅç8-3¡G¿é¥XIJµo²§±`®É¨ç¼Æ´Ìªº½Õ¥Î¹Lµ{ 155
8.7.4¡@¹êÅç8-4¡G¦bMySBI¤¤¼ÒÀÀ¹ê²{RDTIME°°«ü¥O 155

²Ä9³¹¡@¤¤Â_³B²z»P¤¤Â_±±¨î¾¹ 156
9.1¡@¤¤Â_³B²z°ò¥»·§©À 156
9.1.1¡@¤¤Â_Ãþ«¬ 156
9.1.2¡@¤¤Â_³B²z¹Lµ{ 157
9.1.3¡@¤¤Â_©e¬£©Mª`¤J 158
9.1.4¡@¤¤Â_Àu¥ý¯Å 158
9.2¡@CLINT 159
9.3¡@®×¨Ò¤ÀªR9-1¡G©w®É¾¹¤¤Â_ 160
9.3.1¡@³X°Ýmtimer 160
9.3.2¡@¦bMySBI¤¤¹ê²{©w®É¾¹ªA°È 160
9.3.3¡@©w®É¾¹¤¤Â_³B²z 161
9.3.4¡@¥´¶}¤¤Â_Á`¶}Ãö 163
9.3.5¡@¤pµ² 164
9.4¡@PLIC 164
9.4.1¡@¤¤Â_¸¹ 165
9.4.2¡@¤¤Â_Àu¥ý¯Å 166
9.4.3¡@¤¤Â_¨Ï¯à±H¦s¾¹ 166
9.4.4¡@¤¤Â_«Ý©w±H¦s¾¹ 166
9.4.5¡@¤¤Â_Àu¥ý¯ÅìH­È±H¦s¾¹ 167
9.4.6¡@¤¤Â_½Ð¨D/§¹¦¨±H¦s¾¹ 167
9.5¡@®×¨Ò¤ÀªR9-2¡G¦ê¤f¤¤Â_ 167
9.5.1¡@ªì©l¤ÆPLIC 168
9.5.2¡@¨Ï¯à¦ê¤f0ªº±µ¦¬¤¤Â_ 169
9.5.3¡@³B²z¤¤Â_ 169
9.6¡@¹êÅç 171
9.6.1¡@¹êÅç9-1¡G©w®É¾¹¤¤Â_ 171
9.6.2¡@¹êÅç9-2¡G¨Ï¥Î¶×½s¨ç¼Æ«O¦s©M«ì´_¤¤Â_²{³õ 171
9.6.3¡@¹êÅç9-3¡G¹ê²{¦}½Õ¸Õ¦ê¤f0¤¤Â_ 171


²Ä 10³¹¡@¤º¦sºÞ²z 172
10.1¡@¤º¦sºÞ²z°ò¦ª¾ÃÑ 172
10.1.1¡@¤º¦sºÞ²zªº¡§»·¥j®É¥N¡¨ 172
10.1.2¡@¦a§}ªÅ¶¡ªº©â¶H 174
10.1.3¡@¤À¬q¾÷¨î 175
10.1.4¡@¤À­¶¾÷¨î 175
10.2¡@RISC-V¤º¦sºÞ²z 178
10.2.1¡@­¶ªí¤ÀÃþ 179
10.2.2¡@Sv39­¶ªí¬M®g 180
10.2.3¡@Sv48­¶ªí¬M®g 182
10.2.4¡@­¶ªí¶µ´y­z²Å 183
10.2.5¡@­¶ªíÄÝ©Ê 185
10.2.6¡@»P¦a§}Âà´«¬ÛÃöªº±H¦s¾¹ 186
10.3¡@ª«²z¤º¦sÄÝ©Ê»Pª«²z¤º¦s«OÅ@ 187
10.3.1¡@ª«²z¤º¦sÄÝ©Ê 187
10.3.2¡@ª«²z¤º¦s«OÅ@ 188
10.4¡@®×¨Ò¤ÀªR10-1¡G¦bBenOS¨½¹ê²{ùÚµ¥¬M®g 190
10.4.1¡@­¶ªí©w¸q 191
10.4.2¡@­¶ªí¼Æ¾Úµ²ºc 193
10.4.3¡@³Ð«Ø­¶ªí 193
10.4.4¡@¥´¶}MMU 198
10.4.5¡@´ú¸ÕMMU 198
10.4.6¡@¹Ï¸Ñ­¶ªí³Ð«Øªº¹Lµ{ 200
10.5¡@¤º¦sºÞ²z¹êÅç 204
10.5.1¡@¹êÅç10-1¡G«Ø¥ßùÚµ¥¬M®g 204
10.5.2¡@¹êÅç10-2¡G¬°¤°¤\MMUµLªk¹B¦æ 205
10.5.3¡@¹êÅç10-3¡G¹ê²{¤@­ÓMMU­¶ªíªºÂàÀx¥\¯à 205
10.5.4¡@¹êÅç10-4¡G­×§ï­¶­±ÄÝ©Ê 205
10.5.5¡@¹êÅç10-5¡G¨Ï¥Î¶×½s»y¨¥¨Ó«Ø¥ßùÚµ¥¬M®g 206
10.5.6¡@¹êÅç10-6¡G¦bMySBI¤¤¹ê²{©MÅçÃÒPMP¾÷¨î 206


²Ä 11³¹¡@°ª³t½w¦s 207
11.1¡@¬°¤°¤\»Ý­n°ª³t½w¦s 207
11.2¡@°ª³t½w¦sªº³X°Ý©µ®É 208
11.3¡@°ª³t½w¦sªº¤u§@­ì²z 210
11.4¡@°ª³t½w¦sªº¬M®g¤è¦¡ 212
11.4.1¡@ª½±µ¬M®g 212
11.4.2¡@¥þ¬ÛÁp¬M®g 213
11.4.3¡@²Õ¬ÛÁp¬M®g 213
11.4.4¡@²Õ¬ÛÁpªº°ª³t½w¦sªº¨Ò¤l 214
11.5¡@µêÀÀ°ª³t½w¦s»Pª«²z°ª³t½w¦s 215
11.5.1¡@ª«²z°ª³t½w¦s 215
11.5.2¡@µêÀÀ°ª³t½w¦s 215
11.5.3¡@VIPT©MPIPT 215
11.6¡@­«¦W©M¦P¦W°ÝÃD 216
11.6.1¡@­«¦W°ÝÃD 217
11.6.2¡@¦P¦W°ÝÃD 217
11.6.3¡@VIPT²£¥Íªº­«¦W°ÝÃD 218
11.7¡@°ª³t½w¦sµ¦²¤ 220
11.8¡@°ª³t½w¦sªººûÅ@«ü¥O 221
11.8.1¡@°ª³t½w¦sºÞ²z«ü¥O 221
11.8.2¡@°ª³t½w¦s¹w¨ú«ü¥O 222


²Ä 12³¹¡@½w¦s¤@­P©Ê 224
12.1¡@¬°¤°¤\»Ý­n½w¦s¤@­P©Ê 224
12.2¡@½w¦s¤@­P©Êªº¤ÀÃþ 225
12.2.1¡@½w¦s¤@­P©Ê¨óijµo®i¾úµ{ 225
12.2.2¡@½w¦s¤@­P©Ê¤ÀÃþ 226
12.2.3¡@¨t²Î½w¦s¤@­P©Ê°ÝÃD 227
12.3¡@½w¦s¤@­P©Êªº¸Ñ¨M¤è®× 227
12.3.1¡@Ãö³¬°ª³t½w¦s 228
12.3.2¡@¨Ï¥Î³n¥óºûÅ@½w¦s¤@­P©Ê 228
12.3.3¡@¨Ï¥Îµw¥óºûÅ@½w¦s¤@­P©Ê 228
12.4¡@MESI¨óij 228
12.4.1¡@MESI¨óij²¤¶ 229
12.4.2¡@¥»¦aŪ¼g»PÁ`½u¾Þ§@ 230
12.4.3¡@MESIª¬ºAÂà´« 230
12.4.4¡@ªì©lª¬ºA¬°I 231
12.4.5¡@ªì©lª¬ºA¬°M 233
12.4.6¡@ªì©lª¬ºA¬°S 234
12.4.7¡@ªì©lª¬ºA¬°E 234
12.4.8¡@¤pµ²»P®×¨Ò¤ÀªR 235
12.4.9¡@MOESI¨óij 237
12.5¡@°ª³t½w¦s°°¦@¨É 237
12.6¡@¨âºØ½w¦s¤@­P©Ê±±¨î¾¹ 239
12.6.1¡@CCI½w¦s¤@­P©Ê±±¨î¾¹ 239
12.6.2¡@CCN½w¦s¤@­P©Ê±±¨î¾¹ 240
12.7¡@®×¨Ò¤ÀªR12-1¡G°°¦@¨ÉªºÁקK 241
12.8¡@®×¨Ò¤ÀªR12-2¡GDMA©M°ª³t½w¦sªº¤@­P©Ê 242
12.8.1¡@±q¤º¦s¨ì³]³ÆªºFIFO½w¨R°Ï 243
12.8.2¡@±q³]³ÆªºFIFO½w¨R°Ï¨ì¤º¦s 243
12.9¡@®×¨Ò¤ÀªR12-3¡G¦Û­×§ï¥N½Xªº¤@­P©Ê 244
12.10¡@¹êÅç 245
12.10.1¡@¹êÅç12-1¡G°ª³t½w¦s°°¦@¨É 245
12.10.2¡@¹êÅç12-2¡G¨Ï¥ÎPerf C2Cµo²{°ª³t½w¦s°°¦@¨É 245


²Ä 13³¹¡@TLBºÞ²z 246
13.1¡@TLB°ò¦ª¾ÃÑ 247
13.2¡@TLB­«¦W»P¦P¦W°ÝÃD 249
13.2.1¡@­«¦W°ÝÃD 249
13.2.2¡@¦P¦W°ÝÃD 250
13.3¡@ASID 251
13.4¡@TLBºÞ²z«ü¥O 253
13.4.1¡@TLBºûÅ@«ü¥O¤¶²Ð 253
13.4.2¡@TLB¼s¼½ 254
13.4.3¡@SFENCE.VMA«ü¥O¨Ï¥Î³õ´º 256
13.5¡@TLB®×¨Ò¤ÀªR 256
13.5.1¡@TLB¦bLinux¤º®Ö¤¤ªºÀ³¥Î 256
13.5.2¡@ASID¦bLinux¤º®Ö¤¤ªºÀ³¥Î 257
13.5.3¡@Linux¤º®Ö¤¤ªºTLBºûÅ@¾Þ§@ 257
13.5.4¡@BBM¾÷¨î 259


²Ä 14³¹¡@­ì¤l¾Þ§@ 261
14.1¡@­ì¤l¾Þ§@¤¶²Ð 261
14.2¡@«O¯d¥[¸ü»P±ø¥ó¦sÀx«ü¥O 262
14.3¡@¿W¥e¤º¦s³X°Ý¤u§@­ì²z 263
14.3.1¡@¿W¥eºÊµø¾¹ 264
14.3.2¡@¿W¥eºÊµø¾¹»P½w¦s¤@­P©Ê 265
14.4¡@­ì¤l¤º¦s³X°Ý¾Þ§@«ü¥O 266
14.4.1¡@­ì¤l¤º¦s³X°Ý«ü¥O¤u§@­ì²z 266
14.4.2¡@­ì¤l¤º¦s³X°Ý«ü¥O»PLR/SC«ü¥Oªº®Ä²v¹ï¤ñ 267
14.4.3¡@RISC-V¤¤ªº­ì¤l¤º¦s³X°Ý«ü¥O 268
14.5¡@¤ñ¸û¦}¥æ´«¾Þ§@ 270


²Ä 15³¹¡@¤º¦s«Ì»Ù«ü¥O 275
15.1¡@¤º¦s«Ì»Ù«ü¥O²£¥Íªº­ì¦] 275
15.1.1¡@¶¶§Ç¤@­P©Ê¤º¦s¼Ò«¬ 276
15.1.2¡@³B²z¾¹¤@­P©Ê¤º¦s¼Ò«¬ 277
15.1.3¡@®z¤@­P©Ê¤º¦s¼Ò«¬ 277
15.1.4¡@ÄÀ©ñ¤@­P©Ê¤º¦s¼Ò«¬ 278
15.1.5¡@MCA¼Ò«¬ 279
15.2¡@RISC-V¬ù§ô±ø¥ó 280
15.2.1¡@¥þ§½¤º¦s¦¸§Ç»P«O¯dµ{§Ç¦¸§Ç 280
15.2.2¡@RVWMOªº¬ù§ô³W«h 281
15.3¡@RISC-V¤¤ªº¤º¦s«Ì»Ù«ü¥O 284
15.3.1¡@¨Ï¥Î¤º¦s«Ì»Ùªº³õ´º 284
15.3.2¡@FENCE«ü¥O 285
15.3.3¡@¤º¸mÀò¨ú©MÄÀ©ñ«Ì»Ù­ì»yªº«ü¥O 285
15.3.4¡@FENCE.I«ü¥O 286
15.3.5¡@SFENCE.VMA«ü¥O 286
15.4¡@RISC-V¤º¦s«Ì»Ù«ü¥O²¾´Ó«ü«n 286
15.4.1¡@±qRISC-V¨ìx86Åé¨tµ²ºc 286
15.4.2¡@±qRISC-V¨ìARMÅé¨tµ²ºc 287
15.4.3¡@Linux¤º®Ö±`¥Îªº¤º¦s«Ì»ÙAPI¨ç¼Æ 287
15.5¡@®×¨Ò¤ÀªR 288
15.5.1¡@®ø®§¶Ç»¼°ÝÃD 288
15.5.2¡@³æ¤è¦V¤º¦s«Ì»Ù»P¦Û±ÛÂê 289
15.5.3¡@¶l½c¶Ç»¼®ø®§ 290
15.5.4¡@Ãö¤_DMAªº®×¨Ò 291
15.5.5¡@¦bLinux¤º®Ö¤¤¨Ï«ü¥O°ª³t½w¦s¥¢®Ä 291
15.6¡@¼ÒÀÀ©M´ú¸Õ¤º¦s«Ì»Ù¬G»Ù 291
15.6.1¡@¨Ï¥ÎLitmus´ú¸Õ¤u¨ã¶° 292
15.6.2¡@½s¼gCµ{§Ç¨Ó¼ÒÀÀ 295
15.7¡@¹êÅç 297
15.7.1¡@¹êÅç15-1¡G½s¼gLitmus¸}¥»¦}´ú¸Õ¤º¦s¤@­P©Ê1 297
15.7.2¡@¹êÅç15-2¡G½s¼gLitmus¸}¥»¦}´ú¸Õ¤º¦s¤@­P©Ê2 298


²Ä 16³¹¡@¦X²z¨Ï¥Î¤º¦s«Ì»Ù«ü¥O 299
16.1¡@¦sÀx½w¨R°Ï»P¼g¤º¦s«Ì»Ù«ü¥O 300
16.2¡@µL®Ä¶¤¦C»PŪ¤º¦s«Ì»Ù«ü¥O 305
16.3¡@¤º¦s«Ì»Ù«ü¥OÁ`µ² 307
16.4¡@®×¨Ò¤ÀªR¡GLinux¤º®Ö¤¤ªº¤º¦s«Ì»Ù«ü¥O 308
16.4.1¡@²Ä ¤@¦¸¨Ï¥Î¤º¦s«Ì»Ù«ü¥O 309
16.4.2¡@²Ä¤G¦¸¨Ï¥Î¤º¦s«Ì»Ù«ü¥O 310
16.4.3¡@²Ä¤T¦¸¨Ï¥Î¤º¦s«Ì»Ù«ü¥O 313
16.4.4¡@²Ä¥|¦¸¨Ï¥Î¤º¦s«Ì»Ù«ü¥O 314
16.4.5¡@¤pµ²¡G¤º¦s«Ì»Ù«ü¥Oªº¨Ï¥Î 315
16.5¡@¹êÅç 315
16.5.1¡@¹êÅç16-1¡GÅçÃÒ©M´ú¸Õ¤º¦s¤@­P©Ê1 315
16.5.2¡@¹êÅç16-2¡GÅçÃÒ©M´ú¸Õ¤º¦s¤@­P©Ê2 315
16.5.3¡@¹êÅç16-3¡GÅçÃÒ©M´ú¸Õ¤º¦s¤@­P©Ê3 315


²Ä 17³¹¡@»P¾Þ§@¨t²Î¬ÛÃöªº¤º®e 316
17.1¡@C»y¨¥±`¨£³´¨À 317
17.1.1¡@¼Æ¾Ú¼Ò«¬ 317
17.1.2¡@¼Æ¾ÚÃþ«¬Âà´«»P¾ã«¬´£¤É 318
17.1.3¡@²¾¦ì¾Þ§@ 320
17.2¡@³Ð«Ø¶iµ{ 320
17.2.1¡@¶iµ{±±¨î¶ô 320
17.2.2¡@0¸¹¶iµ{ 321
17.2.3¡@do_fork()¨ç¼Æªº¹ê²{ 323
17.2.4¡@¶iµ{¤W¤U¤å¤Á´« 324
17.2.5¡@·s¶iµ{ªº²Ä ¤@¦¸°õ¦æ 326
17.3¡@²©ö¶iµ{½Õ«×¾¹ 327
17.3.1¡@ÂX®i¶iµ{±±¨î¶ô 327
17.3.2¡@´Nºü¶¤¦C 327
17.3.3¡@½Õ«×Ãþ 328
17.3.4¡@²©ö½Õ«×¾¹ªº¹ê²{ 329
17.3.5¡@¦Ûº@½Õ«× 330
17.3.6¡@·m¥e½Õ«× 331
17.3.7¡@´ú¸Õ¥Î¨Ò 333
17.3.8¡@Ãö¤_½Õ«×ªº«ä¦Ò 333
17.4¡@Åý¶iµ{¹B¦æ¦b¥Î¤á¼Ò¦¡ 335
17.5¡@¨t²Î½Õ¥Î 338
17.5.1¡@¨t²Î½Õ¥Î¤¶²Ð 338
17.5.2¡@¦b¥Î¤á¼Ò¦¡¤U½Õ¥ÎSVC«ü¥O 338
17.5.3¡@¦b¤º®Ö¼Ò¦¡¤U¹ï¨t²Î½Õ¥Îªº³B²z 339
17.5.4¡@¨t²Î½Õ¥Îªí 340
17.6¡@¹ê²{clone¨t²Î½Õ¥Î 341
17.7¡@¹êÅç 343
17.7.1¡@¹êÅç17-1¡G¶iµ{³Ð«Ø 343
17.7.2¡@¹êÅç17-2¡G¶iµ{½Õ«× 343
17.7.3¡@¹êÅç17-3¡GÅý¶iµ{¹B¦æ¦b¥Î¤á¼Ò¦¡ 343
17.7.4¡@¹êÅç17-4¡G·s¼W¤@­Ómalloc()¨t²Î½Õ¥Î 343
17.7.5¡@¹êÅç17-5¡G·s¼W¤@­Óclone()¨t²Î½Õ¥Î 344


²Ä 18³¹¡@¥i¦ùÁY¥Ú¶q­pºâ»PÀu¤Æ 345
18.1¡@¥Ú¶q­pºâ°ò¥»·§©À 345
18.1.1¡@SISD»PSIMD 345
18.1.2¡@©wªø­pºâ»P¥iÅܪø¥Ú¶q­pºâ 347
18.1.3¡@³q¹D 347
18.1.4¡@¥Ú¶q»P¼Ð¶q 347
18.2¡@RVV±H¦s¾¹ 348
18.2.1¡@¥Ú¶q±H¦s¾¹ 348
18.2.2¡@mstatus±H¦s¾¹¤¤ªº¥Ú¶q¤W¤U¤åª¬ºA 348
18.2.3¡@vtype±H¦s¾¹ 348
18.2.4¡@vl±H¦s¾¹ 350
18.2.5¡@vlenb±H¦s¾¹ 351
18.2.6¡@vstart±H¦s¾¹ 351
18.3¡@°t¸m½sĶ©M¹B¦æÀô¹Ò 351
18.3.1¡@·f«Ø½sĶÀô¹Ò 351
18.3.2¡@¹B¦æ²Ä ¤@­Ó¡§hello RVV!¡¨µ{§Ç 352
18.3.3¡@³æ¨B½Õ¸Õ¶×½sµ{§Ç 353
18.3.4¡@³æ¨B½Õ¸ÕC»y¨¥»P¶×½s²V¦Xµ{§Ç 355
18.4¡@RVV«ü¥O®æ¦¡ 357
18.5¡@°t¸m«ü¥O 358
18.6¡@¥[¸ü©M¦sÀx«ü¥O 360
18.6.1¡@³æ¦ì¨Bªø¼Ò¦¡ 360
18.6.2¡@¥ô·N¨Bªø¼Ò¦¡ 363
18.6.3¡@»E¦X¥[¸ü/Â÷´²¦sÀx 364
18.6.4¡@¥´¥]¼Æ¾Úªº¥[¸ü»P¦sÀx 365
18.6.5¡@­º¦¸²§±`¥[¸ü«ü¥O 367
18.6.6¡@¥[¸ü©M¦sÀx¥þ³¡¥Ú¶q¼Æ¾Ú 368
18.7¡@¥Ú¶q±»½X«ü¥O 369
18.7.1¡@ÅÞ¿è¾Þ§@«ü¥O 369
18.7.2¡@VCPOP.M«ü¥O 369
18.7.3¡@VFIRST.M«ü¥O 370
18.7.4¡@VMSBF.M«ü¥O 370
18.7.5¡@VMSIF.M«ü¥O 371
18.7.6¡@VMSOF.M«ü¥O 372
18.8¡@¥Ú¶q¾ã«¬ºâ³N«ü¥O 372
18.8.1¡@¥[¼e©MÅܯ¶ºâ³N«ü¥O 372
18.8.2¡@¥[ªk©M´îªk«ü¥O 373
18.8.3¡@¥[¼e¼Ò¦¡ªº¥[ªk©M´îªk«ü¥O 374
18.8.4¡@¦ì¾Þ§@«ü¥O 376
18.8.5¡@²¾¦ì¾Þ§@«ü¥O 376
18.8.6¡@¤ñ¸û«ü¥O 376
18.8.7¡@¼Æ¾Ú·h²¾«ü¥O 377
18.9¡@®×¨Ò¤ÀªR18-1¡G¨Ï¥ÎRVV«ü¥OÀu¤Æstrcmp()¨ç¼Æ 377
18.9.1¡@¨Ï¥Î¯Â¶×½s¤è¦¡ 378
18.9.2¡@´ú¸Õ 379
18.10¡@®×¨Ò¤ÀªR18-2¡GRGB24ÂàBGR24 380
18.10.1¡@¨Ï¥ÎC»y¨¥¹ê²{RGB24ÂàBGR24 380
18.10.2¡@¨Ï¥ÎRVV«ü¥OÀu¤Æ 380
18.10.3¡@´ú¸Õ 381
18.11¡@®×¨Ò¤ÀªR18-3¡G4 ¡Ñ 4¯x°}­¼ªk¹Bºâ 382
18.11.1¡@¨Ï¥ÎC»y¨¥¹ê²{4 ¡Ñ 4¯x°}­¼ªk¹Bºâ 382
18.11.2¡@¨Ï¥ÎRVV«ü¥OÀu¤Æ 383
18.11.3¡@´ú¸Õ 387
18.12¡@®×¨Ò¤ÀªR18-4¡G¨Ï¥ÎRVV¤º¸m¨ç¼Æ 388
18.13¡@®×¨Ò¤ÀªR18-5¡G¦Û°Ê¥Ú¶qÀu¤Æ 388
18.14¡@³N»y 390
18.15¡@¹êÅç 391
18.15.1¡@¹êÅç18-1¡GRGB24ÂàBGR32 391
18.15.2¡@¹êÅç18-2¡G8 ¡Ñ 8¯x°}­¼ªk¹Bºâ 391
18.15.3¡@¹êÅç18-3¡G¨Ï¥ÎRVV«ü¥OÀu¤Æstrcpy()¨ç¼Æ 391
18.15.4¡@¹êÅç18-4¡G¨Ï¥ÎRVV¤º¸m¨ç¼ÆÀu¤Æ 391
18.15.5¡@¹êÅç18-5¡G¨Ï¥ÎRVVÀu¤ÆÂà¸m¯x°}ªº¨Dªk 392


²Ä 19³¹¡@À£ÁY«ü¥OÂX®i 393
19.1¡@RISC-V«ü¥O¶°ªº¯SÂI 393
19.2¡@RVC¤ä«ùªº«ü¥O®æ¦¡»P«ü¥O½s½X 394

²Ä 20³¹¡@µêÀÀ¤ÆÂX®i 396
20.1¡@µêÀÀ¤Æ§Þ³N¤¶²Ð 396
20.1.1¡@µêÀÀ¤Æ§Þ³Nªºµo®i¾ú¥v 396
20.1.2¡@µêÀÀ¾÷ºÞ²zµ{§Çªº¤ÀÃþ 398
20.1.3¡@¤º¦sµêÀÀ¤Æ 398
20.1.4¡@I/OµêÀÀ¤Æ 399
20.2¡@RISC-VµêÀÀ¤ÆÂX®i 399
20.2.1¡@CPUµêÀÀ¤ÆÂX®i 399
20.2.2¡@M¼Ò¦¡¤U¨t²Î±H¦s¾¹ªºÂX®i 400
20.2.3¡@HS¼Ò¦¡¤Uªº¨t²Î±H¦s¾¹ 402
20.2.4¡@VS¼Ò¦¡¤Uªº¨t²Î±H¦s¾¹ 404
20.3¡@RISC-V¤º¦sµêÀÀ¤Æ 404
20.4¡@RISC-VµêÀÀ¤ÆÂX®i¤¤ªº·s¼W«ü¥O 406
20.4.1¡@¥[¸ü»P¦sÀxµêÀÀ¾÷¤º¦s«ü¥O 406
20.4.2¡@µêÀÀ¤Æ¤º¦s«Ì»Ù«ü¥O 406
20.5¡@¶i¤J©M°h¥XµêÀÀ¾÷ 407
20.5.1¡@²§±`³´¤J 408
20.5.2¡@²§±`ªð¦^ 408
20.5.3¡@·s¼Wªº¤¤Â_»P²§±`Ãþ«¬ 409
20.6¡@¤¤Â_µêÀÀ¤Æ 410
20.6.1¡@µêÀÀ¤¤Â_ª`¤J 410
20.6.2¡@³´¤J»P¼ÒÀÀ 411
20.7¡@®×¨Ò¤ÀªR20-1¡G¶i¤J©M°h¥XµêÀÀ¾÷ 412
20.7.1¡@¶i¤JµêÀÀ¾÷ 413
20.7.2¡@°h¥XµêÀÀ¾÷ 414
20.8¡@®×¨Ò¤ÀªR20-2¡G«Ø¥ßµêÀÀ¤Æ¨â¶¥¬q¦a§}¬M®g 415
20.8.1¡@«Ø¥ß²Ä¤G¶¥¬qªº¦a§}¬M®g 416
20.8.2¡@«Ø¥ß²Ä ¤@¶¥¬qªº¦a§}¬M®g 418
20.8.3¡@´ú¸Õ 419
20.9¡@®×¨Ò¤ÀªR20-3¡G¦bµêÀÀ¾÷¤¤¹ê²{µêÀÀ©w®É¾¹ 420
20.10¡@®×¨Ò¤ÀªR20-4¡G¦bVMM¤¤¥[¸ü©M¦sÀxµêÀÀ¾÷¤º¦s¦a§} 422
20.11¡@®×¨Ò¤ÀªR20-5¡G¦bVMM¤¤¼ÒÀÀ¦ê¤f³]³Æ 424
20.12¡@¹êÅç 429
20.12.1¡@¹êÅç20-1¡G¥[¸üµêÀÀ¾÷1 429
20.12.2¡@¹êÅç20-2¡G¥[¸üµêÀÀ¾÷2 430
20.12.3¡@¹êÅç20-3¡GµêÀÀ¤Æ¦a§}¬M®g 430
20.12.4¡@¹êÅç20-4¡G¸ÑªRµêÀÀ¾÷³´¤Jªº«ü¥O 430
20.12.5¡@¹êÅç20-5¡G¦bVMM¤¤¼ÒÀÀ¹ê²{vPLIC 430
20.12.6¡@¹êÅç20-6¡G¦bµêÀÀ¾÷¤¤¥[¸ü¦}¹B¦æLinux¤º®Ö 430
ªþ¿ýA¡@Ãö¤_RISC-VÅé¨tµ²ºc¦Û´úÃDªº°Ñ¦Òµª®×»P´£¥Ü 431
ªþ¿ýB¡@RV64I«ü¥O³t¬dªí 433
ªþ¿ýC¡@RV64M«ü¥O³t¬dªí 437
ªþ¿ýD¡@RV64±`¥Î°°«ü¥O³t¬dªí 439
§Ç¡G