Кіріспе

Компьютерлік жабдықтағы компьютерлік шиналар арасындағы деректерді тасымалдайтын жүйе. Компьютерлік архитектурада шина (тарихи түрде дерек магистралі деп те аталады). Көбінесе дәстүрлі компьютерлік архитектурада CPU мен негізгі жад тығыз байланыста болады, екеуін байланыстыратын ішкі шина жүйелік шина деп аталады. Кэшке ие жүйелерде CPU-лар жадпен байланыс орнату үшін жадтан жоғары жылдамдықпен жұмыс істейтін жоғары өнімділіктегі жүйелік шиналарды қолданады. Ішкі шина (ішкі деректер шинасы, жад шинасы немесе жүйелік шина деп те аталады) компьютердің ішкі компоненттерін негізгі тақтаға жалғастырады. Жергілікті шиналар процессор мен жадты кеңейту шинасына жалғастырады, ол өз кезегінде компьютерді шеткі құрылғыларға жалғастырады. Қазіргі компьютерлердегі SATA порттары сияқты шина жүйелері бірнеше перифериялық құрылғыларды қолдайды, бұл кеңейту картасысыз бірнеше қатты дискілерді қосуға мүмкіндік береді. Көпкомпьютерлерге ұқсас архитектурасы бар, бірақ желілер орнына шиналар арқылы байланысатын жүйелерде жүйелік шина алдыңғы шина деп аталады. Мұндай жүйелерде кеңейту шинасы хост-CPU-мен архитектураны бөліспеуі мүмкін, оның орнына PCI-де сияқты көптеген әртүрлі CPU-ларды қолдайды. "Перифериялық шина" термині кейде жүйелік шинадан басқа барлық шиналарды атағанда қолданылады, ал "кеңейту шинасы" сонымен қатар перифериялық шинадан бөлек шиналардың үшінші санатын сипаттау үшін қолданылады, оған PCI сияқты шина жүйелері кіреді. Алғашқы компьютерлік шиналар бірнеше аппараттық қосылыстары бар параллель электр сымдары болды, бірақ бұл термин қазір параллель электр шинасы сияқты логикалық функцияларды қамтамасыз ететін кез келген физикалық орналасу үшін қолданылады. Қазіргі заманғы компьютерлік шиналар қатар және біттік қатарлы қосылымдарды пайдалана алады және оларды мульти-топ (электрлік қатар) немесе маргаритка тізбегі топологиясында немесе коммутацияланған хабтар арқылы қосуға болады. Көптеген заманауи CPU-ларда жадпен байланысуға ұқсас, бірақ шеткі құрылғылар жалпы жүйенің жұмысын баяулатпауын қамтамасыз ету үшін әртүрлі жылдамдықтар мен протоколдармен жұмыс істей алатын екінші тізбегі бар. CPU-да ақылды контроллерлер де бар, олар деректерді тікелей жадқа орналастырады, бұл тікелей жадқа қол жеткізу деп аталады. Сондай-ақ, төмен өнімділіктегі шина жүйелері, мысалы, Universal Serial Bus (USB) әзірленді. Технологиялық өзгерістерді ескере отырып, "жүйе", "кеңейту" және "перифериялық" классикалық терминдерінің бірдей мағынасы жоқ. Басқа кең таралған жіктеу жүйелері шинаның негізгі рөліне негізделген, құрылғыларды ішкі немесе сыртқы байланыстыру. Алайда, көптеген кәдімгі заманауи шина жүйелерін екеуіне де қолдануға болады. SATA және оған байланысты eSATA - бұл бұрын ішкі ретінде сипатталатын жүйенің бір мысалы, ал кейбір автомобильдік қосымшалар негізінен сыртқы IEEE 1394-ті жүйелік шинаға ұқсас түрде пайдаланады. InfiniBand және I²C сияқты басқа мысалдар бастапқыда ішкі және сыртқы пайдалану үшін жасалған.

Адрестік шина

Адрес шинасы – физикалық мекенжайды көрсету үшін қолданылатын шина. Процессор немесе DMA мүмкіндігі бар құрылғы жадтың қандай да бір орнынан мәлімет оқу немесе жазу қажет болғанда, ол жад орнын адрес шинасы арқылы көрсетеді (оқылатын немесе жазылатын мән дерек шинасымен жіберіледі). Адрес шинасының ені жүйе қанша жадты адрестей алатынын анықтайды. Мысалы, 32 биттік адрес шинасы бар жүйе 232 (4,294,967,296) жад орнын адрестей алады. Егер әр жад орны бір байтты сақтаса, адрестелетін жад кеңістігі 4 ГБ құрайды.

Адресті мультиплекстеу

Алғашқы процессорлар адрестік енінің әр биті үшін бір сым қолданды. Мысалы, 16 биттік адрестік шинада шинаны құрайтын 16 физикалық сым болды. Шиналар кеңейіп, ұзара түскен сайын, бұл тәсіл чип қосылымдары мен плата жолдарының саны тұрғысынан қымбатқа түсті. Mostek 4096 DRAM-нан бастап, мультиплексорлармен іске асырылған адрестік мультиплекстеу кеңінен таралды. Мултиплекстелген адрестік схемада, адрес екі тең бөлікке бөлініп, кезекті автобус циклдарында жіберіледі. Бұл жадқа қосылу үшін қажетті адрестік шина сигналдарының санын екі есеге азайтады. Мысалы, 32 биттік адрестік шина 16 желіні пайдалану арқылы іске асырылуы мүмкін, ал жад адресінің бірінші жартысы дереу екінші жартысымен жіберіледі. Әдетте, басқару шинасындағы екі қосымша сигнал – жол адресі импульсы (RAS) және баған адресі импульсы (CAS) DRAM-ға адрестік шина қазіргі уақытта жад адресінің бірінші немесе екінші жартысын жіберіп жатыр ма екенін хабарлау үшін қолданылады.

Іске асыру

Жеке байтқа жиі қол жеткізу үшін бірден толық шина енімен (сөз) жазу немесе оқу қажет болуы мүмкін. Мұндай жағдайларда, адрестік шинаның ең кіші маңызды биттері тіпті іске асырылмауы мүмкін, оның орнына, толық жіберілген сөзден қажетті жеке байтты бөліп алу жауапкершілігі басқару құрылғысына жүктеледі. Мысалы, VESA Local Bus екі ең кіші маңызды битін жоқтайды, бұл шинаны 32 биттік мәліметтерді ғана тасымалдаумен шектейді. Тарихи тұрғыдан алғанда, тек сөздерді ғана адрестей алатын, "сөз машиналарын" да кездестіруге болады.

Жад шинасы

Жад шинасы – компьютерлік жүйелерде негізгі жадты жад контроллерімен байланыстыратын шина. Алғашқыда VMEbus және S 100 шинасы сияқты көп мақсатты шиналар қолданылды, бірақ жадқа қол жеткізу уақытын қысқарту үшін, қазіргі заманғы жад шиналары тікелей DRAM чиптеріне қосылу үшін жасалған, сондықтан олар JEDEC сияқты чип стандарттарын әзірлейтін ұйымдармен құрылған. Мысалдарға SDRAM-ның әртүрлі буындары және SLDRAM және RDRAM сияқты тізбекті, бір-бір байланыс шиналары жатады. Бірақ, толық буферленген DIMM, әсерін азайтуға бағытталған мұқият жобаланғандығына қарамастан, жоғары жадқа қол жеткізу уақыты үшін сынға ұшыраған.

Жүзеге асырудың егжей-тегжейлі сипаттамасы

