বহিরাগত স্থাপত্যগুলি স্ট্যান্ডার্ড কমিটিগুলি যত্ন করে about


154

আমি জানি যে সি এবং সি ++ স্ট্যান্ডার্ডগুলি ভাষা প্রয়োগের অনেকগুলি দিকনির্দেশিত করে - কেবল যদি অন্য বৈশিষ্ট্য সহ কোনও আর্কিটেকচার থাকে তবে এটির জন্য একটি আদর্শ মানক সংকলক লেখা খুব কঠিন বা অসম্ভব হবে।

আমি জানি 40 বছর আগে যে কোনও কম্পিউটারের নিজস্ব অনন্য বৈশিষ্ট্য ছিল। যাইহোক, আমি আজ ব্যবহৃত কোন স্থাপত্য সম্পর্কে জানি না যেখানে:

  • CHAR_BIT != 8
  • signed দুটির পরিপূরক নয় (শুনেছি জাভা এর সাথে সমস্যা হয়েছে))
  • ভাসমান পয়েন্টটি আইইইই 754 অনুগত নয় (সম্পাদনা করুন: আমি "আইইইই 754 বাইনারি এনকোডিংয়ে নেই" বোঝাতে চাইছি)।

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

সুতরাং প্রশ্নটি হল: কোন স্থাপত্যগুলি উপরের বৈশিষ্ট্যগুলি প্রদর্শন করে?

uint*_tগুলি al চ্ছিক।


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

8
@ জোহান: তবে এটি ব্যবহারিক হবে না সুতরাং মানহীন অনুসারে সংযোজক সংযোজকগুলির চেয়ে দ্রুত কোড উত্পন্ন করবে। এবং আমি এখনও দেখতে পাচ্ছি না এটি কীভাবে আপনার কোডটিকে আরও পোর্টেবল করে তোলে।
ইয়াকভ গালকা

4
আমি নিশ্চিত যে আদর্শ হওয়ার কারণটির আসল কারণ এটি নয় কারণ এটি কিছু আদর্শ সমাধান। তবে পরিবর্তে এটি কারণ যখন স্ট্যান্ডার্ডটি লেখা হয়েছিল তখন অনেকগুলি সি এবং সি ++ সংকলক ইতিমধ্যে বিদ্যমান ছিল এবং মানক কমিটি বিদ্যমান সংকলকগুলিকে প্রত্যাখ্যান করতে চায়নি।
জন

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

5
এটি সংকলক সম্পর্কে নয় তবে হার্ডওয়্যার। হার্ডওয়্যার বৈশিষ্ট্যগুলির সরাসরি ব্যবহারের অনুমতি দেওয়ার জন্য সি ++ কিছু জিনিস নির্ধারিত ছেড়ে দেয় leaves আপনার ফোন অ্যাপ্লিকেশনগুলি যাইহোক যাইহোক একটি মেইনফ্রেমে চলবে না, সুতরাং কোডটির অনুসারে কোনও বহনযোগ্যতা নেই।
বো পারসন

উত্তর:


114

এই এক কটাক্ষপাত করা

ইউনিসিস ক্লিয়ারপথ দুরাদো সার্ভারগুলি

এমন লোকদের পিছনে সামঞ্জস্যের অফার দিচ্ছে যারা এখনও তাদের সমস্ত ইউনিভ্যাক সফ্টওয়্যার স্থানান্তরিত করেনি।

গুরুত্বপূর্ণ দিক:

  • 36-বিট শব্দ
  • CHAR_BIT == 9
  • কারও পরিপূরক
  • 72-বিট নন-আইইইই ভাসমান পয়েন্ট
  • কোড এবং ডেটার জন্য পৃথক ঠিকানার স্থান
  • শব্দ-সুরাহা
  • কোনও ডেডিকেটেড স্ট্যাক পয়েন্টার নেই

