X86-64 সিস্টেমে কেন কেবল 48 বিটের ভার্চুয়াল ঠিকানার স্থান রয়েছে?


98

একটি বইতে আমি নিম্নলিখিতটি পড়ি:

32-বিট প্রসেসরের 2 ^ 32 সম্ভাব্য ঠিকানা রয়েছে, যখন বর্তমান 64৪-বিট প্রসেসরের একটি 48-বিট ঠিকানার স্থান রয়েছে

আমার প্রত্যাশাটি ছিল যে এটি যদি একটি 64-বিট প্রসেসর হয় তবে ঠিকানার স্থানটিও 2 ^ 64 হওয়া উচিত।

তাই আমি ভাবছিলাম এই সীমাবদ্ধতার কারণ কী?


12
বইটি অবশ্যই AMD64 আর্কিটেকচারের (x86-64) বর্তমান বাস্তবায়ন সম্পর্কে বিশেষভাবে কথা বলছিল। কেবল নিম্ন-অর্ডার 48 বিট ব্যবহৃত হয়। এটি কোনও হার্ডওয়্যার সীমাবদ্ধতা নয়, যদিও - সমস্ত 64 বিট উপলব্ধ।
কোডি গ্রে

8
বইটি সনাক্ত করার জন্য সর্বদা একটি ভাল ধারণা।
হেন্ক হলটারম্যান

4
আমি অনুমান করছি যে শারীরিক ঠিকানা লাইনগুলি নিখরচায় নয় (আপনার কমপক্ষে 16 টি অতিরিক্ত সিপিইউ পিন লাগবে)। এবং আমি এমন কোনও হার্ডওয়্যার সম্পর্কে অবগত নই যা একই প্রসেসরের শারীরিক র‌্যাম চিপস সহ 48 বিট স্থান পূরণ করতে পারে। এটি সম্ভবপর হয়ে উঠলে আমি নিশ্চিত যে এএমডি অনুপস্থিত ১ 16 টি পিন যুক্ত করবে :)
টর্প

7
এমনকি, The 32-bit processors have 2^32 possible addressesঅগত্যা সত্য নয়, স্মৃতি সম্বোধনের জন্য কেবল 24 "পিন" সহ 32 বিট সিপিইউ থাকতে পারে। উদাহরণস্বরূপ 68EC020 (সস্তার 68020 সংস্করণ) একটি 32 বিট সিপিইউ তবে স্মৃতি সম্বোধনের জন্য 24 বিট রয়েছে।
শিনটাকেজৌ

21
-৪-বিট শারীরিক ঠিকানার সাথে একটি আসল সমস্যা রয়েছে, ভার্চুয়াল মেমরি পৃষ্ঠার আকার খুব ছোট। যা বিশাল পৃষ্ঠাগুলি তৈরি করে এবং অত্যন্ত ব্যয়বহুল টিএলবি ক্যাশে প্রতিটি প্রসঙ্গের স্যুইচে ফ্লাশ করে। 4KB থেকে 4MB পৃষ্ঠাগুলিতে সরানো একটি বিকল্প তবে বর্তমান অপারেটিং সিস্টেমগুলির সাথে খুব বেমানান।
হ্যান্স প্যাস্যান্ট

উত্তর:


136

কারণ এটাই দরকার। 48 বিট আপনাকে 256 টেরাবাইটের ঠিকানা স্থান দেয়। এটাই অনেক. আপনি এমন কোনও সিস্টেম দেখতে যাচ্ছেন না যে শীঘ্রই এর চেয়ে বেশি সময়ের প্রয়োজন।

সুতরাং সিপিইউ নির্মাতারা একটি শর্টকাট নিয়েছিল। তারা একটি নির্দেশিকা সেট ব্যবহার করে যা একটি পূর্ণ 64৪-বিট ঠিকানা স্থানের অনুমতি দেয়, তবে বর্তমানের সিপিইউগুলি কেবল নীচের 48 বিট ব্যবহার করে। বিকল্পটি হ'ল ট্রানজিস্টরকে একটি বৃহত্তর ঠিকানা স্থান পরিচালনা করার জন্য নষ্ট করা যা বহু বছর ধরে প্রয়োজন হয়নি।

সুতরাং একবার আমরা 48-বিটের সীমাতে পৌঁছানোর পরে, এটি কেবলমাত্র সিপিইউগুলি প্রকাশের বিষয় যা পুরো ঠিকানার স্থান হ্যান্ডেল করে, তবে এটির নির্দেশাবলীতে কোনও পরিবর্তন প্রয়োজন হবে না এবং এটি সামঞ্জস্যতা ভঙ্গ করবে না।


121
640kb যে কারও জন্য যথেষ্ট।

7
আপনি এখনও একটি 8088 সিস্টেম চালাচ্ছেন, বিডারেস?
জো

25
@ বিদারেস: খারাপ সাদৃশ্য। 8088/8086 খিলানের নির্দেশের সেটটিতে এর মধ্যে অন্তর্নির্মিত 640k সীমা রয়েছে। কেবলমাত্র একটি নতুন আইএসএ তৈরি করা (386) বাধাটি ভেঙে দেওয়া সম্ভব হয়েছিল। অন্যদিকে x86_64 আইএসএতে সমস্ত 64 বিট সমর্থন করে। এটি কেবলমাত্র বর্তমান প্রজন্মের হার্ডওয়্যার যা তাদের সকলের ব্যবহার করতে পারে না ...
আর .. গিটিহাব থামিয়ে দিচ্ছে সহায়তা আইসিসি

