ইউএসবি ডিভাইসগুলি কেন 480 এমবিট / সেকেন্ডের চেয়ে ধীর


41

প্রেরণা

480 এমবিট / এস ইউএসবি 2.0 এর সিগন্যালিং হারের সাথে ডিভাইসগুলি 60 এমবি / সেকেন্ড পর্যন্ত ডেটা সংক্রমণ করতে সক্ষম হওয়া উচিত। তবে আজকের ডিভাইসগুলি [ উইকি: ইউএসবি ] পড়ার সময় 30-42 এমবি / সেকেন্ডের মধ্যে সীমাবদ্ধ বলে মনে হচ্ছে । এটি 30 শতাংশ ওভারহেড।

ইউএসবি ২.০ দশ বছরেরও বেশি সময় ধরে বাহ্যিক ডিভাইসের জন্য একটি আদর্শ বিষয় standard প্রথম থেকেই ইউএসবি ইন্টারফেসের জন্য সবচেয়ে গুরুত্বপূর্ণ অ্যাপ্লিকেশনগুলির মধ্যে একটি হ'ল বহনযোগ্য স্টোরেজ। দুর্ভাগ্যক্রমে ইউএসবি ২.০ দ্রুতগতিতে এই ব্যান্ডউইথের দাবিদার অ্যাপ্লিকেশনগুলিতে বাধা দেয়, আজকের এইচডিডি উদাহরণস্বরূপ পড়ার জন্য 90 এমবি / সেকেন্ডের বেশি সক্ষম capable দীর্ঘ বাজারের উপস্থিতি এবং উচ্চতর ব্যান্ডউইথের অবিচ্ছিন্ন প্রয়োজন বিবেচনা করে আমাদের প্রত্যাশা করা উচিত যে কয়েক বছর ধরে ইউএসবি ২.০ ইকো সিস্টেমটি অনুকূলিত হয়েছে এবং তাত্ত্বিক সীমাটির কাছাকাছি একটি পড়ার পারফরম্যান্সে পৌঁছেছে।

আমাদের ক্ষেত্রে তাত্ত্বিক সর্বোচ্চ ব্যান্ডউইথ কী? প্রতিটি প্রোটোকলের ইউএসবি সহ ওভারহেড থাকে এবং অফিসিয়াল ইউএসবি 2.0 স্ট্যান্ডার্ড অনুসারে এটি 53.248 এমবি / এস [ 2 , টেবিল 5-10]। এর অর্থ তাত্ত্বিকভাবে আজকের ইউএসবি ২.০ ডিভাইসগুলি 25 শতাংশ দ্রুত হতে পারে।

বিশ্লেষণ

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

নোট

এই প্রশ্নের পুরো জুড়ে শুধুমাত্র দশমিক উপসর্গ ব্যবহার করা হয়।

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

কাঠামোবদ্ধ

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

এখানে চিত্র বর্ণনা লিখুন আরও বড় সংস্করণ দেখতে একটি নতুন ট্যাবে চিত্র খুলুন।

লেনদেন

ইউএসবি হ'ল একটি মাস্টার চালিত প্রোটোকল এবং প্রতিটি লেনদেন হোস্ট দ্বারা শুরু করা হয়। এসওএফ এবং ইওএফ এর মধ্যে টাইমস্লট ইউএসবি লেনদেনের জন্য ব্যবহার করা যেতে পারে। তবে এসএফ এবং ইওএফের সময় নির্ধারিত সময় অত্যন্ত কঠোর এবং হোস্ট কেবলমাত্র লেনদেন শুরু করে যা ফ্রি টাইমস্লটের মধ্যে সম্পূর্ণরূপে সম্পন্ন হতে পারে।

