베하!
안녕하세요 일단고 팀입니다!
이번 시간에는 저번 메모리구조와 관련되어 추가로 캐시와 레지스터에 대해 알아보겠습니다.
레지스터와 캐시는 많이 들어보았지만 그 차이나 개념을 명확하게 알지 못하는 경우도 많습니다. 그래서 레지스터와 캐시에 대해 이해하는 시간을 가져보겠습니다.
주 또는 보조 기억장치의 흐름 및 속도
위 그림과 같이 Disk부터 Registers까지 데이터가 흘러간다고 먼저 이해하면 좋습니다. 또한 registers로 갈수록 속도가 더 빨라지는 구조입니다.
CPU가 메인 메모리에 있는 데이터를 읽어야 할 때 캐시메모리를 검색합니다. 캐시 메모리에 데이터가 있으면 바로 데이터를 전달하고 없다면 메인 메모리로 부터 데이터를 가져와 cpu에게 전달합니다.
캐시란
캐시는 컴퓨터 시스템의 성능향상을 목적으로 CPU칩 안에 포함되는 작은 메모리입니다. 아주 빠르기 때문에 용량에 비해 가격이 비쌉니다.
보통 캐시는 Memory장치의 데이터를 자주 쓴다 할 때 그 데이터를 캐시에서 가져와 저장해두고 연산을 할 때 마다 해당 데이터를 빠르게 가져와 컴퓨터 시스템에서 성능향상을 이끌고 있습니다.
프로그램 단계에서 직접적으로 읽거나 쓸 수 없고 하드웨어의 메모리 관리 시스템이 내부적으로 제어하고 있습니다.
자주 쓰는 데이터란? - 파레토 법칙
롱테일 법칙은 주목받지 못하는 다수가 핵심적인 소수보다 더 큰 가치를 창출하는 현상을 말합니다.
파레토 법칙이라는 20%가 매출의 80%를 차지한다는 의미와 더불어 인터넷 환경의 발달로 좀 더 자주 보이지 않는 상품들의 진입장벽이 낮아지면서 80%의 상품이 매출 전체의 반을 차지한다는 파레토의 반대의 개념을 가진게 롱테일 법칙입니다.
아래는 롱테일 법칙의 그래프 표현인데 파레토 법칙도 이와 같은 그래프를 사용합니다. 이와 함께 캐시가 저장하는 데이터 기준을 알아보겠습니다.
100번의 데이터 요청중 20번 데이터 요청한게 리소스가 더 크게 잡힌다고 볼 수 있습니다.
80번의 자주 사용하는 데이터는 법칙에 의해 리소스가 더 적기 때문에 크게 문제가 없지만 나머지 20번의 데이터 요청은 리소스가 크기 때문에 이 20%의 기능에 캐시를 이용하여 전체적인 컴퓨터 시스템 처리능력을 올리게 합니다. 이러한 원리를 바탕으로 우리가 ‘자주 쓰는 데이터’라고 표현을 합니다.
참고로 캐시라는 용어는 CPU주변에서만 볼 수 있는게 아님니다. 여러 의미와 여러 장치를 캐시라고 혼용하고 있지만 레지스터와 같이 이야기하기 위해 CPU관련된 캐시를 이야기하고자 합니다.
레지스터란
레지스터는 CPU에 존재하는 다목적 저장공간입니다. 레지스터는 데이터와 명령어를 저장하고 있습니다.
레지스터의 종류는 아주 다양합니다.
- 데이터 레지스터
- cpu가 명령어 처리하는데 필요한 일반 데이터를 임시로 저장하는 범용 레지스터 입니다.
- 주소 레지스터
- 데이터 또는 명령어가 저장된 메모리의 주소를 저장합니다.
- 프로그램 카운터
- 다음에 실행할 명령어의 주소를 저장합니다.
- 명령어 레지스터
- 현재 실행 중인 명령어를 저장합니다.
- 메모리 주소 레지스터
- 메모리 관리자가 접근해야 할 메모리의 주소를 저장합니다.
- 메모리 버퍼 레지스터
- 메모리 관리자가 메모리에서 가져온 데이터를 임시로 저장합니다.
- 프로그램 상태 레지스터
- 연산 결과를 저장합니다.
가 존재합니다.
캐시와 레지스터 차이는?
레지스터와 캐시 모두 CPU 주변에 존재하고 메모리라는 특성때문에 자주 혼용되어 사용하는 경우가 많습니다.
레지스터는 CPU가 일을 처리하기 위해 CPU만의 작업공간으로 말할 수 있습니다.
캐시는 CPU가 일을 처리하는데 있어 자주 사용하는 데이터를 메인 메모리로 부터 미리 읽어와 저장하여 CPU가 빠르게 처리할 수 있는 레지스터에 데이터를 더 빨리 읽게 만듭니다.
캐시는 cpu와 메인 메모리 사이 속도차이로 발생하는 cpu의 유휴시간 또는 병목현상을 줄이기 위한 목적으로 존재합니다.
오늘은 이만 마치겠습니다. 여러분 날씨가 많이 덥고 갑작스러운 비가 와서 다들 지치겠지만 오늘도 화이팅입니다!
'IT KNOWLEDGE' 카테고리의 다른 글
Rancher로 Kubernetes 환경 구축하기 - 클러스터 구축 (0) | 2023.07.21 |
---|---|
HTTP Request, Response 구조 (0) | 2023.07.17 |
Llama Index 실습(OpenAI API 활용) (0) | 2023.07.07 |
Rancher로 Kubernetes 환경 구축하기 - 설치 및 개요 (0) | 2023.07.06 |
Kafka (0) | 2023.06.27 |
댓글