맨위로가기 타임라인 바로가기

캐시

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
타임라인 바로가기

1. 개요

캐시는 데이터를 임시로 저장하여 접근 속도를 향상시키는 기술로, CPU, GPU, 웹 브라우저 등 다양한 환경에서 사용된다. 캐시는 시간적, 공간적 지역성을 활용하여 효율을 높이며, 캐시 적중(hit)과 캐시 실패(miss)를 통해 데이터 접근 방식을 결정한다. 쓰기 통과(write-through)와 쓰기 백(write-back) 등의 쓰기 정책과 교체 정책을 통해 캐시의 효율성을 관리하며, 프리페치를 통해 성능을 더욱 향상시킨다. 캐시는 하드웨어 및 소프트웨어 형태로 존재하며, CPU 캐시, 디스크 캐시, 웹 캐시 등이 대표적이다. 버퍼와 캐시는 모두 임시 저장 공간이지만, 캐시는 반복적인 데이터 접근의 성능 향상에, 버퍼는 데이터 전송 횟수 감소, 중개자 역할, 데이터 크기 보장에 중점을 둔다.

더 읽어볼만한 페이지

  • 캐시 - 웹 캐시
    웹 캐시는 웹 서버와 클라이언트 사이에서 웹 요청 응답을 저장하고 재사용하여 웹 페이지 로딩 속도를 개선하는 기술로, HTTP 프로토콜을 통해 제어되며, 디지털 밀레니엄 저작권법과 한국의 인터넷 환경에서 중요한 역할을 한다.
  • 캐시 - HTTP ETag
    HTTP ETag는 웹 서버가 리소스의 특정 버전을 식별하기 위해 사용하는 HTTP 응답 헤더 필드로, 클라이언트는 이를 캐시하여 서버에게 리소스 변경 여부를 확인, 불필요한 데이터 전송을 줄이고 캐시 효율성을 향상시킬 수 있지만, 강력한 ETag와 약한 ETag로 구분되며 사용자 추적에 악용될 수 있다.
캐시
캐시 개요
정의메인 스토리지에 대한 빠른 접근을 제공하는 추가 스토리지
목표데이터 접근 속도 향상
관련 용어캐싱
캐시 메모리
작동 방식
기본 원리자주 사용되는 데이터 또는 앞으로 사용될 가능성이 높은 데이터를 미리 저장
접근 방식요청 시 캐시를 먼저 확인하고, 없을 경우 메인 스토리지에서 가져옴
적중률캐시에서 데이터를 찾을 확률 (높을수록 성능 향상)
캐시 교체 정책캐시가 가득 찼을 때 어떤 데이터를 제거할지 결정하는 규칙 (LRU, FIFO 등)
캐시의 종류
하드웨어 캐시CPU 캐시 (L1, L2, L3)
디스크 캐시
소프트웨어 캐시웹 브라우저 캐시
DNS 캐시
데이터베이스 캐시
운영체제 캐시
활용 분야
웹 캐싱웹 페이지의 로딩 속도 향상
데이터베이스 캐싱데이터베이스 쿼리 속도 향상
CDN (콘텐츠 전송 네트워크)사용자에게 더 가까운 서버에서 콘텐츠 제공
장점
성능 향상데이터 접근 시간 단축
네트워크 트래픽 감소데이터 전송량 감소
서버 부하 감소서버의 처리량 증가
단점
캐시 일관성 문제캐시된 데이터와 원본 데이터의 불일치 가능성
캐시 크기 제한저장 용량의 한계
초기 구축 비용캐시 시스템 구축 및 관리 비용 발생
기타 고려 사항
캐시 무효화캐시된 데이터를 최신 상태로 유지하기 위한 전략
캐시 스누핑다중 프로세서 시스템에서 캐시 일관성을 유지하는 기술

2. 역사

1960년대 초반, 영국 맨체스터 대학교에서 아틀라스 컴퓨터를 개발하는 과정에서 캐시 메모리의 개념이 처음 등장했다. 1965년 케임브리지 대학교모리스 윌크스는 캐시에 관한 최초의 논문 "Slave Memories and Dynamic Storage Allocation"을 발표했는데, 이 논문에서 캐시를 슬레이브 메모리라고 불렀다.[3]

2. 1. 초기 역사

1961년 맨체스터 대학교톰 킬번 연구팀이 가상 메모리를 탑재한 아틀라스 컴퓨터를 개발했다. 1962년 킬번 연구팀은 "One-level storage system" 논문을 발표했다. 1965년 케임브리지 대학교모리스 윌크스는 "Slave Memories and Dynamic Storage Allocation" 논문을 발표했는데, 이 논문에서 캐시를 슬레이브 메모리라고 불렀다.[3]

2. 2. 상용화

1965년 케임브리지 대학교에서 고든 스캐럿(Gordon Scarrott)이 다이렉트 맵 방식의 명령 캐시를 구현했다.[1] 1967년 최초의 캐시 탑재 상용 머신 IBM System/360 Model 85가 완성되었다. (16-32KB, 80-160ns).[2] 1968년 IBM의 도널드 H. 깁슨(Donald H. Gibson) 등이 IBM System/360 Model 85의 성능 평가에 관한 논문 "Structural Aspects of the System/360 Model 85 I: General Organization."을 발표했으며, 이 논문에서 처음으로 캐시라는 용어가 사용되었다.[3]

3. 기본 개념

캐시는 데이터 접근의 지역성 원리를 이용하여 효율성을 높인다. 지역성은 데이터 접근이 시간적, 혹은 공간적으로 가깝게 일어나는 것을 의미한다.[1]

캐시는 데이터 버퍼를 제공하여 대기 시간과 처리량(대역폭)을 개선한다. 더 큰 리소스는 액세스에 상당한 대기 시간을 유발하는데, 예를 들어 최신 4GHz 프로세서가 DRAM에 도달하는 데 수백 클럭 사이클이 걸릴 수 있다. 이는 캐시에 큰 덩어리를 읽어들여 완화할 수 있다. 예측 또는 명시적인 캐시 프리페칭을 사용하여 향후 읽기를 예측하고 미리 요청할 수도 있다. 최적으로 수행되면 대기 시간을 완전히 우회할 수 있다.[1]

캐시를 사용하면 여러 세분화된 전송을 더 크고 효율적인 요청으로 조립하여 기본 리소스에서 더 높은 처리량을 얻을 수도 있다. DRAM 회로의 경우, 더 넓은 데이터 버스를 사용하여 이를 실현할 수 있다.[1]

