مقدمة إلى SSD. الجزء 2. الواجهة

مقدمة إلى SSD. الجزء 2. الواجهة

В الجزء الاخير دورة "مقدمة إلى SSD" تحدثنا عن تاريخ ظهور الأقراص. سيخبر الجزء الثاني عن واجهات التفاعل مع محركات الأقراص.

يحدث الاتصال بين المعالج والأجهزة الطرفية وفقًا لاتفاقيات محددة مسبقًا تسمى واجهات. تنظم هذه الاتفاقيات مستوى التفاعل المادي والبرمجي.

الواجهة - مجموعة من الوسائل والأساليب وقواعد التفاعل بين عناصر النظام.

يؤثر التنفيذ المادي للواجهة على المعلمات التالية:

  • معدل نقل قناة الاتصال ؛
  • الحد الأقصى لعدد الأجهزة المتصلة في وقت واحد ؛
  • عدد الأخطاء التي تحدث.

تم بناء واجهات القرص على منافذ الإدخال / الإخراج، وهو عكس ذاكرة الإدخال / الإخراج ولا يشغل مساحة في مساحة عنوان المعالج.

المنافذ المتوازية والمتسلسلة

وفقًا لطريقة تبادل البيانات ، تنقسم منافذ الإدخال / الإخراج إلى نوعين:

  • موازى؛
  • ثابت.

كما يوحي الاسم ، يرسل المنفذ المتوازي كلمة آلية في وقت واحد ، تتكون من عدة بتات. المنفذ المتوازي هو أسهل طريقة لتبادل البيانات ، لأنه لا يتطلب حلول دوائر معقدة. في أبسط الحالات ، يتم إرسال كل جزء من كلمة الآلة على خط الإشارة الخاص بها ، ويتم استخدام خطي إشارة خدمة للتغذية المرتدة: البيانات جاهزة и البيانات مقبولة.

مقدمة إلى SSD. الجزء 2. الواجهة
المنافذ المتوازية ، للوهلة الأولى ، تتسع بشكل جيد: المزيد من خطوط الإشارة - يتم إرسال المزيد من البتات في كل مرة ، وبالتالي إنتاجية أعلى. ومع ذلك ، وبسبب زيادة عدد خطوط الإشارة ، يحدث تداخل بينها ، مما يؤدي إلى تشويه الرسائل المرسلة.

المنافذ التسلسلية هي عكس التوازي. يتم إرسال البيانات بتة واحدة في كل مرة ، مما يقلل من العدد الإجمالي لخطوط الإشارة ، ولكنه يعقد وحدة التحكم في الإدخال / الإخراج. تستقبل وحدة التحكم في المرسل كلمة الآلة في كل مرة ويجب أن ترسل بتة واحدة في كل مرة ، ويجب على وحدة التحكم في جهاز الاستقبال بدورها استقبال البتات وتخزينها بنفس الترتيب.

مقدمة إلى SSD. الجزء 2. الواجهة
يسمح لك عدد صغير من خطوط الإشارة بزيادة وتيرة إرسال الرسائل دون تدخل.

SCSI

مقدمة إلى SSD. الجزء 2. الواجهة
ظهرت واجهة أنظمة الكمبيوتر الصغيرة (SCSI) في عام 1978 وتم تصميمها في الأصل لدمج أجهزة ذات ملفات تعريف مختلفة في نظام واحد. تم توفير مواصفات SCSI-1 لتوصيل ما يصل إلى 8 أجهزة (مع وحدة التحكم) ، مثل:

  • الماسحات الضوئية.
  • محركات الأشرطة (اللافتات) ؛
  • محركات الأقراص الضوئية؛
  • محركات الأقراص والأجهزة الأخرى.

تم تسمية SCSI في الأصل باسم Shugart Associates System Interface (SASI) ، لكن لجنة المعايير لم توافق على اسم بعد الشركة ، وبعد يوم من العصف الذهني ، وُلد اسم واجهة أنظمة الكمبيوتر الصغيرة (SCSI). قصد "والد" SCSI ، لاري باوتشر ، أن يتم نطق الاختصار "مثير" ، ولكن دال آلان قراءة "sсuzzy" ("أخبر"). في وقت لاحق ، تم ترسيخ نطق "أخبر" بقوة في هذا المعيار.

