ডিএমএ ব্যবহার করার সময় কি কোনও সিপিইউ সম্পূর্ণ জমে যায়?


19

আমার বেশ সোজাসাপ্টা প্রশ্ন আছে তবে আমি এর উত্তর কোথাও পাইনি।

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

আমার প্রশ্নটি হ'ল: ডিএমএ যদি হার্ড ডিস্ক এবং র‌্যামের মধ্যে একটি (সম্ভবত খুব দীর্ঘ) ডেটা ট্রান্সফারের অনুমতি দিচ্ছে, তার মানে এই নয় যে সিপিইউ র‌্যাম ব্যবহার করতে পারে না এবং তাই তার পরবর্তী নির্দেশনা আনতে পারে না?

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

এখানে কি কিছু বিশদ রয়েছে যা আমি এখানে মিস করছি?

ধন্যবাদ


7
হ্যাঁ. ডিএমএ খুব কমই মেমরির পূর্ণ ব্যান্ডউইদথে চলে। এটি কেবল এখন এবং পরে একটি চক্র (বা চক্রের ফেটে) চুরি করে, I / O ডিভাইসের হার দ্বারা নিয়ন্ত্রিত।
ডেভ টুইট করেছেন

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

2
@ পাইপ: এটি ঠিক শোনাচ্ছে না। অমিগা একটি এম 68 কে সিপিইউ ব্যবহার করেছিল, এতে সম্পূর্ণ অ্যাসিক্রোনাস বাস রয়েছে। আপনি সম্ভবত অ্যাপল II এর কথা ভাবছেন, যা এই সুবিধাটি নিয়েছিল যে এর 6502 সিপিইউ কেবল প্রতিটি ঘড়ির চক্রের অর্ধেকের জন্য বাস ব্যবহার করে, এবং বাকি অর্ধেকটি ভিডিও আউটপুট হিসাবে ব্যবহার করে, যা ডিআরএএমকে সতেজ রাখার জন্য কাজ করে।
ডেভ খস্খসে পশমী বস্ত্র

4
আধুনিক সিপিইউতে এমন ক্যাশ রয়েছে যা গড়ে 95% মেমরি অ্যাক্সেসের সমাধান করে। যতক্ষণ না সিপিইউ র‌্যামের প্রয়োজন হয় না, ততক্ষণ ডিএমএ হস্তক্ষেপ করে না।
এমসাল্টারস

2
পুনঃটুইট আপনি যদি 68000 এর বাসের সময়ের দিকে লক্ষ্য করেন তবে প্রতিটি "বাস চক্র" (পড়ুন বা লিখুন) 8 টি রাজ্যে বিভক্ত হয়ে সর্বনিম্ন 4 টি প্রকৃত ঘড়ির চক্র নিয়ে চলেছেন, যার মধ্যে কেবলমাত্র কয়েকটি ডেটা বাস চালায়। এই মাল্টিপ্লেক্সিংয়ের জন্য কিছু অতিরিক্ত হার্ডওয়ারের প্রয়োজন নেই, কারণ এটি সমস্ত সময় ঠিকানা বাস চালায়।
পাইপ

উত্তর:


18

আপনি ঠিক বলেছেন যে ডিএমএ স্থানান্তরকালে সিপিইউ মেমরিটি অ্যাক্সেস করতে পারে না। তবে দুটি কারণ রয়েছে যা সংমিশ্রণে সিপিইউ এবং ডিএমএ স্থানান্তর সম্পাদনকারী ডিভাইসের মাধ্যমে আপাত সমান্তরাল মেমরি অ্যাক্সেসের অনুমতি দেয়:

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

সংমিশ্রণে, এই দুটি কারণের অর্থ ডিএমএ স্থানান্তর সম্পাদনকারী ডিভাইসটির সিপিইউ গতিতে খুব কম প্রভাব ফেলবে।

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


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

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

