야금야금

#5 컴퓨터 구조 - 캐시 기억장치 본문

SWING/컴퓨터구조

#5 컴퓨터 구조 - 캐시 기억장치

hyk0425 2020. 6. 6. 19:07

캐시 기억장치

: 주기억장치에 저장되어 있는 명령어와 데이터 중의 일부를 임시적으로 복사해서 저장하는 장치

 

특징

- 명령어와 데이터를 저장하고 인출하는 속도가 주기억장치보다 빠름

- 자주 사용되는 명령들을 저장하고 중앙처리장치(CPU)에 빠른 속도로 제공함

- 느리게 동작하는 주기억장치와 빠르게 동작하는 중앙처리장치(CPU) 사이에서 속도 차이를 줄여주는 고속 완충 기억장치

- 캐시 기억장치의 용량에 의해 CPU의 가격이 결정됨

 

 

 

캐시 기억장치가 없는 시스템

① CPU가 명령어와 데이터를 인출하기 위해 주기억장치에 접근

② 주기억장치에서 명령어나 필요한 정보를 획득하여 CPU 내의 명령어 레지스터 등에 저장

 

모든 데이터가 주기억장치에 존재하며 처리과정이 느리다

 

 

 

캐시 기억장치가 있는 시스템

: CPU가 명령어 또는 데이터를 인출하기 위해 주기억장치보다 캐시 기억장치에 먼저 접근한다.

해당 명령어가 캐시 기억장치에 존재할 경우를 적중(hit)이라 하고, 해당 명령어가 존재하지 않아 찾지 못했을 경우 실패(miss)라 한다.

 

캐시에 해당 명령어가 존재하여 적중(hit)할 경우 주기억장치에 접근하지 않고 만약 캐시에 해당 명령어가 존재하지 않아 실패(miss)할 경우 주기억장치에서 데이터를 가져와서 캐시에 저장한다. 그 후 캐시에서 중앙처리장치로 명령어를 가져온다.

 

 

캐시 기억장치가 있는 시스템 - miss

 

예를 들어, CPU가 1000번지의 워드(=CPU가 한 번에 처리할 수 있는 명령어의 단위)가 필요한 경우 우선 캐시 기억장치가 1000번지의 워드를 저장하고 있는지를 검사하고 1000번지 워드가 캐시 기억장치 내에 존재하지 않는다면 실패 상태가 된다.

 

 

실패 상태 처리 방법

 

① 주기억장치에서 필요한 정보를 획득하여 캐시기억장치에 전송

② 캐시 기억장치는 얻어진 정보를 다시 중앙처리장치(CPU)로 전송

 

 

캐시 기억장치가 있는 시스템 - hit

 

예를 들어, CPU가 1002번지의 워드가 필요한 경우 우선 캐시 기억장치가 1002번지의 워드를 저장하고 있는지를 검사하고 1002번지 워드가 캐시 기억장치 내에 존재한다면 적중 상태가 된다. 그 후, 캐시 기억장치에서 얻어진 정보를 중앙처리장치로 전송한다.

 

 

 

캐시 기억장치 동작 원리

 

 

캐시 기억장치의 적중률

적중률 : 캐시 기억장치의 성능을 나타내는 속도 (max = 1)

적중률이 높을수록 데이터 액세스 속도가 향상됨

Taverage : 주기억장치와 캐시 기억장치에서 데이터를 인출하는데 소요되는 평균 기억장치 접근 시간

Tmain : 주기억장치 접근 시간

Tcache : 캐시 기억장치 접근 시간

Hhit_ratio : 적중률

 

Taverage = Hhit_ratio * Tcache + (1 - Hhit_ratio) * Tmain

 

ex) Tcache = 50ns, Tmain = 400ns 일 때, 적중률을 증가시키면서 기억장치 접근시간을 계산하면,

 

적중률 70%의 경우 : Taverage = 0.7 * 50ns + 0.3 * 400ns = 155ns

적중률 80%의 경우 : Taverage = 0.8 * 50ns + 0.2 * 400ns = 120ns

적중률 90%의 경우 : Taverage = 0.9 * 50ns + 0.1 * 400ns = 85ns

적중률 95%의 경우 : Taverage = 0.95 * 50ns + 0.05 * 400ns = 67.5ns

적중률 99%의 경우 : Taverage = 0.99 * 50ns + 0.01 * 400ns = 53.5ns

 

 

 

캐시 기억장치의 설계

주기억장치와 캐시 기억장치 간의 정보 공유