في مصطلحات SCSI ، تنقسم الأجهزة المتصلة إلى نوعين:

  • المبادرين.
  • الأجهزة المستهدفة.

يرسل البادئ أمرًا إلى الجهاز المستهدف ، والذي يرسل بعد ذلك استجابة إلى البادئ. يتم توصيل البادئين والأهداف بناقل SCSI مشترك ، والذي يبلغ عرضه الترددي 1 ميغا بايت / ثانية في معيار SCSI-5.

تفرض طوبولوجيا "الحافلة العامة" المستخدمة عددًا من القيود:

  • في نهايات الحافلة ، هناك حاجة إلى أجهزة خاصة - أجهزة الإنهاء ؛
  • يتم مشاركة عرض النطاق الترددي للحافلة بين جميع الأجهزة ؛
  • الحد الأقصى لعدد الأجهزة المتصلة في وقت واحد محدود.

مقدمة إلى SSD. الجزء 2. الواجهة

يتم تحديد الأجهزة الموجودة في الحافلة برقم فريد يسمى معرف هدف SCSI. يتم تمثيل كل وحدة SCSI في النظام بواسطة جهاز منطقي واحد على الأقل ، والذي تتم معالجته بواسطة رقم فريد داخل الجهاز الفعلي. رقم الوحدة المنطقية (لون).

مقدمة إلى SSD. الجزء 2. الواجهة
يتم إرسال الأوامر في SCSI في النموذج كتل وصف الأمر (Command Descriptor Block، CDB) ، ويتألف من كود العملية ومعلمات الأمر. يصف المعيار أكثر من 200 أمر ، مقسمة إلى أربع فئات:

  • إلزامي - يجب أن يدعمه الجهاز ؛
  • اختياري - يمكن تنفيذها؛
  • خاص بالبائع - مستخدمة من قبل مصنع معين ؛
  • مهمل - أوامر عفا عليها الزمن.

من بين العديد من الأوامر ، ثلاثة منها فقط إلزامية للأجهزة:

  • وحدة الاختبار جاهزة - التحقق من جاهزية الجهاز ؛
  • طلب الحس - يطلب رمز الخطأ للأمر السابق ؛
  • التحقيق - طلب الخصائص الرئيسية للجهاز.

بعد تلقي الأمر ومعالجته ، يرسل الجهاز المستهدف رمز الحالة إلى البادئ ، والذي يصف نتيجة التنفيذ.

أدى التحسين الإضافي لـ SCSI (مواصفات SCSI-2 و Ultra SCSI) إلى توسيع قائمة الأوامر المستخدمة وزيادة عدد الأجهزة المتصلة حتى 16 ، ومعدل تبادل البيانات على الناقل حتى 640 ميجابايت / ثانية. نظرًا لأن SCSI عبارة عن واجهة متوازية ، فقد ارتبطت زيادة وتيرة تبادل البيانات بانخفاض في الحد الأقصى لطول الكابل وأدى إلى حدوث إزعاج في الاستخدام.

بدءًا من معيار Ultra-3 SCSI ، ظهر دعم "التوصيل السريع" - توصيل الأجهزة عند تشغيل الطاقة.

كان أول محرك SSD معروف لـ SCSI هو M-Systems FFD-350 ، الذي تم إصداره في عام 1995. كان للقرص تكلفة عالية ولم يتم استخدامه على نطاق واسع.

حاليًا ، SCSI المتوازية ليست واجهة قرص شائعة ، ولكن لا تزال مجموعة الأوامر مستخدمة بنشاط في واجهات USB و SAS.

ATA / باتا

مقدمة إلى SSD. الجزء 2. الواجهة
السطح البيني ATA (مرفق التكنولوجيا المتقدمة) ، المعروف أيضًا باسم PATA تم تطوير (Parallel ATA) بواسطة Western Digital في عام 1986. أكد الاسم التسويقي لمعيار IDE (إلكترونيات المحرك المدمجة - "الإلكترونيات المدمجة في محرك الأقراص") على ابتكار مهم: تم دمج وحدة التحكم في المحرك في محرك الأقراص ، وليس على لوحة توسعة منفصلة.

