কম্পিউটারগুলি আসলে ক্যারি-লুকএড অ্যাডারের ব্যবহার করে?


12

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

আমার প্রশ্ন হ'ল, কোনও নির্দিষ্ট স্থান / বাস্তবায়ন কি বহনযোগ্য চেহারা সংযোজনকারীদের ব্যবহার করা হয়? তারা কি বাস্তব বিশ্বের সাথে অপ্রাসঙ্গিক?


1
উচ্চ পারফরম্যান্স প্রসেসরের চক্র সময় এবং তাদের একক চক্রটি অবশ্যই প্রচ্ছন্নতা বহন না করে তাদের দিকে নির্দেশ করে (তবে এটি বহনকারী নির্বাচনের অনুমতি দেয়)। এমনকি ইন্টেলের 22nm প্রক্রিয়াটির জন্য, 300ps এরও কম সময়ে 64 বিটের মাধ্যমে ছড়িয়ে পড়া অসম্ভব।
পল এ। ক্লেটন

@ পলএ.ক্লেটন আমি কয়েকটি ডেটাশিট সন্ধানের মাধ্যমে ধারণাটি পেয়েছি যেগুলি বহন করে-নির্বাচন করে বা ডিকোডারের মতো অ্যাডার ব্যবহার করে।
qwr

উত্তর:


16

এটি একটি অত্যন্ত জটিল উত্তর সহ একটি সরল প্রশ্ন।

প্রথম বন্ধ, কিছু পটভূমি।

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

দ্বিতীয়ত, আপনাকে কোনও প্রকল্পের পুরো জীবনচক্রটি বিবেচনা করতে হবে। একটি সংযোজন যা কোনও ভিএলএসআই উপলব্ধির জন্য উপযুক্ত এটি কোনও এফপিজিএ উপলব্ধির জন্য উপযুক্ত নাও হতে পারে। যদি ডিজাইনটি কোনও এফপিজিএ পরীক্ষিত একটি পর্যায়ের মধ্য দিয়ে চলে যায় ... আপনি ছবিটি পান।

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

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

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

এটি বলে যাওয়ার পরে, আমরা কয়েকটি জিনিস জানি।

আপনার প্রধান জিনিসটি বুঝতে হবে যে হ'ল বহনযোগ্য পদ্ধতিগুলি ব্লকগুলি তৈরি করছে এবং প্রয়োজনীয় পদ্ধতিগুলি তাদের মধ্যে প্রয়োজনীয় নয়। একটি সাদৃশ্য এখানে হতে পারে।

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

GNU C ++ স্ট্যান্ডার্ড লাইব্রেরি থেকে সাজানো অ্যালগরিদম, উদাহরণস্বরূপ, অন্তরগুলি পর্যাপ্ত পরিমাণে ছোট হয়ে গেলে সন্নিবেশ সারণি ব্যবহার করে দ্রুত সাজান ব্যবহার করে। তবে, কয়েক পাসের পরে যদি মনে হয় দ্রুত সাজানোর পার্টিশনটি প্যাথলজিকাল আচরণে আঘাত পেয়েছে, তবে এটি হিপ সাজানোর ক্ষেত্রে ফিরে আসে। একটি শিল্প-শক্তির সাজানোর জন্য এটি তিনটি পৃথক ধরণের অ্যালগোরিদম।

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

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

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

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


6

হ্যাঁ, অনেকগুলি কম্পিউটার ক্যারি-লুকএড অ্যাডার ব্যবহার করে। আমি কিছু পুরানো মাইক্রোপ্রসেসরের বিপরীত ইঞ্জিনিয়ার করেছি এবং আমি কিছু উদাহরণ দিতে পারি।

ইন্টেল 8008 এর ALU (তাদের প্রথম 8-বিট প্রসেসর) ডায়নামিক লজিকের সাথে বাস্তবায়িত একটি বৃহত ক্যারি-লুকোহেড সার্কিট অন্তর্ভুক্ত করেছে। এই সার্কিটটি এএলইউর মতোই মরার জায়গা নিয়েছে। ক্যারি লুকোহেড 8008 ডেটাশিটে চিত্র 3 এ দেখানো হয়েছে , আমি ALU এর জন্য ক্যারি-লুকহ্যাড সহ 1970 এর দশকের অন্য কোনও প্রসেসর দেখিনি, তাই 8008 এ ব্যাপারে কিছুটা অস্বাভাবিক।

