关于延迟:访问各种缓存和主内存的近似成本?

Approximate cost to access various caches and main memory?

有人能给我大概的时间(以纳秒为单位)访问L1、L2和L3缓存,以及英特尔i7处理器上的主内存吗?

虽然这不是一个特定的编程问题,但是了解这些类型的速度细节对于一些低延迟编程挑战来说是必要的。


每个人都应该知道的数字

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
           0.5 ns - CPU L1 dCACHE reference
           1   ns - speed-of-light (a photon) travel a 1 ft (30.5cm) distance
           5   ns - CPU L1 iCACHE Branch mispredict
           7   ns - CPU L2  CACHE reference
          71   ns - CPU cross-QPI/NUMA best  case on XEON E5-46*
         100   ns - MUTEX lock/unlock
         100   ns - own DDR MEMORY reference
         135   ns - CPU cross-QPI/NUMA best  case on XEON E7-*
         202   ns - CPU cross-QPI/NUMA worst case on XEON E7-*
         325   ns - CPU cross-QPI/NUMA worst case on XEON E5-46*
      10,000   ns - Compress 1K bytes with Zippy PROCESS
      20,000   ns - Send 2K bytes over 1 Gbps NETWORK
     250,000   ns - Read 1 MB sequentially from MEMORY
     500,000   ns - Round trip within a same DataCenter
  10,000,000   ns - DISK seek
  10,000,000   ns - Read 1 MB sequentially from NETWORK
  30,000,000   ns - Read 1 MB sequentially from DISK
 150,000,000   ns - Send a NETWORK packet CA -> Netherlands
|   |   |   |
|   |   | ns|
|   | us|
| ms|

来自:原作者:彼得·诺维格:-http://norvig.com/21 days.html答案-http://surana.wordpress.com/2009/01/01/numbers Everyone should know/,-http://sites.google.com/site/io/building-scalable-web-applications-with-google-app-engine

a visual comparison


以下是i7和Xeon系列处理器的性能分析指南。我要强调的是,这有您需要的,还有更多(例如,查看第22页了解一些时间和周期)。

此外,本页还提供了一些有关时钟周期等的详细信息。第二个链接提供了以下数字:

1
2
3
4
5
6
7
8
9
10
11
12
Core i7 Xeon 5500 Series Data Source Latency (approximate)               [Pg. 22]

local  L1 CACHE hit,                              ~4 cycles (   2.1 -  1.2 ns )
local  L2 CACHE hit,                             ~10 cycles (   5.3 -  3.0 ns )
local  L3 CACHE hit, line unshared               ~40 cycles (  21.4 - 12.0 ns )
local  L3 CACHE hit, shared line in another core ~65 cycles (  34.8 - 19.5 ns )
local  L3 CACHE hit, modified in another core    ~75 cycles (  40.2 - 22.5 ns )

remote L3 CACHE (Ref: Fig.1 [Pg. 5])        ~100-300 cycles ( 160.7 - 30.0 ns )

local  DRAM                                                   ~60 ns
remote DRAM                                                  ~100 ns

EDIT2:最重要的是引文表格下的通知,说明:

"NOTE: THESE VALUES ARE ROUGH APPROXIMATIONS. THEY DEPEND ON
CORE AND UNCORE FREQUENCIES, MEMORY SPEEDS, BIOS SETTINGS,
NUMBERS OF DIMMS, ETC,ETC..YOUR MILEAGE MAY VARY."

编辑:我要强调的是,除了时间/周期信息之外,上面的英特尔文档(从性能的角度)还提供了i7和Xeon处理器系列的更多(非常)有用的细节。


在漂亮页面中访问各种内存的成本

  • 请参阅此页,显示内存延迟从1990减少到2020。

