RightMark Memory Analyzer v.3.0 — новая версия универсального теста подсистемы CPU / Chipset / RAM

7 апреля 2004 Г.

RightMark Memory Analyzer 3.0 - CPU/Chipset/RAM

RightMark Memory Analyzer 3.0 — CPU/Chipset/RAM

RightMark Memory Analyzer 2.4, . , — , . RightMark Memory Analyzer — . , (RightMark Memory Analyzer 2.5), , , , — . , , , - «», , , — . , RMMA 3.0, — , . , , . , RightMark Memory Analyzer 3.0.

(CPU Info)

, , .

— , . , — , — , . (CPU Info / CPU), . , — (, ). , , — , , WCPUID CPU-Z. , , , , .

CPU Index — ( ), (SMP) (Hyper-Threading) . . CPU ( ), .

SMP ( , HT) , CPU «» «» , ( — AMD K8 (Opteron), «» ).

Save — «» (CPUID) . ( ), , . , .

Refresh — , CPU Index, (Cache/TLB).

CPU Info / Cache.

. — , «» (Featured) «» (Actual) . , CPUID , , .

. . , , , CPUID . — « » . ? , 12- (, GenuineIntel AuthenticAMD). — ( , , 32- ). — «» ( SIMD-) , , — TLB. ( , ). , , «» « » , ( Intel Pentium III Transmeta Crusoe), «» (Brand String), .. ( , , Intel — Processor Number). , — CPUID n- — , «» . , , , L1/L2 , ( ) , .

, , , (, , CPUID), (Latency) , (Bus Width) (Hierarchy) — .

(CPU Info / TLB) — TLB .

— (Featured) CPUID , (Actual) — . TLB (LP Entries/Associativity) — , - 4- , ( ) 4- . , , (Miss Penalty) TLB — , L1 TLB. .

, .

— ( , 3.0 , — , , , — ). ( ) , — , , , (ID=0).

(General)

, , RMMA 3.0.

Memory Allocation

, .

Standard — «» (heap) malloc, .

VirtualLock — , , Windows NT. VirtualAlloc, VirtualLock, , , .., « » (page fault).

AWE — , Address Windowing Extensions, Windows 2000/XP/2003 Server. , , . AWE Lock Pages in Memory, , . :

  1. ;
  2. Local Security Policy Administrative Tools;
  3. Security Settings —> Local Policies —> User Rights Assignment;
  4. Lock pages in memory (, Administrators).
  5. , .

Data Set Size

, / . , ( ) , . , , 1MB, Data Set Size = 128 MB , 4 32 . Data Set Size ( ), .

Thread Lock

, , (realtime), , . , — , , , . (SMP Hyper-Threading) . , SMP, . , Hyper-Threading, . Hyper-Threading . , .. .

Logarithmic Y Scale

. .

White Background

, , (BMP) . . .

Create Test Report

, . , (MS Excel CSV) (BMP) .

(Batch)

, , , , «» . RMMA (Batch):

  • Delete — ;
  • Clear — ;
  • Load — ;
  • Save — .

Add to Batch .

, RMMA 3.0

, — . . , — , - (« »). , — .

, — RMMA 3.0 «» «». , , , . -, , , , . , :

  • ();
  • L1/L2 ;
  • L1/L2 ;
  • L1-L2 ;
  • ( ) D-TLB;
  • ( .. «») L1 ;
  • ALU/FPU/MMX;
  • ( ) I-TLB.

, , , , . — , , ( ), .

, , , .

  • , .
  • , , « » . , « » (, «», ..).
  • , CPU, .

RMMA «» , , . «» , . , (Preset). . , .

1: () (Memory Bandwidth)

L1/L2/L3 (RAM). : ( ), // ( , ) (MMX, SSE SSE2).

«» ( L1 ) .

, (Maximal Real Read Bandwidth) — Software Prefetch Block Prefetch. , () , MB/s. .

Variable Parameter

Variable Parameter — :

Block Size — ;

PF Distance — Software Prefetch. , ( , );

Block PF Size — - Block Prefetch. PF Distance, .

Minimal Block Size

Min Block Size, KB — , , Variable Parameter = Block Size; .

Maximal Block Size

Max Block Size, KB — Variable Parameter = Block Size.

Minimal PF Distance

Min PF Distance — Software Prefetch, , Variable Parameter = PF Distance; Software Prefetch . 0 , Software Prefetch .

Maximal PF Distance

Max PF Distance — Software Prefetch Variable Parameter = PF Distance.

Minimal Block PF Size

Min Block PF Size — Prefetch-, , Variable Parameter = Block PF Size; Prefetch- . Block Prefetch (1, 2), .

Maximal Block PF Size

