ইঞ্জিনগুলি কেন একই স্থাপত্যের নতুন প্রসেসরের জন্য অনুকূলিত হওয়া প্রয়োজন?


39

যখন একটি নতুন প্রসেসর প্রজন্ম প্রকাশিত হয়, বেশিরভাগ ওয়েবসাইটগুলি জানায় যে গেম ইঞ্জিন এবং প্রোগ্রামগুলি নতুন হার্ডওয়্যারের জন্য অনুকূলিত হওয়া দরকার। আমি কেন পুরোপুরি বুঝতে পারছি না। একটি প্রসেসরের সাধারণত একটি আর্কিটেকচার থাকে যা এটি কোন ধরণের নির্দেশিকা সেট ব্যবহার করে তা সংজ্ঞায়িত করে। আজকাল আমরা সবাই যেটি ব্যবহার করি তা হল amd_x86_64। সমস্ত প্রসেসর যদি একই আর্কিটেকচার ব্যবহার করে তবে কেন কোনও প্রোগ্রাম বা সংকলক আপডেট করার দরকার হবে? নতুন প্রসেসরের পাইপলাইনের সাথে অবশ্যই এমন বৈশিষ্ট্য রয়েছে যা মেশিন কোডটি কার্যকর করার জন্য অনুকূল করে, তবে কেন স্থাপত্য না থাকলে মেশিন কোডটি কেন নিজেরাই পরিবর্তন করতে হবে?


মন্তব্যগুলি বর্ধিত আলোচনার জন্য নয়; এই কথোপকথন চ্যাটে সরানো হয়েছে ।
জোশ

14
"দরকার" একটি ভুল শব্দ, এবং সত্যের চেয়ে বেশি বিপণন, যেমন উইন্ডোজের একটি নির্দিষ্ট নতুন সিপিইউ জেনারেশনকে সমর্থন করা প্রয়োজন (বা উইন্ডোজ of-এর ক্ষেত্রে হয় না, যা নীতিগতভাবে নিখুঁতভাবে কাজ করবে) যেমন রাইজেনের সাথে জরিমানা, প্রয়োজনের চেয়ে 3-4% বেশি পাওয়ার ব্যবহার ব্যতীত)। এই টিউনিংটি সর্বাধিক কাছাকাছি হয়ে সিপিইউর বাইরে থেকে আরও কিছুটা চেপে ধরার চেষ্টা করা। বাস্তবিকভাবে, আপনি বিভিন্ন সময় নির্ধারণের কারণে এবং কয়েকটি নতুন নির্দেশাবলীর কারণে অ-সঙ্কোচিত উদাহরণগুলিতে সামগ্রিক 1-2% অর্জন করতে সক্ষম হতে পারেন।
দামন

2
কেবলমাত্র দুটি প্রসেসর একই ক্রিয়াকলাপ সম্পাদন করতে পারে যার অর্থ এই নয় যে উভয় প্রসেসরের উপর অপারেশনগুলির একই পারফরম্যান্স রয়েছে ...
মেহরদাদ

স্ট্যাক ওভারফ্লোতে আমার সম্পর্কিত একটি প্রশ্ন দেখুন: এমটিউন আসলে কীভাবে কাজ করে?
মার্চ ২৩7777

উত্তর:


54

কারণ একই আর্কিটেকচারের বিভিন্ন প্রজন্মের বিভিন্ন নির্দেশের সেট থাকতে পারে

উদাহরণস্বরূপ, স্ট্রিমিং সিমডি এক্সটেনশনগুলি সম্ভবত সর্বাধিক পরিচিত x86 নির্দেশিকা সেট, তবে এখনও, এবং কেবলমাত্র একটি x86 আর্কিটেকচার থাকার পরেও রয়েছে এসএসই, এসএসই 2, এসএসই 3 এবং এসএসই 4।

এই প্রজন্মের প্রত্যেকটিতেই নতুন নির্দেশাবলী অন্তর্ভুক্ত থাকতে পারে যা নির্দিষ্ট ক্রিয়াকলাপ সম্পাদনের দ্রুত উপায় সরবরাহ করে। গেমগুলির সাথে প্রাসঙ্গিক এমন একটি উদাহরণ হতে পারে ডট পণ্য নির্দেশাবলী।

সুতরাং যদি কোনও গেম ইঞ্জিন কোনও স্থাপত্যের পূর্ববর্তী প্রজন্মের জন্য সংকলিত হয়, তবে এটি আরও নতুন নির্দেশাবলীর জন্য সমর্থন করবে না। তেমনি, আরও নতুন নির্দেশাবলীর জন্য ইঞ্জিনটি অপ্টিমাইজ করা প্রয়োজন হতে পারে; উদাহরণস্বরূপ, এসএসই 4-এ ডট পণ্য নির্দেশাবলীর জন্য সমর্থন রয়েছে যা অ্যারে অফ স্ট্রাক্ট ডেটাতে কাজ করে। এই নতুন নির্দেশাবলীর সুবিধা নিতে পারে এমন একটি অপ্টিমাইজেশন হ'ল আপনার ডেটা বিন্যাসটিকে অ্যারে অফ স্ট্রাক্টগুলিতে পরিবর্তন করা।