আমরা যে লেনদেনে আগ্রহী তা হ'ল একটি সফল পরিমাণে লেনদেন। লেনদেনটি টোকেন প্যাকেট IN দিয়ে শুরু হয়, তারপরে হোস্টগুলি ডেটা প্যাকেট DATA0 / DATA1 এর জন্য অপেক্ষা করে এবং হ্যান্ডশেক প্যাকেট ACK দিয়ে সংক্রমণকে নিশ্চিত করে। এই সমস্ত প্যাকেটের ইওপি প্যাকেটের ডেটার উপর নির্ভর করে 1 থেকে 8 বিট হয়, আমরা এখানে সবচেয়ে খারাপ পরিস্থিতি ধরে নিয়েছি।

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

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

উপযুক্ত ঘড়ির পুনরুদ্ধার নিশ্চিত করার জন্য মানগুলি একটি পদ্ধতি কল বিট স্টফিংকে সংজ্ঞায়িত করে। যখন প্যাকেটটির জন্য একই আউটপুটটির দীর্ঘ দীর্ঘ ক্রম প্রয়োজন হয় তখন একটি অতিরিক্ত ফ্ল্যাঙ্ক যুক্ত করা হয়। এটি সর্বাধিক 6 বিটের পরে ফ্ল্যাঙ্ক নিশ্চিত করে। সবচেয়ে খারাপ ক্ষেত্রে এটি মোট প্যাকেটের আকার 7/6 বাড়িয়ে তুলবে। ইওপি বিট স্টফিংয়ের বিষয় নয়।

এখানে চিত্র বর্ণনা লিখুন আরও বড় সংস্করণ দেখতে একটি নতুন ট্যাবে চিত্র খুলুন।

ব্যান্ডউইথ গণনা

একটি বাল্ক ইন লেনদেনের 24 বাইটের ওভারহেড এবং 512 বাইটের একটি পেড থাকে। এটি মোট 536 বাইট। এর মধ্যে টাইমস্লটটি 7487 বাইট প্রশস্ত। বিট স্টফিংয়ের প্রয়োজনীয়তা ছাড়াই 13.968 প্যাকেটের জন্য জায়গা রয়েছে। প্রতি সেকেন্ডে 8000 মাইক্রো-ফ্রেম থাকা আমরা 13 * 512 * 8000 বি / এস = 53.248 এমবি / সেকেন্ডের সাথে ডেটা পড়তে পারি

সম্পূর্ণরূপে এলোমেলো তথ্যের জন্য আমরা প্রত্যাশা করি যে টানা 6 টি বিটের 2 ** 6 = 64 অনুক্রমের একটিতে বিট স্টাফিং প্রয়োজনীয়। এটি (63 * 6 + 7) / (64 * 6) এর বৃদ্ধি। এই সংখ্যাগুলিতে বিট স্টফিংয়ের সাপেক্ষে সমস্ত বাইটগুলি গুণিত করা (19 + 512) * (* 63 * 6 +)) / (*৪ *)) + ৫ = 7৩7.৩৮ বাইটের মোট লেনদেনের দৈর্ঘ্য দেয়। যার ফলাফল প্রতি মাইক্রো-ফ্রেমে 13.932 প্যাকেটে।

এই গণনাগুলি থেকে আর একটি বিশেষ মামলা অনুপস্থিত। স্ট্যান্ডার্ডটি সর্বাধিক ডিভাইস প্রতিক্রিয়া সময়টি 192 টি বিট গুন [ 2 , অধ্যায় 7.1.19.2] এর সাথে সংজ্ঞায়িত করে। ডিভাইসটির পূর্ণ প্রতিক্রিয়া সময়ের প্রয়োজন হলে শেষ প্যাকেজটি এখনও ফ্রেমে ফিট করে কিনা তা সিদ্ধান্ত নেওয়ার সময় এটি বিবেচনা করতে হবে। আমরা 7439 বাইটের উইন্ডোটি ব্যবহার করে এর জন্য অ্যাকাউন্ট করতে পারি। ফলাফল ব্যান্ডউইথ যদিও একই।