하드웨어는 데이터를 임시로 저장하기 위해 메모리의 블록 형태로 캐시를 구현한다. 중앙 처리 장치(CPU), 솔리드 스테이트 드라이브(SSD), 하드 디스크 드라이브(HDD)는 하드웨어 기반 캐시를 자주 포함하며, 웹 브라우저웹 서버는 일반적으로 소프트웨어 캐싱에 의존한다.

캐시는 항목 풀로 구성된다. 각 항목에는 ''데이터''와 ''태그''가 있다. ''데이터''는 ''백업 저장소''에 있는 데이터의 복사본이고, ''태그''는 백업 저장소의 데이터 식별자이다.

캐시 클라이언트(CPU, 웹 브라우저, 운영 체제)가 데이터에 접근해야 할 때, 먼저 캐시를 확인한다. 원하는 데이터의 태그와 일치하는 태그가 있는 항목을 찾으면, 해당 항목의 데이터를 대신 사용한다. 이를 '''캐시 적중'''이라고 한다. 예를 들어, 웹 브라우저 프로그램은 디스크의 로컬 캐시를 확인하여 특정 URL의 웹 페이지 내용의 로컬 사본이 있는지 확인할 수 있다. 이때 URL은 태그이고, 웹 페이지의 내용은 데이터이다. 캐시 적중으로 이어지는 액세스의 비율을 캐시의 '''적중률'''이라고 한다.

원하는 태그가 있는 항목이 없는 상황을 '''캐시 미스'''라고 한다. 이 경우 백업 저장소에서 데이터를 가져오는 데 더 많은 비용이 든다. 요청된 데이터는 일반적으로 다음 액세스를 위해 캐시에 복사된다.

캐시 미스가 발생하면, 새로 검색된 데이터를 위한 공간을 만들기 위해 기존 캐시 항목이 제거되기도 한다. 교체할 항목을 선택하는 휴리스틱을 교체 정책이라고 한다. 가장 널리 사용되는 교체 정책 중 하나인 LRU(Least Recently Used)는 가장 오래된 항목을 교체한다. 더 정교한 캐싱 알고리즘은 항목의 사용 빈도도 고려한다.

3. 1. 기억 계층 (Memory Hierarchy)

컴퓨터 시스템은 속도와 용량 사이의 균형을 맞추기 위해 여러 단계의 기억 장치 계층 구조를 가진다.[1]

기억 계층의 예


기억 장치는 용량과 속도 사이의 본질적인 상충 관계를 가진다. 이상적인 기억 장치는 대용량과 고속 접근을 모두 제공해야 하지만, 현실적으로 비용 효율이 좋지 않아 실현하기 어렵다. 따라서, 소용량/고속, 중용량/중속, 대용량/저속 등 여러 단계의 기억 구조를 사용하는 경우가 많다.[1]

일반적으로 CPU에 가까울수록 상위 레벨, 멀수록 하위 레벨로 구성되며, 각 레벨은 하위 레벨의 임시 기억 장치로 사용된다. 이러한 구조를 '''기억 계층'''이라고 한다.[1]

  • 기억 계층의 예시:
  • 상위 레벨: CPU 레지스터 (소용량, 고속)[1]
  • 중간 레벨: L1 캐시, L2 캐시 (중용량, 중속)
  • 하위 레벨: 하드 디스크, 자기 테이프 등의 보조 기억 장치 (대용량, 저속)[1]

  • 캐시의 종류:
  • 인클루전(inclusion) 캐시: 상위 레벨 캐시(예: L1)에 존재하는 데이터가 하위 레벨 캐시(예: L2)에도 존재하는 방식.[1]
  • 빅팀(victim) 캐시: 상위 레벨 캐시에 존재하는 데이터가 하위 레벨 캐시에 반드시 존재하지 않는 방식.[1]

3. 2. 지역성 (Locality)

캐시가 효율적으로 동작하려면, 캐시에 저장할 데이터가 지역성을 가져야 한다. 지역성은 데이터 접근이 시간적, 혹은 공간적으로 가깝게 일어나는 것을 의미한다.[1]

  • 시간적 지역성(Temporal Locality영어)은 특정 데이터가 한번 접근되었을 경우, 가까운 미래에 다시 접근할 가능성이 높은 것을 말한다.
  • 공간적 지역성(Spatial Locality영어)은 특정 데이터와 가까운 주소가 순서대로 접근되는 경향을 의미한다.


이러한 지역성으로 인해 데이터 버퍼를 제공하여 대기 시간과 처리량(대역폭) 중 하나 또는 둘 다에 이점을 제공한다.[1]

3. 2. 1. 시간적 지역성 (Temporal Locality)

특정 데이터가 한번 접근되었을 경우, 가까운 미래에 또 한번 데이터에 접근할 가능성이 높은 것을 시간적 지역성Temporal Locality영어이라고 한다.

메모리 상의 같은 주소에 여러 차례 읽기, 쓰기를 수행할 경우 상대적으로 작은 크기의 캐시를 사용해도 효율성을 꾀할 수 있다. 메모리 설계에서는 용량이 커질수록 크기가 커지고 신호가 이동해야 하는 물리적 거리가 늘어나 전파 지연이 발생하기 때문에 용량과 속도 사이에 본질적인 상충 관계가 존재한다. 또한, SRAM과 같은 고성능 기술과 DRAM, 플래시, 하드 디스크와 같이 저렴하고 대량 생산이 용이한 제품 사이에도 상충 관계가 있다.

CPU의 명령 캐시나, 웹 브라우저 등에서의 파일 단위 데이터 보존 등은, 전송이 이루어진 가까운 기간에 루프나 뒤로 가기 버튼 등에 의한 재전송 요구를 기대하여 접근이 있었던 데이터를 어느 정도 후까지 보존해 둔다. 반대로 음성과 같은 스트림 데이터 등은 시간적 국소성이 그다지 없어, 공간적 국소성에 의존한 효율화를 꾀할 필요가 있다.[1]

3. 2. 2. 공간적 지역성 (Spatial Locality)

특정 데이터와 가까운 주소가 순서대로 접근되었을 경우를 공간적 지역성이라고 한다. CPU 캐시나 디스크 캐시의 경우 한 메모리 주소에 접근할 때 그 주소뿐 아니라 해당 블록을 전부 캐시에 가져오게 된다. 이때 메모리 주소를 오름차순이나 내림차순으로 접근한다면, 캐시에 이미 저장된 같은 블록의 데이터를 접근하게 되므로 캐시의 효율성이 크게 향상된다.[1]

메모리 설계에서는 용량이 커질수록 크기가 커지고 신호가 이동해야 하는 물리적 거리가 늘어나 전파 지연이 발생하기 때문에 용량과 속도 사이에 본질적인 상충 관계가 존재한다. SRAM과 같은 고성능 기술과 DRAM, 플래시, 하드 디스크와 같이 저렴하고 대량 생산이 용이한 제품 사이에도 상충 관계가 있다.[1]

