সি থেকে সিলিকন: সফ্টওয়্যার / ফার্মওয়্যার সমাধানটি হার্ডওয়্যার হিসাবে কীভাবে প্রয়োগ করতে হয়?


13

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

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


আরও দেখুন "কেন আমি স্বয়ংক্রিয়ভাবে আমার সিঙ্গেলহেড সি প্রোগ্রামটি মাল্টিথ্রেড করতে পারি না?"
pjc50

@ পিজেসি 50: আমি কোথায় দেখতে পাব "কেন আমি স্বয়ংক্রিয়ভাবে আমার সিঙ্গেলহেড সি প্রোগ্রামটি মাল্টিথ্রেড করতে পারি না?" ?
ডেভিড্যাকারি

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

উত্তর:


11

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

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

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


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

এটি সত্যিই আমাকে বুঝতে সাহায্য করে যে নির্দিষ্ট কার্যগুলি সম্পাদন করে এমন নির্দিষ্ট হার্ডওয়্যার কেন রয়েছে।
চাদ হ্যারিসন

আরও অনেক সি থেকে এইচডিএল সংকলক রয়েছে যা এই উদ্দেশ্যে ডিজাইন করা হয়েছিল।
অ্যান্ডারসন সবুজ

5

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

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

এখানে এএনএসআই সি-তে একটি ম্যান্ডেলব্রুট গণনা কোডিংয়ের উদাহরণ এবং তারপরে এটি হার্ডওয়ারে প্রয়োগ করা হয়েছে:

সি 2 এইচ সংকলক-গতিযুক্ত ম্যান্ডেলব্রোট অ্যালগরিদম কমপ্লেয়ার অপ্টিমাইজেশন স্তর 2 (-O2) ব্যবহার করে দ্রুততম Nios II প্রসেসরের উপর চলমান একই অ্যালগোরিদমের তুলনায় কমপক্ষে 60x গতির উন্নতি লাভ করে। এই গতি বৃদ্ধি হ'ল হার্ডওয়্যার সরবরাহ করতে পারে এমন সমান্তরালতা এবং দ্রুত পুনরাবৃত্তির গতির কারণে, যা সাধারণ-উদ্দেশ্যগত প্রক্রিয়াকরণ ইউনিট থেকে সম্ভব নয়।

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


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

@ থ্রান আমি জানিনা যে জিলিনেক্সের একটি প্রতিযোগিতামূলক পণ্য রয়েছে। আমি এটি পরীক্ষা করে দেখতে হবে। ধন্যবাদ!
embedded.kyle

2

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

সি কোড যা সংশ্লেষযোগ্য (যেমন একটি হার্ডওয়্যার বর্ণনায় রেন্ডার করা যেতে পারে) এবং এখানে হার্ডওয়্যার = ডিজিটাল যুক্তি, সফ্টওয়্যার বিকাশকারীদের দ্বারা বিচারিত কোনও কোডিং প্রতিযোগিতা জিততে পারে না।

এখানে ASIC প্রবাহের ভিড়ের জন্য সি -> সিলিকন সরঞ্জাম সরবরাহকারী কিছু উল্লেখযোগ্য বিক্রেতাদের একটি তালিকা।

  • ফোর্টের সিনথেসাইজার

  • মেন্টর ক্যাটালপল্ট

  • ব্লুস্পেক সি

  • স্নোপসিস সিনফনি (প্রাক্তন সিনফোরা)

  • ক্যাডেন্স সি-টু-সিলিকন


1

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

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