다양한 캐시 및 메인 메모리에 액세스하는 데 드는 대략적인 비용은?


178

누구든지 Intel i7 프로세서의 기본 메모리뿐만 아니라 L1, L2 및 L3 캐시에 액세스하는 데 걸리는 대략적인 시간 (나노초 단위)을 줄 수 있습니까?

이것은 특별히 프로그래밍 문제는 아니지만, 이러한 종류의 속도 세부 사항을 아는 것은 지연 시간이 짧은 프로그래밍 문제에 필수적입니다.



1
ns를 사이클로 어떻게 변환합니까? 100ns를 2.3GHz로 나누면 230 주기가됩니다. 이 올바른지?
Nathan

5
궁금합니다 : 어떤 상황에서 원격 L3 캐시가 원격 DRAM보다 느립니까? 위의 숫자는 1.6 배 느릴 수 있음을 나타냅니다.
netvope

1
질문을 편집하지 말고 해당 세부 정보가 포함 된 답변을 게시하십시오. 자체 답변도 괜찮습니다.
Stijn de Witt

각 레벨에서 메모리 액세스를위한 에너지 소비에 대한 대략적인 값이 있습니까?
칸나

답변:


74

다음은 i7 및 Xeon 프로세서 범위에 대한 성능 분석 안내서 입니다. 스트레스가 필요합니다. 이것은 당신이 필요로하는 것 이상을 가지고 있습니다 (예 : 22 페이지의 타이밍 및 사이클을 확인하십시오).

또한, 이 페이지 에는 클럭 사이클 등에 대한 세부 사항 있습니다.

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:
가장 중요한 것은 인용 된 표 아래에 다음과 같은 통지입니다.

"참고 :이 값은 대략적인 값입니다. 주파수, 메모리 용량, BIOS 설정, DIMM 수의 차이에 따라 달라집니다 . 마일리지는 다를 수 있습니다. "

편집 : 위의 인텔 문서는 타이밍 / 사이클 정보뿐만 아니라 i7 및 Xeon 프로세서 범위 (성능 관점에서)의 훨씬 더 유용한 세부 사항을 다루고 있음을 강조해야합니다.


1
'공유되지 않은 라인'은 '다른 코어의 공유 라인'보다 대기 시간이 길지 않아야합니다. 공유 라인 (예 : 2 개의 코어 유효 비트)은 LLC 슬라이스에서 깨끗하게 보장되므로 직접 가져올 수 있음을 의미합니다. '라인을 공유'하나의 핵심 유효 비트가 수단과 그 핵심이 되어야 라인이 독점하고 수정되지 않도록 스누핑 -이 후 수정이 공유로 변경되는 경우; LLC는 이제 더러워지고 요청한 코어에 공유로 반환됩니다. 어쩌면 내가 틀렸을 수도 있습니다-MOESI 프로토콜이 다르다는 것을 알고 있습니다.
Lewis Kelsey

1
확실히 이것은 SnB와 Haswell의 경우입니다. 이 Xeon이 사용하는 Nehalem은 링 버스 토폴로지 이전에 통합 캐시를 가지고 있었지만 스 누프 필터가 Nehalem에서 다르게 동작하는 이유는 알 수 없습니다. 최적화 매뉴얼 섹션 B.3.5.3에는 내가 잘못 생각하는 느낌이 들어 있습니다 (Nehalem 기능인 Global Queue에 대해 말하면서 Nehalem과 관련이 있음). 이 하 스웰 종이 더 나은 설명 (5 페이지의 오른쪽 상단 열) (이 tu-dresden.de/zih/forschung/ressourcen/dateien/... )
루이스 켈시

