کمپیوٹر سسٹمز کے سمیلیٹر: ایک مانوس فل پلیٹ فارم سمیلیٹر اور نامعلوم گھڑی کی سمت اور نشانات

کمپیوٹر سسٹم سمیلیٹر کے بارے میں مضمون کے دوسرے حصے میں، میں کمپیوٹر سمیلیٹروں کے بارے میں ایک سادہ تعارفی شکل میں بات کرنا جاری رکھوں گا، یعنی فل پلیٹ فارم سمولیشن کے بارے میں، جس کا سامنا اوسط صارف کو اکثر ہوتا ہے، اور ساتھ ہی ساتھ گھڑی کے حساب سے۔ -گھڑی کا ماڈل اور نشانات، جو ڈویلپر حلقوں میں زیادہ عام ہیں۔

کمپیوٹر سسٹمز کے سمیلیٹر: ایک مانوس فل پلیٹ فارم سمیلیٹر اور نامعلوم گھڑی کی سمت اور نشانات

В پہلا حصہ میں نے اس کے بارے میں بات کی کہ سمیلیٹر عام طور پر کیا ہیں، ساتھ ہی تخروپن کی سطحوں کے بارے میں بھی۔ اب، اس علم کی بنیاد پر، میں تھوڑا گہرائی میں غوطہ لگانے کی تجویز کرتا ہوں اور فل پلیٹ فارم سمولیشن کے بارے میں بات کرتا ہوں، نشانات کیسے جمع کیے جائیں، بعد میں ان کے ساتھ کیا کیا جائے، نیز گھڑی بہ گھڑی مائیکرو آرکیٹیکچرل ایمولیشن کے بارے میں۔

مکمل پلیٹ فارم سمیلیٹر، یا "میدان میں اکیلا جنگجو نہیں ہے"

اگر آپ ایک مخصوص ڈیوائس کے آپریشن کا مطالعہ کرنا چاہتے ہیں، مثال کے طور پر، نیٹ ورک کارڈ، یا اس ڈیوائس کے لیے فرم ویئر یا ڈرائیور لکھنا چاہتے ہیں، تو اس طرح کے آلے کو الگ سے نقل کیا جا سکتا ہے۔ تاہم، اسے باقی انفراسٹرکچر سے الگ تھلگ استعمال کرنا زیادہ آسان نہیں ہے۔ متعلقہ ڈرائیور کو چلانے کے لیے، آپ کو مرکزی پروسیسر، میموری، ڈیٹا بس تک رسائی وغیرہ کی ضرورت ہوگی۔ اس کے علاوہ، ڈرائیور کو کام کرنے کے لیے آپریٹنگ سسٹم (OS) اور نیٹ ورک اسٹیک کی ضرورت ہوتی ہے۔ اس کے علاوہ، ایک علیحدہ پیکٹ جنریٹر اور رسپانس سرور کی ضرورت ہو سکتی ہے۔

ایک مکمل پلیٹ فارم سمیلیٹر ایک مکمل سافٹ ویئر اسٹیک چلانے کے لیے ایک ماحول بناتا ہے، جس میں BIOS اور بوٹ لوڈر سے لے کر خود OS تک اور اس کے مختلف سب سسٹمز، جیسے ایک ہی نیٹ ورک اسٹیک، ڈرائیورز، اور صارف کی سطح کی ایپلی کیشنز شامل ہیں۔ ایسا کرنے کے لیے، یہ زیادہ تر کمپیوٹر ڈیوائسز کے سافٹ ویئر ماڈلز کو لاگو کرتا ہے: پروسیسر اور میموری، ڈسک، ان پٹ/آؤٹ پٹ ڈیوائسز (کی بورڈ، ماؤس، ڈسپلے) کے ساتھ ساتھ ایک ہی نیٹ ورک کارڈ۔

ذیل میں انٹیل کی جانب سے x58 چپ سیٹ کا بلاک ڈایاگرام ہے۔ اس چپ سیٹ پر ایک مکمل پلیٹ فارم کمپیوٹر سمیلیٹر کے لیے زیادہ تر درج آلات کے نفاذ کی ضرورت ہوتی ہے، بشمول IOH (ان پٹ/آؤٹ پٹ ہب) اور ICH (ان پٹ/آؤٹ پٹ کنٹرولر ہب) کے اندر، جو بلاک ڈایاگرام پر تفصیل سے نہیں دکھائے گئے ہیں۔ . اگرچہ، جیسا کہ پریکٹس سے پتہ چلتا ہے، ایسے بہت سے آلات نہیں ہیں جو سافٹ ویئر کے ذریعے استعمال نہیں کیے جاتے ہیں جسے ہم چلانے جا رہے ہیں۔ ایسے آلات کے ماڈل بنانے کی ضرورت نہیں ہے۔

