주기억장치 블록이 적재될
Download
Report
Transcript 주기억장치 블록이 적재될
컴퓨터시스템구조론
제4장
캐시 기억장치(Cache Memory)
4.1 컴퓨터 기억장치시스템의 개요
기억장치시스템의 특성들
위치(location) : 컴퓨터의 내부 혹은 외부
내부기억장치 : 주 기억장치, 레지스터, 캐시
외부기억장치 : 디스크, 자기 테이프 등
용량(capacity) : 기억용량, 바이트(byte=8bit),
단어(word=8,16,32 bits)로 표현
전송 단위(unit of transfer) : 기억장치 모듈로 들어 가고
나오는 데이터 선들의 수.
단어(word) : 기억장치 조직의 기본, 수의 표현에 사용되는 비트
수(16비트, 32비트 등), 명령어의 길이
주소지정 단위(addressing unit) : 단어 혹은 바이트 단위,
N = 2A, 단, N : 주소지정 단위의 수, A : 주소비트의 길이
기억장치 액세스(memory access)의 유형
순차적 액세스(sequential access) : 저장된 순서에 따라
액세스. 액세스 시간이 위치에 따라 결정.
[예] 테이프(tape)
직접 액세스(direct access) : 기억장소 근처로 이동한 다음에
순차적 검색으로 최종 위치에 도달. 액세스 시간이 위치 및
이전 액세스의 위치에 따라 결정. [예] 디스크
임의 액세스(random access) : 어떤 위치를 액세스하는데
걸리는 시간이 이전의 액세스 순서와는 무관하며, 항상 일정.
[예] 반도체 기억장치 (RAM, ROM)
연관(associative) : 임의 액세스의 일종, 단어 내의 특정
비트를 비교하여 일치하는 단어를 액세스
성능 지표
엑세스 시간 : 읽거나 쓰는 동작 수행 시간
기억장치 사이클 시간 ; 임의 엑세스 기억장치에 적용
전송률 : 데이터가 들어가거나 나오는 비율
임의 엑세스
: 1/사이클시간
비임의 엑세스 :
TN TA
N
R
컴퓨터 기억장치 설계상의 주요 요건들
용량 : How much?
속도 (액세스 시간) : How fast?
가격 : How cheap?
o 요건들간의 상관관계
• 액세스 시간이 적게 들수록, 비트 당 가격 상승
• 용량이 커질수록, 비트 당 가격 하락
• 용량이 커질수록, 액세스 시간 증가
적절한 상호조정(trade-off)을 위하여 기억장치 계층
(memory hierarchy) 이용
기억장치 계층(Memory Hierarchy)
•
•
•
•
비트 당 가격 하락
용량 증가
액세스 시간 증가
액세스 빈도 감소
기억장치 계층의 효과
적중률(hit ratio) H : 액세스할 단어가 상위 계층의 기억장치에 있을
확률
평균 기억장치 액세스 시간 Ta = H x T1 + (1 - H) x (T1+T2)
단, T1 : 첫번째 기억장치의 액세스 시간
T2 : 두번째 기억장치의 액세스 시간
[예] 2-단계 기억장치(Two-level Memory)
T1 = 0.1 µs, T2 = 1 µs
H(액세스할 단어가 첫번째 계층에 있을 확률) = 95%
Ta = 0.95 x 0.1 µs + 0.05 x (0.1 µs + 1 µs) = 0.15 µs
2-단계 기억장치의 성능
(적중률의 변화에 따른 평균 액세스 시간)
참조의 지역성(Locality of Reference)
프로그램이 실행되는 동안, 프로세서가 액세스 하는
기억장치의 위치가 특정 영역에 집중되는 현상.
하위 계층의 기억장치에 대한 참조 빈도 감소
(평균 기억장치 액세스 시간의 단축)
참조의 지역성 현상으로 인하여 계층적 기억장치 사용
효과가 증대됨.
[예] 프로그램 : 반복 루프(iterative loop), 서브루틴
데이터 : 표(table), 배열(array), 등
2개 기억장치 사용 => 평균 엑세스 시간 감소
4.2 캐시 기억장치
CPU와 주기억장치의 속도 차이를 보완해주기 위한 적은
용량의 빠른 기억장치
주기억장치 : 용량은 크나 속도는 느림
캐시 기억장치 : 프로세서와 주기억장치에 있는 고속, 소용량
기억장치
주기억장치 일부분(블록)을 복사하여 저장하고 있음
자주 사용하는 내용을 저장하여 속도 향상 효과 가져옴
위치 : 주기억장치와 CPU 사이,
CPU 모듈 내, 혹은 CPU 칩 내부
전송 단위 : 블록 (주기억장치 – 캐시 간)
단어 (캐시 – CPU 간)
캐시 동작의 개요
(그림 4.5 참조 /다음장)
• CPU가 기억장치로부터 데이터 읽기를 시도한다.
• 캐시는 그 데이터를 가지고 있는지 검사한다.
• 만약 있다면(캐시 적중), 즉시 캐시로부터 데이터를
인출하여 CPU로 보내준다.
• 만약 없다면(캐시 미스), 주기억장치로부터 그 데이터가
포함된 블록을 인출하여 캐시에 적재한다.
동시에, 인출한 데이터를 CPU로 보내준다.
• 캐시는 적재된 블록이 주기억장치의 어떤 블록인지 구분
하기 위한 태그(tag)를 각 캐시 라인(cache line)에
포함시킨다.
캐시 읽기 동작 : 교재 내용 참조
캐시와 주기억장치의 구조 (1)
캐시와 주기억장치의 구조 (2)
• 주기억장치는 K단어의 M(=2n/K)개의 블럭으로 구성
• 캐시는 주기억장치로부터 블럭단위로 데이터를 복사하여
저장하고 있음
• 캐시의 라인용량(C)은 주기억장치(2n)에 비해 매우 적음
• 캐시의 라인수보다 기억장치의 블럭수가 많기 때문에 각
라인은 여러 블럭에 의해 공유됨
• 블럭 구분위한 Tag 필요
전형적인 캐시조직
캐시 설계의 요소들
크기(size) = 1K~512K 사이가 효과적
사상 함수(mapping function)
교체 알고리즘(replacement algorithm)
쓰기 정책(write policy)
블록 크기(block size)
캐시의 수(number of caches)
캐시의 크기(용량)
비용(cost)과의 관계
용량이 커질수록 가격이 높아진다.
속도(speed)와의 관계
용량이 커지면 (어느 정도까지는) 속도가 빨라진다
용량이 커질수록 캐시 액세스 시간이 더 길어진다
(주소 해독 회로가 복잡해진다)
사상 함수(Mapping Function)
직접 사상(direct mapping)
연관 사상(associate mapping)
세트 연관 사상(set associate mapping)
직접 사상(direct mapping)
원리 : 주기억장치의 각 블록은 캐시의 특정 라인에만
적재될 수 있다.
적중(원하는 블록이 캐시에 있는지) 여부는 그 블록이
적재될 수 있는 라인만 검사해보면 알 수 있다.
주소의 구성
• 최하위 w 비트 : 블록 내 특정 단어를 지정
• 최상위 s 비트 : 주기억장치 블록 지정
s 비트 중 r 비트 : 캐시 라인 번호
s-r 비트 : 태그
직접 사상 캐시의 조직
직접 사상의 예
• 캐시 용량 : 64 Kbyte
• 블록 크기 : K=4 바이트
• 라인(line) 수 : C=64K/4
=16K 개 =(214)
• 주기억장치 용량 : 16 MBytes
• 주기억장치 블록개수 : M=16M/4
= 4 Mbytes(=222)
• 주기억장치 주소 : 24 bit
(224=16M)
주소 형식
tag
line
word
8
14
2
2tag=(M/C)
직접 사상의 장단점
간단하다
비용이 저렴하다
주기억장치 블록이 적재될 수 있는 캐쉬 라인이
하나밖에 없다
만약 프로그램이 동일한 라인에 적재되는 두 블록들
을 반복적으로 액세스하는 경우에는 적중률이 낮아짐
연관 사상(Associative Mapping)
원리 : 주기억장치 블록이 캐쉬의 어느 라인에든
적재될 수 있다.
주기억장치로부터 새로운 블록이 캐쉬로 들어올 때,
비교하여 블록을 교체하는 데 융통성이 있다.
[장점] 직접 사상의 단점 보완
[단점] 적중(hit) 검사가 모든 라인들에 대하여 이루어
져야 한다 (검사 시간이 길어지고, 하드웨어 복잡)
주소 : 태그(tag)와 단어(word)로 구성
태그 : 주 기억장치내 블록위치 지정
연관 사상 캐시의 조직
연관 사상의 예
주소 형식
tag
22
word
2
F
F
F
세트 연관 사상
(Set Associative Mapping)
원리 : 캐시는 여러 개의 세트(set)들로 나누어 지며, 각
세트는 두 개 이상의 라인들을 가지고 있다.
주기억장치 블록은 정해진 세트에만 적재 될 수 있다.
그러나 세트내 어떤 라인에도 적재될 수 있다.
캐시 검사 : 해당 주기억장치 블록이 적재될 수 있는 세트
내 라인들의 태그들과 기억장치 블럭주소의 태그
필드만을 비교
연관사상에 비해 검사시간 및 태그비트 크기 감소
직접 사상과 연관 사상의 장단점을 조합한 방식
세트 연관 사상 캐시의 조직
2-way 세트 연관 사상의 예
세트 당 라인이 두 개가 존재(two sets per line)
이 세트에 적재되도록 지정된 주기억장치 블록은
세트 내 두 라인들 중, 빈 곳에 적재된다.
주소 형식
세트 비트 = 캐시 내 세트위치 지정
태그 비트 = 중복된 캐시 대응시 구분 (직접사상과 일치)
태그
세트
단어
9
13
2
교체 알고리즘
(Replacement Algorithms)
직접 사상 방식 : 교체 알고리즘이 필요 없음
연관 사상 및 세트 연관 사상 방식 : 주기억장치
블록이 적재될 (세트 내) 라인들이 모두 채워져
있는 경우, 어떤 라인을 새로운 블록으로 교체할
것인지 결정하는 알고리즘
최소 최근 사용(Least Recently Used : LRU) 알고리즘
: 사용된 지 가장 오래된 라인을 교체하는 방식
<USE 비트 사용>
FIFO(First In First Out) 알고리즘 : 캐시에 적재된 지
가장 오래된 라인을 교체하는 방식
LFU(Least Frequently Used) : 가장 적게 사용된
라인을 교체하는 방식 <카운터 사용>
임의(Random) 알고리즘 : 임의의 라인을 선택 하여
교체하는 방식
쓰기 정책(Write Policy)
CPU가 캐시의 데이터를 변경하는 경우, 그것을
주기억장치에 갱신(update)하는 시점을 결정.
Write through 방식
Write back 방식
Write through
모든 쓰기 동작은 캐시뿐 아니라 주기억장치에도
동시에 이루어지는 방식.
[장점] 주기억장치의 내용이 항상 유효(valid)하다
(캐시의 내용과 같다).
[단점] 기억장치 통신량이 많아진다.
쓰기 시간이 길어진다.
Write back
새로운 데이터에 대한 갱신이 캐시에서만 이루어 진다.
캐시의 라인이 교체될 때, 만약 그 내용이 변경된 적이
있다면 (dirty 상태), 교체되기 전에 먼저 주기억장치에
갱신되어야 한다.
[장점] 쓰기 시간이 짧다.
[단점] 주기억장치의 일부분이 무효(invalid) 상태에 있다
(캐시의 내용과 다르다).
라인 크기(line size)
주기억장치로부터 블록을 캐시로 읽어 올 때, 해당 단어뿐 아니라
인접한 단어들도 같이 읽어 올 수 있도록 블록(즉, 캐시 라인)의
크기를 결정해야 한다.
지역성의 원리(principle of locality)에 근거 : 참조되었던 단어에
근접하여 있는 단어들이 가까운 미래에 참조될 가능성이 많아지는
특성에 의해 적중률이 높아질 수 있다.
블록(라인) 크기에 따른 특성
블록이 커질수록 캐시에 적재될 수 있는 블록의 수가 감소하기
때문에 블록들이 더 빈번히 교체된다.
블록이 커질수록 멀리 떨어진 단어들도 같이 읽혀오기 때문에
가까운 미래에 사용될 가능성이 낮다.
일반적인 블록(라인)의 크기 = 4 ~ 8 단어
캐시의 수(Number of caches)
다수 캐시(multiple cache) 사용의 보편화
계층적 캐시 : 여러 단계(level)의 캐시들로 구성
형태 : 통합(unified) 혹은 분리(split) 캐시
위치 : 온-칩(on-chip) 혹은 오프-칩(off-chip) 캐시
[예] 2-단계 캐시(2-level cache)
1차 캐시(L1) : 내부(온-칩) 캐시, 명령어 캐시와
데이터 캐시로 분리
2차 캐시(L2) : 외부(오프-칩) 캐시, 통합 캐시