Architectures and Design Methodologies for Micro and Nanocomputing