Depending on what expertise the programmer wants to have the answer can vary. If the programmer is specializing in drivers on specialized hardware then a deep understanding may well be required. On the other hand, a web developer may have no need to get deeply into the hardware side and may just use abstractions in their career.
What you are taught in college should give you practice to know how you'll learn about a set that may well evolve over time. As new hardware is created, there can often be the challenge of how will you learn the new styles for things. Consider how there are so many gestures in mobile development that may not have existed 15 years ago.
Different specializations can require different levels would be the short answer here as while it can help to know about things, how you measure depth is also important. For example, are we talking about designing CPUs and GPUs here or just using what is already out on the market? What level of depth do you mean here? Would a Ph.D. in quantum mechanics be necessary or is it enough to know how electrons would hold a charge?