তারা যদিও সি ++ সংকলকটি সরবরাহ করে কিনা তা জানেন না, তবে তারা পারত


এবং এখন তাদের সি ম্যানুয়ালটির সাম্প্রতিক সংস্করণের একটি লিঙ্ক প্রকাশিত হয়েছে:

ইউনিসিস সি কম্পাইলার প্রোগ্রামিং রেফারেন্স ম্যানুয়াল

বিভাগ 4, 9, 18, 36 এবং 72 বিট সহ ডেটা ধরণের একটি সারণী রয়েছে।

ইউএসসি সি সংকলকটিতে ডেটা আকারের আকার এবং ব্যাপ্তি


13
আমার ধারণা শূন্য * এই আর্কিটেকচারে অবশ্যই নরক হতে হবে।
লুস্কুবাল

13
@ ইয়ুবাঙ্গোবিল - আমি বিশ্বাস করি char*এবং void*এটি একই আকার হতে হবে এবং অন্য কোনও পয়েন্টার ধরে রাখতে যথেষ্ট বড়। বাকিগুলি বাস্তবায়নের উপর নির্ভর করে।
বো পারসন 13

22
@ ইয়ংবাঙ্গোবিল: পুরানো উইন 16 সংকলকগুলিতে নিয়মিত পয়েন্টারগুলি পয়েন্টারগুলির নিকটে ছিল এবং কেবলমাত্র 16-বিট অফসেট sizeof(int*) == 2ছিল, তবে দূরের পয়েন্টারগুলিতে 16-বিট নির্বাচকও ছিল sizeof(void*) == 4
অ্যাডাম রোজেনফিল্ড

10
তাদের সি ++ সংকলকটির জন্য একটি অন-লাইন ম্যানুয়াল রয়েছে বা ব্যবহৃত হয়েছিল। এটি ইউনিসিস মেইনফ্রেম আর্কিটেকচারগুলির মধ্যে কেবল একটি, এটি উল্লেখ করার মতো: অন্যটি হ'ল 48 বিট স্বাক্ষরিত বিশালাকার ট্যাগযুক্ত আর্কিটেকচার (যার জন্য আমি কেবল সি ম্যানুয়াল পেয়েছি, একটি সি ++ নেই)। বাকীগুলি সম্পর্কে: আমি মনে করি না যে sizeof(int*) != sizeof(char*)এখানে: উভয়ই 36 বিট। তবে এর মধ্যে বাইট নির্বাচনকারী char*উচ্চ আদেশের বিটগুলিতে রয়েছে এবং এটি এড়ানো হয় int*। (যদিও আমি অন্যান্য মেশিন ব্যবহার করেছি, যেখানে `আকারের (চর *)> সাইজেরফ (ইনট *)))
জেমস কানজে

16
@ অ্যাডাম রোজেনফিল্ড এমএস / ডস 16 বিট সংকলকগুলিতে আপনার বিভিন্ন "মোড" ছিল এবং ডেটা পয়েন্টারগুলি ফাংশন পয়েন্টারগুলির মতো একই আকারের ছিল না। তবে কমপক্ষে আমি যেগুলি ব্যবহার করেছি তার উপর, সমস্ত ডেটা পয়েন্টার (সহ void*) সর্বদা একই আকার থাকে। (অবশ্যই, আপনি কোনও ফাংশন পয়েন্টারে রূপান্তর করতে পারেননি void*, যেহেতু void*এটি ছোট হতে পারে But তবে মান অনুসারে, আপনি আজও এটি করতে পারবেন না))
জেমস কানজে

51

