assembly - আধুনিক সুপারক্যালার প্রসেসরগুলির ক্রিয়াকলাপগুলির জন্য কী কী বিবেচনাগুলি পূর্বাভাস দেওয়ার বিষয়ে যায় এবং কীভাবে আমি সেগুলি হাতে হাতে গণনা করতে পারি?



x86-64 pipeline (1)

আমি হাত দিয়ে ভবিষ্যদ্বাণী করতে সক্ষম হতে চাই ঠিক কতক্ষণ স্বেচ্ছাচারিত গাণিতিক (যেমন কোনও শাখা বা স্মৃতি নয়, যদিও এটি খুব ভাল হবে) x86-64 বিধানসভা কোডটি একটি বিশেষ স্থাপত্য দেওয়া হবে, নির্দেশ নির্দেশ পুনর্নির্মাণ, মহাকাশ বর্ণনাকে গ্রহণ করে, বিলম্ব, সিপিআই ইত্যাদি

এটি অর্জনের জন্য নিয়মগুলি কী / বর্ণনা করতে হবে?

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

সর্বনিম্ন, আমি (1) নিশ্চিত হয়ে যাচ্ছি যে প্রতিটি নিয়ম সঠিক কিনা বা অন্যথায় প্রতিটি নিয়মের একটি সঠিক বিবৃতি, এবং (2) আমি যে কোনও নিয়ম ভুলে গিয়েছি তার একটি তালিকা।

  • বর্তমান চক্র থেকে ইন-অর্ডার শুরু করে এবং পুনঃক্রমের বাফার আকারের চেয়ে অনেক বেশি এগিয়ে প্রতিটি চক্র যতটা সম্ভব নির্দেশিত হয় are
  • প্রদত্ত চক্রের উপর একটি নির্দেশ জারি করা যেতে পারে যদি:
    • এর অপারেশনগুলিকে প্রভাবিত করে এমন কোনও নির্দেশিকা এখনও কার্যকর করা হচ্ছে না। এবং:
    • যদি এটি কোনও ফ্লোটিং-পয়েন্ট নির্দেশিকা থাকে তবে প্রতিটি ভাসমান-পয়েন্ট নির্দেশ জারি হওয়ার আগেই (ভাসমান-পয়েন্ট নির্দেশাবলীর স্থির নির্দেশাবলীর পুনঃ-ক্রম থাকে)। এবং:
    • সেই চক্রটিতে সেই নির্দেশের জন্য একটি কার্যকরী ইউনিট উপলব্ধ। প্রতিটি (?) ফাংশনাল ইউনিট পাইপলাইনযুক্ত, যার অর্থ এটি প্রতি চক্রের জন্য 1 টি নতুন নির্দেশ গ্রহণ করতে পারে, এবং প্রদত্ত ফাংশন শ্রেণির সিপিআইয়ের জন্য মোট কার্যকরী ইউনিটের সংখ্যা 1 / সিপিআই (এখানে addps : সম্ভবতঃ addps এবং subps ব্যবহার করে) একই ক্রিয়ামূলক ইউনিট? আমি এটি কীভাবে নির্ধারণ করব?)। এবং:
    • সুপারসালাকার প্রস্থের চেয়ে কম (সাধারণত 4 ) নির্দেশাবলীর সংখ্যা ইতিমধ্যে এই চক্রটি জারি করা হয়েছে।
  • যদি কোনও নির্দেশনা জারি করা না যায়, প্রসেসরটি কেবল কোনও স্টলকে "স্টল" নামক শর্ত জারি করে না।

উদাহরণ হিসাবে, নিম্নলিখিত উদাহরণ কোডটি বিবেচনা করুন (যা ক্রস-প্রোডাক্টের গণনা করে):

shufps   xmm3, xmm2, 210
shufps   xmm0, xmm1, 201
shufps   xmm2, xmm2, 201
mulps    xmm0, xmm3
shufps   xmm1, xmm1, 210
mulps    xmm1, xmm2
subps    xmm0, xmm1

হাসওলের জন্য বিলম্বিত হওয়ার পূর্বাভাস দেওয়ার আমার প্রচেষ্টাটি এরকম দেখাচ্ছে:

