CPU의 Memory Access (MEM) 단계는 실행 중인 명령어가 메모리와 상호작용하는 단계로, 주로 데이터의 읽기(Load)와 쓰기(Store) 작업이 이루어집니다. 이 단계는 메모리 시스템과의 연결을 통해 데이터를 처리하며, 프로그램의 데이터 흐름에 중요한 역할을 합니다.

Memory Access (MEM) 단계의 주요 기능

  1. 데이터 읽기 (Load)
    • LW(Load Word) 명령어와 같은 메모리 읽기 작업을 처리합니다. 이 과정에서 계산된 주소를 사용하여 메모리에서 데이터를 읽어와 레지스터에 저장합니다.
    • 예를 들어, 특정 레지스터에서 베이스 주소를 가져오고, 오프셋을 더해 최종 메모리 주소를 계산한 후, 해당 주소에서 데이터를 읽습니다.
  2. 데이터 쓰기 (Store)
    • SW(Store Word) 명령어와 같은 메모리 쓰기 작업을 처리합니다. 이 과정에서는 데이터를 메모리에 저장하기 위해 주소를 계산하고, 해당 메모리 주소에 데이터를 기록합니다.
    • 메모리 주소는 일반적으로 레지스터 값에 오프셋을 더하여 결정됩니다.
  3. 메모리 접근 지연
    • 메모리 접근은 CPU와 메모리 간의 대기 시간(latency) 때문에 시간이 걸릴 수 있습니다. 이로 인해, CPU 파이프라인에서의 성능 저하를 방지하기 위해 데이터 포워딩, 캐시 메모리, 버퍼 등의 기술이 활용됩니다.
  4. 메모리 일관성 유지
    • 다중 프로세서 시스템에서는 메모리 일관성을 유지하는 것이 중요합니다. 메모리 접근 단계에서 이와 관련된 프로토콜이나 메커니즘이 필요할 수 있습니다.
  5. 캐시 메모리 활용
    • 메모리 접근 단계에서 캐시 메모리를 활용하여 메모리 접근 속도를 개선할 수 있습니다. CPU는 캐시를 먼저 검사하고, 캐시에서 데이터를 찾지 못한 경우에만 메인 메모리에 접근합니다.

MEM 단계의 흐름

  1. EX 단계에서 계산된 주소가 MEM 단계로 전달됩니다.
  2. 이 주소를 기반으로 메모리에서 데이터 읽기 또는 쓰기가 수행됩니다.
  3. 읽기 작업의 경우, 읽은 데이터는 레지스터에 저장됩니다. 쓰기 작업의 경우, 데이터를 메모리로 전송합니다.
  4. 작업이 완료된 후, 다음 단계인 Write Back (WB) 단계로 결과가 전달됩니다.

관련 설계 고려 사항

  • 데이터 위험 (Data Hazard): MEM 단계에서의 데이터 위험은 주로 Load-Use 위험과 관련이 있습니다. 즉, Load 명령어로 읽어온 데이터가 다음 명령어에서 사용될 경우, 이를 해결하기 위한 포워딩 또는 스톨을 적용해야 합니다.
  • 메모리 대역폭: MEM 단계의 성능은 메모리 대역폭에 의존하므로, 설계 시 메모리 접근 속도를 최적화하는 것이 중요합니다.
  • 동기식 및 비동기식 메모리: 메모리 접근이 동기식인지 비동기식인지에 따라 설계가 달라질 수 있습니다. 비동기식 메모리는 대기 시간이 더 길 수 있지만, CPU의 파이프라인을 보다 원활하게 운영할 수 있습니다.

 

* https://cs.middlesexcc.edu/~schatz/csc264/handouts/mips.datapath.html

'CPU ARCHITECTURE1 > CPU' 카테고리의 다른 글

06. CPU DATA PATH - R-Type (Register Write)  (0) 2024.09.30
05-5. Write Back(WB)  (0) 2024.09.30
05-3. Execute(EX)  (0) 2024.09.30
05-2. Instruction Decode (ID)  (0) 2024.09.30
05-1. Instruction Fetch(IF)  (0) 2024.09.30

+ Recent posts