inflearn logo
강의

Course

Instructor

Arm Architecture: Memory Model and Barriers [Author's Lecture Part 3-3]

4.2 - What is address dependency?

reordering

100

platf

15 asked

0

안녕하세요,

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

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

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

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

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

arm-architecture barrier armv8 cortex-a memory-mapped-io

Answer 2

0

austinkim

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

0

communityai8509

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

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

ARM의 Out of Order Execution

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

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

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

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

안녕하세요. 계속 프로젝트를 해야지 하다가 결제하고 환경 설정 중입니다.

0

14

1

SP와 SP_ELn의 관계

0

25

1

stm32cubeide 관련 문의

0

46

2

5장 Armv7 동작모드와 6장 Armv8 익셉션 레벨 차이

0

40

2

강의 업로드 오류 확인 요청

0

61

2

시스템 소프트웨어 직무 관련 질문드려요

0

70

2

책관련 질문드려요

0

70

2

4.2.1. 실습을 어떻게 진행하는것인가요?

0

62

2

DMA 관련한 강의도 제작해주실 수 있으신가요 ?

0

95

1

3.2.1.4 실습과 관련한 질문

0

72

2

56강 bcm2835-mailbox.c 파일 질문

0

56

2

'drivers/soc/bcm/bcm2835-power.o 에러 입니다.

0

86

3

TRACE 32만을 이용한 출력 Callstack 의 cpu 번호 파악

0

62

1

배리어 관련 질문

0

95

1

DSB 리소스 관련

0

89

1

전체적인 맥락에 대해서 질문이 있습니다.

0

124

1

멀티 스레드 스택공간

0

85

1

ARM multi core programming

0

72

1

리눅스 memory map

0

117

1

SoC

0

72

1

device memory

0

115

2

메모리 맵드 I/O에 대해서

0

218

1

ISB 배리어에 대한 질문입니다.

0

323

2

MMIO 질문

0

657

2