컴퓨터(Computer Science)/컴퓨터구조(Computer Arichitecture)

메모리 계층구조, Memory Hierarchy 에 대한 보충내용[컴퓨터구조]

게임이 더 좋아 2020. 6. 1. 14:33
반응형
728x170

 

 

메모리 계층구조를 하는 이유

 

 

캐싱을 위함.

캐싱 안할거면 계층적 구조를 가질 필요도 없음

 

 

즉, 모든 계층에서 

Block placement

Finding a block

Replacement on a miss

Write policy

를 정해줘야함.

 

우리는 답을 이미 배워왔다.

 

 


 

Block placement 에 대해 다시 복습해보자

 

 

Associativity에 따라 성능이 결정되는 것을 이전 시간에 알아봤다.

하지만 그것도 마냥 높다고 좋은 것이 아니었다.

Miss rate를 줄여줬지만 hit time을 늘리는 결과를 가져오기도 했다.

또한 Comparator를 이용한다면 비용도 올라가기도 했다.

 


 

Find a block은 어떨까??

 

 

Direct는 entry에 하나 밖에 들어있지 않기 때문에

index로 바로 구할 수 있었다. 즉, Tag로 바로 구할 수 있었다.

 

2개 이상의 Associativity를 가지고 있다면

Set을 결정하고 그 안의 Entries에 대해서 조사를 해야 한다. 

entries의 개수에 따라 조사 횟수가 달라진다.

 

Fully는 모든 Entries를 조사해야만 한다.

Full lookup table을 보진 않지만 

Fully는 엄청난 비용이 든다는 것이다.

 

** 가상메모리에서는 Full table lookup을 쓰지만 테이블의 크기가 엄청나게 커진다.

 

 

이러한 것들 때문에 비용과 성능을 잘 고려해서 Associativity를 설정한다.

 


 

Replacement에 대해 알아보자

 

 

 

대표적으로는 LRU다.

하지만 Associativity가 많아질수록 복잡해지고 해당 비교하는 데에 cost가 크기 때문에

많을 때는 Random을 쓴다.

 

 


 

마지막으로 Write Policy가 있다.

 

 

즉시 쓰기와 나중 쓰기

 

Write-through의 경우

하위 계층와 상위 계층을 한꺼번에 쓴다.

교체도 간단하고 write buffer를 통해 시간을 줄일 수 있다.

 

 

Write-back의 경우

우선 상위계층만 기록하고 

해당 블럭이 교체될 때 하위 계층에 기록하는 방식이다.

그래서 특정 블럭의 update를 계속 체크하기 위한 데이터를 가지고 있어야 한다.

 

 

가상메모리는 Write-back만 쓸 수 있다.

Disk 접근 시간의 상위 계층 시간에 비해 너무 크기 때문에

Write-through가 불가능하다.

 

 


 

그 다음으로는 캐시 미스의 종류에 대해서 다시 알아보자

**중요한 내용이다.

 

 

 

처음 참조하면 당연히 캐시에 올라와있지 않아서 miss가 발생한다.

이것을 우리는 Compulsory miss라고 한다.

 

Capcity Miss는 캐시의 사이즈가 꽉차서 발생하는 Miss다.

캐시가 꽉 차면  다른 캐시를 빼고 집어넣어야 한다.

캐시가 올라와있어도 replace되면 다시 참조할 때 찾을 수 없기 때문이다.

 

Conflict miss, Coliision miss 는 조금 특별한 경우다.

Set을 선택했을 때 entry 간에 competition 상태가 되어 miss가 발생하는 경우다.

때문에 fully associative일 때는 발생하지 않는다.

 

캐시 미스가 발생했을 때 무슨 miss인지 알 수 있어야 한다.

 


캐시 사이즈와 캐시 성능의 관계

이미 Trade-off 관계라고 말했다.

 

 

어떻게 되는지 알아 보고 넘어가는 것이 좋다.

 


 

Virtual Machine이란 것에 대해서도 

살짝 알아보고 가자

 

가상 머신이라고 부르는데

왜 영어랑 한글이랑 섞어서 부르는지는 모르겠다.

가상 기계라 하던가 virtual machine이라 하던가 ㅋㅋㅋ 가상 머신이라고 하는 사람이 꽤 많다.

 

아무튼 대표적으로 예를 들면

컴퓨터가 1개지만 운영체제가 2개일 수 있는 신기한 이유다.

 

 

 


 

캐시에 대해서 유한 상태 기계로 표현할 수 있는데

Finite state machine을 알아보고 지나가자

 

예를 들어보자

 

 

위의 조건을가진다.

 

 

CPU의 Write/Read 시그널과 Cache의 Write/Data 시그널이 비트 수가 다르다.

CPU는 1개의 WORD에 대해서만 읽고 쓰기 때문에 그렇다.

 

그 이유는 캐시와 메모리의 단위는 WORD가 아니라 블럭이고

해당 블럭 사이즈가 4-WORD이기 때문이다.

 

그래서 FSM(Finite State Machine)을 보자면

 

크게 볼 필요는 없지만 보자면

 

 

각 Clock edge( rising, falling) 에 따라서 transition이 발생한다.

state는 이진 값으로 저장되며

state는 레지스터에 저장되는데

상태는 현재 레지스터 상태에서 input에 따라 바뀌게 된다.

 

이러한 것이 FSM이고 실제로 캐시 컨트롤은 아래의 상태를 가지고 한다.

 

 

그냥 읽으면 알 수 있다.

FSM이 유용한 이유가 여기 있다.

실제는 훨씬 복잡하다. 그냥 간략하게 설명했고 이해하기 편하다.

 

728x90
반응형
그리드형