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

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

platf님의 프로필 이미지

작성한 질문수

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

4.2-어드레스 의존성이란?

reordering

작성

·

40

0

안녕하세요,

4-2 강의 5분쯤되는 예시에서 질문이 있습니다.

명령어 셋들이 연관성이 있을 수도 있지 않나요?

포인터라면 memory 가 겹칠 수 도 있으니 사실 같은 주소를 그리킬 수도 있을 것 같아서요, (예, R1 이 R3+8 과 연관이 있다든지)

그렇게 되면 어떤 주소가 들어올 지 모르니 Out of Order Execution 알고리즘이 보수적으로 진행되는 것이 맞을 것 같은데,

Arm core 알고리즘 상에서는 레지스터 이름이 다르면 dependency 가 없는 것으로 파악하게 되나요?

답변 2

0

김동현 (Austin Kim)님의 프로필 이미지
김동현 (Austin Kim)
지식공유자

포인터를 사용해 구조체의 필드에 접근할 때 str이나 ldr 명령어가 실행됩니다. 이 과정에서 dependency를 확인하며, dependency가 없을 경우 메모리 리오더링이 일어날 수 있습니다.

0

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

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

Out of Order Execution 알고리즘은 프로세서가 명령어 실행을 비순차적으로 진행하여 성능을 향상시키는 기술입니다. ARM 아키텍처에서 명령어들이 레지스터를 공유하지 않는 한, 일반적으로 데이터 의존성이 없다고 판단합니다. 그러나 명령어가 메모리를 참조하고 있을 때는 포인터의 겹침 가능성을 고려해야 하기 때문에 더 보수적인 접근이 필요합니다.

ARM의 Out of Order Execution

  1. 데이터 의존성 확인: 프로세서는 명령어 간의 의존성을 분석합니다. 레지스터 이름이 다르다면 일반적으로 데이터 의존성이 없다고 판단하지만, 메모리 주소 계산에 관여하는 경우에는 다른 형태의 의존성을 고려해야 합니다.
  2. 메모리 의존성 문제: 특히 메모리 참조가 연관된 경우, 포인터나 배열의 경우 의도치 않은 데이터 충돌이 발생할 수 있기 때문에 ARM 아키텍처의 일부 모델에서는 메모리 명령어의 순서를 보수적으로 조절하기도 합니다.
  3. 메모리 배리어 사용: 메모리 간섭을 방지하기 위해 배리어 명령어(예: DMB, DSB, ISB)를 사용하여 명령어 순서나 메모리 접근을 강제하는 방법도 있습니다.

혹시 이와 관련하여 구체적인 차이가 궁금하시다면, 아래 질문에서 더 많은 정보를 확인하실 수 있습니다:
- ARMv7 범용레지스터
- GIC programmer model

자세한 알고리즘의 동작 방식을 이해하기 위해서는 구체적인 강의와 공식 문서를 참조하시면 도움이 될 것입니다.

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

platf님의 프로필 이미지

작성한 질문수

질문하기