Architectural Support For Securing Systems Against Micro-Architectural Attacks