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

Download Report

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

컴퓨터 구조
제5강
캐시 기억장치(Cache Memory)
학습 목차
IT COOKBOOK
컴퓨터 본체에서 기억장치 위치 살펴보기
컴퓨터 기억장치의 계층적 구조
캐시 기억장치 원리
캐시 기억장치의 설계
다중 프로세서를 사용하는 시스템에서의 캐시 기억
장치
-2-
학습 목표
IT COOKBOOK
기억장치들간의 상호 연관성에 대해 이해한
다.
캐시 기억장치의 원리에 대해서 이해한다.
캐시 기억장치와 주기억장치 사이의 정보교
환 방법에 대해 이해한다.
캐시 기억장치의 교환 알고리즘에 대해 이해
한다.
-3-
컴퓨터 기억장치의 계층적 구조
IT COOKBOOK
컴퓨터의 기억장치의 용량, 접근 속도, 가격의 상관
관계
접근 속도를 감소시켜 데이터의 읽고, 쓰기 속도를 향상시
키기 위해서는 고가이지만 고속의 기억장치가 필요
많은 양의 데이터를 저장하기 위해서 기억장치의 용량이
커져야 한다. 그러나 적정 비용을 위해서는 저가의 기억장
치를 필요로 하게 된다.
저가의 기억장치를 사용하면 기억장치의 접근속도는 그만
큼 증가하게 된다.
이 요건들의 적절한 상호 조정이 필요하며, 이를 위해서
기억장치 계층 구조가 이용된다.
-4-
기억장치의 계층 구조
Low
IT COOKBOOK
CPU 내의 레지스터 : Register
캐쉬 기억장치(Cache Memory) : Static RAM
High
속도
용량
주 기억장치(Main Memory) : Dynamic RAM
High
보조 기억장치(Secondary Memory) : HDD, FDD, Magnetic Tape
-5-
가격
Low
기억장치의 동작 방법
IT COOKBOOK
자기 테이프
입출력
프로세서
주기억 장치
자기 디스크
보조 기억 장치
CPU
-6-
캐쉬
기억장치
캐시 기억장치 원리
IT COOKBOOK
빠른 접근 시간을 제공하는 기억장치
수행할 명령어나 오퍼랜드를 주기억장치로부터 가
져와 저장하고 있다가 빠른 속도로 중앙처리장치에
제공
CPU
워드 전송
캐시 메모리
-7-
블록 전송
주기억장치
캐시 기억장치의 동작 원리
IT COOKBOOK
캐시 기억장치가 없는 시스템
주 기억장치
1
CPU
2
① 중앙처리 장치의 주기억장치 접근
② 주기억장치로부터 명령어나 필요한 정보 획득
-8-
캐시 기억장치의 동작 원리
IT COOKBOOK
 캐시 기억장치가 있는 시스템
 중앙처리 장치가 기억장치를 참조할 필요가 있을 경우 캐시 기억장치
를 먼저 조사
 캐시 기억장치에 접근하여 그 내용을 찾았을 때 적중(hit)이라고 하고,
찾지 못하였을 경우를 실패(miss)라고 한다.
 중앙처리장치가 1000번지 워드를 필요로 하는 경우
 캐시 기억장치를 검사하고 실패(miss)하면
 주기억장치로부터 정보를 획득하여 캐시 기억장치에 전송
 캐시 기억장치는 정보를 다시 중앙처리장치로 전송
주 기억장치
캐쉬 기억장치
1000번지 워드
1000번지 워드
2
1
1001번지 워드
1001번지 워드
CPU
1002번지 워드
1002번지 워드
1003번지 워드
-9-
캐시 기억장치의 동작 원리
IT COOKBOOK
 캐시 기억장치가 있는 시스템에서 중앙 처리장치가 1002번
지의 워드를 필요로 하는 경우
 캐시 기억장치 검사
 적중(hit)
 캐시 기억장치에서 얻어진 정보를 중앙처리장치로 전송
