প্রথমত একটি প্রধান মেমরি অ্যাক্সেস খুব ব্যয়বহুল। বর্তমানে একটি 2GHz সিপিইউ (একবারে ধীরতম) প্রতি সেকেন্ডে 2G টিক্স (চক্র) রয়েছে। একটি সিপিইউ (আজকাল ভার্চুয়াল কোর) প্রতি টিকিটে একবার এটির নিবন্ধ থেকে কোনও মান আনতে পারে। যেহেতু ভার্চুয়াল কোরটিতে একাধিক প্রক্রিয়াকরণ ইউনিট রয়েছে (ALU - পাটিগণিত যুক্তি ইউনিট, এফপিইউ ইত্যাদি) এটি সম্ভব হলে যথাসময়ে নির্দিষ্ট নির্দেশাবলীর প্রক্রিয়া করতে পারে।
মূল মেমরির অ্যাক্সেসের জন্য 70ns থেকে 100ns খরচ হয় (ডিডিআর 4 কিছুটা দ্রুত হয়)। এই সময়টি মূলত এল 1, এল 2 এবং এল 3 ক্যাশে সন্ধান করছে এবং মেমরির চেয়ে বেশি আঘাত করবে (মেমরি নিয়ন্ত্রণকারীকে কমান্ড প্রেরণ করবে, যা এটি মেমরি ব্যাঙ্কগুলিতে প্রেরণ করে), প্রতিক্রিয়াটির জন্য অপেক্ষা করুন এবং সম্পন্ন করুন।
100ns মানে প্রায় 200 টিক্স। সুতরাং মূলত যদি কোনও প্রোগ্রাম সর্বদা প্রতিটি স্মৃতি অ্যাক্সেসের ক্যাচগুলি মিস করে তবে সিপিইউ তার প্রায় 99,5% সময় ব্যয় করবে (যদি এটি কেবল মেমরি পড়ে) মেমরির জন্য অপেক্ষা করতে নিষ্ক্রিয়।
জিনিসের গতি বাড়ানোর জন্য রয়েছে এল 1, এল 2, এল 3 ক্যাশে। তারা স্মৃতি সরাসরি চিপে স্থাপন এবং প্রদত্ত বিটগুলি সংরক্ষণ করতে বিভিন্ন ধরণের ট্রানজিস্টর সার্কিট ব্যবহার করে। এটি আরও কক্ষ, আরও শক্তি গ্রহণ করে এবং মূল স্মৃতিশক্তির তুলনায় আরও ব্যয়বহুল, যেহেতু একটি সিপিইউ সাধারণত আরও উন্নত প্রযুক্তি ব্যবহার করে উত্পাদিত হয় এবং এল 1, এল 2, এল 3 মেমরির সিপিইউটিকে মূল্যহীন (ত্রুটি) রেন্ডার করার সুযোগ পায় বড় এল 1, এল 2, এল 3 ক্যাশে ত্রুটির হার বাড়ায় যা ফলন হ্রাস করে যা সরাসরি আরআইআই হ্রাস করে। সুতরাং যখন উপলব্ধ ক্যাশে আকারের কথা আসে তখন প্রচুর বাণিজ্য বন্ধ থাকে।
(বর্তমানে একটি প্রকৃত উত্পাদন ত্রুটি হ'ল ক্যাশে মেমরি অঞ্চলগুলি সামগ্রিকভাবে সিপিইউ ত্রুটি সরবরাহ করে এমন সম্ভাবনা হ্রাস করার জন্য নির্দিষ্ট কিছু অংশ নিষ্ক্রিয় করতে সক্ষম হওয়ার জন্য বর্তমানে আরও কিছু এল 1, এল 2, এল 3 ক্যাশে তৈরি করে)।
একটি সময় ধারণা দিতে (উত্স: ক্যাশে এবং মেমরি অ্যাক্সেস খরচ )
- এল 1 ক্যাশে: 1ns থেকে 2ns (2-4 চক্র)
- L2 ক্যাশে: 3ns থেকে 5ns (6-10 চক্র)
- L3 ক্যাশে: 12ns থেকে 20ns (24-40 চক্র)
- র্যাম: 60ns (120 চক্র)
যেহেতু আমরা বিভিন্ন সিপিইউ প্রকারগুলি মিশ্রণ করি এটি কেবল অনুমান মাত্র তবে একটি মেমরির মান আনার সময় কী ঘটছে তা একটি ভাল ধারণা দেয় এবং আমাদের কিছু ক্যাশে স্তরটিতে একটি হিট বা মিস থাকতে পারে।
সুতরাং একটি ক্যাশে মূলত মেমরি অ্যাক্সেসের গতি বাড়িয়ে তোলে (60ns বনাম 1ns)।
একটি মান আনা, এটি পুনরায় পড়ার সুযোগের জন্য ক্যাশে সংরক্ষণ করা এটি প্রায়শই অ্যাক্সেস করা চলকগুলির পক্ষে ভাল তবে মেমরির অনুলিপি ক্রিয়াকলাপের জন্য এটি ধীর হতে পারে যেহেতু কেউ কেবল একটি মান পড়ে, কোথাও মান লেখেন এবং কখনই মানটি পড়েন না slow আবার ... কোনও ক্যাশে আঘাত হানে না, মৃত ধীর হয় না (এর পাশাপাশি সমান্তরালে ঘটতে পারে যেহেতু আমাদের অর্ডার কার্যকর হয়নি)।
এই মেমরি অনুলিপিটি এত গুরুত্বপূর্ণ যে এটির গতি বাড়ানোর বিভিন্ন উপায় রয়েছে। প্রথম দিনগুলিতে মেমরি প্রায়শই সিপিইউর বাইরে মেমরি অনুলিপি করতে সক্ষম হয়। এটি সরাসরি মেমরি নিয়ামক দ্বারা পরিচালিত হয়েছিল, তাই মেমরি অনুলিপি অপারেশন ক্যাশে দূষিত হয়নি।
তবে একটি সরল মেমরির অনুলিপি থেকে অন্য মেমরির সিরিয়াল অ্যাক্সেস বেশ সাধারণ ছিল। একটি উদাহরণ একাধিক তথ্যের বিশ্লেষণ করা। একটি পূর্ণসংখ্যার অ্যারে থাকা এবং গণনার সমষ্টি, গড়, গড় বা আরও সাধারণ কোনও সুনির্দিষ্ট মান (ফিল্টার / অনুসন্ধান) হ'ল যে কোনও সাধারণ উদ্দেশ্য সিপিইউতে প্রতিবার চালানো অ্যালগরিদমের আরও একটি গুরুত্বপূর্ণ শ্রেণি ছিল।
সুতরাং মেমরি অ্যাক্সেস প্যাটার্ন বিশ্লেষণ করে এটা স্পষ্ট হয়েছিল যে ডেটা ক্রমাগতভাবে প্রায়শই পড়া হয়। একটি উচ্চ সম্ভাবনা ছিল যে কোনও প্রোগ্রাম যদি সূচক i তে মানটি পড়েন তবে প্রোগ্রামটি i + 1 মানটিও পড়বে। এই সম্ভাবনা সম্ভাবনার চেয়ে কিছুটা বেশি যে একই প্রোগ্রামটি i + 2 এবং আরও কিছু মান পড়বে।
সুতরাং একটি মেমরি ঠিকানা দেওয়া এটি ছিল (এবং এখনও রয়েছে) এগিয়ে পড়া এবং অতিরিক্ত মানগুলি আনা একটি ভাল ধারণা। এই কারণেই এখানে একটি বুস্ট মোড রয়েছে।
বুস্ট মোডে মেমোরি অ্যাক্সেসের অর্থ, কোনও ঠিকানা প্রেরণ করা হয় এবং একাধিক মান ক্রমানুসারে প্রেরণ করা হয়। প্রতিটি অতিরিক্ত মান প্রেরণে অতিরিক্ত 10ns (এমনকি নীচেও) লাগে।
আর একটি সমস্যা ছিল ঠিকানা। ঠিকানা পাঠাতে সময় লাগে takes মেমরির একটি বৃহত অংশ সম্বোধন করতে বড় ঠিকানাগুলি প্রেরণ করতে হবে। প্রথম দিনগুলিতে এর অর্থ হল যে ঠিকানা বাসটি কোনও একক চক্রের (টিক) প্রেরণে পাঠানোর পক্ষে যথেষ্ট বড় ছিল না এবং আরও বিলম্ব যুক্ত করে ঠিকানা প্রেরণের জন্য একাধিক চক্রের প্রয়োজন ছিল।
উদাহরণস্বরূপ 64৪ বাইটের একটি ক্যাশে লাইনটির অর্থ মেমরিটি মেমরির স্বতন্ত্র (নন-ওভারল্যাপিং) ব্লকগুলিতে বিভক্ত হয় যা আকারে 64 বাইট হয়। By৪ বাইটস মানে প্রতিটি ব্লকের প্রারম্ভের ঠিকানাটির সর্বদা শূন্য হওয়ার জন্য সর্বনিম্ন ছয়টি অ্যাড্রেস বিট থাকে। সুতরাং প্রতিবার এই ছয়টি শূন্য বিট প্রেরণের কোনও ঠিকানার বাসের প্রস্থের (স্বাগত প্রভাব) এর জন্য 64 বার ঠিকানা ঠিকানা বাড়ানোর দরকার নেই।
ক্যাশে লাইনটি আরেকটি সমস্যা সমাধান করে (সামনের পড়া এবং ঠিকানা বাসে ছয় বিট সংরক্ষণ / মুক্ত করার পাশাপাশি) ক্যাশেটি যেভাবে সাজানো হয়েছে তাতে। উদাহরণস্বরূপ, যদি কোনও ক্যাশে 8 বাইট (64 বিট) ব্লক (কোষ )গুলিতে বিভক্ত হয় তবে মেমরি সেলটির ঠিকানা সংরক্ষণ করার জন্য এই ক্যাশে সেলটি পাশাপাশি মান রাখে। যদি ঠিকানাটিও bit৪ বিট হয় তবে এর অর্থ হ'ল অর্ধেক ক্যাশে আকারটি ঠিকানার মাধ্যমে খাওয়া হয় যার ফলে 100% ওভারহেড হয়।
যেহেতু একটি ক্যাশে লাইন by৪ বাইবিট এবং একটি সিপিইউ bit৪ বিট - bit বিট = ৫৮ বিট ব্যবহার করতে পারে (শূন্য বিটগুলি খুব বেশি সঠিকভাবে সংরক্ষণ করার দরকার নেই) এর অর্থ আমরা 58 বিট (11% ওভারহেড) এর ওভারহেড দিয়ে 64 বাইট বা 512 বাইটগুলি ক্যাশে করতে পারি। বাস্তবে সংরক্ষিত ঠিকানাগুলি এর চেয়ে আরও ছোট তবে স্থিতির তথ্য রয়েছে (যেমন ক্যাশে লাইনটি বৈধ এবং নির্ভুল, নোংরা এবং ম্যামে আবার লিখতে হবে)।
আরেকটি দিক হ'ল আমাদের কাছে সেট-এসোসিয়েটিভ ক্যাশে রয়েছে। প্রতিটি ক্যাশে ঘর নির্দিষ্ট ঠিকানা সঞ্চয় করতে সক্ষম নয় তবে সেগুলির কেবলমাত্র একটি উপসেট। এটি প্রয়োজনীয় সঞ্চিত ঠিকানা বিটকে আরও ছোট করে তোলে, ক্যাশে সমান্তরাল অ্যাক্সেসের অনুমতি দেয় (প্রতিটি উপসেট একবারে অ্যাক্সেস করা যেতে পারে তবে অন্যান্য সাবসেটগুলির চেয়ে পৃথক)।
আরও বিশেষত যখন বিভিন্ন ভার্চুয়াল কোরগুলির মধ্যে ক্যাশে / মেমরির অ্যাক্সেসকে সিঙ্ক্রোনাইজ করার কথা আসে, তাদের মূল প্রতি তাদের স্বাধীন একাধিক প্রসেসিং ইউনিট এবং শেষ পর্যন্ত এক মেইনবোর্ডে একাধিক প্রসেসরের (যা সেখানে ৪৮ টি প্রসেসর এবং আরও অনেকগুলি বোর্ড রয়েছে)।
আমাদের ক্যাশে লাইন কেন এটি মূলত বর্তমান ধারণা। সামনে পড়ার সুবিধাটি খুব বেশি এবং ক্যাশে-লাইন থেকে একক বাইট পড়ার সবচেয়ে খারাপ পরিস্থিতি এবং আর কখনও পড়তে হবে না কারণ সম্ভাবনাটি খুব পাতলা।
ক্যাশে-লাইন ()৪) আকারের আকারটি বৃহত্তর ক্যাশে-লাইনের মধ্যে থাকা পছন্দসইভাবে বেছে নেওয়া বাণিজ্য-বাণিজ্য, এটির শেষ বাইটটি অদূর ভবিষ্যতেও পড়ার সম্ভাবনা কম করে দেয়, সম্পূর্ণ ক্যাশে লাইনটি আনতে সময়কালটি এটি পড়তে পারে মেমোরি থেকে (এবং এটি আবার লিখতে) এবং ক্যাশে সংস্থার ওভারহেড এবং ক্যাশে এবং মেমরির অ্যাক্সেসের সমান্তরালকরণ।