লেখার পিছনে বনাম লেখার মাধ্যমে ক্যাচিং?


96

আমার উপলব্ধিটি হ'ল দুটি পদ্ধতির মধ্যে প্রধান পার্থক্য হ'ল "লেখার মাধ্যমে" পদ্ধতিতে ডেটাটি সঙ্গে সঙ্গে ক্যাশের মাধ্যমে মূল স্মৃতিতে লেখা হয়, যখন "লেখার পিছনে" ডেটা "পরবর্তী সময়ে" লেখা হয়।

আমাদের এখনও "পরবর্তী সময়ে" স্মৃতি অপেক্ষা করতে হবে তাই "লেখার মাধ্যমে" কী লাভ?


@ এরিকওয়াং আমার মনে হয় আপনার বোঝার write backচেয়ে ভাল পারফরম্যান্স হয়েছে?
wlnirvana

@ ওলনির্ভানা হ্যাঁ, আপনি ঠিক বলেছেন, এটি আমার ধর্মীয় ত্রুটি। আমি এটি মুছে ফেলব এবং ভবিষ্যতে বিভ্রান্তি এড়াতে এখানে একটি নতুন মন্তব্য করব।
ট্রাম্প 2020 - বিচারক

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

আমি দেখতে পাচ্ছি যে একটি ব্যাখ্যামূলক উত্তর দেওয়া হয়েছে। রাইট-ব্যাক অ্যালগরিদম কাভার করার পরে আমি আপনাকে লিখন-বরাদ্দ, লিখন-নোঅলোক্যাট ট্যাগগুলি দেখার পরামর্শ দিচ্ছি।
ğağlayan DÖKME

আপনার প্রশ্নের উত্তর হ'ল লেখার মাধ্যমে ক্যাচিংয়ের সাথে একই ব্লকের মধ্যে লেখার সময় মূল স্মৃতিতে কেবল একটি লেখার প্রয়োজন হয়। বিস্তারিত জানার জন্য আমার উত্তর দেখুন।
qwr

উত্তর:


116

মূল মেমরির মাধ্যমে লেখার সুবিধাটি হ'ল এটি কম্পিউটার সিস্টেমের নকশাকে সহজ করে। লেখার মাধ্যমে, মূল স্মৃতিতে সর্বদা লাইনটির একটি আপ-টু-ডেট কপি থাকে। সুতরাং যখন কোনও পড়া শেষ হয়, মূল স্মৃতি সর্বদা অনুরোধ করা ডেটার সাথে উত্তর দিতে পারে।

যদি লিখন-ব্যাক ব্যবহার করা হয়, কখনও কখনও আপ-টু-ডেট ডেটা প্রসেসরের ক্যাশে থাকে এবং কখনও কখনও এটি মূল স্মৃতিতে থাকে। যদি ডেটা কোনও প্রসেসরের ক্যাশে থাকে, তবে সেই প্রসেসরের অবশ্যই প্রধান মেমোরিটি পড়ার অনুরোধের জবাব দেওয়া থেকে বিরত রাখতে হবে, কারণ মূল স্মৃতিতে ডেটার একটি বাসি অনুলিপি থাকতে পারে। এটি লেখার মাধ্যমে আরও জটিল।

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

আরও একটি বিষয় - রাইটিং-ব্যাক আর্কিটেকচার সফ্টওয়্যারটিতে যা মেমরি-ম্যাপযুক্ত I / O রেজিস্টারগুলিকে লিখতে হবে তা নিশ্চিত করার জন্য অতিরিক্ত পদক্ষেপ নিতে হবে যে তাৎক্ষণিকভাবে ক্যাশে থেকে লেখার বাইরে পাঠানো হয়েছে। অন্যথায় অন্য প্রসেসরের দ্বারা লাইনটি পড়া না হওয়া বা লাইনটি উচ্ছেদ না করা পর্যন্ত লেখকগুলি কোরের বাইরে দৃশ্যমান হয় না।


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

4
আমার কোরে আমার ক্যাশে পদ্ধতিটি লেখার ব্যাক কিনা তা যাচাই করা সম্ভব?
কৃত্রিমভাবে

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

@ শাওউ "এলএসডব্লু" কমান্ড যা "অবিচ্ছিন্ন অভ্যন্তরীণ লেখার ব্যাক"
mug896

লেখার পিছনে আসল পদক্ষেপগুলি কী কী তা আমি এখনও বুঝতে পারি না তবে কেবল এটি জটিল বলে জানি ... আপনি কি এটি সম্পর্কে আরও উত্স / বিশদ সরবরাহ করতে পারবেন?
Kindred

11

সম্ভবত এই নিবন্ধটি আপনাকে এখানে লিঙ্ক করতে সহায়তা করতে পারে

লেখার মাধ্যমে: লেখালেখি ক্যাশে এবং ব্যাকিং স্টোর উভয় ক্ষেত্রে একযোগে করা হয়।