1
@ পানজারক্রিসিস - সম্পাদনা পরামর্শের জন্য আপনাকে ধন্যবাদ। পরিষ্কার হতে হবে: মূল প্রশ্নটি আপনার নিজের কোড সম্পর্কে নয়, এটি ইঞ্জিন কোড সম্পর্কে ছিল, সুতরাং "নিজের কোডটি অপ্টিমাইজ করুন" একটি ভাল সম্পাদনার পরামর্শ নয়। যাইহোক, এটি হাইলাইট করেছিল যে আমার স্পষ্ট করে বলা দরকার যে যখন আমি "অনুকূলিতকরণ" বলছিলাম তখন আমি "ইঞ্জিন কোডটি অনুকূলিতকরণ" বলতে চাইছিলাম, সুতরাং আমি এটি সম্পাদন করার জন্য সম্পাদনা করেছি।
ম্যাক্সিমাস মিনিমাস

37

ম্যাক্সিমাসের উত্তরটি সঠিক, আমি কেবল গল্পটির আরও একটি অংশ দিতে চাই:

হার্ডওয়্যার নিজেই এমনভাবে পরিবর্তিত হয় যাতে আপনাকে নতুন কোড চালু করা নির্দেশাবলী বিবেচনা না করে আপনার কোড কীভাবে পরিবর্তন করতে হবে।

  • ক্যাশের পরিমাণ বৃদ্ধি বা হ্রাস হওয়ার অর্থ আপনাকে ক্যাশে অপ্টিমাইজেশন / ক্যাশে অবৈধকরণ সম্পর্কিত সমস্যা সম্পর্কে কম বা বেশি চিন্তা করতে হবে। আরও ক্যাশে অর্থ ছোট ডেটার সাথে আপনি পারফরম্যান্সের উদ্বেগের সাথে ডেটাটি সামঞ্জস্যপূর্ণ নিশ্চিত করার দিকে কম মনোযোগ দিতে পারেন। কম ক্যাশে মানে এটি কোনও সমস্যা হতে পারে এবং খুব সামান্য ক্যাশে মানে কিছু বড় ডেটা স্ট্রাকচার এটি কোনওভাবেই বিবেচনা করে না।

  • ক্যাশের নতুন স্তরের অর্থ হল আপনি কীভাবে আরও বড় সেট ডেটা (এল 1, বনাম এল 2, বনাম এল 3 বনাম এল 4) কীভাবে সংগঠিত করবেন সে সম্পর্কে আপনার আরও চিন্তাভাবনা করা দরকার।

  • আরও কোরের অর্থ হল আপনি কীভাবে আরও বেশি করে মাল্ট থ্রেড অ্যাপ্লিকেশনগুলিতে যাচ্ছেন এবং একাধিক প্রক্রিয়া পরিবেশে আপনার অ্যাপ্লিকেশন কীভাবে স্কেল হয় সে সম্পর্কে আপনাকে ভাবতে হবে।

  • দ্রুততর ঘড়ির অর্থ আপনার সিস্টেমের একটি বাধা হিসাবে সিপিইউ গণনার গতি সম্পর্কে আপনার যত বেশি চিন্তা করা দরকার তার চেয়ে বেশি মেমরি ল্যাটেন্সি সম্পর্কে আপনার চিন্তাভাবনা শুরু করা উচিত।

  • কোনও সিস্টেমে এফপিইউগুলির সংখ্যা আর প্রতি কোর পূর্বে পূর্ণসংখ্যার ALU এর সাথে আর মেলে না (এএমডি এর মতো আর্কিটেকচার রয়েছে / আছে)।

  • আমার অপারেশন গণনা করতে যে ঘড়ির চক্র লাগে এটি আমার সংখ্যা হ্রাস পেয়েছে বা বৃদ্ধি পেয়েছে।

  • উপলব্ধ রেজিস্টারের সংখ্যা পরিবর্তিত হয়েছে।

এগুলির সকলেরই একই প্রোগ্রামগুলির উপর সত্যিকারের পারফরম্যান্স প্রভাব রয়েছে যা ইতিবাচক বা নেতিবাচক একই আইএসএ সহ পূর্ববর্তী হার্ডওয়্যারটিতে অন্তর্নিহিত আর্কিটেকচার সম্পর্কে ধারণা তৈরি করেছিল।


"ক্যাশের স্তর বৃদ্ধি বা হ্রাসের অর্থ আপনাকে ক্যাশে সংহতি সম্পর্কে কম চিন্তা করা দরকার" "- কার্যত কোনও সিপিইউ ক্যাশে সুসংগত। আপনি কি মিথ্যা ভাগ করে নেওয়ার অর্থ? এমনকি কার্যত কোনও সিপিইউ-লাইন প্রায় সর্বদা
B৪

