سؤال

لقد طُلب مني مؤخرًا إنتاج MIPS (مليون تعليمات في الثانية) لخوارزمية قمنا بتطويرها.يتم كشف الخوارزمية من خلال مجموعة من وظائف النمط C.لقد قمنا بتمرين الكود على Dell Axim لقياس الأداء ضمن مدخلات مختلفة.

جاء هذا السؤال من مورد الأجهزة لدينا، ولكنني في الغالب مطور برامج HL، لذا لست متأكدًا من كيفية الرد على الطلب.ربما يمكن لشخص لديه خلفية مماثلة في HW/SW أن يساعد...

  1. وبما أن خوارزميتنا ليست في الوقت الحقيقي، فلا أعتقد أننا بحاجة إلى قياسها على أنها MIPS.هل من الممكن أن أقتبس ببساطة العدد الإجمالي لتعليمات التجميع؟

  2. إذا كان الرقم 1 صحيحًا، فكيف يمكنك القيام بذلك (على سبيل المثال.كيفية قياس عدد تعليمات التجميع) سواء بشكل عام أو بشكل خاص لـ ARM/XScale؟

  3. هل يمكن إجراء 2 على جهاز WM أو عبر Device Emulator المتوفر في VS2005؟

  4. هل يمكن أتمتة 3؟

شكرا جزيلا لمساعدتكم.تشارلز


شكرا لجميع التعليمات الخاصة بك.أعتقد أن S.Lott ضرب الظفر.وكمتابعة، لدي الآن المزيد من الأسئلة.

5 أي اقتراح حول كيفية القيام بقياس MIPS؟سمعت أن أحدهم يقترح تشغيل الخوارزمية الخاصة بنا ومقارنتها بمعيار Dhrystone/Whetstone لحساب نظام المعلومات الإدارية.

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

7 أخيرًا، أفترض أن MIPS هو تقدير أولي وسيكون منخفضًا.على المترجم، وإعدادات التحسين، وما إلى ذلك؟

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

المحلول

أراهن أن بائع الأجهزة الخاص بك يسأل عن عدد MIPS الذي تحتاجه.

كما في "هل تحتاج إلى معالج بسرعة 1000 MIPS أو معالج بسرعة 2000 MIPS؟"

والذي يتم ترجمته من قبل الإدارة إلى "كم عدد MIPS؟"

تقدم الأجهزة MIPS.يستهلك البرنامج MIPS.

لديك درجتين من الحرية.

  • عرض MIPS المتأصل للمعالج.

  • عدد الثواني التي تستهلك فيها هذا العدد من MIPS.

إذا لم يكن لدى المعالج ما يكفي من MIPS، فستكون الخوارزمية الخاصة بك "بطيئة".

إذا كان المعالج يحتوي على ما يكفي من MIPS، فستكون الخوارزمية الخاصة بك "سريعة".

أضع "سريع" و"بطيء" بين علامتي الاقتباس لأنك تحتاج إلى أن يكون لديك متطلبات أداء لتحديد "سريع بما يكفي لتلبية متطلبات الأداء" أو "بطيء جدًا لتلبية متطلبات الأداء".

على معالج 2000 MIPS، قد يستغرق الأمر ثانيتين مقبولتين.ولكن على معالج 1000 MIPS، ينفجر هذا لمدة 4 ثوانٍ غير مقبولة.


كم عدد MIPS التي تحتاجها؟

  1. احصل على MIPS الرسمي لمعالجك.يرى http://en.wikipedia.org/wiki/Instructions_per_secand

  2. قم بتشغيل الخوارزمية الخاصة بك على بعض البيانات.

  3. قياس وقت التشغيل الدقيق.متوسط ​​مجموعة من العينات لتقليل عدم اليقين.

  4. تقرير.3 ثوانٍ على معالج 750 MIPS هي - حسنًا - 3 ثوانٍ بسرعة 750 MIPS.MIPS هو معدل.الوقت هو الوقت.المسافة هي نتاج المعدل * الوقت.3 ثواني بسرعة 750 MIPS هي 750*3 مليون تعليمات.

تذكر المعدل (بالتعليمات في الثانية) * الوقت (بالثواني) يمنحك التعليمات.

لا تقل أنها 3*750 MIPS.ليس كذلك؛إنها 2250 مليون تعليمات.

نصائح أخرى