16
@ আর। আসলে, সিপিইউতে সীমাবদ্ধতা ছিল এক মেগাবাইট। আইবিএম পিসি মেমরিযুক্ত ম্যাপযুক্ত পেরিফেরিয়াল, বিআইওএস ইত্যাদির জন্য এর একটি অংশকে মনোনীত করে অন্য কিছু ৮৮৮৮/৮৮86 designs ডিজাইন (জেনিথ জেড 100, যদি মেমরি পরিবেশন করে) পেরিফেরিয়াল এবং এর জন্য কম মনোনীত হয় এবং অ্যাপ্লিকেশন প্রোগ্রামের জন্য তুলনামূলকভাবে আরও বেশি।
জেরি কফিন

25
lwn.net/SubscriberLink/655437/9a48cd3e7a8cbe8a <- এই উত্তরের তিন বছর পরেও আমরা ইতিমধ্যে এই সীমাবদ্ধতাগুলি হারাচ্ছি :) এইচপি মেশিনটির 320TB মেমরি থাকবে এবং 48 এর কারণে তারা এটি ফ্ল্যাট ঠিকানার স্থান হিসাবে সরবরাহ করতে পারে না - সম্বোধনের সীমাবদ্ধতা অনুসারে।
আগাম

18

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

আমি মনে করি আসল উত্তরটি হ'ল এএমডি কেবল সস্তা হচ্ছিল এবং আশা করি এখন কেউই যত্ন নেবে না, তবে উদ্ধৃত করার কোনও উল্লেখ আমার কাছে নেই।


15
"সস্তা হচ্ছে" আমার ধারণা আপনি বোঝাতে চাইছেন যে পিনগুলি কখনও ব্যবহার করা হবে না, ট্রানজিস্টরগুলির জন্য চিপ স্পেস গ্রহণ করবেন না যা ব্যবহার করা হবে না এবং বিদ্যমান নির্দেশাবলী দ্রুত করার জন্য খালি জায়গা ব্যবহার করবেন? যদি এটি সস্তা হচ্ছে, আমি ভিতরে আছি!
অলিফ ফোর্শেল

80386 প্রতিটি 4GB মেমরি (32TB মোট) সহ প্রতিটি 2 * 4096 জন নির্বাচককে অনুমতি দেয়। 80286 প্রতিটি 64KB (1GB) পর্যন্ত প্রতিটি 2 * 4096 জন নির্বাচককে অনুমতি দিয়েছে।
অলিফ ফোর্শেল

অ-লিনিয়ার বিভাগযুক্ত হ্যাকগুলি আমার বইয়ের ঠিকানা স্থান হিসাবে গণনা করে না। পোর্টেবল সফ্টওয়্যারগুলির কোনও ব্যবহার করার উপায় নেই।
আর .. গীটহাব বন্ধ করুন ICE

@ আর .. - আমি ভেবেছিলাম পোর্টেবল সফ্টওয়্যারটির সংজ্ঞাটি এটি পারে । :-) উদাহরণস্বরূপ, সি ++ পয়েন্টারগুলিকে বিভিন্ন অ্যারেতে তুলনা করতে নিষেধ করে যাতে তারা পৃথক 4 জিবি বিভাগে থাকতে পারে।
বো পারসন

যদি আপনার সংকলন প্রকৃতপক্ষে বিশাল পয়েন্টার উত্পন্ন করে এবং প্রতিটি মেমরি ডিরিফারেন্সের জন্য একটি সেগমেন্ট রেজিস্টার লোড করে তবে হ্যাঁ। তবে বাস্তবে এটি মারাত্মক ধীর এবং এর পরিবর্তে সবাই ছোট মেমোরি মডেল এবং __far(বা আরও খারাপ, FAR/ far!) পয়েন্টার ব্যবহার করেছে ...
আর .. গিটিহাব থামিয়ে দিচ্ছে সহায়তা আইসিসি

10

উইকিপিডিয়া নিবন্ধের সীমাবদ্ধতা বিভাগ পড়ুন :

একটি পিসিতে 4 টি পেটবাইট মেমরি থাকতে পারে না (বর্তমান মেমরি চিপগুলির আকারের কারণে আর কিছুই না) তবে এএমডি বড় সার্ভারগুলি, ভাগ করা মেমরি ক্লাস্টারগুলি এবং শারীরিক ঠিকানার স্থানের অন্যান্য ব্যবহারগুলি কল্পনা করেছিল যা এটি ভবিষ্যতে প্রত্যাশা করতে পারে এবং 52 বিট শারীরিক ঠিকানা প্রসারণের জন্য পর্যাপ্ত জায়গা সরবরাহ করে যখন -৪-বিট শারীরিক ঠিকানাগুলি প্রয়োগের জন্য ব্যয় হয় না

এটি এই মুহুর্তে পূর্ণ bit৪ বিট সম্বোধনের বাস্তবায়ন করার কোনও কারণ নেই, কারণ আমরা এমন একটি সিস্টেম তৈরি করতে পারি না যা এই জাতীয় ঠিকানা স্থান পুরোপুরি ব্যবহার করতে পারে - তাই আমরা আজকের (এবং আগামীকাল) সিস্টেমগুলির জন্য ব্যবহারিক এমন কিছু বাছাই করি।