1
캐쉬 기억장치
주 기억장치
1000번지 워드
1000번지 워드
1001번지 워드
1001번지 워드
CPU
1002번지 워드
1002번지 워드
1003번지 워드
2
 주기억장치를 거치는 것보다 훨씬 빠른 속도로 정보 획득
- 10 -
참조의 지역성(locality of reference)
IT COOKBOOK
캐시는 중앙처리장치가 수행할 명령어와 필요한 정
보를 저장하고 있다가 즉시 제공함으로써 처리가 신
속하게 이루어지도록 함
캐쉬 동작은 프로그램 내장형 컴퓨터의 특성인 기억
장치 참조의 지역성(locality of reference)으로 인하
여 가능
참조의 지역성
주어진 시간 동안 중앙처리장치의 기억장치 참조는 제한
된 영역에서만 이루어지는 현상
짧은 시간 동안 중앙처리장치가 접근하는 범위는 지역적
으로 제한되는 것을 의미
- 11 -
캐시 기억장치의 동작 순서
IT COOKBOOK
시작
CPU로부터
주소 전달
Cache내에
명령어 존재?
아니오
명령어를 포함한
주기억 장치에 접근
예
주기억 장치로부터 명령
어 블럭을 전송받기 위한
캐쉬 슬롯 할당
획득한 명령어를
CPU로 전송
주기억 장치의 명령어
블럭을 캐쉬에 저장
완료
- 12 -
명령어 블럭을
CPU에 전송
적중률(Hit ratio)
IT COOKBOOK
 캐시 기억장치 성능은 적중률(hit ratio)에 의해 측정
적중수
적중률 
전체 메모리 참조 횟수
 주기억장치와 캐시 기억장치 사이에서의 평균 기억장치 접근
시간
Taverage = Hhit_ratio × Tcache + (1-Hhit_ratio) × Tmain
Taverage = 평균 기억장치 접근시간
Tmain = 주기억장치 접근시간
Tcache = 캐시 기억장치 접근시간
Hhit_ratio = 적중률
 캐시의 적중률이 높아질수록 평균 기억장치 접근 시간은 캐
시 액세스시간에 접근
- 13 -
캐시 기억장치의 설계
IT COOKBOOK
 캐시 기억장치를 설계함에 있어 공통적인 목표
 캐시 적중 시 캐시 기억장치로부터 데이터를 읽어오는 시간을 짧게
 캐시 실패 시 주기억장치로부터 캐시 기억장치로 데이터를 읽어 오는
시간을 최소화
 주기억장치와 캐시 기억장치 사이에 데이터의 일관성을 유지
 캐시 기억장치를 설계할 때 고려 사항
 캐시 기억장치의 크기(Size)
 인출방식(fetch algorithm)
 사상함수(Mapping function)
 교체 알고리즘(Replacement algorithm)
 쓰기 정책(write policy)
 블록 크기(Block size)
 캐시 기억장치의 수(Number of caches)
- 14 -
캐시 기억장치의 크기와 인출 방식
IT COOKBOOK
 캐시 기억장치의 크기
 용량이 커질수록 적중률은 높아지지만, 이에 따른 비용 또한 증가
 용량과 비용간의 조정을 통해 적절한 용량과 비용이 결정
 용량이 커질수록 주소 해독 및 정보 인출을 위한 주변 회로가 더 복잡
해지기 때문에 액세스 시간이 다소 더 길어진다.
 인출방식
 요구 인출(demand fetch) 방식
현재 필요한 정보만 주기억장치로부터 인출해 오는 방식
 선인출(prefetch) 방식
