From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Paul E. McKenney" Subject: [PATCH memory-barriers.txt 5/5] Doc/memory-barriers: Add Korean translation Date: Tue, 26 Jul 2016 11:19:31 -0700 Message-ID: <1469557171-27507-5-git-send-email-paulmck@linux.vnet.ibm.com> References: <20160726181807.GA26700@linux.vnet.ibm.com> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: QUOTED-PRINTABLE Return-path: In-Reply-To: <20160726181807.GA26700@linux.vnet.ibm.com> Sender: linux-kernel-owner@vger.kernel.org To: linux-kernel@vger.kernel.org Cc: mingo@kernel.org, peterz@infradead.org, dhowells@redhat.com, will.deacon@arm.com, linux-arch@vger.kernel.org, sj38.park@gmail.com, "Paul E. McKenney" List-Id: linux-arch.vger.kernel.org =46rom: SeongJae Park This commit adds Korean version of memory-barriers.txt document. The header is referred to HOWTO Korean version. The translation has started from Feb, 2016 and using a public git repository[1] to maintain the work. It's commit history says that it i= s following upstream changes as well. [1] https://github.com/sjp38/linux.doc_trans_membarrier Acked-by: David Howells Acked-by: Minchan Kim Signed-off-by: SeongJae Park Acked-by: Jonathan Corbet Acked-by: Ingo Molnar Reviewed-by: Byungchul Park Signed-off-by: Paul E. McKenney --- Documentation/ko_KR/memory-barriers.txt | 3135 +++++++++++++++++++++++= ++++++++ 1 file changed, 3135 insertions(+) create mode 100644 Documentation/ko_KR/memory-barriers.txt diff --git a/Documentation/ko_KR/memory-barriers.txt b/Documentation/ko= _KR/memory-barriers.txt new file mode 100644 index 000000000000..34d3d380893d --- /dev/null +++ b/Documentation/ko_KR/memory-barriers.txt @@ -0,0 +1,3135 @@ +NOTE: +This is a version of Documentation/memory-barriers.txt translated into= Korean. +This document is maintained by SeongJae Park . +If you find any difference between this document and the original file= or +a problem with the translation, please contact the maintainer of this = file. + +Please also note that the purpose of this file is to be easier to +read for non English (read: Korean) speakers and is not intended as +a fork. So if you have any comments or updates for this file please +update the original English file first. The English version is +definitive, and readers should look there if they have any doubt. + +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D +=EC=9D=B4 =EB=AC=B8=EC=84=9C=EB=8A=94 +Documentation/memory-barriers.txt +=EC=9D=98 =ED=95=9C=EA=B8=80 =EB=B2=88=EC=97=AD=EC=9E=85=EB=8B=88=EB=8B= =A4. + +=EC=97=AD=EC=9E=90=EF=BC=9A =EB=B0=95=EC=84=B1=EC=9E=AC +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D + + + =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D + =EB=A6=AC=EB=88=85=EC=8A=A4 =EC=BB=A4=EB=84=90 =EB=A9=94=EB=AA=A8=EB= =A6=AC =EB=B0=B0=EB=A6=AC=EC=96=B4 + =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D + +=EC=A0=80=EC=9E=90: David Howells + Paul E. McKenney + Will Deacon + Peter Zijlstra + +=3D=3D=3D=3D=3D=3D=3D=3D +=EB=A9=B4=EC=B1=85=EC=A1=B0=ED=95=AD +=3D=3D=3D=3D=3D=3D=3D=3D + +=EC=9D=B4 =EB=AC=B8=EC=84=9C=EB=8A=94 =EB=AA=85=EC=84=B8=EC=84=9C=EA=B0= =80 =EC=95=84=EB=8B=99=EB=8B=88=EB=8B=A4; =EC=9D=B4 =EB=AC=B8=EC=84=9C=EB= =8A=94 =EC=99=84=EB=B2=BD=ED=95=98=EC=A7=80 =EC=95=8A=EC=9D=80=EB=8D=B0= , =EA=B0=84=EA=B2=B0=EC=84=B1=EC=9D=84 =EC=9C=84=ED=95=B4 =EC=9D=98=EB=8F= =84=EB=90=9C +=EB=B6=80=EB=B6=84=EB=8F=84 =EC=9E=88=EA=B3=A0, =EC=9D=98=EB=8F=84=ED=95= =98=EC=A7=84 =EC=95=8A=EC=95=98=EC=A7=80=EB=A7=8C =EC=82=AC=EB=9E=8C=EC= =97=90 =EC=9D=98=ED=95=B4 =EC=93=B0=EC=98=80=EB=8B=A4=EB=B3=B4=EB=8B=88= =EB=B6=88=EC=99=84=EC=A0=84=ED=95=9C =EB=B6=80=EB=B6=84=EB=8F=84 =EC=9E= =88=EC=8A=B5=EB=8B=88=EB=8B=A4. +=EC=9D=B4 =EB=AC=B8=EC=84=9C=EB=8A=94 =EB=A6=AC=EB=88=85=EC=8A=A4=EC=97= =90=EC=84=9C =EC=A0=9C=EA=B3=B5=ED=95=98=EB=8A=94 =EB=8B=A4=EC=96=91=ED= =95=9C =EB=A9=94=EB=AA=A8=EB=A6=AC =EB=B0=B0=EB=A6=AC=EC=96=B4=EB=93=A4= =EC=9D=84 =EC=82=AC=EC=9A=A9=ED=95=98=EA=B8=B0 =EC=9C=84=ED=95=9C +=EC=95=88=EB=82=B4=EC=84=9C=EC=9E=85=EB=8B=88=EB=8B=A4=EB=A7=8C, =EB=AD= =94=EA=B0=80 =EC=9D=B4=EC=83=81=ED=95=98=EB=8B=A4 =EC=8B=B6=EC=9C=BC=EB= =A9=B4 (=EA=B7=B8=EB=9F=B0=EA=B2=8C =EB=A7=8E=EC=9D=84 =EA=B2=81=EB=8B=88= =EB=8B=A4) =EC=A7=88=EB=AC=B8=EC=9D=84 =EB=B6=80=ED=83=81=EB=93=9C=EB=A6= =BD=EB=8B=88=EB=8B=A4. + +=EB=8B=A4=EC=8B=9C =EB=A7=90=ED=95=98=EC=A7=80=EB=A7=8C, =EC=9D=B4 =EB= =AC=B8=EC=84=9C=EB=8A=94 =EB=A6=AC=EB=88=85=EC=8A=A4=EA=B0=80 =ED=95=98= =EB=93=9C=EC=9B=A8=EC=96=B4=EC=97=90 =EA=B8=B0=EB=8C=80=ED=95=98=EB=8A=94= =EC=82=AC=ED=95=AD=EC=97=90 =EB=8C=80=ED=95=9C =EB=AA=85=EC=84=B8=EC=84= =9C=EA=B0=80 +=EC=95=84=EB=8B=99=EB=8B=88=EB=8B=A4. + +=EC=9D=B4 =EB=AC=B8=EC=84=9C=EC=9D=98 =EB=AA=A9=EC=A0=81=EC=9D=80 =EB=91= =90=EA=B0=80=EC=A7=80=EC=9E=85=EB=8B=88=EB=8B=A4: + + (1) =EC=96=B4=EB=96=A4 =ED=8A=B9=EC=A0=95 =EB=B0=B0=EB=A6=AC=EC=96=B4= =EC=97=90 =EB=8C=80=ED=95=B4 =EA=B8=B0=EB=8C=80=ED=95=A0 =EC=88=98 =EC=9E= =88=EB=8A=94 =EC=B5=9C=EC=86=8C=ED=95=9C=EC=9D=98 =EA=B8=B0=EB=8A=A5=EC= =9D=84 =EB=AA=85=EC=84=B8=ED=95=98=EA=B8=B0 =EC=9C=84=ED=95=B4=EC=84=9C= , + =EA=B7=B8=EB=A6=AC=EA=B3=A0 + + (2) =EC=82=AC=EC=9A=A9 =EA=B0=80=EB=8A=A5=ED=95=9C =EB=B0=B0=EB=A6=AC= =EC=96=B4=EB=93=A4=EC=97=90 =EB=8C=80=ED=95=B4 =EC=96=B4=EB=96=BB=EA=B2= =8C =EC=82=AC=EC=9A=A9=ED=95=B4=EC=95=BC =ED=95=98=EB=8A=94=EC=A7=80=EC= =97=90 =EB=8C=80=ED=95=9C =EC=95=88=EB=82=B4=EB=A5=BC =EC=A0=9C=EA=B3=B5= =ED=95=98=EA=B8=B0 + =EC=9C=84=ED=95=B4=EC=84=9C. + +=EC=96=B4=EB=96=A4 =EC=95=84=ED=82=A4=ED=85=8D=EC=B3=90=EB=8A=94 =ED=8A= =B9=EC=A0=95=ED=95=9C =EB=B0=B0=EB=A6=AC=EC=96=B4=EB=93=A4=EC=97=90 =EB= =8C=80=ED=95=B4=EC=84=9C=EB=8A=94 =EC=97=AC=EA=B8=B0=EC=84=9C =EC=9D=B4= =EC=95=BC=EA=B8=B0=ED=95=98=EB=8A=94 =EC=B5=9C=EC=86=8C=ED=95=9C=EC=9D=98 +=EC=9A=94=EA=B5=AC=EC=82=AC=ED=95=AD=EB=93=A4=EB=B3=B4=EB=8B=A4 =EB=A7= =8E=EC=9D=80 =EA=B8=B0=EB=8A=A5=EC=9D=84 =EC=A0=9C=EA=B3=B5=ED=95=A0 =EC= =88=98=EB=8F=84 =EC=9E=88=EC=8A=B5=EB=8B=88=EB=8B=A4=EB=A7=8C, =EC=97=AC= =EA=B8=B0=EC=84=9C =EC=9D=B4=EC=95=BC=EA=B8=B0=ED=95=98=EB=8A=94 +=EC=9A=94=EA=B5=AC=EC=82=AC=ED=95=AD=EB=93=A4=EC=9D=84 =EC=B6=A9=EC=A1= =B1=ED=95=98=EC=A7=80 =EC=95=8A=EB=8A=94 =EC=95=84=ED=82=A4=ED=85=8D=EC= =B3=90=EA=B0=80 =EC=9E=88=EB=8B=A4=EB=A9=B4 =EA=B7=B8 =EC=95=84=ED=82=A4= =ED=85=8D=EC=B3=90=EA=B0=80 =EC=9E=98=EB=AA=BB=EB=90=9C =EA=B2=83=EC=9D= =B4=EB=9E=80 =EC=A0=90=EC=9D=84 +=EC=95=8C=EC=95=84=EB=91=90=EC=8B=9C=EA=B8=B0 =EB=B0=94=EB=9E=8D=EB=8B= =88=EB=8B=A4. + +=EB=98=90=ED=95=9C, =ED=8A=B9=EC=A0=95 =EC=95=84=ED=82=A4=ED=85=8D=EC=B3= =90=EC=97=90=EC=84=9C =EC=9D=BC=EB=B6=80 =EB=B0=B0=EB=A6=AC=EC=96=B4=EB= =8A=94 =ED=95=B4=EB=8B=B9 =EC=95=84=ED=82=A4=ED=85=8D=EC=B3=90=EC=9D=98= =ED=8A=B9=EC=88=98=ED=95=9C =EB=8F=99=EC=9E=91 =EB=B0=A9=EC=8B=9D=EC=9C= =BC=EB=A1=9C =EC=9D=B8=ED=95=B4 +=ED=95=B4=EB=8B=B9 =EB=B0=B0=EB=A6=AC=EC=96=B4=EC=9D=98 =EB=AA=85=EC=8B= =9C=EC=A0=81 =EC=82=AC=EC=9A=A9=EC=9D=B4 =EB=B6=88=ED=95=84=EC=9A=94=ED= =95=B4=EC=84=9C no-op =EC=9D=B4 =EB=90=A0=EC=88=98=EB=8F=84 =EC=9E=88=EC= =9D=8C=EC=9D=84 =EC=95=8C=EC=95=84=EB=91=90=EC=8B=9C=EA=B8=B0 +=EB=B0=94=EB=9E=8D=EB=8B=88=EB=8B=A4. + +=EC=97=AD=EC=9E=90: =EB=B3=B8 =EB=B2=88=EC=97=AD =EC=97=AD=EC=8B=9C =EC= =99=84=EB=B2=BD=ED=95=98=EC=A7=80 =EC=95=8A=EC=9D=80=EB=8D=B0, =EC=9D=B4= =EC=97=AD=EC=8B=9C =EB=B6=80=EB=B6=84=EC=A0=81=EC=9C=BC=EB=A1=9C=EB=8A= =94 =EC=9D=98=EB=8F=84=EB=90=9C =EA=B2=83=EC=9D=B4=EA=B8=B0=EB=8F=84 +=ED=95=A9=EB=8B=88=EB=8B=A4. =EC=97=AC=ED=83=80 =EA=B8=B0=EC=88=A0 =EB= =AC=B8=EC=84=9C=EB=93=A4=EC=9D=B4 =EA=B7=B8=EB=A0=87=EB=93=AF =EC=99=84= =EB=B2=BD=ED=95=9C =EC=9D=B4=ED=95=B4=EB=A5=BC =EC=9C=84=ED=95=B4=EC=84= =9C=EB=8A=94 =EB=B2=88=EC=97=AD=EB=AC=B8=EA=B3=BC =EC=9B=90=EB=AC=B8=EC= =9D=84 =ED=95=A8=EA=BB=98 +=EC=9D=BD=EC=9C=BC=EC=8B=9C=EB=90=98 =EB=B2=88=EC=97=AD=EB=AC=B8=EC=9D= =84 =ED=95=98=EB=82=98=EC=9D=98 =EA=B0=80=EC=9D=B4=EB=93=9C=EB=A1=9C =ED= =99=9C=EC=9A=A9=ED=95=98=EC=8B=9C=EA=B8=B8 =EC=B6=94=EC=B2=9C=EB=93=9C=EB= =A6=AC=EB=A9=B0, =EB=B0=9C=EA=B2=AC=EB=90=98=EB=8A=94 =EC=98=A4=EC=97=AD= =EB=93=B1=EC=97=90 +=EB=8C=80=ED=95=B4=EC=84=9C=EB=8A=94 =EC=96=B8=EC=A0=9C=EB=93=A0 =EC=9D= =98=EA=B2=AC=EC=9D=84 =EB=B6=80=ED=83=81=EB=93=9C=EB=A6=BD=EB=8B=88=EB=8B= =A4. =EA=B3=BC=ED=95=9C =EB=B2=88=EC=97=AD=EC=9C=BC=EB=A1=9C =EC=9D=B8= =ED=95=9C =EC=98=A4=ED=95=B4=EB=A5=BC =EC=B5=9C=EC=86=8C=ED=99=94=ED=95= =98=EA=B8=B0 =EC=9C=84=ED=95=B4 +=EC=95=A0=EB=A7=A4=ED=95=9C =EB=B6=80=EB=B6=84=EC=9D=B4 =EC=9E=88=EC=9D= =84 =EA=B2=BD=EC=9A=B0=EC=97=90=EB=8A=94 =EC=96=B4=EC=83=89=ED=95=A8=EC= =9D=B4 =EC=9E=88=EB=8D=94=EB=9D=BC=EB=8F=84 =EC=9B=90=EB=9E=98=EC=9D=98= =EC=9A=A9=EC=96=B4=EB=A5=BC =EC=B0=A8=EC=9A=A9=ED=95=A9=EB=8B=88=EB=8B= =A4. + + +=3D=3D=3D=3D=3D +=EB=AA=A9=EC=B0=A8: +=3D=3D=3D=3D=3D + + (*) =EC=B6=94=EC=83=81 =EB=A9=94=EB=AA=A8=EB=A6=AC =EC=95=A1=EC=84=B8= =EC=8A=A4 =EB=AA=A8=EB=8D=B8. + + - =EB=94=94=EB=B0=94=EC=9D=B4=EC=8A=A4 =EC=98=A4=ED=8D=BC=EB=A0=88= =EC=9D=B4=EC=85=98. + - =EB=B3=B4=EC=9E=A5=EC=82=AC=ED=95=AD. + + (*) =EB=A9=94=EB=AA=A8=EB=A6=AC =EB=B0=B0=EB=A6=AC=EC=96=B4=EB=9E=80 = =EB=AC=B4=EC=97=87=EC=9D=B8=EA=B0=80? + + - =EB=A9=94=EB=AA=A8=EB=A6=AC =EB=B0=B0=EB=A6=AC=EC=96=B4=EC=9D=98= =EC=A2=85=EB=A5=98. + - =EB=A9=94=EB=AA=A8=EB=A6=AC =EB=B0=B0=EB=A6=AC=EC=96=B4=EC=97=90= =EB=8C=80=ED=95=B4 =EA=B0=80=EC=A0=95=ED=95=B4=EC=84=A0 =EC=95=88=EB=90= =A0 =EA=B2=83. + - =EB=8D=B0=EC=9D=B4=ED=84=B0 =EC=9D=98=EC=A1=B4=EC=84=B1 =EB=B0=B0= =EB=A6=AC=EC=96=B4. + - =EC=BB=A8=ED=8A=B8=EB=A1=A4 =EC=9D=98=EC=A1=B4=EC=84=B1. + - SMP =EB=B0=B0=EB=A6=AC=EC=96=B4 =EC=A7=9D=EB=A7=9E=EC=B6=94=EA=B8= =B0. + - =EB=A9=94=EB=AA=A8=EB=A6=AC =EB=B0=B0=EB=A6=AC=EC=96=B4 =EC=8B=9C= =ED=80=80=EC=8A=A4=EC=9D=98 =EC=98=88. + - =EC=9D=BD=EA=B8=B0 =EB=A9=94=EB=AA=A8=EB=A6=AC =EB=B0=B0=EB=A6=AC= =EC=96=B4 vs =EB=A1=9C=EB=93=9C =EC=98=88=EC=B8=A1. + - =EC=9D=B4=ED=96=89=EC=84=B1 + + (*) =EB=AA=85=EC=8B=9C=EC=A0=81 =EC=BB=A4=EB=84=90 =EB=B0=B0=EB=A6=AC= =EC=96=B4. + + - =EC=BB=B4=ED=8C=8C=EC=9D=BC=EB=9F=AC =EB=B0=B0=EB=A6=AC=EC=96=B4= =2E + - CPU =EB=A9=94=EB=AA=A8=EB=A6=AC =EB=B0=B0=EB=A6=AC=EC=96=B4. + - MMIO =EC=93=B0=EA=B8=B0 =EB=B0=B0=EB=A6=AC=EC=96=B4. + + (*) =EC=95=94=EB=AC=B5=EC=A0=81 =EC=BB=A4=EB=84=90 =EB=A9=94=EB=AA=A8= =EB=A6=AC =EB=B0=B0=EB=A6=AC=EC=96=B4. + + - =EB=9D=BD Acquisition =ED=95=A8=EC=88=98. + - =EC=9D=B8=ED=84=B0=EB=9F=BD=ED=8A=B8 =EB=B9=84=ED=99=9C=EC=84=B1= =ED=99=94 =ED=95=A8=EC=88=98. + - =EC=8A=AC=EB=A6=BD=EA=B3=BC =EC=9B=A8=EC=9D=B4=ED=81=AC=EC=97=85= =ED=95=A8=EC=88=98. + - =EA=B7=B8=EC=99=B8=EC=9D=98 =ED=95=A8=EC=88=98=EB=93=A4. + + (*) CPU =EA=B0=84 ACQUIRING =EB=B0=B0=EB=A6=AC=EC=96=B4=EC=9D=98 =ED=9A= =A8=EA=B3=BC. + + - Acquire vs =EB=A9=94=EB=AA=A8=EB=A6=AC =EC=95=A1=EC=84=B8=EC=8A= =A4. + - Acquire vs I/O =EC=95=A1=EC=84=B8=EC=8A=A4. + + (*) =EB=A9=94=EB=AA=A8=EB=A6=AC =EB=B0=B0=EB=A6=AC=EC=96=B4=EA=B0=80 = =ED=95=84=EC=9A=94=ED=95=9C =EA=B3=B3 + + - =ED=94=84=EB=A1=9C=EC=84=B8=EC=84=9C=EA=B0=84 =EC=83=81=ED=98=B8= =EC=9E=91=EC=9A=A9. + - =EC=96=B4=ED=86=A0=EB=AF=B9 =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4= =EC=85=98. + - =EB=94=94=EB=B0=94=EC=9D=B4=EC=8A=A4 =EC=95=A1=EC=84=B8=EC=8A=A4= =2E + - =EC=9D=B8=ED=84=B0=EB=9F=BD=ED=8A=B8. + + (*) =EC=BB=A4=EB=84=90 I/O =EB=B0=B0=EB=A6=AC=EC=96=B4=EC=9D=98 =ED=9A= =A8=EA=B3=BC. + + (*) =EA=B0=80=EC=A0=95=EB=90=98=EB=8A=94 =EA=B0=80=EC=9E=A5 =EC=99=84= =ED=99=94=EB=90=9C =EC=8B=A4=ED=96=89 =EC=88=9C=EC=84=9C =EB=AA=A8=EB=8D= =B8. + + (*) CPU =EC=BA=90=EC=8B=9C=EC=9D=98 =EC=98=81=ED=96=A5. + + - =EC=BA=90=EC=8B=9C =EC=9D=BC=EA=B4=80=EC=84=B1. + - =EC=BA=90=EC=8B=9C =EC=9D=BC=EA=B4=80=EC=84=B1 vs DMA. + - =EC=BA=90=EC=8B=9C =EC=9D=BC=EA=B4=80=EC=84=B1 vs MMIO. + + (*) CPU =EB=93=A4=EC=9D=B4 =EC=A0=80=EC=A7=80=EB=A5=B4=EB=8A=94 =EC=9D= =BC=EB=93=A4. + + - =EA=B7=B8=EB=A6=AC=EA=B3=A0, Alpha =EA=B0=80 =EC=9E=88=EB=8B=A4= =2E + - =EA=B0=80=EC=83=81 =EB=A8=B8=EC=8B=A0 =EA=B2=8C=EC=8A=A4=ED=8A=B8= =2E + + (*) =EC=82=AC=EC=9A=A9 =EC=98=88. + + - =EC=88=9C=ED=99=98=EC=8B=9D =EB=B2=84=ED=8D=BC. + + (*) =EC=B0=B8=EA=B3=A0 =EB=AC=B8=ED=97=8C. + + +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D +=EC=B6=94=EC=83=81 =EB=A9=94=EB=AA=A8=EB=A6=AC =EC=95=A1=EC=84=B8=EC=8A= =A4 =EB=AA=A8=EB=8D=B8 +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D + +=EB=8B=A4=EC=9D=8C=EA=B3=BC =EA=B0=99=EC=9D=B4 =EC=B6=94=EC=83=81=ED=99= =94=EB=90=9C =EC=8B=9C=EC=8A=A4=ED=85=9C =EB=AA=A8=EB=8D=B8=EC=9D=84 =EC= =83=9D=EA=B0=81=ED=95=B4 =EB=B4=85=EC=8B=9C=EB=8B=A4: + + : : + : : + : : + +-------+ : +--------+ : +-------+ + | | : | | : | | + | | : | | : | | + | CPU 1 |<----->| Memory |<----->| CPU 2 | + | | : | | : | | + | | : | | : | | + +-------+ : +--------+ : +-------+ + ^ : ^ : ^ + | : | : | + | : | : | + | : v : | + | : +--------+ : | + | : | | : | + | : | | : | + +---------->| Device |<----------+ + : | | : + : | | : + : +--------+ : + : : + +=ED=94=84=EB=A1=9C=EA=B7=B8=EB=9E=A8=EC=9D=80 =EC=97=AC=EB=9F=AC =EB=A9= =94=EB=AA=A8=EB=A6=AC =EC=95=A1=EC=84=B8=EC=8A=A4 =EC=98=A4=ED=8D=BC=EB= =A0=88=EC=9D=B4=EC=85=98=EC=9D=84 =EB=B0=9C=EC=83=9D=EC=8B=9C=ED=82=A4=EA= =B3=A0, =EA=B0=81=EA=B0=81=EC=9D=98 CPU =EB=8A=94 =EA=B7=B8=EB=9F=B0 +=ED=94=84=EB=A1=9C=EA=B7=B8=EB=9E=A8=EB=93=A4=EC=9D=84 =EC=8B=A4=ED=96= =89=ED=95=A9=EB=8B=88=EB=8B=A4. =EC=B6=94=EC=83=81=ED=99=94=EB=90=9C C= PU =EB=AA=A8=EB=8D=B8=EC=97=90=EC=84=9C =EB=A9=94=EB=AA=A8=EB=A6=AC =EC= =98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85=98=EB=93=A4=EC=9D=98 =EC=88=9C=EC= =84=9C=EB=8A=94 +=EB=A7=A4=EC=9A=B0 =EC=99=84=ED=99=94=EB=90=98=EC=96=B4 =EC=9E=88=EA=B3= =A0, CPU =EB=8A=94 =ED=94=84=EB=A1=9C=EA=B7=B8=EB=9E=A8=EC=9D=B4 =EC=9D= =B8=EA=B3=BC=EA=B4=80=EA=B3=84=EB=A5=BC =EC=96=B4=EA=B8=B0=EC=A7=80 =EC= =95=8A=EB=8A=94 =EC=83=81=ED=83=9C=EB=A1=9C =EA=B4=80=EB=A6=AC=EB=90=9C= =EB=8B=A4=EA=B3=A0 +=EB=B3=B4=EC=9D=BC =EC=88=98=EB=A7=8C =EC=9E=88=EB=8B=A4=EB=A9=B4 =EB=A9= =94=EB=AA=A8=EB=A6=AC =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85=98=EC=9D= =84 =EC=9E=90=EC=8B=A0=EC=9D=B4 =EC=9B=90=ED=95=98=EB=8A=94 =EC=96=B4=EB= =96=A4 =EC=88=9C=EC=84=9C=EB=8C=80=EB=A1=9C=EB=93=A0 =EC=9E=AC=EB=B0=B0= =EC=B9=98=ED=95=B4 +=EB=8F=99=EC=9E=91=EC=8B=9C=ED=82=AC =EC=88=98 =EC=9E=88=EC=8A=B5=EB=8B= =88=EB=8B=A4. =EB=B9=84=EC=8A=B7=ED=95=98=EA=B2=8C, =EC=BB=B4=ED=8C=8C= =EC=9D=BC=EB=9F=AC =EB=98=90=ED=95=9C =ED=94=84=EB=A1=9C=EA=B7=B8=EB=9E= =A8=EC=9D=98 =EC=A0=95=EC=83=81=EC=A0=81 =EB=8F=99=EC=9E=91=EC=9D=84 =ED= =95=B4=EC=B9=98=EC=A7=80 +=EC=95=8A=EB=8A=94 =ED=95=9C=EB=8F=84 =EB=82=B4=EC=97=90=EC=84=9C=EB=8A= =94 =EC=96=B4=EB=96=A4 =EC=88=9C=EC=84=9C=EB=A1=9C=EB=93=A0 =EC=9E=90=EC= =8B=A0=EC=9D=B4 =EC=9B=90=ED=95=98=EB=8A=94 =EB=8C=80=EB=A1=9C =EC=9D=B8= =EC=8A=A4=ED=8A=B8=EB=9F=AD=EC=85=98=EC=9D=84 =EC=9E=AC=EB=B0=B0=EC=B9=98= =ED=95=A0 =EC=88=98 +=EC=9E=88=EC=8A=B5=EB=8B=88=EB=8B=A4. + +=EB=94=B0=EB=9D=BC=EC=84=9C =EC=9C=84=EC=9D=98 =EB=8B=A4=EC=9D=B4=EC=96= =B4=EA=B7=B8=EB=9E=A8=EC=97=90=EC=84=9C =ED=95=9C CPU=EA=B0=80 =EB=8F=99= =EC=9E=91=EC=8B=9C=ED=82=A4=EB=8A=94 =EB=A9=94=EB=AA=A8=EB=A6=AC =EC=98= =A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85=98=EC=9D=B4 =EB=A7=8C=EB=93=A4=EC=96= =B4=EB=82=B4=EB=8A=94 +=EB=B3=80=ED=99=94=EB=8A=94 =ED=95=B4=EB=8B=B9 =EC=98=A4=ED=8D=BC=EB=A0= =88=EC=9D=B4=EC=85=98=EC=9D=B4 CPU =EC=99=80 =EC=8B=9C=EC=8A=A4=ED=85=9C= =EC=9D=98 =EB=8B=A4=EB=A5=B8 =EB=B6=80=EB=B6=84=EB=93=A4 =EC=82=AC=EC=9D= =B4=EC=9D=98 =EC=9D=B8=ED=84=B0=ED=8E=98=EC=9D=B4=EC=8A=A4(=EC=A0=90=EC= =84=A0)=EB=A5=BC +=EC=A7=80=EB=82=98=EA=B0=80=EB=A9=B4=EC=84=9C =EC=8B=9C=EC=8A=A4=ED=85= =9C=EC=9D=98 =EB=82=98=EB=A8=B8=EC=A7=80 =EB=B6=80=EB=B6=84=EB=93=A4=EC= =97=90 =EC=9D=B8=EC=A7=80=EB=90=A9=EB=8B=88=EB=8B=A4. + + +=EC=98=88=EB=A5=BC =EB=93=A4=EC=96=B4, =EB=8B=A4=EC=9D=8C=EC=9D=98 =EC= =9D=BC=EB=A0=A8=EC=9D=98 =EC=9D=B4=EB=B2=A4=ED=8A=B8=EB=93=A4=EC=9D=84 = =EC=83=9D=EA=B0=81=ED=95=B4 =EB=B4=85=EC=8B=9C=EB=8B=A4: + + CPU 1 CPU 2 + =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D + { A =3D=3D 1; B =3D=3D 2 } + A =3D 3; x =3D B; + B =3D 4; y =3D A; + +=EB=8B=A4=EC=9D=B4=EC=96=B4=EA=B7=B8=EB=9E=A8=EC=9D=98 =EA=B0=80=EC=9A= =B4=EB=8D=B0=EC=97=90 =EC=9C=84=EC=B9=98=ED=95=9C =EB=A9=94=EB=AA=A8=EB= =A6=AC =EC=8B=9C=EC=8A=A4=ED=85=9C=EC=97=90 =EB=B3=B4=EC=97=AC=EC=A7=80= =EA=B2=8C =EB=90=98=EB=8A=94 =EC=95=A1=EC=84=B8=EC=8A=A4=EB=93=A4=EC=9D= =80 =EB=8B=A4=EC=9D=8C=EC=9D=98 =EC=B4=9D +24=EA=B0=9C=EC=9D=98 =EC=A1=B0=ED=95=A9=EC=9C=BC=EB=A1=9C =EC=9E=AC=EA= =B5=AC=EC=84=B1=EB=90=A0 =EC=88=98 =EC=9E=88=EC=8A=B5=EB=8B=88=EB=8B=A4= : + + STORE A=3D3, STORE B=3D4, y=3DLOAD A->3, x=3DLOAD B->4 + STORE A=3D3, STORE B=3D4, x=3DLOAD B->4, y=3DLOAD A->3 + STORE A=3D3, y=3DLOAD A->3, STORE B=3D4, x=3DLOAD B->4 + STORE A=3D3, y=3DLOAD A->3, x=3DLOAD B->2, STORE B=3D4 + STORE A=3D3, x=3DLOAD B->2, STORE B=3D4, y=3DLOAD A->3 + STORE A=3D3, x=3DLOAD B->2, y=3DLOAD A->3, STORE B=3D4 + STORE B=3D4, STORE A=3D3, y=3DLOAD A->3, x=3DLOAD B->4 + STORE B=3D4, ... + ... + +=EB=94=B0=EB=9D=BC=EC=84=9C =EB=8B=A4=EC=9D=8C=EC=9D=98 =EB=84=A4=EA=B0= =80=EC=A7=80 =EC=A1=B0=ED=95=A9=EC=9D=98 =EA=B0=92=EB=93=A4=EC=9D=B4 =EB= =82=98=EC=98=AC =EC=88=98 =EC=9E=88=EC=8A=B5=EB=8B=88=EB=8B=A4: + + x =3D=3D 2, y =3D=3D 1 + x =3D=3D 2, y =3D=3D 3 + x =3D=3D 4, y =3D=3D 1 + x =3D=3D 4, y =3D=3D 3 + + +=ED=95=9C=EB=B0=9C =EB=8D=94 =EB=82=98=EC=95=84=EA=B0=80=EC=84=9C, =ED= =95=9C CPU =EA=B0=80 =EB=A9=94=EB=AA=A8=EB=A6=AC =EC=8B=9C=EC=8A=A4=ED=85= =9C=EC=97=90 =EB=B0=98=EC=98=81=ED=95=9C =EC=8A=A4=ED=86=A0=EC=96=B4 =EC= =98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85=98=EB=93=A4=EC=9D=98 =EA=B2=B0=EA= =B3=BC=EB=8A=94 +=EB=8B=A4=EB=A5=B8 CPU =EC=97=90=EC=84=9C=EC=9D=98 =EB=A1=9C=EB=93=9C = =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85=98=EC=9D=84 =ED=86=B5=ED=95=B4= =EC=9D=B8=EC=A7=80=EB=90=98=EB=8A=94=EB=8D=B0, =EC=9D=B4 =EB=95=8C =EC= =8A=A4=ED=86=A0=EC=96=B4=EA=B0=80 =EB=B0=98=EC=98=81=EB=90=9C =EC=88=9C= =EC=84=9C=EC=99=80 +=EB=8B=A4=EB=A5=B8 =EC=88=9C=EC=84=9C=EB=A1=9C =EC=9D=B8=EC=A7=80=EB=90= =A0 =EC=88=98=EB=8F=84 =EC=9E=88=EC=8A=B5=EB=8B=88=EB=8B=A4. + + +=EC=98=88=EB=A1=9C, =EC=95=84=EB=9E=98=EC=9D=98 =EC=9D=BC=EB=A0=A8=EC=9D= =98 =EC=9D=B4=EB=B2=A4=ED=8A=B8=EB=93=A4=EC=9D=84 =EC=83=9D=EA=B0=81=ED= =95=B4 =EB=B4=85=EC=8B=9C=EB=8B=A4: + + CPU 1 CPU 2 + =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D + { A =3D=3D 1, B =3D=3D 2, C =3D=3D 3, P =3D=3D &A, Q =3D=3D &C } + B =3D 4; Q =3D P; + P =3D &B D =3D *Q; + +D =EB=A1=9C =EC=9D=BD=ED=98=80=EC=A7=80=EB=8A=94 =EA=B0=92=EC=9D=80 CP= U 2 =EC=97=90=EC=84=9C P =EB=A1=9C=EB=B6=80=ED=84=B0 =EC=9D=BD=ED=98=80= =EC=A7=84 =EC=A3=BC=EC=86=8C=EA=B0=92=EC=97=90 =EC=9D=98=EC=A1=B4=EC=A0= =81=EC=9D=B4=EA=B8=B0 =EB=95=8C=EB=AC=B8=EC=97=90 =EC=97=AC=EA=B8=B0=EC= =97=94 +=EB=B6=84=EB=AA=85=ED=95=9C =EB=8D=B0=EC=9D=B4=ED=84=B0 =EC=9D=98=EC=A1= =B4=EC=84=B1=EC=9D=B4 =EC=9E=88=EC=8A=B5=EB=8B=88=EB=8B=A4. =ED=95=98=EC= =A7=80=EB=A7=8C =EC=9D=B4 =EC=9D=B4=EB=B2=A4=ED=8A=B8=EB=93=A4=EC=9D=98= =EC=8B=A4=ED=96=89 =EA=B2=B0=EA=B3=BC=EB=A1=9C=EB=8A=94 =EC=95=84=EB=9E= =98=EC=9D=98 +=EA=B2=B0=EA=B3=BC=EB=93=A4=EC=9D=B4 =EB=AA=A8=EB=91=90 =EB=82=98=ED=83= =80=EB=82=A0 =EC=88=98 =EC=9E=88=EC=8A=B5=EB=8B=88=EB=8B=A4: + + (Q =3D=3D &A) and (D =3D=3D 1) + (Q =3D=3D &B) and (D =3D=3D 2) + (Q =3D=3D &B) and (D =3D=3D 4) + +CPU 2 =EB=8A=94 *Q =EC=9D=98 =EB=A1=9C=EB=93=9C=EB=A5=BC =EC=9A=94=EC=B2= =AD=ED=95=98=EA=B8=B0 =EC=A0=84=EC=97=90 P =EB=A5=BC Q =EC=97=90 =EB=84= =A3=EA=B8=B0 =EB=95=8C=EB=AC=B8=EC=97=90 D =EC=97=90 C =EB=A5=BC =EC=A7= =91=EC=96=B4=EB=84=A3=EB=8A=94 +=EC=9D=BC=EC=9D=80 =EC=97=86=EC=9D=8C=EC=9D=84 =EC=95=8C=EC=95=84=EB=91= =90=EC=84=B8=EC=9A=94. + + +=EB=94=94=EB=B0=94=EC=9D=B4=EC=8A=A4 =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D= =B4=EC=85=98 +------------------- + +=EC=9D=BC=EB=B6=80 =EB=94=94=EB=B0=94=EC=9D=B4=EC=8A=A4=EB=8A=94 =EC=9E= =90=EC=8B=A0=EC=9D=98 =EC=BB=A8=ED=8A=B8=EB=A1=A4 =EC=9D=B8=ED=84=B0=ED= =8E=98=EC=9D=B4=EC=8A=A4=EB=A5=BC =EB=A9=94=EB=AA=A8=EB=A6=AC=EC=9D=98 = =ED=8A=B9=EC=A0=95 =EC=98=81=EC=97=AD=EC=9C=BC=EB=A1=9C =EB=A7=A4=ED=95= =91=ED=95=B4=EC=84=9C +=EC=A0=9C=EA=B3=B5=ED=95=98=EB=8A=94=EB=8D=B0(Memory mapped I/O), =ED=95= =B4=EB=8B=B9 =EC=BB=A8=ED=8A=B8=EB=A1=A4 =EB=A0=88=EC=A7=80=EC=8A=A4=ED= =84=B0=EC=97=90 =EC=A0=91=EA=B7=BC=ED=95=98=EB=8A=94 =EC=88=9C=EC=84=9C= =EB=8A=94 =EB=A7=A4=EC=9A=B0 +=EC=A4=91=EC=9A=94=ED=95=A9=EB=8B=88=EB=8B=A4. =EC=98=88=EB=A5=BC =EB= =93=A4=EC=96=B4, =EC=96=B4=EB=93=9C=EB=A0=88=EC=8A=A4 =ED=8F=AC=ED=8A=B8= =EB=A0=88=EC=A7=80=EC=8A=A4=ED=84=B0 (A) =EC=99=80 =EB=8D=B0=EC=9D=B4=ED= =84=B0 =ED=8F=AC=ED=8A=B8 =EB=A0=88=EC=A7=80=EC=8A=A4=ED=84=B0 (D) +=EB=A5=BC =ED=86=B5=ED=95=B4 =EC=A0=91=EA=B7=BC=EB=90=98=EB=8A=94 =EB=82= =B4=EB=B6=80 =EB=A0=88=EC=A7=80=EC=8A=A4=ED=84=B0 =EC=A7=91=ED=95=A9=EC= =9D=84 =EA=B0=96=EB=8A=94 =EC=9D=B4=EB=8D=94=EB=84=B7 =EC=B9=B4=EB=93=9C= =EB=A5=BC =EC=83=9D=EA=B0=81=ED=95=B4 =EB=B4=85=EC=8B=9C=EB=8B=A4. =EB= =82=B4=EB=B6=80=EC=9D=98 +5=EB=B2=88 =EB=A0=88=EC=A7=80=EC=8A=A4=ED=84=B0=EB=A5=BC =EC=9D=BD=EA=B8= =B0 =EC=9C=84=ED=95=B4 =EB=8B=A4=EC=9D=8C=EC=9D=98 =EC=BD=94=EB=93=9C=EA= =B0=80 =EC=82=AC=EC=9A=A9=EB=90=A0 =EC=88=98 =EC=9E=88=EC=8A=B5=EB=8B=88= =EB=8B=A4: + + *A =3D 5; + x =3D *D; + +=ED=95=98=EC=A7=80=EB=A7=8C, =EC=9D=B4=EA=B1=B4 =EB=8B=A4=EC=9D=8C=EC=9D= =98 =EB=91=90 =EC=A1=B0=ED=95=A9 =EC=A4=91 =ED=95=98=EB=82=98=EB=A1=9C = =EB=A7=8C=EB=93=A4=EC=96=B4=EC=A7=88 =EC=88=98 =EC=9E=88=EC=8A=B5=EB=8B= =88=EB=8B=A4: + + STORE *A =3D 5, x =3D LOAD *D + x =3D LOAD *D, STORE *A =3D 5 + +=EB=91=90=EB=B2=88=EC=A7=B8 =EC=A1=B0=ED=95=A9=EC=9D=80 =EB=8D=B0=EC=9D= =B4=ED=84=B0=EB=A5=BC =EC=9D=BD=EC=96=B4=EC=98=A8 _=ED=9B=84=EC=97=90_ = =EC=A3=BC=EC=86=8C=EB=A5=BC =EC=84=A4=EC=A0=95=ED=95=98=EB=AF=80=EB=A1=9C= , =EC=98=A4=EB=8F=99=EC=9E=91=EC=9D=84 =EC=9D=BC=EC=9C=BC=ED=82=AC =EA=B2= =81=EB=8B=88=EB=8B=A4. + + +=EB=B3=B4=EC=9E=A5=EC=82=AC=ED=95=AD +-------- + +CPU =EC=97=90=EA=B2=8C =EA=B8=B0=EB=8C=80=ED=95=A0 =EC=88=98 =EC=9E=88= =EB=8A=94 =EC=B5=9C=EC=86=8C=ED=95=9C=EC=9D=98 =EB=B3=B4=EC=9E=A5=EC=82= =AC=ED=95=AD =EB=AA=87=EA=B0=80=EC=A7=80=EA=B0=80 =EC=9E=88=EC=8A=B5=EB= =8B=88=EB=8B=A4: + + (*) =EC=96=B4=EB=96=A4 CPU =EB=93=A0, =EC=9D=98=EC=A1=B4=EC=84=B1=EC=9D= =B4 =EC=A1=B4=EC=9E=AC=ED=95=98=EB=8A=94 =EB=A9=94=EB=AA=A8=EB=A6=AC =EC= =95=A1=EC=84=B8=EC=8A=A4=EB=93=A4=EC=9D=80 =ED=95=B4=EB=8B=B9 CPU =EC=9E= =90=EC=8B=A0=EC=97=90=EA=B2=8C + =EC=9E=88=EC=96=B4=EC=84=9C=EB=8A=94 =EC=88=9C=EC=84=9C=EB=8C=80=EB= =A1=9C =EB=A9=94=EB=AA=A8=EB=A6=AC =EC=8B=9C=EC=8A=A4=ED=85=9C=EC=97=90= =EC=88=98=ED=96=89 =EC=9A=94=EC=B2=AD=EB=90=A9=EB=8B=88=EB=8B=A4. =EC=A6= =89, =EB=8B=A4=EC=9D=8C=EC=97=90 =EB=8C=80=ED=95=B4=EC=84=9C: + + Q =3D READ_ONCE(P); smp_read_barrier_depends(); D =3D READ_ONCE(*Q); + + CPU =EB=8A=94 =EB=8B=A4=EC=9D=8C=EA=B3=BC =EA=B0=99=EC=9D=80 =EB=A9= =94=EB=AA=A8=EB=A6=AC =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85=98 =EC= =8B=9C=ED=80=80=EC=8A=A4=EB=A5=BC =EC=88=98=ED=96=89 =EC=9A=94=EC=B2=AD= =ED=95=A9=EB=8B=88=EB=8B=A4: + + Q =3D LOAD P, D =3D LOAD *Q + + =EA=B7=B8=EB=A6=AC=EA=B3=A0 =EA=B7=B8 =EC=8B=9C=ED=80=80=EC=8A=A4= =EB=82=B4=EC=97=90=EC=84=9C=EC=9D=98 =EC=88=9C=EC=84=9C=EB=8A=94 =ED=95= =AD=EC=83=81 =EC=A7=80=EC=BC=9C=EC=A7=91=EB=8B=88=EB=8B=A4. =EB=8C=80=EB= =B6=80=EB=B6=84=EC=9D=98 =EC=8B=9C=EC=8A=A4=ED=85=9C=EC=97=90=EC=84=9C + smp_read_barrier_depends() =EB=8A=94 =EC=95=84=EB=AC=B4=EC=9D=BC=EB= =8F=84 =EC=95=88=ED=95=98=EC=A7=80=EB=A7=8C DEC Alpha =EC=97=90=EC=84=9C= =EB=8A=94 + =EB=AA=85=EC=8B=9C=EC=A0=81=EC=9C=BC=EB=A1=9C =EC=82=AC=EC=9A=A9=EB= =90=98=EC=96=B4=EC=95=BC =ED=95=A9=EB=8B=88=EB=8B=A4. =EB=B3=B4=ED=86=B5= =EC=9D=98 =EA=B2=BD=EC=9A=B0=EC=97=90=EB=8A=94 smp_read_barrier_depends= () + =EB=A5=BC =EC=A7=81=EC=A0=91 =EC=82=AC=EC=9A=A9=ED=95=98=EB=8A=94= =EB=8C=80=EC=8B=A0 rcu_dereference() =EA=B0=99=EC=9D=80 =EA=B2=83=EB=93= =A4=EC=9D=84 =EC=82=AC=EC=9A=A9=ED=95=B4=EC=95=BC =ED=95=A8=EC=9D=84 + =EC=95=8C=EC=95=84=EB=91=90=EC=84=B8=EC=9A=94. + + (*) =ED=8A=B9=EC=A0=95 CPU =EB=82=B4=EC=97=90=EC=84=9C =EA=B2=B9=EC=B9= =98=EB=8A=94 =EC=98=81=EC=97=AD=EC=9D=98 =EB=A9=94=EB=AA=A8=EB=A6=AC=EC= =97=90 =ED=96=89=ED=95=B4=EC=A7=80=EB=8A=94 =EB=A1=9C=EB=93=9C=EC=99=80= =EC=8A=A4=ED=86=A0=EC=96=B4 =EB=93=A4=EC=9D=80 =ED=95=B4=EB=8B=B9 + CPU =EC=95=88=EC=97=90=EC=84=9C=EB=8A=94 =EC=88=9C=EC=84=9C=EA=B0= =80 =EB=B0=94=EB=80=8C=EC=A7=80 =EC=95=8A=EC=9D=80 =EA=B2=83=EC=9C=BC=EB= =A1=9C =EB=B3=B4=EC=97=AC=EC=A7=91=EB=8B=88=EB=8B=A4. =EC=A6=89, =EB=8B= =A4=EC=9D=8C=EC=97=90 =EB=8C=80=ED=95=B4=EC=84=9C: + + a =3D READ_ONCE(*X); WRITE_ONCE(*X, b); + + CPU =EB=8A=94 =EB=8B=A4=EC=9D=8C=EC=9D=98 =EB=A9=94=EB=AA=A8=EB=A6= =AC =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85=98 =EC=8B=9C=ED=80=80=EC= =8A=A4=EB=A7=8C=EC=9D=84 =EB=A9=94=EB=AA=A8=EB=A6=AC=EC=97=90 =EC=9A=94= =EC=B2=AD=ED=95=A0 =EA=B2=81=EB=8B=88=EB=8B=A4: + + a =3D LOAD *X, STORE *X =3D b + + =EA=B7=B8=EB=A6=AC=EA=B3=A0 =EB=8B=A4=EC=9D=8C=EC=97=90 =EB=8C=80= =ED=95=B4=EC=84=9C=EB=8A=94: + + WRITE_ONCE(*X, c); d =3D READ_ONCE(*X); + + CPU =EB=8A=94 =EB=8B=A4=EC=9D=8C=EC=9D=98 =EC=88=98=ED=96=89 =EC=9A= =94=EC=B2=AD=EB=A7=8C=EC=9D=84 =EB=A7=8C=EB=93=A4=EC=96=B4 =EB=83=85=EB= =8B=88=EB=8B=A4: + + STORE *X =3D c, d =3D LOAD *X + + (=EB=A1=9C=EB=93=9C =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85=98= =EA=B3=BC =EC=8A=A4=ED=86=A0=EC=96=B4 =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D= =B4=EC=85=98=EC=9D=B4 =EA=B2=B9=EC=B9=98=EB=8A=94 =EB=A9=94=EB=AA=A8=EB= =A6=AC =EC=98=81=EC=97=AD=EC=97=90 =EB=8C=80=ED=95=B4 + =EC=88=98=ED=96=89=EB=90=9C=EB=8B=A4=EB=A9=B4 =ED=95=B4=EB=8B=B9 = =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85=98=EB=93=A4=EC=9D=80 =EA=B2=B9= =EC=B9=9C=EB=8B=A4=EA=B3=A0 =ED=91=9C=ED=98=84=EB=90=A9=EB=8B=88=EB=8B=A4= ). + +=EA=B7=B8=EB=A6=AC=EA=B3=A0 _=EB=B0=98=EB=93=9C=EC=8B=9C_ =EB=98=90=EB= =8A=94 _=EC=A0=88=EB=8C=80=EB=A1=9C_ =EA=B0=80=EC=A0=95=ED=95=98=EA=B1=B0= =EB=82=98 =EA=B0=80=EC=A0=95=ED=95=98=EC=A7=80 =EB=A7=90=EC=95=84=EC=95= =BC =ED=95=98=EB=8A=94 =EA=B2=83=EB=93=A4=EC=9D=B4 =EC=9E=88=EC=8A=B5=EB= =8B=88=EB=8B=A4: + + (*) =EC=BB=B4=ED=8C=8C=EC=9D=BC=EB=9F=AC=EA=B0=80 READ_ONCE() =EB=82=98= WRITE_ONCE() =EB=A1=9C =EB=B3=B4=ED=98=B8=EB=90=98=EC=A7=80 =EC=95=8A=EC= =9D=80 =EB=A9=94=EB=AA=A8=EB=A6=AC =EC=95=A1=EC=84=B8=EC=8A=A4=EB=A5=BC + =EB=8B=B9=EC=8B=A0=EC=9D=B4 =EC=9B=90=ED=95=98=EB=8A=94 =EB=8C=80= =EB=A1=9C =ED=95=A0 =EA=B2=83=EC=9D=B4=EB=9D=BC=EB=8A=94 =EA=B0=80=EC=A0= =95=EC=9D=80 _=EC=A0=88=EB=8C=80=EB=A1=9C_ =ED=95=B4=EC=84=A0 =EC=95=88= =EB=90=A9=EB=8B=88=EB=8B=A4. =EA=B7=B8=EA=B2=83=EB=93=A4=EC=9D=B4 + =EC=97=86=EB=8B=A4=EB=A9=B4, =EC=BB=B4=ED=8C=8C=EC=9D=BC=EB=9F=AC= =EB=8A=94 =EC=BB=B4=ED=8C=8C=EC=9D=BC=EB=9F=AC =EB=B0=B0=EB=A6=AC=EC=96= =B4 =EC=84=B9=EC=85=98=EC=97=90=EC=84=9C =EB=8B=A4=EB=A3=A8=EA=B2=8C =EB= =90=A0, =EB=AA=A8=EB=93=A0 "=EC=B0=BD=EC=9D=98=EC=A0=81=EC=9D=B8" + =EB=B3=80=EA=B2=BD=EB=93=A4=EC=9D=84 =EB=A7=8C=EB=93=A4=EC=96=B4=EB= =82=BC =EA=B6=8C=ED=95=9C=EC=9D=84 =EA=B0=96=EA=B2=8C =EB=90=A9=EB=8B=88= =EB=8B=A4. + + (*) =EA=B0=9C=EB=B3=84=EC=A0=81=EC=9D=B8 =EB=A1=9C=EB=93=9C=EC=99=80 = =EC=8A=A4=ED=86=A0=EC=96=B4=EB=93=A4=EC=9D=B4 =EC=A3=BC=EC=96=B4=EC=A7=84= =EC=88=9C=EC=84=9C=EB=8C=80=EB=A1=9C =EC=9A=94=EC=B2=AD=EB=90=A0 =EA=B2= =83=EC=9D=B4=EB=9D=BC=EB=8A=94 =EA=B0=80=EC=A0=95=EC=9D=80 _=EC=A0=88=EB= =8C=80=EB=A1=9C_ + =ED=95=98=EC=A7=80 =EB=A7=90=EC=95=84=EC=95=BC =ED=95=A9=EB=8B=88= =EB=8B=A4. =EC=9D=B4 =EB=A7=90=EC=9D=80 =EA=B3=A7: + + X =3D *A; Y =3D *B; *D =3D Z; + + =EB=8A=94 =EB=8B=A4=EC=9D=8C=EC=9D=98 =EA=B2=83=EB=93=A4 =EC=A4=91= =EC=96=B4=EB=8A=90 =EA=B2=83=EC=9C=BC=EB=A1=9C=EB=93=A0 =EB=A7=8C=EB=93= =A4=EC=96=B4=EC=A7=88 =EC=88=98 =EC=9E=88=EB=8B=A4=EB=8A=94 =EC=9D=98=EB= =AF=B8=EC=9E=85=EB=8B=88=EB=8B=A4: + + X =3D LOAD *A, Y =3D LOAD *B, STORE *D =3D Z + X =3D LOAD *A, STORE *D =3D Z, Y =3D LOAD *B + Y =3D LOAD *B, X =3D LOAD *A, STORE *D =3D Z + Y =3D LOAD *B, STORE *D =3D Z, X =3D LOAD *A + STORE *D =3D Z, X =3D LOAD *A, Y =3D LOAD *B + STORE *D =3D Z, Y =3D LOAD *B, X =3D LOAD *A + + (*) =EA=B2=B9=EC=B9=98=EB=8A=94 =EB=A9=94=EB=AA=A8=EB=A6=AC =EC=95=A1= =EC=84=B8=EC=8A=A4=EB=93=A4=EC=9D=80 =ED=95=A9=EC=B3=90=EC=A7=80=EA=B1=B0= =EB=82=98 =EB=B2=84=EB=A0=A4=EC=A7=88 =EC=88=98 =EC=9E=88=EC=9D=8C=EC=9D= =84 _=EB=B0=98=EB=93=9C=EC=8B=9C_ =EA=B0=80=EC=A0=95=ED=95=B4=EC=95=BC + =ED=95=A9=EB=8B=88=EB=8B=A4. =EB=8B=A4=EC=9D=8C=EC=9D=98 =EC=BD=94= =EB=93=9C=EB=8A=94: + + X =3D *A; Y =3D *(A + 4); + + =EB=8B=A4=EC=9D=8C=EC=9D=98 =EA=B2=83=EB=93=A4 =EC=A4=91 =EB=AD=90= =EB=93=A0 =EB=90=A0 =EC=88=98 =EC=9E=88=EC=8A=B5=EB=8B=88=EB=8B=A4: + + X =3D LOAD *A; Y =3D LOAD *(A + 4); + Y =3D LOAD *(A + 4); X =3D LOAD *A; + {X, Y} =3D LOAD {*A, *(A + 4) }; + + =EA=B7=B8=EB=A6=AC=EA=B3=A0: + + *A =3D X; *(A + 4) =3D Y; + + =EB=8A=94 =EB=8B=A4=EC=9D=8C =EC=A4=91 =EB=AD=90=EB=93=A0 =EB=90=A0= =EC=88=98 =EC=9E=88=EC=8A=B5=EB=8B=88=EB=8B=A4: + + STORE *A =3D X; STORE *(A + 4) =3D Y; + STORE *(A + 4) =3D Y; STORE *A =3D X; + STORE {*A, *(A + 4) } =3D {X, Y}; + +=EA=B7=B8=EB=A6=AC=EA=B3=A0 =EB=B3=B4=EC=9E=A5=EC=82=AC=ED=95=AD=EC=97= =90 =EB=B0=98=EB=8C=80=EB=90=98=EB=8A=94 =EA=B2=83=EB=93=A4(anti-guaran= tees)=EC=9D=B4 =EC=9E=88=EC=8A=B5=EB=8B=88=EB=8B=A4: + + (*) =EC=9D=B4 =EB=B3=B4=EC=9E=A5=EC=82=AC=ED=95=AD=EB=93=A4=EC=9D=80 = bitfield =EC=97=90=EB=8A=94 =EC=A0=81=EC=9A=A9=EB=90=98=EC=A7=80 =EC=95= =8A=EB=8A=94=EB=8D=B0, =EC=BB=B4=ED=8C=8C=EC=9D=BC=EB=9F=AC=EB=93=A4=EC= =9D=80 bitfield =EB=A5=BC + =EC=88=98=EC=A0=95=ED=95=98=EB=8A=94 =EC=BD=94=EB=93=9C=EB=A5=BC = =EC=83=9D=EC=84=B1=ED=95=A0 =EB=95=8C =EC=9B=90=EC=9E=90=EC=84=B1 =EC=97= =86=EB=8A=94(non-atomic) =EC=9D=BD=EA=B3=A0-=EC=88=98=EC=A0=95=ED=95=98= =EA=B3=A0-=EC=93=B0=EB=8A=94 + =EC=9D=B8=EC=8A=A4=ED=8A=B8=EB=9F=AD=EC=85=98=EB=93=A4=EC=9D=98 =EC= =A1=B0=ED=95=A9=EC=9D=84 =EB=A7=8C=EB=93=9C=EB=8A=94 =EA=B2=BD=EC=9A=B0= =EA=B0=80 =EB=A7=8E=EA=B8=B0 =EB=95=8C=EB=AC=B8=EC=9E=85=EB=8B=88=EB=8B= =A4. =EB=B3=91=EB=A0=AC =EC=95=8C=EA=B3=A0=EB=A6=AC=EC=A6=98=EC=9D=98 + =EB=8F=99=EA=B8=B0=ED=99=94=EC=97=90 bitfield =EB=A5=BC =EC=82=AC= =EC=9A=A9=ED=95=98=EB=A0=A4 =ED=95=98=EC=A7=80 =EB=A7=88=EC=8B=AD=EC=8B= =9C=EC=98=A4. + + (*) bitfield =EB=93=A4=EC=9D=B4 =EC=97=AC=EB=9F=AC =EB=9D=BD=EC=9C=BC= =EB=A1=9C =EB=B3=B4=ED=98=B8=EB=90=98=EB=8A=94 =EA=B2=BD=EC=9A=B0=EB=9D= =BC =ED=95=98=EB=8D=94=EB=9D=BC=EB=8F=84, =ED=95=98=EB=82=98=EC=9D=98 b= itfield =EC=9D=98 + =EB=AA=A8=EB=93=A0 =ED=95=84=EB=93=9C=EB=93=A4=EC=9D=80 =ED=95=98= =EB=82=98=EC=9D=98 =EB=9D=BD=EC=9C=BC=EB=A1=9C =EB=B3=B4=ED=98=B8=EB=90= =98=EC=96=B4=EC=95=BC =ED=95=A9=EB=8B=88=EB=8B=A4. =EB=A7=8C=EC=95=BD = =ED=95=9C bitfield =EC=9D=98 =EB=91=90 + =ED=95=84=EB=93=9C=EA=B0=80 =EC=84=9C=EB=A1=9C =EB=8B=A4=EB=A5=B8= =EB=9D=BD=EC=9C=BC=EB=A1=9C =EB=B3=B4=ED=98=B8=EB=90=9C=EB=8B=A4=EB=A9= =B4, =EC=BB=B4=ED=8C=8C=EC=9D=BC=EB=9F=AC=EC=9D=98 =EC=9B=90=EC=9E=90=EC= =84=B1 =EC=97=86=EB=8A=94 + =EC=9D=BD=EA=B3=A0-=EC=88=98=EC=A0=95=ED=95=98=EA=B3=A0-=EC=93=B0= =EB=8A=94 =EC=9D=B8=EC=8A=A4=ED=8A=B8=EB=9F=AD=EC=85=98 =EC=A1=B0=ED=95= =A9=EC=9D=80 =ED=95=9C =ED=95=84=EB=93=9C=EC=97=90=EC=9D=98 =EC=97=85=EB= =8D=B0=EC=9D=B4=ED=8A=B8=EA=B0=80 =EA=B7=BC=EC=B2=98=EC=9D=98 + =ED=95=84=EB=93=9C=EC=97=90=EB=8F=84 =EC=98=81=ED=96=A5=EC=9D=84 = =EB=81=BC=EC=B9=98=EA=B2=8C =ED=95=A0 =EC=88=98 =EC=9E=88=EC=8A=B5=EB=8B= =88=EB=8B=A4. + + (*) =EC=9D=B4 =EB=B3=B4=EC=9E=A5=EC=82=AC=ED=95=AD=EB=93=A4=EC=9D=80 = =EC=A0=81=EC=A0=88=ED=95=98=EA=B2=8C =EC=A0=95=EB=A0=AC=EB=90=98=EA=B3=A0= =ED=81=AC=EA=B8=B0=EA=B0=80 =EC=9E=A1=ED=9E=8C =EC=8A=A4=EC=B9=BC=EB=9D= =BC =EB=B3=80=EC=88=98=EB=93=A4=EC=97=90 =EB=8C=80=ED=95=B4=EC=84=9C=EB= =A7=8C + =EC=A0=81=EC=9A=A9=EB=90=A9=EB=8B=88=EB=8B=A4. "=EC=A0=81=EC=A0=88= =ED=95=98=EA=B2=8C =ED=81=AC=EA=B8=B0=EA=B0=80 =EC=9E=A1=ED=9E=8C" =EC=9D= =B4=EB=9D=BC=ED=95=A8=EC=9D=80 =ED=98=84=EC=9E=AC=EB=A1=9C=EC=8D=A8=EB=8A= =94 "char", "short", + "int" =EA=B7=B8=EB=A6=AC=EA=B3=A0 "long" =EA=B3=BC =EA=B0=99=EC=9D= =80 =ED=81=AC=EA=B8=B0=EC=9D=98 =EB=B3=80=EC=88=98=EB=93=A4=EC=9D=84 =EC= =9D=98=EB=AF=B8=ED=95=A9=EB=8B=88=EB=8B=A4. "=EC=A0=81=EC=A0=88=ED=95=98= =EA=B2=8C =EC=A0=95=EB=A0=AC=EB=90=9C" + =EC=9D=80 =EC=9E=90=EC=97=B0=EC=8A=A4=EB=9F=B0 =EC=A0=95=EB=A0=AC= =EC=9D=84 =EC=9D=98=EB=AF=B8=ED=95=98=EB=8A=94=EB=8D=B0, =EB=94=B0=EB=9D= =BC=EC=84=9C "char" =EC=97=90 =EB=8C=80=ED=95=B4=EC=84=9C=EB=8A=94 =EC=95= =84=EB=AC=B4 =EC=A0=9C=EC=95=BD=EC=9D=B4 =EC=97=86=EA=B3=A0, + "short" =EC=97=90 =EB=8C=80=ED=95=B4=EC=84=9C=EB=8A=94 2=EB=B0=94= =EC=9D=B4=ED=8A=B8 =EC=A0=95=EB=A0=AC=EC=9D=84, "int" =EC=97=90=EB=8A=94= 4=EB=B0=94=EC=9D=B4=ED=8A=B8 =EC=A0=95=EB=A0=AC=EC=9D=84, =EA=B7=B8=EB= =A6=AC=EA=B3=A0 + "long" =EC=97=90 =EB=8C=80=ED=95=B4=EC=84=9C=EB=8A=94 32-bit =EC=8B= =9C=EC=8A=A4=ED=85=9C=EC=9D=B8=EC=A7=80 64-bit =EC=8B=9C=EC=8A=A4=ED=85= =9C=EC=9D=B8=EC=A7=80=EC=97=90 =EB=94=B0=EB=9D=BC 4=EB=B0=94=EC=9D=B4=ED= =8A=B8 =EB=98=90=EB=8A=94 + 8=EB=B0=94=EC=9D=B4=ED=8A=B8 =EC=A0=95=EB=A0=AC=EC=9D=84 =EC=9D=98= =EB=AF=B8=ED=95=A9=EB=8B=88=EB=8B=A4. =EC=9D=B4 =EB=B3=B4=EC=9E=A5=EC=82= =AC=ED=95=AD=EB=93=A4=EC=9D=80 C11 =ED=91=9C=EC=A4=80=EC=97=90=EC=84=9C= =EC=86=8C=EA=B0=9C=EB=90=98=EC=97=88=EC=9C=BC=EB=AF=80=EB=A1=9C, + C11 =EC=A0=84=EC=9D=98 =EC=98=A4=EB=9E=98=EB=90=9C =EC=BB=B4=ED=8C= =8C=EC=9D=BC=EB=9F=AC(=EC=98=88=EB=A5=BC =EB=93=A4=EC=96=B4, gcc 4.6) =EB= =A5=BC =EC=82=AC=EC=9A=A9=ED=95=A0 =EB=95=8C=EC=97=94 =EC=A3=BC=EC=9D=98= =ED=95=98=EC=8B=9C=EA=B8=B0 + =EB=B0=94=EB=9E=8D=EB=8B=88=EB=8B=A4. =ED=91=9C=EC=A4=80=EC=97=90= =EC=9D=B4 =EB=B3=B4=EC=9E=A5=EC=82=AC=ED=95=AD=EB=93=A4=EC=9D=80 "memo= ry location" =EC=9D=84 =EC=A0=95=EC=9D=98=ED=95=98=EB=8A=94 3.14 + =EC=84=B9=EC=85=98=EC=97=90 =EB=8B=A4=EC=9D=8C=EA=B3=BC =EA=B0=99= =EC=9D=B4 =EC=84=A4=EB=AA=85=EB=90=98=EC=96=B4 =EC=9E=88=EC=8A=B5=EB=8B= =88=EB=8B=A4: + (=EC=97=AD=EC=9E=90: =EC=9D=B8=EC=9A=A9=EB=AC=B8=EC=9D=B4=EB=AF=80= =EB=A1=9C =EB=B2=88=EC=97=AD=ED=95=98=EC=A7=80 =EC=95=8A=EC=8A=B5=EB=8B= =88=EB=8B=A4) + + memory location + either an object of scalar type, or a maximal sequence + of adjacent bit-fields all having nonzero width + + NOTE 1: Two threads of execution can update and access + separate memory locations without interfering with + each other. + + NOTE 2: A bit-field and an adjacent non-bit-field member + are in separate memory locations. The same applies + to two bit-fields, if one is declared inside a nested + structure declaration and the other is not, or if the two + are separated by a zero-length bit-field declaration, + or if they are separated by a non-bit-field member + declaration. It is not safe to concurrently update two + bit-fields in the same structure if all members declared + between them are also bit-fields, no matter what the + sizes of those intervening bit-fields happen to be. + + +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D +=EB=A9=94=EB=AA=A8=EB=A6=AC =EB=B0=B0=EB=A6=AC=EC=96=B4=EB=9E=80 =EB=AC= =B4=EC=97=87=EC=9D=B8=EA=B0=80? +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D + +=EC=95=9E=EC=97=90=EC=84=9C =EB=B4=A4=EB=93=AF=EC=9D=B4, =EC=83=81=ED=98= =B8=EA=B0=84 =EC=9D=98=EC=A1=B4=EC=84=B1=EC=9D=B4 =EC=97=86=EB=8A=94 =EB= =A9=94=EB=AA=A8=EB=A6=AC =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85=98=EB= =93=A4=EC=9D=80 =EC=8B=A4=EC=A0=9C=EB=A1=9C=EB=8A=94 =EB=AC=B4=EC=9E=91= =EC=9C=84=EC=A0=81 +=EC=88=9C=EC=84=9C=EB=A1=9C =EC=88=98=ED=96=89=EB=90=A0 =EC=88=98 =EC=9E= =88=EC=9C=BC=EB=A9=B0, =EC=9D=B4=EB=8A=94 CPU =EC=99=80 CPU =EA=B0=84=EC= =9D=98 =EC=83=81=ED=98=B8=EC=9E=91=EC=9A=A9=EC=9D=B4=EB=82=98 I/O =EC=97= =90 =EB=AC=B8=EC=A0=9C=EA=B0=80 =EB=90=A0 =EC=88=98 +=EC=9E=88=EC=8A=B5=EB=8B=88=EB=8B=A4. =EB=94=B0=EB=9D=BC=EC=84=9C =EC= =BB=B4=ED=8C=8C=EC=9D=BC=EB=9F=AC=EC=99=80 CPU =EA=B0=80 =EC=88=9C=EC=84= =9C=EB=A5=BC =EB=B0=94=EA=BE=B8=EB=8A=94=EB=8D=B0 =EC=A0=9C=EC=95=BD=EC= =9D=84 =EA=B1=B8 =EC=88=98 =EC=9E=88=EB=8F=84=EB=A1=9D =EA=B0=9C=EC=9E=85= =ED=95=A0 +=EC=88=98 =EC=9E=88=EB=8A=94 =EC=96=B4=EB=96=A4 =EB=B0=A9=EB=B2=95=EC=9D= =B4 =ED=95=84=EC=9A=94=ED=95=A9=EB=8B=88=EB=8B=A4. + +=EB=A9=94=EB=AA=A8=EB=A6=AC =EB=B0=B0=EB=A6=AC=EC=96=B4=EB=8A=94 =EA=B7= =B8=EB=9F=B0 =EA=B0=9C=EC=9E=85 =EC=88=98=EB=8B=A8=EC=9E=85=EB=8B=88=EB= =8B=A4. =EB=A9=94=EB=AA=A8=EB=A6=AC =EB=B0=B0=EB=A6=AC=EC=96=B4=EB=8A=94= =EB=B0=B0=EB=A6=AC=EC=96=B4=EB=A5=BC =EC=82=AC=EC=9D=B4=EC=97=90 =EB=91= =94 =EC=95=9E=EA=B3=BC +=EB=92=A4 =EC=96=91=EC=B8=A1=EC=9D=98 =EB=A9=94=EB=AA=A8=EB=A6=AC =EC=98= =A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85=98=EB=93=A4 =EA=B0=84=EC=97=90 =EB= =B6=80=EB=B6=84=EC=A0=81 =EC=88=9C=EC=84=9C=EA=B0=80 =EC=A1=B4=EC=9E=AC= =ED=95=98=EB=8F=84=EB=A1=9D =ED=95=98=EB=8A=94 =ED=9A=A8=EA=B3=BC=EB=A5= =BC =EC=A4=8D=EB=8B=88=EB=8B=A4. + +=EC=8B=9C=EC=8A=A4=ED=85=9C=EC=9D=98 CPU =EB=93=A4=EA=B3=BC =EC=97=AC=EB= =9F=AC =EB=94=94=EB=B0=94=EC=9D=B4=EC=8A=A4=EB=93=A4=EC=9D=80 =EC=84=B1= =EB=8A=A5=EC=9D=84 =EC=98=AC=EB=A6=AC=EA=B8=B0 =EC=9C=84=ED=95=B4 =EB=AA= =85=EB=A0=B9=EC=96=B4 =EC=9E=AC=EB=B0=B0=EC=B9=98, =EC=8B=A4=ED=96=89 +=EC=9C=A0=EC=98=88, =EB=A9=94=EB=AA=A8=EB=A6=AC =EC=98=A4=ED=8D=BC=EB=A0= =88=EC=9D=B4=EC=85=98=EB=93=A4=EC=9D=98 =EC=A1=B0=ED=95=A9, =EC=98=88=EC= =B8=A1=EC=A0=81 =EB=A1=9C=EB=93=9C(speculative load), =EB=B8=8C=EB=9E=9C= =EC=B9=98 +=EC=98=88=EC=B8=A1(speculative branch prediction), =EB=8B=A4=EC=96=91=ED= =95=9C =EC=A2=85=EB=A5=98=EC=9D=98 =EC=BA=90=EC=8B=B1(caching) =EB=93=B1= =EC=9D=98 =EB=8B=A4=EC=96=91=ED=95=9C +=ED=8A=B8=EB=A6=AD=EC=9D=84 =EC=82=AC=EC=9A=A9=ED=95=A0 =EC=88=98 =EC=9E= =88=EA=B8=B0 =EB=95=8C=EB=AC=B8=EC=97=90 =EC=9D=B4=EB=9F=B0 =EA=B0=95=EC= =A0=9C=EB=A0=A5=EC=9D=80 =EC=A4=91=EC=9A=94=ED=95=A9=EB=8B=88=EB=8B=A4.= =EB=A9=94=EB=AA=A8=EB=A6=AC =EB=B0=B0=EB=A6=AC=EC=96=B4=EB=93=A4=EC=9D= =80 =EC=9D=B4=EB=9F=B0 +=ED=8A=B8=EB=A6=AD=EB=93=A4=EC=9D=84 =EB=AC=B4=ED=9A=A8=EB=A1=9C =ED=95= =98=EA=B1=B0=EB=82=98 =EC=96=B5=EC=A0=9C=ED=95=98=EB=8A=94 =EB=AA=A9=EC= =A0=81=EC=9C=BC=EB=A1=9C =EC=82=AC=EC=9A=A9=EB=90=98=EC=96=B4=EC=A0=B8=EC= =84=9C =EC=BD=94=EB=93=9C=EA=B0=80 =EC=97=AC=EB=9F=AC CPU =EC=99=80 +=EB=94=94=EB=B0=94=EC=9D=B4=EC=8A=A4=EB=93=A4 =EA=B0=84=EC=9D=98 =EC=83= =81=ED=98=B8=EC=9E=91=EC=9A=A9=EC=9D=84 =EC=A0=95=EC=83=81=EC=A0=81=EC=9C= =BC=EB=A1=9C =EC=A0=9C=EC=96=B4=ED=95=A0 =EC=88=98 =EC=9E=88=EA=B2=8C =ED= =95=B4=EC=A4=8D=EB=8B=88=EB=8B=A4. + + +=EB=A9=94=EB=AA=A8=EB=A6=AC =EB=B0=B0=EB=A6=AC=EC=96=B4=EC=9D=98 =EC=A2= =85=EB=A5=98 +-------------------- + +=EB=A9=94=EB=AA=A8=EB=A6=AC =EB=B0=B0=EB=A6=AC=EC=96=B4=EB=8A=94 =EB=84= =A4=EA=B0=9C=EC=9D=98 =EA=B8=B0=EB=B3=B8 =ED=83=80=EC=9E=85=EC=9C=BC=EB= =A1=9C =EB=B6=84=EB=A5=98=EB=90=A9=EB=8B=88=EB=8B=A4: + + (1) =EC=93=B0=EA=B8=B0 (=EB=98=90=EB=8A=94 =EC=8A=A4=ED=86=A0=EC=96=B4= ) =EB=A9=94=EB=AA=A8=EB=A6=AC =EB=B0=B0=EB=A6=AC=EC=96=B4. + + =EC=93=B0=EA=B8=B0 =EB=A9=94=EB=AA=A8=EB=A6=AC =EB=B0=B0=EB=A6=AC= =EC=96=B4=EB=8A=94 =EC=8B=9C=EC=8A=A4=ED=85=9C=EC=9D=98 =EB=8B=A4=EB=A5= =B8 =EC=BB=B4=ED=8F=AC=EB=84=8C=ED=8A=B8=EB=93=A4=EC=97=90 =ED=95=B4=EB= =8B=B9 =EB=B0=B0=EB=A6=AC=EC=96=B4=EB=B3=B4=EB=8B=A4 =EC=95=9E=EC=84=9C + =EB=AA=85=EC=8B=9C=EB=90=9C =EB=AA=A8=EB=93=A0 STORE =EC=98=A4=ED= =8D=BC=EB=A0=88=EC=9D=B4=EC=85=98=EB=93=A4=EC=9D=B4 =ED=95=B4=EB=8B=B9 = =EB=B0=B0=EB=A6=AC=EC=96=B4 =EB=92=A4=EC=97=90 =EB=AA=85=EC=8B=9C=EB=90= =9C =EB=AA=A8=EB=93=A0 STORE + =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85=98=EB=93=A4=EB=B3=B4=EB= =8B=A4 =EB=A8=BC=EC=A0=80 =EC=88=98=ED=96=89=EB=90=9C =EA=B2=83=EC=9C=BC= =EB=A1=9C =EB=B3=B4=EC=9D=BC =EA=B2=83=EC=9D=84 =EB=B3=B4=EC=9E=A5=ED=95= =A9=EB=8B=88=EB=8B=A4. + + =EC=93=B0=EA=B8=B0 =EB=B0=B0=EB=A6=AC=EC=96=B4=EB=8A=94 =EC=8A=A4= =ED=86=A0=EC=96=B4 =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85=98=EB=93=A4= =EC=97=90 =EB=8C=80=ED=95=9C =EB=B6=80=EB=B6=84=EC=A0=81 =EC=88=9C=EC=84= =9C =EC=84=B8=EC=9A=B0=EA=B8=B0=EC=9E=85=EB=8B=88=EB=8B=A4; =EB=A1=9C=EB= =93=9C + =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85=98=EB=93=A4=EC=97=90 =EB= =8C=80=ED=95=B4=EC=84=9C=EB=8A=94 =EC=96=B4=EB=96=A4 =EC=98=81=ED=96=A5= =EB=8F=84 =EB=81=BC=EC=B9=98=EC=A7=80 =EC=95=8A=EC=8A=B5=EB=8B=88=EB=8B= =A4. + + CPU =EB=8A=94 =EC=8B=9C=EA=B0=84=EC=9D=98 =ED=9D=90=EB=A6=84=EC=97= =90 =EB=94=B0=EB=9D=BC =EB=A9=94=EB=AA=A8=EB=A6=AC =EC=8B=9C=EC=8A=A4=ED= =85=9C=EC=97=90 =EC=9D=BC=EB=A0=A8=EC=9D=98 =EC=8A=A4=ED=86=A0=EC=96=B4= =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85=98=EB=93=A4=EC=9D=84 + =ED=95=98=EB=82=98=EC=94=A9 =EC=9A=94=EC=B2=AD=ED=95=B4 =EC=A7=91= =EC=96=B4=EB=84=A3=EC=8A=B5=EB=8B=88=EB=8B=A4. =EC=93=B0=EA=B8=B0 =EB=B0= =B0=EB=A6=AC=EC=96=B4 =EC=95=9E=EC=9D=98 =EB=AA=A8=EB=93=A0 =EC=8A=A4=ED= =86=A0=EC=96=B4 =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85=98=EB=93=A4=EC= =9D=80 + =EC=93=B0=EA=B8=B0 =EB=B0=B0=EB=A6=AC=EC=96=B4 =EB=92=A4=EC=9D=98= =EB=AA=A8=EB=93=A0 =EC=8A=A4=ED=86=A0=EC=96=B4 =EC=98=A4=ED=8D=BC=EB=A0= =88=EC=9D=B4=EC=85=98=EB=93=A4=EB=B3=B4=EB=8B=A4 _=EC=95=9E=EC=84=9C_ =EC= =88=98=ED=96=89=EB=90=A0 =EA=B2=81=EB=8B=88=EB=8B=A4. + + [!] =EC=93=B0=EA=B8=B0 =EB=B0=B0=EB=A6=AC=EC=96=B4=EB=93=A4=EC=9D= =80 =EC=9D=BD=EA=B8=B0 =EB=98=90=EB=8A=94 =EB=8D=B0=EC=9D=B4=ED=84=B0 =EC= =9D=98=EC=A1=B4=EC=84=B1 =EB=B0=B0=EB=A6=AC=EC=96=B4=EC=99=80 =ED=95=A8= =EA=BB=98 =EC=A7=9D=EC=9D=84 =EB=A7=9E=EC=B6=B0 + =EC=82=AC=EC=9A=A9=EB=90=98=EC=96=B4=EC=95=BC=EB=A7=8C =ED=95=A8=EC= =9D=84 =EC=95=8C=EC=95=84=EB=91=90=EC=84=B8=EC=9A=94; "SMP =EB=B0=B0=EB= =A6=AC=EC=96=B4 =EC=A7=9D=EB=A7=9E=EC=B6=94=EA=B8=B0" =EC=84=9C=EB=B8=8C= =EC=84=B9=EC=85=98=EC=9D=84 =EC=B0=B8=EA=B3=A0=ED=95=98=EC=84=B8=EC=9A=94= =2E + + + (2) =EB=8D=B0=EC=9D=B4=ED=84=B0 =EC=9D=98=EC=A1=B4=EC=84=B1 =EB=B0=B0= =EB=A6=AC=EC=96=B4. + + =EB=8D=B0=EC=9D=B4=ED=84=B0 =EC=9D=98=EC=A1=B4=EC=84=B1 =EB=B0=B0= =EB=A6=AC=EC=96=B4=EB=8A=94 =EC=9D=BD=EA=B8=B0 =EB=B0=B0=EB=A6=AC=EC=96= =B4=EC=9D=98 =EB=B3=B4=EB=8B=A4 =EC=99=84=ED=99=94=EB=90=9C =ED=98=95=ED= =83=9C=EC=9E=85=EB=8B=88=EB=8B=A4. =EB=91=90=EA=B0=9C=EC=9D=98 =EB=A1=9C= =EB=93=9C + =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85=98=EC=9D=B4 =EC=9E=88=EA= =B3=A0 =EB=91=90=EB=B2=88=EC=A7=B8 =EA=B2=83=EC=9D=B4 =EC=B2=AB=EB=B2=88= =EC=A7=B8 =EA=B2=83=EC=9D=98 =EA=B2=B0=EA=B3=BC=EC=97=90 =EC=9D=98=EC=A1= =B4=ED=95=98=EA=B3=A0 =EC=9E=88=EC=9D=84 =EB=95=8C(=EC=98=88: + =EB=91=90=EB=B2=88=EC=A7=B8 =EB=A1=9C=EB=93=9C=EA=B0=80 =EC=B0=B8= =EC=A1=B0=ED=95=A0 =EC=A3=BC=EC=86=8C=EB=A5=BC =EC=B2=AB=EB=B2=88=EC=A7= =B8 =EB=A1=9C=EB=93=9C=EA=B0=80 =EC=9D=BD=EB=8A=94 =EA=B2=BD=EC=9A=B0),= =EB=91=90=EB=B2=88=EC=A7=B8 =EB=A1=9C=EB=93=9C=EA=B0=80 =EC=9D=BD=EC=96= =B4=EC=98=AC + =EB=8D=B0=EC=9D=B4=ED=84=B0=EB=8A=94 =EC=B2=AB=EB=B2=88=EC=A7=B8 = =EB=A1=9C=EB=93=9C=EC=97=90 =EC=9D=98=ED=95=B4 =EA=B7=B8 =EC=A3=BC=EC=86= =8C=EA=B0=80 =EC=96=BB=EC=96=B4=EC=A7=80=EA=B8=B0 =EC=A0=84=EC=97=90 =EC= =97=85=EB=8D=B0=EC=9D=B4=ED=8A=B8 =EB=90=98=EC=96=B4 =EC=9E=88=EC=9D=8C= =EC=9D=84 + =EB=B3=B4=EC=9E=A5=ED=95=98=EA=B8=B0 =EC=9C=84=ED=95=B4=EC=84=9C = =EB=8D=B0=EC=9D=B4=ED=84=B0 =EC=9D=98=EC=A1=B4=EC=84=B1 =EB=B0=B0=EB=A6= =AC=EC=96=B4=EA=B0=80 =ED=95=84=EC=9A=94=ED=95=A0 =EC=88=98 =EC=9E=88=EC= =8A=B5=EB=8B=88=EB=8B=A4. + + =EB=8D=B0=EC=9D=B4=ED=84=B0 =EC=9D=98=EC=A1=B4=EC=84=B1 =EB=B0=B0= =EB=A6=AC=EC=96=B4=EB=8A=94 =EC=83=81=ED=98=B8 =EC=9D=98=EC=A1=B4=EC=A0= =81=EC=9D=B8 =EB=A1=9C=EB=93=9C =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC= =85=98=EB=93=A4 =EC=82=AC=EC=9D=B4=EC=9D=98 =EB=B6=80=EB=B6=84=EC=A0=81= =EC=88=9C=EC=84=9C + =EC=84=B8=EC=9A=B0=EA=B8=B0=EC=9E=85=EB=8B=88=EB=8B=A4; =EC=8A=A4= =ED=86=A0=EC=96=B4 =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85=98=EB=93=A4= =EC=9D=B4=EB=82=98 =EB=8F=85=EB=A6=BD=EC=A0=81=EC=9D=B8 =EB=A1=9C=EB=93= =9C=EB=93=A4, =EB=98=90=EB=8A=94 =EC=A4=91=EB=B3=B5=EB=90=98=EB=8A=94 + =EB=A1=9C=EB=93=9C=EB=93=A4=EC=97=90 =EB=8C=80=ED=95=B4=EC=84=9C=EB= =8A=94 =EC=96=B4=EB=96=A4 =EC=98=81=ED=96=A5=EB=8F=84 =EB=81=BC=EC=B9=98= =EC=A7=80 =EC=95=8A=EC=8A=B5=EB=8B=88=EB=8B=A4. + + (1) =EC=97=90=EC=84=9C =EC=96=B8=EA=B8=89=ED=96=88=EB=93=AF=EC=9D= =B4, =EC=8B=9C=EC=8A=A4=ED=85=9C=EC=9D=98 CPU =EB=93=A4=EC=9D=80 =EB=A9= =94=EB=AA=A8=EB=A6=AC =EC=8B=9C=EC=8A=A4=ED=85=9C=EC=97=90 =EC=9D=BC=EB= =A0=A8=EC=9D=98 =EC=8A=A4=ED=86=A0=EC=96=B4 + =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85=98=EB=93=A4=EC=9D=84 =EB= =8D=98=EC=A0=B8 =EB=84=A3=EA=B3=A0 =EC=9E=88=EC=9C=BC=EB=A9=B0, =EA=B1=B0= =EA=B8=B0=EC=97=90 =EA=B4=80=EC=8B=AC=EC=9D=B4 =EC=9E=88=EB=8A=94 =EB=8B= =A4=EB=A5=B8 CPU =EB=8A=94 =EA=B7=B8 + =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85=98=EB=93=A4=EC=9D=84 =EB= =A9=94=EB=AA=A8=EB=A6=AC =EC=8B=9C=EC=8A=A4=ED=85=9C=EC=9D=B4 =EC=8B=A4= =ED=96=89=ED=95=9C =EA=B2=B0=EA=B3=BC=EB=A5=BC =EC=9D=B8=EC=A7=80=ED=95= =A0 =EC=88=98 =EC=9E=88=EC=8A=B5=EB=8B=88=EB=8B=A4. =EC=9D=B4=EC=B2=98= =EB=9F=BC + =EB=8B=A4=EB=A5=B8 CPU =EC=9D=98 =EC=8A=A4=ED=86=A0=EC=96=B4 =EC=98= =A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85=98=EC=9D=98 =EA=B2=B0=EA=B3=BC=EC=97= =90 =EA=B4=80=EC=8B=AC=EC=9D=84 =EB=91=90=EA=B3=A0 =EC=9E=88=EB=8A=94 C= PU =EA=B0=80 =EC=88=98=ED=96=89 =EC=9A=94=EC=B2=AD=ED=95=9C + =EB=8D=B0=EC=9D=B4=ED=84=B0 =EC=9D=98=EC=A1=B4=EC=84=B1 =EB=B0=B0= =EB=A6=AC=EC=96=B4=EB=8A=94, =EB=B0=B0=EB=A6=AC=EC=96=B4 =EC=95=9E=EC=9D= =98 =EC=96=B4=EB=96=A4 =EB=A1=9C=EB=93=9C =EC=98=A4=ED=8D=BC=EB=A0=88=EC= =9D=B4=EC=85=98=EC=9D=B4 =EB=8B=A4=EB=A5=B8 CPU =EC=97=90=EC=84=9C + =EB=8D=98=EC=A0=B8 =EB=84=A3=EC=9D=80 =EC=8A=A4=ED=86=A0=EC=96=B4= =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85=98=EA=B3=BC =EA=B0=99=EC=9D= =80 =EC=98=81=EC=97=AD=EC=9D=84 =ED=96=A5=ED=96=88=EB=8B=A4=EB=A9=B4, =EA= =B7=B8=EB=9F=B0 =EC=8A=A4=ED=86=A0=EC=96=B4 + =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85=98=EB=93=A4=EC=9D=B4 =EB= =A7=8C=EB=93=A4=EC=96=B4=EB=82=B4=EB=8A=94 =EA=B2=B0=EA=B3=BC=EA=B0=80 = =EB=8D=B0=EC=9D=B4=ED=84=B0 =EC=9D=98=EC=A1=B4=EC=84=B1 =EB=B0=B0=EB=A6= =AC=EC=96=B4 =EB=92=A4=EC=9D=98 =EB=A1=9C=EB=93=9C + =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85=98=EB=93=A4=EC=97=90=EA= =B2=8C=EB=8A=94 =EB=B3=B4=EC=9D=BC =EA=B2=83=EC=9D=84 =EB=B3=B4=EC=9E=A5= =ED=95=A9=EB=8B=88=EB=8B=A4. + + =EC=9D=B4 =EC=88=9C=EC=84=9C =EC=84=B8=EC=9A=B0=EA=B8=B0 =EC=A0=9C= =EC=95=BD=EC=97=90 =EB=8C=80=ED=95=9C =EA=B7=B8=EB=A6=BC=EC=9D=84 =EB=B3= =B4=EA=B8=B0 =EC=9C=84=ED=95=B4=EC=84=A0 "=EB=A9=94=EB=AA=A8=EB=A6=AC =EB= =B0=B0=EB=A6=AC=EC=96=B4 =EC=8B=9C=ED=80=80=EC=8A=A4=EC=9D=98 =EC=98=88= " + =EC=84=9C=EB=B8=8C=EC=84=B9=EC=85=98=EC=9D=84 =EC=B0=B8=EA=B3=A0=ED= =95=98=EC=8B=9C=EA=B8=B0 =EB=B0=94=EB=9E=8D=EB=8B=88=EB=8B=A4. + + [!] =EC=B2=AB=EB=B2=88=EC=A7=B8 =EB=A1=9C=EB=93=9C=EB=8A=94 =EB=B0= =98=EB=93=9C=EC=8B=9C _=EB=8D=B0=EC=9D=B4=ED=84=B0_ =EC=9D=98=EC=A1=B4=EC= =84=B1=EC=9D=84 =EA=B0=80=EC=A0=B8=EC=95=BC=EC=A7=80 =EC=BB=A8=ED=8A=B8= =EB=A1=A4 =EC=9D=98=EC=A1=B4=EC=84=B1=EC=9D=84 =EA=B0=80=EC=A0=B8=EC=95= =BC + =ED=95=98=EB=8A=94=EA=B2=8C =EC=95=84=EB=8B=98=EC=9D=84 =EC=95=8C= =EC=95=84=EB=91=90=EC=8B=AD=EC=8B=9C=EC=98=A4. =EB=A7=8C=EC=95=BD =EB=91= =90=EB=B2=88=EC=A7=B8 =EB=A1=9C=EB=93=9C=EB=A5=BC =EC=9C=84=ED=95=9C =EC= =A3=BC=EC=86=8C=EA=B0=80 =EC=B2=AB=EB=B2=88=EC=A7=B8 =EB=A1=9C=EB=93=9C= =EC=97=90 + =EC=9D=98=EC=A1=B4=EC=A0=81=EC=9D=B4=EC=A7=80=EB=A7=8C =EA=B7=B8 = =EC=9D=98=EC=A1=B4=EC=84=B1=EC=9D=80 =EC=A1=B0=EA=B1=B4=EC=A0=81=EC=9D=B4= =EC=A7=80 =EA=B7=B8 =EC=A3=BC=EC=86=8C =EC=9E=90=EC=B2=B4=EB=A5=BC =EA=B0= =80=EC=A0=B8=EC=98=A4=EB=8A=94=EA=B2=8C =EC=95=84=EB=8B=88=EB=9D=BC=EB=A9= =B4, + =EA=B7=B8=EA=B2=83=EC=9D=80 _=EC=BB=A8=ED=8A=B8=EB=A1=A4_ =EC=9D=98= =EC=A1=B4=EC=84=B1=EC=9D=B4=EA=B3=A0, =EC=9D=B4 =EA=B2=BD=EC=9A=B0=EC=97= =90=EB=8A=94 =EC=9D=BD=EA=B8=B0 =EB=B0=B0=EB=A6=AC=EC=96=B4=EB=82=98 =EA= =B7=B8=EB=B3=B4=EB=8B=A4 =EA=B0=95=EB=A0=A5=ED=95=9C + =EB=AC=B4=EC=96=B8=EA=B0=80=EA=B0=80 =ED=95=84=EC=9A=94=ED=95=A9=EB= =8B=88=EB=8B=A4. =EB=8D=94 =EC=9E=90=EC=84=B8=ED=95=9C =EB=82=B4=EC=9A= =A9=EC=9D=84 =EC=9C=84=ED=95=B4=EC=84=9C=EB=8A=94 "=EC=BB=A8=ED=8A=B8=EB= =A1=A4 =EC=9D=98=EC=A1=B4=EC=84=B1" =EC=84=9C=EB=B8=8C=EC=84=B9=EC=85=98= =EC=9D=84 + =EC=B0=B8=EA=B3=A0=ED=95=98=EC=8B=9C=EA=B8=B0 =EB=B0=94=EB=9E=8D=EB= =8B=88=EB=8B=A4. + + [!] =EB=8D=B0=EC=9D=B4=ED=84=B0 =EC=9D=98=EC=A1=B4=EC=84=B1 =EB=B0= =B0=EB=A6=AC=EC=96=B4=EB=8A=94 =EB=B3=B4=ED=86=B5 =EC=93=B0=EA=B8=B0 =EB= =B0=B0=EB=A6=AC=EC=96=B4=EB=93=A4=EA=B3=BC =ED=95=A8=EA=BB=98 =EC=A7=9D= =EC=9D=84 =EB=A7=9E=EC=B6=B0 =EC=82=AC=EC=9A=A9=EB=90=98=EC=96=B4=EC=95= =BC + =ED=95=A9=EB=8B=88=EB=8B=A4; "SMP =EB=B0=B0=EB=A6=AC=EC=96=B4 =EC= =A7=9D=EB=A7=9E=EC=B6=94=EA=B8=B0" =EC=84=9C=EB=B8=8C=EC=84=B9=EC=85=98= =EC=9D=84 =EC=B0=B8=EA=B3=A0=ED=95=98=EC=84=B8=EC=9A=94. + + + (3) =EC=9D=BD=EA=B8=B0 (=EB=98=90=EB=8A=94 =EB=A1=9C=EB=93=9C) =EB=A9= =94=EB=AA=A8=EB=A6=AC =EB=B0=B0=EB=A6=AC=EC=96=B4. + + =EC=9D=BD=EA=B8=B0 =EB=B0=B0=EB=A6=AC=EC=96=B4=EB=8A=94 =EB=8D=B0= =EC=9D=B4=ED=84=B0 =EC=9D=98=EC=A1=B4=EC=84=B1 =EB=B0=B0=EB=A6=AC=EC=96= =B4 =EA=B8=B0=EB=8A=A5=EC=9D=98 =EB=B3=B4=EC=9E=A5=EC=82=AC=ED=95=AD=EC= =97=90 =EB=8D=94=ED=95=B4=EC=84=9C =EB=B0=B0=EB=A6=AC=EC=96=B4=EB=B3=B4= =EB=8B=A4 + =EC=95=9E=EC=84=9C =EB=AA=85=EC=8B=9C=EB=90=9C =EB=AA=A8=EB=93=A0= LOAD =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85=98=EB=93=A4=EC=9D=B4 =EB= =B0=B0=EB=A6=AC=EC=96=B4 =EB=92=A4=EC=97=90 =EB=AA=85=EC=8B=9C=EB=90=98= =EB=8A=94 =EB=AA=A8=EB=93=A0 LOAD + =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85=98=EB=93=A4=EB=B3=B4=EB= =8B=A4 =EB=A8=BC=EC=A0=80 =ED=96=89=ED=95=B4=EC=A7=84 =EA=B2=83=EC=9C=BC= =EB=A1=9C =EC=8B=9C=EC=8A=A4=ED=85=9C=EC=9D=98 =EB=8B=A4=EB=A5=B8 =EC=BB= =B4=ED=8F=AC=EB=84=8C=ED=8A=B8=EB=93=A4=EC=97=90 =EB=B3=B4=EC=97=AC=EC=A7= =88 =EA=B2=83=EC=9D=84 + =EB=B3=B4=EC=9E=A5=ED=95=A9=EB=8B=88=EB=8B=A4. + + =EC=9D=BD=EA=B8=B0 =EB=B0=B0=EB=A6=AC=EC=96=B4=EB=8A=94 =EB=A1=9C= =EB=93=9C =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85=98=EC=97=90 =ED=96= =89=ED=95=B4=EC=A7=80=EB=8A=94 =EB=B6=80=EB=B6=84=EC=A0=81 =EC=88=9C=EC= =84=9C =EC=84=B8=EC=9A=B0=EA=B8=B0=EC=9E=85=EB=8B=88=EB=8B=A4; =EC=8A=A4= =ED=86=A0=EC=96=B4 + =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85=98=EC=97=90 =EB=8C=80=ED= =95=B4=EC=84=9C=EB=8A=94 =EC=96=B4=EB=96=A4 =EC=98=81=ED=96=A5=EB=8F=84= =EB=81=BC=EC=B9=98=EC=A7=80 =EC=95=8A=EC=8A=B5=EB=8B=88=EB=8B=A4. + + =EC=9D=BD=EA=B8=B0 =EB=A9=94=EB=AA=A8=EB=A6=AC =EB=B0=B0=EB=A6=AC= =EC=96=B4=EB=8A=94 =EB=8D=B0=EC=9D=B4=ED=84=B0 =EC=9D=98=EC=A1=B4=EC=84= =B1 =EB=B0=B0=EB=A6=AC=EC=96=B4=EB=A5=BC =EB=82=B4=EC=9E=A5=ED=95=98=EB= =AF=80=EB=A1=9C =EB=8D=B0=EC=9D=B4=ED=84=B0 =EC=9D=98=EC=A1=B4=EC=84=B1 + =EB=B0=B0=EB=A6=AC=EC=96=B4=EB=A5=BC =EB=8C=80=EC=8B=A0=ED=95=A0 = =EC=88=98 =EC=9E=88=EC=8A=B5=EB=8B=88=EB=8B=A4. + + [!] =EC=9D=BD=EA=B8=B0 =EB=B0=B0=EB=A6=AC=EC=96=B4=EB=8A=94 =EC=9D= =BC=EB=B0=98=EC=A0=81=EC=9C=BC=EB=A1=9C =EC=93=B0=EA=B8=B0 =EB=B0=B0=EB= =A6=AC=EC=96=B4=EB=93=A4=EA=B3=BC =ED=95=A8=EA=BB=98 =EC=A7=9D=EC=9D=84= =EB=A7=9E=EC=B6=B0 =EC=82=AC=EC=9A=A9=EB=90=98=EC=96=B4=EC=95=BC + =ED=95=A9=EB=8B=88=EB=8B=A4; "SMP =EB=B0=B0=EB=A6=AC=EC=96=B4 =EC= =A7=9D=EB=A7=9E=EC=B6=94=EA=B8=B0" =EC=84=9C=EB=B8=8C=EC=84=B9=EC=85=98= =EC=9D=84 =EC=B0=B8=EA=B3=A0=ED=95=98=EC=84=B8=EC=9A=94. + + + (4) =EB=B2=94=EC=9A=A9 =EB=A9=94=EB=AA=A8=EB=A6=AC =EB=B0=B0=EB=A6=AC= =EC=96=B4. + + =EB=B2=94=EC=9A=A9(general) =EB=A9=94=EB=AA=A8=EB=A6=AC =EB=B0=B0= =EB=A6=AC=EC=96=B4=EB=8A=94 =EB=B0=B0=EB=A6=AC=EC=96=B4=EB=B3=B4=EB=8B=A4= =EC=95=9E=EC=84=9C =EB=AA=85=EC=8B=9C=EB=90=9C =EB=AA=A8=EB=93=A0 LOAD= =EC=99=80 STORE + =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85=98=EB=93=A4=EC=9D=B4 =EB= =B0=B0=EB=A6=AC=EC=96=B4 =EB=92=A4=EC=97=90 =EB=AA=85=EC=8B=9C=EB=90=9C= =EB=AA=A8=EB=93=A0 LOAD =EC=99=80 STORE =EC=98=A4=ED=8D=BC=EB=A0=88=EC= =9D=B4=EC=85=98=EB=93=A4=EB=B3=B4=EB=8B=A4 + =EB=A8=BC=EC=A0=80 =EC=88=98=ED=96=89=EB=90=9C =EA=B2=83=EC=9C=BC= =EB=A1=9C =EC=8B=9C=EC=8A=A4=ED=85=9C=EC=9D=98 =EB=82=98=EB=A8=B8=EC=A7= =80 =EC=BB=B4=ED=8F=AC=EB=84=8C=ED=8A=B8=EB=93=A4=EC=97=90 =EB=B3=B4=EC= =9D=B4=EA=B2=8C =EB=90=A8=EC=9D=84 =EB=B3=B4=EC=9E=A5=ED=95=A9=EB=8B=88= =EB=8B=A4. + + =EB=B2=94=EC=9A=A9 =EB=A9=94=EB=AA=A8=EB=A6=AC =EB=B0=B0=EB=A6=AC= =EC=96=B4=EB=8A=94 =EB=A1=9C=EB=93=9C=EC=99=80 =EC=8A=A4=ED=86=A0=EC=96= =B4 =EB=AA=A8=EB=91=90=EC=97=90 =EB=8C=80=ED=95=9C =EB=B6=80=EB=B6=84=EC= =A0=81 =EC=88=9C=EC=84=9C =EC=84=B8=EC=9A=B0=EA=B8=B0=EC=9E=85=EB=8B=88= =EB=8B=A4. + + =EB=B2=94=EC=9A=A9 =EB=A9=94=EB=AA=A8=EB=A6=AC =EB=B0=B0=EB=A6=AC= =EC=96=B4=EB=8A=94 =EC=9D=BD=EA=B8=B0 =EB=A9=94=EB=AA=A8=EB=A6=AC =EB=B0= =B0=EB=A6=AC=EC=96=B4, =EC=93=B0=EA=B8=B0 =EB=A9=94=EB=AA=A8=EB=A6=AC =EB= =B0=B0=EB=A6=AC=EC=96=B4 =EB=AA=A8=EB=91=90=EB=A5=BC + =EB=82=B4=EC=9E=A5=ED=95=98=EB=AF=80=EB=A1=9C, =EB=91=90 =EB=B0=B0= =EB=A6=AC=EC=96=B4=EB=A5=BC =EB=AA=A8=EB=91=90 =EB=8C=80=EC=8B=A0=ED=95= =A0 =EC=88=98 =EC=9E=88=EC=8A=B5=EB=8B=88=EB=8B=A4. + + +=EA=B7=B8=EB=A6=AC=EA=B3=A0 =EB=91=90=EA=B0=9C=EC=9D=98 =EB=AA=85=EC=8B= =9C=EC=A0=81=EC=9D=B4=EC=A7=80 =EC=95=8A=EC=9D=80 =ED=83=80=EC=9E=85=EC= =9D=B4 =EC=9E=88=EC=8A=B5=EB=8B=88=EB=8B=A4: + + (5) ACQUIRE =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85=98. + + =EC=9D=B4 =ED=83=80=EC=9E=85=EC=9D=98 =EC=98=A4=ED=8D=BC=EB=A0=88= =EC=9D=B4=EC=85=98=EC=9D=80 =EB=8B=A8=EB=B0=A9=ED=96=A5=EC=9D=98 =ED=88= =AC=EA=B3=BC=EC=84=B1 =EB=B0=B0=EB=A6=AC=EC=96=B4=EC=B2=98=EB=9F=BC =EB= =8F=99=EC=9E=91=ED=95=A9=EB=8B=88=EB=8B=A4. ACQUIRE + =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85=98 =EB=92=A4=EC=9D=98 = =EB=AA=A8=EB=93=A0 =EB=A9=94=EB=AA=A8=EB=A6=AC =EC=98=A4=ED=8D=BC=EB=A0= =88=EC=9D=B4=EC=85=98=EB=93=A4=EC=9D=B4 ACQUIRE =EC=98=A4=ED=8D=BC=EB=A0= =88=EC=9D=B4=EC=85=98 =ED=9B=84=EC=97=90 + =EC=9D=BC=EC=96=B4=EB=82=9C =EA=B2=83=EC=9C=BC=EB=A1=9C =EC=8B=9C= =EC=8A=A4=ED=85=9C=EC=9D=98 =EB=82=98=EB=A8=B8=EC=A7=80 =EC=BB=B4=ED=8F= =AC=EB=84=8C=ED=8A=B8=EB=93=A4=EC=97=90 =EB=B3=B4=EC=9D=B4=EA=B2=8C =EB= =90=A0 =EA=B2=83=EC=9D=B4 =EB=B3=B4=EC=9E=A5=EB=90=A9=EB=8B=88=EB=8B=A4= =2E + LOCK =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85=98=EA=B3=BC smp_l= oad_acquire(), smp_cond_acquire() =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC= =85=98=EB=8F=84 + ACQUIRE =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85=98=EC=97=90 =ED= =8F=AC=ED=95=A8=EB=90=A9=EB=8B=88=EB=8B=A4. smp_cond_acquire() =EC=98=A4= =ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85=98=EC=9D=80 =EC=BB=A8=ED=8A=B8=EB=A1=A4 + =EC=9D=98=EC=A1=B4=EC=84=B1=EA=B3=BC smp_rmb() =EB=A5=BC =EC=82=AC= =EC=9A=A9=ED=95=B4=EC=84=9C ACQUIRE =EC=9D=98 =EC=9D=98=EB=AF=B8=EC=A0=81= =EC=9A=94=EA=B5=AC=EC=82=AC=ED=95=AD(semantic)=EC=9D=84 + =EC=B6=A9=EC=A1=B1=EC=8B=9C=ED=82=B5=EB=8B=88=EB=8B=A4. + + ACQUIRE =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85=98 =EC=95=9E=EC= =9D=98 =EB=A9=94=EB=AA=A8=EB=A6=AC =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4= =EC=85=98=EB=93=A4=EC=9D=80 ACQUIRE =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4= =EC=85=98 =EC=99=84=EB=A3=8C =ED=9B=84=EC=97=90 + =EC=88=98=ED=96=89=EB=90=9C =EA=B2=83=EC=B2=98=EB=9F=BC =EB=B3=B4= =EC=9D=BC =EC=88=98 =EC=9E=88=EC=8A=B5=EB=8B=88=EB=8B=A4. + + ACQUIRE =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85=98=EC=9D=80 =EA= =B1=B0=EC=9D=98 =ED=95=AD=EC=83=81 RELEASE =EC=98=A4=ED=8D=BC=EB=A0=88=EC= =9D=B4=EC=85=98=EA=B3=BC =EC=A7=9D=EC=9D=84 =EC=A7=80=EC=96=B4 =EC=82=AC= =EC=9A=A9=EB=90=98=EC=96=B4=EC=95=BC + =ED=95=A9=EB=8B=88=EB=8B=A4. + + + (6) RELEASE =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85=98. + + =EC=9D=B4 =ED=83=80=EC=9E=85=EC=9D=98 =EC=98=A4=ED=8D=BC=EB=A0=88= =EC=9D=B4=EC=85=98=EB=93=A4=EB=8F=84 =EB=8B=A8=EB=B0=A9=ED=96=A5 =ED=88= =AC=EA=B3=BC=EC=84=B1 =EB=B0=B0=EB=A6=AC=EC=96=B4=EC=B2=98=EB=9F=BC =EB= =8F=99=EC=9E=91=ED=95=A9=EB=8B=88=EB=8B=A4. RELEASE + =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85=98 =EC=95=9E=EC=9D=98 = =EB=AA=A8=EB=93=A0 =EB=A9=94=EB=AA=A8=EB=A6=AC =EC=98=A4=ED=8D=BC=EB=A0= =88=EC=9D=B4=EC=85=98=EB=93=A4=EC=9D=80 RELEASE =EC=98=A4=ED=8D=BC=EB=A0= =88=EC=9D=B4=EC=85=98 =EC=A0=84=EC=97=90 =EC=99=84=EB=A3=8C=EB=90=9C + =EA=B2=83=EC=9C=BC=EB=A1=9C =EC=8B=9C=EC=8A=A4=ED=85=9C=EC=9D=98 = =EB=8B=A4=EB=A5=B8 =EC=BB=B4=ED=8F=AC=EB=84=8C=ED=8A=B8=EB=93=A4=EC=97=90= =EB=B3=B4=EC=97=AC=EC=A7=88 =EA=B2=83=EC=9D=B4 =EB=B3=B4=EC=9E=A5=EB=90= =A9=EB=8B=88=EB=8B=A4. UNLOCK =EB=A5=98=EC=9D=98 + =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85=98=EB=93=A4=EA=B3=BC s= mp_store_release() =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85=98=EB=8F=84= RELEASE =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85=98=EC=9D=98 + =EC=9D=BC=EC=A2=85=EC=9E=85=EB=8B=88=EB=8B=A4. + + RELEASE =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85=98 =EB=92=A4=EC= =9D=98 =EB=A9=94=EB=AA=A8=EB=A6=AC =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4= =EC=85=98=EB=93=A4=EC=9D=80 RELEASE =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4= =EC=85=98=EC=9D=B4 + =EC=99=84=EB=A3=8C=EB=90=98=EA=B8=B0 =EC=A0=84=EC=97=90 =ED=96=89= =ED=95=B4=EC=A7=84 =EA=B2=83=EC=B2=98=EB=9F=BC =EB=B3=B4=EC=9D=BC =EC=88= =98 =EC=9E=88=EC=8A=B5=EB=8B=88=EB=8B=A4. + + ACQUIRE =EC=99=80 RELEASE =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC= =85=98=EC=9D=98 =EC=82=AC=EC=9A=A9=EC=9D=80 =EC=9D=BC=EB=B0=98=EC=A0=81= =EC=9C=BC=EB=A1=9C =EB=8B=A4=EB=A5=B8 =EB=A9=94=EB=AA=A8=EB=A6=AC =EB=B0= =B0=EB=A6=AC=EC=96=B4=EC=9D=98 + =ED=95=84=EC=9A=94=EC=84=B1=EC=9D=84 =EC=97=86=EC=95=B1=EB=8B=88=EB= =8B=A4 (=ED=95=98=EC=A7=80=EB=A7=8C "MMIO =EC=93=B0=EA=B8=B0 =EB=B0=B0=EB= =A6=AC=EC=96=B4" =EC=84=9C=EB=B8=8C=EC=84=B9=EC=85=98=EC=97=90=EC=84=9C= =EC=84=A4=EB=AA=85=EB=90=98=EB=8A=94 =EC=98=88=EC=99=B8=EB=A5=BC + =EC=95=8C=EC=95=84=EB=91=90=EC=84=B8=EC=9A=94). =EB=98=90=ED=95=9C= , RELEASE+ACQUIRE =EC=A1=B0=ED=95=A9=EC=9D=80 =EB=B2=94=EC=9A=A9 =EB=A9= =94=EB=AA=A8=EB=A6=AC =EB=B0=B0=EB=A6=AC=EC=96=B4=EC=B2=98=EB=9F=BC =EB= =8F=99=EC=9E=91=ED=95=A0 + =EA=B2=83=EC=9D=84 =EB=B3=B4=EC=9E=A5=ED=95=98=EC=A7=80 -=EC=95=8A= =EC=8A=B5=EB=8B=88=EB=8B=A4-. =ED=95=98=EC=A7=80=EB=A7=8C, =EC=96=B4=EB= =96=A4 =EB=B3=80=EC=88=98=EC=97=90 =EB=8C=80=ED=95=9C RELEASE =EC=98=A4= =ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85=98=EC=9D=84 + =EC=95=9E=EC=84=9C=EB=8A=94 =EB=A9=94=EB=AA=A8=EB=A6=AC =EC=95=A1= =EC=84=B8=EC=8A=A4=EB=93=A4=EC=9D=98 =EC=88=98=ED=96=89 =EA=B2=B0=EA=B3= =BC=EB=8A=94 =EC=9D=B4 RELEASE =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85= =98=EC=9D=84 =EB=92=A4=EC=9D=B4=EC=96=B4 =EA=B0=99=EC=9D=80 + =EB=B3=80=EC=88=98=EC=97=90 =EB=8C=80=ED=95=B4 =EC=88=98=ED=96=89= =EB=90=9C ACQUIRE =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85=98=EC=9D=84= =EB=92=A4=EB=94=B0=EB=A5=B4=EB=8A=94 =EB=A9=94=EB=AA=A8=EB=A6=AC =EC=95= =A1=EC=84=B8=EC=8A=A4=EC=97=90=EB=8A=94 =EB=B3=B4=EC=97=AC=EC=A7=88 + =EA=B2=83=EC=9D=B4 =EB=B3=B4=EC=9E=A5=EB=90=A9=EB=8B=88=EB=8B=A4.= =EB=8B=A4=EB=A5=B4=EA=B2=8C =EB=A7=90=ED=95=98=EC=9E=90=EB=A9=B4, =EC= =A3=BC=EC=96=B4=EC=A7=84 =EB=B3=80=EC=88=98=EC=9D=98 =ED=81=AC=EB=A6=AC= =ED=8B=B0=EC=BB=AC =EC=84=B9=EC=85=98=EC=97=90=EC=84=9C=EB=8A=94, =ED=95= =B4=EB=8B=B9 + =EB=B3=80=EC=88=98=EC=97=90 =EB=8C=80=ED=95=9C =EC=95=9E=EC=9D=98= =ED=81=AC=EB=A6=AC=ED=8B=B0=EC=BB=AC =EC=84=B9=EC=85=98=EC=97=90=EC=84= =9C=EC=9D=98 =EB=AA=A8=EB=93=A0 =EC=95=A1=EC=84=B8=EC=8A=A4=EB=93=A4=EC= =9D=B4 =EC=99=84=EB=A3=8C=EB=90=98=EC=97=88=EC=9D=84 =EA=B2=83=EC=9D=84 + =EB=B3=B4=EC=9E=A5=ED=95=A9=EB=8B=88=EB=8B=A4. + + =EC=A6=89, ACQUIRE =EB=8A=94 =EC=B5=9C=EC=86=8C=ED=95=9C=EC=9D=98= "=EC=B7=A8=EB=93=9D" =EB=8F=99=EC=9E=91=EC=B2=98=EB=9F=BC, =EA=B7=B8=EB= =A6=AC=EA=B3=A0 RELEASE =EB=8A=94 =EC=B5=9C=EC=86=8C=ED=95=9C=EC=9D=98 = "=EA=B3=B5=EA=B0=9C" + =EC=B2=98=EB=9F=BC =EB=8F=99=EC=9E=91=ED=95=9C=EB=8B=A4=EB=8A=94 = =EC=9D=98=EB=AF=B8=EC=9E=85=EB=8B=88=EB=8B=A4. + +atomic_ops.txt =EC=97=90=EC=84=9C =EC=84=A4=EB=AA=85=EB=90=98=EB=8A=94= =EC=96=B4=ED=86=A0=EB=AF=B9 =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85= =98=EB=93=A4 =EC=A4=91=EC=97=90=EB=8A=94 =EC=99=84=EC=A0=84=ED=9E=88 =EC= =88=9C=EC=84=9C=EC=9E=A1=ED=9E=8C =EA=B2=83=EB=93=A4=EA=B3=BC +(=EB=B0=B0=EB=A6=AC=EC=96=B4=EB=A5=BC =EC=82=AC=EC=9A=A9=ED=95=98=EC=A7= =80 =EC=95=8A=EB=8A=94) =EC=99=84=ED=99=94=EB=90=9C =EC=88=9C=EC=84=9C=EC= =9D=98 =EA=B2=83=EB=93=A4 =EC=99=B8=EC=97=90 ACQUIRE =EC=99=80 RELEASE = =EB=B6=80=EB=A5=98=EC=9D=98 +=EA=B2=83=EB=93=A4=EB=8F=84 =EC=A1=B4=EC=9E=AC=ED=95=A9=EB=8B=88=EB=8B= =A4. =EB=A1=9C=EB=93=9C=EC=99=80 =EC=8A=A4=ED=86=A0=EC=96=B4=EB=A5=BC = =EB=AA=A8=EB=91=90 =EC=88=98=ED=96=89=ED=95=98=EB=8A=94 =EC=A1=B0=ED=95= =A9=EB=90=9C =EC=96=B4=ED=86=A0=EB=AF=B9 =EC=98=A4=ED=8D=BC=EB=A0=88=EC= =9D=B4=EC=85=98=EC=97=90=EC=84=9C, +ACQUIRE =EB=8A=94 =ED=95=B4=EB=8B=B9 =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D= =B4=EC=85=98=EC=9D=98 =EB=A1=9C=EB=93=9C =EB=B6=80=EB=B6=84=EC=97=90=EB= =A7=8C =EC=A0=81=EC=9A=A9=EB=90=98=EA=B3=A0 RELEASE =EB=8A=94 =ED=95=B4= =EB=8B=B9 +=EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85=98=EC=9D=98 =EC=8A=A4=ED=86= =A0=EC=96=B4 =EB=B6=80=EB=B6=84=EC=97=90=EB=A7=8C =EC=A0=81=EC=9A=A9=EB= =90=A9=EB=8B=88=EB=8B=A4. + +=EB=A9=94=EB=AA=A8=EB=A6=AC =EB=B0=B0=EB=A6=AC=EC=96=B4=EB=93=A4=EC=9D= =80 =EB=91=90 CPU =EA=B0=84, =EB=98=90=EB=8A=94 CPU =EC=99=80 =EB=94=94= =EB=B0=94=EC=9D=B4=EC=8A=A4 =EA=B0=84=EC=97=90 =EC=83=81=ED=98=B8=EC=9E= =91=EC=9A=A9=EC=9D=98 =EA=B0=80=EB=8A=A5=EC=84=B1=EC=9D=B4 =EC=9E=88=EC= =9D=84 +=EB=95=8C=EC=97=90=EB=A7=8C =ED=95=84=EC=9A=94=ED=95=A9=EB=8B=88=EB=8B= =A4. =EB=A7=8C=EC=95=BD =EC=96=B4=EB=96=A4 =EC=BD=94=EB=93=9C=EC=97=90= =EA=B7=B8=EB=9F=B0 =EC=83=81=ED=98=B8=EC=9E=91=EC=9A=A9=EC=9D=B4 =EC=97= =86=EC=9D=84 =EA=B2=83=EC=9D=B4 =EB=B3=B4=EC=9E=A5=EB=90=9C=EB=8B=A4=EB= =A9=B4, =ED=95=B4=EB=8B=B9 +=EC=BD=94=EB=93=9C=EC=97=90=EC=84=9C=EB=8A=94 =EB=A9=94=EB=AA=A8=EB=A6= =AC =EB=B0=B0=EB=A6=AC=EC=96=B4=EB=A5=BC =EC=82=AC=EC=9A=A9=ED=95=A0 =ED= =95=84=EC=9A=94=EA=B0=80 =EC=97=86=EC=8A=B5=EB=8B=88=EB=8B=A4. + + +=EC=9D=B4=EA=B2=83=EB=93=A4=EC=9D=80 _=EC=B5=9C=EC=86=8C=ED=95=9C=EC=9D= =98_ =EB=B3=B4=EC=9E=A5=EC=82=AC=ED=95=AD=EB=93=A4=EC=9E=84=EC=9D=84 =EC= =95=8C=EC=95=84=EB=91=90=EC=84=B8=EC=9A=94. =EB=8B=A4=EB=A5=B8 =EC=95=84= =ED=82=A4=ED=85=8D=EC=B3=90=EC=97=90=EC=84=9C=EB=8A=94 =EB=8D=94 =EA=B0= =95=EB=A0=A5=ED=95=9C +=EB=B3=B4=EC=9E=A5=EC=82=AC=ED=95=AD=EC=9D=84 =EC=A0=9C=EA=B3=B5=ED=95= =A0 =EC=88=98=EB=8F=84 =EC=9E=88=EC=8A=B5=EB=8B=88=EB=8B=A4=EB=A7=8C, =EA= =B7=B8=EB=9F=B0 =EB=B3=B4=EC=9E=A5=EC=82=AC=ED=95=AD=EC=9D=80 =EC=95=84= =ED=82=A4=ED=85=8D=EC=B3=90 =EC=A2=85=EC=86=8D=EC=A0=81 =EC=BD=94=EB=93= =9C =EC=9D=B4=EC=99=B8=EC=9D=98 +=EB=B6=80=EB=B6=84=EC=97=90=EC=84=9C=EB=8A=94 =EC=8B=A0=EB=A2=B0=EB=90= =98=EC=A7=80 _=EC=95=8A=EC=9D=84_ =EA=B2=81=EB=8B=88=EB=8B=A4. + + +=EB=A9=94=EB=AA=A8=EB=A6=AC =EB=B0=B0=EB=A6=AC=EC=96=B4=EC=97=90 =EB=8C= =80=ED=95=B4 =EA=B0=80=EC=A0=95=ED=95=B4=EC=84=A0 =EC=95=88=EB=90=A0 =EA= =B2=83 +------------------------------------- + +=EB=A6=AC=EB=88=85=EC=8A=A4 =EC=BB=A4=EB=84=90 =EB=A9=94=EB=AA=A8=EB=A6= =AC =EB=B0=B0=EB=A6=AC=EC=96=B4=EB=93=A4=EC=9D=B4 =EB=B3=B4=EC=9E=A5=ED= =95=98=EC=A7=80 =EC=95=8A=EB=8A=94 =EA=B2=83=EB=93=A4=EC=9D=B4 =EC=9E=88= =EC=8A=B5=EB=8B=88=EB=8B=A4: + + (*) =EB=A9=94=EB=AA=A8=EB=A6=AC =EB=B0=B0=EB=A6=AC=EC=96=B4 =EC=95=9E= =EC=97=90=EC=84=9C =EB=AA=85=EC=8B=9C=EB=90=9C =EC=96=B4=EB=96=A4 =EB=A9= =94=EB=AA=A8=EB=A6=AC =EC=95=A1=EC=84=B8=EC=8A=A4=EB=8F=84 =EB=A9=94=EB= =AA=A8=EB=A6=AC =EB=B0=B0=EB=A6=AC=EC=96=B4 =EB=AA=85=EB=A0=B9=EC=9D=98= =EC=88=98=ED=96=89 + =EC=99=84=EB=A3=8C =EC=8B=9C=EC=A0=90=EA=B9=8C=EC=A7=80 _=EC=99=84= =EB=A3=8C_ =EB=90=A0 =EA=B2=83=EC=9D=B4=EB=9E=80 =EB=B3=B4=EC=9E=A5=EC=9D= =80 =EC=97=86=EC=8A=B5=EB=8B=88=EB=8B=A4; =EB=B0=B0=EB=A6=AC=EC=96=B4=EA= =B0=80 =ED=95=98=EB=8A=94 =EC=9D=BC=EC=9D=80 CPU =EC=9D=98 + =EC=95=A1=EC=84=B8=EC=8A=A4 =ED=81=90=EC=97=90 =ED=8A=B9=EC=A0=95= =ED=83=80=EC=9E=85=EC=9D=98 =EC=95=A1=EC=84=B8=EC=8A=A4=EB=93=A4=EC=9D= =80 =EB=84=98=EC=9D=84 =EC=88=98 =EC=97=86=EB=8A=94 =EC=84=A0=EC=9D=84 = =EA=B8=8B=EB=8A=94 =EA=B2=83=EC=9C=BC=EB=A1=9C =EC=83=9D=EA=B0=81=EB=90= =A0 =EC=88=98 + =EC=9E=88=EC=8A=B5=EB=8B=88=EB=8B=A4. + + (*) =ED=95=9C CPU =EC=97=90=EC=84=9C =EB=A9=94=EB=AA=A8=EB=A6=AC =EB=B0= =B0=EB=A6=AC=EC=96=B4=EB=A5=BC =EC=88=98=ED=96=89=ED=95=98=EB=8A=94=EA=B2= =8C =EC=8B=9C=EC=8A=A4=ED=85=9C=EC=9D=98 =EB=8B=A4=EB=A5=B8 CPU =EB=82=98= =ED=95=98=EB=93=9C=EC=9B=A8=EC=96=B4=EC=97=90 + =EC=96=B4=EB=96=A4 =EC=A7=81=EC=A0=91=EC=A0=81=EC=9D=B8 =EC=98=81= =ED=96=A5=EC=9D=84 =EB=81=BC=EC=B9=9C=EB=8B=A4=EB=8A=94 =EB=B3=B4=EC=9E= =A5=EC=9D=80 =EC=A1=B4=EC=9E=AC=ED=95=98=EC=A7=80 =EC=95=8A=EC=8A=B5=EB= =8B=88=EB=8B=A4. =EB=B0=B0=EB=A6=AC=EC=96=B4 =EC=88=98=ED=96=89=EC=9D=B4 + =EB=A7=8C=EB=93=9C=EB=8A=94 =EA=B0=84=EC=A0=91=EC=A0=81 =EC=98=81= =ED=96=A5=EC=9D=80 =EB=91=90=EB=B2=88=EC=A7=B8 CPU =EA=B0=80 =EC=B2=AB=EB= =B2=88=EC=A7=B8 CPU =EC=9D=98 =EC=95=A1=EC=84=B8=EC=8A=A4=EB=93=A4=EC=9D= =98 =EA=B2=B0=EA=B3=BC=EB=A5=BC + =EB=B0=94=EB=9D=BC=EB=B3=B4=EB=8A=94 =EC=88=9C=EC=84=9C=EA=B0=80 = =EB=90=A9=EB=8B=88=EB=8B=A4=EB=A7=8C, =EB=8B=A4=EC=9D=8C =ED=95=AD=EB=AA= =A9=EC=9D=84 =EB=B3=B4=EC=84=B8=EC=9A=94: + + (*) =EC=B2=AB=EB=B2=88=EC=A7=B8 CPU =EA=B0=80 =EB=91=90=EB=B2=88=EC=A7= =B8 CPU =EC=9D=98 =EB=A9=94=EB=AA=A8=EB=A6=AC =EC=95=A1=EC=84=B8=EC=8A=A4= =EB=93=A4=EC=9D=98 =EA=B2=B0=EA=B3=BC=EB=A5=BC =EB=B0=94=EB=9D=BC=EB=B3= =BC =EB=95=8C, _=EC=84=A4=EB=A0=B9_ + =EB=91=90=EB=B2=88=EC=A7=B8 CPU =EA=B0=80 =EB=A9=94=EB=AA=A8=EB=A6= =AC =EB=B0=B0=EB=A6=AC=EC=96=B4=EB=A5=BC =EC=82=AC=EC=9A=A9=ED=95=9C=EB= =8B=A4 =ED=95=B4=EB=8F=84, =EC=B2=AB=EB=B2=88=EC=A7=B8 CPU _=EB=98=90=ED= =95=9C_ =EA=B7=B8=EC=97=90 =EB=A7=9E=EB=8A=94 + =EB=A9=94=EB=AA=A8=EB=A6=AC =EB=B0=B0=EB=A6=AC=EC=96=B4=EB=A5=BC = =EC=82=AC=EC=9A=A9=ED=95=98=EC=A7=80 =EC=95=8A=EB=8A=94=EB=8B=A4=EB=A9=B4= ("SMP =EB=B0=B0=EB=A6=AC=EC=96=B4 =EC=A7=9D=EB=A7=9E=EC=B6=94=EA=B8=B0= " =EC=84=9C=EB=B8=8C=EC=84=B9=EC=85=98=EC=9D=84 + =EC=B0=B8=EA=B3=A0=ED=95=98=EC=84=B8=EC=9A=94) =EA=B7=B8 =EA=B2=B0= =EA=B3=BC=EA=B0=80 =EC=98=AC=EB=B0=94=EB=A5=B8 =EC=88=9C=EC=84=9C=EB=A1= =9C =EB=B3=B4=EC=97=AC=EC=A7=84=EB=8B=A4=EB=8A=94 =EB=B3=B4=EC=9E=A5=EC= =9D=80 =EC=97=86=EC=8A=B5=EB=8B=88=EB=8B=A4. + + (*) CPU =EB=B0=94=EA=B9=A5=EC=9D=98 =ED=95=98=EB=93=9C=EC=9B=A8=EC=96= =B4[*] =EA=B0=80 =EB=A9=94=EB=AA=A8=EB=A6=AC =EC=95=A1=EC=84=B8=EC=8A=A4= =EB=93=A4=EC=9D=98 =EC=88=9C=EC=84=9C=EB=A5=BC =EB=B0=94=EA=BE=B8=EC=A7= =80 =EC=95=8A=EB=8A=94=EB=8B=A4=EB=8A=94 =EB=B3=B4=EC=9E=A5=EC=9D=80 + =EC=A1=B4=EC=9E=AC=ED=95=98=EC=A7=80 =EC=95=8A=EC=8A=B5=EB=8B=88=EB= =8B=A4. CPU =EC=BA=90=EC=8B=9C =EC=9D=BC=EA=B4=80=EC=84=B1 =EB=A9=94=EC= =BB=A4=EB=8B=88=EC=A6=98=EC=9D=80 =EB=A9=94=EB=AA=A8=EB=A6=AC =EB=B0=B0= =EB=A6=AC=EC=96=B4=EC=9D=98 =EA=B0=84=EC=A0=91=EC=A0=81 + =EC=98=81=ED=96=A5=EC=9D=84 CPU =EC=82=AC=EC=9D=B4=EC=97=90 =EC=A0= =84=ED=8C=8C=ED=95=98=EA=B8=B4 =ED=95=98=EC=A7=80=EB=A7=8C, =EC=88=9C=EC= =84=9C=EB=8C=80=EB=A1=9C =EC=A0=84=ED=8C=8C=ED=95=98=EC=A7=80=EB=8A=94 = =EC=95=8A=EC=9D=84 =EC=88=98 =EC=9E=88=EC=8A=B5=EB=8B=88=EB=8B=A4. + + [*] =EB=B2=84=EC=8A=A4 =EB=A7=88=EC=8A=A4=ED=84=B0=EB=A7=81 DMA =EC=99= =80 =EC=9D=BC=EA=B4=80=EC=84=B1=EC=97=90 =EB=8C=80=ED=95=B4=EC=84=9C=EB= =8A=94 =EB=8B=A4=EC=9D=8C=EC=9D=84 =EC=B0=B8=EA=B3=A0=ED=95=98=EC=8B=9C= =EA=B8=B0 =EB=B0=94=EB=9E=8D=EB=8B=88=EB=8B=A4: + + Documentation/PCI/pci.txt + Documentation/DMA-API-HOWTO.txt + Documentation/DMA-API.txt + + +=EB=8D=B0=EC=9D=B4=ED=84=B0 =EC=9D=98=EC=A1=B4=EC=84=B1 =EB=B0=B0=EB=A6= =AC=EC=96=B4 +-------------------- + +=EB=8D=B0=EC=9D=B4=ED=84=B0 =EC=9D=98=EC=A1=B4=EC=84=B1 =EB=B0=B0=EB=A6= =AC=EC=96=B4=EC=9D=98 =EC=82=AC=EC=9A=A9=EC=97=90 =EC=9E=88=EC=96=B4 =EC= =A7=80=EC=BC=9C=EC=95=BC =ED=95=98=EB=8A=94 =EC=82=AC=ED=95=AD=EB=93=A4= =EC=9D=80 =EC=95=BD=EA=B0=84 =EB=AF=B8=EB=AC=98=ED=95=98=EA=B3=A0, =EB=8D= =B0=EC=9D=B4=ED=84=B0 +=EC=9D=98=EC=A1=B4=EC=84=B1 =EB=B0=B0=EB=A6=AC=EC=96=B4=EA=B0=80 =EC=82= =AC=EC=9A=A9=EB=90=98=EC=96=B4=EC=95=BC =ED=95=98=EB=8A=94 =EC=83=81=ED= =99=A9=EB=8F=84 =ED=95=AD=EC=83=81 =EB=AA=85=EB=B0=B1=ED=95=98=EC=A7=80= =EB=8A=94 =EC=95=8A=EC=8A=B5=EB=8B=88=EB=8B=A4. =EC=84=A4=EB=AA=85=EC=9D= =84 =EC=9C=84=ED=95=B4 +=EB=8B=A4=EC=9D=8C=EC=9D=98 =EC=9D=B4=EB=B2=A4=ED=8A=B8 =EC=8B=9C=ED=80= =80=EC=8A=A4=EB=A5=BC =EC=83=9D=EA=B0=81=ED=95=B4 =EB=B4=85=EC=8B=9C=EB= =8B=A4: + + CPU 1 CPU 2 + =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D + { A =3D=3D 1, B =3D=3D 2, C =3D=3D 3, P =3D=3D &A, Q =3D=3D &C } + B =3D 4; + <=EC=93=B0=EA=B8=B0 =EB=B0=B0=EB=A6=AC=EC=96=B4> + WRITE_ONCE(P, &B) + Q =3D READ_ONCE(P); + D =3D *Q; + +=EC=97=AC=EA=B8=B0=EC=97=94 =EB=B6=84=EB=AA=85=ED=95=9C =EB=8D=B0=EC=9D= =B4=ED=84=B0 =EC=9D=98=EC=A1=B4=EC=84=B1=EC=9D=B4 =EC=A1=B4=EC=9E=AC=ED= =95=98=EB=AF=80=EB=A1=9C, =EC=9D=B4 =EC=8B=9C=ED=80=80=EC=8A=A4=EA=B0=80= =EB=81=9D=EB=82=AC=EC=9D=84 =EB=95=8C Q =EB=8A=94 &A =EB=98=90=EB=8A=94= &B +=EC=9D=BC =EA=B2=83=EC=9D=B4=EA=B3=A0, =EB=94=B0=EB=9D=BC=EC=84=9C: + + (Q =3D=3D &A) =EB=8A=94 (D =3D=3D 1) =EB=A5=BC, + (Q =3D=3D &B) =EB=8A=94 (D =3D=3D 4) =EB=A5=BC =EC=9D=98=EB=AF=B8=ED=95= =A9=EB=8B=88=EB=8B=A4. + +=ED=95=98=EC=A7=80=EB=A7=8C! CPU 2 =EB=8A=94 B =EC=9D=98 =EC=97=85=EB= =8D=B0=EC=9D=B4=ED=8A=B8=EB=A5=BC =EC=9D=B8=EC=8B=9D=ED=95=98=EA=B8=B0 = =EC=A0=84=EC=97=90 P =EC=9D=98 =EC=97=85=EB=8D=B0=EC=9D=B4=ED=8A=B8=EB=A5= =BC =EC=9D=B8=EC=8B=9D=ED=95=A0 =EC=88=98 =EC=9E=88=EA=B3=A0, +=EB=94=B0=EB=9D=BC=EC=84=9C =EB=8B=A4=EC=9D=8C=EC=9D=98 =EA=B2=B0=EA=B3= =BC=EA=B0=80 =EA=B0=80=EB=8A=A5=ED=95=A9=EB=8B=88=EB=8B=A4: + + (Q =3D=3D &B) and (D =3D=3D 2) ???? + +=EC=9D=B4=EB=9F=B0 =EA=B2=B0=EA=B3=BC=EB=8A=94 =EC=9D=BC=EA=B4=80=EC=84= =B1=EC=9D=B4=EB=82=98 =EC=9D=B8=EA=B3=BC =EA=B4=80=EA=B3=84 =EC=9C=A0=EC= =A7=80=EA=B0=80 =EC=8B=A4=ED=8C=A8=ED=95=9C =EA=B2=83=EC=B2=98=EB=9F=BC= =EB=B3=B4=EC=9D=BC =EC=88=98=EB=8F=84 =EC=9E=88=EA=B2=A0=EC=A7=80=EB=A7= =8C, +=EA=B7=B8=EB=A0=87=EC=A7=80 =EC=95=8A=EC=8A=B5=EB=8B=88=EB=8B=A4, =EA=B7= =B8=EB=A6=AC=EA=B3=A0 =EC=9D=B4 =ED=98=84=EC=83=81=EC=9D=80 (DEC Alpha = =EC=99=80 =EA=B0=99=EC=9D=80) =EC=97=AC=EB=9F=AC CPU =EC=97=90=EC=84=9C= =EC=8B=A4=EC=A0=9C=EB=A1=9C +=EB=B0=9C=EA=B2=AC=EB=90=A0 =EC=88=98 =EC=9E=88=EC=8A=B5=EB=8B=88=EB=8B= =A4. + +=EC=9D=B4 =EB=AC=B8=EC=A0=9C =EC=83=81=ED=99=A9=EC=9D=84 =EC=A0=9C=EB=8C= =80=EB=A1=9C =ED=95=B4=EA=B2=B0=ED=95=98=EA=B8=B0 =EC=9C=84=ED=95=B4, =EB= =8D=B0=EC=9D=B4=ED=84=B0 =EC=9D=98=EC=A1=B4=EC=84=B1 =EB=B0=B0=EB=A6=AC= =EC=96=B4=EB=82=98 =EA=B7=B8=EB=B3=B4=EB=8B=A4 =EA=B0=95=ED=99=94=EB=90= =9C +=EB=AC=B4=EC=96=B8=EA=B0=80=EA=B0=80 =EC=A3=BC=EC=86=8C=EB=A5=BC =EC=9D= =BD=EC=96=B4=EC=98=AC =EB=95=8C=EC=99=80 =EB=8D=B0=EC=9D=B4=ED=84=B0=EB= =A5=BC =EC=9D=BD=EC=96=B4=EC=98=AC =EB=95=8C =EC=82=AC=EC=9D=B4=EC=97=90= =EC=B6=94=EA=B0=80=EB=90=98=EC=96=B4=EC=95=BC=EB=A7=8C =ED=95=A9=EB=8B= =88=EB=8B=A4: + + CPU 1 CPU 2 + =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D + { A =3D=3D 1, B =3D=3D 2, C =3D=3D 3, P =3D=3D &A, Q =3D=3D &C } + B =3D 4; + <=EC=93=B0=EA=B8=B0 =EB=B0=B0=EB=A6=AC=EC=96=B4> + WRITE_ONCE(P, &B); + Q =3D READ_ONCE(P); + <=EB=8D=B0=EC=9D=B4=ED=84=B0 =EC=9D=98=EC=A1=B4=EC=84=B1 =EB=B0= =B0=EB=A6=AC=EC=96=B4> + D =3D *Q; + +=EC=9D=B4 =EB=B3=80=EA=B2=BD=EC=9D=80 =EC=95=9E=EC=9D=98 =EC=B2=98=EC=9D= =8C =EB=91=90=EA=B0=80=EC=A7=80 =EA=B2=B0=EA=B3=BC =EC=A4=91 =ED=95=98=EB= =82=98=EB=A7=8C=EC=9D=B4 =EB=B0=9C=EC=83=9D=ED=95=A0 =EC=88=98 =EC=9E=88= =EA=B3=A0, =EC=84=B8=EB=B2=88=EC=A7=B8=EC=9D=98 =EA=B2=B0=EA=B3=BC=EB=8A= =94 +=EB=B0=9C=EC=83=9D=ED=95=A0 =EC=88=98 =EC=97=86=EB=8F=84=EB=A1=9D =ED=95= =A9=EB=8B=88=EB=8B=A4. + +=EB=8D=B0=EC=9D=B4=ED=84=B0 =EC=9D=98=EC=A1=B4=EC=84=B1 =EB=B0=B0=EB=A6= =AC=EC=96=B4=EB=8A=94 =EC=9D=98=EC=A1=B4=EC=A0=81 =EC=93=B0=EA=B8=B0=EC= =97=90 =EB=8C=80=ED=95=B4=EC=84=9C=EB=8F=84 =EC=88=9C=EC=84=9C=EB=A5=BC= =EC=9E=A1=EC=95=84=EC=A4=8D=EB=8B=88=EB=8B=A4: + + CPU 1 CPU 2 + =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D + { A =3D=3D 1, B =3D=3D 2, C =3D 3, P =3D=3D &A, Q =3D=3D &C } + B =3D 4; + <=EC=93=B0=EA=B8=B0 =EB=B0=B0=EB=A6=AC=EC=96=B4> + WRITE_ONCE(P, &B); + Q =3D READ_ONCE(P); + <=EB=8D=B0=EC=9D=B4=ED=84=B0 =EC=9D=98=EC=A1=B4=EC=84=B1 =EB=B0= =B0=EB=A6=AC=EC=96=B4> + *Q =3D 5; + +=EC=9D=B4 =EB=8D=B0=EC=9D=B4=ED=84=B0 =EC=9D=98=EC=A1=B4=EC=84=B1 =EB=B0= =B0=EB=A6=AC=EC=96=B4=EB=8A=94 Q =EB=A1=9C=EC=9D=98 =EC=9D=BD=EA=B8=B0=EA= =B0=80 *Q =EB=A1=9C=EC=9D=98 =EC=8A=A4=ED=86=A0=EC=96=B4=EC=99=80 =EC=88= =9C=EC=84=9C=EB=A5=BC =EB=A7=9E=EC=B6=94=EA=B2=8C +=ED=95=B4=EC=A4=8D=EB=8B=88=EB=8B=A4. =EC=9D=B4=EB=8A=94 =EB=8B=A4=EC= =9D=8C=EA=B3=BC =EA=B0=99=EC=9D=80 =EA=B2=B0=EA=B3=BC=EB=A5=BC =EB=A7=89= =EC=8A=B5=EB=8B=88=EB=8B=A4: + + (Q =3D=3D &B) && (B =3D=3D 4) + +=EC=9D=B4=EB=9F=B0 =ED=8C=A8=ED=84=B4=EC=9D=80 =EB=93=9C=EB=AC=BC=EA=B2= =8C =EC=82=AC=EC=9A=A9=EB=90=98=EC=96=B4=EC=95=BC =ED=95=A8=EC=9D=84 =EC= =95=8C=EC=95=84 =EB=91=90=EC=8B=9C=EA=B8=B0 =EB=B0=94=EB=9E=8D=EB=8B=88= =EB=8B=A4. =EB=AC=B4=EC=97=87=EB=B3=B4=EB=8B=A4=EB=8F=84, =EC=9D=98=EC= =A1=B4=EC=84=B1 +=EC=88=9C=EC=84=9C =EA=B7=9C=EC=B9=99=EC=9D=98 =EC=9D=98=EB=8F=84=EB=8A= =94 =EC=93=B0=EA=B8=B0 =EC=9E=91=EC=97=85=EC=9D=84 -=EC=98=88=EB=B0=A9-= =ED=95=B4=EC=84=9C =EA=B7=B8=EB=A1=9C =EC=9D=B8=ED=95=B4 =EB=B0=9C=EC=83= =9D=ED=95=98=EB=8A=94 =EB=B9=84=EC=8B=BC =EC=BA=90=EC=8B=9C =EB=AF=B8=EC= =8A=A4=EB=8F=84 +=EC=97=86=EC=95=A0=EB=A0=A4=EB=8A=94 =EA=B2=83=EC=9E=85=EB=8B=88=EB=8B= =A4. =EC=9D=B4 =ED=8C=A8=ED=84=B4=EC=9D=80 =EB=93=9C=EB=AC=BC=EA=B2=8C= =EB=B0=9C=EC=83=9D=ED=95=98=EB=8A=94 =EC=97=90=EB=9F=AC =EC=A1=B0=EA=B1= =B4 =EA=B0=99=EC=9D=80=EA=B2=83=EB=93=A4=EC=9D=84 =EA=B8=B0=EB=A1=9D=ED= =95=98=EB=8A=94=EB=8D=B0 +=EC=82=AC=EC=9A=A9=EB=90=A0 =EC=88=98 =EC=9E=88=EA=B3=A0, =EC=9D=B4=EB= =A0=87=EA=B2=8C =EB=B0=B0=EB=A6=AC=EC=96=B4=EB=A5=BC =EC=82=AC=EC=9A=A9= =ED=95=B4 =EC=88=9C=EC=84=9C=EB=A5=BC =EC=A7=80=ED=82=A4=EA=B2=8C =ED=95= =A8=EC=9C=BC=EB=A1=9C=EC=8D=A8 =EA=B7=B8=EB=9F=B0 =EA=B8=B0=EB=A1=9D=EC= =9D=B4 +=EC=82=AC=EB=9D=BC=EC=A7=80=EB=8A=94 =EA=B2=83=EC=9D=84 =EB=A7=89=EC=8A= =B5=EB=8B=88=EB=8B=A4. + + +[!] =EC=83=81=EB=8B=B9=ED=9E=88 =EB=B9=84=EC=A7=81=EA=B4=80=EC=A0=81=EC= =9D=B8 =EC=9D=B4 =EC=83=81=ED=99=A9=EC=9D=80 =EB=B6=84=EB=A6=AC=EB=90=9C= =EC=BA=90=EC=8B=9C=EB=A5=BC =EA=B0=80=EC=A7=84 =EA=B8=B0=EA=B3=84, =EC= =98=88=EB=A5=BC =EB=93=A4=EC=96=B4 =ED=95=9C =EC=BA=90=EC=8B=9C +=EB=B1=85=ED=81=AC=EA=B0=80 =EC=A7=9D=EC=88=98=EB=B2=88 =EC=BA=90=EC=8B= =9C =EB=9D=BC=EC=9D=B8=EC=9D=84 =EC=B2=98=EB=A6=AC=ED=95=98=EA=B3=A0 =EB= =8B=A4=EB=A5=B8 =EB=B1=85=ED=81=AC=EB=8A=94 =ED=99=80=EC=88=98=EB=B2=88= =EC=BA=90=EC=8B=9C =EB=9D=BC=EC=9D=B8=EC=9D=84 =EC=B2=98=EB=A6=AC=ED=95= =98=EB=8A=94 =EA=B8=B0=EA=B3=84 +=EB=93=B1=EC=97=90=EC=84=9C =EA=B0=80=EC=9E=A5 =EC=9E=98 =EB=B0=9C=EC=83= =9D=ED=95=A9=EB=8B=88=EB=8B=A4. =ED=8F=AC=EC=9D=B8=ED=84=B0 P =EB=8A=94= =ED=99=80=EC=88=98 =EB=B2=88=ED=98=B8=EC=9D=98 =EC=BA=90=EC=8B=9C =EB=9D= =BC=EC=9D=B8=EC=97=90 =EC=9E=88=EA=B3=A0, =EB=B3=80=EC=88=98 B =EB=8A=94 +=EC=A7=9D=EC=88=98 =EB=B2=88=ED=98=B8 =EC=BA=90=EC=8B=9C =EB=9D=BC=EC=9D= =B8=EC=97=90 =EC=9E=88=EB=8B=A4=EA=B3=A0 =EC=83=9D=EA=B0=81=ED=95=B4 =EB= =B4=85=EC=8B=9C=EB=8B=A4. =EA=B7=B8=EB=9F=B0 =EC=83=81=ED=83=9C=EC=97=90= =EC=84=9C =EC=9D=BD=EA=B8=B0 =EC=9E=91=EC=97=85=EC=9D=84 =ED=95=98=EB=8A= =94 CPU +=EC=9D=98 =EC=A7=9D=EC=88=98=EB=B2=88 =EB=B1=85=ED=81=AC=EB=8A=94 =ED=95= =A0 =EC=9D=BC=EC=9D=B4 =EC=8C=93=EC=97=AC =EB=A7=A4=EC=9A=B0 =EB=B0=94=EC= =81=98=EC=A7=80=EB=A7=8C =ED=99=80=EC=88=98=EB=B2=88 =EB=B1=85=ED=81=AC= =EB=8A=94 =ED=95=A0 =EC=9D=BC=EC=9D=B4 =EC=97=86=EC=96=B4 =EC=95=84=EB=AC= =B4 +=EC=9D=BC=EB=8F=84 =ED=95=98=EC=A7=80 =EC=95=8A=EA=B3=A0 =EC=9E=88=EC= =97=88=EB=8B=A4=EB=A9=B4, =ED=8F=AC=EC=9D=B8=ED=84=B0 P =EB=8A=94 =EC=83= =88 =EA=B0=92 (&B) =EC=9D=84, =EA=B7=B8=EB=A6=AC=EA=B3=A0 =EB=B3=80=EC=88= =98 B =EB=8A=94 =EC=98=9B=EB=82=A0 =EA=B0=92 +(2) =EC=9D=84 =EA=B0=80=EC=A7=80=EA=B3=A0 =EC=9E=88=EB=8A=94 =EC=83=81= =ED=83=9C=EA=B0=80 =EB=B3=B4=EC=97=AC=EC=A7=88 =EC=88=98=EB=8F=84 =EC=9E= =88=EC=8A=B5=EB=8B=88=EB=8B=A4. + + +=EB=8D=B0=EC=9D=B4=ED=84=B0 =EC=9D=98=EC=A1=B4=EC=84=B1 =EB=B0=B0=EB=A6= =AC=EC=96=B4=EB=8A=94 =EB=A7=A4=EC=9A=B0 =EC=A4=91=EC=9A=94=ED=95=9C=EB= =8D=B0, =EC=98=88=EB=A5=BC =EB=93=A4=EC=96=B4 RCU =EC=8B=9C=EC=8A=A4=ED= =85=9C=EC=97=90=EC=84=9C =EA=B7=B8=EB=A0=87=EC=8A=B5=EB=8B=88=EB=8B=A4. +include/linux/rcupdate.h =EC=9D=98 rcu_assign_pointer() =EC=99=80 rcu_= dereference() =EB=A5=BC +=EC=B0=B8=EA=B3=A0=ED=95=98=EC=84=B8=EC=9A=94. =EC=97=AC=EA=B8=B0=EC=84= =9C =EB=8D=B0=EC=9D=B4=ED=84=B0 =EC=9D=98=EC=A1=B4=EC=84=B1 =EB=B0=B0=EB= =A6=AC=EC=96=B4=EB=8A=94 RCU =EB=A1=9C =EA=B4=80=EB=A6=AC=EB=90=98=EB=8A= =94 =ED=8F=AC=EC=9D=B8=ED=84=B0=EC=9D=98 =ED=83=80=EA=B2=9F=EC=9D=84 =ED= =98=84=EC=9E=AC +=ED=83=80=EA=B2=9F=EC=97=90=EC=84=9C =EC=88=98=EC=A0=95=EB=90=9C =EC=83= =88=EB=A1=9C=EC=9A=B4 =ED=83=80=EA=B2=9F=EC=9C=BC=EB=A1=9C =EB=B0=94=EA= =BE=B8=EB=8A=94 =EC=9E=91=EC=97=85=EC=97=90=EC=84=9C =EC=83=88=EB=A1=9C= =EC=88=98=EC=A0=95=EB=90=9C =ED=83=80=EA=B2=9F=EC=9D=B4 =EC=B4=88=EA=B8= =B0=ED=99=94=EA=B0=80 +=EC=99=84=EB=A3=8C=EB=90=98=EC=A7=80 =EC=95=8A=EC=9D=80 =EC=B1=84=EB=A1= =9C =EB=B3=B4=EC=97=AC=EC=A7=80=EB=8A=94 =EC=9D=BC=EC=9D=B4 =EC=9D=BC=EC= =96=B4=EB=82=98=EC=A7=80 =EC=95=8A=EA=B2=8C =ED=95=B4=EC=A4=8D=EB=8B=88= =EB=8B=A4. + +=EB=8D=94 =EB=A7=8E=EC=9D=80 =EC=98=88=EB=A5=BC =EC=9C=84=ED=95=B4=EC=84= =A0 "=EC=BA=90=EC=8B=9C =EC=9D=BC=EA=B4=80=EC=84=B1" =EC=84=9C=EB=B8=8C= =EC=84=B9=EC=85=98=EC=9D=84 =EC=B0=B8=EA=B3=A0=ED=95=98=EC=84=B8=EC=9A=94= =2E + + +=EC=BB=A8=ED=8A=B8=EB=A1=A4 =EC=9D=98=EC=A1=B4=EC=84=B1 +------------- + +=EB=A1=9C=EB=93=9C-=EB=A1=9C=EB=93=9C =EC=BB=A8=ED=8A=B8=EB=A1=A4 =EC=9D= =98=EC=A1=B4=EC=84=B1=EC=9D=80 =EB=8D=B0=EC=9D=B4=ED=84=B0 =EC=9D=98=EC= =A1=B4=EC=84=B1 =EB=B0=B0=EB=A6=AC=EC=96=B4=EB=A7=8C=EC=9C=BC=EB=A1=9C=EB= =8A=94 =EC=A0=95=ED=99=95=ED=9E=88 =EB=8F=99=EC=9E=91=ED=95=A0 =EC=88=98= =EA=B0=80 +=EC=97=86=EC=96=B4=EC=84=9C =EC=9D=BD=EA=B8=B0 =EB=A9=94=EB=AA=A8=EB=A6= =AC =EB=B0=B0=EB=A6=AC=EC=96=B4=EB=A5=BC =ED=95=84=EC=9A=94=EB=A1=9C =ED= =95=A9=EB=8B=88=EB=8B=A4. =EC=95=84=EB=9E=98=EC=9D=98 =EC=BD=94=EB=93=9C= =EB=A5=BC =EB=B4=85=EC=8B=9C=EB=8B=A4: + + q =3D READ_ONCE(a); + if (q) { + <=EB=8D=B0=EC=9D=B4=ED=84=B0 =EC=9D=98=EC=A1=B4=EC=84=B1 =EB=B0=B0=EB= =A6=AC=EC=96=B4> /* BUG: No data dependency!!! */ + p =3D READ_ONCE(b); + } + +=EC=9D=B4 =EC=BD=94=EB=93=9C=EB=8A=94 =EC=9B=90=ED=95=98=EB=8A=94 =EB=8C= =80=EB=A1=9C=EC=9D=98 =ED=9A=A8=EA=B3=BC=EB=A5=BC =EB=82=B4=EC=A7=80 =EB= =AA=BB=ED=95=A0 =EC=88=98 =EC=9E=88=EB=8A=94=EB=8D=B0, =EC=9D=B4 =EC=BD= =94=EB=93=9C=EC=97=90=EB=8A=94 =EB=8D=B0=EC=9D=B4=ED=84=B0 =EC=9D=98=EC= =A1=B4=EC=84=B1=EC=9D=B4 +=EC=95=84=EB=8B=88=EB=9D=BC =EC=BB=A8=ED=8A=B8=EB=A1=A4 =EC=9D=98=EC=A1= =B4=EC=84=B1=EC=9D=B4 =EC=A1=B4=EC=9E=AC=ED=95=98=EA=B8=B0 =EB=95=8C=EB= =AC=B8=EC=9C=BC=EB=A1=9C, =EC=9D=B4=EB=9F=B0 =EC=83=81=ED=99=A9=EC=97=90= =EC=84=9C CPU =EB=8A=94 =EC=8B=A4=ED=96=89 =EC=86=8D=EB=8F=84=EB=A5=BC = =EB=8D=94 +=EB=B9=A0=EB=A5=B4=EA=B2=8C =ED=95=98=EA=B8=B0 =EC=9C=84=ED=95=B4 =EB=B6= =84=EA=B8=B0 =EC=A1=B0=EA=B1=B4=EC=9D=98 =EA=B2=B0=EA=B3=BC=EB=A5=BC =EC= =98=88=EC=B8=A1=ED=95=98=EA=B3=A0 =EC=BD=94=EB=93=9C=EB=A5=BC =EC=9E=AC= =EB=B0=B0=EC=B9=98 =ED=95=A0 =EC=88=98 =EC=9E=88=EC=96=B4=EC=84=9C =EB=8B= =A4=EB=A5=B8 +CPU =EB=8A=94 b =EB=A1=9C=EB=B6=80=ED=84=B0=EC=9D=98 =EB=A1=9C=EB=93=9C= =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85=98=EC=9D=B4 a =EB=A1=9C=EB=B6= =80=ED=84=B0=EC=9D=98 =EB=A1=9C=EB=93=9C =EC=98=A4=ED=8D=BC=EB=A0=88=EC= =9D=B4=EC=85=98=EB=B3=B4=EB=8B=A4 =EB=A8=BC=EC=A0=80 =EB=B0=9C=EC=83=9D= =ED=95=9C +=EA=B1=B8=EB=A1=9C =EC=9D=B8=EC=8B=9D=ED=95=A0 =EC=88=98 =EC=9E=88=EC=8A= =B5=EB=8B=88=EB=8B=A4. =EC=97=AC=EA=B8=B0=EC=97=90 =EC=A0=95=EB=A7=90=EB= =A1=9C =ED=95=84=EC=9A=94=ED=96=88=EB=8D=98 =EA=B1=B4 =EB=8B=A4=EC=9D=8C= =EA=B3=BC =EA=B0=99=EC=8A=B5=EB=8B=88=EB=8B=A4: + + q =3D READ_ONCE(a); + if (q) { + <=EC=9D=BD=EA=B8=B0 =EB=B0=B0=EB=A6=AC=EC=96=B4> + p =3D READ_ONCE(b); + } + +=ED=95=98=EC=A7=80=EB=A7=8C, =EC=8A=A4=ED=86=A0=EC=96=B4 =EC=98=A4=ED=8D= =BC=EB=A0=88=EC=9D=B4=EC=85=98=EC=9D=80 =EC=98=88=EC=B8=A1=EC=A0=81=EC=9C= =BC=EB=A1=9C =EC=88=98=ED=96=89=EB=90=98=EC=A7=80 =EC=95=8A=EC=8A=B5=EB= =8B=88=EB=8B=A4. =EC=A6=89, =EB=8B=A4=EC=9D=8C =EC=98=88=EC=97=90=EC=84= =9C=EC=99=80 +=EA=B0=99=EC=9D=B4 =EB=A1=9C=EB=93=9C-=EC=8A=A4=ED=86=A0=EC=96=B4 =EC=BB= =A8=ED=8A=B8=EB=A1=A4 =EC=9D=98=EC=A1=B4=EC=84=B1=EC=9D=B4 =EC=A1=B4=EC= =9E=AC=ED=95=98=EB=8A=94 =EA=B2=BD=EC=9A=B0=EC=97=90=EB=8A=94 =EC=88=9C= =EC=84=9C=EA=B0=80 -=EC=A7=80=EC=BC=9C=EC=A7=84=EB=8B=A4-=EB=8A=94 +=EC=9D=98=EB=AF=B8=EC=9E=85=EB=8B=88=EB=8B=A4. + + q =3D READ_ONCE(a); + if (q) { + WRITE_ONCE(b, p); + } + +=EC=BB=A8=ED=8A=B8=EB=A1=A4 =EC=9D=98=EC=A1=B4=EC=84=B1=EC=9D=80 =EB=B3= =B4=ED=86=B5 =EB=8B=A4=EB=A5=B8 =ED=83=80=EC=9E=85=EC=9D=98 =EB=B0=B0=EB= =A6=AC=EC=96=B4=EB=93=A4=EA=B3=BC =EC=A7=9D=EC=9D=84 =EB=A7=9E=EC=B6=B0= =EC=82=AC=EC=9A=A9=EB=90=A9=EB=8B=88=EB=8B=A4. =EA=B7=B8=EB=A0=87=EB=8B= =A4=EA=B3=A4 +=ED=95=98=EB=82=98, READ_ONCE() =EB=8A=94 =EB=B0=98=EB=93=9C=EC=8B=9C = =EC=82=AC=EC=9A=A9=ED=95=B4=EC=95=BC =ED=95=A8=EC=9D=84 =EB=B6=80=EB=94= =94 =EB=AA=85=EC=8B=AC=ED=95=98=EC=84=B8=EC=9A=94! READ_ONCE() =EA=B0=80 +=EC=97=86=EB=8B=A4=EB=A9=B4, =EC=BB=B4=ED=8C=8C=EC=9D=BC=EB=9F=AC=EA=B0= =80 'a' =EB=A1=9C=EB=B6=80=ED=84=B0=EC=9D=98 =EB=A1=9C=EB=93=9C=EB=A5=BC= 'a' =EB=A1=9C=EB=B6=80=ED=84=B0=EC=9D=98 =EB=98=90=EB=8B=A4=EB=A5=B8 =EB= =A1=9C=EB=93=9C=EC=99=80, 'b' =EB=A1=9C=EC=9D=98 +=EC=8A=A4=ED=86=A0=EC=96=B4=EB=A5=BC 'b' =EB=A1=9C=EC=9D=98 =EB=98=90=EB= =8B=A4=EB=A5=B8 =EC=8A=A4=ED=86=A0=EC=96=B4=EC=99=80 =EC=A1=B0=ED=95=A9= =ED=95=B4 =EB=B2=84=EB=A0=A4 =EB=A7=A4=EC=9A=B0 =EB=B9=84=EC=A7=81=EA=B4= =80=EC=A0=81=EC=9D=B8 =EA=B2=B0=EA=B3=BC=EB=A5=BC =EC=B4=88=EB=9E=98=ED= =95=A0 =EC=88=98 +=EC=9E=88=EC=8A=B5=EB=8B=88=EB=8B=A4. + +=EC=9D=B4=EA=B1=B8=EB=A1=9C =EB=81=9D=EC=9D=B4 =EC=95=84=EB=8B=8C=EA=B2= =8C, =EC=BB=B4=ED=8C=8C=EC=9D=BC=EB=9F=AC=EA=B0=80 =EB=B3=80=EC=88=98 '= a' =EC=9D=98 =EA=B0=92=EC=9D=B4 =ED=95=AD=EC=83=81 0=EC=9D=B4 =EC=95=84= =EB=8B=88=EB=9D=BC=EA=B3=A0 =EC=A6=9D=EB=AA=85=ED=95=A0 =EC=88=98 +=EC=9E=88=EB=8B=A4=EB=A9=B4, =EC=95=9E=EC=9D=98 =EC=98=88=EC=97=90=EC=84= =9C "if" =EB=AC=B8=EC=9D=84 =EC=97=86=EC=95=A0=EC=84=9C =EB=8B=A4=EC=9D= =8C=EA=B3=BC =EA=B0=99=EC=9D=B4 =EC=B5=9C=EC=A0=81=ED=99=94 =ED=95=A0 =EC= =88=98=EB=8F=84 =EC=9E=88=EC=8A=B5=EB=8B=88=EB=8B=A4: + + q =3D a; + b =3D p; /* BUG: Compiler and CPU can both reorder!!! */ + +=EA=B7=B8=EB=9F=AC=EB=8B=88 READ_ONCE() =EB=A5=BC =EB=B0=98=EB=93=9C=EC= =8B=9C =EC=82=AC=EC=9A=A9=ED=95=98=EC=84=B8=EC=9A=94. + +=EB=8B=A4=EC=9D=8C=EA=B3=BC =EA=B0=99=EC=9D=B4 "if" =EB=AC=B8=EC=9D=98= =EC=96=91=EA=B0=88=EB=9E=98 =EB=B8=8C=EB=9E=9C=EC=B9=98=EC=97=90 =EB=AA= =A8=EB=91=90 =EC=A1=B4=EC=9E=AC=ED=95=98=EB=8A=94 =EB=8F=99=EC=9D=BC=ED= =95=9C =EC=8A=A4=ED=86=A0=EC=96=B4=EC=97=90 =EB=8C=80=ED=95=B4 =EC=88=9C= =EC=84=9C=EB=A5=BC +=EA=B0=95=EC=A0=9C=ED=95=98=EA=B3=A0 =EC=8B=B6=EC=9D=80 =EA=B2=BD=EC=9A= =B0=EA=B0=80 =EC=9E=88=EC=9D=84 =EC=88=98 =EC=9E=88=EC=8A=B5=EB=8B=88=EB= =8B=A4: + + q =3D READ_ONCE(a); + if (q) { + barrier(); + WRITE_ONCE(b, p); + do_something(); + } else { + barrier(); + WRITE_ONCE(b, p); + do_something_else(); + } + +=EC=95=88=ED=83=80=EA=B9=9D=EA=B2=8C=EB=8F=84, =ED=98=84=EC=9E=AC=EC=9D= =98 =EC=BB=B4=ED=8C=8C=EC=9D=BC=EB=9F=AC=EB=93=A4=EC=9D=80 =EB=86=92=EC= =9D=80 =EC=B5=9C=EC=A0=81=ED=99=94 =EB=A0=88=EB=B2=A8=EC=97=90=EC=84=9C= =EB=8A=94 =EC=9D=B4=EA=B1=B8 =EB=8B=A4=EC=9D=8C=EA=B3=BC =EA=B0=99=EC=9D= =B4 +=EB=B0=94=EA=BF=94=EB=B2=84=EB=A6=BD=EB=8B=88=EB=8B=A4: + + q =3D READ_ONCE(a); + barrier(); + WRITE_ONCE(b, p); /* BUG: No ordering vs. load from a!!! */ + if (q) { + /* WRITE_ONCE(b, p); -- moved up, BUG!!! */ + do_something(); + } else { + /* WRITE_ONCE(b, p); -- moved up, BUG!!! */ + do_something_else(); + } + +=EC=9D=B4=EC=A0=9C 'a' =EC=97=90=EC=84=9C=EC=9D=98 =EB=A1=9C=EB=93=9C=EC= =99=80 'b' =EB=A1=9C=EC=9D=98 =EC=8A=A4=ED=86=A0=EC=96=B4 =EC=82=AC=EC=9D= =B4=EC=97=90=EB=8A=94 =EC=A1=B0=EA=B1=B4=EC=A0=81 =EA=B4=80=EA=B3=84=EA= =B0=80 =EC=97=86=EA=B8=B0 =EB=95=8C=EB=AC=B8=EC=97=90 CPU +=EB=8A=94 =EC=9D=B4=EB=93=A4=EC=9D=98 =EC=88=9C=EC=84=9C=EB=A5=BC =EB=B0= =94=EA=BF=80 =EC=88=98 =EC=9E=88=EA=B2=8C =EB=90=A9=EB=8B=88=EB=8B=A4: = =EC=9D=B4=EB=9F=B0 =EA=B2=BD=EC=9A=B0=EC=97=90 =EC=A1=B0=EA=B1=B4=EC=A0= =81 =EA=B4=80=EA=B3=84=EB=8A=94 =EB=B0=98=EB=93=9C=EC=8B=9C +=ED=95=84=EC=9A=94=ED=95=9C=EB=8D=B0, =EB=AA=A8=EB=93=A0 =EC=BB=B4=ED=8C= =8C=EC=9D=BC=EB=9F=AC =EC=B5=9C=EC=A0=81=ED=99=94=EA=B0=80 =EC=9D=B4=EB= =A3=A8=EC=96=B4=EC=A7=80=EA=B3=A0 =EB=82=9C =ED=9B=84=EC=9D=98 =EC=96=B4= =EC=85=88=EB=B8=94=EB=A6=AC =EC=BD=94=EB=93=9C=EC=97=90=EC=84=9C=EB=8F=84 +=EB=A7=88=EC=B0=AC=EA=B0=80=EC=A7=80=EC=9E=85=EB=8B=88=EB=8B=A4. =EB=94= =B0=EB=9D=BC=EC=84=9C, =EC=9D=B4 =EC=98=88=EC=97=90=EC=84=9C =EC=88=9C=EC= =84=9C=EB=A5=BC =EC=A7=80=ED=82=A4=EA=B8=B0 =EC=9C=84=ED=95=B4=EC=84=9C= =EB=8A=94 smp_store_release() +=EC=99=80 =EA=B0=99=EC=9D=80 =EB=AA=85=EC=8B=9C=EC=A0=81 =EB=A9=94=EB=AA= =A8=EB=A6=AC =EB=B0=B0=EB=A6=AC=EC=96=B4=EA=B0=80 =ED=95=84=EC=9A=94=ED= =95=A9=EB=8B=88=EB=8B=A4: + + q =3D READ_ONCE(a); + if (q) { + smp_store_release(&b, p); + do_something(); + } else { + smp_store_release(&b, p); + do_something_else(); + } + +=EB=B0=98=EB=A9=B4=EC=97=90 =EB=AA=85=EC=8B=9C=EC=A0=81 =EB=A9=94=EB=AA= =A8=EB=A6=AC =EB=B0=B0=EB=A6=AC=EC=96=B4=EA=B0=80 =EC=97=86=EB=8B=A4=EB= =A9=B4, =EC=9D=B4=EB=9F=B0 =EA=B2=BD=EC=9A=B0=EC=9D=98 =EC=88=9C=EC=84=9C= =EB=8A=94 =EC=8A=A4=ED=86=A0=EC=96=B4 =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D= =B4=EC=85=98=EB=93=A4=EC=9D=B4 +=EC=84=9C=EB=A1=9C =EB=8B=A4=EB=A5=BC =EB=95=8C=EC=97=90=EB=A7=8C =EB=B3= =B4=EC=9E=A5=EB=90=98=EB=8A=94=EB=8D=B0, =EC=98=88=EB=A5=BC =EB=93=A4=EB= =A9=B4 =EB=8B=A4=EC=9D=8C=EA=B3=BC =EA=B0=99=EC=9D=80 =EA=B2=BD=EC=9A=B0= =EC=9E=85=EB=8B=88=EB=8B=A4: + + q =3D READ_ONCE(a); + if (q) { + WRITE_ONCE(b, p); + do_something(); + } else { + WRITE_ONCE(b, r); + do_something_else(); + } + +=EC=B2=98=EC=9D=8C=EC=9D=98 READ_ONCE() =EB=8A=94 =EC=BB=B4=ED=8C=8C=EC= =9D=BC=EB=9F=AC=EA=B0=80 'a' =EC=9D=98 =EA=B0=92=EC=9D=84 =EC=A6=9D=EB=AA= =85=ED=95=B4=EB=82=B4=EB=8A=94 =EA=B2=83=EC=9D=84 =EB=A7=89=EA=B8=B0 =EC= =9C=84=ED=95=B4 =EC=97=AC=EC=A0=84=ED=9E=88 +=ED=95=84=EC=9A=94=ED=95=A9=EB=8B=88=EB=8B=A4. + +=EB=98=90=ED=95=9C, =EB=A1=9C=EC=BB=AC =EB=B3=80=EC=88=98 'q' =EB=A5=BC= =EA=B0=80=EC=A7=80=EA=B3=A0 =ED=95=98=EB=8A=94 =EC=9D=BC=EC=97=90 =EB=8C= =80=ED=95=B4 =EC=A3=BC=EC=9D=98=ED=95=B4=EC=95=BC =ED=95=98=EB=8A=94=EB= =8D=B0, =EA=B7=B8=EB=9F=AC=EC=A7=80 =EC=95=8A=EC=9C=BC=EB=A9=B4 +=EC=BB=B4=ED=8C=8C=EC=9D=BC=EB=9F=AC=EB=8A=94 =EA=B7=B8 =EA=B0=92=EC=9D= =84 =EC=B6=94=EC=B8=A1=ED=95=98=EA=B3=A0 =EB=98=90=EB=8B=A4=EC=8B=9C =ED= =95=84=EC=9A=94=ED=95=9C =EC=A1=B0=EA=B1=B4=EA=B4=80=EA=B3=84=EB=A5=BC = =EC=97=86=EC=95=A0=EB=B2=84=EB=A6=B4 =EC=88=98 =EC=9E=88=EC=8A=B5=EB=8B= =88=EB=8B=A4. +=EC=98=88=EB=A5=BC =EB=93=A4=EB=A9=B4: + + q =3D READ_ONCE(a); + if (q % MAX) { + WRITE_ONCE(b, p); + do_something(); + } else { + WRITE_ONCE(b, r); + do_something_else(); + } + +=EB=A7=8C=EC=95=BD MAX =EA=B0=80 1 =EB=A1=9C =EC=A0=95=EC=9D=98=EB=90=9C= =EC=83=81=EC=88=98=EB=9D=BC=EB=A9=B4, =EC=BB=B4=ED=8C=8C=EC=9D=BC=EB=9F= =AC=EB=8A=94 (q % MAX) =EB=8A=94 0=EC=9D=B4=EB=9E=80 =EA=B2=83=EC=9D=84= =EC=95=8C=EC=95=84=EC=B1=84=EA=B3=A0, +=EC=9C=84=EC=9D=98 =EC=BD=94=EB=93=9C=EB=A5=BC =EC=95=84=EB=9E=98=EC=99= =80 =EA=B0=99=EC=9D=B4 =EB=B0=94=EA=BF=94=EB=B2=84=EB=A6=B4 =EC=88=98 =EC= =9E=88=EC=8A=B5=EB=8B=88=EB=8B=A4: + + q =3D READ_ONCE(a); + WRITE_ONCE(b, p); + do_something_else(); + +=EC=9D=B4=EB=A0=87=EA=B2=8C =EB=90=98=EB=A9=B4, CPU =EB=8A=94 =EB=B3=80= =EC=88=98 'a' =EB=A1=9C=EB=B6=80=ED=84=B0=EC=9D=98 =EB=A1=9C=EB=93=9C=EC= =99=80 =EB=B3=80=EC=88=98 'b' =EB=A1=9C=EC=9D=98 =EC=8A=A4=ED=86=A0=EC=96= =B4 =EC=82=AC=EC=9D=B4=EC=9D=98 =EC=88=9C=EC=84=9C=EB=A5=BC +=EC=A7=80=EC=BC=9C=EC=A4=84 =ED=95=84=EC=9A=94=EA=B0=80 =EC=97=86=EC=96= =B4=EC=A7=91=EB=8B=88=EB=8B=A4. barrier() =EB=A5=BC =EC=B6=94=EA=B0=80= =ED=95=B4 =ED=95=B4=EA=B2=B0=ED=95=B4 =EB=B3=B4=EA=B3=A0 =EC=8B=B6=EA=B2= =A0=EC=A7=80=EB=A7=8C, =EA=B7=B8=EA=B1=B4 +=EB=8F=84=EC=9B=80=EC=9D=B4 =EC=95=88=EB=90=A9=EB=8B=88=EB=8B=A4. =EC= =A1=B0=EA=B1=B4 =EA=B4=80=EA=B3=84=EB=8A=94 =EC=82=AC=EB=9D=BC=EC=A1=8C= =EA=B3=A0, barrier() =EB=8A=94 =EC=9D=B4=EB=A5=BC =EB=90=98=EB=8F=8C=EB= =A6=AC=EC=A7=80 =EB=AA=BB=ED=95=A9=EB=8B=88=EB=8B=A4. +=EB=94=B0=EB=9D=BC=EC=84=9C, =EC=9D=B4 =EC=88=9C=EC=84=9C=EB=A5=BC =EC= =A7=80=EC=BC=9C=EC=95=BC =ED=95=9C=EB=8B=A4=EB=A9=B4, MAX =EA=B0=80 1 =EB= =B3=B4=EB=8B=A4 =ED=81=AC=EB=8B=A4=EB=8A=94 =EA=B2=83=EC=9D=84, =EB=8B=A4= =EC=9D=8C=EA=B3=BC =EA=B0=99=EC=9D=80 =EB=B0=A9=EB=B2=95=EC=9D=84 +=EC=82=AC=EC=9A=A9=ED=95=B4 =EB=B6=84=EB=AA=85=ED=9E=88 =ED=95=B4=EC=95= =BC =ED=95=A9=EB=8B=88=EB=8B=A4: + + q =3D READ_ONCE(a); + BUILD_BUG_ON(MAX <=3D 1); /* Order load from a with store to b. */ + if (q % MAX) { + WRITE_ONCE(b, p); + do_something(); + } else { + WRITE_ONCE(b, r); + do_something_else(); + } + +'b' =EB=A1=9C=EC=9D=98 =EC=8A=A4=ED=86=A0=EC=96=B4=EB=93=A4=EC=9D=80 =EC= =97=AC=EC=A0=84=ED=9E=88 =EC=84=9C=EB=A1=9C =EB=8B=A4=EB=A6=84=EC=9D=84= =EC=95=8C=EC=95=84=EB=91=90=EC=84=B8=EC=9A=94. =EB=A7=8C=EC=95=BD =EA= =B7=B8=EA=B2=83=EB=93=A4=EC=9D=B4 =EB=8F=99=EC=9D=BC=ED=95=98=EB=A9=B4, +=EC=95=9E=EC=97=90=EC=84=9C =EC=9D=B4=EC=95=BC=EA=B8=B0=ED=96=88=EB=93= =AF, =EC=BB=B4=ED=8C=8C=EC=9D=BC=EB=9F=AC=EA=B0=80 =EA=B7=B8 =EC=8A=A4=ED= =86=A0=EC=96=B4 =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85=98=EB=93=A4=EC= =9D=84 'if' =EB=AC=B8 =EB=B0=94=EA=B9=A5=EC=9C=BC=EB=A1=9C +=EB=81=84=EC=A7=91=EC=96=B4=EB=82=BC =EC=88=98 =EC=9E=88=EC=8A=B5=EB=8B= =88=EB=8B=A4. + +=EB=98=90=ED=95=9C =EC=9D=B4=EC=A7=84 =EC=A1=B0=EA=B1=B4=EB=AC=B8 =ED=8F= =89=EA=B0=80=EC=97=90 =EB=84=88=EB=AC=B4 =EC=9D=98=EC=A1=B4=ED=95=98=EC= =A7=80 =EC=95=8A=EB=8F=84=EB=A1=9D =EC=A1=B0=EC=8B=AC=ED=95=B4=EC=95=BC= =ED=95=A9=EB=8B=88=EB=8B=A4. =EB=8B=A4=EC=9D=8C=EC=9D=98 =EC=98=88=EB= =A5=BC +=EB=B4=85=EC=8B=9C=EB=8B=A4: + + q =3D READ_ONCE(a); + if (q || 1 > 0) + WRITE_ONCE(b, 1); + +=EC=B2=AB=EB=B2=88=EC=A7=B8 =EC=A1=B0=EA=B1=B4=EB=A7=8C=EC=9C=BC=EB=A1= =9C=EB=8A=94 =EB=B8=8C=EB=9E=9C=EC=B9=98 =EC=A1=B0=EA=B1=B4 =EC=A0=84=EC= =B2=B4=EB=A5=BC =EA=B1=B0=EC=A7=93=EC=9C=BC=EB=A1=9C =EB=A7=8C=EB=93=A4= =EC=88=98 =EC=97=86=EA=B3=A0 =EB=91=90=EB=B2=88=EC=A7=B8 =EC=A1=B0=EA=B1= =B4=EC=9D=80 =ED=95=AD=EC=83=81 +=EC=B0=B8=EC=9D=B4=EA=B8=B0 =EB=95=8C=EB=AC=B8=EC=97=90, =EC=BB=B4=ED=8C= =8C=EC=9D=BC=EB=9F=AC=EB=8A=94 =EC=9D=B4 =EC=98=88=EB=A5=BC =EB=8B=A4=EC= =9D=8C=EA=B3=BC =EA=B0=99=EC=9D=B4 =EB=B0=94=EA=BF=94=EC=84=9C =EC=BB=A8= =ED=8A=B8=EB=A1=A4 =EC=9D=98=EC=A1=B4=EC=84=B1=EC=9D=84 =EC=97=86=EC=95= =A0=EB=B2=84=EB=A6=B4 +=EC=88=98 =EC=9E=88=EC=8A=B5=EB=8B=88=EB=8B=A4: + + q =3D READ_ONCE(a); + WRITE_ONCE(b, 1); + +=EC=9D=B4 =EC=98=88=EB=8A=94 =EC=BB=B4=ED=8C=8C=EC=9D=BC=EB=9F=AC=EA=B0= =80 =EC=BD=94=EB=93=9C=EB=A5=BC =EC=B6=94=EC=B8=A1=EC=9C=BC=EB=A1=9C =EC= =88=98=EC=A0=95=ED=95=A0 =EC=88=98 =EC=97=86=EB=8F=84=EB=A1=9D =EB=B6=84= =EB=AA=85=ED=9E=88 =ED=95=B4=EC=95=BC =ED=95=9C=EB=8B=A4=EB=8A=94 =EC=A0= =90=EC=9D=84 +=EA=B0=95=EC=A1=B0=ED=95=A9=EB=8B=88=EB=8B=A4. =EC=A1=B0=EA=B8=88 =EB= =8D=94 =EC=9D=BC=EB=B0=98=EC=A0=81=EC=9C=BC=EB=A1=9C =EB=A7=90=ED=95=B4= =EC=84=9C, READ_ONCE() =EB=8A=94 =EC=BB=B4=ED=8C=8C=EC=9D=BC=EB=9F=AC=EC= =97=90=EA=B2=8C =EC=A3=BC=EC=96=B4=EC=A7=84 =EB=A1=9C=EB=93=9C +=EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85=98=EC=9D=84 =EC=9C=84=ED=95= =9C =EC=BD=94=EB=93=9C=EB=A5=BC =EC=A0=95=EB=A7=90=EB=A1=9C =EB=A7=8C=EB= =93=A4=EB=8F=84=EB=A1=9D =ED=95=98=EC=A7=80=EB=A7=8C, =EC=BB=B4=ED=8C=8C= =EC=9D=BC=EB=9F=AC=EA=B0=80 =EA=B7=B8=EB=A0=87=EA=B2=8C =EB=A7=8C=EB=93= =A4=EC=96=B4=EC=A7=84 +=EC=BD=94=EB=93=9C=EC=9D=98 =EC=88=98=ED=96=89 =EA=B2=B0=EA=B3=BC=EB=A5= =BC =EC=82=AC=EC=9A=A9=ED=95=98=EB=8F=84=EB=A1=9D =EA=B0=95=EC=A0=9C=ED= =95=98=EC=A7=80=EB=8A=94 =EC=95=8A=EC=8A=B5=EB=8B=88=EB=8B=A4. + +=EB=A7=88=EC=A7=80=EB=A7=89=EC=9C=BC=EB=A1=9C, =EC=BB=A8=ED=8A=B8=EB=A1= =A4 =EC=9D=98=EC=A1=B4=EC=84=B1=EC=9D=80 =EC=9D=B4=ED=96=89=EC=84=B1 (t= ransitivity) =EC=9D=84 =EC=A0=9C=EA=B3=B5=ED=95=98=EC=A7=80 -=EC=95=8A=EC= =8A=B5=EB=8B=88=EB=8B=A4-. =EC=9D=B4=EA=B1=B4 +x =EC=99=80 y =EA=B0=80 =EB=91=98 =EB=8B=A4 0 =EC=9D=B4=EB=9D=BC=EB=8A= =94 =EC=B4=88=EA=B8=B0=EA=B0=92=EC=9D=84 =EA=B0=80=EC=A1=8C=EB=8B=A4=EB= =8A=94 =EA=B0=80=EC=A0=95 =ED=95=98=EC=9D=98 =EB=91=90=EA=B0=9C=EC=9D=98= =EC=98=88=EC=A0=9C=EB=A1=9C +=EB=B3=B4=EC=9D=B4=EA=B2=A0=EC=8A=B5=EB=8B=88=EB=8B=A4: + + CPU 0 CPU 1 + =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D + r1 =3D READ_ONCE(x); r2 =3D READ_ONCE(y); + if (r1 > 0) if (r2 > 0) + WRITE_ONCE(y, 1); WRITE_ONCE(x, 1); + + assert(!(r1 =3D=3D 1 && r2 =3D=3D 1)); + +=EC=9D=B4 =EB=91=90 CPU =EC=98=88=EC=A0=9C=EC=97=90=EC=84=9C assert() = =EC=9D=98 =EC=A1=B0=EA=B1=B4=EC=9D=80 =ED=95=AD=EC=83=81 =EC=B0=B8=EC=9D= =BC =EA=B2=83=EC=9E=85=EB=8B=88=EB=8B=A4. =EA=B7=B8=EB=A6=AC=EA=B3=A0,= =EB=A7=8C=EC=95=BD =EC=BB=A8=ED=8A=B8=EB=A1=A4 +=EC=9D=98=EC=A1=B4=EC=84=B1=EC=9D=B4 =EC=9D=B4=ED=96=89=EC=84=B1=EC=9D= =84 (=EC=8B=A4=EC=A0=9C=EB=A1=9C=EB=8A=94 =EA=B7=B8=EB=9F=AC=EC=A7=80 =EC= =95=8A=EC=A7=80=EB=A7=8C) =EB=B3=B4=EC=9E=A5=ED=95=9C=EB=8B=A4=EB=A9=B4= , =EB=8B=A4=EC=9D=8C=EC=9D=98 CPU =EA=B0=80 =EC=B6=94=EA=B0=80=EB=90=98= =EC=96=B4=EB=8F=84 +=EC=95=84=EB=9E=98=EC=9D=98 assert() =EC=A1=B0=EA=B1=B4=EC=9D=80 =EC=B0= =B8=EC=9D=B4 =EB=90=A0=EA=B2=83=EC=9E=85=EB=8B=88=EB=8B=A4: + + CPU 2 + =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D + WRITE_ONCE(x, 2); + + assert(!(r1 =3D=3D 2 && r2 =3D=3D 1 && x =3D=3D 2)); /* FAILS!!! */ + +=ED=95=98=EC=A7=80=EB=A7=8C =EC=BB=A8=ED=8A=B8=EB=A1=A4 =EC=9D=98=EC=A1= =B4=EC=84=B1=EC=9D=80 =EC=9D=B4=ED=96=89=EC=84=B1=EC=9D=84 =EC=A0=9C=EA= =B3=B5=ED=95=98=EC=A7=80 -=EC=95=8A=EA=B8=B0- =EB=95=8C=EB=AC=B8=EC=97=90= , =EC=84=B8=EA=B0=9C=EC=9D=98 CPU =EC=98=88=EC=A0=9C=EA=B0=80 =EC=8B=A4= =ED=96=89 +=EC=99=84=EB=A3=8C=EB=90=9C =ED=9B=84=EC=97=90 =EC=9C=84=EC=9D=98 asse= rt() =EC=9D=98 =EC=A1=B0=EA=B1=B4=EC=9D=80 =EA=B1=B0=EC=A7=93=EC=9C=BC=EB= =A1=9C =ED=8F=89=EA=B0=80=EB=90=A0 =EC=88=98 =EC=9E=88=EC=8A=B5=EB=8B=88= =EB=8B=A4. =EC=84=B8=EA=B0=9C=EC=9D=98 CPU +=EC=98=88=EC=A0=9C=EA=B0=80 =EC=88=9C=EC=84=9C=EB=A5=BC =EC=A7=80=ED=82= =A4=EA=B8=B8 =EC=9B=90=ED=95=9C=EB=8B=A4=EB=A9=B4, CPU 0 =EC=99=80 CPU = 1 =EC=BD=94=EB=93=9C=EC=9D=98 =EB=A1=9C=EB=93=9C=EC=99=80 =EC=8A=A4=ED=86= =A0=EC=96=B4 =EC=82=AC=EC=9D=B4, "if" +=EB=AC=B8 =EB=B0=94=EB=A1=9C =EB=8B=A4=EC=9D=8C=EC=97=90 smp_mb()=EB=A5= =BC =EB=84=A3=EC=96=B4=EC=95=BC =ED=95=A9=EB=8B=88=EB=8B=A4. =EB=8D=94= =EB=82=98=EC=95=84=EA=B0=80=EC=84=9C, =EC=B5=9C=EC=B4=88=EC=9D=98 =EB=91= =90 CPU =EC=98=88=EC=A0=9C=EB=8A=94 +=EB=A7=A4=EC=9A=B0 =EC=9C=84=ED=97=98=ED=95=98=EB=AF=80=EB=A1=9C =EC=82= =AC=EC=9A=A9=EB=90=98=EC=A7=80 =EC=95=8A=EC=95=84=EC=95=BC =ED=95=A9=EB= =8B=88=EB=8B=A4. + +=EC=9D=B4 =EB=91=90=EA=B0=9C=EC=9D=98 =EC=98=88=EC=A0=9C=EB=8A=94 =EB=8B= =A4=EC=9D=8C =EB=85=BC=EB=AC=B8: +http://www.cl.cam.ac.uk/users/pes20/ppc-supplemental/test6.pdf =EC=99=80 +=EC=9D=B4 =EC=82=AC=EC=9D=B4=ED=8A=B8: https://www.cl.cam.ac.uk/~pes20= /ppcmem/index.html =EC=97=90 =EB=82=98=EC=98=A8 LB =EC=99=80 WWC +=EB=A6=AC=ED=8A=B8=EB=A8=B8=EC=8A=A4 =ED=85=8C=EC=8A=A4=ED=8A=B8=EC=9E= =85=EB=8B=88=EB=8B=A4. + +=EC=9A=94=EC=95=BD=ED=95=98=EC=9E=90=EB=A9=B4: + + (*) =EC=BB=A8=ED=8A=B8=EB=A1=A4 =EC=9D=98=EC=A1=B4=EC=84=B1=EC=9D=80= =EC=95=9E=EC=9D=98 =EB=A1=9C=EB=93=9C=EB=93=A4=EC=9D=84 =EB=92=A4=EC=9D= =98 =EC=8A=A4=ED=86=A0=EC=96=B4=EB=93=A4=EC=97=90 =EB=8C=80=ED=95=B4 =EC= =88=9C=EC=84=9C=EB=A5=BC =EB=A7=9E=EC=B6=B0=EC=A4=8D=EB=8B=88=EB=8B=A4. + =ED=95=98=EC=A7=80=EB=A7=8C, =EA=B7=B8 =EC=99=B8=EC=9D=98 =EC=96= =B4=EB=96=A4 =EC=88=9C=EC=84=9C=EB=8F=84 =EB=B3=B4=EC=9E=A5=ED=95=98=EC= =A7=80 -=EC=95=8A=EC=8A=B5=EB=8B=88=EB=8B=A4-: =EC=95=9E=EC=9D=98 =EB=A1= =9C=EB=93=9C=EC=99=80 =EB=92=A4=EC=9D=98 =EB=A1=9C=EB=93=9C=EB=93=A4 + =EC=82=AC=EC=9D=B4=EC=97=90=EB=8F=84, =EC=95=9E=EC=9D=98 =EC=8A=A4= =ED=86=A0=EC=96=B4=EC=99=80 =EB=92=A4=EC=9D=98 =EC=8A=A4=ED=86=A0=EC=96= =B4=EB=93=A4 =EC=82=AC=EC=9D=B4=EC=97=90=EB=8F=84=EC=9A=94. =EC=9D=B4=EB= =9F=B0 =EB=8B=A4=EB=A5=B8 =ED=98=95=ED=83=9C=EC=9D=98 + =EC=88=9C=EC=84=9C=EA=B0=80 =ED=95=84=EC=9A=94=ED=95=98=EB=8B=A4= =EB=A9=B4 smp_rmb() =EB=82=98 smp_wmb()=EB=A5=BC, =EB=98=90=EB=8A=94, =EC= =95=9E=EC=9D=98 =EC=8A=A4=ED=86=A0=EC=96=B4=EB=93=A4=EA=B3=BC =EB=92=A4= =EC=9D=98 + =EB=A1=9C=EB=93=9C=EB=93=A4 =EC=82=AC=EC=9D=B4=EC=9D=98 =EC=88=9C= =EC=84=9C=EB=A5=BC =EC=9C=84=ED=95=B4=EC=84=9C=EB=8A=94 smp_mb() =EB=A5= =BC =EC=82=AC=EC=9A=A9=ED=95=98=EC=84=B8=EC=9A=94. + + (*) "if" =EB=AC=B8=EC=9D=98 =EC=96=91=EA=B0=88=EB=9E=98 =EB=B8=8C=EB= =9E=9C=EC=B9=98=EA=B0=80 =EA=B0=99=EC=9D=80 =EB=B3=80=EC=88=98=EC=97=90= =EC=9D=98 =EB=8F=99=EC=9D=BC=ED=95=9C =EC=8A=A4=ED=86=A0=EC=96=B4=EB=A1= =9C =EC=8B=9C=EC=9E=91=ED=95=9C=EB=8B=A4=EB=A9=B4, =EA=B7=B8 + =EC=8A=A4=ED=86=A0=EC=96=B4=EB=93=A4=EC=9D=80 =EA=B0=81 =EC=8A=A4= =ED=86=A0=EC=96=B4 =EC=95=9E=EC=97=90 smp_mb() =EB=A5=BC =EB=84=A3=EA=B1= =B0=EB=82=98 smp_store_release() =EB=A5=BC + =EC=82=AC=EC=9A=A9=ED=95=B4=EC=84=9C =EC=8A=A4=ED=86=A0=EC=96=B4= =EB=A5=BC =ED=95=98=EB=8A=94 =EC=8B=9D=EC=9C=BC=EB=A1=9C =EC=88=9C=EC=84= =9C=EB=A5=BC =EB=A7=9E=EC=B6=B0=EC=A4=98=EC=95=BC =ED=95=A9=EB=8B=88=EB= =8B=A4. =EC=9D=B4 =EB=AC=B8=EC=A0=9C=EB=A5=BC =ED=95=B4=EA=B2=B0=ED=95= =98=EA=B8=B0 + =EC=9C=84=ED=95=B4 "if" =EB=AC=B8=EC=9D=98 =EC=96=91=EA=B0=88=EB= =9E=98 =EB=B8=8C=EB=9E=9C=EC=B9=98=EC=9D=98 =EC=8B=9C=EC=9E=91 =EC=A7=80= =EC=A0=90=EC=97=90 barrier() =EB=A5=BC =EB=84=A3=EB=8A=94 =EA=B2=83=EB=A7= =8C=EC=9C=BC=EB=A1=9C=EB=8A=94 + =EC=B6=A9=EB=B6=84=ED=95=9C =ED=95=B4=EA=B2=B0=EC=9D=B4 =EB=90=98= =EC=A7=80 =EC=95=8A=EB=8A=94=EB=8D=B0, =EC=9D=B4=EB=8A=94 =EC=95=9E=EC=9D= =98 =EC=98=88=EC=97=90=EC=84=9C =EB=B3=B8=EA=B2=83=EA=B3=BC =EA=B0=99=EC= =9D=B4, =EC=BB=B4=ED=8C=8C=EC=9D=BC=EB=9F=AC=EC=9D=98 + =EC=B5=9C=EC=A0=81=ED=99=94=EB=8A=94 barrier() =EA=B0=80 =EC=9D=98= =EB=AF=B8=ED=95=98=EB=8A=94 =EB=B0=94=EB=A5=BC =EC=A7=80=ED=82=A4=EB=A9= =B4=EC=84=9C=EB=8F=84 =EC=BB=A8=ED=8A=B8=EB=A1=A4 =EC=9D=98=EC=A1=B4=EC= =84=B1=EC=9D=84 =EC=86=90=EC=83=81=EC=8B=9C=ED=82=AC + =EC=88=98 =EC=9E=88=EA=B8=B0 =EB=95=8C=EB=AC=B8=EC=9D=B4=EB=9D=BC= =EB=8A=94 =EC=A0=90=EC=9D=84 =EB=B6=80=EB=94=94 =EC=95=8C=EC=95=84=EB=91= =90=EC=8B=9C=EA=B8=B0 =EB=B0=94=EB=9E=8D=EB=8B=88=EB=8B=A4. + + (*) =EC=BB=A8=ED=8A=B8=EB=A1=A4 =EC=9D=98=EC=A1=B4=EC=84=B1=EC=9D=80= =EC=95=9E=EC=9D=98 =EB=A1=9C=EB=93=9C=EC=99=80 =EB=92=A4=EC=9D=98 =EC=8A= =A4=ED=86=A0=EC=96=B4 =EC=82=AC=EC=9D=B4=EC=97=90 =EC=B5=9C=EC=86=8C =ED= =95=98=EB=82=98=EC=9D=98, =EC=8B=A4=ED=96=89 + =EC=8B=9C=EC=A0=90=EC=97=90=EC=84=9C=EC=9D=98 =EC=A1=B0=EA=B1=B4= =EA=B4=80=EA=B3=84=EB=A5=BC =ED=95=84=EC=9A=94=EB=A1=9C =ED=95=98=EB=A9= =B0, =EC=9D=B4 =EC=A1=B0=EA=B1=B4=EA=B4=80=EA=B3=84=EB=8A=94 =EC=95=9E=EC= =9D=98 =EB=A1=9C=EB=93=9C=EC=99=80 =EA=B4=80=EA=B3=84=EB=90=98=EC=96=B4= =EC=95=BC + =ED=95=A9=EB=8B=88=EB=8B=A4. =EB=A7=8C=EC=95=BD =EC=BB=B4=ED=8C= =8C=EC=9D=BC=EB=9F=AC=EA=B0=80 =EC=A1=B0=EA=B1=B4 =EA=B4=80=EA=B3=84=EB= =A5=BC =EC=B5=9C=EC=A0=81=ED=99=94=EB=A1=9C =EC=97=86=EC=95=A8=EC=88=98= =EC=9E=88=EB=8B=A4=EB=A9=B4, =EC=88=9C=EC=84=9C=EB=8F=84 + =EC=B5=9C=EC=A0=81=ED=99=94=EB=A1=9C =EC=97=86=EC=95=A0=EB=B2=84= =EB=A0=B8=EC=9D=84 =EA=B2=81=EB=8B=88=EB=8B=A4. READ_ONCE() =EC=99=80 = WRITE_ONCE() =EC=9D=98 =EC=A3=BC=EC=9D=98 =EA=B9=8A=EC=9D=80 + =EC=82=AC=EC=9A=A9=EC=9D=80 =EC=A3=BC=EC=96=B4=EC=A7=84 =EC=A1=B0= =EA=B1=B4 =EA=B4=80=EA=B3=84=EB=A5=BC =EC=9C=A0=EC=A7=80=ED=95=98=EB=8A= =94=EB=8D=B0 =EB=8F=84=EC=9B=80=EC=9D=B4 =EB=90=A0 =EC=88=98 =EC=9E=88=EC= =8A=B5=EB=8B=88=EB=8B=A4. + + (*) =EC=BB=A8=ED=8A=B8=EB=A1=A4 =EC=9D=98=EC=A1=B4=EC=84=B1=EC=9D=84= =EC=9C=84=ED=95=B4=EC=84=A0 =EC=BB=B4=ED=8C=8C=EC=9D=BC=EB=9F=AC=EA=B0= =80 =EC=A1=B0=EA=B1=B4=EA=B4=80=EA=B3=84=EB=A5=BC =EC=97=86=EC=95=A0=EB= =B2=84=EB=A6=AC=EB=8A=94 =EA=B2=83=EC=9D=84 =EB=A7=89=EC=95=84=EC=95=BC + =ED=95=A9=EB=8B=88=EB=8B=A4. =EC=A3=BC=EC=9D=98 =EA=B9=8A=EC=9D= =80 READ_ONCE() =EB=82=98 atomic{,64}_read() =EC=9D=98 =EC=82=AC=EC=9A=A9= =EC=9D=B4 =EC=BB=A8=ED=8A=B8=EB=A1=A4 + =EC=9D=98=EC=A1=B4=EC=84=B1=EC=9D=B4 =EC=82=AC=EB=9D=BC=EC=A7=80= =EC=A7=80 =EC=95=8A=EA=B2=8C =ED=95=98=EB=8A=94=EB=8D=B0 =EB=8F=84=EC=9B= =80=EC=9D=84 =EC=A4=84 =EC=88=98 =EC=9E=88=EC=8A=B5=EB=8B=88=EB=8B=A4. = =EB=8D=94 =EB=A7=8E=EC=9D=80 =EC=A0=95=EB=B3=B4=EB=A5=BC + =EC=9C=84=ED=95=B4=EC=84=A0 "=EC=BB=B4=ED=8C=8C=EC=9D=BC=EB=9F=AC= =EB=B0=B0=EB=A6=AC=EC=96=B4" =EC=84=B9=EC=85=98=EC=9D=84 =EC=B0=B8=EA=B3= =A0=ED=95=98=EC=8B=9C=EA=B8=B0 =EB=B0=94=EB=9E=8D=EB=8B=88=EB=8B=A4. + + (*) =EC=BB=A8=ED=8A=B8=EB=A1=A4 =EC=9D=98=EC=A1=B4=EC=84=B1=EC=9D=80= =EB=B3=B4=ED=86=B5 =EB=8B=A4=EB=A5=B8 =ED=83=80=EC=9E=85=EC=9D=98 =EB=B0= =B0=EB=A6=AC=EC=96=B4=EB=93=A4=EA=B3=BC =EC=A7=9D=EC=9D=84 =EB=A7=9E=EC= =B6=B0 =EC=82=AC=EC=9A=A9=EB=90=A9=EB=8B=88=EB=8B=A4. + + (*) =EC=BB=A8=ED=8A=B8=EB=A1=A4 =EC=9D=98=EC=A1=B4=EC=84=B1=EC=9D=80= =EC=9D=B4=ED=96=89=EC=84=B1=EC=9D=84 =EC=A0=9C=EA=B3=B5=ED=95=98=EC=A7= =80 -=EC=95=8A=EC=8A=B5=EB=8B=88=EB=8B=A4-. =EC=9D=B4=ED=96=89=EC=84=B1= =EC=9D=B4 =ED=95=84=EC=9A=94=ED=95=98=EB=8B=A4=EB=A9=B4, + smp_mb() =EB=A5=BC =EC=82=AC=EC=9A=A9=ED=95=98=EC=84=B8=EC=9A=94= =2E + + +SMP =EB=B0=B0=EB=A6=AC=EC=96=B4 =EC=A7=9D=EB=A7=9E=EC=B6=94=EA=B8=B0 +-------------------- + +CPU =EA=B0=84 =EC=83=81=ED=98=B8=EC=9E=91=EC=9A=A9=EC=9D=84 =EB=8B=A4=EB= =A3=B0 =EB=95=8C=EC=97=90 =EC=9D=BC=EB=B6=80 =ED=83=80=EC=9E=85=EC=9D=98= =EB=A9=94=EB=AA=A8=EB=A6=AC =EB=B0=B0=EB=A6=AC=EC=96=B4=EB=8A=94 =ED=95= =AD=EC=83=81 =EC=A7=9D=EC=9D=84 =EB=A7=9E=EC=B6=B0 +=EC=82=AC=EC=9A=A9=EB=90=98=EC=96=B4=EC=95=BC =ED=95=A9=EB=8B=88=EB=8B= =A4. =EC=A0=81=EC=A0=88=ED=95=98=EA=B2=8C =EC=A7=9D=EC=9D=84 =EB=A7=9E= =EC=B6=94=EC=A7=80 =EC=95=8A=EC=9D=80 =EC=BD=94=EB=93=9C=EB=8A=94 =EC=82= =AC=EC=8B=A4=EC=83=81 =EC=97=90=EB=9F=AC=EC=97=90 =EA=B0=80=EA=B9=9D=EC= =8A=B5=EB=8B=88=EB=8B=A4. + +=EB=B2=94=EC=9A=A9 =EB=B0=B0=EB=A6=AC=EC=96=B4=EB=93=A4=EC=9D=80 =EB=B2= =94=EC=9A=A9 =EB=B0=B0=EB=A6=AC=EC=96=B4=EB=81=BC=EB=A6=AC=EB=8F=84 =EC= =A7=9D=EC=9D=84 =EB=A7=9E=EC=B6=94=EC=A7=80=EB=A7=8C =EC=9D=B4=ED=96=89= =EC=84=B1=EC=9D=B4 =EC=97=86=EB=8A=94 =EB=8C=80=EB=B6=80=EB=B6=84=EC=9D= =98 =EB=8B=A4=EB=A5=B8 +=ED=83=80=EC=9E=85=EC=9D=98 =EB=B0=B0=EB=A6=AC=EC=96=B4=EB=93=A4=EA=B3= =BC=EB=8F=84 =EC=A7=9D=EC=9D=84 =EB=A7=9E=EC=B6=A5=EB=8B=88=EB=8B=A4. = ACQUIRE =EB=B0=B0=EB=A6=AC=EC=96=B4=EB=8A=94 RELEASE =EB=B0=B0=EB=A6=AC= =EC=96=B4=EC=99=80 =EC=A7=9D=EC=9D=84 +=EB=A7=9E=EC=B6=A5=EB=8B=88=EB=8B=A4=EB=A7=8C, =EB=91=98 =EB=8B=A4 =EB= =B2=94=EC=9A=A9 =EB=B0=B0=EB=A6=AC=EC=96=B4=EB=A5=BC =ED=8F=AC=ED=95=A8= =ED=95=B4 =EB=8B=A4=EB=A5=B8 =EB=B0=B0=EB=A6=AC=EC=96=B4=EB=93=A4=EA=B3= =BC=EB=8F=84 =EC=A7=9D=EC=9D=84 =EB=A7=9E=EC=B6=9C =EC=88=98 =EC=9E=88=EC= =8A=B5=EB=8B=88=EB=8B=A4. +=EC=93=B0=EA=B8=B0 =EB=B0=B0=EB=A6=AC=EC=96=B4=EB=8A=94 =EB=8D=B0=EC=9D= =B4=ED=84=B0 =EC=9D=98=EC=A1=B4=EC=84=B1 =EB=B0=B0=EB=A6=AC=EC=96=B4=EB= =82=98 =EC=BB=A8=ED=8A=B8=EB=A1=A4 =EC=9D=98=EC=A1=B4=EC=84=B1, ACQUIRE= =EB=B0=B0=EB=A6=AC=EC=96=B4, RELEASE +=EB=B0=B0=EB=A6=AC=EC=96=B4, =EC=9D=BD=EA=B8=B0 =EB=B0=B0=EB=A6=AC=EC=96= =B4, =EB=98=90=EB=8A=94 =EB=B2=94=EC=9A=A9 =EB=B0=B0=EB=A6=AC=EC=96=B4=EC= =99=80 =EC=A7=9D=EC=9D=84 =EB=A7=9E=EC=B6=A5=EB=8B=88=EB=8B=A4. =EB=B9= =84=EC=8A=B7=ED=95=98=EA=B2=8C =EC=9D=BD=EA=B8=B0 =EB=B0=B0=EB=A6=AC=EC= =96=B4=EB=82=98 +=EC=BB=A8=ED=8A=B8=EB=A1=A4 =EC=9D=98=EC=A1=B4=EC=84=B1, =EB=98=90=EB=8A= =94 =EB=8D=B0=EC=9D=B4=ED=84=B0 =EC=9D=98=EC=A1=B4=EC=84=B1 =EB=B0=B0=EB= =A6=AC=EC=96=B4=EB=8A=94 =EC=93=B0=EA=B8=B0 =EB=B0=B0=EB=A6=AC=EC=96=B4= =EB=82=98 ACQUIRE =EB=B0=B0=EB=A6=AC=EC=96=B4, +RELEASE =EB=B0=B0=EB=A6=AC=EC=96=B4, =EB=98=90=EB=8A=94 =EB=B2=94=EC=9A= =A9 =EB=B0=B0=EB=A6=AC=EC=96=B4=EC=99=80 =EC=A7=9D=EC=9D=84 =EB=A7=9E=EC= =B6=94=EB=8A=94=EB=8D=B0, =EB=8B=A4=EC=9D=8C=EA=B3=BC =EA=B0=99=EC=8A=B5= =EB=8B=88=EB=8B=A4: + + CPU 1 CPU 2 + =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D + WRITE_ONCE(a, 1); + <=EC=93=B0=EA=B8=B0 =EB=B0=B0=EB=A6=AC=EC=96=B4> + WRITE_ONCE(b, 2); x =3D READ_ONCE(b); + <=EC=9D=BD=EA=B8=B0 =EB=B0=B0=EB=A6=AC=EC=96=B4> + y =3D READ_ONCE(a); + +=EB=98=90=EB=8A=94: + + CPU 1 CPU 2 + =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D + a =3D 1; + <=EC=93=B0=EA=B8=B0 =EB=B0=B0=EB=A6=AC=EC=96=B4> + WRITE_ONCE(b, &a); x =3D READ_ONCE(b); + <=EB=8D=B0=EC=9D=B4=ED=84=B0 =EC=9D=98=EC=A1=B4=EC=84=B1 =EB=B0= =B0=EB=A6=AC=EC=96=B4> + y =3D *x; + +=EB=98=90=EB=8A=94: + + CPU 1 CPU 2 + =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D + r1 =3D READ_ONCE(y); + <=EB=B2=94=EC=9A=A9 =EB=B0=B0=EB=A6=AC=EC=96=B4> + WRITE_ONCE(y, 1); if (r2 =3D READ_ONCE(x)) { + <=EB=AC=B5=EC=8B=9C=EC=A0=81 =EC=BB=A8=ED=8A=B8=EB=A1=A4 =EC= =9D=98=EC=A1=B4=EC=84=B1> + WRITE_ONCE(y, 1); + } + + assert(r1 =3D=3D 0 || r2 =3D=3D 0); + +=EA=B8=B0=EB=B3=B8=EC=A0=81=EC=9C=BC=EB=A1=9C, =EC=97=AC=EA=B8=B0=EC=84= =9C=EC=9D=98 =EC=9D=BD=EA=B8=B0 =EB=B0=B0=EB=A6=AC=EC=96=B4=EB=8A=94 "=EB= =8D=94 =EC=99=84=ED=99=94=EB=90=9C" =ED=83=80=EC=9E=85=EC=9D=BC =EC=88=9C= =EC=9E=88=EC=96=B4=EB=8F=84 =ED=95=AD=EC=83=81 =EC=A1=B4=EC=9E=AC=ED=95= =B4=EC=95=BC +=ED=95=A9=EB=8B=88=EB=8B=A4. + +[!] =EC=93=B0=EA=B8=B0 =EB=B0=B0=EB=A6=AC=EC=96=B4 =EC=95=9E=EC=9D=98 = =EC=8A=A4=ED=86=A0=EC=96=B4 =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85=98= =EC=9D=80 =EC=9D=BC=EB=B0=98=EC=A0=81=EC=9C=BC=EB=A1=9C =EC=9D=BD=EA=B8= =B0 =EB=B0=B0=EB=A6=AC=EC=96=B4=EB=82=98 =EB=8D=B0=EC=9D=B4=ED=84=B0 +=EC=9D=98=EC=A1=B4=EC=84=B1 =EB=B0=B0=EB=A6=AC=EC=96=B4 =EB=92=A4=EC=9D= =98 =EB=A1=9C=EB=93=9C =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85=98=EA= =B3=BC =EB=A7=A4=EC=B9=98=EB=90=A0 =EA=B2=83=EC=9D=B4=EA=B3=A0, =EB=B0=98= =EB=8C=80=EB=8F=84 =EB=A7=88=EC=B0=AC=EA=B0=80=EC=A7=80=EC=9E=85=EB=8B=88= =EB=8B=A4: + + CPU 1 CPU 2 + =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D + WRITE_ONCE(a, 1); }---- --->{ v =3D READ_ONCE(c); + WRITE_ONCE(b, 2); } \ / { w =3D READ_ONCE(d); + <=EC=93=B0=EA=B8=B0 =EB=B0=B0=EB=A6=AC=EC=96=B4> \ = <=EC=9D=BD=EA=B8=B0 =EB=B0=B0=EB=A6=AC=EC=96=B4> + WRITE_ONCE(c, 3); } / \ { x =3D READ_ONCE(a); + WRITE_ONCE(d, 4); }---- --->{ y =3D READ_ONCE(b); + + +=EB=A9=94=EB=AA=A8=EB=A6=AC =EB=B0=B0=EB=A6=AC=EC=96=B4 =EC=8B=9C=ED=80= =80=EC=8A=A4=EC=9D=98 =EC=98=88 +------------------------- + +=EC=B2=AB=EC=A7=B8, =EC=93=B0=EA=B8=B0 =EB=B0=B0=EB=A6=AC=EC=96=B4=EB=8A= =94 =EC=8A=A4=ED=86=A0=EC=96=B4 =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC= =85=98=EB=93=A4=EC=9D=98 =EB=B6=80=EB=B6=84=EC=A0=81 =EC=88=9C=EC=84=9C= =EC=84=B8=EC=9A=B0=EA=B8=B0=EB=A1=9C =EB=8F=99=EC=9E=91=ED=95=A9=EB=8B= =88=EB=8B=A4. +=EC=95=84=EB=9E=98=EC=9D=98 =EC=9D=B4=EB=B2=A4=ED=8A=B8 =EC=8B=9C=ED=80= =80=EC=8A=A4=EB=A5=BC =EB=B3=B4=EC=84=B8=EC=9A=94: + + CPU 1 + =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D + STORE A =3D 1 + STORE B =3D 2 + STORE C =3D 3 + <=EC=93=B0=EA=B8=B0 =EB=B0=B0=EB=A6=AC=EC=96=B4> + STORE D =3D 4 + STORE E =3D 5 + +=EC=9D=B4 =EC=9D=B4=EB=B2=A4=ED=8A=B8 =EC=8B=9C=ED=80=80=EC=8A=A4=EB=8A= =94 =EB=A9=94=EB=AA=A8=EB=A6=AC =EC=9D=BC=EA=B4=80=EC=84=B1 =EC=8B=9C=EC= =8A=A4=ED=85=9C=EC=97=90 =EC=9B=90=EC=86=8C=EB=81=BC=EB=A6=AC=EC=9D=98 = =EC=88=9C=EC=84=9C=EA=B0=80 =EC=A1=B4=EC=9E=AC=ED=95=98=EC=A7=80 =EC=95= =8A=EB=8A=94 =EC=A7=91=ED=95=A9 +{ STORE A, STORE B, STORE C } =EA=B0=80 =EC=97=AD=EC=8B=9C =EC=9B=90=EC= =86=8C=EB=81=BC=EB=A6=AC=EC=9D=98 =EC=88=9C=EC=84=9C=EA=B0=80 =EC=A1=B4= =EC=9E=AC=ED=95=98=EC=A7=80 =EC=95=8A=EB=8A=94 =EC=A7=91=ED=95=A9 +{ STORE D, STORE E } =EB=B3=B4=EB=8B=A4 =EB=A8=BC=EC=A0=80 =EC=9D=BC=EC= =96=B4=EB=82=9C =EA=B2=83=EC=9C=BC=EB=A1=9C =EC=8B=9C=EC=8A=A4=ED=85=9C= =EC=9D=98 =EB=82=98=EB=A8=B8=EC=A7=80 =EC=9A=94=EC=86=8C=EB=93=A4=EC=97= =90 =EB=B3=B4=EC=9D=B4=EB=8F=84=EB=A1=9D +=EC=A0=84=EB=8B=AC=EB=90=A9=EB=8B=88=EB=8B=A4: + + +-------+ : : + | | +------+ + | |------>| C=3D3 | } /\ + | | : +------+ }----- \ -----> =EC=8B=9C=EC=8A=A4=ED=85= =9C=EC=9D=98 =EB=82=98=EB=A8=B8=EC=A7=80 =EC=9A=94=EC=86=8C=EC=97=90 + | | : | A=3D1 | } \/ =EB=B3=B4=EC=97=AC=EC= =A7=88 =EC=88=98 =EC=9E=88=EB=8A=94 =EC=9D=B4=EB=B2=A4=ED=8A=B8=EB=93=A4 + | | : +------+ } + | CPU 1 | : | B=3D2 | } + | | +------+ } + | | wwwwwwwwwwwwwwww } <--- =EC=97=AC=EA=B8=B0=EC=84=9C =EC= =93=B0=EA=B8=B0 =EB=B0=B0=EB=A6=AC=EC=96=B4=EB=8A=94 =EB=B0=B0=EB=A6=AC= =EC=96=B4 =EC=95=9E=EC=9D=98 + | | +------+ } =EB=AA=A8=EB=93=A0 =EC=8A=A4=ED= =86=A0=EC=96=B4=EA=B0=80 =EB=B0=B0=EB=A6=AC=EC=96=B4 =EB=92=A4=EC=9D=98= =EC=8A=A4=ED=86=A0=EC=96=B4 + | | : | E=3D5 | } =EC=A0=84=EC=97=90 =EB=A9=94=EB= =AA=A8=EB=A6=AC =EC=8B=9C=EC=8A=A4=ED=85=9C=EC=97=90 =EC=A0=84=EB=8B=AC= =EB=90=98=EB=8F=84=EB=A1=9D + | | : +------+ } =ED=95=A9=EB=8B=88=EB=8B=A4 + | |------>| D=3D4 | } + | | +------+ + +-------+ : : + | + | CPU 1 =EC=97=90 =EC=9D=98=ED=95=B4 =EB=A9=94=EB=AA= =A8=EB=A6=AC =EC=8B=9C=EC=8A=A4=ED=85=9C=EC=97=90 =EC=A0=84=EB=8B=AC=EB= =90=98=EB=8A=94 + | =EC=9D=BC=EB=A0=A8=EC=9D=98 =EC=8A=A4=ED=86=A0=EC= =96=B4 =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85=98=EB=93=A4 + V + + +=EB=91=98=EC=A7=B8, =EB=8D=B0=EC=9D=B4=ED=84=B0 =EC=9D=98=EC=A1=B4=EC=84= =B1 =EB=B0=B0=EB=A6=AC=EC=96=B4=EB=8A=94 =EB=8D=B0=EC=9D=B4=ED=84=B0 =EC= =9D=98=EC=A1=B4=EC=A0=81 =EB=A1=9C=EB=93=9C =EC=98=A4=ED=8D=BC=EB=A0=88= =EC=9D=B4=EC=85=98=EB=93=A4=EC=9D=98 =EB=B6=80=EB=B6=84=EC=A0=81 =EC=88= =9C=EC=84=9C +=EC=84=B8=EC=9A=B0=EA=B8=B0=EB=A1=9C =EB=8F=99=EC=9E=91=ED=95=A9=EB=8B= =88=EB=8B=A4. =EB=8B=A4=EC=9D=8C =EC=9D=BC=EB=A0=A8=EC=9D=98 =EC=9D=B4= =EB=B2=A4=ED=8A=B8=EB=93=A4=EC=9D=84 =EB=B3=B4=EC=84=B8=EC=9A=94: + + CPU 1 CPU 2 + =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D + { B =3D 7; X =3D 9; Y =3D 8; C =3D &Y } + STORE A =3D 1 + STORE B =3D 2 + <=EC=93=B0=EA=B8=B0 =EB=B0=B0=EB=A6=AC=EC=96=B4> + STORE C =3D &B LOAD X + STORE D =3D 4 LOAD C (gets &B) + LOAD *C (reads B) + +=EC=97=AC=EA=B8=B0=EC=97=90 =EB=B3=84=EB=8B=A4=EB=A5=B8 =EA=B0=9C=EC=9E= =85=EC=9D=B4 =EC=97=86=EB=8B=A4=EB=A9=B4, CPU 1 =EC=9D=98 =EC=93=B0=EA=B8= =B0 =EB=B0=B0=EB=A6=AC=EC=96=B4=EC=97=90=EB=8F=84 =EB=B6=88=EA=B5=AC=ED= =95=98=EA=B3=A0 CPU 2 =EB=8A=94 CPU 1 +=EC=9D=98 =EC=9D=B4=EB=B2=A4=ED=8A=B8=EB=93=A4=EC=9D=84 =EC=99=84=EC=A0= =84=ED=9E=88 =EB=AC=B4=EC=9E=91=EC=9C=84=EC=A0=81 =EC=88=9C=EC=84=9C=EB= =A1=9C =EC=9D=B8=EC=A7=80=ED=95=98=EA=B2=8C =EB=90=A9=EB=8B=88=EB=8B=A4= : + + +-------+ : : : : + | | +------+ +-------+ | CPU 2 =EC=97=90 = =EC=9D=B8=EC=A7=80=EB=90=98=EB=8A=94 + | |------>| B=3D2 |----- --->| Y->8 | | =EC=97=85=EB=8D= =B0=EC=9D=B4=ED=8A=B8 =EC=9D=B4=EB=B2=A4=ED=8A=B8 + | | : +------+ \ +-------+ | =EC=8B=9C=ED=80=80= =EC=8A=A4 + | CPU 1 | : | A=3D1 | \ --->| C->&Y | V + | | +------+ | +-------+ + | | wwwwwwwwwwwwwwww | : : + | | +------+ | : : + | | : | C=3D&B |--- | : : +-------+ + | | : +------+ \ | +-------+ | | + | |------>| D=3D4 | ----------->| C->&B |------>| | + | | +------+ | +-------+ | | + +-------+ : : | : : | | + | : : | | + | : : | CPU 2 | + | +-------+ | | + =EB=B6=84=EB=AA=85=ED=9E=88 =EC=9E=98=EB=AA=BB=EB=90=9C --= -> | | B->7 |------>| | + B =EC=9D=98 =EA=B0=92 =EC=9D=B8=EC=A7=80 (!) | += -------+ | | + | : : | | + | +-------+ | | + X =EC=9D=98 =EB=A1=9C=EB=93=9C=EA=B0=80 B =EC=9D=98 ---> \ = | X->9 |------>| | + =EC=9D=BC=EA=B4=80=EC=84=B1 =EC=9C=A0=EC=A7=80=EB=A5=BC = \ +-------+ | | + =EC=A7=80=EC=97=B0=EC=8B=9C=ED=82=B4 ----->|= B->2 | +-------+ + +-------+ + : : + + +=EC=95=9E=EC=9D=98 =EC=98=88=EC=97=90=EC=84=9C, CPU 2 =EB=8A=94 (B =EC= =9D=98 =EA=B0=92=EC=9D=B4 =EB=90=A0) *C =EC=9D=98 =EA=B0=92 =EC=9D=BD=EA= =B8=B0=EA=B0=80 C =EC=9D=98 LOAD =EB=92=A4=EC=97=90 =EC=9D=B4=EC=96=B4=EC= =A7=90=EC=97=90=EB=8F=84 +B =EA=B0=80 7 =EC=9D=B4=EB=9D=BC=EB=8A=94 =EA=B2=B0=EA=B3=BC=EB=A5=BC = =EC=96=BB=EC=8A=B5=EB=8B=88=EB=8B=A4. + +=ED=95=98=EC=A7=80=EB=A7=8C, =EB=A7=8C=EC=95=BD =EB=8D=B0=EC=9D=B4=ED=84= =B0 =EC=9D=98=EC=A1=B4=EC=84=B1 =EB=B0=B0=EB=A6=AC=EC=96=B4=EA=B0=80 C = =EC=9D=98 =EB=A1=9C=EB=93=9C=EC=99=80 *C (=EC=A6=89, B) =EC=9D=98 =EB=A1= =9C=EB=93=9C =EC=82=AC=EC=9D=B4=EC=97=90 +=EC=9E=88=EC=97=88=EB=8B=A4=EB=A9=B4: + + CPU 1 CPU 2 + =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D + { B =3D 7; X =3D 9; Y =3D 8; C =3D &Y } + STORE A =3D 1 + STORE B =3D 2 + <=EC=93=B0=EA=B8=B0 =EB=B0=B0=EB=A6=AC=EC=96=B4> + STORE C =3D &B LOAD X + STORE D =3D 4 LOAD C (gets &B) + <=EB=8D=B0=EC=9D=B4=ED=84=B0 =EC=9D=98=EC=A1=B4=EC=84=B1 =EB=B0=B0= =EB=A6=AC=EC=96=B4> + LOAD *C (reads B) + +=EB=8B=A4=EC=9D=8C=EA=B3=BC =EA=B0=99=EC=9D=B4 =EB=90=A9=EB=8B=88=EB=8B= =A4: + + +-------+ : : : : + | | +------+ +-------+ + | |------>| B=3D2 |----- --->| Y->8 | + | | : +------+ \ +-------+ + | CPU 1 | : | A=3D1 | \ --->| C->&Y | + | | +------+ | +-------+ + | | wwwwwwwwwwwwwwww | : : + | | +------+ | : : + | | : | C=3D&B |--- | : : +-------+ + | | : +------+ \ | +-------+ | | + | |------>| D=3D4 | ----------->| C->&B |------>| | + | | +------+ | +-------+ | | + +-------+ : : | : : | | + | : : | | + | : : | CPU 2 | + | +-------+ | | + | | X->9 |------>| | + | +-------+ | | + C =EB=A1=9C=EC=9D=98 =EC=8A=A4=ED=86=A0=EC=96=B4 =EC=95=9E=EC=9D=98= ---> \ ddddddddddddddddd | | + =EB=AA=A8=EB=93=A0 =EC=9D=B4=EB=B2=A4=ED=8A=B8 =EA=B2=B0=EA=B3=BC=EA= =B0=80 \ +-------+ | | + =EB=92=A4=EC=9D=98 =EB=A1=9C=EB=93=9C=EC=97=90=EA=B2=8C = ----->| B->2 |------>| | + =EB=B3=B4=EC=9D=B4=EA=B2=8C =EA=B0=95=EC=A0=9C=ED=95=9C=EB=8B=A4 = +-------+ | | + : : +-------+ + + +=EC=85=8B=EC=A7=B8, =EC=9D=BD=EA=B8=B0 =EB=B0=B0=EB=A6=AC=EC=96=B4=EB=8A= =94 =EB=A1=9C=EB=93=9C =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85=98=EB= =93=A4=EC=97=90=EC=9D=98 =EB=B6=80=EB=B6=84=EC=A0=81 =EC=88=9C=EC=84=9C= =EC=84=B8=EC=9A=B0=EA=B8=B0=EB=A1=9C =EB=8F=99=EC=9E=91=ED=95=A9=EB=8B= =88=EB=8B=A4. +=EC=95=84=EB=9E=98=EC=9D=98 =EC=9D=BC=EB=A0=A8=EC=9D=98 =EC=9D=B4=EB=B2= =A4=ED=8A=B8=EB=A5=BC =EB=B4=85=EC=8B=9C=EB=8B=A4: + + CPU 1 CPU 2 + =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D + { A =3D 0, B =3D 9 } + STORE A=3D1 + <=EC=93=B0=EA=B8=B0 =EB=B0=B0=EB=A6=AC=EC=96=B4> + STORE B=3D2 + LOAD B + LOAD A + +CPU 1 =EC=9D=80 =EC=93=B0=EA=B8=B0 =EB=B0=B0=EB=A6=AC=EC=96=B4=EB=A5=BC= =EC=B3=A4=EC=A7=80=EB=A7=8C, =EB=B3=84=EB=8B=A4=EB=A5=B8 =EA=B0=9C=EC=9E= =85=EC=9D=B4 =EC=97=86=EB=8B=A4=EB=A9=B4 CPU 2 =EB=8A=94 CPU 1 =EC=97=90= =EC=84=9C =ED=96=89=ED=95=B4=EC=A7=84 +=EC=9D=B4=EB=B2=A4=ED=8A=B8=EC=9D=98 =EA=B2=B0=EA=B3=BC=EB=A5=BC =EB=AC= =B4=EC=9E=91=EC=9C=84=EC=A0=81 =EC=88=9C=EC=84=9C=EB=A1=9C =EC=9D=B8=EC= =A7=80=ED=95=98=EA=B2=8C =EB=90=A9=EB=8B=88=EB=8B=A4. + + +-------+ : : : : + | | +------+ +-------+ + | |------>| A=3D1 |------ --->| A->0 | + | | +------+ \ +-------+ + | CPU 1 | wwwwwwwwwwwwwwww \ --->| B->9 | + | | +------+ | +-------+ + | |------>| B=3D2 |--- | : : + | | +------+ \ | : : +-------+ + +-------+ : : \ | +-------+ | | + ---------->| B->2 |------>| | + | +-------+ | CPU 2 | + | | A->0 |------>| | + | +-------+ | | + | : : +-------+ + \ : : + \ +-------+ + ---->| A->1 | + +-------+ + : : + + +=ED=95=98=EC=A7=80=EB=A7=8C, =EB=A7=8C=EC=95=BD =EC=9D=BD=EA=B8=B0 =EB= =B0=B0=EB=A6=AC=EC=96=B4=EA=B0=80 B =EC=9D=98 =EB=A1=9C=EB=93=9C=EC=99=80= A =EC=9D=98 =EB=A1=9C=EB=93=9C =EC=82=AC=EC=9D=B4=EC=97=90 =EC=A1=B4=EC= =9E=AC=ED=95=9C=EB=8B=A4=EB=A9=B4: + + CPU 1 CPU 2 + =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D + { A =3D 0, B =3D 9 } + STORE A=3D1 + <=EC=93=B0=EA=B8=B0 =EB=B0=B0=EB=A6=AC=EC=96=B4> + STORE B=3D2 + LOAD B + <=EC=9D=BD=EA=B8=B0 =EB=B0=B0=EB=A6=AC=EC=96=B4> + LOAD A + +CPU 1 =EC=97=90 =EC=9D=98=ED=95=B4 =EB=A7=8C=EB=93=A4=EC=96=B4=EC=A7=84= =EB=B6=80=EB=B6=84=EC=A0=81 =EC=88=9C=EC=84=9C=EA=B0=80 CPU 2 =EC=97=90= =EB=8F=84 =EA=B7=B8=EB=8C=80=EB=A1=9C =EC=9D=B8=EC=A7=80=EB=90=A9=EB=8B= =88=EB=8B=A4: + + +-------+ : : : : + | | +------+ +-------+ + | |------>| A=3D1 |------ --->| A->0 | + | | +------+ \ +-------+ + | CPU 1 | wwwwwwwwwwwwwwww \ --->| B->9 | + | | +------+ | +-------+ + | |------>| B=3D2 |--- | : : + | | +------+ \ | : : +-------+ + +-------+ : : \ | +-------+ | | + ---------->| B->2 |------>| | + | +-------+ | CPU 2 | + | : : | | + | : : | | + =EC=97=AC=EA=B8=B0=EC=84=9C =EC=9D=BD=EA=B8=B0 =EB=B0=B0=EB=A6=AC=EC= =96=B4=EB=8A=94 ----> \ rrrrrrrrrrrrrrrrr | | + B =EB=A1=9C=EC=9D=98 =EC=8A=A4=ED=86=A0=EC=96=B4 =EC=A0=84=EC=9D=98= \ +-------+ | | + =EB=AA=A8=EB=93=A0 =EA=B2=B0=EA=B3=BC=EB=A5=BC CPU 2 =EC=97=90 = ---->| A->1 |------>| | + =EB=B3=B4=EC=9D=B4=EB=8F=84=EB=A1=9D =ED=95=9C=EB=8B=A4 = +-------+ | | + : : +-------+ + + +=EB=8D=94 =EC=99=84=EB=B2=BD=ED=95=9C =EC=84=A4=EB=AA=85=EC=9D=84 =EC=9C= =84=ED=95=B4, A =EC=9D=98 =EB=A1=9C=EB=93=9C=EA=B0=80 =EC=9D=BD=EA=B8=B0= =EB=B0=B0=EB=A6=AC=EC=96=B4 =EC=95=9E=EA=B3=BC =EB=92=A4=EC=97=90 =EC=9E= =88=EC=9C=BC=EB=A9=B4 =EC=96=B4=EB=96=BB=EA=B2=8C =EB=90=A0=EC=A7=80 +=EC=83=9D=EA=B0=81=ED=95=B4 =EB=B4=85=EC=8B=9C=EB=8B=A4: + + CPU 1 CPU 2 + =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D + { A =3D 0, B =3D 9 } + STORE A=3D1 + <=EC=93=B0=EA=B8=B0 =EB=B0=B0=EB=A6=AC=EC=96=B4> + STORE B=3D2 + LOAD B + LOAD A [first load of A] + <=EC=9D=BD=EA=B8=B0 =EB=B0=B0=EB=A6=AC=EC=96=B4> + LOAD A [second load of A] + +A =EC=9D=98 =EB=A1=9C=EB=93=9C =EB=91=90=EA=B0=9C=EA=B0=80 =EB=AA=A8=EB= =91=90 B =EC=9D=98 =EB=A1=9C=EB=93=9C =EB=92=A4=EC=97=90 =EC=9E=88=EC=A7= =80=EB=A7=8C, =EC=84=9C=EB=A1=9C =EB=8B=A4=EB=A5=B8 =EA=B0=92=EC=9D=84 = =EC=96=BB=EC=96=B4=EC=98=AC =EC=88=98 +=EC=9E=88=EC=8A=B5=EB=8B=88=EB=8B=A4: + + +-------+ : : : : + | | +------+ +-------+ + | |------>| A=3D1 |------ --->| A->0 | + | | +------+ \ +-------+ + | CPU 1 | wwwwwwwwwwwwwwww \ --->| B->9 | + | | +------+ | +-------+ + | |------>| B=3D2 |--- | : : + | | +------+ \ | : : +-------+ + +-------+ : : \ | +-------+ | | + ---------->| B->2 |------>| | + | +-------+ | CPU 2 | + | : : | | + | : : | | + | +-------+ | | + | | A->0 |------>| 1st | + | +-------+ | | + =EC=97=AC=EA=B8=B0=EC=84=9C =EC=9D=BD=EA=B8=B0 =EB=B0=B0=EB=A6=AC=EC= =96=B4=EB=8A=94 ----> \ rrrrrrrrrrrrrrrrr | | + B =EB=A1=9C=EC=9D=98 =EC=8A=A4=ED=86=A0=EC=96=B4 =EC=A0=84=EC=9D=98= \ +-------+ | | + =EB=AA=A8=EB=93=A0 =EA=B2=B0=EA=B3=BC=EB=A5=BC CPU 2 =EC=97=90 = ---->| A->1 |------>| 2nd | + =EB=B3=B4=EC=9D=B4=EB=8F=84=EB=A1=9D =ED=95=9C=EB=8B=A4 = +-------+ | | + : : +-------+ + + +=ED=95=98=EC=A7=80=EB=A7=8C CPU 1 =EC=97=90=EC=84=9C=EC=9D=98 A =EC=97= =85=EB=8D=B0=EC=9D=B4=ED=8A=B8=EB=8A=94 =EC=9D=BD=EA=B8=B0 =EB=B0=B0=EB= =A6=AC=EC=96=B4=EA=B0=80 =EC=99=84=EB=A3=8C=EB=90=98=EA=B8=B0 =EC=A0=84= =EC=97=90=EB=8F=84 =EB=B3=B4=EC=9D=BC =EC=88=98=EB=8F=84 +=EC=9E=88=EA=B8=B4 =ED=95=A9=EB=8B=88=EB=8B=A4: + + +-------+ : : : : + | | +------+ +-------+ + | |------>| A=3D1 |------ --->| A->0 | + | | +------+ \ +-------+ + | CPU 1 | wwwwwwwwwwwwwwww \ --->| B->9 | + | | +------+ | +-------+ + | |------>| B=3D2 |--- | : : + | | +------+ \ | : : +-------+ + +-------+ : : \ | +-------+ | | + ---------->| B->2 |------>| | + | +-------+ | CPU 2 | + | : : | | + \ : : | | + \ +-------+ | | + ---->| A->1 |------>| 1st | + +-------+ | | + rrrrrrrrrrrrrrrrr | | + +-------+ | | + | A->1 |------>| 2nd | + +-------+ | | + : : +-------+ + + +=EC=97=AC=EA=B8=B0=EC=84=9C =EB=B3=B4=EC=9E=A5=EB=90=98=EB=8A=94 =EA=B1= =B4, =EB=A7=8C=EC=95=BD B =EC=9D=98 =EB=A1=9C=EB=93=9C=EA=B0=80 B =3D=3D= 2 =EB=9D=BC=EB=8A=94 =EA=B2=B0=EA=B3=BC=EB=A5=BC =EB=B4=A4=EB=8B=A4=EB= =A9=B4, A =EC=97=90=EC=9D=98 =EB=91=90=EB=B2=88=EC=A7=B8 +=EB=A1=9C=EB=93=9C=EB=8A=94 =ED=95=AD=EC=83=81 A =3D=3D 1 =EC=9D=84 =EB= =B3=B4=EA=B2=8C =EB=90=A0 =EA=B2=83=EC=9D=B4=EB=9D=BC=EB=8A=94 =EA=B2=81= =EB=8B=88=EB=8B=A4. A =EC=97=90=EC=9D=98 =EC=B2=AB=EB=B2=88=EC=A7=B8 =EB= =A1=9C=EB=93=9C=EC=97=90=EB=8A=94 =EA=B7=B8=EB=9F=B0 +=EB=B3=B4=EC=9E=A5=EC=9D=B4 =EC=97=86=EC=8A=B5=EB=8B=88=EB=8B=A4; A =3D= =3D 0 =EC=9D=B4=EA=B1=B0=EB=82=98 A =3D=3D 1 =EC=9D=B4=EA=B1=B0=EB=82=98= =EB=91=98 =EC=A4=91 =ED=95=98=EB=82=98=EC=9D=98 =EA=B2=B0=EA=B3=BC=EB=A5= =BC =EB=B3=B4=EA=B2=8C =EB=90=A0=EA=B2=81=EB=8B=88=EB=8B=A4. + + +=EC=9D=BD=EA=B8=B0 =EB=A9=94=EB=AA=A8=EB=A6=AC =EB=B0=B0=EB=A6=AC=EC=96= =B4 VS =EB=A1=9C=EB=93=9C =EC=98=88=EC=B8=A1 +------------------------------- + +=EB=A7=8E=EC=9D=80 CPU=EB=93=A4=EC=9D=B4 =EB=A1=9C=EB=93=9C=EB=A5=BC =EC= =98=88=EC=B8=A1=EC=A0=81=EC=9C=BC=EB=A1=9C (speculatively) =ED=95=A9=EB= =8B=88=EB=8B=A4: =EC=96=B4=EB=96=A4 =EB=8D=B0=EC=9D=B4=ED=84=B0=EB=A5=BC= =EB=A9=94=EB=AA=A8=EB=A6=AC=EC=97=90=EC=84=9C +=EB=A1=9C=EB=93=9C=ED=95=B4=EC=95=BC =ED=95=98=EA=B2=8C =EB=90=A0=EC=A7= =80 =EC=98=88=EC=B8=A1=EC=9D=84 =ED=96=88=EB=8B=A4=EB=A9=B4, =ED=95=B4=EB= =8B=B9 =EB=8D=B0=EC=9D=B4=ED=84=B0=EB=A5=BC =EB=A1=9C=EB=93=9C=ED=95=98= =EB=8A=94 =EC=9D=B8=EC=8A=A4=ED=8A=B8=EB=9F=AD=EC=85=98=EC=9D=84 =EC=8B= =A4=EC=A0=9C=EB=A1=9C=EB=8A=94 +=EC=95=84=EC=A7=81 =EB=A7=8C=EB=82=98=EC=A7=80 =EC=95=8A=EC=95=98=EB=8D= =94=EB=9D=BC=EB=8F=84 =EB=8B=A4=EB=A5=B8 =EB=A1=9C=EB=93=9C =EC=9E=91=EC= =97=85=EC=9D=B4 =EC=97=86=EC=96=B4 =EB=B2=84=EC=8A=A4 (bus) =EA=B0=80 =EC= =95=84=EB=AC=B4 =EC=9D=BC=EB=8F=84 =ED=95=98=EA=B3=A0 =EC=9E=88=EC=A7=80 +=EC=95=8A=EB=8B=A4=EB=A9=B4, =EA=B7=B8 =EB=8D=B0=EC=9D=B4=ED=84=B0=EB=A5= =BC =EB=A1=9C=EB=93=9C=ED=95=A9=EB=8B=88=EB=8B=A4. =EC=9D=B4=ED=9B=84=EC= =97=90 =EC=8B=A4=EC=A0=9C =EB=A1=9C=EB=93=9C =EC=9D=B8=EC=8A=A4=ED=8A=B8= =EB=9F=AD=EC=85=98=EC=9D=B4 =EC=8B=A4=ED=96=89=EB=90=98=EB=A9=B4 CPU =EA= =B0=80 +=EC=9D=B4=EB=AF=B8 =EA=B7=B8 =EA=B0=92=EC=9D=84 =EA=B0=80=EC=A7=80=EA=B3= =A0 =EC=9E=88=EA=B8=B0 =EB=95=8C=EB=AC=B8=EC=97=90 =EA=B7=B8 =EB=A1=9C=EB= =93=9C =EC=9D=B8=EC=8A=A4=ED=8A=B8=EB=9F=AD=EC=85=98=EC=9D=80 =EC=A6=89= =EC=8B=9C =EC=99=84=EB=A3=8C=EB=90=A9=EB=8B=88=EB=8B=A4. + +=ED=95=B4=EB=8B=B9 CPU =EB=8A=94 =EC=8B=A4=EC=A0=9C=EB=A1=9C=EB=8A=94 = =EA=B7=B8 =EA=B0=92=EC=9D=B4 =ED=95=84=EC=9A=94=EC=B9=98 =EC=95=8A=EC=95= =98=EB=8B=A4=EB=8A=94 =EC=82=AC=EC=8B=A4=EC=9D=B4 =EB=82=98=EC=A4=91=EC= =97=90 =EB=93=9C=EB=9F=AC=EB=82=A0 =EC=88=98=EB=8F=84 =EC=9E=88=EB=8A=94= =EB=8D=B0 - +=ED=95=B4=EB=8B=B9 =EB=A1=9C=EB=93=9C =EC=9D=B8=EC=8A=A4=ED=8A=B8=EB=9F= =AD=EC=85=98=EC=9D=B4 =EB=B8=8C=EB=9E=9C=EC=B9=98=EB=A1=9C =EC=9A=B0=ED= =9A=8C=EB=90=98=EA=B1=B0=EB=82=98 =ED=96=88=EC=9D=84 =EC=88=98 =EC=9E=88= =EA=B2=A0=EC=A3=A0 - , =EA=B7=B8=EB=A0=87=EA=B2=8C =EB=90=98=EB=A9=B4 =EC= =95=9E=EC=84=9C +=EC=9D=BD=EC=96=B4=EB=91=94 =EA=B0=92=EC=9D=84 =EB=B2=84=EB=A6=AC=EA=B1= =B0=EB=82=98 =EB=82=98=EC=A4=91=EC=9D=98 =EC=82=AC=EC=9A=A9=EC=9D=84 =EC= =9C=84=ED=95=B4 =EC=BA=90=EC=8B=9C=EC=97=90 =EB=84=A3=EC=96=B4=EB=91=98= =EC=88=98 =EC=9E=88=EC=8A=B5=EB=8B=88=EB=8B=A4. + +=EB=8B=A4=EC=9D=8C=EC=9D=84 =EC=83=9D=EA=B0=81=ED=95=B4 =EB=B4=85=EC=8B= =9C=EB=8B=A4: + + CPU 1 CPU 2 + =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D + LOAD B + DIVIDE } =EB=82=98=EB=88=84=EA=B8=B0 =EB=AA=85=EB=A0=B9=EC=9D=80 = =EC=9D=BC=EB=B0=98=EC=A0=81=EC=9C=BC=EB=A1=9C + DIVIDE } =EA=B8=B4 =EC=8B=9C=EA=B0=84=EC=9D=84 =ED=95=84=EC=9A=94= =EB=A1=9C =ED=95=A9=EB=8B=88=EB=8B=A4 + LOAD A + +=EB=8A=94 =EC=9D=B4=EB=A0=87=EA=B2=8C =EB=90=A0 =EC=88=98 =EC=9E=88=EC= =8A=B5=EB=8B=88=EB=8B=A4: + + : : +-------+ + +-------+ | | + --->| B->2 |------>| | + +-------+ | CPU 2 | + : :DIVIDE | | + +-------+ | | + =EB=82=98=EB=88=84=EA=B8=B0 =ED=95=98=EB=8A=90=EB=9D=BC =EB=B0=94=EC=81= =9C ---> --->| A->0 |~~~~ | | + CPU =EB=8A=94 A =EC=9D=98 LOAD =EB=A5=BC +-------= + ~ | | + =EC=98=88=EC=B8=A1=ED=95=B4=EC=84=9C =EC=88=98=ED=96=89=ED=95=9C=EB=8B= =A4 : : ~ | | + : :DIVIDE | | + : : ~ | | + =EB=82=98=EB=88=84=EA=B8=B0=EA=B0=80 =EB=81=9D=EB=82=98=EB=A9=B4 = ---> ---> : : ~-->| | + CPU =EB=8A=94 =ED=95=B4=EB=8B=B9 LOAD =EB=A5=BC := : | | + =EC=A6=89=EA=B0=81 =EC=99=84=EB=A3=8C=ED=95=9C=EB=8B=A4 = : : +-------+ + + +=EC=9D=BD=EA=B8=B0 =EB=B0=B0=EB=A6=AC=EC=96=B4=EB=82=98 =EB=8D=B0=EC=9D= =B4=ED=84=B0 =EC=9D=98=EC=A1=B4=EC=84=B1 =EB=B0=B0=EB=A6=AC=EC=96=B4=EB= =A5=BC =EB=91=90=EB=B2=88=EC=A7=B8 =EB=A1=9C=EB=93=9C =EC=A7=81=EC=A0=84= =EC=97=90 =EB=86=93=EB=8A=94=EB=8B=A4=EB=A9=B4: + + CPU 1 CPU 2 + =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D + LOAD B + DIVIDE + DIVIDE + <=EC=9D=BD=EA=B8=B0 =EB=B0=B0=EB=A6=AC=EC=96=B4> + LOAD A + +=EC=98=88=EC=B8=A1=EC=9C=BC=EB=A1=9C =EC=96=BB=EC=96=B4=EC=A7=84 =EA=B0= =92=EC=9D=80 =EC=82=AC=EC=9A=A9=EB=90=9C =EB=B0=B0=EB=A6=AC=EC=96=B4=EC= =9D=98 =ED=83=80=EC=9E=85=EC=97=90 =EB=94=B0=EB=9D=BC=EC=84=9C =ED=95=B4= =EB=8B=B9 =EA=B0=92=EC=9D=B4 =EC=98=B3=EC=9D=80=EC=A7=80 =EA=B2=80=ED=86= =A0=EB=90=98=EA=B2=8C +=EB=90=A9=EB=8B=88=EB=8B=A4. =EB=A7=8C=EC=95=BD =ED=95=B4=EB=8B=B9 =EB= =A9=94=EB=AA=A8=EB=A6=AC =EC=98=81=EC=97=AD=EC=97=90 =EB=B3=80=ED=99=94= =EA=B0=80 =EC=97=86=EC=97=88=EB=8B=A4=EB=A9=B4, =EC=98=88=EC=B8=A1=EC=9C= =BC=EB=A1=9C =EC=96=BB=EC=96=B4=EB=91=90=EC=97=88=EB=8D=98 =EA=B0=92=EC= =9D=B4 +=EC=82=AC=EC=9A=A9=EB=90=A9=EB=8B=88=EB=8B=A4: + + : : +-------+ + +-------+ | | + --->| B->2 |------>| | + +-------+ | CPU 2 | + : :DIVIDE | | + +-------+ | | + =EB=82=98=EB=88=84=EA=B8=B0 =ED=95=98=EB=8A=90=EB=9D=BC =EB=B0=94=EC=81= =9C ---> --->| A->0 |~~~~ | | + CPU =EB=8A=94 A =EC=9D=98 LOAD =EB=A5=BC +-------= + ~ | | + =EC=98=88=EC=B8=A1=ED=95=9C=EB=8B=A4 := : ~ | | + : :DIVIDE | | + : : ~ | | + : : ~ | | + rrrrrrrrrrrrrrrr~ | | + : : ~ | | + : : ~-->| | + : : | | + : : +-------+ + + +=ED=95=98=EC=A7=80=EB=A7=8C =EB=8B=A4=EB=A5=B8 CPU =EC=97=90=EC=84=9C = =EC=97=85=EB=8D=B0=EC=9D=B4=ED=8A=B8=EB=82=98 =EB=AC=B4=ED=9A=A8=ED=99=94= =EA=B0=80 =EC=9E=88=EC=97=88=EB=8B=A4=EB=A9=B4, =EA=B7=B8 =EC=98=88=EC=B8= =A1=EC=9D=80 =EB=AC=B4=ED=9A=A8=ED=99=94=EB=90=98=EA=B3=A0 =EA=B7=B8 =EA= =B0=92=EC=9D=80 +=EB=8B=A4=EC=8B=9C =EC=9D=BD=ED=98=80=EC=A7=91=EB=8B=88=EB=8B=A4: + + : : +-------+ + +-------+ | | + --->| B->2 |------>| | + +-------+ | CPU 2 | + : :DIVIDE | | + +-------+ | | + =EB=82=98=EB=88=84=EA=B8=B0 =ED=95=98=EB=8A=90=EB=9D=BC =EB=B0=94=EC=81= =9C ---> --->| A->0 |~~~~ | | + CPU =EB=8A=94 A =EC=9D=98 LOAD =EB=A5=BC +-------= + ~ | | + =EC=98=88=EC=B8=A1=ED=95=9C=EB=8B=A4 := : ~ | | + : :DIVIDE | | + : : ~ | | + : : ~ | | + rrrrrrrrrrrrrrrrr | | + +-------+ | | + =EC=98=88=EC=B8=A1=EC=84=B1 =EB=8F=99=EC=9E=91=EC=9D=80 =EB=AC=B4=ED=9A= =A8=ED=99=94 =EB=90=98=EA=B3=A0 ---> --->| A->1 |------>| | + =EC=97=85=EB=8D=B0=EC=9D=B4=ED=8A=B8=EB=90=9C =EA=B0=92=EC=9D=B4 =EB=8B= =A4=EC=8B=9C =EC=9D=BD=ED=98=80=EC=A7=84=EB=8B=A4 +-------+ = | | + : : +-------+ + + +=EC=9D=B4=ED=96=89=EC=84=B1 +------ + +=EC=9D=B4=ED=96=89=EC=84=B1(transitivity)=EC=9D=80 =EC=8B=A4=EC=A0=9C=EC= =9D=98 =EC=BB=B4=ED=93=A8=ED=84=B0 =EC=8B=9C=EC=8A=A4=ED=85=9C=EC=97=90= =EC=84=9C =ED=95=AD=EC=83=81 =EC=A0=9C=EA=B3=B5=EB=90=98=EC=A7=80=EB=8A= =94 =EC=95=8A=EB=8A=94, =EC=88=9C=EC=84=9C +=EB=A7=9E=EC=B6=94=EA=B8=B0=EC=97=90 =EB=8C=80=ED=95=9C =EC=83=81=EB=8B= =B9=ED=9E=88 =EC=A7=81=EA=B4=80=EC=A0=81=EC=9D=B8 =EA=B0=9C=EB=85=90=EC= =9E=85=EB=8B=88=EB=8B=A4. =EB=8B=A4=EC=9D=8C=EC=9D=98 =EC=98=88=EA=B0=80= =EC=9D=B4=ED=96=89=EC=84=B1=EC=9D=84 =EB=B3=B4=EC=97=AC=EC=A4=8D=EB=8B= =88=EB=8B=A4: + + CPU 1 CPU 2 CPU 3 + =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D + { X =3D 0, Y =3D 0 } + STORE X=3D1 LOAD X STORE Y=3D1 + <=EB=B2=94=EC=9A=A9 =EB=B0=B0=EB=A6=AC=EC=96=B4> <=EB=B2=94=EC=9A= =A9 =EB=B0=B0=EB=A6=AC=EC=96=B4> + LOAD Y LOAD X + +CPU 2 =EC=9D=98 X =EB=A1=9C=EB=93=9C=EA=B0=80 1=EC=9D=84 =EB=A6=AC=ED=84= =B4=ED=96=88=EA=B3=A0 Y =EB=A1=9C=EB=93=9C=EA=B0=80 0=EC=9D=84 =EB=A6=AC= =ED=84=B4=ED=96=88=EB=8B=A4=EA=B3=A0 =ED=95=B4=EB=B4=85=EC=8B=9C=EB=8B=A4= =2E =EC=9D=B4=EB=8A=94 CPU 2 =EC=9D=98 +X =EB=A1=9C=EB=93=9C=EA=B0=80 CPU 1 =EC=9D=98 X =EC=8A=A4=ED=86=A0=EC=96= =B4 =EB=92=A4=EC=97=90 =EC=9D=B4=EB=A3=A8=EC=96=B4=EC=A1=8C=EA=B3=A0 CP= U 2 =EC=9D=98 Y =EB=A1=9C=EB=93=9C=EB=8A=94 CPU 3 =EC=9D=98 Y =EC=8A=A4= =ED=86=A0=EC=96=B4 +=EC=A0=84=EC=97=90 =EC=9D=B4=EB=A3=A8=EC=96=B4=EC=A1=8C=EC=9D=8C=EC=9D= =84 =EC=9D=98=EB=AF=B8=ED=95=A9=EB=8B=88=EB=8B=A4. =EA=B7=B8=EB=9F=BC = "CPU 3 =EC=9D=98 X =EB=A1=9C=EB=93=9C=EB=8A=94 0=EC=9D=84 =EB=A6=AC=ED=84= =B4=ED=95=A0 =EC=88=98 =EC=9E=88=EB=82=98=EC=9A=94?" + +CPU 2 =EC=9D=98 X =EB=A1=9C=EB=93=9C=EB=8A=94 CPU 1 =EC=9D=98 =EC=8A=A4= =ED=86=A0=EC=96=B4 =ED=9B=84=EC=97=90 =EC=9D=B4=EB=A3=A8=EC=96=B4=EC=A1= =8C=EC=9C=BC=EB=8B=88, CPU 3 =EC=9D=98 X =EB=A1=9C=EB=93=9C=EB=8A=94 1=EC= =9D=84 +=EB=A6=AC=ED=84=B4=ED=95=98=EB=8A=94=EA=B2=8C =EC=9E=90=EC=97=B0=EC=8A= =A4=EB=9F=BD=EC=8A=B5=EB=8B=88=EB=8B=A4. =EC=9D=B4=EB=9F=B0 =EC=83=9D=EA= =B0=81=EC=9D=B4 =EC=9D=B4=ED=96=89=EC=84=B1=EC=9D=98 =ED=95=9C =EC=98=88= =EC=9E=85=EB=8B=88=EB=8B=A4: CPU A =EC=97=90=EC=84=9C =EC=8B=A4=ED=96=89= =EB=90=9C +=EB=A1=9C=EB=93=9C=EA=B0=80 CPU B =EC=97=90=EC=84=9C=EC=9D=98 =EA=B0=99= =EC=9D=80 =EB=B3=80=EC=88=98=EC=97=90 =EB=8C=80=ED=95=9C =EB=A1=9C=EB=93= =9C=EB=A5=BC =EB=92=A4=EB=94=B0=EB=A5=B8=EB=8B=A4=EB=A9=B4, CPU A =EC=9D= =98 =EB=A1=9C=EB=93=9C=EB=8A=94 CPU B +=EC=9D=98 =EB=A1=9C=EB=93=9C=EA=B0=80 =EB=82=B4=EB=86=93=EC=9D=80 =EA=B0= =92=EA=B3=BC =EA=B0=99=EA=B1=B0=EB=82=98 =EA=B7=B8 =ED=9B=84=EC=9D=98 =EA= =B0=92=EC=9D=84 =EB=82=B4=EB=86=93=EC=95=84=EC=95=BC =ED=95=A9=EB=8B=88= =EB=8B=A4. + +=EB=A6=AC=EB=88=85=EC=8A=A4 =EC=BB=A4=EB=84=90=EC=97=90=EC=84=9C =EB=B2= =94=EC=9A=A9 =EB=B0=B0=EB=A6=AC=EC=96=B4=EC=9D=98 =EC=82=AC=EC=9A=A9=EC= =9D=80 =EC=9D=B4=ED=96=89=EC=84=B1=EC=9D=84 =EB=B3=B4=EC=9E=A5=ED=95=A9= =EB=8B=88=EB=8B=A4. =EB=94=B0=EB=9D=BC=EC=84=9C, =EC=95=9E=EC=9D=98 =EC= =98=88=EC=97=90=EC=84=9C +CPU 2 =EC=9D=98 X =EB=A1=9C=EB=93=9C=EA=B0=80 1=EC=9D=84, Y =EB=A1=9C=EB= =93=9C=EB=8A=94 0=EC=9D=84 =EB=A6=AC=ED=84=B4=ED=96=88=EB=8B=A4=EB=A9=B4= , CPU 3 =EC=9D=98 X =EB=A1=9C=EB=93=9C=EB=8A=94 =EB=B0=98=EB=93=9C=EC=8B= =9C 1=EC=9D=84 +=EB=A6=AC=ED=84=B4=ED=95=A9=EB=8B=88=EB=8B=A4. + +=ED=95=98=EC=A7=80=EB=A7=8C, =EC=9D=BD=EA=B8=B0=EB=82=98 =EC=93=B0=EA=B8= =B0 =EB=B0=B0=EB=A6=AC=EC=96=B4=EC=97=90 =EB=8C=80=ED=95=B4=EC=84=9C=EB= =8A=94 =EC=9D=B4=ED=96=89=EC=84=B1=EC=9D=B4 =EB=B3=B4=EC=9E=A5=EB=90=98= =EC=A7=80 -=EC=95=8A=EC=8A=B5=EB=8B=88=EB=8B=A4-. =EC=98=88=EB=A5=BC =EB= =93=A4=EC=96=B4, +=EC=95=9E=EC=9D=98 =EC=98=88=EC=97=90=EC=84=9C CPU 2 =EC=9D=98 =EB=B2=94= =EC=9A=A9 =EB=B0=B0=EB=A6=AC=EC=96=B4=EA=B0=80 =EC=95=84=EB=9E=98=EC=B2= =98=EB=9F=BC =EC=9D=BD=EA=B8=B0 =EB=B0=B0=EB=A6=AC=EC=96=B4=EB=A1=9C =EB= =B0=94=EB=80=90 =EA=B2=BD=EC=9A=B0=EB=A5=BC =EC=83=9D=EA=B0=81=ED=95=B4 +=EB=B4=85=EC=8B=9C=EB=8B=A4: + + CPU 1 CPU 2 CPU 3 + =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D = =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D + { X =3D 0, Y =3D 0 } + STORE X=3D1 LOAD X STORE Y=3D1 + <=EC=9D=BD=EA=B8=B0 =EB=B0=B0=EB=A6=AC=EC=96=B4> <=EB=B2=94=EC=9A= =A9 =EB=B0=B0=EB=A6=AC=EC=96=B4> + LOAD Y LOAD X + +=EC=9D=B4 =EC=BD=94=EB=93=9C=EB=8A=94 =EC=9D=B4=ED=96=89=EC=84=B1=EC=9D= =84 =EA=B0=96=EC=A7=80 =EC=95=8A=EC=8A=B5=EB=8B=88=EB=8B=A4: =EC=9D=B4 = =EC=98=88=EC=97=90=EC=84=9C=EB=8A=94, CPU 2 =EC=9D=98 X =EB=A1=9C=EB=93= =9C=EA=B0=80 1=EC=9D=84 +=EB=A6=AC=ED=84=B4=ED=95=98=EA=B3=A0, Y =EB=A1=9C=EB=93=9C=EB=8A=94 0=EC= =9D=84 =EB=A6=AC=ED=84=B4=ED=95=98=EC=A7=80=EB=A7=8C CPU 3 =EC=9D=98 X = =EB=A1=9C=EB=93=9C=EA=B0=80 0=EC=9D=84 =EB=A6=AC=ED=84=B4=ED=95=98=EB=8A= =94 =EA=B2=83=EB=8F=84 =EC=99=84=EC=A0=84=ED=9E=88 +=ED=95=A9=EB=B2=95=EC=A0=81=EC=9E=85=EB=8B=88=EB=8B=A4. + +CPU 2 =EC=9D=98 =EC=9D=BD=EA=B8=B0 =EB=B0=B0=EB=A6=AC=EC=96=B4=EA=B0=80= =EC=9E=90=EC=8B=A0=EC=9D=98 =EC=9D=BD=EA=B8=B0=EB=8A=94 =EC=88=9C=EC=84= =9C=EB=A5=BC =EB=A7=9E=EC=B6=B0=EC=A4=98=EB=8F=84, CPU 1 =EC=9D=98 =EC=8A= =A4=ED=86=A0=EC=96=B4=EC=99=80=EC=9D=98 +=EC=88=9C=EC=84=9C=EB=A5=BC =EB=A7=9E=EC=B6=B0=EC=A4=80=EB=8B=A4=EA=B3= =A0=EB=8A=94 =EB=B3=B4=EC=9E=A5=ED=95=A0 =EC=88=98 =EC=97=86=EB=8B=A4=EB= =8A=94=EA=B2=8C =ED=95=B5=EC=8B=AC=EC=9E=85=EB=8B=88=EB=8B=A4. =EB=94=B0= =EB=9D=BC=EC=84=9C, CPU 1 =EA=B3=BC CPU 2 =EA=B0=80 +=EB=B2=84=ED=8D=BC=EB=82=98 =EC=BA=90=EC=8B=9C=EB=A5=BC =EA=B3=B5=EC=9C= =A0=ED=95=98=EB=8A=94 =EC=8B=9C=EC=8A=A4=ED=85=9C=EC=97=90=EC=84=9C =EC= =9D=B4 =EC=98=88=EC=A0=9C =EC=BD=94=EB=93=9C=EA=B0=80 =EC=8B=A4=ED=96=89= =EB=90=9C=EB=8B=A4=EB=A9=B4, CPU 2 =EB=8A=94 CPU 1 =EC=9D=B4 +=EC=93=B4 =EA=B0=92=EC=97=90 =EC=A2=80 =EB=B9=A8=EB=A6=AC =EC=A0=91=EA= =B7=BC=ED=95=A0 =EC=88=98 =EC=9E=88=EC=9D=84 =EA=B2=83=EC=9E=85=EB=8B=88= =EB=8B=A4. =EB=94=B0=EB=9D=BC=EC=84=9C CPU 1 =EA=B3=BC CPU 2 =EC=9D=98= =EC=A0=91=EA=B7=BC=EC=9C=BC=EB=A1=9C +=EC=A1=B0=ED=95=A9=EB=90=9C =EC=88=9C=EC=84=9C=EB=A5=BC =EB=AA=A8=EB=93= =A0 CPU =EA=B0=80 =EB=8F=99=EC=9D=98=ED=95=A0 =EC=88=98 =EC=9E=88=EB=8F= =84=EB=A1=9D =ED=95=98=EA=B8=B0 =EC=9C=84=ED=95=B4 =EB=B2=94=EC=9A=A9 =EB= =B0=B0=EB=A6=AC=EC=96=B4=EA=B0=80 =ED=95=84=EC=9A=94=ED=95=A9=EB=8B=88=EB= =8B=A4. + +=EB=B2=94=EC=9A=A9 =EB=B0=B0=EB=A6=AC=EC=96=B4=EB=8A=94 "=EA=B8=80=EB=A1= =9C=EB=B2=8C =EC=9D=B4=ED=96=89=EC=84=B1"=EC=9D=84 =EC=A0=9C=EA=B3=B5=ED= =95=B4=EC=84=9C, =EB=AA=A8=EB=93=A0 CPU =EB=93=A4=EC=9D=B4 =EC=98=A4=ED= =8D=BC=EB=A0=88=EC=9D=B4=EC=85=98=EB=93=A4=EC=9D=98 =EC=88=9C=EC=84=9C=EC= =97=90 +=EB=8F=99=EC=9D=98=ED=95=98=EA=B2=8C =ED=95=A0 =EA=B2=83=EC=9E=85=EB=8B= =88=EB=8B=A4. =EB=B0=98=EB=A9=B4, release-acquire =EC=A1=B0=ED=95=A9=EC= =9D=80 "=EB=A1=9C=EC=BB=AC =EC=9D=B4=ED=96=89=EC=84=B1" =EB=A7=8C=EC=9D= =84 +=EC=A0=9C=EA=B3=B5=ED=95=B4=EC=84=9C, =ED=95=B4=EB=8B=B9 =EC=A1=B0=ED=95= =A9=EC=9D=B4 =EC=82=AC=EC=9A=A9=EB=90=9C CPU =EB=93=A4=EB=A7=8C=EC=9D=B4= =ED=95=B4=EB=8B=B9 =EC=95=A1=EC=84=B8=EC=8A=A4=EB=93=A4=EC=9D=98 =EC=A1= =B0=ED=95=A9=EB=90=9C =EC=88=9C=EC=84=9C=EC=97=90 =EB=8F=99=EC=9D=98=ED= =95=A8=EC=9D=B4 +=EB=B3=B4=EC=9E=A5=EB=90=A9=EB=8B=88=EB=8B=A4. =EC=98=88=EB=A5=BC =EB= =93=A4=EC=96=B4, =EC=A1=B4=EA=B2=BD=EC=8A=A4=EB=9F=B0 Herman Hollerith = =EC=9D=98 C =EC=BD=94=EB=93=9C=EB=A1=9C =EB=B3=B4=EB=A9=B4: + + int u, v, x, y, z; + + void cpu0(void) + { + r0 =3D smp_load_acquire(&x); + WRITE_ONCE(u, 1); + smp_store_release(&y, 1); + } + + void cpu1(void) + { + r1 =3D smp_load_acquire(&y); + r4 =3D READ_ONCE(v); + r5 =3D READ_ONCE(u); + smp_store_release(&z, 1); + } + + void cpu2(void) + { + r2 =3D smp_load_acquire(&z); + smp_store_release(&x, 1); + } + + void cpu3(void) + { + WRITE_ONCE(v, 1); + smp_mb(); + r3 =3D READ_ONCE(u); + } + +cpu0(), cpu1(), =EA=B7=B8=EB=A6=AC=EA=B3=A0 cpu2() =EB=8A=94 smp_store= _release()/smp_load_acquire() =EC=8C=8D=EC=9D=98 +=EC=97=B0=EA=B2=B0=EC=9D=84 =ED=86=B5=ED=95=9C =EB=A1=9C=EC=BB=AC =EC=9D= =B4=ED=96=89=EC=84=B1=EC=97=90 =EB=8F=99=EC=B0=B8=ED=95=98=EA=B3=A0 =EC= =9E=88=EC=9C=BC=EB=AF=80=EB=A1=9C, =EB=8B=A4=EC=9D=8C=EA=B3=BC =EA=B0=99= =EC=9D=80 =EA=B2=B0=EA=B3=BC=EB=8A=94 =EB=82=98=EC=98=A4=EC=A7=80 =EC=95= =8A=EC=9D=84 +=EA=B2=81=EB=8B=88=EB=8B=A4: + + r0 =3D=3D 1 && r1 =3D=3D 1 && r2 =3D=3D 1 + +=EB=8D=94 =EB=82=98=EC=95=84=EA=B0=80=EC=84=9C, cpu0() =EC=99=80 cpu1(= ) =EC=82=AC=EC=9D=B4=EC=9D=98 release-acquire =EA=B4=80=EA=B3=84=EB=A1=9C= =EC=9D=B8=ED=95=B4, cpu1() =EC=9D=80 +cpu0() =EC=9D=98 =EC=93=B0=EA=B8=B0=EB=A5=BC =EB=B4=90=EC=95=BC=EB=A7=8C= =ED=95=98=EB=AF=80=EB=A1=9C, =EB=8B=A4=EC=9D=8C=EA=B3=BC =EA=B0=99=EC=9D= =80 =EA=B2=B0=EA=B3=BC=EB=8F=84 =EC=97=86=EC=9D=84 =EA=B2=81=EB=8B=88=EB= =8B=A4: + + r1 =3D=3D 1 && r5 =3D=3D 0 + +=ED=95=98=EC=A7=80=EB=A7=8C, release-acquire =ED=83=80=EB=8F=99=EC=84=B1= =EC=9D=80 =EB=8F=99=EC=B0=B8=ED=95=9C CPU =EB=93=A4=EC=97=90=EB=A7=8C =EC= =A0=81=EC=9A=A9=EB=90=98=EB=AF=80=EB=A1=9C cpu3() =EC=97=90=EB=8A=94 +=EC=A0=81=EC=9A=A9=EB=90=98=EC=A7=80 =EC=95=8A=EC=8A=B5=EB=8B=88=EB=8B= =A4. =EB=94=B0=EB=9D=BC=EC=84=9C, =EB=8B=A4=EC=9D=8C=EA=B3=BC =EA=B0=99= =EC=9D=80 =EA=B2=B0=EA=B3=BC=EA=B0=80 =EA=B0=80=EB=8A=A5=ED=95=A9=EB=8B= =88=EB=8B=A4: + + r0 =3D=3D 0 && r1 =3D=3D 1 && r2 =3D=3D 1 && r3 =3D=3D 0 && r4 =3D=3D= 0 + +=EB=B9=84=EC=8A=B7=ED=95=98=EA=B2=8C, =EB=8B=A4=EC=9D=8C=EA=B3=BC =EA=B0= =99=EC=9D=80 =EA=B2=B0=EA=B3=BC=EB=8F=84 =EA=B0=80=EB=8A=A5=ED=95=A9=EB= =8B=88=EB=8B=A4: + + r0 =3D=3D 0 && r1 =3D=3D 1 && r2 =3D=3D 1 && r3 =3D=3D 0 && r4 =3D=3D= 0 && r5 =3D=3D 1 + +cpu0(), cpu1(), =EA=B7=B8=EB=A6=AC=EA=B3=A0 cpu2() =EB=8A=94 =EA=B7=B8= =EB=93=A4=EC=9D=98 =EC=9D=BD=EA=B8=B0=EC=99=80 =EC=93=B0=EA=B8=B0=EB=A5= =BC =EC=88=9C=EC=84=9C=EB=8C=80=EB=A1=9C =EB=B3=B4=EA=B2=8C =EB=90=98=EC= =A7=80=EB=A7=8C, +release-acquire =EC=B2=B4=EC=9D=B8=EC=97=90 =EA=B4=80=EC=97=AC=EB=90=98= =EC=A7=80 =EC=95=8A=EC=9D=80 CPU =EB=93=A4=EC=9D=80 =EA=B7=B8 =EC=88=9C= =EC=84=9C=EC=97=90 =EC=9D=B4=EA=B2=AC=EC=9D=84 =EA=B0=80=EC=A7=88 =EC=88= =98 +=EC=9E=88=EC=8A=B5=EB=8B=88=EB=8B=A4. =EC=9D=B4=EB=9F=B0 =EC=9D=B4=EA= =B2=AC=EC=9D=80 smp_load_acquire() =EC=99=80 smp_store_release() =EC=9D= =98 =EA=B5=AC=ED=98=84=EC=97=90 +=EC=82=AC=EC=9A=A9=EB=90=98=EB=8A=94 =EC=99=84=ED=99=94=EB=90=9C =EB=A9= =94=EB=AA=A8=EB=A6=AC =EB=B0=B0=EB=A6=AC=EC=96=B4 =EC=9D=B8=EC=8A=A4=ED= =8A=B8=EB=9F=AD=EC=85=98=EB=93=A4=EC=9D=80 =ED=95=AD=EC=83=81 =EB=B0=B0= =EB=A6=AC=EC=96=B4 =EC=95=9E=EC=9D=98 =EC=8A=A4=ED=86=A0=EC=96=B4=EB=93= =A4=EC=9D=84 =EB=92=A4=EC=9D=98 +=EB=A1=9C=EB=93=9C=EB=93=A4=EC=97=90 =EC=95=9E=EC=84=B8=EC=9A=B8 =ED=95= =84=EC=9A=94=EB=8A=94 =EC=97=86=EB=8B=A4=EB=8A=94 =EC=82=AC=EC=8B=A4=EC= =97=90=EC=84=9C =EA=B8=B0=EC=9D=B8=ED=95=A9=EB=8B=88=EB=8B=A4. =EC=9D=B4= =EB=A7=90=EC=9D=80 cpu3() =EB=8A=94 cpu0() =EC=9D=98 +u =EB=A1=9C=EC=9D=98 =EC=8A=A4=ED=86=A0=EC=96=B4=EB=A5=BC cpu1() =EC=9D= =98 v =EB=A1=9C=EB=B6=80=ED=84=B0=EC=9D=98 =EB=A1=9C=EB=93=9C =EB=92=A4= =EC=97=90 =EC=9D=BC=EC=96=B4=EB=82=9C =EA=B2=83=EC=9C=BC=EB=A1=9C =EB=B3= =BC =EC=88=98 =EC=9E=88=EB=8B=A4=EB=8A=94 +=EB=9C=BB=EC=9E=85=EB=8B=88=EB=8B=A4, cpu0() =EC=99=80 cpu1() =EC=9D=80= =EC=9D=B4 =EB=91=90 =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85=98=EC=9D= =B4 =EC=9D=98=EB=8F=84=EB=90=9C =EC=88=9C=EC=84=9C=EB=8C=80=EB=A1=9C =EC= =9D=BC=EC=96=B4=EB=82=AC=EC=9D=8C=EC=97=90 +=EB=AA=A8=EB=91=90 =EB=8F=99=EC=9D=98=ED=95=98=EB=8A=94=EB=8D=B0=EB=8F= =84 =EB=A7=90=EC=9E=85=EB=8B=88=EB=8B=A4. + +=ED=95=98=EC=A7=80=EB=A7=8C, smp_load_acquire() =EB=8A=94 =EB=A7=88=EC= =88=A0=EC=9D=B4 =EC=95=84=EB=8B=98=EC=9D=84 =EB=AA=85=EC=8B=AC=ED=95=98= =EC=8B=9C=EA=B8=B0 =EB=B0=94=EB=9E=8D=EB=8B=88=EB=8B=A4. =EA=B5=AC=EC=B2= =B4=EC=A0=81=EC=9C=BC=EB=A1=9C, +=EC=9D=B4 =ED=95=A8=EC=88=98=EB=8A=94 =EB=8B=A8=EC=88=9C=ED=9E=88 =EC=88= =9C=EC=84=9C =EA=B7=9C=EC=B9=99=EC=9D=84 =EC=A7=80=ED=82=A4=EB=A9=B0 =EC= =9D=B8=EC=9E=90=EB=A1=9C=EB=B6=80=ED=84=B0=EC=9D=98 =EC=9D=BD=EA=B8=B0=EB= =A5=BC =EC=88=98=ED=96=89=ED=95=A9=EB=8B=88=EB=8B=A4. =EC=9D=B4=EA=B2=83= =EC=9D=80 +=EC=96=B4=EB=96=A4 =ED=8A=B9=EC=A0=95=ED=95=9C =EA=B0=92=EC=9D=B4 =EC=9D= =BD=ED=9E=90 =EA=B2=83=EC=9D=B8=EC=A7=80=EB=8A=94 =EB=B3=B4=EC=9E=A5=ED= =95=98=EC=A7=80 -=EC=95=8A=EC=8A=B5=EB=8B=88=EB=8B=A4-. =EB=94=B0=EB=9D= =BC=EC=84=9C, =EB=8B=A4=EC=9D=8C=EA=B3=BC =EA=B0=99=EC=9D=80 =EA=B2=B0=EA= =B3=BC=EB=8F=84 +=EA=B0=80=EB=8A=A5=ED=95=A9=EB=8B=88=EB=8B=A4: + + r0 =3D=3D 0 && r1 =3D=3D 0 && r2 =3D=3D 0 && r5 =3D=3D 0 + +=EC=9D=B4=EB=9F=B0 =EA=B2=B0=EA=B3=BC=EB=8A=94 =EC=96=B4=EB=96=A4 =EA=B2= =83=EB=8F=84 =EC=9E=AC=EB=B0=B0=EC=B9=98 =EB=90=98=EC=A7=80 =EC=95=8A=EB= =8A=94, =EC=88=9C=EC=B0=A8=EC=A0=81 =EC=9D=BC=EA=B4=80=EC=84=B1=EC=9D=84= =EA=B0=80=EC=A7=84 =EA=B0=80=EC=83=81=EC=9D=98 +=EC=8B=9C=EC=8A=A4=ED=85=9C=EC=97=90=EC=84=9C=EB=8F=84 =EC=9D=BC=EC=96= =B4=EB=82=A0 =EC=88=98 =EC=9E=88=EC=9D=8C=EC=9D=84 =EA=B8=B0=EC=96=B5=ED= =95=B4 =EB=91=90=EC=8B=9C=EA=B8=B0 =EB=B0=94=EB=9E=8D=EB=8B=88=EB=8B=A4= =2E + +=EB=8B=A4=EC=8B=9C =EB=A7=90=ED=95=98=EC=A7=80=EB=A7=8C, =EB=8B=B9=EC=8B= =A0=EC=9D=98 =EC=BD=94=EB=93=9C=EA=B0=80 =EA=B8=80=EB=A1=9C=EB=B2=8C =EC= =9D=B4=ED=96=89=EC=84=B1=EC=9D=84 =ED=95=84=EC=9A=94=EB=A1=9C =ED=95=9C= =EB=8B=A4=EB=A9=B4, =EB=B2=94=EC=9A=A9 =EB=B0=B0=EB=A6=AC=EC=96=B4=EB=A5= =BC +=EC=82=AC=EC=9A=A9=ED=95=98=EC=8B=AD=EC=8B=9C=EC=98=A4. + + +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D +=EB=AA=85=EC=8B=9C=EC=A0=81 =EC=BB=A4=EB=84=90 =EB=B0=B0=EB=A6=AC=EC=96= =B4 +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D + +=EB=A6=AC=EB=88=85=EC=8A=A4 =EC=BB=A4=EB=84=90=EC=9D=80 =EC=84=9C=EB=A1= =9C =EB=8B=A4=EB=A5=B8 =EB=8B=A8=EA=B3=84=EC=97=90=EC=84=9C =EB=8F=99=EC= =9E=91=ED=95=98=EB=8A=94 =EB=8B=A4=EC=96=91=ED=95=9C =EB=B0=B0=EB=A6=AC= =EC=96=B4=EB=93=A4=EC=9D=84 =EA=B0=80=EC=A7=80=EA=B3=A0 =EC=9E=88=EC=8A= =B5=EB=8B=88=EB=8B=A4: + + (*) =EC=BB=B4=ED=8C=8C=EC=9D=BC=EB=9F=AC =EB=B0=B0=EB=A6=AC=EC=96=B4= =2E + + (*) CPU =EB=A9=94=EB=AA=A8=EB=A6=AC =EB=B0=B0=EB=A6=AC=EC=96=B4. + + (*) MMIO =EC=93=B0=EA=B8=B0 =EB=B0=B0=EB=A6=AC=EC=96=B4. + + +=EC=BB=B4=ED=8C=8C=EC=9D=BC=EB=9F=AC =EB=B0=B0=EB=A6=AC=EC=96=B4 +--------------- + +=EB=A6=AC=EB=88=85=EC=8A=A4 =EC=BB=A4=EB=84=90=EC=9D=80 =EC=BB=B4=ED=8C= =8C=EC=9D=BC=EB=9F=AC=EA=B0=80 =EB=A9=94=EB=AA=A8=EB=A6=AC =EC=95=A1=EC= =84=B8=EC=8A=A4=EB=A5=BC =EC=9E=AC=EB=B0=B0=EC=B9=98 =ED=95=98=EB=8A=94= =EA=B2=83=EC=9D=84 =EB=A7=89=EC=95=84=EC=A3=BC=EB=8A=94 =EB=AA=85=EC=8B= =9C=EC=A0=81=EC=9D=B8 +=EC=BB=B4=ED=8C=8C=EC=9D=BC=EB=9F=AC =EB=B0=B0=EB=A6=AC=EC=96=B4=EB=A5= =BC =EA=B0=80=EC=A7=80=EA=B3=A0 =EC=9E=88=EC=8A=B5=EB=8B=88=EB=8B=A4: + + barrier(); + +=EC=9D=B4=EA=B1=B4 =EB=B2=94=EC=9A=A9 =EB=B0=B0=EB=A6=AC=EC=96=B4=EC=9E= =85=EB=8B=88=EB=8B=A4 -- barrier() =EC=9D=98 =EC=9D=BD=EA=B8=B0-=EC=9D=BD= =EA=B8=B0 =EB=82=98 =EC=93=B0=EA=B8=B0-=EC=93=B0=EA=B8=B0 =EB=B3=80=EC=A2= =85=EC=9D=80 =EC=97=86=EC=8A=B5=EB=8B=88=EB=8B=A4. +=ED=95=98=EC=A7=80=EB=A7=8C, READ_ONCE() =EC=99=80 WRITE_ONCE() =EB=8A= =94 =ED=8A=B9=EC=A0=95 =EC=95=A1=EC=84=B8=EC=8A=A4=EB=93=A4=EC=97=90 =EB= =8C=80=ED=95=B4=EC=84=9C=EB=A7=8C =EB=8F=99=EC=9E=91=ED=95=98=EB=8A=94 +barrier() =EC=9D=98 =EC=99=84=ED=99=94=EB=90=9C =ED=98=95=ED=83=9C=EB=A1= =9C =EB=B3=BC =EC=88=98 =EC=9E=88=EC=8A=B5=EB=8B=88=EB=8B=A4. + +barrier() =ED=95=A8=EC=88=98=EB=8A=94 =EB=8B=A4=EC=9D=8C=EA=B3=BC =EA=B0= =99=EC=9D=80 =ED=9A=A8=EA=B3=BC=EB=A5=BC =EA=B0=96=EC=8A=B5=EB=8B=88=EB= =8B=A4: + + (*) =EC=BB=B4=ED=8C=8C=EC=9D=BC=EB=9F=AC=EA=B0=80 barrier() =EB=92=A4= =EC=9D=98 =EC=95=A1=EC=84=B8=EC=8A=A4=EB=93=A4=EC=9D=B4 barrier() =EC=95= =9E=EC=9D=98 =EC=95=A1=EC=84=B8=EC=8A=A4=EB=B3=B4=EB=8B=A4 =EC=95=9E=EC= =9C=BC=EB=A1=9C + =EC=9E=AC=EB=B0=B0=EC=B9=98=EB=90=98=EC=A7=80 =EB=AA=BB=ED=95=98=EA= =B2=8C =ED=95=A9=EB=8B=88=EB=8B=A4. =EC=98=88=EB=A5=BC =EB=93=A4=EC=96= =B4, =EC=9D=B8=ED=84=B0=EB=9F=BD=ED=8A=B8 =ED=95=B8=EB=93=A4=EB=9F=AC =EC= =BD=94=EB=93=9C=EC=99=80 =EC=9D=B8=ED=84=B0=EB=9F=BD=ED=8A=B8 =EB=8B=B9= =ED=95=9C + =EC=BD=94=EB=93=9C =EC=82=AC=EC=9D=B4=EC=9D=98 =ED=86=B5=EC=8B=A0= =EC=9D=84 =EC=8B=A0=EC=A4=91=ED=9E=88 =ED=95=98=EA=B8=B0 =EC=9C=84=ED=95= =B4 =EC=82=AC=EC=9A=A9=EB=90=A0 =EC=88=98 =EC=9E=88=EC=8A=B5=EB=8B=88=EB= =8B=A4. + + (*) =EB=A3=A8=ED=94=84=EC=97=90=EC=84=9C, =EC=BB=B4=ED=8C=8C=EC=9D=BC= =EB=9F=AC=EA=B0=80 =EB=A3=A8=ED=94=84 =EC=A1=B0=EA=B1=B4=EC=97=90 =EC=82= =AC=EC=9A=A9=EB=90=9C =EB=B3=80=EC=88=98=EB=A5=BC =EB=A7=A4 =EC=9D=B4=ED= =84=B0=EB=A0=88=EC=9D=B4=EC=85=98=EB=A7=88=EB=8B=A4 + =EB=A9=94=EB=AA=A8=EB=A6=AC=EC=97=90=EC=84=9C =EB=A1=9C=EB=93=9C=ED= =95=98=EC=A7=80 =EC=95=8A=EC=95=84=EB=8F=84 =EB=90=98=EB=8F=84=EB=A1=9D= =EC=B5=9C=EC=A0=81=ED=99=94 =ED=95=98=EB=8A=94=EA=B1=B8 =EB=B0=A9=EC=A7= =80=ED=95=A9=EB=8B=88=EB=8B=A4. + +READ_ONCE() =EC=99=80 WRITE_ONCE() =ED=95=A8=EC=88=98=EB=8A=94 =EC=8B=B1= =EA=B8=80 =EC=93=B0=EB=A0=88=EB=93=9C =EC=BD=94=EB=93=9C=EC=97=90=EC=84= =9C=EB=8A=94 =EB=AC=B8=EC=A0=9C =EC=97=86=EC=A7=80=EB=A7=8C =EB=8F=99=EC= =8B=9C=EC=84=B1=EC=9D=B4 +=EC=9E=88=EB=8A=94 =EC=BD=94=EB=93=9C=EC=97=90=EC=84=9C=EB=8A=94 =EB=AC= =B8=EC=A0=9C=EA=B0=80 =EB=90=A0 =EC=88=98 =EC=9E=88=EB=8A=94 =EB=AA=A8=EB= =93=A0 =EC=B5=9C=EC=A0=81=ED=99=94=EB=A5=BC =EB=A7=89=EC=8A=B5=EB=8B=88= =EB=8B=A4. =EC=9D=B4=EB=9F=B0 =EB=A5=98=EC=9D=98 =EC=B5=9C=EC=A0=81=ED= =99=94=EC=97=90 +=EB=8C=80=ED=95=9C =EC=98=88=EB=A5=BC =EB=AA=87=EA=B0=80=EC=A7=80 =EB=93= =A4=EC=96=B4=EB=B3=B4=EB=A9=B4 =EB=8B=A4=EC=9D=8C=EA=B3=BC =EA=B0=99=EC= =8A=B5=EB=8B=88=EB=8B=A4: + + (*) =EC=BB=B4=ED=8C=8C=EC=9D=BC=EB=9F=AC=EB=8A=94 =EA=B0=99=EC=9D=80 = =EB=B3=80=EC=88=98=EC=97=90 =EB=8C=80=ED=95=9C =EB=A1=9C=EB=93=9C=EC=99= =80 =EC=8A=A4=ED=86=A0=EC=96=B4=EB=A5=BC =EC=9E=AC=EB=B0=B0=EC=B9=98 =ED= =95=A0 =EC=88=98 =EC=9E=88=EA=B3=A0, =EC=96=B4=EB=96=A4 + =EA=B2=BD=EC=9A=B0=EC=97=90=EB=8A=94 CPU=EA=B0=80 =EA=B0=99=EC=9D= =80 =EB=B3=80=EC=88=98=EB=A1=9C=EB=B6=80=ED=84=B0=EC=9D=98 =EB=A1=9C=EB= =93=9C=EB=93=A4=EC=9D=84 =EC=9E=AC=EB=B0=B0=EC=B9=98=ED=95=A0 =EC=88=98= =EB=8F=84 =EC=9E=88=EC=8A=B5=EB=8B=88=EB=8B=A4. =EC=9D=B4=EB=8A=94 + =EB=8B=A4=EC=9D=8C=EC=9D=98 =EC=BD=94=EB=93=9C=EA=B0=80: + + a[0] =3D x; + a[1] =3D x; + + x =EC=9D=98 =EC=98=88=EC=A0=84 =EA=B0=92=EC=9D=B4 a[1] =EC=97=90,= =EC=83=88 =EA=B0=92=EC=9D=B4 a[0] =EC=97=90 =EC=9E=88=EA=B2=8C =ED=95=A0= =EC=88=98 =EC=9E=88=EB=8B=A4=EB=8A=94 =EB=9C=BB=EC=9E=85=EB=8B=88=EB=8B= =A4. + =EC=BB=B4=ED=8C=8C=EC=9D=BC=EB=9F=AC=EC=99=80 CPU=EA=B0=80 =EC=9D= =B4=EB=9F=B0 =EC=9D=BC=EC=9D=84 =EB=AA=BB=ED=95=98=EA=B2=8C =ED=95=98=EB= =A0=A4=EB=A9=B4 =EB=8B=A4=EC=9D=8C=EA=B3=BC =EA=B0=99=EC=9D=B4 =ED=95=B4= =EC=95=BC =ED=95=A9=EB=8B=88=EB=8B=A4: + + a[0] =3D READ_ONCE(x); + a[1] =3D READ_ONCE(x); + + =EC=A6=89, READ_ONCE() =EC=99=80 WRITE_ONCE() =EB=8A=94 =EC=97=AC= =EB=9F=AC CPU =EC=97=90=EC=84=9C =ED=95=98=EB=82=98=EC=9D=98 =EB=B3=80=EC= =88=98=EC=97=90 =EA=B0=80=ED=95=B4=EC=A7=80=EB=8A=94 + =EC=95=A1=EC=84=B8=EC=8A=A4=EB=93=A4=EC=97=90 =EC=BA=90=EC=8B=9C = =EC=9D=BC=EA=B4=80=EC=84=B1=EC=9D=84 =EC=A0=9C=EA=B3=B5=ED=95=A9=EB=8B=88= =EB=8B=A4. + + (*) =EC=BB=B4=ED=8C=8C=EC=9D=BC=EB=9F=AC=EB=8A=94 =EA=B0=99=EC=9D=80 = =EB=B3=80=EC=88=98=EC=97=90 =EB=8C=80=ED=95=9C =EC=97=B0=EC=86=8D=EC=A0= =81=EC=9D=B8 =EB=A1=9C=EB=93=9C=EB=93=A4=EC=9D=84 =EB=B3=91=ED=95=A9=ED= =95=A0 =EC=88=98 =EC=9E=88=EC=8A=B5=EB=8B=88=EB=8B=A4. =EA=B7=B8=EB=9F= =B0 + =EB=B3=91=ED=95=A9 =EC=9E=91=EC=97=85=EC=9C=BC=EB=A1=9C =EC=BB=B4= =ED=8C=8C=EC=9D=BC=EB=9F=AC=EB=8A=94 =EB=8B=A4=EC=9D=8C=EC=9D=98 =EC=BD= =94=EB=93=9C=EB=A5=BC: + + while (tmp =3D a) + do_something_with(tmp); + + =EB=8B=A4=EC=9D=8C=EA=B3=BC =EA=B0=99=EC=9D=B4, =EC=8B=B1=EA=B8=80= =EC=93=B0=EB=A0=88=EB=93=9C =EC=BD=94=EB=93=9C=EC=97=90=EC=84=9C=EB=8A= =94 =EB=A7=90=EC=9D=B4 =EB=90=98=EC=A7=80=EB=A7=8C =EA=B0=9C=EB=B0=9C=EC= =9E=90=EC=9D=98 =EC=9D=98=EB=8F=84=EC=99=80 =EC=A0=84=ED=98=80 =EB=A7=9E= =EC=A7=80 + =EC=95=8A=EB=8A=94 =EB=B0=A9=ED=96=A5=EC=9C=BC=EB=A1=9C "=EC=B5=9C= =EC=A0=81=ED=99=94" =ED=95=A0 =EC=88=98 =EC=9E=88=EC=8A=B5=EB=8B=88=EB=8B= =A4: + + if (tmp =3D a) + for (;;) + do_something_with(tmp); + + =EC=BB=B4=ED=8C=8C=EC=9D=BC=EB=9F=AC=EA=B0=80 =EC=9D=B4=EB=9F=B0 = =EC=A7=93=EC=9D=84 =ED=95=98=EC=A7=80 =EB=AA=BB=ED=95=98=EA=B2=8C =ED=95= =98=EB=A0=A4=EB=A9=B4 READ_ONCE() =EB=A5=BC =EC=82=AC=EC=9A=A9=ED=95=98= =EC=84=B8=EC=9A=94: + + while (tmp =3D READ_ONCE(a)) + do_something_with(tmp); + + (*) =EC=98=88=EC=BB=A8=EB=8C=80 =EB=A0=88=EC=A7=80=EC=8A=A4=ED=84=B0 = =EC=82=AC=EC=9A=A9=EB=9F=89=EC=9D=B4 =EB=A7=8E=EC=95=84 =EC=BB=B4=ED=8C= =8C=EC=9D=BC=EB=9F=AC=EA=B0=80 =EB=AA=A8=EB=93=A0 =EB=8D=B0=EC=9D=B4=ED= =84=B0=EB=A5=BC =EB=A0=88=EC=A7=80=EC=8A=A4=ED=84=B0=EC=97=90 =EB=8B=B4= =EC=9D=84 =EC=88=98 + =EC=97=86=EB=8A=94 =EA=B2=BD=EC=9A=B0, =EC=BB=B4=ED=8C=8C=EC=9D=BC= =EB=9F=AC=EB=8A=94 =EB=B3=80=EC=88=98=EB=A5=BC =EB=8B=A4=EC=8B=9C =EB=A1= =9C=EB=93=9C=ED=95=A0 =EC=88=98 =EC=9E=88=EC=8A=B5=EB=8B=88=EB=8B=A4. = =EB=94=B0=EB=9D=BC=EC=84=9C =EC=BB=B4=ED=8C=8C=EC=9D=BC=EB=9F=AC=EB=8A=94 + =EC=95=9E=EC=9D=98 =EC=98=88=EC=97=90=EC=84=9C =EB=B3=80=EC=88=98= 'tmp' =EC=82=AC=EC=9A=A9=EC=9D=84 =EC=B5=9C=EC=A0=81=ED=99=94=EB=A1=9C= =EC=97=86=EC=95=A0=EB=B2=84=EB=A6=B4 =EC=88=98 =EC=9E=88=EC=8A=B5=EB=8B= =88=EB=8B=A4: + + while (tmp =3D a) + do_something_with(tmp); + + =EC=9D=B4 =EC=BD=94=EB=93=9C=EB=8A=94 =EB=8B=A4=EC=9D=8C=EA=B3=BC= =EA=B0=99=EC=9D=B4 =EC=8B=B1=EA=B8=80 =EC=93=B0=EB=A0=88=EB=93=9C=EC=97= =90=EC=84=9C=EB=8A=94 =EC=99=84=EB=B2=BD=ED=95=98=EC=A7=80=EB=A7=8C =EB= =8F=99=EC=8B=9C=EC=84=B1=EC=9D=B4 =EC=A1=B4=EC=9E=AC=ED=95=98=EB=8A=94 + =EA=B2=BD=EC=9A=B0=EC=97=94 =EC=B9=98=EB=AA=85=EC=A0=81=EC=9D=B8 = =EC=BD=94=EB=93=9C=EB=A1=9C =EB=B0=94=EB=80=94 =EC=88=98 =EC=9E=88=EC=8A= =B5=EB=8B=88=EB=8B=A4: + + while (a) + do_something_with(a); + + =EC=98=88=EB=A5=BC =EB=93=A4=EC=96=B4, =EC=B5=9C=EC=A0=81=ED=99=94= =EB=90=9C =EC=9D=B4 =EC=BD=94=EB=93=9C=EB=8A=94 =EB=B3=80=EC=88=98 a =EA= =B0=80 =EB=8B=A4=EB=A5=B8 CPU =EC=97=90 =EC=9D=98=ED=95=B4 "while" =EB=AC= =B8=EA=B3=BC + do_something_with() =ED=98=B8=EC=B6=9C =EC=82=AC=EC=9D=B4=EC=97=90= =EB=B0=94=EB=80=8C=EC=96=B4 do_something_with() =EC=97=90 0=EC=9D=84 =EB= =84=98=EA=B8=B8 + =EC=88=98=EB=8F=84 =EC=9E=88=EC=8A=B5=EB=8B=88=EB=8B=A4. + + =EC=9D=B4=EB=B2=88=EC=97=90=EB=8F=84, =EC=BB=B4=ED=8C=8C=EC=9D=BC= =EB=9F=AC=EA=B0=80 =EA=B7=B8=EB=9F=B0 =EC=A7=93=EC=9D=84 =ED=95=98=EB=8A= =94=EA=B1=B8 =EB=A7=89=EA=B8=B0 =EC=9C=84=ED=95=B4 READ_ONCE() =EB=A5=BC= =EC=82=AC=EC=9A=A9=ED=95=98=EC=84=B8=EC=9A=94: + + while (tmp =3D READ_ONCE(a)) + do_something_with(tmp); + + =EB=A0=88=EC=A7=80=EC=8A=A4=ED=84=B0=EA=B0=80 =EB=B6=80=EC=A1=B1=ED= =95=9C =EC=83=81=ED=99=A9=EC=9D=84 =EA=B2=AA=EB=8A=94 =EA=B2=BD=EC=9A=B0= , =EC=BB=B4=ED=8C=8C=EC=9D=BC=EB=9F=AC=EB=8A=94 tmp =EB=A5=BC =EC=8A=A4= =ED=83=9D=EC=97=90 =EC=A0=80=EC=9E=A5=ED=95=B4=EB=91=98 =EC=88=98=EB=8F= =84 + =EC=9E=88=EC=8A=B5=EB=8B=88=EB=8B=A4. =EC=BB=B4=ED=8C=8C=EC=9D=BC= =EB=9F=AC=EA=B0=80 =EB=B3=80=EC=88=98=EB=A5=BC =EB=8B=A4=EC=8B=9C =EC=9D= =BD=EC=96=B4=EB=93=A4=EC=9D=B4=EB=8A=94=EA=B1=B4 =EC=9D=B4=EB=A0=87=EA=B2= =8C =EC=A0=80=EC=9E=A5=ED=95=B4=EB=91=90=EA=B3=A0 =ED=9B=84=EC=97=90 =EB= =8B=A4=EC=8B=9C + =EC=9D=BD=EC=96=B4=EB=93=A4=EC=9D=B4=EB=8A=94=EB=8D=B0 =EB=93=9C=EB= =8A=94 =EC=98=A4=EB=B2=84=ED=97=A4=EB=93=9C =EB=95=8C=EB=AC=B8=EC=9E=85= =EB=8B=88=EB=8B=A4. =EA=B7=B8=EB=A0=87=EA=B2=8C =ED=95=98=EB=8A=94=EA=B2= =8C =EC=8B=B1=EA=B8=80 =EC=93=B0=EB=A0=88=EB=93=9C + =EC=BD=94=EB=93=9C=EC=97=90=EC=84=9C=EB=8A=94 =EC=95=88=EC=A0=84=ED= =95=98=EB=AF=80=EB=A1=9C, =EC=95=88=EC=A0=84=ED=95=98=EC=A7=80 =EC=95=8A= =EC=9D=80 =EA=B2=BD=EC=9A=B0=EC=97=90=EB=8A=94 =EC=BB=B4=ED=8C=8C=EC=9D= =BC=EB=9F=AC=EC=97=90=EA=B2=8C =EC=A7=81=EC=A0=91 =EC=95=8C=EB=A0=A4=EC= =A4=98=EC=95=BC + =ED=95=A9=EB=8B=88=EB=8B=A4. + + (*) =EC=BB=B4=ED=8C=8C=EC=9D=BC=EB=9F=AC=EB=8A=94 =EA=B7=B8 =EA=B0=92= =EC=9D=B4 =EB=AC=B4=EC=97=87=EC=9D=BC=EC=A7=80 =EC=95=8C=EA=B3=A0 =EC=9E= =88=EB=8B=A4=EB=A9=B4 =EB=A1=9C=EB=93=9C=EB=A5=BC =EC=95=84=EC=98=88 =EC= =95=88=ED=95=A0 =EC=88=98=EB=8F=84 =EC=9E=88=EC=8A=B5=EB=8B=88=EB=8B=A4= =2E + =EC=98=88=EB=A5=BC =EB=93=A4=EC=96=B4, =EB=8B=A4=EC=9D=8C=EC=9D=98= =EC=BD=94=EB=93=9C=EB=8A=94 =EB=B3=80=EC=88=98 'a' =EC=9D=98 =EA=B0=92= =EC=9D=B4 =ED=95=AD=EC=83=81 0=EC=9E=84=EC=9D=84 =EC=A6=9D=EB=AA=85=ED=95= =A0 =EC=88=98 =EC=9E=88=EB=8B=A4=EB=A9=B4: + + while (tmp =3D a) + do_something_with(tmp); + + =EC=9D=B4=EB=A0=87=EA=B2=8C =EC=B5=9C=EC=A0=81=ED=99=94 =EB=90=98= =EC=96=B4=EB=B2=84=EB=A6=B4 =EC=88=98 =EC=9E=88=EC=8A=B5=EB=8B=88=EB=8B= =A4: + + do { } while (0); + + =EC=9D=B4 =EB=B3=80=ED=99=98=EC=9D=80 =EC=8B=B1=EA=B8=80 =EC=93=B0= =EB=A0=88=EB=93=9C =EC=BD=94=EB=93=9C=EC=97=90=EC=84=9C=EB=8A=94 =EB=8F= =84=EC=9B=80=EC=9D=B4 =EB=90=98=EB=8A=94=EB=8D=B0 =EB=A1=9C=EB=93=9C=EC= =99=80 =EB=B8=8C=EB=9E=9C=EC=B9=98=EB=A5=BC =EC=A0=9C=EA=B1=B0=ED=96=88= =EA=B8=B0 + =EB=95=8C=EB=AC=B8=EC=9E=85=EB=8B=88=EB=8B=A4. =EB=AC=B8=EC=A0=9C= =EB=8A=94 =EC=BB=B4=ED=8C=8C=EC=9D=BC=EB=9F=AC=EA=B0=80 'a' =EC=9D=98 =EA= =B0=92=EC=9D=84 =EC=97=85=EB=8D=B0=EC=9D=B4=ED=8A=B8 =ED=95=98=EB=8A=94= =EA=B1=B4 =ED=98=84=EC=9E=AC=EC=9D=98 CPU =ED=95=98=EB=82=98 + =EB=BF=90=EC=9D=B4=EB=9D=BC=EB=8A=94 =EA=B0=80=EC=A0=95 =EC=9C=84= =EC=97=90=EC=84=9C =EC=A6=9D=EB=AA=85=EC=9D=84 =ED=96=88=EB=8B=A4=EB=8A= =94=EB=8D=B0 =EC=9E=88=EC=8A=B5=EB=8B=88=EB=8B=A4. =EB=A7=8C=EC=95=BD = =EB=B3=80=EC=88=98 'a' =EA=B0=80 =EA=B3=B5=EC=9C=A0=EB=90=98=EC=96=B4 + =EC=9E=88=EB=8B=A4=EB=A9=B4, =EC=BB=B4=ED=8C=8C=EC=9D=BC=EB=9F=AC= =EC=9D=98 =EC=A6=9D=EB=AA=85=EC=9D=80 =ED=8B=80=EB=A6=B0 =EA=B2=83=EC=9D= =B4 =EB=90=A0=EA=B2=81=EB=8B=88=EB=8B=A4. =EC=BB=B4=ED=8C=8C=EC=9D=BC=EB= =9F=AC=EB=8A=94 =EA=B7=B8 =EC=9E=90=EC=8B=A0=EC=9D=B4 + =EC=83=9D=EA=B0=81=ED=95=98=EB=8A=94 =EA=B2=83=EB=A7=8C=ED=81=BC = =EB=A7=8E=EC=9D=80 =EA=B2=83=EC=9D=84 =EC=95=8C=EA=B3=A0 =EC=9E=88=EC=A7= =80 =EB=AA=BB=ED=95=A8=EC=9D=84 =EC=BB=B4=ED=8C=8C=EC=9D=BC=EB=9F=AC=EC= =97=90=EA=B2=8C =EC=95=8C=EB=A6=AC=EA=B8=B0 =EC=9C=84=ED=95=B4 + READ_ONCE() =EB=A5=BC =EC=82=AC=EC=9A=A9=ED=95=98=EC=84=B8=EC=9A=94= : + + while (tmp =3D READ_ONCE(a)) + do_something_with(tmp); + + =ED=95=98=EC=A7=80=EB=A7=8C =EC=BB=B4=ED=8C=8C=EC=9D=BC=EB=9F=AC=EB= =8A=94 READ_ONCE() =EB=92=A4=EC=97=90 =EB=82=98=EC=98=A4=EB=8A=94 =EA=B0= =92=EC=97=90 =EB=8C=80=ED=95=B4=EC=84=9C=EB=8F=84 =EB=88=88=EA=B8=B8=EC= =9D=84 =EB=91=90=EA=B3=A0 =EC=9E=88=EC=9D=8C=EC=9D=84 + =EA=B8=B0=EC=96=B5=ED=95=98=EC=84=B8=EC=9A=94. =EC=98=88=EB=A5=BC= =EB=93=A4=EC=96=B4, =EB=8B=A4=EC=9D=8C=EC=9D=98 =EC=BD=94=EB=93=9C=EC=97= =90=EC=84=9C MAX =EB=8A=94 =EC=A0=84=EC=B2=98=EB=A6=AC=EA=B8=B0 =EB=A7=A4= =ED=81=AC=EB=A1=9C=EB=A1=9C, 1=EC=9D=98 =EA=B0=92=EC=9D=84 + =EA=B0=96=EB=8A=94=EB=8B=A4=EA=B3=A0 =ED=95=B4=EB=B4=85=EC=8B=9C=EB= =8B=A4: + + while ((tmp =3D READ_ONCE(a)) % MAX) + do_something_with(tmp); + + =EC=9D=B4=EB=A0=87=EA=B2=8C =EB=90=98=EB=A9=B4 =EC=BB=B4=ED=8C=8C= =EC=9D=BC=EB=9F=AC=EB=8A=94 MAX =EB=A5=BC =EA=B0=80=EC=A7=80=EA=B3=A0 =EC= =88=98=ED=96=89=EB=90=98=EB=8A=94 "%" =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D= =B4=ED=84=B0=EC=9D=98 =EA=B2=B0=EA=B3=BC=EA=B0=80 =ED=95=AD=EC=83=81 + 0=EC=9D=B4=EB=9D=BC=EB=8A=94 =EA=B2=83=EC=9D=84 =EC=95=8C=EA=B2=8C= =EB=90=98=EA=B3=A0, =EC=BB=B4=ED=8C=8C=EC=9D=BC=EB=9F=AC=EA=B0=80 =EC=BD= =94=EB=93=9C=EB=A5=BC =EC=8B=A4=EC=A7=88=EC=A0=81=EC=9C=BC=EB=A1=9C=EB=8A= =94 =EC=A1=B4=EC=9E=AC=ED=95=98=EC=A7=80 =EC=95=8A=EB=8A=94 + =EA=B2=83=EC=B2=98=EB=9F=BC =EC=B5=9C=EC=A0=81=ED=99=94 =ED=95=98= =EB=8A=94 =EA=B2=83=EC=9D=B4 =ED=97=88=EC=9A=A9=EB=90=98=EC=96=B4 =EB=B2= =84=EB=A6=BD=EB=8B=88=EB=8B=A4. ('a' =EB=B3=80=EC=88=98=EC=9D=98 =EB=A1= =9C=EB=93=9C=EB=8A=94 =EC=97=AC=EC=A0=84=ED=9E=88 + =ED=96=89=ED=95=B4=EC=A7=88 =EA=B2=81=EB=8B=88=EB=8B=A4.) + + (*) =EB=B9=84=EC=8A=B7=ED=95=98=EA=B2=8C, =EC=BB=B4=ED=8C=8C=EC=9D=BC= =EB=9F=AC=EB=8A=94 =EB=B3=80=EC=88=98=EA=B0=80 =EC=A0=80=EC=9E=A5=ED=95= =98=EB=A0=A4 =ED=95=98=EB=8A=94 =EA=B0=92=EC=9D=84 =EC=9D=B4=EB=AF=B8 =EA= =B0=80=EC=A7=80=EA=B3=A0 =EC=9E=88=EB=8B=A4=EB=8A=94 =EA=B2=83=EC=9D=84 + =EC=95=8C=EB=A9=B4 =EC=8A=A4=ED=86=A0=EC=96=B4 =EC=9E=90=EC=B2=B4= =EB=A5=BC =EC=A0=9C=EA=B1=B0=ED=95=A0 =EC=88=98 =EC=9E=88=EC=8A=B5=EB=8B= =88=EB=8B=A4. =EC=9D=B4=EB=B2=88=EC=97=90=EB=8F=84, =EC=BB=B4=ED=8C=8C= =EC=9D=BC=EB=9F=AC=EB=8A=94 =ED=98=84=EC=9E=AC=EC=9D=98 CPU + =EB=A7=8C=EC=9D=B4 =EA=B7=B8 =EB=B3=80=EC=88=98=EC=97=90 =EA=B0=92= =EC=9D=84 =EC=93=B0=EB=8A=94 =EC=98=A4=EB=A1=9C=EC=A7=80 =ED=95=98=EB=82= =98=EC=9D=98 =EC=A1=B4=EC=9E=AC=EB=9D=BC=EA=B3=A0 =EC=83=9D=EA=B0=81=ED= =95=98=EC=97=AC =EA=B3=B5=EC=9C=A0=EB=90=9C =EB=B3=80=EC=88=98=EC=97=90 + =EB=8C=80=ED=95=B4=EC=84=9C=EB=8A=94 =EC=9E=98=EB=AA=BB=EB=90=9C = =EC=9D=BC=EC=9D=84 =ED=95=98=EA=B2=8C =EB=90=A9=EB=8B=88=EB=8B=A4. =EC= =98=88=EB=A5=BC =EB=93=A4=EC=96=B4, =EB=8B=A4=EC=9D=8C=EA=B3=BC =EA=B0=99= =EC=9D=80 =EA=B2=BD=EC=9A=B0=EA=B0=80 =EC=9E=88=EC=9D=84 =EC=88=98 + =EC=9E=88=EC=8A=B5=EB=8B=88=EB=8B=A4: + + a =3D 0; + ... =EB=B3=80=EC=88=98 a =EC=97=90 =EC=8A=A4=ED=86=A0=EC=96=B4=EB=A5=BC= =ED=95=98=EC=A7=80 =EC=95=8A=EB=8A=94 =EC=BD=94=EB=93=9C ... + a =3D 0; + + =EC=BB=B4=ED=8C=8C=EC=9D=BC=EB=9F=AC=EB=8A=94 =EB=B3=80=EC=88=98 = 'a' =EC=9D=98 =EA=B0=92=EC=9D=80 =EC=9D=B4=EB=AF=B8 0=EC=9D=B4=EB=9D=BC= =EB=8A=94 =EA=B2=83=EC=9D=84 =EC=95=8C=EA=B3=A0, =EB=94=B0=EB=9D=BC=EC=84= =9C =EB=91=90=EB=B2=88=EC=A7=B8 =EC=8A=A4=ED=86=A0=EC=96=B4=EB=A5=BC + =EC=82=AD=EC=A0=9C=ED=95=A0 =EA=B2=81=EB=8B=88=EB=8B=A4. =EB=A7=8C= =EC=95=BD =EB=8B=A4=EB=A5=B8 CPU =EA=B0=80 =EA=B7=B8 =EC=82=AC=EC=9D=B4= =EB=B3=80=EC=88=98 'a' =EC=97=90 =EB=8B=A4=EB=A5=B8 =EA=B0=92=EC=9D=84= =EC=8D=BC=EB=8B=A4=EB=A9=B4 + =ED=99=A9=EB=8B=B9=ED=95=9C =EA=B2=B0=EA=B3=BC=EA=B0=80 =EB=82=98= =EC=98=AC =EA=B2=81=EB=8B=88=EB=8B=A4. + + =EC=BB=B4=ED=8C=8C=EC=9D=BC=EB=9F=AC=EA=B0=80 =EA=B7=B8=EB=9F=B0 = =EC=9E=98=EB=AA=BB=EB=90=9C =EC=B6=94=EC=B8=A1=EC=9D=84 =ED=95=98=EC=A7= =80 =EC=95=8A=EB=8F=84=EB=A1=9D WRITE_ONCE() =EB=A5=BC =EC=82=AC=EC=9A=A9= =ED=95=98=EC=84=B8=EC=9A=94: + + WRITE_ONCE(a, 0); + ... =EB=B3=80=EC=88=98 a =EC=97=90 =EC=8A=A4=ED=86=A0=EC=96=B4=EB=A5=BC= =ED=95=98=EC=A7=80 =EC=95=8A=EB=8A=94 =EC=BD=94=EB=93=9C ... + WRITE_ONCE(a, 0); + + (*) =EC=BB=B4=ED=8C=8C=EC=9D=BC=EB=9F=AC=EB=8A=94 =ED=95=98=EC=A7=80 = =EB=A7=90=EB=9D=BC=EA=B3=A0 =ED=95=98=EC=A7=80 =EC=95=8A=EC=9C=BC=EB=A9= =B4 =EB=A9=94=EB=AA=A8=EB=A6=AC =EC=95=A1=EC=84=B8=EC=8A=A4=EB=93=A4=EC= =9D=84 =EC=9E=AC=EB=B0=B0=EC=B9=98 =ED=95=A0 =EC=88=98 + =EC=9E=88=EC=8A=B5=EB=8B=88=EB=8B=A4. =EC=98=88=EB=A5=BC =EB=93=A4= =EC=96=B4, =EB=8B=A4=EC=9D=8C=EC=9D=98 =ED=94=84=EB=A1=9C=EC=84=B8=EC=8A= =A4 =EB=A0=88=EB=B2=A8 =EC=BD=94=EB=93=9C=EC=99=80 =EC=9D=B8=ED=84=B0=EB= =9F=BD=ED=8A=B8 =ED=95=B8=EB=93=A4=EB=9F=AC =EC=82=AC=EC=9D=B4=EC=9D=98 + =EC=83=81=ED=98=B8=EC=9E=91=EC=9A=A9=EC=9D=84 =EC=83=9D=EA=B0=81=ED= =95=B4 =EB=B4=85=EC=8B=9C=EB=8B=A4: + + void process_level(void) + { + msg =3D get_message(); + flag =3D true; + } + + void interrupt_handler(void) + { + if (flag) + process_message(msg); + } + + =EC=9D=B4 =EC=BD=94=EB=93=9C=EC=97=90=EB=8A=94 =EC=BB=B4=ED=8C=8C= =EC=9D=BC=EB=9F=AC=EA=B0=80 process_level() =EC=9D=84 =EB=8B=A4=EC=9D=8C= =EA=B3=BC =EA=B0=99=EC=9D=B4 =EB=B3=80=ED=99=98=ED=95=98=EB=8A=94 =EA=B2= =83=EC=9D=84 =EB=A7=89=EC=9D=84 + =EC=88=98=EB=8B=A8=EC=9D=B4 =EC=97=86=EA=B3=A0, =EC=9D=B4=EB=9F=B0= =EB=B3=80=ED=99=98=EC=9D=80 =EC=8B=B1=EA=B8=80=EC=93=B0=EB=A0=88=EB=93= =9C=EC=97=90=EC=84=9C=EB=9D=BC=EB=A9=B4 =EC=8B=A4=EC=A0=9C=EB=A1=9C =ED= =9B=8C=EB=A5=AD=ED=95=9C =EC=84=A0=ED=83=9D=EC=9D=BC =EC=88=98 + =EC=9E=88=EC=8A=B5=EB=8B=88=EB=8B=A4: + + void process_level(void) + { + flag =3D true; + msg =3D get_message(); + } + + =EC=9D=B4 =EB=91=90=EA=B0=9C=EC=9D=98 =EB=AC=B8=EC=9E=A5 =EC=82=AC= =EC=9D=B4=EC=97=90 =EC=9D=B8=ED=84=B0=EB=9F=BD=ED=8A=B8=EA=B0=80 =EB=B0= =9C=EC=83=9D=ED=95=9C=EB=8B=A4=EB=A9=B4, interrupt_handler() =EB=8A=94 = =EC=9D=98=EB=AF=B8=EB=A5=BC + =EC=95=8C =EC=88=98 =EC=97=86=EB=8A=94 =EB=A9=94=EC=84=B8=EC=A7=80= =EB=A5=BC =EB=B0=9B=EC=9D=84 =EC=88=98=EB=8F=84 =EC=9E=88=EC=8A=B5=EB=8B= =88=EB=8B=A4. =EC=9D=B4=EA=B1=B8 =EB=A7=89=EA=B8=B0 =EC=9C=84=ED=95=B4= =EB=8B=A4=EC=9D=8C=EA=B3=BC =EA=B0=99=EC=9D=B4 + WRITE_ONCE() =EB=A5=BC =EC=82=AC=EC=9A=A9=ED=95=98=EC=84=B8=EC=9A= =94: + + void process_level(void) + { + WRITE_ONCE(msg, get_message()); + WRITE_ONCE(flag, true); + } + + void interrupt_handler(void) + { + if (READ_ONCE(flag)) + process_message(READ_ONCE(msg)); + } + + interrupt_handler() =EC=95=88=EC=97=90=EC=84=9C=EB=8F=84 =EC=A4=91= =EC=B2=A9=EB=90=9C =EC=9D=B8=ED=84=B0=EB=9F=BD=ED=8A=B8=EB=82=98 NMI =EC= =99=80 =EA=B0=99=EC=9D=B4 =EC=9D=B8=ED=84=B0=EB=9F=BD=ED=8A=B8 =ED=95=B8= =EB=93=A4=EB=9F=AC + =EC=97=AD=EC=8B=9C 'flag' =EC=99=80 'msg' =EC=97=90 =EC=A0=91=EA=B7= =BC=ED=95=98=EB=8A=94 =EB=98=90=EB=8B=A4=EB=A5=B8 =EB=AC=B4=EC=96=B8=EA= =B0=80=EC=97=90 =EC=9D=B8=ED=84=B0=EB=9F=BD=ED=8A=B8 =EB=90=A0 =EC=88=98= =EC=9E=88=EB=8B=A4=EB=A9=B4 + READ_ONCE() =EC=99=80 WRITE_ONCE() =EB=A5=BC =EC=82=AC=EC=9A=A9=ED= =95=B4=EC=95=BC =ED=95=A8=EC=9D=84 =EA=B8=B0=EC=96=B5=ED=95=B4 =EB=91=90= =EC=84=B8=EC=9A=94. =EB=A7=8C=EC=95=BD =EA=B7=B8=EB=9F=B0 + =EA=B0=80=EB=8A=A5=EC=84=B1=EC=9D=B4 =EC=97=86=EB=8B=A4=EB=A9=B4,= interrupt_handler() =EC=95=88=EC=97=90=EC=84=9C=EB=8A=94 =EB=AC=B8=EC=84= =9C=ED=99=94 =EB=AA=A9=EC=A0=81=EC=9D=B4 =EC=95=84=EB=8B=88=EB=9D=BC=EB= =A9=B4 + READ_ONCE() =EC=99=80 WRITE_ONCE() =EB=8A=94 =ED=95=84=EC=9A=94=EC= =B9=98 =EC=95=8A=EC=8A=B5=EB=8B=88=EB=8B=A4. (=EA=B7=BC=EB=9E=98=EC=9D= =98 =EB=A6=AC=EB=88=85=EC=8A=A4 =EC=BB=A4=EB=84=90=EC=97=90=EC=84=9C + =EC=A4=91=EC=B2=A9=EB=90=9C =EC=9D=B8=ED=84=B0=EB=9F=BD=ED=8A=B8=EB= =8A=94 =EB=B3=B4=ED=86=B5 =EC=9E=98 =EC=9D=BC=EC=96=B4=EB=82=98=EC=A7=80= =EC=95=8A=EC=9D=8C=EB=8F=84 =EA=B8=B0=EC=96=B5=ED=95=B4 =EB=91=90=EC=84= =B8=EC=9A=94, =EC=8B=A4=EC=A0=9C=EB=A1=9C, =EC=96=B4=EB=96=A4 + =EC=9D=B8=ED=84=B0=EB=9F=BD=ED=8A=B8 =ED=95=B8=EB=93=A4=EB=9F=AC=EA= =B0=80 =EC=9D=B8=ED=84=B0=EB=9F=BD=ED=8A=B8=EA=B0=80 =ED=99=9C=EC=84=B1= =ED=99=94=EB=90=9C =EC=B1=84=EB=A1=9C =EB=A6=AC=ED=84=B4=ED=95=98=EB=A9= =B4 WARN_ONCE() =EA=B0=80 + =EC=8B=A4=ED=96=89=EB=90=A9=EB=8B=88=EB=8B=A4.) + + =EC=BB=B4=ED=8C=8C=EC=9D=BC=EB=9F=AC=EB=8A=94 READ_ONCE() =EC=99=80= WRITE_ONCE() =EB=92=A4=EC=9D=98 READ_ONCE() =EB=82=98 WRITE_ONCE(), + barrier(), =EB=98=90=EB=8A=94 =EB=B9=84=EC=8A=B7=ED=95=9C =EA=B2=83= =EB=93=A4=EC=9D=84 =EB=8B=B4=EA=B3=A0 =EC=9E=88=EC=A7=80 =EC=95=8A=EC=9D= =80 =EC=BD=94=EB=93=9C=EB=A5=BC =EC=9B=80=EC=A7=81=EC=9D=BC =EC=88=98 =EC= =9E=88=EC=9D=84 =EA=B2=83=EC=9C=BC=EB=A1=9C + =EA=B0=80=EC=A0=95=EB=90=98=EC=96=B4=EC=95=BC =ED=95=A9=EB=8B=88=EB= =8B=A4. + + =EC=9D=B4 =ED=9A=A8=EA=B3=BC=EB=8A=94 barrier() =EB=A5=BC =ED=86=B5= =ED=95=B4=EC=84=9C=EB=8F=84 =EB=A7=8C=EB=93=A4 =EC=88=98 =EC=9E=88=EC=A7= =80=EB=A7=8C, READ_ONCE() =EC=99=80 + WRITE_ONCE() =EA=B0=80 =EC=A2=80 =EB=8D=94 =EC=95=88=EB=AA=A9 =EB= =86=92=EC=9D=80 =EC=84=A0=ED=83=9D=EC=9E=85=EB=8B=88=EB=8B=A4: READ_ONC= E() =EC=99=80 WRITE_ONCE()=EB=8A=94 + =EC=BB=B4=ED=8C=8C=EC=9D=BC=EB=9F=AC=EC=97=90 =EC=A3=BC=EC=96=B4=EC= =A7=84 =EB=A9=94=EB=AA=A8=EB=A6=AC =EC=98=81=EC=97=AD=EC=97=90 =EB=8C=80= =ED=95=B4=EC=84=9C=EB=A7=8C =EC=B5=9C=EC=A0=81=ED=99=94 =EA=B0=80=EB=8A= =A5=EC=84=B1=EC=9D=84 =ED=8F=AC=EA=B8=B0=ED=95=98=EB=8F=84=EB=A1=9D + =ED=95=98=EC=A7=80=EB=A7=8C, barrier() =EB=8A=94 =EC=BB=B4=ED=8C=8C= =EC=9D=BC=EB=9F=AC=EA=B0=80 =EC=A7=80=EA=B8=88=EA=B9=8C=EC=A7=80 =EA=B8= =B0=EA=B3=84=EC=9D=98 =EB=A0=88=EC=A7=80=EC=8A=A4=ED=84=B0=EC=97=90 =EC= =BA=90=EC=8B=9C=ED=95=B4 =EB=86=93=EC=9D=80 + =EB=AA=A8=EB=93=A0 =EB=A9=94=EB=AA=A8=EB=A6=AC =EC=98=81=EC=97=AD= =EC=9D=98 =EA=B0=92=EC=9D=84 =EB=B2=84=EB=A0=A4=EC=95=BC =ED=95=98=EA=B2= =8C =ED=95=98=EA=B8=B0 =EB=95=8C=EB=AC=B8=EC=9E=85=EB=8B=88=EB=8B=A4. = =EB=AC=BC=EB=A1=A0, =EC=BB=B4=ED=8C=8C=EC=9D=BC=EB=9F=AC=EB=8A=94 + READ_ONCE() =EC=99=80 WRITE_ONCE() =EA=B0=80 =EC=9D=BC=EC=96=B4=EB= =82=9C =EC=88=9C=EC=84=9C=EB=8F=84 =EC=A7=80=EC=BC=9C=EC=A4=8D=EB=8B=88= =EB=8B=A4, CPU =EB=8A=94 =EB=8B=B9=EC=97=B0=ED=9E=88 + =EA=B7=B8 =EC=88=9C=EC=84=9C=EB=A5=BC =EC=A7=80=ED=82=AC =EC=9D=98= =EB=AC=B4=EA=B0=80 =EC=97=86=EC=A7=80=EB=A7=8C=EC=9A=94. + + (*) =EC=BB=B4=ED=8C=8C=EC=9D=BC=EB=9F=AC=EB=8A=94 =EB=8B=A4=EC=9D=8C=EC= =9D=98 =EC=98=88=EC=97=90=EC=84=9C=EC=99=80 =EA=B0=99=EC=9D=B4 =EB=B3=80= =EC=88=98=EC=97=90=EC=9D=98 =EC=8A=A4=ED=86=A0=EC=96=B4=EB=A5=BC =EB=82= =A0=EC=A1=B0=ED=95=B4=EB=82=BC =EC=88=98=EB=8F=84 =EC=9E=88=EC=8A=B5=EB= =8B=88=EB=8B=A4: + + if (a) + b =3D a; + else + b =3D 42; + + =EC=BB=B4=ED=8C=8C=EC=9D=BC=EB=9F=AC=EB=8A=94 =EC=95=84=EB=9E=98=EC= =99=80 =EA=B0=99=EC=9D=80 =EC=B5=9C=EC=A0=81=ED=99=94=EB=A1=9C =EB=B8=8C= =EB=9E=9C=EC=B9=98=EB=A5=BC =EC=A4=84=EC=9D=BC =EA=B2=81=EB=8B=88=EB=8B= =A4: + + b =3D 42; + if (a) + b =3D a; + + =EC=8B=B1=EA=B8=80 =EC=93=B0=EB=A0=88=EB=93=9C =EC=BD=94=EB=93=9C= =EC=97=90=EC=84=9C =EC=9D=B4 =EC=B5=9C=EC=A0=81=ED=99=94=EB=8A=94 =EC=95= =88=EC=A0=84=ED=95=A0 =EB=BF=90 =EC=95=84=EB=8B=88=EB=9D=BC =EB=B8=8C=EB= =9E=9C=EC=B9=98 =EA=B0=AF=EC=88=98=EB=A5=BC + =EC=A4=84=EC=97=AC=EC=A4=8D=EB=8B=88=EB=8B=A4. =ED=95=98=EC=A7=80= =EB=A7=8C =EC=95=88=ED=83=80=EA=B9=9D=EA=B2=8C=EB=8F=84, =EB=8F=99=EC=8B= =9C=EC=84=B1=EC=9D=B4 =EC=9E=88=EB=8A=94 =EC=BD=94=EB=93=9C=EC=97=90=EC= =84=9C=EB=8A=94 =EC=9D=B4 =EC=B5=9C=EC=A0=81=ED=99=94=EB=8A=94 =EB=8B=A4= =EB=A5=B8 + CPU =EA=B0=80 'b' =EB=A5=BC =EB=A1=9C=EB=93=9C=ED=95=A0 =EB=95=8C= , -- 'a' =EA=B0=80 0=EC=9D=B4 =EC=95=84=EB=8B=8C=EB=8D=B0=EB=8F=84 -- =EA= =B0=80=EC=A7=9C=EC=9D=B8 =EA=B0=92, 42=EB=A5=BC =EB=B3=B4=EA=B2=8C + =EB=90=98=EB=8A=94 =EA=B2=BD=EC=9A=B0=EB=A5=BC =EA=B0=80=EB=8A=A5= =ED=95=98=EA=B2=8C =ED=95=A9=EB=8B=88=EB=8B=A4. =EC=9D=B4=EA=B1=B8 =EB= =B0=A9=EC=A7=80=ED=95=98=EA=B8=B0 =EC=9C=84=ED=95=B4 WRITE_ONCE() =EB=A5= =BC + =EC=82=AC=EC=9A=A9=ED=95=98=EC=84=B8=EC=9A=94: + + if (a) + WRITE_ONCE(b, a); + else + WRITE_ONCE(b, 42); + + =EC=BB=B4=ED=8C=8C=EC=9D=BC=EB=9F=AC=EB=8A=94 =EB=A1=9C=EB=93=9C=EB= =A5=BC =EB=A7=8C=EB=93=A4=EC=96=B4=EB=82=BC =EC=88=98=EB=8F=84 =EC=9E=88= =EC=8A=B5=EB=8B=88=EB=8B=A4. =EC=9D=BC=EB=B0=98=EC=A0=81=EC=9C=BC=EB=A1= =9C=EB=8A=94 =EB=AC=B8=EC=A0=9C=EB=A5=BC =EC=9D=BC=EC=9C=BC=ED=82=A4=EC= =A7=80 + =EC=95=8A=EC=A7=80=EB=A7=8C, =EC=BA=90=EC=8B=9C =EB=9D=BC=EC=9D=B8= =EB=B0=94=EC=9A=B4=EC=8B=B1=EC=9D=84 =EC=9D=BC=EC=9C=BC=EC=BC=9C =EC=84= =B1=EB=8A=A5=EA=B3=BC =ED=99=95=EC=9E=A5=EC=84=B1=EC=9D=84 =EB=96=A8=EC= =96=B4=EB=9C=A8=EB=A6=B4 =EC=88=98 =EC=9E=88=EC=8A=B5=EB=8B=88=EB=8B=A4= =2E + =EB=82=A0=EC=A1=B0=EB=90=9C =EB=A1=9C=EB=93=9C=EB=A5=BC =EB=A7=89= =EA=B8=B0 =EC=9C=84=ED=95=B4=EC=84=A0 READ_ONCE() =EB=A5=BC =EC=82=AC=EC= =9A=A9=ED=95=98=EC=84=B8=EC=9A=94. + + (*) =EC=A0=95=EB=A0=AC=EB=90=9C =EB=A9=94=EB=AA=A8=EB=A6=AC =EC=A3=BC= =EC=86=8C=EC=97=90 =EC=9C=84=EC=B9=98=ED=95=9C, =ED=95=9C=EB=B2=88=EC=9D= =98 =EB=A9=94=EB=AA=A8=EB=A6=AC =EC=B0=B8=EC=A1=B0 =EC=9D=B8=EC=8A=A4=ED= =8A=B8=EB=9F=AD=EC=85=98=EC=9C=BC=EB=A1=9C =EC=95=A1=EC=84=B8=EC=8A=A4 + =EA=B0=80=EB=8A=A5=ED=95=9C =ED=81=AC=EA=B8=B0=EC=9D=98 =EB=8D=B0= =EC=9D=B4=ED=84=B0=EB=8A=94 =ED=95=98=EB=82=98=EC=9D=98 =ED=81=B0 =EC=95= =A1=EC=84=B8=EC=8A=A4=EA=B0=80 =EC=97=AC=EB=9F=AC=EA=B0=9C=EC=9D=98 =EC= =9E=91=EC=9D=80 =EC=95=A1=EC=84=B8=EC=8A=A4=EB=93=A4=EB=A1=9C + =EB=8C=80=EC=B2=B4=EB=90=98=EB=8A=94 "=EB=A1=9C=EB=93=9C =ED=8B=B0= =EC=96=B4=EB=A7=81(load tearing)" =EA=B3=BC "=EC=8A=A4=ED=86=A0=EC=96=B4= =ED=8B=B0=EC=96=B4=EB=A7=81(store tearing)" =EC=9D=84 + =EB=B0=A9=EC=A7=80=ED=95=A9=EB=8B=88=EB=8B=A4. =EC=98=88=EB=A5=BC= =EB=93=A4=EC=96=B4, =EC=A3=BC=EC=96=B4=EC=A7=84 =EC=95=84=ED=82=A4=ED=85= =8D=EC=B3=90=EA=B0=80 7-bit imeediate field =EB=A5=BC =EA=B0=96=EB=8A=94 + 16-bit =EC=8A=A4=ED=86=A0=EC=96=B4 =EC=9D=B8=EC=8A=A4=ED=8A=B8=EB= =9F=AD=EC=85=98=EC=9D=84 =EC=A0=9C=EA=B3=B5=ED=95=9C=EB=8B=A4=EB=A9=B4,= =EC=BB=B4=ED=8C=8C=EC=9D=BC=EB=9F=AC=EB=8A=94 =EB=8B=A4=EC=9D=8C=EC=9D= =98 32-bit =EC=8A=A4=ED=86=A0=EC=96=B4=EB=A5=BC + =EA=B5=AC=ED=98=84=ED=95=98=EB=8A=94=EB=8D=B0=EC=97=90 =EB=91=90=EA= =B0=9C=EC=9D=98 16-bit store-immediate =EB=AA=85=EB=A0=B9=EC=9D=84 =EC=82= =AC=EC=9A=A9=ED=95=98=EB=A0=A4 =ED=95=A0=EA=B2=81=EB=8B=88=EB=8B=A4: + + p =3D 0x00010002; + + =EC=8A=A4=ED=86=A0=EC=96=B4 =ED=95=A0 =EC=83=81=EC=88=98=EB=A5=BC= =EB=A7=8C=EB=93=A4=EA=B3=A0 =EA=B7=B8 =EA=B0=92=EC=9D=84 =EC=8A=A4=ED=86= =A0=EC=96=B4 =ED=95=98=EA=B8=B0 =EC=9C=84=ED=95=B4 =EB=91=90=EA=B0=9C=EA= =B0=80 =EB=84=98=EB=8A=94 =EC=9D=B8=EC=8A=A4=ED=8A=B8=EB=9F=AD=EC=85=98= =EC=9D=84 + =EC=82=AC=EC=9A=A9=ED=95=98=EA=B2=8C =EB=90=98=EB=8A=94, =EC=9D=B4= =EB=9F=B0 =EC=A2=85=EB=A5=98=EC=9D=98 =EC=B5=9C=EC=A0=81=ED=99=94=EB=A5= =BC GCC =EB=8A=94 =EC=8B=A4=EC=A0=9C=EB=A1=9C =ED=95=A8=EC=9D=84 =EB=B6= =80=EB=94=94 =EC=95=8C=EC=95=84 =EB=91=90=EC=8B=AD=EC=8B=9C=EC=98=A4. + =EC=9D=B4 =EC=B5=9C=EC=A0=81=ED=99=94=EB=8A=94 =EC=8B=B1=EA=B8=80= =EC=93=B0=EB=A0=88=EB=93=9C =EC=BD=94=EB=93=9C=EC=97=90=EC=84=9C=EB=8A= =94 =EC=84=B1=EA=B3=B5=EC=A0=81=EC=9D=B8 =EC=B5=9C=EC=A0=81=ED=99=94 =EC= =9E=85=EB=8B=88=EB=8B=A4. =EC=8B=A4=EC=A0=9C=EB=A1=9C, =EA=B7=BC=EB=9E= =98=EC=97=90 + =EB=B0=9C=EC=83=9D=ED=95=9C (=EA=B7=B8=EB=A6=AC=EA=B3=A0 =EA=B3=A0= =EC=B3=90=EC=A7=84) =EB=B2=84=EA=B7=B8=EB=8A=94 GCC =EA=B0=80 volatile = =EC=8A=A4=ED=86=A0=EC=96=B4=EC=97=90 =EB=B9=84=EC=A0=95=EC=83=81=EC=A0=81= =EC=9C=BC=EB=A1=9C =EC=9D=B4 + =EC=B5=9C=EC=A0=81=ED=99=94=EB=A5=BC =EC=82=AC=EC=9A=A9=ED=95=98=EA= =B2=8C =ED=96=88=EC=8A=B5=EB=8B=88=EB=8B=A4. =EA=B7=B8=EB=9F=B0 =EB=B2= =84=EA=B7=B8=EA=B0=80 =EC=97=86=EB=8B=A4=EB=A9=B4, =EB=8B=A4=EC=9D=8C=EC= =9D=98 =EC=98=88=EC=97=90=EC=84=9C + WRITE_ONCE() =EC=9D=98 =EC=82=AC=EC=9A=A9=EC=9D=80 =EC=8A=A4=ED=86= =A0=EC=96=B4 =ED=8B=B0=EC=96=B4=EB=A7=81=EC=9D=84 =EB=B0=A9=EC=A7=80=ED= =95=A9=EB=8B=88=EB=8B=A4: + + WRITE_ONCE(p, 0x00010002); + + Packed =EA=B5=AC=EC=A1=B0=EC=B2=B4=EC=9D=98 =EC=82=AC=EC=9A=A9 =EC= =97=AD=EC=8B=9C =EB=8B=A4=EC=9D=8C=EC=9D=98 =EC=98=88=EC=B2=98=EB=9F=BC= =EB=A1=9C=EB=93=9C / =EC=8A=A4=ED=86=A0=EC=96=B4 =ED=8B=B0=EC=96=B4=EB= =A7=81=EC=9D=84 =EC=9C=A0=EB=B0=9C=ED=95=A0 =EC=88=98 + =EC=9E=88=EC=8A=B5=EB=8B=88=EB=8B=A4: + + struct __attribute__((__packed__)) foo { + short a; + int b; + short c; + }; + struct foo foo1, foo2; + ... + + foo2.a =3D foo1.a; + foo2.b =3D foo1.b; + foo2.c =3D foo1.c; + + READ_ONCE() =EB=82=98 WRITE_ONCE() =EB=8F=84 =EC=97=86=EA=B3=A0 v= olatile =EB=A7=88=ED=82=B9=EB=8F=84 =EC=97=86=EA=B8=B0 =EB=95=8C=EB=AC=B8= =EC=97=90, + =EC=BB=B4=ED=8C=8C=EC=9D=BC=EB=9F=AC=EB=8A=94 =EC=9D=B4 =EC=84=B8= =EA=B0=9C=EC=9D=98 =EB=8C=80=EC=9E=85=EB=AC=B8=EC=9D=84 =EB=91=90=EA=B0= =9C=EC=9D=98 32-bit =EB=A1=9C=EB=93=9C=EC=99=80 =EB=91=90=EA=B0=9C=EC=9D= =98 32-bit =EC=8A=A4=ED=86=A0=EC=96=B4=EB=A1=9C + =EB=B3=80=ED=99=98=ED=95=A0 =EC=88=98 =EC=9E=88=EC=8A=B5=EB=8B=88= =EB=8B=A4. =EC=9D=B4=EB=8A=94 'foo1.b' =EC=9D=98 =EA=B0=92=EC=9D=98 =EB= =A1=9C=EB=93=9C =ED=8B=B0=EC=96=B4=EB=A7=81=EA=B3=BC 'foo2.b' =EC=9D=98 + =EC=8A=A4=ED=86=A0=EC=96=B4 =ED=8B=B0=EC=96=B4=EB=A7=81=EC=9D=84 = =EC=B4=88=EB=9E=98=ED=95=A0 =EA=B2=81=EB=8B=88=EB=8B=A4. =EC=9D=B4 =EC= =98=88=EC=97=90=EC=84=9C=EB=8F=84 READ_ONCE() =EC=99=80 WRITE_ONCE() + =EA=B0=80 =ED=8B=B0=EC=96=B4=EB=A7=81=EC=9D=84 =EB=A7=89=EC=9D=84= =EC=88=98 =EC=9E=88=EC=8A=B5=EB=8B=88=EB=8B=A4: + + foo2.a =3D foo1.a; + WRITE_ONCE(foo2.b, READ_ONCE(foo1.b)); + foo2.c =3D foo1.c; + +=EA=B7=B8=EB=A0=87=EC=A7=80=EB=A7=8C, volatile =EB=A1=9C =EB=A7=88=ED=81= =AC=EB=90=9C =EB=B3=80=EC=88=98=EC=97=90 =EB=8C=80=ED=95=B4=EC=84=9C=EB= =8A=94 READ_ONCE() =EC=99=80 WRITE_ONCE() =EA=B0=80 +=ED=95=84=EC=9A=94=EC=B9=98 =EC=95=8A=EC=8A=B5=EB=8B=88=EB=8B=A4. =EC= =98=88=EB=A5=BC =EB=93=A4=EC=96=B4, 'jiffies' =EB=8A=94 volatile =EB=A1= =9C =EB=A7=88=ED=81=AC=EB=90=98=EC=96=B4 =EC=9E=88=EA=B8=B0 =EB=95=8C=EB= =AC=B8=EC=97=90, +READ_ONCE(jiffies) =EB=9D=BC=EA=B3=A0 =ED=95=A0 =ED=95=84=EC=9A=94=EA=B0= =80 =EC=97=86=EC=8A=B5=EB=8B=88=EB=8B=A4. READ_ONCE() =EC=99=80 WRITE_= ONCE() =EA=B0=80 +=EC=8B=A4=EC=9D=80 volatile =EC=BA=90=EC=8A=A4=ED=8C=85=EC=9C=BC=EB=A1= =9C =EA=B5=AC=ED=98=84=EB=90=98=EC=96=B4 =EC=9E=88=EC=96=B4=EC=84=9C =EC= =9D=B8=EC=9E=90=EA=B0=80 =EC=9D=B4=EB=AF=B8 volatile =EB=A1=9C =EB=A7=88= =ED=81=AC=EB=90=98=EC=96=B4 +=EC=9E=88=EB=8B=A4=EB=A9=B4 =EB=98=90=EB=8B=A4=EB=A5=B8 =ED=9A=A8=EA=B3= =BC=EB=A5=BC =EB=82=B4=EC=A7=80=EB=8A=94 =EC=95=8A=EA=B8=B0 =EB=95=8C=EB= =AC=B8=EC=9E=85=EB=8B=88=EB=8B=A4. + +=EC=9D=B4 =EC=BB=B4=ED=8C=8C=EC=9D=BC=EB=9F=AC =EB=B0=B0=EB=A6=AC=EC=96= =B4=EB=93=A4=EC=9D=80 CPU =EC=97=90=EB=8A=94 =EC=A7=81=EC=A0=91=EC=A0=81= =ED=9A=A8=EA=B3=BC=EB=A5=BC =EC=A0=84=ED=98=80 =EB=A7=8C=EB=93=A4=EC=A7= =80 =EC=95=8A=EA=B8=B0 =EB=95=8C=EB=AC=B8=EC=97=90, =EA=B2=B0=EA=B5=AD=EC= =9D=80 +=EC=9E=AC=EB=B0=B0=EC=B9=98=EA=B0=80 =EC=9D=BC=EC=96=B4=EB=82=A0 =EC=88= =98=EB=8F=84 =EC=9E=88=EC=9D=8C=EC=9D=84 =EB=B6=80=EB=94=94 =EA=B8=B0=EC= =96=B5=ED=95=B4 =EB=91=90=EC=8B=AD=EC=8B=9C=EC=98=A4. + + +CPU =EB=A9=94=EB=AA=A8=EB=A6=AC =EB=B0=B0=EB=A6=AC=EC=96=B4 +----------------- + +=EB=A6=AC=EB=88=85=EC=8A=A4 =EC=BB=A4=EB=84=90=EC=9D=80 =EB=8B=A4=EC=9D= =8C=EC=9D=98 =EC=97=AC=EB=8D=9F=EA=B0=9C =EA=B8=B0=EB=B3=B8 CPU =EB=A9=94= =EB=AA=A8=EB=A6=AC =EB=B0=B0=EB=A6=AC=EC=96=B4=EB=A5=BC =EA=B0=80=EC=A7= =80=EA=B3=A0 =EC=9E=88=EC=8A=B5=EB=8B=88=EB=8B=A4: + + TYPE MANDATORY SMP CONDITIONAL + =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D + =EB=B2=94=EC=9A=A9 mb() smp_mb() + =EC=93=B0=EA=B8=B0 wmb() smp_wmb() + =EC=9D=BD=EA=B8=B0 rmb() smp_rmb() + =EB=8D=B0=EC=9D=B4=ED=84=B0 =EC=9D=98=EC=A1=B4=EC=84=B1 read_barrier_= depends() smp_read_barrier_depends() + + +=EB=8D=B0=EC=9D=B4=ED=84=B0 =EC=9D=98=EC=A1=B4=EC=84=B1 =EB=B0=B0=EB=A6= =AC=EC=96=B4=EB=A5=BC =EC=A0=9C=EC=99=B8=ED=95=9C =EB=AA=A8=EB=93=A0 =EB= =A9=94=EB=AA=A8=EB=A6=AC =EB=B0=B0=EB=A6=AC=EC=96=B4=EB=8A=94 =EC=BB=B4= =ED=8C=8C=EC=9D=BC=EB=9F=AC =EB=B0=B0=EB=A6=AC=EC=96=B4=EB=A5=BC +=ED=8F=AC=ED=95=A8=ED=95=A9=EB=8B=88=EB=8B=A4. =EB=8D=B0=EC=9D=B4=ED=84= =B0 =EC=9D=98=EC=A1=B4=EC=84=B1=EC=9D=80 =EC=BB=B4=ED=8C=8C=EC=9D=BC=EB= =9F=AC=EC=97=90=EC=9D=98 =EC=B6=94=EA=B0=80=EC=A0=81=EC=9D=B8 =EC=88=9C= =EC=84=9C =EB=B3=B4=EC=9E=A5=EC=9D=84 =ED=8F=AC=ED=95=A8=ED=95=98=EC=A7= =80 +=EC=95=8A=EC=8A=B5=EB=8B=88=EB=8B=A4. + +=EB=B0=A9=EB=B0=B1: =EB=8D=B0=EC=9D=B4=ED=84=B0 =EC=9D=98=EC=A1=B4=EC=84= =B1=EC=9D=B4 =EC=9E=88=EB=8A=94 =EA=B2=BD=EC=9A=B0, =EC=BB=B4=ED=8C=8C=EC= =9D=BC=EB=9F=AC=EB=8A=94 =ED=95=B4=EB=8B=B9 =EB=A1=9C=EB=93=9C=EB=A5=BC= =EC=98=AC=EB=B0=94=EB=A5=B8 =EC=88=9C=EC=84=9C=EB=A1=9C =EC=9D=BC=EC=9C= =BC=ED=82=AC +=EA=B2=83=EC=9C=BC=EB=A1=9C (=EC=98=88: `a[b]` =EB=8A=94 a[b] =EB=A5=BC= =EB=A1=9C=EB=93=9C =ED=95=98=EA=B8=B0 =EC=A0=84=EC=97=90 b =EC=9D=98 =EA= =B0=92=EC=9D=84 =EB=A8=BC=EC=A0=80 =EB=A1=9C=EB=93=9C=ED=95=9C=EB=8B=A4= ) +=EA=B8=B0=EB=8C=80=EB=90=98=EC=A7=80=EB=A7=8C, C =EC=96=B8=EC=96=B4 =EC= =82=AC=EC=96=91=EC=97=90=EB=8A=94 =EC=BB=B4=ED=8C=8C=EC=9D=BC=EB=9F=AC=EA= =B0=80 b =EC=9D=98 =EA=B0=92=EC=9D=84 =EC=B6=94=EC=B8=A1 (=EC=98=88: 1 = =EA=B3=BC =EA=B0=99=EC=9D=8C) =ED=95=B4=EC=84=9C +b =EB=A1=9C=EB=93=9C =EC=A0=84=EC=97=90 a =EB=A1=9C=EB=93=9C=EB=A5=BC= =ED=95=98=EB=8A=94 =EC=BD=94=EB=93=9C (=EC=98=88: tmp =3D a[1]; if (b = !=3D 1) tmp =3D a[b]; ) =EB=A5=BC +=EB=A7=8C=EB=93=A4=EC=A7=80 =EC=95=8A=EC=95=84=EC=95=BC =ED=95=9C=EB=8B= =A4=EB=8A=94 =EB=82=B4=EC=9A=A9 =EA=B0=99=EC=9D=80 =EA=B1=B4 =EC=97=86=EC= =8A=B5=EB=8B=88=EB=8B=A4. =EB=98=90=ED=95=9C =EC=BB=B4=ED=8C=8C=EC=9D=BC= =EB=9F=AC=EB=8A=94 a[b] =EB=A5=BC =EB=A1=9C=EB=93=9C=ED=95=9C +=ED=9B=84=EC=97=90 b =EB=A5=BC =EB=98=90=EB=8B=A4=EC=8B=9C =EB=A1=9C=EB= =93=9C=ED=95=A0 =EC=88=98=EB=8F=84 =EC=9E=88=EC=96=B4=EC=84=9C, a[b] =EB= =B3=B4=EB=8B=A4 =EC=B5=9C=EC=8B=A0 =EB=B2=84=EC=A0=84=EC=9D=98 b =EA=B0= =92=EC=9D=84 =EA=B0=80=EC=A7=88 =EC=88=98=EB=8F=84 +=EC=9E=88=EC=8A=B5=EB=8B=88=EB=8B=A4. =EC=9D=B4=EB=9F=B0 =EB=AC=B8=EC= =A0=9C=EB=93=A4=EC=9D=98 =ED=95=B4=EA=B2=B0=EC=B1=85=EC=97=90 =EB=8C=80= =ED=95=9C =EC=9D=98=EA=B2=AC =EC=9D=BC=EC=B9=98=EB=8A=94 =EC=95=84=EC=A7= =81 =EC=97=86=EC=8A=B5=EB=8B=88=EB=8B=A4=EB=A7=8C, =EC=9D=BC=EB=8B=A8 +READ_ONCE() =EB=A7=A4=ED=81=AC=EB=A1=9C=EB=B6=80=ED=84=B0 =EB=B3=B4=EA= =B8=B0 =EC=8B=9C=EC=9E=91=ED=95=98=EB=8A=94=EA=B2=8C =EC=A2=8B=EC=9D=80= =EC=8B=9C=EC=9E=91=EC=9D=B4 =EB=90=A0=EA=B2=81=EB=8B=88=EB=8B=A4. + +SMP =EB=A9=94=EB=AA=A8=EB=A6=AC =EB=B0=B0=EB=A6=AC=EC=96=B4=EB=93=A4=EC= =9D=80 =EC=9C=A0=EB=8B=88=ED=94=84=EB=A1=9C=EC=84=B8=EC=84=9C=EB=A1=9C = =EC=BB=B4=ED=8C=8C=EC=9D=BC=EB=90=9C =EC=8B=9C=EC=8A=A4=ED=85=9C=EC=97=90= =EC=84=9C=EB=8A=94 =EC=BB=B4=ED=8C=8C=EC=9D=BC=EB=9F=AC =EB=B0=B0=EB=A6= =AC=EC=96=B4=EB=A1=9C +=EB=B0=94=EB=80=8C=EB=8A=94=EB=8D=B0, =ED=95=98=EB=82=98=EC=9D=98 CPU = =EB=8A=94 =EC=8A=A4=EC=8A=A4=EB=A1=9C =EC=9D=BC=EA=B4=80=EC=84=B1=EC=9D= =84 =EC=9C=A0=EC=A7=80=ED=95=98=EA=B3=A0, =EA=B2=B9=EC=B9=98=EB=8A=94 =EC= =95=A1=EC=84=B8=EC=8A=A4=EB=93=A4 =EC=97=AD=EC=8B=9C =EC=98=AC=EB=B0=94= =EB=A5=B8 +=EC=88=9C=EC=84=9C=EB=A1=9C =ED=96=89=ED=95=B4=EC=A7=88 =EA=B2=83=EC=9C= =BC=EB=A1=9C =EC=83=9D=EA=B0=81=EB=90=98=EA=B8=B0 =EB=95=8C=EB=AC=B8=EC= =9E=85=EB=8B=88=EB=8B=A4. =ED=95=98=EC=A7=80=EB=A7=8C, =EC=95=84=EB=9E= =98=EC=9D=98 "Virtual Machine +Guests" =EC=84=9C=EB=B8=8C=EC=84=B9=EC=85=98=EC=9D=84 =EC=B0=B8=EA=B3=A0= =ED=95=98=EC=8B=AD=EC=8B=9C=EC=98=A4. + +[!] SMP =EC=8B=9C=EC=8A=A4=ED=85=9C=EC=97=90=EC=84=9C =EA=B3=B5=EC=9C=A0= =EB=A9=94=EB=AA=A8=EB=A6=AC=EB=A1=9C=EC=9D=98 =EC=A0=91=EA=B7=BC=EB=93=A4= =EC=9D=84 =EC=88=9C=EC=84=9C =EC=84=B8=EC=9B=8C=EC=95=BC =ED=95=A0 =EB=95= =8C, SMP =EB=A9=94=EB=AA=A8=EB=A6=AC +=EB=B0=B0=EB=A6=AC=EC=96=B4=EB=8A=94 _=EB=B0=98=EB=93=9C=EC=8B=9C_ =EC= =82=AC=EC=9A=A9=EB=90=98=EC=96=B4=EC=95=BC =ED=95=A8=EC=9D=84 =EA=B8=B0= =EC=96=B5=ED=95=98=EC=84=B8=EC=9A=94, =EA=B7=B8=EB=8C=80=EC=8B=A0 =EB=9D= =BD=EC=9D=84 =EC=82=AC=EC=9A=A9=ED=95=98=EB=8A=94 =EA=B2=83=EC=9C=BC=EB= =A1=9C=EB=8F=84 +=EC=B6=A9=EB=B6=84=ED=95=98=EA=B8=B4 =ED=95=98=EC=A7=80=EB=A7=8C =EB=A7= =90=EC=9D=B4=EC=A3=A0. + +Mandatory =EB=B0=B0=EB=A6=AC=EC=96=B4=EB=93=A4=EC=9D=80 SMP =EC=8B=9C=EC= =8A=A4=ED=85=9C=EC=97=90=EC=84=9C=EB=8F=84 UP =EC=8B=9C=EC=8A=A4=ED=85=9C= =EC=97=90=EC=84=9C=EB=8F=84 SMP =ED=9A=A8=EA=B3=BC=EB=A7=8C =ED=86=B5=EC= =A0=9C=ED=95=98=EA=B8=B0=EC=97=90=EB=8A=94 +=EB=B6=88=ED=95=84=EC=9A=94=ED=95=9C =EC=98=A4=EB=B2=84=ED=97=A4=EB=93= =9C=EB=A5=BC =EA=B0=96=EA=B8=B0 =EB=95=8C=EB=AC=B8=EC=97=90 SMP =ED=9A=A8= =EA=B3=BC=EB=A7=8C =ED=86=B5=EC=A0=9C=ED=95=98=EB=A9=B4 =EB=90=98=EB=8A= =94 =EA=B3=B3=EC=97=90=EB=8A=94 =EC=82=AC=EC=9A=A9=EB=90=98=EC=A7=80 =EC= =95=8A=EC=95=84=EC=95=BC +=ED=95=A9=EB=8B=88=EB=8B=A4. =ED=95=98=EC=A7=80=EB=A7=8C, =EB=8A=90=EC= =8A=A8=ED=95=9C =EC=88=9C=EC=84=9C =EA=B7=9C=EC=B9=99=EC=9D=98 =EB=A9=94= =EB=AA=A8=EB=A6=AC I/O =EC=9C=88=EB=8F=84=EC=9A=B0=EB=A5=BC =ED=86=B5=ED= =95=9C MMIO =EC=9D=98 =ED=9A=A8=EA=B3=BC=EB=A5=BC +=ED=86=B5=EC=A0=9C=ED=95=A0 =EB=95=8C=EC=97=90=EB=8A=94 mandatory =EB=B0= =B0=EB=A6=AC=EC=96=B4=EB=93=A4=EC=9D=B4 =EC=82=AC=EC=9A=A9=EB=90=A0 =EC= =88=98 =EC=9E=88=EC=8A=B5=EB=8B=88=EB=8B=A4. =EC=9D=B4 =EB=B0=B0=EB=A6= =AC=EC=96=B4=EB=93=A4=EC=9D=80 +=EC=BB=B4=ED=8C=8C=EC=9D=BC=EB=9F=AC=EC=99=80 CPU =EB=AA=A8=EB=91=90 =EC= =9E=AC=EB=B0=B0=EC=B9=98=EB=A5=BC =EB=AA=BB=ED=95=98=EB=8F=84=EB=A1=9D = =ED=95=A8=EC=9C=BC=EB=A1=9C=EC=8D=A8 =EB=A9=94=EB=AA=A8=EB=A6=AC =EC=98= =A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85=98=EB=93=A4=EC=9D=B4 =EB=94=94=EB=B0= =94=EC=9D=B4=EC=8A=A4=EC=97=90 +=EB=B3=B4=EC=97=AC=EC=A7=80=EB=8A=94 =EC=88=9C=EC=84=9C=EC=97=90=EB=8F= =84 =EC=98=81=ED=96=A5=EC=9D=84 =EC=A3=BC=EA=B8=B0 =EB=95=8C=EB=AC=B8=EC= =97=90, SMP =EA=B0=80 =EC=95=84=EB=8B=8C =EC=8B=9C=EC=8A=A4=ED=85=9C=EC= =9D=B4=EB=9D=BC =ED=95=A0=EC=A7=80=EB=9D=BC=EB=8F=84 =ED=95=84=EC=9A=94= =ED=95=A0 =EC=88=98 +=EC=9E=88=EC=8A=B5=EB=8B=88=EB=8B=A4. + + +=EC=9D=BC=EB=B6=80 =EA=B3=A0=EA=B8=89 =EB=B0=B0=EB=A6=AC=EC=96=B4 =ED=95= =A8=EC=88=98=EB=93=A4=EB=8F=84 =EC=9E=88=EC=8A=B5=EB=8B=88=EB=8B=A4: + + (*) smp_store_mb(var, value) + + =EC=9D=B4 =ED=95=A8=EC=88=98=EB=8A=94 =ED=8A=B9=EC=A0=95 =EB=B3=80= =EC=88=98=EC=97=90 =ED=8A=B9=EC=A0=95 =EA=B0=92=EC=9D=84 =EB=8C=80=EC=9E= =85=ED=95=98=EA=B3=A0 =EB=B2=94=EC=9A=A9 =EB=A9=94=EB=AA=A8=EB=A6=AC =EB= =B0=B0=EB=A6=AC=EC=96=B4=EB=A5=BC =EC=B9=A9=EB=8B=88=EB=8B=A4. + UP =EC=BB=B4=ED=8C=8C=EC=9D=BC=EC=97=90=EC=84=9C=EB=8A=94 =EC=BB=B4= =ED=8C=8C=EC=9D=BC=EB=9F=AC =EB=B0=B0=EB=A6=AC=EC=96=B4=EB=B3=B4=EB=8B=A4= =EB=8D=94=ED=95=9C =EA=B2=83=EC=9D=84 =EC=B9=9C=EB=8B=A4=EA=B3=A0=EB=8A= =94 =EB=B3=B4=EC=9E=A5=EB=90=98=EC=A7=80 =EC=95=8A=EC=8A=B5=EB=8B=88=EB= =8B=A4. + + + (*) smp_mb__before_atomic(); + (*) smp_mb__after_atomic(); + + =EC=9D=B4=EA=B2=83=EB=93=A4=EC=9D=80 =EA=B0=92=EC=9D=84 =EB=A6=AC= =ED=84=B4=ED=95=98=EC=A7=80 =EC=95=8A=EB=8A=94 (=EB=8D=94=ED=95=98=EA=B8= =B0, =EB=B9=BC=EA=B8=B0, =EC=A6=9D=EA=B0=80, =EA=B0=90=EC=86=8C=EC=99=80= =EA=B0=99=EC=9D=80) =EC=96=B4=ED=86=A0=EB=AF=B9 + =ED=95=A8=EC=88=98=EB=93=A4=EC=9D=84 =EC=9C=84=ED=95=9C, =ED=8A=B9= =ED=9E=88 =EA=B7=B8=EA=B2=83=EB=93=A4=EC=9D=B4 =EB=A0=88=ED=8D=BC=EB=9F= =B0=EC=8A=A4 =EC=B9=B4=EC=9A=B4=ED=8C=85=EC=97=90 =EC=82=AC=EC=9A=A9=EB= =90=A0 =EB=95=8C=EB=A5=BC =EC=9C=84=ED=95=9C + =ED=95=A8=EC=88=98=EB=93=A4=EC=9E=85=EB=8B=88=EB=8B=A4. =EC=9D=B4= =ED=95=A8=EC=88=98=EB=93=A4=EC=9D=80 =EB=A9=94=EB=AA=A8=EB=A6=AC =EB=B0= =B0=EB=A6=AC=EC=96=B4=EB=A5=BC =EB=82=B4=ED=8F=AC=ED=95=98=EA=B3=A0 =EC= =9E=88=EC=A7=80=EB=8A=94 =EC=95=8A=EC=8A=B5=EB=8B=88=EB=8B=A4. + + =EC=9D=B4=EA=B2=83=EB=93=A4=EC=9D=80 =EA=B0=92=EC=9D=84 =EB=A6=AC= =ED=84=B4=ED=95=98=EC=A7=80 =EC=95=8A=EC=9C=BC=EB=A9=B0 =EC=96=B4=ED=86= =A0=EB=AF=B9=ED=95=9C (set_bit =EA=B3=BC clear_bit =EA=B0=99=EC=9D=80) = =EB=B9=84=ED=8A=B8 + =EC=97=B0=EC=82=B0=EC=97=90=EB=8F=84 =EC=82=AC=EC=9A=A9=EB=90=A0 = =EC=88=98 =EC=9E=88=EC=8A=B5=EB=8B=88=EB=8B=A4. + + =ED=95=9C =EC=98=88=EB=A1=9C, =EA=B0=9D=EC=B2=B4 =ED=95=98=EB=82=98= =EB=A5=BC =EB=AC=B4=ED=9A=A8=ED=95=9C =EA=B2=83=EC=9C=BC=EB=A1=9C =ED=91= =9C=EC=8B=9C=ED=95=98=EA=B3=A0 =EA=B7=B8 =EA=B0=9D=EC=B2=B4=EC=9D=98 =EB= =A0=88=ED=8D=BC=EB=9F=B0=EC=8A=A4 =EC=B9=B4=EC=9A=B4=ED=8A=B8=EB=A5=BC + =EA=B0=90=EC=86=8C=EC=8B=9C=ED=82=A4=EB=8A=94 =EB=8B=A4=EC=9D=8C = =EC=BD=94=EB=93=9C=EB=A5=BC =EB=B3=B4=EC=84=B8=EC=9A=94: + + obj->dead =3D 1; + smp_mb__before_atomic(); + atomic_dec(&obj->ref_count); + + =EC=9D=B4 =EC=BD=94=EB=93=9C=EB=8A=94 =EA=B0=9D=EC=B2=B4=EC=9D=98= =EC=97=85=EB=8D=B0=EC=9D=B4=ED=8A=B8=EB=90=9C death =EB=A7=88=ED=81=AC= =EA=B0=80 =EB=A0=88=ED=8D=BC=EB=9F=B0=EC=8A=A4 =EC=B9=B4=EC=9A=B4=ED=84= =B0 =EA=B0=90=EC=86=8C =EB=8F=99=EC=9E=91 + *=EC=A0=84=EC=97=90* =EB=B3=B4=EC=9D=BC =EA=B2=83=EC=9D=84 =EB=B3= =B4=EC=9E=A5=ED=95=A9=EB=8B=88=EB=8B=A4. + + =EB=8D=94 =EB=A7=8E=EC=9D=80 =EC=A0=95=EB=B3=B4=EB=A5=BC =EC=9C=84= =ED=95=B4=EC=84=A0 Documentation/atomic_ops.txt =EB=AC=B8=EC=84=9C=EB=A5= =BC =EC=B0=B8=EA=B3=A0=ED=95=98=EC=84=B8=EC=9A=94. + =EC=96=B4=EB=94=94=EC=84=9C =EC=9D=B4=EA=B2=83=EB=93=A4=EC=9D=84 = =EC=82=AC=EC=9A=A9=ED=95=B4=EC=95=BC =ED=95=A0=EC=A7=80 =EA=B6=81=EA=B8= =88=ED=95=98=EB=8B=A4=EB=A9=B4 "=EC=96=B4=ED=86=A0=EB=AF=B9 =EC=98=A4=ED= =8D=BC=EB=A0=88=EC=9D=B4=EC=85=98" =EC=84=9C=EB=B8=8C=EC=84=B9=EC=85=98= =EC=9D=84 + =EC=B0=B8=EA=B3=A0=ED=95=98=EC=84=B8=EC=9A=94. + + + (*) lockless_dereference(); + + =EC=9D=B4 =ED=95=A8=EC=88=98=EB=8A=94 smp_read_barrier_depends() = =EB=8D=B0=EC=9D=B4=ED=84=B0 =EC=9D=98=EC=A1=B4=EC=84=B1 =EB=B0=B0=EB=A6= =AC=EC=96=B4=EB=A5=BC =EC=82=AC=EC=9A=A9=ED=95=98=EB=8A=94 + =ED=8F=AC=EC=9D=B8=ED=84=B0 =EC=9D=BD=EC=96=B4=EC=98=A4=EA=B8=B0 = =EB=9E=98=ED=8D=BC(wrapper) =ED=95=A8=EC=88=98=EB=A1=9C =EC=83=9D=EA=B0= =81=EB=90=A0 =EC=88=98 =EC=9E=88=EC=8A=B5=EB=8B=88=EB=8B=A4. + + =EA=B0=9D=EC=B2=B4=EC=9D=98 =EB=9D=BC=EC=9D=B4=ED=94=84=ED=83=80=EC= =9E=84=EC=9D=B4 RCU =EC=99=B8=EC=9D=98 =EB=A9=94=EC=BB=A4=EB=8B=88=EC=A6= =98=EC=9C=BC=EB=A1=9C =EA=B4=80=EB=A6=AC=EB=90=9C=EB=8B=A4=EB=8A=94 =EC= =A0=90=EC=9D=84 =EC=A0=9C=EC=99=B8=ED=95=98=EB=A9=B4 + rcu_dereference() =EC=99=80=EB=8F=84 =EC=9C=A0=EC=82=AC=ED=95=9C=EB= =8D=B0, =EC=98=88=EB=A5=BC =EB=93=A4=EB=A9=B4 =EA=B0=9D=EC=B2=B4=EA=B0=80= =EC=8B=9C=EC=8A=A4=ED=85=9C=EC=9D=B4 =EA=BA=BC=EC=A7=88 =EB=95=8C=EC=97= =90=EB=A7=8C + =EC=A0=9C=EA=B1=B0=EB=90=98=EB=8A=94 =EA=B2=BD=EC=9A=B0 =EB=93=B1= =EC=9E=85=EB=8B=88=EB=8B=A4. =EB=98=90=ED=95=9C, lockless_dereference(= ) =EC=9D=80 RCU =EC=99=80 =ED=95=A8=EA=BB=98 + =EC=82=AC=EC=9A=A9=EB=90=A0=EC=88=98=EB=8F=84, RCU =EC=97=86=EC=9D= =B4 =EC=82=AC=EC=9A=A9=EB=90=A0 =EC=88=98=EB=8F=84 =EC=9E=88=EB=8A=94 =EC= =9D=BC=EB=B6=80 =EB=8D=B0=EC=9D=B4=ED=84=B0 =EA=B5=AC=EC=A1=B0=EC=97=90= =EC=82=AC=EC=9A=A9=EB=90=98=EA=B3=A0 + =EC=9E=88=EC=8A=B5=EB=8B=88=EB=8B=A4. + + + (*) dma_wmb(); + (*) dma_rmb(); + + =EC=9D=B4=EA=B2=83=EB=93=A4=EC=9D=80 CPU =EC=99=80 DMA =EA=B0=80=EB= =8A=A5=ED=95=9C =EB=94=94=EB=B0=94=EC=9D=B4=EC=8A=A4=EC=97=90=EC=84=9C = =EB=AA=A8=EB=91=90 =EC=95=A1=EC=84=B8=EC=8A=A4 =EA=B0=80=EB=8A=A5=ED=95= =9C =EA=B3=B5=EC=9C=A0 =EB=A9=94=EB=AA=A8=EB=A6=AC=EC=9D=98 + =EC=9D=BD=EA=B8=B0, =EC=93=B0=EA=B8=B0 =EC=9E=91=EC=97=85=EB=93=A4= =EC=9D=98 =EC=88=9C=EC=84=9C=EB=A5=BC =EB=B3=B4=EC=9E=A5=ED=95=98=EA=B8= =B0 =EC=9C=84=ED=95=B4 consistent memory =EC=97=90=EC=84=9C =EC=82=AC=EC= =9A=A9=ED=95=98=EA=B8=B0 + =EC=9C=84=ED=95=9C =EA=B2=83=EB=93=A4=EC=9E=85=EB=8B=88=EB=8B=A4. + + =EC=98=88=EB=A5=BC =EB=93=A4=EC=96=B4, =EB=94=94=EB=B0=94=EC=9D=B4= =EC=8A=A4=EC=99=80 =EB=A9=94=EB=AA=A8=EB=A6=AC=EB=A5=BC =EA=B3=B5=EC=9C= =A0=ED=95=98=EB=A9=B0, =EB=94=94=EC=8A=A4=ED=81=AC=EB=A6=BD=ED=84=B0 =EC= =83=81=ED=83=9C =EA=B0=92=EC=9D=84 =EC=82=AC=EC=9A=A9=ED=95=B4 + =EB=94=94=EC=8A=A4=ED=81=AC=EB=A6=BD=ED=84=B0=EA=B0=80 =EB=94=94=EB= =B0=94=EC=9D=B4=EC=8A=A4=EC=97=90 =EC=86=8D=ED=95=B4 =EC=9E=88=EB=8A=94= =EC=A7=80 =EC=95=84=EB=8B=88=EB=A9=B4 CPU =EC=97=90 =EC=86=8D=ED=95=B4 = =EC=9E=88=EB=8A=94=EC=A7=80 =ED=91=9C=EC=8B=9C=ED=95=98=EA=B3=A0, + =EA=B3=B5=EC=A7=80=EC=9A=A9 =EC=B4=88=EC=9D=B8=EC=A2=85(doorbell)= =EC=9D=84 =EC=82=AC=EC=9A=A9=ED=95=B4 =EC=97=85=EB=8D=B0=EC=9D=B4=ED=8A= =B8=EB=90=9C =EB=94=94=EC=8A=A4=ED=81=AC=EB=A6=BD=ED=84=B0=EA=B0=80 =EB= =94=94=EB=B0=94=EC=9D=B4=EC=8A=A4=EC=97=90 =EC=82=AC=EC=9A=A9 + =EA=B0=80=EB=8A=A5=ED=95=B4=EC=A1=8C=EC=9D=8C=EC=9D=84 =EA=B3=B5=EC= =A7=80=ED=95=98=EB=8A=94 =EB=94=94=EB=B0=94=EC=9D=B4=EC=8A=A4 =EB=93=9C= =EB=9D=BC=EC=9D=B4=EB=B2=84=EB=A5=BC =EC=83=9D=EA=B0=81=ED=95=B4 =EB=B4= =85=EC=8B=9C=EB=8B=A4: + + if (desc->status !=3D DEVICE_OWN) { + /* =EB=94=94=EC=8A=A4=ED=81=AC=EB=A6=BD=ED=84=B0=EB=A5=BC =EC=86=8C=EC= =9C=A0=ED=95=98=EA=B8=B0 =EC=A0=84=EC=97=90=EB=8A=94 =EB=8D=B0=EC=9D=B4= =ED=84=B0=EB=A5=BC =EC=9D=BD=EC=A7=80 =EC=95=8A=EC=9D=8C */ + dma_rmb(); + + /* =EB=8D=B0=EC=9D=B4=ED=84=B0=EB=A5=BC =EC=9D=BD=EA=B3=A0 =EC=94=80= */ + read_data =3D desc->data; + desc->data =3D write_data; + + /* =EC=83=81=ED=83=9C =EC=97=85=EB=8D=B0=EC=9D=B4=ED=8A=B8 =EC=A0=84= =EC=88=98=EC=A0=95=EC=82=AC=ED=95=AD=EC=9D=84 =EB=B0=98=EC=98=81 */ + dma_wmb(); + + /* =EC=86=8C=EC=9C=A0=EA=B6=8C=EC=9D=84 =EC=88=98=EC=A0=95 */ + desc->status =3D DEVICE_OWN; + + /* MMIO =EB=A5=BC =ED=86=B5=ED=95=B4 =EB=94=94=EB=B0=94=EC=9D=B4=EC=8A= =A4=EC=97=90 =EA=B3=B5=EC=A7=80=EB=A5=BC =ED=95=98=EA=B8=B0 =EC=A0=84=EC= =97=90 =EB=A9=94=EB=AA=A8=EB=A6=AC=EB=A5=BC =EB=8F=99=EA=B8=B0=ED=99=94= */ + wmb(); + + /* =EC=97=85=EB=8D=B0=EC=9D=B4=ED=8A=B8=EB=90=9C =EB=94=94=EC=8A=A4=ED= =81=AC=EB=A6=BD=ED=84=B0=EC=9D=98 =EB=94=94=EB=B0=94=EC=9D=B4=EC=8A=A4=EC= =97=90 =EA=B3=B5=EC=A7=80 */ + writel(DESC_NOTIFY, doorbell); + } + + dma_rmb() =EB=8A=94 =EB=94=94=EC=8A=A4=ED=81=AC=EB=A6=BD=ED=84=B0= =EB=A1=9C=EB=B6=80=ED=84=B0 =EB=8D=B0=EC=9D=B4=ED=84=B0=EB=A5=BC =EC=9D= =BD=EC=96=B4=EC=98=A4=EA=B8=B0 =EC=A0=84=EC=97=90 =EB=94=94=EB=B0=94=EC= =9D=B4=EC=8A=A4=EA=B0=80 =EC=86=8C=EC=9C=A0=EA=B6=8C=EC=9D=84 + =EB=82=B4=EB=86=93=EC=95=98=EC=9D=8C=EC=9D=84 =EB=B3=B4=EC=9E=A5=ED= =95=98=EA=B2=8C =ED=95=98=EA=B3=A0, dma_wmb() =EB=8A=94 =EB=94=94=EB=B0= =94=EC=9D=B4=EC=8A=A4=EA=B0=80 =EC=9E=90=EC=8B=A0=EC=9D=B4 =EC=86=8C=EC= =9C=A0=EA=B6=8C=EC=9D=84 =EB=8B=A4=EC=8B=9C + =EA=B0=80=EC=A1=8C=EC=9D=8C=EC=9D=84 =EB=B3=B4=EA=B8=B0 =EC=A0=84= =EC=97=90 =EB=94=94=EC=8A=A4=ED=81=AC=EB=A6=BD=ED=84=B0=EC=97=90 =EB=8D= =B0=EC=9D=B4=ED=84=B0=EA=B0=80 =EC=93=B0=EC=98=80=EC=9D=8C=EC=9D=84 =EB= =B3=B4=EC=9E=A5=ED=95=A9=EB=8B=88=EB=8B=A4. wmb() =EB=8A=94 + =EC=BA=90=EC=8B=9C =EC=9D=BC=EA=B4=80=EC=84=B1=EC=9D=B4 =EC=97=86= =EB=8A=94 (cache incoherent) MMIO =EC=98=81=EC=97=AD=EC=97=90 =EC=93=B0= =EA=B8=B0=EB=A5=BC =EC=8B=9C=EB=8F=84=ED=95=98=EA=B8=B0 =EC=A0=84=EC=97= =90 + =EC=BA=90=EC=8B=9C =EC=9D=BC=EA=B4=80=EC=84=B1=EC=9D=B4 =EC=9E=88= =EB=8A=94 =EB=A9=94=EB=AA=A8=EB=A6=AC (cache coherent memory) =EC=93=B0= =EA=B8=B0=EA=B0=80 =EC=99=84=EB=A3=8C=EB=90=98=EC=97=88=EC=9D=8C=EC=9D=84 + =EB=B3=B4=EC=9E=A5=ED=95=B4=EC=A3=BC=EA=B8=B0 =EC=9C=84=ED=95=B4 = =ED=95=84=EC=9A=94=ED=95=A9=EB=8B=88=EB=8B=A4. + + consistent memory =EC=97=90 =EB=8C=80=ED=95=9C =EC=9E=90=EC=84=B8= =ED=95=9C =EB=82=B4=EC=9A=A9=EC=9D=84 =EC=9C=84=ED=95=B4=EC=84=A0 Docum= entation/DMA-API.txt + =EB=AC=B8=EC=84=9C=EB=A5=BC =EC=B0=B8=EA=B3=A0=ED=95=98=EC=84=B8=EC= =9A=94. + + +MMIO =EC=93=B0=EA=B8=B0 =EB=B0=B0=EB=A6=AC=EC=96=B4 +---------------- + +=EB=A6=AC=EB=88=85=EC=8A=A4 =EC=BB=A4=EB=84=90=EC=9D=80 =EB=98=90=ED=95= =9C memory-mapped I/O =EC=93=B0=EA=B8=B0=EB=A5=BC =EC=9C=84=ED=95=9C =ED= =8A=B9=EB=B3=84=ED=95=9C =EB=B0=B0=EB=A6=AC=EC=96=B4=EB=8F=84 =EA=B0=80= =EC=A7=80=EA=B3=A0 +=EC=9E=88=EC=8A=B5=EB=8B=88=EB=8B=A4: + + mmiowb(); + +=EC=9D=B4=EA=B2=83=EC=9D=80 mandatory =EC=93=B0=EA=B8=B0 =EB=B0=B0=EB=A6= =AC=EC=96=B4=EC=9D=98 =EB=B3=80=EC=A2=85=EC=9C=BC=EB=A1=9C, =EC=99=84=ED= =99=94=EB=90=9C =EC=88=9C=EC=84=9C =EA=B7=9C=EC=B9=99=EC=9D=98 I/O =EC=98= =81=EC=97=AD=EC=97=90=EC=9C=BC=EB=A1=9C=EC=9D=98 +=EC=93=B0=EA=B8=B0=EA=B0=80 =EB=B6=80=EB=B6=84=EC=A0=81=EC=9C=BC=EB=A1= =9C =EC=88=9C=EC=84=9C=EB=A5=BC =EB=A7=9E=EC=B6=94=EB=8F=84=EB=A1=9D =ED= =95=B4=EC=A4=8D=EB=8B=88=EB=8B=A4. =EC=9D=B4 =ED=95=A8=EC=88=98=EB=8A=94= CPU->=ED=95=98=EB=93=9C=EC=9B=A8=EC=96=B4 =EC=82=AC=EC=9D=B4=EB=A5=BC +=EB=84=98=EC=96=B4=EC=84=9C =EC=8B=A4=EC=A0=9C =ED=95=98=EB=93=9C=EC=9B= =A8=EC=96=B4=EC=97=90=EA=B9=8C=EC=A7=80 =EC=9D=BC=EB=B6=80 =EC=88=98=EC= =A4=80=EC=9D=98 =EC=98=81=ED=96=A5=EC=9D=84 =EB=81=BC=EC=B9=A9=EB=8B=88= =EB=8B=A4. + +=EB=8D=94 =EB=A7=8E=EC=9D=80 =EC=A0=95=EB=B3=B4=EB=A5=BC =EC=9C=84=ED=95= =B4=EC=84=A0 "Acquire vs I/O =EC=95=A1=EC=84=B8=EC=8A=A4" =EC=84=9C=EB=B8= =8C=EC=84=B9=EC=85=98=EC=9D=84 =EC=B0=B8=EA=B3=A0=ED=95=98=EC=84=B8=EC=9A= =94. + + +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D +=EC=95=94=EB=AC=B5=EC=A0=81 =EC=BB=A4=EB=84=90 =EB=A9=94=EB=AA=A8=EB=A6= =AC =EB=B0=B0=EB=A6=AC=EC=96=B4 +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D + +=EB=A6=AC=EB=88=85=EC=8A=A4 =EC=BB=A4=EB=84=90=EC=9D=98 =EC=9D=BC=EB=B6= =80 =ED=95=A8=EC=88=98=EB=93=A4=EC=9D=80 =EB=A9=94=EB=AA=A8=EB=A6=AC =EB= =B0=B0=EB=A6=AC=EC=96=B4=EB=A5=BC =EB=82=B4=EC=9E=A5=ED=95=98=EA=B3=A0 = =EC=9E=88=EB=8A=94=EB=8D=B0, =EB=9D=BD(lock)=EA=B3=BC +=EC=8A=A4=EC=BC=80=EC=A5=B4=EB=A7=81 =EA=B4=80=EB=A0=A8 =ED=95=A8=EC=88= =98=EB=93=A4=EC=9D=B4 =EB=8C=80=EB=B6=80=EB=B6=84=EC=9E=85=EB=8B=88=EB=8B= =A4. + +=EC=97=AC=EA=B8=B0=EC=84=A0 _=EC=B5=9C=EC=86=8C=ED=95=9C=EC=9D=98_ =EB= =B3=B4=EC=9E=A5=EC=9D=84 =EC=84=A4=EB=AA=85=ED=95=A9=EB=8B=88=EB=8B=A4;= =ED=8A=B9=EC=A0=95 =EC=95=84=ED=82=A4=ED=85=8D=EC=B3=90=EC=97=90=EC=84= =9C=EB=8A=94 =EC=9D=B4 =EC=84=A4=EB=AA=85=EB=B3=B4=EB=8B=A4 =EB=8D=94 =EB= =A7=8E=EC=9D=80 +=EB=B3=B4=EC=9E=A5=EC=9D=84 =EC=A0=9C=EA=B3=B5=ED=95=A0 =EC=88=98=EB=8F= =84 =EC=9E=88=EC=8A=B5=EB=8B=88=EB=8B=A4=EB=A7=8C =ED=95=B4=EB=8B=B9 =EC= =95=84=ED=82=A4=ED=85=8D=EC=B3=90=EC=97=90 =EC=A2=85=EC=86=8D=EC=A0=81=EC= =9D=B8 =EC=BD=94=EB=93=9C =EC=99=B8=EC=9D=98 =EB=B6=80=EB=B6=84=EC=97=90= =EC=84=9C=EB=8A=94 +=EA=B7=B8=EB=9F=B0 =EB=B3=B4=EC=9E=A5=EC=9D=84 =EA=B8=B0=EB=8C=80=ED=95= =B4=EC=84=A0 =EC=95=88=EB=90=A0=EA=B2=81=EB=8B=88=EB=8B=A4. + + +=EB=9D=BD ACQUISITION =ED=95=A8=EC=88=98 +------------------- + +=EB=A6=AC=EB=88=85=EC=8A=A4 =EC=BB=A4=EB=84=90=EC=9D=80 =EB=8B=A4=EC=96= =91=ED=95=9C =EB=9D=BD =EA=B5=AC=EC=84=B1=EC=B2=B4=EB=A5=BC =EA=B0=80=EC= =A7=80=EA=B3=A0 =EC=9E=88=EC=8A=B5=EB=8B=88=EB=8B=A4: + + (*) =EC=8A=A4=ED=95=80 =EB=9D=BD + (*) R/W =EC=8A=A4=ED=95=80 =EB=9D=BD + (*) =EB=AE=A4=ED=85=8D=EC=8A=A4 + (*) =EC=84=B8=EB=A7=88=ED=8F=AC=EC=96=B4 + (*) R/W =EC=84=B8=EB=A7=88=ED=8F=AC=EC=96=B4 + +=EA=B0=81 =EA=B5=AC=EC=84=B1=EC=B2=B4=EB=A7=88=EB=8B=A4 =EB=AA=A8=EB=93= =A0 =EA=B2=BD=EC=9A=B0=EC=97=90 "ACQUIRE" =EC=98=A4=ED=8D=BC=EB=A0=88=EC= =9D=B4=EC=85=98=EA=B3=BC "RELEASE" =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4= =EC=85=98=EC=9D=98 =EB=B3=80=EC=A2=85=EC=9D=B4 +=EC=A1=B4=EC=9E=AC=ED=95=A9=EB=8B=88=EB=8B=A4. =EC=9D=B4 =EC=98=A4=ED= =8D=BC=EB=A0=88=EC=9D=B4=EC=85=98=EB=93=A4=EC=9D=80 =EB=AA=A8=EB=91=90 = =EC=A0=81=EC=A0=88=ED=95=9C =EB=B0=B0=EB=A6=AC=EC=96=B4=EB=A5=BC =EB=82= =B4=ED=8F=AC=ED=95=98=EA=B3=A0 =EC=9E=88=EC=8A=B5=EB=8B=88=EB=8B=A4: + + (1) ACQUIRE =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85=98=EC=9D=98 =EC= =98=81=ED=96=A5: + + ACQUIRE =EB=92=A4=EC=97=90=EC=84=9C =EC=9A=94=EC=B2=AD=EB=90=9C =EB= =A9=94=EB=AA=A8=EB=A6=AC =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85=98=EC= =9D=80 ACQUIRE =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85=98=EC=9D=B4 =EC= =99=84=EB=A3=8C=EB=90=9C + =EB=92=A4=EC=97=90 =EC=99=84=EB=A3=8C=EB=90=A9=EB=8B=88=EB=8B=A4. + + ACQUIRE =EC=95=9E=EC=97=90=EC=84=9C =EC=9A=94=EC=B2=AD=EB=90=9C =EB= =A9=94=EB=AA=A8=EB=A6=AC =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85=98=EC= =9D=80 ACQUIRE =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85=98=EC=9D=B4 =EC= =99=84=EB=A3=8C=EB=90=9C =ED=9B=84=EC=97=90 + =EC=99=84=EB=A3=8C=EB=90=A0 =EC=88=98 =EC=9E=88=EC=8A=B5=EB=8B=88= =EB=8B=A4. smp_mb__before_spinlock() =EB=92=A4=EC=97=90 ACQUIRE =EA=B0= =80 =EC=8B=A4=ED=96=89=EB=90=98=EB=8A=94 + =EC=BD=94=EB=93=9C =EB=B8=94=EB=A1=9D=EC=9D=80 =EB=B8=94=EB=A1=9D= =EC=95=9E=EC=9D=98 =EC=8A=A4=ED=86=A0=EC=96=B4=EB=A5=BC =EB=B8=94=EB=A1= =9D =EB=92=A4=EC=9D=98 =EB=A1=9C=EB=93=9C=EC=99=80 =EC=8A=A4=ED=86=A0=EC= =96=B4=EC=97=90 =EB=8C=80=ED=95=B4 =EC=88=9C=EC=84=9C + =EB=A7=9E=EC=B6=A5=EB=8B=88=EB=8B=A4. =EC=9D=B4=EA=B1=B4 smp_mb(= ) =EB=B3=B4=EB=8B=A4 =EC=99=84=ED=99=94=EB=90=9C =EA=B2=83=EC=9E=84=EC=9D= =84 =EA=B8=B0=EC=96=B5=ED=95=98=EC=84=B8=EC=9A=94! =EB=A7=8E=EC=9D=80 = =EC=95=84=ED=82=A4=ED=85=8D=EC=B3=90=EC=97=90=EC=84=9C + smp_mb__before_spinlock() =EC=9D=80 =EC=82=AC=EC=8B=A4 =EC=95=84=EB= =AC=B4=EC=9D=BC=EB=8F=84 =ED=95=98=EC=A7=80 =EC=95=8A=EC=8A=B5=EB=8B=88= =EB=8B=A4. + + (2) RELEASE =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85=98=EC=9D=98 =EC= =98=81=ED=96=A5: + + RELEASE =EC=95=9E=EC=97=90=EC=84=9C =EC=9A=94=EC=B2=AD=EB=90=9C =EB= =A9=94=EB=AA=A8=EB=A6=AC =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85=98=EC= =9D=80 RELEASE =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85=98=EC=9D=B4 =EC= =99=84=EB=A3=8C=EB=90=98=EA=B8=B0 + =EC=A0=84=EC=97=90 =EC=99=84=EB=A3=8C=EB=90=A9=EB=8B=88=EB=8B=A4. + + RELEASE =EB=92=A4=EC=97=90=EC=84=9C =EC=9A=94=EC=B2=AD=EB=90=9C =EB= =A9=94=EB=AA=A8=EB=A6=AC =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85=98=EC= =9D=80 RELEASE =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85=98 =EC=99=84=EB= =A3=8C =EC=A0=84=EC=97=90 + =EC=99=84=EB=A3=8C=EB=90=A0 =EC=88=98 =EC=9E=88=EC=8A=B5=EB=8B=88= =EB=8B=A4. + + (3) ACQUIRE vs ACQUIRE =EC=98=81=ED=96=A5: + + =EC=96=B4=EB=96=A4 ACQUIRE =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC= =85=98=EB=B3=B4=EB=8B=A4 =EC=95=9E=EC=97=90=EC=84=9C =EC=9A=94=EC=B2=AD= =EB=90=9C =EB=AA=A8=EB=93=A0 ACQUIRE =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4= =EC=85=98=EC=9D=80 =EA=B7=B8 + ACQUIRE =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85=98 =EC=A0=84=EC= =97=90 =EC=99=84=EB=A3=8C=EB=90=A9=EB=8B=88=EB=8B=A4. + + (4) ACQUIRE vs RELEASE implication: + + =EC=96=B4=EB=96=A4 RELEASE =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC= =85=98=EB=B3=B4=EB=8B=A4 =EC=95=9E=EC=84=9C =EC=9A=94=EC=B2=AD=EB=90=9C= ACQUIRE =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85=98=EC=9D=80 =EA=B7=B8= RELEASE + =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85=98=EB=B3=B4=EB=8B=A4 =EB= =A8=BC=EC=A0=80 =EC=99=84=EB=A3=8C=EB=90=A9=EB=8B=88=EB=8B=A4. + + (5) =EC=8B=A4=ED=8C=A8=ED=95=9C =EC=A1=B0=EA=B1=B4=EC=A0=81 ACQUIRE =EC= =98=81=ED=96=A5: + + ACQUIRE =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85=98=EC=9D=98 =EC= =9D=BC=EB=B6=80 =EB=9D=BD(lock) =EB=B3=80=EC=A2=85=EC=9D=80 =EB=9D=BD=EC= =9D=B4 =EA=B3=A7=EB=B0=94=EB=A1=9C =ED=9A=8D=EB=93=9D=ED=95=98=EA=B8=B0= =EC=97=90=EB=8A=94 + =EB=B6=88=EA=B0=80=EB=8A=A5=ED=95=9C =EC=83=81=ED=83=9C=EC=9D=B4=EA= =B1=B0=EB=82=98 =EB=9D=BD=EC=9D=B4 =ED=9A=8D=EB=93=9D =EA=B0=80=EB=8A=A5= =ED=95=B4=EC=A7=80=EB=8F=84=EB=A1=9D =EA=B8=B0=EB=8B=A4=EB=A6=AC=EB=8A=94= =EB=8F=84=EC=A4=91 =EC=8B=9C=EA=B7=B8=EB=84=90=EC=9D=84 =EB=B0=9B=EA=B1= =B0=EB=82=98 + =ED=95=B4=EC=84=9C =EC=8B=A4=ED=8C=A8=ED=95=A0 =EC=88=98 =EC=9E=88= =EC=8A=B5=EB=8B=88=EB=8B=A4. =EC=8B=A4=ED=8C=A8=ED=95=9C =EB=9D=BD=EC=9D= =80 =EC=96=B4=EB=96=A4 =EB=B0=B0=EB=A6=AC=EC=96=B4=EB=8F=84 =EB=82=B4=ED= =8F=AC=ED=95=98=EC=A7=80 =EC=95=8A=EC=8A=B5=EB=8B=88=EB=8B=A4. + +[!] =EC=B0=B8=EA=B3=A0: =EB=9D=BD ACQUIRE =EC=99=80 RELEASE =EA=B0=80 = =EB=8B=A8=EB=B0=A9=ED=96=A5 =EB=B0=B0=EB=A6=AC=EC=96=B4=EC=97=AC=EC=84=9C= =EB=82=98=ED=83=80=EB=82=98=EB=8A=94 =ED=98=84=EC=83=81 =EC=A4=91 =ED=95= =98=EB=82=98=EB=8A=94 +=ED=81=AC=EB=A6=AC=ED=8B=B0=EC=BB=AC =EC=84=B9=EC=85=98 =EB=B0=94=EA=B9= =A5=EC=9D=98 =EC=9D=B8=EC=8A=A4=ED=8A=B8=EB=9F=AD=EC=85=98=EC=9D=98 =EC= =98=81=ED=96=A5=EC=9D=B4 =ED=81=AC=EB=A6=AC=ED=8B=B0=EC=BB=AC =EC=84=B9= =EC=85=98 =EB=82=B4=EB=B6=80=EB=A1=9C=EB=8F=84 =EB=93=A4=EC=96=B4=EC=98= =AC =EC=88=98 +=EC=9E=88=EB=8B=A4=EB=8A=94 =EA=B2=83=EC=9E=85=EB=8B=88=EB=8B=A4. + +RELEASE =ED=9B=84=EC=97=90 =EC=9A=94=EC=B2=AD=EB=90=98=EB=8A=94 ACQUIR= E =EB=8A=94 =EC=A0=84=EC=B2=B4 =EB=A9=94=EB=AA=A8=EB=A6=AC =EB=B0=B0=EB= =A6=AC=EC=96=B4=EB=9D=BC =EC=97=AC=EA=B2=A8=EC=A7=80=EB=A9=B4 =EC=95=88= =EB=90=98=EB=8A=94=EB=8D=B0, +ACQUIRE =EC=95=9E=EC=9D=98 =EC=95=A1=EC=84=B8=EC=8A=A4=EA=B0=80 ACQUIR= E =ED=9B=84=EC=97=90 =EC=88=98=ED=96=89=EB=90=A0 =EC=88=98 =EC=9E=88=EA= =B3=A0, RELEASE =ED=9B=84=EC=9D=98 =EC=95=A1=EC=84=B8=EC=8A=A4=EA=B0=80 +RELEASE =EC=A0=84=EC=97=90 =EC=88=98=ED=96=89=EB=90=A0 =EC=88=98=EB=8F= =84 =EC=9E=88=EC=9C=BC=EB=A9=B0, =EA=B7=B8 =EB=91=90=EA=B0=9C=EC=9D=98 = =EC=95=A1=EC=84=B8=EC=8A=A4=EA=B0=80 =EC=84=9C=EB=A1=9C=EB=A5=BC =EC=A7= =80=EB=82=98=EC=B9=A0 =EC=88=98=EB=8F=84 =EC=9E=88=EA=B8=B0 +=EB=95=8C=EB=AC=B8=EC=9E=85=EB=8B=88=EB=8B=A4: + + *A =3D a; + ACQUIRE M + RELEASE M + *B =3D b; + +=EB=8A=94 =EB=8B=A4=EC=9D=8C=EA=B3=BC =EA=B0=99=EC=9D=B4 =EB=90=A0 =EC= =88=98=EB=8F=84 =EC=9E=88=EC=8A=B5=EB=8B=88=EB=8B=A4: + + ACQUIRE M, STORE *B, STORE *A, RELEASE M + +ACQUIRE =EC=99=80 RELEASE =EA=B0=80 =EB=9D=BD =ED=9A=8D=EB=93=9D=EA=B3= =BC =ED=95=B4=EC=A0=9C=EB=9D=BC=EB=A9=B4, =EA=B7=B8=EB=A6=AC=EA=B3=A0 =EB= =9D=BD=EC=9D=98 ACQUIRE =EC=99=80 RELEASE =EA=B0=80 +=EA=B0=99=EC=9D=80 =EB=9D=BD =EB=B3=80=EC=88=98=EC=97=90 =EB=8C=80=ED=95= =9C =EA=B2=83=EC=9D=B4=EB=9D=BC=EB=A9=B4, =ED=95=B4=EB=8B=B9 =EB=9D=BD=EC= =9D=84 =EC=A5=90=EA=B3=A0 =EC=9E=88=EC=A7=80 =EC=95=8A=EC=9D=80 =EB=8B=A4= =EB=A5=B8 CPU =EC=9D=98 =EC=8B=9C=EC=95=BC=EC=97=90=EB=8A=94 +=EC=9D=B4=EC=99=80 =EA=B0=99=EC=9D=80 =EC=9E=AC=EB=B0=B0=EC=B9=98=EA=B0= =80 =EC=9D=BC=EC=96=B4=EB=82=98=EB=8A=94 =EA=B2=83=EC=9C=BC=EB=A1=9C =EB= =B3=B4=EC=9D=BC =EC=88=98 =EC=9E=88=EC=8A=B5=EB=8B=88=EB=8B=A4. =EC=9A= =94=EC=95=BD=ED=95=98=EC=9E=90=EB=A9=B4, ACQUIRE =EC=97=90 +=EC=9D=B4=EC=96=B4 RELEASE =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85=98= =EC=9D=84 =EC=88=9C=EC=B0=A8=EC=A0=81=EC=9C=BC=EB=A1=9C =EC=8B=A4=ED=96= =89=ED=95=98=EB=8A=94 =ED=96=89=EC=9C=84=EA=B0=80 =EC=A0=84=EC=B2=B4 =EB= =A9=94=EB=AA=A8=EB=A6=AC =EB=B0=B0=EB=A6=AC=EC=96=B4=EB=A1=9C +=EC=83=9D=EA=B0=81=EB=90=98=EC=96=B4=EC=84=A0 -=EC=95=88=EB=90=A9=EB=8B= =88=EB=8B=A4-. + +=EB=B9=84=EC=8A=B7=ED=95=98=EA=B2=8C, =EC=95=9E=EC=9D=98 =EB=B0=98=EB=8C= =80 =EC=BC=80=EC=9D=B4=EC=8A=A4=EC=9D=B8 RELEASE =EC=99=80 ACQUIRE =EB=91= =90=EA=B0=9C =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85=98=EC=9D=98 =EC= =88=9C=EC=B0=A8=EC=A0=81 =EC=8B=A4=ED=96=89 +=EC=97=AD=EC=8B=9C =EC=A0=84=EC=B2=B4 =EB=A9=94=EB=AA=A8=EB=A6=AC =EB=B0= =B0=EB=A6=AC=EC=96=B4=EB=A5=BC =EB=82=B4=ED=8F=AC=ED=95=98=EC=A7=80 =EC= =95=8A=EC=8A=B5=EB=8B=88=EB=8B=A4. =EB=94=B0=EB=9D=BC=EC=84=9C, RELEAS= E, ACQUIRE =EB=A1=9C +=EA=B7=9C=EC=A0=95=EB=90=98=EB=8A=94 =ED=81=AC=EB=A6=AC=ED=8B=B0=EC=BB= =AC =EC=84=B9=EC=85=98=EC=9D=98 CPU =EC=88=98=ED=96=89=EC=9D=80 RELEASE= =EC=99=80 ACQUIRE =EB=A5=BC =EA=B0=80=EB=A1=9C=EC=A7=80=EB=A5=BC =EC=88= =98 =EC=9E=88=EC=9C=BC=EB=AF=80=EB=A1=9C, +=EB=8B=A4=EC=9D=8C=EA=B3=BC =EA=B0=99=EC=9D=80 =EC=BD=94=EB=93=9C=EB=8A= =94: + + *A =3D a; + RELEASE M + ACQUIRE N + *B =3D b; + +=EB=8B=A4=EC=9D=8C=EA=B3=BC =EA=B0=99=EC=9D=B4 =EC=88=98=ED=96=89=EB=90= =A0 =EC=88=98 =EC=9E=88=EC=8A=B5=EB=8B=88=EB=8B=A4: + + ACQUIRE N, STORE *B, STORE *A, RELEASE M + +=EC=9D=B4=EB=9F=B0 =EC=9E=AC=EB=B0=B0=EC=B9=98=EB=8A=94 =EB=8D=B0=EB=93= =9C=EB=9D=BD=EC=9D=84 =EC=9D=BC=EC=9C=BC=ED=82=AC =EC=88=98=EB=8F=84 =EC= =9E=88=EC=9D=84 =EA=B2=83=EC=B2=98=EB=9F=BC =EB=B3=B4=EC=9D=BC =EC=88=98= =EC=9E=88=EC=8A=B5=EB=8B=88=EB=8B=A4. =ED=95=98=EC=A7=80=EB=A7=8C, =EA= =B7=B8=EB=9F=B0 +=EB=8D=B0=EB=93=9C=EB=9D=BD=EC=9D=98 =EC=A1=B0=EC=A7=90=EC=9D=B4 =EC=9E= =88=EB=8B=A4=EB=A9=B4 RELEASE =EB=8A=94 =EB=8B=A8=EC=88=9C=ED=9E=88 =EC= =99=84=EB=A3=8C=EB=90=A0 =EA=B2=83=EC=9D=B4=EB=AF=80=EB=A1=9C =EB=8D=B0= =EB=93=9C=EB=9D=BD=EC=9D=80 =EC=A1=B4=EC=9E=AC=ED=95=A0 =EC=88=98 +=EC=97=86=EC=8A=B5=EB=8B=88=EB=8B=A4. + + =EC=9D=B4=EA=B2=8C =EC=96=B4=EB=96=BB=EA=B2=8C =EC=98=AC=EB=B0=94=EB=A5= =B8 =EB=8F=99=EC=9E=91=EC=9D=84 =ED=95=A0 =EC=88=98 =EC=9E=88=EC=9D=84=EA= =B9=8C=EC=9A=94? + + =EC=9A=B0=EB=A6=AC=EA=B0=80 =EC=9D=B4=EC=95=BC=EA=B8=B0 =ED=95=98=EA=B3= =A0 =EC=9E=88=EB=8A=94=EA=B1=B4 =EC=9E=AC=EB=B0=B0=EC=B9=98=EB=A5=BC =ED= =95=98=EB=8A=94 CPU =EC=97=90 =EB=8C=80=ED=95=9C =EC=9D=B4=EC=95=BC=EA=B8= =B0=EC=9D=B4=EC=A7=80, + =EC=BB=B4=ED=8C=8C=EC=9D=BC=EB=9F=AC=EC=97=90 =EB=8C=80=ED=95=9C =EA=B2= =83=EC=9D=B4 =EC=95=84=EB=8B=88=EB=9E=80 =EC=A0=90=EC=9D=B4 =ED=95=B5=EC= =8B=AC=EC=9E=85=EB=8B=88=EB=8B=A4. =EC=BB=B4=ED=8C=8C=EC=9D=BC=EB=9F=AC= (=EB=98=90=EB=8A=94, =EA=B0=9C=EB=B0=9C=EC=9E=90) + =EA=B0=80 =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85=98=EB=93=A4=EC=9D= =84 =EC=9D=B4=EB=A0=87=EA=B2=8C =EC=9E=AC=EB=B0=B0=EC=B9=98=ED=95=98=EB= =A9=B4, =EB=8D=B0=EB=93=9C=EB=9D=BD=EC=9D=B4 =EC=9D=BC=EC=96=B4=EB=82=A0= =EC=88=98 -=EC=9E=88=EC=8A=B5-=EB=8B=88=EB=8B=A4. + + =ED=95=98=EC=A7=80=EB=A7=8C CPU =EA=B0=80 =EC=98=A4=ED=8D=BC=EB=A0=88= =EC=9D=B4=EC=85=98=EB=93=A4=EC=9D=84 =EC=9E=AC=EB=B0=B0=EC=B9=98 =ED=96= =88=EB=8B=A4=EB=8A=94=EA=B1=B8 =EC=83=9D=EA=B0=81=ED=95=B4 =EB=B3=B4=EC= =84=B8=EC=9A=94. =EC=9D=B4 =EC=98=88=EC=97=90=EC=84=9C, + =EC=96=B4=EC=85=88=EB=B8=94=EB=A6=AC =EC=BD=94=EB=93=9C =EC=83=81=EC=9C= =BC=EB=A1=9C=EB=8A=94 =EC=96=B8=EB=9D=BD=EC=9D=B4 =EB=9D=BD=EC=9D=84 =EC= =95=9E=EC=84=9C=EA=B2=8C =EB=90=98=EC=96=B4 =EC=9E=88=EC=8A=B5=EB=8B=88= =EB=8B=A4. CPU =EA=B0=80 =EC=9D=B4=EB=A5=BC + =EC=9E=AC=EB=B0=B0=EC=B9=98=ED=95=B4=EC=84=9C =EB=92=A4=EC=9D=98 =EB=9D= =BD =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85=98=EC=9D=84 =EB=A8=BC=EC= =A0=80 =EC=8B=A4=ED=96=89=ED=95=98=EA=B2=8C =EB=90=A9=EB=8B=88=EB=8B=A4= =2E =EB=A7=8C=EC=95=BD =EB=8D=B0=EB=93=9C=EB=9D=BD=EC=9D=B4 + =EC=A1=B4=EC=9E=AC=ED=95=9C=EB=8B=A4=EB=A9=B4, =EC=9D=B4 =EB=9D=BD =EC= =98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85=98=EC=9D=80 =EA=B7=B8=EC=A0=80 = =EC=8A=A4=ED=95=80=EC=9D=84 =ED=95=98=EB=A9=B0 =EA=B3=84=EC=86=8D=ED=95= =B4=EC=84=9C =EB=9D=BD=EC=9D=84 + =EC=8B=9C=EB=8F=84=ED=95=A9=EB=8B=88=EB=8B=A4 (=EB=98=90=EB=8A=94, =ED= =95=9C=EC=B0=B8 =ED=9B=84=EC=97=90=EA=B2=A0=EC=A7=80=EB=A7=8C, =EC=9E=A0= =EB=93=AD=EB=8B=88=EB=8B=A4). CPU =EB=8A=94 =EC=96=B8=EC=A0=A0=EA=B0=80= =EB=8A=94 + (=EC=96=B4=EC=85=88=EB=B8=94=EB=A6=AC =EC=BD=94=EB=93=9C=EC=97=90=EC=84= =9C=EB=8A=94 =EB=9D=BD=EC=9D=84 =EC=95=9E=EC=84=9C=EB=8A=94) =EC=96=B8=EB= =9D=BD =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85=98=EC=9D=84 =EC=8B=A4= =ED=96=89=ED=95=98=EB=8A=94=EB=8D=B0, =EC=9D=B4 =EC=96=B8=EB=9D=BD + =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85=98=EC=9D=B4 =EC=9E=A0=EC=9E= =AC=EC=A0=81 =EB=8D=B0=EB=93=9C=EB=9D=BD=EC=9D=84 =ED=95=B4=EA=B2=B0=ED= =95=98=EA=B3=A0, =EB=9D=BD =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85=98= =EB=8F=84 =EB=92=A4=EC=9D=B4=EC=96=B4 =EC=84=B1=EA=B3=B5=ED=95=98=EA=B2= =8C + =EB=90=A9=EB=8B=88=EB=8B=A4. + + =ED=95=98=EC=A7=80=EB=A7=8C =EB=A7=8C=EC=95=BD =EB=9D=BD=EC=9D=B4 =EC= =9E=A0=EC=9D=84 =EC=9E=90=EB=8A=94 =ED=83=80=EC=9E=85=EC=9D=B4=EC=97=88= =EB=8B=A4=EB=A9=B4=EC=9A=94? =EA=B7=B8=EB=9F=B0 =EA=B2=BD=EC=9A=B0=EC=97= =90 =EC=BD=94=EB=93=9C=EB=8A=94 + =EC=8A=A4=EC=BC=80=EC=A5=B4=EB=9F=AC=EB=A1=9C =EB=93=A4=EC=96=B4=EA=B0= =80=EB=A0=A4 =ED=95=A0 =EA=B1=B0=EA=B3=A0, =EC=97=AC=EA=B8=B0=EC=84=9C = =EA=B2=B0=EA=B5=AD=EC=9D=80 =EB=A9=94=EB=AA=A8=EB=A6=AC =EB=B0=B0=EB=A6= =AC=EC=96=B4=EB=A5=BC =EB=A7=8C=EB=82=98=EA=B2=8C + =EB=90=98=EB=8A=94=EB=8D=B0, =EC=9D=B4 =EB=A9=94=EB=AA=A8=EB=A6=AC =EB= =B0=B0=EB=A6=AC=EC=96=B4=EB=8A=94 =EC=95=9E=EC=9D=98 =EC=96=B8=EB=9D=BD= =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85=98=EC=9D=B4 =EC=99=84=EB=A3= =8C=EB=90=98=EB=8F=84=EB=A1=9D =EB=A7=8C=EB=93=A4=EA=B3=A0, + =EB=8D=B0=EB=93=9C=EB=9D=BD=EC=9D=80 =EC=9D=B4=EB=B2=88=EC=97=90=EB=8F= =84 =ED=95=B4=EA=B2=B0=EB=90=A9=EB=8B=88=EB=8B=A4. =EC=9E=A0=EC=9D=84 = =EC=9E=90=EB=8A=94 =ED=96=89=EC=9C=84=EC=99=80 =EC=96=B8=EB=9D=BD =EC=82= =AC=EC=9D=B4=EC=9D=98 =EA=B2=BD=EC=A3=BC =EC=83=81=ED=99=A9 + (race) =EB=8F=84 =EC=9E=88=EC=9D=84 =EC=88=98 =EC=9E=88=EA=B2=A0=EC=8A= =B5=EB=8B=88=EB=8B=A4=EB=A7=8C, =EB=9D=BD =EA=B4=80=EB=A0=A8 =EA=B8=B0=EB= =8A=A5=EB=93=A4=EC=9D=80 =EA=B7=B8=EB=9F=B0 =EA=B2=BD=EC=A3=BC =EC=83=81= =ED=99=A9=EC=9D=84 =EB=AA=A8=EB=93=A0 + =EA=B2=BD=EC=9A=B0=EC=97=90 =EC=A0=9C=EB=8C=80=EB=A1=9C =ED=95=B4=EA=B2= =B0=ED=95=A0 =EC=88=98 =EC=9E=88=EC=96=B4=EC=95=BC =ED=95=A9=EB=8B=88=EB= =8B=A4. + +=EB=9D=BD=EA=B3=BC =EC=84=B8=EB=A7=88=ED=8F=AC=EC=96=B4=EB=8A=94 UP =EC= =BB=B4=ED=8C=8C=EC=9D=BC=EB=90=9C =EC=8B=9C=EC=8A=A4=ED=85=9C=EC=97=90=EC= =84=9C=EC=9D=98 =EC=88=9C=EC=84=9C=EC=97=90 =EB=8C=80=ED=95=B4 =EB=B3=B4= =EC=9E=A5=EC=9D=84 =ED=95=98=EC=A7=80 =EC=95=8A=EA=B8=B0 =EB=95=8C=EB=AC= =B8=EC=97=90, +=EA=B7=B8=EB=9F=B0 =EC=83=81=ED=99=A9=EC=97=90=EC=84=9C =EC=9D=B8=ED=84= =B0=EB=9F=BD=ED=8A=B8 =EB=B9=84=ED=99=9C=EC=84=B1=ED=99=94 =EC=98=A4=ED= =8D=BC=EB=A0=88=EC=9D=B4=EC=85=98=EA=B3=BC =ED=95=A8=EA=BB=98=EA=B0=80 = =EC=95=84=EB=8B=88=EB=9D=BC=EB=A9=B4 =EC=96=B4=EB=96=A4 =EC=9D=BC=EC=97= =90=EB=8F=84 - =ED=8A=B9=ED=9E=88 +I/O =EC=95=A1=EC=84=B8=EC=8A=A4=EC=99=80 =EA=B4=80=EB=A0=A8=ED=95=B4=EC= =84=9C=EB=8A=94 - =EC=A0=9C=EB=8C=80=EB=A1=9C =EC=82=AC=EC=9A=A9=EB=90=A0= =EC=88=98 =EC=97=86=EC=9D=84 =EA=B2=81=EB=8B=88=EB=8B=A4. + +"CPU =EA=B0=84 ACQUIRING =EB=B0=B0=EB=A6=AC=EC=96=B4 =ED=9A=A8=EA=B3=BC= " =EC=84=B9=EC=85=98=EB=8F=84 =EC=B0=B8=EA=B3=A0=ED=95=98=EC=8B=9C=EA=B8= =B0 =EB=B0=94=EB=9E=8D=EB=8B=88=EB=8B=A4. + + +=EC=98=88=EB=A5=BC =EB=93=A4=EC=96=B4, =EB=8B=A4=EC=9D=8C=EA=B3=BC =EA= =B0=99=EC=9D=80 =EC=BD=94=EB=93=9C=EB=A5=BC =EC=83=9D=EA=B0=81=ED=95=B4= =EB=B4=85=EC=8B=9C=EB=8B=A4: + + *A =3D a; + *B =3D b; + ACQUIRE + *C =3D c; + *D =3D d; + RELEASE + *E =3D e; + *F =3D f; + +=EC=97=AC=EA=B8=B0=EC=84=A0 =EB=8B=A4=EC=9D=8C=EC=9D=98 =EC=9D=B4=EB=B2= =A4=ED=8A=B8 =EC=8B=9C=ED=80=80=EC=8A=A4=EA=B0=80 =EC=83=9D=EA=B8=B8 =EC= =88=98 =EC=9E=88=EC=8A=B5=EB=8B=88=EB=8B=A4: + + ACQUIRE, {*F,*A}, *E, {*C,*D}, *B, RELEASE + + [+] {*F,*A} =EB=8A=94 =EC=A1=B0=ED=95=A9=EB=90=9C =EC=95=A1=EC=84=B8=EC= =8A=A4=EB=A5=BC =EC=9D=98=EB=AF=B8=ED=95=A9=EB=8B=88=EB=8B=A4. + +=ED=95=98=EC=A7=80=EB=A7=8C =EB=8B=A4=EC=9D=8C=EA=B3=BC =EA=B0=99=EC=9D= =80 =EA=B1=B4 =EB=B6=88=EA=B0=80=EB=8A=A5=ED=95=98=EC=A3=A0: + + {*F,*A}, *B, ACQUIRE, *C, *D, RELEASE, *E + *A, *B, *C, ACQUIRE, *D, RELEASE, *E, *F + *A, *B, ACQUIRE, *C, RELEASE, *D, *E, *F + *B, ACQUIRE, *C, *D, RELEASE, {*F,*A}, *E + + + +=EC=9D=B8=ED=84=B0=EB=9F=BD=ED=8A=B8 =EB=B9=84=ED=99=9C=EC=84=B1=ED=99= =94 =ED=95=A8=EC=88=98 +---------------------- + +=EC=9D=B8=ED=84=B0=EB=9F=BD=ED=8A=B8=EB=A5=BC =EB=B9=84=ED=99=9C=EC=84= =B1=ED=99=94 =ED=95=98=EB=8A=94 =ED=95=A8=EC=88=98 (ACQUIRE =EC=99=80 =EB= =8F=99=EC=9D=BC) =EC=99=80 =EC=9D=B8=ED=84=B0=EB=9F=BD=ED=8A=B8=EB=A5=BC= =ED=99=9C=EC=84=B1=ED=99=94 =ED=95=98=EB=8A=94 =ED=95=A8=EC=88=98 +(RELEASE =EC=99=80 =EB=8F=99=EC=9D=BC) =EB=8A=94 =EC=BB=B4=ED=8C=8C=EC= =9D=BC=EB=9F=AC =EB=B0=B0=EB=A6=AC=EC=96=B4=EC=B2=98=EB=9F=BC=EB=A7=8C = =EB=8F=99=EC=9E=91=ED=95=A9=EB=8B=88=EB=8B=A4. =EB=94=B0=EB=9D=BC=EC=84= =9C, =EB=B3=84=EB=8F=84=EC=9D=98 =EB=A9=94=EB=AA=A8=EB=A6=AC +=EB=B0=B0=EB=A6=AC=EC=96=B4=EB=82=98 I/O =EB=B0=B0=EB=A6=AC=EC=96=B4=EA= =B0=80 =ED=95=84=EC=9A=94=ED=95=9C =EC=83=81=ED=99=A9=EC=9D=B4=EB=9D=BC= =EB=A9=B4 =EA=B7=B8 =EB=B0=B0=EB=A6=AC=EC=96=B4=EB=93=A4=EC=9D=80 =EC=9D= =B8=ED=84=B0=EB=9F=BD=ED=8A=B8 =EB=B9=84=ED=99=9C=EC=84=B1=ED=99=94 =ED= =95=A8=EC=88=98 +=EC=99=B8=EC=9D=98 =EB=B0=A9=EB=B2=95=EC=9C=BC=EB=A1=9C =EC=A0=9C=EA=B3= =B5=EB=90=98=EC=96=B4=EC=95=BC=EB=A7=8C =ED=95=A9=EB=8B=88=EB=8B=A4. + + +=EC=8A=AC=EB=A6=BD=EA=B3=BC =EC=9B=A8=EC=9D=B4=ED=81=AC=EC=97=85 =ED=95= =A8=EC=88=98 +-------------------- + +=EA=B8=80=EB=A1=9C=EB=B2=8C =EB=8D=B0=EC=9D=B4=ED=84=B0=EC=97=90 =ED=91= =9C=EC=8B=9C=EB=90=9C =EC=9D=B4=EB=B2=A4=ED=8A=B8=EC=97=90 =EC=9D=98=ED= =95=B4 =ED=94=84=EB=A1=9C=EC=84=B8=EC=8A=A4=EB=A5=BC =EC=9E=A0=EC=97=90= =EB=B9=A0=ED=8A=B8=EB=A6=AC=EB=8A=94 =EA=B2=83=EA=B3=BC =EA=B9=A8=EC=9A= =B0=EB=8A=94 =EA=B2=83=EC=9D=80 +=ED=95=B4=EB=8B=B9 =EC=9D=B4=EB=B2=A4=ED=8A=B8=EB=A5=BC =EA=B8=B0=EB=8B= =A4=EB=A6=AC=EB=8A=94 =ED=83=9C=EC=8A=A4=ED=81=AC=EC=9D=98 =ED=83=9C=EC= =8A=A4=ED=81=AC =EC=83=81=ED=83=9C=EC=99=80 =EA=B7=B8 =EC=9D=B4=EB=B2=A4= =ED=8A=B8=EB=A5=BC =EC=95=8C=EB=A6=AC=EA=B8=B0 =EC=9C=84=ED=95=B4 =EC=82= =AC=EC=9A=A9=EB=90=98=EB=8A=94 +=EA=B8=80=EB=A1=9C=EB=B2=8C =EB=8D=B0=EC=9D=B4=ED=84=B0, =EB=91=90 =EB= =8D=B0=EC=9D=B4=ED=84=B0=EA=B0=84=EC=9D=98 =EC=83=81=ED=98=B8=EC=9E=91=EC= =9A=A9=EC=9C=BC=EB=A1=9C =EB=B3=BC =EC=88=98 =EC=9E=88=EC=8A=B5=EB=8B=88= =EB=8B=A4. =EC=9D=B4=EA=B2=83=EC=9D=B4 =EC=98=B3=EC=9D=80 =EC=88=9C=EC= =84=9C=EB=8C=80=EB=A1=9C +=EC=9D=BC=EC=96=B4=EB=82=A8=EC=9D=84 =EB=B6=84=EB=AA=85=ED=9E=88 =ED=95= =98=EA=B8=B0 =EC=9C=84=ED=95=B4, =ED=94=84=EB=A1=9C=EC=84=B8=EC=8A=A4=EB= =A5=BC =EC=9E=A0=EC=97=90 =EB=93=A4=EA=B2=8C =ED=95=98=EB=8A=94 =EA=B8=B0= =EB=8A=A5=EA=B3=BC =EA=B9=A8=EC=9A=B0=EB=8A=94 =EA=B8=B0=EB=8A=A5=EC=9D= =80 +=EB=AA=87=EA=B0=80=EC=A7=80 =EB=B0=B0=EB=A6=AC=EC=96=B4=EB=A5=BC =EB=82= =B4=ED=8F=AC=ED=95=A9=EB=8B=88=EB=8B=A4. + +=EB=A8=BC=EC=A0=80, =EC=9E=A0=EC=9D=84 =EC=9E=AC=EC=9A=B0=EB=8A=94 =EC= =AA=BD=EC=9D=80 =EC=9D=BC=EB=B0=98=EC=A0=81=EC=9C=BC=EB=A1=9C =EB=8B=A4= =EC=9D=8C=EA=B3=BC =EA=B0=99=EC=9D=80 =EC=9D=B4=EB=B2=A4=ED=8A=B8 =EC=8B= =9C=ED=80=80=EC=8A=A4=EB=A5=BC =EB=94=B0=EB=A6=85=EB=8B=88=EB=8B=A4: + + for (;;) { + set_current_state(TASK_UNINTERRUPTIBLE); + if (event_indicated) + break; + schedule(); + } + +set_current_state() =EC=97=90 =EC=9D=98=ED=95=B4, =ED=83=9C=EC=8A=A4=ED= =81=AC =EC=83=81=ED=83=9C=EA=B0=80 =EB=B0=94=EB=80=90 =ED=9B=84 =EB=B2=94= =EC=9A=A9 =EB=A9=94=EB=AA=A8=EB=A6=AC =EB=B0=B0=EB=A6=AC=EC=96=B4=EA=B0= =80 +=EC=9E=90=EB=8F=99=EC=9C=BC=EB=A1=9C =EC=82=BD=EC=9E=85=EB=90=A9=EB=8B= =88=EB=8B=A4: + + CPU 1 + =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D + set_current_state(); + smp_store_mb(); + STORE current->state + <=EB=B2=94=EC=9A=A9 =EB=B0=B0=EB=A6=AC=EC=96=B4> + LOAD event_indicated + +set_current_state() =EB=8A=94 =EB=8B=A4=EC=9D=8C=EC=9D=98 =EA=B2=83=EB= =93=A4=EB=A1=9C =EA=B0=90=EC=8B=B8=EC=A7=88 =EC=88=98=EB=8F=84 =EC=9E=88= =EC=8A=B5=EB=8B=88=EB=8B=A4: + + prepare_to_wait(); + prepare_to_wait_exclusive(); + +=EC=9D=B4=EA=B2=83=EB=93=A4 =EC=97=AD=EC=8B=9C =EC=83=81=ED=83=9C=EB=A5= =BC =EC=84=A4=EC=A0=95=ED=95=9C =ED=9B=84 =EB=B2=94=EC=9A=A9 =EB=A9=94=EB= =AA=A8=EB=A6=AC =EB=B0=B0=EB=A6=AC=EC=96=B4=EB=A5=BC =EC=82=BD=EC=9E=85= =ED=95=A9=EB=8B=88=EB=8B=A4. +=EC=95=9E=EC=9D=98 =EC=A0=84=EC=B2=B4 =EC=8B=9C=ED=80=80=EC=8A=A4=EB=8A= =94 =EB=8B=A4=EC=9D=8C=EA=B3=BC =EA=B0=99=EC=9D=80 =ED=95=A8=EC=88=98=EB= =93=A4=EB=A1=9C =ED=95=9C=EB=B2=88=EC=97=90 =EC=88=98=ED=96=89 =EA=B0=80= =EB=8A=A5=ED=95=9C=EB=8D=B0, =EC=9D=B4=EA=B2=83=EB=93=A4=EC=9D=80 =EB=AA= =A8=EB=91=90 +=EC=98=AC=EB=B0=94=EB=A5=B8 =EC=9E=A5=EC=86=8C=EC=97=90 =EB=A9=94=EB=AA= =A8=EB=A6=AC =EB=B0=B0=EB=A6=AC=EC=96=B4=EB=A5=BC =EC=82=BD=EC=9E=85=ED= =95=A9=EB=8B=88=EB=8B=A4: + + wait_event(); + wait_event_interruptible(); + wait_event_interruptible_exclusive(); + wait_event_interruptible_timeout(); + wait_event_killable(); + wait_event_timeout(); + wait_on_bit(); + wait_on_bit_lock(); + + +=EB=91=90=EB=B2=88=EC=A7=B8=EB=A1=9C, =EA=B9=A8=EC=9A=B0=EA=B8=B0=EB=A5= =BC =EC=88=98=ED=96=89=ED=95=98=EB=8A=94 =EC=BD=94=EB=93=9C=EB=8A=94 =EC= =9D=BC=EB=B0=98=EC=A0=81=EC=9C=BC=EB=A1=9C =EB=8B=A4=EC=9D=8C=EA=B3=BC = =EA=B0=99=EC=9D=84 =EA=B2=81=EB=8B=88=EB=8B=A4: + + event_indicated =3D 1; + wake_up(&event_wait_queue); + +=EB=98=90=EB=8A=94: + + event_indicated =3D 1; + wake_up_process(event_daemon); + +wake_up() =EB=A5=98=EC=97=90 =EC=9D=98=ED=95=B4 =EC=93=B0=EA=B8=B0 =EB= =A9=94=EB=AA=A8=EB=A6=AC =EB=B0=B0=EB=A6=AC=EC=96=B4=EA=B0=80 =EB=82=B4= =ED=8F=AC=EB=90=A9=EB=8B=88=EB=8B=A4. =EB=A7=8C=EC=95=BD =EA=B7=B8=EA=B2= =83=EB=93=A4=EC=9D=B4 =EB=AD=94=EA=B0=80=EB=A5=BC +=EA=B9=A8=EC=9A=B4=EB=8B=A4=EB=A9=B4=EC=9A=94. =EC=9D=B4 =EB=B0=B0=EB= =A6=AC=EC=96=B4=EB=8A=94 =ED=83=9C=EC=8A=A4=ED=81=AC =EC=83=81=ED=83=9C= =EA=B0=80 =EC=A7=80=EC=9B=8C=EC=A7=80=EA=B8=B0 =EC=A0=84=EC=97=90 =EC=88= =98=ED=96=89=EB=90=98=EB=AF=80=EB=A1=9C, =EC=9D=B4=EB=B2=A4=ED=8A=B8=EB= =A5=BC +=EC=95=8C=EB=A6=AC=EA=B8=B0 =EC=9C=84=ED=95=9C STORE =EC=99=80 =ED=83=9C= =EC=8A=A4=ED=81=AC =EC=83=81=ED=83=9C=EB=A5=BC TASK_RUNNING =EC=9C=BC=EB= =A1=9C =EC=84=A4=EC=A0=95=ED=95=98=EB=8A=94 STORE =EC=82=AC=EC=9D=B4=EC= =97=90 +=EC=9C=84=EC=B9=98=ED=95=98=EA=B2=8C =EB=90=A9=EB=8B=88=EB=8B=A4. + + CPU 1 CPU 2 + =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D + set_current_state(); STORE event_indicated + smp_store_mb(); wake_up(); + STORE current->state <=EC=93=B0=EA=B8=B0 =EB=B0=B0=EB=A6=AC=EC=96= =B4> + <=EB=B2=94=EC=9A=A9 =EB=B0=B0=EB=A6=AC=EC=96=B4> STORE current= ->state + LOAD event_indicated + +=ED=95=9C=EB=B2=88=EB=8D=94 =EB=A7=90=ED=95=A9=EB=8B=88=EB=8B=A4=EB=A7= =8C, =EC=9D=B4 =EC=93=B0=EA=B8=B0 =EB=A9=94=EB=AA=A8=EB=A6=AC =EB=B0=B0= =EB=A6=AC=EC=96=B4=EB=8A=94 =EC=9D=B4 =EC=BD=94=EB=93=9C=EA=B0=80 =EC=A0= =95=EB=A7=90=EB=A1=9C =EB=AD=94=EA=B0=80=EB=A5=BC =EA=B9=A8=EC=9A=B8 =EB= =95=8C=EC=97=90=EB=A7=8C +=EC=8B=A4=ED=96=89=EB=90=A9=EB=8B=88=EB=8B=A4. =EC=9D=B4=EA=B1=B8 =EC= =84=A4=EB=AA=85=ED=95=98=EA=B8=B0 =EC=9C=84=ED=95=B4, X =EC=99=80 Y =EB= =8A=94 =EB=AA=A8=EB=91=90 0 =EC=9C=BC=EB=A1=9C =EC=B4=88=EA=B8=B0=ED=99= =94 =EB=90=98=EC=96=B4 =EC=9E=88=EB=8B=A4=EB=8A=94 =EA=B0=80=EC=A0=95 +=ED=95=98=EC=97=90 =EC=95=84=EB=9E=98=EC=9D=98 =EC=9D=B4=EB=B2=A4=ED=8A= =B8 =EC=8B=9C=ED=80=80=EC=8A=A4=EB=A5=BC =EC=83=9D=EA=B0=81=ED=95=B4 =EB= =B4=85=EC=8B=9C=EB=8B=A4: + + CPU 1 CPU 2 + =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D + X =3D 1; STORE event_indicated + smp_mb(); wake_up(); + Y =3D 1; wait_event(wq, Y =3D=3D 1); + wake_up(); load from Y sees 1, no memory barrier + load from X might see 0 + +=EC=9C=84 =EC=98=88=EC=A0=9C=EC=97=90=EC=84=9C=EC=9D=98 =EA=B2=BD=EC=9A= =B0=EC=99=80 =EB=8B=AC=EB=A6=AC =EA=B9=A8=EC=9A=B0=EA=B8=B0=EA=B0=80 =EC= =A0=95=EB=A7=90=EB=A1=9C =ED=96=89=ED=95=B4=EC=A1=8C=EB=8B=A4=EB=A9=B4,= CPU 2 =EC=9D=98 X =EB=A1=9C=EB=93=9C=EB=8A=94 1 =EC=9D=84 +=EB=B3=B8=EB=8B=A4=EA=B3=A0 =EB=B3=B4=EC=9E=A5=EB=90=A0 =EC=88=98 =EC=9E= =88=EC=9D=84 =EA=B2=81=EB=8B=88=EB=8B=A4. + +=EC=82=AC=EC=9A=A9 =EA=B0=80=EB=8A=A5=ED=95=9C =EA=B9=A8=EC=9A=B0=EA=B8= =B0=EB=A5=98 =ED=95=A8=EC=88=98=EB=93=A4=EB=A1=9C =EB=8B=A4=EC=9D=8C=EA= =B3=BC =EA=B0=99=EC=9D=80 =EA=B2=83=EB=93=A4=EC=9D=B4 =EC=9E=88=EC=8A=B5= =EB=8B=88=EB=8B=A4: + + complete(); + wake_up(); + wake_up_all(); + wake_up_bit(); + wake_up_interruptible(); + wake_up_interruptible_all(); + wake_up_interruptible_nr(); + wake_up_interruptible_poll(); + wake_up_interruptible_sync(); + wake_up_interruptible_sync_poll(); + wake_up_locked(); + wake_up_locked_poll(); + wake_up_nr(); + wake_up_poll(); + wake_up_process(); + + +[!] =EC=9E=A0=EC=9E=AC=EC=9A=B0=EB=8A=94 =EC=BD=94=EB=93=9C=EC=99=80 =EA= =B9=A8=EC=9A=B0=EB=8A=94 =EC=BD=94=EB=93=9C=EC=97=90 =EB=82=B4=ED=8F=AC= =EB=90=98=EB=8A=94 =EB=A9=94=EB=AA=A8=EB=A6=AC =EB=B0=B0=EB=A6=AC=EC=96= =B4=EB=93=A4=EC=9D=80 =EA=B9=A8=EC=9A=B0=EA=B8=B0 =EC=A0=84=EC=97=90 +=EC=9D=B4=EB=A3=A8=EC=96=B4=EC=A7=84 =EC=8A=A4=ED=86=A0=EC=96=B4=EB=A5= =BC =EC=9E=A0=EC=9E=AC=EC=9A=B0=EB=8A=94 =EC=BD=94=EB=93=9C=EA=B0=80 se= t_current_state() =EB=A5=BC =ED=98=B8=EC=B6=9C=ED=95=9C =ED=9B=84=EC=97= =90 =ED=96=89=ED=95=98=EB=8A=94 +=EB=A1=9C=EB=93=9C=EC=97=90 =EB=8C=80=ED=95=B4 =EC=88=9C=EC=84=9C=EB=A5= =BC =EB=A7=9E=EC=B6=94=EC=A7=80 _=EC=95=8A=EB=8A=94=EB=8B=A4=EB=8A=94_ = =EC=A0=90=EC=9D=84 =EA=B8=B0=EC=96=B5=ED=95=98=EC=84=B8=EC=9A=94. =EC=98= =88=EB=A5=BC =EB=93=A4=EC=96=B4, =EC=9E=A0=EC=9E=AC=EC=9A=B0=EB=8A=94 +=EC=BD=94=EB=93=9C=EA=B0=80 =EB=8B=A4=EC=9D=8C=EA=B3=BC =EA=B0=99=EA=B3= =A0: + + set_current_state(TASK_INTERRUPTIBLE); + if (event_indicated) + break; + __set_current_state(TASK_RUNNING); + do_something(my_data); + +=EA=B9=A8=EC=9A=B0=EB=8A=94 =EC=BD=94=EB=93=9C=EB=8A=94 =EB=8B=A4=EC=9D= =8C=EA=B3=BC =EA=B0=99=EB=8B=A4=EB=A9=B4: + + my_data =3D value; + event_indicated =3D 1; + wake_up(&event_wait_queue); + +event_indecated =EC=97=90=EC=9D=98 =EB=B3=80=EA=B2=BD=EC=9D=B4 =EC=9E=A0= =EC=9E=AC=EC=9A=B0=EB=8A=94 =EC=BD=94=EB=93=9C=EC=97=90=EA=B2=8C my_dat= a =EC=97=90=EC=9D=98 =EB=B3=80=EA=B2=BD =ED=9B=84=EC=97=90 =EC=9D=B4=EB= =A3=A8=EC=96=B4=EC=A7=84 +=EA=B2=83=EC=9C=BC=EB=A1=9C =EC=9D=B8=EC=A7=80=EB=90=A0 =EA=B2=83=EC=9D= =B4=EB=9D=BC=EB=8A=94 =EB=B3=B4=EC=9E=A5=EC=9D=B4 =EC=97=86=EC=8A=B5=EB= =8B=88=EB=8B=A4. =EC=9D=B4=EB=9F=B0 =EA=B2=BD=EC=9A=B0=EC=97=90=EB=8A=94= =EC=96=91=EC=AA=BD =EC=BD=94=EB=93=9C =EB=AA=A8=EB=91=90 =EA=B0=81=EA=B0= =81=EC=9D=98 +=EB=8D=B0=EC=9D=B4=ED=84=B0 =EC=95=A1=EC=84=B8=EC=8A=A4 =EC=82=AC=EC=9D= =B4=EC=97=90 =EB=A9=94=EB=AA=A8=EB=A6=AC =EB=B0=B0=EB=A6=AC=EC=96=B4=EB= =A5=BC =EC=A7=81=EC=A0=91 =EC=B3=90=EC=95=BC =ED=95=A9=EB=8B=88=EB=8B=A4= =2E =EB=94=B0=EB=9D=BC=EC=84=9C =EC=95=9E=EC=9D=98 =EC=9E=AC=EC=9A=B0=EB= =8A=94 +=EC=BD=94=EB=93=9C=EB=8A=94 =EB=8B=A4=EC=9D=8C=EA=B3=BC =EA=B0=99=EC=9D= =B4: + + set_current_state(TASK_INTERRUPTIBLE); + if (event_indicated) { + smp_rmb(); + do_something(my_data); + } + +=EA=B7=B8=EB=A6=AC=EA=B3=A0 =EA=B9=A8=EC=9A=B0=EB=8A=94 =EC=BD=94=EB=93= =9C=EB=8A=94 =EB=8B=A4=EC=9D=8C=EA=B3=BC =EA=B0=99=EC=9D=B4 =EB=90=98=EC= =96=B4=EC=95=BC =ED=95=A9=EB=8B=88=EB=8B=A4: + + my_data =3D value; + smp_wmb(); + event_indicated =3D 1; + wake_up(&event_wait_queue); + + +=EA=B7=B8=EC=99=B8=EC=9D=98 =ED=95=A8=EC=88=98=EB=93=A4 +------------- + +=EA=B7=B8=EC=99=B8=EC=9D=98 =EB=B0=B0=EB=A6=AC=EC=96=B4=EB=A5=BC =EB=82= =B4=ED=8F=AC=ED=95=98=EB=8A=94 =ED=95=A8=EC=88=98=EB=93=A4=EC=9D=80 =EB= =8B=A4=EC=9D=8C=EA=B3=BC =EA=B0=99=EC=8A=B5=EB=8B=88=EB=8B=A4: + + (*) schedule() =EA=B3=BC =EA=B7=B8 =EC=9C=A0=EC=82=AC=ED=95=9C =EA=B2= =83=EB=93=A4=EC=9D=B4 =EC=99=84=EC=A0=84=ED=95=9C =EB=A9=94=EB=AA=A8=EB= =A6=AC =EB=B0=B0=EB=A6=AC=EC=96=B4=EB=A5=BC =EB=82=B4=ED=8F=AC=ED=95=A9= =EB=8B=88=EB=8B=A4. + + +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D +CPU =EA=B0=84 ACQUIRING =EB=B0=B0=EB=A6=AC=EC=96=B4=EC=9D=98 =ED=9A=A8= =EA=B3=BC +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D + +SMP =EC=8B=9C=EC=8A=A4=ED=85=9C=EC=97=90=EC=84=9C=EC=9D=98 =EB=9D=BD =EA= =B8=B0=EB=8A=A5=EB=93=A4=EC=9D=80 =EB=8D=94=EC=9A=B1 =EA=B0=95=EB=A0=A5= =ED=95=9C =ED=98=95=ED=83=9C=EC=9D=98 =EB=B0=B0=EB=A6=AC=EC=96=B4=EB=A5= =BC =EC=A0=9C=EA=B3=B5=ED=95=A9=EB=8B=88=EB=8B=A4: =EC=9D=B4 +=EB=B0=B0=EB=A6=AC=EC=96=B4=EB=8A=94 =EB=8F=99=EC=9D=BC=ED=95=9C =EB=9D= =BD=EC=9D=84 =EC=82=AC=EC=9A=A9=ED=95=98=EB=8A=94 =EB=8B=A4=EB=A5=B8 CP= U =EB=93=A4=EC=9D=98 =EB=A9=94=EB=AA=A8=EB=A6=AC =EC=95=A1=EC=84=B8=EC=8A= =A4 =EC=88=9C=EC=84=9C=EC=97=90=EB=8F=84 =EC=98=81=ED=96=A5=EC=9D=84 +=EB=81=BC=EC=B9=A9=EB=8B=88=EB=8B=A4. + + +ACQUIRE VS =EB=A9=94=EB=AA=A8=EB=A6=AC =EC=95=A1=EC=84=B8=EC=8A=A4 +------------------------ + +=EB=8B=A4=EC=9D=8C=EC=9D=98 =EC=98=88=EB=A5=BC =EC=83=9D=EA=B0=81=ED=95= =B4 =EB=B4=85=EC=8B=9C=EB=8B=A4: =EC=8B=9C=EC=8A=A4=ED=85=9C=EC=9D=80 =EB= =91=90=EA=B0=9C=EC=9D=98 =EC=8A=A4=ED=95=80=EB=9D=BD (M) =EA=B3=BC (Q),= =EA=B7=B8=EB=A6=AC=EA=B3=A0 =EC=84=B8=EA=B0=9C=EC=9D=98 CPU +=EB=A5=BC =EA=B0=80=EC=A7=80=EA=B3=A0 =EC=9E=88=EC=8A=B5=EB=8B=88=EB=8B= =A4; =EC=97=AC=EA=B8=B0=EC=97=90 =EB=8B=A4=EC=9D=8C=EC=9D=98 =EC=9D=B4=EB= =B2=A4=ED=8A=B8 =EC=8B=9C=ED=80=80=EC=8A=A4=EA=B0=80 =EB=B0=9C=EC=83=9D= =ED=95=A9=EB=8B=88=EB=8B=A4: + + CPU 1 CPU 2 + =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D + WRITE_ONCE(*A, a); WRITE_ONCE(*E, e); + ACQUIRE M ACQUIRE Q + WRITE_ONCE(*B, b); WRITE_ONCE(*F, f); + WRITE_ONCE(*C, c); WRITE_ONCE(*G, g); + RELEASE M RELEASE Q + WRITE_ONCE(*D, d); WRITE_ONCE(*H, h); + +*A =EB=A1=9C=EC=9D=98 =EC=95=A1=EC=84=B8=EC=8A=A4=EB=B6=80=ED=84=B0 *H= =EB=A1=9C=EC=9D=98 =EC=95=A1=EC=84=B8=EC=8A=A4=EA=B9=8C=EC=A7=80=EA=B0= =80 =EC=96=B4=EB=96=A4 =EC=88=9C=EC=84=9C=EB=A1=9C CPU 3 =EC=97=90=EA=B2= =8C =EB=B3=B4=EC=97=AC=EC=A7=88=EC=A7=80=EC=97=90 +=EB=8C=80=ED=95=B4=EC=84=9C=EB=8A=94 =EA=B0=81 CPU =EC=97=90=EC=84=9C=EC= =9D=98 =EB=9D=BD =EC=82=AC=EC=9A=A9=EC=97=90 =EC=9D=98=ED=95=B4 =EB=82=B4= =ED=8F=AC=EB=90=98=EC=96=B4 =EC=9E=88=EB=8A=94 =EC=A0=9C=EC=95=BD=EC=9D= =84 =EC=A0=9C=EC=99=B8=ED=95=98=EA=B3=A0=EB=8A=94 =EC=96=B4=EB=96=A4 +=EB=B3=B4=EC=9E=A5=EB=8F=84 =EC=A1=B4=EC=9E=AC=ED=95=98=EC=A7=80 =EC=95= =8A=EC=8A=B5=EB=8B=88=EB=8B=A4. =EC=98=88=EB=A5=BC =EB=93=A4=EC=96=B4,= CPU 3 =EC=97=90=EA=B2=8C =EB=8B=A4=EC=9D=8C=EA=B3=BC =EA=B0=99=EC=9D=80= =EC=88=9C=EC=84=9C=EB=A1=9C =EB=B3=B4=EC=97=AC=EC=A7=80=EB=8A=94 +=EA=B2=83=EC=9D=B4 =EA=B0=80=EB=8A=A5=ED=95=A9=EB=8B=88=EB=8B=A4: + + *E, ACQUIRE M, ACQUIRE Q, *G, *C, *F, *A, *B, RELEASE Q, *D, *H, RELE= ASE M + +=ED=95=98=EC=A7=80=EB=A7=8C =EB=8B=A4=EC=9D=8C=EA=B3=BC =EA=B0=99=EC=9D= =B4 =EB=B3=B4=EC=9D=B4=EC=A7=80=EB=8A=94 =EC=95=8A=EC=9D=84 =EA=B2=81=EB= =8B=88=EB=8B=A4: + + *B, *C or *D preceding ACQUIRE M + *A, *B or *C following RELEASE M + *F, *G or *H preceding ACQUIRE Q + *E, *F or *G following RELEASE Q + + + +ACQUIRE VS I/O =EC=95=A1=EC=84=B8=EC=8A=A4 +---------------------- + +=ED=8A=B9=EC=A0=95=ED=95=9C (=ED=8A=B9=ED=9E=88 NUMA =EA=B0=80 =EA=B4=80= =EB=A0=A8=EB=90=9C) =ED=99=98=EA=B2=BD =ED=95=98=EC=97=90=EC=84=9C =EB=91= =90=EA=B0=9C=EC=9D=98 CPU =EC=97=90=EC=84=9C =EB=8F=99=EC=9D=BC=ED=95=9C= =EC=8A=A4=ED=95=80=EB=9D=BD=EC=9C=BC=EB=A1=9C +=EB=B3=B4=ED=98=B8=EB=90=98=EB=8A=94 =EB=91=90=EA=B0=9C=EC=9D=98 =ED=81= =AC=EB=A6=AC=ED=8B=B0=EC=BB=AC =EC=84=B9=EC=85=98 =EC=95=88=EC=9D=98 I/= O =EC=95=A1=EC=84=B8=EC=8A=A4=EB=8A=94 PCI =EB=B8=8C=EB=A6=BF=EC=A7=80=EC= =97=90 =EA=B2=B9=EC=B3=90=EC=A7=84 I/O +=EC=95=A1=EC=84=B8=EC=8A=A4=EB=A1=9C =EB=B3=B4=EC=9D=BC =EC=88=98 =EC=9E= =88=EB=8A=94=EB=8D=B0, PCI =EB=B8=8C=EB=A6=BF=EC=A7=80=EB=8A=94 =EC=BA=90= =EC=8B=9C =EC=9D=BC=EA=B4=80=EC=84=B1 =ED=94=84=EB=A1=9C=ED=86=A0=EC=BD= =9C=EA=B3=BC =ED=95=A9=EC=9D=84 =EB=A7=9E=EC=B6=B0=EC=95=BC =ED=95=A0 +=EC=9D=98=EB=AC=B4=EA=B0=80 =EC=97=86=EC=9C=BC=EB=AF=80=EB=A1=9C, =ED=95= =84=EC=9A=94=ED=95=9C =EC=9D=BD=EA=B8=B0 =EB=A9=94=EB=AA=A8=EB=A6=AC =EB= =B0=B0=EB=A6=AC=EC=96=B4=EA=B0=80 =EC=9A=94=EC=B2=AD=EB=90=98=EC=A7=80 = =EC=95=8A=EA=B8=B0 =EB=95=8C=EB=AC=B8=EC=9E=85=EB=8B=88=EB=8B=A4. + +=EC=98=88=EB=A5=BC =EB=93=A4=EC=96=B4=EC=84=9C: + + CPU 1 CPU 2 + =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D + spin_lock(Q) + writel(0, ADDR) + writel(1, DATA); + spin_unlock(Q); + spin_lock(Q); + writel(4, ADDR); + writel(5, DATA); + spin_unlock(Q); + +=EB=8A=94 PCI =EB=B8=8C=EB=A6=BF=EC=A7=80=EC=97=90 =EB=8B=A4=EC=9D=8C=EA= =B3=BC =EA=B0=99=EC=9D=B4 =EB=B3=B4=EC=9D=BC =EC=88=98 =EC=9E=88=EC=8A=B5= =EB=8B=88=EB=8B=A4: + + STORE *ADDR =3D 0, STORE *ADDR =3D 4, STORE *DATA =3D 1, STORE *DATA = =3D 5 + +=EC=9D=B4=EB=A0=87=EA=B2=8C =EB=90=98=EB=A9=B4 =ED=95=98=EB=93=9C=EC=9B= =A8=EC=96=B4=EC=9D=98 =EC=98=A4=EB=8F=99=EC=9E=91=EC=9D=84 =EC=9D=BC=EC= =9C=BC=ED=82=AC =EC=88=98 =EC=9E=88=EC=8A=B5=EB=8B=88=EB=8B=A4. + + +=EC=9D=B4=EB=9F=B0 =EA=B2=BD=EC=9A=B0=EC=97=94 =EC=9E=A1=EC=95=84=EB=91= =94 =EC=8A=A4=ED=95=80=EB=9D=BD=EC=9D=84 =EB=82=B4=EB=A0=A4=EB=86=93=EA= =B8=B0 =EC=A0=84=EC=97=90 mmiowb() =EB=A5=BC =EC=88=98=ED=96=89=ED=95=B4= =EC=95=BC =ED=95=98=EB=8A=94=EB=8D=B0, =EC=98=88=EB=A5=BC +=EB=93=A4=EB=A9=B4 =EB=8B=A4=EC=9D=8C=EA=B3=BC =EA=B0=99=EC=8A=B5=EB=8B= =88=EB=8B=A4: + + CPU 1 CPU 2 + =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D + spin_lock(Q) + writel(0, ADDR) + writel(1, DATA); + mmiowb(); + spin_unlock(Q); + spin_lock(Q); + writel(4, ADDR); + writel(5, DATA); + mmiowb(); + spin_unlock(Q); + +=EC=9D=B4 =EC=BD=94=EB=93=9C=EB=8A=94 CPU 1 =EC=97=90=EC=84=9C =EC=9A=94= =EC=B2=AD=EB=90=9C =EB=91=90=EA=B0=9C=EC=9D=98 =EC=8A=A4=ED=86=A0=EC=96= =B4=EA=B0=80 PCI =EB=B8=8C=EB=A6=BF=EC=A7=80=EC=97=90 CPU 2 =EC=97=90=EC= =84=9C =EC=9A=94=EC=B2=AD=EB=90=9C +=EC=8A=A4=ED=86=A0=EC=96=B4=EB=93=A4=EB=B3=B4=EB=8B=A4 =EB=A8=BC=EC=A0= =80 =EB=B3=B4=EC=97=AC=EC=A7=90=EC=9D=84 =EB=B3=B4=EC=9E=A5=ED=95=A9=EB= =8B=88=EB=8B=A4. + + +=EB=98=90=ED=95=9C, =EA=B0=99=EC=9D=80 =EB=94=94=EB=B0=94=EC=9D=B4=EC=8A= =A4=EC=97=90=EC=84=9C =EC=8A=A4=ED=86=A0=EC=96=B4=EB=A5=BC =EC=9D=B4=EC= =96=B4 =EB=A1=9C=EB=93=9C=EA=B0=80 =EC=88=98=ED=96=89=EB=90=98=EB=A9=B4= =EC=9D=B4 =EB=A1=9C=EB=93=9C=EB=8A=94 =EB=A1=9C=EB=93=9C=EA=B0=80 =EC=88= =98=ED=96=89=EB=90=98=EA=B8=B0 +=EC=A0=84=EC=97=90 =EC=8A=A4=ED=86=A0=EC=96=B4=EA=B0=80 =EC=99=84=EB=A3= =8C=EB=90=98=EA=B8=B0=EB=A5=BC =EA=B0=95=EC=A0=9C=ED=95=98=EB=AF=80=EB=A1= =9C mmiowb() =EC=9D=98 =ED=95=84=EC=9A=94=EA=B0=80 =EC=97=86=EC=96=B4=EC= =A7=91=EB=8B=88=EB=8B=A4: + + CPU 1 CPU 2 + =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D + spin_lock(Q) + writel(0, ADDR) + a =3D readl(DATA); + spin_unlock(Q); + spin_lock(Q); + writel(4, ADDR); + b =3D readl(DATA); + spin_unlock(Q); + + +=EB=8D=94 =EB=A7=8E=EC=9D=80 =EC=A0=95=EB=B3=B4=EB=A5=BC =EC=9C=84=ED=95= =B4=EC=84=A0 Documenataion/DocBook/deviceiobook.tmpl =EC=9D=84 =EC=B0=B8= =EA=B3=A0=ED=95=98=EC=84=B8=EC=9A=94. + + +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D +=EB=A9=94=EB=AA=A8=EB=A6=AC =EB=B0=B0=EB=A6=AC=EC=96=B4=EA=B0=80 =ED=95= =84=EC=9A=94=ED=95=9C =EA=B3=B3 +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D + +=EC=84=A4=EB=A0=B9 SMP =EC=BB=A4=EB=84=90=EC=9D=84 =EC=82=AC=EC=9A=A9=ED= =95=98=EB=8D=94=EB=9D=BC=EB=8F=84 =EC=8B=B1=EA=B8=80 =EC=93=B0=EB=A0=88= =EB=93=9C=EB=A1=9C =EB=8F=99=EC=9E=91=ED=95=98=EB=8A=94 =EC=BD=94=EB=93= =9C=EB=8A=94 =EC=98=AC=EB=B0=94=EB=A5=B4=EA=B2=8C =EB=8F=99=EC=9E=91=ED= =95=98=EB=8A=94 +=EA=B2=83=EC=9C=BC=EB=A1=9C =EB=B3=B4=EC=97=AC=EC=A7=88 =EA=B2=83=EC=9D= =B4=EA=B8=B0 =EB=95=8C=EB=AC=B8=EC=97=90, =ED=8F=89=EB=B2=94=ED=95=9C =EC= =8B=9C=EC=8A=A4=ED=85=9C =EC=9A=B4=EC=98=81=EC=A4=91=EC=97=90 =EB=A9=94= =EB=AA=A8=EB=A6=AC =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85=98 =EC=9E= =AC=EB=B0=B0=EC=B9=98=EB=8A=94 +=EC=9D=BC=EB=B0=98=EC=A0=81=EC=9C=BC=EB=A1=9C =EB=AC=B8=EC=A0=9C=EA=B0= =80 =EB=90=98=EC=A7=80 =EC=95=8A=EC=8A=B5=EB=8B=88=EB=8B=A4. =ED=95=98= =EC=A7=80=EB=A7=8C, =EC=9E=AC=EB=B0=B0=EC=B9=98=EA=B0=80 =EB=AC=B8=EC=A0= =9C=EA=B0=80 _=EB=90=A0 =EC=88=98 =EC=9E=88=EB=8A=94_ =EB=84=A4=EA=B0=80= =EC=A7=80 +=ED=99=98=EA=B2=BD=EC=9D=B4 =EC=9E=88=EC=8A=B5=EB=8B=88=EB=8B=A4: + + (*) =ED=94=84=EB=A1=9C=EC=84=B8=EC=84=9C=EA=B0=84 =EC=83=81=ED=98=B8 = =EC=9E=91=EC=9A=A9. + + (*) =EC=96=B4=ED=86=A0=EB=AF=B9 =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC= =85=98. + + (*) =EB=94=94=EB=B0=94=EC=9D=B4=EC=8A=A4 =EC=95=A1=EC=84=B8=EC=8A=A4. + + (*) =EC=9D=B8=ED=84=B0=EB=9F=BD=ED=8A=B8. + + +=ED=94=84=EB=A1=9C=EC=84=B8=EC=84=9C=EA=B0=84 =EC=83=81=ED=98=B8 =EC=9E= =91=EC=9A=A9 +-------------------- + +=EB=91=90=EA=B0=9C =EC=9D=B4=EC=83=81=EC=9D=98 =ED=94=84=EB=A1=9C=EC=84= =B8=EC=84=9C=EB=A5=BC =EA=B0=80=EC=A7=84 =EC=8B=9C=EC=8A=A4=ED=85=9C=EC= =9D=B4 =EC=9E=88=EB=8B=A4=EB=A9=B4, =EC=8B=9C=EC=8A=A4=ED=85=9C=EC=9D=98= =EB=91=90=EA=B0=9C =EC=9D=B4=EC=83=81=EC=9D=98 CPU =EB=8A=94 =EB=8F=99= =EC=8B=9C=EC=97=90 +=EA=B0=99=EC=9D=80 =EB=8D=B0=EC=9D=B4=ED=84=B0=EC=97=90 =EB=8C=80=ED=95= =9C =EC=9E=91=EC=97=85=EC=9D=84 =ED=95=A0 =EC=88=98 =EC=9E=88=EC=8A=B5=EB= =8B=88=EB=8B=A4. =EC=9D=B4=EB=8A=94 =EB=8F=99=EA=B8=B0=ED=99=94 =EB=AC= =B8=EC=A0=9C=EB=A5=BC =EC=9D=BC=EC=9C=BC=ED=82=AC =EC=88=98 =EC=9E=88=EA= =B3=A0, +=EC=9D=B4 =EB=AC=B8=EC=A0=9C=EB=A5=BC =ED=95=B4=EA=B2=B0=ED=95=98=EB=8A= =94 =EC=9D=BC=EB=B0=98=EC=A0=81 =EB=B0=A9=EB=B2=95=EC=9D=80 =EB=9D=BD=EC= =9D=84 =EC=82=AC=EC=9A=A9=ED=95=98=EB=8A=94 =EA=B2=83=EC=9E=85=EB=8B=88= =EB=8B=A4. =ED=95=98=EC=A7=80=EB=A7=8C, =EB=9D=BD=EC=9D=80 =EC=83=81=EB= =8B=B9=ED=9E=88 +=EB=B9=84=EC=9A=A9=EC=9D=B4 =EB=B9=84=EC=8B=B8=EC=84=9C =EA=B0=80=EB=8A= =A5=ED=95=98=EB=A9=B4 =EB=9D=BD=EC=9D=84 =EC=82=AC=EC=9A=A9=ED=95=98=EC= =A7=80 =EC=95=8A=EA=B3=A0 =EC=9D=BC=EC=9D=84 =EC=B2=98=EB=A6=AC=ED=95=98= =EB=8A=94 =EA=B2=83=EC=9D=B4 =EB=82=AB=EC=8A=B5=EB=8B=88=EB=8B=A4. =EC= =9D=B4=EB=9F=B0 +=EA=B2=BD=EC=9A=B0, =EB=91=90 CPU =EB=AA=A8=EB=91=90=EC=97=90 =EC=98=81= =ED=96=A5=EC=9D=84 =EB=81=BC=EC=B9=98=EB=8A=94 =EC=98=A4=ED=8D=BC=EB=A0= =88=EC=9D=B4=EC=85=98=EB=93=A4=EC=9D=80 =EC=98=A4=EB=8F=99=EC=9E=91=EC=9D= =84 =EB=A7=89=EA=B8=B0 =EC=9C=84=ED=95=B4 =EC=8B=A0=EC=A4=91=ED=95=98=EA= =B2=8C +=EC=88=9C=EC=84=9C=EA=B0=80 =EB=A7=9E=EC=B6=B0=EC=A0=B8=EC=95=BC =ED=95= =A9=EB=8B=88=EB=8B=A4. + +=EC=98=88=EB=A5=BC =EB=93=A4=EC=96=B4, R/W =EC=84=B8=EB=A7=88=ED=8F=AC= =EC=96=B4=EC=9D=98 =EB=8A=90=EB=A6=B0 =EC=88=98=ED=96=89=EA=B2=BD=EB=A1= =9C (slow path) =EB=A5=BC =EC=83=9D=EA=B0=81=ED=95=B4 =EB=B4=85=EC=8B=9C= =EB=8B=A4. +=EC=84=B8=EB=A7=88=ED=8F=AC=EC=96=B4=EB=A5=BC =EC=9C=84=ED=95=B4 =EB=8C= =80=EA=B8=B0=EB=A5=BC =ED=95=98=EB=8A=94 =ED=95=98=EB=82=98=EC=9D=98 =ED= =94=84=EB=A1=9C=EC=84=B8=EC=8A=A4=EA=B0=80 =EC=9E=90=EC=8B=A0=EC=9D=98 = =EC=8A=A4=ED=83=9D =EC=A4=91 =EC=9D=BC=EB=B6=80=EB=A5=BC =EC=9D=B4 +=EC=84=B8=EB=A7=88=ED=8F=AC=EC=96=B4=EC=9D=98 =EB=8C=80=EA=B8=B0 =ED=94= =84=EB=A1=9C=EC=84=B8=EC=8A=A4 =EB=A6=AC=EC=8A=A4=ED=8A=B8=EC=97=90 =EB= =A7=81=ED=81=AC=ED=95=9C =EC=B1=84=EB=A1=9C =EC=9E=88=EC=8A=B5=EB=8B=88= =EB=8B=A4: + + struct rw_semaphore { + ... + spinlock_t lock; + struct list_head waiters; + }; + + struct rwsem_waiter { + struct list_head list; + struct task_struct *task; + }; + +=ED=8A=B9=EC=A0=95 =EB=8C=80=EA=B8=B0 =EC=83=81=ED=83=9C =ED=94=84=EB=A1= =9C=EC=84=B8=EC=8A=A4=EB=A5=BC =EA=B9=A8=EC=9A=B0=EA=B8=B0 =EC=9C=84=ED= =95=B4, up_read() =EB=82=98 up_write() =ED=95=A8=EC=88=98=EB=8A=94 =EB=8B= =A4=EC=9D=8C=EA=B3=BC +=EA=B0=99=EC=9D=80 =EC=9D=BC=EC=9D=84 =ED=95=A9=EB=8B=88=EB=8B=A4: + + (1) =EB=8B=A4=EC=9D=8C =EB=8C=80=EA=B8=B0 =EC=83=81=ED=83=9C =ED=94=84= =EB=A1=9C=EC=84=B8=EC=8A=A4 =EB=A0=88=EC=BD=94=EB=93=9C=EB=8A=94 =EC=96= =B4=EB=94=94=EC=9E=88=EB=8A=94=EC=A7=80 =EC=95=8C=EA=B8=B0 =EC=9C=84=ED= =95=B4 =EC=9D=B4 =EB=8C=80=EA=B8=B0 =EC=83=81=ED=83=9C + =ED=94=84=EB=A1=9C=EC=84=B8=EC=8A=A4 =EB=A0=88=EC=BD=94=EB=93=9C=EC= =9D=98 next =ED=8F=AC=EC=9D=B8=ED=84=B0=EB=A5=BC =EC=9D=BD=EC=8A=B5=EB=8B= =88=EB=8B=A4; + + (2) =EC=9D=B4 =EB=8C=80=EA=B8=B0 =EC=83=81=ED=83=9C =ED=94=84=EB=A1=9C= =EC=84=B8=EC=8A=A4=EC=9D=98 task =EA=B5=AC=EC=A1=B0=EC=B2=B4=EB=A1=9C=EC= =9D=98 =ED=8F=AC=EC=9D=B8=ED=84=B0=EB=A5=BC =EC=9D=BD=EC=8A=B5=EB=8B=88= =EB=8B=A4; + + (3) =EC=9D=B4 =EB=8C=80=EA=B8=B0 =EC=83=81=ED=83=9C =ED=94=84=EB=A1=9C= =EC=84=B8=EC=8A=A4=EA=B0=80 =EC=84=B8=EB=A7=88=ED=8F=AC=EC=96=B4=EB=A5=BC= =ED=9A=8D=EB=93=9D=ED=96=88=EC=9D=8C=EC=9D=84 =EC=95=8C=EB=A6=AC=EA=B8= =B0 =EC=9C=84=ED=95=B4 task + =ED=8F=AC=EC=9D=B8=ED=84=B0=EB=A5=BC =EC=B4=88=EA=B8=B0=ED=99=94 = =ED=95=A9=EB=8B=88=EB=8B=A4; + + (4) =ED=95=B4=EB=8B=B9 =ED=83=9C=EC=8A=A4=ED=81=AC=EC=97=90 =EB=8C=80= =ED=95=B4 wake_up_process() =EB=A5=BC =ED=98=B8=EC=B6=9C=ED=95=A9=EB=8B= =88=EB=8B=A4; =EA=B7=B8=EB=A6=AC=EA=B3=A0 + + (5) =ED=95=B4=EB=8B=B9 =EB=8C=80=EA=B8=B0 =EC=83=81=ED=83=9C =ED=94=84= =EB=A1=9C=EC=84=B8=EC=8A=A4=EC=9D=98 task =EA=B5=AC=EC=A1=B0=EC=B2=B4=EB= =A5=BC =EC=9E=A1=EA=B3=A0 =EC=9E=88=EB=8D=98 =EB=A0=88=ED=8D=BC=EB=9F=B0= =EC=8A=A4=EB=A5=BC =ED=95=B4=EC=A0=9C=ED=95=A9=EB=8B=88=EB=8B=A4. + +=EB=8B=AC=EB=A6=AC =EB=A7=90=ED=95=98=EC=9E=90=EB=A9=B4, =EB=8B=A4=EC=9D= =8C =EC=9D=B4=EB=B2=A4=ED=8A=B8 =EC=8B=9C=ED=80=80=EC=8A=A4=EB=A5=BC =EC= =88=98=ED=96=89=ED=95=B4=EC=95=BC =ED=95=A9=EB=8B=88=EB=8B=A4: + + LOAD waiter->list.next; + LOAD waiter->task; + STORE waiter->task; + CALL wakeup + RELEASE task + +=EA=B7=B8=EB=A6=AC=EA=B3=A0 =EC=9D=B4 =EC=9D=B4=EB=B2=A4=ED=8A=B8=EB=93= =A4=EC=9D=B4 =EB=8B=A4=EB=A5=B8 =EC=88=9C=EC=84=9C=EB=A1=9C =EC=88=98=ED= =96=89=EB=90=9C=EB=8B=A4=EB=A9=B4, =EC=98=A4=EB=8F=99=EC=9E=91=EC=9D=B4= =EC=9D=BC=EC=96=B4=EB=82=A0 =EC=88=98 =EC=9E=88=EC=8A=B5=EB=8B=88=EB=8B= =A4. + +=ED=95=9C=EB=B2=88 =EC=84=B8=EB=A7=88=ED=8F=AC=EC=96=B4=EC=9D=98 =EB=8C= =80=EA=B8=B0=EC=A4=84=EC=97=90 =EB=93=A4=EC=96=B4=EA=B0=94=EA=B3=A0 =EC= =84=B8=EB=A7=88=ED=8F=AC=EC=96=B4 =EB=9D=BD=EC=9D=84 =EB=86=93=EC=95=98= =EB=8B=A4=EB=A9=B4, =ED=95=B4=EB=8B=B9 =EB=8C=80=EA=B8=B0 =ED=94=84=EB=A1= =9C=EC=84=B8=EC=8A=A4=EB=8A=94 +=EB=9D=BD=EC=9D=84 =EB=8B=A4=EC=8B=9C=EB=8A=94 =EC=9E=A1=EC=A7=80 =EC=95= =8A=EC=8A=B5=EB=8B=88=EB=8B=A4; =EB=8C=80=EC=8B=A0 =EC=9E=90=EC=8B=A0=EC= =9D=98 task =ED=8F=AC=EC=9D=B8=ED=84=B0=EA=B0=80 =EC=B4=88=EA=B8=B0=ED=99= =94 =EB=90=98=EA=B8=B8 =EA=B8=B0=EB=8B=A4=EB=A6=BD=EB=8B=88=EB=8B=A4. +=EA=B7=B8 =EB=A0=88=EC=BD=94=EB=93=9C=EB=8A=94 =EB=8C=80=EA=B8=B0 =ED=94= =84=EB=A1=9C=EC=84=B8=EC=8A=A4=EC=9D=98 =EC=8A=A4=ED=83=9D=EC=97=90 =EC= =9E=88=EA=B8=B0 =EB=95=8C=EB=AC=B8=EC=97=90, =EB=A6=AC=EC=8A=A4=ED=8A=B8= =EC=9D=98 next =ED=8F=AC=EC=9D=B8=ED=84=B0=EA=B0=80 =EC=9D=BD=ED=98=80=EC= =A7=80=EA=B8=B0 +_=EC=A0=84=EC=97=90_ task =ED=8F=AC=EC=9D=B8=ED=84=B0=EA=B0=80 =EC=A7=80= =EC=9B=8C=EC=A7=84=EB=8B=A4=EB=A9=B4, =EB=8B=A4=EB=A5=B8 CPU =EB=8A=94 = =ED=95=B4=EB=8B=B9 =EB=8C=80=EA=B8=B0 =ED=94=84=EB=A1=9C=EC=84=B8=EC=8A= =A4=EB=A5=BC =EC=8B=9C=EC=9E=91=ED=95=B4 =EB=B2=84=EB=A6=AC=EA=B3=A0 +up*() =ED=95=A8=EC=88=98=EA=B0=80 next =ED=8F=AC=EC=9D=B8=ED=84=B0=EB=A5= =BC =EC=9D=BD=EA=B8=B0 =EC=A0=84=EC=97=90 =EB=8C=80=EA=B8=B0 =ED=94=84=EB= =A1=9C=EC=84=B8=EC=8A=A4=EC=9D=98 =EC=8A=A4=ED=83=9D=EC=9D=84 =EB=A7=88= =EA=B5=AC =EA=B1=B4=EB=93=9C=EB=A6=B4 =EC=88=98 +=EC=9E=88=EC=8A=B5=EB=8B=88=EB=8B=A4. + +=EA=B7=B8=EB=A0=87=EA=B2=8C =EB=90=98=EB=A9=B4 =EC=9C=84=EC=9D=98 =EC=9D= =B4=EB=B2=A4=ED=8A=B8 =EC=8B=9C=ED=80=80=EC=8A=A4=EC=97=90 =EC=96=B4=EB= =96=A4 =EC=9D=BC=EC=9D=B4 =EC=9D=BC=EC=96=B4=EB=82=98=EB=8A=94=EC=A7=80= =EC=83=9D=EA=B0=81=ED=95=B4 =EB=B3=B4=EC=A3=A0: + + CPU 1 CPU 2 + =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D + down_xxx() + Queue waiter + Sleep + up_yyy() + LOAD waiter->task; + STORE waiter->task; + Woken up by other event + + Resume processing + down_xxx() returns + call foo() + foo() clobbers *waiter + + LOAD waiter->list.next; + --- OOPS --- + +=EC=9D=B4 =EB=AC=B8=EC=A0=9C=EB=8A=94 =EC=84=B8=EB=A7=88=ED=8F=AC=EC=96= =B4 =EB=9D=BD=EC=9D=98 =EC=82=AC=EC=9A=A9=EC=9C=BC=EB=A1=9C =ED=95=B4=EA= =B2=B0=EB=90=A0 =EC=88=98=EB=8F=84 =EC=9E=88=EA=B2=A0=EC=A7=80=EB=A7=8C= , =EA=B7=B8=EB=A0=87=EA=B2=8C =EB=90=98=EB=A9=B4 =EA=B9=A8=EC=96=B4=EB=82= =9C =ED=9B=84=EC=97=90 +down_xxx() =ED=95=A8=EC=88=98=EA=B0=80 =EB=B6=88=ED=95=84=EC=9A=94=ED=95= =98=EA=B2=8C =EC=8A=A4=ED=95=80=EB=9D=BD=EC=9D=84 =EB=98=90=EB=8B=A4=EC= =8B=9C =EC=96=BB=EC=96=B4=EC=95=BC=EB=A7=8C =ED=95=A9=EB=8B=88=EB=8B=A4= =2E + +=EC=9D=B4 =EB=AC=B8=EC=A0=9C=EB=A5=BC =ED=95=B4=EA=B2=B0=ED=95=98=EB=8A= =94 =EB=B0=A9=EB=B2=95=EC=9D=80 =EB=B2=94=EC=9A=A9 SMP =EB=A9=94=EB=AA=A8= =EB=A6=AC =EB=B0=B0=EB=A6=AC=EC=96=B4=EB=A5=BC =EC=B6=94=EA=B0=80=ED=95= =98=EB=8A=94 =EA=B2=81=EB=8B=88=EB=8B=A4: + + LOAD waiter->list.next; + LOAD waiter->task; + smp_mb(); + STORE waiter->task; + CALL wakeup + RELEASE task + +=EC=9D=B4 =EA=B2=BD=EC=9A=B0=EC=97=90, =EB=B0=B0=EB=A6=AC=EC=96=B4=EB=8A= =94 =EC=8B=9C=EC=8A=A4=ED=85=9C=EC=9D=98 =EB=82=98=EB=A8=B8=EC=A7=80 CP= U =EB=93=A4=EC=97=90=EA=B2=8C =EB=AA=A8=EB=93=A0 =EB=B0=B0=EB=A6=AC=EC=96= =B4 =EC=95=9E=EC=9D=98 =EB=A9=94=EB=AA=A8=EB=A6=AC =EC=95=A1=EC=84=B8=EC= =8A=A4=EA=B0=80 +=EB=B0=B0=EB=A6=AC=EC=96=B4 =EB=92=A4=EC=9D=98 =EB=A9=94=EB=AA=A8=EB=A6= =AC =EC=95=A1=EC=84=B8=EC=8A=A4=EB=B3=B4=EB=8B=A4 =EC=95=9E=EC=84=9C =EC= =9D=BC=EC=96=B4=EB=82=9C =EA=B2=83=EC=9C=BC=EB=A1=9C =EB=B3=B4=EC=9D=B4= =EA=B2=8C =EB=A7=8C=EB=93=AD=EB=8B=88=EB=8B=A4. =EB=B0=B0=EB=A6=AC=EC=96= =B4 =EC=95=9E=EC=9D=98 +=EB=A9=94=EB=AA=A8=EB=A6=AC =EC=95=A1=EC=84=B8=EC=8A=A4=EB=93=A4=EC=9D= =B4 =EB=B0=B0=EB=A6=AC=EC=96=B4 =EB=AA=85=EB=A0=B9 =EC=9E=90=EC=B2=B4=EA= =B0=80 =EC=99=84=EB=A3=8C=EB=90=98=EB=8A=94 =EC=8B=9C=EC=A0=90=EA=B9=8C= =EC=A7=80 =EC=99=84=EB=A3=8C=EB=90=9C=EB=8B=A4=EA=B3=A0=EB=8A=94 =EB=B3= =B4=EC=9E=A5=ED=95=98=EC=A7=80 +_=EC=95=8A=EC=8A=B5=EB=8B=88=EB=8B=A4_. + +(=EC=9D=B4=EA=B2=8C =EB=AC=B8=EC=A0=9C=EA=B0=80 =EB=90=98=EC=A7=80 =EC= =95=8A=EC=9D=84) =EB=8B=A8=EC=9D=BC =ED=94=84=EB=A1=9C=EC=84=B8=EC=84=9C= =EC=8B=9C=EC=8A=A4=ED=85=9C=EC=97=90=EC=84=9C smp_mb() =EB=8A=94 =EC=8B= =A4=EC=A0=9C=EB=A1=9C=EB=8A=94 =EA=B7=B8=EC=A0=80 +=EC=BB=B4=ED=8C=8C=EC=9D=BC=EB=9F=AC=EA=B0=80 CPU =EC=95=88=EC=97=90=EC= =84=9C=EC=9D=98 =EC=88=9C=EC=84=9C=EB=A5=BC =EB=B0=94=EA=BE=B8=EA=B1=B0= =EB=82=98 =ED=95=98=EC=A7=80 =EC=95=8A=EA=B3=A0 =EC=A3=BC=EC=96=B4=EC=A7= =84 =EC=88=9C=EC=84=9C=EB=8C=80=EB=A1=9C =EB=AA=85=EB=A0=B9=EC=9D=84 +=EB=82=B4=EB=A6=AC=EB=8F=84=EB=A1=9D =ED=95=98=EB=8A=94 =EC=BB=B4=ED=8C= =8C=EC=9D=BC=EB=9F=AC =EB=B0=B0=EB=A6=AC=EC=96=B4=EC=9D=BC =EB=BF=90=EC= =9E=85=EB=8B=88=EB=8B=A4. =EC=98=A4=EC=A7=81 =ED=95=98=EB=82=98=EC=9D=98= CPU =EB=A7=8C =EC=9E=88=EC=9C=BC=EB=8B=88, CPU =EC=9D=98 +=EC=9D=98=EC=A1=B4=EC=84=B1 =EC=88=9C=EC=84=9C =EB=A1=9C=EC=A7=81=EC=9D= =B4 =EA=B7=B8 =EC=99=B8=EC=9D=98 =EB=AA=A8=EB=93=A0=EA=B2=83=EC=9D=84 =EC= =95=8C=EC=95=84=EC=84=9C =EC=B2=98=EB=A6=AC=ED=95=A0 =EA=B2=81=EB=8B=88= =EB=8B=A4. + + +=EC=96=B4=ED=86=A0=EB=AF=B9 =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85= =98 +----------------- + +=EC=96=B4=ED=86=A0=EB=AF=B9 =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85= =98=EC=9D=80 =EA=B8=B0=EC=88=A0=EC=A0=81=EC=9C=BC=EB=A1=9C =ED=94=84=EB= =A1=9C=EC=84=B8=EC=84=9C=EA=B0=84 =EC=83=81=ED=98=B8=EC=9E=91=EC=9A=A9=EC= =9C=BC=EB=A1=9C =EB=B6=84=EB=A5=98=EB=90=98=EB=A9=B0 =EA=B7=B8 =EC=A4=91= =EC=9D=BC=EB=B6=80=EB=8A=94 +=EC=A0=84=EC=B2=B4 =EB=A9=94=EB=AA=A8=EB=A6=AC =EB=B0=B0=EB=A6=AC=EC=96= =B4=EB=A5=BC =EB=82=B4=ED=8F=AC=ED=95=98=EA=B3=A0 =EB=98=90 =EC=9D=BC=EB= =B6=80=EB=8A=94 =EB=82=B4=ED=8F=AC=ED=95=98=EC=A7=80 =EC=95=8A=EC=A7=80= =EB=A7=8C, =EC=BB=A4=EB=84=90=EC=97=90=EC=84=9C =EC=83=81=EB=8B=B9=ED=9E= =88 +=EC=9D=98=EC=A1=B4=EC=A0=81=EC=9C=BC=EB=A1=9C =EC=82=AC=EC=9A=A9=ED=95= =98=EB=8A=94 =EA=B8=B0=EB=8A=A5 =EC=A4=91 =ED=95=98=EB=82=98=EC=9E=85=EB= =8B=88=EB=8B=A4. + +=EB=A9=94=EB=AA=A8=EB=A6=AC=EC=9D=98 =EC=96=B4=EB=96=A4 =EC=83=81=ED=83= =9C=EB=A5=BC =EC=88=98=EC=A0=95=ED=95=98=EA=B3=A0 =ED=95=B4=EB=8B=B9 =EC= =83=81=ED=83=9C=EC=97=90 =EB=8C=80=ED=95=9C (=EC=98=88=EC=A0=84=EC=9D=98= =EB=98=90=EB=8A=94 =EC=B5=9C=EC=8B=A0=EC=9D=98) =EC=A0=95=EB=B3=B4=EB=A5= =BC +=EB=A6=AC=ED=84=B4=ED=95=98=EB=8A=94 =EC=96=B4=ED=86=A0=EB=AF=B9 =EC=98= =A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85=98=EC=9D=80 =EB=AA=A8=EB=91=90 SMP= -=EC=A1=B0=EA=B1=B4=EC=A0=81 =EB=B2=94=EC=9A=A9 =EB=A9=94=EB=AA=A8=EB=A6= =AC =EB=B0=B0=EB=A6=AC=EC=96=B4(smp_mb())=EB=A5=BC +=EC=8B=A4=EC=A0=9C =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85=98=EC=9D= =98 =EC=95=9E=EA=B3=BC =EB=92=A4=EC=97=90 =EB=82=B4=ED=8F=AC=ED=95=A9=EB= =8B=88=EB=8B=A4. =EC=9D=B4=EB=9F=B0 =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4= =EC=85=98=EC=9D=80 =EB=8B=A4=EC=9D=8C=EC=9D=98 =EA=B2=83=EB=93=A4=EC=9D= =84 +=ED=8F=AC=ED=95=A8=ED=95=A9=EB=8B=88=EB=8B=A4: + + xchg(); + atomic_xchg(); atomic_long_xchg(); + atomic_inc_return(); atomic_long_inc_return(); + atomic_dec_return(); atomic_long_dec_return(); + atomic_add_return(); atomic_long_add_return(); + atomic_sub_return(); atomic_long_sub_return(); + atomic_inc_and_test(); atomic_long_inc_and_test(); + atomic_dec_and_test(); atomic_long_dec_and_test(); + atomic_sub_and_test(); atomic_long_sub_and_test(); + atomic_add_negative(); atomic_long_add_negative(); + test_and_set_bit(); + test_and_clear_bit(); + test_and_change_bit(); + + /* exchange =EC=A1=B0=EA=B1=B4=EC=9D=B4 =EC=84=B1=EA=B3=B5=ED=95=A0 =EB= =95=8C */ + cmpxchg(); + atomic_cmpxchg(); atomic_long_cmpxchg(); + atomic_add_unless(); atomic_long_add_unless(); + +=EC=9D=B4=EA=B2=83=EB=93=A4=EC=9D=80 =EB=A9=94=EB=AA=A8=EB=A6=AC =EB=B0= =B0=EB=A6=AC=EC=96=B4 =ED=9A=A8=EA=B3=BC=EA=B0=80 =ED=95=84=EC=9A=94=ED= =95=9C ACQUIRE =EB=B6=80=EB=A5=98=EC=99=80 RELEASE =EB=B6=80=EB=A5=98 =EC= =98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85=98=EB=93=A4=EC=9D=84 +=EA=B5=AC=ED=98=84=ED=95=A0 =EB=95=8C, =EA=B7=B8=EB=A6=AC=EA=B3=A0 =EA= =B0=9D=EC=B2=B4 =ED=95=B4=EC=A0=9C=EB=A5=BC =EC=9C=84=ED=95=B4 =EB=A0=88= =ED=8D=BC=EB=9F=B0=EC=8A=A4 =EC=B9=B4=EC=9A=B4=ED=84=B0=EB=A5=BC =EC=A1= =B0=EC=A0=95=ED=95=A0 =EB=95=8C, =EC=95=94=EB=AC=B5=EC=A0=81 =EB=A9=94=EB= =AA=A8=EB=A6=AC +=EB=B0=B0=EB=A6=AC=EC=96=B4 =ED=9A=A8=EA=B3=BC=EA=B0=80 =ED=95=84=EC=9A= =94=ED=95=9C =EA=B3=B3 =EB=93=B1=EC=97=90 =EC=82=AC=EC=9A=A9=EB=90=A9=EB= =8B=88=EB=8B=A4. + + +=EB=8B=A4=EC=9D=8C=EC=9D=98 =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85= =98=EB=93=A4=EC=9D=80 =EB=A9=94=EB=AA=A8=EB=A6=AC =EB=B0=B0=EB=A6=AC=EC= =96=B4=EB=A5=BC =EB=82=B4=ED=8F=AC=ED=95=98=EC=A7=80 _=EC=95=8A=EA=B8=B0= _ =EB=95=8C=EB=AC=B8=EC=97=90 =EB=AC=B8=EC=A0=9C=EA=B0=80 =EB=90=A0 =EC= =88=98 +=EC=9E=88=EC=A7=80=EB=A7=8C, RELEASE =EB=B6=80=EB=A5=98=EC=9D=98 =EC=98= =A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85=98=EB=93=A4=EA=B3=BC =EA=B0=99=EC=9D= =80 =EA=B2=83=EB=93=A4=EC=9D=84 =EA=B5=AC=ED=98=84=ED=95=A0 =EB=95=8C =EC= =82=AC=EC=9A=A9=EB=90=A0 =EC=88=98=EB=8F=84 +=EC=9E=88=EC=8A=B5=EB=8B=88=EB=8B=A4: + + atomic_set(); + set_bit(); + clear_bit(); + change_bit(); + +=EC=9D=B4=EA=B2=83=EB=93=A4=EC=9D=84 =EC=82=AC=EC=9A=A9=ED=95=A0 =EB=95= =8C=EC=97=90=EB=8A=94 =ED=95=84=EC=9A=94=ED=95=98=EB=8B=A4=EB=A9=B4 =EC= =A0=81=EC=A0=88=ED=95=9C (=EC=98=88=EB=A5=BC =EB=93=A4=EB=A9=B4 smp_mb_= _before_atomic() +=EA=B0=99=EC=9D=80) =EB=A9=94=EB=AA=A8=EB=A6=AC =EB=B0=B0=EB=A6=AC=EC=96= =B4=EA=B0=80 =EB=AA=85=EC=8B=9C=EC=A0=81=EC=9C=BC=EB=A1=9C =ED=95=A8=EA= =BB=98 =EC=82=AC=EC=9A=A9=EB=90=98=EC=96=B4=EC=95=BC =ED=95=A9=EB=8B=88= =EB=8B=A4. + + +=EC=95=84=EB=9E=98=EC=9D=98 =EA=B2=83=EB=93=A4=EB=8F=84 =EB=A9=94=EB=AA= =A8=EB=A6=AC =EB=B0=B0=EB=A6=AC=EC=96=B4=EB=A5=BC =EB=82=B4=ED=8F=AC=ED= =95=98=EC=A7=80 _=EC=95=8A=EA=B8=B0_ =EB=95=8C=EB=AC=B8=EC=97=90, =EC=9D= =BC=EB=B6=80 =ED=99=98=EA=B2=BD=EC=97=90=EC=84=9C=EB=8A=94 (=EC=98=88=EB= =A5=BC +=EB=93=A4=EB=A9=B4 smp_mb__before_atomic() =EA=B3=BC =EA=B0=99=EC=9D=80= ) =EB=AA=85=EC=8B=9C=EC=A0=81=EC=9D=B8 =EB=A9=94=EB=AA=A8=EB=A6=AC =EB=B0= =B0=EB=A6=AC=EC=96=B4 =EC=82=AC=EC=9A=A9=EC=9D=B4 =ED=95=84=EC=9A=94=ED= =95=A9=EB=8B=88=EB=8B=A4. + + atomic_add(); + atomic_sub(); + atomic_inc(); + atomic_dec(); + +=EC=9D=B4=EA=B2=83=EB=93=A4=EC=9D=B4 =ED=86=B5=EA=B3=84 =EC=83=9D=EC=84= =B1=EC=9D=84 =EC=9C=84=ED=95=B4 =EC=82=AC=EC=9A=A9=EB=90=9C=EB=8B=A4=EB= =A9=B4, =EA=B7=B8=EB=A6=AC=EA=B3=A0 =ED=86=B5=EA=B3=84 =EB=8D=B0=EC=9D=B4= =ED=84=B0 =EC=82=AC=EC=9D=B4=EC=97=90 =EA=B4=80=EA=B3=84=EA=B0=80 =EC=A1= =B4=EC=9E=AC=ED=95=98=EC=A7=80 +=EC=95=8A=EB=8A=94=EB=8B=A4=EB=A9=B4 =EB=A9=94=EB=AA=A8=EB=A6=AC =EB=B0= =B0=EB=A6=AC=EC=96=B4=EB=8A=94 =ED=95=84=EC=9A=94=EC=B9=98 =EC=95=8A=EC= =9D=84 =EA=B2=81=EB=8B=88=EB=8B=A4. + +=EA=B0=9D=EC=B2=B4=EC=9D=98 =EC=88=98=EB=AA=85=EC=9D=84 =EA=B4=80=EB=A6= =AC=ED=95=98=EA=B8=B0 =EC=9C=84=ED=95=B4 =EB=A0=88=ED=8D=BC=EB=9F=B0=EC= =8A=A4 =EC=B9=B4=EC=9A=B4=ED=8C=85 =EB=AA=A9=EC=A0=81=EC=9C=BC=EB=A1=9C= =EC=82=AC=EC=9A=A9=EB=90=9C=EB=8B=A4=EB=A9=B4, =EB=A0=88=ED=8D=BC=EB=9F= =B0=EC=8A=A4 +=EC=B9=B4=EC=9A=B4=ED=84=B0=EB=8A=94 =EB=9D=BD=EC=9C=BC=EB=A1=9C =EB=B3= =B4=ED=98=B8=EB=90=98=EB=8A=94 =EC=84=B9=EC=85=98=EC=97=90=EC=84=9C=EB=A7= =8C =EC=A1=B0=EC=A0=95=EB=90=98=EA=B1=B0=EB=82=98 =ED=98=B8=EC=B6=9C=ED= =95=98=EB=8A=94 =EC=AA=BD=EC=9D=B4 =EC=9D=B4=EB=AF=B8 =EC=B6=A9=EB=B6=84= =ED=95=9C +=EB=A0=88=ED=8D=BC=EB=9F=B0=EC=8A=A4=EB=A5=BC =EC=9E=A1=EA=B3=A0 =EC=9E= =88=EC=9D=84 =EA=B2=83=EC=9D=B4=EA=B8=B0 =EB=95=8C=EB=AC=B8=EC=97=90 =EB= =A9=94=EB=AA=A8=EB=A6=AC =EB=B0=B0=EB=A6=AC=EC=96=B4=EB=8A=94 =EC=95=84= =EB=A7=88 =ED=95=84=EC=9A=94 =EC=97=86=EC=9D=84 =EA=B2=81=EB=8B=88=EB=8B= =A4. + +=EB=A7=8C=EC=95=BD =EC=96=B4=EB=96=A4 =EB=9D=BD=EC=9D=84 =EA=B5=AC=EC=84= =B1=ED=95=98=EA=B8=B0 =EC=9C=84=ED=95=B4 =EC=82=AC=EC=9A=A9=EB=90=9C=EB= =8B=A4=EB=A9=B4, =EB=9D=BD =EA=B4=80=EB=A0=A8 =EB=8F=99=EC=9E=91=EC=9D=80= =EC=9D=BC=EB=B0=98=EC=A0=81=EC=9C=BC=EB=A1=9C =EC=9E=91=EC=97=85=EC=9D= =84 =ED=8A=B9=EC=A0=95 +=EC=88=9C=EC=84=9C=EB=8C=80=EB=A1=9C =EC=A7=84=ED=96=89=ED=95=B4=EC=95= =BC =ED=95=98=EB=AF=80=EB=A1=9C =EB=A9=94=EB=AA=A8=EB=A6=AC =EB=B0=B0=EB= =A6=AC=EC=96=B4=EA=B0=80 =ED=95=84=EC=9A=94=ED=95=A0 =EC=88=98 =EC=9E=88= =EC=8A=B5=EB=8B=88=EB=8B=A4. + +=EA=B8=B0=EB=B3=B8=EC=A0=81=EC=9C=BC=EB=A1=9C, =EA=B0=81 =EC=82=AC=EC=9A= =A9=EC=B2=98=EC=97=90=EC=84=9C=EB=8A=94 =EB=A9=94=EB=AA=A8=EB=A6=AC =EB= =B0=B0=EB=A6=AC=EC=96=B4=EA=B0=80 =ED=95=84=EC=9A=94=ED=95=9C=EC=A7=80 = =EC=95=84=EB=8B=8C=EC=A7=80 =EC=B6=A9=EB=B6=84=ED=9E=88 =EA=B3=A0=EB=A0= =A4=ED=95=B4=EC=95=BC +=ED=95=A9=EB=8B=88=EB=8B=A4. + +=EC=95=84=EB=9E=98=EC=9D=98 =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85= =98=EB=93=A4=EC=9D=80 =ED=8A=B9=EB=B3=84=ED=95=9C =EB=9D=BD =EA=B4=80=EB= =A0=A8 =EB=8F=99=EC=9E=91=EB=93=A4=EC=9E=85=EB=8B=88=EB=8B=A4: + + test_and_set_bit_lock(); + clear_bit_unlock(); + __clear_bit_unlock(); + +=EC=9D=B4=EA=B2=83=EB=93=A4=EC=9D=80 ACQUIRE =EB=A5=98=EC=99=80 RELEAS= E =EB=A5=98=EC=9D=98 =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85=98=EB=93= =A4=EC=9D=84 =EA=B5=AC=ED=98=84=ED=95=A9=EB=8B=88=EB=8B=A4. =EB=9D=BD = =EA=B4=80=EB=A0=A8 =EB=8F=84=EA=B5=AC=EB=A5=BC +=EA=B5=AC=ED=98=84=ED=95=A0 =EB=95=8C=EC=97=90=EB=8A=94 =EC=9D=B4=EA=B2= =83=EB=93=A4=EC=9D=84 =EC=A2=80 =EB=8D=94 =EC=84=A0=ED=98=B8=ED=95=98=EB= =8A=94 =ED=8E=B8=EC=9D=B4 =EB=82=98=EC=9D=80=EB=8D=B0, =EC=9D=B4=EA=B2=83= =EB=93=A4=EC=9D=98 =EA=B5=AC=ED=98=84=EC=9D=80 =EB=A7=8E=EC=9D=80 +=EC=95=84=ED=82=A4=ED=85=8D=EC=B3=90=EC=97=90=EC=84=9C =EC=B5=9C=EC=A0= =81=ED=99=94 =EB=90=A0 =EC=88=98 =EC=9E=88=EA=B8=B0 =EB=95=8C=EB=AC=B8=EC= =9E=85=EB=8B=88=EB=8B=A4. + +[!] =EC=9D=B4=EB=9F=B0 =EC=83=81=ED=99=A9=EC=97=90 =EC=82=AC=EC=9A=A9=ED= =95=A0 =EC=88=98 =EC=9E=88=EB=8A=94 =ED=8A=B9=EC=88=98=ED=95=9C =EB=A9=94= =EB=AA=A8=EB=A6=AC =EB=B0=B0=EB=A6=AC=EC=96=B4 =EB=8F=84=EA=B5=AC=EB=93= =A4=EC=9D=B4 =EC=9E=88=EC=8A=B5=EB=8B=88=EB=8B=A4=EB=A7=8C, =EC=9D=BC=EB= =B6=80 +CPU =EC=97=90=EC=84=9C=EB=8A=94 =EC=82=AC=EC=9A=A9=EB=90=98=EB=8A=94 =EC= =96=B4=ED=86=A0=EB=AF=B9 =EC=9D=B8=EC=8A=A4=ED=8A=B8=EB=9F=AD=EC=85=98 = =EC=9E=90=EC=B2=B4=EC=97=90 =EB=A9=94=EB=AA=A8=EB=A6=AC =EB=B0=B0=EB=A6= =AC=EC=96=B4=EA=B0=80 =EB=82=B4=ED=8F=AC=EB=90=98=EC=96=B4 =EC=9E=88=EC= =96=B4=EC=84=9C +=EC=96=B4=ED=86=A0=EB=AF=B9 =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85= =98=EA=B3=BC =EB=A9=94=EB=AA=A8=EB=A6=AC =EB=B0=B0=EB=A6=AC=EC=96=B4=EB= =A5=BC =ED=95=A8=EA=BB=98 =EC=82=AC=EC=9A=A9=ED=95=98=EB=8A=94 =EA=B2=8C= =EB=B6=88=ED=95=84=EC=9A=94=ED=95=9C =EC=9D=BC=EC=9D=B4 =EB=90=A0 =EC=88= =98 +=EC=9E=88=EB=8A=94=EB=8D=B0, =EA=B7=B8=EB=9F=B0 =EA=B2=BD=EC=9A=B0=EC=97= =90 =EC=9D=B4 =ED=8A=B9=EC=88=98 =EB=A9=94=EB=AA=A8=EB=A6=AC =EB=B0=B0=EB= =A6=AC=EC=96=B4 =EB=8F=84=EA=B5=AC=EB=93=A4=EC=9D=80 no-op =EC=9D=B4 =EB= =90=98=EC=96=B4 =EC=8B=A4=EC=A7=88=EC=A0=81=EC=9C=BC=EB=A1=9C +=EC=95=84=EB=AC=B4=EC=9D=BC=EB=8F=84 =ED=95=98=EC=A7=80 =EC=95=8A=EC=8A= =B5=EB=8B=88=EB=8B=A4. + +=EB=8D=94 =EB=A7=8E=EC=9D=80 =EB=82=B4=EC=9A=A9=EC=9D=84 =EC=9C=84=ED=95= =B4=EC=84=A0 Documentation/atomic_ops.txt =EB=A5=BC =EC=B0=B8=EA=B3=A0=ED= =95=98=EC=84=B8=EC=9A=94. + + +=EB=94=94=EB=B0=94=EC=9D=B4=EC=8A=A4 =EC=95=A1=EC=84=B8=EC=8A=A4 +--------------- + +=EB=A7=8E=EC=9D=80 =EB=94=94=EB=B0=94=EC=9D=B4=EC=8A=A4=EA=B0=80 =EB=A9= =94=EB=AA=A8=EB=A6=AC =EB=A7=A4=ED=95=91 =EA=B8=B0=EB=B2=95=EC=9C=BC=EB= =A1=9C =EC=A0=9C=EC=96=B4=EB=90=A0 =EC=88=98 =EC=9E=88=EB=8A=94=EB=8D=B0= , =EA=B7=B8=EB=A0=87=EA=B2=8C =EC=A0=9C=EC=96=B4=EB=90=98=EB=8A=94 +=EB=94=94=EB=B0=94=EC=9D=B4=EC=8A=A4=EB=8A=94 CPU =EC=97=90=EB=8A=94 =EB= =8B=A8=EC=A7=80 =ED=8A=B9=EC=A0=95 =EB=A9=94=EB=AA=A8=EB=A6=AC =EC=98=81= =EC=97=AD=EC=9D=98 =EC=A7=91=ED=95=A9=EC=B2=98=EB=9F=BC =EB=B3=B4=EC=9D= =B4=EA=B2=8C =EB=90=A9=EB=8B=88=EB=8B=A4. =EB=93=9C=EB=9D=BC=EC=9D=B4=EB= =B2=84=EB=8A=94 +=EA=B7=B8=EB=9F=B0 =EB=94=94=EB=B0=94=EC=9D=B4=EC=8A=A4=EB=A5=BC =EC=A0= =9C=EC=96=B4=ED=95=98=EA=B8=B0 =EC=9C=84=ED=95=B4 =EC=A0=95=ED=99=95=ED= =9E=88 =EC=98=AC=EB=B0=94=EB=A5=B8 =EC=88=9C=EC=84=9C=EB=A1=9C =EC=98=AC= =EB=B0=94=EB=A5=B8 =EB=A9=94=EB=AA=A8=EB=A6=AC =EC=95=A1=EC=84=B8=EC=8A= =A4=EB=A5=BC +=EB=A7=8C=EB=93=A4=EC=96=B4=EC=95=BC =ED=95=A9=EB=8B=88=EB=8B=A4. + +=ED=95=98=EC=A7=80=EB=A7=8C, =EC=95=A1=EC=84=B8=EC=8A=A4=EB=93=A4=EC=9D= =84 =EC=9E=AC=EB=B0=B0=EC=B9=98 =ED=95=98=EA=B1=B0=EB=82=98 =EC=A1=B0=ED= =95=A9=ED=95=98=EA=B1=B0=EB=82=98 =EB=B3=91=ED=95=A9=ED=95=98=EB=8A=94=EA= =B2=8C =EB=8D=94 =ED=9A=A8=EC=9C=A8=EC=A0=81=EC=9D=B4=EB=9D=BC =ED=8C=90= =EB=8B=A8=ED=95=98=EB=8A=94 +=EC=98=81=EB=A6=AC=ED=95=9C CPU =EB=82=98 =EC=BB=B4=ED=8C=8C=EC=9D=BC=EB= =9F=AC=EB=93=A4=EC=9D=84 =EC=82=AC=EC=9A=A9=ED=95=98=EB=A9=B4 =EB=93=9C= =EB=9D=BC=EC=9D=B4=EB=B2=84 =EC=BD=94=EB=93=9C=EC=9D=98 =EC=A1=B0=EC=8B= =AC=EC=8A=A4=EB=9F=BD=EA=B2=8C =EC=88=9C=EC=84=9C =EB=A7=9E=EC=B6=B0=EC= =A7=84 +=EC=95=A1=EC=84=B8=EC=8A=A4=EB=93=A4=EC=9D=B4 =EB=94=94=EB=B0=94=EC=9D= =B4=EC=8A=A4=EC=97=90=EB=8A=94 =EC=9A=94=EC=B2=AD=EB=90=9C =EC=88=9C=EC= =84=9C=EB=8C=80=EB=A1=9C =EB=8F=84=EC=B0=A9=ED=95=98=EC=A7=80 =EB=AA=BB= =ED=95=98=EA=B2=8C =ED=95=A0 =EC=88=98 =EC=9E=88=EB=8A=94 - =EB=94=94=EB= =B0=94=EC=9D=B4=EC=8A=A4=EA=B0=80 +=EC=98=A4=EB=8F=99=EC=9E=91=EC=9D=84 =ED=95=98=EA=B2=8C =ED=95=A0 - =EC= =9E=A0=EC=9E=AC=EC=A0=81 =EB=AC=B8=EC=A0=9C=EA=B0=80 =EC=83=9D=EA=B8=B8= =EC=88=98 =EC=9E=88=EC=8A=B5=EB=8B=88=EB=8B=A4. + +=EB=A6=AC=EB=88=85=EC=8A=A4 =EC=BB=A4=EB=84=90 =EB=82=B4=EB=B6=80=EC=97= =90=EC=84=9C, I/O =EB=8A=94 =EC=96=B4=EB=96=BB=EA=B2=8C =EC=95=A1=EC=84= =B8=EC=8A=A4=EB=93=A4=EC=9D=84 =EC=A0=81=EC=A0=88=ED=9E=88 =EC=88=9C=EC= =B0=A8=EC=A0=81=EC=9D=B4=EA=B2=8C =EB=A7=8C=EB=93=A4 =EC=88=98 =EC=9E=88= =EB=8A=94=EC=A7=80 +=EC=95=8C=EA=B3=A0 =EC=9E=88=EB=8A=94, - inb() =EB=82=98 writel() =EA=B3= =BC =EA=B0=99=EC=9D=80 - =EC=A0=81=EC=A0=88=ED=95=9C =EC=95=A1=EC=84=B8= =EC=8A=A4 =EB=A3=A8=ED=8B=B4=EC=9D=84 =ED=86=B5=ED=95=B4 =EC=9D=B4=EB=A3= =A8=EC=96=B4=EC=A0=B8=EC=95=BC=EB=A7=8C +=ED=95=A9=EB=8B=88=EB=8B=A4. =EC=9D=B4=EA=B2=83=EB=93=A4=EC=9D=80 =EB= =8C=80=EB=B6=80=EB=B6=84=EC=9D=98 =EA=B2=BD=EC=9A=B0=EC=97=90=EB=8A=94 = =EB=AA=85=EC=8B=9C=EC=A0=81 =EB=A9=94=EB=AA=A8=EB=A6=AC =EB=B0=B0=EB=A6= =AC=EC=96=B4 =EC=99=80 =ED=95=A8=EA=BB=98 =EC=82=AC=EC=9A=A9=EB=90=A0 =ED= =95=84=EC=9A=94=EA=B0=80 +=EC=97=86=EC=8A=B5=EB=8B=88=EB=8B=A4=EB=A7=8C, =EB=8B=A4=EC=9D=8C=EC=9D= =98 =EB=91=90=EA=B0=80=EC=A7=80 =EC=83=81=ED=99=A9=EC=97=90=EC=84=9C=EB= =8A=94 =EB=AA=85=EC=8B=9C=EC=A0=81 =EB=A9=94=EB=AA=A8=EB=A6=AC =EB=B0=B0= =EB=A6=AC=EC=96=B4=EA=B0=80 =ED=95=84=EC=9A=94=ED=95=A0 =EC=88=98 =EC=9E= =88=EC=8A=B5=EB=8B=88=EB=8B=A4: + + (1) =EC=9D=BC=EB=B6=80 =EC=8B=9C=EC=8A=A4=ED=85=9C=EC=97=90=EC=84=9C = I/O =EC=8A=A4=ED=86=A0=EC=96=B4=EB=8A=94 =EB=AA=A8=EB=93=A0 CPU =EC=97=90= =EC=9D=BC=EA=B4=80=EB=90=98=EA=B2=8C =EC=88=9C=EC=84=9C =EB=A7=9E=EC=B6= =B0=EC=A7=80=EC=A7=80 =EC=95=8A=EB=8A=94=EB=8D=B0, + =EB=94=B0=EB=9D=BC=EC=84=9C _=EB=AA=A8=EB=93=A0_ =EC=9D=BC=EB=B0=98= =EC=A0=81=EC=9D=B8 =EB=93=9C=EB=9D=BC=EC=9D=B4=EB=B2=84=EB=93=A4=EC=97=90= =EB=9D=BD=EC=9D=B4 =EC=82=AC=EC=9A=A9=EB=90=98=EC=96=B4=EC=95=BC=EB=A7= =8C =ED=95=98=EA=B3=A0 =EC=9D=B4 =ED=81=AC=EB=A6=AC=ED=8B=B0=EC=BB=AC + =EC=84=B9=EC=85=98=EC=9D=84 =EB=B9=A0=EC=A0=B8=EB=82=98=EC=98=A4=EA= =B8=B0 =EC=A0=84=EC=97=90 mmiowb() =EA=B0=80 =EA=BC=AD =ED=98=B8=EC=B6=9C= =EB=90=98=EC=96=B4=EC=95=BC =ED=95=A9=EB=8B=88=EB=8B=A4. + + (2) =EB=A7=8C=EC=95=BD =EC=95=A1=EC=84=B8=EC=8A=A4 =ED=95=A8=EC=88=98= =EB=93=A4=EC=9D=B4 =EC=99=84=ED=99=94=EB=90=9C =EB=A9=94=EB=AA=A8=EB=A6= =AC =EC=95=A1=EC=84=B8=EC=8A=A4 =EC=86=8D=EC=84=B1=EC=9D=84 =EA=B0=96=EB= =8A=94 I/O =EB=A9=94=EB=AA=A8=EB=A6=AC =EC=9C=88=EB=8F=84=EC=9A=B0=EB=A5= =BC + =EC=82=AC=EC=9A=A9=ED=95=9C=EB=8B=A4=EB=A9=B4, =EC=88=9C=EC=84=9C= =EB=A5=BC =EA=B0=95=EC=A0=9C=ED=95=98=EA=B8=B0 =EC=9C=84=ED=95=B4=EC=84= =A0 _mandatory_ =EB=A9=94=EB=AA=A8=EB=A6=AC =EB=B0=B0=EB=A6=AC=EC=96=B4= =EA=B0=80 =ED=95=84=EC=9A=94=ED=95=A9=EB=8B=88=EB=8B=A4. + +=EB=8D=94 =EB=A7=8E=EC=9D=80 =EC=A0=95=EB=B3=B4=EB=A5=BC =EC=9C=84=ED=95= =B4=EC=84=A0 Documentation/DocBook/deviceiobook.tmpl =EC=9D=84 =EC=B0=B8= =EA=B3=A0=ED=95=98=EC=8B=AD=EC=8B=9C=EC=98=A4. + + +=EC=9D=B8=ED=84=B0=EB=9F=BD=ED=8A=B8 +-------- + +=EB=93=9C=EB=9D=BC=EC=9D=B4=EB=B2=84=EB=8A=94 =EC=9E=90=EC=8B=A0=EC=9D= =98 =EC=9D=B8=ED=84=B0=EB=9F=BD=ED=8A=B8 =EC=84=9C=EB=B9=84=EC=8A=A4 =EB= =A3=A8=ED=8B=B4=EC=97=90 =EC=9D=98=ED=95=B4 =EC=9D=B8=ED=84=B0=EB=9F=BD= =ED=8A=B8 =EB=8B=B9=ED=95=A0 =EC=88=98 =EC=9E=88=EA=B8=B0 =EB=95=8C=EB=AC= =B8=EC=97=90 +=EB=93=9C=EB=9D=BC=EC=9D=B4=EB=B2=84=EC=9D=98 =EC=9D=B4 =EB=91=90 =EB=B6= =80=EB=B6=84=EC=9D=80 =EC=84=9C=EB=A1=9C=EC=9D=98 =EB=94=94=EB=B0=94=EC= =9D=B4=EC=8A=A4 =EC=A0=9C=EC=96=B4 =EB=98=90=EB=8A=94 =EC=95=A1=EC=84=B8= =EC=8A=A4 =EB=B6=80=EB=B6=84=EA=B3=BC =EC=83=81=ED=98=B8 =EA=B0=84=EC=84= =AD=ED=95=A0 =EC=88=98 +=EC=9E=88=EC=8A=B5=EB=8B=88=EB=8B=A4. + +=EC=8A=A4=EC=8A=A4=EB=A1=9C=EC=97=90=EA=B2=8C =EC=9D=B8=ED=84=B0=EB=9F= =BD=ED=8A=B8 =EB=8B=B9=ED=95=98=EB=8A=94 =EA=B1=B8 =EB=B6=88=EA=B0=80=EB= =8A=A5=ED=95=98=EA=B2=8C =ED=95=98=EA=B3=A0, =EB=93=9C=EB=9D=BC=EC=9D=B4= =EB=B2=84=EC=9D=98 =ED=81=AC=EB=A6=AC=ED=8B=B0=EC=BB=AC=ED=95=9C +=EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85=98=EB=93=A4=EC=9D=84 =EB=AA= =A8=EB=91=90 =EC=9D=B8=ED=84=B0=EB=9F=BD=ED=8A=B8=EA=B0=80 =EB=B6=88=EA= =B0=80=EB=8A=A5=ED=95=98=EA=B2=8C =EB=90=9C =EC=98=81=EC=97=AD=EC=97=90= =EC=A7=91=EC=96=B4=EB=84=A3=EA=B1=B0=EB=82=98 =ED=95=98=EB=8A=94 =EB=B0= =A9=EB=B2=95 (=EB=9D=BD=EC=9D=98 +=ED=95=9C =ED=98=95=ED=83=9C) =EC=9C=BC=EB=A1=9C =EC=9D=B4=EB=9F=B0 =EC= =83=81=ED=98=B8 =EA=B0=84=EC=84=AD=EC=9D=84 - =EC=B5=9C=EC=86=8C=ED=95=9C= =EB=B6=80=EB=B6=84=EC=A0=81=EC=9C=BC=EB=A1=9C=EB=9D=BC=EB=8F=84 - =EC=A4= =84=EC=9D=BC =EC=88=98 =EC=9E=88=EC=8A=B5=EB=8B=88=EB=8B=A4. +=EB=93=9C=EB=9D=BC=EC=9D=B4=EB=B2=84=EC=9D=98 =EC=9D=B8=ED=84=B0=EB=9F= =BD=ED=8A=B8 =EB=A3=A8=ED=8B=B4=EC=9D=B4 =EC=8B=A4=ED=96=89 =EC=A4=91=EC= =9D=B8 =EB=8F=99=EC=95=88, =ED=95=B4=EB=8B=B9 =EB=93=9C=EB=9D=BC=EC=9D=B4= =EB=B2=84=EC=9D=98 =EC=BD=94=EC=96=B4=EB=8A=94 =EA=B0=99=EC=9D=80 CPU =EC= =97=90=EC=84=9C +=EC=88=98=ED=96=89=EB=90=98=EC=A7=80 =EC=95=8A=EC=9D=84 =EA=B2=83=EC=9D= =B4=EB=A9=B0, =ED=98=84=EC=9E=AC=EC=9D=98 =EC=9D=B8=ED=84=B0=EB=9F=BD=ED= =8A=B8=EA=B0=80 =EC=B2=98=EB=A6=AC=EB=90=98=EB=8A=94 =EC=A4=91=EC=97=90= =EB=8A=94 =EB=98=90=EB=8B=A4=EC=8B=9C =EC=9D=B8=ED=84=B0=EB=9F=BD=ED=8A= =B8=EA=B0=80 +=EC=9D=BC=EC=96=B4=EB=82=98=EC=A7=80 =EB=AA=BB=ED=95=98=EB=8F=84=EB=A1= =9D =EB=90=98=EC=96=B4 =EC=9E=88=EC=9C=BC=EB=8B=88 =EC=9D=B8=ED=84=B0=EB= =9F=BD=ED=8A=B8 =ED=95=B8=EB=93=A4=EB=9F=AC=EB=8A=94 =EA=B7=B8=EC=97=90= =EB=8C=80=ED=95=B4=EC=84=9C=EB=8A=94 =EB=9D=BD=EC=9D=84 =EC=9E=A1=EC=A7= =80 =EC=95=8A=EC=95=84=EB=8F=84 +=EB=90=A9=EB=8B=88=EB=8B=A4. + +=ED=95=98=EC=A7=80=EB=A7=8C, =EC=96=B4=EB=93=9C=EB=A0=88=EC=8A=A4 =EB=A0= =88=EC=A7=80=EC=8A=A4=ED=84=B0=EC=99=80 =EB=8D=B0=EC=9D=B4=ED=84=B0 =EB= =A0=88=EC=A7=80=EC=8A=A4=ED=84=B0=EB=A5=BC =EA=B0=96=EB=8A=94 =EC=9D=B4= =EB=8D=94=EB=84=B7 =EC=B9=B4=EB=93=9C=EB=A5=BC =EB=8B=A4=EB=A3=A8=EB=8A= =94 +=EB=93=9C=EB=9D=BC=EC=9D=B4=EB=B2=84=EB=A5=BC =EC=83=9D=EA=B0=81=ED=95= =B4 =EB=B4=85=EC=8B=9C=EB=8B=A4. =EB=A7=8C=EC=95=BD =EC=9D=B4 =EB=93=9C= =EB=9D=BC=EC=9D=B4=EB=B2=84=EC=9D=98 =EC=BD=94=EC=96=B4=EA=B0=80 =EC=9D= =B8=ED=84=B0=EB=9F=BD=ED=8A=B8=EB=A5=BC =EB=B9=84=ED=99=9C=EC=84=B1=ED=99= =94=EC=8B=9C=ED=82=A8 +=EC=B1=84=EB=A1=9C =EC=9D=B4=EB=8D=94=EB=84=B7 =EC=B9=B4=EB=93=9C=EC=99= =80 =EB=8C=80=ED=99=94=ED=95=98=EA=B3=A0 =EB=93=9C=EB=9D=BC=EC=9D=B4=EB= =B2=84=EC=9D=98 =EC=9D=B8=ED=84=B0=EB=9F=BD=ED=8A=B8 =ED=95=B8=EB=93=A4= =EB=9F=AC=EA=B0=80 =ED=98=B8=EC=B6=9C=EB=90=98=EC=97=88=EB=8B=A4=EB=A9=B4= : + + LOCAL IRQ DISABLE + writew(ADDR, 3); + writew(DATA, y); + LOCAL IRQ ENABLE + + writew(ADDR, 4); + q =3D readw(DATA); + + +=EB=A7=8C=EC=95=BD =EC=88=9C=EC=84=9C =EA=B7=9C=EC=B9=99=EC=9D=B4 =EC=B6= =A9=EB=B6=84=ED=9E=88 =EC=99=84=ED=99=94=EB=90=98=EC=96=B4 =EC=9E=88=EB= =8B=A4=EB=A9=B4 =EB=8D=B0=EC=9D=B4=ED=84=B0 =EB=A0=88=EC=A7=80=EC=8A=A4= =ED=84=B0=EC=97=90=EC=9D=98 =EC=8A=A4=ED=86=A0=EC=96=B4=EB=8A=94 =EC=96= =B4=EB=93=9C=EB=A0=88=EC=8A=A4 +=EB=A0=88=EC=A7=80=EC=8A=A4=ED=84=B0=EC=97=90 =EB=91=90=EB=B2=88=EC=A7= =B8=EB=A1=9C =ED=96=89=ED=95=B4=EC=A7=80=EB=8A=94 =EC=8A=A4=ED=86=A0=EC= =96=B4 =EB=92=A4=EC=97=90 =EC=9D=BC=EC=96=B4=EB=82=A0 =EC=88=98=EB=8F=84= =EC=9E=88=EC=8A=B5=EB=8B=88=EB=8B=A4: + + STORE *ADDR =3D 3, STORE *ADDR =3D 4, STORE *DATA =3D y, q =3D LOAD *= DATA + + +=EB=A7=8C=EC=95=BD =EC=88=9C=EC=84=9C =EA=B7=9C=EC=B9=99=EC=9D=B4 =EC=B6= =A9=EB=B6=84=ED=9E=88 =EC=99=84=ED=99=94=EB=90=98=EC=96=B4 =EC=9E=88=EA= =B3=A0 =EB=AC=B5=EC=8B=9C=EC=A0=81=EC=9C=BC=EB=A1=9C=EB=93=A0 =EB=AA=85= =EC=8B=9C=EC=A0=81=EC=9C=BC=EB=A1=9C=EB=93=A0 =EB=B0=B0=EB=A6=AC=EC=96=B4= =EA=B0=80 +=EC=82=AC=EC=9A=A9=EB=90=98=EC=A7=80 =EC=95=8A=EC=95=98=EB=8B=A4=EB=A9= =B4 =EC=9D=B8=ED=84=B0=EB=9F=BD=ED=8A=B8 =EB=B9=84=ED=99=9C=EC=84=B1=ED= =99=94 =EC=84=B9=EC=85=98=EC=97=90=EC=84=9C =EC=9D=BC=EC=96=B4=EB=82=9C= =EC=95=A1=EC=84=B8=EC=8A=A4=EA=B0=80 =EB=B0=94=EA=B9=A5=EC=9C=BC=EB=A1= =9C =EC=83=88=EC=96=B4=EC=84=9C +=EC=9D=B8=ED=84=B0=EB=9F=BD=ED=8A=B8 =EB=82=B4=EC=97=90=EC=84=9C =EC=9D= =BC=EC=96=B4=EB=82=9C =EC=95=A1=EC=84=B8=EC=8A=A4=EC=99=80 =EC=84=9E=EC= =9D=BC =EC=88=98 =EC=9E=88=EB=8B=A4=EA=B3=A0 - =EA=B7=B8=EB=A6=AC=EA=B3= =A0 =EA=B7=B8 =EB=B0=98=EB=8C=80=EB=8F=84 - =EA=B0=80=EC=A0=95=ED=95=B4= =EC=95=BC=EB=A7=8C +=ED=95=A9=EB=8B=88=EB=8B=A4. + +=EA=B7=B8=EB=9F=B0 =EC=98=81=EC=97=AD =EC=95=88=EC=97=90=EC=84=9C =EC=9D= =BC=EC=96=B4=EB=82=98=EB=8A=94 I/O =EC=95=A1=EC=84=B8=EC=8A=A4=EB=93=A4= =EC=9D=80 =EC=97=84=EA=B2=A9=ED=95=9C =EC=88=9C=EC=84=9C =EA=B7=9C=EC=B9= =99=EC=9D=98 I/O =EB=A0=88=EC=A7=80=EC=8A=A4=ED=84=B0=EC=97=90 +=EB=AC=B5=EC=8B=9C=EC=A0=81 I/O =EB=B0=B0=EB=A6=AC=EC=96=B4=EB=A5=BC =ED= =98=95=EC=84=B1=ED=95=98=EB=8A=94 =EB=8F=99=EA=B8=B0=EC=A0=81 (synchron= ous) =EB=A1=9C=EB=93=9C =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85=98=EC= =9D=84 =ED=8F=AC=ED=95=A8=ED=95=98=EA=B8=B0 +=EB=95=8C=EB=AC=B8=EC=97=90 =EC=9D=BC=EB=B0=98=EC=A0=81=EC=9C=BC=EB=A1= =9C=EB=8A=94 =EC=9D=B4=EB=9F=B0=EA=B2=8C =EB=AC=B8=EC=A0=9C=EA=B0=80 =EB= =90=98=EC=A7=80 =EC=95=8A=EC=8A=B5=EB=8B=88=EB=8B=A4. =EB=A7=8C=EC=95=BD= =EC=9D=B4=EA=B1=B8=EB=A1=9C=EB=8A=94 =EC=B6=A9=EB=B6=84=EC=B9=98 =EC=95= =8A=EB=8B=A4=EB=A9=B4 +mmiowb() =EA=B0=80 =EB=AA=85=EC=8B=9C=EC=A0=81=EC=9C=BC=EB=A1=9C =EC=82= =AC=EC=9A=A9=EB=90=A0 =ED=95=84=EC=9A=94=EA=B0=80 =EC=9E=88=EC=8A=B5=EB= =8B=88=EB=8B=A4. + + +=ED=95=98=EB=82=98=EC=9D=98 =EC=9D=B8=ED=84=B0=EB=9F=BD=ED=8A=B8 =EB=A3= =A8=ED=8B=B4=EA=B3=BC =EB=B3=84=EB=8F=84=EC=9D=98 CPU =EC=97=90=EC=84=9C= =EC=88=98=ED=96=89=EC=A4=91=EC=9D=B4=EB=A9=B0 =EC=84=9C=EB=A1=9C =ED=86= =B5=EC=8B=A0=EC=9D=84 =ED=95=98=EB=8A=94 =EB=91=90 =EB=A3=A8=ED=8B=B4 +=EC=82=AC=EC=9D=B4=EC=97=90=EB=8F=84 =EB=B9=84=EC=8A=B7=ED=95=9C =EC=83= =81=ED=99=A9=EC=9D=B4 =EC=9D=BC=EC=96=B4=EB=82=A0 =EC=88=98 =EC=9E=88=EC= =8A=B5=EB=8B=88=EB=8B=A4. =EB=A7=8C=EC=95=BD =EA=B7=B8=EB=9F=B0 =EA=B2= =BD=EC=9A=B0=EA=B0=80 =EB=B0=9C=EC=83=9D=ED=95=A0 =EA=B0=80=EB=8A=A5=EC= =84=B1=EC=9D=B4 +=EC=9E=88=EB=8B=A4=EB=A9=B4, =EC=88=9C=EC=84=9C=EB=A5=BC =EB=B3=B4=EC=9E= =A5=ED=95=98=EA=B8=B0 =EC=9C=84=ED=95=B4 =EC=9D=B8=ED=84=B0=EB=9F=BD=ED= =8A=B8 =EB=B9=84=ED=99=9C=EC=84=B1=ED=99=94 =EB=9D=BD=EC=9D=B4 =EC=82=AC= =EC=9A=A9=EB=90=98=EC=96=B4=EC=A0=B8=EC=95=BC=EB=A7=8C =ED=95=A9=EB=8B=88= =EB=8B=A4. + + +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D +=EC=BB=A4=EB=84=90 I/O =EB=B0=B0=EB=A6=AC=EC=96=B4=EC=9D=98 =ED=9A=A8=EA= =B3=BC +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D + +I/O =EB=A9=94=EB=AA=A8=EB=A6=AC=EC=97=90 =EC=95=A1=EC=84=B8=EC=8A=A4=ED= =95=A0 =EB=95=8C, =EB=93=9C=EB=9D=BC=EC=9D=B4=EB=B2=84=EB=8A=94 =EC=A0=81= =EC=A0=88=ED=95=9C =EC=95=A1=EC=84=B8=EC=8A=A4 =ED=95=A8=EC=88=98=EB=A5= =BC =EC=82=AC=EC=9A=A9=ED=95=B4=EC=95=BC =ED=95=A9=EB=8B=88=EB=8B=A4: + + (*) inX(), outX(): + + =EC=9D=B4=EA=B2=83=EB=93=A4=EC=9D=80 =EB=A9=94=EB=AA=A8=EB=A6=AC = =EA=B3=B5=EA=B0=84=EB=B3=B4=EB=8B=A4=EB=8A=94 I/O =EA=B3=B5=EA=B0=84=EC= =97=90 =EC=9D=B4=EC=95=BC=EA=B8=B0=EB=A5=BC =ED=95=98=EB=A0=A4=EB=8A=94= =EC=9D=98=EB=8F=84=EB=A1=9C + =EB=A7=8C=EB=93=A4=EC=96=B4=EC=A1=8C=EC=8A=B5=EB=8B=88=EB=8B=A4=EB= =A7=8C, =EA=B7=B8=EA=B1=B4 =EA=B8=B0=EB=B3=B8=EC=A0=81=EC=9C=BC=EB=A1=9C= CPU =EB=A7=88=EB=8B=A4 =EB=8B=A4=EB=A5=B8 =EC=BB=A8=EC=85=89=EC=9E=85=EB= =8B=88=EB=8B=A4. i386 =EA=B3=BC + x86_64 =ED=94=84=EB=A1=9C=EC=84=B8=EC=84=9C=EB=93=A4=EC=9D=80 =ED= =8A=B9=EB=B3=84=ED=95=9C I/O =EA=B3=B5=EA=B0=84 =EC=95=A1=EC=84=B8=EC=8A= =A4 =EC=82=AC=EC=9D=B4=ED=81=B4=EA=B3=BC =EB=AA=85=EB=A0=B9=EC=96=B4=EB= =A5=BC =EC=8B=A4=EC=A0=9C=EB=A1=9C =EA=B0=80=EC=A7=80=EA=B3=A0 + =EC=9E=88=EC=A7=80=EB=A7=8C, =EB=8B=A4=EB=A5=B8 =EB=A7=8E=EC=9D=80= CPU =EB=93=A4=EC=97=90=EB=8A=94 =EA=B7=B8=EB=9F=B0 =EC=BB=A8=EC=85=89=EC= =9D=B4 =EC=A1=B4=EC=9E=AC=ED=95=98=EC=A7=80 =EC=95=8A=EC=8A=B5=EB=8B=88= =EB=8B=A4. + + =EB=8B=A4=EB=A5=B8 =EA=B2=83=EB=93=A4 =EC=A4=91=EC=97=90=EC=84=9C= =EB=8F=84 PCI =EB=B2=84=EC=8A=A4=EA=B0=80 I/O =EA=B3=B5=EA=B0=84 =EC=BB= =A8=EC=85=89=EC=9D=84 =EC=A0=95=EC=9D=98=ED=95=98=EB=8A=94=EB=8D=B0, =EC= =9D=B4=EB=8A=94 - i386 =EA=B3=BC + x86_64 =EA=B0=99=EC=9D=80 CPU =EC=97=90=EC=84=9C - CPU =EC=9D=98 = I/O =EA=B3=B5=EA=B0=84 =EC=BB=A8=EC=85=89=EC=9C=BC=EB=A1=9C =EC=89=BD=EA= =B2=8C =EB=A7=A4=EC=B9=98=EB=90=A9=EB=8B=88=EB=8B=A4. =ED=95=98=EC=A7=80= =EB=A7=8C, + =EB=8C=80=EC=B2=B4=ED=95=A0 I/O =EA=B3=B5=EA=B0=84=EC=9D=B4 =EC=97= =86=EB=8A=94 CPU =EC=97=90=EC=84=9C=EB=8A=94 CPU =EC=9D=98 =EB=A9=94=EB= =AA=A8=EB=A6=AC =EB=A7=B5=EC=9D=98 =EA=B0=80=EC=83=81 I/O =EA=B3=B5=EA=B0= =84=EC=9C=BC=EB=A1=9C + =EB=A7=A4=ED=95=91=EB=90=A0 =EC=88=98=EB=8F=84 =EC=9E=88=EC=8A=B5= =EB=8B=88=EB=8B=A4. + + =EC=9D=B4 =EA=B3=B5=EA=B0=84=EC=9C=BC=EB=A1=9C=EC=9D=98 =EC=95=A1= =EC=84=B8=EC=8A=A4=EB=8A=94 (i386 =EB=93=B1=EC=97=90=EC=84=9C=EB=8A=94)= =EC=99=84=EC=A0=84=ED=95=98=EA=B2=8C =EB=8F=99=EA=B8=B0=ED=99=94 =EB=90= =A9=EB=8B=88=EB=8B=A4=EB=A7=8C, =EC=A4=91=EA=B0=84=EC=9D=98 + (PCI =ED=98=B8=EC=8A=A4=ED=8A=B8 =EB=B8=8C=EB=A6=AC=EC=A7=80=EC=99= =80 =EA=B0=99=EC=9D=80) =EB=B8=8C=EB=A6=AC=EC=A7=80=EB=93=A4=EC=9D=80 =EC= =9D=B4=EB=A5=BC =EC=99=84=EC=A0=84=ED=9E=88 =EB=B3=B4=EC=9E=A5=ED=95=98= =EC=A7=84 =EC=95=8A=EC=9D=84=EC=88=98=EB=8F=84 + =EC=9E=88=EC=8A=B5=EB=8B=88=EB=8B=A4. + + =EC=9D=B4=EA=B2=83=EB=93=A4=EC=9D=98 =EC=83=81=ED=98=B8=EA=B0=84=EC= =9D=98 =EC=88=9C=EC=84=9C=EB=8A=94 =EC=99=84=EC=A0=84=ED=95=98=EA=B2=8C= =EB=B3=B4=EC=9E=A5=EB=90=A9=EB=8B=88=EB=8B=A4. + + =EB=8B=A4=EB=A5=B8 =ED=83=80=EC=9E=85=EC=9D=98 =EB=A9=94=EB=AA=A8= =EB=A6=AC =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85=98, I/O =EC=98=A4=ED= =8D=BC=EB=A0=88=EC=9D=B4=EC=85=98=EC=97=90 =EB=8C=80=ED=95=9C =EC=88=9C= =EC=84=9C=EB=8A=94 =EC=99=84=EC=A0=84=ED=95=98=EA=B2=8C + =EB=B3=B4=EC=9E=A5=EB=90=98=EC=A7=80=EB=8A=94 =EC=95=8A=EC=8A=B5=EB= =8B=88=EB=8B=A4. + + (*) readX(), writeX(): + + =EC=9D=B4=EA=B2=83=EB=93=A4=EC=9D=B4 =EC=88=98=ED=96=89 =EC=9A=94= =EC=B2=AD=EB=90=98=EB=8A=94 CPU =EC=97=90=EC=84=9C =EC=84=9C=EB=A1=9C=EC= =97=90=EA=B2=8C =EC=99=84=EC=A0=84=ED=9E=88 =EC=88=9C=EC=84=9C=EA=B0=80= =EB=A7=9E=EC=B6=B0=EC=A7=80=EA=B3=A0 =EB=8F=85=EB=A6=BD=EC=A0=81=EC=9C= =BC=EB=A1=9C + =EC=88=98=ED=96=89=EB=90=98=EB=8A=94=EC=A7=80=EC=97=90 =EB=8C=80=ED= =95=9C =EB=B3=B4=EC=9E=A5 =EC=97=AC=EB=B6=80=EB=8A=94 =EC=9D=B4=EB=93=A4= =EC=9D=B4 =EC=95=A1=EC=84=B8=EC=8A=A4 =ED=95=98=EB=8A=94 =EB=A9=94=EB=AA= =A8=EB=A6=AC =EC=9C=88=EB=8F=84=EC=9A=B0=EC=97=90 =EC=A0=95=EC=9D=98=EB= =90=9C + =ED=8A=B9=EC=84=B1=EC=97=90 =EC=9D=98=ED=95=B4 =EA=B2=B0=EC=A0=95= =EB=90=A9=EB=8B=88=EB=8B=A4. =EC=98=88=EB=A5=BC =EB=93=A4=EC=96=B4, =EC= =B5=9C=EC=8B=A0=EC=9D=98 i386 =EC=95=84=ED=82=A4=ED=85=8D=EC=B3=90 =EB=A8= =B8=EC=8B=A0=EC=97=90=EC=84=9C=EB=8A=94 MTRR + =EB=A0=88=EC=A7=80=EC=8A=A4=ED=84=B0=EB=A1=9C =EC=9D=B4 =ED=8A=B9= =EC=84=B1=EC=9D=B4 =EC=A1=B0=EC=A0=95=EB=90=A9=EB=8B=88=EB=8B=A4. + + =EC=9D=BC=EB=B0=98=EC=A0=81=EC=9C=BC=EB=A1=9C=EB=8A=94, =ED=94=84= =EB=A6=AC=ED=8E=98=EC=B9=98 (prefetch) =EA=B0=80=EB=8A=A5=ED=95=9C =EB=94= =94=EB=B0=94=EC=9D=B4=EC=8A=A4=EB=A5=BC =EC=95=A1=EC=84=B8=EC=8A=A4 =ED= =95=98=EB=8A=94=EA=B2=8C + =EC=95=84=EB=8B=88=EB=9D=BC=EB=A9=B4, =EC=9D=B4=EA=B2=83=EB=93=A4= =EC=9D=80 =EC=99=84=EC=A0=84=ED=9E=88 =EC=88=9C=EC=84=9C=EA=B0=80 =EB=A7= =9E=EC=B6=B0=EC=A7=80=EA=B3=A0 =EA=B2=B0=ED=95=A9=EB=90=98=EC=A7=80 =EC= =95=8A=EA=B2=8C =EB=B3=B4=EC=9E=A5=EB=90=A0 =EA=B2=81=EB=8B=88=EB=8B=A4= =2E + + =ED=95=98=EC=A7=80=EB=A7=8C, (PCI =EB=B8=8C=EB=A6=AC=EC=A7=80=EC=99= =80 =EA=B0=99=EC=9D=80) =EC=A4=91=EA=B0=84=EC=9D=98 =ED=95=98=EB=93=9C=EC= =9B=A8=EC=96=B4=EB=8A=94 =EC=9E=90=EC=8B=A0=EC=9D=B4 =EC=9B=90=ED=95=9C= =EB=8B=A4=EB=A9=B4 =EC=A7=91=ED=96=89=EC=9D=84 + =EC=97=B0=EA=B8=B0=EC=8B=9C=ED=82=AC =EC=88=98 =EC=9E=88=EC=8A=B5= =EB=8B=88=EB=8B=A4; =EC=8A=A4=ED=86=A0=EC=96=B4 =EB=AA=85=EB=A0=B9=EC=9D= =84 =EC=8B=A4=EC=A0=9C=EB=A1=9C =ED=95=98=EB=93=9C=EC=9B=A8=EC=96=B4=EB= =A1=9C =EB=82=B4=EB=A0=A4=EB=B3=B4=EB=82=B4=EA=B8=B0(flush) + =EC=9C=84=ED=95=B4=EC=84=9C=EB=8A=94 =EA=B0=99=EC=9D=80 =EC=9C=84= =EC=B9=98=EB=A1=9C=EB=B6=80=ED=84=B0 =EB=A1=9C=EB=93=9C=EB=A5=BC =ED=95= =98=EB=8A=94 =EB=B0=A9=EB=B2=95=EC=9D=B4 =EC=9E=88=EC=8A=B5=EB=8B=88=EB= =8B=A4=EB=A7=8C[*], PCI =EC=9D=98 =EA=B2=BD=EC=9A=B0=EB=8A=94 + =EA=B0=99=EC=9D=80 =EB=94=94=EB=B0=94=EC=9D=B4=EC=8A=A4=EB=82=98 = =ED=99=98=EA=B2=BD =EA=B5=AC=EC=84=B1 =EC=98=81=EC=97=AD=EC=97=90=EC=84= =9C=EC=9D=98 =EB=A1=9C=EB=93=9C=EB=A7=8C=EC=9C=BC=EB=A1=9C=EB=8F=84 =EC= =B6=A9=EB=B6=84=ED=95=A0 =EA=B2=81=EB=8B=88=EB=8B=A4. + + [*] =EC=A3=BC=EC=9D=98! =EC=93=B0=EC=97=AC=EC=A7=84 =EA=B2=83=EA=B3= =BC =EA=B0=99=EC=9D=80 =EC=9C=84=EC=B9=98=EB=A1=9C=EB=B6=80=ED=84=B0=EC= =9D=98 =EB=A1=9C=EB=93=9C=EB=A5=BC =EC=8B=9C=EB=8F=84=ED=95=98=EB=8A=94= =EA=B2=83=EC=9D=80 =EC=98=A4=EB=8F=99=EC=9E=91=EC=9D=84 + =EC=9D=BC=EC=9C=BC=ED=82=AC =EC=88=98=EB=8F=84 =EC=9E=88=EC=8A=B5=EB= =8B=88=EB=8B=A4 - =EC=98=88=EB=A1=9C 16650 Rx/Tx =EC=8B=9C=EB=A6=AC=EC=96= =BC =EB=A0=88=EC=A7=80=EC=8A=A4=ED=84=B0=EB=A5=BC =EC=83=9D=EA=B0=81=ED= =95=B4 + =EB=B3=B4=EC=84=B8=EC=9A=94. + + =ED=94=84=EB=A6=AC=ED=8E=98=EC=B9=98 =EA=B0=80=EB=8A=A5=ED=95=9C = I/O =EB=A9=94=EB=AA=A8=EB=A6=AC=EA=B0=80 =EC=82=AC=EC=9A=A9=EB=90=98=EB= =A9=B4, =EC=8A=A4=ED=86=A0=EC=96=B4 =EB=AA=85=EB=A0=B9=EB=93=A4=EC=9D=B4= =EC=88=9C=EC=84=9C=EB=A5=BC =EC=A7=80=ED=82=A4=EB=8F=84=EB=A1=9D + =ED=95=98=EA=B8=B0 =EC=9C=84=ED=95=B4 mmiowb() =EB=B0=B0=EB=A6=AC= =EC=96=B4=EA=B0=80 =ED=95=84=EC=9A=94=ED=95=A0 =EC=88=98 =EC=9E=88=EC=8A= =B5=EB=8B=88=EB=8B=A4. + + PCI =ED=8A=B8=EB=9E=9C=EC=9E=AD=EC=85=98 =EC=82=AC=EC=9D=B4=EC=9D= =98 =EC=83=81=ED=98=B8=EC=9E=91=EC=9A=A9=EC=97=90 =EB=8C=80=ED=95=B4 =EB= =8D=94 =EB=A7=8E=EC=9D=80 =EC=A0=95=EB=B3=B4=EB=A5=BC =EC=9C=84=ED=95=B4= =EC=84=A0 PCI =EB=AA=85=EC=84=B8=EC=84=9C=EB=A5=BC + =EC=B0=B8=EA=B3=A0=ED=95=98=EC=8B=9C=EA=B8=B0 =EB=B0=94=EB=9E=8D=EB= =8B=88=EB=8B=A4. + + (*) readX_relaxed(), writeX_relaxed() + + =EC=9D=B4=EA=B2=83=EB=93=A4=EC=9D=80 readX() =EC=99=80 writeX() =EB= =9E=91 =EB=B9=84=EC=8A=B7=ED=95=98=EC=A7=80=EB=A7=8C, =EB=8D=94 =EC=99=84= =ED=99=94=EB=90=9C =EB=A9=94=EB=AA=A8=EB=A6=AC =EC=88=9C=EC=84=9C =EB=B3= =B4=EC=9E=A5=EC=9D=84 + =EC=A0=9C=EA=B3=B5=ED=95=A9=EB=8B=88=EB=8B=A4. =EA=B5=AC=EC=B2=B4= =EC=A0=81=EC=9C=BC=EB=A1=9C, =EC=9D=B4=EA=B2=83=EB=93=A4=EC=9D=80 =EC=9D= =BC=EB=B0=98=EC=A0=81 =EB=A9=94=EB=AA=A8=EB=A6=AC =EC=95=A1=EC=84=B8=EC= =8A=A4 (=EC=98=88: DMA =EB=B2=84=ED=8D=BC) =EC=97=90=EB=8F=84 + LOCK =EC=9D=B4=EB=82=98 UNLOCK =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4= =EC=85=98=EB=93=A4=EC=97=90=EB=8F=84 =EC=88=9C=EC=84=9C=EB=A5=BC =EB=B3= =B4=EC=9E=A5=ED=95=98=EC=A7=80 =EC=95=8A=EC=8A=B5=EB=8B=88=EB=8B=A4. L= OCK =EC=9D=B4=EB=82=98 + UNLOCK =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85=98=EB=93=A4=EC=97= =90 =EB=A7=9E=EC=B6=B0=EC=A7=80=EB=8A=94 =EC=88=9C=EC=84=9C=EA=B0=80 =ED= =95=84=EC=9A=94=ED=95=98=EB=8B=A4=EB=A9=B4, mmiowb() =EB=B0=B0=EB=A6=AC= =EC=96=B4=EA=B0=80 =EC=82=AC=EC=9A=A9=EB=90=A0 + =EC=88=98 =EC=9E=88=EC=8A=B5=EB=8B=88=EB=8B=A4. =EA=B0=99=EC=9D=80= =EC=A3=BC=EB=B3=80 =EC=9E=A5=EC=B9=98=EC=97=90=EC=9D=98 =EC=99=84=ED=99= =94=EB=90=9C =EC=95=A1=EC=84=B8=EC=8A=A4=EB=81=BC=EB=A6=AC=EB=8A=94 =EC= =88=9C=EC=84=9C=EA=B0=80 =EC=A7=80=EC=BC=9C=EC=A7=90=EC=9D=84 =EC=95=8C= =EC=95=84 + =EB=91=90=EC=8B=9C=EA=B8=B0 =EB=B0=94=EB=9E=8D=EB=8B=88=EB=8B=A4. + + (*) ioreadX(), iowriteX() + + =EC=9D=B4=EA=B2=83=EB=93=A4=EC=9D=80 inX()/outX() =EB=82=98 readX= ()/writeX() =EC=B2=98=EB=9F=BC =EC=8B=A4=EC=A0=9C=EB=A1=9C =EC=88=98=ED= =96=89=ED=95=98=EB=8A=94 =EC=95=A1=EC=84=B8=EC=8A=A4=EC=9D=98 + =EC=A2=85=EB=A5=98=EC=97=90 =EB=94=B0=EB=9D=BC =EC=A0=81=EC=A0=88= =ED=95=98=EA=B2=8C =EC=88=98=ED=96=89=EB=90=A0 =EA=B2=83=EC=9E=85=EB=8B= =88=EB=8B=A4. + + +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D +=EA=B0=80=EC=A0=95=EB=90=98=EB=8A=94 =EA=B0=80=EC=9E=A5 =EC=99=84=ED=99= =94=EB=90=9C =EC=8B=A4=ED=96=89 =EC=88=9C=EC=84=9C =EB=AA=A8=EB=8D=B8 +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D + +=EC=BB=A8=EC=85=89=EC=A0=81=EC=9C=BC=EB=A1=9C CPU =EB=8A=94 =EC=A3=BC=EC= =96=B4=EC=A7=84 =ED=94=84=EB=A1=9C=EA=B7=B8=EB=9E=A8=EC=97=90 =EB=8C=80= =ED=95=B4 =ED=94=84=EB=A1=9C=EA=B7=B8=EB=9E=A8 =EA=B7=B8 =EC=9E=90=EC=B2= =B4=EC=97=90=EB=8A=94 =EC=9D=B8=EA=B3=BC=EC=84=B1 (program +causality) =EC=9D=84 =EC=A7=80=ED=82=A4=EB=8A=94 =EA=B2=83=EC=B2=98=EB= =9F=BC =EB=B3=B4=EC=9D=B4=EA=B2=8C =ED=95=98=EC=A7=80=EB=A7=8C =EC=9D=BC= =EB=B0=98=EC=A0=81=EC=9C=BC=EB=A1=9C=EB=8A=94 =EC=88=9C=EC=84=9C=EB=A5=BC= =EA=B1=B0=EC=9D=98 =EC=A7=80=EC=BC=9C=EC=A3=BC=EC=A7=80 +=EC=95=8A=EB=8A=94=EB=8B=A4=EA=B3=A0 =EA=B0=80=EC=A0=95=EB=90=98=EC=96= =B4=EC=95=BC=EB=A7=8C =ED=95=A9=EB=8B=88=EB=8B=A4. (i386 =EC=9D=B4=EB=82= =98 x86_64 =EA=B0=99=EC=9D=80) =EC=9D=BC=EB=B6=80 CPU =EB=93=A4=EC=9D=80= =EC=BD=94=EB=93=9C +=EC=9E=AC=EB=B0=B0=EC=B9=98=EC=97=90 (powerpc =EB=82=98 frv =EC=99=80 = =EA=B0=99=EC=9D=80) =EB=8B=A4=EB=A5=B8 =EA=B2=83=EB=93=A4=EC=97=90 =EB=B9= =84=ED=95=B4 =EA=B0=95=ED=95=9C =EC=A0=9C=EC=95=BD=EC=9D=84 =EA=B0=96=EC= =A7=80=EB=A7=8C, =EC=95=84=ED=82=A4=ED=85=8D=EC=B3=90 +=EC=A2=85=EC=86=8D=EC=A0=81 =EC=BD=94=EB=93=9C =EC=9D=B4=EC=99=B8=EC=9D= =98 =EC=BD=94=EB=93=9C=EC=97=90=EC=84=9C=EB=8A=94 =EC=88=9C=EC=84=9C=EC= =97=90 =EB=8C=80=ED=95=9C =EC=A0=9C=EC=95=BD=EC=9D=B4 =EA=B0=80=EC=9E=A5= =EC=99=84=ED=99=94=EB=90=9C =EA=B2=BD=EC=9A=B0 (DEC Alpha) +=EB=A5=BC =EA=B0=80=EC=A0=95=ED=95=B4=EC=95=BC =ED=95=A9=EB=8B=88=EB=8B= =A4. + +=EC=9D=B4 =EB=A7=90=EC=9D=80, CPU =EC=97=90=EA=B2=8C =EC=A3=BC=EC=96=B4= =EC=A7=80=EB=8A=94 =EC=9D=B8=EC=8A=A4=ED=8A=B8=EB=9F=AD=EC=85=98 =EC=8A= =A4=ED=8A=B8=EB=A6=BC =EB=82=B4=EC=9D=98 =ED=95=9C =EC=9D=B8=EC=8A=A4=ED= =8A=B8=EB=9F=AD=EC=85=98=EC=9D=B4 =EC=95=9E=EC=9D=98 +=EC=9D=B8=EC=8A=A4=ED=8A=B8=EB=9F=AD=EC=85=98=EC=97=90 =EC=A2=85=EC=86= =8D=EC=A0=81=EC=9D=B4=EB=9D=BC=EB=A9=B4 =EC=95=9E=EC=9D=98 =EC=9D=B8=EC= =8A=A4=ED=8A=B8=EB=9F=AD=EC=85=98=EC=9D=80 =EB=92=A4=EC=9D=98 =EC=A2=85= =EC=86=8D=EC=A0=81 =EC=9D=B8=EC=8A=A4=ED=8A=B8=EB=9F=AD=EC=85=98=EC=9D=B4= =EC=8B=A4=ED=96=89=EB=90=98=EA=B8=B0 +=EC=A0=84=EC=97=90 =EC=99=84=EB=A3=8C[*]=EB=90=A0 =EC=88=98 =EC=9E=88=EC= =96=B4=EC=95=BC =ED=95=9C=EB=8B=A4=EB=8A=94 =EC=A0=9C=EC=95=BD (=EB=8B=AC= =EB=A6=AC =EB=A7=90=ED=95=B4=EC=84=9C, =EC=9D=B8=EA=B3=BC=EC=84=B1=EC=9D= =B4 =EC=A7=80=EC=BC=9C=EC=A7=80=EB=8A=94 =EA=B2=83=EC=9C=BC=EB=A1=9C +=EB=B3=B4=EC=9D=B4=EA=B2=8C =ED=95=A8) =EC=99=B8=EC=97=90=EB=8A=94 =EC= =9E=90=EC=8B=A0=EC=9D=B4 =EC=9B=90=ED=95=98=EB=8A=94 =EC=88=9C=EC=84=9C= =EB=8C=80=EB=A1=9C - =EC=8B=AC=EC=A7=80=EC=96=B4 =EB=B3=91=EB=A0=AC=EC=A0= =81=EC=9C=BC=EB=A1=9C=EB=8F=84 - =EA=B7=B8 =EC=8A=A4=ED=8A=B8=EB=A6=BC=EC= =9D=84 +=EC=8B=A4=ED=96=89=ED=95=A0 =EC=88=98 =EC=9E=88=EC=9D=8C=EC=9D=84 =EC=9D= =98=EB=AF=B8=ED=95=A9=EB=8B=88=EB=8B=A4 + + [*] =EC=9D=BC=EB=B6=80 =EC=9D=B8=EC=8A=A4=ED=8A=B8=EB=9F=AD=EC=85=98=EC= =9D=80 =ED=95=98=EB=82=98 =EC=9D=B4=EC=83=81=EC=9D=98 =EC=98=81=ED=96=A5= - =EC=A1=B0=EA=B1=B4 =EC=BD=94=EB=93=9C=EB=A5=BC =EB=B0=94=EA=BE=BC=EB= =8B=A4=EB=8D=98=EC=A7=80, =EB=A0=88=EC=A7=80=EC=8A=A4=ED=84=B0=EB=82=98 + =EB=A9=94=EB=AA=A8=EB=A6=AC=EB=A5=BC =EB=B0=94=EA=BE=BC=EB=8B=A4=EB= =8D=98=EC=A7=80 - =EC=9D=84 =EB=A7=8C=EB=93=A4=EC=96=B4=EB=82=B4=EB=A9=B0= , =EB=8B=A4=EB=A5=B8 =EC=9D=B8=EC=8A=A4=ED=8A=B8=EB=9F=AD=EC=85=98=EC=9D= =80 =EB=8B=A4=EB=A5=B8 =ED=9A=A8=EA=B3=BC=EC=97=90 + =EC=A2=85=EC=86=8D=EC=A0=81=EC=9D=BC =EC=88=98 =EC=9E=88=EC=8A=B5= =EB=8B=88=EB=8B=A4. + +CPU =EB=8A=94 =EC=B5=9C=EC=A2=85=EC=A0=81=EC=9C=BC=EB=A1=9C =EC=95=84=EB= =AC=B4 =ED=9A=A8=EA=B3=BC=EB=8F=84 =EB=A7=8C=EB=93=A4=EC=A7=80 =EC=95=8A= =EB=8A=94 =EC=9D=B8=EC=8A=A4=ED=8A=B8=EB=9F=AD=EC=85=98 =EC=8B=9C=ED=80= =80=EC=8A=A4=EB=8A=94 =EC=97=86=EC=95=A0=EB=B2=84=EB=A6=B4 =EC=88=98=EB= =8F=84 +=EC=9E=88=EC=8A=B5=EB=8B=88=EB=8B=A4. =EC=98=88=EB=A5=BC =EB=93=A4=EC= =96=B4, =EB=A7=8C=EC=95=BD =EB=91=90=EA=B0=9C=EC=9D=98 =EC=97=B0=EC=86=8D= =EB=90=98=EB=8A=94 =EC=9D=B8=EC=8A=A4=ED=8A=B8=EB=9F=AD=EC=85=98=EC=9D=B4= =EB=91=98 =EB=8B=A4 =EA=B0=99=EC=9D=80 =EB=A0=88=EC=A7=80=EC=8A=A4=ED=84= =B0=EC=97=90 +=EC=A7=81=EC=A0=91=EC=A0=81=EC=9D=B8 =EA=B0=92 (immediate value) =EC=9D= =84 =EC=A7=91=EC=96=B4=EB=84=A3=EB=8A=94=EB=8B=A4=EB=A9=B4, =EC=B2=AB=EB= =B2=88=EC=A7=B8 =EC=9D=B8=EC=8A=A4=ED=8A=B8=EB=9F=AD=EC=85=98=EC=9D=80 = =EB=B2=84=EB=A0=A4=EC=A7=88 =EC=88=98=EB=8F=84 +=EC=9E=88=EC=8A=B5=EB=8B=88=EB=8B=A4. + + +=EB=B9=84=EC=8A=B7=ED=95=98=EA=B2=8C, =EC=BB=B4=ED=8C=8C=EC=9D=BC=EB=9F= =AC =EC=97=AD=EC=8B=9C =ED=94=84=EB=A1=9C=EA=B7=B8=EB=9E=A8=EC=9D=98 =EC= =9D=B8=EA=B3=BC=EC=84=B1=EB=A7=8C =EC=A7=80=EC=BC=9C=EC=A4=80=EB=8B=A4=EB= =A9=B4 =EC=9D=B8=EC=8A=A4=ED=8A=B8=EB=9F=AD=EC=85=98 =EC=8A=A4=ED=8A=B8= =EB=A6=BC=EC=9D=84 +=EC=9E=90=EC=8B=A0=EC=9D=B4 =EB=B3=B4=EA=B8=B0=EC=97=90 =EC=98=AC=EB=B0= =94=EB=A5=B4=EB=8B=A4 =EC=83=9D=EA=B0=81=EB=90=98=EB=8A=94=EB=8C=80=EB=A1= =9C =EC=9E=AC=EB=B0=B0=EC=B9=98 =ED=95=A0 =EC=88=98 =EC=9E=88=EC=8A=B5=EB= =8B=88=EB=8B=A4. + + +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D +CPU =EC=BA=90=EC=8B=9C=EC=9D=98 =EC=98=81=ED=96=A5 +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D + +=EC=BA=90=EC=8B=9C=EB=90=9C =EB=A9=94=EB=AA=A8=EB=A6=AC =EC=98=A4=ED=8D= =BC=EB=A0=88=EC=9D=B4=EC=85=98=EB=93=A4=EC=9D=B4 =EC=8B=9C=EC=8A=A4=ED=85= =9C =EC=A0=84=EC=B2=B4=EC=97=90 =EC=96=B4=EB=96=BB=EA=B2=8C =EC=9D=B8=EC= =A7=80=EB=90=98=EB=8A=94=EC=A7=80=EB=8A=94 CPU =EC=99=80 =EB=A9=94=EB=AA= =A8=EB=A6=AC +=EC=82=AC=EC=9D=B4=EC=97=90 =EC=A1=B4=EC=9E=AC=ED=95=98=EB=8A=94 =EC=BA= =90=EC=8B=9C=EB=93=A4, =EA=B7=B8=EB=A6=AC=EA=B3=A0 =EC=8B=9C=EC=8A=A4=ED= =85=9C =EC=83=81=ED=83=9C=EC=9D=98 =EC=9D=BC=EA=B4=80=EC=84=B1=EC=9D=84= =EA=B4=80=EB=A6=AC=ED=95=98=EB=8A=94 =EB=A9=94=EB=AA=A8=EB=A6=AC =EC=9D= =BC=EA=B4=80=EC=84=B1 +=EC=8B=9C=EC=8A=A4=ED=85=9C=EC=97=90 =EC=83=81=EB=8B=B9 =EB=B6=80=EB=B6= =84 =EC=98=81=ED=96=A5=EC=9D=84 =EB=B0=9B=EC=8A=B5=EB=8B=88=EB=8B=A4. + +=ED=95=9C CPU =EA=B0=80 =EC=8B=9C=EC=8A=A4=ED=85=9C=EC=9D=98 =EB=8B=A4= =EB=A5=B8 =EB=B6=80=EB=B6=84=EB=93=A4=EA=B3=BC =EC=BA=90=EC=8B=9C=EB=A5= =BC =ED=86=B5=ED=95=B4 =EC=83=81=ED=98=B8=EC=9E=91=EC=9A=A9=ED=95=9C=EB= =8B=A4=EB=A9=B4, =EB=A9=94=EB=AA=A8=EB=A6=AC =EC=8B=9C=EC=8A=A4=ED=85=9C= =EC=9D=80 +CPU =EC=9D=98 =EC=BA=90=EC=8B=9C=EB=93=A4=EC=9D=84 =ED=8F=AC=ED=95=A8=ED= =95=B4=EC=95=BC =ED=95=98=EB=A9=B0, CPU =EC=99=80 CPU =EC=9E=90=EC=8B=A0= =EC=9D=98 =EC=BA=90=EC=8B=9C =EC=82=AC=EC=9D=B4=EC=97=90=EC=84=9C=EC=9D= =98 =EB=8F=99=EC=9E=91=EC=9D=84 =EC=9C=84=ED=95=9C +=EB=A9=94=EB=AA=A8=EB=A6=AC =EB=B0=B0=EB=A6=AC=EC=96=B4=EB=A5=BC =EA=B0= =80=EC=A0=B8=EC=95=BC =ED=95=A9=EB=8B=88=EB=8B=A4. (=EB=A9=94=EB=AA=A8=EB= =A6=AC =EB=B0=B0=EB=A6=AC=EC=96=B4=EB=8A=94 =EB=85=BC=EB=A6=AC=EC=A0=81= =EC=9C=BC=EB=A1=9C=EB=8A=94 =EB=8B=A4=EC=9D=8C =EA=B7=B8=EB=A6=BC=EC=9D= =98 +=EC=A0=90=EC=84=A0=EC=97=90=EC=84=9C =EB=8F=99=EC=9E=91=ED=95=A9=EB=8B= =88=EB=8B=A4): + + <--- CPU ---> : <----------- Memory -----------> + : + +--------+ +--------+ : +--------+ +-----------+ + | | | | : | | | | +-------= -+ + | CPU | | Memory | : | CPU | | | | = | + | Core |--->| Access |----->| Cache |<-->| | | = | + | | | Queue | : | | | |--->| Memory= | + | | | | : | | | | | = | + +--------+ +--------+ : +--------+ | | | = | + : | Cache | +-------= -+ + : | Coherency | + : | Mechanism | +-------= -+ + +--------+ +--------+ : +--------+ | | | = | + | | | | : | | | | | = | + | CPU | | Memory | : | CPU | | |--->| Device= | + | Core |--->| Access |----->| Cache |<-->| | | = | + | | | Queue | : | | | | | = | + | | | | : | | | | +-------= -+ + +--------+ +--------+ : +--------+ +-----------+ + : + : + +=ED=8A=B9=EC=A0=95 =EB=A1=9C=EB=93=9C=EB=82=98 =EC=8A=A4=ED=86=A0=EC=96= =B4=EB=8A=94 =ED=95=B4=EB=8B=B9 =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC= =85=98=EC=9D=84 =EC=9A=94=EC=B2=AD=ED=95=9C CPU =EC=9D=98 =EC=BA=90=EC=8B= =9C =EB=82=B4=EC=97=90=EC=84=9C =EB=8F=99=EC=9E=91=EC=9D=84 =EC=99=84=EB= =A3=8C=ED=95=A0 +=EC=88=98=EB=8F=84 =EC=9E=88=EA=B8=B0 =EB=95=8C=EB=AC=B8=EC=97=90 =ED=95= =B4=EB=8B=B9 CPU =EC=9D=98 =EB=B0=94=EA=B9=A5=EC=97=90=EB=8A=94 =EB=B3=B4= =EC=9D=B4=EC=A7=80 =EC=95=8A=EC=9D=84 =EC=88=98 =EC=9E=88=EC=A7=80=EB=A7= =8C, =EB=8B=A4=EB=A5=B8 CPU =EA=B0=80 =EA=B4=80=EC=8B=AC=EC=9D=84 +=EA=B0=96=EB=8A=94=EB=8B=A4=EB=A9=B4 =EC=BA=90=EC=8B=9C =EC=9D=BC=EA=B4= =80=EC=84=B1 =EB=A9=94=EC=BB=A4=EB=8B=88=EC=A6=98=EC=9D=B4 =ED=95=B4=EB= =8B=B9 =EC=BA=90=EC=8B=9C=EB=9D=BC=EC=9D=B8=EC=9D=84 =ED=95=B4=EB=8B=B9= CPU =EC=97=90=EA=B2=8C =EC=A0=84=EB=8B=AC=ED=95=98=EA=B3=A0, =ED=95=B4= =EB=8B=B9 +=EB=A9=94=EB=AA=A8=EB=A6=AC =EC=98=81=EC=97=AD=EC=97=90 =EB=8C=80=ED=95= =9C =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85=98=EC=9D=B4 =EB=B0=9C=EC= =83=9D=ED=95=A0 =EB=95=8C=EB=A7=88=EB=8B=A4 =EA=B7=B8 =EC=98=81=ED=96=A5= =EC=9D=84 =EC=A0=84=ED=8C=8C=EC=8B=9C=ED=82=A4=EA=B8=B0 =EB=95=8C=EB=AC= =B8=EC=97=90, =ED=95=B4=EB=8B=B9 +=EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85=98=EC=9D=80 =EB=A9=94=EB=AA= =A8=EB=A6=AC=EC=97=90 =EC=8B=A4=EC=A0=9C=EB=A1=9C =EC=95=A1=EC=84=B8=EC= =8A=A4=EB=A5=BC =ED=95=9C=EA=B2=83=EC=B2=98=EB=9F=BC =EB=82=98=ED=83=80= =EB=82=A0 =EA=B2=83=EC=9E=85=EB=8B=88=EB=8B=A4. + +CPU =EC=BD=94=EC=96=B4=EB=8A=94 =ED=94=84=EB=A1=9C=EA=B7=B8=EB=9E=A8=EC= =9D=98 =EC=9D=B8=EA=B3=BC=EC=84=B1=EC=9D=B4 =EC=9C=A0=EC=A7=80=EB=90=9C= =EB=8B=A4=EA=B3=A0=EB=A7=8C =EC=97=AC=EA=B2=A8=EC=A7=84=EB=8B=A4=EB=A9=B4= =EC=9D=B8=EC=8A=A4=ED=8A=B8=EB=9F=AD=EC=85=98=EB=93=A4=EC=9D=84 =EC=96= =B4=EB=96=A4 +=EC=88=9C=EC=84=9C=EB=A1=9C=EB=93=A0 =EC=9E=AC=EB=B0=B0=EC=B9=98=ED=95= =B4=EC=84=9C =EC=88=98=ED=96=89=ED=95=A0 =EC=88=98 =EC=9E=88=EC=8A=B5=EB= =8B=88=EB=8B=A4. =EC=9D=BC=EB=B6=80 =EC=9D=B8=EC=8A=A4=ED=8A=B8=EB=9F=AD= =EC=85=98=EB=93=A4=EC=9D=80 =EB=A1=9C=EB=93=9C=EB=82=98 =EC=8A=A4=ED=86= =A0=EC=96=B4 +=EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85=98=EC=9D=84 =EB=A7=8C=EB=93= =9C=EB=8A=94=EB=8D=B0 =EC=9D=B4 =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC= =85=98=EB=93=A4=EC=9D=80 =EC=9D=B4=ED=9B=84 =EC=88=98=ED=96=89=EB=90=A0= =EB=A9=94=EB=AA=A8=EB=A6=AC =EC=95=A1=EC=84=B8=EC=8A=A4 =ED=81=90=EC=97= =90 =EB=93=A4=EC=96=B4=EA=B0=80=EA=B2=8C +=EB=90=A9=EB=8B=88=EB=8B=A4. =EC=BD=94=EC=96=B4=EB=8A=94 =EC=9D=B4 =EC= =98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85=98=EB=93=A4=EC=9D=84 =ED=95=B4=EB= =8B=B9 =ED=81=90=EC=97=90 =EC=96=B4=EB=96=A4 =EC=88=9C=EC=84=9C=EB=A1=9C= =EB=93=A0 =EC=9B=90=ED=95=98=EB=8A=94=EB=8C=80=EB=A1=9C =EB=84=A3=EC=9D= =84 =EC=88=98 +=EC=9E=88=EA=B3=A0, =EB=8B=A4=EB=A5=B8 =EC=9D=B8=EC=8A=A4=ED=8A=B8=EB=9F= =AD=EC=85=98=EC=9D=98 =EC=99=84=EB=A3=8C=EB=A5=BC =EA=B8=B0=EB=8B=A4=EB= =A6=AC=EB=8F=84=EB=A1=9D =EA=B0=95=EC=A0=9C=EB=90=98=EA=B8=B0 =EC=A0=84= =EA=B9=8C=EC=A7=80=EB=8A=94 =EC=88=98=ED=96=89=EC=9D=84 =EA=B3=84=EC=86= =8D=ED=95=A9=EB=8B=88=EB=8B=A4. + +=EB=A9=94=EB=AA=A8=EB=A6=AC =EB=B0=B0=EB=A6=AC=EC=96=B4=EA=B0=80 =ED=95= =98=EB=8A=94 =EC=9D=BC=EC=9D=80 CPU =EC=AA=BD=EC=97=90=EC=84=9C =EB=A9=94= =EB=AA=A8=EB=A6=AC =EC=AA=BD=EC=9C=BC=EB=A1=9C =EB=84=98=EC=96=B4=EA=B0= =80=EB=8A=94 =EC=95=A1=EC=84=B8=EC=8A=A4=EB=93=A4=EC=9D=98 =EC=88=9C=EC= =84=9C, +=EA=B7=B8=EB=A6=AC=EA=B3=A0 =EA=B7=B8 =EC=95=A1=EC=84=B8=EC=8A=A4=EC=9D= =98 =EA=B2=B0=EA=B3=BC=EA=B0=80 =EC=8B=9C=EC=8A=A4=ED=85=9C=EC=9D=98 =EB= =8B=A4=EB=A5=B8 =EA=B4=80=EC=B0=B0=EC=9E=90=EB=93=A4=EC=97=90=EA=B2=8C = =EC=9D=B8=EC=A7=80=EB=90=98=EB=8A=94 =EC=88=9C=EC=84=9C=EB=A5=BC =EC=A0= =9C=EC=96=B4=ED=95=98=EB=8A=94 +=EA=B2=83=EC=9E=85=EB=8B=88=EB=8B=A4. + +[!] CPU =EB=93=A4=EC=9D=80 =ED=95=AD=EC=83=81 =EA=B7=B8=EB=93=A4 =EC=9E= =90=EC=8B=A0=EC=9D=98 =EB=A1=9C=EB=93=9C=EC=99=80 =EC=8A=A4=ED=86=A0=EC= =96=B4=EB=8A=94 =ED=94=84=EB=A1=9C=EA=B7=B8=EB=9E=A8 =EC=88=9C=EC=84=9C= =EB=8C=80=EB=A1=9C =EC=9D=BC=EC=96=B4=EB=82=9C =EA=B2=83=EC=9C=BC=EB=A1= =9C +=EB=B3=B4=EA=B8=B0 =EB=95=8C=EB=AC=B8=EC=97=90, =EC=A3=BC=EC=96=B4=EC=A7= =84 CPU =EB=82=B4=EC=97=90=EC=84=9C=EB=8A=94 =EB=A9=94=EB=AA=A8=EB=A6=AC= =EB=B0=B0=EB=A6=AC=EC=96=B4=EB=A5=BC =EC=82=AC=EC=9A=A9=ED=95=A0 =ED=95= =84=EC=9A=94=EA=B0=80 _=EC=97=86=EC=8A=B5=EB=8B=88=EB=8B=A4_. + +[!] MMIO =EB=82=98 =EB=8B=A4=EB=A5=B8 =EB=94=94=EB=B0=94=EC=9D=B4=EC=8A= =A4 =EC=95=A1=EC=84=B8=EC=8A=A4=EB=93=A4=EC=9D=80 =EC=BA=90=EC=8B=9C =EC= =8B=9C=EC=8A=A4=ED=85=9C=EC=9D=84 =EC=9A=B0=ED=9A=8C=ED=95=A0 =EC=88=98= =EB=8F=84 =EC=9E=88=EC=8A=B5=EB=8B=88=EB=8B=A4. =EC=9A=B0=ED=9A=8C +=EC=97=AC=EB=B6=80=EB=8A=94 =EB=94=94=EB=B0=94=EC=9D=B4=EC=8A=A4=EA=B0= =80 =EC=95=A1=EC=84=B8=EC=8A=A4 =EB=90=98=EB=8A=94 =EB=A9=94=EB=AA=A8=EB= =A6=AC =EC=9C=88=EB=8F=84=EC=9A=B0=EC=9D=98 =ED=8A=B9=EC=84=B1=EC=97=90= =EC=9D=98=ED=95=B4 =EA=B2=B0=EC=A0=95=EB=90=A0 =EC=88=98=EB=8F=84 =EC=9E= =88=EA=B3=A0, CPU +=EA=B0=80 =EA=B0=80=EC=A7=80=EA=B3=A0 =EC=9E=88=EC=9D=84 =EC=88=98 =EC= =9E=88=EB=8A=94 =ED=8A=B9=EC=88=98=ED=95=9C =EB=94=94=EB=B0=94=EC=9D=B4= =EC=8A=A4 =ED=86=B5=EC=8B=A0 =EC=9D=B8=EC=8A=A4=ED=8A=B8=EB=9F=AD=EC=85= =98=EC=9D=98 =EC=82=AC=EC=9A=A9=EC=97=90 =EC=9D=98=ED=95=B4=EC=84=9C =EA= =B2=B0=EC=A0=95=EB=90=A0 +=EC=88=98=EB=8F=84 =EC=9E=88=EC=8A=B5=EB=8B=88=EB=8B=A4. + + +=EC=BA=90=EC=8B=9C =EC=9D=BC=EA=B4=80=EC=84=B1 +----------- + +=ED=95=98=EC=A7=80=EB=A7=8C =EC=82=B6=EC=9D=80 =EC=95=9E=EC=97=90=EC=84= =9C =EC=9D=B4=EC=95=BC=EA=B8=B0=ED=95=9C =EA=B2=83=EC=B2=98=EB=9F=BC =EB= =8B=A8=EC=88=9C=ED=95=98=EC=A7=80 =EC=95=8A=EC=8A=B5=EB=8B=88=EB=8B=A4:= =EC=BA=90=EC=8B=9C=EB=93=A4=EC=9D=80 =EC=9D=BC=EA=B4=80=EC=A0=81=EC=9D= =BC =EA=B2=83=EC=9C=BC=EB=A1=9C +=EA=B8=B0=EB=8C=80=EB=90=98=EC=A7=80=EB=A7=8C, =EA=B7=B8 =EC=9D=BC=EA=B4= =80=EC=84=B1=EC=9D=B4 =EC=88=9C=EC=84=9C=EC=97=90=EB=8F=84 =EC=A0=81=EC= =9A=A9=EB=90=A0 =EA=B1=B0=EB=9D=BC=EB=8A=94 =EB=B3=B4=EC=9E=A5=EC=9D=80= =EC=97=86=EC=8A=B5=EB=8B=88=EB=8B=A4. =ED=95=9C CPU =EC=97=90=EC=84=9C +=EB=A7=8C=EB=93=A4=EC=96=B4=EC=A7=84 =EB=B3=80=EA=B2=BD =EC=82=AC=ED=95= =AD=EC=9D=80 =EC=B5=9C=EC=A2=85=EC=A0=81=EC=9C=BC=EB=A1=9C=EB=8A=94 =EC= =8B=9C=EC=8A=A4=ED=85=9C=EC=9D=98 =EB=AA=A8=EB=93=A0 CPU =EC=97=90=EA=B2= =8C =EB=B3=B4=EC=97=AC=EC=A7=80=EA=B2=8C =EB=90=98=EC=A7=80=EB=A7=8C, =EB= =8B=A4=EB=A5=B8 +CPU =EB=93=A4=EC=97=90=EA=B2=8C=EB=8F=84 =EA=B0=99=EC=9D=80 =EC=88=9C=EC= =84=9C=EB=A1=9C =EB=B3=B4=EC=9D=B4=EA=B2=8C =EB=90=A0 =EA=B1=B0=EB=9D=BC= =EB=8A=94 =EB=B3=B4=EC=9E=A5=EC=9D=80 =EC=97=86=EB=8B=A4=EB=8A=94 =EB=9C= =BB=EC=9E=85=EB=8B=88=EB=8B=A4. + + +=EB=91=90=EA=B0=9C=EC=9D=98 CPU (1 & 2) =EA=B0=80 =EB=8B=AC=EB=A0=A4 =EC= =9E=88=EA=B3=A0, =EA=B0=81 CPU =EC=97=90 =EB=91=90=EA=B0=9C=EC=9D=98 =EB= =8D=B0=EC=9D=B4=ED=84=B0 =EC=BA=90=EC=8B=9C(CPU 1 =EC=9D=80 A/B =EB=A5=BC= , +CPU 2 =EB=8A=94 C/D =EB=A5=BC =EA=B0=96=EC=8A=B5=EB=8B=88=EB=8B=A4)=EA= =B0=80 =EB=B3=91=EB=A0=AC=EB=A1=9C =EC=97=B0=EA=B2=B0=EB=90=98=EC=96=B4= =EC=9E=88=EB=8A=94 =EC=8B=9C=EC=8A=A4=ED=85=9C=EC=9D=84 =EB=8B=A4=EB=A3= =AC=EB=8B=A4=EA=B3=A0 =EC=83=9D=EA=B0=81=ED=95=B4 +=EB=B4=85=EC=8B=9C=EB=8B=A4: + + : + : +--------+ + : +---------+ | | + +--------+ : +--->| Cache A |<------->| | + | | : | +---------+ | | + | CPU 1 |<---+ | | + | | : | +---------+ | | + +--------+ : +--->| Cache B |<------->| | + : +---------+ | | + : | Memory | + : +---------+ | System | + +--------+ : +--->| Cache C |<------->| | + | | : | +---------+ | | + | CPU 2 |<---+ | | + | | : | +---------+ | | + +--------+ : +--->| Cache D |<------->| | + : +---------+ | | + : +--------+ + : + +=EC=9D=B4 =EC=8B=9C=EC=8A=A4=ED=85=9C=EC=9D=B4 =EB=8B=A4=EC=9D=8C=EA=B3= =BC =EA=B0=99=EC=9D=80 =ED=8A=B9=EC=84=B1=EC=9D=84 =EA=B0=96=EB=8A=94=EB= =8B=A4 =EC=83=9D=EA=B0=81=ED=95=B4 =EB=B4=85=EC=8B=9C=EB=8B=A4: + + (*) =ED=99=80=EC=88=98=EB=B2=88 =EC=BA=90=EC=8B=9C=EB=9D=BC=EC=9D=B8=EC= =9D=80 =EC=BA=90=EC=8B=9C A, =EC=BA=90=EC=8B=9C C =EB=98=90=EB=8A=94 =EB= =A9=94=EB=AA=A8=EB=A6=AC=EC=97=90 =EC=9C=84=EC=B9=98=ED=95=A0 =EC=88=98= =EC=9E=88=EC=9D=8C; + + (*) =EC=A7=9D=EC=88=98=EB=B2=88 =EC=BA=90=EC=8B=9C=EB=9D=BC=EC=9D=B8=EC= =9D=80 =EC=BA=90=EC=8B=9C B, =EC=BA=90=EC=8B=9C D =EB=98=90=EB=8A=94 =EB= =A9=94=EB=AA=A8=EB=A6=AC=EC=97=90 =EC=9C=84=EC=B9=98=ED=95=A0 =EC=88=98= =EC=9E=88=EC=9D=8C; + + (*) CPU =EC=BD=94=EC=96=B4=EA=B0=80 =ED=95=9C=EA=B0=9C=EC=9D=98 =EC=BA= =90=EC=8B=9C=EC=97=90 =EC=A0=91=EA=B7=BC=ED=95=98=EB=8A=94 =EB=8F=99=EC= =95=88, =EB=8B=A4=EB=A5=B8 =EC=BA=90=EC=8B=9C=EB=8A=94 - =EB=8D=94=ED=8B= =B0 =EC=BA=90=EC=8B=9C=EB=9D=BC=EC=9D=B8=EC=9D=84 + =EB=A9=94=EB=AA=A8=EB=A6=AC=EC=97=90 =EB=82=B4=EB=A6=AC=EA=B1=B0=EB= =82=98 =EC=B6=94=EC=B8=A1=EC=84=B1 =EB=A1=9C=EB=93=9C=EB=A5=BC =ED=95=98= =EA=B1=B0=EB=82=98 =ED=95=98=EA=B8=B0 =EC=9C=84=ED=95=B4 - =EC=8B=9C=EC= =8A=A4=ED=85=9C=EC=9D=98 =EB=8B=A4=EB=A5=B8 =EB=B6=80=EB=B6=84=EC=97=90 + =EC=95=A1=EC=84=B8=EC=8A=A4 =ED=95=98=EA=B8=B0 =EC=9C=84=ED=95=B4= =EB=B2=84=EC=8A=A4=EB=A5=BC =EC=82=AC=EC=9A=A9=ED=95=A0 =EC=88=98 =EC=9E= =88=EC=9D=8C; + + (*) =EA=B0=81 =EC=BA=90=EC=8B=9C=EB=8A=94 =EC=8B=9C=EC=8A=A4=ED=85=9C= =EC=9D=98 =EB=82=98=EB=A8=B8=EC=A7=80 =EB=B6=80=EB=B6=84=EB=93=A4=EA=B3= =BC =EC=9D=BC=EA=B4=80=EC=84=B1=EC=9D=84 =EB=A7=9E=EC=B6=94=EA=B8=B0 =EC= =9C=84=ED=95=B4 =ED=95=B4=EB=8B=B9 =EC=BA=90=EC=8B=9C=EC=97=90 + =EC=A0=81=EC=9A=A9=EB=90=98=EC=96=B4=EC=95=BC =ED=95=A0 =EC=98=A4= =ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85=98=EB=93=A4=EC=9D=98 =ED=81=90=EB=A5=BC= =EA=B0=80=EC=A7=90; + + (*) =EC=9D=B4 =EC=9D=BC=EA=B4=80=EC=84=B1 =ED=81=90=EB=8A=94 =EC=BA=90= =EC=8B=9C=EC=97=90 =EC=9D=B4=EB=AF=B8 =EC=A1=B4=EC=9E=AC=ED=95=98=EB=8A= =94 =EB=9D=BC=EC=9D=B8=EC=97=90 =EA=B0=80=ED=95=B4=EC=A7=80=EB=8A=94 =ED= =8F=89=EB=B2=94=ED=95=9C =EB=A1=9C=EB=93=9C=EC=97=90 =EC=9D=98=ED=95=B4= =EC=84=9C=EB=8A=94 + =EB=B9=84=EC=9B=8C=EC=A7=80=EC=A7=80 =EC=95=8A=EB=8A=94=EB=8D=B0,= =ED=81=90=EC=9D=98 =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85=98=EB=93= =A4=EC=9D=B4 =EC=9D=B4 =EB=A1=9C=EB=93=9C=EC=9D=98 =EA=B2=B0=EA=B3=BC=EC= =97=90 =EC=98=81=ED=96=A5=EC=9D=84 =EB=81=BC=EC=B9=A0 =EC=88=98 =EC=9E=88= =EB=8B=A4 + =ED=95=A0=EC=A7=80=EB=9D=BC=EB=8F=84 =EA=B7=B8=EB=9F=AC=ED=95=A8. + +=EC=9D=B4=EC=A0=9C, =EC=B2=AB=EB=B2=88=EC=A7=B8 CPU =EC=97=90=EC=84=9C= =EB=91=90=EA=B0=9C=EC=9D=98 =EC=93=B0=EA=B8=B0 =EC=98=A4=ED=8D=BC=EB=A0= =88=EC=9D=B4=EC=85=98=EC=9D=84 =EB=A7=8C=EB=93=9C=EB=8A=94=EB=8D=B0, =ED= =95=B4=EB=8B=B9 CPU =EC=9D=98 =EC=BA=90=EC=8B=9C=EC=97=90 +=EC=9A=94=EC=B2=AD=EB=90=9C =EC=88=9C=EC=84=9C=EB=A1=9C =EC=98=A4=ED=8D= =BC=EB=A0=88=EC=9D=B4=EC=85=98=EC=9D=B4 =EB=8F=84=EB=8B=AC=EB=90=A8=EC=9D= =84 =EB=B3=B4=EC=9E=A5=ED=95=98=EA=B8=B0 =EC=9C=84=ED=95=B4 =EB=91=90 =EC= =98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85=98 =EC=82=AC=EC=9D=B4=EC=97=90 = =EC=93=B0=EA=B8=B0 +=EB=B0=B0=EB=A6=AC=EC=96=B4=EB=A5=BC =EC=82=AC=EC=9A=A9=ED=95=98=EB=8A= =94 =EC=83=81=ED=99=A9=EC=9D=84 =EC=83=81=EC=83=81=ED=95=B4 =EB=B4=85=EC= =8B=9C=EB=8B=A4: + + CPU 1 CPU 2 COMMENT + =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D + u =3D=3D 0, v =3D=3D 1 and p =3D=3D &u, q =3D=3D &u + v =3D 2; + smp_wmb(); v =EC=9D=98 =EB=B3=80=EA=B2=BD=EC=9D=B4 p =EC=9D=98 =EB=B3= =80=EA=B2=BD =EC=A0=84=EC=97=90 =EB=B3=B4=EC=9D=BC =EA=B2=83=EC=9D=84 + =EB=B6=84=EB=AA=85=ED=9E=88 =ED=95=A8 + v =EB=8A=94 =EC=9D=B4=EC=A0=9C =EC=BA=90=EC=8B=9C = A =EC=97=90 =EB=8F=85=EC=A0=90=EC=A0=81=EC=9C=BC=EB=A1=9C =EC=A1=B4=EC=9E= =AC=ED=95=A8 + p =3D &v; + p =EB=8A=94 =EC=9D=B4=EC=A0=9C =EC=BA=90=EC=8B=9C= B =EC=97=90 =EB=8F=85=EC=A0=90=EC=A0=81=EC=9C=BC=EB=A1=9C =EC=A1=B4=EC= =9E=AC=ED=95=A8 + +=EC=97=AC=EA=B8=B0=EC=84=9C=EC=9D=98 =EC=93=B0=EA=B8=B0 =EB=A9=94=EB=AA= =A8=EB=A6=AC =EB=B0=B0=EB=A6=AC=EC=96=B4=EB=8A=94 CPU 1 =EC=9D=98 =EC=BA= =90=EC=8B=9C=EA=B0=80 =EC=98=AC=EB=B0=94=EB=A5=B8 =EC=88=9C=EC=84=9C=EB= =A1=9C =EC=97=85=EB=8D=B0=EC=9D=B4=ED=8A=B8 =EB=90=9C =EA=B2=83=EC=9C=BC= =EB=A1=9C +=EC=8B=9C=EC=8A=A4=ED=85=9C=EC=9D=98 =EB=8B=A4=EB=A5=B8 CPU =EB=93=A4=EC= =9D=B4 =EC=9D=B8=EC=A7=80=ED=95=98=EA=B2=8C =EB=A7=8C=EB=93=AD=EB=8B=88= =EB=8B=A4. =ED=95=98=EC=A7=80=EB=A7=8C, =EC=9D=B4=EC=A0=9C =EB=91=90=EB= =B2=88=EC=A7=B8 CPU =EA=B0=80 =EA=B7=B8 =EA=B0=92=EB=93=A4=EC=9D=84 +=EC=9D=BD=EC=9C=BC=EB=A0=A4 =ED=95=98=EB=8A=94 =EC=83=81=ED=99=A9=EC=9D= =84 =EC=83=9D=EA=B0=81=ED=95=B4 =EB=B4=85=EC=8B=9C=EB=8B=A4: + + CPU 1 CPU 2 COMMENT + =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D + ... + q =3D p; + x =3D *q; + +=EC=9C=84=EC=9D=98 =EB=91=90=EA=B0=9C=EC=9D=98 =EC=9D=BD=EA=B8=B0 =EC=98= =A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85=98=EC=9D=80 =EC=98=88=EC=83=81=EB=90= =9C =EC=88=9C=EC=84=9C=EB=A1=9C =EC=9D=BC=EC=96=B4=EB=82=98=EC=A7=80 =EB= =AA=BB=ED=95=A0 =EC=88=98 =EC=9E=88=EB=8A=94=EB=8D=B0, =EB=91=90=EB=B2=88= =EC=A7=B8 CPU +=EC=9D=98 =ED=95=9C =EC=BA=90=EC=8B=9C=EC=97=90 =EB=8B=A4=EB=A5=B8 =EC= =BA=90=EC=8B=9C =EC=9D=B4=EB=B2=A4=ED=8A=B8=EA=B0=80 =EB=B0=9C=EC=83=9D= =ED=95=B4 v =EB=A5=BC =EB=8B=B4=EA=B3=A0 =EC=9E=88=EB=8A=94 =EC=BA=90=EC= =8B=9C=EB=9D=BC=EC=9D=B8=EC=9D=98 =ED=95=B4=EB=8B=B9 =EC=BA=90=EC=8B=9C= =EC=97=90=EC=9D=98 +=EC=97=85=EB=8D=B0=EC=9D=B4=ED=8A=B8=EA=B0=80 =EC=A7=80=EC=97=B0=EB=90= =98=EB=8A=94 =EC=82=AC=EC=9D=B4, p =EB=A5=BC =EB=8B=B4=EA=B3=A0 =EC=9E=88= =EB=8A=94 =EC=BA=90=EC=8B=9C=EB=9D=BC=EC=9D=B8=EC=9D=80 =EB=91=90=EB=B2= =88=EC=A7=B8 CPU =EC=9D=98 =EB=8B=A4=EB=A5=B8 =EC=BA=90=EC=8B=9C=EC=97=90 +=EC=97=85=EB=8D=B0=EC=9D=B4=ED=8A=B8 =EB=90=98=EC=96=B4=EB=B2=84=EB=A0= =B8=EC=9D=84 =EC=88=98 =EC=9E=88=EA=B8=B0 =EB=95=8C=EB=AC=B8=EC=9E=85=EB= =8B=88=EB=8B=A4. + + CPU 1 CPU 2 COMMENT + =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D + u =3D=3D 0, v =3D=3D 1 and p =3D=3D &u, q =3D=3D &u + v =3D 2; + smp_wmb(); + + + p =3D &v; q =3D p; + + + + x =3D *q; + =EC=BA=90=EC=8B=9C=EC=97=90 =EC=97=85=EB=8D=B0=EC=9D=B4= =ED=8A=B8 =EB=90=98=EA=B8=B0 =EC=A0=84=EC=9D=98 v =EB=A5=BC =EC=9D=BD=EC= =9D=8C + + + +=EA=B8=B0=EB=B3=B8=EC=A0=81=EC=9C=BC=EB=A1=9C, =EB=91=90=EA=B0=9C=EC=9D= =98 =EC=BA=90=EC=8B=9C=EB=9D=BC=EC=9D=B8 =EB=AA=A8=EB=91=90 CPU 2 =EC=97= =90 =EC=B5=9C=EC=A2=85=EC=A0=81=EC=9C=BC=EB=A1=9C=EB=8A=94 =EC=97=85=EB= =8D=B0=EC=9D=B4=ED=8A=B8 =EB=90=A0 =EA=B2=83=EC=9D=B4=EC=A7=80=EB=A7=8C= , +=EB=B3=84=EB=8F=84=EC=9D=98 =EA=B0=9C=EC=9E=85 =EC=97=86=EC=9D=B4=EB=8A= =94, =EC=97=85=EB=8D=B0=EC=9D=B4=ED=8A=B8=EC=9D=98 =EC=88=9C=EC=84=9C=EA= =B0=80 CPU 1 =EC=97=90=EC=84=9C =EB=A7=8C=EB=93=A4=EC=96=B4=EC=A7=84 =EC= =88=9C=EC=84=9C=EC=99=80 =EB=8F=99=EC=9D=BC=ED=95=A0 +=EA=B2=83=EC=9D=B4=EB=9D=BC=EB=8A=94 =EB=B3=B4=EC=9E=A5=EC=9D=B4 =EC=97= =86=EC=8A=B5=EB=8B=88=EB=8B=A4. + + +=EC=97=AC=EA=B8=B0=EC=97=90 =EA=B0=9C=EC=9E=85=ED=95=98=EA=B8=B0 =EC=9C= =84=ED=95=B4=EC=84=A0, =EB=8D=B0=EC=9D=B4=ED=84=B0 =EC=9D=98=EC=A1=B4=EC= =84=B1 =EB=B0=B0=EB=A6=AC=EC=96=B4=EB=82=98 =EC=9D=BD=EA=B8=B0 =EB=B0=B0= =EB=A6=AC=EC=96=B4=EB=A5=BC =EB=A1=9C=EB=93=9C =EC=98=A4=ED=8D=BC=EB=A0= =88=EC=9D=B4=EC=85=98=EB=93=A4 +=EC=82=AC=EC=9D=B4=EC=97=90 =EB=84=A3=EC=96=B4=EC=95=BC =ED=95=A9=EB=8B= =88=EB=8B=A4. =EC=9D=B4=EB=A0=87=EA=B2=8C =ED=95=A8=EC=9C=BC=EB=A1=9C=EC= =8D=A8 =EC=BA=90=EC=8B=9C=EA=B0=80 =EB=8B=A4=EC=9D=8C =EC=9A=94=EC=B2=AD= =EC=9D=84 =EC=B2=98=EB=A6=AC=ED=95=98=EA=B8=B0 =EC=A0=84=EC=97=90 =EC=9D= =BC=EA=B4=80=EC=84=B1 +=ED=81=90=EB=A5=BC =EC=B2=98=EB=A6=AC=ED=95=98=EB=8F=84=EB=A1=9D =EA=B0= =95=EC=A0=9C=ED=95=98=EA=B2=8C =EB=90=A9=EB=8B=88=EB=8B=A4. + + CPU 1 CPU 2 COMMENT + =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D + u =3D=3D 0, v =3D=3D 1 and p =3D=3D &u, q =3D=3D &u + v =3D 2; + smp_wmb(); + + + p =3D &v; q =3D p; + + + + smp_read_barrier_depends() + + + x =3D *q; + =EC=BA=90=EC=8B=9C=EC=97=90 =EC=97=85=EB=8D=B0=EC=9D=B4= =ED=8A=B8 =EB=90=9C v =EB=A5=BC =EC=9D=BD=EC=9D=8C + + +=EC=9D=B4=EB=9F=B0 =EB=B6=80=EB=A5=98=EC=9D=98 =EB=AC=B8=EC=A0=9C=EB=8A= =94 DEC Alpha =EA=B3=84=EC=97=B4 =ED=94=84=EB=A1=9C=EC=84=B8=EC=84=9C=EB= =93=A4=EC=97=90=EC=84=9C =EB=B0=9C=EA=B2=AC=EB=90=A0 =EC=88=98 =EC=9E=88= =EB=8A=94=EB=8D=B0, =EC=9D=B4=EB=93=A4=EC=9D=80 +=EB=8D=B0=EC=9D=B4=ED=84=B0 =EB=B2=84=EC=8A=A4=EB=A5=BC =EC=A2=80 =EB=8D= =94 =EC=9E=98 =EC=82=AC=EC=9A=A9=ED=95=B4 =EC=84=B1=EB=8A=A5=EC=9D=84 =EA= =B0=9C=EC=84=A0=ED=95=A0 =EC=88=98 =EC=9E=88=EB=8A=94, =EB=B6=84=ED=95=A0= =EB=90=9C =EC=BA=90=EC=8B=9C=EB=A5=BC =EA=B0=80=EC=A7=80=EA=B3=A0 =EC=9E= =88=EA=B8=B0 +=EB=95=8C=EB=AC=B8=EC=9E=85=EB=8B=88=EB=8B=A4. =EB=8C=80=EB=B6=80=EB=B6= =84=EC=9D=98 CPU =EB=8A=94 =ED=95=98=EB=82=98=EC=9D=98 =EC=9D=BD=EA=B8=B0= =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85=98=EC=9D=98 =EB=A9=94=EB=AA= =A8=EB=A6=AC =EC=95=A1=EC=84=B8=EC=8A=A4=EA=B0=80 =EB=8B=A4=EB=A5=B8 =EC= =9D=BD=EA=B8=B0 +=EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85=98=EC=97=90 =EC=9D=98=EC=A1= =B4=EC=A0=81=EC=9D=B4=EB=9D=BC=EB=A9=B4 =EB=8D=B0=EC=9D=B4=ED=84=B0 =EC= =9D=98=EC=A1=B4=EC=84=B1 =EB=B0=B0=EB=A6=AC=EC=96=B4=EB=A5=BC =EB=82=B4= =ED=8F=AC=EC=8B=9C=ED=82=B5=EB=8B=88=EB=8B=A4=EB=A7=8C, =EB=AA=A8=EB=91= =90=EA=B0=80 =EA=B7=B8=EB=9F=B0=EA=B1=B4 +=EC=95=84=EB=8B=88=EA=B8=B0 =EB=95=8C=EB=AC=B8=EC=97=90 =EC=9D=B4=EC=A0= =90=EC=97=90 =EC=9D=98=EC=A1=B4=ED=95=B4=EC=84=A0 =EC=95=88=EB=90=A9=EB= =8B=88=EB=8B=A4. + +=EB=8B=A4=EB=A5=B8 CPU =EB=93=A4=EB=8F=84 =EB=B6=84=ED=95=A0=EB=90=9C = =EC=BA=90=EC=8B=9C=EB=A5=BC =EA=B0=80=EC=A7=80=EA=B3=A0 =EC=9E=88=EC=9D= =84 =EC=88=98 =EC=9E=88=EC=A7=80=EB=A7=8C, =EA=B7=B8=EB=9F=B0 CPU =EB=93= =A4=EC=9D=80 =ED=8F=89=EB=B2=94=ED=95=9C =EB=A9=94=EB=AA=A8=EB=A6=AC +=EC=95=A1=EC=84=B8=EC=8A=A4=EB=A5=BC =EC=9C=84=ED=95=B4=EC=84=9C=EB=8F= =84 =EC=9D=B4 =EB=B6=84=ED=95=A0=EB=90=9C =EC=BA=90=EC=8B=9C=EB=93=A4 =EC= =82=AC=EC=9D=B4=EC=9D=98 =EC=A1=B0=EC=A0=95=EC=9D=84 =ED=95=B4=EC=95=BC= =EB=A7=8C =ED=95=A9=EB=8B=88=EB=8B=A4. Alpha =EB=8A=94 =EA=B0=80=EC=9E= =A5 +=EC=95=BD=ED=95=9C =EB=A9=94=EB=AA=A8=EB=A6=AC =EC=88=9C=EC=84=9C =EC=8B= =9C=EB=A7=A8=ED=8B=B1 (semantic) =EC=9D=84 =EC=84=A0=ED=83=9D=ED=95=A8=EC= =9C=BC=EB=A1=9C=EC=8D=A8 =EB=A9=94=EB=AA=A8=EB=A6=AC =EB=B0=B0=EB=A6=AC= =EC=96=B4=EA=B0=80 =EB=AA=85=EC=8B=9C=EC=A0=81=EC=9C=BC=EB=A1=9C +=EC=82=AC=EC=9A=A9=EB=90=98=EC=A7=80 =EC=95=8A=EC=95=98=EC=9D=84 =EB=95= =8C=EC=97=90=EB=8A=94 =EA=B7=B8=EB=9F=B0 =EC=A1=B0=EC=A0=95=EC=9D=B4 =ED= =95=84=EC=9A=94=ED=95=98=EC=A7=80 =EC=95=8A=EA=B2=8C =ED=96=88=EC=8A=B5= =EB=8B=88=EB=8B=A4. + + +=EC=BA=90=EC=8B=9C =EC=9D=BC=EA=B4=80=EC=84=B1 VS DMA +------------------ + +=EB=AA=A8=EB=93=A0 =EC=8B=9C=EC=8A=A4=ED=85=9C=EC=9D=B4 DMA =EB=A5=BC = =ED=95=98=EB=8A=94 =EB=94=94=EB=B0=94=EC=9D=B4=EC=8A=A4=EC=97=90 =EB=8C= =80=ED=95=B4=EC=84=9C=EA=B9=8C=EC=A7=80 =EC=BA=90=EC=8B=9C =EC=9D=BC=EA= =B4=80=EC=84=B1=EC=9D=84 =EC=9C=A0=EC=A7=80=ED=95=98=EC=A7=80=EB=8A=94 +=EC=95=8A=EC=8A=B5=EB=8B=88=EB=8B=A4. =EA=B7=B8=EB=9F=B0 =EA=B2=BD=EC= =9A=B0, DMA =EB=A5=BC =EC=8B=9C=EB=8F=84=ED=95=98=EB=8A=94 =EB=94=94=EB= =B0=94=EC=9D=B4=EC=8A=A4=EB=8A=94 RAM =EC=9C=BC=EB=A1=9C=EB=B6=80=ED=84= =B0 =EC=9E=98=EB=AA=BB=EB=90=9C =EB=8D=B0=EC=9D=B4=ED=84=B0=EB=A5=BC +=EC=9D=BD=EC=9D=84 =EC=88=98 =EC=9E=88=EB=8A=94=EB=8D=B0, =EB=8D=94=ED= =8B=B0 =EC=BA=90=EC=8B=9C =EB=9D=BC=EC=9D=B8=EC=9D=B4 CPU =EC=9D=98 =EC= =BA=90=EC=8B=9C=EC=97=90 =EB=A8=B8=EB=AC=B4=EB=A5=B4=EA=B3=A0 =EC=9E=88= =EA=B3=A0, =EB=B0=94=EB=80=90 =EA=B0=92=EC=9D=B4 =EC=95=84=EC=A7=81 +RAM =EC=97=90 =EC=8D=A8=EC=A7=80=EC=A7=80 =EC=95=8A=EC=95=98=EC=9D=84 = =EC=88=98 =EC=9E=88=EA=B8=B0 =EB=95=8C=EB=AC=B8=EC=9E=85=EB=8B=88=EB=8B= =A4. =EC=9D=B4 =EB=AC=B8=EC=A0=9C=EB=A5=BC =ED=95=B4=EA=B2=B0=ED=95=98= =EA=B8=B0 =EC=9C=84=ED=95=B4=EC=84=A0, =EC=BB=A4=EB=84=90=EC=9D=98 +=EC=A0=81=EC=A0=88=ED=95=9C =EB=B6=80=EB=B6=84=EC=97=90=EC=84=9C =EA=B0= =81 CPU =EC=BA=90=EC=8B=9C=EC=9D=98 =EB=AC=B8=EC=A0=9C=EB=90=98=EB=8A=94= =EB=B9=84=ED=8A=B8=EB=93=A4=EC=9D=84 =ED=94=8C=EB=9F=AC=EC=8B=9C (flus= h) =EC=8B=9C=EC=BC=9C=EC=95=BC=EB=A7=8C =ED=95=A9=EB=8B=88=EB=8B=A4 +(=EA=B7=B8=EB=A6=AC=EA=B3=A0 =EA=B7=B8=EA=B2=83=EB=93=A4=EC=9D=84 =EB=AC= =B4=ED=9A=A8=ED=99=94 - invalidation - =EC=8B=9C=ED=82=AC =EC=88=98=EB=8F= =84 =EC=9E=88=EA=B2=A0=EC=A3=A0). + +=EB=98=90=ED=95=9C, =EB=94=94=EB=B0=94=EC=9D=B4=EC=8A=A4=EC=97=90 =EC=9D= =98=ED=95=B4 RAM =EC=97=90 DMA =EB=A1=9C =EC=93=B0=EC=97=AC=EC=A7=84 =EA= =B0=92=EC=9D=80 =EB=94=94=EB=B0=94=EC=9D=B4=EC=8A=A4=EA=B0=80 =EC=93=B0= =EA=B8=B0=EB=A5=BC =EC=99=84=EB=A3=8C=ED=95=9C =ED=9B=84=EC=97=90 +CPU =EC=9D=98 =EC=BA=90=EC=8B=9C=EC=97=90=EC=84=9C RAM =EC=9C=BC=EB=A1= =9C =EC=93=B0=EC=97=AC=EC=A7=80=EB=8A=94 =EB=8D=94=ED=8B=B0 =EC=BA=90=EC= =8B=9C =EB=9D=BC=EC=9D=B8=EC=97=90 =EC=9D=98=ED=95=B4 =EB=8D=AE=EC=96=B4= =EC=8D=A8=EC=A7=88 =EC=88=98=EB=8F=84 =EC=9E=88=EA=B3=A0, CPU +=EC=9D=98 =EC=BA=90=EC=8B=9C=EC=97=90 =EC=A1=B4=EC=9E=AC=ED=95=98=EB=8A= =94 =EC=BA=90=EC=8B=9C =EB=9D=BC=EC=9D=B8=EC=9D=B4 =ED=95=B4=EB=8B=B9 =EC= =BA=90=EC=8B=9C=EC=97=90=EC=84=9C =EC=82=AD=EC=A0=9C=EB=90=98=EA=B3=A0 = =EB=8B=A4=EC=8B=9C =EA=B0=92=EC=9D=84 =EC=9D=BD=EC=96=B4=EB=93=A4=EC=9D= =B4=EA=B8=B0 +=EC=A0=84=EA=B9=8C=EC=A7=80=EB=8A=94 RAM =EC=9D=B4 =EC=97=85=EB=8D=B0=EC= =9D=B4=ED=8A=B8 =EB=90=98=EC=97=88=EB=8B=A4=EB=8A=94 =EC=82=AC=EC=8B=A4= =EC=9E=90=EC=B2=B4=EA=B0=80 =EC=88=A8=EA=B2=A8=EC=A0=B8 =EB=B2=84=EB=A6= =B4 =EC=88=98=EB=8F=84 =EC=9E=88=EC=8A=B5=EB=8B=88=EB=8B=A4. =EC=9D=B4 +=EB=AC=B8=EC=A0=9C=EB=A5=BC =ED=95=B4=EA=B2=B0=ED=95=98=EA=B8=B0 =EC=9C= =84=ED=95=B4=EC=84=A0, =EC=BB=A4=EB=84=90=EC=9D=98 =EC=A0=81=EC=A0=88=ED= =95=9C =EB=B6=80=EB=B6=84=EC=97=90=EC=84=9C =EA=B0=81 CPU =EC=9D=98 =EC= =BA=90=EC=8B=9C =EC=95=88=EC=9D=98 =EB=AC=B8=EC=A0=9C=EA=B0=80 =EB=90=98= =EB=8A=94 +=EB=B9=84=ED=8A=B8=EB=93=A4=EC=9D=84 =EB=AC=B4=ED=9A=A8=ED=99=94 =EC=8B= =9C=EC=BC=9C=EC=95=BC =ED=95=A9=EB=8B=88=EB=8B=A4. + +=EC=BA=90=EC=8B=9C =EA=B4=80=EB=A6=AC=EC=97=90 =EB=8C=80=ED=95=9C =EB=8D= =94 =EB=A7=8E=EC=9D=80 =EC=A0=95=EB=B3=B4=EB=A5=BC =EC=9C=84=ED=95=B4=EC= =84=A0 Documentation/cachetlb.txt =EB=A5=BC +=EC=B0=B8=EA=B3=A0=ED=95=98=EC=84=B8=EC=9A=94. + + +=EC=BA=90=EC=8B=9C =EC=9D=BC=EA=B4=80=EC=84=B1 VS MMIO +------------------- + +Memory mapped I/O =EB=8A=94 =EC=9D=BC=EB=B0=98=EC=A0=81=EC=9C=BC=EB=A1= =9C CPU =EC=9D=98 =EB=A9=94=EB=AA=A8=EB=A6=AC =EA=B3=B5=EA=B0=84 =EB=82= =B4=EC=9D=98 =ED=95=9C =EC=9C=88=EB=8F=84=EC=9A=B0=EC=9D=98 =ED=8A=B9=EC= =A0=95 =EB=B6=80=EB=B6=84 +=EB=82=B4=EC=9D=98 =EB=A9=94=EB=AA=A8=EB=A6=AC =EC=A7=80=EC=97=AD=EC=97= =90 =EC=9D=B4=EB=A3=A8=EC=96=B4=EC=A7=80=EB=8A=94=EB=8D=B0, =EC=9D=B4 =EC= =9C=88=EB=8F=84=EC=9A=B0=EB=8A=94 =EC=9D=BC=EB=B0=98=EC=A0=81=EC=9D=B8,= RAM =EC=9C=BC=EB=A1=9C =ED=96=A5=ED=95=98=EB=8A=94 +=EC=9C=88=EB=8F=84=EC=9A=B0=EC=99=80=EB=8A=94 =EB=8B=A4=EB=A5=B8 =ED=8A= =B9=EC=84=B1=EC=9D=84 =EA=B0=96=EC=8A=B5=EB=8B=88=EB=8B=A4. + +=EA=B7=B8=EB=9F=B0 =ED=8A=B9=EC=84=B1 =EA=B0=80=EC=9A=B4=EB=8D=B0 =ED=95= =98=EB=82=98=EB=8A=94, =EC=9D=BC=EB=B0=98=EC=A0=81=EC=9C=BC=EB=A1=9C =EA= =B7=B8=EB=9F=B0 =EC=95=A1=EC=84=B8=EC=8A=A4=EB=8A=94 =EC=BA=90=EC=8B=9C= =EB=A5=BC =EC=99=84=EC=A0=84=ED=9E=88 =EC=9A=B0=ED=9A=8C=ED=95=98=EA=B3= =A0 +=EB=94=94=EB=B0=94=EC=9D=B4=EC=8A=A4 =EB=B2=84=EC=8A=A4=EB=A1=9C =EA=B3= =A7=EB=B0=94=EB=A1=9C =ED=96=A5=ED=95=9C=EB=8B=A4=EB=8A=94 =EA=B2=83=EC= =9E=85=EB=8B=88=EB=8B=A4. =EC=9D=B4 =EB=A7=90=EC=9D=80 MMIO =EC=95=A1=EC= =84=B8=EC=8A=A4=EB=8A=94 =EB=A8=BC=EC=A0=80 +=EC=8B=9C=EC=9E=91=EB=90=98=EC=96=B4=EC=84=9C =EC=BA=90=EC=8B=9C=EC=97= =90=EC=84=9C =EC=99=84=EB=A3=8C=EB=90=9C =EB=A9=94=EB=AA=A8=EB=A6=AC =EC= =95=A1=EC=84=B8=EC=8A=A4=EB=A5=BC =EC=B6=94=EC=9B=94=ED=95=A0 =EC=88=98= =EC=9E=88=EB=8B=A4=EB=8A=94 =EB=9C=BB=EC=9E=85=EB=8B=88=EB=8B=A4. =EC= =9D=B4=EB=9F=B0 +=EA=B2=BD=EC=9A=B0=EC=97=94 =EB=A9=94=EB=AA=A8=EB=A6=AC =EB=B0=B0=EB=A6= =AC=EC=96=B4=EB=A7=8C=EC=9C=BC=EB=A1=9C=EB=8A=94 =EC=B6=A9=EB=B6=84=EC=B9= =98 =EC=95=8A=EA=B3=A0, =EB=A7=8C=EC=95=BD =EC=BA=90=EC=8B=9C=EB=90=9C = =EB=A9=94=EB=AA=A8=EB=A6=AC =EC=93=B0=EA=B8=B0 =EC=98=A4=ED=8D=BC=EB=A0= =88=EC=9D=B4=EC=85=98=EA=B3=BC +MMIO =EC=95=A1=EC=84=B8=EC=8A=A4=EA=B0=80 =EC=96=B4=EB=96=A4 =EB=B0=A9= =EC=8B=9D=EC=9C=BC=EB=A1=9C=EB=93=A0 =EC=9D=98=EC=A1=B4=EC=A0=81=EC=9D=B4= =EB=9D=BC=EB=A9=B4 =ED=95=B4=EB=8B=B9 =EC=BA=90=EC=8B=9C=EB=8A=94 =EB=91= =90 =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85=98 =EC=82=AC=EC=9D=B4=EC= =97=90 +=EB=B9=84=EC=9B=8C=EC=A0=B8(flush)=EC=95=BC=EB=A7=8C =ED=95=A9=EB=8B=88= =EB=8B=A4. + + +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D +CPU =EB=93=A4=EC=9D=B4 =EC=A0=80=EC=A7=80=EB=A5=B4=EB=8A=94 =EC=9D=BC=EB= =93=A4 +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D + +=ED=94=84=EB=A1=9C=EA=B7=B8=EB=9E=98=EB=A8=B8=EB=8A=94 CPU =EA=B0=80 =EB= =A9=94=EB=AA=A8=EB=A6=AC =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85=98=EB= =93=A4=EC=9D=84 =EC=A0=95=ED=99=95=ED=9E=88 =EC=9A=94=EC=B2=AD=ED=95=9C= =EB=8C=80=EB=A1=9C =EC=88=98=ED=96=89=ED=95=B4 =EC=A4=84 =EA=B2=83=EC=9D= =B4=EB=9D=BC=EA=B3=A0 +=EC=83=9D=EA=B0=81=ED=95=98=EB=8A=94=EB=8D=B0, =EC=98=88=EB=A5=BC =EB=93= =A4=EC=96=B4 =EB=8B=A4=EC=9D=8C=EA=B3=BC =EA=B0=99=EC=9D=80 =EC=BD=94=EB= =93=9C=EB=A5=BC CPU =EC=97=90=EA=B2=8C =EB=84=98=EA=B8=B4=EB=8B=A4=EB=A9= =B4: + + a =3D READ_ONCE(*A); + WRITE_ONCE(*B, b); + c =3D READ_ONCE(*C); + d =3D READ_ONCE(*D); + WRITE_ONCE(*E, e); + +CPU =EB=8A=94 =EB=8B=A4=EC=9D=8C =EC=9D=B8=EC=8A=A4=ED=8A=B8=EB=9F=AD=EC= =85=98=EC=9D=84 =EC=B2=98=EB=A6=AC=ED=95=98=EA=B8=B0 =EC=A0=84=EC=97=90= =ED=98=84=EC=9E=AC=EC=9D=98 =EC=9D=B8=EC=8A=A4=ED=8A=B8=EB=9F=AD=EC=85= =98=EC=9D=84 =EC=9C=84=ED=95=9C =EB=A9=94=EB=AA=A8=EB=A6=AC +=EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85=98=EC=9D=84 =EC=99=84=EB=A3= =8C=ED=95=A0 =EA=B2=83=EC=9D=B4=EB=9D=BC =EC=83=9D=EA=B0=81=ED=95=98=EA= =B3=A0, =EB=94=B0=EB=9D=BC=EC=84=9C =EC=8B=9C=EC=8A=A4=ED=85=9C =EC=99=B8= =EB=B6=80=EC=97=90=EC=84=9C =EA=B4=80=EC=B0=B0=ED=95=98=EA=B8=B0=EC=97=90= =EB=8F=84 =EC=A0=95=ED=95=B4=EC=A7=84 +=EC=88=9C=EC=84=9C=EB=8C=80=EB=A1=9C =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D= =B4=EC=85=98=EC=9D=B4 =EC=88=98=ED=96=89=EB=90=A0 =EA=B2=83=EC=9C=BC=EB= =A1=9C =EC=98=88=EC=83=81=ED=95=A9=EB=8B=88=EB=8B=A4: + + LOAD *A, STORE *B, LOAD *C, LOAD *D, STORE *E. + + +=EB=8B=B9=EC=97=B0=ED=95=98=EC=A7=80=EB=A7=8C, =EC=8B=A4=EC=A0=9C=EB=A1= =9C=EB=8A=94 =ED=9B=A8=EC=94=AC =EC=97=89=EB=A7=9D=EC=9E=85=EB=8B=88=EB= =8B=A4. =EB=A7=8E=EC=9D=80 CPU =EC=99=80 =EC=BB=B4=ED=8C=8C=EC=9D=BC=EB= =9F=AC=EC=97=90=EC=84=9C =EC=95=9E=EC=9D=98 =EA=B0=80=EC=A0=95=EC=9D=80 +=EC=84=B1=EB=A6=BD=ED=95=98=EC=A7=80 =EB=AA=BB=ED=95=98=EB=8A=94=EB=8D= =B0 =EA=B7=B8 =EC=9D=B4=EC=9C=A0=EB=8A=94 =EB=8B=A4=EC=9D=8C=EA=B3=BC =EA= =B0=99=EC=8A=B5=EB=8B=88=EB=8B=A4: + + (*) =EB=A1=9C=EB=93=9C =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85=98=EB= =93=A4=EC=9D=80 =EC=8B=A4=ED=96=89=EC=9D=84 =EA=B3=84=EC=86=8D =ED=95=B4= =EB=82=98=EA=B0=80=EA=B8=B0 =EC=9C=84=ED=95=B4 =EA=B3=A7=EB=B0=94=EB=A1= =9C =EC=99=84=EB=A3=8C=EB=90=A0 =ED=95=84=EC=9A=94=EA=B0=80 =EC=9E=88=EB= =8A=94 + =EA=B2=BD=EC=9A=B0=EA=B0=80 =EB=A7=8E=EC=9D=80 =EB=B0=98=EB=A9=B4= , =EC=8A=A4=ED=86=A0=EC=96=B4 =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85= =98=EB=93=A4=EC=9D=80 =EC=A2=85=EC=A2=85 =EB=B3=84=EB=8B=A4=EB=A5=B8 =EB= =AC=B8=EC=A0=9C =EC=97=86=EC=9D=B4 =EC=9C=A0=EC=98=88=EB=90=A0 =EC=88=98 + =EC=9E=88=EC=8A=B5=EB=8B=88=EB=8B=A4; + + (*) =EB=A1=9C=EB=93=9C =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85=98=EB= =93=A4=EC=9D=80 =EC=98=88=EC=B8=A1=EC=A0=81=EC=9C=BC=EB=A1=9C =EC=88=98= =ED=96=89=EB=90=A0 =EC=88=98 =EC=9E=88=EC=9C=BC=EB=A9=B0, =ED=95=84=EC=9A= =94=EC=97=86=EB=8A=94 =EB=A1=9C=EB=93=9C=EC=98=80=EB=8B=A4=EA=B3=A0 + =EC=A6=9D=EB=AA=85=EB=90=9C =EC=98=88=EC=B8=A1=EC=A0=81 =EB=A1=9C= =EB=93=9C=EC=9D=98 =EA=B2=B0=EA=B3=BC=EB=8A=94 =EB=B2=84=EB=A0=A4=EC=A7= =91=EB=8B=88=EB=8B=A4; + + (*) =EB=A1=9C=EB=93=9C =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85=98=EB= =93=A4=EC=9D=80 =EC=98=88=EC=B8=A1=EC=A0=81=EC=9C=BC=EB=A1=9C =EC=88=98= =ED=96=89=EB=90=A0 =EC=88=98 =EC=9E=88=EC=9C=BC=EB=AF=80=EB=A1=9C, =EC=98= =88=EC=83=81=EB=90=9C =EC=9D=B4=EB=B2=A4=ED=8A=B8=EC=9D=98 + =EC=8B=9C=ED=80=80=EC=8A=A4=EC=99=80 =EB=8B=A4=EB=A5=B8 =EC=8B=9C= =EA=B0=84=EC=97=90 =EB=A1=9C=EB=93=9C=EA=B0=80 =EC=9D=B4=EB=A4=84=EC=A7= =88 =EC=88=98 =EC=9E=88=EC=8A=B5=EB=8B=88=EB=8B=A4; + + (*) =EB=A9=94=EB=AA=A8=EB=A6=AC =EC=95=A1=EC=84=B8=EC=8A=A4 =EC=88=9C= =EC=84=9C=EB=8A=94 CPU =EB=B2=84=EC=8A=A4=EC=99=80 =EC=BA=90=EC=8B=9C=EB= =A5=BC =EC=A2=80 =EB=8D=94 =EC=9E=98 =EC=82=AC=EC=9A=A9=ED=95=A0 =EC=88= =98 =EC=9E=88=EB=8F=84=EB=A1=9D =EC=9E=AC=EB=B0=B0=EC=B9=98 + =EB=90=A0 =EC=88=98 =EC=9E=88=EC=8A=B5=EB=8B=88=EB=8B=A4; + + (*) =EB=A1=9C=EB=93=9C=EC=99=80 =EC=8A=A4=ED=86=A0=EC=96=B4=EB=8A=94 = =EC=9D=B8=EC=A0=91=ED=95=9C =EC=9C=84=EC=B9=98=EC=97=90=EC=9D=98 =EC=95= =A1=EC=84=B8=EC=8A=A4=EB=93=A4=EC=9D=84 =EC=9D=BC=EA=B4=84=EC=A0=81=EC=9C= =BC=EB=A1=9C =EC=B2=98=EB=A6=AC=ED=95=A0 =EC=88=98 =EC=9E=88=EB=8A=94 + =EB=A9=94=EB=AA=A8=EB=A6=AC=EB=82=98 I/O =ED=95=98=EB=93=9C=EC=9B= =A8=EC=96=B4 (=EB=A9=94=EB=AA=A8=EB=A6=AC=EC=99=80 PCI =EB=94=94=EB=B0=94= =EC=9D=B4=EC=8A=A4 =EB=91=98 =EB=8B=A4 =EC=9D=B4=EA=B2=8C =EA=B0=80=EB=8A= =A5=ED=95=A0 =EC=88=98 + =EC=9E=88=EC=8A=B5=EB=8B=88=EB=8B=A4) =EC=97=90 =EB=8C=80=ED=95=B4= =EC=9A=94=EC=B2=AD=EB=90=98=EB=8A=94 =EA=B2=BD=EC=9A=B0, =EA=B0=9C=EB=B3= =84 =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85=98=EC=9D=84 =EC=9C=84=ED= =95=9C =ED=8A=B8=EB=9E=9C=EC=9E=AD=EC=85=98 =EC=84=A4=EC=A0=95 + =EB=B9=84=EC=9A=A9=EC=9D=84 =EC=95=84=EB=81=BC=EA=B8=B0 =EC=9C=84= =ED=95=B4 =EC=A1=B0=ED=95=A9=EB=90=98=EC=96=B4 =EC=8B=A4=ED=96=89=EB=90= =A0 =EC=88=98 =EC=9E=88=EC=8A=B5=EB=8B=88=EB=8B=A4; =EA=B7=B8=EB=A6=AC=EA= =B3=A0 + + (*) =ED=95=B4=EB=8B=B9 CPU =EC=9D=98 =EB=8D=B0=EC=9D=B4=ED=84=B0 =EC=BA= =90=EC=8B=9C=EA=B0=80 =EC=88=9C=EC=84=9C=EC=97=90 =EC=98=81=ED=96=A5=EC= =9D=84 =EB=81=BC=EC=B9=A0 =EC=88=98=EB=8F=84 =EC=9E=88=EA=B3=A0, =EC=BA= =90=EC=8B=9C =EC=9D=BC=EA=B4=80=EC=84=B1 + =EB=A9=94=EC=BB=A4=EB=8B=88=EC=A6=98=EC=9D=B4 - =EC=8A=A4=ED=86=A0= =EC=96=B4=EA=B0=80 =EC=8B=A4=EC=A0=9C=EB=A1=9C =EC=BA=90=EC=8B=9C=EC=97= =90 =EB=8F=84=EB=8B=AC=ED=95=9C=EB=8B=A4=EB=A9=B4 - =EC=9D=B4 =EB=AC=B8= =EC=A0=9C=EB=A5=BC =EC=99=84=ED=99=94=EC=8B=9C=ED=82=AC =EC=88=98=EB=8A= =94 + =EC=9E=88=EC=A7=80=EB=A7=8C =EC=9D=B4 =EC=9D=BC=EA=B4=80=EC=84=B1= =EA=B4=80=EB=A6=AC=EA=B0=80 =EB=8B=A4=EB=A5=B8 CPU =EB=93=A4=EC=97=90=EB= =8F=84 =EA=B0=99=EC=9D=80 =EC=88=9C=EC=84=9C=EB=A1=9C =EC=A0=84=EB=8B=AC= =EB=90=9C=EB=8B=A4=EB=8A=94 =EB=B3=B4=EC=9E=A5=EC=9D=80 + =EC=97=86=EC=8A=B5=EB=8B=88=EB=8B=A4. + +=EB=94=B0=EB=9D=BC=EC=84=9C, =EC=95=9E=EC=9D=98 =EC=BD=94=EB=93=9C=EC=97= =90 =EB=8C=80=ED=95=B4 =EB=8B=A4=EB=A5=B8 CPU =EA=B0=80 =EB=B3=B4=EB=8A= =94 =EA=B2=B0=EA=B3=BC=EB=8A=94 =EB=8B=A4=EC=9D=8C=EA=B3=BC =EA=B0=99=EC= =9D=84 =EC=88=98 =EC=9E=88=EC=8A=B5=EB=8B=88=EB=8B=A4: + + LOAD *A, ..., LOAD {*C,*D}, STORE *E, STORE *B + + ("LOAD {*C,*D}" =EB=8A=94 =EC=A1=B0=ED=95=A9=EB=90=9C =EB=A1=9C=EB=93= =9C=EC=9E=85=EB=8B=88=EB=8B=A4) + + +=ED=95=98=EC=A7=80=EB=A7=8C, CPU =EB=8A=94 =EC=8A=A4=EC=8A=A4=EB=A1=9C= =EB=8A=94 =EC=9D=BC=EA=B4=80=EC=A0=81=EC=9D=BC =EA=B2=83=EC=9D=84 =EB=B3= =B4=EC=9E=A5=ED=95=A9=EB=8B=88=EB=8B=A4: CPU _=EC=9E=90=EC=8B=A0_ =EC=9D= =98 =EC=95=A1=EC=84=B8=EC=8A=A4=EB=93=A4=EC=9D=80 +=EC=9E=90=EC=8B=A0=EC=97=90=EA=B2=8C=EB=8A=94 =EB=A9=94=EB=AA=A8=EB=A6= =AC =EB=B0=B0=EB=A6=AC=EC=96=B4=EA=B0=80 =EC=97=86=EC=9D=8C=EC=97=90=EB= =8F=84 =EB=B6=88=EA=B5=AC=ED=95=98=EA=B3=A0 =EC=A0=95=ED=99=95=ED=9E=88= =EC=88=9C=EC=84=9C =EC=84=B8=EC=9B=8C=EC=A7=84 =EA=B2=83=EC=9C=BC=EB=A1= =9C =EB=B3=B4=EC=97=AC=EC=A7=88 +=EA=B2=83=EC=9E=85=EB=8B=88=EB=8B=A4. =EC=98=88=EB=A5=BC =EB=93=A4=EC= =96=B4 =EB=8B=A4=EC=9D=8C=EC=9D=98 =EC=BD=94=EB=93=9C=EA=B0=80 =EC=A3=BC= =EC=96=B4=EC=A1=8C=EB=8B=A4=EB=A9=B4: + + U =3D READ_ONCE(*A); + WRITE_ONCE(*A, V); + WRITE_ONCE(*A, W); + X =3D READ_ONCE(*A); + WRITE_ONCE(*A, Y); + Z =3D READ_ONCE(*A); + +=EA=B7=B8=EB=A6=AC=EA=B3=A0 =EC=99=B8=EB=B6=80=EC=9D=98 =EC=98=81=ED=96= =A5=EC=97=90 =EC=9D=98=ED=95=9C =EA=B0=84=EC=84=AD=EC=9D=B4 =EC=97=86=EB= =8B=A4=EA=B3=A0 =EA=B0=80=EC=A0=95=ED=95=98=EB=A9=B4, =EC=B5=9C=EC=A2=85= =EA=B2=B0=EA=B3=BC=EB=8A=94 =EB=8B=A4=EC=9D=8C=EA=B3=BC =EA=B0=99=EC=9D= =B4 +=EB=82=98=ED=83=80=EB=82=A0 =EA=B2=83=EC=9D=B4=EB=9D=BC=EA=B3=A0 =EC=98= =88=EC=83=81=EB=90=A0 =EC=88=98 =EC=9E=88=EC=8A=B5=EB=8B=88=EB=8B=A4: + + U =3D=3D *A =EC=9D=98 =EC=B5=9C=EC=B4=88 =EA=B0=92 + X =3D=3D W + Z =3D=3D Y + *A =3D=3D Y + +=EC=95=9E=EC=9D=98 =EC=BD=94=EB=93=9C=EB=8A=94 CPU =EA=B0=80 =EB=8B=A4= =EC=9D=8C=EC=9D=98 =EB=A9=94=EB=AA=A8=EB=A6=AC =EC=95=A1=EC=84=B8=EC=8A= =A4 =EC=8B=9C=ED=80=80=EC=8A=A4=EB=A5=BC =EB=A7=8C=EB=93=A4=EB=8F=84=EB= =A1=9D =ED=95=A0=EA=B2=81=EB=8B=88=EB=8B=A4: + + U=3DLOAD *A, STORE *A=3DV, STORE *A=3DW, X=3DLOAD *A, STORE *A=3DY, Z= =3DLOAD *A + +=ED=95=98=EC=A7=80=EB=A7=8C, =EB=B3=84=EB=8B=A4=EB=A5=B8 =EA=B0=9C=EC=9E= =85=EC=9D=B4 =EC=97=86=EA=B3=A0 =ED=94=84=EB=A1=9C=EA=B7=B8=EB=9E=A8=EC= =9D=98 =EC=8B=9C=EC=95=BC=EC=97=90 =EC=9D=B4 =EC=84=B8=EC=83=81=EC=9D=B4= =EC=97=AC=EC=A0=84=ED=9E=88 =EC=9D=BC=EA=B4=80=EC=A0=81=EC=9D=B4=EB=9D= =BC=EA=B3=A0 +=EB=B3=B4=EC=9D=B8=EB=8B=A4=EB=8A=94 =EB=B3=B4=EC=9E=A5=EB=A7=8C =EC=A7= =80=EC=BC=9C=EC=A7=84=EB=8B=A4=EB=A9=B4 =EC=9D=B4 =EC=8B=9C=ED=80=80=EC= =8A=A4=EB=8A=94 =EC=96=B4=EB=96=A4 =EC=A1=B0=ED=95=A9=EC=9C=BC=EB=A1=9C= =EB=93=A0 =EC=9E=AC=EA=B5=AC=EC=84=B1=EB=90=A0 =EC=88=98 =EC=9E=88=EC=9C= =BC=EB=A9=B0, =EA=B0=81 +=EC=95=A1=EC=84=B8=EC=8A=A4=EB=93=A4=EC=9D=80 =ED=95=A9=EC=B3=90=EC=A7= =80=EA=B1=B0=EB=82=98 =EB=B2=84=EB=A0=A4=EC=A7=88 =EC=88=98 =EC=9E=88=EC= =8A=B5=EB=8B=88=EB=8B=A4. =EC=9D=BC=EB=B6=80 =EC=95=84=ED=82=A4=ED=85=8D= =EC=B3=90=EC=97=90=EC=84=9C CPU =EB=8A=94 =EA=B0=99=EC=9D=80 =EC=9C=84=EC= =B9=98=EC=97=90 +=EB=8C=80=ED=95=9C =EC=97=B0=EC=86=8D=EC=A0=81=EC=9D=B8 =EB=A1=9C=EB=93= =9C =EC=98=A4=ED=8D=BC=EB=A0=88=EC=9D=B4=EC=85=98=EB=93=A4=EC=9D=84 =EC= =9E=AC=EB=B0=B0=EC=B9=98 =ED=95=A0 =EC=88=98 =EC=9E=88=EA=B8=B0 =EB=95=8C= =EB=AC=B8=EC=97=90 =EC=95=9E=EC=9D=98 =EC=98=88=EC=97=90=EC=84=9C=EC=9D= =98 +READ_ONCE() =EC=99=80 WRITE_ONCE() =EB=8A=94 =EB=B0=98=EB=93=9C=EC=8B=9C= =EC=A1=B4=EC=9E=AC=ED=95=B4=EC=95=BC =ED=95=A8=EC=9D=84 =EC=95=8C=EC=95= =84=EB=91=90=EC=84=B8=EC=9A=94. =EA=B7=B8=EB=9F=B0 =EC=A2=85=EB=A5=98=EC= =9D=98 +=EC=95=84=ED=82=A4=ED=85=8D=EC=B3=90=EC=97=90=EC=84=9C READ_ONCE() =EC= =99=80 WRITE_ONCE() =EB=8A=94 =EC=9D=B4 =EB=AC=B8=EC=A0=9C=EB=A5=BC =EB= =A7=89=EA=B8=B0 =EC=9C=84=ED=95=B4 =ED=95=84=EC=9A=94=ED=95=9C =EC=9D=BC= =EC=9D=84 +=EB=AD=90=EA=B0=80 =EB=90=90=EB=93=A0=EC=A7=80 =ED=95=98=EA=B2=8C =EB=90= =98=EB=8A=94=EB=8D=B0, =EC=98=88=EB=A5=BC =EB=93=A4=EC=96=B4 Itanium =EC= =97=90=EC=84=9C=EB=8A=94 READ_ONCE() =EC=99=80 WRITE_ONCE() +=EA=B0=80 =EC=82=AC=EC=9A=A9=ED=95=98=EB=8A=94 volatile =EC=BA=90=EC=8A= =A4=ED=8C=85=EC=9D=80 GCC =EA=B0=80 =EA=B7=B8=EB=9F=B0 =EC=9E=AC=EB=B0=B0= =EC=B9=98=EB=A5=BC =EB=B0=A9=EC=A7=80=ED=95=98=EB=8A=94 =ED=8A=B9=EC=88= =98 =EC=9D=B8=EC=8A=A4=ED=8A=B8=EB=9F=AD=EC=85=98=EC=9D=B8 +ld.acq =EC=99=80 stl.rel =EC=9D=B8=EC=8A=A4=ED=8A=B8=EB=9F=AD=EC=85=98= =EC=9D=84 =EA=B0=81=EA=B0=81 =EB=A7=8C=EB=93=A4=EC=96=B4 =EB=82=B4=EB=8F= =84=EB=A1=9D =ED=95=A9=EB=8B=88=EB=8B=A4. + +=EC=BB=B4=ED=8C=8C=EC=9D=BC=EB=9F=AC =EC=97=AD=EC=8B=9C =EC=9D=B4 =EC=8B= =9C=ED=80=80=EC=8A=A4=EC=9D=98 =EC=95=A1=EC=84=B8=EC=8A=A4=EB=93=A4=EC=9D= =84 CPU =EA=B0=80 =EB=B3=B4=EA=B8=B0=EB=8F=84 =EC=A0=84=EC=97=90 =ED=95= =A9=EC=B9=98=EA=B1=B0=EB=82=98 =EB=B2=84=EB=A6=AC=EA=B1=B0=EB=82=98 =EB= =92=A4=EB=A1=9C +=EB=AF=B8=EB=A4=84=EB=B2=84=EB=A6=B4 =EC=88=98 =EC=9E=88=EC=8A=B5=EB=8B= =88=EB=8B=A4. + +=EC=98=88=EB=A5=BC =EB=93=A4=EC=96=B4: + + *A =3D V; + *A =3D W; + +=EB=8A=94 =EB=8B=A4=EC=9D=8C=EA=B3=BC =EA=B0=99=EC=9D=B4 =EB=B3=80=ED=98= =95=EB=90=A0 =EC=88=98 =EC=9E=88=EC=8A=B5=EB=8B=88=EB=8B=A4: + + *A =3D W; + +=EB=94=B0=EB=9D=BC=EC=84=9C, =EC=93=B0=EA=B8=B0 =EB=B0=B0=EB=A6=AC=EC=96= =B4=EB=82=98 WRITE_ONCE() =EA=B0=80 =EC=97=86=EB=8B=A4=EB=A9=B4 *A =EB=A1= =9C=EC=9D=98 V =EA=B0=92=EC=9D=98 =EC=A0=80=EC=9E=A5=EC=9D=98 =ED=9A=A8= =EA=B3=BC=EB=8A=94 +=EC=82=AC=EB=9D=BC=EC=A7=84=EB=8B=A4=EA=B3=A0 =EA=B0=80=EC=A0=95=EB=90= =A0 =EC=88=98 =EC=9E=88=EC=8A=B5=EB=8B=88=EB=8B=A4. =EB=B9=84=EC=8A=B7= =ED=95=98=EA=B2=8C: + + *A =3D Y; + Z =3D *A; + +=EB=8A=94, =EB=A9=94=EB=AA=A8=EB=A6=AC =EB=B0=B0=EB=A6=AC=EC=96=B4=EB=82= =98 READ_ONCE() =EC=99=80 WRITE_ONCE() =EC=97=86=EC=9D=B4=EB=8A=94 =EB=8B= =A4=EC=9D=8C=EA=B3=BC =EA=B0=99=EC=9D=B4 =EB=B3=80=ED=98=95=EB=90=A0 =EC= =88=98 +=EC=9E=88=EC=8A=B5=EB=8B=88=EB=8B=A4: + + *A =3D Y; + Z =3D Y; + +=EA=B7=B8=EB=A6=AC=EA=B3=A0 =EC=9D=B4 LOAD =EC=98=A4=ED=8D=BC=EB=A0=88= =EC=9D=B4=EC=85=98=EC=9D=80 CPU =EB=B0=94=EA=B9=A5=EC=97=90=EB=8A=94 =EC= =95=84=EC=98=88 =EB=B3=B4=EC=9D=B4=EC=A7=80 =EC=95=8A=EC=8A=B5=EB=8B=88= =EB=8B=A4. + + +=EA=B7=B8=EB=A6=AC=EA=B3=A0, ALPHA =EA=B0=80 =EC=9E=88=EB=8B=A4 +--------------------- + +DEC Alpha CPU =EB=8A=94 =EA=B0=80=EC=9E=A5 =EC=99=84=ED=99=94=EB=90=9C= =EB=A9=94=EB=AA=A8=EB=A6=AC =EC=88=9C=EC=84=9C=EC=9D=98 CPU =EC=A4=91 = =ED=95=98=EB=82=98=EC=9E=85=EB=8B=88=EB=8B=A4. =EB=BF=90=EB=A7=8C =EC=95= =84=EB=8B=88=EB=9D=BC, +Alpha CPU =EC=9D=98 =EC=9D=BC=EB=B6=80 =EB=B2=84=EC=A0=84=EC=9D=80 =EB= =B6=84=ED=95=A0=EB=90=9C =EB=8D=B0=EC=9D=B4=ED=84=B0 =EC=BA=90=EC=8B=9C= =EB=A5=BC =EA=B0=80=EC=A7=80=EA=B3=A0 =EC=9E=88=EC=96=B4=EC=84=9C, =EC=9D= =98=EB=AF=B8=EC=A0=81=EC=9C=BC=EB=A1=9C +=EA=B4=80=EA=B3=84=EB=90=98=EC=96=B4 =EC=9E=88=EB=8A=94 =EB=91=90=EA=B0= =9C=EC=9D=98 =EC=BA=90=EC=8B=9C =EB=9D=BC=EC=9D=B8=EC=9D=B4 =EC=84=9C=EB= =A1=9C =EB=8B=A4=EB=A5=B8 =EC=8B=9C=EA=B0=84=EC=97=90 =EC=97=85=EB=8D=B0= =EC=9D=B4=ED=8A=B8 =EB=90=98=EB=8A=94=EA=B2=8C =EA=B0=80=EB=8A=A5=ED=95= =A9=EB=8B=88=EB=8B=A4. +=EC=9D=B4=EA=B2=8C =EB=8D=B0=EC=9D=B4=ED=84=B0 =EC=9D=98=EC=A1=B4=EC=84= =B1 =EB=B0=B0=EB=A6=AC=EC=96=B4=EA=B0=80 =EC=A0=95=EB=A7=90 =ED=95=84=EC= =9A=94=ED=95=B4=EC=A7=80=EB=8A=94 =EB=B6=80=EB=B6=84=EC=9D=B8=EB=8D=B0,= =EB=8D=B0=EC=9D=B4=ED=84=B0 =EC=9D=98=EC=A1=B4=EC=84=B1 =EB=B0=B0=EB=A6= =AC=EC=96=B4=EB=8A=94 +=EB=A9=94=EB=AA=A8=EB=A6=AC =EC=9D=BC=EA=B4=80=EC=84=B1 =EC=8B=9C=EC=8A= =A4=ED=85=9C=EA=B3=BC =ED=95=A8=EA=BB=98 =EB=91=90=EA=B0=9C=EC=9D=98 =EC= =BA=90=EC=8B=9C=EB=A5=BC =EB=8F=99=EA=B8=B0=ED=99=94 =EC=8B=9C=EC=BC=9C= =EC=84=9C, =ED=8F=AC=EC=9D=B8=ED=84=B0 =EB=B3=80=EA=B2=BD=EA=B3=BC =EC=83= =88=EB=A1=9C=EC=9A=B4 +=EB=8D=B0=EC=9D=B4=ED=84=B0=EC=9D=98 =EB=B0=9C=EA=B2=AC=EC=9D=84 =EC=98= =AC=EB=B0=94=EB=A5=B8 =EC=88=9C=EC=84=9C=EB=A1=9C =EC=9D=BC=EC=96=B4=EB= =82=98=EA=B2=8C =ED=95=98=EA=B8=B0 =EB=95=8C=EB=AC=B8=EC=9E=85=EB=8B=88= =EB=8B=A4. + +=EB=A6=AC=EB=88=85=EC=8A=A4 =EC=BB=A4=EB=84=90=EC=9D=98 =EB=A9=94=EB=AA= =A8=EB=A6=AC =EB=B0=B0=EB=A6=AC=EC=96=B4 =EB=AA=A8=EB=8D=B8=EC=9D=80 Al= pha =EC=97=90 =EA=B8=B0=EC=B4=88=ED=95=B4=EC=84=9C =EC=A0=95=EC=9D=98=EB= =90=98=EC=97=88=EC=8A=B5=EB=8B=88=EB=8B=A4. + +=EC=9C=84=EC=9D=98 "=EC=BA=90=EC=8B=9C =EC=9D=BC=EA=B4=80=EC=84=B1" =EC= =84=9C=EB=B8=8C=EC=84=B9=EC=85=98=EC=9D=84 =EC=B0=B8=EA=B3=A0=ED=95=98=EC= =84=B8=EC=9A=94. + + +=EA=B0=80=EC=83=81 =EB=A8=B8=EC=8B=A0 =EA=B2=8C=EC=8A=A4=ED=8A=B8 +---------------- + +=EA=B0=80=EC=83=81 =EB=A8=B8=EC=8B=A0=EC=97=90=EC=84=9C =EB=8F=99=EC=9E= =91=ED=95=98=EB=8A=94 =EA=B2=8C=EC=8A=A4=ED=8A=B8=EB=93=A4=EC=9D=80 =EA= =B2=8C=EC=8A=A4=ED=8A=B8 =EC=9E=90=EC=B2=B4=EB=8A=94 SMP =EC=A7=80=EC=9B= =90 =EC=97=86=EC=9D=B4 =EC=BB=B4=ED=8C=8C=EC=9D=BC =EB=90=98=EC=97=88=EB= =8B=A4 +=ED=95=B4=EB=8F=84 SMP =EC=98=81=ED=96=A5=EC=9D=84 =EB=B0=9B=EC=9D=84 = =EC=88=98 =EC=9E=88=EC=8A=B5=EB=8B=88=EB=8B=A4. =EC=9D=B4=EA=B1=B4 UP = =EC=BB=A4=EB=84=90=EC=9D=84 =EC=82=AC=EC=9A=A9=ED=95=98=EB=A9=B4=EC=84=9C= SMP =ED=98=B8=EC=8A=A4=ED=8A=B8=EC=99=80 +=EA=B2=B0=EB=B6=80=EB=90=98=EC=96=B4 =EB=B0=9C=EC=83=9D=ED=95=98=EB=8A= =94 =EB=B6=80=EC=9E=91=EC=9A=A9=EC=9E=85=EB=8B=88=EB=8B=A4. =EC=9D=B4 = =EA=B2=BD=EC=9A=B0=EC=97=90=EB=8A=94 mandatory =EB=B0=B0=EB=A6=AC=EC=96= =B4=EB=A5=BC =EC=82=AC=EC=9A=A9=ED=95=B4=EC=84=9C =EB=AC=B8=EC=A0=9C=EB= =A5=BC +=ED=95=B4=EA=B2=B0=ED=95=A0 =EC=88=98 =EC=9E=88=EA=B2=A0=EC=A7=80=EB=A7= =8C =EA=B7=B8=EB=9F=B0 =ED=95=B4=EA=B2=B0=EC=9D=80 =EB=8C=80=EB=B6=80=EB= =B6=84=EC=9D=98 =EA=B2=BD=EC=9A=B0 =EC=B5=9C=EC=A0=81=EC=9D=98 =ED=95=B4= =EA=B2=B0=EC=B1=85=EC=9D=B4 =EC=95=84=EB=8B=99=EB=8B=88=EB=8B=A4. + +=EC=9D=B4 =EB=AC=B8=EC=A0=9C=EB=A5=BC =EC=99=84=EB=B2=BD=ED=95=98=EA=B2= =8C =ED=95=B4=EA=B2=B0=ED=95=98=EA=B8=B0 =EC=9C=84=ED=95=B4, =EB=A1=9C=EC= =9A=B0 =EB=A0=88=EB=B2=A8=EC=9D=98 virt_mb() =EB=93=B1=EC=9D=98 =EB=A7=A4= =ED=81=AC=EB=A1=9C=EB=A5=BC =EC=82=AC=EC=9A=A9=ED=95=A0 =EC=88=98 +=EC=9E=88=EC=8A=B5=EB=8B=88=EB=8B=A4. =EC=9D=B4=EA=B2=83=EB=93=A4=EC=9D= =80 SMP =EA=B0=80 =ED=99=9C=EC=84=B1=ED=99=94 =EB=90=98=EC=96=B4 =EC=9E= =88=EB=8B=A4=EB=A9=B4 smp_mb() =EB=93=B1=EA=B3=BC =EB=8F=99=EC=9D=BC=ED= =95=9C =ED=9A=A8=EA=B3=BC=EB=A5=BC +=EA=B0=96=EC=8A=B5=EB=8B=88=EB=8B=A4=EB=A7=8C, SMP =EC=99=80 SMP =EC=95= =84=EB=8B=8C =EC=8B=9C=EC=8A=A4=ED=85=9C =EB=AA=A8=EB=91=90=EC=97=90 =EB= =8C=80=ED=95=B4 =EB=8F=99=EC=9D=BC=ED=95=9C =EC=BD=94=EB=93=9C=EB=A5=BC= =EB=A7=8C=EB=93=A4=EC=96=B4=EB=83=85=EB=8B=88=EB=8B=A4. +=EC=98=88=EB=A5=BC =EB=93=A4=EC=96=B4, =EA=B0=80=EC=83=81 =EB=A8=B8=EC= =8B=A0 =EA=B2=8C=EC=8A=A4=ED=8A=B8=EB=93=A4=EC=9D=80 (SMP =EC=9D=BC =EC= =88=98 =EC=9E=88=EB=8A=94) =ED=98=B8=EC=8A=A4=ED=8A=B8=EC=99=80 =EB=8F=99= =EA=B8=B0=ED=99=94=EB=A5=BC =ED=95=A0 =EB=95=8C=EC=97=90=EB=8A=94 +smp_mb() =EA=B0=80 =EC=95=84=EB=8B=88=EB=9D=BC virt_mb() =EB=A5=BC =EC= =82=AC=EC=9A=A9=ED=95=B4=EC=95=BC =ED=95=A9=EB=8B=88=EB=8B=A4. + +=EC=9D=B4=EA=B2=83=EB=93=A4=EC=9D=80 smp_mb() =EB=A5=98=EC=9D=98 =EA=B2= =83=EB=93=A4=EA=B3=BC =EB=AA=A8=EB=93=A0 =EB=B6=80=EB=B6=84=EC=97=90=EC= =84=9C =EB=8F=99=EC=9D=BC=ED=95=98=EB=A9=B0, =ED=8A=B9=ED=9E=88, MMIO =EC= =9D=98 =EC=98=81=ED=96=A5=EC=97=90 +=EB=8C=80=ED=95=B4=EC=84=9C=EB=8A=94 =EA=B0=84=EC=97=AC=ED=95=98=EC=A7= =80 =EC=95=8A=EC=8A=B5=EB=8B=88=EB=8B=A4: MMIO =EC=9D=98 =EC=98=81=ED=96= =A5=EC=9D=84 =EC=A0=9C=EC=96=B4=ED=95=98=EB=A0=A4=EB=A9=B4, mandatory =EB= =B0=B0=EB=A6=AC=EC=96=B4=EB=A5=BC +=EC=82=AC=EC=9A=A9=ED=95=98=EC=8B=9C=EA=B8=B0 =EB=B0=94=EB=9E=8D=EB=8B= =88=EB=8B=A4. + + +=3D=3D=3D=3D=3D=3D=3D +=EC=82=AC=EC=9A=A9 =EC=98=88 +=3D=3D=3D=3D=3D=3D=3D + +=EC=88=9C=ED=99=98=EC=8B=9D =EB=B2=84=ED=8D=BC +----------- + +=EB=A9=94=EB=AA=A8=EB=A6=AC =EB=B0=B0=EB=A6=AC=EC=96=B4=EB=8A=94 =EC=88= =9C=ED=99=98=EC=8B=9D =EB=B2=84=ED=8D=BC=EB=A5=BC =EC=83=9D=EC=84=B1=EC= =9E=90(producer)=EC=99=80 =EC=86=8C=EB=B9=84=EC=9E=90(consumer) =EC=82=AC= =EC=9D=B4=EC=9D=98 +=EB=8F=99=EA=B8=B0=ED=99=94=EC=97=90 =EB=9D=BD=EC=9D=84 =EC=82=AC=EC=9A= =A9=ED=95=98=EC=A7=80 =EC=95=8A=EA=B3=A0 =EA=B5=AC=ED=98=84=ED=95=98=EB= =8A=94=EB=8D=B0=EC=97=90 =EC=82=AC=EC=9A=A9=EB=90=A0 =EC=88=98 =EC=9E=88= =EC=8A=B5=EB=8B=88=EB=8B=A4. =EB=8D=94 =EC=9E=90=EC=84=B8=ED=95=9C =EB= =82=B4=EC=9A=A9=EC=9D=84 +=EC=9C=84=ED=95=B4=EC=84=A0 =EB=8B=A4=EC=9D=8C=EC=9D=84 =EC=B0=B8=EA=B3= =A0=ED=95=98=EC=84=B8=EC=9A=94: + + Documentation/circular-buffers.txt + + +=3D=3D=3D=3D=3D=3D=3D=3D=3D +=EC=B0=B8=EA=B3=A0 =EB=AC=B8=ED=97=8C +=3D=3D=3D=3D=3D=3D=3D=3D=3D + +Alpha AXP Architecture Reference Manual, Second Edition (Sites & Witek= , +Digital Press) + Chapter 5.2: Physical Address Space Characteristics + Chapter 5.4: Caches and Write Buffers + Chapter 5.5: Data Sharing + Chapter 5.6: Read/Write Ordering + +AMD64 Architecture Programmer's Manual Volume 2: System Programming + Chapter 7.1: Memory-Access Ordering + Chapter 7.4: Buffering and Combining Memory Writes + +IA-32 Intel Architecture Software Developer's Manual, Volume 3: +System Programming Guide + Chapter 7.1: Locked Atomic Operations + Chapter 7.2: Memory Ordering + Chapter 7.4: Serializing Instructions + +The SPARC Architecture Manual, Version 9 + Chapter 8: Memory Models + Appendix D: Formal Specification of the Memory Models + Appendix J: Programming with the Memory Models + +UltraSPARC Programmer Reference Manual + Chapter 5: Memory Accesses and Cacheability + Chapter 15: Sparc-V9 Memory Models + +UltraSPARC III Cu User's Manual + Chapter 9: Memory Models + +UltraSPARC IIIi Processor User's Manual + Chapter 8: Memory Models + +UltraSPARC Architecture 2005 + Chapter 9: Memory + Appendix D: Formal Specifications of the Memory Models + +UltraSPARC T1 Supplement to the UltraSPARC Architecture 2005 + Chapter 8: Memory Models + Appendix F: Caches and Cache Coherency + +Solaris Internals, Core Kernel Architecture, p63-68: + Chapter 3.3: Hardware Considerations for Locks and + Synchronization + +Unix Systems for Modern Architectures, Symmetric Multiprocessing and C= aching +for Kernel Programmers: + Chapter 13: Other Memory Models + +Intel Itanium Architecture Software Developer's Manual: Volume 1: + Section 2.6: Speculation + Section 4.4: Memory Access --=20 2.5.2