أدى قرار وضع وحدة التحكم داخل محرك الأقراص إلى حل العديد من المشكلات في وقت واحد. أولاً ، انخفضت المسافة من محرك الأقراص إلى وحدة التحكم ، مما أثر بشكل إيجابي على أداء محرك الأقراص. ثانيًا ، تم "شحذ" وحدة التحكم المدمجة فقط لنوع معين من محرك الأقراص ، وبالتالي كانت أرخص.

مقدمة إلى SSD. الجزء 2. الواجهة
يستخدم ATA ، مثل SCSI ، طريقة I / O المتوازية ، والتي تنعكس في الكابلات المستخدمة. يتطلب توصيل محركات الأقراص باستخدام واجهة IDE كبلات ذات 40 نواة ، يشار إليها أيضًا باسم الكابلات المسطحة. تستخدم المواصفات الأحدث دعامات ذات 80 سلكًا ، وأكثر من نصفها عبارة عن حلقات أرضية لتقليل التداخل عند الترددات العالية.

يوجد موصلين إلى أربعة موصلين على كبل ATA ، أحدهما متصل باللوحة الأم والباقي بمحركات الأقراص. عند توصيل جهازين في حلقة واحدة ، يجب تكوين أحدهما كـ الماجستير، والثاني باسم عبد. لا يمكن توصيل الجهاز الثالث إلا في وضع القراءة فقط.

مقدمة إلى SSD. الجزء 2. الواجهة
يحدد موضع العبور دور جهاز معين. المصطلحان Master و Slave فيما يتعلق بالأجهزة ليسا صحيحين تمامًا ، لأنه فيما يتعلق بوحدة التحكم ، فإن جميع الأجهزة المتصلة هي Slaves.

ابتكار خاص في ATA-3 هو المظهر المراقبة الذاتية, تقنية التحليل وإعداد التقارير (SMART). قامت خمس شركات (IBM و Seagate و Quantum و Conner و Western Digital) بتوحيد قواها وتوحيد تكنولوجيا تقييم صحة محرك الأقراص.

كان دعم محركات الأقراص ذات الحالة الصلبة موجودًا منذ الإصدار 1998 من المعيار ، والذي تم إصداره في عام 33.3. قدم هذا الإصدار من المعيار معدلات نقل بيانات تصل إلى XNUMX ميجابايت / ثانية.

يضع المعيار متطلبات صارمة لكابلات ATA:

  • يجب أن يكون العمود مسطحًا ؛
  • أقصى طول للقطار 18 بوصة (45.7 سم).

كان القطار القصير والواسع غير مريح ويتداخل مع التبريد. أصبح من الصعب زيادة تردد الإرسال مع كل إصدار لاحق من المعيار ، وحل ATA-7 المشكلة جذريًا: تم استبدال الواجهة المتوازية بواحدة تسلسلية. بعد ذلك ، حصلت ATA على كلمة Parallel وأصبحت تُعرف باسم PATA ، وتلقى الإصدار السابع من المعيار اسمًا مختلفًا - Serial ATA. بدأ ترقيم إصدار SATA من واحد.

SATA

مقدمة إلى SSD. الجزء 2. الواجهة
تم تقديم معيار Serial ATA (SATA) في 7 يناير 2003 وعالج مشاكل سابقه بالتغييرات التالية:

  • استبدال المنفذ المتوازي بالمسلسل ؛
  • تم استبدال كابل عريض 80 سلكًا بـ 7 أسلاك ؛
  • تم استبدال طبولوجيا "الناقل المشترك" باتصال "من نقطة إلى نقطة".

على الرغم من أن SATA 1.0 (SATA / 150 ، 150 ميجابايت / ثانية) كان أسرع بشكل هامشي من ATA-6 (UltraDMA / 130 ، 130 ميجابايت / ثانية) ، كان الانتقال إلى الاتصال التسلسلي "تمهيدًا" للسرعات.

تم استبدال ستة عشر خط إشارة لنقل البيانات في ATA بزوجين ملتويين: أحدهما للإرسال والثاني للاستقبال. تم تصميم موصلات SATA لتكون أكثر مقاومة لعمليات إعادة التوصيل المتعددة ، كما أن مواصفات SATA 1.0 جعلت التوصيل السريع ممكنًا.

تكون بعض المسامير الموجودة على محركات الأقراص أقصر من جميع المسامير الأخرى. يتم ذلك لدعم "التبديل السريع" (التبديل السريع). أثناء عملية الاستبدال ، "يفقد" الجهاز و "يجد" الخطوط بترتيب محدد مسبقًا.

