Кіріспе
Компьютерлік жабдықтағы компьютерлік шиналар арасындағы деректерді тасымалдайтын жүйе. Компьютерлік архитектурада шина (тарихи түрде дерек магистралі деп те аталады). Көбінесе дәстүрлі компьютерлік архитектурада CPU мен негізгі жад тығыз байланыста болады, екеуін байланыстыратын ішкі шина жүйелік шина деп аталады. Кэшке ие жүйелерде CPU-лар жадпен байланыс орнату үшін жадтан жоғары жылдамдықпен жұмыс істейтін жоғары өнімділіктегі жүйелік шиналарды қолданады. Ішкі шина (ішкі деректер шинасы, жад шинасы немесе жүйелік шина деп те аталады) компьютердің ішкі компоненттерін негізгі тақтаға жалғастырады. Жергілікті шиналар процессор мен жадты кеңейту шинасына жалғастырады, ол өз кезегінде компьютерді шеткі құрылғыларға жалғастырады. Қазіргі компьютерлердегі SATA порттары сияқты шина жүйелері бірнеше перифериялық құрылғыларды қолдайды, бұл кеңейту картасысыз бірнеше қатты дискілерді қосуға мүмкіндік береді. Көпкомпьютерлерге ұқсас архитектурасы бар, бірақ желілер орнына шиналар арқылы байланысатын жүйелерде жүйелік шина алдыңғы шина деп аталады. Мұндай жүйелерде кеңейту шинасы хост-CPU-мен архитектураны бөліспеуі мүмкін, оның орнына PCI-де сияқты көптеген әртүрлі CPU-ларды қолдайды. "Перифериялық шина" термині кейде жүйелік шинадан басқа барлық шиналарды атағанда қолданылады, ал "кеңейту шинасы" сонымен қатар перифериялық шинадан бөлек шиналардың үшінші санатын сипаттау үшін қолданылады, оған PCI сияқты шина жүйелері кіреді. Алғашқы компьютерлік шиналар бірнеше аппараттық қосылыстары бар параллель электр сымдары болды, бірақ бұл термин қазір параллель электр шинасы сияқты логикалық функцияларды қамтамасыз ететін кез келген физикалық орналасу үшін қолданылады. Қазіргі заманғы компьютерлік шиналар қатар және біттік қатарлы қосылымдарды пайдалана алады және оларды мульти-топ (электрлік қатар) немесе маргаритка тізбегі топологиясында немесе коммутацияланған хабтар арқылы қосуға болады. Көптеген заманауи CPU-ларда жадпен байланысуға ұқсас, бірақ шеткі құрылғылар жалпы жүйенің жұмысын баяулатпауын қамтамасыз ету үшін әртүрлі жылдамдықтар мен протоколдармен жұмыс істей алатын екінші тізбегі бар. CPU-да ақылды контроллерлер де бар, олар деректерді тікелей жадқа орналастырады, бұл тікелей жадқа қол жеткізу деп аталады. Сондай-ақ, төмен өнімділіктегі шина жүйелері, мысалы, Universal Serial Bus (USB) әзірленді. Технологиялық өзгерістерді ескере отырып, "жүйе", "кеңейту" және "перифериялық" классикалық терминдерінің бірдей мағынасы жоқ. Басқа кең таралған жіктеу жүйелері шинаның негізгі рөліне негізделген, құрылғыларды ішкі немесе сыртқы байланыстыру. Алайда, көптеген кәдімгі заманауи шина жүйелерін екеуіне де қолдануға болады. SATA және оған байланысты eSATA - бұл бұрын ішкі ретінде сипатталатын жүйенің бір мысалы, ал кейбір автомобильдік қосымшалар негізінен сыртқы IEEE 1394-ті жүйелік шинаға ұқсас түрде пайдаланады. InfiniBand және I²C сияқты басқа мысалдар бастапқыда ішкі және сыртқы пайдалану үшін жасалған.
buses in computer hardware
In computer architecture, a bus (historically also called data highway
In most traditional computer architectures, the CPU and main memory tend to be tightly coupled, with the internal bus connecting the two being known as the system bus. In systems that include a cache, CPUs use high performance system buses that operate at speeds greater than memory to communicate with memory. The internal bus (also known as the internal data bus, memory bus or system bus) connects internal components of a computer to the mother board. Local buses connect the CPU and memory to the expansion bus, which in turn connects the computer to peripherals. Bus systems such as the SATA ports in modern computers support multiple peripherals, allowing multiple hard drives to be connected without an expansion card. In systems that have a similar architecture to multicomputers, but which communicate by buses instead of networks, the system bus is known as a front side bus. In such systems, the expansion bus may not share any architecture with their host CPUs, instead supporting many different CPUs, as is the case with PCI. While the term "peripheral bus" is sometimes used to refer to all other buses apart from the system bus, the "expansion bus" has also been used to describe a third category of buses separate from the peripheral bus, which includes bus systems like PCI. Early computer buses were parallel electrical wires with multiple hardware connections, but the term is now used for any physical arrangement that provides the same logical function as a parallel electrical busbar. Modern computer buses can use both parallel and bit serial connections, and can be wired in either a multidrop (electrical parallel) or daisy chain topology, or connected by switched hubs. Many modern CPUs also feature a second set of pins similar to those for communicating with memory—but able to operate with different speeds and protocols—to ensure that peripherals do not slow overall system performance. CPUs can also feature smart controllers to place the data directly in memory, a concept known as direct memory access. Low performance bus systems have also been developed, such as the Universal Serial Bus (USB). Given technological changes, the classical terms "system", "expansion" and "peripheral" no longer have the same connotations. Other common categorization systems are based on the bus's primary role, connecting devices internally or externally. However, many common modern bus systems can be used for both. SATA and the associated eSATA are one example of a system that would formerly be described as internal, while certain automotive applications use the primarily external IEEE 1394 in a fashion more similar to a system bus. Other examples, like InfiniBand and I²C were designed from the start to be used both internally and externally.
Адрестік шина
Адрес шинасы – физикалық мекенжайды көрсету үшін қолданылатын шина. Процессор немесе 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) – бұл жоғары жылдамдықты процессор мен құрылғыны, сондай-ақ процессор мен жадты байланыстыруға арналған ашық стандартты интерфейс, ол келесі буынның деректер орталығының өнімділігін арттыруға бағытталған.