취미로 음악을 하는 개발자

메모리 사상, Memory Mapping 본문

공대인/Theory

메모리 사상, Memory Mapping

영월특별시 2019. 4. 4. 14:57
728x90


- 메모리 계층구조

996B92345BE2467F31 (384×270)


- 캐시 메모리

: CPU에 읽어 들인 데이터들로 채워지는 버퍼, CPU와 메모리의 속도 차이를 극복하기 위해 존재함

Locality of Reference, 참조 지역성

: CPU가 한 번 참조한 데이터는 다시 참조할 가능성이 높고 주변의 데이터 역시 참조될 가능성이 높다

-> 자주 쓰는 데이터를 캐시에 두고 데이터를 전달


- 메모리 사상, Mapping


2737CE4B57FB47392D (580×244)

: CPU의 가상 주소를 MMU를 통해 물리 주소로 변환하여 메모리에 전달

캐시에 해당 주소의 데이터 확인 후 캐시에 데이터를 저장하는 방식에 따라 물리 주소를 달리 해석가능

 

- 캐시 사이즈

ex) 32비트 캐시

2^n개 블록, 인덱스 필드 : n

    블록 크기 : 2^m개 워드, m개 비트는 블록내부에서 워드를 구분하는데 사용

    태그 길이 : 32-(m+n+2), 1워드 = 2^2바이트

    캐시 전체 비트 수 : 2^n(2^m*32 + 32-(n+m+2)+1) = 2^n(32*2^m+31-n-m) 비트

 

- 캐시 실패 시    1) 원래의 PC(현재 PC4)을 메모리로 보냄

2) 메인 메모리에 읽기 동작 지시 후 메모리가 접근 끝낼 때까지 기다림

                       3) 메모리에서 인출된 데이터를 데이터 부분에, 태그 필드에 주소의 상위 비트를 쓰고 유효 비트를 1로 만들어서 캐시 엔트리에 쓰기 수행

                        4) 명령어 수행을 첫 단계부터 다시 시작하여 캐시에 명령어 가져옴


1) Direct Mapping, 직접 매핑 : 캐시의 데이터들은 메모리에서와 동일한 배열을 가짐



212E714857FB768C2C (580×394)

블록 단위 : 참조 지역성 때문에 한 번 퍼낼 때 인접한 곳까지 한꺼번에 가져오는(?) 단위,

블록에 몇 번째에 원하는 데이터가 있는지 보여주는 지표가 됨

 

-> 매우 단순하고 탐색이 쉽다

적중률(Hit ratio)이 낮다.


1. 캐시의 태그와 주소상의 태그가 동일한지 확인 후 같으면 블록 영역을 통해 데이터를 읽음

2. 만일 태그가 다르다면 메모리에서 데이터를 가져옴


4-24.png (924×501)

5-19.png (790×589)


2) Associative Mapping, 연관 매핑 : 직접 매핑의 단점을 보완, 메모리의 순서와 상관없음, 캐시를 전부 뒤짐

21758B5057FB814E0D (580×478)



- 병렬 검사를 위해 복잡한 회로를 가짐

  적중률이 높다.

  구현이 복잡하여 비용이 큼


8-4.png (892×530)

6-15.png (719×547)


3. Set Associative Mapping, 세트 연관 매핑 : 위의 두 방식의 장점만을 취하기 위해서 만들어짐

2506BF5057FB840210 (580×479)



-> 연관 매핑의 병렬 탐색을 줄일 수 있음

    모든 라인에 무작위 위치

    캐시 Fin/Fout 발생 증가, 구현 비용 큼

각각의 라인들은 하나의 세트에 속해 있다. 세트 번호를 통해 영역을 탐색


3-32.png (914×540)

4-25.png (868×580)





사진 출처 

https://constructor.tistory.com/18 , https://ssoonidev.tistory.com/35http://blog.skby.net/%EC%BA%90%EC%8B%9C-%EC%82%AC%EC%83%81mapping-%EA%B8%B0%EB%B2%95/





'공대인 > Theory' 카테고리의 다른 글

JSON JSP JS  (0) 2019.05.14
[TOPCIT] 소프트웨어 개발 및 관리  (0) 2019.05.11
[TOPCIT] 준비  (0) 2019.05.10
유클리드 알고리즘  (0) 2019.05.05
CPU 용어 정리  (0) 2019.04.04
Comments