ক্যাশে কিভাবে দ্রুত হতে পারে?


37

এখানে একটি ক্যাশে বেঞ্চমার্কের একটি স্ক্রিনশট রয়েছে:

AIDA64 ক্যাশে এবং মেমোরি বেঞ্চমার্কের ফলাফল

বেঞ্চমার্কে এল 1 ক্যাশে পড়ার গতি প্রায় 186 গিগাবাইট / সেকেন্ড, বিলম্বতাটি প্রায় 3-4 ঘড়ির চক্র সহ। কীভাবে এমন গতি অর্জন করা যায়?

এখানে স্মৃতিটি বিবেচনা করুন: তাত্ত্বিক সর্বোচ্চ গতি 665 মেগাহার্টজ (মেমরি ফ্রিকোয়েন্সি) x 2 (ডাবল ডেটা রেট) x 64 বিট (বাসের প্রস্থ) যা প্রায় 10.6 গিগাবাইট / সে, যা 9.6 গিগাবাইট / এস এর মানদণ্ডের মানের কাছাকাছি ।

তবে এল 1 ক্যাশে, এমনকি যদি আমরা প্রসেসরের সাথে তার সর্বাধিক ফ্রিকোয়েন্সি (3 গিগাহার্টজ) -এর প্রতিটি চক্রে পড়তে পারি তবে আমাদের এমন একটি থ্রুপুট অর্জন করতে প্রায় 496 ডেটা লাইন লাগবে যা অবাস্তব বলে মনে হয়। এটি অন্যান্য ক্যাশেগুলিতেও প্রযোজ্য।

আমি কী মিস করছি? এর পরামিতিগুলি থেকে আমরা কীভাবে ক্যাশের থ্রুপুট গণনা করব?


14
আপনি কী বিবেচনা করেছেন যে ছোট্ট L1,2,3 ক্যাশে এবং সমানভাবে যেখানে এটি শারীরিকভাবে থাকে। টিপ, আপনি যদি পুরো চিপটির মালিক হন তবে আপনাকে নিজের বাস স্ট্যান্ডার্ড নিয়ে উদ্বেগ করার দরকার নেই
JonRB

2
এছাড়াও: কোনও রেজিস্টারের ভিতরে সরাসরি রাখা হয়নি এমন কিছু ডেটা যা পরীক্ষা করে তা নিশ্চিত করার জন্য বেঞ্চমার্ক কী করছে তা সম্পর্কে যথেষ্ট জানেন?
রেক্যান্ডবোনম্যান

7
@ রেক্যান্ডবোনম্যান: এইডএ 64৪ হ'ল একটি সম্মানিত মানদণ্ড, এমন কিছু নয় যা কেউ কেবল সি-তে হ্যাক করেছিল এবং সংকলকটিকে কিছু বোঝা অপ্টিমাইজ করতে দেয়! আমি ধরে নিই যে মাইক্রোবেঞ্চমার্কের অংশগুলি এসএসই বা এভিএক্স সংস্করণ সহ সমাবেশে লেখা হয়েছে।
পিটার

1
@ পিটার কর্ডস সন্তুষ্ট উত্তর - একটি প্রয়োজনীয় প্রশ্নের উত্তর।
রেক্যান্ডবোনম্যান

1
কেবল চিন্তাগুলিকে শারীরিক দৃষ্টিকোণে রাখার জন্য: 1.4 ন্যানোসেকেন্ডে আলো প্রায় দেড়ফুট ভ্রমণ করে s এর অর্থ হ'ল ক্যাশে যদি মাদারবোর্ডের অন্য পাশে অবস্থিত থাকে তবে এর মতো একটি বিলম্বিতা আপেক্ষিকতা ভঙ্গ করতে পারে। বা একটি পরিমাপ ত্রুটি হতে পারে ।
আর্থার

উত্তর:


35

এই সিপিইউতে ...

প্রতিটি কোরের জন্য 2 টি কোরের একটি 32-কেবি নির্দেশিকা এবং 32-কেবি ডেটা প্রথম স্তরের ক্যাশে (এল 1)

যেহেতু দুটি কোর রয়েছে তাই আমরা প্রত্যাশা করতে পারি যে মাপকাঠি দুটি সমান্তরালভাবে দুটি থ্রেড চালাবে। তাদের ওয়েবসাইট যদিও উল্লেখযোগ্যভাবে খুব কম তথ্য দেয়, তবে আমরা যদি এখানে দেখি , আরও কোর সহ সিপিইউগুলি যথাযথভাবে উচ্চতর এল 1 থ্রোপুট দেয় বলে মনে হয়। সুতরাং আমি মনে করি যা প্রদর্শিত হয় তা সমান্তরালভাবে কাজ করে সমস্ত কোর সহ সম্পূর্ণ থ্রুটপুট। সুতরাং, আপনার সিপিইউর জন্য আমাদের একটি কোর এবং একটি ক্যাশে দুটি করে ভাগ করা উচিত:

Read   93 GB/s
Write  47 GB/s
Copy   90 GB/s

এখন, "কপি" সত্যটি "লিখন" এর চেয়ে 2x গতিযুক্ত, অত্যন্ত সন্দেহজনক। এটি কীভাবে লিখতে পারে তার চেয়ে দ্রুত কপি করতে পারে? আমি বাজি ধরতে যাচ্ছি যে "কপি" হিসাবে মানদণ্ডটি যা পাঠ্য + লেখার মাধ্যমে লেখার যোগফল, এবং এই ক্ষেত্রে এটি উভয়ই 45 গিগাবাইট / এস এ পড়তে এবং লিখতে পারে, তবে 90 প্রদর্শন করবে, কারণ এটি একটি মানদণ্ড, এবং কে নরকে বিশ্বাস করে? সুতরাং আসুন "অনুলিপি" উপেক্ষা করা যাক।

Read   93 GB/s => 30 bytes/clock
Write  47 GB/s => 15 bytes/clock

এখন, একটি 128-বিট রেজিস্টারটি 16 বাইট, যথেষ্ট পরিমাণে বন্ধ, তাই মনে হচ্ছে এই ক্যাশে দুটি 128-বিট রিড করতে এবং প্রতি ঘড়িতে একটি লিখতে পারে।

এটি হ'ল আপনি সত্যই সেই এসএসই নম্বর ক্র্যাঞ্চিং নির্দেশাবলী: স্ট্রাইক প্রতি দুটি পড়া এবং একটি লেখার স্ট্রিমলাইন করতে চান।

এটি সম্ভবত প্রচুর পরিমাণে সমান্তরাল ডেটা লাইনগুলির সাথে প্রয়োগ করা হবে, এটি একটি চিপের অভ্যন্তরে খুব দ্রুত প্রচুর ডেটা ঘুরে দেখার স্বাভাবিক উপায়।


4
নথির 55 নং পৃষ্ঠায় @ এর সাথে পরবর্তী হ্যাক লিঙ্কগুলিতে লিখিত আছে "অভ্যন্তরীণভাবে, অ্যাক্সেসগুলি 16 বাইট পর্যন্ত হয় [[...] দুটি লোড অপারেশন এবং একটি স্টোর অপারেশন প্রতিটি চক্র পরিচালনা করা যেতে পারে"। এটি ব্যাখ্যা করে যে পড়ুন কেন দুইগুণ দ্রুত - এটি একটি লেখার সময় একই ক্রিয়ায় দুটি পাঠ করতে পারে।
টম কার্পেন্টার

2
হ্যাঁ, এটি স্পষ্টভাবে অনুলিপি গণনা করছে BW = পড়ুন এবং লিখুন। এটি বিকল্প হিসাবে ঠিক হিসাবে বৈধ বলে মনে হয়, যেহেতু এটি লক্ষণীয় যে পড়তে এবং লিখতে সমান্তরালভাবে সম্পাদন করতে পারে। লক্ষ করুন যে এল 2 / এল 3 এর জন্য ওপি'র সংখ্যায় লেখার চেয়ে বেশি কপি নেই, এবং মেমরির জন্য কম। ডিডিআর 3 মেমরি বাস পুরো দ্বৈত নয়: পড়ার এবং লেখার জন্য একই ডেটা লাইনগুলির প্রয়োজন। (প্রায় এক্স 86 আমার মনে / memset ব্যান্ডউইথ NT তে দোকানে নিয়মিত দোকানে বনাম সঙ্গে আরো জন্য, দেখুন stackoverflow.com/questions/43343231/... )।
পিটার

6
আপনি অনুমান করছেন যে আইভিব্রিজ একই ঘড়ির চক্রটিতে 2 টি পঠন এবং 1 লিখতে পারে। আপনি সঠিক হতে পারে, কিন্তু শুধুমাত্র খুব সীমিত পরিস্থিতিতে। আইভিবিতে কেবলমাত্র ২ টি এজিইউ পোর্ট রয়েছে, তাই সাধারণত এটি প্রতি ঘড়ি প্রতি 2 মেমরি অপ্সের মধ্যে সীমাবদ্ধ থাকে যার মধ্যে একটি স্টোর হতে পারে । তবে 256 বি এভিএক্স লোড / স্টোরগুলি লোড / স্টোর পোর্টগুলিতে এক্সিকিউট করতে 2 চক্র নেয়, যখন কেবল প্রথম চক্রের এজিইউ প্রয়োজন। সুতরাং কোনও স্টোর-ঠিকানা ইউওপ কোনও 256 বি লোডের ২ য় চক্রের সময় কোনও লোড ব্যান্ডউইথ ব্যয় না করে পোর্ট 2/3 চালাতে পারে। (স্টোর-ডেটা উফগুলি পোর্ট 4 এ চলমান)) উত্স: agner.org/optimize মাইক্রোয়ার্ক পিডিএফ
পিটার