بعد أكثر من عام بقليل ، في أبريل 2004 ، تم إصدار الإصدار الثاني من مواصفات SATA. بالإضافة إلى تسريع يصل إلى 3 جيجابت / ثانية ، قدم SATA 2.0 التكنولوجيا أوامر الأوامر الأصلية (NCQ). الأجهزة التي تدعم NCQ قادرة على تنظيم ترتيب تنفيذ الأوامر الواردة بشكل مستقل لتحقيق أقصى أداء.

مقدمة إلى SSD. الجزء 2. الواجهة
في السنوات الثلاث التالية ، عملت مجموعة عمل SATA على تحسين المواصفات الحالية ، وقدم الإصدار 2.6 موصلات Slimline المدمجة و micro SATA (uSATA). هذه الموصلات هي نسخة أصغر من موصل SATA الأصلي وهي مصممة لمحركات الأقراص الضوئية ومحركات الأقراص الصغيرة في أجهزة الكمبيوتر المحمولة.

في حين أن الجيل الثاني من SATA كان لديه عرض نطاق ترددي كافٍ لمحركات الأقراص الصلبة ، إلا أن محركات الأقراص ذات الحالة الثابتة تطلبت المزيد. في مايو 2009 ، تم إصدار الإصدار الثالث من مواصفات SATA مع زيادة عرض النطاق الترددي إلى 6 جيجابت / ثانية.

مقدمة إلى SSD. الجزء 2. الواجهة
تم إيلاء اهتمام خاص لمحركات الأقراص ذات الحالة الصلبة في إصدار SATA 3.1. ظهر موصل Mini-SATA (mSATA) ، مصممًا لتوصيل محركات الأقراص ذات الحالة الصلبة في أجهزة الكمبيوتر المحمولة. على عكس Slimline و uSATA ، بدا الموصل الجديد مثل PCIe Mini ، على الرغم من أنه لم يكن متوافقًا كهربائيًا مع PCIe. بالإضافة إلى الموصل الجديد ، تباهى SATA 3.1 بالقدرة على ترتيب أوامر TRIM مع أوامر القراءة والكتابة.

يقوم الأمر TRIM بإعلام SSD بكتل البيانات التي لا تحمل حمولة. قبل SATA 3.1 ، كان هذا الأمر يقوم بمسح ذاكرات التخزين المؤقت وتعليق عمليات الإدخال / الإخراج ، متبوعًا بأمر TRIM. أدى هذا الأسلوب إلى تدهور أداء القرص أثناء عمليات الحذف.

لم تواكب مواصفات SATA النمو السريع في سرعات الوصول لمحركات أقراص الحالة الصلبة ، مما أدى إلى حل وسط في عام 2013 يسمى SATA Express في معيار SATA 3.2. بدلاً من مضاعفة عرض النطاق الترددي لـ SATA مرة أخرى ، استخدم المطورون ناقل PCIe المستخدم على نطاق واسع ، والذي تتجاوز سرعته 6 جيجابت / ثانية. اكتسبت محركات الأقراص التي تدعم SATA Express عامل الشكل الخاص بها المسمى M.2.

SAS

مقدمة إلى SSD. الجزء 2. الواجهة
كما أن معيار SCSI ، "المنافس" مع ATA ، لم يقف ساكناً ، وبعد عام واحد فقط من ظهور Serial ATA ، في عام 2004 ، ولدت من جديد في واجهة تسلسلية. اسم الواجهة الجديدة هو المسلسل المرفقة السكازي (ساس).

على الرغم من أن SAS ورثت مجموعة أوامر SCSI ، إلا أن التغييرات كانت مهمة:

  • واجهة تسلسلية؛
  • كبل 29 سلكًا مزودًا بمصدر طاقة ؛
  • اتصال من نقطة إلى نقطة

تم توريث مصطلحات SCSI أيضًا. لا تزال وحدة التحكم تسمى البادئ ، وتسمى الأجهزة المتصلة الهدف. تشكل جميع الأجهزة المستهدفة والبادئ مجال SAS. في SAS ، لا يعتمد عرض النطاق الترددي للاتصال على عدد الأجهزة في المجال ، حيث يستخدم كل جهاز قناته المخصصة.

