X86 এ "অস্থায়ী" স্মৃতি অ্যাক্সেসের অর্থ কী


123

এটি কিছুটা নিম্ন-স্তরের প্রশ্ন। X86 সমাবেশে দুটি এসএসই নির্দেশনা রয়েছে:

MOVDQA xmmi, m128

এবং

MOVNTDQA xmmi, m128

আইএ -32 সফ্টওয়্যার বিকাশকারীর ম্যানুয়ালটি বলেছে যে এমওভিএনটিটিকিউএর এনটি হ'ল নন-টেম্পোরাল এবং অন্যথায় এটি এমওভিডিকিউর সমান।

আমার প্রশ্ন হ'ল নন-টেম্পোরাল বলতে কী বোঝায়?


6
মনে রাখবেন যে এসএসই 4.1 MOVNTDQA xmmi, m128একটি এনটি লোড, অন্য সমস্ত এনটি নির্দেশাবলী ব্যতীত স্টোর prefetchnta। এখানে গৃহীত উত্তরটি কেবল স্টোর সম্পর্কে কথা বলে মনে হচ্ছে। এটিই আমি এনটি লোড সম্পর্কে সক্রিয় করতে সক্ষম হয়েছি । টিএল: ডিআর: আশা করি সিপিইউ ক্যাশে দূষণ হ্রাস করার জন্য এনটি ইঙ্গিতটির সাথে দরকারী কিছু করে তবে তারা "সাধারণ" ডাব্লুবি স্মৃতিতে দৃ the়ভাবে আদেশিত শব্দার্থকে ওভাররাইড করে না, তাই তাদের ক্যাশে ব্যবহার করতে হবে না।
পিটার কর্ডেস

5
আপডেট: এনটি লোডগুলি বেশিরভাগ সিপিইউতে (যেমন ইন্টেল এসএনবি পরিবার) ইউসিএসডাব্লু মেমরি অঞ্চলগুলি ব্যতীত দরকারী কিছু করতে পারে না। এনটি / স্ট্রিমিং দোকানে স্পষ্টভাবে স্বাভাবিক মেমরিতে, যদিও কাজ করে।
পিটার কর্ডেস

4
@ পিটার: আপনার মানে ইউএসডাব্লুসি মেমরি ঠিক আছে? আমি এর আগে কখনও ইউসিএসডাব্লু বা ইউএসডাব্লুসি মেমরি শুনিনি। ভুল সংক্ষিপ্ত রূপটি গুগল করা উপকারী ছিল না :-)
অ্যান্ড্রু বেনব্রিজে

4
@ অ্যান্ড্রুবাইনব্রিজ: হ্যাঁ, ডাব্লুসি মেমরি টাইপের বৈশিষ্ট্য। অপ্রয়োজনীয় অনুমানমূলক লেখার সংমিশ্রণ। আমি মনে করি যে আমি আনচীচেবলকে বড় করে আছি এবং মনে রাখছি যে এটি 4 টি অক্ষরের দীর্ঘ হবে। : পি
পিটার

উত্তর:


147

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

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

এটি এবং অনুরূপ পরিস্থিতিতে, প্রসেসরগুলি অ-অস্থায়ী লেখার ক্রিয়াকলাপগুলির জন্য সমর্থন সরবরাহ করে। এই প্রসঙ্গে অস্থায়ী নয় মানে ডেটা শীঘ্রই পুনরায় ব্যবহার করা হবে না, সুতরাং এটি ক্যাশে করার কোনও কারণ নেই। এই অ-অস্থায়ী লেখার ক্রিয়াকলাপগুলি ক্যাশে লাইনটি পড়ে না এবং তারপরে এটি পরিবর্তন করে; পরিবর্তে, নতুন কন্টেন্ট সরাসরি মেমোরিতে লেখা হয়।

সূত্র: http://lwn.net/Articles/255364/


15
উত্তম উত্তর, আমি কেবল এটিই উল্লেখ করতে চাই যে এনটি নির্দেশাবলী সহ প্রসেসরের ধরণের এমনকি একটি অ-অস্থায়ী নির্দেশ (যেমন একটি সাধারণ নির্দেশ) দিয়েও লাইন ক্যাশেটি "পড়া এবং তারপরে পরিবর্তিত" হয় না। ক্যাশের মধ্যে নেই এমন একটি লাইনে লেখার জন্য সাধারণ নির্দেশের জন্য, একটি লাইন ক্যাশে সংরক্ষিত থাকে এবং একটি মুখোশ ইঙ্গিত দেয় যে লাইনের অংশগুলি আপ টু ডেট রয়েছে। এই ওয়েব পেজ এটা "কোন স্টল দোকান উপর" কল: ptlsim.org/Documentation/html/node30.html । আমি আরও সুনির্দিষ্ট রেফারেন্স খুঁজে পাইনি, আমি কেবল এই লোকগুলির কাছ থেকে শুনেছিলাম যাদের কাজ প্রসেসর সিমুলেটরগুলি বাস্তবায়ন করা।
পাস্কেল কুয়াক