<캐시 기억장치 설계시 고려할 요소>

 

① 캐시 기억장치의 크기(Size)

② 인출 방식(fetch algorithm)

③ 사상 함수(Mapping function)

④ 교체 알고리즘(Replacement algorithm)

⑤ 쓰기 정책(Write policy)

⑥ 블록 크기(Block size)

⑦ 캐시 기억장치의 수(Number of caches)

 

 

 

 

캐시 기억장치의 크기(Size)

- 캐시 기억장치의 크기가 클수록, 적중률은 높아지나 평균 접근 시간과 비용이 증가함

- 적중률을 향상시키고 평균 접근 시간에 대한 저하를 막는 최적의 크기 결정이 필요함

- 연구 결과에 의하면, 캐시 기억장치의 크기로 1K ~ 128K 단어(word)가 최적이라고 알려져 있음

 

 

 

② 인출 방식(fetch algorithm)

: 주기억장치에서 캐시 기억장치로 명령어나 데이터 블록을 인출해 오는 방식

 

- 요구 인출(Demand Fetch) 방식 : CPU가 현재 필요한 정보만을 주기억장치에서 블록 단위로 인출해 오는 방식

- 선인출(Prefetch) 방식 : CPU가 현재 필요한 정보 외에도 앞으로 필요할 것으로 예측되는 정보를 미리 인출하여 캐시 기억장치에 저장하는 방식, 주기억장치에서 명령어나 데이터를 인출할 때 필요한 정보와 이웃한 위치에 있는 정보들을 함께 인출하여 캐시에 적재하는 방식

 

 

 

③ 사상 함수(Mapping function)

주기억장치의 구조

-단어(word) : 하나의 주소 번지에 저장되는 데이터의 단위

-블록(block) : k개의 단어로 구성됨

 

캐시 기억장치의 구조

-슬롯(slot) : 데이터 블록이 저장되는 장소

-태그(tag) : 슬롯에 적재된 데이터 블록을 구분해주는 정보

 

사상(mapping)의 개념 : 아래 그림에서와 같이, 주기억장치와 캐시 기억장치 사이에서 정보를 옮기는 것을 사상(mapping)이라고 함

캐시 기억장치의 사상 방법

- 직접 사상(direct mapping) : 아래의 주소변환을 통해 주기억장치의 데이터 블록을 캐시 기억장치에 저장함

 

   주기억장치                               캐시 기억장치

데이터 블록 주소 = 데이터 블록 슬롯번호(주소) + 데이터 블록 태그

 

캐시 기억장치로부터 데이터 블록 인출을 위해서 데이터 블록의 슬롯 번호에 해당하는 슬롯만 검색

 

장점 : 사상 과정이 간단함

단점 : 동일한 슬롯 번호를 갖지만 태그가 다른 데이터 블록들에 대한 반복적인 접근은 적중률을 떨어뜨림

 

ex 1) CPU가 00001번지 블록을 필요로 하는 경우 (1블록 = 1 단어)

 

ex 2) CPU가 00010번지 블록을 필요로 하는 경우 (1블록 = 1 단어)

 

ex 3) CPU가 10001번지 블록을 필요로 하는 경우 (1블록 = 1 단어)

 

ex 4) CPU가 00010번지 블록을 필요로 하는 경우 (1블록 = 1 단어)

 

 

 

 

- 연관 사상(associative mapping)

: 캐시 슬롯 번호에 상관없이, 주기억장치의 데이터 블록을 캐시 기억장치의 임의의 위치에 저장함, 캐시 기억장치로부터 데이터 블록 인출을 위해서 모든 슬롯에 대한 검색이 필요함

주소 형식

   주기억장치           캐시 기억장치

데이터 블록 주소 = 데이터 블록 태그

 

- 집합 연관 사상(set-associative mapping)

: 직접 사상과 연관 사상 방식을 조합한 방식으로 캐시는 v개의 집합들로 나누어지며, 각 집합들은 k개의 슬롯들로 구성된다. 직접 사상 방식에 의해, v개의 집합들 중에서 하나의 집합을 선택하고 연관 사상 방식에 의해, 선택한 집합 내에 있는 k개의 슬롯 중에서 하나의 슬롯을 선택한다.

    주기억장치                            캐시 기억장치

데이터 블록 주소       = 데이터 블록 집합 번호 + 데이터 블록 태그

 

 

 

 

 

④ 교체 알고리즘(Replacement algorithm)