현재 필요한 정보 외에도 앞으로 필요할 것으로 예측되는 정보도
미리 인출하는 방식
지역성(locality)이 높은 경우에 효과가 높지만 그렇지 못한 경우에
는 인출 시간이 길어지기 때문에 효율이 떨어지게 된다.
- 15 -
사상(mapping)함수
IT COOKBOOK
주기억장치와 캐시 기억장치 사이에서 정보를 옮기
는것
직접사상(direct mapping)
연관사상(associative mapping)
집합 연관사상(set-associative mapping)
주기억장치
캐쉬 기억장치
주소 태그
CPU
데이터
주소
000
00000
001
010
00001
데이터
00010
4. 캐쉬 기억장치 갱신
1. CPU에서 워드 요청
00011
111
2. 캐쉬 기억장치에 요구한
워드 존재하지 않음(Miss)
- 16 -
3. 주 기억장치에서 워드 획득
직접사상(Direct mapping)
IT COOKBOOK
주기억장치의 블록이 특정 라인에만 적재
캐시의 적중 여부는 그 블록이 적재 될 수 있는 라인
만 검사
간단하고 비용이 저렴한 장점
주기억장치의 블록이 적재 될 수 있는 라인이 하나
밖에 없음
프로그램이 동일한 라인에 적재되는 두 블록들을 반복적
으로 액세스하는 경우 캐시 실패율이 매우 높아진다.
- 17 -
직접 사상의 동작
IT COOKBOOK
 중앙 처리장치가 00001번지 워드를 필요로 하는 경우
