এমন কি সিপিইউ রয়েছে যা এই সম্ভাব্য এল 1 ক্যাশে লেখার অপ্টিমাইজেশন সম্পাদন করে?


9

যখন এল 1 ক্যাশেযুক্ত সিপিইউ কোনও লেখালেখি করে, তখন সাধারণত যা হয় তা হ'ল (ধরে নেওয়া হয় যে এটি যে ক্যাশে লাইনটি লিখছে এটি ইতিমধ্যে L1 ক্যাশে রয়েছে) ক্যাশে (ডেটা আপডেট করার পাশাপাশি) চিহ্নিত করে যে ক্যাশে লাইনটি নোংরা হিসাবে চিহ্নিত করে , এবং পরবর্তী সময়ে আপডেট করা ডেটা দিয়ে লাইনটি লিখবে।

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

আমার প্রশ্ন: এমন সিপিইউ রয়েছে যা এই অপ্টিমাইজেশনটি সম্পাদন করে?

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

সুতরাং, এমন কোনও সিপিইউ আছে যা লেখার উপায়কে এইভাবে অনুকূল করতে চেষ্টা করে?


11
এটি বলা হয়ে থাকে যে কম্পিউটার বিজ্ঞানে দুটি সত্যই সমস্যা রয়েছে: ক্যাশে অবৈধকরণ, জিনিসগুলির নামকরণ ভাল করা এবং একের পর এক ত্রুটি। এর মধ্যে প্রথমটি কেন কৌশলপূর্ণ তা এটি একটি উদাহরণ।
ম্যাসন হুইলারের

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

@ পঞ্চো এছাড়াও আপনার আসল প্রশ্নটি আরও ভাল সুবিধা প্রাপ্ত / সুরক্ষিত মোড প্রয়োগ করার বিষয়ে যা মনে হয় ব্যবহারের তথ্য ফাঁস করে না। হয়তো আপনার এটি জিজ্ঞাসা করা উচিত? ...
TheCodeArtist

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

4
আজ যদি এটি সত্য হয় তবে এটি আগামীকাল সত্য হওয়ার নিশ্চয়তা দেওয়া হয় না।
pjc50

উত্তর:


4

অনুসন্ধানের কয়েক ঘন্টা থেকে, আমি এমন একটি সিপিইউ খুঁজে পাইনি যা এই নির্দিষ্ট অপটিমাইজেশন ব্যবহার করে। পড়া / লেখার ক্রিয়াকলাপ এবং ডেটা অ্যাক্সেসের সাথে হিট / মিসের সাথে সম্পর্কিত সাধারণত উল্লিখিত বেশিরভাগ অপ্টিমাইজেশন:

(পৃষ্ঠাগুলি and এবং) https://cseweb.ucsd.edu/classes/fa14/cse240A-a/pdf/08/CSE240A-MBT-L15-Cache.ppt.pdf

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

নিবন্ধকের ক্যাশে বর্তমান মান প্রাপ্তি

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

সিপিইউ ক্যাশে সামগ্রী পড়ুন

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

আর একটি সম্ভাবনা যা আমি ক্যাশে সংগতি সম্পর্কিত বলে মনে করেছি:

অভিসম্পর্ক সম্পর্কিত একটি উইকিপিডিয়া নিবন্ধ থেকে প্রাসঙ্গিক উত্তরণ

এই ইস্যুটির সাথে সম্পর্কিত আমার মূল দৃষ্টিভঙ্গিটি ছিল স্নারফিংয়ের বিবরণ:

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

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


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

আপনি যদি সফ্টওয়্যারটিতে এটি বাস্তবায়নের চেষ্টা করছেন, আপনার কাছে কেবল সংকলকটি তৈরির কোড রয়েছে যা তার if (mem != x) { mem = x; }পরিবর্তে করে mem = x;। মাল্টি-থ্রেড প্রোগ্রামে ভাগ করা ক্যাশে লাইনের ক্ষেত্রে এটি কেবল কখনও কখনও অপ্টিমাইজেশন হয়, কারণ লেখাই অন্য থ্রেড পড়তে বাধা দেয়।
পিটার

