কম্পিউটার বিজ্ঞানের ভিত্তি/গণনামূলক যন্ত্রপাতি

গণনামূলক যন্ত্রপাতি

সম্পাদনা

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

কম্পিউটার হার্ডওয়্যার

সম্পাদনা

কম্পিউটার হার্ডওয়্যার যা স্বয়ংক্রিয়ভাবে গণনা করতে পারে তা অনেক দিন ধরে রয়েছে। প্রাথমিক কম্পিউটার থেকে আধুনিক কম্পিউটার পর্যন্ত আজ আমাদের একটি সংক্ষিপ্ত ইতিহাস রয়েছে।

যান্ত্রিক কম্পিউটার

সম্পাদনা

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

অ্যানালগ কম্পিউটার

সম্পাদনা

২০ শতকের গোড়ার দিকে যান্ত্রিক এনালগ কম্পিউটারগুলি ক্রমবর্ধমান পরিশীলিত কম্পিউটিং সম্পাদন করার জন্য ডিজাইন করা হয়েছে, যেমন ইন্টিগ্রেশন দ্বারা ডিফারেনশিয়াল সমীকরণ সমাধান করা। অ্যানালগ কম্পিউটারগুলি গণনার মডেল/পরিমাণ নির্ধারণের জন্য বৈদ্যুতিক, যান্ত্রিক বা জলবাহী পরিমাণের মতো শারীরিক ঘটনাগুলির ক্রমাগত পরিবর্তনযোগ্য দিকগুলি ব্যবহার করে, যা আধুনিক ডিজিটাল কম্পিউটারের নির্ভুলতার অভাব রয়েছে।

ডিজিটাল কম্পিউটার

সম্পাদনা

বিশ্বের প্রথম সম্পূর্ণ স্বয়ংক্রিয় ডিজিটাল কম্পিউটার হল ১৯৪১ সালে কনরাড জুসের তৈরি ইলেক্ট্রোমেকানিকাল প্রোগ্রামেবল কম্পিউটার Z3। Z3 বৈদ্যুতিক সুইচ ব্যবহার করে যা গণনা সম্পাদনের জন্য যান্ত্রিক রিলে চালায়। এটি দশমিক পদ্ধতিকে বাইনারি পদ্ধতির সাথে প্রতিস্থাপন করে এবং ভাসমান বিন্দু সংখ্যার ব্যবহারের পথপ্রদর্শক। প্রোগ্রাম এবং ডেটা পাঞ্চড ফিল্মে সংরক্ষণ করা হয়। একটি ডিজিটাল ডিভাইস এবং একটি এনালগ ডিভাইসের মধ্যে পার্থক্য হল মানগুলির উপস্থাপনাগুলি বিচ্ছিন্ন বা অবিচ্ছিন্ন কিনা। উদাহরণস্বরূপ, কালো এবং সাদা পৃথক মান কিন্তু তাদের অসীম সংখ্যক ধূসর রঙ।

ইলেকট্রনিক ডিজিটাল কম্পিউটার

সম্পাদনা

বিশ্বের প্রথম বৈদ্যুতিন ডিজিটাল প্রোগ্রামেবল কম্পিউটার হল কলসাস, যা ১৯৪৩ সালে প্রচুর সংখ্যক ভালভ (ভ্যাকুয়াম টিউব) দিয়ে নির্মিত হয়েছিল। নকশাটি সম্পূর্ণ বৈদ্যুতিক ছিল এবং জার্মান এনিগমা কোড ভাঙতে ব্যবহৃত হয়েছিল।

ট্রানজিস্টর কম্পিউটার

সম্পাদনা

১৯৫৫ সাল থেকে ভ্যাকুয়াম টিউবগুলি কম্পিউটার নকশায় ট্রানজিস্টর দ্বারা প্রতিস্থাপিত হয় যার ফলে ছোট, আরও নির্ভরযোগ্য এবং আরও শক্তি দক্ষ দ্বিতীয় প্রজন্মের কম্পিউটার তৈরি হয়, যা কম্পিউটারের "দ্বিতীয় প্রজন্মের" জন্ম দেয়।

ইন্টিগ্রেটেড সার্কিট কম্পিউটার

সম্পাদনা

১৯৫২ সালে ইন্টিগ্রেটেড সার্কিটের উদ্ভাবন কম্পিউটিং যন্ত্রপাতি-মাইক্রো-কম্পিউটারের একটি নতুন যুগের সূচনা করে। ইন্টিগ্রেটেড সার্কিট সহ মাইক্রোপ্রসেসরগুলি সাধারণ কম্পিউটিং ডিভাইস তৈরি করতে ব্যবহৃত হয় যা আপনি আজ দেখেনঃ ডেস্কটপ কম্পিউটার, ল্যাপটপ কম্পিউটার, ফোন এবং অভিবাদন কার্ড।