캐시는 데이터 버퍼를 제공하여 대기 시간과 처리량 (대역폭) 중 하나 또는 둘 다에 이점을 제공한다. 더 큰 리소스는 액세스에 상당한 대기 시간을 유발하는데, 예를 들어 최신 4GHz 프로세서가 DRAM에 도달하는 데 수백 클럭 사이클이 걸릴 수 있다. 이는 캐시에 큰 덩어리를 읽어들여 완화되는데, 이로 인해 후속 읽기가 인접한 위치에서 이루어져 캐시에서 읽을 수 있기를 바란다. 예측 또는 명시적인 캐시 프리페칭을 사용하여 향후 읽기가 어디에서 올지 추측하고 미리 요청을 할 수도 있는데, 최적으로 수행되면 대기 시간을 완전히 우회할 수 있다.[1]

캐시를 사용하면 여러 세분화된 전송을 더 크고 효율적인 요청으로 조립하여 기본 리소스에서 더 높은 처리량을 얻을 수도 있다. DRAM 회로의 경우, 더 넓은 데이터 버스를 사용하여 추가 처리량을 얻을 수 있다.[1]

4. 캐시의 동작 방식

하드웨어는 데이터를 임시로 저장하기 위해 메모리의 블록 형태로 캐시를 구현하며, 이는 다시 사용될 가능성이 있는 데이터이다. 중앙 처리 장치(CPU), 솔리드 스테이트 드라이브(SSD), 하드 디스크 드라이브(HDD)는 하드웨어 기반 캐시를 자주 포함하며, 웹 브라우저웹 서버는 일반적으로 소프트웨어 캐싱에 의존한다.

캐시는 항목 풀로 구성된다. 각 항목에는 ''데이터''가 있으며, 이는 일부 ''백업 저장소''의 동일한 데이터 복사본이다. 각 항목에는 또한 ''태그''가 있는데, 이 태그는 항목이 복사본인 백업 저장소의 데이터 식별자를 지정한다.

캐시 클라이언트(CPU, 웹 브라우저, 운영 체제)가 백업 저장소에 존재한다고 가정되는 데이터에 접근해야 할 때, 먼저 캐시를 확인한다. 원하는 데이터의 태그와 일치하는 태그가 있는 항목을 찾을 수 있으면, 해당 항목의 데이터가 대신 사용된다. 이 상황을 '''캐시 적중'''이라고 한다. 예를 들어, 웹 브라우저 프로그램은 디스크의 로컬 캐시를 확인하여 특정 URL의 웹 페이지 내용의 로컬 사본이 있는지 확인할 수 있다. 이 예에서 URL은 태그이고, 웹 페이지의 내용은 데이터이다. 캐시 적중으로 이어지는 액세스의 비율을 캐시의 '''적중률'''이라고 한다.

원하는 태그가 있는 항목이 캐시에 없는 상황을 '''캐시 미스'''라고 한다. 이 경우 백업 저장소에서 데이터를 가져오는 데 더 많은 비용이 든다. 요청된 데이터가 검색되면 일반적으로 다음 액세스를 위해 캐시에 복사된다.

캐시 미스가 발생하는 동안 새로 검색된 데이터를 위한 공간을 만들기 위해 다른 기존 캐시 항목이 일반적으로 제거된다. 교체할 항목을 선택하는 데 사용되는 휴리스틱은 교체 정책이라고 한다. 가장 널리 사용되는 교체 정책 중 하나인 LRU(Least Recently Used)는 가장 오래된 항목, 즉 다른 항목보다 최근에 액세스되지 않은 항목을 교체한다. 보다 정교한 캐싱 알고리즘은 항목의 사용 빈도도 고려한다.

4. 1. 캐시 적중 (Cache Hit)

CPU, 웹 브라우저, 운영 체제와 같은 캐시 클라이언트가 데이터에 접근할 때, 먼저 캐시를 확인한다. 만약 원하는 데이터의 태그와 일치하는 항목이 캐시에 있으면, 해당 항목의 데이터를 대신 사용한다. 이를 '''캐시 적중'''이라고 한다. 예를 들어, 웹 브라우저 프로그램은 특정 URL의 웹 페이지 내용이 로컬 캐시에 있는지 확인한다. 이때 URL은 태그, 웹 페이지 내용은 데이터에 해당한다. 캐시 적중 비율은 캐시의 '''적중률'''이라고 한다.

4. 2. 캐시 실패 (Cache Miss)

요청한 데이터가 캐시에 없어, 더 느린 저장 장치(주기억장치, 디스크 등)에서 데이터를 가져와야 하는 경우를 '''캐시 실패'''(cache miss)라고 한다. 이 경우 백업 저장소에서 데이터를 가져오는 데 더 많은 비용이 든다. 요청된 데이터가 검색되면 일반적으로 다음 접근을 위해 캐시에 복사된다.

캐시 실패가 발생하면, 새로 검색된 데이터를 위한 공간을 만들기 위해 기존 캐시 항목 중 일부를 제거해야 하는 경우가 있다. 이때 어떤 항목을 제거할지 결정하는 방법을 교체 정책이라고 한다. 가장 널리 사용되는 교체 정책 중 하나는 LRU(Least Recently Used)로, 가장 오랫동안 사용되지 않은 항목을 교체한다. 더 정교한 캐싱 알고리즘은 항목의 사용 빈도도 고려한다.

4. 3. 쓰기 정책 (Writing Policies)

캐시에 데이터를 쓸 때, 원본 데이터(backing store)에도 언제, 어떻게 쓸 것인지를 결정하는 정책이 필요하다. 이를 쓰기 정책이라고 한다. 쓰기 정책에는 다음과 같은 두 가지 기본 방식이 있다.[3]

  • '''쓰기 통과 (Write-Through)''': 캐시와 백업 저장소 모두에 동기적으로 쓰기를 수행한다.
  • '''쓰기 백 (Write-Back)''': 처음에는 캐시에만 쓰기를 수행한다. 백업 저장소에 대한 쓰기는 수정된 내용이 다른 캐시 블록으로 교체되기 전까지 연기된다. 이를 ''레이지 쓰기''라고도 한다.


쓰기 백 캐시는 구현하기가 더 복잡하다. 캐시에서 어떤 내용이 변경되었는지 추적하고, 나중에 백업 저장소에 쓰기 위해 이를 '더티(dirty)'로 표시해야 하기 때문이다. 쓰기 백 캐시에서 읽기 미스가 발생하면, 데이터를 가져오기 위해 두 번의 메모리 접근이 필요할 수 있다. (한 번은 더티 데이터를 쓰기 위해, 다른 한 번은 필요한 데이터를 읽기 위해)