Автобустар параллель автобустар немесе тізбекті автобустар болуы мүмкін, мұнда параллель автобустар бірнеше сым арқылы деректерді параллель түрде тасымалдайды, ал тізбекті автобустар деректерді біттер тізбегі түрінде тасымалдайды. Қосымша қуат және басқару қосылымдары, дифференциалдық драйверлер және әр бағыттағы деректер қосылымдарының болуы әдетте көптеген тізбекті шиналарда 1 сым мен UNI/O-да қолданылатын ең аз өткізгіш санынан көп өткізгіштер бар екенін білдіреді. Деректер жылдамдығы артқан сайын, уақыттың қабысуы, қуат тұтыну, электромагниттік кедергі және параллель автобустардағы өзара әсерлесу проблемаларын шешу қиынға соғады. Бұл мәселені шешудің бір жолы – автобусты екі есе жылдам ету. Көбінесе, тізбекті шина паралель шинаға қарағанда жоғары жалпы деректер жылдамдығымен жұмыс істей алады, өйткені тізбекті шинаның өзінде уақыттың қабысуы немесе өзара әсерлесуі болмайды. USB, FireWire және Serial ATA осыған мысалдар. Жылдам тізбекті шиналар үшін көптік қосылыстар жақсы жұмыс істемейді, сондықтан қазіргі заманғы тізбекті шиналардың көпшілігі тізбекті немесе хабтық құрылымды қолданады. Ethernet сияқты желілік қосылыстар әдетте автобус ретінде қарастырылмайды, бірақ бұл айырмашылық көбінесе тұжырымдамалық, практикалық емес. Автобустың сипаттамасы үшін қуатты автобус қосылған құрылғыларға жеткізіп беруі жиі қолданылады. Бұл автобустың архитектурасының қуатты коммутациялық немесе таратылған түрде беруден бастау алатындығын көрсетеді. Бұл, өз кезегінде, жеке қуат көзі қажет болатын тізбекті RS 232, параллель Centronics, IEEE 1284 интерфейстері және Ethernet сияқты схемаларды автобус ретінде қарастырудан шығарады. Универсалды тізбекті шина құрылғылары автобуспен берілетін қуатты пайдалана алады, бірақ көбінесе жеке қуат көзін пайдаланады. Бұл айырмашылықты телефон жүйесіндегі қосылған модем мысалы көрсетеді, онда RJ11 қосылымы және оған байланысты модуляцияланған сигнал схемасы автобус ретінде қарастырылмайды және ол Ethernet қосылысына ұқсас. Телефон желісін қосу схемасы сигналдар тұрғысынан автобус болып саналмайды, бірақ Орталық кеңсе телефондар арасындағы қосылымдар үшін қиылысқан бағаналы коммутаторлармен автобустарды пайдаланады. Дегенмен, қуатты автобуспен жеткізу екендігі туралы бұл айырмашылық көптеген авиациялық жүйелерде орын алмайды, онда ARINC 429, ARINC 629, MIL STD 1553B (STANAG 3838) және EFABus (STANAG 3910) сияқты деректер қосылыстары жиі «деректер шиналары» немесе кейде «деректер шиналары» деп аталады. Мұндай авиациялық деректер шиналары әдетте бірнеше құрылғылар немесе желілік ауыстырылатын элементтер/бірліктер (LRI/LRU) ортақ ортаға қосылғандығымен сипатталады. Олар, ARINC 429 сияқты, бір бағытты (симплекс) болуы мүмкін, яғни бір ғана LRI/LRU көзі бар, немесе ARINC 629, MIL STD 1553B және STANAG 3910 сияқты екі бағытты (дуплекс) болуы мүмкін, бұл барлық қосылған LRI/LRU әр түрлі уақытта (жартылай дуплекс) деректерді жіберуші және қабылдаушы ретінде әрекет етуге мүмкіндік береді.

Автобус мультиплексі

