পৃষ্ঠার টেবিল কি ক্যাশে আছে?


12

হার্ডওয়্যার টিএলবি পরিচালন সহ একটি মাইক্রোপ্রসেসরে (একটি ইনটেল x86-64 বলুন) যদি কোনও টিএলবি মিস হয় এবং প্রসেসর পৃষ্ঠার টেবিলটি হাঁটছেন তবে এইগুলি (অফ-চিপ) মেমরি অ্যাক্সেসগুলি ক্যাশে হায়ারার্কি (এল 1, এল 2 ইত্যাদি) দিয়ে যাচ্ছে going )?


বৈদ্যুতিন ডিজাইনের সাথে কিছুই করার নেই। প্রশ্ন বন্ধ হয়ে যাবে।
লিওন হেলার

8
এটি একটি নির্দিষ্ট চিপস কীভাবে কাজ করে তা জিজ্ঞাসা করছে, তাই আমি মনে করি এটি বিষয় নিয়ে।
অলিন ল্যাথ্রপ

5
@ অলিনল্যাথ্রপ: আমি সম্মত: আমি মনে করি একটি সংহত সার্কিটের নিম্ন-স্তরের বিবরণগুলি বিষয়বস্তুতে রয়েছে।
ডেভিডকারি

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

উত্তর:


8

হ্যাঁ, যতদূর আমি বলতে পারি, ইন্টেল x86-64 প্রসেসরের উপর, যখন কোনও টিএলবি মিস হয় এবং প্রসেসর পৃষ্ঠার টেবিলটি হাঁটছেন, সেই অফ-চিপ মেমরির প্রবেশাধিকারগুলি ক্যাশে স্তরক্রমের মধ্য দিয়ে যায়।

