Results from Voting RISC-V members

Votes from Andes Technology Corporation, Bluespec, Inc., Codasip, ETH Zurich, Google, Inc., Lattice Semiconductor, Microsemi, Roa Logic BV, SiFive, Syntacore, UC Berkeley Architecture Research, UltraSoC, greenwaves technologies, lowRISC CIC, nvidia.

5  Unified Abstract Interface,Provide the choice of two interfaces,Instruction Feeding
4  Instruction Feeding,Provide the choice of two interfaces,Unified Abstract Interface
3  Unified Abstract Interface,Instruction Feeding,Provide the choice of two interfaces
2  Provide the choice of two interfaces,Unified Abstract Interface,Instruction Feeding
1  Instruction Feeding,Unified Abstract Interface,Provide the choice of two interfaces

Schulze winner: Unified Abstract Interface

Algorithm details:

{'candidates': set(['Instruction Feeding',
                    'Provide the choice of two interfaces',
                    'Unified Abstract Interface']),
 'pairs': {('Instruction Feeding', 'Provide the choice of two interfaces'): 8,
           ('Instruction Feeding', 'Unified Abstract Interface'): 5,
           ('Provide the choice of two interfaces', 'Instruction Feeding'): 7,
           ('Provide the choice of two interfaces', 'Unified Abstract Interface'): 6,
           ('Unified Abstract Interface', 'Instruction Feeding'): 10,
           ('Unified Abstract Interface', 'Provide the choice of two interfaces'): 9},
 'strong_pairs': {('Instruction Feeding', 'Provide the choice of two interfaces'): 8,
                  ('Unified Abstract Interface', 'Instruction Feeding'): 10,
                  ('Unified Abstract Interface', 'Provide the choice of two interfaces'): 9},
 'winner': 'Unified Abstract Interface'}

Results from Everybody Else

Votes from Andy Traber, Arthur Jones, Jiri Bartak, Joseph K., Julius Baxter, Larry Madar, Megan Wachs, Monte Dalrymple, Philipp Wagner, Po-wei Huang, Sean Halle, Sergiu Mosanu, Stefan Wallentowitz, Tim Newsome, Wei Song.

4  Instruction Feeding,Provide the choice of two interfaces,Unified Abstract Interface
3  Unified Abstract Interface,Provide the choice of two interfaces,Instruction Feeding
3  Provide the choice of two interfaces,Instruction Feeding,Unified Abstract Interface
3  Provide the choice of two interfaces,Unified Abstract Interface,Instruction Feeding
2  Unified Abstract Interface,Instruction Feeding,Provide the choice of two interfaces

Schulze winner: Provide the choice of two interfaces

Algorithm details:

{'candidates': set(['Instruction Feeding',
                    'Provide the choice of two interfaces',
                    'Unified Abstract Interface']),
 'pairs': {('Instruction Feeding', 'Provide the choice of two interfaces'): 6,
           ('Instruction Feeding', 'Unified Abstract Interface'): 7,
           ('Provide the choice of two interfaces', 'Instruction Feeding'): 9,
           ('Provide the choice of two interfaces', 'Unified Abstract Interface'): 10,
           ('Unified Abstract Interface', 'Instruction Feeding'): 8,
           ('Unified Abstract Interface', 'Provide the choice of two interfaces'): 5},
 'strong_pairs': {('Provide the choice of two interfaces', 'Instruction Feeding'): 9,
                  ('Provide the choice of two interfaces', 'Unified Abstract Interface'): 10,
                  ('Unified Abstract Interface', 'Instruction Feeding'): 8},
 'winner': 'Provide the choice of two interfaces'}

Results from Both Groups Combined

Votes from Adam Husar, Alex Bradbury, Andrew Waterman, Andy Traber, Arthur Jones, Charlie Su, Cyril Jean, Darius Rad, Dyachenko, Vyacheslav, Gajinder Panesar, Jiri Bartak, Joseph K., Julius Baxter, Krste Asanovic, Larry Madar, Larry Madar, Megan Wachs, Michael Gautschi, Monte Dalrymple, Philipp Wagner, Po-wei Huang, Richard Herveille, Sean Halle, Sergiu Mosanu, Stefan Wallentowitz, Tim Newsome, Tim Vogt, Wei Song, eric flamand, nvidia.

8  Instruction Feeding,Provide the choice of two interfaces,Unified Abstract Interface
8  Unified Abstract Interface,Provide the choice of two interfaces,Instruction Feeding
5  Provide the choice of two interfaces,Unified Abstract Interface,Instruction Feeding
5  Unified Abstract Interface,Instruction Feeding,Provide the choice of two interfaces
3  Provide the choice of two interfaces,Instruction Feeding,Unified Abstract Interface
1  Instruction Feeding,Unified Abstract Interface,Provide the choice of two interfaces

Schulze winner: Provide the choice of two interfaces

Algorithm details:

