티스토리 뷰
위와 같이 Cache와 Memory간에 mapping이 되어 있는 것을 direct mapped Cache 구조라고 한다. 당연하겠지만 Cache에 비해서 Memory는 엄청 클 것이고, 만약 cache를 통해서 Memory의 특정영역에 Access 하고 싶으면 위와 같이 cache의 한 영역이 여러개의 Memory로 공유된 형태를 띌 것이다. 예를 들어 block size가 4byte이고 physical Memory의 크기가 4 GB라고 가정한다면, 그 Physical Memory는 1G(2^30)개의 block으로 구성될 것이다. 아래 이미지 같이 말이다.
여기서 Cache block의 갯수를 알면 한개의 Cache가 몇개의 Memory block과 공유하는 지를 알 수 있다. 예를 들어 cache block의 갯수가 1k(2^10)개라면 총 2^20개의 Memory Block들이 한개의 Cache Block으로 공유하고 있다는 것을 확인할 수 있다. 이제 여기서 자기가 원하는 데이터를 어떻게 찾을 수 있을까?
direct mapped 방식에서는 block을 지칭하는 끝의 자리수를 확인하면 탐색하는 영역을 줄일 수 있다. 가령 위의 예같이 Cache에서 101이란 영역에서 Search를 시작하면 실제로 Memory에서는 끝자리가 101인 00101, 01101, 10101, 11101을 검색하는 결과를 얻을 것이고 원하는 답은 그 것중 한개에 있을 것이다. 예를 들어보면 다음과 같다.
위와 같이 Memory로부터 하나를 읽어오면 이안에 Cache에서 찾을 block index값이 포함되어 있다. 그래서 Cache에서 찾은 정보의 tag와 Memory 상의 tag가 일치한 경우에 우리가 hit이라고 말할 수 있다. 그러면 이때 Cache의 Data를 가져와도 이 정보를 Memory에서 가져온 것과 같다고 할 수 있는 것이다. 다만 기타 변수(어쩌다가 Tag가 같아지는 현상)를 고려하고 따로 valid bit을 정의해놓는다. 그래서 결론적으로 Cache와 Memory가 hit이 됬다고 하는 것은 Cache의 Tag와 Memory의 Tag가 일치하면서 valid bit이 1인 상태를 말하는 것이다. 이 경우는 앞에서 언급했던 Temporal Locality 를 활용했다고 볼 수 있다.
이렇게 hit이 됬으면 당연히 정상적인 절차이므로 CPU는 그대로 Cache Data를 별 의심없이 사용할 것이다. 하지만 miss가 났을 경우에는 이를 수정하는 과정을 거쳐야 한다. 이전 포스트에서 잠깐 설명했던 것처럼 Cache miss가 났을 경우에는 해당 instruction을 수행하고 있는 CPU에 Stall을 건 후 다시 instruction을 읽어서 Cache에 쓰는 과정을 거치게 된다. 이때도 어떤 부분에 miss가 났느냐에 따라서 Instruction Cache miss냐 Data Cache Miss냐로 구분 지을 수 있다.
'Study > Architecture' 카테고리의 다른 글
[Study] Single Cycle Implementation - Arithmetic Instruction (5) | 2013.03.27 |
---|---|
[Study] Dynamic Branch Prediction (0) | 2013.03.27 |
[Study] Memory Hierarchy (4) - Sequence of Cache Write (2) | 2013.03.23 |
[Study] Memory Hierarchy (3) - Cache Write Policy (11) | 2013.03.22 |
[Study] Memory Hierarchy (1) (10) | 2013.03.22 |
[Study] Pipeline Hazard (8) | 2013.03.18 |
[Study] Pipeline (0) | 2013.03.15 |
- Total
- Today
- Yesterday
- Distribution
- Off-policy
- 딥러닝
- TensorFlow Lite
- bias
- arduino
- Pipeline
- 파이썬
- Variance
- PowerPoint
- Gan
- Kinect SDK
- processing
- Kinect
- SketchFlow
- ColorStream
- Expression Blend 4
- dynamic programming
- End-To-End
- Windows Phone 7
- RL
- windows 8
- Kinect for windows
- reward
- Offline RL
- 한빛미디어
- DepthStream
- Policy Gradient
- ai
- 강화학습
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |