সিপিইউ আর্কিটেকচারগুলি কেন পতাকা নিবন্ধ ব্যবহার করে (সুবিধা?)


15

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

উত্তর:


11

আধুনিক মাইক্রো-আর্কিটেকচারে রেজিস্টার সহ পতাকাগুলির জন্য বাস্তবায়নের ব্যয়টির নাম পরিবর্তন করা হয়েছে বা পতাকা নয় pretty আমি যে মূল পার্থক্যটি ভাবতে পারি তা হ'ল কিছু পতাকা কোনও মানের বৈশিষ্ট্যগুলি নির্দেশ করে (মানটি কি নেতিবাচক? মানটি শূন্য? মানটির কি সমান বা অদ্ভুত সমতা আছে?), আবার কেউ কেউ পূর্ববর্তী ক্রিয়াকলাপের সময় ঘটে যাওয়া একটি ইভেন্টকে উপস্থাপন করে (অ্যাড নির্দেশিকাটির কাজটি কি কার্যকর হয়েছে বা একটি ওভারফ্লো হয়েছে?) আপনি যখন 32-বিট আর্কিটেকচারে 64-বিট সংযোজন (বা 128-বিট সংযোজন করতে চান) এমআইপিএস-এর চেয়ে কম-আদর্শ-পরিস্থিতি তৈরি করেছিল -৪-বিটের আর্কিটেকচার।) বহনকারী পতাকা সহ বেশিরভাগ স্থাপত্যগুলিতে একটি বিশেষ রয়েছেadd-with-carryনির্দেশ, যা পূর্ববর্তী যোগ নির্দেশ থেকে ক্যারি পতাকা অন্তর্ভুক্ত। এটি পতাকা নিবন্ধগুলির সাথে বহু স্থাপত্যের তুলনায় বহু-নির্ভুল গণিতের তুলনা তুলনামূলকভাবে সস্তা করে তোলে।

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

তবে এমআইপিএস এখানে কিছু সংরক্ষণ করে না। তারা সমস্যাটিকে অন্য কোথাও সরিয়ে নিয়েছে। এমআইপিএস-এ একটি branch-on-equalনির্দেশনা রয়েছে। এর অর্থ এই যে শাখাটি নির্দেশের অবশ্যই একটি ALU পর্যায় (বিটওয়াইজ xorঅপারেশনের মতো কিছু সহ একটি norএকক সমান / না-সমান বিটকে হ্রাস করতে হবে) শাখাটি কোন পথে চলেছে তা নির্ধারণের আগে।

ডিসি আলফা আর্কিটেকচার একটি কৌশল ব্যবহার করে পার্থক্যটি বিভক্ত করার চেষ্টা করেছিল। ডিসি আলফার কোনও ফ্ল্যাগের নিবন্ধ নেই, তবে এ সংক্রান্ত কোনও branch-on-equalনির্দেশনাও ছিল না । পরিবর্তে শাখার নির্দেশাবলী সমস্ত একক সাধারণ উদ্দেশ্য নিবন্ধের অবস্থার দিকে তাকান। আছে branch-on-zero, branch-on-not-zero, branch-on-less-than-zero, ইত্যাদি কৌতুক যে আপনি প্রতি সাধারণ কাজের রেজিস্টার করো একটি অতিরিক্ত 65 তম বিট যে আপনি বলে দিতে পারেন অন্যান্য 64 বিট সব শূন্য বা না কিনা। এটি পতাকা নিবন্ধকৃত হওয়ার মতো করে তোলে: সমস্ত শাখার নির্দেশাবলী তাদের সিদ্ধান্ত নেওয়ার জন্য একক বিট (যা ইতিমধ্যে গণনা করা হয়েছে) দেখুন তবে এখন আপনি কীভাবে সাধারণ ALU এর সময় সেই অতিরিক্ত শূন্য সূচক বিটটি গণনা করবেন তা নির্ধারণ করতে ফিরে এসেছেন all সাইকেল. (এবং আপনি এখনও পূর্ববর্তী অপারেশন থেকে ক্যারি পতাকাটি দেখে বহু-নির্ভুল গণিতটি করতে পারবেন না))


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

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