Max Block PF Size — Prefetch-, , Variable Parameter = Block PF Size.

Stride Size

Stride Size — Block Prefetch (1, 2), . . , L1 Cache Line, , L1, .

CPU Register Usage

CPU Register Usage — /. 64-bit MMX, 128-bit SSE 128-bit SSE2.

Read Prefetch Type

Read Prefetch Type — Software Prefetch (PREFETCHNTA/T0/T1/T2), Block Prefetch. Variable Parameter = Block PF Size. Block Prefetch 1 «» - MOV AMD K7 (Athlon/Athlon XP/MP). , «» Block Prefetch 2 Software Prefetch (PREFETCHNTA). AMD K8 (Opteron/Athlon 64/FX).

Non-Temporal Store

Non-Temporal Store — ( write combining) . - (.., write allocate), «» , , .

Copy-to-Self Mode

Copy-to-Self Mode — « ». , , .. . , , . 100% Copy-to-Self, , (read around write). - , «» . , Non-Temporal Store Copy-to-Self .

Selected Tests

Selected Tests — .

Read Bandwidth — ;

Write Bandwidth — ;

Copy Bandwidth — .

2: / L1/L2 (D-Cache Latency)

/ L1/L2 , L2 L1/L2 . .

Variable Parameter

Variable Parameter — :

Block Size — / . — L1, L2, L3 ( ) (RAM). : , . , . , (Stride Size, . ). , ( L2 L2 L1 «»). , , L1 (load-use latency) ; (L1..L1+L2) (L1..L2), ( , ) (L2) , , ( L3 ), , , L1+L2 (RAM). (. ).

(Forward Read Latency) , , . , 8 .

(Backward Read Latency) , . (Random Read Latency), , , . , 2.5, , (Pseudo-Random Read Latency) .

, .

Hardware Prefetch, D-TLB. ( D-TLB) .

Walk Step Size — . ( , Min Walk Step Size Max Walk Step Size) , , «» (Stride Size, L1 ). (, ).

Segments Count — L1/L2 , . . «» «» , , ( ), , . , , , .

, , , . , « » — «» . , , «» n- - , n , , . . , « » L2 Pentium 4 512K, n = 8 64 , 8 x 64 = 512 , .. 0.1% (!). , 1MB. , L2/L3 (, , 1MB, , , 8MB , 8).

NOP Count — (L2 ) «» , (L2 ). , «NOP»-, , /, «» , L1-L2 L2-RAM, , . RMMA «» x86 ALU or eax, edx ( eax , edx ), , , .

Stride Size

Stride Size — , , .

Minimal Block Size

Min Block Size, KB — , , Variable Parameter = Block Size; .

Maximal Block Size

Max Block Size, KB — Variable Parameter = Block Size.

Minimal NOP Count

Min NOP Count — «» Variable Parameter = NOP Count; «» .

Maximal NOP Count

Max NOP Count — «» Variable Parameter = NOP Count.

Minimal Segments Count

Min Segments Count — Variable Parameter = Segments Count; .

Maximal Segments Count

Max Segments Count — Variable Parameter = Segments Count.

Minimal Walk Step Size

Min Walk Step Size — , , Variable Parameter = Walk Step Size.

Maximal Walk Step Size

Max Walk Step Size — , , Variable Parameter = Walk Step Size.

Latency Measurement

Latency Measurement — ( Variable Parameter = NOP Count). 1 (Method 1) «» , (edx = 0):

//
mov eax, [eax]
// , «»
or eax, edx
...
or eax, edx

, ( ) . RMMA (Method 2), (ebx = edx = 0):

// , «»
add ebx, edx
...
add ebx, edx
//
mov eax, [eax+ebx]
and ebx, eax
// , «»
add ebx, edx
...
add ebx, edx

Selected Tests

Selected Tests — .

Forward Read Latency — ;

Backward Read Latency — ;

Random Read Latency — .

Pseudo-Random Read Latency — .

3: L1/L2 (D-Cache Bandwidth)

L1-L2 ( L2-RAM). , , RMMA . , , L1/L2/RAM ( 1). , / «», .. , ALU . , , . :

Variable Parameter

Variable Parameter — :

Block Size — ;

Stride Size — L1-L2 L2-RAM . L1/L2 .

Minimal Block Size

Min Block Size, KB — , , Variable Parameter = Block Size; . , ( ) L1 . , L1-LSU-registers, L1 LSU (Load-Store Unit) , , «». L1-LSU (Memory BW) , L1 .

Maximal Block Size

Max Block Size, KB — , . , , L2 ( ) L1+L2 ( ) L1-L2. Block Size L1+L2 () / , , / .

Minimal Stride Size

