এম্বেড করা সিপিইউতে ডিএমএর মূল বিষয় কী?


17

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


8
আমি আপনাকে সিপিইউয়ের বৈশিষ্ট্যগুলি লক্ষ্য করার পরামর্শ দিই এবং যদি এটি অ্যাক্সেস মেমোরি ব্যতীত অন্য কিছু করতে পারে। আমি এমন কিছু সিপিইউ শুনেছি যা সিদ্ধান্ত বা গণনার মতো জিনিসগুলি করতে পারে, এটি আদৌ সাধারণ কিনা তা নিশ্চিত নয়
প্লাজমাএইচএইচ

সিপিইউ কি আই / ও পোর্টে ডেটা স্থানান্তর করার সময় ব্যয় করে বা কোনও উত্সর্গীকৃত ডিভাইসে টাস্কটি অর্পণ করতে পারে?
স্টেইনলেস

হ্যাঁ সিপিইউ অন্যান্য জিনিসগুলি করতে পারে তবে একটি এম্বেডেড সিস্টেমে সম্ভবত পেরিফেরিয়ালগুলির সাথে বিশেষত I / O বন্দরগুলির সাথে তার বেশিরভাগ সময় ব্যয় করছে। কেবলমাত্র ডিএমএর জন্য অতিরিক্ত ডেটা বাস পাওয়া কী আরও বুদ্ধিমান হবে না? বা এটি সাধারণত প্রয়োজন হয় না? আপনি যখন নিজের হার্ডওয়ারের সীমাটি ঠেকানোর চেষ্টা করছেন তখন আপনি যখন অতিরিক্ত বাস চাইবেন এমন পরিস্থিতিটি আমি মনে করি যে আপনি যখনই কোনওভাবে মার্কিন ডিএমএ করতে চান তখন?
BeB00

1
সাধারণ উদাহরণ হিসাবে বলুন যে আপনি সিরিয়াল বন্দরটিতে প্রচুর তথ্য মুদ্রণ করতে চান। হয় আপনি বসে বসে প্রতিটি বাইট প্রেরণের জন্য অপেক্ষা করতে পারেন (ধীর), এটি একটি বাফারে অনুলিপি করুন এবং তারপরে বন্দর প্রস্তুত হওয়ার সময় প্রতিটি বাইট প্রেরণের জন্য সিপিইউতে বিঘ্ন ব্যবহার করতে পারেন (প্রচুর প্রসঙ্গে স্যুইচিং = ধীর), অথবা এটি অনুলিপি করতে পারেন একটি বাফার এবং সিপিইউ অন্য কাজগুলিতে ব্যস্ত থাকাকালীন ডিএমএ নিয়ামককে ডেটা বের করার সময় দিন (দ্রুততর হতে পারে)।
টম কার্পেন্টার

2
EDN এর প্রচ্ছদটি একবার দেখেছিল যে একটি লোকের প্রচুর, তিন ফুট দীর্ঘ জুতো এবং একটি শিরোনাম দেখিয়েছিল, "এটি যদি জুতো হয় তবে এটি পরুন wear" মুল বক্তব্যটি হ'ল, যদি কোনও অংশ দশটি জিনিস আপনার প্রয়োজন হয় না এবং আপনার একটি জিনিস প্রয়োজন, এবং মূল্য, পদচিহ্ন এবং পাওয়ার বাজেট সমস্ত উপযুক্ত, তবে আপনার কেবল এটি ব্যবহার করা উচিত, এবং কোনও কিছুর সন্ধানে আপনার সময় নষ্ট করা উচিত নয় কম বৈশিষ্ট্য সহ।
সলোমন স্লো

উত্তর:


17

আমি যে এলপিসি 1768 ডেটাশিটটি পেয়েছি তাতে নিম্নলিখিত উদ্ধৃতিগুলি রয়েছে (জোর দেওয়া খনি):

এএইচবি মাল্টিলেয়ার ম্যাট্রিক্সে আটটি চ্যানেল জেনারেল পারপেজ ডিএমএ কন্ট্রোলার (জিপিডিএমএ) যা এসএসপি, আই 2 এস-বাস, ইউআরটি, অ্যানালগ-থেকে-ডিজিটাল এবং ডিজিটাল-থেকে-অ্যানালগ রূপান্তরকারী পেরিফেরিয়াল, টাইমার ম্যাচ সংকেত এবং মেমরি-টু-র জন্য স্মৃতি স্থানান্তর।

