혼자 공부하는 컴퓨터구조 + 운영체제 6장

doxxx·2023년 2월 6일
0
post-thumbnail

Ch.06 메모리와 캐시 메모리
6.1 RAM의 특징과 종류
RAM의 특징
RAM에는 실행할 대상이 저장된다. 하지만 휘발성 저장 장치로 전원을 끄게 되면 저장된 내용이 사라진다.

RAM의 용량과 성능
RAM의 용량이 작다면, 보조기억장치 에서 실행할 프로그램을 가져오는 일이 잦아 실행시간이 길어진다.

RAM의 종류
DRAM(Dynamic RAM): 저장된 데이터가 동적으로 사라지는 RAM으로 데이터 소멸을 막기 위해 주기적으로 재활성화가 필요하다.
SRAM(Static RAM): 저장된 데이터가 정적인 RAM으로 입출력 속도가 일반적으로 DRAM보다 빠르다. 캐시 메모리로 사용된다.
SDRAM(Synchronous RAM): 클럭 신호와 동기화된 DRAM이다.
DDR SDRAM(Double Data Rate SDRAM): 가장 대중적으로 사용하는 RAM이다. 대역폭을 넓혀 속도를 빠르게 만든 SDRAM으로, DDR2 SDRAM은 SDR SDRAM의 두 배의 대역폭, DDR4 SDRAM의 경우 16배의 대역폭을 갖는다.
6.2 메모리의 주소 공간
물리 주소와 논리 주소
메모리에 저장된 정보의 위치를 나타내는 주소에는 물리 주소와 논리 주소가 있다.

물리 주소는 메모리 하드웨어가 사용하는 주소로 정보가 실제로 저장된 하드웨어상의 주소이다.

논리 주소는 CPU와 실행 중인 프로그램이 사용하는 주소로 실행 중인 프로그램 각각에게 부여된 0부터 시작되는 주소를 의미한다.

CPU가 메모리와 상호작용하려면 논리 주소를 물리 주소로 변환하는 과정이 필요하다.

이 과정은 메모리 관리 장치(MMU,Memory Management Unit)라는 하드웨어에 의해 수행된다.

MMU는 논리 주소와 베이스 레지스터(프로그램의 기준 주소)값을 더하여 물리 주소로 변환한다.

메모리 보호 기법
한계 레지스터(limit register)는 다른 프로그램의 영역을 침범할 수 있는 명령어의 실행을 막는다.

베이스 레지스터 값 <= 프로그램의 물리 주소 범위 < 베이스 레지스터 값 + 한계 레지스터 값

이 됨을 알 수 있다.

CPU가 한계 레지스터보다 높은 논리 주소에 접근하려고 하면 인터럽트(트랩)를 발생시켜 실행을 중단한다.

6.3 캐시 메모리
CPU가 메모리에 접근 하는 시간은 CPU의 연산 속도보다 느리기 때문에 완충이 필요하다 라는 접근으로 시작한다.

저장 장치 계층 구조(Memory Hierarchy)
일반적으로 아래와 같은 명제를 따른다.

CPU와 가까운 저장 장치는 빠르고, 멀리 있는 저장 장치는 느리다.
속도가 빠른 저장 장치는 저장 용량이 작고 가격이 비싸다.
캐시 메모리
CPU와 메모리 사이에 위치한 SRAM 기반의 저장 장치이다.

메모리에서 CPU가 사용할 일부 데이터를 미리 캐시 메모리로 가져와 쓴다.

일반적으로, 계층적 캐시 메모리(L1-L2-L3 캐시)의 경우 L1과 L2의 경우 코어 내부에, L3 캐시는 코어 외부에 위치한다. 멀티 코어의 경우 L3는 공유하여 사용하기도 한다.

참조 지역성의 원리(locality of reference)
먼저 기반이 되는 내용에 대해 알아보자.

캐시 메모리는 메모리보다 용량이 작기 때문에, 메모리의 일부 정보를 저장하게 된다. 주로, CPU가 자주 사용할 법한 대상을 예측하여 저장한다.

예측한 데이터가 실제로 들어맞아 캐시 메모리 내 데이터가 CPU에서 활용될 경우를 캐시 히트(cache hit)라고 하고, 틀렸을 경우를 캐시 미스(cache miss)라고 한다.

캐시 적중률(cache hit ratio)
캐시 히트 횟수 / (캐시 히트 횟수 + 캐시 미스 횟수)

캐시 메모리가 메모리로부터 가져올 데이터를 결정하는 방법이 참조 지역성의 원리이다. 주된 경향은 다음과 같다.

CPU는 최근에 접근했던 메모리 공간에 다시 접근하려는 경향이 있다.
다음과 같이 구구단 2단을 출력하는 코드를 보자.

public static void main(String[] args) {
int num = 2;
for (int i = 1; i <= 9; i++) {
System.out.printf("%d X %d = %d\n", num, i, num * i);
}
}
/** 실행 결과

  • 2 X 1 = 2
  • 2 X 2 = 4
  • ...
  • 2 X 8 = 16
  • 2 X 9 = 18
  • */
    CPU는 접근한 메모리 공간 근처를 접근하려는 경향이 있다.(공간 지역성)
    CPU가 실행하려는 프로그램은 보통 관련 데이터들끼리 한데 모여있다.

프로그램 내부의 각 기능들 또한 서로 모여있다.

확인 문제(185p)
다음 설명을 읽고 SRAM에 대한 설명인지 DRAM에 대한 설명인지 쓰세요.
보기: SRAM, DRAM
책 깃허브에 올라온 이슈에 따라서 문항내용을 수정했다.

1) SRAM
2) DRAM
3) DRAM
4) SRAM

0개의 댓글