캐싱 작동 방식

Apr 01 2000
캐싱은 컴퓨터가 메모리에서 데이터를 가져오는 속도를 높입니다. 속도를 높이는 방법을 알고 있습니까? 작은 캐시가 어떻게 정말 먼 길을 갈 수 있습니까?
캐싱은 컴퓨터가 메모리에서 비트와 바이트를 가져오는 속도를 크게 높입니다. 더 많은 컴퓨터 메모리 사진을 참조하십시오.

­

당신이 쇼핑 한 경우 컴퓨터 에, 당신은 단어를 들었다 "캐시를." 최신 컴퓨터에는 L1 및 L2 캐시가 모두 있으며 현재 많은 컴퓨터에는 L3 캐시도 있습니다. 당신은 또한 "그 셀러론 칩을 사지 마십시오. 캐시가 없습니다!"와 같은 선의의 친구로부터 주제에 대한 조언을 받았을 수도 있습니다.

캐싱은 다양한 형태로 모든 컴퓨터에 나타나는 중요한 컴퓨터 과학 프로세스임이 밝혀졌습니다. 메모리 캐시, 하드웨어 및 소프트웨어 디스크 캐시, 페이지 캐시 등이 있습니다. 가상 메모리 는 캐싱의 한 형태이기도 합니다. 이 기사에서는 캐싱이 왜 그렇게 중요한지 이해할 수 있도록 캐싱을 탐색합니다.

내용물
  1. 간단한 예: 캐시 전
  2. 간단한 예: 캐시 후
  3. 컴퓨터 캐시
  4. 캐싱 하위 시스템
  5. 캐시 기술
  6. 참조 지역

간단한 예: 캐시 전

캐싱컴퓨터 의 메모리 하위 시스템을 기반으로 하는 기술 입니다. 캐시의 주요 목적은 컴퓨터의 가격을 낮게 유지하면서 컴퓨터를 가속화하는 것입니다. 캐싱을 사용하면 컴퓨터 작업을 더 빠르게 수행할 수 있습니다.

캐시 시스템의 기본 개념을 이해하기 위해 사서를 사용하여 캐싱 개념을 설명하는 아주 간단한 예제부터 시작하겠습니다. 책상 뒤에 있는 사서를 상상해 봅시다. 그는 당신이 요청한 책을 주기 위해 거기에 있습니다. 단순함을 위해 책을 직접 구할 수 없다고 가정해 봅시다. 읽고 싶은 책을 사서에게 요청해야 하며, 그는 창고(도서관 워싱턴 DC의 의회는 이런 식으로 설정됩니다). 먼저 캐시가 없는 사서부터 시작하겠습니다.

첫 번째 고객이 도착합니다. 그는 책 Moby Dick 을 요구합니다 . 사서는 창고에 들어가서 책을 받고 카운터로 돌아와서 고객에게 책을 줍니다. 나중에 클라이언트는 책을 반환하기 위해 돌아옵니다. 사서는 책을 가져와서 보관실에 반납합니다. 그런 다음 그는 다른 고객을 기다리는 카운터로 돌아갑니다. 다음 고객이 Moby Dick을 요청한다고 가정해 보겠습니다 (당신은 그것이 오는 것을 보았습니다...). 그런 다음 사서는 최근에 취급한 책을 가져와 고객에게 주기 위해 창고로 돌아가야 합니다. 이 모델에서 사서는 자주 요청되는 매우 인기 있는 책을 포함하여 모든 책을 가져오기 위해 완전한 왕복 여행을 해야 합니다. 사서의 성과를 향상시킬 수 있는 방법이 있습니까?

예, 방법이 있습니다 . 사서 에게 캐시 를 넣을 수 있습니다 . 다음 섹션에서는 이와 동일한 예를 살펴보겠지만 이번에는 사서가 캐싱 시스템을 사용할 것입니다.

간단한 예: 캐시 후

사서에게 10권의 책을 저장할 수 있는 배낭을 주자. 이 책가방에 그는 클라이언트가 그에게 반환한 책을 최대 10장까지 넣을 것입니다. 앞의 예를 사용하지만 이제 새롭고 향상된 캐싱 사서를 사용하겠습니다.

하루가 시작됩니다. 사서의 배낭이 비어 있습니다. 첫 번째 클라이언트가 도착하여 Moby Dick을 요청합니다 . 여기에는 마법이 없습니다. 사서는 책을 가져오기 위해 창고로 가야 합니다. 그는 그것을 클라이언트에게 줍니다. 나중에 클라이언트는 도서관을 반납하고 사서에게 책을 돌려줍니다. 책을 반납하기 위해 창고로 돌아가는 대신, 사서는 책을 책가방에 넣고 거기에 서 있습니다(먼저 가방이 가득 찼는지 확인합니다. 자세한 내용은 나중에 설명합니다). 다른 클라이언트가 도착하여 Moby Dick을 요청합니다 . 보관실로 가기 전에 사서는 이 책이 그의 배낭에 있는지 확인합니다. 그는 그것을 찾습니다! 그가 해야 할 일은 책가방에서 책을 꺼내 고객에게 주는 것뿐입니다. 창고로 이동하지 않아도 되므로 고객에게 보다 효율적으로 서비스를 제공할 수 있습니다.