Ең қарапайым жүйелік шинада толыққанды бөлек кіріс деректері, шығыс деректері және адрес желілері болады. Құныны азайту үшін көптеген микрокомпьютерлер екі бағытты деректер шинасын қолданады, кіріс және шығыс үшін әртүрлі уақытта бірдей сымдарды пайдаланады. Кейбір процессорлар адрес, дерек және басқару шиналарының әрқайсысы үшін арнайы сымдарды қолданады. Мысалы, 64 контактілі STEbus 8 биттік дерек шинасы үшін 8 физикалық сымнан, 20 биттік адрес шинасы үшін 20 физикалық сымнан, басқару шинасы үшін 21 физикалық сымнан және әртүрлі қуат шиналары үшін 15 физикалық сымнан тұрады. Шинаны мультиплекстеуге аз сымдар қажет, бұл көптеген алғашқы микропроцессорлар мен DRAM чиптеріндегі құнды азайтады. Бір таралған мультиплекстеу схемасы, адрес мультиплекстеуі, бұрын айтылған. Тағы бір мультиплекстеу схемасы адрес шинасының контактілерін дерек шинасының контактілері ретінде қайта пайдаланады, олар электр қуаты шиналары немесе шина тақталары деп аталды. Көбінесе, жад үшін бір шина, ал шеткі құрылғылар үшін біреу немесе бірнеше бөлек шина болды. Оларға арнайы командалар арқылы қол жеткізілді, мүлдем басқа уақыт пен протоколдармен. Алғашқы қиындықтардың бірі үзілістерді пайдалану болды. Алғашқы компьютерлік бағдарламалар шеткі құрылғылар дайын күйге келгенше күтіп, кіріс-шығыс операцияларын орындады. Бұл басқа тапсырмалары бар бағдарламалар үшін уақытты ысырап ету болды. Сонымен қатар, егер бағдарлама басқа тапсырмаларды орындауға тырысса, қайта тексеруге тым көп уақыт кетіп, деректердің жоғалуына әкелуі мүмкін. Сондықтан инженерлер шеткі құрылғыларды процессорды үзіліске шақыруға мүмкіндік берді. Үзілістерге басымдық қою қажет болды, өйткені процессор бір уақытта бір ғана шеткі құрылғының кодын орындай алады және кейбір құрылғылар басқаларына қарағанда уақытқа сезімтал. Жоғары деңгейдегі жүйелер арна контроллерлерін енгізді, олар белгілі бір шинаның кіріс және шығысын басқаруға арналған шағын компьютерлер болды. IBM оларды 1958 жылы IBM 709 машинасымен бірге енгізді және олар өз платформаларының қалыпты ерекшелігіне айналды. Control Data Corporation сияқты басқа да жоғары өнімділікпен жұмыс істейтін компаниялар да ұқсас дизайнды енгізді. Әдетте, арна контроллерлері барлық шина операцияларын ішкі түрде орындауға тырысады, мүмкін болса, процессор басқа жұмыстармен айналысқан кезде деректерді жылжытады және қажет болған жағдайда ғана үзілістерді пайдаланады. Бұл процессорға жүктемені едәуір азайтып, жүйелік өнімділікті жақсартты. Модульділікті қамтамасыз ету үшін жад пен кіріс-шығыс шиналарын біріктірілген жүйелік шинаға біріктіруге болады. Бұл жағдайда жүйе компоненттерінің көп бөлігін немесе кейбір жағдайларда барлығын қосу үшін бір механикалық және электрлік жүйе қолданылуы мүмкін. Кейінірек компьютерлік бағдарламалар бірнеше процессорға ортақ жадты пайдалана бастады. Осы жад шинасына қол жеткізуге де басымдық қою қажет болды. Үзілістерге немесе шинаға қол жеткізуге басымдық қоюдың қарапайым жолы – тізбектей жалғау. Бұл жағдайда сигналдар физикалық немесе логикалық ретпен шина арқылы табиғи түрде ағып өтеді, күрделі жоспарлау қажеттілігін жояды.