ডিজিটাল কম্পিউটিংয়ের মূলনীতি

সম্পাদনা

ডিজিটাল কম্পিউটিংয়ের গাণিতিক ভিত্তি হল জর্জ বুলের উদ্ভাবিত বুলিয়ান লজিক। ক্লড শ্যানন ১৯৩০-এর দশকে প্রমাণ করেছিলেন যে বৈদ্যুতিন বর্তনীগুলি বুলিয়ান যুক্তি ব্যবহার করে বাইনারিতে গণনা করতে পারে, যা সমস্ত আধুনিক কম্পিউটিং ডিভাইসের পিছনে মৌলিক নীতি/ধারণা হয়ে ওঠে।

বুলিয়ান বীজগণিত

সম্পাদনা

বুলিয়ান বীজগণিতে তিনটি ক্রিয়া রয়েছে AND, OR, এবং দুটি মানের উপর নয়ঃ সত্য এবং মিথ্যা। তিনটি অপারেশন মূল্যায়নের নিয়ম ছবিতে দেখানো হয়েছে।   একটি বুলিয়ান অপারেশন বুলিয়ান মানের উপর কাজ করে এবং সর্বদা একটি বুলিয়ান মানের ফলাফল দেয়। AND অপারেশনের জন্য ফলাফল তখনই সত্য হয় যখন উভয় অপারেন্ডই সত্য হয়। অন্যদিকে, OR অপারেশন শুধুমাত্র একটি মিথ্যা মানের ফলাফল দেয় যদি দুটি অপারেন্ডের মধ্যে একটি মিথ্যা হয়। নট অপারেশন একটি অপারেন্ড নেয় এবং কেবল এটিকে অস্বীকার করে। আমরা দেখব যে আমরা ইলেকট্রনিক সার্কিট তৈরি করতে পারি কিনা যা তিনটি অপারেশন বাস্তবায়ন করে আমরা সার্কিট তৈরি করতে পারি যা সব ধরনের গাণিতিক এবং লজিক ফাংশন সম্পাদন করতে পারে।

ট্রানজিস্টর ব্যবহার করে তিনটি বুলিয়ান অপারেশন শারীরিকভাবে প্রয়োগ করা যেতে পারে। একটি ট্রানজিস্টর মূলত একটি ছোট সুইচ যা চিত্রে দেখানো হয়েছে।   যখন কন্ট্রোল পিনে একটি উচ্চ ভোল্টেজ (লজিক্যাল ১) প্রয়োগ করা হয় তখন সুইচটি ইন পিনটিকে সরাসরি আউট পিনের সাথে সংযুক্ত করে বন্ধ করা হয়। ট্রানজিস্টর দুটি ভোল্টেজের উপর কাজ করেঃ উচ্চ এবং নিম্ন, যা দুটি ভিন্ন যৌক্তিক মান উপস্থাপন করতে ব্যবহার করা যেতে পারেঃ সত্য এবং মিথ্যা বা দুটি বাইনারি মানঃ ১ এবং ০। আমরা একটি লজিক্যাল ১ এবং একটি নিম্ন ভোল্টেজ লজিক্যাল 0 উপস্থাপন করতে একটি উচ্চ ভোল্টেজ ব্যবহার করব।

ট্রানজিস্টর এবং লজিক গেট

সম্পাদনা