{'candidates': set(['Instruction Feeding',
                    'Provide the choice of two interfaces',
                    'Unified Abstract Interface']),
 'pairs': {('Instruction Feeding', 'Provide the choice of two interfaces'): 14,
           ('Instruction Feeding', 'Unified Abstract Interface'): 12,
           ('Provide the choice of two interfaces', 'Instruction Feeding'): 16,
           ('Provide the choice of two interfaces', 'Unified Abstract Interface'): 16,
           ('Unified Abstract Interface', 'Instruction Feeding'): 18,
           ('Unified Abstract Interface', 'Provide the choice of two interfaces'): 14},
 'strong_pairs': {('Provide the choice of two interfaces', 'Instruction Feeding'): 16,
                  ('Provide the choice of two interfaces', 'Unified Abstract Interface'): 16,
                  ('Unified Abstract Interface', 'Instruction Feeding'): 18},
 'winner': 'Provide the choice of two interfaces'}

Comments

I believe 1) we should choose an interface that permits as wide a range of implementation options as possible, and 2) there hasn’t been sufficient justification for risking fragmentation in the RISC-V ecosystem. As such, the logical conclusion for me is to prefer a unified abstract interface. Although I don’t like the idea of risking fragmentation, two interfaces remains my second choice - I feel that’s preferable to restricting the choices available to RISC-V implementers, especially given the huge diversity of cores and requirements.

I would additionally point out that we can start with the unified abstract interface, and if the overhead of translating simple commands to simple instructions is found to be an issue it can always later move in the direction of the option of two interfaces option.

— Alex Bradbury (lowRISC CIC)

All of these will work, neither is a bad idea. With the exception of using instructions as abstract commands, that just gets ugly and convoluted. I still think we should provide a simple memory mapped interface for the base access and use instruction supply for the complex stuff.

— Richard Herveille (Roa Logic BV)

We are doing a high performance RISC-V core, which is tight on critical path. A mux in front of the register set would impact the entire chip’s performance and/or cost. Yet the simplicity seems best for designs that don’t have such tight timing constraints. Hence, if the software can handle both methods, that seems the only approach that works for everyone.

— Sean Halle (Intensivate)

although my company is foundation members, I’m only voting as an individual not for the company

— Joseph K. (Microsoft)

The future-proof argument is the strongest in my opinion. Although it requires the debugger to be integrated with the RISC-V assembler and linker (at least during build), this option is the most versatile one. I would not provide both interfaces.

— Adam Husar (Codasip)

My preference for the Unified Abstract Interface is contingent on the final spec allowing very small/minimal implementations that still meet the spec. In other words, if the minimum mandatory requirements in the final spec require significant resources to implement, then my opinion might change.

I don’t like having both as optional interfaces; it creates unnecessary complexity.

— Tim Vogt (Lattice Semiconductor)

We are strongly pro to instruction feeding as hardware / software interface in our own RISCV design But we also recognize that there’re other people who want to go to a different way in hardware implementation because of various reasons Based on above reasons, we feel that an unified abstract interface would be wiser

— nvidia (nvidia)

I’m most on favor of the option which results in most debug software supporting most implementations. I expect that message-based (direct access to the core, not instruction feeding) option will become the most prevalent for deeply embedded implementations, and instruction feeding will be for those who love it and those who need it like OoO cores. The abstract thing might be best actually but really I think the option is good.

— Julius Baxter (FOSSi Foundation)

Both approaches have their benefits, and I see the main differentiation in the HW implementation complexity. On this topic I think more implementation experience and measured data needs to be gathered to make a final judgment. I therefore propose to defer the standardization for now by making both approaches optional and let the two approaches compete in the real world. Revisit the issue if implementation experience has been gathered.

— Philipp Wagner (Technical University of Munich)

I think the basic state of the machine should be accessible without stopping it. This will allow for non-intrusive software such as profilers to be implemented. Beyond the basic state the instruction feeding method should be used for everything else. That is why I have ranked the above as I have.

— Gajinder Panesar (UltraSoC)

Providing the choice of two is more like a political compromise. We should make the standard more technical instead of political. So, I wouldn’t vote for that. For the reason why I vote for Unified Abstract Interface, my philosophy is that the standard should be clean and should not be implementation-specific. Instruction feeding is only a simple way to implement, and if other company wants to implement a sophisticated way, the standard should not be a restriction. Moreover, debugging without halt the core is very attracting, and this is hard to achieved by instruction feeding. The execution should be separated with the observation. These are the reason why I vote for Unified approach. However, I achieve all the effort that both side put in. Thanks for your effort to make RISC-V better.

master student at national taiwan university now. I'm a individual member at RISC-V Foundation. I couldn't vote
— Po-wei Huang (N/A

For deeply embedded systems, with real-time constraints, the Instruction Feeding approach does not allow state to be retrieved without stopping the core. Likewise, for trace-less profiling the profiler must access the machine state non-invasively.

As a second choice, small / embedded cores and large scale OoO cores could pick the right interface for their target market.

— Larry Madar (Larry Madar)