1. A method for designing a processor, comprising: generating an initial architecture for a processor to execute at least one algorithm, wherein the initial architecture includes, at least, a processing element, a memory element and an information transfer mechanism; simulating execution of the at least one algorithm by the initial architecture to determine a modification to the initial architecture; and creating a processor design based on the modification to the initial architecture.