4 পেটাবাইটে 4 কোথায় আসে? যদি আমরা address৪ ঠিকানা লাইন কথা বলি তবে আমাদের কাছে 32 গিগাবাইটের 32 টি অ্যাড্রেস লাইনের মাধ্যমে সম্ভব হওয়া ঠিকানা জায়গার বর্গক্ষেত্রটি শেষ করা উচিত। স্কোয়ারটি এবং আমাদের 16 টি হওয়া উচিত, 4 পেটাবাইট নয়। আমি কিছু অনুপস্থিত করছি?
অলিফ ফোর্শেল

4
এটি বর্তমান শারীরিক সীমা (৫২ বিট) থেকে আসে - পয়েন্টটি হ'ল আমরা একটি পিসিতে এই সীমাবদ্ধ পরিসীমাটিকে সমর্থন করার জন্য পর্যাপ্ত র্যাম রাখতে পারি না, তবে 64৪-বিট অ্যাড্রেস স্পেসের জন্য প্রয়োজনীয় কি দরকার তা ছেড়ে দিন।
ড্যামিয়েন_এ_বিশ্বাসীরা

9

অভ্যন্তরীণ নেটিভ রেজিস্টার / অপারেশন প্রস্থের বাইরের ঠিকানা বাসের প্রস্থে প্রতিবিম্বিত হওয়ার দরকার নেই ।

বলুন আপনার কাছে একটি 64 বিট প্রসেসর রয়েছে যা কেবলমাত্র 1 মেগাবাইট র‍্যাম অ্যাক্সেস করতে পারে। একটি 20 বিট অ্যাড্রেস বাস যা যা প্রয়োজন তা হল। আপনি যে অতিরিক্ত অতিরিক্ত পিন ব্যবহার করবেন না তার জন্য কেন দাম এবং হার্ডওয়্যার জটিলতায় বিরক্ত হন?

মোটোরোলা 68000 এর মত ছিল; অভ্যন্তরীণভাবে 32 বিট, তবে একটি 23 বিট ঠিকানা বাস (এবং একটি 16 বিট ডেটা বাস) দিয়ে। সিপিইউ 16 মেগাবাইট র‍্যাম অ্যাক্সেস করতে পারে এবং নেটিভ ডেটা টাইপ লোড করতে (32 বিট) দুটি মেমরি অ্যাক্সেস নিয়েছে (প্রতিটি 16 বিট ডেটা বহন করে)।


4
তবে 68000 কে "16/32 বিট" সিপিইউ হিসাবে বিবেচনা করা হয়, "পূর্ণ" নয় 32 বিট সিপিইউ যাতে কেউ বলতে পারে যে এটি 16 পাটের অতীতে এখনও একটি পা আছে; আমি উদাহরণ হিসাবে 68020 বাছাই করেছি, যেহেতু এর স্বল্পমূল্যের 68EC020 সংস্করণটিতে কেবল ঠিকানাগুলির জন্য 24 বিট রয়েছে, যদিও 68020 একটি "পূর্ণ" 32 বিট সিপিইউ ... +1 এই বিস্ময়কর প্রসেসরের পরিবার হিসাবে বিবেচনা করেছে!
শিনটাকেজৌ

@ শিনটেকজৌ: সত্যি কথা বলতে কি 80386SX একটি 16-বিট সিপিইউ ছিল (কারণ এটির অ্যাড্রেস স্পেস ছিল 80286) বা এটি 32-বিট ছিল (কারণ এটির একটি অভ্যন্তরীণ আর্কিটেকচার ছিল 80386DX)? আপনি যেমন করছিলেন তেমন একটি বলতে পারে তবে অন্যটি (এটি একটি) "অভ্যন্তরীণ যা গণনা করা হয়" বলে মন্তব্য করে - এবং আপনি আমাকে সে সম্পর্কে উদ্ধৃতি দিতে পারেন।
অলিফ ফোর্শেল

@ এখনও আমি মনে করি যে "মেমরি" (যা বাহ্যিক বিশ্বের) প্রসঙ্গে, বাহ্যিক যা গণনা করে, তাই 68000 একটি 16 বিট সিপিইউ (32 বিট ডেটা পড়ার জন্য 2 "পদক্ষেপ" প্রয়োজন): ডি
শিনটেকজৌ

@ শিনটেকজৌ: মেমোরি প্রসঙ্গে, এমনকি ক্যাশেগুলিও সর্বদা সিপিইউর বাহ্যিক, যদিও তারা আধুনিক প্রসেসরের সাথে অত্যন্ত দৃly়ভাবে জুড়েছে। 8088 অভ্যন্তরীণভাবে 8086 এর সমান ছিল যদিও এর আটটি ডাটা বাস লাইন 8086 এর ষোলতে ছিল। আপনি আপাতদৃষ্টিতে যা দেখতে পেয়েছেন তা আমি স্পষ্ট দেখতে পাচ্ছি না, 80৮8 কে Z80, 8080, 8085 হিসাবে একই গ্রুপে শ্রেণিবদ্ধ করা উচিত the ডেটা বাসের প্রস্থের প্রশ্নটি সেই প্রসঙ্গে তুচ্ছ মনে হয়
অলিফ ফোর্শেল