쓰기 작업 요청자는 데이터가 반환되지 않으므로, 쓰기 미스 시 데이터를 캐시에 로드할지 여부에 대한 결정도 필요하다.

  • '''쓰기 할당 (Write-Allocate)''' (또는 ''쓰기 시 가져오기''): 미스된 쓰기 위치의 데이터를 캐시에 로드한 다음, 쓰기 적중 연산을 수행한다.
  • '''쓰기 비할당 (No-Write-Allocate)''' (''쓰기 우회''): 미스된 쓰기 위치의 데이터는 캐시에 로드되지 않고, 백업 저장소에 직접 쓰여진다.


쓰기 통과 및 쓰기 백 정책은 이 두 가지 쓰기 미스 정책을 모두 사용할 수 있지만, 일반적으로 함께 사용된다.[4][5]

4. 3. 1. 쓰기 통과 (Write-Through)

시스템이 캐시에 데이터를 쓸 때, 언젠가는 그 데이터를 백업 저장소에도 써야 한다. 이 쓰기의 시점을 ''쓰기 정책''이라고 한다. ''쓰기 통과(Write-Through)''는 캐시와 백업 저장소 모두에 동기적으로 쓰기를 수행하는 방식이다.[3]

쓰기 할당이 없는 쓰기 통과 캐시


쓰기 통과 캐시는 쓰기 비할당 정책을 사용할 수 있다. 쓰기 비할당(또는 쓰기 우회)은 미스된 쓰기 위치의 데이터는 캐시에 로드되지 않고 백업 저장소에 직접 쓰는 방식이다. 쓰기 통과 캐시에서 쓰기 비할당을 사용하는 경우, 후속 쓰기는 여전히 백업 저장소에 직접 써야 하므로 이점이 없다.[4][5]

4. 3. 2. 쓰기 지연 (Write-Back, Write-Behind)

쓰기 백(Write-back)은 쓰기 지연(write-behind)이라고도 불리며, 데이터를 캐시에 쓸 때 바로 백업 저장소에 쓰지 않고, 캐시에만 기록하는 방식이다. 데이터가 수정되면 '더티(dirty)' 플래그를 설정하여 표시하고, 나중에 해당 데이터가 캐시에서 제거될 때(다른 데이터로 교체될 때) 백업 저장소에 한꺼번에 기록한다. 이를 "레이지 쓰기"라고도 부른다.[3]

이 방식은 쓰기 작업을 빠르게 처리할 수 있다는 장점이 있다. 하지만, 캐시에만 데이터가 저장되어 있는 동안 전원 공급이 중단되거나 시스템 오류가 발생하면 데이터가 손실될 위험이 있다.

쓰기 백 캐시에서 읽기 실패가 발생하면, 데이터를 가져오기 위해 두 번의 메모리 접근이 필요할 수 있다. 한 번은 쓰기 백을 위한 것이고, 다른 한 번은 필요한 데이터를 실제로 읽어오기 위한 것이다.

쓰기 백 캐시는 일반적으로 쓰기 할당(write-allocate) 방식을 사용한다. 쓰기 할당은 쓰기 실패 시 해당 데이터를 캐시에 로드하고, 이후 동일한 위치에 대한 쓰기(또는 읽기)가 캐시에서 처리될 수 있도록 한다.[4][5]

쓰기 할당이 있는 쓰기 백 캐시

4. 4. 쓰기 할당 (Write Allocate)

쓰기 실패 시, 데이터를 캐시에 로드한 후 쓰기 작업을 수행한다. 쓰기 작업에서 요청자에게 데이터가 반환되지 않으므로, 쓰기 실패 시 데이터를 캐시에 로드할지 여부에 대한 결정을 내려야 한다.[3]

  • '''쓰기 할당''' (또는 '''쓰기 시 가져오기'''): 실패한 쓰기 위치의 데이터가 캐시에 로드된 다음, 쓰기 적중 연산이 수행된다. 이 방식에서 쓰기 실패는 읽기 실패와 유사하다.
  • '''쓰기 비할당''' (또는 '''쓰기 비할당''' 또는 '''쓰기 우회'''): 실패한 쓰기 위치의 데이터는 캐시에 로드되지 않고 백업 저장소에 직접 쓰여진다. 이 방식에서 데이터는 읽기 실패 시에만 캐시에 로드된다.


쓰기 백 캐시는 쓰기 할당을 사용하여, 이제 캐시된 동일한 위치에 대한 후속 쓰기(또는 읽기)를 기대한다.[4][5]

4. 5. 쓰기 비할당 (No-Write Allocate)

시스템이 캐시에 데이터를 쓸 때, 언젠가는 그 데이터를 백업 저장소에도 써야 한다. 이 쓰기의 시점을 ''쓰기 정책''이라고 한다. 쓰기 미스 시 데이터를 캐시에 로드할지 여부에 대한 결정을 내려야 하는데, 그중 하나가 '''쓰기 비할당''' 방식이다.

  • '''쓰기 비할당''' (''쓰기 비할당'' 또는 ''쓰기 우회''): 미스된 쓰기 위치의 데이터는 캐시에 로드되지 않고 백업 저장소에 직접 쓰여진다. 이 접근 방식에서 데이터는 읽기 미스 시에만 캐시에 로드된다.[4][5]


쓰기 통과 캐시는 쓰기 비할당을 사용한다. 쓰기 통과 방식에서는 후속 쓰기가 여전히 백업 저장소에 직접 쓰여져야 하므로 이점이 없기 때문이다.[4][5]

4. 6. 교체 정책 (Replacement Policies)

캐시가 가득 찼을 때, 어떤 데이터를 제거하고 새로운 데이터를 저장할지 결정하는 정책을 교체 정책이라고 한다. 가장 널리 사용되는 교체 정책 중 하나는 LRU(Least Recently Used)이다. LRU는 가장 오랫동안 사용되지 않은 항목, 즉 다른 항목보다 최근에 접근되지 않은 항목을 교체한다. 보다 정교한 캐싱 알고리즘은 항목의 사용 빈도도 고려한다.

4. 7. 프리페치 (Prefetch)

프리페치는 필요할 것으로 예상되는 데이터를 미리 캐시에 가져오는 기술이다. 예측 또는 명시적인 캐시 프리페칭을 사용하여 향후 읽기가 어디에서 올지 추측하고 미리 요청을 할 수 있다. 최적으로 수행되면 대기 시간을 완전히 우회할 수 있다.[17]

