Qualcomm Krait 300

Qualcomm Krait 300 (MSM8230AB, Snapdragon 400), 2 cores, 1728 MHz, 28 nm, Samsung Galaxy S4 Mini, 1.5 GB (32-bit LPDDR2).

4 KB pages mode (Android / 32-bit Linux)

  Size        Latency       Increase   Description

   4 K     3                           
   8 K     4                       1   + 3 (L1)        
  16 K     5                       1    
  32 K    22                      17   + 30 (L2)        
  64 K    29                       7
 128 K    33                       4
 256 K    38                       5   + 5 (L1 TLB miss)
 512 K    41                       3   
   1 M    74 +  21 ns     33 + 21 ns   + 65 (L2 TLB miss)
   2 M    90 +  57 ns     16 + 36 ns   + 110 ns (RAM)
   4 M    98 +  84 ns      8 + 27 ns   
   8 M   102 +  99 ns      4 + 15 ns
  16 M   104 + 106 ns      2 +  7 ns    
  32 M   105 + 113 ns      1 +  7 ns
  64 M   106 + 123 ns      1 + 10 ns
 128 M   106 + 135 ns          12 ns    
 256 M   106 + 160 ns          25 ns    
 512 M   106 + 190 ns          30 ns   + 110 ns (RAM)  (Page walk to RAM)

MISC

Branch misprediction penalty = 12 cycles.

Decoding and Execution problems

Krait core has some performance problems with instruction decoding and execution for some instruction sequences. For example, there are some stalls for dependency chains of simple ALU instructions.

ISA   Cycles / group   The group of instructions in sequence

ARM32      1.64        eor r0, r0, r1;
ARM32      1.33        eor r0, r0, r1;    eor r2, r2, r3;
ARM32      1.12        eor r0, r0, r1;    eor r2, r2, r3;    eor r4, r4, r5;
Thumb      1.50        eor r0, r1;
Thumb      1.00        eor r0, r1;     eor r2, r3;
Thumb      1.74        eor r0, r1;     eor r2, r1;    eor r3, r1;
Thumb-2    1.00        eor r0, r0, r1;    nop;    nop;

Links

Krait at Wikipedia