메모리 대역폭

Memory bandwidth

메모리 대역폭은 프로세서반도체 메모리에서 데이터를 읽거나 메모리에 저장할 수 있는 속도입니다.메모리 대역폭은 보통 바이트/초 단위로 표시되지만, 일반적으로 사용되는8비트 바이트의 배수가 아닌 자연 데이터 크기의 시스템에 따라 다를 수 있습니다.

특정 메모리 또는 시스템에 대해 애드버타이즈되는 메모리 대역폭은 일반적으로 이론상 최대 대역폭입니다.실제로 관찰된 메모리 대역폭은 애드버타이즈된 대역폭보다 작습니다(또한 이를 초과하지 않음을 보증합니다).다양한 액세스 패턴을 사용하여 지속 메모리 대역폭을 측정하기 위해 다양한 컴퓨터 벤치마크가 존재합니다.이는 시스템이 실제 애플리케이션의 다양한 클래스에서 유지해야 하는 메모리 대역폭에 대한 통찰력을 제공하기 위한 것입니다.

측정 규칙

"bytes/second"의 분자로 전송되는 데이터의 양을 정의하기 위한 세 가지 규칙이 있습니다.

  1. bcopy 규칙:은 단위 시간당 메모리의 한 위치에서 다른 위치로 복사된 데이터 양을 카운트합니다.예를 들어 메모리 내의 한 위치에서 다른 위치로 1초 만에 100만 바이트를 복사하면 초당 100만 바이트로 계산됩니다.bcopy 규칙은 자기 정합성이 있지만 읽기 3건, 쓰기 1건 등 접근패턴이 복잡한 케이스로 쉽게 확장되지 않습니다.
  2. 스트림 규칙: 응용 프로그램코드가 명시적으로 읽는 데이터의 양에 응용 프로그램코드가 명시적으로 [1]쓰는 데이터의 양을 합산합니다.앞의 100만 바이트 복사 예에서 STREAM 대역폭은 100만 바이트 읽기 +1초 동안 쓴 100만 바이트로 카운트되며 총 200만 바이트/초입니다.STREAM 규약은 가장 직접적으로 사용자 코드에 관련되어 있지만 하드웨어가 실제로 실행하는 데 필요한 모든 데이터 트래픽을 카운트하지 않을 수 있습니다.
  3. 하드웨어 규칙: 하드웨어에서 읽거나 쓴 실제 데이터 양을 계산합니다. 데이터 모션이 사용자 코드에 의해 명시적으로 요구되었는지 여부를 나타냅니다.동일한 100만 바이트 복사 예제를 사용하면 쓰기 할당 캐시 정책을 사용하는 컴퓨터 시스템의 하드웨어 대역폭에 100만 바이트의 트래픽이 추가됩니다.하드웨어는 저장소를 실행하기 전에 타깃 어레이를 메모리에서 캐시로 읽기 때문입니다.이것에 의해, 실제로 하드웨어에 의해서 전송되는 합계 300만 바이트/초의 값이 됩니다.하드웨어 규약은 하드웨어와 가장 직접적으로 관련되어 있지만 사용자 코드를 구현하기 위해 필요한 최소 데이터 트래픽 양을 나타내지 않을 수 있습니다.
예를 들어, 일부 컴퓨터 시스템에는 특별한 명령을 사용하여 쓰기 할당 트래픽을 피할 수 있는 기능이 있으므로 수행된 데이터 트래픽의 양에 따라 대역폭이 잘못 비교될 수 있습니다.

대역폭 계산 및 명명

명명법은 메모리테크놀로지에 따라 다르지만 일반 DDR SDRAM, DDR2 SDRAM 및 DDR3 SDRAM 메모리의 경우 총 대역폭은 다음과 같습니다.

  • 기본 DRAM 클럭 주파수
  • 클럭당 데이터 전송 수:두 번째는 '더블 데이터 레이트'(DDR, DDR2, DDR3, DDR4) 메모리의 경우입니다.
  • 메모리 버스(인터페이스) 폭: 각 DDR, DDR2, 또는 DDR3 메모리인터페이스의 폭은 64비트입니다.이러한 64비트를 「라인」이라고 부르는 경우가 있습니다.
  • 인터페이스 수:최신 퍼스널컴퓨터는 일반적으로 128비트 버스폭을 유효화하기 위해 2개의 메모리인터페이스(듀얼채널 모드)를 사용합니다.

예를 들어 듀얼 채널메모리와 채널당1개의 DDR2-800 모듈을 탑재한 컴퓨터의 이론상 최대 메모리 대역폭은 다음과 같습니다.

초당 400,000 클럭 × 클럭당 2 회선 × 64 비트 × 2 인터페이스 =
1,024,000,000 (1024억)비트/초 (바이트, 12,800 MB/초 또는 12.8 GB/초)

이 이론상 최대 메모리 대역폭은 '버스트 레이트'라고 불리며 지속 가능하지 않을 수 있습니다.

DDR, DDR2 및 DDR3 모듈의 명명 규칙은 최대 속도(DDR2-800 등) 또는 최대 대역폭(PC2-6400 등)을 지정합니다.속도 정격(800)은 최대 클럭 속도가 아니라 최대 클럭 속도의 2배입니다(데이터 레이트가 2배가 되었기 때문입니다).지정된 대역폭(6400)은 64비트 폭을 사용하여 초당 전송되는 최대 메가바이트 수입니다.듀얼 채널모드 설정에서는 이 폭은 사실상 128비트입니다.따라서 이 예의 메모리 구성은 듀얼 채널모드로 동작하는2개의 DDR2-800 모듈로 단순화할 수 있습니다.

모듈당 2개의 메모리인터페이스는 PC 시스템메모리의 일반적인 구성이지만 싱글채널 구성은 오래된 디바이스, 로우엔드 디바이스 또는 저전력 디바이스에서 공통적입니다.일부 PC 및 대부분의 최신 그래픽 카드는 3개 이상의 메모리 인터페이스를 사용합니다(예를 들어 인텔의 LGA 2011 플랫폼 및 NVIDIA GeForce GTX 980의 경우 4개).다수의 인터페이스를 병렬로 실행하는 고성능 그래픽 카드는 메모리 버스 전체 폭을 매우 크게 만들 수 있습니다(NVIDIA GeForce GTX TITAN의 384비트, AMD Radeon R9 290X의 512비트 등).

ECC 비트

Error Correcting Memory(ECC; 오류 정정 메모리)를 탑재한 시스템에서는 인터페이스의 추가 폭(통상 64비트가 아닌 72비트)은 대역폭 사양으로 카운트되지 않습니다.이는 추가 비트를 사용자 데이터 저장에 사용할 수 없기 때문입니다.ECC 비트는 하드웨어에 저장되어 있는 정보라기보다는 메모리하드웨어의 일부로 생각하는 것이 좋습니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ STREAM 벤치마크 FAQ: 바이트 수 및 FLOPS 카운트: http://www.cs.virginia.edu/stream/ref.html#counting

일반

외부 링크