대역 폭 테스트 도구
2596 단어 도구 응용
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Bandwidth 는 메모리 대역 폭 기준 테스트 프로그램 으로 주로 x86 및 x8664 플랫폼 은 순서대로 읽 기와 쓰기 와 무 작위 읽 기와 쓰기 크기 가 다른 데이터 블록 을 통 해 시스템 의 메모리 대역 폭 성능 을 테스트 합 니 다.
항목 주소
Bandwidth 는 어 셈 블 리 언어 가 실 현 된 지원 라 이브 러 리 를 제공 하여 시스템 구조 와 관련 된 특정한 작업 을 수행 합 니 다. 예 를 들 어 일부 레지스터 의 내용 을 읽 는 것 입 니 다.
이 어 셈 블 리 라 이브 러 리 를 이용 하여 현재 시스템 CPU 의 모델 과 지원 하 는 특성 을 검사 하고 해당 하 는 작업 모델 을 선택 합 니 다. 예 를 들 어 필자 기계 의 CPU 는:
CPU family: GenuineIntel
CPU features: MMX SSE SSE2 SSE3 SSSE3 SSE4.1 SSE4.2 XD Intel64
주 프로그램 이 실 행 될 때 CPU 특성 에 따라 작업 모드 를 선택 합 니 다. if (mode == SSE2) {
print (L"(128-bit), size = ");
}
else if (mode == AVX) {
print (L"(256-bit), size = ");
}
else {
#ifdef __x86_64__
print (L"(64-bit), size = ");
#else
print (L"(32-bit), size = ");
#endif
}
필자 의 CPU 는 SSE 2 를 지원 하고 AVX 를 지원 하지 않 기 때문에 128 bit 의 데이터 비트 폭 으로 해당 하 는 메모리 읽 기와 쓰기 작업 을 한다.필자 의 기 계 를 예 로 들 면 테스트 는 주로 다음 과 같은 몇 가지 부분 으로 나 뉜 다.
|-------|128bit |64bit |
|:-----:|:-----:|:----:|
| 순차 읽 기 | | |
| 무 작위 읽 기 | | |
| 순서 쓰기 | | |
| 무 작위 쓰기 | | |
옆길 에서 각급 cache 를 떨 어 뜨 릴 지 여 부 를 선택 할 수 있 습 니 다. 필자 기계 의 CPU cache 상황 은 다음 과 같 습 니 다.
Cache 0: L1 data cache, line size 64, 8-ways, 64 sets, size 32k
Cache 1: L1 instruction cache, line size 64, 8-ways, 64 sets, size 32k
Cache 2: L2 unified cache, line size 64, 16-ways, 4096 sets, size 4096k
읽 기와 쓰기 에 사용 되 는 데이터 블록의 크기 는 128 B 에서 128 MB 로 점점 커 졌 다. 각급 cache 의 크기 가 다 르 기 때문에 메모리 읽 기와 쓰 기 를 할 때 작은 데이터 블록 은 cache 에 저장 되 고 큰 데이터 블록 은 cache 를 거 쳐 메 인 저장 소 에 저장 된다.따라서 데이터 블록 크기 가 증가 함 에 따라 몇 개의 노드 에서 대역 폭 의 크기 는 현저 한 변화 가 있 을 것 이다. 주요 원인 은 각급 cache 의 용량 상한 선 에 이 르 렀 고 하층 저장 으로 전환 하 는 것 이다.bandwidth 는 테스트 결 과 를 로그 파일 로 만 들 고 도표 한 장 을 만 들 며 대역 폭 의 점프 는 도표 에서 가장 직관 적 으로 나타난다.32KB 와 4MB 대역 폭 이 눈 에 띄 게 감소 하 는 추세 다.