আমি মোটেই এ জাতীয় বিষয়ে বিশেষজ্ঞ নই, তাই আমার কাছে আমার কাছে স্পষ্ট কিছু নেই the আমি কেবল অতীতের সাথে আরও তীক্ষ্ণ কাটার প্রয়োজনটি লক্ষ্য করতে চেয়েছিলাম, যেখানে কেউ মনে করতে পারে 68000 এখনও একটি "পুরানো সময়" প্রসেসর, তাই এটি "প্রাকৃতিক" বলে মনে হতে পারে যে এর ঠিকানার স্থানটি 32 বিটেরও কম সীমাবদ্ধ; যখন 68020 32 বিট করতে পারে, যাতে তার সীমা সহ 68EC020 এর অস্তিত্ব স্পষ্ট করে দেয় যে এটি "এর সীমাবদ্ধতার কারণে নয়" পছন্দ ( বা এই সময় "তবে অন্যান্য বিবেচনার জন্য (64৪ পিনের কোনও সত্যিকারের সুবিধা না থাকলে এটি সস্তা করে দেওয়া পছন্দ করুন), যা কম-বেশি এই উত্তরের যুক্তি।
শিনটেকজৌ

8

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


4
ইন্টেল বর্তমান 48 বিট থেকে 57 বিট পর্যন্ত বাড়ানোর জন্য একটি 5-স্তরের পেজিং স্কিমের প্রস্তাব দিচ্ছে । (বর্তমান x86-64 পৃষ্ঠা সারণী হিসাবে স্তর / 4k পৃষ্ঠাগুলিতে একই 9 বিট) প্রতি স্তরে 10 বা 11 বিট ব্যবহারের জন্য পৃষ্ঠা-ওয়াকের হার্ডওয়্যারটি পরিবর্তন করতে হবে, সুতরাং এটি বিশাল মেমরির জন্য অনুকূল নকশা নাও হতে পারে, তবে এটি ডুয়াল-মোড সিপিইউর জন্য বুদ্ধিমান এক্সটেনশান যা 4- এর জন্য সর্বাধিক কার্যকারিতা সমর্থন করারও প্রয়োজন বর্তমান বিন্যাসে স্তর সারণী।
পিটার

অবশ্যই, 2 এম বা 1 জি বিশালপৃষ্ঠাগুলির সাথে এটি পৃষ্ঠার সারণীর মাত্র 4 বা 3 স্তর রয়েছে যা পৃষ্ঠার ডিরেক্টরি পয়েন্টারের পরিবর্তে একটি বিশাল পৃষ্ঠার টেবিল এন্ট্রিতে রয়েছে।
পিটার

6

আমার দৃষ্টিকোণ থেকে, এটি পৃষ্ঠার আকার থেকে ফলাফল E প্রতিটি পৃষ্ঠায় পৃষ্ঠা সারণির 4096/8 = 512 এন্ট্রি রয়েছে। এবং 2 ^ 9 = 512। সুতরাং 9 * 4 + 12 = 48।


4

মূল প্রশ্নের উত্তর দিতে: পিএর 48 টির বেশি বিট যুক্ত করার দরকার ছিল না।

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

1) বৃহত্তম (সাধারণভাবে ব্যবহৃত) সার্ভার কনফিগারেশনটি একটি 8 সকেট সিস্টেম। একটি 8 এস সিস্টেমটি 8 টি সার্ভার সিপিইউর সাথে একক নোড গঠনের জন্য একটি উচ্চ গতির সুসংগত আন্তঃসংযোগ (বা কেবলমাত্র একটি উচ্চ গতির "বাস") দ্বারা সংযুক্ত but এখানে আরও বড় ক্লাস্টার রয়েছে তবে সেগুলি খুব কম এবং এর মধ্যে খুব কম, আমরা এখানে সাধারণত ব্যবহৃত কনফিগারেশনের কথা বলছি। মনে রাখবেন যে বাস্তব বিশ্বের ব্যবহারের ক্ষেত্রে, 2 সকেট সিস্টেম সর্বাধিক ব্যবহৃত সার্ভারগুলির মধ্যে একটি এবং 8 এস সাধারণত খুব উচ্চতম হিসাবে বিবেচিত হয়।

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

3) ধরে নিন প্রতিটি সার্ভার সিপিইউ প্রতিটি স্লটে 16 ডিডিআর 4 ডিআইএমএম রাখতে পারে। 256 জিবি সর্বাধিক আকারের ডিডিআর 4 ডিআইএমএম সহ। (সার্ভারের সংস্করণ অনুসারে, সকেট প্রতি এই সম্ভাব্য ডিআইএমএমের সংখ্যা আসলে 16 ডিআইএমএম এর চেয়ে কম তবে উদাহরণের স্বার্থে পড়া চালিয়ে যাওয়া)।

সুতরাং প্রতিটি সকেটে তাত্ত্বিকভাবে 16 * 256GB = 4096GB = 4 টিবি থাকতে পারে। আমাদের উদাহরণ 8 এস সিস্টেমের জন্য, ডিআরএএম আকারটি সর্বোচ্চ 4 * 8 = 32 টিবি হতে পারে। এর অর্থ হ'ল এই ডিআরএএম স্পেসটি সম্বোধন করতে প্রয়োজনীয় বিটগুলির সর্বাধিক সংখ্যা 45 (= লগ 2 32 টিবি / লগ 2)।

