X86 এবং x64 প্রসেসরের সিপিইউ নির্দেশাবলীর সূক্ষ্মতা


14

আমি কিছু টেবিল বা অনুরূপ কিছু সন্ধান করছি যা আমাকে সমাবেশ কোডটির দক্ষতা গণনা করতে সহায়তা করতে পারে।

আমি জানি যে বিট শিফটিংয়ের জন্য 1 সিপিইউ ঘড়ি লাগে, তবে আমি সত্যিই দেখছি যে কতগুলি যোগ হয় (বিয়োগটি একই হওয়া উচিত), গুণ এবং কীভাবে সম্ভবত বিভাজনের মানগুলি জানলে বিভাগের সময় গণনা করা যায়।

আমার সত্যিকারের পূর্ণসংখ্যার মানগুলি সম্পর্কে তথ্য প্রয়োজন তবে ভাসা নির্বাহের সময়টিও আপনাকে স্বাগত।


উত্তর:


10

সাধারণত, এই অপারেশনগুলির প্রতিটি পাইপলাইনের বিভিন্ন পর্যায়ে নিবন্ধগুলিতে নিবন্ধভুক্ত থাকলে তা কার্যকর করতে একই ঘড়ি চক্র গ্রহণ করে takes

বিলম্বিতা বলতে কী বোঝ? এএলইউতে একটি অপারেশন কত চক্র ব্যয় করে?

আপনি এই টেবিলটি দরকারী দেখতে পাবেন: http://www.agner.org/optimize/in تعمیر_tables.pdf

যেহেতু আধুনিক প্রসেসরগুলি সুপার স্কেলার এবং ক্রম ছাড়াই কার্যকর করতে পারে, আপনি প্রায়শই চক্র প্রতি মোট নির্দেশাবলী পেতে পারেন যা ১ এর বেশি exceed চক্র বিন্যাস)।

অনেকগুলি x86 নির্দেশাবলী জটিল হয়ে থাকলে কিছু ধাপগুলি সম্পন্ন করতে একাধিক চক্র নিতে পারে (উদাহরণস্বরূপ REP কমান্ড বা আরও খারাপ MWAIT)।


3
সমস্ত সাম্প্রতিক x86 সিপিইউগুলিতে কমপক্ষে 3 সি ল্যাটেন্সি (এবং কিছু পুরানো সিপিইউতে উচ্চতর) হয় Inte অনেকগুলি সিপিইউতে এটি সম্পূর্ণ পাইপলাইনযুক্ত, তাই প্রতি ঘড়ি প্রতি থ্রুটপুট 1, তবে আপনি কেবলমাত্র তা অর্জন করতে পারবেন যদি আপনার ফ্লাইটে তিনটি স্বতন্ত্র গুণ থাকে। (হাসওলে এফপি গুণিতকটি 5 সি ল্যাটেন্সি, 0.5c থ্রুপুট, সুতরাং থ্রুপুটটি পূরণ করার জন্য আপনার 10 টি ফ্লাইট প্রয়োজন)। বিভাগের ( divএবং idiv) এমনকি খারাপ: এটি microcoded, এবং অনেক বেশী লেটেন্সি চেয়ে addবা shr, এবং এমনকি সম্পূর্ণরূপে কোনো CPU তে pipelined। এগুলি সবই অ্যাগনার ফগের নির্দেশ সারণী থেকে সরাসরি, সুতরাং এটির সাথে যুক্ত হওয়া ভাল।
পিটার কর্ডেস


7

আউট অফ অর্ডার এক্সিকিউশন সুপার স্কেলার পাইপলাইনের এই দিনগুলিতে অ্যাসেমব্লিং কোডের দক্ষতা গণনা করা সবচেয়ে ভাল উপায় নয়। এটি প্রসেসরের ধরণ অনুসারে পৃথক হবে। এটি আগে এবং পরে উভয়ই নির্দেশাবলীতে পৃথক হবে (আপনি অতিরিক্ত কোড যুক্ত করতে পারেন এবং এটি কখনও কখনও দ্রুত চালাতে পারেন!)। কিছু অপারেশন (উল্লেখযোগ্যভাবে বিভাগ) এমনকি আরও পুরানো অনুমানযোগ্য চিপস উপর কার্যকর মৃত্যুর সময়ও হতে পারে। আসলে প্রচুর পুনরাবৃত্তির সময় নির্ধারণের একমাত্র উপায়।