লিখন-পিছনে (বা লেখার পিছনে): লেখা কেবল ক্যাশে করা হয় to কোনও পরিবর্তিত ক্যাশে ব্লকটি প্রতিস্থাপনের ঠিক আগে দোকানে আবার লেখা হয়।

লেখার মাধ্যমে: যখন ডেটা আপডেট করা হয়, তখন এটি ক্যাশে এবং ব্যাক-এন্ড স্টোরেজ উভয়কেই লেখা হয়। এই মোডটি অপারেশনের জন্য সহজ তবে ডেটা লেখায় মন্থর কারণ ডেটা ক্যাশে এবং সঞ্চয় স্থান উভয়কেই লিখতে হয়।

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


আমি খুব শেষ বাক্য থেকে ব্যাখ্যাটি অনুসরণ করি না। বিদ্যুতের ব্যর্থতায় ডিআরএএম লেখার মাধ্যমে বা লেখার ব্যাক নির্বিশেষে ডেটা হারাবে, যাতে এটি কোনও লেখার পিছনে নির্দিষ্ট সমস্যা না হয়।
gustafbstrom

10

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

যা ঘটে তা হ'ল প্রসেসরের ডেটা (এ) ক্যাশের প্রথম লাইনে লেখা হয়। বৈধ বিট এবং ট্যাগ বিট সেট করা আছে। নোংরা বিট সেট করা আছে 1।

নোংরা বিটটি কেবল ইঙ্গিত করে যে ক্যাশে লাইনটি সর্বশেষে ক্যাশে আনার পরে লেখা হয়েছিল!

এখন ধরা যাক অন্য অপারেশন হয়েছে: ই পড়ুন (যেখানে ই প্রথম প্রথম ক্যাশে লাইনে ম্যাপ করা হয়েছে)

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

সুতরাং লিখিত ব্যাক পলিসি গ্যারান্টি দেয় না যে মেমরি এবং তার সাথে সম্পর্কিত ক্যাশে লাইনে ব্লকটি একই হবে। তবে যখনই লাইনটি প্রতিস্থাপন করতে চলেছে, প্রথমে একটি লেখার ব্যাক সঞ্চালিত হবে।

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


5

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

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

লেখার পিছনে: তথ্যটি ক্যাশে একটি ব্লকে লেখা হয়। পরিবর্তিত ক্যাশে ব্লকটি কেবল মেমোরিতে লেখা হয় যখন এটি প্রতিস্থাপন করা হয় (কার্যত, একটি অলস রচনা )। প্রতিটি ক্যাশে ব্লকের জন্য একটি বিশেষ বিট, নোংরা বিট , ক্যাশে থাকা অবস্থায় ক্যাশে ব্লকটি সংশোধন করা হয়েছে কিনা তা চিহ্নিত করে। নোংরা বিটটি সেট না করা থাকলে, ক্যাশে ব্লকটি "পরিষ্কার" এবং একটি রাইস মিসকে মেমরিতে ব্লকটি লিখতে হবে না।

সুবিধাটি হ'ল লেখাগুলি ক্যাশের গতিতে ঘটতে পারে এবং একই ব্লকের মধ্যে প্রধান মেমরিতে কেবল একটি লেখার প্রয়োজন হয় (যখন পূর্ববর্তী ব্লকটি প্রতিস্থাপন করা হয়)। অসুবিধাগুলি হ'ল এই প্রোটোকলটি প্রয়োগ করা শক্ত, মূল মেমরিটি ক্যাশের সাথে সামঞ্জস্যপূর্ণ হতে পারে না (সিঙ্কে নয়) এবং প্রতিস্থাপনের ফলে মূল স্মৃতিতে নোংরা ব্লকগুলি লেখার কারণ হতে পারে reads

একটি জন্য নীতিগুলি লেখার মিস আমার প্রথম লিঙ্কে বিস্তারিত করছে।

এই প্রোটোকলগুলি একাধিক প্রসেসর এবং একাধিক ক্যাশেগুলির ক্ষেত্রে কেস রাখে না, যেমনটি আধুনিক প্রসেসরগুলিতে সাধারণ। এর জন্য আরও জটিল ক্যাশে সমন্বয় ব্যবস্থা প্রয়োজন। লেখার মাধ্যমে ক্যাশেগুলিতে সহজ প্রোটোকল রয়েছে যেহেতু ক্যাশে একটি লেখা মেমরির সাথে সাথে প্রতিফলিত হয়।

ভাল সম্পদ:


0

রাইটিং-ব্যাক আরও জটিল একটি জটিল ক্যাশে কোহরেন্স প্রোটোকল (এমওইএসআই) প্রয়োজন তবে এটি সিস্টেমটিকে দ্রুত এবং দক্ষ করে তোলে বলে এটি মূল্যবান।

লিখন-মাধ্যমে একমাত্র সুবিধা হ'ল এটি বাস্তবায়ন অত্যন্ত সহজ করে তোলে এবং কোনও জটিল ক্যাশে সংহতি প্রোটোকলের প্রয়োজন নেই।


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

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

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

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