요구 페이징 정책을 가진 캐시가 백업 저장소에서 최소한의 데이터만 읽어오는 것과 달리, 프리페치 입력 큐 또는 예측 페이징 정책을 가진 캐시는 요청된 데이터뿐만 아니라, 다음 데이터 청크가 곧 필요할 것이라고 추측하여 해당 데이터를 미리 캐시에 프리페치한다. 이러한 방식은 백업 저장소가 첫 번째 청크를 읽는 데 긴 지연 시간을 가지지만, 다음 청크들을 순차적으로 읽는 데 훨씬 짧은 시간이 걸리는 경우에 특히 유용하다. 예를 들어 디스크 스토리지 및 DRAM에서 효과적이다.[17]

일부 운영 체제는 실행 파일을 전체 RAM에 미리 로드하는 로더를 사용하기도 한다. 또한, 일부 캐시는 전체 파일을 미리 로드할 뿐만 아니라, 프리페처와 관련된 페이지 캐시 또는 링크 프리페칭과 관련된 웹 캐시와 같이 곧 요청될 수 있는 다른 관련 파일도 로드한다.[17]

5. 여러 가지 캐시의 종류

메모리 설계에서는 용량과 속도 사이에 근본적인 상충 관계가 존재한다. 용량이 커질수록 크기가 커지고 신호가 이동해야 하는 물리적 거리가 늘어나 전파 지연이 발생하기 때문이다. 또한, SRAM과 같은 고성능 기술과 DRAM, 플래시, 하드 디스크와 같이 저렴하고 대량 생산이 용이한 제품 사이에도 이러한 상충 관계가 나타난다.

캐시는 데이터 버퍼를 제공하여 대기 시간과 처리량 (대역폭)을 개선한다. 큰 리소스는 접근에 상당한 대기 시간을 유발하는데, 예를 들어 최신 4GHz 프로세서가 DRAM에 도달하는 데 수백 클럭 사이클이 걸릴 수 있다. 캐시는 이러한 대기 시간을 완화하기 위해 큰 덩어리의 데이터를 읽어 들이고, 예측 또는 명시적인 캐시 프리페칭을 통해 대기 시간을 줄일 수 있다. 또한, 캐시는 여러 세분화된 전송을 더 크고 효율적인 요청으로 조립하여 기본 리소스에서 더 높은 처리량을 얻을 수 있도록 돕는다.

5. 1. 하드웨어 캐시

메모리 설계에서는 용량이 커질수록 크기가 커지고 신호가 이동해야 하는 물리적 거리가 늘어나 전파 지연이 발생하기 때문에 용량과 속도 사이에 본질적인 상충 관계가 존재한다. SRAM과 같은 고성능 기술과 DRAM, 플래시, 하드 디스크와 같이 저렴하고 대량 생산이 용이한 제품 사이에도 상충 관계가 있다.

캐시의 데이터 버퍼는 대기 시간과 처리량 (대역폭)에 이점을 제공한다. 더 큰 리소스는 접근에 상당한 대기 시간을 유발하는데, 예를 들어 최신 4GHz 프로세서가 DRAM에 도달하는 데 수백 클럭 사이클이 걸릴 수 있다. 이는 캐시에 큰 덩어리를 읽어들여 완화되는데, 후속 읽기가 인접한 위치에서 이루어져 캐시에서 읽을 수 있기를 바라기 때문이다. 예측 또는 명시적인 캐시 프리페칭을 사용하여 향후 읽기가 어디에서 올지 추측하고 미리 요청을 할 수 있으며, 최적으로 수행되면 대기 시간을 완전히 우회할 수 있다.

캐시를 사용하면 여러 세분화된 전송을 더 크고 효율적인 요청으로 조립하여 기본 리소스에서 더 높은 처리량을 얻을 수도 있다. DRAM 회로의 경우, 더 넓은 데이터 버스를 사용하여 추가 처리량을 얻을 수 있다.

하드웨어는 데이터를 임시로 저장하기 위해 메모리의 블록 형태로 캐시를 구현하며, 이는 다시 사용될 가능성이 있는 데이터이다. 중앙 처리 장치(CPU), 솔리드 스테이트 드라이브(SSD), 하드 디스크 드라이브(HDD)는 하드웨어 기반 캐시를 자주 포함하며, 웹 브라우저웹 서버는 일반적으로 소프트웨어 캐싱에 의존한다.

캐시는 항목 풀로 구성된다. 각 항목에는 ''데이터''가 있으며, 이는 일부 ''백업 저장소''의 동일한 데이터 복사본이다. 각 항목에는 또한 ''태그''가 있는데, 이 태그는 항목이 복사본인 백업 저장소의 데이터 식별자를 지정한다.

캐시 클라이언트(CPU, 웹 브라우저, 운영 체제)가 백업 저장소에 존재한다고 가정되는 데이터에 접근해야 할 때, 먼저 캐시를 확인한다. 원하는 데이터의 태그와 일치하는 태그가 있는 항목을 찾을 수 있으면, 해당 항목의 데이터가 대신 사용된다. 이 상황을 '''캐시 적중'''이라고 한다. 예를 들어, 웹 브라우저 프로그램은 디스크의 로컬 캐시를 확인하여 특정 URL의 웹 페이지 내용의 로컬 사본이 있는지 확인할 수 있다. 이 예에서 URL은 태그이고, 웹 페이지의 내용은 데이터이다. 캐시 적중으로 이어지는 접근의 비율을 캐시의 '''적중률'''이라고 한다.

캐시를 확인했지만 원하는 태그가 있는 항목이 없는 상황을 '''캐시 미스'''라고 한다. 이 경우 백업 저장소에서 데이터를 가져오는 데 더 많은 비용이 든다. 요청된 데이터가 검색되면 일반적으로 다음 접근을 위해 캐시에 복사된다.

캐시 미스가 발생하는 동안 새로 검색된 데이터를 위한 공간을 만들기 위해 다른 기존 캐시 항목이 일반적으로 제거된다. 교체할 항목을 선택하는 데 사용되는 휴리스틱은 교체 정책이라고 한다. 가장 널리 사용되는 교체 정책 중 하나인 LRU(Least Recently Used)는 가장 오래된 항목, 즉 다른 항목보다 최근에 접근되지 않은 항목을 교체한다. 보다 정교한 캐싱 알고리즘은 항목의 사용 빈도도 고려한다.

5. 1. 1. CPU 캐시

1980년대 이후 대부분의 CPU는 하나 이상의 캐시를 사용해 왔다. 최신 고성능 임베디드 시스템, 데스크톱 컴퓨터 및 서버 마이크로프로세서는 최대 6개의 유형의 캐시(수준 및 기능 간)를 가질 수 있다.[7] CPU 근처나 내부에 있는 작은 메모리는 훨씬 더 큰 메인 메모리보다 빠르게 작동할 수 있다.[6]

