? این قسمت خیلی مهمه حتما بخونید :
از سال های قبل ، یکی از بزرگترین دغدغه های مهندسین سخت افزار کامپیوتر این بوده که دستگاه های جانبی رو چطور به کامپیوتر وصل کنیم . در این بین مشکلاتی مثل نویز ، پهنای باند ، سرعت انتقال ، سازگاری ، هزینه و خیلی مسائل دیگه وجود داشتن . دستگاه های جانبی مثل حافظه ها ، کارت گرافیک و کارت شبکه دستگاه هایی هستن که باید به یه شکلی به کامپیوتر وصل می شدن . واسه این کار ، استانداردهای زیادی معرفی شد .
ما به گذشته های دور کاری نداریم ، در سال 1992 شرکت اینتل یه استانداردی به نام PCI معرفی کرد . PCI در واقع یک مسیر مشترک برای اشتراک دیتا در دستگاه های مختلف بود . اساس کار PCI بر انتقال اطلاعات به صورت موازی بود یعنی به ازای هر بیت ، یک سیم باید در نظر گرفته میشد . مثلا اگه 32 بیتی بود 32 تا سیم باید روی مادربورد طراحی می شد تازه جدای خطوط کنترلی که واجب بودن . در انتقال موازی ، 32 تا بیت می تونن به طور همزمان و در یک کلاک پالس عبور کنن . شاید تو نگاه اول خوب باشه اما مشکلاتی هم داره . وقتی جریان از داخل یه سیم عبور میکنه میدان الکترومغناطیسی اطراف اون سیم ایجاد میشه که می تونه روی جریان سیم کناری تاثیر بذاره حالا هرچی سرعت کلاک پالس ( حتما بخونید ) بیشتر باشه این میدان الکترومغناطیسی بیشتر میشه . پس یکی از مشکلات این بود که نمی تونستن بیشتر از یه حدی کلاک پالس رو افزایش بدن . مشکل اصلی تاثیر میدان مغناطیسی روی دیتای سیم های کناری بود .
یه مشکل مهم تر این بود که چجوری این 32 تا سیم رو روی مادربورد پیاده سازی کنن ! خب امکان این نبود که سیم ها از نظر طول یکسان طراحی بشن واسه همین مشکلی به نام Clock Skew به وجود میومد . یعنی چی ؟ یعنی به خاطر تفاوت طول مسیرها ، یه بیت زودتر می رسید به مقصد و یه بیت دیرتر . اون بیتی که زودتر می رسید حق برگشت نداشت تا زمانی که همه بیت ها برسن . اینجوری تاخیر زمانی زیاد میشد .
مشکل دیگه این بود که در انتقال موازی دیتا ، دستگاه ها نمی تونن به طور همزمان دیتا بفرستن و بگیرن ، باید سیگنال رفت بره و به مقصد برسه حالا اگه اون یکی خواست سیگنال برگشت بفرسته می تونه . PCI Express از انتقال سری یا سریال استفاده میکنه . در انتقال سری ما کلا به 4 تا سیم نیاز داریم . دو تا واسه ارسال و دو تا هم واسه دریافت سیگنال . در انتقال سری هر بیت با هر کلاک پالس منتقل میشه ، در این نوع انتقال دیتا ، امکان افزایش سرعت کلاک پالس وجود داره . شاید پیش خودتون بگید سرعت انتقال دیتا در موازی که بیشتره چون در هر کلاک پالس 32 بیت جابجا میشه اما در نوع سری در هر کلاک فقط یک بیت ! خب در نوع سری سرعت کلاک رو بیشتر می کنن . مثلا پهنای باند در PCI حدود 133 مگاهرتز بود اما در نوع سری و کم سرعت ترین نوع PCI Express ، پهنای باند حدود 250 مگابایت در ثانیه هست چون کلاک پالسش 2.5 گیگاهرتزه .
در انتقال سری چون تعداد سیم ها کمه ، هزینه طراحی کمتر میشه و طراحی ساده تر میشه و البته نویز کمتری هم داریم . اما برای رفع مشکل نویز در انتقال سری از تکنیکی به نام Noise Cancellation استفاده میکنن . چجوری ؟ به این شکل که سیگنال های ارسالی رو به صورت زوج می فرستن ، یکی مثبت و یکی منفی اما هم شکل و معادل ، در مقصد این دو سیگنال با هم مقایسه میشن و باید مثل هم باشن ، تفاوت بین این دو سیگنال میشه نویز و به سادگی توسط گیرنده قابل تشخیص میشه و سیگنال اصلی رو جدا میکنه .
PCI Express مخفف عبارت Peripheral Component Interconnect Express به مفهوم اتصال سریع تجهیزات جانبی کامپیوتر هست . PCI Express به صورت مخفف PCIe هم گفته میشه البته در بعضی منابع به اشتباه PCI-E هم میگن اما حالت اختصار رسمی به صورت PCIe هست .
استاندارد PCI Express توسط گروه مهندسی PCI-SIG طراحی شده که اعضای اصلی اون شرکت های اینتل ، اچ پی ، Dell و IBM هستن . این گروه حدود 800 عضو داره که در راستای بهبود و گسترش تکنولوژی PCI Express فعالیت می کنن . PCI Express چهار تا نسخه مختلف داره که در ادامه می گم .
به زبون ساده ، اگه مادربورد کامپیوترتون رو نگاه کنید یه قسمتش یه سری اسلات های بزرگ و کوچیک کنار همن که کارت گرافیک تون هم همونجا نصبه . اون کارت گرافیک از طریق همین تکنولوژی PCI Express به مادربورد در ارتباط هست و اسم اون اسلات هم اسلات PCI Express هست .
PCI Express بر اساس مسیرهایی به نام Lane کار میکنه ، هر lane دو تا مسیر داره ، یکی برای ارسال و یکی هم برای دریافت دیتا . در واقع هر مسیر خودش به 2 تا سیم تقسیم میشه یعنی مسیر ارسال 2 تا سیم و مسیر دریافت هم 2 تا سیم . پس مجموعا هر lane چهار تا سیم داره . این خطوط ارتباطی ( lane ) به صورت تک بیتی و ارسال و دریافت همزمان کار می کنن . هرچی این خطوط بیشتر باشه ، دیتای بیشتری عبور میکنه پس پهنای باند بیشتر میشه . این خطوط رو با حرف x و یه عدد نشون میدن مثلا x8 یعنی 8 تا خط ارتباطی بین دو دستگاه وجود داره . شکل زیر رو ببینید متوجه میشید .
پس سرعت انتقال دیتا در x16 از x8 و سرعت x8 از x4 یا x1 بیشتره .
تکنولوژی PCI Express نسخه یک و دو ( در ادامه میگم ) از شیوه رمزگذاری 8b/10b استفاده می کنن . یعنی چی ؟ ببینید هر 8 بیت میشه 1 بایت ، PCI Express برای انتقال دیتا به ازای هر 8 بیت ، دو تا بیت اضافه میکنه . حالا این یعنی چی و چرا ؟ دیتا ، یه مبدا و یه مقصد داره ، دو تا بیت ، یکی نشانگر مبدا و یکی هم نشانگر مقصد به هر 8 بیت اطلاعات می چسبه و در مجموع میشه 10 بیت . این دو بیت به تنهایی 20 درصد از پهنای باند رو اشغال می کنن . اما در نسخه سوم PCI Express ، از روش کد گذاری 128b/130b استفاده می کنن . یعنی به ازای هر 128 بیت دو بیت بهش می چسبه . پس اینجوری پهنای باند افزایش پیدا می کنه چون اون 2 بیت معرف که بالاتر گفتم ( بهش میگن اور هد Overhead ) پهنای باند رو اشغال می کرد دیگه . حالا به جای اینکه هر 8 بیت 2 بیت اورهد داشته باشیم ، هر 128 بیت داریم . ( 128 بیت تقسیم بر 8 میشه 16 ، حالا 16 ضرب در 2 میشه 32 بیت اورهد ، که در روش کدگذاری 128 بیت می تونست اتفاق بیفته و نمی افته )
حالا که این مسئله رو فهمیدید یه چیزی بگم : چون نسخه یک و دو تکنولوژی PCI Express هر دو از روش رمزگذاری 8b/10b استفاده می کنن ، برای دو برابر کردن پهنای باند از نسهخ یک به دو ، باید سرعت کلاک پالس نسخه دوم ، دو برابر بشه . اما نسخه سوم چون از رمزگذاری 128b/130b استفاده می کنه برای دو برابر شدن پهنای باند لازم نیست کلاک خودش رو دو برابر کنه یعنی 10 گیگاهرتز ، با 8 گیگاهرتز می تونه پهنای باند دوبرابری نسبت به نسخه دوم داشته باشه نسخه چهار PCI Express هم از رمزگذاری 128b/130b استفاده میکنه پس برای دوبرابر کردن پهنای باند نسبت به نسخه سوم ، باید کلاک پالسش رو دوبرابر کنه یعنی 16 گیگاهرتز . جدول زیر رو نگاه کنید .
پس به طور خلاصه PCI Express بر اساس انتقال دیتای سریال که از خطوط مشخصی عبور میکنن کار می کنه و برای مشخص شدن مبدا و مقصد اطلاعات از روش رمزگذاری استفاده میکنه که همین روش رمزگذاری به علاوه کلاک پالس ، پهنای باند نهایی رو تعیین میکنه .
دو تا نکته کنکوری هم بگم : اگه مثلا کارت گرافیک شما PCI Express نسخه 3 باشه اما اونو تو اسلات PCI Express نسخه دو بزنید ، سرعتش محدود میشه به پهنای باند یا سرعت نسخه دوم .
نکته دوم اینکه اسلات PCI با نسخه PCIe فرق میکنه .
به خاطر وجود دستگاه های مختلف و صرفه جویی در هزینه و طراحی مادربوردها و مواد اولیه ، چند مدل اسلات که از نظر فیزیکی با هم فرق می کنن وجود داره . منظورم اینه از لحاظ عملکرد ریشه ای ، تفاوتی ندارن فقط پهنای باند و ظاهر متفاوت دارن . در حال حاضر اسلات های x1 و x2 و x4 و x8 و x16 موجود هستن اما اسلات های x1 و x16 خیلی بیشترن روی مادربوردها . اسلات x16 همون اسلاتی هست که کارت گرافیک تون رو توش جا می زنید .
نکته جالب اینه که شما می تونید یه دستگاه x8 رو توی اسلات x16 جا بزنید و همون عملکرد رو ازش بگیرید اما برعکس صادق نیست چون از نظر سایز ، دستگاه x16 از اسلات x8 بزرگتره .
PCI Express تا سال 2015 چهار تا نسخه مختلف داره . نسخه های PCIe 1 ، PCIe 2 ، PCIe 3 و جدیدا PCIe 4 .
در سال 2003 گروه فنی PCI-SIG نسخه اول PCI Express رو معرفی میکنن به نام دقیق PCIe 1.0a با پهنای باند 250 مگابایت در ثانیه . در سال 2005 یه اصلاحیه روی نسخه PCIe 1.0a میرن و اسمش رو PCIe 1.1 میذارن با همون پهنای باند .
در 15 ژانویه سال 2007 نسخه دوم PCI Express یعنی PCIe 2.0 معرفی شد که دو برابر نسخه اول ، پهنای باند داشت یعنی 500 مگابایت در ثانیه . مادربوردهای مجهز به نسخه دوم ، دستگاه های نسخه اول رو ساپورت میکردن . بعد از مدتی در سال 2009 ، نسخه اصلاح شده یعنی PCIe 2.1 معرفی شد که بعضی از امکانات و ویژگی های نسخه سوم رو داشت اما با همون سرعت نسخه دوم .
در سال 2010 نسخه سوم یعنی PCIe 3.0 معرفی شد که تحول بزرگی در گسترش پهنای باند PCI Express بود . الان روی مادربورد لپ تاپ و یا دسکتاپ شما احتمال خیلی زیاد نسخه سوم PCI Express وجود داره .
در سال 2011 خبر از نسخه 4 شد که انتظار میره در همین آینده نزدیک روی مادربوردها ببینیم . سرعت کلاک نسخه 4 ، دو برابر از نسخه سوم بیشتره اما روش کدگذاریش یکسانه .
PCI در اصل یک باس مشترک بود ، به این شکل که همه دستگاه ها از یه باس استفاده می کردن و پهنای باند بین شون تقسیم میشد . خب مسلما دستگاهی که پهنای باند بیشتری طلب می کرد ، حق بقیه دستگاه ها رو ضایع میکرد اما استاندارد PCI Express باس نیست بلکه یه کانکشن نظیر به نظیر بین دستگاه های جانبی مثل کارت گرافیک و حافظه ها و … هست . به این شکل که هر دستگاه ، مسیر اختصاصی انتقال اطلاعات خودش رو داره و عملکرد یه دستگاه دیگه روی این دستگاه تاثیر نداره . ضمنا PCI به صورت موازی اطلاعات رو جابجا می کرد اما PCI Express به صورت سری و با سرعت بیشتر اطلاعات رو جابجا می کنه . ضمنا بسیاری از تفاوت ها رو در قسمت اولیه پست گفتم .
AGP هم که فقط برای ارتباط کامپیوتر با کارت گرافیک بوجود اومد و هیچ دستگاه دیگه ای بهش وصل نمیشه در صورتی که استاندارد PCI Express برای همه دستگاه ها کاربرد داره .
خب دوستان امیدوارم که مفید بوده باشه .