캐쉬 기억장치
CPU 캐쉬
비교
주소
001
일치
태그
00
001
데이터
주기억장치
000
1
CPU
주소 태그
001
010
00001
2
111
(a) 실행 전
000
001 00
3
010
1234
변경전 변경후
111
(b) 실행 후
- 18 -
데이터
1234
태그
00
주소
데이터
00000
9999
00001
1234
00010
5678
00011
9012
10001
7890
10010
2750
11111
2580
직접 사상의 동작
IT COOKBOOK
1. 처음의 2-bits(00)는 태그, 다음 3-bits(001)는 캐
시 기억장치의 주소 표시. 캐시 기억장치에서 001
번지 주소를 참조. 해당 번지가 비어 있으므로 실패
(miss) 주기억장치를 참조
2. 주기억장치로부터 워드를 획득
3. 캐시 기억장치의 해당 주소에 데이터와 태그 저장
- 19 -
직접 사상의 동작
IT COOKBOOK
중앙 처리장치가 00010번지 워드를 필요하는 경우
캐쉬 기억장치
CPU 캐쉬
주소 010
태그
010
일치
주소 태그
데이터
주기억장치
000
00
1
CPU
비교
001 00
010
1234
00010
111
2
(a) 실행 전
000
001 00
010 00
1234
3
5678
111
주소
데이터
00000
9999
00001
1234
00010
5678
00011
9012
10001
7890
10010
2750
11111
2580
변경전 변경후
데이터
5678
태그
00
(b) 실행 후
- 20 -
직접 사상의 동작
IT COOKBOOK
1. 처음의 2-bits(00)는 태그를 나타내고, 다음 3bits(010)는 캐시 기억장치의 주소를 표시. 캐시 기
억장치에서 010번지 주소를 참조. 해당 번지가 비
어 있으므로 실패(miss) 주기억장치를 참조
2. 주기억장치로부터 워드 획득
3. 캐시 기억장치의 해당 주소에 데이터와 태그 저장
- 21 -
직접 사상의 동작
IT COOKBOOK
중앙 처리장치가 10001번지 워드를 필요하는 경우
캐쉬 기억장치
CPU 캐쉬
비교
주소
001
001
일치
태그
00
10
불일치
1
CPU
주소 태그
데이터
주기억장치
000
001 00
010 00
1234
5678
10001
111
(a) 실행 전
000
001 10
010 00
3
2
7890
5678
111
(b) 실행 후
- 22 -
변경전
변경후
데이터
1234
7890
태그
00
10
주소
데이터
00000
9999
00001
1234
00010
5678
00011
9012
10001
7890
10010
2750
11111
2580
직접 사상의 동작
IT COOKBOOK
1. 처음의 2-bits(10)는 태그를 표시하고, 다음 3bits(001)는 캐시 기억장치의 주소를 표시. 캐시 기
억장치에서 001번지 획득, 태그가 00으로 불일치
2. 주기억장치로부터 워드 획득
3. 캐시 기억장치의 해당 주소에 데이터와 태그 저장
- 23 -
직접 사상의 동작
IT COOKBOOK
중앙 처리장치가 00010번지 워드를 필요하는 경우
캐쉬 기억장치
CPU
캐쉬
비교
주소
010
010
일치
주소 태그
태그
00
00
일치
000
1
CPU
001 00
010 00
00010
2
데이터
주기억장치
주소
데이터
00000
9999
7890
00001
1234
5678
00010
5678
00011
9012
10001
7890
10010
2750
11111
2580
111
- 24 -
직접 사상의 동작
IT COOKBOOK
1. 처음의 2-bits(00)는 태그를 표시하고, 다음 3bits(010)는 캐시 기억장치의 주소를 표시. 캐시 기
억장치에서 010번지 획득, 태그가 00으로 일치
2. 캐시 기억장치에서 워드 획득
- 25 -
연관사상(Associative mapping)
IT COOKBOOK
주기억장치의 블록이 캐시의 어느 라인에든 적재될
수 있어 직접사상에서 발생하는 단점을 보완
적중 검사가 모든 라인에 대해서 이루어져야 하므로
검사 시간이 길어진다.
캐시 슬롯의 태그를 병렬로 검사하기 위해서는 매우
복잡하고 비용이 높은 회로가 필요하다.
- 26 -
연관사상의 동작
IT COOKBOOK
태그
단어
데이터
0000
00
'abcd'
0001
00
'take'
0010
00
0011
00
'info'
0100
00
'fell'
0101
00
0110
00
0111
00
1000
태그
데이터
슬롯번호
0000
'abcd'
0
0011
'info'
1
0001
'take'
2
0110
'down'
3
00
0100
'fell'
4
1001
00
1010
'comp'
5
1010
00
1100
'tape'
6
1011
00
1100
00
1111
'wake'
7
1101
00
1110
00
1111
00
'down'
'comp'
'tape'
캐쉬 기억장치
'wake'
주 기억장치
- 27 -
집합 연관사상 (Set-associative mapping)
IT COOKBOOK
직접사상과 연관사상 방식을 조합한 방식
하나의 주소 영역이 서로 다른 태그를 갖는 여러 개
의 집합으로 이루어지는 방식
두 개의 집합을 갖는 집합 연관 캐시 기억장치의 구
조
주소 태그
데이터
태그
데이터
000
00
111
01
1220
4580
집합 1
01
5678
00
1234
집합 2
- 28 -
집합 연관사상 (Set-associative mapping)
IT COOKBOOK
집합 1과 집합 2, 두 개의 집합으로 구분
같은 주소 번지 000 번지에 서로 다른 태그 00, 01
로 구분되는 두 개의 데이터가 동시에 저장
동일한 주소를 가지고 다른 태그 번호를 갖는 번지
에 접근하는 경우
직접사상의 경우 실패
집합 연관사상 방식의 경우 적중
- 29 -
두 개의 집합을 갖는 집합 연관 캐시 기억장치의 동작
태그
집합
단어
데이터
000
0
00
'abcd'
000
1
00
'take'
001
0
00
001
1
00
'info'
010
0
00
'fell'
010
1
00
011
0
00
011
1
00
100
0
100
IT COOKBOOK
태그
데이터
000
'abcd'
011
'down'
집합 0
101
'comp'
110
'tape'
00
000
'take'
1
00
001
'info'
101
0
00
101
1
00
110
0
00
110
1
00
111
0
00
111
1
00
'down'
집합 1
'comp'
111
'wake'
'tape'
캐쉬 기억장치
'wake'
주 기억장치
- 30 -
교체 알고리즘(Replacement Algorithms)
IT COOKBOOK
캐시 기억장치가 가득 차 있는 상태에서 캐시 기억
장치의 일부를 제거하고 주기억장치로부터 새로운
데이터를 가져와야 하는 경우 캐시의 내용을 제거하
는 방식
직접사상 방식에서는 주기억장치의 데이터가 캐시
기억장치의 같은 주소에 저장되기 때문에 교체 알고
리즘을 사용할 필요가 없다.
연관사상 및 집합 연관사상 방식의 경우 교체 알고
리즘이 필요하게 된다.
- 31 -
교체 알고리즘(Replacement Algorithms)
IT COOKBOOK
교체 알고리즘 종류
최소 최근 사용 (LRU :
Least Recently Used)
알고리즘
내용
현재까지 알려진 교체 알고리즘 중에서 가장 효과적인
교체 알고리즘으로 이 방식은 캐시 기억장치 내에서
사용되지 않은 채로 가장 오랜 있었던 블록을 교체하는
방식이다.
최소 사용 빈도 (LFU :
캐시 기억장치에 적재된 후 가장 적게 사용된 블록을
Least Frequently Used)
교체하는 방식이다.
알고리즘
선입력 선출력 (FIFO:
First In First Out)
알고리즘
랜덤 (Random)
캐시 기억장치에 적재된 지 가장 오래된 블록을
교체하는 방식이다.
캐시 기억장치에서 임의의 블록을 선택하여 교체하는
방식이다.
- 32 -
쓰기 정책(Write Policy)
IT COOKBOOK
 CPU가 프로그램을 수행하는 동안 결과를 캐시 기억장치에
