본문 바로가기
컴퓨터 구조

컴퓨터 구조 5주차

by 몰라몰라개복치 2020. 6. 5.

캐시기억장치

 

 

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

(+CPU 안에 있지 X, CPU 밖에 있으면서 주기억장치와는 분리되어 있는 또다른 기억장치)

 

 

<특징>

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

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

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

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

 

즉, 캐시기억장치란 CPU 안에 있는 레지스터보단 속도가 느리고 RAM보다는 속도가 빠른 둘 사이의 완충제 역할을 하는 기억장치고

캐시는 CPU가 자주 사용하는 혹은 미래에 사용할 것이라고 예측되는 명령어들을 미리 저장하고 있는 것이다

 

 

 

 

 

 

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

 

동작 원리:

1단계:: CPU가 명령어와 데이터를 인출하기 위해서 주기억장치에 접근

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

 

 

 

 

 

그러나 이 과정은 속도가 매우 느림 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

- CPU가 명령어 또는 데이터를 인출하기 위해 주기억장치보다 캐시기억장치를 먼저 조사

- hit(적중): CPU가 명령어를 인출하기 위해 캐시기억장치에 접근하여 그 명령어를 찾았을 때 (CPU 입장에선 hit이 많을수록 좋음)

-miss(실패): CPU가 명령어를 인출하기 위해 캐시기억장치에 접근했을 때 명령어가 존재하지 않아 찾지 못하였을 경우

 

 

(중앙처리장치인 CPU는 주기억장치로 가기 전에 캐시기억장치에 한 번 들려서 캐시기억장치가 중앙처리장치가 원하는 데이터를 가지고 있는지 확인한 후, 만약 가지고 있다면(hit) 주기억장치에 접근 X. 만약 캐시에 데이터가 없다면(miss) 주기억장치에서 데이터를 가져와서 캐시에 저장. 그후 캐시에서 다시 CPU로 가져옴)

 

(+주기억장치에서 바로 CPU로 가지고 오지 않는 이유: 지금 사용하는 명령어를 지금 순간에만 사용하는 것이 아니라 그이후에도 사용할 수 있을 것이라는 가능성 때문.)

 

 

 

 

 

 

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

 

ex) CPU가 1000번지의 워드가 필요한 경우

워드: CPU가 한 번에 처리할 수 있는 명령어의 단위

블럭: 워드가 여러 개 쌓인 것

우선 캐시기억장치가 1000번지의 워드를 저장하고 있는지를 검사하고 1000번지 워드가 캐시기억장치 내에 존재하지 않는다면 실패상태가 됨 

 

실패상태 처리 방법

 

주기억장치에서 필요한 정보를 획득하여 캐시기억장치에 전송 -> 캐시기억장치는 얻어진 정보를 다시 중앙처리장치로 전송

 

(+보통 프로그램 흐름상, 1000번지에 있는 명령어가 필요하다는 것은 곧 가까운 시일 내에 1001번지에 있는 명령어도 필요하다는 소리이기 때문에 1000번지에 있는 명령어를 캐시기억장치로 가져올 때 1001번지, 1002번지, 1003번지에 있는 명령어도 미리 가져옴)

 

 

 

 

 

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

 

ex) CPU가 1002번지의 워드가 필요한 경우

캐시기억장치가 1002번지의 워드를 저장하고 있는지를 검사하고 1002번지 워드가 캐시기억장치 내에 존재한다면 적중상태가 됨 -> 캐시기억장치에서 얻어진 정보를 중앙처리장치로 전송

 

 

 

 

 

캐시 기억장치 동작 원리

 

 

 

 

 

 

 

 

캐시 기억장치의 적중률

 

적중률: 캐시 기억장치의 성능을 나타내는 척도

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

 

 

적중률은 1이 제일 높은 숫자

 

 

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

Tmain : 주기억장치 접근시간

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

Hhit_ratio : 적중률

 

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

 

 

 

 

 

 

캐시 기억장치의 설계

 

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

 

 

 

 

 

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

 

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

- 캐시 기억장치의 크기가 크면 적중률 ↑, 평균 접근시간과 비용 또한 

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

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

 

 

 

 

2. 인출방식(fetch algorithm)

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

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

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

 

 

 

 

3. 사상함수(Mapping function)

 

주기억장치의 구조

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

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

 

캐시 기억장치의 구조

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

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

 

 

 

 

사상 함수

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

 

캐시 기억장치의 사상방법

- 직접 사상(direct mapping)

- 연관 사상(associative mapping)

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

 

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

 

    주기억장치                캐시기억장치

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

 

 

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

 

장점: 사상 과정이 간단함

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

 

 

 

 

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

CPU가 원하는 데이터는 00001번지에 있는 데이터임->캐시기억장치를 봤더니 데이터가 없어서 miss->주기억장치에 가서 00001번지의 1234란 데이터가 있는 것을 확인->끌고 온 데이터 1234를 캐시기억장치에 저장/CPU가 캐시기억장치에 있는 데이터를 쉽게 찾기 위해 매핑 작업 필요

 