@LewisKelsey : L3의 절반이 L3에 유효한 사본이 있으면 간단히 응답 할 수 있다고 생각했기 때문에 이것은 나에게도 놀라운 일입니다. 그러나 인텔은 NUMA에 MESIF ( en.wikipedia.org/wiki/MESIF_protocol )를 사용하고 AMD는 MOESI를 사용합니다. 그러나 단일 소켓 내에서 MESIF는 코어-> 코어가 아닌 L3에서 데이터를 가져 오기 때문에 실제로는 문제가되지 않습니다. 따라서 소켓을 통한 L3 캐시-> 캐시 전송과 관련이 있습니다. 이 "로컬 L3 히트"가 다른 소켓의 코어와 공유되는 회선인지 궁금합니다. 아직 L3에서 유효에는 코어를 의미, 이해가되지 않습니다이 E / M
피터 코르

@ PeterCordes 나는이 의견을 기억하고 돌아 왔고 방금 말한 것이 나에게 즉시 잘못되었다고 말했습니다. 내 의견은 다른 두 코어 사이에서 공유되거나 다른 코어에만 독점되는 3 코어의 관점에서 정확합니다. 그러나 공유되지 않은 회선에 대해 이야기하고 회선에 액세스하려는 핵심에 속하는 경우 공유는 RFO가 독점적이고 독점적 인 RFO가 필요하지 않기 때문에 RFO가 필요하기 때문에 벤치 마크가 맞습니다. 그래서 내가 무슨 말을했는지 모르겠습니다.
Lewis Kelsey

@LewisKelsey : 네, 글쓰기에 모두 맞습니다. 나는 이것이 대기 시간에 민감한 (데이터 소스 대기 시간) 을 읽는 것이라고 생각했습니다 . 회선을 읽으려면 RFO가 필요하지 않으며 공유 요청이 필요합니다. 따라서 이미 어딘가에 공유 상태 인 회선이 아니어야합니다. 일관성 트래픽을 기다리지 않고이 소켓의 L3을 누르십시오. 따라서 "비공유"L3 적중과 유사하게 DRAM보다 빠릅니다.
Peter Cordes

189

모두가 알아야 할 숫자

           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#answers
- 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

시각적 비교


11
프로세서 설계, 램 레이턴시 / 주파수, 하드 디스크 캐싱 (유형 및 크기) / rpm 등을 기반으로 한 이러한 시스템이 엄청나게 많은 양을 관리합니까? 인텔을 인용하려면 (하나의 특정 CPU에 대해 릴리스 된 값의 경우) : "참고 :이 값은 대략적인 근사치입니다. 코어 및 언 코어 주파수, 메모리 속도, BIOS 설정, DIMM 수 등에 따라 달라집니다. 마일리지는 다를 수 있습니다 .. "
Dave

28
@Dave 그것은 사실이지만,이 숫자는 크기의 순서를 보여줍니다
Andrey

8
@Dave, CPU의 유형 / 속도 / 아키텍처가 다르더라도 상대 타이밍이 대략 동일하게 유지되어야하므로 코딩 시점을 알기위한 대략적인 지침 일뿐입니다. 더 의미있는 분석은 ... 물론 프로파일 러를 통해 수행해야합니다
xosp7tom

8
시간이 얼마인지 알기 위해 Wikipedia는 "1 초는 31.7 년이므로 1 나노초는 1 초에 1 초"라고 언급합니다. en.wikipedia.org/wiki/Nanosecond
Only You

2
@kernel 캐시 누락이 있으면 하위 캐시 또는 주 메모리에 액세스해야 함을 의미합니다. 이 경우 해당 레벨 액세스 시간에 따라 시간이 걸립니다. 여기에서 최신 CPU에 대한 데이터를 찾을 수 있습니다. sisoftware.net/?d=qa&f=ben_mem_latency
Andrey

39

예쁜 페이지에서 다양한 추억에 액세스하는 비용

요약

  1. 2005 년 이후 감소했지만 안정된 가치

            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
    
  2. 여전히 몇 가지 개선, 2020 년 예측

       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)
    

다른 출처도 참조하십시오

