CPU는 메모리에서 연산자와 피연산자의 정보를 가져옴
이거보다 더 빠른 방법이 없을까?
특정 음료가 자판기에 있으면 cache hit : 편의점에 안 가도 됨
특정 음료가 자판기에 없으면 cache miss : 편의점에 가야 함~
그럼, 편의점보다 가까운 자판기에 인기가 있을만한 음료수를 배치하면 굳이 편의점에 안 가고 여기서 계속 이용하겠지?
캐시가 인기 있을만한 정보를 미리 들고 있으면 CPU가 캐시에게 물어본다...
내가 지금 메모리 OO에 위치한 변수의 값을 좀 가져와야겠는데 혹시 그거 아니?
만약 OO의 값이 있으면 캐시가 알려주고, 없으면... 메모리에게 가보라고 알려줌!
CPU와 메모리 간 데이터 전송 레이턴시 개선을 위해 사용되는 전략
레이턴시(Latency)는 컴퓨터 과학과 네트워킹에서 중요한 개념으로, 어떤 작업이 시작되고 완료되기까지의 시간 지연을 의미한다. 특히, CPU와 메모리 간 데이터 전송에 있어서의 레이턴시는 CPU가 메모리에 접근하여 데이터를 읽거나 쓰기 시작한 시점부터, 해당 작업이 완료되고 CPU가 그 데이터를 실제로 사용할 수 있게 될 때까지 걸리는 시간을 말함!
그럼, 어떻게 인기가 있는 음료수를 판별할까?
지역성(Locality)
가까운 미래에 재사용할 가능성이 있다고 믿기시간적 지역성인접한 데이터도 사용할 가능성이 있다고 믿기공간적 지역성const arr = []; //배열 사용
...
const result = [];
const loopCount = 10; //arr.length는 loopCount보다 작다고 가정함
for (let i = 0; i<loopCount; i+=1) {
result.push(arr[i] + arr[i+1]);
}
이 코드는 arr 배열에서 인접한 원소들을 더하는 간단한 연산을 수행한다. arr 배열의 각 원소에 대해, 현재 원소(arr[i])와 다음 원소(arr[i+1])를 더한 결과를 result 배열에 저장함
시간적 지역성은 최근에 접근한 데이터에 대해 곧 다시 접근할 가능성이 높다는 개념
arr이라는 배열 내의 메모리들이 순차적으로 사용됨
공간적 지역성은 메모리 상에서 서로 가까이 위치한 데이터에 대해 순차적으로 접근할 가능성이 높다는 개념
CPU는 다수의 코어 보유, 각 코어마다 자체 캐시 보유
M과 S와 I.. MSI프로토콜... 다수의 캐시가 있는 경우 어떻게 최신 상태를 보장할까요?
MESI 프로토콜이라는 것도 있음
TypeScript의 단짝 / 오직 TypeScript만 지원한다.
Express.js와는 다름!
어렵다...