2
একটি এএমডি বুলডোজার-পরিবার বা রাইজেন সিপিইউ আপনাকে একই পঠিত = 2x লেখার সংখ্যা দেবে, তবে এগুলি সত্যিকার অর্থেই কোনও ঘাটতি ছাড়াই (প্রতি মুহূর্তে একটি লেখা হতে পারে) প্রতি সীমাবদ্ধ 2 মেমরি অপ্সের মধ্যে সীমাবদ্ধ। পড়ুন / লিখুন / অনুলিপি পার্থক্য সনাক্ত করতে পারে না, তবে ট্রায়াড ( a[i] = b[i] + c[i]) করতে পারে । বিটিডাব্লু, ইন্টেল হাসওয়েল এবং পরে পোর্ট on এ একটি স্টোর-এজিইউ রয়েছে যা সরল (নন-ইনডেক্সড) অ্যাড্রেসিং মোডগুলি পরিচালনা করতে পারে, তাই তারা প্রতি ঘড়িতে 2 লোড + 1 স্টোর উপ এক্সিকিউট করতে পারে। (এবং L1D তথ্য পথ তাই এটি L1D ব্যান্ডউইথ দ্বিগুণ 256b হয়।) দেখুন ডেভিড Kanter এর লেখ-আপ: realworldtech.com/haswell-cpu/5
পিটার Cordes

1
অ্যালিচেন: ওপি স্পষ্ট করে আইভিব্রিজের 4 টি চক্রের লোড-ব্যবহারের বিলম্বকে ডানদিকে ব্যান্ডউইথের পরে উল্লেখ করেছিল, কীভাবে এটি এত দ্রুত হতে পারে তা জিজ্ঞাসা করার আগে।
পিটার কর্ডস

27

@ পেউফিউর উত্তরটি নির্দেশ করে যে এগুলি সিস্টেম-ব্যাপী সামগ্রিক ব্যান্ডউইদথগুলি। এল 1 এবং এল 2 হ'ল ইনটেল স্যান্ডিব্রিজে-পরিবারে প্রতি-কোর ক্যাশ, তাই সংখ্যাগুলি 2x হয় যা একটি একক কোর কী করতে পারে। তবে এটি এখনও আমাদেরকে চিত্তাকর্ষকভাবে উচ্চতর ব্যান্ডউইথ এবং কম বিলম্বের সাথে ফেলেছে।

এল 1 ডি ক্যাশে সরাসরি সিপিইউ কোরতে নির্মিত হয়েছে এবং খুব শক্তভাবে লোড এক্সিকিউশন ইউনিট (এবং স্টোর বাফার) এর সাথে মিলিত । একইভাবে, এল 1 আই ক্যাশেটি কোরের দিকনির্দেশনা আনয়ন / ডিকোড অংশের ঠিক পাশেই। (আমি আসলে স্যান্ডিব্রিজে সিলিকন ফ্লোর প্ল্যানের দিকে নজর দিইনি, তাই এটি আক্ষরিক অর্থে সত্য হতে পারে না the সামনের প্রান্তের ইস্যু / নামটির অংশটি সম্ভবত সম্ভবত "এল0" ডিকোডড ইউওপ ক্যাশে, যা শক্তি সঞ্চয় করে এবং আরও ভাল ব্যান্ডউইথ আছে ডিকোডারগুলির চেয়ে বেশি))

তবে এল 1 ক্যাশে সহ, যদিও আমরা প্রতিটি চক্রটিতে পড়তে পারি ...

কেন সেখানে থামো? K8 যেহেতু স্যান্ডিব্রিজে এবং এএমডি থেকে ইনটেল প্রতিটি চক্রের জন্য 2 টি বোঝা চালাতে পারে। মাল্টি-পোর্ট ক্যাশে এবং টিএলবি একটি জিনিস।

ডেভিড ক্যান্টারের সান্দিব্রিজের মাইক্রোর্কিটেকচার রাইটিং-আপটিতে একটি দুর্দান্ত চিত্র রয়েছে (যা আপনার আইভিব্রিজ সিপিইউতেও প্রযোজ্য):

