RapidIO este o interfață de date de înaltă performanță pentru conectarea cipurilor într-o singură placă de circuit imprimat, precum și pentru interconectarea mai multor plăci de circuite imprimate. Această interfață a fost concepută pentru a fi utilizată în sistemele încorporate .
Principalii concurenți ai RapidIO sunt HyperTransport , Infiniband și PCI Express , care, totuși, sunt concepute pentru alte scopuri.
Interfața RapidIO a fost dezvoltată de Mercury Computer Systems și Motorola acum Freescale Semiconductor ) ca o evoluție a magistralei utilizate în sistemele de procesare a semnalului digital multiprocesor Mercury .
Specificațiile de interfață RapidIO au fost dezvoltate de Asociația Comercială RapidIO [1] . În acest moment, cea mai recentă versiune a specificației este 4.
Protocolul a fost dezvoltat inițial de Mercury Computer Systems și Motorola ( Freescale ) ca înlocuitor pentru magistrala RACEway proprie a lui Mercury și magistrala PowerPC a lui Freescale [2] . RapidIO Trade Assosiation a fost fondată în februarie 2000 și include producători de echipamente de telecomunicații și stocare, precum și producători de procesoare și switch-uri. Protocolul a fost elaborat pentru a îndeplini următoarele obiective:
Specificația RapidIO, versiunea 1.1, lansată în 2001, a definit o magistrală paralelă cu lățime de bandă mare. Această specificație nu a câștigat o utilizare comercială largă.
Revizia 1.2 a specificației RapidIO, lansată în 2002 [3] , a definit o magistrală serială pentru conexiunile interne bazate pe stratul fizic XAUI . Dispozitivele bazate pe această specificație au obținut un succes comercial semnificativ în domeniul dispozitivelor de rețea fără fir [4] , al tehnologiilor de procesare a imaginilor și al calculului militar [5] .
Specificația RapidIO versiunea 2.0 lansată în 2008 [6] a adăugat noi lățimi de porturi (2x, 8x și 16x) și a crescut viteza maximă a unei singure linii la 6,25 Gbaud / 5 Gbps. Revizia 2.1 a replicat și extins succesul comercial al specificației 1.2 [7] .
Revizia 3.0 a specificațiilor RapidIO, lansată în 2013 [8] , a adus următoarele modificări și îmbunătățiri față de specificațiile 2.x:
Revizia 4.0 a specificațiilor RapidIO a fost lansată în 2016 [9] . A făcut următoarele modificări și îmbunătățiri de la specificațiile 3.x:
partener de canal
Unul dintre capetele canalului RapidIO. nodul final Un dispozitiv capabil să pornească sau să primească (încheie) transmisia de pachete. element de prelucrare Un dispozitiv care are cel puțin un port RapidIO. Intrerupator Un dispozitiv capabil să distribuie pachete RapidIO.Specificațiile RapidIO definesc straturile fizice (corespunzător stratului fizic și de legătură al modelului OSI), transport (corespunzător stratului de rețea al modelului OSI) și logic (corespunzător stratului de transport al modelului OSI).
Există două specificații ale stratului fizic:
Protocolul RapidIO este definit de o specificație cu trei straturi:
Specificațiile sistemului includ:
Specificația electrică RapidIO se bazează pe standardele industriale Ethernet și standardele Optical Interconnect Forum :
Stratul PCS/PMA RapidIO acceptă două forme de codare/încadrare:
Fiecare element RapidIO care participă trimite și primește trei tipuri de date: rafale, caractere de control și o secvență inactivă.
PacheteFiecare pachet conține două valori care controlează schimbul acestui pachet la nivel fizic. Primul dintre acestea este ID-ul de confirmare (ackID), un număr unic de 5, 6 sau 12 biți în cadrul canalului, care este folosit pentru a ține evidența pachetelor transmise pe canal. Pachetele sunt transmise cu valori ackID crescânde succesiv. Deoarece ackID depinde de canal, nu este stocat în suma de control, ci la nivel de protocol. Acest lucru permite ackID-ului să se schimbe cu fiecare canal prin care trece un pachet, în timp ce suma de control a pachetului rămâne constantă de la un capăt la altul și servește la verificarea integrității pachetului. Când un pachet este primit cu succes, acesta este confirmat conform ackID. Transmițătorul trebuie să stocheze pachetul până când primirea cu succes a fost confirmată la celălalt capăt.
A doua valoare este prioritatea fizică a pachetului. Prioritatea fizică constă din bitul de identificare a circuitului virtual (VC), biții de prioritate și bitul Request Flow Critical (CRF). Bitul VC determină dacă biții rămași sunt utilizați pentru a numerota canalul virtual de la 1 la 8 sau pentru a determina prioritatea în cadrul canalului virtual nul. Circuitelor virtuale li se atribuie lățimi de bandă minime garantate. În circuitul virtual 0, pachetele cu prioritate înaltă pot fi trimise înaintea pachetelor cu prioritate scăzută. Pachetele de răspuns trebuie să aibă o prioritate fizică mai mare decât pachetele de solicitare pentru a evita blocajul.
Stratul fizic RapidIO adaugă un antet de doi octeți la pachete la începutul fiecărui pachet, inclusiv ackID și prioritatea fizică, precum și o sumă de control de doi octeți la sfârșit, pentru a verifica integritatea pachetului. Pachetele mai mari de 80 de octeți au, de asemenea, o sumă de control intermediară după primii 80 de octeți. Cu o singură excepție, suma de verificare a pachetului servește la verificarea integrității pachetului la capetele conexiunii.
Caractere de controlCaracterele de control RapidIO pot fi trimise oricând, chiar și în cadrul unui pachet. Acest lucru permite RapidIO să aibă cea mai mică latență de control posibilă și să atingă un randament ridicat cu buffer-uri mai mici decât alte protocoale.
Caracterele de control sunt folosite pentru a separa pachetele unul de celălalt (Start of Packet, End of Packet, Stomp), confirmarea primirii pachetelor (Packet Acknowledge, Packet Not Acknowledged), resetarea (Reset Device, Reset Port) și pentru a propaga evenimente în RapidIO sistem (Simbol de control al evenimentelor multicast). Caracterele de control sunt, de asemenea, folosite pentru controlul fluxului (Reîncercare, Stare tampon, Contrapresiune cozii de ieșire virtuală) și recuperarea erorilor.
Procedura de recuperare a erorilor este foarte rapidă. De îndată ce receptorul observă o eroare de transmisie în fluxul de date primit, determină transmițătorul asociat să trimită un caracter de control Pachet neacceptat. De îndată ce un caracter de control Pachet neacceptat este primit la celălalt capăt, transmisia de pachete noi este oprită și este trimis un caracter de control Solicitare legături/Stare port. AckID care va fi folosit la următoarea transmisie este indicat de caracterul de control Link Response. Transmisia se reia apoi.
Secvență inactivăSecvența inactiv este utilizată în timpul inițializării legăturii pentru a optimiza calitatea semnalului. De asemenea, este transmis atunci când nu sunt trimise alte pachete sau caractere de control.
Fiecare nod final din RapidIO este identificat printr-un ID unic de dispozitiv (deviceID). Fiecare pachet RapidIO conține două ID-uri de dispozitiv. Primul dintre acestea este identificatorul de destinație (destID), care indică unde trebuie trimis pachetul. Al doilea este identificatorul de origine (srcID), care indică de unde provine pachetul. Când un nod final primește un pachet RapidIO cu o solicitare care necesită un răspuns, pachetul de răspuns este compus prin schimbarea srcID și destID.
Switch-urile RapidIO folosesc destID-ul pachetelor primite pentru a determina portul sau porturile de ieșire care ar trebui folosite pentru a redirecționa pachetul. De obicei, destID este folosit ca index pentru o serie de valori de control. Operația de indexare este rapidă și cu costuri reduse. Comutatoarele RapidIO pentru tabelul de rutare acceptă un model de programare standard, care simplifică gestionarea sistemului.
Stratul de transport RapidIO acceptă orice topologie de rețea, de la arbori simpli și rețele de plasă, la hipercuburi n-dimensionale, toroidi multidimensionali și structuri mai puțin cunoscute, cum ar fi rețelele de plasă.
Stratul de transport RapidIO permite utilizarea virtualizării (de exemplu, un nod final RapidIO poate suporta ID-uri multiple de dispozitiv). Părți din identificatorul de destinație al fiecărui pachet pot fi utilizate pentru a identifica anumite dispozitive virtuale din nod.
Stratul logic RapidIO constă din mai multe specificații, fiecare dintre acestea oferind formate de pachete și protocoale pentru transferuri cu semantică diferită.
I/O logicStratul logic I/O definește formate de pachete pentru citire, scriere, scriere cu un răspuns și diferite operații atomice. Exemple de operații atomice sunt setate, ștergeți, creșteți, descreșteți, schimbați, verificați și schimbați și comparați și schimbați.
Trecerea mesajuluiSpecificația de transmitere a mesajelor definește Soneriile și Mesajele. Soneriile transmit un cod de eveniment pe 16 biți. Mesajele transportă până la 4 kiloocteți de date împărțite în 16 pachete, fiecare dintre acestea putând transporta maximum 256 de octeți. Pachetele de răspuns trebuie trimise pentru fiecare cerere de sonerie sau mesaj. Valoarea de stare din pachetul de răspuns înseamnă rulare, eroare sau reîncercare. Starea răspunsului „reîncercați” cere expeditorului cererii să trimită din nou pachetul. Răspunsul de „reîncercare” la nivel logic permite multor expeditori să acceseze un număr mic de receptoare partajate, rezultând un debit mare la putere redusă.
Controlul fluxuluiSpecificația Flow Control definește formate de pachete și protocoale pentru operațiuni simple de control al fluxului gata/ocupat. Pachetele de control al fluxului pot proveni de la capetele unei conexiuni și de la comutatoare . Primirea unui pachet de control al fluxului „ocupat” oprește transmiterea fluxului sau fluxurilor până când este primit un pachet de control al fluxului „gata” sau apare un timeout . Pachetele de control al fluxului pot fi, de asemenea, utilizate ca mecanism general de gestionare a resurselor sistemului.
CC-NUMASpecificația Global Shared Memory definește formatele de pachete și protocoalele pentru gestionarea cache-ului de memorie partajată legată în rețeaua RapidIO.
Date în fluxSpecificația de transmitere a datelor în flux acceptă transmiterea de mesaje cu formate de pachete și semantică, altele decât specificația de transmitere a mesajelor. Formatul Streaming Packet acceptă transferul a până la 64 de kiloocteți de date împărțite în mai multe pachete. Fiecare transfer este asociat cu o clasă de serviciu și un ID de flux, permițând mii de fluxuri unice între nodurile finale.
Specificația de flux de date definește, de asemenea, formatele de pachete și semantica pentru controlul fluxului de antet extins pentru a controla performanța într-un sistem client/server. Fiecare client folosește pachete de control al fluxului cu un antet extins pentru a informa serverul despre cantitatea de muncă care va fi trimisă către server. Serverul răspunde cu pachete de control al fluxului cu anteturi extinse care utilizează protocoale bazate pe disponibilitate/ocupat, rating sau credit pentru a controla cât de repede și cât de mult trimit clienții la server.
Sistemele cu o topologie cunoscută pot fi inițializate într-o metodă adecvată sistemului fără a afecta compatibilitatea. Specificația de inițializare a sistemului RapidIO acceptă inițializarea sistemelor în care topologia este necunoscută sau dinamică. Algoritmii de inițializare a sistemului acceptă prezența gazdelor de rezervă, astfel încât inițializările nu pot avea un singur punct de eșec.
Fiecare gazdă de sistem traversează în mod recursiv întreaga rețea RapidIO, luând proprietatea asupra dispozitivelor, alocând ID-uri dispozitivelor nodurilor terminale și actualizând tabelele de rutare pe switch-uri. Când apare un conflict de proprietate, gazda cu cel mai mare ID de dispozitiv câștigă. Gazda care pierde eliberează dispozitivele și se retrage, așteptând gazda câștigătoare. Gazda câștigătoare continuă trecerea, inclusiv luarea în posesie a gazdei care pierde. Apoi, gazda care pierde examinează sistemul citind tabelele de rutare a comutatorului și registrele cu fiecare nod final pentru a afla configurațiile sistemului. Dacă gazda câștigătoare nu finalizează traversarea într-o perioadă de timp cunoscută, gazda care pierde consideră că gazda câștigătoare a eșuat și finalizează traversarea în sine.
Ocolirea sistemului este acceptată pe Linux de subsistemul RapidIO.
RapidIO este proiectat să fie tolerant la erori, de înaltă disponibilitate și conectabil la cald. Condiții definite pentru detectarea erorilor și registre standard pentru raportarea stării și informațiilor despre erori. De asemenea, este definit un mecanism de izolare configurabil, astfel încât, dacă pachetele nu pot fi schimbate pe o legătură, pachetele pot fi abandonate pentru a evita aglomerația și pentru a permite diagnosticarea și acțiunile de remediere. Sunt definite mecanisme de notificare în bandă (scriere de pachete pe port) și în afara benzii (întrerupere).
Specificația RapidIO nu descrie factorii de formă și conectorii, lăsând detaliile de implementare în seama comunităților specifice care lucrează la problemele aplicației. RapidIO este acceptat în următorii factori de formă:
Suportul independent de procesor pentru RapidIO se găsește în nucleul Linux.
Conexiunile RapidIO sunt utilizate pe scară largă în următoarele aplicații:
PCI Express . Spre deosebire de RapidIO, PCIe nu este optimizat pentru rețele multiprocesoare peer-to-peer. PCIe este ideal pentru comunicațiile gazdă-periferice. PCIe nu se scalează bine la sisteme mari peer-to-peer cu mai multe procesoare, deoarece ipoteza de bază a PCIe a unui „complex rădăcină” introduce toleranța la erori și probleme de management.
O altă alternativă ar fi Ethernet . Ethernet este o abordare bună atunci când conectați computere pe zone mari în care topologia rețelei se poate schimba în mod neașteptat, protocoalele utilizate sunt inconsecvente și întârzierile sunt mari. Pentru a face față acestor probleme, sistemele bazate pe Ethernet necesită o putere de procesare semnificativă, memorie și o cantitate mare de software pentru a implementa protocoale pentru controlul fluxului, transmisia datelor și rutarea pachetelor. RapidIO este optimizat pentru comunicații de la procesor la procesor cu latență scăzută și latență scăzută în sisteme tolerante la erori care se extind pe zone nu mai mari de un kilometru.
SpaceFibre este un protocol concurent pentru aplicații spațiale [10] .
Autobuze și interfețe pentru computer | |
---|---|
Noțiuni de bază | |
Procesoare | |
Intern | |
laptopuri | |
Unități | |
Periferie | |
Managementul echipamentelor | |
universal | |
Interfețe video | |
Sisteme integrate |