স্প্লিট এপিবি বাস সিপিইউ এবং ডিএমএর মধ্যে কয়েকটি স্টল সহ উচ্চতর মাধ্যমে আউটপুট দেয়

Page পৃষ্ঠায় ব্লক চিত্রটি এএইচবি ম্যাট্রিক্স এবং নিম্নলিখিত উদ্ধৃতিগুলির মধ্যে একাধিক চ্যানেল সহ এসআরএএম দেখায়:

LPC17xx মোট 64 কেবি অন-চিপ স্ট্যাটিক র‌্যাম মেমরি ধারণ করে। এর মধ্যে রয়েছে প্রধান 32 কেবি এসআরএএম, উচ্চ গতির বাসে সিপিইউ এবং ডিএমএ নিয়ামক দ্বারা অ্যাক্সেসযোগ্য এবং এএইচবি মাল্টিলেয়ার ম্যাট্রিক্সের পৃথক গোলাম বন্দরে অবস্থিত প্রতিটি এসআরএম ব্লক দুটি অতিরিক্ত 16 কেবি । এই আর্কিটেকচারটি সিপিইউ এবং ডিএমএ অ্যাক্সেসগুলিকে তিনটি পৃথক র‌্যামে একসাথে অ্যাক্সেস করা যায় spread

এবং এটি নিম্নলিখিত উদ্ধৃতি দ্বারা আরোপিত:

জিপিডিএমএ পেরিফেরাল টু মেমরি, মেমরি থেকে পেরিফেরিয়াল, পেরিফেরাল থেকে পেরিফেরিয়াল এবং মেমোরি থেকে মেমরি লেনদেন সক্ষম করে।

অতএব আপনি পৃথক এসআরএএম ব্লকগুলির মধ্যে একটি থেকে বা অন্য পেরিফেরিয়াল থেকে অন্য ফাংশনের জন্য প্রধান এসআরএএম ব্যবহার করে আপনার ডিএসি-তে ডেটা প্রবাহিত করতে পারেন।

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


আহ, ধন্যবাদ, আমি বুঝতে পারি নি যে এটি সম্ভব ছিল, আমি ডিএমএ তে নতুনভাবে এসেছি। ডিএসি পৃথক এসআরএএম এ প্রবেশ করার সময় কি সিপিই পেরিফেরিয়াল অ্যাক্সেস করতে পারে তা বোঝায়?
BeB00

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

হ্যাঁ, এই সস্তা সামান্য সমালোচকদের মধ্যে এএইচবি সমান্তরাল মেমরি ব্যাঙ্কগুলির কারণে উন্মাদ স্মৃতি ব্যান্ডউইথগুলি সরবরাহ করে: আপনি ইথারনেট, ইউএসবি 2 এবং সর্বাধিক
থ্রুটপুট

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

30

দীর্ঘ এবং সংক্ষিপ্তটি হ'ল ডিএমএ সিপিইউকে তার স্থানীয় গতিতে কার্যকরভাবে আচরণ করতে দেয়, যখন পেরিফেরালগুলি কার্যকরভাবে তাদের স্থানীয় গতিতে আচরণ করতে পারে। উদাহরণে বেশিরভাগ সংখ্যা গঠিত made

একটি এডিসি থেকে পর্যায়ক্রমে ডেটা সংগ্রহ করতে দুটি বিকল্পের তুলনা করা যাক:

  1. আপনি এডিসিকে একটি বিঘ্নের অংশ হিসাবে নির্ধারণ করতে পারেন (পর্যায়ক্রমে বা অন্যথায়)
  2. আপনি একটি বাফার তৈরি করতে পারেন, এবং ডিএমএকে ADC রিডিংগুলি বাফারে স্থানান্তর করতে বলতে পারেন।

আসুন এডিসি থেকে র্যামে 1000 টি নমুনা স্থানান্তর করুন।

বিকল্প 1 ব্যবহার করে: প্রতিটি নমুনার জন্য আছে

  • 12 চক্র বিঘ্নিত প্রবেশ করে ব্যয় করা হয়
  • অ্যাডিসি পড়ুন
  • র‌্যামে স্টোর
  • বাধা ছাড়তে 12 টি চক্র ব্যয় করা হয়