আমি কয়েকটি বিবরণে এখনও কিছুটা অস্পষ্ট, এবং আমি আশা করি যে অন্য কোনও উত্তর সেগুলি পূরণ করবে - এমন কোনও ইন্টেল বা এএমডি ম্যানুয়াল নেই যা পৃষ্ঠার বিবরণে বিশদ বিবরণে বর্ণনা করে? আমার বোঝার বিষয়টি হ'ল:

  • কোনও ঠিকানা নিবন্ধের ভার্চুয়াল ঠিকানাটি প্রথমে একটি শারীরিক ঠিকানে রূপান্তরিত করার জন্য একটি দ্রুত টিএলবিতে হস্তান্তর করা হয় - পিসিতে ঠিকানা এল 1 আইটিএলবির হাতে দেওয়া হয়, অন্য কোনও নিবন্ধের ঠিকানা এল 1 টিটিএলবিতে হস্তান্তর করা হয় ।
  • যদি প্রথম অনুসন্ধানটি মিস করে তবে ধীরতর, বৃহত্তর টিএলবি রয়েছে এমন আরও একটি স্তর রয়েছে যা চেষ্টা করা হয়েছে। (এই এল 2 টিএলবি কি আইটিএলবি এবং ডিটিএলবিতে বিভক্ত হয়েছে, বা এটি কি একীভূত টিএলবি ক্যাশে? আরও টিএলবি স্তর রয়েছে কি - এল 3? এল 4?)
  • যদি টিএলবি অনুসন্ধান সম্পূর্ণরূপে ব্যর্থ হয়, এবং x86 এবং x86-64 ভিএইচপিটি ওয়াকার অক্ষম থাকে, সিপিইউ একটি টিএলবি মিস ফল্টকে সংকেত দেয়, যা ওএস কার্নেল দ্বারা বাধা দেওয়া হয়। আমার উপলব্ধি হ'ল কার্যত সমস্ত অ x x86 সিপিইউ একই কাজ করে - হ্যান্ডেল টিএলবি সম্পূর্ণরূপে সফ্টওয়্যার থেকে মিস করে। যদি সক্ষম করা থাকে, x86 এবং x86-64 প্রসেসরের হার্ডওয়্যার-সহায়ক VHPT টেবিল ওয়াকার রয়েছে যা পরবর্তী কয়েকটি পদক্ষেপগুলি পরিচালনা করে। (X86 এবং x86-64 চিপগুলির কি এমন একটি বিট রয়েছে যা পুরোপুরি ভিএইচপিটি অক্ষম করে, বা এমন অনেকগুলি বিট রয়েছে যা কিছু ঠিকানার ব্যাপ্তির জন্য ভিএইচপিটি সক্ষম করতে পারে এবং অন্যান্য ঠিকানা ব্যাপ্তির জন্য ভিএইচপিটি অক্ষম করতে পারে? এই বিটগুলি কোথায় অবস্থিত?)
  • যদি টিএলবি অনুসন্ধান সম্পূর্ণরূপে ব্যর্থ হয় তবে আসল (সম্ভবত ব্যবহারকারী-মোড) ভার্চুয়াল ঠিকানা ভি 1 টি ভি 2 তে রূপান্তরিত হয়, পৃষ্ঠার টেবিল এন্ট্রি পিটিইর ভার্চুয়াল ঠিকানা যা ভি 1 এর জন্য শারীরিক পৃষ্ঠা নম্বর ধারণ করে।
  • ভি 2 আবার ভার্চুয়াল ঠিকানা হওয়ায়, সিপিইউ স্বাভাবিক ভার্চুয়াল-থেকে-শারীরিক ঠিকানার অনুবাদে যায়, এটি বাদ দিয়ে L1 এড়িয়ে যায় এবং ডানদিকে L2 এ যায়।
  • হার্ডওয়্যার টিএলবিতে ভার্চুয়াল অ্যাড্রেস ভি 2 সন্ধান করছে যা (ভার্চুয়ালি-ইনডেক্সড) এল 2 ক্যাশে থেকে পিটিই আনার সমান্তরালে রয়েছে।
  • কারণ ভি 2 কোনও নির্দেশিকার ঠিকানা নয়, এটি এল 1 নির্দেশের ক্যাশে যায় না; এবং ভি 2 সাধারণ ব্যবহারকারীর ডেটার ঠিকানা না হওয়ায় এটি L1 ডেটা ক্যাশে যায় না। ভি 2 প্রাথমিকভাবে এল 2 ইউনিফাইড ক্যাশে (একটি ইউনিফাইড নির্দেশিকা + ডেটা + পিটিই ক্যাশে) খাওয়ানো হয়। দেখুন "ক্যাশে অনুক্রমের উদাহরণ"
  • যদি এল 2 ক্যাশে (বা এল 3 বা অন্য কোনও ভার্চুয়াল-ইনডেক্সেড ক্যাশে) পিটিই থাকে তবে ভিএইচপিটি ক্যাশে মেমরি থেকে পিটিই নিয়ে আসে এবং টিএলবিতে ভি 1 এর জন্য পিটিই ইনস্টল করে, এবং সেই পিটিইতে প্রকৃত ঠিকানাটি অনুবাদ করতে ব্যবহৃত হয় আসল ভার্চুয়াল অ্যাড্রেস ভি 1 শারীরিক র‍্যামের ঠিকানায়, শেষ পর্যন্ত ওএস থেকে কোনও সহায়তা ছাড়াই ডেটা বা নির্দেশিকা সম্পূর্ণভাবে হার্ডওয়্যার এনে দেওয়া হয়।
  • যদি ভার্চুয়াল-ইনডেক্সযুক্ত ক্যাশের সমস্ত স্তরের ব্যর্থতা হয়, তবে এই দ্বিতীয় টিএলবি লুকোচুরি ভি 2 এর জন্য সফল হয়, তবে ভিএইচপিটি শারীরিক-সূচকযুক্ত ক্যাশে বা প্রধান মেমরি থেকে পিটিই আনে, টিএলবিতে ভি 1 এর জন্য পিটিই এবং এটিতে প্রকৃত ঠিকানা স্থাপন করে পিটিই আসল ভার্চুয়াল ঠিকানা ভি 1 এর দৈহিক র্যাম ঠিকানায় অনুবাদ করতে ব্যবহৃত হয়, শেষ পর্যন্ত ওএস থেকে কোনও সহায়তা ছাড়াই সেই ডেটা বা নির্দেশনা পুরোপুরি হার্ডওয়্যার এনে দেয়।
  • যদি এই দ্বিতীয় টিএলবি অনুসন্ধান ব্যর্থ হয়, হার্ডওয়্যার ভিএইচপিটি ওয়াকার একটি ভিএইচপিটি ট্রান্সলেশন ব্যর্থতা দেয়।
  • যখন কোনও ভিএইচপিটি ট্রান্সলেশন ফাল্ট ঘটে তখন সিপিইউ ওএসে আটকে যায়। ওএসকে কী ভুল হয়েছে তা নির্ধারণ করতে হবে এবং জিনিসগুলি ঠিক করতে হবে:
  • (ক) সম্ভবত ভি 2 যুক্ত পৃষ্ঠাটি বর্তমানে ডিস্কে সরিয়ে নেওয়া হয়েছে, সুতরাং ওএস এটি র‍্যামে পড়ে এবং ব্যর্থ নির্দেশটি পুনরায় শুরু করে, বা
  • (খ) সম্ভবত কোনও বগি প্রোগ্রামটি কিছু অবৈধ অবস্থান পড়তে বা লিখতে বা চালিত করার চেষ্টা করছে এবং ওএস প্রক্রিয়াটি বন্ধ করে দেয়, বা
  • (গ) ওএস লেখকরা বিভিন্ন ধরণের অ্যাক্সেস ফাঁদে ফেলতে এই প্রক্রিয়াটি ব্যবহার করতে বিভিন্ন ধরণের কৌশল ব্যবহার করে - ভি 1 সমেত পৃষ্ঠাটি লোড করুন যা ডিস্কে অদলবদল হতে পারে; নতুন প্রোগ্রাম ডিবাগ করতে ব্যবহৃত বিভিন্ন ফাঁদ; সিপিইউগুলিতে "ডাব্লু এক্স এক্স" অনুকরণ করতে যা এটি সরাসরি সমর্থন করে না; অনুলিপি সমর্থন করার জন্য; প্রভৃতি