کمپیوٹر سسٹمز کے سمیلیٹر: ایک مانوس فل پلیٹ فارم سمیلیٹر اور نامعلوم گھڑی کی سمت اور نشانات

اکثر، فل پلیٹ فارم سمیلیٹر پروسیسر انسٹرکشن لیول پر لاگو ہوتے ہیں (ISA، نیچے دیکھیں)۔ گزشتہ مضمون)۔ یہ آپ کو سمیلیٹر خود نسبتا تیزی سے اور سستے بنانے کی اجازت دیتا ہے۔ ISA کی سطح بھی اچھی ہے کیونکہ یہ کم و بیش مستقل رہتی ہے، اس کے برعکس، مثال کے طور پر، API/ABI لیول، جو اکثر تبدیل ہوتا ہے۔ اس کے علاوہ، ہدایات کی سطح پر عمل درآمد آپ کو نام نہاد غیر ترمیم شدہ بائنری سافٹ ویئر چلانے کی اجازت دیتا ہے، یعنی پہلے سے مرتب شدہ کوڈ کو بغیر کسی تبدیلی کے، بالکل اسی طرح جیسے اصلی ہارڈ ویئر پر استعمال کیا جاتا ہے۔ دوسرے لفظوں میں، آپ اپنی ہارڈ ڈرائیو کی ایک کاپی ("ڈمپ") بنا سکتے ہیں، اسے فل پلیٹ فارم سمیلیٹر میں ماڈل کے لیے تصویر کے طور پر بتا سکتے ہیں، اور voila! - OS اور دیگر پروگرام بغیر کسی اضافی کارروائی کے سمیلیٹر میں لوڈ ہوتے ہیں۔

سمیلیٹر کی کارکردگی

کمپیوٹر سسٹمز کے سمیلیٹر: ایک مانوس فل پلیٹ فارم سمیلیٹر اور نامعلوم گھڑی کی سمت اور نشانات

جیسا کہ اوپر ذکر کیا گیا ہے، پورے نظام کو نقل کرنے کا عمل، یعنی اس کے تمام آلات، ایک سست عمل ہے۔ اگر آپ ان سب کو بھی بہت تفصیلی سطح پر لاگو کرتے ہیں، مثال کے طور پر، مائیکرو آرکیٹیکچرل یا منطقی، تو عملدرآمد انتہائی سست ہو جائے گا۔ لیکن ہدایات کی سطح ایک مناسب انتخاب ہے اور OS اور پروگراموں کو اتنی رفتار سے کام کرنے کی اجازت دیتا ہے کہ صارف ان کے ساتھ آرام سے بات چیت کر سکے۔

یہاں سمیلیٹر کی کارکردگی کے موضوع پر بات کرنا مناسب ہوگا۔ یہ عام طور پر آئی پی ایس (ہدایات فی سیکنڈ) میں ماپا جاتا ہے، زیادہ واضح طور پر MIPS (ملین آئی پی ایس) میں، یعنی ایک سیکنڈ میں سمیلیٹر کے ذریعے پروسیسر کی ہدایات کی تعداد۔ ایک ہی وقت میں، تخروپن کی رفتار کا انحصار اس نظام کی کارکردگی پر بھی ہوتا ہے جس پر خود نقلی چلتا ہے۔ لہذا، اصل نظام کے مقابلے سمیلیٹر کی "سست رفتاری" کے بارے میں بات کرنا زیادہ درست ہو سکتا ہے۔

