17.11.2012 Views

Soft-Core Processor Design - CiteSeer

Soft-Core Processor Design - CiteSeer

Soft-Core Processor Design - CiteSeer

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

• UT Nios is not as customizable as the Altera Nios<br />

The above limitations exist for various reasons. Caches and hardware multiplication are not<br />

supported in the 16-bit, and are only optional in the 32-bit Nios architecture. Since the 32-bit UT<br />

Nios is based on the 16-bit UT Nios, these features remain for future work. The OCI debug<br />

module is an Intellectual Property (IP) core [39]. The core and its implementation details are not<br />

publicly available, so its integration into UT Nios was not possible. Since the non-maskable<br />

interrupt, number 0, is only used by the OCI module, interrupt 0 is handled as any other interrupt.<br />

I/O interrupts are not accepted when a control-flow instruction is in the last two stages of the<br />

pipeline. Accepting an interrupt in such cases would require storing two values of the program<br />

counter to be able to resume the normal processor operation. As described in section 3.1.4, the<br />

Altera Nios also has this behaviour. The UT Nios also does not accept interrupts in a cycle when<br />

a SAVE, RESTORE, or WRCTL instruction is in stage 3 of the pipeline. The SAVE and<br />

RESTORE instructions may be the cause of a software interrupt, while WRCTL may change the<br />

conditions of interrupt handling when writing to the STATUS register. Accepting an interrupt<br />

when one of these instructions is about to commit may result in conflicts that are complicated to<br />

resolve. Therefore, I/O interrupts are not accepted in such cases. This can increase the interrupt<br />

handling latency and may be important for real-time applications.<br />

Two consecutive SAVE instructions, two consecutive RESTORE instructions, or consecutive<br />

combinations of these two instructions are not allowed. Supporting such combinations would<br />

require additional logic resources, and possibly increase the critical path delay. Since none of the<br />

applications we encountered used such combinations, we chose not to implement the support for<br />

these instruction combinations. Considering the semantics of SAVE and RESTORE instructions,<br />

it is unlikely that any application would ever issue two of these instructions consecutively. In an<br />

unlikely case that such a combination is required, a NOP instruction should be inserted between<br />

the two instructions. The Altera Nios supports these combinations of instructions. However, our<br />

simulations show that the Altera Nios takes two cycles to commit a single SAVE or RESTORE<br />

instruction, although this is not explicitly stated in the Nios documentation [23]. We have chosen<br />

to implement the SAVE and RESTORE instructions that commit in a single cycle, but not to<br />

support the combinations of these instructions as mentioned above.<br />

The UT Nios is generally not as customizable as the Altera Nios. This is not inherent in the<br />

UT Nios implementation, but rather the result of the research nature of this work. To make UT<br />

Nios more customizable, a user interface and a generator program, which would emit Verilog<br />

code based on the selected options, should be implemented. Currently, several processor<br />

parameters can be customized by using define and defparam Verilog statements. These<br />

30

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!