Min Stride Size — / Variable Parameter = Stride Size; .

Maximal Stride Size

Max Stride Size — / Variable Parameter = Stride Size.

Selected Tests

Selected Tests — .

Forward Read Bandwidth — ;

Backward Read Bandwidth — ;

Forward Write Bandwidth — ;

Backward Write Bandwidth — ;

4: L1/L2 (D-Cache Arrival)

L1-L2 (, ) . , , , . 2, , , . .

, L1/L2 ( , ). :

Variable Parameter

Variable Parameter — :

Block Size — .

NOP Count — «» , .

SyncNOP Count — «» , .

1st DW Offset — .

2nd DW Offset — .

Minimal Block Size

Min Block Size, KB — , , Variable Parameter = Block Size; .

Maximal Block Size

Max Block Size, KB — Variable Parameter = Block Size.

Minimal NOP Count

Min NOP Count — «» Variable Parameter = NOP Count; «» .

Maximal NOP Count

Max NOP Count — «» Variable Parameter = NOP Count.

Minimal SyncNOP Count

Min SyncNOP Count — «» Variable Parameter = SyncNOP Count; «» .

Maximal SyncNOP Count

Max SyncNOP Count — «» Variable Parameter = SyncNOP Count.

Stride Size

Stride Size — , , .

Minimal 1st Dword Offset

Min 1st Dword Offset — , , Variable Parameter = 1st DW Offset; .

Maximal 1st Dword Offset

Max 1st Dword Offset — Variable Parameter = 1st DW Offset.

Minimal 2nd Dword Offset

Min 2nd Dword Offset — , , Variable Parameter = 2nd DW Offset; . , ( ):

2nd_Dword_Offset = (2nd_Dword_Offset + 1st_Dword_Offset) % Stride_Size

Maximal 2nd Dword Offset

Max 2nd Dword Offset — Variable Parameter = 2nd DW Offset.

Selected Tests

Selected Tests — .

Forward Two-Dword Read Latency — ;

Backward Two-Dword Read Latency — ;

Random Two-Dword Read Latency — .

Pseudo-Random Two-Dword Read Latency — .

5:
(Decode Bandwidth)

/ (ALU/FPU/MMX), L1 . Trace Cache Pentium 4 / . .

Variable Parameter

Variable Parameter — :

Block Size — ( « » (Decode Bandwidth) , ). « » ( runtime) , . (ret).

Prefixes Count — [pref]nNOP (pref = 0x66, operand-size override prefix).

Minimal Block Size

Min Block Size, KB — , , Variable Parameter = Block Size; .

Maximal Block Size

Max Block Size, KB — Variable Parameter = Block Size.

Minimal Prefixes Count, Maximal Prefixes Count

Min Prefixes Count, Max Prefixes Count — Variable Parameter = Prefixes Count.

Instructions Type

Instructions Type — / :

ALU — - ;

FPU — , (FPU);

MMX — - , MMX .

Instructions Subtype

Instructions Subtype — / . . , - .

ALU NOP (1)
LEA (2)
MOV (2)
ADD (2)
SUB (2)
OR (2)
XOR (2)
TEST (2)
CMP (2)
SHL (3)
ROL (3)
XOR/ADD (4)
CMP-0 (4)
CMP-0 (6)
CMP-8 (6)
CMP-16 (6)
CMP-32 (6)
CMP-0 (8)
CMP-8 (8)
CMP-16 (8)
CMP-32 (8)
nop
lea eax, [eax]
mov eax, eax
add eax, eax
sub eax, eax
or eax, eax
xor eax, eax
test eax, eax
cmp eax, eax
shl eax, 0
rol eax, 0
xor eax, eax; add eax, eax
cmp ax, 0x00
cmp eax, 0x00000000
cmp eax, 0x0000007f
cmp eax, 0x00007fff
cmp eax, 0x7fffffff
[rep][addrovr]cmp eax, 0x00000000
[rep][addrovr]cmp eax, 0x0000007f
[rep][addrovr]cmp eax, 0x00007fff
[rep][addrovr]cmp eax, 0x7fffffff
FPU WAIT (1)
FADD (2)
FMUL (2)
FSUB (2)
FSUBR (2)
FCHS (2)
FABS (2)
FTST (2)
FXAM (2)
FCOM (2)
FCOMI (2)
FST (2)
FXCH (2)
FDECSTP (2)
FINCSTP (2)
FFREE (2)
FFREEP (2)
wait
fadd st(0), st(1)
fmul st(0), st(1)
fsub st(0), st(1)
fsubr st(0), st(1)
fchs
fabs
ftst
fxam
fcom st(1)
fcomi st(0), st(1)
fst st(0)
fxch
fdecstp
fincstp
ffree st(0)
ffreep st(0)
MMX EMMS (2)
MOVQ (3)
POR (3)
PXOR (3)
PADDD (3)
PSUBD (3)
PCMPEQD (3)
PUNPCKLDQ (3)
PSLLD (4)
emms
movq mm0, mm0
por mm0, mm0
pxor mm0, mm0
paddd mm0, mm0
psubd mm0, mm0
pcmpeqd mm0, mm0
punpckldq mm0, mm0
pslld mm0, 0

