الصفحة الرئيسية » howto » كيف العديد من عناوين الذاكرة يمكن للذاكرة في جهاز الكمبيوتر الخاص بك عقد؟

    كيف العديد من عناوين الذاكرة يمكن للذاكرة في جهاز الكمبيوتر الخاص بك عقد؟

    يومًا ما ، من الممتع أن ننظر إلى مستوى سطح تجربة الكمبيوتر ، وأيام أخرى من السهل أن تتعمق في العمل الداخلي. اليوم نحن نلقي نظرة على هيكل ذاكرة الكمبيوتر وكمية الأشياء التي يمكنك حزمها في عصا من ذاكرة الوصول العشوائي.

    تأتي جلسة الأسئلة والأجوبة اليوم مقدمة من SuperUser-a subdivision of Stack Exchange ، وهي مجموعة مجتمعية مدفوعة من مواقع Q & A.

    السؤال

    يتصارع قارئ SuperUser Johan Smohan مع كيفية عمل نوع المعالج وحجم الذاكرة معًا لإعطاء عدد إجمالي من العناوين. هو يكتب:

    كم عدد عناوين الذاكرة التي يمكننا الحصول عليها باستخدام معالج 32 بت وذاكرة رام 1 جيجا وعدد المعالجات باستخدام معالج 64 بت?

    أعتقد أنه شيء من هذا القبيل:

    1GB من ذاكرة الوصول العشوائي مقسومة إما 32 بت 4 بت (؟) للحصول على عدد من عناوين الذاكرة?

    قرأت على موقع Wikipedia أن عناوين الذاكرة الواحدة هي 32 بت أو 4 بتات (8 بتات = 8 بتات) ، مقارنة بمعالج 64 بت حيث 1 عناوين ذاكرة أو عدد 1 صحيح 64 بت أو 8 ثماني بتات. ولكن لا أعرف ما إذا كنت قد فهمته بشكل صحيح أيضًا.

    هذه هي أنواع الأسئلة التي يمكن أن تبقي مهوس غريبة في الليل. كم عدد العناوين المتوفرة تحت كل نظام من أنظمة يوهان الإفتراضية?

    الاجابة

    يساهم مساهم SuperUser Gronostaj ببعض التبصر في كيفية تقسيم ذاكرة الوصول العشوائي واستخدامها:

    اجابة قصيرة: عدد العناوين المتاحة يساوي أصغر العناوين:

    • حجم الذاكرة بالبايت
    • أكبر عدد صحيح غير موقعة والذي يمكن حفظه في كلمة آلة المعالج

    إجابة طويلة وشرح لما سبق:

    تتكون الذاكرة من بايت (B). كل بايت يتكون من 8 بت (ب).

    1 B = 8 b 

    1 غيغابايت من ذاكرة الوصول العشوائي هو في الواقع 1 غيغابايت (gibibyte ، وليس غيغابايت). والفرق هو:

    1 غيغابايت = 10 ^ 9 B = 0000000000 B 1 GiB = 2 ^ 30 B = 1 073 741 824 B 

    كل بايت من الذاكرة له عنوانه الخاص ، بغض النظر عن حجم كلمة آلة المعالج. على سبيل المثال. كانت وحدة المعالجة المركزية Intel 8086 16 بت وكان يعالج الذاكرة بواسطة وحدات البايت ، بحيث وحدات المعالجة المركزية الحديثة 32 بت و 64 بت. هذا هو سبب الحد الأول - لا يمكنك الحصول على عناوين أكثر من وحدات بايت الذاكرة.

    عنوان الذاكرة هو مجرد عدد من وحدات البايت التي يجب على وحدة المعالجة المركزية أن تتخطىها من بداية الذاكرة للوصول إلى تلك التي تبحث عنها.

    • للوصول إلى البايت الأول ، يجب تخطي 0 بايت ، بحيث يكون عنوان البايت الأول هو 0.
    • للوصول إلى البايت الثاني ، يجب تخطي 1 بايت ، بحيث يكون عنوانه 1.
    • (وهكذا دواليك… )
    • للوصول إلى البايت الأخير ، يتخطى وحدة المعالجة المركزية (CPU) 1073741823 بايت ، بحيث يكون عنوانه هو 1073741823.

    الآن عليك أن تعرف ما يعني بالفعل 32 بت. كما ذكرت من قبل ، إنه حجم كلمة الآلة.

    كلمة الآلة هي مقدار الذاكرة التي تستخدمها وحدة المعالجة المركزية (CPU) لاستيعاب الأرقام (في ذاكرة الوصول العشوائي ، ذاكرة التخزين المؤقت أو التسجيلات الداخلية). تستخدم وحدة المعالجة المركزية (CPU) ذات 32 بت 32 بت (4 بايت) للاحتفاظ بالأرقام. عناوين الذاكرة هي أرقام أيضا ، لذلك على وحدة المعالجة المركزية 32 بت يتكون عنوان الذاكرة من 32 بت.

    الآن فكر في هذا: إذا كان لديك بت واحد ، يمكنك حفظ قيمتين عليه: 0 أو 1. قم بإضافة بت واحد ولديك أربع قيم: 0 ، 1 ، 2 ، 3. على ثلاث بتات ، يمكنك حفظ ثماني قيم : 0، 1، 2… 6، 7. إنه في الواقع نظام ثنائي ويعمل على النحو التالي:

    Binary Decimal 0 0000 1 0001 2 0010 3 0011 4 0100 5 0101 6 0110 7 0111 8 1000 9 1001 10 1010 11 1011 12 1100 13 1101 14 1110 15 1111 

    يعمل تمامًا مثل الإضافة العادية ، لكن الحد الأقصى للرقم هو 1 وليس 9 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 ، وهذا هو 295 297 294 4. وهو أكثر من العنوان الأكبر في ذاكرة الوصول العشوائي 1 غيغابايت ، لذلك في حالة الحالة الخاصة بك من ذاكرة الوصول العشوائي سيكون العامل المحدد.

    حد RAM لوحدة المعالجة المركزية 32 بت هو نظريًا 4 جيجابايت (2 ^ 32) وبالنسبة لوحدة المعالجة المركزية 64 بت ، يكون 16 EB (exabytes، 1 EB = 2 ^ 30 GB). بمعنى آخر ، يمكن لوحدة المعالجة المركزية 64 بت معالجة إنترنت بالكامل ... 200 مرة ؛) (المقدرة من قبل WolframAlpha).

    ومع ذلك ، في أنظمة التشغيل الفعلية يمكن معالجة وحدات المعالجة المركزية (CPU) ذات 32 بت عن 3 غيغا بايت من ذاكرة الوصول العشوائي. ويرجع ذلك إلى البنية الداخلية لنظام التشغيل - حيث يتم حجز بعض العناوين لأغراض أخرى. يمكنك قراءة المزيد عن هذا الحاجز المسمى بـ 3 غيغابايت على ويكيبيديا. يمكنك رفع هذا الحد باستخدام "ملحق العنوان الفعلي".

    بالحديث عن معالجة الذاكرة ، هناك بعض الأشياء التي يجب أن أذكرها: ذاكرة افتراضيةتقسيم و الترحيل.

    ذاكرة افتراضية

    كما أشار دانيال آر هيكس في إجابة أخرى ، تستخدم أنظمة تشغيل الذاكرة الظاهرية. ما يعنيه هو أن التطبيقات لا تعمل فعليًا على عناوين الذاكرة الحقيقية ، ولكن التطبيقات التي يوفرها نظام التشغيل.

    تسمح هذه التقنية لنظام التشغيل بنقل بعض البيانات من ذاكرة الوصول العشوائي إلى ما يسمى بـ Pagefile (في Windows) أو Swap (* NIX). HDD هي قياسات قليلة أبطأ من ذاكرة الوصول العشوائي ، ولكنها ليست مشكلة خطيرة بالنسبة للبيانات التي نادراً ما يتم الوصول إليها وهي تسمح لنظام التشغيل بتوفير ذاكرة الوصول العشوائي (RAM) للتطبيقات أكثر مما قمت بتثبيته بالفعل.

    الترحيل

    ما كنا نتحدث عنه حتى الآن يسمى نظام عنونة مستوية.

    Paging هو نظام عنونة بديل يسمح لك بمعالجة المزيد من الذاكرة التي يمكنك استخدامها عادة مع كلمة جهاز واحدة في النموذج المسطح.

    تخيل كتاب مليء بكلمات من 4 حروف. لنفترض أن هناك 1024 رقمًا في كل صفحة. لمعالجة رقم ، يجب أن تعرف شيئين:

    • عدد الصفحات التي تطبع عليها هذه الكلمة.
    • أي كلمة في تلك الصفحة هي الكلمة التي تبحث عنها.

    الآن هذا بالضبط كيفية معالجة وحدات المعالجة المركزية x86 الحديثة الذاكرة. وتنقسم إلى 4 صفحات KiB (1024 كلمة لكل جهاز) وهذه الصفحات لها أرقام. (في الواقع يمكن أن تكون الصفحات أيضًا 4 ميغابايت أو 2 ميجابت في الثانية مع PAE). عندما تريد معالجة خلية الذاكرة ، تحتاج إلى رقم الصفحة وعنوانها في تلك الصفحة. لاحظ أنه تتم الإشارة إلى كل خلية ذاكرة من خلال زوج واحد من الأرقام بالضبط ، ولن يكون هذا هو الحال بالنسبة للتقسيم.

    تقسيم

    حسنا ، هذا واحد يشبه تماما الترحيل. تم استخدامه في Intel 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:

     SEG 0 _____ SEG 1 | 0 | _____ SEG 2 | 0 | | 0 | _____ SEG 3 | 0 | | 0 | | 0 | _____ SEG 4 | 255 | | 255 | | 255 | | 255 | _____ SEG 5 ----- | 0 | | 0 | | 0 | | 0 | _____ SEG 6 ----- | 0 | | 0 | | 0 | | 0 | _____ SEG 7 ----- | 0 | | 0 | | 0 | | 0 | _____ ----- | 0 | | 0 | | 0 | | 0 | ----- ----- ----- ----- 

    كما ترى ، يمكن معالجة البايتة الرابعة بأربع طرق: (معالجة من 0)

    • الجزء 0 ، الإزاحة 3
    • الجزء 1 ، الإزاحة 2
    • الجزء 2 ، الإزاحة 1
    • الجزء 3 ، الإزاحة 0

    انها دائما نفس خلية الذاكرة.

    في أجزاء التطبيق الفعلي ، يتم تحويل الشرائح بأكثر من 1 بايت (لـ 8086 كان 16 بايت).

    ما هو سيء في التقسيم هو أنه معقد (ولكن أعتقد أنك تعرف ذلك بالفعل) ؛ ما هو جيد ، هو أنه يمكنك استخدام بعض التقنيات الذكية لإنشاء برامج معيارية.

    على سبيل المثال ، يمكنك تحميل بعض الوحدات في مقطع ، ثم تتظاهر بأن الشريحة أصغر مما هي عليه بالفعل (صغيرة بما يكفي للاحتفاظ بالوحدة) ، ثم اختر الجزء الأول الذي لا يتداخل مع تلك الوحدة الأصغر حجمًا وقم بتحميلها بعد ذلك وحدة ، وهلم جرا. أساسا ، ما تحصل عليه بهذه الطريقة هو صفحات ذات حجم متغير.


    هل لديك شيء تضيفه إلى الشرح؟ الصوت قبالة في التعليقات. هل ترغب في قراءة المزيد من الإجابات من مستخدمي Stack Exchange الآخرين المحترفين بالتكنولوجيا؟ تحقق من موضوع المناقشة الكامل هنا.