CPU 캐시는 메모리 접근 속도가 CPU 처리 속도 향상을 따라가지 못하는 문제를 해결하기 위해 CPU 칩 내부에 탑재되는 작은 메모리이다. 용량은 작지만 속도가 빨라 마이크로프로세서의 성능에 큰 영향을 미친다.

특정 기능을 가진 캐시로는 D-캐시(데이터 캐시), I-캐시(명령어 캐시) 및 MMU용 TLB 등이 있다.

5. 1. 2. GPU 캐시

GPU는 그래픽 처리 장치에서의 범용 컴퓨팅과 컴퓨트 커널을 지원하면서 발전해왔다. 이에 따라 명령어 캐시를 포함하여 점점 더 크고 일반적인 캐시를 개발했으며, 이는 CPU 캐시에서 흔히 발견되는 기능을 나타낸다.[1] 이러한 캐시는 스레드 간의 동기화 프리미티브 및 원자적 연산을 처리하고 CPU 스타일의 MMU와 인터페이스하도록 성장했다.[1]

과거의 그래픽 처리 장치(GPU)는 읽기 전용 텍스처 캐시가 제한적이었고, 2D 참조 지역성을 향상시키기 위해 스위즐링을 사용했다.[1] 캐시 미스는 성능에 큰 영향을 미쳤는데, 예를 들어 밉매핑을 사용하지 않는 경우가 그러했다.[1] 캐싱은 픽셀당 4비트 정도에 불과한 텍스처 데이터에 대해 32비트(그리고 더 넓은) 전송을 활용하는 데 중요했다.[1]

5. 1. 3. DSP 캐시

디지털 신호 처리 장치(DSP)는 초기 설계에서 직접 메모리 접근으로 공급되는 스크래치패드 메모리를 사용했지만, 최신 DSP는 CPU와 매우 유사한 캐시 세트를 포함하는 경우가 많다. 예를 들어 퀄컴 헥사곤은 공유 L2 캐시, 분리된 L1 I-캐시 및 D-캐시를 갖춘 수정된 하버드 아키텍처를 사용한다.[8]

5. 2. 소프트웨어 캐시

메모리 설계에서는 용량이 커질수록 크기가 커지고 신호가 이동해야 하는 물리적 거리가 늘어나 전파 지연이 발생하기 때문에 용량과 속도 사이에 본질적인 상충 관계가 존재한다. 또한, SRAM과 같은 고성능 기술과 DRAM, 플래시, 하드 디스크와 같이 저렴하고 대량 생산이 용이한 제품 사이에도 상충 관계가 있다.

캐시는 대기 시간과 처리량 (대역폭) 개선에 이점을 제공한다. 더 큰 리소스는 액세스에 상당한 대기 시간을 유발하는데, 예를 들어 최신 4GHz 프로세서가 DRAM에 도달하는 데 수백 클럭 사이클이 걸릴 수 있다. 이는 캐시에 큰 덩어리를 읽어들여 완화할 수 있다. 예측 또는 명시적인 캐시 프리페칭을 사용하면 대기 시간을 줄일 수 있다.

캐시를 사용하면 여러 세분화된 전송을 더 크고 효율적인 요청으로 조립하여 기본 리소스에서 더 높은 처리량을 얻을 수도 있다. DRAM 회로의 경우, 더 넓은 데이터 버스를 사용하여 추가 처리량을 얻을 수 있다.

하드웨어는 데이터를 임시로 저장하기 위해 메모리의 블록 형태로 캐시를 구현하며, 이는 다시 사용될 가능성이 있는 데이터이다. 중앙 처리 장치(CPU), 솔리드 스테이트 드라이브(SSD), 하드 디스크 드라이브(HDD)는 하드웨어 기반 캐시를 자주 포함하며, 웹 브라우저웹 서버는 일반적으로 소프트웨어 캐싱에 의존한다.

캐시는 항목 풀로 구성된다. 각 항목에는 ''데이터''와 ''태그''가 있다. ''데이터''는 일부 ''백업 저장소''에 있는 데이터의 복사본이고, ''태그''는 백업 저장소의 데이터 식별자이다.

CPU, 웹 브라우저, 운영 체제와 같은 캐시 클라이언트가 데이터에 접근해야 할 때, 먼저 캐시를 확인한다. 원하는 데이터의 태그와 일치하는 태그가 있는 항목을 찾으면, 해당 항목의 데이터를 대신 사용한다. 이 상황을 '''캐시 적중'''이라고 한다. 예를 들어, 웹 브라우저는 특정 URL의 웹 페이지 내용의 로컬 사본이 있는지 확인한다. URL은 태그이고, 웹 페이지의 내용은 데이터이다. 캐시 적중으로 이어지는 액세스의 비율을 캐시의 '''적중률'''이라고 한다.

캐시를 확인했지만 원하는 태그가 있는 항목이 없는 상황을 '''캐시 미스'''라고 한다. 이 경우 백업 저장소에서 데이터를 가져오는 데 더 많은 비용이 든다. 요청된 데이터가 검색되면 일반적으로 다음 액세스를 위해 캐시에 복사된다.

캐시 미스가 발생하는 동안 새로 검색된 데이터를 위한 공간을 만들기 위해 기존 캐시 항목이 제거되기도 한다. 교체할 항목을 선택하는 데 사용되는 휴리스틱을 교체 정책이라고 한다. 가장 널리 사용되는 교체 정책 중 하나인 LRU(Least Recently Used)는 가장 오래된 항목을 교체한다. 보다 정교한 캐싱 알고리즘은 항목의 사용 빈도도 고려한다.

5. 2. 1. 디스크 캐시 (페이지 캐시)

'''디스크 캐시'''는 '''디스크 버퍼'''라고도 불리며, 하드 디스크의 속도를 높이기 위해 사용되는 기술이다. 1980년대 후반부터 대부분의 하드 디스크에는 디스크 제어와 외부 인터페이스를 위한 작은 컴퓨터가 내장되어 있는데, 이 컴퓨터는 데이터를 저장하는 작은 메모리, 즉 디스크 캐시를 가지고 있다. 2004년 기준으로 개인용 컴퓨터의 디스크 캐시는 대개 2-32MB 정도였다.

