문제

현재 ARMv7 코어의 ARM 아키텍처 매뉴얼을 통해 WADING입니다. A3.5.3 챕터 A3.5.3 메모리 액세스 원자에 대해서는,

단일 복사 원자 부하가 단일 복사 원자 저장소와 겹치면 겹치는 바이트 중 하나에 대해로드가 작성된 데이터를 반환합니다. 쓰기는 그 바이트의 일관된 순서로 삽입됩니다. 단일 복사 원자 저장소는로드가 점에서 데이터를 반환해야합니다. 일관성에서 삽입 된 쓰기보다 이전에 모든 복사본 원자 상점의 일관된 주문 겹치는 바이트.

원주민이 아닌 영어 스피커로서 나는이 문장을 이해하는 데 약간의 도전을 인정한다.

메모리 바이트에 대한 쓰기가 일관성 순서로 삽입되지 않으므로 위의 시나리오가 적용되지 않습니까? 그렇지 않은 경우, 나는 그 문장을 단축하고,

라고 말하고 있다고 말하면됩니다.

로드가 적어도 하나의 바이트를 반환하는 경우 쓰기, 그 다음로드는 점에서 모든 겹치는 바이트를 반환해야합니다. 쓰기가 삽입 된 곳보다 일찍 모든 겹치는 바이트의 일관된 순서.

는 여전히 동일한 의미를 전송합니까?

도움이 되었습니까?

해결책

armv8 암에서의 문구가 많은 장소에서 가능한 모호성을 정말로 제거하려고 시도합니다 (메모리 순서 섹션을 사실상 읽을 수없는 경우에도 불구하십시오).

일반적인 이해의 관점에서 (실제로 구현 구현 에 반대로) 약간의 모호성이 항상 상처를 입지는 않지만, 절대적으로 "메모리 위치"가 무엇을 의미 하는지를 분명히, 나는 오래된 V7 매뉴얼 (DDI0406C.B) 이이 경우

를 읽는 것이 좋습니다.

다음 조건이 모두 참일 경우 읽기 또는 쓰기 작업은 단일 복사 원자입니다.

  • 메모리 위치에 대한 임의의 기록 동작 이후, 메모리 위치의 값은 기록 동작 중 하나에 의해 기록 된 값이다. 메모리 위치의 값의 일부가 하나의 쓰기 작업에서 오는 부분과 다른 쓰기 작업에서 가져 오는 값의 다른 부분에서

  • 가 불가능합니다.

  • 판독 동작 및 기록 동작이 동일한 메모리 위치로 이루어지면, 판독 동작에 의해 얻어진 값은 다음 중 하나이다 :

    • 쓰기 작업 전의 메모리 위치 값
    • 쓰기 조작 후 메모리 위치의 값입니다.

    읽기 조작의 값이 쓰기 조작 전의 메모리 위치의 값이고 부분적으로 쓰기 조작 후 부분적으로 메모리 위치의 값이 부분적으로 표시되는 경우가 아닙니다.

당신의 이해가 옳습니다 - 단일 복사 원자 작업의 정의 지점은 모두 그것의.

V7의 경우가 있습니다 (오른쪽 해석하는 경우) 동시에 동일한 위치에 발생하는 두 개의 일반적으로 단일 복사본 원자 저장소가 있지만 다른 크기로 원자 성의 보장을 중단시킵니다. 거기에서 예기치 않은 바이트 혼합을 관찰 할 수 있습니다. 이것은 V8에서 제거 된 것으로 보입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top