컴퓨터 아키텍처 (정량적 접근법 5ed)에 대한 Hennessy-Patterson의 저서에 따르면 다중 메모리 뱅크가있는 벡터 아키텍처에서는 다음 조건이 충족 될 경우 뱅크 충돌이 발생할 수 있습니다 5ed에서 페이지 279) :메모리 뱅크 벡터 프로세서에서의 메모리 액세스 충돌 조건
은행 (수) 메모리 충돌이 경우에 발생할 것이기 때문에 은행의/최소 공배수 (수, 보폭)
그러나, 내가 대신 LCM의 GreatestCommonFactor해야한다고 생각 < 은행 바쁜 시간, 유효한 은행 번호은 바쁜 시간보다 적습니다. 실효적인 뱅크 수를 말하자면 8 개의 뱅크와 2 개의 보폭이 있다고 가정 해 봅시다. 효과적으로 4 개의 뱅크가 있습니다. 왜냐하면 메모리 액세스가 4 개의 뱅크에서만 정렬되기 때문입니다 (예를 들어 액세스가 모두 짝수, 0부터 시작하여, 은행의 출입은 0,2,4,6)으로 늘어납니다.
실제로이 수식은 그 바로 아래에 주어진 예에서도 실패합니다. 총 메모리 대기 시간이 12 클럭 사이클 인 6 개의 클럭 사이클의 사용 시간을 가진 8 개의 메모리 뱅크가 있다고 가정하면 1의 스트라이드로 64 요소 벡터로드를 완료하는 데 얼마나 걸리나요? - 여기서는 12 + 64 = 76 클럭 주기로 시간을 계산합니다. 그러나 메모리 뱅크 충돌은 주어진 조건에 따라 발생하므로 분명히 한 사이클 당 하나의 액세스를 가질 수 없습니다 (방정식에서 64 개).
잘못되었거나 틀린 공식이이 책의 다섯 가지 버전에서 생존 할 수 있습니까? (있을 법하지 않음)?
Intel Sandybridge의 L1 캐시와 같이 작동하면 각 캐시 라인 쌍 (128B 합계)이 8 개의 16B 뱅크로 나뉘며 서로 다른 라인의 동일한 뱅크에서 동시로드가 뱅크 충돌로 작동하는 경우 올바르게 들립니다. (그러나 동일한 라인에서 동일한 뱅크에 대해 두 번의 읽기가 동일한 사이클에서 발생할 수 있습니다). [Agner Fog의 microarch pdf] (http://agner.org/optimize/)에서 설명합니다. Haswell은 나중에 은행 갈등이 없으므로 이것은 클록 당 두 번의 읽기를 지원하는 인텔 마이크로 아키텍처의 처음 두 세대 인 SnB와 IvB에만 적용됩니다. –