64৪-বিট মেশিনে -৪-বিটের পরিবর্তে 32-বিট সফ্টওয়্যার চালানোর কোনও উপযুক্ত কারণ আছে?


56

আধুনিক ডেস্কটপ মেশিনগুলিতে লক্ষ্যযুক্ত কোনও সফ্টওয়্যার a৪-বিট সংস্করণ সহ 64৪-বিট হার্ডওয়্যারে আধুনিক 64৪-বিট অপারেটিং সিস্টেম চালিয়ে যাওয়ার জন্য কোনও 32-বিট সংস্করণ সরবরাহ করার কোনও ভাল কারণ আছে কি?

দেখে মনে হয় যে -৪-বিট সফটওয়্যারটি আরও দক্ষ হবে, প্রয়োজনে উচ্চতর মেমরির ব্যবহারের অনুমতি দেবে ইত্যাদি Apple অ্যাপল এমনকি তাদের ফোনের জন্য -৪-বিট প্রসেসর ব্যবহার করে, যদিও তাদের কাছে কেবল মাত্র ২ গিগাবাইট র‌্যাম রয়েছে, 4 জিবি নীচের দিকে way 32-বিট সিপিইউ'র জন্য সীমা।


16
প্রতিটি আধুনিক মেশিন 64 বিট ওএস চালায় না
বিলিন্ট

4
আপনার কোন উদাহরণ আছে?
ফিলিপ হাগলুন্ড

8
আপনার গ্রাহকদের জিজ্ঞাসা করুন।
মার্ফি

22
অলৌকিক প্রশ্ন: বেশিরভাগ আধুনিক bit৪ বিট অপারেটিং সিস্টেমগুলি 32 বিট এবং 64 বিট অ্যাপ্লিকেশনগুলি চালানোর অনুমতি দেয় বলে কোনও সফ্টওয়্যারের একটি 64 বিট সংস্করণ সরবরাহ করার কোনও কারণ আছে কি?
ডক ব্রাউন

2
একটি সদৃশ @gnat নয়। এই প্রশ্নটি একটি টাইমস্ট্যাম্প ফিট করার বিষয়ে, এবং কোনও প্রোগ্রাম বের হয়ে গেলে ত্রুটি কোডে একটি বিকাশকারী আইডি ফিরে আসে।
ফিলিপ হাগলুন্ড

উত্তর:


80

-৪-বিট পরিবেশে 32-বিট সফ্টওয়্যারটির সুবিধা

  • লোয়ার মেমরির পদক্ষেপ, বিশেষত পয়েন্টার-ভারী অ্যাপ্লিকেশনগুলিতে, 64-বিট বনাম 32-বিট সহজেই মেমরির প্রয়োজনীয়তা দ্বিগুণ করতে পারে।
  • অবজেক্ট ফাইলগুলিও ছোট।
  • 32-বিট পরিবেশের সাথে সামঞ্জস্য।
  • মেমোরি ফাঁসগুলি 2 জিবি, 3 জিবি, বা 4 জিবিতে শক্তভাবে আবদ্ধ থাকে এবং পুরো সিস্টেমটি স্যম্পল করে না।

-৪-বিট পরিবেশে 32-বিট সফ্টওয়্যারটির ত্রুটি

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

অন্যান্য দিক

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

এখানে খুব নির্দিষ্ট সিপিইউ আর্কিটেকচার, অপারেটিং সিস্টেম এবং লাইব্রেরি অবকাঠামোর তুলনা না করলে আমি আরও বিশদে যেতে পারব না।


8
"64 বিট সিপিইউ আর্কিটেকচার এমনকি 32 বিটকে মোটেই সমর্থন না করে।" এটি কি তাত্ত্বিক উদ্বেগের বিষয়, বা এটি পৃথিবীতে বিদ্যমান?
মুচাহো

10
@mucaho আছে অবশ্যই হয়েছে যেমন আলফা ও ia64 যেমন 64-বিট শুধুমাত্র CPU- র আর্কিটেকচারের। এই দু'জনেই মরিবুন্ড, যদিও। আমার মাথার উপরের অংশটি আমি জানি না যে বর্তমানে কোনও উত্পাদিত -৪-বিট-কেবল আর্কিটেকচার রয়েছে - এআরচ 64৪, সম্ভবত? 32-বিট এআরএম এর একটি বাধ্যতামূলক উপাদান কিনা তা কি কেউ জানেন?
zwol