쓰는 경우, 캐시 기억장치와 주기억장치에 기록하는 시점
 즉시 쓰기(Write-though) 방식
 모든 쓰기 동작이 캐시뿐만 아니라 주기억장치에서도 동시에 발생
 주기억장치와 캐시 기억장치가 항상 동일한 내용을 기록
 기억장치들 간 접근이 빈번하게 일어나고 쓰기 시간이 길어지게 된다.
 나중 쓰기(Write-back) 방식
 새로운 데이터가 캐시에서만 갱신
 캐시에서 데이터 내용이 변경된 적이 있다면 교체되기 전에 먼저 주
기억장치에 갱신
 주기억장치와 캐시 기억장치의 데이터가 서로 일치하지 않는 경우도
발생
 쓰는 시간이 짧은 장점
- 33 -
쓰기 정책
IT COOKBOOK
CPU
CPU
캐쉬
캐쉬
주기억 장치
주기억 장치
(a) 즉시 쓰기(Write-though)
(b) 나중 쓰기(Write-back)
- 34 -
캐시의 수(Number of Caches)
IT COOKBOOK
최근에는 캐시 기억장치들이 계층적 구조로 설치 되
거나 기능별로 분리된 다수의 캐시 기억장치들을 사
용하는 것이 보편화 되었다.
온-칩(On-chip) 캐시 기억장치
캐시 기억장치를 CPU의 내부에 포함시키는 것
오프-칩(Off-Chip) 캐시 기억장치 또는 외부 캐시
기억장치
캐시 기억장치가 CPU 외부에 위치
최근의 고성능 컴퓨터 들은 온-칩 캐시 기억장치와,
외부 기억장치를 동시에 포함하고 있다.
- 35 -
캐시의 수(Number of Caches)
IT COOKBOOK
계층적 캐시(Hierarchical Cache)
온-칩 캐시를 1차 캐시(L1)로 사용 하고 칩 외부에 더 큰
용량의 오프-칩 캐시를 2차 캐시(L2)로 설치하는 방식
CPU
L1
L2
주기억 장치
- 36 -
계층적 캐시 기억장치
IT COOKBOOK
 계층적 캐시 기억장치를 조사할 때는 먼저 L1을 검사하고 실패인 경우 L2
를 검사하고 L2도 실패인 경우 주기억장치 조사
 L1 캐시기억장치는 속도는 빠르지만 용량이 작기 때문에 적중률이 L2에
비해 낮다.
 계층적 캐시 기억장치구조에서 평균기억장치 접근시간
