콤퓨터 공감 능력 키우기
콤퓨터가 인간을 더 공감해야하는거 아닐까? 나는 그 마음에 대해 공감할게
CPU 아키텍처
요즘 CPU는 메모리 접근 속도를 높이기 위해 캐시를 사용함
- 대부분 세 단계(L1, L2, L3)로 구성됨
- 논리 코어가 메모리에 가까울수록 접근 속도도 빨라짐(L1이 제일 빠름)
- 메인메모리(RAM)의 평균 속도는 L1에 비해 50배 가량 느림
- ⇒ 프로그래밍 성능을 높이기 위해 CPU 캐시 활용도를 최대한 높이자
캐시라인
왜 캐시라인이 필요할까?
어떤 메모리 지점에 접근할 때(ex. 변수를 읽을 때) 다음 하나가 발생할 확률이 높음
- 최근에 접근한 데이터가 가까운 미래에 다시 접근될 가능성이 높다는 개념 → 시간지역성
- 메모리에서 인접한 데이터들이 가까운 시점에 함께 접근될 가능성이 높다는 개념→ 공간지역성
func sum(s []int64) int64 {
var total int64
for i := 0; i < len(s); i ++ {
total += s[i]
}
return total
}
- s[0]에 접근한다는 건, s[1], s[2]에도 접근한다는 위미
- → CPU 캐시가 필요한 이유는 반복적으로 접근하는 변수의 접근 속도를 높이기 위해서
- 공간 지역성 때문에 CPU는 메인메모리에서 캐시로 복사할 때 변수 하나만 가져오지 않고 캐시 라인을 가져옴