SW 사관학교 정글(Jungle)/컴퓨터 시스템(CSAPP)

[CSAPP]1-5, 1-6 캐시와 저장장치 계층구조

jinsang-2 2024. 8. 27. 19:09

https://jinsang-2.tistory.com/76

 

[CSAPP]1-2,1-3 컴파일 시스템

#inclue int main(){ printf("hello, world\n"); return 0;}hello.c를 시스템에서 실행시키기 위해 저급 기계어 인스트럭션들로 번역되어야 한다!!컴파일 시스템 = 전처리기 + 컴파일러 + 어셈블러 + 링커Pre-processor:

jinsang-2.tistory.com

앞에서 살펴 봤듯이, 시스템이 정보를 한 곳에서 다른 곳으로 이동시키는 일에 많은 시간을 보낸다.

 

데이터 복사과정

1. 기계어 인스트럭션

  • 프로그램의 기계어 인스트럭션들은 하드디스크에 저장되어 있다.
  • 프로그램이 로딩되면 디스크의  프로그램이 메인메모리로 복사된다.
  • 프로세서가 프로그램을 실행하면 인스트럭션들이 메인 메모리에서 프로세서로 복사된다.
  • 연산과정이 끝난 정보는 프로세서에서 디스플레이 장치로 복사된다.

2."hello, world\n" 데이터 스트링

  • 처음에는 디스크에 저장되어 있다.
  • 메인 메모리로 복사된다.
  • 디스플레이 장치로 복사된다.

물리적인 시간법칙

속도

  • 상대적으로 더 큰 저장장치 : Slow
  • 상대적으로 더 작은 장치 : Fast

또한 속도가 빠른 장치일수록 당연히 비싸다..

● 디스크 드라이브가 메인 메모리에 비해 1,000배 더 크지만, 프로세서가 디스크에서 1워드의 데이터를 읽어들이는 데 걸리는 시간은 메모리에서 보다 천만 배 더 오래 걸릴 수 있다.

● 레지스터 파일은 수백바이트의 정보를 저장하는 반면, 메인 메모리는 몇십억개의 바이트를 저장한다.
하지만 프로세서는 메모리보다 레지스터 파일의 데이터를 100배 빨리 읽을 수 있다.

 


이러한 프로세서-메모리 간 격차는 지속적으로 증가하고 있다.
메인 메모리를 더 빠르게 동작하도록 만드는 것보다, 프로세서를 더 빨리 동작하도록 만드는 것이 더 쉽고 비용이 적게 든다.

👉 이에 대응하기 위해 캐시 메모리를 활용한다.

캐시

시스템 설계자는 보다 작고 빠른 캐시 메모리라고 부르는 저장장치를 고안하여, 
프로세서가 단기간에 필요로 할 가능성이 높은 정보를 임시로 저장할 목적으로 사용한다.

 

L1캐시 & L2캐시

  • 프로세서 칩 내에 들어있는 L1캐시는 대략 수천 바이트의 데이터를 저장하고, 레지스터 파일만큼 빠른 속도로 액세스 할 수있다.
  • 좀 더 큰 L2캐시는 수백 킬로바이트에서 수 메가 바이트의 용량을 가지며, 프로세서와 전용 버스를 통해 연결된다.
  • 프로세서가 L2캐시 를 액세스할 때 L1캐시 보다 5배정도 느리지만, 그래도 여전히 메인 메모리를 액세스할 때보다는 5배에서 10배까지 더 빠르다.
  • L1캐시  L2캐시는 SRAM(Static Random Access Memory)라는 하드웨어 기술을 이용해 구현한다.
  • (DRAM, SRAM 참고)
    • DRAM이 용량은 크지만 느린 메인 메모리에 사용되고, SRAM은 용량은 작지만 빠른 캐시 메모리에 사용되는 것의 가장 큰 이유는 구조적 차이, 즉 capacitor의 유무 때문이라고 한다.
    • DRAM은 특정 간격(~64msec)마다 모든 DRAM 메모리 cell을 다시 읽고 쓰기를 반복해야 하기에 memory operation (읽고 쓰기)의 latency가 길어진다고 한다. 따라서 캐시와 register로 사용하는 것에 적합하지 않다고 한다. SRAM은 capacitor를 사용하지 않아 refresh가 필요없는 만큼, 캐시 메모리나 register file로 사용될 수 있다고 한다. 다만 6 transistor가 사용되기에 1 transistor + 1 capacitor를 사용하는 DRAM 보다 비싸고, 차지하는 공간이 크기에 큰 용량으로 설계하기 쉽지 않다고 한다.이러한 아키텍처의 차이에 의해 제조사들은 DRAM의 경우 용량 확대를 목표로, SRAM은 access latency 향상을 목표로 연구가 진행되고 있다고 한다