Taverage = HL1 × TL1 + (HL2 - HL1) × TL2 + (1 - HL2) × Tmain
Taverage = 평균 기억장치 접근시간
Tmain = 주기억장치 접근시간
TL1 = L1 캐시 기억장치 접근시간
TL2 = L2 캐시 기억장치 접근시간
HL1 = L1 캐시 적중률
HL2 = L2 캐시 적중률
- 37 -
캐시 기억장치의 통합과 분리
IT COOKBOOK
통합 캐시
온-칩 캐시 기억장치에서 데이터와 명령어들을 모두 저장
하는 형태
분리 캐시보다 적중률이 더 높다. 이유는 명령어와 데이터
간의 균형을 자동적으로 유지해주기 때문이다.
분리 캐시
명령어만 저장하는 명령어 캐시와 데이터만 저장하는 데
이터 캐시로 분리하여 두 개의 온-칩 캐시를 사용
고성능 프로세서에서는 활용 경향이 뚜렷
장점은 명령어 인출과 실행 유니트 간 캐시의 충돌이 발생
하지 않는다.
- 38 -
Pentium II의 캐시 조직 블록도
IT COOKBOOK
L2 Cache
System Bus
Bus Interface Unit
L1
Instruction
cache
Fetch
Instruction
fetch and
decode Unit
L1 data Cache
Load
Store
Retire Unit
Instruction Pool
- 39 -
Dispatch and
Execute Unit
Power PC G3의 캐시 조직 블록도
IT COOKBOOK
Insruction
Cache
Instruction
Unit
L2 Bus
Interface
Simple
Integer Unit
Complex
Integer Unit
Integer
Registers
Load/Store
Unit
Date Cache
- 40 -
Floating Point
Registers
Floating Point ALU
다중 프로세서를 사용하는 시스템에서의 캐시 기억장치
IT COOKBOOK
다중 프로세서 시스템
단일 시스템 버스에 여러 개의 CPU들이 접속
캐시 기억장치의 쓰기 정책인 즉시 쓰기 정책과 나중 쓰기
정책을 사용하는 경우 주기억장치와 각각의 CPU에 해당
되는 캐시 기억장치들 사이에 데이터의 불일치 현상 발생
여러 개의 CPU와 그에 따르는 캐시들간의 데이터의 불일
치 현상은 프로그램이 올바르게 동작하지 않은 원인
- 41 -
다중 프로세서를 사용하는 시스템에서의 캐시 기억장치
CPU
CPU 1
CPU 2
캐쉬
D
D
IT COOKBOOK
CPU 3
시스템 버스
주 기억장치
D
- 42 -
즉시 쓰기(write-though) 정책에서의 데이터의 불일치 상태
CPU
CPU 1
CPU 2
캐쉬
X
D
IT COOKBOOK
CPU 3
시스템 버스
주 기억장치
X
- 43 -
나중 쓰기(write-back) 정책에서의 데이터의 불일치 상태
CPU
CPU 1
CPU 2
캐쉬
X
D
IT COOKBOOK
CPU 3
시스템 버스
주 기억장치
D
- 44 -
캐시 기억장치의 데이터 일관성 유지 방법
IT COOKBOOK
 공유 캐시 기억장치를 사용하는 방법
 시스템에 있는 다수의 프로세서가 하나의 캐시 기억장치를 공유
 캐시 기억장치의 데이터들이 항상 일관성 있게 유지되는 장점
 다중 프로세서들이 동시에 캐시 기억장치에 접근하면 프로세서들간
의 충돌이 발생
 공유 변수는 캐시 기억장치에 저장하지 않는 방법
 수정 가능한 데이터는 캐시 기억장치에 저장하지 않는 방법
 캐시 기억장치에 저장 가능 여부를 사용자가 선택하여 선언해 주어야
하는 단점이 있다.
 버스 감시 시스템을 사용하는 방법
 시스템 버스에 데이터의 일관성 유지를 위해 감시 기능을 가진 장비
를 시스템 버스상에 추가로 설치
 모든 데이터 들은 캐시 기억장치에 저장이 가능하며 어떤 캐시 기억
장치가 데이터를 수정했다면 그 정보를 다른 캐시 기억장치와 주기억
장치에 알려주게 된다.
 시스템 버스에 통신 량이 증가하는 단점이 있다.
- 45 -