Een RISC-V-server heeft meer nodig dan processorcores die de architectuur ondersteunen. In Server SoC Requirements v1.0 beschrijft RISC-V International ook eisen voor onder meer timers, interrupts, apparaattoegang, PCIe en beveiliging. De specificatie maakt onderscheid tussen verplichte bepalingen, aanbevelingen en eisen die alleen gelden als een bepaalde functie is geïmplementeerd.
Welke status hebben de bepalingen?
In de normatieve tekst betekent MUST dat een voorziening verplicht is. SHOULD duidt op een aanbeveling. Sommige eisen zijn voorwaardelijk: ze gelden bijvoorbeeld alleen als het SoC een bepaalde interface of functie ondersteunt.
| Systeemgebied | Normatieve status |
| Timers en interrupts | MUST-eisen voor timerwerking, AIA en externe interrupts |
| IOMMU en PCIe | MUST-eisen, met genoemde uitzonderingen en voorwaardelijke bepalingen |
| RAS | Geen algemeen verplicht niveau; meerdere SHOULD-aanbevelingen |
| QoS, beheer en prestatiemonitoring | Voornamelijk SHOULD-aanbevelingen; sommige eisen gelden voorwaardelijk |
| Beveiliging | Een hardwarematige root of trust is MUST; andere genoemde mogelijkheden zijn SHOULD |
Timers en interrupts voor besturingssystemen
De time CSR moet tijdseenheden van 1 ns gebruiken en met een constante frequentie van minstens 100 MHz worden bijgewerkt. De teller moet continu beschikbaar blijven en zijn waarde behouden wanneer een hart in een energiezuinige ruststand staat. Voor systeemtoestanden zoals G3, S3 en S4 gelden uitzonderingen.
Een hart is een hardwarethread binnen de RISC-V-processor. Voor interrupts vereist de specificatie de RISC-V Advanced Interrupt Architecture (AIA). Externe interrupts moeten als message-signaled interrupts (MSI) worden afgeleverd. De IMSIC moet per hart minstens één S-mode-interruptbestand en vijf VS-mode-interruptbestanden ondersteunen. De minimumcapaciteit bedraagt 255 interruptidentiteiten voor het S-mode-bestand en 63 voor elk VS-mode-bestand.
Als een SoC apparaten met draadgestuurde interrupts implementeert, moet het onder de voorwaarden van de specificatie ook een APLIC implementeren. Die zet zulke interrupts om in MSI’s.
IOMMU en PCIe regelen apparaattoegang
Een IOMMU beheert de toegang van apparaten tot geheugen. DMA-geschikte randapparatuur en softwarematig toegankelijke PCIe-rootpoorten moeten onder IOMMU-beheer vallen. Uitzonderingen gelden onder meer voor interruptcontrollers, IOMMU’s zelf, bepaalde blokken van debugmodules en beheercontrollers die alleen toegang hebben tot voor hun gebruik gereserveerde bronnen.
Een IOMMU die een PCIe-rootpoort beheert, moet apparaat-ID’s van minstens 16 bits ondersteunen. Ook moet die alle paginagebaseerde virtueel-geheugenmodi en uitbreidingen ondersteunen die de toepassingsprocessorharten van het SoC implementeren.
Voor de toepasselijke, software-zichtbare onderdelen van het PCIe-rootcomplex gelden de regels uit PCIe Specification 6.0. Dat maakt niet automatisch elke optionele PCIe 6.0-functie verplicht. PCIe-rootpoorten moeten MSI ondersteunen en ondersteuning voor INTx-interruptsignalen via virtuele bedrading is niet toegestaan. Ook zijn AER, DPC en RP PIO-besturing vereist.
Betrouwbaarheid, QoS en beheer
De specificatie legt geen algemeen RAS-niveau vast. RAS staat voor betrouwbaarheid, beschikbaarheid en onderhoudbaarheid. Wel beveelt de tekst aan dat het SoC foutieve data kan markeren, opslaan en doorgeven, en dat het de RISC-V Error Record Register Interface (RERI) ondersteunt. Als RERI wordt geïmplementeerd, gelden aanvullende verplichte eisen voor foutmeldingen en foutrecords. Ook foutdetectie en -correctie in belangrijke caches en geheugens, single-symbol-ECC in DRAM-controllers en periodieke geheugen-scrubbing worden sterk aanbevolen.
Voor QoS, oftewel de verdeling van systeembronnen tussen workloads, beveelt de specificatie mechanismen aan die onterechte onderlinge hinder beperken wanneer workloads caches en systeemgeheugen delen. Ook CBQRI en bijbehorende regels voor cachecapaciteit en geheugenbandbreedte zijn aanbevolen. Zodra CBQRI wordt ondersteund, gelden aanvullende MUST-bepalingen.
De specificatie beveelt ondersteuning aan voor beheerprotocollen zoals Redfish, PLDM, MCTP en SPDM. Voor een verbinding met een BMC noemt zij onder meer één PCIe-lane, bij voorkeur Gen 5 en minimaal Gen 3, een I2C-verbinding voor IPMI SSIF en een UART-aansluiting voor een debugconsole. Dit zijn aanbevelingen voor die beheerverbinding, geen algemene PCIe-minimums voor het hele SoC. Prestatiemonitoring via HPM-tellers in belangrijke caches, geheugencontrollers en PCIe-poorten is eveneens aanbevolen. Voor NUMA-systemen beveelt de tekst ook filtering van lokale en externe geheugentoegang aan.
Beveiliging: één harde eis en meerdere aanbevelingen
De primaire root of trust van het SoC moet hardwarematig zijn. PCIe IDE, versleuteling van extern DRAM met een tijdelijke sleutel van minstens 256 bits en een interface voor een TPM die aan TPM 2.0 voldoet, zijn aanbevelingen. Daarmee maakt de specificatie onderscheid tussen de verplichte basis voor vertrouwen en aanvullende beveiligingsmogelijkheden die zij aanbeveelt.