আসুন ভান করুন এই বিঘ্নিত ফাংশনটি 76 টি নির্দেশনা, পুরো রুটিনটি 100 টি নির্দেশনা দীর্ঘ, একক চক্রের সম্পাদন (সর্বোত্তম কেস) ধরে নিয়ে। তার মানে বিকল্প 1 সিপিইউ সময় নির্বাহের 100,000 চক্র ব্যয় করবে।

বিকল্প 2: ডিএমএ এডিসির 1000 নমুনা সংগ্রহ করতে কনফিগার করা হয়েছে। ধরা যাক এডিসির একটি টাইমার কাউন্টার থেকে একটি হার্ডওয়্যার ট্রিগার রয়েছে।

  • এডিসি এবং ডিএমএ 1000 টি নমুনা ডেটা রামে স্থানান্তর করে
  • ডিএমএ আপনার সিপিইউকে 1000 টি নমুনার পরে বাধা দেয়
  • 12 চক্র বিঘ্নিত প্রবেশ করে ব্যয় করা হয়
  • কোডটি ঘটে (আসুন বলি এটি ডিএমএকে র‌্যামের ওভাররাইট করতে বলে)
  • বাধা ছাড়তে 12 টি চক্র ব্যয় করা হয়

পুরো বাধা ভঙ্গ করা (প্রবেশ এবং প্রস্থান ওভারহেড সহ) 100 টি একক-চক্র নির্দেশাবলী instructions ডিএমএ ব্যবহার করে আপনি একই 1000 টি নমুনা সংরক্ষণ করতে 100 টি চক্র ব্যয় করেন।

এখন, প্রতিবার ডিএমএ বাসে প্রবেশ করলে হ্যাঁ, সিপিইউ এবং ডিএমএর মধ্যে কোনও বিরোধ হতে পারে। সিপিইউ এমনকি ডিএমএ শেষ হওয়ার অপেক্ষা করতে বাধ্য হতে পারে। তবে ডিএমএ শেষ হওয়ার অপেক্ষার বিষয়টি সিপিকে লকিংয়ের চেয়ে এডিসি সার্ভিসিংয়ের চেয়ে অনেক কম। যদি সিপিইউ কোর ঘড়িটি 2x বাস ঘড়ি হয়, তবে সিপিইউ ডিএমএ শেষ হওয়ার অপেক্ষায় কয়েকটি কোর চক্র নষ্ট করতে পারে। এর অর্থ হ'ল স্থানান্তরটির কার্যকর কার্যকর সময়কাল 1000 (ধরে নেওয়া সিপিইউ কখনই অপেক্ষা করে না) এবং 9000 চক্রের মধ্যে থাকে। এখনও 10,000,000 চক্রের চেয়ে ভাল।


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

ইয়াহ, একেবারে সঠিক আমার উদাহরণটি সম্পূর্ণরূপে মোটামুটি একটি স্কেচ।
pgvoorhees

অনেকগুলি মাইক্রোকন্ট্রোলারের একটি মাল্টিলেয়ার বাসও রয়েছে তাই সমবর্তী ক্রিয়াকলাপগুলি সম্ভব। উদাহরণস্বরূপ: adc-> ram এবং ফ্ল্যাশ-> একই সাথে নিবন্ধ করুন। এছাড়াও, অনেক নির্দেশাবলী 1 ঘড়ির চেয়ে দীর্ঘ হয়, তাই ডিএমএর জন্য প্রচুর সময় থাকে।
জেরোইন 3

9

যদি কোনও প্রদত্ত চক্রটিতে প্রসেসর এবং একটি ডিএমএ নিয়ামককে একই বাসে প্রবেশ করা দরকার হয় তবে এক বা অন্যজনকে অপেক্ষা করতে হবে। অনেক সিস্টেমে, একটি "ব্রিজ" সহ পৃথক বাসের সাথে মেমরির একাধিক অঞ্চল রয়েছে যা সিপিইউকে একটি মেমরি অ্যাক্সেস করতে দেয় যখন ডিএমএ নিয়ামক অন্যটিতে প্রবেশ করে।

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

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

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


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