总结

  • 值自2005下降,但趋于稳定

    1
    2
    3
    4
    5
    6
            1 ns        L1 cache
            3 ns        Branch mispredict
            4 ns        L2 cache
           17 ns        Mutex lock/unlock
          100 ns        Main memory (RAM)
        2 000 ns (2μs)  1KB Zippy-compress
  • 还有一些改进,2020年的预测

    1
    2
    3
       16 000 ns (16μs) SSD random read (olibre's note: should be less)
      500 000 ns (?ms)  Round trip in datacenter
    2 000 000 ns (2ms)  HDD random read (seek)
  • 另见其他来源

    • 每个程序员都应该从ulrich drepper(2007)了解内存旧的,但仍然是一个优秀的内存硬件和软件交互深刻的解释。
      • 完整PDF(114页)
        • 关于LWN关于PDF版本的评论
        • 另一个
      • 关于lwn+评论的七篇文章
        • 第1部分-简介
        • 第2部分-高速缓存
        • 第3部分-虚拟内存
        • 第4部分-NUMA支持
        • 第5部分-程序员能做什么
        • 第6部分-程序员可以做的更多事情
        • 第7部分-内存性能工具
    • 基于图书系统性能:企业和云,在coding恐怖网站上发布单词之间的无限空间。
    • 单击http://www.7-cpu.com/上列出的每个处理器,查看l1/l2/l3/ram/。。延迟(例如,haswell i7-4770具有l1=1ns、l2=3ns、l3=10ns、ram=67ns、branchMispredition=4ns)
    • 网址:http://idarkside.org/posts/numbers-you-should-know/

    也见

    为了进一步了解,我建议Gerhard Wellein、Hannes Hofmann和Dietmar Fey在Erlangen-N_rnberg大学出色地展示现代缓存体系结构(2014年6月)。

    讲法语的人可能会喜欢spacefox的一篇文章,将处理器与开发者进行比较,两者都在等待继续工作所需的信息。


    为了2015年对2020年预测的回顾:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Still some improvements, prediction for 2020 (Ref. olibre's answer below)
    -------------------------------------------------------------------------
       16 000 ns ( 16 μs) SSD random read (olibre's note: should be less)
      500 000 ns (  ? ms) Round trip in datacenter
    2 000 000 ns (  2 ms) HDD random read (seek)

    In 2015 there are currently available:
    ========================================================================
          820 ns ( 0.8μs)     random read from a SSD-DataPlane
        1 200 ns ( 1.2μs) Round trip in datacenter
        1 200 ns ( 1.2μs)     random read from a HDD-DataPlane

    只是为了比较CPU和GPU的延迟情况:

    即使是最简单的CPU/cache/dram配置(即使在统一的内存访问模型中),也不容易进行比较,其中dram速度是决定延迟的一个因素,而加载延迟(饱和系统)则是企业应用程序将经历比空闲完全卸载系统更多的规则和事情。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
                        +----------------------------------- 5,6,7,8,9,..12,15,16
                        |                               +--- 1066,1333,..2800..3300
                        v                               v
    First  word = ( ( CAS latency * 2 ) + ( 1 - 1 ) ) / Data Rate  
    Fourth word = ( ( CAS latency * 2 ) + ( 4 - 1 ) ) / Data Rate
    Eighth word = ( ( CAS latency * 2 ) + ( 8 - 1 ) ) / Data Rate
                                            ^----------------------- 7x .. difference
    ********************************
    So:
    ===

    resulting DDR3-side latencies are between _____________
                                              3.03 ns    ^
                                                         |
                                             36.58 ns ___v_ based on DDR3 HW facts

    Uniform Memory Access

    GPU引擎已经获得了大量的技术营销,而深入的内部依赖性是理解这些体系结构在实践中的实际优势和实际弱点的关键(通常与积极的市场营销鼓吹的期望大不相同)。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
       1 ns _________ LETS SETUP A TIME/DISTANCE SCALE FIRST:
              °      ^
              |\     |a 1 ft-distance a foton travels in vacuum ( less in dark-fibre )
              | \    |
              |  \   |
            __|___\__v____________________________________________________
              |    |
              |<-->|  a 1 ns TimeDOMAIN"distance", before a foton arrived
              |    |
              ^    v
        DATA  |    |DATA
        RQST'd|    |RECV'd ( DATA XFER/FETCH latency )

      25 ns @ 1147 MHz FERMI:  GPU Streaming Multiprocessor REGISTER access
      35 ns @ 1147 MHz FERMI:  GPU Streaming Multiprocessor    L1-onHit-[--8kB]CACHE

      70 ns @ 1147 MHz FERMI:  GPU Streaming Multiprocessor SHARED-MEM access

     230 ns @ 1147 MHz FERMI:  GPU Streaming Multiprocessor texL1-onHit-[--5kB]CACHE
     320 ns @ 1147 MHz FERMI:  GPU Streaming Multiprocessor texL2-onHit-[256kB]CACHE

     350 ns
     700 ns @ 1147 MHz FERMI:  GPU Streaming Multiprocessor GLOBAL-MEM access
     - - - - -

    因此,了解内部性比在其他领域更为重要,这些领域发布了体系结构,并免费提供了许多基准。许多都要归功于GPU微测试人员,他们花费了他们的时间和创造力来释放黑匣子方法测试的GPU设备中实际工作方案的真实性。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
        +====================| + 11-12 [usec] XFER-LATENCY-up   HostToDevice    ~~~ same as Intel X48 / nForce 790i
        |   |||||||||||||||||| + 10-11 [usec] XFER-LATENCY-down DeviceToHost
        |   |||||||||||||||||| ~  5.5 GB/sec XFER-BW-up                         ~~~ same as DDR2/DDR3 throughput
        |   |||||||||||||||||| ~  5.2 GB/sec XFER-BW-down @8192 KB TEST-LOAD      ( immune to attempts to OverClock PCIe_BUS_CLK 100-105-110-115 [MHz] ) [D:4.9.3]
        |                      
        |              Host-side
        |                                                        cudaHostRegister(   void *ptr, size_t size, unsigned int flags )
        |                                                                                                                 | +-------------- cudaHostRegisterPortable -- marks memory as PINNED MEMORY for all CUDA Contexts, not just the one, current, when the allocation was performed
        |                        ___HostAllocWriteCombined_MEM / cudaHostFree()                                           +---------------- cudaHostRegisterMapped   -- maps  memory allocation into the CUDA address space ( the Device pointer can be obtained by a call to cudaHostGetDevicePointer( void **pDevice, void *pHost, unsigned int flags=0 ); )
        |                        ___HostRegisterPORTABLE___MEM / cudaHostUnregister( void *ptr )
        |   ||||||||||||||||||
        |   ||||||||||||||||||
        |   | PCIe-2.0 ( 4x) | ~ 4 GB/s over  4-Lanes ( PORT #2  )
        |   | PCIe-2.0 ( 8x) | ~16 GB/s over  8-Lanes
        |   | PCIe-2.0 (16x) | ~32 GB/s over 16-Lanes ( mode 16x )
        |
        |   + PCIe-3.0 25-port 97-lanes non-blocking SwitchFabric ... +over copper/fiber
        |                                                                       ~~~ The latest PCIe specification, Gen 3, runs at 8Gbps per serial lane, enabling a 48-lane switch to handle a whopping 96 GBytes/sec. of full duplex peer to peer traffic. [I:]
        |
        | ~810 [ns]    + InRam-"Network" / many-to-many parallel CPU/Memory"message" passing with less than 810 ns latency any-to-any
        |
        |   ||||||||||||||||||
        |   ||||||||||||||||||
        +====================|
        |.pci............HOST|

    我为"大局"道歉,但延迟需求也受到了芯片上SMREG/L1/L2容量和命中/未命中率的基本限制。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
        |.pci............GPU.|
        |                    | FERMI [GPU-CLK] ~ 0.9 [ns] but THE I/O LATENCIES                                                                  PAR -- ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| <800> warps ~~ 24000 + 3200 threads ~~ 27200 threads [!!]
        |                                                                                                                                               ^^^^^^^^|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ [!!]
        |                                                       smREGs________________________________________ penalty +400 ~ +800 [GPU_CLKs] latency ( maskable by 400~800 WARPs ) on <Compile-time>-designed spillover(s) to locMEM__
        |                                                                                                              +350 ~ +700 [ns] @1147 MHz FERMI ^^^^^^^^
        |                                                                                                                          |                    ^^^^^^^^
        |                                                                                                                       +5 [ns] @ 200 MHz FPGA. . . . . . Xilinx/Zync Z7020/FPGA massive-parallel streamline-computing mode ev. PicoBlazer softCPU
        |                                                                                                                          |                    ^^^^^^^^
        |                                                                                                                   ~  +20 [ns] @1147 MHz FERMI ^^^^^^^^
        |                                                             SM-REGISTERs/thread: max  63 for CC-2.x -with only about +22 [GPU_CLKs] latency ( maskable by 22-WARPs ) to hide on [REGISTER DEPENDENCY] when arithmetic result is to be served from previous [INSTR] [G]:10.4, Page-46
        |                                                                                  max  63 for CC-3.0 -          about +11 [GPU_CLKs] latency ( maskable by 44-WARPs ) [B]:5.2.3, Page-73
        |                                                                                  max 128 for CC-1.x                                    PAR -- ||||||||~~~|
        |                                                                                  max 255 for CC-3.5                                    PAR -- ||||||||||||||||||~~~~~~|
        |
        |                                                       smREGs___BW                                 ANALYZE REAL USE-PATTERNs IN PTX-creation PHASE <<  -Xptxas -v          || nvcc -maxrregcount ( w|w/o spillover(s) )
        |                                                                with about 8.0  TB/s BW            [C:Pg.46]
        |                                                                           1.3  TB/s BW shaMEM___  4B * 32banks * 15 SMs * half 1.4GHz = 1.3 TB/s only on FERMI
        |                                                                           0.1  TB/s BW gloMEM___
        |         ________________________________________________________________________________________________________________________________________________________________________________________________________________________
        +========|   DEVICE:3 PERSISTENT                          gloMEM___
        |       _|______________________________________________________________________________________________________________________________________________________________________________________________________________________
        +======|   DEVICE:2 PERSISTENT                          gloMEM___
        |     _|______________________________________________________________________________________________________________________________________________________________________________________________________________________
        +====|   DEVICE:1 PERSISTENT                          gloMEM___
        |   _|______________________________________________________________________________________________________________________________________________________________________________________________________________________
        +==|   DEVICE:0 PERSISTENT                          gloMEM_____________________________________________________________________+440 [GPU_CLKs]_________________________________________________________________________|_GB|
        !  |                                                         |\                                                                +                                                                                           |
        o  |                                                texMEM___|_\___________________________________texMEM______________________+_______________________________________________________________________________________|_MB|
           |                                                         |\ \                                 |\                           +                                               |\                                          |
           |                                              texL2cache_| \ \                               .| \_ _ _ _ _ _ _ _texL2cache +370 [GPU_CLKs] _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ | \                                   256_KB|
           |                                                         |  \ \                               |  \                         +                                 |\            ^  \                                        |
           |                                                         |   \ \                              |   \                        +                                 | \           ^   \                                       |
           |                                                         |    \ \                             |    \                       +                                 |  \          ^    \                                      |
           |                                              texL1cache_|     \ \                           .|     \_ _ _ _ _ _texL1cache +260 [GPU_CLKs] _ _ _ _ _ _ _ _ _ |   \_ _ _ _ _^     \                                 5_KB|
           |                                                         |      \ \                           |      \                     +                         ^\      ^    \        ^\     \                                    |
           |                                     shaMEM + conL3cache_|       \ \                          |       \ _ _ _ _ conL3cache +220 [GPU_CLKs]           ^ \     ^     \       ^ \     \                              32_KB|
           |                                                         |        \ \                         |        \       ^\          +                         ^  \    ^      \      ^  \     \                                  |
           |                                                         |         \ \                        |         \      ^ \         +                         ^   \   ^       \     ^   \     \                                 |
           |                                   ______________________|__________\_\_______________________|__________\_____^__\________+__________________________________________\_________\_____\________________________________|
           |                  +220 [GPU-CLKs]_|           |_ _ _  ___|\          \ \_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \ _ _ _ _\_ _ _ _+220 [GPU_CLKs] on re-use at some +50 GPU_CLKs _IF_ a FETCH from yet-in-shaL2cache
           | L2-on-re-use-only +80 [GPU-CLKs]_| 64 KB  L2_|_ _ _   __|\\          \ \_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ \ _ _ _ _\_ _ _ + 80 [GPU_CLKs] on re-use from L1-cached (HIT) _IF_ a FETCH from yet-in-shaL1cache
           | L1-on-re-use-only +40 [GPU-CLKs]_|  8 KB  L1_|_ _ _    _|\\\          \_\__________________________________\________\_____+ 40 [GPU_CLKs]_____________________________________________________________________________|
           | L1-on-re-use-only + 8 [GPU-CLKs]_|  2 KB  L1_|__________|\\\\__________\_\__________________________________\________\____+  8 [GPU_CLKs]_________________________________________________________conL1cache      2_KB|
           |     on-chip|smREG +22 [GPU-CLKs]_|           |t[0_______^:~~~~~~~~~~~~~~~~\:________]
           |CC-  MAX    |_|_|_|_|_|_|_|_|_|_|_|           |t[1_______^                  :________]
           |2.x   63    |_|_|_|_|_|_|_|_|_|_|_|           |t[2_______^                  :________]
           |1.x  128    |_|_|_|_|_|_|_|_|_|_|_|           |t[3_______^                  :________]
           |3.5  255 REGISTERs|_|_|_|_|_|_|_|_|           |t[4_______^                  :________]
           |         per|_|_|_|_|_|_|_|_|_|_|_|           |t[5_______^                  :________]
           |         Thread_|_|_|_|_|_|_|_|_|_|           |t[6_______^                  :________]
           |            |_|_|_|_|_|_|_|_|_|_|_|           |t[7_______^     1stHalf-WARP :________]______________
           |            |_|_|_|_|_|_|_|_|_|_|_|           |t[ 8_______^:~~~~~~~~~~~~~~~~~:________]
           |            |_|_|_|_|_|_|_|_|_|_|_|           |t[ 9_______^                  :________]
           |            |_|_|_|_|_|_|_|_|_|_|_|           |t[ A_______^                  :________]
           |            |_|_|_|_|_|_|_|_|_|_|_|           |t[ B_______^                  :________]
           |            |_|_|_|_|_|_|_|_|_|_|_|           |t[ C_______^                  :________]
           |            |_|_|_|_|_|_|_|_|_|_|_|           |t[ D_______^                  :________]
           |            |_|_|_|_|_|_|_|_|_|_|_|           |t[ E_______^                  :________]
           |            |_|_|_|_|_|_|_|_|_|_|_|       W0..|t[ F_______^____________WARP__:________]_____________
           |            |_|_|_|_|_|_|_|_|_|_|_|         ..............            
           |            |_|_|_|_|_|_|_|_|_|_|_|           ............|t[0_______^:~~~~~~~~~~~~~~~\:________]
           |            |_|_|_|_|_|_|_|_|_|_|_|           ............|t[1_______^                 :________]
           |            |_|_|_|_|_|_|_|_|_|_|_|           ............|t[2_______^                 :________]
           |            |_|_|_|_|_|_|_|_|_|_|_|           ............|t[3_______^                 :________]
           |            |_|_|_|_|_|_|_|_|_|_|_|           ............|t[4_______^                 :________]
           |            |_|_|_|_|_|_|_|_|_|_|_|           ............|t[5_______^                 :________]
           |            |_|_|_|_|_|_|_|_|_|_|_|           ............|t[6_______^                 :________]
           |            |_|_|_|_|_|_|_|_|_|_|_|           ............|t[7_______^    1stHalf-WARP :________]______________
           |            |_|_|_|_|_|_|_|_|_|_|_|           ............|t[ 8_______^:~~~~~~~~~~~~~~~~:________]
           |            |_|_|_|_|_|_|_|_|_|_|_|           ............|t[ 9_______^                 :________]
           |            |_|_|_|_|_|_|_|_|_|_|_|           ............|t[ A_______^                 :________]
           |            |_|_|_|_|_|_|_|_|_|_|_|           ............|t[ B_______^                 :________]
           |            |_|_|_|_|_|_|_|_|_|_|_|           ............|t[ C_______^                 :________]
           |            |_|_|_|_|_|_|_|_|_|_|_|           ............|t[ D_______^                 :________]
           |            |_|_|_|_|_|_|_|_|_|_|_|           ............|t[ E_______^                 :________]
           |            |_|_|_|_|_|_|_|_|_|_|_|       W1..............|t[ F_______^___________WARP__:________]_____________
           |            |_|_|_|_|_|_|_|_|_|_|_|         ....................................................
           |            |_|_|_|_|_|_|_|_|_|_|_|          ...................................................|t[0_______^:~~~~~~~~~~~~~~~\:________]
           |            |_|_|_|_|_|_|_|_|_|_|_|          ...................................................|t[1_______^                 :________]
           |            |_|_|_|_|_|_|_|_|_|_|_|          ...................................................|t[2_______^                 :________]
           |            |_|_|_|_|_|_|_|_|_|_|_|          ...................................................|t[3_______^                 :________]
           |            |_|_|_|_|_|_|_|_|_|_|_|          ...................................................|t[4_______^                 :________]
           |            |_|_|_|_|_|_|_|_|_|_|_|          ...................................................|t[5_______^                 :________]
           |            |_|_|_|_|_|_|_|_|_|_|_|          ...................................................|t[6_______^                 :________]
           |            |_|_|_|_|_|_|_|_|_|_|_|          ...................................................|t[7_______^    1stHalf-WARP :________]______________
           |            |_|_|_|_|_|_|_|_|_|_|_|          ...................................................|t[ 8_______^:~~~~~~~~~~~~~~~~:________]
           |            |_|_|_|_|_|_|_|_|_|_|_|          ...................................................|t[ 9_______^                 :________]
           |            |_|_|_|_|_|_|_|_|_|_|_|          ...................................................|t[ A_______^                 :________]
           |            |_|_|_|_|_|_|_|_|_|_|_|          ...................................................|t[ B_______^                 :________]
           |            |_|_|_|_|_|_|_|_|_|_|_|          ...................................................|t[ C_______^                 :________]
           |            |_|_|_|_|_|_|_|_|_|_|_|          ...................................................|t[ D_______^                 :________]
           |            |_|_|_|_|_|_|_|_|_|_|_|          ...................................................|t[ E_______^                 :________]
           |            |_|_|_|_|_|_|_|_|_|_|_|tBlock Wn....................................................|t[ F_______^___________WARP__:________]_____________
           |
           |                   ________________          °°°°°°°°°°°°°°°°°°°°°°°°°°~~~~~~~~~~°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°
           |                  /                \   CC-2.0|||||||||||||||||||||||||| ~masked  ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
           |                 /                  \  1.hW  ^|^|^|^|^|^|^|^|^|^|^|^|^| <wait>-s ^|^|^|^|^|^|^|^|^|^|^|^|^|^|^|^|^|^|^|^|^|^|^|^|^|^|^|^|^|^|^|^|^|^|^|^|^|
           |                /                    \ 2.hW  |^|^|^|^|^|^|^|^|^|^|^|^|^          |^|^|^|^|^|^|^|^|^|^|^|^|^|^|^|^|^|^|^|^|^|^|^|^|^|^|^|^|^|^|^|^|^|^|^|^|^
           |_______________/                      \______I|I|I|I|I|I|I|I|I|I|I|I|I|~~~~~~~~~~I|I|I|I|I|I|I|I|I|I|I|I|I|I|I|I|I|I|I|I|I|I|I|I|I|I|I|I|I|I|I|I|I|I|I|I|I|
           |~~~~~~~~~~~~~~/ SM:0.warpScheduler    /~~~~~~~I~I~I~I~I~I~I~I~I~I~I~I~I~~~~~~~~~~~I~I~I~I~I~I~I~I~I~I~I~I~I~I~I~I~I~I~I~I~I~I~I~I~I~I~I~I~I~I~I~I~I~I~I~I~I
           |              \          |           //
           |               \         RR-mode    //
           |                \    GREEDY-mode   //
           |                 \________________//
           |                   \______________/SM:0__________________________________________________________________________________
           |                                  |           |t[ F_______^___________WARP__:________]_______
           |                                ..|SM:1__________________________________________________________________________________
           |                                  |           |t[ F_______^___________WARP__:________]_______
           |                                ..|SM:2__________________________________________________________________________________
           |                                  |           |t[ F_______^___________WARP__:________]_______
           |                                ..|SM:3__________________________________________________________________________________
           |                                  |           |t[ F_______^___________WARP__:________]_______
           |                                ..|SM:4__________________________________________________________________________________
           |                                  |           |t[ F_______^___________WARP__:________]_______
           |                                ..|SM:5__________________________________________________________________________________
           |                                  |           |t[ F_______^___________WARP__:________]_______
           |                                ..|SM:6__________________________________________________________________________________
           |                                  |           |t[ F_______^___________WARP__:________]_______
           |                                ..|SM:7__________________________________________________________________________________
           |                                  |           |t[ F_______^___________WARP__:________]_______
           |                                ..|SM:8__________________________________________________________________________________
           |                                  |           |t[ F_______^___________WARP__:________]_______
           |                                ..|SM:9__________________________________________________________________________________
           |                                ..|SM:A      |t[ F_______^___________WARP__:________]_______
           |                                ..|SM:B      |t[ F_______^___________WARP__:________]_______
           |                                ..|SM:C      |t[ F_______^___________WARP__:________]_______
           |                                ..|SM:D      |t[ F_______^___________WARP__:________]_______
           |                                  |_______________________________________________________________________________________
           */

    底线是什么?

    任何低延迟驱动的设计都必须逆向工程"I/O-Hydraulics"(因为0 1-xfer本质上是不可压缩的),由此产生的延迟决定了任何GPGPU解决方案的性能范围,无论它是计算密集型的(请阅读:在这种情况下,处理成本可以节省更多的延迟xfer…)或者不是(读:CPU-S在端到端处理方面比GPU结构(可用引文)更快(可能让人吃惊)。


    看看这个"楼梯"情节,完美地说明了不同的访问时间(在时钟抽搐方面)。注意红色CPU有一个附加的"步骤",可能是因为它有L4(而其他没有)。

    Graphs of access times with different memory hierarchies

    摘自这篇极品文章。

    在计算机科学中,这被称为"I/O复杂性"。