ট্রানজিস্টর হল সাধারণ ডিভাইস যা ক্ষুদ্র, কিন্তু এটি ইলেকট্রনিক সার্কিটের মৌলিক বিল্ডিং ব্লক। উদাহরণস্বরূপ আমরা চিত্রে দেখানো একটি একক ট্রানজিস্টর ব্যবহার করে নট গেট নামে একটি ডিভাইস তৈরি করতে পারি।   যদি আমরা লাল বাক্সের ভিতরে যা আছে তা একটি একক হিসাবে বিবেচনা করি তবে এটি নেতিবাচকের মতো আচরণ করে, যা ডিজিটাল লজিক ডিজাইনে নট গেট হিসাবে পরিচিত। এই ডিভাইসের জন্য সত্য সারণিতে যেমন দেখানো হয়েছে (চিত্রের পাশে) যখন ইনপুটটি লজিক্যাল ১ হয় তখন সুইচটি বন্ধ হয়ে যায় এবং আউটপুট ভোল্টেজকে নীচের দিকে টেনে নিয়ে যায় যা লজিক্যাল ০ বোঝায়। অন্যদিকে, যখন ইনপুটটি লজিক্যাল 0 হয় তখন সুইচটি খোলা থাকে যার ফলে আউটপুট লাইনে উচ্চ ভোল্টেজ হয় কারণ এটি একটি রেজিস্টারের মাধ্যমে পাওয়ারের সাথে সংযুক্ত থাকে এবং বিদ্যুৎ ছাড়া রেজিস্টারটি কোনও শক্তি হ্রাস করবে না। একবার এই যন্ত্রটি তৈরি হয়ে গেলে আমরা এটিকে আরও জটিল সার্কিট তৈরি করতে বিল্ডিং ব্লক হিসাবে ব্যবহার করতে পারি। NOT গেটের প্রতিনিধিত্ব করতে নিম্নলিখিত প্রতীকটি ব্যবহার করবে।   ট্রানজিস্টর এবং নট গেট দিয়ে আমরা একটি ডিভাইস তৈরি করতে পারি যা AND অপারেশন সম্পাদন করে।   চিত্রে যেমন দেখানো হয়েছে, যন্ত্রটি সঠিকভাবে একটি AND অপারেশন সম্পাদন করে। আউটপুট লজিক্যাল 1 (উচ্চ ভোল্টেজ) শুধুমাত্র তখনই হয় যখন উভয় ইনপুট লজিক্যাল 1 হয়, যার ফলে উভয় সুইচ NOT গেটের আগে আউটপুট টেনে কমিয়ে দেয়। NOT গেট তারপর আউটপুটকে উচ্চ ভোল্টেজ বা লজিক্যাল 1 হিসাবে প্রত্যাখ্যান করে।

একইভাবে আমরা OR অপারেশন সম্পাদনের জন্য একটি ডিভাইস তৈরি করতে পারি।

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

গেটস টু সার্কিট

সম্পাদনা

তিনটি মৌলিক গেট (AND, OR, NOT) দিয়ে আমরা যে কোনও সম্মিলিত লজিক সার্কিট তৈরি করতে পারি। একটি বর্তনী ইনপুট তার, তার দ্বারা সংযুক্ত গেট এবং আউটপুট তার নিয়ে গঠিত। একবার একটি সার্কিট ডিজাইন করা হলে এটি একটি ব্ল্যাক বক্স হিসাবে দেখা যেতে পারে যা আউটপুটে কিছু লজিক ম্যাপিং ইনপুট প্রয়োগ করে। এখানে স্ট্যান্ডার্ড সার্কিট নির্মাণ অ্যালগরিদম রয়েছেঃ ১।কাঙ্ক্ষিত যুক্তি থেকে একটি সত্য টেবিল তৈরি করুন ২।পণ্যের সমষ্টি আকারে একটি যুক্তির অভিব্যক্তি তৈরি করুন ৩।গেট ব্যবহার করে অভিব্যক্তিটিকে সার্কিট ডিজাইনে রূপান্তর করুন

আমরা এমন একটি সার্কিট তৈরি করতে চাই যা দুটি বিটের সমতা পরীক্ষা করে। দুটি ইনপুট হল দুটি বিট যা উচ্চ ভোল্টেজ (লজিক্যাল ১) বা কম ভোল্টেজ দ্বারা শারীরিকভাবে প্রতিনিধিত্ব করে। (লজিক্যাল ০). বর্তনীর কাঙ্ক্ষিত যুক্তি অনুসারে আমরা নিম্নলিখিত সত্য সারণীটি আঁকতে পারিঃ

 

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

(a এবং b) অথবা (a না) এবং (b না))

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

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

 

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

 

আমরা একাধিক এক-বিট অ্যাডার সংযুক্ত করে মাল্টি-বিট অ্যাডার তৈরি করতে পারি। নিম্নলিখিত চিত্রটি দেখায় যে প্রথম এক-বিট অ্যাডারের ক্যারি-আউটকে দ্বিতীয় এক-বিট অ্যাডারের ক্যারি-ইন-এর সাথে সংযুক্ত করে একটি দুই-বিট অ্যাডার তৈরি করা যেতে পারে।

 

 
ল্যাম্প ডায়াগনসিস অ্যালগরিদমের জন্য একটি সহজ ফ্লো চার্ট
 
অ্যালগরিদমের জন্য একটি ফ্লো চার্ট যা গণনা N করে!

কম্পিউটারের তথ্য ভাণ্ডার