مارکیٹ میں سب سے زیادہ عام فل پلیٹ فارم سمیلیٹرز، جیسے QEMU، VirtualBox یا VmWare ورک سٹیشن کی کارکردگی اچھی ہے۔ ہو سکتا ہے صارف کو یہ بات بھی نظر نہ آئے کہ سمیلیٹر میں کام ہو رہا ہے۔ یہ پروسیسرز، بائنری ٹرانسلیشن الگورتھم اور دیگر دلچسپ چیزوں میں لاگو خصوصی ورچوئلائزیشن صلاحیتوں کی بدولت ہوتا ہے۔ یہ سب ایک الگ مضمون کے لیے ایک موضوع ہے، لیکن مختصراً، ورچوئلائزیشن جدید پروسیسرز کی ایک ہارڈویئر خصوصیت ہے جو سمیلیٹروں کو ہدایات کی تقلید کرنے کی اجازت نہیں دیتی ہے، بلکہ انہیں براہ راست ایک حقیقی پروسیسر پر عمل درآمد کے لیے بھیجنے کی اجازت دیتی ہے، اگر یقیناً، فن تعمیرات سمیلیٹر اور پروسیسر ایک جیسے ہیں۔ بائنری ترجمہ مہمان مشین کوڈ کا میزبان کوڈ میں ترجمہ اور اس کے بعد حقیقی پروسیسر پر عمل درآمد ہے۔ نتیجے کے طور پر، تخروپن صرف تھوڑا سا سست ہے، 5-10 بار، اور اکثر حقیقی نظام کے طور پر بھی اسی رفتار سے چلتا ہے. اگرچہ یہ بہت سے عوامل سے متاثر ہوتا ہے۔ مثال کے طور پر، اگر ہم کئی درجن پروسیسرز کے ساتھ کسی سسٹم کی تقلید کرنا چاہتے ہیں، تو رفتار فوری طور پر ان کئی درجن بار گر جائے گی۔ دوسری طرف، جدید ترین ورژنز میں سمکس جیسے سمیلیٹر ملٹی پروسیسر ہوسٹ ہارڈ ویئر کو سپورٹ کرتے ہیں اور حقیقی پروسیسر کے کورز پر نقلی کور کو مؤثر طریقے سے متوازی کرتے ہیں۔

اگر ہم مائیکرو آرکیٹیکچرل تخروپن کی رفتار کے بارے میں بات کرتے ہیں، تو یہ عام طور پر شدت کے کئی آرڈرز ہوتے ہیں، بغیر کسی نقلی کمپیوٹر پر عمل درآمد سے تقریباً 1000-10000 گنا سست۔ اور منطقی عناصر کی سطح پر عمل درآمد کئی ترتیبوں کی شدت سے سست ہے۔ لہذا، اس سطح پر ایک ایف پی جی اے کو ایمولیٹر کے طور پر استعمال کیا جاتا ہے، جو کارکردگی میں نمایاں اضافہ کر سکتا ہے۔

نیچے کا گراف ماڈل کی تفصیل پر نقلی رفتار کا تخمینہ انحصار دکھاتا ہے۔

کمپیوٹر سسٹمز کے سمیلیٹر: ایک مانوس فل پلیٹ فارم سمیلیٹر اور نامعلوم گھڑی کی سمت اور نشانات

بیٹ بائی بیٹ سمولیشن

ان کی کم رفتاری کے باوجود، مائیکرو آرکیٹیکچرل سمیلیٹر کافی عام ہیں۔ پروسیسر کے اندرونی بلاکس کا تخروپن ضروری ہے تاکہ ہر ہدایات پر عمل درآمد کے وقت کو درست طریقے سے نقل کیا جاسکے۔ یہاں غلط فہمی پیدا ہو سکتی ہے - آخر کار، ایسا لگتا ہے، کیوں نہ ہر ہدایات پر عمل درآمد کے وقت کا پروگرام بنایا جائے۔ لیکن اس طرح کا سمیلیٹر بہت غلط ہوگا، کیونکہ ایک ہی ہدایات پر عمل درآمد کا وقت کال ٹو کال سے مختلف ہوسکتا ہے۔