; `mulps`  Haswell latency=5, CPI=0.5
; `shufps` Haswell latency=1, CPI=1
; `subps`  Haswell latency=3, CPI=1

shufps   xmm3, xmm2, 210   ; cycle  1
shufps   xmm0, xmm1, 201   ; cycle  2
shufps   xmm2, xmm2, 201   ; cycle  3
mulps    xmm0, xmm3        ;   (superscalar execution)
shufps   xmm1, xmm1, 210   ; cycle  4
mulps    xmm1, xmm2        ; cycle  5
                           ; cycle  6 (stall `xmm0` and `xmm1`)
                           ; cycle  7 (stall `xmm1`)
                           ; cycle  8 (stall `xmm1`)
subps    xmm0, xmm1        ; cycle  9
                           ; cycle 10 (stall `xmm0`)

সম্পর্কিত: প্রতিটি সমাবেশ নির্দেশের জন্য কতগুলি সিপিইউ চক্রের প্রয়োজন? প্রতি নির্দেশের ভিত্তিতে থ্রুপুট বনাম বিলম্বিতা এবং এটি কীভাবে একাধিক নির্দেশাবলীর অনুক্রমের অর্থ কী তা সম্পর্কে একটি ভাল পরিচয়।

একে স্ট্যাটিক (পারফরম্যান্স) বিশ্লেষণ বলা হয় । উইকিপিডিয়া বলেছে ( https://en.wikipedia.org/wiki/List_of_performance_analysis_tools ) যে এএমডির এএমডি কোডএক্সএল-তে একটি "স্ট্যাটিক কার্নেল বিশ্লেষক" রয়েছে (অর্থাত গণ্য কার্নেলগুলির জন্য, ওরফে লুপগুলি রয়েছে)। আমি কখনই চেষ্টা করে দেখিনি।

স্যান্ডিব্রিজ-পরিবার সিপিইউগুলিতে কীভাবে লুপগুলি পাইপলাইন দিয়ে যাবে তার বিশ্লেষণের জন্য ইন্টেলের একটি নিখরচায় সরঞ্জাম রয়েছে: আইএসিএ কী এবং আমি কীভাবে এটি ব্যবহার করব?

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

স্থিতিশীল বিশ্লেষণ প্রায়শই বেশ ভাল, তবে অবশ্যই পারফরম্যান্স কাউন্টার সহ প্রোফাইল লিখে পরীক্ষা করে দেখুন। দেখুন x86 এর এমওভি কি সত্যিই "মুক্ত" হতে পারে? আমি কেন এটিকে পুনরুত্পাদন করতে পারি না? একটি মাইক্রোআরকিটেকচারাল বৈশিষ্ট্য তদন্ত করার জন্য একটি সাধারণ লুপ প্রোফাইল করার উদাহরণ হিসাবে।

প্রয়োজনীয় পড়া:

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

তার মাইক্রোয়ার্ক গাইডের পরবর্তী অধ্যায়গুলিতে নেপালেম, স্যান্ডিব্রিজ, হাসওয়েল, কে 8 / কে 10, বুলডোজার এবং রিজেনের মতো সিপিইউগুলিতে পাইপলাইনগুলির বিবরণ রয়েছে। (এবং অ্যাটম / সিলভারমন্ট / জাগুয়ার)।

অ্যাগনার ফাগের নির্দেশাবলী সারণী (স্প্রেডশিট বা পিডিএফ) সাধারণত নির্দেশের ল্যাটেন্সি / থ্রুপুট / এক্সিকিউশন-পোর্ট ব্রেকডাউনগুলির জন্য সর্বোত্তম উত্স।

ডেভিড ক্যান্টারের মাইক্রোয়ার্ক অ্যানালাইসিস ডকগুলি ডায়াগ্রাম সহ খুব ভাল। যেমন https://www.realworldtech.com/sandy-bridge/ , https://www.realworldtech.com/haswell-cpu/ , এবং https://www.realworldtech.com/bulldozer/

এক্স 86 ট্যাগ উইকিতে অন্যান্য পারফরম্যান্স লিঙ্কগুলিও দেখুন।

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

ইনটেল পরিভাষায় :

  • "ইস্যু" এর অর্থ হ'ল মূলটির বাইরে থাকা অর্ডারের অংশে একটি উওপ প্রেরণ করা; নিবন্ধ-নামকরণের পাশাপাশি, এটি সামনের-শেষের শেষ পদক্ষেপ। ইস্যু / পুনর্নামকরণের মঞ্চটি প্রায়শই পাইপলাইনের সংকীর্ণ বিন্দু হয়, উদাহরণস্বরূপ কোর 2 থেকে ইন্টেলের উপর 4-প্রশস্ত। (পরে হ্যাসওয়েল এবং বিশেষত স্কাইলকের মতো উর্চগুলি প্রায়শই কিছু বাস্তব কোডের সাথে খুব কাছাকাছি আসে, এসকেএল এর উন্নত ডিকোডার এবং ইউওপ-ক্যাশে ব্যান্ডউইদথ, পাশাপাশি ব্যাক-এন্ড এবং ক্যাশে ব্যান্ডউইথ উন্নতিগুলির জন্য ধন্যবাদ)) এটি ফিউজড-ডোমেন উফস : মাইক্রো-ফিউশন আপনাকে ফ্রন্ট-এন্ডের মাধ্যমে 2 টি উপ পাঠাতে দেয় এবং কেবল একটি আরওবি এন্ট্রি নিতে পারে। (আমি স্কাইলেকে এমন একটি লুপ তৈরি করতে সক্ষম হয়েছি যা প্রতি ঘড়িতে unf টি অব্যবহৃত-ডোমেন উপ ধরে রাখে )। এছাড়াও দেখুন http://blog.stuffedcow.net/2013/05/measuring-rob-capacity/ পুনরায়: অর্ডার অফ উইন্ডো আকার।

  • "প্রেরণ" অর্থ শিডিয়ুলার একটি এক্সিকিউশন পোর্টে একটি ইউওপ প্রেরণ করে। সমস্ত ইনপুট প্রস্তুত হওয়ার সাথে সাথেই এটি ঘটবে এবং সম্পর্কিত এক্সিকিউশন পোর্ট উপলব্ধ। X86 উফ ঠিক কিভাবে নির্ধারিত হয়? । শিডিউলিং "অব্যবহৃত" ডোমেনে ঘটে; মাইক্রো-ফিউজড উওপগুলি ওও শিডিউলারে (ওরফে রিজার্ভেশন স্টেশন, আরএস) আলাদাভাবে ট্র্যাক করা হয়।

অন্যান্য কম্পিউটার-আর্কিটেকচার সাহিত্যের প্রচুর পরিমাণে এই শব্দগুলি বিপরীত অর্থে ব্যবহার করে তবে এটি পরিভাষাটি আপনি ইন্টেলের অপ্টিমাইজেশান ম্যানুয়ালটিতে পাবেন এবং হার্ডওয়্যার পারফরম্যান্স কাউন্টারগুলির নাম যেমন uops_issued.any বা uops_dispatched_port.port_5

x86-64 বিধানসভা কোডটি নির্বিচারে গাণিতিক গণিতটি কত সময় নেবে

এটি ওও ও এক্সিকিউটির কারণে আশেপাশের কোডের উপরও নির্ভর করে

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

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

একটি শর্ট ব্লকের জন্য বিশ্লেষণ করার জন্য তিনটি প্রধান মাত্রা রয়েছে

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

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

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

    সিপিআইয়ের দিকে তাকানো যথেষ্ট নয় ; দুটি সিপিআই = 1 নির্দেশাবলী একই এক্সিকিউশন পোর্টের জন্য প্রতিযোগিতা বা নাও করতে পারে। যদি তারা না করে তবে তারা সমান্তরালভাবে সম্পাদন করতে পারে। উদাহরণস্বরূপ হাসওয়েল কেবল পোর্ট 0 (5 সি ল্যাটেন্সি, 1 সি psadbw , অর্থাৎ সিপিআই = 1) এ psadbw চালাতে পারে তবে এটি এককটি উওপ তাই 1 psadbw + 3 psadbw মিশ্রিত নির্দেশাবলী প্রতি ঘড়িতে 4 টি নির্দেশনা বজায় রাখতে পারে। ইন্টেল সিপিইউতে 3 টি পৃথক বন্দরগুলিতে ভেক্টর এএলইউ রয়েছে, কিছু অপারেশনগুলি সমস্ত 3 (যেমন বুলিয়ান) এবং কিছুগুলি কেবল একটি বন্দরে প্রতিলিপি করা হয়েছে (উদাহরণস্বরূপ স্কাইলেকের আগে স্থানান্তরিত)।

কখনও কখনও আপনি বেশ কয়েকটি ভিন্ন কৌশল নিয়ে আসতে পারেন, একটি সম্ভবত কম বিলম্বিত হতে পারে তবে আরও উওর দামি। একটি ক্লাসিক উদাহরণ imul eax, ecx, 10 (1 ইউওপ, ইন্টেলের 3 সি ল্যাটেন্সি) বনাম lea eax, [rcx + rcx*4] / এ্যাক্স, ইক্স (2 উফস, 2 সি ল্যাটেন্সি) এর মতো ধ্রুবক দ্বারা গুণ করছে। আধুনিক সংকলকগণ 2 টি এলইএ বনাম 1 আইএমএল বাছাই করার প্রবণতা রয়েছে, যদিও এটি কেবলমাত্র একটি একক নির্দেশ দিয়ে কাজটি না করতে পারলে 3.7 টি পর্যন্ত আইএমএল পছন্দসই হয়।

দেখুন কোন অবস্থানে বা তার চেয়ে নীচে সেট বিট গণনা করার কার্যকর উপায় কী? কোনও ফাংশন বাস্তবায়নের কয়েকটি ভিন্ন উপায়ে স্থির বিশ্লেষণের উদাহরণ হিসাবে।

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

প্রতিটি (?) ক্রিয়ামূলক ইউনিট পাইপলাইনযুক্ত

ডিভাইডারটি সাম্প্রতিক সিপিইউগুলিতে পাইপলাইনযুক্ত তবে পুরোপুরি পাইপলাইনযুক্ত নয়। (এফপি বিভাজন একক-উওপ, যদিও, আপনি কয়েক ডজন mulps / addps সাথে মিশ্রিত করে একটি divps যদি divps হয় না তবে ফ্লোটিং পয়েন্ট বিভাজনে ভাসমান পয়েন্টের গুণফল rcpps + একটি নিউটন পুনরাবৃত্তি খারাপ থ্রুপুট এবং একই বিলম্ব সম্পর্কে।

বাকি সমস্ত কিছুই মূলধারার ইন্টেল সিপিইউতে সম্পূর্ণরূপে পাইপলাইনযুক্ত; একক ইউওপের জন্য বহু-চক্র (পারস্পরিক) থ্রুপুট। ( shl eax, cl মতো পরিবর্তনশীল-গণনা পূর্ণসংখ্যার শিফট, shl eax, cl তাদের 3 উফের জন্য কম-প্রত্যাশিত থ্রুপুট থাকে কারণ তারা পতাকা-মার্জিং উফগুলির মাধ্যমে নির্ভরতা তৈরি করে। তবে আপনি যদি কোনও add বা কোনও কিছু দিয়ে FLAGS এর মাধ্যমে সেই নির্ভরতাটি ভাঙেন add আপনি আরও ভাল থ্রুপুট এবং বিলম্ব পেতে পারেন।)

রিজেনের আগে এএমডি-তে, পূর্ণসংখ্যা গুণকটি কেবলমাত্র আংশিক পাইপলাইনযুক্ত। উদাহরণস্বরূপ, বুলডোজারের imul ecx, edx কেবল 1 টি ইউওপ, তবে 4 সি ল্যাটেন্সি সহ 2 সি থ্রুটপুট সহ।

শিওন ফি (কেএনএল) এর কিছু না-পুরোপুরি-পাইপলাইনযুক্ত শফল নির্দেশাবলী রয়েছে, তবে এটি সামনের দিকে (নির্দেশের ডিকোড) নষ্ট করে না, পিছনের প্রান্তে নয়, এবং একটি ছোট বাফার আছে + ওওও এক্সিকিউটিটি পিছনে লুকানোর ক্ষমতা রাখে - শেষ বুদবুদ।

যদি এটি কোনও ফ্লোটিং-পয়েন্ট নির্দেশিকা থাকে তবে প্রতিটি ভাসমান-পয়েন্ট নির্দেশ জারি হওয়ার আগেই (ভাসমান-পয়েন্ট নির্দেশিকাগুলিতে স্থির নির্দেশ পুনরায় অর্ডার দেওয়া থাকে)

না।

আপনি এটি পড়তে পারেন সিলভারমন্টের জন্য, যা এফপি / সিমডের জন্য ওও এক্সিকিউটিভ করে না, কেবল পূর্ণসংখ্যা (ছোট ~ 20 ইউওপ উইন্ডো সহ)। হয়তো কিছু এআরএম চিপসও এর মতো, নিওনের জন্য সহজ শিডিয়ুলার সহ? আমি এআরএম এর তথ্যাদি সম্পর্কে বিস্তারিত জানি না।

মূলধারার বিগ-কোর মাইক্রো আর্কিটেকচারগুলি যেমন পি 6 / এসএনবি-পরিবার, এবং সমস্ত এএমডি ওও চিপস, সিডিডি এবং এফপি নির্দেশিকাগুলির জন্য ওটিও এক্সিকিউর হিসাবে একই কাজ করে। এএমডি সিপিইউগুলি একটি পৃথক শিডিয়ুলার ব্যবহার করে, তবে ইন্টেল একটি ইউনিফাইড শিডিয়ুলার ব্যবহার করে তাই বর্তমানে পূর্ণাঙ্গ বা এফপি কোডে আইএলপি সন্ধানের জন্য এটির পুরো আকারটি প্রয়োগ করা যেতে পারে, বর্তমানে যে কোনও চলমান রয়েছে।

এমনকি সিলভারমন্ট-ভিত্তিক নাইটস ল্যান্ডিং (সিওন ফি-তে) সিমডের জন্য ওও এক্সিকিউট করে।

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

হাসওলের জন্য বিলম্বিত হওয়ার পূর্বাভাস দেওয়ার আমার প্রচেষ্টাটি এরকম দেখাচ্ছে:

হ্যাঁ, এটি ঠিক দেখাচ্ছে। shufps পোর্ট 5 এ চলে, addps চলে, mulps পি 0 বা পি 1 এ চলে। স্কাইলেক ডেডিকেটেড এফপি-অ্যাড ইউনিটটি ফেলে দেয় এবং সিএমডি এফপি অ্যাড / মুল / এফএমএ এফএমএ ইউনিটগুলিতে পি 0 / পি 1 এ চালায়, 4c লেটেন্সি সহ (হ্যাসওয়েলে 3/5/5 থেকে উপরে / নিচে / 3/3/5 এ) ব্রডওয়েলের)।

এটি একটি সম্পূর্ণ এক্সওয়াইজেড দিকনির্দেশক ভেক্টরকে সিমডি ভেক্টরে রাখা সাধারণত কেন সফল হয় তার একটি উত্তম উদাহরণ। এক্সের একটি অ্যারে, ওয়াইয়ের একটি অ্যারে এবং জেডের একটি অ্যারে রাখলে আপনাকে কোনও পরিবর্তন ছাড়াই সমান্তরালে 4 ক্রস পণ্য করতে দেওয়া হবে।

এসএসই ট্যাগ উইকির এই স্লাইডগুলির একটি লিঙ্ক রয়েছে: ইনসমনিয়াক গেমস (জিডিসি 2015) এ সিমড যা থ্রিডি ভেক্টরগুলির জন্য অ্যারে-অফ-স্ট্রাক্ট বনাম স্ট্রাক্ট-অফ-অ্যারে সম্পর্কিত বিষয়গুলি সজ্জিত করে এবং কেন এটি সর্বদা সিমড করার চেষ্টা করে ভুল হয় সমান্তরালভাবে একাধিক অপারেশন করতে সিমড ব্যবহার না করে একটি একক ক্রিয়াকলাপ।





superscalar