1. Memory Hierachy
01 레지스터
레지스터는 CPU내부에 위치한 저장공간이다. 직접 액세스할 수 있기 때문에 매우 빠르다. 명령어와 데이터를 직접 저장하고 처리하는데 사용한다. 레지스터는 용량이 제한적이기 때문에 데이터를 계속 저장시킬 수 없다. 그러므로 CPU는 데이터를 임시로 레지스터에 저장하고 작업을 수행한 후 필요 없어진 레지스터는 제거된다.
02 캐시 메모리
캐시 메모리도 CPU내부에 존재하는 저장공간이다. 일반적으로 여러 레벨로 구성되며 레지스터와 RAM사이에서 중간단계에서 동작한다. 캐시 메모리에는 CPU명령어, 데이터(CPU가 작업을 수행하는 동안 필요한 데이터), 캐시 라인, 자주 액세스 하는 데이터 등을 저장한다.
캐시 블록
캐시 메모리는 데이터를 효율적으로 관리하기 위해 일정한 크기의 블록으로 나누어져있다. Tag, Index, Offset을 활용하여 원한느 데이터 위치를 찾을 수 있다.
Tag : 메모리 주소의 일부
Index : 캐시의 세트 번호, 캐시에서 데이터를 찾을 때 사용
Offset : 데이터의 위치
03 RAM(Random Access Memeory)
CPU와 별개인 메모리 중 최상위 저장공간이다. 컴퓨터의 주 기억장치로서 컴퓨터 전원이 켜져있는 동안 프로그램들의 모든 데이터와 명령어를 저장된다. RAM에서 Random은 어느 위치에 저장된 데이터든지 접근했을때 동일한 시간이 걸린다는 뜻이다.
2. 캐시메모리, 레지스터, RAM의 상호 작용
01 CPU에서 데이터 요청 및 캐시 컨트롤러에서 주소를 확인
02 캐시 히트(Cache Hit)
캐시 컨트롤러에서 주소를 확인한 다음 해당 데이터가 캐시메모리에 존재하는 경우 캐시 히트가 발생하면서 캐시 메모리 컨트롤러는 데이터를 CPU에 전송한다.
03 캐시 미스(Cache Miss)
캐시메모리에 데이터가 존재하지 않는 경우 캐시 미스가 발생한다. CPU가 RAM으로 데이터를 요청하면 RAM은 해당 데이터를 찾아서 CPU에 전달한다. 이때 RAM은 필요한 데이터를 가지고 있을 수도 있고 보조기억장치로부터 가져와야 할 수도 있다. 동시에 RAM은 이 데이터를 캐시 메모리로 복사하여 전달한다.
캐시 메모리에 데이터를 전달하는 이유
캐시 메모리는 CPU에 가까운 위치에 있으므로 액세스 시간을 단축시킬 수 있고 CPU는 데이터를 연속으로 처리하는 것이 효율적이기 때문이다.
04 데이터 전달
캐시 메모리 컨트롤러는 캐시 메모리에서 데이터를 읽어와 CPU내부의 레지스터에 저장된다. 데이터가 레지스터에 저장되면 CPU는 이후의 연산이나 제어 작업에서 해당 데이터를 활용한다.
'cs공부 > 운영체제' 카테고리의 다른 글
운영체제 - ReaderWriterLockSlim(RWLock), 사용자 정의 Lock구현 해보기 (0) | 2023.06.01 |
---|---|
운영체제 - 제3자에게 부탁하기(AutoResetEvent,Manualresetevent ) (0) | 2023.05.31 |
운영체제 - 커널(Kernel), 커널모드, 사용자모드 (0) | 2023.05.26 |
운영체제 - Backoff(Thread.Sleep(0), Thread.Yield()) (0) | 2023.05.26 |
운영체제 - Semaphore(세마포어), Mutex(뮤텍스) (0) | 2023.05.23 |
댓글