আমরা অন্য ধরণের মেমরির বিশদ (এমএমআইও, এমএমসিএফজি ইত্যাদি) এ যাব না, তবে এখানে মূল বক্তব্যটি হ'ল 8 টি সকেট সিস্টেমের জন্য সর্বাধিক "ডিমান্ডিং" ধরণের মেমরি আজ সবচেয়ে বড় ধরণের ডিডিআর 4 ডিআইএমএম উপলব্ধ (256 গিগাবাইট) ডিআইএমএম) কেবল 45 বিট ব্যবহার করে।

একটি ওএসের জন্য যা 48 বিট সমর্থন করে (উদাহরণস্বরূপ ডাব্লুএস 16), সেখানে (48-45 =) 3 টি বিট রয়েছে। যার অর্থ হ'ল আমরা যদি নিচের 45 বিটগুলি কেবলমাত্র ডিআরএএম এর 32TB এর জন্য ব্যবহার করি তবে আমাদের কাছে এখনও ঠিকানাযোগ্য মেমরির 2 ^ 3 বার রয়েছে যা মোট 256 টিবি ঠিকানার মতো জায়গার জন্য এমএমআইও / এমএমসিএফজির জন্য ব্যবহার করা যেতে পারে।

সুতরাং, সংক্ষেপে বলতে পারি: 1) শারীরিক ঠিকানার 48 বিটগুলি প্রচুর পরিমাণে ডিডিআর 4 সহ "সম্পূর্ণরূপে লোড করা" এবং এমএমআইও স্পেসের চাহিদা রয়েছে এমন প্রচুর অন্যান্য আইও ডিভাইসকে সমর্থন করার জন্য প্রচুর পরিমাণে বিট রয়েছে। নির্ভুল হতে 256TB।

মনে রাখবেন যে এই 256TB ঠিকানার স্থান (= 48 বাইটস অব ফিজিক্যাল ঠিকানায়) কোনও SATA ড্রাইভের মতো কোনও ডিস্ক ড্রাইভকে অন্তর্ভুক্ত করে না কারণ তারা ঠিকানা মানচিত্রের অংশ নয়, এগুলিতে কেবল বাইট-অ্যাড্রেসযোগ্য মেমরিটি অন্তর্ভুক্ত থাকে এবং এটি ওএসের সাথে প্রকাশিত হয়।

2) সিপিইউ হার্ডওয়্যার সার্ভারের প্রজন্মের উপর নির্ভর করে 46, 48 বা> 48 বিট প্রয়োগ করতে পছন্দ করতে পারে। তবে আরেকটি গুরুত্বপূর্ণ বিষয় হ'ল ওএস কতগুলি বিট সনাক্ত করে। আজ, ডাব্লুএস 16 48 বিট শারীরিক ঠিকানাগুলি (= 256 টিবি) সমর্থন করে।

ব্যবহারকারীর কাছে এর অর্থ কী, যদিও কারও কাছে একটি বৃহত, অতি আধুনিক সার্ভার সিপিইউ রয়েছে যা> 48 বিট সম্বোধনকে সমর্থন করতে পারে, আপনি যদি এমন একটি ওএস চালান যা কেবল পিএর 48 বিট সমর্থন করে তবে আপনি কেবল 256 টিবি সুবিধা নিতে পারবেন ।

3) সব মিলিয়ে বেশি সংখ্যক অ্যাড্রেস বিটের (= আরও মেমরির ক্ষমতা) সুবিধা গ্রহণের জন্য দুটি প্রধান কারণ রয়েছে।

ক) আপনার সিপিইউ এইচডাব্লু কত বিট সমর্থন করে? (এটি ইন্টেল সিপিইউগুলিতে সিপিইউডির নির্দেশ দ্বারা নির্ধারণ করা যেতে পারে)।

খ) আপনি কোন ওএস সংস্করণটি চালাচ্ছেন এবং পিএর কত বিট এটি স্বীকৃতি / সমর্থন করে?

(ক, খ) এর মিনিটটি শেষ পর্যন্ত আপনার সিস্টেমের ঠিকানার মতো জায়গাগুলির পরিমাণ নির্ধারণ করবে।

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

ধন্যবাদ, আনন্দ কে এনামেন্দ্রম, সার্ভার প্ল্যাটফর্ম আর্কিটেক্ট ইন্টেল কর্পোরেশন


এই প্রশ্নটি সম্পর্কে 48-বিট ভার্চুয়াল ঠিকানা স্থানের আকার জিজ্ঞাসা করছে (ভার্চুয়াল ঠিকানাগুলি ক্যানোনিকাল হওয়া প্রয়োজন)। আপনি শারীরিক বিটের চেয়ে আরও ভার্চুয়াল বিট চান না, তাই একটি উচ্চ-অর্ধ কার্নেল সমস্ত শারীরিক মেমরির একক ঠিকানা জায়গাতে মানচিত্র করতে পারে (এটি নিজস্ব বা ব্যবহারকারী-স্থান)। আপনি যেমনটি বলেছেন, এইচডব্লিউটিকে কেবল ডিআরএএম নিয়ন্ত্রণকারীরা + এমএমআইও যতটা পিএ বিট ব্যবহার করতে পারে তা প্রয়োগ করতে হবে এবং x86-64 পৃষ্ঠা-সারণী বিন্যাসে 52-বিট সীমা অবধি যে কোনও সংখ্যা ব্যবহার করতে পারবেন। ( 64bit কেন ভার্চুয়াল অ্যাড্রেস 4 বিট সংক্ষিপ্ত (48bit দীর্ঘ) শারীরিক ঠিকানা (52 বিট দীর্ঘ সঙ্গে তুলনা)? )
পিটার Cordes

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