: 캐시 기억장치의 모든 슬롯이 데이터로 채워져 있는 상태에서 실패일 때, 주기억장치로부터 새로운 데이터 블록을 캐시 기억장치로 옮기기 위해, 캐시 기억장치의 어느 슬롯 데이터를 제거할지를 결정하는 방식

 

- 직접 사상 : 교체 알고리즘이 필요 없음

- 연관 & 집합 연관 사상 : 교체 알고리즘이 필요함

 

종류

- LRU (Least Recently Used): 최소 최근 사용 알고리즘

- LFU (Least Frequently Used): 최소 사용 빈도 알고리즘 

- FIFO (First In First Out): 선입력 선출력 알고리즘

- RANDOM: 랜덤

 

 

 

 

⑤ 쓰기 정책(Write policy)

- 즉시 쓰기(Write-though) 방식: CPU에서 생성되는 데이터 블록을 캐시 기억장치와 주기억장치에 동시에 기록함

 

장점: 데이터의 일관성을 쉽게 보장할 수 있음

단점: 매번 쓰기 동작이 발생할 때마다, 캐시 기억장치와 주기억장치 간 접근이 빈번하게 일어나고 쓰기 시간이 길어짐

 

 

- 나중 쓰기(Write-back) 방식: 캐시 기억장치에 기록한 후, 기록된 블록에 대한 교체가 일어날 때 주기억장치에 기록함

 

장점: 즉시 쓰기 방식과는 달리 주기억장치에 기록하는 동작을 최소화할 수 있음

단점: 캐시 기억장치와 주기억장치의 데이터가 서로 일치하지 않을 수 있음

 

 

 

 

⑥ 블록 크기(Block size)

- 블록의 크기가 클수록, 한 번에 많은 정보를 읽어 올 수 있지만 블록 인출 시간이 길어지게 됨

- 블록이 커질수록 캐시 기억장치에 적재할 수 있는 블록의 수가 감소하기 때문에 블록들이 더 빈번히 교체됨

- 일반적인 블록의 크기: 4 ~ 8 단어가 적당함

 

 

 

 

⑦ 캐시 기억장치의 수(Number of caches)

- 시스템 성능 향상을 위해서 다수의 캐시 기억장치들을 사용하는 것이 보편화됨

- 캐시 기억장치들을 계층적 구조나 기능적 구조로 설치함

 

 

 

캐시 기억장치 문제

더보기

Q1. 다음 캐시 기억장치에 대한 설명 중 옳지 않은 것은?

① 명령어와 데이터를 저장하고 인출하는 속도가 주기억장치보다 빠르다

② 자주 사용되는 명령들을 저장하고 중앙처리장치(CPU)에 빠른 속도로 제공한다

③ 느리게 동작하는 주기억장치와 빠르게 동작하는 중앙처리장치(CPU) 사이에서 속도 차이를 줄여주는 고속 완충 기억장치이다

④ 중앙처리장치(CPU)는 명령어 또는 데이터를 인출하기 위해 주기억장치를 조사한 후 캐시 기억장치를 조사한다

 

  빈칸에 들어갈 단어를 각각 쓰시오

Q2. CPU가 명령어 또는 데이터의 인출을 위해 캐시 기억장치에 접근했을 때, 캐시에 해당 정보가 존재할 경우 __________라 하고 존재하지 않을 경우 ________라 한다.

 

Q3. Tcache = 60ns, Tmain = 400ns 일 때,  적중률이 80% 일 경우의 기억장치 접근 시간을 계산하시오.

 

다음 보기를 보고 O/X를 표시하시오.

Q4. 캐시 기억장치의 크기가 클수록, 적중률이 증가하고 평균 접근 시간과 비용은 감소한다.  (O/X)

Q5. 캐시 기억장치에 해당 정보가 존재하지 않을 경우 CPU는 주기억장치에서 바로 데이터를 인출한다 (O/X)

 

Q6. 아래는 어떤 인출 방식을 서술하고 있는지 설명에 따른 인출방식을 쓰시오

____________________ : CPU가 현재 필요한 정보만을 주기억장치에서 블록 단위로 인출해 오는 방식

____________________ : CPU가 현재 필요한 정보 외에도 앞으로 필요할 것으로 예측되는 정보를 미리 인출하여 캐시 기억장치에 저장하는 방식, 주기억장치에서 명령어나 데이터를 인출할 때 필요한 정보와 이웃한 위치에 있는 정보들을 함께 인출하여 캐시에 적재하는 방식

 