또한보십시오

자세한 이해를 위해, 나는 우수한 추천 현대 캐시 아키텍처의 프리젠 테이션 에서 (6 월 2014 년) 게르하르트 Wellein , 한스 호프만디트 마르 페이 에서 대학 에를 랑겐 - 뉘른베르크 .

프랑스어를 사용하는 사람들은 SpaceFox 의 기사가 프로세서를 개발자와 비교 하여 작업을 계속하는 데 필요한 정보를 기다리는 것을 좋아할 것입니다.


멋진 대기 시간 게시물. GPU 대기 시간 마스킹 현실에 대한 사실을 추가하는 것이 좋습니다 (
user3666197

안녕하세요 @ user3666197 GPU와 관련된 메모리 대기 시간에 대한 소스가 있습니까? 건배 :-)
olibre

물론입니다. @olibre. [A]아래 의 게시물을 확인하십시오 .
user3666197

1
이것이 지연 시간과 캐싱에 관한 방법을 고려할 때, 연도 슬라이더가있는 첫 번째 링크의 페이지가 연도를 변경할 때 메트릭 디스플레이를 캐시하지 않는다는 것은 역설입니다. Firefox에서는 최소한 몇 년 동안 드래그하기에 너무 느리게 렌더링됩니다. /
John Glassmyer

1
좋은 참고 문헌, 당신은 제목과 저자를 주었다!
SamB

22

2020 년 2025 년의 예측에 대한 검토를 위해서만 :

지난 약 44 년간의 집적 회로 기술인 클래식 (비 양자) 프로세서는 문자 그대로 물리적으로 "Per Aspera ad Astra"로 발전했습니다 . 지난 10 년 동안, 고전적인 과정은 달성 할 수있는 물리적 인 길을 가지지 못한 장애물에 가까워졌다.

Number of logical cores성장 할 수 있습니다, 아직 더보다는 이미 히트 우회하기 물리학 기반의 천장 불가능하지는 않지만 열심히 가지고 미만 아직 증가 할 수 있습니다 (전력, 소음, "시계") 전력 분배 및 열 분산과 성장할 수있는, 아직 문제 증가 할 것이다 큰 캐시 발자국에서 직접 혜택을 갖는 빠르고, 커질 수 있습니다 넓은 메모리 I / O & 적게에서 간접적 인 혜택 시스템 강제 컨텍스트 스위칭 우리 사이에 다른 스레드 / 프로세스를 분할하기 위해 더 많은 코어를 가질 수O(n^2~3)
Frequency [MHz]
Transistor CountO(n^2~3)
Power [W]
Single Thread Perf

크레딧은 Leonardo Suriano & Karl Rupp으로갑니다.
(크레딧은 레오나르도 수리 아노 (Sonardo Suriano)와 칼 루프 (Karl Rupp)에게갑니다)

2020: Still some improvements, prediction for 2025
-------------------------------------------------------------------------
             0.1 ns - NOP
             0.3 ns - XOR, ADD, SUB
             0.5 ns - CPU L1 dCACHE reference           (1st introduced in late 80-ies )
             0.9 ns - JMP SHORT
             1   ns - speed-of-light (a photon) travel a 1 ft (30.5cm) distance -- will stay, throughout any foreseeable future :o)
?~~~~~~~~~~~ 1   ns - MUL ( i**2 = MUL i, i )~~~~~~~~~ doing this 1,000 x is 1 [us]; 1,000,000 x is 1 [ms]; 1,000,000,000 x is 1 [s] ~~~~~~~~~~~~~~~~~~~~~~~~~
           3~4   ns - CPU L2  CACHE reference           (2020/Q1)
             5   ns - CPU L1 iCACHE Branch mispredict
             7   ns - CPU L2  CACHE reference
            10   ns - DIV
            19   ns - CPU L3  CACHE reference           (2020/Q1 considered slow on 28c Skylake)
            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*