আপনার অনুমানের কোনওই মেইনফ্রেমগুলির জন্য ধারণ করে না। শুরু করার জন্য, আমি এমন কোনও মেইনফ্রেম সম্পর্কে জানি না যা আইইইই 754 ব্যবহার করে: আইবিএম বেস 16 ব্যবহার করে ভাসমান বিন্দু, এবং ইউনিসিস মেইনফ্রেম দুটিই বেস ব্যবহার করে। ইউনিসিস মেশিনগুলি অন্য অনেক দিক থেকে কিছুটা বিশেষ: বো 2200 উল্লেখ করেছেন আর্কিটেকচার, তবে এমপিএস আর্কিটেকচারটি এমনকি অপরিচিত: 48 বিট ট্যাগ শব্দ। (শব্দটি একটি পয়েন্টার বা না হওয়া শব্দের কিছুটা নির্ভর করে)) এবং সংখ্যার উপস্থাপনাগুলি এমনভাবে তৈরি করা হয়েছে যাতে ভাসমান বিন্দু এবং অবিচ্ছেদ্য পাটিগণ্যের মধ্যে কোনও প্রকৃত পার্থক্য না থাকে: ভাসমান বিন্দুটি বেস 8; এটি স্বাভাবিককরণের প্রয়োজন হয় না, এবং আমি দেখেছি এমন অন্যান্য ভাসমান বিন্দুর বিপরীতে এটি দশমিকটি বামের পরিবর্তে মান্টিসার ডানদিকে রাখে এবং খাঁটির জন্য স্বাক্ষরযুক্ত বিশালত্ব ব্যবহার করে (ম্যান্টিসার পাশাপাশি)। একটি অবিচ্ছেদ্য ভাসমান পয়েন্টের মানের সাথে (বা থাকতে পারে) ফলাফলগুলির সাথে একটি স্বাক্ষরযুক্ত দৈর্ঘ্যের পূর্ণসংখ্যার সমান বিট উপস্থাপনা থাকে। এবং কোনও ভাসমান বিন্দু গাণিতিক নির্দেশনা নেই: দুটি মানের সূচকগুলি উভয় 0 হলে, নির্দেশটি অবিচ্ছেদ্য পাটিগণিত হয়, অন্যথায়, এটি ভাসমান পয়েন্ট গণিত করে। (আর্কিটেকচারে ট্যাগিং দর্শনের ধারাবাহিকতা)) যার অর্থ এটিint 48 বিট দখল করতে পারে, এর মধ্যে 8 টি 0 হতে হবে বা মানটি পূর্ণসংখ্যা হিসাবে বিবেচিত হবে না।


4
আইবিএম মেইনফ্রেমস (জেড / আর্কিটেকচার) আইইই 75৫৪ ফ্লোটিং পয়েন্টকে সমর্থন করে।
নিকিতা নিমকিন


6
@ নিকিতা - তারা এখনই করে । প্রাথমিকভাবে এটি জাভা সমর্থন করার জন্য একটি (ব্যয়বহুল) অ্যাড-অন ছিল।
বো পারসন


42

সম্পূর্ণ আইইইই 754 এর সম্মতি ভাসমান-পয়েন্ট বাস্তবায়নে বিরল। এবং সেই ক্ষেত্রে বিশদটি দুর্বল করা প্রচুর অনুকূলিতকরণের অনুমতি দেয়।

উদাহরণস্বরূপ, x87 এবং এসএসইয়ের মধ্যে সাব্নরম সমর্থন সমর্থন করে rs

উত্স কোডে পৃথক পৃথক পৃথক পৃথক পৃথক পৃথক পৃথক পৃথক পৃথকীকরণের মতো অপ্টিমাইজেশনের ফলাফলও কিছুটা পরিবর্তন করে তবে কিছু আর্কিটেকচারে চমৎকার অপ্টিমাইজেশন।

অথবা x86- র কঠোর আইইইই সম্মতিতে তার অভ্যন্তরীণ 80 বিবিট ফ্লোটের পরিবর্তে নির্দিষ্ট ফ্লোটিং পয়েন্ট প্রকারটি ব্যবহার করতে বাধ্য করার জন্য কিছু ফ্ল্যাগিং সেট করা হতে পারে বা ভাসমান পয়েন্ট রেজিস্টার এবং সাধারণ মেমরির মধ্যে অতিরিক্ত স্থানান্তর প্রয়োজন হতে পারে।

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

