기본 콘텐츠로 건너뛰기

글

라벨이 Architecture인 게시물 표시

cache를 구성하는 컴포넌트와 역할

캐시는 메모리에서 가져온 데이터를 저장하는 '데이터 배열' 메모리에서 어느 주소에 위치한 데이터인지 등을 나타내는 '태그 배열' 데이터 배열에 읽고 쓰거나 태그 배열의 내용을 제어하는 '캐시 컨트롤러' 로 구성됨

cache replacement policy

n-way associative를 기준으로 두가지 방법. 첫번째 방법 은 Random replacement , 즉, 임의로 아무거나 대충 골라서 지워버리고 거기에 넣는 방법 따라서 효용 면에서나 난이도 면에서나 좋은 방법이 아님 두번째 방법 은 LRU(Least Recently Used) 라는 방법입니다. 각 index의 각 way마다 LRU bit를 저장합니다. 이 LRU는 자신이 속한 index가 참조되면 1씩 올라가고, 만일 그 중에서 참조된 대상이 자기 자신이라면 자신의 값은 0이 됩니다. 그리고 만일 어떤 index의 한 값을 replace해야할 경우가 발생하면 LRU값이 가장 큰 녀석을 지워버리고 그곳에 값을 저장합니다.

Write-through cache, write-back cache 란? write buffer 역할

Write-through cache Write Through라는 용어는 Memory에 뭔가를 쓸 때 그 값이 Cache위에 올라와 있는 값일 경우에 곤란함. (Cache와 Memory값이 다르면 안되므로) Write Through를 쓰게 되면 Cache와 Memory에 모두 Update를 같이 해버림 Write Back Data를 쓸 때 Memory에는 안 쓰고 Cache만 update하는 방법  Write Through보다 훨씬 빠름 나중에 Cache에 있는 내용을 버리게 되는 경우에 update를 해줌 Write Back을 하면 속도가 빠른 대신에 Memory와 Cache가 서로 값이 다르게 된다는 단(Inconsistency 발생) => Device를 Control할 때 Write back을 쓰게 되면 실제 Device에 값을 써야 되는데 Cache에만 써놓고, Device에 값을 안 넘기는 경우가 발생. 예를 들면 LCD 같은 데에다가 Data를 뿌리고 싶은데 LCD에다가 값을 썼더니 Cache에만 값을 쓰고 LCD에다가는 값을 안 넘겨줘서 LCD에 더 이상 그림이 안 뿌려지는 경우도 발생  Write Buffer의 역할 쓰기 할때 FIFO buffer를 가지고 CPU대신에 Memory에 Data를 적어주는 일을 함. CPU가 좀더 다른 일을 효율적으로 할 수 있게함

direct-mapped cache 와 set-associative cache 그리고 fully associative의 장단점

direct-mapped cache 메모리 블록 주소를 상위 계층의 한 곳에 바로 mapping 장점 : 빠른시간에 접근할 수 있다 단점 : cache miss 확률이 높다 set-associative cache 각 블록당 n개의 배치 가능한 위치를 갖는 집합 연관 캐시(n-way set-associative cache) 장점 : cache hit 확률이 증가한다 단점 : 접근시간이 증가한다 fully associative cache 메모리 블록이 캐시의 어느 곳에나 위치할 수 있음. 장점 : cache miss 확률이 감소한다 단점 : 주어진 블록을 찾기 위해서는 캐시 내의 모든 엔트리를 검색해야함(하드웨어 비용증가), 적중 시간 증가

캐시에서 라인을 크게했을경우와 작게했을경우 장단점

캐시는 태그와 캐시라인으로 구성 캐시 라인에 붙이는 태그는 32bit 주소공간을 갖는 프로세스는 32bit 64bit 주소공간을 갖는 프로세스는 64bit 정도의 크기가 필요 캐시에서 라인을 작게했을 경우 태그로 사용할 공간이 증가한다. 하지만 태그를 기억할 공간의 오버헤드가 커져 캐시 메모리의 총 비트 수 중에서 데이터 기록에 사용할 수 있는 부분이 작아짐. 라인을 크게했을 경우 장점은 데이터를 큰 단위로 읽어 올수 있음. 하지만 메모리에서 큰 묶음으로 가져왔는데, 그 중의 일부 데이터밖에 사용할 수 없고 대부분의 데이터는 쓸모 없게 되므로 캐시 메모리를 유효하게 이용할 수 없게 됨.

캐시에서 태그란?

메인 메모리의 크기가 32 이고 캐시 메모리의 크기가 4라고 할경우 1) 메인 메모리의 주소는 총 5비트 이고 , 캐시 메모리는 2비트로 나타낼 수 있다. 2) 메인 메모리 주소의 하위 2비트는, 자기가 갈 캐시 메모리의 번지수가 된다. 3) 나머지 3비트가 바로 tag로 사용되는데, tag는 같은 캐시 방에 들어 갈 수 있는 메인메모리의 실제로 CPU가 요구한 메모리 번지의 데이터가 맞는지 검증하는 용도로 사용된다 .

Page fault의 정의와 원인

*Page란? 가상 메모리를 사용하는 최소 크기 단위 쓰는 이유 : 논리 주소공간이 한 연속적인 공간에 모여 있어야 한다는 제약을 없애기 위해서 *Page Fault란? 운영체제가 페이지 단위로 메모리에 접근하게 될때, 해당 페이지가 물리 메모리 상에 존재하지 않을때 발생

캐시가 필요한 이유와 Cache hit ratio

캐시가 필요한 이유 : 대부분 프로그램은 한번 사용한 데이터를 다시 사용할 가능성이 높고, 그 주변의 데이터도 곧 사용할 가능성이 높은 데이터 지역성을 가지고 있다. 데이터 지역성을 활용하여 메인 메오리에 있는 데이터를 캐시 메모리에 불러와 두고, CPU가 필요한 데이터를 캐시에서 먼저 찾도록 하면 시스템 성능을 향상시킬 수 있다. Cache hit ratio : cache hit ratio : 적중률 = (캐시히트횟수)/(전체 참조횟수) cache hit : 참조하려는 데이터가 캐시에 존재할때 캐시 히트 cache miss : 참조하려는 데이터가 캐시에 존재하지 않을때 캐시 미스 평균접근시간: cache hit ratio * 캐시접근시간 + (1-cache hit ratio) *메인 메모리 접근시간 단, 캐시 접근시간 << 메인 메모리 접근 시간