2
প্রকৃতপক্ষে ptlsim.org একটি চক্র-নির্ভুল প্রসেসর সিমুলেটর সম্পর্কে একটি ওয়েবসাইট, ঠিক যে ধরণের ছেলেরা আমাকে "স্টোরের কোনও স্টল নেই" সম্পর্কে বলেছিল তারা ঠিক একই ধরণের কাজ করছে। তারা যদি এই মন্তব্যটি দেখেন তবে আমি তাদের আরও ভাল উল্লেখ করব: unisim.org
পাস্কেল কুয়াক

1
উত্তর এবং মন্তব্যগুলি থেকে এখানে stackoverflow.com/questions/44864033/… মনে হচ্ছে এটি SFENCEপ্রয়োজন হয় না। কমপক্ষে একই থ্রেডে। আপনি কি দেখতে পারেন?
সার্জ রোগাচ

1
@ সার্জারোগ্যাচ এটি নির্ভর করে আপনি কোন দৃশ্যের কথা বলছেন তার উপর নির্ভর করে তবে হ্যাঁ এমন পরিস্থিতি রয়েছে যেখানে sfenceএনটি স্টোরের প্রয়োজন হয়, যদিও এটি কখনও কখনও সাধারণ স্টোরের প্রয়োজন হয় না। NT তে দোকানে, অন্যান্য দোকানে (NT তে বা না হোক) থেকে সম্মান সঙ্গে আদেশ করা হয় না হিসাবে অন্যান্য থ্রেড দ্বারা দেখা একটি ছাড়াই sfence। স্টোরগুলি একই থ্রেড থেকে পাঠের জন্য, তবে আপনার কখনই প্রয়োজন হয় না sfence: প্রদত্ত থ্রেডটি সর্বদা প্রোগ্রামের ক্রমে তার নিজস্ব স্টোরগুলি দেখতে পাবে, তারা এনটি স্টোর কিনা তা নির্বিশেষে।
BeeOnRope

40

টার্গেটে এসপো বেশ প্রশংসনীয়। শুধু আমার দুটি সেন্ট যুক্ত করতে চেয়েছিলেন:

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

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


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

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

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

4
@ প্রমোদ সেই একই যুক্তিটি সহজেই সাধারণভাবে অপ্টিমাইজেশনে সাধিত করে এবং আলোচনার সত্যিকার অর্থেই নয় - স্পষ্টভাবে যে বাণিজ্য ইতিমধ্যে বিবেচনা করা হয়েছে বা অন্যথায় আমরা ইতিমধ্যে অস্থায়ী নির্দেশাবলীর বিষয়ে কথা বলছি এই সত্যটি প্রদান করে অপ্রাসঙ্গিক বলে মনে করা হচ্ছে
awdz9nld

7

ইন্টেল ®৪ এবং আইএ -32 আর্কিটেকচার সফটওয়্যার বিকাশকারীর ম্যানুয়াল, খণ্ড 1: বেসিক আর্কিটেকচার, "ইনটেল স্ট্রিমিং সিমডি এক্সটেনশানস (ইন্টেল এসএসই)" অধ্যায়ের সাথে প্রোগ্রামিং:

টেম্পোরাল বনাম অ-টেম্পোরাল ডেটা ক্যাচিং

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

অস্থায়ী লোড এবং স্টোর নির্দেশাবলীর বিবরণ। উত্স: ইন্টেল 64 এবং আইএ -32 আর্কিটেকচার সফটওয়্যার বিকাশকারীর ম্যানুয়াল, খণ্ড 2: নির্দেশিকা সেট রেফারেন্স

লোড (MOVNTDQA ad লোড ডাবল কোয়াডওয়ার্ড অ-অস্থায়ী প্রান্তিককরণ ইঙ্গিত)

স্মৃতি উত্সটি ডাব্লুসি (সংযুক্তি লিখুন) মেমরির ধরণ থাকলে সোর্স অপারেন্ড (দ্বিতীয় অপারেন্ড) থেকে গন্তব্য অপারেন্ড (প্রথম অপারেন্ড) থেকে ডাবল কোয়াডওয়ার্ড লোড করে [...]

[...] প্রসেসর ক্যাশে হায়ারার্কিতে ডেটা পড়ে না এবং মেমরি থেকে ক্যাশে হায়ারার্কির সাথে সম্পর্কিত ক্যাশে লাইনটি এনে দেয় না।

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

স্টোর (মোভনডিটিকিউ — অস্থায়ী ইঙ্গিত ব্যবহার করে প্যাক করা পূর্ণসংখ্যার স্টোর)

স্মৃতিতে লেখার সময় ডেটা ক্যাচিং প্রতিরোধ করার জন্য অ-অস্থায়ী ইঙ্গিত ব্যবহার করে উত্স অপারেন্ডে (দ্বিতীয় অপারেন্ড) প্যাকড পূর্ণসংখ্যার গন্তব্য অপারেন্ডে (প্রথম অপারেন্ড) সরানো হয়।

[...] প্রসেসর ক্যাশে হায়ারার্কিতে ডেটা লিখেন না, বা এটি ক্যাশ হায়ারার্কিতে মেমরি থেকে সম্পর্কিত ক্যাশে লাইন আনবে না।

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