클라이언트가 캐시(백팩)에 없는 타이틀을 요청하면 어떻게 됩니까? 이 경우, 사서는 가방에서 책을 먼저 찾는 데 시간이 걸리기 때문에 캐시가 있는 경우 캐시가 없는 경우보다 효율성이 떨어집니다. 캐시 설계의 과제 중 하나는 캐시 검색의 영향을 최소화하는 것이며 최신 하드웨어는 이 시간 지연을 거의 0으로 줄였습니다. 우리의 간단한 사서 예에서도 캐시를 검색하는 대기 시간(대기 시간)은 창고로 다시 걸어가는 시간에 비해 너무 작아 관련이 없습니다. 캐시는 작고(책 10권), 놓친 것을 알아차리는 데 걸리는 시간은 창고로 이동하는 데 걸리는 시간의 극히 일부에 불과합니다.

이 예에서 캐싱에 대한 몇 가지 중요한 사실을 볼 수 있습니다.

  • 캐시 기술은 느리지만 더 큰 메모리 유형을 가속화하기 위해 더 빠르지만 더 작은 메모리 유형을 사용하는 것입니다.
  • 캐시를 사용할 때 캐시에 항목이 있는지 확인해야 합니다. 있는 경우 캐시 적중 이라고 합니다 . 그렇지 않은 경우 캐시 미스 라고 하며 컴퓨터는 더 크고 느린 메모리 영역에서 왕복할 때까지 기다려야 합니다.
  • 캐시에는 더 큰 저장 영역보다 훨씬 작은 최대 크기가 있습니다.
  • 여러 계층의 캐시를 가질 수 있습니다. 사서의 예에서 작지만 빠른 메모리 유형은 배낭이고 창고는 더 크고 느린 메모리 유형을 나타냅니다. 이것은 1레벨 캐시입니다. 카운터 뒤에 100권의 책을 담을 수 있는 선반으로 구성된 또 다른 캐시 레이어가 있을 수 있습니다. 사서는 배낭, 선반, 창고를 차례로 확인할 수 있습니다. 이것은 2단계 캐시가 됩니다.

컴퓨터 캐시

컴퓨터는 아주 작은 단위로 시간을 측정하는 기계입니다. 마이크로프로세서 가 주 메모리( RAM )에 액세스 할 때 약 60나노초(600억분의 1초)에 액세스합니다. 그것은 꽤 빠르지만 일반적인 마이크로프로세서보다 훨씬 느립니다. 마이크로프로세서는 2나노초만큼 짧은 주기 시간을 가질 수 있으므로 마이크로프로세서에게 60나노초는 영원처럼 보입니다.

마더보드에 작지만 매우 빠른(약 30나노초) 특수 메모리 뱅크를 구축하면 어떻게 될까요? 이는 이미 주 메모리 액세스보다 2배 빠릅니다. 이를 레벨 2 캐시 또는 L2 캐시 라고 합니다 . 더 작지만 더 빠른 메모리 시스템을 마이크로프로세서의 칩에 직접 구축한다면 어떻게 될까요? 그렇게 하면 이 메모리는 메모리 버스의 속도가 아니라 마이크로프로세서의 속도로 액세스됩니다. 그건의 L1 캐시 233 - 메가 헤르츠에서 (메가 헤르츠) 펜티엄 3.5 배 빠르게 두 배 빠른 메인 메모리에 대한 액세스보다 L2 캐시보다이다.

일부 마이크로프로세서에는 칩에 두 가지 수준의 캐시가 내장되어 있습니다. 이 경우 마더보드 캐시(마이크로프로세서와 메인 시스템 메모리 사이에 존재하는 캐시)는 레벨 3 또는 L3 캐시가 됩니다.

컴퓨터에는 많은 하위 시스템이 있습니다. 성능을 향상시키기 위해 그들 사이에 캐시를 둘 수 있습니다. 여기 예가 있습니다. 우리는이 마이크로 프로세서 (컴퓨터에서 가장 빠른 일을). 그런 다음 하드 디스크CD-ROM 과 같은 더 느린 주변 장치의 캐시로 사용할 수 있는(자주 사용되는) 주 메모리를 캐시하는 L2 캐시를 캐시하는 L1 캐시가 있습니다 . 하드 디스크는 더 느린 매체인 인터넷 연결을 캐시하는 데에도 사용됩니다.