1
"স্নারফিং" এর সাথে কিছু করার নেই। এটি কেবল প্যাসিভ স্নুপিং। সিপিইউ ক্যাশেগুলি এমইএসআই ব্যবহার করে যাতে তাদের সুসংগত লেখার পিছনে ক্যাচ থাকতে পারে।
পিটার কর্ডেস

@ পিটারকর্ডস যদি আপনি আমার উত্তরটিকে বিরক্তিকর মনে করেন তবে আমি ক্ষমা চাই। তবে মনে হচ্ছে বিষয়টি সম্পর্কে আমার চেয়ে আপনার আরও অন্তর্দৃষ্টি রয়েছে। তো, কেন নিজেরাই প্রশ্নের উত্তর দিবেন না? আমার প্রতিক্রিয়া আপনার মানদণ্ডের দ্বারা স্পষ্টতই অপর্যাপ্ত ছিল ...


3

এল 1 ক্যাশে লিখন একটি খুব, খুব সময় সমালোচনামূলক অপারেশন।

ঠিক একই তথ্য ফিরে লিখতে বরং বিরল বলে মনে হচ্ছে। এই বিশেষ ক্ষেত্রে জিনিসগুলিকে গতিযুক্ত করার একটি অপ্টিমাইজেশন মোট মোট দ্রুতগতি অর্জন করতে যাচ্ছে না।

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

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

উদাহরণস্বরূপ, আপনার কাছে সি কোড এ [i] = x / y থাকলে; বেশিরভাগ সিপিইউতে পারফরম্যান্স করতে x / y বিভাগটি অসাধারণ দীর্ঘ সময় নেয়। যাইহোক, ফলাফলটি সংরক্ষণ করার জন্য বেশিরভাগ কাজের প্রয়োজন [i] বিভাগ শেষ হওয়ার অনেক আগেই হয়েছিল; কেবলমাত্র হারিয়ে যাওয়া জিনিসটি হ'ল আটটি ফলাফল বাইটের ক্যাশে লাইনে স্থানান্তর। ক্যাশে লাইনটি ফ্লাশ করছে এমন একটি অপারেশন বিভাগ শেষ না হওয়া পর্যন্ত স্বয়ংক্রিয়ভাবে অপেক্ষা করবে। একটি [i] পড়ার একটি অপারেশন সম্ভবত বিভাজক থেকে সরাসরি ফলাফল পেতে পুনঃনির্দেশিত করা হবে।


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

1

একটি সম্ভাব্য অপ্টিমাইজেশন হ'ল ক্যাশে লেখার বিষয়বস্তু এবং ক্যাশের আগের বিষয়বস্তুগুলির তুলনা করা এবং যদি এটি একই হয় তবে লাইনটিকে নোংরা হিসাবে চিহ্নিত করবেন না

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

সুতরাং, প্রকৃতপক্ষে অপ্টিমাইজেশন এখন খুব অস্পষ্ট কারণের উপর নির্ভর করবে: একটি সাধারণ সফটওয়্যার একই ডেটা দিয়ে তার ক্যাশেযোগ্য মেমরির কতবার পুনরায় লিখন করে।


এই তুলনাটি সিপিইউ লজিকের মধ্যে প্রয়োগ করা হবে। এটির জন্য অতিরিক্ত সিপিইউ অপারেশন প্রয়োজন হবে না, তবে সংকেতের সময় বাড়তে পারে যা সমস্যা হতে পারে বা নাও হতে পারে।
ziggystar

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

1
তবে আপনি সেই সময়ের কথা বলছেন যেখানে ব্যয়টি কেবল গেটের সংখ্যা বৃদ্ধি হতে পারে।
ziggystar

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

1
এবং এগুলির প্রতিটি লেখাই ক্যাশে লাইনটি সংশোধিত কিনা তা সিদ্ধান্তে বিলম্ব করে। সুতরাং যখন দ্বিতীয় লেখার ঘটনাটি ঘটে, তখন ক্যাশে লাইনটি এটি পরিবর্তিত কিনা তা (এখনও) জানে না। এটি মজার হতে যাচ্ছে।
gnasher729
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.