인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

jjjj님의 프로필 이미지

작성한 질문수

Arm 아키텍처: 메모리 모델과 배리어 [저자직강 3부-3]

배리어 관련 질문

작성

·

37

0

현재 메모리 모델에 대해 공부를 진행하고 있는데, 몇 가지 궁금한 것이 있어 질문드립니다.

  1. 메모리 리오더링이라는 개념이 주로 나오고, DSB에서는 명령어 리오더링 개념도 한 번씩 나오는데, 이것에 대해서 Arm 아키텍처가 성능 향상을 위해 하드웨어적으로 out-of-order-execution을 수행하게 되고 그 일환으로, 각각 메모리 리오더링과 명령어 리오더링이 진행된다. 라고 이해해도 되는걸까요?

 

  1. 또한, 리오더링이라는 작업이 명령어를 파이프라인에서 fetch한 다음 그 안에서 순서를 바꿔서 실행을 하는 것인지, 아니면 처음부터 바뀐 순서대로 fetch를 해서 실행을 시키는 것인지 궁금합니다!

 

  1. dmb 배리어 명령어에 대해서, Arm 문서에는 dmb가 실행완료를 보장하지는 않는다는 식으로 나와있는데, 예를 들어,

str
dmb

ldr

           이런 순서로 명령어가 있을 때 실행 순서만 잡아주는 것이라면 str 이후에 바로 ldr이 수행되는데 ldr이 먼저 완료되는 경우도 있지 않을까요?

           그렇다면 이런 경우에는 str과 ldr의 실행 순서를 유지하는게 효과가 없을 것 같은데 이러한 경우에는 어떻게 되는 것인지 궁금합니다.

 

  1. shareability에 대한 궁금증이 있습니다… shareability라고 하는 것이 배리어 명령어를 수행할 때 적용되는 범위인데, 그렇다면,  정확히 어떤 것에 대한 범위라는 것인지 잘 이해되지 않습니다. 위의 예시에서 dmb명령어가 있는 부분에 <qual>을 추가해준다고 할 때, 여기서 shareable의 의미가 배리어 명령어 이전의 작업을 모두 진행한 뒤에, 해당 데이터에 대해 정해진 범위에 동기화를 해준다고 이해하는 것이 맞을까요? 그렇다면 CPU0가 dmb/dsb/isb를 읽고 실행할 때, 동시에 CPU1이 ldr로 해당 영역에 접근하려고 하는 상황이 있다면 CPU0의 str 동작이 완료되고나서 접근하는 것인지, 그냥 업데이트되기 전의 str된 값을 읽어들이는 것인지 그런 부분들이 확실하게 이해가 잘 안됩니다.

 

  1. 또한, shareable domain의 영역에 대한 구분을 좀 알고 싶습니다..! 만약에 칩 안에 메인 클러스터와 서브 클러스터가 존재하고, 각각 클러스터에는 CA73 quad core, CA53 quad core와 같이 구성되어 있다면 이런 상황에서는 non-shareable, inner-shareable, outer-shareable의 범위가 어떻게 정해지는지 알고 싶습니다. 또한, outer shareable domain과 full system domain이 영역이 어떤 부분부터 다른 건지 알고 싶습니다..!

     

 

  1. 마지막으로 책이 나와있는 shareable domain에 적용하는 범위 중에서(591p), 배리어 실행 전/후 차이에서 스토어 명령어는 실행 후에 로드가 없고 스토어만 있는지 궁금합니다..!

답변 1

0

인프런 AI 인턴님의 프로필 이미지

안녕하세요, 인프런 AI 인턴입니다. jjjj님.

ARM 아키텍처의 메모리 모델과 관련하여 다양한 질문을 주셨네요. 각 질문에 대해 간략히 답변 드리겠습니다.

  1. 메모리 리오더링과 명령어 리오더링: ARM 아키텍처에서의 메모리 및 명령어 리오더링은 성능 향상을 위해 하드웨어적으로 실행 순서를 변경하는 기술입니다. 이는 Out-of-Order Execution의 개념과 맞물려, 메모리와 명령어가 의존성이 없다고 판단될 때 재정렬하여 더 빠르게 처리가 가능하도록 합니다.

  2. 리오더링 작업의 수행 방식: 리오더링은 명령어가 파이프라인에서 페치된 후, 실행 순서를 조정하는 방식으로 이루어질 수 있습니다. 즉, 실제로 명령어가 페치된 이후에 하드웨어적으로 그 실행 순서를 변경합니다.

  3. DSB와 실행 순서 유지: DSB 명령어는 메모리 명령어의 완전한 완료를 보장하기보다는 동기화를 위해 사용됩니다. 따라서, DMB는 명령어 순서보다는 데이터의 가시성을 보장하게 됩니다. 예를 들어, CPU가 str 명령을 통해 메모리에 값을 저장한 후, DMB가 이를 확실히 가시화하여 다른 CPU가 접근할 때 올바른 값을 읽을 수 있게 만듭니다.

  4. Shareability의 개념: Shareability는 주로 메모리와 관련된 영역에서 동기화를 고려하는 기준을 제공합니다. 예를 들어, CPU0의 DMB/DSB 후에 CPU1이 접근할 시점이면 DMB/DSB는 메모리 장벽을 설정하여 데이터 일관성을 보장합니다.

  5. Non-shareable, Inner, Outer Shareable Domains:

    • Non-shareable: 특정 CPU 코어 내부에서만 데이터를 공유.
    • Inner shareable: 동일한 클러스터 내에서 공유.
    • Outer shareable: 여러 클러스터나 소켓 간의 공유.
    • Full system domain: 시스템의 모든 구성 요소 간의 공유.
  6. 배리어 실행 전/후의 스토어/로드 작업: 메모리 배리어 명령어는 로드 및 스토어 명령어의 순서에 영향을 줄 수 있으며, 실행 후에는 데이터가 여러 코어에 올바르게 전달되도록 할 수 있습니다.

추가적으로, 페이지를 참조하실 수 있을 만한 관련된 질문의 링크를 제공합니다:

이러한 내용을 통해 ARM 아키텍처의 메모리 모델 및 리오더링 개념 이해에 도움이 되시길 바랍니다. 상세한 이해를 위해 강의 자료 및 ARM의 공식 문서를 참조하시길 권장드립니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

jjjj님의 프로필 이미지

작성한 질문수

질문하기