2

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

একটি প্রসেসর বলতে 32 বিট বা 64 বিট বোঝায় না এটিতে যথাক্রমে 32 বিট অ্যাড্রেস বাস বা 64 বিট অ্যাড্রেস বাস থাকা উচিত! ... আমি এটিকে পুনরাবৃত্তি করি না !!

৩২ বিট প্রসেসরের অর্থ এটিতে ৩২ বিট এএলইউ (অ্যারিথমেটিক এবং লজিক ইউনিট) রয়েছে ... এর অর্থ এটি ৩২ বিট বাইনারি অপারেন্ডে চালিত করতে পারে (বা কেবল বাইনারি সংখ্যায় ৩২ সংখ্যা রয়েছে) এবং একইভাবে bit৪ বিট প্রসেসর 64৪ বিট বাইনারিতে কাজ করতে পারে অপারেন্ড সুতরাং একটি প্রসেসরের আবহাওয়া 32 বিট বা bit৪ বিট সর্বাধিক পরিমাণ মেমরি ইনস্টল করা যায় না তা বোঝায় না। তারা কেবল দেখায় যে অপারেন্ডটি কত বড় হতে পারে ... (উপমা অনুসারে আপনি 10-সংখ্যার ক্যালকুলেটরটি 10 ​​অঙ্ক পর্যন্ত ফলাফল গণনা করতে পারেন ... এটি আমাদের 11 সংখ্যা বা অন্য কোনও বড় ফলাফল দিতে পারে না ... যদিও এটি দশমিক ক্ষেত্রে তবে আমি সরলতার জন্য এই সাদৃশ্যটি বলছি) ... তবে আপনি যা বলছেন তা হল ঠিকানা স্পেস যা মেমরির সর্বোচ্চ (সরাসরি) ইন্টারফেসযোগ্য আকার (র‌্যাম)। র‌্যাম ' এর সর্বোচ্চ সম্ভাব্য আকার ঠিকানা বাসের আকার দ্বারা নির্ধারিত হয় এবং এটি ডেটা বাস বা এমনকি ALU এর আকার নয় যা প্রসেসরের আকার নির্ধারিত হয় (32/64 বিট)। হ্যাঁ যদি কোনও প্রসেসরের 32 বিট "অ্যাড্রেস বাস" থাকে তবে এটি 2 ^ 32 বাইট = 4 গিগাবাইট র্যামকে সম্বোধন করতে সক্ষম হয় (বা 64৪ বিটের জন্য এটি 2 ^ 64 হবে) ... তবে প্রসেসরটি 32 বিট বা bit৪ বিট বলে এই ঠিকানার জায়গার সাথে প্রাসঙ্গিকতার কোনও কিছুই নেই (ঠিকানা স্পেস = এটি মেমরির বা র‌্যামের সর্বোচ্চ আকারে কতদূর অ্যাক্সেস করতে পারে) এবং এটি কেবল এটির ALU আকারের উপর নির্ভরশীল। অবশ্যই ডেটা বাস এবং ঠিকানা বাস একই আকারের হতে পারে এবং তারপরে মনে হতে পারে 32 বিট প্রসেসর মানে এটি 2 ^ 32 বাইট বা 4 জিবি মেমরির অ্যাক্সেস করবে ... তবে এটি কেবল একটি কাকতালীয় ঘটনা এবং এটি একই হবে না সবার জন্য.... উদাহরণস্বরূপ, ইন্টেল 8086 একটি 16 বিট প্রসেসর (এটিতে 16 বিট এএলইউ রয়েছে) এটি আপনার মতে 2 ^ 16 বাইট = 64 কেবি মেমরির অ্যাক্সেস করা উচিত ছিল তবে এটি সত্য নয়। 20 বিট অ্যাড্রেস বাস থাকার জন্য এটি 1 এমবি মেমরির অ্যাক্সেস করতে পারে .... আপনার যদি সন্দেহ থাকে তবে আপনি গুগল করতে পারেন :)

আমি মনে করি আমি আমার বক্তব্য পরিষ্কার করে দিয়েছি।এখন আপনার প্রশ্নে আসছেন ... 64৪ বিট প্রসেসরের হিসাবে এর অর্থ এই নয় যে এটিতে bit৪ বিট অ্যাড্রেস বাস থাকতে হবে সুতরাং একটি bit৪ বিট প্রসেসরে ৪৮ বিট অ্যাড্রেস বাস থাকার ভুল নেই is ... তারা নকশাগুলি এবং মনগড়া সস্তার তুলনায় ঠিকানার জায়গাকে ছোট রাখে .... যেহেতু কেউ এত বড় মেমোরি (2 ^ 64 বাইট) ব্যবহার করবে না ... যেখানে আজকাল 2 ^ 48 বাইট যথেষ্ট পরিমাণে বেশি।


