Ph.D., Computer Science
I am a Teaching Full Professor in the Department of Computer Science and the Director of Undergraduate Programs in the College of Computing and Informatics of the University of North Carolina at Charlotte.
August 2020 - present
July 2019 - present
University of North Carolina at Charlotte
August 2017 - June 2019
August 2014 - July 2020
August 2008 - August 2014
Southern Illinois University Carbondale
My research interests are in the areas of real-time/embedded systems, cyber-physical systems, operating systems and Computer Science education.
An embedded system is a combination of computer hardware and software that is designed to achieve specific functionality. Most embedded systems contain tasks or programs that have both logical and temporal constraints. Embedded systems with temporal constraints are referred to as real-time embedded systems, or simply real-time systems. Real-time systems may be broadly classified into two types, namely hard-real-time systems and soft-real-time systems. Hard-real-time systems are those in which tasks must strictly adhere to deadlines and failure to meet deadlines have severe consequences (e.g., aircraft control systems, emergency life support systems, etc). On the other hand, soft-real-time systems are those in which tasks may occasionally miss deadlines and missed deadlines result in decreased Quality-of-Service or QoS (e.g., multimedia applications, game stations and video streaming applications). An embedded system that contains hard-real-time, soft-real-time and non-real-time tasks is referred to as a mixed-criticality system. Real-time systems must ensure robustness, safety and determinism. Failing to meet any one of these requirements may result in undesirable (in soft-real-time systems) and/or severe (in hard-real-time and mixed-criticality systems) consequences. To ensure determinism and schedulability, real-time systems require a-priori knowledge of the worst-case execution times (WCETs) of all tasks.
Static timing analysis is considered a viable approach for calculating upper bounds on the WCET of a task. Static timing analysis models the architectural components of a computing system in order to obtain the time taken by the longest path identified in a given task. Architectural features such as out-of-order pipelines and caches cause unpredictability in timing analysis, leading to overly pessimistic estimates of the WCET of a task. One such feature that is particularly hard to model is the data cache.
In this work, a data cache analyzer framework known as the Cache Miss Equations framework was enhanced. The new framework provides three fundamental enhancements over the original one and thus relaxes certain constraints that the original framework imposed on tasks.
[Publications: RTAS 2005]
Real-time systems typically have multiple tasks, each with a unique priority, executing in a preemptive environment. In analyzing such systems, three important questions are answered.
Some real-time tasks may have regions where they use shared resources that are non-premptable. Traditionally, such tasks have been scheduled completely non-preemptively to simplify timing analysis. This suffers from the downside of decreased schedulability. A methodology to make only critical sections non-preemptive regions (NPRs), but keep legal preemptions was proposed and implemented. This framework was enhanced to support resource-sharing policies such as the Priority Inheritance Protocol (PIP) instead of making critical sections non-preemptive. This framework may be used as a means to identify what method is suitable for what sets of tasks.
While most of the normal operation in a real-time system is modeled using time-driven, hard-deadline sporadic tasks, event-driven behavior is modeled using aperiodic jobs with soft or no deadlines. To provide good Quality-of-Service for aperiodic jobs in the presence of sporadic tasks, aperiodic servers were introduced. Aperiodic servers act as a sporadic task and reserve a quota periodically to serve aperiodic jobs. The use of aperiodic servers in systems with caches is unsafe because aperiodic servers do not take into account, the indirect cache-related preemption delays that the execution of aperiodic jobs might impose on the lower-priority sporadic tasks, thus jeopardizing their safety. To solve this problem, we propose an enhancement to the aperiodic server that we call a Cache Delay Server. Here, each lower-priority sporadic task is assigned a delay quota to accommodate the cache-related preemption delay imposed by the execution of aperiodic jobs. Aperiodic jobs are allowed to execute at their assigned server priority only when all the active lower-priority sporadic tasks have a sufficient delay quota to accommodate it. Simulation results demonstrate that a Cache Delay Server ensures the safety of sporadic tasks while providing acceptable Quality-of-Service for aperiodic jobs.
[Publications: RTCSA 2013]
Single core processor designs have reached a clock frequency wall due to area and power considerations, leading to designs with multiple processors on a single chip, known as chip multiprocessors or simply multicore processors. As real-time embedded systems integrate more and more functionality, they are demanding increasing amounts of computational power that can only be met by deploying multicore architectures. The use of multicore architectures with on-chip memory hierarchies and shared communication infrastructure in the context of real-time systems poses several research challenges. In general, there are two broad classes of multi-core real-time scheduling algorithms, namely global and partitioned approaches. A global policy assumes that tasks may be migrated among cores while a partitioned policy allocates tasks to cores statically. Semi-partitioned scheduling strategies form a middle ground between these two approaches. By making most tasks non-migrating (partitioned), runtime migration overhead is minimized. On the other hand, by allowing some tasks to migrate among cores, schedulability of task sets may be improved.
Migration of tasks among cores (necessary in global and semi-partitioned scheduling) reduces time predictability of tasks due to cache warm-up overheads while increasing traffic on the Network-on-Chip (NoC) interconnect. In order to improve time predictability of real-time tasks in the presence of task migrations, novel micro-architectural migration mechanisms with bounded migration overheads are proposed.
A semi-partitioned policy for predictably scheduling periodic hard-real-time tasks using locked cache migration on a Network-on-Chip (NoC) based multicore architecture is proposed. As many tasks as possible are statically partitioned onto cores. The remaining tasks are allowed to migrate in a predetermined manner among a preselected subset of cores to improve task set schedulability. A dynamic-priority policy for scheduling memory accesses on the NoC and a location-aware partitioning policy that takes explicit advantage of this NoC scheduling policy to improve the efficiency of task allocation.
A Cyber-Physical System (CPS) is composed of distributed computational elements, connected via a computer network, that monitor and control switched physical systems interconnected by physical infrastructures. A fundamental challenge in the design and analysis of a CPS is the lack of common semantics across the components. This challenge is addressed by employing a novel approach that composes the correctness of the components instead of their functionality using a conjunction of non-interfering logical invariants.
Embedded real-time applications such as Avionics and Automotive systems are increasingly using multi-core platforms. Such systems have strict certification requirements of subsets of their functionality, which result in strict temporal constraints on those subsets, while other subsets may have less strict requirements. Migrating such mixed criticality systems from single-core to multi-core platforms is challenging because application/component isolation and freedom from interference among them must be guaranteed. Safe and efficient, architecture-aware mapping and scheduling of system components (e.g., partitions, tasks, etc. as relevant to a particular domain) on the multiple cores is at the center of any scheme to migrate such systems from single-core to multi-core platforms. We propose, develop and evaluate a unified framework to automate the mapping and scheduling process with the consideration of several architectural and application level requirements/constraints (e.g., communication and cache conflicts among system components, constraints prohibiting the allocation of certain system components on the same core, etc.)
[Publications: RTNS 2018]
Graphics Processing Units (GPUs) are computational powerhouses that were originally designed for accelerating graphics applications. In recent years, there has been a tremendous increase in support for general purpose computing on GPUs (GPGPU). GPU based architectures provide unprecedented magnitudes of computation at a fraction of the power used by traditional CPU based architectures. As real-time systems integrate more and more functionality, GPU based architectures are very attractive for their deployment. However, in a real-time system, predictability and meeting temporal requirements are much more important than raw performance. While some realtime jobs may benefit from the performance that all cores of the GPU can provide, most jobs may require only a subset of cores in order to successfully meet their temporal requirements. We propose to study concurrent scheduling of soft-real-time jobs on a GPU based platform.
[Publications: RTAS 2014]
My teaching interests are in the areas of operating systems, computer networks, real-time systems, compiler construction, object-oriented programming, computer architecture, software systems design and implementation and database systems.
I strongly believe that active learning improves student engagement and student learning. As such, I have adopted numerous active learning techniques in all my classes, resulting in fully flipped versions of the classes. I have worked on and continue to work on significantly adapting existing techniques to my own classroom setting and to the unique context of students here at UNC Charlotte.
Below are the key aspects of engaged pedagogy and active learning that I have incorporated into my teaching:
Pre-class lecture videos: Due to the passive nature of listening to someone else talk, students often zone-out during long in-class lectures. Since there is no rewind in real life, this means that they may not have a good learning experience. Lecture videos allow students to go over lecture material at their own pace, make notes, go back & forth as needed, etc. I have created my own lecture videos for all my classes. This helps me provide content specifically relevant to my classes and lends the course material a personal touch. I strive to keep my lecture videos short (on an average, 10-15 minutes long) and to the point.
Forcing functions to assess preparation: Experience has taught me that simply flipping a class does not automatically guarantee success, especially since students may not (yet) be receptive to taking increased, proactive responsibility for their learning. It is essential to ensure that students complete pre-class preparation (e.g., watching lecture videos, reading textbook, etc.) by using forcing functions. In collaboration with two other colleagues, I have extensively researched and tried different formats of forcing functions. In-class observations suggest that there is a significant increase in the level of student preparation because of our forcing functions.
Interactive quizzes: Even though students are expected to be prepared for class, jumping directly into application-oriented activities can leave students at a loss. I use interactive tools such as Clickers/Poll Everywhere for in-class quizzes at the beginning of class. Students discuss concepts they learned through pre-class lecture material in groups and answer quiz questions. The interactive nature of these quizzes provides a great way to initiate discussions.
In-class activities: I have designed numerous in-class activities that give students hands-on application-oriented experience on relevant course concepts. Students work on these activities in lightweight teams [Latulipe et al., SIGCSE 2015].
Low-stakes tests: Research has shown that having one or two comprehensive, high-stakes tests can result in significant stress and grade pressure for students. To alleviate this, all my courses have 3-4 tests with lower individual stakes.
Professional skills development: Apart from learning technical content, it is vital that students learn team-work/collaboration skills, social skills of engagement with their peers, timeliness, etc. In all my classes, a small portion of the overall course grade is associated with the demonstration of these professional skills.
Introduction to the techniques involved in the planning and implementation of large software systems. Emphasis on human interface aspects of systems. Planning software projects; software design process; top-down design; modular and structured design; management of software projects; testing of software; software documentation; choosing a language for software system.
The modeling, programming, and implementation of database systems. Focuses on relational database systems, but may also address non-relational databases or other advanced topics. Topics include: (1) modeling: conceptual data modeling, ER diagram, relational data model, schema design and refinement; (2) programming: relational algebra and calculus, SQL, constraints, triggers, views; (3) implementation: data storage, indexing, query execution, query optimization, and transaction management; and (4) advanced: semi-structured data model, XML, and other emerging topics.
Introduces the fundamentals of operating systems together with the basics of networking and communications. Topics include: processes, threads, scheduling, cache, memory management, file systems, interprocess communication, network architecture and protocols, HTTP, MAC, IP, TCP/UDP, internet routing.
Introduction to real-time embedded systems. Topics covered include real-time scheduling and schedulability theory; resource handling; concepts involved in the design, analysis and verification of real-time systems, including timing and cache analysis; principles of real-time operating systems; introduction to power-aware scheduling; real-time execution on multi-core platforms.
Analytically Bounding Data Cache Behavior for Real-Time Systems. PhD Thesis, North Carolina State University, July 2008.
Architecture Aware Semi Partitioned Real-Time Scheduling on Multicore Platforms. In Springer Real-Time Systems Journal (RTS), February 2015, accepted.
Static Task Partitioning for Locked Caches in Multi-Core Real-Time Systems. In Transactions on Embedded Computing Systems (TECS), Volume 5, Number 1, June 2014, accepted.
Tightening the Bounds on Feasible Preemptions. In Transactions on Embedded Computing Systems (TECS), Volume 10, Number 2, Article 27, 2010.
GCCFG: A New Graphical Representation for Inter-procedural Optimization for Software Managed Manycore (SMM) Architectures. In Proc. of the International Conference on Compilers, Architectures and Synthesis of Embedded Systems (CASES), 2014.
Adaptive Scheduling with Explicit Congestion Notification in a Cyber-Physical Smart Grid SystemIn Proc. of the Euromicro Conference series on Software Engineering and Advanced Applications (SEAA), 2014.
Network-on-Chip Aware Scheduling of Hard-Real-Time Tasks. In Proc. of the International Symposium on Industrial Embedded Systems (SIES), 2014.
Aperiodic Job Handling in Cache-Based Real-Time Systems.In Proc. of the International Conference on Embedded and Real-Time Computing Systems and Applications (RTCSA), 2013.
Stability of a Cyber-Physical Smart Grid System using Cooperating Invariants.Full paper in Proc. of the International Computers, Software and Applications Conference (COMPSAC), 2013.
Towards Optimal Design of Avionics Networking Infrastructures.In Proc. of the Digital Avionics Systems Conference (DASC), 2012.
Static Task Partitioning for Locked Caches in Multi-Core Real-Time Systems. To appear in Proc. of the Conference on Compiler, Architecture and Synthesis for Embedded Systems (CASES), 2012.
Semi-Partitioned Hard-Real-Time Scheduling Under Locked Cache Migration in Multicore Systems. In Proc. of the Euromicro Conference on Real-Time Systems (ECRTS), 2012.
Predictable Task Migration for Locked Caches in Multi-Core Systems. In Proc. of the ACM SIGPLAN Conference on Languages, Compilers and Tools for Embedded Systems (LCTES), 2011.
Push-Assisted Migration of Real-Time Tasks in Multi-Core Processors. In Proc. of the ACM SIGPLAN Conference on Languages, Compilers and Tools for Embedded Systems (LCTES), 2009.
Bounding Worst-Case Response Time for Tasks under PIP. In Proc. of the Real-Time and Embedded Technology and Applications Symposium (RTAS), 2009.
Bounding Worst-Case Response Time for Tasks With Non-Preemptive Regions. In Proc. of the Real-Time and Embedded Technology and Applications Symposium (RTAS), 2008.
Tightening the Bounds on Feasible Preemption Points. In Proc. of the Real-Time Systems Symposium (RTSS), December 2006, pages 212-222.
Bounding Preemption Delay within Data Cache Reference Patterns for Real-Time Tasks. In Proc. of the Real-Time and Embedded Technology and Applications Symposium (RTAS), April 2006, pages 71-80.
Bounding Worst-Case Data Cache Behavior by Analytically Deriving Cache Reference Patterns. In Proc. of the Real-Time and Embedded Technology and Applications Symposium (RTAS), March 2005, pages 148-157.
Developing Soft Skills with a Classroom Behavior Management Game.Presented at the ACM Technical Symposium on Computer Science Education (SIGCSE), February 2018.
Concurrent Soft-real-time Execution on GPUs.In Work-in-Progress (WiP) session of the IEEE Symposium on Real-Time and Embedded Technology and Applications (RTAS), 2014.
Stability of a Cyber-Physical Smart Grid System using Cooperating Invariants.In Work-in-Progress (WiP) session of the International Conference on Cyber-Physical Systems (ICCPS), 2013. Recipient of Best Work-in-Progress paper award.
Cache-Related Delay Server for Aperiodic Job Handling in Embedded Real-Time Systems. In Work-in-Progress (WiP) session of the Conference on Languages, Compilers and Tools for Embedded Systems (LCTES), 2010.
Policies for Migration of Real-Time Tasks in Embedded Multi-Core Systems. In Work-in-Progress (WiP) session of the Real-Time Systems Symposium (RTSS), December 2009.
Analytically Bounding Data Cache Behavior for Real-Time Systems. CRA-W/CDC Programming Languages, Operating Systems and Architecture Workshop (PLOSA), March 2009.
Feasible Preemption Point Analysis for Data Cache Reference Patterns. ACM SIGPLAN/SIGBED Conference on Languages, Compilers, and Tools for Embedded Systems (LCTES), June 2006.
Deriving Data Cache Reference Patterns From Cache Miss Equations. ACM SIGPLAN/SIGBED Conference on Languages, Compilers, and Tools for Embedded Systems (LCTES), June 2004.
Evaluation of Memory Access Arbitration Algorithm on Tilera's TILEPro64 platform.Invited Paper in Proc. of the International Conference on Embedded Software and Systems (ICESS), 2015.
9201 University City Blvd
Woodward Hall 410 D
Charlotte, NC 28223