টমাস ডাব্লু বারের অ্যালান এল কক্স, স্কট রিক্সনার এর পৃষ্ঠা 2 এর চিত্রটি। "অনুবাদ ক্যাচিং: এড়িয়ে যান, চলুন না (পৃষ্ঠার সারণি)" যা "এমএমইউ ক্যাশে দ্বারা সঞ্চিত প্রবেশদ্বার" এবং "এল 2 ডেটা ক্যাশে দ্বারা সঞ্চিত এন্ট্রি" এর মধ্যে একটি লাইন আঁকবে। (এটি নতুন সিপিইউগুলি ডিজাইন করার লোকদের জন্য একটি দরকারী কাগজ হতে পারে , যা "ইলেকট্রনিক্স ডিজাইনের" জন্য পুরোপুরি প্রসঙ্গযুক্ত )।

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

ইন্টেলের পৃষ্ঠা 533 এ সারণি A-10। " ইন্টেল ®৪ এবং আইএ -২২ আর্কিটেকচার সফটওয়্যার বিকাশকারীদের ম্যানুয়াল" "PAGE_WALKS.CYCLES ... পৃষ্ঠার বেশিরভাগ অংশ ক্যাশে সন্তুষ্ট কিনা বা এল 2 ক্যাশে মিসের কারণ হতে পারে।"


আমি উত্তরটি পছন্দ করি তবে আমি সম্ভবত এমন অনেকের মধ্যে একজন যা সম্ভবত উপযুক্তভাবে প্রাপ্য উক্তিটি দিতে স্বাচ্ছন্দ্য বোধ করার জন্য প্রয়োজনীয় দক্ষতা নেই। অন্যান্য বিশেষজ্ঞরা যাচাই করার সাথে সাথে আপনি ইতিমধ্যে অর্জিত প্রতিবেদনটি আমি দেব।
কর্টুক