আমার উপসংহারটি হ'ল যদি আপনি সর্বদা কঠোর আইইইই সম্মতির গ্যারান্টি দিতে না চান তবে পরিস্থিতিগুলিতে আসার জন্য আপনার বিদেশী আর্কিটেকচারের দরকার নেই। এই কারণে কয়েকটি প্রোগ্রামিং ল্যাঙ্গুয়েজ কঠোর আইইইই সম্মতির গ্যারান্টি ছিল।


7
আর একটি "বহিরাগত" হার্ডওয়্যার সেট আইবিএম মেইনফ্রেমস যেখানে ভাসমান পয়েন্ট ফর্ম্যাটটি আইইইই স্ট্যান্ডার্ডের পূর্বাভাস দেয়। জাভা থেকে ভিন্ন, সি ++ এখনও বিদ্যমান হার্ডওয়্যার ব্যবহার করতে পারে।
বো পারসন

5
আইইইই 754 সম্পূর্ণরূপে জিপিইউ দ্বারা সমর্থিত নয়।
কেরেম

3
আইইইই 754 তে কঠোরভাবে মেনে চলার অভাব কারও কাছে বিরক্তিকর, তবে আমি মনে করি না যে ওপি সত্যই যে বিষয়গুলি যত্নবান করে of
সর্বজ্ঞানী

3
@ ম্যাথিউউ যেহেতু এটি "সি" ট্যাগও রয়েছে তাই আমার একটি সি বিশ্লেষক উল্লেখ করা উচিত যা আপনাকে আপনার ভাসমান-পয়েন্ট প্রোগ্রামটি সি-কম্পাইলারের ঝাঁকুনিতে স্মৃতিতে ছড়িয়ে দেওয়া 80 বিট ভাসমান-পয়েন্ট রেজিস্টারগুলির সাথে নিতে পারে এমন সমস্ত মান বলতে পারে। blog.frama-c.com/index.php?post/2011/03/03/cosine-for-real
Pascal Cuoq

2
@ ম্যাথিউইউম: এটি খুব খারাপ আইএসও / এএনএসআই ভাসমান-পয়েন্ট এবং পূর্ণসংখ্যার যুক্তিগুলির জন্য ন্যূনতম / ম্যাক্সিম্মাম মাপ নির্দিষ্ট করার জন্য বৈকল্পিক পরামিতিগুলিকে অনুমতি দেয়নি; যদি তাদের থাকে তবে ৮০-বিটটি long doubleএকটি দরকারী এবং দীর্ঘকালীন টাইপ হতে পারে, যেহেতু এর সাথে আসল সমস্যাটি হ'ল এটি খারাপভাবে কাজ করে printf। প্রসারিত ডাবলটি শীর্ষস্থানীয় 1 টি নন-এফপিইউ সিস্টেমে স্পষ্টভাবে গণনার গতি বাড়িয়ে তোলে এবং অন্যান্য ধরণের রূপান্তর ব্যতীত অন্য যে কোনও প্রসঙ্গে ডেনরমালগুলির বিশেষ পরিচালনা করার প্রয়োজনীয়তাও দূর করে দেয়। খুব খারাপ সি এর printfসমস্ত কিছু গোলমেলে।
ক্যাট

40

আমি এই লিঙ্কটি খুঁজে পেয়েছি যেখানে কয়েকটি সিস্টেমের তালিকা রয়েছেCHAR_BIT != 8 । তারা সংযুক্ত

কিছু টিআই ডিএসপি রয়েছে CHAR_BIT == 16

ব্লুকোর -5 চিপ (ক্যামব্রিজ সিলিকন রেডিও থেকে একটি ব্লুটুথ চিপ) যা রয়েছে CHAR_BIT == 16