디스크 캐시는 다음과 같은 여러 용도로 사용된다.

  • '''미리 읽기''': 운영 체제가 디스크에 데이터를 읽도록 요청할 때, 헤드를 해당 트랙에 올려놓고 데이터를 읽기까지 시간이 걸린다. 하지만 운영체제는 대개 첫 번째 섹터 이후의 섹터들을 요구하는 경우가 많아서, 연속된 섹터를 읽을 때 시간을 절약하기 위해 디스크는 뒷부분의 데이터를 미리 읽어 캐시에 저장한다.

  • '''속도 조절''': 디스크의 입출력 인터페이스는 디스크 플래터가 데이터를 읽는 속도보다 훨씬 느린 경우가 많다. 따라서 디스크가 데이터를 빠르게 읽고 쓸 수 있도록 데이터를 인터페이스에 넘기기 전에 캐시에 잠시 저장한다.

  • '''쓰기 가속''': 운영 체제가 디스크에 쓰기를 요청하면, 디스크 내부 컴퓨터는 캐시에 데이터를 저장하고 디스크가 쓰기를 끝내기도 전에 운영 체제에게 쓰기가 끝났음을 보고할 수 있다. 이렇게 하면 운영 체제는 디스크 쓰기가 완료될 때까지 기다리지 않고 다음 작업을 빠르게 수행할 수 있다. 그러나 이 방법은 전원이 차단되면 데이터가 사라지거나 파일 시스템이 망가질 수 있어 논란의 여지가 있다. 최신 RAID 컨트롤러는 배터리 백업 시스템을 구현하기도 하지만, 데이터 정확성을 중요하게 여기는 시스템에서는 쓰기 가속 기법을 사용하지 않는 경우도 있다.

  • '''명령 큐''': 최신 시리얼 ATA 디스크와 대부분의 SCSI 디스크는 다른 명령을 수행하는 중에도 여러 개의 명령을 추가로 받을 수 있다. 이 명령들은 나중에 처리하기 위해 디스크 캐시에 저장된다. 명령 큐는 쓰기가 완전히 끝났을 때 운영 체제에게 알려줌으로써 파일 시스템의 정확성을 유지한다.


주 메모리의 페이지 캐시는 운영 체제 커널에 의해 관리되는 디스크 캐시의 예시이다.

5. 2. 2. 웹 캐시

웹 브라우저웹 프록시 서버웹 페이지, 이미지 등 웹 서버의 이전 응답을 저장하기 위해 웹 캐시를 사용한다. 웹 캐시는 이전에 저장된 정보를 재사용하여 네트워크를 통해 전송해야 하는 정보량을 줄인다. 이는 웹 서버의 대역폭과 처리 요구 사항을 줄이고, 웹 사용자의 응답성을 개선하는 데 도움이 된다.[14]

웹 브라우저는 내장된 웹 캐시를 사용하지만, 일부 인터넷 서비스 제공업체(ISP)나 조직은 해당 네트워크의 모든 사용자가 공유하는 웹 캐시인 캐싱 프록시 서버를 사용하기도 한다.

또 다른 형태의 캐시로는 P2P 애플리케이션에서 가장 많이 찾는 파일을 ISP 캐시에 저장하여 P2P 전송을 가속화하는 P2P 캐싱이 있다. 이와 유사하게, 커뮤니티가 P2P 트래픽에 대해 동일한 작업을 수행할 수 있도록 하는 분산된 방식도 존재한다.[15]

5. 2. 3. 분산 캐시

분산 캐시는 네트워크로 연결된 여러 대의 컴퓨터 메모리를 활용하여 구성된다.

5. 2. 4. 기타 캐시

BIND DNS 데몬은 도메인 이름과 IP 주소 간의 매핑을 캐시에 저장하여, 이전에 방문했던 웹사이트를 빠르게 다시 찾아갈 수 있도록 돕는다.[18]

신뢰성이 낮은 네트워크(이더넷 등) 환경에서는 주고받는 데이터를 캐싱하는 것이 일반적이다. 예를 들어, 웹 브라우저는 최근 방문한 웹사이트의 내용을 로컬 저장소에 저장하여, 다음에 같은 사이트를 방문할 때 더 빠르게 불러올 수 있도록 한다.[18]

인터넷 제공업체나 대규모 네트워크 운영자들은 프록시 서버에 인기 있는 웹 페이지를 캐싱하여, 사용자들이 웹 페이지를 요청할 때 더 빠르게 응답하고 네트워크 트래픽을 줄인다.

구글과 같은 검색 엔진은 검색 대상 웹사이트의 내용을 캐시에 저장하여 검색 속도를 높이고, 사용자에게 검색 결과와 함께 "캐시됨" 링크를 제공하여 해당 웹사이트에 일시적 또는 영구적으로 접속할 수 없는 경우에도 내용을 볼 수 있도록 한다.[18]

데이터베이스 캐싱은 데이터베이스 애플리케이션의 처리량을 크게 향상시킬 수 있다. 이는 데이터베이스 인덱스, 데이터 사전, 그리고 자주 사용되는 데이터의 일부를 캐시에 저장하여, 데이터베이스가 동일한 정보를 반복해서 찾지 않아도 되도록 하기 때문이다.[18]

메모이제이션은 이전에 계산된 값을 저장해 두었다가, 같은 계산이 필요할 때 다시 사용하는 프로그램 최적화 기법이다. 이는 어려운 수학 문제의 답을 미리 적어두고, 나중에 같은 문제가 나왔을 때 답을 바로 찾아보는 것과 비슷하다. 메모이제이션은 동적 프로그래밍 알고리즘 설계 방법론과 관련이 있으며, 캐싱의 한 형태로 볼 수 있다.[18]

분산 캐시는 여러 대의 컴퓨터를 연결하여 캐시를 구성하는 방식으로, 애플리케이션의 확장성, 안정성, 성능을 향상시킨다.[18][19]

6. In-network Cache

정보 중심 네트워킹(ICN)은 종단 간 원칙에 기반한 호스트 중심 패러다임에서 벗어나 식별된 정보가 중심이 되는 네트워크 아키텍처로 인터넷 인프라를 발전시키는 접근 방식이다. ICN 노드는 고유한 캐싱 기능을 가지므로, ICN은 캐시의 느슨하게 연결된 네트워크로 볼 수 있으며, 캐싱 정책에 대한 고유한 요구 사항을 갖는다. 그러나 콘텐츠 캐싱은 무단 접근으로부터 콘텐츠를 보호해야 하는 과제를 제시하며, 이는 특별한 주의와 해결책을 요구한다.[10]

ICN에서 캐시는 프록시 서버와 달리 네트워크 레벨 솔루션이다. 따라서 빠르게 변화하는 캐시 상태와 더 높은 요청 도착률을 가지며, 더 작은 캐시 크기는 콘텐츠 제거 정책에 대한 다른 요구 사항을 부과한다. 특히, ICN의 제거 정책은 빠르고 가벼워야 한다. 다양한 ICN 아키텍처 및 애플리케이션을 위한 다양한 캐시 복제 및 제거 방식이 제안되었다.