|Q>~~~~~ 5,000   ns - QPU on-chip QUBO ( quantum annealer minimiser 1 Qop )
        10,000   ns - Compress 1K bytes with a 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
?~~~ 2,500,000   ns - Read  10 MB sequentially from  MEMORY~~(about an empty python process to copy on spawn)~~~~ x ( 1 + nProcesses ) on spawned process instantiation(s), yet an empty python interpreter is indeed not a real-world, production-grade use-case, is it?
    10,000,000   ns - DISK seek
    10,000,000   ns - Read   1 MB sequentially from  NETWORK
?~~ 25,000,000   ns - Read 100 MB sequentially from  MEMORY~~(somewhat light python process to copy on spawn)~~~~ x ( 1 + nProcesses ) on spawned process instantiation(s)
    30,000,000   ns - Read 1 MB sequentially from a  DISK
?~~ 36,000,000   ns - Pickle.dump() SER a 10 MB object for IPC-transfer and remote DES in spawned process~~~~~~~~ x ( 2 ) for a single 10MB parameter-payload SER/DES + add an IPC-transport costs thereof or NETWORK-grade transport costs, if going into [distributed-computing] model Cluster ecosystem
   150,000,000   ns - Send a NETWORK packet CA -> Netherlands
  |   |   |   |
  |   |   | ns|
  |   | us|
  | ms|

2020 년의 예측에 대한 2015 년 검토를 위해 :

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 대기 시간 가로 비교를 위해 :

DRAM 속도가 지연 시간을 결정하는 요소이고로드 지연 시간 (포화 시스템) 인 가장 단순한 CPU / 캐시 / DRAM 라인업 (균일 한 메모리 액세스 모델에서도)을 비교하는 것은 쉬운 일이 아닙니다. 엔터프라이즈 애플리케이션은 유휴 완전 언로드 시스템 이상을 경험하게됩니다.

                    +----------------------------------- 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 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 장치 내부의 실제 작업 체계의 진실을 밝히기 위해 노력했습니다.

    +====================| + 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 용량과 적중 / 미스율로 인한 기본 제한이 있습니다.

    |.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__:________]_______
       |                                  |_______________________________________________________________________________________
       */

결론?

(0 1 XFERs는 본질적으로 비압축성이기 때문에) 모든 낮은 대기 시간 동기 디자인은 오히려 "I / O-유압을"리버스 엔지니어링을 가지고 있으며, 그 결과 대기 시간은 (는 연산 집약적 수있는 GPGPU 솔루션의 성능 봉투를 지배 읽기 : 처리 비용이 약간 더 느린 대기 시간 XFER을 허용하는 경우 ...) 또는 읽지 않음 ( 읽기 : CPU 패브릭은 GPU 패브릭보다 엔드-투-엔드 처리에서 더 빠릅니다. ).


7
귀하의 답변을 이해하려고 시도했습니다. 매우 흥미로운 것처럼 보이지만 높은 / 폭 제한으로 인해 ASCII 그래프를 읽기가 쉽지 않습니다. 죄송합니다. 어떻게 개선 될 수 있는지 모르겠습니다 ... 결국 요약이 누락되었습니다 (결국 CPU 대 GPU 대기 시간에 대해 어떻게 생각 해야할지 모르겠습니다). 더 나은 눈 모양과 인간의 이해를 제공하기 위해 답변을 향상시킬 수 있기를 바랍니다. 용기. 건배
-D

3

이 "계단"플롯을보고 서로 다른 액세스 시간을 완벽하게 보여줍니다 (클럭 틱 측면에서). 빨간 CPU는 L4를 가지고 있기 때문에 추가 "단계"를 가지고 있음을 주목하십시오.

메모리 계층이 다른 액세스 시간 그래프

이 Extremetech 기사에서 발췌.

컴퓨터 과학에서는이를 "I / O 복잡성"이라고합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.