14P by xguru 2021-01-08 | favorite | 댓글 5개

"M1의 싱글코어는 28단계 이상으로 메모리를 병렬처리"
- 메모리 접근은 계산작업보다 비쌈
- 이론상 x에 접근할때 근처의 x+1 등은 공짜로 읽어올 수 있다는 naive한 모델은 합리적으로 보이기도 하지만, 성능 예측이 불가
- 어떨때 이 성능예측이 실패할까? CPU 코어는 동시에 여러곳의 메모리 접근을 시도함
- 7개의 메모리 접근을 동시에 한다면 1개에 접근 하는것 보다는 느리겠지만, 7배가 느릴까 ?
- 벤치마크 프로그램을 통해서 몇개의 동시접근(lane, 독립적인 포인터 추적 루틴)이 가능한지를 테스트
ㅤ→ 어느 정도선에서 동시 접근 성능이 떨어지는지를 통해서 몇개의 lane을 가지는지를 예측
- 애플 M1의 코어 하나는 28 lane이 넘어가면 성능이 떨어지는 것으로 봐서 28이라고 추측한 것
ㅤ→ 그래서 높은 수준의 병렬처리때문에 저 naive 한 모델의 비용예측은 실패한다고

CPU 이야기가 나올 때마다

https://ridibooks.com/books/443000037

이 책이 큰 도움이 되고 있네여. 혹시 처음부터 따라가고 싶으신 분들은 이 책을 읽고 읽으시면 조금은 따라갈만 한 것 같습니다.

리디북스 홍보 방지 차원에서(...) 책 이름은 : 프로그래머가 몰랐던 멀티코어 CPU 이야기 입니다. 왜 하필 리디북스냐면, 종이책은 절판되었고. 전자책은 남은 상점이 리디북스만 있어 부득이하게 올렸습니당.

김민장님이 이런책도 쓰셨군요... 벌써 10년이라니 세월이 무상하네요 ^^;

이게 참 어려운 부분이죠. 일반화하기 어려우니까요. 하지만 요즘 CPU 구조나 병렬처리가 많아진 상황에서는 꽤 효과적일 수 있을것 같습니다. 그만큼 하드웨어 구조 개선 실험도 많이 하고 있구나 싶네요.

전산 교수님이 쓰셔서 그런지 딱 자신이 파악한 사실만을 적어두셨는데..
해당글의 댓글과 HN의 댓글을 조합해서 보면 https://news.ycombinator.com/item?id=25659615
기본적으로는 M1이 28개 이상의 병렬화와 L1캐쉬의 사이즈 등 덕에 여러곳을 랜덤억세스 하더라도 훌륭한 성능을 보여준다 라고 이해하면 될 것 같습니다.