এখনও অবধি আমি এটি জানতে পেরেছি যে খুব বিশেষায়িত সার্কিটরি থেকে একটি পদক্ষেপ এসেছে যা গ্রাফিক্স পাইপলাইনের বিভিন্ন ধাপকে আরও সাধারণ পদ্ধতির দিকে প্রয়োগ করে। এই রূপান্তরটি আংশিকভাবে 3D এপিআইগুলিতে প্রোগ্রামেবল শেডারগুলির আকারে প্রতিফলিত হয়েছে। বেশিরভাগ ট্রানজিস্টর প্রকৃত শেডার নির্দেশাবলী কার্যকর করে এমন সমান্তরাল সিমডি ইউনিটগুলিকে উত্সর্গীকৃত বলে মনে হয়।
সঠিক। মূলত, পুরানো জিপিইউগুলিতে তুলনামূলকভাবে বড় বৈশিষ্ট্যের আকারের কারণে, বেসিক লাইটিং, অ্যান্টিয়ালাইজিং, টেক্সচার ম্যাপিং, জ্যামিতি ইত্যাদির মতো দক্ষতার সাথে কার্যকর করার একমাত্র উপায় ছিল "ফিক্সড ফাংশন" পাইপলাইন ব্যবহার করা। তারা পারফরম্যান্সের জন্য নমনীয়তা ত্যাগ করেছিল কারণ তাদের বর্তমান জিপিইউগুলির মতো আরও জেনেরিক ব্যাপকভাবে সমান্তরাল সিমডি আর্কিটেকচার ব্যবহার করে এটি প্রয়োগ করতে সক্ষম করার মতো পর্যাপ্ত চিপ ঘনত্ব ছিল না।
একটি আধুনিক জিপিইউ (ভাবেন এনভিডিয়া ফার্মি) মূলত "বোকা" সিমডি অ্যারেগুলির একটি সেট যা সিপিইউ এবং বিভিন্ন ক্যাশের নির্দেশাবলী এবং ডেটা দিয়ে খাওয়ানো হয়, এবং সেই সমস্ত যুক্তি যা গ্রাফিক্স পাইপলাইনকে সেই নির্দেশাবলীর মানচিত্র দেয় গ্রাফিক্স ড্রাইভারের মধ্যে ঘটে ?
হার্ডওয়্যারে কিছু কিছু এখনও সম্পন্ন হয়; অন্যরা হয় না। উদাহরণস্বরূপ, ভিপিএ চিপসেটে পিক্সেল ডেটা ধাক্কা দেওয়ার জন্য খুব চূড়ান্ত পর্যায়ে আরওপিগুলি এখনও ব্যবহৃত হয়। দ্রষ্টব্য, আমি এখানে "ভিজিএ চিপসেট" জেনেরিক পদ হিসাবে ব্যবহার করছি যেটি আপনার মনিটরে কোনও ভিডিও সিগন্যাল প্রেরণ করে এমন প্রক্রিয়াটি উল্লেখ করুন, এটি কোনওভাবেই সত্যই "ভিজিএ" কিনা তা বিবেচনা না করেই।
এটি সাধারণভাবে সত্য, এনভিডিয়া ফার্মি এবং এএমডি দক্ষিন দ্বীপপুঞ্জের মতো বর্তমান জিপিইউ আর্কিটেকচারগুলি বেশিরভাগ অংশে, ব্যাপকভাবে সমান্তরাল সিপিইউ যেখানে তাদের একটি কাস্টম নির্দেশিকা সেট রয়েছে, এবং প্রতিটি পৃথক "কোর" অত্যন্ত দুর্বল, তবে রয়েছে একটি পুরো কোর অনেক (কখনও কখনও কয়েক হাজার)। তবে সেখানে এখনও গ্রাফিক্স-নির্দিষ্ট হার্ডওয়্যার রয়েছে:
হার্ডওয়্যার ভিডিও ডিকোডিং প্রায়শই স্থির ফাংশন চিপস ব্যবহার করে বড় অংশে করা হয়। এটি বিশেষত সত্য যখন ডিআরএম (ডিজিটাল সীমাবদ্ধতা পরিচালনা) জড়িত থাকে। কখনও কখনও "হার্ডওয়্যার" ভিডিও ডিকোডিংয়ের অর্থ হ'ল সিমড কোরগুলির জন্য নিয়মিত পুরানো কাজ হিসাবে পরিবেশন করা নির্দেশাবলীর একটি ফার্মওয়্যার-গাইডেড সেট। এটা সত্যিই নির্ভর করে।
খুব কম কয়েকটি কম্পিউট-নির্দিষ্ট এনভিডিয়া বোর্ড (টেসলা) ব্যতীত, প্রায় সমস্ত "জেনেরিক সিমডি" গ্রাফিক্স কার্ডগুলিতে ভিডিও আউটপুটকে উত্সর্গীকৃত একটি সম্পূর্ণ হার্ডওয়্যার রয়েছে। ভিডিও আউটপুট রেন্ডারিংয়ের মতো নয়; নির্দিষ্ট ফাংশন আউটপুট উপাদানগুলির মধ্যে রয়েছে এলভিডিএস / টিএমডিএস / এইচডিএমআই / ডিসপ্লেপোর্ট কোডেকস, এইচডিসিপি এবং এমনকি অডিও প্রসেসিং (মূলত কিছুটা ডিএসপি), যেহেতু এইচডিএমআই অডিও সমর্থন করে।
"গ্রাফিক্স মেমরি" এখনও জিপিইউগুলির সাথে অন-বোর্ডে সঞ্চিত রয়েছে, যাতে তাদের চ্যাটি এবং তুলনামূলকভাবে উচ্চ ল্যাটেন্সি পিসিআই বাসটিকে সিস্টেম র্যামে আঘাত করতে না হয়, যা নিজেই ধীর এবং আরও ব্যয়বহুলের তুলনায় প্রতিক্রিয়া জানাতে আরও বেশি সময় নেয়, উচ্চ মানের, দ্রুত গ্রাফিক্স মেমরি (যেমন GDDR5) যা ক্ষুদ্রতর ক্ষমতায় আসে তবে সিস্টেম মেমোরির চেয়ে উচ্চতর গতিতে আসে। গ্রাফিক্স মেমরিতে স্টাফ সংরক্ষণ এবং সেখান থেকে এটি GPU বা সিপিইউতে পুনরুদ্ধার প্রক্রিয়া এখনও একটি স্থির ফাংশন অপারেশন pretty কিছু জিপিইউগুলির নিজস্ব ধরণের "আইওএমএমইউ" থাকে তবে এই মেমরি পরিচালন ইউনিটটি সিপিইউ থেকে পৃথক (পৃথক)। তবে এটি সত্য নয়, সাম্প্রতিক ইন্টেল জিপিইউগুলির জন্য তাদের প্রসেসরের (স্যান্ডি এবং আইভি ব্রিজ) একত্রিত করা হয়েছে, যেখানে মেমরির আর্কিটেকচার প্রায় সম্পূর্ণ "সুসঙ্গত" সিস্টেম মেমোরি) এবং গ্রাফিক্স মেমরি থেকে পড়া সিপিইউর জন্য জিপিইউর মতোই সস্তা।
বা জিপিইউতে কোথাও এমন কিছু নিয়ন্ত্রণকারী ইউনিট রয়েছে যা আগত উচ্চ-স্তরের নির্দেশনা এবং ডেটা স্ট্রিমগুলি (সংকলিত শেডার প্রোগ্রামগুলি, ভারটেক্স ডেটা এবং বৈশিষ্ট্যগুলি এবং টেক্সচারগুলি) প্রকৃত সিমডি নির্দেশিকায় অনুবাদ করে এবং সিঙ্ক্রোনাইজেশন, মেমরি বরাদ্দকরণ ইত্যাদির যত্ন নেয়?
সিমডিগুলির "নেটিভ" ভাষাটি প্রায়শই সফ্টওয়্যারটিতে ড্রাইভার দ্বারা উত্পাদিত হয়, জিপিইউর নিজস্ব ফার্মওয়্যার দ্বারা নয়। এটি ডাইরেক্টএক্স 9 / ওপেনজিএল 2.x স্তরের বৈশিষ্ট্যগুলির জন্য বিশেষত সত্য। এইচএলএসএল, জিএলএসএল বা ওপেনজিএল এআরবি শ্যাডার এসেমব্লারের মতো উচ্চ স্তরের ভাষায় লিখিত ছায়াগুলি শেষ পর্যন্ত ড্রাইভারের দ্বারা নির্দিষ্ট রেজিষ্টারে ব্যাং করে এবং প্রয়োজনীয় পিসিআই হুপগুলি করে কম্পিউটারের ব্যাচ বাফারগুলি পাঠাতে এবং / অথবা রেন্ডার করে কমান্ড।
হার্ডওয়্যার টেসলেসনের মতো কয়েকটি জিনিস (ডাইরেক্টএক্স 11 / ওপেনজিএল 4.0) আবার একটি নির্দিষ্ট-কার্য পদ্ধতিতে হার্ডওয়্যারে ঠেলাঠেলি করা হয়, যেমন তারা পুরানো কালে প্রায় সমস্ত কিছু করত। এটি কারণ, আবার, পারফরম্যান্স সীমাবদ্ধতার জন্য প্রয়োজন হয় যে এই গণনাগুলি করার সবচেয়ে কার্যকর উপায় এটির জন্য ফার্মওয়্যার বা ড্রাইভার সিমডিগুলি করার জন্য ড্রাইভারের "প্রোগ্রাম" না রেখে ডেডিকেটেড সার্কিটারি করা have
আমি সন্দেহ করি যে বাস্তবতা কোথাও এই দুটি চরমের মধ্যে রয়েছে, এবং উত্তরটি বরং দীর্ঘতর এবং অনেক জল্পনা-কল্পনার উপর ভিত্তি করে হবে (নির্দিষ্ট কিছু জিপিইউ বিক্রেতাদের তাদের পণ্যগুলিতে কোনও ডকুমেন্টেশন প্রকাশ করতে অস্বীকার করার কারণ রয়েছে, চালককে ছেড়ে দেওয়া যাক উত্স কোড ...), তবে সঠিক দিক এবং কার্যকর সংস্থানগুলির যে কোনও ইঙ্গিতগুলি প্রশংসিত হবে।
এএমডি এবং ইন্টেলের তাদের সাম্প্রতিক জিপিইউ সম্পর্কে খোলামেলা ডকুমেন্টেশন রয়েছে পাশাপাশি লিনাক্সের জন্য ওপেন সোর্স গ্রাফিক্স ড্রাইভারগুলি পুরোপুরি কাজ করছে (মেসা এবং ডাইরেক্ট রেন্ডারিং ম্যানেজার প্রকল্পগুলি দেখুন)। আপনি যদি এই ড্রাইভারগুলির কিছু কোডের দিকে নজর দেন তবে আপনি হাসবেন, কারণ গ্রাফিক্স ড্রাইভার লেখকদের আসলে "সফ্টওয়্যার" -র বিভিন্ন আকার বা নিদর্শন আঁকার মতো জিনিসের জ্যামিতি বাস্তবায়ন করতে হবে (তবে হার্ডওয়্যার কমান্ড ব্যবহার করে বাস্তব জমা দেওয়ার জন্য প্রসেসিংয়ের জন্য হার্ডওয়্যারকে লেগওয়ার্ক), কারণ জিপিইউ ফার্মওয়্যার বা স্থির ফাংশন স্টাফ উভয়ই এটিকে হার্ডওয়ারে পুরোপুরি প্রসেস করার জন্য উপস্থিত নেই :) নতুনতে ওপেনএল 1.x / 2.x সমর্থন করার জন্য তাদের কী করতে হবে তা মজার বিষয় of হার্ডওয়্যার।
বিবর্তন এক ধরণের এভাবে চলে গেছে:
- খুব অনেক আগে (রিয়েল-টাইম 3 ডি রেন্ডারিংয়ের আগে বিবেচনা করা সম্ভব হয়েছিল): সিপিইউতে রে-ট্রেসিং অ-রিয়েল-টাইম রেন্ডারিংয়ের জন্য স্বাভাবিক ছিল। উইন্ডোজের প্রারম্ভিক সংস্করণগুলিতে আপনি দেখতে পাচ্ছেন এমন সাধারণ গ্রাফিক্সের জন্য, সিপিইউ স্থির ফাংশন হার্ডওয়্যার ছাড়াই সাধারণ আকারগুলি (আয়তক্ষেত্র, একটি ফন্টের অক্ষর, শেডিং প্যাটার্ন, ইত্যাদি) আঁকতে যথেষ্ট দ্রুত ছিল তবে এটি খুব জটিল স্টাফ আঁকতে পারে না।
- অনেক আগে (ওপেনজিএল 1.x): সলিড স্টেট হার্ডওয়্যার দ্বারা প্রায়শই প্রয়োগ করা হয়; "বৈদ্যুতিকভাবে" স্থির ফাংশন এমনকি বেসিক ক্রিয়াকলাপের জন্য আদর্শ
- কিছুক্ষণ আগে (ওপেনজিএল 2.x): জিপিইউগুলিকে আরও প্রোগ্রামযোগ্য করে তোলার দিকে একটি রূপান্তর শুরু হয়েছিল। 5 বছরের পুরানো হার্ডওয়্যারটিতে "ফ্রেগমেন্ট শেডার" (ওরফে পিক্সেল শেডার) প্রায় কোনও সিপিইউয়ের মতো স্বেচ্ছাসেবী গণনা সম্পাদন করতে পারে তবে এটি আর্কিটেকচার দ্বারা সীমাবদ্ধ, যা গ্রাফিক্সের দিকে এখনও অনেক বেশি গিয়ার্ড। সুতরাং, ওপেনসিএল / ডাইরেক্টকম্পিউট এই হার্ডওয়্যারটিতে উপলব্ধ নেই।
- সম্প্রতি (ওপেনজিএল 3.x): সাধারণ উদ্দেশ্যে জিপিইউগুলিতে রূপান্তর বেশিরভাগ সম্পূর্ণ, তবে তারা অবশ্যই, সিপিইউগুলির চেয়ে দক্ষতার সাথে পরিচালিত হতে পারে, বরং ব্যাচগুলিতে জমা দেওয়া ডেটা বড় ম্যাট্রিক্স (লিনিয়ার বীজগণিত) জড়িত কাজের চাপকে অনুকূলিত করেছে which খুব ছোট ডেটার দীর্ঘ সিক্যুয়েন্স (1 + 1, 2 * 4, ক্রমানুসারে 5 * 6, ইত্যাদি) সাধারণ উদ্দেশ্য কম্পিউটিং ওপেনসিএল, সিইউডিএ ইত্যাদির মাধ্যমে পাওয়া যায় তবে হার্ডওয়ারটি এখনও "সিমড কোপ্রোসিসেসর" নেই কারণ (ক) জিপিইউ কার্যকারিতা পেতে আপনাকে এখনও হার্ডওয়ার-নির্দিষ্ট রেজিস্টারগুলি হাতুড়ি করতে হবে; (খ) পিসিআই বাস ওভারহেডের কারণে জিপিইউ ভিআরএএম থেকে পড়া খুব ধীর গতির (জিপিইউ থেকে পড়া বর্তমান আর্কিটেকচারে খুব অনুকূল নয়); (গ) মেমরি এবং ক্যাশে আর্কিটেকচার সিপিইউয়ের সাথে সুসংগত নয়; প্রচুর উত্তরাধিকারের ফিক্সড ফাংশন হার্ডওয়্যারটি এখনও রয়েছে।
- বর্তমান (ওপেনজিএল 4.x): প্রচুর উত্তরাধিকারের স্থির ফাংশন হার্ডওয়্যার থেকে মুক্তি পেয়েছে। কিছুটা হলেও জিপিইউ পড়তে বিলম্ব হয়েছে। আইওএমএমইউ ভিআরএএম এবং সিস্টেম মেমোরির মধ্যে একটি (অনুবাদিত) হার্ডওয়্যার-সহায়ক ম্যাপিংয়ের অনুমতি দেয়। এছাড়াও স্থির ফাংশনের উপাদানগুলি ফিরিয়ে আনার মাধ্যমে হার্ডওয়্যার টেসেললেশন চালু করা হয়েছিল।
- ভবিষ্যত ( এইচএসএ)): জিপিইউ মূলত একটি কো-প্রসেসর। এটি সমস্ত কিছু, তবে পিসিআই বাসে ডেডিকেটেড জিপিইউর জন্য, এমনকি জিপিইউ এবং সিপিইউর মধ্যে খুব সামান্য প্রতিবন্ধকতার (পড়ার / লেখার জন্য) সিপিইউর সাথে সম্পূর্ণরূপে সংহত হয়েছে। সম্পূর্ণ সুসংগত মেমরি আর্কিটেকচার - "মাই মেমোরিয়া এস সু মেমোরিয়া" (আমার স্মৃতি আপনার স্মৃতি)। ইউজারস্পেস প্রোগ্রামগুলি "ভিআরএএম" থেকে পড়তে পারে ঠিক যেমন তারা ড্রাইভার শিম ছাড়া সিস্টেম মেমরি থেকে পড়ে এবং হার্ডওয়্যার এটির যত্ন নেয়। আপনার কাছে "সিরিয়াল" প্রসেসিংয়ের সিপিইউ রয়েছে (এটি করুন, তারপরে এটি করুন, তারপরে এটি করুন, তারপরে এটি করুন) পরিমিত পরিমাণে ডেটা এবং জিপিইউ "সমান্তরাল" প্রক্রিয়াকরণের জন্য (এই বিশাল ডেটাসেটটিতে এই অপারেশনটি সম্পাদন করুন এবং এটি ভাগ করুন) আপনি কিভাবে ফিট দেখতে পাবেন)। জিপিইউ যে বোর্ডে বসে আছে তার এখনও আরওপিএস, এইচডিএমআই কোডেক ইত্যাদি থাকতে পারে তবে ডিসপ্লে আউটপুট করার জন্য এই জিনিসটি প্রয়োজনীয়,