10
@zwol No, 32-বিট এআরএমের জন্য বাধ্যতামূলক নয়, এবং 64৪-বিটও নয়। এখানে কেবলমাত্র 64-বিট এআরএম সিপিইউ রয়েছে, অন্যরা 32-বিট এবং 64-বিট উভয় প্রসেসকে সমর্থন করে।
Ext3h

3
কেবল একটি আর্কিটেকচার বাছাই করা এবং এটির সাথে লেগে থাকার জন্য আরও একটি সুবিধা রয়েছে: সহজ বিকাশ এবং পরীক্ষা।
jl6

7
@ জোশুয়া সর্বদা অস্তিত্ব আছে? ফেরাউনরা কি এটা জানত?
candied_orange

7

32 বিট সফ্টওয়্যার এবং 64 বিট সফ্টওয়্যার মধ্যে পার্থক্যটি পয়েন্টারগুলির আকার এবং সম্ভবত পূর্ণসংখ্যার নিবন্ধগুলির আকার। এটাই.

তার মানে আপনার প্রোগ্রামের সমস্ত পয়েন্টার দ্বিগুণ আকারের। এবং (কমপক্ষে একটি ILP32 / LP64 আর্কিটেকচারে) আপনার longগুলি আকারের দ্বিগুণও । এটি সাধারণত অবজেক্ট কোডের আকারে প্রায় 30% বৃদ্ধি পায়। এই যে মানে …

  • আপনার অবজেক্ট কোডটি ডিস্ক থেকে র‌্যামে লোড করতে ~ 30% বেশি সময় নেবে
  • আপনার অবজেক্ট কোড মেমরিতে আরও ~ 30% বেশি জায়গা গ্রহণ করবে
  • আপনি কার্যকরভাবে আপনার মেমরি ব্যান্ডউইদথকে (অবজেক্ট কোডের জন্য) ~ 20% দ্বারা কমিয়েছেন
  • আপনি কার্যকরভাবে নির্দেশের ক্যাশের আকারটি 20% কমিয়েছেন

পারফরম্যান্সে এটি একটি অ-নেহাত নেতিবাচক প্রভাব ফেলে।

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

দ্রষ্টব্য: এমন কিছু আর্কিটেকচার রয়েছে যেখানে 32 বা 64 বিটের কোনও বৈকল্পিক নেই। সেক্ষেত্রে, প্রশ্নটি অবশ্যই স্পষ্টভাবে বোঝায় না। সর্বাধিক সুপরিচিত আইএ 64৪, যা কেবল 64৪ বিট এবং কোনও 32 বিট বৈকল্পিক রয়েছে এবং x86 / এএমডি 64 রয়েছে যা ঘনিষ্ঠভাবে সম্পর্কিত, বিভিন্ন আর্কিটেকচার, x86 কেবল 32 বিট, এএমডি 64 কেবল 64 বিট।

আসলে, সেই উত্তরোত্তর বিবৃতিটি এখন আর 100% সত্য নয়। লিনাক্স সম্প্রতি এক্স 32 এবিআই যুক্ত করেছে, যা আপনাকে 32 বিট পয়েন্টার সহ এএমডি 64 কোড চালানোর অনুমতি দেয়, সুতরাং এটি "যথাযথ" সিপিইউ আর্কিটেকচার না হলেও এটি AMD64 আর্কিটেকচারটি এমনভাবে ব্যবহার করার উপায় যা এটির একটি নেটিভ ছিল 32 বিটের বৈকল্পিক। এই অবিকল করা হয়েছিল কারণ কর্মক্ষমতা ওভারহেড আমি পূর্বেই উল্লেখ করা ঘটাচ্ছে ছিল বাস্তব বাস্তব-বিশ্বের সিস্টেমের মধ্যে বাস্তব-বিশ্বের কোড চালনাকারী বাস্তব-বিশ্বের ব্যবহারকারীদের জন্য পরিমাপযোগ্য, গণনীয় সমস্যা।


8
X86 এর তুলনায় amd64 এ অতিরিক্ত রেজিস্টার এবং নির্দেশাবলী সম্পর্কে কী? এতে পারফরম্যান্স কতটা উন্নতি হয়?
ফিলিপ হাগলুন্ড

