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
以下是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 |
"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部分-内存性能工具
- 完整PDF(114页)
- 基于图书系统性能:企业和云,在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 |
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(而其他没有)。
摘自这篇极品文章。
在计算机科学中,这被称为"I/O复杂性"。