এবং অবশ্যই স্ট্যাক ওভারফ্লো নিয়ে একটি প্রশ্ন রয়েছে: প্ল্যাটফর্মগুলিতে 8-বিট চর ছাড়া অন্য কিছু রয়েছে

অ two's-সম্পূরক সিস্টেমের জন্য হিসাবে একটি আকর্ষণীয় পঠিত আছে comp.lang.c ++,। সংযত । সংক্ষিপ্ত আকারে: এমন প্ল্যাটফর্মগুলি রয়েছে যাগুলির পরিপূরক বা সাইন এবং প্রস্থের প্রতিনিধিত্ব রয়েছে।


5
অ্যানালগ ডিভাইসগুলির 32-বিট SHARC ডিএসপি রয়েছে CHAR_BIT=32, এবং TMS32F28xx এর টেক্সাস ইনস্ট্রুমেন্টস ডিএসপি রয়েছে CHAR_BIT=16। পিডিপি -10 এর জন্য জিসিসি 3.2 রয়েছে CHAR_BIT=9। আমি মনে করি, এস / 360 এর নট -8 বিট চরও থাকতে পারে।
osgx

1
আমি এখনও 'নন টু'র পরিপূরক' আর্কিটেকচারের উদাহরণ চাই। বিশেষত যেহেতু এটি ঘটেছে যে এটি CHAR_BITSএকটি আংশিক সদৃশ।
ইয়াকভ গালকা

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

24

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

ক্রে ভেক্টর মেশিনগুলি, টি 90-এর মতো নিজস্ব ভাসমান-পয়েন্ট ফর্ম্যাটও রয়েছে, যদিও নতুন ক্রে সিস্টেমগুলি আইইইই ব্যবহার করে। (আমি যে টি 90 ব্যবহার করেছি তা কয়েক বছর আগে বাতিল করা হয়েছিল; এখনও কোনওটি সক্রিয় ব্যবহারে রয়েছে কিনা তা আমি জানি না))

টি 90 এর পয়েন্টার এবং পূর্ণসংখ্যার জন্য কিছু আকর্ষণীয় উপস্থাপনা / ছিল had একটি স্থানীয় ঠিকানা কেবল একটি 64-বিট শব্দের দিকে নির্দেশ করতে পারে। সি এবং সি ++ সংকলকগুলিতে CHAR_BIT == 8 ছিল (এটি প্রয়োজনীয় কারণ এটি ইউনিকোস, ইউনিক্সের স্বাদ, এবং অন্যান্য সিস্টেমের সাথে ইন্টারঅ্যাপেরেট করতে হয়েছিল), তবে একটি স্থানীয় ঠিকানা কেবল একটি 64-বিট শব্দের দিকে নির্দেশ করতে পারে। সমস্ত বাইট-লেভেল অপারেশনগুলি সংকলক দ্বারা সংশ্লেষিত করা হয়েছিল, এবং একটি void*বা char*শব্দের 3-বিট উচ্চ-অর্ডারে একটি বাইট অফসেট সংরক্ষণ করেছিল। এবং আমি মনে করি কিছু পূর্ণসংখ্যার ধরণের প্যাডিং বিট ছিল।

আইবিএম মেইনফ্রেমস এর আরও একটি উদাহরণ।

