সিপিইউ আর্কিটেকচারের পরিবর্তনের সাথে জিপিইউর আর্কিটেকচার পরিবর্তিত হচ্ছে। এনভিডিয়া কোম্পানির সর্বশেষ গ্রাফিক্স আর্কিটেকচারের নাম ফার্মি। ইতোমধ্যেই জিফোর সিরিজের গ্রাফিক্স কার্ডগুলোতে ফার্মি আর্কিটেকচারের চিপ যুক্ত হচ্ছে। ফার্মির পূর্বে টেসলা ছিল এনভিডিয়া কোম্পানির সর্বশেষ গ্রাফিক্স আর্কিটেকচার। টেসলার অনেক সমস্যা এনভিডিয়া ফার্মিতে কাটিয়ে উঠতে সক্ষম হয়েছে। ২০০৯-এর শেষের দিকে এনভিডিয়া ঘোষণা দিয়েছে ফার্মি আর্কিটেকচারের।
ফার্মি আর্কিটেকচারের চিপে আছে ৩ বিলিয়ন ট্রানজিস্টর, ৬ গিগা ডিডিআর৫ ডির্যাসম, ৫১২ কুডাকোর প্রসেসর। মেমরি ম্যানেজমেন্টের জন্য রয়েছে মেমরি ইন্টারফেস, যুক্ত হয়েছে এরর কারেকশন কোড (ECC) এবং এটি ডাইরেক্ট এক্স-১১ সাপোর্ট করে। ফার্মিতে এনভিডিয়া কোম্পানি IEEE-এর দেয়া সর্বশেষ ফ্লোটিং পয়েন্ট অ্যারিথমেটিক ৭৫৪-২০০৮ ব্যবহার করেছে। আগে টেসলাতে ৭৫৪-১৯৮৫ ব্যবহার করা হতো। নতুন এই ফ্লোটিং পয়েন্ট ইনস্ট্রাকশনে এফএমএ (ফার্স্ট মাল্টিপ্লাই অ্যাড) ব্যবহার করা হয়েছে। এর সাথে এএলইউতে (অ্যারিথমেটিক লজিক ইউনিট) ৩২-বিট গুণিতক অপারেশন যুক্ত করা হয়েছে, যা আগের জিপিইউতে ২৪-বিট অপারেশনে সীমাবদ্ধ ছিল। ফার্মিতে একটি স্ট্রিমিং প্রসেসর (এসএম) একত্রে ১৬ জোড়া করে ইনস্ট্রাকশন গুণ করতে পারে, যা জিটি-২০০-এ ব্যবহার হওয়া আর্কিটেকচারের ৪ গুণ।
ফার্মিতে মোট ১৬টি স্ট্রিমিং প্রসেসর আছে। যার প্রত্যেকটিতে ৩২টি কুডাকোর করে মোট ৫১২টি কোর রয়েছে। এ ৫১২টির প্রতিটি প্রতিক্লকে একটি থ্রেডে একটি ফ্লোটিং পয়েন্ট অপারেশন সম্পন্ন করে। যদি জিপিইউর গতি ১.৫ গিগাহার্টজ হয় তবে এটি ১.৫ টেরাফ্লপস অপারেশন সম্পন্ন করতে পারবে। কুডা (কমপিউটার ইউনিফাইড ডিভাইস আর্কিটেকচার) হলো এক ধরনের প্যারালাল আর্কিটেকচার। এ আর্কিটেকচারে প্রসেসর প্যারালালি অনেকগুলো কাজ একত্রে করতে পারে। প্রতিটি কুডা কোরে থাকে একটি অ্যারিথমেটিক লজিক ইউনিট এবং ফ্লোটিং পয়েন্ট ইউনিট। চিপের মাঝের ৭৬৮ কিলোবাইট এলটু ক্যাশ ১৬টি স্ট্রিমিং প্রসেসরই শেয়ার করতে পারে। প্রতিটি স্ট্রিমিং প্রসেসরের সাথে আরো যুক্ত থাকে এক্সিকিউশন ইউনিট, ক্যাশ এরিয়া এবং অনেকগুলো রেজিস্টার ফাইল। প্রতিটি স্ট্রিমিং প্রসেসর আবার চারটি ভাগে বিভক্ত। এর দুটি হলো কুডাকোর কলাম, একটি লোড/স্টোর ইউনিট, একটি স্পেশাল ফাংশন ইউনিট। প্রতিটি কুডাকোর কলামে আবার ১৬টি কুডাকোর থাকে। লোড/স্টোর ইউনিট প্রতিক্লকে ১৬টি থ্রেডে সোর্স ও ডেসটিনেশনের মধ্যে সমন্বয় রাখে। আর স্পেশাল ফাংশন ইউনিট প্রতি থ্রেডে একটি ইনস্ট্রাকশন নিয়ে কাজ করে। প্রতিটি স্ট্রিমিং প্রসেসর ৩২টি প্যারালাল থ্রেডে ভাগ করা থাকে, যাকে ওয়ার্প বলে। যখন ৬৪টি ফ্লোটিং পয়েন্ট নিয়ে কাজ করতে হয় তখন দুইটি কুডাকোর কলামই একই সাথে কাজ করে এবং অন্য দুই কলাম কাজহীন থাকে। ফার্মিতে ছয়টি ৬৪-বিট মেমরি কন্ট্রোল আছে, যা কুডাকোরগুলোতে ডাটা আদানপ্রদানে ব্যবহার হয়। প্রতিটি মেমরি কন্ট্রোলার গ্রাফিক্স ডিডিআর৫ ডির্যা ম সাপোর্ট করে। এ কারণে এনভিডিয়ার অন্যান্য প্রসেসর চিপের তুলনায় ফার্মি অনেক দ্রুত কাজ করতে পারে। ব্যবহার হওয়া ডির্যাএমের ব্যান্ডউইডথ আগের তুলনায় বেশি (১৯.২ গিগাবিট/সেকেন্ড) হওয়ায় আটটি গ্রাফিক্স ডিডিআর৩ মেমরি কন্ট্রোলার থেকে ৩০ ভাগ বেশি কাজ দ্রুত করতে পারে। গ্রাফিক্স ডিডিআর৫ ব্যবহারে আরেকটি সুবিধা হলো এটি প্রতি পিনে গ্রাফিক্স ডিডিআর৩ থেকে বেশি ব্যান্ডউইডথ প্রদান করে। অর্থাৎ ফার্মি GTX240-তে ব্যবহার হওয়া ৫১২-বিট মেমরি ইন্টারফেসের তুলনায় ছোট মেমরি ইন্টারফেস ব্যবহার করে। বলা দরকার, মেমরি ইন্টারফেস যত ছোট হবে তত কম সংখ্যক পিন ব্যবহার করা যাবে এবং চিপের অপারেশনের জন্য বিদ্যুৎ তত কম লাগবে। ফার্মিতে সিপিইউর সাথে জিপিইউর যোগাযোগের জন্য ১৬-লেন পিসিআই-ই ইন্টারফেস ব্যবহার করা হয়েছে। এটি সর্বোচ্চ ৮ গিগাবিট/সেকেন্ডে ডাটা আদানপ্রদান করতে পারে।
গিগাথ্রেড একটি মাস্টার ছক নিয়ন্ত্রণ করে, যার মাধ্যমে প্রত্যেকটি থ্রেড ক্লকগুলোকে প্রত্যেকটি স্ট্রিমিং প্রসেসরের ছকে পাঠায়। ব্যবহৃত গিগাথ্রেড হলো এইচটিএস (হার্ডওয়্যার থ্রেড সিডিউলার)। এইচটিএসের কাজ হলো জিপিইউর থ্রেডগুলোর কাজের সমন্বয় ঘটানো। যেহেতু অনেকগুলো স্ট্রিমিং প্রসেসর কাজ করে, তাই এইচটিএস বড় কাজকে তৎক্ষণাৎ বিভিন্ন প্রসেসরে ভাগ করে দেয় এবং খুঁজতে থাকে কখন কোন প্রসেসর কাজহীন থাকে। পূর্বের টেসলাতে এই কাজটি করা হতো সফটওয়্যার ইনস্ট্রাকশনের মাধ্যমে, যা নির্ভরশীল ছিল সফটওয়্যার অ্যালগরিদমের উপরে। সফটওয়্যারভিত্তিক হওয়াতে এ কাজে সময় লাগতো বেশি। কিন্তু হার্ডওয়্যারভিত্তিক হওয়ার জন্য সময় সাশ্রয় ও সফটওয়্যার নির্ভরশীলতা কমেছে।
এনভিডিয়ার টেসলাতে গিগাথ্রেড প্রযুক্তি ছিল, কিন্তু এতে কনটেক্সট সুইচিং এবং কনকারেন্ট কার্নেল এক্সিকিউশন যুক্ত হওয়াতে আরো উন্নতি হয়েছে। কনটেক্সট সুইচিং হলো একধরনের মাল্টিটাস্কিং, যেখানে প্রত্যেকটি প্রোগ্রাম অবশ্যই জিপিইউতে অবস্থান করে কিছু সময়ের জন্য। কনটেক্সট সুইচিংয়ে সময় যত কম লাগে জিপিইউ তত বেশি দ্রুততার সাথে কাজ করতে পারে। ফার্মিতে কনটেক্সট সময় কমিয়ে ২৫ মাইক্রোসেকেন্ডের নিচে আনা হয়েছে; যা সামগ্রিক ডিজিইউর পারফরমেন্স অনেক বাড়িয়ে দিয়েছে। একটি বড় প্রোগ্রামকে ভাগ করে ছোট ছোট কার্নেলে পরিণত করে একই সাথে জিপিইউতে চালনা করাকে কনকারেন্ট কার্নেল এক্সিকিউশন বলে। এজন্য কনকারেন্ট কার্নেল এক্সিকিউশন সিরিয়াল কার্নেল এক্সিকিউশন ব্যবহার করে।
যেহেতু কমপিউটার অ্যাপ্লিকেশন ও জিপিইউতে ব্যবহৃত অ্যালগরিদম জিপিইউর মেমরি ভিন্ন ভিন্নভাবে ব্যবহার করে, তাই অ্যাপ্লিকেশনের ধরন অনুযায়ী ফার্মি তার মেমরিগুলোকে সাজিয়ে নেয়। এজন্য টেসলাতে প্রতি স্ট্রিমিং প্রসেসরে ১৬ কিলোবাইট শেয়ার মেমরি ছিল, যেখানে ফার্মিতে ৬৪ কিলোবাইট শেয়ার মেমরি আছে। এ অনচিপ মেমরিগুলো ভাগ হয়ে ১৬/৩২/৪৮/৬৪ কিলোবাইট হিসেবে প্রোগ্রাম অনুযায়ী কাজ করতে পারে। যখন কোনো প্রোগ্রাম ৩২ কিলোবাইট মেমরি নিয়ে কাজ করে তখন অন্য একটি প্রোগ্রাম অন্য ৩২ কিলোবাইট মেমরি নিয়ে কাজ করে অনায়াসে। উপরন্তু L2 ক্যাশ মেমরি বাড়িয়ে ৭৬৮ কিলোবাইট করাতে কাজে আরো গতি বেড়েছে। আর এ L2 ক্যাশ মেমরি সাধারণ মেমরির তুলনায় ৩ গুণ গতিসম্পন্ন। ফ্লোটিং পয়েন্ট পদ্ধতি হলো কোনো বাইনারি সংখ্যার স্ট্রি। জিপিইউর দক্ষতা নির্ণয়ে ফ্লোটিং পয়েন্টের গুরুত্ব অনেক। যে জিপিইউ খুব দ্রুততার সাথে সঠিকভাবে ফ্লোটিং পয়েন্ট নির্ধারণ করতে পারে সেটি তত বেশি কার্যক্ষম। পূর্বের আর্কিটেকচারে ফ্লোটিং পয়েন্ট নির্ণয়ে সাবনরমালকে শূন্য ধরা হতো, যা অনেক সময় সঠিক হতো না। এক্ষেত্রে ম্যাড (মাল্টিপ্লাই অ্যাড ইনস্ট্রাকশন) ব্যবহার হতো, যেখানে প্রতি ব্লকে দুটি স্ট্রি যোগ ও গুণ একসাথে সম্পন্ন হতো। ফলে সাবনরমাল ভ্যালু শূন্য ধরাতে অনেক অপারেশনের সর্বশেষ ফলে ভুল আসতো। ফার্মিতে ব্যবহৃত এফএমএ (ফিউজড মাল্টিপ্লাই অ্যাড ইনস্ট্রাকশন) ব্যবহার করে এ সমস্যা কাটিয়ে ওঠা সম্ভব হয়েছে।
এখন যদিও ফার্মির তেমন সমস্যা ধরা পড়েনি, তবে অদূর ভবিষ্যতে ফার্মি কতটা কাজ সম্পন্ন করতে পারবে তা সময়ই বলে দেবে।
কজ ওয়েব
ফিডব্যাক : minitohid@yahoo.com