আমি এটি জানি, তবে আমার এটি বাস্তব প্রকল্পে নয়, একরকম একটি মজাদার প্রোগ্রামিং প্রকল্পের প্রয়োজন।
এসটি 3

আপনার বাস্তবের জন্য প্রয়োজন বা মজাদার জন্য এই প্রসেসরের লাইনের উত্তর পরিবর্তন করে না change আপনি কি এর পরিবর্তে আরও বেশি ডিস্ট্রিমেন্টিক প্রসেসরের, যেমন একটি প্রোপেলার চিপ হিসাবে স্যুইচ করার কথা বিবেচনা করেছেন?
ব্রায়ান নোব্লাচ

3
এমনকি কোনও স্কেলারের সাথেও, অর্ডার প্রয়োগকারী শাখার ভুল-অনুমান এবং ক্যাশে মিস করা রান সময় পরিবর্তনের কারণ হতে পারে।
পল এ। ক্লেটন

নিখুঁতভাবে সিপিইউ-বাউন্ড স্টাফের জন্য (কোনও ক্যাশে মিস হয় না, কোনও শাখার ভুল ধারণা নেই), সিপিইউ আচরণটি যথেষ্ট বিশদে বোঝা যায় যে স্থির বিশ্লেষণ প্রায়শই अंदाजे করে দিতে পারে যে কোনও পুনরুক্তিটি একটি নির্দিষ্ট সিপিইউতে লুপ গ্রহণ করবে (যেমন ইন্টেল হাসওয়েল) almost উদাহরণস্বরূপ এই এসও উত্তরটি দেখুন যেখানে সংকলক-উত্পাদিত এএসএমটির দিকে তাকানো আমাকে ব্যাখ্যা করুন যে কেন শাখাগুলি সংস্করণটি অপার স্যান্ডিব্রিজে সিপিইউতে সিএমওভ সংস্করণের তুলনায় প্রায় 1.5x দ্রুত গতিতে ছুটেছিল, তবে আমার স্কাইলেকে খুব কাছে।
পিটার কর্ডেস

পারফরম্যান্সের কারণে যদি আপনি হাত থেকে asm লিখছেন তবে ইন্টেল এবং এএমডি সিপিইউগুলিতে বিলম্ব এবং থ্রুটপুট বাধাগুলি সন্ধান করা আসলে কার্যকর। এটি শক্ত, যদিও, এবং কখনও কখনও এএমডির জন্য সর্বোত্তম যা ইন্টেলের পক্ষে সর্বোত্তম নয়।
পিটার কর্ডেস

4

আপনি ইন্টেল সফটওয়্যার বিকাশকারী ম্যানুয়ালগুলিতে ইন্টেল সিপিইউতে তথ্য পেতে পারেন । উদাহরণস্বরূপ ল্যাটেন্সিটি একটি পূর্ণসংখ্যা সংযোজনের জন্য 1 চক্র এবং পূর্ণসংখ্যার গুণনের জন্য 3 টি চক্র।

আমি গুণণের বিষয়ে জানি না, তবে আমি সর্বদা একটি চক্রের যোগ করার আশা করি।


একটি চক্র, যখন এটি "মুক্ত" (সমান্তরালভাবে পাইপলাইনগুলি সঠিকভাবে লাইন করার সময় থাকে) ব্যতীত বা ক্যাশে মিসের কারণে বেশি সময় নেয় except :-)
ব্রায়ান নোব্লাউচ

2
বর্তমানে (2018) এই তথ্যটি পরিশিষ্ট সি-তে 241566 নথিটির "ইন্সট্রাকশন লেটেন্সি অ্যান্ড থ্রুপুট" নামে উপলব্ধ রয়েছে "ইন্টেল ®৪ এবং আইএ -32 আর্কিটেকচার অপ্টিমাইজেশন রেফারেন্স ম্যানুয়াল"
উত্তরটিতে লিঙ্কিত
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.