728x90
반응형

캐시 8

프리캐싱, Pre-Caching이란?

위에서 보다시피 웹앱에서 DB 접근 전에 메모리에 올려놓는 것을 캐싱이라고 하는 것을 알 것이다. 하지만 Pre-Caching은 그보다 더 성능을 높일 수 있는 방안이다. 조금 다른 방식이라고 생각하면 된다. 알아보자 캐싱보다 pre(앞선) 것이 무엇일까? 캐싱은 요청된 것에 대해서 미리 메모리에 갖고 있다는 측면이지만 Pre 캐싱은 요청하기 전 미리 유저를 예측하여 미리 메모리를 갖고 있는 것이다. 즉, 사후처리가 캐싱, 사전처리가 프리 캐싱이다. 프리 캐싱은 2가지 측면이 있는데 예를 들어보자 Client-Side의 예는 사용자가 미리 자주 방문하는 사이트에 대해 캐싱하고 있다는 것이 되겠고 Server-Side 의 예는 사용자가 다운로드 받을만한 것들을 캐싱하고 있다는 것이 되겠다. 프리 캐싱 플로..

클라우드/AWS 2023.07.09

Data Locality, 데이터 지역성 [디자인패턴](최적화)

지역성이란 단어에서 알 수 있듯이 캐시와 관련되어 있다. CPU 캐시를 최대한 활용할 수 있도록 데이터를 배치해 메모리 접근 속도를 높이기 위함이다. 우리는 무어의 법칙으로 CPU 성능이 18~24개월마다 반도체 성능이 거의 2배로 증가한다고 그랬지만.. 이제 한계에 봉착했다. 즉, 우리는 있는 것을 더 잘 돌릴 수 있는 능력이 필요해졌다. 칩은 계속해서 연산 속도가 빨라지지만 데이터의 접근 속도는 그렇지 못했다. 즉, 캐시를 쓰는 것은 여전하다. 아무튼 각설하고 우리는 프로세서의 성능이 메모리의 성능보다 높아서 생기는 그 차이에 대한 비용을 어떻게 최소화할 것인가? 에 대해 생각해 봐야 한다. 우리가 회사 직원이라고 생각해보자 우리 업무는 숫자가 빽뺵이 쓰여있는 문서에 대해 작업한다. 이런 문서들은 해..

Network Service, 네트워크 품질 [네트워크]

우리가 흔히 말하는 네트워크, 인터넷이 좋다는 것의 의미는 무엇일까? 먼저 용어들을 깔고 알아보자 네트워크의 품질을 결정하는 요소는 크게 4가지 대역폭, Bandwidth (Throughput, 처리량)이라고도 함 지연시간, Latency (신뢰도, 일관성) 손실, Loss 흔히 "속도"라고 말할 것이다. 하지만 이 "속도"가 의미하는 바는 무엇일까? 사실 이 속도는 대역폭, Bandwidth라고 할 수 있다. 왜냐하면 우리가 100을 요청했을 때 1씩 100번을 들여오는 것이냐 50씩 2번을 들여오는 것이냐가 곧 속도가 될 것이기 때문이다. 그래서 일반적으로 bps로 표현된다. 요즘은 10Gbps라던가..? 전화선, 랜선을 비교해보았는가? 선의 개수도 다를 뿐더러 굵기도 다르다. 이를 통해 물리적인 전..

Cache, 캐시란?

물론 캐시에 대해서 할 말은 많지만 우아한 테크톡의 설명을 보면서 https://www.youtube.com/watch?v=c33ojJ7kE7M&list=PLgXGHBqgT2TvpJ_p9L_yZKPifgdBOzdVH&index=123 을 보면서 같이 내 언어로 바꿔보는 시간을 가져보려고 한다. # 동영상의 내용 메모리의 속도와 용량은 반비례? 설명이 틀렸다. 속도와 가격이 비례라고 하는 것이 더 맞는 표현이겠다. 메모리 계층구조가 왜 나왔는지를 설명하기에 조금 부족했다. 메모리 계층 구조는 locality를 이용하기 위해 나왔는데 계층구조를 설명하고 그 다음에 locality를 설명했다. 파레토 법칙을 이용해서 캐시의 지역성을 설명하는 것은 좋았다. 배열에 대해서는 단일 메모리 블럭, 연속된 메모리를 사..