Мини және микро

Digital Equipment Corporation (DEC) бұқаралық өндірістегі шағын компьютерлердің құнын одан әрі төмендетіп, перифериялық құрылғыларды жад шинасына енгізді, соның нәтижесінде кіріс-шығыс құрылғылары жад жайлары болып көрінді. Бұл 1969 жыл шамасында PDP 11 Unibus жүйесінде жүзеге асырылды. Алғашқы микрокомпьютер шина жүйелері негізінен пассивті артқы панельдер болып табылды, олар тікелей немесе буферлік күшейткіштер арқылы процессордың (CPU) қосылымдарына жалғанылған. Жад және басқа құрылғылар CPU-ның өзі қолданатын бірдей адрес және дерек желілерін пайдаланып, шинаға параллель түрде қосылды. Байланыс процессормен басқарылды, ол құрылғылардан деректерді жадтың бөліктері сияқты оқып, жазып, бірдей командаларды қолданды, барлығы процессордың жылдамдығын басқаратын орталық сағатпен синхрондалды. Дегенмен, құрылғылар процессорды жеке процессор қосылымдарына сигнал жіберу арқылы тоқтатты. Мысалы, дискілік жетек контроллері процессорға жаңа деректерді оқуға дайын екенін хабарлағанда, процессор дискілік жетекке сәйкес келетін "жад жайын" оқып деректерді жылжытатын. Бұл тәсілмен жасалған алғашқы микрокомпьютерлердің көп бөлігі, Altair 8800 компьютер жүйесіндегі S 100 шинасынан бастап, осылай құрылды. Кейбір жағдайларда, әсіресе IBM PC-де, ұқсас физикалық архитектура қолданылса да, перифериялық құрылғыларға (ішке және сыртқа) және жадқа (mov және басқалары) қол жеткізу командалары біркелкі болмады және әлі де жеке процессор сигналдарын тудырады, оларды жеке I/O шинасын іске асыру үшін пайдалануға болады. Бұл қарапайым шина жүйелері жалпы мақсаттағы компьютерлерде қолданылғанда маңызды кемшілікке ие болды. Шинадағы барлық жабдық бірдей жылдамдықпен жұмыс істеуі керек болды, себебі олар бір ғана сағатты бөлісті. Процессордың жылдамдығын арттыру қиынға соқты, өйткені барлық құрылғылардың жылдамдығы да бірге өсуі керек еді. Егер барлық құрылғылар процессордың жылдамдығымен жұмыс істеуі мүмкін болмаса немесе экономикалық тұрғыдан тиімді болмаса, процессор күту күйіне өтуі керек немесе компьютердегі басқа құрылғылармен байланыс үшін уақытша төмен сағат жиілігінде жұмыс істеуі керек еді. Бұл кіріктірілген жүйелерде қабылдануға болатын болса да, жалпы мақсаттағы, пайдаланушы кеңейте алатын компьютерлерде ұзаққа соқпады. Мұндай шина жүйелерін, әсіресе стандартты жабдықтан құрастырғанда конфигурациялау да қиын. Әдетте, әрбір қосылған кеңейту картасын жад адрестерін, I/O адрестерін, үзіліс басымдықтарын және үзіліс нөмірлерін орнату үшін көптеген джемперлерді орнату қажет болды.

Екінші буын

