지난 포스트에서 Write Policy를 다뤄봤다. 그럼 강의에 언급된 예제를 다시 되짚어보고자 한다. 이렇게 생긴 Cache block이 있다. 이와중에 Memory로부터 다음과 같이 연속된 Memory Sequence를 읽어오려고 한다. Cache는 과연 어떻게 쓰여질까?0, 4, 8188, 0, 16384, 0 일단 첫번째 0을 읽어오게 되면 Cache의 0번 index 값을 검색하게 된다. 이 후에 Tag가 맞는지를 확인해야 되는데 Cache에는 아무처리가 되어 있지 않으므로 당연히 Cache Miss가 발생하게 된다. 그럼 이전 포스트에서 언급했던 내용처럼 Write Policy에 따라서 Memory로부터 받아온 Data를 해당 Cache block에 채워넣게 된다. 4를 읽어왔을 때도 마찬가지..
이전 포스트에서 Cache와 Memory사이의 Data를 검증하는 과정을 다뤘다. 마지막 부분에서 과연 Cache miss가 났을때는 해당 instruction을 다시 수행하면서 다시 fetch하는 과정이 들어가는데 이때 Cache의 write이 이뤄지게 된다. 그럼 어떤 규칙에 의해서 cache에 써지는 지 잠깐 언급해보고자 한다. 일단 Cache 본연의 목적을 살펴보면 Memory Access하면서 얻을 Data의 일부를 옮겨놓음으로써 쉽고 빠르게 Access 하기 위함이다. 당연히 Memory와 Cache간의 Consistency가 중요한 요소이며 이걸 고려하면 당연히 miss가 안나는 방향으로 설계가 되어야 할 것이다. 가장 간단한 방법은 Cache에 write이 일어날때 같은 Data를 Memo..
지난 포스트를 통해서 Cache를 사용하면 어떤 이점을 가져올 수 있을지에 대해서 다뤄봤다. 그러면 이런 궁금증을 가져볼 수 있다. Cache 자체가 Data Access 측면에서 Memory에 비해 이점이 있다면 왜 Cache를 쓰지 Memory도 같이 쓰는 건지 말이다. 사실 얼마든지 생각해볼 수 있는 주제일 수 있지만 문제는 바로 cost의 관점이다. Architecture를 설계하는 데 있어서 고려해야 될 가장 중요한 요소는 바로 얼마나 싸게 만들 수 있냐는 것이다. 즉 가격대 성능비를 고려해서 설계하는 것이다. 물론 Cache를 많이 넣으면 그만큼 빨라지겠지만 Cache를 구성하는 SRAM의 가격이 비싸고, 공간도 적다. 거기에 비해서 지금과 같은 DRAM Memory가 lower level에 ..
Computer Memory의 일반적인 역할은 Data를 담아두고 있으면서 CPU가 순차적으로 접근해서 그안에 들어있는 Instruction을 읽어오게끔 하는 것이다. 그러면 다음의 과정을 생각해보자. Processor와 Memory은 각각의 모듈이기 때문에 서로간의 신호를 주고 받기 위해서는 Bus라는 통로를 거치게 된다. 만약 우리가 이 안에 있는 정보를 확인하고 싶으면 I/O를 통해서 관찰할 수 있는 것이다. 그런데 이런 것들이 공통의 bus를 사용하기 때문에 당연히 한계가 있을 것이다. 가령 예를 들어서 한꺼번에 Data가 이 Bus를 통해서 전달이 되면 Bottle neck 과 같은 성능을 저하시킬 수 있는 요소도 존재할 것이다. 그러면 컴퓨터 구조를 설계하는데 있어서 추구해야 될 목적 중에는 ..
지난 포스트에서 Pipeline이라는 기법을 살펴보았다. 이에 따른 자료는 Open Source Software Learning Center(http://olccenter.or.kr)에 공개되어 있는 민상렬 교수님의 강의를 바탕으로 정리해보고 있다. 아무튼 Pipeline을 하는 이유는 instruction을 stage에 나눠서 순차적으로 적용할 수 있게끔 해서 전체적으로 Sequential Execution 보다 처리되는 시간을 줄이고자 하는 것이 목적이었다. 하지만 모든 기술 구현에는 trade-off가 존재하고 Pipeline을 구현하는데 있어서도 operating Speed를 줄이는 장점을 가져올 수 있긴 하지만 이에 따른 문제가 몇가지 발생한다. 이걸 전문 용어로 Hazard(위험) 이라고 하고..
Computer Organization & Design 책을 보면 pipeline 파트의 맨 처음에는 다음과 같이 언급되어 있다.Never Waste Time. 동서고금의 명언이다. 아마 이 말이 pipeline을 하는 이유를 설명한 가장 간단한 구문이 아닐까 생각을 해본다. 말그대로 pipeline을 하는 이유는 시간을 낭비하지 않기 위함이다. 잘 모르는 사람이라면 컴퓨터가 사람이 시키는 대로 연산을 하는 건데 어떤 부분에서 시간을 낭비하는 건지 의아할 수도 있다. 하지만 그건 결과론적으로 본 것이고, 그 내부를 살펴보면 컴퓨터 동작 중에서 시간을 낭비하는 요소들이 곳곳 존재하는 것을 확인할 수 있다. 컴퓨터는 기본적으로 연산을 자동화해주는 기기이긴 하지만 무엇을 연산할 건지, 어떻게 연산할 건지는 컴..
- Total
- Today
- Yesterday
- DepthStream
- Pipeline
- Windows Phone 7
- Kinect SDK
- Kinect for windows
- Off-policy
- PowerPoint
- 딥러닝
- TensorFlow Lite
- End-To-End
- RL
- windows 8
- Expression Blend 4
- Offline RL
- arduino
- 강화학습
- Distribution
- Gan
- Policy Gradient
- bias
- reward
- ai
- Kinect
- dynamic programming
- 한빛미디어
- SketchFlow
- Variance
- ColorStream
- 파이썬
- processing
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |