4장 캐시 기억장치
컴퓨터 기억장치는 계층(hierarchy)을 조직된다.
4.1 컴퓨터 기억장치 시스템의 개요
위치
- 내부(레지스터, 주기억장치, 캐시), 외부(하드디스크)
용량
- 워드, 바이트
전송단위
- 워드, 블록
액세스방법
- 순차적
- 직접
- 랜덤
- 연관
성능
- 접근시간, 사이클시간, 전송율
물리타입
- 세미컨덕터, 자기, 광학
물리적 특성
- 휘발, 비휘발성
- 지울 수 있는, 못지우는
구조
- 메모리 모듈
단어(word) : 32비트(인텔) 혹은 48비트
주소지정단위(addressable units) : 주소의 길이 4비트와 주소지정단위의 수 N의 관계는 2^A=N 이다. 워드를 사용한다.
전송단위 : 주기억장치에서 전송단위는 한번에 읽고 쓸수있는 비트의 수이다. 외부기억장치에서는 데이터가 단어보다 훨씬 더 큰 단위로 전송되기도 하며 이들은 블록이라 부른다.
데이터 액세스 방식
- 순차적 액세스(squential access) : 기억장치는 레코드(record)라 불리는 데이터단위로 구성된다.
- 직접 액세스(direct access) : 각 레코드나 블록이 물리적 위치에 따라 별도의 주소를 갖고있다.
- 임의 액세스(random access) : 기억장치 내의 각 주소지정가능한 위치는 선들로 연결된 별도의 주소 지정 매커니즘을 갖고있다. 주기억장치와 캐시 시스템이 임의 액세스 방식을 이용한다.
- 연관(associative) : 단어 내의 특정비트들과 원하는 비트들을 비교하여 일치하는 단어를 액세스한다. 단어는 주소가 아니라 내용의 일부분에 의해 검색된다. 검색시간은 일정하다. 캐시기억자치가 사용한다.
성능
- 액세스 시간(지연) : 주소가 기억장치에 도착하는 순간부터 데이터가 저장되거나 읽혀지는 순간까지의 시간(임의 액세스), 비임의 액세스 기억장치는 읽기쓰기 매커니즘을 원하는 위치로 이동하는데 걸리는 시간
- 기억장치 사이클시간(memory cycle time) : 주로 임의 액세스 기억장치에 적용되며, 액세스 시간과 다음 액세스를 시작하기 위해 요구되는 동작에 걸리는 추가적인 시간을 합한 시간. 버스와 관련있고 프로세서와 무관하다.
- 전송률(transfer rate) : 데이터가 기억장치로 전송되어 나가거나 들어오는 비율. 임의 액세스 기억장치에서는 1/사이클시간 에 해당. 비임의 액세스 기억장치는 다음과 같다.
-- T_N=T_A + n/R
-- T_N = N개의 비트들을 읽거나 쓰는데 걸리는 평균시간
-- T_A = 평균 액세스 시간
-- n : 비트수
-- R = 전송률, 초당비트(bps)
* 기억장치 계층
세가지 요건
- 용량, 속도, 가격
두레벨의 기억장치(two level of memory)
- 레벨 1 : 1000개의 단어 저장, 액세스시간은 0.01 마이크로초
- 레벨 2 : 100000개의 단어저장, 액세스시간은 0.1 마이크로초
보조기억장치 ; 자기디스크, 프로그래머는 파일이나 레코드 단위로만 액세스 가능, 가상기억장치로 활용 가능
4.2 캐시 기억장치의 원리
기억장치 속도가 가장 빠른 속도에 접근함과 동시에, 저렴한 반도체 기억장치의 가격으로 큰 기억장치 용량을 가질 수 있도록 하기 위함이다.
어떤 정해진 수의 단어들로 구성된 블록이 주기억장치로부터 캐시로부터 읽혀지고, 그 단어가 프로세서로 전달된다.(참조의 지역성)
라인 : 캐시의 기본단위를 언급할 때, 블록보다는 라인이라는 용어를 사용함
주기억장치는 2^n개의 단어로 구성됨, 단어는 별도의 n비트 주소를 가진다.
사상(mapping)하기 위해 주기억장치는 k단어씩으로 나누어진 여러개의 블록들로 이루어진 것으로 간주된다.
주기억장치에는 M=2^n/K 개의 블록들이 있다.
각 라인 K 단어들과 수비트의 태그를 포함한다.
각 라인은 제어비트도 포함한다.
라인크기: 태그와 제어비트들을 제외한 라인의 길이
읽기동작
- 프로세서는 읽을 단어의 주소(RA) 발생
- 그 단어가 캐시에 있으면, 그것이 프로세서로 전송된다. 없으면 단어를 포함한 블록이 캐시로 적재되고, 그 단어 프로세서로 전달된다.
4.3 캐시 설계의 요소
4.3.1 캐시 주소
가상기억장치: 프로그램으로 하여금 물리적으로 이용가능한 주기억장치. 크기에 상관없이 논리적인 관점으로 기억장치의 주소를 지정할 수있게 해주기 위한 설비
가상캐시 혹은 논리적 캐시는 가상 주소를 이용하여 데이터를 저장한다.
가상캐시는 캐시엑세스 속도가 물리적 캐시보다 더 빠르다
4.3.2 캐시크기
용량이 큰 캐시들은 작은 캐시보다 약간 더 느려지는 경향이 있다.
4.3.3 사상 함수
주기억 장치의 블록을 캐시라인으로 사상해주는 알고리즘이 필요하다.
* 직접사상 : 주기억장치의 각 블록을 한개의 캐시라인으로만 사상한다.
- i = j modulo m
- i : 캐시라인 번호
- j : 주기억장치의 블록 번호
- m : 캐시내 라인들의 수
주소길이 = (s+w)비트
주소지정가능한 유닛수= 2^(s+w) 단어 혹은 바이트
블록 크기 = 라인크기= 2^w 단어 혹은 바이트
주기억 장치내 블록수= 2^(s+w)/2^w = 2^s
캐시내 라인의 수 = m= 2^r
캐시 크기= 2^(r+w) 단어 혹은 바이트
태그의 크기 = (s-r) 비트
- w 비트: 주기억장치 블록내의 단어 또는 바이트를 구분하는 최하위비트
- s 비트 : 남은 비트로써 주기억장치의 2^s개의 블록들 중 하나를 지정
- s-r 비트로 태그해석
- r비트는 라인필드로 해석
- m=2^r
간단하고 구현비용이 적게 든다.
단점은 캐시위치가 고정됨
빅팀 캐시(victim cache) : 원래 빠른 액세스 시간에 영향을 주지 않고도 직접 사상캐시의 충돌 미스를 줄이는 방법
* 연관 사상
주기억장치 블록이 캐시의 어떤 라인으로도 적재될수있도록 허용함으로써 직접 사상방식의 단점을 극복한다.