반응형
✅ 1. 컴퓨터 기억장치 개요
- 컴퓨터 기억장치는 컴퓨터에서 데이터와 명령어를 저장하는 역할을 하는 하드웨어 장치이다.
- 주기억장치는 CPU가 직접 액세스 하여 데이터를 읽고 쓸 수 있는 메모리로, 프로그램 실행에 필요한 데이터와 명령어를 저장한다.
- 보조기억장치는 주기억장치보다 용량이 크고, 비교적 저렴하며, 비휘발성으로 데이터를 저장할 수 있는 기억장치로, 하드디스크, SSD, 플래시 메모리 등이 있다.
- 캐시 메모리는 CPU의 속도를 높이기 위해 CPU와 주기억장치 사이에 위치하여 빠른 액세스 속도를 제공하는 작고 빠른 메모리이다.
- 가상 메모리는 주기억장치가 부족한 경우 하드디스크 등의 보조기억장치를 사용하여 메모리 공간을 확장하는 기술이다.
- 메모리 주소는 각각의 메모리 위치를 식별하기 위한 고유한 값으로, 주소 버스를 통해 전송된다.
- 메모리 버스는 CPU와 메모리 간 데이터와 주소 정보를 전송하는 통로이다.
- DRAM은 주기억장치에 사용되는 가장 일반적인 메모리 유형으로, 비용이 저렴하고 용량이 크다는 장점이 있다.
- SRAM은 캐시 메모리 등 빠른 액세스 속도가 요구되는 곳에 사용되는 메모리로, DRAM보다 빠르지만, 비용이 더 비싸다.
- ROM은 읽기 전용 메모리로, 데이터를 저장하기 위한 고정된 메모리이다.
💡 데이터 액세스 방식
- 직접 액세스(Direct Access) 방식: 데이터를 레코드 단위로 구분하여 각 레코드마다 고유한 주소를 부여하고, 해당 주소를 사용하여 직접 접근한다.
- 순차 액세스(Sequential Access) 방식: 데이터를 연속적으로 저장하고, 처음부터 순서대로 읽는다.
- 색인 액세스(Indexed Access) 방식: 색인을 이용하여 데이터를 검색하고, 해당 데이터가 저장된 레코드를 직접 액세스한다.
- 집합 액세스(Set Access) 방식: 데이터를 집합 단위로 관리하고, 해당 집합의 특정 조건을 만족하는 데이터를 검색한다.
- 랜덤 액세스(Random Access) 방식: 데이터를 저장할 때, 각 레코드에 고유한 주소를 부여하여 해당 주소로 직접 액세스한다.
💡 성능
- 용량(Capacity): 기억장치가 저장할 수 있는 데이터의 양을 나타낸다.
- 접근 시간(Access Time): 데이터에 접근하기 위해 걸리는 시간이다.
- 대역폭(Bandwidth): 기억장치에서 데이터를 읽거나 쓸 수 있는 속도를 의미한다.
- 지속성(Durability): 데이터가 기억장치에 저장된 상태를 유지하는 능력을 나타낸다.
- 가격(Price): 기억장치의 용량, 성능, 지속성 등에 따라 가격이 결정된다.
✅ 3. 캐시 설계 요소
💡 캐시라인 사상 Cache Line Mapping
- 캐시라인(Cache Line): 캐시 메모리에서 메인 메모리로 가져오거나, 메인 메모리에서 캐시 메모리로 옮겨지는 데이터의 단위이다.
- 캐시라인 사상(Cache Line Mapping): 캐시 메모리의 블록을 메인 메모리의 블록에 대응시키는 방법 중 하나이다.
- 직접 사상(Direct Mapping): 캐시의 한 블록이 메인 메모리의 한 블록에만 대응되는 방식이다.
- 집합 사상(Set-Associative Mapping): 캐시의 한 블록이 메인 메모리의 여러 블록 중 하나에 대응될 수 있는 방식이다.
- 전체 사상(Fully Associative Mapping): 캐시의 한 블록이 메인 메모리의 어떤 블록에도 대응될 수 있는 방식이다.
💡 교체 알고리즘 Replacement Algorithm
- 캐시 메모리에 캐시 라인을 적재할 때, 캐시 라인의 용량이 부족해지면 기존에 존재하는 라인 중 어느 것을 교체할지 결정하는 알고리즘이다.
- LRU(Least Recently Used): 가장 오래 전에 사용된 캐시 라인을 교체한다.
- FIFO(First In First Out): 가장 먼저 들어온 캐시 라인을 교체한다.
- LFU(Least Frequently Used): 가장 적게 사용된 캐시 라인을 교체한다.
- Random: 무작위로 캐시 라인을 선택해 교체한다.
💡 쓰기 정책
- 캐시 메모리에 데이터를 쓸 때 메모리와 어떻게 상호작용할지를 결정하는 방식이다.
- 쓰기 강제(Write-through):
- 데이터를 캐시에 쓰는 동시에 메모리에도 즉시 쓰는 방식이다.
- 캐시와 메모리의 일관성을 유지할 수 있지만 쓰기 연산이 느려질 수 있다.
- 쓰기 지연(Write-back):
- 캐시에 데이터를 쓸 때는 메모리에 바로 쓰지 않고 캐시에만 쓰고 변경된 데이터가 교체될 때 메모리에 쓰는 방식이다.
- 쓰기 연산이 빠르지만 캐시와 메모리의 일관성을 유지하기 위해 추가적인 작업이 필요하다.
- 쓰기 결합(Write-combining):
- 쓰기 지연과 유사하게 작동하지만, 연속된 쓰기 작업이 있을 경우 버퍼링하여 한 번에 메모리에 쓰는 방식이다.
- 응용 프로그램에서 대규모 데이터를 한 번에 쓸 때 효과적이다.
💡 라인 크기
- 캐시의 한 라인에 저장되는 데이터의 크기를 말한다.
- 라인 크기가 클수록 캐시에서 데이터를 가져오는 효율이 좋아지지만, 한 번에 가져올 수 있는 데이터의 양이 적어질 수 있다.
- 라인 크기가 작을수록 한 번에 가져올 수 있는 데이터의 양이 많아지지만, 캐시에서 데이터를 가져오는 효율이 떨어질 수 있다.
- 적절한 라인 크기는 시스템의 특성과 용도에 따라 다르며, 일반적으로 32~128바이트가 사용된다.
💡 다단계 캐시
- CPU와 주기억장치 사이에 여러 개의 캐시를 두는 기법이다.
- 캐시의 계층이 높아질수록 크기가 작아지고 속도가 빨라진다.
- 다단계 캐시는 적중률을 높이고 캐시 미스(miss) 시 발생하는 대역폭을 감소시켜 전체 시스템 성능을 향상시킨다.
- 2단계 캐시 구조
- L1 캐시가 더 작고 빠르며, L2 캐시는 L1 캐시보다 더 크고 느리다.
- L1 캐시에서 캐시 미스가 발생하면 L2 캐시에서 해당 데이터를 찾는다. 이때, L2 캐시에 해당 데이터가 없으면 주기
- 장치에서 해당 데이터를 가져와 L2 캐시와 L1 캐시에 저장한다.
💡 분리 캐시 Split Cache
- L1 캐시를 목적에 따라 분리하여 사용하는 방식이다.
- 목적에 따라 L1 캐시를 명령어 캐시와 데이터 캐시로 분리한다.
- 분리된 데이터 캐시는 L2 캐시와 공유한다.
- L1 데이터 캐시와 L2 캐시 간의 속도 차이를 줄이기 위한 방법으로 사용된다.
- 분리된 캐시를 사용하여 데이터 캐시의 적중률을 높일 수 있다.
- 분리된 캐시를 사용하면 프로세서의 처리 속도를 높일 수 있다.