메모리 구조
메모리 구조란 메모리를 필요에 따라 여러 가지 단계로 나누어 둔 구조를 의미합니다.
이 구조는 CPU가 메모리에 더 빨리 접근하기 위해서 만들어졌습니다.
더 상세한 목적은 'virtual memory'를 제공하기 위함인데 virtual memory란 사용자가 메모리 계층 구조로 인해 high level 메모리의 속도 + low level에서 메모리의 사이즈와 같이 각 계층의 이점만을 사용하는 것처럼 느끼게 하는 착각을 일으키는 기술입니다.
이 virtual memory의 가장 대표적인 예가 바로 CPU안에 존재하는 Cache입니다.
Cache
캐시는 Sram의 빠른 속도와 Dram의 크고 싸다는 장점만을 사용자에게 제공하는 착각을 주는 virtual memory입니다.
이는 실제로 CPU와 메모리간 존재하는 메모리 버스의 이용을 줄이는 역할을 합니다.
cpu 뿐만 아니라 browser cache, network buffer cache 등이 존재합니다.
chace란 보통 어느 메모리 주소에 접근할 때 그 주소와 가까이 있는 주소들 즉, 나중에 참조할 가능성이 큰 메모리 주소들을 캐시라는 공간에 저장해놓는 방식입니다.
how cache work
캐시가 저장하는 메모리 주소는 블록 단위로 저장됩니다.
만약 프로그램이 14번 블록에 존재하는 메모리를 요청했을 때 cache에 14번 블록이 존재하면 메모리 버스에 접근하지 않고 cpu로 바로 그 값을 전달할 수 있습니다. 이 경우를 Hit라고 합니다.
이와 반대로 cpu에서 요청하는 값이 cache에 존재하지 않는 경우를 Miss라고 합니다.
이때 12번 블록의 값을 가져오기 위해 메모리에 접근하고, 12번 블록은 캐시에 저장되어 있던 블록 중 하나를 대신하여 캐시에 나중에 사용될 값으로 저장됩니다.
그렇게 되면 12번 블록이 어떤 블록을 대신할 것인지 결정하는 과정이 필요합니다.
또한 애초에 캐시에 빈 공간이 많다면 어느 공간에 메모리에서 가져오는 블록을 위치시킬지 결정하는 과정도 필요합니다.
이를 결정하는 함수를 mapping fuction이라고 하는데 대표적으로 Fully Associative Mapping, Direct Mapped Mapping, N - way Set Assoiative Mapping 이 있습니다.
Cache write
캐시는 위에서 언급한 장점들이 있지만 캐시와 메모리에 같은 데이터가 존재한다는 일관성 문제가 존재하고,
만약 그 데이터를 업데이터 할 때 캐시와 메모리에 동시에 존재하는 데이터를 둘 다 업데이트해야 한다는 단점이 있습니다.
둘 다 업데이트할 때는 일관성을 유지한다는 장점이 있지만 시스템 버스를 이용하여 메모리까지 업데이트를 해주어 속도가 느립니다. (write through)
물론 캐시만 업데이트한 후에 메인 메모리에 나중에 업데이트하는 방식도 존재하는데, 이는 빠르지만 복잡한 과정이 필요하다는 단점이 있습니다 (write back)
'CS > OS' 카테고리의 다른 글
OS 시스템의 발전 - batch System (0) | 2022.03.24 |
---|---|
CPU와 I/O device (0) | 2022.03.24 |
Interrupt 처리 (0) | 2022.03.21 |
Instruction과 레지스터 (0) | 2022.03.20 |
하드웨어 동작의 이해 (0) | 2022.03.20 |