سب سے آسان مثال میموری تک رسائی کی ہدایت ہے۔ اگر درخواست کردہ میموری کی جگہ کیشے میں دستیاب ہے، تو عملدرآمد کا وقت کم سے کم ہوگا۔ اگر یہ معلومات کیشے میں نہیں ہے ("کیشے مس")، تو اس سے ہدایات پر عمل درآمد کا وقت بہت بڑھ جائے گا۔ اس طرح، درست تخروپن کے لیے کیشے ماڈل کی ضرورت ہے۔ تاہم معاملہ صرف کیش ماڈل تک ہی محدود نہیں ہے۔ جب پروسیسر کیشے میں نہ ہو تو میموری سے ڈیٹا کے بازیافت ہونے کا صرف انتظار نہیں کرے گا۔ اس کے بجائے، یہ اگلی ہدایات پر عمل درآمد شروع کر دے گا، ان کا انتخاب کرے گا جو میموری سے پڑھنے کے نتیجے پر منحصر نہیں ہیں۔ یہ نام نہاد "آؤٹ آف آرڈر" ایگزیکیوشن (OOO، آؤٹ آف آرڈر ایگزیکیوشن) ہے، جو پروسیسر کے بیکار وقت کو کم سے کم کرنے کے لیے ضروری ہے۔ متعلقہ پروسیسر بلاکس کی ماڈلنگ سے ہدایات پر عمل درآمد کے وقت کا حساب لگاتے وقت ان سب کو مدنظر رکھنے میں مدد ملے گی۔ ان ہدایات میں سے، یادداشت سے پڑھنے کے نتیجے کا انتظار کرتے وقت عملدرآمد کیا جاتا ہے، ایک مشروط چھلانگ آپریشن ہوسکتا ہے۔ اگر اس وقت حالت کا نتیجہ نامعلوم ہے، تو پھر پروسیسر عمل درآمد نہیں روکتا ہے، لیکن "اندازہ" لگاتا ہے، مناسب شاخ انجام دیتا ہے اور منتقلی کے مقام سے ہدایات پر عمل درآمد جاری رکھتا ہے۔ اس طرح کے بلاک، جسے برانچ پریڈیکٹر کہا جاتا ہے، کو مائکرو آرکیٹیکچرل سمیلیٹر میں بھی لاگو کیا جانا چاہیے۔

نیچے دی گئی تصویر پروسیسر کے اہم بلاکس کو دکھاتی ہے، اسے جاننا ضروری نہیں ہے، یہ صرف مائیکرو آرکیٹیکچرل نفاذ کی پیچیدگی کو ظاہر کرنے کے لیے دکھایا گیا ہے۔

کمپیوٹر سسٹمز کے سمیلیٹر: ایک مانوس فل پلیٹ فارم سمیلیٹر اور نامعلوم گھڑی کی سمت اور نشانات

ایک حقیقی پروسیسر میں ان تمام بلاکس کا آپریشن خصوصی گھڑی کے سگنلز کے ذریعے مطابقت پذیر ہوتا ہے، اور ماڈل میں بھی ایسا ہی ہوتا ہے۔ ایسے مائیکرو آرکیٹیکچرل سمیلیٹر کو سائیکل درست کہا جاتا ہے۔ اس کا بنیادی مقصد تیار کیے جانے والے پروسیسر کی کارکردگی کا درست اندازہ لگانا اور/یا کسی مخصوص پروگرام کے عمل کے وقت کا حساب لگانا ہے، مثال کے طور پر، ایک بینچ مارک۔ اگر قدریں ضرورت سے کم ہیں، تو الگورتھم اور پروسیسر بلاکس میں ترمیم کرنا یا پروگرام کو بہتر بنانا ضروری ہوگا۔

جیسا کہ اوپر دکھایا گیا ہے، گھڑی بہ گھڑی تخروپن بہت سست ہے، اس لیے اس کا استعمال صرف اس وقت ہوتا ہے جب کسی پروگرام کے آپریشن کے کچھ لمحات کا مطالعہ کیا جاتا ہے، جہاں پروگرام کے عمل کی حقیقی رفتار معلوم کرنا اور اس ڈیوائس کی مستقبل کی کارکردگی کا جائزہ لینا ضروری ہوتا ہے۔ پروٹوٹائپ نقل کیا جا رہا ہے.