5

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

  1. পোলিং পদ্ধতি। আপনি এখানে পরবর্তী বাইটটি সরিয়ে / আউট করার অনুমতি দেওয়ার জন্য রেজিস্টার পতাকাগুলিতে অপেক্ষা করেন। সমস্যাটি হ'ল এটির জন্য অপেক্ষা করার সময় আপনি সিপিইউর সমস্ত সম্পাদন করছেন। অথবা, যদি আপনাকে কোনও অপারেটিং সিস্টেমে সিপিইউ সময় ভাগ করতে হয়, তবে আপনার স্থানান্তরটি হ্রাস করা হবে।

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

  3. , DMA। আপনি উত্স / গন্তব্য পয়েন্টার, ট্রান্সফারের সংখ্যা এবং এটি বন্ধ হয়ে ডিএমএ কনফিগার করেন। স্থানান্তরটি সম্পাদন করার জন্য এটি বাস চক্র এবং সিপিইউ সময় চুরি করবে এবং সিপিইউ মাঝামাঝি সময়ে অন্যান্য জিনিসগুলি করতে বিনামূল্যে। স্থানান্তর সম্পন্ন হওয়ার পরে আপনি একটি পতাকাটি কনফিগার করতে বা বাধা দিতে পারেন indicate এটি সাধারণত আইএসআরের চেয়ে দ্রুত একটি স্পর্শ এবং সাধারণত আপনার দ্রুত স্থানান্তর বিকল্প হয়।

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

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

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

বিরল ক্ষেত্রে, আমি পেরিফেরিয়ালগুলি দেখেছি যার নিজস্ব র্যাম অঞ্চল রয়েছে যা কেবলমাত্র ডিএমএ দ্বারা অ্যাক্সেসযোগ্য ছিল। এটি ইথারনেট ম্যাকস বা ইউএসবিতে ছিল।


3

এখানে সম্ভবত ডিএমএ ব্যবহৃত হয় যাতে ড্যাকের কিছু নিয়মিত সময় থাকতে পারে, কিছু পরিচিত বিরতিতে অ্যানালগ আউটপুট পরিবর্তন করে একটি তরঙ্গরূপ তৈরি করতে পারে।

হ্যাঁ যদি এটি শেয়ার করা বাস হয় তবে ... আপনাকে ভাগ করে নিতে হবে।

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

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

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


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

1

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

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


0

STM32H7 সিরিজের মতো কিছু প্রসেসরের কাছে প্রচুর র‍্যাম বিকল্প রয়েছে এবং ঘনিষ্ঠ মিলিত র‌্যামের হিপ রয়েছে। পৃথক র‌্যাম ব্যাংক থাকার কারণে ডিএমএকে প্রচুর র‌্যামের হাতুড়ি দেওয়ার অনুমতি দেয় যদিও প্রসেসরটি ঘনিষ্ঠ-দম্পতি র‌্যামে ডেটা প্রক্রিয়াকরণ করছে যা ক্যাচিংয়ের প্রয়োজন হয় না এবং ডিএমএ দ্বারা হামার প্রয়োজন হয় না। চারপাশে ডেটা সরাতে আপনি MDMA ব্যবহার করতে পারেন। আমি এগুলির একটি ব্যবহার করে একটি এফএমসিডাব্লু রাডার সেট তৈরি করেছি। একটি এসআরএমে দুটি ইনপুট থেকে এডিসির আইকিউ ডেটা পাওয়া যায়। আমি তখন ডেটা স্কেল করি এবং dtcm র্যামে 256 বিন কমপ্লেক্স ফ্লোটিং পয়েন্টটি সম্পাদন করি। তারপরে এমডিএমএ ব্যবহার করে ফিফো AXI র‌্যামে 2 ডি অ্যারে হিসাবে ফলাফল।

গতিবেগ ভেক্টরের জন্য আমি ফিফো জুড়ে দ্বিতীয় ফাট 64৪ টি বিন গ্রহণ করি। আমি তারপরে জটিল তথ্যটির মাত্রাটি করি এবং সনাক্তকরণের জন্য এসপিআই ব্যবহার করে 128 ও 64 ভাসমান পয়েন্টের মানগুলি অন্য এইচ 7 এ প্রেরণ করি। আমি এই সমস্ত 4 এমএসে করি।

স্যাম্পলিংয়ের হারটি ADC এর মধ্যে ৮৪ কেএইচজেড এবং ওভার স্যাম্পলিং ব্যবহার করে আমি প্রায় 18 বিট রেজোলিউশন পাচ্ছি।

সাধারণ উদ্দেশ্যে প্রসেসরের পক্ষে খারাপ নয় কেবল মেগাহার্টজ ব্যাপ্তিতে চলছে এবং কোনও বাহ্যিক র‌্যাম নেই।

এছাড়াও এই ডিভাইসটি ডিটিসিএমের বাইরের ক্যালকগুলির জন্য কর্মক্ষমতা উন্নত করেছে।

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