RapidIO

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.

Istorie

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:

Terminologie

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.

Descrierea standardului

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:

Prezentare generală a protocolului

Protocolul RapidIO este definit de o specificație cu trei straturi:

Specificațiile sistemului includ:

Stratul fizic

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ă.

Pachete

Fiecare 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 control

Caracterele 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.

Stratul de transport

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.

Nivel logic

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 logic

Stratul 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 mesajului

Specificaț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 fluxului

Specificaț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-NUMA

Specificaț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 flux

Specificaț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.

Inițializarea sistemului

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.

Gestionarea erorilor

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).

Factori de formă

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ă:

Software

Suportul independent de procesor pentru RapidIO se găsește în nucleul Linux.

Aplicații

Conexiunile RapidIO sunt utilizate pe scară largă în următoarele aplicații:

Protocoale concurente

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] .

Vezi și

Note

  1. RapidIO.org I Open Standard Interconnect Architecture . Consultat la 13 martie 2009. Arhivat din original pe 13 martie 2008.
  2. RapidIO: interconectarea sistemului încorporat . — Wiley, 01-01-2005. — ISBN 0470092912 .
  3. Specificații RapidIO  , RapidIO.org . Arhivat din original pe 24 decembrie 2016. Preluat la 24 decembrie 2016.
  4. „Integrated Device Technology 2011 Annual Report” Arhivat 3 martie 2016 la Wayback Machine  (PDF). www.idt.com . Integrated Device Technology Inc. 6 iunie 2011.p. patru.
  5. Grupul Linley - RapidIO ajunge la nori . www.linleygroup.com Preluat la 24 decembrie 2016. Arhivat din original la 24 decembrie 2016.
  6. „RapidIO Standard Revision 2.0” Arhivat 2 decembrie 2016 la Wayback Machine . www.rapidio.org . Asociația de comerț RapidIO. 23 februarie 2005.
  7. „Integrated Device Technology 2014 Annual Report” Arhivat 3 martie 2016 la Wayback Machine  (PDF). www.idt.com . Integrated Device Technology Inc. 28 mai 2014.pp. 5, 35.
  8. Specificații RapidIO  , RapidIO.org . Arhivat din original pe 24 decembrie 2016. Preluat la 24 decembrie 2016.
  9. Specificații RapidIO  , RapidIO.org . Arhivat din original pe 24 decembrie 2016. Preluat la 24 decembrie 2016.
  10. „SpaceFibre Overview” Arhivat 22 octombrie 2014.  (PDF). STAR Dundee.

Link -uri