Application-Specific Processor and IP Design Using No-Instruction-Set Computer (NISC)

NISC is a new technology for designing custom processors and IPs. NISC eliminates the instruction abstraction and gives the complete control of hardware units to the compiler. The inputs of the NISC compiler are processor datapath netlist and application C code. The output is control signal values of hardware units at every cycle. My research on NISC include:

  • Designing a new XML-based Architecture Description Language (ADL) for synthesis, simulation, and compilation of custom NISC processors. Once a new NISC processor is capture in our ADL, the entire NISC toolset is retargeted for that processor. The format is also extended for prototyping of multi-processor systems on FPGA.
  • Developing a RTL generator software to produce synthesizable Verilog code for custom processors described in our ADL. The RTL generator also facilitates fast FPGA prototyping by producing FPGA cores for memory, dividers, and other hardcore units.
  • Setting up case-studies using NISC: 2-D Discrete Cosine Transform (DCT), JPEG, and MP3. The designs are implemented on a FPGA board.
  • Designing double-handshake master/slave bus interface for NISC. In multi-core systems, each core must have proper hardware interface and software driver to communicate with other cores. For NISC, we developed a double-handshake bus interface.
NISC toolset is available online: http://www.cecs.uci.edu/~nisc

NISC prototypes for DCT are available here .


Software-level Power Profiling Gate-level power estimators compute power of a circuit accurately, but it takes days for them to run medium-size systems. Fast power profilers are necessary for evaluation of design decisions in multi-core systems. Currently, I’m working on fast power profiling of multi-core systems. My research in this area include:
  • Developing power macro-models for RTL components and interconnects
  • Developing a fast power profiler for custom NISC processors

System-Level Power Management Dynamic power management and dynamic voltage scaling are essential in reducing power consumption of systems. My research experience in this area include:
  • Inter-task voltage selection for multi-processor real-time systems: In DVS-enabled multi-processor systems, a voltage/frequency pair is selected for each task, and tasks are scheduled on different processing elements to meet timing constraints. Both scheduling and voltage selection affect the amount of energy savings.
    • I developed two new stochastic algorithms for simultaneous scheduling and voltage selection of dependent tasks on multi-processor systems. My algorithm searches the discrete voltage space and generates up to 30% more energy saving compared to the best continuous approach. Moreover, the run time of my algorithm is two orders of magnitude faster than the fastest algorithm in literature. I developed my algorithm in C++ and made it available online at: http://www.ece.uci.edu/~bgorjiar/projects/DVS .
  • Dynamic power manager software for a multi-processor systems: Dynamic power management is to turn off components that are idle (i.e. not used) and later turned them back on when necessary.
    • I worked on development of dynamic power manager software for a Software-Defined Radio (SDR) system with 24 processing elements. The goal of our project was to use mission and system knowledge to prevent mispredictions of traditional power managers. I modeled the system and application for dynamic power management and developed a low-overhead simulation-based idle-time predictor. According to the actual measurement on a SDR prototype designed by Rockwell Collins Inc., up to 70% energy savings was achieved using our DPM for a real-life application scenario.
    • I developed a simulation model of the SDR system using SystemC to evaluate different power management algorithms on the system.


 

Publications