Fundamental of computer organization and architecture