캐싱 하위 시스템

귀하의 인터넷 연결은 컴퓨터에서 가장 느린 링크입니다. 따라서 브라우저(Internet Explorer, Netscape, Opera 등)는 하드 디스크를 사용하여 HTML 페이지 를 저장하고 디스크 의 특수 폴더에 저장합니다. HTML 페이지를 처음 요청하면 브라우저가 이를 렌더링하고 그 사본도 디스크에 저장됩니다. 다음에 이 페이지에 대한 액세스를 요청할 때 브라우저는 인터넷에 있는 파일의 날짜가 캐시된 날짜보다 최신인지 확인합니다. 날짜가 같으면 브라우저는 인터넷에서 다운로드하는 대신 하드 디스크에 있는 날짜를 사용합니다. 이 경우 작지만 빠른 메모리 시스템은 하드 디스크이고 크고 느린 메모리 시스템은 인터넷입니다.

캐시는 주변 장치에 직접 구축할 수도 있습니다 . 최신 하드 디스크는 약 512 킬로바이트의 빠른 메모리와 함께 제공되며 하드 디스크 에 유선으로 연결되어 있습니다. 컴퓨터는 이 메모리를 직접 사용하지 않습니다. 하드 디스크 컨트롤러는 사용합니다. 컴퓨터의 경우 이러한 메모리 칩이 디스크 자체입니다. 컴퓨터가 하드 디스크에서 데이터를 요청할 때 하드 디스크 컨트롤러는 하드 디스크의 기계적 부분(메모리에 비해 매우 느림)을 이동하기 전에 이 메모리를 확인합니다. 캐시에서 컴퓨터가 요청한 데이터를 찾으면 실제로 디스크 자체의 데이터에 액세스하지 않고 캐시에 저장된 데이터를 반환하여 많은 시간을 절약합니다.

시도해 볼 수 있는 실험이 있습니다. 컴퓨터 는 주 메모리와 함께 플로피 드라이브 를 캐시 하고 실제로 발생하는 것을 볼 수 있습니다. 플로피에서 대용량 파일에 액세스합니다. 예를 들어 텍스트 편집기에서 300KB 텍스트 파일을 엽니다. 처음으로 플로피의 불이 켜지는 것을 보고 기다리게 될 것입니다. 플로피 디스크는 매우 느리기 때문에 파일을 로드하는 데 20초가 걸립니다. 이제 편집기를 닫고 동일한 파일을 다시 엽니다. 두 번째(30분을 기다리거나 두 시도 사이에 많은 디스크 액세스를 수행하지 않음)에서는 표시등이 켜지지 않고 기다리지 않을 것입니다. 운영 체제플로피 디스크의 메모리 캐시를 확인하고 원하는 것을 찾았습니다. 따라서 20초를 기다리는 대신 처음 시도했을 때보다 훨씬 빠르게 메모리 하위 시스템에서 데이터를 찾았습니다(플로피 디스크에 한 번 액세스하는 데 120밀리초가 걸리는 반면 주 메모리에 한 번 액세스하는 데 약 60나노초가 걸립니다. 더 빠르게). 하드 디스크에서 동일한 테스트를 실행할 수도 있지만 너무 느리기 때문에 플로피 드라이브에서 더 분명합니다.

전체에 대한 큰 그림을 제공하기 위해 다음은 일반적인 캐싱 시스템 목록입니다.

  • L1 캐시 - 전체 마이크로프로세서 속도로 메모리 액세스(10나노초, 4킬로바이트 ~ 16킬로바이트 크기)
  • L2 캐시 - SRAM 유형의 메모리 액세스 (약 20~30나노초, 128~512KB 크기)
  • 메인 메모리 - 타입의 메모리 액세스 RAM (약 60 나노초 32 메가 바이트 크기 128 메가 바이트)
  • 하드 디스크 - 기계식, 느림(약 12밀리초, 1GB ~ 10GB 크기)
  • 인터넷 - 엄청나게 느림(1초에서 3일 사이, 크기 제한 없음)

보시다시피 L1 캐시는 L2 캐시를 캐시하고, 이는 주 메모리를 캐시하고 디스크 하위 시스템 등을 캐시하는 데 사용할 수 있습니다.

캐시 기술

이 시점에서 묻는 일반적인 질문 중 하나는 "컴퓨터의 모든 메모리를 L1 캐시와 동일한 속도로 실행하여 캐싱이 필요하지 않은 이유는 무엇입니까?"입니다. 그것은 효과가 있지만 엄청나게 비쌀 것입니다. 캐싱의 배경은 적은 양의 값비싼 메모리를 사용하여 더 느리고 저렴한 많은 양의 메모리 속도를 높이는 것입니다.