( "একত্রে নির্ধারণকারী" ALU ঝুলিতে এবং মেমরি তাদের ইনপুট প্রস্তুত হতে জন্য অপেক্ষা uops, এবং / অথবা তাদের ফাঁসি পোর্টের জন্য অপেক্ষা করছে। (যেমন vmovdqa ymm0, [rdi]বোঝা uop জন্য অপেক্ষা করতে হয়েছে যে decodes rdiযদি একটি পূর্ববর্তী add rdi,32এখনো মৃত্যুদন্ড কার্যকর করেনি, জন্য উদাহরণ)। ইন্টেল ইস্যু / পুনর্নবীকরণের সময় পোর্টগুলিতে উফ শিডিয়ুল করে দেয় This তারা অবসর গ্রহণের আগ পর্যন্ত আরওবিতে থাকে, তবে কেবল নির্বাহক বন্দরে প্রেরণ না করা পর্যন্ত শিডিয়ুলারে থাকে ( এএমডি পূর্ণসংখ্যা / এফপির জন্য পৃথক শিডিয়ুলার ব্যবহার করে, তবে অ্যাড্রেসিং মোডগুলি সর্বদা পূর্ণসংখ্যার রেজিস্টার ব্যবহার করে

ডেভিড ক্যান্টারের এসএনবি মেমরি চিত্রটি

যেমনটি দেখায়, কেবলমাত্র 2 টি এজিইউ বন্দর রয়েছে (অ্যাড্রেস-জেনারেশন ইউনিট, যা একটি ঠিকানা মোড গ্রহণ করে [rdi + rdx*4 + 1024]এবং একটি লিনিয়ার ঠিকানা তৈরি করে)। এটি প্রতি ঘড়িতে 2 টি মেমরি অপস চালায় (প্রতিটি 128 বি / 16 বাইট), তাদের মধ্যে একটি স্টোর being

তবে এটির হাতাটি চালিয়ে যাওয়ার কৌশলটি রয়েছে: এসএনবি / আইভিবি 256 বি এভিএক্স লোড / স্টোরগুলিকে একক উওপ হিসাবে চালায় যা লোড / স্টোর বন্দরে 2 চক্র গ্রহণ করে, তবে কেবল প্রথম চক্রের এজিইউ প্রয়োজন। এটি কোনও লোড থ্রুপুট না হারিয়ে second দ্বিতীয় চক্র চলাকালীন পোর্ট 2/3 তে এজিইউতে একটি স্টোর-ঠিকানা ইউপ চালাতে দেয়। সুতরাং অ্যাভিএক্সের সাথে (যা ইন্টেল পেন্টিয়াম / সেলেনরন সিপিইউগুলি সমর্থন করে না: /), এসএনবি / আইভিবি (তত্ত্ব অনুসারে) প্রতি চক্রের 2 টি বোঝা এবং 1 টি স্টোর চালিয়ে নিতে পারে ।

আপনার আইভিব্রিজে সিপিইউ হ'ল স্যান্ডিব্রিজের ডাই-সঙ্কুচিত (কিছু মাইক্রোআরকিটেকচারাল উন্নতি যেমন মুভ - এলিমিনেশন, ইআরএমএসবি (মেমকি / মেমসেট)) এবং পরবর্তী পৃষ্ঠার হার্ডওয়্যার প্রিফেচিং)। এর পরে (হাসওল) প্রজন্মটি এক্সিকিউশন ইউনিট থেকে এল 1 এ 128 বি থেকে 256 বি পর্যন্ত ডেটা পাথ প্রসারিত করে প্রতি ঘড়ির এল 1 ডি ব্যান্ডউইথের দ্বিগুণ করেছে যাতে এভিএক্স 256 বি লোড প্রতি ঘন্টার 2 টি বজায় রাখতে পারে। এটি সাধারণ অ্যাড্রেসিং মোডগুলির জন্য একটি অতিরিক্ত স্টোর-এজিইউ বন্দর যুক্ত করেছে।

হাসওয়েল / স্কাইলেকের শিখর থ্রুপুটটি প্রতি ঘড়িতে 96 বাইট লোড + সঞ্চিত, তবে ইন্টেলের অপ্টিমাইজেশান ম্যানুয়াল সুপারিশ করে যে স্কাইলেকের টেকসই গড় থ্রুপুট (এখনও কোনও এল 1 ডি বা টিএলবি মিস করা নয়) চক্র প্রতি 81 ডলার। (একটি স্কেলার পূর্ণসংখ্যা লুপ করতে টিকিয়ে ঘড়ি প্রতি 2 লোড +1 দোকান আমার পরীক্ষাকার্যের অনুযায়ী SKL উপর, 7 (unfused ডোমেন-নির্বাহ) 4 নিলীন ডোমেন-uops থেকে ঘড়ি প্রতি uops। কিন্তু এটা পরিবর্তে 64-বিট operands সঙ্গে কিছুটা গতি নিচে ৩২-বিট, সুতরাং স্পষ্টতই কিছু মাইক্রোআরকিটেকচারাল রিসোর্স সীমা রয়েছে এবং এটি কেবল স্টোর-অ্যাড্রেস উপগুলিকে পোর্ট 2/3 এ শিডিউল করার এবং লোডগুলি থেকে চক্র চুরি করার বিষয় নয় not)

এর পরামিতিগুলি থেকে আমরা কীভাবে ক্যাশের থ্রুপুট গণনা করব?

আপনি পারবেন না, যদি না প্যারামিটারগুলিতে ব্যবহারিক থ্রুপুট নম্বর থাকে। উপরে উল্লিখিত হিসাবে, এমনকি স্কাইলকের এল 1 ডি 256 বি ভেক্টরগুলির জন্য তার লোড / স্টোর এক্সিকিউশন ইউনিটগুলি যথেষ্ট রাখতে পারে না। যদিও এটি কাছাকাছি, এবং এটি 32-বিট পূর্ণসংখ্যার জন্য পারে। (ক্যাশে পোর্টগুলি পড়ার চেয়ে বেশি লোড ইউনিট থাকার কোনও অর্থ হবে না বা তদ্বিপরীত You আপনি কেবল এমন হার্ডওয়ার ছেড়ে চলে যাবেন যা কখনই পুরোপুরি ব্যবহার করা যায় না Note দ্রষ্টব্য যে এল 1 ডি-তে লাইন প্রেরণ / গ্রহণের জন্য অতিরিক্ত পোর্ট থাকতে পারে / অন্যান্য কোর থেকে পাশাপাশি মূলের মধ্যে থেকে পাঠ্য / লেখার জন্য))

কেবলমাত্র ডাটা বাসের প্রস্থ এবং ঘড়িগুলি দেখলে পুরো গল্পটি আপনাকে দেয় না। L2 এবং L3 (এবং মেমরি) ব্যান্ডউইথ এল 1 বা এল 2 ট্র্যাক করতে পারে এমন অসামান্য মিসের সংখ্যা দ্বারা সীমাবদ্ধ হতে পারে । ব্যান্ডউইথ অলৌকিকতা * সর্বোচ্চ_কেন্দ্রিকী অতিক্রম করতে পারে না, এবং উচ্চতর লেটেন্সি এল 3 (অনেকগুলি কোর জিয়নের মতো) সহ চিপগুলির একই মাইক্রোআরকিটেকচারের ডুয়াল / কোয়াড কোর সিপিইউর তুলনায় অনেক কম সিঙ্গল-কোর এল 3 ব্যান্ডউইথ রয়েছে have এই এসও উত্তরের "বিলম্বিত-আবদ্ধ প্ল্যাটফর্মগুলি" বিভাগটি দেখুন । স্যান্ডিব্রিজ-পরিবারের সিপিইউতে এল 1 ডি মিসগুলি (এনটি স্টোর দ্বারা ব্যবহৃতও) ট্র্যাক করতে 10 লাইন-ফিল বাফার রয়েছে।

(অনেকগুলি সক্রিয় ক্রিয়াকলাপের সমষ্টিগত এল 3 / মেমরি ব্যান্ডউইথ একটি বড় জিওনের পক্ষে বিশাল, তবে একক থ্রেডযুক্ত কোড একই ঘড়ির গতিতে কোয়াড কোরের চেয়ে আরও খারাপ ব্যান্ডউইথ দেখায় কারণ আরও বেশি কোরগুলির অর্থ রিং বাসে আরও স্টপস, এবং এইভাবে উচ্চতর বিলম্ব L3।)


ক্যাশে বিলম্ব

কীভাবে এমন গতি অর্জন করা যায়?

এল 1 ডি ক্যাশে 4 চক্রের লোড-ব্যবহারের প্রেরণাটি বেশ আশ্চর্যজনক , বিশেষত বিবেচনা করে বিবেচনা করা হয় যে এটির মতো অ্যাড্রেসিং মোড দিয়ে শুরু করতে [rsi + 32]হবে, সুতরাং এটির ভার্চুয়াল ঠিকানা হওয়ার আগে এটি যুক্ত করতে হবে । তারপরে ম্যাচের জন্য ক্যাশে ট্যাগগুলি পরীক্ষা করতে এটি শারীরিকভাবে অনুবাদ করতে হবে।

( [base + 0-2047]ইন্টেল স্যান্ডিব্রিজে-পরিবারে অতিরিক্ত চক্র গ্রহণের পরিবর্তে মোডগুলি সম্বোধন করা , তাই সাধারণ ঠিকানা মোডের জন্য এজিইউগুলিতে একটি শর্টকাট রয়েছে (পয়েন্টার-তাড়ানোর ক্ষেত্রে সাধারণত যেখানে লোড-ব্যবহারের বিলম্ব খুব কম, তবে সাধারণভাবেও সাধারণ) (( ইন্টেলের অপ্টিমাইজেশান ম্যানুয়াল , স্যান্ডিব্রীজ বিভাগ ২.৩.৫.২ এল 1 ডিসিচি দেখুন।) এটি কোনও বিভাগকে ওভাররাইড করে না এবং সেগমেন্টের বেইস অ্যাড্রেসও ধরে নেয় 0যা সাধারণ)

এটি আগের কোনও স্টোরের সাথে ওভারল্যাপ হয় কিনা তা দেখতে এটি স্টোর বাফারটিও তদন্ত করতে হবে। এবং এটি এটিকে বের করতে হবে এমনকি যদি কোনও পূর্ববর্তী (প্রোগ্রাম ক্রমে) স্টোর-ঠিকানা ইউওপ এখনও কার্যকর হয় না, তাই স্টোরের ঠিকানাটি জানা যায় না। তবে সম্ভবত একটি এল 1 ডি হিট পরীক্ষা করার সাথে সমান্তরালে এটি ঘটতে পারে। যদি এটি প্রমাণিত হয় যে L1D ডেটার প্রয়োজন হয়নি কারণ স্টোর-ফরোয়ার্ডিং স্টোর বাফার থেকে ডেটা সরবরাহ করতে পারে, তবে এতে কোনও ক্ষতি হয় না।

ইন্টেল প্রায় সকলের মতো ভিআইপিটি (ভার্চুয়ালি ইনডেক্সেড ফিজিক্যালি ট্যাগড) ক্যাশে ব্যবহার করে, ক্যাশে রাখার স্ট্যান্ডার্ড ট্রিকটি ব্যবহার করে যথেষ্ট ছোট এবং উচ্চ পর্যায়ে এসোসিয়েটিভিটি যে এটি পিআইপিটি ক্যাশের মতো আচরণ করে (কোনও এলিয়াসিং নয়) এটি ভিআইপিটির গতির সাথে (ইনডেক্স করতে পারে) টিএলবি ভার্চুয়াল-> শারীরিক অনুসন্ধানের সাথে সমান্তরাল)।

ইন্টেলের এল 1 ক্যাশে 32kiB, 8-মুখী সাহসী। পৃষ্ঠার আকার 4kiB। এর অর্থ "সূচক" বিটস (যা 8 টি উপায়ের কোন সেটটি কোনও প্রদত্ত লাইনকে ক্যাশে করতে পারে) সমস্ত পৃষ্ঠার অফসেটের নীচে রয়েছে; যেমন address ঠিকানা বিটগুলি কোনও পৃষ্ঠায় অফসেট হয় এবং ভার্চুয়াল এবং শারীরিক ঠিকানায় সর্বদা একই থাকে।

সে সম্পর্কে আরও এবং বিশদ কেন ছোট / দ্রুত ক্যাশেগুলি দরকারী / সম্ভব (এবং বৃহত্তর ধীর ক্যাশে যুক্ত হয়ে ভাল কাজ করুন) সম্পর্কিত আরও তথ্যের জন্য, এল 1 ডি এর চেয়ে কেন এল 1 ডি ছোট / দ্রুত আপনার উত্তরটি দেখুন ।

ছোট ক্যাশে এমন জিনিসগুলি করতে পারে যা বড় ক্যাশে খুব পাওয়ার ব্যয়বহুল হয়ে থাকে, যেমন ট্যাগগুলি আনার সময় একই সাথে সেট থেকে ডেটা অ্যারে আনতে। সুতরাং একবার যদি কোনও তুলনাকারী কোন ট্যাগটির সাথে মেলে, এটি কেবল এসআরএএম থেকে প্রাপ্ত আটটি 64৪-বাইট ক্যাশে লাইনগুলির একটিকে ম্যাক্স করতে হবে।

(এটি আসলে এত সহজ নয়: স্যান্ডিব্রিজ / আইভিব্রিজ ১ টি বাইট খণ্ডের আটটি ব্যাঙ্কযুক্ত একটি ব্যাঙ্কযুক্ত এল 1 ডি ক্যাশে ব্যবহার করে different একই ক্যাশে লাইনগুলিতে একই ব্যাংকে দুটি অ্যাক্সেস একই চক্র কার্যকর করার চেষ্টা করলে আপনি ক্যাশে-ব্যাংক বিরোধ পেতে পারেন। (এখানে 8 টি ব্যাঙ্ক রয়েছে, সুতরাং এটি 128 এর পৃথক পৃথক অর্থাত্ 2 টি ক্যাশে লাইনের সাথে ঠিকানার সাথে ঘটতে পারে))

আইভিব্রিজের স্বাক্ষরবিহীন অ্যাক্সেসের জন্য কোনও দণ্ড নেই যতক্ষণ না এটি একটি 64 বি ক্যাশে-লাইন সীমানা অতিক্রম করে না। আমি অনুমান করেছি যে নিম্ন ঠিকানার বিটের ভিত্তিতে কোন ব্যাংক (গুলি) আনতে হবে এবং সঠিক 1 থেকে 16 বাইট ডেটা পাওয়ার জন্য যা কিছু স্থানান্তরিত হতে হবে তা সেট আপ করে।

ক্যাশে-লাইন বিভাজনে, এটি এখনও কেবলমাত্র একক উওপ, তবে একাধিক ক্যাশে অ্যাক্সেস করে। 4 কে-বিভাজন ব্যতীত জরিমানাটি এখনও ছোট। স্কাইলেক এমনকি প্রায় 4 টি বিভাজনকে মোটামুটি সস্তা করে তোলে, প্রায় 11 টি চক্রের বিরতি সহ, একটি জটিল অ্যাড্রেসিং মোডের সাথে একটি সাধারণ ক্যাশে-লাইন বিভক্ত হিসাবে একই। তবে 4 কে-স্প্লিট থ্রুটপুটটি ক্ল-স্প্লিট নন-স্প্লিটের চেয়ে উল্লেখযোগ্যভাবে খারাপ।


সূত্র :


1
এটি খুব স্পষ্ট, বিস্তৃত এবং ভাল লেখা! +1 টি!
পরের-হ্যাক 14

8

আধুনিক সিপিইউতে, ক্যাশে মেমরিটি একই ডাই (চিপ) এর সিপিইউর ঠিক পাশেই বসে থাকে , এটি এসআরএএম ব্যবহার করে তৈরি করা হয় যা ডিআরএএম থেকে অনেক দ্রুত, যা কোনও পিসিতে র‌্যাম মডিউলগুলির জন্য ব্যবহৃত হয়।

মেমরির প্রতি ইউনিট (কিছুটা বা বাইট) এসআরএএম ডিআরএএম এর চেয়ে অনেক বেশি ব্যয়বহুল। সুতরাং যেহেতু পিসিতে ডিআআরএএম ব্যবহার করা হয়।

তবে যেহেতু এসআরএএম নিজেই সিপিইউর মতো একই প্রযুক্তিতে তৈরি, এটি সিপিইউর মতোই দ্রুত। এছাড়াও, এটি মোকাবেলায় কেবল অভ্যন্তরীণ (সিপিইউতে) বাস রয়েছে যদি এটি 496 লাইনের প্রশস্ত বাসের প্রয়োজন হয় তবে সম্ভবত এটি।


আপনার আগ্রহের জন্য ধন্যবাদ. আমি কয়েকটি বইয়ে দেখেছি যে রেজিস্টার অ্যাক্সেসের গতি 300 গিগাবাইট / সে এর বাইরে, 3 গিগাহার্টজ প্রসেসরের ক্ষেত্রে রেজিস্টার থ্রুপুট 100 বি / চক্র হতে পারে যা নিবন্ধগুলি সাধারণত 64/128 বিট প্রশস্ত থাকে, তারা এতটা আউটপুট করতে পারেনি। এটিই আমার সম্পর্কে। থ্রিপুট প্রকাশের সঠিক উপায় কি জিবি / এস।
নাইট

3
@ রাত্রে মনে রাখবেন যে আইভিবি (যে কোনও উচ্চ পারফরম্যান্স প্রসেসর হিসাবে) প্রতি চক্রের বিভিন্ন নির্দেশাবলী কার্যকর করে, যেমন 3 এএলইউ অপস, 2 লোড এবং 1 স্টোর। এগুলির মধ্যে বেশিরভাগ 2 ইনপুট নিতে পারে (এমনকি লোডগুলিও, সূচিকৃত ঠিকানার জন্য) এবং লোড এমনকি 3 নিতে পারে That's যা 13 টি 8 বাইটে রেজিস্ট্রেশন করে, 104 বাইট (এটি এমন ঘটতে পারে যে এই জাতীয় মহাকাব্য সংমিশ্রণ অনুমোদিত নয় তবে সেখানে রয়েছে) এটি কোনও ইঙ্গিত নয় যে এটি আইভিবির ক্ষেত্রে, যদিও এটি টিকিয়ে রাখা যায় না)। আপনি যদি ভেক্টর রেজিস্টারগুলিকেও বিবেচনা করেন তবে সেই সংখ্যাটি আরও বেশি বেড়ে যায়।
হেরোলেড

@ শর্ট: সম্পর্কিত: হ্যাসওয়েল এবং স্কাইলেকের মনে হয় যে প্রতি ঘড়ি প্রতি নিবন্ধের পাঠকের সীমাবদ্ধতা রয়েছে, যদিও এটি সামনের দিকে হতে পারে এবং কিছু ইনপুট প্রস্তুত হওয়ার পরে মৃত্যুদণ্ড কার্যকর করতে কোনও প্রভাব ফেলবে না। হতে পারে এটি অন্য কোনও মাইক্রোআরকিটেকচারাল সীমা, তবে আমি কোডে এমন বাধা পেয়েছি যা প্রতি ঘড়িতে আরও বেশি পরিমাণে চালিয়ে যেতে সক্ষম হওয়া উচিত। agner.org/optimize/blog/read.php?i=415#852 । হাসওলে, আমার সেরা-পরিস্থিতি প্রতি ঘড়ির চক্র অনুসারে .5 6.5 পূর্ণসংখ্যার নিবন্ধগুলি পড়ে (টিকিয়ে রাখে)। আমি স্কাইলেকে প্রতি ঘড়ি প্রেরণ / চালানোর জন্য 7 টি উওপ ধরে রাখতে সক্ষম হয়েছি (স্টোরগুলি স্টোরের ঠিকানা + স্টোর-ডেটা)।
পিটার

@ পিটারকর্ডস ঠিক আছে যদিও এর অবশ্যই প্রথম প্রান্ত হতে হবে? আইআইআরসি historতিহাসিকভাবেও ইস্যুটি ছিল (পিপিআর থেকে টু কোর 2) এবং আমি নিশ্চিত নই যে ভগ্নাংশের সংখ্যা অন্যথায় কীভাবে বোঝায়। যদিও আমার সংখ্যাগুলি যাই হোক না কেন কিছুটা বন্ধ ছিল
হারোলড

@ ভাঁজ: হ্যাঁ, আমি নিশ্চিত যে এটি কোনও প্রকারের সামনের দিকের বাধা, সম্ভবত নামকরণে। পি 6 এর রেজিস্টার-পঠনের বাধাটি "ঠান্ডা" রেজিস্টারগুলিতে ছিল যা ইস্যুতে স্থায়ীভাবে রেজিস্টার ফাইল থেকে পড়তে হয়েছিল। সম্প্রতি পরিবর্তিত রেজিস্টারগুলি এখনও আরওবিতে ছিল এবং এটিতে কোনও বাধা নেই। আমি এইচএসডাব্লু / এসকেএল-এর শীত বনাম গরম রেগগুলির সাথে খুব বেশি তদন্ত করিনি, কারণ কোনও কারণে আমি আমার লুপটি 4 বার উওস / আদর্শভাবে 1 সি পুনরাবৃত্তির চেয়ে বড় করার কথা ভাবিনি। উফ। ফরোয়ার্ডিং বনাম পিআরএফের পড়ার মধ্যে আইডিকে কতটা পার্থক্য রয়েছে (যা ইস্যু / নাম বদলে নয়, নির্বাহের সময়ে ঘটতে হবে)।
পিটার

4

এল 1 ক্যাশে মোটামুটি প্রশস্ত মেমরি কাঠামো। ইন্টেল প্রসেসরের L1 ক্যাশের আর্কিটেকচারটি এই ম্যানুয়ালটিতে পাওয়া যাবে (পরবর্তী হ্যাক দ্বারা সরবরাহ করা) by তবে কিছু প্যারামিটারের ব্যাখ্যা ভুল, "ক্যাশে লাইনের আকার" "ডেটা প্রস্থ" নয়, এটি পারমাণবিক ডেটা অ্যাক্সেসের সিরিয়াল ব্লকের আকার।

ছক 2-17 (অধ্যায় 2.3.5.1) ইঙ্গিত করে যে লোড (সার্চ) এর, ক্যাশে ব্যান্ডউইথ হয় 2x16 = 32 বাইট প্রতি কোর প্রতি চক্র । এটি কেবলমাত্র 3 জিএইচজেড কোরটিতে 96 গিগাবাইট / এসের তাত্ত্বিক ব্যান্ডউইথ দেয়। এটি উদ্ধৃত বেঞ্চমার্ক কী বলেছে তা পরিষ্কার নয়, দেখে মনে হচ্ছে এটি সমান্তরালভাবে কাজ করে দুটি কোর পরিমাপ করে, তাই এটি দুটি কোরের জন্য 192 জিবিপিএস তৈরি করে।


2

গেটের বিলম্ব কী? 10 পিকোসেকেন্ড? পুরো পাইপলাইনযুক্ত ক্রিয়াকলাপগুলির জন্য চক্রের সময়গুলি 333 পিকোসেকেন্ড হয়, বিভিন্ন ডিকোডিং এবং বাস ক্রিয়াকলাপ এবং পরবর্তী ঘড়ির চক্র শুরু হওয়ার আগে ফ্লিপ-ফ্লপ ডেটা ধরে নেওয়া।

আমি আশা করি ক্যাশে পড়ার ক্ষেত্রে ধীরতম ক্রিয়াকলাপটি ডেটালাইনগুলি আরও অনেক দূরে সরে যাওয়ার অপেক্ষায় রয়েছে (সম্ভবত এগুলি পার্থক্যগত: একটি রেফারেন্স এবং রিড-বিট থেকে একটি প্রকৃত চার্জ) যা কোনও তুলনাকারী / ল্যাচকে ইতিবাচক বাস্তবায়নের জন্য আটকে রাখা যেতে পারে - একটি ক্ষুদ্র ভোল্টেজকে একটি বড় রেল-থেকে-রেল লজিক-স্তর ভোল্টেজ সুইং (প্রায় 1 ভোল্ট) রূপান্তর করতে প্রতিক্রিয়ার ক্রিয়া।


1
মনে রাখবেন যে 4 চক্রের এল 1 ডি ল্যাটেন্সিটিতে অ্যাড্রেস-জেনারেশন (সাধারণ ঠিকানাগুলির মোডগুলির জন্য [reg + 0-2047]), এবং একটি টিএলবি লুকআপ এবং একটি ট্যাগ তুলনা (8-উপায় সাহসী ) রয়েছে এবং ফলাফলটি আপ-টু -16-তে স্বাক্ষরবিহীন বাইটগুলি এতে রেখে দেয় অন্যান্য এক্সিকিউশন ইউনিটগুলিতে ফরোয়ার্ড করার জন্য লোড ইউনিটের আউটপুট পোর্ট। এটি পয়েন্টার-তাড়া লুপের মতো 4 সি ল্যাটেন্সি mov rax, [rax]
পিটার কর্ডস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.