주기억장치의 주소의 뒤에 있는 세자리=>데이터 블록 슬롯번호

앞의 두자리=>데이터 블록 태그

 

 

 

 

 

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

ex1과 ex2는 데이터가 다른데 태그 번호가 같은 것을 확인 => 속에 있는 데이터는 다른데 CPU가 캐시기억장치에서 원하는 데이터를 찾는 작업을 할 때 태그 번호가 겹쳐서 CPU에게 혼란을 줌

 

 

 

 

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

 

 

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

 

 

 

 

 

(2). 연관 사상

캐시 슬롯번호에 상관없이, 주기억장치의 데이터 블록을 캐시 기억장치의 임의의 위치에 저장

캐시기억장치로부터 데이터 블록 인출을 위해서 모든 슬롯에 대한 검색이 필요

(비효율적)

 

주소형식::

 

 

   주기억장치               캐시기억장치

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

 

 

 

 

 

 

 

 

 

 

 

(3). 집합 연관 사상

직접 사상과 연관 사상 방식을 조합한 방식

캐시는 v개의 집합들로 나누어지며, 각 집합들은 k개의 슬롯들로 구성됨

직접 사상 방식에 의해, v개의 집합들중에서 하나의 집합을 선택함

연관 사상 방식에 의해, 선택한 집합내에 있는 k개의 슬롯중에서 하나의 슬롯을 선택함

 

주기억장치                            캐시기억장치

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

 

집합은 무작위로 고르고 슬롯은 태그 번호에 따라 나누는 것

 

 

 

 

 

 

4. 교체 알고리즘(Replacement algorithm)

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

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

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

 

<종류>

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

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

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

RANDOM: 랜덤

 

 

 

 

 

5. 쓰기 정책(Write policy)

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

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

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

(2) 나중 쓰기(Write-back) 방식: 캐시기억장치에 기록한 후, 기록된 블록에 대한 교체가 일어날 때 주기억장치에 기록함 장점: 즉시 쓰기 방식과는 달리 주기억장치에 기록하는 동작을 최소화 할 수 있음

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

 

 

 

 

 

 

6. 블록 크기(Block size)

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

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

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

 

 

 

 

 

 

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

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

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

 

 

 

캐시기억장치 문제

더보기

Q1) 다음은 캐시 기억장치에 대한 설명이다. 보기 중 틀린 것은?

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

2.     자주 사용되는 명령들을 저장하고 있다가 중앙처리장치에 빠른 속도로 제공

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

4.     주기억장치와는 분리되어 있는 또다른 기억장치이며 CPU 안에 있다.

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

 

 

 

Q2~Q3) 다음 빈칸에 들어갈 단어를 순서대로 쓰시오.

CPU가 명령어를 인출하기 위해 캐시기억장치에 접근하여 그 명령어를 찾았을 경우를 (     )라고 하고, 명령어가 존재하지 않아 찾지 못하였을 경우를 (       )라고 표현한다.

 

 

 

 

 

Q4) Tcache = 40ns, Tmain = 300ns일 때, 적중률이 90%일 경우의 기억장치 접근 시간을 계산하시오.

 

 

 

 

Q5) 다음 중 캐시 기억장치 설계시 고려할 요소가 아닌 것은?

1.     캐시기억장치의 크기

2.     인출방식

3.     사상함수

4.     교체 알고리즘

5.     읽기 정책

 

 

 

 

Q6) 빈칸에 들어갈 단어를 쓰시오

 

아래 그림에서와 같이, 주기억장치와 캐시기억장치 사이에서 정보를 옮기는 것을 (           )이라고 한다. 

 

 

 

 

Q7) 이는 캐시 기억장치 설계시 고려할 요소 중 하나인 쓰기 정책은 기록하는 타이밍에 따라 두 가지 방식으로 나뉘어진다. 이 그림은 무슨 쓰기 방식을 표현한 그림일까?    (                  )

 

 

 

캐시기억장치 해답

더보기

A1) 다음은 캐시 기억장치에 대한 설명이다. 보기 중 틀린 것은  4

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

2.     자주 사용되는 명령들을 저장하고 있다가 중앙처리장치에 빠른 속도로 제공

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

4.     주기억장치와는 분리되어 있는 또다른 기억장치이며 CPU 안에 있다.

=> 캐시기억장치는 CPU 안에 있지 X, CPU 밖에 있으면서 주기억장치와는 분리되어 있는 또다른 기억장치

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

 

 

 

A2~A3) 다음 빈칸에 들어갈 단어를 순서대로 쓰시오.     ( 적중(hit), 실패(miss)  )

캐시 기억장치가 있는 시스템에서 CPU가 명령어를 인출하기 위해 캐시기억장치에 접근하여 그 명령어를 찾았을 경우를  적중(hit)  )라고 하고, 명령어가 존재하지 않아 찾지 못하였을 경우를 (   실패(miss)   )라고 표현한다.

 

 

 

 

 