اس صورت میں، ایک فنکشنل سمیلیٹر کا استعمال پروگرام کے باقی چلنے والے وقت کی نقالی کے لیے کیا جاتا ہے۔ استعمال کا یہ مجموعہ حقیقت میں کیسے ہوتا ہے؟ سب سے پہلے، فنکشنل سمیلیٹر لانچ کیا جاتا ہے، جس پر OS اور زیر مطالعہ پروگرام کو چلانے کے لیے ضروری ہر چیز لوڈ ہوتی ہے۔ سب کے بعد، ہم خود OS میں دلچسپی نہیں رکھتے ہیں، اور نہ ہی پروگرام شروع کرنے کے ابتدائی مراحل، اس کی ترتیب، وغیرہ میں. تاہم، ہم ان حصوں کو بھی نہیں چھوڑ سکتے اور فوری طور پر درمیان سے پروگرام کو انجام دینے کی طرف بڑھ سکتے ہیں۔ لہذا، یہ تمام ابتدائی مراحل ایک فنکشنل سمیلیٹر پر چلائے جاتے ہیں۔ پروگرام کو ہماری دلچسپی کے لمحے تک انجام دینے کے بعد، دو اختیارات ممکن ہیں۔ آپ ماڈل کو کلاک بائی سائیکل ماڈل سے بدل سکتے ہیں اور عملدرآمد جاری رکھ سکتے ہیں۔ سمولیشن موڈ جو ایگزیکیوٹیبل کوڈ (یعنی باقاعدہ کمپائلڈ پروگرام فائلز) استعمال کرتا ہے اسے ایگزیکیوشن ڈرون سمولیشن کہا جاتا ہے۔ یہ سب سے عام نقلی اختیار ہے۔ ایک اور نقطہ نظر بھی ممکن ہے - ٹریس سے چلنے والا تخروپن۔

ٹریس پر مبنی تخروپن

یہ دو مراحل پر مشتمل ہے۔ فنکشنل سمیلیٹر کا استعمال کرتے ہوئے یا حقیقی نظام پر، پروگرام کے اعمال کا ایک لاگ جمع کیا جاتا ہے اور فائل میں لکھا جاتا ہے۔ اس لاگ کو ٹریس کہا جاتا ہے۔ جس چیز کی جانچ کی جا رہی ہے اس پر منحصر ہے، ٹریس میں قابل عمل ہدایات، میموری ایڈریس، پورٹ نمبر، اور مداخلت کی معلومات شامل ہو سکتی ہیں۔

اگلا مرحلہ ٹریس کو "پلے" کرنا ہے، جب گھڑی بہ گھڑی سمیلیٹر ٹریس کو پڑھتا ہے اور اس میں لکھی گئی تمام ہدایات پر عمل کرتا ہے۔ آخر میں، ہمیں پروگرام کے اس ٹکڑے پر عمل درآمد کا وقت ملتا ہے، ساتھ ہی اس عمل کی مختلف خصوصیات، مثال کے طور پر، کیشے میں ہٹ کا فیصد۔

نشانات کے ساتھ کام کرنے کی ایک اہم خصوصیت عزمیت ہے، یعنی اوپر بیان کردہ طریقے سے نقلی عمل کو چلا کر، ہم بار بار ایک ہی ترتیب کو دوبارہ پیش کرتے ہیں۔ اس سے ماڈل کے پیرامیٹرز (کیشے، بفر اور قطار کے سائز) کو تبدیل کرکے اور مختلف اندرونی الگورتھم استعمال کرکے یا ان کو ٹیوننگ کرکے یہ مطالعہ کرنا ممکن ہوتا ہے کہ کوئی خاص پیرامیٹر سسٹم کی کارکردگی کو کیسے متاثر کرتا ہے اور کون سا آپشن بہترین نتائج دیتا ہے۔ یہ سب ایک حقیقی ہارڈ ویئر پروٹو ٹائپ بنانے سے پہلے ایک پروٹوٹائپ ڈیوائس ماڈل کے ساتھ کیا جا سکتا ہے۔

اس نقطہ نظر کی پیچیدگی سب سے پہلے ایپلی کیشن کو چلانے اور ٹریس جمع کرنے کے ساتھ ساتھ ٹریس فائل کے بڑے سائز میں ہے۔ فوائد میں یہ حقیقت بھی شامل ہے کہ یہ آلہ کے صرف حصے یا دلچسپی کے پلیٹ فارم کی نقل کرنا کافی ہے، جبکہ عمل درآمد کے لیے عام طور پر ایک مکمل ماڈل کی ضرورت ہوتی ہے۔

لہذا، اس مضمون میں ہم نے فل پلیٹ فارم سمولیشن کی خصوصیات کو دیکھا، مختلف سطحوں پر عمل درآمد کی رفتار، گھڑی بہ سائیکل تخروپن اور نشانات کے بارے میں بات کی۔ اگلے مضمون میں میں ذاتی مقاصد کے لیے اور بڑی کمپنیوں میں ترقی کے نقطہ نظر سے، سمیلیٹر استعمال کرنے کے لیے اہم منظرنامے بیان کروں گا۔

ماخذ: www.habr.com

نیا تبصرہ شامل کریں