অন্যদিকে, এই নির্দিষ্ট সিস্টেমগুলির অগত্যা ভাষার মান পরিবর্তন করা উচিত নয় prec ক্রে এর সি সংকলকটিকে C99 তে উন্নীত করার ক্ষেত্রে বিশেষ কোন আগ্রহ দেখায়নি; সম্ভবত একই জিনিসটি C ++ সংকলকটিতে প্রয়োগ হয়েছিল। এটা তোলে পারে স্বাক্ষরিত পূর্ণসংখ্যার জন্য প্যাডিং বিট ছাড়া এই ধরনের CHAR_BIT == 8 প্রয়োজন, IEEE একটি বিন্যাসে ফ্লোটিং পয়েন্ট যদি না পূর্ণ শব্দার্থবিদ্যা এবং 2's-সম্পূরক হিসেবে হোস্ট বাস্তবায়নের জন্য প্রয়োজনীয়তা, আঁট করা যুক্তিসঙ্গত হতে। পুরাতন সিস্টেমগুলি পূর্বের ভাষার মানগুলিতে সমর্থন অব্যাহত রাখতে পারে (সি৯৯ বের হওয়ার সাথে সাথে সি 90 মারা যায়নি), এবং ডিএসপি-র মতো ফ্রিস্ট্যান্ডিং বাস্তবায়ন (এমবেডেড সিস্টেম) এর জন্য প্রয়োজনীয়তাগুলি আলগা হতে পারে।

অন্যদিকে, ভবিষ্যতের সিস্টেমগুলি এমন কাজ করার উপযুক্ত কারণ থাকতে পারে যা আজকে বিদেশী বলে বিবেচিত হবে।


6
কীভাবে অতিরিক্ত কঠোর মান উদ্ভাবনকে বাধা দেয় সে সম্পর্কে শেষে ভাল বিষয়। যখন আমরা ট্রিনিয়ার স্টেটগুলির সাথে কোয়ান্টাম (বা জৈব) কম্পিউটারগুলি পাই, তখন unsignedইন্টিগ্রাল ধরণের জন্য মডুলো গাণিতিক প্রয়োজনীয়তাগুলি একটি বড় ব্যথা হবে, যখন স্বাক্ষরিত গাণিতিকটি ঠিক থাকবে।
বেন ভয়েগট

@ বেনভয়েগ্ট কেন সেই স্বাক্ষরবিহীন গাণিতিকদের ব্যথা? এই কম্পিউটারগুলিতে মডুলো 3 ^ n সংযোজকগুলি কি সম্ভব নয়?
ফুক্লভ

2
@ ল্যুভেনহহ্ফ্যাক: এটি ঠিক একই বিষয়, হার্ডওয়্যার অপারেশনগুলি মডুলো 3 ** এন সম্পাদন করে, সি ++ স্বাক্ষরযুক্ত প্রকারগুলি সরবরাহ করে যাদের অপারেশনগুলি মডুলো 2 ** এন সংজ্ঞায়িত করা কঠিন হবে।
বেন ভয়েগ্ট

2
আমি জানি যে একটি ভ্যাক্স 11/780 ক্রোপ সংকলকটির মালিকানাধীন আর্কিটেকচারের সাথে বিশেষায়িত এমবেডেড সিস্টেমকে লক্ষ্য করে হোস্ট হিসাবে এখনও ব্যবহার করছি। এই নির্দিষ্ট ভ্যাক্স বজায় রাখার জন্য, রক্ষকরা অতিরিক্ত ভাড়ার জন্য যাদুঘরের দিকে এগিয়ে চলেছে।
পিটার

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

16

CHAR_BITS

জিসিসি সোর্স কোড অনুসারে :

CHAR_BITহয় 16জন্য বিট 1750a , dsp16xx আর্কিটেকচারের।
CHAR_BITহয় 24জন্য বিট dsp56k স্থাপত্য।
CHAR_BITহয় 32জন্য বিট c4x স্থাপত্য।

আপনি সহজেই আরও কিছু আবিষ্কার করে দেখতে পারেন:

find $GCC_SOURCE_TREE -type f | xargs grep "#define CHAR_TYPE_SIZE"

অথবা

find $GCC_SOURCE_TREE -type f | xargs grep "#define BITS_PER_UNIT"

যদি CHAR_TYPE_SIZEযথাযথভাবে সংজ্ঞায়িত করা হয়

আইইইই 754 সম্মতি

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