আমি নিশ্চিত নই যে অনেকগুলি রিয়েল সিস্টেম সত্যই ভিএনএম আর্কিটেকচার ব্যবহার করেছে কিনা। বাধাটি খুব সরু ছিল। এটি আসলে সিএসে ব্যবহৃত একটি তাত্ত্বিক ডিভাইস ছিল। নিকটতম আমি ভাবতে পারি একটি 1970 এর টেক্সাস 16 বিট ডিভাইস যার র‌্যামে তার নিবন্ধগুলি ছিল। আমি এমন একটি গ্রাফিক্স কার্ডের কথা ভাবছি যেখানে ডুয়াল পোর্টেড র‌্যাম ব্যবহার করা হয়। এআরএম এর মতো চিপগুলি উচ্চ প্রান্তে থাকাগুলি অনেকগুলি অভ্যন্তরীণ বাসগুলিতে এটি সম্পাদন করে (এএইচপি, এপিবি, স্ট্যাকস)। ভবিষ্যত- ইলেক্ট্রনিক্স.
memory

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

20

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

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

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

এছাড়াও নোট করুন যেহেতু কোনও প্রসেসর ডেটা অ্যাক্সেস করে, যদি একটি একক মেমরি ইন্টারফেস থাকে তবে অবশ্যই ডেটা অ্যাক্সেস এবং নির্দেশ অ্যাক্সেসের মধ্যে সালিশের জন্য একটি ব্যবস্থা থাকতে হবে।

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


2

যেহেতু কেবলমাত্র একটি বাস সিস্টেম রয়েছে, যা ডিএমএর মেমরি অ্যাক্সেস দ্বারা অবরুদ্ধ, সিএমইউ কাজ করতে পারে না যখন ডিএমএ ডেটা সরিয়ে রাখে এবং তাই বন্ধ হয়ে যায়।

এর পিছনে ধারণাটি নিম্নলিখিত:

আপনি যদি মেমরি থেকে পরপর তথ্য অনুলিপি করতে চান, তবে সিপিইউকে এমন কিছু করতে হবে:

ঠিকানা গণনা করুন -> পড়ুন ডেটা-> নতুন ঠিকানা গণনা করুন (+ 1 শব্দ) -> ডেটা পড়ুন ...

যেখানে ডিএমএ সমান্তরালভাবে নতুন ঠিকানার গণনা করে (মোডের উপর নির্ভর করে) এবং তাই দ্রুত। সুতরাং ডিএমএ পূর্ণ বাস থ্রুপুট (তাত্ত্বিকভাবে) এ কাজ করতে পারে।


"যেহেতু কেবলমাত্র একটি একক বাস ব্যবস্থা আছে" ... আধুনিক কম্পিউটারগুলির সাথে তাদের স্মৃতিশক্তি এবং পেরিফেরিয়াল বাসগুলি বিভিন্ন গতিতে চলমান রয়েছে এবং তাদের মধ্যে প্রোটোকল অনুবাদ হচ্ছে এমন নিরাপদ অনুমান নয়।
রেক্যান্ডবোনম্যান

3
পুরানো কম্পিউটারগুলিতে: অ্যাপল দ্বিতীয়টিতে (বা এটির কোনও পূর্বসূরি / প্রোটোটাইপ?) নকশার তদারকি ছিল, এতে তারা আক্ষরিক সিপিইউকে থামিয়ে দিয়েছিল। 6502 এ নিবন্ধগুলি গতিশীল মেমরি হিসাবে প্রয়োগ করা হয়। তারা সিপিইউকে যেভাবে থামিয়েছিল তা রিফ্রেশ বন্ধ করে দিয়েছে। সর্বাধিক ডিএমএ দৈর্ঘ্য খুব, খুব মেশিন নির্ভর up
রেক্যান্ডবোনম্যান 21

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

2

সাধারণত বলছি, না।

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


0

সাধারণভাবে না।

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

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

ডিএমএ কীভাবে কাজ করে তার কোনও জেনেরিক উত্তর নেই, এটি সিস্টেমের নকশা এবং সিস্টেমের মধ্যে থাকা সমস্ত উপাদানগুলির উপর নির্ভর করে।

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