Design-Praxis RISC-V Von den Grundlagen bis zum Prototyp

I. Interrupt- und Erweiterungsmodell

Interrupt nach [2]

RISC-V unterscheidet zwischen lokalen und globalen interrupts, also solche, die einen hart direkt ansprechen und solche, die von einem Platform-Level-Interrupt-Controller verwaltet werden. Der PLIC enthält hier aber keine Ablaufplanung für die interrupts, dies muss auf Prozessorebene gelöst werden. Ein interrupt zielt auf einen hart einer bestimmten Ebene, interrupt enable-Bits aktivieren oder deaktivieren anwendungsspezifisch interrupt-Quellen. Interrupts besitzen hier Schwellen für die Priorisierung, und haben Puffer für Statusinformationen. Ein handler überwacht den gesamten interrupt-Prozess.
 

Erweiterung nach [1]

RISC-V zielt auf eine minimale Implementierung für einen Anwendungsfall ab: im Idealfall spricht eine Software nur den Basissatz RV32I und einige proprietäre Erweiterungen an. Standard-Erweiterungen sollen dabei möglichst breite Anwendung finden und keine Namenskonflikte untereinander haben. Die proprietären Erweiterungen bilden ein sehr spezifisches Szenario ab und können widersprüchliche Namen zum Standardbefehlssatz tragen.
 
Namenskonflikte hängen letztendlich an der Größe eines Kodierungsregisters,
das den gesamten implementierten Befehlssatz trägt. Dort müssen genügend freie Plätze vorhanden sein um alle angestrebten Befehle tragen zu können. Allerdings ist bewusst in sämtlichen zulässigen Kodierungsräumen ein gewisser Freiraum vorhanden, um immer einige neue Befehle tragen zu können. Wird zur konfliktfreien Erweiterung ein größerer Verschlüsselungsraum notwendig, heißt das greenfield-Erweiterung, passt die Erweiterung noch in den bestehenden Verschlüsselungsraum, so spricht man von brownfield-Erweiterung.