3
কোনও জনপ্রিয় সংকলকের উত্সটি দেখার জন্য ওপিকে কেবল নির্দেশ দেওয়ার জন্য আপভোটড; এটি এই ক্ষেত্রে আরএফটিএমের সংজ্ঞা, সুতরাং এটি লোকেরা প্রথম স্থান হিসাবে দেখা উচিত।
আন্ডারস্কোর_

9

আইইইই 754 বাইনারি উপস্থাপনাটি সম্প্রতি অবধি জিপিইউগুলিতে অস্বাভাবিক ছিল, জিপিইউ ভাসমান-পয়েন্ট প্যারানোয়া দেখুন

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

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

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


জিপিইউগুলি কীভাবে প্রাসঙ্গিক? (ক) এই পৃষ্ঠাটি খুব পুরানো বলে মনে হচ্ছে । (খ) আজ অবধি আপনি সি তে জিপিইউগুলি প্রোগ্রাম করতে পারবেন না: কারণ সি পুনরাবৃত্ত ফাংশনগুলির মতো সিগুলিকে সমর্থন করে যা জিপিইউগুলি আমার জ্ঞানের সর্বোত্তম হিসাবে তা করে না। তাই আপনি চাইলে একটি সংকলকও লিখতে পারবেন না।
ইয়াকভ গালকা

1
@ ইয়ুবাঙ্গোবিল, জিপিইউতে পুনরাবৃত্ত কাজটি অফলোড করা বর্তমানে বৃহত আকারের গণনাগুলির জন্য পছন্দসই পদ্ধতি । আসলে, আমি বর্তমানে সি ++ তে একটি বিকাশ করছি। সৌভাগ্যক্রমে, আমরা কেবল এনভিডিয়া সিইউডিএ জিপিইউ নিয়ে কাজ করি যা আইইইই 754 এর সাথে সুসংগত বাইনারি উপস্থাপনা রয়েছে।
মাইকেল 18

আমি বলি না যে জিপিইউগুলি জিপি-গণনার জন্য ব্যবহৃত হয় না। আমি বলেছিলাম যে সিনট্যাক্সের সাদৃশ্য থাকা সত্ত্বেও আপনি সত্যিই সিতে কার্নেলগুলি প্রোগ্রাম করেন না। আপনি কি int f(int n) { return n <= 1 ? 1 : n * f(n-1); }চুদাতে মৃত্যুদণ্ড কার্যকর করতে পারেন ? যদি না হয় তবে জিপিইউগুলি এই প্রশ্নের জন্য প্রাসঙ্গিক নয় (যা সি এবং সি ++ কমিটি সম্পর্কে জিজ্ঞাসা করে)।
ইয়াকভ গালকা

6
@ ইয়ুবাংলোবিল: এর বেশ কয়েকটি উত্তর। প্রথমত, CUDA সি, সি ++ এবং ফোর্টরান সমর্থন করে । আপনার সাধারণ 8-থ্রেড সিপিইউতে 2048-থ্রেড জিপিইউগুলির হিউমোনাস পারফরম্যান্স সুবিধার জন্য একই লিঙ্কটি দেখুন। দ্বিতীয়ত, সত্য, CUDA প্রোগ্রামিং মডেল পুনরাবৃত্তি ("ডাইনামিক প্যারালালিজম" নামে পরিচিত) CUDA 5.0 অবধি উপযুক্তগুলির জন্য সমর্থনগুলির অভাব সহ, সেই সমস্ত ভাষার কেবলমাত্র সাবসেটগুলি (যদিও বড়গুলি) সমর্থিত। তৃতীয়ত, পুনরাবৃত্তিগুলি সাধারণত লুপগুলি দ্বারা প্রতিস্থাপন করা যায়, এটি যেভাবেই মাল্টিথ্রেডেড পারফোমেন্সের জন্য প্রয়োজনীয়।
মাইকেল 20
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.