본문 바로가기
ARM Architecture/Memory System

ARM Memory System

by rewyear 2024. 8. 9.

Memory Type

ARM architecture에서 memory는 크게 두 가지 type으로 분류 됨.

 

Normal Memory

일반적으로 data나 code가 load되어 처리되는 영역으로서 R/W나 RO로 동작

ARM processor는 해당 영역에 대하여 cache 기법을 적용할 수 있음

 

또한 성능 향상이나 최적화를 위해 하기와 같은 기법을 사용할 수 있음.

 

Merge access

연속된 메모리 공간에 접근하는 2개 이상의 명령어를 한번에 처리.

 

ex) 0xF000_0000. 0xF000_0004, 0xF000_0008의 연속된 메모리에 대해 4byte씩 접근하는 경우 3번의 access를 수행하여야 하는데, 이때 다수의 access를 merge하여 0xF000_0000으로 부터 한번의 transaction을 통해 data에 접근할 수 있음.

 

Re-ordering

ARM architecture에서 명령어 간에 의존성이 없는 경우 최적화를 위해 명령어의 순서를 바꿔 처리할 수 있는데 이를 weakly-ordered라고 함.

즉, 메모리에 접근하는 R/W동작에 대하여 프로그램 순서와 항상 동일하지 않게 assembly 실행순서가 구성될 수 있음

 

ex) 

// 첫 번째 줄의 X0는 두 번째 줄의 X0에 영향을 미침. 이와 같이 의존성이 있는 경우 re-ordering 발생x
01 LDR    X0,    [X1]
02 LDR    X2,    [X0, #8] 

/*
* 다음 경우에는 2번째 줄과 3번째 줄 code가 서로 의존성을 가지고 있지 않아 
* re-ordering과 merge access이 적용될 수 있음.
*/
01    str    x0, [x1]
02    strh   w2, [x1, #0]
03    str    w3, [x1, #2]
04    strb   w4, [x1, #3]
05    ldr    x5, [x1]

Re-ordering: 3 번째 줄 명령어를 실행하고 2 번째 줄 명령어를 실행 함.

Merge access: 2~3번째 줄 명령어를 동시에 실행

 

명확한 re-ordering rule을 위해 core에 memory type attribute 정보나 translation table을 제공할 수 있음 (e.g. MMU table)

 

Speculative memory read

자주 접근하는 데이터를 미리 예측해 loading하는 동작

 

Multiple issue of instructions

cycle  다수의 명령어를 발행하고 실행할  있음.

 

이와 같은 기법들은 성능향상을 이끌어내지만, ARM processor 내부에서 프로그래머의 의도와는 다르게 code실행을 구성하므로 S/W bug 유발할  있음. 이를 방지하기 위해 Barrier 사용함.


Device Memory 

Memory-Mapped I/O라고 불리는 peripherals 대한 control 담당하는 memory 영역.

 

해당 영역에 대하여 re-ordering 기법이 적용되면 원하는 동작이 실행되지 않을 수도 있으며(r/w 행위 하나 하나가 peripheral에 대한 특정 동작을 수행할 수도 있기 때문) 이를 위해 코드가 실행되지 않는 속성(non-executable) 지정되어야 하며, 또한 non-cacheable 속성 지정되야 향후 cache 동작  해당 device memory 영역은 cache 동작의 하위 영역에서 제외되므로 cache 성능이 향상.

 

Device memory properties

  • Gathering / Non-Gathering: 특정 메모리 영역에 대해 다수의 access merged되어 single transaction으로 동작할  있는지 없는지
    ex) 0xF000_0000, 0xF000_0004, 0xF000_0008
     대하여 연속된 메모리에 4byte 접근하는 경우 3번의 access 수행하게 되는데, 이와 같이 연속된 영역에 대한 다수의 access merge하여 0xF000_0000부터 한번의 transaction 통해 접근  있는데 이를 Gathering 속성이라고 .
  • Reordering / Non-Reordering: 동일한 장치에 대한 액세스를 re-ordering   있는지 여부
  • Early Write Acknowledgement / Non Early Write Acknowledgement: 프로세서와 접근하는 device 사이에서 중간 write buffer 쓰기 완료 알림을 보낼  있는지 여부, E 지정된 경우 end device에서 실제 write 수신하기 전에 interconnect logic 내의  버퍼가 쓰기 승인 신호를 보낼  있음.

위와 같은 속성들의 조합으로 하기와 같이 구성됨

  • Device-nGnRnE(가장 제한적인 device memory)
  • Device-nGnRE
  • Device-nGRE
  • Device-GRE
300x250

'ARM Architecture > Memory System' 카테고리의 다른 글

Cache(1)  (0) 2024.08.09