7. 버퍼 vs. 캐시

캐싱은 반복적으로 전송되는 데이터에 대한 성능 향상을 근본적인 목표로 한다. 캐싱 시스템은 데이터 항목의 초기 전송(일반적으로 쓰기) 시에도 성능 향상을 가져올 수 있지만, 이는 캐싱 시스템 내에서 발생하는 버퍼링 때문이다.

읽기 캐시의 경우, 데이터 항목을 캐시의 더 빠른 중간 저장소에서 가져올 수 있게 되어, 원래 저장 위치에서 가져오는 것보다 성능이 향상된다. 이를 위해서는 데이터 항목을 해당 위치에서 한 번 이상 가져와야 한다. 쓰기 캐시의 경우, 데이터 항목을 캐시의 중간 저장소에 즉시 저장하여, 나중에 해당 저장소로 전송하거나 백그라운드 프로세스로 처리함으로써 첫 번째 쓰기 시 성능 향상을 가져올 수 있다.

엄격한 버퍼링과 달리, 캐싱 프로세스는 캐시의 중간 저장소와 데이터가 저장된 위치 사이의 일관성을 유지하기 위해 (잠재적으로 분산된) 캐시 일관성 프로토콜을 준수해야 한다. 반면에 버퍼링은 다음과 같은 역할을 한다.


  • 통신 프로세스 간의 새로운 데이터 전송 횟수를 줄여, 여러 작은 전송에 대한 오버헤드를 더 적은 더 큰 전송으로 분산시킨다.
  • 서로 직접 전송할 수 없는 통신 프로세스를 위한 중개자 역할을 한다.
  • 전송에 관련된 통신 프로세스 중 적어도 하나에서 필요로 하는 최소 데이터 크기 또는 표현을 보장한다.


일반적인 캐싱 구현에서 처음 읽거나 쓰는 데이터 항목은 효과적으로 버퍼링된다. 쓰기의 경우 쓰기가 시작된 응용 프로그램의 성능을 주로 향상시킨다. 또한, 개별 쓰기를 쓰기 배치로 연기하는 캐싱 프로토콜은 버퍼링의 한 형태이다. 개별 읽기를 읽기 배치로 연기하는 캐싱 프로토콜 부분 또한 버퍼링의 한 형태이지만, 초기 읽기의 성능에는 부정적인 영향을 미칠 수 있다(개별 읽기의 합계 성능에는 긍정적인 영향을 줄 수 있음에도 불구하고). 실제로 캐싱은 거의 항상 어떤 형태의 버퍼링을 포함하는 반면, 엄격한 버퍼링은 캐싱을 포함하지 않는다.

버퍼는 CPU 명령어가 주변 장치에 저장된 데이터를 직접 주소 지정할 수 없기 때문에 전통적으로 사용되는 임시 메모리 위치이다. 따라서 주소 지정 가능한 메모리가 중간 단계로 사용된다. 또한, 이러한 버퍼는 대량의 데이터 블록이 조립되거나 분해될 때(저장 장치에서 필요에 따라), 또는 데이터가 생성된 순서와 다른 순서로 전달될 때 유용할 수 있다. 또한, 전체 데이터 버퍼는 일반적으로 순차적으로 전송되므로(예: 하드 디스크로), 버퍼링 자체는 때때로 전송 성능을 향상시키거나 캐싱과 달리 전송 지연 시간의 변동 또는 지터를 줄인다. 이러한 이점은 버퍼링된 데이터가 버퍼에 한 번 쓰여지고 버퍼에서 한 번 읽힐 때도 존재한다.

캐시는 전송 성능을 향상시킨다. 이러한 증가의 일부는 여러 개의 작은 전송이 하나의 큰 블록으로 결합될 가능성에서 비롯된다. 그러나 주요 성능 향상은 동일한 데이터가 캐시에서 여러 번 읽히거나, 쓰여진 데이터가 곧 읽힐 가능성이 높기 때문에 발생한다. 캐시의 유일한 목적은 기본적으로 더 느린 저장소에 대한 접근을 줄이는 것이다. 캐시는 또한 일반적으로 인접한 계층의 관점에서 보이지 않도록 설계된 추상화 계층이다.

참조

[1] 웹사이트 Cache https://web.archive.[...] 2016-08-02
[2] 논문 Cache hit ratio maximization in device-to-device communications overlaying cellular networks http://dx.doi.org/10[...] 2020-02
[3] 웹사이트 Understanding Caching https://www.linuxjou[...] 2004-01-01
[4] 서적 Computer Architecture: A Quantitative Approach https://books.google[...] Elsevier
[5] 서적 Computer Architecture A Quantitative Approach Morgan Kaufmann Publishers 1990
[6] 논문 Survey of CPU Cache-Based Side-Channel Attacks: Systematic Analysis, Security Models, and Countermeasures 2021-06-10
[7] 웹사이트 Intel Broadwell Core i7 5775C '128MB L4 Cache' Gaming Behemoth and Skylake Core i7 6700K Flagship Processors Finally Available In Retail https://wccftech.com[...] 2015-09-25
[8] 웹사이트 qualcom Hexagon DSP SDK overview https://developer.qu[...]
[9] 웹사이트 Lecture 7: Memory Management http://cseweb.ucsd.e[...] UC San Diego 2013-12-04
[10] 논문 Secure Distribution of Protected Content in Information-Centric Networking
[11] conference Time Aware Least Recent Used (TLRU) cache management policy in ICN
[12] 논문 A Cache Management Scheme for Efficient Content Eviction and Replication in Cache Networks
[13] 간행물 5 Lines Of Code In The Cloud 2011-05-30
[14] 웹사이트 Web application caching https://web.archive.[...] 2013-07-24
[15] conference Corelli: A Dynamic Replication Service for Supporting Latency-Dependent Content in Community Networks http://comp.eprints.[...]
[16] 웹사이트 Globally Distributed Content Delivery, by J. Dilley, B. Maggs, J. Parikh, H. Prokop, R. Sitaraman and B. Weihl, IEEE Internet Computing, Volume 6, Issue 5, November 2002. https://people.cs.um[...] 2019-10-25
[17] 웹사이트 Definition: cloud storage gateway https://www.techtarg[...] 2014-07
[18] 논문 Distributed caching with centralized control 2001-02-01
[19] 논문 Distributed Caching on the Path To Scalability https://msdn.microso[...] 2009-07

관련 사건 타임라인

( 최근 20개의 뉴스만 표기 됩니다. )



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com