메모리 계층 구조
한 번의 미스로 64바이트 라인을 읽고 주기억장치의 대기 시간이 100 ns일 때, 동시에 처리할 수 있는 미스가 하나뿐이면 읽기 대역폭은 약 0.64 GB/s에 그칩니다. 동시에 10개의 미스를 처리할 수 있다면 대역폭은 대략 얼마가 됩니까? (다른 제약은 없다고 가정합니다)
- A0.064 GB/s
- B0.64 GB/s
- C6.4 GB/s
정답과 해설 보기
정답: C. 6.4 GB/s
대역폭은 동시에 처리 중인 데이터양을 대기 시간으로 나누어 구할 수 있습니다(리틀의 법칙, Little's law). 미스가 하나라면 64 B ÷ 100 ns = 0.64 GB/s이고, 동시에 10개 처리할 수 있다면 10 × 64 B ÷ 100 ns = 6.4 GB/s가 됩니다. 주기억장치의 대역폭을 다 쓰려면 대기 시간을 줄이는 것만이 아니라 많은 미스를 동시에 처리하는 메모리 수준 병렬성(MLP, memory-level parallelism)이 필수적입니다. 0.64 GB/s는 동시에 하나인 경우의 값 그대로이며, 0.064 GB/s는 반대로 10으로 나눈 값입니다.
- A. 0.064 GB/s는 10배가 아니라 10분의 1로 한 값입니다.
- B. 0.64 GB/s는 동시에 하나만 처리할 수 있는 경우의 값입니다.
- C. 올바릅니다. 10 × 64 B ÷ 100 ns = 6.4 GB/s입니다.