caching - L1 कैश हिट बनाम के लिए साइकिल/लागत x86 पर रजिस्टर?




cpu cpu-cache (3)

अगर मुझे सही ढंग से याद है तो यह लगभग 1-2 घड़ी चक्र है लेकिन यह अनुमान है और नए कैश तेजी से हो सकते हैं। यह मेरे पास एक कंप्यूटर आर्किटेक्चर पुस्तक से बाहर है और यह एएमडी के लिए जानकारी है इसलिए इंटेल थोड़ा अलग हो सकता है लेकिन मैं इसे 5 से 15 घड़ी चक्रों के बीच बाध्य कर दूंगा जो मेरे लिए एक अच्छा अनुमान है।

संपादित करें: टैग्स के साथ व्हाउप्स एल 2 10 चक्र है, एल 1 में 1 से दो चक्र होते हैं, मेरी गलती: \

मुझे लगता है कि मेरी वास्तुकला कक्षा में एक एल 1 कैश हिट 1 चक्र (यानी एक्सेस टाइम रजिस्टर करने के समान) है, लेकिन क्या यह वास्तव में आधुनिक x86 प्रोसेसर पर सच है?

एल 1 कैश हिट कितने चक्र करता है? यह रजिस्टर पहुंच से तुलना कैसे करता है?


चक्र-गिनती और आउट ऑफ़ ऑर्डर निष्पादन के बारे में अधिक जानकारी के लिए, एग्नेर फोग के माइक्रोआर्क पीडीएफ , और x86 टैग विकी में अन्य लिंक देखें।

इंटेल हैसवेल की एल 1 लोड-उपयोग विलंबता 4 चक्र है, जो आधुनिक x86 CPUs की विशिष्ट है। यानी कितनी तेजी से mov eax, [eax] एक लूप में चला सकता है, एक पॉइंटर जो स्वयं को इंगित करता है। (या एक छोटी बंद-लूप लिंक्ड सूची में)।

इंटेल सीपीयू में एसएसई / एवीएक्स वैक्टर के लिए भार-उपयोग विलंबता 1 चक्र अधिक है।

स्टोर-रीलोड विलंबता 5 चक्र है, और कैश हिट या मिस से संबंधित नहीं है (यह स्टोर अग्रेषण है, एल 1 कैश नहीं)।

जैसा कि हैरॉल्ड ने टिप्पणी की, पंजीकरण का उपयोग 0 चक्र है। तो, उदाहरण के लिए:

  • inc eax में 1 चक्र विलंबता है (केवल एएलयू ऑपरेशन)
  • inc dword [mem] में 6 चक्र विलंबता है जब तक कि dword [mem] से लोड तैयार नहीं होगा। (एएलयू + स्टोर अग्रेषण)। उदाहरण के लिए स्मृति में एक लूप काउंटर रखना एक लूप को प्रति 6 चक्रों में एक पुनरावृत्ति के लिए सीमित करता है।
  • mov rax, [rsi] में rax हिट (एल 1 भार-उपयोग विलंबता) पर तैयार होने के लिए rax तैयार होने के लिए 4 चक्र विलंबता है।

7-cpu.com/cpu/Haswell.html में प्रति कैश विलंबता की एक तालिका है (जिसे मैं यहां कॉपी करूंगा), और कुछ अन्य प्रयोगात्मक संख्याएं, जिनमें एल 2-टीएलबी हिट विलंबता शामिल है (एल 1 डीटीएलबी मिस पर )।

इंटेल i7-4770 (हैसवेल), 3.4 गीगाहर्ट्ज (टर्बो बूस्ट ऑफ), 22 एनएम। राम: 32 जीबी (पीसी 3-12800 सीएल 11 सीआर 2)।

  • एल 1 डेटा कैश = 32 केबी, 64 बी / लाइन, 8-रास्ता।
  • एल 1 निर्देश कैश = 32 केबी, 64 बी / लाइन, 8-रास्ता।
  • एल 2 कैश = 256 केबी, 64 बी / लाइन, 8-रास्ता
  • एल 3 कैश = 8 एमबी, 64 बी / लाइन

  • एल 1 डेटा कैश लेटेंसी = पॉइंटर के माध्यम से सरल पहुंच के लिए 4 चक्र ( mov rax, [rax] )

  • जटिल पता गणना ( mov rax, [rsi + rax*8] ) के साथ पहुंच के लिए एल 1 डेटा कैश लेटेंसी = 5 चक्र।
  • एल 2 कैश लेटेंसी = 12 चक्र
  • एल 3 कैश लेटेंसी = 36 चक्र
  • राम लेटेंसी = 36 चक्र + 57 एनएस

शीर्ष-स्तरीय बेंचमार्क पृष्ठ http://www.7-cpu.com/utils.html , लेकिन फिर भी वास्तव में यह नहीं बताता कि विभिन्न परीक्षण-आकार का क्या अर्थ है, लेकिन कोड उपलब्ध है। परीक्षण परिणामों में Skylake शामिल है, जो इस परीक्षण में हैसवेल के लगभग समान है।

@ पाउल्सएम 4 के उत्तर में एक बहु-सॉकेट नेहलेम ज़ियोन के लिए एक टेबल है, जिसमें कुछ रिमोट (अन्य सॉकेट) मेमोरी / एल 3 नंबर शामिल हैं।


विषय पर एक महान लेख यहां दिया गया है:

http://arstechnica.com/gadgets/reviews/2002/07/caching.ars/1

अपने प्रश्न का उत्तर देने के लिए - हां, एक कैश हिट के पास पंजीकरण पहुंच के समान ही लागत होती है। और निश्चित रूप से एक कैश मिस काफी महंगा है;)

पुनश्च:

विनिर्देश अलग-अलग होंगे, लेकिन इस लिंक में कुछ अच्छे ballpark आंकड़े हैं:

विभिन्न कैशों और मुख्य स्मृति तक पहुंचने के लिए अनुमानित लागत?

Core i7 Xeon 5500 Series Data Source Latency (approximate)
L1 CACHE hit, ~4 cycles
L2 CACHE hit, ~10 cycles
L3 CACHE hit, line unshared ~40 cycles
L3 CACHE hit, shared line in another core ~65 cycles
L3 CACHE hit, modified in another core ~75 cycles remote
L3 CACHE ~100-300 cycles
Local DRAM ~30 ns (~120 cycles)
Remote DRAM ~100 ns 

पी पी एस:

ये आंकड़े बहुत पुराने, धीमे CPUs का प्रतिनिधित्व करते हैं, लेकिन अनुपात मूल रूप से पकड़ते हैं:

http://arstechnica.com/gadgets/reviews/2002/07/caching.ars/2

Level                    Access Time  Typical Size  Technology    Managed By
-----                    -----------  ------------  ---------     -----------
Registers                1-3 ns       ?1 KB          Custom CMOS  Compiler
Level 1 Cache (on-chip)  2-8 ns       8 KB-128 KB    SRAM         Hardware
Level 2 Cache (off-chip) 5-12 ns      0.5 MB - 8 MB  SRAM         Hardware
Main Memory              10-60 ns     64 MB - 1 GB   DRAM         Operating System
Hard Disk                3M - 10M ns  20 - 100 GB    Magnetic     Operating System/User




cpu-cache