6:
(I-Cache Latency)

, RMMA 3.0. L1i/L2 /RAM , L1 L2 /. : , (jmp) , Stride Size, (ret). , «» n- , (n+1)- .

, , — (jmp) (mov eax, [eax]). :

Variable Parameter

Variable Parameter — :

Block Size — ;

Segments Count — , .

Stride Size

Stride Size — , .

Minimal Block Size

Min Block Size, KB — , , Variable Parameter = Block Size; .

Maximal Block Size

Max Block Size, KB — Variable Parameter = Block Size.

Minimal Segments Count

Min Segments Count — Variable Parameter = Segments Count; .

Maximal Segments Count

Max Segments Count — Variable Parameter = Segments Count.

Jump Type

Jump Type — :

Near — (jmp near +relative_offset); Far — (mov ecx, absolute_offset; jmp ecx).

Selected Tests

Selected Tests — .

Forward Read Latency — ;

Backward Read Latency — ;

Random Read Latency — .

Pseudo-Random Read Latency — .

7: (D-TLB)

(Translation Lookaside Buffer, L1/L2 D-TLB). , , L1 , , , .

( , ( , 4096 ), , 4 ).

, TLB , L1 (TLB hit). L1 TLB (TLB miss). , (Maximal TLB Entries) L1 , , L1 L2, D-TLB. , TLB , -, L1 ( ). :

Variable Parameter

Variable Parameter — .

TLB Entries — L1 .

Segments Count — L1 « TLB» ( ) , D-TLB. «» ( 2), , ( — ). , TLB «» .

Stride Size

Stride Size — , .

Minimal TLB Entries

Min TLB Entries — , -, Variable Parameter = TLB Entries; .

Maximal TLB Entries

Max TLB Entries — Variable Parameter = TLB Entries.

Minimal Segments Count

Min Segments Count — Variable Parameter = Segments Count; .

Maximal Segments Count

Max Segments Count — Variable Parameter = Segments Count.

Selected Tests

Selected Tests — .

Forward Access — ;

Backward Access — ;

Random Access — .

8: (I-TLB)

(Instructions Translation Lookaside Buffer, L1/L2 I-TLB). , D-TLB, L1 , , . , 7, .

Variable Parameter

Variable Parameter — :

TLB Entries — L1i .

Segments Count — L1i I-TLB .

Stride Size

Stride Size — , . (jmp). , I-TLB «» .

, , (ret).

Minimal TLB Entries

Min TLB Entries — , - L1i, Variable Parameter = TLB Entries; .

Maximal TLB Entries

Max TLB Entries — Variable Parameter = TLB Entries.

Minimal Segments Count

Min Segments Count — Variable Parameter = Segments Count; .

Maximal Segments Count

Max Segments Count — Variable Parameter = Segments Count.

Jump Type

Jump Type — :

Near — (jmp near +relative_offset);

Far — (mov ecx, absolute_offset; jmp ecx).

Selected Tests

Selected Tests — :

Forward Access — ;

Backward Access — ;

Random Access — .

, . , — - ( , ). , , CPU RightMark, . — , — « » , , , — . «» C/C++, « », - .

9:
(RAM Performance)

, . , , STREAM. :

Minimal Block Size

Min Block Size, KB — .

Maximal Block Size

Max Block Size, KB — . , , , (. ).

Selected Tests

Selected Tests — .

Float Copy — ( , — 64-bit double):
a[i] = b[i];

Float Scale — , :
a[i] = b[i] * k;

Float Add — :
a[i] = b[i] + c[i];

Float TriadFloat Add Float Scale, . , , :
a[i] = b[i] + c[i] * k;

, (Float Copy, Float Scale) (Float Add Float Triad) . , (, ), — (, , ). , «» — , . , , — .. (Float Copy, Float Scale) (Float Add Float Triad) , .

10:
(RAM Stability)

RMMA 3.0 , , RAM Stability.

, ( , ). , , , RMMA 3.0. , — ( Block Size, KB). «» , ( — Test Time, minutes — ).

, , — , , , . , / . «» - (Stability.log) , (Log File Interval, seconds). , , .



(dmitri_b@ixbt.com)

— 7 2004 .
 
 
?? ? peek@ixbt.com