بعض الملاحظات:

  1. غالبًا ما يتم استخدام MIPS كمقياس عام "للقدرة" للمعالجات، خاصة في المجال المضمن/الوقت الحقيقي البسيط حيث تريد التأكد من عدم تحميل المعالج بالعمل الزائد.لاحظ أن هذه تعليمات في الثانية الواحدة، لأن الوقت مهم جدًا!

  2. MIPS المستخدمة بهذه الطريقة غير علمية تمامًا.

  3. لا يزال MIPS المستخدم بهذه الطريقة هو أفضل تقدير تقريبي لتحديد حجم النظام وتحديد سرعة المعالج.قد يكون هناك خصم بنسبة 25%، لكن لا يهم...

  4. يتطلب حساب MIPS معالجًا قريبًا من المعالج الذي تستخدمه.من الواضح أن مجموعة التعليمات الصحيحة أمر بالغ الأهمية لالتقاط تدفق التعليمات الفعلي من المترجم الفعلي المستخدم.

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

  1. استخدم محاكي مجموعة التعليمات للبنية المستهدفة مثل Qemu أو أدوات ARM الخاصة أو Synopsys أو CoWare أو Virtutech أو VaST.إنها سريعة ولكن يمكنها حساب التعليمات بشكل جيد وستدعم مجموعة التعليمات الصحيحة.باستثناء الاستخدام المكثف لتعليمات باهظة الثمن مثل قسمة الأعداد الصحيحة (ويرجى عدم وجود نقطة عائمة)، تميل هذه الأرقام إلى أن تكون قريبة بشكل مفيد.

  2. ابحث عن محاكي دقيق لدورة الساعة للمعالج المستهدف (أو أي شيء قريب منه)، والذي سيعطي تقديرًا جيدًا لتأثيرات خط الأنابيب وما إلى ذلك.مرة أخرى، احصل عليه من ARM أو من Carbon SoCDesigner.

  3. احصل على لوحة تطوير لعائلة المعالج الذي تستهدفه، أو تصميم ARM قريب منه، وقم بوضع ملف تعريف التطبيق هناك.لا تستخدم ARM9 لملف تعريف ARM11، ولكن قد يكون ARM11 تقريبًا جيدًا لـ ARM Cortex-A8/A9 على سبيل المثال.

MIPS يستخدم عادة لقياس قدرة المعالج.

عادة ما تأخذ الخوارزميات إما:

  1. مقدار معين من الوقت (عند التشغيل على معالج معين)
  2. عدد معين من التعليمات (حسب البنية)

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

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

const num_trials = 1000000
start_time = timer()
for (i = 1 to num_trials)
{
    runAlgorithm(randomData)
}
time_taken = timer() - start_time
average_time = time_taken / num_trials

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

نظرًا لأنه يمكنك قياس خوارزمية ما بعدد التعليمات (والتي ستعتمد بلا شك على البيانات المدخلة، لذا فهذا أمر غير تافه)، فأنت تحتاج بعد ذلك إلى قدر من الوقت للحصول على MIPS - على سبيل المثال، " أحتاج إلى استدعائها 1000 مرة في الثانية".إذا كانت الخوارزمية الخاصة بك تحتوي على 1000 تعليمات لهذه الحالة المحددة، فسوف ينتهي بك الأمر إلى:

1000 instructions / (1/1000) seconds = 1000000 instructions per second = 1 MIPS.

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

تذكر أيضًا أن المترجمين وخيارات المترجم المختلفة يحدثون فرقًا كبيرًا.يمكن تشغيل نفس كود المصدر بسرعات مختلفة.لذلك بدلاً من شراء معالج 2mips، قد تتمكن من استخدام معالج 1/2mips واستخدام خيار المترجم.أو أنفق الأموال على مترجم أفضل واستخدم المعالج الأرخص.

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

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

يعتمد ما إذا كان بإمكانك أتمتة هذه الأنواع من الأشياء أو محاكاتها أم لا على الأدوات، أحيانًا نعم، وأحيانًا لا.لست على دراية بالأدوات التي تتحدث عنها لذا لا أستطيع التحدث إليهم مباشرة.

ليس المقصود من هذه الإجابة الإجابة على السؤال مباشرة، ولكن توفير سياق إضافي حول سبب طرح هذا السؤال.

تعتبر MIPS الخاصة بالخوارزمية ذات صلة فقط بالخوارزميات التي تحتاج إلى الاستجابة لحدث ما خلال الوقت المطلوب.

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

ما هي الوظائف الأخرى التي يمكن إضافتها على وحدة التحكم؟يعتمد ذلك على MIPS للوظيفة/الخوارزمية المراد إضافتها.إذا كانت هناك وظيفة أخرى تحتاج إلى تنفيذ 100000 تعليمات خلال ثانية واحدة (أي:100 KIPs)، لا يزال بإمكاننا استيعاب هذه الوظيفة الجديدة ولا يزال لدينا بعض المساحة لإضافة وظائف أخرى.

للحصول على تقدير أولي، قد يكون من المفيد وضع معيار على جهاز الكمبيوتر.

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

هناك الكثير من العوامل التي تؤثر على سرعة الأجهزة الحالية (التخزين المؤقت، وخطوط الأنابيب، ومجموعات التعليمات المختلفة، ...) لذلك قد تكون معاييرك على جهاز الكمبيوتر بعيدة كل البعد عن الدقة.الذراع.

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