কি বাকী আছে

  • ত্রুটি সনাক্তকরণ এবং পুনরুদ্ধার কভার করা হয়নি। হতে পারে ত্রুটি যথেষ্ট ঘন ঘন হয় বা ত্রুটি পুনরুদ্ধার করা গড় পারফরম্যান্সের উপর প্রভাব ফেলতে যথেষ্ট সময় ব্যয় করে।

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

  • অন্যান্য শেষ পয়েন্ট বা অতিরিক্ত যোগাযোগের স্থানান্তর বিবেচনা করা হয়নি। স্টোরেজ ডিভাইসের জন্য স্ট্যান্ডার্ড প্রোটোকলের জন্য কিছু ধারাবাহিক পার্শ্ব চ্যানেল যোগাযোগ দরকার যা মূল্যবান স্লট সময় ব্যয় করে।

  • ডিভাইস ড্রাইভার বা ফাইল সিস্টেম স্তর জন্য স্টোরেজ ডিভাইসের জন্য অতিরিক্ত প্রোটোকল ওভারহেড থাকতে পারে। (প্যাকেট পে-লোড == স্টোরেজ ডেটা?)

প্রশ্ন

  • আজকের বাস্তবায়নগুলি কেন 53 এমবি / সেটিতে স্ট্রিমিং করতে সক্ষম নয়?

  • আজকের বাস্তবায়নে বাধা কোথায়?

এবং একটি সম্ভাব্য ফলোআপ: কেন কেউ এ জাতীয় বাধা দূর করার চেষ্টা করেনি?

তথ্যসূত্র

[1] অফিসিয়াল ইউএসবি ২.০ স্পেসিফিকেশন

[2] স্পেসিফিকেশনটির দ্রুত পিডিএফ মিরর


2
আপনি অবগত আছেন যে ইউএসবি ২.০ ইউএসবি ৩.০ ইউএসবি 3.0 দ্বারা ছাড়িয়ে গেছে যা যথেষ্ট দ্রুতগতির আপনি না?
জনিবোটস

8
ইউএসবি স্ট্যান্ডার্ডের সাথে গবেষণার গভীরতা এবং আপাত পরিচিতি থেকে, এটা স্পষ্ট যে ক্রিস ইউএসবি 3.0, @ জনিবোটের সাথে পরিচিত।
tyblu

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

কর্টুক: এটি উল্লেখ করার জন্য ধন্যবাদ, কারও অপমান করার বিষয়টি আমার উদ্দেশ্য অবশ্যই নয়। আমার বক্তব্যটি হল যে বেশিরভাগ স্পেসিফিকেশনের মতো ইউএসবিও সময়ের সাথে বিকশিত হয়। ২.০ দ্রুত হয় 1.0 এবং 3.0 এখন বাজারে আসছে এবং দ্রুততর is আমি কল্পনা করব যে আরও অনেক সংস্থাগুলি 2.0
জনিবোটস

1
মাইক্রোফ্রেমে 13 টি প্যাকেটের জন্য জায়গা থাকতে পারে, অনেক হোস্ট নিয়ন্ত্রক আসলে এটি করতে পারে না। 2006 সালে ফিরে বেশিরভাগগুলি 8 আউট এবং 10-এ সীমাবদ্ধ ছিল - তখন থেকে এটির খুব বেশি পরিবর্তন হয়েছে কিনা তা আমার কোনও ধারণা নেই।
ব্যবহারকারী 2793784

উত্তর:


15

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

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

স্ট্রিমিংয়ের ক্ষেত্রে, আইএসও খুব দ্রুত হওয়ার কথা বলেছিল তবে কন্ট্রোলাররা এটি খুব ভালভাবে প্রয়োগ করে না, যেহেতু 95% অ্যাপ্লিকেশন বাল্ক স্থানান্তর ব্যবহার করে।

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


6