6502 প্রোগ্রামের কাউন্টার (পিসি) ইনক্রিমেন্টারের জন্য আদিম বহন-চেহারাটি ব্যবহার করে। এটি পিসির নিম্ন বাইট থেকে কোনও ক্যারি থাকবে কিনা তা সনাক্ত করে এবং এটি উপরের বাইটকে বাড়ানোর জন্য ব্যবহার করে। এটি রিপল ক্যারিটি সম্ভাব্য 16 বিট থেকে 8 বিটে হ্রাস করে। 6502 এর এএলইউ রিপল ক্যারি ব্যবহার করে, যদিও ক্যারি যুক্তিটি বিটগুলি পরিবর্তনের জন্য উল্টানো হয়, যা একটি ইনভার্টারটিকে পথ থেকে বের করে দেয় এবং এটিকে কিছুটা দ্রুততর করে তোলে।

জেড -80 এ পিসি আপডেটগুলি, ইনক / ডেস নির্দেশাবলী এবং লুপের কাউন্টারে 16 বিট ইনক্রিমেন্টার / ডেসিমেন্টার ব্যবহার করা হয়। এটি একটি ক্যারি-স্কিপ কাঠামো ব্যবহার করে যাতে বহন করে দুটি বিটের গ্রুপের জন্য গণনা করা হয়। এছাড়াও, এটি 0-7, 7-11 এবং 12-14 বিট থেকে ক্যারি জেনারেট করতে কিছু ক্যারি লুক-হেড ব্যবহার করে। অন্যান্য বাহকগুলি রিপল ক্যারি ( বিশদ ) দিয়ে গণনা করা হয় । Z-80 এর ALU, আশ্চর্যজনকভাবে 4 বিট, তাই প্রতিটি 8-বিট অপারেশন দুটি ALU দিয়ে যায়।

অন্যদিকে, 8085 তার 16-বিট ইনক্রিমেন্টার / ডেসিমেনটারের জন্য রিপল ক্যারি ব্যবহার করে। তবে 6502 এর মত, এটি বিকল্প বিটগুলিতে বহন করার যুক্তিটি উল্টিয়ে কিছুটা গতি অর্জন করে।

এআরএম-1 কোন হ্যান্ড lookahead শুধু লহরী বহন সঙ্গে একটি 32 বিট ALU হয়েছে। এটি বিকল্প বিটগুলিতে ক্যারিটি উল্টানোর কৌশলও ব্যবহার করে।

মিনিকম্পিউটার ওয়ার্ল্ডে, অনেক প্রসেসর সুপরিচিত 74181 4-বিট ALU চিপ থেকে তৈরি করা হয়েছিল, যার অভ্যন্তরীণ ক্যারি লুক ছিল look উদাহরণগুলির মধ্যে রয়েছে ডেটা জেনারেল নোভা, জেরক্স আল্টো, ভ্যাক্স -11 / 780 এবং টিআই -990। (লম্বা উইকিপিডিয়া তালিকাগুলি দেখুন Some) এর মধ্যে কয়েকটি ব্যবহৃত লহর প্রতিটি প্রতিটি 4-বিট চিপের মাঝে বহন করে এবং কিছু 74152 ক্যালিয়ার লুকোহেড চিপ ব্যবহার করে পুরো লুকোহেডের জন্য।

সংক্ষিপ্তসার হিসাবে, বিভিন্ন মাইক্রোপ্রসেসরগুলি তাদের কার্যকারিতা লক্ষ্য এবং কী অপারেশনগুলি সমালোচনামূলক পথে চলছে তার উপর নির্ভর করে বিভিন্ন ধরণের ক্যারি কৌশল ব্যবহার করে। এএলইউ পুরো ক্যারি লুক-হেড ব্যবহার করতে পারে (8008 এর মতো) বা এমনকি অর্ধ আকারের (জেড -80 এর মতো) হতে পারে। ইনক্রিমেন্টার একটি পারফরম্যান্স সমস্যা হতে পারে কারণ এটি 8-বিট প্রসেসরের সাধারণত 16 বিট হয়, ফলস্বরূপ দ্বিগুণ দ্বিধা হয়। ইনক্রিমেন্টারে রিপল ক্যারি (8085), একটি ক্যারি লুকোহেড (6502) বা বেশ কয়েকটি ক্যারি লুকোহেড স্টেজ (জেড -80) থাকতে পারে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.