ডেটা এবং নির্দেশাবলীর জন্য আলাদা এল 1 ক্যাশে রয়েছে কেন?


23

কিছু স্লাইড সরে গিয়ে লক্ষ্য করেছেন যে এল 1 ক্যাশে (কমপক্ষে ইন্টেল সিপিইউতে) তথ্য এবং নির্দেশের ক্যাশের মধ্যে পার্থক্য করে, আমি জানতে চাই কেন এটি ..


উত্তর:


28

আসলে বেশ কয়েকটি কারণ রয়েছে।

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

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

তৃতীয়ত, এটি ব্যান্ডউইথ বৃদ্ধি করে: বেশিরভাগ আধুনিক প্রসেসর নির্দেশ ক্যাশে এবং ডেটা ক্যাশে থেকে ডেটা একই সাথে পড়তে পারেন। বেশিরভাগের ক্যাশে "প্রবেশদ্বার" এ কিউ রয়েছে, যাতে তারা যে কোনও চক্রটিতে দুটি করে পড়া এবং একটি লিখতে পারে।

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


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

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

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

@ ডোনাল ফেলো: হ্যাঁ, সত্যিই। কীভাবে প্রাথমিক পর্যায়ে ক্যাচিং করা হয়েছিল তা আমি ভালভাবে জানি এবং কেন তারা আলাদা হয়ে গেল।
জেরি কফিন

5

ঠিক রিয়েল এস্টেটের মতো, ক্যাশে ব্যবহার তিনটি জিনিস দ্বারা চালিত হয়: অবস্থান, অবস্থান, অবস্থান। ক্যাশে থাকার পুরো বিষয়টিটি হ'ল বেশিরভাগ প্রোগ্রামগুলি অবস্থানের নিদর্শনগুলি প্রদর্শন করে: যদি তারা 1111111 বাইট অ্যাক্সেস করে তবে পরবর্তী বাইটটি তারা সম্ভবত 1111110 বা 1111112 অ্যাক্সেস করতে পারে এবং এটি খুব বেশি বাইট নয় 9999999 However তবে, বেশিরভাগ প্রোগ্রামগুলি খুব আলাদা দেখায় তাদের নির্দেশাবলী এবং তাদের ডেটা জন্য অবস্থানের নিদর্শন। এর অর্থ হ'ল নির্দেশাবলী এবং ডেটা দক্ষতার সাথে ক্যাশে ভাগ করে নিতে সক্ষম হবেন না। কারণ নির্দেশাবলী এবং ডেটা মেমরির ক্ষেত্রে একে অপরের কাছে অগত্যা নয়। একটি ডেটা অ্যাক্সেস ক্যাশে থেকে নির্দেশকে বাধা দেয় এবং লোডিং নির্দেশাবলী ক্যাশে থেকে ডেটা ফাটিয়ে দেয়।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.