CS Interview 2021.06.23

캐시, Cache 와 메모리 종류 - 기본 개념 [컴퓨터구조]

메모리에서 Cache, Main memory, Secondary Memory 3가지로 나누어지는데 이 중 우리가 가장 중요하다고 생각하는 캐시에 대해서 알아보자 넥슨캐시 이런거 아니다. cash (x) 다만 발음은 똑같다. 그래서 캐시를 말할 때 L1 cache를 -> L1 $이라고도 표현한다. 일반적으로 메모리는 이렇게 발전했다. 빠를수록 용량이 작고 비싸다. 하지만 점점 발전하고 기술이 발전해서 여기까지 온거다. 메모리의 중요성도 커지고 있다. 현재는 DRAM을 Main Memory로 보편적으로 씀 SRAM이 뭔데? 단순한 집적회로로 읽기, 쓰기를 제공하는 접근 포트가 하나밖에 없는 메모리 배열이다. **SRAM은 읽기 접근 시간과 쓰기 접근 시간이 다를 수는 있지만, 데이터의 접근시간은 같다. **..

컴퓨터 구조에서 본 가상메모리, Virtual memory - 기본 개념 [컴퓨터구조]

가상 메모리는 참 많이 들었을 것이다. 왜 RAM이 가상메모리지?? 왜 사람들이 그렇게 말하는 거지?? 운영체제에서 배운 가상메모리랑 같은 개념인가? 뭐지?? 이제부터알아보자 우리가 알고 있는 Main memory, 즉, DRAM을 캐시로써 사용한다는 개념이다. 즉, 다시 말해서 메인 메모리가 Secondary 메모리의 캐시 역할을 한다는 뜻이다. 특징을 보면 프로그램들은 메인 메모리를 공유한다. 메인 메모리를 사용할 때, (MMU, memory management unit 이 이용) 각각의 프로그램들은 자신만의 virtual address space 를 갖게 된다. 해당 space에 프로그램에 대한 code, data가 담겨있는 것이다. 또한 다른 프로그램의 접근을 제한한다. 이러한 가상 메모리는 실제..

Cache Performance, 캐시의 성능 [컴퓨터구조]

우리는 앞서 CPU, 프로세서의 성능을 측정했다. 즉, 프로세서에서 캐시가 영향을 미치는 정도가 캐시의 성능이 될 것이라고 간접적으로 알 수 있다. CPU time에 영향을 미치는 요소가 있다. 실제로 프로그램을 CPU가 실행하는 시간과 Data에 접근하는 시간 2가지로 나눌 수 있다. 캐시에서는 Data에 접근하는 시간이 중요하게 여겨진다. 아래의 조건 하에 우리는 CPU 성능을 다르게 표현할 수 있다. 위의 식을 이용하여 실제로 예를 들어서 구해보자 Miss panaty가 100 cycle이다. -> Main memory에서 가져오는 데 필요한 사이클 Base CPI (모두 다 cache hit만 할 경우의 CPI를 말한다.) Load/Store -> 메모리에 접근하는 instruction이 36% ..

캐시, Cache - 기본 원리 [컴퓨터구조]

캐시 메모리에 대해서 이어나가보자 이번에는 캐시 메모리가 어떻게 작동을 하는지 원리를 알아보겠다. 즉, Xn이 없다가 생긴 것을 보여준다. 캐시로 Xn을 올린 것인데 여기서 3가지 의문점이 들어야한다. 0. 해당 데이터가 캐시에 들어있는지 어떻게 찾는거지? 1. 없다면 해당 데이터를 어떻게 찾는거지? (즉, 답하자면 하위레벨에서 다시 찾는다.) 2. 해당 데이터를 어떻게 다른 빈칸도 아니고 저 빈칸에 놓는거지? 사실 제일 간단한 방법은 **메모리의 각 워드에 캐시 내의 위치를 할당하는 즉, 메모리 주소에 기반을 두고 할당하는 "직접 사상( direct mapping)" 이다. ** 메모리 위치는 캐시 내의 딱 한 장소에 직접 사상된다. 물론 다른 방법도 있다. 사실 캐시를 사용하기 위해 필요한 비트 수는..

728x90
반응형