প্রেরণা
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 এমবি / সেটিতে স্ট্রিমিং করতে সক্ষম নয়?
আজকের বাস্তবায়নে বাধা কোথায়?
এবং একটি সম্ভাব্য ফলোআপ: কেন কেউ এ জাতীয় বাধা দূর করার চেষ্টা করেনি?