অবশেষে, অ-অস্থায়ী স্টোর সম্পর্কিত জন ম্যাকাল্পিন নোটগুলি পর্যালোচনা করা আকর্ষণীয় হতে পারে ।


3
এসএসই 4.1 MOVNTDQAকেবল ডাব্লুসি (বিশেষভাবে রাইটিং -কম্বাইনিং) মেমরি অঞ্চলগুলিতে বিশেষ কিছু করে, যেমন ভিডিও র‍্যাম। এটি বর্তমান এইচডব্লিউয়ের স্বাভাবিক ডাব্লুবি (লিখিত-ব্যাক) মেমরির ক্ষেত্রে মোটেই কার্যকর নয়, এনটি ইঙ্গিতটি উপেক্ষা করা হয় এবং সম্পূর্ণ দৃ strongly়-আদেশিত লোড শব্দার্থক প্রয়োগ হয়। prefetchntaদূষণ হিসাবে - ডাব্লুবি স্মৃতি থেকে লোড হ্রাস করা হিসাবে দরকারী হতে পারে । বর্তমানের x86 আর্কিটেকচারগুলি অ-অস্থায়ী লোডগুলিকে সমর্থন করে ("সাধারণ" মেমরি থেকে)?
পিটার কর্ডেস

2
এটি সঠিক, এনটি স্টোরগুলি ডাব্লুবি স্মৃতিতে দুর্দান্ত কাজ করে এবং দুর্বলভাবে অর্ডার করা হয় এবং সাধারণত মেমরির বৃহত অঞ্চলগুলি লেখার জন্য এটি একটি ভাল পছন্দ । এনটি লোড হয় না। কাগজে থাকা x86 ম্যানুয়ালটি ডাব্লুবি স্মৃতি থেকে লোডের জন্য এনটি ইঙ্গিতটিকে কিছু করার অনুমতি দেয়, তবে বর্তমানের সিপিইউতে এটি কিছুই করে না । (সম্ভবত কোনও এনটি-সচেতন এইচডাব্লু প্রিফেসচার নেই বলেই সম্ভবত))
পিটার কর্ডেস

আমি উত্তরের সাথে সম্পর্কিত তথ্য যুক্ত করেছি added আপনাকে অনেক ধন্যবাদ.
ছুটির দিন

1
@LewisKelsey: NT তে দোকানে মেমরির টাইপ ওভাররাইড না। এজন্য তাদের ডাব্লুবি স্মৃতিতে দুর্বলভাবে আদেশ দেওয়া যেতে পারে। প্রধান প্রভাবটি আরএফওগুলি এড়ানো হচ্ছে (স্পষ্টতই তারা একটি অবৈধ পাঠায় যা এমনকি স্মৃতিতে পৌঁছানোর পরে অন্যান্য নোংরা রেখাগুলি পরিষ্কার করে)। এগুলি অর্ডার অফ-অর্ডারও হয়ে উঠতে পারে, সুতরাং পূর্বের ক্যাশে-মিস (নিয়মিত) স্টোরটি চালুর আগে বা পূর্বের ক্যাশে-মিস লোড ডেটা না পাওয়া পর্যন্ত তাদের অপেক্ষা করতে হবে না । উদাহরণস্বরূপ, যে ধরণের বাধা সম্পর্কে জিজ্ঞাসা করা হয়েছে প্রতিটি কোরের বাইরের মেমরিটি কি সবসময়ই কোনও মাল্টিপ্রসেসর সিস্টেমে ধারণামূলকভাবে সমতল / ইউনিফর্ম / সিঙ্ক্রোনাস থাকে?
পিটার

1
@ লুইসকেলসি: একটি মেমোরি অর্ডার মেশিন পরিষ্কার করে কোনও ইউসি স্টোরের পরে যে কোনও চাপ প্রয়োজন তা হলে তাড়াতাড়ি করা উচিত নয়। এটি বাদ দিয়ে, আউট অফ-অর্ডার ব্যাক এন্ড থেকে অবসর গ্রহণের পরে স্টোর অবধি অবধি কমিটমেন্ট অর্ডার কার্যকর হয় না। স্টোর-অ্যাড্রেস উওপ কার্যকর হওয়ার পরে এটি ঘটতে পারে না, যেখানে ঠিকানার জন্য মেমরির ধরণটি পরীক্ষা করা যায়। একটি স্টোর-ঠিকানা ইউওপি টিএলবি পরীক্ষা করে যখন তা কার্যকর করে; এভাবেই সিপিইউগুলি অবসর নেওয়ার আগে ত্রুটিযুক্ত স্টোরগুলি সনাক্ত করতে পারে। এসবি এন্ট্রি এল 1 ডি প্রতিশ্রুতি দেওয়ার জন্য প্রস্তুত না হওয়া পর্যন্ত এটি অপেক্ষা করতে পারে না; এই মুহুর্তে মৃত্যুদণ্ড কার্যকর হয়ে গেছে।
পিটার কর্ডেস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.