একটি 32-বিট সিস্টেম দ্বারা একটি 80-বিট ভাসমান পয়েন্ট কীভাবে ব্যবহার করা যেতে পারে? [প্রতিলিপি]


13

যেহেতু একটি 32 বিট সিস্টেম 2 ^ 33 নম্বর পরিচালনা করতে পারে না (কারণ স্পষ্টত 32-বিট সীমা), তাই 80 বিট ভাসমান পয়েন্ট সংখ্যাটি কীভাবে পরিচালনা করতে পারে ?

এর জন্য "80-বিট" প্রয়োজন ...


8
একইভাবে এটি একটি 64-বিট ভাসমান পয়েন্ট সংখ্যা করে। এটি 3 বা (2) 32-বিট রেজিস্টার ব্যবহার করে। যেহেতু ৮০-বিট ভাসমান পয়েন্ট সংখ্যাটি এমনকি কোনও আকারের আকার নয়, এটি আসলে একটি -৯-বিট নম্বর হবে যা কেবলমাত্র ৮০ বিট ব্যবহৃত হবে।
রামহাউন্ড

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

2
@ Ƭᴇcʜιᴇ007 বেশ একটি প্রতারিত যে এক। এটির মধ্যে একটি সংখ্যা এবং এর পাঠ্য / এএসসিআইআই প্রতিনিধিত্বের মধ্যে পার্থক্য সম্পর্কে আরও বেশি কিছু রয়েছে, যদিও সেই উত্তরগুলির মধ্যে কয়েকটি এটির সমাধানও করতে পারে।
বব

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

6
@ র্যামহাউন্ড: না, 80 বিট একটি 8087 বিশিষ্টতা এবং এটিতে 1 এফপি রেজিস্টার ব্যবহার করা হয়। এটি অবশ্যই একটি বিট সংখ্যা নয়।
ম্যাসাল্টারস

উত্তর:


35

32 বিট সিপিইউর একটি অর্থ হ'ল এর রেজিস্টারগুলি 32 বিট প্রশস্ত। এর অর্থ এই নয় যে এটি 64৪ বিট সংখ্যার সাথে ডিল করতে পারে না, কেবল এটি প্রথমে নিম্ন 32 বিট অর্ধেক, তারপরে উপরের 32 বিট অর্ধেক সেকেন্ডের সাথে ডিল করতে হবে। (এ কারণেই সিপিইউগুলির একটি বহন পতাকা রয়েছে )) সিপিইউ একটি বিস্তৃত bit৪ বিট রেজিস্টারে মানগুলি লোড করতে পারলে এটি ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে কম।

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

তবে, সিপিইউর ভাসমান পয়েন্ট অংশটির নিজস্ব রেজিস্টার রয়েছে এবং এগুলি 80 বিট প্রস্থের হিসাবে উদাহরণস্বরূপ, ইন্টেল 32 বিট প্রসেসর এবং ভাসমান পয়েন্টের সাথে এটির কোনও বিষয়ই গুরুত্বপূর্ণ নয়। (X86 এর ইতিহাসের প্রথমদিকে, ভাসমান পয়েন্টের ক্ষমতাটি একটি পৃথক চিপ ছিল, এটি সিপিইউতে 80486DX দিয়ে শুরু করে সংহত করা হয়েছিল))


@ ব্রেকথ্রুয়ের উত্তর আমাকে এটি যুক্ত করতে অনুপ্রাণিত করেছে।

ভাসমান পয়েন্টের মানগুলি, ইনফার যেমন এফপিইউ নিবন্ধগুলিতে সঞ্চিত থাকে, বাইনারি পূর্ণসংখ্যার মানগুলির তুলনায় খুব আলাদাভাবে কাজ করে।

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

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