Q7. 주기억장치와 캐시 기억장치 사이에서 정보를 옮기는 것 무엇이라 하는가?

답 : ____________

캐시 기억장치 해설

더보기

A1. ④ 중앙처리장치(CPU)는 명령어 또는 데이터를 인출하기 위해 캐시 기억장치를 조사한 후 주기억장치를 조사한다.

A2. 적중(hit), 실패(miss)

A3.

Taverage = Hhit_ratio * Tcache + (1 - Hhit_ratio) * Tmain

0.8 * 60ns + (1 - 0.8) * 400ns = 128ns

A4. 캐시 기억장치의 크기가 클수록, 적중률이 증가하고 평균 접근 시간과 비용은 감소한다.  (X)

: 캐시 기억장치의 크기가 클수록, 적중률이 증가하고 평균 접근 시간과 비용은 증가한다.

 

A5. 캐시 기억장치에 해당 정보가 존재하지 않을 경우 CPU는 주기억장치에서 바로 데이터를 인출한다 (X)

: 캐시 기억장치에 해당 정보가 존재하지 않을 경우 CPU는 주기억장치에서 필요한 정보를 얻어 캐시 기억장치에 전송한 후 얻어진 정보를 다시 CPU로 전송한다.

 

A6.

- 요구 인출(Demand Fetch) 방식 : CPU가 현재 필요한 정보만을 주기억장치에서 블록 단위로 인출해 오는 방식

- 선인출(Prefetch) 방식 : CPU가 현재 필요한 정보 외에도 앞으로 필요할 것으로 예측되는 정보를 미리 인출하여 캐시 기억장치에 저장하는 방식, 주기억장치에서 명령어나 데이터를 인출할 때 필요한 정보와 이웃한 위치에 있는 정보들을 함께 인출하여 캐시에 적재하는 방식

 

A7. 사상(mapping)

강의노트 문제

더보기

Q1. 보조기억장치는 IDE(Integrated Drive Electronics) 방식의 직렬연결과 SATA(Serial Advanced Technology Attachment) 방식의 병렬연결이 있다 (O/X)

Q2. 보조기억장치의 접근 방법 중 접근 시간이 원하는 데이터의 위치와 이전 접근 위치에 따라 결정되는 접근 방법은?

(순차적 접근 / 직접 접근)

 

Q3. 다음 중 순차적 접근 장치의 예시로 옳은 것은?

① 하드디스크     ② DVD     ③ 카세트테이프

 

Q4. 다음 직접 기억 장치 액세스(DMA) 동작 방식 중 옳지 않은 것은?

DMA 제어기는 CPU로 버스 요구(BUS REQ) 신호를 전송한다
CPU는 DMA 제어기로 버스 승인(BUS GRANT) 신호를 전송한다
CPU의 개입이 있으며 DMA 제어기가 주기억장치에 데이터를 읽거나 쓴다 
④ 전송할 데이터가 남아있으면, 1단계부터 3단계까지 다시 반복한다
⑤ 모든 데이터의 전송이 완료되면 CPU로 INTR 신호를 전송한다

 

Q5. 다음 데이터 버스에 대한 설명 중 옳지 않은 것은?

연결된 장치들 간에 단방향 전송만 가능하다.

② 컴퓨터 시스템을 구성하는 장치들 사이에서 데이터를 전송하는 용도로 사용되는 선들의 집합이다.

③ 데이터 버스의 폭(선들의 수)은 연결된 장치들 사이에서 한 번에 전송되는 비트들의 수를 뜻한다.

강의노트 해설

더보기

A1. (X)

보조기억장치는 IDE(Integrated Drive Electronics) 방식의 병렬연결과 SATA(Serial Advanced Technology Attachment) 방식의 직렬연결이 있다 

 

A2. 직접 접근

 

A3. ③ 카세트테이프

하드디스크와 DVD는 직접 접근 방법의 대표적 장치이다.

 

A4.

직접 기억 장치 액세스 동작 방식은 CPU 의 개입 없이 DMA 제어기가 주기억장치에 데이터를 읽거나 쓴다. 

 

A5.

데이터 버스는 연결된 장치들 간에 양방향 전송이 가능하다.

 

 

 

 

 

참고) 2019 컴퓨터 구조 호준원교수님 강의노트, 디지털논리와 컴퓨터 설계, Harris et al. (조영완 외 번역), 사이텍미디어, 2007, 컴퓨터 구조와 원리 (비주얼 컴퓨터 아키텍처), 신종홍 저, 한빛미디어, 2011