Dedicated Architectures for Scientific Computing: an HW/SW Co-Design Approach