আমি এর কয়েকটি সম্পর্কে ভুল এবং ভুল হতে পারি, তবে আমি বিশ্বাস করি এটিই এর মূল বক্তব্য। (এই উইকিপিডিয়া নিবন্ধটি উপরেরটিকে আরও কিছুটা সংক্ষেপে চিত্রিত করে rates)

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


4
আমার অনুপ্রেরণা থেকে আপনি যুক্ত সমস্ত কিছুই সঠিক, সুতরাং সেখানে কোনও উদ্বেগের কথা নয় :) আমার কেবল একটি পয়েন্ট উল্লেখ করা উচিত, যদিও আপনি নেটিভ সিপিইউ নির্দেশিকা ব্যবহার করতে পারেন যেখানে একটি ভাসমান-পয়েন্ট ইউনিট উপস্থিত রয়েছে, একজন সফ্টওয়্যারে ভাসমান পয়েন্ট অপারেশনও করতে পারেন (সমান বিটওয়াইজ সহ) বা পূর্ণসংখ্যার গণিত ক্রিয়াকলাপ)। সেই পর্যায়ে প্রসারিত করার জন্য, পর্যাপ্ত মেমরির পরে, আপনি সফ্টওয়্যার অ্যালগরিদম / লাইব্রেরিগুলি ব্যবহার করে (আমাদের নির্দিষ্ট 64৪-বিটের বিপরীতে বা এই ক্ষেত্রে 80০-বিটের বিপরীতে) স্বেচ্ছাসেবী সংক্ষিপ্ত নম্বরগুলিও রাখতে পারেন (সাধারণভাবে ব্যবহৃত একটি হ'ল GNU মাল্টিপল যথার্থতা গ্রন্থাগার )।
ব্রেকথ্রু

1
Nitpick: প্রথম ইন্টেল ইন্টিগ্রেটেড FPU 80486DX ছিলেন না 80386.
spudone

2
@মারকজজ: দরকার পড়লে কিছুই পাগল হয় না। আপনার পারমাণবিক মজুদ মূল্যায়নের জন্য একটি অ্যাটম বোমা অনুকরণ করতে 16 বিবিট ফ্লোট ব্যবহার করা পাগল কারণ এটি ফলাফলের প্রতি আপনার আত্মবিশ্বাসী হওয়ার পক্ষে এটি যথাযথ নয়। যে ক্ষেত্রে 32 বীট প্রয়োজন (এবং হ্যাঁ, পুরানো দিনগুলিতে এই গণনাগুলি 16 বিট পিডিপিতে করা হয়েছিল)। একইভাবে জলবায়ু অনুকরণ করতে 32 বিবিট ফোলেট ব্যবহার করা গণনার বিশৃঙ্খলার প্রকৃতির কারণে যথেষ্ট যথাযথ নয়।
slebetman

2
FWIW, আপনার পছন্দ আকারের এফপি ইউনিট ছাড়াই মেশিনগুলিতে ফ্লোটিং পয়েন্ট অপারেশনগুলি প্রয়োগ করার সাধারণ উপায় হ'ল এটি পূর্ণসংখ্যা নির্দেশাবলী ব্যবহার করে সফ্টওয়্যারটিতে করা। কারণ, দিন শেষে ভাসমান পয়েন্ট সংখ্যাটির প্রকাশক এবং ম্যান্টিসার উভয়ই কেবল পূর্ণসংখ্যা হয়। এটি আমরা কীভাবে তাদের ব্যাখ্যা করি যা তাদের বিশেষ অর্থ দেয়।
slebetman

2
@ পিটিউইআর x86 এ আপনার কাছে ডেটার জন্য 7 টি ব্যবহারযোগ্য জিপিআর রয়েছে, ইবিপি অন্তর্ভুক্ত রয়েছে। এটি কেবলমাত্র বেশিরভাগ ভাষার বাস্তবায়নগুলির এবিআই স্ট্যাক ফ্রেম পয়েন্টারের জন্য এই রেজিস্টারটি সংরক্ষণ করে। তবে যেমন জিসিসির সাহায্যে আপনি -fomit-frame-pointerসেই নিবন্ধটি ফিরে পেতে ব্যবহার করতে পারেন ।
Ruslan

13

32-বিট, 64-বিট, এবং 128-বিট সমস্ত প্রসেসরের শব্দের দৈর্ঘ্যের উল্লেখ করে, যা "মৌলিক ডেটা টাইপ" হিসাবে ভাবা যেতে পারে। প্রায়শই এটি সিস্টেমের র‍্যামে / থেকে স্থানান্তরিত বিটের সংখ্যা এবং পয়েন্টারগুলির প্রস্থ (যদিও কোনও কিছুই আপনাকে আরও র‌্যাম অ্যাক্সেস করতে সফ্টওয়্যার ব্যবহার করতে বাধা দেয় না তবে কোনও একক পয়েন্টার কী অ্যাক্সেস করতে পারে)।

ধ্রুবক ঘড়ির গতি (যেমন আর্কিটেকচারের সমস্ত কিছু ধ্রুবক হিসাবে ধরে নেওয়া) ধরে নেওয়া এবং ধরে নেওয়া মেমরির পাঠ্য / লেখাগুলি একই গতি হয় (আমরা এখানে 1 টি ঘড়ি চক্র ধরেছি তবে এটি বাস্তব জীবনের ক্ষেত্রে থেকে অনেক দূরে), আপনি পারেন clock৪-বিট মেশিনে একটি ঘড়ি চক্রের দুটি two৪-বিট নম্বর যুক্ত করুন (তিনটি যদি আপনি র‌্যাম থেকে নম্বর আনতে গণনা করেন):

ADDA [NUM1], [NUM2]
STAA [RESULT]

আমরা 32-বিট মেশিনেও একই গণনাটি করতে পারি ... তবে, 32-বিট মেশিনে, আমাদের সফ্টওয়্যারটিতে এটি করা দরকার, যেহেতু নীচের 32-বিটগুলি প্রথমে যুক্ত করা উচিত, ওভারফ্লোয়ের জন্য ক্ষতিপূরণ দিন, তারপরে যুক্ত করুন উপরের -৪ বিট:

     ADDA [NUM1_LOWER], [NUM2_LOWER]
     STAA [RESULT_LOWER]
     CLRA          ; I'm assuming the condition flags are not modified by this.
     BRNO CMPS     ; Branch to CMPS if there was no overflow.
     ADDA #1       ; If there was overflow, compensate the value of A.
CMPS ADDA [NUM1_UPPER], [NUM2_UPPER]
     STAA [RESULT_UPPER]

আমার তৈরি আপ অ্যাসেমবিলিটি সিনট্যাক্সের মধ্য দিয়ে যাচ্ছেন, আপনি সহজেই দেখতে পাবেন যে উচ্চতর নির্ভুলতা অপারেশনগুলি কীভাবে একটি নিম্ন শব্দের দৈর্ঘ্যের মেশিনে তাত্পর্যপূর্ণভাবে আরও বেশি সময় নিতে পারে। এটি 64-বিট এবং 128-বিট প্রসেসরের আসল চাবি: তারা আমাদের একক ক্রিয়াকলাপে বিট সংখ্যক বিট পরিচালনা করতে দেয়। কিছু মেশিনে ক্যারি সহ অন্যান্য পরিমাণ যুক্ত করার জন্য নির্দেশাবলী অন্তর্ভুক্ত করা হয় (উদাহরণস্বরূপ ADCx86 এ) তবে উপরের উদাহরণটিতে নির্বিচারে যথার্থ মানগুলি মনে রাখা হয়।


এখন, এই প্রশ্নের প্রসারিত করার জন্য, আমরা কীভাবে আমাদের উপলব্ধ রেজিস্টারগুলির চেয়ে বৃহত্তর সংখ্যা যুক্ত করতে পারি তা দেখতে সহজ - আমরা কেবল সমস্যাটিকে রেজিস্টরের আকারকে ভেঙে ফেলেছি এবং সেখান থেকে কাজ করব। যদিও @ মাত্তিও ইটালিয়া দ্বারা উল্লিখিত হয়েছে , x87 এফপিইউ স্ট্যাকের 80-বিট পরিমাণের জন্য স্থানীয় সমর্থন রয়েছে, সিস্টেমগুলিতে এই সমর্থনটির অভাব রয়েছে (বা প্রসেসরগুলি সম্পূর্ণরূপে একটি ভাসমান পয়েন্ট ইউনিট অভাবী নয়!), সমতুল্য গণনা / ক্রিয়াকলাপ অবশ্যই সফ্টওয়্যারেই করা উচিত ।

সুতরাং একটি ৮০-বিট সংখ্যার জন্য, প্রতিটি ৩২-বিট সেগমেন্ট যুক্ত করার পরে, কেউ ৮১-বিট বিটের মধ্যে ওভারফ্লো পরীক্ষা করতে পারে এবং optionচ্ছিকভাবে উচ্চতর অর্ডার বিটগুলি শূন্য করে। এই চেক / জিরোগুলি নির্দিষ্ট x86 এবং x86-64 নির্দেশাবলীর জন্য স্বয়ংক্রিয়ভাবে সঞ্চালিত হয়, যেখানে উত্স এবং গন্তব্য অপারেন্ড আকারগুলি নির্দিষ্ট করা হয়েছে (যদিও এগুলি কেবল 1 বাইট প্রশস্ত থেকে শুরু করে 2 এর শক্তিতে নির্দিষ্ট করা হয়)।

অবশ্যই, ভাসমান পয়েন্ট সংখ্যাগুলির সাথে, ম্যান্টিসা এবং উল্লেখযোগ্য অঙ্কগুলি অফসেট আকারে একত্রে প্যাক করা হওয়ায় কেউ কেবল বাইনারি সংযোজন করতে পারে না। X86 প্রসেসরের ALU- তে, আইইইই 32-বিট এবং 64-বিট ফ্লোটগুলির জন্য এটি সম্পাদন করার জন্য একটি হার্ডওয়্যার সার্কিট রয়েছে; তবে , এমনকি ফ্লোটিং-পয়েন্ট ইউনিট (এফপিইউ) এর অভাবে একই গণনা সফ্টওয়্যারে করা যেতে পারে (যেমন, জিএনইউ সায়েন্টিফিক লাইব্রেরি ব্যবহারের মাধ্যমে , যা একটি এফপিইউ ব্যবহার করে যখন আর্কিটেকচারের সাথে সংকলন করা হয়, সফ্টওয়্যার অ্যালগরিদমে ফিরে যেতে পারে) যদি কোনও ভাসমান-পয়েন্ট হার্ডওয়্যার উপলভ্য না হয় [যেমন এমপিডেড মাইক্রোকন্ট্রোলারের জন্য এফপিইউ নেই)।

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


2
আপনি সর্বাধিক গুরুত্বপূর্ণ বিশদটি উল্লেখ করতে ব্যর্থ হচ্ছেন: x86 প্ল্যাটফর্মের x87 এফপিইউতে 80-বিট প্রশস্ত ভাসমান পয়েন্ট রেজিস্টার রয়েছে, সুতরাং এর নেটিভ গণনাগুলি আসলে 80 বিট ফ্লোটে করা হয়, সফ্টওয়্যারটিতে কোনও কিছু অনুকরণ করার প্রয়োজন নেই।
মাত্তেও ইতালি

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

5

সিস্টেমের মেমরি আর্কিটেকচার আপনাকে একবারে একবারে 32 বিট স্থানান্তর করতে দেয় - তবে এটি বৃহত্তর সংখ্যা ব্যবহার করা থেকে বিরত থাকে না।

গুণনের কথা ভাবুন। আপনি 10x10 অবধি আপনার গুণক টেবিলগুলি জানেন, তবুও সম্ভবত আপনার কোনও কাগজের টুকরোতে 123x321 সম্পাদন করতে কোনও সমস্যা নেই: আপনি কেবল এটিকে অনেকগুলি ছোট ছোট সমস্যায় বিভক্ত করেন, স্বতন্ত্র অঙ্কগুলি গুণিত করে এবং বহন যত্ন নেওয়া ইত্যাদি

প্রসেসর একই জিনিস করতে পারেন। "পুরানো দিনগুলিতে" আপনার কাছে 8 টি বিট প্রসেসর ছিল যা ভাসমান পয়েন্ট গণিত করতে পারে। তবে তারা স্লুওউও ছিল।


1
তারা একটি নির্দিষ্ট পয়েন্ট পরে ধীরে ধীরে ছিল। আপনি যদি কোনও নির্দিষ্ট স্পেসিফিকেশনে নিজেকে সীমাবদ্ধ রাখেন তবে আপনি "দ্রুত" ভাসমান পয়েন্ট অপারেশন লিখতে পারেন।
রামহাউন্ড

3

"32-বিট" প্রকৃতপক্ষে প্রসেসরের শ্রেণিবদ্ধ করার একটি উপায়, সেট-ইন-স্টোন রুলিং নয়। একটি "32-বিট" প্রসেসরের সাথে কাজ করার জন্য 32 বিট সাধারণ উদ্দেশ্যে নিবন্ধগুলি থাকে isters

যাইহোক, প্রসেসরের সমস্ত কিছু 32-বিট-এ সম্পন্ন করা উচিত পাথরের প্রয়োজনীয়তার কোনও সেট নেই। উদাহরণস্বরূপ, একটি "32-বিট" কম্পিউটারের জন্য 28-বিট অ্যাড্রেস বাস থাকা শোনা যায় নি, কারণ এটি হার্ডওয়্যারটি তৈরি করা সস্তা ছিল। -৪-বিট কম্পিউটারগুলিতে প্রায়শই একই কারণে একটি 40-বিট বা 48-বিট মেমরি বাস থাকে।

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

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

ইন্টেল সমাধানটি হ'ল ভাসমান পয়েন্ট রেজিস্টারগুলিতে সমস্ত 80 বিট হয় তবে সেই নিবন্ধগুলিতে / থেকে মানগুলি সরানোর নির্দেশাবলী প্রাথমিকভাবে 64-বিট সংখ্যা সহ কাজ করে। যতক্ষণ আপনি ইন্টেলের এক্স ৮87৮ ফ্লোটিং পয়েন্ট স্ট্যাকের মধ্যে পুরোপুরি পরিচালনা করেন, আপনার সমস্ত অপারেশন 80 বিট নির্ভুলতার সাথে সম্পন্ন হয়। যদি আপনার কোডটিকে ভাসমান পয়েন্ট নিবন্ধগুলির মধ্যে সেই মানগুলির মধ্যে একটি টানতে এবং এটি কোথাও সঞ্চয় করতে হয় তবে এটি এটিকে 64-বিট করে কেটে দেয়।

গল্পের নৈতিকতা: "32-বিট" এর মতো শ্রেণীবদ্ধকরণগুলি আপনি যখন বিষয়গুলিতে আরও গভীর হন তখন সর্বদা ঝুঁকিপূর্ণ হয়!


তবে যদি আমি একটি 16 বিট সিস্টেমে 32 বিট ভাসমান পয়েন্ট মানগুলি ব্যবহার করি (বা 32 বিট সিস্টেমে bit৪ বিট ভাসমান পয়েন্টের মানগুলি) তবে এটির জন্য আরও বেশি মেমরি প্রয়োজন (যেহেতু এটি অবশ্যই দু'বার নিবন্ধভুক্ত করতে হবে)? বা তথ্য প্রক্রিয়াকরণ ওভারহেড যোগ করবে, তাই আরও সময় লাগবে?
মার্কজজ

@markzzz: ওয়ার্কিং একাধিক রেজিস্টার সঙ্গে প্রায় সবসময় বেশি সময় লাগে
হাঁসের গরুর

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

2

একটি "32-বিট" সিপিইউ হ'ল যেখানে বেশিরভাগ ডেটা রেজিস্টারগুলি 32-বিট রেজিস্টার হয় এবং বেশিরভাগ নির্দেশাবলী সেই 32-বিট রেজিস্টারে ডেটা ব্যবহার করে। একটি 32-বিট সিপিইউ একবারে মেমরি 32-বিট থেকে ডেটা স্থানান্তর করতে পারে to বেশিরভাগ রেজিস্টারগুলি 32-বিট হওয়ার অর্থ এই নয় যে সমস্ত রেজিস্টারগুলি 32-বিট হয়। সংক্ষিপ্ত উত্তরটি হ'ল একটি 32-বিট সিপিইউতে এমন কিছু বৈশিষ্ট্য থাকতে পারে যা অন্যান্য বিটক্টগুলি ব্যবহার করে, যেমন 80-বিট ভাসমান পয়েন্ট রেজিস্টার এবং সংশ্লিষ্ট নির্দেশাবলী।

@ স্পডোন যেমন @ আল্ট্রাসওয়াব্লাইডের উত্তরে একটি মন্তব্যে বলেছিলেন, ইন্টিগ্রেটেড ফ্লোটিং-পয়েন্ট অপারেশনগুলি চালিত প্রথম x86 সিপিইউটি ছিল ইনটেল আই 486 (বিশেষত 80486 ডিএক্স নয় তবে 80486 এসএক্স), যা আই 486 মাইক্রোপ্রসেসর প্রোগ্রামারগুলির পৃষ্ঠা 15-1 অনুসারে রেফারেন্স ম্যানুয়াল , এর সংখ্যাসূচক নিবন্ধগুলিতে "আটটি স্বতন্ত্র-ঠিকানাযোগ্য 80-বিট সংখ্যাসূচক নিবন্ধসমূহ" অন্তর্ভুক্ত করে। আই 486-এ 32-বিট মেমরি বাস রয়েছে, সুতরাং 80-বিট মান স্থানান্তর করতে 3 মেমরি অপারেশন লাগবে।

486 প্রজন্মের পূর্বসূরীর i386 এর কোনও সংহত ভাসমান-পয়েন্ট অপারেশন নেই। পরিবর্তে, এটি একটি বহিরাগত ভাসমান বিন্দু "কোপ্রোসেসর", 80387 ব্যবহার করার জন্য সমর্থন পেয়েছিল This এই কপ্রোসেসরের প্রায় একই কার্যকারিতা ছিল যা আই 486 তে সংহত হয়েছিল, আপনি 80387 প্রোগ্রামার রেফারেন্স ম্যানুয়ালটির পৃষ্ঠা 2-1 থেকে দেখতে পারেন ।

৮০-বিট ভাসমান পয়েন্ট ফর্ম্যাটটি ৮০ 8087 এবং ৮০৮৮ এর জন্য গণিতের কপো প্রসেসরের সাথে উদ্ভূত বলে মনে হয়েছে 80 ৮০86 এবং ৮০৮ 16 ছিল ১-বিট সিপিইউ (১ 16-বিট এবং ৮-বিট মেমরি বাস সহ), এবং এখনও সক্ষম ছিল কপ্রোসেসরে 80 বিট রেজিস্টারগুলির সুবিধা গ্রহণ করে 80 বিট ফ্লোটিং পয়েন্ট ফর্ম্যাট ব্যবহার করতে।

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