2
ম্যাকোস এক্স এবং আইওএসের উদ্দেশ্য-সিতে ব্যবহৃত "ট্যাগ পয়েন্টার" এর জন্য গুগল। খুব পরিমাণে অবজেক্টের কোনও মেমরি বরাদ্দ থাকে না তবে পুরো অবজেক্টটি bit৪ বিট সিস্টেমে পয়েন্টারের মধ্যে নকল হয়। (শুনেছি জাভাও তেমন কিছু করে)। সি ++ তে, স্টাডি :: স্ট্রিংটিতে 64 বিটের প্রায়শই 22 টি অক্ষর থাকে যা কোনও মেমরি বরাদ্দ ছাড়াই object পর্যাপ্ত মেমরি সঞ্চয় এবং গতির উন্নতি।
gnasher729

3
পয়েন্টার এবং পূর্ণসংখ্যার আকার এটি? বেশিরভাগ bit৪ বিট আর্কিটেকচারে বৃহত্তর ঠিকানা স্থান এবং অতিরিক্ত রেজিস্টারগুলি সম্পর্কে কী?

1
"আপনি নির্দেশের ক্যাশে ~ 20% দ্বারা [হ্রাস] করেছেন" যেহেতু নির্দেশের সেটটি সম্পূর্ণ আলাদা (এবং প্রায়শই আরও দক্ষ)
ব্লুরাজা - ড্যানি ফ্লুঘুফুট

3
"এটির পারফরম্যান্সে একটি অ-নেহাত নেতিবাচক প্রভাব রয়েছে।" যদিও এই বিবৃতিটি একটি নিখুঁত অর্থে সত্য, এটি এটিকে উপেক্ষা করে যে অ্যাপ্লিকেশনগুলির বিশাল, বিস্তৃত সংখ্যাগরিষ্ঠতা বাধাগুলি লোড সময়, বা মেমরির ব্যবহার / ব্যান্ডউইথ, বা ক্যাশে নির্দেশিকাগুলির মধ্যে নেই।
ইয়ান কেম্প

6

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

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


2
আপনি উইন্ডোজ এবং লিনাক্স উভয় ক্ষেত্রে একই বিসটিতে 32 বিট এবং 64 বিট মিশ্রিত করতে পারেন : stackoverflow.com/q/12716419/703382
নবীন

1
@ নাভিন: তবে এটি কি বাস্তব? আপনি কি কোনও M৪- বিট উইন্ডোজ অ্যাপ্লিকেশনটিতে (যেমন একটি .NET অ্যাপ্লিকেশন উইন্ডোজের -৪ -বিট সংস্করণে চলমান কোনও সিপিইউ হিসাবে চিহ্নিত করা) কোনও সিওএম উপাদান ব্যবহার করতে পারেন ?
পিটার মর্টেনসেন

3

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

যদি আপনার সফ্টওয়্যারটি স্বতন্ত্র নির্বাহযোগ্য হয় তবে এটি কম স্পষ্ট। পুরানো ওএসগুলিতে চালনার জন্য আপনার যদি আপনার সফ্টওয়্যারটির প্রয়োজন না হয় তবে আপনাকে 32-বিট সংস্করণ সরবরাহ করতে হবে না। কেবল 64৪-বিটকে আটকে দিন, নির্দিষ্ট করুন যে এটির জন্য একটি -৪-বিট ওএস প্রয়োজন এবং কাজ শেষ হয়েছে।

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

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


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

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

1
নিখরচায় নয়, তবে সোজা সস্তা। আপনি যদি নিজের অফ প্ল্যাটফর্ম পরীক্ষাকে স্বয়ংক্রিয় পরীক্ষাগুলিতে সীমাবদ্ধ করেন, মাঝে মাঝে আইডিয়োট টেস্ট, হার্ডওয়্যার পাশাপাশি আপনার সেটআপ ব্যতীত সফল পরীক্ষার জন্য আপনার ব্যয়গুলি আপনার প্রাথমিক সেটআপ পাওয়ার পরে সীমাবদ্ধ থাকবে এবং পরীক্ষায় পাসের জন্য প্রায় 7 ম্যান মিনিট থাকবে। ব্যর্থ পরীক্ষাগুলির জন্য ব্যয় অবশ্যই বেশি হবে তবে এগুলি সাধারণত আরও মূল্যবান হয় (সবসময় হার্ডওয়্যার ব্যর্থতা থাকে)। এই ধরণের সেটআপ সি প্রোগ্রামারদের জন্য বিশেষ উপকারী কারণ এটি সহজেই নির্দিষ্ট শ্রেণীর পয়েন্টার সমস্যাগুলি প্রকাশ করে যা অন্যথায় ট্র্যাক করা শক্ত।
hildred
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.