@ পেউফিউর উত্তরটি নির্দেশ করে যে এগুলি সিস্টেম-ব্যাপী সামগ্রিক ব্যান্ডউইদথগুলি। এল 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 কে-স্প্লিট থ্রুটপুটটি ক্ল-স্প্লিট নন-স্প্লিটের চেয়ে উল্লেখযোগ্যভাবে খারাপ।
সূত্র :