2010-04-05 12 views
14

एल 1 और एल 2 कैश (डेटा कैश) की साझेदारी के आकार और क्रम को प्रोग्रामेटिक रूप से मापने (ओएस से पूछताछ नहीं) कैसे कर सकता हूं?एल 1 और एल 2 कैश का आकार और रास्ता माप

प्रणाली के बारे में अनुमान:

  • यह L1 और L2 कैश (एल 3 भी हो सकता है, कैश साझा करने हो सकता है) है,
  • यह (बस पी 4 +) की तरह एक हार्डवेयर प्रीफ़ेच इकाई हो सकती है,
  • इसमें एक स्थिर क्लॉक्ससोर्स (टिकटाउंटर या गेटटाइम के लिए अच्छा एचपीईटी) है।

ओएस के बारे में कोई मान्यताओं रहे हैं (यह लिनक्स, विंडोज, या कुछ और हो सकता है), और हम POSIX प्रश्नों का उपयोग नहीं कर सकते।

भाषा सी है, और कंपाइलर अनुकूलन अक्षम हो सकते हैं।

+3

बहुत ही रोचक सवाल। +1 –

+1

एक पुस्तकालय है जो निर्माण समय पर कैश आकार को मापता है। इसे एटीएलएएस कहा जाता है http://math-atlas.sourceforge.net/ मुझे लगता है कि आप वहां कुछ जानकारी भी पा सकते हैं। –

+0

लुकअप के साथ प्रोसेसर पहचान? (या वह धोखा दे रहा है?) –

उत्तर

6

मुझे लगता है कि आपको बस इतना करना है कि लगातार बढ़ते हिस्सों में कैश आकार निर्धारित करने के लिए बार-बार मेमोरी एक्सेस करें, और मुझे लगता है कि आप सहयोगीता निर्धारित करने के लिए चरणों को बदल सकते हैं।

तो आप स्मृति के बहुत छोटे सेगमेंट तक पहुंचने की कोशिश करना शुरू कर देंगे और आकार धीमा होने तक आकार को दोगुना कर सकते हैं। प्रत्येक बार पहुंच धीमा हो जाती है आपने कैश के दूसरे स्तर के आकार को निर्धारित किया है।

+2

लेकिन मैं हार्डवेयर प्रीफेच को कैसे बदल सकता हूं, जो कुछ आकारों को मुखौटा कर देगा? – osgx

2

यहां एटलस से कोड है। यह एल 1 कैश आकार

एटलस/धुन/SysInfo/L1CacheSize.c

(https://github.com/vtjnash/atlas-3.10.0/blob/master/tune/sysinfo/L1CacheSize.c)

int GetL1Size(int MaxSize, double tol) 
{ 
int L1Size, tmp, correct=1; 
fprintf(stderr, "\n Calculating L1 cache size:\n"); 

के लिए है लेकिन यह केवल एल 1 कैश और इसके बारे में केवल आकार, नहीं जिस तरह से गिनती है ।

1

आपको STREAM benchmark उपयोगी या रोचक या दोनों मिल सकता है।

+0

मार्क, कृपया, http://stackoverflow.com/questions/2517694/can-the-stream-and-gups-single-cpu-benchmark-use-non-local-memory-in-numa-machi पर एक नज़र डालें – osgx

1

प्रश्न पुराना है, लेकिन उत्तर here है।

+0

केवल अच्छे चित्र, लेकिन समाधान नहीं। साथ ही, मुझे नहीं मिलता है, अपने ग्राफ से रास्ता कैसे प्राप्त करें। – osgx

+2

हालांकि यह सैद्धांतिक रूप से प्रश्न का उत्तर दे सकता है, [यह बेहतर होगा] (http://meta.stackexchange.com/q/8259) यहां उत्तर के आवश्यक हिस्सों को शामिल करने के लिए, और संदर्भ के लिए लिंक प्रदान करें। –

संबंधित मुद्दे