• Home
  • Raw
  • Download

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
589 { A == 1, B == 2, C == 3, P == &A, Q == &C }
596 여기엔 분명한 데이터 의존성이 존재하므로, 이 시퀀스가 끝났을 때 Q 는 &A 또는 &B
599 (Q == &A) 는 (D == 1) 를,
616 { A == 1, B == 2, C == 3, P == &A, Q == &C }
646 { A == 1, B == 2, C = 3, P == &A, Q == &C }
993 STORE A = 1
1001 { STORE A, STORE B, STORE C } 가 역시 원소끼리의 순서가 존재하지 않는 집합
1009 | | : | A=1 | } \/ 보여질 수 있는 이벤트들
1032 STORE A = 1
1046 | CPU 1 | : | A=1 | \ --->| C->&Y | V
1078 STORE A = 1
1092 | CPU 1 | : | A=1 | \ --->| C->&Y |
1118 { A = 0, B = 9 }
1119 STORE A=1
1123 LOAD A
1130 | |------>| A=1 |------ --->| A->0 |
1139 | | A->0 |------>| |
1144 ---->| A->1 |
1149 하지만, 만약 읽기 배리어가 B 의 로드와 A 의 로드 사이에 존재한다면:
1153 { A = 0, B = 9 }
1154 STORE A=1
1159 LOAD A
1165 | |------>| A=1 |------ --->| A->0 |
1178 모든 결과를 CPU 2 에 ---->| A->1 |------>| |
1183 더 완벽한 설명을 위해, A 의 로드가 읽기 배리어 앞과 뒤에 있으면 어떻게 될지
1188 { A = 0, B = 9 }
1189 STORE A=1
1193 LOAD A [first load of A]
1195 LOAD A [second load of A]
1197 A 의 로드 두개가 모두 B 의 로드 뒤에 있지만, 서로 다른 값을 얻어올 수
1202 | |------>| A=1 |------ --->| A->0 |
1214 | | A->0 |------>| 1st |
1218 모든 결과를 CPU 2 에 ---->| A->1 |------>| 2nd |
1223 하지만 CPU 1 에서의 A 업데이트는 읽기 배리어가 완료되기 전에도 보일 수도
1228 | |------>| A=1 |------ --->| A->0 |
1240 ---->| A->1 |------>| 1st |
1244 | A->1 |------>| 2nd |
1249 여기서 보장되는 건, 만약 B 의 로드가 B == 2 라는 결과를 봤다면, A 에의 두번째
1250 로드는 항상 A == 1 을 보게 될 것이라는 겁니다. A 에의 첫번째 로드에는 그런
1251 보장이 없습니다; A == 0 이거나 A == 1 이거나 둘 중 하나의 결과를 보게 될겁니다.
1274 LOAD A
1284 나누기 하느라 바쁜 ---> --->| A->0 |~~~~ | |
1285 CPU 는 A 의 LOAD 를 +-------+ ~ | |
1302 LOAD A
1314 나누기 하느라 바쁜 ---> --->| A->0 |~~~~ | |
1315 CPU 는 A 의 LOAD 를 +-------+ ~ | |
1336 나누기 하느라 바쁜 ---> --->| A->0 |~~~~ | |
1337 CPU 는 A 의 LOAD 를 +-------+ ~ | |
1344 예측성 동작은 무효화 되고 ---> --->| A->1 |------>| |
1379 원자성으로부터 나옵니다: CPU B 에서 수행된 로드가 CPU A 의 같은 변수로부터의
1380 로드를 뒤따른다면 (그리고 CPU A 가 자신이 읽은 값으로 먼저 해당 변수에 스토어
1381 하지 않았다면) multicopy 원자성을 제공하는 시스템에서는, CPU B 의 로드가 CPU A
1988 *A = a;
1995 ACQUIRE M, STORE *B, STORE *A, RELEASE M
2008 *A = a;
2015 ACQUIRE N, STORE *B, STORE *A, RELEASE M
2052 *A = a;
2063 ACQUIRE, {*F,*A}, *E, {*C,*D}, *B, RELEASE
2065 [+] {*F,*A} 는 조합된 액세스를 의미합니다.
2069 {*F,*A}, *B, ACQUIRE, *C, *D, RELEASE, *E
2070 *A, *B, *C, ACQUIRE, *D, RELEASE, *E, *F
2071 *A, *B, ACQUIRE, *C, RELEASE, *D, *E, *F
2072 *B, ACQUIRE, *C, *D, RELEASE, {*F,*A}, *E
2260 WRITE_ONCE(*A, a); WRITE_ONCE(*E, e);
2267 *A 로의 액세스부터 *H 로의 액세스까지가 어떤 순서로 CPU 3 에게 보여질지에
2272 *E, ACQUIRE M, ACQUIRE Q, *G, *C, *F, *A, *B, RELEASE Q, *D, *H, RELEASE M
2277 *A, *B or *C following RELEASE M
2718 a = READ_ONCE(*A);
2728 LOAD *A, STORE *B, LOAD *C, LOAD *D, STORE *E.
2759 LOAD *A, ..., LOAD {*C,*D}, STORE *E, STORE *B
2768 U = READ_ONCE(*A);
2769 WRITE_ONCE(*A, V);
2770 WRITE_ONCE(*A, W);
2771 X = READ_ONCE(*A);
2772 WRITE_ONCE(*A, Y);
2773 Z = READ_ONCE(*A);
2778 U == *A 의 최초 값
2781 *A == Y
2785 U=LOAD *A, STORE *A=V, STORE *A=W, X=LOAD *A, STORE *A=Y, Z=LOAD *A
2802 *A = V;
2803 *A = W;
2807 *A = W;
2809 따라서, 쓰기 배리어나 WRITE_ONCE() 가 없다면 *A 로의 V 값의 저장의 효과는
2812 *A = Y;
2813 Z = *A;
2818 *A = Y;
2887 ARM Architecture Reference Manual (ARMv8, for ARMv8-A architecture profile)