يتجاوز الحد الأقصى لعدد الأجهزة المتصلة في وقت واحد في مجال SAS ، وفقًا للمواصفات ، 16 ألفًا ، وبدلاً من معرف SCSI ، يتم استخدام المعرف للعنونة الاسم العالمي (WWN).

WWN هو معرف فريد يبلغ طوله 16 بايت ، مشابه لعنوان MAC لأجهزة SAS.

مقدمة إلى SSD. الجزء 2. الواجهة
على الرغم من أوجه التشابه بين موصلات SAS و SATA ، إلا أن هذه المعايير ليست متوافقة تمامًا. ومع ذلك ، يمكن توصيل محرك أقراص SATA بموصل SAS ، ولكن ليس العكس. يتم ضمان التوافق بين محركات أقراص SATA ومجال SAS باستخدام بروتوكول SATA Tunneling Protocol (STP).

يحتوي الإصدار الأول من معيار SAS-1 على عرض نطاق ترددي يبلغ 3 جيجابت / ثانية ، وقد أدى الإصدار الأحدث ، SAS-4 ، إلى تحسين هذا الرقم بمقدار 7 مرات: 22,5 جيجابت / ثانية.

بكيي

مقدمة إلى SSD. الجزء 2. الواجهة
يعد Peripheral Component Interconnect Express (PCI Express ، PCIe) واجهة تسلسلية لنقل البيانات ، ظهرت في عام 2002. بدأت شركة Intel التطوير ، ثم تم نقلها إلى منظمة خاصة - PCI Special Interest Group.

لم تكن واجهة PCIe التسلسلية استثناءً وأصبحت استمرارًا منطقيًا لـ PCI المتوازي ، المصمم لتوصيل بطاقات التوسيع.

يختلف PCI Express بشكل كبير عن SATA و SAS. تحتوي واجهة PCIe على عدد متغير من الممرات. عدد الأسطر يساوي قوى اثنين ويتراوح من 1 إلى 16.

لا يشير المصطلح "lane" في PCIe إلى حارة إشارة محددة ، ولكن إلى ارتباط اتصال ثنائي الاتجاه منفصل يتكون من حارات الإشارة التالية:

  • تلقي + واستلام- ؛
  • الإرسال + والإرسال- ؛
  • أربعة أسلاك أرضية.

يؤثر عدد ممرات PCIe بشكل مباشر على الحد الأقصى لعرض النطاق الترددي للاتصال. يتيح لك معيار PCI Express 4.0 الحالي تحقيق 1.9 جيجابايت / ثانية على خط واحد ، و 31.5 جيجابايت / ثانية عند استخدام 16 سطرًا.

مقدمة إلى SSD. الجزء 2. الواجهة
تنمو "شهية" محركات الأقراص ذات الحالة الصلبة بسرعة كبيرة. لم يتمكن كل من SATA و SAS من زيادة عرض النطاق الترددي الخاص بهما لمواكبة محركات أقراص الحالة الصلبة ، مما أدى إلى إدخال محركات أقراص الحالة الصلبة المتصلة بـ PCIe.

على الرغم من أن بطاقات PCIe الإضافية مثبتة ، إلا أن PCIe قابلة للتبديل السريع. دبابيس قصيرة PRSNT (الإنجليزية الحالية - الحاضر) تأكد من أن البطاقة مثبتة بالكامل في الفتحة.

يتم تنظيم محركات الأقراص ذات الحالة الصلبة المتصلة عبر PCIe بواسطة معيار منفصل مواصفات واجهة وحدة تحكم مضيف الذاكرة غير المتطايرة وتتجسد في مجموعة متنوعة من العوامل الشكلية ، لكننا سنتحدث عنها في الجزء التالي.

محركات بعيدة

عند إنشاء مستودعات بيانات كبيرة ، كانت هناك حاجة إلى بروتوكولات تسمح لك بتوصيل محركات الأقراص الموجودة خارج الخادم. كان الحل الأول في هذا المجال الإنترنت SCSI (iSCSI) ، تم تطويره بواسطة IBM و Cisco في عام 1998.

