Efficient Autonomous Driving System Design: From Software to Hardware