7

1 আইএসএ দৃষ্টিকোণ থেকে

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

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

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

2 একটি প্রয়োগকারী দৃষ্টিকোণ থেকে

  1. পতাকাগুলি পরীক্ষা করা সহজ এবং দ্রুত করা যায়। আপনার পরীক্ষাটি যত জটিল, চক্রের সময়টিতে (বা আপনি পাইপলাইনযুক্ত পাইপলাইন কাঠামো) এর উপর তত বেশি প্রভাব ফেলবে। এটি সহজ বাস্তবায়নের জন্য বিশেষত সত্য, যখন আপনি বইয়ের সমস্ত কৌশল ব্যবহার করে একটি উচ্চতর প্রসেসরের কাছে পৌঁছান, তখন প্রভাবটি বেশ ন্যূনতম হয়।

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


2

একটি 32-বিট মেশিনে, একটি "অ্যাড-উইথ ক্যারি" মাল্টি-স্পষ্টতা সংযোজন ক্রমের অংশ হিসাবে ব্যবহৃত নির্দেশকে 65 বিট মূল্যবান অপারেশন গ্রহণ করতে হবে এবং 33 বিটের সমষ্টি গণনা করতে হবে। উত্স-নিবন্ধের নির্দিষ্টকরণগুলি সনাক্ত করবে যেখানে 64 অপারেন্ড বিটগুলি কোথা থেকে আসবে এবং গন্তব্য-নিবন্ধের স্পেসিফিকেশন বলবে যে ফলাফলের নীচের 32 বিটগুলি কোথায় যেতে হবে, তবে "একটি অতিরিক্ত যুক্ত করুন" অপারেন্ড বা উপরের বিটের সাথে কী করবেন ফলাফলের? অতিরিক্ত অপারেন্ড কোথা থেকে আসা উচিত এবং অতিরিক্ত ফলাফলের বিটটি কোথায় যাওয়া উচিত ছিল সেই নির্দেশের অংশ হিসাবে নির্দিষ্ট করার মঞ্জুরি দেওয়া মাঝারিভাবে কার্যকর হবে তবে এটি সাধারণত অপকোডে কোনও অতিরিক্ত ক্ষেত্রকে ন্যায়সঙ্গত করার পক্ষে তেমন কার্যকর হবে না। ক্যারি পতাকাটি হ্যান্ডেল করার জন্য একটি নির্দিষ্ট "অবস্থান" থাকা কোনও নির্দেশ-সময়সূচী দৃষ্টিকোণ থেকে কিছুটা বিশ্রী হতে পারে তবে এটি '

যদি একাধিক নির্ভুল গাণিতিককে অনুমতি দেওয়ার জন্য কোনও নির্দেশিকা নকশার চেষ্টা করা হয় তবে প্রতিটি নির্দেশ দুটি দু'টি 32-বিট অপারেশন এবং একটি 32-বিট গন্তব্য অপারেন্ডের মধ্যে সীমাবদ্ধ ছিল, চারটি নির্দেশে একজন 64-বিট "অ্যাড" প্রয়োগ করতে পারে: "সেট r5 + 1 যদি r0 + r2 বহন করে বা অন্যথায় শূন্য হয়; গণনা r4 = r1 + r3; গণনা r5 = r4 + r5; গণনা r4 = r0 + r2 "তবে এর বাইরে যেতে প্রতিটি অতিরিক্ত শব্দের জন্য তিনটি নির্দেশের প্রয়োজন হবে। পরিপূরক উত্স এবং গন্তব্য হিসাবে ক্যারি পতাকা উপলভ্য হওয়া শব্দের প্রতি এক নির্দেশের জন্য ব্যয় হ্রাস করে।

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

ldr  r0,[r1]
add  r0,r0,r2
eors r4,r5,r6