আমি বিশ্বাস করি না এটি সঠিক। টিএলবি লুকআপ সম্পর্কে বুলেট 1 + 2 সঠিক আফ্রিএইচটি, তবে 3 নয়। X86 (বা x86-64) পৃষ্ঠার টেবিলটি সফ্টওয়্যারগুলিতে পরিচালিত হয় না (একটি ব্যতিক্রম প্রযোজ্য হবে, পরে দেখুন) তবে হার্ডওয়্যারে নয়। অর্থাৎ যখন সিপিইউ এটি নির্ধারণ করে যে এটি টিএলবি ব্যবহার করে ঠিকানার সমাধান করতে পারে না, এটি নিজে সিআর 3 রেজিস্টার দ্বারা নির্দেশিত টেবিলের শুরু পৃষ্ঠাগুলি হাঁটবে। কেবলমাত্র এই রেজোলিউশনটি যদি ব্যর্থ হয় তবে এটি সিপিইউর পৃষ্ঠা ত্রুটি হ্যান্ডলারটিকে ডেকে আনবে। ব্যতিক্রম হ'ল ভার্চুয়ালাইজেশন এক্সটেনশানগুলি যেখানে নির্দিষ্ট মোডে হাইপারভাইজারটি কোনও অতিথিতে উপস্থিত একটি পৃষ্ঠা ত্রুটি সমাধান করবে।
মর্তি

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


4

আমি একমত হতে চাই যে এটি কোনও কম্পিউটার আর্কিটেকচার স্ট্যাকেক্সচেঞ্জের সাথে সম্পর্কিত, কোনও ইলেকট্রনিক্স স্ট্যাকেক্সচেঞ্জে নয়, যেহেতু এটি এখানে রয়েছে:

@ ডেভিডকারি সঠিক।

কিছু ইতিহাস:

ইন্টেল x86 পৃষ্ঠার টেবিল ওয়াকগুলিতে P5, ওরফে পেন্টিয়াম পর্যন্ত সমস্তভাবে ক্যাশে করা হয়নি। আরও স্পষ্টভাবে, পৃষ্ঠা টেবিল ওয়াক মেমরি অ্যাক্সেসগুলি ক্যাশে করা হয়নি, ক্যাশেকে বাইপাস করে pas যেহেতু এখন পর্যন্ত বেশিরভাগ মেশিনগুলি লেখার মাধ্যমে ছিল তাই তারা ক্যাশের সাথে সামঞ্জস্যপূর্ণ মানগুলি পেয়েছিল। তবে তারা ক্যাশে স্নুপ করেনি।

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

যাইহোক, এই "পৃষ্ঠার টেবিল ওয়াক মেমরি অ্যাক্সেসগুলি ডেটা ক্যাশেগুলিতে অ্যাক্সেস করতে পারে" "থেকে পৃথক" পৃষ্ঠার টেবিল এন্ট্রিগুলি কোনও টিএলবি ট্রান্সলেশন লুকাসাইড বুফারে সংরক্ষণ করা (ক্যাশে) থাকতে পারে) "। কিছু মেশিনে টিএলবিকে "অনুবাদ ক্যাশে" বলা হয়।

আরেকটি সম্পর্কিত সমস্যা হ'ল পৃষ্ঠার টেবিলগুলির অভ্যন্তর নোডগুলি আরও টিএলবি-জাতীয় ডেটাস্ট্রাকচারগুলিতে যেমন ক্যাড করা যেতে পারে, যেমন পিডিই-ক্যাশে।

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

আমি মনে করি এটি ন্যায়সঙ্গত যে প্রতিবারই নতুন ধরণের অ-সুসংহত টিএলবি-জাতীয় ক্যাচিং যুক্ত করা হয়েছে, কিছু ওএস ভেঙে গেছে, কারণ এর অন্তর্নিহিত ধারণা ছিল যে এটি করা হচ্ছে না।


একটি নতুন কমপ। খিলান। সে প্রস্তাব মাত্র "3 মাস আগে" শুরু হয়েছিল। আমি মনে করি এর আগে এমন একটি ছিল যা এটিকে অঞ্চল 51 থেকে কখনই তৈরি করতে পারেনি (পর্যাপ্ত অনুসারী নয়?)
পল এ। ক্লেটন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.