Lines Matching refs:A
181 { A == 1; B == 2 }
182 A = 3; x = B;
183 B = 4; y = A;
188 STORE A=3, STORE B=4, y=LOAD A->3, x=LOAD B->4
189 STORE A=3, STORE B=4, x=LOAD B->4, y=LOAD A->3
190 STORE A=3, y=LOAD A->3, STORE B=4, x=LOAD B->4
191 STORE A=3, y=LOAD A->3, x=LOAD B->2, STORE B=4
192 STORE A=3, x=LOAD B->2, STORE B=4, y=LOAD A->3
193 STORE A=3, x=LOAD B->2, y=LOAD A->3, STORE B=4
194 STORE B=4, STORE A=3, y=LOAD A->3, x=LOAD B->4
215 { A == 1, B == 2, C == 3, P == &A, Q == &C }
223 (Q == &A) and (D == 1)
236 중요합니다. 예를 들어, 어드레스 포트 레지스터 (A) 와 데이터 포트 레지스터 (D)
240 *A = 5;
245 STORE *A = 5, x = LOAD *D
246 x = LOAD *D, STORE *A = 5
304 X = *A; Y = *B; *D = Z;
308 X = LOAD *A, Y = LOAD *B, STORE *D = Z
309 X = LOAD *A, STORE *D = Z, Y = LOAD *B
310 Y = LOAD *B, X = LOAD *A, STORE *D = Z
311 Y = LOAD *B, STORE *D = Z, X = LOAD *A
312 STORE *D = Z, X = LOAD *A, Y = LOAD *B
313 STORE *D = Z, Y = LOAD *B, X = LOAD *A
318 X = *A; Y = *(A + 4);
322 X = LOAD *A; Y = LOAD *(A + 4);
323 Y = LOAD *(A + 4); X = LOAD *A;
324 {X, Y} = LOAD {*A, *(A + 4) };
328 *A = X; *(A + 4) = Y;
332 STORE *A = X; STORE *(A + 4) = Y;
333 STORE *(A + 4) = Y; STORE *A = X;
334 STORE {*A, *(A + 4) } = {X, Y};
369 NOTE 2: A bit-field and an adjacent non-bit-field member
597 { A == 1, B == 2, C == 3, P == &A, Q == &C }
607 여기엔 분명한 주소 의존성이 존재하므로, 이 시퀀스가 끝났을 때 Q 는 &A 또는 &B
610 (Q == &A) 는 (D == 1) 를,
627 { A == 1, B == 2, C == 3, P == &A, Q == &C }
657 { A == 1, B == 2, C = 3, P == &A, Q == &C }
1005 STORE A = 1
1013 { STORE A, STORE B, STORE C } 가 역시 원소끼리의 순서가 존재하지 않는 집합
1021 | | : | A=1 | } \/ 보여질 수 있는 이벤트들
1044 STORE A = 1
1058 | CPU 1 | : | A=1 | \ --->| C->&Y | V
1090 STORE A = 1
1104 | CPU 1 | : | A=1 | \ --->| C->&Y |
1130 { A = 0, B = 9 }
1131 STORE A=1
1135 LOAD A
1142 | |------>| A=1 |------ --->| A->0 |
1151 | | A->0 |------>| |
1156 ---->| A->1 |
1161 하지만, 만약 읽기 배리어가 B 의 로드와 A 의 로드 사이에 존재한다면:
1165 { A = 0, B = 9 }
1166 STORE A=1
1171 LOAD A
1177 | |------>| A=1 |------ --->| A->0 |
1190 모든 결과를 CPU 2 에 ---->| A->1 |------>| |
1195 더 완벽한 설명을 위해, A 의 로드가 읽기 배리어 앞과 뒤에 있으면 어떻게 될지
1200 { A = 0, B = 9 }
1201 STORE A=1
1205 LOAD A [first load of A]
1207 LOAD A [second load of A]
1209 A 의 로드 두개가 모두 B 의 로드 뒤에 있지만, 서로 다른 값을 얻어올 수
1214 | |------>| A=1 |------ --->| A->0 |
1226 | | A->0 |------>| 1st |
1230 모든 결과를 CPU 2 에 ---->| A->1 |------>| 2nd |
1235 하지만 CPU 1 에서의 A 업데이트는 읽기 배리어가 완료되기 전에도 보일 수도
1240 | |------>| A=1 |------ --->| A->0 |
1252 ---->| A->1 |------>| 1st |
1256 | A->1 |------>| 2nd |
1261 여기서 보장되는 건, 만약 B 의 로드가 B == 2 라는 결과를 봤다면, A 에의 두번째
1262 로드는 항상 A == 1 을 보게 될 것이라는 겁니다. A 에의 첫번째 로드에는 그런
1263 보장이 없습니다; A == 0 이거나 A == 1 이거나 둘 중 하나의 결과를 보게 될겁니다.
1286 LOAD A
1296 나누기 하느라 바쁜 ---> --->| A->0 |~~~~ | |
1297 CPU 는 A 의 LOAD 를 +-------+ ~ | |
1314 LOAD A
1326 나누기 하느라 바쁜 ---> --->| A->0 |~~~~ | |
1327 CPU 는 A 의 LOAD 를 +-------+ ~ | |
1348 나누기 하느라 바쁜 ---> --->| A->0 |~~~~ | |
1349 CPU 는 A 의 LOAD 를 +-------+ ~ | |
1356 예측성 동작은 무효화 되고 ---> --->| A->1 |------>| |
1391 원자성으로부터 나옵니다: CPU B 에서 수행된 로드가 CPU A 의 같은 변수로부터의
1392 로드를 뒤따른다면 (그리고 CPU A 가 자신이 읽은 값으로 먼저 해당 변수에 스토어
1393 하지 않았다면) multicopy 원자성을 제공하는 시스템에서는, CPU B 의 로드가 CPU A
2009 *A = a;
2016 ACQUIRE M, STORE *B, STORE *A, RELEASE M
2029 *A = a;
2036 ACQUIRE N, STORE *B, STORE *A, RELEASE M
2073 *A = a;
2084 ACQUIRE, {*F,*A}, *E, {*C,*D}, *B, RELEASE
2086 [+] {*F,*A} 는 조합된 액세스를 의미합니다.
2090 {*F,*A}, *B, ACQUIRE, *C, *D, RELEASE, *E
2091 *A, *B, *C, ACQUIRE, *D, RELEASE, *E, *F
2092 *A, *B, ACQUIRE, *C, RELEASE, *D, *E, *F
2093 *B, ACQUIRE, *C, *D, RELEASE, {*F,*A}, *E
2281 WRITE_ONCE(*A, a); WRITE_ONCE(*E, e);
2288 *A 로의 액세스부터 *H 로의 액세스까지가 어떤 순서로 CPU 3 에게 보여질지에
2293 *E, ACQUIRE M, ACQUIRE Q, *G, *C, *F, *A, *B, RELEASE Q, *D, *H, RELEASE M
2298 *A, *B or *C following RELEASE M
2739 a = READ_ONCE(*A);
2749 LOAD *A, STORE *B, LOAD *C, LOAD *D, STORE *E.
2780 LOAD *A, ..., LOAD {*C,*D}, STORE *E, STORE *B
2789 U = READ_ONCE(*A);
2790 WRITE_ONCE(*A, V);
2791 WRITE_ONCE(*A, W);
2792 X = READ_ONCE(*A);
2793 WRITE_ONCE(*A, Y);
2794 Z = READ_ONCE(*A);
2799 U == *A 의 최초 값
2802 *A == Y
2806 U=LOAD *A, STORE *A=V, STORE *A=W, X=LOAD *A, STORE *A=Y, Z=LOAD *A
2823 *A = V;
2824 *A = W;
2828 *A = W;
2830 따라서, 쓰기 배리어나 WRITE_ONCE() 가 없다면 *A 로의 V 값의 저장의 효과는
2833 *A = Y;
2834 Z = *A;
2839 *A = Y;
2908 ARM Architecture Reference Manual (ARMv8, for ARMv8-A architecture profile)