20Aug
سومدايس انها متعة للنظر في مستوى سطح تجربة الحوسبة، وأيام أخرى انها متعة لخوض الحق في العمل الداخلي.اليوم نحن نلقي نظرة على بنية ذاكرة الكمبيوتر وكم الأشياء التي يمكن أن حزمة في عصا من ذاكرة الوصول العشوائي.
سؤال اليوم & أمب؛تأتي جلسة الجواب إلينا من باب المجاملة، وهو قسم فرعي من "ستاك إكسهانج"، وهو عبارة عن مجموعة من المواقع على شبكة الإنترنت.
قارئ أسد
السؤال هو يوهان سموهان يتصارع مع كيفية نوع المعالج وحجم الذاكرة العمل معا لتسفر عن العدد الإجمالي للعناوين.يكتب:
كم عدد عناوين الذاكرة التي يمكن أن نحصل عليها مع معالج 32 بت وذاكرة رام 1GB وكم مع معالج 64 بت؟
أعتقد أنه شيء من هذا القبيل:
1GB من ذاكرة الوصول العشوائي مقسوما إما 32 بت 4 بت( ؟) للحصول على عدد من عناوين الذاكرة؟
قرأت على ويكيبيديا أن 1 عنوان الذاكرة هو 32 بت واسعة أو 4 ثماني( 1 ثماني = 8 بت)، بالمقارنة مع معالج 64 بت حيث 1 عناوين الذاكرة أو 1 صحيح هو 64 بت واسعة أو 8 ثماني.ولكن لا أعرف إذا فهمت ذلك بشكل صحيح سواء.
هذه هي أنواع من الأسئلة التي يمكن أن تبقي المهوس غريبة حتى في الليل.كم عدد العناوين المتاحة تحت كل من أنظمة يوهان الافتراضية؟
المساهم الجواب
سوبيروسر يقدم غرونوستاج بعض التبصر في كيفية تقسيم ذاكرة الوصول العشوائي واستخدامها:
الإجابة القصيرة: عدد العناوين المتوفرة يساوي أصغر:
- حجم الذاكرة بالبايتات
- أكبر عدد صحيح غير موقعة يمكن حفظهفي آلة كلمة وحدة المعالجة المركزية
الجواب الطويل وشرح ما سبق:
الذاكرة يتكون من بايت( B).وتتألف كل بايتة من 8 بتات( b).
1 B = 8 b1 غيغابايت من ذاكرة الوصول العشوائي هو في الواقع 1 غيغابايت( جيبيبيت، وليس غيغابايت).الفرق هو:
1 غب = 10 ^ 9 B = 1 000 000 000 B 1 جيب = 2 ^ 30 B = 1 073 741 824 Bلكل بايت من الذاكرة عنوانه الخاص، مهما كانت كلمة وحدة المعالجة المركزية.على سبيل المثال.كان إنتل 8086 وحدة المعالجة المركزية 16 بت وكان يعالج الذاكرة عن طريق وحدات البايت، حتى تفعل وحدات المعالجة المركزية الحديثة 32 بت و 64 بت.هذا هو سبب الحد الأول - لا يمكن أن يكون لديك عناوين أكثر من بايت الذاكرة.
عنوان الذاكرة هو مجرد عدد من وحدات البايت وحدة المعالجة المركزية لديها لتخطي من بداية الذاكرة للوصول الى واحد انها تبحث عنه.
- للوصول إلى البايتة الأولى يجب أن يتخطى 0 بايت، بحيث يكون عنوان البايت الأول هو 0.
- للوصول إلى البايتة الثانية، يجب تخطي بايتة واحدة، بحيث يكون عنوانه 1.
- ( وهكذا دواليك. ..)
- للدخول إلىبايت الماضي، وحدة المعالجة المركزية يتخطى 1073741823 بايت، لذلك عنوانه هو 1073741823.
الآن عليك أن تعرف ما 32 بت يعني في الواقع.كما ذكرت من قبل، انها حجم كلمة الجهاز.
كلمة الآلة هي مقدار الذاكرة التي تستخدمها وحدة المعالجة المركزية للاحتفاظ بالأرقام( في ذاكرة الوصول العشوائي أو ذاكرة التخزين المؤقت أو السجلات الداخلية).وحدة المعالجة المركزية 32 بت يستخدم 32 بت( 4 بايت) لعقد الأرقام.عناوين الذاكرة هي أرقام أيضا، وذلك على وحدة المعالجة المركزية 32 بت يتكون عنوان الذاكرة من 32 بت.
الآن تفكر في هذا: إذا كان لديك بت واحد، يمكنك حفظ قيمتين على ذلك: 0 أو 1. إضافة بت واحد واحد ولديك أربعة قيم: 0، 1، 2، 3. على ثلاث بت، يمكنك حفظ ثمانيةالقيم: 0، 1، 2. .. 6، 7. هذا هو في الواقع نظام ثنائي ويعمل مثل ذلك:
عشري ثنائي 0 0000 1 0001 2 0010 3 0011 4 0100 5 0101 6 0110 7 0111 8 1000 9 1001 10 1010 111011 12 1100 13 1101 14 1110 15 1111يعمل تماما مثل المعتاد بالإضافة إلى ذلك، ولكن الرقم الأقصى هو 1، وليس 9. عشري 0 هو 0000، ثم قمت بإضافة 1 والحصول على 0001، إضافة واحدة مرة أخرى وكان لديك 0010. ماذاهابند هنا هو مثل مع وجود عشري 09 وإضافة واحد: يمكنك تغيير 9 إلى 0 وزيادة الرقم التالي.
من المثال أعلاه يمكنك أن ترى أن هناك دائما قيمة قصوى يمكنك الاحتفاظ بها في عدد مع عدد ثابت من البتات - لأنه عندما تكون جميع البتات 1 وحاولت زيادة القيمة بمقدار 1، سوف تصبح جميع البتات 0، وبالتالي كسرالرقم.انها تسمى تجاوز صحيح ويسبب العديد من المشاكل غير السارة، سواء بالنسبة للمستخدمين والمطورين.
11111111 = 255 + 1 ----------- 100000000 = 0( 9 بتات هنا، لذلك قلص 1)- بالنسبة إلى 1 بت أعظم قيمة هي 1،
- 2 بتة - 3،
- 3 بتات -7،
- 4 بت - 15
أكبر عدد ممكن هو دائما 2 ^ N-1، حيث N هو عدد البتات.كما قلت من قبل، عنوان الذاكرة هو رقم ولها أيضا قيمة قصوى.هذا هو السبب في حجم كلمة الجهاز هو أيضا حد لعدد من عناوين الذاكرة المتاحة - في بعض الأحيان وحدة المعالجة المركزية الخاصة بك فقط لا يمكن معالجة أرقام كبيرة بما فيه الكفاية لمعالجة المزيد من الذاكرة.
حتى 32 بت يمكنك الاحتفاظ بالأرقام من 0 إلى 2 ^ 32-1، وهذا هو 4 294 967 295. انها أكثر من أكبر عنوان في 1 غيغابايت من ذاكرة الوصول العشوائي، وذلك في كمية محددة من ذاكرة الوصول العشوائي الخاصة بك وسوف يكون عامل الحد.
الحد رام ل وحدة المعالجة المركزية 32 بت هو نظريا 4 غب( 2 ^ 32) و 64 بت وحدة المعالجة المركزية انها 16 إب( إكسابايت، 1 إب = 2 ^ 30 غب).وبعبارة أخرى، يمكن وحدة المعالجة المركزية 64 بت معالجة الإنترنت بأكمله. .. 200 مرة؛)( يقدر بيولفرامالفا).
ومع ذلك، في أنظمة التشغيل واقع الحياة 32 بت وحدات المعالجة المركزية يمكن معالجة حوالي 3 غيغابايت من ذاكرة الوصول العشوائي.وذلك بسبب العمارة الداخلية لنظام التشغيل - بعض العناوين محجوزة لأغراض أخرى.يمكنك قراءة المزيد عن هذا ما يسمى حاجز 3 غيغابايت على ويكيبيديا.يمكنك رفع هذا الحد باستخدام إضافة العنوان الفعلي.
يتحدث عن معالجة الذاكرة، وهناك عدد قليل من الأشياء التي يجب أن أذكر: الذاكرة الظاهرية ، تجزئة و الترحيل .
الذاكرة الظاهرية
كما أشار دانيال R هيكس في إجابة أخرى، تستخدم أنظمة التشغيل الذاكرة الظاهرية.ما يعنيه هو أن التطبيقات في الواقع لا تعمل على عناوين الذاكرة الحقيقية، ولكن تلك التي تقدمها نظام التشغيل.
تسمح هذه التقنية لنظام التشغيل بنقل بعض البيانات من ذاكرة الوصول العشوائي إلى ما يسمى باجيفيل( ويندوز) أو سواب( * نيكس).هد هو أقل من مقادير أبطأ من ذاكرة الوصول العشوائي، لكنها ليست مشكلة خطيرة للبيانات نادرا ما الوصول ويسمح نظام التشغيل لتوفير التطبيقات أكثر من ذاكرة الوصول العشوائي مما كنت قد قمت بالفعل بتثبيت.
ترحيل
ما كنا نتحدث عنه حتى الآن يسمى مخطط العناوين المسطحة.
الترحيل هو مخطط معالجة بديلة تسمح لمعالجة المزيد من الذاكرة التي يمكنك عادة مع كلمة آلة واحدة في نموذج مسطح.
تخيل كتابا مليئا بالكلمات المكونة من 4 أحرف.لنفترض أن هناك 1024 رقما في كل صفحة.لمعالجة عدد، عليك أن تعرف أمرين:
- عدد الصفحة التي تتم طباعة تلك الكلمة.
- أي كلمة في تلك الصفحة هي الكلمة التي تبحث عنها.
الآن هذا بالضبط كيفية معالجة وحدات المعالجة المركزية الحديثة x86 الذاكرة.انها مقسمة إلى 4 صفحات كيب( 1024 كلمات آلة لكل منهما) وهذه الصفحات لديها أرقام.(في الواقع صفحات يمكن أيضا أن يكون 4 ميب كبيرة أو 2 ميب مع باي).عندما تريد معالجة خلية الذاكرة، تحتاج إلى رقم الصفحة وعنوانها في تلك الصفحة.لاحظ أن كل خلية ذاكرة يشار إليها بالضبط زوج واحد من الأرقام، لن يكون هذا هو الحال للتجزئة.
تجزئة
حسنا، هذا واحد يشبه إلى حد بعيد الاستدعاء.تم استخدامه في إنتل 8086، فقط على سبيل المثال مثال واحد.مجموعات العناوين تسمى الآن شرائح الذاكرة، وليس الصفحات.الفرق هو أن القطاعات يمكن أن تتداخل، وأنها تتداخل كثيرا.على سبيل المثال في 8086 كانت معظم خلايا الذاكرة متوفرة من 4096 شريحة مختلفة.
مثال:
لنفترض أن لدينا 8 بايتات من الذاكرة، كل الأصفار التي يتم الاحتفاظ بها باستثناء البايتة الرابعة التي تساوي 255.
توضيح لنموذج الذاكرة المسطحة:
_____ |0 ||0 ||0 ||255 ||0 ||0 ||0 ||0 |-----توضيح للذاكرة المقسمة إلى صفحات بصفحات 4 بايت:
PAGE0 _____ |0 ||0 ||0 |PAGE1 |255 |_____ ----- |0 ||0 ||0 ||0 |-----توضيح للذاكرة المجزأة مع شرائح 4 بايت تم تغييرها بواسطة 1:
سيغ 0 _____ سيغ 1 |0 |_____ سيغ 2 |0 ||0 |_____ سيغ 3 |0 ||0 ||0 |_____ سيغ 4 |255 ||255 ||255 ||255 |_____ سيغ 5 ----- |0 ||0 ||0 ||0 |_____ سيغ 6 ----- |0 ||0 ||0 ||0 |_____ سيغ 7 ----- |0 ||0 ||0 ||0 |_____ ----- |0 ||0 ||0 ||0 |----------- AS-إزاحة 2هو دائما نفس خلية الذاكرة.
في قطاعات التنفيذ الفعلي يتم نقل أجزاء أكثر من 1 بايت( ل 8086 كان 16 بايت).
ما هو سيء حول تجزئة هو أنه معقد( ولكن أعتقد أنك تعرف بالفعل أن؛) ما هو جيد، هو أنه يمكنك استخدام بعض التقنيات ذكية لإنشاء برامج وحدات.
على سبيل المثال، يمكنك تحميل بعض الوحدات النمطية إلى شريحة، ثم التظاهر بأن الشريحة أصغر مما هي عليه حقا( فقط صغيرة بما فيه الكفاية لعقد الوحدة)، ثم اختر الشريحة الأولى التي لا تتداخل مع تلك الزائفة أصغر وتحميلالوحدة التالية، وهلم جرا.في الأساس، ما تحصل عليه بهذه الطريقة هو صفحات ذات حجم متغير.
هل لديك شيء لإضافة إلى التفسير؟الصوت قبالة في التعليقات.هل ترغب في قراءة المزيد من الإجابات من مستخدمي إكساك إكسهانج؟تحقق من موضوع المناقشة الكامل هنا.