এটি একটি খুব পুরানো বিষয়, তবে এর কোনও উত্তর নেই। এটি আমার চেষ্টা:

আজকের বাস্তবায়নগুলি কেন 53 এমবি / সেটিতে স্ট্রিমিং করতে সক্ষম নয়?

গণনাগুলি প্রায় জরিমানা, তবে আপনি ফ্রেম চিহ্নিতকারীগুলির মধ্যে উপলভ্য সংখ্যক বাইটে কয়েকটি জিনিস ভুলে যাচ্ছেন:

  1. প্রতিটি মাইক্রোফ্রেমে EOF1 এবং EOF2 নামে দুটি থ্রেশহোল্ড থাকে। ইওএফ 1 এ / এর পরে কোনও বাস একিভিটি অবশ্যই ঘটবে না। এই পয়েন্টের স্থাপনটি একটি জটিল জিনিস, তবে সাধারণ অবস্থানটি পরবর্তী এসওএফের আগে 560 বিট বার হয় times একটি হোস্টকে অবশ্যই তার লেনদেনগুলি এমনভাবে নির্ধারণ করতে হবে যাতে চ্যানেল থেকে যে কোনও সম্ভাব্য প্রতিক্রিয়া এই দোরগোড়ায় না পড়ে। যা আপনার গণনা করা 7487 বাইটের মধ্যে প্রায় 70 বাইট খায়।

  2. আপনি "এলোমেলো ডেটা" ধরে নিয়েছেন। এটি সম্পূর্ণ ভিত্তিহীন, ডেটা কিছু হতে পারে be অতএব হোস্টকে সর্বাধিক বিট স্টাফিং ওভারহেড, 512 * 7/6 = ~ 600 বাইট সহ, সবচেয়ে খারাপ ক্ষেত্রে প্যালোডের জন্য লেনদেনের সময়সূচি নির্ধারণ করতে হবে। ওভারহেডের লেনদেনের 24 বাইট প্লাস, আপনি যথাযথভাবে গণনা করেছেন। এটি প্রতি মাইক্রো-ফ্রেমে (7487-70) / 624 = 11.88 লেনদেন দেয়।

  3. অন্য কোনও ক্রিয়াকলাপের জন্য নিয়ন্ত্রণ লেনদেনের জন্য হোস্টের প্রায় 10% ব্যান্ডউইথের সংরক্ষণ করা প্রয়োজন, সুতরাং আমরা প্রায় 10.7 লেনদেন পাই।

  4. এর লিঙ্কযুক্ত তালিকা পরিচালনা করার সময় হোস্ট কন্ট্রোলারেরও কিছু নির্দিষ্ট বিলম্ব থাকে, সুতরাং লেনদেনের মধ্যে অতিরিক্ত ব্যবধান থাকে।

  5. ডিভাইসটি মূল থেকে 5 টি হাব / হप्स হতে পারে এবং প্রতিক্রিয়া বিলম্ব 1700 এনএস হতে পারে, যা প্রতিটি লেনদেনের বাজেটের আরও 106 বাইট খায়। কাঁচা অনুমান হিসাবে, এটি সংরক্ষিত ব্যান্ডউইথের জন্য গণনা করে না, কেবলমাত্র ইউফ্রেমে প্রতি 10.16 লেনদেন করে।

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

কিছু ক্রেজিট কৃত্রিম মাপদণ্ড ইউফ্রেমে 11 টি লেনদেন পর্যন্ত যেতে পারে, যা এটি 44 এমবিপিএস করে। এবং এইচএস ইউএসবি প্রোটোকলের জন্য এটি সর্বোচ্চ।

আজকের বাস্তবায়নে বাধা কোথায়?

উপরের যে কোনওটি দেখতে পাচ্ছেন, কোনও বটলিনেক নেই, সমস্ত কাঁচা বিট-টাইম স্পেস প্রোটোকল ওভারহেড দ্বারা খাওয়া হয়।

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