একটি এক্সিকিউশন ইউনিট মোটামুটি সহজেই সনাক্ত করতে পারে যে তৃতীয় নির্দেশটি পড়া থেকে ডেটা পড়ার অপেক্ষা না করেই কার্যকর করা যেতে পারে [r1], তবে দ্বিতীয় নির্দেশটি adds r0,r0,r2যদি কেবল তখনই সম্ভব হত যদি এক্সিকিউশন ইউনিট নিশ্চিত করতে পারত যে সময়কালে কোনও কিছু ব্যবহার করার চেষ্টা করা হয়েছিল পতাকাগুলি, শূন্য পতাকাটি তৃতীয় নির্দেশে প্রতিষ্ঠিত মানটি ধারণ করবে তবে ক্যারি পতাকাটি দ্বিতীয়টিতে মান ধারণ করবে।


1
"নির্দেশিকা পতাকা নিবন্ধকে আপডেট করে কিনা" নির্দেশ বিট নিয়ন্ত্রণ করে: উদাহরণস্বরূপ পাওয়ারপিসি, এসপিএআরসি তে উপলব্ধ।
TEMLIB

এমআইপিএস "r5 = r1 + r2; r6 সেট করুন r6 r1 এর চেয়ে কম হলে; r7 = r3 + r4; r5 = আর 5 + আর 6;" ব্যবহার করে। কিছু সিমডি এক্সটেনশান তুলনা ব্যবহার করতে পারে যা ক্যারিটি প্রয়োগ করতে ক্যারি এবং বিয়োগফলের সন্ধান করতে সমস্ত বিট শূন্য বা এক (যেমন, শূন্য বা -1 দ্বিগুণ পরিপূরক পূর্ণসংখ্যার) এ সেট করে।
পল এ। ক্লেটন

@ পলএ ড। ক্লেটন: আমি মনে করি আপনার অর্থ "যদি r5 আর 1 এর চেয়ে কম হয়"। এমআইপিএস কীভাবে দীর্ঘ গণিত পরিচালনা করবে? এটির জন্য কি প্রতি শব্দে তিনটি, তিনের বেশি, বা তিনটির চেয়ে কম নির্দেশের প্রয়োজন হবে?
সুপারক্যাট

@ সুপের্যাট হ্যাঁ, এটি "r5 সেট করা উচিত ছিল যদি r5 আর 1 এর চেয়ে কম হয়"!
পল এ। ক্লেটন

@ পলএ.ক্লেটন: কেউ কীভাবে 32-বিট এমআইপিএস-তে দুটি 64-শব্দ (2048-বিট) নম্বর যুক্ত করবেন? মাঝারি পর্যায়ে বহনগুলি পরিচালনা করার কোনও কার্যকর উপায় আছে কি?
সুপারক্যাট

0

সহজ উত্তর ... দ্রুত সস্তা মেমোরি অপারেশনের জন্য কেবল নির্দেশ ব্যতীত কোনও অভ্যন্তরীণ বসের ব্যবহারের প্রয়োজন হয় না। এটি কোনও স্ট্যাক বা প্রক্রিয়া বিট সহ কোনও স্মৃতিবিহীন স্ট্যাক বিল হিসাবে ব্যবহার করা যেতে পারে।


1
এই উত্তরটি বরং বিশদভাবে হালকা। দীর্ঘ জবাব প্রয়োজনীয়ভাবে প্রয়োজন হয় না তবে আরও কিছু মাংসপুঞ্জের একটি পৃথক উন্নতি হবে।
ডেভিড রিচার্বি

একটি পতাকা নির্ধারণ বা একটি পতাকা মান তুলনা হ'ল সমাবেশ কোড অন্তর্ভুক্ত করা হবে যে আর্গুমেন্ট আকারে অন্য কোনও তথ্য ছাড়াই একক নির্দেশ। পতাকাগুলিও আপোসেসর অপারেশন বা পরীক্ষার ফলাফল এবং শাখায় দক্ষতার সাথে ব্যবহার করা যেতে পারে। এগুলি প্রকৃত বিট যা টগলড বা সেট করা হয় যখন নিবন্ধগুলিতে দুটি মান তুলনা করা হয়।
SkipBerne
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.