رازهای سنجش سرعت
در این آموزش بنیادی که برای اولین بار در ایران منتشر شده است به مباحث بسیار پایهایی و مهم پرداخته شده بطوریکه قادر خواهید بود که مطالبی را که از این آموزش یاد میگیرید در هر نوع پردازندهایی پیادهسازی کنید.
مدت زمان آموزش : یک ساعت و دوازده دقیقه
همراه با فایلهای تمرین در هر دو محیط IAR و Keil
149,000 تومان
سالها پیش اگر به تصویر بالا نگاه میکردم تنها چیزی که از تصویر میتوانست برایم مفید باشد همان فرکانس کاری پردازنده بود! هیچ ذهنیتی از اعداد CoreMark و DMIPS نداشتم! آیا شما واقعا میدانید که اعداد بالا چگونه تفسیر میشوند و چرا مهم هستند؟ که حتی در دیتاشیتها ذکر شدهاند!
به نظر شما هر پردازندهای که فرکانس بیشتری داشته باشد، راندمان و سرعت بالاتری هم دارد؟ تا حالا برای مقایسه پردازندهها از چه معیاری استفاده میکردید؟
در تصویر بالا که از سایت IAR گرفته شده است صراحتا به گرفتن رتبهی بالای CoreMark افتخار کردهاند! راز این اعداد جادویی چیست و کاربرد آنها کجاست؟
مطمئن هستم که سوالات بیشتری هم تا حالا در ذهن شما نقش بستهاست! ما در این آموزش به شما کمک خواهیم کرد تا با انواع روش تست سرعت پردازندهها و رازهای پشت سر آنها و همچنین نحوهی صحهگذاری آنها آشنا شوید.
این آموزش از سری آموزشهای بنیادی است که بدون شک با درک آن و انجام تمرینهایی که به صورت عملی گفته شده، قادر خواهید بود رتبه و جایگاه خود را در هر موقعیتی که قرار دارید بالاتر ببرید.
اگه به افراد اطرافتان نگاهی بیاندازید، میبینید که افرادی که در دنیای واقعی به مباحث پایهایی تسلط دارند، زودتر از همه، فرصتها را شکار میکنند.
فهرست مطالب این آموزش
-
چرا باید با این مباحث آشنا شویم
-
نحوه بررسی صحیح سرعت
-
فرکانس کاری پردازنده و MIPS
-
کجا میتوانیم از واحد MIPS استفاده کنیم؟
-
استفاده از ARM در میکروکنترلرهای مختلف
-
BenchMark چیست؟
-
Dhrystone چیست و چه مواردی را بررسی میکند؟
-
نحوه ارائه نتیجه Dhrystone همراه با دو مثال کاربردی
-
اجزای تشکیل دهنده Dhrystone
-
مراحل لازم برای پیادهسازی Dhrystone
-
۲ نکته بسیار مهم در پیادهسازی
-
پیکربندی صحیح ITM و پیکربندی آن
-
اجرای Dhrystone در Keil و IAR
-
مزیت و معایب Dhrystone
-
CoreMark و تاریخچه آن
-
ویژگیهای بسیار مهم CoreMark
-
نحوه ارائه نتیجه در CoreMark
-
بررسی چند نتیجه ارائه شده
-
دریافتفایلهای CoreMark
-
ساختار فایلهای CoreMark
-
مراحل لازم برای پیادهسازی CoreMark
-
مقایسه نهایی بین این دو benchmark
-
نتیجه جانبی مهم این آموزش
-
سخن نهایی با شرکت کنندهها!
-
چالش آخر فروردین ۹۸!
نتایج چالش خود را در همین صفحه در قسمت نظرات ثبت کنید.
ویدئو ارسالی از آقای پوریا اعتمادی در باره چالش گفته شده در آموزش
Mars (مالک تایید شده) –
Start CoreMark…
۲K performance run parameters for coremark.
CoreMark Size : 666
Total ticks : 27481
Total time (secs): 27.481000
Iterations/Sec : 43.666533
Iterations : 1200
Compiler version : IAR ARM 8032001
Compiler flags : High Speed – No Time Constraint
Memory location : STACK
seedcrc : 0xe9f5
[۰]crclist : 0xe714
[۰]crcmatrix : 0x1fd7
[۰]crcstate : 0x8e3a
[۰]crcfinal : 0x988c
Correct operation validated. See README.md for run and reporting rules.
CoreMark 1.0 : 43.666533 / IAR ARM 8032001 High Speed – No Time Constraint / STACK
۴۳٫۶۶/۱۶M = 2.72
اینم نتیجه با IAR
هردو تست تحت دمای ۲۷ درجه انجام شده و با برد دیسکاوری F407VG
با تشکر از استاد عزیز جهت تهیه این آموزش کاربردی
اسماعیل صلح خواه (مالک تایید شده) –
سلام استاد بله درسته دیدمش، فاصله تست من خیلی زیادتره البته این تست با Keil بود فرصت شد با IAR تست میکنم.
دوستان شرمنده بالا کورمارک رو اشتباها کورک مارک نوشته بودم.
اسماعیل صاح خواه (مالک تایید شده) –
میکرو کنترلر STM32f407VG
Start CoreMark
۲K performance run parameters for coremark.
CoreMark Size : 666
Total ticks : 28592
Total time (secs): 28.592000
Iterations/Sec : 41.969782
Iterations : 1200
Compiler version : MDK-ARM(Keil) 5060750
Compiler flags : -O3 -Otime
Memory location : STACK
seedcrc : 0xe9f5
[۰]crclist : 0xe714
[۰]crcmatrix : 0x1fd7
[۰]crcstate : 0x8e3a
[۰]crcfinal : 0x988c
Correct operation validated. See README.md for run and reporting rules.
CoreMark 1.0 : 41.969782 / MDK-ARM(Keil) 5060750 -O3 -Otime / STACK
نتیجه تقسیم ۴۱٫۹۶ به کلاک ۱۶ مگ = ۲٫۶۲
فقط این نتیجه کورک مارکو نتونستم تو رفرنسها پیدا کنم
—————————–
سید پیمان ذوالنوری –
سلام مهندس
بهتون تبریک میگم
شما اولین نفری هستید که نتیجه رو ثبت کردید.
نتیجه ثبت شده برای این میکرو در سایت خود شرکت ST درج شده، که ۳٫۳ کورمارک بر مگاهرتز هستش
danymogh54 (مالک تایید شده) –
با تشکر از آموزش خوبتون.
چندین تا سوال برام پیش اومده که اگر وقت کنین توضیح بدین خیلی ممنون میشم.
۱- آیا واحد FLOPS معادل DMIPS هست ولی بجای integer محاسبات float مد نظر بوده؟
۲- اگر به سایت https://www.adaptivedigital.com/dtmf برید برای اون کتابخونه مورد نظر یک سری محاسبات بر حسب MIPS روی پردازنده های مختلف نوشته شده. آیا منظور این بوده که اون کد برای اجرا به اون مقدار MIPS نیاز داره؟ میشه اون محاسبات رو برای کد هایی که خودمون هم میزنیم انجام بدیم؟ اگر بله چطوری؟ این مورد خیلی مهم هست چون خیلی از کارفرماها ،من جمله مدیر خود بنده حول این مبحث خیلی سوال میپرسند و چون قدیمی ها اسمبلی رو میفهمند همیشه این سوال رو میپرسند که فلان تابعی که نوشتی چند دستور اسمبلی شده و چقدر اجرای آن در فلان کلاک طول میکشد. کلا اگر این مبحث کلاک مورد نیاز برای هر Instruction رو باز کنید خیلی خوب میشه.
۳- فرض کنیم یک کدی رو برای cortex-m0 کامپایل کردیم و به کتابخونه تبدیل کردیم(سورس کد نداریم). با توجه به اینکه cortex های سری های بالاتر قادر هستند کد های سری های قبلی رو اجرا کنند ، آیا سرعت اجرای اون کتابخونه با فرض یکسان بودن کلاک، برای cortex-m3 یا بالاتر بیشتر میشه یا ثابت میمونه؟ (با توجه به اینکه Instruction Set ها برای cortex-m0 کامپایل شدند.)
۴- میکروی http://www.keil.com/dd/docs/datashts/atmel/at89lp_whp.pdf رو در نظر بگیرید. توی دیتاشیت نوشته بر خلاف ۸۰۵۱ های معمول، این سری حداکثر در ۲۰MHZ به ۲۰MIPS میرسه یعنی ۱MIPS/Mhz .هسته cortex-m0 هم ۰٫۹MIPS/Mhz هست. میشه نتیجه گرفت توی این مورد ، ۸۰۵۱ سرعت پردازش بیشتری داره؟ (به فرض اینکه کلاک ها یکسان و ۲۰ مگاهرتز باشند.)
۵- آیا هیچ رابطه ای بین DMIPS و MIPS وجود نداره؟ این ۳ لینک رو ببینید.
https://en.wikipedia.org/wiki/List_of_ARM_microarchitectures
https://en.wikipedia.org/wiki/Instructions_per_second
https://developer.arm.com/products/processors/cortex-m/cortex-m0
مقدار MIPS و DMIPS به ترتیب ۰٫۹ و ۰٫۸۴ ذکر شده و در سایت آرم ۰٫۸۹ ذکر شده. ایا این نزدیکی اعداد بین MIPS و DMIPS اتفاقی است ؟
بسیار ممنونم
سید پیمان ذوالنوری –
سلام مهندس
ممنونم از نظرتون.
جواب دادن سوالهای شما یه خورده زمان بره، ولی حتما تا چند روز آینده، جواب همه رو تا جایی که بشه مینویسیم
موفق باشید