A4) Tcache = 40ns, Tmain = 300ns일 때, 적중률이 90%일 경우의 기억장치 접근 시간을 계산하시오66ns

Taverage = 0.9 * 40ns + 0.1 * 300ns = 66ns

 

 

 

 

A5) 다음 중 캐시 기억장치 설계시 고려할 요소가 아닌 것은?   5

1.     캐시기억장치의 크기

2.     인출방식

3.     사상함수

4.     교체 알고리즘

5.     읽기 정책

읽기 정책이 아닌 쓰기 정책이다

 

 

 

 

A6) 빈칸에 들어갈 단어를 쓰시오  (사상(mapping))

 

아래 그림에서와 같이, 주기억장치와 캐시기억장치 사이에서 정보를 옮기는 것을 ( 사상(mapping)  )이라고 한다. 

 

 

 

 

A7) 이는 캐시 기억장치 설계시 고려할 요소 중 하나인 쓰기 정책은 기록하는 타이밍에 따라 두 가지 방식으로 나뉘어진다. 이 그림은 무슨 쓰기 방식을 표현한 그림일까?    (   나중 쓰기 방식      )

캐시기억장치에 기록한 후, 기록된 블록에 대한 교체가 일어날 때 주기억장치에 기록하는 나중 쓰기 방식을 표현한 그림이다

 

 

 

강의노트 문제

더보기

Q1). 다음 중 보조기억장치의 종류가 아닌 것은?   

1. 하드 디스크

2. 플로피디스크

3. SRAM

4. CD

5. 플래시

 

Q2) 다음 설명이 어떤 장치에 대한 개념인지 쓰시오 (       )

양면이 자성 재료로 피복되어 있는 원형 평판으로 되어 있는 기록장치. 순차적 또는 직접 액세스가 가능하며 속도가 빠르고 기억 용량이 크다.

 

Q3) 입출력 장치에 대한 예시들이다. 다음 중 특성이 다른 것은?

1. 마우스

2. 키보드

3. 터치패드

4. 모니터

5. 마이크

 

 

Q4) 다음 설명이 입출력 장치 제어 기법 중 어떠한 방식에 대한 개념인지 쓰시오 (             )

대용량의 데이터를 이동시킬 때 효과적인 기술로 기억장치와 입출력 모듈 간의 데이터 전송을 별도의 하드웨어인 DMA 제어기가 처리하고 중앙처리장치는 개입하지 않는 방식

 

 

Q5) 다음 설명이 맞으면 O 틀리면 X를 표시하시오

단일버스 분리식 DMA 방식은 데이터 전송을 위해 시스템 버스를 한 번만 사용한다 (        ) 

 

강의노트 해답

더보기

A1). 다음 중 보조기억장치의 종류가 아닌 것은?    3

1. 하드 디스크

2. 플로피디스크

3. SRAM

4. CD

5. 플래시

해답: 1,2,4,5번 보기 보조기억장치의 종류이나 SRAM은 Static RAM의 약자로서 RAM의 종류다. 

 

 

A2) 다음 설명이 어떤 장치에 대한 개념인지 쓰시오 (  자기 디스크 기억장치     )

양면이 자성 재료로 피복되어 있는 원형 평판으로 되어 있는 기록장치. 순차적 또는 직접 액세스가 가능하며 속도가 빠르고 기억 용량이 크다.

 

 

 

A3) 입출력 장치에 대한 예시들이다. 다음 중 특성이 다른 것은?   4

1. 마우스

2. 키보드

3. 터치패드

4. 모니터

5. 마이크

해설: 모니터를 제외한 보기들은 모두 입력장치다. 모니터만 출력 장치다.

 

 

A4) 다음 설명이 입출력 장치 제어 기법 중 어떠한 방식에 대한 개념인지 쓰시오

( 직접 기억장치 액세스(DMA)방식 )

대용량의 데이터를 이동시킬 때 효과적인 기술로 기억장치와 입출력 모듈 간의 데이터 전송을 별도의 하드웨어인 DMA 제어기가 처리하고 중앙처리장치는 개입하지 않는 방식

 

 

 

A5) 다음 설명이 맞으면 O 틀리면 X를 표시하시오

단일버스 분리식 DMA 방식은 데이터 전송을 위해 시스템 버스를 만 사용한다 (   X   ) 

 

->단일버스 분리식 DMA 방식은 데이터 전송을 위해 시스템 버스를 두 번씩 사용해야 하며, 단일버스 통일형 DMA 방식이 데이터 전송을 위해 시스템 버스를 한 번만 사용한다

 

 

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

 

 

 

 

 

'컴퓨터 구조' 카테고리의 다른 글

컴퓨터구조 6주차  (0) 2020.06.13
컴퓨터 구조 4주차  (0) 2020.05.28
컴퓨터 구조 3주차(2)  (0) 2020.05.23
컴퓨터 구조 3주차(1)  (0) 2020.05.23
컴퓨터 구조 2주차(2)  (0) 2020.04.16