الفكرة وراء بروتوكول iSCSI بسيطة: أوامر SCSI "ملفوفة" في حزم TCP / IP وإرسالها إلى الشبكة. على الرغم من الاتصال عن بعد ، فإنه يعطي الوهم للعملاء بأن محرك الأقراص متصل محليًا. يمكن إنشاء شبكة منطقة التخزين (SAN) ، القائمة على بروتوكول iSCSI ، على البنية التحتية للشبكة الحالية. يقلل استخدام بروتوكول iSCSI من تكلفة تنظيم شبكة التخزين (SAN) بشكل كبير.

iSCSI به خيار "ممتاز" - بروتوكول القناة الليفية (FCP). تم تصميم شبكة SAN التي تستخدم FCP على خطوط اتصال مخصصة من الألياف الضوئية. يتطلب هذا النهج معدات شبكة بصرية إضافية ، ولكنه ثابت وعالي الإنتاجية.

هناك العديد من البروتوكولات لإرسال أوامر SCSI عبر شبكات الكمبيوتر. ومع ذلك ، هناك معيار واحد فقط يحل المشكلة المعاكسة ويسمح لك بإرسال حزم IP عبر ناقل SCSI - IP عبر SCSI.

تستخدم معظم بروتوكولات SAN مجموعة أوامر SCSI لإدارة محركات الأقراص ، ولكن هناك استثناءات ، مثل بسيطة ATA عبر إيثرنت (AOE). يرسل بروتوكول AoE أوامر ATA في حزم Ethernet ، لكن محركات الأقراص تظهر على أنها SCSI في النظام.

مع ظهور محركات أقراص NVM Express ، لم تعد بروتوكولات iSCSI و FCP تلبي المتطلبات المتزايدة بسرعة لمحركات أقراص الحالة الثابتة SSD. ظهر حلان:

  • إزالة ناقل PCI Express خارج الخادم ؛
  • إنشاء بروتوكول NVMe عبر الأقمشة.

تؤدي إزالة ناقل PCIe إلى إنشاء أجهزة تبديل معقدة ولكنها لا تغير البروتوكول.

أصبح بروتوكول NVMe over Fabrics بديلاً جيدًا لـ iSCSI و FCP. يستخدم NVMe-oF ارتباط الألياف البصرية ومجموعة أوامر NVM Express.

DDR-T

مقدمة إلى SSD. الجزء 2. الواجهة
تحل معايير iSCSI و NVMe-oF مشكلة توصيل محركات الأقراص البعيدة بمحركات الأقراص المحلية ، بينما ذهبت Intel في الاتجاه الآخر وجعلت محرك الأقراص المحلي أقرب ما يمكن من المعالج. وقع الاختيار على فتحات DIMM التي تتصل بها ذاكرة الوصول العشوائي. يبلغ الحد الأقصى لعرض النطاق الترددي لذاكرة DDR4 25 جيجابايت / ثانية ، وهو أسرع بكثير من ناقل PCIe. هذه هي الطريقة التي ولدت بها محركات الأقراص الثابتة ذات الذاكرة الثابتة Intel® Optane ™ DC.

تم اختراع بروتوكول لتوصيل محرك الأقراص بفتحات DIMM DDR-T، متوافق ماديًا وكهربائيًا مع DDR4 ، ولكنه يتطلب وحدة تحكم خاصة ترى الفرق بين شريط الذاكرة ومحرك الأقراص. سرعة الوصول إلى محرك الأقراص أقل من ذاكرة الوصول العشوائي ، ولكنها أكثر من سرعة الوصول إلى NVMe.

DDR-T متاح فقط مع معالجات الجيل Intel® Cascade Lake أو أحدث.

اختتام

قطعت جميع الواجهات تقريبًا شوطًا طويلاً من نقل البيانات التسلسلي إلى نقل البيانات المتوازي. سرعات SSD آخذة في الارتفاع ، وكانت محركات SSD بالأمس مثيرة للفضول ، واليوم لم تعد NVMe مفاجأة.

في مختبرنا حدد معمل يمكنك اختبار محركات أقراص SSD و NVMe بنفسك.

يمكن للمستخدمين المسجلين فقط المشاركة في الاستطلاع. تسجيل الدخول، من فضلك.

هل ستحل محركات NVMe محل محركات أقراص الحالة الصلبة الكلاسيكية في المستقبل القريب؟

  • 55.5%نعم 100

  • 44.4%رقم 80

صوت 180 مستخدمين. امتنع 28 مستخدما عن التصويت.

المصدر: www.habr.com

إضافة تعليق