2013-05-28 4 views
2

내가 인텔 제온 프로세서의 Datasheet을 읽고 프로그래머를위한 의미합니까 어떻게 다음 보았다독립 메모리 채널 : 그것은

통합 메모리 컨트롤러 (IMC)를 지원하는 DDR3 프로토콜 사 독립과를 64 (각각 72 비트)에 대해 8 비트 ECC가있는 8 비트 메모리 채널을 지원하고 메모리 유형에 따라 채널 당 1 - 3 개의 DIMM을 지원합니다. .

나는 이것이 프로그래머 관점에서 정확히 무엇을 의미하는지 알아야합니다.

  1. 이 메모리 컨트롤러가 인접하지 않은 메모리 영역에서 동시에 데이터의 4로드를 실행할 수있다),이에

    문서는 오히려 드문 드문 것 같다 내가 물어 손에 인텔 사람이없는 (그리고 최대 3 개의 메모리 DIMM에서 각 데이터 요청)? 나는. 3 개 DIMM을으로부터 스트라이프 4x64 비트 값, 예를 들면 :
    | X | _ | X | _ | X | _ | X |

  2. 이 IMC는 1x256 비트까지로드 (1 개)의 부하를 실행할 수있다 (X는 _ 언로드 된 데이터의 임의의 큰 영역은 데이터로드) 인접한 메모리 영역으로부터.
    | X | X | X | X | _ | _ | _ | _ |

답변

2

이것은 컴파일러 및 OS의 메모리 컨트롤러에 따라 구현 특정 보인다. 이 표준은 http://www.jedec.org/standards-documents/docs/jesd-79-3d에서 사용할 수 있습니다. 컨트롤러가 완벽하게 호환되면 인터리브 모드 또는 비 인터리브 모드를 나타 내기 위해 설정할 수있는 특정 비트가있는 것으로 보입니다. DDR3 스펙의 24, 25 및 143 페이지를 참조하십시오.

특히 i7/i5/i3 시리즈의 경우 최신 Intel 칩의 경우 첫 번째 예제와 같이 메모리가 인터리브됩니다. 이보다 더 새로운 칩과 아마 그것을 지원하는 컴파일러의 경우, 인터리브/스트라이핑 될 수있을만큼 큰 것을로드하는 예가 하나의 Asm/C/C++ 레벨 호출은 각 메모리 채널에 필요한 독립적 인 하드웨어 채널 레벨로드를 시작합니다. 위키 피 디아에 멀티 채널 메모리 페이지의 트리플 채널 섹션에서

이렇게 CPU를 적은 목록이

은 가능성이 불완전 : 사양 링크에 대한 http://en.wikipedia.org/wiki/Multi-channel_memory_architecture

+1

감사합니다. 하지만 올바른지 확인하려면 다음을 수행하십시오. QuadCore 프로세서에 이러한 메모리 컨트롤러가 있고 내 예제 (1)에 표시된 것처럼 4 개의 스레드 (동시에)가로드를 발행하는 경우 - 스레드 당 하나의 'X' 떨어져서. 메모리 컨트롤러가 병렬로 (= 독립적으로) 읽을 수 있습니까? 그리고 이들 4 가지 요청 각각은 최대 3 개의 DIMM (TripleChannel의 경우)에 의해 서비스 될 수 있습니까? – Patrick

+0

@Patrick 하드웨어를 올바르게 이해하면 모든로드가 캐시와 비교하여 검사됩니다. 그런 다음 존재하지 않는 것이 직렬화 된 순서로 캐시에로드됩니다. 나는 그 명령이 무엇이 될지 모르겠다. 또한 구현과 관련이 있다고 생각한다. 캐시에서 실제 작업이 완료됩니다. 로드 요청 크기가 캐시를 초과하면 흥미로운 일이 발생하기 시작합니다. 한 코어가 새로로드 된 데이터에서 계속 작업하고 있습니다. 일부 CPU는 캐시를 비 웁니다 (나중에 다른로드를 강제 실행). 이 수준에서 코딩 된 로직과 항상 상관 관계가있는 것은 아닙니다. – Sqeaky

+1

@Squaky : 물론 사실입니다. 아마 내가 바꾸어야 할 것 : 컨트롤러에 독립 채널이있는 경우 - 한 번에 두 개 이상의로드 요청에 대해 데이터를로드 할 수 있습니까? 이 컨텍스트에서 "독립적 인"의미를 이해하고 싶습니다. 이 기능은 여러 개의 요청을 동시에 처리 할 수있는 병렬 처리 기능을 제공합니까 (대기열로 직렬화하는 것과 반대)? – Patrick