1
ম্যাকিয়েজ কেবল ক্যাশে সংহতি সম্পর্কে আপনার বক্তব্য নিচ্ছিলেন :) আপনার সম্ভবত "ক্যাশে অপ্টিমাইজেশন" বা কিছু বোঝানো হয়েছিল। ক্যাশে সুসংবদ্ধতা হ'ল এন স্বতন্ত্র ক্যাশের উপস্থিতিতে এমনকি যদি সফ্টওয়্যারটির কাছে স্বচ্ছতার সাথে মেমরির ধারাবাহিক দৃষ্টিভঙ্গি রাখার ক্ষমতা থাকে । এটি আকারে সম্পূর্ণ orthogonal। টিবিএইচ বিবৃতিটি সত্যই প্রাসঙ্গিক নয় তবে আপনার উত্তর (বিশেষত 5 এবং 6 পয়েন্ট) গৃহীত আইএমওর তুলনায় প্রশ্নটিকে আরও ভালভাবে সম্বোধন করছে :) সম্ভবত আর্কিটেকচার এবং ইউ-আর্কিটেকচারের মধ্যে পার্থক্যের উপর চাপ দেওয়া এটিকে আরও প্রকট করে তুলবে।
মার্গারেট ব্লুম

4
"গুণমানের চেয়ে অতিরিক্ত সময় গ্রহণের মতো, যেখানে আজ আধুনিক ইন্টেল এবং এএমডি সিপিএস-তে এটি একই পরিমাণ সময় নেয়" এটি সমস্ত সত্য নয়। পাইপলাইনযুক্ত আর্কিটেকচারগুলিতে আপনাকে বিলম্বিতা (যখন ফলাফল প্রস্তুত হবে) এবং থ্রুপুট (আপনি চক্র প্রতি কতজন করতে পারেন) এর মধ্যে পার্থক্য করতে হবে। আধুনিক ইন্টেল প্রসেসরগুলিতে ইন্ট সংযোজন 4 এর একটি থ্রুটপুট এবং 1 এর প্রক্ষেপণ রয়েছে Multi গুণিতের মাধ্যমে থ্রুটপুট 1 এবং ল্যাটেন্সি 3 (বা 4) রয়েছে। এই প্রতিটি জিনিসপত্রের সাথে পরিবর্তিত হয় এবং অপ্টিমাইজেশন প্রয়োজন। উদাহরণস্বরূপ pdepইন্টেলের উপর 1 চক্র লাগে তবে রাইজেনে 6 টি লাগে তাই এটি রাইজেনে ব্যবহার করতে না পারে।
ক্রিস্টোফ

2
@ ক্লিয়ারার আমি জানি আমরা এখানে সিপিইউ সম্পর্কে কথা বলছি, তবে আপনি কখনও জিপিইউ-র জন্য প্রোগ্রাম করেননি? একই কোডটি পারফরম্যান্সের ক্ষেত্রে এমন বন্যপ্রাণীর সাথে বিভিন্ন ফলাফল তৈরি করে যে প্রায়শই আপনি আসলে CUDA তে হার্ডওয়্যার ক্ষমতা বিবেচনায় নিতে বাধ্য হন । আমি এখান থেকেই এখানে এসেছি, ক্যাশে আকার (ভাগ করা মেমরি, পরিচালিত এল 1 ক্যাশে) কীভাবে আপনি CUDA তে কোনও কিছুর কোড কোড করবেন তা বিবেচনায় নেওয়া উচিত।
ওপা

2
@ ক্রিসটফ সঠিক। আপনি যে বেঞ্চমার্কটি সংযুক্ত করছেন এটি একটি অ্যারের উপরে লুপের জন্য c[i] = a[i] OP b[i](অর্থাত্ 2 লোড এবং অপারেশন প্রতি 1 স্টোর) তাই সময়গুলি খুব কম কম্পিউটেশনাল তীব্রতার কারণে মেমরি ব্যান্ডউইদথের দ্বারা প্রাধান্য পায়। অ্যারে আকারটি এতটুকু IDK দেখানো হয় না যদি এটি L1D- তে ফিট করে। ( gcc4.9 -Ofastখুব সম্ভবত এই লুপগুলি স্বয়ংক্রিয়ভাবে ভেক্টরাইজড করা হয়েছে, সুতরাং আপনি জটিল পূর্ণসংখ্যার কোডের অংশ হিসাবে সাধারণ স্কেলারের ক্রিয়াকলাপের ব্যয়ও মাপছেন না)। এই পৃষ্ঠার প্রথম লাইনটি গুরুত্বপূর্ণ: দরকারী প্রতিক্রিয়া থেকে জানা গেছে যে এর মধ্যে কয়েকটি ব্যবস্থা গুরুতরভাবে ত্রুটিযুক্ত। একটি বড় আপডেট চলছে
পিটার কর্ডস

2

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

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

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.