আমি মনে করি আপনি আপনার বক্তব্যটি খুব স্পষ্ট করে দিয়েছেন, একটি জিনিস আমি বুঝতে পারি না যদিও আপনি 16 বিট 8086 সিপিইউ সম্পর্কে যা বলেছেন তাতে: 16 বিটস সিপিইউ কীভাবে 20 বিটের ঠিকানা পরিচালনা করতে পারে? এটি কি 2 টি পদক্ষেপের অপারেশনের মাধ্যমে পরিচালনা করে? এমনকি যদি অ্যাড্রেস বাসটি 20 বিট প্রস্থের হয়, একবার এটি সিপিইউতে পৌঁছায়, নিবন্ধের প্রস্থটি অবশ্যই 16 বিট নিতে পারে ... তারা কীভাবে এটি করবে?
প্রোগ্রামারসন

4
হুম ... 2 টি পদক্ষেপের অপারেশন। বিভাগ রেজিস্টারে কেবল উপরের 16 বিট থাকে। তারপরে এটি 20 বিট তৈরি করতে 10H দ্বারা গুণিত হয় এবং তারপরে অফসেট যুক্ত হয়।
hafiz031

1

এটি সত্য নয় যে কমপক্ষে l৪ বিট ভিএর কেবলমাত্র নিম্ন-অর্ডার 48 বিট ব্যবহার করা হয়, কমপক্ষে ইনটেল 64 এর সাথে The উপরের 16 বিটগুলি ব্যবহার করা হয়, সাজানো, ধরণের।

বিভাগ ৩.৩..7.১ ইন্টেল ®৪ এবং আইএ -32 আর্কিটেকচার সফটওয়্যার বিকাশকারীদের ম্যানুয়ালটিতে ক্যানোনিকাল অ্যাড্রেসিং বলেছেন:

ক্যানোনিকাল ঠিকানায় জিরো বা সেগুলিতে set 63 থেকে 48 সেট বিট থাকতে হবে (বিট 47 শূন্য বা একের উপর নির্ভর করে)

সুতরাং বিটগুলি 47 থেকে 63 এর মধ্যে একটি সুপার-বিট গঠন করে, সমস্ত 1 বা সমস্ত 0 হয় an

AArch64 এ, এটি আলাদা। মতে ARMv8 নির্দেশনাবলী অবলোকন , এটি একটি 49-বিট ভিএ আছে।

AArch64 মেমরি অনুবাদ সিস্টেম একটি 49-বিট ভার্চুয়াল ঠিকানা সমর্থন করে (অনুবাদ টেবিল প্রতি 48 বিট)। ভার্চুয়াল ঠিকানাগুলি 49 বিট থেকে সাইন-প্রসারিত এবং 64-বিট পয়েন্টারের মধ্যে সঞ্চিত থাকে। Allyচ্ছিকভাবে, কোনও সিস্টেম নিবন্ধকের নিয়ন্ত্রণে, significant৪-বিট পয়েন্টারের সর্বাধিক উল্লেখযোগ্য 8 বিট একটি "ট্যাগ" ধারণ করতে পারে যা লোড / স্টোর ঠিকানা বা অপ্রত্যক্ষ শাখার লক্ষ্য হিসাবে ব্যবহৃত হলে তা উপেক্ষা করা হবে


4
কেবল নীচের ৪৮ টি উল্লেখযোগ্য, তবে হার্ডওয়্যারটি এটি সঠিকভাবে সাইন-প্রসারণ করে 64৪ বিটে প্রসারিত করেছে। আইডিকে কেন তারা শূন্য-এক্সটেনশান নির্দিষ্ট করে না; সম্ভবত তারা উচ্চ বনাম কম অর্ধের ঠিকানা (কেবল সাইন বিটটি পরীক্ষা করে) পরীক্ষা করার জন্য এটি আরও সুবিধাজনক করে তুলতে চেয়েছিল। অথবা সম্ভবত 2 ^ 48 সীমানা বিশেষ না করা এড়াতে এবং তাই শীর্ষের কাছাকাছি ঠিকানাগুলি 32-বিট সাইন-বর্ধিত স্থানে সহজেই ফিট করতে পারে। আমার মনে হয় পরবর্তীকালের সম্ভাবনা বেশি।
পিটার কর্ডেস

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

আমার কোর আই 5 এর লিনাক্সে প্রোফস বলেছেন যে এটি 7ffd5ea41000-7ffd5ea62000 এ ম্যাপ করা হয়েছে। উপরের 'ক্যানোনিকাল' বিধি অনুসারে এই ঠিকানা সীমাটি বোধগম্য। বিট 48-63 এটিকে একটি সঠিক আধ্যাত্মিক ঠিকানা করে। লিনাক্স উত্সের কয়েকটি ঠিকানা হ'ল কিছুটা আশ্চর্যজনক। অন্তর্ভুক্ত / asm / pgtable_64_type এ এটি # ডিফাইন __VMALLOC_BASE _AC (0xff92000000000000, ইউএল) বলে। এটি কোনও আধ্যাত্মিক ঠিকানা নয়। এই জাতীয় ঠিকানা 0xffff8 দিয়ে শুরু হবে। ডুনো কেন।
ওলসনিস্ট

