메모리 계층 구조
행렬 곱셈 등에서 사용되는 루프 블로킹(타일링, tiling)의 주된 목적은 무엇입니까?
- A캐시에 들어가는 작은 블록 단위로 계산하여 데이터의 재사용을 늘리기 위해
- B루프 횟수를 줄여 루프 끝에서 실행하는 분기 명령의 수를 적게 하기 위해
- C계산 순서를 바꾸지 않고 사용하는 메모리의 총량을 절반으로 하기 위해
정답과 해설 보기
정답: A. 캐시에 들어가는 작은 블록 단위로 계산하여 데이터의 재사용을 늘리기 위해
큰 행렬의 곱을 그대로 계산하면, 한 번 읽어 온 요소가 다시 사용되기 전에 캐시에서 쫓겨나 주기억장치에서 몇 번이고 다시 읽게 됩니다. 루프 블로킹에서는 행렬을 캐시에 들어가는 작은 블록으로 나누고 블록 안에서 계산을 마침으로써, 읽어 온 데이터를 여러 번 재사용하여 용량 미스를 크게 줄입니다. 분기 명령을 줄이는 것은 루프 언롤링(loop unrolling)의 목적이며, 사용하는 메모리의 총량은 변하지 않습니다.
- A. 올바릅니다. 캐시에 들어가는 단위로 계산하여 데이터의 재사용을 늘립니다.
- B. 분기를 줄이는 것은 루프 언롤링의 목적입니다.
- C. 계산 순서는 바뀌며, 사용하는 메모리의 총량은 변하지 않습니다.