* https://www.programcreek.com/2012/10/how-is-an-array-stored-in-memory-and-brought-to-cache/
Cache에 관한 괜찮은 글을 있어서 소개하려 한다.
그림 1. Diagrams for memory and cache
그림 1을 보면 메모리의 8x8 배열이 있다.
여기서 CPU가 A[0][7]에 해당 하는 값이 필요하면, A[0][7]을 포함하는 block이 cache로 이동한다.
(그런데 cache가 block당 8개의 값을 가지므로 A[0]의 row값 전체가 cache로 이동된다.)
그림 2. CPU Request
그림 2는 CPU가 메모리로부터 어떻게 byte 값을 가져오는지 보여준다.
위 그림을 통해 CPU 요청에 의해 메모리가 어떻게 cache 가져가게 되는지 확인 할 수 있다.
(moduler 연산을 통해 cache 값이 overwrite 될 수 있는 것도 확인 할수 있다.)
그림 3. Cache View
그림 3을 통해 cache가 왜 block 배열로 메모리를 인식하는지 보여준다. 각 메모리의 block 크기는 cache block에 의해 결정된다.
'IT > Internals' 카테고리의 다른 글
Global Interpreter Lock (GIL) (1) | 2019.08.11 |
---|---|
[번역] Speed Up Your Python Program With Concurrency Part 2 (0) | 2019.08.11 |
[번역] Speed Up Your Python Program With Concurrency Part 1 (0) | 2019.08.03 |
I/O, CPU Bound (0) | 2019.06.23 |
[번역] CPU Basics: Multiple CPUs, Cores, and Hyper-Threading Explained (0) | 2019.06.18 |
댓글