L3 캐시

  • 보다 새롭고 강력한 시스템은 심지어 3단계의 캐시를 갖는 경우도 있다.
    (L1, L2, L3)

캐시 시스템의 아이디어

  • 캐시 시스템의 이면에 깔려 있는 아이디어는, 프로그램이 좁은 영역의 코드와 데이터를 액세스하는 경향인 지역성(locality)을 활용하여 시스템이 매우 크고 빠른 메모리 효과를 얻을 수 있다는 것이다.
  • 자주 액세스할 가능성이 높은 데이터를 캐시가 보관하도록 설정하면 빠른 캐시를 이용해서 대부분의 메모리 작업을 수행할 수 있게 된다.
캐시의 지역성: 데이터의 접근이 시간적 혹은 공간적으로 가깝게 일어나는 것을 의미합니다. 시간지역성과 공간지역성이 있다.

시간 지역성: 특정 데이터가 한번 접근되었을 경우, 가까운 미래에 또 한번 데이터에 접근할 가능성이 높은 것을 말한다. 캐시를 사용하기에 적합하다.

공간 지역성: 특정 데이터와 가까운 주소가 순서대로 접근되었을 경우를 말한다. 한 메모리 주소에 접근할 때 그 주소뿐 아니라 해당 블록을 전부 캐시로 가져와 메모리를 오름차순이나 내림차순으로 접근하게 되면 캐시의 효율성이 크게 올라간다.

 

💡캐시 메모리를 이해하는 응용 프로그래머는 캐시를 활용하여 자신의 프로그램 성능을 10배이상 개선할 수 있다.

 

메모리의 계층구조

계층구조: 전체 시스템이나 구성요소를 여러 계층으로 나누어 구성하는 것

 

캐시 메모리 같은 보다 작고 빠른 저장장치를 프로세서와 좀 더 크고 느린 장치(ex 메인 메모리) 사이에 끼워 넣는 개념은 일반적으로 널리 받아들여지고 사용되고 있다.

  • 모든 컴퓨터의 메모리 계층은 다음 그림과 같은 구조로 구성되어 있다.
  • 계층의 꼭대기부터 맨 밑바닥까지 이동할수록 저장장치들은 느리고, 용량이 크고, 가격이 낮아진다.

해당 메모리 계층구조를 사용하는 이유는 한 레벨의 저장장치가 다음 하위레벨 저장장치의 캐시 역할을 한다는 것이다. L1은 L2의 캐시 역할, L2는 L3의 캐시 역할, L3는 메인 메모리와 디스크의 캐시 역할을 수행하는 식이다. 여러개의 캐시를 활용한 계층구조를 사용하여 임시 정보를 저장해 성능을 개선시킬 수 있기 때문에 캐시를 사용한다.

프로세서 칩 내부에 들어있는 L1 캐시는 대략 수천 바이트의 데이터를 저장할 수 있으며, 거의 레지스터 파일만큼 빠른 속도로 엑세스할 수 있다.
이보다 좀 더 큰 L2 캐시는 수백 킬로바이트에서 수 메가바이트의 용량을 가지며 전용 버스를 통해 연결된다.
프로세서가 L2 캐시를 엑세스할 때 L1 캐시보다 5배정도 느리지만, 메인 메모리에 엑세스할 때 보다는 10배 빠르다.

 

레벨

  • 레지스터 파일 : 계층구조의 최상위인 레벨 0 (L0)
  • 메인 메모리: 레벨 4

캐시

  • 메모리 계층구조의 주요 아이디어는 한 레벨의 저장장치가 다음 하위레벨 저장장치의 캐시 역할을 한다는 것이다.
  • L1 L2의 캐시는 각각 L2와 L3의 캐시이다.
  • L3 캐시는 메인 메모리의 캐시이고, 디스크의 캐시 역할을 한다.
  • 일부 분산 파일시스템을 가지는 네트워크 시스템에서 로컬 디스크
    다른 시스템의 디스크에 저장된 데이터의 캐시 역할을 수행한다.
  • 로컬 디스크들은 원격 네트워크 서버에서 파일들을 가져와 보관한다.

💡성능을 개선하기 위해서 다른 종류의 캐시들을 활용할 수 있듯이, 전체 메모리 계층 구조에 대한 지식을 활용할 수 있다.