كيف يمكننا أن نجد أن هذا المعالج يدعم مقدار الذاكرة؟

StackOverflow https://stackoverflow.com/questions/2482530

  •  21-09-2019
  •  | 
  •  

سؤال

لقد بدأت للتو برمجة لغة التجميع ، وفي المحاضرة الأولى أخبرنا معلمنا عن Intel 8080 و Intel 8085 وقال إن هناك ذاكرة 64K مع هذه المعالج.

الآن أريد أن أعرف أن كيف نجد هذه الكمية من الذاكرة مع معالج معين ، على سبيل المثال لدي معالج 1.8 جيجاهرتز ، والآن كيف يمكنني معرفة مقدار الذاكرة التي يمكن استخدامها مع هذا المعالج.

ما أحاول أن أسأله هو إخباري بالطريقة التي يمكننا من خلالها اكتشاف هذا المبلغ من الذاكرة؟

هل كانت مفيدة؟

المحلول

يعتمد ذلك على عدد أجزاء البتات (المادية) التي تدعم وحدة المعالجة المركزية ، وعادة ما يكون عدد بتات العناوين <= عدد البتات في سجل العنوان ، على سبيل المثال

8085/Z80 - 16 bit address registers - 16 bit addressing - 64 kB address space
68008 - 32 bit address registers - 20 bit addressing - 1 MB address space
68000 - 32 bit address registers - 24 bit addressing - 16 MB address space
68020 - 32 bit address registers - 32 bit addressing - 4 GB address space

لاحظ أن العديد من وحدات المعالجة المركزية 64 بت عادة ما تدعم شيئًا مثل مساحة عنوان 40 بت ، أي 1 تيرابايت.

نصائح أخرى

عادة ما يتم تصميم المعالجات بحيث يمكن لسجل عدد صحيح واحد تخزين عنوان أي موقع ذاكرة. لذلك يتم تحديد "الحد الأقصى لمبلغ الذاكرة" بمقدار أجزاء السجل (أو المعالج). 32 بت تساوي 4 جيجابايت. 64 بت تساوي 16 exabytes من رام.

يعتمد على الهندسة المعمارية ولكن وحدة المعالجة المركزية ستقتصر على عدد خطوط العناوين التي لديها. مع وحدة المعالجة المركزية القديمة Pentium Pro 32 بت ، كان هناك 36 سطر عنوان مدعوم وبالتالي يمكن أن تدعم وحدة المعالجة المركزية ما يصل إلى 64 جيجابايت. وحدة المعالجة المركزية الأكثر حداثة مثل i7-860 والتي هي وحدة المعالجة المركزية 64 بت ، أيضا لديها دعم فقط ل 36 عنوانًا ماديًا ، وبالتالي يقتصر على 64 جيجابايت أيضًا. يمكن العثور على مقدار مساحة العنوان الفعلي باستخدام رمز تعليمات CPUID ، وقد تستخدم وحدة المعالجة المركزية الأخرى تقنيات مختلفة أو تتطلب قراءة ورقة البيانات. يبدو أن دراستك x86 لذا في هذه الحالة هي وحدة المعالجة المركزية هي ما تريده إذا دعمها وحدة المعالجة المركزية.

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

http://en.wikipedia.org/wiki/physical_address_extension

http://msdn.microsoft.com/en-us/library/aa366796(v=vs.85).aspx

http://msdn.microsoft.com/en-us/windows/hardware/gg487503

حسنًا ، يعتمد ذلك على بعض المتغيرات.

على سبيل المثال ، يحتوي المعالج 8 بت على قيم تصل إلى 255 ، والتي تم اكتشافها عن طريق أخذ 2 إلى القوة الثامنة ، وطرح القيمة بمقدار واحد. هذا الرقم ، 255 ، هو عدد البايتات التي يمكن لوحدة المعالجة المركزية التعامل معها ، ولا يمكن أن يتجاوز ذاكرة الوصول العشوائي هذا المبلغ.

الآن ، دعنا نرتكز عليه قليلاً (لا يقصد التورية). يحتوي معالج 16-IT على قيم تصل إلى 65،535 ، وقد تم اكتشاف ذلك مرة أخرى عن طريق أخذ 2 إلى القوة السادسة عشرة ، ثم طرحها من قبل واحد (أنا متأكد من أنك تحصل على الصورة الكبيرة الآن). هذا يعني أنه يمكن أن يكون لدينا 65،535 بايت من ذاكرة الوصول العشوائي ، أو 65.535 كيلوبايت. نأمل أن يكون هذا منطقيًا.

يحتوي معالج 32 بت على قيم تصل إلى 4،294،967،295 (هذه الأرقام تصبح كبيرة جدًا). هذا هو 4،294،967،295 بايت ، أو 4.294967295 غيغابايت من ذاكرة الوصول العشوائي. بدأت هذه التكنولوجيا تستخدم كثيرًا في التسعينيات ، ولا تزال شبه شعبية اليوم.

ولكن ، بالطبع ، نعلم جميعًا كيف تتغير التكنولوجيا بسرعة وغالبًا ، لذا نعم ، هناك أيضًا أجهزة كمبيوتر 64 بت ، جيدة مثل تقنية 32 بت. هذا هو في الواقع نوع المعالج الأكثر شيوعا اليوم. لذلك ، يمكنهم دعم قيم 18،446،744،073،709،551،615. نعم ، وهذا أيضًا عدد البايتات التي يمكن أن تحتفظ بها ، والتي تساوي 18.446744073709551615 exabytes.

وعلى الرغم من عدم وجود معالجات يمكنها حاليًا الاحتفاظ بهذا المبلغ ، إلا أن هناك أيضًا معالجات 128 بت. يمكنهم أن يحملوا ما يصل إلى 340،282،366،920،938،463،463،374،607،431،768،211،455 بايت من البيانات ، والتي لا تعرّفها أيضًا ، أيها المقياس ، أيها الكبير ، أيها المقياس ، هناك ما يزيد عن ذلك ، هناك ما يعثر عليه. من قياس البايت وراء ذلك. ولكن ، مهلا ، هذا يخبرك فقط أن معالج 128 بت يمكنه التعامل مع الكثير ، وقد نراهم في المستقبل البعيد. السبب في أن الناس يقولون إن 128 بت ، 64 بت ، 32 بت ، 16 بت ، أو 8 بت هو أنه أسهل بكثير من محاولة تذكر كل هذه الأرقام الكبيرة التي يمثلها كل منها.

لذلك ، آمل أن يساعد هذا. لست متأكدًا من أن 8 بت صحيح ، لأنني أعلم أن NES لديه 2 كيلوغرامات من ذاكرة الوصول العشوائي ، والتي تتجاوز 255 بايت ، لكنني أعرف أن كل شيء آخر صحيح. إذا لم يكن ذلك صحيحًا ، فيمكنك إجراء بعض الأبحاث نيابة عنك أيضًا ؛).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top