NuBus сияқты "екінші буын" автобус жүйелері осы мәселелердің кейбірін шешті. Олар әдетте компьютерді екі "әлемге" бөліп, бір жағында процессор (CPU) және жад, ал екінші жағында әртүрлі құрылғылар орналастырылған. Автобус контроллері процессордан деректерді қабылдап, оларды перифериялық құрылғыларға жіберуге мүмкіндік берді, соның арқасында байланыс протоколының күші процессордан алынды. Бұл процессор мен жадты құрылғы шинасынан немесе жай ғана "шинадан" тәуелсіз дамытуға жағдай жасады. Шинадағы құрылғылар процессордың араласуынсыз бір-бірімен байланыса алады. Бұл "шынайы өмірде" жақсы өнімділікке әкелді, бірақ құрылғылардың (карталардың) өте күрделі болуын қажет етті. Бұл шиналар деректерді жіберу арнасының көлемі арқылы жылдамдық мәселелерін де шешті, яғни бірінші буындағы 8 биттік параллель шиналардан екінші буында 16 немесе 32 битке дейін көтерілді, сондай-ақ, джемперлерді алмастыру немесе толықтыру үшін бағдарламалық қамтамасыздандыру (қазір Plug n play стандарты ретінде белгілі) қосылды. Дегенмен, бұл жаңа жүйелердің бұрынғы нұсқаларымен ортақ бір қасиеті болды – шинадағы барлық құрылғылар бірдей жылдамдықпен байланысуы керек еді. Процессор енді оқшауланғандықтан және жылдамдығын арттыра алғанымен, процессор мен жад олармен байланысатын шиналардан әлдеқайда жылдам дами берді. Соның салдарынан шинаның жылдамдығы қазіргі заманғы жүйелерге қажетті деңгейден төмен болды, ал машиналар деректерге зәру қалды. Бұл мәселенің кең таралған мысалы – бейнекарталар тіпті PCI сияқты жаңа шина жүйелерінен де жылдам болды, сондықтан компьютерлер бейнекартаны басқару үшін AGP-ті қолдана бастады. 2004 жылға қарай AGP жоғары деңгейдегі бейнекарталар мен басқа да перифериялық құрылғылармен салыстырғанда артта қалды және жаңа PCI Express шинасымен алмастырылды. Көптеген сыртқы құрылғылар өздерінің шина жүйелерін де қолдана бастады. Қатты дискілер алғаш пайда болғанда, олар шинаға қосылған карта арқылы машинаға қосылатын, сондықтан компьютерлерде шинада көптеген слоттар болды. Бірақ 1980 және 1990 жылдары SCSI және IDE сияқты жаңа жүйелер осы қажеттілікті қанағаттандыру үшін енгізілді, нәтижесінде қазіргі заманғы жүйелердегі көптеген слоттар бос қалды. Бүгінде әртүрлі құрылғыларды қолдау үшін әдеттегі машинада шамамен бес түрлі шина болуы мүмкін.

Үшінші буын

"Үшінші буын" автобустары 2001 жылдан бері нарыққа еніп келеді, оның ішінде HyperTransport және InfiniBand та бар. Олар физикалық қосылымдар жағынан да өте икемді, оларды ішкі автобустар ретінде де, түрлі машиналарды байланыстыру үшін де қолдануға болады. Бұл әртүрлі талаптарды өтеу кезінде күрделі мәселелер тудыруы мүмкін, сондықтан осы жүйелердегі жұмыстың басым бөлігі аппараттық құралдарға емес, бағдарламалық жасақтаманы жобалауға қатысты. Жалпы, бұл үшінші буын автобустары бастапқы автобус тұжырымына қарағанда желіге ұқсайды, ал ерте жүйелерге қарағанда жоғары деңгейде протоколдық жүктеме қажет, сонымен қатар бірнеше құрылғыға бір уақытта автобустан пайдалануға мүмкіндік береді. Wishbone сияқты автобустар компьютерлік дизайннан заңдық және патенттік шектеулерді толығымен жою мақсатымен ашық кодты аппараттық қозғалыс тарапынан әзірленді. Compute Express Link (CXL) – бұл жоғары жылдамдықты процессор мен құрылғыны, сондай-ақ процессор мен жадты байланыстыруға арналған ашық стандартты интерфейс, ол келесі буынның деректер орталығының өнімділігін арттыруға бағытталған.