컴퓨터를 설계할 때 목표는 마이크로프로세서가 최대한 저렴하게 최대 속도로 실행되도록 하는 것입니다. 500MHz 칩은 1초에 5억 사이클(2나노초마다 한 사이클)을 거칩니다. L1 및 L2 캐시가 없으면 주 메모리에 액세스하는 데 60나노초가 소요되거나 메모리에 액세스하는 데 약 30회 낭비됩니다.

생각해보면 상대적으로 적은 양의 메모리가 훨씬 더 많은 양의 메모리 사용을 최대화할 수 있다는 것은 놀라운 일입니다. 64MB RAM을 캐시하는 256KB L2 캐시를 생각해 보십시오. 이 경우 256,000바이트는 64,000,000바이트를 효율적으로 캐시합니다. 왜 효과가 있습니까?

컴퓨터 과학 에는 참조의 지역성(locality of reference) 이라는 이론적 개념이 있습니다 . 이는 상당히 큰 프로그램에서 한 번에 작은 부분만 사용됨을 의미합니다. 이상하게 보일 수 있지만 참조의 지역성은 대부분의 프로그램에서 작동합니다. 실행 파일의 크기가 10MB라도 해당 프로그램의 소수 바이트만 한 번에 사용되며 반복률이 매우 높습니다. 다음 페이지에서는 참조 지역에 대해 자세히 알아볼 것입니다.

참조 지역

참조의 지역성이 작동하는 이유를 알아보기 위해 다음 의사 코드를 살펴보겠습니다( 실제로 들어가 려면 C 프로그래밍 작동 방식 참조 ).

화면에 출력 « 1에서 100 사이의 숫자를 입력하십시오 »
사용자의 입력 읽기
변수 X에 사용자의 값 입력
변수 Y에 값 100 입력
변수 Z에 값 1을 입력합니다.
루프 Y 횟수
   Z를 X로 나누기
   나눗셈의 나머지 = 0인 경우
      그런 다음 출력 « Z는 X의 배수 »입니다.
   Z에 1 더하기
루프로 돌아가기
끝

이 작은 프로그램은 사용자에게 1에서 100 사이의 숫자를 입력하도록 요청합니다. 사용자가 입력한 값을 읽습니다. 그런 다음 프로그램은 1에서 100 사이의 모든 숫자를 사용자가 입력한 숫자로 나눕니다. 나머지가 0(모듈로 나누기)인지 확인합니다. 그렇다면 프로그램은 1에서 100 사이의 모든 숫자에 대해 "Z는 X의 배수입니다"(예: 12는 6의 배수)를 출력합니다. 그런 다음 프로그램이 종료됩니다.

컴퓨터 프로그래밍에 대해 잘 알지 못하더라도 이 프로그램의 11줄에서 루프 부분(7~9줄)이 100번 실행 된다는 것은 이해하기 쉽습니다 . 다른 모든 행은 한 번만 실행됩니다. 7~9행은 캐싱으로 인해 훨씬 ​​더 빠르게 실행됩니다.

이 프로그램은 매우 작고 가장 작은 L1 캐시에 완전히 들어갈 수 있지만 이 프로그램이 거대하다고 가정해 보겠습니다. 결과는 동일하게 유지됩니다. 프로그래밍할 때 루프 내에서 많은 작업이 수행됩니다. 워드 프로세서는 입력을 기다리고 화면에 표시하는 데 95%의 시간을 보냅니다. 워드 프로세서 프로그램의 이 부분은 캐시에 있습니다.

이 95% 대 5% 비율(대략)은 참조 지역성이라고 하며 캐시가 매우 효율적으로 작동하는 이유입니다. 이러한 작은 캐시가 대용량 메모리 시스템을 효율적으로 캐시할 수 있는 이유이기도 합니다. 모든 곳에서 가장 빠른 메모리로 컴퓨터를 구성하는 것이 왜 가치가 없는지 알 수 있습니다. 적은 비용으로 이러한 효율성의 95%를 제공할 수 있습니다.

캐싱 및 관련 주제에 대한 자세한 내용은 다음 페이지의 링크를 확인하십시오.

더 많은 정보

관련 기사

  • 가상 메모리 작동 방식
  • 컴퓨터 메모리 작동 방식
  • 컴퓨터 메모리 퀴즈
  • 컴퓨터 메모리 이미지 갤러리
  • C 프로그래밍 작동 방식
  • 마이크로프로세서의 작동 방식
  • 하드 디스크 작동 방식
  • 운영 체제 작동 방식
  • BIOS 작동 방식
  • PC 작동 방식
  • 펜티엄과 셀러론 프로세서의 차이점은 무엇입니까?

더 좋은 링크

  • PC 가이드: 캐시의 "계층"
  • Webopedia: 캐시
  • 캐시의 기초
  • 자신만의 메모리 내 데이터 캐시 구축 - PDF
  • 운영 체제 커널 기능의 캐싱 모델