হ্যাঁ, আইআইআরসি লিনাক্স ব্যবহারকারী-স্পেসের জন্য ক্যানোনিকাল রেঞ্জের নীচের অর্ধেকটি ব্যবহার করে এবং (বেশিরভাগ ক্ষেত্রে) কেবল কার্নেল-কেবল ম্যাপিংয়ের জন্য উচ্চ অর্ধেক ব্যবহার করে। তবে কিছু কার্নেল মেমরি [vsyscall]পৃষ্ঠার মতো ব্যবহারকারী-স্পেসে রফতানি করা হয় । (এটি বর্তমান পিআইডি এর মতো জিনিসগুলি রফতানি করতে পারে যাতে এটি নিখুঁতভাবে ব্যবহারকারী-স্থান হয় Also getpid()এছাড়াও gettimeofday()কেবল কার্নেল দ্বারা রফতানি হওয়া ইউজার-স্পেস + স্কেল ফ্যাক্টরগুলিতে rdtsc ব্যবহার করতে পারেন Although যদিও এর মধ্যে কিছু আমি মনে করি [vdso]যা শীর্ষে আছে নীচের অর্ধেক।)
পিটার

আইডি কে কী __VMALLOC_BASEকরে। সম্ভবত এটি সরাসরি ব্যবহার করা হয় না।
পিটার কর্ডস

0

একটি সিপিইউকে মূলত এটির ডেটা-বাসের আকারের উপর ভিত্তি করে "এন-বিটস" হিসাবে বিবেচনা করা হয় এবং এর সত্তার বড় অংশের উপর (অভ্যন্তরীণ আর্কিটেকচার) : রেজিস্টারস, অ্যাকিউমুলেটরস, অ্যারিমেটিক-লজিক-ইউনিট (এএলইউ), নির্দেশিকা সেট ইত্যাদি: উদাহরণস্বরূপ: ভাল পুরানো মোটোরোলা 6800 (বা ইন্টেল 8050) সিপিইউ একটি 8-বিটস সিপিইউ। এটিতে একটি 8-বিট ডেটা-বাস, 8-বিটস অভ্যন্তরীণ আর্কিটেকচার এবং একটি 16-বিট ঠিকানা-বাস রয়েছে।


  • যদিও এন-বিটস সিপিইউতে এন-সাইজ সত্তা ব্যতীত অন্য কিছু থাকতে পারে। উদাহরণস্বরূপ 80৮০৯ এর উপরে 80৮০৯-এর ইমপ্রুভগুলি (উভয়ই 8-বিট ডেটা-বাসের সাথে 8-বিট সিপিইউ)) 6809-এ প্রবর্তিত উল্লেখযোগ্য বিকাশের মধ্যে দুটি 8-বিট আহরণকারী (এ এবং বি, যা একক 16-বিট রেজিস্ট্রার, ডি), দুটি 16-বিট সূচক রেজিস্টার (এক্স, ওয়াই) এবং দুটি ব্যবহার করা হয়েছিল 16-বিট স্ট্যাক পয়েন্টার।

ইতিমধ্যে উদাহরণ হিসাবে মোটরোলা 68000/68020 দিয়ে এই পয়েন্টটি তৈরি করার একটি উত্তর রয়েছে । এই প্রশ্নটি সত্যই x86-64 সম্পর্কিত, পুরানো 8/16-বিট সিপিইউ নয়। X86-64 এর ক্ষেত্রে, অন্যতম প্রধান কারণ হ'ল প্রশস্ত ভার্চুয়াল ঠিকানাগুলির আরও গভীর পৃষ্ঠার সারণির প্রয়োজন হবে এবং আপনি যে পুরানো চিপগুলি নিয়ে কথা বলছেন তার জন্য সেই উপাদানটি বিদ্যমান ছিল না।
পিটার কর্ডেস

ডেটা-বাসের প্রস্থের রেজিস্টার বা ALU প্রস্থের সাথে মেলে না। উদাহরণস্বরূপ, পি 5 পেন্টিয়ামে একটি -৪-বিট ডেটা বাস রয়েছে (প্রান্তিকভাবে -৪-বিট লোড / স্টোরগুলি পারমাণবিক হওয়ার নিশ্চয়তা দেওয়া হয়), তবে নিবন্ধগুলি / এএলইউগুলি কেবলমাত্র 32 বিট (সংহত এফপিইউ ব্যতীত, এবং পরবর্তী পেন্টিয়াম এমএমএক্সে সিমডি রয়েছে) ALUs।)
পিটার কর্ডস

ওপি লিখুন: "আমার প্রত্যাশা ছিল এটি যদি একটি 64৪-বিট প্রসেসর হয় তবে ঠিকানা জায়গার পরিমাণও ^ ^ should৪ হওয়া উচিত।" ........ আপনি লিখেছেন: "এই প্রশ্নটি সত্যই x86-64 সম্পর্কিত, পুরানো 8/16-বিট সিপিইউ নয়"। ........ আমি মনে করি আপনি ওপি প্রশ্নের সারমর্মটি মিস করেছেন। ওপি প্রশ্নটি একটি ভুল অনুমানের একটি ফলাফল যা একটি 64-বিট সিপিইউতে একটি 64-বিট ঠিকানা-বাস থাকা উচিত। এএলইউ সম্পর্কে আমি এর সত্ত্বার বড় অংশ লিখেছি ; ঞ্চ.
অমিত জি।

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